ASMB,R,L,C HED SCGN5 91700-16143 REV.A 760108 * (C) HEWLETT-PACKARD CO. 1976 * NAM SCGN5,5 91700-16143 REV.A 760108 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 ************************************************** * *SCGN5 BCS GENERATOR SEGMENT * *SOURCE PART # 91700-18143 REV A * *REL PART # 91700-16143 REV A * *WRITTEN BY: LARRY POMATTO * *DATE WRITTEN: 9-18-74 * *MODIFIED BY: K. HAHN * *DATE MODIFIED: 6-27-75 * *************************************************** ************************************************** A EQU 0 B EQU 1 SUP * * * * * 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 INDCB,PRMT,GTOUT,ABDCB EXT FCRET,WRITF,FCLOS,CLSFI EXT FILCK,FERR,SWAPR,LSDCB,CMDLU EXT ENDLU,LOUT,.DFER,CNUMO,CNUMD * * * .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 * * LINTL BSS 1 STARTING BASE PAGE LINK ADDRESS WDCNT BSS 1 TEMPORARY WORD COUNTER * MAXC BSS 1 MAX CHAR COUNT TCHAR BSS 1 TEMPORARY CHAR SAVE AREA OCTNO BSS 1 OCTAL DIGIT * CURAL BSS 1 SETAD BSS 1 ABSOLUTE OUTPUT BUFFER ADDRESS * SPC 1 TEMP1 BSS 1 TEMP2 BSS 1 TEMP3 BSS 1 CURAT BSS 1 CURRENT TBUF ADDRESS TBUF BSS 4 TEMPORARY BUFFER PPREL BSS 1 TBREL BSS 1 * * AEQT BSS 1 ADDRESS OF EQUIPMENT TABLE CEQT BSS 1 NO. ENTRIES IN EQUIPMENT TABLE * * PROCT BSS 1 NO. OF INT. ENTRIES * * PARNO BSS 1 PARAMETER RECORD LENGTH * IODMA BSS 1 I/O DMA FLAG IN EQT IOBUF BSS 1 I/O BUFFERING FLAG IN EQT DFLAG BSS 1 DMA-IN FLAG FOR EQT BFLAG BSS 1 BUFFERING-IN FLAG FOR EQT INTCH BSS 1 INT RECORD CHANNEL NO. * DRANG BSS 1 DIGIT RANGE 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 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 * * UTILITY ROUTINES * * 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 * ALBUF DEF LBUF ATBUF DEF TBUF * * * ERR10 ASC 1,PA PARAMETER 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. ERR33 ASC 1,AD INVALID ENTRY POINT IN INT RECORD ERR34 ASC 1,UE UNDEFINED EXTERNAL PTERM ASC 1,EN 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 REQT ASC 1,RE RDRT ASC 1,RS RINT ASC 1,RI * MES25 DEF *+1 ASC 4,EQT TBL * OCT 6412 ASC 2,LU#: * MES2 DEF *+1 ASC 6,REL SYS MODS * SKP * * INITIALIZATION SECTION * * * THIS IS WHERE WE START. * 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 * * FWA BP? ENTER 4 OCTAL DIGITS * * LWA MEM? ENTER 5 OCTAL DIGITS * * FWA MEM ENTER 5 OCTAL DIGITS * * # WORDS COMMON 4 DEC DIGITS * * RSTRT NOP CLA STA NAMR. LDA LISTO AND N9 CLEAR BIT 3, FOR NEW HEADING STA LISTO * * * * SET FWA BP LINKAGE FWENT LDA P7 LDB MES27 MES27 = ADDR: FWA BP LINKAGE? JSB READ PRINT AND GET REPLY LDA P4 JSB DOCON GET 4 OCTAL DIGITS, CONVERT RSS INVALID DIGIT ENTERED 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 STB LINTL SAVE STARTING LINK ADDRESS FOR INT LINK TABLE CMB,INB CHECK IF GREATER THAN 1777 ADB B1777 SSB JMP LNKER YES IT IS...ERROR 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 SZA,RSS ZERO IS ERROR JMP SMLWE STA .MEM6 SAVE LWAM IN LWAC CMA,INA CHECK IF LESS THAN FWABP ADA .MEM1 SSA ERROR? JMP GETAV NO SMLWE JSB INERR YES...ERROR JMP SMLWA TRY AGAIN * GETAV LDA P8 PRINT: LDB MES34 "FWA 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 SZA,RSS ZERO IS ERROR JMP SYMER STA .MEM3 SAVE FIRST WORD MEM ADA N1 SET UP LWABP STA .MEM2 CMA,INA CHECK IF LOWER THAN FWABP ADA .MEM1 SSA,RSS ERROR? JMP SYMER YES LDA .MEM2 CMA,INA CHECK IF GREATER THAN 1777 LDB B1777 ADA B1777 SSA,RSS IF NEGATIVE...DEFAULT TO 1777 LDB .MEM2 GET ACTUAL STB .MEM2 SAVE AS LWABP * * GET # WORDS OF COMMON * GETCM LDA P14 LDB MES7 "# WORDS OF COMMON" JSB READ LDA N5 CONVERT DEC NUMBER JSB DOCON JMP COMER ERROR IN CONVERSIO LDA .MEM6 GET LWAM CMA ADA OCTNO SEE IF WE HAVE ROOM ADA .MEM3 SSA ERROR? JMP GTCM1 NO COMER JSB INERR ERROR JMP GETCM TRY AGAIN SPC 1 GTCM1 LDA OCTNO GET # OF WORDS SZA IF ZERO...NO COMMON .MEM4=.MEM5=.MEM6 CMA IF NOT ZERO...ALLOW FOR COMMON ADA .MEM6 STA .MEM4 SET IN LWAM... CPA .MEM6 IF=TO .MEM6...NO COMMON RSS INA OTHERWISE SET FWAC TO LWAM+1 STA .MEM5 * * DEFINE SYMBOLS NEEDED BY BCS * WHICH PCS NORMALLY DEFINES * THESE SYMBOLS ARE: * .EQT.,.SQT.,HALT,.MEM. * .EQT. IS BETWEEN THE 6 WORD SQT ENTRY AND THE * START OF THE 4 WORD EQT ENTRIES. IT CONTAINS * THE # OF EQT ENTRIES DEFINED * .SQT. WHERE THE START OF THE SQT TABLE IS LOCATED * .HALT IF DEFINED IS THE RESTART LOCATION * IF NOT DEFINED IT BECOMES A LOCKED HALT * .MEM. IS A 6 WORD TABLE WITH THE FIRST WORD * CONTAINING THE ADDRESS OF THE MEM TABLE * THE TABLE CONSISTS OF FWABP,LWABP,FWAM,LWAM * AND LWAM (THERE ARE TWO LWAM ENTRIES) * CLA CLEAR OUT LST ENTRIES STA LST STA .XFER LDA DEFLC GET ADDRESS OF ASC TABLE STA TEMP1 SAVE TO USE LDA N4 NUMBER OF ENTRIES TO DEFINE STA TEMP2 SAVE IN DOWN COUNTER ASGNM LDB TEMP1,I GET ENTRY ADDRESS STB DFER1 JSB SSTBL IT ISN'T DEFINED, WILL SET UP LST FOR US NOP LDA LST1 GET ADD WHERE TO PUT SYMBOL STA DFER2 SAVE FOR MOVE JSB .DFER MOVE IN NAME DFER2 NOP DFER1 NOP LDB LST3 LDA B,I AND M7400 STA B,I MASK OFF LOWER BYTE INB GET TO LST4 CLA SET AS SPECIAL DEFINED STA B,I INB GET TO LST5 LDA .MEM1 DEFINE A BASE PAGE LINK STA B,I ISZ .MEM1 INCREMENT FWABP ISZ TEMP1 GET TO NEXT ENTRY ISZ LST INCREMENT # OF LST ENTRIES ISZ TEMP2 DONE? JMP ASGNM NO * * * HERE GO RELOCATE THE SYSTEM * LDA P12 PRINT: LDB MES2 "REL SYS MODS" JSB PRINT PRINT * RELOCATE FROM RTS/2100 LOADER 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 LDB .IOCA SEE IF THEY DEFINED IOC JSB SSTBL JMP RELSE NO...ERROR LDB .HLTA SEE IF HALT DEFINED JSB SSTBL JSB GTOUT NOT DEFINED??? WE DEFINED IT...GET OUT LDA LST4,I NEEDED, SEE IF DEFINED SZA DEFINED? JMP CHCK3 YES * CHCK2 LDA .MEM3 GET ADDRESS STA LST4,I AND SAVE IT ISZ LST INCREMENT # OF ENTRIES LDA HTINA GET ADDRESS WHERE HALT INSTRUCTION LOCATED STA SETAD SAVE FOR PUNCHING IT OUT LDA JMPIN GET JUMP BASE PAGE INSTURCTION IOR .MEM1 SET IN BASE PAGE LINK STA HTIN+1 SAVE AS NEXT INST AFTER HALT LDA .MEM3 GET ADDRESS WHERE HALT TO GO LDB A INB SET FOR 2 WORD TRANSFER JSB SETCR WRITE OUT 2 WORDS LDA .MEM. SET FOR ADDRESS WHERE LINK CONTENTS ARE ADA P2 GET TO .MEM3 STA SETAD SAVE ADDRESS LDA .MEM1 GET OUTPUT ADDRESS LDB .MEM1 JSB SETCR SET IN LINK WORD ISZ .MEM1 ISZ .MEM3 ISZ .MEM3 SET FOR FWAM CHCK3 LDA ATBUF SET UP FOR OUTPUTING HALT LINK WORD STA SETAD LDA LST4,I GET ADDRESS WHERE HALT INSTRUCTION STA SETAD,I SAVE FOR OUTPUTING LDA LST5,I GET BASE PAGE LINK LDB LST5,I ADDRESS FOR OUTPUTING JSB SETCR AND GO OUTPUT LINK WORD LDA UEXFL SEE IF WE HAVE ANY UNDEFINED EXT. SZA,RSS UNDEFINED? JMP GENIO NO...CONTINUE RELSE LDA ERR34 UNDEFINED EXT JSB ERROR RESTART JMP RSTRT SPC 1 B1777 OCT 1777 .IOCA DEF *+1 ASC 3,.IOC. SKP * * * * 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 4,FWA MEM? MS27 ASC 4,FWA BP? MESS3 DEF *+1 ASC 5,LWA MEM? HTINA DEF *+1 HTIN HLT 77B DEFINED HALT INST NOP JMPIN OCT 124000 JMP BASE PAGE INDIRECT * * SKP * * BUILD 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. * SQT TABLE,DMA ASSIGNMENT, AND INTERUPT LINK TABLE * * THE EQT RECORDS HAVE THE FOLLOWING FORMAT: * * N1,D.N2<,D><,UX> * * N1 = CHANNEL NO. (2 OCTAL DIGITS) * N2 = DRIVER CLASS. CODE (2 OCTAL DIGITS) * D = DMA FLAG (OPTIONAL) * UX= SUB CHANNEL * * * EACH SQT RECORD CONSISTS OF A 2-DIGIT NO. SPECIFYING THE * CORRESPONDING ENTRY IN THE EQUIPMENT TABLE * * * THE INT RECORDS HAVE ONE OF THE FOLLOWING FORMATS: * * N1,N2,ENTRY POINT * N1,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) * * GENIO CLA SET # OF EQT'S TO ZERO STA CEQT CLEAR EQT COUNTER LDA .MEM3 FWAM STA SQTAD ADDRESS WHERE SQT GOES ADA P6 GET TO EQT ENTRIES STA AEQT SAVE AS CURRENT EQT ADDRESS INA SAVE ROOM FOR # OF EQT ENTRIES STA PPREL LDA P7 PRINT: LDB MES25 "EQT TBL" JSB PRINT * SEQT LDA CEQT EQT COUNT INA ADA P6 SET EQT#=EQT+6...START PRINTING AT 7 LDB MES6A STUFF INTO PRINT BUFFER JSB STFNM LDA P9 PRINT: LDB MES6 "EQT XX =?" JSB READ AND INPUT DRIVER REQUEST LDA N2 JSB GETNA MOVE 2 CHARS TO TBUF CPA PTERM CHARS= END ? JMP SSQTI YES, TRY TO END CPA REQT 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,U IOERR LDA ERR24 SET CODE = INVALID CHNL IN EQT JSB ERROR PRINT DIAGNOSTIC JMP SEQT GET NEXT EQT RECORD * CLDBU LDB OCTNO GET I/O CHANNEL NO. STB EQTW1 SET I/O ADDRESS ADB N8 IS CHAN EQ. LESS THAN 10? SSB JMP IOERR YES, CHANNEL ERROR CLA STA IODMA CLEAR DMA FLAG STA IOBUF CLEAR AUTOMATIC BUFFERING FLAG LDA N2 TWO CHAR COMPARE JSB GETNA SEE IF IT IS D. CPA ASCD. CHARS=D.? JMP STYPE YES DVERR LDA ERR25 SET CODE = INVALID DRIVER NAME JSB ERROR PRINT DIAGNOSTIC JMP SEQT GET NEXT EQT RECORD STYPE LDA N2 JSB GETNA MOVE 2 CHARS TO TBUF STA ASTYP SAVE 2 ASCII CHARS FOR I.XX,C.XX CCA ADA CURAL ADJUST CURRENT LBUF ADDR STA CURAL RESET CURAL TO CONVERT TYPE LDA P2 JSB GETOC GET 2 OCTAL CHARS, CONVERT JMP DVERR INVALID DRIVER NAME LDB OCTNO GET DRIVER TYPE BLF,BLF ROTATE TO UPPER B STB EQTW2 SET DRIVER TYPE JSB GETAL GET NEXT CHAR FROM LBUF CPA ZERO END OF BUFFER? JMP LISCN SCAN FOR I.XX, C.XX CPA BLANK CHAR = COMMA? RSS YES - CONTINUE JMP DVERR NO - INVALID DRIVER NAME * CCA STA DFLAG SET DMA-IN FLAG STA BFLAG SET BUFFERING-IN FLAG * INDBU CCA STA CMFLG SET COMMA FLAG = NO COMMA IN JSB GETAL GET NEXT CHAR FROM LBUF CPA CHARD CHAR = D? JMP SEDMA YES - SET DMA CODE CPA CHARU CHAR = U? JMP SETBU YES - SET BUFFERING CODE UNERR LDA ERR10 SET CODE = INVALID D,B,T JSB ERROR PRINT DIAGNOSTIC JMP SEQT GET NEXT EQT RECORD EQTST JSB GETAL GET NEXT CHAR FROM LBUF CPA ZERO END OF BUFFER? JMP LISCN SCAN FOR I.XX, C.XX CPA BLANK CHAR = COMMA? JMP INDBU YES - GET NEXT D,B,U, ENTRY JMP UNERR NO - INVALID D,B,U CHARACTER * SEDMA ISZ DFLAG SKIP - FIRST D ENTERED JMP UNERR DUPLICATE D'S ENTERED LDA MSIGN SET BIT 15 = 1 FOR DMA FLAG IOR EQTW1 SET IN DMA BIT STA EQTW1 AND SAVE IT JMP EQTST TEST FOR NEXT OPERAND * SETBU ISZ BFLAG HERE FOR SUBCHANNEL PROCESSING JMP UNERR DUPLICATE U'S ENTERED LDA N2 2 CHAR CONVERSION JSB GETOC JMP UNERR ERROR IN CONVERSION LSL 6 GET IN CORRECT POSITION FOR SUBCHANNEL IOR EQTW1 MERGE IT IN STA EQTW1 JMP EQTST AND CHECK FOR MORE * LISCN LDB ASDDR ADDRESS OF D.XX BUFFER JSB SSTBL IS IT IN THE SYMBOL TABLE? JMP DVERR NO LDA LST4,I YES, GET THE ADDRESS STA EQTW4 SAVE DRIVER START ADDRESS LDA EQTWA GET ADDRESS OF EQT TABLE STA SETAD SAVE FOR PUNCHING LDA PPREL GET CURRENT OUTPUT ADDRESS LDB A ADB P3 4 WORD EQT ENTRY STB PPREL SAVE FOR LATTER JSB SETCR OUTPUT IN ABS ISZ PPREL BUMP TO NEXT EQT ENTRY ISZ CEQT INCR EQT ENTRY COUNT JMP SEQT PROCESS NEXT EQT RECORD * SPC 1 * SSQTI LDA CEQT ANY EQT'S BEEN LOADED? SZA JMP SSQT YES, CAN END LDA ERR10 NO,AT LEAST ONE REQUIRED JSB ERROR PRINT: "ERR PA" JMP SEQT START OVER * SQTAD NOP EQTWA DEF *+1 EQTW1 NOP EQTW2 NOP NOP EQTW4 NOP SPC 1 ASCD. ASC 1,D. CHARU OCT 125 SKP * * SET DEVICE REFERENCE TABLE (SQT) * SSQT LDA P11 SEND OUT BEGINING MESSAGE LDB MESQ0 "SQT ENTRIES" JSB PRINT LDA MESQA GET ADDRESS OF MESSAGE BUFFERS STA CMSQA SAVE AS CURRENT LDA SQTEA GET ADDRESS OF START OF SQT ADDRESS STA CSQTE LDA N6 GET # OF SQT ENTRIES STA SQTCT SAVE IN DOWN COUNTER SPC 1 SQTIN LDB CMSQA GET ADDRESS OF MESSAGES LDA B,I INB LDB B,I JSB READ GET INPUT LDA N2 GET FIRST 2 CHARS JSB GETNA CPA RDRT RETRY SQT TABLE? JMP SSQT YES CPA REQT RETRY EQT TABLE? JMP GENIO YES JSB GINIT RESET FOR SCAN LDA P2 CONVERT SQT ENTRY JSB GETOC TO OCTAL JMP SQTER ERROR IN CONVERSION SZA,RSS 0 IS ILLEGAL JMP SQTER STA CSQTE,I SAVE VALUE ADA N7 CHECK IF IN RANGE SSA LESS THAN 6? JMP SQTER ERROR CMA CHECK IF OUT OF RANGE ADA CEQT SSA JMP SQTER OUT OF RANGE ISZ CMSQA GET NEXT MESSAGE ADDRESS ISZ CMSQA GET TO NEXT COUNT ISZ CSQTE GET NEXT STORAGE ADDRESS ISZ SQTCT DONE? JMP SQTIN NO...GET NEXT ENTRY * LDA SQTEA GET ADDRESS OF WHERE BUFFER TO BE OUTPUTED IS STA SETAD SAVE ADDRESS LDA SQTAD GET ABS OUTPUT ADDRESS LDB SQTAD GET ENDING ADDRESS ADB P5 JSB SETCR OUTPUT IT JMP GTDMA GO GET DMA FLAGS SPC 1 SQTER LDA ERR27 SQT ERROR JSB ERROR JMP SQTIN AND TRY AGAIN SPC 1 CMSQA NOP CSQTE NOP SQTCT NOP N7 OCT -7 SPC 1 SQTEA DEF *+1 REP 6 NOP SPC 1 MESQA DEF QMESA QMESA OCT 5 DEF KYBD? OCT 4 DEF TTY? OCT 4 DEF LIB? OCT 6 DEF PNCH? OCT 6 DEF INPT? OCT 5 DEF LIST? MESQ0 DEF *+1 ASC 6,SQT ENTRIES