FLOPPYmate requires a high speed data transfer to read/write an entire track within a single disk revolution. This task requires a data transfer rate of at least 40KB/s. High speed (>8 KB/s) data transfer from or to a 1541 Disk Drive is commonly achieved using a 8 bit parallel cable connected to Port A of the 6522 Versatile Interface Adapter (VIA).
This Blog introduces a 6522 Fast Serial Driver that is capable of max. 50KB/s with a bit timing of 500kb/s (@ 1MHz PHI2, 2us shift clock cycle). Only the 6522’s shift register in “Shift in/out under control of PHI2” operation is capable of 500kb/s. When operating the shift register under control of PHI2 then CB1 (SHIFT CLOCK) is always an output. A host must be able to handle this cuircumstance.
To make matters worse, a design error in the MOS 6522, produced by MOS, outputs 9 shift pulses in “Shift in under control of PHI2” operation. CB2 (SHIFT DATA) during output of shift pulses 8 and 9 must remain at the same logic level.
This flaw is described in SYNERTEK’s SY6522 APPLICATION INFORMATION chapter 5.1 “Shift Register Warnings”. MOS never corrected their design.
MOS 6522 Shift In – PHI2 Control Timing:
The picture below shows the driver circuit (ATF16V8) on top of the 2KB RAM IC.
- High speed data transfer using the existing serial cable
- No additional data cable neccessary
- Simple 74xx logic or one GAL/ATF16V8
- Utilizes unused SRQ bus line on 1541 drives
- Works in parallel to the existing 1541 I/O circuit
- Enables fast Backup and Restore for FLOPPYmate
LET’S GET STARTED
Only a simple driver is needed for SRQ, since CLOCK direction is always output. U2A and U2D are configured as open collector drivers for the serial bus. The direction of Serial Bus pin 5 (DATA) is controlled by pin CA2.
MODULE TITLE '6522_Fast_Serial_Driver' "Yorck Thiele, July 2020 DEVICE 'p16V8'; "connect a 1k resistor from SRQ to +5V except for Disk Drives 1541B/C and 1541-II "CB1 VIA6522(pin18) ->fast serial clock "CA2 VIA6522(pin39) ->data direction for fast serial "CB2 VIA6522(pin19) ->fast serial data from host to 1541 "DATA CBM-BUS(DATA; pin5) ->bi-directional driver 1541 <> host "SRQ CBM-BUS(SRQ; pin1) ->fast serial clock from 1541 to host DECLARATIONS "Inputs CB1 pin 2; CA2 pin 3; "Outputs CB2 pin 17 ISTYPE 'com'; DATA pin 18 ISTYPE 'com'; SRQ pin 19 ISTYPE 'com'; EQUATIONS SRQ.EN=!CB1; DATA.EN=!CA2 & !CB2; CB2.EN=CA2 & !DATA; CB2=0; DATA=0; SRQ=0; END