ASMB,R,L,C        RTMGN 
      HED  RTMGN  RTM SYSTEM GENERATOR
      NAM RTMGN,3,90  92064-16022  REV.2026  800326 
**************************************************
* 
*  NAME:  RTM GENERATOR MAIN CONTROL
*  PROGRAMMER:  MIKE SCHOENDORF 
*  DATE OF ORIGINAL ISSUE:  OCTOBER 13, 1976
* 
*  SOURCE:        92064-18120 
*  RELOCATEABLE:  92064-16022 
**************************************************
A     EQU 0 
B     EQU 1 
***************** - HIGH CORE - ******************
*                                                *
*                    - IDENTS -                  *
*                                                *
**************************************************
*                 - FIXUP TABLES -               *
*                    ----------                  *
*                                                *
*                                                *
*                     -------                    *
*                     - LST -                    *
**************************************************
*                                                *
*                                                *
*           PROGRAM LOADING CONTROL              *
*                                                *
*                                                *
**************************************************
*                                                *
* 
*               I/O TABLE GENERATION             *
* 
*                                                *
**************************************************
*                                                *
*                                                *
*                  PARAMETER INPUT               *
*                                                *
*                                                *
**************************************************
* 
* 
* 
      SKP 
* 
* 
* 
* 
* 
*  RTMGN PROGRAM TABLE FORMAT (IDENTS)
* 
*  WORD 1:  IP1 - NAME  1,2 
*  WORD 2:  IP2 - NAME  3,4 
*  WORD 3:  IP3 - NAME  5,SC
* 
*          SC = 0  PROGRAM HAS BEEN LOADED
*             = XX (OCTAL) INT PRG
* 
* 
*  LST FORMAT 
* 
*  WORD 1: LST1 - NAME 1,2
*  WORD 2: LST2 - NAME 3,4
*  WORD 3: LST3 - NAME 5, ORDINAL 
*  WORD 4: LST4 - IDENT ADDRESS 
*  WORD 5: LST5 - BP LINK ADDRESS 
* 
* 
* 
*  ENTERNS AND EXTERNS
* 
* 
* 
      EXT ADDRS,ABRT1,BPAGA,BPLOC,CLBPL,CLFL2,CONSO,CRTIN 
      EXT DCB2,EKHOS,ENTPT,ERROR,EXEC6
      EXT FIXUP,FUT1,FUT4,FUTI,FUTS,KONSO 
      EXT IDCB1,INACT,LDGEN,LENGT,LGUNT 
      EXT LNKDR,LOCC,LST,LSTUL,LST1,LST4
      EXT LST5,MAPS,.MEM1,.MEM2 
      EXT .MEM3,.MEM4,.MEM5,.MEM6,OPT.3 
      EXT PLK,PLK4,PLKS,PRCMD,PRINT 
      EXT RDFL1,SSTBL,TIMES,TYPRO 
      EXT UEXFL,UNDEF,?XFER,ZPRIV,ZRENT 
* 
      ENT PNAME,PNAMA,PRAMS 
* 
* 
* 
* 
*    .MEM. TABLE DEFINITIONS
* 
*       .MEM1 = FWABP 
*       .MEM2 = LWABP 
*       .MEM3 = FWAM
*       .MEM4 = LWAM
*       .MEM5 = FWAC
*       .MEM6 = LWAC
* 
* 
* 
*  ERROR CODES
* 
*  AD: INVALID ENTRY POINT
*  CH: INVALID CHANNEL NUMBER 
*  DR: INVALID DRIVER NAME
*  DU: DUPLICATE PROGRAM NAME 
*  EQ: INVALID EQT. NO. IN INT. RECORD
*  IN: PARAMETER INTERVAL EXECUTION ERROR 
*  LU: INVALID DEVICE REFERENCE NUMBER
*  ON: INVALID ON PARAMETER 
*  NA: PARAMETER NAME ERROR 
*  PA: PARAMETER ERROR
*  PD: PARTITION ALREADY DEFINED
*  PR: PARAMETER PRIORITY ERROR 
*  PS: NOT ENOUGH MEMORY LEFT FOR PARTITION 
*  PT: PARTITION DEFINITION ERROR 
*  SO: SYSTEM OVERFLOW
*  TB: SYMBOL TABLE/ID SEGMENT OVERFLOW 
* 
* 
      SUP 
      SKP 
* 
*  THE SPACE SUBROUTINE IS USED TO SPACE UP THE TELEPRINTER.
* 
*  CALLING SEQUENCE:
*    A = IGNORED
*    B = IGNORED
*    JSB SPACE
* 
*  RETURN: CONTENTS OF A AND B ARE DESTROYED. 
* 
SPACE NOP 
      CLA 
      STA FTIME     CLEAR FIRST TIME THRU FLAG
      LDB ZBUFF     OUTPUT BLANK LINE 
      CLA,INA 
      JSB PRIN1 
      JMP SPACE,I   RETURN
* 
ZBUFF DEF *+1 
      ASC 1,* 
FTIME NOP           FIRST TIME THRU FLAG
      SKP 
* 
*  ROUTINE TO RESERVE AND SET CORE   ON THE 
*  LOADER PRODUCED ABSOLUTE OUTPUT. 
* 
*  CALLING SEQUENCE:
*    A = FINAL STARTING ADDRES
*    B = FINAL ENDING ADDRESS 
* 
*    SETAD = ADDRESS OF THE OUTPUT DATA BUFFER
* 
*    JSB SETCR
* 
*  RETURN: A AND B ARE DESTROYED
* 
SETCR NOP 
      STA TEMP1 
      CMA,INA 
      ADA ALBUF     BUFFER ADDRESS
      STA PLKS      OFFSET ADDRESS
      LDA TEMP1     STARTING ADDRESS
      STA PLK4
      JSB PLK       OUTPUT ROUTINE IN THE LOADER
      JMP SETCR,I 
* 
ALBUF DEF LBUF
LBUF  BSS 64
* 
* 
*  SUBROUTINE TO DETERMINE IF ANSWER IS YES OR NO 
* 
MAYBE NOP 
      JSB READ      PRINT MESSAGE, GET REPLY
      LDA N2        GET FIRST TWO ASCII CHARACTERS
      JSB GETNA 
      CCB 
      CPA NO        NO? 
      CLB           YES 
      CPA YE        YES?
      CLB,INB       YES 
      SSB,RSS 
      ISZ MAYBE 
      SSB 
      JSB INERR     PARMETER ERROR
      JMP MAYBE,I 
* 
NO    ASC 1,NO
YE    ASC 1,YE
      SKP 
* 
* 
* 
*  THE BUFCL SUBROUTINE STUFFS A 64 WORD BUFFER WITH CALL+1 
* 
*  CALLING SEQUENCE:
*    A = IGNORED
*    B = ADDRESS OF BUFFER
*    JSB BUFCL
*    CALL+1 = DATA TO BE STUFFED
* 
*  RETURN: CONTENTS OF A AND B ARE DESTROYED. 
* 
BUFCL NOP 
      LDB ALBUF 
      LDA N64 
      STA WDCNT     SET BUFFER LENGTH = 64
      LDA BUFCL,I    GET STUFF DATA 
      STA B,I       CLEAR BUFFER WORD 
      INB 
      ISZ WDCNT     ALL WORDS CLEAR?
      JMP *-3       NO - CONTINUE CLEARING
      ISZ BUFCL 
      JMP BUFCL,I   RETURN
* 
N64   DEC -64 
WDCNT NOP           TEMPORARY WORD COUNTER
      SPC 5 
* 
*  SUBROUTINE TO CLEAR THE OUTPUT BUFFER
* 
BUFC  NOP 
      JSB BUFCL 
      OCT 0 
      JMP BUFC,I
      SKP 
* 
*  ROUTINE TO COMPARE TWO NAME BUFFERS
* 
* 
*  CALLING SEQUENCE:
*    A = ADDRESS OF SOURCE NAME- 3 ENTRIES
*    B = ADDRESS OF TABLE 3 ENTRIES 
*    JSB NACMP
* 
*  RETURN: A AND B ARE DESTROYED
*    (N+1) NAMES DO NOT COMPARE 
*    (N+2) NAMES COMPARE
* 
NACMP NOP 
      STA TEMP1     SAVE SOURCE ADDRESS 
      STB TEMP2     SAVE TABLE ADDRESS
      LDA N2        LOOP COUNT
      STA TEMP3 
NACM1 LDA TEMP1,I   SOURCE ENTRY
      CPA TEMP2,I   TABLE COMPARE 
      RSS           YES,COMPARE, LOOK NEXT
      JMP NACMP,I   NO IT DOESN'T RETURN
      ISZ TEMP1     BUMP SOURCE 
      ISZ TEMP2     BUMP TABLE
      ISZ TEMP3 
      JMP NACM1     TRY AGAIN 
      LDA TEMP2,I   FIRST TWO COMPARE, LOOK LAST
      AND M400      LOOK UPPER ONLY 
      STA B 
      LDA TEMP1,I 
      AND M400
      CPA B 
      ISZ NACMP     BUMP RETURN FOR COMPARE!
      JMP NACMP,I 
* 
M400  OCT -400
TEMP1 NOP 
TEMP2 NOP 
TEMP3 NOP 
LWAM  NOP 
* 
* 
      HED ** SYSTEM BASE PAGE COMMUNICATION AREA ** 
*** SYSTEM BASE PAGE  COMMUNICATION  AREA *** 
* 
* 
* SYSTEM TABLE DEFINITION * 
* 
.     EQU 1650B 
XI    DEF .-1       ADDRESS OF INDEX REGISTER SAVE AREA 
EQTA  DEF .+0       FWA  OF  EQUIPMENT TABLE
INTLG DEF .+5       # OF INTERRUPT TABLE ENTRIES
KEYWD DEF .+7       FWA  OF  KEYWORD BLOCK
TBG   DEF .+20      I/O ADDRESS OF TIME-BASE CARD 
SYSTY DEF .+21      EQT ENTRY ADDRESS OF SESSION CONSOLE
* 
* DEFINITION OF SYSTEM LISTS (QUEUES) * 
* 
SKEDD DEF .+33      'SCHEDULE' LIST,
* 
* DEFINITION OF MEMORY ALLOCATION BASES * 
* 
DUMMY DEF .+55      I/O ADDRESS OF DUMMY INT. CARD
BPA1  DEF .+58      FWA USER BP LINK AREA 
LBORG DEF .+61      FWA OF RESIDENT LIBRARY AREA
RTORG DEF .+62      FWA OF REAL-TIME COMMON 
RTCOM DEF .+63      LENGTH OF REAL TIME COMMON AREA 
AVMEM DEF .+65      LWA+1 MEMORY REAL TIME PARTITION
BGORG DEF .+66      FWA OF BACKGROUND COMMON
* 
* UTILITY PARAMETERS
* 
BGLWA DEF .+87      LWA MEMORY BACKGROUND PARTITION 
BPCLR DEF .+43
      HED RTMGN  INITIALIZATION 
* 
*  INITIAL TRANSFER IS MADE TO RTMGN BY INPUTTING 
*  "ON,RTMGN,FI,LE,NM,E", WHERE "FILENM" IS THE INPUT 
*  FILE NAME.  IF NO FILE NAME, THE FIRST PARAMETER IS
*  THE LU OF THE INPUT. NO PARAMETERS 2 AND 3.  PARA- 
*  METER 4 IS THE ERROR LOG DEVICE LU.
* 
* 
*  THE FOLLOWING MESSAGES ARE PRINTED DURING THE INITIALIZATION 
*  PHASE, WITH THE SPECIFICATIONS FOR EACH VALID RESONSE. 
* 
* 
*  MESSAGE                RESPONSE
* 
*  DEFINE OUTPUT DEVICES  ENTER DEVICE LU, OR FILE NAME 
*                         FOR OUTPUT AND ECHO 
* 
*  TYPE OF SYSTEM?        ENTER 1 OCTAL DIGIT 
* 
*  TBG CHNL?              ENTER 2 OCTAL DIGITS
* 
*  PRIV. INT?             ENTER 2 OCTAL DIGITS
* 
*  MEM SIZE?              ENTER UP TO 3 DECIMAL DIGITS
* 
*  LWAM?                  ENTER UP TO 5 OCTAL DIGITS
* 
*  PRIV. DRIV. ACC. COM?  ENTER YES OR NO 
* 
*  FWA BP?                ENTER UP TO 4 OCTAL DIGITS
* 
* 
* 
RTMGN CLA           GENERATOR CALLING 
      STA KONSO 
      STA LDGEN 
      JSB LGUNT     GET LOGICAL UNIT NUMBERS
      LDA OPT.3 
      STA LWAM
      CCA           SET LINK DIRECTION FLAG 
      STA LNKDR     TO SYSTEM LINKS 
      LDA P7
      LDB MES01     RTMGN 
      JSB PRIN2     PRINT MESSAGE 
* 
*  DEFINE OUTPUT DEVICES
* 
      JSB SPACE     NEW LINE
OTPUT JSB INTER     INTERACTIVE INPUT 
      LDA P23 
      LDB MES31     DEFINE OUTPUT DEVICES 
      JSB PRIN1 
      JSB PRCMD     CALL LOADER SUBCONTROL
      JMP OTPUT     ERROR, REPEAT INPUT 
* 
*  SET TYPE OF SYSTEM 
* 
      JSB SPACE     NEW LINE
TPSYS JSB INTER     INTERACTIVE INPUT 
      LDA P17 
      LDB MES14     TYPE OF SYSTEM? 
      JSB READ      PRINT MESSAGE, GET REPLY
      CLA,INA       SET FOR 1 OCTAL DIGIT INPUT 
      JSB DOCON     GET DIGIT 
      JMP TPSYS     REPEAT INPUT
      STA SYSTM     SAVE SYSTEM TYPE
      SZA,RSS       MUST BE EITHER A 1, 2, OR 3 
      JMP ERRP1     INVALID PARAMETER 
      CMA,INA 
      ADA P3
      SSA,RSS 
      JMP TBG1      VALID PARAMETER 
ERRP1 JSB INERR     ERROR 
      JMP TPSYS     REPEAT INPUT
* 
*  SET TIME BASE GENERATOR CHANNEL
* 
TBG1  JSB SPACE     NEW LINE
CHNLT JSB INTER     INTERACTIVE INPUT 
      LDA P11 
      LDB MES30     TBG CHNL? 
      JSB READ      PRINT MESSAGE, GET REPLY
      LDA P2        SET FOR 2 OCTAL DIGITS INPUT
      JSB DOCON     GET DIGITS, RETURN OCTAL
      JMP CHNLT     REPEAT INPUT
      STA TBCHN     SET TBG CHANNEL NO. 
* 
*  GET PRIV. INT. CARD ADDR.
* 
      JSB SPACE     NEW LINE
DUMY  JSB INTER     INTERACTIVE INPUT 
      LDA P12 
      LDB MES41     PRIV. INT?
      JSB READ      PRINT MESSAGE, GET REPLY
      LDA P2        SET FOR 2 OCTAL DIGITS INPUT
      JSB DOCON     GET DIGITS
      JMP DUMY      ERROR, REPEAT INPUT 
      STA PIOC      SET ADDR. OF DUMMY CARD.
* 
*  DETERMINE IF PRIV. DRIVERS ACCESS COMMON 
* 
      LDA SYSTM     GET SYSTEM TYPE 
      CPA P3        RTE-M-III?
      RSS 
      JMP LWSAM     NO
      JSB SPACE     NEW LINE
PRCOM JSB INTER     INTERACTIVE INPUT 
      LDA P30 
      LDB MES15     PRIV. DRIVERS ACCESS COMMON?
      JSB MAYBE 
      JMP PRCOM     ERROR, REPEAT INPUT 
      STB PCOM      SAVE IF PRIV. DIRVERS ACCESS COMMON 
* 
*  SET MEMORY SIZE
* 
      JSB SPACE     NEW LINE
MEMSZ JSB INTER 
      LDA P11 
      LDB MES16     MEM SIZE? 
      JSB READ      PRINT MESSAGE, GET REPLY
      LDA N3        SET FOR 3 DECIMAL DIGITS INPUT
      JSB DOCON     GET DIGITS
      JMP MEMSZ     ERROR, REPEAT INPUT 
      STA MSIZE     SAVE MEMORY SIZE
      JMP FWENT-1 
* 
*  SET LAST WORD OF AVAILABLE MEMORY
* 
LWSAM JSB SPACE     NEW LINE
      JSB INTER     INTERACTIVE INPUT 
      LDA P7
      LDB MES24     LWAM? 
      JSB READ      PRINT MESSAGE, GET REPLY
      LDA P5        SET FOR 5 OCTAL DIGITS
      JSB DOCON     GET DIGITS
      JMP LWSAM+1   ERROR, REPEAT INPUT 
      CPA UDFE      =77777? 
      ADA N1        YES 
      STA .MEM4     LWAM
      STA LWSA1     LAST WORD SAM 
      SKP 
* 
*  SET FWABP LINKAGE
* 
      JSB SPACE     NEW LINE
FWENT JSB INTER     INTERACTIVE INPUT 
      LDA P9
      LDB MES27     FWA BP? 
      JSB READ      PRINT MESSAGE, GET REPLY
      LDA P4
      JSB DOCON     GET 4 OCTAL DIGITS, CONVERT 
      JMP FWENT     ERROR, REPEAT INPUT 
      STA .MEM1     SAVE FWA BP 
      SZA           VALID (NON-ZERO) FWA BP 
      SSA 
      JMP FWERR 
      ADA N8
      SSA 
      JMP FWERR 
      CMA,INA 
      ADA B1636 
      SSA,RSS 
      JMP FWEN1 
FWERR JSB INERR     INVALID PARAMETER  FWABP=0
      JMP FWENT     REPEAT FWABP LINKAGE INPUT
FWEN1 LDA .MEM1 
      ADA N1
      STA LWABP     SAVE FOR INT PROCESSOR
      JSB SPACE     NEW LINE
      JMP CLBUF 
      SKP 
* 
B1636 OCT 1636
N1    DEC -1
N3    DEC -3
P2    DEC 2 
P3    DEC 3 
P4    DEC 4 
P7    DEC 7 
P9    DEC 9 
P10   DEC 10
P17   DEC 17
P23   DEC 23
P32   DEC 32
* 
LWABP NOP 
LWSA1 NOP 
MSIZE NOP           MEMORY SIZE 
OCTNO NOP           OCTAL DIGIT 
PCOM  NOP           PRIV. DRIVERS ACCESS COMMON 
PIOC  NOP           ADDR. OF PRIV. I/O CARD 
SYSTM NOP           SYSTEM TYPE 
TBCHN NOP           TIME BASE GENERATOR CHANNEL 
* 
MES01 DEF *+1 
      ASC 4,* RTMGN 
MES14 DEF *+1 
      ASC 9,* TYPE OF SYSTEM? 
MES15 DEF *+1 
      ASC 15,* PRIV. DRIVERS ACCESS COMMON? 
MES16 DEF *+1 
      ASC 6,* MEM SIZE? 
MES24 DEF *+1 
      ASC 4,* LWAM? 
MES27 DEF *+1 
      ASC 5,* FWA BP? 
MES30 DEF *+1 
      ASC 6,* TBG CHNL? 
MES31 DEF *+1 
      ASC 12,* DEFINE OUTPUT DEVICES
MES41 DEF *+1 
      ASC 6,* PRIV. INT?
* 
* 
      SKP 
CLBUF JSB BUFC      CLEAR BUFFER TO OCTAL ZEROS 
      LDA XI        START ADDR OF AREA TO BE CLEARED
      LDB BPCLR     END ADDRESS 
      JSB SETCR     CLEAR LOWER HALF
      LDA BPCLR 
      LDB BGLWA 
      JSB SETCR     CLEAR UPPER HALF
* 
      LDA P1        .PRESET MEMORY PROTECT FLAG 
      LDB B1770     .  FOR FIRST INTERRUPT
      JSB STCR1 
* 
      LDA PIOC      PRIV INT CARD ADD 
      LDB DUMMY 
      JSB STCR1 
* 
* 
* 
      LDA SYSTM     RTE-M-I SYSTEM? 
      CPA P1
      JMP ENTRX     YES 
      LDB D$CLS     ADDRESS OF ENTRY
      JSB ENTPT     PUT IN LST
      LDA UDFE
      STA LST4,I    SET TO UNDEFINED
      ISZ UNDEF     DON'T OUTPUT AS UNDEF 
      LDB D$RNT     ADDRESS OF ENTRY
      JSB ENTPT     PU IN LST 
      LDA UDFE
      STA LST4,I    SET TO UNDEFINED
      ISZ UNDEF     DON'T OUTPUT AS UNDEF 
      SKP 
* 
*  CHANGE ENTRY POINTS
* 
ENTRX JSB SPACE     NEW LINE
ENTRY JSB INTER     INTERACTIVE INPUT 
      LDA P14 
      LDB MES17     CHANGE ENTS?
      JSB READ      PRINT MESSAGE, GET REPLY
      CLA 
      STA CHRCT 
      LDA N2
      JSB GETNA     GET FIRST 2 CHARACTERS
      CPA EN        END?
      JMP END?      YES,CHECK TO SEE IF NOT ENTRY 
ENTRI JSB GINIT     REINITIALIZE INPUT
      CCA 
      STA CMFLG 
ENTLN JSB GETAL     GET NEXT CHARACTER
      CPA BLANK     REACHED COMMA YET?
      JMP ENTFN     YES 
      ISZ CHRCT     CHARACTER COUNTER 
      JMP ENTLN 
ENTFN LDA N2        MOVE 2 CHARACTERS TO TBUF 
      JSB GETNA 
      CLB 
      CPA RP        MICROCODE REPLACEMENT?
      JMP RP1       YES 
      CPA AB        ABSOLUTE? 
      JMP AB1       YES 
ENTER JSB INERR     NEITHER MICROCODE RELACEMENT NOR ABSOLUTE 
      JMP ENTRY     ERROR, REPEAT INPUT 
RP1   INB 
AB1   ADB P3
      STB TBUF+4
      CCA 
      STA CMFLG 
      JSB GETAL     GET NEXT CHAR. IN RESPONSE
      CPA BLANK     REACHED COMMA YET?
      RSS 
      JMP ENTER     ERROR 
      LDA BBLNK     INITIALIZE TBUF 
      STA TBUF      WITH BLANKS 
      STA TBUF+1
      STA TBUF+2
      LDA P6        SET FOR 6 OCTAL DIGITS INPUT
      JSB DOCON     GET VALUE OF RP OR AB 
      JMP ENTRY     REPEAT INPUT
      STA TBUF+3
      JSB GINIT     BUFFER INITIALIZE 
      LDA CHRCT     GET NO. OF CHAR. IN ENTRY POINT 
      CMA,INA 
      JSB GETNA     PUT ENTRY POINT IN TBUF 
      LDA TBUF+2
      IOR TBUF+4
      STA TBUF+2
      LDB ATBUF     SET BUFFER FOR ENTRY CALL 
      JSB ENTPT     SET ENTRY POINT IN LST
      CLA 
      STA FTIME 
      JMP ENTRY     GET NEXT CHANGE 
END?  LDA N2
      JSB GETNA     GET NEXT 2 CHARACTERS 
      CPA D         D?
      RSS           YES, DONE 
      JMP ENTRI     NO, MUST BE ENTRY POINT 
      SKP 
* 
*  RELOCATE SYSTEM MODULES
* 
      LDA LST       SET LST TABLE TO PROPER # OF ENTRIES
      STA LSTSV 
      JSB SPACE     NEW LINE
      JSB INTER     INTERACTIVE INPUT 
      LDA P14 
      LDB MES02     REL SYS MODS
      JSB RELOC     RELOCATE SYSTEM MODULES 
      DEC 1         MODULE TYPE NEEDED
      JMP ABRT1     ERROR FROM LOADER, EXIT 
      LDA UNDEF     WERE THERE ANY UNDEFINED? 
      CMA,INA 
      ADA UEXFL 
      SZA,RSS 
      JMP REL1      NO CONTINUE 
RELSE LDA AD        YES 
      JSB ERRER     ERROR 
      JMP ABRT1     EXIT
REL1  LDB A$STR 
      JSB SSTBL     WAS $STRT LOADED? 
      JMP RELSE     NO, ERROR,
      LDA LST4,I    YES, GET STARTING ADDRESS 
      STA STRAD     SAVE IT FOR CLEAN-UP AT END OF RTMGN
      LDB A$CIC     $CIC NAME 
      JSB SSTBL     WAS $CIC LOADED?
      JMP RELSE     NO, ERROR, START OVER 
      LDA LST4,I    BUILD A BP LINK FOR $CIC
      LDB .MEM2                 FOR $CIC
      STB A$CIA     SAVE FOR JSB INSTRUCTION
      STB LST5,I
      JSB STCR1 
      CCA 
      ADA .MEM2     BUMP TO NEXT LINK 
      STA .MEM2 
      JMP TBGEN     YES, GO BUILD I/O TABLES
* 
* 
ERRER NOP 
      CLB 
      JSB ERROR     CALL ERROR SUBROUTINE 
      JMP ERRER,I 
      SKP 
* 
A$CIA NOP           ADDRESS OF $CIC ROUTINE 
A$CIC DEF *+1 
      ASC 3,$CIC
A$STR DEF *+1 
      ASC 3,$STRT 
ATBUF DEF TBUF
TBUF  BSS 5 
* 
MES02 DEF *+1 
      ASC 7,* REL SYS MODS
MES17 DEF *+1 
      ASC 7,* CHANGE ENTS?
* 
AB    ASC 1,AB
AD    ASC 1,AD      INVALID ENTRY POINT IN INT REC
D     ASC 1,D 
RP    ASC 1,RP
* 
P6    DEC 6 
P12   DEC 12
B1777 OCT 1777
B1770 OCT 1770
BBLNK OCT 20040 
UDFE  OCT 77777 
* 
BLANK EQU P32 
* 
CHRCT NOP 
CMFLG NOP           COMMA FLAG = -1/0 = NOT IN/IN 
LSTSV NOP           LST COUNT SAVE FOR REL UPDATE 
STRAD NOP           $STRT START ADDRESS 
* 
      SKP 
* 
*  THE DOCON SUBROUTINE ANALYZES THE INPUT FOR THE
*  CHANNEL NO., TBG CHANNEL NO., AND LAST 
*  WORD OF AVAILABLE MEMORY.
* 
*  CALLING SEQUENCE:
*    A = MAX NO. OF CHARACTERS PERMITTED IN RESPONSE. 
*        THE SIGN OF A DETERMINES THE CONVERSION FROM 
*        ASCII TO OCTAL (POS.) OR DECIMAL (NEG.). 
*    B = IGNORED
*    JSB DOCON
* 
*  RETURN:
*    (N+1): CONTENTS OF A AND B ARE DESTROYED.  AN INVALID
*           CHARACTER HAS BEEN DETECTED IN THE RESPONSE, OR 
*           THE RESPONSE CONTAINS AN INVALID NO. CHARACTERS.
*           THE MESSAGE IS TO BE REPEATED ON RETURN.
*    (N+2): A = CONVERTED RESULT
* 
DOCON NOP 
      JSB GETOC     GET OCTAL/DECIMAL, RETURN OCTAL 
      JMP *+4       INVALID DIGIT 
      JSB GETAL     GET NEXT CHAR FROM LBUF 
      CPA ZERO      CHAR = ZERO? (END OF BUFFER)
      JMP *+3       YES - CONTINUE
      JSB INERR     INVALID DIGIT ENTRY 
      JMP DOCON,I   RETURN
      ISZ DOCON     INCR RETURN ADDRESS 
      LDA OCTNO     GET CONVERTED NUMBER
      JMP DOCON,I   RETURN
* 
ZERO  DEC 0 
      SKP 
* 
*  SUBROUTINE TO RELOCATE ALL MODULES (SYSTEM AND USER PROGRAMS). 
* 
*  CALLING SEQUENCE:
* 
*    A = MESSAGE LENGTH 
*    B = MESSAGE ADDRESS
*    JSB RELOC
* 
*  RETURN:
*    (N+1): CONTENTS OF A AND B ARE DESTROYED. LOADER 
*           WAS NOT ABLE TO RELOCATE MODULE (ERROR EXIT). 
*    (N+2): CONTENTS OF A AND B DESTROYED. LOADER RELOCATION
*           WORKED. 
* 
* 
RELOC NOP 
      JSB PRIN1     PRINT MESSAGE 
      LDA P2
      STA ?XFER     NON-ZERO TO LOAD MODULES
      JSB CLBPL     CLEAR BASE PAGE LINKS 
      STA PNAME     CLEAR NAME FLAG 
      STA LOCC      CLEAR LOCC IN LOADER
      STA BPLOC     SAME FOR BPLOC
      STA OPT.3,I   CLEAR FIXUP TABLE LENGTH
      LDA LST,I     SAVE LST LENGTH 
      STA LSTCT 
      LDA LSTSV     RESTORE SYMBOL TABLE COUNT
      STA LST       IN THE LOADER 
      LDA RELOC,I   GET MODULE TYPE 
      STA TYPRO     SAVE FOR LOADER SUB CONTROL 
      SZA,RSS 
      STA ?XFER 
      ISZ RELOC     SET RETURN ADDRESS
      JSB PRCMD     GO RELOCATE MODULES 
      JMP RELOC,I   ERROR EXIT
      LDA .MEM2     SAVE LWABP
      STA BPFIX 
      LDB LNKDR     GET LINK DIRECTION FLAG 
      CPB P1        USER LINKS ?
      JMP REL02     YES 
      LDA LOCC      UPDATE FWAM 
      SZA,RSS 
      LDA .MEM3 
      STA .MEM3 
      LDA BPLOC     UPDATE FWABP
      SZA 
      STA .MEM2     SYSTEM LINKS, UPDATE LWABP
      LDA LST 
      STA LSTSV     SAVE FOR RELOCATION ERROR 
REL03 ISZ RELOC 
      JMP RELOC,I 
* 
REL02 LDA LSTCT     RESTORE LST LENGTH
      STA LST,I 
      JMP REL03 
* 
BPFIX NOP           LWABP TEMP STORE
LSTCT NOP           LST LENGTH
      SKP 
* 
*  SUBROUTINE TO RESERVE AND SET CORE 
* 
*  CALLING SEQUENCE:
*    A = DATA TO BE OUTPUT
*    B = ADDRESS OF DATA
*    JSB STCR1
* 
*  RETURN:
*    A = DATA WORD OUTPUTTED
* 
STCR1 NOP 
      STA LBUF      SAVE DATA TO BE OUTPUT
      LDA 1         SET A REG TO ADDRESS
      JSB SETCR     GO OUTPUT IT
      LDA LBUF      GET DATA
      JMP STCR1,I 
      SPC 5 
*  SUBROUTINE TO OUTPUT MESSAGE 
* 
PRIN2 NOP 
      JSB PRINT     GO OUTPUT MESSAGE 
      LDA LENGT 
      LDB ADDRS 
      JSB EKHOS     GO ECHO IF NEEDED 
      JMP PRIN2,I 
* 
* 
* SUBROUTINE TO OUTPUT MESSAGE ONLY IF ECHO, INTERACTIVE
* INPUT, OR SESSION CONSOLE NEEDED OR USED. 
* 
* 
PRIN1 NOP 
      STA LENGT     MESSAGE LENGTH
      LDA CONSO     OUTPUT TO SESSION CONSOLE?
      SZA 
      JMP PRINA     YES 
      LDA INACT     INTERACTIVE INPUT?
      SZA 
      JMP PRINA     YES 
      LDA READX     OUTPUT TO SESSION CONSOLE?
      SZA,RSS 
      JMP PRINB     NO, JUST ECHO IF NEEDED 
PRINA LDA LENGT 
      JSB PRINT     GO OUTPUT MESSAGE 
      LDB ADDRS 
PRINB LDA LENGT 
      JSB EKHOS     GO ECHO IF NEEDED 
      JMP PRIN1,I 
      SKP 
* 
*  THE INERR SUBROUTINE PRINTS THE DIAGNOSTIC FOR INVALID 
*  RESPONSES DURING THE INITIALIZATION SECTION. 
* 
*  CALLING SEQUENCE:
*    A = IGNORED
*    B = IGNORED
*    JSB INERR
* 
*  RETURN: CONTENTS OF A AND B ARE DESTROYED. 
* 
INERR NOP 
      LDA PA        SET INVALID DEVICE ERROR CODE 
      JSB ERRER     PRINT ERROR MESSAGE 
      JMP INERR,I   RETURN
* 
PA    ASC 1,PA      PARAMETER ERROR 
      SPC 5 
* 
P24   DEC 24
P27   DEC 27
* 
MES20 DEF *+1 
      ASC 10,* # OF I/O CLASSES?
MES21 DEF *+1 
      ASC 12,* # OF RESOURCE NUMBERS? 
MES22 DEF *+1 
      ASC 14,* BUFFER LIMITS (LOW,HIGH)?
D$CLS DEF $CLS
$CLS  ASC 3,$CLAS 
D$RNT DEF $RNTB 
$RNTB ASC 3,$RNTB 
* 
$BLLO ASC 3,$BLLO 
$BLHI ASC 3,$BLUP 
                                                                                                                                                                