File PASS1.PA (PAL assembler source file)

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

/PASS 1 OF PDP-8 BASIC COMPILER

/1-DEC-71		R. LARY, P. KNUEVEN, B. SMITH

/COPYRIGHT 1971		OREGON MUSEUM OF SCIENCE AND INDUSTRY
/			PORTLAND, OREGON

	LPC=6666
	LSF=6661

	*2

GCHX,	TGCH
LOC3,	PCH
PREAD,	DREAD
WRITE,	DWRITE

	*11

XR1,	0
XR2,	0

	*15

DXR,	DAT-1
SXR,	0

	*20

ISTNO,	0
IBLNO,	0
L215,	215
ERROR,	QERR
ERRCT,	0
BLNO,	0
CHAR,	0
TMP1,	0
TMP2,	0
TMP3,	0
TMP,	0
EXP,	0
HORD,	0
LORD,	0
VSWTCH,	0
IFSTMT,	0
PCOUNT,	0
ST1,	SYMT
VNAME,	0
VTMP,	0
STNOFG,	0
FATAL,	BOOT
ALOCAT,	ALOKT
STMTNO,	XSTMTNO
EOX,	EOXARP
GETNUM,	XGETNUM
ARLP,	XARLP
GNAME,	XGNAME
SRCH,	XSRCH
LNREF,	XLNREF
LNDEF,	XLNDEF
LITDF,	XLITDF
ARPARSE,XARPARSE
BEGTRA,	TRATAB-33
MCODE,	-15
LPCODE,	-50
TOCODE,	-2417
	NEW=JMP I .
	XNEWST
	TEOL=JMS I .
	XTSEOL
	GCH2=JMS I .
	XG2CH
	SX0=JMP I .
	STXERR
	ST0=JMP .
	JMS I ERROR
	2324		/ST
	GCH=JMS I .
	XNXTCHR
	TESTL=JMS I .
	XTSLETR
	TESTN=JMS I .
	XTSNUM
	BACK1=JMS I .
	XPBACK
	OUTP=JMS I .
	TAPOUT
	NOEQ=JMS I .
	XTNOEQ
L77,	77
STCK,	XSTCK
L3000,	3000
L7741,	7741
	M37=L7741
L12,	12
L14,	14
L40,	40
MINSCD,	-55
NORM,	XNORM
L7765,	7765
L43,	43
L17,	17
FULER,	FULERR
	VARTABLE=0
	LINETABLE=-400
	FUNCTABLE=-1400
	SYSFNTABLE=-2000
ENTRYN0,0
PLPTFLG,LPTFLG
PCHAIN,	CHAIN
DATAFG,	0
DSGN,	0
DATCT,	-125
DATLEN,	0
M125,	-125
STABCT,	-21		/-(NUMBER OF ENTRIES IN SYMBOL TABLE)
PSYMTB,	STAB
PSYMT1,	STAB-1
PSYMT2,	-STAB
READCT,	0
ETMP1,	0
ETMP2,	0
ETMP3,	0
KORE,	7577
MINSTH,	-2410
THMNGO,	2410-0717
PSTCM1,	STCOM1
M215,	-215
M62,	-62		/-(OFFSET OF CHR$ ENTRY IN SYMBOL TABLE + 2)
BACK2,	XBACK2
SUCODE,	2417-2325
PAPOSTC,APOSTC
STMTCT,	-21
LTBASE,	377
PS1,	STAB
PS2,	0
STCT,	1

	*174

	JMS I PREAD
	0
	-14
	BPASS2 	/ADDRESS OF PASS 2

	PAGE

OVER=VTMP XNXTCHR, 0 CLA TAD CHAR SMA GETCH, JMS I GCHX AND (3777 TAD (-212 SNA JMP GETCH TAD (212-"\+100 SNA JMP BACKSL BACKQ, TAD L7765 /("\-"' SNA JMP APOST APOSTQ, TAD ("'-215 SNA FAKECR, TAD ("_-215-100 TAD L215 AND L77 SNA JMP GETCH TAD (-40 SNA BLNKSW, JMP GETCH TAD L40 DCA CHAR TAD CHAR JMP I XNXTCHR XTSLETR,0 TAD (-33 SPA ISZ XTSLETR TAD (33 JMP I XTSLETR XTSNUM, 0 TAD (-60 SPA JMP NOTNM TAD (-12 SPA ISZ XTSNUM TAD L12 NOTNM, TAD (60 JMP I XTSNUM XSTMTNO, 0 GCH TESTN JMP STRTN AND L17 DCA TMP1 STNOLP, GCH TESTN JMP EOSNO AND L17 DCA TMP2 TAD TMP1 SPA JMP NUMERR CLL RTL TAD TMP1 SZL JMP NUMERR RAL TAD TMP2 SZL JMP NUMERR DCA TMP1 JMP STNOLP EOSNO, CLA TAD TMP1 ISZ XSTMTNO STRTN, BACK1 JMP I XSTMTNO XPBACK, 0 DCA TMP2 CLA CLL CML RAR TAD CHAR DCA CHAR TAD TMP2 JMP I XPBACK NUMERR, JMS I ERROR 1116 /IN NEXT, JMS I STCK -30;-24;32 JMS I ARPARSE TEOL SX0 ALOKT, 0 DCA XPBACK TAD XPBACK CLL RAL SZL SPA JMP I (MOERR TAD XPBACK CIA CLL TAD KORE DCA KORE JMS I (MOCHK /SEE IF WE OVERLAPPED LITERALS TAD KORE JMP I ALOKT BACKSL, TAD BLNKSW SNA CLA JMP BACKQ ISZ STNOFG JMP FAKECR APOST, TAD BLNKSW SNA CLA JMP APOSTQ JMP I PAPOSTC PAGE
/ENTRY POINT FOR CALL FROM EDITOR PASS1, ISZ I (RUNCNT /IF RUN COUNT IS STILL NON-ZERO GO DO PASS1 JMP I (PASS1X TAD I (KFLG /IF IN BATCH KEYBOARD MODE THEN SET BOOTSTRAP TO TAKE SMA CLA / US OUT BY LOADING THE READER EDITOR JMP I (PASS1X / NEXT TIME BOOTSTRAP IS CALLED (I.E. AT END OF RUN) TAD (RDREDT DCA I (REC DCA I (KFLG /INDICATE NO LONGER IN KEYBOARD MODE JMP I (PASS1X XFLUSH, BACK1 TEOL JMP .-1 XSRCH, 0 CIA DCA TMP1 TAD I XSRCH ISZ XSRCH DCA TMP2 TAD PSYMT1 DCA SXR TAD STABCT DCA TMP3 XSRCLP, TAD I SXR TAD TMP2 SZA CLA JMP ISZ3 TAD I SXR TAD TMP1 SZA CLA JMP ISZ2 CLA IAC XSRCFND,TAD SXR DCA TMP TAD TMP TAD PSYMT2 DCA ENTRYN0 JMP I XSRCH ISZ3, ISZ SXR ISZ2, ISZ SXR ISZ SXR ISZ TMP3 JMP XSRCLP TAD TMP2 CIA DCA I SXR TAD TMP1 CIA DCA I SXR JMS BUMPSYM ISZ XSRCH JMP XSRCFND BUMPSYM,0 DCA I SXR CLL CLA CMA TAD STABCT DCA STABCT TAD STABCT TAD SLIMIT SNL CLA JMP I BUMPSYM FULERR, JMS I ERROR 6417 /TO JMP I (BOOT SLIMIT, 537 / 351 DECIMAL XLNREF, 0 JMS I SRCH LINETABLE JMP .+4 CLL CML RAR TAD BLNO DCA I TMP CLA CMA CLL RTR AND I TMP TAD (2000 DCA I TMP JMP I XLNREF XLNDEF, 0 DCA ISTNO TAD ISTNO JMS I SRCH LINETABLE CLA CLL CML RTR TAD BLNO DCA I TMP JMP I XLNDEF XBACK2, 0 TAD CHAR CLL RAR TAD I (MQ RTR RTR RTR DCA I (MQ TAD VTMP AND L77 TAD (4000 DCA CHAR JMP I XBACK2 APOSTC, JMS I GCHX TAD M215 SZA CLA JMP .-3 JMP I (FAKECR RANDOMIZE,JMS I STCK -16;-4;-17;-15;46 TEOL BACK1 JMS I STCK -11;-32;-5;34 JMP I PSTCM1 PAGE
MTWO=CLA CLL CMA RAL XLITDF, 0 TAD PSYMT1 DCA SXR TAD STABCT DCA TMP3 XLITLP, TAD I SXR TAD (-1000 SZA CLA JMP ISZIT TAD I SXR CIA TAD EXP SZA CLA JMP ISZIT+1 TAD I SXR CIA TAD HORD SZA CLA JMP ISZIT+2 TAD I SXR CIA TAD LORD SZA CLA JMP ISZIT+3 CLA CMA TAD SXR TAD PSYMT2 JMP I XLITDF ISZIT, ISZ SXR ISZ SXR ISZ SXR ISZ TMP3 JMP XLITLP TAD (-1000 CIA DCA I SXR TAD EXP DCA I SXR TAD HORD DCA I SXR TAD LORD JMS I (BUMPSYM JMP ISZIT-4 XG2CH, 0 GCH CLL RTL RTL RTL DCA TMP GCH TAD TMP JMP I XG2CH XTSEOL, 0 GCH TAD M37 SZA CLA JMP I XTSEOL TAD L7741 OUTP NEW LET, JMS I STCK -24;2 LET1, JMS I ARPARSE TAD IFSTMT SNA JMP LETFUJ CLL RAR SZA CLA JMP LETFUJ TEOL SX0 LETFUJ, BACK1 SX0 XGNAME, 0 GCH TESTL SX0 CLL RTL RTL RTL DCA VNAME GCH TESTN JMP I XGNAME TAD VNAME DCA VNAME ISZ XGNAME JMP I XGNAME XSTCK, 0 CLA TAD I XSTCK SMA JMP STOUT GCH TAD I XSTCK SZA CLA ST0 ISZ XSTCK JMP XSTCK+1 STOUT, CLL RAR SZL CIA OUTP ISZ XSTCK JMP I XSTCK PAUSEX, JMS I STCK -25;-23;-5;42 TEOL BACK1 JMS I STMTNO SX0 DCA TMP CLL TAD TMP TAD L3000 SZL CLA SX0 TAD TMP DCA KORE JMP I PSTCM1 PAGE
XARPARSE, 0 CLA CMA DCA VSWTCH XARLP, GCH TESTL JMP .+3 CLA JMP I (LETTER TAD BEGTRA DCA TMP TAD I TMP DCA TMP JMP I TMP NUM, BACK1 JMS I GETNUM JMS I LITDF OUTP DCA VSWTCH JMP XARLP OPEN, ISZ PCOUNT OPER, CLA CMA DCA VSWTCH TAD CHAR AND L77 CIA OUTP JMP XARLP CLOSE, CLA CMA TAD PCOUNT DCA PCOUNT DCA VSWTCH TAD PCOUNT SMA CLA JMP OPER+2 PCERR, DCA PCOUNT JMS I ERROR 2003 /PC COMMA, TAD PCOUNT SZA CLA JMP OPER EOXARP, JMS PZERO BACK1 JMP I XARPARSE EQUAL, JMS PZERO ISZ IFSTMT JMP OPER TAD (46 /FUDGE FOR REL = VS. ASSIGNMENT = DCA CHAR JMP OPER SNGLRL, OUTP BACK1 CLA CMA DCA VSWTCH JMP XARLP LTSIGN, ISZ IFSTMT JMP RELERR JMS PZERO GCH TAD (-76 /(>) SNA JMP NE IAC SNA CLA JMP LE TAD (-74 /(<) JMP SNGLRL GTSIGN, ISZ IFSTMT JMP RELERR JMS PZERO GCH TAD (-75 /(=) SNA CLA JMP GE TAD (-76 /(>) JMP SNGLRL NE, MTWO LE, TAD (45 /(<= FUDGE) DCA CHAR JMP OPER GE, TAD (41 /(=> FUDGE) JMP .-3 RELERR, JMS I ERROR 2217 /RO PZERO, 0 TAD PCOUNT SNA CLA JMP I PZERO JMP PCERR XCHLIT, 0 JMS I GCHX TAD (-215 SNA BACK1 TAD L215 DCA OVER DCA LORD DCA HORD TAD L43 DCA EXP JMS I NORM JMP I XCHLIT XTNOEQ, 0 TAD IFSTMT SZA CLA SX0 JMP I XTNOEQ TANCK, TAD ENTRYNO TAD MTABE SZA CLA JMP I (BCK2 TAD TANNO JMP I (TANFUJ MTABE, -56 TANNO, 66 PAGE
LETTER, TAD VSWTCH SMA CLA JMP I EOX BACK1 JMS I GNAME JMP LNOTNM VNDEF, TAD VNAME JMS I SRCH VARTABLE NOP VNREF, TAD ENTRYNO OUTP GCH TAD LPCODE SZA CLA JMP LPTBK TAD I TMP SZA CLA JMP LPTBK TAD L12 DCA I TMP ISZ TMP DCA I TMP LPTBK, BACK1 DCA VSWTCH JMP I ARLP LNOTNM, TESTL JMP NOSWET TAD VNAME DCA VTMP TAD VTMP TAD MINSFN SNA CLA JMP USERFN TAD VTMP JMS I SRCH SYSFNTABLE SKP JMP NOSWET-1 GCH TAD I TMP SZA JMP BACKFUJ TAD ENTRYNO TAD M62 /SEE IF THIS IS CHR$ SZA CLA JMP .+5 GCH /CHECK FOR THE DOLLAR SIGN TAD (-44 SZA CLA SX0 TAD ENTRYNO TANFUJ, OUTP GCH TAD LPCODE SZA CLA JMP STXERR BACK1 JMP I ARLP STXERR, JMS I ERROR 2361 /S1 USERFN, GCH TESTL JMP STXERR DCA VNAME GCH TAD LPCODE SZA CLA JMP STXERR BACK1 TAD VNAME JMS I SRCH FUNCTABLE JMP VNREF TAD UFUN DCA I TMP TAD ENTRYNO OUTP JMP LPTBK+1 ISZ STABCT NOSWET, CLA BACK1 JMP VNDEF BACKFUJ,CIA TAD I TMP TAD LITN SNA CLA JMP I (TANCK BCK2, JMS I BACK2 JMP VNDEF LITN, 16 MINSFN, -0616 UFUN, 5377 TABLE2, 7775;6314;6315 7772;5075;3413 7763;6433;3430 7746;5274;6170 7713;7151;2624 7626;6373;0436 7454;5207;7752 7127;6735;0106 6256;6003;0502 4534;4404;4754 PAGE
/ 6041 / JMP .-1 /RF08 FUDGE PASS1X, TAD I PLPTFLG SZA CLA ISZ LOC3 XNEWST, ISZ BLNO TAD STNOFG CLL RAR DCA STNOFG SZL CLA JMP NOSTNO JMS I STMTNO JMP NOSTNO JMS I LNDEF TAD ENTRYNO CIA OUTP NOSTNO, CLA GCH BACK1 TAD M37 SNA CLA JMP REMX TAD STMTCT DCA TMP1 TAD (STTYPE-1 DCA XR1 DCA IFSTMT GCH2 TAD I XR1 SNA JMP STOK ISZ XR1 ISZ TMP1 JMP .-5 TAD I XR1 RTR RTR RTR DCA VTMP JMS I STCK 2 JMS I BACK2 JMP I (LET1 STOK, TAD I XR1 DCA TMP JMP I TMP REM, GCH TAD MCODE SZA JMP NOTREM REMX, JMS I STCK 34 TEOL JMP .-1 NOTREM, TAD L14 SNA JMP READ TAD (-23 SNA JMP RETURN IAC SZA CLA ST0 JMS I STCK -24;-17;-22;-5;4 ISZ READCT /DON'T LET RESTORE BOMB DATA AREA SKP STCOMN, OUTP STCOM1, TEOL SX0 WRITEX, JMS I STCK -11;-24;-5;44 JMP READLP-1 READ, JMS I STCK -4;6 ISZ READCT READLP, JMS I ARPARSE NOEQ TEOL TAD CHAR CIA OUTP JMP READLP GOTO, GCH2 TAD TOCODE SZA JMP GOSUB JMS I STCK 10 GOTOSB, JMS I STMTNO SX0 JMS I LNREF TAD ENTRYNO JMP STCOMN GOSUB, TAD SUCODE SZA CLA ST0 JMS I STCK -2;12 JMP GOTOSB RETURN, JMS I STCK -25;-22;-16;16 JMP STCOM1 INPUT, JMS I STCK -20;-25;-24;14 JMP READLP STOP, JMS I STCK -17;-20;20 JMP STCOM1 PAGE
CHAINX, JMS I STCK -1;-11;-16;40 JMP PRTLST PRINT, JMS I STCK -11;-16;-24;22 PRTLST, GCH TAD (-42 SZA CLA JMP PAREXP PRTQOT, TAD (-42 OUTP DCA I (BLNKSW QOTLUP, GCH TAD (-42 SNA CLA JMP EOQUOT TAD CHAR TAD M37 SNA CLA JMP QOTERR TAD CHAR OUTP JMP QOTLUP EOQUOT, TAD (-42 OUTP TAD IGNORB DCA I (BLNKSW JMP PRTLST PAREXP, BACK1 JMS I ARPARSE NOEQ TEOL TAD CHAR TAD (-42 SNA CLA JMP PRTQOT TAD CHAR CIA OUTP JMP PRTLST DEF, JMS I STCK -6;24 JMS I ARPARSE TEOL SX0 IF, CLA CMA DCA IFSTMT JMS I STCK 26 JMS I ARPARSE NOEQ GCH2 TAD MINSTH SNA JMP IFTHEN TAD THMNGO SZA CLA SX0 JMS I STCK -24;-17;71 JMP I (GOTOSB IFTHEN, JMS I STCK -5;-16;71 JMP I (GOTOSB FOR, JMS I STCK -22;30 JMS I ARPARSE TAD IFSTMT SNA SX0 RAR CLL SZA CLA SX0 DCA IFSTMT JMS I STCK -24;-17;165 JMS I ARPARSE NOEQ TEOL BACK1 JMS I STCK -23;-24;-5;-20;177 JMS I ARPARSE NOEQ TEOL SX0 IGNORB, GETCH&177+5200 /JMP GETCH QOTERR, TAD IGNORB DCA I (BLNKSW JMS I ERROR 2521 /UQ MOCHK, 0 /SEE IF VARIABLES HAVE TAD KORE /OVERLAPPED LITERALS CLL CIA TAD LTBASE SNL CLA JMP I MOCHK /THEY HAVE (SHAME, SHAME...) MOERR, CLA CLL JMS I ERROR 5561 /M1 JMP I FATAL PAGE
DIM, JMS I STCK -15;34 DVLOOP, JMS I GNAME BACK1 CLA TAD VNAME JMS I SRCH VARTABLE NOP TAD TMP DCA VTMP GCH TAD LPCODE SZA CLA SX0 JMS I STMTNO SX0 SNA SX0 DCA I VTMP ISZ VTMP GCH TAD (-54 SNA CLA JMP DIM2 BACK1 JMP SNGLDM DIM2, JMS I STMTNO SX0 SNA SX0 SNGLDM, DCA I VTMP GCH TAD (-51 SZA CLA SX0 JMS DTEOL JMP DVLOOP DATA, JMS I STCK -24;-1;34 ISZ DATAFG JMS I (DATLUK /LOOKUP DATA30.TM ON SYSTEM DATLP, MTWO DCA DSGN GCH TAD MINSCD SNA ISZ DSGN SZA CLA BACK1 JMS I GETNUM ISZ DSGN JMP DPOS TAD LORD CIA CLL DCA LORD TAD HORD CMA SZL IAC DCA HORD DPOS, TAD EXP DCA I DXR TAD HORD DCA I DXR TAD LORD DCA I DXR ISZ DATCT JMP NOWRIT ISZ DATLEN SKP JMP I (SCRERR JMS I (SHNDLR /NOT PART OF EDU30.SV 4200 2400 DATREC, 0 /FILLED BY 'DATLUK' JMP I (DERROR ISZ DATREC TAD (DAT-1 DCA DXR TAD M125 DCA DATCT NOWRIT, JMS DTEOL JMP DATLP DTEOL, 0 GCH TAD (-54 SNA JMP I DTEOL TAD (54-37 SZA CLA SX0 TAD L7741 OUTP NEW EODATA, 0 TAD JMPOUT DCA DATREC+2 DCA I DXR /WRITE DATA EOF CLA IAC DCA I DXR TAD READCT SNA CLA JMP I EODATA JMS I (DATLUK /MAKE SURE TAD I PCHAIN /CHAIN FLAG SMA CLA JMP DATREC-6 TAD DATAFG SZA CLA JMP DATREC-6 JMPOUT, JMP I EODATA PAGE
END, JMS I STCK -4;36 TAD STABCT DCA PS2 LOOPDF, TAD I PS1 CLL RTL RTL RAL TAD EJUMP DCA EJUMP-1 TAD I PS1 TAD STCT DCA I PS1 CLA CLL CML RTL TAD PS1 DCA TMP 0 EJUMP, JMP I .+1 EVARB ELINE LITRDF EFUNCT ESYSFN EVARB, TAD I TMP SNA JMP SCALDF IAC DCA MULT2D ISZ TMP TAD I TMP SNA JMP ARAYDF CLL CMA DCA HSKEEP TAD MULT2D SZL JMP I (MOERR ISZ HSKEEP JMP .-4 IAC JMS I ALOCAT JMS HSKEEP CLA CMA TAD MULT2D JMS HSKEEP TAD I TMP IAC JMP ARCOMN SCALDF, CLA IAC JMS I ALOCAT JMP ARCOMN LITRDF, TAD LTBASE JMS HSKEEP TAD LTBASE TAD (3 DCA LTBASE JMS I (MOCHK /OVERFLOW? JMP CONTDF ARAYDF, TAD MULT2D IAC JMS I ALOCAT JMS HSKEEP TAD MULT2D CIA ARCOMN, JMS HSKEEP CONTDF, TAD PS1 TAD (4 DCA PS1 ISZ PS2 JMP LOOPDF CLA CLL CML RAR TAD STCT DCA I PS1 TAD STCT DCA I (SYSCOM+2 TAD KORE /TELL PASS 2 VARIABLE LIMITS DCA I (SYSCOM+3 TAD L7741 OUTP TAD STCT TAD (-400 SMA CLA JMP I FULER TAD ERRCT SZA CLA JMP I FATAL JMS I (EODATA JMS I (FIXIO /MOVE OUTPUT BUFFER BACK JMP 174 /LOAD PASS 2 HSKEEP, 0 DCA I ST1 ISZ ST1 ISZ STCT JMP I HSKEEP MULT2D, 0 ELINE, TAD I TMP SPA JMP ULERR RAL SPA CLA JMP ARCOMN DCA I PS1 JMP CONTDF EFUNCT, TAD I TMP JMS HSKEEP JMP ARCOMN ESYSFN, ISZ TMP TAD I TMP JMP ARCOMN ULERR, CLA CMA TAD TMP DCA TMP TAD I TMP DCA ISTNO JMS I ERROR 6514 /UL JMP CONTDF PAGE
XR=10 COLCT=173 P2YMTB=155 QSYMAD=30 Q2CRLF=2732 P22CH=2676 P26CH=2717 T2MP=31 X2UMOUT=2623 L377=154 L7=110 XPASS3=166 DAT, TAD P2YMTB /SYMBOL PRINT ROUTINE FOR PASS 2 DCA SPTR /ASSEMBLES IN PASS 1, BUT TAD (-16 /LOADS AND EXECUTES IN PASS 2 DCA COLCT JMS I (Q2CRLF KCC LOOP, KSF JMP .+4 KRB SNA CLA JMP EOSTAB TAD I SPTR SNA JMP NEXSYM SPA JMP EOSTAB CLL RTL RTL RAL AND L7 TAD JUMPAD DCA .+4 TAD SPTR DCA XR TAD I XR 0 JUMPAD, JMP .+1 JMP VAR JMP S2MTNO JMP LITRL JMP U2ERFN JMP SYSFCT VAR, JMS I (P22CH TAD I XR SNA JMP COMN DCA T2MP TAD (50 JMS I (P26CH TAD T2MP JMS I (X2UMOUT TAD I XR SNA JMP .+6 DCA T2MP TAD (54 JMS I (P26CH TAD T2MP JMS I (X2UMOUT TAD (51 JMP COMN-1 LITRL, JMS OCT TAD I XR JMS OCT TAD I XR JMS OCT JMP COMN S2MTNO, JMS I (X2UMOUT JMP COMN U2ERFN, DCA T2MP TAD (616 /FN JMS I (P22CH TAD T2MP JMS I (P26CH COMN, TAD I SPTR AND L377 TAD QSYMAD DCA T2MP TAB, TAD (40 JMS I (P26CH TAD COLCT SPA CLA JMP TAB TAD I T2MP IAC JMS OCT JMS I (Q2CRLF TAD (-16 DCA COLCT NEXSYM, TAD SPTR TAD (4 DCA SPTR JMP LOOP NOOP, CLA JMP NEXSYM SYSFCT, JMS I (P22CH TAD I XR CIA JMP COMN-1 OCT, 0 DCA T2MP TAD (-4 DCA 0 TAD T2MP RTL RAL DCA T2MP TAD T2MP RAL AND L7 TAD (60 JMS I (P26CH ISZ 0 JMP OCT+4 JMP I OCT SPTR, 0 EOSTAB, CLA JMS I (Q2CRLF JMS I (Q2CRLF JMP I XPASS3 /LOAD PASS 3 PAGE
DAT1, ZBLOCK 200 /LAST HALF OF DATA BUFFER PAGE
XMULT, 0 TAD I XR1 TAD EXP DCA EXP TAD I XR1 DCA OVER TAD I XR1 DCA XMULT10 TAD HORD DCA TMP1 TAD LORD DCA TMP2 DCA HORD DCA LORD TAD (7750 DCA TMP3 XXLP, TAD OVER CLL RAR DCA OVER TAD XMULT10 RAR DCA XMULT10 CML SNL JMS XXADD TAD HORD CLL RAR DCA HORD TAD LORD RAR DCA LORD ISZ TMP3 JMP XXLP JMS XNORM JMP I XMULT XMULT10, 0 JMS XXRAL TAD HORD DCA TMP1 TAD LORD DCA TMP2 TAD OVER DCA XMULT JMS XXRAL JMS XXRAL TAD TMP3 TAD XMULT TAD OVER DCA OVER RAL JMS XXADD SZL SPA JMP I (LITERR JMP I XMULT10 XXRAL, 0 TAD OVER CLL RAL DCA OVER TAD LORD RAL DCA LORD TAD HORD RAL SZL SPA JMP I (LITERR DCA HORD JMP I XXRAL XNORM, 0 TAD HORD SNA TAD LORD SNA TAD OVER SZA CLA JMP .+3 DCA EXP JMP I XNORM TAD HORD RTL SZL CLA JMP I XNORM JMS XXRAL CLA CMA TAD EXP DCA EXP JMP .-10 XXADD, 0 TAD TMP2 TAD LORD DCA LORD RAL TAD TMP1 TAD HORD DCA HORD JMP I XXADD TABLE1, 0004;5000;0000 0007;6200;0000 0016;4704;0000 0033;5753;6040 0066;4341;5710 0153;4734;2654 0325;6047;4036 0652;4473;5104 1523;5247;7342 3245;7061;4606 PAGE
XGETNUM, 0 DCA ESW TAD NOPOP DCA PERBMP DCA PERCT GCH TAD (-43 SZA CLA JMP .+3 JMS I (XCHLIT JMP I XGETNUM BACK1 DCA HORD DCA LORD DCA OVER DIGLOOP, GCH TESTN JMP NOTNUM AND L17 DCA TMP3 JMS I (XMULT10 PERBMP, NOP JMP DIGLOOP NOTNUM, TAD (-5 /E+XX SNA JMP EXPNT TAD (5-56 /.XXX SZA CLA JMP LITEND TAD PERCT SZA CLA JMP LITERR TAD ESW SZA CLA JMP LITERR TAD (ISZ PERCT DCA PERBMP JMP DIGLOOP EXPNT, TAD NOPOP DCA PERBMP TAD ESW SZA CLA JMP LITERR ISZ ESW GCH TAD MINSCD SNA JMP NEGEXP IAC IAC SZA CLA BACK1 SWITCE, TAD HORD DCA ETMP1 TAD LORD DCA ETMP2 TAD OVER DCA ETMP3 JMP DIGLOOP-3 NEGEXP, CLA CMA DCA ESW JMP SWITCE LITEND, CLA CLL CMA RAR AND CHAR TAD LPCODE SNA CLA SX0 BACK1 TAD ESW SNA CLA JMP NOEXP TAD HORD SNA TAD LORD SZA CLA JMP LITERR TAD OVER ISZ ESW CIA DCA ESW TAD ETMP1 DCA HORD TAD ETMP2 DCA LORD TAD ETMP3 DCA OVER NOEXP, TAD ESW TAD PERCT DCA ESW TAD L43 DCA EXP JMS I NORM TAD NEGXP DCA XR1 TAD ESW SMA CLA JMP .+6 TAD ESW CIA DCA ESW TAD POSXP DCA XR1 MPYLP, TAD ESW SNA JMP I XGETNUM NOPOP, CLL RAR /GOOD ENOUGH DCA ESW SNL JMP .+3 JMS I (XMULT JMP MPYLP ISZ XR1 ISZ XR1 ISZ XR1 JMP MPYLP ESW, 0 PERCT, 0 POSXP, TABLE1-1 NEGXP, TABLE2-1 LITERR, JMS I ERROR 1411 /LI PAGE
JMP I (PASS1X /SEE 'CHAIN' IN PASS 3 FIXIO, 0 TAD I (TBPTR /ANY BUFFER TO MOVE? SNA JMP FIXBLK /NO, GET THE FILE DCA MOVE1 /'GET' POINTER TAD MOVE1 CIA DCA MOVEWC /WORD COUNT TAD I (TPAGES+1 /CHECK FOR FILE OUTPUT TAD (-SCRATCH /BASE FOR OUTPUT CLL RTR /SHIFT FOR POINTER RTR RAR TAD (400 /ADD ONE BLOCK TAD MOVE1 /TO CURRENT POSITION DCA MOVE2 /'PUT' POINTER CDF 10 /FIELD 1 CLA CMA /BACKUP POINTERS FIRST TAD MOVE1 DCA MOVE1 CLA CMA TAD MOVE2 DCA MOVE2 TAD I MOVE1 DCA I MOVE2 ISZ MOVEWC /DONE? JMP .-11 CDF FIXBLK, TAD I (TPAGES+1 /SEE IF ANY FILE OUTPUT TAD (-SCRATCH SNA JMP I FIXIO /NO, ALL DONE CLL RAL /BLOCKS -> PAGES CIA DCA FPAGES CDF 10 /READ INTO FIELD 1 JMS I PREAD 0400 FPAGES, 0 SCRATCH JMP I FIXIO MOVE1, 0 MOVE2, 0 MOVEWC, 0 DATLUK, 0 DATASW, CIF 10 /LOCK THE USR JMS I (7700 /(IN CASE OF ENTER) 10 CLA IAC /LOOKUP 'DATA30.TM' CIF 10 JMS I (200 2 DATBLK, DATNAM 0 JMP MAKDAT /NO FILE, GO MAKE ONE CIF 10 JMS I (200 /BOOT THE USR OUT 11 TAD DATBLK /TELL EVERYBODY WHAT WE KNOW DCA I (DATREC CLA CMA TAD DATBLK+1 /-LENGTH-1 DCA I (DATLEN TAD I (DOFFSET /THIS IS A REAL BLOCK, CIA /SO SUBTRACT THE OFFSET TAD DATBLK /FOR PASS 3 DCA I (SYSCOM TAD DATBLK+1 /DITTO DCA I (SYSCOM+1 TAD .+2 /THIS IS A ONCE-ONLY DCA DATASW /ROUTINE (LET'S KEEP JMP I DATLUK /IT THAT WAY!) MAKDAT, TAD (241 /CREATE A 10 BLOCK CIF 10 /DATA FILE (DATA30.TM) JMS I (200 /ENTER OUR FILE 3 DATNAM 0 JMP NODAT /DIDN'T MAKE IT (BOO-HOO) CLA IAC /CLOSE THE FILE (SYSTEM) CIF 10 JMS I (200 4 DATNAM 12 /10 (10) BLOCKS HLT /HUH? JMP DATASW+3 /NOW LOOK IT UP AGAIN! NODAT, CIF 10 /KICK OUT USR JMS I (200 /BEFORE FATAL ERROR 11 JMS I ERROR 5604 /ND (NO DATA) JMP I FATAL /GO BACK TO EDITOR DATNAM, FILENAME DATA30.TM PAGE
TGCH, 0 CLA CLL TAD MQ CLL RTL RTL RTL DCA MQ2 TAD MQ2 AND (7700 DCA MQ TAD MQ2 AND (37 RAL SNA JMP NXTWD TAD (-37 SNA TAD (-122 TAD (5 SPA SNA TAD (100 TAD (232 JMP I TGCH NXTWD, CDF 10 TAD I TGPTR CDF ISZ TGPTR SZA JMP TGCH+3 JMS I ERROR 4516 /EN JMP I (BOOT TAPOUT, 0 CDF 10 DCA I TBPTR CDF ISZ TBPTR ISZ OUTCNT JMP .+4 SCRERR, JMS I ERROR 6402 /TB JMP I (BOOT TAD TBPTR CIA TAD TGPTR SZA CLA JMP I TAPOUT TAD TBPTR AND (7400 DCA TGPTR TAD TGPTR CLL RTL RTL RTL CIA DCA TPAGES CDF 10 JMS I WRITE 0000 TPAGES, 0 SCRATCH ISZ .-1 ISZ TPAGES ISZ TPAGES JMP .-3 TAD TBPTR CIA TAD TGPTR DCA TWC DCA TBPTR TAD TWC SNA CLA JMP I TAPOUT CDF 10 TAD I TGPTR DCA I TBPTR ISZ TGPTR ISZ TBPTR ISZ TWC JMP .-5 CDF JMP I TAPOUT TGPTR, 400 TBPTR, 0 OUTCNT, -7200 TWC=TPAGES MQ, 0 MQ2, 0 PCH, 0 PRCH, JMP PCH1 LPC CLA LSF JMP .-1 JMP I PRCH PCH1, TLS CLA TSF JMP .-1 JMP I PCH PAGE
QERR, 0 ISZ ERRCT CLA CLL TAD I QERR JMS P2CH TAD Q240 JMS I LOC3 TAD ISTNO JMS XNUMOUT JMS QCRLF TAD I QERR SMA CLA JMP I QXFLUSH /PASS 1 FATAL ERROR EXIT ISZ QERR JMP I QERR XNUMOUT, 0 XXSNA, SNA JMP XNZRO DCA 0 TAD XXSNA DCA XNSWT TAD DIVARY DCA XR2 DVLP, TAD I XR2 SMA JMP I XNUMOUT DCA DIVSOR DCA QUO TAD 0 CLL TAD DIVSOR SNL JMP .+3 ISZ QUO JMP .-5 CIA TAD DIVSOR CIA DCA 0 TAD QUO XNSWT, SNA JMP DVLP TAD Q60 JMS P6CH TAD XNSKP DCA XNSWT JMP DVLP XNZRO, TAD Q60 JMS P6CH JMP I XNUMOUT DIVSOR, 0 QUO, 0 DIVARY, . -1750;-144;-12;-1;0 XNSKP, SKP P2CH, 0 DCA QUO KSF JMP .+4 KRS SNA CLA JMP I QBOOT TAD QUO RTR RTR RTR AND Q37 JMS P6CH TAD QUO AND L77 JMS P6CH JMP I P2CH P6CH, 0 SNA JMP I P6CH TAD QM40 SPA TAD Q100 TAD Q240 JMS I LOC3 JMP I P6CH QCRLF, 0 TAD L215 JMS I LOC3 TAD Q212 JMS I LOC3 JMP I QCRLF Q240, 240 QXFLUSH,XFLUSH Q60, 60 QBOOT, BOOT Q37, 37 QM40, -40 Q100, 100 Q212, 212 EJECT
AASTAB=. ERR=STXERR TRATAB, ERR;ERR;ERR;OPER;EOXARP XARLP;ERR;EOXARP;NUM;OPER;ERR;ERR;ERR OPEN;CLOSE;OPER;OPER;COMMA;OPER;NUM;OPER NUM;NUM;NUM;NUM;NUM;NUM;NUM;NUM NUM;NUM;ERR;EOXARP;LTSIGN;EQUAL;GTSIGN;ERR STTYPE, 0000-1405;LET 1405-2205;REM 2205-1116;INPUT 1116-0717;GOTO 0717-2324;STOP 2324-2022;PRINT 2022-0411;DIM 0411-1106;IF 1106-0617;FOR 0617-1605;NEXT 1605-0516;END 0516-0401;DATA 0401-0405;DEF 0405-0310;CHAINX 0310-2001;PAUSEX 2001-2722;WRITEX 2722-2201;RANDOMIZE 2201 /CONSTANT TO RESTORE WORD TO ORIGINAL VALUE STAB, 2000;2311;-16;3377 /SIN 2000;0317;-23;3477 /COS 2000;0530;-20;2777 /EXP 2000;1417;-07;3241 /LOG 2000;0124;-16;3177 /ATN 2000;1305;-31;3152 /KEY 2000;2216;-04;3530 /RND 2000;2321;-22;2447 /SQR 2000;0102;-23;2154 /ABS 2000;1116;-24;1540 /INT 2000;2307;-16;1737 /SGN 2000;2401;-02;0726 /TAB 2000;0310;-22;1556 /CHR$ 2000;2401;-16;1562 /TAN 1000;0;0;0 /LITERAL 0.0 1000;1;2000;0 /LITERAL 1.0 1000;7;2140;0 /LITERAL 70.0; USED BY TAB ROUTINE AT RUNTIME AALNGT=STAB-AASTAB SYMT=3000 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