*COMDECK,MALETPP
          EJECT 
          QUAL   MALETPP
          IFNE   CMSE,0,1 
          USE    MODD 
          VFD    30/1,6/KEYFSD3,6/KEY2,18/0   CW FOR FSD2 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 (FSD2) 
          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 (FSD2) 
          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 (FSD2) 
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SBFWA
          DATA   6612B             RELATIVE FWA OF SB 
          USE    *
  
*         FSD2 FULL TRACK ENTRY POINTS. 
  
 RELFSD2  EQU    0
 RESFSD2  EQU    1
 RDWRFSD2 EQU    2
 STAFSD2  EQU    3
 DRWFSD2  EQU    4
  
          IFNE   CMSE,0,1 
          USE    PKEY 
          VFD    24/0,18/LFSD3,18/TFSD3 
 KEYFSD3  EQU    *-PKEY+PKEYOFF 
          USE    *
  
*         LEGAL HIGH-LEVEL I/O COMMANDS FOR FSD2
  
 TFSD3    VFD    42/3LREL,18/FSDREL2
          VFD    42/3LRES,18/FSDRES2
          VFD    42/6LSTATUS,18/FSDST2
          VFD    42/4LREAD,18/FSDREAD2
          VFD    42/5LWRITE,18/FSDWR2 
          VFD    42/6LREADCB,18/FSDRDCB2
          VFD    42/7LWRITECB,18/FSDWRCB2 
 LFSD3    EQU    *-TFSD3
  
*         CONSTANTS USED BY FSD2
  
 DSECTOR  VFD    60/6LSECTOR
 DADAPT   VFD    60/5LADAPT 
 DAT      VFD    60/2LAT
  
  
          EJECT 
 FSDREAD2 TITLE  FSDREAD2 - PROCESS THE FSD2 READ STATEMENT.
**        FSDREAD2 - PROCESS THE FSD2 READ STATEMENT. 
* 
*         G. L. GOLDEN. 77/11/30. 
* 
*         FSDREAD2 - PROCESS THE FSD2 READ STATEMENT. FORMAT; 
* 
*           READ SECTOR 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 ERR 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. 
* 
 FSDREAD2 SB7    RDWRFSD2    ENTRY POINT FOR READ 
          SX0    4           READ FUNCTION
          EQ     PAC         ENTER COMMON SEQUENCE
          EJECT 
 FSDREL2  TITLE  FSDREL2 - PROCESS THE FSD2 REL STATEMENT.
**        FSDREL2 - PROCESS THE FSD2 REL STATEMENT. 
* 
*         G.L.GOLDEN  83/02/17. 
* 
*         FSDREL2 - PROCESS THE FSD2 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 FSD2 RES STATEMENT.
**        FSDRES2 - PROCESS THE FSD2 RES STATEMENT. 
* 
*         G.L.GOLDEN  83/02/17. 
* 
*         FSDRES2 - PROCESS THE FSD2 RES STATEMENT. FORMATS ARE 
* 
*           RES ADAPT, 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.
*                            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    DDRIVE 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT RES ADAPT OR DRIVE
 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
  
 DDRIVE   VFD    60/5LDRIVE 
          EJECT 
 FSDST2   TITLE  FSDST2  - PROCESS THE FSD2 STATUS STATEMENT. 
**        FSDST2 - PROCESS THE FSD2 STATUS STATEMENT. 
* 
*         G.L.GOLDEN  83/02/17. 
* 
*         FSDST2 - PROCESS THE FSD2 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 
 FSDWR2   TITLE FSDWR2 - PROCESS THE FSD2 WRITE STATEMENT.
**        FSDWR2 - PROCESS THE FSD2 WRITE STATEMENT.
* 
*         G. L. GOLDEN  77/11/30. 
* 
*         FSDWR2 - PROCESS THE FSD2 WRITE STATEMENT. FORMATS ARE; 
* 
*               WRITE SECTOR AT CYL W TRK X SEC Y, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = RDWRFSD (ADDRESS OF WRITE ROUTINE IN DRIVER. 
*                 (X0) = 75B (WRITE LAST SECTOR FUNCTION + WRITE BIT).
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED - NONE. 
* 
*         DATA AREAS USED - NONE. 
* 
*         USES   A - NONE.
*                X - 0. 
*                B - 7. 
* 
 FSDWR2   SB7    RDWRFSD2    ENTRY POINT IN DRIVER FOR WRITE
          SX0    35B+40B     WRITE LAST SECTOR FUNCTION PLUS WRITE BIT
          EQ     PAC         ENTER COMMON CODE TO PROCESS STATEMENT.
          EJECT 
 FSDRDCB2 TITLE  FSDRDCB2 - PROCESS THE FSD2 READCB STATEMENT.
**        FSDRDCB2 - PROCESS THE FSD2 READCB STATEMENT. 
* 
*         M.S.FABBRINI  83/01/05. 
* 
*         FSDRDCB2 - PROCESS THE FSD2 READCB STATEMENT. FORMAT IS;
* 
*           READCB, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  -  PAC4   IF NO ERRORS FOUND
* 
*         ROUTINES CALLED -  CSTOREB- STORE GENERATED 16-BIT PPU CODE.
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 FSDRDCB2 SB7    DRWFSD2     ENTRY POINT FOR READCB 
          SX0    LDN+43B
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
          EJECT 
 FSDWRCB2 TITLE  FSDWRCB2 - PROCESS THE FSD2 WRITECB STATEMENT. 
**        FSDWRCB2 - PROCESS THE FSD2 WRITECB STATEMENT.
* 
*         M.S.FABBRINI  83/04/06. 
* 
*         FSDWRCB2 - PROCESS THE FSD2 WRITECB STATEMENT. FORMAT IS; 
* 
*           WRITECB, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  -  PAC4   IF NO ERRORS FOUND
* 
*         ROUTINES CALLED -  CSTOREB- STORE GENERATED PPU CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 FSDWRCB2 SB7    DRWFSD2     ENTRY POINT FOR WRITECB
          SX0    LDN+44B     WRITECB FUNCTION 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     PAC4        ENTER COMMON ABT PROCESSOR 
          EJECT 
 PAC      TITLE  PAC - FSD2 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
* 
*         PROCESS SECTOR AT 
  
 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    DSECTOR
          BX1    X1-X3
          NZ     X1,COM30    IF NOT SECTOR THEN SYNTAX ERROR
          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 
  
 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 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
 PACE     VFD    60/3LCYL              KEYWORDS IN ORDER EXPECTED 
          VFD    60/3LTRK 
          VFD    60/3LSEC 
          EJECT 
