*DECK     BASOPTS 
         IDENT     BASOPTS
          TITLE  BASOPTS (SPECIAL OPTIONS)
*CALL COPYRITE
          EJECT                                                         000350
          IPARAMS                                                       000360
          COMMENT BASIC 3 - SPECIAL OPTIONS PROCESSOR.
*CALL LIPARAM 
          EJECT                                                         000370
         ENTRY     BASOPTS
* 
          EXT    RJERROR
          EXT    BASCOMP
          EXT    BASIC01
**
*         PROGRAM BASOPTS (1,0) 
*                MAIN CONTROL OF (0,0) OVERLAY-BASIC$ 
*                EXECUTED BEFORE COMPILATION, CALLED
*                ONLY IF SPECIAL OPTIONS REQUESTED. 
          USE    OVER 
*  BLOCK FOR INITIALIZATION CODE OVERWRITTEN BY GEN CODE
 INST     BSS    0
          USE    *
          EJECT 
          EJECT 
* 
*        PRINTBYTE ENTRIES IN BASCOMP, CHANGED BY BASOPTS 
* 
          EXT       PRTBT10 
          EXT       PRTBT11 
          EXT       PRTBT12 
          EXT       PRTBT13 
          EXT       PRTBT14 
          EXT       PRTBT15 
          EXT       PRTBT16 
          EXT       PRTBT17 
          EXT       PRTBT18 
          EXT    PRTB10A
          EXT    PRTB10B
          EXT    PRTB10C
          EXT    PRTBT19
          EXT       PRTBT20 
          EXT       PRTBT30 
          EXT    PRTBT3B
          EXT       PRTBT40 
          EXT    PRTBT41
          EXT    PRTBT43
          EXT    PRTBT42
          EXT       PRTBT50 
          EXT       PRTBT60 
          EXT       PRTBT61 
          EXT       PRTBT70 
          EXT       XPOSTPR 
          EXT       XWRITLN 
          EXT       XPAGERR 
          EXT    XPGERR 
          EXT       XREM,CC 
          EXT       PDWORD,DEFPD
          EXT       XPRT1,XPRT2 
          EXT    LISTOPT,ERRFET 
          EXT    MEMUP
          EXT    BASOMOV,BASOTAB,ASCII
          EXT    DBFLG             CID ENABLED FLAG - DEBUG MODE
          EXT    BASDEF.           USER DEF RJ FOR LOCAL
*                                  PARAM SYMBOL TABLE GEN.
          EXT    BASEXIT                                                 BAS0014
          EXT    BASSYS=
 SYS=     EQU    BASSYS=
          EXT    BASCIO=
 CIO=     EQU    BASCIO=
          EXT    BASRCL=
 RCL=     EQU    BASRCL=
          EXT    BASMSG=
 MSG=     EQU    BASMSG=
          EXT    BASWNB=
 WNB=     EQU    BASWNB=
          EJECT 
* 
*         REFERENCES TO I/O-ROUTINES
* 
          EXT       BASOCHK 
          EXT       BASOCLS 
         IFC       EQ,,"OS.NAME",KRONOS,                                000880
          EXT    BASIC$ 
         ELSE                                                           000900
         EXT       BASIC                                                000910
         ENDIF                                                          000920
          SYSCOM             DEFINE INTERFACE SYMBOLS.
          B1=1
*CALL,SYSEQU
 DISZERO  EQU       33B 
 DISATRK  EQU       47B 
 DISBLNK  EQU       55B 
 CODE     EQU    0                 ORDINAL OF CODE TABLE
 DATA     EQU    1                 ORDINAL OF DATA TABLE
 CONS     EQU    2                 ORDINAL OF DATA TABLE
 LABS     EQU    3                 ORDINAL OF LABELS TABLE
 FUNS     EQU    4                 ORDINAL OF FUNCTION TABLE
 FLLS     EQU    5                 ORDINAL OF FORWARD REFERENCE TABLE 
 LINK     EQU    6                 ORDINAL OF LINK BYTE TABLE 
 EXTS     EQU    7                 CALL NAMES TABLE 
 TEND     EQU    8                 END OF TABLES
          EXT    F.CODE 
          EXT    L.CODE 
          EXT    F.IDS             FWA OF NAMES TABLE 
          EXT    L.IDS             LENGTH OF NAMES TABLE
          EXT    ADW
          EXT    ATS
 SUBR     SPACE  4,8
***       SUBR - SUBROUTINE ENTRY/EXIT DEFINITION.
* 
* 
* TAG     SUBR               DEFINE *EXIT.* AND *TAG_X*.
* TAG     SUBR   0           SAME.
* TAG     SUBR   =           SAME, AND DECLARE *TAG* AS ENTRY POINT.
* TAG     SUBR   -           DEFINE *EXIT.* BUT NOT *TAG_X*.
* TAG     SUBR   LETTER      DEFINE *TAG_LETTER* BUT NOT *EXIT.*. 
* 
*         ENTRY  *TAG* = SUBROUTINE ENTRY NAME. 
* 
*         EXIT   CODE GENERATED --
*                TAG    EQ    *+1S17    ALWAYS. 
*                       ENTRY TAG       IF = SPECIFIED. 
*                EXIT.  SET   *         IF BLANK, 0, =, OR - SPECIFIED. 
*                       NOREF EXIT.     IF BLANK, 0, =, OR - SPECIFIED. 
*                TAG_X  EQU   *         IF BLANK, 0, OR = SPECIFIED.
*                       NOREF TAG_X     IF BLANK, 0, OR = SPECIFIED.
*                TAG_LETTER  EQU  *     IF LETTER SPECIFIED.
* 
*         USES   NONE.
* 
*         CALLS  NONE.
  
  
          PURGMAC SUBR
  
          MACRO  SUBR,T,A 
T  EQ *+1S17D 
'?CPU#EN MICRO 1,,=T= 
  IFC NE, A  ,3 
  IFC LT, A 0 ,2
"'?CPU#EN"A EQU * 
  SKIP 7
  IFC NE, A - ,4
  IFC EQ, A = ,1
  ENTRY T 
"'?CPU#EN"X EQU * 
  NOREF "'?CPU#EN"X 
EXIT. SET * 
  NOREF EXIT. 
  ENDM
          XTEXT  COMCMTM
 FTAB     EQU    F.CODE 
 LTAB     EQU    L.CODE 
 SWITCH   MACRO  A,B
          SA1    A
          SA2    B
          BX6    X1 
          LX7    X2 
          SA6    A2 
          SA7    A1 
          ENDM
          EJECT 
* 
*         PROCEDURE POSTPROCESSOR 
* 
 POSTPRC  BSSZ      1 
 PRTBTY0  NO                            THIS WORD MAY BE OVERWRITTEN
          BSS       0 
          SA1    DBOPTION 
          LX1    2           BINARY REGARDLESS BIT
          NG     X1,POSTP10 
          SA1       ERRORFL 
          ZR        X1,POSTP10
          IFNE   MESSAG,0 
          SA1    INSTPTR           FIND TOP OF RELOC INFO                BAS0014
          SA2    INSTSRT                                                 BAS0014
          IX2    X1-X2             AMOUNT OF CODE = AMT OF REL           BAS0014
          SA1    RELSTRT                                                 BAS0014
          IX6    X1+X2             TOP OF REL FOR CM MSG                 BAS0014
          SA6    RELTOP 
          ENDIF 
          SA2       SLOPTION
          SA1       OLOPTION
          BX1       X1+X2 
          SB5       X1
          ZR        B5,POSTP01  NO LIST FILE
          SA1       PDOPTION
          ZR     X1,POSTPX1 
          SA1    B5+FETSTAT 
          LX1    59-18       INTERACTIVE BIT
          NG     X1,POSTPX1  IT IS A TERMINAL 
          SA1    DEFPD       OUTPUT DEFAULT 
          IFC    EQ,,"OS.NAME",SCOPE ,
          SA3    ASCII
          ZR     X3,POSTPXX 
          SX3    1
          BX1    X3+X1
          LX1    54 
 POSTPXX  BSS    0
          ENDIF 
          SA2    B5+FETIN      PDWORD 
          BX6    X1 
          SA6    X2 
          SX6    X2+1 
          SA6    A2 
 POSTPX1  BSS    0
          RJ        BASOCLS             CLOSE L-CHANNEL 
 POSTP01  BSS       0 
          RJ        BASOCLS 
          EQ        POSTPRC 
 POSTP10  SA1    OLOPTION          OBJECT LIST FLAG 
         ZR       X1,POSTP30            NO ASSEMBLY 
          SA2       LISTOPT 
          ZR        X2,POSTP30
          RJ     ENDASM            TERMINATE ASSEMBLY LISTING 
          SA1       OLOPTION
         SB5       X1 
          RJ        LISTCLR 
 POSTP30  SA1    SLOPTION          SOURCE LIST FLAG 
          ZR     X1,POSTP31        NO SOURCE
          SB5    X1 
          RJ     LISTCLR           CLEAR LISTING
 POSTP31  MX0    42 
          SA1       LOPTION 
          ZR        X1,POSTP20
          BX1       X0*X1 
          SA3       KOPTION 
          BX3       X3*X0 
          BX1       X1-X3 
          ZR        X1,PDCHK
          SA2       SKIPTOP 
          BX6       X2
          SA6       CC
 PDCHK    BSS       0 
          SA2       PDOPTION
          ZR        X2,LCLS     NO PDOPTION 
          SA2       B5+FETSTAT
          LX2       59-18    INTERACTIVE BIT
          NG        X2,LCLS 
          SA2       GOOPTION
          NG        X2,PDOUT    NOGO
          NZ        X1,PDOUT LFILE .NE. KFILE 
          SA1       XOPTION 
          NZ        X1,PDOUT
          SA1       DEFPD 
          BX6       X1
          SA6       PDWORD
          SA1    DBOPTION 
          LX1    2           BINARY REGARDLESS BIT
          NG     X1,LCLS
          SA1       ERRORFL 
          ZR        X1,LCLS     NO ERRORS 
 PDOUT    BSS       0 
          SA1       DEFPD       OUTPUT DEFAULT
          IFC    EQ,,"OS.NAME",SCOPE ,
          SA3    ASCII
          ZR     X3,PDOUT1
          SX3    1
          BX1    X3+X1
          LX1    54 
 PDOUT1   BSS    0
          ENDIF 
          SA2    B5+FETIN     PDWORD
          BX6       X1
          SA6       X2
          SX6       X2+1
          SA6       A2
 LCLS     BSS       0 
          RJ        BASOCLS 
 POSTP20  SA1    XOPTION
          ZR     X1,POSTPRC  BR, NO BIN OPTION
          SA1    ERRORFL     CHECK INPUT FILE 
          NG     X1,POSTPRC  BR, INPUT FILE EMPTY 
          RJ     WRB
          EQ     POSTPRC
* 
*         END POSTPROCESSOR 
* 
* 
*         PROCEDURE  LISTCLR
* 
 LISTCLR  PS
          SA1       BLOPTION
          NZ        X1,LSTCLR1  BURSTABLE LISTING    REQUIRED 
          SA1       B5+LINPAGE
          SX2       X1-5
          NG        X2,LSTCLR1  .LT. 4 LINES REMAINING    IN PAGE 
          SB3       4 
 LSTCLR2  BSS       0 
          SA1       SGSKIP      SINGLE LINE 
          BX6       X1
          SA6       LINE
          RJ        OUTASSM 
          SB3       B3-1
          NZ        B3,LSTCLR2  OUTPUT FOUR BLANK LINES 
          SA1       SGSKIP      CHANGE CC TO 55000000000000000000B
          BX6       X1
          SA6       CC
          EQ        LISTCLR 
* 
 LSTCLR1  BSS       0 
          SX6       B0
          SA6       B5+LINPAGE  LINPAGE = 0 
          SA1       SKIPTOP 
          BX6       X1          CC = 34000000000000000000B
          SA6       CC
          EQ        LISTCLR 
* 
          TITLE     SOURCE LISTING OPTION 
* 
*         PROCEDURE WRITELINE 
* 
 WRITLIN  BSSZ      1 
          SX6       B6
          SX7       B7
          SA6       WRITLB6             SAVE B6 AND B7 FOR INPUT-NEXT 
          SA7       WRITLB7 
          SX7       B2
          SA7       WRITLB2             SAVE B1 AND B2
          SX6       B3
          SX7       B4
          SA6       WRITLB3 
          SA7       WRITLB4             SAVE B3 AND B4
          SA1       SLOPTION
          SB5       X1
          RJ        PAGECTR             GENERATE PAGE-HEADER
          SA1       BLANKXX 
          IFC    EQ,,"OS.NAME",SCOPE ,
          SA2    ASCII
          ZR     X2,WRITL00 
          SA1    BLANKAS
 WRITL00  BSS    0
          ENDIF 
          BX6       X1
          SA1       B5+FETIN
 WRITL04  BSS       0 
          SA2       B5+FETLIMT
          SA3       IOPTION 
          SB6       X3                  B6 = IN-FET 
          SA3       B6+FETOUT 
          SA4       B6+FETLIMT
          SA5       WRITLB7 
          SB5    X1                OUTPUT-IN
          SB2       X2                  B2 = OUTPUT-LIMIT 
          SB3       X3                  B3 = INPUT-OUT
          SB4       X4                  B4 = INPUT-LIMIT
          SB7       X5                  B7 = LAST WORD OF LINE
          SA6    B5                FIRST WORD 
 WRITL01  SB5    B5+B1
          EQ     B5,B2,WRITL02     OUT-LIMIT
          SA1       B3
          EQ        B3,B7,WRITL03       END OF LOOP 
          BX6       X1
          SB3    B3+B1
          SA6    B5 
          NE        B3,B4,WRITL01       LOOP
          SA2       B6+FETFRST          IN-LIMIT
          SB3       X2
          EQ        WRITL01 
 WRITL02  SA3    SLOPTION          FET ADDRESS
          SA3    X3+FETFRST 
          SB5    X3-1 
          EQ        WRITL01 
 WRITL03  BSS       0                   END OF LOOP 
          MX1       48       CHECK IF EOL WAS STORED
          BX6       -X1*X6
          ZR   X6,WRITL10          SKIP IF EOL EXISTS 
          SX6    B0                STORE ZERO WORD
          SA6    B5 
          SB5    B5+B1             INCREMENT IN 
          NE     B5,B2,WRITL10
          SA1    SLOPTION          FET ADDRESS
          SA1    X1+FETFRST 
          SB5    X1 
 WRITL10  BSS    0
          SX6    B5 
          SA6       SAVEPTR     NEW IN-POINTER
          SA1       LISTOPT 
          ZR        X1,WRITL11
          SA5    SLOPTION 
          SA6    X5+FETIN          UPDATE POINTER 
          SB5    X5 
          RJ        BASOCHK 
 WRITL11  BSS       0 
          SA2       WRITLB2 
          SA3       WRITLB3 
          SA4       WRITLB4 
          SB2       X2
          SB3       X3
          SB4       X4
          SA1       WRITLB6 
          SA2       WRITLB7 
          SB6       X1
          SB7       X2
          SA1       IOPTION 
          SB5       X1                  RESET INPUT-OPTION
          EQ        WRITLIN             EXIT
* 
* 
 WRITLB2  BSSZ      1 
 WRITLB3  BSSZ      1 
 WRITLB4  BSSZ      1 
 WRITLB5  BSSZ   1
 WRITLB6  BSSZ      1 
 WRITLB7  BSSZ      1 
 SAVEPTR  BSSZ      1 
 SPTR     BSSZ   1
* 
*         END WRITELINE 
* 
* 
*         PAGE-CONTROL FOR ERROR-MESSAGES 
* 
 PAGEERR  BSSZ      1 
          SA1       EOPTION 
          SA1       X1+LINPAGE
          SX6       X1-1
          SA6       A1
          EQ        PAGEERR 
* 
*         END PAGE-CONTROL
* 
* 
*         PROCEDURE PRTER 
* 
 PRTER    BSSZ      1 
          SA1       B5+LINPAGE          LINE COUNTER
          SX6       X1-1
          SA6       A1
          SA1    SLOPTION          SOURCE LIST (SL) FILE
          SX1    X1 
          SX6    B5 
          IX6    X6-X1
          NZ     X6,PRTER0         BR IF FILE IS NOT = SL FILE
          SA1    SAVEPTR           USE SAVED SL FILE IN-POINTER 
          BX6       X1
          SA6       B5+FETIN            UPDATE POINTER
 PRTER0   BSS    0
          RJ        BASOCHK 
 PRTER1   SA1    IOPTION
          SB5       X1                  RESET INPUT-OPTION
          EQ        PRTER               EXIT
* 
* 
*         END  PRTER
* 
* 
          EJECT 
* 
*   PROCEDURE TO OUTPUT ONE LINE OF ASSEMBLY OUTPUT 
* 
 OUTASSM  JP     0                 ENTRY/EXIT 
          SA1    LISTOPT
          ZR     X1,OUTASSM        DONT PRINT IF LIST,NONE
          BX6    X0 
          SX7    B3 
          SA6    OUTASX0
          SA7    OUTASB3
          SX6    B4                SAVE REGISTERS USED BY TASK 10/ASS 
          SX7    B5 
          SA6    OUTASB4
          SA7    OUTASB5
          RJ        PAGECTR 
          IFC    EQ,,"OS.NAME",SCOPE ,
          SA1    ASCII
          ZR     X1,OUTA1 
          SA5    LINE 
          RJ     BASOMOV
          MX4    59 
          RJ   BASOTAB
          EQ     OUTA2
 OUTA1    BSS    0
          ENDIF 
          SA1    B5+FETIN 
          SA2    B5+FETLIMT 
          SA3    B5+FETFRST 
          SB3    X1                B3 = POINTER 
          SB2    X2                B2 = LIMIT 
          MX0       48
          SB4    0                 B4 = COUNT 
 OUTAMVA  SA1    LINE+B4
          SB4    B4+1 
          BX7    X1                MOVE TO BUFFER 
          SA7    B3 
          SB3    B3+B1
 OUTALA   EQ     B3,B2,OUTAWRP
          BX1       -X0*X7      EOL\
          NZ        X1,OUTAMVA  NO
          SX7    B3 
          SA7    B5+FETIN 
 OUTA2    BSS    0
          RJ     BASOCHK
          RJ        CLEAR 
          SA1    OUTASX0
          SA2    OUTASB3
          SA3    OUTASB4
          SA4    OUTASB5
          BX0    X1 
          SB3    X2                RESTORE REGISTERS
          SB4    X3 
          SB5    X4 
          JP     OUTASSM
* 
 OUTASX0  BSS    1
 OUTASB3  BSS    1
 OUTASB4  BSS    1
 OUTASB5  BSS    1
* 
 OUTAWRP  SB3    X3                SET NEW POINTER
          EQ     OUTALA 
          EJECT 
* 
*         PROCEDURE PAGECONTROL 
* 
*         INPUT CHANNEL-NUMBER IN B5
*         SKIP - CONTROL IS RETURNED IN X5
* 
 PAGECTR  DATA        0                 ENTRY 
          SA1       LINPAGE+B5
          SX0    X1 
          SX7    X1-1 
          PL     X7,PAGEC01        IF NOT END OF PAGE 
          SA1       PAGECNT+B5
          SX7    X1+B1
          SA2       LISTOPT 
          ZR     X2,PAGEC05 
 PP1      BSS       0 
          SA7         A1               PAGECNT+1
          BX1    X7 
          RJ          CONVERT 
          LX6       24
          SA6         PAGENBR           LAST WORD OF LINE 
          IFC    EQ,,"OS.NAME",SCOPE ,
          SA1    ASCII
          ZR     X1,PAGEC00 
          SA5    BUFFPGE
          RJ     BASOMOV
          MX4    59 
          RJ   BASOTAB
          SA5    PAGEEND
          RJ   BASOMOV
          MX4    59 
          RJ   BASOTAB
          SA1    SPTR 
          SA2    B5+FETIN 
          SX6    B5 
          SA6    OPTSB5      SAVE B5. 
          SB5    X2 
          BX7    X1 
          SA7    A2 
          EQ     PAGEC06
 PAGEC00  BSS    0
          ENDIF 
          SX6    B5 
          SA6    OPTSB5      SAVE B5. 
          SA1    B5+FETIN 
          SA2    B5+FETLIMT 
          SA3    B5+FETFRST 
          SB5    X1                POINTER
          SB2    X2                B2 = LIMIT 
          SB3    HEADLGT
          SB4    0                 B4 = COUNT 
 PAGEC02  SA1    BUFFPGE+B4 
          SB4    B4+B1
          BX7    X1                MOVE TO BUFFER 
          SA7    B5 
          SB5    B5+B1
 PAGEC03  EQ     B5,B2,PAGEC04
          LT     B4,B3,PAGEC02
 PAGEC06  BSS    0
          SX7    B5 
          SA1    OPTSB5 
          SB5    X1          RESTORE B5.
          SA1       PSOPTION
          SX0       X1-3
          SA7       SPTR
          SA1       LISTOPT 
          ZR        X1,PAGEC01
          SA7    B5+FETIN 
          RJ     BASOCHK
* 
 PAGEC01  EQU       *+1-$/59
          SX6       X0
          SA1       LISTOPT 
          ZR        X1,PAGEC05
 +        SX6         X0-1
 PAGEC05  BSS       0 
          SA6       LINPAGE+B5
          JP          PAGECTR 
* 
 PAGEC04  SB5    X3                NEW POINTER
          EQ     PAGEC03
* 
OPTSB5    BSS    1           SAVE AREA FOR B5.
          EJECT 
* 
*         PROCEDURE CONVERT 
* 
*         OCTAL NUMBER IN X7
*         DISPLAY CODE NUMBER IN X6 
          BASE   D
 CDD1     DX6    X1*X2       COMPUTE QUOTIENT 
          FX1    X1*X2
          UX7    X1          CHECK QUOTIENT 
          LX4    -6          SHIFT ASSEMBLY 
          SB2    B2+B4
          FX6    X6*X3       EXTRACT REMAINDER DIGIT
          SX6    X6+B3       CONVERT DIGIT
          IX4    X6+X4
          NZ     X7,CDD1     LOOP TO ZERO QUOTIENT
          LX4    -6          LEFT JUSTIFY ASSEMBLY
          LX6    X4,B2       RIGHT JUSTIFY ASSEMBLY 
  
 CONVERT  PS                 ENTRY/EXIT 
          SA2    CDDA        =.1P48+1 
          SA3    A2+B1       =10.P
          PX1    X1 
          SB2    B0          CLEAR JUSTIFY COUNT
          SA4    A3+B1       =1H
          SB3    1R0-1R      (B3) = CONVERSION CONSTANT 
          SB4    6           (B4) = SHIFT INCREMENT 
          EQ     CDD1 
  
 CDDA     CON    0.1P48+1 
          CON    10.P 
          CON    1H 
          BASE   *
* 
*   PROCEDURE TO SET LINE IMAGE TO ALL BLANKS 
*      THE FIRST WORD CONTAINING PAGE CONTROL CHARACTER 
*      IS LEFT UNDISTURBED
*      REGISTER USE.. X1,X7,B1,B2 
* 
 CLEAR    JP     0
          SA1       BLANKXX 
          SB2    LINLGTA-1
          BX7    X1 
          SA7    LINE 
 +        SB2    B2-B1             COUNT
          SA7    A7+B1             NEXT WORD
          GT     B2,B1,*           IF NOT DONE
          JP     CLEAR
* 
* 
* 
*   THE ASSEMBLY OUTPUT IS GENERATED
*   IN BUFFER LINE
* 
 LINE     BSS    1                 PAGE CONTROL CHARACTER 
 INSTADR  BSS    1                 RELOCATABLE STORAGE ADDRESS
 OCTPIC1  BSS    1                 1. WORD OF OCTAL PICTURE 
 OCTPIC2  BSS    1                 2. WORD OF OCTAL PICTURE 
 BCDADR   BSS    1                 LOCATION FIELD 
 OPPOS    BSS    1                 OPERATION CODE 
 ADRPOS1  BSS    1                 1. WORD OF ADDRESS EXPRESSION
 ADRPOS2  BSS    1                 2. WORD OF ADDRESS EXPRESSION
 ADRPOS3  BSS    1                 3. WORD OF ADDRESS EXPRESSION
 AENDLIN  DATA   0
 LINEEND  EQU    AENDLIN
 LINLGTA  EQU    LINEEND-LINE+1 
* 
          EJECT 
          EJECT 
* 
*         VARIABLES AND CONSTANTS FOR I/O 
* 
* 
*         VARIABLES FOR I/O-ROUTINES
* 
 LINPAGE  EQU    FETLOFC
 PAGECNT  EQU       FETINDX 
* 
*         PAGE - HEADING
* 
 BUFFPGE  DATA      H*1         * 
 PALABEL  DATA      H*          * 
          DATA      H*          * 
 BLANKXX  DATA      H*          * 
          DATA      H*          * 
          DATA      H*          * 
          DATA      H*          * 
          DATA      H*BASIC 3.5 * 
          DATA      10H"MODLEVEL" 
 PADATE   DATA      H*          *         * YY/MM/DD.*
 PATIME   DATA      H*          *         * HH.MM.SS.*
          DATA      H*      PAGE* 
 PAGENBR  DATA      H* XXXXX    *         *XXXXX RIGHT JUSTIFIED ZERO SUPPRESSED
          DATA      0 
 PAGEEND  DATA      1L0                   TWO BLANK LINES 
 HEADLGT  EQU         PAGEEND-BUFFPGE+1 
* 
 SGSKIP   DATA   1L 
 SKIPTOP  DATA   1L1
 DC3BLNK  DATA   555555B            DISPLAY CODE FOR THREE BLANKS 
 BLANKAS  VFD    60/00400040004000400040B        ASCII BLANKS 
 IDENT    BSS    1
* 
*         SOME EQU-S
* 
 DCBLANK  EQU    DISBLNK           DISPLAY CODE BLANK 
 DCZERO   EQU    DISZERO           DISPLAY CODE 0 
 TRUE     EQU    1
 FALSE    EQU    0
 SEGADDR  EQU       ABSSTRT 
* 
          USE    OVER 
* 
* 
*         FET FOR COMPILE LISTING 
* 
 LOPTFET  SETCHAN   (VFD 42/6LOUTPUT,18/1),WRITFUN,0,0,17,0,0 
**        MOVE EXTERNAL NAMES TO EXTERNAL NAME TABLE
**        NAMES NEED TO BE HERE TO HAVE COMMON CODE FOR CALL STATEMENT
  
 MOVEXT   ALLOC  EXTS,LFUNS        ALLOCATE SPACE FOR NAMES 
          SA1    FTAB+EXTS         START OF NAME TABLE
          SA2    BSFUNTBL 
          SB6    LFUNS             NUMBER OF NAMES
          SB2    X1-BSFUNTBL
          PL     B2,BACKW          IF A MOVE DOWN, GO DO IT BOTTOM UP 
          SA6    X1-1              PRESET STORE ADDRESS(TOP)
          SB2    B1                SET INCREMENT FOR TOP DOWN TRANSFER
          EQ     MOVEIT 
 BACKW    SB2    -B1               SET INCREMENT FOR BOTTOM UP TRANSFER 
          SA2    BSFUNTBL+LFUNS-1 
          SA6    X1+LFUNS          PRESET STORE ADDRESS(BOTTOM) 
 MOVEIT   BX6    X2                MOVE NAME TO TABLE 
          SA2    A2+B2             NEXT NAME
          SB6    B6-B1             COUNT NAMES TRANSFERRED
          SA6    A6+B2
          GT     B6,B0,MOVEIT      IF NOT DONE
  
**        INITIALIZE FOR BINARY.
  
 OPTS3    SA1    IDENTIF
          BX6    X1                NAME 
          SA6    PIDNAM 
          SA6    NTRNAM 
          SA6    XFRNAM 
          SA6    IDNAM
          SA1    XOPTION           FILE NAME
          SX7    15B               WRITE CODE 
          BX6    X7+X1
          SA6    BINFIL 
          ZR     X1,OPTS4 
          SA1    XOPTION           CHECK FOR CID MODE 
          MX6    42 
          BX6    X1*X6
          SA4    BIFILE            COMPILE-TO-CORE FILE NAME
          IX4    X4-X6             ZZZZZDC
          NZ     X4,OPTS3A         BR, NOT CID COMPILE-TO-CORE MODE 
          SA1    BINFILAD          FETCH FET ADDRESS
          OPEN   X1,ALTER,R        REWIND COMPILE-TO-CORE FILE
          SA1   NOOVERF      NO-OP REM EXIT PROC
          BX6   X1
          SA6   XREM         REM STMTS GENERATE CODE IN CID MODE
 OPTS3A   BSS    0
          WRITEW BINFIL,PREFIX,LPREFIX
OPTS4     BSS    0
          SA1    OLOPTION 
          ZR     X1,BASIC01        NO ASSEMBLY LISTING
          SWITCH =XFULLWRD,XSWWRD 
          SWITCH =XSTORINS,XSWSV
          SWITCH =XLABREF,XSWLAB
          SWITCH =XDEFLABX,XLABDEF
          RJ     CLEAR             CLEAR ASEMBLY AREA 
          RJ     ASSEMBL           START ASSEMBLY LISTING 
          JP     BASIC01
* 
 BINFILAD VFD    60/BINFIL
 WRITLNX  RJ        WRITLIN 
 PRTERX   RJ        PRTER 
 NOOVERF  NO
 PAGERRX  RJ        PAGEERR 
 POSTPRX  RJ        POSTPRC 
 BASDEF   RJ     OPTDEF            USER DEF SYMBOL GEN. 
 STOWD    SA4    INSTPTR           INSERT ADDRESS 
          BX0    X1                SAVE X1
          LX3    30 
 XLABEL   JP     LABEL
 XFULWRD  JP     FULLWORD 
 OVERLAB  JP     =XBDEFLCN
 PRNTBT1  VFD       12/100B,18/PRNTBYT,12/0101B,18/0
 PRNTBTX  VFD       12/100B,18/PRNTBYT,12/5006B,18/0
 PRNTBT2  VFD       12/100B,18/PRNTBYT,12/4002B,18/1
 PRNTBT3  VFD    12/100B,18/PRNTBYT,12/4201B,18/2 
 PRNTBT4  VFD       12/100B,18/PRNTBYT,12/4207B,18/3
 PRNTBT5  VFD       12/100B,18/PRNTBYT,12/4203B,18/4
 PRNTBT6  VFD       12/100B,18/PRNTBYT,12/5001B,18/5
 PRNTBT7  VFD       12/100B,18/PRNTBYT,12/5200B,18/6
 PRNTBTY  RJ        LABELST 
 PRNTBT9  VFD       12/100B,18/PRNTBYT,12/5001B,18/2
**        PREFIX TABLE
  
 PREFIX   VFD    12/PFXTAB,12/14,36/0 
 IDNAM    DATA   0
          DATA   0
          DATA   0
          DATA   10H"OS.ID" 
          DATA   10HBASIC  3.5
          DATA   10H"MODLEVEL"
          DUP    8,1
          DATA   10H
  
**        LDSET TABLE 
  
          VFD    12/LDSTAB,12/2,36/0
          VFD    12/10B,12/1,36/0 
          VFD    60/0LBASLIB
  
**        PIDL TABLE. 
  
          VFD    12/PDLTAB,12/1,36/0
 PIDNAM   DATA   0
 LPREFIX  EQU    *-PREFIX 
* 
*         HERE STARTS THE INSTRUCTION STACK 
* 
 INST0    BSS    0
* 
* 
*         NOTE....
* 
*         ALL THE FOLLOWING WILL BE OVERWRITEN
*         IF ONLY SOURCE LIST OPTION IS SPECIFIED 
* 
* 
          TITLE     BINARY DECK OPTION
          EJECT 
          XTEXT  COMCWTW
          XTEXT  COMCWTO
          XTEXT  COMCSST
 WFL      SPACE  4
          TITLE  BINARY FILE GENERATION 
**        WFL - FILL OUT FORWARD REFERENCES TO LABELS.
*         USES ALL REGISTERS. 
*         CALLS WTO=, WTW=. 
  
  
 WFL      PS
          SA1    LTAB+FLLS         SIZE OF TABLE
          SA2    FTAB+FLLS         BASE OF TABLE
          SA0    X1 
          SA5    X2                FIRST WORD 
          ZR     X1,WFL            IF  NO FORWARD REFERENCES
 WFL1     SA4    A5+B1             TEXT WORD
          SA1    TXTSKL            TEXT TABLE SKELETON
          SX3    X5 
          IX1    X1+X3             PACK ADDRESS 
          AX5    18                POSITION RELOCATION
          SX0    B0 
 WFL2     MX7    44 
          BX6    -X7*X5            PICK UP LABS RELATIVE ADDRESS
          AX5    16                PICK OFF WORD PARCEL NUMBER
          ZR     X6,WFL4           SKIP IF NOT PROG. RELOCATABLE REF. 
          MX3    58 
          BX2    -X3*X5 
          SA2    X2+POSTAB         SHIFT AND RELOCATION 
          SA3    FTAB+LABS         BASE OF LABEL TABLE
          IX6    X6+X3             ADDRESS OF LABEL TABLE ENTRY 
          SA3    X6                X3=WORD 1 OF LABEL TABLE ENTRY 
          SB6    X2                SHIFT FOR ADDR FIELD OF INSTRUCTION
          MX6    54 
          BX2    X6*X2             CLEAR SHIFT FROM SHIFT+RELOCATION
          BX0    X0+X2             MERGE IN RELOCATION
          LX7    X3,B1
          PL     X7,WFL3           BR IF NOT AN IMAGE REFERENCE.
*  CHECK FOR TYPE OF IMAGE SYMBOL REFERENCE - FORMAT OR STATEMENT 
          MX6    54 
          SB3    -B6               CALCULATE SHIFT TO 
          SB3    B3+36               RIGHT JUSTIFY INSTRUCTION OPCODE.
          LX7    X4,B3             RIGHT JUSTIFY OPCODE FOR CHECK.
          BX6    -X6*X7            EXTRACT INSTRUCTION OPCODE 
          SX6    X6-50B            CK FOR -SET- TYPE INSTRUCTION OPCODE.
          NG     X6,WFL3           BR IF REFERS TO IMAGE -STATEMENT-
          LX3    24                POSITION FOR IMAGE -FORMAT- ADDRESS. 
          BX0    -X2*X0            SET NO RELOCATION IF IMAGE -FORMAT-
 WFL3     BX2    X3                SYMBOL ADDR FROM LABEL TABLE WORD
          SX6    X2                ADDRESS OF SYMBOL
          LX6    X6,B6             POSITION ADDRESS 
          BX4    X4+X6             PACK LABEL ADDRESS 
 WFL4     BSS    0
          AX5    2                 POSITION FOR NEXT PASS 
          NZ     X5,WFL2           IF NOT DONE WITH REFERENCES
          BX6    X1                TEXT HEADER WORD 
          LX7    X0                RELOCATION 
          SA5    A4+B1             NEXT WORD IN TABLE 
          SA6    WORDS             SAVE HEADER
          SA7    A6+B1             RELOCATION 
          BX6    X4                TEXT VALUE 
          SA6    A7+B1
          WRITEW BINFIL,WORDS,3    WRITE TABLE
          SX1    A0-3 
          SA0    X1+B1
          PL     X1,WFL1           IF TABLE NOT FINISHED
          EQ     WFL               EXIT 
 TXTSKL   VFD    12/TXTTAB,12/2,18/1,18/0 
 POSTAB   VFD    4/8,56/30
          VFD    4/4,56/15
          VFD    4/2,56/0 
 WLK      SPACE  4
**        WLK - WRITE LINK TABLES.
*         EDIT LINK MANAGED TABLE INTO LOADER LNK TABLE FORMAT AND
*         WRITE OUT LOADER TABLE. 
*         USES ALL REGISTERS. 
*         CALLS  SST, WTO=, WTW=. 
  
  
 WLK4     SA4    FTAB+CONS   (X4) = FWA OF TABLE
          SA5    LTAB+CONS   (X5) = LENGTH OF TABLE 
          SX3    4095        X3 = MAX LOADER TABLE LENGTH 
          SB2    B0          B2 = CONTINUATION FLAG 
          IX2    X5-X3       CHECK CURRENT TABLE SIZE 
          SB3    X5 
          SB6    X4 
          NG     X2,WLK4X    BR, WRITE TABLE TO B FILE
* 
*         SET UP LOOP TO WRITE LOADER TABLE TO B FILE 
*         IN 4095 WORD CHUNKS 
* 
          SB2    X5          (B2) = ORIGINAL TABLE LENGTH 
          SB4    X4          (B4) = ORIGINAL FWA OF TABLE 
          SX5    B0 
          SB5    B0 
* 
 WLK4A    SA2    B4          (X2) = TABLE ENTRY 
          SB4    B4+B1
          NG     X2,WLK4B    BR, NOT AN EXT NAME ENTRY
          SB7    X5          (B7) = CURRENT TABLE LENGTH
          SB5    B4-B1       (B5) = ADDR OF CURRENT EXT NAME ENTRY
 WLK4B    SB2    B2-B1       DECREMENT ORIGINAL TABLE LENGTH
          SX5    X5+B1       INCREMENT CURRENT TABLE LENGTH 
          LE     B2,WLK4X    BR, WRITE OUT LAST CHUNK 
          IX6    X5-X3       CHECK FOR MAX TABLE LENGTH 
          NG     X6,WLK4A    BR, GET MORE 
 WLK4X    RJ     SBR
          SX6    LNKTAB      (X6) = 4400
          LX6    12 
          LE     B2,WLK4Y    BR, (X5) = TABLE LENGTH
          SX5    B7 
 WLK4Y    BSS    0
          IX6    X5+X6       MERGE TABLE LENGTH INTO HEADER WORD
          LX6    36 
          WRITEO BINFIL,X6      WRITE HEADER WORD TO B FILE 
          SX4    B6 
          LE     B2,WLK4Z 
          SX5    B7 
 WLK4Z    WRITEW BINFIL,X4,X5   WRITE OUT TABLE CHUNK 
          RJ     RBR
          SB4    B5 
          SB6    B5 
          SX5    B0 
          SX3    4095 
          LE     B2,INIT        BR, BUILD SYMBOL TABLE
          SB2    B3-B7         (B2) = LENGTH OF TABLE 
          JP     WLK4A
* 
 OPTDEF   PS                       USER DEF SYMBOL TABLE GENER. 
          RJ     SBR               SAVE B REGS FIRST
          SA1    =XFORMPTR         X1= #LOCAL PARAMS IN DEF 
          SB5    X1 
          SB6    B0                COUNT =0 TO FORMPTR
          SB7    -1                DEF FLAG 
          SB1    1                 INSURE B1=1
          SB4    B0                INITIALIZE WORD COUNT
* 
          SA2    =XBASFLN.         GET DEF LINE NO. 
          SA3    =XBASLLN.         GET FNEND LINE NO. 
          LX2    42 
          LX3    24 
          IX6    X2+X3             SAVE USER DEF LINE NO. 
          SA6    DEFLINE           RANGE FOR SYMBOL TABLE 
* 
 OPTDEF1  SA3    =XFORMALS+B6      GET LOCAL PARAM
          BX2    X3                EXTRACT IDTABLE INDEX
          AX2    18 
          SX2    X2                X2= IDTABLE INDEX
          SB3    B0                INSURE STRING FLAG OFF 
          JP     NAME0             GENERATE SYMBOL TABLE ENTRY
*                                  FOR THIS LOCAL PARAM 
* 
 OPTDEF2  BSS    0                 FETCH NEXT LOCAL PARAM 
          SB6    B6+B1              INCR COUNT
          LE     B6,B5,OPTDEF1     BR, GET NEXT LOCAL PARAM 
* 
*     WRITE OUT SYMBOL TABLE FOR THIS USER DEF
* 
          SX6    SYMTAB            X6 = 5700
          LX6    12 
          IX6    X5+X6             X5 = NO. ENTRIES IN TABLE
          SX5    LORD              BASIC LANG ORDINAL 
          LX6    12 
          IX6    X5+X6
          LX6    24                X6 = 5700 HEADER WORD
          WRITEO BINFIL,X6         WRITE IT 
          SX4    SYMBUF 
          SX5    B4                X5 = NO. ENTRIES 
          WRITEW BINFIL,X4,X5      WRITE SYMBOL TABLE 
          RJ     RBR               RESTORE B REGS 
          JP     OPTDEF            EXIT TO BASCOMP
 INIT     SA1    DBFLG             CHECK FOR CID MODE COMPILE 
          ZR     X1,WLK            BR, NOT IN CID MODE
* 
*     BUILD SYMBOL TABLE FOR CID MODE COMPILATION 
* 
          SA1    F.IDS             START OF BASIC SYMBOLS 
          SA2    L.IDS
          IX2    X1+X2
          SX2    X2-1 
          SB6    X2 
          SB7    X1 
          BX6    X1 
          SA6    FWAID             SAVE 
          SA3    =XBASE            FETCH ARRAY BASE 
          BX6    X3 
          ZR     X3,INIT1          BASE = 0 
          SX6    B1                BASE = 1 
 INIT1    SA6    LBOUND            SAVE ARRAY BOUND 
          SB3    B0 
          SB4    B0 
          MX5    0                 INITIALIZE WORD COUNT
          MX6    0                 INITIALIZE USER DEF LINE NO. RANGE 
          SA6    DEFLINE
* 
*         BEGIN PROCESSING
* 
 NEXT     BSS    0
          GE     B7,B6,FINISH 
          SA3    X1 
          NZ     X3,NAME
          SX1    X1+B1
          SB7    X1 
          JP     NEXT 
 NAME     BSS    0
          SA5    FWAID
          IX2    X1-X5
 NAME0    SX3    11                MOD = 11 
          SX4    286
          IX4    X2-X4
          NG     X4,NAME1 
          SX2    X4 
          SB3    B1 
 NAME1    BSS    0
          PX4    X2 
          PX5    X3 
          NX6    X5 
          FX7    X4/X6
          UX0    B2,X7
          LX4    B2,X0
          IX0    X4*X3
          IX5    X2-X0
          SX5    X5-1 
          SX4    X4+B1
          MX6    0
          MX7    0
          LX4    54 
          NG     X5,NAME2 
          SX6    X5+33B            X6 = NUMERIC NAME
          LX6    48 
 NAME2    ZR     B3,NAME3 
          SX7    1R$
          LX7    42 
          PL     X5,NAME3 
          LX7    6
 NAME3    IX6    X6+X7
          IX6    X4+X6
          SA6    SYMBOL 
* 
*         PROCESS ARRAY VARIABLE
* 
          SA3    A3 
          BX0    X3                SAVE 
          NG     X3,VARIABLE
 ARRAY    BSS    0
          LX3    30 
          UX3    B5,X3
          SX7    X3 
          SA4    LBOUND 
          SX5    3
          ZR     B3,ARRAY1
          SX5    7
 ARRAY1   BSS    0
          LX5    15 
          SX6    B5 
          LX6    4
          IX6    X5+X6
          LX4    3
          IX6    X6+X4
          SA5    SYMBOL 
          IX6    X6+X5
          RJ     WRITE
          SX1    X1+B1
          SB7    X1 
          JP     NEXT 
* 
*         PROCESS VARIABLE
* 
 VARIABLE   BSS   0 
          SA4    DEFLINE           MERGE USER DEF LINE
          SX3    X3                AND SIMPLE ADDRESS 
          IX7    X4+X3             INTO SYMBOL TABLE
          SX5    3                 TYPE = VARIABLE
          ZR     B3,VAR1
          SX5    7                 TYPE = STRING
 VAR1     LX5    15 
          SA4    SYMBOL 
          IX6    X5+X4
          PL     B7,VAR2          BR, GLOBAL PARAM
          SX5    B1              SET FORMAL PARAM FLAG
          LX5    14 
          IX6    X6+X5          IN SYMBOL TABLE ENTRY 
 VAR2     RJ     WRITE           PUT ENTRY IN SYMBUF
          NG     B7,OPTDEF2        BR, USER DEF SYMBOL
          BX3    X0 
          LX0    1
          NG     X0,ARRAY 
          SX1    X1+B1
          SB7    X1 
          JP     NEXT 
 WRITE    PS
          SA6    SYMBUF+B4
          SA7    A6+B1
          SB4    B4+2 
          SX5    B4 
          SX4    X5-40
          NG     X4,WRITE 
          NG     B7,OPTDEF2        BR, WRITE SYMBOL FOR USER DEF
 FINISH   BSS  0
          RJ     SBR               SAVE B REGS
          SX6    SYMTAB 
          LX6    12 
          IX6    X5+X6
          SX5    LORD 
          LX6    12 
          IX6    X6+X5
          SX5    B1 
          GE     B7,B6,LTB
          SX5    B0 
 LTB      LX6    1
          IX6    X5+X6
          LX6    23 
          WRITEO BINFIL,X6
          SX4    SYMBUF 
          SX5    B4 
          WRITEW BINFIL,X4,X5 
          SX5   B0          CLEAR NO. OF ENTRIES IN SYMBUF
          RJ     RBR               RESTORE B REGS 
          SB4    B0                B4 = NO. ENTRIES IN SYMBUF 
          SX1    B7 
          LT     B7,B6,WRITE RETURN IF NOT END
          SPACE  4
***        WLB - WRITE LABEL TABLE
* 
*          WRITE OUT LOADER TABLE 
*          USES ALL REGISTERS 
*          CALLS STS, WTO=, WTW=
* 
          SPACE  2
 WLB      BSS    0
          SX4    32                X4 = # POSSIBLE LABEL TABLE CHAINS 
          SA1    FTAB+LABS         X1 = FWA OF LABEL TABLE
          SA2    LTAB+LABS         X2 = LENGTH OF LABEL TABLE 
          SX2    X2-1 
          IX3    X1+X2
          SB6    X3                B6 = LWA OF LABEL TABLE
          IX1    X1+X4             X1 = FWA OF LABEL TABLE ENTRIES
          BX6    X1 
          SA6    LABSTRT
          SB7    B0 
          SB5    B0 
          SA5    LABSTRT           X5 = BASE STORAGE ADDR 
 NEXTLAB  SA3    X1 
          SA4    A3+B1
  
          PL     X4,NOLAB          BR, LABEL REFERENCED BUT NOT DEFINED 
          AX3    18 
          SX3    X3                X3 = LABEL NAME
          NG     X3,NOLAB          BR, INTERNAL LABEL REFERENCE 
          SX4    X4                X4 = REL ADDR OF GEN OBJECT CODE 
          SA2    A4+2              FETCH NEXT CODE ADDRESS
          SX2    X2                NO 5700 TABLE ENTRY FOR REM
          IX2    X2-X4
          ZR     X2,NOLAB          BR, REM STMT 
          LX3    18                X3 = LINE NUMBER 
          IX6    X3+X4
          LX3    24                X3 = STATEMENT NUMBER
          IX6    X6+X3
          SA6    X5+B5             SAVE LINE NUMBER TABLE ENTRY 
          SB5    B5+B1             INCR COUNT OF PROCESSED LABELS 
 NOLAB    SB7    A4                SAVE LAST ADDRESS PROCESSED
          SX1    X1+2              GET NEXT TABLE ENTRY 
          NE     B6,B7,NEXTLAB     BR, PROCESS NEXT ENTRY 
          SX7    B5 
          SA7    LEN57             SAVE # LABELS PROCESSED
          JP     SSTLNE 
* 
* 
*     SORT LINE NUMBER TABLE AND WRITE IT OUT 
* 
 SSTLNE   BSS    0
          SA1    LEN57
          SA2    LABSTRT
          SB7    X2 
          RJ     SST= 
* 
*     WRITE LINE NUMBER (5700) TABLE
* 
          SX6    LABTAB 
          SA5    LEN57
          LX6    12 
          IX6    X5+X6
          SX5    LORD 
          LX6    12 
          IX6    X6+X5
          LX6    24 
          WRITEO BINFIL,X6         WRITE HEADER OF TABLE
          SA4    LABSTRT
          SA5    LEN57
          WRITEW BINFIL,X4,X5 
 WLK      PS                       ENTRY/EXIT 
          MX6    0
          SA6    LTAB+CONS
          SA1    LTAB+LINK         SIZE OF TABLE
          SA2    FTAB+LINK
          SB7    X2                BASE OF TABLE
          RJ     =XSST=            SORT LINK TABLE. 
 WLK1     SA1    FTAB+LINK
          SA3    LTAB+LINK         SIZE OF TABLE
          SA5    X1                NEXT NAME
          SB7    X3 
          LE     B7,B0,WLK4        IF DONE WITH TABLE 
          AX5    30 
          SA4    FTAB+EXTS         BASE OF CALL TABLE 
          SB4    X5                INDEX INTO CALL TABLE
          SA3    X4+B4             NAME 
          MX0    42 
          BX1    X0*X3             CLEAR NAME 
          ADDWRD CONS,X1           INSERT NAME INTO TABLE 
          MX1    0
          SB4    B0                STARTING POINTER 
          LX5    30 
 WLK2     SA4    FTAB+LINK         START
          SA2    X4+B4
          SB4    B4+B1
          GT     B4,B7,WLK3        IF END 
          BX6    X2-X5             COMPARE
          BX0    X1 
          MX7    30 
          AX6    30 
          NZ     X6,WLK3           IF WRONG ONE 
          BX1    -X7*X2            CLEAR EXTERNAL LOCATION
          LX0    30 
          ZR     X0,WLK2           IF NOT DONE
          BX1    X0+X1             PACK RELOCATION
          ADDWRD CONS,X1           PACK IT
          MX1    0
          EQ     WLK2              GET REST OF LINKS
 WLK3     ZR     X1,WLK5           IF DONE
          LX1    30 
          ADDWRD CONS,X1
 WLK5     SA5    FTAB+LINK         RESET BASE AND SIZE OF TABLE 
          SB4    B4-B1
          SX4    B4 
          IX6    X5+X4
          SX7    B7-B4
          SA6    A5                RESET BASE 
          SA7    LTAB+LINK         RESET LENGTH 
          EQ     WLK1              FINISH OFF TABLE 
 WRB      SPACE  4
**        WRB - WRITE BINARY FILE.
*         WRITE OUT RELOCATABLE BINARY FILE.
*         ENTRY  (XOPTION) = FILE NAME. 
  
  
 WRB      PS
          SA5    PRENTRY           ENTRY ADDRESS
          SX6    B1 
          LX6    18 
          IX6    X6+X5             SET ENTRY ADDRESS
          SA6    NTRLOC 
          SA1    IDENTIF           PROGRAM NAME 
          SA2    INSTPTR
          SA3    LTAB+CONS         SIZE OF CONSTANTS
          SA4    LTAB+DATA         SIZE OF DATA 
          IX6    X1+X2
          IX7    X6+X3
          SA5    VARCONT
          SX0    X7-1 
          IX0    X0+X4
          SX6    X5-1 
          PL   X6,PRESET1       BR, LOADABLE NO OF VARS 
          SX6  377777B          FORCE MAX LOADABLE NO OF VARS 
PRESET1   BSS  0
          LX6    42 
          SA6    CREP              SET COUNT
          SA3    A6-B1
          IX6    X3+X0
          SA6    A3 
  
**        WRITE ENTRY POINT TABLE 
  
          SA1    DBFLG
          ZR     X1,WRB0           BR, CID DISABLED - NORMAL MODE 
          SX6    NTRTAB 
          SX5    6                 SET ENTR POINT WORD COUNT
          LX6    12 
          IX6    X6+X5
          LX6    36 
          SA6    NTRPT
          SX7    2                 DEBUG XFER ADDR
          SX6    B1                ENTR POINT RELOC BASE
          LX6    18 
          IX6    X6+X7
          SA6    SRTLOC            SAVE DEBUG XFER ENTRY
          SA1    PRENTRY
          SX1    X1+6        ALLOW FOR PREAMBLE 
          SX6    B1                INIT ENTR POINT RELOC BASE 
          LX6    18 
          IX6    X1+X6
          SA6    INTLOC            SAVE INIT ENTRY
          WRITEW BINFIL,NTRPT,7 
          JP     WRTT              CONTINUE PROCESSING
 WRB0     BSS    0
          WRITEW BINFIL,NTRPT,3 
  
**        WRITE TEXT TABLES 
  
 WRTT     BSS    0
          SA5    INSTPTR           CURRENT INSTRUCTION ADDRESS
          BX6    X5 
          SA6    ADDR              STARTING ADDRESS 
          SA1    =XRELOC           RELOCATION BYTES 
          SA2    A1+B1             RELOCATION COUNTER 
          SX3    X2+15             NUMBER OF WORDS
          LX2    2                 MAKE SHIFT 
          SB6    X2 
          AX0    X1,B6             SHIFT RELOCATION BYTES INTO POSITION 
          ZR     X3,WRB1           IF NO PARTIAL TEXT TABLE 
          SX5    TXTTAB            MAKE TEXT HEADER 
          LX5    12 
          SX4    X3+B1             CORRECT SIZE 
          IX6    X5+X4             PACK SIZE
          LX6    18                POSITION FOR RELOCATION TYPE 
          SX5    B1 
          IX6    X5+X6             PACK RELOCATION TYPE 
          SA5    INSTPTR           LAST INSTRUCTION ADDRESS 
          LX6    18 
          IX5    X5-X3             ADDRESS FOR TABLE
          IX6    X6+X5
          SA0    X3                NUMBER OF WORDS IN TABLE 
          WRITEO BINFIL,X6         WRITE HEADER 
          BX6    X0 
          WRITEO BINFIL,X6         WRITE RELOCATION 
          WRITEW BINFIL,WORDS,A0   WRITE BODY 
 WRB1     SA0    DATA 
          RJ     WTT               WRITE DATA 
          SA0    CONS 
          RJ     WTT               WRITE CONSTANTS
          RJ     WFL               WRITE FILL TABLES
          RJ     WLK               WRITE LNK TABLES 
          WRITEW BINFIL,REP,5      REPLICATION AND XFER TABLES
          WRITER BINFIL,R          FLUSH BUFFER 
          EQ     WRB
 WTT      SPACE  4
**        WTT - WRITE TEXT TABLES.
*         ENTRY  (ADDR) = CODE ADDRESS FOR TEXT TABLES. 
*                (A0) = TABLE TO DUMP.
*         EXIT   (ADDR) = UPDATED CORE ADDRESS. 
*         USES   ALL REGISTERS. 
*         CALLS  WTW=, WTO=.
  
  
 WTT      PS
          SA1    A0+FTAB           START OF TABLE 
          SA2    A0+LTAB           LENGTH OF TABLE
          IX0    X1+X2
          SA0    X1 
          ZR     X2,WTT            IF NONE
 WTT1     SB5    X0                END OF CODE
          SX5    A0-B5             SIZE LEFT
          SX4    X5+15
 +        PL     X4,*+1            IF < 16 WORDS
          SX5    -15               MAXIMUM SIZE 
          PL     X5,WTT            IF DONE
          SX6    TXTTAB 
          SX4    B1 
          LX6    12 
          IX3    X4-X5             SIZE OF TABLE
          IX6    X6+X3             PACK SIZE
          LX6    36 
          SA4    ADDR              CODE ADDRESS 
          IX7    X4-X5             UPDATE ADDRESS 
          BX6    X4+X6             PACK ADDRESS INTO TABLE
          SX4    B1 
          LX4    18 
          BX6    X6+X4             PACK RELOCATION
          SA7    A4                RESET ADDRESS
          WRITEO BINFIL,X6         WRITE HEADER 
          MX6    0
          WRITEO BINFIL,X6         WRITE RELOCATION BYTES 
          SB5    X5 
          SB7    -B5
          SB6    A0 
          SA0    A0+B7             UPDATE BASE ADDRESS
          WRITEW BINFIL,B6,B7      WRITE BODY OF TABLE
          EQ     WTT1 
 FULL     SPACE  4
**        FULLWORD - EXTERNSION OF BASCOMP ROUTINE TO HANDLE FULL WORD. 
**        ENTRY  (X1) = WORD TO BE SAVED. 
*         USES   A - 1, 2, 3, 4, 6, 7.
*                X - 1, 2, 3, 4, 5, 6, 7. 
*         CALLS  WTO=, WTW=, SBR, RBR.
  
  
 FULLWORD SA4    =XRELOC+1         RELOCATION COUNTER 
          BX6    X1 
          LX5    X1                SAVE FOR FORWARD REFERENCE RELOCATION
          SA6    X4+WORDS+15       SAVE TEXT TABLE WORD 
          SX7    X4+B1
          SA7    A4 
          NG     X7,OUT1           IF TABLE NOT FULL
          RJ     SBR               SAVE B REGISTERS 
          SX6    TXTTAB            TEXT HEADER
          LX6    12 
          SX7    20B
          IX6    X6+X7
          LX6    18 
          SX4    B1 
          IX6    X6+X4
          LX6    18 
          SA4    INSTPTR
          SX1    X4-14
          IX6    X1+X6
          WRITEO BINFIL,X6
          SA4    =XRELOC
          BX6    X4 
          WRITEO BINFIL,X6
          WRITEW BINFIL,WORDS,15
          RJ     RBR               RESTORE B REGISTERS
          MX6    0
          SA6    =XRELOC
          SX7    -15
          SA7    A6+B1
 OUT1     SA4    LABUSE 
          SA3    INSTPTR
          SX6    X3+B1             COUNT INSTRUCTIONS 
          SA6    A3 
          SA3    A4+B1             NEXT WORD VALUE
          BX6    X3 
          SA6    A4 
          MX7    0
          SA7    A3 
          SA7    A3+B1             CLEAR SAVED NON-FORWARD REF. LABEL 
          ZR     X4,=XOUTWORD      BR IF NO FORWARD LABEL REFERENCE 
          SA3    INSTPTR           CURRENT LOCATION 
          SX1    X3-1 
          LX4    18 
          IX1    X4+X1
          ADDWRD FLLS,X1           SAVE RELOCATIONS 
          ADDWRD FLLS,X5           SAVE TEXT
          EQ     =XOUTWORD
 LABEL    SPACE  4
**        LABEL - HANDLE FORWARD LABEL REFERENCES.
*         ENTRY  B6 = ABSOLUTE ADDRESS OF LABS ENTRY. 
*         USES   A - 4, 5, 6, 7.
*                B - 5. 
*                X - 4, 5, 6, 7.
  
  
 LABEL    SA4    B6                LABEL ENTRY
          SA5    LABUSE            PRECEDING FORWARD LABEL REFERENCE
          SB5    B0                 RESET PARCEL 2 FLAG 
          BX7    X4                SAVE LABEL TABLE ENTRY 
          SA4    =XPARCEL          PARCEL NO. IN CODE OF REFERENCE
          PL     X7,LABB           BR IF REFERENCED LABEL IS UNDEFINED
*  REFERENCED LABEL IS DEFINED SO IS NOT A FORWARD REFERENCE. 
          SX6    X4-1 
          ZR     X6,LAB0           EXIT IF PARCEL=1 
          SX6    X4-2 
          ZR     X6,LABA           BR IF PARCEL=2 
          EQ     LABC              BR IF PARCEL=0 OR 3. 
*  PARCEL=2 SO CHECK FOR PREVIOUS FORWARD LABEL REFERENCE.
 LABA     BSS    0
          ZR     X5,LAB0           EXIT IF NO PREVIOUS FORWARD REF. 
          LX5    24                SHIFT OVER PREVIOUS FWD. REF.
          BX7    X4                X7=PARCEL NO.
          SB5    1                 SET THE PARCEL 2 FLAG
          EQ     LABD              GO MERGE IN NORMAL REF. INFO.
*  REFERENCED LABEL IS UNDEFINED SO HANDLE AS A FORWARD LABEL REFERENCE.
 LABB     BSS    0
          SX6    X4-2 
          NZ     X6,LABC           BR IF PARCEL=0,1, OR 3 
*  IF UNDEFINED LABEL IS IN PARCEL 2, THEN PICK UP THE PREVIOUSLY 
*  SAVED NON-FORWARD REFERENCE. 
          NZ     X5,LABB1          BR IF A PREVIOUS FWD REF.
          BX6    X3                SAVE X3
          SA6    LABUSE+3 
          SA3    LABUSE+2          GET PREVIOUS NON-FWD LABEL REF,IF ANY
          BX5    X3                SET UP FOR PROCESSING
          SA3    LABUSE+3          RESTORE X3 
          MX7    0
          SA7    LABUSE+2          CLEAR NON-FWD LABEL REF. 
 LABB1    BSS    0
          BX7    X4                X7=PARCEL NO.
          LX5    24                SHIFT PREVIOUS FORWARD REF.
          SB5    1                 SET THE PARCEL 2 FLAG
          EQ     LABD              GO MERGE NEW FWD REF. INFO 
*  INSERT PARCEL AND LABEL TABLE RELATIVE ADDRESS INFO INTO 
*  THE LABEL REFERENCE SAVE AREA. 
 LABC     BSS    0
          SX6    X4-3              CHECK IF PARCEL=3
          SX7    X4                PARCEL NUMBER
 +        NZ     X6,*+1            IF IN NEXT WORD
          MX7    0
          SA5    A5+B1
 LABD     BSS    0
          LX5    2                 INSERT PARCEL NUMBER 
          IX5    X5+X7
          SA4    FTAB+LABS         BASE OF LABEL TABLE
          SX6    B6                ADDRESS OF LABEL 
          LX5    16 
          IX6    X6-X4             LABEL RELATIVE ADDRESS 
          IX6    X6+X5             PACK ADDRESS 
          SA4    B6                RELOAD TABLE INFORMATION 
          ZR     B5,LABD1          BR IF PARCEL 2 FLAG IS OFF 
          LX6    18                SHIFT SOME MORE IF PARCEL=2
 LABD1    BSS    0
          NG     X4,LABE           BR IF REFERENCED LABEL WAS DEFINED 
          SA6    A5                UNDEFINED SO STORE LABEL REFERENCES
          SB5    B0                SET USAGE TO 0 
          EQ     =XLABEL2          EXIT 
*  REFERENCED LABEL WAS DEFINED.
 LABE     BSS    0
          ZR     X7,LABF           BR IF ORIG. PARCEL=0 OR 3
          SA6    A5                PARCEL=2. STORE LABEL REFERENCES 
          EQ     LAB1X             EXIT 
*  IF DEFINED LABEL REFERENCE WAS IN PARCEL 0 OR 3, THEN
*  SAVE REFERENCE INFORMATION IN CASE A FORWARD REFERENCE 
*  OCCURS LATER ON IN THE SAME WORD OF CODE.
 LABF     BSS    0
          MX7    0
          SA7    A5                THIS IS A NORMAL DEFINED REFERENCE 
*                                  SO CLEAR FORWARD LABEL REFERENCE.
          SA6    LABUSE+2          SAVE THE REFERENCE INFORMATION 
*                                  FOR POSSIBLE LATER USE.
          EQ     LAB1              EXIT 
 LAB0     BSS    0
          SA4    B6                RELOAD LABEL TABLE INFORMATION 
 LAB1X    BSS    0
          MX7    0
          SA7    LABUSE+2          CLEAR NON-FORWARD LABEL REF. 
 LAB1     SB5    X4                REFERENCE
          LX4    1
          PL     X4,=XLABEL2       IF NOT IMAGE REFERENCE 
          SA5    =XPRUSFLG   IS REFERENCE FROM PRINT USING STMT 
*   PRUSFLG IS SET IN LACTPRI ROUTINE IN BASCOMP
          ZR     X5,=XLABEL2 BR, REFERENCE NOT FROM PRINT USING STMT
          LX4    23 
          SB5    X4                RESET FOR IMAGE REFERENCE
          EQ     =XLABEL2 
 SBR      SPACE  4
**        SBR - SAVE B REGISTERS. 
*         USES   A - 6, 7.
*                X - 6, 7.
  
  
 SBR      PS
          SX6    B2 
          SX7    B3 
          SA6    WRITLB2
          SA7    A6+B1
          SX6    B4 
          SX7    B5 
          SA6    A7+B1
          SA7    A6+B1
          SX6    B6 
          SX7    B7 
          SA6    A7+B1
          SA7    A6+B1
          EQ     SBR
 RBR      SPACE  4
**        RBR - RESTORE B REGISTERS.
*         USES   A - 3, 4.
*                X - 3, 4.
  
  
 RBR      PS
          SA4    WRITLB2
          SA3    A4+B1
          SB2    X4 
          SB3    X3 
          SA4    A3+B1
          SA3    A4+B1
          SB4    X4 
          SB5    X3 
          SA4    A3+B1
          SA3    A4+B1
          SB6    X4 
          SB7    X3 
          EQ     RBR
 LABUSE   DATA   0
          DATA   0
          DATA   0                 SAVE NON-FORWARD LABEL REFERENCE 
          BSSZ   1                 REGISTER SAVE AREA 
 XFRTAB   EQU    4600B
 TXTTAB   EQU    4000B             TEXT TABLE 
 LNKTAB   EQU    4400B             LNK TABLE
 PFXTAB   EQU    7700B             PREFIX TABLE.
 LDSTAB   EQU    7000B             LDSET TABLE
 PDLTAB   EQU    3400B             PIDL TABLE 
 NTRTAB   EQU    3600B             NTR TABLE
 REPTAB   EQU    4300B             REPLICATION TABLE
 FLLTAB   EQU    4200B             FILL TABLE 
 SYMTAB   EQU    5600B             SYMBOL TABLE 
 LABTAB   EQU    5700B             LABEL TABLE
 LORD     EQU    8                 BASIC LANGUAGE ORDINAL 
 LEN57    BSSZ   1
 LABSTRT  BSSZ   1
  
 NTRPT    VFD    12/NTRTAB,12/2,36/0
 NTRNAM   DATA   0
 NTRLOC   DATA   0
 SRTNAM   DATA   7LBASSRT.         DEBUG XFER ADDR
 SRTLOC   DATA   0
 INTNAM   DATA   7LBASINT.         DEBUG INIT ADDR
 INTLOC   DATA   0
 REP      VFD    12/REPTAB,12/2,36/1
          VFD    42/1,18/0
 CREP     DATA   0
 XFR      VFD    12/XFRTAB,12/1,36/0
 XFRNAM   DATA   0
 ADDR     DATA   0                 CURRENT CODE ADDRESS 
  
**        FET FOR BINARY FILE.
  
 BINFIL   DATA   0
          VFD    42/0,18/0
          VFD    42/0,18/0
          VFD    42/0,18/0
          VFD    42/0,18/0
  
**        WORD BUFFER FOR RELOCATABLE.
  
 WORDS    BSS    15                WORD BUFFER FOR RELOCATABLE
* 
* 
*         FET FOR BINARY DECK 
* 
 FWAID    BSSZ   1
 LBOUND   BSSZ   1
 DEFLINE  BSSZ   1                 USER DEF LINE RANGE
 SYMBOL   BSSZ   1
 SYMBUF   BSSZ   40 
* 
* 
 INST1    BSS       0        ..START OF INSTRUCTION STACK 
*                              IF BINARY DECK OPTION SPECIFIED
*                                AND NO ASSEMBLY LISTING NOR TRACE OPTION 
          TITLE     ASSEMBLY LISTING OPTION 
* 
*   PROCEDURE TO PRODUCE ASSEMBLY OUTPUT (LISTING OR CARDS) 
* 
 ASSEMBL  BSSZ        1 
          RJ     CLEAR             SET LINE TO ALL BLANKS 
* 
*   BEGIN SUBPROGRAM
* 
          SA1         IDENT 
          SA2    AASCOP 
          BX6       X1
          BX7    X2 
          SA6    ADRPOS1           SET PROGRAM NAME 
          SA7    OPPOS             SET  ASCENT  PS.OP 
          SA1    OLOPTION    SET FET TO USE 
          SB5    X1 
          RJ     OUTASSM
* 
*   ENTRY POINT DEFINITION
* 
          SA1       SGSKIP      SINGLE SPACING
          BX7       X1
          SA7       LINE
          SA1    OLOPTION    SET FET TO USE 
          SB5    X1 
          RJ          OUTASSM           ADD BLANK LINE
          SA1    AENTOP 
          SA3         IDENT 
          BX6    X1 
          BX7       X3
          SA6    OPPOS             SET  ENTRY 
          SA7    ADRPOS1           SET ENTRY POINT NAME 
          SA1    OLOPTION    SET FET TO USE 
          SB5    X1 
          RJ     OUTASSM
* 
*   PRINT (AND PUNCH) THE CONTENTS OF A NORMAL SEGMENT
* 
          SA1       SGSKIP
          BX7       X1
          SA7       LINE
          SA1    OLOPTION    SET FET TO USE 
          SB5    X1 
          RJ          OUTASSM           ADD BLANK LINE
          EQ     ASSEMBL
 ENDASM   PS
          SA1    INSTPTR           SIZE OF CODE 
          BX6    X1 
          SA6    ADDR              SET ADDRESS
          SA0    DATA 
          RJ     CON
          SA0    CONS 
          RJ     CON               OUTPUT CONSTANTS 
* 
*         PRESETTING OF VARIABLES 
* 
          SA1    AREPOP 
          BX6    X1 
          SB3    B0 
          SA6    OPPOS             SET REP     S/ 
          SA1    INSTPTR
          SA2    LTAB+DATA
          SA3    A2+B1
          IX4    X2+X3
          IX1    X1+X4
          R=     X2,TRUE
          SX1    X1-1 
          RJ     ADRCALC           GET STARTING ADDRESS 
          MX2    48 
          SX1    2R,C 
          BX6    X2*X7
          BX7    X6+X1
          SA7    ADRPOS1           STORE STARTING ADDRESS 
          SA2    VARCONT
          SX1    X2-1 
          SB3    4                 SET NO RELOCATION
          R=     X2,FALSE          GENERAL CONVERSION 
          RJ     ADRCALC           GET LENGTH 
          MX2    48 
          BX7       X2*X7 
          SX5    2R /              INSERT / 
          IX7    X5+X7
          LX7    54 
          SA7    ADRPOS2
          MX6    0
          SA6    A7+B1             SET END OF LINE
          SA1    OLOPTION    SET FET TO USE 
          SB5    X1 
          RJ     OUTASSM
* 
*   END SUBPROGRAM
* 
          SA1       SGSKIP      SINGLE SPACING
          BX7       X1
          SA7       LINE
          SA1    OLOPTION    SET FET TO USE 
          SB5    X1 
          RJ        OUTASSM 
          SA3    IDENT
          SA2    AEQUOP 
          SA4    DC3BLNK
          BX6    X2 
          BX7    X3+X4
          LX7    54 
          SA6    OPPOS             SET  EQU 
          SA7    BCDADR            SET  IDENT IN LOCATION FIFLD 
          SA1         PRENTRY 
          R=     X2,TRUE
          RJ     ADRCALC
          MX6    48 
          BX7       X6*X7 
          SA7    ADRPOS1           SET ENTRY POINT THIS PROGRAM 
          SA1    OLOPTION    SET FET TO USE 
          SB5    X1 
          RJ     OUTASSM
          SA1         IDENT 
          SA2    AENDOP 
          BX6       X1
          BX7    X2 
          SA6    ADRPOS1
          SA7    OPPOS             SET  END   TRANSFER NAME 
          SA1    OLOPTION    SET FET TO USE 
          SB5    X1 
          RJ     OUTASSM
          EQ     ENDASM 
          EJECT 
* 
*         CONSTANTS USED BY ASSEMBLY-OUTPUT 
* 
 AASCOP   DATA      10HIDENT
 AUPPB    DATA   10HB 
 ACONOP   DATA      10HVFD    60/ 
 AEQUOP   DATA   10HEQU 
AREPOP   DATA      10HREPI    S/
 AENDOP   DATA   10HEND 
 AENTOP   DATA   10HENTRY 
          EJECT 
* 
*   PROCEDURE TO CONVERT ADDRESSES TO OCTAL DISPLAY CODE
*      AT ENTRY X1 = ADDRESS TO BE CONVERTED
*      AT EXIT  X7 = CONVERTED ADDRESS (FORMAT 4B6O)
*      REGISTER USE.. X1,X2,X3,X7,B1
* 
 ADRCNVT  JP     0
          LX1    42                POSITION ADDRESS 
          MX2    57                SET UP EXTRACTION MASK 
          SX7    B0                CLEAR RESULT 
          SB2    6
 ACNVTLP  LX1    3                 GET ONE OCTAL DIGIT
          SB2    B2-1 
          LX7    6                 MAKE ROOM FOR ONE CHARACTER
          BX3    -X2*X1            EXTRACT CHARACTER
          IX7    X7+X3
          NZ     B2,ACNVTLP        IF NOT DONE
          SA2    ADCMASK
          IX7    X2+X7             CONVERT TO DISPLAY CODE
          JP     ADRCNVT           EXIT 
 ADCMASK  DATA   10H    000000
* 
* 
*    PROCEDURE TO CONVERT 60 BIT CONSTANTS TO DISPLAY CODE (20 CHARS) 
*         ENTERED WITH X1 = CONSTANT TO CONVERT 
*         RESULT IS GIVEN IN X6,X7
*         REGISTER USE.  X2,X3,X6,X7,B1,B2
* 
 OCTCNVT  JP     0                 ENTRY/EXIT 
          MX5    2
          SX2    -7 
          BX7    X7-X7
 OCTLP1   BX6    X7                SET 1. WORD OF RESULT (2. PASS)
          MX7    0                 CLEAR TARGET 
          SB2    10 
 OCTLP2   LX1    3                 POSITION NEXT DIGIT
          SB2    B2-1              COUNT
          LX7    6                 MAKE ROOM FOR ONE CHAR 
          BX3    -X2*X1            EXTRACT DIGIT
          BX7    X7+X3             INSERT IT IN RESULT
          NZ     B2,OCTLP2         TEST WORD FINISHED 
          LX5    1
          NG     X5,OCTLP1         TEST FOR SECOND PASS 
          SA2    DCZEROS
          IX6    X6+X2
          IX7    X7+X2             CONVERT TO DISPLAY CODE
          JP     OCTCNVT           EXIT 
* 
 DCZEROS  DATA   10H0000000000
          EJECT 
* 
*   PROCEDURE TO CREATE ADDRESS ACCORDING TO RELOCATION 
*         ENTERED WITH X1 = ADDRESS TO CONVERT
*                      X2 = TRUE IF ONLY P-REL IS WANTED. 
*         RESULT IS RETURNED IN X7
*         REGISTER USE.. X1,X2,X7,B1,B2 
* 
 ADRCALC  JP     0                 ENTRY/EXIT 
          NZ     X2,APREL          IF TRUE
          SA2    B3+ARELU-1 
          MX6    57 
          LX2    42 
          BX6    -X6*X2            EXTRACT RELOCATION 
          SB2    X6 
          MX6    0                 CLEAR FOR NEXT WORD
          SA6    A2 
          JP     B2+ADRRELS 
 ADRRELS  JP     ANOREL 
          JP     APREL
          JP     AEXTREL           EXTERNAL RELOCATION
*   RELOCATIONS GREATER THAN 5 ARE NOT USED 
* 
* 
*  NO RELOCATION
* 
 ANOREL   BSS    0
          RJ     ADRCNVT           X7 =      OOOOOO 
          SA1    AUPPB
          MX2    6
          BX7    -X2*X7            CLEAR B-POSITION 
          BX1    X1*X2             ISOLATE B
          BX7    X7+X1             INSERT B 
          LX7    24                POSITION TO OOOOOOB
          JP     ADRCALC
* 
*  PROGRAM RELOCATION 
* 
 APREL    SA5    B3+ALABU-1 
          SX6    B4 
          SA6    AUSAV             SAVE B4
          SB4    AUPPP             IF NO ALTERNATIVE DEFINITION 
          ZR     X5,APR1           IF NO REFERENCE
          SB4    AULB              PROGRAMMER LINE NUMBER 
          SX1    X5 
          PL     X1,APR1           IF USER DEFINED
          SB4    AUGL              SET INTERNAL LABEL 
          BX1    -X1
 APR1     MX6    0
          SA6    A5                CLEAR FOR NEXT WORD
          RJ     ADRCNVT           CONVERT ADDRESS
          MX2    12 
          SA1    B4                NAME 
          SA5    AUSAV             RESTORE B4 
          SB4    X5 
          LX7    12                POSITION VALUE 
          BX7    -X2*X7 
          BX1    X1*X2
          BX7    X7+X1
          JP     ADRCALC
* 
*   EXTERNAL REFERENCE
* 
 AEXTREL  LX2    18 
          SA5    FTAB+EXTS
          IX6    X2+X5             ADDRESS OF NAME
          SA2    X6                EXTERNAL NAME
          SA1    AEQUALX           =X 
          MX7    12 
          LX2    48 
          BX2    -X7*X2 
          BX7    X2+X1                  SET TO =XIDENT
          JP     ADRCALC
* 
 AUPPP    DATA   10HPR
 AULB     DATA   10HLB             USER SEQUENCE NUMBER 
 AUGL     DATA   10HGL             COMPILER GENERATED LABEL 
 AEQUALX  DATA   2L=X 
 ARELU    BSSZ   4                 CURRENT RELOCATION WORDS 
 AUSAV    BSSZ   1                 REGISTER SAVE AREA 
* 
          EJECT 
* 
*         GENERATION OF ASSEMBLY-OUTPUT FOR ONE INSTRUCTION-WORD
* 
*         INPUT  POINTER IN B4
* 
 AONEWRD  BSSZ        1 
          LX7    X1                SAVE X0,X1,X2,X3 
          BX6    X0 
          SA6    SAVEX0 
          SA7    A6+B1
          BX6    X2 
          LX7    X3 
          SA6    A7+B1
          SA7    A6+B1
          SX6    B2                SAVE B2,B3,B7
          SX7    B3 
          SX5    B7 
          LX6    36 
          LX7    18 
          IX6    X5+X6
          IX7    X6+X7
          SX6    B5                SAVE B5
          SA7    A7+B1
          SA6    A7+B1
          BX0    X1 
          SA1    LABDEF-2 
          SB3    -2 
 +        ZR     X1,*+1            IF NO EXTRA LABEL
          RJ     SLB               OUTPUT EXTRA LABEL 
          SA1    LABDEF-1 
          SB3    -1 
 +        ZR     X1,*+1            IF NO EXTRA LABEL
          RJ     SLB               OUTPUT EXTRA LABEL 
          SB3    B0 
          SA1    INSTPTR           P COUNTER
          RJ     ADRCNVT           OCTCNVT(SEGADR+I)
          LX7    24 
          SA1    LABDEF            LABEL DEFINED
          SA7    INSTADR
          ZR     X1,ANORM01        IF NO LABEL
          SA1    INSTPTR           P VALUE
          R=     X2,TRUE
          RJ     ADRCALC           ADRCALC(SEGADR+I)
          LX7    54 
          SA7    BCDADR 
          MX6    0
          SA6    LABDEF 
 ANORM01  SA1    SAVEX0+1          OCTAL WORD 
          RJ     OCTCNVT
          SA6    OCTPIC1
          SA7    OCTPIC2
          SB3    B1 
 APARCLP  BSS    0
* 
*   IF OCTAL PICTURE OF EACK INSTRUCTION IS DESIRED, PLACE CODE HERE ***
* 
          SA2    ANTIFLG
          ZR     X2,ANINST
          SA2    AUPPERM
          SX6    FALSE
          BX7    X2 
          SA6    ANTIFLG
          SA7    BCDADR            SET MINUS IN COLUMN 2
          EQ     ANINST 
 SLB      SPACE  4
**        SLB - GENERATE EXTRA LABEL FOR ASSEMBLY LIST. 
*         ENTRY  (B3) = OFFSET FOR DEFINITION.
  
  
 SLB      PS
          SA1    INSTPTR           P ADDRESS
          R=     X2,TRUE
          RJ     ADRCALC           CALCULATE ADDRESS
          LX7    54 
          SX6    B0 
          SA7    BCDADR 
          SA6    ALABU-1+B3        CLEAR DEFINITION 
          SA5    BSSZ 
          BX6    X5 
          SA6    A7+B1
          SA1    OLOPTION    SET FET TO USE 
          SB5    X1 
          RJ     OUTASSM           OUTPUT LINE
          EQ     SLB
 BSSZ     DATA   8LBSS  0 
 CON      SPACE  4
**        CON - OUTPUT CONSTANTS IN ASSEMBLY LIST.
*         (A0) = TABLE NUMBER.
  
  
 CON      PS
          SB4    B0 
          MX6    0
          SA6    AENDLIN
 CON1     SA1    LTAB+A0           SIZE OF TABLE
          SB5    X1 
          GE     B4,B5,CON         IF DONE
          SA1    ADDR              ADDRESS
          SX6    X1+B1
          SA6    A1 
          RJ     ADRCNVT           ADDRESS
          LX7    24 
          SA7    INSTADR
          SA1    FTAB+A0           START OF  TABLE
          SA1    X1+B4             VALUE
          SB4    B4+B1
          RJ     OCTCNVT           CONVERT VALUE
          SA6    OCTPIC1
          SA7    A6+B1
          SA6    ADRPOS1
          SA7    A6+B1
          SA2    ACONOP            VFD
          BX7    X2 
          SA7    OPPOS             SET  CON 
          SA1    AUPPB
          BX6    X1 
          SA6    ADRPOS3           SET A B AFTER THE CONSTANT 
          SA1    OLOPTION    SET FET TO USE 
          SB5    X1 
          RJ     OUTASSM           WRITE LINE 
          EQ     CON1 
* 
*   HANDLING OF ONE MACHINE INSTRUCTION 
* 
 ANINST   LX0    6
          MX1    54 
          BX2    -X1*X0            X2 = OPCODE
          SA3    X2+OPLIST1 
          NG     X3,DMNJMPS        OPCODE IS 03 
 ANSET    SB5    X3                ACTION ADDRESS 
          AX3    24 
          SA1    X3+OPLIST2        X1 = UNFINISHED ADDR-EXPR
          SA2    DC7BLNK
          AX3    18 
          BX7    X2+X3
          LX7    42                X7 = UNFINISHED OPCODE 
          JP     B5                PROCESS ACTION 
 DMNJMPS  MX1    57 
          LX0    3
          BX2    -X1*X0            X2 = I-PART
          SA3    X2+OPLIST3 
          JP     ANSET
          EJECT 
* 
*   ADDRESS ACTIONS. ENTERED WITH X0 = OCTAL INSTRUCTION
*                                 X1 = UNFINISHED ADDRESS EXPRESSION
*                                 X7 = UNFINISHED OPCODE
* 
*   ACTION FOR PS AND RJ INSTRUCTIONS (00,01) 
* 
 ADRACT1  SX6    DCBLANK-DCZERO    X6 = BLANK (BIASED)
          SX2    0
          LX0    24                SKIP I,J, POSITION ADDRESS 
          BX3    X7 
          SX5    B3-3 
          PL     X5,AACT30         NO ANTIFORCE AFTER LOWER PARCEL
          SX7    TRUE 
          SA7    ANTIFLG
          BX7    X3 
          JP     AACT30 
* 
* 
*   ACTION FOR SAI BJ+K TYPE INSTRUCTIONS (50,51,52,60,61,62,70,70,72)
* 
 ADRACT2  MX2    57 
          LX0    3
          BX6    -X2*X0            X6 = I-FIELD 
          LX0    3
          BX2    -X2*X0            X2 = J-FIELD 
          LX0    18                POSITION ADDRESS 
          JP     AACT30 
* 
* 
*   ACTION FOR B-TEST JUMPS (04,05,06,07) 
* 
 ADRACT3  SX6    DCBLANK-DCZERO    X6 = BLANK 
          MX2    57 
          LX0    3
          BX3    -X2*X0            X3 = I-FIELD 
          LX0    3
          LX3    18 
          BX2    -X2*X0            X2 = J-FIELD 
          BX2    X2+X3             X2 = I,J-FIELDS
          LX0    18                POSITION ADDRESS 
          JP     AACT30 
* 
* 
*   ACTION FOR  BXI XJ (10) 
* 
 ADRACT4  MX2    57 
          LX0    3
          BX6    -X2*X0            X6 = I-FIELD 
          LX0    3
          BX2    -X2*X0             X2 = J-FIELD
          LX0    3                 SKIP K-FIELD 
          LX2    18 
          JP     AACT15 
* 
* 
*   ACTION FOR MOST 15-BIT INSTRUCTIONS 
* 
 ADRACT5  MX2    57 
          LX0    3
          BX6    -X2*X0            X6 = I-FIELD 
          LX0    3
          BX3    -X2*X0            X3 = J-FIELD 
          LX0    3
          BX2    -X2*X0            X2 = K-FIELD 
          LX3    18 
          BX2    X2+X3             X2 = J,K-FIELDS
          JP     AACT15 
* 
* 
*   ACTION FOR   LXI JK, AXI JK, MXI JK (20,21,43)
* 
 ADRACT6  MX2    57 
          LX0    3
          BX6    -X2*X0            X6 = I-FIELD 
          LX0    3
          BX3    -X2*X0            X3 = J 
          LX0    3
          LX3    6
          BX2    -X2*X0            X2 = K 
          BX2    X2+X3
          LX2    18                X2 = JK
          JP     AACT15 
* 
* 
*   ACTION FOR NO-OPERATION (46)
* 
 ADRACT7  SX6    DCBLANK-DCZERO    X6 = BLANK 
          SX2    0
          LX0    9
          JP     AACT15 
* 
* 
*   ACTION FOR   BXI-XK AND  CXI XK (14,47) 
* 
 ADRACT8  MX2    57 
          LX0    3
          BX6    -X2*X0            X6 = I-FIELD 
          LX0    6                 SKIP J-FIELD 
          BX2    -X2*X0            X2 = K-FIELD 
          LX2    18 
          JP     AACT15 
* 
* 
*   ACTION FOR X-TEST JUMPS (03X) 
* 
 ADRACT9  SX6    DCBLANK-DCZERO    X6 = BLANK (BIASED)
          MX2    57 
          LX0    3
          BX2    -X2*X0            X2 = J-FIELD 
          LX0    18                POSITION ADDRESS 
          JP     AACT30 
* 
*   ACTION FOR  JUMP (02) 
* 
 ADACT91  SX6    DCBLANK-DCZERO    X6 = BLANK 
          MX2    57 
          LX0    3
          BX2    -X2*X0            X2 = I-FIELD 
          LX0    21                SKIP J AND POSITION ADDRESS
          SX5    B3-3 
          BX3    X7 
          PL     X5,AACT30         NO ANTIFORCE AFTER LOWER PARCEL
          SX7    TRUE 
          SA7    ANTIFLG
          BX7    X3 
          JP     AACT30 
* 
* 
*   ACTION FOR  BXI -XK*XJ (15,16,17) 
* 
 ADRAC10  MX2    57 
          LX0    3
          BX6    -X2*X0            X6 = I-FIELD 
          LX0    3
          BX3    -X2*X0            X3 = J-FIELD 
          LX0    3
          BX2    -X2*X0            X2 = K-FIELD 
          LX2    18 
          BX2    X2+X3             X2 = K,J-FIELDS
          JP     AACT15 
          EJECT 
* 
*   COMMON ACTION FOR ADRACT 1,2,3,9 (30 BIT INSTRUCTIONS)
*          ENTERED WITH X2 = FIELD TO COMPLETE ADDRESS EXPRESSION 
*                       X6 = FIELD TO COMPLETE OPCODE 
*                       X0 = POSITIONED TO ADDRESS (K-FIELD)
* 
 AACT30   LX6    42 
          LX2    6
          IX7    X7+X6             FINISH OPCODE
          IX6    X1+X2             FINISH ADDRESS EXPRESSION
          SA7    OPPOS
          SA6    ADRPOS1
 AACT30A  BX1    X0 
          R=     X2,FALSE 
          RJ     ADRCALC
          SA7    ADRPOS2
          SX7       B0
          SA7       ADRPOS3 
          SB3    B3+2              J ..= J + 2 ., 
          JP     ANLPEND
* 
* 
*   COMMON ACTION FOR ADRACT 4,5,6,7,8,10 (15-BIT INSTRUCTIONS) 
*          ENTERED WITH X2 = FIELD TO COMPLETE ADDRESS EXPRESSION 
*                       X6 = FIELD TO COMPLETE OPCODE 
*                       X0 POSITIONED TO NEXT INSTRUCTION 
* 
 AACT15   LX6    42 
          LX2    6
          IX7    X7+X6
          IX6    X1+X2
          SA7    OPPOS
          SA6    ADRPOS1
          SX7       B0
          SA7       ADRPOS2 
          SB3    B3+1 
* 
*   COMMON OUTPUT FOR ALL ADDRESS ACTIONS 
* 
 ANLPEND  BSS    0
          SA1    OLOPTION    SET FET TO USE 
          SB5    X1 
          RJ     OUTASSM
          SX1    B3-5 
          NG     X1,APARCLP        MORE PARCELS IN THIS WORD
          MX6    0
          SA6    ARELU+1           CLEAR RELOCATION 
          SA6    A6+B1
          SA1    A6+B1
          BX7    X1 
          SA7    ARELU
          SA6    A6+B1
          SA5    SAVEX0            RESTORE X0,X1,X2,X3
          BX0    X5 
          SA1    A5+B1
          SA2    A1+B1
          SA3    A2+B1
          SA4    A3+B1             RESTORE B2,B3,B7 
          SB7    X4 
          AX4    18 
          SB3    X4 
          AX4    18 
          SB2    X4 
          SA4    A4+B1             RESTORE B5 
          SB5    X4 
 XSWWRD   RJ     AONEWRD
          EQ          AONEWRD 
 SAV      SPACE  4
**        SAVWD - SAVE RELOCATION BYTES FOR ASSEMBLY LIST.
*         ENTRY  (X0) = INSTRUCTION.
*                (X3) = K PORTION OF INSTRUCTION. 
*         USES   A - 5, 6.
*                X - 5, 6.
  
  
 XSWSV    RJ     SAVWD             WORD SWITCH WITH BASCOMP FOR ASSEMBLY
 SAVWD    PS
          MX7    42 
          BX3    -X7*X3            CLEAR POSSIBLE SIGN
          SA5    =XPARCEL          PARCEL OF WORD FOR INSTRUCTION 
          BX7    X7*X0             CLEAR K FIELD
          IX7    X7+X3             PACK NEW K FIELD 
          SA7    X5+ARELU          SAVE RELOCATION
          EQ     XSWSV
 DLB      SPACE  4
**        DLB - DEFINE LABEL VALUES.
*         HOLD LABEL DEFINITIONS FOR ASSEMBLY LIST. 
*         ENTRY  (X5) = LABEL DEFINITION. 
*         USES   A - 4, 6.
*                X - 4, 6.
  
  
 XLABDEF  RJ     DLB               WORD SWITCH WITH CODE IN BASCOMP 
 DLB      PS
          SA4    LABDEF 
          ZR     X4,DLB1           IF NO PREVIOUS LABEL 
          SA4    A4-B1
          ZR     X4,DLB1           IF NOT DEFINED 
          SA4    A4-B1
 DLB1     BX6    X5                DEFINE LABEL 
          SA6    A4 
          EQ     XLABDEF
 SAVLAB   SPACE  4
**        SAVLAB - SAVE LABEL USAGE FOR ASSEMBLY LIST.
*         ENTRY  (X5) = LABEL USED. 
*         USES   A - 4, 6.
*                X - 4, 6.
  
  
 XSWLAB   RJ     SAVLAB            WORD SWITCH WITH BASCOMP 
 SAVLAB   PS
          SA4    =XPARCEL          PARCEL COUNTER 
          BX6    X5 
          SA6    X4+ALABU 
          EQ     XSWLAB 
* 
* 
 DC7BLNK  DATA   55555555555555000000B   DISPLAY CODE 7 BLANKS
 AUPPERM  DATA   10H -
 ANTIFLG  VFD    60/FALSE 
 SAVEX0   BSS    6
          BSSZ   2                 EXTRA LABELS 
 LABDEF   DATA   0
 ALABU    BSSZ   4
          EJECT 
* 
*   OPLIST1 - OPCODE TABLE
*         GENERAL FORMAT. 
*         VFD   D18/OPCODE,A18/OPLIST2-INDEX,N6/15-30BITFLAG,A18/ADRACT 
* 
 OPLIST1  EQU       *+1-$/59
 +        VFD    18/0HPS0,18/OPX01,6/1,18/ADRACT1    00 
 +        VFD    18/0HRJ0,18/OPX01,6/1,18/ADRACT1    01 
 +        VFD    18/0HJP0,18/OPX91,6/1,18/ADACT91    02 
 +        VFD    18/-01,18/OPX92,6/1,18/ADRACT9    03X
 +        VFD    18/0HEQ0,18/OPX03,6/1,18/ADRACT3    04 
 +        VFD    18/0HNE0,18/OPX03,6/1,18/ADRACT3    05 
 +        VFD    18/0HGE0,18/OPX03,6/1,18/ADRACT3    06 
 +        VFD    18/0HLT0,18/OPX03,6/1,18/ADRACT3    07 
 +        VFD    18/0HBX0,18/OPX04,6/0,18/ADRACT4    10 
 +        VFD    18/0HBX0,18/OPX51,6/0,18/ADRACT5    11 
 +        VFD    18/0HBX0,18/OPX52,6/0,18/ADRACT5    12 
 +        VFD    18/0HBX0,18/OPX53,6/0,18/ADRACT5    13 
 +        VFD    18/0HBX0,18/OPX81,6/0,18/ADRACT8    14 
 +        VFD    18/0HBX0,18/OX101,6/0,18/ADRAC10    15 
 +        VFD    18/0HBX0,18/OX102,6/0,18/ADRAC10    16 
 +        VFD    18/0HBX0,18/OX103,6/0,18/ADRAC10    17 
 +        VFD    18/0HLX0,18/OPX06,6/0,18/ADRACT6    20 
 +        VFD    18/0HAX0,18/OPX06,6/0,18/ADRACT6    21 
 +        VFD    18/0HLX0,18/OPX54,6/0,18/ADRACT5    22 
 +        VFD    18/0HAX0,18/OPX54,6/0,18/ADRACT5    23 
 +        VFD    18/0HNX0,18/OPX54,6/0,18/ADRACT5    24 
 +        VFD    18/0HZX0,18/OPX54,6/0,18/ADRACT5    25 
 +        VFD    18/0HUX0,18/OPX54,6/0,18/ADRACT5    26 
 +        VFD    18/0HPX0,18/OPX54,6/0,18/ADRACT5    27 
 +        VFD    18/0HFX0,18/OPX52,6/0,18/ADRACT5    30 
 +        VFD    18/0HFX0,18/OPX53,6/0,18/ADRACT5    31 
 +        VFD    18/0HDX0,18/OPX52,6/0,18/ADRACT5    32 
 +        VFD    18/0HDX0,18/OPX53,6/0,18/ADRACT5    33 
 +        VFD    18/0HRX0,18/OPX52,6/0,18/ADRACT5    34 
 +        VFD    18/0HRX0,18/OPX53,6/0,18/ADRACT5    35 
 +        VFD    18/0HIX0,18/OPX52,6/0,18/ADRACT5    36 
 +        VFD    18/0HIX0,18/OPX53,6/0,18/ADRACT5    37 
 +        VFD    18/0HFX0,18/OPX51,6/0,18/ADRACT5    40 
 +        VFD    18/0HRX0,18/OPX51,6/0,18/ADRACT5    41 
 +        VFD    18/0HDX0,18/OPX51,6/0,18/ADRACT5    42 
 +        VFD    18/0HMX0,18/OPX06,6/0,18/ADRACT6    43 
 +        VFD    18/0HFX0,18/OPX55,6/0,18/ADRACT5    44 
 +        VFD    18/0HRX0,18/OPX55,6/0,18/ADRACT5    45 
 +        VFD    18/0HNO0,18/OPX07,6/0,18/ADRACT7    46 
 +        VFD    18/0HCX0,18/OPX82,6/0,18/ADRACT8    47 
 +        VFD    18/0HSA0,18/OPX21,6/1,18/ADRACT2    50 
 +        VFD    18/0HSA0,18/OPX22,6/1,18/ADRACT2    51 
 +        VFD    18/0HSA0,18/OPX23,6/1,18/ADRACT2    52 
 +        VFD    18/0HSA0,18/OPX56,6/0,18/ADRACT5    53 
 +        VFD    18/0HSA0,18/OPX57,6/0,18/ADRACT5    54 
 +        VFD    18/0HSA0,18/OPX58,6/0,18/ADRACT5    55 
 +        VFD    18/0HSA0,18/OPX59,6/0,18/ADRACT5    56 
 +        VFD    18/0HSA0,18/OPX50,6/0,18/ADRACT5    57 
 +        VFD    18/0HSB0,18/OPX21,6/1,18/ADRACT2    60 
 +        VFD    18/0HSB0,18/OPX22,6/1,18/ADRACT2    61 
 +        VFD    18/0HSB0,18/OPX23,6/1,18/ADRACT2    62 
 +        VFD    18/0HSB0,18/OPX56,6/0,18/ADRACT5    63 
 +        VFD    18/0HSB0,18/OPX57,6/0,18/ADRACT5    64 
 +        VFD    18/0HSB0,18/OPX58,6/0,18/ADRACT5    65 
 +        VFD    18/0HSB0,18/OPX59,6/0,18/ADRACT5    66 
 +        VFD    18/0HSB0,18/OPX50,6/0,18/ADRACT5    67 
 +        VFD    18/0HSX0,18/OPX21,6/1,18/ADRACT2    70 
 +        VFD    18/0HSX0,18/OPX22,6/1,18/ADRACT2    71 
 +        VFD    18/0HSX0,18/OPX23,6/1,18/ADRACT2    72 
 +        VFD    18/0HSX0,18/OPX56,6/0,18/ADRACT5    73 
 +        VFD    18/0HSX0,18/OPX57,6/0,18/ADRACT5    74 
 +        VFD    18/0HSX0,18/OPX58,6/0,18/ADRACT5    75 
 +        VFD    18/0HSX0,18/OPX59,6/0,18/ADRACT5    76 
 +        VFD    18/0HSX0,18/OPX50,6/0,18/ADRACT5    77 
* 
*   OPLIST3 - AUXILIARY OPLIST1-TABLE USED BY 03X-OPERATIONS
*             SAME FORMAT AS OPLIST1
* 
 OPLIST3  EQU       *+1-$/59
 +        VFD    18/0HZR0,18/OPX92,6/1,18/ADRACT9    030
 +        VFD    18/0HNZ0,18/OPX92,6/1,18/ADRACT9    031
 +        VFD    18/0HPL0,18/OPX92,6/1,18/ADRACT9    032
 +        VFD    18/0HNG0,18/OPX92,6/1,18/ADRACT9    033
 +        VFD    18/0HIR0,18/OPX92,6/1,18/ADRACT9    034
 +        VFD    18/0HOR0,18/OPX92,6/1,18/ADRACT9    035
 +        VFD    18/0HDF0,18/OPX92,6/1,18/ADRACT9    036
 +        VFD    18/0HID0,18/OPX92,6/1,18/ADRACT9    037
* 
* 
*   OPLIST2  -   HOLDS FIEDS FOR GENERATION OF ADDRESS
*                EXPRESSIONS IN ASSEMBLY LISTING
* 
 OPLIST2  EQU       *+1-$/59
 OPTYP1   DATA   10H                  OPCODE 00,01
 OPTYP21  DATA   10H       A0+        OPCODE 50,60,70 
 OPTYP22  DATA   10H       B0+        OPCODE 51,61,71 
 OPTYP23  DATA   10H       X0+        OPCODE 52,62,72 
 OPTYP3   DATA   10H    B0,B0,        OPCODE 04,05,06,07
 OPTYP4   DATA   10H    X0            OPCODE 10 
 OPTYP51  DATA   10H    X0*X0         OPCODE 11,40,41,42
 OPTYP52  DATA   10H    X0+X0         OPCODE 12,30,32,34,36 
 OPTYP53  DATA   10H    X0-X0         OPCODE 13,31,33,35,37 
 OPTYP54  DATA   10H    B0,X0         OPCODE 22,23,24,25,26,27
 OPTYP55  DATA   10H    X0/X0         OPCODE 44,45
 OPTYP56  DATA   10H    X0+B0         OPCODE 53,63,73 
 OPTYP57  DATA   10H    A0+B0         OPCODE 54,64,74 
 OPTYP58  DATA   10H    A0-B0         OPCODE 55,65,75 
 OPTYP59  DATA   10H    B0+B0         OPCODE 56,66,76 
 OPTYP50  DATA   10H    B0-B0         OPCODE 57,67,77 
 OPTYP6   DATA   10H    00B           OPCODE 20,21,43 
 OPTYP7   EQU    OPTYP1            OPCODE 46
 OPTYP81  DATA   10H   -X0            OPCODE 14 
 OPTYP82  EQU    OPTYP4            OPCODE 47
 OPTYP91  EQU    OPTYP22           OPCODE 02
 OPTYP92  DATA   10H       X0,        OPCODE 03X
 OTYP101  DATA   10H   -X0*X0         OPCODE 15 
 OTYP102  DATA   10H   -X0+X0         OPCODE 16 
 OTYP103  DATA   10H   -X0-X0         OPCODE 17 
* 
* 
*   EQU-TABLE FOR DIFINITION OF OPLIST2-INDICES (OPX S) 
* 
 OPX01    EQU    OPTYP1-OPLIST2 
 OPX21    EQU    OPTYP21-OPLIST2
 OPX22    EQU    OPTYP22-OPLIST2
 OPX23    EQU    OPTYP23-OPLIST2
 OPX03    EQU    OPTYP3-OPLIST2 
 OPX04    EQU    OPTYP4-OPLIST2 
 OPX51    EQU    OPTYP51-OPLIST2
 OPX52    EQU    OPTYP52-OPLIST2
 OPX53    EQU    OPTYP53-OPLIST2
 OPX54    EQU    OPTYP54-OPLIST2
 OPX55    EQU    OPTYP55-OPLIST2
 OPX56    EQU    OPTYP56-OPLIST2
 OPX57    EQU    OPTYP57-OPLIST2
 OPX58    EQU    OPTYP58-OPLIST2
 OPX59    EQU    OPTYP59-OPLIST2
 OPX50    EQU    OPTYP50-OPLIST2
 OPX06    EQU    OPTYP6-OPLIST2 
 OPX07    EQU    OPTYP7-OPLIST2 
 OPX81    EQU    OPTYP81-OPLIST2
 OPX82    EQU    OPTYP82-OPLIST2
 OPX91    EQU    OPTYP91-OPLIST2
 OPX92    EQU    OPTYP92-OPLIST2
 OX101    EQU    OTYP101-OPLIST2
 OX102    EQU    OTYP102-OPLIST2
 OX103    EQU    OTYP103-OPLIST2
* 
* 
* 
 INST2    BSS       0 
* 
*                   START OF INSTRUCTION STACK IF ASSEMBLY LISTING OPTION 
*                    SPECIFIED AND NO TRACE OPTION
          TITLE     TRACE OPTION
* 
*         ROUTINE FOR LABEL-STATISTICS
* 
 LABELST  BSSZ      1 
          SA1    FTAB+LABS
          SB2       32                  UNTIL 
          SB3       X1                  B3 .= IDLASRT 
          SB7    B0 
 LABSTLP1 MX0       0                   COUNT .= 0
          SA1    B3+B7
          SB4       X1
          ZR        B4,LABSTPR          CHAIN EMPTY 
 LABSTLP2 SA1       B3+B4               GET NEXT ENTRY
          SX0       X0+B7               COUNT .= COUNT + 1
          SB4       X1                  B4 .= LINK
          NZ        B4,LABSTLP2 
 LABSTPR  RJ        PRNTBYT             PRINT COUNT 
 -        VFD       12/4000B,18/2 
 +        SB7    B7+B1
          GE     B2,B7,LABSTLP1 
          EQ        LABELST 
* 
*         END LABEL-STATISTICS
* 
          EJECT 
          EJECT 
* 
*         PROCEDURE PRINTBYTE 
* 
*         ALL REGISTERS ARE SAVED 
*         INPUT IN CALLING WORD 
*         RJ          PRNTBYT  30 BITS
*         CHARACTER-FLAG        1 BIT 
*         OUTPUT-FLAG           1 BIT 
*         FULL WORD PRINT       1 BIT                            ***ALG4
*         NOT USED              1 BIT 
*         ADDRESS-MODIFICATION  1 BIT 
*         EX  SA1 B7  SB7 B7+1  1 BIT 
*         NOT USED              3 BITS
*         REGISTER-NUMBER       3 BITS
*         COLUMN-NUMBER        18 BITS
* 
 PRNTBYT  DATA        0                 ENTRY 
          SA6         SAVRX6
          SA7         SAVRX7
          BX6         X4
          BX7         X5
          SA6         SAVRX4
          SA7         SAVRX5
          BX6         X2
          BX7         X3
          SA6         SAVRX2
          SA7         SAVRX3
          BX6         X0
          BX7         X1
          SA6         SAVRX0
          SA7         SAVRX1
          SX6         B6
          SX7         B7
          SA6         SAVRB6
          SA7         SAVRB7
          SX6         B4
          SX7         B5
          SA6         SAVRB4
          SA7         SAVRB5
          SX6         B2
          SX7         B3
          SA6         SAVRB2
          SA7         SAVRB3
          SX7         A0
          SA7         SAVRA0
          SA2         PRNTBYT 
          AX2         30
          SA3         X2-1              GET INPUT-INFORMATION 
         LX3       35 
          PL        X3,PRNTB0A          NO EXECUTE
          SA1         SAVRB7
          SA2         X1
          SX7         X1+1
          BX6         X2
          SA7         A1                UPDATE POINTER
          SA6         SAVRX1            FETCH NEXT BYTE 
 PRNTB0A  BSS         0 
          SA1       SLOPTION
          SB5         X1                SET CHANNEL 
          RJ          PAGECTR 
          SA1         BLANKXX          X1=BLANK 
          SA2         B5+FETIN          IN
          SA3         B5+FETLIMT        LIMIT 
          SA4         B5+FETFRST        FIRST 
          SX3       X3
          SX4       X4
          SB3    X2                BUFFER WORD
          BX6       X1
          SA6    B3 
          SB2         X3               B2 = LIMIT 
          SB3    B3+B1
          LT     B3,B2,PRNTB01
          SB3    X4 
 PRNTB01  SA2    PRNTBYT
          AX2         30
          SA3         X2-1             GET INPUT-INFORMATION
          SB5         18
          SB4         X3               B4 = COLUMN-NUMBER 
          AX0         X3,B5 
          SX3         17B 
          BX2         X3*X0            REGISTER - NUMBER
          LX0         48
          SA5         X2+SAVRX0        X5 = BYTE
          NG          X0,PRNTB02       IF NOT CHARACTER THEN BYPASS 
          PL   X5,PRNTB13          SKIP IF NOT ESCAPE CODE CHAR 
          BX5    -X5               GET 74XX OR 76XX 
          SX3    7B                MASK 
          SB5    4                 OCTAL DIGIT COUNT
          MX6    24 
          BX2    -X6*X1            BLANK PADDING WORD 
          SB6    6                 CHAR SIZE
          LX5    48                LEFT JUSTIFY 
          EQ   PRNTB05
 PRNTB13  BSS    0
          SB6         100B
          SB5         X5
          LT          B5,B6,PRNTB03    IF NOT SPECIAL CHAR. THEN BYPASS 
          SX3         7B
          MX6         18
          BX2         -X6*X1
          SB5         3 
          SB6         6 
          LX5         51
          JP          PRNTB05 
 PRNTB03  SX3         77B 
          BX6         -X3*X1
          IX2         X6+X5 
          JP          PRNTB04 
* 
 PRNTB02  LX0         4                 NOT CHARACTER 
          PL          X0,PRNTB21
          SX3    BASCOMP           USE FOR ADDRESS MODIFICATION.
          IX5         X5-X3             MODIFY ADDRESS
 PRNTB21  LX0         58
          NG          X0,PRNTBW1        FULL WORD PRINT 
          LX0         58
          SX3         7B
          MX6         36
          BX2         -X6*X1
          SB5         6                COUNT
          SB6         6                SHIFT PER CHARACTER
          LX5         42
 PRNTB05  SB5         B5-1
          LX5         3 
          BX7         X3*X5        GET NEXT DIGIT 
          SX6         X7+DISZERO       TO DISPLAY-CODE
          LX7         X2,B6 
          IX2         X7+X6            ADD IT TO OUTWORD
          LT          B0,B5,PRNTB05 
* 
 PRNTB04  EQU       *+1-$/59
 +        SB5         B4+2
          BX6         X1
 PRNTB06  GE          B0,B5,PRNTB07 
          SB5         B5-1
          SA6    B3                FILL WITH BLANK
          SB3    B3+B1             INCREASE POINTER 
          LT     B3,B2,PRNTB06
          SB3    X4                RESET BUFFER POINTER 
          EQ          B0,B0,PRNTB06 
 PRNTB07  BX6         X2
          LX0         1 
          PL          X0,PRNTB71
          SX3         77B 
          LX3         36
          BX6         -X3*X6
          SX3         DISATRK 
          LX3         36
          IX6         X6+X3 
 PRNTB71  LX0         59
          SA6    B3 
          SB3    B3+B1             COUNT BUFFER POINTER 
          LT     B3,B2,PRNTB08
          SB3    X4                RESET BUFFER POINTER 
 PRNTB08  LX0         1 
          PL          X0,PRNTB09       NO PASS-OUTPUT 
          SX0         0                DEFINE FOR JUMP NEXT TIME
          SB6         7 
          SB5         B6-B4            RESET FOR OUT-OF-PASS-COLUMN 
          BX6         X1
          EQ          B0,B0,PRNTB06 
 PRNTB09  BSS         0 
 PRNTB10  BSS         0 
          SX6         B0
          SA6    B3 
          SB3    B3+B1             COUNT
          LT     B3,B2,PRNTB11     CHECK LIMIT
          SB3    X4                RESET BUFFER POINTER 
 PRNTB11  BSS         0 
          SA1       SLOPTION
          SX6    B3 
          SB5         X1
          SA6         B5+FETIN          UPDATE IN 
          RJ          BASOCHK 
          SA2         SAVRB2
          SA3         SAVRB3
          SA4         SAVRB4
          SB2         X2
          SB3         X3
          SB4         X4
          SA1         SAVRB5
          SA2         SAVRB6
          SA3         SAVRB7
          SA4         SAVRA0
          SB5         X1
          SB6         X2
          SB7         X3
          SA0         X4
          SA1         SAVRX6
          SA2         SAVRX7
          SA3         SAVRX0
          SA4         SAVRX4
          SA5         SAVRX5
          BX6         X1
          BX7         X2
          BX0         X3
          SA1         SAVRX1
          SA2         SAVRX2
          SA3         SAVRX3
* 
          JP          PRNTBYT 
 PRNTBW1  BX1    X5                                              ***ALG4
          SB6    B3                ACTUAL 
          SB5    B2                B5 = LIMIT                    ***ALG4
          RJ     OCTCNVT                                         ***ALG4
          SA1    BLANKXX                                         ***ALG4
          SB4    B4+1              B4 = WORD POSITION            ***ALG4
          BX5    X6                                              ***ALG4
          BX6    X1                                              ***ALG4
 PRNTBW2  NG     B4,PRNTBW3                                      ***ALG4
          SB4    B4-1                                            ***ALG4
          SA6    B6                BLANK FILL                    ***ALG4
          SB6    B6+1                                            ***ALG4
          LT     B6,B5,PRNTBW2                                   ***ALG4
          SB6    X4                B6 =  FIRST                   ***ALG4
          JP     PRNTBW2                                         ***ALG4
 PRNTBW3  BX6    X5                                              ***ALG4
          SA6    B6                SET 1.WORD                    ***ALG4
          SB6    B6+1                                            ***ALG4
          LT     B6,B5,PRNTBW4                                   ***ALG4
          SB6    X4                                              ***ALG4
 PRNTBW4  SA7    B6                SET  2.WORD                   ***ALG4
          SB2    B5                     RESET LIMIT 
          SB3    B6+B1             FIRST FREE WORD
          LT     B3,B5,PRNTBW5
          SB3    X4                RESET BUFFER POINTER 
 PRNTBW5  BSS         0 
          JP     PRNTB10           GO PRINT LINE                 ***ALG4
          EJECT 
* 
*         SAVING REGISTERS FOR PRINTBYTE
* 
 SAVRX0   DATA        0 
 SAVRX1   DATA        0 
 SAVRX2   DATA        0 
 SAVRX3   DATA        0 
 SAVRX4   DATA        0 
 SAVRX5   DATA        0 
 SAVRX6   DATA        0 
 SAVRX7   DATA        0 
 SAVRB2   DATA        0 
 SAVRB3   DATA        0 
 SAVRB4   DATA        0 
 SAVRB5   DATA        0 
 SAVRB6   DATA        0 
 SAVRB7   DATA        0 
 SAVRA0   DATA        0 
* 
 INST3    BSS       0 
* 
*                   START OF INSTRUCTION STACK IF TRACE OPTION IS SPECIFIED 
          EJECT 
* 
*        MAIN CONTROL OF OPTIONS ROUTINE
*         ( EXECUTED BEFORE COMPILATION, CALLED ONLY IF 
*           SPECIAL OPTIONS REQUESTED ) 
* 
* 
* 
 SETOPT   MACRO  OPT,EXIT 
          SA3       OPT 
          ZR        X3,EXIT             NOT SELECTED
          SA1    FET.PTR
          BX6    X1 
          SA6    A3          SET OPTION 
         BX7       X3 
          SA7       X6                  SET FILE-NAME 
          ENDM
* 
* 
          PURGMAC SETFET
 SETFET   MACRO  OPT,BUF,LIMIT
          SA2    OPT
          SX6       BUF 
          SX7       LIMIT 
          SA6       X2+FETFRST          SET UP FET
          SA7       X2+FETLIMT
          SA6       X2+FETIN
          SA6       X2+FETOUT 
          ENDM
* 
* 
* 
* 
**        USES *CLOCK* AND *DATE* SYSTEM MACROS.
 BASOPTS  SA1    TROPTION 
          SX6    INST3
          NZ     X1,OPTS     NO TROPTION
          SA1    OLOPTION 
          SX6    INST2
          NZ     X1,OPTS
          SA1    XOPTION
          SX6    INST1
          NZ     X1,OPTS
          SX6    INST0
          SA1    LOPTION
          SA2    EOPTION
          MX3    42 
          BX1    X1-X2
          BX1    X3*X1
          NZ     X1,OPTS
          SX7    ERRFET      EFILE .EQ. LFILE 
          SX6    INST 
          SA7    FET.PTR     THEREFORE USE EFILE FET
 OPTS     BSS    0
        SA1   =XBENDRT        FETCH END ADDRESS OF RUN TIME RTNS
        IX2   X6-X1 
        PL    X2,OPTA         BR, RUN TIME RTNS < COMPILER
        SX6   X1+1            ADJUST LM FOR RUN TIME RTNS 
 OPTA   BSS   0 
          SA6    LM 
* 
          CLOCK  PATIME            SET PAGE HEADERS (NO RECALL) 
          DATE   PADATE 
          SA1    IOPTION           GET INPUT FILE NAME                  000540
          MX6    42                AND USE IT FOR PROGRAM ID            000550
          BX6    X1*X6                                                  000560
          SA4    INPFILE           IF INPUT FILE NAME IS *INPUT*        000570
          IX4    X4-X6                FORCE NAME *BASICXX*              000580
          ZR     X4,PGMID03              FOR PGM ID                     000590
          SA6    IDENTIF
          MX1    6                 BLANK PAD NAME TO 7 CHARS            000600
          LX1    24                   FOR LOADER                        000610
PGMID02   BSS    0                                                      000620
          BX4    X6*X1             BLANK PAD OVER TRAILING ZEROS        000630
          NZ     X4,PGMID01        FINISHED  IF NONZERO                 000640
          SA4       DC7BLNK 
          BX4    X4*X1             PAD A BLANK                          000660
          BX6    X6+X4                                                  000670
          LX1    6                 NEXT BYTE                            000680
          EQ     PGMID02                                                000690
 INPFILE  DATA   L*INPUT*                                               000710
 BIFILE   DATA   L*ZZZZZDC* 
 PGMID03  BSS    0                                                      000720
         SA1       PREIDNT              SET PROGRAM ID
         BX6       X1 
*                                                                       000750
         SA6       IDENTIF
 PGMID01  BSS    0
          SA6    IDENT
         SA1       DC3BLNK
         BX6       X6+X1
         SA6       PALABEL              AND IN PAGE HEADER
          SA1       PADATE
          BX6       X1
          LX6    6
          SA6    =XPREFIX+2 
          SA1       PATIME
          BX6       X1
          LX6    6
          SA6       A6+B1 
          SETOPT XOPTION,CONCD00
          MX3    42 
          BX3    X3*X7
          BX6    X6+X3       XOPTION REQUIRES FILENAME
          SA6    XOPTION        FOR LOADING LATER ON
          SA5    STOWD
          BX6    X5 
          SA6    =XXSTOXT 
          SA5    OVERLAB
          BX6    X5                RESET TO SKIP LABEL RELOCATION 
          SA6    =XBDEFLLP
          SA5    XFULWRD
          SA4    XLABEL 
          BX6    X5 
          LX7    X4 
          SA6    =XFULLWRD
          SA7    =XLABEL0 
          SA5    =XLM 
          SX7    X5+BUFFLGT+1 
          SA7    A5                RESET BASE OF MEMORY 
          SETFET BINFILAD,X5,X7 
 CONCD00  BSS    0
          SETOPT SLOPTION,CONCD01 
          SA1       WRITLNX 
          BX6       X1
          SA6       XWRITLN     SET WRITE-LINE SWITCH 
          SA1       PRTERX
          BX6       X1
          SA6       XPRT1       SET WRITE-LINE IF LIST-ALL SWITCH 
          SA1       NOOVERF 
          BX6       X1
          SA6       XREM        NO-OP REM NO LOPTION
 CONCD01  SETOPT OLOPTION,CONCD02 
 CONCD02  BSS       0 
          MX3       42
          SA1       LOPTION 
          SA2       EOPTION 
          BX1       X3*X1 
          BX2       X3*X2 
          BX1       X1-X2 
          NZ        X1,CONCD04
          SETOPT EOPTION,CONCD04
          MX3       42
          BX7       X3*X7 
          SA7       X6
          BX6       X6+X7    EOPTION REQUIRES FILENAME
          SA6       EOPTION 
 CONCD04  SA3    =XLM 
          SX7    X3+BUFFLGT+1 
          SA7    A3 
          SETFET FET.PTR,X3,X7
          SA1       PAGERRX 
          BX6       X1
          SA6       XPAGERR 
          SA6    XPGERR 
          SB5       X2
          SA4       LOPTION 
          ZR        X4,CONCD30          NO LOPTION
          SA1    B5+FETLIMT        BE SURE BUFFER IS IN FL               BAS0014
          SA2    UPPERTB                                                 BAS0014
          IX0    X2-X1             UPPERTB-BUFFLIMT                      BAS0014
          PL   X0,OPTS1            JUMP IF ENOUGH FL                     BAS0014
          BX0    -X0               INCREASE REQD                         BAS0014
          SX0    X0+100B           NEXT HIGHER MULT OF 100B              BAS0014
          AX0    6                                                       BAS0014
          LX0    6                                                       BAS0014
          RJ   MEMUP               INCREASE FL                           BAS0014
          ZR   X0,OPTS2            JUMP IF OBTAINED                      BAS0014
          MESSAGE FLERR1,0,R       *FL TOO SHORT FOR BASIC* 
          EQ   BASEXIT             ABORT                                 BAS0014
 OPTS2    SA1    FIELDLG           UPDATE UPPERTB                        BAS0014
          SX6    X1-1                                                    BAS0014
          SA6    UPPERTB                                                 BAS0014
          SX6    X6-3        RESET END OF TABLES ADDRESS. 
          SA2    =XTN              NUMBER OF TABLES + 1 
          SX2    X2-1              DECREMENT FOR NO. TABLES 
          SA6    X2+F.CODE         SET F.TEND 
          RJ     =XMTU             MOVE TABLES UP 
 OPTS1    BSS    0                                                       BAS0014
          SA1       B5+FETFRST
          MX2       1 
          LX2       19
          BX6       X1+X2 
          SA6       A1
          SA1       B5
          SX2       1 
          BX6       X1+X2 
          SA6       B5
          OPEN   B5,ALTERNR,R 
          SA1    B5          CLEAR STATUS BIT IN FET
          MX2    17 
          LX2    18 
          BX6    -X2*X1 
          SA6    B5 
          SA1    B5+FETFRST  GET DEVICE TYPE
          MX2    DEVTYPL
          BX1    X1*X2
          LX1    DEVTYPL
          SB6    X1 
          SB7    DEVTYP3
          NE     B6,B7,CONCD33
          SA1    B5+FETSTAT  IT IS A TERMINAL 
          MX6    1
          LX6    19 
          BX6    X6+X1       INTERACTIVE BIT
          SA6    A1 
          EQ     CONCD30
 CONCD33  BSS    0
          SA1    PDOPTION 
          ZR     X1,CONCD30  NO PD OPTION 
          BX6       X1
          SA1       B5+FETIN            OUTPUT PAPER DENSITY WORD 
          SA6       X1
          SX6       X1+1
          SA6       A1
CONCD30  BSS       0
          SA1       PRTERX
          BX6       X1
          SA6       XPRT2 
          SA1       UPPERTB 
          SA1    LOPTION
          SA2    EOPTION
          MX3    42 
          BX1    X1-X2
          BX1    X3*X1
          ZR     X1,CONCD40  EFILE .EQ. LFILE 
          SA1    =XLM 
          SX7    X1+KBUFLGT+1 
          SA7    A1 
          SETFET EOPTION,X1,X7
 CONCD40  SA1    =XLM 
          SX7    X1+INPLNGT+1 
          SA7    A1 
          SETFET IOPTION,X1,X7
         SA1       POSTPRX
          BX6       X1
          SA6       XPOSTPR             SET POSTPROCESSOR-SWITCH
          SA1    TROPTION 
          ZR        X1,BAS1020          NO T
          PL        X1,BAS1012          NO IN-CHARACTER 
          SA2       PRNTBT1 
          BX6       X2
          SA6       PRTBT10 
          SA6       PRTBT11 
          SA6       PRTBT12 
          SA6       PRTBT13 
          SA6       PRTBT14 
          SA6       PRTBT15 
          SA6       PRTBT16 
          SA6    PRTB10A
          SA6    PRTB10B
          SA6    PRTB10C
          SA6    PRTBT19
          SA2       PRNTBTX 
          BX6       X2
          SA6    PRTBT17
          SA6       PRTBT18 
 BAS1012  LX1       1 
          PL        X1,BAS1013          NO IN-SYMBOL
          SA2       PRNTBT2 
          BX6       X2
          SA6       PRTBT20 
 BAS1013  LX1       1 
          PL        X1,BAS1014          NO STACKING 
          SA2       PRNTBT3 
          BX6       X2
          SA6       PRTBT30 
          SA6    PRTBT3B           OPERAND ACTION 
 BAS1014  LX1       1 
          PL        X1,BAS1015          NO UNSTACKING 
          SA2       PRNTBT4 
          BX6       X2
          SA6       PRTBT40 
          SA6    PRTBT41
          SA6    PRTBT43
          SA6    PRTBT42
 BAS1015  LX1       1 
          PL        X1,BAS1016          NO INPUT-ACTION 
          SA2       PRNTBT5 
          BX6       X2
          SA6       PRTBT50 
 BAS1016  LX1       1 
          PL        X1,BAS1017          NO ANDSTACK-UNSTACKING
          SA2       PRNTBT6 
          BX6       X2
          SA6       PRTBT60 
          SA6       PRTBT61 
 BAS1017  LX1       1 
          PL        X1,BAS1018          NO INSTRUCTION-INPUT
          SA2       PRNTBT7 
          BX6       X2
          SA6       PRTBT70 
 BAS1018  LX1       1 
          PL     X1,BAS1020 
          SA2       PRNTBTY 
          BX6       X2
          SA6       PRTBTY0 
 BAS1020  BSS       0 
          SA4    DBFLG             CHECK FOR CID MODE 
          ZR     X4,BAS1021        BR, NOT IN CID MODE
          SA2    BASDEF            BUILD USER DEF RJ TO 
          BX6    X2                GENERATE SYMBOL TABLE FOR
          SA6    =XBASDEF.         LOCAL PARAMS 
 BAS1021  BSS    0
          SA5    OLOPTION          OBJECT LIST
          SA4    XOPTION           BINARY CODE
          BX6    X4+X5
          ZR     X6,OPTS3          IF NO OBJECT LIST OR BINARY FILE 
          EQ     MOVEXT            GO RELOCATE BSFUNTBL 
 FUNTBL   SPACE  4
**        FUNCTION NAME TABLE 
  
 EXTERN   MACRO  A,B,C
          DATA   0L_A 
          ENDM
 BSFUNTBL BSS    0
*CALL,COMBEXT 
          DATA   0LDBUG.LN      NAME FOR DEBUG BIN GENERATION 
 LFUNS    EQU    *-BSFUNTBL        SIZE OF NAMES TABLE
 PREIDNT  DATA        7LBASICXX 
 FLERR1   DATA   C*FL TOO SHORT FOR BASIC*                               BAS0014
 FET.PTR  VFD    60/LOPTFET 
* 
*         END MAIN CONTROL OVERLAY
* 
          END    BASOPTS
