|Input||A = 1 for 1st call, 0 subsequently
B = device (0 to 3)
X = where to put filename (leading byte count)
UTW_S0+1 = block file type ($81 to $8F)
|Output||- none -|
When called repeatedly, returns each filename of a given record type on a device as a leading byte count string at the address given in X in the form D:NAME .
A is set to 1 before the first call to FL$BCAT and 0 on subsequent calls. When there are no more files in the directory the carry is set and B = 238 (end of file error).
B contains the device number - 0 for A:, 1 for B: etc. A record type of $81 in (UTW_S0+1) will do a directory of files, as in the OPL function DIR$. Any other value up to $8F inclusive will do a directory of block files of the given type.
Calling FL$BCAT with UTW_S0+1 = $81 is equivalent to calling FL$CATL. No error is reported if the block file type is outside the range $81-$8F, unless the block file type is less than $80.
; Do a directory of saved diaries LDAA #1 ; A=1 first time FL$BCAT called BRA FIRST ; For each file in directory : LOOP: LDX #TEMP ; print leading byte count string in TEMP PSHX ; pass address to UT$DISP OS UT$DISP DB "%s" ; show leading byte count string DB 13,10 ; CR LF DB 0 ; terminator for format string CLRA ; A=0 on subsequent calls to FL$BCAT FIRST: LDAB #82h ; UTW_S0+1 = block file type for diaries STAB UTW_S0+1 LDX #TEMP ; filenames be placed in TEMP by FL$BCAT LDAB #MY_DEVICE ; which device : 0 - 3 for A: to D: OS FL$BCAT BCC LOOP ; repeat until error returned CMPB #238 ; end-of-file error means normal completion BEQ DONE ERROR: ... ; otherwise report error DONE: ...
|Errors||238 - file not found (normal completion)
194 - battery too low
200 - read pack err
237 - bad record type (if record type <$80 only)
240 - unknown pack
241 - pack not blank
243 - bad device name
245 - write pack err
246 - no pack