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