File EE415.PA (PAL assembler source file)

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

/	17			TTY (TELETYPE)
	/DEVICE DEPENDENT CODE FOR PS/8 MONITOR
/THESE ARE CONDITIONAL PARAMETERS. SEE INTRODUCTORY COMMENTS.

	IFNDEF DIRECT	<DIRECT=0>	/"DON'T REWRITE DIRECTORY" FLAG
	IFNDEF NOHSPT	<NOHSPT=0>	/"NO HIGH-SPEED PAPER TAPE" FLAG
	IFNDEF RF08	<RF08=0>
	IFNDEF LP08	<LP08=1>
	IFNDEF LINCTAPE	<LINCTAPE=0>
	IFNDEF LINCSYS	<LINCSYS=0>
	IFNDEF RK8	<RK8=0>
	IFNDEF DF32	<DF32=0>
	IFNDEF DECTAPE	<
	IFZERO DF32+RF08+RK8+LINCSYS	<DECTAPE=1>
	IFNZRO DF32+RF08+RK8+LINCSYS	<DECTAPE=0>
	>


	SBLOCK=7776	/RANDOM DEFINITIONS FROM MAIN ASSEMBLY
	MFREE=70	/FIRST FREE BLOCK ON THE SYSTEMS DEVICE
			/(FIELD 1)
	SOFSET=7747	/NOT REALLY NECESSARY!

	FIELD 1
	*AASDNAME
	/SYSTEM DEVICE NAME TABLE
	/THE ENTRIES ARE THE TWO WORD SUM OF THE SIXBIT FOR THE SYSTEM
	/DEVICES, WITH THE HIGH ORDER BIT FORCED ON

/CHANGES IN SDNAME MUST BE ACCOMPANIED BY CHANGES IN
/SDVHND. KEEP CORRESPONDENCE ONE TO ONE.

SDNAME,	4631	/SYS
	5723	/DSK
	5524	/TTY
	4020	/LPT
	4604	/DTA0
	4605	/DTA1

	AASDVHND=766		/DEPENDS ON PS8 ASSEMBLY
	*AASDVHND

	/SYSTEM HANDLER TABLE
	/CONTENTS:
	/BIT 0		- ON IF THE HANDLER IS A TWO-PAGE HANDLER
	/BITS 1-4	- OFFSET FROM "DVHORG-1" OF RECORD CONTAINING HANDLER

	/BITS 5-11	- ENTRY POINT OF HANDLER RELATIVE TO LOADING ADDRESS



/EACH DEVICE HANDLER HAS AN ENTRY IN SDVHND. THE EQUATION
/USED IN EACH ENTRY IS: OFFSET *200+ENTRY POINT-ASSEMBLY POINT
/THE OFFSET IS BITS 1-4.
/FOR A TWO PAGE HANDLER, ADD 4000.

SDVHND,	0	/SYSTEM HANDLER HAD BETTER BE RESIDENT
		/OR PAGE 17600 IS PROBABLY BLOWN
	IFZERO LINCSYS+DECTAPE-2	<5^200+DTA1-7200
			/FOR MULTIPLE DECTAPE SYSTEMS,DTA1=DSK>
	IFNZRO LINCSYS+DECTAPE-2	<0	/OTHERS,DSK=SYS>
	2^200+TTY-7000
	4^200+LPT-6200
	5^200+DTA0-7200
	5^200+DTA1-7200
	5^200+DTA2-7200
	5^200+DTA3-7200
	5^200+DTA4-7200
	5^200+DTA5-7200
	5^200+DTA6-7200
	5^200+DTA7-7200
	1^200+PTP-6400
	1^200+PTR-6400
	3^200+CDR-5600+4000	/TWO PAGE HANDLER


	IFNZRO DECTAPE	<SYSD=4160>
	IFNZRO LINCSYS	<SYSD=4170>
	IFNZRO RF08	<SYSD=RF08^10+4050>
	IFNZRO RK8	<SYSD=4050>
	IFNZRO DF32	<SYSD=DF32^10+4110>
	DTADCB=LINCTAPE^10+4160		/4160 OR 4170
	FIELD 0
/NOTE:RBFLAG MUST BE AT LOC. 20 OF MAIN ASSEMBLY!!!!
	IFNZRO DIRECT	<*20; 1 /DON'T REWRITE DIRECTORY OR ABSLDR>



	/DEVICE CONTROL BLOCK TABLE - ONE WORD PER DEVICE
	/BIT 0 - 1 IF FILE STRUCTURED DEVICE
	/BIT 1 - 1 IF READ ONLY DEVICE
	/BIT 2 - 1 IF WRITE ONLY DEVICE
	/BITS 3-8	- THE DEVICE TYPE
	/0		TELETYPE
	/1		HIGH SPEED READER
	/2		HIGH SPEED PUNCH
	/3		CARD READER (CR8/I)
	/4		LINE PRINTER
	/BITS 9-11	- FLAG FOR WHETHER AN OUTPUT FILE IS CURRENTLY OPEN

	*7560
DCB,	SYSD;SYSD;0;1040;DTADCB;DTADCB;DTADCB;DTADCB
	DTADCB;DTADCB;DTADCB;DTADCB;1020;2010;2030


	IFZERO DECTAPE+LINCSYS-2	<*7450;0	/USE TAPE 1 AS DSK>
	IFNZRO	DECTAPE+LINCSYS		<*7453;7607	/DTA0 IS RESIDENT>



/THE MAJOR FUNCTION OF CONFIG FOLLOWS: WRITE THE DEVICE
/HANDLER RECORDS.NOTE THAT LOC. 0 CONTAINS 7607, OR THE SYSTEM
/DEVICE HANDLER ENTRY POINT.
/SYSTEM GENERATION STARTS AT LOC. 4000 AND CONTINUES THROUGH
/THIS CODE.

*4200
WRDEVH,	0		/SUBR TO WRITE OUT DEVICE HANDLER RECORDS
	WRITE=JMS I 0
	DVHORG=16
	WRITE;	4301;	5600;DVHORG+2;	JMP BERR	/CDR AND LPT HANDLERS
	WRITE;	4100;	7000;DVHORG+1;	JMP BERR	/TTY HANDLER
	WRITE;	4100;	7200;DVHORG+4;	JMP BERR	/DTA HANDLERS
	WRITE;	4100;	6400;DVHORG+0;	JMP BERR	/PTR & PTP HANDLERS
	ISZ WRDEVH
BERR,	JMP I WRDEVH
	*5600

	>
	*7000
	/TELETYPE HANDLER - NOT VERY INTELLEGENT.
	/ONLY RECOGNIZES ^Z AND ^C ON INPUT
	/AND ^C AND ^O ON OUTPUT
	/OH WELL, WHAT CAN YOU EXPECT IN ONE PAGE.
	/ THE LOGIC IS VERY SIMILIAR TO THE PTR AND PTP HANDLERS.
TTY360,	360		/MUST BE FIRST LOC ON PAGE!
TTY,	0
TT7600,	7600
	RDF
	TAD TTYCIF
	DCA TTYXIT	/SAVE RETURN FIELD
	TAD I TTY
	AND TT70
	TAD TTCDF
	DCA TTYCDF	/DATA FIELD OF BUFFER
	TAD I TTY
	AND TT7700
	CLL RAL		/READ/WRITE IN LINK, PAGE COUNT IN AC 0-4
	SZA		/PROTECT LINK
	CIA		/WHILE COMPLEMENTING AC
	DCA TTYWC
	ISZ TTY
	TAD I TTY
	DCA TTYCA	/SAVE BUFFER ADDRESS
	ISZ TTY
	ISZ TTY
TTYLP,	SNL CLA
	JMP TTYGLP	/ZER LINK MEANS READ
	JMS TTYTST	/TEST FOR ^C
	TAD TTYM14	/-203-14=-217 =-"^O"
	SNA CLA
	JMP TTYCTO
	TAD I TTYCA	/CHARACTER 1 IS LOW ORDER 8 BITS OF WORD 1
	JMS TTYPCH
	AND TT7400
	DCA TTYGCH
	ISZ TTYCA
TT7400,	7400
	TAD I TTYCA	/CHARACTER 2 IS LOW ORDER 8 BITS OF WORD 2
	JMS TTYPCH
	AND TT7400
	CLL RTR
	RTR
	TAD TTYGCH
	RTR
	RTR	/CHARACTER 3 IS HIGH ORDER 4 BITS OF WORDS 1 AND 2
	JMS TTYPCH	/WILL SET LINK ON!
			/AC IS NON-ZERO HERE BUT WE DON'T CARE
TTLOOP,	ISZ TTYCA
TT70,	70
	ISZ TTYWC
	ISZ TTYWC
	JMP TTYLP
TTYRTN,	TAD TTYCDF
	CLL CIA
	SNL CLA
	ISZ TTY	/SKIP PAST ERROR RETURN
TTYXIT,	HLT	/RESTORE CALLING FIELDS
	RAL
	JMP I TTY
TTYPCH,	0
	TAD TTM232
	SNA
	JMP TTYRTN
	TAD TTY232
	JMS TTPRNT
	JMP I TTYPCH
TTYTST,	0
TTYCDF,	0
	TAD TTY200
	KRS		/TEST FOR ^C WITH FLAG UP
	TAD TTM203
	KSF
	CLA IAC
	SZA		/YES..BACK TO MONITOR
	JMP I TTYTST
TTYCIF,	CDF CIF 0
	JMP I TT7600
TTPRNT,	0
	TLS
	TSF
	JMP .-1
	JMP I TTPRNT
TTYCA,	0
TTYWC,	0
TTCDF,	CDF 0

/FOLLOWING CODE READS TTY AND PACKS IN BUFFER.
TTYGLP,	JMS TTYGCH
	DCA I TTYCA
	JMS TTYGCH
	DCA TTYPCH
	JMS TTYGCH
	RTL
	RTL
	DCA TTYGCH
	TAD TTYGCH
	AND TT7400
	TAD I TTYCA
	DCA I TTYCA
	TAD TTYGCH
TTY200,	AND TTY360
	CLL RTL
	RTL
	TAD TTYPCH
	ISZ TTYCA
	DCA I TTYCA
	JMP TTLOOP
TTYGCH,	0
	TAD TTYCDF
TT7700,	SMA CLA
	JMP I TTYGCH
	ISZ TTYTST
	JMP TTYKSF
	TAD TTY212
	JMP TTECHO
TTYKSF,	KSF
	JMP .-1
	JMS TTYTST
	TAD TTM27
	SNA		/IS IT A ^Z?
	DCA TTYCDF	/YES - SET END-OF-FILE FLAG
	TAD TTY14
	DCA TTYTST	/TTYTST=-1 IF CARRIAGE RETURN
	KRB
TTECHO,	JMS TTPRNT	/ECHO THE INPUT CHARACTER
	JMP I TTYGCH
TTY232,	232		/THIS CAN BE OPTOMIZED OUT!
TTY212,	212
TTY14,	14
TTM203,	-203
TTM27,	-27
TTYM14,	-14
TTM232,	-232
TTYCTO,	6032
	JMP TTYRTN
	IFZERO LINCTAPE	<



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