*COMDECK MALETP4
          EJECT 
          QUAL   MALETP4
          IFNE   CMSE,0,1 
          USE    MODD 
          VFD    30/1,6/KEY20,6/KEY2,18/0 CW FOR P4 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 P4 OVERLAY (844HT)
          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 P4 OVERLAY (844HT)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0IBFWA
          DATA   5400B             RELATIVE FWA OF IB 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SB 
          DATA   64B         MAX VALUE FOR SB FOR P4 OVERLAY (844HT)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SBFWA
          DATA   6612B             RELATIVE FWA OF SB 
          USE    *
          IFNE   CMSE,0,1 
          USE    MODD 
          VFD    30/1,6/KEY21,6/KEY2,18/0 CW FOR P5 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 P5 OVERLAY (844FT)
          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 P5 OVERLAY (844FT)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0IBFWA
          DATA   5400B             RELATIVE FWA OF IB 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SB 
          DATA   64B         MAX VALUE FOR SB FOR P5 OVERLAY (844FT)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SBFWA
          DATA   6612B             RELATIVE FWA OF SB 
          USE    *
  
  
*         P4 (844 HALF-TRACK) AND P5 (844 FULL-TRACK) ENTRY POINTS
  
 RELP4    EQU    POVL 
 RESP4    EQU    RELP4+4
 DRDWRP4  EQU    RESP4+4
 GETP4    EQU    DRDWRP4+4
 MARGP4   EQU    GETP4+4
 RDWRP4   EQU    MARGP4+4 
 RESETP4  EQU    RDWRP4+4 
 RTNP4    EQU    RESETP4+4
 SEEKP4   EQU    RTNP4+4
 SHRDP4   EQU    SEEKP4+4 
 STATP4   EQU    SHRDP4+4 
 CNTLFMD  EQU    STATP4+4                                                MAL019G
 FLAGFMD  EQU    CNTLFMD+4                                               MAL019G
 OUTFMD   EQU    FLAGFMD+4                                               MAL019G
          IFNE   CMSE,0,1 
          USE    PKEY 
          VFD    24/0,18/LKEY20,18/TKEY20 
 KEY20    EQU    *-PKEY+PKEYOFF 
          VFD    24/0,18/LKEY21,18/TKEY21 
 KEY21    EQU    *-PKEY+PKEYOFF 
          USE    *
  
*         LEGAL HIGH-LEVEL I/O COMMANDS FOR 844HT 
  
 TKEY20   VFD    42/7LCONTROL,18/P4CNTL                                  MAL010G
          VFD    42/3LGET,18/P4GET
          VFD    42/7LMARGINS,18/P4MARG 
          VFD    42/3LOUT,18/P4OUT                                       MAL010G
          VFD    42/4LREAD,18/P4READ
          VFD    42/6LREADCW,18/P4RDCW
          VFD    42/3LREL,18/P4REL
          VFD    42/3LRES,18/P4RES
          VFD    42/5LRESET,18/P4RESET
          VFD    42/7LRTNADDR,18/P4RTN
          VFD    42/4LSEEK,18/P4SEEK
          VFD    42/7LSHORTRD,18/P4SHRD 
          VFD    42/6LSTATUS,18/P4STAT
          VFD    42/6LVERIFY,18/P4VER 
          VFD    42/5LWRITE,18/P4WRITE
          VFD    42/4LFLAG,18/P4FLAG                                     MAL010G
 LKEY20   EQU    *-TKEY20 
  
*         LEGAL HIGH-LEVEL I/O COMMANDS FOR 844FT 
  
 TKEY21   VFD    42/6LDIAGRD,18/P4DRD 
          VFD    42/6LDIAGWR,18/P4DWR 
          VFD    42/3LGET,18/P4GET
          VFD    42/7LMARGINS,18/P4MARG 
          VFD    42/4LREAD,18/P4READ
          VFD    42/6LREADCB,18/P4RDCB
          VFD    42/6LREADCW,18/P4RDCW
          VFD    42/3LREL,18/P4REL
          VFD    42/3LRES,18/P4RES
          VFD    42/5LRESET,18/P4RESET
          VFD    42/7LRTNADDR,18/P4RTN
          VFD    42/4LSEEK,18/P4SEEK
          VFD    42/7LSHORTRD,18/P4SHRD 
          VFD    42/6LSTATUS,18/P4STAT
          VFD    42/6LVERIFY,18/P4VER 
          VFD    42/5LWRITE,18/P4WRITE
 LKEY21   EQU    *-TKEY21 
                                                                         MAL010G
*     CONSTANTS USED BY PRODUCT 844HT AND 844FT COMPILER                 MAL010G
                                                                         MAL010G
 DAND     VFD    60/3LAND                                                MAL010G
 DCHANNEL VFD    60/7LCHANNEL                                            MAL010G
          VFD    60/2LCH                                                 MAL010G
 DEXEC    VFD    60/7LEXECUTE                                            MAL010G
 DTIME    VFD    60/4LTIME                                               MAL010G
          EJECT 
 P4CNTL   TITLE  P4CNTL  - PROCESS THE FMD CONTROL STATEMENT.            MAL010G
**        P4CNTL - PROCESS THE FMD CONTROL STATEMENT.                    MAL010G
*                                                                        MAL010G
*         G. L. GOLDEN. 77/10/25.                                        MAL010G
*                                                                        MAL010G
*         P4CNTL  - PROCESS THE FMD CONTROL STATEMENT. FORMATS ARE;      MAL010G
*                                                                        MAL010G
*           CONTROL A,B,C,D,ABT Z                                        MAL010G
*           CONTROL A,B,C,D,EXECUTE,ABT Z                                MAL010G
*           CONTROL A,B,C,D,TIME V TO X AND Y,ABT Z                      MAL010G
*           CONTROL A,B,C,D,TIME V X AND Y,ABT Z                         MAL010G
*           CONTROL A,B,C,D,TIME V X Y,ABT Z                             MAL010G
*                                                                        MAL010G
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT.              MAL010G
*                                                                        MAL010G
*         EXIT  - COM31 - IF ERROR FOUND BY FIND ROUTINE.                MAL010G
*                 COM30 - IF ERROR FOUND IN STATEMENT.                   MAL010G
*                 P4C4  - IF NO ERRORS FOUND.                            MAL010G
*                                                                        MAL010G
*         ROUTINES CALLED -  FIND   - FIND THE NEXT ITEM FROM SOURCE.    MAL010G
*                            CSTOREB- STORE GENERATED CODE.              MAL010G
*                                                                        MAL010G
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.   MAL010G
*                            MODULE - BINARY CODE GENERATED.             MAL010G
*                                                                        MAL010G
*         USES   A - 1, 3, 6.                                            MAL010G
*                X - 0, 1, 3, 6.                                         MAL010G
*                B - 7.                                                  MAL010G
*                                                                        MAL010G
                                                                         MAL010G
**        1. GET VALUE FOR A AND FORM CODE TO STORE INTO PA+50B.         MAL010G
*                                                                        MAL010G
 P4CNTL   SA1    CNTA        CONTROL WORD FOR VALUE 0-377B               MAL010G
          RJ     FIND                                                    MAL010G
          NG     B2,COM31    ERROR EXIT IF NOT FOUND                     MAL010G
          RJ     CLOAD                                                   MAL010G
          SX1    STD+PA+50B                                              MAL010G
          LX0    12                                                      MAL010G
          BX0    X0+X1       CODE  LDC A, STD PA+50B                     MAL010G
          RJ     CSTOREB                                                 MAL010G
                                                                         MAL010G
**        2. GET VALUE FOR B AND FORM CODE TO STORE INTO PA+51B.         MAL010G
*                                                                        MAL010G
          SA1    CNTA        CONTROL WORD FOR A-D                        MAL010G
          RJ     FIND                                                    MAL010G
          NG     B2,COM31    ERROR EXIT IF NOT FOUND                     MAL010G
          RJ     CLOAD                                                   MAL010G
          SX1    STD+PA+51B                                              MAL010G
          LX0    12                                                      MAL010G
          BX0    X0+X1       CODE  LDC B, STD PA+51B                     MAL010G
          RJ     CSTOREB                                                 MAL010G
                                                                         MAL010G
**        3. GET VALUE FOR C AND FORM CODE TO STORE INTO PA+52B.         MAL010G
*                                                                        MAL010G
          SA1    CNTA        CONTROL WORD FOR A-D                        MAL010G
          RJ     FIND                                                    MAL010G
          NG     B2,COM31    ERROR EXIT IF NOT FOUND                     MAL010G
          RJ     CLOAD                                                   MAL010G
          SX1    STD+PA+52B                                              MAL010G
          LX0    12                                                      MAL010G
          BX0    X0+X1       CODE  LDC C, STD PA+52B                     MAL010G
          RJ     CSTOREB                                                 MAL010G
                                                                         MAL010G
**        4. GET VALUE FOR D AND FORM CODE TO STORE INTO PA+53B.         MAL010G
*                                                                        MAL010G
          SA1    CNTA        CONTROL WORD FOR A-D                        MAL010G
          RJ     FIND                                                    MAL010G
          NG     B2,COM31    ERROR EXIT IF NOT FOUND                     MAL010G
          RJ     CLOAD                                                   MAL010G
          SX1    STD+PA+53B                                              MAL010G
          LX0    12                                                      MAL010G
          BX0    X0+X1       CODE  LDC D, STD PA+53B                     MAL010G
          RJ     CSTOREB                                                 MAL010G
                                                                         MAL010G
**        5. SEE IF EXECUTE IF NOT THEN STEP 6, ELSE ADVANCE PCRK THEN   MAL010G
*            STEP 12.                                                    MAL010G
*                                                                        MAL010G
          SB7    B0          (B7) = 0                                    MAL010G
          ZR     X3,COM30    IF NO MORE PARAMETERS                       MAL010G
          SA1    DEXEC       DISPLAY CODE  *EXECUTE*                     MAL010G
          BX1    X1-X3                                                   MAL010G
          NZ     X1,CNTL1    IF NOT EXECUTE                              MAL010G
          SB7    B1          (B7) = 1                                    MAL010G
          SA3    A3+1                                                    MAL010G
          SX6    A3                                                      MAL010G
          SA6    PCRK                                                    MAL010G
          EQ     CNTL5                                                   MAL010G
                                                                         MAL010G
**        6. SEE IF TIME IF NOT THEN STEP 8 ELSE BUNMP PCRK THEN STEP    MAL010G
*            7.                                                          MAL010G
*                                                                        MAL010G
 CNTL1    SA1    DTIME       DISPLAY CODE *TIME*                         MAL010G
          BX1    X1-X3                                                   MAL010G
          NZ     X1,CNTL5    IF NOT TIME                                 MAL010G
          SB7    B1+B1       (B7)= 2                                     MAL010G
          SA3    A3+B1       GET NEXT VALUE SHOULD BE X                  MAL010G
          SX6    A3                                                      MAL010G
          SA6    PCRK                                                    MAL010G
                                                                         MAL010G
**        7. GET VALUE FOR V AND FORM CODE TO STORE INTO PA+54B.         MAL010G
*                                                                        MAL010G
          SA1    CNTC        CONTROL WORD FOR V                          MAL010G
          RJ     FIND                                                    MAL010G
          NG     B2,COM31    ERROR EXIT IF NOT FOUND                     MAL010G
          RJ     CLOAD                                                   MAL010G
          SX1    STD+PA+1                                                MAL010G
          LX0    12                                                      MAL010G
          BX0    X0+X1       CODE  LDC V, STD PA+54B                     MAL010G
          RJ     CSTOREB                                                 MAL010G
                                                                         MAL010G
**        8. SEE IF TO IF NOT THEN STEP 8,ELSE ADVANCE POINTER THEN      MAL010G
*            STEP 9.                                                     MAL010G
*                                                                        MAL010G
          SX1    2RTO                                                    MAL010G
          LX1    59-11                                                   MAL010G
          BX1    X1-X3                                                   MAL010G
          NZ     X1,CNTL2    IF NOT TO                                   MAL010G
          SA3    A3+B1                                                   MAL010G
          SX6    A3                                                      MAL010G
          SA6    PCRK                                                    MAL010G
                                                                         MAL010G
**        9. GET VALUE FOR X AND FORM CODE TO STORE INTO PA+55B.         MAL010G
*                                                                        MAL010G
 CNTL2    SA1    CNTB                                                    MAL010G
          RJ     FIND                                                    MAL010G
          NG     B2,COM31    ERROR EXIT IF REGISTER NOT FOUND            MAL010G
          SX0    B3+LDN                                                  MAL010G
          SX1    STD+PA+55B                                              MAL010G
          LX0    12                                                      MAL010G
          BX0    X0+X1                                                   MAL010G
          RJ     CSTOREB     SAVE GENERATED CODE                         MAL010G
                                                                         MAL010G
**        10. IF AND USED ADVANCE POINTER ELSE STEP 11.                  MAL010G
*                                                                        MAL010G
          SA1    DAND        SISPLAY CODE *AND*                          MAL010G
          BX1    X1-X3                                                   MAL010G
          NZ     X1,CNTL3    ERROR EXIT IF NOT AND                       MAL010G
          SA3    A3+B1                                                   MAL010G
          SX6    A3                                                      MAL010G
          SA6    PCRK        STORE POINTER TO CRKBUF AFTER BUMP          MAL010G
                                                                         MAL010G
**        11. GET VALUE FOR Y AND FORM CODE TO STORE INTO PA+56B.        MAL010G
*                                                                        MAL010G
 CNTL3    SA1    CNTB                                                    MAL010G
          RJ     FIND                                                    MAL010G
          NG     B2,COM31    ERROR EXIT IF REGISTER NOT FOUND            MAL010G
          SX0    B3+LDN                                                  MAL010G
          SX1    STD+PA+56B                                              MAL010G
          LX0    12                                                      MAL010G
          BX0    X0+X1                                                   MAL010G
          RJ     CSTOREB     SAVE GENERATED CODE                         MAL010G
          SB7    B1+B1       FLAG CODE=2                                 MAL010G
                                                                         MAL010G
**        12. STORE OPERATION CODE THEN ENTER COMMON ABT SEQUENCE.       MAL010G
*                                                                        MAL010G
 CNTL5    SX0    LDN+B7                                                  MAL010G
          SX1    STD+PA      CODE IS   LDN  CODE                         MAL010G
          LX0    12                    STD  PA                           MAL010G
          BX0    X0+X1                                                   MAL010G
          RJ     CSTOREB                                                 MAL010G
          SB7    CNTLFMD                                                 MAL010G
          EQ     P4C4                                                    MAL010G
                                                                         MAL010G
 CNTA     VFD    42/0,12/377B,6/0      CONTROL WORD FOR A-D              MAL010G
 CNTB     VFD    57/0,3/REG1           CONTROL WORD FOR X-Y              MAL010G
 CNTC     VFD    42/0,12/7777B,6/0     CONTROL WORD FOR V                MAL010G
          EJECT                                                          MAL010G
 P4DRD    TITLE  P4DRD   - PROCESS THE 844 DIAGRD  STATEMENT. 
**        P4DRD   -   PROCESS THE 844 DIAGRD  STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4DRD   - PROCESS THE 844 DIAGRD STATEMENT. FORMATS ARE;
* 
*                 DIAGRD, 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. 
* 
 P4DRD    SB7    DRDWRP4     ENTRY POINT FOR DIAGRD 
          SX0    LDN+32B     DIAGNOSTIC READ FUNCTION 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     P4C4        ENTER COMMON SEQUENCE
          EJECT 
 P4DWR    TITLE  P4DWR   - PROCESS THE 844 DIAGWR  STATEMENT. 
**        P4DWR   -   PROCESS THE 844 DIAGWR STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4DWR   - PROCESS THE 844 DIAGWR STATEMENT. FORMATS ARE;
* 
*                 DIAGWR, 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. 
* 
 P4DWR    SB7    DRDWRP4     ENTRY POINT FOR DIAGWR 
          SX0    LDN+33B     DIAGNOSTIC WRITE FUNCTION
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     P4C4        ENTER COMMON SEQUENCE
          EJECT                                                          MAL010G
 P4FLAG   TITLE  P4FLAG - PROCESS THE FLAG PULSE STATEMENT.              MAL010G
**        P4FLAG - PROCESS THE FLAG PULSE STATEMENT.                     MAL010G
*                                                                        MAL010G
*         G. L. GOLDEN.  78/08/08.                                       MAL010G
*                                                                        MAL010G
*         P4FLAG - PROCESS THE FMDHT FLAG PULSE STATEMENT. FORMAT        MAL010G
*                  AS FOLLOWS.                                           MAL010G
*                                                                        MAL010G
*                                                                        MAL010G
*           FLAG PULSE CH=X,ABT Z                                        MAL010G
*                                                                        MAL010G
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT.              MAL010G
*                                                                        MAL010G
*         EXIT  - COM31 - IF ERROR FOUND BY FIND ROUTINE.                MAL010G
*                 COM30 - IF ERROR FOUND IN STATEMENT.                   MAL010G
*                 P4C4  - IF NO ERRORS FOUND.                            MAL010G
*                                                                        MAL010G
*         ROUTINES CALLED - CSTOREB- STORE GENERATED PPU BINARY.         MAL010G
*                           FIND   - FIND THE NEXT DATA ITEM.            MAL010G
*                                                                        MAL010G
*         DATA AREAS USED - CRKBUF - WORD STRING OF SOURCE STATEMENT.    MAL010G
*                                                                        MAL010G
*         USES   A - 1, 3, 6.                                            MAL010G
*                X - 0, 1, 6.                                            MAL010G
*                B - 7.                                                  MAL010G
*                                                                        MAL010G
 P4FLAG   SA1    DPULSE                                                  MAL010G
          BX1    X1-X3                                                   MAL010G
          NZ     X1,COM30    ERROR EXIT IF NOT PULSE                     MAL010G
          SA3    A3+B1       GET NEXT DATA ITEM                          MAL010G
          SA1    DCHANNEL                                                MAL010G
          BX1    X1-X3                                                   MAL010G
          ZR     X1,FLAG1    IF DATA ITEM IS CHANNEL                     MAL010G
          SA1    A1+B1                                                   MAL010G
          BX1    X1-X3                                                   MAL010G
          NZ     X1,COM30    ERROR EXIT IF NOT CH OR CHANNEL             MAL010G
 FLAG1    SA3    A3+B1       GET NEXT DATA ITEM                          MAL010G
          SX1    X3-1R=                                                  MAL010G
          NZ     X1,COM30    ERROR EXIT IF NOT = SIGN                    MAL010G
          SX6    A3+B1                                                   MAL010G
          SA6    PCRK        UPDATE POINTER INTO CRKBUF                  MAL010G
          SA1    OUTB        CONTROL WORD FOR X                          MAL010G
          RJ     FIND                                                    MAL010G
          NG     B2,COM31    ERROR EXIT IF NOT FOUND                     MAL010G
          RJ     CLOAD                                                   MAL010G
          SX1    STD+PA                                                  MAL010G
          LX0    12                                                      MAL010G
          BX0    X0+X1                                                   MAL010G
          RJ     CSTOREB     SAVE GENERATED BINARY                       MAL010G
          SB7    FLAGFMD     ENTRY POINT FOR FLAG SUBROUTINE             MAL010G
          EQ     P4C4        ENTER COMMON ABT PROCESSOR                  MAL010G
                                                                         MAL010G
 DPULSE   VFD    60/5LPULSE                                              MAL010G
          EJECT                                                          MAL010G
          EJECT 
 P4GET    TITLE  P4GET   - PROCESS THE 844 GET STATEMENT. 
**        P4GET   -   PROCESS THE 844 GET STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4GET   - PROCESS THE 844 GET  STATEMENT. FORMATS ARE;
* 
*                 GET SERIAL, ABT Z 
*                 GET FACTORY, ABT Z
*                 GET UTILITY, 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 - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 P4GET    SB7    B0 
          SB6    LP4G 
 P4G1     SA1    B7+P4G 
          BX1    X1-X3
          ZR     X1,P4G2     IF KEYWORD FOUND 
          SB7    B7+B1       BUMP POINTER 
          NE     B7,B6,P4G1  IF LIST NOT EXHAUSTED
          EQ     COM30       ERROR EXIT IF KEYWORD NOT FOUND
  
 P4G2     SX0    LDN+B7 
          SX1    STD+PA 
          SA3    A3+B1       NEXT ITEM FROM CRKBUF
          LX0    12 
          SX6    A3          BUMP POINTER TO CRKBUF 
          BX0    X0+X1       CODE = LDN CODE  STD PA
          SA6    PCRK 
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    GETP4       ENTRY POINT FOR GET
          EQ     P4C4        ENTER COMMON SEQUENCE
  
 P4G      VFD    60/6LSERIAL   GET KEYWORDS 
          VFD    60/7LFACTORY 
          VFD    60/7LUTILITY 
 LP4G     EQU    *-P4G
          EJECT 
 P4MARG   TITLE  P4MARG  - PROCESS THE 844 MARGINS STATEMENT. 
**        P4MARG  -   PROCESS THE 844 MARGINS STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4MARG  - PROCESS THE 844 MARGINS STATEMENT. FORMATS ARE; 
* 
*                 MARGINS W, ABT Z
*                 MARGINS X OFFSET, Y STROBES, 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 - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 5, 6, 7. 
* 
 P4MARG   SA1    P4MA 
          RJ     FIND        GET W IF SPECIFIED 
          NG     B2,P4M1     IF NOT FOUND - NOT A REGISTER
          RJ     CLOAD       GENERATE LOAD W CODE 
          EQ     P4M6 
  
 P4M1     SB7    B0          CLEAR COUNTER
          SB6    LP4MB       SET LENGTH 
 P4M2     SA1    B7+P4MB
          BX1    X1-X3
          ZR     X1,P4M3     IF KEYWORD FOUND 
          SB7    B7+B1       BUMP POINTER 
          NE     B7,B6,P4M2  IF NOT END OF LIST 
          EQ     COM30       ERROR EXIT IF KEYWORD NOT FOUND
  
 P4M3     SB5    B7          SET OFFSET VALUE 
          SB7    B0          CLEAR COUNTER
          SB6    LP4MC
          SA3    A3+B1       NEXT ITEM FROM CRKBUF
          SA1    DOFFSET
          BX1    X1-X3
          NZ     X1,COM30    ERROR EXIT IF NEXT KEYWORD NOT OFFSET
          SA3    A3+B1       NEXT ITEM FROM CRKBUF
 P4M4     SA1    B7+P4MC
          BX1    X1-X3
          ZR     X1,P4M5     IF KEYWORD FOUND 
          SB7    B7+B1       BUMP POINTER 
          SB5    B5+10B      BUMP STROBES 
          NE     B7,B6,P4M4  IF NOT END OF LIST 
          EQ     COM30       ERROR EXIT IF KEYWORD NOT FOUND
  
 P4M5     SA3    A3+B1       NEXT ITEM FROM CRKBUF
          SA1    DSTROBE
          BX1    X1-X3
          NZ     X1,COM30    ERROR EXIT IF NEXT ITEM IS NOT STROBES 
          SA3    A3+B1
          SX0    LDN+B5 
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
 P4M6     SX1    STD+PA 
          LX0    12 
          BX0    X0+X1       CODE = LDN VALUE  STD PA 
          RJ     CSTOREB
          SB7    MARGP4      ENTRY POINT FOR MARGINS
          EQ     P4C4        ENTER COMMON SEQUENCE
  
 P4MA     VFD    57/0,3/REG2    CONTROL WORD FOR W
  
 P4MB     VFD    60/6LNORMAL    KEYWORDS FOR X
          VFD    60/3LFWD 
          VFD    60/3LREV 
 LP4MB    EQU    *-P4MB 
  
 P4MC     VFD    60/6LNORMAL    KEYWORDS FOR Y
          VFD    60/5LEARLY 
          VFD    60/4LLATE
 LP4MC    EQU    *-P4MC 
 P4OUT    TITLE  P4OUT - PROCESS THE FMD OUT STATEMENT.                  MAL010G
**        P4OUT - PROCESS THE FMD OUT STATEMENT.                         MAL010G
*                                                                        MAL010G
*         G. L. GOLDEN. 77/11/30.                                        MAL010G
*                                                                        MAL010G
*         P4OUT - PROCESS THE FMD MARGINS OUT. FORMAT                    MAL010G
*                                                                        MAL010G
*           OUT CHANNEL=A B C,ABT Z                                      MAL010G
*                                                                        MAL010G
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT.              MAL010G
*                                                                        MAL010G
*         EXIT  - COM31 - IF ERROR FOUND BY FIND ROUTINE.                MAL010G
*                 COM30 - IF ERROR FOUND IN STATEMENT.                   MAL010G
*                 P4C4  - IF NO ERRORS FOUND.                            MAL010G
*                                                                        MAL010G
*         ROUTINES CALLED -  FIND   - FIND THE NEXT ITEM FROM SOURCE.    MAL010G
*                            CSTOREB- STORE GENERATED CODE.              MAL010G
*                                                                        MAL010G
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.   MAL010G
*                            MODULE - BINARY CODE GENERATED.             MAL010G
*                                                                        MAL010G
*         USES   A - 1, 3, 6.                                            MAL010G
*                X - 0, 1, 3, 6.                                         MAL010G
*                B - 7.                                                  MAL010G
*                                                                        MAL010G
 P4OUT    SA1    DCHANNEL                                                MAL010G
          BX1    X3-X1                                                   MAL010G
          ZR     X1,OUT1                                                 MAL010G
          SX1    2RCH                                                    MAL010G
          LX1    59-11       POSITION CH INTO UPPER 12 BITS              MAL010G
          BX1    X1-X3                                                   MAL010G
          NZ     X1,COM30    ERROR EXIT IF NOT CH OR CHANNEL             MAL010G
 OUT1     SA3    A3+B1                                                   MAL010G
          SX1    X3-1R=                                                  MAL010G
          NZ     X1,COM30    ERROR EXIT IF NO = SIGN                     MAL010G
          SA3    A3+B1                                                   MAL010G
          SX6    A3                                                      MAL010G
          SA6    PCRK                                                    MAL010G
                                                                         MAL010G
          SA1    OUTB                                                    MAL010G
          RJ     FIND                                                    MAL010G
          NG     B2,COM31    ERROR EXIT IF NOT FOUND                     MAL010G
          BX6    X2 
          SA6    OUTC        SAVE OUT COMMAND CHANNEL 
          RJ     CLOAD                                                   MAL010G
          SX1    STD+PA                                                  MAL010G
          LX0    12                                                      MAL010G
          BX0    X0+X1       CODE  LDD A, STD PA                         MAL010G
          RJ     CSTOREB                                                 MAL010G
                                                                         MAL010G
          SA1    OUTA        CONTROL WORD FOR B + C                      MAL010G
          RJ     FIND                                                    MAL010G
          NG     B2,COM31    ERROR EXIT IF NOT FOUND                     MAL010G
          RJ     CLOAD                                                   MAL010G
          SA1    OUTC        GET OUT CHANNEL NUMBER 
          SX1    X1-1 
          NZ     X1,OUT2     IF NOT CHANNEL 1 
          SX0    SCN+60B
          RJ     CSTOREB     SAVE GENERATED BINARY
          EQ     OUT3 
  
 OUT2     SX1    X1+1-5 
          NZ     X1,OUT3     IF NOT CHANNEL 5 
          SX1    SCN+10B
          LX0    12 
          BX0    X0+X1       CLEAR WRITE IF OUT COMMAND TO CH=5 
          RJ     CSTOREB     SAVE GENERATED CODE
 OUT3     SX0    STD+PA+1 
          RJ     CSTOREB                                                 MAL010G
                                                                         MAL010G
          SA1    OUTA        CONTROL WORD FOR B + C                      MAL010G
          RJ     FIND                                                    MAL010G
          NG     B2,COM31    ERROR EXIT IF NOT FOUND                     MAL010G
          RJ     CLOAD                                                   MAL010G
          SA1    OUTC 
          SX1    X1-1 
          NZ     X1,OUT4     IF NOT CHANNEL 1 ON OUT COMMAND
          RJ     CSTOREB     SAVE GENERATED CODE
          SX0    LPC
          SX1    200B 
          LX0    12 
          BX0    X0+X1       FORM LPC 200B
          LX0    12 
          SX1    ADM
          BX0    X0+X1
          LX0    12 
          SA1    TBUF3       GET FIRST WORD OF SB 
          BX1    -X5*X1      CLEAR GARBAGE
          SX1    X1+63B      FORM ADDRESS OF SB+63B 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     OUT5 
  
 OUT4     SX1    X1+1-9 
          NZ     X1,OUT5     IF NOT CHANNEL 9 ON OUT COMMAND
          SX1    SCN+20B
          LX0    12 
          BX0    X0+X1       DISABLE CLEAR OPPOSITE CHANNEL 
          RJ     CSTOREB     SAVE GENERATED CODE
 OUT5     SX0    STD+PA+2 
          RJ     CSTOREB                                                 MAL010G
          SB7    OUTFMD      ENTRY POINT FOR OUT COMMAND                 MAL010G
          EQ     P4C4        ENTER COMMON ABT PROCESSING                 MAL010G
                                                                         MAL010G
 OUTA     VFD    42/0,12/377B,3/0,3/REG2   CONTROL WORD FOR B AND C      MAL010G
 OUTB     VFD    42/0,12/16B,3/0,3/0        CONTROL WORD FOR A
 OUTC     DATA   0           DATA FOR CHANNEL NUMBER ON OUT COMMAND 
          EJECT 
 P4READ   TITLE  P4READ  - PROCESS THE 844 READ STATEMENT.
**        P4READ  -   PROCESS THE 844 READ STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4READ  - PROCESS THE 844 READ STATEMENT. FORMATS ARE;
* 
*           READ V SECTORS AT CYL W TRK X CYL Y, ABT Z
*           READ V CODED SECTORS AT CYL W TRK X CYL 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. 
* 
 P4READ   SB7    RDWRP4      ENTRY POINT FOR READ 
          SX0    4           READ FUNCTION
          EQ     P4C         ENTER COMMON SEQUENCE
          EJECT 
 P4RDCB   TITLE  P4RDCB  - PROCESS THE 844 READCB STATEMENT.
**        P4RDCB  -   PROCESS THE 844 READCB STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4RDCB  - PROCESS THE 844 READCB STATEMENT. FORMATS ARE;
* 
*           READCB, 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. 
* 
 P4RDCB   SB7    DRDWRP4     ENTRY POINT FOR READCB 
          SX0    LDN+43B     DIAGNOSTIC READ FUNCTION 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     P4C4        ENTER COMMON SEQUENCE
          EJECT 
 P4RDCW   TITLE  P4RDCW  - PROCESS THE 844 READCW STATEMENT.
**        P4RDCW  -   PROCESS THE 844 READCW STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4RDCW  - PROCESS THE 844 READCW STATEMENT. FORMATS ARE;
* 
*           READCW V SECTORS AT CYL W TRK X CYL 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 - 1. 
*                X - 0, 1.
*                B - 7. 
* 
 P4RDCW   SB7    RDWRP4      ENTRY POINT FOR READCW 
          ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SX0    LDN+7       READ CHECKWORD FUNCTION
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          SA1    P4CA 
          RJ     FIND        GET V
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          SX1    B3+LDN 
          LX0    12 
          BX0    X0+X1
          SX1    STD+PA+53B 
          LX0    12 
          BX0    X0+X1       CODE = LDN CODE  STD PA  LDN V  STD PA+53B 
          EQ     P4C1        ENTER COMMON SEQUENCE
          EJECT 
 P4REL    TITLE  P4REL   - PROCESS THE 844 REL STATEMENT. 
**        P4REL   -   PROCESS THE 844 REL STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4REL   - PROCESS THE 844 REL   STATEMENT. FORMATS ARE; 
* 
*                  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. 
* 
 P4REL    SB7    RELP4       ENTRY POINT FOR REL
          EQ     P4C4        ENTER COMMON SEQUENCE
          EJECT 
 P4RES    TITLE  P4RES   - PROCESS THE 844 RES STATEMENT. 
**        P4RES   -   PROCESS THE 844 RES STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4RES   - PROCESS THE 844 RES  STATEMENT. FORMATS ARE;
* 
*                 RES CONTROLLER, ABT Z 
*                 RES DRIVE, ABT Z
*                 RES DRIVE FAULT, ABT Z                                 MAL010G
* 
* 
*         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, 2, 3, 6.
*                X - 0, 1, 2, 3, 6. 
*                B - 7. 
* 
 P4RES    SA1    P4RA 
          SA2    P4RB 
          BX1    X1-X3
          SB7    B0 
          ZR     X1,P4R      IF RES CONTROLLER
          BX2    X2-X3
          SB7    B1 
          NZ     X2,COM30    ERROR EXIT IF NOT CONTROLLER OR DRIVE
          SA2    A3+B1                                                   MAL010G
          SA1    P4RC        GET DISPLAY CODE FOR FAULT                  MAL010G
          BX1    X1-X2                                                   MAL010G
          NZ     X1,P4R      IF NOT FAULT                                MAL010G
          SX0    LDC                                                     MAL010G
          LX0    12                                                      MAL010G
          SX1    2000B       DATA FOR RES DRIVE AND DONT CLEAR FAULTS    MAL010G
          BX0    X0+X1                                                   MAL010G
          SA3    A3+B1                                                   MAL010G
          SX6    A3                                                      MAL010G
          SA6    PCRK        UPDATE PCRK POINTER TO CRKBUF               MAL010G
          EQ     P4R1                                                    MAL010G
 P4R      SX0    LDN+B7 
 P4R1     SX1    STD+PA                                                  MAL010G
          LX0    12 
          BX0    X0+X1       CODE = LDN 0/1  STD PA 
          RJ     CSTOREB     SAVE GENERATED CODE
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SB7    RESP4       ENTRY POINT FOR RES
          EQ     P4C4        ENTER COMMON SEQUENCE
  
 P4RA     VFD    60/10LCONTROLLER 
 P4RB     VFD    60/5LDRIVE 
 P4RC     VFD    60/5LFAULT                                              MAL010G
          EJECT 
 P4RESET  TITLE  P4RESET - PROCESS THE 844 RESET STATEMENT. 
**        P4RESET -   PROCESS THE 844 RESET STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4RESET - PROCESS THE 844 RESET STATEMENT. FORMATS ARE; 
* 
*                 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. 
* 
 P4RESET  SB7    RESETP4     ENTRY POINT FOR RESET
          EQ     P4C4        ENTER COMMON SEQUENCE
          EJECT 
 P4RTN    TITLE  P4RTN   - PROCESS THE 844 RTNADDR STATEMENT. 
**        P4RTN   -   PROCESS THE 844 RTNADDR STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4RTN   - PROCESS THE 844 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 - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 P4RTN    SB7    RTNP4       ENTRY POINT FOR RTNADDR
 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 
          EJECT 
 P4SEEK   TITLE  P4SEEK  - PROCESS THE 844 SEEK STATEMENT.
**        P4SEEK  -   PROCESS THE 844  SEEK STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4SEEK  - PROCESS THE 844 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. 
* 
 P4SEEK   SB7    SEEKP4      ENTRY POINT FOR SEEK 
          EQ     P4C2        ENTER COMMON SEQUENCE
          EJECT 
 P4SHRD   TITLE  P4SHRD  - PROCESS THE 844 SHORTRD STATEMENT. 
**        P4SHRD  -   PROCESS THE 844 SHORTRD STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4SHRD  - PROCESS THE 844 SHORTRD STATEMENT. FORMAT IS; 
* 
*                 SHORTRD 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. 
* 
 P4SHRD   SB7    SHRDP4      ENTRY POINT FOR SHORTRD
          EQ     P4C2        ENTER COMMON SEQUENCE/ 
          EJECT 
 P4STAT   TITLE  P4STAT  - PROCESS THE 844 STATUS STATEMENT.
**        P4STAT  -   PROCESS THE 844 STATUS STATEMENT. 
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4STAT  - PROCESS THE 844 STATUS STATEMENT. FORMATS ARE;
* 
*                 STATUS GENERAL, ABT Z 
*                 STATUS DETAIL, 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 - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 6, 7.
* 
 P4STAT   SB7    B0          CLEAR POINTER
          SB6    LP4S 
 P4S1     SA1    P4S+B7 
          BX1    X1-X3
          ZR     X1,P4S2     IF KEYWORD FOUND 
          SB7    B7+B1       BUMP POINTER 
          NE     B7,B6,P4S1  IF END OF LIST NOT FOUND 
          EQ     COM30       ERROR EXIT IF KEYWORD NOT FOUND
  
 P4S2     SX0    LDN+B7 
          SX1    STD+PA 
          SA3    A3+B1
          LX0    12 
          SX6    A3 
          BX0    X0+X1       CODE = LDN FLAG   STD PA 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    STATP4      ENTRY POINT FOR STATUS 
          EQ     P4C4        ENTER COMMON SEQUENCE
  
 P4S      VFD    60/7LGENERAL          KEYWORDS FOR STATUS
          VFD    60/6LDETAIL
          VFD    60/7LCHANNEL                                            MAL010G
 LP4S     EQU    *-P4S
          EJECT 
 P4VER    TITLE  P4VER   - PROCESS THE 844 VERIFY STATEMENT.
**        P4VER   -   PROCESS THE 844 VERIFY  STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4VER   - PROCESS THE 844 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. 
* 
 P4VER    SB7    RDWRP4      ENTRY POINT FOR VERIFY 
          SX0    6+40B       VERIFY FUNCTION PLUS WRITE FLAG
          EQ     P4C         ENTER COMMON SEQUENCE
          EJECT 
 P4WRITE  TITLE  P4WRITE - PROCESS THE 844 WRITE STATEMENT. 
**        P4WRITE -   PROCESS THE 844 WRITE STATEMENT.
* 
*         J. E. SIPPER. 76/12/08. 
* 
*         P4WRITE - PROCESS THE 844 WRITE  STATEMENT. FORMATS ARE;
* 
*                 WRITE V SECTORS AT CYL W TRK X SEC Y, ABT Z 
*                 WRITE 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 - 1, 3, 6, 7.
*                X - 0, 1, 2, 3, 6, 7.
*                B - 6, 7.
* 
 P4WRITE  SB7    RDWRP4      ENTRY POINT FOR WRITE
          SX0    5+40B       WRITE FUNCTION PLUS WRITE BIT
  
*         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 
