DUAL MODE STARTUP AND SHUTDOWN WORKING PROPERLY
The changes I made for startup and shutdown, where the method of moving the state machine to full ready and then to unload is quite different in pure virtual versus hybrid (real drive) mode, were implemented. Below you can see the process of updating the flash for the FPGA code.
Updating flash with SPI protocol |
For startup in pure virtual mode, a state machine will move through the 90 second power up sequence that a 13SD disk drive would perform, manipulating the correct signals at the appropriate time. The Unlocked lamp is lit on both the Virtual 2315 Cartridge Facility box and on the IBM 1130 console at the start. When the box is switched to Load, Unlock goes off and the timing begins. We emit these signals:
- Unlock turned off
- 90 second relay on for 90 seconds
- File Ready asserted at the end to indicate the virtual heads are loaded and ready to go
In real mode, the disk drive's signals are passed through and used to move the state machine to its running condition. The same signals are produced, but by the hardware in the 13SD drive. In either case, when File Ready is on, the box shows the Ready lamp as does the IBM 1130 console.
For shutdown in pure virtual mode, the box sees that we are not in real mode, so it continues on to check for the box switched to Unload. That triggers an unload of the virtual cartridge and turns on the Unlock lamp on both the box and the 1130 console.
For shutdown in real (hybrid) mode, the box ignores the Unload switch until File Ready is turned off. This occurs when the 13SD drive is physically switched off by the operator (or if there is a disk speed or other fault in the disk drive). That triggers the unload. The Unlock lamp on both the box and the 1130 console are driven directly by the Unlock circuit of the 13SD drive.
I tested this to confirm that the startup and shutdown worked correctly, doing runs in both real drive and pure virtual modes. I also performed the scripted sequence of seeks and a sector read to ensure that I didn't regress anything else with my most recent changes. Everything checked out. I even did a comparison of the virtual cartridge image file against its master copy on my laptop, with no changes found in spite of being rewritten from the box's SDRAM several times during shutdowns.
IMPROVED THE ARDUINO TESTBED WITH DIRECT PORT MANIPULATION
Since the Arduino is using various time tests to trigger events, any delays might cause the time to move past a target value and spoil the signal sequences being emitted. The original version used the Arduino digitalWrite statement to vary each signal, which is relatively slow.
The GPIO (general purpose input-output) pins of the Arduino are mapped to various port registers on the microprocessor. These can be directly addressed by statements such as PORTA |= 1<<2; which sets bit 2 of port A to 1 in order to emit a logic high out of pin 24 on a Mega 2560.
This removed a couple of glitches I was observing on earlier runs and gave me clean consistent results during my testing.
![]() |
Preparing to Unload when in Read-Only mode |
NEXT STEPS FOR TESTING
I will bring the Virtual 2315 Cartridge Facility box over to the workshop and begin cabling everything together on the IBM 1130 system. I expect to accomplish all the remaining testing on the system itself, unless I identify some issue that is easier to iterate through a fix using the earlier testbeds or simulation.
I have to spend the day at the Space Force Museum at LC26 inside Cape Canaveral SF Station, being a docent for visitors to that launch complex. Hopefully I can do some of the wiring and installation work later in the afternoon when I return.
No comments:
Post a Comment