*COMDECK MALETP3
          EJECT 
          QUAL   MALETP3
          IFNE   CMSE,0,1 
          USE    MODD 
          VFD    30/1,6/KEY12,6/KEY2,18/0 CW FOR P3 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 P3 OVERLAY (667X) 
          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 P3 OVERLAY (667X) 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0IBFWA
          DATA   5400B             RELATIVE FWA OF IB 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SB 
          DATA   74B         MAX VALUE FOR SB FOR P3 OVERLAY (667X) 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SBFWA
          DATA   6600B             RELATIVE FWA OF SB 
          USE    *
  
*         P3 ( 667X MUX) PRODUCT OVERLAY ENTRY POINTS.
  
 RELP3    EQU    POVL 
 RESP3    EQU    RELP3+4
 INP3     EQU    RESP3+4
 MAINRDP3 EQU    INP3+4 
 MAINWRP3 EQU    MAINRDP3+4 
 MCP3     EQU    MAINWRP3+4 
 MEMRDP3  EQU    MCP3+4 
 MEMWRP3  EQU    MEMRDP3+4
 OUTP3    EQU    MEMWRP3+4
 RDP3     EQU    OUTP3+4
 STATP3   EQU    RDP3+4 
 WAITP3   EQU    STATP3+4 
 WRP3     EQU    WAITP3+4 
          IFNE   CMSE,0,1 
          USE    PKEY 
          VFD    24/0,18/LKEY12,18/TKEY12 
 KEY12    EQU    *-PKEY+PKEYOFF 
          USE    *
  
*         LEGAL HIGH-LEVEL I/O STATEMENTS FOR 667X. 
  
 TKEY12   VFD    42/5LINPUT,18/P3IN 
          VFD    42/6LMCLEAR,18/P3MC
          VFD    42/7LMAINTRD,18/P3MRD
          VFD    42/7LMAINTWR,18/P3MWR
          VFD    42/5LMEMRD,18/P3MEMRD
          VFD    42/5LMEMWR,18/P3MEMWR
          VFD    42/6LOUTPUT,18/P3OUT 
          VFD    42/4LREAD,18/P3RD
          VFD    42/3LREL,18/P3REL
          VFD    42/3LRES,18/P3RES
          VFD    42/6LSTATUS,18/P3STAT
          VFD    42/4LWAIT,18/P3WAIT
          VFD    42/5LWRITE,18/P3WR 
 LKEY12   EQU    *-TKEY12 
          EJECT 
 P3IN     TITLE  P3IN - PROCESS THE 667X IN STATEMENT.
**        P3IN - PROCESS THE 667X IN STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P3IN - PROCESS THE 667X INPUT STATEMENT. FORMATS AS FOLLOWS;
* 
*                INPUT
*                INPUT, 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. 
*                            CLOADC - GEN. LOAD CONST. INSTRUCTIONS 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1, 6.
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 P3IN     ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SA1    DTO
          BX3    X3-X1
          NZ     X3,COM30    ERROR EXIT IF NEXT ITEM IS NOT TO
          SX6    A3+B1
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    P3CA 
          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       CODE = LOAD Y  STD PA
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    INP3        ENTRY POINT IN PPU OVERLAY 
          EQ     P1C         ENTER COMMON SEQUENCE
          EJECT 
 P3MC     TITLE  P3MC - PROCESS THE 667X MCLEAR STATEMENT.
**        P3MC - PROCESS THE 667X MCLEAR STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P3MC - PROCESS THE 667X MCLEAR STATEMENT. FORMATS AS
*                FOLLOWS; 
* 
*         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. 
* 
 P3MC     SB7    MCP3        ENTRY POINT IN PPU OVERLAY 
          EQ     P1C         ENTER COMMON SEQUENCE
  
          EJECT 
 P3MRD    TITLE  P3MRD - PROCESS THE 667X MAINRD STATEMENT. 
**        P3MRD - PROCESS THE 667X MAINRD STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P3MRD - PROCESS THE 667X MAINRD STATEMENT. FORMATS AS 
*                 FOLLOWS;
* 
* 
* 
*         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. 
*                            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, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 P3MRD    ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SA1    DWORD
          BX3    X3-X1
          NZ     X3,COM30    ERROR EXIT IF NEXT ITEM IS NOT WORD
          SX6    A3+B1
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    P3CB 
          RJ     FIND        GET WORD W 
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          RJ     CLOAD       GENERATE LOAD W CODE 
          LX0    12 
          SX1    STD+PA 
          BX0    X0+X1       CODE = LOAD W  STD PA
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    DTO
          BX3    X3-X1
          NZ     X3,COM30    ERROR EXIT IF NEXT ITEM IS NOT TO
          SX6    A3+B1
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    P3CA 
          RJ     FIND        GET X
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          RJ     CLOADC      GENERATE LOAD CONSTANT X CODE
          LX0    12 
          SX1    STD+PA+1 
          BX0    X0+X1       CODE = LOAD X  STD PA+1
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    DFROM
          BX1    X3-X1
          ZR     X1,P3M0           IF PORT DEFINED                       MAL008K
          SB2    B1+B1                                                   MAL008K
          SA1    FCMSE                                                   MAL008K
          SB3    P0                DEFAULT PORT                          MAL008K
          ZR     X1,P3M1           IF ON-LINE COMPILE                    MAL008K
          SB3    P0OFF+B1 
          EQ     P3M1                                                    MAL008K
 P3M0     SA1    DPORT                                                   MAL008K
          SA3    A3+B1       GET NEXT ITEM FROM CRKBUF
          BX3    X3-X1
          NZ     X3,COM30    ERROR EXIT IF NEXT ITEM IS NOT PORT
          SX6    A3+B1
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    P3CC 
          RJ     FIND        GET Y
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
 P3M1     RJ     CLOAD             GENERATE LOAD Y CODE                  MAL008K
          LX0    12                                                      MAL008K
          SX1    STD+PA+2 
          BX0    X0+X1       CODE = LOAD Y  STD+PA+2
          RJ     CSTOREB     SAVE GENERATED CODE
          SX0    LDN         SET DEFAULT CODE IF HOLD IS NOT DEFINED
          SA1    DHOLD
          BX1    X1-X3
          NZ     X1,P3M2     IF HOLD IS NOT DEFINED 
          SX0    X0+B1       SET CODE = LDN 1 
          SA3    A3+B1       READ NEXT ITEM IN CRKBUF 
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
 P3M2     LX0    12 
          SX1    STD+PA+3 
          BX0    X0+X1       CODE = LDN FLAG  STD PA+3
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    MAINRDP3    ENTRY POINT IN PPU OVERLAY 
          EQ     P1C         ENTER COMMON SEQUENCE
          EJECT 
 P3MWR    TITLE  P3MWR - PROCESS THE 667X MAINWR STATEMENT. 
**        P3MWR - PROCESS THE 667X MAINWR STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P3MWR - PROCESS THE 667X MAINWR STATEMENT. FORMATS AS 
*                 FOLLOWS;
* 
*         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. 
*                            CLOAD  - GEN. LOAD INSTRUCTIONS. 
*                            CSTOREB- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
*                            PCRK   - 
*                            DWORD  - 
*                            P3CD   - 
* 
*         USES   A - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 P3MWR    ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SA1    P3CD 
          RJ     FIND        GET W
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          RJ     CLOAD       GENERATE LOAD W CODE 
          LX0    12 
          SX1    STD+PA 
          BX0    X0+X1       CODE = LOAD W  STD PA
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    DTO
          BX3    X3-X1
          NZ     X3,COM30    ERROR EXIT IF NEXT ITEM IS NOT TO
          SA1    DWORD
          SA3    A3+B1
          BX3    X3-X1
          NZ     X3,COM30    ERROR EXIT IF NEXT ITEM IS NOT WORD
          SX6    A3+B1
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    P3CB 
          RJ     FIND        GET X
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          RJ     CLOAD       GENERATE LOAD X CODE 
          LX0    12 
          SX1    STD+PA+1 
          BX0    X0+X1       CODE = LOAD X  STD PA+1
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    DOF
          BX1    X1-X3
          ZR     X1,P3W0           IF PORT DEFINED                       MAL008K
          SB2    B1+B1                                                   MAL008K
          SA1    FCMSE                                                   MAL008K
          SB3    P0                DEFAULT PORT                          MAL008K
          ZR     X1,P3W1           IF ON-LINE COMPILE                    MAL008K
          SB3    P0OFF+B1 
          EQ     P3W1                                                    MAL008K
 P3W0     SA3    A3+B1                                                   MAL008K
          SA1    DPORT
          BX3    X3-X1
          NZ     X3,COM30    ERROR EXIT IF NEXT ITEM IS NOT PORT
          SX6    A3+B1
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    P3CC 
          RJ     FIND        GET PORT Y 
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
 P3W1     RJ     CLOAD             GENERATE LOAD Y CODE                  MAL008K
          LX0    12                                                      MAL008K
          SX1    STD+PA+2 
          BX0    X0+X1       CODE = LOAD Y  STD PA+2
          RJ     CSTOREB     SAVE GENERATED CODE
          SX0    LDN         DEFAULT CODE IN CASE HOLD IS NOT DEFINED 
          SA1    DHOLD
          BX1    X1-X3
          NZ     X1,P3W2     IF HOLD IS NOT SPECIFIED 
          SX0    X0+B1       CODE = LDN 1 
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
 P3W2     LX0    12 
          SX1    STD+PA+3 
          BX0    X0+X1       CODE = LDN  FLAG   STD PA+3
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    MAINWRP3    ENTRY POINT IN PPU OVERLAY 
          EQ     P1C         ENTER COMMON SEQUENCE
  
          EJECT 
 P3MEMRD  TITLE  P3MEMRD - PROCESS THE 667X MEMRD STATEMENT.
**        P3MEMRD - PROCESS THE 667X MEMRD STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P3MEMRD - PROCESS THE 667X MEMRD STATEMENT. FORMATS AS
*                   FOLLOWS;
* 
*         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. 
* 
 P3MEMRD  SB7    MEMRDP3     ENRTY POINT IN PPU OVERLAY 
          EQ     P1C         ENTER COMMON SEQUENCE
  
          EJECT 
 P3MEMWR  TITLE  P3MEMWR - PROCESS THE 667X MEMWR STATEMENT.
**        P3MEMWR - PROCESS THE 667X MEMWR STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P3MEMWR - PROCESS THE 667X MEMWR STATEMENT.  FORMATS AS 
*                   FOLLOWS;
* 
*         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. 
* 
 P3MEMWR  SB7    MEMWRP3     ENTRY POINT IN PPU OVERLAY 
          EQ     P1C         ENTER COMMON SEQUENCE
          EJECT 
 P3OUT    TITLE  P3OUT - PROCESS THE 667X OUTPUT STATEMENT. 
**        P3OUT - PROCESS THE 667X OUTPUT STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P3OUT - PROCESS THE 667X OUTPUT STATEMENT. FORMATS AS 
*                 FOLLOWS;
* 
*         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. 
*                            CLOAD  - GEN. LOAD INSTRUCTIONS. 
* 
*         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. 
* 
 P3OUT    ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SA1    P3CD 
          RJ     FIND        GET X
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          RJ     CLOAD       GENERATE LOAD X CODE 
          LX0    12 
          SX1    STD+PA 
          BX0    X0+X1       CODE = LOAD X  STD PA
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    DTO
          BX1    X1-X3
          ZR     X1,P3O0           IF PORT DEFINED                       MAL008K
          SB2    B1+B1                                                   MAL008K
          SA1    FCMSE                                                   MAL008K
          SB3    P0                                                      MAL008K
          ZR     X1,P3O1           IF ON-LINE COMPILE                    MAL008K
          SB3    P0OFF+B1 
          EQ     P3O1                                                    MAL008K
 P3O0     SA1    DPORT                                                   MAL008K
          SA3    A3+B1
          BX3    X3-X1
          NZ     X3,COM30    ERROR EXIT IF NEXT ITEM IS NOT PORT
          SX6    A3+B1
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    P3CC 
          RJ     FIND        GET PORT Y 
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
 P3O1     RJ     CLOAD             GENERATE LOAD Y CODE                  MAL008K
          LX0    12                                                      MAL008K
          SX1    STD+PA+1 
          BX0    X0+X1       CODE = LOAD Y  STD PA+1
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    OUTP3       ENTRY POINT IN PPU OVERLAY 
          EQ     P1C         ENTER COMMON SEQUENCE
          EJECT 
 P3RD     TITLE  P3RD - PROCESS THE 667X READ STATEMENT.
**        P3RD - PROCESS THE 667X READ STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P3RD - PROCESS THE 667X READ STATEMENT. FORMATS AS FOLLOWS; 
* 
* 
*         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. 
*                            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, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 P3RD     SA1    DTO
          BX3    X1-X3
          NZ     X3,COM30    ERROR EXIT IF NEXT ITEM IS NOT TO
          SX6    A3+B1
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    P3CA 
          RJ     FIND        GET X
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          RJ     CLOADC      GENERATE LOAD X CONSTANT CODE
          LX0    12 
          SX1    STD+PA 
          BX0    X0+X1       CODE = LOADC X  STD PA 
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    DFROM
          BX1    X3-X1
          ZR     X1,P3R0           IF PORT DEFINED                       MAL008K
          SB2    B1+B1                                                   MAL008K
          SA1    FCMSE                                                   MAL008K
          SB3    P1                DEFAULT PORT                          MAL008K
          ZR     X1,P3R1           IF ON-LINE COMPILE                    MAL008K
          SB3    P0OFF+B1 
          SB3    B3+B1
          EQ     P3R1                                                    MAL008K
 P3R0     SA3    A3+B1                                                   MAL008K
          SA1    DPORT
          BX3    X3-X1
          NZ     X3,COM30    ERROR EXIT IF NEXT ITEM IS NOT PORT
          SX6    A3+B1
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    P3CC 
          RJ     FIND        GET PORT Y 
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
 P3R1     RJ     CLOAD             GENERATE LOAD Y CODE                  MAL008K
          LX0    12                                                      MAL008K
          SX1    STD+PA+1 
          BX0    X0+X1       CODE = LOAD Y  STD PA+1
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    RDP3        ENTRY POINT IN PPU OVERLAY 
          EQ     P1C         ENTER COMMON SEQUENCE
          EJECT 
 P3REL    TITLE  P3REL - PROCESS THE 667X REL STATEMENT.
**        P3REL - PROCESS THE 667X REL STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P3REL - PROCESS THE 667X REL STATEMENT. FORMATS AS FOLLOWS; 
* 
* 
*         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. 
* 
 P3REL    SB7    RELP3       ENTRY POINT IN PPU OVERLAY 
          EQ     P1C         ENTER COMMON SEQUENCE
          EJECT 
 P3RES    TITLE  P3RES - PROCESS THE 667X RES STATEMENT.
**        P3RES - PROCESS THE 667X RES STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P3RES - PROCESS THE 667X RES STATEMENT. FORMATS AS FOLLOWS; 
* 
*         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. 
* 
  
 P3RES    SB7    RESP3       ENTRY POINT IN PPU OVERLAY 
          EQ     P1C         ENTER COMMON SEQUENCE
          EJECT 
 P3STAT   TITLE  P3STAT - PROCESS THE 667X STATUS STATEMENT.
**        P3STAT - PROCESS THE 667X STATUS STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P3STAT - PROCESS THE 667X STATUS STATEMENT. FORMATS AS
*                  FOLLOWS; 
* 
*         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 - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 P3STAT   SA1    DTO
          BX3    X3-X1
          NZ     X3,COM30    ERROR EXIT IF NEXT ITEM IS NOT TO
          SX6    A3+B1
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    P3CE 
          RJ     FIND        GET Y
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          RJ     CLOADC      GENERATE LOAD CONSTANT Y CODE
          LX0    12 
          SX1    STD+PA 
          BX0    X0+X1       CODE = LOADC Y  STD PA 
          RJ     CSTOREB     SAVE GENERATED CODE
          SX0    LDN         DEFAULT CODE IF HOLD IS NOT SPECIFIED
          SA1    DHOLD
          BX1    X1-X3
          NZ     X1,P3S1     IF HOLD IS NOT SPECIFIED 
          SX0    X0+B1       CODE = LDN 1 
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
 P3S1     LX0    12 
          SX1    STD+PA+1 
          BX0    X0+X1       CODE = LDN FLAG  STD PA+1
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    STATP3      ENTRY POINT IN PPU OVERLAY 
          EQ     P1C         ENTER COMMON SEQUENCE
          EJECT 
 P3WAIT   TITLE  P3WAIT - PROCESS THE 667X WAIT STATEMENT.
**        P3WAIT - PROCESS THE 667X WAIT STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P3WAIT - PROCESS THE 667X WAIT STATEMENT. FORMATS AS FOLLOWS; 
* 
* 
*         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- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1, 3.
*                X - 0, 1, 3. 
*                B - NONE.
* 
 P3WAIT   SA1    DCHAR
          SX0    LDN         CODE FOR CHARACTER TIME DELAY
          BX1    X1-X3
          ZR     X1,P3D1     IF WAIT CHAR 
          SA1    DHALF
          SX0    X0+B1       CODE FOR HALF CHARACTER DELAY
          BX1    X1-X3
          ZR     X1,P3D1     IF WAIT HALF 
          SA1    DBIT 
          SX0    X0+B1       CODE FOR BIT DELAY 
          BX1    X3-X1
          NZ     X1,COM30    ERROR EXIT IF NOT CHAR, HALF, OR BIT 
 P3D1     SA3    A3+B1
          NZ     X3,COM30    ERROR EXIT IF NOT END OF STATEMENT 
          SA1    P3D2 
          LX0    24 
          BX0    X0+X1       CODE = LDN FLAG   RJM WAIT 
          RJ     CABSPPU           ABSOLUTIZE PPU ADDRESSES 
          RJ     CSTOREB
          EQ     COM10       EXIT TO COMPILER 
  
 P3D2     VFD    36/0,12/RJM,12/WAITP3
          EJECT 
 P3WR     TITLE  P3WR - PROCESS THE 667X WRITE STATEMENT. 
**        P3WR - PROCESS THE 667X WRITE STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P3WR - PROCESS THE 667X WRITE STATEMENT. FORMATS AS FOLLOWS;
* 
* 
*         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. 
*                            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, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
  
 P3WR     ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SA1    P3CD 
          RJ     FIND        GET X
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          RJ     CLOAD       GENERATE LOAD X CODE 
          LX0    12 
          SX1    STD+PA 
          BX0    X0+X1       CODE = LOAD X  STD PA
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    DTO
          BX1    X1-X3
          ZR     X1,P3WR0          IF PORT DEFINED                       MAL008K
          SB2    B1+B1                                                   MAL008K
          SA1    FCMSE                                                   MAL008K
          SB3    P0                DEFAULT PORT                          MAL008K
          ZR     X1,P3WR1          IF ON-LINE COMPILE                    MAL008K
          SB3    P0OFF+B1 
          EQ     P3WR1                                                   MAL008K
 P3WR0    SA1    DPORT                                                   MAL008K
          SA3    A3+B1
          BX3    X3-X1
          NZ     X3,COM30    ERROR EXIT IF NEXT ITEM IS NOT PORT
          SX6    A3+B1
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    P3CC 
          RJ     FIND        GET PORT Y 
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
 P3WR1    RJ     CLOAD             GENERATE LOAD Y CODE                  MAL008K
          LX0    12                                                      MAL008K
          SX1    STD+PA+1 
          BX0    X0+X1       CODE = LOAD Y  STD PA+1
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    WRP3        ENTRY ADDRESS IN PPU OVERLAY 
          EQ     P1C         ENTER COMMON SEQUENCE
  
 P3CA     VFD    54/0,3/BUF4,3/0                CW FOR IB 
 P3CB     VFD    42/0,12/7,3/0,3/REG2           CW FOR WORD W 
 P3CC     VFD    57/0,3/REG4                    CW FOR P0, P1 
 P3CD     VFD    42/0,12/7777B,3/BUF1,3/REG2    CW FOR OUTPUT WORD
 P3CE     VFD    54/0,3/BUF4,3/0                CW FOR IB 
 P1C      SX0    LDN
          ZR     X3,P1C1     IF END OF STATEMENT
          SX0    LDC
          LX0    12 
 P1C1     SX1    B7          PPU ENTRY ADDRESS
          SX2    RJM
          LX0    24 
          LX2    12 
          BX0    X0+X1
          BX0    X0+X2
          RJ     CABSPPU           ABSOLUTIZE PPU ADDRESSES 
          ZR     X3,P1C2     IF END OF STATEMENT
          SA1    DABT 
          BX3    X3-X1
          NZ     X3,COM30    ERROR EXIT IF NOT ABT
          SA1    PCRK 
          SX6    X1+B1
          SA6    A1          BUMP POINTER TO CRKBUF 
          SA1    P1CZ 
          RJ     FIND        GET STATEMENT NUMBER 
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          NZ     X3,COM30    ERROR EXIT IF NOT END OF STATEMENT 
          RJ     CPSN        PROCESS STATEMENT NUMBER 
 P1C2     RJ     CSTOREB     SAVE GENERATED CODE
          EQ     COM10       EXIT TO COMPILER 
  
 P1CZ     VFD    42/0,12/77B,6/0            CW FOR Z
