Thursday, August 29, 2024

Thoughts on leveraging George Wiley's RK-05 Emulator and Tester for the IBM 1130 disk emulation

PRODUCTIZED AND DEBUGGED MECHANISM FOR EMULATING DISKS SIMILAR TO 1130

The RK-05 Emulator and Tester works with the DEC RK-05, a drive derived from the original IBM 2310 (ramkit code name when installed in 1130). The 2310 is a single 14" platter in a slide in plastic cartridge, as is the RK-05, the Diablo 30 and many other's that licensed the patents and improved upon the 2310. 

They both have 203 arm positions radially from near the outside of the platter to near the hub, with the programmer requesting a seek to move the heads to one of those positions. They both have a head on each side of the platter, top and bottom, which is selectable by the programmer for each read or write. 

They both are self clocking on the disk, where each 'bit cell' consists of a clock pulse and either a pulse for a data value of 1 or no pulse for data value 0. There is always a clock pulse, which the drive synchronizes to so that it can separate out the clock pulses from the data pulses. 

The 2310 clock produces 720,000 bit cells per second, with the clock of 1.44MHz divided in two to produce the clock pulse at the start of a bit cell and an optional data pulse if the value is 1. Since the disk rotates at 25 rotations per second, the drive can fit 28,800 bit cells in one rotation. The density in bits per inch depends on the radial position of the arm, with the track closest to the hub having the highest density at 1100 bits per inch. 

The RK-05 has the same rotation rate, but its clock produces 1,440,000 bit cells per second, thus the bit density is twice as high at up to 2200 bits per inch. Similarly, the Diablo 30 (which also spins at 25 rps) has both standard and high density versions, at 1100 or 2200 BPI. Oddly the Diablo clock is a bit faster than either the 2310 or RK-05 delivering 781,000 or 1,562,000 bit cells per second although the rotation rate is the same. 

A very significant difference is in how the arm is moved. The 2310 has a physical ratchet mechanism with the CPU requesting moves of either 1 cylinder or two cylinders at a time, forward or backwards. The other drives have servomechanisms that seek directly to a target cylinder with one command from the CPU. All three drives use a spacing of 10 mil between cylinders thus the full radial motion is just over 2" of the 7" platter radius. 

The hub of the platter has notches cut in it, dividing a rotation up into sectors. Depending on the systems using the drive, the number of sectors in a rotation can vary. The IBM 1130 always has eight physical sectors although pairs are combined to form the four logical sectors that the programmer sees. DEC systems using the RK-05 commonly have either 8 or 12 sector packs, those chosen to be well suited to different word lengths. The physical disk cartridge must have the correct number of sector notches to be used with the intended system. 

All of these drives require that the circuitry on the drive be able to synchronize to know which pulse is a clock and which is a data bit. This requires a preamble, a sequence of zero bit cells long enough to have the circuit lock in on the only pulses which must be clock bits. The end of the preamble is a single bit cell with a 1 data value.  Thus they have in common the need to erase a short bit and write the preamble ending with the sync word (all 0 except for the last bit). 

The systems using the drives diverge significantly from this point. IBM writes up to 321 words in a logical sector. Each word has error checking built in, with no sector wide error checking. The DEC, Xerox and most other systems, on the other hand, tend to write just the data words with error checking performed at the end of all the data with a checksum word. IBM has a single field, up to 321 words, written in a sector. Xerox Alto has three fields written in each sector, called header, label and data. Each has its own preamble with a sync word. 

Even decisions such as whether the most or least significant bit is recorded first vary by the system using the drive. This is why it was common to pair up a controller card with a drive, both being designed with the same choices. 

George Wiley's device will control RK-05 drives for various DEC systems, thus it is able to handle 8 or 12 sector systems and other variations. It inherently operates that the 2200 bit per inch rate of the high density version. It handles the preambles, sync words, bit ordering with a word and checksum algorithms that are used with the DEC controller cards. 

CHANGES NEEDED TO USE WITH MY 2310 DRIVES

The code must be changed to operate at the 720KHz data rate of the standard density. The preamble and sync word are the same although the duration of erasures and preambles may vary. The data words on disk are 20 bits long, 16 data bits plus four error checking bits. 

The ECC algorithm is very simple, the number of one bits written on the four error checking positions will break the total of one bits in the word up to 0 modulo 4. Thus if the word already has 0, 4, 8, 12 or 16 bits that are 1, the four error bits are 0000. If the data word has 5 bits that are 1, then the error bits are 1110. A word with a count of ten 1 bits ends with the pattern 1100. 

I will need to change the code of this emulator to generate the four ECC bits on every 16 bit output word and to check for proper parity (0 mod 4) on input. There is no checksum so the code can skip calculating that and skip checking the nonexistent checksum word. 

The code expects to receive a target cylinder number from the CPU and to interlock with signals until it reaches that point. The 1130 system will instead send relative motion requests, 1 or 2 cylinders at a time. The code of this emulator will have to handle the 1130 method of stepping, changing the stored cylinder number in increments. 

SLT VOLTAGE/CIRCUIT ACCOMMODATION

The IBM 1130 uses SLT, which is a Diode Transistor Logic circuitry with nominal signaling levels of 0V for logic low and 3V for logic high. However, the gates are only sensitive to having current drawn out of the input to a lower voltage, typically near ground through a transistor. If current is not flowing, it is at logic high even if the voltage is zero. 

Secondarily, these are fairly voltage insensitive and tolerant. It is not unusual to see 9V or high on the input of a gate, which is ignored. Those same inputs might be presented with a path to -3V rather than 0 for a logic low, which still causes a current to flow out of the gate input and is considered valid. Others may more rarely be presented with +48V when not conducting to ground to register as logic low. 

GENERAL STRUCTURE OF THE EMULATOR

The emulator consists of an FPGA which does the signal manipulation and state management. It also accesses a DRAM with enough room to store an entire RK-05 cartridge. Rather than the 2MB capacity of an RK-05 pack, the 1130 cartridge will hold only 1M bytes (512K 16 bit words). There is an SPI link between the FPGA and a Raspberry Pi Pico, which interfaces with the user and accesses an SD Card which contains the cartridge image. 

The product has voltage translators (between 5V for the RK05 and 3.3V for the FPGA/Pi) and proper termination for the DEC controller cards. 

No comments:

Post a Comment