home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / m / makealf / Source / s / gbpb9 < prev    next >
Text File  |  1996-11-24  |  900b  |  31 lines

  1. ; trivial SWI veneer for OS_GBPB 9 (read directory entries, names only)
  2.  
  3. ; int read_entries(const char *dirname, const char *pattern, int *offsetp,
  4. ;                  char *buffer, int buffer_size);
  5. ; returns the number of entries read, or negative if an error occurred
  6. ; and stores the new offset to use at *offsetp.
  7.  
  8.     GET h.asmregs
  9.     GET h.asmSWIs
  10.  
  11.     AREA |A$$code|, CODE, READONLY
  12.  
  13.     EXPORT read_entries
  14. read_entries
  15.     STMFD    sp!,{r4-r6,lr}
  16.     MOV    r6,r1        ; r6 = pattern (0/null for all entries)
  17.     LDR    r5,[sp,#16]    ; r5 = size of buffer
  18.     MOV    ip,r2
  19.     LDR    r4,[ip]        ; r4 = initial offset
  20.     MOV    r2,r3        ; r2 = buffer
  21.     MOV    r3,r5        ; r3 = max number of entries to read
  22.     MOV    r1,r0        ; r1 = directory name
  23.     MOV    r0,#9        ; r0 = code -- 9 (names only)
  24.     SWI    XOS_Bit+SWI_OS_GBPB
  25.     STR    r4,[ip]        ; save new offset
  26.     MVNVS    r0,#0        ; return -1 if error
  27.     MOVVC    r0,r3        ; else return number of entries read
  28.     LDMFD    sp!,{r4-r6,pc}^
  29.  
  30.     END
  31.