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

0
1
2
3

Commands

	Command (write) & status (read) registers.
          Command bytes:

          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 (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
     65345          FF41      Track register
                              Contains track to seek to.
     65346          FF42      Sector register
                              Contains sector to read/write
     65347          FF43      Data register.
                              Contains data byte just read or written.
     65352          FF48      Drive select latch
                              Bits:
                              0 - Read as a 2 bit
                              1 - number to select the 
                              required drive (0-3).
                              2 - Enables the drive 
                              selection & turns the disk 
                              motors on.
                              3 - Double/Single density 
                              select (1=single).
                              4 - Enable write 
                              precompensation.
                              5 - Enable NMI interrupt 
                              generation.
                              6-7 unused.