SEARCH SYS
SEARCH SYSSYM
CR=15
LIMIT=D5
.OFINI
.OFDEF DISK,D.DDB
.OFSIZ MEMSIZ
START: PHDR -1,0,PH$REE!PH$REU
GETIMP MEMSIZ,A5
HEADER: CRLF
TYPECR This program searches every block on a disk for a text pattern.
CRLF
GETDSK: TYPESP What disk do you want to examine?
KBD EXIT
FSPEC DISK(A5)
INIT DISK(A5)
ORB #D$ERC,DISK+D.FLG(A5)
CRLF
GETTXT: TYPESP What text pattern are you looking for?
KBD EXIT
CRLF
GO: CLR DISK+D.REC(A5)
MOV DISK+D.DVR(A5),A0
MOV 24(A0),LIMIT
TYPESP Searching
MOV LIMIT,D1
DCVT 0,OT$TRM!OT$TSP
TYPECR blocks
CRLF
BLOCK: CTRLC EXIT
READ DISK(A5)
SEARCH: MOV #511.,D0
MOV DISK+D.BUF(A5),A3
MOV A2,A4
10$: CALL MATCH
BEQ LIST
INC A3
SOB D0,10$
BR NEXT
LIST: MOV DISK+D.REC(A5),D1
OCVT 7,OT$TRM!OT$TSP!OT$ZER
NEXT: INC DISK+D.REC(A5)
CMM DISK+D.REC(A5),LIMIT
JLO BLOCK
EXIT: CRLF
EXIT
MATCH: MOV A3,A0 ;A0 points to section of data buffer
MOV A4,A1 ;A1 points to search text
10$: MOVB (A1)+,D1
CMPB D1,#CR
BNE 20$
LCC #4
RTN
20$: CMMB D1,(A0)+
BEQ 10$
LCC #0
RTN
END