*COMDECK,MALETPU
          EJECT 
          QUAL   MALETPU
          IFNE   CMSE,0,1 
          USE    MODD 
          VFD    30/1,6/KEYPU,6/KEY2,18/0   CW FOR PU 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 (DAS)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0OBFWA
          DATA   7370B             RELATIVE FWA OF OB 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0IB 
          DATA   2010B       MAX VALUE FOR IB FOR PP OVERLAY (DAS)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0IBFWA
          DATA   5360B             RELATIVE FWA OF IB 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SB 
          DATA   236B        MAX VALUE FOR SB FOR PP OVERLAY (DAS)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SBFWA
          DATA   11400B            RELATIVE FWA OF SB 
          USE    *
  
*         DAS FULL TRACK ENTRY POINTS.
  
 EXECPU   EQU    0
 RDLGPU   EQU    1
 RDWRPU   EQU    2
 RELPU    EQU    3
 RESPU    EQU    4
 REFPU    EQU    5
  
          IFNE   CMSE,0,1 
          USE    PKEY 
          VFD    24/0,18/LPU,18/TPU 
 KEYPU    EQU    *-PKEY+PKEYOFF 
          USE    *
  
*         LEGAL HIGH-LEVEL I/O COMMANDS FOR DAS 
  
 TPU      VFD    42/7LEXECUTE,18/PUEXEC 
          VFD    42/7LREADLOG,18/PURDLG 
          VFD    42/4LREAD,18/PUREAD
          VFD    42/6LREFORM,18/PUFORM
          VFD    42/3LREL,18/PUREL
          VFD    42/3LRES,18/PURES
          VFD    42/5LWRITE,18/PUWRITE
 LPU      EQU    *-TPU
  
*         CONSTANTS USED BY DAS 
  
 DCH      VFD    60/2LCH
 DCM      VFD    60/2LCM
 DCONTROL VFD    60/10LCONTROLLER 
 DDMA     VFD    60/3LDMA 
 DDRIVE   VFD    60/5LDRIVE 
 DLOGICAL VFD    60/7LLOGICAL 
 DINITIAL VFD    60/7LINITIAL 
 DPHYSIC  VFD    60/8LPHYSICAL
 DSLAVE   VFD    60/5LSLAVE 
  
 PUEXEC   TITLE  PUEXEC - PROCESS THE DAS EXECUTE STATEMENT.
**        PUEXEC - PROCESS THE DAS EXECUTE STATEMENT. 
* 
*         J. M. OJA  90/09/04.
* 
*         PUEXEC  - PROCESS THE DAS EXECUTE STATEMENT.
*                 FORMAT IS;
* 
*                 EXECUTE CM X, ABT Z 
*                 EXECUTE DRIVE LOGICAL, ABT Z
*                 EXECUTE DRIVE PHYSICAL X, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = EXECPU (ADDRESS OF EXECUTE ROUTINE IN DRIVER). 
*                 (PA) = 0 IF CM
*                      = 1 IF LOGICAL DRIVE 
*                      = 2 IF PHYSICAL DRIVE
*                 (PA+1)= CM DIAGNOSTIC TEST NUMBER OR
*                       = DRIVE NUMBER
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC - COMMON DAS 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
* 
 PUEXEC   SB7    EXECPU      ENTRY POINT FOR EXECUTE COMMAND
          SB5    B1          SET FOR X
          SX0    B0 
          SA1    DCM
          BX1    X1-X3
          ZR     X1,EXEC2    IF EXECUTE CM
          SA1    DDRIVE 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT EXECUTE DRIVE 
          SA3    A3+B1
          SX0    X0+B1
          SA1    DLOGICAL 
          BX1    X1-X3
          ZR     X1,EXEC1    IF EXECUTE LOGICAL 
          SX0    X0+B1
          SA1    DPHYSIC
          BX1    X1-X3
          NZ     X1,COM30    IF NOT EXECUTE PHYSICAL
          EQ     EXEC2       IF EXECUTE PHYSICAL DRIVE
 EXEC1    SB5    B0          X NOT NEEDED FOR 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 
  
 PUFORM   TITLE  PUFORM - PROCESS THE DAS REFORM STATEMENT. 
**        PUFORM - PROCESS THE DAS REFORM STATEMENT.
* 
*         J. M. OJA  90/09/04.
* 
*         PUFORM  - PROCESS THE DAS REFORM STATEMENT. 
*                 FORMAT IS;
* 
*                 REFORM INITIAL X, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = REFPU (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 DAS 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
* 
 PUFORM   SB7    REFPU       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 
  
 PURDLG   TITLE  PURDLG - PROCESS THE DAS READLOG STATEMENT.
**        PURDLG   -   PROCESS THE DAS READLOG STATEMENT. 
* 
*         J. M. OJA  90/09/04.
* 
*         PURDLG   - PROCESS THE DAS READLOG STATEMENT. 
*                 FORMAT IS;
* 
*                 READLOG CONTROLLER, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = RDLGPM (ADDRESS OF READLOG ROUTINE IN DRIVER). 
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  PAC4 - COMMON DAS PROCESSOR. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
* 
*         USES   A - 1, 3, 6. 
*                X - 1, 3, 6. 
*                B - 7. 
* 
 PURDLG   SB7    RDLGPU       ENTRY POINT FOR READLOG 
          SA1    DCONTROL 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT READLOG CONTROLLER
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
  
 PUREAD   TITLE  PUREAD - PROCESS THE DAS READ STATEMENT. 
**        PUREAD  -   PROCESS THE DAS READ STATEMENT. 
* 
*         J. M. OJA  90/09/04.
* 
*         PUREAD  - PROCESS THE DAS 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. 
* 
 PUREAD   SB7    RDWRPU      ENTRY POINT IN DRIVER FOR READ 
          SX0    B0          READ 
          EQ     PAC         ENTER COMMON SEQUENCE
  
 PUREL    TITLE  PUREL - PROCESS THE DAS REL STATEMENT. 
**        PUREL   -  PROCESS THE DAS REL STATEMENT. 
* 
*         J. M. OJA  90/09/04.
* 
*         PUREL   - PROCESS THE DAS 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 DAS PROCESSOR. 
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 PUREL    SB7    RELPU       ENTRY POINT FOR REL
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
  
 PURES    TITLE  PURES - PROCESS THE DAS RES STATEMENT. 
**        PURES   -   PROCESS THE DAS RES STATEMENT.
* 
*         J. M. OJA  90/09/04.
* 
*         PURES   - PROCESS THE DAS 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 DAS 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. 
* 
 PURES    SB7    RESPU       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
  
 PUWRITE  TITLE PUWRITE - PROCESS THE DAS WRITE STATEMENT.
**        PUWRITE - PROCESS THE DAS WRITE STATEMENT.
* 
*         J. M. OJA  90/09/04.
* 
*         PUWRITE - PROCESS THE DAS 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. 
* 
 PUWRITE  SB7    RDWRPU      ENTRY POINT IN DRIVER FOR WRITE
          SX0    2B          WRITE
          EQ     PAC         ENTER COMMON SEQUENCE
  
 PAC      TITLE  PAC - DAS COMMON CODE PROCESSOR. 
**        PAC    COMMON CODE PROCESSOR. 
* 
*         J. M. OJA  90/09/04.
* 
*         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 DAS 
          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 
