ASMB,R,Q,C HED RTE IV CONFIGURATOR PART OF 92067-16014 NAM $CNFG,16 92067-16014 REV.1926 790610 * NAME: $CNFG * SOURCE: 92067-18025 * RELOC: PART OF 92067-16014 * PGMR: S.K.,D.J.V.,J.M.N * * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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. * * *************************************************************** * SUP ENT $CNFG,$EXIT,$PCHN,$WRRD,$USRS,$ABDP,$SMTB ENT $TRTB,$TREN,$NPGQ,$GDPG,$SAVE * EXT $SBTB,$SSCT EXT $XSIO,$CMST,$ENDS,$MRMP,$XCQ,$LIST EXT $CNV3,$PRSE,$PLP,$MATA,$MNP * * A EQU 0 B EQU 1 JSBCI EQU 5 EQTA EQU 1650B EQT# EQU 1651B DRT EQU 1652B LUMAX EQU 1653B INTBA EQU 1654B INTLG EQU 1655B KEYWD EQU 1657B EQT1 EQU 1660B EQT3 EQU 1662B EQT4 EQU 1663B EQT5 EQU 1664B EQT6 EQU 1665B EQT7 EQU 1666B EQT8 EQU 1667B EQT9 EQU 1670B EQT10 EQU 1671B EQT11 EQU 1672B EQT12 EQU 1771B TBG EQU 1674B SYSTY EQU 1675B SKEDD EQU 1711B DUMMY EQU 1737B BPA2 EQU 1743B LBORG EQU 1745B SECT2 EQU 1757B * * $SAVE BSS 9 NOP NOP BSS 3 TBGSV NOP PRVSV NOP ACN1 DEF CN1 MRSET OCT 150077 * .3 DEC 3 .4 DEC 4 .5 DEC 5 .6 DEC 6 .7 DEC 7 .8 DEC 8 .12 DEC 12 .13 DEC 13 .14 DEC 14 .15 DEC 15 .16 DEC 16 .31 DEC 31 .32 DEC 32 .40 DEC 40 .64 DEC 64 .168 DEC 168 * N1 DEC -1 N3 DEC -3 N4 DEC -4 N6 DEC -6 * B10 EQU .8 B37 EQU .31 B40 EQU .32 B41 OCT 41 B74 OCT 74 B75 OCT 75 B177 OCT 177 B1777 OCT 177700 B377 OCT 377 B1774 OCT 177400 B1776 OCT 1776 HLT4 OCT 102004 * YE ASC 1,YE NO ASC 1,NO SPACE ASC 1, * MSG4 ASC 13,CURRENT I/O CONFIGURATION: MSG5 ASC 8,SELECT CODE = MSG6 ASC 6,EQT ,TYPE MSG8 ASC 4,PRIV I/O MSG10 ASC 25,CURRENT SELECT CODE#,NEW SELECT CODE#?(/E TO END) MSG12 ASC 20,NEW I/O CONFIGURATION PERMANENT?(YES/NO) MSG21 ASC 13,PHYSICAL MEM SIZE?(#PAGES) AMSG5 DEF MSG5 AMSG6 DEF MSG6 AMSG8 DEF MSG8 ACNFX DEF *+1 SWREG ASC 3,$CNFX TEMP EQU ACNFX CTRCL EQU SWREG+1 CINTB EQU SWREG+2 OLSTB BSS 56 * * * * $CNFG NOP SVTBL CLC 0 CLEAR ALL INTERRUPTS LDA SYSTY GET CONSOLE EQT ADDRESS ADA .3 POINT TO WORD 4 OF CONSOLE EQT STA $SAVE SAVE IT LDA .4,I TRAP CELL CONTENTS FOR POWER FAIL STA $SAVE+11 SLOT LDA HLT4 INSERT HALT 4 IN TRAP CELL SO THAT THE SYSTEM STA .4,I HALTS ON POWER FAIL DURING CONFIGURATION LDA DUMMY SAVE PRIV INT CARD LOC STA $SAVE+5 FROM BASE PAGE STA PRVSV LDA TBG STA TBGSV LDA SKEDD SAVE CONTENTS STA $SAVE+6 CLB CLEARSYSTY TO PREVENT USER FROM RSTBL STB SYSTY GETTING OPERATOR ATTENTION STB DUMMY & DUMMY TO LET INTERRUPTS COME THRU STB SKEDD PREVENT PROG FROM BEING SCHEDULED LDA $LIST SAVE CONTENTS STA $SAVE+7 ISZ $LIST DLD EQT1 SAVE EQT WORDS 1-6 ON DST $SAVE+1 BASE PAGE COMMUNICATION AREA DLD EQT3 DST $SAVE+3 DLD EQT5 DST $SAVE+12 * LDB ACNFX GET $CNFX'S ID SEGMENT ADDRESS JSB TNAME SEZ,SZA,RSS PRESENT? CLB NO STB CNXID ID SEGMENT ADDRESS * LIA 1 READ THE SWITCH REGISTER CONTENTS STA SWREG AND SAVE IT CLB CLEAR THE SWITCH REGISTER OTB 1 SSA,RSS BIT 15 SET? JMP MEMLD NO,LOAD MEM RES & DRIVER PARTNS CCA YES,INITIALIZE SVTBL TO -1 LDB .40 SVTBL IS 16 WORDS LONG TEMP6 JSB SETM AND RSTBL IS 20 WORDS LONG WFLAG DEF SVTBL STARTING FROM LOC SVTBL TEMP1 LDA SWREG TEMP2 ALF,ALF GET NEW DISC SC IN BITS 0-5 TEMP3 RAL,RAL TEMP4 AND B77 MASK DISC SC TEMP5 SZA,RSS 0? OLDSC JMP MEMLD YES, DISC SC DOES NOT CHANGE NEWSC STA NEWSC LDA ASVTB START OF SVTBL JSB SVENT MAKE NEW DISC ENTRY IN SVTBL CLA LDB NEWSC CPB TBG USED TO BE TBG? STA TBG YES, THEN CLEAR TBG CPB $SAVE+5 USED TO BE PRIV I/O CARD? STA $SAVE+5 YES, THEN CLEAR PRIV I/O CARD * TRPCL LDA DRT POINT TO DRT ENTRY FOR LU2 INA LDA A,I GET CONTENTS OF SYS LU ENTRY IN DRT AND B77 MASK EQT # FOR DISC ADA N1 SUBTRACT 1 TO START EQT#'S AT 0 MPY .15 FIND SYS DISC EQT ADDR ADA EQTA ADA .3 POINT TO WORD 4 OF SYS DISC EQT STA B SAVE ADDRESS IN THE B REG STA RSTBL+5 SAVE FOR NOW JSB EQTCN SET EQT WORD 4 FOR NEW SELECT CODE LDA INTBA INTERRUPT TABLE ADDRESS ADA OLDSC ADD OLD SELECT CODE # ADA N6 ADJUST ADDRESS LDB A,I GET CONTENTS OF INTRPT TBL ENTRY INA POINT TO NEXT SC IN INTRPT TBL CPB A,I BOTH SELECT CODES THE SAME? CCA,RSS YES CLA STA TEMP -1 IF 2 SC'S FOR DISC, 0 OTHERWISE JSB INTRP SET TRAP CELL AND INTRPT TBL FOR NEW SC LDA TEMP SSA,RSS 2 DISC SC'S? JMP MEMLD NO, THEN LOAD MEMORY ISZ NEWSC YES,SECOND SELECT CODE# FOR DISC ISZ OLDSC SECOND SELECT CODE FOR DISC LDA ASVTB ADA .4 ENTER SECOND SC ENTRIES IN SVTBL JSB SVENT JSB INTRP SET UP TRAP CELL & INTRPT TBL FOR 2ND SC CCA GET OLD SC BACK TO ORIGINAL VALUE ADA OLDSC OLD SC - 1 CCB ADB NEWSC NEW SC - 1 PRMTB DST OLDSC RESTORE THEM * * * LOAD MEMORY RESIDENT PROGRAMS AND RESIDENT LIBRARY * AND THE DRIVER PARTITIONS INTO MEMORY * * MEMLD LDA $SBTB+1 GET # OF PAGES IN DRIVER PARTITIONS SZA,RSS ANY GENERATED INTO SYSTEM? DRPGS JMP MEMRS NO, LOAD MEMORY RESIDENT PROGRAMS STA DRPGS USE THIS AS COUNTER LDA B41 BUILD DISC RESIDENT PROGRAM LDB $CMST MAP TO LOAD DRIVER PARTITIONS ADB N1 MWOCM CBX # OF PAGES TO BE LOADED NPGS CLB,INB START LOADING FROM PAGE 1 XMS TRANSFER SEQUENTIAL MEMORY STA MEMLD A REG POINTS TO NEXT MAP REG# LDB $ENDS START PAGE OF DRIVER PARTITIONS STB MEMLD+1 LDB $CMST # OF PAGES IN THE MAX.ADDRESSABLE CMB,INB SPACE WITHOUT COMMON ADB .31 STB MWOCM SAVE IT LDA $SBTB DISC ADDRESS OF DRIVER PARTNS JSB DSCAD SEPARATE TRACK AND SECTOR #'S * LDA $CMST START PAGE OF COMMON LSL 10 MULTIPLY BY 2000B STA TEMP3 LOAD FOR DRIVER PARTN DRVLD LDA DRPGS LDB DRPGS # OF PAGES IN DRIVER PARTITIONS CMB,INB # OF PAGES LEFT TO BE LOADED ADB MWOCM > MAX ADDRESS SPACE IN MAP? SSB LDA MWOCM YES,#PGS TO LOAD AT ONE TIME=MWOCM STA NPGS # OF PAGES OF DRVR PARTN TO BE LOADED CAX BUILD THE REST OF THE DISK RES MAP DLD MEMLD XMS LOAD MAP DST MEMLD SAVE NEW VALUES OF A&B REG LDA NPGS BUILD TRIPLETS TO READ DATA LSL 10 FROM DISC W/OUT CROSSING TRACK BOUNDARY STA TEMP SAVE # OF WORDS IN BUFFER JSB LOAD LOAD NPGS OF DRIVER PARTITION LDA NPGS # PAGES LOADED CMA,INA ADA DRPGS #PAGES THAT HAD TO BE LOADED SZA,RSS ANY LEFT? JMP MEMRS NO, DONE LOADING DRIVER PARTNS * STA DRPGS #PAGES LEFT TO BE LOADED ISZ PRMAR ADDRESS OF PARAMETER ARRAY LDB PRMAR,I GET # OF WORDS IN LAST TRIPLET LSR 6 DIVIDE IT BY 64 CBX SAVE B REG VALUE ISZ PRMAR GET TRACK / SECTOR # FOR LAST TRIPLET LDA PRMAR,I JSB DSCAD SEPARATE DISC ADDRESS CXB GET X REG IN B ADB TEMP2 B REG HAS NEW SECTOR # CMB -(NEW SECTOR# + 1) ADB SECT2 # OF SECTORS/TRACK ON SYS DISC SSB,RSS NEW SECT#># SECTORS/TRACK ON SYS DISC? JMP DRVLD NO ISZ TEMP1 YES, INCREMENT TRACK# BY 1 CLA SECTOR# IS 0 STA TEMP2 SECTOR# FOR SETUP JMP DRVLD LOAD THE NEXT PAGES * * * INTRP - THIS PROCEDURE IS PERFORMED TO ENTER * INTERRUPT TABLE AND TRAP CELL VALUES FOR DISC * SELECT CODES * * CALLING SEQUENCE: JSB INTRP * INTRP NOP LDB OLDSC,I TRAP CELL VALUE FOR OLD SELECT CODE STB NEWSC,I STORE VALUE IN NEWSC'S TRAP CELL * LDA INTBA INTERRUPT TABLE ADDRESS ADA N6 STA TEMP2 SAVE THIS ADDRESS LDB OLDSC OLD SELECT CODE ADB A POINT INTO INTERRUPT TABLE LDA B,I OLD SC'S INTERRUPT TABLE VALUE LDB NEWSC ADB TEMP2 STA B,I SAVE OLDSC VALUE IN NEWSC ENTRY JMP INTRP,I IN INTERRUPT TABLE - RETURN * * * TNAME - SEARCH KEYWORD LIST FOR PROGRAM NAME * CALLING SEQUENCE: B REG = ADDRESS OF ASCII PROGRAM NAME * JSB TNAME * RETURNS: A REG = 0 IF PROGRAM NOT FOUND (E=1) * B REG = ID SEGMENT ADDRESS OF REQUESTED PROGRAM * E REG = 0 IF STANDARD ID SEGMENT * E REG = 1 IF SHORT ID SEGMENT OR NOT FOUND * * TNAME NOP TNTM3 STB TNTM3 ADDRESS OF NAME 1 AND 2 TNTM4 INB INCREMENT TO CHAR 3 AND 4 ADDR TNTM5 STB TNTM4 SAVE IT INB INCR TO CHAR 5 ADDR LDA B,I ASCII NAME CHAR 5 AND X AND B1774 MASK OFF X STA TNTM5 SZA IF NULL CHAR. FORCE ERROR RETURN LDA KEYWD STA TEMP TN005 LDA TEMP,I CHECK IF AT END OF LIST CCE,SZA,RSS JMP TNAME,I END OF LIST RETURN ADA .12 LDB A,I ID SEG ASCII NAME CHARS 1 AND 2 CPB TNTM3,I COMPARE WITH REQUESTED CHAR 1,2 INA,RSS COMPARES JMP TN030 DOES NOT COMPARE-GO TO NEXT PROG LDB A,I ID SEG ASCII NAME CHARS 5,X CPB TNTM4,I COMPARE WITH REQUESTED CHARS 3,4 INA,RSS COMPARES JMP TN030 DOES NOT COMPARE-GO TO NEXT PROG LDA A,I ID SEG ASCII NAME CHARS 5,X STA B SAVE FOR SHORT ID TEST AND B1774 MASK OFF X CPA TNTM5 COMPARE CHAR 5 JMP TN040 COMPARES-SO PROGRAM FOUND * TN030 ISZ TEMP INCREMENT KEYWORD ADDRESS JMP TN005 GO TO COMPARE CHARS TN040 LSR 4 MOVE SHORT ID BIT TO LEAST B ERB SET E FOR RETURN LDB TEMP,I LOAD B WITH ID SEG ADDRESS JMP TNAME,I EXIT * * * LOAD THE MEMORY RESIDENT PROGRAMS * AND THE MEMORY RESIDENT LIBRARY * * MEMRS LDA $SBTB+3 # OF PAGES IN MEM RESIDENT BASE PAGE SZA,RSS MEM RES PROGRAMS EXIST? JMP IOCNF NO, THEN CONFIGURE I/O LDA B40 YES LDB .32 32 REGISTERS CBX LDB $MRMP MEM RES MAP XMM TRANSFER MEM TO MAPS * LDA B1776 1776B WORDS TO LOAD FOR STA TEMP MEM RESIDENT BASE PAGE LDA $SBTB+2 DISC ADDRESS FOR MEM RES BASE PAGE JSB DSCAD LDA .2 START ADDRESS IS 2 STA TEMP3 JSB LOAD LOAD MEM RES BASE PAGE LDA $SBTB+5 #PAGES FOR MEM RES LIB & PROGS LSL 10 MULTIPLY BY 2000B STA TEMP # OF WORDS IN BUFFER LDA $SBTB+4 DISC ADDRESS FOR MEM RES LIB & PROGS JSB DSCAD LDA LBORG STARTING MEM ADDRESS STA TEMP3 FOR RESIDENT LIBRARY JSB LOAD LOAD THE MEM RES PROGS & LIB * * **** I/O RE-CONFIGURATION ****** * * IOCNF LDA SWREG RE-CONFIGURATION REQUESTED? SSA,RSS BIT 15 IN SWITCH REGISTER SET? JMP $EXIT NO, THEN DONE * CCA YES,INITIALIZE TRPCL,INTBL,EQTBL TO -1 LDB .168 168 ENTRIES POSSIBLE JSB SETM DEF TRPCL START AT LOC TRPCL CCA INITIALIZE OLD SC TABLE TO -1 LDB B70 JSB SETM DEF OLSTB LDA SVTBL DISC I/O SELECT CODE CHANGED? SSA JMP CONSL NO, THEN CONFIGURE CONSOLE SC JSB JNENT ENTER DISC SC IN INTBL AND TRPCL NOP ERROR RETURN NOT POSSIBLE LDA AEQTB ADDRESS OF EQTBL ADA NEWSC POINT TO NEW DISC SC ENTRY ADA NB10 IN EQTBL LDB RSTBL+5 EQT WORD 4 ADDRESS FOR DISC EQT STB A,I SET UP ENTRY IN EQTBL FOR DISC JSB CLRSC CLEAR SC IN INTERRUPT TABLE &TRAP CELL LDA ARSTB ADDRESS OF RSTBL JSB RSENT MAKE ENTRIES IN RESTORE TABLE LDA SVTBL+4 DISC HAS TWO SELECT CODES? CPA N1 ENTRY MADE IN SVTBL? JMP CONSL NO, THEN CONFIGURE CONSOLE SC ISZ NEWSC YES ISZ OLDSC JSB JNENT ENTER 2ND DISC SC IN INTBL & TRPCL NOP DO NOTHING ON ERROR RETURN JSB CLRSC CLEAR SC IN INTERRUPT TABLE & TRAP CELL LDA ARSTB POINTER INTO RSTBL FOR ADA .6 SECOND DISC SC ENTRIES JSB RSENT MAKE ENTRIES IN RSTBL * CONSL LDA SWREG GET BITS 0-5 OF SWITCH REGISTER AND B77 GET CONSOLE SELECT CODE SZA,RSS 0? JMP UNBCN YES, CONSOLE SC NOT CHANGED STA NEWSC NO, NEW SELECT CODE FOR CONSOLE LDA $SAVE DETERMINE DRIVER TYPE FOR CURRENT INA SYSTEM CONSOLE - POINT TO WORD 5 LDA A,I OF CURRENT SYSTEM CONSOLE EQT ALF,ALF GET EQUIPMENT TYPE CODE AND B77 INTO BITS 0-7 STA TEMP1 SAVE IT LDA N3 CONFIGURE I/O INSTR TO FIND OUT TYPE CONLP LDB ACN1,I OF CONSOLE ATTACHED TO NEW SC ADB NEWSC STB ACN1,I RESTORE INSTR ISZ ACN1 POINT TO NEXT INSTR INA,SZA ALL INSTR CONFIGURED? JMP CONLP NO LDB .5 LDA MRSET MASTER RESET WORD CN1 CLF 0 CN2 OTA 0 CN3 SFS 0 CLB DVR00 DRIVER CLA CPB TEMP1 IS THIS CONSOLE SAME TYPE AS CURRENT ONE CCA,RSS YES, INDICATE SO IN TEMP2 STB TEMP1 NO, THEN SAVE NEW CONSOLE TYPE STA TEMP2 0 IF DRIVER TYPES NOT SAME, -1 IF SAME * * FIND AN EQT WITH EQUIPMENT TYPE CODE MATCHING * THE NEW SELECT CODE * LDA NEWSC JSB EQTFN FIND AN EQT # WITH NEW SC SSB,RSS FOUND? JMP FNCNE YES CNEQT LDA TEMP2 NO, THEN DRIVER TYPES WERE SAME? SSA JMP CONTY YES CLA,INA NO FIND EQT WITH RIGHT DRIVER TYPE STA TEMP TEMP KEEPS COUNT OF EQT'S LOOKED AT LDB EQTA EQUIPMENT TABLE START ADB .4 POINT TO WORD 5 OF THE FIRST EQT EQTLP LDA B,I GET CONTENTS OF WORD 5 OF EQT ALF,ALF EQUIPMENT TYPE CODE IN LOW 6 BITS AND B77 CPA TEMP1 IS IT SAME AS THAT OF NEWSC? JMP FNDEQ YES,THE RIGHT EQT HAS BEEN FOUND LDA TEMP CPA EQT# ALL EQT'S DONE? JMP EQERR YES, THEN ERROR ISZ TEMP NO, POINT TO NEXT EQT'S WORD 5 ADB .15 JMP EQTLP * FNCNE LDA TEMP5 EQT#-1 RETURNED BY EQTFN INA EQT# STA TEMP SAVE IT INB POINT TO WORD 5 OF EQT LDA B,I GET CONTENTS OF WORD 5 OF EQT ALF,ALF AND B77 GET EQUIPMENT TYPE CODE CPA TEMP1 IS IT SAME AS THAT OF NEW CONSOLE? JMP FNDEQ YES, THEN FOUND THE RIGHT EQT JMP CNEQT NO, THEN FIND EQT * EQERR HLT 55B HALT SYSTEM JMP *-1 * CONTY LDB $SAVE DRIVER TYPE SAME FOR JMP EQTTY OLD AND NEW SYSTEM CONSOLE * UNBCN LDB $SAVE UNBUFFER CONSOLE EQT JSB EQUNB LDA TEMP2 STA $SAVE+9 LDA $SAVE,I GET WORD 4 OF CONSOLE EQT AND B77 GET THE SELECT CODE LDB A,I GET THE TRAP CELL CONTENTS FOR SYS CONSOLE STB CTRCL SAVE TRAP CELL CONTENTS ADA INTBA INDEX INTO THE INTERRUPT TABLE ADA N6 LDA A,I STA CINTB INTERRUPT TABLE ENTRY FOR SYS CONSOLE JMP STRCN * * * * CLRSC - ROUTINE TO CLEAR INTERRUPT TABLE ENTRY FOR OLDSC * AND TO INSERT A JSB $CIC,I INSTR IN CORRESPONDING * TRAP CELL ENTRY * CALLING SEQUENCE: JSB CLRSC * * CLRSC NOP LDA OLDSC CPA SVTBL IS OLDSC SAME AS NEW DISC SC #1? JMP CLRSC,I YES, THEN RETURN CPA SVTBL+4 IS OLDSC SAME AS NEW DISC SC #2? JMP CLRSC,I YES, RETURN LDA JSBCI JSB $CIC,I INSTR STA OLDSC,I IN TRAP CELL ENTRY FOR OLD SC LDA INTBA INTERRUPT TABLE ADDRESS ADA N6 ADA OLDSC POINTER INTO THE INTERRUPT TABLE CLB CLEAR ENTRY FOR OLD SC IN INTERRUPT TABLE STB A,I JMP CLRSC,I RETURN * * * EQT HAS BEEN FOUND, CHANGE EQT# IN DRT ENTRY FOR * LU1 - THE SYSTEM CONSOLE AND IN BASE PAGE LOC SYSTY * FNDEQ ADB N1 POINT TO WORD 4 OF NEW EQT ADDRESS STB $SAVE SAVE IS WHERE SYSTY+4 IS SAVED CPA .5 IN THIS DVR05 TYPE CONSOLE? JMP NOSUB YES, THEN SUBCHANNEL IS 0 * LDA LUMAX # OF LOGICAL UNITS DEFINED CMA,INA STA TEMP3 SAVE AS NEGATIVE COUNTER LDB DRT START OF DEVICE REFERENCE TABLE DRTLP LDA B,I GET AN ENTRY FROM DRT AND B77 MASK EQT # CPA TEMP SAVE AS NEW SYS CONSOLE'S EQT JMP DRTEN YES, FOUND NEW SYS CONSOLE'S ENTRY IN DRT * INB POINT TO NEXT ENTRY IN DRT ISZ TEMP3 INCREMENT COUNTER JMP DRTLP CHECK NEXT DRT ENTRY * NOSUB LDA TEMP EQT # OF NEW SYS CONSOLE RSS DRTEN LDA B,I SET UP DRT ENTRY FOR LU 1 STA DRT,I * EQTTY LDB $SAVE NEW CONSOLE'S EQT WORD 4 ADDRESS LDA B,I GET CONTENTS OF WORD 4 OF EQT AND B77 STA OLDSC OLD SC # FOR CONSOLE JSB EQUNB UNBUFFER EQT LDB TEMP2 SAVE BUFFERED/UNBUFFERED STATUS STB $SAVE+9 LDA ASVTB POINT TO ENTRY IN ADA .8 SVTBL FOR SYSTEM CONSOLE JSB SVENT ENTER NEW SC IN SVTBL JSB JNENT ENTER NEW & OLD SC IN INTBL & TRPCL NOP DO NOTHING ON ERROR RETURN CCA SET FLAG TO INDICATE DO NOT CLEAR STA NOCLR CURRENT EQT'S FOR NEW SC LDA OLDSC GET OLD SELECT CODE # JSB IPROC CONFIGURE INTRPT TBL & TRAP CELL LDA NEWSC NEW SELECT CODE JSB IPROC CONFIGURE NEW SELECT CODE LDA ARSTB POINTER INTO RSTBL FOR CONSOLE SC ADA .12 JSB RSENT MAKE ENTRIES IN RSTBL FOR CONSOLE SC CLA CLEAR FLAG STA NOCLR LDB RSTBL+17 EQT WORD 4 ADDRESS OF CONSOLE ADB N3 POINT TO FIRST WORD OF CONSOLE EQT STA B,I CLEAR THIS WORD * STRCN LDB .11 JSB WRTTY DEF MSG0 START RECONFIGURATION * CONFIGURE LIST DEVICE SELECT CODE * LSTDV LDB .8 JSB QUERY ASK FOR DEF MSG1 LIST DEVICE LU? LSTLU LDA PRSBF GET FIRST WORD OF PARSE BUFFER TRTMP SZA,RSS NULL? JMP LUDFL YES, THEN DEFAULT LU# SAVPG LDB APRSB ADDRESS OF PARSE BUFFER SVPG1 LDA LUMAX UPPER LIMIT FOR LU# STA MXLU# CLA,INA LOWER LIMIT FOR LU# JSB TST# TEST LU# MXLU# NOP JMP LUERR RSS LUDFL INA YES, THEN DEFAULT LU IS 1 STA LSTLU LIST DEVICE LU# * * LIST DEVICE SELECT CODE # * CCB LDA LSTLU CPA .1 SAME AS CONSOLE LU? JMP ECHO2 YES, DO NOT ASK FOR SELECT CODE# LDA LSTLU GET EQT# FOR LIST DEVICE LU ADA N1 ADA DRT ADDRESS OF DRT TABLE LDA A,I GET CONTENTS AND B77 LIST DEVICE EQT# IN A REG SZA,RSS BIT BUCKET? JMP LUERR YES ADA N1 MPY .15 GET EQT ADDRESS ADA EQTA ADA .3 POINT TO WORD 4 OF LIST DEV EQT STA $SAVE+8 SAVE ADDR OF WORD 4 OF LIST DEV EQT LULST LDB .13 JSB QUERY DEF MSG2 LIST DEVICE SELECT CODE #? LDA PRSBF FIRST WORD OF PARSE BUFFER SZA,RSS 0? JMP ECHOQ YES,NO CHANGE IN LIST DEV CHNL LDB APRSB ADDRESS OF PARSE BUFFER JSB TSTCH TEST VALIDITY OF LIST DEVICE SELECT CODE# JMP LULST SELECT CODE # NOT VALID STA NEWSC NEW SELECT CODE # FOR LIST DEVICE LDB $SAVE+8 ADDR OF WORD 4 OF LIST DEV EQT LDA B,I GET CONTENTS OF LIST DEV EQT WORD 4 AND B77 MASK SC # STA OLDSC OLD SC # FOR LIST DEVICE JSB EQUNB UNBUFFER LIST DEVICE EQT LDA TEMP2 STA $SAVE+10 LDA ASVTB ADDRESS OF SVTBL ADA .12 POINT TO LIST DEVICE ENTRIES JSB SVENT MAKE NEWSC ENTRY IN SVTBL JSB JNENT INTBL AND TRPCL ENTRIES NOP DO NOTHING ON ERROR RETURN CCA SET FLAG TO INDICATE DO NOT CLEAR STA NOCLR SC # FROM CURRENT NEWSC EQT'S LDA OLDSC ENTRY IN INTERRPT TABLE AND JSB IPROC AND TRAP CELL FOR OLD SELECT CODE LDA NEWSC AND NEW SELECT CODE FOR LIST DEVICE JSB IPROC LDA ARSTB POINTER INTO RSTBL FOR ADA .18 LIST DEVICE JSB RSENT MAKE ENTRIES IN RSTBL FOR LIST DEVICE CLA STA NOCLR RESET FLAG LDB RSTBL+23 GET EQT WORD 4 ADDR FOR LIST DEV ADB N3 POINT TO FIRST WORD OF LIST DEV EQT STA B,I CLEAR THE WORD * * ECHOQ LDB .7 JSB QUERY ECHO?(YES/NO) DEF MSG3 LDA PRSBF PARSE BUFFER CPA .1 NUMERIC VALUE? JMP ECHOQ YES, THEN ASK AGAIN CCB LDA PRSBF+1 FIRST TWO CHARACTERS CPA NO NO? JMP ECHO2 ECHO NOT REQUIRED? CPA YE YES? RSS JMP ECHOQ ERRONEOUS REPLY, ASK AGAIN ECHO CLB ECHO2 STB ECHO ECHO=0 ECHO WANTED,-1 ECHO NOT WANTED * * * PRINT A LIST OF CURRENT I/O CONFIGURATION * STIO DLD .ENT SET UP MESSAGE DST MSG4+2 LDB .13 JSB WRLST DEF MSG4 CURRENT I/O CONFIGURATION: JSB PRNIO * * WANT I/O CONFIGURATION? * WNTIO LDB .14 JSB QUERY DEF MSG9 I/O RECONFIGURATION?(YES/NO) LDA PRSBF+1 CPA NO CNTRP JMP MEMCN I/O CONFIG NOT REQIURED CNINT CPA YE LSTRP RSS LSINT JMP WNTIO ASK QUES AGAIN * * I/O RECONFIGURATION IS DESIRED * IOCN2 LDB .25 JSB WRTTY DEF MSG10 CURRENT SELECT CODE#,NEW SELECT CODE#?(/E TO END) IOCN3 CLB,INB JSB QUERY DEF HYPHN HYPHEN (-) PROMPT LDA PRSBF CPA .2 ASCII? JMP ENDIO CHECK IF END OF LIST LDB APRSB ADDRESS OF PARSE BUFFER JSB TSTCH TEST SELECT CODE VALIDITY JMP IOCN3 NOT VALID ASK AGAIN STA OLDSC OLD SELECT CODE LDA PRSBF+4 SECOND PARAMETER ASCII? CPA .2 RSS YES, CHECK IF IT IS PR JMP NEWCH NO, TEST NEW CHANNEL # LDA PRSBF+5 CPA PI PRIVILEGED I/O CARD TO BE ADDED? RSS YES JMP IOERR NO, THEN ERROR LDA OLDSC OLD SELECT CODE VALUE JSB CHKSC NEW SC VALUE FOR DISC,CONSOLE OR LIST? JMP ERR3 YES, THEN CONFIG ERR 3 LDA OLDSC NO, GET OLDSC # STA $SAVE+5 SET UP DUMMY WORD ON BASE PAGE ADA NB10 ADA AINTB POINT INTO INTBL CLB STB A,I CLEAR THE INTBL ENTRY FOR OLDSC LDA OLDSC CPA TBG TBG CHANNEL? STB TBG YES, CLEAR TBG WORD ON BASE PAGE ADA NB10 ADA ATRPC POINT INTO TRPCL TABLE LDB JSBCI INSERT JSB $CIC,I INSTR IN STB A,I TRPCL ENTRY FOR OLDSC LDA OLDSC ADA NB10 CAX SAVE A REG VALUE ADA AOLSC POINT TO OLD SC TABLE JSB PRVOL RESTORE PREV OLDSC IF NECESSARY CXA GET OLDSC - 10B ADA AOLSC POINT TO OLDSC ENTRY IN OLSTB CCB STB A,I NO OLDSC ASSIGNED CXA GET OLDSC -10B ADA AEQTB EQT TBL STB A,I ENTRY TO -1 JMP IOCN3 ASK FOR MORE * NEWCH LDB APRSB ADB .4 POINT TO VALUES FOR NEW SC LDA B IF THE NEW SELECT CODE # IS 0 INA DO NOT GO THRU TSTCH ROUTINE LDA A,I SZA JMP TSTNS NOT 0 THEN TEST NEW SELEC CODE LDB OLDSC GET OLD SELECT CODE # CPB PRVSV IS IT A PRIV I/O CARD? JMP STNWS YES, THEN 0 FOR NEWSC IS VALID JMP IOERR NO, THEN ERROR