          IF MOP,IF PRE(RP),(RP %(RP))ELSE(RP DP)   
          WE COMERR,GOTO 9ERR   
          CE !  

          SETPARAM U,(EJ)   
          IF MOP OR PRE(EXIT),SETPARAM U,(EX)   
          IF STR(%A)=(),GOTO 9LP
          IF PRE(DATA) AND STR(%(DATA))=(),SETPARAM (DATA),()   
          IF PRE(LOAD) AND STR(%(LOAD))=(),GOTO 9NOLO   
          IF ABS(LOAD),GOTO 9COM
          LOAD %(LOAD)  
          GOTO 9RUN 
9COM
          # BCMX IS 18K, THIS GIVES 12K FOR STACK   
          MZ 40K
          IF PRE(PROG) AND STR(%(PROG))=(),SETPARAM (PROG),()   
#   
#            COMPILATION PHASE  
#   
9LP 
          IF ABS(BCMX), GO 9BCMX
          DP 0, COMPILER: %(BCMX)   
9BCMX     IF ABS(BCMX), SP X,(BCMX :LIB.PROGRAM BCMX)   
          LO %(BCMX)
          IF PRE(COMPTIME),(TI %(COMPTIME))ELSE(TI 5MINS)   
          ASSIGN *LP0,!(LIMIT10000) 

          IF ABS(OWNPD),(SP W,(OWNPD :LIB.STANDARDPD))  
          IF NOT STR(%(OWNPD))=(), AS *CR, %(OWNPD) 
          IF NOT STR(%(OWNPD))=(), (SP W,(1)) ELSE (SP W,(0))   
          IF ABS(PROG),(OL *TR0)ELSE(ASSIGN *TR0,%(PROG))   
          CE !(*DA,BUCK1,KWOR80)
          CE !(*DA,BUCK1,KWOR40)
          EN %W 
          IF NOT DEL(FI),GO 9GENERR 
#   
          IF ABS(SAVEOCODE) OR STR(%(SAVEOCODE))= (), GO TO 9ASS
          LO :LIB.PROGRAM OCOP  
          AS *TP0 ,%(SAVEOCODE)(LIMIT 100000)   
          TI 5MINS  
          EN 1  
          IF HALTED(BH), DP 0, OCODE COPIED O.K.
#   
9ASS      DP 0,OK AFTER COMPILATION 
          IF PRE(NOCGMX), GOTO 9GENQUIT 
#   
#            ASSEMBLY PHASE 
#   
          IF ABS(CGMX),GO 9CGMX 
          DP 0, CODEGEN: %(CGMX)
9CGMX     IF ABS(CGMX),SP X,(CGMX :LIB.PROGRAM CGMX)

          LO %(CGMX)
          IF PRE(TRACE),ON 16   
          IF PRE(TRACE),AS *CR,%(TRACE) 
          # 2, !, 1 -- READ OCODE FROM !1   
          ALTER 0,#00420461 
          ASSIGN *LP0,!2(APPEND)
          IF PRE(COMPTIME),(TI %(COMPTIME))ELSE(TI 5MINS)   
          EN 5  
          IF NOT DEL(FI), GO TO 9CNVERR 
          DP 0, OK AFTER CODE GENERATION
#   
          IF PRE(SAVESEMI) AND STR(%(SAVESEMI))>(), CY !,%(SAVESEMI)
          IF PRE(NOCONS),GOTO 9CNVQUIT  
#   
#            CONSOLIDATION PHASE
#   
          LO :LIB.PROGRAM XPCK  
          ASSIGN *LP0,!2(APPEND)
          ASSIGN *DA1,! 
#            HERES WHERE WE ADD IN ANY S/C FILES
          SP T,(2)  
9SEMI     IF ABS(SEMI), GO 9LIB 
          IF STR(%(SEMI)) = (), GO 9LIB 
          AS *DA%T,%(SEMI)  
          SP T,VALUE(%T+1)  
          SP (SEMI),()  
          GO 9SEMI  
#            AND ANY LIBRARIES  
9LIB      IF ABS(LIB), GO 9BASIC
          IF STR(%(LIB)) = (), GO 9BASIC
          AS *DA%T,%(LIB)   
          SP T,VALUE(%T+1)  
          SP (LIB),()   
          GO 9LIB   
#            ALSO CHECK ON BASIC LIBRARY
9BASIC    SP W,(:LIB.SUBGROUPSRB1)  
           IF PRE(BASICLIB),DP 0,BASICLIB: %(BASICLIB)  
          IF PRE(BASICLIB),SP W,(%(BASICLIB))   
          AS *DA%T,%W   
          CE !(*DA,BUCK1,KWOR49)
          ASSIGN *DA13,!(WRITE) 
          TI 5MINS  
          EN 5  
          ER !  
          ER !  
          ER !  
          IF NOT HAL(LD),GO 9CONERR 
          DP 0, OK AFTER CONSOLIDATION  
          IF PRE(SAVEBIN) AND STR(%(SAVEBIN))>(),SAVE %(SAVEBIN)
9BSV
         IF ABS(RUN),GO 9COMPZZ 
9RUN
          SETPARAM X,(2000) 
          IF PRE(LIMIT),SETPARAM X,(%(LIMIT))   
          SETPARAM W,(60)   
          IF PRE(TIME),SETPARAM W,(%(TIME)) 
          ASSIGN *LP0,!(APPEND,LIMIT %X)
          CREATE !  
          ASSIGN *LP1,!(LIMIT %X)   
          TIME %W   
          IF PRE(DATA),GO 9DATA 
          OL *CR0   
          OL *TR0   
          GO 9TASK  
#   
9DATA     ASSIGN *CR0,%(DATA)   
          ASSIGN *TR0,%(DATA)   
          GO TO 9TASK   
#   
7TASK     ER !  
8TASK     SETPARAM (*),()   
9TASK     IF ABS(*),GO 9ENT 
          SETPARAM W,(%(*))(1,3)
          SETPARAM T,(%(*))(4,35)   
          IF STR(%W)>(CR),GO 9BIP   
          IF STR(%W)>(TR),GO 9BIP   
          IF STR(%W)>(LP),GO 9BOP   
          IF STR(%W)>(TP),GO 9BOP   
          IF STR(%W)>(CP),GO 9BOP   
          DP 0,ERROR IN PERIPHERAL REQUEST  
          GOTO 8TASK
#   
9BIP      IF STR(%T)=(),OL *%W  
          IF NOT STR(%T)=(),ASSIGN *%W,%T   
          GOTO 8TASK
#   
9BOP      IF STR(%T)=(),GO 9BOP2
          IF STR(%T)=(!),GO 9BOP1   
          ASSIGN *%W,%T(LIMIT %X)   
          GO 8TASK  
#   
9BOP1     CREATE !  
          ASSIGN *%W,!(LIMIT %X)
          LF !,*LP  
          GO 7TASK  
#   
9BOP2     ONLINE *%W
          GO TO 8TASK   
#   
9ENT
          DP 0, OK ON ENTRY 
          TRACE FULLBUT,COMMANDS
          EN 1  
          IF FAIL, RM 29
          IF NOT HALTED(LP),GOTO 9FIN   
          AS *LP0,!1(APPEND)
          RM
9FIN      IF HALTED(BH),DP 0,EXECUTION TERMINATED O.K.  
          IF CORE,DELETE
          CY !,!1(APPEND)   
          ER !  
          GO TO 9COMPZZ 
#   
9GENERR   DP 0, ERROR IN COMPILATION
9GENQUIT  ER !  
          ER !  
          GO TO 9COMPZZ 
#   
9CNVERR   DP 0, ERROR IN CODE GENERATION
9CNVQUIT  ER !  
          ER !  
          GO TO 9COMPZZ 
#   
9CONERR   DP 0, ERROR IN CONSOLIDATION  
#   
9COMPZZ   IF CORE, DELETE   
          IF PRE(LIST),CY !,%(LIST) 
          IF ABS(NOLIST), LF !,*LP  
          ER !  
9FINN     IF PRES(RETAIN) AND STR(%(RETAIN))>(), EJ ,RETAIN(%(RETAIN))  
          IF MOP,RP FB,CM   
          %U
9ERR      DP 0,COMMAND ERROR POSSIBLE INVALID PARAMETER 
          GOTO 9COMPZZ  
9NOLO     DP 0,LOAD WITH NO FILE SPECIFIED  
          GOTO 9FINN
