Added Debugger "int" command to manually request interrupts
This commit is contained in:
parent
65ecb282ad
commit
276c36334e
11 changed files with 1328 additions and 44 deletions
|
|
@ -5,7 +5,6 @@ permalink: /devices/pc8080/machine/invaders/
|
|||
machines:
|
||||
- type: pc8080
|
||||
id: invaders
|
||||
debugger: true
|
||||
---
|
||||
|
||||
Space Invaders (1978)
|
||||
|
|
|
|||
27
devices/pc8080/machine/invaders/debugger/README.md
Normal file
27
devices/pc8080/machine/invaders/debugger/README.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
layout: page
|
||||
title: Space Invaders (1978) with Debugger
|
||||
permalink: /devices/pc8080/machine/invaders/debugger/
|
||||
machines:
|
||||
- type: pc8080
|
||||
id: invaders
|
||||
debugger: true
|
||||
---
|
||||
|
||||
Space Invaders (1978) with Debugger
|
||||
-----------------------------------
|
||||
|
||||
The [PC8080](/modules/pc8080/) machine below is configured to run [Space Invaders](/devices/pc8080/machine/invaders/)
|
||||
with a Control Panel and Debugger. It is currently playable only in desktop browsers and uses the following hard-coded
|
||||
key mappings:
|
||||
|
||||
- 1: One Player
|
||||
- 2: Two Player
|
||||
- 3: Insert Coin
|
||||
- A: Move Left
|
||||
- D: Move Right
|
||||
- L: Fire Missile
|
||||
|
||||
Click the "Run" button when you're ready to start the simulation.
|
||||
|
||||
{% include machine.html id="invaders" %}
|
||||
24
devices/pc8080/machine/invaders/debugger/machine.xml
Normal file
24
devices/pc8080/machine/invaders/debugger/machine.xml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pc8080/1.23.3/machine.xsl"?>
|
||||
<machine id="invaders" class="pc8080" border="1" pos="center" background="#FAEBD7">
|
||||
<name pos="center">Space Invaders</name>
|
||||
<computer id="computer" busWidth="16"/>
|
||||
<cpu id="cpu8080" model="8080" cycles="2000000" autoStart="true"/>
|
||||
<rom id="romH" addr="0x0000" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-H.json"/>
|
||||
<rom id="romG" addr="0x0800" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-G.json"/>
|
||||
<rom id="romF" addr="0x1000" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-F.json"/>
|
||||
<rom id="romE" addr="0x1800" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-E.json"/>
|
||||
<ram id="ram" addr="0x2000" size="0x0400"/>
|
||||
<video id="video" screenWidth="896" screenHeight="1024" bufferRotate="-90" smoothing="false" bufferAddr="0x2400" bufferCols="256" bufferRows="224" bufferBits="1" bufferLeft="0" interruptRate="120" width="40%" pos="left" padding="8px">
|
||||
<menu>
|
||||
<title>224x256 Screen (Rotated)</title>
|
||||
<control type="container" pos="right">
|
||||
<control type="button" binding="fullScreen" padleft="8px;line-height:1em">Full Screen</control>
|
||||
</control>
|
||||
</menu>
|
||||
</video>
|
||||
<chipset id="chipset" model="SI1978"/>
|
||||
<keyboard id="keyboard"/>
|
||||
<panel ref="/devices/pc8080/panel/left.xml"/>
|
||||
<debugger id="debugger" commands="s 8086"/>
|
||||
</machine>
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
<rom id="romF" addr="0x1000" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-F.json"/>
|
||||
<rom id="romE" addr="0x1800" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-E.json"/>
|
||||
<ram id="ram" addr="0x2000" size="0x0400"/>
|
||||
<video id="video" screenWidth="896" screenHeight="1024" bufferRotate="-90" smoothing="false" bufferAddr="0x2400" bufferCols="256" bufferRows="224" bufferBits="1" bufferLeft="0" interruptRate="120" width="40%" pos="left" padding="8px">
|
||||
<video id="video" screenWidth="896" screenHeight="1024" bufferRotate="-90" smoothing="false" bufferAddr="0x2400" bufferCols="256" bufferRows="224" bufferBits="1" bufferLeft="0" interruptRate="120" padding="8px">
|
||||
<menu>
|
||||
<title>224x256 Screen (Rotated)</title>
|
||||
<control type="container" pos="right">
|
||||
|
|
@ -19,6 +19,4 @@
|
|||
</video>
|
||||
<chipset id="chipset" model="SI1978"/>
|
||||
<keyboard id="keyboard"/>
|
||||
<panel ref="/devices/pc8080/panel/left.xml"/>
|
||||
<debugger id="debugger" commands="s 8086"/>
|
||||
</machine>
|
||||
|
|
|
|||
|
|
@ -26,5 +26,5 @@
|
|||
<chipset id="chipset" model="VT100"/>
|
||||
<keyboard id="keyboard"/>
|
||||
<panel ref="/devices/pc8080/panel/wide.xml"/>
|
||||
<debugger id="debugger" messages="port|mem" commands="s 8086"/>
|
||||
<debugger id="debugger" messages="chipset|mem" commands="s 8086"/>
|
||||
</machine>
|
||||
|
|
|
|||
|
|
@ -64,6 +64,8 @@ and passed on to the PC8080 Debugger. Here are the rebuild steps:
|
|||
grep -E "[0-9]+ [0-9A-D]+.*;;" VT100.lst | sed -E "s/ *[0-9]+ ([0-9A-F]+).*;(;.*)/ \1 . \2/" > VT100.map
|
||||
filedump --file=VT100.bin --format=bytes --output=VT100.json --comments --overwrite
|
||||
|
||||
You can omit `--comments` to reduce the size of the [VT100.json](VT100.json) file.
|
||||
|
||||
Some [VT100.asm](VT100.asm) clean-up remains, because there are still chunks of data that were incorrectly disassembled as code.
|
||||
From a reassembly standpoint, it doesn't matter too much, because such instructions get reassembled into the same original binary
|
||||
patterns, but from a readability standpoint, it's a nuisance.
|
||||
|
|
|
|||
|
|
@ -3703,8 +3703,8 @@ X18d7: in 42h
|
|||
jnz X18d7
|
||||
mvi a,2fh ;; Write 0x2fh (standby) to nvr latch
|
||||
out 62h
|
||||
lxi h,X21d3 ;; HL=X21d3
|
||||
mvi b,0eh ;; B= 14 -- we're reading 14 bits
|
||||
lxi h,X21d3 ;; HL = X21d3
|
||||
mvi b,0eh ;; B = 14 -- we're reading 14 bits
|
||||
X18e6: in 42h
|
||||
ana c
|
||||
jz X18e6
|
||||
|
|
@ -3726,7 +3726,7 @@ X1900: in 42h
|
|||
jnz X18f6 ;; read next bit
|
||||
mvi a,2fh ;; send standby
|
||||
out 62h
|
||||
lxi d,X21d3 ;; DE=0x21d3
|
||||
lxi d,X21d3 ;; DE = 0x21d3
|
||||
mvi b,0eh ;; B = 14
|
||||
lxi h,X0000 ;; HL = 0
|
||||
X1916: dad h ;;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue