Qi 300 BIOS Revision Summary (Rev 1.1.11)

Release Date Changes
1.01.02 23/9/88 The hard disk parameters for drive types 36 & 37 were modified to include Write pre comp values of 300 & 128.

Timer 24 hour Roll-over flag usage modified to be the same as our AT machines.

The POST error message for the serial port did not terminate in CR, LF - this has now been corrected.

The hard disk initialisation routines were incorrectly copying the drive parameter tables from CMOS into RAM for type 255 drives.

The ROM code was not expecting an IRkey to be received before the Logon screen was displayed. IRkey is now absorbed.

The ROM BIOS is now always shadowed on machines with more than 1MB of RAM controlled by the Chipset; With 1MB or less then the shadowing is controlled by the CMOS flags.

The TECMAR initialisation routines have now been moved to just before Int. 19h to be more compatible with ARD and the Tecmar utilities - this means that TECMAR RAM will not be counted/tested with main memory, but will instead 'sign-on' just before boot. This change meant that the current versions of ARD can now be used with TECMAR cards. CMOS RAM is now less likely to corrupt.

The CRC error detection for standard CMOS RAM was providing incorrect results, which could have prevented detection of power fail correctly.
1.01.03 28/10/88 The POST routines were attempting to detect and initialise plug-in video cards before Adapter POS setting had been completed. This may is now performed after POS set-up. This may correctly initialise the IBM 8514/A display adapter.

The POS set-up routines always send 4 bytes of POS configuration from CMOS RAM followed by zeros to POS[6] and POS[7] for each card. The latter action was upsetting some cards (including the D-Link Ethernet card) which do not fully decode POS addresses. The ROM will now only set up POS[2] to POS[5] (from CMOS).

If an 8514/A display adapter is found, but not configured, during POS set-up, the ROM's will now automatically set up the card - this will allow users to install the card and connect a single monitor to it for running the Reference Diskette (as described in the 8514/A Installation instructions)

Due to a change in the floppy drive detection algo introduced in V1.01.01 BIOS, the Irwin tape drive was incorrectly being found as a floppy drive. the initialisation routines now specifically check for the 2nd drive installed status from the hardware before testing for a second drive. This will prevent detection of the Tape Drive as a floppy as long as it is correctly cabled (Tape signal cable Pin 1 must be disconnected).
1.01.03 28/10/88 Due to the unusual configuration of the 300 series machine it has been a problem to decide how to identify the machine to software. The current compromise is as follows:

Model Byte @ F000:FFFFh = F8h (model 80 - for Windows 386)
Model Byte Int. 15h, function C0h = FCh (model 60)
Sub model Byte from Int. 15h, function C0h = 05h (model 60)
Apricot machine identification @ F000:FFC0h =
Offset 0 - 'APRICOT'
Offset 7 - F8h - IBM Model Byte
Offset 8 - 11h - Apricot Model Byte (300 series)
Offset 9 - 04 - BCD ROM version (low)
Offset 10 - 01 - BCD ROM version (middle)
Offset 11 - 01 - BCD ROM version (high)
1.01.04 8/11/88 Winchester type 38 (30MB MiniScribe) parking zone changed to cylinder 663 (from 615).

On a soft reset, or jump to reset vector, the BIOS did not reset the state of the EMS enable bit, or the RAM shadow state - these are now cleared down on a soft reset. The BIOS is now re-shadowed every reset.

The add-on floppy board is now reset to Floppy on every reset.

The current machine Identification is as follows:
Model Byte @ F000:FFFEh = F8h (model 80 - for Windows 386)
Model Byte Int. 15h, function C0h = F8h (model 60)
Sub model Byte from Int. 15h, function C0h = 50h (Apricot Spec.)
Apricot machine identification @ F000:FFC0h =
Offset 0 - 'APRICOT'
Offset 7 - F8h - IBM Model Byte
Offset 8 - 11h - Apricot Model Byte (300 series)
Offset 9 - 04 - BCD ROM version (low)
Offset 10 - 01 - BCD ROM version (middle)
Offset 11 - 01 - BCD ROM version (high)

To aid in the generation of OEM variants of the Qi all references to Apricot and Qi in ROM text messages have been removed.

The error corrected by previous fix has now been fully identified - the bug was caused by internal delay routines not being re calibrated after copying the ROM BIOS into shadow RAM, this re calibration is now performed. Note that a second drive will still only be searched for if PIN 1 of the interface is connected.

The NMI handler, on detecting an I/O channel check condition would, in addition to resetting the channel check status on the offending card, perform a Channel Reset - this would cause the VGA ands other devices to crash. This action is no longer performed.

Crashes caused by uninitialised Security data corrected.
1.02.05 12/12/88 Added drive type 40 - Toshiba RLL 65MB drive.

If a ROM was found in the address range 0C0000-0C8000h then the default video mode was reset. This resulted in the machine booting in 40 column mode if some non-video cards were placed in this area. The code has now been removed.

The machine identification scenario previously described has caused a problem with the MADGE Token Ring Network Card diagnostics program and PC Oracle - These did not understand an Int. 15, function C0h Sub model Byte value of 50h (Apricot Spec.). This had to changed back to 00h (IBM 16MHz Model 80).
1.02.05 12/12/88 Current identification is as follows:

Model Byte @ F000:FFFEh = F8h (model 80 - for Windows 386)
Model Byte Int. 15h, function C0h = F8h (model 80)
Sub model Byte from Int. 15h, function C0h = 00h (model 80)
Apricot machine identification @ F000:FFC0h =
Offset 0 - 'APRICOT'
Offset 7 - F8h - IBM Model Byte
Offset 8 - 11h - Apricot Model Byte (300 series)
Offset 9 - 04 - BCD ROM version (low)
Offset 10 - 01 - BCD ROM version (middle)
Offset 11 - 01 - BCD ROM version (high)
Apricot Copyrights have been updated to 1989.
1.02.06 20/1/89 Version number updated to 1.02.07

Dummy port for I/O delay in WAFORIO macro changed to 84h

Support for keyboardless operation did not work correctly - caused by error count log being updated incorrectly, and errors with flag detection code, corrected.

Corrected Write Pre comp cylinders for drive types:
36 (CDC 122MB)
38 (MiniScribe 30MB)
40 (Toshiba 65MB)

Chipset initialisation simplified(switch readings removed etc.).

33MHz switch setting disallowed (->25MHz instead).

Dummy port for I/O delay in WAFORIO macro changed back to 8Eh because LIM et al think that 84h is the return to real mode port.

Flush Cache before processor reset when testing shut-down. Stops failure if cache hit the cycle before and produces 'System Board Failure Error 130'.
1.02.10 21/3/89 Int. 15h function 89h modified to write BH int. mask to Master PIC and BL int. mask to Slave PIC during protected mode entry. Cures problems with Novell Netware and SoftBytes 386.

Underline position for Mode 7 corrected - Corrected WORD /h bug on monochrome systems (Italic & Underline characters now appear with underline instead of normal attributes).

Return EGA information sub function 10 returns AL unmodified - corrects Video identification problems with Display Write 4.

IRQ 5 enabled 'by POST, Phoenix data area moved from 4B0h-4BFh to 4D0h-4DFh, Timer ISR explicitly clears carry & enables ints. on return. These fixes correct problems with IBM WORM drive unit.
1.02.11 25/4/89 POS[3] - port 105h on each card now has bit 7 explicitly set by POST - corrects problems with cards which would generate an NMI if this bit was set to 0.

POS[0] - port 102h bit 0 (card enable) is now set to the value held in CMOS rather than explicitly - this allows cards with suitable ADF's to be disabled.

Mode switch 16 or 8 bit memory logic ensures all cards out of set-up mode before setting VGA into set-up mode, ensures no clash with cards left in set-up mode.
1.02.11 25/4/89 Weitek Co-processor detection code would leave FS with invalid limit and access rights. We now use ES instead and ensure that access rights are preserved. This corrects problem with QEMM and Qi 600.

When the 451 chip is set to 16-bit I/O interface OS/2 does not correctly save/restore the DOS compatibility box. 451 parts are now set to 8-bit I/O (451A's operation of 8-bit I/O with 387 fitted on 280 Chipset the NDP Present bit must be set to 0 (Bit 4 of Register 8Eh).

Added Cache enable disable functions for VX FT Server.

Changed sign on.

Changed Software Delay routines to allow for faster 386 & 486 machines (delay doubles on 386, quadruples on 486).

5MB 280 Chipset now set to Page Mode - corrects problems with RAM corruption on some 5MB machines (Incorrect C&T Spec.).

ABIOS Request Block Sizes corrected for Hard Disk and Floppy - corrects problems with MS-OS/2.

Video ROM search modified to initialise card POS registers to 0 before searching for ROM, ALSO modified to miss cards with ID's in the range 6000-6FFFh (temp. fix for SPECIALIX card, note that Video or RAM cards which have ID's in this range will not be initialised until after that card such as the SPECIALIX card which do not reset POS settings on reset will not crash the system when enable
1.02.12 30/4/89 Further modifications to video search code to avoid crashing cards - in this case National Instruments IEEE GPIB card. Now only cards with ID's above 7000h are enabled & tested.

VGA code modified so that it does not use/modify Int. 42h & 6Dh vectors (as with AT card implementation). Corrects problems with software which uses reserved 6Xh int. vectors (DECNET DOS).

Cylinder-1 variants of CDC/MiniScribe/Seagate drive types for Defect Cylinder support included as Types 37, 39, 47 (old type +1).

Switch to protect mode now only sets protect mode bit rather than clearing down rest of Machine Status Word.

i486 detection code now uses Intel approved method of testing settability of AM bit in CR0.

Initial support for 1MB RAM daughter card on Qi 300.

Inclusion of Encryption support.

Bug Fix for 280 Chipset DMA Controller, if 16MB RAM found then size of RAM in CMOS (found and expected) is set to 16MB-128K to prevent crashes due to DMA not operating correctly in the top 128K of a 16MB system (82C322 Memory Controller bug).

100MB CDC Drive type 35 added to tables - with defect map.

Drive parameter initialisation routine corrected to wait for only one interrupt from Hard Disk Controller. Corrects problems with VM/386.

Inclusion of Phoenix bug fix for OS/2 on ESDI - change read transfer count from 40h to 50h.
1.02.13 3/8/89 Screen now cleared on VX FT Server before security box displayed.

Pointing device presence bit now correctly set - was being set id CMOS bit set, now only set if actually present. Corrects problems with Windows.

Qi 300 build now uses CR0 to get out of protected mode, this cures the ACAD cursor problem as port 92 method causes reset of the 387 as well.

Qi 600/VX FT now uses switch 6 to specify whether paging is enabled or disabled in memory config. Cures lots of UNIX/XENIX problems with parity errors.
1.02.14 20/9/89 VX FT - Cache enable bits inverted to comply with B3 stepping of the 486.
1.02.15 11/12/89 Changed sync polarities for dual sync Sony to both positive and also changed horizontal sync position to move the picture to centre of screen.
1.02.16 7/2/90 Added the code for second processor start-up in VX FT models.
1.02.17 14/2/90 Added Imprimis 66.5MB drive as type 40. Removed RLL Toshiba.
1.02.18 19/6/90 Added dual boot facility added to all MCA machines. This is mainly to cater for Western Digital Ethernet remote boot.

Init. 128 bits of memory before we read it, this stops NMI parity errors on 486 hypercache systems. Hypertec memory board in particular.
1.02.20 28/8/90 Corrected dual processor start-up for prom card.
1.02.21 6/2/91 Deleted VX FT checking on keycard logon time-out on machines other than VX FT.
1.02.22 17/12/91 Moved extended memory detect/configure code to before video initialisation to prevent video slots being disabled.
1-02-23 30/4/93 IBM SCSI - Moved Apricot extended CMOS information from 0500 to 0300H, and changed ABIOS DMA table entry from 0FFFF to 00005H.

OS/2 Remote Access Service - implemented new 'SERIAL.ASM' from Phoenix.

OS/2 'Mad' or, as IBM refer to it, 'Wild' mouse - include an extra call to 'wfibe' (Wait for input buffer empty) in 'KEYBRD.ASM'.

Relocated Petrel / ESDI BIOS from 0E000:08000H to 0E000:0C000H to make room for a larger BIOS.


9595 Main Page