*COMDECK,MALETPM
          EJECT 
          QUAL   MALETPM
          IFNE   CMSE,0,1 
          USE    MODD 
          VFD    30/1,6/KEYPM,6/KEY2,18/0   CW FOR PM 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 
          DATA   500B        MAX VALUE FOR OB FOR PM OVERLAY (CART TAPE)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0OBFWA
          DATA   6100B             RELATIVE FWA OF OB 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0IB 
          DATA   500B        MAX VALUE FOR IB FOR PM OVERLAY (CART TAPE)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0IBFWA
          DATA   5400B             RELATIVE FWA OF IB 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SB 
          DATA   56B         MAX VALUE FOR SB FOR PM OVERLAY (CART TAPE)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SBFWA
          DATA   6600B             RELATIVE FWA OF SB 
          USE    *
  
*         PM (CARTRIDGE TAPE TAPE) PRODUCT OVERLAY ENTRY POINTS 
  
 RELPM    EQU    0
 RESPM    EQU    1
 FUNCPM   EQU    2
 READPM   EQU    3
 RDIDPM   EQU    4
 RESETPM  EQU    5
 STATPM   EQU    6
 WRITEPM  EQU    7
  
          IFNE   CMSE,0,1 
          USE    PKEY 
          VFD    24/0,18/LPM,18/TPM 
 KEYPM    EQU    *-PKEY+PKEYOFF 
          USE    *
  
*         LEGAL HIGH-LEVEL I/O STATEMENTS FOR CARTRIDGE TAPE TAPE.
  
 TPM      VFD    42/4LBKSP,18/PMBKSP
          VFD    42/7LENDFILE,18/PMEOF
          VFD    42/5LERASE,18/PMERASE
          VFD    42/7LEXECUTE,18/PMEXEC 
          VFD    42/6LFSPACE,18/PMFSP 
          VFD    42/6LLOCATE,18/PMLB
          VFD    42/4LREAD,18/PMREAD
          VFD    42/3LREL,18/PMREL
          VFD    42/3LRES,18/PMRES
          VFD    42/5LRESET,18/PMRESET
          VFD    42/6LREWIND,18/PMREW 
          VFD    42/6LSEARCH,18/PMSEARCH
          VFD    42/6LSTATUS,18/PMSTAT
          VFD    42/7LSYNCHRO,18/PMSYNC 
          VFD    42/6LUNLOAD,18/PMUNL 
          VFD    42/5LWRITE,18/PMWRITE
 LPM      EQU    *-TPM
  
          EJECT 
  
*         CONSTANTS USED BY CARTRIDGE TAPE
  
 DBLOCK   VFD    60/5LBLOCK 
 DBUFFER  VFD    60/8LBUFFERED
 DCCC     VFD    60/3LCCC 
 DDATA    VFD    60/4LDATA
 DDELAY   VFD    60/5LDELAY 
 DDIAG    VFD    60/4LDIAG
 DDOUBLE  VFD    60/6LDOUBLE
 DFM      VFD    60/2LFM
 DFWD     VFD    60/3LFWD 
 DID      VFD    60/2LID
 DLOG     VFD    60/3LLOG 
 DLONG    VFD    60/4LLONG
 DPLUS    VFD    60/4LPLUS
 DQUAD    VFD    60/4LQUAD
 DREV     VFD    60/3LREV 
 DROM     VFD    60/3LROM 
 DSECUR   VFD    60/8LSECURITY
 DSHORT   VFD    60/5LSHORT 
 DWITH    VFD    60/4LWITH
  
          EJECT 
 PMBKSP   TITLE  PMBKSP  - PROCESS THE CARTRIDGE TAPE BKSP STATEMENT. 
**        PMBKSP  -   PROCESS THE CARTRIDGE TAPE BKSP STATEMENT.
* 
*         J. M. OJA. 11/17/88.
* 
*         PMBKSP  - PROCESS THE CARTRIDGE TAPE BKSP STATEMENT.
*                 FORMAT IS;
* 
*                 BKSP, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = FUNCPM (ADDRESS OF FUNCTION ROUTINE IN DRIVER).
*                 (X0) = 0 FOR BKSP FUNCTION
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 PMBKSP   SB7    FUNCPM      ENTRY POINT FOR BKSP 
          SX0    LDN
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE CODE GENERATED
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
          EJECT 
 PMEOF    TITLE  PMEOF   - PROCESS THE CARTRIDGE TAPE ENDFILE STATEMENT.
**        PMEOF   -   PROCESS THE CARTRIDGE TAPE ENDFILE STATEMENT. 
* 
*         J. M. OJA. 11/17/88.
* 
*         PMEOF   - PROCESS THE CARTRIDGE TAPE ENDFILE STATEMENT. 
*                 FORMAT IS;
* 
*                 ENDFILE, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = FUNCPM (ADDRESS OF FUNCTION ROUTINE IN DRIVER).
*                 (X0) = 1 FOR ENDFILE FUNCTION 
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 PMEOF    SB7    FUNCPM      ENTRY POINT FOR ENDFILE
          SX0    LDN+1
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE CODE GENERATED
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
          EJECT 
 PMERASE  TITLE  PMERASE - PROCESS THE CARTRIDGE TAPE ERASE STATEMENT.
**        PMERASE -   PROCESS THE CARTRIDGE TAPE ERASE STATEMENT. 
* 
*         J. M. OJA. 11/17/88.
* 
*         PMERASE - PROCESS THE CARTRIDGE TAPE ERASE  STATEMENT.
*                 FORMAT IS;
* 
*                 ERASE, ABT Z
*                 ERASE DATA SECURITY, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = FUNCPM (ADDRESS OF FUNCTION ROUTINE IN DRIVER).
*                 (X0) = 2 FOR ERASE FUNCTION 
*                 (X0) = 13 FOR DATA SECURITY ERASE FUNCTION
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 PMERASE  SB7    FUNCPM      ENTRY POINT FOR ERASE
          SX0    LDN+2
          SA1    DABT 
          BX1    X1-X3
          ZR     X1,PMER3    IF ABT SAVE CODE 
          SA1    DDATA
          BX1    X1-X3
          NZ     X1,COM30    IF NOT DATA SYNTAX ERROR 
          SA3    A3+B1
          SA1    DSECUR 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT SECURITY SYNTAX ERROR 
          SA3    A3+B1
          SX0    X0+11B      SET FOR DATA SECURITY ERASE
 PMER3    SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE CODE GENERATED
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
 PMEXEC   TITLE  PMEXEC - PROCESS THE EXECUTE CCC ROM DIAG STATEMENT. 
**        PMEXEC -   PROCESS THE EXECUTE CCC ROM DIAG STATEMENT.
* 
*         J. M. OJA. 11/17/88.
* 
*         PMEXEC - PROCESS THE EXECUTE CCC ROM DIAG STATEMENT.
*                 FORMAT IS;
* 
*                 EXECUTE CCC ROM DIAG, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = FUNCPM (ADDRESS OF FUNCTION ROUTINE IN DRIVER).
*                 (X0) = 12 FOR EXECUTE CCC ROM DIAG FUNCTION 
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 PMEXEC   SB7    FUNCPM      ENTRY POINT FOR ERASE
          SX0    LDN+12B
          SA1    DCCC 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT CCC SYNTAX ERROR
          SA3    A3+B1
          SA1    DROM 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT ROM SYNTAX ERROR
          SA3    A3+B1
          SA1    DDIAG
          BX1    X1-X3
          NZ     X1,COM30    IF NOT DIAG SYNTAX ERROR 
          SA3    A3+B1
 PMEX3    SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE CODE GENERATED
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
          EJECT 
 PMFSP    TITLE  PMFSP   - PROCESS THE CARTRIDGE TAPE FSPACE STATEMENT. 
**        PMFSP   -   PROCESS THE CARTRIDGE TAPE FSPACE STATEMENT.
* 
*         J. M. OJA. 11/17/88.
* 
*         PMFSP   - PROCESS THE CARTRIDGE TAPE FSPACE STATEMENT.
*                 FORMAT IS;
* 
*                 FSPACE, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = FUNCPM (ADDRESS OF FUNCTION ROUTINE IN DRIVER).
*                 (X0) = 3 FOR FSPACE FUNCTION
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 PMFSP    SB7    FUNCPM      ENTRY POINT FOR FSPACE 
          SX0    LDN+3
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE CODE GENERATED
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
          EJECT 
 PMLB     TITLE  PMLB    - PROCESS THE CART TAPE LOCATE BLOCK STATEMENT.
**        PMLB    -   PROCESS THE CARTRIDGE TAPE LOCATE BLOCK STATEMENT.
* 
*         J. M. OJA. 11/17/88.
* 
*         PMLB    - PROCESS THE CARTRIDGE TAPE LOCATE BLOCK STATEMENT.
*                 FORMAT IS;
* 
*                 LOCATE BLOCK, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = FUNCPM (ADDRESS OF FUNCTION ROUTINE IN DRIVER).
*                 (X0) = 4 FOR LOCATE BLOCK FUNCTION
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 PMLB     SB7    FUNCPM      ENTRY POINT FOR LOCATE BLOCK 
          SA1    DBLOCK 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT BLOCK SYNTAX ERROR
          SX0    LDN+4B 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE CODE GENERATED
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
          EJECT 
 PMREAD   TITLE  PMREAD  - PROCESS THE CARTRIDGE TAPE READ  STATEMENT.
**        PMREAD  -   PROCESS THE CARTRIDGE TAPE READ STATEMENT.
* 
*         J. M. OJA. 11/17/88.
* 
*         PMREAD  - PROCESS THE CARTRIDGE TAPE READ STATEMENT.
*                 FORMATS ARE;
* 
*                 READ, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = RDWRPM (ADDRESS OF READ ROUTINE IN DRIVER).
*                 (X0) = 1 FOR READ FWD FUNCTION
*                      = 3 FOR READ BLOCK ID
*                      = 4 FOR READ BUFFERED LOG
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
*               - COM30  IF SYNTAX ERROR
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1, 2, 3, 6.
*                X - 0, 1, 2, 3, 6. 
*                B - 7. 
* 
 PMREAD   SB7    READPM      ENTRY POINT FOR READ 
          SX0    LDN+1B      READ FUNCTION
          SA1    DABT 
          BX1    X1-X3
          ZR     X1,PMRD4    IF ABT SAVE CODE 
          SB7    RDIDPM      ENTRY POINT FOR READ ID
          SX0    X0+2        SET FOR BLOCK ID 
          SA1    DBLOCK 
          BX1    X1-X3
          NZ     X1,PMRD1    IF NOT BLOCK CHECK BUFFERED LOG
          SA3    A3+B1
          SA1    DID
          BX1    X1-X3
          NZ     X1,COM30    IF NOT ID SYNTAX ERROR 
          EQ     PMRD2       PROCESS REST OF STATMENT 
  
 PMRD1    SX0    X0+1        SET FOR BUFFERED LOG 
          SA1    DBUFFER
          BX1    X1-X3
          NZ     X1,COM30    IF NOT BUFFERED SYNTAX ERROR 
          SA1    DLOG 
          SA3    A3+B1
          BX1    X1-X3
          NZ     X1,COM30    IF NOT ID SYNTAX ERROR 
 PMRD2    LX0    12 
          SX1    STD+PA 
          SX6    A3 
          BX0    X0+X1       CODE = LDN FLAG, STD PA
          RJ     CSTOREB     SAVE CODE GENERATED
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
 PMRD4    LX0    12 
          SX1    STD+PA 
          SX6    A3 
          BX0    X0+X1       CODE = LDN FLAG, STD PA
          RJ     CSTOREB     SAVE CODE GENERATED
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
          EJECT 
 PMREL    TITLE  PMREL   - PROCESS THE CARTRIDGE TAPE REL  STATEMENT. 
**        PMREL   -   PROCESS THE CARTRIDGE TAPE REL STATEMENT. 
* 
*         J. M. OJA. 11/17/88.
* 
*         PMREL   - PROCESS THE CARTRIDGE TAPE REL STATEMENT. 
*                 FORMAT IS;
* 
*                 REL, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = RELPM (ADDRESS OF RELEASE ROUTINE IN DRIVER).
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 PMREL    SB7    RELPM       ENTRY P0INT FOR REL
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
          EJECT 
 PMRES    TITLE  PMRES   - PROCESS THE CARTRIDGE TAPE RES  STATEMENT. 
**        PMRES   -   PROCESS THE CARTRIDGE TAPE RES STATEMENT. 
* 
*         J. M. OJA. 11/17/88.
* 
*         PMRES   - PROCESS THE CARTRIDGE TAPE RES STATEMENT. 
*                 FORMAT IS;
* 
*                 RES U, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = RESPM (ADDRESS OF RESERVE ROUTINE IN DRIVER).
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
*               - COM31 - IF REGISTER NOT FOUND.
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
*                         -  FIND - FIND NEXT ITEM FROM CRKBUF. 
* 
*         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. 
* 
 PMRES    SB7    RESPM       ENTRY POINT FOR RES
          SA1    PMRU 
          RJ     FIND        GET U
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          RJ     CLOAD       GENERATE LOAD CODE 
          LX0    12 
          SX1    STD+PA 
          SX6    A3 
          BX0    X0+X1       CODE = LDN FLAG, STD PA
          RJ     CSTOREB     SAVE CODE GENERATED
          EQ     PAC         ENTER COMMON ABT SEQUENCE
  
 PMRU     VFD    57/0,3/REG2                 CONTROL WORD FOR U 
  
          EJECT 
 PMRESET  TITLE  PMRESET - PROCESS THE CARTRIDGE TAPE RESET STATEMENT.
**        PMRESET -   PROCESS THE CARTRIDGE TAPE RESET STATEMENT. 
* 
*         J. M. OJA. 11/17/88.
* 
*         PMRESET - PROCESS THE CARTRIDGE TAPE RESET STATEMENT. 
*                 FORMAT IS;
* 
*                 RESET, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = RESETPM (ADDRESS OF RESET ROUTINE IN DRIVER).
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 PMRESET  SB7    RESETPM     ENTRY POINT FOR RESET
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
          EJECT 
 PMREW    TITLE  PMREW   - PROCESS THE CARTRIDGE TAPE REWIND STATEMENT. 
**        PMREW   -   PROCESS THE CARTRIDGE TAPE REWIND STATEMENT.
* 
*         J. M. OJA. 11/17/88.
* 
*         PMREW   - PROCESS THE CARTRIDGE TAPE REWIND STATEMENT.
*                 FORMAT IS;
* 
*                 REWIND, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = FUNCPM (ADDRESS OF FUNCTION ROUTINE IN DRIVER).
*                 (X0) = 7 FOR REWIND FUNCTION
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 PMREW    SB7    FUNCPM      ENTRY POINT FOR REWIND 
          SX0    LDN+7B 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE CODE GENERATED
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
          EJECT 
 PMSEARCH TITLE  PMSEARCH- PROCESS THE CARTRIDGE TAPE SEARCH FM STATEMENT.
**        PMSEARCH-   PROCESS THE CARTRIDGE TAPE SEARCH FM STATEMENT. 
* 
*         J. M. OJA. 11/17/88.
* 
*         PMSEARCH- PROCESS THE CARTRIDGE TAPE SEARCH FM STATEMENT. 
*                 FORMAT IS;
* 
*                 SEARCH FM FWD, ABT Z
*                 SEARCH FM REV, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = FUNCPM (ADDRESS OF FUNCTION ROUTINE IN DRIVER).
*                 (X0) = 10B FOR SEARCH FM FWD FUNCTION 
*                      = 11B FOR SEARCH FM REV FUNCTION 
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 PMSEARCH SB7    FUNCPM      ENTRY POINT FOR SEARCH FM
          SX0    LDN+10B     SET FOR SEARCH FILE FWD
          SA1    DFM
          BX1    X1-X3
          NZ     X1,COM30    IF NOT FM SYNTAX ERROR 
          SA3    A3+B1       GET NEXT WORD IF FM
          SA1    DFWD 
          BX1    X1-X3
          ZR     X1,PMSEA2   IF FWD STORE CODE
          SX0    X0+1        SET FOR SEARCH FILE REV
          SA1    DREV 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT REV SYNTAX ERROR
 PMSEA2   LX0    12 
          SX1    STD+PA 
          SX6    A3 
          BX0    X0+X1       CODE = LDN FLAG, STD PA
          RJ     CSTOREB     SAVE CODE GENERATED
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
          EJECT 
 PMSTAT   TITLE  PMSTAT  - PROCESS THE CARTRIDGE TAPE STATUS STATEMENT. 
**        PMSTAT  -   PROCESS THE CARTRIDGE TAPE STATUS STATEMENT.
* 
*         J. M. OJA. 11/17/88.
* 
*         PMSTAT  - PROCESS THE CARTRIDGE TAPE STATUS STATEMENT.
*                 FORMATS ARE;
* 
*                 STATUS, ABT Z 
*                 STATUS GENERAL, ABT Z 
*                 STATUS SENSE, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = STATPM (ADDRESS OF STATUS ROUTINE IN DRIVER).
*                 (X0) = 0 FOR ALL STATUS 
*                      = 1 FOR GENERAL
*                      = 2 FOR SENSE
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
*               - COM30  IF SYNTAX ERROR
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  NONE.
* 
*         USES   A - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 PMSTAT   SX0    LDN
          SB7    B0          CLEAR POINTER
          SB6    LPMSTA 
          SA1    DABT        CHECK ABT
          BX1    X1-X3
          ZR     X1,PMS3     IF ABT SAVE CODE 
 PMS1     SX0    X0+B1       BUMP CODE FLAG 
          SA1    PMSTA2+B7
          BX1    X1-X3
          ZR     X1,PMS2     IF KEYWORD FOUND 
          SB7    B7+B1       BUMP POINTER 
          NE     B7,B6,PMS1  IF END OF LIST NOT FOUND 
          EQ     COM30       ERROR EXIT IF NOT FOUND
  
 PMS2     SA3    A3+B1
          SX6    A3 
          SA6    PCRK 
 PMS3     LX0    12 
          SX1    STD+PA 
          BX0    X0+X1       CODE = LDN FLAG, STD PA
          RJ     CSTOREB     SAVE CODE GENERATED
          SB7    STATPM      ENTRY POINT FOR STATUS 
          EQ     PAC         ENTER COMMON SEQUENCE
  
 PMSTA2   VFD    60/7LGENERAL 
          VFD    60/5LSENSE 
 LPMSTA   EQU    *-PMSTA2 
  
          EJECT 
 PMSYNC   TITLE  PMSYNC  - PROCESS THE CART TAPE SYNCHRO STATEMENT. 
**        PMSYNC  -   PROCESS THE CARTRIDGE TAPE SYNCHRO STATEMENT. 
* 
*         J. M. OJA. 11/17/88.
* 
*         PMSYNC  - PROCESS THE CARTRIDGE TAPE SYNCHRO STATEMENT. 
*                 FORMAT IS;
* 
*                 SYNCHRO, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = FUNCPM (ADDRESS OF FUNCTION ROUTINE IN DRIVER).
*                 (X0) = 5 FOR SYNCHRONIZE FUNCTION 
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 PMSYNC   SB7    FUNCPM      ENTRY POINT FOR SYNCHRONIZ 
          SX0    LDN+5B 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE CODE GENERATED
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
          EJECT 
 PMUNL    TITLE  PMUNL   - PROCESS THE CARTRIDGE TAPE UNLOAD STATEMENT. 
**        PMUNL   -   PROCESS THE CARTRIDGE TAPE UNLOAD STATEMENT.
* 
*         J. M. OJA. 11/17/88.
* 
*         PMUNL   - PROCESS THE CARTRIDGE TAPE UNLOAD STATEMENT.
*                 FORMAT IS;
* 
*                 UNLOAD, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = FUNCPM (ADDRESS OF FUNCTION ROUTINE IN DRIVER).
*                 (X0) = 6 FOR UNLOAD FUNCTION
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 PMUNL    SB7    FUNCPM      ENTRY POINT FOR UNLOAD 
          SX0    LDN+6B 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE CODE GENERATED
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
          EJECT 
 PMWRITE  TITLE  PMWRITE - PROCESS THE CARTRIDGE TAPE WRITE STATEMENT.
**        PMWRITE -   PROCESS THE CARTRIDGE TAPE WRITE STATEMENT. 
* 
*         J. M. OJA. 11/17/88.
* 
*         PMWRITE - PROCESS THE CARTRIDGE TAPE WRITE STATEMENT. 
*                 FORMATS ARE;
* 
*                 WRITE, ABT Z
*                 WRITE SHORT, ABT Z
*                 WRITE SHORT WITH DELAY Y, ABT Z 
*                 WRITE SHORT PLUS X WITH DELAY Y, ABT Z
*                 WRITE LONG, ABT Z 
*                 WRITE LONG WITH DELAY Y, ABT Z
*                 WRITE DOUBLE LONG, ABT Z
*                 WRITE QUAD DOUBLE LONG, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = WRITEPM (ADDRESS OF WRITE ROUTINE IN DRIVER).
*                 (X0) = 0 FOR WRITE FUNCTION 
*                      = 10 FOR WRITE SHORT FUNCTION
*                      = 12 FOR WRITE SHORT WITH DELAY FUNCTION 
*                      = 20 FOR WRITE LONG FUNCTION 
*                      = 22 FOR WRITE LONG WITH DELAY FUNCTION
*                      = 24 FOR WRITE SHORT PLUS WITH DELAY FUNCTION
*                      = 30 FOR WRITE DOUBLE LONG FUNCTION
*                      = 21 FOR WRITE QUAD LONG FUNCTION
*                      = 31 FOR WRITE QUAD DOUBLE LONG FUNCTION 
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
*               - COM30  IF SYNTAX ERROR
* 
*         ROUTINES CALLED -  PAC - COMMON CARTRIDGE TAPE PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1, 2, 3, 6.
*                X - 0, 1, 2, 3, 6. 
*                B - 7. 
* 
 PMWRITE  SB7    WRITEPM     ENTRY POINT FOR WRITE
          SX0    LDN         WRITE FUNCTION 
          SA1    DABT 
          BX1    X1-X3
          ZR     X1,PMWR3    IF ABT SAVE CODE 
  
 PMWR1    SA1    DQUAD
          BX1    X1-X3
          NZ     X1,PMWR1A   IF NOT QUAD CHECK DOUBLE 
          SX0    X0+1B       SET FOR QUAD WRITE 
          SA3    A3+B1
 PMWR1A   SA1    DDOUBLE
          BX1    X1-X3
          NZ     X1,PMWR2    IF NOT DOUBLE CHECK LONG 
          SX0    X0+10B      SET FOR LONG WRITE 
          SA3    A3+B1
 PMWR2    SA1    DLONG
          BX1    X1-X3
          NZ     X1,PMWR2A   IF NOT LONG CHECK SHORT
          SX0    X0+20B      SET FOR LONG WRITE 
          SA3    A3+B1
          SA1    DWITH
          BX1    X1-X3
          NZ     X1,PMWR3    IF NOT WITH SAVE CODE
          SX0    X0+2B       SET FOR LONG WRITE WITH DELAY
          SA3    A3+B1
          SA1    DDELAY 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT DELAY SYNTAX ERROR
 PMWR20   LX0    12 
          SX1    STD+PA 
          BX0    X0+X1       CODE = LDN FLAG, STD PA
          RJ     CSTOREB     SAVE CODE GENERATED
          EQ     PMWR5       SAVE CODE
  
 PMWR2A   SA1    DSHORT 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT LONG SYNTAX ERROR 
          SX0    X0+10B      SET FOR LONG WRITE 
          SA3    A3+B1
          SA1    DPLUS
          BX1    X1-X3
          ZR     X1,PMWR4    IF PLUS FIND X 
          SA1    DWITH
          BX1    X1-X3
          NZ     X1,PMWR3    IF NOT WITH SAVE CODE
          SX0    X0+2B       SET FOR SHORT WRITE WITH DELAY 
          SA3    A3+B1
          SA1    DDELAY 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT DELAY SYNTAX ERROR
          EQ     PMWR20      SAVE CODE
 PMWR3    LX0    12 
          SX1    STD+PA 
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          BX0    X0+X1       CODE = LDN FLAG, STD PA
          RJ     CSTOREB     SAVE CODE GENERATED
          EQ     PAC         ENTER COMMON CARTRIDGE TAPE SEQUENCE 
  
  
*         CRACK  X
  
 PMWR4    SX0    X0+14B      SET FOR SHORT WRITE PLUS WITH DELAY
          LX0    12 
          SX1    STD+PA 
          BX0    X0+X1       CODE = LDN FLAG, STD PA
          RJ     CSTOREB     SAVE CODE GENERATED
          SX7    B7 
          SA7    PMWB        SAVE ENTRY ADDRESS 
          SA1    PMWA 
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          RJ     FIND        GET X
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          SX0    B3+LDN 
          SX1    STD+PA+55B 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    PMWB 
          SB7    X1          RESTORE ENTRY ADDRESS
          SA1    DWITH
          BX1    X1-X3
          NZ     X1,COM30    IF NOT WITH SYNTAX ERROR 
          SX0    X0+2B       SET FOR LONG SHORT WRITE WITH DELAY
          SA3    A3+B1
          SA1    DDELAY 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT DELAY SYNTAX ERROR
  
*         CRACK  Y
  
 PMWR5    SX7    B7 
          SA7    PMWB        SAVE ENTRY ADDRESS 
          SA1    PMWA 
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          RJ     FIND        GET Y
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          SX0    B3+LDN 
          SX1    STD+PA+56B 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    PMWB 
          SB7    X1          RESTORE ENTRY ADDRESS
          EQ     PAC         ENTER COMMON ABT SEQUENCE
  
 PMWA     VFD    57/0,3/REG1           CONTROL WORD FOR X 
 PMWB     DATA   0                     BUFFER FOR ENTRY ADDRESS 
          EJECT 
 PAC      TITLE  PAC - PM (CARTRIDGE TAPE) COMMON CODE PROCESSOR. 
**        PAC    COMMON CODE PROCESSOR. 
* 
*         J. M. OJA. 11/17/88.
* 
*         ENTRY - CRKBUF CONTAINS REMAINDER OF DATA TO CRACK. 
*                 PCRK   POINTS TO NEXT ITEM IN CRKBUF. 
*                 (B7)   CONTAINS ENTRY POINT INDEX.
* 
*         EXIT  - COM10  IF NO ERRORS 
*               - COM30  IF SYNTAX ERROR
*               - COM31  IF SYNTAX ERROR DURING FIND
* 
*         ROUTINES CALLED -  FIND    - FIND NEXT ITEM FROM CRKBUF 
*                         -  CABSPPU - FORM ABSOLUTE ADDRESS
*                         -  CSTOREB - SAVE CODE GENERATED. 
*                         -  CPSN    - PROCESS STATEMENT NUMBER 
* 
*         DATA AREAS USED - CRKBUF - WORD STRING OF SOURCE STATEMENT
* 
*         USES   A - 1, 3, 6, 7.
*                X - 0, 1, 3, 6, 7. 
*                B - 6, 7.
* 
**        COMMON CODE PROCESSING
* 
*         CRACK ABT Z 
* 
 PAC      SX7    B7 
          SA7    PACB        SAVE B7
          SA1    DABT 
          BX1    X3-X1
          NZ     X1,COM30    ERROR EXIT IF NEXT ITEM IS NOT ABT 
          SA1    PACD 
          BX0    X1 
          RJ     CABSPPU
          RJ     CSTOREB     SAVE GENERATED CODE
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SA1    PACC 
          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 
          SA1    PACB 
          LX1    6
          SX0    2000B       SET BIAS FOR CARTRIDGE TAPE
          BX0    X0+X1
          LX0    12 
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     COM10       EXIT TO COMPILER 
  
 PACB     DATA   0                     BUFFER FOR ENTRY ADDRESS 
 PACC     VFD    42/0,12/77B,6/0       CONTROL WORD FOR Z 
 PACD     VFD    12/0,12/0,12/0,12/RJM,12/POVL+14B
  
          EJECT 
