*COMDECK,MALETPT
          EJECT 
          QUAL   MALETPT
          IFNE   CMSE,0,1 
          USE    MODD 
          VFD    30/1,6/KEYPT,6/KEY2,18/0   CW FOR PT 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   2010B       MAX VALUE FOR OB FOR PP OVERLAY (CM-3) 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0OBFWA
          DATA   7570B             RELATIVE FWA OF OB 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0IB 
          DATA   2010B       MAX VALUE FOR IB FOR PP OVERLAY (CM-3) 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0IBFWA
          DATA   5560B             RELATIVE FWA OF IB 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SB 
          DATA   100B        MAX VALUE FOR SB FOR PP OVERLAY (CM-3) 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SBFWA
          DATA   11600B            RELATIVE FWA OF SB 
          USE    *
  
*         CM-3 IFSD ENTRY POINTS. 
  
 EXECPT   EQU    0
 RDWRPT   EQU    1
 RELPT    EQU    2
 RESPT    EQU    3
 REFPT    EQU    4
  
          IFNE   CMSE,0,1 
          USE    PKEY 
          VFD    24/0,18/LPT,18/TPT 
 KEYPT    EQU    *-PKEY+PKEYOFF 
          USE    *
  
*         LEGAL HIGH-LEVEL I/O COMMANDS FOR CM-3
  
 TPT      VFD    42/7LEXECUTE,18/PTEXEC 
          VFD    42/4LREAD,18/PTREAD
          VFD    42/3LREL,18/PTREL
          VFD    42/3LRES,18/PTRES
          VFD    42/6LREFORM,18/PTFORM
          VFD    42/5LWRITE,18/PTWRITE
 LPT      EQU    *-TPT
  
*         CONSTANTS USED BY CM-3
  
 DCH      VFD    60/2LCH
 DCM      VFD    60/2LCM
 DDMA     VFD    60/3LDMA 
 DDRIVE   VFD    60/5LDRIVE 
 DINITIAL VFD    60/7LINITIAL 
 DSLAVE   VFD    60/5LSLAVE 
  
          EJECT 
 PTEXEC   TITLE  PTEXEC - PROCESS THE CM-3 EXECUTE STATEMENT. 
**        PTEXEC - PROCESS THE CM-3 EXECUTE STATEMENT.
* 
*         J. M. OJA  90/06/26.
* 
*         PTEXEC  - PROCESS THE CM-3 EXECUTE STATEMENT. 
*                 FORMAT IS;
* 
*           EXECUTE CM X, ABT Z 
*           EXECUTE DRIVE, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - PAC4 TO PROCESS COMMON CODE IF DRIVE
*                 PAC  TO PROCESS COMMON CODE IF CM 
* 
*         ROUTINES CALLED - CSTOREB - TO STORE GENERATED PPU BINARY 
* 
*         DATA AREAS USED - CRKBUF - WORD STRING OF SOURCE STATEMENT. 
* 
*         USES -  A - 1, 3, 6 
*                 X - 0, 1, 3, 6
*                 B - 0, 1, 5, 7
* 
 PTEXEC   SB7    EXECPT      ENTRY POINT FOR EXECUTE COMMAND
          SB5    B1          SET FOR X
          SX0    B0 
          SA1    DCM
          BX1    X1-X3
          ZR     X1,EXEC2    IF EXECUTE CM
          SB5    B0          X NOT NEEDED FOR DRIVE 
          SX0    X0+B1
          SA1    DDRIVE 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT EXECUTE DRIVE 
 EXEC2    SX0    X0+LDN 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED BINARY
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          ZR     B5,PAC4     IF X NOT USED
  
*         CRACK  X
  
          SX7    B7 
          SA7    EXEB        SAVE ENTRY ADDRESS 
          SA1    EXEA 
          RJ     FIND        GET X
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          SX0    B3+LDN 
          SX1    STD+PA+1 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    EXEB 
          SB7    X1          RESTORE ENTRY ADDRESS
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
  
 EXEA     VFD    57/0,3/REG1           CONTROL WORD FOR X 
 EXEB     DATA   0                     BUFFER FOR ENTRY ADDRESS 
  
 PTFORM   TITLE  PTFORM - PROCESS THE CM-3 REFORM STATEMENT.
**        PTFORM - PROCESS THE CM-3 REFORM STATEMENT. 
* 
*         J. M. OJA  90/09/04.
* 
*         PTFORM  - PROCESS THE CM-3 REFORM STATEMENT.
*                 FORMAT IS;
* 
*                 REFORM INITIAL X, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = REFPT (ADDRESS OF REFORM ROUTINE IN DRIVER). 
*                 (PA) = 0 IF REFORM INITIAL
*                 (PA+1)= SECTOR SIZE TO FORMAT 
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON CM-3 PROCESSOR. 
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES -  A - 1, 3, 6 
*                 X - 0, 1, 3, 6
*                 B - 0, 1, 5, 7
* 
 PTFORM   SB7    REFPT       ENTRY POINT FOR REFORM COMMAND 
          SB5    B1          SET FOR X
          SX0    B0 
          SA1    DINITIAL 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT REFORM INITIAL
          SX0    X0+LDN 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED BINARY
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
  
*         CRACK  X
  
          SX7    B7 
          SA7    REFB        SAVE ENTRY ADDRESS 
          SA1    REFA 
          RJ     FIND        GET X
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          SX0    B3+LDN 
          SX1    STD+PA+1 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    REFB 
          SB7    X1          RESTORE ENTRY ADDRESS
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
  
 REFA     VFD    57/0,3/REG1           CONTROL WORD FOR X 
 REFB     DATA   0                     BUFFER FOR ENTRY ADDRESS 
  
 PTREAD   TITLE  PTREAD - PROCESS THE CM-3 READ STATEMENT.
**        PTREAD  -   PROCESS THE CM-3 READ STATEMENT.
* 
*         J. M. OJA  90/06/26.
* 
*         PTREAD  - PROCESS THE CM-3 READ STATEMENT.
*                 FORMAT IS;
* 
*                 READ CYL W TRK X SEC Y, ABT Z 
*                 READ DMA CYL W TRK X SEC Y, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT - PAC    = COMMON CODE TO PROCESS REST OF STATEMENT. 
* 
*         ROUTINES CALLED    NONE.
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
* 
*         USES   A - NONE.
*                X - 0. 
*                B - 7. 
* 
 PTREAD   SB7    RDWRPT      ENTRY POINT IN DRIVER FOR READ 
          SX0    B0          READ 
          EQ     PAC         ENTER COMMON SEQUENCE
  
 PTREL    TITLE  PTREL - PROCESS THE CM-3 REL STATEMENT.
**        PTREL   -  PROCESS THE CM-3 REL STATEMENT.
* 
*         J. M. OJA  90/06/26.
* 
*         PTREL   - PROCESS THE CM-3 REL STATEMENT. FORMAT IS 
*                 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 -  PAC4 - COMMON CM-3 PROCESSOR.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 PTREL    SB7    RELPT       ENTRY POINT FOR REL
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
  
 PTRES    TITLE  PTRES - PROCESS THE CM-3 RES STATEMENT.
**        PTRES   -   PROCESS THE CM-3 RES STATEMENT. 
* 
*         J. M. OJA  90/09/04.
* 
*         PTRES   - PROCESS THE CM-3 RES STATEMENT. 
*                 FORMAT IS;
* 
*                 RES CH, ABT Z 
*                 RES DRIVE, ABT Z
*                 RES SLAVE, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = RESPM (ADDRESS OF RESERVE ROUTINE IN DRIVER).
*                 PAC4 = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC4 - COMMON CM-3 PROCESSOR.
*                         -  CSTOREB - SAVE CODE GENERATED. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1, 3, 6. 
*                X - 1, 3, 6. 
*                B - 7. 
* 
 PTRES    SB7    RESPT       ENTRY POINT FOR RES
          SX0    X0+B0
          SA1    DCH
          BX1    X1-X3
          ZR     X1,RES1     IF RES CH(CM)
          SX0    X0+B1
          SA1    DDRIVE 
          BX1    X1-X3
          ZR     X1,RES1     IF RES DRIVE 
          SX0    X0+B1
          SA1    DSLAVE 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT RES DRIVE SLAVE OR CH 
 RES1     SX0    X0+LDN 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED BINARY
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
  
 PTWRITE  TITLE PTWRITE - PROCESS THE CM-3 WRITE STATEMENT. 
**        PTWRITE - PROCESS THE CM-3 WRITE STATEMENT. 
* 
*         J. M. OJA  90/06/26.
* 
*         PTWRITE - PROCESS THE CM-3 WRITE STATEMENT. 
*                 FORMAT IS;
* 
*                 WRITE CYL W TRK X SEC Y, ABT Z
*                 WRITE DMA CYL W TRK X SEC Y, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT - PAC    = COMMON CODE TO PROCESS REST OF STATEMENT. 
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
* 
*         USES   A - NONE.
*                X - 0. 
*                B - 7. 
* 
 PTWRITE  SB7    RDWRPT      ENTRY POINT IN DRIVER FOR WRITE
          SX0    2B          WRITE
          EQ     PAC         ENTER COMMON SEQUENCE
  
 PAC      TITLE  PAC - CM-3 COMMON CODE PROCESSOR.
**        PAC    COMMON CODE PROCESSOR. 
* 
*         J. M. OJA  90/06/26.
* 
*         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
* 
*         PROCESS DMA 
  
 PAC      ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SA1    DDMA 
          BX1    X1-X3
          NZ     X1,PAC1     IF NOT DMA 
          SX0    X0+1        SET DMA
          SA1    DDMA 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT DMA EXIT
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
 PAC1     SX0    X0+LDN 
          LX0    12 
          SX1    STD+PA 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
  
*         CRACK CYL W TRK X SEC Y 
  
 PAC2     SX7    B7 
          SA7    PACB        SAVE ENTRY ADDRESS 
          SB7    B0 
 PAC3     SA1    PACE+B7
          BX1    X1-X3
          NZ     X1,COM30    ERROR EXIT IF NOT CORRECT KEYWORD
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    PACA 
          RJ     FIND        GET W, X OR Y
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          SX0    B3+LDN 
          SX1    B7+STD+PA+55B
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    B7+B1
          SB6    3
          NE     B7,B6,PAC3  IF Y HAS NOT BEEN DONE YET 
          SA1    PACB 
          SB7    X1          RESTORE ENTRY ADDRESS
  
*         CRACK ABT Z 
  
 PAC4     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 CM-3
          BX0    X0+X1
          LX0    12 
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     COM10       EXIT TO COMPILER 
  
 PACA     VFD    57/0,3/REG1           CONTROL WORD FOR V,W,X AND Y 
 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
 PACE     VFD    60/3LCYL              KEYWORDS IN ORDER EXPECTED 
          VFD    60/3LTRK 
          VFD    60/3LSEC 
  
          EJECT 
