BIOS interrupt call

BIOS interrupt calls are a facility that DOS programs, and some other software such as boot loaders, use to invoke the BIOS's facilities. Some operating systems also use the BIOS to probe and initialise hardware resources during their early stages of booting.

Interrupt table

Interrupt
Description
00h
CPU: Executed after an attempt to divide by zero or when the quotient does not fit in the destination
01h
CPU: Executed after every instruction while the trace flag is set
02h
CPU: NMI, used e.g. by POST for memory errors
03h
CPU: The lowest non-reserved interrupt, it is used exclusively for debugging, and the INT 03 handler is always implemented by a debugging program
04h
CPU: Numeric Overflow. Usually caused by the INTO instruction when the overflow flag is set.
05h
Executed when Shift-Print screen is pressed, as well as when the BOUND instruction detects a bound failure.
06h
CPU: Called when the Undefined Opcode (invalid instruction) exception occurs. Usually installed by the operating system.
07h
CPU: Called when an attempt was made to execute a floating-point instruction and no numeric coprocessor was available.
08h
IRQ0: Implemented by the system timing component; called 18.2 times per second (once every 55 ms) by the PIC
09h
IRQ1: Called after every key press and release (as well as during the time when a key is being held)
0Bh
IRQ3: Called by serial ports 2 and 4 (COM2/4) when in need of attention
0Ch
IRQ4: Called by serial ports 1 and 3 (COM1/3) when in need of attention
0Dh
IRQ5: Called by hard disk controller (PC/XT) or 2nd parallel port LPT2 (AT) when in need of attention
0Eh
IRQ6: Called by floppy disk controller when in need of attention
0Fh
IRQ7: Called by 1st parallel port LPT1 (printer) when in need of attention
10h
Video Services - installed by the BIOS or operating system; called by software programs
AH
Description
00h
Set Video Mode
01h
Set Cursor Shape
02h
Set Cursor Position
03h
Get Cursor Position And Shape
04h
Get Light Pen Position
05h
Set Display Page
06h
Clear/Scroll Screen Up
07h
Clear/Scroll Screen Down
08h
Read Character and Attribute at Cursor
09h
Write Character and Attribute at Cursor
0Ah
Write Character at Cursor
0Bh
Set Border Color
0Eh
Write Character in TTY Mode
0Fh
Get Video Mode
13h
Write String
11h
Installed by the BIOS; returns equipment list
12h
Installed by the BIOS or operating system; returns Conventional Memory Size
13h
Low Level Disk Services; installed by the BIOS or operating system; called by software programs
AH
Description
00h
Reset Disk Drives
01h
Check Drive Status
02h
Read Sectors From Drive
03h
Write Sectors To Drive
04h
Verifies Sectors On Drive
05h
Format Track On Drive
08h
Get Drive Parameters
09h
Init Fixed Drive Parameters
0Ch
Seek To Specified Track
0Dh
Reset Fixed Disk Controller
15h
Get Drive Type
16h
Get Floppy Drive Media Change Status
14h
Routines for communicating via the serial port. Used by software programs.
AH
Description
00h
Serial Port Initialization
01h
Transmit Character
02h
Receive Character
03h
Status
15h
Miscellaneous (System services support routines)
AH
AL
AX
Description
4Fh


Keyboard Intercept
83h


Event Wait
84h


Read Joystick
85h


Sysreq Key Callout
86h


Wait
87h


Move Block
88h


Get Extended Memory Size
C0h


Get System Parameters
C1h


Get Extended BIOS Data Area Segment
C2h


Pointing Device Functions
E8h
01h
E801h
Get Extended Memory Size(Newer function, since 1994). Gives results for memory size above 64 Mb.
E8h
20h
E820h
Query System Address Map. The information returned from e820 supersedes what is returned from the older AX=E801h and AH=88h interfaces.
16h
Implemented by the BIOS or operating system. Provides routines to be called by software programs which communicate with the keyboard.
AH
Description
00h
Read Character
01h
Read Input Status
02h
Read Keyboard Shift Status
10h
Read Character Extended
11h
Read Input Status Extended
12h
Read Keyboard Shift Status Extended
17h
Print Services - used by software programs to communicate with the printer
AH
Description
00h
Print Character to Printer
01h
Initialize Printer
02h
Check Printer Status
18h
Execute Cassette BASIC: True IBM computers contain BASIC in the ROM to be interpreted and executed by this routine in the event of a boot failure (called by the BIOS)
19h
After POST this interrupt is used by BIOS to load the operating system.
1Ah
Real Time Clock Services - called by software programs to communicate with the RTC
AH
Description
00h
Read RTC
01h
Set RTC
02h
Read RTC Time
03h
Set RTC Time
04h
Read RTC Date
05h
Set RTC Date
06h
Set RTC Alarm
07h
Reset RTC Alarm
1Bh
Installed by the operating system; automatically called by INT 9 when Ctrl-Break has been pressed
1Ch
Called automatically by INT 08; available for use by software programs when a routine needs to be executed regularly
1Dh
Not to be called; simply a pointer to the VPT (Video Parameter Table), which contains data on video modes
1Eh
Not to be called; simply a pointer to the DPT (Diskette Parameter Table), containing a variety of information concerning the diskette drives
1Fh
Not to be called; simply a pointer to the VGCT (Video Graphics Character Table), which contains the data for ASCII characters 80h to FFh
41h
Address pointer: FDPT = Fixed Disk Parameter Table (1st hard drive)
46h
Address pointer: FDPT = Fixed Disk Parameter Table (2nd hard drive)
4Ah
Called by RTC for alarm
70h
IRQ8: Called by RTC
74h
IRQ12: Called by mouse
75h
IRQ13: Called by math coprocessor
76h
IRQ14: Called by primary IDE controller
77h
IRQ15: Called by secondary IDE controller

DOS hooks

On MS-DOS systems IO.SYS hooks INT 13 for floppy disc change detection, tracking formatting calls, correcting DMA boundary errors, working around problems in IBM's ROM BIOS "01/10/84" with model code 0xFC before the first call. The interrupt vector 0x13 may point to a software hook rather than the BIOS routine. Something which some Bulgarian viruses are known to use against virus monitoring software. 

INT 18h: execute BASIC INT 18h traditionally jumped to an implementation of BASIC stored in ROM. This call would typically be invoked if the BIOS was unable to identify any bootable volumes on startup. (At the time the original IBM PC was released in 1981, the BASIC in ROM was a key feature.) As time went on and BASIC was no longer shipped on all PCs, this interrupt would simply display an error message indicating that no bootable volume was found (famously, "No ROM BASIC", or more self-explanatory messages in later BIOS versions); in other BIOS versions it would prompt the user to insert a bootable volume and press a key, and then after the user did so it would loop back to the bootstrap loader to try booting again.

0 Response to "BIOS interrupt call"