*COMDECK,MALETPQ
          EJECT 
          QUAL   MALETPQ
          IFNE   CMSE,0,1 
          USE    MODD 
          VFD    30/1,6/KEY895D,6/KEY2,18/0   CW FOR D895 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 PP OVERLAY (D895) 
          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 PP OVERLAY (D895) 
          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 PP OVERLAY (D895) 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SBFWA
          DATA   6612B             RELATIVE FWA OF SB 
          USE    *
  
*         D895 FULL TRACK ENTRY POINTS. 
  
 RELD895  EQU    0
 RESD895  EQU    1
 EXECD895 EQU    2
 HLTMD895 EQU    3
 SENSD895 EQU    4
 STAD895  EQU    5
  
          IFNE   CMSE,0,1 
          USE    PKEY 
          VFD    24/0,18/LD895,18/TD895 
 KEY895D  EQU    *-PKEY+PKEYOFF 
          USE    *
  
*         LEGAL HIGH-LEVEL I/O COMMANDS FOR D895
  
 TD895    VFD    42/3LREL,18/D89REL 
          VFD    42/3LRES,18/D89RES 
          VFD    42/7LEXECUTE,18/D89EXEC
          VFD    42/3LHLT,18/D89HALT
          VFD    42/7LMONITOR,18/D89MNTR
          VFD    42/5LSENSE,18/D89SENS
          VFD    42/6LSTATUS,18/D89ST 
 LD895    EQU    *-TD895
  
*         CONSTANTS USED BY D895
  
 DDIAG    VFD    60/4LDIAG
  
          EJECT 
 D89REL   TITLE  D89REL - PROCESS THE D895 REL STATEMENT. 
**        D89REL - PROCESS THE D895 REL STATEMENT.
* 
*         R.D.SCHNEIDER  85/11/18 
* 
*         D89REL  - PROCESS THE D895 REL STATEMENT. FORMAT IS 
* 
*           REL, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  -  PAC4   IF NO ERRORS FOUND
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 D89REL   SB7    RELD895     ENTRY POINT FOR REL
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
          EJECT 
 D89RES   TITLE  D89RES  - PROCESS THE D895 RES STATEMENT.
**        D89RES  - PROCESS THE D895 RES STATEMENT. 
* 
*         R.D. SCHNEIDER   85/11/18 
* 
*         D89RES  - PROCESS THE D895 RES STATEMENT. FORMATS ARE 
* 
*           RES CCC, ABT Z
*           RES DRIVE, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  -  PAC4   IF NO ERRORS FOUND
* 
*         ROUTINES CALLED -  CSTOREB- STORE GENERATED CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
* 
*         USES   A - 1, 3, 6. 
*                X - 1, 3, 6. 
*                B - 7. 
* 
 D89RES   SB7    B0 
          SA1    DCCC 
          BX1    X1-X3
          ZR     X1,RES      IF RES CCC 
          SB7    B1 
          SA1    DDRIVE 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT RES CCC OR DRIVE
 RES      SX0    LDN+B7 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED BINARY
          SB7    RESD895     ENTRY POINT FOR RES
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
  
 DCCC     VFD    60/3LCCC 
 DDRIVE   VFD    60/5LDRIVE 
          EJECT 
 D89EXEC  TITLE  D89EXEC - PROCESS THE D895 EXECUTE STATEMENT.
**        D89EXEC - PROCESS THE D895 EXECUTE STATEMENT. 
* 
*         R.D. SCHNEIDER   85/11/18 
* 
*         D89EXEC - PROCESS THE D895 EXECUTE STATEMENT.  FORMAT IS
* 
*           EXECUTE PATH, ABT Z 
*           EXECUTE DI, ABT Z 
*           EXECUTE DIAG W, ABT Z 
*           EXECUTE MAINT DIAG W, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - PAC4 TO PROCESS COMMON CODE IF PATH, DI 
*                 PAC  TO PROCESS COMMON CODE IF DIAG, MAINT DIAG 
* 
*         ROUTINES CALLED - CSTOREB - TO STORE GENERATED PPU BINARY 
* 
*         DATA AREAS USED - CRKBUF - WORD STRING OF SOURCE STATEMENT. 
* 
*         USES -  A - 1, 3, 6 
*                 X - 0, 1, 3, 6
*                 B - 0, 1, 5, 7
* 
 D89EXEC  SB5    B0          W NOT NEEDED FOR PATH, DI
          SB7    B0 
          SA1    DPATH
          BX1    X1-X3
          ZR     X1,DEXEC2   IF EXECUTE PATH
          SB7    B1 
          SA1    DDI
          BX1    X1-X3
          ZR     X1,DEXEC2   IF EXECUTE DI
          SB5    1           W NEEDED FOR DIAG, MAINT DIAG
          SB7    B7+2        PA = 4 FOR MAINT DIAG
          SA1    DMAINT 
          BX1    X1-X3
          ZR     X1,DEXEC1   IF EXECUTE MAINT DIAG
          SB7    B7-B1       PA = 3 FOR DIAG
          EQ     DEXEC1A
 DEXEC1   SA3    A3+B1
 DEXEC1A  SX0    B7          SET PA 
          SB7    EXECD895    ENTRY POINT FOR EXECUTE COMMAND
          EQ     PAC         CRACK DIAG AND W 
 DEXEC2   SX0    LDN+B7 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED BINARY
          SB7    EXECD895    ENTRY POINT FOR EXECUTE
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
  
 DPATH    VFD    60/4LPATH
 DDI      VFD    60/2LDI
 DMAINT   VFD    60/5LMAINT 
          EJECT 
 D89HALT  TITLE  D89HALT - PROCESS THE D895 HLT STATEMENT.
**        D89HALT - PROCESS THE D895 HLT STATEMENT. 
* 
*         R.D. SCHNEIDER   85/11/18 
* 
*         D89HALT - PROCESS THE D895 HLT STATEMENT. FORMAT IS 
* 
*           HLT DIAG, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT   - PAC - COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  NONE.
* 
*         USES   X - 0
*                B - 0, 5, 7
* 
 D89HALT  SB7    HLTMD895    ENTRY POINT FOR HALT 
          SX0    B0          PA = 0 
          SB5    B0          W NOT USED 
          EQ     PAC         CRACK COMMON CODE
          EJECT 
 D89MNTR  TITLE  D89MNTR - PROCESS THE D895 MONITOR STATEMENT.
**        D89MNTR - PROCESS THE D895 MONITOR STATEMENT. 
* 
*         R.D. SCHNEIDER   85/11/18 
* 
*         D89MNTR - PROCESS THE D895 MONITOR STATEMENT. FORMAT IS 
* 
*           MONITOR DIAG, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT   - PAC - COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  NONE.
* 
*         USES   X - 0
*                B - 1, 5, 7
* 
 D89MNTR  SB7    HLTMD895    ENTRY POINT FOR MONITOR
          SX0    B1          PA = 1 
          SB5    B0          W NOT USED 
          EQ     PAC         CRACK COMMON CODE
          EJECT 
 D89SENS  TITLE  D89SENS - PROCESS THE D895 SENSE STATEMENT.
**        D89SENS - PROCESS THE D895 SENSE STATEMENT. 
* 
*         R.D. SCHNEIDER   85/11/18 
* 
*         D89SENS - PROCESS THE D895 SENSE STATEMENT. FORMAT IS 
* 
*           SENSE INLINE, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT   - COM30  IF SYNTAX ERROR 
*                  PAC4 = COMMON CODE TO PROCESS REST OF STATEMENT. 
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
* 
*         USES   A - 1, 3, 6. 
*                X - 1, 3, 6. 
*                B - 1, 7.
* 
 D89SENS  SA1    DINLINE     CLEAR POINTER
          BX1    X1-X3
          NZ     X1,COM30    IF NOT KEYWORD INLINE
          SB7    SENSD895 
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          EQ     PAC4        ENTER COMMON CODE SEQUENCE 
  
 DINLINE  VFD    60/6LINLINE
          EJECT 
 D89ST    TITLE  D89ST   - PROCESS THE D895 STATUS STATEMENT. 
**        D89ST  - PROCESS THE D895 STATUS STATEMENT. 
* 
*         R.D. SCHNEIDER   85/11/18 
* 
*         D89ST  - PROCESS THE D895 STATUS STATEMENT. FORMAT IS 
* 
*           STATUS GENERAL, ABT Z 
*           STATUS DETAIL, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT   - COM30  IF SYNTAX ERROR 
*                  PAC4 = COMMON CODE TO PROCESS REST OF STATEMENT. 
* 
*         ROUTINES CALLED -  CSTOREB- STORE GENERATED PPU BINARY. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
* 
*         USES   A - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 0, 1, 7. 
* 
 D89ST    SB7    B0          CLEAR POINTER
          SB6    LD89S2 
 D89S21   SA1    D89S2+B7 
          BX1    X1-X3
          ZR     X1,D89S22   IF KEYWORD FOUND 
          SB7    B7+B1       BUMP POINTER 
          NE     B7,B6,D89S21 IF END OF LIST NOT FOUND
          EQ     COM30       ERROR EXIT IF NOT FOUND
  
 D89S22   SX0    LDN+B7 
          SX1    STD+PA 
          SA3    A3+B1
          LX0    12 
          SX6    A3 
          BX0    X0+X1       CODE = LDN FLAG, STD PA
          SA6    PCRK 
          RJ     CSTOREB
          SB7    STAD895     ENTRY POINT FOR STATUS 
          EQ     PAC4        ENTER COMMON SEQUENCE
  
 D89S2    VFD    60/7LGENERAL 
          VFD    60/6LDETAIL
 LD89S2   EQU    *-D89S2
          EJECT 
 PAC      TITLE  PAC - FSD2 COMMON CODE PROCESSOR.
**        PAC    COMMON CODE PROCESSOR. 
* 
*         R.D. SCHNEIDER  85/11/19
* 
*         ENTRY -CRKBUF CONTAINS REMAINDER OF DATA TO CRACK.
*                PCRK   POINTS TO NEXT ITEM IN CRKBUF.
*                (B7)   CONTAINS ENTRY POINT INDEX. 
* 
*         EXIT  -COM10 IF NO ERRORS 
*                COM30 IF SYNTAX ERROR
*                COM31 IF SYNTAX ERROR DURING FIND
* 
*         ROUTINES CALLED - FIND - FIND NEXT ITEM FROM CRKBUF 
*                           CABSPPU - FORM ABSOLUTE ADDRESS 
*                           CSTOREB - SAVE GENERATED BINARY 
*                           CPSN    - PROCESS STATEMENT NUMBER
* 
*         DATA AREAS USED - CRKBUF - WORD STRING OF SOURCE STATEMENT
* 
*         USES   A - 1, 3, 6, 7.
*                X - 0, 1, 3, 6, 7. 
*                B - 1, 5, 7. 
* 
  
**        COMMON CODE PROCESSING
* 
*         PROCESS DIAG (W)
  
 PAC      ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SX0    X0+LDN 
          LX0    12 
          SX1    STD+PA 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    DDIAG
          BX1    X1-X3
          NZ     X1,COM30    IF NOT DIAG THEN SYNTAX ERROR
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          ZR     B5,PAC4     IF W NOT USED
  
*         CRACK  W
  
 PAC2     SX7    B7 
          SA7    PACB        SAVE ENTRY ADDRESS 
          SA1    PACA 
          RJ     FIND        GET W, X OR Y
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          SX0    B3+LDD 
          SX1    STD+PA+1 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    PACB 
          SB7    X1          RESTORE ENTRY ADDRESS
  
*         CRACK ABT Z 
  
 PAC4     SX7    B7 
          SA7    PACB        SAVE B7
          SA1    DABT 
          BX1    X3-X1
          NZ     X1,COM30    ERROR EXIT IF NEXT ITEM IS NOT ABT 
          SA1    PACD 
          BX0    X1 
          RJ     CABSPPU
          RJ     CSTOREB     SAVE GENERATED CODE
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SA1    PACC 
          RJ     FIND        GET Z
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          NZ     X3,COM30    ERROR EXIT IF NOT END OF STATEMENT 
          RJ     CPSN        PROCESS STATEMENT NUMBER 
          SA1    PACB 
          LX1    6
          SX0    2000B       SET BIAS FOR FSD2
          BX0    X0+X1
          LX0    12 
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     COM10       EXIT TO COMPILER 
  
 PACA     VFD    57/0,3/REG1           CONTROL WORD FOR V,W,X AND Y 
 PACB     DATA   0                     BUFFER FOR ENTRY ADDRESS 
 PACC     VFD    42/0,12/77B,6/0       CONTROL WORD FOR Z 
 PACD     VFD    12/0,12/0,12/0,12/RJM,12/POVL+14B
          EJECT 
