Combined Disk Boot Loader PROM
- I just uploaded a new Disk Boot Loader program called CDBL (Combined Disk Boot Loader). I also uploaded a fairly thorough user's manual for CDBL. If you are using either Altair 8" disks or Altair Minidisks, this should be interesting for you. (Am I the only one booting Altair Minidisk Basic?)
CDBL works just like DBL (for Altair 8" disks) and MDBL (for Altair Minidisks), with the following improvements:
1. Automatic Disk Drive Type Detection
Before booting, CDBL determines whether the disk is an 8-inch disk or a Minidisk by identifying the sector that follows sector 15. Sector 16 means it is an 8î disk (which has 32 sectors per track), while sector 0 means it a Minidisk (which has only 16 sectors per track).
2. Boot Disk Selection
CDBL looks at Sense Switches <A11:A8> to determine from which disk to boot. This allows you to boot from any of the 16 possible disk drives on an Altair 88-DCDD disk controller or the 4 possible disk drives on an Altair 88-MDS controller, not just disk 0.
3. RAM Usage
Like DBL and MDBL, CDBL requires some zero wait-state RAM for fast code, a buffer, and the stack. DBL uses about 400 bytes starting at address 026000 octal (which limits the loaded program to no more than 11K bytes). MDBL uses about 400 bytes starting at 046000 octal (which limits the loaded program to no more than 19K bytes). CDBL uses exactly 256 bytes starting at address 046000 octal, which limits the loaded program to 19K bytes.
4. Code Copy Verification
Unlike DBL and MDBL, CDBL verifies that its code was copied successfully from PROM to RAM, and aborts with a memory error if not.
5. Memory Overlay Detection
CDBL checks to see if the disk data will overwrite CDBL's own RAM (at 046000 octal), and will abort with an overlay error if so.
6. Track 0 Overshoot Correction
CDBL steps in once, before seeking track 0. This will allow booting even when the track 0 end-stop is maladjusted. (On a maladjusted drive, it is possible to seek outward past track 0.)
7. Restart Shutoff Timer on Retries
The Altair Minidisk controller has a timer that gets restarted whenever a Step command is issued, or when an explicit Timer Reset command is issued. 6.4 seconds later, this timer shuts off the disk controller, unless it gets restarted first.
MDBL never explicitly restarts this timer, relying on the Step commands to restart the timer at the beginning of each track. However, each sector-read retry will add 200 mS to the load time of the current track. This means that 32 retries on one track will cause the MDBL load to fail because the controller will shut off.
Unlike MDBL, CDBL restarts this timer whenever it retries a sector read, so that it can complete booting even from a disk that requires many retries.
8. Correct 88-2SIO Initialization
The 88-2SIO initialization bug in the Altair DBL PROM has been corrected. This means that error codes will be printed correctly on an 88-2SIO Terminal. (This bug does not exist in the MDBL PROM.)
9. 88-2SIO Initialization Reset Delay
CDBL delays before resetting the 88-2SIO long enough that the transmission of any character in its output buffer (e.g. the "B" command from UBMON) will complete.