| Offset
Hex |
Offset
Dec |
BIOS
Service |
Field
Size |
Function |
| 00h |
0 |
Int
14h |
2
bytes |
Base
I/O address for serial port 1 (communications port 1 - COM 1) |
| 02h |
2 |
Int
14h |
2
bytes |
Base
I/O address for serial port 2 (communications port 2 - COM 2) |
| 04h |
4 |
Int
14h |
2
bytes |
Base
I/O address for serial port 3 (communications port 3 - COM 3) |
| 06h |
6 |
Int
14h |
2
bytes |
Base
I/O address for serial port 4 (communications port 4 - COM 4) |
| 08h |
8 |
Int
17h |
2
bytes |
Base
I/O address for parallel port 1 (printer port 1 - LPT 1) |
| 0Ah |
10 |
Int
17h |
2
bytes |
Base
I/O address for parallel port 2 (printer port 2 - LPT 2) |
| 0Ch |
12 |
Int
17h |
2
bytes |
Base
I/O address for parallel port 3 (printer port 3 - LPT 3) |
| 0Eh |
14 |
POST |
2
bytes |
Base
I/O address for parallel port 4 (printer port 4 - LPT 4) (Only found
in PC/XT systems) |
| 10h |
16 |
Int
11h |
2
bytes |
Equipment
Word |
| |
|
|
|
Bits
15-14 indicate the number of
parallel ports installed |
| |
|
|
|
00b = 1 parallel
port |
| |
|
|
|
01b = 2 parallel
ports |
| |
|
|
|
03b = 3 parallel
ports |
| |
|
|
|
Bits
13-12 are reserved |
| |
|
|
|
Bits
11-9 indicate the number of
serial ports installed |
| |
|
|
|
000b = none |
| |
|
|
|
001b = 1
serial port |
| |
|
|
|
002b = 2
serial ports |
| |
|
|
|
003b = 3
serial ports |
| |
|
|
|
004b = 4
serial ports |
| |
|
|
|
Bit
8 is reserved |
| |
|
|
|
Bit
7-6 indicate the number of floppy
drives installed |
| |
|
|
|
0b = 1 floppy
drive |
| |
|
|
|
1b = 2 floppy
drives |
| |
|
|
|
Bits
5-4 indicate the video mode |
| |
|
|
|
00b = EGA
or later |
| |
|
|
|
01b = color
40x25 |
| |
|
|
|
10b = color
80x25 |
| |
|
|
|
11b = monochrome
80x25 |
| |
|
|
|
Bit
3 is reserved |
| |
|
|
|
Bit
2 indicates if a PS/2 mouse
is installed |
| |
|
|
|
0b = not
installed |
| |
|
|
|
1b = installed |
| |
|
|
|
Bit
1 indicated if a math coprocessor
is installed |
| |
|
|
|
0b = not
installed |
| |
|
|
|
1b = installed |
| |
|
|
|
Bit
0 indicated if a boot floppy
is installed |
| |
|
|
|
0b = not
installed |
| |
|
|
|
1b = installed |
| 12h |
18 |
POST |
1
byte |
Interrupt
flag - Manufacturing test |
| 13h |
19 |
Int
12h |
2
bytes |
Memory
size in Kb |
| 15h |
21 |
|
2
bytes |
Error
codes for AT+; Adapter memory size for PC and XT |
| 17h |
22 |
Int
16h |
1
byte |
Keyboard
shift flags 1 |
| |
|
|
|
Bit
7 indicates if Insert is on
or off |
| |
|
|
|
0b = Insert
off |
| |
|
|
|
1b = Insert
on |
| |
|
|
|
Bit
6 indicates if CapsLock is on
or off |
| |
|
|
|
0b = CapsLock
off |
| |
|
|
|
1b - CapsLock
on |
| |
|
|
|
Bit
5 indicates if NumLock is on
or off |
| |
|
|
|
0b = NumLock
off |
| |
|
|
|
1b = NumLock
on |
| |
|
|
|
Bit
4 indicates if ScrollLock is
on or off |
| |
|
|
|
0b = ScrollLock
off |
| |
|
|
|
1b = ScrollLock
on |
| |
|
|
|
Bit
3 indicates if the Alt key is
up or down |
| |
|
|
|
0b = Alt
key is up |
| |
|
|
|
1b = Alt
key is down |
| |
|
|
|
Bit
2 indicates if the Control key
is up or down |
| |
|
|
|
0b = Control
key is up |
| |
|
|
|
1b = Control
key is down |
| |
|
|
|
Bit
1 indicates if the Left Shift
key is up or down |
| |
|
|
|
0b = Left
Shift key is up |
| |
|
|
|
1b = Left
Shift key is down |
| |
|
|
|
Bit
0 indicates if the Right Shift
key is up or down |
| |
|
|
|
0b = Right
Shift key is up |
| |
|
|
|
1b = Right
Shift key is down |
| 18h |
23 |
Int
16h |
1
byte |
Keyboard
shift flags 2 |
| |
|
|
|
Bit
7 indicates if the Insert key
is up or down |
| |
|
|
|
0b = Insert
key is up |
| |
|
|
|
1b = Insert
key is down |
| |
|
|
|
Bit
6 indicates if the CapsLock
key is up or down |
| |
|
|
|
0b = CapsLock
is key is up |
| |
|
|
|
1b = CapsLock
key is down |
| |
|
|
|
Bit
5 indicates if the NumLock key
is up or down |
| |
|
|
|
0b = NumLock
key is up |
| |
|
|
|
1b = Numlock
key is down |
| |
|
|
|
Bit
4 indicates if the ScrollLock
key is up or down |
| |
|
|
|
0b = ScrollLock
key is up |
| |
|
|
|
1b = ScrollLock
key is down |
| |
|
|
|
Bit
3 indicates if the Pause key
is active or inactive |
| |
|
|
|
0b = pause
key is inactive |
| |
|
|
|
1b = Pause
key is active |
| |
|
|
|
Bit
2 indicates if the SysReg key
is up or down |
| |
|
|
|
0b = SysReg
key is up |
| |
|
|
|
1b = SysReg
key is down |
| |
|
|
|
Bit
1 indicates if the Left Alt
key is up or down |
| |
|
|
|
0b = Left
Alt key is up |
| |
|
|
|
1b = Left
Alt key is down |
| |
|
|
|
Bit
0 indicates if the Right Alt
key is up or down |
| |
|
|
|
0b = Right
Alt key is up |
| |
|
|
|
1b = Right
Alt key is down |
| 19h |
24 |
Int
09h |
1
byte |
Alt
Numpad work area |
| 1Ah |
26 |
Int
16h |
2
bytes |
Pointer
to the address of the next character in the keyboard buffer |
| 1Ch |
28 |
Int
16h |
2
bytes |
Pointer
to the address of the last character in he keyboard buffer |
| 1Eh |
60 |
Int
16h |
32
bytes |
Keyboard
buffer |
| 3Eh |
61 |
Int
13h |
1
byte |
Floppy
disk drive calibration status |
| |
|
|
|
Bits
7-4 are reserved |
| |
|
|
|
Bit
3 = floppy drive 3 (PC, XT) |
| |
|
|
|
Bit
2 = floppy drive 2 (PC, XT) |
| |
|
|
|
Bit
1 = floppy drive 1 |
| |
|
|
|
Bit
0 = floppy drive 0 |
| |
|
|
|
0b indicates
not calibrated |
| |
|
|
|
1b indicates
calibrated |
| 3Fh |
62 |
Int
13h |
1
byte |
Floppy
disk drive motor status |
| |
|
|
|
Bit
7 indicates current operation
|
| |
|
|
|
0b = read
or verify operation |
| |
|
|
|
1b = write
or format operation |
| |
|
|
|
Bit
6 is not used |
| |
|
|
|
Bit
5-4 indicates drive select |
| |
|
|
|
00b = Drive
0 |
| |
|
|
|
01b = Drive
1 |
| |
|
|
|
10b = Drive
2 (PC, XT) |
| |
|
|
|
11b = Drive
4 (PC, XT) |
| |
|
|
|
Bit
3 indicates drive 3 motor |
| |
|
|
|
0b = motor
off |
| |
|
|
|
1b = motor
on |
| |
|
|
|
Bit
2 indicates drive 2 motor |
| |
|
|
|
0b = motor
off |
| |
|
|
|
1b = motor
on |
| |
|
|
|
Bit
1 indicates drive 0 motor |
| |
|
|
|
0b = motor
off |
| |
|
|
|
1b = motor
on |
| |
|
|
|
0b = motor
off |
| |
|
|
|
1b = motor
on |
| 40h |
63 |
Int
13h |
1
byte |
Floppy
disk drive motor time-out |
| 41h |
64 |
Int
13h |
1
byte |
Floppy
disk drive status |
| |
|
|
|
Bit
7 indicates drive ready status |
| |
|
|
|
0b = drive
ready |
| |
|
|
|
1b = drive
not ready (time out) |
| |
|
|
|
Bit
6 indicates seek status |
| |
|
|
|
0b = no seek
error detected |
| |
|
|
|
1b = indicates
a seek error was detected |
| |
|
|
|
Bit
5 indicates floppy disk controller
test |
| |
|
|
|
0b = floppy
disk controller passed |
| |
|
|
|
1b = floppy
disk controller failed |
| |
|
|
|
Bit
4-0 error codes |
| |
|
|
|
00000b =
no errors |
| |
|
|
|
00001b =
illegal function requested |
| |
|
|
|
00010b =
address mark not found |
| |
|
|
|
00011b =
write protect error |
| |
|
|
|
00100b =
sector not found |
| |
|
|
|
00110b =
diskette change line active |
| |
|
|
|
01000b =
DMA overrun |
| |
|
|
|
01001b =
DMA boundary error |
| |
|
|
|
01100b =
unknown media type |
| |
|
|
|
10000b =
CRC error during read |
| 42h |
65 |
Int
13h |
1
byte |
Hard
disk and floppy controller status register 0 |
| |
|
|
|
Bit
7-6 indicate the interrupt code |
| |
|
|
|
00b = command
completed normally |
| |
|
|
|
01b = command
terminated abnormally |
| |
|
|
|
10b = abnormal
termination, ready line on, or diskette changed |
| |
|
|
|
11b = seek
command not completed |
| |
|
|
|
Bit
5 indicated seek command |
| |
|
|
|
0b = seek
command not completed |
| |
|
|
|
1b = seek
command completed |
| |
|
|
|
Bit
4 indicated drive fault |
| |
|
|
|
0b = no drive
fault |
| |
|
|
|
1b = drive
fault |
| |
|
|
|
Bit
3 indicates drive ready |
| |
|
|
|
0b = drive
ready |
| |
|
|
|
1b = drive
not ready |
| |
|
|
|
Bit
2 indicates head state when
interrupt occurred |
| |
|
|
|
00b = drive
0 |
| |
|
|
|
01b = drive
1 |
| |
|
|
|
10b = drive
2 (PC, XT) |
| |
|
|
|
11b = drive
3 (PC, XT) |
| |
|
|
|
Bit
1-0 indicates drive select |
| |
|
|
|
00b = drive
0 |
| |
|
|
|
01b = drive
1 |
| |
|
|
|
10b = drive
2 (PC, XT) |
| |
|
|
|
11b = drive
3 (PC, XT) |
| 43h |
66 |
Int
13h |
1
byte |
Floppy
drive controller status register 1 |
| |
|
|
|
Bit
7-0 indicates no error |
| |
|
|
|
Bit
7, 1b = indicates attempted
access beyond last cylinder |
| |
|
|
|
Bit
6, 0b = not used |
| |
|
|
|
Bit
5, 1b = CRC error during read |
| |
|
|
|
Bit
4, 1b = DMA overrun |
| |
|
|
|
Bit
3, 0b = not used |
| |
|
|
|
Bit
2, 1b = Sector not found or
reading diskette ID failed |
| |
|
|
|
Bit
1, 1b = medium write protected |
| |
|
|
|
Bit
0, 1b = missing address mark |
| 44h |
67 |
Int
13h |
1
byte |
Floppy
drive controller status register 2 |
| |
|
|
|
Bit
7, 0b = not used |
| |
|
|
|
Bit
6, 1b = deleted data address
mark |
| |
|
|
|
Bit
5, 1b = CRC error detected |
| |
|
|
|
Bit
4, 1b = wrong cylinder |
| |
|
|
|
Bit
3, 1b = condition of equal during
verify |
| |
|
|
|
Bit
2, 1b = sector not found during
verify |
| |
|
|
|
Bit
1, 1b = bad cylinder |
| |
|
|
|
Bit
0, 1b = address mark not found
during read |
| 45h |
68 |
Int
13h |
1
byte |
Floppy
disk controller: cylinder number |
| 46h |
69 |
Int
13h |
1
byte |
Floppy
disk controller: head number |
| 47h |
70 |
Int
13h |
1
byte |
Floppy
disk controller: sector number |
| 48h |
71 |
|
1
byte |
Floppy
disk controller: number of byte written |
| 49h |
72 |
Int
10h |
1
byte |
Active
video mode setting |
| 4Ah |
74 |
Int
10h |
2
bytes |
Number
of textcolumns per row for the active video mode |
| 4Ch |
76 |
Int
10h |
2
bytes |
Size
of active video in page bytes |
| 4Eh |
78 |
Int
10h |
2
bytes |
Offset
address of the active video page relative to the start of video
RAM |
| 50h |
80 |
Int
10h |
2
bytes |
Cursor
position for video page 0 |
| 52h |
82 |
Int
10h |
2
bytes |
Cursor
position for video page 1 |
| 54h |
84 |
Int
10h |
2
bytes |
Cursor
position for video page 2 |
| 56h |
86 |
Int
10h |
2
bytes |
Cursor
position for video page 3 |
| 58h |
88 |
Int
10h |
2
bytes |
Cursor
position for video page 4 |
| 5Ah |
90 |
Int
10h |
2
bytes |
Cursor
position for video page 5 |
| 5Ch |
92 |
Int
10h |
2
bytes |
Cursor
position for video page 6 |
| 5Eh |
94 |
Int
10h |
2
bytes |
Cursor
position for video page 7 |
| 60h |
96 |
Int
10h |
2
bytes |
Cursor
shape |
| 62h |
97 |
Int
10h |
1
byte |
Active
video page |
| 63h |
99 |
Int
10h |
2
bytes |
I/O
port address for the video display adapter |
| 65h |
100 |
Int
10h |
1
byte |
Video
display adapter internal mode register |
| |
|
|
|
Bit
7, 0b = not used |
| |
|
|
|
Bit
6, 0b = not used |
| |
|
|
|
Bit
5 |
| |
|
|
|
0b = attribute
bit controls background intensity |
| |
|
|
|
1b = attribute
bit controls blinking |
| |
|
|
|
Bit
4, 1b = mode 6 graphics operation |
| |
|
|
|
Bit
3 indicates video signal |
| |
|
|
|
0b = video
signal disabled |
| |
|
|
|
1b = video
signal enabled |
| |
|
|
|
Bit
2 indicates color operation |
| |
|
|
|
0b = color
operation |
| |
|
|
|
1b = monochrome
operation |
| |
|
|
|
Bit
1, 1b = mode 4/5 graphics operation |
| |
|
|
|
Bit
0, 1b = mode 2/3 test operation |
| 66h |
101 |
Int
10h |
1
byte |
Color
palette |
| |
|
|
|
Bit
7, 0b = not used |
| |
|
|
|
Bit
6, 0b = not used |
| |
|
|
|
Bit
5 indicates mode 5 foreground
colors |
| |
|
|
|
0b = green/red/yellow |
| |
|
|
|
1b = cyan/magenta/white |
| |
|
|
|
Bit
4 indicates background color |
| |
|
|
|
0b = normal
background color |
| |
|
|
|
1b = intensified
background color |
| |
|
|
|
Bit
3 indicates intensified border
color (mode 2) and background color (mode 5) |
| |
|
|
|
Bit
2 indicates red |
| |
|
|
|
Bit
1 indicates green |
| |
|
|
|
Bit
0 indicates blue |
| 67h |
103 |
|
2
bytes |
Adapter
ROM offset address |
| 69h |
106 |
|
2
bytes |
Adapter
ROM segment address |
| 6Bh |
107 |
|
1
byte |
Last
interrupt (not PC) |
| |
|
|
|
Bit
7 indicates IRQ 7 hardware interrupt |
| |
|
|
|
0b = did
not occur |
| |
|
|
|
01 = did
occur |
| |
|
|
|
Bit
6 |