File ASSEMTWO

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

*20
	EJECT
/		A  S  S  E  M  B  L  E  R     P  A  R  T  -  2
/
/	COMMONLY CALLED ASSEMTWO.
/
/
/
/
/		RECALL DEFINED SYMBOLS FROM ASSEMONE.
/
/
	LODSYM		/ L O A D   S Y M B O L S
/
/
/
/
	PMODE
/
/
/
/
	EJECT
/PDP-12 ASSEMBLER PAGE 14
/
/
	*3400
BIT6,	0
	TAD ITEM
	TAD M40
	SPA
	JMP P1TO37
	TAD M20
	SPA
	JMP P40T57
P60T77,	TAD P33
	JMP I BIT6
P40T57,	TAD P11
	SNA
	JMP TABA
	TAD P2
	SNA 
	JMP P367A
	TAD P2
	SNA
	JMP CARET
	TAD P57
	JMP I BIT6
P1TO37,	CLA
	TAD ITEM
	TAD M33
	SPA
	JMP ALPHAB
	TAD	BIT6M3
	SMA CLA
	JMP P367A
	TAD ITEM
	TAD P41
	JMP I BIT6
TABA,	TAD P54
	JMP I BIT6
CARET,	TAD P46
	JMP I BIT6
ALPHAB,	CLA
	TAD ITEM
	JMP I BIT6
P367A,	PTHREE
	JMS I ERR1
	JMP I .+1
	IDX+1
M20,	-20
P54,	54
P33,	33
P2,	2
P57,	57
P41,	41
P15,	15
P46, 46
BIT6M3,	-3
DISRET,	0
	JMS I TYCARI
	TAD ERTOT
	JMS I SOPS
	MTWO
	JMS I SKIP
	MTHREE
	DCA 16
LWD,	TAD  PTRA
	RTR
	RTR
	RTR
	AND P77
	TAD P300
	JMS I DECOUT
RWD,	TAD  PTRA
	AND P77
	TAD P300
	JMS I DECOUT
	ISZ LWD
	ISZ RWD
	ISZ 16
	JMP LWD
	JMS I TYCARI
JMP I DISRET
PTRA,	0522
	2217
	2223
PCONT,	7777
P43,	43
PAGSET,	0
	ISZ PCONT
	JMP COSA
	TAD M4
	DCA 16
	TAD P43
TATA,	TAD P212
	JMS I DECOUT
TAD P215
	JMS I DECOUT
	ISZ 16
	JMP TATA
	JMP I PAGSET
COSA,	TAD PCONT
	CIA
	TAD P76
	SZA CLA
	JMP I PAGSET
	CLA CMA
	DCA PCONT
	JMP I PAGSET
LINK8A,	0
CDY,	6211
	JMS I GYP
CDZ,	6201
	TAD TYPEA
	AND P1777
	SNA CLA
	JMP I LINK8A
	TAD TYPEA
	RTL CLL
	AND P6000
CDZZ,6211
	TAD I VADR
CDZZA, 6201
	DCA VAL
	JMP I LINK8A
GYP,	GETYPE
THOU, CLA CLL
	TAD LWC
	RTR
	RTR
	DCA CON
	JMP I C1A
C1A,	C
/
/
/
/
	EJECT
/PDP-12 ASSEMBLER PAGE 15
/
/
	*3600
CONVRT,	0
	AND P77
	DCA TEMP
	TAD TEMP
	TAD M47
M130,	SNA CLA
	JMP TABCV
	TAD TEMP
	TAD M40
	SPA
	TAD P100
	TAD P240
	JMP I CONVRT
TABCV,	TAD  P211
	JMP I CONVRT
P211,	211
UPLN,	0
	JMS I TYCARI
	TAD M26
	JMS I SKIP
	TAD M60A
	DCA 16
	JMP I UPLN
NOTBLK,	0
	TAD BINBLK
	JMS I SRITIC
	JMS SETUSE
	JMP I NOTBLK
GETYPE,	0
	TAD I SADR
	AND P6000
	DCA TYPEA
	ISZ SADR
	TAD I SADR
	AND	P4000
	CLL RTR
	TAD TYPEA
	DCA TYPEA
	ISZ SADR
	TAD I SADR
	RTR
	RAR
	AND P400
	TAD TYPEA
	DCA TYPEA
	TAD TYPEA
	AND P6000
	DCA TYPE
	MTWO
	TAD	SADR
	DCA SADR
	JMP I GETYPE
SETUSE,	0
	TAD BINBLK
	TAD M2360
	TAD STUP
	DCA TEMP
	CMA
	DCA I TEMP
	TAD BINPTR
	JMS I SRD1
	TAD BINPTR
	DCA BINBLK
	JMP I SETUSE
STUP,BLKUSE
M26,	-26
M60A,	-60
M2360,	-2000-D7
RESETL,	0
	TAD AADR
	AND P6000
	DCA	ABANK
	JMP I RESETL
GETIN,	0		/GET A CHARACTER
	JMS I GETCHR
	DCA ITEM
	TAD PASS
CONSKP,	SPA CLA
	JMS I SYMLST
	TAD ITEM
	JMP I GETIN
CONYES,	SPA CLA
COMMEN,	TAD	CONYES		/SPA FOR NORMAL,SKP FOR ABBREVIATED!!
	DCA	CONSKP
	JMS	GETIN
	TAD M43
	SZA CLA
	JMP	COMMEN
	TAD	CONREG
	DCA	CONSKP
	JMP I	BITT
BITT,	BIT
JBBACK,	SYMBU
/
/
RAND,	0
	AND	CON
	DCA	CON
	JMP I	RAND
/
/
/
/
ENDMS,	TAD	PASS
	SPA CLA
	JMP I	RET1
	JMP I	MAINEX
/
/
/
PGJS,	0
TAD LISTWD
CONREG,	SPA CLA
JMP I PGJS
TAD I PCOT
	TAD	M130		/CLOSE ENOUGH TO -77 (UGH!!)
DCA 17
JMS I TYCARI
ISZ 17
JMP .-2
JMP I PGJS
PCOT,PCONT
LNCK,	0
	ISZ 16
	JMP .+2
	JMS UPLN
	JMP I LNCK
SPACK,	0
	DCA TEMP
	TAD TEMP
	CIA
	TAD 16
P100,	SMA			/TOO FAR???
	CLA CMA			/YEP. SET BACK TO END OF LINE
	DCA 16
	TAD TEMP
	JMP I SPACK
	EJECT
/
/
/
/
/
	/ASSEMBLER PAGE16   !!!!
	*4001		/4000 IS THE JMP RET STORE IN LMODE.
	DISRE,	DISRET
	*4002
FSBLK,	1000+D7
PSPCHR,	7000+D6+43
P6LMD,	6000+D6+42
AALPHA,	ALPHA
	*4006		/CHANGE FOR D BUFFERS
PPWAIT,	WAIT
MONIT,	JMS I	PPWAIT		/IF 8K WAIT FOR TAPE OPERATIONS TO BE COMPLETED.
CLA1=.-1		/REPLACE BY A CLA IF 4K
	LINC
	LMODE
	LDF 1
	AXO		/CLEAR EXTENDED FUNCTIONS.
	RCG I	E7		/REBOOTSTRAP
	3000+D6+14
	LDF 3
	RCG I	E7
	7000+D6		/MUST GO AT 4017 FOR GOOD REBOOTSTRAP.
	PMODE
SREAD0,	0		/ROUTINE TO READ IN OFF TAPE 0
	DCA	.+3		/STORE AC(AC IS THE ARG.)
LINCC4,	JMS I	LTREAD
	LMODE		/SEE BEGINNING OF ASSEMONE TO SEE HOW TAPE I/O WORKS.
	RDC
	0
	CLR
	PDP
	PMODE
	JMP I SREAD0
LTREAD,	READ
BUFIN,	0		/GETS NEXT BUFFER FROM INPUT UNIT.
	CLA CLL
	LINC
	LMODE
	NOP		/FOR EXTENDED UNITS WHEN READY
NOP6,	PDP
	PMODE
NOP5,	JMS I	LTREAD
	LMODE
	RDC
BUFINZ,	0
	CLR
	PDP		/NOPS IN 8 MODE
	PMODE
	ISZ	BUFINZ
	JMP I	BUFIN
INIT,	0		/INITIALIZATION ROUTINE: CALLED AT BEGINNING OF EACH PASS.
	JMS I TYCARI
	TAD FSBLK
	DCA BUFINZ
	TAD P2270
	DCA BINBLK
	TAD P7400
	DCA I CHO
	DCA I WDH
	TAD P4400
	DCA I PTB
	JMS	BUFIN
	DCA	MODE		/RESET TO LMODE AND READ IN SYMBOL TABLE.
	LINC
	LMODE
LDFB,	LDF 7
NOP4,	PDP
	PMODE
NOP3,	JMS I	LTREAD
	LMODE
JBI1,	RDC I
	6000+D6+42
	PMODE
NOP2,	JMS I	LTREAD
	LMODE
JBI2,	RDC
	7000+D6+43
	PMODE
NOP1,	LINC
	LMODE
	LDF 3
	PDP
	PMODE
	CLA CMA
	DCA CURLIN
	JMP I INIT
P2270,	2000+D7+10
WDH,	WDHALF
TOUSE,	SETUSE
USES,	USEDNO
CHO,	CHRC
P4400,	4400
PTB,	PTBUFP
RETURN,	TAD	BINBLK		/MAIN EXIT AFTER PASS2. WRITES OUT SYMBOLS, DUMPS BUFFERS, ETC.
	JMS I SRITIC
	JMS I TOUSE
	TAD  USES
	DCA 16
	TAD M40
	DCA 17
	DCA I	USES
	TAD I 16
	SPA CLA
	ISZ I	USES
	ISZ 17
	JMP .-4
	TAD	BINHDR		/WRITE OUT HEADER BLOCK
	JMS I	SRITIC
NOP10,	JMS I	JBMTD6		/MOVE TOWARD DIAL IF 8K.
	JMS I	DISRE
	JMS I	AALPHA
	JMS I	PSTS
	JMP I	MON
PSTS,PGJS
JBMTD6,	JACKBU
SENDAR,	SENDER
P4300,	4000+D8
P5301,	5000+D8+1
NOS,	TAD AADR
	AND P3777
	JMP PDLK
PERIOD,	ISZ ANY
	TAD MODE
	SMA CLA
	JMP LINKDT
	TAD AADR
PDLK,	JMS I SGN
	JMS I IDX1
	JMP I B21
LINKDT,	TAD AADR
	AND P6000
	CIA
	TAD ABANK
	SZA CLA
	JMP NOS
	TAD AADR
	AND P1777
	JMP PDLK
BINHDR,	D7+57		/ADDRESS OF HEADER BLOCK ON TAPE 1.
REDOP,	0
	CLA CLL
	LINC
	LMODE
	LDF	3
	PDP
	PMODE
	TAD	REFUDGE
CLA2,	JMS	SREAD0
	JMP I	REDOP
REFUDGE,	6\FUDGE5
	EJECT
	/ASSEMBLER PAGE 17
	*4200
SWRC,	0
	DCA .+3
LINCC3,	JMS I	WWRITE
	LMODE
	WRC U
	0
	CLR
	PDP		/NOPS IN 8 MODE
	PMODE
	JMP I SWRC
WWRITE,	WRITE
RSUB,	0
	DCA SOMEW
	TAD CON
	DCA SUBCON
	TAD MODE
	SMA CLA
	JMP LNKSUB
	TAD SOMEW
	CIA
	TAD CON
RSUBRT,	DCA CON
	JMP I RSUB
LNKSUB,	LINC
	LMODE
	LDA I
SOMEW,	0
	COM
	ADA I
SUBCON,	0
	MSC 2
	PMODE
	JMP RSUBRT
RADD,	0
	DCA WHERE
	TAD CON
	DCA ADDCON
	TAD MODE
	SMA CLA
	JMP LNKADD
	TAD WHERE
	TAD CON
RADDRT,	DCA CON
	JMP I RADD
LNKADD,	LINC
	LMODE
	LDA I
WHERE,	0
	ADA I
ADDCON,	0
	MSC 2
	PMODE
	JMP RADDRT
SWRIT1,	0
	DCA .+3
LINCC2,	JMS I	WWRITE
	LMODE
	WRI U
	0
	CLR
	PDP		/NOPS IN 8 MODE
	PMODE
	JMP I SWRIT1
/
/
/			PSEUDO OP SETTER AND PAGER
/
/		GIVEN PSEUDO FALLS THROUGH ISZ CHAIN. THIS SETS OP1 TO PSEUDO NUMBER.
/ROUTINE PAGES IN PSEUDO OP PROCESSOR WITH NUMBER IN AC. PROCESSOR DOES THE REST.
/FOR 8K,  PSNOPS ARE MADE INTO NOPS, AND PPSEUDO IS CHANGED.
/
PSUDO7,	ISZ	OP1
PSUDO6,	ISZ	OP1
PSUDO5,	ISZ	OP1
PSUDO4,	ISZ	OP1
PSUDO3,	ISZ	OP1
PSUDO2,	ISZ	OP1
PSUDO1,	CLA CLL
PSNOP1,	TAD	POUT
PSNOP2,	JMS	SWRIT1
PSNOP3,	TAD	PIN
PSNOP4,	JMS I	PSREAD
	TAD	OP1
	JMS I	PPSEUDO
PAFTER,	DCA	PSRET
	DCA	OP1
PSNOP5,	TAD	POUT
PSNOP6,	JMS	SREAD1
	JMP I	PSRET
POUT,	2\FUDGE3
PIN,	2\FUDGE4
OP1,	0
PSRET=SWRIT1		/GOOD FOR IT
PSREAD,	SREAD1
PPSEUDO,	PSEUDO+PFUDGE		/PSEUDO + CORRECT ORIGIN
SREAD1,	0
	DCA .+3
LINCC1,	JMS I	WREAD		/CHANGE TO LINC
	LMODE
	RDC U
	0
	CLR
	PDP		/NOPS IN 8 MODE
	PMODE
	JMP I SREAD1
WREAD,	READ
POPUP1,	0		/PUT LAST ENTRY IN PUSH
	CLA CMA
	TAD POINT
	DCA POINT
	TAD I POINT
	JMP I POPUP1
*4336
SENDER,	0
USEDNO,	0
*4340
BLKUSE=.
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
*BLKUSE+37
	EJECT
/     M A I N   I N I T I A L I Z A T I O N   O F   T H E   A S S E M B L E R
/
/
/
/
/
/
	*5000
BEGNLI,	CLA		/ENTRY IF LIST IS DESIRED.
	SKP
BEGNAS,	CLA CMA		/ENTRY IF JUST ASSEMBLY.
	DCA	LISTWD		/SAVE LIST STATUS CONDITION.
	TAD I	P4775		/4775 CONTAINS STARTING LINE NUM. OF LISTING
	DCA I	PJSTART
	TAD I	P4776		/4776 CONTAINS ENDING LINE NUM. STASH IT AWAY PERMANENTLY.
	DCA I	PJEND
	TAD	LISTWD
	SNA CLA
	JMP	.+4
	TAD	.+1
JBNOP,	NOP
	DCA I	PJNOP		/IF NO LIST THEN FIX JBTEST SO IT CAN NEVER LIST OUT.
	JMP	PJNOP+1
PJEND,	JEND
PJSTART,	JSTART
P4775,	4775
P4776,	4776
P4774,	4774
BANOP1,	ABNOP1
BANOP2,	ABNOP2
BANOP3,	ABNOP3
BANOP4,	ABNOP4
BANOP5,	CONYES
BANDO,	SKP CLA
BLTAD,	1200+M7TWO-ENTS
BLTAD1,	NOTAB1
BLTAD2,	NOTAB2
BLM10,	-10
BLPM22,	M22
PJNOP,	JNOP
	ISZ I	P4774		/4774=7777 IF QUICK LIST.
	JMP	LISREG		/NO QUICK LIST.
	TAD	JBNOP		/CHANGE LIST ROUTINE FOR QL BY ALL FOLLOWING CRAP.
	DCA I	BANOP1
	TAD	JBNOP
	DCA I	BANOP2
	TAD	JBNOP
	DCA I	BANOP3
	TAD	JBNOP
	DCA I	BANOP4
	TAD	BANDO
	DCA I	BANOP5
	TAD	BLTAD
	DCA I	BLTAD1
	TAD	BLTAD
	DCA I	BLTAD2
	TAD	BLM10
	DCA I	BLPM22
LISREG,	TAD I	INAS
	DCA I	MAINEX		/INITILIZE TO PASS1.
	LINC
	LMODE
	LDF	3
	RDC I	U		/THIS CHECKS UNIT 1 TO SEE IF ASSEMBLER EXISTS ON IT.
	7000+FUDGE4		/LOAD IN OVERLAY TO SEE
	LDA			/IF PRESENT.
	7400		/FIRST WORD
	SAE I
	1202		/"JB" IN OCTAL
	JMP	KALWLA		/NOT THERE
	LDA
	7401		/VERSION NUMBER
	SAE I
	4360+VERSION		/TEST WEHTER VERSIONS THE SAME.
	SKP
	JMP	SYMOK		/IT S  THERE. SKIP PAST CHANGES.
KALWLA,	CLR		/SET UNIT1 SYM REFS TO UNIT 0
	ADD	.-1
	STC	SYMBAD
	LDA I
	SREAD0		/SWAP PSEUDO OPS OFF UNIT0 NOW, NOT 1.
	STA		/CHANGE TO UNIT 0
	PSREAD		/FOR PSEUDO OPS
	LDA I
	RDC I
	STA
	CUNIT1
	STC	CUNIT2
SYMOK,	PDP
/
/
/		CHECK FOR 8K RIGHT NOW.
/
/
	PMODE
CH8OR4,	CDF	010
L8OR4L,	MTHREE		/SAVE -3 IN UPPER CORE
	DCA I	L8OR4L
	CDF	0
	DCA I	L8OR4L
	CDF	10
	PTHREE		/IS -3 STILL THERE????
	TAD I	L8OR4L
	LINC
	LMODE
	AZE I
	JMP	UGOT8K		/STILL THERE. HE S GOT   8K!!
	LDA I			/TSK,TSK.. ONLY 4K
	7000
	LDF 0
	STA		/WE ARE NOW CHANGING ALL THE CDF 10 S  TO NOPS.
	CDA+2000
	STA
	CDC+2000
	STA
	CDD+2000
	STA
	CDE+2000
	STA
	CDFF+2000
	STA
	TAABA+2000
	STA
	CDG+2000
	STA
	CDH+2000
	STA
	CDI+2000
	STA
	CDJ+2000
	LDF 1
	STA
	CDK
	STA
	CDL
	STA
	CDFM
	STA
	CDFN
	STA
	CDO
	STA
	CDP
	STA
	CDR
	STA
	CDT
	STA
	CDU
	STA
	CDV
	STA
	CDW
	STA
	CDX
	STA
	CDY
	STA
	CDZ
STA
CDZZ
STA
CDZZA
	LDA I
	LDF 3
	STA
LDFA+2000
	STC LDFB
	LDA I
	7377
	LDF 0
	STA
	TOP+2000
	LDA I
	7577
	STA
	STAB+2000
	LDA I
	MOVE4
	STA
	MOVE1+2000
	LDA I
	SDECO4
	STA
	SDECO1+2000
	LDF	2
	LDA I		/NOW CHANGE ALL THE I/O ROUTINES.
	NOP
	STA
	NOP1
	STA
	NOP2
	STA
	NOP3
	STA
	NOP4
	STA
	NOP5
	STA
	NOP6
	LDF	1
	STA
	NOP7
	STA
	NOP8
	STA
	NOP9+2000
	STA
	NOP10
	LDF	2
	LDA I
	6141		/LINC
	STA
	LINCC1
	STA
	LINCC2
	STA
	LINCC3
	STA
	LINCC4
	LDA I
	7300		/CLA IN 8 MODE
	STA
	CLA1
	STA	CLA2
	JMP	ALLSET		/ALL THINGS SET
/
/		END OF CHANGES FOR 4K MACHINE.
/
/
/
/
UGOT8K,	LDF	2
	LDA I		/READ IN READ,WRITE, PSEUDO AND PRINTER ROUITINES.
	7764		/NEW UNIT MASK
CUNIT1,	RDC I	U
	7000+FUDGE1		/FIRST BLOCK OF VERLAY
	LDF	3
CUNIT2,	RDC I	U
	4000+FUDGE2		/SECOND BLOCK OF OVERLAY
	LDF	1		/SET UP PRINTER CHECK
	LDA I		/ NOW CHANGING TTY ROUTINE TO CALL LINE PRINTER CHECK ROUTINE.
	TYPO+3202		/TYPE=2571+3202=5773(JMP I TYPO+2)
	STA
	TYPO+1
	LDA I
	LPTEST
	STA
	TYPO+2
	LDA I
	0010
	AXO		/ENTER NO-PAUSE MODE FOR OVERLAPPED I/O
	PDP
	PMODE
	JMS I	PSDOEX		/READ IN PSEUDO OP PROCESSOR.
	LINC
	LMODE
/
/
/		END OF 8K SETUP
/
/
/
/
/
ALLSET,	LDF	3
	LDA
	777
	ROL	3
SYMBAD,	COM
	LIF	1
	JMP	JBSETU
	LDF	3
	PDP
	PMODE
	CLA CLL
	TAD I	PUNITAS
	RAR
	CLA RTL
	RTL
	TAD I	PBUFINZ
	DCA I	PBUFINZ
	JMS I	INIT1
	JMP I	MAINEX
/START THE ASSEMBLER GOING RIGHT NOW...
/
/
/
PUNITAS,	UNITAS
PBUFINZ,	BUFINZ-1		/CORRECT UNIT
PSDOEX,	PS8K
/
/
/
	EJECT
/		PSEUDO OP PROCESSOR. IT REALLY IS ORIGINED AT
/	5000 FOR 4K, BUT IT WOULD THEN OVERLAY THE INITIALIZATION ROUTINE.(AT ASSEMBLY).
/THUS ITS ASSEMBLED AT 7000 BUT PFUDGE MAKES THE INTERPAGE REFERENCE LOOK LIKE IT S AT 5000.
/ THE 8K VERSION IS REALLY ORIGINED AT 7000. I GENERALLY CHANGE THE INTERPAGE
/REFERENCES BY HAND(THERE S  ABOUT 6 ON THIS PAGE AND 3 ON THE NEXT PAGE.)
/ALL INTERBANK REFERENCE HAVE A +PFUDGE
/TO THE DATA ITEMS.
/REMEMBER, THIS IS FINE AS IS FOR "FUDGE4". FOR FUDGE5 ADD 2000 TO INTERBAGE REFERENCES.
/
/
/
/
/
/
/
	*7000		/NEW LOCATION OF PSEUDO PROCESSOR
/
/
PFUDGE=5000-.
/
/	MAIN PSEUDO OP PROCESSOR. PAGED IN!
/
/
/
ACOUNT,	1202		/"JB" ON THE TAPE; IN CORE IT S A TEMPORARY
GETVAL,	4360+VERSION		/VERSION NUMBER ON TAPE. IN CORE IT S
			/A SUBROUTINE ENTRY. 
			/NO.7
			/  (CHECKS UNIT 1 TO SEE
			/IF PRESENT AND IF IT IS USES UNIT
			/1 TO READ IN THIS PAGE
/
	JMS I	EXPR1
	TAD	ANY
	SNA CLA
	JMP	ASSNO
	TAD	EVAL
	JMP I	GETVAL
/
/GETVAL EVALUATES THE EXPRESION TO THE RIGHT OF A PSEUDO OP.
/IF NO EXPRESSION THEN IT EXITS.
/BACK TO THE MAIN ASSEMBLER WITHOUT DOING ANYTHING.
/
/
/
/
/
PSEUDO,	PAFTER		/RETURN IF OVERLAYED BY ITSELF.
	TAD	PJMP
	DCA	.+1
	JMP	.+1		/OVERLAYED BY PSEUDO NO.
PJMP,	JMP	.+1		/MAIN TABLE POINTER
	JMP	NASSIF		/EVIL IF SPELLED RIGHT
	JMP	ZASSIF
	JMP	MASSIF
	JMP	SYMLOD
	JMP	AEJECT
	JMP	SYMSAV
	JMP	SKIPAS
/
/
/END OF JUMP TABLE. PSEUDO WAS CALLED WITH PSEUDO OP NUMBER IN AC.
/
/
/
/
/
NASSIF,	TAD	AMM10
ZASSIF,	TAD	M40
MASSIF,	TAD	L7710
	DCA	.+2		/STORE CORRECT SKP AFTER EVALUATING EXPR.
	JMS	GETVAL
	0
	JMP	ASSNO		/WRONG SKIP CONDITION. ASSEMBLE NEXT.
ASSDO,	CLA CMA		/DO AN ASMSKP 1.
	JMP	ASSYIN
SKIPAS,	JMS	GETVAL
	CIA
	SNA		/NUMBER TO BE SKKIPED. IF ZERO EXIT.
	JMP	ASSNO
ASSYIN,	DCA	ACOUNT
	TAD	ITEM
	TAD	M43		/WAS DOLLAR TERMINATOR.
	SZA CLA
	CLA CMA		/NO. ADD 1 TO SKIP BECAUSE OF END OF THIS STATEMENT.
	TAD	ACOUNT
	DCA	ACOUNT
	TAD	PACHECK
	DCA I	PSWITCH
	TAD	ASEND
	DCA I	PDOLLAR
	TAD	AMAINPS
	DCA	PMAINSA
	JMP I	.+1		/AFTER SETTING SWITHCES EXIT TO PICK UP NEXT STATEMENT.
AFDRT,	FDRT
ACHECK,	CLA CLL
	TAD	ITEM
	TAD	M43
	SNA CLA
	JMP	ASPAST
	JMS I	IDX1
	JMP	.-5		/WAIT FOR END OF THIS LINE.
ASPAST,	ISZ	ACOUNT
	JMP I	PMAINSA		/NOT DONE YET. PICK UP NEXT STATEMENT TO SKIP.
ASSRST,	TAD	PDOCAL
	DCA I	PSWITCH
	TAD	PENDMS
	DCA I	PDOLLAR
	TAD	PMAINSA
	JMP I	PSEUDO		/RESET SWITCHES AND EXIT.
APAEND,	CLA CLL
	TAD	PENDMS
	DCA	PMAINSA
	JMP	ASSRST		/END OF MANUSCRIPT
/
/
/
/
/
/
/
ASSNO,	TAD	AFDRT
	JMP I	PSEUDO		/GENERAL EXIT.
/
/
/
/
AMM10,	-10
ASEND,	APAEND+PFUDGE
AMAINPS,	MAINSA
PMAINSA,	MAINSA
PSWITCH,	PSINTER
PACHECK,	ACHECK+PFUDGE
PDOCAL,	DOCAL
PDOLLAR,	FINEND
PENDMS,	ENDMS
/
/
/
/
AEJECT,	JMS I	EXPR1		/JUST TO SCAN TILL END OF LINE.
	JMS I	PASSEK		/GET THE PASS NO.
L7710,	SPA CLA		/ALWAYS SKIPS BECAUSE AC=0
	JMP	ASSNO		/NOT LIST OR NOT PASS2
	TAD I	PM60A		/IF LP THEN M60=-140
	TAD	P77		/JUST AN IN BETWEEN NUMBER
	SMA	CLA		/IS PRINTER THERE???
	JMP	ASSNO		/NOPE. LINE PRINTER ISN T   THERE
	CLA CMA		/YES. SET PAGE POINTER TO EJECT.
	DCA I	AEPONT
	JMP	ASSNO
/
AEPONT,	PCONT
/
/
/
/
SYMSAV,	JMS	GETVAL
	TAD	PASS
	RAR
	SNL	CLA
	JMP	ASSNO		/INCORRECT PASS NO.!!
	JMS	SYMIN
	TAD	SEND		/NUMBER OF DEFINED SYMBOLS.
	DCA I	VL4777
	TAD	VBUF2
	JMS I	YWRITE
	JMS I	RROPS
	JMS I	PV8OR4K
	JMP I	PV8MOVE
	JMP I	PV4OUT
YWRITE,	SWRIT1
YREAD,	SREAD1
VL4777,	4777
PV8OR4K,	V8OR4K+PFUDGE
PV8MOVE,	V8MOVE+PFUDGE
PV4OUT,	V4OUT+PFUDGE
SYMIN,	0
	TAD	VBUF1		/SWAP OUT 4400 AND SWAP IN THIS PAGE.
	JMS I	YWRITE
	TAD	VBUF2
	JMS I	YREAD
	JMP I	SYMIN
SYMLOD,	TAD	PASS
	SZA CLA
	JMP	NASSIF		/DO NOT LOAD SYMBOLS IF PASS2
	JMS	SYMIN
	TAD I	VL4777
	DCA	SEND		/GET NUMBER OF SAVED SYMBOLS
	JMS I	RROPS		/REPAGE IN OVER THIS. NECESSARY IN 8K VERSION
	JMP I	VINIT	/BECAUSE SAVSYM AND LODSYM DISTROY THEMSELVES.
VINIT,	VVINIT+PFUDGE
VBUF1,	1\BOTEMP
VBUF2,	1\FUDGE4
RROPS,	REDOP
/
/
/
/
/
/
/
	EJECT
	*5000-PFUDGE+200
/
/
/	SPECIAL PSEUDO OP READ-WRITE ROUTINE TO MAKE LIVE EASIER.
/
SREAD,	0
	TAD	SREAD
	DCA	SWRITE
	TAD	APSREAD1
	JMP	SWRITE+2
SWRITE,	0
	TAD	PSWRITE1
	DCA	SOP
	TAD I	SWRITE
	CLL RTL
	ISZ	SWRITE
	DCA	SREAD
	TAD I	SWRITE
	RTL
	RAL
	AND	P7		/CHOP OFF LOW BITS
	TAD	SREAD
	TAD	SWL640		/SET DF
	DCA	SWF
	TAD I	SWRITE
	ISZ	SWRITE
	RAL
	AND	SWL3000
	TAD	SWL4000
	TAD I	SWRITE
	ISZ	SWRITE
	LINC
	LMODE
SWF,	0		/CHANGE DATA FIELD TO RIGHT ONE!
	PDP
	PMODE
	JMS I	SOP
	CDF	0		/RESET DATA FIELD TO ZERO
	JMP I	SWRITE
SOP,	0
APSREAD1,	SREAD1
PSWRITE1,	SWRIT1
SWL3000,	3000
SWL4000,	4000
SWL640,	640
/
/
/
/
/
/
/
	ISZ	V8MOVE		/IF 8K LODSYM COME HERE
	ISZ	V8MOV2
V8MOVE,	JMS I	VWRITE
	1
	6400
	BOOUT
	ISZ	.-1
	TAD	VM400
	TAD	.-4
	DCA	.-5
	ISZ	VCOUNT
	JMP	V8MOVE
V8MOV2,	JMS I	VWRITE
	1
	0
	BOXTRA
VCLEAN,	TAD	VVBUF1
	JMS I	VREAD1
	JMP I	VASSNO
VASSNO,	ASSNO+PFUDGE
VWRITE,	SWRITE+PFUDGE
VREAD,	SREAD+PFUDGE
VVBUF1,	1\BOTEMP
VCOUNT,	-16		/NUMBER OF BLOCKS IN SYMSAV
VM400,	-400
/
V8OR4K,	0		/CHECKS FOR 8 OR 4 K
	TAD I	UGNOP1
	SMA CLA
	ISZ	V8OR4K
	JMP I	V8OR4K
UGNOP1,	NOP1
/
VVINIT,	JMS	V8OR4K		/GET HOW MANY K OF CORE GUY HAS.
	JMP	V8MOVE-2		/DO READ NOW
V4IN,	JMS	VCOPY
	1\BOOUT
	1\BINORM
	ISZ	.-2
	ISZ	.-2
	ISZ	VCOUNT
	JMP	V4IN
	JMS	VCOPY
	1\BOXTRA
	1\BINORM+16
	TAD I	VBLKTBS
	JMS I	VREAD1
	JMS	SREAD
	0
	6400
	BINORM
	JMS	SREAD
	0
	6000
	BINORM+1
	JMP	VCLEAN
/
VBLKTBS,	BLKTBS
VREAD1,	SREAD1
VWRIT1,	SWRIT1
/
/
/
V4OUT,	TAD I	VBLKTBS
	JMS I	VWRIT1
	JMS	SWRITE
	0
	6400
	BINORM
	JMS	SWRITE
	0
	6000
	BINORM+1
V4LOOP,	JMS	VCOPY
	1\BINORM
	1\BOOUT
	ISZ	.-2
	ISZ	.-2
	ISZ	VCOUNT
	JMP	V4LOOP
	JMS	VCOPY
	1\BINORM+16
	1\BOXTRA
	JMP	VCLEAN
/
VCOPY,	0		/COPIES 1 BLOCK OF TAPE TO ANOTHER.
	TAD I	VCOPY
	JMS I	VREAD1
	ISZ	VCOPY
	TAD I	VCOPY
	ISZ	VCOPY
	JMS I	VWRIT1
	JMP I	VCOPY
/
/
	*5000-PFUDGE+200+177
0000			/USED TO STORE "SEND" FOR SYMBOLS ! ! !
/		THIS LOCATION IS DESTRYOED ON TAPE FOR ALL PRACTICAL CONSIDERATIONS.
/
/
/
/
	EJECT
/         M A I N   O V E R L A P P E D    R E A D   R O U T I N E S.
	*5400
READ,	0
	JMS I	PGLDF		/GET DATA FIELD RETURN IN AC
	DCA	RRET
	ISZ	READ
	JMS I	RCHECK		/SET UP MEM FIELDS
	RRET		/POINTER TO DF FIELD
RMEMF,	0		/MEMORY INST. RETURNED HERE
	DCA	RLOC1		/HIGH ORDER HITS RETURNED IN AC TO FORM LOC.
	TAD I	READ
	RAR
	AND	RL1400
	TAD	RLOC1
	DCA	RLOC1		/GOT CORRECT LOC IN LOC1
	TAD	RMEMF
	DCA	RINF
	CLA CMA
	TAD	READ
	DCA	READ
	TAD I	READ
	AND	RL10		/GET READ UNIT
	TAD	RLRDC
	DCA	RINST		/CREATE READ INSTRUCTION.
	ISZ	READ
	TAD I	READ
	CIA
	TAD	BLOCK1
	AND	RL777
	SNA	CLA		/DO WE HAVE BLOCK IN BUFF1?
	JMP I	PRIN1		/POSSIBLE. CHECK IF SAME UNIT NUMBER.
RCABY2,	TAD I	READ
	CIA
	TAD	BLOCK2
	AND	RL777
	SNA	CLA
	JMP I	PRIN2		/MAYBE IT S IN BUFF2
RCABY3,	JMS I	PWAIT		/NOPE. GOT TO GET IT. WAIT FOR LAST OP TO FIN.
	TAD I	READ
	AND	RL777
	TAD	RL7000
	DCA	BLOCK1		/CREATE READ INTO BUFF1
	TAD	RINST
	TAD	RL20
	DCA	RINST2
	LINC
	LMODE
	LDF	3
RINST2,	0
BLOCK1,	-1
	PDP
	PMODE
	JMS I	PWAIT		/WE GOT DESIRED BLOCK. WAIT FOR IT.
REDO,	TAD	RINST
	AND	RL10
	DCA	UNIT1
	TAD	UNIT1
	DCA	UNIT2
	TAD	BLOCK1
	IAC
	AND	RL777
	TAD	RL5000
	DCA	BLOCK2		/FILL UP BUFF2 ALSO, BUT NO WAIT.
	DCA	DONE1
	IAC
	DCA	DONE2
	LINC
	LMODE
	LDF	3
RINST,	0
BLOCK2,	-1
	CLR
	PDP
	PMODE
RMOVE1,	JMS	RMOVE67
	ISZ	READ
	LINC
	LMODE
RRET,	0
	PDP
	PMODE
	JMP I	READ
RMOVE67,	0		/MOVES DATA FROM BUFFER INTO USER CORE.
	CLA CLL
	TAD	RLM400
	DCA	RCOUNT
	TAD	RPOS1
	DCA	RPOS2
RLOOP,	CDF	0
	TAD I	RPOS2
RINF,	CDF	0
	DCA I	RLOC1
	ISZ	RPOS2
	ISZ	RLOC1
	NOP
	ISZ	RCOUNT
	JMP	RLOOP
	CDF	0
	TAD	RL7400		/RESET TO BUFF1 IF RIN2 BASHED IT.
	DCA	RPOS1
	JMP I	RMOVE67
RPOS1,	7400
RL7000,	7000
RL7400,	7400
RCOUNT,	0
RLOC1,	0
RPOS2,	0
RLM400,	-400
DONE1,	0
DONE2,	0
UNIT1,	-1
UNIT2,	-1
RL10,	10
RL20,	20
RL777,	777
RL6000,	6000
PWAIT,	WAIT
PRIN1,	RIN1
PRIN2,	RIN2
RL70,	70
RLCDF,	CDF
RL1400,	1400
RLRDC,	0700
PGLDF,	GLDF
RCHECK,	CCHECK
RL5000,	5000
/
CDF=6201
/
/
/
/
/
/
/
/
JACKBU,	0
	TAD	RL10
	LINC
	LMODE
	AXO
	CHK
	D6
	CLR
	PDP
	PMODE
	JMP I	JACKBU
/
/
/
/
/
	EJECT
/
/
/		PART TWO OF THE READ INTERPRETER
/
/RIN1 AND RIN2 CHECK TO SEE IF BLOCK MAY BE IN BUFFERS, THUS NO READ NECESSARY.
/
/
	*5600
RIN1,	TAD I	PRINST
	AND	R2L10
	CIA
	TAD I	PUNIT1
	SZA	CLA		/SAME UNIT AS BUFF IN CORE??
	JMP I	PRCAB2
	TAD I	PDONE1		/YES. WAS IT READ IN LAST TIME??
	SZA	CLA
	JMS I	PWAIT2		/NO. IT WAS INITIATED. NOW WAIT FOR IT.
	DCA I	PDONE1
	TAD I	PBLCK1
	CMA
	TAD I	PBLCK2
	AND	R2L777
	LINC
	LMODE
	STD
	CLR		/IF TAPE IS NOT BUSY START NEXT RECORD IN.
	PDP
	PMODE
	SZA CLA
	JMP I	PREDO
	DCA I	PDONE2
	JMP I	PRMOVE1
RIN2,	TAD I	PRINST
	AND	R2L10
	CIA		/ALMOST SAME AS RIN1, EXECPT FOR DIFFERENT BUFFERS.
	TAD I	PUNIT2
	SZA	CLA
	JMP I	PRCAB3
	TAD I	PDONE2
	SZA	CLA
	JMS I	PWAIT2
	DCA I	PDONE2
	LINC
	LMODE
	STD
	COM
	PDP
	PMODE
	SZA CLA
	JMP	RIT3
	DCA I	PDONE1
	TAD I	PBLCK2
	CMA
	TAD I	PBLCK1
	AND	R2L777
	SNA CLA
	JMP	RIT3
	TAD I	PBLCK2
	IAC
	AND	R2L777
	TAD	R27000
	DCA I	PBLCK1
	TAD I	PUNIT2
	DCA I	PUNIT1
	ISZ I	PDONE1
	TAD I	PRINST
	DCA	RLONEP
	TAD I	PBLCK1
	DCA	RLTWOP
	LINC		/AFTER CREATING READ FOR NEXT RECORD, DO IT.
	LMODE
	LDF	3
RLONEP,	-1
RLTWOP,	-1
	CLR
	PDP
	PMODE
RIT3,	TAD	R2L6400
	DCA I	PRPOS1		/MOVE FROM LOCATION.
	JMP I	PRMOVE1
/
PRMOVE1,	RMOVE1
PRPOS1,	RPOS1
R2L6400,	6400
PBLCK1,	BLOCK1
PBLCK2,	BLOCK2
PDONE1,	DONE1
PDONE2,	DONE2
PUNIT1,	UNIT1
PUNIT2,	UNIT2
R26000,	6000
R27000,	7000
R2L777,	777
PWAIT2,	WAIT
PRCAB2,	RCABY2
PRCAB3,	RCABY3
PRINST,	RINST
R2L10,	10
PREDO,	REDO
/
/
/
/
/
/
/
CCHECK,	0		/CONSTRUCTS CORE LOC FORM FIELDS AND BLOCK NUM.
	CLA IAC
	TAD	CCHECK
	DCA	CRETURN
	TAD	CCHECK
	AND	CL7600
	DCA	CTEMP1
	TAD I	CTEMP1
	DCA	CTEMP1
	TAD I	CTEMP1
	SPA CLA
	JMP	CDATAF
	TAD	CTEMP1
	RTL
	RAL
	AND	CL3
	DCA	CFUDGE
	TAD	CPPFUDGE
	DCA	CCHECK
CDATAF,	TAD I	CCHECK
	DCA	CTEMP1
	TAD I	CTEMP1
	RAL
	AND	CL70
	TAD	CCDF
	DCA I	CRETURN
	ISZ	CRETURN
	TAD I	CTEMP1
	CLL RTR
	RAR
	AND	CL7000
	JMP I	CRETURN
CRETURN,	0
CTEMP1,	0
CL70,	70
CL7000,0CCDF,	CDF
CL3,	3
CL7600,	7600
CFUDGE,	0
CPFUDGE,	CFUDGE
CPPFUDGE,	CPFUDGE
/
/
/
/
/
/
/
/
/
/
/
/
/
/
	EJECT
	*6200		/6000 IS THE LP ROUTINE
/		MAIN WRITE ROUTINE
/		AND READER CHECKER
/
/
/NOTE: DO TO VARIOUS THINGS(MAINLY SPACE), THIS ROUTINE IS BUT A WISP
/OF IT S   FORMER GREATNESS. IT NO LONGER
/DOES OVERLAPPED WRITES(BECAUSE I TOOK AWAY ITS BUFFER SPACES).
/INSTEAD, IT DOES THE WRITE DIRECTLY FROM THE CORE AREA.
/HOWEVER, ALL THE LOGIC AND INSRUCTIONS SEEM TO BE THERE FOR OVERLAPPED.
/HENCE, IF IT LOOKS LIKE ITS DOING SOMETHING, THEN UNDOES THEM, DON T BE SURPRISED.
/
/
/
WRITE,0
	JMS	GLDF		/SAVE DATA FIELD.
	DCA	WRET
	TAD I	WRITE
	DCA	WOUT
	TAD	WOUT
	AND	WL10
	TAD	WWRC
	DCA	WOUT
	TAD	WOUT
	AND	WL10
	CIA
	TAD I	WUNIT1
	SNA	CLA
	JMP	WC1
WR2,	TAD	WOUT
	AND	WL10
	CIA
	TAD I	WUNIT2
	SNA	CLA
	JMP	WC2
WR3,	JMS 	WAIT		/WE JUST CHECKED IF THIS BOLCK EXISTED IN THE READ BUFFERS. IF IT DID
/THEN WE ZAPPED IT OUT SO READ WOULDN T THINK IT
/HAD IT IN ITS BUFFERS.
/NOW WAIT FOR ANY TAPE OPERATIONS TO FINISH/
	ISZ	WRITE
	JMS I	WCHECK		/GO SET UP ADDRESS AND FIELD.
	WRET
WMEMF,	0
	DCA	WLOC1
	TAD I	WRITE
	RAR
	AND	WL1400
	TAD	WLOC1
	DCA	WLOC1
	TAD I	WRITE
	AND	P777		/JUST GET BLOCK NUM.
	DCA	WOUT+1		/CREATE FIELD AND BLOCKMUN.
	TAD	WMEMF
	AND	WL70
	CLL RAR
	TAD	WL640
	DCA	WOUT-1
	TAD	WLOC1
	AND	M1000		/7000;  GET FIELD BITS
	CLL	RTL
	RAL
	TAD	WOUT-1
	DCA	WOUT-1		/SET CORRECT DATA FIELD.
	TAD	WLOC1
	AND	WL1400
	CLL RAL
	TAD	P4000		/ALWAYS DATA FIELD.
	TAD	WOUT+1
	DCA	WOUT+1		/NOW FINISH SETTING CORRECT BLOCK NUM.
	LINC
	LMODE
	LDF	3
WOUT,	0		/DO WRITE.
	-1
	CLR
WRET,	LDF	3
	PDP
	PMODE
	ISZ	WRITE
	JMS	WAIT		/WAIT FOR COMPLETION
	JMP I	WRITE
/
/
/
/
/
/
/
/
/
/
/
WCOUNT,	0
WL6400,	6400
WLM400,	-400
WLOC1,	0
WLOC2,	0
WUNIT1,	UNIT1
WUNIT2,	UNIT2
WBLCK1,	BLOCK1
WBLCK2,	BLOCK2
WL1400,	1400
WL10,	10
WL70,	70
WCDF,	CDF	0
WWRC,	0704
WCHECK,	CCHECK
/
/
/
/
/
/
/
/
/
WC1,	ISZ	WRITE
	TAD I	WRITE
	CIA
	TAD I	WBLCK1
	AND	P777		/JUST BLOCK NUMBER.
	SZA CLA
	JMP	WW2
	CLA CMA
	DCA I	WUNIT1
WW2,	CLA CMA
	TAD	WRITE
	DCA	WRITE
	JMP	WR2
WC2,	ISZ	WRITE
	TAD I	WRITE
	CIA
	TAD I	WBLCK2
	AND	P777		/JUST CHECK BLOCK NUMBER.
	SZA CLA
	JMP	WW3
	CLA CMA
	DCA I	WUNIT2
WW3,	CLA CMA
	TAD	WRITE
	DCA	WRITE
	JMP	WR3
/
/
/
/
WAIT,	0		/THIS WAITS FOR TAPE DONE.
	TAD	CURLIN
	LINC			/GET INTO LMODE
	LMODE
	SCR	14		/PLACE AC IN MQ.
	COM			/NOW COMLEMENT THE AC TO PLACE 7777 IN IT MOST OF THE TIME.
	STD
	JMP	.-1
	PDP
	PMODE
	CLA CLL			/CLEAR AC AND THE LINK.
	JMP I	WAIT
/
/
/
/
GLDF,	0		/THIS GETS DATA FIELD AND SAVES IT.
	LINC
	LMODE
	CLR
	IOB
	6214
	ROR	1
	BCL I
	7740
	BSE I
WL640,	LDF	0
	LDF	3
	PDP
	PMODE
	JMP I	GLDF
/
	PMODE
/
/
	EJECT
/  LINE PRINTER ROUTINE
/
/
/
/
	*6000		/THIS ROUTINE LOOKS
PRINT,	0		/SORT OF LINE A TTY. TAD CHAR; JMS PRINT.
	TAD	M215		/IT HANDLES CR AND LF.
	SNA		/IS IT CARRIAGE RETURN.
	JMP	CRFOUND
	TAD	P215		/NO!
	LSD			/WAIT FOR CLEAR SIGNAL.
	JMP	.-1		/WAIT FOR FREE TIME FIRST
	LCF
	LLB			/OUTIT TO LP
	CLA		/I DON T BELIVE IT S CLEARED
	JMP I	PRINT
CRFOUND,TAD	SW1
	DCA	PRINT+1
	DCA	NUM		/SET TO CHEC K  FOR LF
	JMP I	PRINT
LFTEST,	DCA	TEMP1
	TAD	TEMP1
	TAD	M212		/IS IT A LINEFFED.
	SNA CLA
	JMP	LFF
	TAD	TEMP1
	TAD M215
	SNA CLA
	JMP	LFF2
	TAD	SW2		/NOT AN LF OR CR. NEW LINE. OUTPUT LAST.
	DCA	PRINT+1
	CLA CMA
	TAD	NUM
	AND	P7
M140,	SZA CLA
	TAD	P7		/IF 1 LF, THEN 1 SPACE. IF >1 THEN A FORM EJECT.
	TAD	L10
	JMS	PRINIT		/OUTPUT CONTROL CHAR AND LINE.
	TAD	TEMP1		/GET OLD CHAR AND START NEXT.
	JMP	PRINT+1
LFF,	ISZ	NUM		/LF. BOP UP LF COUNT.
LFF2,	JMP I	PRINT
TEMP1,	0
SW1,	JMP	LFTEST
SW2,	TAD	M215
NUM,	0
NCOUNT,	-100
M100,	-100
PRINIT,	0
	LSD
	JMP	.-1		/WAIT FOR FREE TIME
	LCF
	LPR		/OUTPUT BUUF WITH CONTROL CHAR.
	CLA CML
INITL,	DCA	NUM
	JMP I	PRINIT
LOK,	TAD	L17		/LP IS THERE. EJECT TO START AS.
	JMS	PRINIT
	TAD	M140		/RESET CHARS ON ILNE.
	DCA I	PC1
	TAD	M140
	DCA I	PC2
LOK1,	TAD	R1		/RESET TYPO TO LP OR TTY ROUTINE.
	DCA I	PR1
	TAD	R2
	DCA I	PR2
	TAD	R3
	DCA I	PR3
	TAD	R4
	DCA I	PR4
	TAD	R5
	DCA I	PR5
	TAD	P215
	JMP I	.+1
PR1,	TYPO+1
PR2,	TYPO+2
PR3,	TYPO+3
PR4,	TYPO+4
PR5,	TYPO+5
R1,	JMS I	PRINT+TYPO-TYBASE+3
	TSF
R2,	SKP
	JMP	PRINT+TYPO-TYBASE+1
R3,	PRINT
	TLS
R4,	JMP I	PRINT+TYPO-TYBASE
	CLA
R5,	JMP I	PRINT+TYPO-TYBASE
/
/
LPTEST,	CLA CLL
	TAD	M17		/WAIT FOR PRINTER TEST
	DCA	PRINT
	DCA	PRINIT
	LCF
	LCB		/CLEAR BUFFER. IF LP THERE FLAG RAISES IN 300 MILLSEC.
TEST,	LSD
	SKP
	JMP	LOK		/FLAG SI UP.  LP THERE.  WHAT A LUCKY BASTARD.
	ISZ	PRINIT
	JMP	TEST
	ISZ	PRINT
	JMP	TEST
	ISZ	LOK1		/TIME HAS RUN OUT. CHANGE TO SET UT  TTY MODE.
	ISZ	LOK1+2
	ISZ	LOK1+4
	ISZ	LOK1+6
	JMP	LOK1
/
L10,	10
L17,	17
M212,	-212
M17,	-17
PC1,	M60
PC2,	M60A
/
/
/
/
/		SOME BASIC DEFINITIONS FOR THE ROUTINES
/
TYBASE=2400		/MAIN BASE FOR REFS.
LLB=6654
LCF=6652
LSD=6661
LCB=6662
LPR=6664
/
/
/
/
/
/
/
/
/
/
	EJECT
/
/
/
/  S Y M B O L    T A B L E   ! ! ! !
/
/
/
/
/
/
/
/
	*6400
7777
7777
7777
7777
7777
7777
7777
7777
7777
7777
7777
7777
5143		/PSF
0336
0000
6021
5123		/PCF
0336
0000
6022
5140		/PPC
0157
0000
6024
5134		/PLS
1277
0000
6026
5255		/RCF
0336
0000
6011
5254		/RRB
0112
0000
6012
5240		/RFC
0157
0000
6014
4170	/CIF
0336
0000
6202
4163		/CDF
0336
0000
6201
5243		/RIB
0112
0000
6234
5247		/RMF
0336
0000
6244
5243		/RIF
0336
0000
6224
5236		/RDF
0336
0000
6214
5360		/TLS
1277
0000
6046
5364		/TPC
0157
0000
6044
5347		/TCF
0336
0000
6042
5367		/TSF
0336
0000
6041
4651		/KRB
0112
0000
6036
4651		/KRS
1277
0000
6034
4632		/KCC
0157
0000
6032
4652		/KSF
0336
0000
6031
4534		/IOF
0336
0000
6002
4534		/ION
1006
0000
6001
4705	/LINC
1011
0000
6141
4173/CLSK
1312
0
6131
4173/CLLR
716
0
6132
4173
47
0
6133
4173
307
0
6134
4173	/CLSA
1300
0
6135
4173	/CLCA
160
0
6137
4173	/CLBA
113
0
6136
4417		/GLK
0627
0000
7204
5323	/STL
0674
0000
7120
5323		/STA
0045
0000
7240
4675		/LAS
1277
0000
7604
4170		/CIA
0045
0000
7041
4464		/HLT
1344
0000
7402
5076		/OSR
1232
0000
7404
5312		/SKP
1120
0000
7410
5331		/SZL
0674
0000
7430
5315		/SNL
0674
0000
7420
5315		/SNA
0045
0000
7450
5317		/SPA
0045
0000
7510
5331		/SZA
0045
0000
7440
5314		/SMA
0045
0000
7500
4516		/IAC
0157
0000
7001
5256		/RTL
0674
0000
7006
5233		/RAL
0674
0000
7004
5256		/RTR
1232
0000
7012
5233		/RAR
1232
0000
7010
4174		/CML
0674
0000
7020
4174		/CMA
0045
0000
7040
4173		/CLL
0674
0000
7100
4173		/CLA
0045
0000
7200
5025		/NOP
1120
0000
7000
4577		/JMP
1120
0000
5000
4577		/JMS
1277
0000
4000
4227		/DCA
0045
0000
3000
4540		/ISZ
1702
0000
2000
5345		/TAD
0224
0000
1000
4063		/AND
0224
0000
0
	EJECT
/LINC SYM TABLE
	*4400		/REALLY GOES AT 7000, BUT 7000
		/		IS USED
4517	/IBZ
1702
0000
0453
5201	/QLZ
1702
0000
0455
4352	/FLO
1053
0000
0454
4652	/KST
1344
0000
0415
5305	/SFA
45
0
24
4075	/AXO
1053
0000
0001
4314	/ESF
0336
0000
0004
4464	/HLT 	
1344
0000
0000
5166	/QAC
0157
0000
0005
4173	/CLR
1232
0000
0011
4071	/ATR
1232
0000
0014
5256	/RTA
0045
0000
0015
5025	/NOP
1120
0000
0016
4176	/COM
0741
0000
0017
5304	/SET
1344
0000
0040
5300	/SAM
0741
0000
0100
4235	/DIS
1277
0000
0140
5613	/XSK
0627
0000
0200
5251	/ROL
0674
0000
0240
5251	/ROR
1232
0000
0300
5302	/SCR
1232
0000
0340
5327	/SXL
0674
0000
0400
5315	/SNS
1277
0000
0440
5312	/SKP(L)
1120
0000
0467
4077	/AZE
0271
0000
0450
4065	/APO
1053
0000
0451
4726	/LZE
0271
0000
0452
4236	/DJR
1232
0000
0006
4705	/LIF
0336
0000
0600
4700	/LDF
0336
0000
0640
5236	/RDC
0157
0000
0700
5235	/RCG
0403
0000
0701
5236	/RDE
0271
0000
0702
4765	/MTB
0112
0000
0703
5545	/WRC
0157
0000
0704
5526	/WCG
0403
0000
0705
5545	/WRI
0515
0000
0706
4167	/CHK
0627
0000
0707
5300	/SAE
0271
0000
1440
5321	/SRO
1053
0000
1500
4115	/BCL
0674
0000
1540
4135	/BSE
0271
0000
1600
4115	/BCO
1053
0000
1640
4247	/DSC
0157
0000
1740
4051	/ADD
0224
0000
2000
5323	/STC
0157
0000
4000
4577	/JMP
1120
0000
6000
4764	/MSC
0157
0000
0000
4700	/LDA
0045
0000
1000
5323	/STA
0045
0000
1040
4051	/ADA
0045
0000
1100
4051	/ADM
0741
0000
1140
4675	/LAM
0741
0000
1200
4766	/MUL
0674
0000
1240
4700	/LDH
0450
0000
1300
5323	/STH
0450
0000
1340
5307	/SHD
0224
0000
1400
5345	/TAC
0157
0000
0003
5361	/TMA
0045
0000
0023
5124	/PDP
1120
0000
0002
5323	/STD
0224
0000
0416
4717	/LSW
1523
0000
0517
5255	/RSW
1523
0000
0516
4534	/IOB
0112
0000
0500
	EJECT
/SPECIAL CHARACTERS AND PSEUDO-INSTRUCTIONS
	*7400
/
	7777		/UNUSED
	7777
	7777
	7777
	6303		/EJECT
	0274
	1344
	PSUDO5		/PSEUDO OP 5
	6070		/ASMIFZ	(I HAD IT ASSIFZ ORGINALLY BUT THE PRUDES THOUGHT IT WAS TOO
	0752		/SUGGESTIVE! ! ! ! ! ! ! ! ! !)
	0354
	PSUDO1		/PSEUDO OP 1
	6070		/ASMIFN
	0752
	0370
	PSUDO2		/PSEUDO OP 2
	6070		/ASMIFM
	0752
	0353
	PSUDO3		/PSEUDO OP 3
	6070		/ASMSKP
	0764
	0647
	PSUDO7		/PSEUDO OP 7
	7300		/SAVSYM
	1501
	1652
	PSUDO6		/PSEUDO OP 6
	6347		/FIELD
	0305
	0224
	FLDUP
	7135		/PMODE
	1057
	0271
	PDP8MD
	6711	/LMODE
	1057
	0271
	LNKMOD
	7304		/SEGMNT
	0420
	1032
	BANKCH
	6713		/LODSYM
	0247
	1652
	PSUDO4		/PSEUDO OP 4
	0000	/AND
	0000
	0062
	3400
	7056	/OCTAL
	1345
	0674
	OCT
	6231	/DECIMAL
	0170
	0742
	DECIM
	7351	/TEXT
	1614
	0
	STRING
	7025	/NOLIST
	0705
	1323
	PLIST
	6705	/LIST
	1323
	0000
	DOLIST
	7121	/PAGE
	0410
	0
	PAGEC
	0000	/SEMICOLON
	0000
	0046
	0200
	0000	/EXCLAMATION POINT
	0000
	0055
	2200
	6000	/STAR
	0000
	0066
	ORGIC
	6000	/POINT
	0
	0072
	PERIOD
	6000	//
	0000
	0075
	THOU
	7411	/U
	0000
	0000
	UN
	0000	/COMMA
	0000
	0070
	0600
	0000	/=
	0000
	0050
	1400
	7702	/Z
	0
	0
	A+1
	6515	/I
	0
	0
	H
	0000	/-
	0000
	0071
	5200
	0000	/+
	0000
	0067
	4600
	0000	/SPACE
	0000
	0054
	5600
/
/
	EJECT
/		M A J O R   T A P E   D EF I N I T I O N S
/
/
/
/
FUDGE1=322			/BLOCK ON WHICH DOUBLE BUFFERED READ ROUTINES SIT.
FUDGE2=323			/BLOCK ON WHICH OVERLAPPED WRITE AND LINE PRINTER SIT.
FUDGE3=325			/SCRATCH BLOCK FOR SWAPPED IN-OUT PSEUDO OPS
FUDGE4=324			/SWAPPED IN PSEUDO OPS. SHOULD BE 1 LESS THEN FUDGE3 FOR
/          		MAXIMUM TAPE EFFICEINCY.
FUDGE5=326			/8K RESIDENT PSEUDO OP PROCESSOR. LOADED ONCE AT BEGINNING FOR
/          		8K MACHINES. CAN BE ANYWHERE ON TAPE.
/
BOTEMP=327			/SCRATCH BLOCK FOR SAVSYM, LODSYM; USED FOOR SWAPPING OUT CORE TO ALLOW
/          		BUFFER SPACE FOR COPYING, UPDATING, ETC OF SYMBOLS...
BOOUT=450			/START OF 16 CONSECUTIVE BLOCKS ON UNIT1 TO HOLD SAVED SYMBOLS.
BINORM=430			/17 BLOCKS WHERE 4K SYMBOLS NORMALLY GO.
BOXTRA=466			/17-16=1. THIS IS WHERE EXTRA SAVSYM IS.
/          		IT CAN BE ANYWHERE ON THE TAPE.
/
/
/
/
	EJECT
/		E N D   A S S E M T W O ! ! ! ! ! ! !
/
/
/
/
/
/	SAVE THE DEFINED SYMBOLS SO ASSEMONE CAN USE THEM.
/
/
/
/
	SAVSYM	2			/    S A V E   S Y M B O L S !
/
/
/
/
/
	EJECT



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