More COMPAQ tweaks
This commit is contained in:
parent
8cd37b58e9
commit
3d514e4d6b
21 changed files with 147 additions and 48 deletions
|
|
@ -12,3 +12,47 @@ Our COMPAQ [EGA ROM BIOS](000412-001B/compaq-ega.json) comes from
|
|||
|
||||
cd 000412-001B
|
||||
filedump --file=http://bitsavers.trailing-edge.com/pdf/compaq/firmware/000412-001B_EGA/108281-001.bin --output=compaq-ega.json
|
||||
|
||||
### Font Information
|
||||
|
||||
As noted in [Video.onROMLoad()](/modules/pcjs/lib/video.js), the Video component needs to know where the card's
|
||||
font data is located:
|
||||
|
||||
For EGA cards, in the absence of any parameters, we assume that we're receiving the original
|
||||
IBM EGA ROM, which stores its 8x14 font data at 0x2230 as one continuous sequence; the total size
|
||||
of the 8x14 font is 0xE00 bytes.
|
||||
|
||||
At 0x3030, there is an "ALPHA SUPPLEMENT" table, which contains 15 bytes per row instead of 14,
|
||||
because each row is preceded by one byte containing the corresponding ASCII code; there are 20
|
||||
entries in the supplemental table, for a total size of 0x12C bytes.
|
||||
|
||||
Finally, at 0x3160, we have the 8x8 font data (also known as the thicker "double dot" CGA font);
|
||||
the total size of the 8x8 font is 0x800 bytes. No other font data is present in the EGA ROM;
|
||||
the thin 5x7 "single dot" CGA font is notably absent, which is fine, because we never loaded it for
|
||||
the MDA/CGA either.
|
||||
|
||||
TODO: Determine how the supplemental table is used and whether we need to add some "run-time"
|
||||
font generation to support it (as opposed to "init-time" generation, which is all we do now).
|
||||
There's probably a similar need for user-defined fonts; for now, they're simply not supported.
|
||||
|
||||
For reference, here are the first 0x80 bytes at offset 0x2230 from this ROM, which should contain the font data
|
||||
for the first 9 8x14 characters:
|
||||
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0x00002230 ................
|
||||
0x7E,0x81,0xA5,0x81,0x81,0xBD,0x99,0x81,0x7E,0x00,0x00,0x00,0x00,0x00,0x7E,0xFF, // 0x00002240 ~.......~.....~.
|
||||
0xDB,0xFF,0xFF,0xC3,0xE7,0xFF,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0xFE,0xFE, // 0x00002250 ......~......l..
|
||||
0xFE,0xFE,0x7C,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x38,0x7C,0xFE,0x7C, // 0x00002260 ..|8........8|.|
|
||||
0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3C,0x3C,0xE7,0xE7,0xE7,0x18,0x18, // 0x00002270 8...............
|
||||
0x3C,0x00,0x00,0x00,0x00,0x00,0x18,0x3C,0x7E,0xFF,0xFF,0x7E,0x18,0x18,0x3C,0x00, // 0x00002280 ........~..~....
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00,0x00,0x00,0x00, // 0x00002290 ................
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xC3,0xC3,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, // 0x000022A0 ................
|
||||
|
||||
Happily, COMPAQ provided excellent compatibility with IBM's EGA ROM, because if you compare the above font data to
|
||||
[IBM's EGA Font Data](/devices/pc/video/ibm/ega/#font-information), you'll see that it matches.
|
||||
|
||||
However, any card where the ROM font data is in a non-standard location can still be used. You simply
|
||||
add the 8x14 and 8x8 font data offsets to the ROM component's *notify* attribute.
|
||||
|
||||
For example, here's how we deal with the font data offsets used by the IBM VGA:
|
||||
|
||||
<rom id="romVGA" addr="0xc0000" size="0x6000" file="ibm-vga.json" notify="videoVGA[0x378d,0x3f8d]"/>
|
||||
|
|
|
|||
12
devices/pc/video/compaq/ega/compaq-ega-256kb-autolockfs.xml
Normal file
12
devices/pc/video/compaq/ega/compaq-ega-256kb-autolockfs.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<video id="videoEGA" model="ega" memory="0x40000" screenwidth="640" screenheight="350" touchscreen="mouse" autolock="true" pos="center" padding="8px">
|
||||
<menu>
|
||||
<title>COMPAQ Enhanced Color Display</title>
|
||||
<control type="container" pos="right">
|
||||
<control type="led" label="Caps" binding="caps-lock" padleft="8px"/>
|
||||
<control type="led" label="Num" binding="num-lock" padleft="8px"/>
|
||||
<control type="led" label="Scroll" binding="scroll-lock" padleft="8px"/>
|
||||
<control type="button" binding="fullScreen" padleft="8px">Full Screen</control>
|
||||
</control>
|
||||
</menu>
|
||||
</video>
|
||||
|
|
@ -16,3 +16,37 @@ The symbol information in the MAP file will be automatically converted and appen
|
|||
The PCjs server's Dump API can be used as well:
|
||||
|
||||
http://www.pcjs.org/api/v1/dump?file=http://archive.pcjs.org/devices/pc/video/ibm/ega/ibm-ega.rom&format=bytes&decimal=true
|
||||
|
||||
### Font Information
|
||||
|
||||
As noted in [Video.onROMLoad()](/modules/pcjs/lib/video.js), the Video component needs to know where the card's
|
||||
font data is located:
|
||||
|
||||
For EGA cards, in the absence of any parameters, we assume that we're receiving the original
|
||||
IBM EGA ROM, which stores its 8x14 font data at 0x2230 as one continuous sequence; the total size
|
||||
of the 8x14 font is 0xE00 bytes.
|
||||
|
||||
At 0x3030, there is an "ALPHA SUPPLEMENT" table, which contains 15 bytes per row instead of 14,
|
||||
because each row is preceded by one byte containing the corresponding ASCII code; there are 20
|
||||
entries in the supplemental table, for a total size of 0x12C bytes.
|
||||
|
||||
Finally, at 0x3160, we have the 8x8 font data (also known as the thicker "double dot" CGA font);
|
||||
the total size of the 8x8 font is 0x800 bytes. No other font data is present in the EGA ROM;
|
||||
the thin 5x7 "single dot" CGA font is notably absent, which is fine, because we never loaded it for
|
||||
the MDA/CGA either.
|
||||
|
||||
TODO: Determine how the supplemental table is used and whether we need to add some "run-time"
|
||||
font generation to support it (as opposed to "init-time" generation, which is all we do now).
|
||||
There's probably a similar need for user-defined fonts; for now, they're simply not supported.
|
||||
|
||||
For reference, here are the first 0x80 bytes at offset 0x2230 from this ROM, which contain the font data
|
||||
for the first 9 8x14 characters:
|
||||
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0x00002230 ................
|
||||
0x7E,0x81,0xA5,0x81,0x81,0xBD,0x99,0x81,0x7E,0x00,0x00,0x00,0x00,0x00,0x7E,0xFF, // 0x00002240 ~.......~.....~.
|
||||
0xDB,0xFF,0xFF,0xC3,0xE7,0xFF,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0xFE,0xFE, // 0x00002250 ......~......l..
|
||||
0xFE,0xFE,0x7C,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x38,0x7C,0xFE,0x7C, // 0x00002260 ..|8........8|.|
|
||||
0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3C,0x3C,0xE7,0xE7,0xE7,0x18,0x18, // 0x00002270 8...............
|
||||
0x3C,0x00,0x00,0x00,0x00,0x00,0x18,0x3C,0x7E,0xFF,0xFF,0x7E,0x18,0x18,0x3C,0x00, // 0x00002280 ........~..~....
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00,0x00,0x00,0x00, // 0x00002290 ................
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xC3,0xC3,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, // 0x000022A0 ................
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<video id="videoEGA" model="ega" memory="0x20000" screenwidth="640" screenheight="350" width="640px" autolock="true" pos="center" padding="8px">
|
||||
<menu>
|
||||
<title>Enhanced Color Display</title>
|
||||
<title>IBM Enhanced Color Display</title>
|
||||
<control type="container" pos="right">
|
||||
<control type="led" label="Caps" binding="caps-lock" padleft="8px"/>
|
||||
<control type="led" label="Num" binding="num-lock" padleft="8px"/>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<video id="videoEGA" model="ega" memory="0x20000" screenwidth="640" screenheight="350" touchscreen="mouse" autolock="true" pos="center" padding="8px">
|
||||
<menu>
|
||||
<title>Enhanced Color Display</title>
|
||||
<title>IBM Enhanced Color Display</title>
|
||||
<control type="container" pos="right">
|
||||
<control type="led" label="Caps" binding="caps-lock" padleft="8px"/>
|
||||
<control type="led" label="Num" binding="num-lock" padleft="8px"/>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<video id="videoEGA" model="ega" memory="0x20000" screenwidth="640" screenheight="350" touchscreen="mouse" pos="center" padding="8px">
|
||||
<menu>
|
||||
<title>Enhanced Color Display</title>
|
||||
<title>IBM Enhanced Color Display</title>
|
||||
<control type="container" pos="right">
|
||||
<control type="led" label="Caps" binding="caps-lock" padleft="8px"/>
|
||||
<control type="led" label="Num" binding="num-lock" padleft="8px"/>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<video id="videoEGA" model="ega" memory="0x40000" screenwidth="640" screenheight="350" width="640px" autolock="true" pos="center" padding="8px">
|
||||
<menu>
|
||||
<title>Enhanced Color Display</title>
|
||||
<title>IBM Enhanced Color Display</title>
|
||||
<control type="container" pos="right">
|
||||
<control type="led" label="Caps" binding="caps-lock" padleft="8px"/>
|
||||
<control type="led" label="Num" binding="num-lock" padleft="8px"/>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<video id="videoEGA" model="ega" memory="0x40000" screenwidth="640" screenheight="350" touchscreen="mouse" autolock="true" pos="center" padding="8px">
|
||||
<menu>
|
||||
<title>Enhanced Color Display</title>
|
||||
<title>IBM Enhanced Color Display</title>
|
||||
<control type="container" pos="right">
|
||||
<control type="led" label="Caps" binding="caps-lock" padleft="8px"/>
|
||||
<control type="led" label="Num" binding="num-lock" padleft="8px"/>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<video id="videoEGA" model="ega" memory="0x40000" screenwidth="640" screenheight="350" touchscreen="mouse" pos="center" padding="8px">
|
||||
<menu>
|
||||
<title>Enhanced Color Display</title>
|
||||
<title>IBM Enhanced Color Display</title>
|
||||
<control type="container" pos="right">
|
||||
<control type="led" label="Caps" binding="caps-lock" padleft="8px"/>
|
||||
<control type="led" label="Num" binding="num-lock" padleft="8px"/>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<video id="videoEGA" model="ega" memory="0x10000" screenwidth="640" screenheight="350" touchscreen="mouse" pos="center" padding="8px">
|
||||
<menu>
|
||||
<title>Enhanced Color Display</title>
|
||||
<title>IBM Enhanced Color Display</title>
|
||||
<control type="container" pos="right">
|
||||
<control type="led" label="Caps" binding="caps-lock" padleft="8px"/>
|
||||
<control type="led" label="Num" binding="num-lock" padleft="8px"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue