File FIN2.MA (MACREL macro assembler source file)

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

/19 FIN2.PA CREATES OVRJ.SV THE PASS 2 FIN OVERLAY	POST V0A
/	7-MAR-78	INCLUDED PATCH ABOUT CHECKING FOR TOO MANY LSD SYMBOLS
/ 8-MAR-78	COMMENTED OUT PATCH ENTIRELY
/		ADDED AUXILIARY SECT CHUNK SUPPORT
/ 21-AUG-78	FIXED LSD BLANK BUFFER BUG
/		ADDED SECREF
/ 23-AUG-78	FSECT LITERALS
/ 29-AUG-78	BUMPED RB SPEC LEVEL TO 2.0
	.INCLUDE MGLOB.MA
	.ASECT FIN2,LEVEL=1,OVERLAY=11
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1977 BY DIGITAL EQUIPMENT CORPORATION
/
/
/
/
/
/
/
/
/
/
/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
/CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
/
/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
/
/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
/DIGITAL.
/
/
/
/
/
/
/
/
/
/

.EXTERNAL KLU6,OVL,CHKFUL .EXTERNAL ASEMLV,BACKUP,BRANCH,CREF,CRLF,DPRINT,ENTER,EOS,ERROR,EXPR .EXTERNAL FSCHEK,GETCHR,GETKAR,GETSYM,LETTER,LISTER,LOOKUP,ORIG,OUT,PARSYM .EXTERNAL PASS3,POP,PUSH,PUNBIT,PUTBIT,PUTSYM,PUXBIN,READLN,ROTL6,SCAN .EXTERNAL PUNY,CLOSO,FINIO,LOAD,BUKETS,LOCOFF,TXTBLK,OUTREC .EXTERNAL PUTBT,OUTSIZ,BRAN,HEADING FIELD 3 .GLOBAL ER206 / .GLOBAL FVAL / THIS IS CALLED AT THE END OF PASSES 1,2, AND 4 *2000 RELOC 6400 12 /OVERLAY NUMBER DCA I (LSDNUM JMS I (PUNY /PASS 2? JMP FC /NO TAD (3 /YES DCA FLG JMS I QQPUNBIT /END TEXT JMS I (ZPAD /DUMP TEXT BUFFER CIF CDF 10 JMS I (CLOSO /CLOSE BINARY FILE CIF CDF 10 JMS I (FINIO JMS I (LOAD 2000+14 /LOAD EXTENSIONS OVERLAY /INTO DIRECTIVES AREA JMS I (LSDINI /INITIAL STUFF TO LSD FC, TAD (BUKETS-1 DCA XR2 TAD (-77 DCA KNT FD, TAD I XR2 /GET PTR FROM NEXT BUCKET FB, CDF 0 SNA JMP FP /END OF CHAIN DCA SYMNUM TAD SYMNUM JMS I (CNVADR DCA LPTR TAD LPTR DCA XR1 TAD I XR1 DCA NAME1 TAD I XR1 DCA NAME2 TAD I XR1 DCA NAME3 TAD I LPTR /GET 15-BIT PTR TO NEXT CHUNK CDF 0 DCA SYMT2 JMS I QQGETSYM TAD FLAG AND (74 SZA CLA /SKIP IF NOT LSD SYMBOL JMS I (LSDOUT /OUTPUT LSD TAD FLAG AND QQ70 SZA CLA /IS SYMBOL A SECT NAME? DCA SYMVAL /YES, ZERO ITS HI PC TAD FLAG AND QQ70 TAD QM10 SZA CLA JMP 4$ TAD SYMSCT JMS I (CNVADR TAD (2 DCA T STA DCA I T 4$: JMS I QQPUTSYM /*** INEF TAD SYMT2 JMP FB FP, ISZ KNT /END OF CHAIN JMP FD / JMS I QQCRLF STA TAD PASS SZA CLA /PASS 1? JMP OUTBE /NO TAD I (LSDNUM CLL RAL TAD I (LSDNUM CLL RAL /MULTIPLY BY 6 (A BIT WASTEFUL) /*** MAY LEAD TO BUG TAD (440 /ADD IN FUDGE [KLUDGE] CLL RAL AND QM1000 CLL RTL RTL /WIND UP WITH # OF BLOCKS NEEDED BY LSD CDF 10 DCA I (LOCOFF /THIS IS INITIAL BLOCK OFFSET CDF 0 TAD I (SBTKNT SNA CLA /WAS THERE T-OF-C? JMP I (NEX /NO OUTBE, TAD PASS /YES, OUTPUT LAST BUFFER RAR SZL CLA /ODD PASS? JMP I (OUTASC /YES, OUTPUTTING ASCII JMS I (PUNY JMP CLSKRF JMS I (CHKFUL /DUMP BUFFER IF HAPPEN TO BE EXACTLY AT END 2$: CDF 10 /FIX FOR LSD ESTIMATE TOO BIG BUG TAD I (TXTBLK CLL CIA TAD I (OUTREC CDF 0 SZL CLA JMP I (FINN /DOESN'T CATCH ESTIMATE TOO SMALL *** JMS I (ZPAD JMP 2$ CLSKRF, JMS I (ZPAD /NO, OUTPUTTING BINARY JMP I (FINN SYMT2, 0 T, 0
PAGE
LSDNUM, 0 OUTASC, TAD (-OUTCRS-1 /OUTPUT LAST BUFFER DCA KNT /BY WRITING ^Z FOLLOWED BY ZEROES JMS I QQLISTER /MAKE SURE WRITE ENOUGH TO DUMP /BUFFER ISZ KNT /INCLUDING ^Z JMP .-2 CDF 10 /PASS 1 FIN CODE TAD I (OUTSIZ CDF 0 DCA I (TOCSIZ FINN, TAD PASS TAD (-4 SZA CLA JMP I (NEX /CLOSE KREF FILE ON PASS 4 CIF CDF 10 JMS I (CLOSO JMP I (NEX
LSDOUT, 0 /OUTPUT LSD ENTRY ISZ LSDNUM / TAD QUAL / AND (7400 TAD LSDNUM DCA QUAL /CHECK IF AGREE ON NON PASS 1 JMS I (PUNY /PASS 2? JMP I LSDOUT /NO, NO LSD OUTPUT THIS PASS JMP I (PART2 ZPAD, 0 /CAN ONLY BE CALLED ON EVEN PASS TAD (-377 /BUFFER CONSISTS OF 377 WORDS PLUS HEADER WORD DCA EOKNT JMS I (PUTBT ISZ EOKNT JMP .-2 JMP I ZPAD EOKNT, 0
/CODE BELOW CALCULATES TYPE CODE NO. EXPECTED BY LINKER / 14 ENTRY / 15 GLOBAL / 16 EXTERNAL (SYMVAL=1 MEANS SECREF) / 17 ZTERNAL /ITEM INTERNAL EXTERNAL /GLOBAL 4 14 /ENTRY 5 15 /EXTERN 6 16 /ZTERN 7 17 (SAME AS 16) NOSECT, TAD FLAG AND (7 TAD (-6 SNA CLA TAD SYMVAL SZA CLA JMP SECREF TAD FLAG AND (3 GLOBB, TAD (3 /14 GLOBAL ZS, IAC /11 ZSECT XS, TAD (3 /10 XSECT DS, IAC /5 DSECT FS, IAC /4 FSECT RS, IAC /3 RSECT AS, IAC /2 ASECT SECREF, IAC /1 SECONDARY REFERENCE DCA LTYPE /0 /IF NOT A SECT, BITS 0-7 SHOULD CONTAIN LSDNUM /OBTAINED FROM BITS 4-11 OF QUAL WORD OF SECT OF SYMBOL TAD FLAG AND QQ70 SZA JMP LSD3 /SYMBOL IS A SECT NAME DCA ZTEM TAD SYMSCT /GET SECT OF SYMBOL SNA JMP LSD4 /NONE, AS IN EXTERNAL JMS I (GETLSD /CONVERT TO LSD NUMBER CLL RTL RTL /MOVE LSDNUM TO BITS 0-7 JMP LSD4
LSD3, DCA ZTEM TAD SYMSCT JMS I (CNVADR CIF 20 JMS I (KLU6 LSD4, TAD LTYPE /ADD IN SYMBOL TYPE JMS I QQPUTBIT /OUTPUT TAD SYMSCT JMS I (CNVADR IAC DCA TMP TAD I TMP DCA RTEM ISZ TMP TAD I TMP DCA TMP CDF 0 TAD FLAG AND QQ7 /ISOLATE TYPE TAD (-EXTRN SMA CLA JMP NOEXT /DON'T OUTPUT VALUE IF EXTERNAL OR ZTERNAL TAD ZTEM TAD QM10 SNA CLA TAD TMP CIA / TAD FVAL /ADD IN LENGTH OF F-SECT LITERALS TAD SYMVAL JMS I QQPUTBIT /OUTPUT VALUE OR LENGTH /FVAL, 0 /0 EXCEPT IN FSECTS IN WHICH CASE / /IT IS THE LENGTH OF THE LITERAL POOL /SHOULD WE OUTPUT RESTRICTIONS EVEN IF RESTRICTION TYPE IS 0? /I SUGGEST WE DO THIS ONLY IF FLAG (70 AND SYMVAL &7000 ETC. NOEXT, JMS I (PART2A JMP I LSDOUT RTEM, 0 TMP, 0
LTYPE, 0 /TYPE NEEDED BY LINKER (BITS 8-11) ZTEM, 0 PAGE RELOC
.ASECT FIN2X,LEVEL=1,OVERLAY=13 FIELD 3 *2000 PTCHLOC=HEADING+53 /FIN CODE EXTENSION FOR PASSES 2 AND 4 14 /OVERLAY NUMBER LSDINI, 0 /OUTPUT SPECIAL STUFF AT BEGIN OF LSD CDF 10 TAD I (DATEWD /GET TODAY'S DATE CDF 0 DCA D8 TAD I (7777 /GET WORD WITH DATE EXTENSION BITS DCA D8A /WHY NOT? - STORE ENTIRE WORD STL RTL /2 TAD PAGENO DCA PGN TAD I (JSW DCA JSWD TAD I (STARTR AND QQ7770 /1-7 MEANS FIELD SPECIFIED SZA CLA IAC /2 MEANS LSD IAC /1 MEANS ABS DCA SATYPE TAD I (START DCA SAABS TAD I (STARTR AND QQ7770 SNA CLA JMP STX TAD I (STARTR JMS I (GETLSD SKP STX, TAD I (STARTR DCA SAREL TAD I (UVER DCA UVERN CDF 10 TAD I (PTCHLOC CDF 0 DCA PTCHL TAD (-26 /26 ITEMS IN LIST JMS PUTHDR 2202 /RB -4 3 /DATE D8, 0 D8A, 0 /DATE EXTENSION -4 4 /RB SPEC LEVEL 2 0 /2.0 -7 5 /AUTHOR TEXT /MACREL/ *.-1 VERNUM PTCHL, PTCHLEV -3 6 /PAGE NUMBER PGN, 0 -3 13 UVERN, 0 /USER VERSION NUMBER TAD I (STARTK SZA CLA /WAS A STARTING ADDRESS SPECIFIED? JMP NOSTA /NO TAD M4 /YES, OUTPUT 4 WORDS JMS PUTHDR M4, -4 SATYPE, 0 SAREL, 0 SAABS, 0 NOSTA, TAD I (JSWKEY SZA CLA /WAS A JOB STATUS WORD SPECIFIED? JMP NOJSW /NO TAD M3 /YES, OUTPUT 3 WORDS JMS PUTHDR M3, -3 12 JSWD, 0 NOJSW, STA /OUTPUT ONE WORD JMS PUTHDR 0 /END OF PREFACE JMP I LSDINI
PUTHDR, 0 DCA HKNT HLUP, TAD I PUTHDR ISZ PUTHDR JMS I QQPUTBIT ISZ HKNT JMP HLUP JMP I PUTHDR HKNT, 0
PART2A, 0 X1000, TAD FLAG AND QQ70 SNA JMP I PART2A TAD QM10 /BUT CHECK FOR ASECT SZA CLA /CAREFUL: IN ASECT, RT BITS ARE ACTUALLY A FIELD NUMBER TAD I (RTEM /ANY 10XX WILL DO TAD X1000 /" RAL /LINK ON IF R.T. IS 3 OR 4 CLA TAD I (TMP SZL JMS I (GETLSD /RESTRICTION IS 15-BIT PTR /CONVERT IT TO LSD NUM (RESTR TYPE=3 OR 4) JMS I QQPUTBIT /OUTPUT RESTRICTION CDF 20 TAD I (OVL CDF 0 SNA JMP I PART2A AND (3737 JMS I QQPUTBIT JMP I PART2A PAGE
PART2, TAD I (LSDNUM AND (7400 SZA CLA ER206, JMS I QQERROR /TOO MANY LSD ENTRIES TAD NAME1 /YES JMS I QQPUTBIT /OUTPUT NAME TAD NAME2 JMS I QQPUTBIT TAD NAME3 JMS I QQPUTBIT TAD FLAG AND QQ70 /GET SECT TYPE CLL RTR RAR JMS I (BRAN NOSECT /0 AS /1 RS /2 FS /3 DS /4 ZS /5 XS /6 NOSECT /7 PAGE



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