ASMB,R,L,C RTMG1 * NAME: RTMG1 RTE-M SEGMENTED GEN.-LOADER (SEGMENT 5) * SOURCE: 91740-18050 * RELOC: 91740-16050 * PGMR: MIKE SCHOENDORF * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. 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. * * *************************************************************** * * HED RTE-M SYSTEM GENERATOR-LOADER NAM RTMG1,5 91740-16050 REV 1901 790101 * * 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 ABRT1,BPAGA,ER#OR EXT FUT1,FUT4,FUTI,FUTS EXT LNKDR,LST4 EXT LST5,LST,LSTUL,.MEM1,.MEM2 EXT .MEM3,.MEM4,OPT.3,PLK4,PLK,PLKS,REL06,RTMLI EXT SAVE1,SEGFL,SSTBL,UEXFL,UNDEF * EXT A$CIA,AINT#,ALBUF,ATBUF,BIDNT,BPFIX EXT CM#LG,CU#AL,CURAT,DO#ON EXT GBUF,GENRT,GE#AL,GE#NA,GE#OC EXT GI#IT,GNFLG,GNSG1,GNSG2,GREAD EXT GTIME,IDNOS,IN#RR,INTER EXT IP1,IP2,IP3,LDSEG,LSTSV,LWAMG,LWGBP,LWSA1,MATA EXT MAXPT,MPFT,MRMP,MSIZE,NMAX EXT OC#NO,PCOM,PP#EL,PRIN1,PRIN2 EXT PROCT,RANAD,RELOC EXT SP#CE,START,STRAD,STRPN EXT SYSTM,TBUF#,TB#HN,TCNT,WDCNT * EXT DU#MY * ERROR EQU ER#OR * AINT EQU AINT# CMFLG EQU CM#LG CURAL EQU CU#AL DOCON EQU DO#ON FTIME EQU GTIME GETAL EQU GE#AL GETNA EQU GE#NA GETOC EQU GE#OC GINIT EQU GI#IT INERR EQU IN#RR LBUF EQU GBUF OCTNO EQU OC#NO PPREL EQU PP#EL READ EQU GREAD SPACE EQU SP#CE TBCHN EQU TB#HN TBUF EQU TBUF# * * * * * * * .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 * * RTMG1 NOP NOP LDA GNSG1 WHERE GO FLAG SZA,RSS JMP RTMG3 PRINT "RTMGN" CPA P1 JMP TPSY1 SET TYPE OF SYSTEM CPA P2 JMP REL06 RET. TO SEG. THAT CALL LDR. SUBCONTROL CPA P3 JMP RTMG5 RELOCATE SYSTEM MODULES JMP RTMG6 RETURN FROM FIXUPS * * ID CLA STA SEGFL LAST SEGMENT FLAG CLA,INA SET FOR FIRST ENTRY TO STA GNSG2 GENERATOR SEGMENT 2 LDA P9 JMP LDSEG LOAD IN GEN SEG 2 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 TBG DEF .+20 I/O ADDRESS OF TIME-BASE CARD SYSTY DEF .+21 EQT ENTRY ADDRESS OF SYSTEM TTY * * * DEFINITION OF MEMORY ALLOCATION BASES * * DUMMY DEF .+55 I/O ADDRESS OF DUMMY INT. CARD * * UTILITY PARAMETERS * BGLWA DEF .+87 LWA MEMORY BACKGROUND PARTITION BPCLR DEF .+43 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 * TEMP1 NOP * * * * 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 * N2 DEC -2 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 1,I CLEAR BUFFER WORD INB ISZ WDCNT ALL WORDS CLEAR? JMP *-3 NO - CONTINUE CLEARING ISZ BUFCL JMP BUFCL,I RETURN * N64 DEC -64 SPC 5 * * SUBROUTINE TO CLEAR THE OUTPUT BUFFER * BUFC NOP JSB BUFCL OCT 0 JMP BUFC,I 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 GET THE ADDRESS OF THE FOLLOWING ENTRIES * IN THE LST, TO SET THEM TO THEIR PROPER VALUE, AND TO * OUTPUT THEM. * STUFF NOP STA LBUF SAVE VALUE OF ENTRY JSB SSTBL FIND IN LST JMP ABRT1 ISN'T THERE, START OVER LDA LST4,I GET ADDRESS LDB 0 JSB SETCR GO OUTPUT VALUE JMP STUFF,I SKP * * THE 3 WORD PROGRAM NAME IS PUT INTO THE RTMGN PROG * TABLE. THE NAMES ARE LOADED FROM THE TOP DOWN. * * CALLING SEQUENCE: * A = ADDRESS OF PROGRAM NAME * B = IGNORED * JSB LDIPX * * RETURN: A AND B ARE DESTROYED * LDIPX NOP STA IPXSV SAVE PROG NAME ADDRESS JSB INIPX INITIALIZE TO START OF TABLE LDA PROCT NUMBER OF ENTRIES ALS MULT X2 ADA PROCT PLUS ONE TO MAKE IT X3 CMA,INA ADA BIDNT BUILD NEXT NAME ADDRESS STA BIDNT FOR SAVE JSB IPX INITIALIZE IP POINTERS LDA IPXSV,I GET N1-N2 STA IP1,I PUT IN TABLE ISZ IPXSV BUMP POINTER LDA IPXSV,I GET N3-N4 STA IP2,I SAVE ISZ IPXSV LDA IPXSV,I GET N5-XX STA IP3,I SAVE ISZ PROCT BUMP NUMBER OF NAMES JMP LDIPX,I RETURN * IPXSV NOP PROGRAM NAME ADDRESS * SKP * * INIPX SETS THE ADDRESS OF THE FIRST ENTRY IN THE * PROGRAM IDENT TABLE AS THE CURRENT ADDRESS. * * * CALLING SEQUENCE: * A = IGNORED * B = IGNORED * * RETURN: A AND B DESTROYED * INIPX NOP LDA LWAMG ADA N2 STA BIDNT JMP INIPX,I * * * * 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 * * SKP * CONVERT A TO ASCII AT B * * THE CONVD SUBROUTINE CONVERTS THE CONTENTS OF A * INTO ASCII (DECIMAL OR OCTAL) AT THE LOCATION SPECIFIED * BY B. THE CONVERTED RESULT REQUIRES 3 WORDS, AND IS * IN THE FORMAT: XXXXX, WITH A SPACE IN THE FIRST POSITION. * * CALLING SEQUENCE: * A = NO. TO BE CONVERTED. IF THE SIGN OF A IS POS., * THE CONVERSION IS TO BE IN OCTAL; IF NEGATIVE, * IN DECIMAL. * B = ADDRESS OF CORE LOCATION FOR CONVERTED RESULT * JSB CONVD * * RETURN: CONTENTS OF A AND B ARE DESTOYED. * CONVD NOP STB CURAT SET MESSAGE ADDRESS LDB OPWRS GET ADDR OF OCTAL POWERS SSA SKIP IF OCTAL CONV REQUIRED LDB DPWRS GET ADDRESS OF DECIMAL POWERS STB RANAD SET POWER RANGE ADDRESS SSA,RSS SKIP IF NEGATIVE (DECIMAL) CMA,INA CONVERT NUMBER TO NEGATIVE STA 1 PUT NUMBER IN B (REMAINDER) LDA N2 STA TCNT SET CONVERSION COUNTER JSB GETD GET FIRST DIGIT IOR B20K ADD BLANK TO FIRST CHAR STA CURAT,I SAVE FIRST BLANK, CHARACTER ISZ CURAT INCR MESSAGE ADDRESS NEXTD JSB GETD GET NEXT DIGIT ALF,ALF ROTATE TO UPPER STA CURAT,I SAVE UPPER CHARACTER JSB GETD GET NEXT DIGIT IOR CURAT,I ADD UPPER CHAR STA CURAT,I SAVE NEXT 2 CHARACTERS ISZ CURAT INCR MESSAGE ADDRESS ISZ TCNT SKIP - 5 DIGITS IN JMP NEXTD NO - CONTINUE WITH NEXT DIGIT JMP CONVD,I YES - RETURN * B20K OCT 20000 SKP * * DPWRS DEF *+1 DEC 10000 DEC 1000 DEC 100 DEC 10 P1 DEC 1 OPWRS DEF *+1 OCT 10000 OCT 1000 OCT 100 OCT 10 OCT 1 * SKP SKP * * GETD PROVIDES THE ASCII CHARACTERS FOR CONVD. * * CALLING SEQUENCE: * A = IGNORED * B = REMAINDER * JSB GETD * * RETURN: * A = ASCII DIGIT * B = IGNORED * GETD NOP CLA INCRA ADB RANAD,I ADD POWER CMB,SSB,INB,SZB SKIP - TRY NEXT HIGHER DIGIT JMP *+4 DIGIT FOUND INA INCR DIGIT CMB,INB RESTORE REMAINDER TO NEGATIVE JMP INCRA TRY HIGHER DIGIT ADB RANAD,I ADD POWER CMB,INB RESTORE REMAINDER ISZ RANAD INCR POWER LIST ADDRESS IOR B60 CONVERT TO ASCII JMP GETD,I RETURN WITH DIGIT IN A * B60 OCT 60 * SKP 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 * * * RTMG3 CCA SET LINK DIRECTION FLAG STA LNKDR TO SYSTEM LINKS LDA P19 LDB MES01 GENERATOR STARTED JSB PRIN2 PRINT MESSAGE JMP RTMLI * * SET TYPE OF SYSTEM * TPSY1 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 PICA SAVE ADDRESS * * 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 LWGBP 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 P5 DEC 5 P7 DEC 7 P9 DEC 9 P17 DEC 17 P30 DEC 30 P32 DEC 32 * * MES01 DEF *+1 ASC 10,* GENERATOR STARTED 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? 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 PICA PRIV INT CARD ADD LDB DUMMY 1737B JSB STCR1 OUTPUT IT LDB B1770 CLA,INA JSB STCR1 SET MPTFL TO 1 JMP RTMLI * PICA NOP PRIV INT CARD ADD B1770 OCT 1770 SKP * * RELOCATE SYSTEM MODULES * RTMG5 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 JMP ERRER,I * SKP * A$CIC DEF *+1 ASC 3,$CIC A$STR DEF *+1 ASC 3,$STRT * MES02 DEF *+1 ASC 7,* REL SYS MODS * AB ASC 1,AB AD ASC 1,AD INVALID ENTRY POINT IN INT REC * P6 DEC 6 P12 DEC 12 UDFE OCT 77777 * BLANK EQU P32 * * SKP * 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 HED RTMGN GENERATE I/O TABLES * * 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 = # WORDS OF EQT EXTENSION * * 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) * * # OF I/O CLASSES * TBGEN LDA .MEM3 SET PROGRAM COUNTER TO FWAM STA PPREL LDA SYSTM GET SYSTEM TYPE CPA P1 TYPE 1? JMP BLMT YES, GET BUFFER LIMITS LDA .MEM3 SET PROGRAM COUNTER TO FWAM STA PPREL LDA .MEM2 RESET LWABP LDB BPFIX STA BPFIX STB .MEM2 JSB BUFC JSB SPACE NEW LINE IOCLS JSB INTER INTERACTIVE INPUT LDA P19 LDB MES20 # OF I/O CLASSES? JSB TABLE PRINT MESSAGE, ANALYZE REPLY JMP IOCLS ERROR, REPEAT INPUT LDB D$CLS ADDRESS OF ENT NAME JSB ENPNT FIND ENTRY IN LST * * # OF RESOURCE NUMBERS * JSB SPACE NEW LINE RNUMB JSB INTER INTERACTIVE INPUT LDA P24 LDB MES21 # OF RESOURCE NUMBERS? JSB TABLE PRINT MESSAGE, ANALYZE REPLY JMP RNUMB ERROR, REPEAT INPUT LDB D$RNT ADDRESS OF ENTRY NAME JSB ENPNT FIND ENTRY IN LST LDA BPFIX RESET LWABP STA .MEM2 BLMT LDA P3 STA GNFLG LDA P3 STA GENRT * * BUFFER LIMITS (LOW,HIGH) * JSB SPACE NEW LINE BLMTS JSB INTER INTERACTIVE INPUT LDA P27 LDB MES22 BUFFER LIMITS (LOW,HIGH)? JSB READ PRINT MESSAGE, GET REPLY JSB BLSET SET UP DEF $BLLO LOWER LIMIT JMP BLMT0 ERROR JSB BLSET NOW SET UP THE UPPER LIMIT DEF $BLHI JMP BLMT0 ERROR JMP GEN00 * BLMT0 JSB INERR ERROR JMP BLMTS REPEAT INPUT SKP * * GENERATE I/O TABLES * GEN00 LDA PPREL STA .MEM3 SET FWAM JSB SPACE NEW LINE GENIO JSB INTER INTERACTIVE INPUT CLA STA UNDEF SET TO PRINT ALL UNDEFS STA OPT.3,I ZERO FIXUP COUNTER STA IDNOS ID'S MADE STA STRPN START UP PROGRAM FLAG STA CEQT NOS OF EQT'S STA PROCT NOS OF INT PROG ENTRIES STA START START UP PROGRAM USED * * EQT TABLE * JSB SPACE NEW LINE JSB FUTI INITIALIZE FIXUP TABLE LDA .MEM3 FWAM STA AEQT EQT STARTING ADDRESS STA PPREL LDA P9 PRINT: LDB MES25 "EQT TBL" JSB PRIN1 JSB SPACE NEW LINE * SEQT JSB INTER INTERACTIVE INPUT JSB SPACE NEW LINE SEQT1 JSB INTER INTERACTIVE INPUT LDA CEQT EQT COUNT INA LDB MES6A STUFF INTO PRINT BUFFER JSB STFNM LDA P11 LDB MES06 EQT XX =? JSB READ PRINT MESSAGE, GET REPLY LDA N2 JSB GETNA MOVE 2 CHARS TO TBUF CPA EN CHARS= END ? JMP SSQTI YES, TRY TO END CPA RE REPEAT? JMP GENIO YES * JSB GINIT INITIALIZE BUFFER SCAN LDA P2 JSB GETOC GET 2 OCTAL DIGITS, CONVERT JMP IOERR INVALID DIGIT JSB GETAL GET NEXT CHAR FROM LBUF CPA BLANK CHAR = COMMA? JMP CLDBU YES - SET CHNL NO., CLEAR D,B,T,X IOERR LDA CH SET CODE = INVALID CHNL IN EQT JSB ERRER ERROR JMP SEQT1 REPEAT INPUT SKP