ASMB,R,L,C
      HED SCGN1 91700-16139 REV.A 760317 * (C) HEWLETT-PACKARD CO. 1976 * 
      NAM SCGN1,5 91700-16139 REV.A 760317
      SPC 1 
******************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976.  ALL RIGHTS     *
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
******************************************************************
      SPC 2 
**************************************************
* 
*SCGN1              RTC GENERATOR SEGMENT 
* 
*SOURCE PART #      91700-18139 REV.A 
* 
*REL PART #         91700-16139 REV.A 
* 
*WRITTEN BY:        LARRY POMATTO 
* 
*DATE WRITTEN:      11-29-74
* 
*MODIFIED BY:       K.HAHN,  [ C.C.H. CLEAR EQTX BUFFER ] 
*                            [ J-P B. END OF IDSEG LIST ] 
* 
*DATE MODIFIED:      6-27-75   [02-16-76] 
*                              [03-17-76] 
* 
*************************************************** 
**************************************************
A     EQU 0 
B     EQU 1 
      SUP 
* 
*  THE TERM RTS/2100 IS SYNONYMOUS WITH RTE-C, AND
*  THE TERMS ARE USED INTERCHANGEABLY THROUGHOUT
*  THIS DOCUMENT. 
* 
* 
      SKP 
* 
* 
* 
* 
* 
*  RTSGN 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 LST,PLK,PLKS,?XFER,LSTI,LSTP
      EXT .MEM.,PRCMD 
      EXT UEXFL,SSTBL,.MEM3 
      EXT LST1,LST2,LST3,LST4,LST5
      EXT .MEM1,.MEM4 
      EXT .MEM2,.MEM5,.MEM6,NAMR.,LISTO 
      EXT PARSA 
      EXT PNAME,PNAMA 
      EXT EXEC,LOCC,BPLOC,PRINT 
      EXT PRMT,GTOUT,ABDCB
      EXT FCRET,WRITF,FCLOS,CLSFI 
      EXT FILCK,FERR,SWAPR,LSDCB,CMDLU
      EXT ENDLU,LOUT,INDCB
* 
* 
* 
.XFER EQU ?XFER 
* 
* 
*    .MEM. TABLE DEFINITIONS
* 
*       .MEM1 = FWABP 
*       .MEM2 = LWABP 
*       .MEM3 = FWAM
*       .MEM4 = LWAM
*       .MEM5 = FWAC
*       .MEM6 = LWAC
* 
* 
* 
*  ERROR CODES
* 
*  TB: SYMBOL TABLE/ID SEG OVERFLOW 
*  NA: PARAMETER NAME ERROR 
*  PA: PARAMETER ERROR
*  PR: PARAMETER PRIORITY ERROR 
*  IN: PARAMETER EXECUTION INTERVAL ERROR 
*  CH: INVALID CHANNEL NUMBER 
*  DR: INVALID DRIVER NAME
*  LU: INVALID DEVICE REFERENCE NUMBER
*  EQ: INVALID EQT. NO. IN INT RECORD 
*  AD: INVALID ENTRY POINT
*  DU: DUPLICATE PROGRAM NAME 
      SKP 
* 
* 
WDCNT BSS 1         TEMPORARY WORD COUNTER
BIDNT BSS 1         ADDR OF FIRST IDENT 
* 
MAXC  BSS 1         MAX CHAR COUNT
TCHAR BSS 1         TEMPORARY CHAR SAVE AREA
OCTNO BSS 1         OCTAL DIGIT 
PIOC  BSS 1         ADDR. OF PRIVILEGED I/O CARD  $$
TBCHN BSS 1         TIME BASE GENERATOR CHNL
* 
ID5   BSS 1         PRIORITY
ID6   BSS 1         RESOLUTION CODE 
ID7   BSS 1         EXECUTION MULTIPLE
ID8   BSS 1         HOURS 
ID9   BSS 1         MINUTES 
ID10  BSS 1         SECONDS 
ID11  BSS 1         TENS OF SECONDS 
* 
* 
CURAL BSS 1 
SETAD BSS 1         ABSOLUTE OUTPUT BUFFER ADDRESS
* 
      SPC 1 
TEMP1 BSS 1 
TEMP2 BSS 1 
TEMP3 BSS 1 
IPXSV BSS 1 
SRISV BSS 1 
IP1   BSS 1 
IP2   BSS 1 
IP3   BSS 1 
SYMAD BSS 1          FWASM
CURAT BSS 1         CURRENT TBUF ADDRESS
TCNT  BSS 1         CURRENT TBUF COUNT
TBUF  BSS 4         TEMPORARY BUFFER
PPREL BSS 1 
TBREL BSS 1 
* 
KEYAD BSS 1         ADDRESS OF KEY WORD TABLE 
KEYCN BSS 1         TOTAL KEYWORD COUNT 
* 
AEQT  BSS 1         ADDRESS OF EQUIPMENT TABLE
CEQT  BSS 1         NO. ENTRIES IN EQUIPMENT TABLE
* 
ASQT  BSS 1         ADDR OF DEVICE REFERENCE TABLE
CSQT  BSS 1         NO. ENTRIES IN DEV. REF. TABLE
* 
A$CIA BSS 1         ADDRESS OF $CIC ROUTINE 
PROCT BSS 1         NO. OF INT. ENTRIES 
STRAD BSS 1         $STRT START ADDRESS 
* 
* 
IDSAD BSS 1 
SYSAD BSS 1 
IDNOS BSS 1         ACTUAL ID'S FILLED
STRPN BSS 3         START UP PROG NAME
AINT  BSS 1         ADDRESS OF INTERRUPT TABLE
CINT  BSS 1         NO. ENTRIES IN INTERRUPT TABLE
* 
* 
* 
TEMPL BSS 1 
TEMPH BSS 1 
TEMPS BSS 1 
* 
PARNO BSS 1         PARAMETER RECORD LENGTH 
* 
IOADD BSS 1         I/O ADDR (CHANNEL NO.) IN EQT 
IODMA BSS 1         I/O DMA FLAG IN EQT 
IOBUF BSS 1         I/O BUFFERING FLAG IN EQT 
IOTYP BSS 1         I/O DRIVER TYPE IN EQT (OCTAL)
DFLAG BSS 1         DMA-IN FLAG FOR EQT 
BFLAG BSS 1         BUFFERING-IN FLAG FOR EQT 
TFLAG BSS 1         TIME-OUT ENTRY FLAG FOR EQT 
INTCH BSS 1         INT RECORD CHANNEL NO.
LSTSV BSS 1         LST COUNT SAVE FOR REL UPDATE 
I.XX  BSS 1         DRIVER ENTRY POINT
C.XX  BSS 1         DRIVER EXIT POINT 
TIMWD BSS 1 
RANAD BSS 1 
* 
DRANG BSS 1         DIGIT RANGE 
LWABP BSS 1 
DIFLG BSS 1         DATA-IN FLAG = -1/0 = NOT IN/IN 
CMFLG BSS 1         COMMA FLAG = -1/0 = NOT IN/IN 
BUFUL BSS 1         BUFFER U/L FLAG 
LBLAD BSS 1 
MEMAD BSS 1 
EPRGT BSS 122       BUFFER FOR UP TO 25 PROGS 
SPRGT BSS 3         END OF BUFFER 
      SPC 2 
* 
*     HERE IS THE END OF AREA THAT NEEDS TO BE SAVED
*     MAKE SURE BSS FOR OTHER SEGMENTS AT LEAST THIS
*     BIG...BSSIZ=THAT SIZE 
* 
BSSIZ EQU * 
      SKP 
*                                   PRINT: ERR XX 
* 
*  THE ERROR SUBROUTINE IS USED TO PRINT THE DIAGNOSTICS
*  FOR ALL ERROR MESSAGES.
* 
*  CALLING SEQUENCE:
*    A = 2-CHAR ASCII ERROR CODE
*    B = IGNORED
*    JSB ERROR
* 
*  RETURN: CONTENTS OF A AND B ARE DESTROYED. 
* 
ERROR NOP           PRINT ERROR MESSAGES
      STA AMERR+3   SET ERROR CODE INTO MESSAGE 
      LDA P6
      LDB AMERR     AMERR = MESSAGE ADDRESS 
      JSB PRINT     PRINT ERROR MESSAGE 
      JMP ERROR,I   RETURN
* 
AMERR DEF *+1 
      ASC 3,ERR     ERROR MESSAGE = ERR + CODE
      SKP 
* 
*                     SET DATA TO ABS TAPE
* 
*  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 SETAD     BUFFER ADDRESS
      STA PLKS      OFFSET ADDRESS
      LDA TEMP1     STARTING ADDRESS
      JSB PLK       OUTPUT ROUTINE IN THE LOADER
      JMP SETCR,I 
* 
      SKP 
* 
*  THE IPX ROUTINE ADDRESSES THE CURRENT 3 WORD ENTRY 
*  IN THE INTERRUPT PROGRAM TABLE FROM THE ADDRESS OF 
*  THE CURRENT ENTRY (BIDNT) . THE TABLE START ADDRESS
*  IS LWAM
* 
*  CALLING SEQUENCE:
*    A = IGNORED
*    B = IGNORED
*    JSB IPX
* 
*  RETURN, CONTENTS OF A AND B ARE DESTROYED
* 
IPX   NOP 
      LDA BIDNT     BUILD POINTERS
      STA IP1 
      INA 
      STA IP2 
      INA 
      STA IP3 
      ADA N5
      STA BIDNT 
      JMP IPX,I 
* 
*                                   CLEAR BUFFER TO CALLING SEQ+1 
* 
*  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 
      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
* 
*  ROUTINT 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 M7400     LOOK UPPER ONLY 
      STA B 
      LDA TEMP1,I 
      AND M7400 
      CPA B 
      ISZ NACMP     BUMP RETURN FOR COMPARE!
      JMP NACMP,I 
* 
* 
*                                   SET INITIAL IPX ADDRESS 
* 
*  INIPX SETS THE ADDRESS OF THE FRIST ENTRY IN THE 
*  PROGRAM IDENT TABLE AS THE CURRENT ADDRESS.
* 
* 
*  CALLING SEQUENCE:
*    A = IGNORED
*    B = IGNORED
*    JSB INIPX
* 
*  RETURN:  A AND B ARE DESTROYED 
* 
INIPX NOP 
      LDA SPRGA     GET START OF PROGRAM TABLE
      STA BIDNT 
      JMP INIPX,I 
      SKP 
* 
ALBUF DEF LBUF
ATBUF DEF TBUF
APNAM DEF PNAMA 
SPRGA DEF SPRGT 
EPGTA DEF EPRGT-1 
* 
* 
* 
ERR09 ASC 1,NA      PARAMETER NAME ERROR
ERR10 ASC 1,PA      PARAMETER ERROR 
ERR12 ASC 1,IN      PARAMETER INTERVAL ERROR
ERR24 ASC 1,CH      INVALID CHANNEL NO. IN EQT REC
ERR25 ASC 1,DR      INVALID DRIVER NAME 
ERR27 ASC 1,LU      INVALID DEVICE REF. NO. 
ERR31 ASC 1,EQ      INVALID EQT NO. IN INT RECORD 
ERR33 ASC 1,AD      INVALID ENTRY POINT IN INT RECORD 
PTERM ASC 1,EN
ERRDU ASC 1,DU
COMMA OCT 54        COMMA 
IJSB  JSB 0,I       I-JSB CODE FOR INTERRUPT LOCS 
UASCZ OCT 30000     UPPER ASCII ZERO CHAR 
CHARD OCT 104       ASCII CHAR D
CHARB OCT 102       ASCII CHAR B
CHART OCT 124       ASCII CHAR T
BIT14 OCT 40000     BIT 14=1
CHAVR ASC 1,VR
CHRPR ASC 1,PR
REQT  ASC 1,RE
RDRT  ASC 1,RD
RINT  ASC 1,RI
CHREN ASC 1,EN
CHRAB ASC 1,AB
UTCHR ASC 1,T 
USCHR ASC 1,S 
ERR11 EQU CHRPR     PARAMETER PRIORITY ERROR
CHREQ EQU ERR31 
MES28 DEF MS28
* 
MES25 DEF *+1 
      ASC 4,EQT TBL 
* 
MES26 DEF *+1 
      ASC 4,DRT TBL 
      ASC 3, LU#
* 
MES42 DEF *+1 
      ASC 4,#ID SEG?
MES41 DEF *+1 
      ASC 5,PRIV. INT?
MES2  DEF *+1 
      ASC 6,REL SYS MODS
MES3  DEF *+1 
      ASC 6,REL RES LIB 
MES12 DEF *+1 
      ASC 4,INT PRGS
MES13 DEF *+1 
      ASC 4,IGNORE? 
* 
      SKP 
*** SYSTEM BASE PAGE  COMMUNICATION  AREA *** 
* 
* 
* SYSTEM TABLE DEFINITION * 
* 
.     EQU 1650B 
EQTA  DEF .+0      FWA  OF  EQUIPMENT TABLE 
EQT#  DEF .+1       # OF EQT ENTRIES
DRT   DEF .+2      FWA  OF  DEVICE REFERENCE TABLE
LUMAX DEF .+3       # OF LOGICAL UNITS (IN DRT) 
INTBA DEF .+4      FWA  OF  INTERRUPT TABLE 
INTLG DEF .+5       # OF INTERRUPT TABLE ENTRIES
TAT   EQU .+6      FWA  OF  TRACK ASSIGNMENT TABLE
KEYWD DEF .+7      FWA  OF  KEYWORD BLOCK 
* 
* I/O MODULE/DRIVER COMMUNICATION 
* 
EQT1  EQU .+8      ADDRESSES
EQT2  EQU .+9 
EQT3  EQU .+10      OF
EQT4  EQU .+11
EQT5  EQU .+12      CURRENT 
EQT6  EQU .+13
EQT7  EQU .+14      15-WORD 
EQT8  EQU .+15
EQT9  EQU .+16      EQT 
EQT10 EQU .+17
EQT11 EQU .+18      ENTRY 
EQT12 EQU .+81
EQT13 EQU .+82
EQT14 EQU .+83
EQT15 EQU .+84
* 
CHAN  EQU .+19     CURRENT DMA CHANNEL #
TBG   DEF .+20     I/O ADDRESS OF TIME-BASE CARD
SYSTY DEF .+21     EQT ENTRY ADDRESS OF SYSTEM TTY
* 
* SYSTEM REQUEST PROCESSOR /'EXEC' COMMUNICATION *
* 
RQCNT EQU .+22     # OF REQUEST PARAMETERS -1 
RQRTN EQU .+23      RETURN POINT ADDRESS
RQP1  EQU .+24      ADDRESSES 
RQP2  EQU .+25
RQP3  EQU .+26       OF REQUEST 
RQP4  EQU .+27
RQP5  EQU .+28       PARAMETERS 
RQP6  EQU .+29
RQP7  EQU .+30       (SET FOR MAXIMUM OF
RQP8  EQU .+31        8 PARAMETERS) 
* 
* DEFINITION OF SYSTEM LISTS (QUEUES) * 
* 
DORMT DEF .+32     ADDRESS OF 'DORMANT' LIST, 
SKEDD DEF .+33      'SCHEDULE' LIST,
SUSP3 EQU .+36      'AVAILABLE MEMORY' LIST,
SUSP4 EQU .+37      'DISC ALLOCATION'  LIST,
SUSP5 EQU .+38      'OPERATOR SUSPEND' LIST 
* 
* DEFINITION OF EXECUTING PROGRAM  ID SEGMENT' *
* 
XEQT  EQU .+39     ID SEGMENT ADDR. OF CURRENT PROG.
XLINK EQU .+40       'LINKAGE'
XTEMP EQU .+41       'TEMPORARY (5-WORDS) 
XPRIO EQU .+46       'PRIORITY' WORD
XPENT EQU .+47       'PRIMARY ENTRY POINT'
XSUSP EQU .+48       'POINT OF SUSPENSION'
XA    EQU .+49       'A REGISTER' AT SUSPENSION 
XB    EQU .+50       'B REGISTER' 
XEO   EQU .+51       'E AND OVERFLOW
* 
* SYSTEM MODULE COMMUNICATION FLAGS * 
* 
OPATN EQU .+52     OPERATOR/KEYBOARD ATTENTION FLAG 
OPFLG EQU .+53     OPERATOR COMMUNICATION FLAG
SWAP  EQU .+54     RT DISC RESIDENT SWAPPING FLAG 
DUMMY DEF .+55     I/O ADDRESS OF DUMMY INT. CARD 
IDSDA EQU .+56     DISC ADDR. OF FIRST ID SEGMENT 
IDSDP EQU .+57      -POSITION WITHIN SECTOR 
* 
* DEFINITION OF MEMORY ALLOCATION BASES * 
* 
BPA1  DEF .+58     FWA R/T DISC RES. BP LINK AREA 
BPA2  EQU .+59     LWA R/T DISC RES. BP LINK AREA 
BPA3  EQU .+60     FWA BKG DISC RES. BP LINK AREA 
LBORG DEF .+61     FWA OF RESIDENT LIBRARY AREA 
RTORG DEF .+62     FWA OF REAL-TIME AREA
RTCOM DEF .+63     LENGTH OF REAL TIME COMMON AREA
RTDRA EQU .+64     FWA OF R/T DISC RESIDENT AREA
AVMEM DEF .+65     FWA OF SYSTEM AVAILABLE MEMORY 
BKORG DEF .+66     FWA OF BACKGROUND AREA 
BKCOM EQU .+67     LENGTH OF BACKGROUND COMMON AREA 
BKDRA EQU .+68     FWA OF BKG DISC RESIDENT AREA
* 
* UTILITY PARAMETERS
* 
TATLG EQU .+69     LENGTH OF TRACK ASSIGNMENT TABLE 
TATSD EQU .+70      # OF TRACKS ON SYSTEM DISC
SECT2 EQU .+71      # SECTORS/TRACK ON LU 2 (SYSTEM)
SECT3 EQU .+72      # SECTORS/TRACK ON LU 3 (AUX.)
DSCLB EQU .+73     DISC ADDR OF RES LIB ENTRY PTS 
DSCLN EQU .+74      # OF RES LIB ENTRY POINTS 
DSCUT EQU .+75     DISC ADDR OF RELOC UTILITY PROGS 
DSCUN EQU .+76      # OF RELOC UTILITY PROGS
LGOTK EQU .+77     LOAD-N-GO: LU,STG TRACK,# OF TRKS
LGOC  EQU .+78      CURRENT LGO TRACK/SECTOR ADDRESS
SFCUN EQU .+79     SOURCE FILE LU AND DISC ADDRESS
MPTFL EQU .+80      MEMORY PROTECT ON/OFF FLAG (0/1)
FENCE EQU .+85      MEM PROTECT FENCE ADDRESS 
BKLWA DEF .+87     LWA OF MEMORY IN BACKGROUND
BPCLR DEF .+44
      SKP 
* 
*     THIS IS WHERE WE START.   *** INITIALIZATION ***
* 
SWPIN NOP           THIS IS WHERE CONTROL IS PASSED 
      LDA RSTA      WHEN SEGMENT ROLLED IN
      JMP SWAPR     CONTROL IS RETURN TO MAIN WITH A REG=START
      SPC 1 
RSTA  DEF RSTRT 
      SPC 1 
* 
* 
*  THE FOLLOWING MESSAGES ARE PRINTED DURING THE INITIALIZATION 
*  PHASE, WITH THE SPECIFICATIONS FOR EACH VALID RESONSE. 
* 
* 
*  MESSAGE         RESPONSE 
* 
*  TBG CHNL?       ENTER 2 OCTAL DIGITS 
* 
*  PRIV. INT.       ENTER 2 OCTAL DIGITS    $$
* 
*  FWA BP?         ENTER 4 OCTAL DIGITS 
* 
*  LWA MEM?        ENTER 5 OCTAL DIGITS 
* 
*  FWA SYS MEM?    ENTER 5 OCTAL DIGITS 
* 
* 
* 
RSTRT NOP 
      LDA M2000     SET UP FWAM 
      STA .MEM3 
      LDA P1647 
      STA .MEM2     SET LWABP 
      CLA 
      STA LST       CLEAR THE SYMBOL TABLE COUNT
      STA NAMR. 
      LDA LISTO 
      AND N9        CLEAR BIT 3, FOR NEW HEADING
      STA LISTO 
* 
*                                   SET PARAMETER INPUT UNIT
* 
*                                   SET TIME BASE GENERATOR CHANNEL 
      NOP SPACE     NEW LINE
CHNLT LDA P9
      LDB MES30     MES30 = ADDR: 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.
      NOP SPACE     NEW LINE                      $$
DUMY  LDA P10                                     $$
      LDB MES41     MES41 = ADDR: PRIV. INT. CARD?$$
      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.      $$
* 
* 
* 
*                                   SET FWA BP LINKAGE
FWENT NOP SPACE                                    $
      LDA P7                                      $ 
      LDB MES27     MES27 = ADDR: FWA BP LINKAGE? 
      JSB READ     PRINT AND GET REPLY
      LDA P4
      JSB GETOC     GET 4 OCTAL DIGITS, CONVERT 
      JMP LNKER     INVALID DIGIT ENTERED 
      JSB GETAL     GET NEXT CHAR FROM LBUF 
      CPA ZERO      END OF BUFFER?
      JMP SETFB     YES - SET FWA BP LINKAGE
LNKER JSB INERR 
      JMP FWENT     REPEAT MESSAGE
SETFB LDB OCTNO     GET FWA BP
      SZB,RSS       SKIP - VALID (NON-ZERO) FWA BP
      JMP LNKER     REPEAT FWA BP LINKAGE INPUT 
      STB .MEM1 
      ADB N1
      STB LWABP     SAVE FOR INT PROCESSOR
      NOP SPACE     NEW LINE
* 
      LDA ALBUF     SET OFFSET ADDRESS
      STA SETAD     TO THE CLEARED BUFFER 
      LDB ALBUF     ADDRESS OF IN BUFFER
      JSB BUFCL     CLEAR BUFFER TO OCTAL ZEROS 
      OCT 0 
      LDA EQTA      START ADDR OF AREA TO BE CLEARED
      LDB BPCLR     END ADDRESS 
      JSB SETCR     CLEAR LOWER HALF
      LDA BPCLR 
      LDB BKLWA 
      JSB SETCR     CLEAR UPPER HALF
SMLWA LDA P8
      LDB MESS3     MESS3 = ADDR: LWA MEM?
      JSB READ     PRINT MESSAGE, GET REPLY 
      LDA P5        SET FOR 5 OCTAL DIGITS INPUT
      JSB DOCON     GET DIGITS, RETURN OCTAL
      JMP SMLWA     REPEAT INPUT
      LDA OCTNO     GET LWAM
      STA TEMP3     SAVE FOR FWA SYS MEMORY PROCESSING
      STA SETAD,I   PUT IN BUFFER 
      LDA BKORG     ADDRESS OF BK LWAM
      LDB A         ADDRESS INTO B
      JSB SETCR     OUTPUT ABSOLUTE 
      LDA BKLWA     THE OTHER BP REFERENCE
      LDB A 
      JSB SETCR     OUTPUT TO ABS 
* 
      NOP SPACE 
GETAV LDA P12       PRINT:
      LDB MES34     "FWA SYS MEM? 
      JSB READ     GET THE ANSWER 
      LDA P5        SET FOR 5 OCTAL DIGITS. 
      JSB DOCON     CONVERT TO OCTAL. 
      JMP SYMER     -ERROR. 
      JMP SETAV     OK , SET BOUNDARY.
* 
SYMER JSB INERR 
      JMP GETAV     -REPEAT REQUEST 
* 
SETAV LDA OCTNO     IF NUMBER 
      STA SYMAD 
      SZA,RSS       EQ 0, LEAVE FWA 
      JMP SETA1 
      LDB TEMP3     SUBTRACT ORIG.
      CMA,INA 
      ADB A          NEW VALUE
      SSB            ERROR IF 
      JMP SYMER      NEW > LWAM 
*                                        CLEAR RTS BP AREA
      LDA SYMAD     GET START OF SYS MEMORY 
      ADA N1        ADJUST FOR LWAM 
      RSS 
SETA1 LDA TEMP3     DEFAULT TO LWAM 
      STA .MEM4     UPPER LOAD BOUNDS 
*                                         SET PRIV CHAN IN BP 
      LDA PIOC      PRIV. INT CHANNEL 
      STA SETAD,I   PUT IN BUFFER 
      LDA DUMMY     ADDRESS WHERE TO GO IN BP 
      LDB A 
      JSB SETCR     GO SET IT IN BP 
*                                        GO REL SYS MODULES 
      NOP SPACE     NEW LINE
      LDA P12       PRINT:
      LDB MES2      "REL SYS MODS"
      JSB PRINT     PRINT 
*                                     RELOCATE FROM RTS/2100 LOADER 
      LDA P2
      STA .XFER     NON ZERO TO LOAD SYS MODULES
      CLA           GET A ZERO
      STA PNAME     CLEAR NAME FLAG 
      STA LOCC      CLEAR LOCC IN LOADER
      STA BPLOC     SAME FOR BPLOC
      JSB PRCMD     GO RELOCATE SYS MODULES 
      JSB GTOUT     ERROR FROM LOADER...GET OUT 
      LDA LOCC      UPDATE FWAM 
      STA .MEM3     FWAM
      LDA BPLOC     UPDATE FWABP
      STA .MEM1 
      LDA LST 
      STA LSTSV     SAVE FOR RELOCATION ERROR 
      LDA UEXFL     WERE THERE ANY UNDEFINED? 
      SZA,RSS 
      JMP *+4       NO CONTINUE 
RELSE LDA ERR33     YES,PRINT:
      JSB ERROR     "ERR AD"
      JMP RSTRT     START RTSGN OVER
      LDB A$STR 
      JSB SSTBL     WAS $STRT LOADED? 
      JMP RELSE     NO, ERROR,
      LDA LST4      YES, GET STARTING ADDRESS 
      LDA A,I 
      STA STRAD     SAVE IT FOR CLEAN-UP AT END OF RTSGN
      LDB A$CIC     $CIC NAME 
      JSB SSTBL     WAS $CIC LOADED?
      JMP RELSE     NO, ERROR, START OVER 
      LDA LST4      BUILD A BP LINK FOR $CIC
      LDA A,I 
      STA SETAD,I   OUTPUT BP LINK
      LDA .MEM1                 FOR $CIC
      LDB A 
      JSB SETCR 
      LDB LST5
      LDA .MEM1 
      STA A$CIA     SAVE FOR JSB INSTRUCTION
      STA B,I 
      ISZ .MEM1     BUMP TO NEXT LINK 
      JMP GENIO     YES, GO BUILD I/O TABLES
* 
* 
* 
*                                   NUMERICAL INPUT CONTROL 
* 
*  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
      SKP 
* 
*                                   INVALID TTY RESPONSE
* 
*  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 ERR10     SET INVALID DEVICE ERROR CODE 
      JSB ERROR     PRINT ERROR MESSAGE 
      JMP INERR,I   RETURN
* 
      SKP 
MES27 DEF MS27
MES34 DEF SYMES 
SYMES ASC 6,FWA SYS MEM?
MS27  ASC 4,FWA BP? 
MESS3 DEF *+1 
      ASC 5,LWA MEM?
MES30 DEF *+1 
      ASC 5,TBG CHNL? 
A$STR DEF *+1 
      ASC 3,$STRT 
A$CIC DEF *+1 
      ASC 3,$CIC
* 
CHARX OCT 130 
EQXCT NOP 
XEXTM NOP 
TEQCT BSS 1 
TEQTX BSS 1 
AEQTX DEF EQXTB 
* 
      SKP 
* 
*                                   GENERATE I/O TABLES 
* 
*  THIS SECTION OF CODE GENERATES THE I/O TABLES
*  FOR THE SYSTEM.  THESE INCLUDE THE EQUIPMENT TABLE (EQT),
*  STANDARD DEVICE REFERENCE TABLE (DRT), AND INTERRUPT TABLE.
* 
*  THE EQT RECORDS HAVE THE FOLLOWING FORMAT: 
* 
*    N1,DVRN2<,D><,B><,T=><,X=> 
* 
*  N1 = CHANNEL NO. (2 OCTAL DIGITS)
*  N2 = DRIVER CLASS. CODE (2 OCTAL DIGITS) 
*  D = DMA FLAG (OPTIONAL)
*  B = BUFFERING FLAG (OPTIONAL)
*  T = TIME-OUT VALUE TO BE ENTERED 
*  X = EQT EXTENSION AREA SIZE
* 
*    IF T= IS ENTERED, A VALUE FOR THE DEVICE'S TIME-OUT
*    CLOCK MUST NEXT BE ENTERED.
*    THE OPERATOR MUST ENTER A POSITIVE DECIMAL NUMBER
*    OF UP TO FIVE DIGITS.  THIS IS THEN THE NUMBER OF
*    TIME BASE GENERATOR INTERRUPTS (10 MSEC INTERVALS) 
*    BETWEEN THE TIME IO IS INITIATED ON THE DEVICE AND 
*    THE TIME AFTER WHICH THE DEVICE SHOULD HAVE INTERRUPTED. 
*    IF THE DEVICE HAS NOT INTERRUPTED BY THIS TIME, IT 
*    IS CONSIDERED TO HAVE TIMED-OUT. 
* 
* 
*  EACH DRT RECORD CONSISTS OF A 2-DIGIT NO. SPECIFYING THE 
*  CORRESPONDING ENTRY IN THE EQUIPMENT TABLE 
*  AND AN OPTIONAL 1-DIGIT NO. SPECIFYING A 
*  SUBCHANNEL WITHIN THAT ENTRY.  FOR EXAMPLE, IN 
*  RESPONSE TO THE MESSAGE:  5 = ?, THE RESPONSE 6 INDICATES THAT 
*  THE LOGICAL UNIT NO. 5 IS TO USE DEVICE 6 IN EQT.
*  WHEREAS THE RESPONSE 6,2 INDICATES THAT THE
*  LOGICAL UNIT NO. 5 IS TO USE SUBCHANNEL 2 OF 
*  DEVICE 6 IN EQT. 
* 
* 
*  THE INT RECORDS HAVE ONE OF THE FOLLOWING FORMATS: 
* 
*    N1,EQT,N2
*    N1,PRG,NAME
*    N1,ENT,ENTRY 
*    N1,ABS,N3
* 
*  N1 = CHANNEL NO. (2 OCTAL DIGITS - MUST BE IN INCREASING ORDER)
*        EXCEPTION:    IF N1 = 04 (POWER - FAIL), 
*        THIS ENTRY DOES NOT HAVE TO BE IN ORDER.  ALSO,
*        ONLY AN ENT OR AN ABS TYPE ENTRY IS ACCEPTED 
*        FOR N1 = 04. 
*  N2 = EQT NO. 
*  NAME = PROGRAM NAME TO BE SCHEDULED
*  ENTRY = ENTRY POINT TO WHICH TRANSFER IS TO BE MADE
*  N3 = ABSOLUTE VALUE (6 OCTAL DIGITS) 
                                                                                                                                                          