| 2793 2797 |
2791 2795 |
2795 2797 |
2791 2793 |
||||||
| ENP | --> | 1 | -279X FDC- | 40 | <-- | HLT | |||
| !WE | --> | 2 | 39 | --> | INTRQ | ||||
| !CS | --> | 3 | 38 | --> | DRQ | ||||
| !RE | --> | 4 | 37 | <-- | !DDEN | ||||
| A0 | <-> | 5 | 36 | <-- | !WPRT | ||||
| A1 | --> | 6 | 35 | <-- | !IP | ||||
| D0 | !D0 | <-> | 7 | 34 | <-- | !TR00 | |||
| D1 | !D1 | <-> | 8 | 33 | --- | WPW | |||
| D2 | !D2 | <-> | 9 | 32 | <-- | READY | |||
| D3 | !D3 | <-> | 10 | 31 | --> | WD | |||
| D4 | !D4 | <-> | 11 | 30 | --> | WG | |||
| D5 | !D5 | <-> | 12 | 29 | --> | TG43 | |||
| D6 | !D6 | <-> | 13 | 28 | --> | HLD | |||
| D7 | !D7 | <-> | 14 | 27 | <-- | !RAW_RD | |||
| STEP | <-- | 15 | 26 | --- | VCO | ||||
| DIRC | <-- | 16 | 25 | --> | SSO | !ENMF | <-- | ||
| !5/8 | --> | 17 | 24 | <-- | CLK | ||||
| RPW | --> | 18 | 23 | --> | PUMP | ||||
| !MR | --> | 19 | 22 | <-- | !TEST | ||||
| GND | 20 | 21 | <-- | VCC | |||||
Base = FF40 in Dragon
| Offset from base |
Register | Contains | |
| write | read | ||
| 0 | Command | Status | |
| 1 | Track | track to seek to. | |
| 2 | Sector | sector to read/write | |
| 3 | Data | data byte just read or written. | |
7 6 5 4 3 2 1 0 Command
0 0 0 0 x x x x Restore to track 0 0 0 0 1 x x x x Seek 0 0 1 x x x x x Step 0 1 0 x x x x x Step in 0 1 1 x x x x x Step out
Bits: 4 - 0:No update of track reg 1:Update track register 3 - 0:Unload head at start 1:Load head at start 2 - 0:No verify of track no 1:Verify track no. on disc 1-0 Read as 2-bit stepping rate: 00 = 6ms 01 = 12ms 10 = 20ms 11 = 30ms
1 0 0 x x x x 0 Read sector 1 0 1 x x x x x Write sector 1 1 0 0 0 x x 0 Read address 1 1 1 0 0 x x 0 Read track 1 1 1 1 0 x x 0 Write track
Bits: 4 - 0:Read/write 1 sector 1:Read all sectors till the end of a track. 3 - Interpretation of 2 bit sector length field in sector header: 0: Field is interpreted as 00 = 256 bytes/sector 01 = 512 bytes/sector 10 = 1024 bytes/sector 11 = 128 bytes/sector 1: Field is interpreted as 00 = 128 bytes/sector 01 = 256 bytes/sector 10 = 512 bytes/sector 11 = 1024 bytes/sector (set to 1 on Dragon) 2 - 0:No head loading delay 1:Head loading delay of 30ms prior to read/writes. 1 - 0:Set side select o/p to 0 1:Set side select o/p to 1 0 - 0:Write Data Address Mark 1:Write Deleted Data Address mark
1 1 0 1 x x x x Force Interrupt Generate an interrupt & terminate the current operation on:
Bits set:0 - Drive status transition Not-Ready to Ready 1 - Drive status transition Ready to Not-Ready 2 - Index pulse 3 - Immediate interruptBits clear:No interrupt occurs, all operations terminated. ($D0)
Status (read), when set:
Status bits may have different meanings depending on the driver operation being performed.0 - Drive busy 1 - Data Request (Data Read/Data Written) OR Index Pulse 2 - Lost Data/Track 00 3 - CRC error 4 - Record Not Found/Seek Err 5 - Data Address Mark 0:Data Address Mark read 1:Deleted Data Address Mark read OR Head Loaded 6 - Write Protect 7 - Not Ready