QCMPL IDENT QCMPL QCMPL 1 TITLE RUN - TIME COMPILATION QCMPL 2 * FOR A LISTING OF THE SNODEF COMDECK, CALLED BELOW, SEE MAINLUP. QCMPL 3 LIST -L QCMPL 4 *CALL,SNODEF QCMPL 5 LIST L QCMPL 6 * ERROR QCMPL 7 EXT ERR29,ERR30,ERR31,ERR32,ERR35,ERR36,ERR37,ERR38,ERR39 QCMPL 8 * MAINLUP QCMPL 9 EXT ITYWD,NEXTMIC QCMPL 10 * STORMAN QCMPL 11 EXT PUSHSTK,RESERVE,MORFREE,GETSTAK,GRBCOLL,RESHB QCMPL 12 EXT TOFHBL QCMPL 13 * PROCS QCMPL 14 EXT SKIPTOP QCMPL 15 * COMPILR QCMPL 16 EXT PRIORJ,ST1 QCMPL 17 EXT PASS1,NEWUNIT,GETNEXT QCMPL 18 * QCMPL QCMPL 19 ENTRY QCMPL,CMPLQ QCMPL 20 TRACE IFNE TRCFLG,0 QCMPL 21 TITLE STANDARD PROCEDURE: TRC QCMPL 22 ENTRY QTRC,TRCQ QCMPL 23 * TRC( P1 ", P2! ) = P1 QCMPL 24 * QCMPL 25 * THE (SIDE-)EFFECT OF TRC() DEPENDS ON P1: IF P1 IS A NON-NULL STRINGQCMPL 26 * AN INTERRUPT IS SCHEDULED WHICH WILL TURN ON DEBUG-STYLE TRACE-WITH- QCMPL 27 * LIST WHEN STCOUNT=P2 (AN INTEGER, DEFAULT=0 OF COURSE); IF P1 IS THEQCMPL 28 * NULL STRING TRACING IS TURNED OFF; IF P1 IS AN INTEGER A REFSTOP IS QCMPL 29 * SET AT THIS ADDRESS, AND TRACE-WITH-NOLIST IS TURNED ON. QCMPL 30 QTRC SB5 X5-2 QCMPL 31 GT B5,B0,SKIPTOP . MORE THAN TWO PARAMETERS QCMPL 32 SX4 0 . TENTATIVE P2 VALUE QCMPL 33 ZR B5,QTRCP2 . P2 WAS PASSED EXPLICITLY QCMPL 34 QTRCP1 SA1 B6 . HEADER OF P1 QCMPL 35 AX1 55 . TYPE SHOULD BE STRING QCMPL 36 NZ X1,QTRCREF . OR INTEGER QCMPL 37 SA2 B6-1 . FETCH SVD QCMPL 38 AX2 18+18 . AND EXTRACT ITS QCMPL 39 SX2 X2 . CLENGTH FIELD QCMPL 40 ZR X2,QTRCOFF . P1=NULL MEANS TURN TRACE OFF QCMPL 41 * OTHERWISE SCHEDULE AN INTERRUPT TO TURN ON TRACE QCMPL 42 SA1 STATWD QCMPL 43 SX7 STATTRC QCMPL 44 BX7 X1+X7 QCMPL 45 SA7 A1 QCMPL 46 BX6 X4 QCMPL 47 SA6 INTRPT QCMPL 48 JP NEXTMIC . RETURN P1 QCMPL 49 * IF P2 IS AN INTEGER, SAVE ITS VALUE IN X4 AND DESTACK IT. QCMPL 50 QTRCP2 SA1 B6 QCMPL 51 AX1 55 QCMPL 52 SX1 X1-ITY QCMPL 53 NZ X1,ERR29 . WRONG PARAMETER TYPE FOR STD. PROC.QCMPL 54 SA4 B6-1 . FETCH VALUE QCMPL 55 SB6 B6-2 . POP STACK QCMPL 56 JP QTRCP1 . PROCEED QCMPL 57 * IF P1 IS AN INTEGER, USE IT AS THE ADDRESS FOR A REFSTOP. QCMPL 58 QTRCREF SX1 X1-ITY . RECALL X1 CONTAINS TYPE OF P1 QCMPL 59 NZ X1,ERR29 . WRONG TYPE QCMPL 60 SA2 B6-1 . FETCH VALUE QCMPL 61 MX6 24 QCMPL 62 LX6 60-6 . QCMPL 63 BX6 X6+X2 . = 6/0,24/77777777B,30/INTEGER QCMPL 64 SA6 QTRCREF1+1 QCMPL 65 QTRCREF1 TRACE REFSTOP,0,0 . = RJ =XCMREF. , DATA 0 QCMPL 66 TRACE . NOW TURN ON TRACE (BUT NOT LIST) QCMPL 67 JP NEXTMIC . RETURN P1 QCMPL 68 * TURN OFF TRACING. QCMPL 69 QTRCOFF TRACE NOTRACE QCMPL 70 JP NEXTMIC . RETURN P1 ,= THE NULL STRING) QCMPL 71 TRCQ BSS 0 QCMPL 72 TRACE ENDIF QCMPL 73 TITLE STANDARD PROCEDURE COMPILE QCMPL 74 QCMPL SB5 X5-1 . STANDARD PROCEDURE COMPILE QCMPL 75 LT B0,B5,SKIPTOP QCMPL 76 SA0 5 . PLAY IT SAFE QCMPL 77 RJ RESERVE QCMPL 78 SB6 B6-5 QCMPL 79 SA1 B6 QCMPL 80 AX1 55 . ERROR IF PARAMETER QCMPL 81 NZ X1,ERR29 . IS NOT A STRING QCMPL 82 SA2 ITYWD QCMPL 83 SA1 B6-1 . SVD OF STRING PARAMETER QCMPL 84 SX6 A5 . SAVE MICROINSTRUCTION COUNTER QCMPL 85 BX7 X2 . AS AN ITY ENTRY IN THE STACK QCMPL 86 SA6 B6-1 QCMPL 87 SA7 B6 QCMPL 88 SX7 X1 QCMPL 89 SA7 FRSTWRD QCMPL 90 SA7 NXTWRD QCMPL 91 SX6 GETNEXT . SET COMPILER INPUT MEDIUM QCMPL 92 SA6 P0STWD . TO STRING QCMPL 93 SA3 MAXSTAK QCMPL 94 SB3 X3+1 . B3=-MAXSTAK-1-B6=-(MAXSTAK+1+B6) QCMPL 95 SB3 B3+B6 QCMPL 96 SB3 B0-B3 QCMPL 97 * PUSH STACK TOWARDS HIGH CORE AS FAR AS POSSIBLE, TO CREATE QCMPL 98 * COMPILER STORAGE (CS): QCMPL 99 RJ PUSHSTK QCMPL 100 SA2 MINSTAK QCMPL 101 SA1 MINHS QCMPL 102 SA1 X1+2 QCMPL 103 BX6 X2 QCMPL 104 LX1 5 QCMPL 105 SA4 MAXHS QCMPL 106 SA6 PRGBASE QCMPL 107 PL X1,QCMPL1 . BRANCH UNLESS LAST HS BLOCK IS FREEQCMPL 108 MX0 1 QCMPL 109 BX7 X1-X0 QCMPL 110 LX7 60-5 QCMPL 111 SA7 A1 QCMPL 112 SA3 X4-1 . REMOVE FREE BLOCK FROM HS QCMPL 113 AX3 18 . (ATTACH IT TO CS) QCMPL 114 SB1 X3 QCMPL 115 SB1 -B1 QCMPL 116 SA1 X4+B1 . HEADER OF FREE BLOCK QCMPL 117 SX7 A1 QCMPL 118 SA7 A4 QCMPL 119 SX4 A1 QCMPL 120 RJ TOFHBL . REMOVE BLOCK WITH HEADER IN X1 FROMQCMPL 121 * FREE CHAIN QCMPL 122 QCMPL1 BX7 X4 QCMPL 123 SA7 MAXSTAT QCMPL 124 BX7 X7-X7 QCMPL 125 SB6 X6 QCMPL 126 SX6 B7 . SAVE B7 QCMPL 127 SA7 ARROWD . CLEAR ERROR FLAG QCMPL 128 SA7 TESTCND QCMPL 129 SA6 COMPB7 QCMPL 130 SB6 B0-B6 . INITIALIZE B6 OF COMPILER QCMPL 131 SA7 VARLINK . ZERO TO VARLINK QCMPL 132 SA7 LBLLINK . ZERO TO LBLLINK QCMPL 133 SX7 PRIORJ QCMPL 134 LX7 36 QCMPL 135 SA5 BGP3STK . PASS3 STACK POINTER QCMPL 136 SA0 BGP2STK . PASS 2 TACK POINTER QCMPL 137 SA7 A5 QCMPL 138 SB7 B0 . NO OPERAND TO OPSIT QCMPL 139 SB1 0 . INITIAL PASS 2 STATE QCMPL 140 JP PASS1 . START COMPILATION QCMPL 141 * QCMPL 142 CMPLQ BSS 0 QCMPL 143 * QCMPL 144 * QCMPL 145 END QCMPL 146