找了好久的BIOS和DOS,向量表和数据表。
简单说明一下,中断向量在16位地址的内存最初的000:3FF 数据内,4个字节为一个数组地址。
编号为0-FFh,分硬中断和软件中断,分BIOS中断和DOS中断,分系统中断和用户中断。
实际上书本上有这些东西,但是书本难找,介绍不普遍,在这里是方便查询。
研究这表有几大方向:操作系统,BIOS,计算机结构。
还想说两句,这些资料应该是满天飞的,因为还有保留数据,不知道为什么不怎么容易找到。
内存地址 | 类型 | PC/XT机功能 | 程序地址 | 控制权 |
0000~0003 | 0H | 除法错误中断 | 027E:56EA | DOS KERNEL |
0004~0007 | 1H | 单步中断 | 0070:075C | DOS BIOS |
0008~000B | 2H | 非屏蔽中断NMI | 0B70:0016 | DOS STACKS |
000C~000F | 3H | 断点中断 | 0070:075C | DOS BIOS |
0010~0013 | 4H | 溢出中断 | 0070:075C | DOS BIOS |
0014~0017 | 5H | 屏幕打印中断 | F000:EAFF | ROM BIOS |
0018~001B | 6H | 备用 | F000:E73C | ROM BIOS |
001C~001F | 7H | 备用 | F000:E8F9 | ROM BIOS |
0020~0023 | 8H | 日时钟中断 | 0B70:00AA | DOS STACKS |
0024~0027 | 9H | 键盘中断(PC/AT机为键盘中断) | 0B70:0124 | DOS STACKS |
0028~002B | AH | 保留(PC/AT机由从级8259使用) | F000:EF5A | ROM BIOS |
002C~002F | BH | 串行口2(PC/AT机为串行口2) | F000:EF5A | ROM BIOS |
0030~0033 | CH | 串行口1(PC/AT机为串行口1) | F000:EF5A | ROM BIOS |
0034~0037 | DH | 硬盘中断(PC机保留,PC/AT机并行口2) | F000:EF5A | ROM BIOS |
0038~003B | EH | 软盘中断(PC/AT为软盘中断) | 0B70:0439 | DOS STACKS |
003C~003F | FH | 并行口(打印机,PC/AT机为并行口1) | 0070:075C | DOS BIOS |
0040~0043 | 10H | 显示器驱动程序 | C000:1E40 | ROM BIOS |
0044~0047 | 11H | 设备检测程序 | F000:F84D | ROM BIOS |
0048~004B | 12H | 捡测内存容量程序 | F000:F841 | ROM BIOS |
004C~004F | 13H | 磁盘I/O程序 | 0070:1DB1 | DOS BIOS |
0050~0053 | 14H | 异步通信口(RS-232) | F000:E739 | ROM BIOS |
0054~0057 | 15H | I/O系统扩充(磁带I/O程序) | F000:F859 | ROM BIOS |
0058~005B | 16H | 键盘I/O | F000:E82E | ROM BIOS |
005C~005F | 17H | 打印机I/O | F000:EFD2 | ROM BIOS |
0060~0063 | 18H | 进入ROM BASIC | F000:FA2B | ROM BIOS |
0064~0067 | 19H | 系统自举即进入ROM BIOS引导程序 | 0070:1920 | DOS BIOS |
0068~006B | 1AH | 日时钟/实时钟I/O | F000:FE6E | ROM BIOS |
006C~006F | 1BH | Ctrl-Break中断 | 09CB:00F2 | DOS BIOS |
0070~0073 | 1CH | 定时器中断 | F000:FF53 | ROM BIOS |
0074~0077 | 1DH | 显示器初始化参数块起始地址 | F000:F0A4 | ROM BIOS |
0078~007B | 1EH | 软盘参数块地址 | 0000:0522 | DOS BIOS |
007C~007F | 1FH | 后128个ASCII码字符模块起始地址 | C000:5660 | 接管者 |
0080~0083 | 20H | 程序正常退出 | 027E:143F | DOS KERNEL |
0084~0087 | 21H | DOS层功能调用入口 | 027E:1460 | DOS KERNEL |
0088~008B | 22H | 程序终止地址 | 0D5E:02F4 | DOS SHELL |
008C~008F | 23H | Ctrl-Break退出地址 | 0D5E:032F | DOS SHELL |
0090~0093 | 24H | 错误退出地址(出错处理) | 0D5E:02BC | DOS SHELL |
0094~0097 | 25H | 绝对磁盘读 | 027E:15DC | DOS KERNEL |
0098~009B | 26H | 绝对磁盘写 | 027E:161F | DOS KERNEL |
009C~009F | 27H | 程序结束且驻留内存中断 | 027E:6368 | DOS KERNEL |
00A0~00A3 | 18H | 利用空闲时间片激活后台打印 | 027E:1445 | DOS KERNEL |
00A4~00A7 | 29H | 快速输出字符 | 09CB:02E8 | DOS BIOS |
00A8~00B7 | 2AH~2DH | 保留供DOS用(2A为网络功能调用) | DOS KERNEL | |
00B8~00BB | 2EH | 命令执行处理 | DOS SHELL | |
00BC~00BF | 2FH | 多路复用中断 | DOS BIOS | |
00C0~00C3 | 30H | 内部使用(DOS3.3中是IRET指令) | 并非向量 | |
00C4~00C7 | 31H | 内部使用(DOS3.3中是IRET指令) | DOS KERNEL | |
00C8~00FF | 32H~3FH | 保留供DOS用(DOS3.3中是IRET指令) | DOS KERNEL | |
0100~0103 | 40H | 有硬盘时的软盘I/O | ROM BIOS | |
0104~0107 | 41H | 1#硬盘参数 | ROM BIOS | |
0108~0117 | 42H~45H | 保留 | ROM BIOS | |
0118~011B | 46H | 2#硬盘参数 | ROM BIOS | |
011C~0127 | 47H~49H | 保留 | ROM BIOS | |
0128~012B | 4AH | 报警 | ROM BIOS | |
012C~017F | 4BH~5FH | 保留(5C为Net-BIOS网络功能调用) | ROM BIOS | |
0180~019F | 60H~67H | 保留供用户软件中断用 | 用户 | |
01A0~01BF | 68H~6FH | 保留 | 系统/用户 | |
01C0~01C3 | 70H | 保留(PC/AT机实时钟RT/CMOS电路) | DOS STACKS | |
01C4~01C7 | 71H | 保留(PC/AT机软件跳转INT 0AH) | ROM BIOS | |
01C8~01CB | 72H | 保留(PC/AT机保留) | ROM BIOS | |
01CC~01CF | 73H | 保留(PC/AT机保留) | ROM BIOS | |
01D0~01D3 | 74H | 保留(PC/AT机保留) | ROM BIOS | |
01D4~01D7 | 75H | 保留(PC/AT机保留供8087用) | ROM BIOS | |
01D8~01DB | 76H | 保留(PC/AT机硬盘中断) | DOS STACKS | |
01DC~01DF | 77H | 保留(PC/AT机保留) | ROM BIOS | |
01E0~01FF | 78H~7FH | 保留 | 系统/用户 | |
0200~0217 | 80H~85H | 保留供BASIC用 | BASIC | |
0218~03BF | 86H~EFH | BASIC运行时, 供BASIC编译器用(非向量) | BASIC | |
03C0~03C3 | F0H | 内部使用区(非向量) | DOS | |
03C4~03FF | F1H~FFH | 保留(非向量) |
段地址:00H
偏移 | 类型 | 内 容 |
0000H | 256双字 | 中断向量表。 |
0300H | 256字节 | 在自检和引导时作为缓冲区使用。 |
400H | 字 | 计算机上0号RS232-1适配器的基地址,通常为3F8H。 |
402H | 字 | 计算机上1号RS232-1适配器的基地址,通常为2F8H。 |
404H | 字 | 计算机上2号RS232-1适配器的基地址。 |
406H | 字 | 计算机上3号RS232-1适配器的基地址。 |
408H | 字 | 计算机上0号并行打印机适配器的基地址,通常为378H。 |
40AH | 字 | 计算机上1号并行打印机适配器的基地址。 |
40CH | 字 | 计算机上2号并行打印机适配器的基地址。 |
40EH | 字 | 计算机上3号并行打印机适配器的基地址。(PS2型此值为扩展BIOS数据区段地址) |
410H | 字 | 该字保存与计算机连接的设备编码表,BIOS中断11H(设备测定)可返回此信息。 |
位 | ||
0 | 软驱安装标志,此位为0表示没有软驱。 | |
1 | 数字协处理器安装标志,此位为0表示未安装协处理器。 | |
3-2 | 系统板RAM的大小,适用于一些旧机型,PS2型未使用。00=16K,01=32K,10=48K,11=64K)。 | |
5-4 | 初始显示方式(00=AG,01=CGA-40,10=CGA-80,11=MDA-80)。 | |
7-6 | 软驱的数量,公当位0为1时有效,00=1,01=2,10=3,11=4 | |
8 | DMA标志 | |
9-11 | 所连RS232适配器数 | |
12 | 连有游戏I/O | |
13 | 不用(PS2型为内置MODEM安装标志,此位为0表示没有安装) | |
14-15 | 所连打印机适配器数 | |
412H | 字节 | 初始测试标志(红外线键盘连接错误单元/?)。 |
413H | 字 | 该字给出打印机可用RAM的容量,基本内存容量为0-10K,以千字节为单位。BIOS中断12H(内存大小测定)可返回此信息。 |
415H | 字 | I/O通道的存储器容量(PS2型,BIOS控制标志)。 |
417H | 字节 | 这是第一个键盘状态字,通过编码,使每位均有特定的含义,具体格式如下: |
位 | ||
0 | 表示键盘右边的Shift键当前是否被按下(1表示按下,0表示未按下)。 | |
1 | 表示键盘左边的Shift键当前是否被按下(1表示按下,0表示未按下)。 | |
2 | 表明Ctrl键当前是否按下(1表示按下,0表示未按下)。 | |
3 | 表明Alt键当前是否按下(1表示按下,0表示未按下)。 | |
4 | 屏幕(Scroll)锁定开关键状态(1表示屏幕锁定处于开,0表示关)。 | |
5 | 数字(Num Lock)锁定开关键状态(1表示数字锁定处于开,0表示关)。 | |
6 | 大写字母(Caps Lock)开关键状态(1表示Caps Lock处于开,0表示关)。 | |
7 | 插入状态,它表明Ins键是否已按下,以使计算机进入“插入”方式,1表示插入状态正工作,0表明未动作。 | |
418H | 字节 | 这是第二个键盘状态字,其格式如下: |
位 | ||
0 | 表示键盘左边Ctrl键当前是否被按下(1表示按下,0表示未按下)。 | |
1 | 表示键盘左边Alt键当前是否被按下(1表示按下,0表示未按下)。 | |
2 | 如按下Ctrl+Alt+Del键,则该位为1。 | |
3 | 如果系统键(Ctrl和Num Lock)接下且保持住,则该位为1,当这个系统键依次按下时,BIOS暂停处理,直至下键按下为止。但它仍响应中断。 | |
4 | 表明屏幕(Scrool)锁定键当前是否按下(1表示按下,0表示未按下)。 | |
5 | 表明数字(Num Lock)锁定键当前是否按下(1表示按下,0表示未按下)。 | |
6 | 表明大写字母(Caps Lock)锁定键当前是否按下(1表示按下,0表示未按下)。 | |
7 | 表明Ins键当前是否按下(1表示按下,0表示未按下)。 | |
419H | 字节 | 为Alt和数字键盘键入的数而保留。(按住ALT+数字,可直接得到相应的ASCII码) |
41AH | 字 | 指向键盘缓冲区首址 |
41CH | 字 | 指向键盘缓冲区尾址,当该值等于前一字的值时,说明缓冲区满。 |
41EH | 32字节 | 循环键盘缓冲区,它保存键盘键入的字符,直到程序可以接收这些字符为止,前两个字指向此缓冲区的当前是首和尾。 |
43EH | 字节 | 表示磁盘驱动器的搜索状态,0-3位分别对应于驱动器。如果这些位中有一位为0,则表示在搜索磁道之前,必须重新校准相应的驱动器。位4-6未使用,位7为中断标志位,为1表示中断发生。 |
43FH | 字节 | 表示磁盘驱动器的马达状态,0-3位分别对应于驱动器0-3,如果某位被置为1,则相应驱动器的马达正在转动。位4-6未使用,位7为1表示现行操作是写。 |
440H | 字节 | 保存一个表明驱动器马达接通多长时间的计数,每个时钟节拍,计数减1,当计数为0明马达停转(根据INT8计时)。 |
441H | 字节 | 表明磁盘工作状态,它被编码,通过使相应位置1来表示一个特定的状态,格式如下: |
值 | ||
00H | 正确。 | |
01H | 送给磁盘控制器的是无效命令。 | |
02H | 在盘上未找到地址标记。 | |
03H | 试图在有写保护的盘上写操作。 | |
04H | 所请求扇区未找到。 | |
08H | 驱动器DMA错。 | |
09H | 试图使DMA对64KB存储体进行存取。 | |
10H | 循环冗余校验(CRC)错。 | |
20H | NEC磁盘控制器片出现错误。 | |
40H | 无效的查找操作。 | |
80H | 延时,没有响应。 | |
442H | 7字节 | 从NEC磁盘驱动器返回的七个字节状态信息(参见FDC)。 |
449H | 字节 | 指明当前视频方式,参见INT 10H。 |
44AH | 字 | 指明显示屏幕的当前列数。 |
44CH | 字 | 指明一个显示页面的字节数,它随时视频方式的不同而变化。80*25方式=1000H字节,40*25方式=800H字节,图形方式=4000H字节 |
44EH | 字 | 指明当前显示页面的地址,即显示在当前显示屏幕的显示页面。 |
450H | 8字 | 每个字均表示有关显示页面内当前光标的位置,每个字的第一字节表示列,第二字节表示行(改变这个字节并不能立刻改变显示)。 |
460H | 字节 | 表明光标的形状,此字节表示光标字符点阵的最下一行的行号,10H功能调用1设置此光标形状(不要直接更改此字节)。 |
461H | 字节 | 此字节表示光标字符点阵的最上一行的行号。10H功能调用1设置此光标形状(不要直接更改此字节)。 |
462H | 字节 | 表明工作显示页面号,由10H功能调用5设置。 |
463H | 字 | 表明当前工作显示板的口地址。3BCH=单色,3D4H=彩色。 |
465H | 字节 | 表明6845芯片的方式寄存器的当前值(端口:3X8H)。 |
466H | 字节 | 表示当前显示控制面板的设置。10H功能调用0BH可设置当前面板(端口:3D9H)。 |
467H | 5字节 | PC中,这5个字节用以表示磁带控制的定时计数字、CRC寄存器字和最后输入数值字节,在AT中,这5个字节作为端口使用,从467H开始的双字长是一个指针,它指向BIOS开关使80X86由保护虚地址方式转到实地址方式时控制返回的位置。 |
46CH | 双字 | 这是BIOS作为时钟计数器的一个双字单元,时钟第步进一次,此值增加一次,其值为0,表示一天开始(午夜),当此计数器达到一天结束的值时,计数器清0,且字节470H置1。中断1AH功能调用0可从此双字单元中读取一天的时间。 |
470H | 字节 | 这是一个时钟翻转字节。当时钟计数器达到一天结束且复位时,此字节置1以表明新的一天开始。中断1AH功能调用0在读取这一天的时间后,将此字节复位。 |
471H | 字节 | 位7为1表示BREAK键按下(INT 9设置此标志)。 |
472H | 字 | 由软件设置复位功能标志或直接跳转FFFF:0重启动。 |
值 | ||
1234H | 热启动 | |
5678H | 系统中止 | |
9ABCH | 在制造商检测时使用。 | |
474H | 字节 | 硬盘状态。 |
值 | ||
00H | 正确 | |
01H | 送给磁盘控制器的是无效命令或参数。 | |
02H | 在盘上未找到地址标记 | |
03H | 试图在有写保护的盘上进行写操作。 | |
04H | 所请求扇区未找到。 | |
05H | 重新复位失败。 | |
07H | 操作失效。 | |
08H | DMA错 | |
09H | 试图使DMA对64K存储体进行存取。 | |
0AH | 坏的扇区标志。 | |
0BH | 坏磁道已清除。 | |
0DH | 扇区号、格式错。 | |
0EH | 控制数据地址已清除。 | |
0FH | DMA超出限制。 | |
10H | 循环冗余校验CRC错。 | |
11H | ECC数据错。 | |
20H | NEC磁盘控制器片出现错误。 | |
40H | 无效的查找操作。 | |
80H | 延时,没有响应。 | |
AAH | 没准备好。 | |
BBH | 发生错误,定义不正确。 | |
CCH | 写错误。 | |
E0H | 寄存器错误。 | |
FFH | 磁盘检测失败。 | |
475H | 字节 | 硬盘设备数。 |
476H | 字节 | 磁盘适配器控制。 |
477H | 字节 | 硬盘适配器端口。 |
478H | 字节 | 测试打印机0的超时值。 |
479H | 字节 | 测试打印机1的超时值。 |
47AH | 字节 | 测试打印机2的超时值。 |
47BH | 字节 | 测试打印机3的超时值(PS2型除外)。 |
47CH | 字节 | 测试0号RS232超时值。 |
47DH | 字节 | 测试1号RS232超时值。 |
47EH | 字节 | 测试2号RS232超时值。 |
47FH | 字节 | 测试3号RS232超时值。 |
480H | 字 | 指向存放键盘输入字符的循环缓冲区首址。 |
482H | 字 | 指向存放键盘输入字符的循环缓冲区尾址。 |
484H | 字节 | 显示字符的列数。其值为显示字符的列数减1(EGA以上有效)。 |
485H | 字 | 每个字符高度(EGA以上有效)。 |
487H | 字节 | 显示控制状态(EGA以上有效)1。 |
位 | ||
0 | 光标仿真模式状态(1为开启)。 | |
1 | 单色显示系统状态(1为启用)。 | |
2 | 保留。 | |
3 | 显示系统空闲状态(1为空闲)。 | |
4 | 保留。 | |
6-5 | 显存容量(00=64K,01=128K,10=192K,11=256K)。 | |
7 | 显示模式可用状态。 | |
488H | 字节 | 显示控制状态2(EGA以上有效)。 |
位 | ||
0 | SW1(1=关闭) | |
1 | SW2(1=关闭) | |
2 | SW3(1=关闭) | |
3 | SW4(1=关闭) | |
4 | ? | |
5 | ? | |
6 | ? | |
7 | ? | |
489H | 字节 | 显示控制状态3(MCGA或VGA有效)。 |
位 | ||
0 | VGA模式状态 | |
1 | 灰度模式状态 | |
2 | 单色显示状态 | |
3 | 使用默认模式 | |
4 | -- | |
5 | 保留 | |
6 | 显示状态开关 | |
7 | -- | |
值 | ||
位7位4 | ||
0 0 | 350线模式 | |
0 1 | 400线模式 | |
1 0 | 200线模式 | |
1 1 | 保留 | |
48AH | 字节 | 显示适配器DCC索引。 |
48BH | 字节 | 最后磁盘数据率。 |
位 | ||
3-0 | 保留。 | |
5-4 | 步进时间。 | |
7-6 | 数据传输率。 | |
48CH | 字节 | 硬盘状态。 |
48DH | 字节 | 硬盘错误。 |
48EH | 字节 | 硬盘中断标志。 |
48FH | 字节 | 位0为1,表示硬盘和软盘使用一个控制卡。 |
490H | 字节 | 驱动器0介质状态。 |
491H | 字节 | 驱动器1介质状态。 |
492H | 字节 | 驱动器0的起始状态。 |
493H | 字节 | 驱动器2的起始状态。 |
494H | 字节 | 驱动器0磁道数。 |
495H | 字节 | 驱动器1磁道数。 |
496H | 字节 | 键盘类型和方式,各位含义为: |
位 | ||
0 | E1H隐含码最后。 | |
1 | E0H隐含码最后。 | |
2 | 右Ctrl键按下。 | |
3 | 右Alt键按下。 | |
4 | 101/102键盘 | |
5 | 若读标识和键盘,则强置Num Lock。 | |
6 | 最后的字符是第一个ID字符。 | |
7 | 读键盘的ID。 | |
497H | 字节 | 键盘标志。 |
位 | ||
0-2 | LED状态位。 | |
3 | 保留。 | |
4 | 收到消息。 | |
5 | 重发接收标志。 | |
6 | 方式指示器更新。 | |
7 | 键盘传送错误标志。 | |
498H | 双字 | 等待完成标志的偏移地址。 |
49AH | 双字 | 用户等待计数(低位字),以微秒为单位。 |
49EH | 字 | 用户等待计数(高位字),以微秒为单位。 |
4A0H | 字节 | RTC等待激活标志。80表示等待时间已过。 |
4A1H | 7字节 | 这7个字节用于局域网。 |
4A8H | 双字 | 这双字指向保存视频系统的指针表。指针表格式为: |
偏移值 类型 指向 00H DD 视频参数 04H DD 参数保存区 08H DD 字母字符集 0CH DD 图形字符集 10H DD 第二个保存指针表 14H DD 保留 18H DD 保留 第二个指针表格式为: 偏移值 类型 功能或指向 00H DW 这个表的字节 02H DD 组合码表 06H DD 第二个字母字符集 0AH DD 用户调色板表 0EH DD 保留 12H DD 保留 16H DD 保留 | ||
4ACH | 8字节 | 保留。 |
4B4H | 字节 | 键盘NMI控制标志(可变)。 |
4B5H | 双字 | 键盘中断中标志(可变)。 |
4B9H | 字节 | 端口60单字节队列(可变)。 |
4BAH | 字节 | 最后的键盘扫描码(可变)。 |
4BBH | 字节 | NMI缓冲头位置(可变)。 |
4BCH | 字节 | NMI缓冲头位置(可变)。 |
4BDH | 16字节 | NMI扫描码缓冲(可变)。 |
4CEH | 字 | 日期计数(可变)。 |
4F0H | 16字节 | ? |
BDA - BIOS Data Area - PC Memory Map 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)