Fixed 8080 bug exposed by the exerciser (but still a long way from 100% passing)
This commit is contained in:
parent
94c1ada877
commit
2a447fa6ae
8 changed files with 1974 additions and 13 deletions
|
|
@ -4,8 +4,8 @@
|
||||||
<name pos="center">8080 Test Machine</name>
|
<name pos="center">8080 Test Machine</name>
|
||||||
<computer id="computer" busWidth="16"/>
|
<computer id="computer" busWidth="16"/>
|
||||||
<cpu id="cpu8080" model="8080" cycles="2000000"/>
|
<cpu id="cpu8080" model="8080" cycles="2000000"/>
|
||||||
<rom id="romTest" addr="0x0100" size="0x0400" file="/devices/pc8080/rom/test/8080PRE.json" writable="true"/>
|
<rom id="romTest" addr="0x0100" size="0x1200" file="/devices/pc8080/rom/test/8080EXER.json" writable="true"/>
|
||||||
<ram id="ramTest" addr="0x0500" size="0xFB00"/>
|
<ram id="ramTest" addr="0x1300" size="0xED00"/>
|
||||||
<panel ref="/devices/pc8080/panel/wide.xml"/>
|
<panel ref="/devices/pc8080/panel/wide.xml"/>
|
||||||
<debugger id="debugger" commands="s 8086"/>
|
<debugger id="debugger"/>
|
||||||
</machine>
|
</machine>
|
||||||
|
|
|
||||||
1284
devices/pc8080/rom/test/8080EXER.MAC
Normal file
1284
devices/pc8080/rom/test/8080EXER.MAC
Normal file
File diff suppressed because it is too large
Load diff
290
devices/pc8080/rom/test/8080EXER.json
Normal file
290
devices/pc8080/rom/test/8080EXER.json
Normal file
|
|
@ -0,0 +1,290 @@
|
||||||
|
{"bytes":[
|
||||||
|
195,19,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,42,6,0,249,17,246,13,14,9,205,234,13,33,
|
||||||
|
58,1,126,35,182,202,47,1,43,205,206,10,195,34,1,17,
|
||||||
|
19,14,14,9,205,234,13,195,0,0,110,1,206,1,46,2,
|
||||||
|
142,2,238,2,78,3,174,3,14,4,110,4,206,4,46,5,
|
||||||
|
142,5,238,5,78,6,174,6,14,7,110,7,206,7,46,8,
|
||||||
|
142,8,238,8,78,9,174,9,14,10,110,10,0,0,255,9,
|
||||||
|
0,0,0,165,196,199,196,38,210,80,160,234,88,102,133,198,
|
||||||
|
222,201,155,48,0,0,0,0,0,0,0,0,0,33,248,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,255,255,255,255,255,255,215,0,255,255,0,0,0,0,100,
|
||||||
|
97,100,32,60,98,44,100,44,104,44,115,112,62,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,198,
|
||||||
|
0,0,0,64,145,60,126,103,122,109,223,97,91,41,11,16,
|
||||||
|
102,178,133,56,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,97,
|
||||||
|
108,117,111,112,32,110,110,46,46,46,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,128,
|
||||||
|
0,0,0,62,197,58,87,77,76,3,1,9,227,102,166,208,
|
||||||
|
59,187,173,63,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,255,0,0,0,0,0,0,255,0,0,0,0,
|
||||||
|
0,0,0,255,255,255,255,215,0,0,0,0,0,0,0,97,
|
||||||
|
108,117,111,112,32,60,98,44,99,44,100,44,101,44,104,44,
|
||||||
|
108,44,109,44,97,62,46,46,46,46,46,46,46,36,255,39,
|
||||||
|
0,0,0,65,33,250,9,96,29,89,165,91,141,121,144,4,
|
||||||
|
142,157,41,24,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,215,255,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,
|
||||||
|
100,97,97,44,99,109,97,44,115,116,99,44,99,109,99,62,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,60,
|
||||||
|
0,0,0,223,74,216,213,152,229,43,138,176,167,27,67,68,
|
||||||
|
90,48,208,1,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,60,
|
||||||
|
105,110,114,44,100,99,114,62,32,97,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,4,
|
||||||
|
0,0,0,35,214,45,67,97,122,128,129,134,90,133,30,134,
|
||||||
|
88,187,155,1,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,60,
|
||||||
|
105,110,114,44,100,99,114,62,32,98,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,3,
|
||||||
|
0,0,0,151,205,171,68,201,141,227,227,204,17,164,232,2,
|
||||||
|
73,77,42,8,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,33,248,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,60,
|
||||||
|
105,110,120,44,100,99,120,62,32,98,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,12,
|
||||||
|
0,0,0,137,215,53,9,91,5,133,159,39,139,8,210,149,
|
||||||
|
5,96,6,1,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,60,
|
||||||
|
105,110,114,44,100,99,114,62,32,99,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,20,
|
||||||
|
0,0,0,234,160,186,95,251,101,28,152,204,56,188,222,67,
|
||||||
|
92,189,3,1,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,60,
|
||||||
|
105,110,114,44,100,99,114,62,32,100,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,19,
|
||||||
|
0,0,0,46,52,29,19,201,40,202,10,103,153,46,58,146,
|
||||||
|
246,84,157,8,0,0,0,0,0,0,0,0,0,0,0,33,
|
||||||
|
248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,60,
|
||||||
|
105,110,120,44,100,99,120,62,32,100,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,28,
|
||||||
|
0,0,0,47,96,13,76,2,36,245,226,244,160,10,161,19,
|
||||||
|
50,37,89,1,0,0,0,0,0,0,0,0,0,0,0,255,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,60,
|
||||||
|
105,110,114,44,100,99,114,62,32,101,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,36,
|
||||||
|
0,0,0,6,21,235,242,221,232,43,38,166,17,26,188,23,
|
||||||
|
6,24,40,1,0,0,0,0,0,0,0,0,0,0,255,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,60,
|
||||||
|
105,110,114,44,100,99,114,62,32,104,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,35,
|
||||||
|
0,0,0,244,195,165,7,109,27,4,79,194,226,42,130,87,
|
||||||
|
224,225,195,8,0,0,0,0,0,0,0,0,0,33,248,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,60,
|
||||||
|
105,110,120,44,100,99,120,62,32,104,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,44,
|
||||||
|
0,0,0,49,128,32,165,86,67,9,180,193,244,162,223,209,
|
||||||
|
60,162,62,1,0,0,0,0,0,0,0,0,0,255,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,60,
|
||||||
|
105,110,114,44,100,99,114,62,32,108,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,52,
|
||||||
|
0,0,0,86,184,124,12,62,229,3,1,126,135,88,218,21,
|
||||||
|
92,55,31,1,0,0,0,255,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,60,
|
||||||
|
105,110,114,44,100,99,114,62,32,109,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,51,
|
||||||
|
0,0,0,111,52,130,212,105,209,182,222,148,164,118,244,83,
|
||||||
|
2,91,133,8,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,33,248,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,60,
|
||||||
|
105,110,120,44,100,99,120,62,32,115,112,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,42,
|
||||||
|
3,1,0,99,152,48,120,119,32,254,177,250,185,184,171,4,
|
||||||
|
6,21,96,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,
|
||||||
|
104,108,100,32,110,110,110,110,46,46,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,34,
|
||||||
|
3,1,0,3,208,114,119,83,127,114,63,234,100,128,225,16,
|
||||||
|
45,233,53,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,115,
|
||||||
|
104,108,100,32,110,110,110,110,46,46,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,1,
|
||||||
|
0,0,0,28,92,70,45,185,142,120,96,177,116,14,179,70,
|
||||||
|
209,204,48,48,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,
|
||||||
|
120,105,32,60,98,44,100,44,104,44,115,112,62,44,110,110,
|
||||||
|
110,110,46,46,46,46,46,46,46,46,46,46,46,36,255,10,
|
||||||
|
0,0,0,168,179,42,29,142,127,172,66,3,1,3,1,198,
|
||||||
|
177,142,239,16,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,255,0,0,0,0,0,0,108,
|
||||||
|
100,97,120,32,60,98,44,100,62,46,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,6,
|
||||||
|
0,0,0,7,196,157,244,61,209,57,3,137,222,85,116,83,
|
||||||
|
192,9,85,56,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,109,
|
||||||
|
118,105,32,60,98,44,99,44,100,44,101,44,104,44,108,44,
|
||||||
|
109,44,97,62,44,110,110,46,46,46,46,46,46,36,255,64,
|
||||||
|
0,0,0,164,114,36,160,172,97,3,1,199,130,143,113,151,
|
||||||
|
143,142,239,63,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,
|
||||||
|
0,0,0,255,255,255,255,215,255,0,0,0,0,0,0,109,
|
||||||
|
111,118,32,60,98,99,100,101,104,108,97,62,44,60,98,99,
|
||||||
|
100,101,104,108,97,62,46,46,46,46,46,46,46,36,255,50,
|
||||||
|
3,1,0,104,253,236,244,160,68,67,181,83,6,186,205,210,
|
||||||
|
79,216,31,8,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,255,0,0,0,0,0,0,115,
|
||||||
|
116,97,32,110,110,110,110,32,47,32,108,100,97,32,110,110,
|
||||||
|
110,110,46,46,46,46,46,46,46,46,46,46,46,36,255,7,
|
||||||
|
0,0,0,146,203,67,109,144,10,132,194,83,12,14,245,145,
|
||||||
|
235,252,64,24,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,215,0,0,0,0,0,0,0,60,
|
||||||
|
114,108,99,44,114,114,99,44,114,97,108,44,114,97,114,62,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,255,2,
|
||||||
|
0,0,0,59,12,146,181,255,108,158,149,3,1,4,1,193,
|
||||||
|
33,231,189,24,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,115,
|
||||||
|
116,97,120,32,60,98,44,100,62,46,46,46,46,46,46,46,
|
||||||
|
46,46,46,46,46,46,46,46,46,46,46,46,46,36,229,126,
|
||||||
|
35,102,111,126,50,127,13,35,229,17,20,0,25,17,222,12,
|
||||||
|
205,77,12,225,229,17,40,0,25,17,6,13,205,77,12,33,
|
||||||
|
6,13,54,1,225,229,17,77,13,1,4,0,126,18,35,19,
|
||||||
|
11,120,177,194,252,10,17,3,1,1,16,0,126,18,35,19,
|
||||||
|
11,120,177,194,12,11,17,44,0,25,235,14,9,205,234,13,
|
||||||
|
205,142,14,58,77,13,254,118,202,58,11,230,223,254,221,194,
|
||||||
|
55,11,58,78,13,254,118,196,46,13,205,141,12,196,177,12,
|
||||||
|
225,202,118,11,17,60,0,25,205,79,14,17,34,14,202,109,
|
||||||
|
11,17,41,14,14,9,205,234,13,205,181,13,17,68,14,14,
|
||||||
|
9,205,234,13,33,162,14,205,181,13,17,76,14,14,9,205,
|
||||||
|
234,13,225,35,35,201,229,62,1,50,236,11,50,16,12,33,
|
||||||
|
222,12,34,237,11,33,6,13,34,17,12,6,4,225,229,17,
|
||||||
|
77,13,205,160,11,6,16,17,3,1,205,160,11,195,35,11,
|
||||||
|
205,169,11,35,5,194,160,11,201,197,213,229,78,17,20,0,
|
||||||
|
25,126,254,0,202,202,11,6,8,15,245,62,0,220,239,11,
|
||||||
|
169,15,79,241,5,194,185,11,6,8,17,20,0,25,126,254,
|
||||||
|
0,202,229,11,6,8,15,245,62,0,220,19,12,169,15,79,
|
||||||
|
241,5,194,214,11,225,209,121,18,19,193,201,0,0,0,197,
|
||||||
|
229,42,237,11,70,33,236,11,126,79,7,119,254,1,194,8,
|
||||||
|
12,42,237,11,35,34,237,11,120,161,225,193,200,62,1,201,
|
||||||
|
0,0,0,197,229,42,17,12,70,33,16,12,126,79,7,119,
|
||||||
|
254,1,194,44,12,42,17,12,35,34,17,12,120,161,225,193,
|
||||||
|
200,62,1,201,245,197,213,229,54,0,84,93,19,11,126,18,
|
||||||
|
35,19,11,120,177,194,62,12,225,209,193,241,201,213,235,1,
|
||||||
|
40,0,205,52,12,235,6,20,14,1,22,0,94,123,161,202,
|
||||||
|
99,12,20,121,7,79,254,1,194,93,12,35,5,194,92,12,
|
||||||
|
122,230,248,15,15,15,111,38,0,122,230,7,60,71,62,128,
|
||||||
|
7,5,194,128,12,209,25,17,20,0,25,119,201,197,213,229,
|
||||||
|
33,222,12,17,20,0,235,25,235,52,126,254,0,202,172,12,
|
||||||
|
71,26,160,202,168,12,54,0,193,209,225,201,35,19,195,153,
|
||||||
|
12,197,213,229,33,6,13,17,20,0,235,25,235,126,183,202,
|
||||||
|
217,12,71,26,160,194,213,12,120,7,254,1,194,211,12,54,
|
||||||
|
0,35,19,119,175,225,209,193,201,35,19,195,189,12,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,197,
|
||||||
|
213,229,243,33,0,0,57,34,169,13,49,5,1,225,225,225,
|
||||||
|
209,193,241,34,151,13,42,17,1,249,42,151,13,0,0,0,
|
||||||
|
0,34,151,13,33,0,0,218,94,13,57,195,96,13,57,55,
|
||||||
|
34,167,13,42,151,13,49,167,13,245,197,213,229,229,229,42,
|
||||||
|
169,13,249,251,42,3,1,34,153,13,33,165,13,126,230,255,
|
||||||
|
119,6,16,17,153,13,33,162,14,26,19,205,102,14,5,194,
|
||||||
|
137,13,225,209,193,241,201,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,126,205,199,13,35,
|
||||||
|
5,194,171,13,201,245,197,229,6,4,126,205,199,13,35,5,
|
||||||
|
194,186,13,225,193,241,201,245,15,15,15,15,205,208,13,241,
|
||||||
|
245,197,213,229,230,15,254,10,218,221,13,198,39,198,48,95,
|
||||||
|
14,2,205,234,13,225,209,193,241,201,245,197,213,229,205,5,
|
||||||
|
0,225,209,193,241,201,56,48,56,48,32,105,110,115,116,114,
|
||||||
|
117,99,116,105,111,110,32,101,120,101,114,99,105,115,101,114,
|
||||||
|
10,13,36,84,101,115,116,115,32,99,111,109,112,108,101,116,
|
||||||
|
101,36,32,32,79,75,10,13,36,32,32,69,82,82,79,82,
|
||||||
|
32,42,42,42,42,32,99,114,99,32,101,120,112,101,99,116,
|
||||||
|
101,100,58,36,32,102,111,117,110,100,58,36,10,13,36,197,
|
||||||
|
213,229,17,162,14,6,4,26,190,194,98,14,35,19,5,194,
|
||||||
|
87,14,225,209,193,201,245,197,213,229,229,17,3,0,25,174,
|
||||||
|
111,38,0,41,41,235,33,166,14,25,235,225,1,4,0,26,
|
||||||
|
168,70,119,19,35,13,194,127,14,225,209,193,241,201,245,197,
|
||||||
|
229,33,162,14,62,255,6,4,119,35,5,194,152,14,225,193,
|
||||||
|
241,201,0,0,0,0,0,0,0,0,119,7,48,150,238,14,
|
||||||
|
97,44,153,9,81,186,7,109,196,25,112,106,244,143,233,99,
|
||||||
|
165,53,158,100,149,163,14,219,136,50,121,220,184,164,224,213,
|
||||||
|
233,30,151,210,217,136,9,182,76,43,126,177,124,189,231,184,
|
||||||
|
45,7,144,191,29,145,29,183,16,100,106,176,32,242,243,185,
|
||||||
|
113,72,132,190,65,222,26,218,212,125,109,221,228,235,244,212,
|
||||||
|
181,81,131,211,133,199,19,108,152,86,100,107,168,192,253,98,
|
||||||
|
249,122,138,101,201,236,20,1,92,79,99,6,108,217,250,15,
|
||||||
|
61,99,141,8,13,245,59,110,32,200,76,105,16,94,213,96,
|
||||||
|
65,228,162,103,113,114,60,3,228,209,75,4,212,71,210,13,
|
||||||
|
133,253,165,10,181,107,53,181,168,250,66,178,152,108,219,187,
|
||||||
|
201,214,172,188,249,64,50,216,108,227,69,223,92,117,220,214,
|
||||||
|
13,207,171,209,61,89,38,217,48,172,81,222,0,58,200,215,
|
||||||
|
81,128,191,208,97,22,33,180,244,181,86,179,196,35,207,186,
|
||||||
|
149,153,184,189,165,15,40,2,184,158,95,5,136,8,198,12,
|
||||||
|
217,178,177,11,233,36,47,111,124,135,88,104,76,17,193,97,
|
||||||
|
29,171,182,102,45,61,118,220,65,144,1,219,113,6,152,210,
|
||||||
|
32,188,239,213,16,42,113,177,133,137,6,182,181,31,159,191,
|
||||||
|
228,165,232,184,212,51,120,7,201,162,15,0,249,52,150,9,
|
||||||
|
168,142,225,14,152,24,127,106,13,187,8,109,61,45,145,100,
|
||||||
|
108,151,230,99,92,1,107,107,81,244,28,108,97,98,133,101,
|
||||||
|
48,216,242,98,0,78,108,6,149,237,27,1,165,123,130,8,
|
||||||
|
244,193,245,15,196,87,101,176,217,198,18,183,233,80,139,190,
|
||||||
|
184,234,252,185,136,124,98,221,29,223,21,218,45,73,140,211,
|
||||||
|
124,243,251,212,76,101,77,178,97,88,58,181,81,206,163,188,
|
||||||
|
0,116,212,187,48,226,74,223,165,65,61,216,149,215,164,209,
|
||||||
|
196,109,211,214,244,251,67,105,233,106,52,110,217,252,173,103,
|
||||||
|
136,70,218,96,184,208,68,4,45,115,51,3,29,229,170,10,
|
||||||
|
76,95,221,13,124,201,80,5,113,60,39,2,65,170,190,11,
|
||||||
|
16,16,201,12,32,134,87,104,181,37,32,111,133,179,185,102,
|
||||||
|
212,9,206,97,228,159,94,222,249,14,41,217,201,152,176,208,
|
||||||
|
152,34,199,215,168,180,89,179,61,23,46,180,13,129,183,189,
|
||||||
|
92,59,192,186,108,173,237,184,131,32,154,191,179,182,3,182,
|
||||||
|
226,12,116,177,210,154,234,213,71,57,157,210,119,175,4,219,
|
||||||
|
38,21,115,220,22,131,227,99,11,18,148,100,59,132,13,109,
|
||||||
|
106,62,122,106,90,168,228,14,207,11,147,9,255,157,10,0,
|
||||||
|
174,39,125,7,158,177,240,15,147,68,135,8,163,210,30,1,
|
||||||
|
242,104,105,6,194,254,247,98,87,93,128,101,103,203,25,108,
|
||||||
|
54,113,110,107,6,231,254,212,27,118,137,211,43,224,16,218,
|
||||||
|
122,90,103,221,74,204,249,185,223,111,142,190,239,249,23,183,
|
||||||
|
190,67,96,176,142,213,214,214,163,232,161,209,147,126,56,216,
|
||||||
|
194,196,79,223,242,82,209,187,103,241,166,188,87,103,63,181,
|
||||||
|
6,221,72,178,54,75,216,13,43,218,175,10,27,76,54,3,
|
||||||
|
74,246,65,4,122,96,223,96,239,195,168,103,223,85,49,110,
|
||||||
|
142,239,70,105,190,121,203,97,179,140,188,102,131,26,37,111,
|
||||||
|
210,160,82,104,226,54,204,12,119,149,187,11,71,3,34,2,
|
||||||
|
22,185,85,5,38,47,197,186,59,190,178,189,11,40,43,180,
|
||||||
|
90,146,92,179,106,4,194,215,255,167,181,208,207,49,44,217,
|
||||||
|
158,139,91,222,174,29,155,100,194,176,236,99,242,38,117,106,
|
||||||
|
163,156,2,109,147,10,156,9,6,169,235,14,54,63,114,7,
|
||||||
|
103,133,5,0,87,19,149,191,74,130,226,184,122,20,123,177,
|
||||||
|
43,174,12,182,27,56,146,210,142,155,229,213,190,13,124,220,
|
||||||
|
239,183,11,219,223,33,134,211,210,212,241,212,226,66,104,221,
|
||||||
|
179,248,31,218,131,110,129,190,22,205,246,185,38,91,111,176,
|
||||||
|
119,225,24,183,71,119,136,8,90,230,255,15,106,112,102,6,
|
||||||
|
59,202,17,1,11,92,143,101,158,255,248,98,174,105,97,107,
|
||||||
|
255,211,22,108,207,69,160,10,226,120,215,13,210,238,78,4,
|
||||||
|
131,84,57,3,179,194,167,103,38,97,208,96,22,247,73,105,
|
||||||
|
71,77,62,110,119,219,174,209,106,74,217,214,90,220,64,223,
|
||||||
|
11,102,55,216,59,240,169,188,174,83,222,187,158,197,71,178,
|
||||||
|
207,127,48,181,255,233,189,189,242,28,202,186,194,138,83,179,
|
||||||
|
147,48,36,180,163,166,186,208,54,5,205,215,6,147,84,222,
|
||||||
|
87,41,35,217,103,191,179,102,122,46,196,97,74,184,93,104,
|
||||||
|
27,2,42,111,43,148,180,11,190,55,195,12,142,161,90,5,
|
||||||
|
223,27,45,2,239,141,160,10,226,120,215,13,210,238,78,4,
|
||||||
|
131,84,57,3,179,194,167,103,38,97,208,96,22,247,73,105,
|
||||||
|
71,77,62,110,119,219,174,209,106,74,217,214,90,220,64,223,
|
||||||
|
11,102,55,216,59,240,169,188,174,83,222,187,158,197,71,178,
|
||||||
|
207,127,48,181,255,233,189,189,242,28,202,186,194,138,83,179,
|
||||||
|
147,48,36,180,163,166,186,208,54,5,205,215,6,147,84,222]
|
||||||
|
}
|
||||||
291
devices/pc8080/rom/test/8080PRE.MAC
Normal file
291
devices/pc8080/rom/test/8080PRE.MAC
Normal file
|
|
@ -0,0 +1,291 @@
|
||||||
|
title 'Preliminary Z80 tests'
|
||||||
|
|
||||||
|
; prelim.z80 - Preliminary Z80 tests
|
||||||
|
; Copyright (C) 1994 Frank D. Cringle
|
||||||
|
;
|
||||||
|
; This program is free software; you can redistribute it and/or
|
||||||
|
; modify it under the terms of the GNU General Public License
|
||||||
|
; as published by the Free Software Foundation; either version 2
|
||||||
|
; of the License, or (at your option) any later version.
|
||||||
|
;
|
||||||
|
; This program is distributed in the hope that it will be useful,
|
||||||
|
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
; GNU General Public License for more details.
|
||||||
|
;
|
||||||
|
; You should have received a copy of the GNU General Public License
|
||||||
|
; along with this program; if not, write to the Free Software
|
||||||
|
; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
|
||||||
|
; These tests have two goals. To start with, we assume the worst and
|
||||||
|
; successively test the instructions needed to continue testing.
|
||||||
|
; Then we try to test all instructions which cannot be handled by
|
||||||
|
; zexlax - the crc-based instruction exerciser.
|
||||||
|
|
||||||
|
; Initially errors are 'reported' by jumping to 0. This should reboot
|
||||||
|
; cp/m, so if the program terminates without any output one of the
|
||||||
|
; early tests failed. Later errors are reported by outputting an
|
||||||
|
; address via the bdos conout routine. The address can be located in
|
||||||
|
; a listing of this program.
|
||||||
|
|
||||||
|
; If the program runs to completion it displays a suitable message.
|
||||||
|
|
||||||
|
;******************************************************************************
|
||||||
|
;
|
||||||
|
; Modified by Ian Bartholomew to run a preliminary test on an 8080 CPU
|
||||||
|
;
|
||||||
|
; Assemble using M80
|
||||||
|
;
|
||||||
|
;******************************************************************************
|
||||||
|
|
||||||
|
.8080
|
||||||
|
aseg
|
||||||
|
org 100h
|
||||||
|
|
||||||
|
start: mvi a,1 ; test simple compares and z/nz jumps
|
||||||
|
cpi 2
|
||||||
|
jz 0
|
||||||
|
cpi 1
|
||||||
|
jnz 0
|
||||||
|
jmp lab0
|
||||||
|
hlt ; emergency exit
|
||||||
|
db 0ffh
|
||||||
|
|
||||||
|
lab0: call lab2 ; does a simple call work?
|
||||||
|
lab1: jmp 0 ; fail
|
||||||
|
|
||||||
|
lab2: pop h ; check return address
|
||||||
|
mov a,h
|
||||||
|
cpi high lab1
|
||||||
|
jz lab3
|
||||||
|
jmp 0
|
||||||
|
lab3: mov a,l
|
||||||
|
cpi low lab1
|
||||||
|
jz lab4
|
||||||
|
jmp 0
|
||||||
|
|
||||||
|
; test presence and uniqueness of all machine registers
|
||||||
|
; (except ir)
|
||||||
|
lab4: lxi sp,regs1
|
||||||
|
pop psw
|
||||||
|
pop b
|
||||||
|
pop d
|
||||||
|
pop h
|
||||||
|
lxi sp,regs2+8
|
||||||
|
push h
|
||||||
|
push d
|
||||||
|
push b
|
||||||
|
push psw
|
||||||
|
|
||||||
|
v defl 0
|
||||||
|
rept 8
|
||||||
|
lda regs2+v/2
|
||||||
|
v defl v+2
|
||||||
|
cpi v
|
||||||
|
jnz 0
|
||||||
|
endm
|
||||||
|
|
||||||
|
; test access to memory via (hl)
|
||||||
|
lxi h,hlval
|
||||||
|
mov a,m
|
||||||
|
cpi 0a5h
|
||||||
|
jnz 0
|
||||||
|
lxi h,hlval+1
|
||||||
|
mov a,m
|
||||||
|
cpi 03ch
|
||||||
|
jnz 0
|
||||||
|
|
||||||
|
; test unconditional return
|
||||||
|
lxi sp,stack
|
||||||
|
lxi h,reta
|
||||||
|
push h
|
||||||
|
ret
|
||||||
|
jmp 0
|
||||||
|
|
||||||
|
; test instructions needed for hex output
|
||||||
|
reta: mvi a,0ffh
|
||||||
|
ani 0fh
|
||||||
|
cpi 0fh
|
||||||
|
jnz 0
|
||||||
|
mvi a,05ah
|
||||||
|
ani 0fh
|
||||||
|
cpi 0ah
|
||||||
|
jnz 0
|
||||||
|
rrc
|
||||||
|
cpi 05h
|
||||||
|
jnz 0
|
||||||
|
rrc
|
||||||
|
cpi 82h
|
||||||
|
jnz 0
|
||||||
|
rrc
|
||||||
|
cpi 41h
|
||||||
|
jnz 0
|
||||||
|
rrc
|
||||||
|
cpi 0a0h
|
||||||
|
jnz 0
|
||||||
|
lxi h,01234h
|
||||||
|
push h
|
||||||
|
pop b
|
||||||
|
mov a,b
|
||||||
|
cpi 12h
|
||||||
|
jnz 0
|
||||||
|
mov a,c
|
||||||
|
cpi 34h
|
||||||
|
jnz 0
|
||||||
|
|
||||||
|
; from now on we can report errors by displaying an address
|
||||||
|
|
||||||
|
; test conditional call, ret, jp, jr
|
||||||
|
tcond macro flag,pcond,ncond,rel
|
||||||
|
lxi h,&flag
|
||||||
|
push h
|
||||||
|
pop psw
|
||||||
|
c&pcond lab1&pcond
|
||||||
|
jmp error
|
||||||
|
lab1&pcond: pop h
|
||||||
|
lxi h,0d7h xor &flag
|
||||||
|
push h
|
||||||
|
pop psw
|
||||||
|
c&ncond lab2&pcond
|
||||||
|
jmp error
|
||||||
|
lab2&pcond: pop h
|
||||||
|
lxi h,lab3&pcond
|
||||||
|
push h
|
||||||
|
lxi h,&flag
|
||||||
|
push h
|
||||||
|
pop psw
|
||||||
|
r&pcond
|
||||||
|
call error
|
||||||
|
lab3&pcond: lxi h,lab4&pcond
|
||||||
|
push h
|
||||||
|
lxi h,0d7h xor &flag
|
||||||
|
push h
|
||||||
|
pop psw
|
||||||
|
r&ncond
|
||||||
|
call error
|
||||||
|
lab4&pcond: lxi h,&flag
|
||||||
|
push h
|
||||||
|
pop psw
|
||||||
|
j&pcond lab5&pcond
|
||||||
|
call error
|
||||||
|
lab5&pcond: lxi h,0d7h xor &flag
|
||||||
|
push h
|
||||||
|
pop psw
|
||||||
|
j&ncond lab6&pcond
|
||||||
|
call error
|
||||||
|
lab6&pcond:
|
||||||
|
endm
|
||||||
|
|
||||||
|
tcond 1,c,nc,1
|
||||||
|
tcond 4,pe,po,0
|
||||||
|
tcond 040h,z,nz,1
|
||||||
|
tcond 080h,m,p,0
|
||||||
|
|
||||||
|
; test indirect jumps
|
||||||
|
lxi h,lab7
|
||||||
|
pchl
|
||||||
|
call error
|
||||||
|
|
||||||
|
; djnz (and (partially) inc a, inc hl)
|
||||||
|
lab7: mvi a,0a5h
|
||||||
|
mvi b,4
|
||||||
|
lab8: rrc
|
||||||
|
dcr b
|
||||||
|
jnz lab8
|
||||||
|
cpi 05ah
|
||||||
|
cnz error
|
||||||
|
mvi b,16
|
||||||
|
lab9: inr a
|
||||||
|
dcr b
|
||||||
|
jnz lab9
|
||||||
|
cpi 06ah
|
||||||
|
cnz error
|
||||||
|
mvi b,0
|
||||||
|
lxi h,0
|
||||||
|
lab10: inx h
|
||||||
|
dcr b
|
||||||
|
jnz lab10
|
||||||
|
mov a,h
|
||||||
|
cpi 1
|
||||||
|
cnz error
|
||||||
|
mov a,l
|
||||||
|
cpi 0
|
||||||
|
cnz error
|
||||||
|
|
||||||
|
allok: lxi d,okmsg
|
||||||
|
mvi c,9
|
||||||
|
call 5
|
||||||
|
jmp 0
|
||||||
|
|
||||||
|
okmsg: db '8080 Preliminary tests complete$'
|
||||||
|
|
||||||
|
; display address at top of stack and exit
|
||||||
|
error: pop b
|
||||||
|
mvi h,high hextab
|
||||||
|
mov a,b
|
||||||
|
rrc
|
||||||
|
rrc
|
||||||
|
rrc
|
||||||
|
rrc
|
||||||
|
ani 15
|
||||||
|
mov l,a
|
||||||
|
mov a,m
|
||||||
|
call conout
|
||||||
|
mov a,b
|
||||||
|
ani 15
|
||||||
|
mov l,a
|
||||||
|
mov a,m
|
||||||
|
call conout
|
||||||
|
mov a,c
|
||||||
|
rrc
|
||||||
|
rrc
|
||||||
|
rrc
|
||||||
|
rrc
|
||||||
|
ani 15
|
||||||
|
mov l,a
|
||||||
|
mov a,m
|
||||||
|
call conout
|
||||||
|
mov a,c
|
||||||
|
ani 15
|
||||||
|
mov l,a
|
||||||
|
mov a,m
|
||||||
|
call conout
|
||||||
|
mvi a,13
|
||||||
|
call conout
|
||||||
|
mvi a,10
|
||||||
|
call conout
|
||||||
|
jmp 0
|
||||||
|
|
||||||
|
conout: push psw
|
||||||
|
push b
|
||||||
|
push d
|
||||||
|
push h
|
||||||
|
mvi c,2
|
||||||
|
mov e,a
|
||||||
|
call 5
|
||||||
|
pop h
|
||||||
|
pop d
|
||||||
|
pop b
|
||||||
|
pop psw
|
||||||
|
ret
|
||||||
|
|
||||||
|
v defl 0
|
||||||
|
regs1: rept 8
|
||||||
|
v defl v+2
|
||||||
|
db v
|
||||||
|
endm
|
||||||
|
|
||||||
|
regs2: ds 8,0
|
||||||
|
|
||||||
|
hlval: db 0a5h,03ch
|
||||||
|
|
||||||
|
; skip to next page boundary
|
||||||
|
org (($+255)/256)*256
|
||||||
|
hextab: db '0123456789abcdef'
|
||||||
|
ds 240
|
||||||
|
|
||||||
|
stack equ $
|
||||||
|
|
||||||
|
end start
|
||||||
|
|
||||||
|
|
@ -628,7 +628,7 @@ CPUDef.opSTC = function()
|
||||||
CPUDef.opDADSP = function()
|
CPUDef.opDADSP = function()
|
||||||
{
|
{
|
||||||
var w;
|
var w;
|
||||||
this.setSP(w = this.getHL() + this.getSP());
|
this.setHL(w = this.getHL() + this.getSP());
|
||||||
this.resultZeroCarry = (this.resultZeroCarry & 0xff) | ((w >> 8) & 0x100);
|
this.resultZeroCarry = (this.resultZeroCarry & 0xff) | ((w >> 8) & 0x100);
|
||||||
this.nStepCycles -= 10;
|
this.nStepCycles -= 10;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -3707,6 +3707,7 @@ if (DEBUGGER) {
|
||||||
sMsg = "halting";
|
sMsg = "halting";
|
||||||
this.stopCPU();
|
this.stopCPU();
|
||||||
} else {
|
} else {
|
||||||
|
if (this.isBusy(true)) return;
|
||||||
sMsg = "already halted";
|
sMsg = "already halted";
|
||||||
}
|
}
|
||||||
if (!fQuiet) this.println(sMsg);
|
if (!fQuiet) this.println(sMsg);
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,29 @@ function ROM(parmsROM)
|
||||||
|
|
||||||
Component.subclass(ROM);
|
Component.subclass(ROM);
|
||||||
|
|
||||||
ROM.CPM_VECTORS = [0x0000, 0x0005];
|
ROM.CPM = {
|
||||||
|
BIOS: {
|
||||||
|
VECTOR: 0x0000
|
||||||
|
},
|
||||||
|
BDOS: {
|
||||||
|
VECTOR: 0x0005,
|
||||||
|
FUNC: { // function number (specified in regC)
|
||||||
|
RESET: 0x00,
|
||||||
|
CON_READ: 0x01, // output: A = L = ASCII character
|
||||||
|
CON_WRITE: 0x02, // input: E = ASCII character
|
||||||
|
AUX_READ: 0x03, // output: A = L = ASCII character
|
||||||
|
AUX_WRITE: 0x04, // input: E = ASCII character
|
||||||
|
PRN_WRITE: 0x05, // input: E = ASCII character
|
||||||
|
MEM_SIZE: 0x06, // output: base address of CCP (Console Command Processor), but which register? (perhaps moot if this was CP/M 1.3 only...)
|
||||||
|
CON_IO: 0x06, // input: E = ASCII character (or 0xFF to return ASCII character in A)
|
||||||
|
GET_IOBYTE: 0x07,
|
||||||
|
SET_IOBYTE: 0x08,
|
||||||
|
STR_WRITE: 0x09 // input: DE = address of string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ROM.CPM.VECTORS = [ROM.CPM.BIOS.VECTOR, ROM.CPM.BDOS.VECTOR];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NOTE: There's currently no need for this component to have a reset() function, since
|
* NOTE: There's currently no need for this component to have a reset() function, since
|
||||||
|
|
@ -344,12 +366,14 @@ ROM.prototype.addROM = function(addr)
|
||||||
* (namely, 0x0000, which is the CP/M reset vector, and 0x0005, which is the CP/M system call vector) and
|
* (namely, 0x0000, which is the CP/M reset vector, and 0x0005, which is the CP/M system call vector) and
|
||||||
* then telling the CPU to call us whenever a HLT occurs, so we can check PC for one of these addresses.
|
* then telling the CPU to call us whenever a HLT occurs, so we can check PC for one of these addresses.
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < ROM.CPM_VECTORS.length; i++) {
|
for (i = 0; i < ROM.CPM.VECTORS.length; i++) {
|
||||||
this.bus.setByteDirect(ROM.CPM_VECTORS[i], CPUDef.OPCODE.HLT);
|
this.bus.setByteDirect(ROM.CPM.VECTORS[i], CPUDef.OPCODE.HLT);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.cpu.addHaltCheck(function(rom) {
|
this.cpu.addHaltCheck(function(rom) {
|
||||||
return function(addr) {rom.checkCPMVector(addr)};
|
return function(addr) {
|
||||||
|
return rom.checkCPMVector(addr)
|
||||||
|
};
|
||||||
}(this));
|
}(this));
|
||||||
|
|
||||||
this.cpu.setReset(addr);
|
this.cpu.setReset(addr);
|
||||||
|
|
@ -371,18 +395,88 @@ ROM.prototype.addROM = function(addr)
|
||||||
*/
|
*/
|
||||||
ROM.prototype.checkCPMVector = function(addr)
|
ROM.prototype.checkCPMVector = function(addr)
|
||||||
{
|
{
|
||||||
var i = ROM.CPM_VECTORS.indexOf(addr);
|
var i = ROM.CPM.VECTORS.indexOf(addr);
|
||||||
if (i >= 0) {
|
if (i >= 0) {
|
||||||
if (this.dbg) {
|
var fCPM = false;
|
||||||
this.println("CP/M vector " + str.toHexWord(addr));
|
var cpu = this.cpu;
|
||||||
this.cpu.setPC(addr); // this is purely for the Debugger's benefit, to show the HLT
|
var dbg = this.dbg;
|
||||||
this.dbg.stopCPU();
|
if (addr == ROM.CPM.BDOS.VECTOR) {
|
||||||
|
fCPM = true;
|
||||||
|
switch(cpu.regC) {
|
||||||
|
case ROM.CPM.BDOS.FUNC.CON_WRITE:
|
||||||
|
this.writeCPMString(this.getCPMChar(cpu.regE));
|
||||||
|
break;
|
||||||
|
case ROM.CPM.BDOS.FUNC.STR_WRITE:
|
||||||
|
this.writeCPMString(this.getCPMString(cpu.getDE(), '$'));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fCPM = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (fCPM) {
|
||||||
|
CPUDef.opRET.call(cpu); // for recognized calls, automatically return
|
||||||
|
}
|
||||||
|
else if (dbg) {
|
||||||
|
this.println("\nCP/M vector " + str.toHexWord(addr));
|
||||||
|
cpu.setPC(addr); // this is purely for the Debugger's benefit, to show the HLT
|
||||||
|
dbg.stopCPU();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getCPMChar(ch)
|
||||||
|
*
|
||||||
|
* @this {ROM}
|
||||||
|
* @param {number} ch
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
|
ROM.prototype.getCPMChar = function(ch)
|
||||||
|
{
|
||||||
|
return String.fromCharCode(ch);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getCPMString(addr, chEnd)
|
||||||
|
*
|
||||||
|
* @this {ROM}
|
||||||
|
* @param {number} addr (of a string)
|
||||||
|
* @param {string|number} [chEnd] (terminating character, default is 0)
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
|
ROM.prototype.getCPMString = function(addr, chEnd)
|
||||||
|
{
|
||||||
|
var s = "";
|
||||||
|
var cchMax = 255;
|
||||||
|
var bEnd = chEnd && chEnd.length && chEnd.charCodeAt(0) || chEnd || 0;
|
||||||
|
while (cchMax--) {
|
||||||
|
var b = this.cpu.getByte(addr++);
|
||||||
|
if (b == bEnd) break;
|
||||||
|
s += String.fromCharCode(b);
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* writeCPMString(s)
|
||||||
|
*
|
||||||
|
* @this {ROM}
|
||||||
|
* @param {string} s
|
||||||
|
*/
|
||||||
|
ROM.prototype.writeCPMString = function(s)
|
||||||
|
{
|
||||||
|
s = s.replace(/\r/g, '');
|
||||||
|
if (this.controlPrint) {
|
||||||
|
this.controlPrint.value += s;
|
||||||
|
this.controlPrint.scrollTop = this.controlPrint.scrollHeight;
|
||||||
|
}
|
||||||
|
this.log(s);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cloneROM(addr)
|
* cloneROM(addr)
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -6663,6 +6663,7 @@ if (DEBUGGER) {
|
||||||
sMsg = "halting";
|
sMsg = "halting";
|
||||||
this.stopCPU();
|
this.stopCPU();
|
||||||
} else {
|
} else {
|
||||||
|
if (this.isBusy(true)) return;
|
||||||
sMsg = "already halted";
|
sMsg = "already halted";
|
||||||
}
|
}
|
||||||
if (!fQuiet) this.println(sMsg);
|
if (!fQuiet) this.println(sMsg);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue