More VT100 test machine tweaks
This commit is contained in:
parent
656497535f
commit
bd05c06766
3 changed files with 23 additions and 16 deletions
|
|
@ -34,22 +34,30 @@ It always defaults to address 0x2000 for the first line of character data, but e
|
||||||
containing line attributes and the address of the next line, so the location of subsequent lines will vary,
|
containing line attributes and the address of the next line, so the location of subsequent lines will vary,
|
||||||
depending on the following line attributes:
|
depending on the following line attributes:
|
||||||
|
|
||||||
* Single-width characters (80 or 132 columns)
|
- Single-width characters (80 or 132 columns)
|
||||||
* Double-width characters (40 or 66 columns)
|
- Double-width characters (40 or 66 columns)
|
||||||
|
|
||||||
In addition to single vs. double width, line attributes can also specify double height (along with whether the
|
In addition to single vs. double width, line attributes can also specify double height (along with whether the
|
||||||
top half or bottom half of the character should be displayed).
|
top half or bottom half of the character should be displayed).
|
||||||
|
|
||||||
The VT100 screen displays 800 dots per horizontal scan, and a total of 240 horizontal scans,
|
|
||||||
so for optimum scaling, we define our own screen using multiples of those dimensions (currently 1600x480),
|
|
||||||
and by default, it uses a 10x10 character cell, so the default display dimensions are 80 columns by 24 rows.
|
|
||||||
|
|
||||||
In light of the above, the [machine XML file](machine.xml) must set the Video component's *bufferRAM* property
|
In light of the above, the [machine XML file](machine.xml) must set the Video component's *bufferRAM* property
|
||||||
to "true", indicating that existing RAM should be used, and a new property, *bufferFormat* must be set to "vt100",
|
to "true", indicating that existing RAM should be used, and a new property, *bufferFormat* must be set to "vt100",
|
||||||
enabling support for the VT100's line data format; eg:
|
enabling support for the VT100's line data format; eg:
|
||||||
|
|
||||||
<ram id="ram" addr="0x2000" size="0x0C00"/>
|
<ram id="ram" addr="0x2000" size="0x0C00"/>
|
||||||
<video id="video" screenWidth="1600" screenHeight="480" bufferAddr="0x2000" bufferRAM="true" bufferFormat="vt100" bufferCols="80" bufferRows="24" ...>
|
<video id="video" screenWidth="1600" screenHeight="800" bufferAddr="0x2000" bufferRAM="true" bufferFormat="vt100" bufferCols="80" bufferRows="24" ...>
|
||||||
|
|
||||||
|
The VT100 screen displays 800 dots per horizontal scan, and a total of 240 horizontal scans, and by default,
|
||||||
|
it uses a 10x10 character cell, for a total of 80 columns and 24 rows of characters.
|
||||||
|
|
||||||
|
For optimum scaling, I would normally define the virtual screen size using multiples of the VT100's "dot" dimensions;
|
||||||
|
eg, 1600x960 (a horizontal multiplier of 2 and a vertical multiplier of 4). However, that would give us a virtual screen
|
||||||
|
aspect ratio of 1.67, which is less than the (apparent) 2.0 aspect ratio of a physical screen, so I've changed the test
|
||||||
|
machine's screen dimensions to 1600x800.
|
||||||
|
|
||||||
|
Regarding physical dimensions, a VT100 screen measures 12 inches diagonally, and in 80-column mode, characters measure
|
||||||
|
2.0mm x 3.35mm (in 132-column mode, they measure 1.3mm x 3.35mm). This means that the text area of the screen is roughly
|
||||||
|
160mm x 80mm, implying a screen aspect ratio of 2.0.
|
||||||
|
|
||||||
{% include machine.html id="vt100" %}
|
{% include machine.html id="vt100" %}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
<cpu id="cpu8080" model="8080" cycles="2000000"/>
|
<cpu id="cpu8080" model="8080" cycles="2000000"/>
|
||||||
<rom id="rom" addr="0x0000" size="0x2000" file="/devices/pc8080/rom/vt100/VT100.json"/>
|
<rom id="rom" addr="0x0000" size="0x2000" file="/devices/pc8080/rom/vt100/VT100.json"/>
|
||||||
<ram id="ram" addr="0x2000" size="0x0C00"/>
|
<ram id="ram" addr="0x2000" size="0x0C00"/>
|
||||||
<video id="video" screenWidth="1600" screenHeight="480" smoothing="false" bufferAddr="0x2000" bufferRAM="true" bufferFormat="vt100" bufferCols="80" bufferRows="24" width="40%" pos="left" padding="8px">
|
<video id="video" screenWidth="1600" screenHeight="800" smoothing="false" bufferAddr="0x2000" bufferRAM="true" bufferFormat="vt100" bufferCols="80" bufferRows="24" pos="left" padding="8px">
|
||||||
<menu>
|
<menu>
|
||||||
<title>VT100 Screen</title>
|
<title>VT100 Screen</title>
|
||||||
<control type="container" pos="right">
|
<control type="container" pos="right">
|
||||||
|
|
@ -15,6 +15,6 @@
|
||||||
</menu>
|
</menu>
|
||||||
</video>
|
</video>
|
||||||
<keyboard id="keyboard"/>
|
<keyboard id="keyboard"/>
|
||||||
<panel ref="/devices/pc8080/panel/left.xml"/>
|
<panel ref="/devices/pc8080/panel/wide.xml"/>
|
||||||
<debugger id="debugger" commands="s 8086"/>
|
<debugger id="debugger" commands="s 8086"/>
|
||||||
</machine>
|
</machine>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<panel id="panel" width="100%" padding="8px">
|
<panel id="panel" width="100%" padding="8px">
|
||||||
<name>Control Panel</name>
|
<name>Control Panel</name>
|
||||||
<control type="container" class="pcjs-textarea" width="100%" padright="8px">
|
<control type="container" class="pcjs-textarea" width="99%" padright="8px">
|
||||||
<control type="textarea" binding="print" width="100%" height="252px" pos="relative" style="resize:vertical;"/>
|
<control type="textarea" binding="print" width="100%" height="252px" pos="relative" style="resize:vertical;"/>
|
||||||
</control>
|
</control>
|
||||||
<control type="container" class="pcjs-registers" width="100%" padleft="8px">
|
<control type="container" class="pcjs-registers" width="100%" padleft="8px">
|
||||||
|
|
@ -22,14 +22,13 @@
|
||||||
<control type="description" padleft="16px" padbottom="8px">Speed:</control>
|
<control type="description" padleft="16px" padbottom="8px">Speed:</control>
|
||||||
<control type="description" binding="speed" padleft="4px" padbottom="8px">Stopped</control>
|
<control type="description" binding="speed" padleft="4px" padbottom="8px">Stopped</control>
|
||||||
</control>
|
</control>
|
||||||
<control type="container" padleft="8px" padbottom="8px">
|
<control type="container" padbottom="8px">
|
||||||
<control type="button" binding="run">Run</control>
|
|
||||||
<control type="button" binding="step">Step</control>
|
|
||||||
<control type="button" binding="reset">Reset</control>
|
|
||||||
<control type="button" binding="setSpeed">Fast</control>
|
|
||||||
<control pos=""/>
|
|
||||||
<control type="text" binding="debugInput" width="100px"/>
|
<control type="text" binding="debugInput" width="100px"/>
|
||||||
<control type="button" binding="debugEnter">Enter</control>
|
<control type="button" binding="debugEnter">Enter</control>
|
||||||
<control type="button" binding="clear">Clear</control>
|
<control type="button" binding="clear">Clear</control>
|
||||||
|
<control type="button" binding="run" padleft="32px">Run</control>
|
||||||
|
<control type="button" binding="step">Step</control>
|
||||||
|
<control type="button" binding="reset">Reset</control>
|
||||||
|
<control type="button" binding="setSpeed">Fast</control>
|
||||||
</control>
|
</control>
|
||||||
</panel>
|
</panel>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue