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)