279X FDC

Pinout

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

Registers

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.

Commands

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 interrupt
Bits clear:
No interrupt occurs, all  operations terminated. ($D0)

Status

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