*DECK MALET30 
          IDENT  MALET30
          LCC    OVERLAY(3,0,C000000) 
*CALL,VERS
          COMMENT OVERLAY FOR MALET  "VERS" 
          TITLE  MALET INITIALIZATION OVERLAY 
*CALL ASSYTAG 
*CALL MALMAC
* 
*         OVERLAY SUBROUTINE ENTRY TABLE
* 
*                - MUST LOAD AT FRONT OF OVERLAY -
* 
          USE    /ENTRY30/
 ENTRIES  SET    1
*CALL MALNK30 
          USE    *
* 
*         SUBROUTINES IN MAIN OVERLAY 
* 
          EXT    CHKSUM 
          EXT    CRACK
          EXT    CVTINT 
          EXT    PRINT
          EXT    BANNER 
          EXT    WRSFILE
          EXT    FILL 
          EXT    MSG
* 
*         DATA AREAS IN MALET00 
* 
          EXT    BLANKS 
          EXT    BINARY 
          EXT    CVLCH
          EXT    CYCLE
          EXT    FEND 
          EXT    FDROP
          EXT    FKL
          EXT    FLOG 
          EXT    FLST 
          EXT    FTERM
          EXT    FULL 
          EXT    FCMSE
          EXT    FXREF
          EXT    ZZZXREF
          EXT    INDEX
          EXT    INPUT
          EXT    IRB
          EXT    KEYS 
          EXT    KLSW 
          EXT    OUTPUT 
          EXT    TERMOUT
          EXT    PREFIX 
          EXT    MODULE 
          EXT    LINDEX 
          EXT    LMODULE
          EXT    LSOURCE
          EXT    MSGE1
          EXT    MSGE1A 
          EXT    MSGE2
          EXT    MSGE2A 
          EXT    MSGE3
          EXT    MSGE11 
          EXT    PCRK 
          EXT    PUNCH
          EXT    RFILE
          EXT    SCRATCH
          EXT    SOURCE 
          EXT    UPPBUF 
          EXT    VERSION
          EXT    VER
*CALL MALCD1
 SETA     VFD    60/3L ON 
 DISPLAY  VFD    12/KEYS,48/8RLDISPLAY
          EJECT 
 BINCPY   TITLE  BINCPY - COPY BINARY FILE TO RANDOM FILE.
**        BINCPY - COPY BINARY FILE TO RANDOM FILE. 
* 
*         G. L. GOLDEN. 76/12/08. 
* 
*         BINCPY- COPIES THE BINARY FILE TO RANDOM FILE WHILE 
*         CHECKING THE CHECKSUM FOR ERRORS. 
* 
*         ENTRY  NONE.
* 
*         EXIT   BINARY WRITTEN ON RANDOM FILE. 
* 
*         ROUTINES CALLED -  WRSFILE - WRITE RANDOM FILE. 
* 
*         DATA AREAS USED -  FLOG - FLAG TO WRSFILE TO LOG MSGS.
* 
*         USES   A - 6. 
*                X - 6. 
*                B - NONE.
* 
*         MESSAGES   NONE.
* 
  
**        STEP -01- CLEAR FLOG FLAG SO WRSFILE DOES NOT LOG MESSAGES, 
*                   OPEN BINARY FILE, REWIND BINARY FILE THEN STEP 2. 
* 
 BINCPY   DATA   0
          SX6    B1 
          SA6    FLOG        FLAG NO LOG OF MESSAGES FOR WRSFILE
          OPEN   BINARY,READ,RECALL 
          REWIND BINARY,R 
  
**        STEP -02- READ BINARY FILE TO MODULE BUFFER IF EOF/EOI THEN 
*                   STEP 3, ELSE CALL WRSFILE TO WRITE RANDOM FILE
*                   THEN STEP 2.
* 
          IFEQ   NOS,1,2
 BIN1     READ   BINARY,R 
          READW  BINARY,MODULE,LMODULE
  
          IFEQ   NOSBE,1,1
 BIN1     READIN BINARY 
  
          NG     X1,BIN2     IF EOF,EOI PRESENT 
          SA1    MODULE 
          MX2    6
          BX1    X1*X2             GET FIRST CHARACTER OF NAME
          BX1    X1-X2
          NZ     X1,BIN1B          IF NOT 77
          SB2    A1                MOVE MODULE UP TO PREFIX 
          SB3    PREFIX 
          SB4    LMODULE
          SB5    B0 
 BIN1A    SA1    B2+B5
          BX6    X1 
          SA6    B3+B5
          SB5    B5+B1
          NE     B4,B5,BIN1A       LOOP TILL DONE 
 BIN1B    SB2    B1 
          RJ     CHKSUM 
          NZ     B2,BIN1     IF CHECKSUM ERROR IN BINARY FILE 
          SX6    B1 
          SA6    FEND        FLAG NO ERROR AS DEFAULT 
          SA1    MODULE 
          LX1    59-12
          PL     X1,BIN1C    IF NOT COMPILER ERRORS 
          MX6    0
          SA6    FEND        FLAG COMPILER ERROR TO WRSFILE 
 BIN1C    RJ     WRSFILE     WRITE MODULE ONTO RFILE
          EQ     BIN1 
  
**        STEP -03- CLEAR FLAG FLOG SO WRSFILE DOES LOG MESSAGES THEN 
*                   RETURN. 
* 
 BIN2     MX6    0
          SA6    FLOG        CLEAR LOG FLAG FOR WRSFILE 
          EQ     BINCPY      RETURN 
          IFEQ   NOS,1,2
 OPL      XTEXT  COMCMAC
 OPL      XTEXT  COMCCVL
          EJECT 
 INITIAL  TITLE  INITIAL - INITIALIZATION.
**        INITIAL - INITIALIZATION. 
* 
*         G. L. GOLDEN. 76/12/08. 
* 
*         INITIAL HAS FOUR MAIN FUNCTIONS TO PERFORM; 
* 
*           1. INITIALIZE BUFFERS.
*           2. CRACK PARAMETERS.
*           3. REQUEST K/L DISPLAY. 
*           4. OPEN FILES.
* 
*         ENTRY  RA+70B CONTAINS THE CONTROL CARD CALL IN DISPLAY CODE. 
* 
*         EXIT  FTERM - SET TO NON-ZERO IF TERMINAL MODE. 
*               FDROP - SET TO NON-ZERO IF PARAMETER ERRORS.
*               (B1) = 1. 
* 
*         ROUTINES CALLED - 
* 
*           MSG    - SEND MESSAGE TO DAYFILE AND B DISPLAY. 
*           CRACK  - USED TO SEPARATE PARAMETERS. 
*           FILL   - FILL BUFFER. 
*           POST   - POST ERROR MESSAGE.
*           CVTINT - CONVERT DISPLAY CODE TO INTEGER. 
* 
*         DATA AREAS USED - 
* 
*           TFET   - LEGAL FET NAME TABLE WITH ADDRESS OF FET NAME. 
*           MSGE   - ERROR MESSAGES FOR EXECUTIVE.
*           TPAR   - LEGAL PARAMETERS WITH ADDRESS OF FLAG. 
* 
*         USES   A - 1, 2, 3, 6, 7. 
*                X - 1, 2, 3, 4, 5, 6, 7. 
*                B - 1, 2, 3. 
* 
*         MESSAGES    PARAMETER ERROR .. PARAMETER .
*                     CVT ERROR         VALUE    .
*                     REQUEST K/L DISPLAY .. MALET. 
*                     MALET ABORTED.
* 
  
**        STEP -01- SET CONSTANTS USED BY MALET, RFL UP TO CORE NEEDED, 
*                   CLEAR SOURCE, THEN STEP 2.
* 
 INITIAL  DATA   0           ENTRY/EXIT 
          SB1    1           B1 CONTAINS A CONSTANT OF ONE
  
          IFEQ   NOS+NOS4+NOS5,2,2
          EXT    MAL1A
          EREXIT MAL1A       ADDRESS TO JUMP TO IN CASE OF ERROR
  
          SA1    BLANKS      GET WORD OF BLANKS 
          SB2    SOURCE 
          SB3    B2+LSOURCE 
          RJ     FILL        FILL SOURCE BUFFER WITH BLANKS 
          SB2    UPPBUF 
          SB3    UPPBUF+245 
          RJ     FILL        INITIALIZE PPU DISPLAY BUFFER
          SA2    OUTPUT 
          BX6    X2 
          SA6    TERMOUT           SET TERMINAL OUTPUT FILE NAME=OUTPUT 
          SA2    66B
          MX5    -12
          AX2    24 
          BX2    -X5*X2            GET FOB ORIGIN FIELD 
          SX2    X2-3 
          NZ     X2,INT0           IF NOT TERMINAL ORIGIN 
          SX6    B1 
          SA6    FTERM             SET TERMINAL FLAG
  
**        STEP -02- CRACK PARAMETERS. 
* 
 INT0     NO
          SX6    2B          PARAMETER ADDRESS
          SA6    PCRK 
  
**        STEP -03- INITIALIZE CONSTANTS USED BY INITIAL. 
* 
 INT1     SB3    B0          (B3) = PARAMETER NUMBER
          MX5    42          (X5) = 42 BIT MASK UPPER 
          SA2    PCRK 
          SA2    X2 
          ZR     X2,INT12    IF NO PARAMETER PRESENT
  
**        STEP -04- CHECK  FET  PARAMETERS FOR MATCH IF MATCH THEN STEP 
*                   5, ELSE STEP 06.
* 
 INT2     SA1    TFET+B3
          ZR     X1,INT4     IF END OF TABLE
          BX1    X5*X1
          BX4    X5*X2       MASK PARAMETER 
          BX4    X1-X4
          ZR     X4,INT3     IF MATCH 
          SB3    B3+B1       ADVANCE POINTER INTO LEGAL FILE NAMES
          EQ     INT2 
  
**        STEP -05- STORE NEW FILE NAME IF PARAMETERS SEPARATED WITH AN 
*                   EQUAL SIGN THEN STEP 8. 
* 
 INT3     BX3    -X5*X2 
          SX1    X3-1R= 
          ZR     X1,INT3A    IF = SIGN NOS/BE 
          SX1    X3-1RB 
          NZ     X1,INT11    IF = SIGN NOS
 INT3A    SA2    A2+1        ADVANCE PARAMETER
          SA1    TFET+B3
          SA1    X1 
          MX5    -18
          BX1    -X5*X1      CLEAR OLD FILE NAME
          BX2    X5*X2       MASK NEW FILE
          BX6    X2+X1
          SA6    A1          STORE NEW FILE NAME
          EQ     INT11
  
**        STEP -06- TEST  FOR  PARAMETER MATCH IF PRESENT STORE VALUE 
*                   THEN STEP 09, ELSE STEP 7.
* 
 INT4     SB3    B0 
 INT5     SA1    TPAR+B3
          ZR     X1,INT9     IF CANT FIND MATCH GO TO STEP 7
          BX1    X5*X1
          BX3    X5*X2       MASK PARAMETER 
          BX4    X1-X3
          ZR     X4,INT6     IF MATCH 
          SB3    B3+B1       ADVANCE POINTER INTO TABLE 
          EQ     INT5 
  
 INT6     SX6    A1 
          SA6    INTE        SAVE A1 AWAY 
          SX6    2RKL 
          LX6    59-11
          BX6    X6-X3
          NZ     X6,INT60    IF KL DO NOT CHECK TERMINAL MODE 
          SA1    FTERM
          ZR     X1,INT60    IF NOT TERMINAL MODE CONTINUE
          SA1    INTD 
          BX6    X1 
          EQ     INT9A       POST PARAM ERROR 
  
 INT60    SA1    INTE 
          SA1    X1          RESTORE A1 REGISTER
          BX3    -X5*X2      RESTORE X3 
          SX1    X3-1R= 
          ZR     X1,INT6A    IF = SIGN NOS/BE 
          SX1    X3-1RB      IF = SIGN NOS
          NZ     X1,INT7     IF NOT = SIGN
 INT6A    SA2    A2+1        ADVANCE PARAMETER
          BX5    X5*X2       MOVE PARAMETER TO X5 FOR CONVERSION
          SB2    B1 
          SB7    B1          SET B7 FOR DECIMAL 
          RJ     CVTINT 
          ZR     X4,INT8     IF NO CONVERT ERRORS 
          SA2    A2 
          BX6    X2 
          SA6    MSGE2A      STORE BAD INFORMATION
          SB2    MSGE2
          EQ     INT10
  
 INT7     SX6    B1 
 INT8     SA1    A1 
          SA6    X1          SET WORD USED
          EQ     INT11
  
**        STEP -07- CALL  MSG  TO  POST ERROR MESSAGE THEN STEP 8.
* 
 INT9     BX6    X2 
          ZR     X2,INT12    IF END OF PARAMETERS 
 INT9A    SA6    MSGE1A      STORE PARAMETER IN ERROR 
          SB2    MSGE1
 INT10    SX6    A2          MOVE ADDRESS OF PARAMETER FOR STORE
          SA6    PCRK        STORE ADDRESS OF PARAMETER 
          RJ     MSG         SEND PARAMETER ERROR MESSAGE 
          SA2    PCRK 
          SA2    X2          RESTORE A2 PARAMETER ADDRESS 
          SA3    FDROP
          SX6    X3+B1       ADD ONE TO NUMBER OF PARAMETER ERRORS
          SA6    FDROP       SET FDROP
  
**        STEP -08- GET  NEXT  PARAMETER  CHECK IF DONE, THEN STEP 3 IF 
*                   NOT DONE YET, ELSE STEP 9.
* 
 INT11    SA2    A2+B1       BUMP PARAMETER ADDRESS 
          ZR     X2,INT12    IF ZERO PARAMETER GO TO STEP 9 
          SX6    A2 
          SA6    PCRK        STORE PARAMETER ADDRESS
          EQ     INT1 
  
**        STEP -09- IF FDROP NON ZERO CALL ABORT, ELSE STEP 10. 
* 
 INT12    SA1    FDROP
          ZR     X1,INT13    IF FDROP NOT SET 
          SB2    MSGE11      POST ABORT MESSAGE IN DAYFILE
          RJ     MSG
          RJ     PRINT
  
          IFEQ   NOS,1,1
          WRITER OUTPUT,R    FLUSH OUTPUT FILE
  
          IFEQ   NOSBE,1,1
          WRITER OUTPUT,,R   FLUSH OUTPUT FILE
  
          ABORT 
  
**        STEP -10- OPEN INPUT/OUTPUT FILES INITIALIZE INPUT REQUEST
*                   K/L DISPLAY THEN RETURN.
* 
 INT13    SB2    KEYS 
          SB3    KEYS+5 
          MX1    0
          RJ     FILL        CLEAR K/L DISPLAY INPUT BUFFER 
          OPEN   OUTPUT,WRITENR,RECALL
  
          IFEQ   NOS,1
          SKIPEI RFILE,R
          BKSP   RFILE,R
          BKSP   RFILE,R
          READ   RFILE,R
          READW  RFILE,INDEX,LINDEX 
          ENDIF 
          IFEQ   NOS+NOS4+NOS5,1
          SETFS  SCRATCH,0
          SETFS  RFILE,0
          SETFS  OUTPUT,0 
          SETFS  BINARY,0 
          ENDIF 
          IFEQ   NOS+NOS4+NOS5,2
          SETID  PUNCH,0
          SETID  SCRATCH,0
          SETID  RFILE,0
          SETID  OUTPUT,0 
          SETID  BINARY,0 
          ENDIF 
          IFEQ   NOS,1
          SA1    FKL
          ZR     X1,INT13A   IF KL SWITCH OFF DO NOT REQUEST DISPLAY
          CONSOLE PARAMX     REQUEST K/L DISPLAY
 INT13A   NO
          ENDIF 
  
          IFEQ   NOSBE,1
 INT14    SA1    DISPLAY
          BX6    X1 
          SA1    FKL
          ZR     X1,INT14A   IF KL SWITCH OFF DO NOT REQ DISPLAY
          SA6    70B         STORE L DISPLAY PASSWORD 
 INT14A   NO
          OPEN   RFILE,READ,RECALL
          ENDIF 
  
**        GETMC  DATA WORD. 
* 
*          BIT(S)          DESCRIPTION
* 
*         SW(59-48)   = SOFTWARE CHARACTERISTICS. 
*         BIT 48      = 63 CHARACTER SET SYSTEM.
*         ECS(47-36)  = ECS SIZE/1000B. 
*         NPP(35-24)  = NUMBER OF PPUS. 
*         HW(23-12)   = HARDWARE CHARACTERISTICS. 
*         BIT 20      = CYBER 180.
*         BITS(19-18) = CYBER 176.
*                       0 = NOT 176.  1 = TYPE A. 
*                       2 = TYPE B.   3 = TYPE C. 
*         BIT 17      = PPUS AT 2X SPEED. 
*         BIT 16      = CYBER 17X MAINFRAME.
*         BIT 15      = CMU PRESENT.
*         BIT 14      = CEJ/MEJ PRESENT.
*         BIT 13      = INSTRUCTION STACK PRESENT.
*         BIT 12      = CPU 1 PRESENT.
*         MEM(11-1)   = CENTRAL MEMORY SIZE/200B. 
*         C(0)        = COMPLETE BIT. 
* 
          GETMC  INTA        GET MACHINE CHARACTERISTICS
          SA1    INTA 
          LX1    59-20
          PL     X1,INT14B   IF CYBER NOT 180 
          SX7    B1 
          EQ     INT15
 INT14B   SA1    INTA 
          MX5    -6 
          LX1    59-23       POSITION NUMBER OF PPUS TO LOWER 6 BITS
          BX6    -X5*X1 
          SX7    B1 
          SX6    X6-13B 
          PL     X6,INT15    IF GT 10D PPUS 
          MX7    0
 INT15    SA7    CVLCH       STORE 1 IF GT 13B CHANNELS 
  
          SA1    FKL
          ZR     X1,INT16    IF KL DISPLAY OFF
          MESSAGE MSGE3,1,R                                              MAL024G
          SA1    SETA        (X1) = BON0 0000 0000 0000 0000
          SA2    KLSW+18
          MX5    -42
          BX2    -X5*X2      CLEAR OFF FROM DISPLAY WORD
          BX6    X2+X1       .OR. ON WITH DISPLAY 
          SA6    A2          STORE UPDATED DISPLAY
          SA1    IRB
          SX6    SW.KL
          BX6    X6+X1
          SA6    A1          SET KL SWITCH IN PPU INPUT REGISTER
  
 INT16    SA1    FLST 
          ZR     X1,INT18    IF NO OPTIONS SELECTED 
          MX5    -6 
          BX1    X5*X1       CLEAR LAST CHAR IF PRESENT TO ENSURE END 
          MX5    6
 INT16A   BX3    X5*X1
          LX1    6
          LX3    6
          ZR     X3,INT18    IF END OF OPTIONS
          SX2    X3-1RI 
          NZ     X2,INT17    IF NOT LO=I
          SX6    B1 
          SA6    FULL        TURN ON FULL LIST FLAG 
          EQ     INT16A 
  
 INT17    SX2    X3-1RF 
          NZ     X2,INT17A   IF NOT LO=F
          SX6    B1 
          SA6    FULL        TURN ON FULL LIST FLAG 
          EQ     INT16A 
  
 INT17A   SX2    X3-1RS 
          ZR     X2,INT16A   IF LO=S OPTION 
          SX2    X3-1RL 
          ZR     X2,INT16A   IF LO=L
          SX6    B1 
          SA6    FDROP
          SA1    FLST 
          BX6    X1 
          SA6    MSGE2A 
          SB2    MSGE2
          RJ     MSG
          EQ     INT12
  
 INT18    OPEN   INPUT,READNR,RECALL                                     MAL024G
          IFEQ   NOS,1
          RJ     BANNER      PRINT BANNER ON OUTPUT FILES 
          ENDIF 
                                                                         MAL042G
          IFEQ   NOS,1                                                   MAL042G
          READ   INPUT,R                                                 MAL024G
          ENDIF                                                          MAL042G
                                                                         MAL042G
          SA1    FTERM                                                   MAL024G
          ZR     X1,INT20    IF TERMINAL FLAG NOT ON                     MAL024G
          SA1    IRB
          SX6    SW.TM
          BX6    X6+X1
          SA6    A1          STORE UPDATED IR WITH TERMINAL MODE SET
          IFEQ   NOSBE,1
          SYSTEM CON,R,INTB       CONNECT INPUT 
          SYSTEM CON,R,INTC        CONNECT TERMINAL OUTPUT
          RJ     BANNER      PRINT BANNER ON OUTPUT FILES 
          ENDIF 
          EQ     INT20
  
**        IF GLOBAL CROSSREFERENCE MAP IS SELECTED, OPEN ZZZXREF
* 
  
 INT20    SA1    FXREF
          ZR     X1,INT21    IF NOT SELECTED
          OPEN   ZZZXREF,WRITE,RECALL 
  
 INT21    EQ     INITIAL     RETURN INITIALIZED 
  
**        TABLE TFET CONTAINS ADDRESS OF FETS AND VALUE ON CALL CARD. 
* 
*           BITS    DESCRIPTION 
* 
*           59-18   VALUE TO BE CHECKED FOR.
*           18-00   ADDRESS OF NAME TO BE REPLACED. 
* 
 TFET     CON    BINARY+1LB 
          CON    BINARY+6LBINARY
          CON    SCRATCH+7LSCRATCH
          CON    SCRATCH+1LS
          CON    RFILE+1LR
          CON    RFILE+6LRANDOM 
          CON    INPUT+1LI
          CON    INPUT+5LINPUT
          CON    OUTPUT+1LO 
          CON    OUTPUT+6LOUTPUT
          CON    OUTPUT+4LLIST
          CON    OUTPUT+1LL 
          CON    PUNCH+5LPUNCH
          CON    PUNCH+1LP
          CON    FLST+2LLO
          CON    0
  
**        TABLE TPAR CONTAINS ADDRESS TO STORE VALUE IF DISPLAY CODE
*         VALUE ON CALL CARD. 
* 
 TPAR     CON    FTERM+1LT
          CON    FTERM+4LTERM 
          CON    FKL+2LKL 
          CON    FCMSE+4LCMSE 
          CON    FXREF+3LMAP
          CON    0
  
 PARAMX   VFD    6/0,18/KEYS,18/CYCLE+7,18/CYCLE+7
  
  
 INTA     DATA   0           MACHINE CHARACTERISTICS DATA STORED HERE 
 INTB     VFD    60/5LINPUT 
 INTC     VFD    60/6LOUTPUT
 INTD     VFD    60/10LKL ILLEGAL 
 INTE     DATA   0           A1 REGISTER CONTENTS SAVED HERE
  
*         DUMMY ENTRY 
 MALET30  BSS    0
          ENTRY  MALET30
          END    MALET30
