EmulatorTst.bcd created 12-Oct-83 9:52:15 PDT on 0#252#
creator 13-Sep-83 17:10:14 PDT on 0#0#
source 12-Oct-83 9:51:44 PDT on 0#0#
Cross Jumped
Global frame size: 81
Entry Vector: evi [bytePC]
0 [10]
1 [432]
2 [252]
3 [265]
4 [302]
5 [315]
6 [330]
7 [343]
8 [356]
9 [371]
10 [404]
11 [417]
12 [521]
13 [445]
14 [460]
15 [473]
16 [506]
17 [1234]
18 [723]
19 [4623]
20 [4555]
21 [10764]
Catch Entry Vector: cevi [bytePC]
None
-- EmulatorTestImpl.mesa 12-Oct-83 8:41:44 by JGS
-- Test program to exercise the the Mesa emulator of a PrincOps machine.
DIRECTORY
EmulatorTest,
ESCAlpha,
Mopcodes,
SDDefs;
Entry point: 0, Frame size index: 0
GermOpsImpl: PROGRAM
IMPORTS EmulatorTest =
BEGIN OPEN EmulatorTest, SDDefs, ESCAlpha, Mopcodes;
-- Useful variables:
BothOnes: PROCEDURE RETURNS [LONG CARDINAL] = MACHINE CODE {zLIN1; zLIN1};
zero: CARDINAL ← 0;
11: LI0
12: SGB 5
one: CARDINAL ← 1;
14: LI1
15: SGB 1
two: CARDINAL ← 2;
17: LI2
20: SGB 10
three: CARDINAL ← 3;
22: LI3
23: SGB 13
four: CARDINAL ← 4;
25: LI4
26: SGB 16
five: CARDINAL ← 5;
30: LI5
31: SGB 20
six: CARDINAL ← 6;
33: LI6
34: SGB 36
seven: CARDINAL ← 7;
36: LI7
37: SGB 54
eight: CARDINAL ← 8;
41: LI8
42: SGB 61
nine: CARDINAL ← 9;
44: LI9
45: SGB 24
ten: CARDINAL ← 10;
47: LI10
50: SGB 73
eleven: CARDINAL ← 11;
52: LIB 13
54: SGB 111
twelve: CARDINAL ← 12;
56: LIB 14
60: SGB 62
thirteen: CARDINAL ← 13;
62: LIB 15
64: SGB 114
fourteen: CARDINAL ← 14;
66: LIB 16
70: SGB 110
fifteen: CARDINAL ← 15;
fourHundred: CARDINAL = 400B;
72: LIB 17
74: SGB 107
allOnes: CARDINAL ← 177777B;
negInfinity: CARDINAL = 100000B;
minusTwo: CARDINAL = 177776B;
76: LIN1
77: SGB 35
loopCount: CARDINAL ← 100;
currentOpcode: CARDINAL;
101: LIB 144
103: SGB 4
oneTwo: LONG CARDINAL ← 200000B * 1 + 2;
105: LI2
106: LI1
107: SGDB 11
oneThree: LONG CARDINAL ← 200000B * 1 + 3;
111: LI3
112: LI1
113: SGDB 112
twoFour: LONG CARDINAL ← 200000B * 2 + 4;
115: LI4
116: LI2
117: SGDB 103
threeFour: LONG CARDINAL ← 200000B * 3 + 4;
121: LI4
122: LI3
123: SGDB 21
fourSix: LONG CARDINAL ← 200000B * 4 + 6;
125: LI6
126: LI4
127: SGDB 74
fiveSix: LONG CARDINAL ← 200000B * 5 + 6;
131: LI6
132: LI5
133: SGDB 63
zeroAllOnes: LONG CARDINAL ← 177777B;
135: LIN1
136: LI0
137: SGDB 52
oneAllZeros: LONG CARDINAL ← 200000B;
141: LI0
142: LI1
143: SGDB 105
bothZero: LONG CARDINAL ← 0;
145: LID0
146: SGDB 57
bothOnes: LONG CARDINAL ← BothOnes[];
a, b, i: CARDINAL;
aD, bD: LONG CARDINAL;
150: LIN1
151: LIN1
152: SGDB 101
proc: PROCEDURE;
SetMP: PROCEDURE [CARDINAL] = MACHINE CODE {zESC, aWRMP};
Halt: PROCEDURE [code: CARDINAL] = INLINE {SetMP[code]; DO i ← 0 ENDLOOP};
SetTest: PROCEDURE [opcode: CARDINAL] = INLINE {
SetMP[opcode]; currentOpcode ← opcode};
Low: PROCEDURE [a: LONG UNSPECIFIED] RETURNS [UNSPECIFIED] = INLINE {
RETURN[LOOPHOLE[a, RECORD[low, high: CARDINAL]].low]};
High: PROCEDURE [a: LONG UNSPECIFIED] RETURNS [UNSPECIFIED] = INLINE {
RETURN[LOOPHOLE[a, RECORD[low, high: CARDINAL]].high]};
-- Trap Handlers
154: LID0
155: SGDB 77
SetTest[400];
157: LIW 620
162: ESC WRMP
164: LIW 620
167: SGB 2
FillInSD[];
DO
171: LFC 521
SetTest[zLFC];
174: LIB 355
176: ESC WRMP
200: LIB 355
202: SGB 2
JumpTests[];
204: LFC 723
SetTest[zLFC];
207: LIB 355
211: ESC WRMP
213: LIB 355
215: SGB 2
StackTests[];
217: LFC 1234
SetTest[zLFC];
222: LIB 355
224: ESC WRMP
226: LIB 355
230: SGB 2
SetupReadTests[];
232: LFC 4555
SetTest[zLFC];
235: LIB 355
237: ESC WRMP
241: LIB 355
243: SGB 2
ReadWriteTests[]
ENDLOOP;
END.
LOG
12-Oct-81 16:05:36 Knutsen New instruction set.
12-Oct-81 16:05:36 Bridge New instruction set (Klamath).
245: LFC 4623
250: JB 324 (174)
Instructions: 93, Bytes: 162
BreakTrap: PROCEDURE = {
Entry point: 2, Frame size index: 0
Halt[9000+SDDefs.sBreakTrap]};
253: LIW 21450
256: ESC WRMP
260: LI0
261: SGB 0
263: JB 375 (260)
Instructions: 5, Bytes: 10
StackError: PROCEDURE = {
Entry point: 3, Frame size index: 0
Halt[8000+currentOpcode]};
266: LG2
267: LIW 17500
272: ADD
273: ESC WRMP
275: LI0
276: SGB 0
300: JB 375 (275)
Instructions: 7, Bytes: 12
RescheduleError: PROCEDURE = {
Entry point: 4, Frame size index: 0
Halt[9000+SDDefs.sRescheduleError]};
303: LIW 21453
306: ESC WRMP
310: LI0
311: SGB 0
313: JB 375 (310)
Instructions: 5, Bytes: 10
XferTrap: PROCEDURE = {
Entry point: 5, Frame size index: 0
Halt[9000+SDDefs.sXferTrap]};
316: LIW 21454
321: ESC WRMP
323: LI0
324: SGB 0
326: JB 375 (323)
Instructions: 5, Bytes: 10
OpcodeTrap: PROCEDURE = {
Entry point: 6, Frame size index: 0
Halt[9000+SDDefs.sOpcodeTrap]};
331: LIW 21455
334: ESC WRMP
336: LI0
337: SGB 0
341: JB 375 (336)
Instructions: 5, Bytes: 10
ControlTrap: PROCEDURE = {
Entry point: 7, Frame size index: 0
Halt[9000+SDDefs.sControlTrap]};
344: LIW 21456
347: ESC WRMP
351: LI0
352: SGB 0
354: JB 375 (351)
Instructions: 5, Bytes: 10
CodeTrap: PROCEDURE = {
Entry point: 8, Frame size index: 0
Halt[9000+SDDefs.sCodeTrap]};
357: LIW 21457
362: ESC WRMP
364: LI0
365: SGB 0
367: JB 375 (364)
Instructions: 5, Bytes: 10
HardwareError: PROCEDURE = {
Entry point: 9, Frame size index: 0
Halt[9000+SDDefs.sHardwareError]};
372: LIW 21460
375: ESC WRMP
377: LI0
400: SGB 0
402: JB 375 (377)
Instructions: 5, Bytes: 10
UnboundTrap: PROCEDURE = {
Entry point: 10, Frame size index: 0
Halt[9000+SDDefs.sUnboundTrap]};
405: LIW 21461
410: ESC WRMP
412: LI0
413: SGB 0
415: JB 375 (412)
Instructions: 5, Bytes: 10
DivZeroTrap: PROCEDURE = {
Entry point: 11, Frame size index: 0
Halt[9000+SDDefs.sDivZeroTrap]};
420: LIW 21462
423: ESC WRMP
425: LI0
426: SGB 0
430: JB 375 (425)
Instructions: 5, Bytes: 10
DivCheckTrap: PROCEDURE = {
Entry point: 1, Frame size index: 0
Halt[9000+SDDefs.sDivCheckTrap]};
433: LIW 21463
436: ESC WRMP
440: LI0
441: SGB 0
443: JB 375 (440)
Instructions: 5, Bytes: 10
InterruptError: PROCEDURE = {
Entry point: 13, Frame size index: 0
Halt[9000+SDDefs.sInterruptError]};
446: LIW 21464
451: ESC WRMP
453: LI0
454: SGB 0
456: JB 375 (453)
Instructions: 5, Bytes: 10
ProcessTrap: PROCEDURE = {
Entry point: 14, Frame size index: 0
Halt[9000+SDDefs.sProcessTrap]};
461: LIW 21465
464: ESC WRMP
466: LI0
467: SGB 0
471: JB 375 (466)
Instructions: 5, Bytes: 10
BoundsTrap: PROCEDURE = {
Entry point: 15, Frame size index: 0
Halt[9000+SDDefs.sBoundsTrap]};
474: LIW 21466
477: ESC WRMP
501: LI0
502: SGB 0
504: JB 375 (501)
Instructions: 5, Bytes: 10
PointerTrap: PROCEDURE = {
Entry point: 16, Frame size index: 0
Halt[9000+SDDefs.sPointerTrap]};
507: LIW 21467
512: ESC WRMP
514: LI0
515: SGB 0
517: JB 375 (514)
Instructions: 5, Bytes: 10
FillInSD: PROCEDURE = {
Entry point: 12, Frame size index: 0
SDDefs.SD[SDDefs.sBreakTrap] ← LOOPHOLE[BreakTrap];
522: GA1
523: LIW 252
526: LIHB 2
530: WDB 0
SDDefs.SD[SDDefs.sStackError] ← LOOPHOLE[StackError];
532: GA1
533: LIW 265
536: LIHB 2
540: WDB 4
SDDefs.SD[SDDefs.sRescheduleError] ← LOOPHOLE[RescheduleError];
542: GA1
543: LIW 302
546: LIHB 2
550: WDB 6
SDDefs.SD[SDDefs.sXferTrap] ← LOOPHOLE[XferTrap];
552: GA1
553: LIW 315
556: LIHB 2
560: WDB 10
SDDefs.SD[SDDefs.sOpcodeTrap] ← LOOPHOLE[OpcodeTrap];
562: GA1
563: LIW 330
566: LIHB 2
570: WDB 12
SDDefs.SD[SDDefs.sControlTrap] ← LOOPHOLE[ControlTrap];
572: GA1
573: LIW 343
576: LIHB 2
600: WDB 14
SDDefs.SD[SDDefs.sCodeTrap] ← LOOPHOLE[CodeTrap];
602: GA1
603: LIW 356
606: LIHB 2
610: WDB 16
SDDefs.SD[SDDefs.sHardwareError] ← LOOPHOLE[HardwareError];
612: GA1
613: LIW 371
616: LIHB 2
620: WDB 20
SDDefs.SD[SDDefs.sUnboundTrap] ← LOOPHOLE[UnboundTrap];
622: GA1
623: LIW 404
626: LIHB 2
630: WDB 22
SDDefs.SD[SDDefs.sDivZeroTrap] ← LOOPHOLE[DivZeroTrap];
632: GA1
633: LIW 417
636: LIHB 2
640: WDB 24
SDDefs.SD[SDDefs.sDivCheckTrap] ← LOOPHOLE[DivCheckTrap];
642: GA1
643: LIW 432
646: LIHB 2
650: WDB 26
SDDefs.SD[SDDefs.sInterruptError] ← LOOPHOLE[InterruptError];
652: GA1
653: LIW 445
656: LIHB 2
660: WDB 30
SDDefs.SD[SDDefs.sProcessTrap] ← LOOPHOLE[ProcessTrap];
662: GA1
663: LIW 460
666: LIHB 2
670: WDB 32
SDDefs.SD[SDDefs.sBoundsTrap] ← LOOPHOLE[BoundsTrap];
672: GA1
673: LIW 473
676: LIHB 2
700: WDB 34
SDDefs.SD[SDDefs.sPointerTrap] ← LOOPHOLE[PointerTrap];
702: GA1
703: LIW 506
706: LIHB 2
710: WDB 36
SetTest[zRET]};
712: LIB 357
714: ESC WRMP
716: LIB 357
720: SGB 2
722: RET
Instructions: 65, Bytes: 130
JumpTests: PROC = {
Entry point: 18, Frame size index: 0
SetTest[zJEP];
724: LIB 212
726: ESC WRMP
730: LIB 212
a ← one;
732: LG1
733: SGDB 2
b ← two;
735: LGB 10
737: SGB 23
IF a # 2 THEN
741: LGB 3
743: JEP [2,3] (752)
a ← one ELSE
745: LG1
746: SGB 3
750: JB 14 (764)
Halt[1000+zJEP];
752: LIW 2162
755: ESC WRMP
757: LI0
760: SGB 0
762: JB 375 (757)
IF a # 1 THEN
764: LGB 3
766: JEP [1,10] (1002)
Halt[2000+zJEP];
770: LIW 4132
773: ESC WRMP
775: LI0
776: SGB 0
1000: JB 375 (775)
SetTest[zJEBB];
1002: LIB 214
1004: ESC WRMP
1006: LIB 214
a ← 40;
1010: LIB 50
1012: SGDB 2
b ← one;
1014: LG1
1015: SGB 23
IF a # 44 THEN
1017: LGB 3
1021: JEBB 54, 11 (1032)
a ← 40 ELSE
1024: LIB 50
1026: SGB 3
1030: JB 14 (1044)
Halt[1000+zJEBB];
1032: LIW 2164
1035: ESC WRMP
1037: LI0
1040: SGB 0
1042: JB 375 (1037)
IF a # 40 THEN
1044: LGB 3
1046: JEBB 50, 15 (1063)
Halt[2000+zJEBB];
1051: LIW 4134
1054: ESC WRMP
1056: LI0
1057: SGB 0
1061: JB 375 (1056)
SetTest[zJNEP];
1063: LIB 215
1065: ESC WRMP
1067: LIB 215
a ← one;
1071: LG1
1072: SGDB 2
b ← two;
1074: LGB 10
1076: SGB 23
IF a = 1 THEN
1100: LGB 3
1102: JNEP [1,4] (1112)
a ← two ELSE
1104: LGB 10
1106: SGB 3
1110: JB 14 (1124)
Halt[1000+zJNEP];
1112: LIW 2165
1115: ESC WRMP
1117: LI0
1120: SGB 0
1122: JB 375 (1117)
IF a = 1 THEN
1124: LGB 3
1126: JNEP [1,10] (1142)
Halt[2000+zJNEP];
1130: LIW 4135
1133: ESC WRMP
1135: LI0
1136: SGB 0
1140: JB 375 (1135)
SetTest[zJNEBB];
1142: LIB 217
1144: ESC WRMP
1146: LIB 217
a ← 40;
1150: LIB 50
1152: SGDB 2
b ← one;
1154: LG1
1155: SGB 23
IF a = 40 THEN
1157: LGB 3
1161: JNEBB 50, 11 (1172)
a ← 44 ELSE
1164: LIB 54
1166: SGB 3
1170: JB 14 (1204)
Halt[1000+zJNEBB];
1172: LIW 2167
1175: ESC WRMP
1177: LI0
1200: SGB 0
1202: JB 375 (1177)
IF a = 40 THEN
1204: LGB 3
1206: JNEBB 50, 15 (1223)
Halt[2000+zJNEBB];
1211: LIW 4137
1214: ESC WRMP
1216: LI0
1217: SGB 0
1221: JB 375 (1216)
SetTest[zRET];
1223: LIB 357
1225: ESC WRMP
1227: LIB 357
1231: SGB 2
RETURN};
1233: RET
Instructions: 101, Bytes: 200
StackTests: PROCEDURE = {
Entry point: 17, Frame size index: 0
SetTest[zREC];
1235: LIB 242
1237: ESC WRMP
1241: LIB 242
1243: SGB 2
i ← 0;
DO
1245: LI0
1246: SGB 0
a ← nine;
1250: LGB 24
1252: SGB 3
IF REC[] # nine THEN
1254: REC
1255: LGB 24
1257: JEB 14 (1273)
Halt[1000+zREC];
1261: LIW 2212
1264: ESC WRMP
1266: LI0
1267: SGB 0
1271: JB 375 (1266)
i ← i + one;
1273: LGD0
1274: ADD
1275: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
1277: LGB 4
1301: LG0
1302: JNEB 346 (1250)
SetTest[zREC2];
1304: LIB 243
1306: ESC WRMP
1310: LIB 243
1312: SGB 2
i ← 0;
DO
1314: LI0
1315: SGB 0
aD ← threeFour;
1317: LGDB 21
1321: SGDB 6
bD ← REC2[];
1323: REC2
1324: SGDB 25
IF High[bD] # three OR Low[bD] # four THEN
1326: LGB 26
1330: LGB 13
1332: JNEB 10 (1342)
1334: LGB 25
1336: LGB 16
1340: JEB 14 (1354)
Halt[1000+zREC2];
1342: LIW 2213
1345: ESC WRMP
1347: LI0
1350: SGB 0
1352: JB 375 (1347)
i ← i + one;
1354: LGD0
1355: ADD
1356: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
1360: LGB 4
1362: LG0
1363: JNEB 334 (1317)
SetTest[zDIS];
1365: LIB 244
1367: ESC WRMP
1371: LIB 244
1373: SGB 2
i ← 0;
DO
1375: LI0
1376: SGB 0
DIS[a];
1400: LGB 3
1402: DIS
IF REC[] # a THEN
1403: REC
1404: LGB 3
1406: JEB 14 (1422)
Halt[1000+zDIS];
1410: LIW 2214
1413: ESC WRMP
1415: LI0
1416: SGB 0
1420: JB 375 (1415)
i ← i + one;
1422: LGD0
1423: ADD
1424: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
1426: LGB 4
1430: LG0
1431: JNEB 347 (1400)
SetTest[zDIS2];
1433: LIB 245
1435: ESC WRMP
1437: LIB 245
1441: SGB 2
i ← 0;
DO
1443: LI0
1444: SGB 0
DIS2[twoFour];
1446: LGDB 103
1450: DIS2
bD ← REC2[];
1451: REC2
1452: SGDB 25
IF High[bD] # two OR Low[bD] # four THEN
1454: LGB 26
1456: LGB 10
1460: JNEB 10 (1470)
1462: LGB 25
1464: LGB 16
1466: JEB 14 (1502)
Halt[1000+zDIS2];
1470: LIW 2215
1473: ESC WRMP
1475: LI0
1476: SGB 0
1500: JB 375 (1475)
i ← i + one;
1502: LGD0
1503: ADD
1504: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
1506: LGB 4
1510: LG0
1511: JNEB 335 (1446)
SetTest[zEXCH];
1513: LIB 246
1515: ESC WRMP
1517: LIB 246
1521: SGB 2
i ← 0;
DO
1523: LI0
1524: SGB 0
[c: a, d: b] ← EXCH[a: one, b: two];
1526: LG1
1527: LGB 10
1531: EXCH
1532: SGB 23
1534: SGB 3
1536: REC
IF a # two OR b # one THEN
1537: LGB 10
1541: JNEB 7 (1550)
1543: LGB 23
1545: LG1
1546: JEB 14 (1562)
Halt[1000+zEXCH];
1550: LIW 2216
1553: ESC WRMP
1555: LI0
1556: SGB 0
1560: JB 375 (1555)
i ← i + one;
1562: LGD0
1563: ADD
1564: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
1566: LGB 4
1570: LG0
1571: JNEB 335 (1526)
SetTest[zDEXCH];
1573: LIB 247
1575: ESC WRMP
1577: LIB 247
1601: SGB 2
i ← 0;
DO
1603: LI0
1604: SGB 0
[c: aD, d: bD] ← DEXCH[a: oneTwo, b: threeFour];
1606: LGDB 11
1610: LGDB 21
1612: DEXCH
1613: SGDB 25
1615: SGDB 6
IF High[aD] # three OR Low[aD] # four OR High[bD] # one OR Low[bD] # two THEN
1617: LGB 7
1621: LGB 13
1623: JNEB 23 (1646)
1625: LGB 6
1627: LGB 16
1631: JNEB 15 (1646)
1633: LGB 26
1635: LG1
1636: JNEB 10 (1646)
1640: LGB 25
1642: LGB 10
1644: JEB 14 (1660)
Halt[1000+zDEXCH];
1646: LIW 2217
1651: ESC WRMP
1653: LI0
1654: SGB 0
1656: JB 375 (1653)
i ← i + one;
1660: LGD0
1661: ADD
1662: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
1664: LGB 4
1666: LG0
1667: JNEB 317 (1606)
SetTest[zDUP];
1671: LIB 250
1673: ESC WRMP
1675: LIB 250
1677: SGB 2
i ← 0;
DO
1701: LI0
1702: SGB 0
[a: a, b: b] ← DUP[six];
1704: LGB 36
1706: DUP
1707: SGB 23
1711: SGB 3
1713: REC
IF a # six OR b # six THEN
1714: LGB 36
1716: JNEB 10 (1726)
1720: LGB 23
1722: LGB 36
1724: JEB 14 (1740)
Halt[1000+zDUP];
1726: LIW 2220
1731: ESC WRMP
1733: LI0
1734: SGB 0
1736: JB 375 (1733)
i ← i + one;
1740: LGD0
1741: ADD
1742: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
1744: LGB 4
1746: LG0
1747: JNEB 335 (1704)
SetTest[zDDUP];
1751: LIB 251
1753: ESC WRMP
1755: LIB 251
1757: SGB 2
i ← 0;
DO
1761: LI0
1762: SGB 0
[a: aD, b: bD] ← DDUP[fiveSix];
1764: LGDB 63
1766: DDUP
1767: SGDB 25
1771: SGDB 6
IF High[aD] # five OR Low[aD] # six OR High[bD] # five OR Low[bD] # six THEN
1773: LGB 7
1775: LGB 20
1777: JNEB 24 (2023)
2001: LGB 6
2003: LGB 36
2005: JNEB 16 (2023)
2007: LGB 26
2011: LGB 20
2013: JNEB 10 (2023)
2015: LGB 25
2017: LGB 36
2021: JEB 14 (2035)
Halt[1000+zDDUP];
2023: LIW 2221
2026: ESC WRMP
2030: LI0
2031: SGB 0
2033: JB 375 (2030)
i ← i + one;
2035: LGD0
2036: ADD
2037: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
2041: LGB 4
2043: LG0
2044: JNEB 320 (1764)
SetTest[zEXDIS];
2046: LIB 252
2050: ESC WRMP
2052: LIB 252
2054: SGB 2
i ← 0;
DO
2056: LI0
2057: SGB 0
a ← EXDIS[a: three, b: four];
2061: LGB 13
2063: LGB 16
2065: EXDIS
2066: SGB 3
2070: REC
IF a # four THEN
2071: LGB 16
2073: JEB 14 (2107)
Halt[1000+zEXDIS];
2075: LIW 2222
2100: ESC WRMP
2102: LI0
2103: SGB 0
2105: JB 375 (2102)
i ← i + one;
2107: LGD0
2110: ADD
2111: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
2113: LGB 4
2115: LG0
2116: JNEB 343 (2061)
SetTest[zNEG];
2120: LIB 253
2122: ESC WRMP
2124: LIB 253
2126: SGB 2
i ← 0;
DO
2130: LI0
2131: SGB 0
a ← NEG[one];
2133: LG1
2134: NEG
2135: SGB 3
2137: REC
IF a # allOnes THEN
2140: LGB 35
2142: JEB 14 (2156)
Halt[1000+zNEG];
2144: LIW 2223
2147: ESC WRMP
2151: LI0
2152: SGB 0
2154: JB 375 (2151)
i ← i + one;
2156: LGD0
2157: ADD
2160: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
2162: LGB 4
2164: LG0
2165: JNEB 346 (2133)
SetTest[zINC];
2167: LIB 254
2171: ESC WRMP
2173: LIB 254
2175: SGB 2
i ← 0;
DO
2177: LI0
2200: SGB 0
a ← INC[one];
2202: LG1
2203: INC
2204: SGB 3
2206: REC
IF a # two THEN
2207: LGB 10
2211: JEB 14 (2225)
Halt[1000+zINC];
2213: LIW 2224
2216: ESC WRMP
2220: LI0
2221: SGB 0
2223: JB 375 (2220)
i ← i + one;
2225: LGD0
2226: ADD
2227: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
2231: LGB 4
2233: LG0
2234: JNEB 346 (2202)
SetTest[zDEC];
2236: LIB 255
2240: ESC WRMP
2242: LIB 255
2244: SGB 2
i ← 0;
DO
2246: LI0
2247: SGB 0
a ← DEC[three];
2251: LGB 13
2253: DEC
2254: SGB 3
2256: REC
IF a # two THEN
2257: LGB 10
2261: JEB 14 (2275)
Halt[1000+zDEC];
2263: LIW 2225
2266: ESC WRMP
2270: LI0
2271: SGB 0
2273: JB 375 (2270)
i ← i + one;
2275: LGD0
2276: ADD
2277: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
2301: LGB 4
2303: LG0
2304: JNEB 345 (2251)
SetTest[zDINC];
2306: LIB 256
2310: ESC WRMP
2312: LIB 256
2314: SGB 2
i ← 0;
DO
2316: LI0
2317: SGB 0
aD ← DINC[zeroAllOnes];
2321: LGDB 52
2323: DINC
2324: SGDB 6
2326: REC
IF Low[aD] # zero OR High[aD] # one THEN
2327: LGB 5
2331: JNEB 7 (2340)
2333: LGB 7
2335: LG1
2336: JEB 14 (2352)
Halt[1000+zDINC];
2340: LIW 2226
2343: ESC WRMP
2345: LI0
2346: SGB 0
2350: JB 375 (2345)
i ← i + one;
2352: LGD0
2353: ADD
2354: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
2356: LGB 4
2360: LG0
2361: JNEB 340 (2321)
SetTest[zDBL];
2363: LIB 257
2365: ESC WRMP
2367: LIB 257
2371: SGB 2
i ← 0;
DO
2373: LI0
2374: SGB 0
a ← DBL[six];
2376: LGB 36
2400: DBL
2401: SGB 3
2403: REC
IF a # twelve THEN
2404: LGB 62
2406: JEB 14 (2422)
Halt[1000+zDBL];
2410: LIW 2227
2413: ESC WRMP
2415: LI0
2416: SGB 0
2420: JB 375 (2415)
i ← i + one;
2422: LGD0
2423: ADD
2424: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
2426: LGB 4
2430: LG0
2431: JNEB 345 (2376)
SetTest[zDDBL];
2433: LIB 260
2435: ESC WRMP
2437: LIB 260
2441: SGB 2
i ← 0;
DO
2443: LI0
2444: SGB 0
aD ← DDBL[oneTwo];
2446: LGDB 11
2450: DDBL
2451: SGDB 6
IF High[aD] # two OR Low[aD] # four THEN
2453: LGDB 7
2455: JNEB 10 (2465)
2457: LGB 6
2461: LGB 16
2463: JEB 14 (2477)
Halt[1000+zDDBL];
2465: LIW 2230
2470: ESC WRMP
2472: LI0
2473: SGB 0
2475: JB 375 (2472)
i ← i + one;
2477: LGD0
2500: ADD
2501: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
2503: LGB 4
2505: LG0
2506: JNEB 340 (2446)
SetTest[zTRPL];
2510: LIB 261
2512: ESC WRMP
2514: LIB 261
2516: SGB 2
i ← 0;
DO
2520: LI0
2521: SGB 0
a ← TRPL[three];
2523: LGB 13
2525: TRPL
2526: SGB 3
2530: REC
IF a # nine THEN
2531: LGB 24
2533: JEB 14 (2547)
Halt[1000+zTRPL];
2535: LIW 2231
2540: ESC WRMP
2542: LI0
2543: SGB 0
2545: JB 375 (2542)
i ← i + one;
2547: LGD0
2550: ADD
2551: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
2553: LGB 4
2555: LG0
2556: JNEB 345 (2523)
SetTest[zAND];
2560: LIB 262
2562: ESC WRMP
2564: LIB 262
2566: SGB 2
i ← 0;
DO
2570: LI0
2571: SGB 0
a ← ANDOp[a: three, b: six];
2573: LGB 13
2575: LGB 36
2577: AND
2600: SGB 3
2602: REC
IF a # two THEN
2603: LGB 10
2605: JEB 14 (2621)
Halt[1000+zAND];
2607: LIW 2232
2612: ESC WRMP
2614: LI0
2615: SGB 0
2617: JB 375 (2614)
a ← ANDOp[a: five, b: allOnes];
2621: LGB 20
2623: LGB 35
2625: AND
2626: SGB 3
2630: REC
IF a # five THEN
2631: LGB 20
2633: JEB 14 (2647)
Halt[2000+zAND];
2635: LIW 4202
2640: ESC WRMP
2642: LI0
2643: SGB 0
2645: JB 375 (2642)
a ← ANDOp[a: five, b: zero];
2647: LGB 20
2651: LGB 5
2653: AND
2654: SGB 3
2656: REC
IF a # zero THEN
2657: LGB 5
2661: JEB 14 (2675)
Halt[3000+zAND];
2663: LIW 6152
2666: ESC WRMP
2670: LI0
2671: SGB 0
2673: JB 375 (2670)
i ← i + one;
2675: LGD0
2676: ADD
2677: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
2701: LGB 4
2703: LG0
2704: JNEB 267 (2573)
SetTest[zIOR];
2706: LIB 263
2710: ESC WRMP
2712: LIB 263
2714: SGB 2
i ← 0;
DO
2716: LI0
2717: SGB 0
a ← IOR[a: three, b: six];
2721: LGB 13
2723: LGB 36
2725: IOR
2726: SGB 3
2730: REC
IF a # seven THEN
2731: LGB 54
2733: JEB 14 (2747)
Halt[1000+zIOR];
2735: LIW 2233
2740: ESC WRMP
2742: LI0
2743: SGB 0
2745: JB 375 (2742)
a ← IOR[a: five, b: allOnes];
2747: LGB 20
2751: LGB 35
2753: IOR
2754: SGB 3
2756: REC
IF a # allOnes THEN
2757: LGB 35
2761: JEB 14 (2775)
Halt[2000+zIOR];
2763: LIW 4203
2766: ESC WRMP
2770: LI0
2771: SGB 0
2773: JB 375 (2770)
a ← IOR[a: five, b: zero];
2775: LGB 20
2777: LGB 5
3001: IOR
3002: SGB 3
3004: REC
IF a # five THEN
3005: LGB 20
3007: JEB 14 (3023)
Halt[3000+zIOR];
3011: LIW 6153
3014: ESC WRMP
3016: LI0
3017: SGB 0
3021: JB 375 (3016)
i ← i + one;
3023: LGD0
3024: ADD
3025: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
3027: LGB 4
3031: LG0
3032: JNEB 267 (2721)
SetTest[zADDSB];
3034: LIB 264
3036: ESC WRMP
3040: LIB 264
3042: SGB 2
i ← 0;
DO
ADDOne: PROC [CARDINAL] RETURNS [CARDINAL] = MACHINE CODE {zADDSB, 1};
ADDNegOne: PROC [CARDINAL] RETURNS [CARDINAL] = MACHINE CODE {zADDSB, 377B};
3044: LI0
3045: SGB 0
a ← ADDOne[four];
3047: LGB 16
3051: ADDSB 1
3053: SGB 3
3055: REC
IF a # five THEN
3056: LGB 20
3060: JEB 14 (3074)
Halt[1000+zADDSB];
3062: LIW 2234
3065: ESC WRMP
3067: LI0
3070: SGB 0
3072: JB 375 (3067)
a ← ADDNegOne[four];
3074: LGB 16
3076: ADDSB 377
3100: SGB 3
3102: REC
IF a # three THEN
3103: LGB 13
3105: JEB 14 (3121)
Halt[2000+zADDSB];
3107: LIW 4204
3112: ESC WRMP
3114: LI0
3115: SGB 0
3117: JB 375 (3114)
i ← i + one;
3121: LGD0
3122: ADD
3123: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
3125: LGB 4
3127: LG0
3130: JNEB 317 (3047)
SetTest[zADD];
3132: LIB 265
3134: ESC WRMP
3136: LIB 265
3140: SGB 2
i ← 0;
DO
3142: LI0
3143: SGB 0
a ← ADD[a: three, b: four];
3145: LGB 13
3147: LGB 16
3151: ADD
3152: SGB 3
3154: REC
IF a # seven THEN
3155: LGB 54
3157: JEB 14 (3173)
Halt[1000+zADD];
3161: LIW 2235
3164: ESC WRMP
3166: LI0
3167: SGB 0
3171: JB 375 (3166)
i ← i + one;
3173: LGD0
3174: ADD
3175: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
3177: LGB 4
3201: LG0
3202: JNEB 343 (3145)
SetTest[zSUB];
3204: LIB 266
3206: ESC WRMP
3210: LIB 266
3212: SGB 2
i ← 0;
DO
3214: LI0
3215: SGB 0
a ← SUB[a: four, b: three];
3217: LGB 16
3221: LGB 13
3223: SUB
3224: SGB 3
3226: REC
IF a # one THEN
3227: LG1
3230: JEB 14 (3244)
Halt[1000+zSUB];
3232: LIW 2236
3235: ESC WRMP
3237: LI0
3240: SGB 0
3242: JB 375 (3237)
i ← i + one;
3244: LGD0
3245: ADD
3246: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
3250: LGB 4
3252: LG0
3253: JNEB 344 (3217)
SetTest[zDADD];
3255: LIB 267
3257: ESC WRMP
3261: LIB 267
3263: SGB 2
i ← 0;
DO
3265: LI0
3266: SGB 0
aD ← DADD[a: oneTwo, b: threeFour];
3270: LGDB 11
3272: LGDB 21
3274: DADD
3275: SGDB 6
IF High[aD] # four OR Low[aD] # six THEN
3277: LGB 7
3301: LGB 16
3303: JNEB 10 (3313)
3305: LGB 6
3307: LGB 36
3311: JEB 14 (3325)
Halt[1000+zDADD];
3313: LIW 2237
3316: ESC WRMP
3320: LI0
3321: SGB 0
3323: JB 375 (3320)
aD ← DADD[a: zeroAllOnes, b: one];
3325: LGDB 52
3327: LG1
3330: LI0
3331: DADD
3332: SGDB 6
IF High[aD] # one OR Low[aD] # zero THEN
3334: LGB 7
3336: LG1
3337: JNEB 10 (3347)
3341: LGB 6
3343: LGB 5
3345: JEB 14 (3361)
Halt[2000+zDADD];
3347: LIW 4207
3352: ESC WRMP
3354: LI0
3355: SGB 0
3357: JB 375 (3354)
i ← i + one;
3361: LGD0
3362: ADD
3363: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
3365: LGB 4
3367: LG0
3370: JNEB 300 (3270)
SetTest[zDSUB];
3372: LIB 270
3374: ESC WRMP
3376: LIB 270
3400: SGB 2
i ← 0;
DO
3402: LI0
3403: SGB 0
aD ← DSUB[a: fourSix, b: threeFour];
3405: LGDB 74
3407: LGDB 21
3411: DSUB
3412: SGDB 6
IF High[aD] # one OR Low[aD] # two THEN
3414: LGB 7
3416: LG1
3417: JNEB 10 (3427)
3421: LGB 6
3423: LGB 10
3425: JEB 14 (3441)
Halt[1000+zDSUB];
3427: LIW 2240
3432: ESC WRMP
3434: LI0
3435: SGB 0
3437: JB 375 (3434)
aD ← DSUB[a: oneAllZeros, b: one];
3441: LGDB 105
3443: LG1
3444: LI0
3445: DSUB
3446: SGDB 6
IF High[aD] # zero OR Low[aD] # allOnes THEN
3450: LGB 7
3452: LGB 5
3454: JNEB 10 (3464)
3456: LGB 6
3460: LGB 35
3462: JEB 14 (3476)
Halt[2000+zDSUB];
3464: LIW 4210
3467: ESC WRMP
3471: LI0
3472: SGB 0
3474: JB 375 (3471)
i ← i + one;
3476: LGD0
3477: ADD
3500: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
3502: LGB 4
3504: LG0
3505: JNEB 300 (3405)
SetTest[zACD];
3507: LIB 272
3511: ESC WRMP
3513: LIB 272
3515: SGB 2
i ← 0;
DO
3517: LI0
3520: SGB 0
aD ← ACD[a: one, b: oneTwo];
3522: LG1
3523: LGDB 11
3525: ACD
3526: SGDB 6
IF High[aD] # one OR Low[aD] # three THEN
3530: LGB 7
3532: LG1
3533: JNEB 10 (3543)
3535: LGB 6
3537: LGB 13
3541: JEB 14 (3555)
Halt[1000+zACD];
3543: LIW 2242
3546: ESC WRMP
3550: LI0
3551: SGB 0
3553: JB 375 (3550)
aD ← ACD[a: one, b: zeroAllOnes];
3555: LG1
3556: LGDB 52
3560: ACD
3561: SGDB 6
IF High[aD] # one OR Low[aD] # zero THEN
3563: LGB 7
3565: LG1
3566: JNEB 10 (3576)
3570: LGB 6
3572: LGB 5
3574: JEB 14 (3610)
Halt[2000+zACD];
3576: LIW 4212
3601: ESC WRMP
3603: LI0
3604: SGB 0
3606: JB 375 (3603)
i ← i + one;
3610: LGD0
3611: ADD
3612: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
3614: LGB 4
3616: LG0
3617: JNEB 303 (3522)
SetTest[zADC];
3621: LIB 271
3623: ESC WRMP
3625: LIB 271
3627: SGB 2
i ← 0;
DO
3631: LI0
3632: SGB 0
aD ← ADC[a: oneTwo, b: one];
3634: LGDB 11
3636: LG1
3637: ADC
3640: SGDB 6
IF High[aD] # one OR Low[aD] # three THEN
3642: LGB 7
3644: LG1
3645: JNEB 10 (3655)
3647: LGB 6
3651: LGB 13
3653: JEB 14 (3667)
Halt[1000+zADC];
3655: LIW 2241
3660: ESC WRMP
3662: LI0
3663: SGB 0
3665: JB 375 (3662)
aD ← ADC[a: zeroAllOnes, b: one];
3667: LGDB 52
3671: LG1
3672: ADC
3673: SGDB 6
IF High[aD] # one OR Low[aD] # zero THEN
3675: LGB 7
3677: LG1
3700: JNEB 10 (3710)
3702: LGB 6
3704: LGB 5
3706: JEB 14 (3722)
Halt[2000+zADC];
3710: LIW 4211
3713: ESC WRMP
3715: LI0
3716: SGB 0
3720: JB 375 (3715)
i ← i + one;
3722: LGD0
3723: ADD
3724: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
3726: LGB 4
3730: LG0
3731: JNEB 303 (3634)
SetTest[zMUL];
3733: LIB 274
3735: ESC WRMP
3737: LIB 274
3741: SGB 2
i ← 0;
DO
3743: LI0
3744: SGB 0
[c: a, d: b] ← MUL[a: one, b: three];
3746: LG1
3747: LGB 13
3751: MUL
3752: REC
3753: SGB 23
3755: SGB 3
3757: REC
IF a # three OR b # zero THEN
3760: LGB 13
3762: JNEB 10 (3772)
3764: LGB 23
3766: LGB 5
3770: JEB 14 (4004)
Halt[1000+zMUL];
3772: LIW 2244
3775: ESC WRMP
3777: LI0
4000: SGB 0
4002: JB 375 (3777)
[c: a, d: b] ← MUL[a: fourHundred, b: fourHundred];
4004: LIHB 1
4006: DUP
4007: MUL
4010: REC
4011: SGB 23
4013: SGB 3
4015: REC
IF a # zero OR b # one THEN
4016: LGB 5
4020: JNEB 7 (4027)
4022: LGB 23
4024: LG1
4025: JEB 14 (4041)
Halt[2000+zMUL];
4027: LIW 4214
4032: ESC WRMP
4034: LI0
4035: SGB 0
4037: JB 375 (4034)
i ← i + one;
4041: LGD0
4042: ADD
4043: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
4045: LGB 4
4047: LG0
4050: JNEB 276 (3746)
SetTest[zDCMP];
4052: LIB 275
4054: ESC WRMP
4056: LIB 275
4060: SGB 2
i ← 0;
DO
4062: LI0
4063: SGB 0
a ← DCMP[a: FIRST[LONG INTEGER], b: bothZero];
4065: LI0
4066: LINI
4067: LGDB 57
4071: DCMP
4072: SGB 3
4074: REC
IF a # allOnes THEN
4075: LGB 35
4077: JEB 14 (4113)
Halt[1000+zDCMP];
4101: LIW 2245
4104: ESC WRMP
4106: LI0
4107: SGB 0
4111: JB 375 (4106)
a ← DCMP[a: oneTwo, b: oneTwo];
4113: LGDB 11
4115: DDUP
4116: DCMP
4117: SGB 3
4121: REC
IF a # zero THEN
4122: LGB 5
4124: JEB 14 (4140)
Halt[2000+zDCMP];
4126: LIW 4215
4131: ESC WRMP
4133: LI0
4134: SGB 0
4136: JB 375 (4133)
a ← DCMP[a: LAST[LONG INTEGER], b: bothZero];
4140: LIN1
4141: LIW 77777
4144: LGDB 57
4146: DCMP
4147: SGB 3
4151: REC
IF a # one THEN
4152: LG1
4153: JEB 14 (4167)
Halt[3000+zDCMP];
4155: LIW 6165
4160: ESC WRMP
4162: LI0
4163: SGB 0
4165: JB 375 (4162)
i ← i + one;
4167: LGD0
4170: ADD
4171: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
4173: LGB 4
4175: LG0
4176: JNEB 267 (4065)
SetTest[zUDCMP];
4200: LIB 276
4202: ESC WRMP
4204: LIB 276
4206: SGB 2
i ← 0;
DO
4210: LI0
4211: SGB 0
a ← UDCMP[a: zero, b: fourSix];
4213: LGB 5
4215: LI0
4216: LGDB 74
4220: UDCMP
4221: SGB 3
4223: REC
IF a # allOnes THEN
4224: LGB 35
4226: JEB 14 (4242)
Halt[1000+zUDCMP];
4230: LIW 2246
4233: ESC WRMP
4235: LI0
4236: SGB 0
4240: JB 375 (4235)
a ← UDCMP[a: oneTwo, b: oneTwo];
4242: LGDB 11
4244: DDUP
4245: UDCMP
4246: SGB 3
4250: REC
IF a # zero THEN
4251: LGB 5
4253: JEB 14 (4267)
Halt[2000+zUDCMP];
4255: LIW 4216
4260: ESC WRMP
4262: LI0
4263: SGB 0
4265: JB 375 (4262)
a ← UDCMP[a: bothOnes, b: bothZero];
4267: LGDB 101
4271: LGDB 57
4273: UDCMP
4274: SGB 3
4276: REC
IF a # one THEN
4277: LG1
4300: JEB 14 (4314)
Halt[3000+zUDCMP];
4302: LIW 6166
4305: ESC WRMP
4307: LI0
4310: SGB 0
4312: JB 375 (4307)
i ← i + one;
4314: LGD0
4315: ADD
4316: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
4320: LGB 4
4322: LG0
4323: JNEB 270 (4213)
SetTest[zSHIFT];
4325: LIB 173
4327: ESC WRMP
4331: LIB 173
4333: SGB 2
i ← 0;
DO
4335: LI0
4336: SGB 0
a ← SHIFT[a: one, b: two];
4340: LG1
4341: LGB 10
4343: SHIFT
4344: SGB 3
4346: REC
IF a # four THEN
4347: LGB 16
4351: JEB 14 (4365)
Halt[1000+zSHIFT];
4353: LIW 2143
4356: ESC WRMP
4360: LI0
4361: SGB 0
4363: JB 375 (4360)
a ← SHIFT[a: one, b: fourHundred];
4365: LG1
4366: LIHB 1
4370: SHIFT
4371: SGB 3
4373: REC
IF a # zero THEN
4374: LGB 5
4376: JEB 14 (4412)
Halt[2000+zSHIFT];
4400: LIW 4113
4403: ESC WRMP
4405: LI0
4406: SGB 0
4410: JB 375 (4405)
a ← SHIFT[a: fourHundred, b: -5];
4412: LIHB 1
4414: LINB 373
4416: SHIFT
4417: SGB 3
4421: REC
IF a # eight THEN
4422: LGB 61
4424: JEB 14 (4440)
Halt[3000+zSHIFT];
4426: LIW 6063
4431: ESC WRMP
4433: LI0
4434: SGB 0
4436: JB 375 (4433)
i ← i + one;
4440: LGD0
4441: ADD
4442: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
4444: LGB 4
4446: LG0
4447: JNEB 271 (4340)
SetTest[zSHIFTSB];
4451: LIB 174
4453: ESC WRMP
4455: LIB 174
4457: SGB 2
i ← 0;
DO
4461: LI0
4462: SGB 0
a ← three*4;
4464: LGB 13
4466: DBL
4467: DBL
4470: SGB 3
4472: REC
IF a # twelve THEN
4473: LGB 62
4475: JEB 14 (4511)
Halt[1000+zSHIFTSB];
4477: LIW 2144
4502: ESC WRMP
4504: LI0
4505: SGB 0
4507: JB 375 (4504)
a ← fourHundred/200B;
4511: LI2
4512: SGB 3
4514: REC
IF a # two THEN
4515: LGB 10
4517: JEB 14 (4533)
Halt[2000+zSHIFTSB];
4521: LIW 4114
4524: ESC WRMP
4526: LI0
4527: SGB 0
4531: JB 375 (4526)
i ← i + one;
4533: LGD0
4534: ADD
4535: SGB 0
IF loopCount = i THEN EXIT;
ENDLOOP;
4537: LGB 4
4541: LG0
4542: JNEB 322 (4464)
SetTest[zRET];
4544: LIB 357
4546: ESC WRMP
4550: LIB 357
4552: SGB 2
RETURN};
Singles: TYPE = RECORD [a, b, c, d, e, f: CARDINAL ← NULL];
pSingles: POINTER TO Singles;
lpSingles: LONG POINTER TO Singles;
singles: Singles;
Doubles: TYPE = RECORD [a, b, c: LONG CARDINAL ← NULL];
lpDoubles: LONG POINTER TO Doubles;
pDoubles: POINTER TO Doubles;
doubles: Doubles;
Bytes: TYPE = RECORD [
SELECT OVERLAID * FROM
bytes => [bytes: PACKED ARRAY [0..4) OF [0..256)],
words => [words: ARRAY [0..2) OF CARDINAL],
ENDCASE];
lpBytes: LONG POINTER TO Bytes;
pBytes: POINTER TO Bytes;
bytes: Bytes;
Fields: TYPE = RECORD [
SELECT OVERLAID * FROM
fields => [a,b,c,d,e,f,g,h,i,j,k,l: [0..16) ← NULL],
stackFields => [stackFields: PACKED ARRAY [0..12) OF [0..16)],
words => [words: ARRAY [0..3) OF CARDINAL],
ENDCASE];
lpFields: LONG POINTER TO Fields;
pFields: POINTER TO Fields;
fields: Fields;
4554: RET
Instructions: 990, Bytes: 1744
SetupReadTests: PROC = {
Entry point: 20, Frame size index: 0
pSingles ← @singles;
4556: GAB 65
4560: SGB 76
lpSingles ← @singles;
4562: GAB 65
4564: LP
4565: SGDB 55
pDoubles ← @doubles;
4567: GAB 27
4571: SGB 37
lpDoubles ← @doubles;
4573: GAB 27
4575: LP
4576: SGDB 45
pBytes ← @bytes;
4600: GAB 43
4602: SGB 47
lpBytes ← @bytes;
4604: GAB 43
4606: LP
4607: SGDB 50
pFields ← @fields;
4611: GAB 40
4613: SGB 17
lpFields ← @fields;
4615: GAB 40
4617: LP
4620: SGDB 14
RETURN};
4622: RET
Instructions: 21, Bytes: 38
ReadWriteTests: PROC = {
LocalVars: TYPE = RECORD [
l0, l1: POINTER TO Doubles, l2: LONG POINTER TO Doubles,
l4: POINTER TO Singles, l5: LONG POINTER TO Singles,
l7: POINTER TO Fields, l8: LONG POINTER TO Fields];
Entry point: 19, Frame size index: 2
locals: LocalVars ← [
l0: pDoubles, l1: pDoubles, l2: lpDoubles, l4: pSingles, l5: lpSingles,
l7: pFields, l8: lpFields];
4624: LGB 37
4626: DUP
4627: SLD0
4630: LGDB 45
4632: SLD2
4633: LGB 76
4635: SL4
4636: LGDB 55
4640: SLD5
4641: LGB 17
4643: SL7
4644: LGDB 14
4646: SLD8
SetTest[zRD0];
4647: LIB 105
4651: ESC WRMP
4653: LIB 105
4655: SGB 2
THROUGH [0..loopCount) DO
4657: LGB 4
4661: SLB 13
4663: LI0
4664: JB 34 (4720)
4666: REC
4667: SL10
doubles.a ← oneTwo;
4670: LGDB 11
4672: SGDB 27
IF pDoubles.a # oneTwo THEN
4674: LGB 37
4676: RD0
4677: LGDB 11
4701: UDCMP
4702: JZB 14 (4716)
Halt[1000+zRD0];
ENDLOOP;
4704: LIW 2055
4707: ESC WRMP
4711: LI0
4712: SGB 0
4714: JB 375 (4711)
4716: LL10
4717: INC
4720: LL11
4721: JULB 345 (4666)
SetTest[zRDB];
4723: LIB 106
4725: ESC WRMP
4727: LIB 106
4731: SGB 2
THROUGH [0..loopCount) DO
4733: LGB 4
4735: SLB 13
4737: LI0
4740: JB 35 (4775)
4742: REC
4743: SL10
doubles.b ← oneTwo;
4744: LGDB 11
4746: SGDB 31
IF pDoubles.b # oneTwo THEN
4750: LGB 37
4752: RDB 2
4754: LGDB 11
4756: UDCMP
4757: JZB 14 (4773)
Halt[1000+zRDB];
ENDLOOP;
4761: LIW 2056
4764: ESC WRMP
4766: LI0
4767: SGB 0
4771: JB 375 (4766)
4773: LL10
4774: INC
4775: LL11
4776: JULB 344 (4742)
SetTest[zRDL0];
5000: LIB 107
5002: ESC WRMP
5004: LIB 107
5006: SGB 2
THROUGH [0..loopCount) DO
5010: LGB 4
5012: SLB 13
5014: LI0
5015: JB 34 (5051)
5017: REC
5020: SL10
doubles.a ← oneTwo;
5021: LGDB 11
5023: SGDB 27
IF lpDoubles.a # oneTwo THEN
5025: LGDB 45
5027: RDL0
5030: LGDB 11
5032: UDCMP
5033: JZB 14 (5047)
Halt[1000+zRDL0];
ENDLOOP;
5035: LIW 2057
5040: ESC WRMP
5042: LI0
5043: SGB 0
5045: JB 375 (5042)
5047: LL10
5050: INC
5051: LL11
5052: JULB 345 (5017)
SetTest[zRDLB];
5054: LIB 110
5056: ESC WRMP
5060: LIB 110
5062: SGB 2
THROUGH [0..loopCount) DO
5064: LGB 4
5066: SLB 13
5070: LI0
5071: JB 35 (5126)
5073: REC
5074: SL10
doubles.b ← oneTwo;
5075: LGDB 11
5077: SGDB 31
IF lpDoubles.b # oneTwo THEN
5101: LGDB 45
5103: RDLB 2
5105: LGDB 11
5107: UDCMP
5110: JZB 14 (5124)
Halt[1000+zRDLB];
ENDLOOP;
5112: LIW 2060
5115: ESC WRMP
5117: LI0
5120: SGB 0
5122: JB 375 (5117)
5124: LL10
5125: INC
5126: LL11
5127: JULB 344 (5073)
SetTest[zPSB];
5131: LIB 113
5133: ESC WRMP
5135: LIB 113
5137: SGB 2
THROUGH [0..loopCount) DO
5141: LGB 4
5143: SLB 13
5145: LI0
5146: JB 57 (5225)
5150: REC
5151: SL10
pSingles↑ ← [a: zero, c: one, e: two];
5152: LGB 76
5154: LGB 5
5156: PSB 0
5160: LG1
5161: PSB 2
5163: LGB 10
5165: PSB 4
5167: DIS
IF singles.a # zero OR singles.c # one OR singles.e # two THEN
5170: LGB 65
5172: LGB 5
5174: JNEB 15 (5211)
5176: LGB 67
5200: LG1
5201: JNEB 10 (5211)
5203: LGB 71
5205: LGB 10
5207: JEB 14 (5223)
Halt[1000+zPSB];
ENDLOOP;
5211: LIW 2063
5214: ESC WRMP
5216: LI0
5217: SGB 0
5221: JB 375 (5216)
5223: LL10
5224: INC
5225: LL11
5226: JULB 322 (5150)
SetTest[zWLB];
5230: LIB 114
5232: ESC WRMP
5234: LIB 114
5236: SGB 2
THROUGH [0..loopCount) DO
5240: LGB 4
5242: SLB 13
5244: LI0
5245: JB 34 (5301)
5247: REC
5250: SL10
lpSingles.a ← four;
5251: LGB 16
5253: LGDB 55
5255: WLB 0
IF singles.a # four THEN
5257: LGB 65
5261: LGB 16
5263: JEB 14 (5277)
Halt[1000+zWLB];
ENDLOOP;
5265: LIW 2064
5270: ESC WRMP
5272: LI0
5273: SGB 0
5275: JB 375 (5272)
5277: LL10
5300: INC
5301: LL11
5302: JULB 345 (5247)
SetTest[zPSLB];
5304: LIB 115
5306: ESC WRMP
5310: LIB 115
5312: SGB 2
THROUGH [0..loopCount) DO
5314: LGB 4
5316: SLB 13
5320: LI0
5321: JB 57 (5400)
5323: REC
5324: SL10
lpSingles↑ ← [a: zero, c: one, e: two];
5325: LGDB 55
5327: LGB 5
5331: PSLB 0
5333: LG1
5334: PSLB 2
5336: LGB 10
5340: PSLB 4
5342: DIS2
IF singles.a # zero OR singles.c # one OR singles.e # two THEN
5343: LGB 65
5345: LGB 5
5347: JNEB 15 (5364)
5351: LGB 67
5353: LG1
5354: JNEB 10 (5364)
5356: LGB 71
5360: LGB 10
5362: JEB 14 (5376)
Halt[1000+zPSLB];
ENDLOOP;
5364: LIW 2065
5367: ESC WRMP
5371: LI0
5372: SGB 0
5374: JB 375 (5371)
5376: LL10
5377: INC
5400: LL11
5401: JULB 322 (5323)
SetTest[zWDB];
5403: LIB 116
5405: ESC WRMP
5407: LIB 116
5411: SGB 2
THROUGH [0..loopCount) DO
5413: LGB 4
5415: SLB 13
5417: LI0
5420: JB 35 (5455)
5422: REC
5423: SL10
pDoubles.a ← oneTwo;
5424: LGDB 11
5426: LGB 37
5430: WDB 0
IF doubles.a # oneTwo THEN
5432: LGDB 27
5434: LGDB 11
5436: UDCMP
5437: JZB 14 (5453)
Halt[1000+zWDB];
ENDLOOP;
5441: LIW 2066
5444: ESC WRMP
5446: LI0
5447: SGB 0
5451: JB 375 (5446)
5453: LL10
5454: INC
5455: LL11
5456: JULB 344 (5422)
SetTest[zPSD0];
5460: LIB 117
5462: ESC WRMP
5464: LIB 117
5466: SGB 2
THROUGH [0..loopCount) DO
PSD0: PROC [p: POINTER, d: LONG CARDINAL] RETURNS[POINTER] =
MACHINE CODE {zPSD0};
5470: LGB 4
5472: SLB 13
5474: LI0
5475: JB 35 (5532)
5477: REC
5500: SL10
[] ← PSD0[pDoubles, threeFour];
5501: LGB 37
5503: LGDB 21
5505: PSD0
5506: DIS
IF doubles.a # threeFour THEN
5507: LGDB 27
5511: LGDB 21
5513: UDCMP
5514: JZB 14 (5530)
Halt[1000+zPSD0];
ENDLOOP;
5516: LIW 2067
5521: ESC WRMP
5523: LI0
5524: SGB 0
5526: JB 375 (5523)
5530: LL10
5531: INC
5532: LL11
5533: JULB 344 (5477)
SetTest[zPSDB];
5535: LIB 120
5537: ESC WRMP
5541: LIB 120
5543: SGB 2
THROUGH [0..loopCount) DO
5545: LGB 4
5547: SLB 13
5551: LI0
5552: JB 51 (5623)
5554: REC
5555: SL10
pDoubles↑ ← [b: oneTwo, c: fiveSix];
5556: LGB 37
5560: LGDB 11
5562: PSDB 2
5564: LGDB 63
5566: PSDB 4
5570: DIS
IF doubles.b # oneTwo OR doubles.c # fiveSix THEN
5571: LGDB 31
5573: LGDB 11
5575: UDCMP
5576: JNZB 11 (5607)
5600: LGDB 33
5602: LGDB 63
5604: UDCMP
5605: JZB 14 (5621)
Halt[1000+zPSDB];
ENDLOOP;
5607: LIW 2070
5612: ESC WRMP
5614: LI0
5615: SGB 0
5617: JB 375 (5614)
5621: LL10
5622: INC
5623: LL11
5624: JULB 330 (5554)
SetTest[zWDLB];
5626: LIB 121
5630: ESC WRMP
5632: LIB 121
5634: SGB 2
THROUGH [0..loopCount) DO
5636: LGB 4
5640: SLB 13
5642: LI0
5643: JB 35 (5700)
5645: REC
5646: SL10
lpDoubles.a ← oneTwo;
5647: LGDB 11
5651: LGDB 45
5653: WDLB 0
IF doubles.a # oneTwo THEN
5655: LGDB 27
5657: LGDB 11
5661: UDCMP
5662: JZB 14 (5676)
Halt[1000+zWDLB];
ENDLOOP;
5664: LIW 2071
5667: ESC WRMP
5671: LI0
5672: SGB 0
5674: JB 375 (5671)
5676: LL10
5677: INC
5700: LL11
5701: JULB 344 (5645)
SetTest[zRLI00];
5703: LIB 123
5705: ESC WRMP
5707: LIB 123
5711: SGB 2
THROUGH [0..loopCount) DO
5713: LGB 4
5715: SLB 13
5717: LI0
5720: JB 31 (5751)
5722: REC
5723: SL10
doubles.a ← oneTwo;
5724: LGDB 11
5726: SGDB 27
IF Low[locals.l0.a] # two THEN
5730: RLI00
5731: LGB 10
5733: JEB 14 (5747)
Halt[1000+zRLI00];
ENDLOOP;
5735: LIW 2073
5740: ESC WRMP
5742: LI0
5743: SGB 0
5745: JB 375 (5742)
5747: LL10
5750: INC
5751: LL11
5752: JULB 350 (5722)
SetTest[zRLI01];
5754: LIB 124
5756: ESC WRMP
5760: LIB 124
5762: SGB 2
THROUGH [0..loopCount) DO
5764: LGB 4
5766: SLB 13
5770: LI0
5771: JB 30 (6021)
5773: REC
5774: SL10
doubles.a ← oneTwo;
5775: LGDB 11
5777: SGDB 27
IF High[locals.l0.a] # one THEN
6001: RLI01
6002: LG1
6003: JEB 14 (6017)
Halt[1000+zRLI01];
ENDLOOP;
6005: LIW 2074
6010: ESC WRMP
6012: LI0
6013: SGB 0
6015: JB 375 (6012)
6017: LL10
6020: INC
6021: LL11
6022: JULB 351 (5773)
SetTest[zRLI02];
6024: LIB 125
6026: ESC WRMP
6030: LIB 125
6032: SGB 2
THROUGH [0..loopCount) DO
6034: LGB 4
6036: SLB 13
6040: LI0
6041: JB 31 (6072)
6043: REC
6044: SL10
doubles.b ← oneTwo;
6045: LGDB 11
6047: SGDB 31
IF Low[locals.l0.b] # two THEN
6051: RLI02
6052: LGB 10
6054: JEB 14 (6070)
Halt[1000+zRLI02];
ENDLOOP;
6056: LIW 2075
6061: ESC WRMP
6063: LI0
6064: SGB 0
6066: JB 375 (6063)
6070: LL10
6071: INC
6072: LL11
6073: JULB 350 (6043)
SetTest[zRLI03];
6075: LIB 126
6077: ESC WRMP
6101: LIB 126
6103: SGB 2
THROUGH [0..loopCount) DO
6105: LGB 4
6107: SLB 13
6111: LI0
6112: JB 30 (6142)
6114: REC
6115: SL10
doubles.b ← oneTwo;
6116: LGDB 11
6120: SGDB 31
IF High[locals.l0.b] # one THEN
6122: RLI03
6123: LG1
6124: JEB 14 (6140)
Halt[1000+zRLI03];
ENDLOOP;
6126: LIW 2076
6131: ESC WRMP
6133: LI0
6134: SGB 0
6136: JB 375 (6133)
6140: LL10
6141: INC
6142: LL11
6143: JULB 351 (6114)
SetTest[zRLIP];
6145: LIB 127
6147: ESC WRMP
6151: LIB 127
6153: SGB 2
THROUGH [0..loopCount) DO
6155: LGB 4
6157: SLB 13
6161: LI0
6162: JB 31 (6213)
6164: REC
6165: SL10
doubles.b ← oneTwo;
6166: LGDB 11
6170: SGDB 31
IF High[locals.l1.b] # one THEN
6172: RLIP [1,3]
6174: LG1
6175: JEB 14 (6211)
Halt[1000+zRLIP];
ENDLOOP;
6177: LIW 2077
6202: ESC WRMP
6204: LI0
6205: SGB 0
6207: JB 375 (6204)
6211: LL10
6212: INC
6213: LL11
6214: JULB 350 (6164)
SetTest[zRLILP];
6216: LIB 130
6220: ESC WRMP
6222: LIB 130
6224: SGB 2
THROUGH [0..loopCount) DO
6226: LGB 4
6230: SLB 13
6232: LI0
6233: JB 32 (6265)
6235: REC
6236: SL10
doubles.b ← threeFour;
6237: LGDB 21
6241: SGDB 31
IF High[locals.l2.b] # three THEN
6243: RLILP [2,3]
6245: LGB 13
6247: JEB 14 (6263)
Halt[1000+zRLILP];
ENDLOOP;
6251: LIW 2100
6254: ESC WRMP
6256: LI0
6257: SGB 0
6261: JB 375 (6256)
6263: LL10
6264: INC
6265: LL11
6266: JULB 347 (6235)
SetTest[zRLDI00];
6270: LIB 131
6272: ESC WRMP
6274: LIB 131
6276: SGB 2
THROUGH [0..loopCount) DO
6300: LGB 4
6302: SLB 13
6304: LI0
6305: JB 32 (6337)
6307: REC
6310: SL10
doubles.a ← threeFour;
6311: LGDB 21
6313: SGDB 27
IF locals.l0.a # threeFour THEN
6315: RLDI00
6316: LGDB 21
6320: UDCMP
6321: JZB 14 (6335)
Halt[1000+zRLDI00];
ENDLOOP;
6323: LIW 2101
6326: ESC WRMP
6330: LI0
6331: SGB 0
6333: JB 375 (6330)
6335: LL10
6336: INC
6337: LL11
6340: JULB 347 (6307)
SetTest[zRLDIP];
6342: LIB 132
6344: ESC WRMP
6346: LIB 132
6350: SGB 2
THROUGH [0..loopCount) DO
6352: LGB 4
6354: SLB 13
6356: LI0
6357: JB 33 (6412)
6361: REC
6362: SL10
doubles.a ← threeFour;
6363: LGDB 21
6365: SGDB 27
IF locals.l1.b # threeFour THEN
6367: RLDIP [1,2]
6371: LGDB 21
6373: UDCMP
6374: JZB 14 (6410)
Halt[1000+zRLDIP];
ENDLOOP;
6376: LIW 2102
6401: ESC WRMP
6403: LI0
6404: SGB 0
6406: JB 375 (6403)
6410: LL10
6411: INC
6412: LL11
6413: JULB 346 (6361)
SetTest[zRLDILP];
6415: LIB 133
6417: ESC WRMP
6421: LIB 133
6423: SGB 2
THROUGH [0..loopCount) DO
6425: LGB 4
6427: SLB 13
6431: LI0
6432: JB 33 (6465)
6434: REC
6435: SL10
doubles.a ← threeFour;
6436: LGDB 21
6440: SGDB 27
IF locals.l2.b # threeFour THEN
6442: RLDILP [2,2]
6444: LGDB 21
6446: UDCMP
6447: JZB 14 (6463)
Halt[1000+zRLDILP];
ENDLOOP;
6451: LIW 2103
6454: ESC WRMP
6456: LI0
6457: SGB 0
6461: JB 375 (6456)
6463: LL10
6464: INC
6465: LL11
6466: JULB 346 (6434)
SetTest[zWLIP];
6470: LIB 136
6472: ESC WRMP
6474: LIB 136
6476: SGB 2
THROUGH [0..loopCount) DO
6500: LGB 4
6502: SLB 13
6504: LI0
6505: JB 32 (6537)
6507: REC
6510: SL10
locals.l4.a ← three;
6511: LGB 13
6513: WLIP [4,0]
IF singles.a # three THEN
6515: LGB 65
6517: LGB 13
6521: JEB 14 (6535)
Halt[1000+zWLIP];
ENDLOOP;
6523: LIW 2106
6526: ESC WRMP
6530: LI0
6531: SGB 0
6533: JB 375 (6530)
6535: LL10
6536: INC
6537: LL11
6540: JULB 347 (6507)
SetTest[zWLILP];
6542: LIB 137
6544: ESC WRMP
6546: LIB 137
6550: SGB 2
THROUGH [0..loopCount) DO
6552: LGB 4
6554: SLB 13
6556: LI0
6557: JB 30 (6607)
6561: REC
6562: SL10
locals.l5.b ← one;
6563: LG1
6564: WLILP [5,1]
IF singles.b # one THEN
6566: LGB 66
6570: LG1
6571: JEB 14 (6605)
Halt[1000+zWLILP];
ENDLOOP;
6573: LIW 2107
6576: ESC WRMP
6600: LI0
6601: SGB 0
6603: JB 375 (6600)
6605: LL10
6606: INC
6607: LL11
6610: JULB 351 (6561)
SetTest[zWLDILP];
6612: LIB 140
6614: ESC WRMP
6616: LIB 140
6620: SGB 2
THROUGH [0..loopCount) DO
6622: LGB 4
6624: SLB 13
6626: LI0
6627: JB 35 (6664)
6631: REC
6632: SL10
locals.l2.b ← allOnes;
6633: LGB 35
6635: LI0
6636: WLDILP [2,2]
IF doubles.b # allOnes THEN
6640: LGB 35
6642: LI0
6643: LGDB 31
6645: UDCMP
6646: JZB 14 (6662)
Halt[1000+zWLDILP];
ENDLOOP;
6650: LIW 2110
6653: ESC WRMP
6655: LI0
6656: SGB 0
6660: JB 375 (6655)
6662: LL10
6663: INC
6664: LL11
6665: JULB 344 (6631)
SetTest[zRS];
6667: LIB 141
6671: ESC WRMP
6673: LIB 141
6675: SGB 2
THROUGH [0..loopCount) DO
6677: LGB 4
6701: SLB 13
6703: LI0
6704: JB 46 (6752)
6706: REC
6707: SL10
bytes.words[0] ← fourHundred;
6710: LIHB 1
6712: SGB 43
IF pBytes.bytes[zero] # one OR pBytes.bytes[one] # zero THEN
6714: LGB 47
6716: LGB 5
6720: RS 0
6722: LG1
6723: JNEB 13 (6736)
6725: LGB 47
6727: LG1
6730: RS 0
6732: LGB 5
6734: JEB 14 (6750)
Halt[1000+zRS];
ENDLOOP;
6736: LIW 2111
6741: ESC WRMP
6743: LI0
6744: SGB 0
6746: JB 375 (6743)
6750: LL10
6751: INC
6752: LL11
6753: JULB 333 (6706)
SetTest[zRLS];
6755: LIB 142
6757: ESC WRMP
6761: LIB 142
6763: SGB 2
THROUGH [0..loopCount) DO
6765: LGB 4
6767: SLB 13
6771: LI0
6772: JB 46 (7040)
6774: REC
6775: SL10
bytes.words[0] ← fourHundred;
6776: LIHB 1
7000: SGB 43
IF lpBytes.bytes[zero] # one OR lpBytes.bytes[one] # zero THEN
7002: LGDB 50
7004: LGB 5
7006: RLS 0
7010: LG1
7011: JNEB 13 (7024)
7013: LGDB 50
7015: LG1
7016: RLS 0
7020: LGB 5
7022: JEB 14 (7036)
Halt[1000+zRLS];
ENDLOOP;
7024: LIW 2112
7027: ESC WRMP
7031: LI0
7032: SGB 0
7034: JB 375 (7031)
7036: LL10
7037: INC
7040: LL11
7041: JULB 333 (6774)
SetTest[zWS];
7043: LIB 143
7045: ESC WRMP
7047: LIB 143
7051: SGB 2
THROUGH [0..loopCount) DO
7053: LGB 4
7055: SLB 13
7057: LI0
7060: JB 53 (7133)
7062: REC
7063: SL10
pBytes.bytes[zero] ← zero;
7064: LGB 5
7066: LGB 47
7070: LGB 5
7072: WS 0
pBytes.bytes[one] ← allOnes;
7074: LGB 35
7076: LGB 47
7100: LG1
7101: WS 0
IF bytes.words[zero] # fourHundred - one THEN
7103: LIHB 1
7105: LG1
7106: SUB
7107: LGB 5
7111: GAB 43
7113: ADD
7114: R0
7115: JEB 14 (7131)
Halt[1000+zWS];
ENDLOOP;
7117: LIW 2113
7122: ESC WRMP
7124: LI0
7125: SGB 0
7127: JB 375 (7124)
7131: LL10
7132: INC
7133: LL11
7134: JULB 326 (7062)
SetTest[zWLS];
7136: LIB 144
7140: ESC WRMP
7142: LIB 144
7144: SGB 2
THROUGH [0..loopCount) DO
7146: LGB 4
7150: SLB 13
7152: LI0
7153: JB 50 (7223)
7155: REC
7156: SL10
lpBytes.bytes[two] ← one;
7157: LG1
7160: LGDB 50
7162: LGB 10
7164: WLS 0
lpBytes.bytes[three] ← two;
7166: LGB 10
7170: LGDB 50
7172: LGB 13
7174: WLS 0
IF bytes.words[1] # (fourHundred + two) THEN
7176: LGB 44
7200: LIHB 1
7202: SUB
7203: LGB 10
7205: JEB 14 (7221)
Halt[1000+zWLS];
ENDLOOP;
7207: LIW 2114
7212: ESC WRMP
7214: LI0
7215: SGB 0
7217: JB 375 (7214)
7221: LL10
7222: INC
7223: LL11
7224: JULB 331 (7155)
SetTest[zR0F];
7226: LIB 145
7230: ESC WRMP
7232: LIB 145
7234: SGB 2
THROUGH [0..loopCount) DO
7236: LGB 4
7240: SLB 13
7242: LI0
7243: JB 44 (7307)
7245: REC
7246: SL10
fields.words[0] ← four;
7247: LGB 16
7251: SGB 40
IF pFields.a # zero OR pFields.d # four THEN
7253: LGB 17
7255: R0F [0,3]
7257: LGB 5
7261: JNEB 12 (7273)
7263: LGB 17
7265: R0F [14,3]
7267: LGB 16
7271: JEB 14 (7305)
Halt[1000+zR0F];
ENDLOOP;
7273: LIW 2115
7276: ESC WRMP
7300: LI0
7301: SGB 0
7303: JB 375 (7300)
7305: LL10
7306: INC
7307: LL11
7310: JULB 335 (7245)
SetTest[zRF];
7312: LIB 146
7314: ESC WRMP
7316: LIB 146
7320: SGB 2
THROUGH [0..loopCount) DO
7322: LGB 4
7324: SLB 13
7326: LI0
7327: JB 46 (7375)
7331: REC
7332: SL10
fields.words[1] ← seven;
7333: LGB 54
7335: SGB 41
IF pFields.f # zero OR pFields.h # seven THEN
7337: LGB 17
7341: RF 1, [4,3]
7344: LGB 5
7346: JNEB 13 (7361)
7350: LGB 17
7352: RF 1, [14,3]
7355: LGB 54
7357: JEB 14 (7373)
Halt[1000+zRF];
ENDLOOP;
7361: LIW 2116
7364: ESC WRMP
7366: LI0
7367: SGB 0
7371: JB 375 (7366)
7373: LL10
7374: INC
7375: LL11
7376: JULB 333 (7331)
SetTest[zRL0F];
7400: LIB 147
7402: ESC WRMP
7404: LIB 147
7406: SGB 2
THROUGH [0..loopCount) DO
7410: LGB 4
7412: SLB 13
7414: LI0
7415: JB 43 (7460)
7417: REC
7420: SL10
fields.words[0] ← fourHundred;
7421: LIHB 1
7423: SGB 40
IF lpFields.b # one OR lpFields.d # zero THEN
7425: LGDB 14
7427: RL0F [4,3]
7431: LG1
7432: JNEB 12 (7444)
7434: LGDB 14
7436: RL0F [14,3]
7440: LGB 5
7442: JEB 14 (7456)
Halt[1000+zRL0F];
ENDLOOP;
7444: LIW 2117
7447: ESC WRMP
7451: LI0
7452: SGB 0
7454: JB 375 (7451)
7456: LL10
7457: INC
7460: LL11
7461: JULB 336 (7417)
SetTest[zRLF];
7463: LIB 150
7465: ESC WRMP
7467: LIB 150
7471: SGB 2
THROUGH [0..loopCount) DO
7473: LGB 4
7475: SLB 13
7477: LI0
7500: JB 46 (7546)
7502: REC
7503: SL10
fields.words[1] ← nine;
7504: LGB 24
7506: SGB 41
IF lpFields.g # zero OR lpFields.h # nine THEN
7510: LGDB 14
7512: RLF 1, [10,3]
7515: LGB 5
7517: JNEB 13 (7532)
7521: LGDB 14
7523: RLF 1, [14,3]
7526: LGB 24
7530: JEB 14 (7544)
Halt[1000+zRLF];
ENDLOOP;
7532: LIW 2120
7535: ESC WRMP
7537: LI0
7540: SGB 0
7542: JB 375 (7537)
7544: LL10
7545: INC
7546: LL11
7547: JULB 333 (7502)
SetTest[zRLFS];
7551: LIB 151
7553: ESC WRMP
7555: LIB 151
7557: SGB 2
THROUGH [0..loopCount) DO
7561: LGB 4
7563: SLB 13
7565: LI0
7566: JB 55 (7643)
7570: REC
7571: SL10
fields.words[0] ← nine;
7572: LGB 24
7574: SGB 40
IF lpFields.stackFields[one] # zero
OR lpFields.stackFields[three] # nine THEN
7576: LGDB 14
7600: LG1
7601: SHIFTSB 6
7603: ADDSB 3
7605: RLFS
7606: LGB 5
7610: JNEB 17 (7627)
7612: LGDB 14
7614: LGB 13
7616: SHIFTSB 6
7620: ADDSB 3
7622: RLFS
7623: LGB 24
7625: JEB 14 (7641)
Halt[1000+zRLFS];
ENDLOOP;
7627: LIW 2121
7632: ESC WRMP
7634: LI0
7635: SGB 0
7637: JB 375 (7634)
7641: LL10
7642: INC
7643: LL11
7644: JULB 324 (7570)
SetTest[zRLIPF];
7646: LIB 152
7650: ESC WRMP
7652: LIB 152
7654: SGB 2
THROUGH [0..loopCount) DO
7656: LGB 4
7660: SLB 13
7662: LI0
7663: JB 44 (7727)
7665: REC
7666: SL10
locals.l7.words[0] ← fourHundred + nine;
7667: LGB 24
7671: LIHB 1
7673: ADD
7674: WLIP [7,0]
IF locals.l7.b # one OR locals.l7.d # nine THEN
7676: RLIPF [7,0], [4,3]
7701: LG1
7702: JNEB 11 (7713)
7704: RLIPF [7,0], [14,3]
7707: LGB 24
7711: JEB 14 (7725)
Halt[1000+zRLIPF];
ENDLOOP;
7713: LIW 2122
7716: ESC WRMP
7720: LI0
7721: SGB 0
7723: JB 375 (7720)
7725: LL10
7726: INC
7727: LL11
7730: JULB 335 (7665)
SetTest[zRLILPF];
7732: LIB 153
7734: ESC WRMP
7736: LIB 153
7740: SGB 2
THROUGH [0..loopCount) DO
7742: LGB 4
7744: SLB 13
7746: LI0
7747: JB 44 (10013)
7751: REC
7752: SL10
locals.l7.words[1] ← fourHundred + ten;
7753: LGB 73
7755: LIHB 1
7757: ADD
7760: WLIP [7,1]
IF locals.l8.f # one OR locals.l8.h # ten THEN
7762: RLILPF [10,1], [4,3]
7765: LG1
7766: JNEB 11 (7777)
7770: RLILPF [10,1], [14,3]
7773: LGB 73
7775: JEB 14 (10011)
Halt[1000+zRLILPF];
ENDLOOP;
7777: LIW 2123
10002: ESC WRMP
10004: LI0
10005: SGB 0
10007: JB 375 (10004)
10011: LL10
10012: INC
10013: LL11
10014: JULB 335 (7751)
SetTest[zW0F];
10016: LIB 154
10020: ESC WRMP
10022: LIB 154
10024: SGB 2
THROUGH [0..loopCount) DO
10026: LGB 4
10030: SLB 13
10032: LI0
10033: JB 52 (10105)
10035: REC
10036: SL10
pFields.a ← one;
10037: LG1
10040: LGB 17
10042: W0F [0,3]
pFields.c ← four;
10044: LGB 16
10046: LGB 17
10050: W0F [10,3]
IF pFields.a # one OR pFields.c # four THEN
10052: LGB 17
10054: R0F [0,3]
10056: LG1
10057: JNEB 12 (10071)
10061: LGB 17
10063: R0F [10,3]
10065: LGB 16
10067: JEB 14 (10103)
Halt[1000+zW0F];
ENDLOOP;
10071: LIW 2124
10074: ESC WRMP
10076: LI0
10077: SGB 0
10101: JB 375 (10076)
10103: LL10
10104: INC
10105: LL11
10106: JULB 327 (10035)
SetTest[zWF];
10110: LIB 155
10112: ESC WRMP
10114: LIB 155
10116: SGB 2
THROUGH [0..loopCount) DO
10120: LGB 4
10122: SLB 13
10124: LI0
10125: JB 56 (10203)
10127: REC
10130: SL10
pFields.e ← one;
10131: LG1
10132: LGB 17
10134: WF 1, [0,3]
pFields.f ← four;
10137: LGB 16
10141: LGB 17
10143: WF 1, [4,3]
IF pFields.e # one OR pFields.f # four THEN
10146: LGB 17
10150: RF 1, [0,3]
10153: LG1
10154: JNEB 13 (10167)
10156: LGB 17
10160: RF 1, [4,3]
10163: LGB 16
10165: JEB 14 (10201)
Halt[1000+zWF];
ENDLOOP;
10167: LIW 2125
10172: ESC WRMP
10174: LI0
10175: SGB 0
10177: JB 375 (10174)
10201: LL10
10202: INC
10203: LL11
10204: JULB 323 (10127)
SetTest[zPS0F];
10206: LIB 157
10210: ESC WRMP
10212: LIB 157
10214: SGB 2
THROUGH [0..loopCount) DO
10216: LGB 4
10220: SLB 13
10222: LI0
10223: JB 112 (10335)
10225: REC
10226: SL10
pFields↑ ← [fields[a: one, b: two, c: three, d: five]];
10227: LGB 17
10231: LG1
10232: PS0F [0,3]
10234: LGB 10
10236: PS0F [4,3]
10240: LGB 13
10242: PS0F [10,3]
10244: LGB 20
10246: WS0F [14,3]
IF pFields.a # one OR pFields.b # two OR pFields.c # three THEN
10250: LGB 17
10252: R0F [0,3]
10254: LG1
10255: JNEB 22 (10277)
10257: LGB 17
10261: R0F [4,3]
10263: LGB 10
10265: JNEB 12 (10277)
10267: LGB 17
10271: R0F [10,3]
10273: LGB 13
10275: JEB 14 (10311)
Halt[1000+zPS0F];
10277: LIW 2127
10302: ESC WRMP
10304: LI0
10305: SGB 0
10307: JB 375 (10304)
IF pFields.d # five THEN
10311: LGB 17
10313: R0F [14,3]
10315: LGB 20
10317: JEB 14 (10333)
Halt[1000+zWS0F];
ENDLOOP;
10321: LIW 2130
10324: ESC WRMP
10326: LI0
10327: SGB 0
10331: JB 375 (10326)
10333: LL10
10334: INC
10335: LL11
10336: JULB 267 (10225)
SetTest[zWL0F];
10340: LIB 161
10342: ESC WRMP
10344: LIB 161
10346: SGB 2
THROUGH [0..loopCount) DO
10350: LGB 4
10352: SLB 13
10354: LI0
10355: JB 52 (10427)
10357: REC
10360: SL10
lpFields.a ← one;
10361: LG1
10362: LGDB 14
10364: WL0F 3
lpFields.c ← four;
10366: LGB 16
10370: LGDB 14
10372: WL0F 203
IF lpFields.a # one OR lpFields.c # four THEN
10374: LGDB 14
10376: RL0F [0,3]
10400: LG1
10401: JNEB 12 (10413)
10403: LGDB 14
10405: RL0F [10,3]
10407: LGB 16
10411: JEB 14 (10425)
Halt[1000+zWL0F];
ENDLOOP;
10413: LIW 2131
10416: ESC WRMP
10420: LI0
10421: SGB 0
10423: JB 375 (10420)
10425: LL10
10426: INC
10427: LL11
10430: JULB 327 (10357)
SetTest[zWLF];
10432: LIB 162
10434: ESC WRMP
10436: LIB 162
10440: SGB 2
THROUGH [0..loopCount) DO
10442: LGB 4
10444: SLB 13
10446: LI0
10447: JB 60 (10527)
10451: REC
10452: SL10
lpFields.e ← two;
10453: LGB 10
10455: LGDB 14
10457: WLF 1, [0,3]
lpFields.h ← eight;
10462: LGB 61
10464: LGDB 14
10466: WLF 1, [14,3]
IF lpFields.e # two OR lpFields.h # eight THEN
10471: LGDB 14
10473: RLF 1, [0,3]
10476: LGB 10
10500: JNEB 13 (10513)
10502: LGDB 14
10504: RLF 1, [14,3]
10507: LGB 61
10511: JEB 14 (10525)
Halt[1000+zWLF];
ENDLOOP;
10513: LIW 2132
10516: ESC WRMP
10520: LI0
10521: SGB 0
10523: JB 375 (10520)
10525: LL10
10526: INC
10527: LL11
10530: JULB 321 (10451)
SetTest[zPSLF];
10532: LIB 163
10534: ESC WRMP
10536: LIB 163
10540: SGB 2
THROUGH [0..loopCount) DO
10542: LGB 4
10544: SLB 13
10546: LI0
10547: JB 105 (10654)
10551: REC
10552: SL10
lpFields↑ ← [fields[a: one, b: two, c: three, d: five]];
10553: LGDB 14
10555: LG1
10556: PSLF 0, [0,3]
10561: LGB 10
10563: PSLF 0, [4,3]
10566: LGB 13
10570: PSLF 0, [10,3]
10573: LGB 20
10575: PSLF 0, [14,3]
10600: DIS2
IF lpFields.a # one OR lpFields.b # two OR lpFields.c # three
OR lpFields.d # five THEN
10601: LGDB 14
10603: RL0F [0,3]
10605: LG1
10606: JNEB 32 (10640)
10610: LGDB 14
10612: RL0F [4,3]
10614: LGB 10
10616: JNEB 22 (10640)
10620: LGDB 14
10622: RL0F [10,3]
10624: LGB 13
10626: JNEB 12 (10640)
10630: LGDB 14
10632: RL0F [14,3]
10634: LGB 20
10636: JEB 14 (10652)
Halt[1000+zPSLF];
ENDLOOP;
10640: LIW 2133
10643: ESC WRMP
10645: LI0
10646: SGB 0
10650: JB 375 (10645)
10652: LL10
10653: INC
10654: LL11
10655: JULB 274 (10551)
SetTest[zWLFS];
10657: LIB 164
10661: ESC WRMP
10663: LIB 164
10665: SGB 2
THROUGH [0..loopCount) DO
10667: LGB 4
10671: SLB 13
10673: LI0
10674: JB 54 (10750)
10676: REC
10677: SL10
lpFields.stackFields[1] ← zero;
10700: LGB 5
10702: LGDB 14
10704: WL0F 103
lpFields.stackFields[3] ← nine;
10706: LGB 24
10710: LGDB 14
10712: WL0F 303
IF lpFields.stackFields[1] # zero OR lpFields.stackFields[3] # nine THEN
10714: LGDB 14
10716: RL0F [4,3]
10720: LGB 5
10722: JNEB 12 (10734)
10724: LGDB 14
10726: RL0F [14,3]
10730: LGB 24
10732: JEB 14 (10746)
Halt[1000+zWLFS];
ENDLOOP;
10734: LIW 2134
10737: ESC WRMP
10741: LI0
10742: SGB 0
10744: JB 375 (10741)
10746: LL10
10747: INC
10750: LL11
10751: JULB 325 (10676)
SetTest[zRET];
10753: LIB 357
10755: ESC WRMP
10757: LIB 357
10761: SGB 2
RETURN};
10763: RET
Instructions: 1222, Bytes: 2144
ExternalTests: PROC = {
Entry point: 21, Frame size index: 0
SetTest[zEFCB];
10765: LIB 354
10767: ESC WRMP
10771: LIB 354
10773: SGB 2
EmulatorTest.InitHelper[];
10775: EFC0
SetTest[zRKIB];
10776: LIB 170
11000: ESC WRMP
11002: LIB 170
11004: SGB 2
THROUGH [0..loopCount) DO
11006: LGB 4
11010: SL1
11011: LI0
11012: JB 30 (11042)
11014: REC
11015: SL0
a ← EmulatorTest.varOne;
11016: RKIB 3
11020: SGB 3
11022: REC
IF a # one THEN
11023: LG1
11024: JEB 14 (11040)
Halt[1000+zRKIB];
ENDLOOP;
11026: LIW 2140
11031: ESC WRMP
11033: LI0
11034: SGB 0
11036: JB 375 (11033)
11040: LL0
11041: INC
11042: LL1
11043: JULB 351 (11014)
SetTest[zRKDIB];
11045: LIB 171
11047: ESC WRMP
11051: LIB 171
11053: SGB 2
THROUGH [0..loopCount) DO
11055: LGB 4
11057: SL1
11060: LI0
11061: JB 32 (11113)
11063: REC
11064: SL0
aD ← EmulatorTest.varOneTwo;
11065: RKDIB 2
11067: SGDB 6
11071: REC2
IF aD # varOneTwo THEN
11072: RKDIB 2
11074: UDCMP
11075: JZB 14 (11111)
Halt[1000+zRKDIB];
ENDLOOP;
11077: LIW 2141
11102: ESC WRMP
11104: LI0
11105: SGB 0
11107: JB 375 (11104)
11111: LL0
11112: INC
11113: LL1
11114: JULB 347 (11063)
SetTest[zEFCB];
11116: LIB 354
11120: ESC WRMP
11122: LIB 354
11124: SGB 2
proc ← EmulatorTest.Proc[];
11126: EFC1
11127: SGDB 77
SetTest[zLLKB];
11131: LIB 167
11133: ESC WRMP
11135: LIB 167
11137: SGB 2
THROUGH [0..loopCount) DO
11141: LGB 4
11143: SL1
11144: LI0
11145: JB 27 (11174)
11147: REC
11150: SL0
IF EmulatorTest.InitHelper # proc THEN
11151: LLKB 0
11153: LGDB 77
11155: DCMP
11156: JZB 14 (11172)
Halt[1000+zLLKB];
ENDLOOP;
11160: LIW 2137
11163: ESC WRMP
11165: LI0
11166: SGB 0
11170: JB 375 (11165)
11172: LL0
11173: INC
11174: LL1
11175: JULB 352 (11147)
SetTest[zRET];
11177: LIB 357
11201: ESC WRMP
11203: LIB 357
11205: SGB 2
RETURN};
-- Start Tests
11207: RET
Instructions: 88, Bytes: 148
Total instructions: 2657, Bytes: 4718