CMOS Memory Dump (IBM-PC and Compatibles) msu@mix Ver.1.0 Sep.25 92 Reference: The Programmer's PC sourcebook, Thom Hogan, 1988, (P.183...186) Loc. Value Descriptions Comments ----- -------- -------------------------------- ------------------------------ /40:00 %04.4x COM1 base address | /40:02 %04.4x COM2 base address | /40:04 %04.4x COM3 base address |supported only PS/2 BIOS /40:06 %04.4x COM4 base address |supported only PS/2 BIOS /40:08 %04.4x LPT1 base address | /40:0A %04.4x LPT2 base address | /40:0C %04.4x LPT3 base address | /40:0E %04.4x LPT4 base address | 40:10 %02.2x Installed hardware 1 ! xx...... |number of floppy device (0-based) =..00.... |video mode (unknown) =..01.... |video mode (40x25 color) =..10.... |video mode (80x25 color) =..11.... |video mode (80x25 mono) ....xx.. |reserved (old PC and PCJr) .....x.. |pointing device installed (PS/2) ......x. |math coprecessor installed .......x |floppy drives installed /40:11 %02.2x Installed hardware 2 ! / xx...... |number of printer adapters / ..x..... |internal modem(Convertive only) / ...x.... |joystick installed / ....xxx. |number of RS-232 adapters / .......x |reserved (PCJr=DMA device installed) /40:12 %02.2x Power-on self test status | /40:13 %04.4x Memory size |in KBytes (0 to 640) /40:15 %04.4x RESERVED | /40:17 %02.2x Keyboard control 1 ! / x....... |insert mode active / .x...... |caps lock mode active / ..x..... |num lock mode active / ...x.... |scroll lock mode active / ....x... |alt key held down / .....x.. |ctrl key held down / ......x. |left shift key held down / .......x |right shift key held down /40:18 %02.2x Keyboard control 1 ! / x....... |insert key held down / .x...... |caps lock key held down / ..x..... |num lock key held down / ...x.... |scroll lock key held down / ....x... |pause mode active / .....x.. |system request key held down / ......x. |left alt key held down / .......x |right ctrl key held down /40:19 %02.2x Alternate keypad entry | /40:1A %04.4x Keyboard buffer head pointer |p.to first ch.in typeahead buf /40:1C %04.4x Keyboard buffer tail pointer |p.to last ch.in typeahead buf /40:1E 32%02.2x Keyboard buffer | 40:3E %02.2x Floppy recalibrate status ! x....... |interrupt flag .xxx.... |reserved ....x... |recalibrate drive 3 .....x.. |recalibrate drive 2 ......x. |recalibrate drive 1 .......x |recalibrate drive 0 40:3F %02.2x Floppy morter status ! x....... |write/read operation .x...... |reserved ..xx.... |drive select (binary value equals drive number) ....x... |drive 3 moter ON status .....x.. |drive 2 moter ON status ......x. |drive 1 moter ON status .......x |drive 0 moter ON status 40:40 %02.2x Moter off counter | 40:41 %02.2x Floppy previous operation status! =10000000 |drive not ready =01000000 |seek operation faild =00100000 |general controller faild =00010000 |CRC error on diskette read =00001000 |DMA overrun on operation =00000100 |requested sector not found =00000010 |address mask not found =00000001 |invalid drive parameter =00000000 |no error =00000011 |write-protect error =00000110 |disk changed =00001001 |DMA attempt access 64K segment boundary =00001100 |media type not found 40:42 7%02.2x Floppy controller status byte | /40:49 %02.2x Display mode | /40:4A %04.4x Number of columns | /40:4C %04.4x Length of regen buffer in bytes | /40:4E %04.4x Address of regen buffer | /40:50 %04.4x Cursor position page 1 | /40:52 %04.4x Cursor position page 2 | /40:54 %04.4x Cursor position page 3 | /40:56 %04.4x Cursor position page 4 | /40:58 %04.4x Cursor position page 5 | /40:5A %04.4x Cursor position page 6 | /40:5C %04.4x Cursor position page 7 | /40:5D %04.4x Cursor position page 8 | /40:60 %04.4x Cursor type | /40:62 %02.2x Current display page | /40:63 %04.4x Video controller base address | /40:65 %02.2x Current 3x8 register setting | /40:66 %02.2x Current 3x9 register setting | /40:67 %08.8lx Pointer to reset code |PS/2 only /40:6B %02.2x RESERVED | /40:6C %08.8lx Timer counter | /40:70 %02.2x Timer overflow flag |!=0 passed 24 hours /40:71 %02.2x Break key state | /40:72 %04.4x Reset flag # / =1234H |bypass mem test / =4321H |preserve mem (PS/2) / =5678H |system suspended (Cobvertible) / =9ABCH |mfg test (Cobvertible) / =ABCDH |system post loop (Convertible only) 40:74 %02.2x Fixed disk previous ope.status # =00H |[F&H] no error =01H |[F&H] invalid diskette parameter (bad command) =02H |[F&H] address mark was not found =03H |[FDD] attempted write on protected diskette =04H |[F&H] sector was not found =05H |[FDD] reset failed =06H |[FDD] diskette was removed =07H |[HDD] bad parameter table =08H |[FDD] DMA overrun on previous operation =09H |[F&H] attempted to croo 64K segment boundary on DMA operation =0AH |[HDD] bad sector flag =0BH |[HDD] bad cylinder detected =0CH |[FDD] media type requested was not found =0DH |[HDD] invalid number of sectors in format =0EH |[HDD] control data address mark detected =0FH |[HDD] DMA arbitration level out of allowable range =10H |[F&H] CRC or ECC error on disk read =11H |[HDD] ECC corrected data error =20H |[F&H] controller faild =40H |[F&H] seek operation faild =80H |[F&H] drive time out, assumed not ready =AAH |[HDD] drive not ready =BBH |[HDD] undefined error =CCH |[HDD] write fault =E0H |[HDD] status error =FFH |[HDD] sense operation faild /40:75 %02.2x Number of fixed drives | /40:76 %02.2x Fixed disk drive control |XT only /40:77 %02.2x Fixed disk controller port |XT only /40:78 %02.2x Printer 1 time-out value | /40:79 %02.2x Printer 2 time-out value | /40:7A %02.2x Printer 3 time-out value | /40:7B %02.2x Printer 4 time-out value |PC,XT,and AT only /40:7C %02.2x COM1 time-out value | /40:7D %02.2x COM2 time-out value | /40:7E %02.2x COM3 time-out value | /40:7F %02.2x COM4 time-out value | /40:80 %04.4x Keyboard buffer start offset ptr| /40:82 %04.4x Keyboard buffer end offset ptr | /40:84 %02.2x Video rows (minus one) | /40:85 %04.4x Charactor height (bytes/char) | /40:87 %02.2x Video controll states 1 | /40:88 %02.2x Video controll states 2 | /40:89 %04.4x RESERVED | 40:8B %02.2x Media control ! =00...... |last floppy drive data rate (500KB/sec.) =01...... |last floppy drive data rate (300KB/sec.) =10...... |last floppy drive data rate (250KB/sec.) =11...... |last floppy drive data rate (reserved) ..xx.... |last floppy drive step rate ....xxxx |reserved /40:8C %02.2x Fixed disk controller status | /40:8D %02.2x Fixed disk controller error sta.| /40:8E %02.2x Fixed disk interrupt control | /40:8F %02.2x RESERVED | 40:90 %02.2x Drive 0 media status ! =00...... |drive data rate (500KB/sec.) =01...... |drive data rate (300KB/sec.) =10...... |drive data rate (250KB/sec.) =11...... |drive data rate (reserved) ..x..... |double steppind required ...x.... |media established ....x... |reserved .....xxx |drive/media state 40:91 %02.2x Drive 1 media status ! =00...... |drive data rate (500KB/sec.) =01...... |drive data rate (300KB/sec.) =10...... |drive data rate (250KB/sec.) =11...... |drive data rate (reserved) ..x..... |double steppind required ...x.... |media established ....x... |reserved .....xxx |drive/media state /40:92 %04.4x RESERVED | 40:94 %02.2x Drive 0 current cylinder | 40:95 %02.2x Drive 1 current cylinder | /40:96 %02.2x Keyboard mode state, type flag ! / x....... |read ID in progress / .x...... |last character was first ID character / ..x..... |force num lock if read ID and KBX / ...x.... |101/102-key keyboard installed / ....x... |right alt key held down / .....x.. |right ctrl key held down / ......x. |last code was E0 hidded code / .......x |last code was E1 hidden code /40:97 %02.2x Keyboard LED flags ! / x....... |keyboard transmit error flag / .x...... |mode indicator update / ..x..... |resend receive flag / ...x.... |acknowledgement received / ....x... |reserved / .....xxx |LED state bits /40:98 %04.4x Off.addr.to user wait cmplt. flg| /40:9A %04.4x Seg.addr.to user wait complete | /40:9C %04.4x User wait count (low word) |in microseconds /40:9E %04.4x User wait count (high word) |in microseconds /40:A0 %02.2x Wait active flag ! / x....... |wait time elapsed and post / .xxxxxx. |reserved / .......x |int 15H function 86H (wait) has occurred /40:A1 7%02.2x RESERVED | /40:A8 %08.8lx Video parameter table pointer |EGA and PS/2 only /40:AC %08.8lx Dynamic save area pointer |EGA and PS/2 only /40:B0 %08.8lx Alpha mode aux char gen pointer |EGA and PS/2 only /40:B4 %08.8lx Graphics mode aux char gen ptr. |EGA and PS/2 only /40:B8 %08.8lx Secondary save pointer |EGA and PS/2 only /40:BC 8%02.2x RESERVED | /40:C0 64%02.2x RESERVED | /50:00 %02.2x Print screen status byte | ----- -------- -------------------------------- ------------------------------