ASMB,R,L,C * * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. 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 XL GENERATOR SEGMENT 3 NAM L20G3,5 92071-1X080 REV.2041 800715 * * NAME: RTE XL GENERATOR SEGMENT 3 * SOURCE: 92071-18080 * PGMR: B.C. * ENT L20G3 * * EXT EXEC * EXT DSTRG,IPBUF,DIPBF EXT OP?,ASTRX EXT EXIT,CNUMO,L.BUF * EXT NAMR,READF,OPEN,CLOSE EXT SDCB3 EXT PPREL,LNKDR,.ENTR,.MBT,.CBT EXT TDBP,LDBP,CSDBP,CUDBP,BPFWA * EXT READ,FLERR,NAMRR,DRKEY,SPACE,MOVE EXT LOCC EXT CNV99,L.ADD EXT ERRCT,CONSL,AINT,STCR1 EXT CBP.L,FXN.L,LSY.L,L.CLS,PRERR * SUP PRESS EXTRANIOUS LISTING * SKP * L20G3 JSB SPACE LDA LOCC STA PPREL LDA P10 STA CONSL LDB DMES8 TABLE GENERATION JSB DRKEY OUTPUT MESSAGE JSB SPACE JMP GTIFT GET THE IFT TABLES * DMES8 DEF MES8 MES8 ASC 5,* TBL GEN * SKP * * * GET THE IFT TABLE * GTIFT NOP LDA D$DVT LDB LOCC JSB FSYMB FIND ADDRESS OF $DVTA AND PATCH JSB MSENT MISSING SYSTEM ENTRY POINT * LDA FXN.L STA FUT1 GET FIXUP ADDRESS AND SAVE ADA N4 STA OPT3 1ST ADDRESS OF FIXUP FOR GENERATOR CLA,INA STA CIFT IFT COUNT STA CDVT DVT COUNT JSB SPACE CLA STA MAXLU SIFT1 LDA P10 LDB DMS12 IFT TBL ? JSB DRKEY OUTPUT MESSAGE JSB SPACE JSB BUFC JSB READ READ INPUT JMP EXIT LDA OP? CPA IF IFT ? JMP SIFT5 YES , IT IS AN IFT CPA EN IS IT AN END? JMP ENIFT YES , END THE IFT ENTRIES JMP IFERR NO , IT IS AN ERROR * SIFT5 CCA STA DFLAG SET DRIVER IN FLAG STA SCFLG SET SELECT CODE IN FLAG CLA STA LDTYP STA SCNM STA EXTWD LDA MSIGN STA QUEUE DEFAULT QUEUE TO FIFO * JSB NAMRR GET FILE NAME SSA JMP IFERR LDA N6 JSB MOVE DEF IPBUF+0 DEF FILE5 LDA TYPE5 AND P3 STA TYPE5 ERA,SLA IS IT A FILE? JMP F5OPN YES JMP IFERR ERROR , NOT A FILE * F5OPN JSB OPN5 * L.MOR JSB L.RED DEF *+2 DEF FLAG SSA EOF ON THE RELO FILE? JMP IF8 YES , RETURN TO COMMAND FILE INPUT * JSB L.CLS DEF *+3 DEF TYPE DEF SBFLD SUBFIELD , GEN=0 SSA RTN REC TYPE , 0=OK , -1=CK SUM ERR JSB ERROR , -2=ILL REC * LDA TYPE CPA P1 IS IT NAM RECORD? JSB MNAM YES , SAVE NAM AS DEFAULT ENTRY POINT * * LDA TYPE CPA P7 GEN OR LOD REC? RSS YES JMP L.MOR NO , READ ANOTHER RECORD LDA SBFLD GET SUB FIELD SZA GEN RECORD? JMP L.MOR NO * LDA LEN GET RECORD LENGTH ADA N3 SUBTRACT OFF 3 HEADER WD ALS MULTIPLY BY 2 STA LEN TO GET CHARACTER LENGTH CLA,INA STA ISTRF STA RELFG * LDA LEN LDB LBUF3 ECHO GEN RECORD JSB DRKEY * IF5 JSB NAMRF SSA JMP L.MOR READ NEXT INFO JMP IF15 * IF8 JSB CLOSE CLOSE THE RELO FILE DEF *+2 DEF SDCB3+0 * CLA STA RELFG END OF RELOC FILE SKP * GET SELECT CODE , QUEUEING , AND TABLE EXTENSION * IF10 JSB NAMRR SSA JMP IF50 END OF STRING IF15 LDB DIPBF ADB P3 LDA B,I ARS,ARS TYPE OF SUBPARAMTER AND P3 INB LDB B,I GET ACTUAL SUBPARAMETER STB SUBP1 AND SAVE IT LDB A LDA DIPBF,I GET FNAME CPA SC IS IT THE SELECT CODE JMP SELCD YES CPA QU IS IT THE QUEUE TYPE? JMP SETQU YES CPA TX IS IT THE # OF IFT EXTENSION? JMP SETTX YES , SET THE # OF EXTENSION CPA IT IS IT THE INTERFACE TYPE? JMP SETIT YES AND HIMSK CPA E IS IT AN ENTRY PT. ? JMP SETPD YES IFERR LDA P3 IFT INPUT ERROR JSB LDRER PRINT IT JMP DVT AND CONTINUE TO GET DVT * * SELECT CODE * SELCD ISZ SCFLG JMP SCERR CPB P1 IS IT NUMERIC? RSS YES JMP SCERR LDA SUBP1 GET THE SELECT CODE ADA N16 SSA SC LT 20B JMP SCERR YES , ERROR LDA SUBP1 GET THE SELECT CODE CMA,INA ADA B57 SSA SC GT 57B? JMP SCERR YES , ERROR LDA SUBP1 GET SELECT CODE JSB CKSC GO CHECK SC FOR DUPLICATION JMP SCERR YES , DUPLICATION LDA SUBP1 GET THE SELECT CODE STA SCNM AND SAVE IT JMP IF20 SCERR LDA P13 JSB LDRER JMP IF20 SKP * * QUEUING TYPE * SETQU CLB LDA SUBP1 CPA PR IS IT PRIORITY JMP QYES YES , SET BIT TO 0 INB NO CPA FI IS IT FIFO? RSS YES JMP QUERR ERROR QYES RBR STB QUEUE JMP IF20 * QUERR LDA P14 JSB LDRER JMP IF20 * * * SET THE EXTENSION WORD * SETTX CPB P1 RSS JMP TBERR LDA SUBP1 SSA POSITIVE? JMP TBERR NNO ADA N512 SSA,RSS LESS THAN 512? JMP TBERR NO , ERROR LDA SUBP1 YES , GET # OF EXT WD STA EXTWD SAVE IT JMP IF20 TBERR LDA P15 JSB LDRER * IF20 LDA RELFG SLA INFO FROM WHICH FILE? JMP IF5 IFT INFO FROM RELO FILE JMP IF10 IFT INFO FROM COMMAND FILE * * * ERROR NOP ILL REC OR CK SUM IN RELO REC CLA JSB LDRER JMP ERROR,I * SKP * * ENTRY POINT * SETPD ISZ DFLAG NOP LDA DIPBF RAL INA LDB DASCP RBL JSB .MBT MOVE BYTE DEF P5 NOP JMP IF20 * * * * SET THE INTERFACE TYPE * SETIT CPB P1 NUMERIC? RSS YES JMP TYERR NO , ERROR LDA SUBP1 GET PARAMETER SSA POSITIVE? JMP TYERR NO , ERROR CMA,INA YES , NEGATE ADA P63 SSA LESS THAN 63? JMP TYERR NO LDA SUBP1 GET PARAMETER STA LDTYP YES , SAVE THE INTERFACE TYPE JMP IF20 * TYERR LDA P12 INTERFACE TYPE ERROR JSB LDRER JMP IF20 * * SKP * IF50 LDA P13 LDB SCFLG GET SELECT CODE IN FLAG SSB JSB LDRER LDA DFLAG GET THE DRIVER IN FLAG SSA,RSS IS THE DRIVER ENTRY POINT IN? JMP IF55 YES LDA DMES8 NO , USE NAM AS DEFAULT RAL LDB DASCP RBL JSB .MBT DEF P5 NOP IF55 JSB FUTP SET UP FOUR POINTER FOR FIXUP LDA LSY.L CHECK FOR FIXUP OVERFLOW CMA ADA FUT4 SSA JMP LER5 YES, OVERFLOW NOP LDA CIFT IFT # ALF,ALF IOR MSIGN FLAG AS IFT FIXUP IOR LDTYP IFT # & DRIVER TYPE STA FUT1,I WORD 1 OF FIXUP CLA STA VALUA JSB DVADD FIND DRIVER ENTRY POINT LDA P9 LDB RESLT GET RESULT SZB ENTRY POINT THERE? JSB LDRER NO , UNDEFINED DRIVER ENTRY POINT LDA VALUA GET ADDRESS OF ENTRY POINT * LDB FUT1 ADB N1 PHYSICAL DRIVER ADDRESS STA B,I WORD 2 OF FIXUP ADB N1 LDA PPREL CURRENT DVT ADDRESS STA B,I WORD 3 OF FIXUP LDA SCNM SELECT CODE ALF,ALF RAL IOR EXTWD # OF TX IOR QUEUE QUEUEING TYPE & S.C. & # OF TX STA FUT4,I WORD 4 OF FIXUP ISZ OPT.3,I BUMP UP # OF FIXUP * LDA CIFT LDB DM#37 JSB STFNM JSB SPACE LDA P8 LDB DMS37 JSB DRKEY PRINT IFT # * ISZ CIFT JMP DVT LET GET A DVT * SKP * * DASCP DEF ASCPD ASCPD NOP NOP NOP * DMS12 DEF MES12 MES12 ASC 5,* IFT TBL? * D$IFT DEF $IFTA $IFTA ASC 3,$IFTA * D$IF# DEF $IFT# $IFT# ASC 3,$IFT# * DMS13 DEF MES13 MES13 ASC 5,* DVT TBL? * D$DVT DEF $DVTA $DVTA ASC 3,$DVTA * D$DV# DEF $DVT# $DVT# ASC 3,$DVT# * DM#35 DEF M#35 DMS35 DEF MES35 MES35 ASC 3,* DVT M#35 NOP ASC 3, * DM#37 DEF M#37 DMS37 DEF MES37 MES37 ASC 3,* IFT M#37 NOP ASC 3, * F5 DEF FILE5 FILE5 BSS 3 TYPE5 NOP F5SC NOP F5DSC NOP IERR5 NOP * SKP * * DVT TABLE * DVT JSB SPACE NEW LINE LDA P10 PRINT: LDB DMS13 "DVT TBL" JSB DRKEY JSB SPACE NEW LINE * SDVT1 JSB SPACE NEW LINE JSB BUFC JSB READ PRINT MESSAGE, GET REPLY JMP EXIT LDA OP? CPA EN CHARS= END ? JMP SIFT1 YES, TRY TO END CPA IF ANOTHER IFT ? JMP SIFT5 YES CPA DV IS IT A DVT? RSS YES JMP UNERR NO , IT IS AN ERROR ISZ DVTIN DVT IN FLAG SKP * CLA STA QUEUE STA DVRAD LOGICAL DRIVER ENTRY POINT STA TIMWD CLEAR TIME WORD STA EXTWD CLEAR DVT EXTENSION WORD STA #LU CLEAR THE LU COUNT STA #DP CLEAR THE DRIVER PARMETER COUNT STA MFG CLEAR ACCEPT THE PARAMETER FLAG CCA STA TBUF STA MDLFD SET FLAG MODEL NOT SPECIFIED = -1 STA BFLAG SET BUFFERING-IN FLAG STA DFLAG SET LOGICAL DRIVER IN FLAG STA RFLAG SET # OF DRIVER PARM IN FLAG STA PFLAG SET DRIVER PARMETER IN FLAG STA LUFLG SET THE LU IN FLAG LDA BLIM STA HIBUF SET THE DEFAULT LIMIT LOW=100,HIGH=400 LDA P63 SET DEFAULT DEVICE PRIORITY TO 63 STA DEVPR LDA B70 STA LDTYP SET DEFAULT DEVICE TYPE TO 70B AN INSTRUMENT * LDA FUT4 SET UP DP IN FREE MEMORY ADA N1 STA CFUT4 STA DPA DRIVER PARAMETER ADDRESS ADA N1 STA PFUT4 CLA STA CFUT4,I ZERO OUT DP COUNT * JSB NAMRR GET FILE NAME SSA JMP UNERR LDA N6 JSB MOVE DEF IPBUF+0 DEF FILE5 * JSB NAMRR GET MODEL # SSA JMP UNERR LDB DIPBF ADB P3 LDA B,I GET TYPE AND P3 SZA,RSS IS IT NULL JMP FOPEN YES CLA STA MDLFD SET FLAG MODEL SPECIFIED = 0 LDA N10 NO JSB MOVE DEF IPBUF+0 DEF TBUF * FOPEN LDA TYPE5 GET FILE TYPE AND P3 STA TYPE5 SZA,RSS IS IT A NULL? JMP IF90 YES CPA P3 IS IT A FILE NAME? RSS YES JMP UNERR NO * JSB SPACE JSB OPN5 * * L.MR JSB L.RED DEF *+2 DEF FLAG SSA EOF ON THE RELO FILE? JMP IF80 YES , RETURN TO COMMAND FILE INPUT * JSB L.CLS DEF *+3 DEF TYPE DEF SBFLD SUBFIELD SSA RTN REC TYPE , 0=OK , -1=CK SUM ERR JSB ERROR * * LDA TYPE CPA P1 IS IT THE NAM RECORD? JSB MNAM YES , USE NAM AS THE DEFAULT ENTRY POINT * * LDA TYPE CPA P7 GEN OR LOD RECORD? RSS JMP L.MR NO , READ ANOTHER RECORD LDA SBFLD GET GEN RECORD SZA GEN RECORD? JMP L.MR NO * LDA LEN GET RECORD LENGTH ADA N3 SUBTRACT OFF 3 HEADER WD ALS MULTIPLY BY 2 STA LEN TO GET CHARACTER LENGTH CLA,INA STA ISTRF STA RELFG STA PNFLG SET FIRST TIME PRINT FLAG * IF60 JSB NAMRF SSA JMP L.MR READ NEXT INFO LDA DIPBF,I GET FIRST INPUT AND HIMSK CPA M IS IT THE MODEL #? JMP IF65 YES LDA MFG CPA P1 ACCEPT THE PARAMETERS? JMP L.MR NO , GET ANOTHER MODEL? LDA PNFLG GET PRINT IT FLAG CPA P1 RSS YES , 1ST TIME FLAG JMP IFN10 NO , NOT 1ST TIME FLAG INA STA PNFLG LDA LEN LDB LBUF3 ECHO THE GEN RECORD JSB DRKEY JMP IFN10 GET NEXT PARAMETER * IF65 CLA,INA STA MFG SET IN THE MODEL SECTION LDA MDLFD CPA P1 HAS THE MODEL # BEEN FOUND? JMP IF80 YES , CLOSE RELO FILE AND CONTINUE CLB NO LDA DIPBF ADA P3 STB A,I CLEAR OUT PARM TYPE WD STB TBUF+3 CLEAR OUT PARM TYPE WD LDA DIPBF COMPARE MODEL # ? RAL LDB ATBUF RBL JSB .CBT COMPARE THEM DEF P20 NOP JMP IF70 YES , MODEL # MATCHED JMP L.MR JMP L.MR IF70 CLA STA MFG ACCEPT THE PARARMETER IN MODEL # INA STA MDLFD YES , MODEL FOUND JMP IF60 * IF80 JSB CLOSE CLOSE THE RELO FILE DEF *+2 DEF SDCB3+0 * LDA MDLFD SZA DID WE FIND THE MODLE #? JMP IF90 YES , MODEL FOUND LDA P24 NO , GIVE ERROR MESSAGE JSB LDRER * IF90 CLA STA RELFG END OF RELOC FILE CCA STA PFLAG JSB SPACE * * SKP IFN JSB NAMRR SSA JMP LISCN END OF STRING IFN10 LDB DIPBF ADB P3 LDA B,I STA OFST2 SUB PARAMETER TYPE ARS,ARS AND P3 INB STB OFST1 SUB PARAMETER ADDRESS LDB B,I GET ACTUAL SUBPARAMETER STB SUBP1 AND SAVE IT LDB A LDA DIPBF,I CPA BL IS IT BUFFER LENGTH ? JMP SETBL YES CPA DP IS IT DRIVER PARAMETER ? JMP SETDP YES CPA DT IS IT DRIVER TYPE ? JMP SETDT YES CPA LU IS IT LOGICAL UNIT ? JMP SETLU YES CPA PR IS IT PRIORITY ? JMP SETPR YES CPA TO IS IT TIME OUT ? JMP SETTO YES CPA TX IS IT # OF TABLE EXTENSION ? JMP SETBX YES CPA DX IS IT # OF DRIVER PARAMETER JMP SETDX YES CPA QU IS IT QUEUING TYPE? JMP STQU YES , SET QUEUEING TYPE CPA DASH IS IT A CONTINUATION? JMP MORIN YES AND HIMSK CPA E IS IT THE DRIVER ENTRY POINT? JMP SETLD YES LDA P11 WHAT IS IT ?????? JSB LDRER JMP SDVT1 * MORIN JSB READ JMP EXIT JMP IFN10 * * IFN20 LDA RELFG SLA JMP IF60 JMP IFN * SKP * * SET TIME OUT * SETTO CPB P1 NUMERIC? RSS JMP TOERR NO , ERROR LDA SUBP1 GET TIME OUT VALUE SZA CMA ONE'S COMPLEMENT FOR THAT TIME STA TIMWD SAVE FOR OUTPUT JMP IFN20 * TOERR LDA P16 JSB LDRER JMP IFN20 * * TABLE EXTENSION * SETBX CPB P1 RSS JMP TXERR LDA SUBP1 GET # OF TABLE EXTENSION ADA N512 SSA,RSS LESS THAN 512? JMP TXERR NO , ERROR LDA SUBP1 YES , GET # OF TABLE EXTENSION STA EXTWD SAVE # OF EXTENSIONS JMP IFN20 * TXERR LDA P15 JSB LDRER JMP IFN20 * * DEVICE PRIORITY * SETPR CPB P1 IS IT NUMERIC? RSS JMP PRERS LDA SUBP1 GET DEVICE PRIORITY ADA N64 SSA,RSS LESS THAN 64? JMP PRERS NO , DEVICE PR ERROR LDA SUBP1 YES STA DEVPR JMP IFN20 * PRERS LDA P20 JSB LDRER JMP IFN20 * SKP SKP * * DRIVER PARAMETER SIZE * SETDX CPB P1 IS IT NUMERIC? RSS YES JMP DXERR NO , ERROR LDA SUBP1 GET DX SIZE SSA POSITIVE? JMP DXERR NO ADA N128 SSA,RSS LESS THAN 128? JMP DXERR NO , ERROR LDA SUBP1 GET SIZE CMA,INA NEGATE ADA PFUT4 FIXUP ADDRESS STA DPBND SAVE IN DP LOWER BOUND CMA,INA NEGATE ADA LSY.L ADD SYMBOL TABLE UPPER BOUND SSA,RSS OVERFLOW? JMP LER5 YES , SYSTEM OVERFLOWED STB RFLAG SET DX IN * LDA SUBP1 GET NEW SIZE CMA,INA ADA #DP ADD OLD SIZE SSA,RSS IS NEW DX BIGGER? JMP SDX20 NO STA ZTEM5 YES , SAVE DIFFERENCE CLB CLEAR THE BIGGER AREA LDA SUBP1 CMA,INA ADA PFUT4 STDX5 STB A,I CLEAR NEW DP AREA INA ISZ ZTEM5 JMP STDX5 SDX20 LDB SUBP1 STB #DP STB CFUT4,I NEW DP COUNT JMP IFN20 * DXERR LDA P21 JSB LDRER JMP IFN20 * SKP * * DEVICE TYPE * SETDT CPB P1 RSS JMP DTERR LDA SUBP1 SSA POSITIVE? JMP DTERR NO ADA N64 SSA,RSS LESS THAN 64? JMP DTERR NO LDA SUBP1 YES ALF,ALF STA LDTYP AND SAVE IT JMP IFN20 * DTERR LDA P18 JSB LDRER JMP IFN20 * SKP * * SET BUFFER LIMITS * SETBL CLA LDB SUBP1 CPB BU IS 1ST PARM BUFFERING? JMP SBL5 YES ,SET FLAG CPB UN NO , IS IT UNBUFFERING? JMP SBL10 YES SZB IS IT A NULL? JMP BLERR NO , ERROR RSS YES SBL5 STB BFLAG SET BUFFER FLAG SBL10 LDB DIPBF YES , GET LOWER LIMIT ADB P3 LDA B,I ARS,ARS ARS,ARS AND P3 CPA P1 IS IT NUMERIC? RSS YES JMP BLERR NO , ERROR ADB P2 LDA B,I GET LOWER LIMIT SSA POSITIVE? JMP BLERR NO STA LOBUF AND STORE IT LDB DIPBF GET UPPER LIMIT ADB P3 LDA B,I ALF,ALF RAL,RAL AND P3 CPA P1 IS IT NUMERIC? RSS YES JMP BLERR ADB P3 LDA B,I GOT IT STA HIBUF LDB LOBUF GET LOWER LIMIT CMB,INB NEGATE ADB HIBUF SSB HI LIMIT > LOW LIMIT JMP BLERR NO , ERROR ASR 4 DIVIDE BY 16 BLF,BLF SHIFT UP TO UPPER 8 BITS STB HIBUF LDB LOBUF ASR 4 STB A IOR HIBUF MERGE IN THE HIBUF LIMIT STA HIBUF SAVE IT JMP IFN20 * BLERR LDA P17 JSB LDRER JMP IFN20 SKP * * SET DRIVER PARAMETER * SETDP SZB,RSS NULL? JMP SDP30 YES , EXIT LDA B60 STA MASK SAVE IT AS A MASK LDA N5 STA CNT1 LDB SUBP1 GET PARAMETER POSITION POINTER CMB,INB ADB #DP ADD DP COUNT SSB IS PARAMETER WITHIN RANGE? JMP DPERR NO , ERROR * LDB SUBP1 GET POINTER AGAIN CMB,INB ADB PFUT4 INB ADDRESS TO STORE DP SDP10 LDA OFST2 GET PARMATER TYPE AND MASK SZA,RSS JMP IF NOT NULL JMP SDP30 NULL , FINISH LDA MASK RAL,RAL STA MASK * ISZ OFST1 SUB PARM ADDRESS LDA OFST1,I GET SUB PARM CPB DPBND ADDRESS EXCEEDED DP BOUND? JMP DPERR YES STA B,I ADB N1 ISZ CNT1 ANY MORE SUB PARM? JMP SDP10 YES SDP30 JMP IFN20 NO * DPERR LDA P19 JSB LDRER JMP IFN20 * SKP * * SET LU'S * SETLU ISZ LUFLG GET THE LU'S JMP LUERR CPB P1 IS IT NUMERIC? RSS JMP LUERR CLA STA LU1 STA LU2 STA LU3 LDA SUBP1 GET SUB PARM 1 STA LU1 LDA OFST2 GET PARM TYPE AND B60 GET 2ND SUB PARM TYPE SZA,RSS JMP IFN IT IS THE END ARS 4 CPA P1 IS IT NUMERIC? JMP LUERR NO , ERROR ISZ OFST1 YES LDA OFST1,I GET IT STA LU2 STORE 2ND LU LDA OFST2 3RD SUB PARM TYPE AND B300 SZA,RSS JMP IFN IT IS THE END CPA P64 IS IT NUMERIC? RSS YES JMP LUERR ISZ OFST1 LDA OFST1,I GET 3RD LU STA LU3 AND STORE IT JMP IFN20 * LUERR LDA P22 JSB LDRER JMP IFN20 * SKP * * * ENTRY POINT * SETLD ISZ DFLAG NOP LDA DIPBF RAL INA LDB DASCP RBL JSB .MBT MOVE BYTE DEF P5 NOP * CLA STA VALUA JSB DVADD FIND DRIVER ENTRY POINT LDA P9 LDB RESLT SZB ERROR JSB LDRER YES , UNDEFINED DRIVER ENTRY POINT LDA VALUA STA DVRAD SAVE IN DRIVER ADDRESS JMP IFN20 * * * UNERR LDA P4 JSB LDRER JMP SDVT1 * * SET DVT QUEUEING * STQU CLB LDA SUBP1 GET THE PARAMETER CPA PR IS IT PRIORITY? JMP QOK YES INB NO CPA FI IS IT FIFO? RSS YES JMP QERR QOK RBR STB QUEUE JMP IFN20 * QERR LDA P14 JSB LDRER JMP IFN20 * SKP * LISCN JSB CNUMO CONVERT DVT ADDRESS TO OCTAL DEF *+3 DEF PPREL+0 DEF MES35+4 LDA CDVT LDB DM#35 JSB STFNM JSB SPACE LDA P14 LDB DMS35 JSB DRKEY PRINT DVT ADDRESS JSB SPACE * JSB BUFC LDB DSTRG ADDRESS OF STRING CCA STA B,I DVT 1 LINK WORD INB LDA QUEUE STA B,I DVT 2 QUEUE BIT 15 INB LDA PPREL ADA P2 STA B,I DVT 3 CIRCULAR NODE POINT TO DVT 3 INB LDA PPREL STA B,I DVT 4 CIRCULAR DVT POINT TO DVT 1 ADB P2 LDA LDTYP STA B,I DVT 6 DEVICE TYPE ADB P2 CLA ISZ BFLAG IS BUFFERING REQUESTED ? IOR MSIGN YES , SET BIT 15 STA B,I DVT 8 B & CLEAR BUFFER ACC. INB LDA HIBUF STA B,I DVT 9 BUFFER LIMIT & 1ST TIME BIT ADB P2 CCA STA B,I DVT 11 TIME OUT LIST LINKAGE ADB P2 LDA TIMWD STA B,I DVT 13 TIME OUT VALUE INB LDA DVRAD STA B,I DVT 14 LOGICAL DRIVER ADDRESS ADB P6 LDA DEVPR IOR MSIGN STA B,I DVT 20 DVR COMMON & DEV PRIORTY LDA #DP GET # OF DVR PARM ALF,ALF SHIFT TO UPPER BYTE RAL AND HIMSK ADA EXTWD LDB DSTRG ADB P20 STA B,I DVTP & DVTX LDA PPREL GET CURRENT DVT ADDRESS STA ADVT AND SAVE IT IN ADVT LDB A ADB P21 STB PPREL JSB SETCR OUTPUT IN ABS ISZ PPREL JSB BUFC CLEAR THE OUTPUT BUFFER LDA #DP DRIVER PARAMETER? SZA,RSS JMP CH250 NO CMA,INA YES NEGATE # OF DRIVER PARAMETER STA #DP AND STORE IT BACK CLA,INA STA TCNT DP COUNT CH0 LDA DSTRG ADDRESS OF OUTPUT BUFFER STA ZTEMP LDA N40 OUTPUT BUFFER SIZE STA CNT1 CLA STA CNT2 # OF DRIVER PARAMETER IN OUTPUT BUFFER CH050 LDA PFUT4,I GET DRIVER PARAMETER STA ZTEMP,I STORE IT IN THE OUTPUT BUFFER * ISZ ZTEMP BUMP UP OUTPUT ADDRESS LDA PFUT4 ADA N1 STA PFUT4 DECREASE ADDRESS ISZ CNT2 BUMP UP # OF DRIVER PARM IN OUTPUT BUFFER ISZ #DP END OF DRIVER PARAMETER ? RSS JMP CH150 YES ISZ CNT1 END OF OUTPUT BUFFER ? JMP CH050 NO , GET MORE DRIVER PARM CH150 LDB CNT2 # OF DRIVER PARAMETER LDA PPREL ADB PPREL ADB N1 STB PPREL JSB SETCR OUTPUT ABS ISZ PPREL JSB BUFC LDA #DP SZA ANY MORE DRIVER PARAMETER? JMP CH0 YES * * * SKP CH250 JSB SPACE CLA STA OFST1 STA OFST2 LDA LU1 GET LU 1 SZA JSB CKDLU PREVIOUSLY DEFINE ? JSB LUER YES , ERROR STA OFST1 NO LDA LU2 GET 2ND LU SZA,RSS JMP CH020 JSB CKDLU PREVIOUSLY DEFINE ? JSB LUER YES , ERROR ALF,ALF NO , EVERYTHING OK STA OFST2 LDA LU3 GET 3RD LU SZA,RSS JMP CH020 JSB CKDLU PREVIOUSLY DEFINE ? JSB LUER YES , ERROR IOR OFST2 NO STA OFST2 CH020 JSB FUTP SET UP FOUR POINTER FOR FIXUP NOP LDA CIFT GET IFT # ADA N1 ALF,ALF MOVE TO UPPER BYTE IOR EXTWD IFT # & # OF TX STA FUT1,I WORD 1 OF FIXUP LDA ADVT CURRENT DVT ADDRESS LDB FUT1 ADB N1 STA 1,I WORD 2 OF FIXUP ADB N1 LDA OFST1 1ST LU STA 1,I WORD 3 OF FIXUP ADB N1 LDA OFST2 2ND & 3RD LU STA B,I WORD 4 OF FIXUP ISZ OPT.3,I BUMP UP # OF FIXUP LDA LSY.L CMA ADA FUT4 SSA CHECK FOR MEMORY OVERFLOW JMP LER5 * * ISZ CDVT CLA STA FTIME JSB SPACE JMP SDVT1 * SKP * LUER NOP LDA P22 LU ALREADY DEFINED JSB LDRER CLA JMP LUER,I * * LER5 LDA P8 SYSTEM OVERFLOW JSB LDRER JMP EXIT START OVER * * ENIFT LDA PPREL STA LOCC * LDB CIFT ADB N1 LDA D$IF# JSB FSYMB PATCH # OF IFT'S JSB MSENT MISSING SYSTEM ENTRY POINT * LDB CDVT ADB N1 LDA D$DV# JSB FSYMB PATCH # OF DVT'S JSB MSENT MISSING SYSTEM ENTRY POINT * * SKP * * NODE INPUT * JSB SPACE NEW LINE CLA,INA STA CNODE SET NODE COUNT=1 LDA P15 LDB ME27A "* NODE INPUT" JSB DRKEY JSB SPACE * ND0 CLA STA NODCK LDA CNODE LDB M27CA JSB STFNM JSB SPACE LDA P18 LDB ME27B "* NODE XX = LU #'S " JSB DRKEY JSB READ JMP EXIT LDA CNODE ALF,ALF STA CNODE LDA OP? CPA EN IS IT THE END JMP ENODE YES CPA NO IS IT A NODE? RSS YES JMP NDERR ??? WHAT IS IT ? LDA FUT4 PREPARE THE FIXUP ADA N1 STA CFUT4 SAVE COUNTER ADDRESS ADA N1 STA PFUT4 SAVE POINTER ADDRESS CLA STA CFUT4,I ZERO OUT # OF LU'S * ND5 JSB NAMRR SSA JMP NDFIN LDB DIPBF ADB P3 LDA B,I GET TYPE CPA P1 IS IT NUMERIC? RSS YES JMP NDERR NO , ERROR STA NODCK SET NODE IN LDA DIPBF,I STA #LU NO , LET SAVE IT LDA OPT.3,I # OF FIXUP CMA,INA STA OFST1 AND SAVE IT LDB OPT3 ADDRESS OF FIXUP ND010 STB CNT1 CURRENT ADDRESS OF FIXUP LDA B,I GET WORD 1 OF FIXUP SSA IS IT A DVT FIXUP ENTRY JMP ND060 NO ADB N2 YES,MOVE TO LU LDA B,I GET LU STB OFST2 ADDRESS OF NODE AND LOMSK CPA #LU DOES THIS EQUAL FIXUP LU ? JMP ND050 YES ADB N1 NO GET NEXT WORD LDA B,I AND HIMSK UPPER BYTE ALF,ALF CPA #LU DOES THIS EQUAL FIXUP JMP ND050 YES LDA B,I NO , GET WORD AGAIN AND LOMSK CPA #LU DOES THIS EQUAL FIXUP ? JMP ND050 YES JMP ND060 NO ND050 LDA OFST2,I HAS THIS LU BEEN DEFINE IN A NODE ? AND HIMSK SZA NO , SET NODE JMP NDERR YES , ERROR LDA OFST2 LU MATCHED , GET FIX ADDRESS STA PFUT4,I SAVE THE NODE ADDRESS ISZ CFUT4,I BUMP UP THE COUNT LDA PFUT4 ADA N1 STA PFUT4 JMP ND5 GET ANOTHER LU * ND060 ISZ OFST1 NEXT FIXUP RSS JMP NDERR UNABLE TO FIND THE LU LDB CNT1 ADB N4 GET NEXT FIXUP ADDRESS JMP ND010 * NDFIN LDA NODCK ANY NODE? SZA,RSS YES JMP NDERR ERROR , NO NODE INPUTTED LDA CFUT4,I GET # OF FIXUP CMA,INA STA CFUT4,I LDA CFUT4 ADA N1 STA PFUT4 NODE ADDRESS ND100 LDB PFUT4,I GET NODE ADDRESS LDA B,I GET NODE IN FIXUP IOR CNODE INSERT NODE # STA B,I SAVE IT BACK LDA PFUT4 GET NEXT VALUE ADA N1 STA PFUT4 ISZ CFUT4,I ARE WE FINISH? JMP ND100 NO ND105 LDA CNODE ALF,ALF INA STA CNODE JMP ND0 * NDERR LDA P6 NODE ERROR JSB LDRER JMP ND105 * ME27A DEF *+1 ASC 8,* DVT NODE LIST ME27B DEF *+1 ASC 3,* NODE ME27C NOP ASC 5,= LU #'S? M27CA DEF ME27C * * CNODE NOP LOMSK OCT 377 SKP SKP * * NODE * ENODE LDA N2 STA OFST1 NODE INFO OFFSET LDA N2 STA OFST2 DVT ADDRESS OFFSET CCA STA BFLAG NODE FLAG LDA OPT.3,I # OF FIXED UP ENTRIES LDB CNODE # OF NODE BLF,BLF ADB N1 STB CNODE SZB ANY NODE? JSB FIXTB YES ,FIXUP THE NODE LINKS IN THE DVT CLA NO STA OFST1 IFT INFO OFFSET LDA N3 STA OFST2 DVT ADDRESS OFFSET CLA STA BFLAG IFT FLAG LDA OPT.3,I # OF FIXUP ENTRIES LDB CIFT ADB N1 SZB,RSS ANY FIXUP ENTRIES? JMP F05 NO JSB FIXTB YES * * FIX DVT EXT WORD FOR DVT ENTRIES NOT IN * A NODE CONFIGURATION * LDA OPT.3,I GET & NEGATE # OF FIXUPS CMA,INA STA CNT1 LDB OPT3 FIXUP ADDRESS FX5 STB PFUT4 LDA B,I GET FIRST FIXUP SSA IS THIS A DVT FIXUP? JMP FX15 NO , GET NEXT DVT AND LOMSK SZA,RSS IS EXT WD ZERO? JMP FX15 YES , GET NEXT DVT STA EXTWD NO , SAVE # OF EXT WD ADB N2 POINT TO NODE WORD LDA B,I GET NODE IN DVT FIXUP AND HIMSK SZA IS NODE ZERO? JMP FX15 NO , GET NEXT DVT ADB P1 YES , POINT TO DVT FIXUP WD 2 LDB B,I GET REAL DVT ADDRESS ADB P21 POINT TO DVT 22 LDA PPREL JSB STCR1 PATCH UP DVT 22 * LDA PPREL ADA EXTWD STA PPREL UPDATE LOCC * FX15 ISZ CNT1 ANY MORE FIXUP? RSS YES JMP F05 NO LDB PFUT4 ADB N4 JMP FX5 * SKP * * FIXUP TABLE * FIXTB NOP CMA,INA STA CNT1 # OF FIXUP ENTRIES STA Z1TMP SAVE # OF FIXUP ENTRIES CMB,INB STB CNT2 # OF NODE OR IFT ENTRIES CLA STA CFUT4 FI05 ISZ CFUT4 THE NODE # OR IFT # TO MATCH LDA OPT3 STA PFUT4 CCA STA ZTEMP FIRST TIME FLAG LDA Z1TMP RESTORE # OF FIXUPS STA CNT1 FI10 LDA PFUT4,I GET FIRST FIXUP SSA IS THIS A DVT ? JMP FI15 NO GET NEXT FIXUP AND LOMSK STA EXTWD # OF TX LDB PFUT4 ADB OFST1 LDA B,I GET NODE # OR IFT # AND HIMSK ALF,ALF CPA CFUT4 DOES IT MATCH CURRENT # ? JMP FI20 YES FI15 ISZ CNT1 END OF FIXUP? RSS NO JMP FI40 YES LDA PFUT4 ADA N4 STA PFUT4 JMP FI10 * FI20 ISZ ZTEMP IS IT THE 1ST MATCH? JMP FI30 NO LDA PFUT4 YES ADA N1 LDA A,I GET DVT ADDRESS STA ADDR1 SAVE IT AS THE 1ST ADDRESS STA ADDR2 SAVE IT AS THE 2ND ADDRESS LDA EXTWD STA MAXRD JMP FI15 * FI30 LDA PFUT4 ADA N1 LDA A,I GET THE MATCHING DVT'S ADDRESS STA ADDR3 ADDRESS OF LINKING DVT LDB BFLAG IF NODE FIXUP ADD 2 POINT TO DVT 3 SZB ADA P2 LDB OFST2 LOCATION WITHIN THE DVT CMB,INB ADB ADDR2 DVT ADDRESS JSB STCR1 ABS OUTPUT LDA BFLAG SZA IS THIS A NODE SEARCH ? RSS YES JMP FI35 NO LDA EXTWD SZA,RSS ANY TABLE EXTENSION ? JMP FI35 NO LDA PPREL LDB ADDR2 ADB P21 JSB STCR1 OUTPUT THE DVTX ADDRESS LDA EXTWD # OF TX CMA,INA NEGATE ADA MAXRD ADD CURRENT MAX SSA IS IT POSITIVE ? RSS NO JMP FI35 YES LDA EXTWD REPLACE CURRENT MAX STA MAXRD FI35 LDA ADDR3 SET LAST ADDRESS AS CURRENT LINKING ADDRESS STA ADDR2 CURRENT LINKING ADDRESS JMP FI15 * * COMPLETED ONE PASS,FIXUP LAST WITH 1ST TO CLOSE LOOP * FI40 LDB ADDR2 SECOND DVT ADDRESS LDA OFST2 GET DVT OFFSET CMA,INA ADB A DVT 2 + OFFSET FOR PATCH LDA BFLAG SZA IF NODE FIXUP ADD 2 POINT TO DVT 3 LDA P2 ADA ADDR1 PLACE ADDRESS 1 INTO DVT 2 JSB STCR1 LDA BFLAG SZA IS THIS A NODE ? RSS YES JMP FI50 NO LDA MAXRD SZA,RSS ANY TABLE EXTENSION FOR THIS NODE ? JMP FI50 NO LDA PPREL OUTPUT DVTX ADDRESS LDB ADDR2 ADB P21 JSB STCR1 LDA PPREL ADA MAXRD RESERVE MAX EXT TABLE FOR THE NODE STA PPREL * FI50 ISZ CNT2 FINISH WITH # OF NODE OR # OF IFT JMP FI05 NO JMP FIXTB,I YES * SKP * F05 LDB PPREL STB LOCC LDA D$IFT JSB FSYMB FIND AND PATCH IFT ADDRESS JSB MSENT MISSING SYSTEM ENTRY POINT * LDA OPT.3,I GET # OF FIXUP SZA,RSS ANY FIXUP? JMP PWRFL NO , DO POWER FAIL CMA,INA NEGATE STA CNT1 AND SAVE LDA OPT3 STA ADDR1 IFT ADDRESS CLA STA CDVT * F10 JSB BUFC LDB DSTRG STB PFUT4 CCA STA PFUT4,I IFT 1 TIME OUT LIST LINKAGE ISZ PFUT4 ISZ PFUT4 LDA PFUT4 SAVE IFT 3 ADDRESS STA ZTEMP IN ZTEMP ISZ PFUT4 LDA ADDR1,I GET 1ST WORD OF FIXUP SSA,RSS IS THIS A IFT ENTRY? JMP F80 NO AND B7740 YES STA IFTNM IFT NUMBER LDA ADDR1,I GET 1ST WORD AGAIN AND LOMSK ALF,ALF STA DTYPE LDB ADDR1 ADB N1 POINT TO FIXUP 2ND WORD LDA B,I STA PFUT4,I IFT 4 PHYSICAL DRIVER ADDRESS ISZ PFUT4 LDA PPREL CURRENT IFT ADDRESS STA DPA AND SAVE IT STA B,I PLACE IT IN FIXUP WORD 2 ADB N1 POINT TO FIXUP 3RD WORD LDA B,I DVT ADDRESS STA PFUT4,I IFT 5 DVT REFERENCE ISZ PFUT4 ADB N1 POINT TO FIXUP 4TH WORD CLA STA QUEUE LDA B,I GET 4TH FIXUP WORD SSA IS Q SET ? ISZ QUEUE YES AND B7700 NO RAR ALF,ALF SHIFT TO LOW BYTE STA SCNM SELECT CODE LDA B,I GET WORD 4 AGAIN AND B777 EXTENSION WORD STA EXTWD LDA QUEUE RAR MOVE TO BIT 15 STA ZTEMP,I IFT 3 QUEUE LDA DTYPE IOR SCNM STA PFUT4,I IFT 6 INTERFACE TYPE & SC ISZ PFUT4 ADB N1 STB ADDR1 LDA EXTWD IOR B2000 STA PFUT4,I IFT 7 IFT EXTENSION LENGTH ISZ PFUT4 * JSB CNUMO DEF *+3 DEF PPREL+0 DEF MES37+4 ISZ CDVT LDA CDVT LDB DM#37 JSB STFNM JSB SPACE LDA P14 LDB DMS37 JSB DRKEY PRINT IFT ADDRESS * LDA PPREL LDB A ADB P6 STB PPREL JSB SETCR OUTPUT IFT TABLE ISZ PPREL LDA PPREL ADA EXTWD RESERVE SPECIFIED # OF EXT WDS STA PPREL * * PATCH IFT ADDRESS INTO DVT * LDA OPT.3,I CMA,INA STA CNT2 # OF FIXUP LDB OPT3 F50 STB ADDR2 IFT ADDRESS LDA ADDR2,I SSA IS THIS A DVT ENTRY ? JMP F55 NO AND B7740 YES CPA IFTNM EQUAL TO CURRENT ? RSS YES JMP F55 ADB N1 LDB B,I GET DVT FIXUP WORD 2 DVT'S ADDRESS ADB P4 DVT WORD 5 IFT REFERENCE LDA DPA IFT ADDRESS JSB STCR1 F55 ISZ CNT2 ANY MORE DVT'S ? RSS JMP F100 NO LDB ADDR2 GET NEXT DVT ADB N4 JMP F50 F80 LDA ADDR1 ADA N4 STA ADDR1 F100 ISZ CNT1 ANY MORE IFT'S ? RSS YES JMP PWRFL NO , CHECK POWER FAIL JMP F10 NEXT IFT * * B2000 OCT 2000 B7740 OCT 77400 B7700 OCT 77000 B777 OCT 777 * ADDR1 NOP ADDR2 NOP ADDR3 NOP * SKP * * CHECK FOR THE POWER FAIL DRIVER * PWRFL JSB L.ADD FIND ID.43 DEF *+5 DEF ID.43 DEF VALUA DEF SADDR DEF RESLT LDA RESLT SZA IS ID.43 ( POWERFAIL DRIVER ) THERE ? JMP FIXLU NO , DO NOTHING LDA VALUA YES , BUILD A DUMMY IFT STA Z1TMP SAVE ADDRESS OF ID.43 LDB PPREL LDA D$PIF JSB FSYMB FIND & PATCH $PIFT WITH ADDR OF DUMMY IFT JSB MSENT MISSING SYSTEM ENTRY POINT * LDB PPREL CCA PATCH DUMMY IFT 1 WITH -1 JSB STCR1 LDB PPREL PATCH DUMMY IFT 4 WITH ADB P3 ADDRESS OF ID.43 STB PPREL LDA Z1TMP ADDRESS OF ID.43 JSB STCR1 * ISZ PPREL LDB PPREL CLA,INA PLACE 1 IN DUMMY IFT 5 JSB STCR1 * LDB PPREL ADB P2 STB PPREL LDA B1001 SET BIT 9 OF DUMMY IFT 7 & 1 WD OF EXT JSB STCR1 ISZ PPREL ISZ PPREL JMP FIXLU * D$PIF DEF $PIFT $PIFT ASC 3,$PIFT * ID.43 ASC 3,ID.43 * SKP * * BUILD THE LU TABLE * FIXLU LDB PPREL STB LOCC LDA D$LUT JSB FSYMB FIND AND PATCH LU TABLE ADDRESS JSB MSENT MISSING SYSTEM ENTRY POINT * LDA D$LU# LDB MAXLU JSB FSYMB FIND AND PATCH # OF LU JSB MSENT MISSING SYSTEM ENTRY POINT * JSB BUFC LDB DIPBF CLEAR 24 ADDITIONAL WORDS LDA N24 FOR A TOTAL OF 64 WORDS STA WDCNT EQUAL TO MAX # OF LU CLA LP1 STA B,I INB ISZ WDCNT JMP LP1 LDA OPT.3,I # OF FIXUP ENTRIES SZA,RSS ANY FIXUP? JMP SINTT NO , DO INTERRUPT CMA,INA STA CNT1 LDB OPT3 LU10 STB PFUT4 POINTER FOR FIXUP ENTRY LDA PFUT4,I GET 1ST WORD OF FIXUP SSA IS THIS A DVT ENTRY JMP LU20 NO , NEXT FIXUP ADB N1 LDA B,I GET DVT ADDRESS STA ADVT AND SAVE IT ADB N1 STB ZTEMP LDA B,I AND LOMSK 1ST LU SZA,RSS ZERO ? JMP LU20 YES , NEXT DVT ADA N1 ADA DSTRG LDB ADVT DVT ADDRESS STB A,I SAVE IT IN THE LU TABLE LDA ZTEMP ADA N1 STA ZTEMP LDA ZTEMP,I AND HIMSK SZA,RSS ANY MORE LU ? JMP LU20 NO ALF,ALF ADA DSTRG ADA N1 STB A,I STORE DVT IN 2ND LU LOCATION LDA ZTEMP,I AND LOMSK SZA,RSS ANY MORE LU ? JMP LU20 NO ADA DSTRG ADA N1 STB A,I STORE DVT IN 3ND LU LOCATION LU20 ISZ CNT1 END OF FIXUP RSS JMP LU40 LDB PFUT4 ADB N4 JMP LU10 LU40 LDA PPREL OUTPUT LU TABLE LDB PPREL ADB MAXLU ADB N1 STB PPREL JSB SETCR ISZ PPREL JMP SINTT * D$LUT DEF $LUTA $LUTA ASC 3,$LUTA * D$LU# DEF $LUT# $LUT# ASC 3,$LUT# * SKP * * INTERRUPT TABLE PROCESSOR * SINTT LDB PPREL STB LOCC ADB N16 SUBTRACT -20B TO $INTA LDA D$INT FIND & PATCH $INTA JSB FSYMB JSB MSENT MISSING SYSTEM ENTRY POINT * LDA N3 JSB MOVE DEF $CIC+0 DEF ASCPD+0 * JSB DVADD FIND ADDRESS OF $CIC LDB RESLT GET RESULT SZB IS ENTRY THERE? JSB MSENT NO , MISSING SYSTEM ENTRY SYMBOL * JSB L.SCN SCAN FOR A BASE PAGE DEF *+3 DEF VALUA DEF BPADR * LDA BPADR SSA,RSS BASE PAGE ALLOCATED? JMP SET15 YES * JSB L.ABP NO , ALLOCATE A BP DEF *+3 DEF DUMBP DEF BPADR * LDA VALUA STA DUMBP,I UPDATE DUMMY BP WITH LINK SET15 LDA BPADR LOAD $CIC ADDRESS IOR IJSB ADD JSB 0,I CODE STA JSCIC SET JSB CIC,I CODE JSB BUFCL JSCIC OCT 0 STUFF DATA LDA P5 LDB P40 JSB SETCR OUTPUT JSB $CIC,I LDA P40 LDB P63 JSB SETCR OUTPUT JSB $CIC,I * LDA N7 FILL LOC 11B TO 17B STA CNT1 WITH " CLC SC,C " LDA P9 STA CNT2 SET30 LDA CLCF0 GET CLC 00,C LDB CNT2 ADDRESS TO FILL IOR B DATA CLC SC,C JSB STCR1 OUTPUT ISZ CNT2 ISZ CNT1 ANY MORE ? JMP SET30 YES * JSB SPACE NEW LINE LDA PPREL GET CURRENT RELOCATION ADDR STA AINT SAVE INTERRUPT TABLE ADDRESS LDA P9 LDB MES29 MES29 = ADDR. * INT TABLE JSB DRKEY PRINT: INT TBL * JSB SPACE NEW LINE * SETIN JSB BUFC JSB READ PRINT MESSAGE, GET REPLY JMP EXIT LDA OP? CPA EN CHARS = EN? JMP ENDIO YES - I/O TABLES COMPLETE CPA IN CHECK FOR INTERRUPT RSS YES JMP ITERR NO , ERROR JSB NAMRR GET SELECT CODE SSA JMP ITERR END OF LINE ERROR LDB DIPBF ADB P3 LDA B,I GET TYPE CPA P1 IS IT NUMERIC ? RSS YES JMP ITERR NO , ERROR LDA DIPBF,I GET INTERRUPT CHANNEL STA INTCH ADA N16 CHAN L.T. 20B ? SSA JMP ITERR YES, CHANNEL ERROR LDA INTCH GET SELECT CODE CMA,INA ADA B57 S.C. GT 57B? SSA NO JMP ITERR YES , ERROR * CLB LDA INTCH GET SELECT CODE DIV P4 DIVIDE BY 4 STA PIMKB THIS $PIMK BIT * SKP * * ENT ENTRY * INTEN JSB NAMRR SSA IS IT THE END ? JMP ITERR YES LDA N3 NO , MOVE THE ENTRY NAME JSB MOVE DEF IPBUF+0 DEF ASCPD+0 * JSB DVADD GET THE ADDRESS OF ENTRY POINT LDA RESLT CHECK RESULT FOR ERROR SZA,RSS JMP SETE1 EVERYTHING OK * LDA P9 JSB LDRER ERROR JMP SETIN * SETE1 LDA PIMKW GET PIMK WORD LDB BIT GET BIT ADDRESS ADB PIMKB ADD PIMK BIT INB LDB B,I GET THE MASK BIT IOR B IOR IT WITH THE PIMK WORD STA PIMKW SAVE THE NEW PIMK WORD * JSB L.SCN SCAN FOR A BP DEF *+3 DEF VALUA DEF BPADR * LDA BPADR SSA,RSS DOES ENTRY HAVE LINK? JMP SETE5 YES * JSB L.ABP NO , ALLOCATE A BP LINK DEF *+3 DEF DUMBP DEF BPADR REAL BP * LDA VALUA STA DUMBP,I PUT LINK IN DUMMY BP SETE5 LDA BPADR IOR IJSB CONSTRUCT JSB LINK,I STA B CLA JSB COMIN JSB REMOV JMP SETIN * * SKP ITERR LDA P7 JSB LDRER JMP SETIN REPEAT INPUT * * ITER2 NOP LDA P10 JSB LDRER PRIVILEDGE INTERRUPT ERROR - FATAL JMP ITER2,I * ENDIO LDA OPT.3,I GET THE FIXUP TABLE SZA,RSS ANY FIXUP? JMP TST30 NO CMA,INA STA CNT1 LDB OPT3 TST10 STB PFUT4 POINT TO FIXUP ENTRY LDA PFUT4,I SSA,RSS JMP TST20 ADB N3 LDA B,I GET SELECT CODE AND MSK1 ARS ALF,ALF STA INTCH * CLB DIV P4 DIVIDE SELECT CODE BY 4 STA PIMKB THIS IS THE $PIMK BIT LDA PIMKW GET $PIMK WORD LDB BIT GET BIT ADDRESS ADB PIMKB ADD BIT POSITION INB AND B,I SZA HAS PRIVILEDGE INTERRUPT BEEN SET? JSB ITER2 LDB PFUT4 ADB N1 BACK UP TO IFT ADDRESS LDA B,I GET IFT ADDRESS LDB JSCIC JSB COMIN OUTPUT THE TRAP CELL AND INT TBL TST20 ISZ CNT1 RSS JMP TST50 LDB PFUT4 ADB N4 JMP TST10 * TST30 LDB MAXSC SZB MAXSC ZERO? JMP TST50 NO LDB B30 YES , SET MAXSC TO 30B STB MAXSC AND SAVE IT * TST50 LDB MAXSC GET LARGEST SELECT CODE ADB N16 SUBTRACT -20B INB LDA D$IN# FIND & PATCH # OF INTERRUPT ENTRIES JSB FSYMB JSB MSENT MISSING SYSTEM ENTRY POINT * LDB PIMKW GET THE $PIMK WORD CMB NEGATE IT THE REAL MASK LDA D$PMK JSB FSYMB FIND & PATCH $PIMK PRIV. INT. MASK JSB MSENT MISSING SYSTEM ENTRY POINT LDA MAXSC ADA N16 ADA AINT INA STA LOCC LDA MAXSC FWA FOR USER BP INA STA BPFWA ADA LDBP LOWER BOUND FOR DUMMY BP STA CUDBP CURRENT USER DUMMY BP JSB SPACE NEW LINE JSB SPACE NEW LINE * JSB EXEC DEF *+3 LOAD SEGMENT 4 DEF P8 DEF SEG4 JMP EXIT SKP * IJSB JSB 0,I I-JSB CODE FOR INTERRUPT LOCS * INTCH NOP INT RECORD CHANNEL NO. * MES29 DEF *+1 ASC 5,* INT TBL * D$INT DEF $INTA $INTA ASC 3,$INTA * D$IN# DEF $INT# $INT# ASC 3,$INT# * D$PMK DEF $PIMK $PIMK ASC 3,$PIMK * $CIC ASC 3,$CIC SEG4 ASC 3,L20G4 SKP * * * OUTPUT TRAP LOC AND INT TABLE * * CALLING SEQUENCE: * LDA INT TABLE CODE * LDB TRAP CELL INSTRUCTION * JSB COMIN * COMIN NOP STA TBUF SAVE INT TABLE CODE STB TBUF+1 SAVE TRAP CELL INST. * LDA INTCH STA B CMB,INB ADB MAXSC SSB,RSS RSS STA MAXSC * LDA TBUF+1 GET INT LOC CODE LDB INTCH INT SELECT CODE JSB STCR1 * LDA TBUF INT TABLE CODE LDB N16 ADB INTCH ADB AINT JSB STCR1 * JMP COMIN,I * * SKP * * REMOVE THE IFT FIXUP ENTRY FOR * EITHER A ENTRY POINT INTERRUPT OR PROGRAM INTERRUPT * REMOV NOP LDA OPT.3,I GET THE FIXUP TABLE CMA,INA STA CNT1 LDB OPT3 SST10 STB PFUT4 POINT TO FIXUP ENTRY LDA PFUT4,I SSA,RSS JMP SST20 ADB N3 LDA B,I GET SELECT CODE AND MSK1 ARS ALF,ALF CPA INTCH MATCHING SELECT CODE? RSS YES JMP SST20 NO , GET NEXT ONE LDA PFUT4,I GET WORD 1 AND MSK77 MASK OUT BIT FOR IFT ENTRY STA PFUT4,I JMP REMOV,I EXIT * SST20 ISZ CNT1 RSS JMP REMOV,I LDB PFUT4 ADB N4 JMP SST10 * * * * SKP * * * ROUTINE TO MOVE DRIVER NAM INTO DMES8 FOR * DEFAULT DRIVER ENTRY POINT * MNAM NOP LDA LBUF3 RAL LDB DMES8 RBL JSB .MBT MOVE 5 BYTE DEF P5 NOP JMP MNAM,I * * * * * * ROUTINE TO CONVERT THE OCTAL NUMBER IN A TO * ASCII AND STUFF THE 2 LOW ORDER DIGITS INTO A BUFFER * ADDRESSED BY B. LEADING ZEROS ARE SUPPRESED * * CALLING SEQUENCE: * * A = OCTAL NUMBER * B = BUFFER ADDRESS * * RETURN: A AND B ARE DESTROYED * STFNM NOP STB STFAD SAVE FINAL ADDRESS JSB CNV99 STA STFAD,I STORE IN BUFFER JMP STFNM,I * STFAD NOP * * * SKP SKP SKP * TO ALLOCATE A BASE PAGE LINK * * * JSB TABLE ENTRY #1,I L.ABP * DEF RETRN * DEF DUMY RETURNS DUMMY BP ADDRESS NEG = ERROR * DEF REAL RETURNS REAL BP ADDRESS * DBP NOP RBP NOP L.ABP NOP JSB .ENTR DEF DBP LDA LNKDR GET LINK DIRECTION CPA N1 IS IT A SYSTEM LINK ? JMP L.A10 YES LDA CBP.L GET CURRENT REAL BP ADA LDBP ADD LOWER BOUND FOR DUMMY BP CPA CSDBP HAS IT REACH SYS BP AREA? JMP L.A20 YES , ERROR STA DBP,I INA STA CUDBP LDA CBP.L GET CURRENT USER REAL BP STA RBP,I INA STA CBP.L UPDATE CURRENT REAL BP JMP L.ABP,I RETURN * * SYSTEM LINK ALLOCATION * L.A10 LDA CBP.L GET CURRENT REAL BP ADA LDBP ADD LOWER BOUND FOR DUMMY BP CPA CUDBP HAS IT REACH USER BP AREA? JMP L.A20 YES , ERROR STA DBP,I NO , STORE DUMMY BP ADA N1 STA CSDBP UPDATE CURRENT SYS DUM BP LDA CBP.L STA RBP,I STORE REAL BP ADA N1 STA CBP.L UPDATE CURRENT SYS REAL BP JMP L.ABP,I * L.A20 CCA ERROR STA DBP,I LDA P23 JSB LDRER BASE PAGE LINKAGE OVERFLOW JMP EXIT * * * SKP * * * TO SCAN DUMMY BASE PAGE ( OR EXISTING BASE PAGE ) * FOR AN EXISTING BASE LINK. * * JSB TABLE ENTRY #2,I L.SCN * DEF RETRN * DEF VALUE VALUE TO SCAN FOR * DEF BPADR +/- ADDRESS TO USE / NOT FOUND * VALAD NOP ADDRESS OF VALUE BPADR NOP L.SCN NOP JSB .ENTR DEF VALAD LDA VALAD,I GET VALUE TO SCAN FOR LDB TDBP SCAN SYS DUMMY BP L.S20 CPB CSDBP IS IT EQUAL TO CURRENT SYS DUM BP JMP L.S30 YES , TRY USER BASE PAGE CPA B,I IS IT EQUAL TO SEARCH VALUE JMP FNDSY YES , SYSTEM BP LINK ADB N1 NO, ADD LINK DIRECTION FOR NEXT BP VALUE JMP L.S20 NO CONTINUE SEARCH FNDSY CMB,INB CALCULATE REAL BP ADDRESS ADB TDBP ADD TOP OF DUMMY BP ADDRESS CMB,INB DIFFERENCE BETWEEN CURRENT AND TOP DUM BP ADB B1777 SUBTRACT FROM TOP OF REAL BP STB BPADR,I THIS IS THE REAL LINK JMP L.SCN,I RETURN * L.S30 LDB LDBP LOWER BOUND FOR USER DUMMY BP ADB BPFWA SET USER BP LOCATION L.S60 CPB CUDBP IS IT EQUAL CURRENT USER DUM BP? JMP NOTF YES , RETURN NOT FOUND CPA B,I JMP FNDUS YES , FOUND USER BP INB NO , GET NEXT ADDRESS JMP L.S60 IS IT EQUAL TO CURRENT BP? FNDUS LDA LDBP FOUND USER BP CMA,INA ADB A STB BPADR,I JMP L.SCN,I * NOTF CCB NOT FOUND STB BPADR,I JMP L.SCN,I * SKP * * * LDRER OUTPUTS ERRORS TO THE LIST DEVICE * * CALLING SEQUENCE: * A-REG = +VE ERROR CODE * JSB LDRER * RETURN * * LDRER NOP MPY P3 CALCULATE OFFSET INTO LIST OF ERROR CODE ADA EMESS ADD STARTING ADDRESS OF LIST STA B AND SAVE IN B-REG FOR OUTPUT LDA P6 LENGTH OF MESSAGE IN CHARACTERS JSB DRKEY PRINT IT ISZ ERRCT BUMP UP ERROR COUNT JSB ASTRX PRINT ****** JSB SPACE JMP LDRER,I AND RETURN * * EMESS DEF *+1 ASC 3,IL REC ILL REC OR CK SUM IN RELO REC ASC 3, FREE FOR NEW ERROR MSG 1 ASC 3, FREE FOR NEW ERROR MSG 2 ASC 3,IFT ER IFT INPUT ERROR ASC 3,DVT ER DVT INPUT ERROR ASC 3,MS ENT MISSING SYSTEM ENTRY POINT ASC 3,NOD ER NODE INPUT ERROR ASC 3,INT ER INTERRUPT TABLE INPUT ERROR ASC 3,OV MEM SYSTEM OVERFLOW ,NEEDS LAGER PARTITION ASC 3,UND DV UNDEFINED DRIVER ENTRY POINT ASC 3,PR INT PRIVILEDGE INTERRUPT ERROR - FATAL ERROR ASC 3,?? ILLEGAL INPUT ASC 3,IT ERR INTERFACE TYPE ERROR ASC 3,SC ERR SELECT CODE ERROR ASC 3,QU ERR QUEUING ERROR ASC 3,TX ERR TABLE EXTENSION ERROR ASC 3,TO ERR TIME OUT ERROR ASC 3,BL ERR BUFFER LIMIT ERROR ASC 3,DT ERR DEVICE TYPE ERRORR ASC 3,DP ERR DRIVER PARAMETER ERROR ASC 3,PR ERR DEVICE PRIORITY ERRORR ASC 3,DX ERR DRIVER PARAMETER ERROR ASC 3,LU ERR LU SPECIFICATION ERROR ASC 3,OV BSE BASE PAGE LINKAGE OVERFLOW ASC 3,MDL NF SPECIFIED MODLE # NOT FOUND IN FILE * SKP SKP * * * THE BUFCL SUBROUTINE STUFFS A 40 WORD BUFFER WITH CALL+1 * * * CALLING SEQUENCE: * A = IGNORED * B = ADDRESS OF BUFFER * JSB BUFCL * CALL+1 = DATA TO STUFFED * * RETURN: CONTENTS OF A AND B ARE DESTROYED * BUFCL NOP LDB DSTRG LDA N40 STA WDCNT SET BUFFER LENGTH = 40 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 * WDCNT NOP TEMPORARY WORD COUNTER * * * SUBROUTINE TO CLEAR OUTPUT BUFFER * BUFC NOP JSB BUFCL OCT 0 JMP BUFC,I * SKP * * * THE CKDLU SUBROUTINE DETERMINES IF THE LU # HAVE BEEN DEFINED * OR LU LARGER THAN 77B * * CALLING SEQUENCE * * LDA LU # * JSB CKDLU * JMP ERROR ERROR LU HAVE PREVIOUSLY DEFINE * NORMAL RETURN (A) = LU # * * CKDLU NOP STA LUFLG ADA N64 SSA,RSS LESS THAN 64? JMP CKDLU,I NO , ERROR LDA LUFLG YES CLB DIV P16 (A)=QUOTIENT (B)=REMAINDER STA KTEMP SAVE IT FOR CHECK SZB RSS ADA N1 ADA NUMFL ADDRESS OF NUMFL STA ZTEMP SAVE IT LDA ZTEMP,I YES , LOAD THE FLAG ADB BIT ADDRESS OF BIT LDB B,I AND B SZA HAS THIS LU BEEN ENTERED ? JMP CKDLU,I YES , ERROR LDA ZTEMP,I NO , RELOAD THE FLAG IOR B TAG THE FLAG STA ZTEMP,I AND STORE IT BACK LDA LUFLG LDB LUFLG CMB,INB ADB MAXLU SSB,RSS RSS STA MAXLU ISZ CKDLU JMP CKDLU,I * NUMFL DEF *+1 NOP NOP NOP NOP BIT DEF *+1 OCT 100000 OCT 1 OCT 2 OCT 4 OCT 10 OCT 20 OCT 40 OCT 100 OCT 200 OCT 400 OCT 1000 OCT 2000 OCT 4000 OCT 10000 OCT 20000 OCT 40000 OCT 100000 * KTEMP NOP * SKP * * CKSC SUBROUTINE CHECKS FOR PREVIOUSLY DEFINED * SELECT CODE. * * CALL SEQUENCE * * LDA SELECT CODE * JSB CKSC * JMP ERROR ERROR RETURN * NORMAL RETURN * CKSC NOP CLB DIV P16 (A)=QUOTIENT (B)=REMAINDER STA KTEMP SAVE IT FOR CHECK SZB RSS ADA N1 ADA SCFL SELECT CODE FLAG ARRAY ADDRESS STA ZTEMP LDA ZTEMP,I LOAD THE FLAG ADB BIT LDB B,I AND B SZA HAS THIS SELECT CODE BEEN ENTERED? JMP CKSC,I YES , ERROR RETURN LDA ZTEMP,I NO , RELOAD FLAG IOR B TAG THE FLAG STA ZTEMP,I AND STORE IT BACK ISZ CKSC JMP CKSC,I NORMAL RETURN * SCFL DEF *+1 NOP NOP NOP NOP * SKP SKP SKP SKP * * * OUTPUT CONSECUTIVE CORE LOCATIONS * * LDA START STARTING ADDRESS * LDB END ENDING ADDRESS * JSB SETCR DATA WILL BE AT STRNG * SETCR NOP STA ZTEM5 STARTING ADDRESS CMA,INA NEGATE STARTING ADDRESS ADA B ADD ENDING ADDRESS INA ADD 1 FOR TOTAL # TO OUTPUT CMA,INA NEGATE FOR COUNT STA CNT10 LDA DSTRG ADDRESS OF DATA STA CNT20 SET10 LDA CNT20,I GET DATA LDB ZTEM5 GET ADDRESS JSB STCR1 OUTPUT ISZ CNT20 NEXT DATA WORD ISZ ZTEM5 NEXT ADDRESS ISZ CNT10 ANY MORE OUTPUT ? JMP SET10 YES JMP SETCR,I NO * SKP * * ROUTINE TO FIND SYSTEM SYMBOL AND PATCH UP ITS VALUE * * CALLING SEQUENCE * * LDA ADDRESS OF SYMBOL * LDB VALUE TO PATCH IN * JSB FSYMB * ERROR RETURN * NORMAL RETURN * FSYMB NOP STA SYBAD PUT SYMBOL ADDRESS INTO CALLING SEQUENCE STB PVAL SAVE PATCH VALUE JSB L.ADD FIND SYMBOL DEF *+5 SYBAD DEF * DEF VALUA DEF SADDR DEF RESLT LDA RESLT GET RESULT SZA ANY ERROR JMP ERTN YES , ERROR LDA PVAL PATCH VALUE LDB VALUA JSB STCR1 ISZ FSYMB NORMAL RETURN ERTN JMP FSYMB,I * VALUA NOP SADDR NOP RESLT NOP PVAL NOP * * * * ROUTINE TO PRINT MISSING SYSTEM ENTRY POINT * MSENT NOP LDA PRERR SZA PRINT ERROR? JMP MSENT,I NO , PRINTED PREVIOUSLY LDA P5 JSB LDRER PRINT " MS ENT " CCA STA PRERR SET ERROR PRINTED FLAG JMP MSENT,I * * SKP SKP * * FIND PHYSICAL OR LOGICAL DRIVER ENTRY POINT * * CALLIN SEQUENCE * * ASCII OF DRIVER ENTRY POINT IN ASCPD * JSB DVADD * ENTRY POINT IN VALUA * OR ERROR MESSAGE * DVADD NOP JSB L.ADD FIND DRIVER ENTRY POINT DEF *+5 DEF ASCPD DEF VALUA DEF SADDR DEF RESLT JMP DVADD,I SKP * * ROUTINE TO READ IN A RELOCATABLE RECORD . * * JSB L.RED * DEF *+2 * DEF FLAG 0/-1 OK/EOF * * FFLAG NOP L.RED NOP JSB .ENTR DEF FFLAG RREAD JSB READF READ THE NEXT REL RECORD DEF *+6 DEF SDCB3 DEF IERR5 DEF L.BUF+0 RELOCATABLE RECORD BUFFER ! DEF P60 DEF LEN ACTUAL RECORD LENGTH READ * SSA,RSS ANY ERROR? JMP FNXT2 NO STA FFLAG,I JMP L.RED,I * FNXT2 STA FFLAG,I LDA LEN GET THE RECORD LENGTH READ SZA,RSS ZERO RECORD LENGTH ? JMP RREAD YES, SO TRY AGAIN SSA,RSS NO, WAS IT A NEG LENGTH ( -1 ) JMP L.RED,I NO , RETURN STA FFLAG,I YES , SET EOF JMP L.RED,I * SKP * * * THE NAMRF SUBROUTINE USES THE RELOCATABLE LIBRARY * PARSING ROUTINE NAMR. THE INPUT TO NAMR IS A STRING * OF ASCII CHARACTERS. * THE OUTPUT IS A 10 WORD BUFFER PARSED AS : * PRAM1,PRAM2,PRAM3,TYPE,S1,S2,S3,S4,S5,S6 * PARAMETERS BETWEEN COMMAS ARE PARSED. SUBPARAMETERS ARE * DELINEATED BY COLONS. THE TYPE WORD DESCRIBES ALL * PARAMETERS AS ASCII, NUMERIC, OR NULL. * THE TYPE WORD IS BROKEN UP INTO 2 BIT FIELDS TO DESCRIBE * THE INPUT. *15,14 13,12 11,10 9,8 7,6 5,4 3,2 1,0 *----------------------------------------------- * S6 ! S5 ! S4 ! S3 ! S2 ! S1 ! PRAM ! *----------------------------------------------- * * PRAM = 0 ...NULL PRAM1 = PRAM2 = PRAM3 = 0 * PRAM = 1....NUMERIC (ONLY PRAM1 USED) PRAM1 = # * PRAM = 2 ...NOT USED * PRAM = 3 ... ASCII (USES PRAM1,PRAM2,PRAM3 ) * * S1 - S6 ARE DEFINED THE SAME EXCEPT THEY ARE ONE WORD ONLY * NAMRF NOP JSB NAMR THIS IS THE RELO LIBR PARSING ROUTINE DEF *+5 RETURN ADDR DEF IPBUF+0 ADDRESS OF 10 WORD PARSED BUFFER DEF L.BUF+3 ADDRESS OF BUFFER TO BE PARSED DEF LEN CHARACTER LENGTH DEF ISTRF CHAR OFFSET IN STRNG FOR NEXT PRAM JMP NAMRF,I RETURN TO CALLER * * SKP * * OPEN THE RELOCATABLE FILE * OPN5 NOP JSB OPEN OPEN THE FILE ! DEF *+7 DEF SDCB3+0 DCB DEF IERR5 ERROR FLAG DEF FILE5 ASCII FILE NAME DEF IPTN1 READ OPTION DEF F5SC SECURITY CODE DEF F5DSC CART REF # SSA,RSS ANY ERROR IN THE READ ? JMP OPN5,I NO LDB F5 YES , GET THE FILE NAME JSB FLERR AND REPORT JMP OPN5,I * * * * * * SET FIXUP TABLE POINTERS * FUTP NOP LDA FUT1 ADA N4 STA FUT1 ADA N3 STA FUT4 JMP FUTP,I * * NOP OPT.3 DEF *-1 FUT1 NOP FUT4 NOP * SKP SKP * #DP NOP #LU NOP ADVT NOP BFLAG NOP CDVT NOP CFUT4 NOP CIFT NOP CNT1 NOP CNT2 NOP CNT10 NOP CNT20 NOP DPA NOP DEVPR NOP DFLAG NOP DPBND NOP DTYPE NOP DUMBP NOP DVRAD NOP DVTIN NOP EXTWD NOP FLAG NOP FTIME NOP HIBUF NOP IFTNM NOP IPTN1 NOP ISTRF NOP LDTYP NOP LEN NOP LOBUF NOP LU1 NOP LU2 NOP LU3 NOP LUFLG NOP MASK NOP MAXLU NOP MAXSC NOP MAXRD NOP MDLFD NOP -1/0/1 MODEL NOT SPEC./NOT FOUND/FOUND MFG NOP NODCK NOP NO NODE INPUTTED/YES NODE INPUTTED OFST1 NOP OFST2 NOP OPT3 NOP 1ST ADDRESS OF FIXUP IN GENERATOR QUEUE NOP PFLAG NOP PFUT4 NOP PIMKB OCT 4 $PIMK BIT PIMKW OCT 2 $PIMK WORD PNFLG NOP RELFG NOP RFLAG NOP SBFLD NOP SUBFIELD , GEN=0 SCFLG NOP SCNM NOP SUBP1 NOP TCNT NOP TIMWD NOP TYPE NOP ZTEMP NOP ZTEM5 NOP Z1TMP NOP * ATBUF DEF TBUF TBUF BSS 10 SKP SKP * * CONSTANTS * P1 EQU BIT+2 P2 EQU BIT+3 P3 DEC 3 P4 EQU BIT+4 P5 DEC 5 P6 DEC 6 P7 DEC 7 P8 EQU BIT+5 P9 DEC 9 P10 DEC 10 P11 DEC 11 P12 DEC 12 P13 DEC 13 P14 DEC 14 P15 DEC 15 P16 EQU BIT+6 P17 DEC 17 P18 DEC 18 P19 DEC 19 P20 DEC 20 P21 DEC 21 P22 DEC 22 P23 DEC 23 P24 DEC 24 P32 EQU BIT+7 P40 DEC 40 P60 DEC 60 P63 DEC 63 P64 EQU BIT+8 * N1 DEC -1 N2 DEC -2 N3 DEC -3 N4 DEC -4 N5 DEC -5 N6 DEC -6 N7 DEC -7 N10 DEC -10 N16 DEC -16 N24 DEC -24 N40 DEC -40 N64 DEC -64 N128 DEC -128 N512 DEC -512 * B30 OCT 30 B57 OCT 57 B60 OCT 60 B70 OCT 70 B300 OCT 300 B1001 OCT 1001 B1777 OCT 1777 * BL ASC 1,BL BU ASC 1,BU DP ASC 1,DP DT ASC 1,DT DV ASC 1,DV DX ASC 1,DX EN ASC 1,EN FI ASC 1,FI IF ASC 1,IF IN ASC 1,IN IT ASC 1,IT LU ASC 1,LU NO ASC 1,NO PR ASC 1,PR QU ASC 1,QU SC ASC 1,SC TO ASC 1,TO TX ASC 1,TX UN ASC 1,UN * BLIM OCT 11060 DASH OCT 26440 E OCT 42400 M OCT 46400 HIMSK OCT 177400 MSIGN EQU BIT+1 MSK1 OCT 77000 MSK77 OCT 77777 CLCF0 CLC 0,C * LBUF3 DEF L.BUF+3 * BLANK EQU P32 * A EQU 0 B EQU 1 END L20G3