*COMDECK,MALETPI
          EJECT 
          QUAL   MALETPI
          IFNE   CMSE,0,1 
          USE    MODD 
          VFD    30/1,6/KEYFSD2,6/KEY2,18/0   CW FOR FSD1 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 PI OVERLAY (FSD1) 
          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 PI OVERLAY (FSD1) 
          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 PI OVERLAY (FSD1) 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SBFWA
          DATA   6612B             RELATIVE FWA OF SB 
          USE    *
  
*         FSD1 FULL TRACK ENTRY POINTS. 
  
 RELFSD2  EQU    0
 RESFSD2  EQU    1
 RCDFSD2  EQU    2
 EXCFSD2  EQU    3
 WCDFSD2  EQU    4
 SPIFSD2  EQU    5
 STAFSD2  EQU    6
 AUTFSD2  EQU    7
  
          IFNE   CMSE,0,1 
          USE    PKEY 
          VFD    24/0,18/LFSD2,18/TFSD2 
 KEYFSD2  EQU    *-PKEY+PKEYOFF 
          USE    *
  
*         LEGAL HIGH-LEVEL I/O COMMANDS FOR FSD1
  
 TFSD2    VFD    42/6LAUTOLD,18/FSDAUTO2
          VFD    42/7LEXECUTE,18/FSDEXC2
          VFD    42/6LREADCD,18/FSDRCD2 
          VFD    42/3LREL,18/FSDREL2
          VFD    42/3LRES,18/FSDRES2
          VFD    42/7LWRITECD,18/FSDWCD2
          VFD    42/4LSPIN,18/FSDSPI2 
          VFD    42/6LSTATUS,18/FSDST2
 LFSD2    EQU    *-TFSD2
  
*         CONSTANTS USED BY FSD1
  
 DSEC     VFD    60/3LSEC 
          VFD    60/6LSECTOR
 DDIAG    VFD    60/4LDIAG
 DCOS     VFD    60/3LCOS 
 DCHAIN   VFD    60/5LCHAIN 
 DCNTWR   VFD    60/5LCNTWR 
 DSYS     VFD    60/3LSYS 
 DADAPT   VFD    60/5LADAPT 
 DDISK    VFD    60/4LDISK
 DADHOST  VFD    60/6LADHOST
 DCMHOST  VFD    60/6LCMHOST
          EJECT 
 FSDAUTO2 TITLE  FSDAUTO2 - PROCESS THE FSD1 AUTOLD STATEMENT.
**        FSDAUTO2 - PROCESS THE FSD1 AUTOLD STATEMENT. 
* 
*         M.S.FABBRINI  83/07/13. 
* 
*         FSDAUTO2 - PROCESS THE FSD1 AUTOLD STATEMENT. FORMAT IS 
* 
*           AUTOLD DISK, ABT Z
*           AUTOLD ADHOST, ABT Z
*           AUTOLD ADHOST CHAIN, ABT Z
*           AUTOLD CMHOST, ABT Z
*           AUTOLD CMHOST CHAIN, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT   - COM30  IF SYNTAX ERROR 
*                  PAC4   IF NO ERRORS FOUND
* 
*         ROUTINES CALLED -  CSTOREB- STORE GENERATED PPU BINARY. 
* 
*         DATA AREAS USED -  NONE.
* 
*         USES   A - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 FSDAUTO2 SB7    B0 
          SA1    DDISK
          BX1    X1-X3
          ZR     X1,AUT1     IF AUTOLOAD DISK 
          SA1    DADHOST
          BX1    X1-X3
          SB7    B1 
          ZR     X1,AUT1     IF AUTOLOAD ADHOST 
          SA1    DCMHOST
          BX1    X1-X3
          SB7    B7+B1
          NZ     X1,COM30    ERROR IF NOT AUTOLOAD CMHOST 
 AUT1     SX0    LDN+B7 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED BINARY
          SA3    A3+B1       GET NEXT ITEM FROM CRKBUF
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          SA1    DCHAIN 
          BX1    X1-X3
          NZ     X1,AUT2     IF NOT CHAINING
          SX0    LDN+B1      SET CHAINING IN PROGRESS 
          SA3    A3+B1       GET NEXT ITEM IN CRKBUF
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          EQ     AUT3 
  
 AUT2     SX0    LDN         CLEAR CHAINING IN PROGRESS 
 AUT3     SX1    STD+PA+1 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    AUTFSD2     ENTRY POINT FOR AUTOLD 
          EQ     PAC4        ENTER COMMON SEQUENCE
  
          EJECT 
 FSDEXC2  TITLE  FSDEXC2  - PROCESS THE FSD1 EXECUTE STATEMENT. 
**        FSDEXC2 -  PROCESS THE FSD1 EXECUTE STATEMENT.
* 
*         M.S.FABBRINI  83/05/04. 
* 
*         FSDEXC2  - PROCESS THE FSD1 EXECUTE STATEMENT. FORMATS ARE
* 
*                 EXECUTE AD V PM X, ABT Z
*                 EXECUTE CM V SB W PM X Y, ABT Z 
*                 EXECUTE CM V SB W PM X Y CHAIN, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT   - COM30  IF SYNTAX ERROR 
*                  COM31  IF ITEM NOT FOUND 
*                  PAC4   IF NO ERRORS FOUND
* 
*         ROUTINES CALLED -  CSTOREB- STORE GENERATED CODE. 
*                            FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CLOAD  - FORM BINARY CODE FOR LOAD.
* 
*         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.
* 
 FSDEXC2  SB7    B0 
          SA1    DAD
          BX1    X1-X3
          ZR     X1,EXC1     IF EXECUTE AD
          SB7    B1          INDEX FOR EXECUTE CM 
          SA1    DCM
          BX1    X1-X3
          NZ     X1,COM30    ERROR IF NOT EXECUTE CM
 EXC1     SX6    B7 
          SA6    EXCA        SAVE COMMAND TYPE AD/CM
          SA1    PACA        CONTROL WORD FOR PARAM V 
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          RJ     FIND 
          NG     B2,COM31    ERROR IF PARAM V NOT FOUND 
          RJ     CLOAD
          SX1    STD+PA+1    CODE = PARAMETER V 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SA1    EXCA 
          SB7    X1          RESTORE B7 COMMAND TYPE
          ZR     B7,EXC2     IF EXECUTE AD
          SA1    DSB
          BX1    X1-X3
          NZ     X1,COM30    ERROR IF NOT EXECUTE CM V SB 
          SX6    B7+4        SET COMMAND TYPE 
          SA6    EXCA        SAVE COMMAND TYPE
          SB7    X6 
          SA3    A3+B1       GET NEXT ITEM FROM CRKBUF
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          SA1    PACA        CONTROL WORD FOR PARAM W 
          RJ     FIND 
          NG     B2,COM31    ERROR IF NOT FOUND 
          RJ     CLOAD
          SX1    STD+PA+4    CODE = PARAMETER W 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
 EXC2     SA1    DPM
          BX1    X1-X3
          NZ     X1,COM30    ERROR IF NOT EXECUTE WITH PARAM PM 
          SX6    B7+2        UPDATE COMMAND TYPE CODE 
          SA6    EXCA 
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          SA1    PACA        CONTROL WORD FOR X 
          RJ     FIND 
          NG     B2,COM31    ERROR IF PARAM X NOT FOUND 
          RJ     CLOAD
          SX1    STD+PA+2    CODE = PARAMETER X 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          ZR     B7,EXC3
          SA1    PACA        CONTROL WORD FOR Y 
          RJ     FIND 
          NG     B2,COM31    ERROR IF PARAM Y NOT FOUND 
          RJ     CLOAD
          SX1    STD+PA+3    CODE = PARAMETER Y 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
 EXC3     SA1    EXCA        GET COMMAND TYPE CODE
          SX0    X1+LDN 
          ZR     B7,EXC4     IF EXECUTE AD
          SA1    DCHAIN 
          BX1    X1-X3
          NZ     X1,EXC4
          SX0    X0+10B      IF CHAINING IN PROGRESS
          SA3    A3+B1       GET NEXT ITEM FROM CRKBUF
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
 EXC4     SX1    STD+PA      CODE = AD(0), CM(1)
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    EXCFSD2     ENTRY POINT FOR EXECUTE COMMAND
          EQ     PAC4        ENTER COMMON SEQUENCE
  
 DAD      VFD    60/2LAD        DISPLAY CODE AD 
 DCM      VFD    60/2LCM        DISPLAY CODE CM 
 DSB      VFD    60/2LSB        DISPLAY CODE SB 
 DPM      VFD    60/2LPM        DISPLAY CODE PM 
 EXCA     VFD    60/0        DATA WORD FOR COMMAND CODE 
          EJECT 
 FSDRCD2  TITLE  FSDRCD2 - PROCESS THE FSD1 READCD STATEMENT. 
**        FSDRCD2 - PROCESS THE FSD1 READCD STATEMENT.
* 
*         M.S.FABBRINI  83/05/03. 
* 
*         FSDRCD2 - PROCESS THE FSD1 READCD STATEMENT. FORMATS
*                   ARE;
* 
*           READCD COS, ABT Z 
*           READCD COS CHAIN, ABT Z 
*           READCD DIAG, ABT Z
*           READCD DIAG CHAIN, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  -  PAC4   IF NO ERRORS FOUND
*                  (B7)   RCDFSD2 INDEX INTO READCD SUBROUTINE
* 
*         ROUTINES CALLED - CSTOREB- STORE GENERATED PPU BINARY.
* 
*         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. 
* 
 FSDRCD2  SB7    B0 
          SA1    DCOS 
          BX1    X1-X3
          ZR     X1,RCD1     IF READCD COS
          SB7    B1          INDEX FOR DIAG 
          SA1    DDIAG
          BX1    X1-X3
          NZ     X1,COM30    ERROR EXIT IF NOT READCD DIAG
 RCD1     SX0    LDN+B7 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED BINARY
          SA3    A3+B1       GET NEXT ITEM OF CRKBUF
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          SA1    DCHAIN 
          BX1    X1-X3
          NZ     X1,RCD2     IF NOT CHAINING
          SX0    LDN+B1      SET CHAINING IN PROGRESS 
          SA3    A3+B1       GET NEXT ITEM IN CRKBUF
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          EQ     RCD3 
  
 RCD2     SX0    LDN
 RCD3     SX1    STD+PA+1 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    RCDFSD2     SET ENTRY POINT
          EQ     PAC4        ENTER COMMON CODE PROCESSOR
  
          EJECT 
 FSDREL2  TITLE  FSDREL2 - PROCESS THE FSD1 REL STATEMENT.
**        FSDREL2 - PROCESS THE FSD1 REL STATEMENT. 
* 
*         G.L.GOLDEN  83/02/17. 
* 
*         FSDREL2 - PROCESS THE FSD1 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. 
* 
 FSDREL2  SB7    RELFSD2     ENTRY POINT FOR REL
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
          EJECT 
 FSDRES2  TITLE  FSDRES2 - PROCESS THE FSD1 RES STATEMENT.
**        FSDRES2 - PROCESS THE FSD1 RES STATEMENT. 
* 
*         G.L.GOLDEN  83/02/17. 
* 
*         FSDRES2 - PROCESS THE FSD1 RES STATEMENT. FORMATS ARE 
* 
*           RES ADAPT, ABT Z
*           RES COMOD, 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.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1, 3, 6. 
*                X - 1, 3, 6. 
*                B - 7. 
* 
 FSDRES2  SB7    B0 
          SA1    DADAPT 
          BX1    X1-X3
          ZR     X1,RES      IF RES ADAPT 
          SB7    B1 
          SA1    DCOMOD 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT RES ADAPT OR COMOD
 RES      SX0    LDN+B7 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED BINARY
          SB7    RESFSD2     ENTRY POINT FOR RES
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
  
 DCOMOD   VFD    60/5LCOMOD 
          EJECT 
 FSDSPI2  TITLE  FSDSPI2 - PROCESS THE FSD1 SPIN STATEMENT. 
**        FSDSPI2 - PROCESS THE FSD1 SPIN STATEMENT.
* 
*         G.L.GOLDEN  83/02/17. 
* 
*         FSDSPI2 - PROCESS THE FSD1 SPIN STATEMENT. FORMAT IS
* 
*           SPIN UP, ABT Z
*           SPIN DN, 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 -  NONE.
* 
*         USES   A - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 FSDSPI2  SB7    B0          CLEAR POINTER
          SA1    DUP
          BX1    X1-X3
          ZR     X1,FSDSP1   IF SPIN UP 
          SB7    B1          INDEX TO SPIN DN 
          SA1    DDN
          BX1    X1-X3
          NZ     X1,COM30    ERROR IF NOT SPIN DN 
 FSDSP1   SX0    LDN+B7 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          SB7    SPIFSD2     ENTRY POINT FOR SPIN 
          EQ     PAC4        ENTER COMMON ABT PROCESSOR 
  
 DUP      VFD    60/2LUP
 DDN      VFD    60/2LDN
          EJECT 
 FSDST2   TITLE  FSDST2  - PROCESS THE FSD1 STATUS STATEMENT. 
**        FSDST2 - PROCESS THE FSD1 STATUS STATEMENT. 
* 
*         G.L.GOLDEN  83/02/17. 
* 
*         FSDST2 - PROCESS THE FSD1 STATUS STATEMENT. FORMAT IS 
* 
*           STATUS GENERAL, ABT Z 
*           STATUS DETAIL, ABT Z
*           STATUS PROCESSOR, 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 -  NONE.
* 
*         USES   A - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 FSDST2   SB7    B0          CLEAR POINTER
          SB6    LFSDS2 
 FSDS21   SA1    FSDS2+B7 
          BX1    X1-X3
          ZR     X1,FSDS22   IF KEYWORD FOUND 
          SB7    B7+B1       BUMP POINTER 
          NE     B7,B6,FSDS21 IF END OF LIST NOT FOUND
          EQ     COM30       ERROR EXIT IF NOT FOUND
  
 FSDS22   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    STAFSD2     ENTRY POINT FOR STATUS 
          EQ     PAC4        ENTER COMMON SEQUENCE
  
 FSDS2    VFD    60/7LGENERAL 
          VFD    60/6LDETAIL
          VFD    60/9LPROCESSOR 
 LFSDS2   EQU    *-FSDS2
          EJECT 
 FSDWCD2 TITLE  FSDWCD2 - PROCESS THE FSD1 WRITECD STATEMENT. 
**        FSDWCD2 - PROCESS THE FSD1 WRITECD STATEMENT. 
* 
*         M.S.FABBRINI  83/05/03. 
* 
*         FSDWCD2 - PROCESS THE FSD1 WRITECD STATEMENT. FORMAT IS 
* 
*           WRITECD CNTWR, ABT Z
*           WRITECD CNTWR CHAIN, ABT Z
*           WRITECD COS, ABT Z
*           WRITECD COS CHAIN, ABT Z
*           WRITECD DIAG, ABT Z 
*           WRITECD DIAG CHAIN, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT   - COM30  IF SYNTAX ERROR 
*                  PAC4   IF NO ERRORS FOUND
* 
*         ROUTINES CALLED -  CSTOREB- STORE GENERATED PPU BINARY. 
* 
*         DATA AREAS USED -  NONE.
* 
*         USES   A - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 FSDWCD2  SB7    B0 
          SA1    DCNTWR 
          BX1    X1-X3
          ZR     X1,WCD1     IF WRITECD CNTWR 
          SA1    DCOS 
          BX1    X1-X3
          SB7    B1 
          ZR     X1,WCD1     IF WRITECD COS 
          SA1    DDIAG
          BX1    X1-X3
          NZ     X1,COM30    ERROR IF NOT WRITECD DIAG
          SB7    B1+B1
 WCD1     SX0    LDN+B7 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED BINARY
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          SA1    DCHAIN 
          BX1    X1-X3
          NZ     X1,WCD2     IF NOT CHAINING
          SX0    LDN+B1      SET CHAINING IN PROGRESS 
          SA3    A3+B1       GET NEXT ITEM IN CRKBUF
          SX6    A3 
          SA6    PCRK        UPDATE POINTER TO CRKBUF 
          EQ     WCD3 
  
 WCD2     SX0    LDN         CLEAR CHAINING IN PROGRESS 
 WCD3     SX1    STD+PA+1 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    WCDFSD2     ENTRY POINT FOR WRITECD
          EQ     PAC4        ENTER COMMON SEQUENCE
  
          EJECT 
 PAC      TITLE  PAC - FSD1 COMMON CODE PROCESSOR.
**        PAC    COMMON CODE PROCESSOR. 
* 
*         G.L.GOLDEN  83/02/17. 
* 
*         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 - 6, 7.
* 
  
**        COMMON CODE PROCESSING
**        COMMON CODE PROCESSING
* 
  
*         CRACK CYL W TRK X SEC Y 
  
 PAC2     SX7    B7 
          SA7    PACB        SAVE ENTRY ADDRESS 
          SB7    B0 
 PAC3     SA1    PACE+B7
          BX1    X1-X3
          NZ     X1,COM30    ERROR EXIT IF NOT CORRECT KEYWORD
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SA1    PACA 
          RJ     FIND        GET W, X OR Y
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          SX0    B3+LDN 
          SX1    B7+STD+PA+55B
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          SB7    B7+B1
          SB6    3
          NE     B7,B6,PAC3  IF Y HAS NOT BEEN DONE YET 
          SA1    PACB 
          SB7    X1          RESTORE ENTRY ADDRESS
  
*         CRACK ABT Z 
  
 PAC4     SX7    B7 
          SA7    PACB        SAVE B7
          SA1    DABT 
          BX1    X3-X1
          NZ     X1,COM30    ERROR EXIT IF NEXT ITEM IS NOT ABT 
          SA1    PACD 
          BX0    X1 
          RJ     CABSPPU
          RJ     CSTOREB     SAVE GENERATED CODE
          SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SA1    PACC 
          RJ     FIND        GET Z
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          NZ     X3,COM30    ERROR EXIT IF NOT END OF STATEMENT 
          RJ     CPSN        PROCESS STATEMENT NUMBER 
          SA1    PACB 
          LX1    6
          SX0    2000B       SET BIAS FOR FSD1
          BX0    X0+X1
          LX0    12 
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     COM10       EXIT TO COMPILER 
  
 PACA     VFD    57/0,3/REG1           CONTROL WORD FOR V,W,X AND Y 
 PACB     DATA   0                     BUFFER FOR ENTRY ADDRESS 
 PACC     VFD    42/0,12/77B,6/0       CONTROL WORD FOR Z 
 PACD     VFD    12/0,12/0,12/0,12/RJM,12/POVL+14B
 PACE     VFD    60/3LCYL              KEYWORDS IN ORDER EXPECTED 
          VFD    60/3LTRK 
          VFD    60/3LSEC 
          EJECT 
