*20 / CREF12 PDP-12 CROSS REFERENCE PROGRAM / / JUD LEONARD / AUGUST 27, 1970 / /COPYRIGHT 1970; DIGITAL EQUIPMENT CORP. / MAYNARD, MASS 01754 / / PMODE / FIELD 1 / / *15 / / AUTO-INDEX AND BETA REGISTERS / AUTO1, 0 AUTO2, 0 AUTO3, 0 / / SYSTEM VARIABLES / SYSCOUNT,0 SYMCNT, 0 REFCNT, 0 LP, 0 LISTSW, 0 LSTREQ, 0 TEMP, 0 START, 0 CHAR, 0 LINENO, 0 LPOINT, CURLIN LLEN, 0 LINE, 0 NAME, 0 0 0 0 0 / EJECT / / GLOBAL SUBROUTINE POINTERS / PCRLF, CRLF PTTY, TTY PGETLIN,GETLIN PGETC, GETC PLIMIT, LIMIT PPUTC, PUTC PENDLST,ENDLST PIPUSH, IPUSH PIMOVE, IMOVE PPOCTAL,POCTAL PGETBLK,GETBLK PBLOCK, BLOCK PRETCHK,RETCHK PLTT, LTT PGTEMP, GTEMP / / CONSTANTS / BOOT, 7777 READ, 7774 M4=READ / P7, 7 CARRET, 215 LINFED, 212 MCARET, -215 MLINFD, -212 LPPAGE, 100 /LINES PER PAGE MLPAGE, -100 EJCOM, 17 / MTEXT, -2405 /MINUS -3024 /SIXBIT -4040 /"TEXT " / / BUFFER=3000 BUFLOC=26 / / / EJECT / / PAGE / / / INITIALIZATION / 0002 /FORCE MODE LINC LMODE LDA I 20 ESF /I/O PRESET LDF 7 RDC /FIRST HALF 6\322 /OF I/O ROUTINES RDC /READ REST 7\323 LDA I 10 AXO /SET NO PAUSE CHK /MOVE TAPE TO DIAL 277 PDP PMODE CLA /NULL CHAR TLS /TO PRIME TTY RESTART,CLA DCA LSTREQ /CLEAR LISTING REQUEST DCA LP /SET NO PRINTER JMS I PCRLF JMS I PTTY /ASK FOR UNIT INIT DCA I PPOINTER TLOOP, JMS GETTTY /ASSEMBLE UNIT NO JMS I PLIMIT 260 267 RESTART USET TAD I PPOINTER CLL RAL RTL TAD CHAR TAD M260 DCA I PPOINTER JMP TLOOP / USET, TAD CHAR /NOT A DIGIT TAD MCARET /IS IT CR? SZA CLA JMP RESTART /NO - ERROR / EJECT / / LSTSET, JMS I PTTY /ASK FOR LISTING LST JMS GETTTY /WAIT FOR RESPONSE JMS I PCRLF TAD CHAR /COMPARE RESPONSE ... TAD MCN /... TO N SNA /EQUAL? JMP PRTSET /YES - NO LISTING TAD CNMCY /COMPARE TO Y SZA CLA /EQUAL? JMP LSTSET /NO - HE GOOFED ISZ LSTREQ /YES - SET LIST REQUEST / / DOES HE HAVE A PRINTER? / IF SO, WHAT KIND? / PRTSET, LCF /CLEAR ANALEX FLAGS LCB LLB /LOAD NULL CLA TAD M4 DCA AUTO1 DCA AUTO2 LSD /SKIP IF LP12 SKP JMP LP12 ISZ AUTO2 JMP .-4 ISZ AUTO1 JMP .-6 /KEEP HOPING / / HE DOESNT HAVE AN LP12 / CLA CLL IAC RAL TAD LINFED LPC /EJECT CLA TAD M40 /WAIT 1.3 SECS DCA AUTO1 DCA AUTO2 /SET WAIT COUNTS LSF /SKIP IF DONE SKP JMP LP08 /GOT ONE ISZ AUTO2 JMP .-4 ISZ AUTO1 JMP .-6 CLA CMA DCA LINE JMP I PMAIN /TOO BAD, MUST USE TTY / EJECT / / USE LP08 / LP08, CLA CMA DCA LP JMP SETLIN / / USE LP12 / LP12, ISZ LP /SET LP12 TAD EJCOM LPR /GO TO TOP OF PAGE CLA SETLIN, TAD MLPAGE DCA LINE JMP I PMAIN /BEGIN THE BEGUINNE / / GETTTY, 0 KSF JMP .-1 KRB DCA CHAR TAD CHAR JMS I PPUTC TAD CHAR JMP I GETTTY / / CHECK FOR RETURN HIT ON TTY, / AND EXIT IMMEDIATELY IF SO. / RETCHK, 0 CLA KSF /KEY STRUCK? JMP I RETCHK /NO KRB TAD MCARET /CAR RET? SZA CLA JMP I RETCHK /NO TAD CARRET /YES - ABORT JMS I PLTT TAD LINFED JMS I PLTT TSF JMP .-1 TCF JMP I BOOT / / PPOINTER,POINTER PMAIN, MAIN MCN, -316 /-"N CNMCY, 316-331 /"N-"Y M200, -200 M260, -260 M40, -40 / EJECT / PAGE / / / HERE WE GO / MAIN, JMS I PCRLF CLA DCA I PBLOCK JMS I PGETBLK /RESET THE INPUT UNIT CLA CMA DCA START /SET START DCA SYSCOUNT /RESET SYSTEM COUNTER DCA SYMCNT DCA REFCNT / / MLOOP, JMS I PGETLIN /GET A LINE FROM INPUT NOGOOD /THERES A ZERO WHERE / IT DOESNT BELONG JMS ENDLST /LOOK FOR END OF LIST SYMBUILD /BUILD SYMBOL TABLE JMP MLOOP /ELSE TRY NEXT LINE EJECT / / CHECK CURRENT LINE FOR END OF LISTING / LINE WILL BE EITHER "NO ERRORS" / OR "XXXX ERRORS" / ENDLST, 0 JMS I PRETCHK TAD I ENDLST /ADDR FOR / END-OF-LISTING RETURN DCA ENDRET ISZ ENDLST /NOT-END RETURN TAD ENDMES /LINE AT END OF LISTING DCA AUTO1 TAD ENDLEN /MESSAGE LENGTH DCA AUTO3 TAD I LPOINT /LOOK AT FIRST CHAR TAD NEGN /COMPARE TO N SZA CLA /SKIP IF "NO ERRORS" CLL IAC RAL /SET UP A TWO CLL IAC /NOW ONE OR THREE TAD LPOINT /ADDED TO START OF LINE DCA AUTO2 ENDLUP, TAD I AUTO1 TAD I AUTO2 SZA CLA /MATCH? JMP I ENDLST /NO - RETURN ISZ AUTO3 JMP ENDLUP JMP I ENDRET /GOT IT - RETURN / / ENDMES, . -240 /BLANK -305 /E -322 /R -322 /R -317 /O -322 /R ENDLEN, ENDMES-.+1 / ENDRET, 0 NEGN, -316 /-"N / EJECT / / / READ THE SYMBOL TABLE LISTING, BUILDING / AN EQUIVALENT TABLE IN FIELD 0 / / SYMBUILD,JMS I PGETLIN /GET A LINE PART2 /BEGIN SEARCH IF END JMS I PRETCHK TAD I LPOINT /GET FIRST CHAR OF SYM JMS I PLIMIT /VALID SYMBOL? 301 332 /IF NOT ALPHA, IGNORE SYMBUILD SYMBUILD LINC LMODE SET I AUTO1 NAME-4000 SET I AUTO2 -6 MBT, PDP PMODE JMS I PGETC LINC LMODE STH I AUTO1 XSK I AUTO2 JMP MBT PDP PMODE CLA CLL DCA NAME+3 DCA NAME+4 TAD P5 TAD SYSCOUNT DCA SYSCOUNT /UPDATE CORE UTILIZATION SZL /OVERFLOW? JMP BOPOUT /YES - PRINT ONLY THIS ISZ SYMCNT JMS I PIPUSH 7777 /PUSH FROM TOP FIELD 0 5 /FOR OPENING OF 5 WORDS JMS I PIMOVE CDF 10 NAME CDF 0 7773 5 JMP SYMBUILD / / EJECT / / INCREMENT SYSCOUNT TO KEEP TRACK / OF FIELD 0 UTILIZATION. IF IT OVERFLOWS, / SO SORRY. / BOPUP, 0 ISZ SYSCOUNT /INCR STORAGE USE COUNT JMP I BOPUP /NORMAL RETURN BOPOUT, JMS I PTTY /OOPS - TOO MANY MESS1 TAD LINENO JMS I PPOCTAL JMS I PCRLF JMS I PCRLF BOPRST, JMS I PGETLIN /SCAN TO END OF LISTING NOGOOD /BAD DATA JMS I PENDLST /IS THIS THE END DUMP JMP BOPRST /TRY NEXT LINE / / P5, 5 / EJECT / PAGE / / READ THE LISTING BY LINES, / BUILDING THE CROSS REFERENCE / PART2, CLA DCA I PBLOCK /START FROM BLOCK ZERO JMS I PGETBLK /REWIND THE INPUT UNIT TAD LSTREQ /DOES HE WANT LISTING? DCA LISTSW /START LISTING / / MAJOR, JMS I PGETLIN /GET A LINE NOW NOGOOD /SHOULDNT BE ZEROS HERE JMS I PENDLST /END OF LIST? DUMP /YES - DUMP CREF TAD MMARGIN /NO - VERIFY LINE LEN TAD LLEN SPA CLA /IS LINE TOO SHORT? JMP MAJOR /YES - GET NEXT JMS I PISNUM /IS THERE A LINE NO? JMP MAJOR /NO - GET NEXT LINE TAD MARGIN /YES - SKIP ASM JUNK TAD LPOINT DCA LPOINT / / SCAN, JMS GETC /LOOK FOR A SYMBOL TAD MSLASH /COMMENT? SNA CLA JMP MAJOR /YES - GO TO NEXT LINE TAD CHAR JMS I PLIMIT 301 332 /A TO Z MAJOR /ZERO IMPLIES EOL SCAN /SEARCH FOR ALPHA LINC LMODE LDA I TEXT " " STA NAME STA NAME+1 STC NAME+2 SET I AUTO1 NAME-4000 SET I AUTO2 -6 SOK, ADD CHAR STH I AUTO1 /STORE IN 6BIT / EJECT / SLOOP, PDP PMODE JMS GETC JMS I PLIMIT 301 332 /A TO Z NOGOOD .+2 JMP SEND TAD CHAR JMS I PLIMIT 260 271 /0 TO 9 NOGOOD SDUNE / / SEND, LINC LMODE XSK I AUTO2 /END OF SYMBOL? JMP SOK /NO - PUT CHAR IN NAME SET I AUTO2 /YES - FORCE END -1 /NEXT TIME JMP SLOOP /SCAN TO DELIMITER / EJECT / / PMODE / / SYMBOL IS ASSEMBLED AT NAME. / CHECK THE TERMINATOR. / / SDUNE, TAD CHAR TAD MEQ SNA JMP ASSY /SYMBOL DEF (VIA =) TAD EQMCOM SNA CLA JMP ASSY /TAG DEFINITION / / IS THE SYMBOL THE TEXT PSEUDO-OP / TAD NAME /FIRST 2 CHARS OF SYM TAD MTEXT SZA CLA /DO FIRST TWO MATCH? JMP SAVREF /NO TAD NAME+1 /YES-CHECK NEXT TAD MTEXT+1 SZA CLA /DO THESE MATCH? JMP SAVREF /NO TAD NAME+2 /YES-CHECK FOR BLANKS TAD MTEXT+2 SNA CLA /LAST CHANCE JMP I PTEXT /START TEXT-MODE SCAN SAVREF, JMS I PNSERCH /THIS IS A REFERENCE, / NOT A DEFINITION JMP SCAN /NOT A USER SYMBOL - / RESUME SCAN ISZ TEMP /SKIP OVER END OF NAME ISZ TEMP /SKIP OVER DEF LINENO JMS I PIZERO /SCAN FOR END OF REFS HLT JMS I PBOPUP /TEST CORE OVERFLOW ISZ REFCNT CLA CMA TAD TEMP DCA BP1 JMS I PIPUSH /MAKE SPACE FOR THIS BP1, 0 1 CDF 0 TAD LINENO DCA I BP1 /STORE THIS LINE NO CDF 10 JMP SCAN /CONTINUE SCAN / EJECT / / IF SYMBOL DEFINED HERE, / INSERT LINENO IN FIRST WORD AFTER NAME / / ASSY, JMS I PNSERCH JMP SCAN /SHOULDNT HAPPEN CLA ISZ TEMP CDF 0 TAD LINENO DCA I TEMP CDF 10 JMP SCAN /RESUME SCAN / / / MMARGIN,-4-6-4-2-4-2-3 MARGIN, 6+4+2+4+2 MEQ, -275 EQMCOM, 275-254 MSLASH, -257 / / PNSERCH,NSERCH PISNUM, ISNUM PIZERO, IZERO PBOPUP, BOPUP PTEXT, TXTMODE / / / GET NEXT CHAR FROM CURRENT LINE / / GETC, 0 CLA TAD I LPOINT /NEXT CHAR DCA CHAR ISZ LPOINT /POINT TO NEXT TAD CHAR JMP I GETC /RETURN WITH IT / / EJECT / / PAGE / / ASSEMBLE CURRENT LINE NUMBER IN BINARY AT LINENO. / NORMAL RETURN TO P+2 / ALT RETURN TO P+1 IF NEXT / FOUR CHARACTERS ARE NOT OCTAL DIGITS. / ISNUM, 0 CLA DCA LINENO /CLEAR LINE NO TAD M4 DCA AUTO1 ISNLP, JMS I PGETC JMS I PLIMIT 260 267 /OCTAL DIGITS NOGOOD WRONG TAD LINENO CLL RTL RAL TAD CHAR TAD MZERO DCA LINENO ISZ AUTO1 JMP ISNLP ISZ ISNUM WRONG, JMP I ISNUM / MZERO, -260 / / / IF WORD AT TEMP IS ZERO, TAKE SECOND RETURN. / ELSE, INCREMENT TEMP AND TRY AGAIN. / IF TEMP OVERFLOWS, TAKE FIRST RETURN. / / IZERO, 0 CLA CDF 0 TAD I TEMP CDF 10 SNA ISZ IZERO SNA CLA JMP I IZERO ISZ TEMP JMP IZERO+2 JMP I IZERO / EJECT / / FIND NAME IN SYMBOL TABLE / NSERCH, 0 CLA TAD START /START OF SYMBOL TABLE DCA TEMP / NLOOP, TAD PNAME /POINTER TO NAME - 1 DCA AUTO1 TAD M3 /6 CHARS = 3 WORDS DCA AUTO2 / NLOOP2, ISZ TEMP /INCR POINTER SKP /NOT END OF CORE JMP I NSERCH /TEMP OVRFLO, NO FIND CDF 0 TAD I TEMP /WORD OF SYMBOL CDF 10 CIA TAD I AUTO1 /COMPARE TO NAME / / COULD TEST HERE FOR END OF SEARCH / SZA CLA /EQUAL? JMP NBAD /NO - GO TO NEXT SYMBOL ISZ AUTO2 /YES - END OF SYMBOL? JMP NLOOP2 /NO - COMPARE NEXT WORD ISZ NSERCH /YES - MATCH IS HERE JMP I NSERCH /RETURN P+2 / NBAD, TAD AUTO2 /REMAINING LENGTH CIA CLL IAC /POS FORM + 1 TAD TEMP /INCR TEMP TO REFS DCA TEMP SZL /END OF CORE? JMP I NSERCH /YES - NO FIND JMS IZERO /NO - FIND END OF REFS JMP I NSERCH /END OF CORE JMP NLOOP /GOT NEXT, COMPARE IT / / PNAME, NAME-1 M3, -3 / / EJECT / / WE HAVE SEEN A TEXT PSUEDO-OP / IGNORE INPUT UNTIL DELIMITER / / TXTMODE,TAD CHAR /PSEUDO-OP TERMINATOR SNA /IS IT ZERO? JMP GETDEL /YES - DELIMITER / IS ON NEXT LINE TAD MCARET SNA CLA /IS IT CAR RETURN? GETDEL, JMS TXTLIN /YES-GET NEXT LINE JMS I PGETC /NEXT CHAR FROM LINE CIA DCA TXTEND /HOLD THAT / TXTLP, JMS I PGETC /NEXT CHAR FROM LINE TAD TXTEND /IS IT DELIMITER? SNA CLA JMP I TMAJOR /YES-RESUME MAJOR SCAN TAD CHAR TAD MCARET /EOL? SNA CLA JMS TXTLIN /YES - GET ANOTHER LINE JMP TXTLP /NO - KEEP TRYING / / TXTLIN, 0 JMS I PGETLIN NOGOOD JMS I PENDLST /END OF LISTING? DUMP TAD MEDGE /IS LINE LONG ENOUGH? TAD LLEN SPA CLA JMP TXTLIN+1 /NO - GET NEXT TAD EDGE /YES - SKIP OVER JUNK TAD LPOINT DCA LPOINT JMP I TXTLIN /AND CONTINUE SCAN / / TXTEND, 0 TMAJOR, MAJOR MEDGE, -31 /MINIMUM LINE WIDTH EDGE, 26 / / EJECT / / / / PAGE / / / MOVE DOWN A PORTION OF THE TABLE IN FIELD 0 / TO MAKE SPACE FOR A NEW ENTRY / IPUSH, 0 CLA TAD I IPUSH /ADDR OF LAST TO PUSH ISZ IPUSH CIA TAD START /GIVES MINUS NUMBER / OF WORDS MOVED DCA AUTO3 /STORE MINUS COUNT TAD START /BEGIN OF SYM TAB -1 DCA AUTO1 TAD I IPUSH /DISTANCE TO PUSH ISZ IPUSH CIA TAD START /FROM OLD START DCA START /GIVES NEW START TAD START DCA AUTO2 TAD AUTO3 SNA CLA /IS COUNT ZERO? JMP I IPUSH /YES - EXIT NOW CDF 0 /DATA IS IN FIELD 0 IPLP, TAD I AUTO1 /GET A WORD DCA I AUTO2 /MOVE IT ISZ AUTO3 /TEST COUNT JMP IPLP CDF 10 JMP I IPUSH / / EJECT / / MOVE DATA ACROSS FIELDS / / IMOVE, 0 CLA JMS IMGET DCA IMCDF1 CLA CMA JMS IMGET DCA AUTO1 JMS IMGET DCA IMCDF2 CLA CMA JMS IMGET DCA AUTO2 JMS IMGET SNA JMP I IMOVE CIA DCA AUTO3 IMCDF1, 0 TAD I AUTO1 IMCDF2, 0 DCA I AUTO2 ISZ AUTO3 JMP IMCDF1 CDF 10 JMP I IMOVE / / IMGET, 0 TAD I IMOVE ISZ IMOVE JMP I IMGET / EJECT / / CHECK THAT THE AC IS WITHIN LIMITS / LOW, HIGH LIMITS FOLLOW THE JMS / THEN RETURN ADDR FOR ZERO AC, / THEN OUT-OF-LIMITS ADDRESS / LIMIT, 0 DCA LTEMP /STORE COMPARISON VALUE TAD I LIMIT /LOWER LIMIT ISZ LIMIT DCA LOW TAD I LIMIT /UPPER LIMIT ISZ LIMIT DCA HIGH TAD I LIMIT /ZERO RETURN ISZ LIMIT DCA LEND TAD I LIMIT /OUT OF BOUNDS RETURN ISZ LIMIT DCA LNO TAD LTEMP /GET TEST VALUE SNA /ZERO? JMP I LEND /YES - TAKE P+3 RETURN CIA TAD HIGH /COMPARE TO UPPER BOUND SPA CLA JMP I LNO /OUT OF BOUNDS TAD LOW CIA TAD LTEMP SPA CLA JMP I LNO /OUT OF BOUNDS JMP I LIMIT /OK / / / LTEMP, 0 LOW, 0 HIGH, 0 LEND, 0 LNO, 0 / / EJECT / / / PRINT AC IN OCTAL / / POCTAL, 0 DCA W4 TAD W4 RTR RAR DCA W3 TAD W4 AND P7 TAD CZERO DCA W4 TAD W3 RTR RAR DCA W2 TAD W3 AND P7 TAD CZERO DCA W3 TAD W2 RTR RAR DCA W1 TAD W2 AND P7 TAD CZERO DCA W2 TAD W1 AND P7 TAD CZERO DCA W1 JMS I PTTY W1 JMP I POCTAL / CZERO, 260 / W1, 0 W2, 0 W3, 0 W4, 0 0 / EJECT / PAGE / / GET A BLOCK FROM THE LISTING FILE / GETBLK, 0 CLA CDF 0 TAD I P7750 /SAVE DCA S7750 /DISK TAD I P7751 /DATA-BREAK DCA S7751 /LOCATIONS CDF 10 JMS I READ /READ BLOCK POINTER CDF 0 TAD S7750 /RESTORE DCA I P7750 /DISK TAD S7751 /DATA-BREAK DCA I P7751 /WORDS CDF 10 TAD MBUFLN /RESET POINTERS DCA BCOUNT TAD PBUFF DCA BPOINT TAD BLOCK /UPDATE BLOCK NO TAD EIGHT DCA BLOCK JMP I GETBLK / / POINTER,0 BUFLOC BLOCK, 0 10 / / MBUFLN, -4000 PBUFF, BUFFER EIGHT, 10 / S7750, 0 S7751, 0 / P7750, 7750 P7751, 7751 / / EJECT / / / GET NEXT LINE OF LISTING / GETLIN, 0 CLA TAD I GETLIN /ALT RETURN / IF ZERO IN INPUT DCA ZERET ISZ GETLIN /NORMAL RETURN ADDR TAD PCURL DCA LPOINT /RESET LINE POINTER TAD PCURL-1 DCA AUTO1 /SET LINE BUILD POINTER DCA LLEN /CLEAR LENGTH TAD I BPOINT /GET FIRST CHAR / OF NEXT LINE TAD MLINFD /LINE FEED? SNA JMP NULLIN /YES - NULL LINE TAD LFMCR /CAR RET? SNA CLA JMP NULLIN /YES - NULL LINE NXTONE, JMS NXTCHR /NO - GET A CHAR DCA I AUTO1 /INSERT IN LINE ISZ LLEN /INCR LENGTH TAD LISTSW /LIST IT? SNA CLA JMP EOLTST /NO - TEST END OF LINE TAD CHAR JMS I PPUTC /YES - OUTPUT IT EOLTST, TAD CHAR TAD MLINFD /COMPARE TO LINE FEED SZA CLA /EOL? JMP NXTONE /NO - GET ANOTHER DCA I AUTO1 /SAFETY TERMINATOR JMP I GETLIN /TAKE NORMAL RETURN / / WHATCHA GOT HERE IS AN EMPTY LINE / ... IT STARTS WITH CR OR LF / NULLIN, TAD LISTSW /ARE WE LISTING? SZA CLA JMP LSTNUL /YES SKPNUL, JMS NXTCHR /GET CHARACTER TAD MLINFD /IS IT ... SNA /LINE FEED? JMP SKPNUL /YES - IGNORE IT TAD LFMCR SNA CLA /IS IT CR? JMP SKPNUL /YES - IGNORE TAD CHAR JMP NXTONE+1 /REAL CHAR - BUILD LINE / EJECT / / LINE IS EMPTY / LSTNUL, TAD LP /IS THERE A PRINTER? SNA CLA JMP TYPNUL /NO - TYPE IT TAD LINE /CURRENT LINE ON PAGE TAD LPPAGE /ARE WE AT TOP OF PAGE? SNA CLA JMP SKPNUL /YES-IGNORE NULL LINES CLA CMA /SET END OF PAGE DCA LINE TAD CARRET /FORCE EJECT JMS I PPUTC JMP SKPNUL / TYPNUL, JMS NXTCHR /GET CHARACTER JMS I PLTT /TYPE IT TAD I BPOINT /NEXT CHAR TAD MLINFD /IS IT LF? SNA JMP TYPNUL /YES - TYPE IT TAD LFMCR /IS IT CR? SNA CLA JMP TYPNUL /YES - TYPE IT JMP NXTONE /ELSE BUILD LINE / / / LFMCR, 212-215 / / / GET THE NEXT CHARACTER FROM THE INPUT FILE / NXTCHR, 0 CLA TAD I BPOINT AND CHRMSK SNA /WATCH OUT FOR ZEROS JMP I ZERET DCA CHAR ISZ BPOINT TAD CHAR ISZ BCOUNT JMP I NXTCHR JMS GETBLK TAD CHAR JMP I NXTCHR / BPOINT, 0 BCOUNT, 0 CHRMSK, 377 CURLIN-1 PCURL, CURLIN / ZERET, 0 / EJECT / PAGE / / PUT A STRING OF CHARACTERS ON / THE LISTING DEVICE. / STRING IS TERMINATED WITH ZERO / / TTY, 0 CLA TAD I TTY DCA TYTEMP ISZ TTY TL, TAD I TYTEMP ISZ TYTEMP SNA JMP I TTY JMS PUTC JMP TL / TYTEMP, 0 / / / NEW LINE ON THE LISTING DEVICE / CRLF, 0 JMS TTY C JMP I CRLF / C, 215 212 0 / / EJECT / / PUT A CHARACTER ON THE LISTING DEVICE / PUTC, 0 DCA PT TAD PT JMS I PLIMIT 240 337 NOGOOD SP TAD LP SNA JMP LT LSD /WAIT FOR PRINTER JMP .-1 SPA CLA JMP PUTLP8 TAD PT LCF LLB CLA JMP I PUTC / / PUTLP8, TAD PT /GET CHAR LPC CLA JMP I PUTC / / LT, TAD PT JMS LTT JMP I PUTC / / EJECT / / OUTPUT A CONTROL CHARACTER / SP, TAD PT TAD MCARET SZA CLA /IS IT CAR RET? JMP I PUTC /NO - IGNORE CLA CLL ISZ LINE /YES - NEW LINE JMP REG TAD MLPAGE DCA LINE CLL CML REG, TAD LP SNA JMP LE SPA CLA JMP SPLP8 TAD P10 SZL /NEW PAGE? TAD P7 /YES - MAKE EJECT COMMAND LSD JMP .-1 LCF LPR CLA JMP I PUTC / SPLP8, SZL /END OF PAGE? CLA CLL IAC RAL /YES, MAKE FORM TAD LINFED /ELSE LINEFEED LSF /WAIT JMP .-1 LPC CLA JMP I PUTC / EJECT / / LE, TAD CARRET JMS LTT TAD LINFED JMS LTT SNL /PAGE? JMP I PUTC /NO TAD LISTSW SZA CLA /LISTING? JMP I PUTC /YES TAD M3A DCA LCOUNT LELP, TAD LINFED JMS LTT ISZ LCOUNT JMP LELP JMP I PUTC / LTT, 0 TSF JMP .-1 TLS CLA JMP I LTT / / M3A, -3 P10, 10 PT, 0 LCOUNT, 0 / / / GET A WORD FROM SYMBOL TABLE / POINTED TO BY TEMP / GTEMP, 0 CDF 0 /SYMBOL TABLE FIELD TAD I TEMP /GET DATUM CDF 10 JMP I GTEMP /THATS ALL / / / FOUND A ZERO IN INPUT / WHERE IT SHOULDNT BE / NOGOOD, JMS I PTTY BADINPUT JMP I .+1 DONE / EJECT / PAGE / / DUMP THE CROSS REFERENCE TABLE / DUMP, CLA DCA LISTSW JMS I PCRLF TAD SYMCNT JMS I PPOCTAL /NO OF SYMBOLS JMS I PTTY NOSYM JMS I PCRLF TAD REFCNT /NO OF REFS JMS I PPOCTAL JMS I PTTY NOREF JMS I PCRLF JMS I PCRLF DMPGO, TAD START DCA TEMP DNAME, JMS I PCRLF ONCE, JMP NOWHDR /1ST TIME, FORCE HEADER TAD LINE TAD LPPAGE SZA CLA /TOP OF PAGE? JMP DSYM /NO DOHDR, JMS I PTTY /YES - PRINT HEADER CRFHDR ISZ LINE DSYM, JMS DSET ISZ TEMP JMP ND / EJECT / / ALL DONE / DONE, TAD LP /PRINTER? SZA CLA JMP EJOUT /YES-EXIT WITH EJECT TAD M12 /NO-EXIT WITH CRLF DCA AUTO3 JMS I PCRLF ISZ AUTO3 JMP .-2 JMP I BOOT / EJOUT, LSD /WAIT JMP .-1 ISZ LP JMP EJLP12 CLA CLL IAC RAL TAD LINFED /FORM FEED LPC LSF /WAIT FOR COMP JMP .-1 LCF8 /CLEAR FLAG JMP I BOOT / EJLP12, LCF TAD EJCOM LPR /EJECT LSD JMP .-1 LCF JMP I BOOT /EXIT / NOWHDR, ISZ LINE TAD DUMP /PICK UP CLA INSTR DCA ONCE /NOP THE JMP TO HERE JMP DOHDR /FORCE HEADER 1ST TIME / EJECT / / ND, JMS I PGETLIN /GET A LINE / FROM SYMBOL TABLE NOGOOD /SHOULDNT HAPPEN JMS I PRETCHK TAD I LPOINT /GET FIRST CHAR OF LINE JMS I PLIMIT /CHECK VALIDITY 301 332 /ALPHA ONLY NOGOOD ND /IN CASE OF GARBAGE DCA I SYMEND /STOP AFTER SYMBOL DCA I VALEND /AND AFTER VALUE JMS I PTTY /PRINT SYMBOL CURLIN JMS I PTTY /TWO SPACES NB JMS I PTTY /PRINT VALUE CURLIN+7 JMS I PTTY /TWO SPACES NB CLA STL IAC RAL /CONSTANT THREE TAD TEMP /BUMP TEMP OVER NAME DCA TEMP JMS I PGTEMP /DEFINITION LINE JMS I PPOCTAL JMS I PTTY /TWO SPACES NB NNLOOP, ISZ TEMP JMS I PGTEMP /GET A REFERENCE SNA /USED? JMP DNAME /NO - END OF REFS / TO THIS SYMBOL JMS I PPOCTAL /YES - PRINT IT JMS I PTTY /SPACE ONCE NB+1 ISZ NREST /MORE ROOM ON LINE? JMP NNLOOP /YES - GET NEXT REF ISZ TEMP /NO JMS I PGTEMP /IS THERE ANOTHER REF? SNA CLA JMP DNAME /NO - GO TO NEXT SYMBOL JMS I PCRLF /YES - NEW LINE TAD LINE TAD LPPAGE SZA CLA /NEW PAGE? JMP NLSET /NO JMS I PTTY /YES - DO HEADER CRFHDR ISZ LINE NLSET, JMS DSET /SET LIMIT TAD M12 /SPACE OVER BY 20 DCA AUTO1 JMS I PTTY NB ISZ AUTO1 /SPACE TO REF FIELD JMP .-3 JMP NNLOOP+1 / EJECT / SYMEND, CURLIN+6 VALEND, CURLIN+13 / / / DSET, 0 TAD LP SMA SZA TAD P12M27 TAD M12 DCA NREST JMP I DSET / / M12, -12 P12M27, 12-27 NREST, 0 / / / LP12 (ANALEX) SYMBOLS / LCB=6662 LCF=6652 LLB=6654 LPR=6664 LSD=6661 / / / LP08 (DATA PRODUCTS) SYMBOLS / LSF=6661 /SKIP CHAR FLAG LCF8=6662 /CLEAR CHAR FLG LPC=6666 /PRINT CHAR / EJECT / / / MESSAGES / / BADINPUT,215 212 215 212 302 /B 301 /A 304 /D 240 / 311 /I 316 /N 320 /P 325 /U 324 /T 0 / / NOSYM, 240 323 /S 331 /Y 315 /M 302 /B 317 /O 314 /L 323 /S 0 / / NOREF, 240 322 /R 305 /E 306 /F 305 /E 322 /R 305 /E 316 /N 303 /C 305 /E 323 /S 0 / EJECT / / NB, 240 240 0 /TWO BLANKS / / CRFHDR, 323 /S 331 /Y 315 /M 302 /B 317 /O 314 /L 240 240 326 /V 301 /A 314 /L 325 /U 305 /E 240 240 304 /D 305 /E 306 /F 240 240 322 /R 305 /E 306 /F 305 /E 322 /R 305 /E 316 /N 303 /C 305 /E 240 314 /L 311 /I 316 /N 305 /E 240 316 /N 325 /U 315 /M 302 /B 305 /E 322 /R 323 /S 215 212 215 212 0 / EJECT / MESS1, 215 /CAR RET 212 /LINE FEED 323 /S 331 /Y 315 /M 302 /B 317 /O 314 /L 240 / 324 /T 301 /A 302 /B 314 /L 305 /E 240 / 317 /O 326 /V 305 /E 322 /R 306 /F 314 /L 317 /O 327 /W 240 / 301 /A 324 /T 240 / 314 /L 311 /I 316 /N 305 /E 240 / 0 / / CURLIN=. /CURRENT LINE OF LISTING STARTS HERE EJECT / INIT, 325 /U 316 /N 311 /I 324 /T 240 / 243 / 277 /? 0 / LST, 314 /L 311 /I 323 /S 324 /T 311 /I 316 /N 307 /G 333 /[ 331 /Y 240 / 317 /O 322 /R 240 / 316 /N 335 /] 277 /? 0 / / / / / END OF CREF12 / / / / LISTAPE 12