chdir and friends

This commit is contained in:
rumbledethumps
2025-10-15 23:41:44 -07:00
parent f744f0b8a0
commit 815135f716
7 changed files with 110 additions and 0 deletions

View File

@@ -162,6 +162,14 @@ int __fastcall__ f_closedir (int dirdes);
long __fastcall__ f_telldir (int dirdes); long __fastcall__ f_telldir (int dirdes);
int __fastcall__ f_seekdir (long offs, int dirdes); int __fastcall__ f_seekdir (long offs, int dirdes);
int __fastcall__ f_rewinddir (int dirdes); int __fastcall__ f_rewinddir (int dirdes);
int __fastcall__ f_chmod (const char* path, unsigned char attr, unsigned char mask);
int __fastcall__ f_utime (const char* path, unsigned fdate, unsigned ftime, unsigned crdate, unsigned crtime);
int __fastcall__ f_mkdir (const char* name);
int __fastcall__ f_chdrive (const char* name);
// int __fastcall__ f_getcwd(char* name, unsigned len);
// int __fastcall__ f_setlabel(const char* name);
// int __fastcall__ f_getlabel(const char* path, char* label);
// int __fastcall__ f_getfree(const char* name);
/* Time zone hack */ /* Time zone hack */

14
libsrc/rp6502/chdir.s Normal file
View File

@@ -0,0 +1,14 @@
;
; Ullrich von Bassewitz, 2003-08-12
;
; int __fastcall__ chdir (const char* name);
;
.export _chdir
.import __syschdir
;--------------------------------------------------------------------------
_chdir = __syschdir

16
libsrc/rp6502/f_chdrive.c Normal file
View File

@@ -0,0 +1,16 @@
#include <rp6502.h>
#include <errno.h>
#include <string.h>
int __fastcall__ f_chdrive (const char* name)
{
size_t namelen = strlen (name);
if (namelen > 255) {
errno = EINVAL;
return -1;
}
while (namelen) {
ria_push_char (name[--namelen]);
}
return ria_call_int (RIA_OP_CHDRIVE);
}

19
libsrc/rp6502/f_chmod.c Normal file
View File

@@ -0,0 +1,19 @@
#include <rp6502.h>
#include <errno.h>
#include <string.h>
int __fastcall__ f_chmod (const char* path, unsigned char attr, unsigned char mask)
{
size_t pathlen;
ria_set_a (mask);
pathlen = strlen (path);
if (pathlen > 255) {
errno = EINVAL;
return -1;
}
while (pathlen) {
ria_push_char (path[--pathlen]);
}
ria_push_char (attr);
return ria_call_int (RIA_OP_CHMOD);
}

16
libsrc/rp6502/f_mkdir.c Normal file
View File

@@ -0,0 +1,16 @@
#include <rp6502.h>
#include <errno.h>
#include <string.h>
int __fastcall__ f_mkdir (const char* name)
{
size_t namelen = strlen (name);
if (namelen > 255) {
errno = EINVAL;
return -1;
}
while (namelen) {
ria_push_char (name[--namelen]);
}
return ria_call_int (RIA_OP_MKDIR);
}

21
libsrc/rp6502/f_utime.c Normal file
View File

@@ -0,0 +1,21 @@
#include <rp6502.h>
#include <errno.h>
#include <string.h>
int __fastcall__ f_utime (const char* path, unsigned fdate, unsigned ftime, unsigned crdate, unsigned crtime)
{
size_t pathlen;
ria_set_ax (crtime);
pathlen = strlen (path);
if (pathlen > 255) {
errno = EINVAL;
return -1;
}
while (pathlen) {
ria_push_char (path[--pathlen]);
}
ria_push_int (fdate);
ria_push_int (ftime);
ria_push_int (crdate);
return ria_call_int (RIA_OP_UTIME);
}

16
libsrc/rp6502/syschdir.c Normal file
View File

@@ -0,0 +1,16 @@
#include <rp6502.h>
#include <errno.h>
#include <string.h>
int __fastcall__ _syschdir (const char* name)
{
size_t namelen = strlen (name);
if (namelen > 255) {
errno = EINVAL;
return -1;
}
while (namelen) {
ria_push_char (name[--namelen]);
}
return ria_call_int (RIA_OP_CHDIR);
}