VASM ROM ASSEMBLY REV. 6/81A OPTIONS: L C S * HP41C MAINFRAME MICROCODE ADDRESSES @0-1777 * 4 FILE CN0B 5 ENTRY ALPDEF 6 ENTRY END2 7 ENTRY END3 8 ENTRY CLCTMG 9 ENTRY QUTCAT 10 ENTRY STMSGF 11 ENTRY XAVIEW 12 ENTRY XVIEW 13 ENTRY ADRFCH 14 ENTRY TONSTF 15 ENTRY BCDBIN 16 ENTRY BIGBRC 17 ENTRY INTINT 18 ENTRY COLDST 19 ENTRY DROWSY 20 ENTRY DRSY05 21 ENTRY DRSY25 22 ENTRY DRSY51 23 ENTRY ERRNE 24 ENTRY ERROF 25 ENTRY GOTINT 26 ENTRY GTAINC 27 ENTRY GTAI40 28 ENTRY INCGT2 29 ENTRY MSGDLY 30 ENTRY NFRC 31 ENTRY NFRENT 32 ENTRY NFRFST 33 ENTRY NFRKB 34 ENTRY NFRKB1 35 ENTRY NFRNC 36 ENTRY NFRNIO 37 ENTRY NFRPR 38 ENTRY NFRPU 39 ENTRY NFRSIG 40 ENTRY NFRX 41 ENTRY NFRXY 42 ENTRY ROW10 43 ENTRY RUNNK 44 ENTRY WKUP70 45 ENTRY X<>ROW 46 ENTRY XCUTB1 47 ENTRY XCUTE 48 ENTRY XCUTEB 49 ENTRY XROW1 * 51 LEGAL 52 0 1 GOLNC LSWKUP 52 1 2 53 2 1 GOLONG DSWKUP 53 3 2 ************************************************** * THE FOLLOWING ROUTINE TAKES A BINARY REGISTER * NUMBER FROM STATUS AND RETURNS THAT REGISTER * IN C, ITS ADDRESS IN N, AND X IN M. IT SENDS * ILLEGAL ADDRESSES TO ERROR "NONEXISTENT." * IT ALSO HANDLES INDIRECT ADDRESS. CYCLE TIMES * AVERAGE ABOUT 30 FOR DIRECT AND 60 FOR INDIRECT * USES: A,B,C,M,N,ACTIVE POINTER, S9,S8,S7, DADD, + 2 SUB LEVELS * MAY EXIT TO ERRNE * IN: ADDR IN S7:0 (MAY BE INDIRECT) * NO PERIPHERAL ENABLED * OUT: C = C(EFFECTIVE ADDR) * N = EFFECTIVE ADDR * DADD = EFFECTIVE ADDR * M = X REGISTER CONTENTS * S7 = 0 ************************************************** 71 4 ADRFCH 116 C=0 GETX 72 5 1160 DADD=C 73 6 370 C=REGN 3 74 7 530 M=C X IS STORED IN M 75 10 1630 C=ST GET ADDRESS FROM STATUS 76 11 126 C=0 XS CLEAR 9 FROM XS 77 12 1204 S7= 0 KILL INDIRECT FLAG 78 13 1730 CST EX PUT ORIGINAL STATUS BACK 79 14 514 ?S6=1 STACK RCL? 80 15 133 GONC OVRSTK ( 30) NO 81 16 214 ?S5=1 82 17 113 GONC OVRSTK ( 30) NO 83 20 114 ?S4=1 84 21 73 GONC OVRSTK ( 30) NO 85 22 1434 PT= 1 SET TO CLEAR HIGH BITS 86 23 102 C=0 PT CLEAR HIGH BITS 87 24 1160 DADD=C PUT OUT ADDRESS 88 25 160 N=C SAVE ADDRESS IN N 89 26 70 C=DATA GET REGISTER 90 27 113 GOTO FCHRTN ( 40) DONE 91 30 OVRSTK 256 AC EX SAVE RELATIVE ADDRESS 92 31 1570 C=REGN 13 SET STATUS REGISTER 93 32 74 RCR 3 MOVE REG0 TO POSITION 94 33 1006 C=C+A X COMPUTE ADR OF REG 95 34 160 N=C SAVE ADR FOR CALNG ROUTN 96 35 1 GOSUB CHKADR CHECK ADR, VAL RTNS IN B 96 36 0 97 37 316 C=B BRING RCL VALUE TO C 98 40 FCHRTN 1214 ?S7=1 INDIRECT 99 41 1640 RTN NC DONE IF NOT INDIRECT 100 42 1 GOSUB BCDBIN DO BCD BIN 100 43 0 101 44 1204 S7= 0 CLEAR INDIRECT FLAG 102 45 1633 GOTO OVRSTK ( 30) NEW ADR START OVER 103 FILLTO @45 ****************************************************** * THIS ROUTINE IS A SPECIAL "ROW" FOR X<>NN ****************************************************** 107 46 X<>ROW 1166 C=C-1 XS RESTORE BYTE 1 108 47 1166 C=C-1 XS 109 LEGAL 110 50 1 GOSUB INCGT2 110 51 0 111 52 256 AC EX 112 53 1530 ST=C 113 54 1374 RCR 13 114 55 130 G=C 115 56 363 GOTO ADRGSB ( 114) * 117 57 XROW0 1 GOLONG ROW0 117 60 2 118 61 XROW10 1 GOLONG ROW10 118 62 2 119 63 XROW11 1 GOLONG ROW11 119 64 2 120 65 XROW12 1 GOLONG ROW12 120 66 2 121 67 XROW13 1 GOLONG XGTO 121 70 2 122 71 XROW14 1 GOLONG XXEQ 122 72 2 ******************************************************** * ONE-BYTE STORE AND RECALL FUNCTIONS ENTER HERE TO * BE TRANSMOGRAPHIED INTO TWO-BYTE FUNCTIONS ******************************************************** 127 XROW2 128 XROW3 129 73 1142 C=C-1 PT HIGH DIGIT -2 130 74 1142 C=C-1 PT 131 75 1706 C SR X CREATE BYTE TWO 132 76 1712 C SR WPT CREATE BYTE 1 133 77 1120 LC 9 134 100 34 PT= 3 135 101 43 GOTO REGADR ( 105) ******************************************************** * TWO-BYTE RCLS, STOS, DSP FORMAT ETC COMPRISE ROW 9 * XROW9 GETS BYTE TWO, FETCHES X (IN M), FETCHES * REGISTER NN (IN B), AND LEAVES THE ADDRESS OF NN * IN N FOR ALL DATA RELATED FUNCTIONS (0-11). IT THEN * DOES A SIXTEEN-WAY BRANCH TO SORT OUT THE ROW. ******************************************************** 143 102 XROW9 1 GOSUB INCGT2 GET BYTE TWO 143 103 0 144 104 256 AC EX BRING BACK TO C 145 105 REGADR 1530 ST=C SAVE BYTE 2 146 106 1374 RCR 13 MOVE TO G POSITION 147 107 130 G=C SAVE IN G 148 110 742 C=C+C PT SEP OUT 0-7 149 111 33 GONC ADRGSB ( 114) DO RCL ETC 150 112 742 C=C+C PT SEP OUT DSP & TONE 151 113 467 GOC TONETC ( 161) 152 114 ADRGSB 1 GOSUB ADRFCH GET X,RNN, AND ADR 152 115 0 153 116 356 BC EX SAVE VALUE IN RNN 154 117 BIGBRC 1534 PT= 12 SET FOR G LOAD 155 120 230 C=G GET BYTE ONE BACK 156 121 34 PT= 3 157 122 1 GOLONG XCUTB1 DO 256-WAY BRANCH 158 123 2 ******************************************************* * THIS SECTION SORTS OUT INDIRECT TONE, FIX, ENG, AND * SCI FROM DIRECT. IF INDIRECT, GOES THROUGH ADDRESS * FETCH OTHERWISE GOES IMMEDIATELY TO 256-WAY BRANCH. ******************************************************* 163 124 TONSTF 1214 ?S7=1 INDIRECT 164 125 1640 RTN NC NO DO BRANCH 165 126 1204 S7= 0 CLEAR INDIRECT BIT 166 127 1 GOSUB ADRFCH GET REG 166 130 0 167 131 1 GOSUB BCDBIN CONVERT TO BINARY 167 132 0 168 133 1530 ST=C SAVE BINARY STATUS 169 134 414 ?S8=1 MORE THAN ONE DIGIT 170 135 1640 RTN NC 256-WAY BRANCH 171 136 1 GOLONG ERRDE YES THEN DATA ERROR 171 137 2 172 FILLTO @137 173 140 ROWTBL 1173 GOTO XROW0 ( 57) ROWTBL MUST BE AT @140 174 141 233 GOTO XROW1 ( 164) OTHER LOGIC MAKES USE OF 175 142 1313 GOTO XROW2 ( 73) THE FACT THAT ROWTBL IS IN 176 143 1303 GOTO XROW3 ( 73) THE FIRST 256 WORDS OF CHIP 0 177 144 423 GOTO XROW4 ( 206) AND ON AN EVEN BOUNDARY OF 178 145 343 GOTO XROW5 ( 201) 16 WORDS. 179 146 333 GOTO XROW6 ( 201) 180 147 513 GOTO XCUTEB ( 220) ROW 7 181 150 503 GOTO XCUTEB ( 220) ROW 8 182 151 1313 GOTO XROW9 ( 102) 183 152 1073 GOTO XROW10 ( 61) 184 153 1103 GOTO XROW11 ( 63) 185 154 1113 GOTO XROW12 ( 65) 186 155 1123 GOTO XROW13 ( 67) 187 156 1133 GOTO XROW14 ( 71) 188 157 1 GOLONG TEXT ROW 15 188 160 2 189 161 TONETC 1 GOSUB TONSTF 189 162 0 190 163 1343 GOTO BIGBRC ( 117) * 192 164 XROW1 416 A=C SAVE FC IN A 193 165 1034 PT= 2 194 166 1520 LC 13 SPLIT OFF DIGIT ENTRY 195 167 1426 ? A55 981 1314 243 GONC ERRNE (1340) * * THE ENTRY POINT "ALLOK" WAS ADDED BY STEVE CHOU ON 02-11-81 * FOR THE FUNCTION "STOFLAG" IN THE ADVANCED PROGRAMMING ROM * 986 ENTRY ALLOK 987 1315 ALLOK 156 AB EX NO ERRORS AT THIS POINT 988 1316 460 LDI COUNT DOWN BY 8S 989 1317 10 CON @10 990 1320 356 BC EX 991 1321 116 C=0 SET C=1 AND ADDRESS CHIP 0 992 1322 1160 DADD=C 993 1323 1056 C=C+1 994 1324 SHF8 1074 RCR 2 SHIFT ONE RIGHT 8 AT A TIME 995 1325 606 A=A-B X COUNT N DOWN 996 1326 1763 GONC SHF8 (1324) 997 1327 23 GOTO PSTDBL (1331) 998 1330 DBL 756 C=C+C SHIFT BACK BY CARRY AMOUNT 999 1331 PSTDBL 546 A=A+1 X COUNT BACK CARRY 1000 1332 1763 GONC DBL (1330) 1001 1333 356 CB EX SAVE MASK 1002 1334 1670 C=REGN 14 GET STATUS SET 1003 1335 256 AC EX SAVE IN A 1004 1336 1 GOLONG BIGBRC DO 256-WAY BRANCH 1004 1337 2 1005 1340 ERRNE 1 GOSUB ERROR 1005 1341 0 1006 1342 0 XDEF MSGNE "NONEXISTENT" ************************************************* * THIS ROUTINE TAKES A STANDARD FLOATING POINT * NUMBER, STRIPS OFF AN ABSOLUTE INTEGER LESS THAN * 1000, AND CONVERTS THAT INTEGER TO BINARY. * IF THE FLOATING POINT INPUT IS A FRACTION ZERO * IS RETURNED, IF LARGER THAN 999 A NONEXISTENT * ERROR IS GENERATED. INPUT IS IN C, OUTPUT IS * IN C.X, CHARACTER DATA ALSO GENERATES ERROR. * USES: A.X, C, S8, AND 1 ADDITIONAL SUBROUTINE LEVEL * IN: C=FLOATING POINT NUMBER * NO PERIPHERAL ENABLED * OUT: C.X = BINARY NUMBER * CHIP 0 ENABLED * MAY EXIT TO ERRAD OR ERRNE ************************************************* 1022 1343 BCDBIN 1176 C=C-1 S CHECK FOR CHARACTER 1023 1344 1176 C=C-1 S 1024 1345 1 GOLC ERRAD 1024 1346 3 1025 1347 406 A=C X MOVE EXPONENT 1026 1350 136 C=0 S 1027 1351 404 S8= 0 CLEAR ZERO TO 9 FLAG 1028 1352 106 C=0 X 1029 1353 1160 DADD=C 1030 1354 1526 ? A#0 XS NEGATIVE EXPONENT? 1031 1355 1540 RTN C YES WE ARE DONE 1032 1356 1574 RCR 12 MOVE DIGIT 1 TO 0 1033 1357 646 A=A-1 X DECREMENT EXPONENT 1034 1360 107 GOC GOTINT (1370) DONE IF X=0 1035 1361 410 S8= 1 SET FLAGS FOR 10 OR LARGER 1036 1362 1374 RCR 13 ROTATE NEXT DIGIT IN 1037 1363 646 A=A-1 X EXP=1? 1038 1364 47 GOC GOTINT (1370) YES 1039 1365 1374 RCR 13 SHIFT AGAIN 1040 1366 646 A=A-1 X X=2 1041 1367 1513 GONC ERRNE (1340) VALUE TOO LARGE FOR ADR ******************************************************* * THE FOLLOWING ROUTINE TAKES A BCD INTEGER IN C.X * (3 DIGITS) AND CONVERTS IT TO BINARY IN C.X * * IN: C.X= BCD NUMBER, C[4:3]= 00 * ASSUME: HEXMODE * OUT: C.X= BINARY NUMBER. HEXMODE * USES: A.X, C, +1 SUB LEVEL (NO ST, NO PT, NO DADD) ******************************************************* 1051 1370 GOTINT 1074 RCR 2 GET FIRST DIGIT 1052 1371 1 GOSUB INTINT 1052 1372 0 1053 1373 INTINT 746 C=C+C X MULTIPLY BY 10 1054 1374 406 A=C X 1055 1375 746 C=C+C X 1056 1376 746 C=C+C X 1057 1377 506 A=A+C X 1058 1400 106 C=0 X 1059 1401 1374 RCR 13 SHIFT IN NEXT DIGIT 1060 1402 1006 C=C+A X COMBINE 10S 1061 1403 1740 RTN 1062 EJECT * * GTAINC - GET ALPHA LABEL AND INCREMENT PROGRAM * COUNTER *- GET AN ALPHA LABEL FROM VARIOUS LOCATIONS DEPENDING *- ON THE MODE OF OPERATION, AND FORMAT THE ALPHA *- LABEL APPROPRIATELY *- IN: S9=1 IMPLIES AN ADDRESS IS RETURNED IN M *- A[3:2]= FUNCTION CODE *- CHIP 0 SELECTED *- OUT: M[13:0]= ALPHA LABEL (RIGHT-JUSTIFIED) *- OR ALPHA LABEL ADDRESS * PC SET AT LAST BYTE OF ALPHA LABEL *- USES: A[13:0], B[13:0], C[13:0], M[13:0] *- USES: 1 SUBROUTINE LEVEL 1077 1078 1079 1080 1404 GTAINC 34 PT= 3 - 1081 1405 216 B=A COPY FC FROM A[3:2] 1082 1406 316 C=B TO B[3:2] AND C[3:2] 1083 1407 1314 ?S13=1 RUNNING? 1084 1410 107 GOC GTAI10 (1420) YES 1085 1411 114 ?S4=1 SSTFLAG? 1086 1412 67 GOC GTAI10 (1420) YES 1087 1413 1170 C=REGN 9 M_ALPHA STRING (KYBRD) 1088 1414 1114 ?S9=1 ADDR IN M? 1089 1415 27 GOC *+2 (1417) YES 1090 1416 530 M=C - 1091 1417 1740 RTN - 1092 1420 GTAI10 314 ?S10=1 ROM? 1093 1421 603 GONC GTAI40 (1501) NOPE 1094 1422 1470 C=REGN 12 B[6:3]_PGMCTR (ROM) 1095 1423 674 RCR 11 - 1096 1424 1072 C=C+1 M - 1097 1425 356 BC EX C[3:2]_F.C. 1098 1426 742 C=C+C PT ALBL? 1099 1427 337 GOC GTAI22 (1462) YES 1100 1430 316 C=B XEQ/GTO F.C. 1101 1431 1460 CXISA STRING OPERAND ADDR? 1102 1432 GTAI26 216 B=A SAVE F.C. & K.C. 1103 1433 432 A=C M A[6:3]_PGMCTR 1104 1434 1474 RCR 1 A[13]_#CHARS 1105 1435 1176 C=C-1 S - 1106 1436 436 A=C S - 1107 1437 116 C=0 - 1108 1440 1434 PT= 1 - 1109 1441 GTAI30 256 AC EX GET A CHAR 1110 1442 1072 C=C+1 M - 1111 1443 1460 CXISA - 1112 1444 256 AC EX - 1113 1445 252 AC EX WPT - 1114 1446 1074 RCR 2 POSITION CHAR 1115 1447 676 A=A-1 S CHARS FINISHED? 1116 1450 1713 GONC GTAI30 (1441) NOPE 1117 1451 23 GOTO *+2 (1453) - 1118 1452 1074 RCR 2 - 1119 1453 1352 ? C#0 WPT - 1120 1454 1763 GONC *-2 (1452) - 1121 1455 530 M=C M_ALPHA STRING 1122 1456 256 AC EX A[3:0]_F.C. & K.C. 1123 1457 156 AB EX - 1124 1460 34 PT= 3 - 1125 1461 123 GOTO GTAI20 (1473) B[3:0]_PGMCTR 1126 1462 GTAI22 316 C=B POSITION PGMCTR 1127 1463 1072 C=C+1 M - 1128 1464 1460 CXISA - 1129 1465 1474 RCR 1 - 1130 1466 106 C=0 X - 1131 1467 374 RCR 10 - 1132 1470 156 AB EX - 1133 1471 1032 C=A+C M - 1134 1472 1072 C=C+1 M - 1135 1473 GTAI20 74 RCR 3 PLACE PGMCTR 1136 1474 352 BC EX WPT - 1137 1475 1470 C=REGN 12 - 1138 1476 312 C=B WPT - 1139 1477 1450 REGN=C 12 - 1140 1500 1740 RTN - 1141 1142 1501 GTAI40 1104 S9= 0 - 1143 1502 742 C=C+C PT ALBL? 1144 1503 63 GONC GTAI50 (1511) NOPE 1145 1504 1 GSBLNG GETPCA INCREMENT 1145 1505 0 1146 1506 1 GSBLNG INCADA - 1146 1507 0 1147 1510 33 GOTO GTAI55 (1513) - 1148 1511 GTAI50 1 GSBLNG GETPCA A[13]_#CHARS 1148 1512 0 1149 1513 GTAI55 1 GSBLNG NXBYTA - 1149 1514 0 1150 1515 1474 RCR 1 - 1151 1516 436 A=C S - 1152 1517 116 C=0 - 1153 1520 GTAI60 676 A=A-1 S CHARS FINISHED? 1154 1521 117 GOC GTAI70 (1532) YES 1155 1522 530 M=C - 1156 1523 1 GSBLNG NXBYTA - 1156 1524 0 1157 1525 1730 CST EX SHIFT CHAR IN 1158 1526 630 C=M - 1159 1527 1730 CST EX - 1160 1530 1074 RCR 2 - 1161 1531 1673 GOTO GTAI60 (1520) - 1162 1532 GTAI70 1 GOSUB RTJLBL RIGHT-JUSTIFY 1162 1533 0 1163 1534 530 M=C SAVE ALPHA STRING IN M 1164 1535 34 PT= 3 - 1165 1536 1 GSBLNG PUTPC PLACE PGMCTR 1165 1537 0 1166 1540 156 AB EX A[3:0]_F.C. & K.C. 1167 1541 1670 C=REGN 14 RESTORE SS0 1168 1542 1530 ST=C 1169 1543 1740 RTN - * ****************************************************** * VIEW ROUTINE ****************************************************** * 1175 1544 XAVIEW 1545 CON @1545 1176 1545 674 CON @674 GOSUB PRT11 1177 1546 1214 ?S7=1 ALPHAMODE? 1178 1547 33 GONC AVW10 (1552) NO 1179 1550 1314 ?S13=1 RUNNING? 1180 1551 1640 RTN NC NO - KEYBOARD, ALPHAMODE 1181 DEFAULTDISPLAY IS THE SAME 1182 AS AVIEW - DON'T SET MSGFLG 1183 AVW10 1184 1552 404 S8= 0 SCROLL & NO PROMPT 1185 1553 1110 S9= 1 KEYBOARD ALREADY BEEN RESET 1186 1554 1 GOSUB ARGOUT 1186 1555 0 1187 1556 63 GOTO XVIEWA (1564) * 1189 1557 XVIEW 1555 CON @1555 GOSUB PRT10 1190 1560 674 CON @674 1191 1561 316 C=B 1192 ENTRY PR10RT FOR THE PRINTER 1193 PR10RT NOTE THE REG TO BE * VIEWED IS EXPECTED IN C WHEN THE PRT10 LOGIC RETURNS HERE * (IT WAS IN B WHEN WE WENT OFF TO PRT10) 1196 1562 1 GOSUB DSPCRG 1196 1563 0 1197 1564 XVIEWA 1 GOSUB STMSGF SET MESSAGE FLAG 1197 1565 0 1198 1566 1614 ?S0=1 DOES A PRINTER EXIST? 1199 1567 57 GOC XVW10 (1574) YES 1200 1570 474 RCR 8 NO. CK PRINTER ENABLE FLAG 1201 1571 1530 ST=C 1202 1572 1014 ?S2=1 DID THE USER SET IT? 1203 1573 547 GOC STOPS (1647) YES - STOP 1204 XVW10 1205 1574 MSGDLY 1 GOSUB BLINK 1205 1575 0 1206 1576 STMSGF 106 C=0 X * GOSUB LDSST0 MIGHT BE USED HERE IN PLACE OF THE 4 INST SEQ * C=0 X, DADD=C, C=REGN 14, ST=C. AN ANALYSIS OF WHO CALLS * STMSGF AND MSGDLY MUST BE DONE TO SEE IF THEY CAN AFFORD * ANOTHER SUBROUTINE LEVEL 1211 1577 1160 DADD=C 1212 1600 1670 C=REGN 14 1213 1601 1530 ST=C 1214 1602 210 S5= 1 SET MSGFLAG 1215 1603 323 GOTO RSTMS2 (1635) 1216 1217 1218 * * RSTSEQ - RESET STATUS BITS AT END OF KEY SEQUENCE * CLEARS MSGFLG, DATAENTRY, PKSEQ, CATALOGFLAG, SHIFTSET, PSEFLAG * ALSO CLEARS RUNNING FLAG (S13) * CHIP 0 MUST BE ENABLED ON ENTRY * ON EXIT, SS0 IS UP AND C CONTAINS A COPY OF THE STATUS REGISTER * USES ONLY THE C REGISTER AND S0-S7 * 1227 ENTRY RSTSEQ 1228 ENTRY RSTSQ 1229 1604 RSTSEQ 1304 S13= 0 CLEAR RUNNING 1230 1605 RSTSQ 1670 C=REGN 14 1231 1606 1074 RCR 2 1232 1607 1530 ST=C LOAD SS1 1233 1610 1404 S1= 0 CLEAR PKSEQ 1234 1611 1630 C=ST 1235 1612 1574 RCR 12 1236 1613 1530 ST=C LOAD SS0 1237 1614 1404 S1= 0 CLEAR PAUSING 1238 1615 53 GOTO RSTMSC (1622) * THESE COMMENTS ACCURATE RSW 6-13-80 * * * RSTMSC - RESET MISCELLANEOUS STATUS BITS * RESETS CATALOGFLAG, SHIFT, DATAENTRY, AND MSGFLAG * ON ENTRY, REG 14 IN C EXCEPT SS0 IN ST, & CHIP 0 ENABLED. * ON EXIT, STATUS SETS HAVE BEEN STORED BACK TO CHIP 0, CHIP 0 IS ENABLED, * SS0 IS UP (AND C HAS A COPY OF THE STATUS SETS). * * RSTMS1 - SAME AS RSTMSC EXCEPT SETS UP C AND ST ON ENTRY * DATOFF - EXACTLY THE SAME AS RSTMS1 * RSTMS0 - SAME AS RSTMS1, EXCEPT CALLS ENCP00 FIRST, THEREBY * USING AN ADDITIONAL SUBROUTINE LEVEL * * USES: C, S0-S7, (NO PT, +0 SUB LEVELS[EXCEPT RSTMS0]) * 1255 ENTRY RSTMS0 1256 ENTRY DATOFF 1257 ENTRY RSTMS1 1258 ENTRY RSTMSC 1259 1616 RSTMS0 1 GOSUB ENCP00 1259 1617 0 1260 DATOFF 1261 1620 RSTMS1 1670 C=REGN 14 1262 1621 1530 ST=C 1263 1622 RSTMSC 574 RCR 6 1264 1623 1730 CST EX PUT UP SS3 1265 1624 1404 S1= 0 CLEAR CATALOGFLAG 1266 1625 1730 CST EX 1267 1626 374 RCR 10 1268 1627 1730 CST EX PUT UP SS1 1269 1630 1604 S0= 0 CLEAR SHIFT 1270 1631 1004 S2= 0 CLEAR DATAENTRY 1271 1632 1730 CST EX 1272 1633 1574 RCR 12 1273 1634 204 S5= 0 CLEAR MSGFLAG 1274 1635 RSTMS2 1630 C=ST 1275 1636 1650 REGN=C 14 1276 1637 1740 RTN 1277 1278 1279 1280 1281 1282 ENTRY XPRMPT * * PROMPT - THIS FUNCTION COMBINES AVIEW AND R/S * 1286 1640 XPRMPT 1605 CON @1605 GOSUB PRT7 1287 1641 674 CON @674 1288 1642 1 GOSUB RSTMS0 CLEAR MSGFLG (IN CASE WE'RE 1288 1643 0 1289 IN ALPHAMODE) & LEAVE 1290 SS0 UP 1291 1644 404 S8= 0 SET UP FOR ARGOUT 1292 1645 1214 ?S7=1 ALPHAMODE? 1293 1646 673 GONC PATCH8 (1735) NO. 1294 P8RTN 1295 ENTRY STOPS ERROR CALLS STOPS 1296 1647 STOPS 1670 C=REGN 14 RETRIEVE SS0 1297 1650 1530 ST=C 1298 ENTRY STOPSB 1299 STOPSB STOP SUBROUTINE 1300 STOP A RUNNING OR PAUSING 1301 USER PROGRAM 1302 ON ENTRY, SS0 IS UP 1303 USES 1 SUBROUTINE LEVEL 1304 AND C. LEAVES CHIP 0 1305 SELECTED. 1306 1651 1404 S1= 0 CLEAR PAUSEFLAG 1307 1652 1 GOSUB STOST0 1307 1653 0 1308 ENTRY PSESTP 1309 PSESTP ENTER FROM PAUSE FCN 1310 1654 1304 S13= 0 CLEAR RUNNING FLAG 1311 1655 1740 RTN * * * 1315 1656 ALPDEF 660 C=STK GET RIGHT DEF 1316 1657 1032 C=C+A M 1317 1660 1460 CXISA GET LOW 10 BITS 1318 1661 1346 ? C#0 X IF ZERO DONE CAT 1319 1662 433 GONC QUTCAT (1725) 1320 1663 34 PT= 3 1321 1664 120 LC 1 BUILD ADR IN ROM 4 1322 1665 674 RCR 11 MOVE TO MANTISSA 1323 1666 END2 256 AC EX SAVE IN A 1324 1667 1 GOSUB CLLCDE ENABLE AND CLEAR LCD 1324 1670 0 1325 1671 256 AC EX 1326 1672 1 GOSUB PROMF2 1326 1673 0 1327 1674 1 GOSUB LEFTJ LEFT-JUSTIFY STRING 1327 1675 0 1328 1676 END3 1 GOSUB ENCP00 TURN OFF LCD 1328 1677 0 1329 1700 1 GOSUB BLINK 1329 1701 0 1330 1702 1535 CON @1535 SEND DISPLAY TO PRINTER 1331 1703 674 CON @674 GOSUB PRT12 1332 1704 1 GOSUB RSTANN 1332 1705 0 1333 1706 114 ?S4=1 SINGLE STEP? 1334 1707 1 GOLNC CNTLOP IF RUNNING CAT CONTINUE 1334 1710 2 1335 1711 CLCTMG 1670 C=REGN 14 SET STATUS FOR RTN TO KBD 1336 1712 1530 ST=C 1337 1713 210 S5= 1 1338 1714 1630 C=ST 1339 1715 574 RCR 6 1340 1716 1530 ST=C 1341 1717 1410 S1= 1 1342 1720 KBD 1630 C=ST 1343 1721 474 RCR 8 1344 1722 1650 REGN=C 14 1345 1723 1 GOLONG NFRKB 1345 1724 2 1346 1725 QUTCAT 1670 C=REGN 14 CATALOG FINISH 1347 1726 1530 ST=C 1348 1727 204 S5= 0 1349 1730 1630 C=ST 1350 1731 574 RCR 6 1351 1732 1530 ST=C 1352 1733 1404 S1= 0 1353 1734 1643 GOTO KBD (1720) * * PATCH8 - POST-RELEASE FIX TO AVOID PUTTING THE ALPHAREG TO THE LCD * AND SETTING MSGFLAG WHEN PROMPT IS EXECUTED IN ALPHAMODE. THIS IS * DESIRABLE BECAUSE THE ALPHAREG IS THE DEFAULTDISPLAY IN ALPHAMODE. * 1359 1735 PATCH8 1 GOSUB ARGOUT PUT ALPHAREG TO LCD 1359 1736 0 1360 1737 1 GOSUB STMSGF SET MSGFLG 1360 1740 0 1361 1741 1063 GOTO P8RTN (1647) * * PATCH4 - THIS POST-RELEASE PATCH SPEEDS UP THE EXECUTION OF THE * RUN PORTION OF R/S * 1366 ENTRY PACH4 1367 1742 PACH4 460 LDI SET UP 100MS WAIT 1368 1743 247 CON 167 1369 1744 PTCH4A 1710 RST KB IS THE KEY STILL DOWN? 1370 1745 1714 CHK KB 1371 1746 1 GOLNC XRS45 NO, GO RUN! 1371 1747 2 1372 1750 1146 C=C-1 X TIME OUT OVER? 1373 1751 1733 GONC PTCH4A (1744) NO, KEEP CHECKING THE KEY 1374 1752 1 GOLONG LINNUM DISPLAY THE STARTING STEP 1374 1753 2 * * PACH10 - POST-RELEASE PATCH TO FIX A BUG IN "SF IND NN" * 1378 ENTRY PACH10 1379 1754 PACH10 1 GOSUB BCDBIN 1379 1755 0 1380 1756 1366 ? C#0 XS ADDR>255? 1381 1757 1 GOLC ERRNE YES 1381 1760 3 1382 1761 1034 PT= 2 RESTORE 1ST BYTE 1383 1762 230 C=G OF FC TO C[3:2] 1384 1763 1 GOLONG P10RTN 1384 1764 2 * * PACH11 - POST-RELEASE FIX TO DISPLAY DRIVER SYNCHRONIZATION * PROBLEM, 3/26/79. THE TWO DISPLAY DRIVER CHIPS RE-SYNCHRONIZE * EACH TIME THE CPU COMES WIDE AWAKE, NO MATTER WHETHER FROM LIGHT * SLEEP OR DEEP SLEEP. EACH TIME THE C REGISTER CONTAINS BOTH ONES * AND ZEROES, THE DISPLAY DRIVERS SORT THEMSELVES OUT. THIS PROCESS * CONTINUES UNTIL A DISPLAY READ INSTRUCTION IS EXECUTED. HOWEVER, * IF THE DATA LINE FLOATS WHILE THE DISPLAY DRIVERS ARE TRYING TO * SORT THEMSELVES OUT, AND IF THE LEVEL ON THE DATA LINE DRIFTS, * THE DISPLAY DRIVERS MAY GET CONFUSED AND TANK THE SYSTEM. * THIS PATCH ENSURES THAT THE DISPLAY DRIVERS GET SYNCHRONIZED AND * THEN DISABLE THE SYNCHRONIZATION LOGIC BEFORE ANY MICROCODE * FLOATS THE DATA LINE (AS BY READING FROM A NONEXISTENT DATA * STORAGE CHIP IN CHKADR OR FNDEND). * 1400 ENTRY PACH11 1401 1765 PACH11 460 LDI 1402 1766 1375 CON2 47 13 1403 1767 1160 DADD=C ENABLE NONEXISTENT DATA CHIP 2FD 1404 1770 1760 PFAD=C ENABLE DISPLAY 1405 1771 270 FLLDC NON-DESTRUCTIVE READ 1406 1772 1 GOLONG MEMCHK 1406 1773 2 * * PACH12 - POST-RELEASE FIX TO DECOMPILE ON WAKEUP WHEN MACHINE GOES * TO SLEEP IN PROGRAM MODE. DRC 10/20/79 * 1411 ENTRY PACH12 1412 1774 PACH12 106 C=0 X 1413 1775 1650 REGN=C 14 1414 1776 1 GOLONG DECMPL 1414 1777 2 1415 FILLTO END 1416 END ERRORS : 0 SYMBOL TABLE ADRFCH 4 - ADRGSB 114 - 111 56 ALLOK 1315 - 1306 ALPDEF 1656 - AVW10 1552 - 1547 BCDBIN 1343 - BIGBRC 117 - 163 CHKRPC 1042 - CLCTMG 1711 - COLDST 1062 - 1034 1021 763 CONFLG 1301 - 1273 DATOFF 1620 - DBL 1330 - 1332 DROPST 344 - 336 DROWSY 540 - 472 DRSY05 541 - DRSY10 552 - 546 DRSY20 560 - 553 DRSY25 563 - 626 557 551 544 DRSY26 567 - 570 DRSY30 573 - 564 DRSY50 620 - 671 DRSY51 624 - DRWSYL 472 - 407 DSWKUP 655 - END2 1666 - END3 1676 - ERRIGN 273 - 343 325 ERRNE 1340 - 1367 1314 1310 ERROF 242 - 274 FCHRTN 40 - 27 FILLXL 352 - 326 320 261 FILLY 256 - 272 FLAGS 1271 - 1264 1261 GBYTR0 524 - 500 GBYTR1 521 - 501 GBYTR2 516 - 502 GBYTR3 513 - 503 GBYTR4 510 - 504 GBYTR5 505 - GOTINT 1370 - 1364 1360 GTAI10 1420 - 1412 1410 GTAI20 1473 - 1461 GTAI22 1462 - 1427 GTAI26 1432 - GTAI30 1441 - 1450 GTAI40 1501 - 1421 GTAI50 1511 - 1503 GTAI55 1513 - 1510 GTAI60 1520 - 1531 GTAI70 1532 - 1521 GTAINC 1404 - IGNKEY 433 - 426 ILOOP 1125 - 1132 INCG1 1213 - 1210 INCG2 1225 - 1215 INCG3 1243 - 1226 INCGT2 1206 - INTINT 1373 - IOSERV 404 - 401 KBD 1720 - 1734 LOWBRT 400 - 372 370 LSWKUP 600 - MATH 213 - 205 MEMCHK 1005 - MSGDLY 1574 - NEXROM 465 - 443 NFRC 361 - 311 305 301 NFRENT 304 - NFRFST 367 - NFRKB 307 - NFRKB1 306 - NFRNC 245 - NFRNIO 406 - 403 NFRPR 356 - NFRPU 360 - NFRSIG 302 - NFRX 314 - 312 NFRXY 332 - NOPRT 533 - 530 NXBEND 527 - 523 520 515 512 507 464 NXROM1 526 - 471 NXTBT1 456 - 446 OFFXFR 653 - OVRSTK 30 - 45 21 17 15 P10RTN 1254 - P8RTN 1647 - 1741 PACH10 1754 - PACH11 1765 - PACH12 1774 - PACH4 1742 - PATCH8 1735 - 1646 PAUS10 634 - 643 PAUSLP 627 - 577 PCTOC 327 - PR10RT 1562 - PSESTP 1654 - PSTDBL 1331 - 1327 PTCH4A 1744 - 1751 QUTCAT 1725 - 1662 REGADR 105 - 101 ROW10 1246 - ROW7 177 - ROWTBL 140 - RST05 233 - RST10 235 - 240 RSTKB 230 - 232 RSTMS0 1616 - RSTMS1 1620 - RSTMS2 1635 - 1603 RSTMSC 1622 - 1615 RSTSEQ 1604 - RSTSQ 1605 - RUNING 410 - RUNNK 435 - 411 SHF8 1324 - 1326 STMSGF 1576 - STOPS 1647 - 1573 STOPSB 1651 - STOST0 473 - TBLGBR 500 - TONETC 161 - 113 TONSTF 124 - WKUP10 604 - 613 WKUP20 646 - 635 605 WKUP21 647 - WKUP25 672 - 663 WKUP30 716 - 730 WKUP40 717 - 736 WKUP50 737 - 726 720 WKUP60 764 - 753 WKUP70 765 - WKUP80 777 - X<>ROW 46 - XAVIEW 1544 - XBAD 262 - 251 XCUTB1 221 - XCUTE 533 - XCUTEB 220 - 200 176 150 147 XPRMPT 1640 - XROW0 57 - 140 XROW1 164 - 141 XROW10 61 - 152 XROW11 63 - 153 XROW12 65 - 154 XROW13 67 - 155 XROW14 71 - 156 XROW2 73 - 142 XROW3 73 - 143 XROW4 206 - 144 XROW5 201 - 145 XROW6 201 - 146 XROW9 102 - 151 XVIEW 1557 - XVIEWA 1564 - 1556 XVW10 1574 - 1567 YBAD 264 - 255 ENTRY TABLE ADRFCH 4 - ALLOK 1315 - ALPDEF 1656 - BCDBIN 1343 - BIGBRC 117 - CHKRPC 1042 - CLCTMG 1711 - COLDST 1062 - DATOFF 1620 - DROPST 344 - DROWSY 540 - DRSY05 541 - DRSY25 563 - DRSY50 620 - DRSY51 624 - DSWKUP 655 - END2 1666 - END3 1676 - ERRIGN 273 - ERRNE 1340 - ERROF 242 - FILLXL 352 - GOTINT 1370 - GTAI40 1501 - GTAINC 1404 - INCGT2 1206 - INTINT 1373 - LSWKUP 600 - MEMCHK 1005 - MSGDLY 1574 - NFRC 361 - NFRENT 304 - NFRFST 367 - NFRKB 307 - NFRKB1 306 - NFRNC 245 - NFRNIO 406 - NFRPR 356 - NFRPU 360 - NFRSIG 302 - NFRX 314 - NFRXY 332 - NOPRT 533 - P10RTN 1254 - PACH10 1754 - PACH11 1765 - PACH12 1774 - PACH4 1742 - PATCH8 1735 - PR10RT 1562 - PSESTP 1654 - QUTCAT 1725 - ROW10 1246 - RST05 233 - RSTKB 230 - RSTMS0 1616 - RSTMS1 1620 - RSTMSC 1622 - RSTSEQ 1604 - RSTSQ 1605 - RUNING 410 - RUNNK 435 - STMSGF 1576 - STOPS 1647 - STOPSB 1651 - STOST0 473 - TONSTF 124 - WKUP10 604 - WKUP21 647 - WKUP25 672 - WKUP70 765 - WKUP80 777 - X<>ROW 46 - XAVIEW 1544 - XCUTB1 221 - XCUTE 533 - XCUTEB 220 - XPRMPT 1640 - XROW1 164 - XVIEW 1557 - EXTERNAL REFERENCES ADRFCH 114 127 1275 ADRFCH 115 130 1276 ANNOUT 376 541 624 ANNOUT 377 542 625 ARGOUT 555 1554 1735 ARGOUT 556 1555 1736 BCDBIN 42 131 1754 BCDBIN 43 132 1755 BIGBRC 1267 1336 BIGBRC 1270 1337 BLINK 1574 1700 BLINK 1575 1701 CHK#S 211 CHK#S 212 CHK#S2 214 CHK#S2 215 CHKADR 35 CHKADR 36 CLLCDE 1667 CLLCDE 1670 CNTLOP 1707 CNTLOP 1710 DECMPL 1776 DECMPL 1777 DERUN 170 DERUN 171 DFRST8 547 DFRST8 550 DSPCRG 561 1562 DSPCRG 562 1563 DSWKUP 2 DSWKUP 3 ENCP00 1616 1676 ENCP00 1617 1677 ENLCD 620 1111 ENLCD 621 1112 ERRAD 1345 ERRAD 1346 ERRDE 136 ERRDE 137 ERRNE 1757 ERRNE 1760 ERROR 242 1340 ERROR 243 1341 GETPCA 1504 1511 GETPCA 1505 1512 GTAINC 172 GTAINC 173 INCADA 1506 INCADA 1507 INCGT2 50 102 1246 INCGT2 51 103 1247 INTINT 1371 INTINT 1372 IORUN 404 IORUN 405 LEFTJ 1674 LEFTJ 1675 LINNUM 1752 LINNUM 1753 LSWKUP 0 LSWKUP 1 MEMCHK 1772 MEMCHK 1773 MSGA 1106 MSGA 1107 MSGML 1110 MSGNE 1342 MSGOF 244 NFRC 771 NFRC 772 NFRKB 431 1723 NFRKB 432 1724 NXBYTA 1513 1523 NXBYTA 1514 1524 OFF 421 653 OFF 422 654 OVFL10 245 252 262 314 332 OVFL10 246 253 263 315 333 P10RTN 1763 P10RTN 1764 PACH10 1277 PACH10 1300 PACH11 602 660 PACH11 603 661 PACH12 673 PACH12 674 PARSE 651 PARSE 652 PGMAON 627 PGMAON 630 PKIOAS 744 PKIOAS 745 PROMF2 1672 PROMF2 1673 PUTPC 1536 PUTPC 1537 PUTPCX 1060 PUTPCX 1061 RMCK05 640 RMCK05 641 ROMCHK 610 666 742 1172 ROMCHK 611 667 743 1173 ROW0 57 ROW0 60 ROW10 61 ROW10 62 ROW11 63 ROW11 64 ROW12 65 ROW12 66 RSTANN 1704 RSTANN 1705 RSTKB 307 571 750 1113 RSTKB 310 572 751 1114 RSTMS0 1642 RSTMS0 1643 RSTSEQ 427 RSTSEQ 430 RTJLBL 1532 RTJLBL 1533 RUN 644 1003 RUN 645 1004 STMSGF 1564 1737 STMSGF 1565 1740 STOST0 374 574 1652 STOST0 375 575 1653 TEXT 157 TEXT 160 TONE7X 1000 TONE7X 1001 TONSTF 161 TONSTF 162 WKUP70 1204 WKUP70 1205 XCUTB1 122 XCUTB1 123 XGTO 67 XGTO 70 XROM 1255 XROM 1256 XRS45 1746 XRS45 1747 XXEQ 71 XXEQ 72 End of VASM assembly VASM ROM ASSEMBLY REV. 6/81A OPTIONS: L C S * HP41C MAINFRAME MICROCODE ADDRESSES @2000-3777 3 FILE CN1B 4 ENTRY LDSST0 5 ENTRY OFSHFT 6 ENTRY ANNOUT 7 ENTRY ANN+14 8 ENTRY RSTANN 9 ENTRY AFORMT 10 ENTRY BLANK 11 ENTRY CHKFUL 12 ENTRY CHRLCD 13 ENTRY CPGMHD 14 ENTRY DEROW 15 ENTRY DERW00 16 ENTRY DFILLF 17 ENTRY DF060 18 ENTRY DF150 19 ENTRY DF160 20 ENTRY DF200 21 ENTRY DFKBCK 22 ENTRY DFRST8 23 ENTRY DFRST9 24 ENTRY GENNUM 25 ENTRY MEMLFT 26 ENTRY PROMF1 27 ENTRY PROMF2 28 ENTRY PROMFC 29 ENTRY ROMHED 30 ENTRY ROMH05 31 ENTRY ROMH35 32 ENTRY RW0141 33 ENTRY ROW120 34 ENTRY ROW933 35 ENTRY ROW940 36 ENTRY RW0110 37 ENTRY TXRW10 38 ENTRY TXTROW 39 ENTRY TXTSTR 40 ENTRY XMSGPR * * ROW JUMP TABLE * 44 0 213 GOTO ROW0 ( 21) 45 1 243 GOTO ROW1 ( 25) 46 2 253 GOTO ROW2 ( 27) 47 3 333 GOTO ROW3 ( 36) 48 4 263 GOTO ROW4-8 ( 32) 49 5 253 GOTO ROW4-8 ( 32) 50 6 243 GOTO ROW4-8 ( 32) 51 7 233 GOTO ROW4-8 ( 32) 52 10 223 GOTO ROW4-8 ( 32) 53 11 373 GOTO ROW09 ( 50) 54 12 643 GOTO ROW10 ( 76) 55 13 363 GOTO ROW11 ( 51) 56 14 403 GOTO ROW12 ( 54) 57 15 453 GOTO RO1314 ( 62) 58 16 443 GOTO RO1314 ( 62) 59 17 1 GOLONG TXTROW 59 20 2 60 21 ROW0 460 LDI 61 22 317 CON2 12 15 PROMPT STRING IN C,F 62 23 ROW010 646 A=A-1 X OPERAND MINUS ONE 63 LEGAL 64 24 143 GOTO DF120 ( 40) 65 25 ROW1 1 GOLONG DEROW THIS IS A DIGIT ENTRY ROW 65 26 2 66 27 ROW2 460 LDI 67 30 220 CON2 9 0 PROMPT STRING IN 9,0 68 31 73 GOTO DF120 ( 40) 69 32 ROW4-8 1 GOSUB PROMFC 69 33 0 70 34 1 GOLONG DF150 70 35 2 71 36 ROW3 460 LDI 72 37 221 CON2 9 1 PROMPT STRING IN 9,1 73 40 DF120 2 A=0 PT A[1] _ 0 74 41 206 B=A X SAVE THE OPERAND IN B 75 42 406 A=C X 76 43 1 GOSUB PROMFC OUTPUT PROMPT STRING 76 44 0 77 45 146 AB EX X A.X _ OPERAND * NEXT INSTRUCTION (S0=0) MAY NOT BE NECESSARY. 79 46 1604 S0= 0 SAY TWO-DIGIT OPERAND 80 47 743 GOTO ROW931 ( 143) 81 50 ROW09 563 GOTO ROW9 ( 126) 82 51 ROW11 460 LDI 83 52 320 CON2 13 0 PROMPT STRING IN 13,0 84 53 1503 GOTO ROW010 ( 23) 85 54 ROW12 460 LDI 86 55 316 CON2 12 14 87 56 1406 ? ANN? 88 57 543 GONC ROW910 ( 133) YES 89 60 1 GOLONG ROW120 89 61 2 90 62 RO1314 1634 PT= 0 91 63 2 A=0 PT 92 64 1 GOSUB PROMFC 92 65 0 93 66 1 GOSUB NBYTA0 SKIP ONE BYTE(THREE-BYTE FC) 93 67 0 94 70 1 GOSUB NXTBYT 94 71 0 95 72 1730 CST EX 96 73 1204 S7= 0 97 74 1730 CST EX 98 75 433 GOTO ROW930 ( 140) 99 76 ROW10 460 LDI 100 77 250 CON2 10 8 TEST FOR XECROM FC 101 100 1406 ? AC3? 838 1251 43 GONC KYOP50 (1255) NO. LEGITIMATE KEY 839 1252 1 GOSUB BLINK YES. USER, PRGM OR ALPHA KEY 839 1253 0 840 1254 1453 GOTO KYOP10 (1221) * 842 KYOP50 843 1255 116 C=0 844 1256 1040 C=KEYS 845 1257 74 RCR 3 846 1260 320 LC 3 847 1261 1046 C=C+1 X 848 1262 1750 SLSABC SEND ROW TO LCD 849 1263 406 A=C X COPY ASCII ROW TO A.X 850 1264 460 LDI 851 1265 64 CON @64 "4" 852 1266 404 S8= 0 ASSUME ROW#4 853 1267 1546 ? A#C X ROW#4? 854 1270 27 GOC KYOP60 (1272) YES, NOT "ENTER" ROW 855 1271 410 S8= 1 "ENTER ROW" 856 1272 KYOP60 260 C=N RECOVER LOG KC TO C[2:1] 857 1273 1706 C SR X LOG KC TO C[1:0], 0 TO C[2] 858 1274 406 A=C X SAVE LOG KC IN A.X 859 1275 1706 C SR X LOG COL TO C[0] 860 1276 1434 PT= 1 861 1277 320 LC 3 862 1300 414 ?S8=1 "ENTER" ROW 863 1301 33 GONC KYOP70 (1304) NO 864 1302 1342 ? C#0 PT A KEY TO THE RIGHT OF "ENTER"? 865 1303 27 GOC KYOP80 (1305) YES - DON'T INC COLUMN # 866 1304 KYOP70 1042 C=C+1 PT INCREMENT COLUMN # 867 1305 KYOP80 1750 SLSABC SEND COL TO LCD 868 1306 546 A=A+1 X KC INTERNAL FORM (1-80) 869 LEGAL 870 1307 1 GOLONG NULT#3 870 1310 2 * * ALCL00 - LOGIC TO MAP LOCAL ALPHA OPERANDS ONTO NUMERIC OPERANDS * 874 ALCL00 875 1311 416 A=C CHARACTER TO A.[1:0] 876 REMAINDER OF A IS ZERO 877 1312 460 LDI 878 1313 101 CON @101 "A" 879 1314 1406 ? A * * WHEN RETURN REG.B ALWAYS HAS: * B[2:0] = FUNCTION NUMBER * B[4:3] = ROM ID NUMBER * IF THE FUNCTION FOUND IN THE ROM THEN * A.[3:0] = AUXILIARY ROM FUNCTION EXECUTION ADDRESS * S2 = BIT 8 OF THE UPPER WORD IN FUNCTION TABLE * S3 = BIT 9 OF THE UPPER WORD IN FUNCTION TABLE * USES A,C,B[6:0], STATUS SET, AND ACTIVE POINTER * 55 0 GTRMAD 132 C=0 M 56 1 756 C=C+C W 57 2 756 C=C+C W ROM ID IN C[3:2] NOW 58 3 1374 RCR 13 C[4:3] _ ROM ID 59 4 1706 C SR X 60 5 746 C=C+C X 61 6 746 C=C+C X 62 7 1706 C SR X C.X _ FC # 63 10 74 RCR 3 C.X _ ROM ID 64 11 406 A=C X A.X _ ROM ID 65 12 674 RCR 11 66 13 534 PT= 6 67 14 352 BC EX WPT B[4:0] _ ROM ID & FC # 68 15 132 C=0 M 69 16 520 LC 5 START FROM HEX 5000 (ASL 1) 70 17 534 PT= 6 71 20 RMAD10 1460 CXISA READ ID FROM ONE PORT 72 21 1546 ? A#C X IS THE ID A MATCH ? 73 22 43 GONC RMAD20 ( 26) YES 74 23 RMAD15 1042 C=C+1 PT ADDR _ ADDR + HEX 1000 75 24 1743 GONC RMAD10 ( 20) CHECK ANOTHER PORT 76 25 1740 RTN ROM NOT PLUGGED IN 77 26 RMAD20 1072 C=C+1 M POINT TO 2ND WORD OF ROM 78 27 306 C=B X LOAD THE FC # 79 30 416 A=C 80 31 1460 CXISA LOAD # OF FC'S IN THE ROM 81 32 1046 C=C+1 X 82 33 1406 ? A * < B : READY FOR DISPLAY REG.B > * USES A,B,C. ASSUMES CHIP 0 ENABLED * USES STATUS BITS 0-8 * S4 = DIGIT GROUPING FLAG * S5 = DECIMAL POINT FLAG * S6 = ENG MODE FLAG * S7 = FIX MODE FLAG * S8 = FIX MODE FEASIBLE FLAG * * CALLS STBT10, ROUND, LOAD3, LDD.P., SETQ=P * PROBABLY USES ONLY ONE ADDITIONAL SUBROUTINE LEVEL * 802 1173 FORMAT 356 BC EX W SAVE THE NUMBER TO B 803 1174 1140 SETHEX 804 1175 1 GOSUB STBT10 MOVE STATUS BITS TO REG.10 804 1176 0 805 1177 316 C=B W GET THE NUMBER BACK 806 1200 410 S8= 1 SIGNAL ROUNDING ROUTINE 807 1201 1 GOSUB ROUND ROUND THE NUMBER 807 1202 0 808 1203 356 BC EX W MOVE THE NUMBER TO B TEMP. 809 1204 1 GOSUB LOAD3 LOAD ALL 3'S TO C 809 1205 0 810 1206 1056 C=C+1 C[0] _ 3 811 1207 416 A=C W A _ ALL 3'S 812 1210 1240 SETDEC 813 1211 1670 C=REGN 14 814 1212 274 RCR 5 C[13] _ DSP# 815 1213 356 BC EX W B[13] _ DSP#, C _ ROUNDED NO. 816 1214 176 AB EX S A[13] _ DSP# , B[13] _ 3 817 1215 346 B=C X COPY EXP TO B 817 1216 306 818 1217 1376 ? C#0 S MANTSSA POSITIVE ? 819 1220 33 GONC *+3 (1223) YES 820 1221 1334 PT= 13 821 1222 1520 LC 13 822 1223 1214 ?S7=1 FIX MODE ? 823 1224 1 GOLNC NOTFIX NO 823 1225 2 824 1226 FIX00 1534 PT= 12 825 1227 1366 ? C#0 XS EXP POSITIVE ? 826 1230 133 GONC FIX20 (1243) YES 827 1231 1 GOSUB LDD.P. LOAD DECIMAL POINT 827 1232 0 828 1233 1 GOSUB SETQ=P 828 1234 0 829 1235 FIX10 1724 DEC PT 830 1236 1732 C SR M SHIFT IN LEADING ZERO 831 1237 676 A=A-1 S DECREMENT DSP # 832 1240 1046 C=C+1 X UNTIL EXP = 0 833 1241 1743 GONC FIX10 (1235) 834 1242 173 GOTO FIX40 (1261) PUT IN THE TAIL BLANKS 835 1243 FIX20 1146 C=C-1 X PASSING D.P. ? 836 1244 37 GOC FIX30 (1247) YES, GOTO LOAD D.P. 837 1245 1724 DEC PT 838 LEGAL 839 1246 1753 GOTO FIX20 (1243) 840 1247 FIX30 106 C=0 X 841 1250 676 A=A-1 S 842 1251 477 GOC FIX60 (1320) FIX MODE, DSP# = 0 843 1252 1 GOSUB LDD.P. LOAD THE D.P. 843 1253 0 844 1254 1 GOSUB SETQ=P SET Q=P 844 1255 0 845 1256 FIX35 1724 DEC PT PASSING THE DSP # 846 1257 1024 ? PT= 2 END OF MANTISSA ? 847 1260 107 GOC FIX50 (1270) YES 848 1261 FIX40 676 A=A-1 S DSP# _ DSP# -1 849 1262 1743 GONC FIX35 (1256) 850 1263 FIX45 1724 DEC PT 851 1264 1024 ? PT= 2 END OF MANTISSA ? 852 1265 37 GOC FIX50 (1270) 853 1266 642 A=A-1 PT FILLING TAILING BLANK 854 LEGAL 855 1267 1743 GOTO FIX45 (1263) 856 1270 FIX50 1634 PT= 0 857 1271 340 SEL Q 858 1272 114 ?S4=1 GROUPING FLAG SET ? 859 1273 103 GONC FIX57 (1303) NO 860 1274 SETCOM 176 A=B S A.S _ 3(COMMA COUNTER) 860 1275 236 861 1276 FIX55 676 A=A-1 S COUNT 3 AND LOAD A COMMA 862 1277 107 GOC LDCOMA (1307) 863 1300 1734 INC PT MOVE THE POINTER TO LEFT 864 1301 1324 ? PT= 13 865 1302 1743 GONC FIX55 (1276) 866 1303 FIX57 1334 PT= 13 Q _ 13 867 1304 240 SEL P 868 1305 176 AB EX S A[13] _ 3 869 1306 203 GOTO FMTRTN (1326) 870 1307 LDCOMA 242 AC EX PT 871 1310 214 ?S5=1 LOAD A COMMA 872 1311 33 GONC *+3 (1314) 873 1312 1720 LC 15 874 1313 23 GOTO *+2 (1315) 875 1314 720 LC 7 LOAD A D.P. INSTEAD OF 876 1315 1734 INC PT 877 1316 242 AC EX PT 878 1317 1553 GOTO SETCOM (1274) 879 1320 FIX60 1 GOSUB SETQ=P 879 1321 0 880 1322 114 ?S4=1 881 1323 1 GSUBC LDD.P. 881 1324 1 882 1325 1363 GOTO FIX45 (1263) 883 1326 FMTRTN 676 A=A-1 S A[13] _ 2 884 1327 666 A=A-1 XS A[2] _ 2 885 1330 256 AC EX W 886 1331 1140 SETHEX 887 1332 356 BC EX 888 1333 1 GOLONG LDSST0 888 1334 2 889 1335 NOTFIX 1534 PT= 12 890 1336 514 ?S6=1 ENG MODE ? 891 1337 623 GONC SCI00 (1421) NO, SCI MODE 892 1340 406 A=C X A.X _ EXP 893 1341 460 LDI 894 1342 3 CON 3 895 1343 1526 ? A#0 XS EXP NEGATIVE ? 896 1344 57 GOC ENG10 (1351) YES 897 1345 706 A=A-C X COMPUTE EXP MOD 3 898 1346 1773 GONC *-1 (1345) 899 1347 506 A=A+C X 900 1350 447 GOC ENG60 (1414) 901 1351 ENG10 506 A=A+C X ADD 3 TO NEGATIVE D

* WHERE NAME IS IN THE SAME 1024-WORD ROM AS THE CALLING ROUTINE. * * WARNING!!! - CALLING A SUBROUTINE IN ANOTHER 1024-WORD ROM FROM * THE CURRENT ONE WILL NOT WORK. USE GOSUB[0-3]. * * USES ONLY C, NO ADDITIONAL SUBROUTINE LEVELS * * GOLNGH - SAME AS GOLONG EXCEPT SETS HEX MODE ON ENTRY. * GOSUBH - SAME AS GOSUB EXCEPT SETS HEX MODE ON ENTRY. * 1198 ENTRY GOLNGH 1199 ENTRY GOLONG 1200 ENTRY GOSUBH 1201 ENTRY GOSUB 1202 1731 GOLNGH 1140 SETHEX 1203 1732 GOLONG 660 C=STK GET ADDRESS OF CALLING ROUTINE 1204 1733 1460 CXISA GET THE DESTINATION ADDRESS 1205 1734 63 GOTO GOSUBA (1742) GO CREATE THE CORRECT 16-BIT ADDRESS 1206 1207 1735 GOSUBH 1140 SETHEX 1208 1736 GOSUB 660 C=STK GET ADDRESS OF CALLING ROUTINE 1209 1737 1460 CXISA GET THE DESTINATION ADDRESS 1210 1740 1072 C=C+1 M ADVANCE ADDRESS BEYOND ARGUMENT FOR RETURN. 1211 1741 560 STK=C PUT RETURN ADDRESS BACK 1212 1742 GOSUBA 756 C=C+C MOVE OVER BOTH ADDRESSES TWO BITS 1213 1743 756 C=C+C SO THAT THE DESIRED 10-BIT BOUNDARY 1214 1744 1732 C SR M FALLS ON A DIGIT BOUNDARY C[3:2] 1215 1745 1732 C SR M COMBINE 10 BITS FROM ARGUMENT 1216 1746 1732 C SR M WITH 6 BITS FROM SUBROUTINE STACK 1217 1747 756 C=C+C TO FORM A 16-BIT ADDRESS 1218 1750 756 C=C+C AND POSITION PROPERLY FOR GOTOC 1219 1751 1574 RCR 12 1220 1752 740 GOTOC GO TO THE DESIRED ADDRESS. * 1222 1223 ENTRY GT3DBT 1224 1753 GT3DBT 1 GSBLNG GETPC STATUS_3RD BYTE 1224 1754 0 1225 1755 530 M=C - 1226 1756 1 GSBLNG INCAD2 - 1226 1757 0 1227 1760 1 GSBLNG GTBYTA - 1227 1761 0 1228 1762 1730 CST EX - 1229 1763 1740 RTN 1230 1231 1232 ENTRY XSIGN ****************************************************** * THE SIGN FUNCTION RETURNS ONE FOR POSITIVE * NUMBERS AND -1 FOR NEGATIVE NUMBERS AND ZERO * FOR ALPHA DATA ****************************************************** 1238 1239 1764 XSIGN 1534 PT= 12 1240 1765 370 C=REGN 3 1241 1766 112 C=0 WPT 1242 1767 416 A=C 1243 1770 676 A=A-1 S 1244 1771 676 A=A-1 S 1245 1772 27 GOC DONSGN (1774) MAKES USE OF OVFL10 1246 AT NFRX TO ZERO OUT 1247 WHOLE WORD BECAUSE 1248 MANTISSA IS ZERO 1249 1773 120 LC 1 1250 1774 DONSGN 1 GOLONG NFRX 1250 1775 2 * * MUST HAVE AT LEAST 2 WORDS AT THE END OF CN3 FOR CHECKSUM AND * TRAILER 1255 1256 1257 * 1259 1260 1261 FILLTO @1775 1262 1776 REVLEV 7 CON 7 REV LEVEL= G 1263 1777 CKSUM0 0 CON @0000 1264 END ERRORS : 0 SYMBOL TABLE AB10XF 1327 - 1264 ABTS10 426 - ABTSEQ 422 - 467 442 355 ABTXF3 761 - 772 704 AJ2 724 - 706 AJ210 726 - 723 AJ220 731 - 727 AJ3 720 - CKSUM0 1777 - CLRSB2 0 - CLRSB3 2 - CLRSBX 32 - 4 DONSGN 1774 - 1772 DSPL10 1722 - 1720 DSPLN+ 1707 - FDIG10 1065 - 1074 FDIG20 1075 - 1071 FDIG30 1103 - 1067 FDIGIT 1057 - GOLNGH 1731 - GOLONG 1732 - GOSUB 1736 - GOSUBA 1742 - 1734 GOSUBH 1735 - GT3DBT 1753 - IND 662 - IND20 702 - 717 IND21 704 - IND30 715 - 712 INDGTO 672 - 620 INDXEQ 664 - 621 MID10 745 - 756 MID15 754 - 751 MID20 757 - 747 MIDDIG 740 - NAM40 1464 - NAM44@ 1575 - NAM44A 1605 - 1600 NAM44B 1615 - 1611 NAME10 1344 - 1410 1356 NAME20 1346 - 1403 NAME21 1351 - NAME30 1366 - 1350 NAME31 1403 - 1455 NAME33 1357 - 1372 NAME34 1404 - 1473 NAME35 1406 - 1443 1440 1434 1430 1424 1417 NAME37 1411 - 1467 NAME42 1476 - 1405 NAME44 1570 - 1547 NAME46 1632 - 1621 1557 1541 NAME48 1637 - 1571 NAME4A 1644 - NAME4C 1652 - 1640 NAME4D 1654 - NAME4E 1673 - 1670 NAME4F 1700 - 1676 1665 NAME4G 1701 - 1672 NAMEA 1331 - NEWFCN 126 - 46 NEXT 1120 - NEXT1 1105 - NEXT2 1110 - NEXT3 1113 - NLT000 1221 - NLT010 1232 - 1236 NLT020 1240 - 1220 1214 NLT030 1243 - 1234 NLT040 1252 - 1242 NLT050 1271 - 1262 NM44@5 1576 - NULT# 1145 - 1102 NULT#1 1151 - 1155 NULT#2 1157 - 1173 NULT#3 1174 - 1164 NULT#4 1204 - 1200 NULT#5 1217 - NULT10 1311 - 1316 NULT20 1325 - 1326 NULTST 1306 - NXT1E 1117 - 1107 NXT2E 1116 - 1112 PAR001 25 - 27 PAR003 35 - 31 26 24 22 PAR005 44 - 40 PAR110 353 - 367 PAR111 355 - PAR112 365 - 406 404 377 PAR115 370 - 362 PAR130 400 - PARA05 440 - 460 435 PARA06 442 - PARA10 456 - 464 PARA45 461 - 444 PARA50 465 - 437 PARA60 465 - 526 501 PARA61 467 - PARA65 477 - 534 530 PARA70 502 - 474 PARA75 511 - PARA80 514 - 524 PARA90 522 - PARB10 566 - 630 625 PARB15 574 - 567 PARB20 607 - 563 PARB30 622 - 610 PARB40 631 - PARS05 64 - PARS10 104 - 106 PARS20 110 - 116 PARS30 117 - 111 PARS50 136 - 132 PARS52 207 - 141 PARS55 213 - 135 PARS56 223 - PARS57 240 - 235 233 PARS60 264 - 204 PARS70 314 - 260 PARS75 315 - PARSDE 220 - PARSE 5 - PARSEA 434 - 352 PARSEB 555 - PR3RT 1335 - PRA100 525 - 516 PRA110 527 - 510 PRA115 546 - 532 RAK05 176 - 166 162 RAK06 177 - RAK10 205 - 175 173 152 REVLEV 1776 - STK 763 - 710 STK00 772 - STK03 763 - 1040 STK04 1000 - STK05 1011 - 1055 1051 STK10 1031 - 1026 STK15 1036 - 1056 STK20 1041 - 1010 STK30 1043 - 1050 STK40 1052 - 1045 XFRNMA 605 - 545 XSIGN 1764 - ENTRY TABLE ABTS10 426 - ABTSEQ 422 - AJ2 724 - AJ3 720 - CLRSB2 0 - CLRSB3 2 - DSPLN+ 1707 - FDIG20 1075 - FDIGIT 1057 - GOLNGH 1731 - GOLONG 1732 - GOSUB 1736 - GOSUBH 1735 - GT3DBT 1753 - IND 662 - IND21 704 - MIDDIG 740 - NAM40 1464 - NAM44@ 1575 - NAME20 1346 - NAME21 1351 - NAME33 1357 - NAME37 1411 - NAME4A 1644 - NAME4D 1654 - NAMEA 1331 - NEXT 1120 - NEXT1 1105 - NEXT2 1110 - NEXT3 1113 - NLT000 1221 - NLT020 1240 - NLT040 1252 - NM44@5 1576 - NULT# 1145 - NULT#3 1174 - NULT#5 1217 - NULTST 1306 - PAR111 355 - PAR112 365 - PARA06 442 - PARA60 465 - PARA61 467 - PARA75 511 - PARB40 631 - PARS05 64 - PARS56 223 - PARS75 315 - PARSDE 220 - PARSE 5 - PARSEB 555 - PR3RT 1335 - RAK06 177 - STK 763 - STK00 772 - STK04 1000 - XSIGN 1764 - EXTERNAL REFERENCES ABTS10 1327 ABTS10 1330 ABTSEQ 761 1364 ABTSEQ 762 1365 AJ2 357 AJ2 360 AJ3 471 AJ3 472 ALCL00 1532 ALCL00 1533 ANN+14 1137 1503 ANN+14 1140 1504 ANNOUT 424 ANNOUT 425 ASRCH 1544 ASRCH 1545 BLINK 365 456 477 522 715 754 1036 1072 1406 BLINK 366 457 500 523 716 755 1037 1073 1407 CLLCDE 271 422 646 1245 1711 CLLCDE 272 423 647 1246 1712 DATENT 221 DATENT 222 DSPLN+ 317 1622 DSPLN+ 320 1623 ENCP00 535 555 662 1015 1122 1207 1223 1250 1331 1366 1464 1522 ENCP00 1624 ENCP00 536 556 663 1016 1123 1210 1224 1251 1332 1367 1465 1523 ENCP00 1625 ENLCD 75 570 672 1344 1400 1451 1516 ENLCD 76 571 673 1345 1401 1452 1517 ERRNE 1566 ERRNE 1567 FDIG20 446 451 FDIG20 447 452 FDIGIT 363 713 752 FDIGIT 364 714 753 GENNUM 1723 GENNUM 1724 GETPC 1753 GETPC 1754 GTACOD 1000 1411 GTACOD 1001 1412 GTBYTA 1760 GTBYTA 1761 INCAD2 1756 INCAD2 1757 IND 374 454 IND 375 455 INSLIN 1267 INSLIN 1270 KEYOP 1513 KEYOP 1514 LDSST0 415 1357 LDSST0 416 1360 LEFTJ 1013 1120 1205 1221 1520 LEFTJ 1014 1121 1206 1222 1521 MASK 1011 1453 MASK 1012 1454 MESSL 674 763 MESSL 675 764 MIDDIG 475 520 MIDDIG 476 521 MSGA 1320 MSGA 1321 MSGNL 1322 NAM40 1352 NAM40 1353 NAMEA 462 605 NAMEA 463 606 NEXT1 440 770 1065 1346 NEXT1 441 771 1066 1347 NEXT2 353 702 745 NEXT2 354 703 746 NEXT3 465 514 NEXT3 466 515 NFRKB 432 NFRKB 433 NFRX 1774 NFRX 1775 NLT000 330 NLT000 331 NLT020 1034 1635 NLT020 1035 1636 NULT# 736 NULT# 737 NULT#3 553 NULT#3 554 NULT#5 312 NULT#5 313 NULTST 1240 NULTST 1241 OFSHFT 267 315 1376 1414 OFSHFT 270 316 1377 1415 PAR112 572 PAR112 573 PARA60 660 PARA60 661 PARS56 420 1650 PARS56 421 1651 PARS75 1705 PARS75 1706 PARSEB 371 PARSEB 372 PROMF1 275 652 PROMF1 276 653 PROMF2 322 PROMF2 323 PUTPCX 32 PUTPCX 33 RAK60 145 RAK60 146 ROW940 300 ROW940 301 RST05 1243 1313 RST05 1244 1314 RSTKB 1141 RSTKB 1142 RSTSEQ 430 1254 1564 RSTSEQ 431 1255 1565 RTJLBL 1474 RTJLBL 1475 SEARCH 201 SEARCH 202 STK 401 STK 402 STORFC 1603 1654 STORFC 1604 1655 TBITMP 142 TBITMP 143 TOGSHF 1354 TOGSHF 1355 TXTLBL 1630 TXTLBL 1631 WKUP10 1143 WKUP10 1144 XCUTB1 1304 XCUTB1 1305 XCUTE 1301 XCUTE 1302 End of VASM assembly VASM ROM ASSEMBLY REV. 6/81A OPTIONS: L C S * HP41C MAINFRAME MICROCODE ADDRESSES @10000-11777 * CONTENTS: * 1. EXECUTION POINTS FOR MAINFRAME FUNCTIONS (MUST BE IN * @10000-11736) * 7 FILE CN4B 8 ENTRY CAT##3 9 ENTRY + 10 ENTRY - 11 ENTRY -DEC 12 ENTRY -OCT 13 ENTRY (*) 14 ENTRY ADVNCE 15 ENTRY / 16 ENTRY (10)^X 17 ENTRY ABS 18 ENTRY ACOS 19 ENTRY AGTO 20 ENTRY AOFF 21 ENTRY AON 22 ENTRY ARCL 23 ENTRY ASHF 24 ENTRY ASIN 25 ENTRY ASN 26 ENTRY ASTO 27 ENTRY ATAN 28 ENTRY AVIEW 29 ENTRY AXEQ 30 ENTRY BEEP 31 ENTRY BST 32 ENTRY CAT 33 ENTRY CF 34 ENTRY CHS 35 ENTRY CLA 36 ENTRY CLDSP 37 ENTRY CLP 38 ENTRY CLREG 39 ENTRY CLSIG 40 ENTRY CLST 41 ENTRY CLX 42 ENTRY COPY 43 ENTRY COS 44 ENTRY D-R 45 ENTRY DEG 46 ENTRY DEL 47 ENTRY DELETE 48 ENTRY DSE 49 ENTRY END 50 ENTRY ENG 51 ENTRY ENTER^ 52 ENTRY E^X 53 ENTRY E^X-1 54 ENTRY FACT 55 ENTRY FC? 56 ENTRY FC?C 57 ENTRY FIX 58 ENTRY FRAC 59 ENTRY FS? 60 ENTRY FS?C 61 ENTRY GRAD 62 ENTRY GTO 63 ENTRY GTOL 64 ENTRY HMS+ 65 ENTRY HMS- 66 ENTRY HMS-H 67 ENTRY H-HMS 68 ENTRY INT 69 ENTRY ISG 70 ENTRY LASTX 71 ENTRY LBL 72 ENTRY LN 73 ENTRY LN1+X 74 ENTRY LOG 75 ENTRY MEAN 76 ENTRY MOD 77 ENTRY MODE 78 ENTRY OFF 79 ENTRY ONE/X 80 ENTRY P-R 81 ENTRY PACK 82 ENTRY PCT 83 ENTRY PCTCH 84 ENTRY PI 85 ENTRY PROMPT 86 ENTRY PSE 87 ENTRY R-D 88 ENTRY R-P 89 ENTRY R/S 90 ENTRY RAD 91 ENTRY RCL 92 ENTRY RDN 93 ENTRY RND 94 ENTRY RTN 95 ENTRY R^ 96 ENTRY SCI 97 ENTRY SF 98 ENTRY SHIFT 99 ENTRY SIGMA+ 100 ENTRY SIGMA- 101 ENTRY SIGN 102 ENTRY SIGREG 103 ENTRY SIN 104 ENTRY SIZE 105 ENTRY SQRT 106 ENTRY SST 107 ENTRY STAYON 108 ENTRY STDEV 109 ENTRY STO 110 ENTRY STO+ 111 ENTRY STO- 112 ENTRY STO* 113 ENTRY STO/ 114 ENTRY STOP 115 ENTRY TAN 116 ENTRY TONE 117 ENTRY VIEW 118 ENTRY X#0? 119 ENTRY X#Y? 120 ENTRY X<0? 121 ENTRY X<=0? 122 ENTRY X<=Y? 123 ENTRY X<> 124 ENTRY X<>Y 125 ENTRY X0? 129 ENTRY X>Y? 130 ENTRY XEQ 131 ENTRY XGOIND 132 ENTRY X^2 133 ENTRY Y^X 134 * * PKTTAB - PARSE KEY TYPE TABLE * MUST START AT 0 IN QUAD 4 (1000-@10000) * LOGICAL COLUMN 0 139 0 101 CON 65 A 140 1 106 CON 70 F 141 2 400 CON 256 SHIFT 142 3 0 CON 0 143 4 2 CON 2 - 144 5 1 CON 1 + 145 6 3 CON 3 * 146 7 4 CON 4 / * LOGICAL COLUMN 1 148 10 102 CON 66 B 149 11 107 CON 71 G 150 12 0 CON 0 151 13 0 CON 0 152 14 47 CON 39 7 153 15 44 CON 36 4 154 16 41 CON 33 1 155 17 40 CON 32 0 * LOGICAL COLUMN 2 157 20 103 CON 67 C 158 21 110 CON 72 H 159 22 0 CON 0 160 23 0 CON 0 161 24 50 CON 40 8 162 25 45 CON 37 5 163 26 42 CON 34 2 164 27 1000 CON 512 DP * LOGICAL COLUMN 3 166 30 104 CON 68 D 167 31 111 CON 73 I 168 32 0 CON 0 169 33 0 CON 0 170 34 51 CON 41 9 171 35 46 CON 38 6 172 36 43 CON 35 3 173 37 0 CON 0 * LOGICAL COLUMN 4 175 40 105 CON 69 E 176 41 100 CON 64 J 177 42 0 CON 0 178 43 17 CON 15 BACKARROW 179 44 200 CON 128 ALPHA 180 45 0 CON 0 181 46 0 CON 0 182 OFF KEY IS SPECIAL 183 47 230 CON @230 X 184 50 36 CON @36 ^ 185 51 31 CON @31 Y 186 52 Y^X 260 C=N 187 53 1 GSBLGX XY^X 187 54 0 188 55 543 GOTO NFRXY* ( 131) 189 56 253 CON @253 + 190 57 23 CON @23 S 191 60 15 CON @15 M 192 61 10 CON @10 H 193 62 HMS+ 260 C=N 194 63 1 GSBLGX XTOHRS 194 64 0 195 65 360 NC EX 196 66 270 C=REGN 2 197 67 1 GSBLGX XTOHRS 197 70 0 198 71 416 A=C W 199 72 260 C=N 200 73 1 GSBLGX AD2-10 200 74 0 201 75 210 S5= 1 202 76 1 GSBLGX XTOHRS 202 77 0 203 100 313 GOTO NFRXY* ( 131) 204 101 255 CON @255 - 205 102 23 CON @23 S 206 103 15 CON @15 M 207 104 10 CON @10 H 208 105 HMS- 260 C=N 209 106 1276 C=-C-1 S 210 107 360 CN EX 211 110 1523 GOTO HMS+ ( 62) 212 111 253 CON @253 + 213 112 + 260 C=N 214 113 143 GOTO ADD210 ( 127) 215 114 204 CON @204 D 216 115 17 CON @17 O 217 116 15 CON @15 M 218 117 MOD 260 C=N 219 120 1 GSBLGX MOD10 219 121 0 220 122 73 GOTO NFRXY* ( 131) 221 123 255 CON @255 - 222 124 - 260 C=N 223 125 1276 C=-C-1 S 224 126 0 NOP 225 127 ADD210 1 GSBLGX AD2-10 225 130 0 226 131 NFRXY* 1 GOLNGX NFRXY 226 132 2 227 133 252 CON @252 * 228 134 (*) 260 C=N 229 135 1 GSBLGX MP2-10 229 136 0 230 137 1723 GOTO NFRXY* ( 131) 231 140 245 CON @245 % 232 141 PCT 646 A=A-1 X 233 142 646 A=A-1 X 234 143 260 C=N 235 144 TIMES 1 GSBLGX MP2-10 235 145 0 236 146 1 GOLNGX NFRX 236 147 2 237 150 262 CON @262 2 238 151 36 CON @36 ^ 239 152 30 CON @30 X 240 153 X^2 260 C=N 241 154 416 A=C 242 155 1673 GOTO TIMES ( 144) 243 156 257 CON @257 / 244 157 / 260 C=N 245 160 1 GSBLGX DV2-10 245 161 0 246 162 1473 GOTO NFRXY* ( 131) 247 163 223 CON @223 S 248 164 2 CON @2 B 249 165 1 CON @1 A 250 166 ABS 260 C=N 251 167 136 C=0 S 252 170 1740 RTN 253 171 223 CON @223 S 254 172 17 CON @17 O 255 173 3 CON @3 C 256 174 1 CON @1 A 257 175 ACOS 1 GSBLGX TRGSET 257 176 0 258 177 1610 S0= 1 259 200 ASIN1 1410 S1= 1 260 201 ATAN1 1010 S2= 1 261 202 1 GOLNGX BRT100 261 203 2 262 204 0 CON @0 NO PROMPTING 263 205 AGTO 1204 S7= 0 264 206 XGAXFR 1 GOLONG XGA00 264 207 2 265 210 214 CON @214 L 266 211 3 CON @3 C 267 212 422 CON @422 R 268 213 1001 CON @1001 A 269 214 ARCL 1 GOLNGX XARCL 269 215 2 270 216 206 CON @206 F 271 217 10 CON @10 H 272 220 23 CON @23 S 273 221 1 CON @1 A 274 222 ASHF 1 GOLNGX XASHF 274 223 2 275 224 216 CON @216 N 276 225 11 CON @11 I 277 226 23 CON @23 S 278 227 1 CON @1 A 279 230 ASIN 1 GSBLGX TRGSET 279 231 0 280 232 1463 GOTO ASIN1 ( 200) 281 233 216 CON @216 N 282 234 23 CON @23 S 283 235 401 CON @401 A 284 236 ASN 1 GOLNGX XASN 284 237 2 285 240 217 CON @217 O 286 241 24 CON @24 T 287 242 423 CON @423 S 288 243 1001 CON @1001 A 289 244 ASTO 1 GOLNGX XASTO 289 245 2 290 246 216 CON @216 N 291 247 1 CON @1 A 292 250 24 CON @24 T 293 251 1 CON @1 A 294 252 ATAN 1 GSBLGX TRGSET 294 253 0 295 254 1253 GOTO ATAN1 ( 201) 296 255 227 CON @227 W 297 256 5 CON @5 E 298 257 11 CON @11 I 299 260 26 CON @26 V 300 261 1 CON @1 A 301 262 AVIEW 1 GOLNGX XAVIEW 301 263 2 302 264 0 CON @0 NO PROMPTING 303 265 AXEQ 1210 S7= 1 304 266 1203 GOTO XGAXFR ( 206) 305 267 220 CON @220 P 306 270 5 CON @5 E 307 271 5 CON @5 E 308 272 2 CON @2 B 309 273 BEEP 460 LDI 310 274 7 CON 7 311 275 1 GOLONG XBEEP 311 276 2 312 277 224 CON @224 T 313 300 23 CON @23 S 314 301 2 CON @2 B 315 302 BST 0 NOP XKD 316 303 1 GOLONG XBST 316 304 2 317 305 224 CON @224 T 318 306 1401 CON @1401 A 319 307 403 CON @403 C 320 310 CAT 1 GOLNGX XCAT 320 311 2 321 312 1206 CON @1206 F 322 313 1003 CON @1003 C 323 314 CF 1 GOLNGX XCF 323 315 2 324 316 201 CON @201 A 325 317 14 CON @14 L 326 320 3 CON @3 C 327 321 CLA 116 C=0 328 322 550 REGN=C 5 329 323 650 REGN=C 6 330 324 750 REGN=C 7 331 325 1050 REGN=C 8 332 326 NFRPUL 1740 RTN 333 327 217 CON @217 O 334 330 24 CON @24 T 335 331 1023 CON @1023 S 336 332 STO 630 C=M 337 333 1360 DATA=C 338 334 1740 RTN 339 335 204 CON @204 D 340 336 14 CON @14 L 341 337 3 CON @3 C 342 340 CLDSP 1 GOSUB DATOFF CLEAR MSGFLG 342 341 0 * DATOFF ALSO CLEARS DATAENTRY FLAG, BUT THERE'S NO HARM DONE. 344 342 1 GOLONG NWGOOS 344 343 2 * IN KEYBOARD MODE, PUTTING UP A NEW GOOSE ISN'T VERY USEFUL, * BUT SINCE THE DEFAULT DISPLAY LOGIC WRITES OVER IT, NO HARM * IS DONE. 348 344 220 CON @220 P 349 345 14 CON @14 L 350 346 403 CON @403 C 351 347 CLP 1 GOLONG CLRPGM 351 350 2 352 351 207 CON @207 G 353 352 22 CON @22 R 354 353 14 CON @14 L 355 354 3 CON @3 C 356 355 CLREG 410 S8= 1 357 356 1 GOLNGX CLR 357 357 2 358 360 316 CON @316 SIGMA 359 361 14 CON @14 L 360 362 3 CON @3 C 361 363 CLSIG 1 GOLNGX XCLSIG 361 364 2 362 365 224 CON @224 T 363 366 23 CON @23 S 364 367 14 CON @14 L 365 370 3 CON @3 C 366 371 CLST 116 C=0 367 372 50 REGN=C 0 368 373 150 REGN=C 1 369 374 250 REGN=C 2 370 375 53 GOTO XCLX1 ( 402) 371 376 230 CON @230 X 372 377 14 CON @14 L 373 400 3 CON @3 C 374 401 CLX 116 C=0 375 ENTRY XCLX1 USED BY SIGMA+ AND SIGMA- 376 402 XCLX1 350 REGN=C 3 STORE NEW X 377 403 1 GOLONG NFRSIG 377 404 2 378 405 231 CON @231 Y 379 406 20 CON @20 P 380 407 17 CON @17 O 381 410 403 CON @403 C 382 411 COPY 1 GOLNGX XCOPY 382 412 2 383 413 222 CON @222 R 384 414 55 CON @55 - 385 415 4 CON @4 D 386 416 D-R 260 C=N 387 417 1 GOLNGX DTOR 387 420 2 388 421 207 CON @207 G 389 422 5 CON @5 E 390 423 4 CON @4 D 391 424 DEG 1 GOLNGX XDEG 391 425 2 392 426 204 CON @204 D 393 427 1 CON @1 A 394 430 22 CON @22 R 395 431 7 CON @7 G 396 432 GRAD 1 GOLONG XGRAD 396 433 2 397 434 204 CON @204 D 398 435 1 CON @1 A 399 436 22 CON @22 R 400 437 RAD 1 GOLONG XRAD 400 440 2 401 441 214 CON @214 L 402 442 405 CON @405 E 403 443 404 CON @404 D 404 444 DEL 1 GOLNGX DELNNN 404 445 2 405 446 0 CON @0 NO PROMPTING 406 447 DELETE 0 NOP 407 450 1 GOLONG XDELET 407 451 2 408 452 205 CON @205 E 409 453 423 CON @423 S 410 454 1004 CON @1004 D 411 455 DSE 1 GOLNGX XDSE 411 456 2 412 457 204 CON @204 D 413 460 16 CON @16 N 414 461 5 CON @5 E 415 END 416 462 207 CON @207 G 417 463 1416 CON @1416 N 418 464 405 CON @405 E 419 465 ENG 510 S6= 1 420 466 1 GOLNGX XSCI 420 467 2 421 470 236 CON @236 ^ 422 471 22 CON @22 R 423 472 5 CON @5 E 424 473 24 CON @24 T 425 474 16 CON @16 N 426 475 5 CON @5 E 427 476 ENTER^ 1 GOSUB R^SUB 427 477 0 428 500 270 C=REGN 2 429 501 350 REGN=C 3 430 502 1 GOLONG NFRENT 430 503 2 431 504 230 CON @230 X 432 505 36 CON @36 ^ 433 506 5 CON @5 E 434 507 E^X 260 C=N 435 510 1 GOLNGX EXP10 435 511 2 436 512 226 CON @226 V 437 513 4 CON @4 D 438 514 1 CON @1 A 439 515 ADVNCE 1565 CON @1565 GOSUB PRT9 440 516 674 CON @674 441 517 1740 RTN 442 520 224 CON @224 T 443 521 3 CON @3 C 444 522 1 CON @1 A 445 523 6 CON @6 F 446 524 FACT 260 C=N 447 525 1 GOLNGX XFT100 447 526 2 448 527 277 CON @277 ? 449 530 1003 CON @1003 C 450 531 1006 CON @1006 F 451 532 FC? 256 AC EX 452 533 1256 C=-C-1 453 534 256 AC EX 454 535 453 GOTO FS? ( 602) 455 536 261 CON @261 1 456 537 55 CON @55 - 457 540 30 CON @30 X 458 541 36 CON @36 ^ 459 542 5 CON @5 E 460 543 E^X-1 110 S4= 1 461 544 260 C=N 462 545 1 GOLONG EXP10 462 546 2 463 547 203 CON @203 C 464 550 77 CON @77 ? 465 551 1003 CON @1003 C 466 552 1006 CON @1006 F 467 553 FC?C 1 GOSUB XCF 467 554 0 468 555 1553 GOTO FC? ( 532) 469 556 230 CON @230 X 470 557 1411 CON @1411 I 471 560 406 CON @406 F 472 561 FIX 1210 S7= 1 473 562 1 GOLNGX XSCI 473 563 2 474 564 224 CON @224 T 475 565 16 CON @16 N 476 566 11 CON @11 I 477 567 INT 210 S5= 1 478 570 43 GOTO FRAC ( 574) 479 571 203 CON @203 C 480 572 22 CON @22 R 481 573 6 CON @6 F 482 574 FRAC 260 C=N 483 575 1 GOLNGX INTFRC 483 576 2 484 577 277 CON @277 ? 485 600 1023 CON @1023 S 486 601 1006 CON @1006 F 487 602 FS? 1 GOLNGX XFS? 487 603 2 488 604 203 CON @203 C 489 605 77 CON @77 ? 490 606 1023 CON @1023 S 491 607 1006 CON @1006 F 492 610 FS?C 1 GOSUB XCF 492 611 0 493 612 1703 GOTO FS? ( 602) 494 613 0 CON @0 NO PROMPTING 495 614 GTOL 1 GOLONG GTONN 495 615 2 496 616 217 CON @217 O 497 617 1424 CON @1424 T 498 620 1407 CON @1407 G 499 GTO CAN'T BE FOLLOWED BY 0 500 621 222 CON @222 R 501 622 10 CON @10 H 502 623 HMS-H 260 C=N 503 624 1 GOLNGX XTOHRS 503 625 2 504 626 223 CON @223 S 505 627 15 CON @15 M 506 630 10 CON @10 H 507 631 H-HMS 210 S5= 1 508 632 1713 GOTO HMS-H ( 623) SAVE CODE HERE 509 633 207 CON @207 G 510 634 423 CON @423 S 511 635 1011 CON @1011 I 512 636 ISG 1604 S0= 0 513 637 1 GOLNGX XISG 513 640 2 514 641 214 CON @214 L 515 642 2 CON @2 B 516 643 1414 CON @1414 L 517 LBL CAN'T BE FOLLOWED BY 0 518 644 216 CON @216 N 519 645 14 CON @14 L 520 646 LN 260 C=N 521 647 1 GOLNGX LN10 521 650 2 522 651 207 CON @207 G 523 652 17 CON @17 O 524 653 14 CON @14 L 525 654 LOG 210 S5= 1 526 655 1713 GOTO LN ( 646) SAVE SPACE HERE 527 656 226 CON @226 V 528 657 5 CON @5 E 529 660 4 CON @4 D 530 661 23 CON @23 S 531 662 STDEV 1 GSBLGX SD 531 663 0 532 664 73 GOTO NFRNC* ( 673) 533 665 216 CON @216 N 534 666 1 CON @1 A 535 667 5 CON @5 E 536 670 15 CON @15 M 537 671 MEAN 1 GSBLGX XBAR 537 672 0 538 673 NFRNC* 1 GOLNGX NFRNC 538 674 2 539 675 220 CON @220 P 540 676 55 CON @55 - 541 677 22 CON @22 R 542 700 R-P 1 GSBLGX TRGSET 542 701 0 543 702 1 GSBLGX TOPOL 543 703 0 544 704 1673 GOTO NFRNC* ( 673) 545 705 206 CON @206 F 546 706 6 CON @6 F 547 707 17 CON @17 O 548 710 OFF 1340 DISOFF 549 711 460 LDI 550 712 11 CON 9 551 713 1 GOSUB ROMCHK 551 714 0 552 715 1 GOSUB MEMCHK 552 716 0 553 717 1 GOSUB RSTKB 553 720 0 554 721 1 GOLONG DRSY50 554 722 2 555 723 230 CON @230 X 556 724 57 CON @57 / 557 725 61 CON @61 1 558 726 ONE/X 260 C=N 559 727 1 GOLNGX 1/X10 559 730 2 560 731 222 CON @222 R 561 732 55 CON @55 - 562 733 20 CON @20 P 563 734 P-R 1 GSBLGX TRGSET 563 735 0 564 736 1410 S1= 1 565 737 1010 S2= 1 566 740 1 GSBLGX TOREC 566 741 0 567 742 1313 GOTO NFRNC* ( 673) 568 743 213 CON @213 K 569 744 3 CON @3 C 570 745 1 CON @1 A 571 746 20 CON @20 P 572 747 PACK 1 GOLONG XPACK 572 750 2 573 751 210 CON @210 H 574 752 3 CON @3 C 575 753 45 CON @45 % 576 754 PCTCH 276 AC EX S 577 755 1276 C=-C-1 S 578 756 276 AC EX S 579 757 260 C=N 580 760 1 GSBLGX AD2-10 580 761 0 581 762 546 A=A+1 X 582 763 546 A=A+1 X 583 764 270 C=REGN 2 584 765 1 GSBLGX DV1-10 584 766 0 585 767 1 GOLNGX NFRX 585 770 2 586 771 205 CON @205 E 587 772 23 CON @23 S 588 773 20 CON @20 P 589 774 PSE 1314 ?S13=1 RUNNING? 590 775 43 GONC PSE10 (1001) NO 591 776 1410 S1= 1 SET PAUSEFLAG 592 777 1 GOSUB STOST0 PUT SS0 BACK 592 1000 0 593 1001 PSE10 1 GOLONG PSESTP 593 1002 2 594 1003 224 CON @224 T 595 1004 20 CON @20 P 596 1005 15 CON @15 M 597 1006 17 CON @17 O 598 1007 22 CON @22 R 599 1010 20 CON @20 P 600 1011 PROMPT 1 GOLNGX XPRMPT 600 1012 2 601 1013 204 CON @204 D 602 1014 17 CON @55 - 603 1015 22 CON @22 R 604 1016 R-D 260 C=N 605 1017 1 GOLNGX RTOD 605 1020 2 606 1021 220 CON @220 P 607 1022 17 CON @17 O 608 1023 24 CON @24 T 609 1024 23 CON @23 S 610 1025 STOP 1 GOLONG STOPSB 610 1026 2 611 1027 0 CON @0 NO PROMPTING 612 1030 R/S 0 NOP XKD 613 1031 1 GOLNGX XR/S 613 1032 2 614 1033 230 CON @230 X 615 1034 53 CON @53 + 616 1035 61 CON @61 1 617 1036 16 CON @16 N 618 1037 14 CON @14 L 619 1040 LN1+X 260 C=N 620 1041 1 GOLONG XLN1+X 620 1042 2 621 1043 230 CON @230 X 622 1044 24 CON @24 T 623 1045 23 CON @23 S 624 1046 1 CON @1 A 625 1047 14 CON @14 L 626 1050 LASTX 470 C=REGN 4 627 1051 LXEX 356 CB EX 628 1052 43 GOTO RCL (1056) 629 1053 214 CON @214 L 630 1054 403 CON @403 C 631 1055 1022 CON @1022 R 632 1056 RCL 614 ?S11=1 633 1057 1 GSUBCX R^SUB 633 1060 1 634 1061 NPRCL 116 C=0 635 1062 1160 DADD=C 636 1063 356 CB EX 637 1064 350 REGN=C 3 638 1065 NFRPRL 1 GOLNGX NFRPR 638 1066 2 639 1067 223 CON @223 S 640 1070 10 CON @10 H 641 1071 3 CON @3 C 642 1072 CHS 260 C=N GET X 643 1073 1372 ? C#0 M 644 1074 33 GONC DONCHS (1077) X IS ZERO DO NOTHING 645 1075 1276 C=-C-1 S DO CHS 646 1076 350 REGN=C 3 647 1077 DONCHS 1663 GOTO NFRPRL (1065) 648 1100 211 CON @211 I 649 1101 20 CON @20 P 650 1102 PI 1240 SETDEC 651 1103 1 GSBLGX PI/2 651 1104 0 652 1105 756 C=C+C W 653 1106 1072 C=C+1 M 654 1107 106 C=0 X 655 1110 1413 GOTO LXEX (1051) 656 1111 276 CON @276 > 657 1112 474 CON @474 < 658 1113 1030 CON @1030 X 659 1114 X<> 630 C=M 660 1115 1360 DATA=C 661 1116 1433 GOTO NPRCL (1061) 662 1117 216 CON @216 N 663 1120 4 CON @4 D 664 1121 22 CON @22 R 665 1122 RDN 1 GOLNGX XRDN 665 1123 2 666 1124 204 CON @204 D 667 1125 16 CON @16 N 668 1126 22 CON @22 R 669 1127 RND 1 GOLNGX XRND 669 1130 2 670 1131 216 CON @216 N 671 1132 24 CON @24 T 672 1133 22 CON @22 R 673 1134 RTN 1 GOLNGX XRTN 673 1135 2 674 1136 236 CON @236 ^ 675 1137 22 CON @22 R 676 1140 R^ 1 GOLNGX XR^ 676 1141 2 677 1142 211 CON @211 I 678 1143 1403 CON @1403 C 679 1144 423 CON @423 S 680 1145 SCI 1 GOLNGX XSCI 680 1146 2 681 1147 1206 CON @1206 F 682 1150 1023 CON @1023 S 683 1151 SF 1 GOLNGX XSF 683 1152 2 684 1153 253 CON @253 + 685 1154 116 CON @116 SIGMA 686 1155 SIGMA+ 1 GOLNGX SIGMA 686 1156 2 687 1157 255 CON @255 - 688 1160 116 CON @116 SIGMA 689 1161 SIGMA- 210 S5= 1 690 1162 1733 GOTO SIGMA+ (1155) SAVE CODE HERE 691 1163 207 CON @207 G 692 1164 5 CON @5 E 693 1165 1022 CON @1022 R 694 1166 1116 CON @1116 SIGMA 695 1167 SIGREG 1 GOLNGX XSGREG 695 1170 2 696 1171 223 CON @223 S 697 1172 17 CON @17 O 698 1173 3 CON @3 C 699 1174 COS 1 GSBLGX TRGSET 699 1175 0 700 1176 153 GOTO COS1 (1213) 701 1177 216 CON @216 N 702 1200 1 CON @1 A 703 1201 24 CON @24 T 704 1202 TAN 1 GSBLGX TRGSET 704 1203 0 705 1204 103 GOTO XTRIG (1214) 706 1205 216 CON @216 N 707 1206 11 CON @11 I 708 1207 23 CON @23 S 709 1210 SIN 1 GSBLGX TRGSET 709 1211 0 710 1212 1610 S0= 1 711 1213 COS1 1410 S1= 1 712 1214 XTRIG 1 GOLNGX TRG100 712 1215 2 713 1216 205 CON @205 E 714 1217 32 CON @32 Z 715 1220 411 CON @411 I 716 1221 423 CON @423 S 717 1222 SIZE 1 GOLNGX XSIZE 717 1223 2 718 1224 224 CON @224 T 719 1225 22 CON @22 R 720 1226 21 CON @21 Q 721 1227 23 CON @23 S 722 1230 SQRT 260 C=N 723 1231 1 GOLNGX SQR10 723 1232 2 724 1233 224 CON @224 T 725 1234 23 CON @23 S 726 1235 23 CON @23 S 727 1236 SST 0 NOP XKD 728 1237 1 GOLNGX XSST 728 1240 2 729 1241 216 CON @216 N 730 1242 17 CON @17 O 731 1243 STAYON 1 GOLONG XSTYON 731 1244 2 732 1245 252 CON @252 * 733 1246 424 CON @424 T 734 1247 1023 CON @1023 S 735 1250 STO* 1 GSBLGX SEPXY 735 1251 0 736 1252 1 GSBLGX MP2-10 736 1253 0 737 1254 103 GOTO NFRST (1264) 738 1255 253 CON @253 + 739 1256 424 CON @424 T 740 1257 1023 CON @1023 S 741 1260 STO+ 1 GSBLGX SEPXY 741 1261 0 742 1262 1 GSBLGX AD2-10 742 1263 0 743 1264 NFRST 1 GOLONG NFRST+ 743 1265 2 744 1266 255 CON @255 - 745 1267 424 CON @424 T 746 1270 1023 CON @1023 S 747 1271 STO- 630 C=M 748 1272 1240 SETDEC 749 1273 1276 C=-C-1 S 750 1274 530 M=C 751 1275 1633 GOTO STO+ (1260) 752 1276 257 CON @257 / 753 1277 424 CON @424 T 754 1300 1023 CON @1023 S 755 1301 STO/ 1 GSBLGX SEPXY 755 1302 0 756 1303 1 GSBLGX DV2-10 756 1304 0 757 1305 1573 GOTO NFRST (1264) 758 1306 230 CON @230 X 759 1307 36 CON @36 ^ 760 1310 60 CON @60 0 761 1311 61 CON @61 1 762 1312 (10)^X 1 GOLONG 10TOX 762 1313 2 763 1314 205 CON @205 E 764 1315 16 CON @16 N 765 1316 1417 CON @1417 O 766 1317 424 CON @424 T 767 1320 TONE 1 GOLNGX XTONE 767 1321 2 768 1322 227 CON @227 W 769 1323 5 CON @5 E 770 1324 411 CON @411 I 771 1325 1026 CON @1026 V 772 1326 VIEW 1 GOLNGX XVIEW 772 1327 2 773 1330 277 CON @277 ? 774 1331 60 CON @60 0 775 1332 115 CON @115 # 776 1333 30 CON @30 X 777 1334 X#0? 1 GOLNGX XX#0? 777 1335 2 778 1336 277 CON @277 ? 779 1337 31 CON @31 Y 780 1340 115 CON @115 # 781 1341 30 CON @30 X 782 1342 X#Y? 1 GOLNGX XX#Y? 782 1343 2 783 1344 277 CON @277 ? 784 1345 60 CON @60 0 785 1346 74 CON @74 < 786 1347 30 CON @30 X 787 1350 X<0? 1 GOLNGX XX<0? 787 1351 2 788 1352 277 CON @277 ? 789 1353 60 CON @60 0 790 1354 75 CON @75 = 791 1355 74 CON @74 < 792 1356 30 CON @30 X 793 1357 X<=0? 1 GOLONG XX<=0A 793 1360 2 794 1361 277 CON @277 ? 795 1362 31 CON @31 Y 796 1363 75 CON @75 = 797 1364 74 CON @74 < 798 1365 30 CON @30 X 799 1366 X<=Y? 1 GOLNGX XX<=Y? 799 1367 2 800 1370 231 CON @231 Y 801 1371 76 CON @76 > 802 1372 74 CON @74 < 803 1373 30 CON @30 X 804 1374 X<>Y 370 C=REGN 3 805 1375 256 AC EX 806 1376 270 C=REGN 2 807 1377 350 REGN=C 3 808 1400 256 AC EX 809 1401 250 REGN=C 2 810 1402 1 GOLNGX NFRPR 810 1403 2 811 1404 277 CON @277 ? 812 1405 31 CON @31 Y 813 1406 74 CON @74 < 814 1407 30 CON @30 X 815 1410 X 829 1431 30 CON @30 X 830 1432 X>0? 1 GOLNGX XX>0? 830 1433 2 831 1434 277 CON @277 ? 832 1435 31 CON @31 Y 833 1436 76 CON @76 > 834 1437 30 CON @30 X 835 1440 X>Y? 1 GOLNGX XX>Y? 835 1441 2 836 1442 0 CON @0 NO PROMPTING 837 1443 XGOIND 1 GOLONG XGI 837 1444 2 838 1445 221 CON @221 Q 839 1446 405 CON @405 E 840 1447 1430 CON @1430 X 841 XEQ CAN'T BE FOLLOWED BY 0 842 1450 203 CON @203 C 843 1451 5 CON @5 E 844 1452 4 CON @4 D 845 1453 -DEC 110 S4= 1 846 1454 43 GOTO -OCT (1460) 847 1455 224 CON @224 T 848 1456 3 CON @3 C 849 1457 17 CON @17 O 850 1460 -OCT 260 C=N 851 1461 1 GOLNGX TOOCT 851 1462 2 852 1463 216 CON @216 N 853 1464 7 CON @7 G 854 1465 11 CON @11 I 855 1466 23 CON @23 S 856 1467 SIGN 1 GOLONG XSIGN 856 1470 2 * * 859 1471 216 CON @216 N 860 1472 17 CON @17 O 861 1473 1 CON @1 A 862 1474 AON 1210 S7= 1 SET ALPHAMODE 863 1475 AON10 1 GOSUB STOST0 863 1476 0 864 1477 1 GOLONG ANNOUT 864 1500 2 * * 867 1501 206 CON @206 F 868 1502 6 CON @6 F 869 1503 17 CON @17 O 870 1504 1 CON @1 A 871 1505 AOFF 1204 S7= 0 CLEAR ALPHAMODE 872 1506 1673 GOTO AON10 (1475) * * 875 1507 0 CON @0 NO PROMPTING 876 1510 SHIFT 0 NOP XKD 877 1511 1 GOSUB TGSHF1 TOGGLE SHIFT FLAG 877 1512 0 878 1513 253 GOTO USCOM1 (1540) * * 881 1514 0 CON @0 NO PROMPTING 882 1515 MODE 0 NOP XKD 883 1516 1040 C=KEYS * 885 ENTRY MODE1 FOR WAND ALPHA,PRGM,USER * ENTRY POINT ADD FOR WAND ON 3-13-79 * 888 MODE1 889 1517 34 PT= 3 890 1520 742 C=C+C PT 891 1521 742 C=C+C PT 892 1522 742 C=C+C PT 893 1523 203 GONC ALFPRG (1543) 894 USER KEY 895 1524 1670 C=REGN 14 896 1525 574 RCR 6 897 1526 1730 CST EX PUT UP SS3 898 1527 114 ?S4=1 USERMODE? 899 1530 37 GOC USEROF (1533) YES 900 1531 110 S4= 1 SET USERMODE 901 1532 23 GOTO USERC (1534) 902 1533 USEROF 104 S4= 0 CLEAR USERMODE 903 1534 USERC 1730 CST EX 904 1535 474 RCR 8 905 1536 USCOM 1630 C=ST MERGE SS0 WITH OTHER SETS 906 1537 1650 REGN=C 14 907 1540 USCOM1 1104 S9= 0 KEYBOARD NOT RESET YET 908 1541 1 GOLONG DRSY51 REFRESH ANNUNCIATORS ONLY 908 1542 2 * * 911 1543 ALFPRG 1515 CON @1515 GOSUB PRT14 912 1544 674 CON @674 913 ENTRY PR14RT FOR PRINTER 914 PR14RT 915 1545 1342 ? C#0 PT PRGM KEY? 916 1546 177 GOC PRGM (1565) YES 917 1547 1 GOSUB RSTMS1 ALPHA KEY 917 1550 0 918 1551 1214 ?S7=1 ALPHAMODE? 919 1552 73 GONC ALPHON (1561) NO 920 1553 1204 S7= 0 CLEAR ALPHAMODE 921 1554 APCOM 1630 C=ST MERGE SS0 W/ OTHER SETS 922 1555 1650 REGN=C 14 PUT STATUS SETS BACK 923 1556 D05XFR 1104 S9= 0 KEYBOARD NOT RESET YET 924 1557 1 GOLONG DRSY05 REFRESH MAIN DISPLAY 924 1560 2 925 1561 ALPHON 1210 S7= 1 SET ALPHAMODE 926 1562 14 ?S3=1 PROGRAM MODE? 927 1563 1713 GONC APCOM (1554) NO 928 1564 1523 GOTO USCOM (1536) YES * * 931 1565 PRGM 1 GOSUB RSTMS1 931 1566 0 932 1567 1404 S1= 0 CLEAR PAUSEFLAG 933 1570 1204 S7= 0 CLEAR ALPHAMODE 934 1571 14 ?S3=1 PRGMMODE? 935 1572 37 GOC PRGMOF (1575) YES 936 1573 10 S3= 1 NO. SET PRGMMODE 937 1574 1603 GOTO APCOM (1554) 938 1575 PRGMOF 4 S3= 0 CLEAR PRGMMODE 939 1576 1630 C=ST 940 1577 1650 REGN=C 14 PUT STATUS SETS BACK 941 1600 1 GOSUB DECMPL DECOMPILE 941 1601 0 942 1602 1543 GOTO D05XFR (1556) 943 944 945 ****************************************************** 947 1603 CAT##3 116 C=0 MOVE # TO A MANT 948 1604 346 BC EX X 949 1605 674 RCR 11 950 1606 256 AC EX 951 1607 1 GOSUB ALPDEF SEL CORRECT DEF 951 1610 0 952 1611 0 NOP 953 1612 112 DEF + ( 112) 954 1613 124 DEF - ( 124) 955 1614 134 DEF (*) ( 134) 956 1615 157 DEF / ( 157) 957 1616 726 DEF ONE/X ( 726) 958 1617 1312 DEF (10)^X (1312) 959 1620 166 DEF ABS ( 166) 960 1621 175 DEF ACOS ( 175) 961 1622 515 DEF ADVNCE ( 515) 962 1623 1505 DEF AOFF (1505) 963 1624 1474 DEF AON (1474) 964 1625 214 DEF ARCL ( 214) 965 1626 222 DEF ASHF ( 222) 966 1627 230 DEF ASIN ( 230) 967 1630 236 DEF ASN ( 236) 968 1631 244 DEF ASTO ( 244) 969 1632 252 DEF ATAN ( 252) 970 1633 262 DEF AVIEW ( 262) 971 1634 273 DEF BEEP ( 273) 972 1635 302 DEF BST ( 302) 973 1636 310 DEF CAT ( 310) 974 1637 314 DEF CF ( 314) 975 1640 1072 DEF CHS (1072) 976 1641 321 DEF CLA ( 321) 977 1642 340 DEF CLDSP ( 340) 978 1643 347 DEF CLP ( 347) 979 1644 355 DEF CLREG ( 355) 980 1645 363 DEF CLSIG ( 363) 981 1646 371 DEF CLST ( 371) 982 1647 401 DEF CLX ( 401) 983 1650 411 DEF COPY ( 411) 984 1651 1174 DEF COS (1174) 985 1652 416 DEF D-R ( 416) 986 1653 1453 DEF -DEG (1453) 987 1654 424 DEF DEG ( 424) 988 1655 444 DEF DEL ( 444) 989 1656 455 DEF DSE ( 455) 990 1657 462 DEF END ( 462) 991 1660 465 DEF ENG ( 465) 992 1661 476 DEF ENTER^ ( 476) 993 1662 507 DEF E^X ( 507) 994 1663 543 DEF E^X-1 ( 543) 995 1664 524 DEF FACT ( 524) 996 1665 532 DEF FC? ( 532) 997 1666 553 DEF FC?C ( 553) 998 1667 561 DEF FIX ( 561) 999 1670 574 DEF FRAC ( 574) 1000 1671 602 DEF FS? ( 602) 1001 1672 610 DEF FS?C ( 610) 1002 1673 432 DEF GRAD ( 432) 1003 1674 621 DEF GTO ( 621) 1004 1675 631 DEF H-HMS ( 631) 1005 1676 62 DEF HMS+ ( 62) 1006 1677 105 DEF HMS- ( 105) 1007 1700 623 DEF HMS-H ( 623) 1008 1701 567 DEF INT ( 567) 1009 1702 636 DEF ISG ( 636) 1010 1703 1050 DEF LASTX (1050) 1011 1704 644 DEF LBL ( 644) 1012 1705 646 DEF LN ( 646) 1013 1706 1040 DEF LN1+X (1040) 1014 1707 654 DEF LOG ( 654) 1015 1710 671 DEF MEAN ( 671) 1016 1711 117 DEF MOD ( 117) 1017 1712 1460 DEF -OCT (1460) 1018 1713 710 DEF OFF ( 710) 1019 1714 1243 DEF STAYON (1243) 1020 1715 734 DEF P-R ( 734) 1021 1716 747 DEF PACK ( 747) 1022 1717 141 DEF PCT ( 141) 1023 1720 754 DEF PCTCH ( 754) 1024 1721 1102 DEF PI (1102) 1025 1722 1011 DEF PROMPT (1011) 1026 1723 774 DEF PSE ( 774) 1027 1724 1140 DEF R^ (1140) 1028 1725 1016 DEF R-D (1016) 1029 1726 700 DEF R-P ( 700) 1030 1727 437 DEF RAD ( 437) 1031 1730 1056 DEF RCL (1056) 1032 1731 1122 DEF RDN (1122) 1033 1732 1127 DEF RND (1127) 1034 1733 1134 DEF RTN (1134) 1035 1734 662 DEF STDEV ( 662) 1036 1735 1145 DEF SCI (1145) 1037 1736 1151 DEF SF (1151) 1038 1737 1155 DEF SIGMA+ (1155) 1039 1740 1161 DEF SIGMA- (1161) 1040 1741 1167 DEF SIGREG (1167) 1041 1742 1210 DEF SIN (1210) 1042 1743 1467 DEF SIGN (1467) 1043 1744 1222 DEF SIZE (1222) 1044 1745 1230 DEF SQRT (1230) 1045 1746 1236 DEF SST (1236) 1046 1747 1260 DEF STO+ (1260) 1047 1750 1271 DEF STO- (1271) 1048 1751 1250 DEF STO* (1250) 1049 1752 1301 DEF STO/ (1301) 1050 1753 332 DEF STO ( 332) 1051 1754 1025 DEF STOP (1025) 1052 1755 1202 DEF TAN (1202) 1053 1756 1320 DEF TONE (1320) 1054 1757 1326 DEF VIEW (1326) 1055 1760 1416 DEF X=0? (1416) 1056 1761 1334 DEF X#0? (1334) 1057 1762 1350 DEF X<0? (1350) 1058 1763 1357 DEF X<=0? (1357) 1059 1764 1432 DEF X>0? (1432) 1060 1765 1424 DEF X=Y? (1424) 1061 1766 1342 DEF X#Y? (1342) 1062 1767 1410 DEF XY? (1440) 1065 1772 1114 DEF X<> (1114) 1066 1773 1374 DEF X<>Y (1374) 1067 1774 1450 DEF XEQ (1450) 1068 1775 153 DEF X^2 ( 153) 1069 1776 52 DEF Y^X ( 52) 1070 1777 0 CON @0 1071 1072 1073 * * * ************************************************************* * NOTE: NO EXECUTION POINT MAY BE LOCATED AFTER @1736 IN THIS * QUAD. THE SEARCH ALGORITHM USES ENTRIES > @1736 IN THE * MAIN FUNCTION TABLE AS DELIMITERS OF HOLES IN THE TABLE. ************************************************************* 1082 UNLIST ERRORS : 0 SYMBOL TABLE (*) 134 - 1614 (10)^X 1312 - 1617 + 112 - 1612 - 124 - 1613 -DEC 1453 - 1653 -OCT 1460 - 1712 1454 / 157 - 1615 ABS 166 - 1620 ACOS 175 - 1621 ADD210 127 - 113 ADVNCE 515 - 1622 AGTO 205 - ALFPRG 1543 - 1523 ALPHON 1561 - 1552 AOFF 1505 - 1623 AON 1474 - 1624 AON10 1475 - 1506 APCOM 1554 - 1574 1563 ARCL 214 - 1625 ASHF 222 - 1626 ASIN 230 - 1627 ASIN1 200 - 232 ASN 236 - 1630 ASTO 244 - 1631 ATAN 252 - 1632 ATAN1 201 - 254 AVIEW 262 - 1633 AXEQ 265 - BEEP 273 - 1634 BST 302 - 1635 CAT 310 - 1636 CAT##3 1603 - CF 314 - 1637 CHS 1072 - 1640 CLA 321 - 1641 CLDSP 340 - 1642 CLP 347 - 1643 CLREG 355 - 1644 CLSIG 363 - 1645 CLST 371 - 1646 CLX 401 - 1647 COPY 411 - 1650 COS 1174 - 1651 COS1 1213 - 1176 D-R 416 - 1652 D05XFR 1556 - 1602 DEG 424 - 1654 DEL 444 - 1655 DELETE 447 - DONCHS 1077 - 1074 DSE 455 - 1656 END 462 - 1657 ENG 465 - 1660 ENTER^ 476 - 1661 E^X 507 - 1662 E^X-1 543 - 1663 FACT 524 - 1664 FC? 532 - 1665 555 FC?C 553 - 1666 FIX 561 - 1667 FRAC 574 - 1670 570 FS? 602 - 1671 612 535 FS?C 610 - 1672 GRAD 432 - 1673 GTO 621 - 1674 GTOL 614 - H-HMS 631 - 1675 HMS+ 62 - 1676 110 HMS- 105 - 1677 HMS-H 623 - 1700 632 INT 567 - 1701 ISG 636 - 1702 LASTX 1050 - 1703 LBL 644 - 1704 LN 646 - 1705 655 LN1+X 1040 - 1706 LOG 654 - 1707 LXEX 1051 - 1110 MEAN 671 - 1710 MOD 117 - 1711 MODE 1515 - MODE1 1517 - NFRNC* 673 - 742 704 664 NFRPRL 1065 - 1077 NFRPUL 326 - NFRST 1264 - 1305 1254 NFRXY* 131 - 162 137 122 100 55 NPRCL 1061 - 1116 OFF 710 - 1713 ONE/X 726 - 1616 P-R 734 - 1715 PACK 747 - 1716 PCT 141 - 1717 PCTCH 754 - 1720 PI 1102 - 1721 PR14RT 1545 - PRGM 1565 - 1546 PRGMOF 1575 - 1572 PROMPT 1011 - 1722 PSE 774 - 1723 PSE10 1001 - 775 R-D 1016 - 1725 R-P 700 - 1726 R/S 1030 - RAD 437 - 1727 RCL 1056 - 1730 1052 RDN 1122 - 1731 RND 1127 - 1732 RTN 1134 - 1733 R^ 1140 - 1724 SCI 1145 - 1735 SF 1151 - 1736 SHIFT 1510 - SIGMA+ 1155 - 1737 1162 SIGMA- 1161 - 1740 SIGN 1467 - 1743 SIGREG 1167 - 1741 SIN 1210 - 1742 SIZE 1222 - 1744 SQRT 1230 - 1745 SST 1236 - 1746 STAYON 1243 - 1714 STDEV 662 - 1734 STO 332 - 1753 STO* 1250 - 1751 STO+ 1260 - 1747 1275 STO- 1271 - 1750 STO/ 1301 - 1752 STOP 1025 - 1754 TAN 1202 - 1755 TIMES 144 - 155 TONE 1320 - 1756 USCOM 1536 - 1564 USCOM1 1540 - 1513 USERC 1534 - 1532 USEROF 1533 - 1530 VIEW 1326 - 1757 X#0? 1334 - 1761 X#Y? 1342 - 1766 X<0? 1350 - 1762 X<=0? 1357 - 1763 X<=Y? 1366 - 1770 X<> 1114 - 1772 X<>Y 1374 - 1773 X0? 1432 - 1764 X>Y? 1440 - 1771 XCLX1 402 - 375 XEQ 1450 - 1774 XGAXFR 206 - 266 XGOIND 1443 - XTRIG 1214 - 1204 X^2 153 - 1775 Y^X 52 - 1776 ENTRY TABLE (*) 134 - (10)^X 1312 - + 112 - - 124 - -DEC 1453 - -OCT 1460 - / 157 - ABS 166 - ACOS 175 - ADVNCE 515 - AGTO 205 - AOFF 1505 - AON 1474 - ARCL 214 - ASHF 222 - ASIN 230 - ASN 236 - ASTO 244 - ATAN 252 - AVIEW 262 - AXEQ 265 - BEEP 273 - BST 302 - CAT 310 - CAT##3 1603 - CF 314 - CHS 1072 - CLA 321 - CLDSP 340 - CLP 347 - CLREG 355 - CLSIG 363 - CLST 371 - CLX 401 - COPY 411 - COS 1174 - D-R 416 - DEG 424 - DEL 444 - DELETE 447 - DSE 455 - END 462 - ENG 465 - ENTER^ 476 - E^X 507 - E^X-1 543 - FACT 524 - FC? 532 - FC?C 553 - FIX 561 - FRAC 574 - FS? 602 - FS?C 610 - GRAD 432 - GTO 621 - GTOL 614 - H-HMS 631 - HMS+ 62 - HMS- 105 - HMS-H 623 - INT 567 - ISG 636 - LASTX 1050 - LBL 644 - LN 646 - LN1+X 1040 - LOG 654 - MEAN 671 - MOD 117 - MODE 1515 - MODE1 1517 - OFF 710 - ONE/X 726 - P-R 734 - PACK 747 - PCT 141 - PCTCH 754 - PI 1102 - PR14RT 1545 - PROMPT 1011 - PSE 774 - R-D 1016 - R-P 700 - R/S 1030 - RAD 437 - RCL 1056 - RDN 1122 - RND 1127 - RTN 1134 - R^ 1140 - SCI 1145 - SF 1151 - SHIFT 1510 - SIGMA+ 1155 - SIGMA- 1161 - SIGN 1467 - SIGREG 1167 - SIN 1210 - SIZE 1222 - SQRT 1230 - SST 1236 - STAYON 1243 - STDEV 662 - STO 332 - STO* 1250 - STO+ 1260 - STO- 1271 - STO/ 1301 - STOP 1025 - TAN 1202 - TONE 1320 - VIEW 1326 - X#0? 1334 - X#Y? 1342 - X<0? 1350 - X<=0? 1357 - X<=Y? 1366 - X<> 1114 - X<>Y 1374 - X0? 1432 - X>Y? 1440 - XCLX1 402 - XEQ 1450 - XGOIND 1443 - X^2 153 - Y^X 52 - EXTERNAL REFERENCES 1/X10 727 1/X10 730 10TOX 1312 10TOX 1313 AD2-10 73 127 760 1262 AD2-10 74 130 761 1263 ALPDEF 1607 ALPDEF 1610 ANNOUT 1477 ANNOUT 1500 BRT100 202 BRT100 203 CLR 356 CLR 357 CLRPGM 347 CLRPGM 350 DATOFF 340 DATOFF 341 DECMPL 1600 DECMPL 1601 DELNNN 444 DELNNN 445 DRSY05 1557 DRSY05 1560 DRSY50 721 DRSY50 722 DRSY51 1541 DRSY51 1542 DTOR 417 DTOR 420 DV1-10 765 DV1-10 766 DV2-10 160 1303 DV2-10 161 1304 EXP10 510 545 EXP10 511 546 GTONN 614 GTONN 615 INTFRC 575 INTFRC 576 LN10 647 LN10 650 MEMCHK 715 MEMCHK 716 MOD10 120 MOD10 121 MP2-10 135 144 1252 MP2-10 136 145 1253 NFRENT 502 NFRENT 503 NFRNC 673 NFRNC 674 NFRPR 1065 1402 NFRPR 1066 1403 NFRSIG 403 NFRSIG 404 NFRST+ 1264 NFRST+ 1265 NFRX 146 767 NFRX 147 770 NFRXY 131 NFRXY 132 NWGOOS 342 NWGOOS 343 PI/2 1103 PI/2 1104 PSESTP 1001 PSESTP 1002 ROMCHK 713 ROMCHK 714 RSTKB 717 RSTKB 720 RSTMS1 1547 1565 RSTMS1 1550 1566 RTOD 1017 RTOD 1020 R^SUB 476 1057 R^SUB 477 1060 SD 662 SD 663 SEPXY 1250 1260 1301 SEPXY 1251 1261 1302 SIGMA 1155 SIGMA 1156 SQR10 1231 SQR10 1232 STOPSB 1025 STOPSB 1026 STOST0 777 1475 STOST0 1000 1476 TGSHF1 1511 TGSHF1 1512 TOOCT 1461 TOOCT 1462 TOPOL 702 TOPOL 703 TOREC 740 TOREC 741 TRG100 1214 TRG100 1215 TRGSET 175 230 252 700 734 1174 1202 1210 TRGSET 176 231 253 701 735 1175 1203 1211 XARCL 214 XARCL 215 XASHF 222 XASHF 223 XASN 236 XASN 237 XASTO 244 XASTO 245 XAVIEW 262 XAVIEW 263 XBAR 671 XBAR 672 XBEEP 275 XBEEP 276 XBST 303 XBST 304 XCAT 310 XCAT 311 XCF 314 553 610 XCF 315 554 611 XCLSIG 363 XCLSIG 364 XCOPY 411 XCOPY 412 XDEG 424 XDEG 425 XDELET 450 XDELET 451 XDSE 455 XDSE 456 XFS? 602 XFS? 603 XFT100 525 XFT100 526 XGA00 206 XGA00 207 XGI 1443 XGI 1444 XGRAD 432 XGRAD 433 XISG 637 XISG 640 XLN1+X 1041 XLN1+X 1042 XPACK 747 XPACK 750 XPRMPT 1011 XPRMPT 1012 XR/S 1031 XR/S 1032 XRAD 437 XRAD 440 XRDN 1122 XRDN 1123 XRND 1127 XRND 1130 XRTN 1134 XRTN 1135 XR^ 1140 XR^ 1141 XSCI 466 562 1145 XSCI 467 563 1146 XSF 1151 XSF 1152 XSGREG 1167 XSGREG 1170 XSIGN 1467 XSIGN 1470 XSIZE 1222 XSIZE 1223 XSST 1237 XSST 1240 XSTYON 1243 XSTYON 1244 XTOHRS 63 67 76 624 XTOHRS 64 70 77 625 XTONE 1320 XTONE 1321 XVIEW 1326 XVIEW 1327 XX#0? 1334 XX#0? 1335 XX#Y? 1342 XX#Y? 1343 XX<0? 1350 XX<0? 1351 XX<=0A 1357 XX<=0A 1360 XX<=Y? 1366 XX<=Y? 1367 XX0? 1432 XX>0? 1433 XX>Y? 1440 XX>Y? 1441 XY^X 53 XY^X 54 End of VASM assembly VASM ROM ASSEMBLY REV. 6/81A OPTIONS: L C S * HP41C MAINFRAME MICROCODE ADDRESSES @12000-13777 * 4 FILE CN5B 5 ENTRY FCNTBL 6 ENTRY ERRAD 7 ENTRY PCKDUR 8 ENTRY STFLGS SET MSGFLG & DATAENTRY FLAG 9 ENTRY XSTYON 10 ENTRY FIND#1 11 ENTRY CLR 12 ENTRY FNDEND 13 ENTRY CHKADR 14 ENTRY LOAD3 15 ENTRY XASHF 16 ENTRY XBEEP 17 ENTRY XCLSIG 18 ENTRY XRAD 19 ENTRY XGRAD 20 ENTRY DEGDO 21 ENTRY XDEG 22 ENTRY XTONE 23 ENTRY TONE7 24 ENTRY TONEB 25 ENTRY GETLIN 26 ENTRY FLGANN 27 ENTRY XSCI 28 ENTRY XARCL 29 ENTRY XASTO 30 ENTRY XDSE 31 ENTRY XISG 32 ENTRY XSIZE 33 ENTRY XSGREG 34 ENTRY XR^ 35 ENTRY XRDN 36 ENTRY RDNSUB 37 ENTRY R^SUB 38 ENTRY XX=0? 39 ENTRY XX#0? 40 ENTRY XX<0? 41 ENTRY XX>0? 42 ENTRY XX<=0? 43 ENTRY XX<=0A 44 ENTRY XX=Y? 45 ENTRY XX#Y? 46 ENTRY XX>Y? 47 ENTRY XXY? 144 106 0 XDEF X<=Y? 145 107 0 XDEF SIGMA+ 146 110 0 XDEF SIGMA- 147 111 0 XDEF HMS+ 148 112 0 XDEF HMS- 149 113 0 XDEF MOD 150 114 0 XDEF PCT 151 115 0 XDEF PCTCH 152 116 0 XDEF P-R 153 117 0 XDEF R-P 154 120 0 XDEF LN ROW 5 155 121 0 XDEF X^2 156 122 0 XDEF SQRT 157 123 0 XDEF Y^X 158 124 0 XDEF CHS 159 125 0 XDEF E^X 160 126 0 XDEF LOG 161 127 0 XDEF (10)^X 162 130 0 XDEF E^X-1 163 131 0 XDEF SIN 164 132 0 XDEF COS 165 133 0 XDEF TAN 166 134 0 XDEF ASIN 167 135 0 XDEF ACOS 168 136 0 XDEF ATAN 169 137 0 XDEF -DEC 170 140 0 XDEF ONE/X ROW 6 171 141 0 XDEF ABS 172 142 0 XDEF FACT 173 143 0 XDEF X#0? 174 144 0 XDEF X>0? 175 145 0 XDEF LN1+X 176 146 0 XDEF X<0? 177 147 0 XDEF X=0? 178 150 0 XDEF INT 179 151 0 XDEF FRAC 180 152 0 XDEF D-R 181 153 0 XDEF R-D 182 154 0 XDEF H-HMS 183 155 0 XDEF HMS-H 184 156 0 XDEF RND 185 157 0 XDEF -OCT 186 160 0 XDEF CLSIG ROW 7 187 161 0 XDEF X<>Y 188 162 0 XDEF PI 189 163 0 XDEF CLST 190 164 0 XDEF R^ 191 165 0 XDEF RDN 192 166 0 XDEF LASTX 193 167 0 XDEF CLX 194 170 0 XDEF X=Y? 195 171 0 XDEF X#Y? 196 172 0 XDEF SIGN 197 173 0 XDEF X<=0? 198 174 0 XDEF MEAN 199 175 0 XDEF STDEV 200 176 0 XDEF AVIEW 201 177 0 XDEF CLDSP 202 200 0 XDEF DEG ROW 8 203 201 0 XDEF RAD 204 202 0 XDEF GRAD 205 203 0 XDEF ENTER^ 206 204 0 XDEF STOP 207 205 0 XDEF RTN 208 206 0 XDEF BEEP 209 207 0 XDEF CLA 210 210 0 XDEF ASHF 211 211 0 XDEF PSE 212 212 0 XDEF CLREG 213 213 0 XDEF AOFF 214 214 0 XDEF AON 215 215 0 XDEF OFF 216 216 0 XDEF PROMPT 217 217 0 XDEF ADVNCE 218 220 0 XDEF RCL ROW 9 219 221 0 XDEF STO 220 222 0 XDEF STO+ 221 223 0 XDEF STO- 222 224 0 XDEF STO* 223 225 0 XDEF STO/ 224 226 0 XDEF ISG 225 227 0 XDEF DSE 226 230 0 XDEF VIEW 227 231 0 XDEF SIGREG 228 232 0 XDEF ASTO 229 233 0 XDEF ARCL 230 234 0 XDEF FIX 231 235 0 XDEF SCI 232 236 0 XDEF ENG 233 237 0 XDEF TONE 234 240 1747 CON @1747 XROM (8) 235 ENTRY TSTMAP * TSTMAP - TEST BIT MAP *- A SUBROUTINE USED TO ELIMINATE DUPLICATE CODE. *- TEST BIT MAP FOR A SPECIFIED KEYCODE AND CLEAR *- ITS CORRESPONDING BIT IF SET. *- IN: A[1:0]= LOGICAL KEYCODE + 1 *- CHIP 0 SELECTED *- OUT: CHIP 0 SELECTED *- USES: A[13:0], C[13:0], M[13:0] *- USES: 1 SUBROUTINE LEVEL * 246 241 TSTMAP 1 GSBLNG TBITMA TEST BIT MAP 246 242 0 247 243 1356 ? C#0 BIT SET? 248 244 1 GOLNC NFRPU NOPE 248 245 2 249 246 1 GOLONG SRBMAP RESET BIT MAP 249 247 2 250 FILLTO @247 251 250 0 XDEF SF 252 251 0 XDEF CF 253 252 0 XDEF FS?C 254 253 0 XDEF FC?C 255 254 0 XDEF FS? 256 255 0 XDEF FC? 257 256 0 XDEF XGOIND 258 257 1760 CON @1760 259 ROW 11 *************************************************** * THIS CODE CLEARS THE SIGMA REGISTERS *************************************************** 263 260 XCLSIG 1 GOSUB SUMCHK LEGAL AND GET ADDRESS 263 261 0 264 SUMCHK RETURNS ADDRESS OF 265 LAST SIGMA REG IN C.X 266 262 534 PT= 6 267 263 16 A=0 268 264 CLRNXT 256 AC EX 269 265 1360 DATA=C 270 266 256 AC EX 271 267 1156 C=C-1 272 270 1160 DADD=C 273 271 1724 DEC PT 274 272 1624 ? PT= 0 275 273 1713 GONC CLRNXT ( 264) 276 274 1740 RTN *********************************************** * THE ROLL UP FUNCTION HAPPENS HERE. *********************************************** 280 275 XRDN 1 GOSUB RDNSUB 280 276 0 281 277 503 GOTO NFRPRL ( 347) 282 FILLTO @277 283 300 0 XDEF END 284 301 1754 CON @1754 285 ENTRY FSTIN * FSTIN - FIRST INSTRUCTION * SETS A[3:0] TO THE ADDRESS IN MM FORMAT OF THE FIRST LOCATION *-IN PROGRAM MEMORY MINUS 1 BYTE. (IN PACKED MEMORY THIS IS THE *-ADDRESS OF THE FIRST INSTRUCTION.) * USES A[3:0] AND C * EXPECTS PT=3 IN AND OUT * 293 302 FSTIN 116 C=0 SET A TO REG 0 ADDRESS 294 303 1160 DADD=C 295 304 1570 C=REGN 13 296 305 74 RCR 3 297 306 406 A=C X 298 307 2 A=0 PT 299 310 1740 RTN * 301 ENTRY RTJLBL * * RTJLBL - RIGHT-JUSTIFY ALPHA OPERAND * ON ENTRY, C HAS A NON-ZERO ALPHA STRING IN THE FORM * "CBA0000" WHERE THE STRING IS "ABC" * RTJLBL MOVES ZEROES TO THE LEFT SIDE: "0000CBA" * USES THE PTR AND C ONLY. * ON EXIT, PT=1. * 310 311 RTJLBL 1434 PT= 1 311 312 RTJ10 1352 ? C#0 WPT 312 313 1540 RTN C 313 314 1074 RCR 2 314 315 1753 GOTO RTJ10 ( 312) 315 FILLTO @315 316 316 0 XDEF X<> 317 317 0 XDEF LBL 318 320 0 XDEF GTO ROW 13 319 321 1756 CON @1756 ***************************************************** * THIS ROUTINE CHECKS FOR CHARACTER DATA. ***************************************************** 323 322 SEPXY 156 AB EX 324 323 630 C=M 325 ENTRY CHK#S1 326 324 CHK#S1 256 AC EX 327 325 1 GOSUB CHK#S 327 326 0 328 327 256 AC EX 329 330 CHK#S 1240 SETDEC 330 331 CHK#S2 1376 ? C#0 S 331 332 1640 RTN NC 332 333 1076 C=C+1 S 333 334 63 GONC ERRAD ( 342) 334 335 1176 C=C-1 S 335 336 1740 RTN 336 FILLTO @337 337 0000 NOP 337 340 0 XDEF XEQ ROW 14 338 341 0 CON @0 END OF MAIN FUNCTION TABLE 339 342 ERRAD 1 GOSUB ERROR 339 343 0 340 344 0 XDEF MSGAD 341 EJECT ***************************************************** * THIS ROUTINE DOES A ROLL DOWN. ***************************************************** 345 345 XR^ 1 GOSUB R^SUB 345 346 0 346 347 NFRPRL 1 GOLONG NFRPR 346 350 2 347 351 RDNSUB 1 GOSUB R^SUB 347 352 0 348 353 1 GOSUB R^SUB 348 354 0 349 355 R^SUB 116 C=0 350 356 1160 DADD=C 351 357 70 C=DATA 352 360 256 AC EX 353 361 170 C=REGN 1 354 362 50 REGN=C 0 355 363 270 C=REGN 2 356 364 150 REGN=C 1 357 365 370 C=REGN 3 358 366 250 REGN=C 2 359 367 256 AC EX 360 370 350 REGN=C 3 361 371 1740 RTN 362 363 * * LOAD3 - SET REG.C = 33333333333332 * 367 372 LOAD3 1240 SETDEC SET TO DECIMAL MODE 368 373 116 C=0 W 369 374 1156 C=C-1 W GET ALL 9'S IN C 370 375 1140 SETHEX PUT BACK IN HEX MODE 371 376 756 C=C+C W C _ 33333333333332 372 377 1740 RTN 373 374 FILLTO @377 * * DCTAB - DEFAULTCODE TABLE * THERE ARE TWO TYPES OF ENTRIES. ENTRY TYPE IS ENCODED IN * BITS 8 AND 9: * BITS 9,8 = 00 DATA ENTRY (DIGIT ENTRY AND ALPHA ENTRY KEYS) * BITS 9,8 = 01 FUNCTION IN MAIN FCN TABLE * FOR FCN ENTRIES, THE INDEX TO THE TABLE IS ENCODED IN BITS 7-0. * FOR DATA ENTRY ENTRIES, BITS 7-0 CONTAIN EITHER THE ASCII * CHARACTER (ALPHA ENTRY), OR THE FCN CODE FOR THE DIGIT ENTRY FCN. * DCTAB MUST START AT @400 IN QUAD 5 (H1500=@12400) * * LOGICAL COL 0, UNSHIFTED, NORMAL 387 400 507 CON 327 SIGMA+ 388 401 561 CON 369 X<>Y 389 402 416 CON @416 SHIFT 390 403 603 CON 387 ENTER 391 404 501 CON 321 - 392 405 500 CON 320 + 393 406 502 CON 322 * 394 407 503 CON 323 / * LOGICAL COL 0, SHIFTED, NORMAL 396 410 510 CON 328 SIGMA- 397 411 560 CON 368 CLSIGMA 398 412 416 CON @416 SHIFT 399 413 400 CON 256 CATALOG 400 414 570 CON 376 X=Y? 401 415 506 CON 326 X<=Y? 402 416 505 CON 325 X>Y? 403 417 547 CON 359 X=0? * LOGICAL COL 1, UNSHIFTED, NORMAL 405 420 540 CON 352 1/X 406 421 565 CON 373 RDN 407 422 740 CON 480 XEQ 408 423 0 CON 0 RIGHT HALF OF ENTER KEY 409 424 27 CON 23 7 410 425 24 CON 20 4 411 426 21 CON 17 1 412 427 20 CON 16 0 * LOGICAL COL 1, SHIFTED, NORMAL 414 430 523 CON 339 Y^X 415 431 514 CON 332 % 416 432 417 CON @417 ASN 417 433 0 CON 0 RIGHT HALF OF ENTER KEY 418 434 650 CON 424 SF 419 435 606 CON 390 BEEP 420 436 634 CON 412 FIX 421 437 562 CON 370 PI * LOGICAL COL 2, UNSHIFTED, NORMAL 423 440 522 CON 338 SQRT 424 441 531 CON 345 SIN 425 442 621 CON 401 STO 426 443 34 CON 28 CHS 427 444 30 CON 24 8 428 445 25 CON 21 5 429 446 22 CON 18 2 430 447 32 CON 26 DECIMAL POINT * LOGICAL COL 2, SHIFTED, NORMAL 432 450 521 CON 337 X^2 433 451 534 CON 348 ASIN 434 452 717 CON 463 LBL 435 453 626 CON 406 ISG 436 454 651 CON 425 CF 437 455 516 CON 334 P-R 438 456 635 CON 413 SCI 439 457 566 CON 374 LASTX * LOGICAL COL 3, UNSHIFTED, NORMAL 441 460 526 CON 342 LOG 442 461 532 CON 346 COS 443 462 620 CON 400 RCL 444 463 33 CON 27 EEX 445 464 31 CON 25 9 446 465 26 CON 22 6 447 466 23 CON 19 3 448 467 405 CON @405 R/S * LOGICAL COL 3, SHIFTED, NORMAL 450 470 527 CON 343 10^X 451 471 535 CON 349 ACOS 452 472 720 CON 464 GTO 453 473 605 CON 389 RTN 454 474 654 CON 428 FS? 455 475 517 CON 335 R-P 456 476 636 CON 414 ENG 457 477 630 CON 408 VIEW * LOGICAL COL 4, UNSHIFTED, NORMAL 459 500 520 CON 336 LN 460 501 533 CON 347 TAN 461 502 410 CON @410 SST 462 503 0 CON 0 BACKARROW 463 504 414 CON @414 MODE (ALPHA) 464 505 414 CON @414 MODE (PRGM) 465 506 414 CON @414 MODE (USER) 466 507 0 NOP OFF KEY IS SPECIAL * LOGICAL COL 4, SHIFTED, NORMAL 468 510 525 CON 341 E^X 469 511 536 CON 350 ARCTAN 470 512 407 CON @407 BST 471 513 567 CON 375 CLX 472 514 414 CON @414 MODE (ALPHA) 473 515 414 CON @414 MODE (PRGM) 474 516 414 CON @414 MODE (USER) 475 517 0 NOP OFF KEY IS SPECIAL * * LOGICAL COL 0, UNSHIFTED, ALPHA MODE 478 520 101 CON 65 A 479 521 106 CON 70 F 480 522 416 CON @416 SHIFT 481 523 116 CON 78 N 482 524 121 CON 81 Q 483 525 125 CON 85 U 484 526 131 CON 89 Y 485 527 72 CON 58 : * LOGICAL COL 0, SHIFTED, ALPHA MODE 487 530 141 CON 97 LOWER CASE A 488 531 176 CON 126 SIGMA 489 532 416 CON @416 SHIFT 490 533 136 CON 94 ^ 491 534 55 CON 45 - 492 535 53 CON 43 + 493 536 52 CON 42 * 494 537 57 CON 47 / * LOGICAL COL 1, UNSHIFTED, ALPHA MODE 496 540 102 CON 66 B 497 541 107 CON 71 G 498 542 113 CON 75 K 499 543 0 CON 0 RIGHT HALF OF ENTER KEY 500 544 122 CON 82 R 501 545 126 CON 86 V 502 546 132 CON 90 Z 503 547 40 CON 32 SPACE * LOGICAL COL 1, SHIFTED, ALPHA MODE 505 550 142 CON 98 LOWER CASE B 506 551 45 CON 37 % 507 552 177 CON 127 LAZY "T" (APPEND) 508 553 0 CON 0 RIGHT HALF OF ENTER KEY 509 554 67 CON 55 7 510 555 64 CON 52 4 511 556 61 CON 49 1 512 557 60 CON 48 0 * LOGICAL COL 2, UNSHIFTED, ALPHA MODE 514 560 103 CON 67 C 515 561 110 CON 72 H 516 562 114 CON 76 L 517 563 117 CON 79 O 518 564 123 CON 83 S 519 565 127 CON 87 W 520 566 75 CON 61 = 521 567 54 CON 44 COMMA * LOGICAL COL 2, SHIFTED, ALPHA MODE 523 570 143 CON 99 LOWER CASE C 524 571 35 CON 29 NOT EQUAL SIGN 525 572 632 CON 410 ASTO 526 573 15 CON 13 ANGLE SIGN 527 574 70 CON 56 8 528 575 65 CON 53 5 529 576 62 CON 50 2 530 577 56 CON 46 DECIMAL POINT * LOGICAL COL 3, UNSHIFTED, ALPHA MODE 532 600 104 CON 68 D 533 601 111 CON 73 I 534 602 115 CON 77 M 535 603 120 CON 80 P 536 604 124 CON 84 T 537 605 130 CON 88 X 538 606 77 CON 63 ? 539 607 405 CON @405 R/S * LOGICAL COL 3, SHIFTED, ALPHA MODE 541 610 144 CON 100 LOWER CASE D 542 611 74 CON 60 < 543 612 633 CON 411 ARCL 544 613 44 CON 36 $ 545 614 71 CON 57 9 546 615 66 CON 54 6 547 616 63 CON 51 3 548 617 576 CON 382 AVIEW * LOGICAL COL 4, UNSHIFTED, ALPHA MODE 550 620 105 CON 69 E 551 621 112 CON 74 J 552 622 410 CON @410 SST 553 623 0 CON 0 BACKARROW 554 624 414 CON @414 MODE (ALPHA) 555 625 414 CON @414 MODE (PRGM) 556 626 414 CON @414 MODE (USER) 557 627 0 NOP OFF KEY IS SPECIAL * LOGICAL COL 4, SHIFTED, ALPHA MODE 559 630 145 CON 101 LOWER CASE E 560 631 76 CON 62 > 561 632 1007 CON 519 BST 562 633 607 CON 391 CLA 563 634 414 CON @414 MODE (ALPHA) 564 635 414 CON @414 MODE (PRGM) 565 636 414 CON @414 MODE (USER) 566 OFF KEY IS SPECIAL ************************************************* * ISG AND DSE ARE DONE HERE. THE ROUTINE BREAKS * THE INPUT IN B INTO ITS THREE PARTS - INT, * COMPARE, AND INC. IT ADDS THE INC, STORES THE * RESULT AND BRANCHES TO THE COMPARE ROUTINE * TO DECIDE WHETHER TO SKIP OR NOT. ************************************************* 574 637 XDSE 1610 S0= 1 SET DSE FLAG 575 640 XISG 356 BC EX GET CONTENT OF RNN 576 641 1 GOSUB CHK#S CHECK FOR ALPHA 576 642 0 577 643 33 GOTO NOFRAC ( 646) 578 644 ELMFRC 1732 C SR M CHANGE TO FIX NOTATION 579 645 1046 C=C+1 X 580 646 NOFRAC 1366 ? C#0 XS 581 647 1757 GOC ELMFRC ( 644) 582 650 1 GSBLNG SINFR DO INT AND FRC 582 651 0 583 652 630 C=M GET INT PART * NEXT TWO STATES (?PT=0, GOC OVRDEC) ARE VESTIGIAL FROM WHEN * SINFR WORKED FOR 13-DIGIT MANTISSAS IN ANOTHER MACHINE. THESE * TWO STATES CAN BE REMOVED WITHOUT HARM. 587 653 1624 ? PT= 0 PREVENT CLEAR FOR LARGE VALUES 588 654 27 GOC OVRDEC ( 656) 589 655 1724 DEC PT 590 656 OVRDEC 112 C=0 WPT CLEAR FRACTIONAL PART 591 657 372 BC EX M JOIN MANTISSA WITH EXP AND SIGN 592 660 356 BC EX W BRING COMPLETE INT TO C 593 661 530 M=C SAVE FOR LATER 594 662 256 C=A PUT FRAC IN C 594 663 416 595 664 1360 DATA=C 596 665 1234 PT= 7 SET TO CLEAR TRAIL DIGITS 597 666 112 C=0 WPT 598 667 1134 PT= 9 PICK OFF INC 599 670 1352 ? C#0 WPT DUMMY ONE FOR ZERO 600 671 47 GOC SEPA ( 675) 601 672 434 PT= 8 602 673 120 LC 1 603 674 1134 PT= 9 604 675 SEPA 16 A=0 605 676 412 A=C WPT PICK OFF INC 606 677 112 C=0 WPT LEAVE COMPARE VAL 607 700 1756 A SL 608 701 1756 A SL 609 702 1756 A SL INCREMENT LEFT-JUST 610 703 1534 PT= 12 POINT TO DIGIT ONE 611 704 1046 C=C+1 X EXP COMPARE 612 705 1046 C=C+1 X 613 706 546 A=A+1 X EXP INC 614 707 1502 ? A#0 PT IS INC EXP OK? 615 710 37 GOC TSTEXP ( 713) YES 616 711 1772 A SL M 617 712 6 A=0 X 618 713 TSTEXP 1342 ? C#0 PT EXP 2 TOO LARGE? 619 714 107 GOC ADDIT ( 724) NO, JUST RIGHT 620 715 1374 RCR 13 SHIFT COMPARE LEFT 621 716 106 C=0 X EXP=1? 622 717 1046 C=C+1 X 623 720 1342 ? C#0 PT EXP COMP OK NOW? 624 721 37 GOC ADDIT ( 724) YES 625 722 1374 RCR 13 SHIFT LEFT 626 723 106 C=0 X EXP MUST BE ZERO 627 724 ADDIT 1614 ?S0=1 DSE OR ISG? 628 725 23 GONC ADDEM ( 727) ISG 629 726 676 A=A-1 S MAKE DEC OUT OF INC 630 727 ADDEM 160 N=C SAVE FLOATING POINT COMPARE 631 730 630 C=M GET INTEGER PART BACK 632 731 1 GOSUB AD2-10 632 732 0 633 733 530 M=C SAVE INT PART OF RESULT 634 734 416 A=C DUP RESULT IN A 635 735 70 C=DATA GET FRAC PART BACK 636 736 246 C=A X DUP EXP 636 737 406 637 740 MRSHFT 1732 C SR M SHIFT FRAC INTO POSITION 638 741 1146 C=C-1 X IN POSITION YET? 639 742 37 GOC COMBIN ( 745) YES 640 743 1372 ? C#0 M FRACTION ZERO 641 744 1747 GOC MRSHFT ( 740) NO NOT YET 642 745 COMBIN 106 C=0 X SIGN AND EXP C=0 643 746 1032 C=C+A M 644 LEGAL 645 747 1 GOSUB SHF40 645 750 0 646 751 1360 DATA=C STORE UPDATED COUNTER 647 752 1210 S7= 1 648 753 630 C=M 649 754 256 AC EX 650 755 1614 ?S0=1 DSE?? 651 756 123 GONC XX>Y? ( 770) ************************************************* * THE COMPARISONS FOLLOW. X VALUES ENTER IN N * WHILE Y VALUES ARE IN A. ************************************************* 656 757 XX0? 1240 SETDEC 658 762 260 C=N 659 763 1356 ? C#0 660 764 723 GONC SKP (1056) 661 765 1076 C=C+1 S 662 766 433 GONC NOSKP (1031) 663 767 673 GOTO SKP (1056) 664 770 XX>Y? 1 GOSUB Y-X 664 771 0 665 772 XX<0? 1214 ?S7=1 666 773 227 GOC XX<=0? (1015) 667 774 XX<0 1240 SETDEC 668 775 260 C=N 669 776 1076 C=C+1 S 670 777 573 GONC SKP (1056) 671 1000 313 GOTO NOSKP (1031) 672 1001 XX<=Y? 1 GOSUB Y-X 672 1002 0 673 1003 1356 ? C#0 674 1004 253 GONC NOSKP (1031) 675 1005 1543 GOTO XX>0? ( 761) 676 1006 XX=0? 16 A=0 677 1007 260 C=N 678 1010 173 GOTO XYY (1027) 679 1011 XX<=0A 370 C=REGN 3 ROW LOGIC DOESN'T CHECK 680 1012 1 GOSUB CHK#S FOR ALPHA DATA ON X<=0? 680 1013 0 681 1014 160 N=C 682 1015 XX<=0? 260 C=N 683 1016 1356 ? C#0 684 1017 123 GONC NOSKP (1031) 685 1020 1543 GOTO XX<0 ( 774) 686 1021 XX#0? 16 A=0 687 1022 260 C=N 688 1023 313 GOTO XYN (1054) 689 1024 XX=Y? 270 C=REGN 2 690 1025 256 AC EX 691 1026 370 C=REGN 3 692 1027 XYY 1556 ? A#C 693 1030 267 GOC SKP (1056) 694 ENTRY NOSKP 695 1031 NOSKP 1314 ?S13=1 696 1032 157 GOC NOSKPO (1047) 697 1033 116 C=0 698 1034 1160 DADD=C 699 1035 1670 C=REGN 14 700 1036 1730 CST EX 701 1037 114 ?S4=1 702 1040 77 GOC NOSKPO (1047) 703 1041 1730 CST EX 704 1042 1214 ?S7=1 IS THIS ISG OR DSE? 705 1043 47 GOC NOSKPO (1047) 706 1044 1 GOSUB MSG 706 1045 0 707 1046 0 XDEF MSGYES 708 1047 NOSKPO 1 GOLONG NFRPU CAN'T DO A RTN HERE 708 1050 2 * BECAUSE SOME COMPARISONS HAVE NFRX ON THE STACK INSTEAD OF NFRPU 710 1051 XX#Y? 270 C=REGN 2 711 1052 256 AC EX 712 1053 370 C=REGN 3 713 1054 XYN 1556 ? A#C 714 1055 1547 GOC NOSKP (1031) 715 ENTRY SKP 716 1056 SKP 1140 SETHEX 717 1057 1314 ?S13=1 718 1060 103 GONC SST? (1070) 719 ENTRY DOSKP 720 1061 DOSKP 1 GOSUB GETPC 720 1062 0 721 1063 1 GOSUB SKPLIN 721 1064 0 722 1065 1 GOSUB PUTPCX FORCE RECALC OF LINE NUMBER 722 1066 0 723 1067 1603 GOTO NOSKPO (1047) 724 1070 SST? 116 C=0 725 1071 1160 DADD=C 726 1072 1670 C=REGN 14 727 1073 1730 CST EX 728 1074 114 ?S4=1 729 1075 1647 GOC DOSKP (1061) 730 1076 1730 CST EX 731 1077 1214 ?S7=1 ISG DSE? 732 1100 1477 GOC NOSKPO (1047) 733 1101 1 GOSUB MSG NO COMP OR FLAGS 733 1102 0 734 1103 0 XDEF MSGNO 735 1104 1433 GOTO NOSKPO (1047) *************************************************************** * THE FLAG CONDITIONALS FOLLOW. ENTRY IS WITH R14 IN A AND A * MASK IN B. THE MASK CONSISTS OF ALL ZEROS EXCEPT FOR A ONE * AT THE LOCATION OF THE SELECTED FLAG *************************************************************** 741 1105 XFS? 316 C=B GET MASK 742 1106 1660 C=C.A AND R14 WITH MASK 743 1107 1356 ? C#0 IS ANYTHING LEFT? 744 1110 1217 GOC NOSKP (1031) YES. NO SKP 745 1111 SKPIT 1453 GOTO SKP (1056) 746 1112 XSF 356 BC EX MOVE MASK TO C 747 1113 1560 C=CORA SET MASKED BIT 748 1114 53 GOTO FLGANN (1121) 749 1115 XCF 316 C=B 750 1116 1256 C=-C-1 751 1117 0 NOP 752 1120 1660 C=C.A 753 1121 FLGANN 1650 REGN=C 14 754 1122 256 AC EX 755 1123 530 M=C 756 1124 1 GOSUB ANNOUT 756 1125 0 757 1126 630 C=M 758 1127 256 AC EX 759 1130 1740 RTN ************************************************** * SUM+NN SETS THE ADDRESS OF THE REGISTER USED * FOR SIGMA PLUS. IT CHECKS TO SEE IF THE ADDRESS * IS IN FACT A LEGAL ADDRESS. THE SUBROUTINE * SUMCHK IS CALLED BY THE SIGMA PLUS FUNCTION * FOR THIS CHECK. ************************************************** 767 1131 XSGREG 260 C=N ADDRESS OR SUM 1 768 1132 1 GOSUB SUMCK2 LEGAL? 768 1133 0 769 1134 260 C=N YES 770 1135 256 CA EX PUT ADDRESS IN SCRATCH 771 1136 116 C=0 772 1137 1160 DADD=C 773 1140 1570 C=REGN 13 774 1141 674 RCR 11 775 1142 106 C=0 X 776 1143 1006 C=C+A X 777 1144 74 RCR 3 778 1145 1550 REGN=C 13 779 1146 1740 RTN 780 1147 SUMCHK 1570 C=REGN 13 GET ADDRESS 781 1150 674 RCR 11 782 1151 SUMCK2 256 CA EX ADD5 783 1152 460 LDI 784 1153 5 CON 5 785 1154 1140 SETHEX 786 1155 1006 C=C+A X 787 LEGAL ************************************************* * CHKADR - CHECKS FOR VALID DATA ADDRESSES * IN: ADDR IN C.X * OUT: DATA IN B, ADDR IN C.X, HEXMODE, * DADD=C.X (EXCEPT SOME ERROR EXITS) * USES: ACTIVE POINTER, A, S9, DADD, C, B * MAY EXIT TO ERRNE * * CHKAD4 - CHECKS TO SEE IF THE REGISTER IS THERE. * ON ENTRY, DADD=B=ADDRESS OF REGISTER AND C=CONTENTS OF REG * STATUS OF S9 ON ENTRY CONTROLS EXIT IF THE REGISTER ISN'T * THERE. EXITS TO ERRNE IF S9=1, ELSE GOES TO COLD START! * ON EXIT, ADDRESS OF REGISTER IS IN C.X AND CONTENTS ARE IN B * AND HEXMODE AND USES ACTIVE POINTER AND A * NOTE - CHKAD4 IS PROBABLY OBSOLETE NOW. IT USED TO BE CALLED BY * MEMCHK IN CN0. DRC 10/20/79 ************************************************* 805 1156 CHKADR 1 GOLONG PATCH6 805 1157 2 806 ENTRY P6RTN 807 1160 P6RTN 356 BC EX SAVE ADDRESS 808 1161 70 C=DATA GET CURRENT CONTENT 809 1162 1240 SETDEC 810 1163 1056 C=C+1 W LOGIC IN HERE ASSURES 811 1164 1156 C=C-1 W DATA IS IN A CANONICAL 812 FORM 813 1165 1376 ? C#0 S NON-POSITIVE? 814 1166 103 GONC CKAD3 (1176) POSITIVE NUMBER? 815 1167 1076 C=C+1 S NEGATIVE NUMBER? 816 1170 57 GOC CKAD2 (1175) YES 817 1171 70 C=DATA ASSUME AN ALPHA STRING 818 1172 136 C=0 S ASSURE A 1 IN DIGIT 13 819 1173 1076 C=C+1 S 820 LEGAL 821 1174 123 GOTO CKAD4 (1206) 822 1175 CKAD2 1176 C=C-1 S RESTORE 9 IN SIGN DIGIT 823 1176 CKAD3 1366 ? C#0 XS NEGATIVE EXPONENT? 824 1177 33 GONC CKAD3J (1202) NO. 825 1200 126 C=0 XS ASSURE EXP SIGN = 9 826 1201 1166 C=C-1 XS 827 1202 CKAD3J 1534 PT= 12 828 1203 1342 ? C#0 PT IS MANTISSA NORMALIZED? 829 1204 27 GOC CKAD4 (1206) YES 830 1205 116 C=0 W FORCE WHOLE WORD TO ZERO 831 ENTRY CHKAD4 832 CHKAD4 833 1206 CKAD4 1140 SETHEX 834 1207 356 BC EX 835 1210 416 A=C GET ADR BACK 836 1211 1360 DATA=C WRITE ADR OUT 837 1212 70 C=DATA BRING ADR BACK IN 838 1213 1556 ? A#C GET ADR BACK? 839 1214 63 GONC CKAD10 (1222) YES 840 REG ISN'T THERE 841 1215 1114 ?S9=1 842 1216 1 GOLC ERRNE 842 1217 3 843 1220 1 GOLONG COLDST 843 1221 2 844 CKAD10 845 1222 316 C=B PUT DATA BACK 846 1223 1360 DATA=C 847 1224 256 AC EX ADR BACK TO CX 848 1225 1740 RTN ************************************************** 850 1226 XARCL 316 C=B 851 1227 1176 C=C-1 S 852 1230 1376 ? C#0 S NUMERIC DATA? 853 1231 273 GONC REGALP (1260) NO, ALPHA DATA 854 1232 1 GOSUB AFORMT NUMERIC DATA 854 1233 0 855 1234 ARCL10 1314 ?S13=1 RUNNING? 856 1235 1540 RTN C 857 1236 1670 C=REGN 14 858 1237 1530 ST=C 859 1240 114 ?S4=1 SSTFLAG? 860 1241 1540 RTN C 861 1242 1214 ?S7=1 ALPHA MODE? 862 1243 1640 RTN NC NO 863 1244 410 S8= 1 SAY PROMPT & NO SCROLL 864 1245 1 GOSUB ARGOUT 864 1246 0 * * STFLGS - SET MSGFLG & DATAENTRY FLAG * ASSUMES CHIP 0 ENABLED. LEAVES SS 1/2 UP AND REG 14 IN C * 869 1247 STFLGS 1670 C=REGN 14 870 1250 1474 RCR 1 871 1251 1530 ST=C 872 1252 1410 S1= 1 SET MSGFLG 873 1253 510 S6= 1 SET DATAENTRY FLAG 874 1254 1630 C=ST 875 1255 1374 RCR 13 876 1256 STFL10 1650 REGN=C 14 877 1257 1740 RTN * 879 1260 REGALP 106 C=0 X RE-ENABLE CHIP 0 880 1261 1160 DADD=C 881 1262 1534 PT= 12 RELIES ON P ACTIVE 882 1263 ARCL20 240 SEL P 883 1264 1724 DEC PT 884 1265 1724 DEC PT MOVE P RIGHT 1 BYTE 885 1266 1524 ? PT= 12 WRAPAROUND? 886 1267 1457 GOC ARCL10 (1234) YES. DONE 887 1270 316 C=B PUT CHAR TO G FOR APNDNW 888 1271 130 G=C 889 1272 340 SEL Q 890 1273 634 PT= 11 891 1274 1322 ? B#0 PQ ANY CHARS FOUND YET? 892 1275 1 GSUBC APNDNW APPEND TO ALPHA REG 892 1276 1 * APNDNW CLOBBERS A, C, AND THE ACTIVE POINTER, WHICH IS Q HERE. 894 1277 1643 GOTO ARCL20 (1263) ************************************************** * THIS ROUTINE SETS THE INTERNAL DISPLAY FORMAT * STATUS. ************************************************** 899 1300 XSCI 1630 C=ST FE00NNNN 900 1301 1074 RCR 2 XXXXXXXX,FE00NNNN 901 1302 1630 C=ST FE00NNNN,FE00NNNN 902 1303 1374 RCR 13 FE00NNNNFE00,NNNN 903 1304 1530 ST=C SAVE NNNNFE00 904 1305 1670 C=REGN 14 GET STATUS 905 1306 74 RCR 3 MOVE DSP TO POSITION 906 1307 1730 CST EX MOVE GRAD RAD TO STATUS 907 1310 1614 ?S0=1 IS GRAD SET 908 1311 23 GONC S1? (1313) NO THEN RAD 909 1312 1056 C=C+1 SET LOW BIT 910 1313 S1? 1414 ?S1=1 RAD? 911 1314 33 GONC DSPDN (1317) 912 1315 1056 C=C+1 SET BIT TWO 913 1316 1056 C=C+1 914 1317 DSPDN 674 RCR 11 915 1320 1363 GOTO STFL10 (1256) *************************************************************** * XBEEP - COCONUT BEEP * SETS UP STATUS WITH A TONE NUMBER THEN CALLS TONE AS IF * FROM KEYBOARD. *************************************************************** 921 XBEEP 922 1321 1 GOSUB TONEB 922 1322 0 923 1323 460 LDI LOAD A 5 924 1324 5 CON 5 925 1325 1 GOSUB TONEB 925 1326 0 926 1327 460 LDI LOAD A 8 927 1330 10 CON 8 928 1331 1 GOSUB TONEB 928 1332 0 929 ENTRY TONE7X 930 1333 TONE7X 460 LDI 931 1334 7 CON 7 932 1335 TONEB 1530 ST=C FALL INTO TONE ****************************************************************** * XTONE - EXECUTE 41-C TONE FUNCTION * * ONE-DIGIT (0-9) OPERAND FUNCTION, 0=LOW, 9=HIGH. TONES ARE NOT * MUSICAL NOTES. THE FREQUENCY DIFFERENCES ARE RATHER ARBITRARY. * TONE N WORD TIMES/CYCLE * 9 3 * 8 4 * 7 5 * 6 6 * 5 8 * 4 10 * 3 12 * 2 14 * 1 16 * 0 18 * THE DURATION OF EACH TONE IS EQUALLY .25 SECONDS * IF THE AUDIO ENABLE FLAG IS NOT SET, SILENT RETURN. * * INPUT: 1. ST[7:0] = OPERAND (0-9) * 2. CHIP 0 ENABLED * * USES : A, C, ST[7:0], FO[7:0], NO PT. + 1 SUB LEVEL * * OUTPUT: 1. HEXMODE * 2. FO[7:0] = 0 * 3. A.X = FFF * 4. CHIP 0 ENABLED * SPECIAL ENTRIES: * * TONE7X - GENERATES TONE 7 * SAME AS XTONE EXCEPT NO OPERAND IS REQUIRED. * * TONEB - SAME AS XTONE EXCEPT THE OPERAND IS IN C[1:0] * ****************************************************************** 969 1336 XTONE 1670 C=REGN 14 IS BEEP ENABLED? 970 1337 1274 RCR 7 971 1340 1730 CST EX 972 1341 1414 ?S1=1 973 1342 1640 RTN NC NO, NOT ENABLED 974 1343 1704 CLR ST CLEAR FLAG OUT REG 975 1344 1330 FEXSB 976 1345 1530 ST=C SAVE FREQUENCY INPUT IN ST 977 1346 116 C=0 978 1347 460 LDI PUT ALL 1S IN ST 979 1350 377 CON2 15 15 980 1351 1730 CST EX & GET COUNT BACK 981 1352 674 RCR 11 PLACE COUNT FOR LOOK UP 982 1353 416 A=C 983 1354 174 RCR 4 SHIFT FREQ INTO DIGIT 13 984 1355 1240 SETDEC 985 1356 1276 C=-C-1 S 986 1357 1140 SETHEX 987 1360 1 GOSUB PCKDUR PICK .25 SECOND DURATION 987 1361 0 988 1362 133 CON @133 CONSTANTS MUST BE ODD 989 1363 145 CON @145 990 1364 163 CON @163 991 1365 207 CON @207 992 1366 241 CON @241 993 1367 311 CON @311 994 1370 413 CON @413 995 1371 477 CON @477 996 1372 617 CON @617 997 1373 1025 CON @1025 998 1374 PCKDUR 660 C=STK 999 1375 1032 C=C+A M 1000 1376 1460 CXISA 1001 1377 246 AC EX X DURATION NOW IN A.X 1002 TEST FOR TONE 7,8,9 1003 1400 1176 C=C-1 S 1004 1401 147 GOC TONE9 (1415) 1005 1402 1176 C=C-1 S 1006 1403 167 GOC TONE8 (1421) 1007 1404 1176 C=C-1 S 1008 1405 217 GOC TONE7 (1426) 1009 1406 DELOOP 436 A=C S GET FREQ CNTR 1010 1407 1330 FEXSB TURN ON TONE 1011 1410 676 A=A-1 S FREQ COUNT 1012 1411 1773 GONC *-1 (1410) 1013 1412 646 A=A-1 X COUNT DOWN DURATION 1014 1413 1733 GONC DELOOP (1406) 1015 1414 1740 RTN * 1017 1415 TONE9 1330 FEXSB 1018 1416 646 A=A-1 X 1019 1417 1763 GONC *-2 (1415) 1020 1420 1740 RTN 1021 1421 TONE8 1330 FEXSB 1022 1422 0 NOP 1023 1423 646 A=A-1 X 1024 1424 1753 GONC *-3 (1421) 1025 1425 1740 RTN 1026 1426 TONE7 1330 FEXSB 1027 1427 0 NOP 1028 1430 0 NOP 1029 1431 646 A=A-1 X 1030 1432 1743 GONC *-4 (1426) 1031 1433 1740 RTN ***************************************************** * THIS ROUTINE SETS DEGREES, RADIANS OR GRADS. ***************************************************** 1035 1434 XDEG 1 GOSUB DEGDO 1035 1435 0 1036 1436 XDEG2 1630 C=ST 1037 1437 674 RCR 11 1038 1440 1 GOLONG ANN+14 1038 1441 2 1039 1442 XRAD 1 GOSUB DEGDO 1039 1443 0 1040 1444 1610 S0= 1 1041 1445 1713 GOTO XDEG2 (1436) 1042 1446 XGRAD 1 GOSUB DEGDO 1042 1447 0 1043 1450 1410 S1= 1 1044 1451 1653 GOTO XDEG2 (1436) 1045 1452 DEGDO 1670 C=REGN 14 1046 1453 74 RCR 3 1047 1454 1530 ST=C 1048 1455 1604 S0= 0 1049 1456 1404 S1= 0 1050 1457 1740 RTN *************************************************** * FNDEND - FIND THE HIGH END OF RAM * ROUTINE STARTS AT REG 0 STORING AND RETRIEVING * THE REGISTERS ADDRESSED UNTIL THE RETRIEVED * VALUE DOES NOT MATCH THE STORED VALUE. * UPON RETURN, A[2:0] CONTAINS THE ADDRESS OF THE * FIRST NONEXISTENT REGISTER. * IF FLAG 8 IS SET AND ENTRY IS AT CLEAR, * THE ROUTINE ALSO CLEARS ALL DATA REGISTERS. * NOTE: FNDEND RELIES ON THE TESTED REGISTER BEING DIFFERENT FROM * WHAT YOU GET WHEN YOU READ A NONEXISTENT REGISTER - PROBABLY AN * OK ASSUMPTION IF NONEXISTENT REGISTERS GIVE ALL ZEROS OR ALL ONES. *************************************************** 1064 1460 FNDEND 404 S8= 0 CLEAR CLEAR FLAG 1065 1461 116 C=0 ADDRESS CHIP ZERO 1066 1462 1160 DADD=C 1067 1463 CLR 1570 C=REGN 13 GET REG 0 1068 1464 74 RCR 3 1069 1465 132 C=0 M MUST HAVE ZEROS IN TEST 1070 1466 CLEM 1160 DADD=C ADDRESS REGISTER 1071 1467 256 AC EX SAVE ADR 1072 1470 70 C=DATA SAVE VALUE 1073 1471 356 BC EX 1074 1472 256 C=A DUP ADR 1074 1473 416 1075 1474 1360 DATA=C SEND ADR OUT 1076 1475 70 C=DATA BRING IT BACK 1077 1476 1556 ? A#C HAS IT CHANGED? 1078 1477 1540 RTN C YES SO RTN 1079 1500 356 BC EX PUT ORIGINAL VAL BACK 1080 1501 414 ?S8=1 CLEAR REGISTER? 1081 1502 23 GONC OVR0 (1504) NO 1082 1503 116 C=0 1083 1504 OVR0 1360 DATA=C PUT VAL BACK 1084 1505 556 A=A+1 INC ADR 1085 1506 256 AC EX GET ADR 1086 1507 1573 GOTO CLEM (1466) ************************************************* * THIS ROUTINE KILLS THE FIRST SIX CHARACTERS * IN THE ALPHA REGISTER. ************************************************* 1091 1510 XASHF 1 GOSUB FIND#1 FIND FIRST CHARACTER 1091 1511 0 1092 1512 1524 ? PT= 12 7 IN THIS REG 1093 1513 53 GONC REGG (1520) NO REGULAR 6 OR LESS 1094 1514 1034 PT= 2 CLEAR TOP SIX AND DONE 1095 1515 INSHFT 122 C=0 PQ 1096 1516 DONSHF 1360 DATA=C 1097 1517 1740 RTN 1098 1520 REGG 116 C=0 1099 1521 1360 DATA=C CLEAR FIRST REG 1100 1522 324 ? PT= 10 DONE SIX 1101 1523 1540 RTN C 1102 1524 256 AC EX 1103 1525 1160 DADD=C ADDRESS NEXT REG 1104 1526 70 C=DATA 1105 1527 1734 INC PT CLEAR REMAINING CHARACTERS 1106 1530 1734 INC PT 1107 1531 1734 INC PT 1108 1532 1734 INC PT 1109 1533 1623 GOTO INSHFT (1515) ************************************************** * THIS FUNCTION TAKES THE FIRST SIX NON-NULLS * IN THE ALPHA REGISTER AND STORES THEM. ************************************************** 1114 1534 XASTO 1 GOSUB FIND#1 1114 1535 0 1115 1536 1524 ? PT= 12 ALL IN THIS REG? 1116 1537 113 GONC REG (1550) NO 1117 1540 1074 RCR 2 SHIFT RIGHT 2 1118 1541 DONSTO 1334 PT= 13 1119 1542 120 LC 1 SET ONE IN 13 1120 1543 20 LC 0 AND CLEAR 12 1121 1544 360 NC EX GET DATA ADDRESS BACK 1122 1545 1160 DADD=C 1123 1546 360 NC EX GET REGISTER CONTENT BACK 1124 1547 1473 GOTO DONSHF (1516) 1125 1550 REG 324 ? PT= 10 ALL IN THIS REG 1126 1551 1707 GOC DONSTO (1541) DONE 1127 1552 256 AC EX GET ADR OF NEXT REG 1128 1553 1160 DADD=C 1129 1554 70 C=DATA GET NEXT REG 1130 1555 1734 INC PT 1131 1556 252 AC EX WPT COMBINE TWO REG 1132 1557 SHFLFT 1734 INC PT SHIFT THE 1133 1560 1734 INC PT 1134 1561 1574 RCR 12 1135 1562 624 ? PT= 11 IS THE POINTER IN POSITION? 1136 1563 1743 GONC SHFLFT (1557) 1137 1564 1553 GOTO DONSTO (1541) *************************************************** * THIS SUBROUTINE FINDS THE FIRST NON-NULL IN * THE ALPHA REGISTER. *************************************************** *************************************************** 1143 1565 FIND#1 460 LDI LOAD ADDRESS 1144 1566 10 CON @10 1145 1567 1160 DADD=C 1146 1570 256 CA EX PUT ADDRESS IN A 1147 1571 340 SEL Q SET Q AT 13 FOR TEST AND CLEARS 1148 1572 1334 PT= 13 1149 1573 240 SEL P SET P AT SIX TO CLEAR GARBAGE 1150 1574 534 PT= 6 1151 1575 70 C=DATA 1152 1576 122 C=0 PQ 1153 1577 34 PT= 3 1154 1600 THSIT? 656 A=A-1 DEC ADDRESS 1155 1601 1356 ? C#0 ANYTHING IN THIS REG? 1156 1602 157 GOC FOUND1 (1617) IF YES THEN OUT 1157 1603 256 C=A OTHERWISE GET NEXT REG 1157 1604 416 1158 1605 1160 DADD=C 1159 1606 70 C=DATA 1160 1607 1724 DEC PT COUNT DOWN ON LOOP 1161 1610 1624 ? PT= 0 DONE YET 1162 1611 1673 GONC THSIT? (1600) 1163 1612 1534 PT= 12 1164 1613 1362 ? C#0 PQ IF 7 CHARACTERS IN LAST RTN 1165 1614 1540 RTN C 1166 1615 334 PT= 10 OTHERWISE DONE WITH 10 1167 1616 1740 RTN 1168 1617 FOUND1 1634 PT= 0 1169 1620 FNDPT 1724 DEC PT 1170 1621 1724 DEC PT 1171 1622 1362 ? C#0 PQ 1172 1623 1753 GONC FNDPT (1620) 1173 1624 1740 RTN RTN WITH POINTER AT FIRST BYTE *********************************************************** * THE SIZE FUNCTION PLACES R0 SUCH THAT COCONUT CONTAINS * THE CORRECT NUMBER OF REGISTERS. * THE NUMBER OF REGISTERS IS DELIVERED IN HEX IN AX * ENTRY SIZSUB USES S9 TO TELL WHETHER TO GO TO PACKE OR RETURN * IF THERE ISN'T ENOUGH ROOM - S9=1 GOES TO PACKE, S9=0 RETURNS * WITH S9=1 IF NOT SUCCESSFUL. *********************************************************** 1182 1625 XSIZE 1110 S9= 1 EXIT VIA PACKE IF 1183 UNSUCCESSFUL 1184 ENTRY SIZSUB 1185 1626 246 AC EX X GET USER SPEC NUM OF REGS 1186 1627 SIZSUB 160 N=C N CONTAINS THE NUMBER NEEDED 1187 1630 1 GOSUB MEMLFT CALCULATE THE MEM UNUSED 1187 1631 0 1188 1632 530 M=C M=UNUSED REGISTERS 1189 1633 1 GOSUB FNDEND FIND THE END OF MEM 1189 1634 0 **************************************************** * MORE OR LESS REGISTERS THAN WE HAVE NOW? **************************************************** 1193 1635 116 C=0 1194 1636 1160 DADD=C 1195 1637 216 B=A MEM END IN B 1196 1640 1570 C=REGN 13 1197 1641 74 RCR 3 1198 1642 706 A=A-C X 1199 1643 260 C=N C=REGISTERS WE NEED 1200 1644 706 A=A-C X COMP # 2 SHIFT LEFT POSITIVE 1201 1645 177 GOC LARGER (1664) USER WANTS MORE REGISTERS **************************************************************** * CODE BELOW SETS AX=CHAIN HEAD-WHERE WE STOP * AM=-1 DEC * BX=FROM ADDRESS-WHERE WE GET DATA * BM=TO ADDRESS-WHERE WE PUT DATA **************************************************************** 1208 1646 410 S8= 1 SET CLEAN UP FLAG 0 1209 1647 316 C=B CX=TO 1210 1650 256 AC EX 1211 1651 530 M=C SAVE SHIFT DISTANCE 1212 1652 1116 C=A-C CX=FROM 1213 1653 74 RCR 3 1214 1654 346 BC EX X C=FRMXXXXXXXXTO 1215 1655 674 RCR 11 1216 1656 356 BC EX B=TOFRM 1217 1657 1570 C=REGN 13 GET TEST ADDRESS 1218 1660 132 C=0 M 1219 1661 1172 C=C-1 M 1220 1662 256 AC EX A=INCTST 1221 1663 303 GOTO STRTMV (1713) ******************************************************* * SETS UP AS FOR SMALLER EXCEPT WE STOP AT NOTHINGNESS * AND START AT CHAIN END USING 1 FOR AN INCREMENT. ******************************************************* 1226 1664 LARGER 630 C=M GET UNUSED REG 1227 1665 1006 C=C+A X ADD NEG SHIFT 1228 1666 67 GOC LARG10 (1674) MADE IT 1229 1667 1114 ?S9=1 EXIT MODE? 1230 1670 1 GOLC PACKE 1231 1671 3 1232 1672 1110 S9= 1 SAY DIDN'T MAKE IT 1233 1673 1740 RTN * 1234 1674 LARG10 1570 C=REGN 13 A=NEGSHFT C=FROM 1235 1675 1006 C=C+A X C=TO 1236 1676 674 RCR 11 1237 1677 356 BC EX C=TXT B=TOXXX 1238 1700 132 C=0 M 1239 1701 1072 C=C+1 M C=INCTST 1240 1702 256 AC EX 1241 1703 530 M=C SAVE NEG SHIFT 1242 1704 1570 C=REGN 13 C=FROM 1243 1705 346 BC EX X B=TOFRM 1244 1706 53 GOTO STRTMV (1713) ***************************************************** * THIS ROUTINE SHIFTS MEMORY EITHER LEFT OR RIGHT * ACCORDING TO THE INPUTS IN A AND B. ***************************************************** 1249 1707 KPMVN 674 RCR 11 C=TOFRM 1250 1710 1032 C=C+A M INC TO 1251 1711 356 BC EX C=DATA B=TOFRM 1252 1712 1360 DATA=C DATA MOVED 1253 1713 STRTMV 356 BC EX A=INCTST C=TOFRM 1254 1714 256 AC EX C=TOFRM A=INCTST 1255 1715 414 ?S8=1 SMALLER MOVE? 1256 1716 63 GONC CHKTOP (1724) NO 1257 1717 1406 ? A0? 761 - 1005 XX>Y? 770 - 756 XYN 1054 - 1023 XYY 1027 - 1010 Y-X 41 - ENTRY TABLE CHK#S 330 - CHK#S1 324 - CHK#S2 331 - CHKAD4 1206 - CHKADR 1156 - CLR 1463 - DEGDO 1452 - DOSKP 1061 - ERRAD 342 - FCNTBL 0 - FIND#1 1565 - FLGANN 1121 - FNDEND 1460 - FSTIN 302 - GETLIN 31 - LOAD3 372 - NOSKP 1031 - OVFL10 51 - P6RTN 1160 - PCKDUR 1374 - RDNSUB 351 - RTJLBL 311 - R^SUB 355 - SEPXY 322 - SETSST 1771 - SIZSUB 1627 - SKP 1056 - STFLGS 1247 - SUMCHK 1147 - SUMCK2 1151 - TONE7 1426 - TONE7X 1333 - TONEB 1335 - TSTMAP 241 - XARCL 1226 - XASHF 1510 - XASTO 1534 - XBEEP 1321 - XCF 1115 - XCLSIG 260 - XDEG 1434 - XDSE 637 - XFS? 1105 - XGRAD 1446 - XISG 640 - XRAD 1442 - XRDN 275 - XR^ 345 - XSCI 1300 - XSF 1112 - XSGREG 1131 - XSIZE 1625 - XSTYON 21 - XTONE 1336 - XX#0? 1021 - XX#Y? 1051 - XX<0? 772 - XX<=0? 1015 - XX<=0A 1011 - XX<=Y? 1001 - XX0? 761 - XX>Y? 770 - Y-X 41 - EXTERNAL REFERENCES (*) 102 (10)^X 127 + 100 - 101 -DEC 137 -OCT 157 / 103 ABS 141 ACOS 135 AD2-10 45 731 AD2-10 46 732 ADVNCE 217 AFORMT 1232 AFORMT 1233 AGTO 35 ANN+14 1440 ANN+14 1441 ANNOUT 1124 ANNOUT 1125 AOFF 213 AON 214 APNDNW 1275 APNDNW 1276 ARCL 233 ARGOUT 1245 ARGOUT 1246 ASHF 210 ASIN 134 ASN 17 ASTO 232 ATAN 136 AVIEW 176 AXEQ 36 BEEP 206 BST 7 CAT 0 CF 251 CHK#S 325 641 1012 CHK#S 326 642 1013 CHS 124 CLA 207 CLDSP 177 CLP 4 CLREG 212 CLSIG 160 CLST 163 CLX 167 COLDST 1220 COLDST 1221 COPY 3 COS 132 D-R 152 DCRT10 1767 DCRT10 1770 DEG 200 DEGDO 1434 1442 1446 DEGDO 1435 1443 1447 DEL 2 DELETE 13 DSE 227 END 300 ENG 236 ENTER^ 203 ERRNE 1216 ERRNE 1217 ERROR 342 ERROR 343 E^X 125 E^X-1 130 FACT 142 FC? 255 FC?C 253 FIND#1 1510 1534 FIND#1 1511 1535 FIX 234 FNDEND 1633 FNDEND 1634 FRAC 151 FS? 254 FS?C 252 GETPC 1061 1747 GETPC 1062 1750 GRAD 202 GTO 320 GTOL 1 H-HMS 154 HMS+ 111 HMS- 112 HMS-H 155 INT 150 ISG 226 LASTX 166 LBL 317 LN 120 LN1+X 145 LOG 126 MEAN 174 MEMLFT 1630 MEMLFT 1631 MOD 113 MODE 14 MSG 1044 1101 MSG 1045 1102 MSGAD 344 MSGNO 1103 MSGYES 1046 NFRPR 347 NFRPR 350 NFRPU 244 1047 NFRPU 245 1050 OFF 215 ONE/X 140 P-R 116 PACK 12 PACKE 1670 PACKE 1671 PATCH6 1156 PATCH6 1157 PCKDUR 1360 PCKDUR 1361 PCT 114 PCTCH 115 PI 162 PROMPT 216 PSE 211 PUTPCX 1065 PUTPCX 1066 R-D 153 R-P 117 R/S 5 RAD 201 RCL 220 RDN 165 RDNSUB 275 RDNSUB 276 RND 156 RTN 205 R^ 164 R^SUB 345 351 353 R^SUB 346 352 354 SCI 235 SF 250 SHF40 747 SHF40 750 SHIFT 16 SIGMA+ 107 SIGMA- 110 SIGN 172 SIGREG 231 SIN 131 SINFR 650 SINFR 651 SIZE 6 SKPLIN 1063 SKPLIN 1064 SQRT 122 SRBMAP 246 SRBMAP 247 SST 10 STAYON 11 STDEV 175 STO 221 STO* 224 STO+ 222 STO- 223 STO/ 225 STOP 204 SUMCHK 260 SUMCHK 261 SUMCK2 1132 SUMCK2 1133 TAN 133 TBITMA 241 TBITMA 242 TONE 237 TONEB 1321 1325 1331 TONEB 1322 1326 1332 VIEW 230 X#0? 143 X#Y? 171 X<0? 146 X<=0? 173 X<=Y? 106 X<> 316 X<>Y 161 X0? 144 X>Y? 105 XEQ 340 XGOIND 256 X^2 121 Y-X 757 770 1001 Y-X 760 771 1002 Y^X 123 End of VASM assembly VASM ROM ASSEMBLY REV. 6/81A OPTIONS: L C S 2 FILE CN6B ***************************************************** * NUT MATH ROM 1 * * HP41C MAINFRAME MICROCODE ADDRESSES @14000-15777 * ***************************************************** ****************************************************** * COMMON MATH ENTRIES *** * IF NUMBER IS 2-10, *** * THEN FORM IS: *** * A HAS 10-DIGIT FORM *** * C HAS 10-DIGIT FORM *** * IF NUMBER IS 1-10, *** * THEN FORM IS: *** * A HAS SIGN AND EXP *** * B HAS 13-DIGIT MANTISSA *** * C HAS 10-DIGIT FORM *** * IF NUMBER IS 2-13, *** * THEN FORM IS: *** * A AND B AS IN 1-10 *** * M HAS SIGN AND EXP *** * C HAS 13-DIGIT MANTISSA *** * *** * ON EXIT, C HAS 10-DIGIT FORM *** * A AND B HAVE 13-DIGIT FORM *** * *** ****************************************************** 28 ENTRY AD2-10 29 ENTRY AD1-10 30 ENTRY AD2-13 31 ENTRY MP2-10 32 ENTRY MP1-10 33 ENTRY MP2-13 34 ENTRY MPY150 35 ENTRY DV2-10 36 ENTRY DV1-10 37 ENTRY DV2-13 38 ENTRY 1/X10 39 ENTRY 1/X13 40 ENTRY X/Y13 41 ENTRY DIV120 42 ENTRY DIV110 43 ENTRY DIV15 44 ENTRY ADDONE 45 ENTRY SUBONE 46 ENTRY SQR10 47 ENTRY SQR13 48 ENTRY ERR0 49 ENTRY NRM10 50 ENTRY NRM11 51 ENTRY NRM12 52 ENTRY NRM13 53 ENTRY LN10 54 ENTRY LNC10* 55 ENTRY XLN1+X 56 ENTRY XY^X 57 ENTRY SHF10 58 ENTRY SHF40 59 0 ADDONE 116 C=0 W 60 1 33 GOTO SUBON1 ( 4) 61 2 SUBONE 116 C=0 W 62 3 1276 C=-C-1 S 63 4 SUBON1 1534 PT= 12 64 5 120 LC 1 65 6 33 GOTO AD1-10 ( 11) 66 7 AD2-10 56 B=0 W 67 10 172 AB EX M 68 11 AD1-10 730 MC EX THESE 2 STATES COULD 69 12 630 C=M BE JUST "M=C" 70 13 106 C=0 X 71 14 AD2-13 76 B=0 S 72 15 136 C=0 S 73 16 730 MC EX 74 17 1434 PT= 1 75 20 ADD10 1724 DEC PT 76 21 566 A=A+1 XS 77 22 1066 C=C+1 XS 78 23 1524 ? PT= 12 79 24 1743 GONC ADD10 ( 20) 80 25 356 BC EX W 81 26 1356 ? C#0 W 82 27 553 GONC ADD60 ( 104) 83 30 730 MC EX 84 31 156 AB EX W 85 32 1356 ? C#0 W 86 33 513 GONC ADD60 ( 104) 87 34 ADD30 1446 ? A * MSG - SET S8 AUTOMATICALLY, THEN DROP TO MSGA * MSGX - PLUG-IN ROM CAN CALL MSGX TO DISPLAY THE MESSAGE IN ROM * IF S8= 1, GOSUB PRT6, BLINK LCD, SET MESSAGE FLAG * IF S8= 0, DON'T PRINT OR SET MESSAGE FLAG * IN: C[6:3]= ADDRESS OF FIRST CHARACTER OF MESSAGE * OUT: IF S8= 1: SST 0 UP, MSG FLAG SET, CHIP 0 ENABLED, C= REG 14 * IF S8= 0: CHIP 0 ENABLED * USES: IF S8= 1: A,C,G,N,ST[7:0], ACTIVE PT, 2 ADDITIONAL SUB LEVELS * IF S8= 0: A,C, ACTIVE PT, 1 ADDITIONAL SUB LEVEL * ASSUME: HEXMODE * * MESSAGE TABLE FORMAT: * EVERY CHAR IN THE MESSAGE COSTS A 10-BIT WORD TO STORE IT. * ENTRY OF EACH MESSAGE POINTING LAST CHAR OF THE MESSAGE. THE * MSG ROUTINE WORKS BACKWARD, IT PICKS UP LAST CHAR FIRST AND SHIFTS * IT FROM RIGHT END TO THE DISPLAY, THEN PICKS UP NEXT LAST ONE UNTIL * DONE WITH THE 1ST CHAR WHICH HAS BIT 8 SET. * CHAR IN THE MESSAGE TABLE IS IN LCD FORM. * 172 153 MSG 410 S8= 1 173 154 MSGA 660 C=STK !!! DOESN'T WORK IN DEC MODE !!!!! 174 155 1140 SETHEX 175 156 1460 CXISA 176 157 1072 C=C+1 M 177 160 560 STK=C POINT TO P+2 178 161 MSGE 674 RCR 11 179 162 534 PT= 6 POINT TO MSG ENTRY 180 163 120 LC 1 IN QUAD 7 181 164 1420 LC 12 182 165 MSGX 416 A=C W 183 166 1 GOSUB CLLCDE 183 167 0 184 170 256 AC EX W 185 171 MSG100 1460 CXISA LOAD A CHAR 186 172 1172 C=C-1 M POINT TO NEXT CHAR 187 173 406 A=C X 188 174 126 C=0 XS 189 175 1650 SRSABC 190 176 1526 ? A#0 XS IS THIS THE LAST CHAR? 191 177 1723 GONC MSG100 ( 171) NO 192 193 ENTRY MSG105 CALLED FROM TIMER ROM 194 200 MSG105 1 GOSUB ENCP00 ENABLE CHIP 0 194 201 0 195 202 414 ?S8=1 196 203 1640 RTN NC 197 204 1615 CON @1615 198 205 674 CON @674 GOSUB PRT6 * TO CONSERVE SUBROUTINE LEVELS, THE PRINTER POPS ITS RETURN OFF * THE STACK AND DOES A GOLONG BACK TO MSG110 201 ENTRY MSG110 FOR THE PRINTER 202 206 MSG110 1 GOLONG MSGDLY DELAY FOR VIEWING MSG 203 207 2 203 AND SET MSGFLG * STATUS SET 0 IS UP FROM MSGDLY 205 EJECT 207 ENTRY SIGMA 208 ENTRY STATCK 209 ENTRY CHSA 210 ENTRY BRT140 211 ENTRY BRT200 212 ENTRY CHSA1 213 ENTRY BRT160 214 ENTRY BRT290 215 ENTRY TRCS10 216 ENTRY TOREC 217 ENTRY ADD1 218 ENTRY ADD2 219 ENTRY TRG240 220 210 SIGMA 1 GOSUB STATCK 220 211 0 221 212 270 C=REGN 2 222 213 SIGMA1 360 CN EX 223 214 260 C=N 224 215 416 A=C W 225 216 114 ?S4=1 226 217 43 GONC SIGMA2 ( 223) 227 220 1 GOSUB GETX 227 221 0 228 222 33 GOTO SIGMA3 ( 225) 229 223 SIGMA2 1 GOSUB GETY 229 224 0 230 225 SIGMA3 1 GOSUB CHSA 230 226 0 231 227 1 GOSUB ADD2 231 230 0 232 231 260 C=N 233 232 416 A=C 234 233 1 GSBLGX MP2-10 234 234 0 235 235 1 GOSUB CHSA 235 236 0 236 237 114 ?S4=1 237 240 43 GONC SIGMA4 ( 244) 238 241 1 GOSUB GETXSQ 238 242 0 239 243 33 GOTO SIGMA5 ( 246) 240 244 SIGMA4 1 GOSUB GETYSQ 240 245 0 241 246 SIGMA5 1 GOSUB ADD1 241 247 0 242 250 106 C=0 X 243 251 1160 DADD=C 244 252 370 C=REGN 3 245 253 114 ?S4=1 246 254 37 GOC SIGMA6 ( 257) 247 255 110 S4= 1 248 256 1353 GOTO SIGMA1 ( 213) 249 257 SIGMA6 416 A=C W 250 260 270 C=REGN 2 251 261 1 GSBLGX MP2-10 251 262 0 252 263 1 GOSUB CHSA 252 264 0 253 265 1 GOSUB GETXY 253 266 0 254 267 1 GOSUB ADD1 254 270 0 255 271 16 A=0 W 256 272 542 A=A+1 PT 257 273 1 GSUBNC CHSA 257 274 0 258 275 1 GOSUB GETN 258 276 0 259 277 1 GOSUB ADD2 259 300 0 260 301 360 NC EX 261 302 116 C=0 W 262 303 1160 DADD=C 263 304 370 C=REGN 3 GET OLD X 264 305 450 REGN=C 4 UPDATE LASTX 265 306 1 GOLONG PATCH9 265 307 2 ****************************************************** * THIS SUBROUTINE CHECKS ALL STAT REGISTERS FOR * ALPHA DATA. IT STARTS AT THE HIGHEST ADDRESS * AND WORKS DOWN THROUGH THE OTHER FIVE REGISTERS. ****************************************************** 271 310 STATCK 1 GOSUB SUMCHK CX=ADR N, B=N 271 311 0 272 312 534 PT= 6 273 313 356 BC EX 274 314 DOCHK 1 GOSUB CHK#S IS THIS NUMBER? 274 315 0 275 316 1140 SETHEX YES 276 317 356 BC EX GET ADR 277 320 1146 C=C-1 X 278 321 1160 DADD=C ADR REGISTER 279 322 356 BC EX SAVE ADR 280 323 70 C=DATA GET NXT REG 281 324 1724 DEC PT COUNT DOWN 282 325 1624 ? PT= 0 283 326 1663 GONC DOCHK ( 314) NO 284 327 116 C=0 285 330 1160 DADD=C 286 331 423 GOTO GET1 ( 373) ******************************************************* 288 332 CHSA 214 ?S5=1 289 333 1640 RTN NC 290 334 CHSA1 276 AC EX S 291 335 1276 C=-C-1 S 292 336 276 AC EX S 293 337 1740 RTN 294 340 ADD1 1 GSBLGX AD1-10 294 341 0 295 342 33 GOTO STOVF ( 345) 296 343 ADD2 1 GSBLGX AD2-10 296 344 0 297 345 STOVF 1 GSBLGX OVFL10 297 346 0 298 347 1360 DATA=C 299 350 1534 PT= 12 300 351 1740 RTN 301 ENTRY GETN 302 ENTRY GETX 303 ENTRY GETXSQ 304 ENTRY GETY 305 ENTRY GETYSQ 306 ENTRY GETXY 307 ENTRY XBAR 308 352 GETN 1724 DEC PT 309 353 GETXY 1724 DEC PT 310 354 GETYSQ 1724 DEC PT 311 355 GETY 1724 DEC PT 312 356 GETXSQ 1724 DEC PT 313 357 GETX 1140 SETHEX 314 360 116 C=0 315 361 1160 DADD=C 316 362 1570 C=REGN 13 317 363 674 RCR 11 318 364 GETADD 1046 C=C+1 X 319 365 1734 INC PT 320 366 1324 ? PT= 13 321 367 1753 GONC GETADD ( 364) 322 370 1146 C=C-1 X 323 371 1160 DADD=C 324 372 70 C=DATA 325 373 GET1 1240 SETDEC 326 374 1534 PT= 12 327 375 1740 RTN 328 376 XBAR 1 GOSUB STATCK 328 377 0 329 400 1 GOSUB GETY 329 401 0 330 402 1 GOSUB XBAR* 330 403 0 331 404 360 CN EX 332 405 1 GOSUB GETX 332 406 0 333 407 XBAR* 416 A=C W 334 410 1 GOSUB GETN 334 411 0 335 412 356 BC EX W 336 413 116 C=0 W 337 414 1160 DADD=C 338 415 356 BC EX W 339 416 1 GOLNGX DV2-10 339 417 2 340 ENTRY XBAR 341 ENTRY SD 342 420 SD 204 S5= 0 343 421 1 GOSUB STATCK 343 422 0 344 423 1 GOSUB GETYSQ 344 424 0 345 425 STDEV1 416 A=C W 346 426 1 GOSUB GETN 346 427 0 347 430 1 GSBLGX MP2-10 347 431 0 348 432 1 GSBLGX STSCR* 348 433 0 349 434 214 ?S5=1 350 435 47 GOC STDEV4 ( 441) 351 436 1 GOSUB GETY 351 437 0 352 440 33 GOTO STDEV5 ( 443) 353 441 STDEV4 1 GOSUB GETX 353 442 0 354 443 STDEV5 416 A=C 355 444 1 GSBLGX MP2-10 355 445 0 356 446 1276 C=-C-1 S 357 447 276 AC EX S 358 450 1 GSBLGX RCSCR* 358 451 0 359 452 1 GSBLGX AD2-13 359 453 0 360 454 1 GOSUB GETN 360 455 0 361 456 1 GSBLGX DV1-10 361 457 0 362 460 1 GSBLGX STSCR* 362 461 0 363 462 1 GOSUB GETN 363 463 0 364 464 56 B=0 W 365 465 372 BC EX M 366 466 416 A=C W 367 467 1 GSBLGX SUBONE 367 470 0 368 471 1 GSBLGX RCSCR* 368 472 0 369 473 1 GSBLGX X/Y13 369 474 0 370 475 1376 ? C#0 S 371 476 1 GOLC ERROF 371 477 3 372 500 1 GSBLGX SQR13 372 501 0 373 502 214 ?S5=1 374 503 1540 RTN C 375 504 360 CN EX 376 505 210 S5= 1 377 506 1 GOSUB GETXSQ 377 507 0 378 510 1153 GOTO STDEV1 ( 425) 379 ENTRY BRT100 380 ENTRY TOPOL 381 ENTRY TRC30 382 ENTRY BRTS10 383 ENTRY TRG430 384 ENTRY TRG100 385 511 TOPOL 260 C=N 386 512 1372 ? C#0 M 387 513 463 GONC TOPOL2 ( 561) 388 514 1376 ? C#0 S 389 515 43 GONC TOPOL1 ( 521) 390 516 1210 S7= 1 391 517 1610 S0= 1 392 520 136 C=0 S 393 521 TOPOL1 360 NC EX 394 522 416 A=C W 395 523 1 GOSUB MP2-10 CALC X^2 395 524 0 396 525 1 GOSUB STSCR 396 526 0 397 527 270 C=REGN 2 398 530 416 A=C W 399 531 1 GOSUB MP2-10 CALC Y^2 399 532 0 400 533 1 GOSUB RCSCR 400 534 0 401 535 1 GOSUB AD2-13 CALC X^2+Y^2 401 536 0 402 537 1 GOSUB SQR13 CALC SQR(X^2+Y^2) 402 540 0 403 541 360 NC EX 404 542 416 A=C W 405 543 270 C=REGN 2 406 544 256 AC EX W 407 545 1 GOSUB DV2-10 407 546 0 408 547 1372 ? C#0 M 409 550 337 GOC BRT110 ( 603) 410 551 16 A=0 W 411 552 313 GOTO BRT110 ( 603) 412 553 BRTS10 1614 ?S0=1 413 554 37 GOC BRTS20 ( 557) 414 555 1610 S0= 1 415 556 1740 RTN 416 557 BRTS20 1604 S0= 0 417 560 1740 RTN 418 561 TOPOL2 256 AC EX W 419 562 1210 S7= 1 420 563 1376 ? C#0 S 421 564 23 GONC TOPOL4 ( 566) 422 565 510 S6= 1 423 566 TOPOL4 136 C=0 S 424 567 360 NC EX 425 570 260 C=N 426 571 1372 ? C#0 M 427 572 1640 RTN NC 428 573 TOPOL3 16 A=0 W 429 574 753 GOTO BRT301 ( 671) 430 575 BRT120 1 GOSUB BRTS10 430 576 0 431 577 1743 GOTO TOPOL3 ( 573) 432 600 BRT100 56 B=0 W 433 601 416 A=C W 434 602 172 AB EX M 435 603 BRT110 1376 ? C#0 S 436 604 113 GONC BRT130 ( 615) 437 605 510 S6= 1 438 606 1014 ?S2=1 439 607 63 GONC BRT130 ( 615) 440 610 1614 ?S0=1 441 611 43 GONC BRT130 ( 615) 442 612 1604 S0= 0 443 613 1210 S7= 1 444 614 504 S6= 0 445 615 BRT130 1534 PT= 12 446 616 246 AC EX X 447 617 406 A=C X 448 620 746 C=C+C X 449 621 1 GOLC BRT140 449 622 3 450 623 BRT150 1506 ? A#0 X 451 624 217 GOC BRT170 ( 645) 452 625 316 C=B W 453 626 1316 ? B#0 W 454 627 1443 GONC TOPOL3 ( 573) 455 630 1534 PT= 12 456 631 1142 C=C-1 PT 457 632 1356 ? C#0 W 458 633 127 GOC BRT170 ( 645) 459 634 1414 ?S1=1 460 635 1407 GOC BRT120 ( 575) 461 636 1 GSBLGX TRC10 461 637 0 462 640 16 A=0 W 463 641 646 A=A-1 X 464 642 256 AC EX W 465 643 1 GOLONG BRT200 465 644 2 466 645 BRT170 1414 ?S1=1 467 646 1 GOLCX ERR0 467 647 3 468 650 BRT160 1 GSBLGX 1/X13 468 651 0 469 652 1 GOSUB BRTS10 469 653 0 470 654 BRT290 156 AB EX W 471 655 316 C=B W 472 656 1534 PT= 12 473 657 132 C=0 M 474 660 136 C=0 S 475 661 BRT300 1046 C=C+1 X 476 662 1346 ? C#0 X 477 663 103 GONC BRT310 ( 673) 478 664 1076 C=C+1 S 479 665 1724 DEC PT 480 666 524 ? PT= 6 481 667 1723 GONC BRT300 ( 661) 482 670 356 BC EX W 483 671 BRT301 1 GOLONG BRT200 483 672 2 484 673 BRT310 730 MC EX 485 674 116 C=0 W 486 675 1076 C=C+1 S 487 676 1716 C SR W 488 677 153 GOTO BRT340 ( 714) 489 700 BRT320 256 AC EX W 490 701 730 MC EX 491 702 1042 C=C+1 PT 492 703 436 A=C S 493 704 730 MC EX 494 705 BRT330 1656 B SR W 495 706 1656 B SR W 496 707 676 A=A-1 S 497 710 1753 GONC BRT330 ( 705) 498 711 36 A=0 S 499 712 456 A=A+B W 500 713 256 AC EX W 501 714 BRT340 216 B=A W 502 715 716 A=A-C W 503 716 1623 GONC BRT320 ( 700) 504 717 730 MC EX 505 720 1076 C=C+1 S 506 721 730 MC EX 507 722 156 AB EX W 508 723 1756 A SL W 509 724 1724 DEC PT 510 725 524 ? PT= 6 511 726 1663 GONC BRT340 ( 714) 512 727 356 BC EX W 513 730 1 GSBLGX DIV120 513 731 0 514 732 156 AB EX W 515 733 730 MC EX 516 734 106 C=0 X 517 735 1234 PT= 7 518 736 BRT350 356 BC EX W 519 737 1 GOSUB TRC30 519 740 0 520 741 356 BC EX W 521 742 23 GOTO BRT370 ( 744) 522 743 BRT360 456 A=A+B W 523 744 BRT370 1142 C=C-1 PT 524 745 1763 GONC BRT360 ( 743) 525 746 1616 A SR W 526 747 102 C=0 PT 527 750 1372 ? C#0 M 528 751 433 GONC BRT190 (1014) 529 752 1734 INC PT 530 753 1633 GOTO BRT350 ( 736) 531 754 BRT140 1414 ?S1=1 532 755 343 GONC BRT141 (1011) 533 756 1 GSBLGX STSCR 533 757 0 534 760 1 GSBLGX ADDONE 534 761 0 535 762 1 GSBLGX EXSCR 535 763 0 536 764 1 GSBLGX SUBONE 536 765 0 537 766 1 GSBLGX RCSCR 537 767 0 538 770 1 GSBLGX MP2-13 538 771 0 539 772 36 A=0 S 540 773 1 GSBLGX SQR13 540 774 0 541 775 260 C=N 542 776 136 C=0 S 543 777 730 MC EX 544 1000 630 C=M 545 1001 106 C=0 X 546 1002 1 GSBLGX X/Y13 546 1003 0 547 1004 246 AC EX X 548 1005 406 A=C X 549 1006 746 C=C+C X 550 1007 1 GOLNC BRT160 550 1010 2 551 1011 BRT141 1 GOLONG BRT290 551 1012 2 552 1013 BRT180 1734 INC PT 553 1014 BRT190 1146 C=C-1 X 554 1015 1524 ? PT= 12 555 1016 1753 GONC BRT180 (1013) 556 1017 BRT200 136 C=0 S 557 1020 1 GSBLGX SHF10 557 1021 0 558 1022 1614 ?S0=1 559 1023 73 GONC BRT220 (1032) 560 1024 1276 C=-C-1 S 561 1025 276 AC EX S 562 1026 1 GSBLGX PI/2 562 1027 0 563 1030 1 GSBLGX AD2-13 563 1031 0 564 1032 BRT220 1214 ?S7=1 565 1033 53 GONC BRT240 (1040) 566 1034 1 GSBLGX PI/2 566 1035 0 567 1036 1 GSBLGX AD2-13 567 1037 0 568 1040 BRT240 114 ?S4=1 569 1041 207 GOC BRT250 (1061) 570 1042 1 GSBLGX PI/2 570 1043 0 571 1044 546 A=A+1 X 572 1045 546 A=A+1 X 573 1046 0 NOP 574 1047 1 GSBLGX DV2-13 574 1050 0 575 1051 214 ?S5=1 576 1052 77 GOC BRT250 (1061) 577 1053 116 C=0 W 578 1054 1534 PT= 12 579 1055 1146 C=C-1 X 580 1056 1120 LC 9 581 1057 1 GSBLGX MP1-10 581 1060 0 582 1061 BRT250 514 ?S6=1 583 1062 23 GONC BRT260 (1064) 584 1063 1276 C=-C-1 S 585 1064 BRT260 1014 ?S2=1 586 1065 1540 RTN C 587 1066 360 NC EX 588 1067 1740 RTN 589 1070 TRC30 116 C=0 W 590 1071 1156 C=C-1 W 591 1072 136 C=0 S 592 1073 1524 ? PT= 12 593 1074 157 GOC TRC90 (1111) 594 1075 624 ? PT= 11 595 1076 357 GOC TRC50 (1133) 596 1077 324 ? PT= 10 597 1100 447 GOC TRC60 (1144) 598 1101 1124 ? PT= 9 599 1102 517 GOC TRC70 (1153) 600 1103 424 ? PT= 8 601 1104 547 GOC TRC80 (1160) 602 1105 1634 PT= 0 603 1106 TRC35 720 LC 7 604 1107 TRC40 1234 PT= 7 605 1110 1740 RTN 606 1111 TRC90 334 PT= 10 607 1112 620 LC 6 608 1113 620 LC 6 609 1114 1020 LC 8 610 1115 620 LC 6 611 1116 520 LC 5 612 1117 220 LC 2 613 1120 420 LC 4 614 1121 1120 LC 9 615 1122 120 LC 1 616 1123 120 LC 1 617 1124 620 LC 6 618 1125 TRC91 1534 PT= 12 619 1126 1740 RTN 620 1127 TRCS10 620 LC 6 621 1130 1624 ? PT= 0 622 1131 1763 GONC TRCS10 (1127) 623 1132 1543 GOTO TRC35 (1106) 624 1133 TRC50 434 PT= 8 625 1134 1 GOSUB TRCS10 625 1135 0 626 1136 1634 PT= 0 627 1137 520 LC 5 628 1140 134 PT= 4 629 1141 1020 LC 8 630 1142 634 PT= 11 631 1143 1740 RTN 632 1144 TRC60 534 PT= 6 633 1145 1 GOSUB TRCS10 633 1146 0 634 1147 1634 PT= 0 635 1150 1120 LC 9 636 1151 334 PT= 10 637 1152 1740 RTN 638 1153 TRC70 134 PT= 4 639 1154 1 GOSUB TRCS10 639 1155 0 640 1156 1134 PT= 9 641 1157 1740 RTN 642 1160 TRC80 1034 PT= 2 643 1161 1 GOSUB TRCS10 643 1162 0 644 1163 434 PT= 8 645 1164 1740 RTN 646 1165 TOREC 1010 S2= 1 647 1166 1410 S1= 1 648 1167 256 AC EX W 649 1170 TRG100 16 A=0 W 650 1171 56 B=0 W 651 1172 272 AC EX M 652 1173 1376 ? C#0 S 653 1174 103 GONC TRG130 (1204) 654 1175 1210 S7= 1 655 1176 1414 ?S1=1 656 1177 33 GONC TRG110 (1202) 657 1200 1614 ?S0=1 658 1201 23 GONC TRG120 (1203) 659 1202 TRG110 510 S6= 1 660 1203 TRG120 136 C=0 S 661 1204 TRG130 356 BC EX W 662 1205 114 ?S4=1 663 1206 1 GOLC TRG240 663 1207 3 664 1210 214 ?S5=1 665 1211 53 GONC TRG135 (1216) 666 1212 256 AC EX W 667 1213 416 A=C W 668 1214 1716 C SR W 669 1215 716 A=A-C W 670 1216 TRG135 116 C=0 W 671 1217 1534 PT= 12 672 1220 420 LC 4 673 1221 520 LC 5 674 1222 356 BC EX W 675 1223 1146 C=C-1 X 676 1224 1366 ? C#0 XS 677 1225 57 GOC TRG140 (1232) 678 1226 1146 C=C-1 X 679 1227 33 GONC TRG140 (1232) 680 1230 1046 C=C+1 X 681 1231 1616 A SR W 682 1232 TRG140 356 BC EX W 683 1233 TRG150 730 MC EX 684 1234 630 C=M 685 1235 756 C=C+C W 686 1236 756 C=C+C W 687 1237 756 C=C+C W 688 1240 1716 C SR W 689 1241 356 BC EX W 690 1242 1366 ? C#0 XS 691 1243 237 GOC TRG180 (1266) 692 1244 TRG155 616 A=A-B W 693 1245 1773 GONC TRG155 (1244) 694 1246 456 A=A+B W 695 1247 1756 A SL W 696 1250 1146 C=C-1 X 697 1251 1733 GONC TRG155 (1244) 698 1252 116 C=0 W 699 1253 356 BC EX W 700 1254 630 C=M 701 1255 756 C=C+C W 702 1256 114 ?S4=1 703 1257 33 GONC TRG160 (1262) 704 1260 1616 A SR W 705 1261 1716 C SR W 706 1262 TRG160 356 BC EX W 707 1263 TRG170 616 A=A-B W 708 1264 133 GONC TRG190 (1277) 709 1265 456 A=A+B W 710 1266 TRG180 356 BC EX W 711 1267 630 C=M 712 1270 356 BC EX W 713 1271 114 ?S4=1 714 1272 413 GONC TRG270 (1333) 715 1273 1346 ? C#0 X 716 1274 367 GOC TRG260 (1332) 717 1275 1756 A SL W 718 1276 353 GOTO TRG270 (1333) 719 1277 TRG190 1614 ?S0=1 720 1300 107 GOC TRG220 (1310) 721 1301 1610 S0= 1 722 1302 TRG200 514 ?S6=1 723 1303 37 GOC TRG210 (1306) 724 1304 510 S6= 1 725 1305 1563 GOTO TRG170 (1263) 726 1306 TRG210 504 S6= 0 727 1307 1543 GOTO TRG170 (1263) 728 1310 TRG220 1604 S0= 0 729 1311 1414 ?S1=1 730 1312 1703 GONC TRG200 (1302) 731 1313 1214 ?S7=1 732 1314 33 GONC TRG230 (1317) 733 1315 1204 S7= 0 734 1316 1453 GOTO TRG170 (1263) 735 1317 TRG230 1210 S7= 1 736 1320 1433 GOTO TRG170 (1263) 737 1321 TRG240 1 GSBLGX TRC10 737 1322 0 738 1323 1103 GOTO TRG150 (1233) 739 1324 TRG250 156 AB EX W 740 1325 616 A=A-B W 741 1326 0 NOP 742 1327 1 GOSUB BRTS10 742 1330 0 743 1331 73 GOTO TRG280 (1340) 744 1332 TRG260 1046 C=C+1 X 745 1333 TRG270 1366 ? C#0 XS 746 1334 47 GOC TRG280 (1340) 747 1335 616 A=A-B W 748 1336 1663 GONC TRG250 (1324) 749 1337 456 A=A+B W 750 1340 TRG280 1146 C=C-1 X 751 1341 0 NOP 752 1342 1 GSBLGX SHF10 752 1343 0 753 1344 114 ?S4=1 754 1345 137 GOC TRG300 (1360) 755 1346 630 C=M 756 1347 756 C=C+C W 757 1350 1146 C=C-1 X 758 1351 0 NOP 759 1352 1 GSBLGX DV1-10 759 1353 0 760 1354 1 GSBLGX PI/2 760 1355 0 761 1356 1 GSBLGX MP2-13 761 1357 0 762 1360 TRG300 730 MC EX 763 1361 256 AC EX W 764 1362 416 A=C W 765 1363 1046 C=C+1 X 766 1364 73 GONC TRG310 (1373) 767 1365 156 AB EX W 768 1366 1756 A SL W 769 1367 73 GOTO TRG330 (1376) 770 1370 TRG305 1724 DEC PT 771 1371 524 ? PT= 6 772 1372 667 GOC TRG315 (1460) 773 1373 TRG310 1046 C=C+1 X 774 1374 1743 GONC TRG305 (1370) 775 1375 156 AB EX W 776 1376 TRG330 116 C=0 W 777 1377 TRG340 356 BC EX W 778 1400 1 GOSUB TRC30 778 1401 0 779 1402 356 BC EX W 780 1403 23 GOTO TRG800 (1405) 781 1404 TRG810 1076 C=C+1 S 782 1405 TRG800 616 A=A-B W 783 1406 1763 GONC TRG810 (1404) 784 1407 456 A=A+B W 785 1410 1724 DEC PT 786 1411 1716 C SR W 787 1412 1756 A SL W 788 1413 524 ? PT= 6 789 1414 1633 GONC TRG340 (1377) 790 1415 730 MC EX 791 1416 1616 A SR W 792 1417 1616 A SR W 793 1420 116 C=0 W 794 1421 1534 PT= 12 795 1422 120 LC 1 796 1423 730 MC EX 797 1424 1634 PT= 0 798 1425 620 LC 6 799 1426 620 LC 6 800 1427 133 GOTO TRG370 (1442) 801 1430 TRG350 1612 A SR WPT 802 1431 1612 A SR WPT 803 1432 TRG360 676 A=A-1 S 804 1433 1753 GONC TRG350 (1430) 805 1434 36 A=0 S 806 1435 730 MC EX 807 1436 256 AC EX W 808 1437 1116 C=A-C W 809 1440 456 A=A+B W 810 1441 730 MC EX 811 1442 TRG370 216 B=A W 812 1443 436 A=C S 813 1444 1142 C=C-1 PT 814 1445 1653 GONC TRG360 (1432) 815 1446 256 AC EX W 816 1447 1772 A SL M 817 1450 256 AC EX W 818 1451 1372 ? C#0 M 819 1452 413 GONC TRG400 (1513) 820 1453 1176 C=C-1 S 821 1454 1146 C=C-1 X 822 1455 36 A=0 S 823 1456 1616 A SR W 824 1457 1633 GOTO TRG370 (1442) 825 1460 TRG315 630 C=M 826 1461 1014 ?S2=1 827 1462 517 GOC TRG430 (1533) 828 1463 1614 ?S0=1 829 1464 473 GONC TRG430 (1533) 830 1465 1 GSBLGX 1/X13 830 1466 0 831 1467 443 GOTO TRG430 (1533) 832 1470 TOREC1 260 C=N 833 1471 730 MC EX 834 1472 630 C=M 835 1473 106 C=0 X 836 1474 1 GSBLGX X/Y13 836 1475 0 837 1476 360 NC EX 838 1477 1 GSBLGX RCSCR 838 1500 0 839 1501 1 GSBLGX MP2-13 839 1502 0 840 1503 1614 ?S0=1 841 1504 23 GONC TOREC2 (1506) 842 1505 360 NC EX 843 1506 TOREC2 1214 ?S7=1 844 1507 23 GONC TOREC3 (1511) 845 1510 1276 C=-C-1 S 846 1511 TOREC3 360 NC EX 847 1512 413 GOTO TRG500 (1553) 848 1513 TRG400 136 C=0 S 849 1514 730 MC EX 850 1515 256 AC EX W 851 1516 630 C=M 852 1517 656 A=A-1 W 853 1520 1014 ?S2=1 854 1521 37 GOC TRG415 (1524) 855 1522 1614 ?S0=1 856 1523 37 GOC TRG420 (1526) 857 1524 TRG415 1206 C=-C X 858 1525 156 AB EX W 859 1526 TRG420 1332 ? B#0 M 860 1527 303 GONC TRG440 (1557) 861 1530 730 MC EX 862 1531 1 GSBLGX DIV15 862 1532 0 863 1533 TRG430 1414 ?S1=1 864 1534 173 GONC TRG500 (1553) 865 1535 1 GSBLGX STSCR 865 1536 0 866 1537 1 GSBLGX RCSCR 866 1540 0 867 1541 1 GSBLGX MP2-13 867 1542 0 868 1543 1 GSBLGX ADDONE 868 1544 0 869 1545 1 GSBLGX SQR13 869 1546 0 870 1547 1014 ?S2=1 871 1550 1207 GOC TOREC1 (1470) 872 1551 1 GSBLGX 1/X13 872 1552 0 873 1553 TRG500 514 ?S6=1 874 1554 1640 RTN NC 875 1555 1276 C=-C-1 S 876 1556 1740 RTN 877 1557 TRG440 116 C=0 W 878 1560 1534 PT= 12 879 1561 1152 C=C-1 WPT 880 1562 126 C=0 XS 881 1563 416 A=C W 882 1564 216 B=A W 883 1565 1414 ?S1=1 884 1566 1640 RTN NC 885 1567 1443 GOTO TRG430 (1533) 886 1570 0 NOP PRESERVE ENTRY POINT ADDRESSES 887 ENTRY TODEC 888 ENTRY TOOCT ******************************************** * IF S4=1, THEN DOING TO DECIMAL * * IF S4=0, THEN DOING TO OCTAL * ******************************************** 893 1571 TOOCT 1 GSBLGX INTFRC 893 1572 0 894 1573 1372 ? C#0 M 895 1574 1 GOLCX ERR0 895 1575 3 896 1576 260 C=N 897 1577 114 ?S4=1 898 1600 637 GOC TODEC (1663) 899 1601 416 A=C W 900 1602 36 A=0 S 901 1603 116 C=0 W 902 1604 1534 PT= 12 903 1605 1146 C=C-1 X 904 1606 320 LC 3 905 1607 1 GSBLGX AD2-10 905 1610 0 906 1611 116 C=0 W 907 1612 120 LC 1 908 1613 20 LC 0 909 1614 720 LC 7 910 1615 320 LC 3 911 1616 720 LC 7 912 1617 420 LC 4 913 1620 120 LC 1 914 1621 1020 LC 8 915 1622 220 LC 2 916 1623 420 LC 4 917 1624 1634 PT= 0 918 1625 1120 LC 9 919 1626 1 GSBLGX DV1-10 919 1627 0 920 1630 1366 ? C#0 XS 921 1631 1 GOLNCX ERR0 921 1632 2 922 1633 340 SEL Q 923 1634 434 PT= 8 924 1635 240 SEL P 925 1636 1634 PT= 0 926 1637 156 AB EX W 927 1640 23 GOTO TOOCT2 (1642) 928 1641 TOOCT1 1616 A SR W 929 1642 TOOCT2 1046 C=C+1 X 930 1643 1763 GONC TOOCT1 (1641) 931 1644 116 C=0 W 932 1645 256 AC EX W 933 1646 TOOCT3 756 C=C+C W 934 1647 756 C=C+C W 935 1650 756 C=C+C W 936 1651 1756 A SL W 937 1652 1374 RCR 13 938 1653 240 SEL P 939 1654 242 AC EX PT 940 1655 340 SEL Q 941 1656 1716 C SR W 942 1657 1724 DEC PT 943 1660 1524 ? PT= 12 944 1661 1653 GONC TOOCT3 (1646) 945 1662 423 GOTO TODEC6 (1724) 946 1663 TODEC 1634 PT= 0 947 1664 102 C=0 PT 948 1665 1346 ? C#0 X 949 1666 1 GOLCX ERR0 949 1667 3 950 1670 260 C=N 951 1671 TODEC1 1042 C=C+1 PT 952 1672 37 GOC TODEC2 (1675) 953 1673 1732 C SR M 954 1674 1753 GOTO TODEC1 (1671) 955 1675 TODEC2 256 AC EX W 956 1676 642 A=A-1 PT 957 1677 116 C=0 W 958 1700 56 B=0 W 959 1701 1534 PT= 12 960 1702 1020 LC 8 961 1703 1534 PT= 12 962 1704 356 BC EX W 963 1705 TODEC7 1442 ? ASTART ADDR? 123 112 57 GOC PAK117 ( 117) YES, DON'T TOUCH PC 124 113 1402 ? ASTART ADDR? 127 116 23 GONC PAK118 ( 120) NO, MUST ADJUST PC 128 117 PAK117 12 A=0 WPT LEAVE THE PGMPC ALONE 129 120 PAK118 256 AC EX 130 121 374 RCR 10 C[7:4] _ OLD PC 131 122 312 C=B WPT 132 123 160 N=C 133 124 PAK130 404 S8= 0 REMEMBER LAST LINE NOT A D.E. * 135 125 PAK200 260 C=N C[3:0] _ STARTING PICK UP ADDR 136 126 412 A=C WPT 137 127 PAK210 212 B=A WPT 138 130 260 C=N 139 131 312 C=B WPT 140 132 160 N=C 141 133 1 GOSUB NXBYTA PICK UP NEXT BYTE 141 134 0 142 135 1574 RCR 12 CHECK IF IT IS A NULL ? 143 136 1342 ? C#0 PT 144 137 37 GOC PAK220 ( 142) NOT A NULL 145 140 1366 ? C#0 XS 146 141 1663 GONC PAK210 ( 127) SKIP A NULL 147 142 PAK220 1142 C=C-1 PT IS IT A ROW 0 FC ? 148 143 277 GOC PAK250 ( 172) YES 149 144 1142 C=C-1 PT IS IT A ROW 1 FC ? 150 145 253 GONC PAK250 ( 172) NO 151 146 766 C=C+C XS IS COLUMN # <= 7 ? 152 147 53 GONC PAK230 ( 154) YES, IT IS A D.E. 153 150 766 C=C+C XS IS COLUMN # <= 11 ? 154 151 33 GONC PAK230 ( 154) YES, IT IS A D.E. 155 152 1366 ? C#0 XS IS IT A CHS ? 156 153 177 GOC PAK250 ( 172) NO 157 154 PAK230 414 ?S8=1 PREVIOUS LINE A D.E. ? 158 155 133 GONC PAK240 ( 170) NO 159 156 630 C=M LOAD NEXT PACKED ADDR 160 157 412 A=C WPT 161 160 106 C=0 X 162 161 1 GOSUB PTBYTA STORE A NULL BETWEEN D.E. 162 162 0 163 163 1 GOSUB INCADA POINT TO NEXT PACKED ADDR 163 164 0 164 165 630 C=M 165 166 252 AC EX WPT 166 167 530 M=C 167 170 PAK240 410 S8= 1 REMEMBER THIS LINE IS D.E. 168 171 23 GOTO PAK260 ( 173) 169 172 PAK250 404 S8= 0 REMEMBER THIS LINE NOT A D.E. 170 173 PAK260 260 C=N 171 174 412 A=C WPT A[3:0] _ POSSIBLE NEW PC 172 175 174 RCR 4 C[3:0] _ OLD PC 173 176 1406 ? A * ERROR ROUTINE PERFORMS : * 1. IF ERROR FLAG ALREADY SET, RESET IT, RTN TO NFRKB * 2. UNCONDITIONAL RESET DATAENTRY FLAG, AND OTHERS * 3. DISPLAY ERROR MESSAGE * 4. IF PROGRAM RUNNING, STOP RUNNING AND DO A BACK STEP * 5. ALWAYS RETURN TO NFRKB, WON'T RETURN TO CALLING PROGRAM * * * ERR110 - ERROR EXIT SIMPLY DECIDE TO DO A BACK STEP OR NOT BEFORE * RETURNING TO NFR. REQUIRED STATUS SET 0 LOADING. * 893 ENTRY ERRSUB 894 1350 ERRSUB 1 GOSUB RSTMS0 ENABLE CHIP 0 AND 894 1351 0 895 CLEAR DATAENTRY FLAG 896 1352 410 S8= 1 TELL MSG TO SET MSGFLAG 897 1353 1140 SETHEX 898 1354 1274 RCR 7 899 1355 1530 ST=C 900 1356 1014 ?S2=1 ERROR FLAG ? 901 1357 1640 RTN NC NO 902 1360 1004 S2= 0 RESET ERROR FLAG 903 1361 1630 C=ST 904 1362 1274 RCR 7 905 1363 1650 REGN=C 14 906 1364 ERRTN 1473 GOTO XDELEX (1333) * 908 1365 ERROR 1 GOSUB ERRSUB 908 1366 0 909 1367 660 C=STK 910 1370 1460 CXISA 911 1371 1 GOSUB MSGE 911 1372 0 912 1373 ERR110 1314 ?S13=1 RUNNING ? 913 1374 37 GOC ERR120 (1377) YES 914 1375 114 ?S4=1 SST ? 915 1376 33 GONC ERR130 (1401) NO 916 1377 ERR120 1 GOSUB BSTEP 916 1400 0 917 ERR130 918 1401 1 GOSUB STOPS CLEAR PAUSEFLAG & RUNNING 918 1402 0 919 1403 1 GOSUB LINNUM GUARANTEE VALID LINE NUMBER 919 1404 0 920 FOR PARSE IN PRGM MODE 921 1405 1573 GOTO ERRTN (1364) * * * DELLIN - DELETE LINE FROM PROGRAM MEMORY * THIS ROUTINE DELETES A LINE OF CODE STARTING WITH THE *- NEXT BYTE AFTER THE ONE SPECIFIED BY A[3:0] IN MM FORMAT. * WILL NOT DELETE THE FINAL END. * RETURNS S6=1 IF END DELETED. * IF A CHAIN ELEMENT IS DELETED, THE PREVIOUS LINK IS UPDATED *- TO INCLUDE THE DELETED LINK. * USES A[3:0],B,C,M,3 SUBROUTINE LEVELS * * NOTE !!! THIS ROUTINE CANNOT BE CALLED FROM A SUBROUTINE * 935 1406 DELLIN 252 AC EX WPT SAVE STARTING ADDRESS 936 1407 412 A=C WPT 937 1410 530 M=C 938 1411 110 S4= 1 939 1412 1210 S7= 1 940 1413 1 GOSUB NXLDEL FIND THE ENDING ADDRESS 940 1414 0 941 1415 630 C=M RETRIEVE THE STARTING ADDRESS 942 1416 252 AC EX WPT AND SAVE THE ENDING ADDRESS 943 1417 530 M=C 944 1420 63 GOTO DELLN1 (1426) ZERO OUT APPROPRIATE BYTES 945 1421 DELLN2 116 C=0 ZERO 1 BYTE 946 1422 1 GOSUB INCADA MOVE THERE 946 1423 0 947 1424 1 GOSUB PTBYTA PUT ZEROS IN 947 1425 0 948 1426 DELLN1 630 C=M RETRIEVE THE ENDING ADDRESS 949 1427 1552 ? A#C WPT DONE? 950 1430 1717 GOC DELLN2 (1421) NO, DELETE SOME MORE 951 1431 1740 RTN ALL DONE 952 * * PTLINK - PUT LINK * PUTS C[3:0] INTO PROGRAM MEMORY AT THE ADDRESS POINTED TO *- A[3:0] IN MM FORMAT. * PT=3 EXPECTED AND RETURNED * USES B[3:0] * THIS ROUTINE MIXED IN WITH PTBYTA * 961 1432 PTLINK 252 AC EX WPT SAVE BYTES TO STORE 962 1433 PTLNKA 212 B=A WPT IN B 963 1434 1160 DADD=C WAKE UP THE RIGHT REGISTER 964 1435 412 A=C WPT RESTORE A 965 1436 174 RCR 4 PREPARE FOR BRANCH TABLE (7) 966 1437 460 LDI * TABLE JUMP 968 1440 1203 CON @1203 PUT LINK TABLE ADDRESS 969 1441 PTLNKB 374 RCR 10 PUT ADDRESS IN POSITION 970 1442 740 GOTOC 7-WAY BRANCH * * PTBYTA - PUT BYTE * PUT THE BYTE IN C[1:0] INTO RAM AT THE ADDRESS *- POINTED TO BY A[3:0] IN MM FORMAT. * PT=3 OUT. * USES B[1:0] * 978 1443 PTBYTA 256 AC EX SAVE BYTE TO STORE IN B 979 1444 1434 PT= 1 SET UP FOR 1-BYTE STORE 980 1445 212 B=A WPT SAVE BYTE 981 1446 1160 DADD=C WAKE UP THE RIGHT REG. 982 1447 416 A=C RESTORE A 983 1450 PTBYTP 174 RCR 4 PREPARE FOR TABLE JUMP 984 1451 460 LDI * TABLE JUMP 986 1452 1200 CON @1200 PUT BYTE TABLE ADDRESS 987 1453 1663 GOTO PTLNKB (1441) * * PUTPC - PUT AWAY THE PROGRAM COUNTER * PLACES A[3:0] IN MM FORMAT INTO THE PC AFTER CONVERTING *- TO PC FORMAT BY SHIFTING A[3] RIGHT 1 BIT IF S10=0 * PT=3 ASSUMED AND RETURNED * * PUTPCF - SAME AS PUTPC, BUT SETS LINE# TO FFF * * PUTPCX - SAME AS PUTPCF EXCEPT IF RUNNING LINE# NOT SET TO FFF * * PUTPCD - SAME AS PUTPC EXCEPT CALLS DECAD BEFORE GOING TO PUTPC * CONSEQUENTLY USES 1 SUBROUTINE LEVEL * 1001 ENTRY PUTPCD 1002 1454 PUTPCD 1 GOSUB DECAD 1002 1455 0 1003 1456 113 GOTO PUTPC (1467) * 1005 1457 PUTPCX 1314 ?S13=1 RUNNING? 1006 1460 77 GOC PUTPC (1467) YES, DON'T SET LINE# TO FFF 1007 1461 PUTPCF 116 C=0 SET LINE# TO FFF 1008 1462 1160 DADD=C 1009 1463 1770 C=REGN 15 1010 1464 106 C=0 X 1011 1465 1146 C=C-1 X 1012 1466 1750 REGN=C 15 1013 1467 PUTPC 106 C=0 X 1014 1470 1160 DADD=C 1015 1471 PUTPCA 1470 C=REGN 12 GET PC 1016 1472 252 AC EX WPT 1017 1473 412 A=C WPT NEW PC IN PLACE 1018 1474 314 ?S10=1 ROM ADDRESS? 1019 1475 127 GOC PUTPC3 (1507) YES, NO SHIFT 1020 1476 742 C=C+C PT SHIFT 1 BIT RIGHT 1021 1477 23 GONC PUTPC1 (1501) 1022 1500 1042 C=C+1 PT 1023 1501 PUTPC1 742 C=C+C PT 1024 1502 23 GONC PUTPC2 (1504) 1025 1503 1042 C=C+1 PT 1026 1504 PUTPC2 742 C=C+C PT 1027 1505 23 GONC PUTPC3 (1507) 1028 1506 1042 C=C+1 PT 1029 1507 PUTPC3 1450 REGN=C 12 PUT PC BACK 1030 1510 1740 RTN * SPECIAL DELETE AND PACK LOGIC HERE 1032 1511 SKPDEL 114 ?S4=1 DELETE LOGIC? 1033 1512 1 GOLNC PAKSPC PACK LOGIC GOES HERE 1033 1513 2 1034 1514 SKPDL 1 GOSUB INCADA MOVE INSIDE LINK 1034 1515 0 1035 1516 1 GOSUB FLINKA FIND VARIOUS LINKS 1035 1517 0 1036 1520 252 AC EX WPT 1037 1521 412 A=C WPT RESTORE ADDRESS BEFORE LINK 1038 1522 1 GOSUB DECADA 1038 1523 0 1039 1524 252 AC EX WPT 1040 1525 530 M=C SAVE CURRENT AND PREVIOUS LINK ADDRESSES 1041 1526 1 GOSUB GTLINK GET THE CURRENT LINK 1041 1527 0 1042 1530 1076 C=C+1 S END? 1043 1531 137 GOC SKPD7 (1544) NO, ALPHA LABEL. 1044 1532 510 S6= 1 END, REMEMBER IT. 1045 1533 214 ?S5=1 TRAVERSE THE END? (DELET) 1046 1534 63 GONC SKPD4 (1542) NO, (DEL NNN) 1047 1535 1176 C=C-1 S FINAL END? 1048 1536 776 C=C+C S 1049 1537 776 C=C+C S 1050 1540 776 C=C+C S 1051 1541 343 GONC SKPD1 (1575) NO, TRAVERSE THE END 1052 1542 SKPD4 660 C=STK THIS IS A SPECIAL CASE EXIT OUT 1053 1543 1740 RTN OF DELLIN!!! WATCH OUT!!! 1054 1544 SKPD7 630 C=M SAVE M IN B 1055 1545 356 BC EX 1056 1546 1 GOSUB INCAD2 CHECK BYTE AFTER TEXT CHAR. 1056 1547 0 1057 1550 1 GOSUB NXBYTA GET KEYCODE 1057 1551 0 1058 1552 1434 PT= 1 1059 1553 1152 C=C-1 WPT SUBTRACT 1 1060 1554 117 GOC SKPD6 (1565) DO NOTHING IF 0 KEYCODE 1061 1555 406 A=C X POSITION FOR BITMAP SUBS. 1062 1556 1746 A SL X 1063 1557 116 C=0 1064 1560 1160 DADD=C 1065 1561 1 GOSUB TBITMP CLEAR BIT 1065 1562 0 1066 1563 1 GOSUB SRBMAP 1066 1564 0 1067 1565 SKPD6 316 C=B RESTORE B TO M 1068 1566 530 M=C 1069 1567 34 PT= 3 1070 1570 412 A=C WPT 1071 1571 1 GOSUB INCADA GET ADDRESS OF LINK IN A[3:0] 1071 1572 0 1072 1573 1 GOSUB GTLINK GET THE LINK 1072 1574 0 1073 1575 SKPD1 374 RCR 10 SAVE THE CURRENT LINK 1074 1576 356 BC EX FIX PREVIOUS LINK 1075 1577 630 C=M GET ADDRESS OF PREVIOUS LINK 1076 1600 174 RCR 4 POSITION FOR GTLINK 1077 1601 1 GOSUB GTLNKA GET IT 1077 1602 0 1078 1603 356 BC EX PLACE THE FIRST LINK IN A[3:0] 1079 1604 174 RCR 4 1080 1605 356 BC EX 1081 1606 152 AB EX WPT 1082 1607 1506 ? A#0 X END OF CHAIN SPECIAL CASE 1083 1610 27 GOC *+2 (1612) NOT HERE 1084 1611 106 C=0 X PUT END OF CHAIN 1 LINK DOWN 1085 1612 1066 C=C+1 XS BASE 14 ADD 1086 1613 1066 C=C+1 XS 1087 1614 1006 C=A+C X CREATE NEW LONGER LINK 1088 1615 47 GOC SKPD2 (1621) 1089 1616 1166 C=C-1 XS 1090 1617 1166 C=C-1 XS 1091 1620 23 GONC SKPD3 (1622) 1092 1621 SKPD2 1046 C=C+1 X NEW LINK READY 1093 1622 SKPD3 152 AB EX WPT PUT THE NEW LINK BACK 1094 1623 1 GOSUB PTLINK 1094 1624 0 1095 1625 630 C=M 1096 1626 412 A=C WPT GET ADDRESS OF BYTE BEFORE LINK 1097 1627 1204 S7= 0 TRAVERSE THE LINK THIS TIME 1098 1630 1 GOLONG NXLDEL AROUND WE GO AGAIN. 1098 1631 2 1099 * * GENLNK - GENERATE LINK * GIVEN 2 ADDRESSES IN A[3:0](LARGER) AND C[3:0](SMALLER), *- CREATES THE NECESSARY LINK TO GO UP THE CHAIN FROM C TO A. *- THIS LINK IS STORED IN THE C ADDRESS IN MEMORY. * ASSUMES AND RETURNS PT=3. * USES A[3:0],B[3:0],M, AND 1 SUB LEVEL. C SAVED. * FOR THE SPECIAL CASE OF A[3:0]=0, 0 IS STORED AS THE LINK. * 1109 1632 GENLNK 530 M=C 1110 1633 1512 ? A#0 WPT TOP OF CHAIN? 1111 1634 27 GOC *+2 (1636) NO 1112 1635 112 C=0 WPT YES, CREATE A ZERO LINK. 1113 1636 1112 C=A-C WPT CREATE LINK 1114 1637 43 GONC GENLK1 (1643) 1115 1640 1146 C=C-1 X FIX UP ADDRESS 1116 1641 1142 C=C-1 PT 1117 1642 1142 C=C-1 PT IN THE BORROW CASE 1118 1643 GENLK1 746 C=C+C X MAKE COMPACT LINK 1119 1644 746 C=C+C X 1120 1645 746 C=C+C X 1121 1646 746 C=C+C X 1122 1647 23 GONC *+2 (1651) 1123 1650 1042 C=C+1 PT 1124 1651 1712 C SR WPT 1125 1652 1420 LC 12 CREATE LINK CHAR. 1126 1653 34 PT= 3 PUT POINTER BACK 1127 1654 412 A=C WPT STORE LINK 1128 1655 630 C=M 1129 1656 1 GOSUB PTLNKA 1129 1657 0 1130 1660 630 C=M FIX UP 1131 1661 1740 RTN DONE * * INSSUB - INSERT SUBROUTINE * THIS SUBROUTINE SETS UP THE CALCULATOR FOR AN INSERT. * IF THE LINE NUMBER # 0 OR THE CURRENT LINE # END, THEN *- THE PC IS ADVANCED PAST THE CURRENT LINE, S9 IS SET TO 1. *- AND THE LINE # IS INCREMENTED BY 1. * C[13:10] IS SAVED IN A[13:10]. * USES A[3:0],B[3:0],C,ST[9,7:0]. * 1141 1662 INSSUB 1 GOSUB PATCH3 THIS PATCH CHECKS PRIVACY FOR DATA ENTRY 1141 1663 0 1142 1664 1514 ?S12=1 IS THIS A PRIVATE PROGRAM? 1143 1665 1 GOLC ERRPR YES, SAY PRIVATE. 1143 1666 3 1144 1667 INSUBA 256 AC EX SAVE C IN A 1145 1670 1 GOSUB GETPC 1145 1671 0 1146 1672 1104 S9= 0 DISABLE BACKSTEP IN INBYT ERROR 1147 1673 1770 C=REGN 15 GET LINE NUMBER 1148 1674 1346 ? C#0 X NON-ZERO LINE NUMBER? 1149 1675 63 GONC INSUB1 (1703) NO, DON'T SKPLIN, BUT INC LINNUM. 1150 1676 1 GOSUB SKPLIN SKIP A LINE 1150 1677 0 1151 1700 514 ?S6=1 HIT AN END? 1152 1701 67 GOC INSUB2 (1707) YES, DON'T INCREMENT LINNUM. 1153 1702 1110 S9= 1 ENABLE BACKSTEP ON ERROR. 1154 1703 INSUB1 1 GOSUB GETLIN INCREMENT LINE NUMBER 1154 1704 0 1155 1705 1046 C=C+1 X 1156 1706 1750 REGN=C 15 STORE AWAY AGAIN 1157 1707 INSUB2 1 GOLONG PUTPC PUT ADDRESS AWAY AND RETURN 1157 1710 2 1158 1159 1160 1161 1162 1163 1164 * * GOSUB0,GOSUB1,GOSUB2,GOSUB3 - GOSUB LONG WITHIN A 4K ROM TO AN *- ADDRESS WITHIN A SPECIFIED 1K ROM. * THESE ROUTINES ARE THE SAME AS GOSUB EXCEPT INSTEAD OF ASSUMING THAT *- THE DESTINATION ADDRESS IS WITHIN THE CURRENT 1024-WORD ROM, THE *- DESTINATION ROM IS SPECIFIED BY THE CALL. I.E. TO GOSUB TO A *- SUBROUTINE IN ROM1 OF A 4-ROM CHIP, ONE WOULD USE: * GOSUB GOSUB1 * XDEF * * WARNING!!! IF YOU SPECIFY THE WRONG ROM, THE CALL WILL GO TO THE *- ADDRESS YOU SPECIFY RATHER THAN THE CORRECT ONE. THIS IS A PAINFUL *- ERROR TO FIND SINCE IT RESULTS IN JUMPS TO THE MIDDLE OF NOWHERE. * * USES C PLUS 1 ADDITIONAL SUBROUTINE LEVEL TEMPORARILY. * * GOL0,GOL1,GOL2,GOL3 - GOLONG TO ANYWHERE IN A 4K ROM. * SAME AS GOLONG EXCEPT DESTINATION 1K ROM SPECIFIED AS IN GOSUB[0-3] * USES C PLUS 1 SUBROUTINE LEVEL TEMPORARILY. * * INTERNAL SUBROUTINE FOR GOSUB[0-3] AND GOL[0-3] * 1187 ENTRY GOL0 1188 ENTRY GOSUB0 1189 ENTRY GOL1 1190 ENTRY GOSUB1 1191 ENTRY GOL2 1192 ENTRY GOSUB2 1193 ENTRY GOL3 1194 ENTRY GOSUB3 1195 1711 GSUBS1 1460 CXISA GET 10 LSB OF ADDRESS PLUS 00 1196 1712 1732 C SR M PREPARE TO CONCATENATE 12 BITS TO 1197 1713 1732 C SR M TOP 4 BITS OF GOSUB ADDRESS 1198 1714 1732 C SR M 1199 1715 756 C=C+C ALIGN SO THAT A MANTISSA INCREMENT 1200 1716 756 C=C+C WILL CHANGE BIT 10 OF THE FINAL ADDRESS 1201 1717 1740 RTN 1202 1720 GOL0 660 C=STK GET CALLING ADDRESS 1203 1721 53 GOTO GSB0A (1726) GO TO IT (IN ROM 0) 1204 1722 GOSUB0 660 C=STK GET CALLING ADDRESS 1205 1723 1072 C=C+1 M INCREMENT PAST ARGUMENT 1206 1724 560 STK=C PUT BACK FOR SUBROUTINE RETURN 1207 1725 1172 C=C-1 M DECREMENT TO GET ARGUMENT 1208 LEGAL 1209 1726 GSB0A 1 GOSUB GSUBS1 PREPARE ADDRESS 1209 1727 0 1210 1730 363 GOTO GSBQ0 (1766) FINISH UP 1211 1731 GOL1 660 C=STK 1212 1732 53 GOTO GSB1A (1737) 1213 1733 GOSUB1 660 C=STK 1214 1734 1072 C=C+1 M 1215 1735 560 STK=C 1216 1736 1172 C=C-1 M 1217 LEGAL 1218 1737 GSB1A 1 GOSUB GSUBS1 1218 1740 0 1219 1741 243 GOTO GSBQ1 (1765) 1220 1742 GOL2 660 C=STK 1221 1743 53 GOTO GSB2A (1750) 1222 1744 GOSUB2 660 C=STK 1223 1745 1072 C=C+1 M 1224 1746 560 STK=C 1225 1747 1172 C=C-1 M 1226 LEGAL 1227 1750 GSB2A 1 GOSUB GSUBS1 1227 1751 0 1228 1752 123 GOTO GSBQ2 (1764) 1229 1753 GOL3 660 C=STK 1230 1754 53 GOTO GSB3A (1761) 1231 1755 GOSUB3 660 C=STK 1232 1756 1072 C=C+1 M 1233 1757 560 STK=C 1234 1760 1172 C=C-1 M 1235 LEGAL 1236 1761 GSB3A 1 GOSUB GSUBS1 1236 1762 0 1237 1763 GSBQ3 1072 C=C+1 M SELECT ROM 3 OF CHIP 1238 1764 GSBQ2 1072 C=C+1 M SELECT ROM 2 OF CHIP 1239 1765 GSBQ1 1072 C=C+1 M SELECT ROM 1 OF CHIP 1240 1766 GSBQ0 1574 RCR 12 MOVE ADDRESS ALMOST INTO PLACE 1241 1767 756 C=C+C ALIGN DESTINATION ADDRESS ON 1242 1770 756 C=C+C DIGIT BOUNDARIES. 1243 1771 740 GOTOC GO. * * GSB000,GSB256,GSB512,GSB768 - FAST ABSOLUTE GOSUB * THESE FOUR ENTRY POINTS TO THE SAME ROUTINE PROVIDE A MEANS *- FOR FAST 2-WORD GOSUBS IN PORT ADDRESSED MICROCODED PLUG-IN *- ROMS. THE SUBROUTINE CALLED MUST HAVE ITS FIRST WORD LOCATED *- ON A LOCAL 256(DEC) BOUNDARY AND THE GOSUBS REFERENCING THE *- SUBROUTINE MUST BE LOCATED WITHIN THAT 256-WORD BLOCK. * I.E. A SUBROUTINE COULD BE LOCATED STARTING AT LOCATION 512 *- (1000 OCT) IN SOME ROM AND BE CALLED WITH A SINGLE 2-WORD *- GOSUB [ GOSUB GSB256 ] ANYWHERE BETWEEN LOCATIONS 512 AND 767. * * BEWARE!!! - THIS ROUTINE IS DUMB. IF YOU CALL GSB256 FROM LOCATION *- 700 IT WILL NOT GO TO 256 BUT TO 512 AS THE LABELS ARE FOR *- PROGRAMMING CONVENIENCE ONLY. BE CAREFUL WHEN YOU USE THESE ROUTINES. * * USES ONLY C[6:2] PLUS 1 SUBROUTINE LEVEL TEMPORARILY. * 1261 ENTRY GSB000 1262 ENTRY GSB256 1263 ENTRY GSB512 1264 ENTRY GSB768 1265 GSB000 1266 GSB256 1267 GSB512 1268 1772 GSB768 660 C=STK GET THE ADDRESS 1269 1773 560 STK=C RESTORE THE RETURN ADDRESS 1270 1774 1074 RCR 2 ZERO THE LAST 8 BITS 1271 1775 106 C=0 X 1272 1776 1574 RCR 12 RESTORE ADDRESS TO GOTOC SPOT 1273 1777 740 GOTOC GO DO IT 1274 1275 1276 1277 1278 UNLIST 1281 END ERRORS : 0 SYMBOL TABLE CLPERR 1246 - 1243 CLRP1 1237 - 1217 CLRP2 1224 - 1245 CLRP3 1277 - 1236 CLRPGM 1214 - CLRREG 525 - CPY100 556 - CPY110 565 - 561 CPY120 571 - 558 CPY130 575 - 570 CPY140 607 - 603 CPY145 651 - 702 CPY150 652 - 661 CPY160 662 - 656 CPY170 703 - 674 CPYNE 554 - 557 DELLIN 1406 - DELLN1 1426 - 1420 DELLN2 1421 - 1430 DELNNN 1250 - ERR110 1373 - ERR120 1377 - 1374 ERR130 1401 - 1376 ERROR 1365 - ERRPR 604 - ERRRAM 562 - 572 ERRSUB 1350 - ERRTN 1364 - 1405 GBA1 1045 - 1023 GBA2 1043 - 1025 GBA3 1041 - 1027 GBA4 1037 - 1031 GBA5 1015 - 1033 GBA6 1034 - GBA6A 1035 - 1064 GENLK1 1643 - 1637 GENLNK 1632 - GOL0 1720 - GOL1 1731 - GOL2 1742 - GOL3 1753 - GOSUB0 1722 - GOSUB1 1733 - GOSUB2 1744 - GOSUB3 1755 - GSB000 1772 - GSB0A 1726 - 1721 GSB1A 1737 - 1732 GSB256 1772 - GSB2A 1750 - 1743 GSB3A 1761 - 1754 GSB512 1772 - GSB768 1772 - GSBQ0 1766 - 1730 GSBQ1 1765 - 1741 GSBQ2 1764 - 1752 GSBQ3 1763 - GSUBS1 1711 - GTFEN1 353 - GTFEND 350 - GTLINK 1116 - GTLNKA 1107 - 1117 1104 INSSUB 1662 - INSUB1 1703 - 1675 INSUB2 1707 - 1701 INSUBA 1667 - MOVR10 542 - 533 MOVREG 534 - NFRKBX 722 - 766 PACK 3 - 1 PACKE 2 - PACKN 0 - PAK100 24 - 32 PAK102 31 - 53 PAK105 34 - 30 PAK108 51 - 23 PAK110 60 - 33 PAK115 72 - 57 PAK117 117 - 112 105 PAK118 120 - 116 114 110 PAK120 54 - 61 PAK130 124 - PAK200 125 - PAK210 127 - 141 PAK220 142 - 137 PAK230 154 - 151 147 PAK240 170 - 155 PAK250 172 - 153 145 143 PAK260 173 - 171 PAK265 206 - 253 201 PAK270 213 - 235 PAK275 231 - 225 PAK280 240 - 205 203 177 PAKEND 254 - PAKSPC 362 - PATCH1 734 - PATCH2 741 - PATCH3 756 - PATCH5 763 - PKASN1 446 - 442 PKASN2 451 - 445 PKASN3 453 - 476 450 433 PKEND1 271 - 276 PKEND2 301 - 272 PKEND3 317 - 300 PKEND4 277 - 310 PKEND5 324 - PKEND6 337 - 347 PKIO10 461 - 437 PKIO20 473 - 506 PKIOAS 424 - PKM10 434 - 457 PKSPC1 373 - 365 PKSPC3 406 - PR15RT 1337 - PTBYTA 1443 - PTBYTP 1450 - PTLINK 1432 - PTLNKA 1433 - PTLNKB 1441 - 1453 PUTPC 1467 - 1460 1456 PUTPC1 1501 - 1477 PUTPC2 1504 - 1502 PUTPC3 1507 - 1505 1475 PUTPCA 1471 - PUTPCD 1454 - PUTPCF 1461 - PUTPCX 1457 - PUTREG 536 - SKPD1 1575 - 1541 SKPD2 1621 - 1615 SKPD3 1622 - 1620 SKPD4 1542 - 1534 SKPD6 1565 - 1554 SKPD7 1544 - 1531 SKPDEL 1511 - SKPDL 1514 - SSTBST 1335 - TABUPL 1000 - TBLGBA 1020 - TRGSET 724 - ULINK1 1077 - 1074 ULINK2 1101 - 1076 ULINK3 1105 - 1102 UPLB0 1056 - 1001 UPLB1 1047 - 1003 UPLB2 1045 - 1005 UPLB3 1043 - 1007 UPLB4 1041 - 1011 UPLB5 1037 - 1013 UPLB6 1014 - UPLINK 1065 - XBST 1120 - XBST1 1131 - 1172 XCLPX1 1264 - 1221 XCOPY 545 - XDELA 1261 - 1256 XDELET 1257 - XDELEX 1333 - 1364 1346 1327 1263 1255 1252 XDELM1 1300 - 1307 XDELM2 1310 - 1304 XPACK 0 - XSST 1140 - XSSTR 1173 - 1153 XSSTR1 1177 - 1174 ENTRY TABLE CLRPGM 1214 - CLRREG 525 - DELLIN 1406 - DELNNN 1250 - ERR110 1373 - ERR120 1377 - ERROR 1365 - ERRPR 604 - ERRRAM 562 - ERRSUB 1350 - GENLNK 1632 - GOL0 1720 - GOL1 1731 - GOL2 1742 - GOL3 1753 - GOSUB0 1722 - GOSUB1 1733 - GOSUB2 1744 - GOSUB3 1755 - GSB000 1772 - GSB256 1772 - GSB512 1772 - GSB768 1772 - GSUBS1 1711 - GTFEN1 353 - GTFEND 350 - GTLINK 1116 - GTLNKA 1107 - INSSUB 1662 - MOVREG 534 - PACKE 2 - PACKN 0 - PAK200 125 - PAKEND 254 - PAKSPC 362 - PATCH1 734 - PATCH2 741 - PATCH3 756 - PATCH5 763 - PKIOAS 424 - PR15RT 1337 - PTBYTA 1443 - PTBYTP 1450 - PTLINK 1432 - PTLNKA 1433 - PTLNKB 1441 - PUTPC 1467 - PUTPCA 1471 - PUTPCD 1454 - PUTPCF 1461 - PUTPCX 1457 - PUTREG 536 - SKPDEL 1511 - SSTBST 1335 - TRGSET 724 - UPLINK 1065 - XBST 1120 - XCOPY 545 - XDELET 1257 - XPACK 0 - XSST 1140 - EXTERNAL REFERENCES ANNOUT 1341 ANNOUT 1342 ASRCH 551 1237 ASRCH 552 1240 BSTCAT 1123 BSTCAT 1124 BSTEP 1127 1377 BSTEP 1130 1400 BSTEPA 1331 BSTEPA 1332 CLRREG 451 501 534 CLRREG 452 502 535 CPGMHD 754 CPGMHD 755 DCPL00 340 DCPL00 341 DCPLRT 64 DCPLRT 65 DECAD 1454 DECAD 1455 DECADA 77 246 1522 DECADA 100 247 1523 DECMPL 720 DECMPL 721 DELLIN 1301 DELLIN 1302 DFKBCK 1177 DFKBCK 1200 DFRST9 1131 DFRST9 1132 DRSY25 1134 DRSY25 1135 ERRNE 554 1246 ERRNE 555 1247 ERROR 562 604 760 ERROR 563 605 761 ERRPR 1665 ERRPR 1666 ERRSUB 1365 ERRSUB 1366 FIXEND 742 1315 FIXEND 743 1316 FLINK 1224 FLINK 1225 FLINKA 1516 FLINKA 1517 FLINKP 1310 FLINKP 1311 FSTIN 54 FSTIN 55 GENLNK 322 377 GENLNK 323 400 GETLIN 1157 1204 1324 1703 GETLIN 1160 1205 1325 1704 GETPC 102 1147 1222 1267 1670 GETPC 103 1150 1223 1270 1671 GSUBS1 1726 1737 1750 1761 GSUBS1 1727 1740 1751 1762 GTFEND 16 GTFEND 17 GTLINK 51 362 1526 1573 GTLINK 52 363 1527 1574 GTLNKA 1601 GTLNKA 1602 GTO.5 1322 GTO.5 1323 INCAD2 37 70 402 410 1546 INCAD2 40 71 403 411 1547 INCADA 72 163 735 1422 1514 1571 INCADA 73 164 736 1423 1515 1572 INSSUB 1265 INSSUB 1266 LINNUM 1343 1403 LINNUM 1344 1404 MEMLFT 611 MEMLFT 612 MOVREG 446 MOVREG 447 MSG 3 MSG 4 MSGE 1371 MSGE 1372 MSGPR 606 MSGRAM 564 MSGROM 762 MSGWR 5 NFRKB 722 1333 NFRKB 723 1334 NFRKB1 1136 NFRKB1 1137 NULTST 1202 NULTST 1203 NXBYTA 133 213 415 1550 NXBYTA 134 214 416 1551 NXLDEL 206 1413 1630 NXLDEL 207 1414 1631 NXLSST 1155 NXLSST 1156 NXLTX 421 NXLTX 422 PACKE 620 PACKE 621 PAK200 236 PAK200 237 PAKEND 371 PAKEND 372 PAKSPC 1512 PAKSPC 1513 PATCH2 1226 PATCH2 1227 PATCH3 1662 PATCH3 1663 PATCH5 1272 PATCH5 1273 PKIOAS 10 PKIOAS 11 PTBYTA 45 161 1424 PTBYTA 46 162 1425 PTBYTM 750 PTBYTM 751 PTBYTP 221 PTBYTP 222 PTLINK 1623 PTLINK 1624 PTLNKA 1656 PTLNKA 1657 PUTPC 1170 1707 PUTPC 1171 1710 PUTPCL 1230 PUTPCL 1231 PUTPCX 250 716 PUTPCX 251 717 PUTREG 504 PUTREG 505 ROMH05 566 ROMH05 567 ROMHED 573 ROMHED 574 RSTMS0 6 1350 RSTMS0 7 1351 RSTSEQ 1337 RSTSEQ 1340 RUNNK 1212 RUNNK 1213 SETSST 1210 SETSST 1211 SKPLIN 1676 SKPLIN 1677 SRBMAP 1563 SRBMAP 1564 SSTBST 1125 1145 SSTBST 1126 1146 SSTCAT 1143 SSTCAT 1144 STBT30 43 STBT30 44 STBT31 20 STBT31 21 STOPS 1401 STOPS 1402 TBITMP 1561 TBITMP 1562 UPLINK 24 UPLINK 25 End of VASM assembly VASM ROM ASSEMBLY REV. 6/81A OPTIONS: L C S * HP41C MAINFRAME MICROCODE ADDRESSES @22000-23777 * 4 FILE CN9B 5 ENTRY SARO21 6 ENTRY SARO22 * 8 ENTRY SERR 9 ENTRY SEARCH 10 ENTRY ASRCH 11 ENTRY SNROM 12 ENTRY DOSRCH 13 ENTRY XGNN10 14 ENTRY XGNN12 15 ENTRY XEQC01 16 ENTRY GTSRCH 17 ENTRY SNR12 18 ENTRY SNR10 19 ENTRY SGTO19 20 ENTRY SAROM 21 ENTRY XRTN 22 ENTRY RTN30 23 ENTRY XGI 24 ENTRY ROW0 25 ENTRY ROW11 26 ENTRY ROW12 27 ENTRY XXEQ 28 ENTRY XGTO 29 30 31 32 33 0 SNROM 146 AB EX X A[1:0]_LBL 34 1 674 RCR 11 SET ADDR TO NEXT WORD 35 2 SNRO9 1434 PT= 1 - 36 3 SNRO10 1072 C=C+1 M - 37 4 SNRO12 1460 CXISA GET ROM WORD 38 5 1166 C=C-1 XS 1ST BYTE? 39 6 1366 ? C#0 XS 1ST BYTE? 40 7 1747 GOC SNRO10 ( 3) NOPE 41 10 1342 ? C#0 PT ROW0? 42 11 77 GOC SNRO20 ( 20) NOPE 43 12 1352 ? C#0 WPT NULL? 44 13 1703 GONC SNRO10 ( 3) YES 45 14 1146 C=C-1 X LBL_LBL-1 46 15 1552 ? A#C WPT CORRECT SHORT LBL? 47 16 1657 GOC SNRO10 ( 3) NOPE 48 17 403 GOTO SNRO40 ( 57) RETURN 49 50 20 SNRO20 1042 C=C+1 PT ROW12? 51 21 1042 C=C+1 PT - 52 22 1042 C=C+1 PT - 53 23 1042 C=C+1 PT - 54 24 1573 GONC SNRO10 ( 3) NOPE 55 25 1634 PT= 0 LONG LBL? 56 26 1042 C=C+1 PT - 57 27 237 GOC SNRO30 ( 52) YES 58 30 1042 C=C+1 PT CHAIN? 59 31 1517 GOC SNRO9 ( 2) NOPE 60 32 1072 C=C+1 M GET 3RD BYTE 61 32 1072 C=C+1 M - 62 34 1460 CXISA - 63 35 1434 PT= 1 ALBL? 64 36 1042 C=C+1 PT - 65 37 1447 GOC SNRO10 ( 3) YES 66 40 116 C=0 - 67 41 1114 ?S9=1 2ND END? 68 42 177 GOC SNRO50 ( 61) 69 43 1110 S9= 1 1ST END FOUND 70 44 216 B=A SAVE LBL 71 45 1 GSBLNG ROMHED GET BEGIN ADDR 71 46 0 72 47 156 AB EX PUT BACK LBL 73 50 674 RCR 11 - 74 51 1313 GOTO SNRO9 ( 2) CONTINUE SEARCH 75 76 52 SNRO30 1072 C=C+1 M CORRECT LONG LBL? 77 53 1460 CXISA - 78 54 1546 ? A#C X - 79 55 1257 GOC SNRO9 ( 2) NOPE 80 56 1172 C=C-1 M POSITION ADDRESS 81 57 SNRO40 1172 C=C-1 M - 82 60 74 RCR 3 C[3:0]_ROM ADDRESS 83 61 SNRO50 34 PT= 3 84 62 1740 RTN 85 86 87 88 89 * SEARCH - SEARCH FOR NUMERIC LABEL *- SEARCH THE CURRENT PROGRAM FOR THE DESIGNATED *- LONG OR SHORT NUMERIC LABEL. (SEARCHES IN ROM *- OR RAM) *- IN: A.X=NUMERIC LABEL (IF PC IS IN RAM, A[2] MAY BE NON-ZERO) *- PT= 3 *- OUT: C=0 IMPLIES THE LABEL WAS NOT FOUND * OTHERWISE *- C[3:0]= LABEL ADDRESS (ADDRESS OF BYTE BEFORE LABEL) *- PT= 3 *- CHIP 0 SELECTED *- USES: STATUS BITS 9,6,0, G, A[13:0], C[13:0], B[3:0] * S6=1 IMPLIES PROGRAM COUNTER IS AT THE FIRST BYTE * OF A THREE-BYTE INSTRUCTION ON INPUT. THIS * ONLY OCCURS WHEN EXECUTING LONG GTONN AND XEQNN * OUT OF PROGRAM MEMORY. * S6=0 IMPLIES PROGRAM COUNTER IS AT A STANDARD POSITION * (I.E. AT THE BYTE BEFORE THE FIRST BYTE OF A LINE). *- USES: 2 SUBROUTINE LEVELS 109 110 111 112 ENTRY SEARC1 113 63 SEARCH 504 S6= 0 114 64 SEARC1 1104 S9= 0 1ST END NOT FOUND 115 65 206 B=A X SAVE A 116 66 1 GSBLNG GETPC GET ADDR 116 67 0 117 70 314 ?S10=1 ROM? 118 71 1077 GOC SNROM ( 0) YES 119 72 306 C=B X G_LBL 120 73 674 RCR 11 - 121 74 130 G=C - 122 75 514 ?S6=1 - 123 76 33 GONC SNR12 ( 101) 124 77 SNR10 1 GSBLNG INCAD2 124 100 0 125 101 SNR12 1 GSBLNG NXBYTA GET A BYTE 125 102 0 126 103 1574 RCR 12 SET PTR 127 104 1202 C=-C PT 1-BYTE FC? 128 105 742 C=C+C PT - 129 106 1737 GOC SNR12 ( 101) YES 130 107 742 C=C+C PT 2-BYTE FC? 131 110 467 GOC SNR70 ( 156) YES 132 111 742 C=C+C PT 3-BYTE FC? 133 112 1657 GOC SNR10 ( 77) YES 134 113 742 C=C+C PT ROW 0? 135 114 43 GONC SNR50 ( 120) YES 136 115 1 GSBLNG NXLTX IT'S A TEXT FC 136 116 0 137 117 1623 GOTO SNR12 ( 101) - 138 139 120 SNR50 1366 ? C#0 XS NULL? 140 121 1603 GONC SNR12 ( 101) YES 141 122 1604 S0= 0 - 142 123 1166 C=C-1 XS LBL_LBL-1 143 124 1074 RCR 2 - 144 125 SNR55 256 AC EX C[6:3]_RAM ADDRESS 145 126 674 RCR 11 - 146 127 1634 PT= 0 C[1:0]_LBL 147 130 230 C=G - 148 131 426 A=C XS - 149 132 34 PT= 3 - 150 133 1546 ? A#C X CORRECT LABEL? 151 134 147 GOC SNR60 ( 150) NOPE 152 135 74 RCR 3 YES, POINT AT PREV STEP 153 136 416 A=C - 154 137 1 GSBLNG DECADA DEC RAM ADDR 154 140 0 155 141 1614 ?S0=1 LONG LABEL? 156 142 1 GSUBC DECADA YES, DEC RAM ADDR AGAIN 156 143 1 157 144 116 C=0 RE-ENABLE CHIP 0 158 145 1160 DADD=C 159 146 252 AC EX WPT C[3:0]_LBL ADDR 160 147 1740 RTN RETURN FROM SEARCH 161 162 150 SNR60 74 RCR 3 A[3:0]_RAM ADDR 163 151 416 A=C - 164 152 1273 GOTO SNR12 ( 101) - 165 166 153 SNR65 1 GSBLNG INCADA INC RAM ADDR 166 154 0 167 155 1243 GOTO SNR12 ( 101) - 168 169 156 SNR70 1342 ? C#0 PT ROW 12? 170 157 1747 GOC SNR65 ( 153) NOPE 171 160 1066 C=C+1 XS LONG LABEL? 172 161 307 GOC SNR80 ( 211) YES 173 162 1066 C=C+1 XS X<>? 174 163 1707 GOC SNR65 ( 153) YES 175 164 1 GSBLNG GTLINK C[13]_3RD BYTE OF CHAIN 175 165 0 176 166 1076 C=C+1 S ALBL? 177 167 1647 GOC SNR65 ( 153) YES 178 170 1114 ?S9=1 2ND END? 179 171 57 GOC SNR72 ( 176) YES 180 172 1 GOSUB CPGMHD GOTO PGM HEAD 180 173 0 181 174 1110 S9= 1 1ST END FOUND 182 175 1043 GOTO SNR12 ( 101) 183 SNR72 * SEARCH GIVES UP HERE 185 176 514 ?S6=1 PGM CTR IN ODD PLACE? 186 177 73 GONC SNR73 ( 206) NO 187 200 1 GOSUB GETPC YES 187 201 0 188 202 1 GOSUB INCAD2 SET IT TO END OF 3-BYTE FC 188 203 0 189 204 1 GOSUB PUTPC 189 205 0 190 206 SNR73 116 C=0 NOT FOUND 191 207 1160 DADD=C RE-ENABLE CHIP 0 192 210 1740 RTN - 193 194 211 SNR80 1 GSBLNG NXBYTA GET 2ND BYTE OF LONG LABEL 194 212 0 195 213 1610 S0= 1 LONG LABEL 196 214 1113 GOTO SNR55 ( 125) CORRECT LONG LABEL? 197 198 199 200 201 202 ENTRY XGA00 * * XGA - XEQ/GTO ALPHA *- PLACE THE PROGRAM COUNTER AT THE SPECIFIED ALPHA *- STRING LABEL ADDRESS. IN THE CASE OF AN XEQ, THE *- RETURN STACK IS PUSHED THROUGH A TRANSFER TO "XEQC" *- IN: S7= 1/0 IMPLIES XEQ/GTO FUNCTION *- S9= 1 IMPLIES AN ALPHA SEARCH HAS BEEN *- PREVIOUSLY PERFORMED *- M[3:0]=ADDRESS OR M=ALPHA STRING * 213 215 XGA00 1 GOSUB SAVRC SAVE RETURN ADDRESS 213 216 0 214 217 630 C=M C=ALBL OR ADDRESS 215 220 1314 ?S13=1 RUNNING? 216 221 277 GOC XGI52 ( 250) YES 217 222 114 ?S4=1 SST? 218 223 257 GOC XGI52 ( 250) YES * MUST BE FROM KEYBOARD 220 224 1114 ?S9=1 ALREADY FOUND? 221 225 233 GONC XGI52 ( 250) NO. (AGTO FROM KEYBOARD) 222 226 313 GOTO XGI54 ( 257) MUST BE AXEQ OF USER LABEL * * XGI - XEQ/GTO INDIRECT *- PLACE THE PROGRAM COUNTER AT THE NUMERIC OR *- ALPHA LABEL FOUND IN THE SPECIFIED REGISTER. *- IN THE CASE OF AN XEQ, THE SUBROUTINE RETURN *- STACK IS PUSHED THROUGH A TRANSFER TO "XEQC". *- IN: STATUS= 2ND BYTE OF FUNCTION CODE *- STATUS BIT 7 = 0/1 IMPLIES GTO/XEQ FUNCTION *- OUT: GTO- CHIP 0 SELECTED *- XEQ- PT=3 *- C[3:0]= LABEL ADDRESS *- CHIP 0 SELECTED *- USES: A,B,C,M,N,G,STATUS BITS, STATUS BITS 8 & 9 *- REG 9, REG 10 DIGITS 0,1 *- USES: 4 SUBROUTINE LEVELS 238 239 240 241 242 227 XGI30 1534 PT= 12 TEST FOR NULL LBL 243 230 102 C=0 PT - 244 231 1356 ? C#0 - 245 232 453 GONC SERRXF ( 277) YES 246 233 416 A=C FORMAT 247 234 116 C=0 - 248 235 1160 DADD=C 249 236 1434 PT= 1 - 250 237 XGI40 1512 ? A#0 WPT - (END OF STRING?) 251 240 63 GONC XGI50 ( 246) - (YES) 252 241 252 AC EX WPT - 253 242 1574 RCR 12 - 254 243 1616 A SR - 255 244 1616 A SR - 256 245 1723 GOTO XGI40 ( 237) - 257 246 XGI50 1074 RCR 2 - 258 247 530 M=C - 259 250 XGI52 1150 REGN=C 9 260 251 1 GSBLNG ASRCH SEARCH FOR ALPHA LABEL 260 252 0 261 253 1356 ? C#0 FOUND? 262 254 233 GONC SERRXF ( 277) NO 263 255 1014 ?S2=1 ROM? 264 256 37 GOC XGI55 ( 261) YES 265 257 XGI54 304 S10= 0 NO. MUST BE RAM 266 260 223 GOTO XGI60 ( 302) 267 261 XGI55 1114 ?S9=1 MICROCODE? 268 262 173 GONC XGI57 ( 301) NO. MUST BE USER LANG 269 263 214 ?S5=1 MAINFRAME? 270 264 647 GOC SERR ( 350) YES. ERROR 271 265 530 M=C SAVE ADDRESS IN M 272 266 1270 C=REGN 10 RETRIEVE RTN ADDRESS 273 267 1346 ? C#0 X XEQ? 274 270 603 GONC SERR ( 350) NO. AGTO ILLEGAL FOR 275 MICROCODE 276 271 1670 C=REGN 14 RESTORE SS0 277 272 1530 ST=C 278 273 630 C=M C[3:0]=XADR 279 274 674 RCR 11 C[6:3]=XADR 280 275 1460 CXISA GET WORD AT XADR 281 276 1346 ? C#0 X PROGRAMMABLE FCN? 282 277 SERRXF 513 GONC SERR ( 350) NO. ERROR 283 300 740 GOTOC * 285 ENTRY XGI57 * XROM ENTERS AT XGI57 * ON ENTRY, ADDRESS OF FIRST BYTE OF DESTINATION LABEL IS IN C[3:0] * AND RETURN ADDRESS IS IN R10[3:0] ALREADY PACKED FOR PUSH ONTO * SUBROUTINE STACK 290 301 XGI57 310 S10= 1 ROM USER LANGUAGE 291 302 XGI60 34 PT= 3 - 292 303 412 A=C WPT - 293 304 1 GSBLNG DECAD - 293 305 0 294 306 243 GOTO XGI07 ( 332) - 295 296 307 XGI 1 GOSUB SAVRC SAVE RETURN ADDRESS 296 310 0 297 311 1204 S7= 0 CLEAR S7 FOR ADRFCH 298 312 1 GSBLNG ADRFCH C[13:0]_REG CONTENTS 298 313 0 299 314 1176 C=C-1 S 300 315 1376 ? C#0 S VALID # LABEL? 301 316 1113 GONC XGI30 ( 227) NOPE 302 317 1 GSBLNG BCDBIN CONVERT BCD TO BINARY 302 320 0 303 321 406 A=C X VALID LABEL? 304 322 460 LDI - 305 323 144 CON 100 - 306 324 1406 ? A=MAX? 660 770 227 GOC SGTO60 (1012) YES 661 771 1746 A SL X PACK REL ADDR 662 772 1526 ? A#0 XS >=MAX? 663 773 177 GOC SGTO60 (1012) YES 664 774 1746 A SL X - 665 775 1612 A SR WPT - 666 776 260 C=N - 667 777 252 AC EX WPT - 668 1000 414 ?S8=1 - 669 1001 23 GONC *+2 (1003) - 670 1002 1042 C=C+1 PT - 671 1003 752 C=C+C WPT - 672 1004 752 C=C+C WPT - 673 1005 752 C=C+C WPT - 674 1006 746 C=C+C X - 675 1007 1074 RCR 2 - 676 1010 1 GSBLNG PTBYTA - 676 1011 0 677 1012 SGTO60 630 C=M PGMCTR_LBL ADDR 678 1013 1 GOLONG SGTO19 - 678 1014 2 679 * CALDSP MOVED TO CN0 681 682 683 1015 SAROM 1034 PT= 2 PT_1 & A[13]_6 684 1016 620 LC 6 - 685 1017 74 RCR 3 - 686 1020 436 A=C S - 687 1021 630 C=M - 688 1022 SARO02 356 BC EX CONVERT ASCII CHAR TO LCD 689 1023 152 AB EX WPT - 690 1024 1 GSBLNG MASK - 690 1025 0 691 1026 0 NOP 692 1027 1434 PT= 1 - 693 1030 1366 ? C#0 XS SPECIAL CHARACTER? 694 1031 33 GONC *+3 (1034) NOPE 695 1032 420 LC 4 ADJUST SPECIAL CHARACTER 696 1033 1434 PT= 1 - 697 1034 356 BC EX PLACE LCD CHAR IN STRING 698 1035 352 BC EX WPT - 699 1036 1074 RCR 2 - 700 1037 1352 ? C#0 WPT DONE? 701 1040 43 GONC SARO04 (1044) YES 702 1041 676 A=A-1 S 7 CHARS? 703 1042 57 GOC SARO06 (1047) YES 704 1043 1573 GOTO SARO02 (1022) NEXT CHAR 705 1044 SARO04 1074 RCR 2 RIGHT-JUSTIFY 706 1045 1352 ? C#0 WPT - 707 1046 1763 GONC *-2 (1044) - 708 1047 SARO06 530 M=C M_LCD CHAR STRING 709 1050 204 S5= 0 MAINFRAME TBL 3RD 710 1051 534 PT= 6 B[M]_C[M]_56K 711 1052 116 C=0 - 712 1053 1160 DADD=C - (SEL CHIP 0) 713 1054 520 LC 5 - 714 1055 SARO11 372 BC EX M - 715 1056 SARO10 332 C=B M TABLE THERE? 716 1057 1634 PT= 0 - (G_ROM ID) 717 1060 1460 CXISA !!!!!!!SHOULD BE CXISA!!!!!!! 718 1061 130 G=C - 719 1062 1072 C=C+1 M - 720 1063 1460 CXISA !!!!!!!SHOULD BE CXISA!!!!!!! 721 1064 1346 ? C#0 X - 722 1065 127 GOC SARO20 (1077) YES 723 1066 SARO15 534 PT= 6 ADJUST ADDR 724 1067 332 C=B M - 725 1070 1042 C=C+1 PT - 726 1071 1643 GONC SARO11 (1055) - 727 1072 120 LC 1 LOAD MAIN ADDR - 1 (11777 OCT) 728 1073 320 LC 3 729 1074 1720 LC 15 730 1075 1720 LC 15 731 1076 210 S5= 1 SEARCH MAINFRAME TABLE NOW 732 1077 SARO20 1434 PT= 1 C[6:3]_LBL ADDR 733 1100 SARO21 1072 C=C+1 M - 734 1101 SARO22 1460 CXISA - 735 1102 214 ?S5=1 MAINFRAME SEARCH? 736 1103 627 GOC SARO42 (1165) YES 737 1104 346 BC EX X - 738 1105 1072 C=C+1 M - 739 1106 1460 CXISA - 740 1107 1306 ? B#0 X - (END OF TABLE?) 741 1110 37 GOC SARO25 (1113) - 742 1111 1346 ? C#0 X - 743 1112 1543 GONC SARO15 (1066) - (YES) 744 1113 SARO25 346 BC EX X - 745 1114 416 A=C - 746 1115 274 RCR 5 - 747 1116 502 A=A+C PT - 748 1117 1174 RCR 9 749 1120 246 AC EX X 750 1121 1574 RCR 12 751 1122 312 C=B WPT - 752 1123 160 N=C SAVE LBL ADDR IN N 753 1124 674 RCR 11 - 754 1125 246 AC EX X - 755 1126 766 C=C+C XS - 756 1127 766 C=C+C XS - 757 1130 766 C=C+C XS - 758 1131 643 GONC SARO45 (1215) - 759 1132 1072 C=C+1 M C[13]_# LBL CHARS 760 1133 1072 C=C+1 M - 761 1134 416 A=C - 762 1135 1460 CXISA - 763 1136 1474 RCR 1 - 764 1137 436 A=C S - 765 1140 1170 C=REGN 9 - (A[13:0]_ALPHA CHARS) 766 1141 256 AC EX - 767 1142 1176 C=C-1 S - 768 1143 1072 C=C+1 M - 769 1144 SARO30 1072 C=C+1 M C[1:0]_1 LBL CHAR 770 1145 1460 CXISA EQUAL? 771 1146 1552 ? A#C WPT - 772 1147 147 GOC SARO40 (1163) NO 773 1150 1176 C=C-1 S DEC LBL COUNT 774 1151 1616 A SR SHIFT A TO NEXT CHAR 775 1152 1616 A SR - 776 1153 1376 ? C#0 S END OF LBL? 777 1154 57 GOC SARO35 (1161) NOPE 778 1155 1512 ? A#0 WPT END OF CHRS? 779 1156 57 GOC SARO40 (1163) NOPE 780 1157 1104 S9= 0 USER_TRUE 781 1160 743 GOTO SARO55 (1254) - 782 1161 SARO35 1512 ? A#0 WPT END OF CHRS? 783 1162 1627 GOC SARO30 (1144) NOPE, TST NXT CHAR 784 1163 SARO40 274 RCR 5 GET NXT TBL ENTRY 785 1164 1143 GOTO SARO21 (1100) - 786 787 1165 SARO42 34 PT= 3 SET PTR 788 1166 406 A=C X A[2:0]_LBL ADDR 789 1167 1506 ? A#0 X END OF MAINFRAME TBL? 790 1170 37 GOC *+3 (1173) NOPE 791 1171 116 C=0 RETURN W/ERROR 792 1172 1740 RTN - 793 1173 460 LDI HOLE? 794 1174 1737 CON @1737 - 795 1175 1406 ? A FUNCTION, *- END FUNCTION, AND ALPHA LABELS *- *- IN: C[3:2]= FUNCTION CODE *- CHIP 0 SELECTED *- USES: M[13:0], C[13:0], AND A[13:0] *- USES: 1 SUBROUTINE LEVEL 1055 * NOTE PARSE GENERATES CD FOR THE FC OF "ALBL". LOGIC AT ROW12A * IS FOR KEYBOARD EXECUTION ONLY. 1058 1059 1500 ROW12A 1066 C=C+1 XS ALBL F.C.? 1060 1501 257 GOC ALBL (1526) YES, ALPHA LABEL 1061 1502 XENDA 1463 GOTO XEND (1450) NO, MUST BE END 1062 1063 1503 ROW12 530 M=C SAVE F.C. 1064 1504 1066 C=C+1 XS LONG LBL? 1065 1505 307 GOC LBL (1535) YES 1066 1506 1066 C=C+1 XS - 1067 1507 1 GOLC X<>ROW - 1067 1510 3 1068 1511 1314 ?S13=1 RUNNING? 1069 1512 37 GOC RW10 (1515) YES 1070 1513 114 ?S4=1 SSTFLAG? 1071 1514 1643 GONC ROW12A (1500) NOPE 1072 1515 RW10 1 GSBLNG GETPCA ALBL? 1072 1516 0 1073 1517 1 GSBLNG INCAD - 1073 1520 0 1074 1521 1 GSBLNG NXTBYT - 1074 1522 0 1075 1523 1074 RCR 2 - 1076 1524 1076 C=C+1 S - 1077 1525 1553 GONC XENDA (1502) GOTO END 1078 * ALBL - ALPHA LABEL *- INCREMENT THE PROGRAM COUNTER PAST THE ALPHA LABEL, * AND DROP INTO SLBL *- IN: M[3:2]= ALPHA LABEL FUNCTION CODE *- OUT: CHIP 0 SELECTED *- USES: C[13:0], A[13:0], STATUS BITS 1 & 2, B[13:0] *- M[13:0] *- USES: 2 SUBROUTINE LEVELS 1087 1088 1526 ALBL 630 C=M RECOVER F.C. 1089 1527 416 A=C - 1090 1530 106 C=0 X - 1091 1531 1160 DADD=C - 1092 1532 1 GSBLNG GTAINC ADVANCE PGMCTR 1092 1533 0 1093 1534 33 GOTO SLBL (1537) * * LBL/SLBL - (NUMERIC) LABEL/SHORT LABEL *- INCREMENTS THE PROGRAM COUNTER PAST A NUMERIC *- LABEL, AND ROTATES THE GOOSE RIGHT ONE POSITION *- *- USES: 1 SUBROUTINE LEVEL 1100 1101 1102 1535 LBL 1 GSBLNG INCGT2 INC PGMCTR 1102 1536 0 1103 1537 SLBL 214 ?S5=1 DISPLAY GOT SOMETHING? 1104 (MSGFLG?) 1105 1540 1540 RTN C YES 1106 1541 1 GOSUB ENLCD 1106 1542 0 1107 1543 1670 RABCR ROTATE GOOSE 1108 1544 1 GOLONG ENCP00 1108 1545 2 1109 * ROW0 - ROW ZERO LOGIC *- DISTINGUISHES NULLS FROM SHORT LABELS *- SKIPS ALL NULLS *- IN: C[3:]= FUNCTION CODE *- PT= 3 *- OUT: PT= 3 *- USES: C[2] 1117 1118 1119 1120 1546 ROW0 1166 C=C-1 XS - 1121 1547 1703 GONC SLBL (1537) SHORT LBL 1122 1550 NULL 1 GOLONG RUNING SKIP ALL NULLS 1122 1551 2 1123 1124 1125 1126 ENTRY ASN20 1127 ENTRY XASN 1128 1129 1130 * ASN - ASSIGN FUNCTION TO KEYCODE *- THIS CODE PERFORMS AN ASSIGNMENT FUNCTION AND ALSO *- CLEARS ASSIGNMENTS. ROM FUNCTIONS ARE ASSIGNED *- BY PLACING THE FUNCTION CODE & KEYCODE IN AN *- ASSIGNMENT TABLE. RAM FUNCTIONS ARE ASSIGNED BY *- PLACING THE KEYCODE IN THE CORRESPONDING ALPHA *- LABEL. THE ASSIGNMENT BIT MAP IS MAINTAINED AND *- ASN TABLE REGISTERS ARE CREATED BY THIS CODE ALSO. *- IN: A[1:0]= KEYCODE TO BE ASSIGNED/CLEARED *- REG 9 = ALPHA STRING/ZERO *- OUT: *- USES: A,B,C,M,N,G,REG 9,REG 10,STATUS BITS 3,8,9,2,5 *- USES: 3 SUBROUTINE LEVELS 1144 1145 1146 1552 XASN 1170 C=REGN 9 REMOVE ASSIGNMENT? 1147 1553 530 M=C - 1148 1554 1356 ? C#0 - 1149 1555 1 GOLNC ASN20 YES 1149 1556 2 1150 1557 1270 C=REGN 10 SAVE KEYCODE IN REG 10 1151 1560 252 AC EX WPT - 1152 1561 1250 REGN=C 10 - 1153 1562 1 GSBLNG ASRCH C[3:0]_ALBL ADDR 1153 1563 0 1154 1564 1356 ? C#0 ERROR? 1155 1565 1 GOLNC SERR YES 1155 1566 2 1156 1567 1150 REGN=C 9 REG 9_ALBL ADDR & F.C. 1157 1570 1270 C=REGN 10 A[2:1]_K.C. 1158 1571 406 A=C X - 1159 1572 1 GSBLNG TBITMA TEST BIT MAP 1159 1573 0 1160 1574 1356 ? C#0 BIT SET? 1161 1575 73 GONC XASN02 (1604) NO 1162 1576 1270 C=REGN 10 CLEAR KEYCODE ENTRY 1163 1577 416 A=C - 1164 1600 1410 S1= 1 - 1165 1601 1 GSBLNG GCPKC - 1165 1602 0 1166 1603 33 GOTO *+3 (1606) 1167 1604 XASN02 1 GSBLNG SRBMAP SET BIT 1167 1605 0 1168 1606 1270 C=REGN 10 A[3:2]_K.C. A[1:0]_0 1169 1607 406 A=C X - 1170 1610 1756 A SL - 1171 1611 1756 A SL - 1172 1612 1170 C=REGN 9 B[3:0]_F.C. 1173 1613 174 RCR 4 - 1174 1614 356 BC EX - 1175 1615 1014 ?S2=1 PLACE IN RAM? 1176 1616 377 GOC XASN05 (1655) NOPE 1177 1617 1170 C=REGN 9 C[3:0]_ALBL ADDRESS 1178 1620 256 AC EX YES 1179 1621 1074 RCR 2 - 1180 1622 356 BC EX SAVE K.C. 1181 1623 34 PT= 3 - 1182 1624 1 GSBLNG INCAD2 - 1182 1625 0 1183 1626 1 GSBLNG INCADA - 1183 1627 0 1184 1630 1 GSBLNG GTBYT GET KEYCODE BYTE 1184 1631 0 1185 1632 156 AB EX TEST FOR ASSIGN SAME KEY 1186 1633 1434 PT= 1 - 1187 1634 1552 ? A#C WPT - 1188 1635 1640 RTN NC KEYS EQUAL 1189 1636 156 AB EX PLACE KEY CODE 1190 1637 34 PT= 3 - 1191 1640 530 M=C - 1192 1641 356 BC EX - 1193 1642 1 GSBLNG PTBYTA - 1193 1643 0 1194 1644 1434 PT= 1 TEST TO UPDATE BIT MAP 1195 1645 630 C=M - 1196 1646 1352 ? C#0 WPT - 1197 1647 1640 RTN NC NOT NEEDED 1198 1650 256 AC EX - 1199 1651 106 C=0 X - 1200 1652 1160 DADD=C - 1201 1653 1 GOLONG TSTMAP UPDATE BIT MAP 1201 1654 2 1202 1655 XASN05 1 GSBLNG GCPKC PLACE K.C. & F.C. 1202 1656 0 1203 1657 14 ?S3=1 DONE? 1204 1660 1540 RTN C YES 1205 1661 116 C=0 CONSTRUCT REGISTER TO INSERT 1206 1662 312 C=B WPT - 1207 1663 374 RCR 10 - 1208 1664 252 AC EX WPT - 1209 1665 1074 RCR 2 - 1210 1666 1176 C=C-1 S - 1211 1667 356 BC EX B_REG TO INSERT 1212 1670 1 GSBLNG AVAILA ANY ROOM? 1212 1671 0 1213 1672 1356 ? C#0 - 1214 1673 77 GOC ASN15 (1702) YES 1215 1674 1160 DADD=C ENABLE CHIP 0 1216 1675 156 AB EX 1217 1676 1 GOSUB TSTMAP CLEAR BIT IN BIT MAP 1217 1677 0 1218 1700 1 GOLONG PACKE 1218 1701 2 1219 1220 ENTRY ASN15 ENTRY POINT MADE FOR CARD READER * 1222 1702 ASN15 1160 DADD=C SELECT REGISTER 1223 1703 530 M=C SAVE ADDR 1224 1704 70 C=DATA SWITCH REG CONTENTS 1225 1705 356 BC EX - 1226 1706 1360 DATA=C - 1227 1707 630 C=M INCREMENT ADDR 1228 1710 1046 C=C+1 X - 1229 1711 1406 ? AROW 1507 X<>ROW 1510 XGNN10 712 XGNN10 713 XGNN40 653 XGNN40 654 End of VASM assembly VASM ROM ASSEMBLY REV. 6/81A OPTIONS: L C S * HP41C MAINFRAME MICROCODE ADDRESSES @24000-25777 * 4 FILE CN10B 5 ENTRY AVAIL 6 ENTRY AVAILA 7 ENTRY BSTEP 8 ENTRY BSTE2 9 ENTRY BKROM2 10 ENTRY BSTE 11 ENTRY BSTEPA 12 ENTRY DECAD 13 ENTRY DECADA 14 ENTRY FIXEND 15 ENTRY FLINK 16 ENTRY GETPC 17 ENTRY INCAD 18 ENTRY INCADA 19 ENTRY LINNM1 20 ENTRY LINN1A 21 ENTRY LINNUM 22 ENTRY NXLDEL 23 ENTRY NXLSST 24 ENTRY FLINKA 25 ENTRY FLINKM 26 ENTRY FLINKP 27 ENTRY GTBYT 28 ENTRY GTBYTO 29 ENTRY GETPCA 30 ENTRY GTBYTA 31 ENTRY GTONN 32 ENTRY GTO.5 33 ENTRY IN3B 34 ENTRY INBYT 35 ENTRY INBYTC 36 ENTRY INBYTP 37 ENTRY INBYT0 38 ENTRY INBYT1 39 ENTRY INCAD2 40 ENTRY INCADP 41 ENTRY INEX 42 ENTRY INLIN 43 ENTRY INSLIN 44 ENTRY INLIN2 45 ENTRY INSTR 46 ENTRY INTXC 47 ENTRY NROOM3 48 ENTRY NXBYTA 49 ENTRY NXBYT3 50 ENTRY NXL1B 51 ENTRY NXL3B2 52 ENTRY NXLCHN 53 ENTRY NXLIN 54 ENTRY NXLINA 55 ENTRY NXLIN3 56 ENTRY NXLTX 57 ENTRY PTBYTM 58 ENTRY PUTPCL 59 ENTRY SKPLIN * PUT BYTE BRANCH TABLE 61 0 TBLPBA 70 C=DATA 7 ENTRY POINTS(0,2,4,...,12) 62 1 443 GOTO PBA0 ( 45) BYTE 0 63 2 70 C=DATA 64 3 363 GOTO PBA1 ( 41) BYTE 1 65 4 70 C=DATA 66 5 303 GOTO PBA2 ( 35) 67 6 70 C=DATA 68 7 223 GOTO PBA3 ( 31) 69 10 70 C=DATA 70 11 143 GOTO PBA4 ( 25) 71 12 70 C=DATA 72 13 63 GOTO PBA5 ( 21) 73 14 PBA6 70 C=DATA BYTE 6 74 15 1574 RCR 12 ROTATE PROPER BYTE INTO POSITION 75 16 312 C=B WPT STORE 1 (OR 2) BYTE(S) 76 17 1074 RCR 2 RESTORE BYTE(S) TO PROPER POSITION 77 20 263 GOTO PBAEND ( 46) CLEAN UP 78 21 PBA5 374 RCR 10 79 22 312 C=B WPT 80 23 174 RCR 4 81 24 223 GOTO PBAEND ( 46) 82 25 PBA4 474 RCR 8 83 26 312 C=B WPT 84 27 574 RCR 6 85 30 163 GOTO PBAEND ( 46) 86 31 PBA3 574 RCR 6 87 32 312 C=B WPT 88 33 474 RCR 8 89 34 123 GOTO PBAEND ( 46) 90 35 PBA2 174 RCR 4 91 36 312 C=B WPT 92 37 374 RCR 10 93 40 63 GOTO PBAEND ( 46) 94 41 PBA1 1074 RCR 2 95 42 312 C=B WPT 96 43 1574 RCR 12 97 44 23 GOTO PBAEND ( 46) 98 45 PBA0 312 C=B WPT NO ROTATION NEEDED HERE 99 46 PBAEND 1360 DATA=C RESTORE REGISTER IN MEMORY 100 47 34 PT= 3 RESTORE POINTER 101 50 1740 RTN DONE! 102 51 INB1 1074 RCR 2 103 52 352 BC EX WPT 104 53 1574 RCR 12 105 54 443 GOTO INBEXA ( 120) * 107 ENTRY ERRDE 108 55 ERRDE 1 GOSUB ERROR 108 56 0 109 57 0 XDEF MSGDE 110 FILLTO @57 * PUT LINK BRANCH TABLE 112 60 TBLPTL 70 C=DATA 7 ENTRY POINTS(0,2,4,...,12) 113 61 403 GOTO PTL0 ( 121) SPECIAL CASE ON BOUNDARY 114 62 70 C=DATA 115 63 1623 GOTO PBA0 ( 45) 116 64 70 C=DATA 117 65 1543 GOTO PBA1 ( 41) 118 66 70 C=DATA 119 67 1463 GOTO PBA2 ( 35) 120 70 70 C=DATA 121 71 1403 GOTO PBA3 ( 31) 122 72 70 C=DATA 123 73 1323 GOTO PBA4 ( 25) 124 74 70 C=DATA 125 75 1243 GOTO PBA5 ( 21) 126 76 PBA6A 1163 GOTO PBA6 ( 14) 127 FILLTO @77 77 0000 NOP * INSERT BYTE BRANCH TABLE 129 100 TBLINB 70 C=DATA INSERT BYTE BRANCH TABLE 130 101 533 GOTO INB0 ( 154) ON 16-WORD BOUNDARY 131 102 70 C=DATA 132 103 1463 GOTO INB1 ( 51) 133 104 70 C=DATA 134 105 433 GOTO INB2 ( 150) 135 106 70 C=DATA 136 107 353 GOTO INB3 ( 144) 137 110 70 C=DATA 138 111 273 GOTO INB4 ( 140) 139 112 70 C=DATA 140 113 213 GOTO INB5 ( 134) 141 114 INB6 70 C=DATA GET REGISTER TO INSERT INTO 142 115 1574 RCR 12 POSITION BYTE OF INTEREST IN C[1:0] 143 116 352 BC EX WPT EXCHANGE BYTE WITH BYTE IN REGISTER 144 117 1074 RCR 2 PUT BYTE BACK INTO RIGHT POSITION IN REG. 145 120 INBEXA 353 GOTO INBEX ( 155) FINISH UP 146 121 PTL0 1574 RCR 12 PUT FIRST BYTE IN 147 122 302 C=B PT 148 123 326 C=B XS 149 124 1074 RCR 2 150 125 1360 DATA=C 151 126 252 AC EX WPT PUT SECOND BYTE IN 152 127 412 A=C WPT THE NEXT REGISTER 153 130 1156 C=C-1 154 131 1160 DADD=C 155 132 1434 PT= 1 156 133 1433 GOTO PBA6A ( 76) 157 134 INB5 374 RCR 10 158 135 352 BC EX WPT 159 136 174 RCR 4 160 137 163 GOTO INBEX ( 155) 161 140 INB4 474 RCR 8 162 141 352 BC EX WPT 163 142 574 RCR 6 164 143 123 GOTO INBEX ( 155) 165 144 INB3 574 RCR 6 166 145 352 BC EX WPT 167 146 474 RCR 8 168 147 63 GOTO INBEX ( 155) 169 150 INB2 174 RCR 4 170 151 352 BC EX WPT 171 152 374 RCR 10 172 153 23 GOTO INBEX ( 155) 173 154 INB0 352 BC EX WPT 174 155 INBEX 1312 ? B#0 WPT 175 156 107 GOC INLIN ( 166) 176 157 1360 DATA=C PUT REGISTER BACK 177 160 630 C=M INCREMENT CT BY 1 178 161 1076 C=C+1 S 179 162 256 AC EX RESTORE REGISTERS 180 163 106 C=0 X WAKE UP CHIP 0 181 164 1160 DADD=C 182 165 1740 RTN DONE 183 166 INLIN 1 GOSUB AVAIL CHECK IF EMPTY REG. AVAILABLE 183 167 0 184 170 NROOM 1356 ? C#0 EMPTY REGISTER? 185 171 723 GONC NOROOM ( 263) NO, ERROR EXIT * INSERT ASSURED HERE. 187 172 1 GOSUB FLINKM FIND LINKS TO FIX UP CHAIN 187 173 0 188 174 1 GOSUB FIXEND FIX UP END 188 175 0 189 176 174 RCR 4 FIX UP FOLLOWING LINK 190 177 1 GOSUB GTLNKA GET LINK 190 200 0 191 201 1346 ? C#0 X TOP ELEMENT OF CHAIN? 192 202 23 GONC *+2 ( 204) YES, DO NOTHING 193 203 1056 C=C+1 ADD 1 TO REGISTER COUNT 194 LEGAL 195 204 1 GOSUB PTLINK PUT LINK BACK 195 205 0 196 206 630 C=M 197 207 412 A=C WPT 198 210 1474 RCR 1 PUT BYTE # IN C[XS] 199 211 1434 PT= 1 SET PT TO TOP DIGIT OF THE BYTE 200 212 43 GOTO INL1 ( 216) SPECIFIED BY C[XS]. 201 213 INL2 1166 C=C-1 XS 202 214 1734 INC PT 203 215 1734 INC PT 204 216 INL1 1166 C=C-1 XS 205 217 1743 GONC INL2 ( 213) 206 220 116 C=0 FIX UP CHAINHEAD 207 221 1160 DADD=C 208 222 1570 C=REGN 13 209 223 1156 C=C-1 210 224 1550 REGN=C 13 PUT BACK 211 225 INL3 1056 C=C+1 MOVE REGISTERS DOWN 212 226 1160 DADD=C 213 227 346 BC EX X 214 230 70 C=DATA 215 231 346 BC EX X 216 232 1146 C=C-1 X 217 233 1160 DADD=C 218 234 346 BC EX X 219 235 1360 DATA=C 220 236 346 BC EX X 221 237 1046 C=C+1 X 222 240 1546 ? A#C X FINISHED? 223 241 1647 GOC INL3 ( 225) NO, MOVE ANOTHER LINE. 224 242 346 BC EX X CLEAN UP 225 243 256 AC EX 226 244 1360 DATA=C STORE A TEMPORARILY 227 245 116 C=0 CREATED NULL REGISTER 228 246 252 AC EX WPT PLACE NULLS IN BEGINNING OF REGISTER 229 247 256 AC EX 230 250 70 C=DATA RETRIEVE OLD A 231 251 256 AC EX 232 252 1360 DATA=C STORE LAST PART OF REGISTER 233 253 630 C=M 234 254 1160 DADD=C 235 255 70 C=DATA 236 256 112 C=0 WPT STORE LAST PART OF REGISTER WITH 237 257 1360 DATA=C 1 OR MORE NULLS 238 260 630 C=M GO BACK AND FINISH THE INSERT 239 261 1 GOLONG INBYT1 239 262 2 240 263 NOROOM 630 C=M NO ROOM - ERROR EXIT 241 264 412 A=C WPT ZERO PREVIOUSLY INSERTED STEPS 242 265 103 GOTO NROOM2 ( 275) 243 266 NROOM1 1 GOSUB DECADA 243 267 0 244 270 106 C=0 X 245 271 1 GOSUB PTBYTM 245 272 0 246 273 1176 C=C-1 S DONE? 247 274 530 M=C 248 275 NROOM2 1376 ? C#0 S 249 276 1707 GOC NROOM1 ( 266) NO, ZERO OUT SOME MORE BYTES. 250 277 1114 ?S9=1 SET RUNNING TO ASSURE BACK STEP 251 300 23 GONC *+2 ( 302) IF S9=1 252 301 1310 S13= 1 253 302 NROOM3 1 GOLONG PACKE 253 303 2 * * AVAIL - FIND AN AVAILABLE REGISTER * THIS SUBROUTINE PLACES CHAINHEAD-1 IN A[X] AND LOOKS *- TO SEE IF CHAINHEAD-1 IS AVAILABLE FOR USE IN INSERTING *- OR IN ASSIGNING. C[X] IS RETURNED AS 0 IF THERE IS NO ROOM. *- IF THERE IS ROOM, C[X] IS RETURNED AS DECIMAL 192. *- NOTHING IS ASSUMED AND PT IS RETURNED AS 3 * AVAILA - SAME AS AVAIL EXCEPT PT IS NOT SET AND REG 0 ASSUMED *- SELECTED. * 264 304 AVAIL 116 C=0 265 305 34 PT= 3 266 306 1160 DADD=C 267 307 AVAILA 1570 C=REGN 13 GET CHAINHEAD ADDRESS 268 310 1156 C=C-1 269 311 1160 DADD=C SELECT CHAINHEAD-1 REGISTER 270 312 406 A=C X SAVE ADDRESS IN A 271 313 70 C=DATA GET THE REGISTER 272 314 1356 ? C#0 NON-ZERO REGISTER? 273 315 57 GOC AVAIL1 ( 322) YES, ERROR EXIT 274 316 460 LDI 275 317 300 CON 192 REGISTER EXISTENT? 276 320 1406 ? A15? 708 1026 717 GOC INN2B (1117) YES, LONG FORM, NORMAL 2-BYTE 709 ENTRY INSHRT 710 1027 INSHRT 1 GOSUB PTBYTA SHORT FORM 710 1030 0 711 1031 INEXA 613 GOTO INEX (1112) DONE! 712 1032 IN2BB 1042 C=C+1 PT C<>REG? 713 1033 647 GOC INN2B (1117) YES, NORMAL 2-BYTE * LINKS OF THE CHAIN INSERTED HERE 715 1034 404 S8= 0 CLEAR END BIT 716 1035 1042 C=C+1 PT END? 717 1036 27 GOC *+2 (1040) NO, ALPHA LABEL 718 1037 410 S8= 1 SET END BIT 719 1040 1 GOSUB INBYT0 PUT IN BYTE FOR LINK 719 1041 0 720 1042 460 LDI PUT 0F IN EXP FIELD 721 1043 17 CON 15 722 1044 414 ?S8=1 END? 723 1045 43 GONC INLNK1 (1051) NO, ALPHA LABEL 724 1046 1 GOSUB INBYTC OUTPUT 0F (END BYTE) 724 1047 0 725 1050 123 GOTO INLNK2 (1062) GO FIX LINKS 726 1051 INLNK1 1 GOSUB INTXC MAKE TEXT CHARACTER 726 1052 0 727 1053 1046 C=C+1 X COUNT BYTE FOR KEYCODE 728 LEGAL 729 1054 1 GOSUB INBYTC INSERT TEXT COUNT 729 1055 0 730 1056 1 GOSUB INBYT0 INSERT ZERO BYTE FOR KEYCODE 730 1057 0 731 1060 1 GOSUB INSTR INSERT STRING 731 1061 0 732 1062 INLNK2 1 GOSUB GETPC FIX LINKS 732 1063 0 733 1064 1 GOSUB INCADA POINT TO FIRST BYTE OF NEW LINK 733 1065 0 734 1066 1 GOSUB FLINKA FIND LINKS 734 1067 0 735 1070 1 GOSUB GENLNK FIX CURRENT LINK 735 1071 0 736 1072 174 RCR 4 737 1073 1 GOSUB GENLNK FIX PREVIOUS LINK 737 1074 0 738 1075 414 ?S8=1 IF END, FIX PREVIOUS END 739 1076 143 GONC INEX (1112) NO, DONE 740 1077 374 RCR 10 YES, PUT DECOMPILE BITS 741 1100 1 GOSUB FIXEND IN PREVIOUS END 741 1101 0 742 1102 412 A=C WPT MOVE PC TO END OF "END" 743 1103 1 GOSUB INCAD2 743 1104 0 744 1105 1 GOSUB PUTPC 744 1106 0 745 1107 1770 C=REGN 15 SET LINE # TO 000 746 1110 106 C=0 X 747 1111 1750 REGN=C 15 748 1112 INEX 1 GOLONG NFRC DONE 748 1113 2 749 1114 IN2BA 776 C=C+C S SEPARATE ROWS 9 AND 10 750 1115 1376 ? C#0 S 751 1116 67 GOC IN2R9 (1124) ROW 9, MORE TO DO 752 1117 INN2B 316 C=B ROW 10, NORMAL 2-BYTE 753 1120 334 PT= 10 754 1121 1 GOSUB INBYTP INSERT SECOND BYTE 754 1122 0 755 1123 1673 GOTO INEX (1112) DONE * ROW 9 HERE 757 1124 IN2R9 1534 PT= 12 758 1125 1142 C=C-1 PT RCL? 759 1126 103 GONC IN2STO (1136) NO, CHECK FOR STORE 760 1127 634 PT= 11 YES, CHECK FOR SHORT FORM 761 1130 1342 ? C#0 PT <16? 762 1131 1667 GOC INN2B (1117) NO, LONG FORM. 763 1132 220 LC 2 YES, MAKE SHORT FORM 764 1133 INRCLS 374 RCR 10 765 1134 INSHR2 1 GOLONG INSHRT INSERT IT 765 1135 2 766 1136 IN2STO 1142 C=C-1 PT STO? 767 1137 1603 GONC INN2B (1117) NO, STANDARD 2-BYTE 768 1140 634 PT= 11 SHORT FORM? 769 1141 1342 ? C#0 PT 770 1142 1557 GOC INN2B (1117) NO, LONG FORM 771 1143 320 LC 3 772 1144 1673 GOTO INRCLS (1133) SHORT FORM * 3-BYTE FUNCTIONS HERE 774 1145 IN3B 1 GOSUB INBYT0 PUT OUT SECOND BYTE FOR COMPILE 774 1146 0 775 1147 776 C=C+C S XEQ OR GTO? 776 1150 1376 ? C#0 S 777 1151 1463 GONC INN2B (1117) XEQ-INSERT NORMAL ADDRESS 778 1152 374 RCR 10 CHECK FOR SHORT FORM 779 1153 1046 C=C+1 X NOTE-FF IS ILLEGAL 780 1154 1434 PT= 1 781 1155 1342 ? C#0 PT SHORT FORM? 782 1156 1417 GOC INN2B (1117) NO, INSERT NORMAL ADDRESS 783 1157 1320 LC 11 YES, SHORT FORM 784 1160 1 GOSUB DECAD OVERWRITE FIRST BYTE 784 1161 0 785 1162 1523 GOTO INSHR2 (1134) * * INSTR - INSERT STRING * GIVEN REG A IN THE PROPER FORMAT FOR INBYT, INSERTS A *- LABEL STRING FROM REG 9 INTO PROGRAM MEMORY. * USES THE SAME REGISTERS AS INBYT AND IN ADDITION ALL *- OF C. * USES 3 SUB LEVELS. RETURNS PT=1 * 794 1163 INSTR 1170 C=REGN 9 GET THE REST OF THE STRING 795 1164 INSTR1 1356 ? C#0 ALL DONE? 796 1165 1640 RTN NC YES, GO BACK. 797 1166 1 GOSUB INBYTC NO, INSERT ANOTHER CHAR. 797 1167 0 798 1170 1170 C=REGN 9 SHIFT OUT INSERTED CHAR. 799 1171 1716 C SR 800 1172 1716 C SR 801 1173 1150 REGN=C 9 802 1174 1703 GOTO INSTR1 (1164) GO AROUND AGAIN * * INTXC - PREPARE TEST CHARACTER FOR INSERT * PLACES A TEXT CHARACTER OF THE PROPER SIZE IN C[1:0] * WHICH IS NEEDED TO PRECEDE THE TEXT STRING IN REG 9. * USES ONLY C[X] AND M. * 809 1175 INTXC 460 LDI CREATE TEXT CHARACTER 810 1176 360 CON2 15 0 811 1177 256 AC EX PLACE TEXT CHAR IN A 812 1200 530 M=C SAVE A FOR LATER 813 1201 1170 C=REGN 9 GET TEXT CHAR 814 1202 43 GOTO INTXC2 (1206) 815 1203 INTXC1 546 A=A+1 X ADD 1 TO TEXT CHAR 816 1204 1716 C SR MOVE TO NEXT CHAR. 817 1205 1716 C SR 818 1206 INTXC2 1356 ? C#0 ALL DONE? 819 1207 1747 GOC INTXC1 (1203) NO, COUNT SOME MORE. 820 1210 630 C=M DONE, PUT THINGS BACK. 821 1211 256 AC EX RESTORE A 822 1212 1740 RTN DONE * * LINNUM - LINE NUMBER * WHEN CALLED EITHER RECALLS THE BINARY LINE NUMBER *- OF THE CURRENT LINE FROM REGISTER 15 OR ELSE COMPUTES IT *- IF THE LINE NUMBER STORED IS INVALID. IN ALL CASES THE *- CORRECT LINE NUMBER IS RETURNED IN C[2:0]. IF COMPUTED, *- THE PROPER LINE NUMBER IS STORED. * ASSUMES CHIP 0 SELECTED ON INPUT. * WORKS IN ROM OR RAM. * USES 2 SUBROUTINE LEVELS. * USES A,C,M,N,P,Q,B[3:0],ST[8:0], RETURNS P SELECTED IF LINE NUMBER *- IS COMPUTED. 835 1213 LINNUM 1770 C=REGN 15 GET LINE NUMBER 836 1214 1046 C=C+1 X VALID? 837 1215 37 GOC LINNM1 (1220) NO, GO COMPUTE IT. 838 1216 1146 C=C-1 X RESTORE THE CORRECT NUMBER 839 1217 1740 RTN 840 1220 LINNM1 404 S8= 0 CLEAR GTONN BIT 841 1221 BKROM2 116 C=0 842 1222 1156 C=C-1 SET TARGET LINE# = FFF 843 1223 LINN1A 240 SEL P COMPUTE LINE NUMBER IN RAM 844 1224 134 PT= 4 SET UP POINTERS FOR LATER 845 1225 340 SEL Q 846 1226 160 N=C STORE TARGET LINE# 847 1227 314 ?S10=1 ROM FLAG? 848 1230 647 GOC LINROM (1314) YES, COMPUTE LINE# IN ROM 849 1231 1 GOSUB FLINKP FIND THE PREVIOUS LINK 849 1232 0 850 1233 414 ?S8=1 GTONN? 851 1234 23 GONC *+2 (1236) NO, USE PC ADDRESS 852 1235 474 RCR 8 YES, USE END ADDRESS AS TARGET 853 1236 122 C=0 PQ PREPARE FOR LINE NUMBER IN PQ FIELD 854 1237 730 CM EX 855 1240 1512 ? A#0 WPT TOP OF MEMORY? 856 1241 103 GONC LINNM5 (1251) YES, GO TO FIRST INST. 857 1242 33 GOTO LINNM2 (1245) NO, GO FIND IT 858 1243 LINNM3 1 GOSUB UPLINK FIND PREVIOUS END 858 1244 0 859 1245 LINNM2 1076 C=C+1 S END? 860 1246 63 GONC LINNM4 (1254) YES, MOVE TO FINAL BYTE 861 1247 1346 ? C#0 X TOP OF MEMORY? 862 1250 1737 GOC LINNM3 (1243) NO, CONTINUE 863 1251 LINNM5 1 GOSUB FSTIN YES, POSITION JUST BEFORE 1ST INST. 863 1252 0 864 1253 63 GOTO LINNM6 (1261) GO COUNT LINES. 865 1254 LINNM4 1 GOSUB INCADA END! SET UP FOR COUNTING LOOP 865 1255 0 866 1256 1 GOSUB NXBYTA POSITION TO LAST BYTE OF END 866 1257 0 867 1260 1574 RCR 12 868 1261 LINNM6 1704 CLR ST SET UP FOR NXLIN 869 1262 110 S4= 1 870 1263 212 B=A WPT SAVE COUNTING ADDRESS IN B 871 1264 730 CM EX STORE MEM REG IN C 872 1265 416 A=C GET TARGET ADDRESS AND LINE CT TO A 873 1266 260 C=N RETRIEVE THE TARGET LINE NUMBER 874 1267 312 C=B WPT MERGE WITH THE COUNTING ADDRESS * MAIN COUNTING LOOP 876 1270 LINML 160 N=C SAVE THE CURRENT ADDRESS 877 1271 256 AC EX 878 1272 730 CM EX SAVE ADDRESS, GET STEPS 879 1273 LINML1 1 GOSUB NXLIN MOVE TO THE NEXT LINE 879 1274 0 880 1275 730 CM EX GET ADDRESS 881 1276 1062 C=C+1 PQ ADD 1 TO LINE COUNT 882 1277 256 AC EX TEST FOR DONE 883 1300 1562 ? A#C PQ REACHED LINE NN 884 1301 113 GONC LINML2 (1312) YES, GTONN EXIT. 885 1302 1406 ? ANN? 1057 1510 337 GOC NXL3B2 (1543) YES 1058 1511 NXLCHN 1214 ?S7=1 DELETE? 1059 1512 1 GOLC SKPDEL YES, SPECIAL LOGIC 1059 1513 3 1060 1514 1 GOSUB NXL3B2 GET THE THIRD BYTE 1060 1515 0 1061 1516 1 GOSUB NXL3B2 1061 1517 0 1062 1520 1042 C=C+1 PT ALPHA LABEL? 1063 1521 467 GOC NXLTX (1567) YES, GO DO THE TEXT 1064 1522 510 S6= 1 NO, END - MARK IT 1065 1523 114 ?S4=1 NORMAL CASE? 1066 1524 1540 RTN C YES, DONE! 1067 1525 1 GOSUB DECADA RESTORE ADDRESS OF 1ST BYTE OF LINK. 1067 1526 0 1068 1527 1 GOSUB DECADA 1068 1530 0 1069 1531 214 ?S5=1 SKPLIN? 1070 1532 1427 GOC NXLDE2 (1474) YES, BACK UP 1071 1533 1 GOSUB GTLINK NO, SINGLE STEP 1071 1534 0 1072 1535 1 GOLONG CPGMHD GO TO THE TOP OF THE PROGRAM 1072 1536 2 * 3-BYTE INSTRUCTIONS HERE 1074 1537 NXLIN3 742 C=C+C PT 3-BYTE? 1075 1540 213 GONC NXLIN4 (1561) NO, MORE DECODE 1076 1541 1 GOSUB NXL3B2 INCREMENT THE FIRST BYTE 1076 1542 0 1077 1543 NXL3B2 642 A=A-1 PT INCREMENT 1 BYTE 1078 1544 123 GONC NXL2B1 (1556) 1079 1545 252 AC EX WPT 1080 1546 1420 LC 12 1081 1547 34 PT= 3 1082 1550 1146 C=C-1 X 1083 1551 1160 DADD=C 1084 1552 412 A=C WPT 1085 1553 70 C=DATA 1086 1554 374 RCR 10 1087 1555 1740 RTN 1088 1556 NXL2B1 642 A=A-1 PT 1089 1557 1574 RCR 12 1090 1560 1740 RTN * TEXT AND ROW 0 HERE 1092 1561 NXLIN4 742 C=C+C PT TEXT? 1093 1562 57 GOC NXLTX (1567) YES, GO TRAVERSE IT. * ROW 0 HERE 1095 1563 NXLR0 1366 ? C#0 XS SHORT LABELS? 1096 1564 1540 RTN C YES, ALL DONE! 1097 1565 1 GOLONG NXLIN SKIP OVER NULLS 1097 1566 2 * TEXT HERE 1099 1567 NXLTX 1166 C=C-1 XS 1100 1570 1540 RTN C EXIT FOR FUNCTION CODE F0 1101 1571 NXLTX2 352 BC EX WPT SAVE BYTE COUNT IN B 1102 1572 1 GOSUB NXL3B2 MOVE TO THE NEXT CHAR. 1102 1573 0 1103 1574 352 BC EX WPT RETRIEVE REMAINING CHAR COUNT. 1104 1575 1166 C=C-1 XS DECREMENT THE CHAR COUNT 1105 1576 1733 GONC NXLTX2 (1571) DONE? 1106 1577 1003 GOTO NXLTX1 (1477) YES, RESTORE THE C REGISTER 1107 1108 1109 1110 ENTRY GCPK04 1111 ENTRY GCPK05 1112 ENTRY GCPKC 1113 ENTRY GCP112 1114 * GCPKC - GET/CLEAR/PLACE KEYCODE *- DEPENDING UPON THE INPUT CONDITIONS, THIS SUBROUTINE *- WILL GET, CLEAR OR PLACE A KEYCODE IN THE ASN *- FUNCTION TABLE OR PROGRAM MEMORY, WHICHEVER IS *- APPLICABLE. *- *- GET- IN: A[1:0]= LOGICAL KEYCODE *- STATUS BIT 1= 0 *- OUT: CHIP 0 SELECTED *- C[3:0]= CORRESPONDING FUNCTION CODE IF ROM *- = CORRESPONDING LABEL ADDRESS IF RAM *- S3= 1 IMPLIES C[3:0] IS A RAM LABEL ADDRESS *- (IF DIGIT 3 = 0 THEN FUNCTION CODE IS 1-BYTE *- FUNCTION CODE) *- *- CLEAR- IN: A[1:0]= LOGICAL KEYCODE *- STATUS BIT 1 = 1 *- OUT: CHIP 0 SELECTED *- *- PLACE- IN: A[3:2]= LOGICAL KEYCODE *- A[1:0]= ZERO *- B[3:0]= FUNCTION CODE *- OUT: S3=1 IMPLIES FUNCTION WAS PLACED *- USES: A,B,C,M,N,STATUS BIT 3 *- USES: 1 SUBROUTINE LEVEL 1140 1141 1142 1143 1600 GCPKC 4 S3= 0 - 1144 1601 1570 C=REGN 13 M_CHAINHEAD 1145 1602 34 PT= 3 1146 1603 420 LC 4 C[3:0]=FINAL END ADDR 1147 1604 530 M=C SAVE FINAL END ADDR IN M 1148 1605 34 PT= 3 1149 1606 374 RCR 10 1150 1607 312 C=B WPT 1151 1610 356 BC EX W SAVE .END. ADDR IN B[7:4] TOO * 1153 ENTRY GCPKC0 SEARCH ALBLS FROM ANY LINK 1154 1611 GCPKC0 460 LDI C[2:0] _ 1ST REG 1155 1612 277 CON 191 - 1156 1613 GCPK10 1046 C=C+1 X - 1157 1614 256 AC EX CHAINHEAD=REG? 1158 1615 730 MC EX - 1159 1616 1546 ? A#C X - 1160 1617 553 GONC GCPK04 (1674) YES, SEARCH ALBLS 1161 1620 730 MC EX RESTORE REGS 1162 1621 256 AC EX - 1163 1622 1160 DADD=C C_REG 1164 1623 160 N=C - 1165 1624 70 C=DATA - 1166 1625 1076 C=C+1 S END ASNS? 1167 1626 503 GONC GCPK05 (1676) YES 1168 1627 1176 C=C-1 S - 1169 1630 436 A=C S - 1170 1631 GCPK70 1434 PT= 1 INITIALIZE 1171 1632 1552 ? A#C WPT 1ST KEYCODE? 1172 1633 43 GONC GCPK80 (1637) YES 1173 1634 574 RCR 6 2ND KEYCODE? 1174 1635 1552 ? A#C WPT - 1175 1636 347 GOC GCPK20 (1672) NOPE 1176 1637 GCPK80 1512 ? A#0 WPT PLACE? 1177 1640 177 GOC GCP100 (1657) NOPE 1178 1641 34 PT= 3 - 1179 1642 1612 A SR WPT C[1:0]_K.C. 1180 1643 1612 A SR WPT - 1181 1644 246 AC EX X - 1182 1645 266 AC EX XS - 1183 1646 1074 RCR 2 PLACE THE FUNCTION CODE 1184 1647 312 C=B WPT - 1185 1650 10 S3= 1 FUNCTION PLACED 1186 1651 GCPK90 574 RCR 6 RESTORE REGISTER 1187 1652 1576 ? A#C S - 1188 1653 23 GONC *+2 (1655) - 1189 1654 574 RCR 6 - 1190 1655 1360 DATA=C RESTORE REGISTER 1191 1656 73 GOTO GCP112 (1665) - 1192 1657 GCP100 1414 ?S1=1 CLEAR? 1193 1660 43 GONC GCP110 (1664) NOPE 1194 1661 112 C=0 WPT ZERO OUT KEYCODE 1195 1662 1074 RCR 2 RESTORE REGISTER 1196 1663 1663 GOTO GCPK90 (1651) - 1197 1664 GCP110 1074 RCR 2 C[3:0]_FUNCTION CODE 1198 1665 GCP112 730 MC EX SELECT CHIP 0 1199 1666 106 C=0 X - 1200 1667 1160 DADD=C - 1201 1670 730 MC EX - 1202 1671 1740 RTN RETURN 1203 1204 1672 GCPK20 260 C=N INCREMENT TO NXT REG 1205 1673 1203 GOTO GCPK10 (1613) - 1206 1207 1674 GCPK04 730 MC EX RESTORE REGISTERS 1208 1675 23 GOTO GCPK06 (1677) 1209 1676 GCPK05 256 AC EX B[5:4]_K.C. 1210 1677 GCPK06 374 RCR 10 - 1211 1700 356 BC EX - 1212 1701 160 N=C SAVE F.C. IN N 1213 1702 174 RCR 4 C[3:0]_CHAINHEAD 1214 1703 34 PT= 3 1215 1704 412 A=C WPT 1216 1705 1 GOSUB GTLINK 1216 1706 0 1217 1707 GCPK15 1346 ? C#0 X END OF CHAIN? 1218 1710 313 GONC GCPK55 (1741) YES, NOT FOUND 1219 1711 1 GSBLNG UPLINK GET NEXT LINK 1219 1712 0 1220 1713 1076 C=C+1 S ALBL? 1221 1714 1733 GONC GCPK15 (1707) NOPE 1222 1715 374 RCR 10 SAVE LINK & ADDR IN M 1223 1716 252 AC EX WPT - 1224 1717 416 A=C - 1225 1720 530 M=C - 1226 1721 1 GSBLNG INCAD2 GET KEYCODE BYTE 1226 1722 0 1227 1723 1 GSBLNG NXBYTA - 1227 1724 0 1228 1725 212 B=A WPT - 1229 1726 1434 PT= 1 CORRECT K.C.? 1230 1727 332 C=B M - 1231 1730 174 RCR 4 - 1232 1731 412 A=C WPT - 1233 1732 374 RCR 10 - 1234 1733 1552 ? A#C WPT - 1235 1734 267 GOC GCPK45 (1762) NOPE 1236 1735 GCPK25 1512 ? A#0 WPT PLACE? 1237 1736 127 GOC GCPK28 (1750) NO 1238 1737 106 C=0 X - 1239 1740 34 PT= 3 - 1240 1741 GCPK55 332 C=B M A[1:0]_K.C. 1241 1742 1160 DADD=C - 1242 1743 174 RCR 4 - 1243 1744 416 A=C - 1244 1745 260 C=N RESTORE F.C. 1245 1746 356 BC EX - 1246 1747 1163 GOTO GCP112 (1665) - 1247 1750 GCPK28 1414 ?S1=1 GET? 1248 1751 63 GONC GCPK35 (1757) YES 1249 1752 106 C=0 X CLEAR K.C. 1250 1753 156 AB EX - 1251 1754 1 GSBLNG PTBYTA - 1251 1755 0 1252 1756 1073 GOTO GCP112 (1665) - 1253 1757 GCPK35 630 C=M C[3:0]_LBL ADDR 1254 1760 10 S3= 1 RAM ADDR 1255 1761 1043 GOTO GCP112 (1665) - 1256 1257 1762 GCPK45 34 PT= 3 PREPARE TO GET NXT LINK 1258 1763 630 C=M - 1259 1764 412 A=C WPT - 1260 1765 174 RCR 4 - 1261 1766 1213 GOTO GCPK15 (1707) - * 1263 ENTRY LEFTJ * * LEFT-JUSTIFY LCD * 1267 1767 LEFTJ 460 LDI 1268 1770 40 CON 32 BLANK 1269 1771 406 A=C X 1270 1772 1434 PT= 1 1271 1773 LEFTJ1 1770 RABCL 1272 1774 1552 ? A#C WPT 1273 1775 1763 GONC LEFTJ1 (1773) 1274 1776 1670 RABCR 1275 1777 1740 RTN 1276 1277 1278 1279 UNLIST ERRORS : 0 SYMBOL TABLE AVAIL 304 - AVAIL1 322 - 315 AVAILA 307 - BKROM 415 - 350 BKROM1 417 - 422 BKROM2 1221 - BST1 361 - 355 BST2 363 - 360 BSTE 413 - 427 BSTE2 1362 - BSTEP 336 - BSTEP2 324 - 343 341 BSTEP3 345 - 325 BSTEPA 353 - BSTML 371 - 411 407 403 BSTML1 412 - 405 BSTML2 377 - 370 CALDSP 703 - DECAD 707 - DECADA 712 - DECADB 737 - 711 ERRDE 55 - FIXEND 430 - FLINK 450 - FLINK1 455 - 513 FLINK2 457 - 454 FLINK3 470 - 465 461 FLINK5 512 - 476 FLINKA 447 - FLINKM 451 - FLINKP 445 - GCP100 1657 - 1640 GCP110 1664 - 1660 GCP112 1665 - 1761 1756 1747 1656 GCPK04 1674 - 1617 GCPK05 1676 - 1626 GCPK06 1677 - 1675 GCPK10 1613 - 1673 GCPK15 1707 - 1766 1714 GCPK20 1672 - 1636 GCPK25 1735 - GCPK28 1750 - 1736 GCPK35 1757 - 1751 GCPK45 1762 - 1734 GCPK55 1741 - 1710 GCPK70 1631 - GCPK80 1637 - 1633 GCPK90 1651 - 1663 GCPKC 1600 - GCPKC0 1611 - GETPC 520 - GETPCA 522 - GTBYT 660 - GTBYTA 673 - 661 GTBYTO 662 - GTO.. 561 - 540 GTO.1 615 - 600 GTO.2 603 - 611 574 GTO.2A 612 - 607 GTO.3 647 - 614 GTO.4 575 - 571 GTO.5 652 - GTONN 531 - GTONN2 551 - 542 IN2B 1012 - 777 IN2BA 1114 - 1016 IN2BB 1032 - 1021 IN2R9 1124 - 1116 IN2STO 1136 - 1126 IN3B 1145 - INB0 154 - 101 INB1 51 - 103 INB2 150 - 105 INB3 144 - 107 INB4 140 - 111 INB5 134 - 113 INB6 114 - INBEX 155 - 153 147 143 137 120 INBEXA 120 - 54 INBYT 746 - INBYT0 743 - INBYT1 752 - INBYTC 744 - INBYTP 745 - INC1 734 - 727 INC2 735 - 706 INC21 732 - 724 INCAD 717 - INCAD2 723 - INCADA 726 - 722 INCADB 741 - 720 INCADP 721 - INEX 1112 - 1123 1076 1031 INEXA 1031 - 1011 1002 INL1 216 - 212 INL2 213 - 217 INL3 225 - 241 INLIN 166 - 156 INLIN2 766 - INLNK1 1051 - 1045 INLNK2 1062 - 1050 INN2B 1117 - 1156 1151 1142 1137 1131 1033 1026 INRCLS 1133 - 1144 INSHR2 1134 - 1162 INSHRT 1027 - INSLIN 764 - INSTR 1163 - INSTR1 1164 - 1174 INTXC 1175 - INTXC1 1203 - 1207 INTXC2 1206 - 1202 LEFTJ 1767 - LEFTJ1 1773 - 1775 LINEND 1347 - 1313 LINML 1270 - 1311 1307 1303 LINML1 1273 - LINML2 1312 - 1305 1301 LINN1A 1223 - LINNM1 1220 - 1215 LINNM2 1245 - 1242 LINNM3 1243 - 1250 LINNM4 1254 - 1246 LINNM5 1251 - 1241 LINNM6 1261 - 1253 LINNUM 1213 - LINRM2 1333 - 1344 LINRM3 1345 - 1342 1336 LINRM4 1337 - 1332 LINROM 1314 - 1230 NOROOM 263 - 171 NROOM 170 - NROOM1 266 - 276 NROOM2 275 - 265 NROOM3 302 - NXBYT3 667 - NXBYTA 671 - NXL1B 1443 - NXL2B1 1556 - 1544 NXL3B2 1543 - 1510 1506 1504 NXLCHN 1511 - NXLDE 1454 - 1473 1471 1467 1451 1447 NXLDE2 1474 - 1532 1465 1462 NXLDEL 1375 - NXLIN 1424 - 1453 NXLIN1 1436 - 1425 NXLIN2 1501 - 1442 NXLIN3 1537 - 1502 NXLIN4 1561 - 1540 NXLINA 1437 - 1377 NXLR0 1563 - NXLSS1 1373 - 1370 NXLSST 1367 - NXLTX 1567 - 1562 1521 NXLTX1 1477 - 1577 NXLTX2 1571 - 1576 PBA0 45 - 63 1 PBA1 41 - 65 3 PBA2 35 - 67 5 PBA3 31 - 71 7 PBA4 25 - 73 11 PBA5 21 - 75 13 PBA6 14 - 76 PBA6A 76 - 133 PBAEND 46 - 44 40 34 30 24 20 PTBYTM 441 - PTL0 121 - 61 PUTPCL 1363 - SKPLIN 1371 - SKPR10 1402 - 1405 SKPR20 1406 - 1411 SKPR30 1412 - 1423 SKPROM 1400 - 1374 TBLINB 100 - TBLPBA 0 - TBLPTL 60 - ENTRY TABLE AVAIL 304 - AVAILA 307 - BKROM2 1221 - BSTE 413 - BSTE2 1362 - BSTEP 336 - BSTEPA 353 - CALDSP 703 - DECAD 707 - DECADA 712 - ERRDE 55 - FIXEND 430 - FLINK 450 - FLINKA 447 - FLINKM 451 - FLINKP 445 - GCP112 1665 - GCPK04 1674 - GCPK05 1676 - GCPKC 1600 - GCPKC0 1611 - GETPC 520 - GETPCA 522 - GTBYT 660 - GTBYTA 673 - GTBYTO 662 - GTO.5 652 - GTONN 531 - IN3B 1145 - INBYT 746 - INBYT0 743 - INBYT1 752 - INBYTC 744 - INBYTP 745 - INCAD 717 - INCAD2 723 - INCADA 726 - INCADP 721 - INEX 1112 - INLIN 166 - INLIN2 766 - INSHRT 1027 - INSLIN 764 - INSTR 1163 - INTXC 1175 - LEFTJ 1767 - LINN1A 1223 - LINNM1 1220 - LINNUM 1213 - NROOM3 302 - NXBYT3 667 - NXBYTA 671 - NXL1B 1443 - NXL3B2 1543 - NXLCHN 1511 - NXLDEL 1375 - NXLIN 1424 - NXLIN3 1537 - NXLINA 1437 - NXLSST 1367 - NXLTX 1567 - PTBYTM 441 - PUTPCL 1363 - SKPLIN 1371 - EXTERNAL REFERENCES AVAIL 166 615 AVAIL 167 616 BKROM2 425 BKROM2 426 BSTE2 413 BSTE2 414 CPGMHD 1535 CPGMHD 1536 DECAD 1160 DECAD 1161 DECADA 266 361 1474 1525 1527 DECADA 267 362 1475 1526 1530 ERROR 55 ERROR 56 FIXEND 174 1100 FIXEND 175 1101 FLINK 351 FLINK 352 FLINKA 1066 FLINKA 1067 FLINKM 172 FLINKM 173 FLINKP 326 1231 FLINKP 327 1232 FSTIN 356 572 1251 FSTIN 357 573 1252 GENLNK 1070 1073 GENLNK 1071 1074 GETLIN 1351 GETLIN 1352 GETPC 345 445 1062 1323 GETPC 346 446 1063 1324 GTBYTA 363 435 GTBYTA 364 436 GTFEND 451 GTFEND 452 GTLINK 566 1533 1705 GTLINK 567 1534 1706 GTLNKA 177 GTLNKA 200 IN3B 1013 IN3B 1014 INBYT 773 INBYT 774 INBYT0 1040 1056 1145 INBYT0 1041 1057 1146 INBYT1 261 INBYT1 262 INBYTC 1005 1046 1054 1166 INBYTC 1006 1047 1055 1167 INBYTP 1121 INBYTP 1122 INCAD2 433 601 667 1103 1721 INCAD2 434 602 670 1104 1722 INCADA 671 1064 1254 INCADA 672 1065 1255 INCADP 746 INCADP 747 INSHRT 1134 INSHRT 1135 INSSUB 764 INSSUB 765 INSTR 1007 1060 INSTR 1010 1061 INTXC 1003 1051 INTXC 1004 1052 LINN1A 555 LINN1A 556 LINNM1 334 LINNM1 335 LINNUM 336 LINNUM 337 MSGDE 57 NFRC 557 1112 NFRC 560 1113 NFRPU 656 NFRPU 657 NXBYTA 603 1256 1375 1723 NXBYTA 604 1257 1376 1724 NXL3B2 1456 1514 1516 1541 1572 NXL3B2 1457 1515 1517 1542 1573 NXLIN 375 1273 1565 NXLIN 376 1274 1566 PACKE 302 620 PACKE 303 621 PACKN 652 PACKN 653 PATCH1 715 PATCH1 716 PTBYTA 441 1027 1754 PTBYTA 442 1030 1755 PTBYTM 271 PTBYTM 272 PTLINK 204 PTLINK 205 PUTPC 1105 1363 PUTPC 1106 1364 PUTPCD 332 650 PUTPCD 333 651 ROMH35 1414 ROMH35 1415 ROMHED 1314 1420 ROMHED 1315 1421 RTN30 534 654 RTN30 535 655 SKPDEL 1512 SKPDEL 1513 SKPLIN 1333 SKPLIN 1334 UPLINK 455 575 1243 1711 UPLINK 456 576 1244 1712 XROW1 547 XROW1 550 End of VASM assembly VASM ROM ASSEMBLY REV. 6/81A OPTIONS: L C S * HP41C MAINFRAME MICROCODE ADDRESSES @26000-27777 * CONTENTS: * 5 FILE CN11B 6 ENTRY TXTLBL 7 ENTRY TXTLB1 8 ENTRY AOUT15 9 ENTRY APHST* 10 ENTRY APNDNW 11 ENTRY APPEND 12 ENTRY ARGOUT 13 ENTRY ASCLCD 14 ENTRY CLLCDE 15 ENTRY CLRLCD 16 ENTRY DAT106 17 ENTRY DAT231 18 ENTRY DAT260 19 ENTRY DAT280 20 ENTRY DAT300 21 ENTRY DAT320 22 ENTRY DAT400 23 ENTRY DAT500 24 ENTRY DATENT 25 ENTRY DECMPL 26 ENTRY INBCHS 27 ENTRY INBYTJ 28 ENTRY MASK 29 ENTRY NXBYTO 30 ENTRY NXTBYT 31 ENTRY OPROMT 32 ENTRY OUTLCD 33 ENTRY ROLBAK 34 ENTRY SCROL0 35 ENTRY SCROLL 36 ENTRY STBT10 37 ENTRY STOLCC 38 ENTRY TEXT 39 ENTRY XROMNF 40 ENTRY XECROM * * SPECIAL CHAR TABLE * 44 0 ASCTBL 177 CON @177 LAZY "T" 45 1 141 CON @141 SMALL A 46 2 142 CON @142 SMALL B 47 3 143 CON @143 SMALL C 48 4 144 CON @144 SMALL D 49 5 145 CON @145 SMALL E * LCD 106 OVERBAR ... HELIOS 0 SMALL DIAMOND 51 6 0 CON @0 LCD 106 52 7 140 CON @140 SUPERSCRIPT T * LCD 108 ONE-LEGGED HANGMAN ... HELIOS 6 UPPER CASE GAMMA 54 10 6 CON @6 LCD 108 * LCD 109 TWO-LEGGED HANGMAN ... HELIOS 4 ALPHA 56 11 4 CON @4 LCD 109 * LCD 10A TWO-LEGGED ONE-ARMED HANGMAN ... HELIOS 5 BETA 58 12 5 CON @5 LCD 10A * LCD 10B COMPLETE HANGMAN ... HELIOS 1 LITTLE X 60 13 1 CON @1 LCD 10B 61 14 14 CON @14 MU 62 15 35 CON @35 NOT EQUAL SIGN 63 16 176 CON @176 SIGMA SIGN 64 17 15 CON @15 ANGLE SIGN * * * ARGOUT - OUTPUT ALPHA REGISTER TO DISPLAY * CALLING SEQUENCE: * IF S8=1, NO SCROLL, PROMPT * IF S8=0, SCROLL, NO PROMPT * IF S8=0, THEN S9 INDICATES WHETHER THE KEYBOARD HAS BEEN RESET * S9=1 : KEYBOARD HAS ALREADY BEEN RESET * S9=0 : KEYBOARD HAS NOT BEEN RESET * BY SET/RESET S8,S9 THE KEYBOARD WILL REMAIN ALIVE DURING SCROLLING. * GOSUB ARGOUT * ASSUMES NOTHING, RETURNS WITH CHIP 0 ENABLED * USES A,B,C. CALLS NXBYTA, ASCLCD. 2 SUB LEVELS. * 79 20 ARGOUT 116 C=0 80 21 1760 PFAD=C 81 22 134 PT= 4 LOAD FIRST CHAR ADDR 82 23 620 LC 6 = 6008 (BYTE 3, REG. 8) 83 24 460 LDI 84 25 214 CON2 8 12 85 26 1474 RCR 1 86 27 416 A=C 87 30 AOUT05 1 GOSUB NXBYTA 87 31 0 88 32 1434 PT= 1 89 33 1352 ? C#0 WPT IS A LEADING BLANK ? 90 34 127 GOC AOUT10 ( 46) NO 91 35 460 LDI 92 36 5 CON2 0 5 CHECK END OF AREG. 93 37 34 PT= 3 94 40 102 C=0 PT 95 41 1552 ? A#C WPT LAST CHAR IN AREG. ? 96 42 1667 GOC AOUT05 ( 30) NO 97 43 1 GOSUB CLLCDE CLEAR LCD 97 44 0 98 45 153 GOTO AOUTR0 ( 62) 99 46 AOUT10 1074 RCR 2 100 47 1 GOSUB CLLCDE 100 50 0 101 51 1340 DISOFF 102 52 453 GOTO AOUT20 ( 117) 103 53 AOUT15 156 AB EX W 104 54 460 LDI 105 55 5 CON2 0 5 106 56 34 PT= 3 107 57 102 C=0 PT 108 60 1552 ? A#C WPT END OF ALPHA REG. ? 109 61 237 GOC AOUT18 ( 104) NOT YET 110 62 AOUTR0 236 B=A S B[13] _ LCD COUNTER 111 63 460 LDI 112 64 37 CON @37 113 65 414 ?S8=1 PROMPT ? 114 66 43 GONC AOUT16 ( 72) NO 115 67 1750 SLSABC 116 70 676 A=A-1 S LCD FULL ? 117 71 67 GOC AOUTRT ( 77) YES 118 72 AOUT16 1046 C=C+1 X @37+1 = @40 119 73 AOUT17 676 A=A-1 S DO WE HAVE TO LEFT-JUSTIFY ? 120 74 37 GOC AOUTRT ( 77) NO 121 75 1750 SLSABC 122 76 1753 GOTO AOUT17 ( 73) 123 77 AOUTRT 1340 DISOFF 124 100 1440 DISTOG TURN DISPLAY ON AGAIN 125 101 336 C=B S 126 102 1 GOLONG STOLCC SAVE THE LCD COUNTER 126 103 2 127 104 AOUT18 1536 ? A#0 S LCD FULL ? 128 105 47 GOC AOUT19 ( 111) NO 129 106 414 ?S8=1 SCROLL NEEDED ? 130 107 1 GSUBNC SCROLL YES 130 110 0 131 111 AOUT19 1 GOSUB ENCP00 131 112 0 132 113 34 PT= 3 133 114 1 GOSUB NXBYTA GET NEXT CHAR 133 115 0 134 116 1074 RCR 2 135 117 AOUT20 216 B=A W 136 120 1 GOSUB ENLCD ENABLE LCD 136 121 0 137 122 1574 RCR 12 C[1:0] _ CHAR 138 123 126 C=0 XS C[2] _ 0 139 124 1 GOSUB ASCLCD SEND IT TO LCD 139 125 0 140 126 1253 GOTO AOUT15 ( 53) * * ASCLCD - SEND AN ASCII CHAR TO LCD * CALLED WITH ASCII IN C[1:0] * ASSUMES LCD ENABLED, RETURNS WITH LCD ENABLED. * USES A.X, B.S, C. 1 SUB LEVEL. * GOSUB ASCLCD * 148 127 COLON 460 LDI 149 130 200 CON2 8 0 150 131 243 GOTO PUNC ( 155) 151 132 COMMA 460 LDI 152 133 300 CON2 12 0 153 134 213 GOTO PUNC ( 155) 154 135 ASCLCD 406 A=C X 155 136 26 A=0 XS 156 137 460 LDI 157 140 72 CON2 3 10 158 141 1546 ? A#C X IS THIS A COLON ? 159 142 1653 GONC COLON ( 127) YES 160 143 460 LDI 161 144 54 CON2 2 12 162 145 1546 ? A#C X IS THIS A COMMA ? 163 146 1643 GONC COMMA ( 132) YES 164 147 460 LDI 165 150 56 CON2 2 14 166 151 1546 ? A#C X IS THIS A PERIOD ? 167 152 367 GOC MASK ( 210) NO 168 153 PERIOD 460 LDI 169 154 100 CON2 4 0 170 155 PUNC 406 A=C X 171 156 1670 FRSABC LOOK AT PREVIOUS CHAR 172 157 1730 CST EX 173 160 514 ?S6=1 IS THERE A PUNC. WITH IT ? 174 161 137 GOC PUNC10 ( 174) YES 175 162 1214 ?S7=1 IS THERE A PUNC. WITH IT ? 176 163 117 GOC PUNC10 ( 174) YES 177 164 1730 CST EX 178 165 1334 PT= 13 179 166 1420 LC 12 180 167 436 A=C S 181 170 336 C=B S 182 171 1576 ? A#C S IS THIS THE FIRST CHAR ? 183 172 63 GONC OUTLCD ( 200) YES 184 173 123 GOTO PUNC20 ( 205) 185 174 PUNC10 1730 CST EX 186 175 1750 SLSABC PUT THE PREVIOUS BACK 187 176 460 LDI 188 177 40 CON @40 LOAD A BLANK 189 200 OUTLCD 1336 ? B#0 S 190 201 43 GONC PUNC20 ( 205) 191 202 176 AB EX S 192 203 676 A=A-1 S 193 204 176 AB EX S 194 205 PUNC20 1560 C=CORA 195 206 1750 SLSABC 196 207 1740 RTN * * MASK - CONVERT AN ASCII CHARACTER TO LCD CHARACTER FORM * (NOT INCLUDING COMMA, PERIOD AND COLON) * CALLED WITH ASCII IN A[2:0] * TWO CALLING SEQUENCES: * 1. GOSUB MASK * NOP * CALLING MASK FOLLOWED BY A NOP, THE LCD CHAR WILL RETURN * IN C[2:0]. CHIP ENABLE UNCHANGED. * USES A.X, C. ASSUMES NOTHING. 1 SUB LEVEL. * 2. GOSUB MASK * * CALLING MASK NOT FOLLOWED BY A NOP WILL CAUSE THE CHAR * BEING SENT TO DISPLAY. RETURNS WITH CHIP 0 ENABLED. * USES A.X, B.S, C. 1 SUB LEVEL. ASSUMES LCD ENABLED. * 213 210 MASK 26 A=0 XS 214 211 460 LDI 215 212 40 CON @40 216 213 1406 ? A @137 ? 221 220 163 GONC MASK10 ( 236) YES, SPECIAL CHAR 222 221 246 AC EX X 223 222 1730 CST EX 224 223 504 S6= 0 MASK 6 BITS ONLY 225 224 1730 CST EX 226 225 MASKRT 406 A=C X 227 226 660 C=STK 228 227 1460 CXISA 229 230 560 STK=C 230 231 246 AC EX X 231 232 1506 ? A#0 X 232 233 1640 RTN NC 233 234 6 A=0 X 234 235 1433 GOTO OUTLCD ( 200) 235 236 MASK10 116 C=0 CHECK SPECIAL CHAR TABLE 236 237 534 PT= 6 237 240 220 LC 2 TABLE ENTRY AT 0000 OF QUAD 11 238 241 1420 LC 12 239 242 34 PT= 3 240 243 MASK20 1460 CXISA LOAD 1 CHAR FROM TABLE 241 244 1546 ? A#C X MATCH A SPECIAL CHAR ? 242 245 63 GONC MASK30 ( 253) YES 243 246 1042 C=C+1 PT POINT TO NEXT WORD 244 247 1743 GONC MASK20 ( 243) GO ON ! 245 250 460 LDI 246 251 72 CON @72 ALL SEGMENT IF NOT FOUND 247 252 1533 GOTO MASKRT ( 225) 248 253 MASK30 74 RCR 3 249 254 126 C=0 XS 250 255 1066 C=C+1 XS C[2:0] HAS THE SPECIAL CHAR 251 LEGAL 252 256 1473 GOTO MASKRT ( 225) REPLACE IT * * * TEXT FUNCTION - EXECUTION OF TEXT FC IN RUN TIME * ASSUMES PGM COUNTER POINTING TO THE 1ST BYTE OF THE TEXT FUNCTION * THIS ROUTINE WILL PICK UP THE CHAR FROM MEM AND MOVE IT TO THE * ALPHA REG. IF THE 1ST CHAR IS A LAZY "T", THE STRING WILL BE * APPENDED TO ALPHA REG. OTHERWISE, THE ALPHA REG WILL BE CLEARED * BEFORE THE STRING GOES IN. * CALLS APPEND. RETURNS TO NFRPU. PC WILL POINT TO LAST BYTE OF TEXT * FC ON EXIT. * 264 257 TEXT 16 A=0 W 265 260 1 GOSUB GETPC GET PRGM COUNTER 265 261 0 266 262 1 GOSUB GTBYT 266 263 0 267 264 1434 PT= 1 268 265 102 C=0 PT C[1:0] _ STRING COUNTER 269 266 1152 C=C-1 WPT 270 267 1540 RTN C RTN IF "F0" F.C. 271 270 374 RCR 10 C[4] _ STRING COUNTER 272 271 134 PT= 4 MOVE COUNTER TO A[4] 273 272 402 A=C PT 274 273 1 GOSUB NXTBYT GET FIRST CHAR 274 274 0 275 275 216 B=A W SAVE THE COUNTER IN B 276 276 1634 PT= 0 277 277 130 G=C 278 300 406 A=C X 279 301 26 A=0 XS 280 302 106 C=0 X 281 303 1160 DADD=C 282 304 460 LDI 283 305 177 CON 127 TEST FIRST CHAR 284 306 1546 ? A#C X IS IT A LAZY "T" ? 285 307 1 GSUBC INTARG NO, INITIALIZE ALPHA REG 285 310 1 286 311 TEXT30 316 C=B W 287 312 416 A=C W 288 313 34 PT= 3 289 314 174 RCR 4 C.X _ STRING COUNTER 290 315 1146 C=C-1 X ALL DONE ? 291 316 1 GOLC PUTPC 291 317 3 292 320 TEXT40 374 RCR 10 293 321 416 A=C W 294 322 1 GOSUB NXTBYT POINT TO NEXT CHAR 294 323 0 295 324 216 B=A W SAVE COUNTER IN B 296 325 1634 PT= 0 297 326 130 G=C 298 327 106 C=0 X 299 330 1160 DADD=C ENABLE CHIP 0 300 331 1 GOSUB APNDNW STORE CHAR TO AREG. 300 332 0 301 333 1563 GOTO TEXT30 ( 311) * * SCROLL - TURN ON THE DISPLAY AND DECIDE WHETHER TO HAVE A DELAY * AFTER PUSHING A CHAR OFF LEFT END. * S8=1 MEANS SCROLL IS NOT REQUIRED, NO DELAY * S9=1 MEANS KEYBOARD HAS ALREADY BEEN RESET. * IF ANY KEY HIT WHEN S9=1, NO DELAY ANYMORE. THIS WAY THE * KEYBOARD WILL STAY ALIVE DURING SCROLLING. * DESTROYS C.X MAY SET S9 * MAY USE A SUBROUTINE LEVEL TO CALL RST05 * 312 334 SCROLL 1340 DISOFF 313 335 1440 DISTOG 314 336 SCROL0 414 ?S8=1 SCROLL REQUIRED ? 315 337 1540 RTN C NO 316 340 1114 ?S9=1 HAS KEYBOARD BEEN RESET ? 317 341 77 GOC SCROL2 ( 350) YES 318 342 1710 RST KB 319 343 1714 CHK KB 320 344 67 GOC SCROL5 ( 352) OLD KEY STILL DOWN 321 345 1110 S9= 1 REMEMBER OLD KEY IS UP 322 346 1 GOSUB RST05 DELAY FOR DEBOUNCE 322 347 0 323 350 SCROL2 1714 CHK KB IS A NEW KEY DOWN ? 324 351 1540 RTN C YES, NO SCROLL 325 352 SCROL5 460 LDI 326 353 1600 CON @1600 327 354 746 C=C+C X *** @1600 FOR FINAL PRODUCT ***** 328 *********************** 329 355 SROL10 1146 C=C-1 X 330 356 1773 GONC *-1 ( 355) 331 357 1740 RTN * * CLEAR LCD * CLRLCD - ASSUME LCD ENABLED * CLLCDE - ENABLE LCD & CLEAR IT * 337 360 CLLCDE 460 LDI 338 361 20 CON2 1 0 339 362 1160 DADD=C DISABLE SLEEPER CHIP 340 363 460 LDI 341 364 375 CON2 15 13 342 365 1760 PFAD=C ENABLE LCD CHIP 343 366 CLRLCD 634 PT= 11 344 367 112 C=0 WPT 345 370 334 PT= 10 346 371 220 LC 2 347 372 1234 PT= 7 348 373 220 LC 2 349 374 134 PT= 4 350 375 220 LC 2 351 376 1434 PT= 1 352 377 220 LC 2 353 400 450 SLRABC 354 401 450 SLRABC 355 402 450 SLRABC 356 403 1740 RTN * * NXTBYT - GET NEXT BYTE IN RAM OR ROM * 360 ENTRY NBYTA0 361 404 NBYTA0 1 GOSUB ENCP00 361 405 0 362 ENTRY NBYTAB 363 406 NBYTAB 156 AB EX 364 407 NXTBYT 34 PT= 3 365 410 314 ?S10=1 ROM MEMORY ? 366 411 1 GOLNC NXBYTA NO 366 412 2 367 413 NXBYTO 556 A=A+1 368 LEGAL 369 414 1 GOLONG GTBYTO 369 415 2 * * APPEND - APPEND A CHAR TO ALPHA REG * CHAR IN G * ASSUMES CHIP 0 ENABLED. USES A,C. 1 SUB LEVEL * TWO ENTRIES : * 1. APPEND : WILL GIVE A WARNING IF AREG FULL AND AUDIO ENABLED * 2. APNDNW : NO WARNING EVEN IF AREG FULL * 378 416 APPEND 1070 C=REGN 8 CHECK IF AREG. ALMOST FULL ? 379 417 1434 PT= 1 380 420 1074 RCR 2 CHECK SECOND LAST CHAR 381 421 1352 ? C#0 WPT STILL EMPTY 382 422 1 GSUBC TONE7X NO, GIVE A WARNING 382 423 1 383 424 APNDNW 1434 PT= 1 384 425 1070 C=REGN 8 385 426 1574 RCR 12 386 427 416 A=C 387 430 770 C=REGN 7 388 431 1574 RCR 12 389 432 412 A=C WPT 390 433 256 AC EX W 391 434 1050 REGN=C 8 392 435 670 C=REGN 6 393 436 1574 RCR 12 394 437 412 A=C WPT 395 440 256 AC EX W 396 441 750 REGN=C 7 397 442 570 C=REGN 5 398 443 1574 RCR 12 399 444 412 A=C WPT 400 445 256 AC EX W 401 446 650 REGN=C 6 402 447 256 AC EX W 403 450 1634 PT= 0 404 451 230 C=G 405 452 550 REGN=C 5 406 453 1740 RTN * * DATA ENTRY - WHEN PARSE DETECTS A DATAENTRY FC, IT PUTS THE FC * IN C[1:0] AND BRANCHES TO HERE. * 411 454 DATENT 346 BC EX X 412 455 1 GOSUB OFSHFT RESET SHIFT 412 456 0 413 457 346 BC EX X 414 460 126 C=0 XS 415 461 406 A=C X COPY FC TO A.X 416 462 1634 PT= 0 417 463 130 G=C COPY FC TO REG.G TOO 418 464 1670 C=REGN 14 419 465 574 RCR 6 420 466 1730 CST EX 421 467 1404 S1= 0 RESET CATALOG FLAG 422 470 1730 CST EX 423 471 474 RCR 8 424 472 1650 REGN=C 14 425 473 766 C=C+C XS 426 474 766 C=C+C XS ALREADY IN DATAENTRY ? 427 475 457 GOC DAT200 ( 542) YES 428 476 1506 ? A#0 X BACK ARROW ? 429 477 207 GOC DAT110 ( 517) NO 430 500 214 ?S5=1 MSGFLAG SET ? 431 501 347 GOC DAT140 ( 535) YES 432 502 DAT102 14 ?S3=1 PROGRAM MODE ? 433 503 43 GONC DAT105 ( 507) NO 434 504 460 LDI 435 505 13 CON @13 DELETE 436 506 1740 RTN RETURN TO PARSE 437 507 DAT105 1214 ?S7=1 ALPHA MODE ? 438 510 47 GOC DAT106 ( 514) YES 439 511 460 LDI 440 512 167 CON2 7 7 CLX 441 513 1740 RTN RETURN TO PARSE 442 514 DAT106 460 LDI 443 515 207 CON2 8 7 CLA 444 516 1740 RTN 445 517 DAT110 460 LDI 446 520 34 CON2 1 12 LOAD CHS 447 521 1546 ? A#C X IS IT A CHS ? 448 522 47 GOC DAT120 ( 526) NO 449 523 460 LDI 450 524 124 CON2 5 4 CHS FC 451 525 1740 RTN RETURN TO PARSE 452 526 DAT120 1 GOSUB STFLGS SET MSGFLG & DATAENTRY FLAG 452 527 0 453 STFLGS LEAVES SS ONE-HALF UP 454 530 14 ?S3=1 ALPHA MODE? 455 531 1 GOLNC DIGST* INITIALIZE DIGIT ENTRY 455 532 2 456 533 1 GOLONG APHST* INITIALIZE ALPHA ENTRY 456 534 2 457 535 DAT140 204 S5= 0 CLEAR MSGFLAG 458 536 1670 C=REGN 14 459 537 1630 C=ST 460 540 1650 REGN=C 14 461 541 453 GOTO DAT220 ( 606) 462 542 DAT200 210 S5= 1 SET MSGFLAG 463 543 1670 C=REGN 14 464 544 1630 C=ST 465 545 1650 REGN=C 14 466 546 14 ?S3=1 PROGMODE ? 467 547 647 GOC DAT300 ( 633) YES 468 550 1214 ?S7=1 ALPHA MODE ? 469 551 253 GONC DAT235 ( 576) NO 470 552 DAT230 460 LDI 471 553 177 CON 127 472 554 406 A=C X 473 555 1634 PT= 0 474 556 230 C=G LOAD THE FC 475 557 1346 ? C#0 X IS THIS A BACK ARROW ? 476 560 1 GOLNC BAKAPH YES 476 561 2 477 562 1546 ? A#C X IS THIS A LAZY "T" ? 478 563 257 GOC DAT240 ( 610) NO 479 564 1 GOSUB BLINK BLINK AND IGNORE IT 479 565 0 480 566 203 GOTO DAT220 ( 606) 481 567 DAT231 1670 C=REGN 14 SET NUMERIC DATA ENTRY FLAG 482 570 474 RCR 8 (FLAG 22) 483 571 1730 CST EX 484 572 1410 S1= 1 SET FLAG 22 485 573 1730 CST EX 486 574 574 RCR 6 487 575 1650 REGN=C 14 488 576 DAT235 1 GOSUB DGENS8 TELL DIGENT NO CHS WHEN X=0 488 577 0 489 600 1 GOSUB NOREG9 489 601 0 490 602 1 GOSUB RG9LCD 490 603 0 491 604 1 GOSUB RFDS55 491 605 0 492 606 DAT220 1 GOLONG NFRKB 492 607 2 493 610 DAT240 1 GOSUB APPEND APPEND TO ALPHA REG. 493 611 0 494 612 1170 C=REGN 9 495 613 1376 ? C#0 S LCD FULL ? 496 614 67 GOC DAT245 ( 622) NOT YET 497 615 376 BC EX S 498 616 1 GOSUB ENLCD 498 617 0 499 620 1670 FRSABC 500 621 33 GOTO DAT260 ( 624) 501 622 DAT245 1 GOSUB ROLBAK 501 623 0 502 624 DAT260 106 C=0 X 503 625 230 C=G 504 626 1 GOSUB ASCLCD SEND IT TO LCD 504 627 0 505 630 DAT280 1 GOSUB OPROMT OUTPUT THE PROMPT 505 631 0 506 632 1543 GOTO DAT220 ( 606) 507 633 DAT300 1214 ?S7=1 ALPHA MODE ? 508 634 1 GOLC DAT500 YES 508 635 3 * * DIGIT ENTRY IN PRGM MODE * 512 636 1 GOSUB GETPC 512 637 0 513 640 1 GOSUB DELLIN 513 641 0 514 642 DAT320 116 C=0 515 643 1160 DADD=C ENABLE CHIP 0 516 644 1 GOSUB DGENS8 TELL DIGENT NO CHS WHEN X=0 516 645 0 517 646 1 GOSUB GETPC 517 647 0 518 650 36 A=0 S INITIALIZE CT 519 651 216 B=A 520 652 1 GOSUB NXBYTA 520 653 0 521 654 1434 PT= 1 522 655 1352 ? C#0 WPT IS FIRST BYTE A NULL ? 523 656 53 GONC DAT322 ( 663) YES 524 657 156 AB EX W OTHERWISE INSERT A NULL FIRST 525 660 1 GOSUB INBYT0 525 661 0 526 662 36 A=0 S 527 663 DAT322 106 C=0 X 528 664 1160 DADD=C ENABLE CHIP 0 529 665 1014 ?S2=1 MANTISSA NEGATIVE ? 530 666 33 GONC DAT325 ( 671) NO 531 667 1 GOSUB INBCHS INSERT A CHS FIRST 531 670 0 532 671 DAT325 340 SEL Q 533 672 1534 PT= 12 534 673 240 SEL P 535 674 1170 C=REGN 9 LOAD D.P. POS COUNTER IN REG.9[13] 536 675 1240 SETDEC 537 676 1376 ? C#0 S 538 677 173 GONC DAT333 ( 716) 539 700 1236 C=-C S TENTH COMPLEMENT 540 701 1140 SETHEX 541 702 376 CB EX S SAVE THE D.P. POS IN REG.B 542 703 DAT330 336 C=B S C.S _ D.P. POSITION 543 704 1176 C=C-1 S OUTPUT D.P. NOW ? 544 705 133 GONC DAT335 ( 720) NOT YET 545 706 1614 ?S0=1 D.P. HIT ? 546 707 113 GONC DAT335 ( 720) NO 547 710 376 CB EX S 548 711 460 LDI 549 712 32 CON2 1 10 550 713 1 GOSUB INBYTJ INSERT A D.P. TO MEM 550 714 0 551 715 1663 GOTO DAT330 ( 703) 552 716 DAT333 1176 C=C-1 S 553 717 1140 SETHEX 554 720 DAT335 376 BC EX S 555 721 340 SEL Q 556 722 1324 ? PT= 13 FINISHED DIGIT 0 ? 557 723 527 GOC DAT380 ( 775) YES, ALL DONE 558 724 1170 C=REGN 9 559 725 1042 C=C+1 PT LAST DIGIT IN MANTISSA ? 560 726 257 GOC DAT350 ( 753) YES 561 727 1024 ? PT= 2 END OF MANTISSA ? 562 730 127 GOC DAT345 ( 742) YES 563 731 1142 C=C-1 PT RESTORE THE DIGIT 564 732 1734 INC PT MOVE THE DIGIT TO G 565 733 120 LC 1 566 734 130 G=C 567 735 1724 DEC PT POINT TO NEXT DIGIT 568 736 240 SEL P 569 737 1 GOSUB INBYT INSERT THE DIGIT 569 740 0 570 741 1423 GOTO DAT330 ( 703) 571 742 DAT345 1414 ?S1=1 EEX HIT ? 572 743 167 GOC DAT370 ( 761) YES 573 744 1614 ?S0=1 D.P. HIT ? 574 745 303 GONC DAT380 ( 775) NO, NO PROMPT 575 746 1176 C=C-1 S D.P. AT DIGIT 3 ? 576 747 267 GOC DAT380 ( 775) YES, NO PROMPT 577 750 1176 C=C-1 S D.P. AT DIGIT 4 ? 578 751 247 GOC DAT380 ( 775) YES 579 752 303 GOTO DAT390 (1002) PROMPT 580 753 DAT350 1424 ? PT= 1 END OF EXP ? 581 754 267 GOC DAT390 (1002) YES 582 755 1624 ? PT= 0 END OF EXP ? 583 756 247 GOC DAT390 (1002) YES 584 757 DAT360 1414 ?S1=1 EEX HIT ? 585 760 223 GONC DAT390 (1002) NO, WE ARE DONE 586 761 DAT370 1434 PT= 1 587 762 240 SEL P 588 763 460 LDI 589 764 33 CON2 1 11 590 765 1 GOSUB INBYTJ INSERT AN EEX 590 766 0 591 767 1170 C=REGN 9 592 770 1366 ? C#0 XS EXP NEGATIVE ? 593 771 1123 GONC DAT330 ( 703) NO 594 772 1 GOSUB INBCHS INSERT A CHS 594 773 0 595 774 1073 GOTO DAT330 ( 703) 596 775 DAT380 240 SEL P 597 776 1 GOSUB INBYT0 597 777 0 598 1000 DAT385 404 S8= 0 NO PROMPT 599 1001 53 GOTO DAT410 (1006) 600 1002 DAT390 240 SEL P 601 1003 1 GOSUB INBYT0 INSERT A NULL AT TAIL 601 1004 0 602 1005 DAT400 410 S8= 1 SAY PROMPT 603 1006 DAT410 1 GOSUB DFILLF 603 1007 0 604 1010 DAT415 1 GOLONG NFRKB 604 1011 2 605 1012 INBCHS 460 LDI 606 1013 34 CON2 1 12 LOAD A CHS 607 1014 INBYTJ 1634 PT= 0 608 1015 130 G=C 609 1016 1 GOLONG INBYT 609 1017 2 * * ALPHA ENTRY IN PGM MODE * 613 1020 DAT500 460 LDI 614 1021 177 CON 127 615 1022 1546 ? A#C X IS IT A LAZY "T" ? 616 1023 1623 GONC DAT500 (1005) YES, IGNORE IT 617 1024 1170 C=REGN 9 618 1025 1506 ? A#0 X IS IT A BACK ARROW ? 619 1026 227 GOC DAT510 (1050) NO 620 1027 1176 C=C-1 S STRING LENGTH - 1 621 1030 1376 ? C#0 S ZERO LENGTH NOW ? 622 1031 57 GOC DAT505 (1036) NO 623 1032 1 GOSUB DATOFF RESET DATAENTRY FLAG 623 1033 0 624 1034 1 GOLONG XDELET 624 1035 2 625 1036 DAT505 256 AC EX W 626 1037 1 GOSUB PTBYTA ZERO LAST CHAR 626 1040 0 627 1041 1 GOSUB DECADA POINT BACK ONE CHAR 627 1042 0 628 1043 DAT507 106 C=0 X 629 1044 1160 DADD=C ENABLE CHIP 0 630 1045 256 AC EX W 631 1046 1150 REGN=C 9 632 1047 143 GOTO DAT520 (1063) 633 1050 DAT510 1076 C=C+1 S STRING LENGTH + 1 634 1051 43 GONC DAT515 (1055) STRING LENGTH <= 15 635 1052 1 GOSUB BLINK STRING LENGTH > 15 635 1053 0 636 1054 1343 GOTO DAT415 (1010) IGNORE THIS CHAR 637 1055 DAT515 256 AC EX W 638 1056 1 GOSUB INBYT INSERT THIS CHAR 638 1057 0 639 1060 676 A=A-1 S 640 1061 0 NOP 641 1062 1613 GOTO DAT507 (1043) 642 1063 DAT520 436 A=C S A.S _ STRING LENGTH 643 1064 1 GOSUB GETPC 643 1065 0 644 1066 1 GOSUB INCADA POINT TO 1ST BYTE OF TEXT 644 1067 0 645 1070 276 AC EX S C.S = STRING LENGTH 646 1071 436 A=C S SAVE THE LENGTH IN A.S 647 1072 1374 RCR 13 648 1073 1434 PT= 1 649 1074 1720 LC 15 C[1:0] _ FX 650 1075 1 GOSUB PTBYTA UPDATE STRING LENGTH 650 1076 0 651 1077 576 A=A+1 S LENGTH = 15 ? 652 1100 1007 GOC DAT385 (1000) YES, NO PROMPT 653 1101 1043 GOTO DAT400 (1005) 654 1102 ROLBAK 1170 C=REGN 9 LOAD LCD COUNTER 655 1103 436 A=C S A[13] _ LCD COUNTER 656 1104 236 B=A S 657 1105 1 GOSUB ENLCD ENABLE LCD CHIP 657 1106 0 658 1107 ROBK10 1536 ? A#0 S 659 1110 1640 RTN NC 660 1111 676 A=A-1 S 661 1112 1670 FRSABC 662 1113 1743 GOTO ROBK10 (1107) * * OPROMT - OUTPUT A PROMPT CHAR AND LEFT-JUSTIFY DISPLAY AND * UPDATE LCD COUNTER. * THE LCD COUNTER IS IN B[13] UPON ENTRY. IT WILL BE UPDATED * AND STORED TO REG.9[13] ON RETURN. * THE COUNTER IS SET TO 12. EVERY TIME A CHAR SHIFTS FROM RIGHT * END TO DISPLAY THE COUNTER IS DECREMENTED BY ONE. * ASSUMES LCD ENABLED. RETURNS WITH CHIP 0 ENABLED. * USES A[13], B[13], C[13], C[2:0], N, 1 SUB LEVEL. * 673 1114 OPROMT 460 LDI 674 1115 37 CON @37 675 1116 1750 SLSABC 676 1117 460 LDI 677 1120 40 CON @40 678 1121 336 C=B S 679 1122 1176 C=C-1 S LCD FULL ? 680 1123 157 GOC OPMT20 (1140) YES 681 1124 436 A=C S 682 1125 1076 C=C+1 S RESTORE LCD COUNTER 683 1126 OPMT10 1536 ? A#0 S STRING AT LEFT END ? 684 1127 43 GONC STOLCC (1133) YES 685 1130 1750 SLSABC 686 1131 676 A=A-1 S 687 1132 1743 GONC OPMT10 (1126) 688 1133 STOLCC 106 C=0 X 689 1134 1760 PFAD=C DISABLE LCD CHIP 690 1135 1160 DADD=C ENABLE SLEEPER CHIP 691 1136 1150 REGN=C 9 692 1137 1740 RTN 693 1140 OPMT20 136 C=0 S 694 1141 1723 GOTO STOLCC (1133) * * APHST* - INITIALIZE ALPHA ENTRY * G HAS THE CHAR. * CALLED BY DATAENTRY AND RETURNS TO DATAENTRY * 700 1142 APHST* 1670 C=REGN 14 701 1143 1530 ST=C LOAD SET # 702 1144 14 ?S3=1 PROGRAM MODE ? 703 1145 467 GOC APHST4 (1213) YES 704 1146 474 RCR 8 705 1147 1730 CST EX 706 1150 1610 S0= 1 SET FLAG 23 707 1151 1730 CST EX 708 1152 574 RCR 6 709 1153 1650 REGN=C 14 710 1154 106 C=0 X 711 1155 1634 PT= 0 712 1156 230 C=G LOAD THE CHAR 713 1157 406 A=C X 714 1160 460 LDI 715 1161 177 CON 127 716 1162 1546 ? A#C X IS THIS A LAZY "T" ? 717 1163 177 GOC APHST3 (1202) NO, CLEAR ALPHA REG. 718 1164 570 C=REGN 5 719 1165 1434 PT= 1 720 1166 1352 ? C#0 WPT ALPHA REG. EMPTY ? 721 1167 77 GOC APHST1 (1176) NO 722 1170 1334 PT= 13 723 1171 1420 LC 12 SET LCD COUNTER 724 1172 376 BC EX S 725 1173 1 GOSUB ENLCD 725 1174 0 726 1175 33 GOTO APHST2 (1200) 727 1176 APHST1 1 GOSUB ROLBAK 727 1177 0 728 1200 APHST2 1 GOLONG DAT280 728 1201 2 729 1202 APHST3 1 GOSUB INTARG 729 1203 0 730 1204 1334 PT= 13 731 1205 1420 LC 12 732 1206 376 BC EX S 733 1207 1 GOSUB CLLCDE 733 1210 0 734 1211 1 GOLONG DAT260 734 1212 2 735 1213 APHST4 1 GOSUB INSSUB INCREMENT LINE # 735 1214 0 736 1215 1634 PT= 0 737 1216 230 C=G 738 1217 160 N=C SAVE THE CHAR IN N TEMP. 739 1220 1 GOSUB GETPC LOAD THE PGM COUNTER 739 1221 0 740 1222 36 A=0 S 741 1223 460 LDI 742 1224 361 CON2 15 1 F1 - ONE-CHAR TEXT STRING 743 1225 1634 PT= 0 744 1226 130 G=C 745 1227 1 GOSUB INBYT 745 1230 0 746 1231 260 C=N LOAD THE CHAR 747 1232 1634 PT= 0 748 1233 130 G=C 749 1234 1 GOSUB INBYT 749 1235 0 750 1236 256 AC EX W 751 1237 1176 C=C-1 S 752 1240 1150 REGN=C 9 SAVE WORKING PTR IN REG.9 753 1241 1 GOLONG DAT400 EXIT FROM ALPHA ENTRY 753 1242 2 * * STBT10 - MOVE SOME STATUS BITS TO SCRATCH AREA (REG.8) * DIGIT(0) - 0 : D.P.HIT * 1 : EEX HIT * 2 : CHS HIT * 3 : MANTISSA NONZERO FLAG * DIGIT(1) - 4 : DIGIT GROUPING FLAG * 5 : DECIMAL POINT FLAG * 6 : END * 7 : FIX * DIGIT(2) - # OF DIGITS * 766 1243 STBT10 116 C=0 W 767 1244 1160 DADD=C 768 1245 534 PT= 6 769 1246 1420 LC 12 770 1247 134 PT= 4 771 1250 1720 LC 15 772 1251 1420 LC 12 773 1252 416 A=C W A _ 0000000C0FC000 774 1253 1670 C=REGN 14 775 1254 1660 C=C.A 776 1255 1074 RCR 2 777 1256 406 A=C X 778 1257 772 C=C+C M MOVE NUM SEPARATOR & COMMA 779 1260 772 C=C+C M TO LOWER TWO BITS IN A DIGIT 780 1261 174 RCR 4 781 1262 506 A=A+C X 782 1263 1070 C=REGN 8 783 1264 674 RCR 11 784 1265 246 C=A X 784 1266 406 785 1267 1530 ST=C 786 1270 74 RCR 3 787 1271 1050 REGN=C 8 788 1272 1740 RTN * * DECMPL - DECOMPILE * * CALLING SEQUENCE : * GOSUB DECMPL * ASSUMES NOTHING. USES A,B,C,N, ST 0-9. 3 SUB LEVELS * RETURNS WITH CHIP 0 ENABLED AND LOAD STATUS SET 0 * AND R14 IN C (PACH12 IN CN0 DEPENDS ON R14 IN C ON RTN) * * PACK AND DECOMPILE SHARE COMMON TERMINATION LOGIC * PACK TERMINATES BY GOING EITHER TO DCPL00 OR TO DCPLRT. * SINCE PACK CAN EITHER RETURN TO THE CALLING PROGRAM OR EXIT * VIA ERROR, STATUS BIT S9 IS USED TO CONTROL WHAT TYPE OF * TERMINATION IS DONE. S9 IS CLEARED AT THE DECMPL ENTRY * POINT, SO DECOMPILE ALWAYS RETURNS. PACK SETS OR RESETS * S9 AS NECESSARY BEFORE IT COMES TO THE DCPL00 OR DCPLRT ENTRIES. * * S8 AND S3 ARE USED INSIDE DECOMPILE. S8 IS USED TO REMEMBER * THE STATE OF THE DECOMPILE BIT IN ONE END WHILE TRAVELING UP * THE LABEL CHAIN TO FIND THE NEXT PREVIOUS END. S3 IS USED TO * REMEMBER WHETHER ANY PROGRAM HAS BEEN DECOMPILED. IF NO * PROGRAM HAS BEEN DECOMPILED, THEN DECOMPILE SKIPS AROUND * THE LOGIC TO ZERO OUT THE SUBROUTINE STACK. * 813 1273 DCPL17 1346 ? C#0 X IS THIS A CHAIN END ? 814 1274 427 GOC DCPL15 (1336) NO 815 1275 DCPL20 116 C=0 REMEMBER WE ARE AT 1ST PGM 816 1276 160 N=C 817 1277 1 GOSUB FSTIN GET REG0 817 1300 0 818 1301 463 GOTO DCPL24 (1347) * 820 1302 DECMPL 1104 S9= 0 821 ENTRY DCPL00 822 1303 DCPL00 1 GOSUB GTFEND LOAD CHAIN HEAD 822 1304 0 823 1305 252 AC EX WPT 824 1306 160 N=C SAVE .END. ADDR IN N 825 1307 4 S3= 0 REM NO PGM DECOMPILED YET 826 DCPL05 NEXT .END. ADDR IN C[3:0] 827 1310 412 A=C WPT LOAD END ADDR FROM C 828 1311 1 GOSUB INCAD2 POINT TO 3RD BYTE OF END 828 1312 0 829 1313 1 GOSUB GTBYTA GET 3RD BYTE OF END 829 1314 0 830 1315 1730 CST EX CHECK IF DECMPL BIT SET 831 1316 1414 ?S1=1 DECMPL BIT SET ? 832 1317 47 GOC DCPL07 (1323) YES 833 1320 404 S8= 0 834 1321 1730 CST EX 835 1322 63 GOTO DCPL11 (1330) 836 1323 DCPL07 410 S8= 1 SET S8 REMEMBER IT 837 1324 1404 S1= 0 CLEAR DECMPL BIT 838 1325 1730 CST EX 839 1326 1 GOSUB PTBYTA PUT THE BYTE BACK 839 1327 0 840 1330 DCPL11 260 C=N 841 1331 416 A=C 842 1332 1 GOSUB GTLINK 842 1333 0 843 1334 1346 ? C#0 X CHAIN END ? 844 1335 1403 GONC DCPL20 (1275) YES * MOVES UP SEARCHING FOR END OR FIRST ALBL IN MEM 846 1336 DCPL15 1 GOSUB UPLINK MOVES UP ONE LINK 846 1337 0 847 1340 1076 C=C+1 S IS THIS BYTE AN END ? 848 1341 1327 GOC DCPL17 (1273) NO, IT IS AN ALBL 849 1342 252 C=A WPT 849 1343 412 850 1344 160 N=C SAVE END ADDR IN N 851 1345 1 GOSUB INCAD2 POINT TO 3RD BYTE OF END 851 1346 0 852 1347 DCPL24 414 ?S8=1 NEED TO DECMPL THIS PGM ? 853 1350 353 GONC DCPL70 (1405) NO 854 1351 10 S3= 1 REM AT LEAST DECMPL 1 PGM 855 1352 1 GOSUB GTBYTA 855 1353 0 856 1354 1574 RCR 12 857 1355 DCPL25 642 A=A-1 PT NEXT BYTE IN SAME REG. ? 858 1356 113 GONC DCPL30 (1367) YES 859 1357 252 AC EX WPT NEXT BYTE IN NEXT REG. 860 1360 1142 C=C-1 PT 861 1361 1142 C=C-1 PT 862 1362 1146 C=C-1 X POINT TO NEXT REG. 863 1363 1160 DADD=C 864 1364 412 A=C WPT 865 1365 70 C=DATA LOAD NEXT REG. 866 1366 1574 RCR 12 867 1367 DCPL30 642 A=A-1 PT POINT TO NEXT BYTE 868 1370 1574 RCR 12 C[3:2] _ NEXT BYTE 869 1371 1202 C=-C PT 16 COMPLEMENT 870 1372 742 C=C+C PT ONE-BYTE ? 871 1373 1627 GOC DCPL25 (1355) YES, GO ON TO NEXT LINE 872 1374 742 C=C+C PT THREE-BYTE LINE ? 873 1375 357 GOC DCPL40 (1432) NO, IT'S TWO BYTES 874 1376 742 C=C+C PT ROW 15 ? 875 1377 567 GOC DCPL45 (1455) NO, IT'S ROW 13 OR 14 876 1400 742 C=C+C PT TEST ROW 0 OR ROW 15 877 1401 1543 GONC DCPL25 (1355) ROW 0 IF NO CARRY * TEXT ROW, LET THE "NXLIN" ROUTINE HANDLE IT 879 1402 DCPL35 1 GOSUB NXLTX 879 1403 0 880 1404 1513 GOTO DCPL25 (1355) GO ON TO NEXT LINE * 882 1405 DCPL70 260 C=N GET STARTING ADDR 883 1406 1346 ? C#0 X JUST FINISHING 1ST PGM ? 884 1407 1017 GOC DCPL05 (1310) NO, KEEP GOING 885 1410 1160 DADD=C 886 1411 14 ?S3=1 HAS ANY PGM BEEN DECMPL ? 887 1412 113 GONC DCPL60 (1423) NO, DON'T CLEAR SUB STACK 888 ENTRY DCPLRT 889 1413 DCPLRT 1 GOSUB GETPC CLEAR THE SUBROUTINE STACK 889 1414 0 890 ENTRY DCRT10 891 1415 DCRT10 116 C=0 892 1416 1160 DADD=C 893 1417 1350 REGN=C 11 894 1420 1450 REGN=C 12 895 1421 1 GOSUB PUTPC 895 1422 0 896 1423 DCPL60 1670 C=REGN 14 897 1424 1530 ST=C 898 1425 1114 ?S9=1 899 1426 1640 RTN NC 900 ENTRY ERRTA 901 1427 ERRTA 1 GOSUB ERROR 901 1430 0 902 1431 0 XDEF MSGTA * * TWO-BYTE ROWS 905 1432 DCPL40 742 C=C+C PT ROW 9 OR 10 ? 906 1433 177 GOC DCPL50 (1452) YES, SIMPLY SKIP 1 BYTE 907 1434 1342 ? C#0 PT ROW 12 ? 908 1435 427 GOC DCPL55 (1477) NO, IT'S ROW 11 909 1436 1066 C=C+1 XS IS IT A LBL.NN ? 910 1437 137 GOC DCPL50 (1452) YES, SKIP 1 BYTE 911 1440 1066 C=C+1 XS IS IT AN X<>.NN ? 912 1441 117 GOC DCPL50 (1452) YES * ALBL OR END HERE 914 1442 DCPL42 1 GOSUB INCADA SKIP OVER THE LINK 914 1443 0 915 1444 1 GOSUB NXBYTA LOAD THE THIRD BYTE 915 1445 0 916 1446 1574 RCR 12 MOVE IT TO C[3:2] 917 1447 1042 C=C+1 PT IS IT AN ALBL ? 918 1450 1327 GOC DCPL35 (1402) YES, TEXT STRING FOLLOWS * 920 1451 1343 GOTO DCPL70 (1405) GOTO TAKE CARE OF END 921 1452 DCPL50 1 GOSUB NXL3B2 921 1453 0 922 1454 DCPL51 1013 GOTO DCPL25 (1355) * GTO.NN AND XEQ.NN HERE (CLEAR 3-DIGIT LINK) 924 1455 DCPL45 1 GOSUB GTBYTA GET THE FIRST BYTE AGAIN 924 1456 0 925 1457 1574 RCR 12 MOVE IT TO C[3:2] 926 1460 126 C=0 XS ZERO FIRST DIGIT OF LINK 927 1461 1074 RCR 2 928 1462 1 GOSUB PTBYTA PUT IT BACK TO MEM 928 1463 0 929 1464 1 GOSUB NXBYTA GET NEXT BYTE 929 1465 0 930 1466 1434 PT= 1 931 1467 112 C=0 WPT ZERO LAST TWO DIGITS OF LINK 932 1470 356 BC EX W SAVE THE REG. IN B 933 1471 316 C=B W 934 1472 1 GOSUB PTBYTA PUT BYTE 934 1473 0 935 1474 316 C=B 936 1475 1574 RCR 12 937 1476 1543 GOTO DCPL50 (1452) INCREMENT 1 BYTE * GTO.0-14 HERE (1-BYTE LINK) 939 1477 DCPL55 1 GOSUB NXBYTA GET THE LINK BYTE 940 1500 0 940 1501 1434 PT= 1 941 1502 112 C=0 WPT 942 1503 356 BC EX W SAVE THE REG. IN B 943 1504 316 C=B W 944 1505 1 GOSUB PTBYTA 944 1506 0 945 1507 316 C=B W 946 1510 1574 RCR 12 947 1511 1433 GOTO DCPL51 (1454) * * XECROM - DISPLAY ROM FUNCTION * CALLED FROM DFILLF WHEN IT HAS AN EXCROM FUNCTION. * CALLED WITH A.X HAVING THE 1ST BYTE OF A 2-BYTE FC, PT=1. * 953 1512 XECROM 246 AC EX X 954 1513 1374 RCR 13 955 1514 130 G=C SAVE 1ST BYTE IN G 956 1515 156 AB EX W 957 1516 1 GOSUB NXTBYT GET THE SECOND BYTE 957 1517 0 958 1520 1034 PT= 2 959 1521 230 C=G PUT 2 BYTES TOGETHER IN C[3:0] 960 1522 1 GOSUB GTRMAD FIND IT IN THE ROM 960 1523 0 961 1524 303 GOTO XROMNF (1554) ROM NOT PLUGGED IN 962 1525 256 AC EX W 963 1526 674 RCR 11 C.M _ XADR 964 1527 1 GOSUB ENLCD 964 1530 0 965 1531 14 ?S3=1 XTYPE=0 ? 966 1532 163 GONC XROM10 (1550) YES, MICROCODE FUNCTION 967 1533 1072 C=C+1 M 968 1534 1072 C=C+1 M POINT TO THIRD BYTE OF ALBL 969 1535 1460 CXISA 970 1536 406 A=C X 971 1537 646 A=A-1 X 972 1540 74 RCR 3 C[3:0] _ 1ST BYTE ADDR 973 1541 1056 C=C+1 974 1542 356 BC EX W SAVE 1ST BYTE ADDR IN B 975 1543 1 GOSUB OUTROM SEND "XROM" TO LCD 975 1544 0 976 1545 404 S8= 0 CLEAR S8 FOR TXRW10 977 1546 1 GOLONG TXTROM DISPLAY TEXT STRING FROM ROM 977 1547 2 978 XROM10 979 1550 1 GOSUB PROMF2 979 1551 0 980 1552 XROMRT 1 GOLONG DF150 980 1553 2 * * ROM NOT PLUGGED IN, DISPLAY ROM ID & FC # * 984 1554 XROMNF 1 GOSUB ENLCD 984 1555 0 985 1556 1 GOSUB OUTROM SEND "XROM" TO LCD 985 1557 0 986 1560 316 C=B GET ROM ID 987 1561 74 RCR 3 988 1562 406 A=C X 989 1563 36 A=0 S 990 1564 1 GOSUB GENNUM 990 1565 0 991 1566 1670 FRSABC 992 1567 1434 PT= 1 993 1570 1720 LC 15 994 1571 1750 SLSABC 995 1572 146 AB EX X GET FUNCTION # 996 1573 36 A=0 S 997 1574 1 GOSUB GENNUM 997 1575 0 998 1576 1543 GOTO XROMRT (1552) 999 1000 1001 1002 ENTRY SRBMAP 1003 ENTRY TBITMP 1004 ENTRY TBITMA 1005 ENTRY XROM 1006 1007 1008 1009 * TBITMP - TEST BIT MAP *- TEST THE CORRECT BIT MAP (SHIFTED/UNSHIFTED) TO *- DETERMINE WHETHER A PARTICULAR KEY HAS BEEN *- ASSIGNED OR NOT *- IN: A[2:1]= LOGICAL KEYCODE (0:79 FORM) *- CHIP 0 SELECTED *- OUT: C=0 IMPLIES BIT NOT SET *- C#0 IMPLIES BIT SET *- M= BIT MAP *- CHIP 0 & APPROPRIATE REGISTER IS SELECTED *- USES: C[13:0], A[13:0], M[13:0] * * TBITMA ENTRY - SAME AS TBITMP EXCEPT KC IS IN A[1:0] AND IS * IN 1-80 FORM ON ENTRY 1024 1025 1026 1027 1577 TBITMA 646 A=A-1 X DECREMENT K.C. 1028 1600 1756 A SL A[2]_COL 1029 1601 TBITMP 1034 PT= 2 C[2]_4 1030 1602 420 LC 4 - 1031 1603 1604 S0= 0 S0_SHIFTSET 1032 1604 1020 LC 8 - 1033 1605 1434 PT= 1 - 1034 1606 1102 C=A-C PT - 1035 1607 37 GOC *+3 (1612) - 1036 1610 402 A=C PT - 1037 1611 1610 S0= 1 - 1038 1612 234 PT= 5 POSITION PTR AT COLUMN 1039 1613 33 GOTO *+3 (1616) - 1040 1614 1734 INC PT - 1041 1615 1734 INC PT - 1042 1616 666 A=A-1 XS - 1043 1617 1753 GONC *-3 (1614) - 1044 1620 1746 A SL X A[2]_ROW 1045 1621 1426 ? A