;*************************** AMUS Program Label ******************************
; Filename: FNDUFD.M68 Date: 11/05/89
; Category: UTIL Hash Code: 646-333-232-232 Version: none
; Initials: WYCH/AM Name: W HARTGERS
; Company: OMEGON HOLLAND Telephone #: 85-40404
; Related Files: None
; Min. Op. Sys.: AMOSL 2.0 Expertise Level: INT
; Special: This program runs ONLY on AMOS 2.0 with extended file structure
; Description: Program to look for ufd block on disk
;
;
;*****************************************************************************
; Important: This program runs ONLY on amos 2.0 with extended file structure
; It's not to be used for disks created and used by older
; file systems!
;
; In case of corrupt ufd-links, you should be able to run this program,
; and re-build the corrupt ufd-list by using DSKDDT or BLKEDT (on this system
; also) will do.
;
;***************************************************************************;
SEARCH SYS
SEARCH SYSSYM
SEARCH TRM
.OFINI
.OFDEF DDB1,D.DDB
.OFDEF ASC,80.
.OFDEF CH,DC.SIZ ; Work field for DEVCHR
.OFDEF SZBLK,4. ; # of blocks on devive
.OFSIZ SIZE
START: GETIMP SIZE,A5
LIN ; Enf of line ?
JEQ FOUT ; Yes, error
BYP ; Bypass blanks
FSPEC DDB1(A5) ; Uphere A2 points to the device name
INIT DDB1(A5) ; Init buffer
DEVCHR DDB1(A5),CH(A5) ; Return chararistics of device
CLR D1
MOVW DDB1+D.FMT(A5),D1 ; D1=Structure of the disk
CMP D1,#2 ; Extended?
BEQ 5$ ; Yep
TYPECR <?Device is traditional format>
EXIT
5$:
MOV CH+DC.BLK(A5),SZBLK(A5) ; Save number of blocks on device
TYPE <Device has > ; Say howmany blocks to check
MOV SZBLK(A5),D1
DCVT 0,OT$TRM
TYPECR < blocks.>
MOV SZBLK(A5),D4 ; Save # of blocks
MOV #0,D3 ; Clear counter
10$:
CMP D3,D4 ; End of physical?
JLE 12$ ; Nope
JMP FINE ; Yes, stop it
12$:
MOV D3,DDB1+D.REC(A5) ; Set up block number
READ DDB1(A5) ; Read block
MOV DDB1+D.BUF(A5),A4 ; A4=start of buffer
CTRLC FINE
25$:
ADD #4.,A4 ; Update pointer
CMPB (A4)+,#4. ; Could it be an UFD block?
JNE 50$ ; Nope
ADD #1,A4 ;
CMPB (A4)+,#6. ; Still UFD?
JNE 50$ ; Nope
CMPB (A4)+,#0. ; Last check also OK?
JNE 50$ ; Nope
;
; assume UFD block (2.0)
;
ADD #28.,A4 ; Index RAD50 file-name
LEA A2,ASC(A5) ; and the ascii field
MOV A4,A1 ; Save pointer
UNPACK ; Unpack file name
UNPACK
MOVB #'.,(A2)+ ;
UNPACK ; and extention
CLRB (A2)+
LEA A2,ASC(A5)
TYPE <Found block : > ; Output req. information
MOV D3,D1
DCVT 0,OT$TRM
TYPE < (>
OCVT 0,OT$TRM
TYPE <)>
TYPE <, first file in it : >
TAB
TTYL @A2 ; and file name
CRLF
50$:
ADD #1,D3 ; Update block #
JMP 10$ ; and try again