/MEMO: VERSION 84 /LAST MODIFIED ON SEPTEMBER 27, 1974 @ 8:33 /PROGRAM TO PRODUCE MEMO'S *20 CHRCTR, -600 OPLOC, OP MLNG, -101 SPTOT, 0 KM600, -600 K200, 200 CTR, 0 MON, 7600 ERRLOC, ERROR TEMP, 0 CHAR, 0 SPL, 0 NWLOC, NWORD LPLOC, LNPT DPLOC, DECPT SPLOC, SP TLOC, TYP NCLOC, NCHAR KM3, -3 KM23, -23 KM215, -215 K240, 240 PSP, 0 LNCHAR, 0 EOFLG, 0 INDENT, 0 CRLOC, CRLNFD LLNG, 0 LNFD, 0 EXACT, 0 FLG, 0 CDIL, -1 INDEV, 0 MASK1, 7760 MASK2, 0017 MASK3, 7400 MASK4, 0377 LBLOC, LBUF-1 WBLOC, WBUF-1 GRLOC, GR SPLIST, SPACES-1 KM240, -240 KM1, -1 NGLOC, NG DIG, 0 CHARCT, 0 LINES, -66 /=-54(10) MCRLOC, MCR ZONK, 0 WTLOC, WT SPCR, -1 KSP, 2 TTLOC, TTYP MARG, 6 LINCTR, 0 K215, 215 K212, 212 KM2, -2 TRLOC, TRBUF-1 GBLOC, GB HMLOC, HM FMLOC, FM PAG, 1 /PAGE COUNTER PHFLG, 777 /ON BY DEFAULT PHSKP, 0 /ON BY DEFAULT PFFLG, 0 PFSKP, 0 MARG1, 0 MARG2, 0 K2, 2 PTR, 0 HNDLOC, 0 FPLOC, FP FSTHD, 0 TAB, 0 MTABS, -6 /DEFAULT IS TAB=7 SPACES KM4, -4 KM211, -211 SYLS, 0 SPLLOC, SYLPTS-1 TRNLOC, TRNSF RELOCX, REENT /*** RELOC CHANGED TO RELOCX FOR PAL8 V9 *** RH 2/6/75 SLUFLC, SLUF NMBR, 0 FROM, 0 TO, 3777 KM12, -12 KM260, -260 BLINLC, BLKIN PNLOC, PAGNUM SLFLOC, SLUF1 INDNT, 7777 NBLOC, NAMBUF-1 OUTDEV, 0 ODLOC, 0 /ENTRY POINT FOR OUTPUT HANDLER FILIM, 0 BLKOL, BLKO K7577, 7577 BUFLOC, HNDLR+777 KM14, -14 /SYMBOL DEFINITIONS CRLF=JMS I CRLOC NXTWRD=JMS I NWLOC CALUSR=JMS I K200 NXTCHR=JMS I NCLOC SPACE=JMS I SPLOC TYPE=JMS I TLOC LINEPT=JMS I LPLOC DECPNT=JMS I DPLOC ERRMES=JMP I ERRLOC GETREC=JMS I GRLOC NUMGET=JMS I NGLOC MCRLF=JMS I MCRLOC PRINT=JMS I TTLOC GRAB =JMS I GBLOC WAIT=JMS I WTLOC HMAR=JMS I HMLOC FMAR=JMS I FMLOC FILPAG=JMS I FPLOC NUMPAG=JMS I PNLOC OUT=JMS I OPLOC *200 /*****STARTING ADDRESS***** CIF+10 JMS I K7700 0010 /LOCK IN USER SERVICE ROUTINE CIF+10 CALUSR 0005 /CALL COMMAND DECODER 2001 /DEFAULT EXTENSION = .PA CDF+10 TAD I K7617 /GET LENGTH & DEV. NO. OF INPUT FILE CDF DCA INDEV TAD TRLOC DCA 17 CDF+10 /PROCESS OPTIONS CHOSEN TAD I K7644 CDF DCA TEMP TAD TEMP AND K40 SNA CLA /S BIT SET? JMP LK /NO TAD K7000 /YES: REPLACE SKP AT STRATEGIC POINTS DCA I STLOC /BY A NOP SO THAT THE PROGRAM WAITS LK, TAD TEMP /AFTER EACH PAGE AND K2 SNA CLA /W BIT SET? JMP LK2 /NO TAD K7000 /YES: REPLACE THE PROPER SKP BY A NOP DCA WA /SO THAT THE PROGRAM WAITS BEFORE TYPING LK2, TAD TEMP AND K400 SNA CLA /P BIT SET? JMP CONTIN /NO PRINT /YES: GET THE LOWER LIMIT TEXT "FROM " JMS I IPLOC /GET TYPED NUMBER CIA /FORM THE NEGATIVE DCA CHAR /(DELAY PUTTING IT IN 'FROM') PRINT /GET UPPER LIMIT TEXT "TO " JMS I IPLOC /GET TYPED NUMBER CIA /FORM THE NEGATIVE SZA DCA TO JMP CONTIN IPLOC, INPT PNFLOC, PNUMFX BR1LOC, BREAK1 STLOC, STOP K7000, 7000 K40, 40 K400, 400 DEFLOC, DEFALT K7617, 7617 K7620, 7620 K7644, 7644 K7700, 7700 CONTIN, TAD INDEV AND MASK1 /ISOLATE FILE LENGTH STL IAC RTR STL IAC RTR /GET TWO'S COMPLEMENT TAD CDIL DCA CDIL DCA FSTHD TAD INDEV AND MASK2 /ISOLATE DEVICE NUMBER DCA INDEV CDF+10 TAD I K7620 /GET STARTING BLOCK CDF DCA I BLINLC TAD INDEV CIF+10 CALUSR 0001 /GET DEVICE HANDLER H, HNDLR+1 ERRMES TAD H DCA HNDLOC TAD KM4 DCA CTR TAD NBLOC DCA 11 TAD K7577 DCA 10 CDF+10 TAD I 10 CDF AND MASK2 /ISOLATE OUTPUT DEV # SNA /ANY DEVICE SPECIFIED? JMP I DEFLOC /NO: USE DEFAULT DCA OUTDEV NPUT, CDF+10 /PUT FILE NAME IN TAD I 10 /BUFFER CDF DCA I 11 ISZ CTR JMP NPUT TAD OUTDEV CIF+10 CALUSR 0001 /PULL IN HANDLER OH, HNDLR+401 ERRMES TAD OUTDEV CIF+10 CALUSR 0003 FBO, NAMBUF /GETS STARTING BLOCK # AFL, 0 /GETS AVAILABLE FILE LENGTH ERRMES TAD FBO DCA I BLKOL TAD AFL SZA /FILE STRUCTURED DEVICE? TAD KM1 /YES DCA FILIM /NO TAD OH /GET ENTRY POINT OHGET, DCA ODLOC GETREC JMS I PNFLOC WA, JMP I BR1LOC /CHANGED TO NOP IF W OPTION IS CHOSEN PRINT TEXT "TYPE RETURN WHEN READY%#" WAIT BREAK1, TAD CHAR DCA FROM BREAK, TAD LBLOC DCA 11 TAD SPLIST DCA 12 REENT, ISZ FLG NXTCHR /READ FIRST CHARACTER TAD KM211 SNA /IS IT A TAB? ISZ TAB /YES: SET FLAG TAD KM4 SNA /IS IT A CARRIAGE RETURN? JMP CRS TAD KM23 SNA CLA /IS IT A SPACE? ISZ INDENT /YES: THERE IS AN INDENTATION REINIT, DCA PSP GWORD, DCA EXACT DCA LNCHAR NXTWRD /GET THE NEXT WORD JMS LNINIT SKP GWORD1, NXTWRD TAD PSP PROC, TAD CHARCT TAD LLNG DCA TEMP TAD TEMP TAD MLNG SMA /WILL IT FIT ON THIS LINE? JMP I EOLOC /NO: DUMP THIS LINE CLA /YES JMS ADDWRD /ADD IT TO THE LINE BUFFER TAD SPL DCA PSP /UPDATE PSP TAD LNFD SZA CLA /LINE-FEED FLAG SET? JMP CRS0 /YES: DETERMINE NUMBER OF LF'S TAD TAB TAD INDENT SZA CLA /IDENTATION NEXT? JMP IND /YES TAD EOFLG SNA CLA /END OF FILE? JMP GWORD1 /NO: PROCEED AS USUAL FILPAG /FINISH UP THE LAST PAGE FIN, TAD EOFCHR /AND CLOSE THE FILE OUT TAD KM600 /INCOMPLETE PAGE LEFT? CIA TAD CHRCTR SZA CLA JMS I WRLOC /YES TAD OUTDEV CIF+10 CALUSR 0004 NAMBUF BLCT, 0 ERRMES JMP I MON /AND GO HOME WRLOC, WRITE EOFCHR, 232 CRS0, DCA LNFD /RESET LINE-FEED FLAG LINEPT CRS, CRLF JMP BREAK IND, LINEPT TAD LBLOC DCA 11 TAD SPLIST DCA 12 JMP REINIT EOLOC, EOL DEFALT, CIF+10 CALUSR 0001 DEVICE TTY HNDLR+401 ERRMES TAD .-3 DCA OUTDEV TAD .-4 JMP I .+1 OHGET LNINIT, 0 TAD INDNT CMA DCA LLNG TAD LLNG DCA LNCHAR TAD INDNT DCA TEMP INREP, ISZ TEMP SKP JMP I LNINIT TAD K240 DCA I 11 JMP INREP ADDWRD, 0 /ROUTINE TO ADD A WORD TO THE CURRENT LINE TAD TEMP DCA LLNG TAD WBLOC DCA 13 TAD PSP SNA JMP DOWN TAD KM1 DCA I 12 DCA I 11 ISZ SPTOT ISZ LNCHAR DOWN, JMS I TRNLOC JMP I ADDWRD PAGE EOL, SNA CLA /EXACT LINE? JMP OK1 /YES: SET FLAG TAD CHARCT /NO TAD PSP CIA TAD TEMP TAD MLNG DCA TEMP TAD SYLS SNA /ANY SYLLABLES? JMP OP1 CIA DCA ZONK TAD ZONK CIA TAD SPLLOC SYLREP, DCA PTR TAD PSP IAC TAD I PTR TAD TEMP SMA SZA /DOES THE LONGEST SUB-WORD FIT? SKP /NO: RECURSE JMP EUREKA /YES ISZ ZONK /ANY SUB-WORDS OF THE SUB-WORD? SKP /YES JMP OP1 /NO STA TAD PTR JMP SYLREP EUREKA, DCA ZONK TAD CHARCT CIA TAD I PTR DCA SHUFCT TAD I PTR DCA CHARCT JMS I ADLOC TAD K255 DCA I 11 ISZ LNCHAR DCA CHARCT TAD WBLOC DCA 15 /MAKE REMAINING PART OF WORD INTO NEXT TAD I 13 /TAKE CARE OF HYPHENATED WORDS TAD KM255 SNA /WAS THE WORD SEPARATED AT A HYPHEN? JMP SHF1 TAD K255 /NO: KEEP LAST CHARACTER SKP SHUFFL, TAD I 13 DCA I 15 ISZ CHARCT SHF1, ISZ SHUFCT JMP SHUFFL TAD ZONK SNA JMP OK DCA TEMP JMP OUTPUT OP1, CLA OUTPUT, TAD FLIP SNA CLA JMP BACKWD DCA FLIP SPNOCH, TAD SPLIST DCA 12 TAD SPTOT CIA DCA CTR SPINC, ISZ I 12 /INCREMENT SPACES TO FILL LINE ISZ TEMP SKP JMP OK /FINISHED ISZ CTR JMP SPINC JMP SPNOCH OK1, JMS I ADLOC ISZ EXACT OK, LINEPT TAD SPLIST DCA 12 TAD LBLOC DCA 11 TAD EXACT SZA CLA JMP I GWLOC JMS I LNILOC JMP I PRCLOC BACKWD, ISZ FLIP /ESSENTIALLY WHAT'S GOING ON HERE IS ZNOCH, TAD SPTOT /THAT I'M PADDING OUT EVERY OTHER LINE CIA /WITH BLANKS FROM RIGHT TO LEFT INSTEAD DCA CTR /OF FROM LEFT TO RIGHT; IT'S MORE PLEAS- TAD SPLIST /ING TO THE EYE THAT WAY TAD SPTOT DCA PTR ZINC, ISZ I PTR ISZ TEMP SKP JMP OK ISZ CTR SKP JMP ZNOCH STA TAD PTR DCA PTR JMP ZINC LNILOC, LNINIT FLIP, 0 PRCLOC, PROC GWLOC, GWORD K255, 255 SHUFCT, 0 ADLOC, ADDWRD KM255, -255 ERROR, CDF /ERROR HANDLER FOR USR CIF+10 CALUSR 0007 N, 0 HLT JMP I MON PAGE NWORD, 0 /ROUTINE TO GET THE NEXT WORD IN THE INPUT CLA /STREAM DCA SPL TAD WBLOC DCA 10 DCA CHARCT DCA SYLS TAD SPLLOC DCA 15 DCA SPCTNW TAD INDENT SNA CLA JMP TABCHK DCA INDENT REP1, TAD K240 ISZ CHARCT DCA I 10 NXTCHR TAD KM240 SNA CLA JMP REP1 TAD CHAR JMP LOOK TABCHK, TAD TAB SNA CLA /HAS A TAB BEEN FOUND? JMP NEXT1 /NO TAD MTABS /YES: PUT IN SPACES SNA /MORE THAN ONE SPACE? JMP REP1 /NO DCA TEMP TABREP, TAD K240 ISZ CHARCT DCA I 10 ISZ TEMP JMP TABREP DCA TAB /RESET THE FLAG JMP REP1 NEXT1, TAD FLG SNA CLA /NEXT CHARACTER IN CHAR? JMP NEXT /NO: PROCEED DCA FLG /YES: RESET FLAG NEXT2, TAD CHAR /GET NEXT CHAR JMP LOOK /PROCEED NEXT, NXTCHR LOOK, TAD KM215 SNA /CARRIAGE RETURN? JMP CR /YES TAD KM23 /NO SNA /SPACE? JMP SPC /YES TAD KM1 /NO SNA /EXCLAMATION POINT? JMP ENDPNC /YES TAD KM14 /NO SNA /HYPHEN? JMP HYPHEN /YES TAD KM1 /NO SNA /PERIOD? JMP I PCLOC /YES: CHECK IT OUT TAD KM21 /NO SNA /QUESTION MARK? JMP ENDPNC /YES TAD KM37 SNA CLA /^? JMP PART /YES REGES, TAD CHAR /NO: JUST A REGULAR CHARACTER ISZ CHARCT /INCREMENT CHARACTER COUNT DCA I 10 /PLACE CHARACTER IN WORD BUFFER JMP NEXT HYPHEN, ISZ SYLS TAD CHARCT DCA I 15 JMP REGES PART, ISZ SYLS TAD CHARCT DCA I 15 JMP NEXT ENDPNC, TAD CHAR ISZ CHARCT /INCREMENT CHARACTER COUNT DCA I 10 /PLACE CHARACTER IN WORD BUFFER NXTCHR /GET NEXT CHARACTER TAD KM215 /CARRIAGE RETURN? SZA CLA JMP IG /NO: PROCEED AS USUAL ISZ SPL /YES: INCREMENT SPACE COUNT JMP CR /TREAT LIKE OTHER CR'S IG, TAD CHAR JMP LOOK PCLOC, PERCHK KM37, -37 KM21, -21 SPCTNW, 0 SPC, ISZ SPCTNW NXTCHR TAD KM215 SNA /CARRIAGE RETURN? JMP CR /YES: TREAT AS SUCH TAD KM23 /NO SNA CLA /ANOTHER SPACE? JMP SPC /NO: LOOK FOR MORE TAD SPCTNW DCA SPL /FIX UP SPACE COUNT ISZ FLG JMP I NWORD CR, ISZ SPL /INCREMENT SPACE COUNTER CR1, ISZ FLG /THROW UP FLAG (NEXT CHAR IN CHAR) NXTCHR /GET THE NEXT CHARACTER TAD KM211 SNA /TAB? ISZ TAB /YES: SET FLG TAD KM4 SNA /CARRIAGE RETURN? ISZ LNFD /YES: SET FLAG TAD KM23 SNA CLA /SPACE? ISZ INDENT /YES: THROW UP FLAG JMP I NWORD NL, NUMGET /GET ARGUMENT SNA /0 (OR MISSING)? TAD K102 /YES: DEFAULT IS 66(10) TAD KM14 /ADJUST FOR MARGINS CIA DCA LINES JMP I SLFLOC K102, 102 PAGE DECPT, 0 /ROUTINE TO PRINT AC CONTENTS IN DECIMAL DCA DTEMP DCA DIG DCA DPTFLG TAD DECLOC DCA PTR TAD KM3 DCA DPCTR TAD DTEMP SUB, TAD I PTR SPA JMP .+3 ISZ DIG JMP SUB ISZ PTR TAD I PTR JMS DPT ISZ PTR ISZ DPCTR JMP SUB TAD K260 OUT JMP I DECPT DTEMP, 0 DECLOC, .+1 -1750 1750 -0144 0144 -12 12 DPCTR, 0 DPT, 0 DCA DTEMP TAD DIG /GET DIGIT SNA /IS IT ZERO? JMP ZER /IS IT ZERO? DIGPT, TAD K260 /FORM ANSCII CODE OUT ISZ DPTFLG DCA DIG DXIT, TAD DTEMP JMP I DPT ZER, TAD DPTFLG /ANY DIGITS ALREADY PRINTED? SNA CLA JMP DXIT /NO: NO PRINTING DONE JMP DIGPT /YES PRINT THE DIGIT K260, 260 DPTFLG, 0 BLIP, 0 /ROUTINE TO PRINT CARRIAGE RETURN, LINE FEED TAD K215 OUT TAD K212 OUT JMP I BLIP MCR, 0 /PRINTS MULTIPLE CRLF'S; CALLED WITH CIA /NUMBER OF CRLF'S IN THE AC DCA ZONK TAD K215 OUT TAD ZONK SNA CLA /ZERO? JMP I MCR /YES: DONE MCREP, TAD K212 OUT ISZ ZONK JMP MCREP JMP I MCR WT, 0 /ROUTINE TO WAIT FOR A CARRIAGE RETURN /CHECK FOR PARTIAL PRINTOUT TAD FROM /SO THAT YOU ONLY WAIT FOR THE SPA CLA /PAGES TO ACTUALLY BE PRINTED JMP I WT /EXIT IF FIRST PAGE NOT YET REACHED W, KSF JMP .-1 KRB TAD KM215 SZA CLA JMP W JMP I WT CRLNFD, 0 CLA TAD SPCR DCA ZONK WIEDER, JMS BLIP ISZ LINCTR SKP JMP INJACK ISZ ZONK JMP WIEDER JMP I CRLNFD INJACK, FMAR /PRINT THE PAGE FOOT AND MARGIN HMAR JMP I CRLNFD SPCC, NUMGET /GET THE NUMBER FOLLOWING IT SNA /ZERO? IAC /YES: DEFAULT IS ONE CIA /FORM THE NEGATIVE DCA CSPCT /SET UP COUNTER LINEPT /PRINT THE PENDING LINE DCA LNCHAR DCA LLNG TAD SPCR DCA CTR /SAVE OLD SPCR STA /GET -1 DCA SPCR /ONE CR-LF AT A TIME CSPR, CRLF ISZ CSPCT JMP CSPR TAD CTR /RESTORE SPCR DCA SPCR JMP I SLUFLC CSPCT, 0 TRNSF, 0 TAD CHARCT SNA JMP I TRNSF CIA DCA TEMP TR1, TAD I 13 DCA I 11 ISZ LNCHAR ISZ TEMP JMP TR1 JMP I TRNSF PAGE LNPT, 0 /ROUTINE TO PRINT THE NEXT LINE CLA TAD FSTHD /THIS THE FIRST HEAD? SNA CLA HMAR /YES IAC /RESET THIS FLAG DCA FSTHD TAD LNCHAR SNA CLA /ANY LINE TO BE PRINTED? JMP I LNPT /NOPE TAD LBLOC /POINTER TO LINE BUFFER DCA 11 TAD KSP SPACE TAD LNCHAR CIA DCA TEMP TAD SPLIST DCA 12 LNOCH, TAD I 11 SNA /IF ZERO GET NO. OF SPACES TO BE TYPED JMP SPPT JMS TRTYPE ISZ TEMP JMP LNOCH RET, CRLF DCA PSP DCA SPTOT JMP I LNPT SPPT, ISZ TEMP SKP JMP RET IAC TAD I 12 SPACE JMP LNOCH TTYP, 0 /SUBROUTINE TO TYPE MESSAGE FOLLOWING ITS CALL. /MESSAGE CREATED BY PSEUDO-OP "TEXT". NOTE /THAT THE CHARACTER "@" CAN'T BE USED & THAT /THE CHARACTERS % AND # ARE TRANSLATED INTO /CARRIAGE RETURN & LINE-FEED RESPECTIVELY. CLA CMA /SET AC TO -1 TAD TTYP /ADD RETURN ADDRESS DCA 14 TAD I 14 DCA TEMP /SAVE IT TAD TEMP RTR; RTR; RTR /ROTATE 6 BITS RIGHT JMS DECODE TAD TEMP /GET DATA AGAIN JMS DECODE /TYPE RIGHT HALF JMP TTYP+4 /CONTINUE DECODE, 0 /ROUTINE TO TYPE CHARACTER IN AC BITS 6-11 AND MASK5 /ZERO AC BITS 0-5 SNA /IS IT END OF TEXT? JMP I 14 /YES: RETURN TO LOCATION FOLLOWING TEXT TAD KM40 /SUBTRACT 40 SMA /RESULT < 40? JMP DECODE+11 /NO TAD K340 /YES: ADD 340 JMP PRI /PRINT TAD KM3 /SUBTRACT 3 SZA /IS IT ZERO? JMP DECODE+16 /NO TAD K212 /YES: CODE 43 (0R #) IS LINE FEED JMP PRI /PRINT TAD KM2 SZA /IS IT ZERO? JMP DECODE+23 /NO TAD K215 /YES: CODE 45 (OR %) IS CARRIAGE RET. JMP PRI TAD K245 /ADD 245 TO OTHERS PRI, TYPE JMP I DECODE KM40, -40 MASK5, 0077 K340, 340 K245, 245 TRTYPE, 0 /ROUTINE TO PERFORM TRANSLATION DCA ZONK TAD TRLOC DCA 16 TREP, TAD I 16 SNA JMP NORMAL /END OF LIST: NO MATCH FOUND TAD ZONK /COMPARE SNA CLA /A MATCH? JMP .+3 /YES: TYPE THE SUBSTITUTE ISZ 16 /NO: INCREMENT POINTER JMP TREP /AND TRY AGAIN TAD I 16 OUT JMP I TRTYPE NORMAL, TAD ZONK JMP .-3 GB, 0 /ROUTINE TO GET NEXT NON-SPACE CHARACTER GBREP, NXTCHR TAD KM240 SNA CLA JMP GBREP TAD CHAR JMP I GB TYP, 0 /ROUTINE TO TYPE ANSCII CHARACTER IN THE AC TLS TSF JMP .-1 CLA JMP I TYP PNUMFX, 0 /SETS UP VERTICAL SPACING WHEN A TAD MARG /PAGE NUMBER IS TYPED CLL RAR /WE SPACE MARG1 LINES, TYPE DCA MARG1 /THE PAGE NUMBER, THEN SPACE RAL /MARG2 LINES FOR A PAGE HEAD TAD MARG1 /VICE VERSA FOR A PAGE FOOT DCA MARG2 JMP I PNUMFX SP, 0 /SPACE PRINTER; CALLED WITH NUMBER OF CIA /SPACES IN THE AC DCA ZONK SPREP, TAD K240 OUT ISZ ZONK JMP SPREP JMP I SP PAGE PERCHK, TAD CHARCT /CHECK FOR DIRECTIONS SZA CLA /THIS THE FIRST CHARACTER IN THE WORD? JMP I EPLOC /NO NXTCHR /YES: GET NEXT CHAR DCA FST1 /SAVE THE FIRST CHARACTER AFTER THE . TAD TABLOC DCA P /P POINTS TO THE OPTION TABLE TAD TABLEN DCA CECT /NUMBER OF OPTIONS JMS FST /TRY TO FIND FIRST LETTER IN TABLE NXTCHR /FIRST CHAR FOUND; TRY TO MATCH 2ND CLA SCD, ISZ P /SET POINTER TO NEXT LOCATION IN TABLE TAD CHAR TAD I P SNA CLA /2ND CHARACTER MATCHES? JMP F /YES ISZ CECT /NO: END OF TABLE? SKP /NO JMP SLUF1 /YES: IGNORE THIS LINE ISZ P ISZ P /SET POINTER TO NEXT 1ST CHAR IN TABLE JMS FST /TRY TO FIND FIRST LETTER IN TABLE JMP SCD F, ISZ P /SET POINTER TO POINT TO PROPER TAD I P /HANDLER AND GO THERE DCA P JMP I P FST, 0 /ROUTINE TO FIND NEXT TABLE ENTRY WHOSE FIRST SRCH, TAD FST1 /LETTER MATCHES THE FIRST LETTER SEEN TAD I P SNA CLA /A MATCH? JMP I FST /YES: EXIT ISZ P /NO: BUMP POINTER UP BY 3 ISZ P ISZ P ISZ CECT /END OF TABLE? JMP SRCH /NO: CONTINUE SEARCH TAD DOT /YES: TREAT AS PART OF A WORD ISZ CHARCT DCA I 10 /ADD PERIOD TO THIS WORD JMP I .+1 NEXT2 /GIVE NON-MATCHING CHAR TO NWORD FST1, 0 P, 0 TABLOC, TABLE DOT, 256 /ASCII FOR A PERIOD TABLEN, -22 /18 OPTIONS LL, NUMGET /GET THE NUMBER FOLLOWING IT SNA /ZERO? TAD K101 /YES: DEFAULT IS 65 CIA DCA MLNG SLUF1, JMS SLUFR JMP I NLOC K101, 101 BR, LINEPT /PRINT THE CURRENT LINE JMP SLUF NE, NUMGET /GET NUMBER FOLLOWING 'NE' SNA CLA /ZERO? ISZ NMBR /YES: DEFAULT IS 1 IAC /GET A ONE TAD SPCR SZA CLA /IF DOUBLE SPACE MODE TAD NMBR /DOUBLE THE ARGUMENT TAD NMBR TAD LINCTR /SUBTRACT NO. OF LINES LEFT SPA SNA CLA /ENOUGH SPACE LEFT? JMP SLUF1 /YES: NO PROBLEM BP, FILPAG /FINISH THIS PAGE SNL HMAR /AND TYPE THE MARGIN AND HEADING FOR SLUF, JMS SLUFR /THE NEXT IF NECESSARY DCA LNCHAR JMP I .+1 BREAK CE, NUMGET /GET THE NUMBER FOLLOWING 'CE' SNA /ZERO? IAC /YES: DEFAULT IS ONE CMA /COMPLEMENT NUMBER DCA CECT JMS SLUFR /GET RID OF THE REST OF THIS LINE CELP, LINEPT DCA LNCHAR DCA LLNG TAD LBLOC DCA 11 TAD SPLIST DCA 12 ISZ CECT /FINISHED PROCESSING CENTER'S? SKP /NO: CONTINUE JMP I RELOCX /YES: GO TO REENT (** RELOCX