Added disk image of VGA tests/samples
This commit is contained in:
parent
5ae447ab49
commit
a10ac83df6
7 changed files with 28 additions and 322 deletions
|
|
@ -63,21 +63,12 @@ never completed, and this is another related issue that will have to be resolved
|
|||
|
||||
---
|
||||
|
||||
Another problem: during IBM VGA ROM initialization, a "missing readByte handler" warning occurs.
|
||||
|
||||
Card.setMemoryAccess(0x1510): missing readByte handler
|
||||
stopped (2351185 ops, 7740201 cycles, 1617 ms, 4786766 hz)
|
||||
EAX=00000204 EBX=0000194A ECX=00000001 EDX=000003C4
|
||||
ESP=000000C4 EBP=FFFF0000 ESI=00000000 EDI=000003D4
|
||||
SS=0030 DS=0000 ES=C000 FS=0000 GS=0304 PS=00000002 V0 D0 I0 T0 S0 Z0 A0 P0 C0
|
||||
C000:1205 FEC0 INC AL
|
||||
|
||||
Before debugging this though, I decided to first make a table of all the register values for most of the modes that
|
||||
the IBM VGA supports:
|
||||
While debugging and fixing assorted IBM VGA issues, I made a table of all the register values for the video
|
||||
modes commonly used on the IBM VGA. Here's that table:
|
||||
|
||||
INT 0x10 Mode Requested: 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x0D 0x0E 0x10 0x12 0x13
|
||||
|
||||
BIOSMODE: 0x01 0x01 0x03 0x03 0x04 0x04 0x06 0x12 0x12 0x12 0x12 0x13
|
||||
BIOSMODE: 0x01 0x01 0x03 0x03 0x04 0x04 0x06 0x0D 0x0E 0x10 0x12 0x13
|
||||
CRTC[0x00]: HTOTAL 0x2D 0x2D 0x5F 0x5F 0x2D 0x2D 0x5F 0x2D 0x5F 0x5F 0x5F 0x5F
|
||||
CRTC[0x01]: HDISP_END 0x27 0x27 0x4F 0x4F 0x27 0x27 0x4F 0x27 0x4F 0x4F 0x4F 0x4F
|
||||
CRTC[0x02]: HBLANK_START 0x28 0x28 0x50 0x50 0x28 0x28 0x50 0x28 0x50 0x50 0x50 0x50
|
||||
|
|
@ -138,13 +129,8 @@ the IBM VGA supports:
|
|||
ATC[0x12]: PLANES 0x0F 0x0F 0x0F 0x0F 0x03 0x03 0x01 0x0F 0x0F 0x0F 0x0F 0x0F
|
||||
ATC[0x13]: HPAN 0x08 0x08 0x08 0x08 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
||||
|
||||
In the process of building this table, I also discovered that INT 0x10 mode 0x0D display is garbled, and that all
|
||||
graphics modes >= 0x0D are misdetected as BIOSMODE 0x12.
|
||||
|
||||
All these issues are under investigation.
|
||||
|
||||
In addition, I've created a [VGA Tests](/tests/pc/vga/) directory to hold VGA test and sample code that I want PCjs
|
||||
to run successfully. See that directory for more details.
|
||||
In addition, I've created a [VGA Tests](/tests/pc/vga/) directory to hold VGA test and sample code that PCjs can
|
||||
now successfully run (for the most part). See that directory for more details.
|
||||
|
||||
*[@jeffpar](http://twitter.com/jeffpar)*
|
||||
*June 1, 2015 (Updated July 3, 2015)*
|
||||
*June 1, 2015 (Updated July 9, 2015)*
|
||||
|
|
|
|||
|
|
@ -1,281 +0,0 @@
|
|||
Compaq DeskPro 386 Disk Controller
|
||||
---
|
||||
In short, it isn't working.
|
||||
|
||||
So let's boot a [DeskPro 386](/devices/pc/machine/compaq/deskpro386/ega/2048kb/?gort=debug) machine,
|
||||
enable HDC and Port messages in the Debugger (`m hdc on;m port on`), and see what's up.
|
||||
|
||||
notice: Type 2 "20Mb Hard Disk" is fixed disk 0
|
||||
notice: Mounted diskette "PC-DOS 3.00 (Disk 1)" in drive A
|
||||
notice: Mounted diskette "PC-DOS 3.00 (Disk 2)" in drive B
|
||||
ramLow: 640Kb allocated
|
||||
ramLow: ROM BIOS memory test has NOT been disabled
|
||||
ramCPQ: 384Kb allocated
|
||||
ramCPQ: Compaq memory at 0xFA0000
|
||||
ramExt: 1024Kb allocated
|
||||
ramExt: Extended memory at 0x100000
|
||||
PCjs v1.x.x
|
||||
Copyright © 2012-2015 Jeff Parsons <Jeff@pcjs.org>
|
||||
License: GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||
Type ? for list of debugger commands
|
||||
EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000304
|
||||
ESP=00000000 EBP=00000000 ESI=00000000 EDI=00000000
|
||||
SS=0000 DS=0000 ES=0000 FS=0000 GS=0000 PS=00000002 V0 D0 I0 T0 S0 Z0 A0 P0 C0
|
||||
F000:FFF0 EA05F900F0 JMP F000:F905
|
||||
messages on: port
|
||||
messages on: hdc
|
||||
running
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x00) @F000:F907
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x01) @F000:F926
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x02) @F000:F93C
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x03) @F000:F942
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x04) @F000:F946
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x05) @F000:F95F
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x06) @F000:F978
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x08) @F000:F9AA
|
||||
notice: PIC0(0x20): unsupported OCW2 automatic EOI command: 0x00
|
||||
notice: PIC1(0xA0): unsupported OCW2 automatic EOI command: 0x00
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x09) @F000:F9F1
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x0F) @F000:BAAA
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x10) @F000:BAFB
|
||||
bus.outPort(0x004B,unknown,0x12) @F000:BAFF
|
||||
bus.outPort(0x004B,unknown,0x42) @F000:BB03
|
||||
bus.outPort(0x004B,unknown,0x92) @F000:BB07
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x11) @F000:BB29
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x12) @F000:BB70
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x13) @F000:BB90
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x14) @F000:BBB8
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x15) @F000:BBD8
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x17) @F000:BC08
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x18) @F000:BC14
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x40) @F000:B552
|
||||
CompaqController.writeByte(0x0000,0xFF) @0018:87B4
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x2F) @0018:87B4
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x41) @F000:B572
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x42) @F000:B599
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x43) @F000:B5C4
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x44) @F000:B5D2
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x45) @F000:B600
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x43) @F000:B5C4
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x44) @F000:B5D2
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x45) @F000:B600
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x46) @F000:B61C
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x19) @F000:BC2C
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x30) @F000:A8B0
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x31) @F000:A905
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x32) @F000:A91D
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x33) @F000:A93B
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x34) @F000:A953
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x36) @F000:A991
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x38) @F000:A99C
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x39) @F000:A9BC
|
||||
bus.inPort(0x03BC,unknown) @F000:A9CA
|
||||
bus.outPort(0x03BC,unknown,0x00) @F000:A9CD
|
||||
bus.inPort(0x03BC,unknown) @F000:A9D0
|
||||
bus.inPort(0x0378,unknown) @F000:A9CA
|
||||
bus.outPort(0x0378,unknown,0x00) @F000:A9CD
|
||||
bus.inPort(0x0378,unknown) @F000:A9D0
|
||||
bus.inPort(0x0278,unknown) @F000:A9CA
|
||||
bus.outPort(0x0278,unknown,0x00) @F000:A9CD
|
||||
bus.inPort(0x0278,unknown) @F000:A9D0
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x3A) @F000:A9DE
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x3B) @F000:A9FB
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x52) @F000:AA41
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x53) @F000:AA54
|
||||
bus.outPort(0x46E8,unknown,0x16) @C000:009C
|
||||
bus.outPort(0x46E9,unknown,0x00) @C000:009C
|
||||
bus.outPort(0x0102,unknown,0x01) @C000:00A3
|
||||
bus.outPort(0x0103,unknown,0x00) @C000:00A3
|
||||
bus.outPort(0x46E8,unknown,0x0E) @C000:00AA
|
||||
bus.outPort(0x46E9,unknown,0x00) @C000:00AA
|
||||
bus.outPort(0x4AE8,unknown,0x00) @C000:00B0
|
||||
bus.outPort(0x4AE9,unknown,0x00) @C000:00B0
|
||||
Card.setMemoryAccess(0x1510): missing readByte handler
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x8C) @F000:D05C
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x1A) @F000:BC79
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x50) @F000:AA76
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x51) @F000:AA7F
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x52) @F000:AA9C
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x1B) @F000:BC80
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x1C) @F000:BC87
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x90) @F000:CC53
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x91) @F000:CC85
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x1D) @F000:BC8E
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x93) @F000:CC8A
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x94) @F000:CD06
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x95) @F000:CD3C
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x96) @F000:CD6A
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x2D) @F000:BC95
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x0D) @F000:E107
|
||||
bus.outPort(0x004B,unknown,0x12) @F000:E10B
|
||||
bus.outPort(0x0048,unknown,0x22) @F000:E112
|
||||
bus.outPort(0x004B,unknown,0x00) @F000:E139
|
||||
bus.inPort(0x0048,unknown) @F000:E13B
|
||||
bus.inPort(0x0048,unknown) @F000:E13E
|
||||
bus.outPort(0x004B,unknown,0x12) @F000:E11A
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x0E) @F000:E11E
|
||||
bus.outPort(0x004B,unknown,0x92) @F000:E122
|
||||
bus.outPort(0x004A,unknown,0x22) @F000:E129
|
||||
bus.outPort(0x004B,unknown,0x80) @F000:E139
|
||||
bus.inPort(0x004A,unknown) @F000:E13B
|
||||
bus.inPort(0x004A,unknown) @F000:E13E
|
||||
bus.outPort(0x004B,unknown,0x92) @F000:E131
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x1E) @F000:BC9C
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x80) @F000:CFDF
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x81) @F000:CFF7
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x82) @F000:D011
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x84) @F000:D02D
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x1F) @F000:BCA3
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x75) @F000:F74D
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x76) @F000:F761
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x77) @0030:F772
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x78) @0030:F790
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x00) @F000:F907
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x07) @F000:F986
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x08) @F000:F9AA
|
||||
notice: PIC0(0x20): unsupported OCW2 automatic EOI command: 0x00
|
||||
notice: PIC1(0xA0): unsupported OCW2 automatic EOI command: 0x00
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x09) @F000:F9F1
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x79) @F000:F7CD
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x7B) @F000:F814
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x20) @F000:BCAA
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x60) @F000:D6E6
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x61) @F000:D704
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x18) @0030:870A
|
||||
CompaqController.readByte(0x0000) returned 0x0F @0030:8710
|
||||
CompaqController.readByte(0x0001) returned 0x0A @0030:8710
|
||||
CompaqController.writeByte(0x0000,0xFF) @0030:8715
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x18) @0030:8715
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x62) @0030:D719
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x63) @0030:D761
|
||||
CompaqController.writeByte(0x0000,0xFF) @0030:84B0
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x70) @0030:DB38
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x71) @0030:DB6D
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x73) @0030:DBF4
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x6D) @0030:DAC0
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x6E) @0030:DAC8
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x6F) @0030:DB19
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x70) @0030:DB38
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x71) @0030:DB6D
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x73) @0030:DBF4
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x65) @0030:D7E6
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x6D) @0030:DAC0
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x6E) @0030:DAC8
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x6F) @0030:DB19
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x70) @0030:DB38
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x71) @0030:DB6D
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x73) @0030:DBF4
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x70) @0030:DB38
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x71) @0030:DB6D
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x73) @0030:DBF4
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x72) @0030:DC01
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x66) @0030:D942
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x67) @0030:D970
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x68) @0030:D99B
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x00) @F000:F907
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x07) @F000:F986
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x08) @F000:F9AA
|
||||
notice: PIC0(0x20): unsupported OCW2 automatic EOI command: 0x00
|
||||
notice: PIC1(0xA0): unsupported OCW2 automatic EOI command: 0x00
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x09) @F000:F9F1
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x69) @F000:D9CC
|
||||
CompaqController.readByte(0x0000) returned 0x0F @0018:880A
|
||||
CompaqController.writeByte(0x0000,0xFF) @0018:8810
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x6C) @F000:DAB1
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xD0) @F000:C82A
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xD1) @F000:C83B
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xD2) @0030:C847
|
||||
CompaqController.writeByte(0x0000,0xFF) @0030:84B0
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x7F) @0030:853E
|
||||
CompaqController.readByte(0x0000) returned 0x0F @0030:85D2
|
||||
CompaqController.writeByte(0x0000,0xFF) @0030:85D7
|
||||
CompaqController.writeByte(0x0000,0xFC) @0030:863C
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xD3) @0030:C881
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xD4) @F000:C8A5
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x7D) @F000:F482
|
||||
CompaqController.readByte(0x0000) returned 0x0F @0028:F4BC
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x7E) @F000:F686
|
||||
CompaqController.writeByte(0x0000,0xFE) @0018:87B4
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x2F) @0018:87B4
|
||||
CompaqController.writeByte(0x0000,0xFF) @0018:87B4
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x2F) @0018:87B4
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x21) @F000:BCBB
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x23) @F000:BCC2
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x8B) @F000:CEDD
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x8C) @F000:D05C
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x86) @F000:CF04
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x87) @F000:CF2A
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x88) @F000:CF41
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x89) @F000:CF4E
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x8D) @F000:CF8E
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x22) @F000:BCC9
|
||||
CompaqController.readByte(0x0000) returned 0x0F @0018:880A
|
||||
CompaqController.writeByte(0x0000,0xFF) @0018:8810
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x24) @F000:BCEB
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x25) @F000:BD19
|
||||
hdcAT.outPort(0x01F6,DRVHD,0xA0) @F000:91B5
|
||||
hdcAT.outPort(0x03F6,FDR,0x00) @F000:C5B5
|
||||
hdcAT.outPort(0x03F6,FDR,0x04) @F000:C5B8
|
||||
hdcAT.outPort(0x03F6,FDR,0x00) @F000:C5BE
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xA0) @F000:83FE
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xA1) @F000:8408
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xA2) @F000:8415
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xA3) @F000:8430
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xA6) @F000:8490
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xA8) @F000:91BE
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xAF) @F000:920A
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x26) @F000:BD20
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xB0) @F000:C397
|
||||
hdcAT.outPort(0x01F2,SECCNT,0x55) @F000:C3A6
|
||||
hdcAT.inPort(0x01F2,SECCNT): 0x55 @F000:C3A9
|
||||
hdcAT.outPort(0x03F6,FDR,0x00) @F000:C5B5
|
||||
hdcAT.outPort(0x03F6,FDR,0x04) @F000:C5B8
|
||||
hdcAT.outPort(0x03F6,FDR,0x00) @F000:C5BE
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:C574
|
||||
hdcAT.inPort(0x01F1,ERROR): 0x01 @F000:C588
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xB3) @F000:C3E3
|
||||
hdcAT.outPort(0x03F6,FDR,0x00) @F000:B4B0
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B367
|
||||
hdcAT.outPort(0x01F6,DRVHD,0xA0) @F000:B2C8
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B367
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B52F
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:C41F
|
||||
hdcAT.outPort(0x03F6,FDR,0x00) @F000:B4B0
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B367
|
||||
hdcAT.outPort(0x01F6,DRVHD,0xA0) @F000:B2C8
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B367
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B52F
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:C41F
|
||||
hdcAT.outPort(0x03F6,FDR,0x00) @F000:B4B0
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B367
|
||||
hdcAT.outPort(0x01F6,DRVHD,0xA0) @F000:B2C8
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B367
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B52F
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:C41F
|
||||
hdcAT.outPort(0x03F6,FDR,0x00) @F000:B4B0
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B367
|
||||
hdcAT.outPort(0x01F6,DRVHD,0xA0) @F000:B2C8
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B367
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B52F
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:C41F
|
||||
hdcAT.outPort(0x03F6,FDR,0x00) @F000:B4B0
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B367
|
||||
hdcAT.outPort(0x01F6,DRVHD,0xA0) @F000:B2C8
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B367
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:B52F
|
||||
hdcAT.inPort(0x01F7,STATUS): 0x40 @F000:C41F
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xB6) @F000:C54B
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0xB8) @F000:C3C3
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x27) @F000:BD27
|
||||
bus.outPort(0x03BE,unknown,0xEC) @F000:BD2E
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x28) @F000:BD31
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x29) @F000:BD38
|
||||
chipset.outPort(0x0084,DMA.SPARE0.PAGE,0x8C) @F000:D05C
|
||||
stopped (67172989 ops, 305957247 cycles, 69937 ms, 4374755 hz)
|
||||
EAX=00000000 EBX=0000B95B ECX=00000000 EDX=00000000
|
||||
ESP=000000DC EBP=000000DE ESI=00000020 EDI=0000E411
|
||||
SS=0030 DS=0040 ES=F000 FS=0000 GS=0304 PS=00000246 V0 D0 I1 T0 S0 Z1 A0 P1 C0
|
||||
F000:DCAC 74F8 JZ DCA6
|
||||
|
||||
*[@jeffpar](http://twitter.com/jeffpar)*
|
||||
*June 20, 2015*
|
||||
|
|
@ -6571,6 +6571,7 @@ xbc38: in al,0x64 ; 0000BC38 E464 '.d'
|
|||
mov cx,0x1d ; 0000BC43 B91D00 '...'
|
||||
mov bp,0xbc4c ; 0000BC46 BD4CBC '.L.'
|
||||
jmp xc7f7 ; 0000BC49 E9AB0B '...'
|
||||
|
||||
xbc4c: jmp short xbc4c ; 0000BC4C Hang the machine
|
||||
|
||||
xbc4e: mov cx,0x2 ; 0000BC4E B90200 '...'
|
||||
|
|
@ -7756,6 +7757,9 @@ xc62f: push bx ; 0000C62F 53 'S'
|
|||
pop bx ; 0000C636 5B '['
|
||||
ret ; 0000C637 C3 '.'
|
||||
|
||||
;
|
||||
; Wrapper around delay function
|
||||
;
|
||||
xc638: push bp ; 0000C638 55 'U'
|
||||
push ax ; 0000C639 50 'P'
|
||||
push cx ; 0000C63A 51 'Q'
|
||||
|
|
@ -7765,8 +7769,10 @@ xc638: push bp ; 0000C638 55 'U'
|
|||
pop bp ; 0000C640 5D ']'
|
||||
ret ; 0000C641 C3 '.'
|
||||
|
||||
;
|
||||
; Delay function (delay based on BX)
|
||||
;
|
||||
xc642: mov cx,bx ; 0000C642 8BCB '..'
|
||||
|
||||
xc644: pushf ; 0000C644 9C '.'
|
||||
cli ; 0000C645 FA '.'
|
||||
mov al,0x0 ; 0000C646 B000 '..'
|
||||
|
|
@ -7777,14 +7783,10 @@ xc644: pushf ; 0000C644 9C '.'
|
|||
push cs ; 0000C650 0E '.'
|
||||
call xc657 ; 0000C651 E80300 '...'
|
||||
jmp short xc658 ; 0000C654 EB02 '..'
|
||||
|
||||
nop ; 0000C656 90 '.'
|
||||
|
||||
xc657: iret ; 0000C657 CF '.'
|
||||
|
||||
xc658: xchg al,ah ; 0000C658 86C4 '..'
|
||||
mov bx,ax ; 0000C65A 8BD8 '..'
|
||||
|
||||
xc65c: pushf ; 0000C65C 9C '.'
|
||||
cli ; 0000C65D FA '.'
|
||||
mov al,0x0 ; 0000C65E B000 '..'
|
||||
|
|
@ -7795,11 +7797,8 @@ xc65c: pushf ; 0000C65C 9C '.'
|
|||
push cs ; 0000C668 0E '.'
|
||||
call xc66f ; 0000C669 E80300 '...'
|
||||
jmp short xc670 ; 0000C66C EB02 '..'
|
||||
|
||||
nop ; 0000C66E 90 '.'
|
||||
|
||||
xc66f: iret ; 0000C66F CF '.'
|
||||
|
||||
xc670: xchg al,ah ; 0000C670 86C4 '..'
|
||||
push bx ; 0000C672 53 'S'
|
||||
sub bx,ax ; 0000C673 2BD8 '+.'
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
<keyboard ref="/devices/pc/keyboard/keyboard-minimal-functions.xml"/>
|
||||
<debugger id="debugger" messages="fault|port" commands="m int on"/>
|
||||
<panel ref="/devices/pc/panel/btpanel.xml"/>
|
||||
<fdc ref="/disks/pc/library.xml" automount='{A: {name: "PC-DOS 3.00 (Disk 1)", path: "/disks/pc/dos/ibm/3.00/PCDOS300-DISK1.json"}, B: {name: "VGA Tests (Black Book)", path: "/tests/pc/vga/"}}'/>
|
||||
<fdc ref="/disks/pc/library.xml" automount='{A: {name: "PC-DOS 3.00 (Disk 1)", path: "/disks/pc/dos/ibm/3.00/PCDOS300-DISK1.json"}, B: {name: "VGA Tests (Black Book)", path: "/tests/pc/vga/VGABIN.json"}}'/>
|
||||
<hdc id="hdcAT" type="at" drives='[{name:"20Mb Hard Disk",type:2}]'/>
|
||||
<chipset id="chipset" model="deskpro386" floppies="[1200,1200]" monitor="vga"/>
|
||||
<serial id="com1" adapter="1"/>
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
<manifest ref="/apps/pc/1985/rogue/manifest.xml" disk="disk01"/>
|
||||
<manifest ref="/apps/pc/1987/thinktank/manifest.xml" disk="disk01"/>
|
||||
<manifest ref="/apps/pc/1992/moria/manifest.xml" disk="disk01"/>
|
||||
<disk path="/tests/pc/vga/">VGA Tests (Black Book)</disk>
|
||||
<disk path="/tests/pc/vga/VGABIN.json">VGA Tests (Black Book)</disk>
|
||||
</control>
|
||||
<control type="button" binding="loadDrive" padright="8px">Load</control>
|
||||
<control type="description" binding="descDisk" padright="8px"/>
|
||||
|
|
|
|||
|
|
@ -78,21 +78,22 @@ List of VGA Samples from [Michael Abrash's Graphics Programming Black Book](http
|
|||
|
||||
---
|
||||
|
||||
Also, I've updated the PCjs [Library](/disks/pc/library.xml) disk collection to include a disk image of this directory:
|
||||
Also, I've updated the PCjs [Library](/disks/pc/library.xml) disk collection to include a disk containing executables
|
||||
built from the sources in this directory:
|
||||
|
||||
<disk path="/tests/pc/vga/VGABIN.json">VGA Tests (Black Book)</disk>
|
||||
|
||||
The VGABIN disk image was built with this command:
|
||||
|
||||
diskdump --dir=bin --format=json --output=VGABIN.json
|
||||
|
||||
Alternatively, if *path* refers to a directory (ending with a slash) instead of a disk image, the PCjs client will ask
|
||||
the PCjs web server to enumerate the contents of that directory and send back a JSON-encoded disk image containing all
|
||||
the files in that directory (including any subdirectories) every time that disk is requested. Since this puts an added
|
||||
burden on the server, it's best to do this only when running PCjs from a local PCjs web server.
|
||||
|
||||
<disk path="/tests/pc/vga/">VGA Tests (Black Book)</disk>
|
||||
|
||||
When *path* refers to a directory (ending with a slash) instead of a disk image, the PCjs client will ask the PCjs web
|
||||
server to enumerate the contents of that directory and send back a JSON-encoded disk image containing all the files in
|
||||
that directory (including any subdirectories) every time that disk is requested. Since this puts an added burden on the
|
||||
server, it's best to do this only when running PCjs from a local PCjs web server.
|
||||
|
||||
Since the contents of this particular directory will probably be in flux for a while, I've opted for this approach.
|
||||
Once things settle down, I'll generate a JSON-encoded disk image containing a snapshot of this directory, using the
|
||||
PCjs [DiskDump](/modules/diskdump/) module:
|
||||
|
||||
diskdump --dir=. --format=img --output=TESTVGA.img --overwrite
|
||||
|
||||
One advantage of using [DiskDump](/modules/diskdump/) is that it automatically converts linefeeds in known text files
|
||||
(including ASM files) into DOS-compatible CR/LF sequences.
|
||||
|
||||
|
|
@ -104,5 +105,5 @@ I've updated a [Compaq DeskPro 386 Machine](/devices/pc/machine/compaq/deskpro38
|
|||
automount='{A: {name: "PC-DOS 3.00 (Disk 1)",
|
||||
path: "/disks/pc/dos/ibm/3.00/PCDOS300-DISK1.json"},
|
||||
B: {name: "VGA Tests (Black Book)",
|
||||
path: "/tests/pc/vga/"}
|
||||
path: "/tests/pc/vga/VGABIN.json"}
|
||||
}' />
|
||||
|
|
|
|||
1
tests/pc/vga/VGABIN.json
Normal file
1
tests/pc/vga/VGABIN.json
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue