Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > alt.comp.bios > #10

resetting RM IVT BIOS vectors to their defaults

From Rod Pemberton <NoHaveNotOne@zxdehrnyya.cam>
Newsgroups alt.os.development, comp.os.msdos.programmer, alt.comp.bios
Subject resetting RM IVT BIOS vectors to their defaults
Date 2016-08-25 18:54 -0400
Organization Aioe.org NNTP Server
Message-ID <20160825185407.4aab5263@_> (permalink)

Cross-posted to 3 groups.

Show all headers | View raw


This topic came up on alt.os.development.
Cross-posting to other DOS and BIOS groups.

While this issue of resetting the RM IVT came up in regards to OS
security, it is needed for other projects like Jim "Trixter" Leonard's
Flopper project which starts PC games which normally boot directly from
disk without DOS having been load.  DOS hooks BIOS interrupts that are
incompatible with the games.

In order to effectively reset the RM IVT BIOS vectors to their
defaults, I think the best option is to simply save a clean copy of the
RM BIOS IVT and load that if you suspect something has hooked the BIOS
vectors.

That said, many BIOS vectors can be reset.  There are default values,
fixed entry points, and/or are saved by BIOS or DOS. These can be used
to reset most of the important vectors.  If you want to do something
like this, this information will be a start.

If you just want to reset the BIOS IVT to defaults and DOS has _not_
been loaded, that is fairly easy, but it won't recreate the entire IVT.
The BIOS stores a table of 32 vectors at F000:FEF3.  This table does
not seem to documented by RBIL (Ralf Brown's Interrupt List) or any of
RBIL's other files. (info below)  Many BIOS calls also have historical
entry point values which are fixed due to software jumping to them
directly. These values can be used to fill in other vectors not in the
default table. (info below)

If DOS has hooked the BIOS vectors, you'll have mess to fix.  DOS saves
5 or 9 vectors, hooks at least 8, and doesn't save a few.  DOS'
hooked Int 19h may restore some of these.  The others are stored in
memory. (info below)

(Note: All values not marked as hex, probably are.)


Original BIOS vector table stored in BIOS. (32 vectors)
All BIOSes "should" have this table present in BIOS.

F000:FEF3 Default BIOS Vector Table
.(vectors 0x06, 0x09 through 0x1F, 0x70 through 0x77)


Original AT BIOS entry points.
All modern BIOSes "should" use these values in their IVT:

02h F000:E2C3
05h F000:FF54
08h F000:FEA5  IRQ0
09h F000:E987  IRQ1
0Eh F000:EF57  IRQ6
10h F000:F065 or F000:FF53
.(FF53 is IRET routine for no video card found)
11h F000:F84D
12h F000:F841
13h F000:EC59 or F000:E3FE
.(E3FE is harddisk, EC59 is floppy)
.(floppy reassigned to Int 40h if hard disk is found)
14h F000:E739
15h F000:F859
16h F000:E82E
17h F000:EFD2
18h F000:6000
19h F000:E6F2
1Ah F000:FE6E
1Bh F000:FF53  (IRET routine)
1Ch F000:FF53  (IRET routine)
1Dh F000:F0A4
1Eh F000:EFC7
40h F000:EC59  (set to EC59 if hard disk is found)
42h            (may have original or hooked Int 10h)
6dh            (may have original or hooked Int 10h)


RBIL says Int EF original Int 09 vector before BASIC hooks.
RBIL says Int F0 original Int 08 vector before BASIC hooks.


Original BIOS tables.
All BIOSes "should" have these:

F000:E05B POST entry point
F000:E401 HDD Parameter Table
F000:E6F5 Configuration Data Table
F000:E729 Baud Rate Generator Table
F000:EFC7 Floppy Disk Controller Parameter Table
F000:F0A4 MDA and CGA Video Parameter Table
F000:FA6E Low 128 characters of graphic video font
F000:FFF0 Power-On Entry Point
F000:FFF5 ROM Date in ASCII "MM/DD/YY" for 8 characters
F000:FFFE System Model 0xFC
F000:FFF0 jumps to F000:E05B. original IBM


Older MS-DOS saves 5 vectors (*)
0x10 0x13 0x15 0x19 0x1B
(*) in memory at 0070h:0100h, see D-M00700100 in RBIL's MEMORY.LST file

MS-DOS v7.1 actually saves 9 vectors (at the same place).
0x08 0x0F 0x10 0x13 0x15 0x16 0x19 0x1B 0x4F

MS-DOS v7.1 only seems to hook 8 vectors.
0x08 0x0F 0x10 0x13 0x15 0x16 0x19 0x1B

MS-DOS v7.1 also needs vector 0x17 reset to reboot.


RBIL says DOS:
-revectors Int 00
-PSP saves Int 22, Int 23, Int 24 per program
-may revector IRQ2 through IRQ6, IRQ10 through IRQ12, IRQ14, IRQ15
depending on the DOS version and STACKS setting
-hook of INT 19 may restore some vectors on newer DOS versions

RBIL says MS Mouse driver hooks Int 10, Int 71/74 (see Int 33)
RBIL says DOS SMARTDRV hooks Int 13 vector and saves in status record
(see Int 21, AX=4402h)

RBIL says many apps hook DOS vectors.


I retyped much of that info.
I hope there are no mistakes.
I checked it a few times.

HTH,


Rod Pemberton

Back to alt.comp.bios | Previous | NextNext in thread | Find similar


Thread

resetting RM IVT BIOS vectors to their defaults Rod Pemberton <NoHaveNotOne@zxdehrnyya.cam> - 2016-08-25 18:54 -0400
  Re: resetting RM IVT BIOS vectors to their defaults Rod Pemberton <NoHaveNotOne@zxdehrnyya.cam> - 2016-08-26 16:17 -0400
    Re: resetting RM IVT BIOS vectors to their defaults "Mike Gonta" <mikegonta@gmail.com> - 2016-08-26 18:10 -0400
  Re: resetting RM IVT BIOS vectors to their defaults James Harris <james.harris.1@gmail.com> - 2016-08-27 14:05 +0100
    Re: resetting RM IVT BIOS vectors to their defaults Rod Pemberton <NoHaveNotOne@zxdehrnyya.cam> - 2016-08-27 19:11 -0400
      Re: resetting RM IVT BIOS vectors to their defaults James Harris <james.harris.1@gmail.com> - 2016-08-28 11:09 +0100
        Re: resetting RM IVT BIOS vectors to their defaults "Mike Gonta" <mikegonta@gmail.com> - 2016-08-28 09:08 -0400
        Re: resetting RM IVT BIOS vectors to their defaults rridge@taurine.csclub.uwaterloo.ca (Ross Ridge) - 2016-08-28 19:30 -0400
          Re: resetting RM IVT BIOS vectors to their defaults James Harris <james.harris.1@gmail.com> - 2016-08-29 07:59 +0100
          Re: resetting RM IVT BIOS vectors to their defaults "Mike Gonta" <mikegonta@gmail.com> - 2016-08-29 06:29 -0400
            Re: resetting RM IVT BIOS vectors to their defaults rridge@taurine.csclub.uwaterloo.ca (Ross Ridge) - 2016-09-03 20:43 -0400
          Re: resetting RM IVT BIOS vectors to their defaults "wolfgang kern" <nowhere@never.at> - 2016-08-30 10:06 +0200
            Re: resetting RM IVT BIOS vectors to their defaults "Mike Gonta" <mikegonta@gmail.com> - 2016-08-30 06:37 -0400
              Re: resetting RM IVT BIOS vectors to their defaults "wolfgang kern" <nowhere@never.at> - 2016-08-31 12:25 +0200

csiph-web