FT  
BCPLGO OWNPD,SAVEBINPROGRAM EDMP,LISTEDMPLIST,RUN   
OCODE(!1)   
SEND TO(!)  
BIN 
CHAIN(FIND#CGMX)
PROGRAM(EDMP)   
FULLLIST
TRACE   
SWITCH(2)   
INCLUDE(%BSYSTEM,%BTYROUTINE,%BTRACE,%BDEBUG,%BEDSFILES)
*   
////    START OF "NHEAD0"   


GLOBAL $(   
ENTRYUSED:2;  INIT.X.REGS:3;
SW.ON:4;  SW.OFF:5;  SW.TEST:6;  SW.INVTT:7;
TY.HALT:8;  TY.DISPLAY:9;  TY.DELETE:10;  TY.CHAINPROG:11;  
FP.ADD:12;  FP.SUB:13;  FP.MULT:14;  FP.DIV:15; 
FP.FLOAT:16;  FP.FIX:17;
GENERAL.GIVE:18;  CORE:19;  
RSCLOCK:20;  RDCLOCK:21;
RSOVERFLOW:22;  OVERFLOW:23;
EXECUTE:24;  SYSTEM.DATA.BLOCK:25;  
OVERLAY:26; 
INITIALIZEIOVEC:39;  INITIALIZEIO:40;   
CREATEOUTPUT:41;  FINDFILE:42;  CREATEFILE:43;  WRITECH:44; 
ENDWRITE:45;  ENDREAD:46;  READCH:47;  FINDINPUT:48;  EOSMOD:49;
$)  

MANIFEST $( 
ENDOFSTREAMCH=255;  ENDSTREAMCH=255;  BYTESPERWORD=3;   
BYTESIZE=8;  BYTEBITS=8;  BYTEMAX=255;  
$)  

GLOBAL $(   
OUTPUT:55;  MONITOR:56;  INPUT:57;  
WRITES:60;  WRITEC:61;  WRITEN:62;  NEWLINE:63;  WRITEPN:64;
PACKSTRING:66;  UNPACKSTRING:67;
REPORT:70;  REPORTCOUNT:71;  REPORTMAX:72;  
WRITED:75;  WRITEF:76;  WRITEO:77;  WRITEOCT:77;
REPORTGLOBALS:90;  TRACE:53;  PROGRAMMAP:92    $)   


////    END OF "NHEAD0" 




////    START OF "LIBB" 


LET PACKSTRING(V,S) BE  
   $( LET N = !V & #377 
         $( LET A,B,C = V!0,0,0 
            UNLESS N < 1 DO B := V!1
            UNLESS N < 2 DO C := V!2
            !S := A << 16 LOGOR B << 8 LOGOR C  
            S,V,N := S+1,V+3,N-3
         $) REPEATUNTIL N < 0   
   $)   

AND UNPACKSTRING(S,V) BE
   $( LET W = !S
      LET N = W >> 16   
      LET J = 16
      FOR I = 0 TO N DO 
         $( V!I := W >> J & #377
            TEST J = 0 THEN $( S,J := S+1,16; W := !S $)
                        OR       J := J - 8 
         $) 
   $)   

AND WRITES(S) BE
   $( LET W = !S
      LET N = W >> 16   
         $( IF N = 0 RETURN 
            WRITECH(OUTPUT, W >> 8) 
            IF N = 1 RETURN 
            WRITECH(OUTPUT, W)  
            IF N = 2 RETURN 
            S,N := S+1,N-3  
            W := !S 
            WRITECH(OUTPUT, W >> 16)
         $) REPEAT  
   $)   

AND WRITEC(CH) BE WRITECH(OUTPUT,CH)

AND WRITEN(N) BE TEST N < 0 THEN $( WRITEC('-');
                                    TEST -N < 0 THEN WRITES("8388608")  
                                                 OR  WRITEPN(-N)
                                 $) 
                             OR                      WRITEPN( N)

AND WRITEPN(N) BE $( IF N > 9 DO WRITEPN( N/10 )
                     WRITECH(OUTPUT, N REM 10 + '0' ) $)

AND WRITEO(N,W) BE  
      IF W > 0 DO   
         $( WRITEO( N >> 3 , W - 1 )
            WRITECH(OUTPUT, ( N & #7 ) + '0' )  
         $) 

AND WRITED(N,W) BE  
   $( LET V = VEC 8 
      LET C = 0 
      LET S = N < 0 
      LET M = S -> -N , N   
      IF M < 0 DO   
         $( FOR I = 9 TO W DO WRITECH(OUTPUT,' ')   
            WRITES("-8388608")  
            RETURN  
         $) 
      $( C := C + 1; V!C := M REM 10 + '0'; M := M/10 $) REPEATUNTIL M = 0  
      IF S DO $( C := C + 1; V!C := '-' $)  
      WHILE W > C DO $( WRITECH(OUTPUT,' '); W := W - 1 $)  
      $( WRITECH(OUTPUT,V!C); C := C - 1 $) REPEATUNTIL C = 0   
   $)   

AND WRITEF(FORMAT,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) BE   
   $( LET V = VEC 255   
      AND Q = @FORMAT   
      UNPACKSTRING (FORMAT, V)  
      FOR P = V+1 TO V+V!0 DO   
         $( LET K =!P   
            TEST K # '%' THEN WRITEC(K) 
                         OR   $( LET F,N = ?,?  
                                 P := P+1   
                                 SWITCHON !P INTO   
                                   $( DEFAULT : WRITEC(!P); LOOP
                                      CASE 'S': F := WRITES; ENDCASE
                                      CASE 'C': F := WRITEC; ENDCASE
                                      CASE 'N': F := WRITEN; ENDCASE
                                      CASE 'O': F := WRITEO; GOTO M 
                                      CASE 'I': 
                                      CASE 'D': F := WRITED;
                                   M: P := P+1; N := !P-'0' $)  
                                      Q := Q+1; F(!Q,N) 
                              $)
         $) 
   $)   

AND REPORT(N) BE
   $( LET A = OUTPUT
      OUTPUT := MONITOR 
      WRITEF("*NREPORT :- ERROR %N*N", N)   
      REPORTCOUNT := REPORTCOUNT +1 
       IF REPORTCOUNT = REPORTMAX DO WRITEC("TOO MANY REPORTS*N")   
       IF REPORTCOUNT >= REPORTMAX DO   
          $( WRITES("REPORT FINISH.*N") 
             FINISH 
          $)
      OUTPUT := A   
   $)   

AND NEWLINE() BE WRITECH(OUTPUT,'*N')   

.   


////    EDITOR ( DMP )  


STATIC $(   
IFILE:0; OFILE:0;   
ISET:FALSE; OSET:FALSE; 
IEND:FALSE; 
ICOUNT:0; OCOUNT:0; 
INAME:0; ONAME:0;   
XNAME:0; CHAIN:0;   
ILINE:0; OLINE:0; ELINE:0;  
EREAD:FALSE; ERRORS:FALSE;  
CH:0; WC:'**'; EP:0;
LISTING:TRUE; LISTDELETES:FALSE;
MEDIUM:0; ASCII:FALSE;  
MODE:0; 
$)  



////    START OF "NHEAD0"   


GLOBAL $(   
ENTRYUSED:2;  INIT.X.REGS:3;
SW.ON:4;  SW.OFF:5;  SW.TEST:6;  SW.INVTT:7;
TY.HALT:8;  TY.DISPLAY:9;  TY.DELETE:10;  TY.CHAINPROG:11;  
FP.ADD:12;  FP.SUB:13;  FP.MULT:14;  FP.DIV:15; 
FP.FLOAT:16;  FP.FIX:17;
GENERAL.GIVE:18;  CORE:19;  
RSCLOCK:20;  RDCLOCK:21;
RSOVERFLOW:22;  OVERFLOW:23;
EXECUTE:24;  SYSTEM.DATA.BLOCK:25;  
OVERLAY:26; 
INITIALIZEIOVEC:39;  INITIALIZEIO:40;   
CREATEOUTPUT:41;  FINDFILE:42;  CREATEFILE:43;  WRITECH:44; 
ENDWRITE:45;  ENDREAD:46;  READCH:47;  FINDINPUT:48;  EOSMOD:49;
$)  

MANIFEST $( 
ENDOFSTREAMCH=255;  ENDSTREAMCH=255;  BYTESPERWORD=3;   
BYTESIZE=8;  BYTEBITS=8;  BYTEMAX=255;  
$)  

GLOBAL $(   
OUTPUT:55;  MONITOR:56;  INPUT:57;  
WRITES:60;  WRITEC:61;  WRITEN:62;  NEWLINE:63;  WRITEPN:64;
PACKSTRING:66;  UNPACKSTRING:67;
REPORT:70;  REPORTCOUNT:71;  REPORTMAX:72;  
WRITED:75;  WRITEF:76;  WRITEO:77;  WRITEOCT:77;
REPORTGLOBALS:90;  TRACE:53;  PROGRAMMAP:92    $)   


////    END OF "NHEAD0" 




////    START OF "LIBB" 
////    END OF "LIBB"   



LET WRLINE() BE 
   $( OCOUNT := OCOUNT + 1  
      IF OSET & OLINE!1 # '*E' DO   
            FOR I = 1 TO OLINE!0 DO WRITECH(OFILE,OLINE!I)  
   $)   

AND LISTLINE(F) BE IF LISTING & OLINE!1 # '*E' DO   
   $( WRITEF(F,OCOUNT)  
      FOR I = 1 TO OLINE!0 DO WRITECH(OUTPUT,OLINE!I)   
   $)   

AND RDLINE() BE 
   $( LET P = 0 
      UNLESS ISET DO REPORT(90) 
      ICOUNT := ICOUNT + 1  
         $( READCH(IFILE,LV CH) 
            P := P + 1  
            ILINE!P := CH   
         $) REPEATUNTIL CH = '*N' LOGOR CH = '*E' LOGOR P = 161 
      IF CH = '*E' & P # 1 DO ILINE!P,CH := '*N','*N'   
      ILINE!0 := P  
      IEND := CH = '*E' 
      IF IEND DO ISET := FALSE  
   $)   

AND RCOM() = EREAD -> TRUE , VALOF  
   $( LET P = 0 
         $( READCH(INPUT,LV CH) 
            P := P + 1  
            ELINE!P := CH   
         $) REPEATUNTIL CH = '*N' LOGOR CH = '*E' LOGOR P = 161 
      IF CH = '*E' & P # 1 DO ELINE!P,CH := '*N','*N'   
      IF ASCII DO   
         FOR Q = ELINE + 1 TO ELINE + P DO  
               $( LET C = !Q
                  TEST C = '\' THEN !Q := '$' OR IF C = '$' THEN !Q := '\' $)   
      IF CH = '*E' DO ELINE!1,ELINE!2,ELINE!3,P,CH := WC,'F','*N',3,'*N'
      ELINE!0 := P  
      EP := 1   
      EREAD := FALSE
      RESULTIS ELINE!1 = WC 
   $)   

AND PCOM() BE FOR I = 1 TO ELINE!0 DO WRITECH(OUTPUT,ELINE!I)   

AND RN() = VALOF
   $( LET N,NEG = 0,FALSE   
   M: UNTIL '0' <= CH <= '9' LOGOR CH = '-' LOGOR CH = '*N' DO RCH()
      IF CH = '*N' DO RESULTIS 0
      IF CH = '-' DO $( NEG := TRUE ; RCH() ; GOTO M $) 
      WHILE '0' <= CH <= '9' DO 
         $( N := 10 * N + CH - '0' ; RCH() $)   
      RESULTIS NEG -> -N , N
   $)   

AND RCH() = VALOF   
   $( CH := ELINE!EP
      UNLESS CH = '*N' DO EP := EP + 1  
      RESULTIS CH   
   $)   

AND COPY() BE   
   $( OLINE := ILINE
      WRLINE()  
      LISTLINE("   %I4   ") 
      RDLINE()  
   $)   

AND INSERT() BE 
   $( OLINE := ELINE
      WRLINE()  
      LISTLINE("   %I4 > ") 
   $)   

AND DELETE() BE 
   $( IF LISTDELETES DO 
         $( OLINE := ILINE; LISTLINE(" <        ") $)   
      RDLINE()  
   $)   

AND ALTER(M,N) BE   
   $( IF N = 0 DO M := M + MODE 
      N := N < 0 -> 1 - N , M + N   
      UNLESS ISET DO REPORT(110)
      IF N < M DO REPORT(120)   
      IF M < ICOUNT DO REPORT(130)  
      UNTIL ICOUNT >= M DO COPY()   
      UNTIL ICOUNT >= N DO DELETE() 
   $)   

AND ECOM() = VALOF  
   $( LET TEMP = 0  
      EP := 2   
      RCH() 
      SWITCHON CH INTO  
         $( CASE 'I': IF ISET DO ENDREAD(IFILE) 
                      PCOM()
                      SKIPCHPAST('('); ISET,IEND,ICOUNT := TRUE,FALSE,0 
                      IFILE := '0' <= CH <= '9' -> FINDINPUT(RN()) ,
                                                   FINDFILE(RS(INAME))  
                      RDLINE()  
                      ENDCASE   
            CASE 'O': IF OSET DO ENDWRITE(OFILE)
                      PCOM()
                      SKIPCHPAST('('); OSET,OCOUNT := TRUE,0
                      OFILE := '0' <= CH <= '9' -> CREATEOUTPUT(RN()) , 
                                                   CREATEFILE(RS(ONAME))
                      ENDCASE   
            CASE 'E':   
            CASE 'F': $( LET F = CH = 'F'   
                      IF ISET DO UNTIL IEND DO COPY()   
                      IF OSET DO ENDWRITE(OFILE)
                      PCOM()
                      ICOUNT,OCOUNT := 0,0  
                      ISET,OSET := FALSE,FALSE  
                      UNLESS F DO WRITEC('*P')  
                      IF ERRORS DO TY.DISPLAY("ER") 
                      RESULTIS F $) 
            CASE 'M': MODE := RN() ; ENDCASE
            CASE 'W': UNTIL CH = '=' LOGOR CH = ' ' DO RCH()
                      TEST CH = '=' THEN RCH() OR UNTIL CH # ' ' DO RCH()   
                      WC := CH ; ENDCASE
            CASE 'A':    $( LET M = RN()
                            LET N = RN()
                            ALTER(M,N) ; ENDCASE $) 
            CASE 'B': UNLESS ISET DO REPORT(100)
                      UNTIL IEND DO COPY()  
                      ENDCASE   
            CASE 'L':   
            CASE 'N': LISTING := CH = 'L' ; PCOM(); ENDCASE 
            CASE 'D': LISTDELETES := NOT LISTDELETES; ENDCASE   
            CASE 'Y':   
            CASE 'Z': ASCII := CH = 'Y' ; ENDCASE   
            CASE 'S': ENDREAD(INPUT) ; MEDIUM := 30 - MEDIUM ;  
                      INPUT := FINDINPUT(MEDIUM) ; ENDCASE  
            CASE 'T': UNTIL CH = ' ' LOGOR CH = '*N' DO RCH()   
                      UNTIL CH # ' ' DO RCH()   
                      IF CH = '*N' DO $( EP := 3 ; RCH() $) 
                      FOR I = 1 TO 4 DO 
                         $( IF CH = '*N' DO CH := '*S'  
                            CH := CH - 32 ; IF CH >= 64 DO CH := CH - 32
                            TEMP := ( TEMP << 6 ) LOGOR 
                            ( CH < 32 -> CH NEQV #20 , CH ) 
                            RCH()   
                         $) 
                      INPUT!15 := TEMP ; ENDCASE
            CASE 'X': SKIPCHPAST('(') ; RS(XNAME) ; ENDCASE 
            CASE 'C': SKIPCHPAST('(') ; RS(CHAIN) ; ENDCASE 
            DEFAULT : REPORT(1) ; ENDCASE   
         $) 
      RESULTIS FALSE
   $)   

AND RS(S) = VALOF   
   $( LET V = VEC 255   
      AND P = 0 
      UNTIL CH = ')' LOGOR CH = '(' LOGOR CH = '*N' DO  
         $( IF CH = ',' DO $( P := 0 ; LOOP $)  
            P := P + 1 ; V!P := CH ; RCH() $)   
      V!0 := P  
      PACKSTRING(V,S)   
      RESULTIS S
   $)   

AND SKIPCHPAST(C) = VALOF   
   $( UNTIL CH = C LOGOR CH = '*N' DO RCH() 
      RESULTIS RCH()
   $)   

GLOBAL $( START:1$) 

START:  
  IF ENTRYUSED>1 & INIT.X.REGS!0=0 DO   
   $( TY.HALT("LD") ; GOTO START $) 
CORE(4,TABLE 0,256,-1) ; $( 
LET V1 = VEC 161 AND V2 = VEC 161   
AND V3 = VEC  10 AND V4 = VEC  10   
AND V5 = VEC  10 AND V6 = VEC  14   
ILINE,ELINE := V1,V2
INAME,ONAME := V3,V4
XNAME,CHAIN := V5,V6
ILINE!0,ELINE!0 := 0,0  
INAME!0,ONAME!0 := 0,0  
XNAME!0,CHAIN!0 := 0,0  
LISTING,LISTDELETES,ASCII,WC,EREAD,ERRORS := TRUE,FALSE,FALSE,'**',FALSE,FALSE  
REPORTCOUNT,REPORTMAX := 0,1
INITIALIZEIO()  
MONITOR := CREATEOUTPUT(20) 
OUTPUT := MONITOR   
TEST ENTRYUSED < 2 THEN $( MEDIUM := 30*ENTRYUSED; INPUT := FINDINPUT(MEDIUM) $)
                    OR  $( MEDIUM := 0; INPUT := FINDFILE(INIT.X.REGS) $)   
   $( TEST RCOM() THEN IF ECOM() BREAK OR INSERT() $) REPEAT
IF CHAIN!0 # 0 & NOT ERRORS DO TY.CHAINPROG(CHAIN,XNAME!0#0->XNAME,ONAME)   
FINISH $)   

****
*LIST   
*OUT(GLOBALS)   
       //          START OF BCPL STANDARD HEADER ---- GLOBALS 1 -> 100  
 GLOBAL  $(        START:1 ;              ENTRYUSED:2 ; 
            INIT.X.REGS:3 ;                  SW.ON:4 ;  
                 SW.OFF:5 ; 
                SW.TEST:6 ;               SW.INVTT:7 ;  
                TY.HALT:8 ;             TY.DISPLAY:9 ;  
              TY.DELETE:10;           TY.CHAINPROG:11;  
                 FP.ADD:12;                 FP.SUB:13;  
                FP.MULT:14;                 FP.DIV:15;  
               FP.FLOAT:16;                 FP.FIX:17;  
           GENERAL.GIVE:18;                   CORE:19;  
                RSCLOCK:20;                RDCLOCK:21;  
             RSOVERFLOW:22;               OVERFLOW:23;  
                EXECUTE:24;      SYSTEM.DATA.BLOCK:25;  
                OVERLAY:26;              BRING.SEG:26;  
                  DYVEC:27;            P.POINTER:28;
                    CFN:29;                  ISFN:30;   
                  LIMIT:31;           SETP.POINTER:32;  
        
        INITIALIZEIOVEC:39;           INITIALIZEIO:40;  
           CREATEOUTPUT:41;               FINDFILE:42;  
             CREATEFILE:43;                WRITECH:44;  
               ENDWRITE:45;                ENDREAD:46;  
                 READCH:47;              FINDINPUT:48;  
                 EOSMOD:49; 
            
             REPORTCALL:50;           REPORTRETURN:51;  
 REPORTMISSINGFUNCTIONS:52;                  TRACE:53;  
                UNTRACE:54; 

                 OUTPUT:55;                MONITOR:56;  
                  INPUT:57;                     CH:58;  
            
                 NEXTCH:59  
                 WRITES:60;                 WRITEC:61;  
                 WRITEN:62;                NEWLINE:63;  
                WRITEPN:64; 
            
             PACKSTRING:66;           UNPACKSTRING:67;  
                    RCH:68;                  READN:69;  
                 REPORT:70;            REPORTCOUNT:71;  
              REPORTMAX:72;               REPORTF:73;   
            
                 WRITED:75;                 WRITEF:76;  
                 WRITEO:77;               WRITEOCT:77;  
            
             STANDARDIO:78;              TERMINATE:79;  
                 NEWVEC:80;                NEWWORD:81   
              RETURNVEC:82;             RETURNWORD:83   
           NEWFREESTORE:84;       RESTOREFREESTORE:85;  
      SETUPCASFREESTORE:86;                     FS:87;  
   REPORTFREESTORESTATE:88;               FSERR:89; 

          REPORTGLOBALS:90;       REPORTSTACKSTATE:91;  
             PROGRAMMAP:92;                 GIVEUP:93;  
                   DUMP:94; 
            GIVEUPLEVEL:95;           ONLINEDEBUG:96;   

                PROGRAM:100;          $)
            
     MANIFEST $(
     ENDOFSTREAMCH=255;  ENDSTREAMCH=255;  BYTESPERWORD=3;  
     BYTESIZE=8;  BYTEBITS=8;  BYTEMAX=255; 
     $) 

//            END OF BCPL STANDARD HEADER   

*OUT(NHEAD0)
GLOBAL  $(        START:1 ;              ENTRYUSED:2 ;  
            INIT.X.REGS:3 ;                  SW.ON:4 ;  
                 SW.OFF:5 ; 
                SW.TEST:6 ;               SW.INVTT:7 ;  
                TY.HALT:8 ;             TY.DISPLAY:9 ;  
              TY.DELETE:10;           TY.CHAINPROG:11;  
                 FP.ADD:12;                 FP.SUB:13;  
                FP.MULT:14;                 FP.DIV:15;  
               FP.FLOAT:16;                 FP.FIX:17;  
           GENERAL.GIVE:18;                   CORE:19;  
                RSCLOCK:20;                RDCLOCK:21;  
             RSOVERFLOW:22;               OVERFLOW:23;  
                EXECUTE:24;      SYSTEM.DATA.BLOCK:25;  
                OVERLAY:26; 
        
        INITIALIZEIOVEC:39;           INITIALIZEIO:40;  
           CREATEOUTPUT:41;               FINDFILE:42;  
             CREATEFILE:43;                WRITECH:44;  
               ENDWRITE:45;                ENDREAD:46;  
                 READCH:47;              FINDINPUT:48;  
                 EOSMOD:49; 
            
             REPORTCALL:50;           REPORTRETURN:51;  
 REPORTMISSINGFUNCTIONS:52;                  TRACE:53;  
                UNTRACE:54; 

                 OUTPUT:55;                MONITOR:56;  
                  INPUT:57;                     CH:58;  
            
                 NEXTCH:59  
                 WRITES:60;                 WRITEC:61;  
                 WRITEN:62;                NEWLINE:63;  
                WRITEPN:64; 
            
             PACKSTRING:66;           UNPACKSTRING:67;  
                    RCH:68;                  READN:69;  
                 REPORT:70;            REPORTCOUNT:71;  
              REPORTMAX:72; 
            
                 WRITED:75;                 WRITEF:76;  
                 WRITEO:77;               WRITEOCT:77;  
            
             STANDARDIO:78;              TERMINATE:79;  

          REPORTGLOBALS:90;       REPORTSTACKSTATE:91;  
             PROGRAMMAP:92;                 GIVEUP:93;  
                   DUMP:94; 

                PROGRAM:100;          $)
            
     MANIFEST $(
     ENDOFSTREAMCH=255;  ENDSTREAMCH=255;  BYTESPERWORD=3;  
     BYTESIZE=8;  BYTEBITS=8;  BYTEMAX=255; 
     $) 


*OUT(NHEAD2)
////    START OF "NHEAD2"    [   MODIFIED OXFORD FREE STORE SYSTEM   ]  


GLOBAL $(   
NEWVEC :80;  NEWWORD :81;  RETURNVEC :82;  RETURNWORD :83;  
NEWFREESTORE :84;  RESTOREFREESTORE :85;
SETUPVECASFREESTORE :86;  FS:87;
REPORTFREESTORESTATE :88;   
FSERR :89;  
$)  


////    END OF "NHEAD2"    [   MODIFIED OXFORD FREE STORE SYSTEM   ]
*OUT(CGHEAD)
////   START OF       "CGHEAD"  
GLOBAL $(   DATAV:100; TEMPV:101; LABV:102  
            DATAP:104   
            NEXTCELL:107
            ARG1:108; ARG2:109; SSP:110 
STVQ:111
            FULL:112
            V1:113; V2:114; V3:115; VP:116; VD:117; VG:118  
            OP:123  
         OPTION:125 
            BSWIT:129   
            BSAVE:130; BRETU:131; BKORE:132; BFINI:133; BEXEC:134   
            GCUE:137; SCUE:138  
            GMAX:139
            BATABLE:140; CUECHAIN:141   
            GREL:142
            SEG:143; SEGMAX:144; GVEC:145   
            LIBLIST:146; SEGNAME:147
         $) 
GLOBAL $(   
TY.HALT:8;  TY.DISPLAY:9;  TY.DELETE:10;  TY.CHAINPROG:11;  
                                                WRITECH:44; 
         READCH:47  
OUTPUT:55;  MONITOR:56;  INPUT:57;  
CH:58   
WRITES:60;  WRITEC:61;  WRITEN:62;  NEWLINE:63;  WRITEPN:64;
PACKSTRING:66;  UNPACKSTRING:67;
RCH:68; READN:69
REPORT:70;  REPORTCOUNT:71;  REPORTMAX:72;  
WRITED:75;  WRITEF:76;  WRITEO:77;  WRITEOCT:77;
RKCODE:160; LOSE1:161;STACK:162; CGSTART:163; CGEND:164; CGSTRING:165   
 MOVETOANYR:166; MOVETOANYIR:167; INR:168; INIR:169; ISZERO:170 
  ISCONST:171   
        MOVETO:172; MOVETOR:173; MOVETOIR:174; ADDR:175;
 FILLA:176; SET:177; CELLC:179; OUTINSTR:180; COMPILE:181; ASSEMBLE:182 
COMPLP:183; CGJTJF:184; COMPNUM:185; COMPAD:186 
         B.A.SET:188
            WRLAB:195; WROPCODE:196;LSPACE=197; STORE:198;STOREI:199;   
STORET:200; STOREIN:201; ISFREE:202 
NEXTR:205; NEXTIR:206; FRER:207;                        LOADT:210   
INITSTACK:211; CELL:212;              LOADLV:214;CGPLUS:215 
CGREL:217; CGSHIFT:218; CGLOGOP:219; CGSWITCH:220; CGAPPLY:221; 
CGGLOBAL:222; CGENTRY:223; SCAN:224; CG1900:225; CELLL:226  
READOP:229  
READL:231   
CGDIV.OR.REM:234; CGMULT:235; CGRV:236;CGMINUS:237  
            NEWCELL:238; WRITECUES:239  
            SCSTART:240; SCEND:241; CREATESEMICOMPFILE:242  
            CLOSESEMICOMPFILE:243   
            LIST:244; FREECELL:245; APPENDN:246; STRING:247 
            SCF1:248; SCF5:249; SCFIELD:250 
            NEWRECORD:251; ENDRECORD:252; SLCUEREC:253  
            TITLEREC:254; TERMINREC:255 
            PACK1900:256
            PRIORITYNAMEREC: 257
            BRANCHAHEAD:258 
            EMPTY:259   
$)  
GLOBAL $(   
SWAP:270
CREATECOSYFILE:271;CLOSECOSYFILE:272; OPENSUBFILE: 273; CLOSESUBFILE:274
            INPUTFILE:278   
            PLANFILE:279; SEMICOMPFILE:280  
$)  
GLOBAL $( GXV:341;  
          GSEG:342  
          GPLFV:344; GSCFV:345; GBINV:346; GNAMEV:347   
       $)   

MANIFEST $( NONE = -1        // FOR EMPTY REGISTER FIELDS   
            DREL = #44                                     // LOWER PRESET  
            PREL = #53                                     // PROGRAM   
            ABS = #40   
            NUMBER = 1; CONST = 2; LCONST = 3; LABEL = 4; LOCAL = 5 
            IREG = 6; XREG = 7  
            H1 = 0; H2 = 1; H3 = 2; H4 = 3; H5 = 4  
            TEMPSIZE = 5
            LABT = 250  
            TEMPT= 250  
            DATAT= 250  
            FREET= 250  
            LP = #44;       LPI = #64   
            PR = #53;       PRI = #73   
            R1 = #54;       R1I = #74   
            R4 = #57;       R4I = #77   
            VA1 = #10; VA2 = #11; VA3 = #12; VA4 = #13  
            AU = #14
            END = #04   
            MSK = #00   
         $) 


MANIFEST $( DIRECT = #04000000                   // ADD TO CHANGE X TO N
            LDX = #00000000; ADX = #00040000; NGX = #00100000; SBX = #00140000  
            STO = #00400000 
            ANDX = #01000000; ORX = #01040000; ERX = #01100000  
            TXU = #01300000; TXL = #01340000
            STOZ = #01540000
            MPY = #02000000 
            DVS = #02300000 
            BZE = #02400000; BNZ = #02500000; BPZ = #02600000; BNG = #02700000  
            CALL = #03400000; EXIT = #03500000  
            BRN = #03600000 
            BCS = #53600000; BCC = #63600000
            LDN = #04000000; ADN = #04040000; NGN = #04100000; SBN = #04140000  
            SLL = #04402000 
            SRL = #04502000 
            ANDN = #05000000; ORN = #05040000; ERN = #05100000; NULL = #05140000
         $) 

MANIFEST  $(          // CODE SYMBOL REPRESENTATION 
C.TRUE=4;   C.FALSE=5   
C.RV=8  
C.FNAP=10;   C.MULT=11;   C.DIV=12;   C.REM=13;  C.PLUS=14;  C.MINUS=15 
C.NEG=17
C.EQ=20;   C.NE=21;   C.LS=22;   C.GR=23;   C.LE=24;   C.GE=25  
C.NOT=30;   C.LSHIFT=31;   C.RSHIFT=32;   C.LOGAND=33;  C.LOGOR=34  
C.EQV=35;   C.NEQV=36;  
C.LP=40;   C.LG=41;   C.LN=42;   C.LSTR=43;   C.LL=44   
C.LLP = 45  
C.LLG=46;   C.LLL=47;   
C.RTAP=51  ; C.GOTO=52  
C.FINISH=68;         C.SWITCHON=70; 
C.GLOBAL= 76
C.SP=80;   C.SG=81;   C.SL=82;   C.STIND=83 
C.JUMP=85;   C.JT=86;   C.JF=87 
C.LAB=90;   C.STACK=91;   C.STORE=92;   C.RSTACK=93;   C.ENTRY=94;  
C.SAVE=95; C.FNRN=96;   C.RTRN=97;   C.RES=98   
C.DATALAB=100;   C.ITEML=101;   C.ITEMN=102 ;  C.ERROR=103  
C.END=104       ;  C.STOP=105   
$)  
GLOBAL $(   
          WRITEBUCKET:400   
          WRITESTEERINGBUCKET:401   
          WRITEMASTERSEGMENT:402
       $)   
////   END OF "CGHEAD"  
*OUT(NHEAD1)
////    START OF "NHEAD1"   


GLOBAL $(   
ENTRYUSED:2;
SW.ON:4;  SW.OFF:5;  SW.TEST:6;  SW.INVTT:7;
FP.ADD:12;  FP.SUB:13;  FP.MULT:14;  FP.DIV:15; 
FP.FLOAT:16;  FP.FIX:17;
INITIALIZEIO:40;
CREATEOUTPUT:41;  WRITECH:44;   
ENDWRITE:45;  ENDREAD:46;  READCH:47;  FINDINPUT:48;
$)  

MANIFEST $( 
ENDOFSTREAMCH=255;  ENDSTREAMCH=255;  BYTESPERWORD=3;   
BYTESIZE=8;  BYTEBITS=8;  BYTEMAX=255;  
$)  

GLOBAL $(   
OUTPUT:55;  MONITOR:56;  INPUT:57;  
WRITES:60;  WRITEC:61;  WRITEN:62;  NEWLINE:63;  WRITEPN:64;
PACKSTRING:66;  UNPACKSTRING:67;
REPORT:70;  REPORTCOUNT:71;  REPORTMAX:72;  
WRITED:75;  WRITEF:76;  WRITEO:77;  WRITEOCT:77;
$)  


////    END OF "NHEAD1" 
*OUT(NHEAD4)
//  
//          START OF 'NHEAD4'   
//  
//          GLOBALS FOR LIST PROCESSING ROUTINES 'LIB4' 
//  
GLOBAL $(   
            INITIATE:150;   BASES:151;  
            PRESERVE:152;   ACHTUNG:153;
             WARNING:154;   STANDARDWARNING:155 
                ANTE:156;   POST:157;   
               SETUP:158;   CONS:159;   
                  HD:160;   TL:161; 
               VALUE:162;   ATOM:163;   
                 EQU:164;   NULL:165;   
               SETHD:166;   SETTL:167;  
            SETVALUE:168;   $)  
//  
MANIFEST $( FREEITEM = -1; ATOMLINK = -2; NIL = 0 $)
//  
//    **** WARNING THESE MANIFESTS MAY BE INCORRECT *** 
//          END OF 'NHEAD4' 
//  
*OUT(TRNHEAD)   
////    START OF "TRNHEAD"  


GET "NHEAD0"


MANIFEST $(   // AE OPERATORS AND SYMBOLS   
S.NUMBER=1; S.NAME=2; S.STRING=3; S.TRUE=4; S.FALSE=5   
S.VALOF=6; S.LV=7; S.RV=8; S.VECAP=9; S.FNAP=10 
S.MULT=11; S.DIV=12; S.REM=13; S.PLUS=14; S.MINUS=15; S.CHAR=16; S.NEG=17   
S.EQ=20; S.NE=21; S.LS=22; S.GR=23; S.LE=24; S.GE=25
S.NOT=30; S.LSHIFT=31; S.RSHIFT=32; S.LOGAND=33; S.LOGOR=34 
S.EQV=35; S.NEQV=36; S.COND=37; S.COMMA=38; S.TABLE=39  

S.AND=40; S.VALDEF=41; S.VECDEF=42; S.CONSTDEF=43   
S.FNDEF=44; S.RTDEF=45  

S.ASS=50; S.RTAP=51; S.GOTO=52; S.RESULTIS=53   
S.COLON=54  
S.TEST=55; S.FOR=56; S.IF=57; S.UNLESS=58   
S.WHILE=59; S.UNTIL=60; S.REPEAT=61; S.REPEATWHILE=62   
S.REPEATUNTIL=63; S.BREAK=66; S.RETURN=67; S.FINISH=68  
S.SWITCHON=70; S.CASE=71; S.DEFAULT=72  
S.SEQ=73; S.LET=74; S.MANIFEST=75; S.GLOBAL=76  
S.LOCAL=77; S.LABEL=78; S.STATIC=79 
$)  

GLOBAL $( CHARCODE:127; OPTION:128  $)  

MANIFEST $(    //  SELECTORS
H1=0; H2=1; H3=2; H4=3; H5=4; H6=5; 
$)  

MANIFEST $( 
S.LP=40; S.LG=41; S.LN=42; S.LSTR=43; S.LL=44   
S.LLP=45; S.LLG=46; S.LLL=47

S.SP=80; S.SG=81; S.SL=82; S.STIND=83   
S.JUMP=85; S.JT=86; S.JF=87 
S.LAB=90; S.STACK=91; S.STORE=92; S.RSTACK=93; S.ENTRY=94   
S.SAVE=95; S.FNRN=96; S.RTRN=97; S.RES=98; S.RESLAB=99  
S.DATALAB=100; S.ITEML=101; S.ITEMN=102  $) 

GLOBAL $( PLIST:152  $) 

GLOBAL  $(  
TRANS:200; DECLNAMES:201; DECLDYN:202; DECLSTAT:203 
CHECKDISTINCT:204; ADDNAME:205; CELLWITHNAME:206
TRANSDEF:207; SCANLABELS:208; DECLLABELS:209
TRANSREPORT:210; JUMPCOND:220; TRANSSWITCH:221  
ASSIGN:230; LOAD:231; LOADLV:232; LOADLIST:233; COMPDATALAB:234 
EVALCONST:235   
COMPLAB:240; COMPJUMP:241; COMPENTRY:242
NEXTPARAM:243; PARAMNUMBER:244; COMPILEAE:245   

DVEC:260; DVECS:261; DVECE:262; DVECP:263; DVECT:264
CASETABLE:265; CASEB:266; CASEP:267; CASET:268  
CURRENTBRANCH:270   
BREAKLABEL:271; RESULTLABEL:272; DEFAULTLABEL:273; STATLABEL:274
SSP:280; VECSSP:281; SAVESPACESIZE:282  
GLOBDECL:285; GLOBDECLS:286; GLOBDECLT:287  
COMCOUNT:288   $)   

GLOBAL  $(  
OUT1:290; OUT2:291; OUT2P:292   
OUT3:293; OUT3P:294 
OUTN:295; OUTL:296; OUTC:297
WRITEOP:298   $)

GLOBAL $(  // EXTRA GLOBALS FOR THE QMC COMPILER
LOOPLABEL:320; ENDCASELABEL:321;
OUTLABEL:321;   
$)  

MANIFEST $(  // EXTRA MANIFESTS FOR THE QMC COMPILER
S.LOOP=401; 
S.ENDCASE=402;  
S.OUT=402;  
S.IFSO=411; 
S.IFNOT=412;
S.BY=421;   
S.NIL=431;  
S.SELECTON=441; 
S.REP=451;  
S.EXTERNAL=461; 
$)  


////    END OF "TRNHEAD"
*OUT(TSYNHEAD)  
////    START OF "TSYNHEAD" 


GET "NHEAD0"


MANIFEST $(   // AE OPERATORS AND SYMBOLS   
S.NUMBER=1; S.NAME=2; S.STRING=3; S.TRUE=4; S.FALSE=5   
S.VALOF=6; S.LV=7; S.RV=8; S.VECAP=9; S.FNAP=10 
S.MULT=11; S.DIV=12; S.REM=13   
S.PLUS=14; S.MINUS=15; S.CHAR=16; S.NEG=17  
S.EQ=20; S.NE=21; S.LS=22; S.GR=23; S.LE=24; S.GE=25
S.NOT=30; S.LSHIFT=31; S.RSHIFT=32; S.LOGAND=33; S.LOGOR=34 
S.EQV=35; S.NEQV=36; S.COND=37; S.COMMA=38; S.TABLE=39  

S.AND=40; S.VALDEF=41; S.VECDEF=42; S.CONSTDEF=43   
S.FNDEF=44; S.RTDEF=45  

S.ASS=50; S.RTAP=51; S.GOTO=52; S.RESULTIS=53   
S.COLON=54  
S.TEST=55; S.FOR=56; S.IF=57; S.UNLESS=58   
S.WHILE=59; S.UNTIL=60; S.REPEAT=61; S.REPEATWHILE=62   
S.REPEATUNTIL=63; S.BREAK=66; S.RETURN=67; S.FINISH=68  
S.SWITCHON=70; S.CASE=71; S.DEFAULT=72  
S.SEQ=73; S.LET=74; S.MANIFEST=75; S.GLOBAL=76; S.STATIC=79 
$)  

MANIFEST $(  // OTHER CANONICAL SYMBOLS 
S.BE=89; S.END=90;  S.LSECT=91; S.RSECT=92; S.GET=93
S.SEMICOLON=97; S.INTO=98; S.TO=99; S.DO=101; S.OR=102  
S.VEC=103; S.LPAREN=105; S.RPAREN=106; S.OCT=109
$)  

GLOBAL $(   // GLOBALS USED IN PP   
DECVAL=98; OCTVAL=99
LINE=100; LINEP=101; LINEMAX=102
GETV=103; GETP=104; GETT=105
WORDV:106; LENGTH:107; WORDLENGTH:108; WORD:109 
P1=110; P2=111; P3=112; PACKCH=113; PACKLENGTH=114  
SYMB:115; WORDNODE:116; CH:117; RDTAG:118; LVCH:119 
NEXTSYMB:120; DECLSYSWORDS:121; NLPENDING:122   
LOOKUPWORD:125; RCH:126; PPTRACE:127; OPTION:128
RDLINE:130; WRLINE:131; LINELENGTH:132; LINECOUNT:133   
$)  

GLOBAL $(  // GLOBALS USED IN CAE   
RDBLOCKBODY:140; RDSECT:141 
RNAMELIST:142; RNAME:143
REXP:144; RDEF:145; RCOM:146
RDCDEFS:147; NAMETREE:148; ERRORNAME:149
FORMTREE:150; CAEREPORT:151; PLIST:152  
CHECKFOR:153; IGNORE:154; PERFORMGET:155

LIST1:161; LIST2:162; LIST3:163; LIST4:164; LIST5:165; LIST6:166;   
NEWVEC:167; TREEP:168; TREEVEC:169; 
$)  

MANIFEST $(  // SELECTORS   
H1=0; H2=1; H3=2; H4=3; H5=4; H6=5; 
$)  

GLOBAL $(  // EXTRA GLOBALS FOR THE QMC COMPILER
MEDIUM:301;  OUTPUTT:302;  TREEDEPTH:303;   
POUND.EQUALS.DOLLAR:305;  DOLLAR.EQUALS.POUND:306;  
SWITCH:310; 
WRITESCH:315;  WRITESS:316;  WRITESC:317;   
COMCOUNT1:330;  
SEGCOUNT:332;  NEXTSEGNO:333;   
$)  

MANIFEST $(  // EXTRA MANIFESTS FOR THE QMC COMPILER
S.HASH=115; 

S.LOOP=401; 
S.ENDCASE=402;  
S.OUT=402;  
S.IFSO=411; 
S.IFNOT=412;
S.BY=421;   
S.NIL=431;  
S.SELECTON=441; 
S.REP=451;  
S.EXTERNAL=461; 
$)  


////    END OF "TSYNHEAD"   
*FIN
****

*LIST   
*OUT(GLOBALS)   
       //          START OF BCPL STANDARD HEADER ---- GLOBALS 1 -> 100  
 GLOBAL  $(        START:1 ;              ENTRYUSED:2 ; 
            INIT.X.REGS:3 ;                  SW.ON:4 ;  
                 SW.OFF:5 ; 
                SW.TEST:6 ;               SW.INVTT:7 ;  
                TY.HALT:8 ;             TY.DISPLAY:9 ;  
              TY.DELETE:10;           TY.CHAINPROG:11;  
                 FP.ADD:12;                 FP.SUB:13;  
                FP.MULT:14;                 FP.DIV:15;  
               FP.FLOAT:16;                 FP.FIX:17;  
           GENERAL.GIVE:18;                   CORE:19;  
                RSCLOCK:20;                RDCLOCK:21;  
             RSOVERFLOW:22;               OVERFLOW:23;  
                EXECUTE:24;      SYSTEM.DATA.BLOCK:25;  
                OVERLAY:26;              BRING.SEG:26;  
                  DYVEC:27;            P.POINTER:28;
                    CFN:29;                  ISFN:30;   
                  LIMIT:31;           SETP.POINTER:32;  
        
        INITIALIZEIOVEC:39;           INITIALIZEIO:40;  
           CREATEOUTPUT:41;               FINDFILE:42;  
             CREATEFILE:43;                WRITECH:44;  
               ENDWRITE:45;                ENDREAD:46;  
                 READCH:47;              FINDINPUT:48;  
                 EOSMOD:49; 
            
             REPORTCALL:50;           REPORTRETURN:51;  
 REPORTMISSINGFUNCTIONS:52;                  TRACE:53;  
                UNTRACE:54; 

                 OUTPUT:55;                MONITOR:56;  
                  INPUT:57;                     CH:58;  
            
                 NEXTCH:59  
                 WRITES:60;                 WRITEC:61;  
                 WRITEN:62;                NEWLINE:63;  
                WRITEPN:64; 
            
             PACKSTRING:66;           UNPACKSTRING:67;  
                    RCH:68;                  READN:69;  
                 REPORT:70;            REPORTCOUNT:71;  
              REPORTMAX:72;               REPORTF:73;   
            
                 WRITED:75;                 WRITEF:76;  
                 WRITEO:77;               WRITEOCT:77;  
            
             STANDARDIO:78;              TERMINATE:79;  
                 NEWVEC:80;                NEWWORD:81   
              RETURNVEC:82;             RETURNWORD:83   
           NEWFREESTORE:84;       RESTOREFREESTORE:85;  
      SETUPCASFREESTORE:86;                     FS:87;  
   REPORTFREESTORESTATE:88;               FSERR:89; 

          REPORTGLOBALS:90;       REPORTSTACKSTATE:91;  
             PROGRAMMAP:92;                 GIVEUP:93;  
                   DUMP:94; 
            GIVEUPLEVEL:95;           ONLINEDEBUG:96;   

                PROGRAM:100;          $)
            
     MANIFEST $(
     ENDOFSTREAMCH=255;  ENDSTREAMCH=255;  BYTESPERWORD=3;  
     BYTESIZE=8;  BYTEBITS=8;  BYTEMAX=255; 
     $) 

//            END OF BCPL STANDARD HEADER   

*OUT(NHEAD0)
GLOBAL  $(        START:1 ;              ENTRYUSED:2 ;  
            INIT.X.REGS:3 ;                  SW.ON:4 ;  
                 SW.OFF:5 ; 
                SW.TEST:6 ;               SW.INVTT:7 ;  
                TY.HALT:8 ;             TY.DISPLAY:9 ;  
              TY.DELETE:10;           TY.CHAINPROG:11;  
                 FP.ADD:12;                 FP.SUB:13;  
                FP.MULT:14;                 FP.DIV:15;  
               FP.FLOAT:16;                 FP.FIX:17;  
           GENERAL.GIVE:18;                   CORE:19;  
                RSCLOCK:20;                RDCLOCK:21;  
             RSOVERFLOW:22;               OVERFLOW:23;  
                EXECUTE:24;      SYSTEM.DATA.BLOCK:25;  
                OVERLAY:26; 
        
        INITIALIZEIOVEC:39;           INITIALIZEIO:40;  
           CREATEOUTPUT:41;               FINDFILE:42;  
             CREATEFILE:43;                WRITECH:44;  
               ENDWRITE:45;                ENDREAD:46;  
                 READCH:47;              FINDINPUT:48;  
                 EOSMOD:49; 
            
             REPORTCALL:50;           REPORTRETURN:51;  
 REPORTMISSINGFUNCTIONS:52;                  TRACE:53;  
                UNTRACE:54; 

                 OUTPUT:55;                MONITOR:56;  
                  INPUT:57;                     CH:58;  
            
                 NEXTCH:59  
                 WRITES:60;                 WRITEC:61;  
                 WRITEN:62;                NEWLINE:63;  
                WRITEPN:64; 
            
             PACKSTRING:66;           UNPACKSTRING:67;  
                    RCH:68;                  READN:69;  
                 REPORT:70;            REPORTCOUNT:71;  
              REPORTMAX:72; 
            
                 WRITED:75;                 WRITEF:76;  
                 WRITEO:77;               WRITEOCT:77;  
            
             STANDARDIO:78;              TERMINATE:79;  

          REPORTGLOBALS:90;       REPORTSTACKSTATE:91;  
             PROGRAMMAP:92;                 GIVEUP:93;  
                   DUMP:94; 

                PROGRAM:100;          $)
            
     MANIFEST $(
     ENDOFSTREAMCH=255;  ENDSTREAMCH=255;  BYTESPERWORD=3;  
     BYTESIZE=8;  BYTEBITS=8;  BYTEMAX=255; 
     $) 


*OUT(NHEAD2)
////    START OF "NHEAD2"    [   MODIFIED OXFORD FREE STORE SYSTEM   ]  


GLOBAL $(   
NEWVEC :80;  NEWWORD :81;  RETURNVEC :82;  RETURNWORD :83;  
NEWFREESTORE :84;  RESTOREFREESTORE :85;
SETUPVECASFREESTORE :86;  FS:87;
REPORTFREESTORESTATE :88;   
FSERR :89;  
$)  


////    END OF "NHEAD2"    [   MODIFIED OXFORD FREE STORE SYSTEM   ]
*OUT(CGHEAD)
////   START OF       "CGHEAD"  
GLOBAL $(   DATAV:100; TEMPV:101; LABV:102  
            DATAP:104   
            NEXTCELL:107
            ARG1:108; ARG2:109; SSP:110 
STVQ:111
            FULL:112
            V1:113; V2:114; V3:115; VP:116; VD:117; VG:118  
            OP:123  
         OPTION:125 
            BSWIT:129   
            BSAVE:130; BRETU:131; BKORE:132; BFINI:133; BEXEC:134   
            GCUE:137; SCUE:138  
            GMAX:139
            BATABLE:140; CUECHAIN:141   
            GREL:142
            SEG:143; SEGMAX:144; GVEC:145   
            LIBLIST:146; SEGNAME:147
         $) 
GLOBAL $(   
TY.HALT:8;  TY.DISPLAY:9;  TY.DELETE:10;  TY.CHAINPROG:11;  
                                                WRITECH:44; 
         READCH:47  
OUTPUT:55;  MONITOR:56;  INPUT:57;  
CH:58   
WRITES:60;  WRITEC:61;  WRITEN:62;  NEWLINE:63;  WRITEPN:64;
PACKSTRING:66;  UNPACKSTRING:67;
RCH:68; READN:69
REPORT:70;  REPORTCOUNT:71;  REPORTMAX:72;  
WRITED:75;  WRITEF:76;  WRITEO:77;  WRITEOCT:77;
RKCODE:160; LOSE1:161;STACK:162; CGSTART:163; CGEND:164; CGSTRING:165   
 MOVETOANYR:166; MOVETOANYIR:167; INR:168; INIR:169; ISZERO:170 
  ISCONST:171   
        MOVETO:172; MOVETOR:173; MOVETOIR:174; ADDR:175;
 FILLA:176; SET:177; CELLC:179; OUTINSTR:180; COMPILE:181; ASSEMBLE:182 
COMPLP:183; CGJTJF:184; COMPNUM:185; COMPAD:186 
         B.A.SET:188
            WRLAB:195; WROPCODE:196;LSPACE=197; STORE:198;STOREI:199;   
STORET:200; STOREIN:201; ISFREE:202 
NEXTR:205; NEXTIR:206; FRER:207;                        LOADT:210   
INITSTACK:211; CELL:212;              LOADLV:214;CGPLUS:215 
CGREL:217; CGSHIFT:218; CGLOGOP:219; CGSWITCH:220; CGAPPLY:221; 
CGGLOBAL:222; CGENTRY:223; SCAN:224; CG1900:225; CELLL:226  
READOP:229  
READL:231   
CGDIV.OR.REM:234; CGMULT:235; CGRV:236;CGMINUS:237  
            NEWCELL:238; WRITECUES:239  
            SCSTART:240; SCEND:241; CREATESEMICOMPFILE:242  
            CLOSESEMICOMPFILE:243   
            LIST:244; FREECELL:245; APPENDN:246; STRING:247 
            SCF1:248; SCF5:249; SCFIELD:250 
            NEWRECORD:251; ENDRECORD:252; SLCUEREC:253  
            TITLEREC:254; TERMINREC:255 
            PACK1900:256
            PRIORITYNAMEREC: 257
            BRANCHAHEAD:258 
            EMPTY:259   
$)  
GLOBAL $(   
SWAP:270
CREATECOSYFILE:271;CLOSECOSYFILE:272; OPENSUBFILE: 273; CLOSESUBFILE:274
            INPUTFILE:278   
            PLANFILE:279; SEMICOMPFILE:280  
$)  
GLOBAL $( GXV:341;  
          GSEG:342  
          GPLFV:344; GSCFV:345; GBINV:346; GNAMEV:347   
       $)   

MANIFEST $( NONE = -1        // FOR EMPTY REGISTER FIELDS   
            DREL = #44                                     // LOWER PRESET  
            PREL = #53                                     // PROGRAM   
            ABS = #40   
            NUMBER = 1; CONST = 2; LCONST = 3; LABEL = 4; LOCAL = 5 
            IREG = 6; XREG = 7  
            H1 = 0; H2 = 1; H3 = 2; H4 = 3; H5 = 4  
            TEMPSIZE = 5
            LABT = 250  
            TEMPT= 250  
            DATAT= 250  
            FREET= 250  
            LP = #44;       LPI = #64   
            PR = #53;       PRI = #73   
            R1 = #54;       R1I = #74   
            R4 = #57;       R4I = #77   
            VA1 = #10; VA2 = #11; VA3 = #12; VA4 = #13  
            AU = #14
            END = #04   
            MSK = #00   
         $) 


MANIFEST $( DIRECT = #04000000                   // ADD TO CHANGE X TO N
            LDX = #00000000; ADX = #00040000; NGX = #00100000; SBX = #00140000  
            STO = #00400000 
            ANDX = #01000000; ORX = #01040000; ERX = #01100000  
            TXU = #01300000; TXL = #01340000
            STOZ = #01540000
            MPY = #02000000 
            DVS = #02300000 
            BZE = #02400000; BNZ = #02500000; BPZ = #02600000; BNG = #02700000  
            CALL = #03400000; EXIT = #03500000  
            BRN = #03600000 
            BCS = #53600000; BCC = #63600000
            LDN = #04000000; ADN = #04040000; NGN = #04100000; SBN = #04140000  
            SLL = #04402000 
            SRL = #04502000 
            ANDN = #05000000; ORN = #05040000; ERN = #05100000; NULL = #05140000
         $) 

MANIFEST  $(          // CODE SYMBOL REPRESENTATION 
C.TRUE=4;   C.FALSE=5   
C.RV=8  
C.FNAP=10;   C.MULT=11;   C.DIV=12;   C.REM=13;  C.PLUS=14;  C.MINUS=15 
C.NEG=17
C.EQ=20;   C.NE=21;   C.LS=22;   C.GR=23;   C.LE=24;   C.GE=25  
C.NOT=30;   C.LSHIFT=31;   C.RSHIFT=32;   C.LOGAND=33;  C.LOGOR=34  
C.EQV=35;   C.NEQV=36;  
C.LP=40;   C.LG=41;   C.LN=42;   C.LSTR=43;   C.LL=44   
C.LLP = 45  
C.LLG=46;   C.LLL=47;   
C.RTAP=51  ; C.GOTO=52  
C.FINISH=68;         C.SWITCHON=70; 
C.GLOBAL= 76
C.SP=80;   C.SG=81;   C.SL=82;   C.STIND=83 
C.JUMP=85;   C.JT=86;   C.JF=87 
C.LAB=90;   C.STACK=91;   C.STORE=92;   C.RSTACK=93;   C.ENTRY=94;  
C.SAVE=95; C.FNRN=96;   C.RTRN=97;   C.RES=98   
C.DATALAB=100;   C.ITEML=101;   C.ITEMN=102 ;  C.ERROR=103  
C.END=104       ;  C.STOP=105   
$)  
GLOBAL $(   
          WRITEBUCKET:400   
          WRITESTEERINGBUCKET:401   
          WRITEMASTERSEGMENT:402
       $)   
////   END OF "CGHEAD"  
*OUT(NHEAD1)
////    START OF "NHEAD1"   


GLOBAL $(   
ENTRYUSED:2;
SW.ON:4;  SW.OFF:5;  SW.TEST:6;  SW.INVTT:7;
FP.ADD:12;  FP.SUB:13;  FP.MULT:14;  FP.DIV:15; 
FP.FLOAT:16;  FP.FIX:17;
INITIALIZEIO:40;
CREATEOUTPUT:41;  WRITECH:44;   
ENDWRITE:45;  ENDREAD:46;  READCH:47;  FINDINPUT:48;
$)  

MANIFEST $( 
ENDOFSTREAMCH=255;  ENDSTREAMCH=255;  BYTESPERWORD=3;   
BYTESIZE=8;  BYTEBITS=8;  BYTEMAX=255;  
$)  

GLOBAL $(   
OUTPUT:55;  MONITOR:56;  INPUT:57;  
WRITES:60;  WRITEC:61;  WRITEN:62;  NEWLINE:63;  WRITEPN:64;
PACKSTRING:66;  UNPACKSTRING:67;
REPORT:70;  REPORTCOUNT:71;  REPORTMAX:72;  
WRITED:75;  WRITEF:76;  WRITEO:77;  WRITEOCT:77;
$)  


////    END OF "NHEAD1" 
*OUT(NHEAD4)
//  
//          START OF 'NHEAD4'   
//  
//          GLOBALS FOR LIST PROCESSING ROUTINES 'LIB4' 
//  
GLOBAL $(   
            INITIATE:150;   BASES:151;  
            PRESERVE:152;   ACHTUNG:153;
             WARNING:154;   STANDARDWARNING:155 
                ANTE:156;   POST:157;   
               SETUP:158;   CONS:159;   
                  HD:160;   TL:161; 
               VALUE:162;   ATOM:163;   
                 EQU:164;   NULL:165;   
               SETHD:166;   SETTL:167;  
            SETVALUE:168;   $)  
//  
MANIFEST $( FREEITEM = -1; ATOMLINK = -2; NIL = 0 $)
//  
//    **** WARNING THESE MANIFESTS MAY BE INCORRECT *** 
//          END OF 'NHEAD4' 
//  
*OUT(TRNHEAD)   
////    START OF "TRNHEAD"  


GET "NHEAD0"


MANIFEST $(   // AE OPERATORS AND SYMBOLS   
S.NUMBER=1; S.NAME=2; S.STRING=3; S.TRUE=4; S.FALSE=5   
S.VALOF=6; S.LV=7; S.RV=8; S.VECAP=9; S.FNAP=10 
S.MULT=11; S.DIV=12; S.REM=13; S.PLUS=14; S.MINUS=15; S.CHAR=16; S.NEG=17   
S.EQ=20; S.NE=21; S.LS=22; S.GR=23; S.LE=24; S.GE=25
S.NOT=30; S.LSHIFT=31; S.RSHIFT=32; S.LOGAND=33; S.LOGOR=34 
S.EQV=35; S.NEQV=36; S.COND=37; S.COMMA=38; S.TABLE=39  

S.AND=40; S.VALDEF=41; S.VECDEF=42; S.CONSTDEF=43   
S.FNDEF=44; S.RTDEF=45  

S.ASS=50; S.RTAP=51; S.GOTO=52; S.RESULTIS=53   
S.COLON=54  
S.TEST=55; S.FOR=56; S.IF=57; S.UNLESS=58   
S.WHILE=59; S.UNTIL=60; S.REPEAT=61; S.REPEATWHILE=62   
S.REPEATUNTIL=63; S.BREAK=66; S.RETURN=67; S.FINISH=68  
S.SWITCHON=70; S.CASE=71; S.DEFAULT=72  
S.SEQ=73; S.LET=74; S.MANIFEST=75; S.GLOBAL=76  
S.LOCAL=77; S.LABEL=78; S.STATIC=79 
$)  

GLOBAL $( CHARCODE:127; OPTION:128  $)  

MANIFEST $(    //  SELECTORS
H1=0; H2=1; H3=2; H4=3; H5=4; H6=5; 
$)  

MANIFEST $( 
S.LP=40; S.LG=41; S.LN=42; S.LSTR=43; S.LL=44   
S.LLP=45; S.LLG=46; S.LLL=47

S.SP=80; S.SG=81; S.SL=82; S.STIND=83   
S.JUMP=85; S.JT=86; S.JF=87 
S.LAB=90; S.STACK=91; S.STORE=92; S.RSTACK=93; S.ENTRY=94   
S.SAVE=95; S.FNRN=96; S.RTRN=97; S.RES=98; S.RESLAB=99  
S.DATALAB=100; S.ITEML=101; S.ITEMN=102  $) 

GLOBAL $( PLIST:152  $) 

GLOBAL  $(  
TRANS:200; DECLNAMES:201; DECLDYN:202; DECLSTAT:203 
CHECKDISTINCT:204; ADDNAME:205; CELLWITHNAME:206
TRANSDEF:207; SCANLABELS:208; DECLLABELS:209
TRANSREPORT:210; JUMPCOND:220; TRANSSWITCH:221  
ASSIGN:230; LOAD:231; LOADLV:232; LOADLIST:233; COMPDATALAB:234 
EVALCONST:235   
COMPLAB:240; COMPJUMP:241; COMPENTRY:242
NEXTPARAM:243; PARAMNUMBER:244; COMPILEAE:245   

DVEC:260; DVECS:261; DVECE:262; DVECP:263; DVECT:264
CASETABLE:265; CASEB:266; CASEP:267; CASET:268  
CURRENTBRANCH:270   
BREAKLABEL:271; RESULTLABEL:272; DEFAULTLABEL:273; STATLABEL:274
SSP:280; VECSSP:281; SAVESPACESIZE:282  
GLOBDECL:285; GLOBDECLS:286; GLOBDECLT:287  
COMCOUNT:288   $)   

GLOBAL  $(  
OUT1:290; OUT2:291; OUT2P:292   
OUT3:293; OUT3P:294 
OUTN:295; OUTL:296; OUTC:297
WRITEOP:298   $)

GLOBAL $(  // EXTRA GLOBALS FOR THE QMC COMPILER
LOOPLABEL:320; ENDCASELABEL:321;
OUTLABEL:321;   
$)  

MANIFEST $(  // EXTRA MANIFESTS FOR THE QMC COMPILER
S.LOOP=401; 
S.ENDCASE=402;  
S.OUT=402;  
S.IFSO=411; 
S.IFNOT=412;
S.BY=421;   
S.NIL=431;  
S.SELECTON=441; 
S.REP=451;  
S.EXTERNAL=461; 
$)  


////    END OF "TRNHEAD"
*OUT(TSYNHEAD)  
////    START OF "TSYNHEAD" 


GET "NHEAD0"


MANIFEST $(   // AE OPERATORS AND SYMBOLS   
S.NUMBER=1; S.NAME=2; S.STRING=3; S.TRUE=4; S.FALSE=5   
S.VALOF=6; S.LV=7; S.RV=8; S.VECAP=9; S.FNAP=10 
S.MULT=11; S.DIV=12; S.REM=13   
S.PLUS=14; S.MINUS=15; S.CHAR=16; S.NEG=17  
S.EQ=20; S.NE=21; S.LS=22; S.GR=23; S.LE=24; S.GE=25
S.NOT=30; S.LSHIFT=31; S.RSHIFT=32; S.LOGAND=33; S.LOGOR=34 
S.EQV=35; S.NEQV=36; S.COND=37; S.COMMA=38; S.TABLE=39  

S.AND=40; S.VALDEF=41; S.VECDEF=42; S.CONSTDEF=43   
S.FNDEF=44; S.RTDEF=45  

S.ASS=50; S.RTAP=51; S.GOTO=52; S.RESULTIS=53   
S.COLON=54  
S.TEST=55; S.FOR=56; S.IF=57; S.UNLESS=58   
S.WHILE=59; S.UNTIL=60; S.REPEAT=61; S.REPEATWHILE=62   
S.REPEATUNTIL=63; S.BREAK=66; S.RETURN=67; S.FINISH=68  
S.SWITCHON=70; S.CASE=71; S.DEFAULT=72  
S.SEQ=73; S.LET=74; S.MANIFEST=75; S.GLOBAL=76; S.STATIC=79 
$)  

MANIFEST $(  // OTHER CANONICAL SYMBOLS 
S.BE=89; S.END=90;  S.LSECT=91; S.RSECT=92; S.GET=93
S.SEMICOLON=97; S.INTO=98; S.TO=99; S.DO=101; S.OR=102  
S.VEC=103; S.LPAREN=105; S.RPAREN=106; S.OCT=109
$)  

GLOBAL $(   // GLOBALS USED IN PP   
DECVAL=98; OCTVAL=99
LINE=100; LINEP=101; LINEMAX=102
GETV=103; GETP=104; GETT=105
WORDV:106; LENGTH:107; WORDLENGTH:108; WORD:109 
P1=110; P2=111; P3=112; PACKCH=113; PACKLENGTH=114  
SYMB:115; WORDNODE:116; CH:117; RDTAG:118; LVCH:119 
NEXTSYMB:120; DECLSYSWORDS:121; NLPENDING:122   
LOOKUPWORD:125; RCH:126; PPTRACE:127; OPTION:128
RDLINE:130; WRLINE:131; LINELENGTH:132; LINECOUNT:133   
$)  

GLOBAL $(  // GLOBALS USED IN CAE   
RDBLOCKBODY:140; RDSECT:141 
RNAMELIST:142; RNAME:143
REXP:144; RDEF:145; RCOM:146
RDCDEFS:147; NAMETREE:148; ERRORNAME:149
FORMTREE:150; CAEREPORT:151; PLIST:152  
CHECKFOR:153; IGNORE:154; PERFORMGET:155

LIST1:161; LIST2:162; LIST3:163; LIST4:164; LIST5:165; LIST6:166;   
NEWVEC:167; TREEP:168; TREEVEC:169; 
$)  

MANIFEST $(  // SELECTORS   
H1=0; H2=1; H3=2; H4=3; H5=4; H6=5; 
$)  

GLOBAL $(  // EXTRA GLOBALS FOR THE QMC COMPILER
MEDIUM:301;  OUTPUTT:302;  TREEDEPTH:303;   
POUND.EQUALS.DOLLAR:305;  DOLLAR.EQUALS.POUND:306;  
SWITCH:310; 
WRITESCH:315;  WRITESS:316;  WRITESC:317;   
COMCOUNT1:330;  
SEGCOUNT:332;  NEXTSEGNO:333;   
$)  

MANIFEST $(  // EXTRA MANIFESTS FOR THE QMC COMPILER
S.HASH=115; 

S.LOOP=401; 
S.ENDCASE=402;  
S.OUT=402;  
S.IFSO=411; 
S.IFNOT=412;
S.BY=421;   
S.NIL=431;  
S.SELECTON=441; 
S.REP=451;  
S.EXTERNAL=461; 
$)  


////    END OF "TSYNHEAD"   
*FIN
****

