File DIR.TK

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

/******* MULTI8 DIRECTORY SEARCHER *******
/
/NAME: 	"D^100+"I&3777
/LENGTH:ONE PAGE + TWOPAGE BUFFER
/FUNCTION:THE MODULE SEARCHES THE OS8 DIRECTORY OF
/	THE SPECIFIED DEVICE FOR THE SPECIFIED FILE-
/	NAME. IT THEN RETURNS THE LENGTH OF THE
/	FILE AND THE POSITION OF ITS FIRST BLOCK.
/CONCEPT:THIS MODULE HAS A ONE BLOCK BUFFER TO TRANSFER
/	THE SUCCESSIVE DIRECTORY SEGMENTS INTO. IT THEN
/	SEARCHES THESE SEGMENTS FOR A MATCH WITH THE
/	ENTERED FILENAME, ACCORDING TO THE RULES OF OS8.
/	IT ALSO ACCOUNTS FOR DIRECTORIES WITH MORE THAN
/	ONE EXTRA WORD PER ENTRY. THE NEXT SEGMENT IS
/	COMPUTED FROM THE SEGMENT 'LINK'.
/	PART OF THE FILENAME IS OVERWRITTEN.SEE FORMAT.
/ERRORS:1) DISK TRANSFER ERROR OR DISKQ FULL.
/	2) NAME NOT FOUND IN DIRECTORY
/	3) THE MODULE IS BUSY FOR SOMEONE ELSE.
/TASK CIRCULATION:BETWEEN TRANSFERS
/SUBROUTINES USED:CDTOIF
/USE:
/	CDF FIELD OF 'FILENAME'
/	TAD (POINTER TO INPUT DATA
/	JMS MONITOR
/	  77
/	RETURN		/ERROR IF T THE DATAFIELD IS RESTO

/INPUT FORMAT:
/	"D^S STORAGE DRIVER
/	1		/UNIT #
/	FI;LE;NA;ME	/AS IN OS8

/OUTPUTFORMAT:
/	"NAME"		/UNCHANGED
/	-LENGTH		/-NUMBER OF BLOCKS 
/	0
/	STARTING BLOCK#	/FIRST BLOCK OF THE FILE.

FIXTAB /THE FOLLOWING VARIABLES DISB=ZTEM1 /STARTING BLOF ADDITIONAL INFORMATIO/COUNTS # OF ENTRIES IN 14 /TEMPORARY COUNTER FOR COMPARISON /AUTO15 'RUNS' IN FILENAME FIELD;AUTO16 IN THIS FIELD *200 "D^100+"I&3777 /NAME 600 /3 PAGES;NO CONNECTS DIDTV /RELOCATED POINTER DIDTV, 1 /DUMMY FOR TRANSFER VECTOR 400 /RELOCATED POINTER TO BUFFER DILNK, 0 /CONTENT OF SEGMENT LINK;ALSO BLOCK# /THE MODULE IS ENTERED ONLY ONCE AND THEN DISAPPEARS OUT /OF CORE. SO SOME CODE IS ONCE ONLY! /NOTE THE OVERLAP OF TRANSFERVECTOR AND MODULE HEADER. DIR, DCA DIBLKL //SAVE PNTR TAD I DIBLKL // DCA DINAME //NAME OF MASS STORAGE DRIVER ISZ DIBLKL // TAD I DIBLKL //GET UNIT # AND C7 //YOU NEVER KNOW ! RIF //SET UP CORRECT FIELD FOR TRANSFER TAD (200 //READ;ONE BLOCK DCA DIDTV // TAD I ZMYCDF /REMEMBER CALLER'S FIELD DCA DICDF // TAD DICDF //COPY A FEW MORE TIMES DCA DICDF2 // TAD DICDF // DCA DIRET // ISZ DILNK //BEGIN WITH FIRST SEGMENT DI2, TAD DIDTV+1 //PTR FOR SEARCH IN DIRECTORY DCA DIPTR // CDTOIF TAD DIDTV-1 /DO THE TRANSFER DINAME, 0 JMP DIE DCA DISLOT JMS MONI WAIT DISLOT, 0/TRANSFER ERROR
/NOW PICK UP ALL SPECIALS FROM THIS SEGMENT CDTOIF CLA CMA /SET AUTOINDEX TAD DIDTV+1 DCA AUTO16 TAD I AUTO16 /-# OF ENTRIES IN THIS SEGMENT DCA DISEGCNT TAD I AUTO16 /STARTING BLK #6 /LINK TO NEXT SEGMENT /DONOT LOOK AT TENTATIV-# OF EXTRA WORDS FOR EAXTRA /HERE COMES THE ACTUAL SEARCH THROUGH THE SEGMENT DI3, TAD (-4 /SET UP COUNTER DCA DICNT TAD DIBLKL /AND POINTER TO FILENAME DCA AUTO15 DI6, TAD I AUTO16 /FETCH ENTRY SNA /IS IT <EMPTY>? JMP DI8 /Y DI10, CIA /N;COMPARE DICDF, 0 /CDF TO FILENAME TAD I AUTO15 // CDTOIF SZA CLA JMP DI7 /NO MATCH:GO TO NEXT ENTRY ISZ DICNT /ALL 4 MATCHED? JMP DI9 /NOT YET /THE FILENAME IS FOUND;MOVE AUTO16 TO LENGTH /AND TRANSFER ALSO STARTING BLOCK# DIMATCH,TAD AUTO16 /AUTO16=AUTO16+DIEXTRA TAD DIEXTRA DCA AUTO16 TAD DIBLKL /GO PAST DRIVER'S NAME DCA AUTO15 TAD I AUTO16 /-# OF OS8 BLOCKS SNA /IF THE LENGTH IS ZERO, THIS IS JMP DI4 /JUST AN ENTERED FILE. DICDF2, 0 DCA I AUTO15 // DCA I AUTO15 // TAD DISB // DCA I AUTO15 // JMP DIRET // DI9, TAD I AUTO16 /NEXT ITEM JMP DI10
DI7, TAD DICNT /AUTO16=AUTO16-DICNT-1+DIEXTRA CMA TAD DIEXTRA TAD AUTO16 DCA AUTO16 DI8, TAD I AUTO16 /FETCH LENGTH OF FILE CIA TTING BLK DCA DISB DI4IES DONE? JMP DI3 /N;NK /BUT ALL SEGMENTS DON/N;FETCH NEXT SEGMENT DIERR, CLA CMA /ERROR CODE DIRET, CDF /OVERLAID JMS MONITOR EXIT+SWPOUT DIBLKL, 0 /PNTR TO 'FILENAME' DIPTR, 0 /PNTR WITHIN THE SEGMENT PAGE ZBLOCK 400 /THE SEGMENT BUFFE



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