File F1109.PA (PAL assembler source file)

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

/TC08 DRIVER FOR RTS-8
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1974 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.
/
/
/
/
/
/
/
/
/
/
/ACCEPTS STANDARD MASS STORAGE TASK MESSAGE FORMAT

TASK=	DTA
INIWT=	0
CUR=	10

DTCA=	6762
DTXA=	6764
DTLB=	6774
DTSF=	6771
DTRA=	6761
DTRB=	6772
DTACA=	7755
DTAWC=	7754

	FIELD	CUR%10
	*5000
TMP,
START,	CAL
DONEFG, SKPINS
	INTRPT
/MAIN HANDLER LOOP

LOOP,	CAL
	RECEIV		/GET A MESSAGE
ADDR,	0
	DCA	FLD
DTREDO, AC7775
	DCA I	(TRYCT	/TRY 3 TIMES
	ISZ	DONEFG	/INITIALIZE EVENT FLAG
	STA
	TAD	ADDR
	DCA	ADDR
	JMS	GET
	AND	(7
	CDF CUR
	DCA I	(UNIT
	JMS	GET
	CDF CUR
	DCA I	(DFUN
	STA
	JMS	GET
	CDF CUR
	DCA I	(DLOC	/GET OS/8 STYLE ARGS
	JMS	GET
	CLL RAL
	CDF CUR
	DCA I	(DBLOCK /DOUBLE BLOCK NUMBER
	TAD	(FSTINT
	DCA	IDISP	/INITIALIZE INTERRUPT DISPATCH
	IOF
	JMS I	(SETU	/INITIALIZE THE OPERATION
	TAD	(DTSF
	DCA	INTSKP	/ENABLE INTERRUPT TEST
	ION
	NOP		/BE NICE TO OTHER PEOPLE
	CAL		/(AND THEY'LL KICK YOU IN THE TASK)
	WAITE
PDONFG, DONEFG		/WAIT FOR COMPLETION
	TAD	DONEFG
	SNA CLA 	/IF EVENT FLAG DID NOT COME UP,
	JMP	NOPFAL	/BUT WE CAME OUT OF EFWT ANYWAY,
	AC7775		/A POWER FAILURE MUST HAVE OCCURRED.
	TAD	ADDR
	DCA	ADDR
	JMP	DTREDO	/TAKE IT FROM THE TOP
NOPFAL, JMS	GET	/THIS JUST SETS THE DF AND ADDR
P7600,	7600
	TAD	STATUS
	DCA  I	ADDR
	TAD	FLD
	DCA	PFLD
	TAD	ADDR
	TAD	(-7	/GET POINTER TO MESSAGE EVENT FLAG
	CAL
	POST
STATUS,
PFLD,	HLT
	JMP	LOOP	/GET ANOTHER MESSAGE

GET,	0
FLD,	HLT
	ISZ	ADDR
	TAD I	ADDR
	JMP I	GET
/INTERRUPT ROUTINE BEFORE DISPATCHING

INTRPT, 0;0		/CHAIN INTO SKIP CHAIN
INTSKP, CLA		/OR DTSF
	JMP I	INTRPT
	CDF CIF CUR
	DTRB
	JMP I	IDISP	/DISPATCH INTERRUPT

DSTOP,	DCA	STATUS
	DTRA
	AND	(200
	TAD	(6	/DISABLE INTERRUPTS WHEN TAPE THROUGH
	DTXA		/STOP TAPE, CLEAR ERRORS IN CONTROL
	TAD	P7600
	DCA	INTSKP
	TAD	PDONFG
	JMP	IDISP+1

IDISP,	HLT
	CIF 0
	POSTDS
	PAGE
/SEARCH AND TRANSFER LOGIC

DTGO,	TAD	(200
DC,	SZL
	TAD	(400
	DTXA		/START TAPE IN NEW (OLD) DIRECTION
RSTRT,	JMS I	(IDISP
FSTINT, SMA CLA
	JMP	CKBLNO	/NO ERROR - CHECK FOR CORRECT BLOCK
	DTRB
	RTL
	RAL
	SMA CLA 	/NEAT TEST - ONLY SELECT ERROR BAD ON SEARCH, BUT
	JMP	DTGO	/SINCE ENDZONE FLAG IS IN LINK WE WILL REVERSE ON EZ
DTERR,	ISZ	TRYCT
	JMP	TRYAGN	/TRY THREE TIMES ON ERRORS
	DTRB
	JMP I	(DSTOP	/OTHERWISE RETURN WITH ERROR FLAGS IN STATUS
TRYAGN, JMS	SETU	/TRY AGAIN - REINITIALIZE OPERATION ON UNIT
	JMP	RSTRT	/GO BACK INTO SEARCH WAIT

SETU,	0		/ROUTINE TO INITIALIZE DT OP
	CDF CUR
	TAD	UNIT	/GET UNIT NUMBER
	TAD	(BLKTAB
	DCA	UB	/GET POINTER INTO CURRENT BLOCK TABLE
	TAD I	UB	/GET POSITION OF TAPE
	TAD	(12
	CMA STL 	/IF DESIRED BLOCK IS MORE THAN 10 DECIMAL BLOCKS
	TAD	DBLOCK	/IN FRONT OF WHERE WE ARE, WE WANT
	CLA		/TO START FORWARD.
	TAD	UNIT
	RTR
	RTR
	TAD	(214	/IN EITHER CASE WE WANT TO SEARCH WITH
	DTCA DTXA	/INTERRUPTS ENABLED
	TAD	(CUR
	DTLB		/AS A NEAT HACK WE TELL THE CONTROL
	CDF 0		/TO PLACE TAPE BLOCK NUMBERS DIRECTLY
	TAD	UB	/INTO OUR CURRENT BLOCK NUMBER TABLE AS IT
	DCA I	(DTACA	/FINDS THEM, SAVING US SOME WORK
	JMP I	SETU

UB,	0
BLKTAB, ZBLOCK	10	/ALL TAPES START REWOUND

TRYCT,	0
DFUN,	0
DLOC,	0
DBLOCK, 0
UNIT,	0
CKBLNO, DTRA
	RTL
	CMA RTL 	/DIRECTION IN LINK
	SNL CLA
	CML RTL 	/SEARCH REVERSE TO BLOCK-2
	TAD I	UB	/GET BLOCK NUMBER FROM CONTROL BUFFER
	CIA
	TAD	DBLOCK
	SNA CLA
	SZL CLA
	JMP	DC	/A FEW LOCATIONS, A HAIRY ALGORITHM
	TAD	DLOC
	CDF 0
	DCA I	(DTACA
	CDF CUR
	TAD	DFUN	/SET ADDRESS AND FIELD FOR TRANSFER
	DTLB
	TAD	DFUN
	CLL RAL
	AND	(7600
	DCA	DBLCT
	RAL
	IAC
	STL RTL
	RTL
DL,	DTXA		/START TRANSFER
	CDF 0
	TAD	(7600
	DCA I	(DTAWC	/SET WORD COUNT TO 128 WORDS
	JMS I	(IDISP	/GIVE SOMEONE ELSE A CHANCE
	ISZ I	UB	/BUMP CURRENT TAPE BLOCK NUMBER
	SPA CLA 	/ALL ERRORS DURING DATA TRANSFER ARE BAD
	JMP	DTERR
	TAD	DBLCT
	TAD	(7600
	SNA
	JMP I	(DSTOP
	DCA	DBLCT
	JMP	DL

DBLCT,	0
	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