*COMDECK MALETP6
          EJECT 
          QUAL   MALETP6
          IFNE   CMSE,0,1 
          USE    MODD 
          VFD    30/1,6/KEY22,6/KEY2,18/0 CW FOR P6 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   505B        MAX VALUE FOR OB FOR P6 OVERLAY (841)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0OBFWA
          DATA   6105B             RELATIVE FWA OF OB 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0IB 
          DATA   505B        MAX VALUE FOR IB FOR P6 OVERLAY (841)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0IBFWA
          DATA   5400B             RELATIVE FWA OF IB 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SB 
          DATA   7           MAX VALUE FOR SB FOR P6 OVERLAY (841)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SBFWA
          DATA   6612B             RELATIVE FWA OF SB 
          USE    *
  
  
*         P6 (841 DISK) PRODUCT OVERLAY ENTRY POINTS
  
 RELP6    EQU    POVL 
 RESP6    EQU    RELP6+4
 READP6   EQU    RESP6+4
 RDCWP6   EQU    READP6+4 
 RESETP6  EQU    RDCWP6+4 
 RTNP6    EQU    RESETP6+4
 SEEKP6   EQU    RTNP6+4
 STATP6   EQU    SEEKP6+4 
 VERP6    EQU    STATP6+4 
 WRITEP6  EQU    VERP6+4
          IFNE   CMSE,0,1 
          USE    PKEY 
          VFD    24/0,18/LKEY22,18/TKEY22 
 KEY22    EQU    *-PKEY+PKEYOFF 
          USE    *
  
*         LEGAL HIGH-LEVEL I/O COMMANDS FOR 841 DISK
  
 TKEY22   VFD    42/4LREAD,18/P6READ
          VFD    42/6LREADCW,18/P6RDCW
          VFD    42/3LREL,18/P6REL
          VFD    42/3LRES,18/P6RES
          VFD    42/5LRESET,18/P6RESET
          VFD    42/7LRTNADDR,18/P6RTN
          VFD    42/4LSEEK,18/P6SEEK
          VFD    42/6LSTATUS,18/P6STAT
          VFD    42/6LVERIFY,18/P6VER 
          VFD    42/5LWRITE,18/P6WRITE
 LKEY22   EQU    *-TKEY22 
          EJECT 
 P6READ   TITLE  P6READ  - PROCESS THE 841 READ STATEMENT.
**        P6READ  -   PROCESS THE 841 READ STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P6READ  - PROCESS THE 841 READ  STATEMENT. FORMATS ARE; 
* 
*                 READ V SECTORS AT CYL W TRK X SEC Y, ABT Z
*                 READ V CODED SECTORS AT CYL W TRK X SEC Y, ABT Z
* 
* 
*         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 -  FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CSTOREB- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 P6READ   SB7    READP6      ENTRY POINT FOR READ 
          EQ     P4C         ENTER COMMON 844 SEQUENCE
          EJECT 
 P6RDCW   TITLE  P6RDCW  - PROCESS THE 841 READCW STATEMENT.
**        P6RDCW  -   PROCESS THE 841 READCW STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P6RDCW  - PROCESS THE 841 READCW STATEMENT. FORMAT IS;
* 
*                  READCW CYL W TRK X SEC Y, ABT Z
* 
*         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 -  FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CSTOREB- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 P6RDCW   SB7    RDCWP6      ENTRY POINT FOR READCW 
          EQ     P4C2        ENTER COMMON 844 SEQUENCE
          EJECT 
 P6REL    TITLE  P6REL   - PROCESS THE 841 REL STATEMENT. 
**        P6REL   -   PROCESS THE 841 REL STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P6REL   - PROCESS THE 841  REL  STATEMENT. FORMAT IS; 
* 
*                  REL, ABT Z 
* 
*         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 -  FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CSTOREB- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 P6REL    SB7    RELP6       ENTRY POINT FOR REL
          EQ     P4C4        ENTER COMMON 844 SEQUENCE
          EJECT 
 P6RES    TITLE  P6RES   - PROCESS THE 841  RES  STATEMENT. 
**        P6RES   -   PROCESS THE 841  RES STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P6RES   - PROCESS THE 841  RES  STATEMENT. FORMAT IS; 
* 
*                 RES, ABT Z
* 
*         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 -  FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CSTOREB- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 P6RES    SB7    RESP6       ENTRY POINT FOR RES
          EQ     P4C4        ENTER COMMON 844 SEQUENCE
          EJECT 
 P6RESET  TITLE  P6RESET - PROCESS THE 841 RESET STATEMENT. 
**        P6RESET -   PROCESS THE 841 RESET STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P6RESET - PROCESS THE 841 RESET  STATEMENT. FORMAT IS;
* 
*                  RESET, ABT Z 
* 
*         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 -  FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CSTOREB- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 P6RESET  SB7    RESETP6     ENTRY POINT FOR RESET
          EQ     P4C4        ENTER COMMON 844 SEQUENCE
          EJECT 
 P6RTN    TITLE  P6RTN   - PROCESS THE 841 RTNADDR STATEMENT. 
**        P6RTN   -   PROCESS THE 841 RTNADDR STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P6RTN   - PROCESS THE 841 RTNADDR STATEMENT. FORMAT IS; 
* 
*                 RTNADDR TO Y, ABT Z 
* 
*         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 -  FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CSTOREB- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 P6RTN    SB7    RTNP6       ENTRY POINT FOR RTNADDR
          EQ     P4RT1       ENTER 844 RTNADDR  SEQUENCE
          EJECT 
 P6SEEK   TITLE  P6SEEK  - PROCESS THE 841 SEEK  STATEMENT. 
**        P6SEEK  -   PROCESS THE 841 SEEK STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P6SEEK  - PROCESS THE 841 SEEK  STATEMENT. FORMAT IS; 
* 
*                  SEEK CYL W TRK X SEC Y, ABT Z
* 
*         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 -  FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CSTOREB- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 P6SEEK   SB7    SEEKP6      ENTRY POINT FOR SEEK 
          EQ     P4C2        ENTER COMMON 844 SEQUENCE
          EJECT 
 P6STAT   TITLE  P6STAT  - PROCESS THE 841 STATUS STATEMENT.
**        P6STAT  -   PROCESS THE 841 STATUS STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P6STAT  - PROCESS THE 841 STATUS STATEMENT. FORMAT IS;
* 
*                 STATUS, ABT Z 
* 
*         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 -  FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CSTOREB- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 P6STAT   SB7    STATP6      ENTRY POINT FOR STATUS 
          EQ     P4C4        ENTER COMMON 844 SEQUENCE
          EJECT 
 P6VER    TITLE  P6VER   - PROCESS THE 841 VERIFY STATEMENT.
**        P6VER   -   PROCESS THE 841 VERIFY STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P6VER   - PROCESS THE 841 VERIFY STATEMENT. FORMATS ARE;
* 
*                 VERIFY V SECTORS AT CYL W TRK X SEC Y, ABT Z
*                 VERIFY V CODED SECTORS AT CYL W TRK X SEC Y, ABT Z
* 
*         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 -  FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CSTOREB- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 P6VER    SB7    VERP6       ENTRY POINT FOR VERIFY 
          EQ     P4C         ENTER COMMON 844 SEQUENCE
          EJECT 
 P6WRITE  TITLE  P6WRITE - PROCESS THE 841 WRITE STATEMENT. 
**        P6WRITE -   PROCESS THE 841 WRITE STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P6WRITE - PROCESS THE 841 WRITE  STATEMENT. FORMATS ARE;
* 
* 
*         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 -  FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CSTOREB- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 P6WRITE  SB7    WRITEP6     ENTRY POINT FOR WRITE
          EQ     P4C         ENTER COMMON 844 SEQUENCE
  
*         PROCESS V CODED/NOT CODED SECTORS AT
  
 P4C      ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SX0    X0+LDN 
          SA1    P4CA 
          RJ     FIND        GET V
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          SX2    B3+LDN      CODE = LDN V 
          SA1    DCODED 
          BX1    X1-X3
          ZR     X1,P4C0A 
          SA1    DC 
          BX1    X1-X3
          NZ     X1,P4C0     IF NOT C 
 P4C0A    SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SX0    X0+20B      SET CODED FLAG BIT 
 P4C0     LX0    12 
          SX1    STD+PA 
          BX0    X0+X1
          LX0    12 
          SX1    STD+PA+53B 
          BX0    X0+X2
          LX0    12 
          BX0    X0+X1       CODE= LDN FLAGS  STD PA  LDN V  STD PA+53B 
 P4C1     RJ     CSTOREB     SAVE GENERATED CODE
          SA1    DSECTOR
          BX1    X1-X3
          ZR     X1,P4C1A    IF SECTORS KEYWORD 
          SA1    P4CE+2 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT SEC THEN SYNTAX ERROR 
 P4C1A    SA3    A3+B1
          SA1    DAT
          BX1    X1-X3
          NZ     X1,COM30    ERROR EXIT IF NEXT ITEM IS NOT AT
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
  
*         CRACK CYL W TRK X SEC Y 
  
 P4C2     SX7    B7 
          SA7    P4CB        SAVE ENTRY ADDRESS 
          SB7    B0 
 P4C3     SA1    P4CE+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    P4CA 
          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,P4C3  IF Y HAS NOT BEEN DONE YET 
          SA1    P4CB 
          SB7    X1          RESTORE ENTRY ADDRESS
  
*         CRACK ABT Z 
  
 P4C4     SA1    DABT 
          BX1    X3-X1
          NZ     X1,COM30    ERROR EXIT IF NEXT ITEM IS NOT ABT 
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SA1    P4CC 
          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    P4CD 
          SX2    B7          COMMAND ENTRY ADDRESS
          BX0    X1+X2       CODE = LDC 0  RJM ENTRY
          RJ     CABSPPU           ABSOLUTIZE PPU ADDRESSES 
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     COM10       EXIT TO COMPILER 
  
 P4CA     VFD    57/0,3/REG1           CONTROL WORD FOR V,W,X AND Y 
 P4CB     DATA   0                     BUFFER FOR ENTRY ADDRESS 
 P4CC     VFD    42/0,12/77B,6/0       CONTROL WORD FOR Z 
 P4CD     VFD    12/0,12/LDC,12/0,12/RJM,12/0 
 P4CE     VFD    60/3LCYL              KEYWORDS IN ORDER EXPECTED 
          VFD    60/3LTRK 
          VFD    60/3LSEC 
 P4RT1    SA1    DTO
          BX1    X1-X3
          NZ     X1,COM30    ERROR EXIT IF NEXT ITEM IS NOT TO
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    P4RTA
          RJ     FIND        GET Y
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          RJ     CLOADC      GENERATE LOAD CONSTANT Y CODE
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     P4C4        ENTER COMMON SEQUENCE
  
 P4RTA    VFD    54/0,3/BUF4,3/0       CONTROL WORD FOR Y 
