home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 5
/
DATAFILE_PDCD5.iso
/
utilities
/
m
/
makealf
/
Source
/
s
/
gbpb9
< prev
next >
Wrap
Text File
|
1996-11-24
|
900b
|
31 lines
; trivial SWI veneer for OS_GBPB 9 (read directory entries, names only)
; int read_entries(const char *dirname, const char *pattern, int *offsetp,
; char *buffer, int buffer_size);
; returns the number of entries read, or negative if an error occurred
; and stores the new offset to use at *offsetp.
GET h.asmregs
GET h.asmSWIs
AREA |A$$code|, CODE, READONLY
EXPORT read_entries
read_entries
STMFD sp!,{r4-r6,lr}
MOV r6,r1 ; r6 = pattern (0/null for all entries)
LDR r5,[sp,#16] ; r5 = size of buffer
MOV ip,r2
LDR r4,[ip] ; r4 = initial offset
MOV r2,r3 ; r2 = buffer
MOV r3,r5 ; r3 = max number of entries to read
MOV r1,r0 ; r1 = directory name
MOV r0,#9 ; r0 = code -- 9 (names only)
SWI XOS_Bit+SWI_OS_GBPB
STR r4,[ip] ; save new offset
MVNVS r0,#0 ; return -1 if error
MOVVC r0,r3 ; else return number of entries read
LDMFD sp!,{r4-r6,pc}^
END