ASMB,L,Z,C *RTLGN USE 'ASMB,Z ' ALWAYS !! * * *************************************************************** * * (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. * * *************************************************************** * HED RTE-L GENERATOR NAM RTLGN,3,100 92070-16077 REV.2026 800410 LOD 2,SG,4 * * NAME: RTE L GENERATOR MAIN * SOURCE: 92070-18077 * PGMR: B.C. * ENT RTLGN * * EXT EXEC,LOGLU,NAMR,.ENTR EXT OPEN,CLOSE,READF,WRITF,PRTN EXT IFBRK,.X.,.Y. EXT TH2.L,CNUMD,L.REL * ENT DSTRG,IPBUF,STRNG,SLONG,DONE?,ISTRC,DIPBF ENT DFTLU,FATAL,OP?,MSIZE,IPTN2,ABOR ENT EXIT,BREAK,ASTRX,LENTF * ENT F1,FILE1,TYPE1,F1SC,F1DSC,IERR1 ENT F2,FILE2,TYPE2,F2SC,F2DSC,IERR2 ENT F3,FILE3,TYPE3,F3SC,F3DSC,IERR3,OPSNP ENT F4,FILE4,TYPE4,F4SC,F4DSC,IERR4 ENT CDCB1,ODCB2,SDCB3,LDCB4,ADCB3 ENT SEGNM,PPREL,COMFG,LNKDR,BGFLG,SIDCK ENT FWFM,LWFM,BPFWA,LODPT,COMAD,COMLG,LWAPG ENT TDBP,LDBP,CSDBP,CUDBP,CSRBP,CURBP ENT NUMID,ADDID,#ENPT,NLIB,CROM,AFWBG,ABGBP * ENT READ,FLERR,NAMRR,DRKEY,SPACE,FCLOS,MOVE ENT CLOS1,CLOS2,CLOS3,CLOS4 ENT DLOCC,LOCC,DBLOC,BPLOC ENT CNV99,L.OUT,LDIPX,SRIPX,STCR1,MAXAD ENT ERRCT,CONSL,AINT,IP3,WRDCT,EFBUF,PRERR * SUP PRESS EXTRANIOUS LISTING * SKP SKP DSTRG DEF STRNG ADCB3 DEF SDCB3 DIPBF DEF IPBUF STRNG BSS 40 IPBUF BSS 10 OUTPUT PARSED BUFFER * RTLGN JSB LOGLU GET THE CONSOLE LU DEF *+2 DEF ANLU# IOR M400 MERGE ECHO BIT STA DFTLU AND SAVE * * JSB EXEC GET THE RUN STRING DEF *+5 DEF P14 DEF P1 DEF STRNG THIS IS A GET NOT A PUT DEF N80 * STB SLONG SLONG = STRING LENGTH IN + CHAR * * * * JSB EXEC DEF *+3 DEF P8 DEF SEG1 LOAD SEGMENT 1 NOP * SKP * SLONG NOP STRING LENGTH IN CHARS DONE? NOP =1 WHEN INPUT PRAMS CHECKED OUT * F1 DEF FILE1 FILE1 ASC 3,COMMAD COMMAND FILE NAME TYPE1 NOP F1SC NOP F1DSC NOP * F2 DEF FILE2 OUTPUT FILE NAME FILE2 ASC 3,SYSTEM DEFAULT FILE = SYSTEM TYPE2 OCT 3 F2SC NOP F2DSC NOP * F3 DEF FILE3 SNAP FILE NAME FILE3 ASC 3,SNAP DEFAULT FILE = SNAP TYPE3 OCT 3 F3SC NOP F3DSC NOP * F4 DEF FILE4 LIST FILE NAME FILE4 ASC 3,SYLIST DEFAULT FILE = SYLIST TYPE4 OCT 3 F4SC NOP F4DSC NOP * * GENERATOR BUFFER AREA * CDCB1 BSS 144 COMMAND DCB ODCB2 BSS 144 OUTPUT DCB SUP SDCB3 REP 144 SNAP DCB NOP LDCB4 BSS 144 LIST DCB * SEG1 ASC 3,RTLG1 * SKP SPC 1 * * EXIT LDA SEGNM CPA P128 NORMAL TERMINATION? RSS YES JMP ABOR NO , ABNORMAL TERMINATION EXIT2 JSB SPACE JSB CNUMD DEF *+3 DEF ERRCT+0 DEF ERRMS+1 LDA P18 STA CONSL LDB DERRM JSB DRKEY * JSB WRITF DEF *+6 DEF ODCB2 WRITE OUT CURRENT RECORD DEF IERR2 OF OUTPUT FILE DEF OTBUF DEF P128 DEF RECN * JSB FCLOS * LDA N4 ZERO OUT NEXT 4 WDS AFTER STA WRDCT ERRCT FOR PRTN CLA LDB DERRC ADDRESS OF ERRCT LP INB STA B,I ISZ WRDCT ANY MORE? JMP LP YES * JSB PRTN NO DEF *+2 DERRC DEF ERRCT+0 * JSB EXEC DEF *+2 DEF P6 * * DERRM DEF ERRMS ERRMS ASC 9,* ERRORS * SKP SKP SKP * * SET UP CALL FOR OUTPUT * * CALL SEQUENCE * * LDA DATA * LDB ADDRESS * JSB STCR1 * STCR1 NOP STB ADRR THIS IS THE ADDRESS STA VALU THIS IS THE VALUE OF THE ABOVE ADDRESS JSB L.OUT DEF *+3 DEF ADRR DEF VALU JMP STCR1,I RETURN * ADRR NOP VALU NOP * * * * PRINT ****** * ASTRX NOP LDA P6 LDB DASTX JSB DRKEY JMP ASTRX,I * * DASTX DEF *+1 ASC 3,****** * SKP *THE FCLOSE ROUTINE CLOSES ALL FILES OPEN TO THE *GENERATOR * FCLOS NOP JSB CLOS1 JSB CLOS3 JSB CLOS2 JSB CLOS4 JMP FCLOS,I * CLOS1 NOP JSB CLOSE CLOSE THE FILE DEF *+2 DEF CDCB1 JMP CLOS1,I * CLOS2 NOP JSB CLOSE YES DEF *+2 DEF ODCB2 JMP CLOS2,I * CLOS3 NOP JSB CLOSE YES DEF *+2 DEF SDCB3 JMP CLOS3,I * CLOS4 NOP LDA TYPE4 ERA,SLA RSS JMP CLOS4,I JSB CLOSE DEF *+2 DEF LDCB4 * CLA,INA SET UP THE STA TYPE4 NUMERIC FIELD IN THE TYPE WORD JMP CLOS4,I RETURN * * OPEN THE SNAP FILE * OPSNP NOP JSB OPEN DEF *+7 DEF SDCB3 DEF IERR3 DEF FILE3 DEF IPTN2 DEF F3SC DEF F3DSC JMP OPSNP,I * SKP * * READ THE COMMAND FILE * * JSB READ * EOR RETURN * NO ERROR RETURN * * SPC 1 * READ NOP FREAD JSB READF READ THE COMMAND FILE DEF *+6 DEF CDCB1 DEF IERR1 DEF STRNG DEF P40 DEF CLEN * LDA IERR1 SSA,RSS ANY ERRORS ? JMP FLCHK NO LDB F1 JSB FLERR YES FLCHK LDB CLEN GET LENGTH OF COMMAND JUST READ SZB,RSS WAS IT ZERO ? JMP FREAD YES, SO DO IT AGAIN SSB WAS IT NEGATIVE (IE END OF FILE) JMP READ,I YES, SO FINISH PROCESSING * CLE,ELB CONVERT TO CHAR COUNT (MULT BY 2) STB SLONG SAVE READ LENGTH FOR PARSING ROUTINE CLA,INA SET UP PARSING OFFSET TO STAT PARSING STA ISTRC AT THE FIRST CHARACTER JSB NAMRR PARSE THE OP CODE LDB IPBUF+1 GET 3RD & 4TH CHAR STB OP1? LDA IPBUF AND SAVE THE OPCODE STA OP? * JSB IECHO ECHO INPUT LDA OP? GET OPCODE AND HIMSK CPA ASTRK IS IT A COMMENT ? JMP FREAD YES , READ ANOTHER RECORD * JSB BREAK CHECK BREAK FLAG CLA STA PRERR CLEAR PRINT ERROR FLAG ISZ READ JMP READ,I * * * SKP * * PRINT MESSAGE ON LIST DEVICE * * THE DRKEY SUBROUTINE PRINTS A MESSAGE ON THE LIST OUTPUT DEVICE. * * CALLING SEQUENCE: * A = NO. CHARACTERS (POS.) TO BE PRINTED. * B = ADDRESS OF MESSAGE * JSB DRKEY * * RETURN: CONTENTS OF A AND B ARE DESTROYED * DRKEY NOP STA CHAR# SAVE THE # OF CHARACTERS * ADB N1 BACK THE ADDRESS UP BY ONE STB MADDR AND SAVE FOR LU WRITE STB MADDF OR FILE WRITE LDA B,I GET THE WORD PRIOR TO THE BUFFER STA LTEMP AND SAVE IT LDA BLNK2 GET A BLANK STA B,I AND PUT IT IN THE BUFFER * LDB CHAR# GET THE # OF CHARACTERS ADB P3 ALLIGN TO A WORD & ACCOUNT FOR THE BLANK CLE,ERB DIV BY 2 . NOW HAVE WORD COUNT STB COUNT SAVE FOR LU OR FILE WRITE * LDB CHAR# GET THE # OF CHARS SLB,INB,RSS ODD # ? JMP GOWRT NO, SO WRITE THE BUFFER OUT CLE,ERB INDEX ADB MADDR THE THE LAST WORD LDA B,I GET IT & PUT A BLANK AND HIMSK IN THE LOW END ADA P32 STA B,I * GOWRT LDA CONSL ECHO TO THE CONSOLE? SZA,RSS YES JMP WFILE NO , WRITE TO THE FILE * JSB EXEC REQUEST WRITE DEF *+5 DEF P2 WRITE REQUEST CODE DEF DFTLU ADDR OF CONSOLE UNIT NO. MADDR DEF 0 BUFFER LOCATION DEF COUNT CURRENT WORD COUNT CLA STA CONSL * WFILE JSB WRITF DO THE FILE WRITE DEF *+5 DEF LDCB4+0 DEF IERR4+0 MADDF NOP BUFFER ADDRESS DEF COUNT BUFFER LENGTH * LDB LTEMP GET THE ALTERED WORD STB MADDR,I AND RESTORE IT SSA,RSS ANY FILE ERRORS JMP DRKEY,I NO, SO RETURN * LDA N6 LIST FILE ERROR JSB MOVE MOVE LIST FILE NAME DEF FILE4+0 SOURCE DEF EFBUF+10 DESTINATION LDA IERR4 CMA,INA JSB CNV99 STA EFBUF+4 * JSB EXEC DISPLAY ON CONSOLE FMP ERROR DEF *+5 OF DEF P2 LIST DEF DFTLU+0 FILE DEF EFBUF DEF P13 * JSB EXEC DEF *+2 DEF P6 SKP * * NEW LINE ON LIST OUTPUT DEVICE * * THE SPACE SUBROUTINE IS CALLED TO PAGE UP THE PRINTER. * * CALLING SEQUENCE: * A = IGNORED * B = IGNORED * JSB SPACE * * RETURN: CONTENTS OF A AND B ARE DESTROYED. * SPACE NOP CLA SET COUNT = 0. LDB ALBUF B = DUMMY ADDR. JSB DRKEY NEW LINE JMP SPACE,I RETURN * ALBUF DEF IPBUF * * * THE BREAK ROUTINE CATCHES ANY PROGRAM BREAKS AND DOES * A CLEAN TERMINATION. * BREAK NOP JSB IFBRK DEF *+1 SSA ANY BREAK INPUT ? JMP EXIT YES , SO EXIT THYSELF JMP BREAK,I NO SO JUST RETURN * * ABORT ROUTINE * ABOR LDA P6 LDB MESFL JSB DRKEY JSB ASTRX PRINT ****** JMP EXIT2 * MESFL DEF *+1 ASC 3,GEN AB * SKP * * THE IECHO ROUTINE ECHOS COMMAND FILE COMMANDS AND ECHOS * ANY BAD COMMANDS ENCOUNTERED IN THE COMMAND FILE * IT ASSUMES THE WORD COUNT IN ' CLEN ' AND THE BUFFER * TO BE OUTPUT IN ' DSTRG '. * IECHO NOP LDA CLEN RAL WORD COUNT IS NOW CHAR COUNT LDB DSTRG GET THE BUFFER ADDRESS JSB DRKEY OUTPUT IT JMP IECHO,I RETURN TO CALLER * SKP * * *THE FLERR ROUTINE HANDLES ALL FILE ERRORS. CALLING SEQUENCE: * * LDA WITH ERROR CODE (NEGATIVE) * LDB WITH ADDRESS OF FILE * JSB FLERR * * *THIS ROUTINE WILL CLOSE ALL FILES FLERR NOP STA ERRSV SAVE ERROR CODE STB EFILE SAVE NAME OF FILE CMA,INA MAKE ERROR POSITIVE JSB CNV99 CONVERT TO ASCII STA EFBUF+4 PUT INTO ERROR MESSAGE LDA EFILE,I GET THE FILE NAME STA EFBUF+10 AND ISZ EFILE PUT LDA EFILE,I IT STA EFBUF+11 INTO ISZ EFILE THE LDA EFILE,I ERROR STA EFBUF+12 MESSAGE . * * LDA P26 GET THE CHAR COUNT STA CONSL ECHO TO THE CONSL LDB DEBUF AND THE ADDRESS JSB DRKEY NOW PRINT THE ERROR MESSAGE ISZ ERRCT BUMP UP THE ERROR COUNTER JSB ASTRX PRINT ****** * LDA ERRSV GET ERROR CODE CPA N6 FILE NOT FOUND? JMP FLERR,I YES , OK TO CONTINUE CPA N7 FILE SEC. CODE ERROR? JMP FLERR,I YES , OK TO CONTINUE CPA N32 CRN NOT FOUND? JMP FLERR,I OK , GO GET NEXT COMMAND * JMP ABOR ANY OTHER DISC ERROR ABORT * EFILE NOP DEBUF DEF EFBUF EFBUF ASC 13, FMGR -6 ON FILE COMAND ERRSV NOP SKP * * * THE NAMRR 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 * NAMRR NOP JSB NAMR THIS IS THE RELO LIBR PARSING ROUTINE DEF *+5 RETURN ADDR DEF IPBUF ADDRESS OF 10 WORD PARSED BUFFER DEF STRNG ADDRESS OF BUFFER TO BE PARSED DEF SLONG CHARACTER LENGTH DEF ISTRC CHAR OFFSET IN STRNG FOR NEXT PRAM JMP NAMRR,I RETURN TO CALLER * * SKP SKP MOVE NOP WORD MOVE SUBROUTINE STA CNT1 SAVE WORD COUNT LDA MOVE,I GET SOURCE STA PTN1 SET IN POINTER 1 ISZ MOVE STEP TO DEST. ADDR LDA MOVE,I GET DEST. ISZ MOVE STEP TO RETURN ADDR MOV1 LDB PTN1,I GET A WORD STB A,I PUT IT AWAY ISZ PTN1 STEP SOURCE INA AND DEST. ADDRES ISZ CNT1 DONE? JMP MOV1 NO - CONTINUE JMP MOVE,I YES - EXIT * * * CONVERT TO DECIMAL ASCII (MAX VALUE = 99) * CALL SEQUENCE: LDA VALUE * JSB CNV99 * STA ASCII * CNV99 NOP QUICK CONVERSION CLB BINARY TO DECIMAL ASCII DIV P10 MAX VALUE = 99 SZA ADA M20 FORCE LEADING BLANK IF ZERO ADA M40 ALF,ALF PUT IN LEFT HALF IOR B IOR M60 JMP CNV99,I RETURN ASCII IN (A) SKP * * ROUTINE TO OUTPUT A WORD THAT HAS BEEN RELOCATED * * * JSB L.OUT * DEF *+3 * DEF ADDRESS ADDRESS OF ADDRESS * DEF VALUE ADDRESS OF VALUE * * DADD NOP DVAL NOP L.OUT NOP JSB .ENTR DEF DADD LDA DADD,I GET ADDRESS STA QTEMP CMA,INA NEGATE ADDRESS ADA CROM ADD TOP OF MEMORY SSA OUTPUT FILE OVERFLOW? JMP FILOV YES , GIVE ERROR ADA B1200 SUBTRACT 1200B SSA BOOTX OVERLAY? JSB BOOTX YES , GIVE ERROR MESSAGE LDA DVAL,I NO STA PTEMP * CLB CALCULATE RECORD # & WORD POSITION LDA QTEMP GET ADDRESS ADA P128 REC # = (ADDRESS+128)/128 DIV P128 QUOTIENT IN A = RECORD # STA RECN THIS THE RECORD # INB REMAINDER IN B + 1 = WORD POSITION STB WORDN THIS THE WORD POSITION IN THE RECORD * CPA RECNO NEW REC # EQUAL TO PREVIOUS REC #? JMP L.O10 YES , JUST DATE THE RECORD * JSB WRITF NO , WRITE OUT CURRENT REC DEF *+6 DEF ODCB2 DEF IERR2 DEF OTBUF DEF P128 DEF RECNO * SSA,RSS ANY ERROR? JMP L.003 NO , CONTINUE LDB F2 ADDRESS OF SYSTEM OUTPUT FILE NAME JSB FLERR * L.003 JSB READF READ THE NEW RECORD IN DEF *+7 DEF ODCB2 DEF IERR2 DEF OTBUF DEF P128 DEF RTEMP DEF RECN SSA,RSS ANY ERROR? JMP L.006 NO , CONTINUE LDB F2 ADDRESS OF SYSTEM OUTPUT FILE NAME JSB FLERR * L.006 LDA RECN STA RECNO SAVE IT AS THE CURRENT RECORD # * L.O10 LDA WORDN UPDATE THE RECORD ADA N1 WITH THE NEW WORD ADA AOTBF LDB PTEMP GET THE VALUE OF THE WORD STB A,I AND PLACE IT IN THE RECORD * * LDA QTEMP GET ADDRESS AGAIN ADA B2000 ADA -2000B SSA 2000B OR GREATER ? IE NOT ON BASE PAGE RSS NO , UPDATE BP JMP L.20 YES INA ADA TDBP ADD TOP OF DUMMY BP LDB PTEMP GET VALUE STB A,I STORE VALUE IN DUMMY BP * L.20 LDA MAXAD GET CURRENT MAX ADDRESS CMA,INA ADA QTEMP ADD CURRENT ADDRESS SSA MAX ADDRESS BIGGER ? JMP L.OT YES LDA QTEMP NO , REPLACE CURRENT MAX ADDRESS STA MAXAD L.OT LDA TH2.L CURRENT HIGH ADDRESS + 1 OF THIS LOAD CMA,INA NEGATE ADA QTEMP ADD CURRENT OUTPUT ADDRESS SSA EQUAL OR GREATER? JMP L.OUT,I NO , RETURN LDA QTEMP YES , INA OUTPUT ADDRESS IS EQUAL OR LARGER STA TH2.L REPLACE IN TH2.L JMP L.OUT,I * FILOV LDA P6 LDB MESOV JSB DRKEY PRINT OUTPUT FILE OVERFLOW JSB ASTRX PRINT ****** ISZ ERRCT JMP EXIT * MESOV DEF *+1 ASC 3,OV MEM SYSTEM OUTPUT FILE OVERFLOWED * BOOTX NOP LDA PRERR SZA ERROR PRINTED PREVIOUSLY? JMP BOOTX,I YES , RETURN LDA P6 NO LDB MESBX JSB DRKEY PRINT BOOTX OVERLAYED ISZ ERRCT JSB ASTRX PRINT ****** CCA STA PRERR SET ERROR PRINTED FLAG JMP BOOTX,I * MESBX DEF *+1 ASC 3,OV BTX OVERFLOWED INTO BOOTX * RECN NOP WORDN NOP RECNO DEC 255 * * AOTBF DEF OTBUF OTBUF BSS 128 SKP * THE 3 WORD PROGRAM NAME IS PUT INTO THE RTLGN PROG * TABLE. THE NAMES ARE LOADED FROM THE TOP DOWN. * * CALLING SEQUENCE: * A = ADDRESS OF PROGRAM NAME * B = IGNORED * JSB LDIPX * RETURN: * (N+1) = ERROR * (N+2) = OK * * 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 CPA P10 EXCEED MAX? JMP LDIPX,I YES , ERROR RETURN 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 ISZ LDIPX OK RETURN 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 APROG 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 * BIDNT NOP ADDRESS OF FIRST IDENT IP1 NOP IP2 NOP IP3 NOP SKP * * SEARCH RTLGN PROG TABLE * * THIS IS A MULTIPLE ENTRY ROUTINE WHICH WILL EITHER * SEARCH FOR A NAME OR CONTINUE FROM THE LAST FIND. * * CALLING SEQUENCE: * A = ADDRESS OF NAME (3WORD) * B = IGNORED * JSB SRIPX * * RETURN: * (N+1) PROGRAM NAME WAS FOUND IN TABLE, IN IP1-3 * (N+2) REACHED THE END OF THE PROGRAM TABLE * SRIPX NOP LDB WRDCT SEARCH OR CONTINUE? SZB JMP SRIP1 CONTINUE STA SRISV INIT SEARCH JSB INIPX SET UP IP POINTERS LDA PROCT NUMBER OF ENTRIES CMA STA WRDCT SAVE FOR LOOPING SRIP1 ISZ WRDCT ALL DONE? JMP *+3 NO, GO COMPARE NAMES ISZ SRIPX YES, BUMP RETURN JMP SRIPX,I JSB IPX SET POINTERS LDB IP1 NAME IN TABLE LDA SRISV LOOK FOR NAME JSB NACMP GO COMPARE JMP SRIP1 DOSN'T COMPARE, LOOK NEXT JMP SRIPX,I DOES COMPARE, RETURN * SRISV NOP * SKP * * ROUTINE TO COMPARE TWO NAME BUFFERS * * * CALLING SEQUENCE: * A = ADDRESS OF SOURCE NAME- 3 ENTRIES * B = ADDRESS OF TABLE 3 ENTRIES * JSB NACMP * * RETURN: A AND B ARE DESTROYED * (N+1) NAMES DO NOT COMPARE * (N+2) NAMES COMPARE * NACMP NOP STA TEMP1 SAVE SOURCE ADDRESS STB TEMP2 SAVE TABLE ADDRESS LDA N2 LOOP COUNT STA TEMP3 NACM1 LDA TEMP1,I SOURCE ENTRY CPA TEMP2,I TABLE COMPARE RSS YES,COMPARE, LOOK NEXT JMP NACMP,I NO IT DOESN'T RETURN ISZ TEMP1 BUMP SOURCE ISZ TEMP2 BUMP TABLE ISZ TEMP3 JMP NACM1 TRY AGAIN LDA TEMP2,I FIRST TWO COMPARE, LOOK LAST AND M400 LOOK UPPER ONLY STA B LDA TEMP1,I AND M400 CPA B ISZ NACMP BUMP RETURN FOR COMPARE! JMP NACMP,I * TEMP1 NOP TEMP2 NOP TEMP3 NOP * * BSS 29 PROGN NOP APROG DEF PROGN * SKP * * VARIABLES * #ENPT NOP ABGBP NOP ADDID NOP ADDRESS OF ID SEGMENT AFWBG NOP AINT NOP ADDRESS OF INT TABLE ANLU# NOP BGFLG NOP BPFWA OCT 100 1ST WORD OF BASE PAGE BPLOC NOP CHAR# NOP INPUT # OF CHARACTER CLEN NOP RECORD READ LENGTH CNT1 NOP COMAD NOP ADDRESS OF SYS COMMON OR 0 IF LOCAL COMFG NOP UNLABEL COMMON IN FLAG COMLG NOP LENGTH OF SYSTEM COMMON OR 0 CONSL NOP ECHO TO CONSOLE 1=YES 0=NO COUNT DEC 13 CURRENT MESSAGE LENGTH CROM OCT 37770 CONTENTS OF $ROM CSDBP NOP CURRENT SYS DUM BP CSRBP NOP CURRENT SYS REAL BP CUDBP NOP CURRENT USER DUM BP CURBP NOP CURRENT USER REAL BP DBLOC DEF BPLOC DLOCC DEF LOCC ERRCT NOP ERROR COUNTER FATAL NOP 0/1 NO FATAL ERROR / FATAL ERROR FWFM NOP 1ST WORD OF FREE MEMORY IERR1 NOP IERR2 NOP IERR3 NOP IERR4 NOP IPTN2 NOP OPEN OPTION LDBP NOP LOWER BOUND OF DUMMY BASE PAGE LENTF OCT 1 NO ENT PT / LIST ENT PT (DEFAULT) LNKDR NOP BP LINK DIRECTION -1 = SYS LINK , 1 = USER LINK LOCC NOP LODPT NOP LOAD POINT LTEMP NOP LWAPG NOP LAST WORD OF ADDRESS SPACE LWFM NOP LAST WORD OF FREE MEMORY MAXAD NOP CURRENT MAX ADDRESS MSIZE NOP MEMORY SIZE NLIB NOP # OF LIBRARY FILES NUMID NOP # OF ID SEGMENTS OP? NOP OP1? NOP PPREL NOP PRERR NOP 0/-1 PRINT ERROR/ERROR PRINTED PREVIOUSLY PROCT NOP PTEMP NOP PTN1 NOP QTEMP NOP RTEMP NOP SEGNM NOP SIDCK NOP SYSTEM ID CHECK TDBP NOP TOP OF DUMMY BASE PAGE WRDCT NOP SKP * * PRE-SET VARIABLES * DFTLU DEC 1 DEFAULT LU ISTRC DEC 1 POINTER TO CURRENT CHAR TO BE PARSE * * CONTANTS * P1 DEC 1 P2 DEC 2 P3 DEC 3 P6 DEC 6 P8 DEC 8 P10 DEC 10 P13 DEC 13 P14 DEC 14 P18 DEC 18 P26 DEC 26 P32 DEC 32 P40 DEC 40 P128 DEC 128 * N1 DEC -1 N2 DEC -2 N4 DEC -4 N5 DEC -5 N6 DEC -6 N7 DEC -7 N32 DEC -32 N80 DEC -80 * M20 OCT 20 M40 OCT 40 M60 OCT 60 M400 OCT 400 * B1200 OCT -1200 B2000 OCT -2000 * ASTRK OCT 25000 THIS IS A * HIMSK OCT 177400 * BLNK2 ASC 1, DOUBLE BLANK * * BASE PAGE COMMUNICATION VALUES * A EQU 0 B EQU 1 * * SPC 3 END RTLGN