Hi Alistair.

 >>>> Not really--All I know is that PCs and XTs fell back on cassette
 >>>> BASIC when the disk boot failed--AMI BIOS still makes a call to
 >>>> it when it fails, but the BASIC roms don't exist in post-8088s.  
 >>>> It does seem intriguing, though. I'll see what I can come up with.

 >>> I have come across a few old machies that had sockets like this,
 >>> but never one that actually had a BASIC rom in it. I don't know
 >>> what the ROM in this socket needs to contain in order for the
 >>> BIOS to recognise it as a BASIC ROM and run it if boot fails.

 >>> Interestingly enough the ELONEX 486DX33 I use for testing ELKS
 >>> alot of the time has cassette BASIC built into its BIOS. I only
 >>> found out by accident because I took out the harddrive.

 >> If I remember right the bios setup replaces the basic, On my
 >> 386, if you call basic (with an int or someting, did it years
 >> ago and can't remember) the bios setup loaded. The original IBM
 >> PC's had basic on a rom, but I do not know how big the rom was.

 > The Elonex definatly has both a BIOS setup program and BASIC. I
 > will see what docs I can track down on this.

The original setup was actually quite simple, and worked as follows:

 1. On power-up, the CPU switches itself into Real mode and
    starts running the BIOS POST routines.

 2. After completing the POST, the BIOS scans through the rest
    of the BIOS area looking at every 4k boundary for the
    relevant "Extension ROM marker".

     a. When it finds one, it looks at the adjoining "ROM length"
        field to determine how large the ROM is supposed to be,
        then checksum's the ROM area.

     b. If this checksum is zero, it assumes the ROM is valid,
        and calls the "initialise ROM" entry point for that ROM.

     c. The ROM BASIC pointed this entry point to a routine that
        inserted a call to the main ROM BASIC entry point in the
        INT 0x18 vector.

 3. Once the ROM SCAN was complete, the BIOS starts its "Find
    OS" loop, which works as follows:

     a. If the ROM SETUP has options for it, the list of valid
        boot devices can be set there. If not, the default is

             "Primary floppy" then "Primary hard drive".

     b. For each device in the list of valid boot devices, is
        it present with media in it? If so, load its boot
        sector and boot from it. If it ever returns, go to
        step (b).

     c. If we fall through, execute INT 0x18 to do whatever
        that feels like doing.

There are various other ROM's that can be plugged in, and all use this
same mechanism. Among the ones I'm aware of are:

 1. Most Video BIOS's.

 2. One to require the user to type in a password before the
    user can continue. Most modern BIOS's have this internal
    to the BIOS< but it can be added to those that don't.

 3. Hard drive controllers on the XT included a controller
    ROM that worked this way.

 4. As far as I know, network boot ROM's work this way as
    well.

Hope that helps. As for interrupt assignments, the following URL comes
in handy:

        http://www.ctyme.com/rbrown.htm

Best wishes from Riley.

 * Copyright (C) 1999, Memory Alpha Systems.
 * All rights and wrongs reserved.

+----------------------------------------------------------------------+
| There is something frustrating about the quality and speed of Linux  |
| development, ie., the quality is too high and the speed is too high, |
| in other words, I can implement this XXXX feature, but I bet someone |
| else has already done so and is just about to release their patch.   |
+----------------------------------------------------------------------+
 * http://www.memalpha.cx/Linux/Kernel/

Reply via email to