File PASS3.PA (PAL assembler source file)

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

/PASS3 (EXECUTOR) OF EDUSYSTEM-30 BASIC
/
/15-DEC-71		R. LARY, P. KNUEVEN, B. SMITH
/
/COPYRIGHT 1971		OREGON MUSEUM OF SCIENCE & INDUSTRY
/			PORTLAND, OREGON

	FIXMRI FADD=1000
	FIXMRI FSUB=2000
	FIXMRI FMPY=3000
	FIXMRI FDIV=4000
	FIXMRI FGET=5000
	FIXMRI FPUT=6000
	FCHS=1
	FPUSH=2
	FPOP=3
	FENT=JMS I 7
	FNOR=7000
	FEXT=0000

	LSF=6661
	MTWO=CLA CLL CMA RAL
	MTHREE=CLA CLL CMA RTL
	IEXIT=7404
	IPEXIT=7406

	*1

TESTIO,	XPRTST
TWO,	7777	/RECEPTACLE FOR STATEMENT NUMBER
GETCH,	XGETCH
PUTCH,	XPUTCH
READ,	DREAD
POINTB,	TBUFF
	FPNT

	*10

LOC,	0
ADR,	0
STK,	7777		/TO MOVE THE PROGRAM DOWN
FPX,	0
TXR,	0
WXR,	0
DXR,	0

	*20

ADDR,	0
LIM,	-7375
SYMTBG,	3576
MP2,	0
MP5,	0
EXP,	0
HORD,	0
LORD,	0
OVER1,	0
EX1,	0
AC1H,	0
AC1L,	0
LOCTM,	0
TMP,	0
MQ,	0
FDCT,	0
DCT,	0
DEXP,	0
QUOL,	0
OVER2,	0
L77,	77
FPFAKE,	FLAG1
L7765,	7765
L7751,	7751
ILP,	LOOP
RAR1,	DIV1
MP4PT,	MP4
SBERR,	JMS I ERR
AAAER2=SBERR
M377,	-377
L17,	17
L7740,	7740
L240,	240
L100,	100
COLPTR,	7672
L13,	13
LP,	LOOP
NORM,	DNORM
OPMINS,	MINUS2
FPAC1,	0
H,	0
L,	0
	E=FPAC1

PUSH,	0
	TAD EXP
	DCA I STK
	TAD HORD
	DCA I STK
	TAD LORD
	DCA I STK
	CLL
	TAD STK
	TAD LIM
	SZL CLA
AAAER1,	JMS I ERR
	JMP I PUSH

POP,	0
	CLA CLL CMA RTL
	TAD STK
	DCA STK
	TAD STK
	DCA TXR
	TAD I TXR
	DCA EXP
	TAD I TXR
	DCA HORD
	TAD I TXR
	DCA LORD
	JMP I POP

LN2LNG,	LINETOOLONG
FTMP,	ITER1
CHS,	ACMINS
L5400,	5400
L260,	260
DPOINT,	256
L7771,	7771
CE,	305
QMARK,	277
L27,	27
IFIX,	FIX
RETURN,	BRETURN
IFLOAT,	FLOA
BASINT,	XBASINT
SWAP,	XSWAP
NUMFILL,-1
COL1,	7672
ERR,	XERR
NEG,	FNEG
RNDFDG,	RNDFUDGE
DBDIV,	DUBDIV
FUDGE2,	1461;3007
HOOK,	0
WRFLAG,	0
EXPLOG,	LOGEXP
IUNIT,	-310
ICNT0,	-310
L3,	3
PBWRT,	XPBWRT
L7747,	7747
CARRET,	215
LNFEED,	212
L2321,	2321
PFINT,	FINT
FSCAL,	SCALE
L6060,	6060
PBOOT,	BOOT
PDEBNOL,DEBNOL
SAFEPD,	SAVEPD-1
SAVEPD,	0
ICNT,	0
			/NOTE LOC 177 IS USED AS PART OF PG200
			/ANY CHANGE IN PAGE 0 MUST BE DUPLICATED
			/IN THE DUMMY PAGE 0 IN "BASEXR"

	PAGE

*177 ILPOP, JMS POP LOOP, TAD I LOC DCA MQ TAD MQ AND (377 DCA ADDR CLL CML RTR TAD MQ SZL CLA JMP NOADMD TAD ADDR SNA JMP TOPOSTK TAD SYMTBG DCA FPX TAD I FPX DCA ADR NOADMD, TAD MQ RTL RTL AND (7 RAL TAD (JMP I JTABL DCA .+1 HLT TOPOSTK,MTHREE TAD STK DCA STK TAD STK JMP NOADMD-1 SBCMPT, 0 TAD I FPX SMA JMP DUBSUB JMS SCONV SUBCOMN,IAC TAD AC1H DCA MQ TAD MQ RAL CLL TAD MQ TAD ADR DCA ADR JMP I SBCMPT SCONV, 0 CLL DCA TMP TAD EXP SPA SNA CLA TAD L7765 SZL JMP SBERR DCA AC1H TAD HORD SPA JMP SBERR CLL RAR ISZ AC1H JMP .-2 DCA AC1H CLL TAD AC1H TAD TMP SZL CLA JMP SBERR JMS POP JMP I SCONV DUBSUB, CMA JMS SCONV TAD I FPX DCA MP2 TAD AC1H JMS I MP4PT DCA ADDR TAD MP2 CIA JMS SCONV TAD ADDR JMP SUBCOMN BLDSUB, JMS SBCMPT BLOAD, JMS PUSH CDF 10 TAD I ADR DCA EXP TAD I ADR DCA HORD TAD I ADR CDF DCA LORD JMP LOOP BSTSUB, JMS SBCMPT BSTORE, TAD EXP CDF 10 DCA I ADR TAD HORD DCA I ADR TAD LORD DCA I ADR CDF JMS POP JMP LOOP BADD, JMS I FPFAKE FLAD BSUB, JMS I FPFAKE FLSU BMPY, JMS I FPFAKE FLMY BDIV, JMS I FPFAKE FLDV JTABL, BLOAD BSTORE BADD BSUB BMPY BDIV BEXP BGOTO BGOSUB BDOEND BLDSUB BSTSUB BWRITE BREAD BTEST BMICRO PAGE
BGOSUB, TAD ADDR TAD L7771 SMA SZA CLA JMP .+3 JMS I SWAP 3177 /FUNCTIONS-IN-CORE SWITCH TAD LOC DCA I STK CLL TAD STK TAD LIM SZL CLA AAAER8, JMS I ERR BGOTO, TAD ADR DCA LOC JMS I TESTIO /CHECK FOR READY PRINTER JMP I ILP BRETURN,STA TAD STK DCA STK TAD STK DCA ADR TAD I ADR JMP BGOTO+1 BTEST, CLL CML TAD HORD SNA JMP .+4 SPA CLA IAC IAC CLL RAL AND ADDR SZA CLA BDOFUJ, ISZ LOC JMP ILPOP BDOEND, TAD I LOC DCA TMP CLA STL RTL TAD TMP DCA FPX ISZ I FPX JMP BUMPVAR ISZ I FPX SKP JMP I ILP BUMPVAR,JMS PUSH JMS I (GETONE /FGET I ADR (FIELD 1) FENT FADD I TMP FEXT CDF 10 TAD EXP DCA I ADR TAD HORD DCA I ADR TAD LORD DCA I ADR CDF TAD L3 TAD TMP DCA LOC JMP BDOFUJ BDO, TAD I LOC DCA ADR ISZ LOC FENT FPUT I LOC FPOP FDIV I LOC / FADD HUNDTH /DON'T CHEAT FEXT TAD HORD SPA CLA JMP BGOTO /IF (HIGH-LOW)/STEP <0, DON'T EXECUTE LOOP JMS I IFIX DCA OVER2 ISZ LORD /BUMP BY ONE SKP ISZ HORD JMS I CHS DFLTEN, TAD LORD ISZ LOC ISZ LOC DCA I LOC TAD HORD DCA I LOC JMP ILPOP BMICRO, TAD ADDR TAD (JMP I MJTAB DCA .+1 HLT MJTAB, BRETURN BDO BSTOP BNEGATE BEXIT BRESTORE BPEXIT BCHAIN BPAUSE BSWIT /SWITCH TOP 2 ITEMS ON PD LIST - 3/17/70 BSTMT /RECORD STATEMENT NUMBER - 3/17/70 BRANDOMIZE BPUSH BSTOP, JMS I TESTIO TAD NUMFILL SMA CLA JMP BSTOP JMP I PBOOT BPEXIT, TAD LOC DCA ADR TAD LOCTM DCA LOC JMP I ADR /HUNDTH, 1;2000;0400 PCRLF, 0 TAD CARRET JMS I PUTCH TAD LNFEED JMS I PUTCH JMP I PCRLF PAGE
BREAD, JMS PUSH CLA CLL CMA RTL BWRITE, TAD ADDR TAD (JMP I WRRTN DCA .+1 HLT COLMLP, SNA JMP I ILP TAD (16 SPA SNA JMP COLMLP CLA COLOUT, JMS PBLNK TAD COLPTR TAD (16 SPA SNA JMP COLMLP CROUT, CLA PRTCR, JMS I CRLF TAD COL1 DCA COLPTR JMP I ILP XPBWRT, JMS PBLNK JMS POP TAD COLPTR SMA CLA JMP PRTCR JMP I ILP PRTXT=. PNXTWD, TAD I LOC DCA MQ TAD MQ RTR RTR RTR JMS P6CH TAD MQ JMS P6CH JMP PNXTWD P6CH, 0 AND L77 SNA JMP I ILP TAD L7740 SPA TAD L100 JMS PBLNK JMP I P6CH TTYINP TTYCHR TTYDAT WRRTN, TTYOUP COLOUT CROUT WRDATA PRTXT TABOUT CHOUT CRLF, PCRLF PBLNK, 0 TAD L240 JMS I PUTCH JMP I PBLNK BSTMT, TAD I LOC DCA TWO TAD ICNT SNA CLA JMP I ILP ISZ ICNT0 JMP I ILP TAD IUNIT DCA ICNT0 ISZ ICNT JMP I ILP AAAERB, JMS I ERR GETONE, 0 CDF 10 TAD I ADR DCA EXP TAD I ADR DCA HORD TAD I ADR CDF DCA LORD CLA CLL CMA RTL TAD ADR DCA ADR JMP I GETONE TABOUT, JMS I BASINT /ENTER BASIC INTERPRETER 7414 /PUSH AC 2421 /DIV 70 4012 /GOSUB INT 2021 /MPY 70 1400 /SUB (AC) 7406 /EXIT BASIC INTERPRETER JMS I IFIX TLOOP, TAD LORD TAD COLPTR TAD (106 SNA JMP ILPOP SMA CLA JMP GOLEFT JMS PBLNK JMP TLOOP GOLEFT, TAD CARRET JMS I PUTCH JMS I PUTCH TAD COL1 DCA COLPTR JMP TLOOP PAGE
BUFFER, TAD I SYSCM3 DCA STK TAD I SYSCM2 DCA LOC TAD I PLPTFLG SZA CLA TAD LPTDIF TAD TT1 DCA TT1 TAD TT1 IAC DCA LASTONE TAD LASTONE TAD L4 DCA TT3 TAD TT3 DCA TT4 JMP LASTONE REZOOM, TAD I PMAXINS CIA DCA ICNT JMP I XPUTCH SYSCM2, SYSCOM+2 SYSCM3, SYSCOM+3 PMAXINS,MAXINS PLPTFLG,LPTFLG LPTDIF, LSF-TSF L4, 4 *BUFFER+40 PBUFF, BUFFER BUFGET, BUFFER BUFPUT, BUFFER XGETCH, 0 JMS XPRTST KSF JMP .-2 JMS XPRTST TAD L200 KRS JMS XPUTCH KRB JMP I XGETCH XPUTCH, LOOP ISZ COLPTR NOP ISZ NUMFILL JMP OVLAP TT3, TLS JMP RTERN OVLAP, DCA ITEMP SKP /L.W.E. 7/9/69 THANKS WAIT, JMS I TESTIO TAD NUMFILL TAD L7740 SNA CLA JMP WAIT TAD ITEMP DCA I BUFPUT RTERN, CLA IAC CLL TAD BUFPUT AND L37 TAD PBUFF DCA BUFPUT JMP I XPUTCH XPRTST, REZOOM TT1, TSF JMP BRKCHK CLA CMA TAD NUMFILL DCA NUMFILL TAD BUFGET IAC AND L37 TAD PBUFF DCA BUFGET TAD NUMFILL SPA CLA JMP LASTONE TAD I BUFGET TT4, TLS CLA SKP LASTONE,TCF BRKCHK, KSF JMP I XPRTST WAITLP, KRS TAD (-203 /TEST FOR ^C SZA CLA JMP I XPRTST AND I 0 L37, 37 L200, 200 KCC CLA CMA DCA I (BREAK DCMA DTCA ISZ KZERO /MAKE SURE LAST TLS IS DONE EVEN ON 8/E WITH RF08 JMP WAITLP JMP I PBOOT KZERO, 0 /MUST BE INITIALLY ZERO ITEMP=. XERR, 0 CLA JMS I READ 3000 -1 ERREC TAD XERR JMP I .-4 PAGE
UV0, IEXIT AAAER4, JMS I ERR XSWAP, 0 TAD I XSWAP DCA TMP ISZ XSWAP TAD I TMP SNA JMP I XSWAP DCA STARTR JMS I READ 3000 -3 STARTR, 0 JMP I XSWAP XBASINT,0 TAD LOC DCA LOCTM CLA CMA TAD XBASINT DCA LOC JMP I ILP BEXP, TAD ADDR DCA PUSH FENT FPUT FPAC1 FEXT JMS I ONEGET /FGET I ADR (FIELD 1) TAD LORD SNA CLA TAD EXP SPA SNA JMP I EXPLOG TAD L7765 SMA SZA CLA JMP I EXPLOG TAD HORD DCA POP JMS I IFIX JMS I IFLOAT TAD HORD CIA TAD POP SNA CLA JMP I XPMULT JMP I EXPLOG ONEGET, GETONE XPMULT, MULTXP *.&7600+60 TBUFF, 0 PAGE
FPNT, 0 CLA CLL TAD (FPNT+4 DCA LP DCA OVER1 DCA OVER2 TAD I FPNT AND PAGENO CIA PAGENO, AND FPNT DCA ADDR TAD I FPNT AND (177 TAD ADDR DCA ADDR TAD I FPNT CLL RTL RTL AND L17 TAD (JMP I TABLE DCA JUMP SNL JMP LOOP01 TAD I ADDR DCA ADDR LOOP01, ISZ FPNT TAD I ADDR DCA EX1 TAD ADDR DCA FPX TAD I FPX DCA AC1H TAD I FPX DCA AC1L JUMP, 0 TABLE, EXIT FLAD FLSU FLMY FLDV FLGT FLPT NORF FLGT, TAD EX1 DCA EXP TAD AC1H DCA HORD TAD AC1L DCA LORD JMP I LP FLPT, TAD EXP DCA I ADDR ISZ ADDR TAD HORD DCA I ADDR ISZ ADDR TAD LORD DCA I ADDR JMP I LP FPRTN, TAD ILP DCA LP JMP I FPNT FLSU, JMS I OPMINS FLAD, JMS I (ALIGN JMS I (DIV2 JMS I RAR1 ISZ EX1 MASK5, 7600 TAD OVER1 TAD OVER2 DCA OVER2 RAL TAD AC1L TAD LORD DCA LORD RAL TAD AC1H TAD HORD DCA HORD NORF, JMS I NORM JMP I LP EXIT, TAD ADDR AND L17 SNA JMP FPRTN TAD (JMS I ACON6-1 DCA .+1 HLT JMP I LP ACON6, ACMINS PUSH POP FLMY, CLA IAC TAD EX1 TAD EXP DCA EXP JMP I (DMULT AAAINT, IEXIT JMS I IFIX JMS I IFLOAT JMP I RETURN BSWIT, FENT /SWITCH TOP TWO ELEMENTS ON PD LIST FPUT I FTMP FPOP FPUT FPAC1 FGET I FTMP FPUSH FGET FPAC1 FEXT JMP I ILP BEXIT, JMP I LOC CHOUT, JMS I IFIX TAD LORD JMS I PUTCH JMP ILPOP AAATAN, 7414 /PUSH AC 4002 /GOSUB COS 7411 /SWITCH 4001 /GOSUB SIN 2400 /DIV (AC) 7400 /RETURN PAGE
ACMINS, 0 CLA CLL TAD OVER2 CLL CIA DCA OVER2 CML RAL TAD LORD CIA DCA LORD CML RAL TAD HORD CIA DCA HORD JMP I ACMINS ALIGN, 0 TAD HORD SNA CLA JMP I (FLGT TAD AC1H SNA CLA JMP I LP JMS OUTGO SNA JMP I ALIGN SMA CIA DCA AMOUNT TAD AMOUNT TAD (30 SMA CLA JMP SHIFT JMS OUTGO SPA CLA JMP I (FLGT JMP I LP SHIFT, JMS OUTGO SPA CLA TAD (RAR1-DIV2&177 /(JMS I RAR1) - (JMS DIV2) TAD (JMS DIV2 DCA .+1 HLT /EITHER JMS I RAR1 OR JMS DIV2 ISZ AMOUNT JMP .-2 JMP I ALIGN AMOUNT, 0 OUTGO, 0 TAD EX1 CIA TAD EXP JMP I OUTGO DIV2, 0 CLL TAD AC1H SPA CML RAR DCA AC1H TAD AC1L RAR DCA AC1L TAD OVER1 RAR DCA OVER1 JMP I DIV2 MULTXP, JMS I (GETONE /FGET I ADR (FIELD 1) JMS I IFIX TAD LORD SPA CML CIA DCA HOOK RTR RAR TAD FMPFAC DCA MPYDIV FENT FGET ONE FPUT I FTMP FEXT ELP, TAD HOOK SNA JMP I ILP CLL RAR DCA HOOK SNL JMP .+5 FENT MPYDIV, 0 FPUT I FTMP FEXT FENT FGET FPAC1 FMPFAC, FMPY FPAC1 FPUT FPAC1 FGET I FTMP FEXT JMP ELP AAASGN, 7414 /PUSH AC 7006 /SKIP ON AC .NE. 0 7400 /RETURN 0020 /PUSH 1 7411 /SWITCH 7003 /SKIP ON AC .GE. 0 7403 /NEGATE 7400 /RETURN ONE, 0001;2000;0000 TTYCHR, JMS I GETCH DCA LORD DCA HORD JMS I IFLOAT JMP I ILP TTYOUP, JMS I SWAP 3176 JMP I (3400 AAAERC, IEXIT /IF THIS LOCATION CHANGES THE CONSTANT JMS I ERR / "REERR" IN PASS2 MUST BE ADJUSTED ACCORDINGLY PAGE
DIV1, 0 CLA CLL TAD HORD SPA CLL CML RAR DCA HORD TAD LORD RAR DCA LORD TAD OVER2 RAR DCA OVER2 CLL ISZ EXP NOP JMP I DIV1 DMULT, CLA CLL TAD SMACLA JMS SIGN TAD AC1L DCA MP2 TAD LORD JMS I MP4PT CLA TAD MP5 DCA OVER2 TAD HORD DCA MP2 TAD AC1L JMS I MP4PT TAD OVER2 DCA OVER2 RAL TAD MP5 DCA D RAL DCA KEEP TAD AC1H DCA MP2 TAD LORD JMS I MP4PT TAD OVER2 DCA OVER2 RAL TAD MP5 TAD D DCA D RAL TAD KEEP DCA KEEP TAD HORD DCA MP2 TAD AC1H JMS I MP4PT TAD D DCA LORD RAL TAD MP5 TAD KEEP DCA HORD RNDFUDGE, JMS I NORM / WRITTEN OVER BY RAND. NO. GENERATOR DCA OVER2 ISZ SGN JMP I LP BNEGATE, JMS I CHS JMP I LP FLDV, TAD AC1H SZA CLA JMP GOODDV AAAER6, JMS I ERR CLA CLL CMA RAR DCA AC1H TAD AAAER6 GOODDV, TAD EX1 CMA IAC TAD EXP IAC DCA EXP TAD (SPA CLA JMS SIGN JMS I DBDIV TAD AC1H SZL CLA IAC DCA AC1L DCA AC1H ISZ SGN JMS I CHS JMP I (FLAD+1 SIGN, 0 DCA SNSWIT CLA CLL CMA RAL DCA SGN TAD HORD SMACLA, SMA CLA JMP .+3 JMS I CHS ISZ SGN TAD AC1H SNSWIT, SMA CLA /OR SPA CLA JMP I SIGN JMS I OPMINS ISZ SGN NOP JMP I SIGN SGN, 0 D, 0 KEEP, 0 AAAABS, 7414 /PUSH AC 7003 /SKIP ON .GE. 0 7403 /NEGATE 7400 /RETURN BPUSH, JMS PUSH JMP I ILP PAGE
MINUS2, 0 CLA CLL TAD OVER1 CMA IAC DCA OVER1 TAD AC1L CMA SZL CLL IAC DCA AC1L TAD AC1H CMA SZL CLL IAC DCA AC1H JMP I MINUS2 MP4, 0 DCA MP1 DCA MP5 TAD (7764 DCA MP3 CLL TAD MP1 RAR DCA MP1 TAD MP5 SNL JMP .+3 CLL TAD MP2 RAR DCA MP5 ISZ MP3 JMP MP4+6 TAD MP1 RAR CLL JMP I MP4 MP1, 0 MP3, 0 DUBDIV, 0 CLL TAD L7751 DCA MP3 DCA QUOL JMP DVX DV3, TAD LORD RAL DCA LORD TAD HORD RAL DCA HORD DVX, TAD AC1L TAD LORD DCA MP2 RAL TAD HORD TAD AC1H SNL JMP DV2-1 DCA HORD TAD MP2 DCA LORD CLA DV2, TAD QUOL RAL DCA QUOL TAD OVER2 RAL DCA OVER2 ISZ MP3 JMP DV3 TAD QUOL DCA LORD TAD HORD CLL RTL DCA MP5 TAD OVER2 DCA HORD DCA OVER2 TAD MP5 JMP I DUBDIV LOGEXP, FENT FGET FPAC1 FEXT TAD PUSH SZA JMP .+4 ISZ STK ISZ STK ISZ STK TAD (2000 DCA .+3 JMS I BASINT 4004 HLT 4003 IPEXIT JMP I ILP LINETOOLONG, 0 JMS I BASINT 6002 6005 TEXT "TOO LONG." 6002 IPEXIT JMP I LINETOOLONG FIX, 0 TAD EXP SPA CLA TAD L7751 DCA EXP TAD EXP SMA CLA JMP I FIX JMS I RAR1 JMP .-4 FNEG, 0 JMS I CHS CLA CMA JMP I FNEG PAGE
DNORM, 0 JMS I TESTIO /CHECK FOR PRINTER READY CLA CLL DCA AMT1 TAD HORD SPA CLA JMS I NEG DCA SIGN1 TAD HORD SNA TAD LORD SNA TAD OVER2 SNA CLA JMP EXIT2 LOP, TAD HORD CLL RAL SPA CLA JMP EXIT1 TAD OVER2 CLL RAL DCA OVER2 TAD LORD RAL DCA LORD TAD HORD RAL DCA HORD ISZ AMT1 JMP LOP EXIT1, TAD AMT1 CIA TAD EXP EXIT2, DCA EXP DCA OVER2 ISZ SIGN1 JMP I DNORM JMS I CHS JMP I DNORM SIGN1, 0 AAASQR, IEXIT TAD HORD SNA JMP I RETURN SMA CLA JMP .+3 AAAER7, JMS I ERR JMS I CHS FENT FPUT FPAC1 FEXT TAD EXP CLL SPA CML RAR SZL IAC DCA EXP TAD SQCON1 DCA HORD DCA LORD ROOTGO, FENT FPUT ITER1 FGET FPAC1 FDIV ITER1 FADD ITER1 FEXT CLA CMA TAD EXP DCA EXP TAD EXP CIA TAD ITER1 SZA CLA JMP ROOTGO TAD HORD CIA TAD ITER1+1 SZA CLA JMP ROOTGO TAD LORD CIA TAD ITER1+2 SMA CIA IAC SPA CLA JMP ROOTGO JMP I RETURN SQCON1, 3015 ITER1, 0 0 0 FLAG1, 0 TAD ADDR /THE STACK IS NOT IN FIELD 1 SZA CLA CDF 10 TAD I ADR DCA EX1 TAD I ADR DCA AC1H TAD I ADR DCA AC1L CDF TAD I FLAG1 DCA FLAG1 DCA OVER1 DCA OVER2 JMP I FLAG1 AMT1=FLAG1 FLOA, 0 TAD L27 DCA EXP DCA OVER2 JMS I NORM JMP I FLOA TTYINP, CLA IAC AND I (KFLG SZA CLA AAAERD, JMS I ERR JMS I SWAP 3176 JMP I (FINPUT PAGE
DATREC, 0 DATCT, -1 *2604 /ENTRY POINT!! TAD I (SYSCOM+2 /START ADDRESS DCA LOC CDF 10 TAD I STK /INITIALIZED BY LOAD CDF DCA I LOC ISZ I (SYSCOM+4 /LENGTH OF PROGRAM JMP .-5 TAD (377 /BASE OF LITERALS DCA LOC CDF 10 TAD I STK DCA I LOC CDF ISZ I (SYSCOM+5 /LENGTH OF LITERALS JMP .-5 TAD LOC CIA TAD (7577 SNA /JUST IN CASE! JMP I (BUFFER /DO REST OF INIT CIA DCA TEMP CDF 10 /INITIALIZE VARIABLES TO ZERO DCA I LOC ISZ TEMP JMP .-2 CDF JMP I (BUFFER /DO REST OF INIT BCHAIN, ISZ .+6 BPAUSE, JMS I READ 3000 -2 ERREC JMP I .+1 3200 BRESTORE, JMS WRDAT DCA DATREC CLA CMA DCA DATCT JMP I ILP IOSUB, 0 JMS WRDAT TAD DATREC TAD I (SYSCOM DCA DREC ISZ DATREC CDF 10 JMS I READ 0000 -2 DREC, 0 CLA CMA DCA DXR TAD (-125 DCA DATCT JMP I IOSUB WRDAT, 0 TAD WRFLAG SNA CLA JMP I WRDAT CLL TAD DATREC TAD I (SYSCOM+1 SZL CLA AAAER9, JMS I ERR TAD DREC DCA WREC CDF 10 JMS I (DWRITE 0000 -2 WREC, 0 DCA WRFLAG JMP I WRDAT TTYDAT, ISZ DATCT SKP JMS IOSUB CDF 10 TAD I DXR DCA EXP TAD I DXR DCA HORD TAD I DXR DCA LORD CDF CLA CMA TAD HORD SNA CLA AAAER3, JMS I ERR JMS I NORM /NOT REALLY NECESSARY JMP I ILP WRDATA, ISZ DATCT SKP JMS IOSUB CDF 10 TAD EXP DCA I DXR TAD HORD DCA I DXR TAD LORD DCA I DXR CDF ISZ WRFLAG JMP ILPOP BRANDOMIZE,TAD FUDGE2 TAD I (RDTIM /POINTER TO EDITOR COUNTER FOR RANDOMIZE DCA FUDGE2 JMP I ILP PAGE
EDITLINE, 0 AGAIN, TAD QMARK JMS I PUTCH TAD L7660 DCA COUNT TAD BPTR DCA POINTB NEWCHAR,JMS I GETCH TAD M377 SNA JMP RUBFUJ TAD L0040 SNA JMP LEFTARROW TAD L0122 SNA JMP CRET TAD L3 SNA JMP NEWCHAR TAD LNFEED DCA I POINTB ISZ POINTB ISZ COUNT JMP NEWCHAR JMS I LN2LNG JMP AGAIN LEFTARROW, TAD BPTR CLL CMA TAD POINTB SNL CLA ISZ POINTB CLA CMA TAD POINTB JMP NEWCHAR-1 CRET, DCA I POINTB ISZ POINTB DCA I POINTB TAD LNFEED JMS I PUTCH TAD BPTR DCA POINTB TAD COL1 DCA COLPTR JMP I EDITLINE GETINT, 0 DCA EXP DCA HORD DCA LORD DCA COUNT MORE, TAD I POINTB TAD L7540 SNA JMP BLANK TAD L7747 L7540, SMA SZA /OH, THE SUAVENESS OF IT ALL! JMP NONDIG TAD L0011 SPA JMP NONDIG DCA DIGIT+1 FENT FMPY TEN FADD DIGIT L7660, 7660 /TAKEN AS A "NORMALIZE" BY THE F.P. PACKAGE FEXT ISZ COUNT BLANK, ISZ POINTB JMP MORE NONDIG, CLA TAD COUNT JMP I GETINT RUBFUJ, TAD L337 JMS I PUTCH JMP LEFTARROW L337, 337 L0122, 0122 BPTR, TBUFF L0040, 0040 L0011, 0011 DIGIT, 13;0;0 SMALLY, 1;2000 /SMALLY AND TEN SHARE THE LOCATION CONTAINING A 4 TEN, 4;2400;0 33;2765;7020 SCX, 0 SNA JMP I SCX CIA DCA TMP FENT SCALOP, HLT FEXT ISZ TMP JMP .-4 JMP I SCX SCALE, 0 CLL SPA CML CIA DCA ESW RTR RAR TAD MULTOP DCA SCALOP TAD L7770 AND ESW RTR CLL RAR JMS SCX CLA CLL CMA RTL TAD SCALOP DCA SCALOP TAD L7770 CMA AND ESW JMS SCX JMP I SCALE MULTOP, FMPY TEN+3 L7770, 7770 ESW=EDITLINE *3176 0 /MEANS I/O ROUTINES ARE IN CORE FUNCS /BLOCK OF FUNCTIONS PAGE
NEEDIN, JMS I (EDITLINE FINPUT, DCA SIGNFLAG RETRY, JMS I (GETINT SZA CLA JMP NUMBER TAD I POINTB ISZ POINTB SNA JMP NEEDIN TAD (7522 SNA JMP POINT IAC SZA JMP .+3 ISZ SIGNFLAG JMP RETRY CMA AND (7776 SNA CLA JMP FINPUT BADNUM, JMS I BASINT 6004 TEXT "BAD DATA-RETYPE FROM ERROR." 6002 7406 JMP NEEDIN NUMBER, TAD I POINTB TAD (7522 SNA CLA JMP POINT-1 TESTEE, TAD I POINTB TAD (7473 SNA CLA JMP EXPON-1 END, TAD I POINTB ISZ POINTB SZA TAD (7524 SZA CLA JMP BADNUM FINISHED, TAD SIGNFLAG SZA CLA JMS I CHS JMP I ILP ISZ POINTB POINT, JMS PUSH JMS I (GETINT CIA JMS I FSCAL FENT FPUT E FPOP FADD E FEXT JMP TESTEE ISZ POINTB EXPON, JMS PUSH GOAGAIN,JMS I (GETINT SZA CLA JMP GOTEXP TAD I POINTB ISZ POINTB TAD (7525 SNA JMP GOAGAIN TAD (7776 SZA CLA JMP BADNUM JMS I (GETINT CLA JMS I IFIX TAD LORD CIA JMP .+3 GOTEXP, JMS I IFIX TAD LORD DCA COUNT JMS POP TAD COUNT JMS I FSCAL JMP END SIGNFLAG=. FINT, 0 FENT FPUT I FTMP FEXT JMS I IFIX TAD L27 DCA EXP FENT FPUT E FNOR FSUB I FTMP FCHS FEXT JMP I FINT WKADR, 0;0;0;0;0;0;0;0;0 PAGE
TAD (JMP BLN DCA SKIPBL REENTRY,FENT FMPY I (SMALLY FEXT DCA OVER2 DCA DEXP DCA DCT TAD HORD SMA CLA SKIPBL, JMP BLN JMS I CHS TAD BUMPFP /NEED THAT 15 IN LOW-ORDER HALF OF WORD AT BUMPFP BLN, TAD L240 JMS I PUTCH TAD HORD SNA CLA JMP WRZERO CLA STL RTL TAD EXP CLL TAD L7751 SNL CLA JMP WRFFMT CLA CLL CMA RAL DCA TMP TAD L2321 DCA MP2 TAD EXP SMA JMP .+4 CIA IAC ISZ TMP JMS I MP4PT CLA TAD MP5 ISZ TMP CMA DCA DEXP TAD DEXP JMS I FSCAL TAD EXP SMA SZA CLA JMP WRFFMT IAC ISZ DEXP JMP .-6 WRFFMT, JMS I PFINT TAD (WKADR+7 DCA WXR TAD L7771 DCA FDCT JMS PUSH TAD H DCA HORD TAD L DCA LORD TAD L5400 DCA AC1H DCA AC1L DIVLUP, TAD L3 JMS I DBDIV RTL RTL DCA I WXR CLA CLL CMA RAL TAD WXR DCA WXR ISZ FDCT JMP DIVLUP JMS POP TAD L7771 DCA FDCT ISZ WXR BUMPFP, TAD I WXR SZA JMP NOT0 ISZ FDCT JMP BUMPFP JMP ZEROI TAD I WXR NOT0, TAD L260 JMS I PUTCH ISZ DCT ISZ FDCT JMP NOT0-1 JMS SIGTST ZEROI, TAD DPOINT JMS I PUTCH FRCTLP, JMS SIGTST CLA IAC JMS I FSCAL JMS I PFINT TAD L WRZERO, TAD L260 JMS I PUTCH ISZ DCT JMP FRCTLP WRRET, TAD DEXP SNA JMP I PBWRT CIA DCA HORD DCA LORD TAD CE JMS I PUTCH TAD L13 DCA EXP JMS I NORM ISZ SKIPBL ISZ SKIPBL JMP REENTRY SIGTST, 0 TAD DCT STL CMA RTL TAD DCT TAD (23 TAD EXP SMA SZA CLA TAD HORD SNA CLA JMP WRRET JMP I SIGTST COUNT=TMP PAGE
*4000 /LOADS INTO 3000 AAAEXP=.-1000 IEXIT TAD HORD SPA CLA JMS I NEG DCA ESIGN FENT FMPY LG2E FPUT X FEXT JMS I IFIX TAD LORD DCA FLAG2 JMS I IFLOAT FENT FSUB X FCHS FPUT X FMPY X FPUT XSQR FADD A+11 FPUT TEMP FGET A+6 FDIV TEMP FSUB X FADD A FPUT TEMP FGET A+3 FMPY XSQR FADD TEMP FPUT TEMP FGET X FDIV TEMP FADD EXP /MULT FLT AC BY 2 FADD I ONEPT FEXT TAD FLAG2 TAD EXP DCA EXP ISZ ESIGN JMP I RETURN FENT FPUT X FGET I ONEPT FDIV X FEXT JMP I RETURN A, 0004;2372;1402 7774;2157;5157 0012;5454;0343 0007;2566;5341 LG2E, 0001;2705;2435 ESIGN, 0 FLAG2, 0 X, 0;0;0 XSQR, 0;0;0 ONEPT, ONE TEMP=FPAC1 ARCALG, FENT FGET X FMPY X FPUT XSQR FMPY ALFZ+17 FADD ALFZ+14 FMPY XSQR FADD ALFZ+11 FPUT TEMP FGET ALFZ+6 FMPY XSQR FADD ALFZ+3 FMPY XSQR FADD ALFZ FMPY X FDIV TEMP FEXT JMP I .+1 ARCRTN-1000 ALFZ, 0000;2437;1643 7777;3304;4434 7773;3306;5454 0000;2437;1646 0000;2427;2323 7775;3427;7052 AAAKEY=.-1000 IEXIT LAS DCA LORD DCA HORD JMS I IFLOAT JMP I RETURN *4176 IORTNS /BLOCK OF I/O ROUTINES 0 /FUNCTIONS ARE IN CORE PAGE
AAAATN=.-1000 IEXIT TAD HORD SPA CLA JMS I NEG DCA ELAG1 FENT FPUT I (X-1000 FSUB I (ONE FEXT TAD HORD SPA CLA JMP GO FENT FGET I (ONE FDIV I (X-1000 FPUT I (X-1000 FEXT CLA CMA GO, DCA ADR JMP I (ARCALG-1000 ARCRTN, ISZ ADR JMP AEXIT FENT FSUB PIOT FCHS FEXT AEXIT, ISZ ELAG1 JMP I RETURN JMS I CHS JMP I RETURN ELAG1, 0 PIOT, 0001;3110;3755 AAALOG=.-1000 IEXIT TAD HORD SNA AAAER5=.-1000 JMS I ERR SPA CLA JMS I NEG FENT FPUT TEMP FSUB I (ONE FEXT TAD HORD SNA JMP I RETURN SMA CLA JMP START FENT FGET I (ONE FDIV TEMP FPUT TEMP FEXT CLA CMA START, DCA ELAG1 CMA CLL TAD TEMP SPA CML DCA LORD SNL CMA DCA HORD JMS I IFLOAT CLA IAC DCA TEMP FENT FMPY LOGE2 FPUT I (X-1000 FGET TEMP FSUB I (ONE FPUT TEMP FMPY LL2+11 FADD LL2+6 FMPY TEMP FADD LL2+3 FMPY TEMP FADD LL2 FMPY TEMP FADD LL1+11 FMPY TEMP FADD LL1+6 FMPY TEMP FADD LL1+3 FMPY TEMP FADD LL1 FMPY TEMP FADD I (X-1000 FEXT JMP AEXIT LL1, 0000;3777;7742 7777;4000;4100 7777;2517;0307 7776;4113;7211 LL2, 7776;2535;3301 7775;4746;0771 7774;2236;4304 7771;4544;1735 LOGE2, 0000;2613;4414 PAGE
AAASIN=.-1000 IEXIT TAD HORD SMA SZA CLA JMP MOD TAD HORD SMA CLA JMP I RETURN JMS I NEG MOD, DCA PNTR FENT FDIV TWOPI FPUT TEMP FEXT JMS I IFIX JMS I IFLOAT FENT FSUB TEMP FCHS FMPY TWOPI FPUT TEMP FSUB PI FEXT TAD HORD SPA CLA JMP PCHECK FENT FPUT TEMP FEXT TAD PNTR CMA DCA PNTR PCHECK, FENT FGET TEMP FSUB I (PIOT-1000 FEXT TAD HORD SPA CLA JMP PALG FENT FGET PI FSUB TEMP FPUT TEMP FEXT PALG, FENT FGET TEMP FDIV I (PIOT-1000 FPUT TEMP FMPY TEMP FPUT I (XSQR-1000 FGET C9 FMPY I (XSQR-1000 FADD C9+3 FMPY I (XSQR-1000 FADD C9+6 FMPY I (XSQR-1000 FADD C9+11 FMPY I (XSQR-1000 FADD I (PIOT-1000 FMPY TEMP FEXT ISZ PNTR JMP I RETURN JMS I CHS JMP I RETURN AAACOS=.-1000 IEXIT FENT FSUB I (PIOT-1000 FCHS FEXT JMP AAASIN+1000+1 TWOPI, 0003;3110;3755 PI, 0002;3110;3755 C9, 7764;2366;5735 7771;5466;6317 7775;2431;5053 0000;5325;0420 PNTR, 0 AAARND=.-1000 IEXIT TAD (JMP I HOOK DCA I RNDFDG TAD (RNDFIN-1000 DCA HOOK FENT FGET FUDGE3-1 FMPY FUDGE2-1 /FLOATING MULTIPLY INTERRUPTED RNDFIN, CLA CLL CMA RAR AND LORD DCA HORD TAD OVER2 RAR STL RAL DCA LORD TAD HORD DCA FUDGE2 TAD LORD DCA FUDGE2+1 DCA EXP JMS I NORM TAD .-1 DCA I RNDFDG TAD ILP DCA LP JMP I RETURN FUDGE3, 1461;3007 PAGE
/ERROR ROUTINE FOR BASIC - BUTCHERED AS OF 3/17/70 *5000 /GOES INTO 3000 ERRTN, DCA TEMP ERLP, ISZ PTX TAD I PTX SNA JMP TAD10 CMA TAD TEMP ISZ PTX SZA CLA JMP ERLP FOUNDIT,CLA CLL CMA RAR AND I PTX DCA ERCOD TAD10, TAD STK DCA TMPSTK TAD SAFEPD DCA STK JMS I BASINT 6002 6004 ERCOD=.+3 TEXT "ERROR ?? " 7406 CLA IAC AND I PDEBNOL SZA CLA JMP NOLINE TAD TWO DCA TTEMP DECWD, JMS DECDIG CLL RTL RTL RTL DCA PTEMP JMS DECDIG TAD PTEMP TAD L6060 DCA I DECWPT ISZ DECWPT ISZ NEG2 JMP DECWD JMS I BASINT 6004 0124 /"AT LINE " 4014 1116 0540 DLINE1, 0 DLINE2, 0 NEG2, -2 7406 NOLINE, JMS I BASINT 6002 7406 /LEAVE INTERPRETER JMS I TESTIO TAD NUMFILL SMA CLA JMP .-3 TAD RSM DCA ERRTN TAD I PDEBNOL SPA CLA HLT RESUME, TAD I PTX SMA CLA JMP I PBOOT TAD TMPSTK DCA STK JMP I TEMP PTX, LIST-1-2000 RSM, JMP RESUME LIST, AAAER0;0310 /ER0(CH) PTEMP, AAAER1;2320 /ER1(SP) TMPSTK, AAAER2;2323 /ER2(SS) TTEMP, AAAER3;0401 /ER3(DA) AAAER4;0616 /ER4(FN) AAAER5;1407 /ER5(LG) AAAER6;4460 /ER6(D0) AAAER7;6321 /ER7(SQ) AAAER8;0723 /ER8(GS) AAAER9;2722 /ER9(WR) AAAERA;6001 /ERA(PA) AAAERB;0317 /ERB(CO) AAAERC;2205 /ERC(RE) AAAERD;1116 /ERD(IN) 0;0 /DUMMY TO MAKE SURE UNKNOWN ERRORS ARE FATAL DECDIG, 0 DCA LIST /LIST ALREADY USED TAD TTEMP DIGELP, CLL TAD I PTENS SNL JMP .+3 ISZ LIST JMP DIGELP CIA TAD I PTENS CIA DCA TTEMP TAD LIST ISZ PTENS JMP I DECDIG PTENS, .+1-2000 -1750;-144;-12;-1 DECWPT, DLINE1-2000 *5176 IORTNS /I/O ROUTINES FUNCS /FUNCTIONS PAGE
NAME=FPAC1 CHTEMP=ASSEMB JMP PAUSEX CHAINX, TAD I CHRDTIM TAD FUDGE2 DCA I CHRDTIM CLA CMA DCA I CHCHAIN /SET CHAIN SWITCH JMS I TESTIO TAD NUMFILL SMA CLA JMP .-3 CHLOP, TAD I LOC /CONVERT PROGRAM NAME DCA CHTEMP TAD CHTEMP AND CH7700 CLL RAL SNA CLA JMP CHDONE TAD CHTEMP AND L77 TAD L7740 SNA CLA TAD L7740 TAD CHTEMP CHDONE, DCA NAME ISZ .-1 ISZ NEG3 JMP CHLOP TAD CH6360 /'.30' EXTENSION DCA NAME+3 CIF 10 JMS I CH7700 /CALL USR 10 CIF 10 JMS I ILP 1 /GET 'DSK:' CHDEV, DEVICE DSK CHHND, 7200 HLT /WHAT, NO DSK? TAD CHDEV+1 /LOOKUP FILE CIF 10 JMS I ILP 2 CHBLK, NAME NEG3, -3 AAAER0=.-2000 JMS I ERR TAD CHBLK /LOAD IT INTO TEXT AREA DCA WORD2 JMS I CHHND 3410 400 WORD2, 0 JMP I CHDERROR /DEVICE ERROR JMP P1LOAD /LOAD PASS 1 (KLUDGE) CHRDTIM,RDTIM CHCHAIN,CHAIN CH7700, 7700 CH6360, 6360 CHDERRO,DERROR CHJMP, JMP TREAD+2 PAUSEX, JMS I ERR AAAERA=PAUSEX-2000 HLT BINLDR, KCC RFC CLA OSR SNA JMP I ILP SMA CLA ISZ TREAD+1 JMS BEGG JMP .-1 BGO, DCA CHKSUM TAD CHAR DCA WORD1 JMS TREAD DCA WORD2 JMS BEGG JMP BEND JMS ASSEMB SNL JMP STORE DCA ORIGIN CHEX, TAD WORD1 TAD WORD2 TAD CHKSUM JMP BGO STORE, DCA I ORIGIN ISZ ORIGIN M200, 7600 JMP CHEX ASSEMB, 0 TAD WORD1 CLL RTL RTL RTL TAD WORD2 JMP I ASSEMB BEGG, JMS TREAD TAD M200 SPA ISZ BEGG SPA SNA CLA JMP I BEGG JMP BEGG+1 TREAD, 0 JMP .+1 JMP LOR RSF JMP .-1 RRB RFC DCA CHAR TAD CHAR JMP I TREAD LOR, KSF JMP .-1 KRB JMP LOR-3 BEND, TAD CHJMP DCA TREAD+1 JMS ASSEMB CIA TAD CHKSUM JMP BINLDR-1 CHAR=CHAINX CHKSUM=CHAINX+1 WORD1=CHAINX+2 ORIGIN, 0 *.&7600+174 /END OF PAGE P1LOAD, JMS I READ 0 -22 BPASS1 /LOAD OVER OURSELVES 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