3010

3010 (full name: Floppy and 4 Terminals Module) is a card with four serial ports and a floppy disk controller.

Introduction
What does it do?

Switches and indicators
This card has 3 (three) thumbwheel switches at the front (numbered 3,2,1 from the top of the card) and 4 (four) switches for current loop / RS232-C selection.

Thumbwheel 1 controls floppy device, as follows: Setting 2 - 15 are unused, will answer on IOX 0 - 7.
 * 0 - floppy system no. 1, device no. 1560, Ident 21
 * 1 - floppy system no. 2, device no. 1570, Ident 22

Thumbwheel 2 controls terminal group, as follows
 * 0 - terminals 1-4, dev. no. 300-330, Ident 120-123
 * 1 - terminals 5-8, dev. no. 330-370, Ident 44-47
 * 2 - terminals 9-12, dev. no. 1300-1330, Ident 50-53
 * 3 - terminals 13-16, dev. no. 1340-1370, Ident 54-57
 * 4 - terminals 33-36, dev. no. 640-670, Ident 124-127
 * 5 - terminals 37-40, dev. no. 1100-1130, Ident 130-133
 * 6 - terminals 41-44, dev. no. 1140-1170, Ident 134-137
 * 7 - terminals 45-48, dev. no. 1400-1430, Ident 140-143
 * 8 - terminals 49-52, dev. no. 1500-1530, Ident 144-147
 * 9 - terminals 53-56, dev. no. 1640-1670, Ident 150-153
 * 10 - terminals 57-60, dev. no. 1700-1730, Ident 154-157
 * 11 - terminals 61-64, dev. no. 1740-1770, Ident 160-163
 * 12 - async. modem 1 - 4, dev. no. 200-230, Ident 60-63
 * 13 - async. modem 5 - 8, dev. no. 240-270, Ident 64-67
 * 14 - async. modem 9 - 12, dev. no. 1200-1230, Ident 70-73
 * 15 - async. modem 13 - 16, dev. no. 1240-1270, Ident 74-77

Thumbwheel 3 controls initial baud rate for terminals, as follows
 * 0 - 110 baud
 * 1 - 150 baud
 * 2 - 300 baud
 * 3 - 2400 baud
 * 4 - 1200 baud
 * 5 - 1800 baud
 * 6 - 4800 baud
 * 7 - 9600 baud
 * 8 - 2400 baud
 * 9 - 600 baud
 * 10 - 200 baud
 * 11 - 134.5 baud
 * 12 -  75 baud
 * 13 -  50 baud
 * 14 - unused
 * 15 - unused

current loop / RS232-C selector switches are lowest device to highest device from top of the card. = Floppy interface =
 * 0 - current loop (use the same setting if a hexadecimal switch is used)
 * 1 - RS232-C (use setting F is a hexadecimal switch is used)

Base address of IOX instructions is set by thumb wheel 1.
 * 0 = floppy system no 1 ( device numer 1560, IDENT=21)
 * 1 = floppy system no 2 ( device numer 1570, IDENT=22)
 * 2-15 is unused and the card will answer on IOX 0-7.

The floppy uses 8 addresses in the IO area.
 * base+0 RDAT : Read data buffer
 * base+1 WDAT : Write data buffer
 * base+2 RSR1 : Read status register 1
 * base+3 WCWD : Write Control Word
 * base+4 RSR2 : Read status register 2
 * base+5 WDAD : Write Drive Address/Write Difference
 * base+6 RTST : Read Test Data
 * base+7 WSCT : Write Sector/Write Test Byte

Interrupt level is 11.

IOX Read data buffer
IOX base+0 reads one 16 bit word from the buffer. The buffer is automatically incremented.

IOX Write data buffer
IOX base+1 writes one 16 bit word into the data buffer. The buffer is automatically incremented.

IOX Read status register 1
IOX base+2
 * Bit 0 : Not used
 * Bit 1 : Interrupt enabled
 * Bit 2 : Device busy
 * Bit 3 : Device ready for transfer
 * Bit 4 : Error bit set in status register 2
 * If set then there has occured an error and status register 2 must be read before continuing.


 * Bit 5 : Deleted record
 * Set after a read data command if the sector contained a deleted data address mark.


 * Bit 6 : Read/Write complete
 * A read or write operation has completed


 * Bit 7 : Seek completed
 * This bit is set after a seek or recalibration command when the disk has finished moving the R/W head.


 * Bit 8 : Time Out
 * set after approximately 1.5 s.

IOX Write Control Word
IOX base+3
 * Bit 0 : Not used
 * Bit 1 : Enable Interrupt
 * Bit 2 : Not used
 * Bit 3 : Test Mode (see IOX RTST and IOX WSCT)
 * Bit 4 : Device Clear
 * Selected drive is deselected

Bit 8-15 are commands to the floppy disk. Bit 8-14 are the only bits that generates device busy and give interrupt.
 * Bit 5 : Clear interface buffer address
 * Bit 6 : Enable timeout
 * Bit 7 : Not used
 * Bit 8 : Format track
 * Bit 9 : Write data
 * Bit 10 : Write deleted data
 * Bit 11 : Read ID
 * Bit 12 : Read data
 * Bit 13 : Seek
 * Bit 14 : Recalibrate
 * Bit 15 : Control reset

IOX Read status register 2
IOX base+4
 * Bit 0-7 : Not used
 * Bit 8 : Drive not ready
 * Set if the drive door is open, wrong drive address, the disk isn't properly inserted or the drive isn't powered up.


 * Bit 9 : Write protect
 * Set when a write is made to a write protected floppy


 * Bit 10 : Not used
 * Bit 11 : Sector missing - no AM
 * Set by Read data, Write data or Write deleted data access a sector that can't be located on the disk. It might also indicate a non locatable data field address mark or ID field address mark.


 * Bit 12 : CRC error
 * Bit 13 : Not used
 * Bit 14 : Data overrun
 * A data byte was lost in the communication between the NORD-100 interface and the floppy disk system


 * Bit 15 : Not used

IOX Write Drive Address/Write Difference
IOX base+5 The data written is interpreted in two different ways depending on the value of bit 0 of the A register.

Bit 0=1 : Write Drive Address
 * Bit 1-7 : Not used
 * Bit 8-10 : Drive address (unit number) 0, 1 or 2
 * Bit 11 : Deselect drives
 * Bit 12-13 : Not used
 * Bit 14-15 : Format select
 * Bit 15=0, Bit 14=x : IBM 3740 128 bytes/sector 26 sectors/track
 * Bit 15=1, Bit 14=0 : IBM 3600 256 bytes/sector 15 sectors/track
 * Bit 15=1, Bit 14=1 : IBM System 32-11 512 bytes/sector 8 sectors/track

Bit 0=0 : Write Difference
 * The value written here is used for the seek command.


 * Bit 1-7 : Not used
 * Bit 8-14 : Tracks to move
 * Bit 15 : Direction
 * Bit 15=0 move out to a lower track address
 * Bit 15=1 move in to a higher track address

IOX Read Test Data
IOX base+6 This instruction is used for testing and simulating of data transfer between the ND-100 and the floppy interface. It does not transfer data into the A register, the command transfer the test byte (see Write Test Byte) into the device buffer. The data is then possible to read via the normal commands.

IOX RTST does not generate any interrupts or busy signals.

Example % Set the interface in test mode SAA 10 IOX WCWD % Do the testing here % Reset the interface to clear test mode SAA 0 IOX WCWD SAA 20 IOX WCWD

IOX Write Sector/Write Test Byte
IOX base+7 The data written is interpreted in two different ways depending on if the device is in test mode or not.

If in test mode, IOX WSCT loads the test byte that is used in the IOX RTST command. If in normal mode IOX WSCT writes the sector number to use in following read/write command.

Normal mode:
 * Bit 0-7 : Not used
 * Bit 8-14 : Sector to use
 * 1-26 for IBM 3740
 * 1-15 for IBM 3600
 * 1-8 for IBM System 32-11
 * 0 must not be used


 * Bit 15 : Sector auto incremented
 * If set then the sector register is incremented on every read/write command. It is not valid when incremented past the format limits.

=Serial ports=

=Notes about the schematics= There is a bootstrap prom, ND prom no 007-00-A of 512 byte (74S472) and a memory bank of 1kword RAM.

Serial ports is made with an IM-6402 UART per port, same as the 8-port card.

=References=
 * Chapter 6.7 I/O system connection to the interrupt system (page 190-195)
 * Chapter 6.8 DMA (page 196-203)
 * Appendix B.4 ND-100 floppy disk programming instructions (page 286)
 * The end of B.4 contains garbage about card readers.
 * The end of B.4 contains garbage about card readers.


 * Appendix D.7 Switches on the floppy and 4 terminals module (3010) (page 313)