From 7be4403eaad467eef10862ead1f770f9bc64197a Mon Sep 17 00:00:00 2001 From: Jeff Parsons Date: Thu, 9 Apr 2015 15:58:26 -0700 Subject: [PATCH] Updated my DeskPro 386 notes --- devices/pc/bios/compaq/deskpro386/notes.md | 289 ++------------------- 1 file changed, 18 insertions(+), 271 deletions(-) diff --git a/devices/pc/bios/compaq/deskpro386/notes.md b/devices/pc/bios/compaq/deskpro386/notes.md index 95de5f734..492d1ca29 100644 --- a/devices/pc/bios/compaq/deskpro386/notes.md +++ b/devices/pc/bios/compaq/deskpro386/notes.md @@ -86,153 +86,9 @@ Here's the code leading up to it: F000:F4A4 0F2200 MOV CR0,EAX ;history=2 F000:F4A7 EAACF42800 JMP 0028:F4AC ;history=1 -Set the following breakpoints: - - breakpoint enabled: F000:F498 (exec) - breakpoint enabled: %00FF0758 (write) - -The write breakpoint first catches the code at 0030:F692 copying ROM data near F000:F378 -to memory at %0x00FF0000 near 0x738. - -It later catches code at 0030:C924 writing to that region. - -Then code at 0030:8590: - - EAX=00000048 EBX=000010F0 ECX=00003E29 EDX=00000000 - ESP=000000E4 EBP=00000000 ESI=0000075C EDI=0000075C - SS=0028[00000300,FFFF] DS=0050[000F0000,FFFF] ES=0048[00FF0000,FFFF] - CS=0030[000F0000,FFFF] FS=0000[00000000,FFFF] GS=0304[00003040,FFFF] - LD=0000[00000000,0000] GD=[0001C000,005F] ID=[000FF821,0007] TR=0000 A20=ON - CR0=0000FFF1 CR2=00000000 CR3=00000000 PS=00000046 V0 D0 I0 T0 S0 Z1 A0 P1 C0 - 0030:8590 66F3 REPZ - - dw ds:73c l10 - 0050:073C 92C0 8000 FFFF 0000 - 9200 0000 FFFF 0000 ................ - 0050:074C 9A0F 0000 FFFF 0000 - 9200 C000 FFFF 0000 ................ - - dw es:73c l10 - 0048:073C 92C0 8000 FFFF 0000 - 9200 0000 FFFF 0000 ................ - 0048:074C 9A0F 0000 FFFF 0000 - 9200 C000 FFFF 0000 ................ - - dw %ff073c l10 %00FF073C 92C0 8000 FFFF 0000 - 9200 0000 FFFF 0000 ................ %00FF074C 9A0F 0000 FFFF 0000 - 9200 C000 FFFF 0000 ................ -Next we stopped here, and the memory at %ff07ec was still good: - - stopped (27129603 ops, 555386 cycles, 117 ms, 4746889 hz) - EAX=000098FC EBX=0000E000 ECX=00000000 EDX=00000000 - ESP=000000E4 EBP=00000000 ESI=0000FFFF EDI=00007FBE - SS=0028[00000300,FFFF] DS=0050[80C00000,FFFF] ES=0048[00FF0000,FFFF] - CS=0030[000F0000,FFFF] FS=0000[00000000,FFFF] GS=0304[00003040,FFFF] - LD=0000[00000000,0000] GD=[0001C000,005F] ID=[000FF821,0007] TR=0000 A20=ON - CR0=0000FFF1 CR2=00000000 CR3=00000000 PS=00000083 V0 D0 I0 T0 S1 Z0 A0 P0 C1 - 0030:863C 1F POP DS - - %00FF073C 92C0 8000 FFFF 0000 - 9200 0000 FFFF 0000 ................ - %00FF074C 9A0F 0000 FFFF 0000 - 9200 C000 FFFF 0000 ................ - - BEFORE AFTER - ====== ===== - - id physaddr blkaddr used size type id physaddr blkaddr used size type - -------- --------- -------- ------ ------ ---- -------- --------- -------- ------ ------ ---- - 00020003 %00000000: 00000000 0x8000 0x8000 RAM 00020003 %00000000: 00000000 0x8000 0x8000 RAM - 00020004 %00008000: 00008000 0x8000 0x8000 RAM 00020004 %00008000: 00008000 0x8000 0x8000 RAM - 00020005 %00010000: 00010000 0x8000 0x8000 RAM 00020005 %00010000: 00010000 0x8000 0x8000 RAM - 00020006 %00018000: 00018000 0x8000 0x8000 RAM 00020006 %00018000: 00018000 0x8000 0x8000 RAM - 00020007 %00020000: 00020000 0x8000 0x8000 RAM 00020007 %00020000: 00020000 0x8000 0x8000 RAM - 00020008 %00028000: 00028000 0x8000 0x8000 RAM 00020008 %00028000: 00028000 0x8000 0x8000 RAM - 00020009 %00030000: 00030000 0x8000 0x8000 RAM 00020009 %00030000: 00030000 0x8000 0x8000 RAM - 0002000A %00038000: 00038000 0x8000 0x8000 RAM 0002000A %00038000: 00038000 0x8000 0x8000 RAM - 0002000B %00040000: 00040000 0x8000 0x8000 RAM 0002000B %00040000: 00040000 0x8000 0x8000 RAM - 0002000C %00048000: 00048000 0x8000 0x8000 RAM 0002000C %00048000: 00048000 0x8000 0x8000 RAM - 0002000D %00050000: 00050000 0x8000 0x8000 RAM 0002000D %00050000: 00050000 0x8000 0x8000 RAM - 0002000E %00058000: 00058000 0x8000 0x8000 RAM 0002000E %00058000: 00058000 0x8000 0x8000 RAM - 0002000F %00060000: 00060000 0x8000 0x8000 RAM 0002000F %00060000: 00060000 0x8000 0x8000 RAM - 00020010 %00068000: 00068000 0x8000 0x8000 RAM 00020010 %00068000: 00068000 0x8000 0x8000 RAM - 00020011 %00070000: 00070000 0x8000 0x8000 RAM 00020011 %00070000: 00070000 0x8000 0x8000 RAM - 00020012 %00078000: 00078000 0x8000 0x8000 RAM 00020012 %00078000: 00078000 0x8000 0x8000 RAM - 00020013 %00080000: 00080000 0x8000 0x8000 RAM 00020013 %00080000: 00080000 0x8000 0x8000 RAM - 00020014 %00088000: 00088000 0x8000 0x8000 RAM 00020014 %00088000: 00088000 0x8000 0x8000 RAM - 00020015 %00090000: 00090000 0x8000 0x8000 RAM 00020015 %00090000: 00090000 0x8000 0x8000 RAM - 00020016 %00098000: 00098000 0x8000 0x8000 RAM 00020016 %00098000: 00098000 0x8000 0x8000 RAM - 00020044 %000B8000: 000B8000 0x8000 0x8000 VIDEO 00020050 %000B8000: 000B8000 0x8000 0x8000 VIDEO - 00020001 %000C0000: 000C0000 0x4000 0x8000 ROM 00020001 %000C0000: 000C0000 0x4000 0x8000 ROM - - 00020051 %000E0000: 000E0000 0x???? 0x8000 ROM - 00020052 %000E8000: 000E0000 0x???? 0x8000 ROM - 00020002 %000F0000: 000F8000 0x8000 0x8000 ROM 00020053 %000F0000: 000E0000 0x???? 0x8000 ROM - 00020002 %000F8000: 000F8000 0x8000 0x8000 ROM 00020054 %000F8000: 000E0000 0x???? 0x8000 ROM - - 00020024 %00100000: 00100000 0x8000 0x8000 RAM 00020024 %00100000: 00100000 0x8000 0x8000 RAM - 00020025 %00108000: 00108000 0x8000 0x8000 RAM 00020025 %00108000: 00108000 0x8000 0x8000 RAM - 00020026 %00110000: 00110000 0x8000 0x8000 RAM 00020026 %00110000: 00110000 0x8000 0x8000 RAM - 00020027 %00118000: 00118000 0x8000 0x8000 RAM 00020027 %00118000: 00118000 0x8000 0x8000 RAM - 00020028 %00120000: 00120000 0x8000 0x8000 RAM 00020028 %00120000: 00120000 0x8000 0x8000 RAM - 00020029 %00128000: 00128000 0x8000 0x8000 RAM 00020029 %00128000: 00128000 0x8000 0x8000 RAM - 0002002A %00130000: 00130000 0x8000 0x8000 RAM 0002002A %00130000: 00130000 0x8000 0x8000 RAM - 0002002B %00138000: 00138000 0x8000 0x8000 RAM 0002002B %00138000: 00138000 0x8000 0x8000 RAM - 0002002C %00140000: 00140000 0x8000 0x8000 RAM 0002002C %00140000: 00140000 0x8000 0x8000 RAM - 0002002D %00148000: 00148000 0x8000 0x8000 RAM 0002002D %00148000: 00148000 0x8000 0x8000 RAM - 0002002E %00150000: 00150000 0x8000 0x8000 RAM 0002002E %00150000: 00150000 0x8000 0x8000 RAM - 0002002F %00158000: 00158000 0x8000 0x8000 RAM 0002002F %00158000: 00158000 0x8000 0x8000 RAM - 00020030 %00160000: 00160000 0x8000 0x8000 RAM 00020030 %00160000: 00160000 0x8000 0x8000 RAM - 00020031 %00168000: 00168000 0x8000 0x8000 RAM 00020031 %00168000: 00168000 0x8000 0x8000 RAM - 00020032 %00170000: 00170000 0x8000 0x8000 RAM 00020032 %00170000: 00170000 0x8000 0x8000 RAM - 00020033 %00178000: 00178000 0x8000 0x8000 RAM 00020033 %00178000: 00178000 0x8000 0x8000 RAM - 00020034 %00180000: 00180000 0x8000 0x8000 RAM 00020034 %00180000: 00180000 0x8000 0x8000 RAM - 00020035 %00188000: 00188000 0x8000 0x8000 RAM 00020035 %00188000: 00188000 0x8000 0x8000 RAM - 00020036 %00190000: 00190000 0x8000 0x8000 RAM 00020036 %00190000: 00190000 0x8000 0x8000 RAM - 00020037 %00198000: 00198000 0x8000 0x8000 RAM 00020037 %00198000: 00198000 0x8000 0x8000 RAM - 00020038 %001A0000: 001A0000 0x8000 0x8000 RAM 00020038 %001A0000: 001A0000 0x8000 0x8000 RAM - 00020039 %001A8000: 001A8000 0x8000 0x8000 RAM 00020039 %001A8000: 001A8000 0x8000 0x8000 RAM - 0002003A %001B0000: 001B0000 0x8000 0x8000 RAM 0002003A %001B0000: 001B0000 0x8000 0x8000 RAM - 0002003B %001B8000: 001B8000 0x8000 0x8000 RAM 0002003B %001B8000: 001B8000 0x8000 0x8000 RAM - 0002003C %001C0000: 001C0000 0x8000 0x8000 RAM 0002003C %001C0000: 001C0000 0x8000 0x8000 RAM - 0002003D %001C8000: 001C8000 0x8000 0x8000 RAM 0002003D %001C8000: 001C8000 0x8000 0x8000 RAM - 0002003E %001D0000: 001D0000 0x8000 0x8000 RAM 0002003E %001D0000: 001D0000 0x8000 0x8000 RAM - 0002003F %001D8000: 001D8000 0x8000 0x8000 RAM 0002003F %001D8000: 001D8000 0x8000 0x8000 RAM - 00020040 %001E0000: 001E0000 0x8000 0x8000 RAM 00020040 %001E0000: 001E0000 0x8000 0x8000 RAM - 00020041 %001E8000: 001E8000 0x8000 0x8000 RAM 00020041 %001E8000: 001E8000 0x8000 0x8000 RAM - 00020042 %001F0000: 001F0000 0x8000 0x8000 RAM 00020042 %001F0000: 001F0000 0x8000 0x8000 RAM - 00020043 %001F8000: 001F8000 0x8000 0x8000 RAM 00020043 %001F8000: 001F8000 0x8000 0x8000 RAM - - 00020017 %00FA0000: 00FA0000 0x8000 0x8000 RAM 00020017 %00FA0000: 00FA0000 0x8000 0x8000 RAM - 00020018 %00FA8000: 00FA8000 0x8000 0x8000 RAM 00020018 %00FA8000: 00FA8000 0x8000 0x8000 RAM - 00020019 %00FB0000: 00FB0000 0x8000 0x8000 RAM 00020019 %00FB0000: 00FB0000 0x8000 0x8000 RAM - 0002001A %00FB8000: 00FB8000 0x8000 0x8000 RAM 0002001A %00FB8000: 00FB8000 0x8000 0x8000 RAM - 0002001B %00FC0000: 00FC0000 0x8000 0x8000 RAM 0002001B %00FC0000: 00FC0000 0x8000 0x8000 RAM - 0002001C %00FC8000: 00FC8000 0x8000 0x8000 RAM 0002001C %00FC8000: 00FC8000 0x8000 0x8000 RAM - 0002001D %00FD0000: 00FD0000 0x8000 0x8000 RAM 0002001D %00FD0000: 00FD0000 0x8000 0x8000 RAM - 0002001E %00FD8000: 00FD8000 0x8000 0x8000 RAM 0002001E %00FD8000: 00FD8000 0x8000 0x8000 RAM - 0002001F %00FE0000: 00FE0000 0x8000 0x8000 RAM 0002001F %00FE0000: 00FE0000 0x8000 0x8000 RAM - 00020020 %00FE8000: 00FE8000 0x8000 0x8000 RAM 00020020 %00FE8000: 00FE8000 0x8000 0x8000 RAM - 00020021 %00FF0000: 00FF0000 0x8000 0x8000 RAM 00020021 %00FF0000: 00FF0000 0x8000 0x8000 RAM - 00020022 %00FF8000: 00FF8000 0x8000 0x8000 RAM 00020022 %00FF8000: 00FF8000 0x8000 0x8000 RAM - - 00020023 %80C00000: 80C00000 0x0001 0x8000 H/W 00020023 %80C00000: 80C00000 0x0001 0x8000 H/W - 00020002 %FFFF0000: 000F8000 0x8000 0x8000 ROM 00020002 %FFFF0000: 000F8000 0x8000 0x8000 ROM - 00020002 %FFFF8000: 000F8000 0x8000 0x8000 ROM 00020002 %FFFF8000: 000F8000 0x8000 0x8000 ROM - -But when we stopped here next, it was no longer good: - - breakpoint hit: F000:F498 (exec) - stopped (27572162 ops, 443166 cycles, 143 ms, 3099063 hz) - EAX=0000FF00 EBX=00000080 ECX=0000270F EDX=0000004A - ESP=000000FE EBP=00000000 ESI=00007FB6 EDI=00008000 - SS=0030 DS=0040 ES=0000 FS=0000 GS=0304 PS=00000046 V0 D0 I0 T0 S0 Z1 A0 P1 C0 - F000:F498 2E CS: - F000:F499 0F01167E07 LGDT [077E] - - F000:077E 0047 0730 00FF FFFF - 0000 0000 87AA 0018 G.0............. - F000:078E 87F8 0018 8828 0018 - 0F2E 1601 0778 200F ....(.......x.. - - %00FF0730 0000 0000 0000 0000 - 0000 0000 0000 0000 ................ - %00FF0740 0000 0000 0000 0000 - 0000 0000 0000 0000 ................ - -Here's a fresher run: - id physaddr blkaddr used size type id physaddr blkaddr used size type -------- --------- -------- ------ ------ ---- -------- --------- -------- ------ ------ ---- 00040006 %00000000: 00000000 0x8000 0x8000 RAM 00040006 %00000000: 00000000 0x8000 0x8000 RAM @@ -308,130 +164,21 @@ Here's a fresher run: 00040046 %80C00000: 80C00000 0x0001 0x8000 H/W 00040046 %80C00000: 80C00000 0x0001 0x8000 H/W 00040004 %FFFF0000: 000F8000 0x8000 0x8000 ROM 00040004 %FFFF0000: 000F8000 0x8000 0x8000 ROM 00040004 %FFFF8000: 000F8000 0x8000 0x8000 ROM 00040004 %FFFF8000: 000F8000 0x8000 0x8000 ROM - - running - notice: PIC0(0x20): unsupported OCW2 automatic EOI command: 0x00 - stopped (149 ops, 622 cycles, 20 ms, 31100 hz) - EAX=0000F000 EBX=00000000 ECX=00000008 EDX=00000020 - ESP=00000000 EBP=00000000 ESI=0000F8E7 EDI=00000000 - SS=0000 DS=F000 ES=0000 FS=0000 GS=0304 PS=00000046 V0 D0 I0 T0 S0 Z1 A0 P1 C0 - F000:F9ED E6A0 OUT A0,AL - running - notice: PIC1(0xA0): unsupported OCW2 automatic EOI command: 0x00 - stopped (150 ops, 5 cycles, 17 ms, 294 hz) - EAX=0000F000 EBX=00000000 ECX=00000008 EDX=00000020 - ESP=00000000 EBP=00000000 ESI=0000F8E7 EDI=00000000 - SS=0000 DS=F000 ES=0000 FS=0000 GS=0304 PS=00000046 V0 D0 I0 T0 S0 Z1 A0 P1 C0 - F000:F9EF B009 MOV AL,09 - running - notice: PIC0(0x20): unsupported OCW2 automatic EOI command: 0x00 - stopped (19729382 ops, 89821236 cycles, 6351 ms, 14142849 hz) - EAX=0000F000 EBX=00000006 ECX=00000008 EDX=00000020 - ESP=00000000 EBP=00000000 ESI=0000F8E7 EDI=00000000 - SS=0000 DS=F000 ES=0000 FS=0000 GS=0000 PS=00000046 V0 D0 I0 T0 S0 Z1 A0 P1 C0 - F000:F9ED E6A0 OUT A0,AL - running - notice: PIC1(0xA0): unsupported OCW2 automatic EOI command: 0x00 - stopped (19729383 ops, 5 cycles, 15 ms, 333 hz) - EAX=0000F000 EBX=00000006 ECX=00000008 EDX=00000020 - ESP=00000000 EBP=00000000 ESI=0000F8E7 EDI=00000000 - SS=0000 DS=F000 ES=0000 FS=0000 GS=0000 PS=00000046 V0 D0 I0 T0 S0 Z1 A0 P1 C0 - F000:F9EF B009 MOV AL,09 - running - notice: PIC0(0x20): unsupported OCW2 automatic EOI command: 0x00 - stopped (25359063 ops, 12731563 cycles, 1260 ms, 10104415 hz) - EAX=0000F000 EBX=00000003 ECX=00000008 EDX=00000020 - ESP=00000000 EBP=00000000 ESI=0000F8E7 EDI=00000000 - SS=0000 DS=F000 ES=0000 FS=0000 GS=0000 PS=00000046 V0 D0 I0 T0 S0 Z1 A0 P1 C0 - F000:F9ED E6A0 OUT A0,AL - running - notice: PIC1(0xA0): unsupported OCW2 automatic EOI command: 0x00 - stopped (25359064 ops, 5 cycles, 17 ms, 294 hz) - EAX=0000F000 EBX=00000003 ECX=00000008 EDX=00000020 - ESP=00000000 EBP=00000000 ESI=0000F8E7 EDI=00000000 - SS=0000 DS=F000 ES=0000 FS=0000 GS=0000 PS=00000046 V0 D0 I0 T0 S0 Z1 A0 P1 C0 - F000:F9EF B009 MOV AL,09 - running - stopped (27129586 ops, 2209813 cycles, 382 ms, 5784851 hz) - EAX=000098FC EBX=0000E000 ECX=00000000 EDX=00000000 - ESP=000000E4 EBP=00000000 ESI=0000FFFF EDI=00007FBE - SS=0028[00000300,FFFF] DS=0050[80C00000,FFFF] ES=0048[00FF0000,FFFF] - CS=0030[000F0000,FFFF] FS=0000[00000000,FFFF] GS=0304[00003040,FFFF] - LD=0000[00000000,0000] GD=[0001C000,005F] ID=[000FF821,0007] TR=0000 A20=ON - CR0=0000FFF1 CR2=00000000 CR3=00000000 PS=00000083 V0 D0 I0 T0 S1 Z0 A0 P0 C1 - 0030:863C 1F POP DS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +But when we stopped here next, it was no longer good: + + breakpoint hit: F000:F498 (exec) + stopped (27572162 ops, 443166 cycles, 143 ms, 3099063 hz) + EAX=0000FF00 EBX=00000080 ECX=0000270F EDX=0000004A + ESP=000000FE EBP=00000000 ESI=00007FB6 EDI=00008000 + SS=0030 DS=0040 ES=0000 FS=0000 GS=0304 PS=00000046 V0 D0 I0 T0 S0 Z1 A0 P1 C0 + F000:F498 2E CS: + F000:F499 0F01167E07 LGDT [077E] + + F000:077E 0047 0730 00FF FFFF - 0000 0000 87AA 0018 G.0............. + F000:078E 87F8 0018 8828 0018 - 0F2E 1601 0778 200F ....(.......x.. + + %00FF0730 0000 0000 0000 0000 - 0000 0000 0000 0000 ................ + %00FF0740 0000 0000 0000 0000 - 0000 0000 0000 0000 ................ + +Turns out this is because the A20 line has been disabled.