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