27 KiB
*** Auto generated by docgen.cmd ***
Copyright
Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
Shift
ASM
A = argument index.
RETURN VALUE
CC : success
Y,A = PTR To Arg[A]
CS : Out Of Bound
ArgV
ASM
A = argument index.
RETURN VALUE
CC : success
Y,A = PTR To Arg[A]
CS : Out Of Bound
Arg2ArgV
Expand String and convert to StrV List
C
short int arg2argv(char* args, char* argv[])
ASM
>PUSHW args
>PUSHW argv
>SYSCALL Arg2ArgV
RETURN VALUE
A = Arg count
ArgVDup
ASM
Y,A = Src StrV
RETURN VALUE
X = hMem of new StrV
A = Str Count
LoadDrv
ASM
Y,A = PTR to "NAME.DRV [PARAM]" C-String
RETURN VALUE
none
InsDrv
C
void * insdrv (void * src, void * crvcsstart, void * drvcssize, void * drvend);
ASM
>PUSHW DRV.END
>PUSHW DRV.CS.SIZE
>PUSHW DRV.CS.START
>LDYA L.SRC
>SYSCALL insdrv
RETURN VALUE
Y,A = Ptr to installed driver
GetDevByName
Y,A = Ptr to device name (C-String)
RETURN VALUE
CC = OK, CS = ERROR
Y,A = FD
X = hFD
MkFD
C
short int mkfd(short int type, );
ASM
>PUSHB DevID
>PUSHW S.DIB
>SYSCALL MkFD
RETURN VALUE
MKDev
Create a hDEV
C
hDEV mkdev (S.FD *fd, const char *devname)
ASM
>PUSHW fd
>PUSHW devname
>SYSCALL mkdev
RETURN VALUE
A = hDEV
IOCTL
C
int ioctl(short int hFD, short int request, void *param);
ASM
>PUSHB hDEV
>PUSHB request
>PUSHW param
>SYSCALL IOCTL
RETURN VALUE
Y,A = ...
OpenDir
C
short int hDIR opendir (const char * dirpath);
ASM
>LDYA dirpath
>SYSCALL opendir
RETURN VALUE
CC : success
A = hDIR
CS : error
A = EC
ReadDir
C
struct dirent *readdir (short int hDIR);
ASM
lda hDIR
>SYSCALL readdir
RETURN VALUE
CC : success
X = hDIRENT
Y,A = PTR to S.DIRENT
CS : error
A = EC
note : A = 0 means no more entry
CloseDir
C
void closedir(hDIR);
ASM
lda hDIR
>SYSCALL closedir
RETURN VALUE
none, always succeed.
SetEnv
Change or add an environment variable
C / CSH
int setenv(const char *name, const char *value);
ASM
>PUSHW name
>PUSHW value
>SYSCALL setenv
RETURN VALUE
GetEnv
searches the environment list to find the environment variable name,
and returns a pointer to the corresponding value string.
C / CSH
char *getenv(const char *name, char *value);
ASM
>PUSHW name
>PUSHW value
>SYSCALL getenv
RETURN VALUE
CC : Y,A = PTR to VALUE (C-String)
CS : not found
PutEnv
Change or add an environment variable, string is 'NAME=VALUE'
C / CSH
int putenv(char *string);
ASM
>PUSHW string
>SYSCALL putenv
RETURN VALUE
UnsetEnv
Remove an environment variable
C / CSH
int unsetenv(const char *name);
ASM
>PUSHW name
>SYSCALL unsetenv
RETURN VALUE
Add32,Sub32,Mul32,IMul32,Div32,IDiv32,Mod32,IMod32,Cmp32,ICmp32
Return X+Y, X-Y, X*Y, X/Y, X mod Y....
ASM
>PUSHL X (long)
>PUSHL Y (long)
>FPU add32
...
RETURN VALUE
On stack (long)
FAdd,FSub,FMul,FDiv,FPwr
Return X*Y, X/Y, X+Y, X-Y
C
float pwr ( float x, float y);
ASM
>PUSHF X (float)
>PUSHF Y (float)
>FPU fmul
>FPU fdiv
>FPU fmod
TODO
>FPU fadd
>FPU fsub
>FPU fpwr
RETURN VALUE
On stack (float)
Log,Sqr,Exp,Cos,Sin,Tan,ATan
Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x)
C
float log ( float x);
float sqr ( float x);
float exp ( float x);
float cos ( float x);
float sin ( float x);
float tan ( float x);
float atan ( float x);
ASM
>PUSHF x (Float)
>FPU log
RETURN VALUE
On stack (Float)
float
Return 'floated' long
C
`float f = (float)l;
ASM
>PUSHL l
(long)
>FPU float
RETURN VALUE
On stack (float)
lrintf
Return float rounded into a long
C
long int lrintf (float x);
ASM
>PUSHF x
>FPU lrintf
RETURN VALUE
On stack (long)
MD5
Return MD5 Hash for input String
C
void md5 (const char* str, char* digest);
ASM
>PUSHW str
>PUSHW digest
>SYSCALL md5
RETURN VALUE
CC
MD5Init
Initialize a MD5 computation
C
short int md5init();
ASM
>SYSCALL MD5Init
RETURN VALUE
A = hMem To S.MD5
MD5Update
Add Data to MD5 computation
C
void md5update (short int md5, char* data, int len);
ASM
>PUSHB md5
>PUSHW data
>PUSHW len
>SYSCALL MD5Update
RETURN VALUE
MD5Finalize
C
void md5finalize (short int md5, char* digest);
ASM
>PUSHB md5
>PUSHW digest
>SYSCALL MD5Finalize
RETURN VALUE
Realloc
C
void *realloc(short int hMem, int size);
ASM
>PUSHB hMem
>PUSHW size
>SYSCALL realloc
RETURN VALUE
YA = ptr
X = hMem
GetMem
Y,A = Size Requested
RETURN VALUE
CC : success
YA = PTR to Mem (Uninitialised)
- X = hMem
CS :
A = EC
Free
Y,A = Ptr To Free
RETURN VALUE
none.
(X unmodified)
FreeMem
A = hMem To Free
RETURN VALUE
none.
(X unmodified)
GetMemPtr
A = hMem
RETURN VALUE
Y,A = PTR to MemBlock
(X unmodified)
NewStkObj
Y,A = Size Requested
RETURN VALUE
CC : success
YA = PTR to Mem (Uninitialised)
- X = hMem
CS :
A = EC
GetStkObjPtr
ASM
lda hStkObj
>SYSCALL GetStkObjPtr
RETURN VALUE
FreeStkObj
A = hMem To Free (AUX Memory)
RETURN VALUE
none.
(X,Y unmodified)
Online
Get ProDOS Volume Info
C
int online(short int volid, void *buf);
ASM
>PUSHB volid
>PUSHW buf
>SYSCALL Online
RETURN VALUE
ChTyp
Change Type of a ProDOS File
C
int chtyp(const char *filepath, short int filetype);
ASM
>PUSHW filepath
>PUSHB filetype
>SYSCALL ChTyp
RETURN VALUE
ChAux
Change AuxType of a ProDOS File
C
int chaux(const char *filepath, int auxtype);
ASM
>PUSHW filepath
>PUSHW auxtype
>SYSCALL ChAux
RETURN VALUE
SetAttr
Change Attributes of a ProDOS File
C
int setattr(const char *filepath, short int attributes);
ASM
>PUSHW filepath
>PUSHB attributes
>SYSCALL setattr
RETURN VALUE
ExecL
C / CSH
short int execl(const char *cmdline, short int flags);
ASM
>PUSHW cmdline
>PUSHB flags
>SYSCALL execl
RETURN VALUE
A = Child PSID
ExecV
C / CSH
short int execv(const char* argv[], short int flags);
ASM
>PUSHW argv
>PUSHB flags
>SYSCALL execv
RETURN VALUE
A = Child PSID
Fork
C
short int fork();
ASM
>SYSCALL fork
RETURN VALUE
A = Child PSID
Kill
C
int kill(short int pid, short int sig);
ASM
>PUSHB pid
>PUSHB sig
>SYSCALL kill
RETURN VALUE
LoadTxtFile
Load TXT a file in memory (with ending 0)
C
int loadtxtfile ( const char * filename );
ASM
>LDYA filename
>SYSCALL loadtxtfile
RETURN VALUE
Y,A = File Length (without ending 0)
X = hMem of Loaded File
LoadFile
Load a file in memory
C
int loadfile ( const char * filename, short int flags, short int ftype, int auxtype );
ASM
>PUSHW filename
>PUSHB flags
>PUSHB ftype
>PUSHW auxtype
>SYSCALL loadfile
RETURN VALUE
Y,A = File Length
X = hMem of Loaded File
FileSearch
Search a file in the provided PATH list
And return, if found, the full path to it.
C
int filesearch( char *filename, char *searchpath, char *fullpath, stat *filestat);
ASM
>PUSHW filename
>PUSHW fullpath
>PUSHW searchpath
>PUSHW filestat
>SYSCALL filesearch
RETURN VALUE
CC : success
DstBuf = FilePath
DstStat = S.STAT
CS : not found
GetMemStat
Y,A = Ptr to 24 bytes buffer
RETURN VALUE
Buffer filled with memory stats
GetPWUID
C
int getpwuid(short int uid, S.PW *passwd);
ASM
PUSHB uid
>PUSHW passwd
>SYSCALL getpwuid
RETURN VALUE
GetGRGID
C
int getgrgid(short int gid, S.GRP *group);
ASM
>PUSHB gid
>PUSHW group
>SYSCALL getpwname
RETURN VALUE
CloseSession
C
int closesession(short int hSID);
ASM
>PUSHB hSID
>SYSCALL CloseSession
RETURN VALUE
OpenSession
C
short int hSID opensession(const char *name, const char *passwd);
ASM
>PUSHW name
>PUSHW passwd
>SYSCALL OpenSession
RETURN VALUE
GetPWName
C
int getpwname(const char* name, S.PW *passwd);
ASM
>PUSHW name
>PUSHW passwd
>SYSCALL getpwname
RETURN VALUE
GetGRName
C
int getgrgid(const char* name, S.GRP *group);
ASM
>PUSHW name
>PUSHW group
>SYSCALL getpwname
RETURN VALUE
PutPW
C
int putpw(S.PW* passwd);
ASM
>PUSHW passwd
>SYSCALL putpw
RETURN VALUE
PutGR
C
int putgr(S.GRP *group);
ASM
>PUSHW group
>SYSCALL putgr
RETURN VALUE
SListGetData
ASM
>PUSHB hSList
>PUSHW KeyID
>PUSHW DataPtr
(0 if KERNEL should allocate a buffer)
>PUSHW DataLen
(Data bytes to return, 0 if String mode)
>PUSHW DataOfs
(Start offset in Data)
>SYSCALL SListGetData
RETURN VALUE
Y,A = Byte Count
X = hMem (if DataPtr = 0)
SListAddData
ASM
>PUSHB hSList
>PUSHW KeyID
>PUSHW DataPtr
>PUSHW DataLen
(Data bytes to add, 0 if String mode)
>SYSCALL SListAddData
RETURN VALUE
SListSetData
ASM
>PUSHB hSList
>PUSHW KeyID
>PUSHW DataPtr
>PUSHW DataLen
(Data bytes to set, 0 if String mode)
>SYSCALL SListSetData
RETURN VALUE
SListGetByID
ASM
>PUSHB hSList
>PUSHW KeyID
>PUSHW KeyPtr
>SYSCALL SListGetByID
RETURN VALUE
Y,A = Next KeyID
SListNewKey
ASM
>PUSHB hSList
>PUSHW KeyPtr
>PUSHW ScopeID
>SYSCALL SListNewKey
RETURN VALUE
Y,A = KeyID
X = KeyLen
SListLookup
ASM
>PUSHB hSList
>PUSHW KeyPtr
>PUSHW ScopeID
>SYSCALL SListLookup
RETURN VALUE
Y,A = KeyID
X = Key Length
SListFree
ASM
lda hSList
>SYSCALL SListFree
RETURN VALUE
SListNew
ASM
lda Opt
>SYSCALL SListNew
RETURN VALUE
A=hSList
ChMod
change permissions of a file
C
int chmod(const char *pathname, int mode);
ASM
>PUSHW pathname
>PUSHW mode
>SYSCALL chmod
RETURN VALUE
FStat
Return information about a hFILE
C
int fstat(short int hFILE, struct stat *statbuf);
ASM
>PUSHB hFILE
>PUSHW statbuf
>SYSCALL fstat
RETURN VALUE
Stat
Return information about a file
C
int stat(const char *pathname, struct stat *statbuf);
ASM
>PUSHW pathname
>PUSHW statbuf
>SYSCALL stat
RETURN VALUE
MKDir
create a directory
C
int mkdir(const char *pathname, int mode);
ASM
>PUSHW pathname
>PUSHW mode
>SYSCALL mkdir
RETURN VALUE
CC : success
CS : error
A = EC
MKFIFO
return a pathname to a new FIFO
C
hFILE mkfifo(const char *pathname, int mode);
ASM
>PUSHW pathname
>PUSHW mode
>SYSCALL mkfifo
RETURN VALUE
CC = OK, CS = ERROR
A = hFILE
MkNod
Create a special or ordinary file.
(CDEV, BDEV, DSOCK, SSOCK, PIPE)
C
hFILE mknod(const char *pathname, int mode, hFD fd);
ASM
>PUSHW pathname
>PUSHW mode
>PUSHB fd
>SYSCALL mknod
RETURN VALUE
CC = OK, CS = ERROR
A = hFILE
pipe
C
hFD pipe(int size);
ASM
>LDYA size
>SYSCALL pipe
RETURN VALUE
CC = OK, CS = ERROR
A = hFD
fputc (BLOCKING)
Print A (char) to hFILE
C
int fputc ( hFILE stream , short int character );
ASM
>PUSHB stream
>PUSHB character
>SYSCALL fputc
RETURN VALUE
CC = success
putchar (BLOCKING)
Print A (char) to StdOut
C
int putchar ( short int character );
ASM
lda character
>SYSCALL putchar
RETURN VALUE
CC = success
puts (BLOCKING)
Write Str to StdOut, appends '\r\n'
C
int puts ( const char * str );
ASM
>LDYAI str
>SYSCALL PutS
RETURN VALUE
CC = success
fputs (BLOCKING)
Write Str to hFILE
C
int fputs (hFILE stream, const char * str );
ASM
>PUSHB stream
>PUSHW str
>SYSCALL fputs
RETURN VALUE
CC = success
fgets (BLOCKING)
read bytes from stream into the array
pointed to by s, until n-1 bytes are read, or a is read and
transferred to s, or an end-of-file condition is encountered. The
string is then terminated with a null byte.
C
char *fgets(hFILE stream, char * s, int n);
ASM
>PUSHB hFILE
>PUSHW s
>PUSHW n
>SYSCALL fgets
RETURN VALUE
Y,A: s
CC = success
getchar (BLOCKING)
Get char from StdIn
C
short int getchar ( );
ASM
>SYSCALL getchar
RETURN VALUE
CC = success
A = char
getc (BLOCKING)
Get char from Node
C
short int getc ( short int stream );
ASM
lda stream
>SYSCALL getc
RETURN VALUE
CC = success
A = char
ungetc
push byte back into input stream
C
short int ungetc(short int c, short int stream);
ASM
>PUSHB c
>PUSHB stream
>SYSCALL ungetc
RETURN VALUE
CC = success
A = char
FOpen
Open a file
C
short int fopen ( const char *filename, short int flags, short int ftype, int auxtype );
ASM
>PUSHW filename
>PUSHB flags
- O.RDONLY : if R and exists -> ERROR
- O.WRONLY : if W and exists -> CREATE
- O.TRUNC : Reset Size To 0
- O.APPEND : Append
- O.TEXT : Open/Append in Text mode
- O.CREATE : Create if not exists
>PUSHB ftype
>PUSHW auxtype
TODO: replace flags/ftype/auxtype with mode="w+,t=TYP,x=AUXTYPE" - r = O_RDONLY
- r+ = O_RDWR
- w = O_WRONLY | O_CREAT | O_TRUNC
- w+ = O_RDWR | O_CREAT | O_TRUNC
- a = O_WRONLY | O_CREAT | O_APPEND
- a+ = O_RDWR | O_CREAT | O_APPEND
- ,t=123 or t=$ff or t=TXT
- ,x=12345 or x=$ffff
RETURN VALUE
CC : A = hFILE
CS : A = EC
FClose
Close a file
C
int fclose ( short int stream );
ASM
lda stream
>SYSCALL FClose
RETURN VALUE
FRead (BLOCKING)
Read bytes from file
C
int fread (short int stream, void * ptr, int count );
ASM
>PUSHB stream
>PUSHW ptr
>PUSHW count
>SYSCALL fread
RETURN VALUE
Y,A = Bytes Read
FWrite (BLOCKING)
Write bytes to file
C
int fwrite ( short int stream, const void * ptr, int count );
ASM
>PUSHB stream
>PUSHW ptr
>PUSHW count
>SYSCALL fwrite
RETURN VALUE
Y,A = Bytes Written
FFlush
C
int fflush( short int stream );
ASM
lda stream
>SYSCALL fflush
FSeek
Set the file-position indicator for hFILE
C
int fseek( short int stream, long offset, short int whence );
ASM
>PUSHB stream
>PUSHL offset
>PUSHB whence
>SYSCALL fseek
FEOF
Test the end-of-file indicator for hFILE
C
short int feof( short int stream );
ASM
lda stream
>SYSCALL feof
RETURN VALUE
CC :
A = $ff EOF
A = 0 NOT EOF
CS :
FTell
Return the current value of the file-position indicator
C
long ftell( short int stream );
ASM
lda stream
>SYSCALL ftell
RETURN VALUE
On stack (long)
Remove
Remove a file or directory
C
int remove ( const char *pathname );
ASM
>LDYA pathname
>SYSCALL remove
RETURN VALUE
Rename
Rename a file
C
int rename ( const char * oldpath, const char * newpath );
ASM
>PUSHW oldpath
>PUSHW newpath
>SYSCALL rename
RETURN VALUE
PrintF (BLOCKING)
FPrintF (BLOCKING)
SPrintF
Prints C-Style String
C
int printf ( const char *format, ... );
int fprintf ( short int stream, const char *format, ... );
int sprintf ( char *str, const char *format, ... );
ASM
PrintF : (example is for printing Y,A as integer : format="%I", 2 bytes)
>PUSHW format
>PUSHW i
...
>PUSHBI 2
#bytecount
>SYSCALL PrintF
FPrintF :
>PUSHB hFILE
>PUSHW format
>PUSHW i
...
>PUSHBI 2
#bytecount
>SYSCALL fprintf
SPrintF :
>PUSHW str
>PUSHW format
>PUSHW i
...
>PUSHBI 2
#bytecount
>SYSCALL sprintf
RETURN VALUE
CC : success, Y,A = bytes sent
CS : error, A = code from Output
Specifiers :
- %b : pull 1 byte to Print BIN
- %d : pull 1 byte unsigned DEC 0..255
- %D : pull 2 bytes unsigned DEC 0..65535
- %u : pull 4 bytes long unsigned DEC 0..4294967295
- %e : pull 5 Bytes float (-)1.23456789e+12
- %f : pull 5 Bytes float (-)3.1415
- %h : pull 1 byte to Print HEX
- %H : pull 2 bytes to Print HEX
- %i : pull 1 byte to Print signed DEC -128..127
- %I : pull 2 bytes to Print signed DEC -32768..32767
- %L : pull 4 bytes signed DEC -2147483648..2147483647
- %s : pull 2 bytes ptr to C-Style String
- %S : pull 2 bytes ptr to P-Style String
Modifiers for len and padding :
- %d : '9' '12'
- %2d : ' 9' '12'
- %02d : '09' '12'
- %11s : 'ABCDEFGH '
- %011s : 'ABCDEFGH000'
- %2f : '3.14'
ScanF (BLOCKING)
FScanF (BLOCKING)
SScanF
Read formatted data from string
C
int scanf( const char *format, ... );
int fscanf( short int stream, const char *format, ... );
int sscanf ( const char *s, const char *format, ... );
ASM
ScanF :
>PUSHW format
>PUSHW ptr
...
>PUSHB bytecount
>SYSCALL scanf
FScanF :
>PUSHB stream
>PUSHW format
>PUSHW ptr
...
>PUSHB bytecount
>SYSCALL fscanf
SScanF :
>PUSHW s
>PUSHW format
>PUSHW ptr
...
>PUSHB bytecount
>SYSCALL sscanf
Specifiers :
- %i : short int
- %d : byte
- %I : int
- %D : word
- %L : long int
- %U : dword
- %h : HEX byte
- %H : HEX word
- %s : string
TODO : %10s
RETURN VALUE
A = Number of arguments filled.
StrToF
Convert String to 40 bits Float
C
float strtof (const char* str, char** endptr );
ASM
>PUSHW str
>PUSHWI EndPtr
>SYSCALL StrToF
RETURN VALUE
On stack (float)
AToF
Convert String to 40 bits Float
C
float atof ( const char* str );
ASM
>LDYA str
>SYSCALL atof
RETURN VALUE
On stack (float)
StrToL/StrToUL
Convert String to 32 bits (unsigned) int
C
long strtol (const char* str, char** endptr, int base);
unsigned long strtoul (const char* str, char** endptr, int base);
ASM
>PUSHW str
>PUSHW EndPtr
>PUSHB Base
>SYSCALL StrToL
RETURN VALUE
On stack (long)
atol
Convert String to 32 bits long
C
long atol ( const char * str );
ASM
>LDYA str
>SYSCALL atol
RETURN VALUE
On stack (long)
atoi
Convert String to 16 bits int
C
int atoi ( const char * str );
ASM
>LDYAI str
>SYSCALL atoi
RETURN VALUE
Y,A = int
RealPath
Return the canonicalized absolute pathname
C / CSH
char *realpath(const char *path, char *resolvedpath);
ASM
>PUSHW path
>PUSHW resolvedpath
>SYSCALL realpath
RETURN VALUE
CC : success
Y,A = Ptr to Full Path (C-String Buffer, MLI.MAXPATH+1)
X = hMem of Full Path
CS : A = Error Code
Expand
C
char *expand(const char *str, char *expanded);
ASM
>PUSHW str
>PUSHW expanded
>SYSCALL expand
RETURN VALUE
if expanded == null
Y,A = PTR to Expanded String
X = hMem to Expanded String
if expanded = null
Y,A = strlen
LoadStkObj
Load a file in AUX memory (Stock Objects)
PUSHW = PATH (Handled by....
PUSHB = MODE ...
PUSHB = TYPE ...
PUSHW = AUXTYPE ...FOpen)
RETURN VALUE
Y,A = File Length
X = hMem of Loaded Object in AUX mem
GetStkObj
C
int *ptr getstkobj (short int hStkObj);
ASM
lda hStkObj
>SYSCALL GetStkObj
RETURN VALUE
CC : success
X = hMem
Y,A = ptr
CS : error
A = EC
StrLen
Returns Length of C-String
C
int strlen ( char * str);
ASM
>LDYAI str
>SYSCALL strlen
RETURN VALUE
Y,A = String length
StrCat
Concatenate strings
C
char * strcat ( char * destination, const char * source );
ASM
>PUSHWI destination
>PUSHWI source
>SYSCALL strcat
RETURN VALUE
Y,A = destination
StrCpy
Copy string
C
char * strcpy ( char * destination, const char * source );
ASM
>PUSHWI destination
>PUSHWI source
>SYSCALL strcpy
RETURN VALUE
Y,A = destination
StrDup
Create a new copy of this C-String
C
char * strdup ( char * str);
ASM
Y,A = Ptr to source C-String
CC : success
Y,A = PTR to String
X = hMem (C-String)
CS : error
A = SYS error code
StrUpr/StrLwr
Convert string to UPPERCASE/lowercase
C
int strupr ( char * str);
int strlwr ( char * str);
ASM
>LDYAI str
>SYSCALL strupr
>SYSCALL strlwr
RETURN VALUE
Uppercased/lowercased String in Buffer
Y,A = str
StrCmp
Compare 2 strings
C
int strcmp(const char *s1, const char *s2);
ASM
>PUSHWI s1
>PUSHWI s2
>SYSCALL strcmp
RETURN VALUE
CC : match
CS : no match
CC, Y,A=0
CS, Y,A > 0 or < 0
StrCaseCmp
Compare 2 strings, ignoring case
C
int strcasecmp(const char *s1, const char *s2);
ASM
>PUSHWI s1
>PUSHWI s2
>SYSCALL strcasecmp
RETURN VALUE
CC : match
CS : no match
CC, Y,A=0
CS, Y,A > 0 or < 0
StrVSet
ASM
>PUSHB hSTRV
>PUSHW id
>PUSHW ptr
>SYSCALL StrVSet
RETURN VALUE
StrVGet
ASM
>PUSHB hSTRV
>PUSHW id
>PUSHW ptr
>SYSCALL StrVGet
RETURN VALUE
CC: Y,A = Ptr
CS: Y,A = NULL
StrVNew
ASM
>LDYA size
>SYSCALL StrVNew
RETURN VALUE
StrVFree
ASM
lda hSTRV
>SYSCALL StrVFree
RETURN VALUE
Time
Get System Time in Buffer
C
void time (struct tm* timeptr);
ASM
>PUSHW timer
>SYSCALL time
RETURN VALUE
S.TIME filled with System date/time
StrFTime
C
Convert S.TIME struct to CSTR
void strftime (char* str, const char* format, const struct tm* timeptr );
ASM
>PUSHW str
>PUSHW format
- %a : Abbreviated weekday name : Thu
- %A : Full weekday name : Thursday
- %b : Abbreviated month name : Aug
- %B : Full month name : August
- %d : Day of the month, zero-padded (01-31)
- %H : Hour in 24h format (00-23) 14
- %I : Hour in 12h format (01-12) 02
- %m : Month as a decimal number (01-12) 08
- %M : Minute (00-59) 55
- %p : AM or PM designation PM
- %S : Second (00-61) 02
- %w : Weekday as a decimal number with Sunday as 0 (0-6)
- %y : Year, last two digits (00-99)
- %Y : Year four digits 2001
>PUSHW timeptr
>SYSCALL strftime
RETURN VALUE
none. always succeed.
PTime2Time
Convert ProDOS Time To S.TIME
C
void PTime2Time (long* ptime, const struct tm* timeptr );
ASM
>PUSHW ptime
>PUSHW timer
>SYSCALL PTime2Time
RETURN VALUE
CTime2Time
Convert CTime Time To S.TIME
C
void CTime2Time (long* ctime, const struct tm* timeptr );
ASM
>PUSHW ctime
>PUSHW timer
>SYSCALL CTime2Time
RETURN VALUE
open
C
hFD open(const char *pathname, short int flags);
ASM
>PUSHW pathname
>PUSHB flags
>SYSCALL open
RETURN VALUE
A = hFD
REG File created on ProDOS : T=TXT,X=$0000
close
C
int close(hFD fd);
ASM
lda fd
>SYSCALL close
read
C
int read(hFD fd, void *buf, int count);
ASM
>PUSHB fd
>PUSHW buf
>PUSHW count
>SYSCALL read
RETURN VALUE
CC: Y,A = bytes read
CS: A = EC
write
C
int write(hFD fd, const void *buf, int count);
ASM
>PUSHB fd
>PUSHW buf
>PUSHW count
>SYSCALL write
RETURN VALUE
CC: Y,A = bytes written
CS: A = EC
LSeek
Set the file-position indicator for hFD
C
int lseek( short int hFD, long offset, short int whence );
ASM
>PUSHB hFD
>PUSHL offset
>PUSHB whence
>SYSCALL fseek
ChOwn
C
short int chown(const char *pathname, short int owner, short int group);
ASM
>PUSHW pathname
>PUSHB owner
>PUSHB group
>SYSCALL chown
RETURN VALUE
License
A2osX is licensed under the GNU General Public License.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
The full A2osX license can be found Here.
*** End of Auto generated file ***