posts - 116,  comments - 123,  trackbacks - 0
	Address Size	   Description
00:00 256dwords Interrupt vector table
30:00 256bytes	Stack area used during post and bootstrap
40:00	word	COM1 port address
40:02	word	COM2 port address
40:04	word	COM3 port address
40:06	word	COM4 port address
40:08	word	LPT1 port address
40:0A	word	LPT2 port address
40:0C	word	LPT3 port address
40:0E	word	LPT4 port address (except PS/2)
Extended BIOS Data Area segment (PS/2, see EBDA)
40:10  2 bytes	Equipment list flags (see INT 11)
|7|6|5|4|3|2|1|0| 40:10 (value in INT 11 register AL)
| | | | | | | `- IPL diskette installed
| | | | | | `-- math coprocessor
| | | | |-+-- old PC system board RAM < 256K
| | | | | `-- pointing device installed (PS/2)
| | | | `--- not used on PS/2
| | `------ initial video mode
`--------- # of diskette drives, less 1
|7|6|5|4|3|2|1|0| 40:11  (value in INT 11 register AH)
| | | | | | | `- 0 if DMA installed
| | | | `------ number of serial ports
| | | `------- game adapter
| | `-------- not used, internal modem (PS/2)
`----------- number of printer ports
40:12	byte	PCjr: infrared keyboard link error count
40:13	word	Memory size in Kbytes  (see INT 12)
40:15	byte	Reserved
40:16	byte	PS/2 BIOS control flags
40:17	byte	Keyboard flag byte 0 (see KB FLAGS)
|7|6|5|4|3|2|1|0| keyboard flag byte 0
| | | | | | | `--- right shift key depressed
| | | | | | `---- left shift key depressed
| | | | | `----- CTRL key depressed
| | | | `------ ALT key depressed
| | | `------- scroll-lock is active
| | `-------- num-lock is active
| `--------- caps-lock is active
`---------- insert is active
40:18	byte	Keyboard flag byte 1 (see KB FLAGS)
|7|6|5|4|3|2|1|0| keyboard flag byte
| | | | | | | `--- left CTRL key depressed
| | | | | | `---- left ALT key depressed
| | | | | `----- system key depressed and held
| | | | `------ suspend key has been toggled
| | | `------- scroll lock key is depressed
| | `-------- num-lock key is depressed
| `--------- caps-lock key is depressed
`---------- insert key is depressed
40:19	byte	Storage for alternate keypad entry
40:1A	word	Offset from 40:00 to keyboard buffer head
40:1C	word	Offset from 40:00 to keyboard buffer tail
40:1E  32bytes	Keyboard buffer (circular queue buffer)
40:3E	byte	Drive recalibration status
|7|6|5|4|3|2|1|0| drive recalibration status
| | | | | | | `-- 1=recalibrate drive 0
| | | | | | `--- 1=recalibrate drive 1
| | | | | `---- 1=recalibrate drive 2
| | | | `----- 1=recalibrate drive 3
| `---------- unused
`----------- 1=working interrupt flag
40:3F	byte	Diskette motor status
|7|6|5|4|3|2|1|0| diskette motor status
| | | | | | | `-- 1=drive 0 motor on
| | | | | | `--- 1=drive 1 motor on
| | | | | `---- 1=drive 2 motor on
| | | | `----- 1=drive 3 motor on
| `---------- unused
`----------- 1=write operation
40:40	byte	Motor shutoff counter (decremented by INT 8)
40:41	byte	Status of last diskette operation (see INT 13,1)
|7|6|5|4|3|2|1|0| status of last diskette operation
| | | | | | | `--- invalid diskette command
| | | | | | `---- diskette address mark not found
| | | | | `----- sector not found
| | | | `------ diskette DMA error
| | | `------- CRC check / data error
| | `-------- diskette controller failure
| `--------- seek to track failed
`---------- diskette time-out
40:42  7 bytes	NEC diskette controller status (see FDC)
40:49	byte	Current video mode  (see VIDEO MODE)
40:4A	word	Number of screen columns
40:4C	word	Size of current video regen buffer in bytes
40:4E	word	Offset of current video page in video regen buffer
40:50  8 words	Cursor position of pages 1-8, high order byte=row
low order byte=column; changing this data isn't
reflected immediately on the display
40:60	byte	Cursor ending (bottom) scan line (don't modify)
40:61	byte	Cursor starting (top) scan line (don't modify)
40:62	byte	Active display page number
40:63	word	Base port address for active 6845 CRT controller
3B4h = mono, 3D4h = color
40:65	byte	6845 CRT mode control register value (port 3x8h)
EGA/VGA values emulate those of the MDA/CGA
40:66	byte	CGA current color palette mask setting (port 3d9h)
EGA and VGA values emulate the CGA
40:67	dword	CS:IP for 286 return from protected mode
dword	Temp storage for SS:SP during shutdown
dword	Day counter on all products after AT
dword	PS/2 Pointer to reset code with memory preserved
5 bytes	Cassette tape control (before AT)
40:6C	dword	Daily timer counter, equal to zero at midnight;
incremented by INT 8; read/set by INT 1A
40:70	byte	Clock rollover flag, set when 40:6C exceeds 24hrs
40:71	byte	BIOS break flag, bit 7 is set if Ctrl-Break was
*ever* hit; set by INT 9
40:72	word	Soft reset flag via Ctl-Alt-Del or JMP FFFF:0
1234h  Bypass memory tests & CRT initialization
4321h  Preserve memory
5678h  System suspend
9ABCh  Manufacturer test
ABCDh  Convertible POST loop
????h  many other values are used during POST
40:74	byte	Status of last hard disk operation (see INT 13,1)
40:75	byte	Number of hard disks attached
40:76	byte	XT fixed disk drive control byte
40:77	byte	Port offset to current fixed disk adapter
40:78  4 bytes	Time-Out value for LPT1,LPT2,LPT3(,LPT4 except PS/2)
40:7C  4 bytes	Time-Out value for COM1,COM2,COM3,COM4
40:80	word	Keyboard buffer start offset (seg=40h,BIOS 10-27-82)
40:82	word	Keyboard buffer end offset (seg=40h,BIOS 10-27-82)
40:84	byte	Rows on the screen (less 1, EGA)
40:85	word	Point height of character matrix (EGA)
byte	PCjr: character to be repeated if the typematic
repeat key takes effect
40:86	byte	PCjr: initial delay before repeat key action begins
40:87	byte	PCjr: current Fn function key number
byte	Video mode options (EGA)
|7|6|5|4|3|2|1|0| Video mode options (EGA)
| | | | | | | `-- 1=alphanumeric cursor emulation enabled
| | | | | | `--- 1=video subsystem attached to monochrome
| | | | | `---- reserved
| | | | `----- 1=video subsystem is inactive
| | | `------ reserved
| `--------- video RAM  00-64K  10-192K  01-128K  11-256K
`---------- video mode number passed to INT 10, function 0
40:88	byte	PCjr: third keyboard status byte
EGA feature bit switches, emulated on VGA
|7|6|5|4|3|2|1|0| EGA feature bit switches (EGA)
| | | | | | | `-- EGA SW1 config (1=off)
| | | | | | `--- EGA SW2 config (1=off)
| | | | | `---- EGA SW3 config (1=off)
| | | | `----- EGA SW4 config (1=off)
| | | `------ Input FEAT0 (ISR0 bit 5) after output on FCR0
| | `------- Input FEAT0 (ISR0 bit 6) after output on FCR0
| `-------- Input FEAT1 (ISR0 bit 5) after output on FCR1
`--------- Input FEAT1 (ISR0 bit 6) after output on FCR1
40:89	byte	Video display data area (MCGA and VGA)
|7|6|5|4|3|2|1|0| Video display data area (MCGA and VGA)
| | | | | | | `-- 1=VGA is active
| | | | | | `--- 1=gray scale is enabled
| | | | | `---- 1=using monochrome monitor
| | | | `----- 1=default palette loading is disabled
| | | `------ see table below
| | `------- reserved
| `--------  1=display switching enabled
`--------- alphanumeric scan lines (see table below)
Bit7    Bit4	Scan Lines
0	0	350 line mode
0	1	400 line mode
1	0	200 line mode
1	1	reserved
40:8A	byte	Display Combination Code (DCC) table index (EGA)
40:8B	byte	Last diskette data rate selected
|7|6|5|4|3|2|1|0| last diskette data rate selected
| | | | `--------- reserved
| | `------------ last floppy drive step rate selected
`-------------- last floppy data rate selected
Data Rate 			Step Rate
00  500K bps		00  step rate time of 0C
01  300K bps		01  step rate time of 0D
10  250K bps		10  step rate time of 0A
11  reserved		11  reserved
40:8C	byte	Hard disk status returned by controller
40:8D	byte	Hard disk error returned by controller
40:8E	byte	Hard disk interrupt control flag(bit 7=working int)
40:8F	byte	Combination hard/floppy disk card when bit 0 set
40:90  4 bytes	Drive 0,1,2,3 media state
|7|6|5|4|3|2|1|0| drive media state (4 copies)
| | | | | `------- drive/media state (see below)
| | | | `------- reserved
| | | `------- 1=media/drive established
| | `------- double stepping required
`--------- data rate:	00=500K bps    01=300K bps
10=250K bps    11=reserved
Bits
210  Drive Media State
000  360Kb diskette/360Kb drive not established
001  360Kb diskette/1.2Mb drive not established
010  1.2Mb diskette/1.2Mb drive not established
011  360Kb diskette/360Kb drive established
100  360Kb diskette/1.2Mb drive established
101  1.2Mb diskette/1.2Mb drive established
110  Reserved
111  None of the above
40:94	byte	Track currently seeked to on drive 0
40:95	byte	Track currently seeked to on drive 1
40:96	byte	Keyboard mode/type
|7|6|5|4|3|2|1|0| Keyboard mode/type
| | | | | | | `--- last code was the E1 hidden code
| | | | | | `---- last code was the E0 hidden code
| | | | | `----- right CTRL key depressed
| | | | `------ right ALT key depressed
| | | `------- 101/102 enhanced keyboard installed
| | `-------- force num-lock if Rd ID & KBX
| `--------- last char was first ID char
`---------- read ID in process
40:97	byte	Keyboard LED flags
|7|6|5|4|3|2|1|0| Keyboard LED flags
| | | | | | | `--- scroll lock indicator
| | | | | | `---- num-lock indicator
| | | | | `----- caps-lock indicator
| | | | `------ circus system indicator
| | | `------- ACK received
| | `-------- re-send received flag
| `--------- mode indicator update
`---------- keyboard transmit error flag
40:98	dword	Pointer to user wait complete flag
40:9C	dword	User wait Time-Out value in microseconds
40:A0	byte	RTC wait function flag
|7|6|5|4|3|2|1|0| INT 15,86 RTC wait function flag
| | | | | | | `--- 1= wait pending
| `-------------- not used
`--------------- 1=INT 15,86 wait time elapsed
40:A1	byte	LANA DMA channel flags
40:A2  2 bytes	Status of LANA 0,1
40:A4	dword	Saved hard disk interrupt vector
40:A8	dword	BIOS Video Save/Override Pointer Table address
(see VIDEO TABLES)
40:AC  8 bytes	Reserved
40:B4	byte	Keyboard NMI control flags (convertible)
40:B5	dword	Keyboard break pending flags (convertible)
40:B9	byte	Port 60 single byte queue (convertible)
40:BA	byte	Scan code of last key (convertible)
40:BB	byte	NMI buffer head pointer (convertible)
40:BC	byte	NMI buffer tail pointer (convertible)
40:BD  16bytes	NMI scan code buffer (convertible)
40:CE	word	Day counter (convertible and after)
40:F0  16bytes	Intra-Applications Communications Area (IBM Technical
Reference incorrectly locates this at 50:F0-50:FF)
Address Size	   Description	 (BIOS/DOS Data Area)
50:00	byte	Print screen status byte
00 = PrtSc not active,
01 = PrtSc in progress
FF = error
50:01  3 bytes	Used by BASIC
50:04	byte	DOS single diskette mode flag, 0=A:, 1=B:
50:05  10bytes	POST work area
50:0F	byte	BASIC shell flag; set to 2 if current shell
50:10	word	BASICs default DS value (DEF SEG)
50:12	dword	Pointer to BASIC INT 1C interrupt handler
50:16	dword	Pointer to BASIC INT 23 interrupt handler
50:1A	dword	Pointer to BASIC INT 24 disk error handler
50:20	word	DOS dynamic storage
50:22  14bytes	DOS diskette initialization table (INT 1E)
50:30	4bytes	MODE command
70:00		I/O drivers from IO.SYS/IBMBIO.COM

The following map varies in size and locus

	07C0:0		Boot code is loaded here at startup (31k mark)
A000:0		EGA/VGA RAM for graphics display mode 0Dh & above
B000:0		MDA RAM, Hercules graphics display RAM
B800:0		CGA display RAM
C000:0		EGA/VGA BIOS ROM (thru C7FF)
C400:0		Video adapter ROM space
C600:0 256bytes PGA communication area
C800:0	 16K	Hard disk adapter BIOS ROM
C800:5		XT Hard disk ROM format, AH=Drive, AL=Interleave
D000:0	 32K	Cluster adapter BIOS ROM
D800:0		PCjr conventionalsoftware cartridge address
E000:0	 64K	Expansion ROM space (hardwired on AT)
128K	PS/2 System ROM (thru F000)
F000:0		System monitor ROM
PCjr: software cartridge override address
F400:0		System expansion ROMs
F600:0		IBM ROM BASIC (AT)
F800:0		PCjr software cartridge override address
FC00:0		BIOS ROM
FF00:0		System ROM
FFA6:E		ROM graphics character table
FFFF:0		ROM bootstrap code
FFFF:5 8 bytes	ROM date (not applicable for all clones)
FFFF:E	byte	ROM machine id	(see MACHINE ID)
posted on 2007-10-25 15:38 yuhen 阅读(2546) 评论(10)  编辑 收藏 引用 所属分类: 技术文档

FeedBack:
# re: BDA - BIOS Data Area - PC Memory Map[ZZ]
2007-10-28 04:10 | Fei
你是个系统工程师还是bios工程师? 感觉你应该是个bios工程师,干几年了?  回复  更多评论
  
# re: BDA - BIOS Data Area - PC Memory Map[ZZ]
2007-10-28 04:11 | Fei
Blog不错,值得肯定...  回复  更多评论
  
# re: BDA - BIOS Data Area - PC Memory Map[ZZ][未登录]
2007-10-29 10:18 | yuhen
yeah, i 'm a bios engineer, haha  回复  更多评论
  
# re: BDA - BIOS Data Area - PC Memory Map[ZZ]
2007-10-31 08:00 | Fei
看来我们是同行... 同行是冤家, 哈哈, 开玩笑...
觉得你的研究精神还是不错的,你的blog不错,要是能写写在实际中解决的问题就更好了...  回复  更多评论
  
# re: BDA - BIOS Data Area - PC Memory Map[ZZ][未登录]
2007-10-31 16:15 | yuhen
呵呵,搞我们这一行的太少了,因此没有几个人可以讨论问题,你也是做这个东西的吗?可以联系一下拉!  回复  更多评论
  
# re: BDA - BIOS Data Area - PC Memory Map[ZZ]
2007-11-01 23:43 | Fei
我可是正宗的同行,这行在中国大陆越来越多了,全世界范围内的工作机会也大部分在美国和东亚的台湾,大陆,韩国和日本, 印度也有不少,但是大部分从事一些chipset相关或者Kernel的工作.
你主要负责Desktop, Laptop还是Server?  回复  更多评论
  
# re: BDA - BIOS Data Area - PC Memory Map[ZZ]
2007-11-01 23:45 | Fei
我最近无聊,正准备去玩玩LinuxBIOS,看看有什么不同的...  回复  更多评论
  
# re: BDA - BIOS Data Area - PC Memory Map[ZZ][未登录]
2007-11-02 12:35 | yuhen
哦,我们主要给Desktop用的
linuxbios我看过一些,还没有仔细研究过,呵呵  回复  更多评论
  
# re: BDA - BIOS Data Area - PC Memory Map[ZZ]
2008-01-26 20:01 | BIOS REN
把中国bios联合起来~要靠大家
www.biosren.com 让我们在经验交流,issue讨论,答疑解惑中共同成长  回复  更多评论
  
只有注册用户登录后才能发表评论。
<2007年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Believe in who you are,
you are a shinning star!

常用链接

留言簿(14)

随笔分类(122)

随笔档案(116)

文章分类(2)

文章档案(2)

相册

BLOG

Study

Testing

最新随笔

搜索

  •  

积分与排名

  • 积分 - 96141
  • 排名 - 63

最新随笔

最新评论

阅读排行榜

评论排行榜