File TSTRX2.PA (PAL assembler source file)

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

/	RXCOPY  READ-WRITE SUBROUTINE
/
	*6420
/
/  READ-WRITE SUBROUTINE TO HANDLE FLOPPY DISK IN 8-BIT MODE
/  ROUTINE LIVES IN FIELD 0 TO BE CALLED FROM FIELD 10
/
/  CALLING SEQUENCE
/
/	CIF 0		/ASSUMED CDF 10, CALLED FROM FIELD 10
/	TAD	TRACK	/TRACK # INTO AC
/	JMS I	(RW
/	BITS		/4000 IF FIELD 10 BUFFER, 2 IF READ, 20 IF UNIT 1
/	OK RETURN	/CDF AND CIF TO 10
/	ERROR		/SECTOR # IN AC
/
/  READS OR WRITES A TRACK AT A TIME. TWO BUFFERS LIVE IN 20-6417
/  EACH OF FIELD 0 AND 10
/
/ USES AUTO-INCREMENT REGISTER 10 OF FIELD 0
X10=10
/
/  AN ALTERNATE ENTRY OF CONTIN (JMP NOT JMS) CAUSES THE
/  SUBROUTINE TO CONTINUE WORKING ON THE SAME TRACK ON WHICH THE
/  ERROR OCCURRED.
/
/  THREE RETRIES ARE DONE ON A SECTOR BEFORE AN ERROR IS DECLARED.
/
SDN=6755
LCD=6751
STR=6753
XDR=6752
SER=6754
FLINIT=6757
/
/
/  USE PART OF PAGE AT 6400 TO SPREAD OUT WRITE LOOP
/  FOR A LITTLE EXTRA SAFETY ON MAKING INTERLEAVE TIMING
/
WRIT1,	TAD	(-10	/8 TIMES THRU 16 BYTE > 128
	DCA	WRTCNT
ST4,	TAD I	X10	/FETCH A BYTE
	STR		/SKIP IF READY TO TRANSFER
	JMP	.-1	/NO (SHOULDN'T HIT THIS ON VT78)
	XDR		/MOVE BYTE TO SILO
	CLA		/CLEAR THE MUMBLE AC
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	TAD I	X10
	STR
	JMP	.-1
	XDR
	CLA
	ISZ	WRTCNT	/THRU WITH SILO?
	JMP	ST4	/NO
	JMP	WRIT2	/REST OF LOOP ON OTHER PAGE
/
WRTCNT,	0		/CONTROL COUNT FOR FILL SILO LOOP
/
	PAGE
/

/ / READ-WRITE ENTRY POINT / / RW, 0 DCA TRCKNO /ARRIVES WITH TRACK # IN AC TAD I RW /DATA FIELD 10, FETCH CONTROL BITS TAD L7100 /FLOPPY CONTROLLER IGNORES TOP 4 BITS; 100 / /BIT IS 8 BIT MODE; CONTROL FOR UNIT, R/W, IN PLACE DCA FN /BUFFER BIT (COMPLEMENTED) ALSO STORED IN FN TAD (17 /SET UP AUTO-INCR REG. DCA X10 TAD (-32 /26 DECIMAL SECTORS PER TRACK DCA SECTOR ISZ RW /POINT TO OK EXIT TAD FN /IF FIELD ZERO BUFFER, NEED TO CDF SPA /SKIP ON FIELD 10 BUFFER, ALREADY SET! CDF 0 RTR /READ/WRITE BIT TO LINK SZL CLA /SKIP IF WRITE JMP READLP /GO TO READ / / WRITE LOOP / WRITLP, CLL CLA CMA RTL /LITERAL -3 FOR RETRY COUNT DCA RETRY WRTRY, TAD FN /RETRY ERROR HERE THREE TIMES JMS LDCMD JMP WRIT1 /OTHER PAGE TO MOVE DATA TO SILO WRIT2, JMS DOIO /RETURN FROM OTHER PAGE TO ACCESS I/O ISZ SECTOR JMP WRITLP XT1, CDF CIF 10 JMP I RW / / READ LOOP / READLP, CLL CLA CMA RTL /LITERAL -3 FOR RETRY COUNT DCA RETRY RDTRY, JMS DOIO /COME HERE TO RETRY I/O TAD FN JMS LDCMD TAD (-40 /32 PASSES THRU 4 BYTES MOVED DCA FLEA ST5, STR JMP .-1 XDR DCA I X10 STR JMP .-1 XDR DCA I X10 STR JMP .-1 XDR DCA I X10 STR JMP .-1 XDR DCA I X10 ISZ FLEA JMP ST5 ISZ SECTOR JMP READLP JMP XT1 / / DO READ OR WRITE I/O FUNCTION / DOIO, 0 TAD FN /SILO FUNCTION, CONVERTED TO READ-WRITE TAD L7004 /BY LITERAL 4 (TOP FOUR BITS IRREL) JMS LDCMD JMS GETSEC /FETCH SECTOR TO AC STR JMP .-1 XDR CLA TAD TRCKNO STR JMP .-1 XDR CLA TAD L7530 /UNIT 1, 8-BIT NO-OP (TOP 4 BITS IGNORED) JMS LDCMD JMP I DOIO / / LOAD COMMAND REGISTER / FLEA=. LDCMD, 0 SDN /SKIP ON DONE JMP .-1 LCD /LOAD COMMAND SER /SKIP ON ERROR JMP I LDCMD ISZ RETRY /TRIED THREE TIMES YET JMP KEEPON /NO, KEEP ON TRYING JMS GETSEC /RETURN SECTOR IN AC ISZ RW /ON ERROR, RETURN ONE FURTHER DOWN JMP XT1 /EXIT TO CALLER WITH SECTOR # IN AC / / ENTRY TO CONTINUE AFTER ERROR / CONTIN, STA /BACK UP EXIT TO GOOD EXIT TAD RW DCA RW TAD FN /SET DATA FIELD TO 0 IF NECESSARY SPA CLA /ALREADY CDF TO 10, SKIP IF OK CDF 0 /NO, SO SET TO 0 JMP I LDCMD /PRETEND OPERATION OK, SO RETURN THRU LDCMD! / KEEPON, FLINIT /DO A RECAL TO SHAKE IT UP TAD FN /RETRYING READ OR WRITE RTR /R/W BIT TO LINK SZL CLA /SKIP ON WRITE JMP RDTRY /RETRY A READ TAD (-200 /BACK UP AUTO INCR TO REFILL SILO FOR WRITE TAD X10 /SINCE THE FLINIT CLEARED SILO DCA X10 JMP WRTRY /SO GO RETRY WRITE / / CONVERT COUNT TO SECTOR / GETSEC, 0 TAD SECTOR /CONVERT -32 TO -1 TO INTERLEAVED SECTOR TAD (15 L7100, CLL /100 BIT SETS 8-BIT MODE, AS LITERAL L7530, SPA SZL /SZL JUST TO MAKE CORRECT LITERAL, NO-OP WAIT TAD (15 L7004, RAL /CONVERTS SILO OPERATION TO READ-WRITE, AS LITERAL JMP I GETSEC / / / TRCKNO, 0 /TRACK NUMBER, INVARIANT THRU CALL SECTOR, 0 /COUNTS -32 UP TO 0; 26 DECIMAL SECTORS PER TRACK FN, 0 /FUNCTION BITS: ALWAYS 100 FOR 8BIT MODE / /20 IF UNIT 1 / /2 IF READ OPERATION (2 IS SILO FETCH; 0 SILO FILL) / /MINUS WORD IF BUFFER IN FIELD 0, PLUS IF FIELD 10 / /CONTROLLER IGNORES TOP 4 BITS OF WORD RETRY, 0 /RETRY COUNTER -3 TO 0 $



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