*DECK,INIT40
          IDENT  INIT40 
          TITLE  INIT40 - CALL EDITOR 
          COMMENT  INIT40 - CALL EDITOR 
          SST 
          LIST   F
          SPACE  4
*         INIT40 - CALL EDITOR
          SPACE  4
          ENTRY  INIT40 
 INIT40   DATA   0
          SA4    =XOPTION 
          LX4    59-1RB 
          PL     X4,EDIT     IF NO BINARIES WANTED
  
*         STORE NAME FROM CONTROL CARD (OR DEFAULT) INTO FET/FIT
  
          SA1    =XLGONAM 
 #RM      IFEQ   CP#RM,0
          SX0    3
          BX6    X1+X0       SET MODE AND COMPLETE BITS 
          SA6    F.LGO
 #RM      ELSE
          STORE  FI.LGO,LFN=X1
 #RM      ENDIF 
          SETFIL FILE=F.LGO,MODE=INIT,FWA=LGOBUF
          OPEN   F.LGO,WRITENR,R
  
*         IF FIRST CARD OF PROGRAM WAS AN OVERLAY DIRECTIVE WE WRITE IT 
*         TO LGO
  
          SA1    =XOVCARD 
          ZR     X1,EDIT     IF FIRST CARD NOT OVERLAY
          SA1    OVLAY
          RJ     PTOBJ       WRITE OUT OVERLAY DIRECTIVE
          WRITER F.LGO,R
          MX7    0
          SA7    =XOVCARD    ZERO OUT FOR NEXT TIME 
 EDIT     BSS    0
  
          REWIND =XF.CFL
          READ   =XF.CFL     BEGIN FILLING CFLBUF 
  
          SA5    =XOPTION    STANDARD OPTIONS 
          LX5    59-1RO      CHECK O-OPTION 
          PL     X5,NOEJ     NO OBJECT LISTING LISTING NO EJECT 
          SX7    8           SET HEADING TYPE 
          SA7    =XWHCHED 
          RJ     =XEJECTP    EJECT FOR OBJECT LISTING 
 NOEJ     BSS    0
          RJ     =XEDITOR 
          SA4    =XOPTION 
          LX4    59-1RB 
          PL     X4,NOB 
          WRITER F.LGO,R
          CLOSE  =XF.LGO,NR,R 
 NOB      BSS    0
          CLOSE  =XF.CFL,UNLOAD,R 
          EQ     INIT40 
          TITLE  PRTABS - PUT OUT PRFX AND LDSET TABLES 
**        PRTABS - PUT OUT PRFX AND LDSET TABLES
* 
  
 PRTABS   ENTRY. ** 
          SB1    1
          SA3    =XSYSID2 
          BX6    X3 
          SA2    A3+B1
          BX7    X2 
          SA6    LANG 
          SA7    A6+B1
          SA1    A1 
          SA4    X1+B1
          BX6    X4 
          SA6    NAME 
          SA5    =XOPLST
          BX7    X5 
          SA7    OPTNS
          SA4    A5+B1
          BX6    X4 
          SA6    A7+B1
          SA5    A4+B1
          BX7    X5 
          SA7    A6+B1
          DATE   DATEM
          CLOCK  TIMEM
          MX0    54 
          SA1    DATEM
          SA2    A1+B1
          LX1    6
          LX2    6
          BX6    X0*X1
          BX7    X0*X2
          BX3    -X0*X1 
          BX4    -X0*X2 
          IX6    X6+X4
          IX7    X7+X3
          SA6    A1 
          SA7    A2 
          SA1    PLIST       APLIST FOR PRFX TABLE
          RJ     PTOBJ       PUT OUT PRFX TABLE 
          SPACE  4
*         PUT OUT LDSET TABLE IF NECESSARY
  
          SA5    =XOPTION 
          LX5    59-1RS 
          PL     X5,PRTABS   NO TABLE NEED BE GENERATED 
          SA1    =XLIBTAB 
          ZR     X1,DEFAULT  USE DEFAULT TABLE IF JUMP TAKEN
          SX2    X1+B1
          SX7    X2+B1
          SA7    LCNT 
          SB2    X1 
          LX2    36 
          LX1    36 
          MX0    6
          LX0    42 
* SET UP NEW WC FIELDS IN 7000 TABLE
          SA3    LDSETB 
          SA4    A3+B1
          BX7    -X0*X3 
          IX6    X7+X2
          BX5    -X0*X4 
          IX7    X5+X1
          SA6    A3 
          SA7    A4 
*    MOVE IN NEW ENTRIES
 LDSETD   BSS    0
          SB2    B2-B1
          SA1    A1+B1
          BX7    X1 
          SA7    A7+B1
          LT     B0,B2,LDSETD 
 DEFAULT  BSS    0
          SA1    P70TB
          RJ     PTOBJ       PUT OUT LDSET TABLE
          EQ     PRTABS 
          TITLE  PTOBJ - PUT TO LGO 
**        PTOBJ - PUT TO OBJECT CODE FILE (LGO) 
* 
*         THIS IS THE INTERFACE ROUTINE THROUGH WHICH A SYMPL PROGRAM 
*         WRITES FROM A WORKING STORAGE BUFFER TO LGO.  ITS NAME IS 
*         PTOBJ AND NOT PTLGO FOR PURELY HISTORICAL REASONS 
*         THE SYMPL CALLING SEQUENCE TO THIS ROUTINE IS-
*                XREF PTOBJ;
*                PTOBJ (BUF,NWDS);
*                WHERE
*                BUF = WORKING STORAGE BUFFER 
*                NWDS = NUMBER OF WORDS IN BUF
*         HENCE THE REGISTER SETUP ON ENTRY IS- 
*                A1 = POINTER TO APLIST 
*                X1 = FWA OF BUF
* 
*         WE DON"T USE THE PUTSQ MACRO TO DO THE WRITE SINCE WE CAN"T 
*         PUT A WORD COUNT ON LGO OURSELVES 
* 
  
 PTOBJ    ENTRY. ** 
          SA2    A1+1 
          SA2    X2          NUMBER OF WORDS
          WRITEW F.LGO,X1,X2
          EQ     PTOBJ
          TITLE  LTCFL - LOCATE CODE FILE (CFL) 
**        LTCFL - LOCATE CODE FILE (CFL)
* 
*         THIS IS THE INTERFACE ROUTINE THROUGH WHICH A SYMPL PROGRAM 
*         "LOCATES" THE CODE FILE.  IT OPERATES THE SAME AS THE GET 
*         ROUTINE (GTCFL) EXCEPT THET THE READ IS NOT DONE INTO THE 
*         USERS WORKING STORAGE BUFFER.  INSTEAD, THE INFORMATION IS
*         READ INTO A TEMPORATY BUFFER AND THE ADDRESS OF THIS BUFFER IS
*         PASSED BACK TO THE CALLER 
*         THE SYMPL CALLING SEQUENCE TO THIS ROUTINE IS-
*                XREF LTCFL;
*                LTCFL (P<BUF>,NWDS,EOF)
*                WHERE
*                BUF = BASED ARRAY WHOSE POINTER VARIABLE WILL BE SET 
*                      TO THE FWA OF THE TEMP BUFFER USED 
*                NWDS = NUMBER OF WORDS READ INTO THE TEMP BUFFER 
*                EOF = END OF DATA EXIT 
*         HENCE THE REGISTER SETUP ON ENTRY IS- 
*                A1 = FWA OF APLIST 
*                X1 = ADDRESS OF POINTER VARIABLE FOR BUF 
* 
*         ROUTINE USES GETSQ TO DO ACTUAL READ
* 
  
 LTCFL    ENTRY. ** 
          SB1    1
          SA2    LTCFL
          SX7    G.LBUF 
          BX6    X2 
          SA7    X1 
          SA6    =XGETSQB    PLUG RETURN INSTRUCTION
          SA7    A1 
          SA0    =XF.CFL
          EQ     =XGETSQA 
          SPACE  4
*         G.LBUF - TEMPORARY WORKING STORAGE BUFFER USED FOR LTCFL
  
 G.LBUF   BSS    514
          SPACE  4
*         I/O BUFFER FOR LGO. 
*         FOR CRM I/O THIS IS THE FILE HOLDING BUFFER 
*         FOR NON-CRM I/O THIS IS THE CIO BUFFER
  
 LGOBUF   BSS    LC.LGO 
          SPACE  4
*         DEFINE FET/FIT FOR LGO
  
          FET    LGO,LGOBUF,BINARY
 #RM      IFNE   CP#RM,0,1
 FI.LGO   FILE   LFN="LGO",RT=W,PD=OUTPUT,OF=N,MRL=(LC.LGO*10),CF=N 
          EJECT 
*         APLIST FOR OVERLAY DIRECTIVE
  
 OVLAY    VFD    60/=XOVCARD
          VFD    60/=8
  
*         PRFX TABLE SKELETON 
  
 PRTAB    DATA   77000016000000000000B
 NAME     BSS    1
 DATEM    BSS    1
 TIMEM    BSS    1
 SYSTEM   DATA   10H"OS.ID" 
 LANG     BSS    1
          BSS    1
          DATA   10H
 OPTNS    BSS    1
          BSSZ   1
          BSSZ   1
          DATA   10H
          DATA   10H
          DATA   10H
          DATA   10H
          DATA   10H2 
  
*         APLIST FOR PRFX TABLE 
  
 PLIST    VFD    60/PRTAB 
          VFD    60/CNT 
  
 CNT      DATA   15          NO OF WORDS IN PRFX TABLE
  
*         APLIST FOR LDSET TABLE
  
 P70TB    CON    LDSETB 
          CON    LCNT 
  
*         LDSET TABLE SKELETON
  
 #OS      IFEQ   SYSNAME,2
 LDSETB   VFD    3/7,27/300B,30/0 
          VFD    12/10B,12/2,36/0 
          DATA   L$SYMIO$ 
          DATA   L*FORTRAN* 
          BSSZ   5
 LCNT     DATA   4           NUMBER OF WORDS IN LDSET TABLE 
 #OS      ELSE
 LDSETB   VFD    30/7000000300B,30/0B 
          VFD    12/10B,12/2,36/0 
          DATA   L*SYMLIB*
          DATA   L*FORTRAN* 
          BSSZ   5
 LCNT     DATA   4
 #OS      ENDIF 
          END 
