File DT.TK

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

/LAST EDIT 1-OCTOBER-75, ES
/LAST EDIT 11-OKTOBER-74, ELC
/DECTAPE BLOCK DRIVER

/NAME:	"D^100+"T&3777   DT
/LENGTH: ONE PAGE
/FUNCTION:TO HANDLE DECTAPE TRANSFERS. IT CAN DO A 
/	SEARCH-ONLY AND A SEARCH-AND-TRANSFER.
/	THE DECTAPE DATATRANSFER VECTOR RESEMBLES
/	THAT OF OS8 EXCEPT FOR THE UNIT NUMBER  AND
/	THE MEANING OF THE LINK TO SAY IN WHICH
/	DIRECTION TO START SEARCHING.
/CONCEPT: BLOCK TRANSFERS TO AND FROM DECTAPE ARE
/	PRESUMABLY VERY COMMON IN BOTH FOREGROUND AND
/	BACKGROUND. THE MASS-STORAGE HANDLER HAS TO RE-
/	SEMBLE OTHER MASS-STORAGE HANDLERS FOR COMPATI-
/	BILITY, AND THIS IS TRUE FOR THE SYSTEM BLOCKDRIVER
/	THERE IS ONE DISTINCT EXCEPTION: WHEN A TRANSFER
/	LENGTH IS SPECIFIED OF 00 BLOCKS THEN THE DISK
/	WILL DO A FULL 20, BUT THIS MODULE USES THIS
/	SIGNAL TO DO A SEARCH-ONLY. THUS MAX TRANSFERLENGTH
/	IS 37 PAGES OR 17 AND A HALF BLOCKS.
/	THE MODULE WORKS 'CONNECTED' TO THE INTERRUPT:
/	AN INTERRUPH A VERY SHORT
/	DELAY TS DOING A SEARCH, AND
NEG.) OVERFLOWS, THE TRAIT FLOWS OVER THE VERY FIRST TIME
/	THEN THE MODULE HAS DONE A SERACH-ONLY.
/ERRORS:WHEN AC UNEQ 0 THERE CAN BE A NUMBER OF DECTAPE ERRORS
/	HAVING CAUSED IT.  TIMING ERRORS IN THE SENSE THAT
/	THE INTERRUPT HAS H CAN ALSO
/	OCCUR.
/TANSFER 3 TIMES  MAX. IFL:
/AGAIN,	CDF FIELD OFDTV
/	JMS MONITOR
/	   CALL
/	   "D^100+"T&3777	/DT
/	 JMP AGAIN	/BUSY RETURN;AC UNCHANGED
/			/ONE CAN BETTER WAIT A FEW SECS.
/	DCA SLOT	/RETURNS WITH SLOT# IN AC
/	JMS MONITOR	/WAIT FOR COMPLETION OR ERROR
/	   WAIT
/SLOT,	   0
/	SZA CLA		/ERROR?
/	ETC.
/


/FORMAT OF DATATRANSFER VECTOR:
/DTV,	RLL.LLL.FFF.UUU	/READ/WRITE;LENGTH(PAGES);FIELD;UNIT
/	BUFFER ADDRESS IN CORE
/	BLOCK# ON DECTAPE


/NOTE THAT THE DECTAPE IS A LITTLE BIT TROUBLESOME
/WITH ITS ERRORFLAG: THIS FLAG CN COME UP
/SPONTANEOUSLY  WHEN A SELECT ERROR OCCURS WHEN
/ONE OF THE UNITS IS SELECTED. THE SKIPCHAIN WOULD
/THEN RUN INTO A FLAG THAT COULD NOT BE CLEARED.
/SO ITS DTSF INSTRUCTION MUST BE REMOVED FROM THE SKIPCHAIN.

/DECTAPE IOT DEFINITIONS: DTSF=6771 DTRA=6761 DTXA=6764 DTCA=6762 DTLA=6766 DTRB=6772 DTLB=6774 DTTRY, "D^100+"T&3777 /NAME DT , -NUMBER OF TRIES 200+1 /ONE PAGE , ONE CONNECT CDTA, DTA /CONNECT DEVICE DTA IN THE SKIPCHAIN DTINT /SO IT JTERRUPT DTFLD, 0 DT, DER-VECTOR TAD I DTV /GD /SAVE BUFFERFIELD TAR OF BLOCKS CML RTR /DIVIDE BY 100 RTR DCA DTUNIT /SAVE DTUNIT ISZ DTV CLA CMA TAD I DTV /GET BUFFER ADDRESS DCA DTBUF ISZ DTV TAD I DTV /GET OS/8 BLOCK CLL RAL /THIS IS THE DECTAPE BLOCK DCA DF /NOTE THAT 'CDTOIF' CLD /IN THE INTERRUPT-ENVJMS I ZRESERV JMS A JMS MONITOR RETURN CONTINUE DCA DTSLOT
ACM3 /SET # OF RETRIES TO 3 DCA DTTRY DTST, /START AFTER ERROR TOO TAD DTUNIT /COMPUTE # OF BLOCKS RTR AND C37 CMA DCA DTNUM DTMON, CDF MONFLD CLA CMA // TAD DRET1A //DTRB-1=DTSF DCA I (DTA^4+SKPBAS //INSERT DTSF IN SKIPCHAIN DCA DTJMP // TAD (7754 // DCA I (7755 //DEPOSIT BLOCKNUMBER IN WC TAD DTMON //FLD=MONFLD DTLB //FOR SEARCH TAD DTUNIT // AND C7400 //UNIT+MOTION TAD (214 //SEARCH DTCA DTXA // JMS MONITOR // WAIT DTA SNA CLA /ERROR ? JMP .+4 /N ISZ DTTRY /TRIED ENOUGH ? JMP DTST /N IFNZRO HRDERR-4 <?> TAD C4 /Y: PASS HRDERR JMS MONITOR HALT SIGNAL CLEAR RELEASE DTSLOT, 0 DTBUF, 0
/NOW THE INTERRUPT PART OF THIS TASK / DTINT, CDF MONFLD DTRB ///ERRORS AND (2700 ///DON'T MIND END OF TAPE SZA CLA JMP DTERR /// DTJMP, 0 ///PROGRAM SWITCH DRET1A, DTRB /// SPA CLA ///END ZONE ? JMP DTURN1 ///YES: REVERSE MOTION DTE BIT TO LINK RTL ///ND -200 TAD I (7754 // ///RIGHT BLOCK ? SNA YES CIA /// SNL /// IAC /// SNL CLA /// DTURN, TAD C400 ///REVERSE MOTION DTURN2, DTXA /// TAD DT7600 ///SET UP WC DCA I (7754 /// DTEXIT, CIF MONFLD /// JMP I ZFSTEXT DTURN1, TAD C200 /// JNL CLA /RIGHT DIRECTION TAD DTBUF /// DCA I (3A /// DCA DTJMP ///DR/// DTLB /// TAD DTFLD /// SPA CLA /// TAD (50-30 /// TAD (30 /// DRET3A, ISZ DTNUM ///LAST BLOCK ? JMP DTURN2 ///N0: NEXT ONE DTERR, DTRA /// AND C200 /// TAD C4 ///CLEAR INT ENABLE DTXA ///STOP MOTION DCA I (DTA^4+SKPBAS///REMOVE DTSF FROM SKIPCHAIN TAD CDTA /// DTRFLD, CDF /// CIF MONFLD /// JMS I ZSOFINT /// DTNUM, 0 ///PASS -NUMBER OF BLOCKS IF ERROR C400, 400 DTBLK, 0 DTV=ZTEM1 DTUNIT, 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