Format Of Bios Data Segment At Segment 40h

Format Of Bios Data Segment At Segment 40h
Format Of Bios Data Segment At Segment 40h
Format of BIOS Data Segment at segment 40h:
{items in curly braces not documented by IBM}
Offset
00h WORD
02h WORD
04h WORD
06h WORD
08h
0Ah
0Ch
0Eh
WORD
WORD
WORD
WORD
10h
WORD
12h
BYTE
13h
15h
16h
WORD
BYTE
BYTE
17h
BYTE
18h
BYTE
Size Description
Base I/O address of 1st serial I/O port, zero if none
Base I/O address of 2nd serial I/O port, zero if none
Base I/O address of 3rd serial I/O port, zero if none
Base I/O address of 4th serial I/O port, zero if none
Note: Above fields filled in turn by POST as it finds serial
ports. POST never leaves gaps. DOS and BIOS serial device
numbers may be redefined by re-assigning these fields.
Base I/O address of 1st parallel I/O port, zero if none
Base I/O address of 2nd parallel I/O port, zero if none
Base I/O address of 3rd parallel I/O port, zero if none
[non-PS] Base I/O address of 4th parallel I/O port, zero if none
[PS] Segment of Extended BIOS Data Segment
Note: Above fields filled in turn by POST as it finds
parallel ports. POST never leaves gaps. DOS and BIOS
parallel device numbers may de redefined by re-assigning
these fields.
Installed hardware:
bits 15-14: number of parallel devices
bit
13: [Conv] Internal modem
bit
12: reserved
bits 11- 9: number of serial devices
bit
8: reserved
bits 7- 6: number of diskette drives minus one
bits 5- 4: Initial video mode:
00b = EGA,VGA,PGA
01b = 40 x 25 color
10b = 80 x 25 color
11b = 80 x 25 mono
bit
3: reserved
bit
2: [PS] =1 if pointing device
[non-PS] reserved
bit
1: =1 if math co-processor
bit
0: =1 if diskette available for boot
[Conv] POST status
[AT] {Manufacturing test initialisation flags}
Base memory size in kbytes (0-640)
[AT] {Manufacturing test scratch pad}
[AT] {Manufacturing test scratch pad}
[PS/2 Mod 30] BIOS control flags
Keyboard status flags 1:
bit 7 =1 INSert active
bit 6 =1 Caps Lock active
bit 5 =1 Num Lock active
bit 4 =1 Scroll Lock active
bit 3 =1 either Alt pressed
bit 2 =1 either Ctrl pressed
bit 1 =1 Left Shift pressed
bit 0 =1 Right Shift pressed
Keyboard status flags 2:
bit 7 =1 INSert pressed
bit 6 =1 Caps Lock pressed
bit 5 =1 Num Lock pressed
bit 4 =1 Scroll Lock pressed
Revised 2000
Page 1 of 9
Format Of Bios Data Segment At Segment 40h
19h
1Ah
1Ch
1Eh
3Eh
3Fh
40h
41h
42h
49h
4Ah
4Ch
4Eh
50h
60h
62h
63h
65h
66h
67h
6Bh
6Ch
70h
71h
72h
bit 3 =1 Pause state active
bit 2 =1 Sys Req pressed
bit 1 =1 Left Alt pressed
bit 0 =1 Left Ctrl pressed
BYTE Keyboard: Alt-nnn keypad workspace
WORD Keyboard: ptr to next character in keyboard buffer
WORD Keyboard: ptr to first free slot in keyboard buffer
16 WORDs
Keyboard circular buffer (but see 80h, 82h for override)
BYTE Diskette recalibrate status:
bit 7 =1 Diskette hardware interrupt occurred
bits 6-4 reserved
bit 3 =1 Recalibrate diskette 3
bit 2 =1 Recalibrate diskette 2
bit 1 =1 Recalibrate diskette 1
bit 0 =1 Recalibrate diskette 0
BYTE Diskette motor status:
bit 7 =1 current operation is write or format
=0 current operation is read or verify
bit 6
reserved
bits 5-4 diskette drive number selected (0-3)
bit 3 =1 diskette 3 motor on
bit 2 =1 diskette 2 motor on
bit 1 =1 diskette 1 motor on
bit 0 =1 diskette 0 motor on
BYTE Diskette motor turn-off time-out count
BYTE Diskette last operation status (0 = OK)
bit 7 =1 drive not ready
bit 6 =1 seek error
bit 5 =1 general controller failure
bits 4-0:
00h no error
01h invalid request
02h address mark not found
03h write-protect error
04h sector not found
06h diskette change line active
08h DMA overrun
09h DMA across 64k boundary
0Ch media type unknown
10h CRC error on read
7 BYTEs
Diskette/Fixed disk status/command bytes
BYTE Video current mode
WORD Video columns on screen
WORD Video page (regen buffer) size in bytes
WORD Video current page start address in regen buffer
16 BYTEs
Video cursor position (col, row) for eight pages, 0 based
WORD Video cursor type, 6845 compatible, hi=startline, lo=endline
BYTE Video current page number
WORD Video CRT controller base address: color=03D4h, mono=03B4h
BYTE Video current setting of mode select register 03D8h/03B8h
BYTE Video current setting of CGA palette register 03D9h
DWORD POST real mode re-entry point after certain resets
BYTE POST last unexpected interrupt
DWORD Timer ticks since midnight
BYTE Timer overflow, non-zero if has counted past midnight
BYTE Ctrl-Break flag: bit 7=1
WORD POST reset flag:
= 1234h if to bypass memory test (warm boot)
Revised 2000
Page 2 of 9
Format Of Bios Data Segment At Segment 40h
74h
75h
76h
77h
78h
7Bh
7Ch
80h
82h
84h
85h
87h
88h
= 4321h [PS/2 MCA only] if to preserve memory
= 5678h [Conv] system suspended
= 9ABCh [Conv] manufacturing test mode
= ABCDh [Conv] POST loop mode
= 64h Burn-in mode
BYTE Fixed disk last operation status: {except ESDI drives}
00h no error
01h invalid function request
02h address mark not found
03h write protect error
04h sector not found
05h reset failed
07h drive parameter activity failed
08h DMA overrun
09h DMA data boundary error
0Ah bad sector flag detected
0Bh bad track detected
0Dh invalid number of sectors for Format
0Eh control data address mark detected
0Fh DMA arbitration level out of range
10h uncorrectable ECC or CRC error
11h ECC corrected data error
20h general controller failed
40h seek failed
80h time out
AAh drive not ready
BBh undefined error
CCh write fault on selected drive
E0h status error/error register is zero
FFh sense failed
BYTE Fixed disk: number of fixed disk drives
BYTE Fixed disk: control byte
{IBM document only for XT}
BYTE Fixed disk: I/O port offset {IBM document only for XT}
3 BYTEs
Parallel devices 1-3 time-out counters
BYTE parallel device 4 time-out counter [non-PS]
bit 5 set if Virtual DMA Spec supported [PS] (see INT 4B)
4 BYTEs
Serial devices 1-4 time-out counters
WORD Keyboard buffer start as offset from segment 40h (normally 1Eh)
WORD Keyboard buffer end+1 as offset from segment 40h (normally 3Eh)
[XT BIOS dated 11/08/82 ends here]
BYTE Video EGA/MCGA/VGA rows on screen minus one
WORD Video EGA/MCGA/VGA character height in scan-lines
BYTE Video EGA/VGA control: [MCGA: =00h]
bit 7: =1 if not to clear RAM (see INT 10h, AH=00h)
bits 6-5: RAM on adapter = (this field + 1) * 64K
bit 4: reserved
bit 3: =0 if EGA/VGA video system active, =1 if inactive
bit 2: =1 if to wait for display enable (what means this?)
bit 1: =0 for color or ECD monitor, =1 for mono monitor
bit 0: =0 alphanumeric cursor emulation enabled, =1 not.
When enabled, text mode cursor size (INT 10,AH=01h)
settings looking like CGA ones are translated to
equivalent EGA/VGA ones.
BYTE Video EGA/VGA switches: [MCGA: reserved]
bits 7-4: power-on state of feature connector bits 3-0
bits 3-0: configuration switches 4-1 (=0 on, =1 off)
Values as read:
0h Pri MDA,
Sec EGA+old color display 40 x 25
Revised 2000
Page 3 of 9
Format Of Bios Data Segment At Segment 40h
89h
BYTE
8Ah
8Bh
BYTE
BYTE
8Ch
8Dh
8Eh
8Fh
BYTE
BYTE
BYTE
BYTE
1h Pri MDA,
Sec EGA+old color display 80 x 25
2h Pri MDA,
Sec EGA+ECD normal mode (CGA emul)
3h Pri MDA,
Sec EGA+ECD enhanced mode
4h Pri CGA 40 x 25, Sec EGA mono display
5h Pri CGA 80 x 25, Sec EGA mono display
6h Pri EGA+old color display 40 x 25, Sec MDA
7h Pri EGA+old color display 80 x 25, Sec MDA
8h Pri EGA+ECD normal mode (CGA emul), Sec MDA
9h Pri EGA+ECD enhanced mode,
Sec MDA
Ah Pri EGA mono display,
Sec CGA 40 x 25
Bh Pri EGA mono display,
Sec CGA 80 x 25
When bit4 of 40h:89h is 0, VGA emulates 350-line EGA if
this byte is x3h or x9h, otherwise emulates 200-line CGA in
400-line double scan. VGA resets this byte to x9h after the
mode set.
Video MCGA/VGA mode-set option control:
bits 7 and 4:
0 0 350-line mode requested
0 1 400-line mode at next mode set
1 0 200-line mode requested
1 1 reserved
Apparently VGA BIOS mode set disregards bit 7 and uses
byte 40h:88h to determine 200/350 selection when bit 4
is zero. Presumably bit 7 is a convenience for other
purposes. Bit 7 is reset to zero after the mode set.
bit 6: =1 if display switching enabled, =0 if disabled
bit 5: reserved
bit 4: [VGA] =1 if to use 400-line mode at next mode set
=0 if to emulate EGA at next mode set
This bit set to 1 after the mode set.
[MCGA] =1 use 400-line mode at next mode set
=0 emulate CGA, digital monitor, 200 lines,
8 x 8 text font at next mode set
Bit unchanged by mode set.
bit 3: =0 if default palette loading enabled at mode set
bit 2: =1 if mono display, =0 if color display
bit 1: =1 if gray scale summing enabled, =0 if disabled
bit 0: [VGA] =1 if VGA active, =0 if not
[MCGA] reserved, zero
Video [MCGA/VGA]: index into Display Combination Code table
Diskette media control [not XT]:
bits 7-6: Last data rate set by controller:
00=500kbps, 01=300kbps, 10=250kbps, 11=reserved
bits 5-4: Last diskette drive step rate selected
bits 3-2: {Data rate at start of operation}
bits 1-0: reserved
Fixed disk controller status [not XT]
Fixed disk controller Error Status [not XT]
Fixed disk Interrupt Control [not XT]
Diskette controller information [not XT]:
bit 7: reserved
bit 6: =1 drive 1 determined
bit 5: =1 drive 1 is multi-rate, valid if drive determined
bit 4: =1 drive 1 supports 80 tracks, always valid
bit 3: reserved
bit 2: =1 drive 0 determined
bit 1: =1 drive 0 is multi-rate, valid if drive determined
bit 0: =1 drive 0 supports 80 tracks, always valid
Revised 2000
Page 4 of 9
Format Of Bios Data Segment At Segment 40h
90h
91h
BYTE
BYTE
Diskette
Diskette
bits
bit
bit
bit
bits
drive 0 media state
drive 1 media state
7-6: Data rate: 00=500kbps, 01=300kbps, 10=250kbps
5: =1 if double stepping reqd (e.g. 360kB in 1.2MB)
4: =1 if media established
3: reserved
2-0: on exit from BIOS, contain:
000 trying 360kB in 360kB
001 trying 360kB in 1.2MB
010 trying 1.2MB in 1.2MB
011 360kB in 360kB established
100 360kB in 1.2MB established
101 1.2MB in 1.2MB established
110 reserved
111 all other formats/drives
92h BYTE Diskette drive 0 media state at start of operation
93h BYTE Diskette drive 1 media state at start of operation
94h BYTE Diskette drive 0 current track number
95h BYTE Diskette drive 1 current track number
96h BYTE Keyboard status byte 3
bit 7 =1 read-ID in progress
bit 6 =1 last code read was first of two ID codes
bit 5 =1 force Num Lock if read-ID and enhanced keyboard
bit 4 =1 enhanced keyboard installed
bit 3 =1 Right Alt pressed
bit 2 =1 Right Ctrl pressed
bit 1 =1 last code read was E0h
bit 1 =1 last code read was E1h
97h BYTE Keyboard status byte 2
bit 7 =1 keyboard transmit error flag
bit 6 =1 LED update in progress
bit 5 =1 RESEND received from keyboard
bit 4 =1 ACK received from keyboard
bit 3 reserved, must be zero
bit 2 Caps Lock LED
bit 1 Num Lock LED
bit 0 Scroll Lock LED
98h DWORD Timer2: [AT, PS exc Mod 30] ptr to user wait-complete flag
(see INT 15, AX=8300h)
9Ch DWORD Timer2: [AT, PS exc Mod 30] user wait count in microseconds
A0h BYTE Timer2: [AT, PS exc Mod 30] Wait active flag:
bit 7 =1 wait time elapsed
bits 6-1 reserved
bit 0 =1 INT 15h, AH=86h has occurred
A1h 7 BYTEs
reserved for network adapters (oh really?)
A4h DWORD [PS/2 Mod 30] Saved Fixed Disk Interrupt Vector
A8h DWORD Video: EGA/MCGA/VGA ptr to Video Save Pointer Table (see below)
ACh-AFh
reserved
B0h DWORD ptr to 3363 Optical disk driver or BIOS entry point.
When 3363 BIOS present, the signature "OPTIC ",00h occurs 3
bytes beyond this entry point.
When 3363 BIOS and 3363 File System Driver present, the
signature "FILE SYSTEM DRIVER",00h occurs 3 bytes beyond
this entry point.
B4h WORD reserved
B6h 3 BYTEs
reserved for POST?
B9h 7 BYTEs
???
C0h 14 BYTEs
reserved
Revised 2000
Page 5 of 9
Format Of Bios Data Segment At Segment 40h
CEh WORD
D0h-EFh
F0h-FFh
100h BYTE
count of days since last boot?
reserved
reserved for user
Print Screen Status byte
Format of Extended BIOS Data Area (see 40:0Eh for ptr) [PS only]
Offset
Size Description
00h BYTE Length of EBDA in kilobytes
01h 15 BYTEs
reserved
17h BYTE Number of entries in POST error log (0-5)
18h 5 WORDs
POST error log (each word is a POST error number)
19h-21h
reserved
22h DWORD Pointing Device Driver entry point
26h BYTE Pointing Device Flags 1
bit 7:
=1 command in progress
bit 6:
=1 resend
bit 5:
=1 acknowledge
bit 4:
=1 error
bit 3:
=0 reserved
bits 2-0: index count
27h BYTE Pointing Device Flags 2
bit 7:
=1 device driver far call flag
bits 6-3: reserved
bits 2-0: package size
28h 7 BYTEs
Pointing Device Auxiliary Device Data
2Fh BYTE reserved
30h DWORD Vector for INT 07h stored here during 80387 interrupt
34h DWORD Vector for INT 01h stored here during INT 07h emulation
38h BYTE Scratchpad for 80287/80387 interrupt code
39h WORD Timer3: Watchdog timer initial count
3Bh BYTE ??? seen non-zero on Model 30
3Ch BYTE ???
3Dh 16 BYTEs
Fixed Disk parameter table for drive 0 (oh really?)
4Dh 16 BYTEs
Fixed Disk parameter table for drive 1 (oh really?)
Neither of above seen on any Model 30, 50, 60 yet.
5Dh-6Bh
???
6Ch BYTE Fixed disk: (=FFh on ESDI systems)
bits 7-4: Channel number 00-0Fh
bits 3-0: DMA arbitration level 00-0Eh
6Dh and up:
??? seen non-zero on Model 60
3F0h BYTE Fixed disk buffer (???!!!)
Format of Video Save Pointer Table [EGA/VGA/MCGA only]:
Offset
Size Description
00h DWORD ptr to Video Parameter Table
04h DWORD ptr to Parameter Dynamic Save Area, else 0 [EGA/VGA only]
08h DWORD ptr to Alphanumeric Character Set Override, else 0
0Ch DWORD ptr to Graphics Character Set Override, else 0
10h DWORD [VGA only] ptr to Secondary Save Pointer Table, must be valid
14h DWORD reserved, zero
18h DWORD reserved, zero
Note: table initially in ROM, copy to RAM to alter, then update 40h:A8h.
Format of Secondary Video Save Pointer Table [VGA only]:
Offset
Size Description
00h WORD Length of this table in bytes, including this word (1Ah)
02h DWORD ptr to Display Combination Code Table, must be valid
06h DWORD ptr to second Alphanumeric Character Set Override, else 0
Revised 2000
Page 6 of 9
Format Of Bios Data Segment At Segment 40h
0Ah
0Eh
12h
16h
Note:
DWORD
DWORD
DWORD
DWORD
table
ptr to User Palette Profile Table, else 0
reserved, zero
reserved, zero
reserved, zero
initially in ROM, copy to RAM to alter, then alter Save Ptr Table.
Format of Video Parameter Table [EGA, VGA only]:
An array of 23 [EGA] or 29 [VGA] elements, each element being 64 bytes long.
Elements appear in the order:
00h-03h
Modes 00h-03h in 200-line CGA emulation mode
04h-0Eh
Modes 04h-0Eh
0Fh-10h
Modes 0Fh-10h when only 64kB RAM on adapter
11h-12h
Modes 0Fh-10h when >64kB RAM on adapter
13h-16h
Modes 00h-03h in 350-line mode
17h
VGA Modes 00h or 01h in 400-line mode
18h
VGA Modes 02h or 03h in 400-line mode
19h
VGA Mode 07h in 400-line mode
1Ah-1Ch
VGA Modes 11h-13h
Format of Video Parameter Table element [EGA, VGA only]:
Offset
Size Description
00h BYTE Columns on screen
(see 40h:4Ah)
01h BYTE Rows on screen minus one
(see 40h:84h)
02h BYTE Height of character in scan lines (see 40h:85h)
03h WORD Size of video buffer
(see 40h:4Ch)
05h 4 BYTEs
Values for Sequencer Registers 1-4
09h BYTE Value for Miscellaneous Output Register
0Ah 25 BYTEs
Values for CRTC Registers 00h-18h
23h 20 BYTEs
Values for Attribute Controller Registers 00h-13h
37h 9 BYTEs
Values for Graphics Controller Registers 00h-08h
Format of Video Parameter Table [MCGA only] {guesswork from inspection}:
- 16 triplet BYTEs of R,G,B DAC info for 16 colors;
- An array of 11 elements, each element being 32 bytes long.
Elements appear in the order:
Modes 00h,01h in 200-line mode for digital displays
Modes 00h,01h in 400-line mode for analog displays
Modes 02h,03h in 200-line mode for digital displays
Modes 02h,03h in 400-line mode for analog displays
Modes 04h,05h in 200-line mode for digital displays
Modes 04h,05h in 400-line mode for analog displays
Mode 06h in 200-line mode for digital displays
Mode 06h in 400-line mode for analog displays
Mode 11h
Mode 13h in 200-line mode for digital displays
Mode 13h in 400-line mode for analog displays
Format of Video Parameter Table element [MCGA only]:
Offset
Size Description
00h BYTE Columns on screen
(see 40h:4Ah)
01h BYTE Rows on screen minus one
(see 40h:84h)
02h BYTE Height of character in scan lines (see 40h:85h)
03h WORD Size of video buffer
(see 40h:4Ch)
05h WORD ??? always zero
07h 21 BYTEs
Video data registers 00h-14h to port 3D5h indexed by 3D4h
1Ch BYTE PEL Mask to port 3C6h
1Dh BYTE CGA Mode Control to port 3D8h
1Eh BYTE CGA Border Control to port 3D9h
Revised 2000
Page 7 of 9
Format Of Bios Data Segment At Segment 40h
1Fh
BYTE
Extended Mode Control to port 3DDh
Format of Video Parameter Dynamic Save Area [EGA, VGA only]:
Offset
Size Description
00h 16 BYTEs
Last data written to Attribute Controller Palette Registers 0-15
10h BYTE Last data written to Attribute Controller Overscan Register
11h-FFh
Reserved
Note: Need for table was that EGA registers were write-only.
Note: If default values (from the Video Parameter Table) are
over-ridden at a mode set by the VGA User Palette Profile
Table, then the Dynamic Save Area is updated with the
default values, not the User Profile ones.
Format of Alphanumeric Character Set Override:
Offset
Size Description
00h BYTE Length in bytes of each character in font table
01h BYTE Character generator RAM bank to load, 0=normal
02h WORD Number of characters in font table, normally 256
04h WORD Code of first character in font table, normally 0
06h DWORD ptr to font table
0Ah BYTE Displayable rows (FFh=use maximum calculated value)
0Bh BYTEs Array of mode values to which this font is to pertain
BYTE FFh end of array
Format of Second Alphanumeric Character Set Override:
Authorities differ, some say same as first override above, but IBM say:
Offset
Size Description
00h BYTE Length in bytes of each character in font table
01h BYTE Character generator RAM bank to load, normally non-zero
02h BYTE reserved
03h DWORD ptr to font table
07h BYTEs Array of mode values to which this font is to pertain
BYTE FFh end of array
Format of Graphics Character Set Override:
Offset
Size Description
00h BYTE Number of displayable character rows
01h WORD Length in bytes of each character in font table
03h DWORD ptr to font table
07h BYTEs Array of mode values to which this font is to pertain
BYTE FFh end of array
Format of Display Combination Code Table [VGA only]:
Offset
Size Description
00h BYTE Number of entries in the DCC table at offset 04h
01h BYTE Version number
02h BYTE Maximum display type code that can appear in DCC table
03h BYTE reserved
04h ARRAY OF 2 BYTEs Each pair of bytes gives a valid display combination
Meaning of each byte:
00h
no display
01h
MDA with mono display
02h
CGA with color display
03h
reserved
04h
EGA with color display
05h
EGA with mono display
06h
Professional Graphics Controller
07h
VGA with mono display
Revised 2000
Page 8 of 9
Format Of Bios Data Segment At Segment 40h
08h
09h
0Ah
0Bh
0Ch
FFh
VGA with color display
reserved
MCGA with digital color display
MCGA with analog mono display
MCGA with analog color display
unrecognised video system
Format of User Palette Profile Table [VGA only]:
Offset
Size Description
00h BYTE Underlining: 01h=enable in all alphanumeric modes
00h=enable in monochrome alphanumeric modes only
FFh=disable in all alphanumeric modes
01h BYTE reserved
02h WORD reserved
04h WORD Number (0-17) of Attribute Controller registers in table
06h WORD Index (0-16) of first Attribute Controller register in table
08h DWORD ptr to table of Attribute Controller registers to override
Table is an array of BYTEs.
0Ch WORD Number (0-256) of video DAC Color registers in table
0Eh WORD Index (0-255) of first video DAC Color register in table
10h DWORD ptr to table of video DAC Color registers to override
Table is ??? triplets ??? of BYTEs???
14h BYTEs array of mode values to which this profile is to pertain
BYTE FFh end of array
Revised 2000
Page 9 of 9
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement