*COMDECK,MALETPG
          EJECT 
          QUAL   MALETPG
          IFNE   CMSE,0,1 
          USE    MODD 
          VFD    30/1,6/KEYFMD2,6/KEY2,18/0   CW FOR DEMA2 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 PA OVERLAY (DEMA2)
          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 PA OVERLAY (DEMA2)
          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 PA OVERLAY (DEMA2)
          USE    *
          IFNE   CMSE,0,1 
          USE    P0SBFWA
          DATA   6612B             RELATIVE FWA OF SB 
          USE    *
  
*         DEMA2 FULL TRACK ENTRY POINTS.
  
 RELFMD2  EQU    0
 RESFMD2  EQU    1
 DRWFMD2  EQU    2
 GETFMD2  EQU    3
 MARGFMD2 EQU    4
 RDWRFMD2 EQU    5
 RSETFMD2 EQU    6
 RTNFMD2  EQU    7
 SEEKFMD2 EQU    10B
 WRPFMD2  EQU    11B
 STATFMD2 EQU    12B
 FORFMD2  EQU    13B
 SCANFMD2 EQU    14B
  
          IFNE   CMSE,0,1 
          USE    PKEY 
          VFD    24/0,18/LFMD2,18/TFMD2 
 KEYFMD2  EQU    *-PKEY+PKEYOFF 
          USE    *
  
*         LEGAL HIGH-LEVEL I/O COMMANDS FOR DEMA2 
  
 TFMD2    VFD    42/6LDIAGRD,18/FMDDRD2 
          VFD    42/6LDIAGWR,18/FMDDWR2 
          VFD    42/6LREFORM,18/FMDFOR2 
          VFD    42/3LGET,18/FMDGET2
          VFD    42/7LMARGINS,18/FMDMARG2 
          VFD    42/4LREAD,18/FMDREAD2
          VFD    42/6LREADCB,18/FMDRDCB2
          VFD    42/6LREADCW,18/FMDRDCW2
          VFD    42/3LREL,18/FMDREL2
          VFD    42/3LRES,18/FMDRES2
          VFD    42/5LRESET,18/FMDRSET2 
          VFD    42/7LRTNADDR,18/FMDRTN2
          VFD    42/4LSEEK,18/FMDSEEK2
          VFD    42/4LSCAN,18/FMDSCAN2
          VFD    42/6LSTATUS,18/FMDST2
          VFD    42/6LVERIFY,18/FMDVER2 
          VFD    42/5LWRITE,18/FMDWR2 
          VFD    42/7LWRITECB,18/FMDWRCB2 
          VFD    42/5LWRPRO,18/FMDWRP2
 LFMD2    EQU    *-TFMD2
  
*         CONSTANTS USED BY DEMA2 
  
 DSEC     VFD    60/3LSEC 
          VFD    60/6LSECTOR
          EJECT 
 FMDDRD2  TITLE  FMDDRD2 - PROCESS THE DEMA2 DIAGRD STATEMENT.
**        FMDDRD2 - PROCESS THE DEMA2 DIAGRD STATEMENT. 
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDDRD2 - PROCESS THE DEMA2 DIAGNOSTIC STATEMENT. FORMATS 
*                   ARE;
* 
*           DIAGRD, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  -  P9C4   IF NO ERRORS FOUND
*                  (B7)   DRWFMD2 INDEX INTO DIAGRD SUBROUTINE
* 
*         ROUTINES CALLED - CSTOREB- STORE GENERATED PPU BINARY.
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 FMDDRD2  SB7    DRWFMD2     ENTRY POINT FOR DIAGRD 
          SX0    LDN+32B     DIAGNOSTIC READ FUNCTION 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     PAC4        ENTER COMMON CODE
  
          EJECT 
 PAC      TITLE  PAC - DEMA2 COMMON CODE PROCESSOR. 
**        PAC    COMMON CODE PROCESSOR. 
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         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
* 
  
*         PROCESS V CODED/NOT CODED SECTORS AT
  
 PAC      ZR     X3,COM30    ERROR EXIT IF END OF STATEMENT 
          SX0    X0+LDN 
          SA1    PACA 
          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,PAC0A 
          SA1    DC 
          BX1    X1-X3
          NZ     X1,PAC0     IF NOT C 
 PAC0A    SA3    A3+B1
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
          SX0    X0+20B      SET CODED FLAG BIT 
 PAC0     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 
 PAC1     RJ     CSTOREB     SAVE GENERATED CODE
          SA1    DSECTOR
          BX1    X1-X3
          ZR     X1,PAC1A    IF SECTORS KEYWORD 
          SA1    PACE+2 
          BX1    X1-X3
          NZ     X1,COM30    IF NOT SEC THEN SYNTAX ERROR 
 PAC1A    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           POSITION INDEX CODE
          SX0    2000B       SET BIAS BIT FOR DEMA
          BX0    X0+X1
          LX0    12          POSITION INDEX TO COMMAND TYPE 
          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 
 FMDDWR2  TITLE  FMDDWR2 - PROCESS THE DEMA2 DIAGWR STATEMENT.
**        FMDDWR2 - PROCESS THE DEMA2 DIAGWR STATEMENT. 
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDDWR2 - PROCESS THE DEMA2 DIAGNOSTIC WRITE STATEMENT. FORMAT; 
* 
*           DIAGWR, 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 - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 FMDDWR2  SB7    DRWFMD2     ENTRY POINT FOR DIAGRD 
          SX0    LDN+33B     DIAGNOSTIC WRITE FUNCTION
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     PAC4        ENTER COMMON ABT PROCESSOR 
          EJECT 
 FMDFOR2  TITLE  FMDFOR2 - PROCESS THE DEMA2 REFORM STATEMENT.
**        FMDFOR2 - PROCESS THE DEMA2 REFORM STATEMENT. 
*         . 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDFOR2 -PROCESS THE DEMA2 REFORM STATEMENT. FORMAT AS FOLLOWS
* 
*           REFORM X,ABT Z
* 
*         ENTRY - CRKBUF = WORD STING OF SOURCE STATEMENT CRACKED.
* 
*         EXIT  -  PAC4   IF NO ERRORS FOUND
*                  COM31  IF ITEM NOT FOUND 
* 
*         ROUTINES CALLED -  CSTOREB- STORE GENERATED CODE. 
*                            FIND   - FIND THE NEXT DATA ITEM.
*                            CLOADC - STORE PPU CODE GENERATED. 
* 
*         DATA AREAS USED -  NONE.
* 
*         USES   A - 1. 
*                X - 0, 1.
*                B - 7. 
* 
 FMDFOR2  SB7    FORFMD2
          SA1    FORA        CONTROL WORD FOR BUFFER IB OR OB 
          RJ     FIND 
          NG     B2,COM31    ERROR EXIT IF NOT FOUND
          RJ     CLOADC      GENERATE LDC 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED CODE
          EQ     PAC4        ENTER COMMON ABT PROCESSOR 
  
 FORA     VFD    54/0,3/BUF1,3/0
          EJECT 
 FMDGET2  TITLE  FMDGET2  - PROCESS THE DEMA2 GET STATEMENT.
**        FMDGET -  PROCESS THE DEMA2 GET STATEMENT.
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDGET  - PROCESS THE DEMA2 GET  STATEMENT. FORMATS ARE;
* 
*                 GET SERIAL, ABT Z 
*                 GET FACTORY SECTOR X, ABT Z 
*                 GET UTILITY SECTOR X, 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.
* 
 FMDGET2  SB7    B0 
          SB6    LFMD2G 
 FMDG21   SA1    B7+FMD2G 
          BX1    X1-X3
          ZR     X1,FMDG22    IF KEYWORD FOUND
          SB7    B7+B1        BUMP POINTER
          NE     B7,B6,FMDG21 IF LIST NOT EXHAUSTED 
          EQ     COM30        ERROR EXIT IF KEYWORD NOT FOUND 
  
 FMDG22   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
          SX0    LDN
          ZR     B7,FMDG24
          MX0    0
          SA1    DSEC        DISPLAY CODE SEC 
          BX1    X1-X3
          ZR     X1,FMDG23
          SA1    A1+B1       DISPLAY CODE SECTOR
          BX1    X1-X3
          NZ     X1,COM30    ERROR EXIT IF NOT SEC OR SECTOR
 FMDG23   SA3    A3+B1
          SX6    A3 
          SA6    PCRK 
          SA1    FMDGA2 
          RJ     FIND 
          NG     B2,COM31    ERRORS EXIT IF NOT IN RANGE
          RJ     CLOAD
 FMDG24   SX1    STD+PA+1 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     STORE GENERATED CODE 
          SB7    GETFMD2     ENTRY POINT FOR GET
          EQ     PAC4        ENTER COMMON SEQUENCE
  
 FMD2G    VFD    60/6LSERIAL   GET KEYWORDS 
          VFD    60/7LFACTORY 
          VFD    60/7LUTILITY 
 LFMD2G   EQU    *-FMD2G
  
 FMDGA2   VFD    42/0,12/37B,3/0,3/REG1    CONTROL WORD FOR X 
          EJECT 
 FMDMARG2 TITLE  FMDMARG2 - PROCESS THE DEMA2 MARGINS STATEMENT.
**        FMDMARG2 - PROCESS THE DEMA2 MARGINS STATEMENT. 
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDMARG2 - PROCESS THE DEMA2 MARGINS STATEMENT. FORMAT
* 
*           MARGINS W, ABT Z
*           MARGINS X OFFSET, Y STROBES, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT   - COM30  IF SYNTAX ERROR 
*                  PAC4   IF NO ERRORS FOUND
* 
*         ROUTINES CALLED -  FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CLOAD  - FORM BINARY CODE FOR LOAD.
*                            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. 
* 
 FMDMARG2 SA1    FMD2MA      ENTRY POINT FOR DIAGRD 
          RJ     FIND        GET W IF SPECIFIED 
          NG     B2,FMD2M1   IF NOT FOUND - NOT A REGISTER
          RJ     CLOAD
          EQ     FMD2M6 
  
 FMD2M1   SB7    B0          CLEAR COUNTER
          SB6    LFMD2MB     SET LENGTH 
 FMD2M2   SA1    B7+FMD2MB
          BX1    X1-X3
          ZR     X1,FMD2M3    IF KEYWORD FOUND
          SB7    B7+B1        BUMP POINTER
          NE     B7,B6,FMD2M2 IF NOT END OF TABLE 
          EQ     COM30        ERROR EXIT IF KEYWORD NOT FOUND 
  
 FMD2M3   SB5    B7          SET OFFSET VALUE 
          SB7    B0          CLEAR COUNTER
          SB6    LFMD2MC
          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
 FMD2M4   SA1    B7+FMD2MC
          BX1    X1-X3
          ZR     X1,FMD2M5   IF KEYWORD FOUND 
          SB7    B7+B1       BUMP POINTER 
          SB5    B5+10B      BUMP STROBES 
          NE     B7,B6,FMD2M4 IF NOT END OF LIST
          EQ     COM30       ERROR EXIT IF KEYWORD NOT FOUND
  
 FMD2M5   SA3    A3+B1       NEXT ITEM FROM CRKBUF
          SA1    DSTROBE
          BX1    X1-X3
          NZ     X1,COM30    ERROR EXIT IF NEXT ITEM NOT STROBES
          SA3    A3+B1
          SX0    LDN+B5 
          SX6    A3 
          SA6    PCRK        BUMP POINTER TO CRKBUF 
 FMD2M6   SX1    STD+PA 
          LX0    12 
          BX0    X0+X1       CODE = LDN VALUE   STD PA
          RJ     CSTOREB
          SB7    MARGFMD2    ENTRY POINT FOR MARGINS
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
  
 FMD2MA   VFD    57/0,3/REG2 CONTROL WORD FOR W 
  
 FMD2MB   VFD    60/6LNORMAL KEYWORDS FOR X 
          VFD    60/3LFWD 
          VFD    60/3LREV 
 LFMD2MB  EQU    *-FMD2MB 
  
 FMD2MC   VFD    60/6LNORMAL KEYWORDS FOR Y 
          VFD    60/5LEARLY 
          VFD    60/4LLATE
 LFMD2MC  EQU    *-FMD2MC 
          EJECT 
 FMDREAD2 TITLE  FMDREAD2 - PROCESS THE DEMA2 READ STATEMENT. 
**        FMDREAD2 - PROCESS THE DEMA2 READ STATEMENT.
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDREAD2 - PROCESS THE DEMA2 READ STATEMENT. FORMAT;
* 
*           READ V SECTORS AT CYL W TRK X SEC Y, ABT Z
*           READ V CODED SECTORS AT CYL W TRK X SEC Y, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  -  PAC    IF NO ERRORS FOUND
* 
*         ROUTINES CALLED    NONE.
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0. 
*                B - 7. 
* 
 FMDREAD2 SB7    RDWRFMD2    ENTRY POINT FOR READ 
          SX0    4           READ FUNCTION
          EQ     PAC         ENTER COMMON SEQUENCE
          EJECT 
 FMDRDCB2 TITLE  FMDRDCB2 - PROCESS THE DEMA2 READCB STATEMENT. 
**        FMDRDCB2 - PROCESS THE DEMA2 READCB STATEMENT.
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDRDCB2 - PROCESS THE DEMA2 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 CODE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - NONE.
*                X - 0, 1.
*                B - 7. 
* 
 FMDRDCB2 SB7    DRWFMD2     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 
 FMDRDCW2 TITLE  FMDRDCW2 - PROCESS THE DEMA2 READCW STATEMENT. 
**        FMDRDCW2 - PROCESS THE DEMA2 READCW STATEMENT.
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDDRD  - PROCESS THE DEMA2 READCW STATEMENT. FORMAT IS 
* 
*           READCW V SECTORS AT CYL W TRK X SEC Y, ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT   - COM30  IF SYNTAX ERROR 
*                  COM31  IF ITEM NOT FOUND 
*                  PAC1   IF NO ERRORS FOUND
* 
*         ROUTINES CALLED -  FIND   - FIND THE NEXT ITEM FROM SOURCE. 
* 
*         DATA AREAS USED -  CRKBUF - WORD STRING OF SOURCE STATEMENT.
*                            MODULE - BINARY CODE GENERATED.
* 
*         USES   A - 1. 
*                X - 0, 1.
*                B - 7. 
* 
 FMDRDCW2 SB7    RDWRFMD2    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    PACA 
          RJ     FIND 
          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     PAC1        ENTER COMMON SEQUENCE
          EJECT 
 FMDREL2  TITLE  FMDREL2 - PROCESS THE DEMA2 REL STATEMENT. 
**        FMDREL2 - PROCESS THE DEMA2 REL STATEMENT.
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDREL2 - PROCESS THE DEMA2 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. 
* 
 FMDREL2  SB7    RELFMD2     ENTRY POINT FOR REL
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
          EJECT 
 FMDRES2  TITLE  FMDRES2 - PROCESS THE DEMA2 RES STATEMENT. 
**        FMDRES2 - PROCESS THE DEMA2 RES STATEMENT.
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDRES2 - PROCESS THE DEMA2 RES STATEMENT. FORMATS ARE; 
* 
*           RES CONTROLLER, 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, 2, 3, 6.
*                X - 0, 1, 2, 3, 6. 
*                B - 7. 
* 
 FMDRES2  SA1    FMD2RA      ENTRY POINT FOR RES
          SA2    FMD2RB 
          BX1    X1-X3
          SB7    B0 
          ZR     X1,FMD2R    IF RES CONTROLLER
          BX2    X2-X3
          SB7    B1 
          NZ     X2,COM30    ERROR EXIT IF NOT DRIVE OR CONTROLLER
 FMD2R    SX0    LDN+B7 
          SX1    STD+PA 
          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    RESFMD2     ENTRY POINT FOR RES
          EQ     PAC4        ENTER COMMON ABT SEQUENCE
  
 FMD2RA   VFD    60/10LCONTROLLER 
 FMD2RB   VFD    60/5LDRIVE 
          EJECT 
 FMDRSET2 TITLE  FMDRSET2 - PROCESS THE DEMA2 RESET STATEMENT.
**        FMDRSET2 - PROCESS THE DEMA2 RESET STATEMENT. 
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDRSET2 - PROCESS THE DEMA2 RESET STATEMENT. FORMAT IS;
* 
*           RESET, 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. 
* 
 FMDRSET2 SB7    RSETFMD2    ENTRY POINT FOR RESET
          EQ     PAC4        ENTER COMMON ABT PROCESSOR CODE
          EJECT 
 FMDRTN2  TITLE  FMDRTN2 - PROCESS THE DEMA2 RTNADDR STATEMENT. 
**        FMDRTN2 - PROCESS THE DEMA2 RTNADDR STATEMENT.
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDRTN2 - PROCESS THE DEMA2 RTNADDR STATEMENT. FORMAT IS; 
* 
*           RTNADDR TO Y, 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 PPU BINARY. 
*                            FIND   - FIND THE NEXT ITEM FROM SOURCE. 
*                            CLOADC - FORM BINARY CODE FOR LOAD.
* 
*         DATA AREAS USED -  NONE.
* 
*         USES   A - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 FMDRTN2  SB7    RTNFMD2     ENTRY POINT FOR RTNADDR
          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    FMDRTNA
          RJ     FIND        GET Y
          NG     B2,COM31    ERROR EXIT IF Y NOT FOUND
          RJ     CLOADC      GENERATE LOAD CONSTANT 
          SX1    STD+PA 
          LX0    12 
          BX0    X0+X1
          RJ     CSTOREB     SAVE GENERATED DATA
          EQ     PAC4        ENTER COMMON SEQUENCE
  
 FMDRTNA  VFD    54/0,3/BUF4,3/0       CONTROL WORD FOR Y 
          EJECT 
 FMDSCAN2 TITLE  FMDSCAN2- PROCESS THE DEMA2 SCAN STATEMENT.
**        FMDSCAN2- PROCESS THE DEMA2 SCAN STATEMENT. 
*         . 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDSCAN2- PROCESS THE DEMA2 SCAN STATEMENT. FORMAT AS FOLLOWS 
* 
*           SCAN,ABT Z
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT CRACKED. 
* 
*         EXIT  -  PAC4   IF NO ERRORS FOUND
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  NONE.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 FMDSCAN2 SB7    SCANFMD2    ADDRESS OF DEMA2 SCAN SUBROUTINE 
          EQ     PAC4 
          EJECT 
 FMDSEEK2 TITLE  FMDSEEK2 - PROCESS THE DEMA2 SEEK STATEMENT. 
**        FMDSEEK2 - PROCESS THE DEMA2 SEEK STATEMENT.
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDSEEK2 - PROCESS THE DEMA2 SEEK STATEMENT. FORMAT IS; 
* 
*           SEEK CYL W TRK X SEC Y, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  -  PAC2   IF NO ERRORS FOUND
*                PAC2 = COMMON COMPILER CODE TO PROCESS SEEK STATEMENT. 
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  NONE.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 FMDSEEK2 SB7    SEEKFMD2    ENTRY POINT FOR SEEK 
          EQ     PAC2        ENTER COMMON SEQUENCE
          EJECT 
 FMDST2   TITLE  FMDST2  - PROCESS THE DEMA2 STATUS STATEMENT.
**        FMDST2 - PROCESS THE DEMA2 STATUS STATEMENT.
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDST2 - PROCESS THE DEMA2 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 -  NONE.
* 
*         USES   A - 1, 3, 6. 
*                X - 0, 1, 3, 6.
*                B - 7. 
* 
 FMDST2   SB7    B0          CLEAR POINTER
          SB6    LFMDS2 
 FMDS21   SA1    FMDS2+B7 
          BX1    X1-X3
          ZR     X1,FMDS22   IF KEYWORD FOUND 
          SB7    B7+B1       BUMP POINTER 
          NE     B7,B6,FMDS21 IF END OF LIST NOT FOUND
          EQ     COM30       ERROR EXIT IF NOT FOUND
  
 FMDS22   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    STATFMD2    ENTRY POINT FOR STATUS 
          EQ     PAC4        ENTER COMMON SEQUENCE
  
 FMDS2    VFD    60/7LGENERAL 
          VFD    60/6LDETAIL
 LFMDS2   EQU    *-FMDS2
          EJECT 
 FMDVER2  TITLE  FMDVER2 - PROCESS THE DEMA2 VERIFY STATEMENT.
**        FMDVER2 - PROCESS THE DEMA2 VERIFY STATEMENT. 
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDVER2 - PROCESS THE DEMA2 VERIFY STATEMENT.  FORMATS ARE; 
* 
*                VERIFY V SECTORS AT CYL W TRK X SEY Y, ABT Z 
*                VERIFY V CODED SECTORS AT CYL W TRK X SEC Y, ABT Z 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT. 
* 
*         EXIT  - (B7) = VERFMD (INDEX OF VERIFY ROUTINE IN DRIVER. 
*                 PAC  = COMMON CODE TO PROCESS REST OF STATEMENT.
* 
*         ROUTINES CALLED - NONE. 
* 
*         DATA AREAS USED - NONE. 
* 
*         USES   A - NONE.
*                X - 0. 
*                B - 7. 
* 
 FMDVER2  SB7    RDWRFMD2 
          SX0    6+40B       VERIFY FUNCTION PLUS WRITE FLAG
          EQ     PAC         ENTER COMMON SEQUENCE
          EJECT 
 FMDWR2   TITLE FMDWR2 - PROCESS THE DEMA2 WRITE STATEMENT. 
**        FMDWR2 - PROCESS THE DEMA2 WRITE STATEMENT. 
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         FMDWR2 - PROCESS THE DEMA2 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  - (B7) = RDWRFMD (INDEX OF WRITE ROUTINE IN DRIVER. 
*                 (X0) = 45B (WRITE 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. 
* 
 FMDWR2   SB7    RDWRFMD2    ENTRY POINT IN DRIVER FOR WRITE
          SX0    5+40B       WRITE FUNCTION PLUS WRITE BIT
          EQ     PAC         ENTER COMMON CODE TO PROCESS STATEMENT.
          EJECT 
 FMDWRCB2 TITLE  FMDWRCB2 - PROCESS THE DEMA2 WRITECB STATEMENT.
**        FMDWRCB2 - PROCESS THE DEMA2 WRITECB STATEMENT. 
* 
*         M.S.FABBRINI  83/04/06. 
* 
*         FMDWRCB2 - PROCESS THE DEMA2 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. 
* 
 FMDWRCB2 SB7    DRWFMD2     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 
 FMDWRP2  TITLE  FMDWRP - PROCESS THE DEMA2 WRPRO STATEMENT.
**        FMDWRP2 - PROCESS THE DEMA2 WRPRO STATEMENT.
* 
*         G.L.GOLDEN  81/09/23. 
* 
*         ENTRY - CRKBUF = WORD STRING OF SOURCE STATEMENT CRACKED. 
* 
*         EXIT  - (B7)   = WRPFMD2 (INDEX OF WRPRO SUBROUTINE.
*                 PAC2     COMMON CODE PROCESSOR. 
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  NONE.
* 
*         USES   A - NONE.
*                X - NONE.
*                B - 7. 
* 
 FMDWRP2  SB7    WRPFMD2     ADDRESS OF DEMA2 WRPRO SUBROUTINE
          EQ     PAC2        ENTER COMMON CODE SEQUENCE 
          EJECT 
