File MCEDIT.72

Directory of image this file is from
This file as a plain text file

/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 GENRET, CDF 20 TAD I TABPOI CDF 0 JMS SRCH "# JMP DUMARG JMS SRCH "@ JMP DIVARG JMS SRCH 0 JMP MACDON JMS OUTTYP 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 DIVARG, CLA ISZ TABPOI CDF 20 TAD I TABPOI CDF 0 AND N7007 NOP JMS ARGGET CLA TAD DIVBFA DCA DVPOI1 REPLC2, CLA TAD I INPOI2 JMS CHKTAB SKP JMP EMPTBF JMS SRCHBK 260 12 SKP JMP NONNUM DCA I DVPOI1 ISZ DVPOI1 ISZ INPOI2 JMP REPLC2 DVLOP, 0 EMPTLP, TAD DVCNT TAD DVPOI2 SNA CLA JMP I DVLOP TAD I DVPOI2 JMS OUTTYP ISZ DVPOI2 CLA JMP EMPTLP EMPTBF, CLA CLL CMA RAL TAD DVPOI1 CIA DCA DVCNT CLA CLL CMA RAL TAD DIVBFA DCA DVPOI2 JMS DVLOP TAD DIVBFA DCA DVPOI1 EQULP, ISZ TABPOI CDF 20 TAD I TABPOI CDF 0 JMS SRCH "% JMP PERCNT JMS SRCHBK 260 12 JMP EQUPAS CLA CLL CMA RAL TAD DVPOI1 CIA DCA DVCNT CLA CLL CMA RAL TAD DIVBFA DCA DVPOI2 JMS DVLOP JMP GENRET EQUPAS, DCA I DVPOI1 ISZ DVPOI1 JMP EQULP PERCNT, JMS OUTTYP JMP EQULP NONNUM, CLA TAD DIVBFA DCA DVPOI2 TAD DVPOI1 CIA DCA DVCNT JMS DVLOP JMP REPLAC DIVBFA, DIVBUF DVPOI1, 0 DVPOI2, 0 DVCNT, 0 260 260 DIVBUF, 0 0 0 0 0 0 0 0 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 (200 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



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search