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