23 KiB
*** Auto generated by docgen.cmd ***
Copyright
Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
ArgV
ASM
In:
A = argument index.
RETURN VALUE
CC : success
Y,A = PTR To Arg[A]
CS : Out Of Bound
LoadDrv
ASM
In:
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
In:
>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 = hDev
GetDevStatus
C
int getdevstatus(short int DevID, S.DIB* dstat);
ASM
>PUSHWI S.DIB
lda DevID
>SYSCALL GetDevStatus
RETURN VALUE
MKDev
Create a hDEV
C
hDEV mkdev (S.FD * fd, const char *devname)
ASM
>PUSHW devname
>LDYA fd
`>SYSCALL mkdev
RETURN VALUE
A = hDEV
OpenDir
C
int hDIR opendir (const char * dirpath);
ASM
>LDYA dirpath
>SYSCALL opendir
RETURN VALUE
CC : success
A = hDIR
CS : error
A = EC
ReadDir
C
int readdir (int hDIR, S.DIRENT * dirent);
ASM
>PUSHW dirent
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.
Expand
C
char *expand(const char *str, char *expanded);
ASM
In:
>PUSHW string
>PUSHW expanded
>SYSCALL expand
RETURN VALUE
Y,A = PTR to Expanded String
X = hMem to Expanded String (C-String)
PutEnv
Change or add an environment variable, string is 'NAME=VALUE'
C
int putenv(char *string);
ASM
In:
>PUSHW string
>SYSCALL putenv
RETURN VALUE
SetEnv
Change or add an environment variable
C
int setenv(const char *name, const char *value);
ASM
In:
>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
char *getenv(const char *name, char *value);
ASM
In:
>PUSHW name
>PUSHW value
>SYSCALL getenv
RETURN VALUE
CC : Y,A = PTR to VALUE (C-String)
CS : not found
UnsetEnv
Remove an environment variable
C
int unsetenv(const char *name);
ASM
In:
>PUSHW name
>SYSCALL unsetenv
RETURN VALUE
ChTyp
Change The type of a ProDOS File
C
int chtyp(const char *filepath, const char filetype);
ASM
In:
>PUSHBI filetype
>LDYA filepath
>SYSCALL chtyp
RETURN VALUE
ChOwn
In:
PUSHW = mod
PUSHW = PATH
ChGrp
In:
PUSHW = GID
PUSHW = PATH
Add32,Sub32,Mul32,IMul32,Div32,IDiv32,Mod32,IMod32,Cmp32,ICmp32
Return X+Y, X-Y, X*Y, X/Y, X mod Y....
ASM
In:
>PUSHF X (long)
>PUSHF Y (long)
>FPU add32
...
RETURN VALUE
On stack (long)
FAdd,FSub,FMult,FDiv,FPwr
Return X+Y, X-Y, X*Y, X/Y, X^Y
ASM
In:
>PUSHF X (float)
>PUSHF Y (float)
>FPU fadd
>FPU fsub
>FPU fmult
>FPU fdiv
>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
In:
>PUSHF x (Float)
>FPU log
RETURN VALUE
On stack (Float)
float
Return 'floated' long
C
`float f = (float)l;
ASM
In:
>PUSHL l
(long)
>FPU float
RETURN VALUE
On stack (float)
lrintf
Return float rounded into a long
C
long int lrintf (float x);
ASM
In:
>PUSHF x
>FPU lrintf
RETURN VALUE
On stack (long)
IOCTL
C
int ioctl(short int DevID, int request, void * param );
ASM
PUSHWI param
PUSHBI request
lda hDEV
>SYSCALL IOCTL
RETURN VALUE
Y,A = ...
GetMem0
Y,A = Size Requested
RETURN VALUE
CC : success
YA = PTR to Mem (ZERO Initialised)
- X = hMem
CS :
A = EC
GetMem
Y,A = Size Requested
RETURN VALUE
CC : success
YA = PTR to Mem (Uninitialised)
- X = hMem
CS :
A = EC
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
LoadStkObj
Load a file in AUX memory (Stock Objects)
PUSHW = AUXTYPE (Handled by....
PUSHB = TYPE ...
PUSHB = MODE ...
LDYA = PATH ...FOpen)
RETURN VALUE
Y,A = File Length
X = hMem of Loaded Object in AUX mem
GetStkObjPtr
ASM
lda hStkObj
>SYSCALL GetStkObjPtr
RETURN VALUE
FreeStkObj
A = hMem To Free (AUX Memory)
RETURN VALUE
none.
(X,Y unmodified)
ExecL
C
int execl(const char* cmdline, short int flags);
ASM
>PUSHB flags
>LDYA cmdline
>SYSCALL execl
RETURN VALUE
A = Child PSID
ExecV
C
int execv(const char* argv[], short int flags);
ASM
>PUSHB flags
>LDYA argv
>SYSCALL execv
RETURN VALUE
A = Child PSID
Kill
C
int kill(short int pid, short int sig);
ASM
>PUSHB sig
lda pid
>SYSCALL kill
RETURN VALUE
A = Child PSID
LoadTxtFile
Load TXT a file in memory (with ending 0)
C
int loadtxtfile ( const char * filename, short int flags, short int ftype, int auxtype );
ASM
In:
>PUSHW auxtype
>PUSHB ftype
>PUSHB flags
>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
In:
>PUSHW auxtype
>PUSHB ftype
>PUSHB flags
>LDYA filename
>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
In:
>PUSHWI filename
>PUSHWI fullpath
>PUSHWI searchpath
>PUSHWI filestat
RETURN VALUE
CC : success
DstBuf = FilePath
DstStat = S.STAT
CS : not found
GetMemStat
In:
Y,A = Ptr to 24 bytes buffer
RETURN VALUE
Buffer filled with memory stats
StrVDup
In:
Y,A = Src StrV
RETURN VALUE
X = hMem of new StrV
A = Str Count
Str2StrV
Expand String and convert to ArgV List
C
short int str2strv(char* args, char* argv[])
ASM
>PUSHW argv
>LDYA args
>SYSCALL Str2StrV
RETURN VALUE
A = Arg count
GetPWUID
C
int getpwuid(short int uid, S.PW* passwd );
ASM
>PUSHW passwd
lda uid
>SYSCALL getpwuid
RETURN VALUE
GetPWName
C
int getpwname(const char* name, S.PW* passwd );
ASM
>PUSHW passwd
>LDYA name
>SYSCALL getpwname
RETURN VALUE
PutPW
C
int putpw( S.PW* passwd );
ASM
>LDYA passwd
>SYSCALL putpw
RETURN VALUE
SListGetData
ASM
PUSHW DataOfs
(Start offset in Data)
PUSHW DataLen
(Data bytes to return, 0 if String mode)
PUSHW DataPtr
(0 if KERNEL should allocate a buffer)
PUSHW KeyID
lda hSList
>SYSCALL SListGetData
RETURN VALUE
Y,A = Byte Count
X = hMem (if DataPtr = 0)
SListAddData
ASM
PUSHW DataLen
PUSHW DataPtr
PUSHW KeyID
lda hSList
>SYSCALL SListAddData
RETURN VALUE
SListSetData
ASM
PUSHW DataLen
PUSHW DataPtr
PUSHW KeyID
lda hSList
>SYSCALL SListSetData
RETURN VALUE
SListGetByID
ASM
PUSHW KeyPtr
PUSHW KeyID
lda hSList
>SYSCALL SListGetByID
RETURN VALUE
Y,A = Next KeyID
SListNewKey
ASM
PUSHW KeyPtr
lda hSList
>SYSCALL SListNewKey
RETURN VALUE
Y,A = KeyID
X = KeyLen
SListLookup
ASM
PUSHW KeyPtr
lda hSList
>SYSCALL SListLookup
RETURN VALUE
Y,A = KeyID
X = Key Length
SListNew
ASM
>SYSCALL SListNew
RETURN VALUE
A=hSList
SListFree
ASM
lda hSList
>SYSCALL SListFree
RETURN VALUE
Stat
Return information about a file
C
int stat(const char *pathname, struct stat *statbuf);
ASM
In:
>PUSHW statbuf
>LDYA pathname
>SYSCALL stat
RETURN VALUE
MKDir
create a directory
C
int mkdir(const char *pathname, int mode);
ASM
In:
>PUSHW mode
>LDYA pathname
>SYSCALL mkdir
RETURN VALUE
CC : success
CS : error
A = EC
MKFIFO
return a pathname to a new FIFO
C
int mkfifo( char *pathname, int mode );
ASM
In:
>PUSHW mode
>LDYA pathname
>SYSCALL mkfifo
RETURN VALUE
CC = OK, CS = ERROR
A = hFD
MkNod
Create a special or ordinary file.
(CDEV, BDEV, DSOCKS, SSOCK, PIPE)
C
hFILE mknod(const char *pathname, int mode, hFD fd);
ASM
In:
>PUSHB fd
>PUSHW mode
>LDYA pathname
>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
putchar (BLOCKING)
Print A (char) to StdOut
C
int putchar ( int character );
ASM
In:
lda character
>SYSCALL putchar
RETURN VALUE
CC = success
fputc (BLOCKING)
Print A (char) to hFILE
C
int fputc ( hFILE stream , int character );
ASM
In:
>PUSHB character
lda stream
>SYSCALL fputc
RETURN VALUE
CC = success
puts (BLOCKING)
Write Str to StdOut, appends '\r\n'
C
int puts ( const char * str );
In:
ASM
>LDYAI str
>SYSCALL puts
RETURN VALUE
CC = success
fputs (BLOCKING)
Write Str to hFILE
C
int fputs (hFILE stream, const char * str );
ASM
In:
>PUSHW str
lda stream
>SYSCALL fputs
RETURN VALUE
CC = success
PrintF (BLOCKING)
FPrintF (BLOCKING)
SPrintF
Prints C-Style String
C
int printf ( const char * format, ... );
int fprintf ( hFILE stream, const char * format, ... );
int sprintf ( char * str, const char * format, ... );
ASM
In:
PrintF : (example is for printing Y,A as integer : format="%I", 2 bytes)
>PUSHYA
#I
>PUSHBI 2
#bytecount
...
>LDYAI format
>SYSCALL printf
FPrintF :
>PUSHYA
#I
>PUSHBI 2
#bytecount
...
>PUSHWI format
lda hFILE
>SYSCALL fprintf
SPrintF :
>PUSHYA
#I
>PUSHBI 2
#bytecount
...
>PUSHWI format
>LDYAI str
>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
- \b : Print 'BS' (08)
- \e : Print 'ESC' ($1B,27)
- \f : Print 'FF' ($0C,12)
- \n : Print 'LF' ($0A,10)
- \r : Print 'CR' ($0D,13)
- \t : Print 'TAB' ($09,09)
- \v : Print 'VT' ($0B,11)
- \xHH : Print byte with hexadecimal value HH (1 to 2 digits)
- \\ : Print \
- \% : Print %
Modifiers for len and padding :
- %d : '9' '12'
- %2d : ' 9' '12'
- %02d : '09' '12'
- %11s : 'ABCDEFGH '
- %011s : 'ABCDEFGH000'
- %2f : '3.14'
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
In:
>PUSHW n
>PUSHW s
lda hFILE
>SYSCALL fgets
RETURN VALUE
Y,A: s
CC = success
getchar (BLOCKING)
Get char from StdIn
C
int getchar ();
ASM
In:
>SYSCALL getchar
RETURN VALUE
CC = success
A = char
getc (BLOCKING)
Get char from Node
C
int getc ( hFILE stream );
ASM
In:
lda stream
>SYSCALL getc
RETURN VALUE
CC = success
A = char
SScanF
Read formatted data from string
C
int sscanf ( const char * s, const char * format, ... );
ASM
In:
>PUSHW ptr
...
>PUSHBI bytecount
>PUSHWI format
- %i : short int
- %d : byte
- %I : int
- %D : word
- %L : long int
- %U : dword
- %h : HEX byte
- %H : HEX word
- %s : string
TODO : %10s
>LDYA s
>SYSCALL sscanf
RETURN VALUE
A = Number of arguments filled.
FOpen
Open a file
C
hFILE fopen ( const char * filename, short int flags, short int ftype, int auxtype );
In:
ASM
>PUSHWI auxtype
>PUSHBI ftype
>PUSHBI 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
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
>LDYAI filename
RETURN VALUE
CC : A = hFILE
CS : A = EC
FClose
Close a file
C
int fclose ( hFILE stream );
ASM
In:
lda stream
>SYSCALL fclose
RETURN VALUE
FRead (BLOCKING)
Read bytes from file
C
int fread (hFILE stream, void * ptr, int count );
ASM
In:
>PUSHWI count
>PUSHW ptr
lda stream
>SYSCALL fread
RETURN VALUE
Y,A = Bytes Read
FWrite (BLOCKING)
Write bytes to file
C
int fwrite (hFILE stream, const void * ptr, int count );
ASM
In:
>PUSHWI count
>PUSHW ptr
lda stream
>SYSCALL fwrite
RETURN VALUE
Y,A = Bytes Written
FFlush
C
int fflush(hFILE stream);
ASM
In:
lda stream
>SYSCALL fflush
FSeek
Set the file-position indicator for hFILE
C
int fseek(hFILE stream, long offset, short int whence);
ASM
In:
>PUSHBI whence
>PUSHL offset
lda stream
>SYSCALL fseek
FEOF
Test the end-of-file indicator for hFILE
C
int feof(hFILE stream);
ASM
In:
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(hFILE stream);
ASM
In:
lda stream
>SYSCALL ftell
RETURN VALUE
On stack (long)
Remove
Remove a file or directory
C
int remove(const char *pathname);
ASM
In:
>LDYA pathname
>SYSCALL remove
RETURN VALUE
Rename
Rename a file
C
int rename(const char *oldpath, const char *newpath);
ASM
In:
>PUSHW newpath
>LDYA oldpath
>SYSCALL rename
RETURN VALUE
strtof
Convert String to 40 bits Float
C
float strtof (const char* str, char** endptr);
ASM
In:
>PUSHWI EndPtr
>LDYA str
>SYSCALL strtof
RETURN VALUE
On stack (float)
AToF
Convert String to 40 bits Float
C
float atof (const char* str);
ASM
In:
>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
In:
>PUSHB Base
>PUSHWI EndPtr
>LDYAI str
>SYSCALL strtol
RETURN VALUE
On stack (long)
atol
Convert String to 32 bits long
C
long atol ( const char * str );
ASM
In:
>LDYA str
>SYSCALL atol
RETURN VALUE
On stack (long)
atoi
Convert String to 16 bits int
C
int atoi ( const char * str );
ASM
In:
>LDYAI str
>SYSCALL atoi
RETURN VALUE
Y,A = int
RealPath
Return the canonicalized absolute pathname
C
unsigned short int realpath (const char* str, char *resolvedpath);
ASM
In:
>PUSHWI resolvedpath
>LDYA str
>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
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
In:
>PUSHWI source
>LDYAI destination
>SYSCALL strcat
RETURN VALUE
Y,A = destination
StrCpy
Copy string
C
char * strcpy ( char * destination, const char * source );
ASM
In:
>PUSHWI source
>LDYAI destination
>SYSCALL strcpy
RETURN VALUE
Y,A = destination
StrDup
Create a new copy of this C-String
Y,A = Ptr to source C-String
RETURN VALUE
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
In:
>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
In:
>PUSHWI s2
>LDYAI s1
>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
In:
>PUSHWI s2
>LDYAI s1
>SYSCALL strcasecmp
RETURN VALUE
CC : match
CS : no match
CC, Y,A=0
CS, Y,A > 0 or < 0
Time
Get System Time in Buffer
C
time_t time (S.TIME* timer);
ASM
>LDYA timer
>SYSCALL time
RETURN VALUE
S.TIME filled with System date/time
PTime2Time
Convert ProDOS Time To S.TIME
C
int PTime2Time (long* ptime, S.TIME* timer);
ASM
>PUSHW timer
>LDYA ptime
>SYSCALL PTime2Time
RETURN VALUE
CTime2Time
Convert CTime Time To S.TIME
C
int CTime2Time (long* ctime, S.TIME* timer);
ASM
>PUSHW timer
>LDYA ctime
>SYSCALL CTime2Time
RETURN VALUE
StrFTime
C
Convert S.TIME struct to CSTR
void strftime (char* ptr, const char* format, const struct S.TIME* timeptr );
ASM
PUSHW timeptr
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
>LDYA ptr
>SYSCALL strftime
RETURN VALUE
none. always succeed.
open
C
hFD open(const char *pathname, short int flags);
ASM
In:
>PUSHB flags
>LDYA pathname
>SYSCALL open
RETURN VALUE
A = hFD
REG File created on ProDOS : T=TXT,X=$0000
close
C
int close(hFD fd);
ASM
In:
lda fd
>SYSCALL close
read
C
int read(hFD fd, void *buf, int count);
ASM
In:
>PUSHWI count
>PUSHW buf
lda fd
>SYSCALL read
RETURN VALUE
CC: Y,A = bytes read
CS: A = EC
write
C
int write(hFD fd, const void *buf, int count);
ASM
In:
>PUSHWI count
>PUSHW buf
lda fd
>SYSCALL write
RETURN VALUE
CC: Y,A = bytes written
CS: A = EC
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 ***