3112

3112 is the 8 inch and 5.25 inch floppy controller + streamer controller card.

Introduction
It is a controller for floppy drives (8 and 5.25 inch) and a tape streamer. This is a microprocessor-based controller/formatter which performs control functions and data transfer between the CPU and a floppy disk drive or a streaming tape drive. The controller/formatter consists of an interface towards a ND-100 bus, a complete floppy disk controller, and a QIC-02 streaming tape cartridge, all based on an 8 bit microprocessor (Z80A).

A maximum of four Streaming Tape Drives and four Floppy Disk drives may be connected to the controller.

The FLOPPY DISK CONTROLLER can read/write on single/double density and single/double sided diskettes. Data transfer and exchange of commands/status are performed with DMA (Direct Memory Access).

The controller is compatible with previous single sided controllers. For "stand-alone" use, a new version of FLO-MON (FLOppy-MONitor-2010F or newer) must be dumped on the diskette.

Switches and indicators

 * thumbwheel switch - device number selection
 * 0 - device number 1560
 * 1 - device number 1570
 * 2 - 15 - not used

Connectors
The A and B connectors are used for I/O, the C connector is used for the ND-100 Bus.

Floppy drives are connected via a daisy chain from connector A (unit 0 - 3) and streamer cartridge drives are connected via a daisy chain from connector B (unit 0 - 3).

Read data
address: device address + 0

Read Status
address: device address + 2

Load Control Word
address: device address + 3

Read Status
address: device address + 4

Load Pointer High (Bit 16-23)
address: device address + 5

Load Pointer Low / Load Data
address: device address + 7

Unused IOXs does not give an IOX error.

Note: Reading either status gives the same result. They are duplicated to make it possible for microprograms in the ND-100 CPU to perform both Binary Format Load and Mass Storage Load (1560& and 21560).

The IOXs devno + 5 and devno + 7 are used to form the pointer to the location in the ND-100 memory where the controller finds the Command block. In tests, these IOXs are given direct meaning in different tests.

Floppy Formats
Octal numbers.
 * 0 IBM SYS-32-II 512 bytes / sector, single side, single density
 * 1 IBM 3600     256 bytes / sector, single side, single density
 * 2 IBM 3740     128 bytes / sector, single side, single density
 * 3 Illegal
 * 4 non IBM     512 bytes / sector, double side, single density
 * 5 non IBM     256 bytes / sector, double side, single density
 * 6 non IBM     128 bytes / sector, double side, single density
 * 7 Illegal
 * 10 non IBM     512 bytes / sector, single side, double density
 * 11 IBM SYS-34  256 bytes / sector, single side, double density
 * 12 Illegal
 * 13 non IBM    1024 bytes / sector, single side, double density
 * 14 non IBM     512 bytes / sector, double side, double density
 * 15 IBM SYS-34  256 bytes / sector, double side, double density
 * 16 Illegal
 * 17 non IBM    1024 bytes / sector, double side, double density
 * 20 Illegal
 * 21 Illegal
 * 22 Basic 5.25 inch 128 bytes / sector, single side, single density
 * 23 - 33 Illegal
 * 34 IBM PC
 * 35 - 57 Illegal
 * 60 - 77 User specified

Error Codes
Error code in octal. These error codes are given in bits 9-15 of status word 1. The codes are also shown in the digit display on the rear edge of the controller. autoload errors Streamer errors Self test errors
 * 00 OK
 * 01 - 04 not used
 * 05 CRC error
 * 06 Sector not found
 * 07 Track not found
 * 10 Format not found (indicates that the diskette has not been formatted)
 * 11 Diskette defect (impossible to format)
 * 12 Format mismatch
 * 13 Illegal format specified
 * 14 Single sided diskette inserted
 * 15 Double sided diskette inserted
 * 16 Write protected diskette / cartridge
 * 17 Deleted record
 * 20 Drive not ready (no diskette in drive, diskette inserted upside down, power failure, no drive with this number)
 * 21 Controller busy on start
 * 22 Lost data (over or underrun)
 * 23 Track zero not detected
 * 24 VCO (voltage controlled oscillator) frequency out of range
 * 25 Microprogram out of range (if the Z80 tries to execute a program from inexistent memory, it will fetch FF hex - the bus is terminated high. This instruction is RST 038H, which gives the error code Microprogram Out of Range.)
 * 26 Timeout
 * 27 Undefined error
 * 30 Track out of range
 * 31 not used
 * 32 Compare error (during compare of data)
 * 33 Internal DMA errors
 * 34 - 37 not used
 * 40 ND-100 Bus error command fetch
 * 41 ND-100 Bus error status transfer
 * 42 ND-100 Bus error data transfer
 * 43 Illegal command
 * 44 Word count not zero
 * 45 Illegal completion (cont. transf.)
 * 46 Addr-reg error
 * 47 not used
 * 50 No bootstrap found on diskette
 * 51 Wrong bootstrap (out of date flo-mon version)
 * 53 - 57 not used
 * 60 Streamer handshake error
 * 61 Streamer status transfer error
 * 62 Bad cartridge
 * 63 No cartridge installed
 * 64 End of tape, cartridge full
 * 65 Streamer drive error
 * 66 Unidentified exception
 * 67 Illegal command to streamer
 * 70 PROM checksum error
 * 71 RAM error
 * 72 CTC error
 * 73 DMA CTRL error
 * 74 VCO error
 * 75 Floppy controller error
 * 76 Streamer data register error
 * 77 ND-100 register error

ND sales number

 * ND-317