/MACRO-PROCESSOR C.D.N. FIELD 0 *21 WRITSR *40 INSIZE=OUBUF-INTAB-3 MACSRA, MACSR MTABMX, -7577 WRITAD, WRITSR NAT, 0 PERSMA, PERSIM TABADD, TABLE-1 MMAXIN, -INSIZE INBFAD, INBF1 NM6, -6 NM3, -3 ROBFA, ROBUF ENDBFA, ENDBUF TEM, 0 INCNT, 0 INPOI, 0 TABPOI, 0 LINEND, 0 INPOI2, 0 MACPOI, 0 ARGCNT, 0 ARGNUM, 0 MACSWT, 0 ROCNT, 0 ENDCNT, 0 ROPOI, 0 ENDPOI, 0 TABEND, 0 MCFLAG, 0 SERCHR, 0 N2000, 2000 N5777, 5777 NM212, -212 N5, 5 NM4215, -4215 *1000 START1, CLA DCA MACSWT TAD WRITAD DCA 21 TAD PERSMA DCA MACPOI TAD PERSMA DCA TABEND DCA MCFLAG STRTLP, TAD NAT CDF 20 DCA I MACPOI CDF 0 TAD MACPOI ISZ MACPOI TAD MTABMX SZA CLA JMP STRTLP TAD PERSMA DCA MACPOI START, JMS SRLINE TAD MMAXIN DCA INCNT TAD INBFAD DCA INPOI INLOOP, CIF 10 JMS I (ICHAR JMP TSTEOF JMS SRCH 212 JMP INLOOP JMS MACLOK JMS SRCH N215, 215 TAD MACSWT JMS SRCH 215 JMP LINRDY DCA I INPOI ISZ INPOI ISZ INCNT JMP INLOOP JMS TERR TEXT /INPUT OVERFLOW/ /PROBABLY "MACEND" MISSING LINRDY, DCA I INPOI TAD INPOI DCA LINEND TAD INBFAD DCA INPOI SPCBEG, CLA TAD I INPOI JMS SRCH "/ JMP REPEAT JMS CHKALN SKP JMP ISITMC JMS SRCH "? JMP ISITMC NTFNRT, JMS SRCH 215 JMP COMOUT JMS OUTTYP MCDNRT, ISZ INPOI JMP SPCBEG REPEAT, JMP COMOUT /OR "NOP"FOR REPEATED TEXT" JMP COMENT REPINS, JMP COMOUT /AS IN REPEAT NOTFND, CLA TAD I INPOI JMS CHKALN JMP NTFNRT JMS OUTTYP ISZ INPOI JMP NOTFND JMS OUTTYP COMOUT, CLA TAD I INPOI ISZ INPOI JMS SRCH 215 SKP JMP COMOUT-1 COMENT, JMP START /OR " NOP " FOR REPEAT TEXT JMS SRTDC 4211 4240 4240 4240 4240 4240 4240 4240 "/ TAD INBFAD DCA INPOI CMENTL, TAD I INPOI ISZ INPOI JMS SRCH 215 JMP START JMS OUTTYP JMS SRCH 212 JMS SRTDC "/ JMP CMENTL COMINS, JMP START /AS IN COMENT PAGE MACBAR, TAD I INPOI JMP NTFNRT ISITMC, CLA TAD MCFLAG SZA CLA JMP MACBAR TAD TABADD DCA TABPOI SEARCH, TAD INPOI DCA INPOI2 CLA CLL CML TAD TABPOI CMA TAD TABEND SZL CLA JMP NOTFND JMP COMPAR CMPLOP, ISZ INPOI2 ISZ TABPOI COMPAR, CLA CDF 20 TAD I TABPOI CDF 0 AND N2000 SZA CLA JMP NONALN CDF 20 TAD I TABPOI CDF 0 JMS SRCH "? JMP CMPLOP CIA TAD I INPOI2 SNA CLA JMP CMPLOP MISMTC, ISZ TABPOI CDF 20 TAD I TABPOI CDF 0 JMS SRCH 0 JMP ONEAT CLA JMP MISMTC ONEAT, ISZ TABPOI CLA CDF 20 TAD I TABPOI CDF 0 JMS SRCH 0 JMP NOTFND CLA JMP SEARCH MACLOK, 0 DCA TEM TAD TEM JMS CHKALN JMP RESET CIA CDF 20 TAD I ROPOI CDF 0 ISZ ROPOI SNA CLA JMP INCRO TAD NM6 DCA ROCNT RORET, TAD TEM CIA CDF 20 TAD I ENDPOI CDF 0 ISZ ENDPOI SNA CLA JMP INCEND TAD NM6 DCA ENDCNT ENDRET, TAD TEM JMP I MACLOK INCRO, ISZ ROCNT NOP CLA JMP RORET INCEND, ISZ ENDCNT NOP CLA JMP ENDRET RESET, CLA TAD NM6 TAD ROCNT SZA CLA JMP .+3 TAD NM3 DCA MACSWT TAD ENDCNT TAD NM6 SNA CLA DCA MACSWT CLA IAC DCA ROCNT DCA ENDCNT TAD ROBFA DCA ROPOI TAD ENDBFA DCA ENDPOI TAD TEM JMP I MACLOK MATERR, JMS TERR TEXT /ILLEGAL ARG. NUMBER/ /PROBABLY TERMINATOR MISSING PAGE NONALN, CLA TAD I INPOI2 JMS CHKALN SKP CLA JMP MISMTC JMP MATCH CHKTAB, 0 /SKIP IF TAB OR SPACE OR C.R. OR L.F. JMS SRCH 240 ISZ CHKTAB JMS SRCH 211 ISZ CHKTAB JMS SRCH 215 ISZ CHKTAB JMS SRCH 212 ISZ CHKTAB JMS SRCH ", ISZ CHKTAB JMP I CHKTAB N7007, 7007 MATCH, TAD I INPOI2 DCA SERCHR TAD INPOI DCA INPOI2 ISZ TABPOI CDF 20 TAD I TABPOI CDF 0 SPA JMP SPECAL AND N7007 /TO BE REPLACED DCA ARGNUM TAD SERCHR JMS CHKTAB JMP MISMTC ISZ TABPOI CLA CDF 20 TAD I TABPOI CDF 0 JMS CHKTAB JMP MATERR GENLOP, CLA ISZ TABPOI CDF 20 TAD I TABPOI CDF 0 JMS SRCH "# /OR "@ JMP DUMARG JMS SRCH 0 JMP MACDON JMS OUTTYP CLA JMP GENLOP ARGGET, 0 CIA DCA ARGCNT CLA CMA TAD INPOI DCA INPOI2 TAD ARGCNT SNA CLA JMP I ARGGET DUMLOP, ISZ INPOI2 CLA TAD I INPOI2 JMS CHKTAB SKP CLA JMP DUMLOP ISZ ARGCNT SKP CLA JMP I ARGGET DUMLP2, ISZ INPOI2 CLA TAD I INPOI2 JMS CHKTAB JMP DUMLP2 JMP DUMLOP+1 REPLAC, CLA TAD I INPOI2 JMS CHKTAB SKP JMP GENLOP JMS OUTTYP ISZ INPOI2 JMP REPLAC OUTTYP, 0 AND N5777 JMS SRCH 212 JMP LINOUT JMS SRCH 215 JMP LINOUT TCHAR JMP I OUTTYP LINOUT, MQL JMS SRLINE CLA MQA JMP I OUTTYP MACDON, CLA TAD ARGNUM JMS ARGGET TAD INPOI2 DCA INPOI MCDNLP, TAD I INPOI JMS CHKTAB SKP CLA JMP MACOUT ISZ INPOI JMP MCDNLP PAGE MACOUT, TAD ARGNUM SZA CLA JMP SPCBEG ISZ INPOI JMP NOTFND DUMARG, CLA ISZ TABPOI CDF 20 TAD I TABPOI CDF 0 AND N7007 NOP JMS ARGGET JMP REPLAC SPECAL, JMS SRCH -1 JMP MACRO JMS SRCH -2 JMP MACEND JMS TERR TEXT /NEGATIVE NUMBER OF ARGS./ MACRO, CLA CMA DCA MCFLAG TAD MACSRA DCA 21 TAD INPOI TAD N5 DCA INPOI JMP MCDNRT MACSR, 0 DCA TEM TAD SERCHR CIA TAD TEM SZA CLA JMP SERPAS DCA MCFLAG TAD N2000 TAD TEM DCA TEM TAD N5 DCA SERCHR SERPAS, TAD TEM TAD NM4215 SNA CLA JMP BYPASS TAD TEM TAD NM212 SNA CLA JMP BYPASS TAD TEM CDF 20 DCA I MACPOI CDF 0 TAD MACPOI TAD MTABMX SNA CLA JMP MACOVR CDF 20 TAD I MACPOI CDF 0 ISZ MACPOI JMP I MACSR BYPASS, TAD TEM JMP I MACSR MACEND, CLA CMA TAD MACPOI DCA MACPOI TAD WRITAD DCA 21 TAD NAT JMS MACSR CLA TAD INPOI TAD N5 DCA INPOI TAD MACPOI DCA TABEND JMP MCDNRT WRITSR, 0 CIF 10 JMS I (OCHAR JMP OUTERR JMP I WRITSR MACOVR, JMS TERR TEXT /MACRO TABLE FULL/ CHKALN, 0 /SKIP IF ALPHANUMERIC JMS SRCHBK 301 32 ISZ CHKALN JMS SRCHBK 260 12 ISZ CHKALN JMP I CHKALN PAGE TSTEOF, SMA CLA JMP CLOSE JMS TERR TEXT /READ ERROR/ CLOSE, CIF 10 JMS I (OCLOSE JMP CLERR CDF CIF 0 JMP I N7600 OUTERR, JMS TERR TEXT /OUTPUT ERROR/ CLERR, JMS TERR TEXT /CLOSE ERROR/ TERR, 0 CLA TAD I TERR RTR;RTR;RTR JMS TYPIT TAD I TERR JMS TYPIT ISZ TERR JMP TERR+1 TYPIT, 0 AND (77 SNA JMP CRLF TAD (300 JMS TTYOUT JMP I TYPIT CRLF, CLA TAD (215 JMS TTYOUT TAD (212 JMS TTYOUT JMP BEGIN TTYOUT, 0 TLS TSF JMP .-1 CLA JMP I TTYOUT SRCH, 0 DCA TEMP TAD I SRCH ISZ SRCH CIA TAD TEMP SZA CLA ISZ SRCH TAD TEMP JMP I SRCH TEMP, 0 N7600, 7600 SRLINE, 0 CLA TAD (215 TCHAR CLA TAD (212 TCHAR JMP I SRLINE SRCHBK, 0 DCA TEMP TAD I SRCHBK ISZ SRCHBK CIA TAD TEMP SPA JMP NO CMA TAD I SRCHBK SPA NO, ISZ SRCHBK ISZ SRCHBK CLA TAD TEMP JMP I SRCHBK SRTDC, 0 CLA TDCLP, TAD I SRTDC ISZ SRTDC DCA TEMP TAD TEMP TCHAR CLA TAD TEMP SPA CLA JMP TDCLP JMP I SRTDC PAGE BEGIN, CLA TAD (255 DCA 21 CIF 10 JMS I (7700 10 CIF 10 CALLCD, JMS I (200 5 0 CIF 10 JMS I (IOPEN CIF 10 JMS I (OOPEN SMA CLA JMP OPTION JMS TERR TEXT /OPEN FAILED/ OPTASK, JMS SRLINE JMS SRTDC 4000+"O 4000+"P 4000+"T 4000+"I 4000+"O 4000+"N 4000+"S 4240 4000+"( 4000+"E 4240 4000+"O 4000+"R 4240 4000+"L 4000+") 4240 4000+"? 240 RTCHAR DCA TEM JMS SRLINE CLA TAD TEM JMS SRCH "E JMP EREPLA JMS SRCH "L JMP SETLST JMP OPTASK OPTION, CLA TLS CDF 10 TAD 7643 CDF 0 AND (201 JMS SRCH 200 JMP EREPLA JMS SRCH 1 SKP JMP OPTASK SETLST, CLA TAD (NOP DCA COMENT TAD (NOP DCA REPEAT JMP START1 EREPLA, CLA TAD COMINS DCA COMENT TAD REPINS DCA REPEAT JMP START1 PAGE INTAB, 240 /SPACE INBF1, ZBLOCK INSIZE FIELD 2 *0 0 TABLE, 0 ROBUF, "M "A "C /OR "K "R "O 2000 -1 240 0 ENDBUF, "M "A "C /OR "K "E "N "D 2000 -2 240 0 PERSIM, 0 /SEE 0S8 SOFTWARE SUPPORT MANUAL APPENDIX F/ /PARAMETER DEFINITION*/ OUBUF=5000 /OUTPUT BUFFER STARTS AT 05000. OUCTL=4200 /AND IS 2 PAGES LONG. OUDEVH=6600 /OUTPUTHANDLERS GETS LOADED AT 6600. WE /ALLOW TWO PAGE HANDLERS. INBUF=5400 /INPUT BUFFER STARTS AT 05400 INCTL=0200 /ALS TWO PAGES LONG.INRECS=1 2 PAGES = 1 RECORD INRECS=1 /2 PAGE = 1 RECORD INDEVH=7000 /ALLOW 2 PAGE INPUT HANDLER AT 7000. ORIGIN=6600 /THE SUBROUTINE RESIDE AT 16600. DCB=7760 /DEVICE CONTROL TABLE FIELD 1 *ORIGIN INFLD=INCTL&70 /INPUT BUFFER FIELD OUFLD=OUCTL&70 /OUTPUT BUFFER FIELD IN7400, 7400 /INITIALIZE INPUT INEOF, 0 INFPTR, 0 INPTR, 0 ICHAR, 0 /INPUT A CHARAKTER/ IN7600, 7600 RDF TAD INCDIF DCA INRTRN INCHAR, CDF INFLD ISZ INJMP ISZ INCHCT INJMPP, JMP INJMP TAD INEOF /DID LAST READ GIVE EOF ON THIS DEVICE? SNA CLA JMP INGBUF GETNEW, JMS INNEWF /YES..GET NEXT INPUT IF IT EXISTS. JMP EOFERR INGBUF, TAD INCTR CLL TAD (INRECS SNL DCA INCTR SZL ISZ INEOF CLL CML CMA RTR /CONSTRUCT A CONTROL WORD FOR THIS RTR /READ FROM THE OVERFLOW, IF ANY, RTR /AND THE STANDARD CONTROL WORD. TAD (INCTL+1 DCA INCTLW INCDIF, CIF CDF 0 CDF 10 JMS I INHNDL INCTLW, 0 INBUFP, INBUF INREC, 0 JMP INERRX INBREC, TAD INREC TAD (INRECS DCA INREC TAD INCTLW AND IN7600 CLL RAL TAD INCTLW AND IN7600 CMA DCA INCHCT TAD INJMPP DCA INJMP TAD INBUFP DCA INPTR JMP INCHAR INERRX, ISZ INEOF SMA CLA JMP INBREC INERR, CLA CLL CML RAR EOFERR, JMP INRTRN INJMP, HLT JMP ICHAR1 JMP ICHAR2 ICHAR3, TAD INJMPP DCA INJMP TAD I INPTR IN200, AND IN7400 CLL RTR RTR TAD INCTLW RTR RTR ISZ INPTR JMP INCOMN ICHAR2, TAD I INPTR AND IN7400 DCA INCTLW ISZ INPTR ICHAR1, TAD I INPTR INCOMN, AND (377 TAD (-232 /IS IT A ^Z (EOF)? SNA JMP GETNEW /YES..LOOK AT NEXT INPUT TAD (232 ISZ ICHAR /TAKE NORMAL RETURN INRTRN, 0 JMP I ICHAR INNEWF, -1 INCHCT=INNEWF CDF 10 TAD (INDEVH+1 DCA INHNDL TAD I INFPTR SNA JMP I INNEWF JMS I IN200 1 INHNDL, 0 HLT TAD I INFPTR AND (7760 SZA TAD (17 CLL CML RTR RTR DCA INCTR ISZ INFPTR TAD I INFPTR DCA INREC ISZ INFPTR DCA INEOF ISZ INNEWF JMP I INNEWF INCTR, 0 PAGE IOPEN, 0 CLA RDF TAD CDFCIF DCA IOPRET CDF CIF 10 CLA CMA DCA INCHCT ISZ INEOF TAD (7617 DCA INFPTR IOPRET, 0 JMP I IOPEN CDFCIF, 6203 OOPEN, 0 /OPEN OUTPUT FILE OU7600, 7600 RDF TAD CDFCIF DCA OORETN CDF CIF 10 TAD OU7601 DCA OUBLK TAD (OUDEVH+1 DCA OUHNDL TAD I OU7600 AND (17 SNA JMP ONOFIL JMS I (200 1 OUHNDL, 0 HLT OUENTR, TAD I OU7600 JMS I (200 3 OUBLK, 7601 /GETS STARTING BLOCK OF HOLE/ OUELEN, 0 /GETS SIZE OF HOLE AVAILABLE JMP OEFAIL DCA OUCCNT DCA I (OUTINH JMS I (OUSETP ISZ OOPEN OORETN, CDF CIF 10 JMP I OOPEN OEFAIL, TAD I OU7600 AND (7760 SNA CLA JMP ONTERR TAD I OU7600 AND (17 DCA I OU7600 JMP OUENTR ONTERR, CLA CLL CML RAR JMP OORETN ONOFIL, ISZ I (OUTINH JMP OORETN OUTDMP, 0 DCA OUCTLW CDF 10 TAD I (OUTINH SZA CLA JMP OUNOWR TAD OUCCNT SNA ISZ OUCTLW TAD OUBLK DCA OUREC TAD OUCTLW CLL RTL RTL RTL /COMPUTE # OF RECORDS TO OUTPUT AND (17 TAD OUCCNT DCA OUCCNT TAD OUCCNT /SEE IF CLOSING LENGTH WILL BE CLL CML /BIGGER THAN OUTPUT HOLE TAD OUELEN SNL SZA CLA JMP I OUTDMP OUCDIF, CIF CDF 0 CDF 10 JMS I OUHNDL OUCTLW, 0 OUBUF OUREC, 0 SKP OUNOWR, ISZ OUTDMP JMP I OUTDMP PTP=0020 PAGE OUSETP, 0 TAD (OUCTL&3700 CIA DCA OUDWCT TAD (OUBUF DCA OUPTR TAD OUJMPE DCA OUJMP JMP I OUSETP OCHAR, 0 /OUTPUT CHARACTER ROUTINE AND (377 /ISOLATE EIGHT 8BITS DCA OUTEMP RDF TAD (CIF CDF 0 DCA OUCRET TAD OUTINH SZA CLA JMP OUCOMN OUCHAR, CDF OUFLD ISZ OUJMP OUJMP, HLT JMP OCHAR1 JMP OCHAR2 OCHAR3, TAD OUTEMP CLL RTL RTL AND (7400 TAD I OUPOLD DCA I OUPOLD TAD OUTEMP CLL RTR RTR RAR AND (7400 TAD I OUPTR DCA I OUPTR TAD OUJMPE DCA OUJMP ISZ OUPTR ISZ OUDWCT JMP OUCOMN TAD (OUCTL /READY TO OUTPUT A BUFFER JMS I (OUTDMP /OUTPUT IT JMP OUCRET /AN ERROR JMS OUSETP JMP OUCOMN OCHAR2, TAD OUPTR DCA OUPOLD ISZ OUPTR OCHAR1, TAD OUTEMP DCA I OUPTR OUCOMN, ISZ OCHAR OUCRET, HLT JMP I OCHAR OUTEMP, 0 OUPOLD, 0 OUPTR, 0 OUJMPE, JMP OUJMP OUDWCT, 0 OUTINH, 0 OCLOSE, 0 /CLOSE OUTPUT FILE DCA ACTEM RDF TAD CIFCDF DCA OCRET TAD ACTEM CDF CIF 10 CDF 10 TAD I (OUTINH /IF OUTPUT INHIBITED,CLOSE IS A NOP SZA CLA JMP OCISZ JMS I (OTYPE AND (770 TAD (-PTP SZA CLA TAD (232 /NOT PTP.OUTPUT^Z AS EOF JMS I (OCHAR JMP OCRET JMS I (OCHAR /FILL WITH 0 CHARAKTERS JMP OCRET FILLIP, JMS I (OCHAR JMP OCRET JMS I (OTYPE /IF OUTPUT IS DIRECTORY DEVICE, FILL SPA CLA /WHOLE RECORD, ELSE HALF RECORD TAD (100 TAD (77 AND I (OUDWCT SZA CLA JMP FILLIP TAD I (OUDWCT TAD (OUCTL&3700 SNA JMP NODUMP TAD (4000+OUFLD JMS OUTDMP JMP OCRET NODUMP, TAD I C7600 JMS I (200 4 OU7601, 7601 OUCCNT, 0 SKP OCISZ, ISZ OCLOSE OCRET, CDF CIF 10 JMP I OCLOSE ACTEM, 0 CIFCDF, 6203 C7600, 7600 PAGE OTYPE, 0 RDF TAD (CIF CDF 0 DCA OTRTN CDF 10 TAD I (7600 AND (17 TAD (DCB-1 DCA OUTEM TAD I OUTEM OTRTN, HLT JMP I OTYPE OUTEM, 0