Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| 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.
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 | Next — Next in thread | Find similar
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