OIS 140 IPL description
The 140 contains three 2708 EPROMS with elaborate hardware diagnostic routines
and a small bootstrap loader program. There is a different set of EPROMS for
each of the fixed disk controller board sets. The programs in these perform
the following functions:
- Tests system bus and memory
- Tests interrupt generation hardware
- Z80 CTC tests
- Data Link and DMA board tests
- Disk controller tests
- Bootstrap
Each of these tests is detailed on the front panel and CPU board LEDs. There
is a reference here.
Once the tests pass (the disk tests are only run for the controller for
the disk you set to IPL from), an attempt is made to load the second sector
from the disk into memory at location 1000h. This is checksummed, and if
it passes, control is passed to this program.
The 'IPL sector' has the disk's address and geometry hard-coded into it.
This is done when the operating system is installed. This program calls the
routine in the EPROM to load the master code into memory. The location (sector
number) and size (in pages) of the master are hard-coded into the IPL sector
also. The master is loaded starting at address 1100h, and is EFh pages in
length. (as of version 10.5). Once this is loaded, the IPL sector loads the
disk's volume label (sector 0) into memory at 6d00h. It then passes control
to the master at 6e00h.
The IPL code at 6e00h is responsible for allocating memory for the following:
- DCBs - device control blocks
- VCBs - volume control blocks
- TCBs - task control blocks
- The resident debugger, if necessary.
The IPL code also determines which disk controller is in use. If the Winchester
controller is in use, the code for the SMD controller is overwritten, as well
as the SMD disk definition tables.
If the debugger is not in use, it is also overwritten.
(Note: if you're using the IDE disk, it doesn't care, it just goes ahead
and uses the horrible code I hacked in to it.)
If you set up the Debug level 2, the process stops here. The workstation
on port 1 will beep and you will see:
You can use the debugger to poke around in the Master here. If you type
'G' and press Execute or Enter, the process continues.
Next, the system volume is mounted. If this succeeds, an overlay is loaded
that will overwrite the IPL program. This overlay is hidden on the system
disk (like the master) and can be found on the Starter diskette as SYSGEN.MASTER.OVERLAYS.
It contains code for several of the OS-6 non-immediate requests.
Now, we can talk to slaves, so we don't need to use the LEDs for diagnostic
messages anymore! (But the LED's are fun, you say. Okay, let's see you toggle
bits in four bits at a time, using the diagnostic toggles and the DPB button...Don't
ask..)
But, you don't want to see this:
The file DOS.IPL is loaded to any workstations. This is where you see the
screen asking for the date and time (but don't enter 03 for the year - it
doesn't like anything past 99!). When the date and time are set, the file
DOS.START gets loaded. This determines the device type and loads the appropriate
program:
- DOS.MENU for workstations
- DOS.DCSTART for other devices
- Whatever other program file....
(The screen images on this page are from the OIS
Emulator.)