RESTARTING THE TESTING IN REAL MODE
With the V2315CF set to real mode, the 13SD disk drive inside the IBM 1130 is powered on and participates in the disk activity along with the V2315CF. With the cartridge loaded into the V2315CF and any old physical 2315 cartridge loaded into the 13SD, the motor power switch is flipped on to spin up the drive.
Once the disk drive finished its 90 second purge of dust from within the spinning drive, the File Ready lamp on the 1130 main console lit up as well as the RDY light on the V2315CF box. This made the disk ready to be accessed by the diagnostic.
Sectors on the 2315 cartridge are usually 321 words long, with the first word holding the relative sector number as its value. Thus cylinder 0 has relative numbers 0 to 7, cylinder 1 starts with relative number 8, and they run up to 1616-1623 on cylinder 202.
The diagnostic refers to word counts, but they mean the count IN ADDITION to the first word with the relative block number. This way of counting words matches how the Disk Monitor System disk routines read sectors - they read 321 words, check the relative block number in the first word, and then return 320 words to the calling program.
The diagnostic runs through twelve routines sequentially, with a thirteenth that can be specifically triggered if desired. As the diagnostic starts, it first seeks in reverse to reach the Home (0) cylinder. It watches the sector numbers to verify that the four numbers arrive in sequence, e.g 0, 1, 2 then 3. Finally, it seeks to cylinder 199 and reads a specific word to check for a 'magic' value that marks the 2315 cartridge as suitable for use by customer engineers doing testing.
Routine 1 is executed twenty times. It moves the arm to cylinder 0 then reads sectors 0 to 7 in order with a sequence of word counts. It starts with 1 word, then reads the eight with 2 words, 4 words, 8 words and doubling each time until it reads 256 words. Next 320 words are read from the eight sectors and the data on sector 7 is verified to match the known contents. Again, this was really 2, 3, 5, 9 . . . 257 and then 321 words.
Routine 2 executes a pattern of seeks. First it moves forward from cylinder 0 to cylinder 202, moving 2 cylinders forward then 1 cylinder in reverse. At each cylinder, it reads all eight sectors and checks word 1 which has the relative sector number as its contents. On the CE cartridge, cylinders 90 to 110 are protected as they have a special pre-recorded pattern used to align the disk heads. Thus, while moving forward in the +2/-1 pattern it skips direction from 89 to 111. The routine then does the same thing in reverse from cylinder 202 back to Home, stepping 2 cylinders back then 1 forward.
Routine 3 does 100 random seeks. If the random number is between 90 and 110 it gets another random value for the seek. After each seek it reads and verifies all eight sectors.
Routine 4 will read cylinder 1 sector 0 fifty times, checking each time that the data consists of the pattern x1313 in each word.
Routine 5 will read cylinder 201 sector 6 fifty time, checking each time that the data consists of the pattern xe5e5 in every word.
Routine 6 does fifty writes of 320 words, each set to 1313, with the relative sector number as the preceding word. These are written to cylinder 2, sector 0. It reads back and validates the contents each time.
Routine 7 is similar to routine 6, but uses cylinder 2 sector 6 as its location and the data value used is e5e5. It does fifty writes with a readback and comparison after each write.
Routine 8 performs a read check. When requesting to read a sector, there is a bit in the IOCC that tells the controller to read the sector, validate the error checking bits on the data, but not to transfer any into memory. The routine verifies that the read did not receive a data error condition and also that the contents of core memory were not changed by the read check operation.
Routine 9 performs fifty writes to cylinder 0 sector 2 with random data values in the 320 words, reading back and verifying the contents match what was written.
Routine 10 performs fifty writes to cylinder 202, sector 6 with 320 random words, which are read back and verified.
Routine 11 will write 320 words of 1313 to cylinder 2, sector 0. It then writes a single word at the same location. Reading back all 321 words of the sector should return the relative block number 16 plus 320 words of 0000.
Routine 12 will attempt to write 400 words to cylinder 2, sector 0 (actually 401 with the relative block number first). This is too much data to fit within a sector on disk, so the write should be terminated with a data error condition. The routine will do this 50 times, each time reading back the sector to see how many words fit before the write was terminated. The routine will print the average number of words from across those fifty attempts.
Routine 13 is optional and must be started explicitly with a command to the diagnostic. It does a series of seeks of different lengths - 1, 2, 4, 8 16, 32, 64, 128 and 200 - to record the time it takes for that to complete. For each seek distance, it seeks forward from Home and back to Home ten times, averaging the time that the seek of that size takes to complete. At the end of the ten seeks it prints the average, minimum and maximum time.
TEST RUNNING ALONG WELL, GOT INTO ROUTINE 3 BUT TYPEWRITER FAILED THEN
I watched the diagnostic proceed through routines 0, 1 and 2 with no errors detected. It was performing the 100 random seeks of routine 3 when the belt from the motor of the console printer (typewriter) snapped. The diagnostic prints various status messages on the typewriter and will not move forward until they are completed.
I did see two error messages printed. In each case, the diagnostic attempted another seek to get to the intended target and reported success. Thus there were two intermittent seek errors out of somewhere between sixty and 100 that had been attempted. I don't know exactly where we got because the belt on the typewriter snapped at this point.
I was able to manually turn the typewriter mechanism, so that it reported completion of typing and carrier movement commands. However, when hand cranking the typeball doesn't achieve enough momentum to impress a character on the paper so I don't know what it was typing. Eventually it stalled as some command to the typewriter didn't see a response signal.
A seek attempted from cylinder 69 to cylinder 1 found that it had actually reached cylinder 0. The Home status bit was on in the device word as well as the relative block number in the sector ranging between 0 and 7.
The other printed error was a seek attempted from 130 to 19, where the relative block number read proved it had stopped at 21 instead of 19. As with the first error, the diagnostic rectified the situation - with a seek to get to 21 successfully.
VIDEO OF ROUTINE TWO AND PART OF ROUTINE THREE
You can watch a video here of the disk arm moving from 0 to 202, then from 202 to 0, as part of routine 2. This includes the forward 2, back 1 pattern as well as the jump between 90 and 110. The RD lamp on the V2315CF box is shown briefly to let you see that the diagnostic is reading sectors at every cylinder it reaches.
It moved on to routine 3 which performs 100 seeks of random distances and directions. Sometime during this routine the belt on the typewriter snapped and stopped further testing.
YET ANOTHER ISSUE CROPS UP TO SLOW DOWN MY FINAL TESTING OF V2315CF
This is the latest in a set of annoyances that have gotten between me and the end of a testing campaign for the V2315CF. I had hoped to finish testing with enough time to get up to Maryland and install one in the 1130 at System Source Museum before my knee replacement surgery. However, with the surgery slated for April 21 and the stream of unexpected snags - core memory sense wire breaks, Raspberry Pi PICO toolchain balkiness, and finally the typewriter issue - I will have to delay it until I have recovered enough to travel - a couple of months probably.
Replacing a broken belt requires partial disassembly of the operational and print shafts, then a slew of adjustments to get things back in shape after I install the new belt. The typewriter was not performing well anyhow - the program driven space function wasn't working and it sometimes failed to perform carrier returns or tabs properly - so this needs some careful lubrication and adjustment anyway.
The stale lubricants from many decades ago partially solidified in the time while I was working on other aspects of the restoration, such as core memory stack repairs, peripheral control logic testing, etc. This is best handled by removing the console printer from the machine and working with it on the bench. That alone will probably take up the ten days I have left before surgery.
No comments:
Post a Comment