Date : Wed, 09 Jul 2008 09:29:01 +0100
From : dl.harper@... (David Harper)
Subject: ROM type byte inconsitancies
Jonathan Graham Harston wrote:
> The 80186 client does:
> F000:1D7A 24 0F $. AND AL,00Fh ; Get CPU bits
> F000:1D7C 3C 0B <. CMP AL,00Bh ; Is it 80186?
> F000:1D7E 75 16 u. JNZ 1D96h ; Not 80186, jump to error
> F000:1D80 B0 01 0. MOV AL,001h ; AL=1
> F000:1D82 EB E5 ke JMP 1C69h ; Jump to enter code
I question that this has anything to do with type bytes, etc.
These bytes given above are actually at location 0000:0100 (not at 0:0) in
the 80186 ROM. In fact all the bytes prior to these are set to 0, except for
4 bytes at location 0000:0030.
I suggest (very strongly!) that these are actually interrupt vectors for
those interrupts that are handled by the 80186 ROM, namely Interrupt 0Ch
(the Tube hardware interrupt), Interrupts 040h to 04Ch (the MOS calls) and
04Fh (the ROM-based error handler).
Trying to interpret a set of interrupt vectors as descriptive bytes or
executable code is bound to lead to nonsense.
David Harper