*DECK MALET11 
          IDENT  MALET11
          LCC    OVERLAY(1,1,O=AREA2) 
*CALL,VERS
          COMMENT OVERLAY FOR MALET  "VERS" 
          TITLE  MALET11 - DIRECTIVE PROCESSORS 
*CALL ASSYTAG 
          TITLE 
*CALL MALMAC
* 
*         OVERLAY SUBROUTINE ENTRY TABLE
* 
*                - MUST LOAD AT FRONT OF OVERLAY -
* 
          USE    /ENTRY11/
 ENTRIES  SET    1
*CALL MALNK11 
          USE    *
* 
*         SUBROUTINES IN LOWER LOVEL OVERLAYS 
* 
          EXT    BLK
          EXT    CVTDIS 
          EXT    CVTINT 
          EXT    FILL 
          EXT    INRMOD 
          EXT    MSG
          EXT    POST 
          EXT    RDSFILE
          EXT    SBYTE
          EXT    SEARCH 
          EXT    STRPPU 
          EXT    SVREG
          EXT    UPDIS
          EXT    UPS
* 
*         DATA AREAS IN MALET00 
* 
          EXT    KLMSG
          EXT    KEY
          EXT    PLINE
          EXT    BINARY 
          EXT    OUTPUT 
          EXT    PUNCH
          EXT    RFILE
          EXT    CVTHXB 
          EXT    SCRATCH
          EXT    KLTCU
          EXT    KLBFZ
          EXT    KLNAD
          EXT    KLAC 
          EXT    IRB
          EXT    MB 
          EXT    PREFIX 
          EXT    PNAME
          EXT    PPMT 
          EXT    PDATE
          EXT    PTIME
          EXT    FCMSE
          EXT    MODULE 
          EXT    MLDCIO 
          EXT    SBPCIO 
          EXT    WLDCIO 
          EXT    LMODULE
          EXT    LSOURCE
          EXT    INDEX
          EXT    LINDEXL
          EXT    CRKBUF 
          EXT    CLINE
          EXT    SOURCE 
          EXT    CVLCH
          EXT    KLDC 
          EXT    KLC                                                     MAL31A1
          EXT    KLMSA                                                   MAL31A1
          EXT    KLCSU                                                   MAL31A1
          EXT    KLMST                                                   MAL31A1
          EXT    KLMSAID                                                 MAL31A1
          EXT    KLCSUID                                                 MAL31A1
          EXT    KLMSTID                                                 MAL31A1
          EXT    KLMSTPH                                                 MAL31A1
          EXT    KLPT 
          EXT    KLSCR
          EXT    KLSN 
                                                                         MAL31A1
                                                                         MAL31A1
          EXT    PURA 
          EXT    DIRC 
          EXT    WRC
          EXT    WEST 
          EXT    WCH1 
          EXT    WDEVIC 
          EXT    WATT 
          EXT    WDSN 
          EXT    WEQIP
          EXT    WUNIT
          EXT    WMSID                                                   MAL31A1
          EXT    WMSTPH                                                  MAL31A1
          EXT    WMST                                                    MAL31A1
          EXT    WCSU                                                    MAL31A1
          EXT    WRC2                                                    MAL31C1
          EXT    WEST2                                                   MAL31C1
          EXT    WATT2                                                   MAL31C1
          EXT    WDEVIC2                                                 MAL31C1
          EXT    WCSU2                                                   MAL31C1
          EXT    MTRIN
          EXT    BLANKS 
          EXT    LINES
          EXT    LLINES 
          EXT    MSG7 
          EXT    MSGE1
          EXT    MSGE1A 
          EXT    MSGE2
          EXT    MSGE2A 
          EXT    MSGE6
          EXT    MSGE7
          EXT    MSGE9
          EXT    MSGE9A 
          EXT    MSGE13 
          EXT    MSGE18 
          EXT    MSGE24 
          EXT    MSGE29 
          EXT    MSGE38 
          EXT    MSGE39 
          EXT    MSGE41 
          EXT    MSGE45 
          EXT    MSGE46 
          EXT    MSGE47 
          EXT    MSGE48 
          EXT    MSGE49 
          EXT    MSGE50 
          EXT    MSGE51 
          EXT    MSGE52 
          EXT    MSGE55 
          EXT    MSGE56 
          EXT    MSGE57 
          EXT    MSGE58 
          EXT    MSGE60 
          EXT    MSGE64                                                  MAL31A1
          EXT    MSGE65                                                  MAL31A1
          EXT    MSGE66                                                  MAL31A1
          EXT    MSGE67                                                  MAL31A1
          EXT    MSGE68                                                  MAL31A1
          EXT    MSGE69                                                  MAL31A1
          EXT    MSGE70                                                  MAL31A1
          EXT    MSGE71                                                  MAL31A1
          EXT    MSGE72                                                  MAL31A1
          EXT    MSGE73                                                  MAL31A1
          EXT    MSGE74                                                  MAL31A1
          EXT    MSGE75 
          EXT    MSGE76 
          EXT    MSGE77 
          EXT    MSGE78 
          EXT    MSGE79 
          EXT    MSGE80 
          EXT    MSGE81 
          EXT    MSGE82 
          EXT    MSGE94 
          EXT    MSGE95 
          EXT    MSGE96 
          EXT    MSGE97 
          EXT    MSGE98 
          EXT    MSGE100
          EXT    MSGE101
          EXT    MSGE102
          EXT    MSGE103
          EXT    MSGE104
          EXT    MSGE105
          EXT    MSGE106
          EXT    MSGE107
          EXT    MSGE108
          EXT    MSGE109
          EXT    MSGE110
          EXT    MSGE111
          EXT    MSGE112
          EXT    MSGE113
* 
*         FLAGS FOR EXECUTIVE (IN MALET00)
* 
          EXT    FCHK 
          EXT    FCIO 
          EXT    FCVL 
          EXT    FCMNE
          EXT    FEOFI
          EXT    FERR 
          EXT    FINP 
          EXT    FLOG 
          EXT    FTERM
          EXT    FDROP
          EXT    FSTOP
          EXT    FRFILE 
          EXT    FRUN 
          EXT    FRUNUP 
          EXT    FAL
          EXT    FKL
          EXT    FSHARE 
          EXT    F16SN
          EXT    F721 
* 
*         DATA AREAS IN MALET10 
* 
          EXT    LODA 
          EXT    LODC 
          EXT    LODD 
          EXT    TRUN 
          EXT    TRUNL
          EXT    RUNAME 
          EXT    RUNWD
          EXT    RUNSH
          EXT    RUNB4
          EXT    RUNB5
          EXT    RUNTBL 
*CALL MALCD1
          EJECT 
 ASSIGN   TITLE  ASSIGN - PROCESS ASSIGN DIRECTIVE. 
**        ASSIGN - PROCESS ASSIGN DIRECTIVE.
* 
*         G. L. GOLDEN. 76/12/08. 
* 
*         USED TO ASSIGN A DEVICE TO MALET FOR TESTING. INPUT DIRECTIVE 
*         FOUND AS FOLLOWS; 
* 
*         ASSIGN,EST=AAA,CH=BB,EQ=CC,UN=DD,DC=EE,SN=123456,AL=GG, 
*                PORT=HH
*                HH = PORT FOR IPI CHANNELS (DEFAULT=A).
* 
*               AAA = EST ORDINAL         (DEFAULT=SUPPLIED BY CEVAL).
*                BB = CHANNEL             (DEFAULT=SUPPLIED BY CEVAL).
*                CC = EQUIPMENT NUMBER    (DEFAULT=SUPPLIED BY CEVAL).
*                DD = UNIT NUMBER         (DEFAULT=SUPPLIED BY CEVAL).
*                EE = DEVICE CODE         (DEFAULT=SUPPLIED BY CEVAL).
*            FFFFFF = MEDIA SERIAL NUMBER (DEFAULT=SUPPLIED BY CEVAL).
*                GG = ACCESS LEVEL        (DEFAULT=0).
* 
*         SEE ASSIGN DIRECTIVE WITHIN DOCUMENTATION OF DIRECTIVES.
* 
*         ENTRY  (CRKBUF) CONTAINS CRACKED ASSIGN PARAMETERS. 
* 
*         EXIT   1. VALIDATION GRANTED. 
*                2. VALIDATION NOT GRANTED FDROP=1. 
*                3. GO/DROP VALIDATION GRANTED. 
* 
*         ROUTINES CALLED -  FILL    - FILL BUFFER WITH DATA. 
*                            CVTINT  - CONVERT DISPLAY CODE TO INTEGER. 
*                            CVTDIS  - CONVERT BINARY TO DISPLAY CODE.
*                            POST    - POST MESSAGE.
*                            CEVAL   - PERFORM SYSTEM VALIDATION. 
*                            CVL     - CALL PPU PROGRAM CVL.
* 
*         DATA AREAS USED -  TASS       - ASSIGN PARAMETERS TABLE 
*                            CRKBUF     - CRACKED ENTRY 
*                            WEST-WDSN  - CEVAL PARAMETER VALUES
*                            ASSA       - TEMPORARY STORAGE.
* 
*         USES   A - 1, 2, 6, 7.
*                X - 1, 2, 5, 6, 7. 
*                B - 2, 3.
* 
*         MESSAGES   PARAMETER ERROR .. PARAMETER.
*                    POST    SEPARATOR RE-ENTER.
*                    CVT ERROR     NUMBER.
*                    GO/DROP  EST000 C00 E00 U00 MAY BE SHARED. 
*                    ILLEGAL WHEN MODULE RUNNING. 
* 
  
**        STEP -01- RETURN EQUIPMENT IF PREVIOUS DEVICE ASSIGNED THEN 
*                   CLEAR PREVIOUS ENTRIES FROM TABLE WRC THEN STEP 2.
* 
 ASSIGN   DATA   0
          SA1    FRUN 
          ZR     X1,ASS0     IF MODULE NOT RUNNING
          SB2    MSGE7
          RJ     POST        POST MESSAGE ILLEGAL WHEN MODULE RUNNING 
          EQ     ASS11
  
 ASS0     SA1    WDEVIC                                                  MAL028G
          ZR     X1,ASS1     IF DEVICE WAS NOT ASSIGNED                  MAL31C1
          SA1    WATT                                                    MAL028G
          SX6    100B        NOT IN EST BIT                              MAL028G
          BX6    X1*X6                                                   MAL028G
          IFEQ   NOS+NOS4+NOS5+NOS6,2,1 
          NZ     X6,ASS0A    IF NOT IN EST BIT SET                       MAL31C1
          IFEQ   NOS+NOS4+NOS5+NOS6,1,2 
          IFEQ   NOS+NOS23,2,1
          NZ     X6,ASS0A    IF NOT IN EST BIT SET
          IFEQ   NOSBE,1,1
          NZ     X6,ASS0A    IF NOT IN EST BIT SET
          SX6    10B
          BX6    X1+X6
          SA6    A1          OR IN RETURN EQUIPMENT 
          MX6    0
          SA6    WRC         CLEAR AUTO RECALL WORD 
          CEVAL  WRC         CALL CEVAL TO RETURN DEVICE
 ASS0A    SA1    WDEVIC2                                                 MAL31C1
          ZR     X1,ASS1     IF NO ENTRY WAS PRESENT                     MAL31C1
          SA1    WATT2                                                   MAL31C1
          SX6    100B        NOT IN EST BIT                              MAL31C1
          BX6    X1*X6                                                   MAL31C1
          IFEQ   NOS+NOS4+NOS5+NOS6,2,1 
          NZ     X1,ASS1     IF NOT IN EST BIT SET                       MAL31C1
          IFEQ   NOS+NOS4+NOS5+NOS6,1,2 
          IFEQ   NOS+NOS23,2,1
          NZ     X1,ASS1     IF NOT IN EST BIT SET
          IFEQ   NOSBE,1,1
          NZ     X1,ASS1     IF NOT IN EST BIT SET
          SX6    10B                                                     MAL31C1
          BX6    X1+X6       SET RETURN DEVICE REQUEST                   MAL31C1
          SA6    A1                                                      MAL31C1
          MX6    0                                                       MAL31C1
          SA6    WRC2        CLEAR PREVIOUS RESPONSE CODE                MAL31C1
          CEVAL  WRC2        CALL CVL TO RETURN DEVICE                   MAL31C1
  
 ASS1     MX1    0
          SB2    WEST 
          SB3    WCSU2       LAST LINE TO CLEAR                          MAL31C1
          RJ     FILL        CLEAR PREVIOUS ASSIGNMENTS 
          MX6    0
          SA6    FAL         CLEAR PREVIOUS ACCESS LEVEL
          SA6    FCIO        CLEAR CIO FLAG ON ASSIGN 
          SX6    2
          SA6    FSHARE 
  
**        STEP -02- CLEAR DISPLAY ENTRIES FOR PREVIOUS ASSIGNED VALUES
*                   THEN STEP 3.
* 
          SB2    B1                                                      MAL31A1
          SB3    12          (B3) = LENGTH OF FIRST PART OF TABLE 
          SA2    ASSA                                                    MAL31A1
          MX5    6                                                       MAL31A1
 ASS1A    SA1    TASS+B2
          SB4    X1 
          ZR     B4,ASS1B    IF NO STORE ADDRESS
          SA3    X1          GET DISPLAY CODE FIELD 
          LX1    6
          BX5    X5*X1       GET NUMBER OF BITS IN MASK 
          LX5    6
          MX1    0
          SX1    59 
          BX5    X1-X5       SET MABK 
          SB4    X5 
          MX5    1
          AX5    B4          (X5) = MASK
          BX6    X5*X3       CLEAR PREVIOUS ENTRY DATA
          BX3    -X5*X2      CLEAR ALL BUT DISPLAY CODE ZEROS NEEDED
          BX6    X3+X6       COMBINE ZEROS WITH DATA
          SA6    A3 
 ASS1B    SB2    B2+2        INCREMENT POINTER
          LT     B2,B3,ASS1A   IF DISPLAY NOT CLEAR 
          SB3    TASSL       (B3) = LENGTH OF TABLE 
 ASS2     SA1    TASS+B2
          SB4    X1                                                      MAL31A1
          ZR     B4,ASS2A    IF NO STORE ADDRESS                         MAL31A1
          SA3    X1          GET DISPLAY CODE FIELD                      MAL31A1
          LX1    6                                                       MAL31A1
          BX5    X5*X1       GET NUMBER OF BITS IN MASK                  MAL31A1
          LX5    6                                                       MAL31A1
          SB4    X5-1                                                    MAL31A1
          MX5    1                                                       MAL31A1
          AX5    B4          (X5) = MASK                                 MAL31A1
          BX6    -X5*X3      CLEAR PREVIOUS ENTRY DATA                   MAL31A1
          BX3    X5*X2       CLEAR ALL BUT DISPLAY CODE ZEORS NEEDED     MAL31A1
          BX6    X3+X6       COMBINE ZEROS WITH DATA                     MAL31A1
          SA6    A3                                                      MAL31A1
 ASS2A    SB2    B2+2        INCREMENT POINTER                           MAL31A1
          LT     B2,B3,ASS2  IF DISPLAY NOT CLEAR                        MAL31A1
          SA1    ASSE                                                    MAL31A1
          BX6    X1                                                      MAL31A1
          SA6    KLC                                                     MAL31A1
                                                                         MAL31A1
**        STEP   -03- IF NO ENTRY PRESENT THEN STEP 12 ELSE              MAL31A1
*                     SEARCH TABLE FOR MATHCHING ENTRY IF FOUND          MAL31A1
*                     JUMP TO STEP 6, ELSE STEP 4.                       MAL31A1
*                                                                        MAL31A1
          SA1    SCRATCH
          MX5    -18
          BX6    X5*X1       MASK OFF STATUS BITS 
          SA6    KLSCR       STORE SCRATCH FILE NAME IN KL DISPLAY
          SA1    CRKBUF+1                                                MAL31A1
 ASS3     ZR     X1,ASS96    IF NO ENTRY PRESENT                         MAL31A1
          SB2    B0          (B2) = INDEX INTO TABLE                     MAL31A1
          SB3    TASSL       (B3) = LENGTH OF TABLE                      MAL31A1
          MX5    30          (X5) = MASK FOR CHARACTER MASK              MAL31A1
 ASS4     SA2    TASS+B2                                                 MAL31A1
          BX2    X5*X2       (X2) = DISPLAY CODE PARAMETER FROM TPAR     MAL31A1
          BX2    X2-X1                                                   MAL31A1
          ZR     X2,ASS8     IF MATCH FOUND                              MAL31A1
          SB2    B2+2        INCREMENT INDEX                             MAL31A1
          LT     B2,B3,ASS4  IF TABLE NOT GONE THRU                      MAL31A1
                                                                         MAL31A1
**        STEP -04- CHECK FOR SHARE PARAMETER IF YES FLAG SHARE THEN
*                   STEP 3. IF ESM=NO SET NO ESM BIT THEN STEP 3. 
*                   CHECK FOR PORT SET PORT A OR B THEN STEP 3. 
*                   IF CCH THEN SET CIO FLAG THEN STEP 6. 
*                   ELSE STEP 5.
* 
          SA2    ASSD                                                    MAL31A1
          BX2    X2-X1                                                   MAL31A1
          NZ     X2,ASS4A    IF NOT SHARE 
          MX6    0                                                       MAL31A1
          SA6    FSHARE      FLAG SHARE WITH ANOTHER MAINFRAME           MAL31A1
          SA1    A1+B1                                                   MAL31A1
          EQ     ASS3        LOOP FOR NEXT ENTRY                         MAL31A1
                                                                         MAL31A1
 ASS4A    SA2    ASSH 
          BX2    X2-X1
          NZ     X2,ASS4B    NOT ESM
          SA1    A1+B1
          SX1    X1-1R= 
          NZ     X1,ASS93    ILLEGAL SEPARATOR
          SA1    A1+B1
          BX6    X1 
          SA6    MSGE2A      SET ASSIGN ERROR 
          LX6    12 
          SX1    X6-2RNO
          NZ     X1,ASS92A   IF ESM NOT EQUAL TO NO 
          SA2    WATT 
          SX6    X2+400B
          SA6    WATT        SET ESM=NO BIT 
          SA1    A1+B1
          EQ     ASS3        LOOP FOR NEXT ENTRY
  
 ASS4B    SA2    ASSI 
          BX2    X2-X1
          NZ     X2,ASS4C    NOT PORT 
          SA1    A1+B1
          SX1    X1-1R= 
          NZ     X1,ASS93    ILLEGAL SEPARATOR
          SA1    A1+B1
          BX6    X1 
          SA6    MSGE2A      SET ASSIGN ERROR 
          LX6    6
          SX1    X6-1RA 
          ZR     X1,ASS4BB   IF PORT EQUAL TO A 
          SX1    X6-1RB 
          NZ     X1,ASS92A   IF PORT NOT EQUAL TO A OR B
          SX1    B1          SET PORT B 
 ASS4BB   SX1    X1+1RA 
          SA2    KLPT 
          MX6    -6 
          BX6    X6*X2       SAVE ALL BUT A OR B
          BX6    X6+X1
          SA6    KLPT        SET PORT IN DISPLAY
          SX1    X1-1RA      SET 0 FOR PORT A 1 FOR PORT B
          LX1    7
          SA2    WCH1 
          MX6    -1 
          LX6    7
          BX2    X6*X2       CLEAR PORT FOR CVL 
          BX6    X2+X1
          SA6    WCH1        SET PORT IN CVL CALL BLOCK 
          SA1    A1+B1
          EQ     ASS3        LOOP FOR NEXT ENTRY
  
 ASS4C    SA2    TCCH 
          MX5    30          SET MASK 
          BX2    X5*X2
          BX2    X2-X1
          NZ     X2,ASS5     NOT CIO CHANNEL PARAMETER
          SX6    40B
          SA6    FCIO        FLAG CIO CHANNEL 
          SA2    TCCH        SET FOR CCH TABLE
          EQ     ASS8        CONTINUE PROCESSING
  
**        STEP -05- CHECK FOR C=XX/YY MSS PARAMETER IF NOT THEN          MAL31A1
*                   STEP 13 ELSE CRACK MSS PARAMETERS IF SEPARATOR       MAL31A1
*                   ERROR THEN STEP 11 ELSE STEP 12.                     MAL31A1
*                                                                        MAL31A1
*                                                                        MAL31A1
 ASS5     SX2    1RC                                                     MAL31A1
          LX2    59-5                                                    MAL31A1
          BX2    X1-X2                                                   MAL31A1
          NZ     X2,ASS97    IF NOT C= PARAMETER                         MAL31A1
          SA2    TCXY        CONTROLWORD FOR C=XX/YY                     MAL31A1
          SA1    A1+B1                                                   MAL31A1
          SX1    X1-1R=                                                  MAL31A1
          NZ     X1,ASS93    ILLEGAL SEPARATOR                           MAL31A1
          SA1    A1+B1       GET NEXT PARAMETER                          MAL31A1
          SA3    ASSC                                                    MAL31A1
          BX3    X1-X3                                                   MAL31A1
          NZ     X3,ASS6     IF NOT DISPLAY CODE *NONE*                  MAL31A1
          SA3    ASSE                                                    MAL31A1
          BX6    X3                                                      MAL31A1
          SA6    KLC         STORE  NONE IN DISPLAY CODE                 MAL31A1
          MX6    0                                                       MAL31A1
          SA6    WDSN        CLEAR CEVAL WORD FOR X/Y                    MAL31A1
          SA1    A1+B1       GET NEXT ENTRY FROM CRKBUF                  MAL31C1
          EQ     ASS3        LOOP FOR NEXT ENTRY                         MAL31C1
                                                                         MAL31A1
 ASS6     SB7    B0                                                      MAL31A1
          BX5    X1          MOVE PARAMETER TO X5 FOR CONVERSION         MAL31A1
          RJ     CVTINT      CONVERT                                     MAL31A1
          NZ     X4,ASS92    IF ERRORS                                   MAL31A1
          SX1    X6-7777B                                                MAL31A1
          ZR     X1,ASS7     IF 7777B PARAMETER                          MAL31A1
          BX6    X1                                                      MAL31A1
          MX5    -6                                                      MAL31A1
          BX6    -X5*X6      ALLOW ONLY 00-77B FOR X                     MAL31A1
          LX6    6                                                       MAL31A1
          SA6    WDSN        STORE X CORDINATE                           MAL31A1
          SA1    A1+B1       GET NEXT VALUE                              MAL31A1
          SX1    X1-1R/                                                  MAL31A1
          NZ     X1,ASS93    ILLEGAL SEPARATOR                           MAL31A1
          SA1    A1+B1                                                   MAL31A1
          SB7    B0                                                      MAL31A1
          BX5    X1          MOVE PARAMETER TO X5 FOR CONVERSION         MAL31A1
          RJ     CVTINT      CONVERT                                     MAL31A1
          NZ     X4,ASS92    IF ERRORS                                   MAL31A1
          MX5    -6                                                      MAL31A1
          BX6    -X5*X6                                                  MAL31A1
          SA3    WDSN        GET X CORDINATE                             MAL31A1
          BX6    X6+X3       (X6) = 0000 0000 0000 0000 XXYY             MAL31A1
          EQ     ASS94       ENTER COMMON ROUTINE                        MAL31A1
                                                                         MAL31A1
 ASS7     SX6    17777B      FLAG CARTRIDGE MANUALLY MOUNTED             MAL31A1
          EQ     ASS94       ENTER COMMON ROUTINE                        MAL31A1
                                                                         MAL31A1
**        STEP -06- CHECK FOR = SIGN IF YES JUMP TO CORRECT CONVERSION   MAL31A1
*                   ROUTINE STEP 7 FOR DECIMAL, STEP 8 FOR OCTAL, STEP   MAL31A1
*                   9 FOR NONE, ELSE STEP 11 FOR SEPARATOR ERROR.        MAL31A1
*                                                                        MAL31A1
 ASS8     SA1    A1+B1       GET NEXT PARAMETER                          MAL31A1
          SX1    X1-1R=                                                  MAL31A1
          NZ     X1,ASS93    IF ILLEGAL SEPARATOR                        MAL31A1
          SA1    A1+B1       GET NEXT WORD FROM CRKBUF                   MAL31A1
          SA2    A2          GET CONTROL WORD                            MAL31A1
          MX5    6                                                       MAL31A1
          LX2    30                                                      MAL31A1
          BX3    X2*X5                                                   MAL31A1
          LX3    6                                                       MAL31A1
          ZR     X3,ASS12    IF NO CONVERSION                            MAL31A1
          SX3    X3-1                                                    MAL31A1
          ZR     X3,ASS11    OCTAL CONVERSION                            MAL31A1
          SX3    X3-1 
          ZR     X3,ASS9     IF DISK PACK SN
          BX5    X1 
          RJ     BLK
          SA3    KLAC 
          MX2    24 
          BX6    X2*X6       CLEAR GARBAGE
          BX2    -X2*X3      CLEAR AC FIELD 
          BX6    X6+X2
          SA6    A3          STORE AC FIELD INTO DISPLAY
          RJ     CVTHXB      CONVERT HEX DATA TO BINARY 
          NZ     X4,ASS92    IF CONVERSION ERROR ON ACCESS CODE 
          EQ     ASS94
                                                                         MAL31A1
**        STEP -07- DECIMAL CONVERSION THEN STEP 12.                     MAL31A1
*                                                                        MAL31A1
 ASS9     MX5    36          DISK PACK SN                                MAL31A1
          SA3    KLSN+1 
          BX6    -X5*X3                                                  MAL31A1
          BX6    X1+X6                                                   MAL31A1
          SA6    A3          STORE UPDATED WORD                          MAL31A1
          SA5    ASSB                                                    MAL31A1
          LX1    36                                                      MAL31A1
          IX7    X1-X5       CONVERT TO BINARY                           MAL31A1
          LX7    59-35       POSITION TO UPPER 36 BITS                   MAL31A1
          SB6    6           (B6) CHARACTER TO CONVERT                   MAL31A1
          MX5    4                                                       MAL31A1
          MX6    0           (X6) RESULT                                 MAL31A1
 ASS10    LX7    2                                                       MAL31A1
          BX3    X5*X7       (X3) = DIGIT OF NUMBER                      MAL31A1
          BX6    X6+X3                                                   MAL31A1
          LX6    4                                                       MAL31A1
          LX7    4                                                       MAL31A1
          SB6    B6-B1       DECREMENT CHARACTER COUNTER                 MAL31A1
          NZ     B6,ASS10    LOOP FOR SIX CHARACTERS                     MAL31A1
          SA6    MB+3        STORE SERIAL NUMBER INTO 12-BIT MB 
          SA5    MODULE+5    GET 16BIT FLAG 
          LX5    59-12
          PL     X5,ASS94    IF NOT 16-BIT MALET
          SA6    F16SN       STORE SERIAL NUMBER FOR 16-BIT MALET 
          EQ     ASS94       ENTER COMMON ROUTINE                        MAL31A1
                                                                         MAL31A1
**        STEP -08- CONVERT DISPLAY CODE TO BINARY IF CONVERT ERRORS     MAL31A1
*                   STEP 10 ELSE STEP 15.                                MAL31A1
*                                                                        MAL31A1
 ASS11    SB7    B0                                                      MAL31A1
          BX5    X1          MOVE PARAMETER TO X5 FOR CONVERSION         MAL31A1
          RJ     CVTINT      CONVERT                                     MAL31A1
          NZ     X4,ASS11A   IF ERRORS
          EQ     ASS94       ENTER COMMON ROUTINE                        MAL31A1
                                                                         MAL31A1
 ASS11A   SA1    A1 
          BX5    X1 
          RJ     CVTHXB      CHECK IF HEX ENTRY 
          NZ     X4,ASS92    IF NOT HEX 
          EQ     ASS94
                                                                         MAL31A1
**        STEP -09- NO CONVERSION NEEDED MOVE VALUE THEN STEP 11.        MAL31A1
*                                                                        MAL31A1
 ASS12    BX6    X1                                                      MAL31A1
          LX2    6
          BX3    X2*X5
          LX3    6
          SB3    X3 
          LX6    B3          POSITION VALUE TO LOWER BITS 
          EQ     ASS94       ENTER COMMON ROUTINE TO STORE VALUE         MAL31A1
                                                                         MAL31A1
**        STEP -10- IF EST=NO SET NOT IN EST BIT THEN STEP 12, ELSE 
*                   POST CONVERSION ERROR MESSAGE THEN STEP 15. 
                                                                         MAL31A1
 ASS92    SA1    A1                                                      MAL31A1
          BX6    X1                                                      MAL31A1
          SA6    MSGE2A      STORE BAD VALUE FOR ERROR                   MAL31A1
          LX6    12 
          SX1    X6-2RNO
          NZ     X1,ASS92A   IF VALUE WAS DISPLAY CODE NO 
          SB2    A2          (B2) = ADDRESS OF ENTRY IN TABLE TASS
          SB3    TASS        (B3) = ADDRESS OF EST ENTRY
          NE     B2,B3,ASS92A   IF NOT FIRST ENTRY IN TABLE (EST) 
          SA2    WATT 
          SX6    X2+100B
          SA6    WATT        SET NOT IN EST BIT 
          EQ     ASS95A 
  
 ASS92A   SB2    MSGE2
          RJ     POST                                                    MAL31A1
          EQ     ASS98                                                   MAL31A1
                                                                         MAL31A1
**        STEP -11- ILLEGAL SEPARATOR WAS DETECTED POST MESSAGE THEN     MAL31A1
*                   STEP 15.                                             MAL31A1
*                                                                        MAL31A1
 ASS93    SB2    MSGE24                                                  MAL31A1
          RJ     POST        POST (ILLEGAL SEPARATOR RE-ENTER)           MAL31A1
          EQ     ASS98                                                   MAL31A1
                                                                         MAL31A1
**        STEP -12- STORE UPDATED VALUE AND SET BITS ACCOURDING TO       MAL31A1
*                   TABLE TASS WORD 2 THEN UPDATE FOR NEXT PARAMETER     MAL31A1
*                   THEN STEP 3.                                         MAL31A1
*                                                                        MAL31A1
 ASS94    SA2    A2                                                      MAL31A1
          SA4    X2          (X4) = CEVAL DATA TO STORE                  MAL31A1
          MX5    6                                                       MAL31A1
          LX2    36                                                      MAL31A1
          BX3    X2*X5                                                   MAL31A1
          LX3    6           (X3) MASK FOR CEVAL STORE                   MAL31A1
          SB3    X3-1                                                    MAL31A1
          MX5    1                                                       MAL31A1
          AX5    B3                                                      MAL31A1
          SB3    B3+B1                                                   MAL31A1
          LX5    B3          POSITION MASK IN LOW ORDER BITS             MAL31A1
          SA2    A2+B1                                                   MAL31A1
          MX7    6                                                       MAL31A1
          BX3    X7*X2                                                   MAL31A1
          LX3    6                                                       MAL31A1
          SB3    X3                                                      MAL31A1
          LX5    B3          POSITION MASK                               MAL31A1
          LX6    B3          POSITION MASK                               MAL31A1
          BX6    X5*X6       CLEAR ALL BUT DATA TO STORE                 MAL31A1
          BX4    -X5*X4      CLEAR DATA AREA TO STORE INTO               MAL31A1
          LX2    12                                                      MAL31A1
          BX3    X7*X2                                                   MAL31A1
          LX3    6                                                       MAL31A1
          SX5    X3-77B                                                  MAL31A1
          ZR     X5,ASS95    IF NO BIT TO SET                            MAL31A1
          SB3    X3+1                                                    MAL31A1
          MX3    1                                                       MAL31A1
          LX3    B3          POSITION BIT TO SET                         MAL31A1
          BX6    X6+X3                                                   MAL31A1
          LX2    6                                                       MAL31A1
          BX3    X7*X2                                                   MAL31A1
          LX3    6                                                       MAL31A1
          SX5    X3-77B                                                  MAL31A1
          ZR     X5,ASS95    IF NO BIT TO SET                            MAL31A1
          SB3    X3+1                                                    MAL31A1
          MX3    1                                                       MAL31A1
          LX3    B3          POSITION BIT TO SET                         MAL31A1
          BX6    X6+X3                                                   MAL31A1
 ASS95    BX6    X4+X6       COMBINE WITH PREVIOUS DATA                  MAL31A1
          SA6    A4          STORE CEVAL WORD                            MAL31A1
          SX2    A4 
          SX5    WCH1 
          BX2    X2-X5
          NZ     X2,ASS95A   IF NOT CEVAL CHANNEL PARAMETER 
          SA2    FCIO 
          ZR     X2,ASS95A   IF CIO CHANNEL FLAG NOT SET
          BX6    X6+X2       ADD IN CIO PARAMETER 
          SA6    A4          STORE UPDATED VALUE
 ASS95A   SA1    A1+B1       GET NEXT PARAMETER 
          EQ     ASS3        LOOP UNTIL PARAMETER NOT PRESENT            MAL31A1
                                                                         MAL31A1
**        STEP -13- CALL CEVAL FOR SYSTEM VALIDATION THEN STEP 16.       MAL31A1
*                                                                        MAL31A1
 ASS96    SA1    WDEVIC                                                  MAL31A1
          MX5    -12                                                     MAL31A1
          BX1    -X5*X1                                                  MAL31A1
          SX1    X1-100B                                                 MAL31A1
          NZ     X1,ASS96A   IF NOT DC=100B  MSSMST                      MAL31A1
          SA1    WMST                                                    MAL31A1
          EQ     ASS96B                                                  MAL31A1
                                                                         MAL31A1
 ASS96A   SX1    X1-1                                                    MAL31A1
          NZ     X1,ASS96C   IF NOT DC=101B  MSSCSU                      MAL31A1
          SA1    WCSU                                                    MAL31A1
 ASS96B   BX6    X1                                                      MAL31A1
          SA1    WUNIT                                                   MAL31A1
          BX6    X1+X6                                                   MAL31A1
          SA6    A1          MOVE MOVE CSU INTO WUNIT CEVAL WORD         MAL31A1
 ASS96C   SA1    FSHARE                                                  MAL31A1
          SA2    ASSF                                                    MAL31A1
          NZ     X1,ASS96D                                               MAL31A1
          SA2    ASSG                                                    MAL31A1
 ASS96D   BX6    X2                                                      MAL31A1
          SA6    KLSN+2      UPDATE SHARE NO SHARE ON DISPLAY 
          RJ     CEVAL                                                   MAL31A1
          EQ     ASS99                                                   MAL31A1
                                                                         MAL31A1
**        STEP -14- POST PARAMETER ERROR MESSAGE THEN STEP 15.           MAL31A1
*                                                                        MAL31A1
 ASS97    SB2    MSGE1                                                   MAL31A1
          BX6    X1                                                      MAL31A1
          SA6    MSGE1A      STORE PARAMETER INTO ERROR MESSAGE          MAL31A1
          RJ     POST        POST ERROR MESSAGE                          MAL31A1
                                                                         MAL31A1
**        STEP -15- CLEAR ASSIGN TABLE WE HAD ERROR THEN STEP 15.        MAL31A1
*                                                                        MAL31A1
 ASS98    MX1    0                                                       MAL31A1
          SB2    WEST                                                    MAL31A1
          SB3    WCSU                                                    MAL31A1
          RJ     FILL        CLEAR ASSIGN TABLE                          MAL31A1
                                                                         MAL31A1
**        STEP -16- RETURN.                                              MAL31A1
*                                                                        MAL31A1
 ASS99    EQ     ASSIGN      RETURN                                      MAL31A1
                                                                         MAL31A1
                                                                         MAL31A1
 ASSA     VFD    60/10H0000000000                                        MAL31A1
 ASSB     VFD    60/6R000000                                             MAL31A1
 ASSC     VFD    60/4LNONE                                               MAL31A1
 ASSD     VFD    60/5LSHARE                                              MAL31A1
 ASSE     VFD    60/10H00/00                                             MAL31A1
 ASSF     DATA   10H SHARE=NO                                            MAL31A1
 ASSG     DATA   10H SHARE=YES                                           MAL31A1
 ASSH     VFD    60/3LESM 
 ASSI     VFD    60/4LPORT
                                                                         MAL31A1
**        TASS IS USED TO CLEAR DISPLAY OF VALUES FOR                    MAL31A1
*         NEW ASSIGNMENT.                                                MAL31A1
*                                                                        MAL31A1
*         VFD    30/A,6/B,6/C,18/D                                       MAL31A1
*         VFD    6/E,6/F,6/G,6/H,36/I                                    MAL31A1
*                                                                        MAL31A1
*                A = DISPLAY CODE PARAMETER                              MAL31A1
*                B = CONVERSION CODE 0=NONE 1=OCTAL 2=DECIMAL 3=HEX 
*                C = BITS OF MASK FOR STORE INTO CEVAL                   MAL31A1
*                D = ADDRESS TO STORE UPDATED VALUE                      MAL31A1
*                E = SHIFT COUNT FOR COMBINING WITH CEVAL TABLE          MAL31A1
*                F = BITS OF MASK FOR DISPLAY TO ZERO FILL               MAL31A1
*                G = BITS TO SET IN CEVAL CALL TABLE  77B=NONE           MAL31A1
*                H = BITS TO SET IN CEVAL CALL TABLE  77B=NONE           MAL31A1
*                I = ADDRESS OF DISPLAY VALUE                            MAL31A1
*                                                                        MAL31A1
 TASS     VFD    30/3LEST,6/1,6/12,18/WEST, 
          VFD    6/0,6/24,6/48,6/77B,36/KLDC+1
  
          VFD    30/2LCH,6/1,6/12,18/WCH1 
          VFD    6/0,6/24,6/48,6/77B,36/KLDC+2
  
          VFD    30/2LEQ,6/1,6/12,18/WEQIP
          VFD    6/0,6/24,6/48,6/77B,36/KLDC+3
  
          VFD    30/2LUN,6/1,6/12,18/WUNIT
          VFD    6/0,6/24,6/48,6/77B,36/KLDC+4
  
          VFD    30/2LDC,6/1,6/12,18/WDEVIC 
          VFD    6/0,6/24,6/48,6/77B,36/KLDC
  
          VFD    30/2LAL,6/1,6/12,18/FAL
          VFD    6/0,6/24,6/77B,6/77B,36/KLDC+5 
  
          VFD    30/2LSN,6/2,6/24,18/WDSN 
          VFD    6/0,6/36,6/48,6/77B,36/KLSN+1
                                                                         MAL31A1
          VFD    30/3LMSA,6/1,6/3,18/WUNIT                               MAL31A1
          VFD    6/3,6/6,6/48,6/77B,36/KLMSA                             MAL31A1
                                                                         MAL31A1
          VFD    30/3LCSU,6/1,6/3,18/WCSU                                MAL31A1
          VFD    6/0,6/6,6/48,6/77B,36/KLCSU                             MAL31A1
                                                                         MAL31A1
          VFD    30/3LMST,6/1,6/3,18/WMST                                MAL31A1
          VFD    6/0,6/6,6/48,6/77B,36/KLMST                             MAL31A1
                                                                         MAL31A1
          VFD    30/5LMSAID,6/1,6/6,18/WMSID                             MAL31A1
          VFD    6/32,6/12,6/48,6/77B,36/KLMSAID                         MAL31A1
                                                                         MAL31A1
          VFD    30/5LCSUID,6/1,6/6,18/WMSID                             MAL31A1
          VFD    6/24,6/12,6/48,6/77B,36/KLCSUID                         MAL31A1
                                                                         MAL31A1
          VFD    30/5LMSTID,6/1,6/6,18/WMSID                             MAL31A1
          VFD    6/24,6/12,6/48,6/77B,36/KLMSTID                         MAL31A1
                                                                         MAL31A1
          VFD    30/5LMSTPH,6/1,6/6,18/WMSTPH                            MAL31A1
          VFD    6/0,6/6,6/48,6/77B,36/KLMSTPH                           MAL31A1
                                                                         MAL31A1
          VFD    30/3LLTA,6/1,6/8,18/WMSTPH 
          VFD    6/0,6/24,6/48,6/77B,36/KLNAD 
  
          VFD    30/3LTCU,6/1,6/4,18/WMSID
          VFD    6/0,6/24,6/48,6/77B,36/KLTCU 
  
          VFD    30/3LBFZ,6/1,6/4,18/WMSID
          VFD    6/4,6/24,6/48,6/77B,36/KLBFZ 
  
          VFD    30/2LAC,6/3,6/16,18/WDSN 
          VFD    6/0,6/24,6/48,6/77B,36/KLAC
  
          VFD    30/3LMNE,6/0,6/12,18/WDEVIC                             MAL31A1
          VFD    6/12,6/12,6/48,6/77B,36/0                               MAL31A1
 TASSL    EQU    *-TASS                                                  MAL31A1
                                                                         MAL31A1
 TCXY     VFD    30/1LC,6/1,6/13,18/WDSN                                 MAL31A1
          VFD    6/0,6/30,6/48,6/77B,36/KLC                              MAL31A1
  
 TCCH     VFD    30/3LCCH,6/1,6/12,18/WCH1
          VFD    6/0,6/24,6/48,6/77B,36/KLDC+1
          EJECT 
 CEVAL    TITLE  CEVAL - PROCESS SYSTEM VALIDATION. 
**        CEVAL - PROCESS SYSTEM VALIDATION.
* 
*         G. L. GOLDEN. 76/12/08. 
* 
*         PROCESS SYETEM VALIDATION FOR DEVICE ON ASSIGN DIRECTIVE. 
*         CALLS THE CVL VALIDATION PROGRAM USING THE SYSTEM MACRO 
*         CEVAL.
* 
*           CVL TERMINATES THE MALET EXECUTION IF;
* 
*           1. CVL CALL ERROR AND NOT CONSOLE ORGIN.
*           2. CVL VALIDATION ERROR AND NOT CONSOLE ORGIN.
*           3. MALET IS NOT  SYSTEM ORGIN.
*           4. ENGINEERING MODE NOT ON AND MALET IS NOT CONSOLE ORGIN.
* 
*         ENTRY  TABLE WRC HAS VALUES STORE FROM ASSIGN DIRECTIVE.
*                CVLCH = 0  CHANNELS 0-13B LEGAL
*                CVLCH = 1  CHANNELS 0-13B + 20-33B LEGAL 
* 
*         EXIT   1. VALIDATION GRANTED. 
*                2. VALIDATION DENIED. ( MESSAGE )
*                     FDROP SET IF INPUT. 
*                     FDROP SET IF TERMINAL AND THREE TRIES GIVEN.
*                (B1) = 1.
* 
*         ROUTINES CALLED -  CVL    - SYSTEM PPU PROGRAM. 
*                            SBYTE  - STORE BYTE INTO WORD. 
*                            CVTDIS - CONVERT BINARY TO DISPLAY CODE. 
*                            POST   - POST MESSAGE ON ACTIVE OUTPUT.
*                            UPDIS  - UPDATE DISPLAY PAGE.
* 
*         DATA AREAS USED -  CVLCH  - CHANNELS 20-33 LEGAL FLAG.
* 
*         USES   A - 1, 2, 3, 6, 7. 
*                X - 1, 2, 3, 4, 5, 6, 7. 
*                B - 1, 2, 3, 4, 5, 6.
* 
*         MESSAGES
* 
*             VALIDATION GRANTED-  EST00 C00 E00 U00 AL00 DC00. 
*             N.GO/DROP  EST000 C00 E00 U00  MAY BE SHARED. 
*             VALIDATION DENIED- CH,EQ,UN, OR EST NEEDED. 
*             VALIDATION DENIED- CH IN ERROR. 
*             VALIDATION DENIED- DC IN ERROR. 
*             VALIDATION DENIED- DEVICE IN TEST STATE. 0000.
*             VALIDATION DENIED- DEVICE NOT FOUND.
*             VALIDATION DENIED- CRITICAL INFO MAY BE DESTROYED.
*             VALIDATION DENIED- IN USE BY  SYSTEM. 
*             VALIDATION DENIED- AL TOO LOW.
*             VALIDATION DENIED- DEVICE IN MAINT. STATE. 0000.
*             VALIDATION DENIED- SN MUST BE PROVIDED. 
*             VALIDATION DENIED- SN IN ERROR. 
*             VALIDATION DENIED- AL ILLEGAL.
*             VALIDATION DENIED- DC NEEDED EST ABSENT.
*             K/L DISPLAY NOT ON - DROP FORCED. 
*             VALIDATION DENIED- CVL RESPONSE OUT OF RANGE. 
* 
 CEVAL    DATA   0
  
**        STEP -01- CHECK CHANNEL FOR POSSIBLE ERROR IF NOT THEN
*                   THEN STEP 2, ELSE POST MESSAGE THEN STEP 18.
* 
          SX6    1
          SA6    FCVL        SET CEVAL CALLED FLAG
 CVL0A    MX6    0                                                       MAL31C1
          SA6    CVLWAIT     CLEAR PAUSE FOR GO 
          MX4    -12
          SB2    B0          (B2) = INDEX INTO TABLE TAL
          SB3    LTAL        (B3) = LENGTH OF TABLE TAL 
          SA2    FAL
          BX3    -X4*X2      (X3) = ACCESS LEVEL
          SA1    WEST 
          NZ     X1,CVL2     IF EST PROVIDED
          SA1    WDEVIC                                                  MAL016G
          MX2    12                                                      MAL016G
          LX2    24          MASK FOR MNE                                MAL016G
          BX1    X1*X2                                                   MAL016G
          BX6    X1 
          SA6    FCMNE       SET/CLEAR FLAG FOR MNE PROVIDED
          NZ     X1,CVL2     IF MNE IS PROVIDED                          MAL016G
          SA1    WCH1 
          ZR     X1,CVL00    IF CHANNEL NOT PROVIDED
          SA1    WEQIP
          ZR     X1,CVL00    IF EQ NOT PROVIDED 
          SA1    WUNIT
          NZ     X1,CVL0     IF UNIT PROVIDED 
          SA1    WMSTPH 
          NZ     X1,CVL0     IF LTA OR MSTPH PROVIDED 
 CVL00    SB2    MSGE45 
          EQ     CVL17       VALIDATION DENIED CH,EQ,UN, OR EST NEEDED. 
 CVL0     SX6    B1 
          LX6    48 
          SA1    WEQIP
          BX7    X6+X1
          SA7    A1          FORCE DATA IN FIELD FOR EQUIPMENT
          SA1    WUNIT
          BX7    X6+X1
          SA7    A1          FORCE DATA IN FIELD FOR UNIT 
          SA1    WCH1 
          BX7    X6+X1
          SA7    A1          FORCE DATA IN FIELD FOR CHANNEL
          BX1    -X4*X1 
          SX2    X1-14B 
          NG     X2,CVL2     IF CHANNEL IS LE 13B CONTINUE PROCESS
          SX2    X1-20B 
          NG     X2,CVL1     IF CHANNEL GT 13B AND LT 20B ERROR 
          SX2    X1-34B 
          NG     X2,CVL0B    IF CHANNEL GT 20B AND LT 34B 
          SX2    X1-40B 
          NG     X2,CVL1     IF CHANNEL GT 33B AND LT 40B 
          SX2    200B        MASK FOR PORT BIT
          BX2    -X2*X1      MASK OFF PORT BITS 
          SX2    X2-52B      CHECK CH 40B - 51B (CIO CHANNELS)
          PL     X2,CVL1     IF CHANNEL GT 52B ERROR
 CVL0B    SA1    CVLCH
          NZ     X1,CVL2     IF GT 12B PPUS PRESENT CHANNELS 20-33B OK
 CVL1     SB2    MSGE41      ILLEGAL CHANNEL
          EQ     CVL17
  
**        STEP -02- FIND ACCESS LEVEL IN TABLE  IF LEGAL THEN STEP 3, 
*                   ELSE POST ERROR MESSAGE THEN STEP 18. 
* 
 CVL2     SA2    TAL+B2 
          LX2    12 
          BX2    -X4*X2 
          BX2    X2-X3
          ZR     X2,CVL3     IF MATCH FOUND 
          SB2    B2+B1
          LT     B2,B3,CVL2  IF NOT END OF TABLE
          SB2    MSGE56      ACCESS LEVEL ILLEGAL 
          EQ     CVL17
  
**        STEP -03- STORE FUNCTION ATTRIBUTES FOR ACCESS LEVEL, SET 
*                   SHARE BYTES FOR ACCESS LEVEL USING TAL TABLE THEN 
*                   STEP 4. 
* 
 CVL3     SA1    A2 
          BX6    -X4*X1 
          SA3    WATT 
          BX6    X3+X6       COMBINE ATTRIBUTES WITH NOT IN EST BIT 
          SA6    A3          STORE FUNCTION ATTRIBUTES
          LX1    24 
          BX2    -X4*X1 
          ZR     X2,CVL3A    IF NO SHARE BYTES TO SET 
          SX6    1
          LX6    51          SHARE BYTE BIT 2*51
          SA4    WDEVIC 
          MX5    -12
          BX4    -X5*X4      GET DEVICE CODE
          SX4    X4-300B
          NG     X4,CVL3A0   IF DEVICE CODE LT 300B 
          SX4    X4-2 
          PL     X4,CVL3A0   IF NOT DEVICE 300B OR 301B 
          LX6    1           SHARE BIT 2**52
 CVL3A0   MX4    -12
          SA3    X2+WRC 
          BX7    X6+X3
          SA7    A3          STORE SHARE BIT
          LX1    12 
          BX2    -X4*X1 
          ZR     X2,CVL3A    IF NO SHARE BYTE LEFT TO SET 
          SA3    X2+WRC 
          BX7    X6+X3
          SA7    A3          STORE SHARE BIT
          LX1    12 
          BX2    -X4*X1 
          ZR     X2,CVL3A    IF NO SHARE BYTE LEFT TO SET 
          SA3    X2+WRC 
          BX7    X6+X3
          SA7    A3          STORE SHARE BIT
  
**        STEP -04- CHECK IF DEVICE CODE PRESENT THEN STEP 9, ELSE
*                   STEP 5. 
* 
 CVL3A    SA1    WDEVIC 
          BX1    -X4*X1                                                  MAL016G
          NZ     X1,CVL5     IF DEVICE CODE PRESENT 
  
**        STEP -05- GO TO STEP 6. 
* 
**        STEP -06- CALL CVL TO GET DEVICE CODE THEN STEP 7.
* 
 CVL4     RJ     CVL         CALL CEVAL 
  
**        STEP -07- SEE IF DEVICE CODE WAS RETURNED IF YES THEN STEP 8, 
*                   ELSE STEP 17. 
* 
          SA1    WDEVIC 
          BX2    -X4*X1 
          SB2    MSGE47      DEVICE NOT FOUND 
          NZ     X2,CVL4A    IF DC RETURNED 
          SA1    WDSN 
          PL     X1,CVL17    IF NOT IN ERROR
          SB2    MSGE52      SN MUST BE PROVIDED
          EQ     CVL17
  
**        STEP -08- RETURN DEVICE IF IT WAS ASSIGNED THEN STEP 9. 
* 
 CVL4A    SA1    WRC         GET RESPONSE CODE
          MX5    -6 
          AX1    6
          BX1    -X5*X1      CLEAR ALL BUT RESPONSE CODE BITS 
          SX1    X1-3 
          NG     X1,CVL4B    IF VALIDATION GRANTED (RESPONSE CODES 0-3) 
          SX1    X1-36B 
          NZ     X1,CVL5     IF NOT RESPONSE CODE OF 41B
 CVL4B    SX6    10B         CODE FOR RETURN DEVICE 
          SA1    WATT 
          BX6    X1+X6
          SA6    WATT        SET FUNCTION ATTRIBUTES FOR RETURN DEVICE
          RJ     CVL         CALL CEVAL 
  
**        STEP -09- CHECK DEVICE CODE FOR RMS IF YES THEN STEP 10, ELSE 
*                   STEP 12.
* 
 CVL5     SA1    WDEVIC      GET DEVICE CODE
          BX1    -X4*X1 
          SX2    X1-20B 
          NG     X2,CVL7     IF RMS DEVICE CODE LT 20B
          SX2    X1-110B     DEVICE CODE FOR ISD
          NG     X2,CVL8     NOT AN ISD 
          SX2    X1-147B     MAX RMS DEVICE CODE + 1
          NG     X2,CVL7     IF RMS DEVICE CODE BETWEEN 110B AND 147B 
          SX2    X1-171B     ESM DEVICE CODE
          ZR     X2,CVL7     IF ESM DEVICE CODE 
          SX2    X1-211B     STORNET DEVICE CODE
          ZR     X2,CVL7     IF STORNET DEVICE CODE 
          SX2    X1-300B
          NG     X2,CVL8     IF DEVICE CODE LT 300B 
          ZR     X2,CVL6     IF DEVICE CODE 300 
          SX2    X2-2 
          PL     X2,CVL8     IF DEVICE CODE GT 301B 
          SX6    301B 
          SA1    WMSTPH 
          MX5    12 
          LX5    24 
          LX6    12 
          BX1    -X5*X1 
          BX6    X1+X6
          SA6    A1          STORE REMOTE NAD DEVICE CODE 
          SA1    FAL         GET ACCESS LEVEL 
          SX1    X1-5 
          NZ     X1,CVL6     IF NOT ACCESS LEVEL 5
          SA1    WEQIP
          SX5    B1 
          LX5    52          BIT 2**52
          BX6    -X5*X1      CLEAR BIT 52 (SHARE BYTE LOCAL NAD)
          SA6    A1 
  
 CVL6     SX2    300B 
          MX5    12 
          LX2    12 
          LX5    24 
          SA1    WEQIP
          BX1    -X5*X1 
          BX6    X2+X1       COMBINE LOCAL NAD DC=300 WITH EQUIPMENT FIELD
          SA6    A1 
          SA1    FAL
          BX2    -X4*X1      GET ACCESS LEVEL 
          ZR     X2,CVL9     IF ACCESS LEVEL 0
          SX1    X2-5 
          NG     X1,CVL6C    IF ACCESS LEVEL 1-4
          SX1    X2-7 
          NG     X1,CVL9     IF ACCESS LEVEL 5 OR 6 
          ZR     X1,CVL6C    IF ACCESS LEVEL 7
          SX1    X2-10B 
          NZ     X1,CVL6B    IF NOT ACCESS LEVEL 10B
 CVL6A    SX6    1
          LX6    52 
          SA1    WMSTPH      GET LOGICAL TCU ADDRESS
          BX1    -X6*X1      CLEAR BIT 52 
          BX6    X1+X6       SET BIT 52 
          SA6    A1 
          EQ     CVL9 
  
 CVL6B    SX1    X2-20B 
          NG     X1,CVL6C    IF ACCESS LEVEL 11B-17B
          SX1    X2-22B 
          NG     X1,CVL6A    IF ACCESS LEVEL 20B OR 21B 
  
 CVL6C    SB2    MSGE56      ILLEGAL ACCESS LEVEL 
          EQ     CVL17
  
  
**        STEP -10- GO TO STEP 11.                                       MAL039G
*                                                                        MAL039G
**        STEP -11- CHECK IF ACCESS LEVEL LEGAL IF NOT POST MESSAGE 
*                   THEN STEP 18, ELSE STEP 13. 
* 
 CVL7     SA1    FAL
          BX2    -X4*X1 
          NZ     X2,CVL7B    IF ACCESS LEVEL GREATER THAN ZERO
          SX6    B1 
          SA6    FAL         SET DEFAULT ACCESS LEVEL OF 1
          LX6    51 
          SA2    WUNIT
          BX6    -X6*X2 
          SA6    A2          CLEAR SHARE BYTE IN UNIT WORD
          ZR     X1,CVL9     IF AL WAS NOT DEFINED AS 0 
          SB2    MSGE56      AL=0  ILLEGAL
          EQ     CVL17
  
 CVL7B    SX2    X2-5 
          NG     X2,CVL9     IF ACCESS LEVEL BETWEEN 1 AND 4
          SX2    X2-3 
          NG     X2,CVL6C    IF ACCESS LEVEL BETWEEN 5 AND 7
  
**        STEP -12- CHECK ACCESS LEVEL IF LEGAL FOR NON RMS IF NO POST
*                   MESSAGE THEN STEP 18, ELSE STEP 13. 
* 
 CVL8     SA1    FAL
          BX2    -X4*X1 
          ZR     X2,CVL9     IF AL = 0
          SX2    X2-10B 
          PL     X2,CVL9     IF AL .GT. 7 
          SB2    MSGE56      AL ILLEGAL  BETWEEN 1 AND 7
          EQ     CVL17
  
**        STEP -13- GOTO STEP 14. 
* 
  
 CVL9     BSS    0
  
**        STEP -14- CLEAR RETURN CODE FROM FUNCTION ATTRIBUTES CALL 
*                   CVL THEN STEP 15. 
* 
 CVL10    SA1    WATT        GET FUNCTION ATTRIBUTES
          SX6    10B
          BX6    -X6*X1 
          SA6    WATT        CLEAR RETURN CODE FROM FUNCTION ATTRIBUTES 
          RJ     CVL
  
**        STEP -15- CHECK RESPONSE CODE IF OUT OF RANGE POST MESSAGE
*                   THEN STEP 18, ELSE STEP 16. 
* 
 CVL10A   SA1    WRC                                                     MAL039G
          MX5    -54
          AX1    6           POSITION RESPONSE CODE TO LOWER 6 BITS 
          BX1    -X5*X1      EXTRACT RESPONSE CODE
          SX2    X1-CVLMSGL 
          NG     X2,CVL11    IF RESPONSE IN RANGE 
          SB2    MSGE58      CVL RESPONSE OUT OF RANGE
          EQ     CVL17
  
**        STEP -16- USING TABLE CVLMSG CHECK FOR VALIDATION COMPLETE IF 
*                   YES THEN STEP 20, ELSE STEP 17. 
* 
 CVL11    SA2    X1+CVLMSG
          BX6    X1 
          SA6    CVLWAIT
          SB2    X2 
          MX5    42 
          BX2    X5*X2
          LX2    59-17
          SX2    X2-1 
          NG     X2,CVL20    IF VALIDATION OK 
  
**        STEP -17- USING TABLE CVLMSG CHECK FOR PAUSE NEEDED IF YES
*                   THEN STEP 20, ELSE IF NOT RESPONSE CODE 4  THEN 
*                   STEP 18, ELSE IF NOT IN EST BIT SET THEN STEP 18, 
*                   ELSE SET NOT IN EST BIT THEN STEP 14. 
* 
          SX2    X2-1 
          NG     X2,CVL20    IF VALIDATION OK WITH PAUSE
          SX2    X1-4 
          NZ     X2,CVL17    IF NOT RESPONSE CODE 4 
          SA1    WEST 
          LX1    59-48
          NG     X1,CVL17    IF EST PRESENT ON ASSIGN DIRECTIVE 
          SA1    WDEVIC 
          LX1    59-48
          SB2    MSGE55 
          PL     X1,CVL17    IF DEVICE CODE NOT PRESENT 
          SB2    MSGE47 
  
**        STEP -18- POST ERROR MESSAGE BY USING B2, CLEAR DEVICE CODE,
*                   IF K/L DISPLAY ON THEN STEP 26, ELSE STEP 19. 
* 
 CVL17    RJ     POST        POST ERROR MESSAGE 
          SX6    MSGE48 
          BX6    -X6
          SX6    X6+B2
          NZ     X6,CVL18    IF NOT CRITICAL INFO MAY BE DESTROYED MSG
          SA1    WDSN 
          PL     X1,CVL18    IF PACK SERIAL NUMBER NOT IN ERROR 
          SB2    MSGE6
          RJ     POST        VALIDATION DENIED- SN IN ERROR.
 CVL18    MX6    0           CLEAR DEVICE CODE ENTRY TO FLAG DEVICE 
          SA6    WDEVIC      NOT ASSIGNED FOR NEXT DIRECTIVES 
          SA1    FKL
          NZ     X1,CVL50    IF K/L DISPLAY FLAG ON 
  
**        STEP -19- CHECK IF TERMINAL MODE LESS THAN THREE TRIES IF YES 
*                   THEN STEP 26, ELSE POST ERROR MESSAGE, SET DROP 
*                   FLAG THEN STEP 26.
* 
          SA1    FTERM
          ZR     X1,CVL19    IF TERMINAL FLAG OFF 
          SA1    CVLTRY 
          SX6    X1+B1
          SA6    A1          STORE NUMBER OF TRIES
          SX1    X1-3 
          NG     X1,CVL50    IF NOT THREE TRIES 
 CVL19    SB2    MSGE57      K/L DISPLAY NOT UP DROP FORCED.
          RJ     POST        POST MESSAGE 
          SX6    B1 
          SA6    FDROP       SET DROP FALG
          EQ     CVL50       RETURN WITH DROP SET 
  
**        STEP -20- STORE EST INTO DISPLAY/MESSAGE, THEN STEP 21. 
* 
 CVL20    MX5    -12
          SA1    WEST 
          BX1    -X5*X1      (X1) = EST TO CONVERT TO DISPLAY CODE
          RJ     CVTDIS 
          SA7    CVLA 
          SB1    MSGE39+1    (B1) = DESTINATION  FOR EST
          SB2    CVLA        (B2) = SOURCE
          SB3    24          (B3) = BITS TO SKIP
          SB4    18          (B4) = BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
          SB1    KLDC+1      (B1) = DESTINATION  FOR EST
          SB2    CVLA        (B2) = SOURCE
          SB3    36          (B3) = BITS TO SKIP
          SB4    24    (B4) BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
          SB1    MSGE100+1   (B1) = DESTINATION FOR EST 
          SB2    CVLA        (B2) = SOURCE
          SB3    6           (B3) = BITS TO SKIP
          SB4    18          (B4) = BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
  
**        STEP -21- STORE CHANNEL INTO DISPLAY/MESSAGE, THEN STEP 22. 
* 
          SA1    WCH1 
          MX5    -6 
          BX6    -X5*X1      MASK ALL BUT CHANNEL NUMBER
          LX6    12 
          SA6    MLDCIO      SAVE FOR CPM CALL FOR CIO PP 
          SA6    SBPCIO      SAVE FOR CPM CALL FOR CIO PP 
          SA6    WLDCIO      SAVE FOR CPM CALL FOR CIO PP 
          MX5    1
          LX5    6
          BX6    X5*X1       MASK ALL BUT CIO CHANNEL INDICATOR 
          SA6    FCIO        SAVE IN CIO FLAG IF ASSIGNED BY EST
          MX5    20 
          LX5    8
          BX6    X5*X1       CLEAR BITS 2**5 THRU 2**47                  MAL31B1
          SA6    A1          RESTORE CHANNEL NUMBER                      MAL032G
          MX5    -5                                                      MAL31B1
          BX1    -X5*X1      (X1) = CHANNEL TO CONVERT TO DISPLAY CODE
          RJ     CVTDIS 
          SA7    CVLA 
          SB1    MSGE39+1    DESTINATION ADDRESS
          SB2    CVLA        (B2) = SOURCE
          SB3    54          (B3) = BITS TO SKIP
          SB4    12          (B4) = BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
          SB1    MSGE94+4    (B1) = DESTINATION 
          SB2    CVLA        (B2) = SOURCE
          SB3    48          (B3) = BITS TO SKIP
          SB4    12          (B4) = BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
          SA1    FCIO        CHECK IF CIO CHANNEL 
          ZR     X1,CVL201   IF NOT CIO CHANNEL 
          SA2    CVLCCH      SET CCH IN THE DISPLAY 
          EQ     CVL202      CONTINUE 
 CVL201   SA2    CVLCHD      SET CH IN THE DISPLAY
 CVL202   LX2    24          SHIFT DATA IN CORRECT POSITION 
          SA1    CVLA        GET CHANNEL NUMBER 
          MX5    -24         SET MASK FOR CHANNEL NUMBER
          LX5    24          MOVE TO CORRECT POSITION 
          BX6    X5*X1       MASK OUT DATA FOR CH OR CCH
          BX6    X6+X2       ADD CH OR CCH TO NUMBER
          SA6    CVLA        SET CHANNEL NUMBER 
          SB1    KLDC+2      (B1) = DESTINATION  FOR CH 
          SB2    CVLA        (B2) = SOURCE
          SB3    12          (B3) = BITS TO SKIP
          SB4    48    (B4) BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
          SA1    FCIO 
          ZR     X1,CVL204   IF NOT CIO DO NOT SET PORT 
          SA1    WCH1 
          AX1    7
          SX1    X1+B1
          MX5    -12
          BX7    -X5*X1      (X7) = PORT IN TO DISPLAY CODE 
          SA7    CVLA 
          SB1    KLPT        DESTINATION ADDRESS
          SB2    CVLA        (B2) = SOURCE
          SB3    54          (B3) = BITS TO SKIP
          SB4    6           (B4) = BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
  
**        STEP -22- STORE EQUIPMENT NUMBER INTO DISPLAY/MESSAGE, THEN 
*                   STEP 22A.                                            MAL31A1
* 
 CVL204   SA1    WEQIP
          MX5    -12
          BX1    -X5*X1      (X1) = EQUIP. NUMBER TO CONVERT
          RJ     CVTDIS 
          SA7    CVLA 
          SB1    MSGE39+2    (B1) = DESTINATION FOR EQUIPMENT NUMBER
          SB2    CVLA        (B2) = SOURCE
          SB3    18          (B3) = BITS TO SKIP
          SB4    6           (B4) = BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
          SB1    KLDC+3      (B1) = DESTINATION  FOR EQ 
          SB2    CVLA        (B2) = SOURCE
          SB3    36          (B3) = BITS TO SKIP
          SB4    24    (B4) BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
                                                                         MAL31A1
**        STEP -22A- IF DC=MSS 101B OR 100B THEN STORE MSS PARAMETER     MAL31A1
*                    INTO DISPLAY THEN STORE ACCESS LEVEL ELSE STEP 23.  MAL31A1
*                                                                        MAL31A1
          SA1    WDEVIC                                                  MAL31A1
          MX5    -12                                                     MAL31A1
          BX1    -X5*X1                                                  MAL31A1
          SX2    X1-100B                                                 MAL31A1
          MX5    -3                                                      MAL31A1
          ZR     X2,CVL21    IF DEVICE CODE EQUAL 100B                   MAL31A1
          SX2    X2-1                                                    MAL31A1
          ZR     X2,CVL20B   IF DEVICE CODE EQUAL 101B
          SX2    X2+101B-300B 
          ZR     X2,CVL20A   IF DEVICE CODE EQUAL 300B
          SX2    X2+300B-301B 
          NZ     X2,CVL24    IF DEVICE CODE NOT EQUAL 301B
 CVL20A   SA1    WMSTPH      GET LOGICAL TCU ADDRESS LTA
          MX5    -8 
          BX1    -X5*X1 
          RJ     CVTDIS      CONVERT TO DISPLAY CODE
          SB1    KLNAD
          SA7    CVLA        SAVE NUMBER FOR SBYTE
          SB2    CVLA        B2 EQUALS ADDRESS OF DATA
          SB3    6           B3 EQUALS BITS TO SKIP 
          SB4    18 
          SB5    B0 
          SB6    B0 
          RJ     SBYTE       GO STORE LTA INTO DISPLAY
  
          SA1    WMSID       GET TCU ENABLES
          MX5    -4 
          BX1    -X5*X1 
          RJ     CVTDIS      CONVERT TO DISPLAY CODE
          SB1    KLTCU
          SA7    CVLA        SAVE NUMBER FOR SBYTE
          SB2    CVLA        B2 EQUALS ADDRESS OF DATA
          SB3    12          B3 EQUALS BITS TO SKIP 
          SB4    12 
          SB5    B0 
          SB6    B0 
          RJ     SBYTE       GO STORE TCU INTO DISPLAY
  
          SA1    WMSID       GET LEGAL BUFFERS SIZES
          MX5    -4 
          AX1    4           POSITION BUFFER SIZES TO BOTTOM 4 BITS 
          BX1    -X5*X1 
          RJ     CVTDIS      CONVERT TO DISPLAY CODE
          SB1    KLBFZ
          SA7    CVLA        SAVE NUMBER FOR SBYTE
          SB2    CVLA        B2 EQUALS ADDRESS OF DATA
          SB3    12          B3 EQUALS BITS TO SKIP 
          SB4    12 
          SB5    B0 
          SB6    B0 
          RJ     SBYTE       GO STORE LEGAL BUFFER SIZES INTO DISPLAY 
          EQ     CVL24
  
 CVL20B   SA1    WUNIT
          BX6    X1 
          SA6    WCSU        STORE UNIT FOR STRPPU
          BX1    -X5*X1                                                  MAL31A1
          RJ     CVTDIS                                                  MAL31A1
          SB1    KLCSU                                                   MAL31A1
          EQ     CVL22                                                   MAL31A1
                                                                         MAL31A1
 CVL21    SA1    WUNIT                                                   MAL31A1
          BX6    X1 
          SA6    WMST        STORE UNIT FOR STRPPU
          BX1    -X5*X1                                                  MAL31A1
          RJ     CVTDIS                                                  MAL31A1
          SB1    KLMST                                                   MAL31A1
 CVL22    SA7    CVLA                                                    MAL31A1
          SB2    CVLA                                                    MAL31A1
          SB3    B0                                                      MAL31A1
          SB4    6                                                       MAL31A1
          SB5    B0                                                      MAL31A1
          SB6    B0                                                      MAL31A1
          RJ     SBYTE       STORE MST OR CSU IN DISPLAY                 MAL31A1
                                                                         MAL31A1
          SA1    WCSU                                                    MAL31A1
          ZR     X1,CVL22A   IF NO CHANGE TO CSU                         MAL31A1
          RJ     CVTDIS      CONVERT TO DISPLAY CODE                     MAL31A1
          SA7    CVLA                                                    MAL31A1
          SB1    KLCSU                                                   MAL31A1
          SB2    CVLA                                                    MAL31A1
          SB3    B0                                                      MAL31A1
          SB4    6                                                       MAL31A1
          SB5    B0                                                      MAL31A1
          SB6    B0                                                      MAL31A1
          RJ     SBYTE       STORE CSU INTO DISPLAY                      MAL31A1
                                                                         MAL31A1
 CVL22A   SA1    WMST                                                    MAL31A1
          ZR     X1,CVL22B   IF NO MST CHANGE                            MAL31A1
          RJ     CVTDIS      CONVERT TO DISPLAY CODE                     MAL31A1
          SB1    KLMST                                                   MAL31A1
          SA7    CVLA                                                    MAL31A1
          SB2    CVLA                                                    MAL31A1
          SB3    B0                                                      MAL31A1
          SB4    6                                                       MAL31A1
          SB5    B0                                                      MAL31A1
          SB6    B0                                                      MAL31A1
          RJ     SBYTE                                                   MAL31A1
                                                                         MAL31A1
 CVL22B   MX5    -3                                                      MAL31A1
          SA1    WUNIT                                                   MAL31A1
          AX1    3                                                       MAL31A1
          BX1    -X5*X1                                                  MAL31A1
          RJ     CVTDIS                                                  MAL31A1
          SB1    KLMSA                                                   MAL31A1
          SA7    CVLA                                                    MAL31A1
          SB2    CVLA                                                    MAL31A1
          SB3    B0                                                      MAL31A1
          SB4    6                                                       MAL31A1
          SB5    B0                                                      MAL31A1
          SB6    B0                                                      MAL31A1
          RJ     SBYTE       STORE MSA IN DISPLAY                        MAL31A1
                                                                         MAL31A1
          SA1    WMSID                                                   MAL31A1
          MX5    -4                                                      MAL31A1
          AX1    32                                                      MAL31A1
          BX1    -X5*X1                                                  MAL31A1
          RJ     CVTDIS                                                  MAL31A1
          SA7    CVLA                                                    MAL31A1
          SB1    KLMSAID                                                 MAL31A1
          SB2    CVLA                                                    MAL31A1
          SB3    B0                                                      MAL31A1
          SB4    12                                                      MAL31A1
          SB5    B0                                                      MAL31A1
          SB6    B0                                                      MAL31A1
          RJ     SBYTE       STORE MSAID INTO DISPLAY                    MAL31A1
                                                                         MAL31A1
          SA1    WMSID                                                   MAL31A1
          MX5    -8                                                      MAL31A1
          AX1    24                                                      MAL31A1
          BX1    -X5*X1                                                  MAL31A1
          RJ     CVTDIS                                                  MAL31A1
          SA7    CVLA                                                    MAL31A1
          SA1    WDEVIC                                                  MAL31A1
          MX5    -12                                                     MAL31A1
          BX1    -X5*X1                                                  MAL31A1
          SX2    X1-100B                                                 MAL31A1
          SB1    KLMSTID                                                 MAL31A1
          ZR     X2,CVL23    IF DC EQ 100B                               MAL31A1
          SB1    KLCSUID                                                 MAL31A1
 CVL23    SB2    CVLA                                                    MAL31A1
          SB3    B0                                                      MAL31A1
          SB4    12                                                      MAL31A1
          SB5    B0                                                      MAL31A1
          SB6    B0                                                      MAL31A1
          RJ     SBYTE       STORE CSUID OR MSTID INTO DISPLAY           MAL31A1
                                                                         MAL31A1
          SA1    WDSN                                                    MAL31A1
          ZR     X1,CVL23A                                               MAL31A1
          MX5    -12                                                     MAL31A1
          BX1    -X5*X1                                                  MAL31A1
          ZR     X1,CVL23A   IF ZERO STORED                              MAL31A1
          RJ     CVTDIS                                                  MAL31A1
          MX5    -12                                                     MAL31A1
          BX6    -X5*X7                                                  MAL31A1
          LX7    6                                                       MAL31A1
          LX5    18                                                      MAL31A1
          BX7    -X5*X7                                                  MAL31A1
          BX7    X7+X6                                                   MAL31A1
          SX6    1R/                                                     MAL31A1
          LX6    12                                                      MAL31A1
          BX7    X6+X7                                                   MAL31A1
          SA7    CVLA                                                    MAL31A1
          SB1    KLC                                                     MAL31A1
          SB2    CVLA                                                    MAL31A1
          SB3    B0                                                      MAL31A1
          SB4    30                                                      MAL31A1
          SB5    B0                                                      MAL31A1
          SB6    B0                                                      MAL31A1
          RJ     SBYTE       STORE C=XX/YY INTO DISPLAY IF PRESENT       MAL31A1
                                                                         MAL31A1
 CVL23A   SA1    WMSTPH                                                  MAL31A1
          MX5    -12                                                     MAL31A1
          BX1    -X5*X1                                                  MAL31A1
          RJ     CVTDIS                                                  MAL31A1
          SA7    CVLA                                                    MAL31A1
          SB1    KLMSTPH                                                 MAL31A1
          SB2    CVLA                                                    MAL31A1
          SB3    B0                                                      MAL31A1
          SB4    6                                                       MAL31A1
          SB5    B0                                                      MAL31A1
          SB6    B0                                                      MAL31A1
          RJ     SBYTE       STORE MSTPH INTO DISPLAY                    MAL31A1
  
**        STEP -23- STORE UNIT NO. INTO DISPLAY/MESSAGE, STORE ACCESS 
*                   LEVEL IN K/L DISPLAY, STORE DEVICE CODE IN K/L
*                   DISPLAY, THEN STEP 24.
* 
 CVL24    SA1    WUNIT                                                   MAL31A1
          MX5    -12
          BX1    -X5*X1      (X1) = UNIT TO CONVERT TO DISPLAY CODE 
          RJ     CVTDIS 
          SA7    CVLA 
          SB1    MSGE39+2    (B1) = DESTINATION 
          SB2    CVLA        (B2) = SOURCE
          SB3    36          (B3) = BITS TO SKIP
          SB4    12          (B4) = BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
          SB1    KLDC+4      (B1) = DESTINATION  FOR UN 
          SB2    CVLA        (B2) = SOURCE
          SB3    36          (B3) = BITS TO SKIP
          SB4    24    (B4) BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
  
          SA1    FAL
          MX5    -12
          BX1    -X5*X1      (X1) = AL TO CONVERT TO DISPLAY CODE 
          RJ     CVTDIS 
          SA7    CVLA 
          SB1    KLDC+5      (B1) = DESTINATION  FOR AL 
          SB2    CVLA        (B2) = SOURCE
          SB3    36          (B3) = BITS TO SKIP
          SB4    24    (B4) BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
  
          SB1    MSGE38+4    (B1) = DESTINATION 
          SB2    CVLA        (B2) = SOURCE
          SB3    6           (B3) = BITS TO SKIP
          SB4    12          (B4) = BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
          SB1    MSGE39+3 
          SB2    CVLA 
          SB3    6           (B3) = BITS TO SKIP
          SB4    12          (B4) = BITS TO TAKE
          SB5    B0 
          SB6    B0 
          RJ     SBYTE             STORE AL IN MSGE39 
  
          SA1    WDEVIC2
          MX5    -12
          BX1    -X5*X1      (X1) = DEVICE TO CONVERT TO DISPLAY CODE 
          NZ     X1,CVL25    IF TWO DEVICES ASSIGNED
          SA1    WDEVIC 
          BX1    -X5*X1 
 CVL25    RJ     CVTDIS 
          SA7    CVLA 
          SB1    KLDC        (B1) = DESTINATION  FOR DC 
          SB2    CVLA        (B2) = SOURCE
          SB3    36          (B3) = BITS TO SKIP
          SB4    24    (B4) BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE
  
          SB1    MSGE39+3    (B1) = DESTINATION ADDRESS 
          SB2    CVLA        (B2) = SOURCE
          SB3    36          (B3) = BITS TO SKIP
          SB4    24          (B4) = BITS TO TAKE
          SB5    B0          (B5) = SKIP BITS FOR NEXT
          SB6    B0          (B6) = BYTES TO DO - 1 
          RJ     SBYTE       STORE DC INTO MESSAGE
  
          SA1    MSGE39+1    MOVE EST CH EQ UN FROM MSGE39 TO MSGE40
          BX6    X1 
          SA6    MSGE38+2 
          SA1    A1+B1
          BX6    X1 
          SA6    A6+B1
          SA1    A1+B1
          BX6    X1 
          SA6    A6+B1
  
**        STEP -25- CHECK PAUSE FLAG IF SET PAUSE FOR GO/DROP WITH MSG
*                   ON B DISPLAY THEN STEP 26, ELSE STEP 26.
* 
 CVL30    SA1    CVLWAIT
          ZR     X1,CVL45    IF PAUSE NOT REQUESTED 
          SA1    X1+CVLMSG
          SB2    X1 
          RJ     MSG         SEND MESSAGE TO DAYFILE
          RJ     POST 
  
          IFEQ   NOS,1,1
          SX6    10000B 
  
          IFEQ   NOSBE,1,1
          SX6    110000B
  
          SA6    B0 
          IFEQ   NOS+NOS4+NOS5,2,3
          EXT    MAL1A
          EREXIT CVL35
          SYSTEM CPM,R,,100B*100B 
          IFEQ   NOS+NOS4+NOS5,1,2
 OPL      XTEXT  COMCCMD
          FLASH 
          IFEQ   NOS+NOS4+NOS5,2
 CVL35    EREXIT MAL1A
          ENDIF 
 CVL40    RECALL
          SA1    B0 
          SX6    10000B 
          BX1    X6*X1
          NZ     X1,CVL40    WAIT FOR EQUIPMENT GO/DROP 
          BX6    X1 
          SA6    FCMNE       CLEAR FLAG AFTER GO/DROP 
 CVL45    SB2    MSGE38 
          RJ     POST        POST MESSAGE VALIDATION GRANTED- 
          SA1    WDEVIC      GET DEVICE CODE                             MAL31C1
          MX5    -12                                                     MAL31C1
          BX1    -X5*X1                                                  MAL31C1
          SX1    X1-100B     CHECK IF MST DEVICE CODE                    MAL31C1
          NZ     X1,CVL50    IF NOT MST                                  MAL31C1
          SA1    WCSU                                                    MAL31C1
          ZR     X1,CVL50    IF CSU NOT ASSIGNED                         MAL31C1
          SA1    WEST                                                    MAL31C1
          BX6    X1                                                      MAL31C1
          SA6    WEST2                                                   MAL31C1
          SB2    WCSU2                                                   MAL31C1
 CVL47    SA1    A1+B1       GET ENTRY FROM CVL CALL TABLE               MAL31C1
          BX6    X1                                                      MAL31C1
          SA6    A6+B1       STORE ENTRY INTO SECOND TABLE               MAL31C1
          SX2    A6-B2                                                   MAL31C1
          NZ     X2,CVL47    LOOP TO MOVE CVL TABLE                      MAL31C1
          SA1    WCSU 
          BX6    X1 
          SA6    WUNIT
          SA1    WDEVIC                                                  MAL31C1
          MX5    36                                                      MAL31C1
          BX6    X5*X1                                                   MAL31C1
          SX1    101B        STORE DEVICE CODE FOR CSU                   MAL31C1
          BX6    X6+X1       OR CSU DEVICE CODE IN                       MAL31C1
          SA6    A1                                                      MAL31C1
          EQ     CVL0A       GO MAKE ANOTHER PASS WITH CSU REQUESTED     MAL31C1
  
**        STEP -26- RETURN. 
* 
 CVL50    SB3    DPARAM 
          RJ     UPDIS       UPDATE DISPLAY 
          SA1    WDEVIC                                                  MAL31C1
          NZ     X1,CVL60    IF DEVICE WAS ASSIGNED 
          SA1    WDEVIC2                                                 MAL31C1
          ZR     X1,CVL60    IF SECOND DEVICE NOT ASSIGNED               MAL31C1
          MX6    0                                                       MAL31C1
          SA1    WEST2                                                   MAL31C1
          BX6    X1                                                      MAL31C1
          SA6    WEST                                                    MAL31C1
          SB2    WCSU                                                    MAL31C1
 CVL54    SA1    A1+B1       GET ENTRY FROM SECOND TABLE                 MAL31C1
          BX6    X1                                                      MAL31C1
          SA6    A6+B1       STORE ENTRY INTO CVL CALL TABLE             MAL31C1
          SX2    A6-B2                                                   MAL31C1
          NZ     X2,CVL54    LOOP TO MOVE SECOND TABLE                   MAL31C1
          SA1    WATT                                                    MAL31C1
          SX6    100B        NOT IN EST BIT                              MAL31C1
          BX6    X1*X6                                                   MAL31C1
          NZ     X6,CVL56    IF NOT IN EST BIT SET                       MAL31C1
          SX6    10B                                                     MAL31C1
          BX6    X1+X6       SET RETURN DEVICE REQUEST                   MAL31C1
          SA6    A1                                                      MAL31C1
          MX6    0                                                       MAL31C1
          SA6    WRC         CLEAR PREVIOUS RESPONSE CODE                MAL31C1
          CEVAL  WRC         CALL CVL TO RETURN DEVICE                   MAL31C1
 CVL56    MX6    0                                                       MAL31C1
          SA6    WDEVIC2     CLEAR SECOND ENTRY FROM ASSIGNED LIST       MAL31C1
          SA6    WDEVIC      CLEAR FIRST ENTRY DEVICE CODE               MAL31C1
          EQ     CVL60       EXIT                                        MAL31C1
                                                                         MAL31C1
 CVL60    SA1    FAL
          MX5    -12
          BX1    -X5*X1      MASK THE ACCESS LEVEL
          SX1    X1-7B
          NG     X1,CVL61    ACCESS NOT GE 10 
          SA1    WDEVIC2
          BX1    -X5*X1 
          NZ     X1,CVL61    TWO DEVICE CODES NOT RMS 
          SA1    WDEVIC 
          BX1    -X5*X1 
          ZR     X1,CVL61    NO DEVICE ASSIGNED 
          SX1    X1-20B 
          NG     X1,CVL60A   RMS DEVICE 
          SX1    X1-70B      110 DEVICE CODE
          NG     X1,CVL61    NOT RMS DEVICE 
          SX1    X1-10B 
          PL     X1,CVL61    NOT RMS DEVICE 
 CVL60A   SB2    MSGE94 
          RJ     POST        POST RMS/AL GE DISABLE UNITS 
 CVL61    MX6    0
          SA6    FCVL        CLEAR CEVAL CALLED FLAG
          SA1    WDEVIC 
          MX5    -12
          BX1    -X5*X1 
          SX1    X1-171B
          ZR     X1,CVL62    IF ESM DEVICE CODE 
          SX1    X1-20B 
          ZR     X1,CVL62    IF STORNET DEVICE CODE 
          SA1    WMSID       GET RAE AND FLE FOR DEMA DEVICES 
          EQ     CVL63       CONTINUE 
  
 CVL62    SA1    WDSN        GET RAE AND FLE FOR ESM OR STORNET 
 CVL63    BX6    X1          SET RAE AND FLE FOR ESM
          SA6    MB+4        IN MESSAGE BUFFER FOR MLD
          EQ     CEVAL       RETURN TO CALLER 
  
 CVLA     DATA   0           TEMPORARY USAGE
 CVLWAIT  DATA   0           WAIT FOR GO/DROP FLAG
 CVLTRY   DATA   0           NUMBER OF TRYIES VIA TERMINAL
 CVLCHD   DATA   4R CH= 
 CVLCCH   DATA   4RCCH= 
  
**        TABLE TAL IS USED TO EQUATE THE ACCESS LEVEL WITH FUNCTION
*         ATTRIBUTES AND PROVIDE THE SHARE WORD INDEX TO BE SET FOR 
*         EACH PARTICULAR ACCESS LEVEL (AL). THE BITS ARE DEFINED AS
*         FOLLOWS;
* 
*           BITS 59-48 = ACCESS LEVEL 
*           BITS 47-36 = SHARE BYTE TO SET. (WORD NUMBER, 4=WUNIT)
*           BITS 35-24 = SHARE BYTE TO SET. (WORD NUMBER, 3=WEQUIP) 
*           BITS 23-12 = SHARE BYTE TO SET. (WORD NUMBER, 2=WCH1) 
*           BITS 11-00 = FUNCTION ATTRIBUTES TO STORE IN WATT.
* 
  
*                   AL    SH   SH   SH  FC
 TAL      VFD    12/00B,12/4,12/0,12/0,12/1002B   AL=0 UNIT RECORD ONLY.
          VFD    12/01B,12/0,12/0,12/0,12/1000B   AL=1 RMS ONLY.
          VFD    12/02B,12/0,12/0,12/0,12/1004B   AL=2 RMS ONLY.
          VFD    12/03B,12/0,12/0,12/0,12/1004B   AL=3 RMS ONLY.
          VFD    12/04B,12/4,12/0,12/0,12/1006B   AL=4 RMS ONLY.
          VFD    12/05B,12/3,12/11B,12/0,12/1007B AL=5 NAD ONLY 
          VFD    12/06B,12/3,12/11B,12/0,12/1007B AL=6 NAD ONLY 
          VFD    12/07B,12/4,12/0,12/0,12/1006B   AL=7 RMS ONLY.
          VFD    12/10B,12/4,12/3,12/0,12/1007B   AL=10 RMS/UNIT RECORD.
          VFD    12/20B,12/4,12/3,12/2,12/1007B   AL=20 RMS/UNIT RECORD.
          VFD    12/21B,12/4,12/3,12/2,12/1007B   AL=21 RMS/UNIT RECORD.
 LTAL     EQU    *-TAL                        LENGTH OF TABLE.
  
**        TABLE CVLMSG USED TO EQUATE ERROR CODES FROM CVL TO ERROR 
*         MESSAGES POSTED BY EXECUTIVE. THE CODE IS USED TO PROVIDE 
*         THE VARIOUS FUNCTIONS THAT MUST BE PERFORMED ACCOURDING 
*         TO THE ERROR RECEIVED FROM CVL. CODES VERSUS FUNCTIONS AS 
*         FOLLOWS;
* 
*                 CODE     FUNCTION PERFORMED 
* 
*                  0     POST MESSAGE AND RETURN. 
*                  1     POST MESSAGE AND WAIT FOR OPERATOR GO/DROP.
*                  2     POST MESSAGE AND SET DROP FLAG IF NOT KL OR
*                        TERMINAL AND LESS THAN THREE TRIES.
* 
  
*                CODE   MESSAGE 
  
 CVLMSG   VFD    42/0,18/MSGE38 
          VFD    42/0,18/MSGE38 
          VFD    42/1,18/MSGE39 
          VFD    42/2,18/MSGE46 
          VFD    42/2,18/MSGE47 
          VFD    42/2,18/MSGE48 
          VFD    42/2,18/MSGE49 
          VFD    42/2,18/MSGE50 
          VFD    42/2,18/MSGE51 
          VFD    42/2,18/MSGE58                                          MAL31C1
          VFD    42/2,18/MSGE75 
          VFD    42/2,18/MSGE76 
          VFD    42/2,18/MSGE77 
          VFD    42/2,18/MSGE78 
          VFD    42/2,18/MSGE79 
          VFD    42/2,18/MSGE80 
          VFD    42/2,18/MSGE64                                          MAL31C1
          VFD    42/2,18/MSGE65                                          MAL31C1
          VFD    42/2,18/MSGE66                                          MAL31C1
          VFD    42/2,18/MSGE67                                          MAL31C1
          VFD    42/1,18/MSGE68                                          MAL31C1
          VFD    42/2,18/MSGE69                                          MAL31C1
          VFD    42/1,18/MSGE70                                          MAL31C1
          VFD    42/1,18/MSGE71                                          MAL31C1
          VFD    42/2,18/MSGE72                                          MAL31C1
          VFD    42/2,18/MSGE73                                          MAL31C1
          VFD    42/2,18/MSGE74                                          MAL31C1
          VFD    42/2,18/MSGE81 
          VFD    42/1,18/MSGE82 
          VFD    42/2,18/MSGE95 
          VFD    42/2,18/MSGE96 
          VFD    42/2,18/MSGE97 
          VFD    42/2,18/MSGE98 
          VFD    42/1,18/MSGE100
          VFD    42/2,18/MSGE101
          VFD    42/2,18/MSGE102
          VFD    42/2,18/MSGE103
          VFD    42/2,18/MSGE104
          VFD    42/2,18/MSGE105
          VFD    42/2,18/MSGE106
          VFD    42/2,18/MSGE107
          VFD    42/2,18/MSGE108
          VFD    42/2,18/MSGE109
          VFD    42/2,18/MSGE110
          VFD    42/2,18/MSGE111
          VFD    42/2,18/MSGE112
          VFD    42/2,18/MSGE113
 CVLMSGL  EQU    *-CVLMSG 
          EJECT 
 CVL      TITLE  CVL - CALL CVL FOR SYSTEM VALIDATION 
**        CVL - CALL CVL FOR SYSTEM VALIDATION
* 
*         G.L.GOLDEN.  77/03/04.
* 
*         ENTRY  WEST-WDSN TABLE HAS PARAMETERS FOR CALL. 
* 
*         EXIT   WRC CONTAINS CVL RESPONSE. 
* 
*         ROUTINES CALLED    - NONE.
* 
*         DATA AREAS USED    - WRC-WDSN = CVL CALL TABLE. 
* 
*         USES   A - 1, 6.
*                X - 1, 5, 6. 
*                B - 3, 4.
* 
*         MESSAGES  - NONE. 
* 
 CVL      DATA   0           ENTRY/EXIT 
          MX5    5
          SB3    WEST        FWA OF PARAMETERS TO CLEAR 
          SB4    WDSN        LWA OF PARAMETERS TO CLEAR 
 CVLL1    SA1    B3 
          BX6    -X5*X1 
          SA6    A1 
          SB3    B3+B1
          LE     B3,B4,CVLL1 IF NOT ALL RESPONCE WORDS CLEAR
          MX6    0
          SA6    WRC         CLEAR AUTO RECALL WORD 
          CEVAL  WRC         CALL CVL TO GET DEVICE CODE
          EQ     CVL         RETURN 
          EJECT 
 DUMP     TITLE  DUMP - COPY RANDOM FILE TO BINARY FILE.
**        DUMP - COPY RANDOM FILE TO BINARY FILE. 
* 
*         G. L. GOLDEN. 76/12/08. 
* 
*         DUMP RANDOM FILE MODULES TO BINARY FILE.
* 
*                1. SKIP MODULES THAT ARE PURGED. 
*                2. SKIP MODULES THAT WERE REPLACED.
*                3. SKIP MODULES THAT CONTAIN CHECKSUM ERRORS.
* 
*         ENTRY  (CRKBUF) = DUMP LEFT JUSTIFIED DISPLAY CODE. 
*                (INDEX)  = BUFFER CONTAINING THE NAMES OF THE MODULES. 
* 
*         EXIT   MODULES COPIED TO BINARY FILE. 
* 
*         ROUTINES CALLED -  RDSFILE - READ RFILE.
*                            POST    - POST MESSAGE.
*                            UPS     - MOVE SOURCE BUFFER.
* 
*         DATA AREAS USED -  MODULE - WORKING STORAGE AREA FOR MODULES. 
*                            INDEX  - INDEX OF MODULE NAMES.
*                            DMPA   - CONTAINS ADDRESS INTO INDEX.
*                            DMPB   - CONTAINS MODULE NAME. 
* 
*         USES   A - 1, 2, 3, 6.
*                X - 1, 2, 3, 5, 6. 
*                B - 2, 3, 4, 5, 6. 
* 
*         MESSAGES    MODULES DUMPED. 
*                     ILLEGAL WHEN MODULE RUNNING.
* 
  
*                   MSG ILLEGAL WHILE MODULE RUNNING THEN STEP 9, ELSE
*                   REWIND BINARY AND GET FIRST INDEX NAME THEN STEP 2. 
* 
 DUMP     DATA   0
          DATE   PDATE       GET CURRENT DATE 
          CLOCK  PTIME       GET CURRENT TIME 
          SA1    PDATE       GET DATE 
          LX1    6           SET BLANK FOR CATALOG
          BX7    X1 
          SA7    PDATE       RESTORE DATE 
          SA1    PTIME       GET TIME 
          LX1    6           SET BLANK FOR CATALOG
          BX7    X1 
          SA7    PTIME       RESTORE TIME 
          SA1    FRUN 
          ZR     X1,DMP0     IF MODULE NOT RUNNING
          SB2    MSGE7
          RJ     POST        POST MSG ILLEGAL WHEN PPU RUNNING
          EQ     DMP6        GO TO RETURN 
  
 DMP0     SA1    CRKBUF+1 
          ZR     X1,DMP0A    IF NO GARBAGE BEYOND DIRECTIVE 
          SB2    MSGE60 
          RJ     POST 
          EQ     DMP6 
  
 DMP0A    REWIND BINARY,R 
          SA1    INDEX+1     GET FIRST MODULE NAME
  
**        STEP -02- SAVE INDEX TO MODULE NAME. IF PURGED THEN STEP 7, 
*                   ELSE READ MODULE THEN STEP 3. 
* 
 DMP1     SX6    A1 
          SA6    DMPA        SAVE ADDRESS OF MODULE NAME
          SA3    PURA        GET FILE NAME FOR PURGED MODULES 
          BX3    X3-X1
          ZR     X3,DMP4     IF MODULE WAS PURGED SKIP IT 
          ZR     X1,DMP4     IF NO MODULE PRESENT SKIP IT 
          MX5    2
          BX1    -X5*X1 
          LX1    59-35
          BX6    X1 
          SA6    DMPB        STORE MODULE NAME
          RJ     RDSFILE     READ RANDOM FILE 
  
**        STEP -03- IF ERRORS IN READING MODULE THEN STEP 7, ELSE GET 
*                   LENGTH OF SOURCE BUFFER IF ZERO THEN STEP 5, ELSE 
*                   STEP 4. 
* 
          NZ     X1,DMP4     IF ERRORS IN READING SKIP MODULE 
          SA1    MODULE 
          SA2    DMPB 
          MX5    36          SIX CHARACTER MASK FOR MODULE NAME 
          BX1    X5*X1
          BX6    X1 
          SA6    PNAME
          BX1    X1-X2
          NZ     X1,DMP4     IF MODULE NAME DOES NOT MATCH BINARY NAME
          SA1    MODULE+3    GET MODULE WORD WITH LENGTH AND FWA SOURCE 
          MX5    12 
          LX1    59-35
          BX2    X5*X1       MASK OUT LENGTH OF SOURCE
          LX2    12 
          SB6    X2          (B6) = LENGTH OF SOURCE
          ZR     B6,DMP3     IF NO SOURCE PRESENT 
          LX1    59-47
          BX2    X5*X1
          LX2    12 
          SB3    X2+MODULE   (B3) = FWA FOR NEW SOURCE
  
**        STEP -04- MOVE SOURCE TO PACKED POSITION THEN STEP 5. 
* 
          SB4    SOURCE      (B4) = OLD SOURCE ADDRESS
          SB5    B0 
 DMP2     SA1    B4+B5
          BX6    X1 
          SA6    B3+B5       STORE SOURCE INTO PACKED POSITION
          SB5    B5+B1       ADVANCE INDEX
          LE     B5,B6,DMP2  IF SOURCE NOT MOVED TO PACKED POSITION 
  
**        STEP -05- GET LENGTH OF MODULE BUFFER, (WORD COUNT FOR WRITE) 
*                   IF MODULE DOES NOT MATCH COMPILER MODE
*                   (ON/OFF LINE) THEN STEP 7. IF OFFLINE 
*                   SET FWA TO OUTPUT PRFX TABLE
*                   THEN STEP 6.
* 
 DMP3     SA1    MODULE+3 
          MX5    -12
          BX6    -X5*X1 
          SX6    X6+B1       (X6) = LENGTH OF MODULE BUFFER 
          BX2    X6 
          SB2    X6 
          LX6    2
          SX6    X6+B2
          SA6    PPMT              LENTGH IN PPU WORDS
          BX6    X2 
          SA1    FCMSE             GET MODE FLAG
          SA2    MODULE+3          GET VERSION FIELD
          MX5    59 
          AX2    58 
          BX2    -X5*X2            GET OFF-LINE BIT 
          BX2    X2-X1             COMPARE TO MODE
          NZ     X2,DMP4           IF DIFFERENT 
  
          IFEQ   NOSBE,1
          SX6    X6+MODULE   (X6) = LWA+1 OF MODULE BUFFER
          NZ     X1,DMP3A          IF OFFLINE MODE
          SX1    MODULE            ON-LINE WRITE FROM MODULE
          EQ     DMP3B
 DMP3A    SX1    PREFIX            OFF-LINE WRITE FROM PREFIX 
 DMP3B    LX1    30 
          BX6    X6+X1             MERGE FWA AND LWA+1
          SA6    BINARY+5          PUT IN FET 
          ENDIF 
  
**        STEP -06- OUTPUT MODULE BUFFER TO BINARY FILE THEN STEP 7.
* 
          IFEQ   NOSBE,1,2
          WRITOUT BINARY
          WRITER  BINARY,,RECALL
  
          IFEQ   NOS,1
          NZ     X1,DMP3C          IF OFF-LINE MODE 
          WRITEW BINARY,MODULE,X6 
          EQ     DMP3D
 DMP3C    SX1    PREFIX 
          SX2    MODULE 
          IX1    X2-X1                                                   MAL018K
          IX6    X6+X1
          WRITEW BINARY,PREFIX,X6 
 DMP3D    WRITER BINARY,R 
          ENDIF 
  
**        STEP -07- GET INDEX TO MODULE NAME IF END OF INDEX TABLE THEN 
*                   STEP 8, ELSE STEP 2.
* 
 DMP4     SA1    DMPA        GET ADDRESS OF LAST NAME 
          SA1    X1+2        INCREMENT BY 2 
          SX2    A1 
          SX6    LINDEXL
          IX2    X2-X6
          NG     X2,DMP1     IF NOT END OF INDEX TABLE
  
**        STEP -08- POST MESSAGE MODULES WRITTEN TO BINARY, MOVE LAST 
*                   SOURCE TO UNPACKED POSITION THEN STEP 9.
* 
 DMP5     SB2    MSGE29 
          RJ     POST        POST RFILE WRITTEN TO BINARY MESSAGE 
  
          IFEQ   NOSBE,1
          SX6    MODULE 
          SX6    X6+LMODULE 
          SA1    BINARY+5    FET ADDRESS FOR LWA
          MX5    48 
          BX1    X5*X1
          BX6    X6+X1
          SA6    A1          RESTORE MAX LENGTH INTO FET
          ENDIF 
  
          SA1    MODULE 
          MX5    36 
          BX1    X5*X1
          ZR     X1,DMP6     IF NO MODULE IN BUFFER 
          RJ     UPS
  
**        STEP -09- RETURN. 
* 
 DMP6     EQ     DUMP        RETURN TO CALLER 
  
 DMPA     DATA   0           TEMPORARY STORAGE ADDRESS INTO INDEX 
 DMPB     DATA   0           TEMPORARY STORAGE FOR MODULE NAME
          EJECT 
 LOAD     TITLE  LOAD - PROCESS LOAD DIRECTIVE. 
**        LOAD - PROCESS LOAD DIRECTIVE.
* 
*         G. L. GOLDEN. 76/12/08. 
* 
*         LOAD A MODULE FROM RANDOM FILE TO MODULE BUFFER AND 
*         DISPLAY SOURCE IF AVALIABLE AND K/L DISPLAY ON. 
* 
*         DIRECTIVE 'LOAD AAANNN' WHERE AAA=NAME AND NNN=MODULE 
*         NUMBER. 
* 
*         ENTRY FKL = 1 IF K/L DISPLAY ON.
*               FKL = 0 IF K/L DISPLAY OFF. 
*               (CRKBUF) = DISPLAY CODE DIRECTIVE + PARAMETERS. 
* 
*         EXIT  MODULE LOADED IF NO ERRORS. 
* 
*         ROUTINES CALLED -  RDSFILE - READ MODULE FROM RANDOM FILE.
*                            POST    - POST MESSAGE.
* 
*         DATA AREAS USED -  FRUN   - MODULE RUNNING FLAG.
*                            CRKBUF - CRACKED DIRECTIVE PLUS PARAMETERS.
* 
*         USES   A - 1. 
*                X - 1. 
*                B - 2. 
* 
*         MESSAGES   ILLEGAL WHEN MODULE RUNNING. 
* 
  
**        STEP -01- TEST IF RUNNING IF NOT THEN STEP 2, ELSE POST MSG 
*                   ( ILLEGAL WHEN MODULE RUNNING) THEN STEP 3. 
* 
 LOAD     DATA   0           ENTRY/EXIT 
          SA1    FRUN        GET RUN FLAG 
          ZR     X1,LOA1     IF NOT RUNNING 
          SB2    MSGE7
          RJ     POST        POST ILLEGAL ENTRY WHEN RUNNING MSG
          EQ     LOA2        RETURN 
  
**        STEP -02- READ RANDOM FILE NAMED ON DIRECTIVE TO MODULE 
*                   MODULE BUFFER THEN STEP 3.
* 
 LOA1     SA1    CRKBUF+1    GET PROGRAM NAME TO LOAD 
          RJ     RDSFILE     GO READ FILE FROM RFILE
  
**        STEP -03- RETURN. 
* 
 LOA2     EQ     LOAD        RETURN TO CALLER 
          EJECT 
 MOVE     TITLE  MOVE - PROCESS MOVE DIRECTIVE. 
**        MOVE - PROCESS MOVE DIRECTIVE.
* 
*         G. L. GOLDEN. 76/12/08. 
* 
*         MOVE SOURCE LINES UP OR DOWN WITHIN SOURCE BUFFER AS
*         FOLLOWS;
* 
*           1. MOVE UP IS USED TO CLOSE SOURCE LINES. 
*           2. MOVE DOWN IS USED TO OPEN SPACE FOR MORE SOURCE. 
* 
*         ENTRY  (CRKBUF) CONTAINS ENTRY PLUS PARAMETERS. 
*                (SOURCE) CONTAINS SOURCE CODE. 
* 
*         EXIT   (PLINE) SET TO FIRST VALUE ON MOVE PARAMETER.
* 
*         ROUTINES CALLED -  UPDIS   - DISPLAY UPDATE ROUTINE.
*                            CVTINT  - CONVERT DISPLAY CODE TO INTEGER. 
*                            POST    - POST MESSAGE.
*                            FILL    - FILL BUFFER AREA WITH DATA.
* 
*         DATA AREAS USED -  PLINE - IN POINTER FOR NEXT SOURCE DATA. 
* 
*         USES   A - 1, 5, 6, 7.
*                X - 1, 2, 5, 6, 7. 
*                B - 2, 3, 4, 5, 6, 7.
* 
*         MESSAGES   ILLEGAL WHEN MODULE RUNNING. 
* 
  
**        STEP -01- TEST RUN FLAG IF NOT RUNNING THEN STEP 2, ELSE POST 
*                   MESSAGE ( ILLEGAL WHEN MODULE RUNNING) THEN STEP 6. 
* 
 MOVE     DATA   0           ENTRY/EXIT 
          SA1    FRUN        GET RUNNING FLAG 
          ZR     X1,MOV1     IF MODULE NOT RUNNING
          SB2    MSGE7
          RJ     POST        OUTPUT MESSAGE 
          EQ     MOV15
  
**        STEP -02- CONVERT VALUES FOR AAA AND BBB IF CONVERSION ERRORS 
*                   THEN STEP 5, ELSE STEP 3. 
* 
 MOV1     SA5    CRKBUF+1    GET VALUE FOR AAA
          SB7    B0          SET DEFAULT OCTAL FOR CVTINT 
          ZR     X5,MOV4     IF NO VALUE GIVEN
          RJ     CVTINT      CONVERT TO INTEGER 
          NZ     X4,MOV14    IF CVTINT ERROR
          SB6    X6          (B6) = AAA 
          SX5    B6-170B
          NG     X5,MOV2     IF AAA .LT. 170B 
          EQ     MOV7        GO TO POST ERROR MESSAGE 
 MOV2     SA5    CRKBUF+3    GET VALUE FOR BBB
          SA6    MOVA        SAVE NEW LINE NUMBER 
          SB7    B0          SET DEFAULT OCTAL FOR CVTINT 
          RJ     CVTINT      CONVERT TO INTEGER 
          NZ     X4,MOV14    IF CVTINT ERROR
          SB7    X6          (B7) = BBB 
          SA6    MOVB        SAVE VALUE FOR NUMBER OF LINES 
          NZ     B7,MOV2A    IF MOVE NECESSARY
          SB2    MSGE60 
          RJ     POST        POST SYNTAX ERROR MESSAGE
          EQ     MOV15
  
**        STEP -03- TEST FOR UP/DOWN IF FOUND GO TO STEP 4, ELSE CALL 
*                   POST  TO POST MSG SYNTAX ERROR AND THEN STEP 6. 
* 
 MOV2A    SA5    CRKBUF+2    GET UP/DOWN
          SB3    TMOVEL      (B3) = LAST ENTRY ADDRESS
          SB4    B0          (B4) = 0 IF UP, 1 IF -, 2 IF DOWN, 3 IF +
 MOV3     SA1    TMOVE+B4    GET FIRST WORD OF TABLE
          BX1    X1-X5
          ZR     X1,MOV5     IF MATCH FOUND 
          SB4    B4+B1       INCREMENT TABLE INDEX
          LT     B4,B3,MOV3  IF NOT DONE  WITH TABLE OF LEGAL ENTRIES 
 MOV4     SB2    MSGE60 
          RJ     POST        POST SYNTAX ERROR MESSAGE
          EQ     MOV15       GO TO RETURN 
  
**        STEP -04- MOVE SOURCE LINES UP/DOWN THEN STEP 6.
* 
 MOV5     SB5    167B 
          LE     B4,B1,MOV6  IF UP OR - USED
          SB7    B6+B7       (B7) = AAA+BBB 
          LE     B7,B5,MOV8  IF WITHIN SOURCE BUFFER
          EQ     MOV7 
  
 MOV6     SB7    B6-B7       (B7) = AAA-BBB 
          GE     B7,MOV8     IF WITHIN SOURCE BUFFER
 MOV7     SB2    MSGE13 
          RJ     POST        MSG ( LINE VALUE OUT OF RANGE) 
          EQ     MOV15       RETURN 
  
 MOV8     SB5    SOURCE 
          SB5    B5+LSOURCE 
          SX1    B6 
          BX2    X1 
          LX2    2
          IX2    X2+X1
          IX2    X2+X1
          SB6    X2+SOURCE   (B6) = SOURCE OF DATA
          SX1    B7 
          BX2    X1 
          LX2    2
          IX2    X2+X1
          IX2    X2+X1
          SB7    X2+SOURCE   (B7) = DESTINATION OF DATA 
          SA5    BLANKS      GET BLANK WORD 
          BX6    X5          (X6) = BLANK FILLED WORD 
          SB3    B6          (B3) = LAST LINE OF STORE FOR UP OR - MOVE 
          LE     B4,B1,MOV9  IF MOVE UP OR MOVE - 
          SB7    B7-B6
          SB3    SOURCE 
          SB3    B3+LSOURCE 
          SB3    B3-B1
          SB3    B3-B7
          SB5    B6          (B5) = LWA OF DOWN MOVE
          SB6    B3          (B6) = FWA OF SOURCE 
          SB7    SOURCE 
          SB7    B7+LSOURCE 
          SB7    B7-B1
 MOV9     SA1    B6 
          BX7    X1          MOVE SOURCE WORD TO X7 
          SA7    B7          STORE DATA MOVED 
          SA6    B6          STORE BLANK FILLED WORD IN SOURCE
          LE     B4,B1,MOV11 IF MOVE UP OR MOVE - 
          SB6    B6-B1       DECREMENT MOVE ADDRESS SOURCE
 MOV10    SB7    B7-B1       DECREMENT MOVE ADDRESS DESTINATION 
          LE     B5,B6,MOV9  IF LINE AAA NOT REACHED
          LE     B7,B3,MOV13 IF MOVE IS DONE
          SA6    B7          BLANK FILL LINES MOVED PAST END
          EQ     MOV10       LOOP TO CLEAR LINES MOVED PAST END 
  
 MOV11    SB6    B6+B1       INCREMENT SOURCE ADDRESS 
          SB7    B7+B1       INCREMENT DESTINATION ADDRESS
          LT     B6,B5,MOV9  IF BBB LINES NOT DONE
 MOV12    GE     B7,B3,MOV13 IF MOVE IS DONE
          SA6    B7 
          SB7    B7+B1
          EQ     MOV12       LOOP TO FILL WITH BLANKS 
  
 MOV13    SA1    MOVA 
          BX6    X1 
          GT     B4,B1,MOV13A  IF MOVE DOWN OR +
          SA1    MOVB 
          IX6    X6-X1       (X6)=A-B 
 MOV13A   SA6    PLINE
          SB2    LINES
          SB3    LINES
          SB3    B3+LLINES
          SB3    B3-B1
          MX1    0
          RJ     FILL        CLEAR ERROR LINES BUFFER 
          SB3    DSOURCE
          RJ     UPDIS       CHANGE DISPLAY TO SOURCE 
          EQ     MOV15       RETURN 
  
**        STEP -05- POST MESSAGE (CVT ERROR =  VALUE) THEN
*                   STEP 6. 
* 
 MOV14    SA5    A5          GET WORD WITH CVTINT ERROR 
          BX6    X5 
          SA6    MSGE2A      STORE BAD NUMBER INTO MESSAGE
          SB2    MSGE2
          RJ     POST        OUTPUT MESSAGE 
  
**        STEP -06- RETURN. 
* 
 MOV15    EQ     MOVE        RETURN TO CALLER 
  
**        TABLE TMOVE CONTAINS VALUES FOR MOVE UP/DOWN IN DISPLAY CODE. 
* 
 TMOVE    VFD    60/2LUP
          VFD    60/1L- 
          VFD    60/4LDOWN
          VFD    60/1L+ 
 TMOVEL   EQU    *-TMOVE
 MOVA     DATA   0           TEMPORARY STORAGE FOR LINE NUMBER
 MOVB     DATA   0           TEMPORARY STORAGE FOR NUMBER OF LINES
          EJECT 
 PUNCHS   TITLE  PUNCHS - PROCESS PUNCH DIRECTIVE.
**        PUNCHS - PROCESS PUNCH DIRECTIVE. 
* 
*         G. L. GOLDEN. 76/12/08. 
* 
*         COPY SOURCE BUFFER TO PUNCH FILE. 
* 
*         ENTRY CRKBUF(0)= PUNCH   LEFT JUSTIFIED IN DISPLAY CODE.
* 
*         EXIT   SOURCE BUFFER COPY TO PUNCH FILE.
* 
*         ROUTINES CALLED  - SVREG - SAVE REGISTERS. (B,X)
* 
*         DATA AREAS USED  - SOURCE  - SOURCE BUFFER. 
*                            CLINE   - BUFFER AREA FOR ONE LINE.
*                            BLANKS  - TEN BLANKS IN DISPLAY CODE.
* 
*         USES   A - 1, 2, 6, 7.
*                X - 1, 2, 5, 6, 7. 
*                B - 2, 3, 4, 5.
* 
*         MESSAGES   NONE.
* 
  
**        STEP -01- COPY SOURCE BUFFER TO PUNCH FILE SKIPPING BLANK 
*                   LINES THEN STEP 2.
* 
 PUNCHS   DATA   0           ENTRY/EXIT 
          SA1    CRKBUF+1 
          ZR     X1,PUN0     IF PUNCH DIRECTIVE ALONE 
          SB2    MSGE60 
          RJ     POST        POST SYNTAX ERROR MESSAGE
          EQ     PUN5 
  
 PUN0     MX6    0
          SB2    SOURCE 
          SB3    SOURCE 
          SB3    B3+LSOURCE 
          SA2    BLANKS 
 PUN1     SB4    B0 
          SB5    B0 
 PUN2     SA1    B2 
          BX7    X1 
          SA7    CLINE+B4 
          BX5    X2-X1
          ZR     X5,PUN3     IF BLANK WORD
          SB5    B5+B1       INCREMENT NUMBER OF NON BLANKS 
 PUN3     SB2    B2+B1
          GT     B2,B3,PUN4  IF END OF SOURCE BUFFER
          SB4    B4+B1
          SX5    B4-6 
          NZ     X5,PUN2     IF SOURCE LINE NOT DONE
          SA6    CLINE+B4 
          ZR     B5,PUN1     IF ALL BLANKS IN SOURCE LINE 
          SB1    B0 
          RJ     SVREG       SAVE REGISTERS 
  
          IFEQ   NOSBE,1,1
          WRITOUT PUNCH 
  
          IFEQ   NOS,1,1
          WRITEC PUNCH,CLINE
  
          RJ     SVREG       RESTORE REGISTERS
          EQ     PUN1        LOOP THRU SOURCE BUFFER
  
**        STEP -02- WRITE END-OF-RECORD THEN STEP 3.
* 
          IFEQ   NOS,1,1
 PUN4     WRITER PUNCH,R
  
          IFEQ   NOSBE,1,1
 PUN4     WRITER PUNCH,,R 
  
**        STEP -03- RETURN. 
* 
          IFEQ   NOS+NOS4+NOS5,1,1
          SETFS  PUNCH,0
 PUN5     EQ     PUNCHS      RETURN 
          EJECT 
 PURGE    TITLE  PURGE - PROCESS PURGE DIRECTIVE. 
**        PURGE - PROCESS PURGE DIRECTIVE 
* 
*         G. L. GOLDEN. 76/12/08. 
* 
*         PURGE THE MODULE THAT IS SPECIFIED ON DIRECTIVE.
* 
*         ENTRY - CRKBUF(0) = CRACKED DIRECTIVE PLUS PARAMETERS.
* 
*         EXIT   FILE NAME CHANGED TO (PURA) IN THE INDEX TABLE.
* 
*         ROUTINES CALLED  - SEARCH - SEARCH INDEX FOR NAME.
*                            UPDIS  - UPDATE K/L DISPLAY. 
*                            POST   - POST MESSAGE. 
* 
*         DATA AREAS USED  - INDEX  - INDEX BUFFER FOR MODULE NAMES.
*                            PURA   - NEW PURGE FILE NAME.
* 
*         USES   A - 1, 6.
*                X - 1, 2, 6. 
*                B - 2, 3.
* 
*         MESSAGES   MODULE NOT FOUND = MNENNN. 
*                    SYNTAX ERROR.
* 
  
**        STEP -01- CALL SEARCH TO SEARCH INDEX FOR NAME IF FOUND THEN
*                   CHANGE NAME TO PURA THEN STEP 3, ELSE STEP 2. 
* 
 PURGE    DATA   0
          SA1    CRKBUF+1 
          SX2    X1-1R= 
          NZ     X2,PUR1     IF NOT EQUAL SIGN
          SA1    A1+B1
 PUR1     BX6    X1 
          SA6    MSGE9A      STORE MODULE NAME FOR ERROR MESSAGE
          SA2    A1+B1
          ZR     X2,PUR2     IF NO MORE MODULES NAMED 
          SB2    MSGE60 
          RJ     POST        SYNTAX ERROR 
          EQ     PUR5 
  
 PUR2     RJ     SEARCH      GO SEARCH FOR MODULE 
          NZ     X6,PUR3     IF NOT FOUND 
          SA1    PURA        GET PURGE NAME 
          BX6    X1 
          SA6    B5          CLEAR ENTRY
          SX6    B1 
          SA6    FRFILE      SET FLAG SO MALET WILL WRITE INDEX ON DROP 
  
          IFEQ   NOSBE,1,2
          SKIPF  RFILE,377777B,17B,RECALL 
          WRITER RFILE,,RECALL
  
          EQ     PUR4 
  
**        STEP -02- CALL POST TO POST MESSAGE ( MODULE NOT FOUND
*                   = NMENNN) THEN STEP 3.
* 
 PUR3     SB2    MSGE9       NOT FOUND
          RJ     POST 
  
**        STEP -03- CHECK IF K/L DISPLAY FLAG ON IF NOT THEN STEP 4,
*                   ELSE UPDATE DISPLAY WITH MODULES ON RANDOM FILE 
*                   THEN STEP 4.
* 
 PUR4     SB3    DMOD 
          RJ     UPDIS       UPDATE DISPLAY WITH MODULE DISPLAY 
  
**        STEP -04- RETURN. 
* 
 PUR5     EQ     PURGE
  
          EJECT 
 SCRX     TITLE  SCRX - CHANGE SCRATCH FILE NAME. 
***       SCRX - CHANGE SCRATCH FILE NAME.
* 
*         G. L. GOLDEN. 80/03/12. 
* 
*         SCRX - PROCESS SCRATCH=LFN DIRECTIVE. 
* 
*           DIRECTIVE *SCRATCH=LFN*'
* 
* 
*         ENTRY  CRKBUF = DISPLAY CODE DIRECTIVE PLUS PARAMETERS. 
* 
*         EXIT   SCRATCH FILE NAME CHANGED. . 
* 
*         ROUTINES CALLED -  NONE.
* 
*         DATA AREAS USED -  SCRATCH. 
* 
*         USES   A - 1, 2, 6. 
*                X - 1, 2, 5, 6.
*                B - 2. 
* 
  
 SCRX     DATA   0
          SA1    CRKBUF+1 
          SX1    X1-1R= 
          NZ     X1,SCR1     IF EQUAL SIGN NOT PRESENT
          SA2    A1+B1
          SA1    SCRATCH     GET OLD FILE NAME+STATUS BITS
          MX5    -18
          BX1    -X5*X1      CLEAR FILE NAME FROM OLD SCRATCH 
          BX6    -X5*X2 
          NZ     X6,SCR2     IF NAME LONGER THAN 7 CHARACTERS 
          BX6    X2 
          SA6    KLSCR       STORE NEW SCRATCH FILE NAME
          BX6    X1+X2       COMBINE NEW NAME WITH STATUS 
          SA6    A1          STORE NEW FILE NAME
          SB3    DPARAM 
          RJ     UPDIS
          EQ     SCRX        RETURN 
  
 SCR1     SB2    MSGE24      ILLEGAL SEPERATOR
          RJ     POST        POST SYNTAX ERROR
          EQ     SCRX        EXIT 
  
 SCR2     SB2    MSG7 
          RJ     POST        NAME TO LONG 
          EQ     SCRX 
          EJECT 
 STORES   TITLE  STORES - STORE SIX WORDS FROM (B2) TO SOURCE.
**        STORES - STORE SIX WORDS FROM (B2) TO SOURCE. 
* 
*         G. L. GOLDEN. 76/12/08. 
* 
*         ENTRY   (B2)    = ADDRESS OF DATA TO STORE. 
*                 (PLINE) = SOURCE LINE NUMBER TO STORE.
* 
*         EXIT    (PLINE) = NEW LINE NUMBER.
* 
*         ROUTINES CALLED -  UPDIS  - UPDATE DISPLAY. 
*                            POST   - POST MESSAGE. 
*                            BLK    - BLANK FILL WORD.
* 
*         DATA AREAS USED -  SOURCE - SOURCE BUFFER.
*                            PLINE  - LINE NUMBER FOR STORE.
*                            FERR   - OVERFLOW ERROR FLAG.
*                            CRKBUF - CRACKED STATEMENT DATA. 
*                            LINES  - COMPILER ERROR DATA WORDS.
* 
*         USES   A - 1, 2, 6. 
*                X - 1, 2, 3, 6.
*                B - 2, 3, 4. 
* 
*         MESSAGES -  ILLEGAL WHEN MODULE RUNNING.
*                     SOURCE BUFFER FULL. 
* 
  
**        STEP -01- CHECK RUN FLAG IF RUNNING POST ERROR MESSAGE THEN 
*                   STEP   , ELSE STEP 2. 
* 
 STORES   DATA   0
          SA1    FRUN 
          ZR     X1,STO1     IF NOT RUNNING 
          SB2    MSGE7
          RJ     POST        SEND MSG ILLEGAL ENTRY MALET RUNNING 
          EQ     STO4        RETURN 
  
**        STEP -02- CHECK CURRENT LINE.  IF IT IS AN *COMMENT OR
*                   **COMMENT LINE, SET DIRC=1 AND STEP 6.  IF IT IS
*                   A BLANK LINE PRECEEDED BY AN *COMMENT OR **COMMENT
*                   LINE, SET DIRC=2 AND STEP 6.  OTHERWISE, SET
*                   DIRC=0 AND STEP 3.
* 
 STO1     SA2    CRKBUF      GET FIRST WORD OF DATA 
          SX6    B1 
          SX2    X2-2R**
          ZR     X2,STO1A    IF *COMMENT LINE 
          SX2    X2+2R**-1R*
          ZR     X2,STO1A    IF **COMMENT LINE
          MX6    0
          SA1    DIRC 
          SX1    X1-1 
          NZ     X1,STO1A    IF LAST LINE WAS NOT *COMMENT OR **COMMENT 
          SA1    KEY
          RJ     BLK         CONVERT ZEROS TO BLANKS
          SA1    BLANKS 
          BX1    X6-X1
          MX6    0
          NZ     X1,STO1A    IF CURRENT LINE IS NOT A BLANK LINE
          SX6    B1+B1
 STO1A    SA6    DIRC        SET SOURCE FLAG
          NZ     X6,STO4     IF COMMENT OR BLANK LINE 
  
**        STEP -03- GET LINE NUMBER IF LESS THAN 120 DECIMAL THEN 
*                   STEP 4, ELSE CHECK IF  PREVIOUS ERROR IF YES THEN 
*                   STEP 6, ELSE POST ERROR MESSAGE THEN STEP 6.
* 
          SA2    PLINE       GET CURRENT LINE NUMBER
          SX3    X2-120      MAXIMUM LINE NUMBER + 1
          NG     X3,STO2     IF LINE LT MAXIMUM 
          SA1    FERR 
          NZ     X1,STO4     IF HAD PREVIOUS ERROR DONT POST MSG
          SB2    MSGE18 
          RJ     POST        POST SOURCE BUFFER OVERFLOW MSG
          SX6    B1 
          SA6    FERR        SET FLAG SOURCE BUFFER OVERFLOW
          EQ     STO4        GO TO RETURN 
  
**        STEP -04- INITIALIZE REGISTERS TO STORE SIX WORDS OF SOURCE 
*                   INTO THE SOURCE BUFFER THEN STEP 5. 
* 
 STO2     BX6    X2          X6 = LINE NUMBER 
          LX6    2           X6 = LINE NUMBER * 4 
          IX6    X6+X2       X6 = LINE NUMBER * 5 
          IX6    X6+X2       X6 = LINE NUMBER * 6 
          SB4    X6+SOURCE   B4 = INDEX INTO SOURCE BUFFER
          SB3    6
          SB3    B4+B3       ADVANCE SOURCE BY SIX WORDS FOR ONE LINE 
          SA2    PLINE       GET LINE NUMBER
          SX6    X2+B1       ADVANCE LINE NUMBER
          SA6    PLINE       STORE NEW LINE NUMBER
  
**        STEP -05- MOVE WORDS FROM (B2) TO SOURCE BUFFER AND CALL BLK
*                   TO BLANK FILL THE DATA THEN UPDATE THE DISPLAY IF 
*                   DATA CAME FROM INPUT THEN STEP 6. 
* 
 STO3     SA1    B2          GET SOURCE WORD
          RJ     BLK         BLANK FILL SOURCE WORD 
          SA6    B4          STORE BLANK FILLED WORD
          SB2    B2+B1       ADVANCE SOURCE READ WORD 
          SB4    B4+B1
          LT     B4,B3,STO3  IF SIX WORDS NOT MOVED 
          SA1    FINP 
          ZR     X1,STO4     IF SOURCE IS FROM INPUT
          MX6    0
          SA6    X2+LINES    CLEAR LINES BUFFER FOR ERROR STATEMENT 
          SB3    DSOURCE
          RJ     UPDIS       UPDATE DISPLAY PAGE WITH NEW LINE
  
**        STEP -06- RETURN TO CALLER. 
* 
 STO4     EQ     STORES      RETURN 
          EJECT 
 LWA      VFD    60/7LMALET.B     OVERLAY CHECK WORD
*         DUMMY ENTRY 
 MALET11  BSS    0
          ENTRY  MALET11
          END    MALET11
