*COMDECK MALETPL
          EJECT 
          QUAL   MALETPL
          IFNE   CMSE,0,1 
          USE    MODD 
 MODD     VFD    30/1,6/LCN1,6/KEY2,18/0  CW FOR PL PRODUCT OVERLAY 
          USE    *
  
*         LENGTHS AND ADDRESSES OF PPU BUFFERS ARE DEFINED BELOW. 
*         THESE VALUES MUST BE KEPT IN PRODUCT OVERLAY ORDER AND
*         MUST ALWAYS AGREE WITH THE ACTUAL VALUES IN THE PPU 
*         PRODUCT OVERLAYS. 
  
          IFNE   CMSE,0,1 
          USE    P0OB 
 PEOB     DATA   505B        MAX VALUE FOR OB FOR PL OVERLAY (LCN1 I/O) 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0OBFWA
          DATA   6105B             RELATIVE FWA OF OB 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0IB 
 PEIB     DATA   505B        MAX VALUE FOR IB FOR PL OVERLAY (LCN1 I/O) 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0IBFWA
          DATA   5400B             RELATIVE FWA OF IB 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SB 
 PESB     DATA   61B         MAX VALUE FOR SB FOR PL OVERLAY (LCN2 I/O) 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SBFWA
          DATA   6612B             RELATIVE FWA OF SB 
          USE    *
          EJECT 
*         PL (LCN2 HIGH-LEVEL) PRODUCT OVERLAY ENTRY POINTS.
  
 RELPE    EQU    0
 RESPE    EQU    1
 AUTOPE   EQU    2
 CONNPE   EQU    3
 FNCPE    EQU    4
 MEMPE    EQU    5
 STATPE   EQU    6
 MAINF    EQU    7
  
*         EQUATES FOR IB,OB,SB FOR LCN2 
  
 IB       EQU    6500B-1100B ADDRESS OF IB
 OB       EQU    7205B-1100B ADDRESS OF OB
 SB       EQU    7712B-1100B ADDRESS OF SB
          IFNE   CMSE,0,1 
          USE    PKEY 
          VFD    24/0,18/LLCN,18/TLCN 
 LCN1     EQU    *-PKEY+PKEYOFF 
          USE    *
  
*         LEGAL LCN2-HIGH-LEVEL I/O STATEMENTS TABLE. 
  
 TLCN     VFD    42/7LAUTODMP,18/PEAUTO 
          VFD    42/5LMAINT,18/PEMAINT
          VFD    42/6LMEMORY,18/PEMEM 
          VFD    42/3LREL,18/PEREL
          VFD    42/3LRES,18/PERES
          VFD    42/5LSTART,18/PESTAR 
          VFD    42/6LSTATUS,18/PESTAT
          VFD    42/4LSTEP,18/PESTEP
 LLCN     EQU    *-TLCN 
          EJECT 
  
*         DISPLAY VALUES USED 
  
 DASCII   VFD    60/5LASCII 
 DBACK    VFD    60/4LBACK
 DBINARY  VFD    60/6LBINARY
 DBUFFER  VFD    60/6LBUFFER
 DCODE    VFD    60/4LCODE
 DCON     VFD    60/7LCONTROL 
 DDATA    VFD    60/4LDATA
 DFLUSH   VFD    60/5LFLUSH 
 DFUNC    VFD    60/8LFUNCTION
 DLTA     VFD    60/3LLTA 
 DLOOPB   VFD    60/8LLOOPBACK
 DMAINT   VFD    60/5LMAINT 
 DMARK    VFD    60/4LMARK
 DMSG     VFD    60/3LMSG 
 DNAD     VFD    60/3LNAD 
 DNAMED   VFD    60/5LNAMED 
 DPATH    VFD    60/4LPATH
 DRD      VFD    60/2LRD
 DREAD    VFD    60/4LREAD
 DREJ     VFD    60/8LREJECTED
 DREMOTE  VFD    60/6LREMOTE
 DSEL     VFD    60/8LSELECTED
 DSHORT   VFD    60/5LSHORT 
 DSTRING  VFD    60/6LSTRING
 DWDS     VFD    60/3LWDS 
 DWITH    VFD    60/4LWITH
 DWR      VFD    60/2LWR
 DWRITE   VFD    60/5LWRITE 
          EJECT 
 PEAUTO   TITLE  PEAUTO - PROCESS HIGH-LEVEL LCN AUTODMP STATEMENT. 
**        PEAUTO - PROCESS HIGH-LEVEL LCN AUTODMP STATEMENT.
* 
*         G. L. GOLDEN. 80/03/08. 
* 
*         THE FOLLOWING FORMAT IS USED FOR THE AUTODMP COMMAND. 
* 
*          AUTODMP N WORDS FROM R TO Y
*          AUTODMP N WORDS FROM R TO Y ABT Z
*          AUTODMP N WORDS FROM R/S TO Y
*          AUTODMP N WORDS FROM R/S TO Y ABT Z
* 
*             N       R/S     Y      Z
*           ------  ------   ---   -----
*           1-505B   BUF      IB   0-77B
*           1-325D   REG           0-63D
*           REG      0-81536D 
*           BUF      0-177777B
*                    0-FFFFH
* 
*         ENTRY 
* 
*           CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT
* 
*           . MODULE = BINARY PPU CODE GENERATED FOR THE SOURCE.
*           . FCERR COMPILER ERROR FLAG SET IF COMPILER ERROR CREATED.
* 
*         ROUTINES CALLED -  CSTOREB. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1, 3.
*         X - 0, 1, 3.
*                B - 7. 
* 
 PEAUTO   SA1    LCOMM
          BX0    X1 
          RJ     CSTOREB     SAVE GENERATED CODE
          RJ     CRKNRS      CRACK FOR N REG/CONST
          SX0    STD+PA+6 
          RJ     CSTOREB     SAVE GENERATED CODE
          SA3    A3+B1
          SA1    DFROM
          BX1    X1-X3
          NZ     X1,COM30    ERROR IF NOT FROM
          RJ     CRKRS       CRACK FOR R/S
          RJ     CRKIB       CRACK FOR IB 
          SX0    STD+PA+7 
          SB7    AUTOPE 
          EQ     LCOM9       ENTER COMMON SEQUENCE
          EJECT 
 PEMAINT  TITLE  PEMAINT- PROCESS THE HIGH LEVEL LCN MAINT COMMAND. 
**        PEMAINT- PROCESS THE HIGH LEVEL LCN MAINT COMMAND.
* 
*         G. L. GOLDEN 80/06/10.
* 
*         THE FOLLOWING FORMAT IS USED FOR THE MAINT COMMAND. 
* 
*         MAINT READ N WORDS TO Y 
*         MAINT READ N WORDS TO Y ABT Z 
*         MAINT FUNCTION M WITH N WORDS FROM X
*         MAINT FUNCTION M WITH N WORDS FROM X ABT Z
* 
*                      M   X    Y     N     Z 
*                     --- ---- ---- ------ -----
*                      OB  OB   IB  1-505B 0-77B
*                      IB            BUF   0-63D
*                     REG.           REG
*                    CONST. 
* 
*         ENTRY 
* 
*           CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT
* 
*           . MODULE = BINARY PPU CODE GENERATED FOR THE SOURCE.
*           . FCERR COMPILER ERROR FLAG SET IF COMPILER ERROR CREATED.
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 PEMAINT  SA1    LCOML
          BX0    X1 
          RJ     CSTOREB     SAVE GENERATED CODE  LDN 5    STD PA+55B 
  
*         CRACK FOR FUNCTION
  
          SB7    B1          FLAG MAINTENANCE FUNCTION
          SA1    DFUNC
          BX1    X3-X1
          NZ     X1,COM30    ERROR IF NOT FUNCTION
          SA1    LCOMB       CW FOR IB/OB/REG 
          RJ     CRKLOD      GENERATE CODE FOR M
          SX0    STD+PA+1    SAVE FUNCTION IN PA+1
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    DWITH
          BX1    X1-X3
          NZ     X1,COM30    ERROR IF NOT WITH
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          RJ     CRKNRS      CRACK FOR N REG/BUF/CONST
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          RJ     CRKOB       CRACK FOR OB 
          SA1    PEMAB
          BX0    X1 
          RJ     CABSPPU
          RJ     CSTOREB     SAVE GENERATED CODE
          SX0    STD+PA+7 
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    PEMAC
          BX0    X1 
          SB7    MAINF
          EQ     LCOM9       ENTER COMMON SEQUENCE
  
 PEMAA    VFD    12/LDC,12/1442B,12/STD+PA+1,12/LDN,12/STD+PA+55B 
 PEMAB    VFD    12/LDC,12/500B,12/STD+PA+6,12/LDC,12/IB
 PEMAC    VFD    36/0,12/LDN+0,12/STD+PA+5
          EJECT 
 PEMEM    TITLE  PEMEM - PROCESS THE HIGH-LEVEL LCN MEMORY COMMAND
**        PEMEM - PROCESS THE HIGH-LEVEL LCN MEMORY COMMAND.
* 
*         G. L. GOLDEN. 80/03/08. 
* 
*         THE FOLLOWING FORMAT IS USED FOR THE MEMORY COMMAND.
* 
*          MEMORY READ W M WORDS FROM R TO Y
*          MEMORY READ T N WORDS FROM R TO Y
*          MEMORY READ W M WORDS FROM R/S TO Y
*          MEMORY READ T N WORDS FROM R/S TO Y
*          MEMORY READ W M WORDS FROM R TO Y ABT Z
*          MEMORY READ T N WORDS FROM R TO Y ABT Z
*          MEMORY READ W M WORDS FROM R/S TO Y ABT Z
*          MEMORY READ T N WORDS FROM R/S TO Y ABT Z
*          MEMORY WRITE X M WORDS TO R FROM V 
*          MEMORY WRITE U N WORDS TO R FROM V 
*          MEMORY WRITE X M WORDS TO R/S FROM V 
*          MEMORY WRITE U N WORDS TO R/S FROM V 
*          MEMORY WRITE X M WORDS TO R FROM V ABT Z 
*          MEMORY WRITE U N WORDS TO R FROM V ABT Z 
*          MEMORY WRITE X M WORDS TO R/S FROM V ABT Z 
*          MEMORY WRITE U N WORDS TO R/S FROM V ABT Z 
* 
*          N      R/S      T      U      V   Y    Z      M     X      W 
*        -----  ------   -----  ------  --- --- ----- ------  ----  ----- 
*        1-505B  REG.    STRING  STRING  OB  IB 0-77B 1-505B   6/8   8/6
*        1-325D  BUF.     64/60   60/64         0-63D 1-325D  12/8   8/12 
*                0-177777B                              BUF   12/16 16/12 
*                0-FFFFH                                REG 
* 
* 
*         ENTRY 
* 
*           CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT
* 
*           . MODULE = BINARY PPU CODE GENERATED FOR THE SOURCE.
*           . FCERR COMPILER ERROR FLAG SET IF COMPILER ERROR CREATED.
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1, 3, 6. 
*         X - 0, 1, 3, 5, 6.
*                B - 7. 
* 
 PEMEM    SA1    DREAD
          BX1    X3-X1
          MX7    0           FLAG MEMORY READ 
          ZR     X1,PEM2     IF MEMORY READ 
          SA1    DRD
          BX1    X3-X1
          ZR     X1,PEM2     IF MEMORY RD 
          SA1    DWRITE 
          BX1    X3-X1
          ZR     X1,PEM1     IF MEMORY WRITE
          SA1    DWR
          BX1    X3-X1
          NZ     X1,COM30    IF SYNTAX ERROR
 PEM1     SX7    B1          FLAG WRITE 
 PEM2     SA7    PEMA        SAVE WRITE/READ FLAG 
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE PCRK POINTER
          SX5    B1          (X5) = 1 FLAG 4 PP = 3 NAD WORDS 
          NZ     X7,PEM7     IF MEMORY WRITE
  
*         CRACK MEMORY READ COMMANDS
  
*         CRACK FOR STRING
  
          SX0    LDN
          SA1    DSTRING
          BX1    X1-X3
          ZR     X1,PEM11    IF READ STRING 
          SA1    PEMRD-1     (A1)=POINTER TO READ TABLE 
          EQ     PEM8        ENTER COMMON SEQUENCE
  
*         CRACK MEMORY WRITE COMMANDS 
  
*         CRACK FOR STRING
  
 PEM7     SX0    LDN+21B
          SA1    DSTRING
          BX1    X1-X3
          ZR     X1,PEM11    IF STRING
          SA1    PEMWR-1     (A1) = POINTER TO WRITE TABLE
 PEM8     SA1    A1+B1       GET TABLE ENTRY
          ZR     X1,COM30    IF END OF TABLE
          MX0    12 
          BX5    X0*X1       (X5)=EXPECTED DATA 
          BX5    X3-X5
          NZ     X5,PEM8     LOOP TO END OF TABLE 
          SA3    A3+B1
          SX3    X3-1R/ 
          NZ     X3,COM30    ERROR IF NOT DISPLAY CODE /
          SA3    A3+B1       INCREMENT A3 
          LX1    12 
          BX5    X0*X1       (X5) = EXPECTED DATA 
          BX5    X3-X5
          ZR     X5,PEM9
          SA1    A1+B1
          LX1    12 
          BX5    X0*X1       (X5) = EXPECTED DATA 
          BX5    X3-X5
          NZ     X5,COM30    IF NO MATCH
 PEM9     LX1    12 
          BX5    X0*X1       (X5) = DATA TYPE KEY 
          LX5    12          POSITION CONVERSION MODE CODE
          LX1    12 
          BX0    X0*X1
          LX0    12          (X0) = LDN+FUNCTION+CODE 
  
 PEM11    SX1    STD+PA+1 
          LX0    12 
          BX0    X0+X1
          BX6    X5 
          SA6    PEMB        SAVE CONVERSION MODE FOR NAD/PP WORDS
          RJ     CSTOREB
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE PCRK
  
*         CRACK FOR VALUE N 
  
          SA1    PEMB        GET CODE FOR PP/NAD WORD COUNT 
          ZR     X1,PEM18    IF NO DIFFERENCE  PP/NAD WORDS 
          SX1    X1-1 
          NZ     X1,PEM12    IF NOT MULTIPLY BY 3/4 
          RJ     CRKN        CRACK FOR N
          IX2    X4+X4
          IX4    X2+X4
          AX4    2           DIVIDE BY 4
          NZ     X4,PEM14    IF NEW VALUE NON ZERO
          SX4    B1          SET IT TO 1
          EQ     PEM14
  
 PEM12    SX1    X1-1 
          NZ     X1,PEM13    IF NOT MULTIPY BY 1/2
          RJ     CRKNR       CRACK FOR N REG/BUF/CONST
          SX1    SHN+76B     SHN -1 TO MULTIPLY BY 1/2
          LX0    12 
          BX0    X0+X1
          EQ     PEM18A 
  
 PEM13    SX1    X1-1 
          NZ     X1,COM30    ERROR CONVERSION TYPE WRONG
          RJ     CRKN        CRACK FOR N
          SX1    4
          IX4    X4*X1
          SX1    5
          IX4    X4/X1
          NZ     X4,PEM14    IF VALUE NOT ZERO
          SX4    B1          SET IT TO ONE FOR LENGTH 
 PEM14    SX1    LDC
 PEM15    LX0    12 
          MX6    -6 
          BX6    X6*X4
          NZ     X6,PEM16    IF VALUE NOT LESS THAN 77B 
          SX1    X4+LDN 
          BX0    X0+X1       CODE LDN N 
          EQ     PEM17
  
 PEM16    BX0    X0+X1
          LX0    12 
          BX0    X0+X4
 PEM17    RJ     CSTOREB     SAVE GENERATED CODE
          EQ     PEM18A 
  
 PEM18    RJ     CRKNR       CRACK FOR N REG/CONST/BUF
  
 PEM18A   LX0    12 
          SX1    STD+PA+7 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED BINARY
  
*         CRACK FOR WORDS OR WRDS 
  
  
*         CRACK FOR DISPLAY CODE TO OR FROM 
  
 PEM19    SA1    PEMA        GET READ/WRITE FLAG
          NZ     X1,PEM20    IF WRITE REQUEST 
          SA1    DFROM
          EQ     PEM21
  
 PEM20    SA1    DTO
 PEM21    SA3    A3+B1       GET NEXT PARMETER
          BX1    X1-X3
          NZ     X1,COM30    IF NOT DISPLAY CODE TO OR FROM 
          RJ     CRKRS       CRACK FOR VALUE R/S
 PEM28    SA1    PEMA 
          NZ     X1,PEM29    IF WRITE REQUEST 
          RJ     CRKIB       CRACK FOR IB 
          EQ     PEM30
  
 PEM29    RJ     CRKOB       CRACK FOR OB 
 PEM30    SA1    LCOMH
          SB7    MEMPE       ENTRY FOR MEMORY COMMANDS
          EQ     LCOM8       PROCESS ABORT
  
 PEMA     DATA   0           READ/WRITE FLAG
 PEMB     DATA   0           DATA WORD FOR CONVERSION PP TO NAD WORDS 
  
*         TABLE FOR MEMORY READ 
  
 PEMRD    VFD    12/1L8,12/1L6,12/0,12/LDN+2,12/0 
          VFD    12/1L8,12/2L12,12/2,12/LDN+4,12/0
          VFD    12/2L16,12/2L12,12/0,12/LDN+6,12/0 
          VFD    12/2L64,12/2L60,12/3,12/LDN+10B,12/0 
          DATA   0
  
*         TABLE FOR MEMORY WRITE
  
 PEMWR    VFD    12/1L6,12/1L8,12/0,12/LDN+23B,12/0 
          VFD    12/2L12,12/1L8,12/2,12/LDN+25B,12/0
          VFD    12/2L12,12/2L16,12/0,12/LDN+27B,12/0 
          VFD    12/2L60,12/2L64,12/3,12/LDN+31B,12/0 
          DATA   0
          EJECT 
 PEREL    TITLE  PEREL - PROCESS THE HIGH-LEVEL LCN REL STATEMENT.
**        PEREL - PROCESS THE HIGH-LEVEL LCN REL STATEMENT. 
* 
*         G. L. GOLDEN. 80/03/08. 
* 
*         THE FOLLOWING FORMAT IS USED FOR THE REL COMMAND. 
*                             Z 
*          REL              ----- 
*          REL ABT Z        0-77B 
*                           0-63D 
* 
*         ENTRY 
* 
*           CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT
* 
*           . MODULE = BINARY PPU CODE GENERATED FOR THE SOURCE.
*           . FCERR COMPILER ERROR FLAG SET IF COMPILER ERROR CREATED.
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 PEREL    SB7    RELPE
          EQ     LCOM11 
          EJECT 
 PERES    TITLE  PERES - PROCESS THE HIGH-LEVEL LCN RES STATEMENT.
**        PERES - PROCESS THE HIGH-LEVEL LCN RES STATEMENT. 
* 
*         G. L. GOLDEN. 80/03/08. 
* 
*         THE FOLLOWING FORMAT IS USED FOR THE RES COMMAND. 
* 
*          RES
*          RES,ABT Z
*          RES PATH DB BUFFER X 
*          RES PATH DB BUFFER X,ABT Z 
*          RES PATH DB BUFFER X LTA Y 
*          RES PATH DB BUFFER X LTA Y,ABT Z 
*          RES MAINT PATH DA BUFFER X 
*          RES MAINT PATH DA BUFFER X,ABT Z 
* 
*                 A      B      X      Y       Z
*               -----  -----  -----  ------  -----
*                A-Z    0-9    0-2   1-177B  0-77B
*                              BUF   BUF     0-63D
*                              REG   REG
* 
*         ENTRY 
* 
*           CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT
* 
*           . MODULE = BINARY PPU CODE GENERATED FOR THE SOURCE.
*           . FCERR COMPILER ERROR FLAG SET IF COMPILER ERROR CREATED.
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 PERES    SB7    RESPE
          ZR     X3,LCOM11   IF END OF STATEMENT
          SA1    DABT 
          BX1    X1-X3
          ZR     X1,LCOM11   IF ABT 
          SX0    LDN+RESPE
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1       GENERATE ENTRY CODE FOR RES
          RJ     CSTOREB     SAVE GENERATED CODE
          SX6    A3 
          SA6    PERESE      SAVE POINTER TO CRKBUF 
 PERE1    SA1    DABT 
          SA3    A3+B1       GET NEXT PARAMETER 
          ZR     X3,PERE2    IF END OF COMMAND
          BX1    X1-X3
          NZ     X1,PERE1    IF NOT ABT 
 PERE2    SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          RJ     CRKABT 
          SA3    PERESE      GET POINTER TO CRKBUF
          SA3    X3 
          RJ     CRKCONN     CRACK REST OF STATEMENT
          SA1    PERESB 
          BX0    X1 
          RJ     CABSPPU     GENERATE LDN PECONN  STD PA  LCN 1  RJM POVL 
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    PERESC 
          BX0    X1          GENERATED LDM SB+1 
          RJ     CABSPPU
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    PERESD      GET LPC 177B  ADC 1600B  STD PA+1
          BX0    X1 
          RJ     CSTOREB
          SA1    CRKCOND     GET MAINT/NORMAL PATH FLAG 
          SX0    LDN+1
          NZ     X1,PERE3    IF NORMAL PATH 
          SX0    LDN+2
 PERE3    SX1    STM
          LX0    12 
          BX0    X0+X1
          LX0    12 
          SX1    SB+62B 
          BX0    X0+X1
          RJ     CABSPPU
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    PERESA 
          BX0    X1 
          RJ     CABSPPU
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     COM10       ENTER MAIN COMPILER
  
 PERESA   VFD    12/LDN+FNCPE,12/STD+PA,12/LCN+1,12/RJM,12/POVL 
 PERESB   VFD    12/LDN+CONNPE,12/STD+PA,12/LCN+1,12/RJM,12/POVL
 PERESC   VFD    36/0,12/LDM,12/SB+1
 PERESD   VFD    12/LPC,12/177B,12/ADC,12/1600B,12/STD+PA+1 
 PERESE   DATA   0           TEMP STORAGE FOR INDEX TO CRKBUF 
 PEPMCD   VFD    36/0,12/LDN+2,12/STD+PA+6
          EJECT 
 PESTAR   TITLE  PESTAR - PROCESS THE HIGH-LEVEL LCN START STATEMENT. 
**        PESTAR - PROCESS THE HIGH-LEVEL LCN START STATEMENT.
* 
*         G. L. GOLDEN. 80/03/08. 
* 
*         THE FOLLOWING FORMAT IS USED FOR THE START COMMAND. 
* 
*                             Z 
*          START            ----- 
*          START ABT Z      0-77B 
*                           0-63D 
* 
*         ENTRY 
* 
*           CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT
* 
*           . MODULE = BINARY PPU CODE GENERATED FOR THE SOURCE.
*           . FCERR COMPILER ERROR FLAG SET IF COMPILER ERROR CREATED.
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1. 
*                X - 0, 1.
*                B - NONE.
* 
 PESTAR   SA1    PESTAA 
          BX0    X1 
          SB7    OB 
          RJ     CRKABS      CONVERT OB TO BINARY ADDRESS AND STORE 
          SA1    PESTAB 
          BX0    X1 
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    PESTAC 
          BX0    X1 
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    PESTAD 
          BX0    X1 
          SB7    IB 
          RJ     CRKABS      CONVERT IB TO BINARY ADDRESS AND STORE 
          SX0    STD+PA+7 
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    PEPMCD 
          EQ     LCOM7A      ENTER COMMON SEQUENCE
  
 PESTAA   VFD    12/LDC,12/4302B,12/STD+PA+1,12/LDN+40B,12/STD+PA+55B 
 PESTAB   VFD    12/0,12/STD+PA+3,12/LDN+6,12/STD+PA+5,12/LDN+0 
 PESTAC   VFD    12/0,12/STM+PA+3,12/10B,12/STM+PA+3,12/11B 
 PESTAD   VFD    36/0,12/LDN+12B,12/STD+PA+2
          EJECT 
 PESTAT   TITLE  PESTAT - PROCESS THE HIGH-LEVEL LCN STATUS STATEMENT.
**        PESTAT -  PROCESS THE STATUS STATEMENT. 
* 
*         G. L. GOLDEN. 80/03/08. 
* 
*         THE FOLLOWING FORMAT IS USED FOR THE STATUS COMMAND.
* 
*                                             Z 
*          STATUS HARDWARE                  ----- 
*          STATUS HARDWARE ABT Z            0-77B 
*          STATUS CONTROL                   0-63D 
*          STATUS CONTROL ABT Z 
*          STATUS PATH
*          STATUS PATH ABT Z
*          STATUS NAD 
*          STATUS NAD ABT Z 
*          STATUS REMOTE NAD
*          STATUS REMOTE NAD ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - MODULE = BINARY PPU CODE GENERATED FOR THE SOURCE.
*               - FCERR ERROR FLAG SET IF COMPILER ERROR CREATED. 
* 
*         ROUTINES CALLED -  FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CLOADC - GEN. LOAD CONST. INSTRUCTIONS 
*                            CLOAD  - GEN. LOAD INSTRUCTIONS. 
*                            CSTOREB- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1, 3.
*                X - 0, 1, 3, 6.
*                B - 2, 7.
* 
 PESTAT   SB7    STATPE 
          SA1    LCOMK
          BX0    X1 
          RJ     CSTOREB     SAVE GENERATED CODE
          SB2    B0          (B2) = INDEX 
 STA1     SA1    STAA+B2
          ZR     X1,STA2     END OF TABLE AND NO MATCH
          BX1    X1-X3
          ZR     X1,STA3     IF MATCH FOUND 
          SB2    B2+B1
          EQ     STA1        LOOP THRU TABLE
  
 STA2     SA1    DREMOTE
          BX1    X1-X3
          NZ     X1,COM30    IF NOT REMOTE
          SA3    A3+B1
          SA1    DNAD 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT NAD 
          SB2    4           FLAG REMOTE NAD STATUS 
  
 STA3     SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          SX0    B2+LDN 
          SX1    STD+PA+1 
          LX0    12 
          EQ     LCOM8       ENTER COMMON 
  
 STAA     VFD    60/8LHARDWARE
          VFD    60/7LCONTROL 
          VFD    60/3LNAD 
          VFD    60/4LPATH
          VFD    60/0        END OF TABLE 
          EJECT 
 PESTEP   TITLE  PESTEP - PROCESS THE HIGH-LEVEL LCN STEP STATEMENT.
**        PESTEP - PROCESS THE HIGH-LEVEL LCN STEP STATEMENT. 
* 
*         G. L. GOLDEN. 80/03/08. 
* 
*         THE FOLLOWING FORMAT IS USED FOR THE STEP COMMAND.
* 
*                             Z 
*          STEP             ----- 
*          STEP ABT Z       0-77B 
*                           0-63D 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - MODULE = BINARY PPU CODE GENERATED FOR THE SOURCE.
*               - FCERR ERROR FLAG SET IF COMPILER ERROR CREATED. 
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1. 
*                X - 0, 1.
*                B - NONE.
* 
 PESTEP   SA1    PESTEPA
          BX0    X1 
          SB7    OB 
          RJ     CRKABS      CONVERT OB TO BINARY AND STORE 
          SA1    PESTEPB
          BX0    X1 
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    PESTEPC
          BX0    X1 
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    PESTEPD
          BX0    X1 
          SB7    IB 
          RJ     CRKABS      CONVERT IB TO BINARY AND STORE 
          SX0    STD+PA+7 
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    PEPMCD 
          EQ     LCOM7A      ENTER COMMON SEQUENCE
  
 PESTEPA  VFD    12/LDC,12/4301B,12/STD+PA+1,12/LDN+45B,12/STD+PA+55B,
 PESTEPB  VFD    12/0,12/STD+PA+3,12/LDN+7,12/STD+PA+5,12/LDN+0 
 PESTEPC  VFD    12/0,12/STM+PA+3,12/10B,12/STM+PA+3,12/11B 
 PESTEPD  VFD    36/0,12/LDN+12B,12/STD+PA+2
          EJECT 
 LCOM     TITLE  LCOMNN - COMMON CODE FOR LCN COMMANDS. 
**        LCOMNN - COMMON CODE FOR LCN COMMANDS.
* 
*         ENTRY - (B7) = COMMAND CODE.
*                 (A3) = INDEX INTO CRKBUF. 
*                 (X3) = NEXT WORD OF SOURCE TO CRACK.
* 
*         EXIT  - COM10 - IF NO ERRORS. 
*                 COM30 - IF SYNTAX ERRORS. 
* 
*         ROUTINES CALLED  -  FIND, CRKIB, CRKOB, CSTOREB, CRKABT,CRKABS
* 
*         USES   A - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 2. 
* 
  
 LCOM7A   SB7    FNCPE      COMMON ENTER FOR FUNCTION ROUTINE 
 LCOM8    BX0    X0+X1
 LCOM9    RJ     CSTOREB     SAVE GENERATED CODE
  
*         COMMON SEQUENCE.
  
 LCOM11   SX0    B7+LDN      LDN COMMAND CODE 
          SX1    STD+PA      STD PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE COMMAND CODE
          RJ     CRKABT 
          EQ     COM10       EXIT TO COMPILER 
  
 LCOMB    VFD    42/0,12/7777B,3/BUF2,3/REG2  CW FOR FUNC Y 
 LCOMC    VFD    42/0,12/77B,6/0              CW FOR Z
 LCOMD    VFD    42/0,12/505B,3/BUF2,3/REG2   CW FOR IN/OUT X 
 LCOME    VFD    54/0,3/BUF4,3/0              CW FOR IN/INB Y    (IB) 
 LCOMF    VFD    42/0,12/505B,6/0             CW FOR N
 LCOMG    VFD    54/0,3/BUF6,3/0              CW FOR OUT/OUTB Y  (OB) 
  
**                                              ACCESS  DEVICE
*                                               LEVEL   USED
  
 LCOMH    VFD    36/0,12/LDN+65B,12/STD+PA+55B   AL=5  DC=300 
 LCOMI    VFD    36/0,12/LDN+50B,12/STD+PA+55B   AL=10 DC=300,301 
 LCOMJ    VFD    36/0,12/LDN+45B,12/STD+PA+55B   AL=5  DC=300,301 
 LCOMK    VFD    36/0,12/LDN+40B,12/STD+PA+55B   AL=0  DC=300,301 
 LCOML    VFD    36/0,12/LDN+05B,12/STD+PA+55B   AL=5  DC=301 
 LCOMM    VFD    36/0,12/LDN+00B,12/STD+PA+55B   AL=0  DC=301 
          EJECT 
 CRKABS   TITLE  - CALL CABSPPU AND CSTOREB.
**        CRKABS - CALL CABSPPU AND CSTOREB.
* 
*         ENTRY  -   B7 = ADDRESS OF IB OR OB.
* 
*         EXIT   -   CRKCOND = 1 IF NOT MAINT PATH. 
*                    CRKCOND = 0 IF MAINT PATH. 
* 
*         CALLS  -   CABSPPU, CSTOREB.
* 
*         USES   -   A, NONE. 
*                    X, 0.
*                    B, NONE. 
* 
  
 CRKABS   DATA   0
          RJ     CSTOREB
          SX0    LDC
          SX1    B7 
          LX0    12 
          BX0    X0+X1
          RJ     CABSPPU      FORM LOAD OF DATA 
          RJ     CSTOREB
          EQ     CRKABS 
          EJECT 
 CRKABT   TITLE  CRKABT - CRACK FOR ABT Z.
**        CRKABT - CRACK FOR ABT Z. 
* 
*         ENTRY  - (A3) POINTS TO ABT IN CRKBUF.
*                  (X3) ABT IN DISPLAY CODE.
* 
*         EXIT   - (MODULE) = STORED BINARY FOR ABT ADDRESS.
* 
*         CALLS  - FIND, CLOADC, CPSN, CABSPPU, CSTOREB.
* 
*         USES   - A, 1, 3, 6.
*                  X, 0, 1, 2, 3, 6.
*                  B, NONE. 
* 
  
 CRKABT   DATA   0
          SX0    LDN         DEFAULT IF ABT IS NOT PRESENT
          ZR     X3,CRKABT1  IF END OF STATEMENT
          SX0    LDC
          SA1    DABT 
          BX3    X3-X1
          NZ     X3,COM30    ERROR EXIT IF NEXT ITEM IS NOT ABT 
          SA1    PCRK 
          SX6    X1+B1
          SA6    A1          BUMP POINTER TO CRKBUF 
          SA1    LCOMC
          RJ     FIND        GET Z
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          NZ     X3,COM30    ERROR EXIT IF NOT END OF STATEMENT 
          RJ     CPSN        PROCESS STATEMENT NUMBER 
          LX0    12 
 CRKABT1  SX1    RJM
          SX2    POVL 
          LX0    24 
          LX1    12 
          BX0    X0+X2
          BX0    X0+X1
          RJ     CABSPPU     ABSOLUTIZE PPU ADDRESSES 
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     CRKABT      RETURN 
          EJECT 
 CRKCONN  TITLE  - CRACK FOR CONNECT PARAMETERS.
**        CRKCONN - CRACK FOR CONNECT PARAMETERS. 
* 
*         ENTRY  -   X3 = FIRST WORD OF PARAMETERS. 
* 
*         EXIT   -   NONE.
* 
*         CALLS  -   CSTOREB, CRKPATH, CRKLOD, CABSPPU. 
* 
*         USES   -   A, 1, 3, 6.
*                    X, 0, 1, 3, 6. 
*                    B, 7.
* 
  
 CRKCONN  DATA   0
          SB7    B1 
          SX6    B1 
          SA1    DMAINT 
          BX1    X1-X3
          NZ     X1,CRKCON1  IF NOT MAINT PATH
          MX6    0
          SB7    B0 
          SA1    CRKCONA
          SA3    A3+B1       GET NEXT PARAMETER 
          EQ     CRKCON2
  
 CRKCON1  SA1    CRKCONB
 CRKCON2  BX0    X1 
          SA6    CRKCOND     FLAG MAINT OR NOT MAINT
          RJ     CSTOREB     SAVE GENERATED CODE
          RJ     CRKPATH     CRACK FOR PATH NAME
          SA3    A3+B1
          SA1    DBUFFER     CRACK FOR BUFFER 
          BX1    X1-X3
          NZ     X1,COM30    ERROR IF NOT BUFFER NAME 
          SA1    CRKCONC     CONTROL WORD FOR X 
          RJ     CRKLOD      CRACK FOR X
          SX0    STD+PA+6 
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    CRKCONE
          BX0    X1 
          RJ     CABSPPU
          SA1    CRKCOND     GET MAINT FLAG 
          ZR     X1,CRKCON3  IF MAINT PATH
          SA1    DLTA 
          BX1    X1-X3
          NZ     X1,CRKCON3  IF NOT LTA 
          MX0    0
          SA1    CRKCONG
          RJ     CRKLOD      CRACK FOR LTA Y
 CRKCON3  RJ     CSTOREB     SAVE GENERATED CODE
          SA1    CRKCONF
          BX0    X1 
          RJ     CABSPPU
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     CRKCONN     EXIT 
  
 CRKCONA  VFD    12/LDN,12/STD+PA+55B,12/LDC,12/440B,12/STD+PA+1
 CRKCONB  VFD    12/LDN,12/STD+PA+55B,12/LDC,12/405B,12/STD+PA+1
 CRKCONC  VFD    42/0,12/2,3/BUF2,3/REG2   CW FOR X 
 CRKCOND  DATA   0           FLAG FOR MAINT   0=MAINT 1=NORMAL PATH 
 CRKCONE  VFD    36/0,12/LDM,12/SB+50B
 CRKCONF  VFD    36/0,12/STM,12/SB+52B
 CRKCONG  VFD    42/0,12/177B,3/BUF2,3/REG2  CW FOR Y 
          EJECT 
 CRKIB    TITLE  CRKIB - CRACK FOR IB.
**        CRKIB - CRACK FOR IB. 
* 
*         ENETRY  - (A3) POINTS TO IB IN CRKBUF.
*                   (X3) HAS IB IN DISPLAY CODE.
* 
*         EXIT    - MODULE CONTAINS CODE FOR LDC IB, STD PA+3 
* 
*         CALLS  -   CSTOREB, CRKLODC.
* 
*         USES   -  A, 1. 
*                   X, 0, 1.
*                   B, NONE.
* 
  
 CRKIB    DATA   0
          SA1    DTO
          BX1    X1-X3
          NZ     X1,COM30    ERROR IF NOT TO
          SA1    LCOME       CW FOR IB
          RJ     CRKLODC     CRACK AND STORE IB 
          SX0    STD+PA+3 
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     CRKIB       RETURN 
          EJECT 
 CRKLOD   TITLE  - CALL FIND AND CLOAD. 
**        CRKLOD - CALL FIND AND CLOAD. 
* 
*         ENTRY  -   X1 = CONTROL WORD FOR FIND.
* 
*         EXIT   -   NONE.
* 
*         CALLS  -   FIND, CLOAD. 
* 
*         USES   -   A, 3, 6. 
*                    X, 3, 6. 
*                    B, NONE. 
* 
  
 CRKLOD   DATA   0
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK      UPDATE POINTER TO CRKBUF 
          RJ     FIND 
          NG     B2,COM31    IF ERROR IN CRACKING 
          RJ     CLOAD       FORM LOAD OF DATA
          EQ     CRKLOD 
          EJECT 
 CRKLODC  TITLE  - CALL FIND AND CLOADC.
**        CRKLODC - CALL FIND AND CLOADC. 
* 
*         ENTRY  -   X1 = CONTROL WORD FOR FIND.
* 
*         EXIT   -   NONE.
* 
*         CALLS  -   FIND, CLOADC.
* 
*         USES   -   A, 3, 6. 
*                    X, 3, 6. 
*                    B, NONE. 
* 
  
 CRKLODC  DATA   0
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK      UPDATE POINTER TO CRKBUF 
          RJ     FIND 
          NG     B2,COM31    IF ERROR IN CRACKING 
          RJ     CLOADC      FORM LOAD OF DATA
          EQ     CRKLODC
 CRKNRS   TITLE  - CALL CRKNR AND CSTOREB.
**        CRKNRS - CALL CRKNR AND CSTOREB.
* 
*         ENTRY  -   (A3) = CRKBUF ADDRESS OF N.
*                    (X3) = DATA FOR N IN DISPLAY CODE. 
* 
*         EXIT   -   CODE CUT AND STOREDE.
* 
*         CALLS  -   CRKNR, CSTOREB.
* 
*         USES   -   A, NONE. 
*                    X, NONE. 
*                    B, NONE. 
* 
  
 CRKNRS   DATA   0
          RJ     CRKNR       CRACK FOR N
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     CRKNRS 
          EJECT 
 CRKOB    TITLE  CRKOB -CRACK FOR OB. 
**        CRKOB - CRACK FOR OB. 
* 
*         ENTRY   - (A3) POINTS TO OB IN CRKBUF.
*                   (X3) HAS OB IN DISPLAY CODE.
* 
*         EXIT    - MODULE CONTAINS CODE FOR LDC OB, STD PA+3 
* 
*         CALLS  - CSTOREB, CRKLODC.
* 
*         USES    - A, 1, 3, 6. 
*                   X, 0, 1, 3, 6.
*                   B, NONE.
* 
  
 CRKOB    DATA   0
          SA1    DFROM
          BX1    X1-X3
          NZ     X1,COM30    ERROR IF NOT FROM
          SA1    LCOMG       CW FOR OB
          RJ     CRKLODC
          SX0    STD+PA+3 
          RJ     CSTOREB     SAVE GENERATED BINARY
          EQ     CRKOB       RETURN 
          EJECT 
 CRKN     TITLE  CRKN - CRACK FOR VALUE N.
**        CRKN - CRACK FOR VALUE N. 
* 
*         ENTRY  - (A3)=CRKBUF ADDRESS OF N.
*                  (X3)=DATA FOR N IN DISPLAY CODE. 
* 
*         EXIT   - (X0) = LDN/C  STD+PA+2 CUT INT PP CODE.
* 
*         CALLS  - CRKWDS.
* 
*         USES   -  A- 1. 
*                   X- 1. 
*                   B- NONE.
* 
 CRKN     DATA   0
          SA1    LCOMF       CW FOR N 
          RJ     CRKWDS 
          EQ     CRKN        RETURN 
          EJECT 
 CRKNR    TITLE  CRKNR - CRACK FOR VALUE N AS REG/BUF/CONST.
**        CRKNR - CRACK FOR VALUE N AS REG/BUF/CONST. 
* 
*         ENTRY  - (A3)=CRKBUF ADDRESS OF N.
*                  (X3)=DATA FOR N IN DISPLAY CODE. 
* 
*         EXIT   - (X0) = LDN/C  STD+PA+2 CUT INT PP CODE.
* 
*         CALLS  - CRKWDS.
* 
*         USES   -  A- 1. 
*                   X- 1. 
*                   B- NONE.
* 
 CRKNR    DATA   0
          SA1    LCOMD       CW FOR N 
          RJ     CRKWDS 
          EQ     CRKNR       RETURN 
          EJECT 
 CRKPATH  TITLE  CRKPATH - CRACK FOR PATH DA. 
**        CRKPATH - CRACK FOR PATH DA.
* 
*         ENTRY  - (B7) = 0 IF NORMAL PATH. 
*                       = 1 IF MAINTENANCE PATH.
*                       = 2 IF NORMAL OR MAINTENANCE PATH LEGAL.
* 
*         EXIT   - COM30   IF WRONG PATH TYPE.
* 
*         CALLS  - CSTOREB  SAVE GENERATED CODE.
* 
*         USES   - A, 1, 3. 
*                  X, 0, 1, 3, 5. 
*                  B, 7.
* 
  
 CRKPATH  DATA   0
          SA1    DPATH
          BX1    X1-X3
          NZ     X1,COM30    IF NOT PATH
          SA3    A3+B1       GET NEXT PARAMETER 
          MX5    6
          BX1    X5*X3
          LX1    6
          SX1    X1-1RD 
          NZ     X1,COM30    ERROR IF NOT D 
          LX3    6
          BX1    X5*X3
          LX1    6
          LX3    6           POSITION PATH NAME TO LOWER 12 BITS
          MX5    48 
          BX5    X5*X3
          NZ     X5,COM30    IF PATH NAME GREATER THAN 2 CHARACTERS 
          BX5    X1          MOVE CHARACTER TO X5 
          ZR     X1,COM30    ERROR IF NO CHARACTER
          SX0    LDC
          LX0    12 
          SX1    X5-1R0 
          NG     X1,CRKPA3   IF CHARACTER IS A-Z
          SX1    X5-1R+ 
          PL     X1,COM30    ERROR IF NOT 0-9 
          ZR     B7,COM30    ERROR IF 0-9 AND CONN MAINT PATH 
          SX0    LDN
          SX1    X5+25B      CONVERT TO ASCII 
          SB7    B1          FLAG NORMAL PATH 
          EQ     CRKPA4 
  
 CRKPA3   EQ     B7,B1,COM30 ERROR IF NOT MAINT PATH
          SX1    X5+100B
 CRKPA4   BX0    X0+X1
          SX1    STD+PA+4 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB
          EQ     CRKPATH     RETURN 
          EJECT 
 CRKRS    TITLE  CRKRS - CRACK FOR R/S. 
**        CRKRS - CRACK FOR R/S.
* 
*         ENTRY  - (A3) = CRKBUF ADDRESS OF VALUE R-1.
* 
*         EXIT   - CODE CUT FOR R/S INTO PA+4 AND PA+5. 
* 
*         CALLS  - FINDOCT, CVTHXB, FIND, STOREB, CLOAD.
* 
*         USES   - A-  1, 3, 6. 
*                   X- 0, 1, 2, 3, 4, 5, 6. 
*                  B-  NONE.
* 
  
 CRKRS    DATA   0
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          RJ     FINDOCT     CONVERT VALUE R
          BX6    X5 
          PL     X5,CRKRS4   IF NO ERRORS 
          BX5    X3 
          RJ     CVTHXB      CONVERT HEX DIGITS 
          NZ     X4,CRKRS0   IF NOT HEX 
          BX5    X6 
          EQ     CRKRS4 
  
 CRKRS0   SA1    LCOMB       CW FOR R/S 
          RJ     FIND 
          NG     B2,COM31    IF CONVERT ERROR 
          RJ     CLOAD
          SX0    STD+PA+4 
          SX1    X3-1R/ 
          ZR     X1,CRKRS1   IF DISPLAY CODE /
          SX1    B1 
          BX0    X0+X1       CHANGE TO STD+PA+5 
          RJ     CSTOREB
          SX0    LDN+0
          LX0    12 
          SX1    STD+PA+4 
          EQ     CRKRS2 
  
 CRKRS1   RJ     CSTOREB
          SA1    LCOMB       CW FOR R/S 
          RJ     CRKLOD      CRACK FOR R/S
          SX1    STD+PA+5 
 CRKRS2   BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     CRKRS
  
 CRKRS4   MX1    -16
          BX1    X1*X5
          NZ     X1,COM30    ERROR IF VALUE TOO LARGE 
          MX4    -8 
          SX0    LDC
          LX0    12 
          AX6    8           GET UPPER 8 BITS OF ADDRESS
          BX1    -X4*X6 
          BX0    X0+X1
          MX2    -6 
          BX2    X2*X6
          NZ     X2,CRKRS5   IF GREATER THAN 77 OCTAL 
          SX0    X1+LDN 
 CRKRS5   SX1    STD+PA+4 
          LX0    12 
          BX0    X0+X1
          BX3    -X4*X5 
          MX2    -6 
          BX2    X2*X3
          SX1    X3+LDN 
          ZR     X2,CRKRS6   IF LOWER 8 BITS OF N LESS THAN 100B
          LX0    12 
          SX1    LDC
          BX0    X0+X1
          BX1    X3 
 CRKRS6   LX0    12 
          BX0    X0+X1
          RJ     CSTOREB
          SX0    STD+PA+5 
          RJ     CSTOREB     SAVE GENERATED CODE  STD PA+5
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          EQ     CRKRS       RETURN 
          EJECT 
 CRKWDS    TITLE  - CRACK FOR WORDS.
**        CRKWDS - CRACK FOR WORDS. 
* 
*         ENTRY  -   (A3) = POINTER TO CRKBUF.
*                    (X1) = CONTROL WORD FOR FIND.
* 
*         EXIT   -   (A3) = INCREMENTED.
*                    COM31 IF NOT FOUND.
* 
*         CALLS  -   FIND, CLOAD. 
* 
*         USES   -   A, 1.
*                    X, 1, 1. 
*                    B, NONE. 
* 
  
 CRKWDS   DATA   0
          RJ     FIND 
          NG     B2,COM31    ERROR IF NOT FOUND 
          RJ     CLOAD       FORM LOAD
          SX0    STD+PA+2 
          BX4    X2 
          SA1    DWORDS 
          BX1    X1-X3
          ZR     X1,CRKWDS   RETURN IF WORDS
          SA1    DWDS 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT WDS 
          EQ     CRKWDS      RETURN 
