A2osX/.Docs/KERNEL.md

815 lines
13 KiB
Markdown
Raw Normal View History

2016-10-22 20:52:00 +00:00
*** Auto generated by docgen.cmd ***
2018-06-17 07:19:20 +00:00
# GetArg
2017-03-30 09:03:23 +00:00
2018-06-17 07:19:20 +00:00
## ASM
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
A = argument index.
**Out:**
CC : success
Y,A = PTR To Arg[A]
CS : Out Of Bound
# FileSearch
2018-06-18 06:22:50 +00:00
Search a file in the provided PATH list
And return, if found, the full path to it.
2018-06-18 07:14:04 +00:00
## C
`int filesearch ( char * filename, char * searchpath, char * fullpath, stat * filestat);`
## ASM
2018-06-14 15:31:36 +00:00
**In:**
2018-06-18 07:14:04 +00:00
`>PUSHWI filestat`
`>PUSHWI fullpath`
`>PUSHWI searchpath`
`>LDYAI filename`
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-18 06:22:50 +00:00
CC : success
DstBuf = FilePath
DstStat = S.STAT
CS : not found
# GetDevByID.A
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A = DevID
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC = OK, CS = ERROR
Y,A = DEVSLOT
note: X Unmodified
# GetDevByName.YA
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = Ptr to device name (C-String)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC = OK, CS = ERROR
X = DEVID
Y,A = DEVSLOT
# GetDevStatus.A
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A = DevID
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Y,A = S.DSTAT
# IOCTL
2018-06-17 07:19:20 +00:00
## C
2018-06-18 06:22:50 +00:00
`int ioctl ( short int id, short int op, void *param);`
2018-06-17 07:19:20 +00:00
## ASM
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
`PUSHWI param`
`lda #op`
`ldy id`
`>SYSCALL IOCTL`
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Y,A = ...
# OpenDir.YA
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = PATH (C-String)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC : success
A = hDIR
CS : error
A = EC
# ReadDir.A
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A = hDIR
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC : success
X = hDIRENT
Y,A = PTR to S.DIRENT
CS : error
A = EC
note : A = 0 means no more entry
# CloseDir.A
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A = hDIR
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
none, always succeed.
2018-06-18 07:14:04 +00:00
# ExpandStr
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = PTR to String to Expand (C-String)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
X = hMem to Expanded String (C-String)
Y,A = PTR to Expanded String
# PutEnv.YA
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = PTR to String NAME=VALUE (C-String)
2018-06-14 15:31:36 +00:00
**Out:**
# SetEnv
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = PTR To Value (PSTR)
PUSHW = PTR To Name (PSTR)
2018-06-14 15:31:36 +00:00
**Out:**
# GetEnv.YA
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = PTR to NAME (PSTR)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC : Y,A = PTR to VALUE (PSTR)
CS : not found
# UnsetEnv.YA
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = PTR To Name (PSTR)
2018-06-14 15:31:36 +00:00
**Out:**
# LoadTxtFile.YA
2018-06-18 06:22:50 +00:00
Load TXT a file in memory (with ending 0)
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = File Path
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Y,A = File Length (without ending 0)
X = hMem of Loaded File
# LoadFile
2018-06-18 06:22:50 +00:00
Load a file in memory
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = AUXTYPE (Handled by....
PUSHB = TYPE ...
PUSHB = MODE ...
PUSHW = PATH ...FOpen)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Y,A = File Length
X = hMem of Loaded File
# ChTyp
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHB = TYPE
PUSHW = PATH
# ChMod
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = UID
PUSHW = PATH
# ChOwn
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = UID
PUSHW = PATH
# ChGrp
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = GID
PUSHW = PATH
# FAdd,FSub,FMult,FDiv,FPwr
2018-06-18 06:22:50 +00:00
Return X+Y, X-Y, X*Y, X/Y, X^Y
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHF = X (Float)
PUSHF = Y (Float)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
On stack (Float)
# Log,Sqr,Exp,Cos,Sin,Tan,ATan
2018-06-18 06:22:50 +00:00
Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x)
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHF = X (Float)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
On stack (Float)
# Float
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
Return 'floated' long
**In:**
2018-06-17 07:19:20 +00:00
PUSHL = X (long)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
On stack (Float)
# LRIntF
2018-06-18 06:22:50 +00:00
Return Float rounded into a long
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHF = X (Float)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
On stack (long)
# GetMem0
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = Size Requested
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC : success
YA = PTR to Mem (ZERO Initialised)
* X = hMem
2018-06-17 07:19:20 +00:00
CS :
A = EC
# GetMem
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = Size Requested
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC : success
YA = PTR to Mem (Uninitialised)
* X = hMem
2018-06-17 07:19:20 +00:00
CS :
A = EC
# FreeMem
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A = hMem To Free
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
none.
(X,Y unmodified)
# GetMemPtr
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A = hMem
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Y,A = PTR to MemBlock
(X unmodified)
# GetMemByID
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A = hMem
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Y,A = ZPMemMgrSPtr = PTR to S.MEM
X unmodified
# NewStr
2018-06-18 06:22:50 +00:00
Create a new copy of this C-String
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = Ptr to source C-String
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC : success
Y,A = PTR to String
X = hMem (PSTR)
CS : error
A = SYS error code
# SListGetByID
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHB = hSList
PUSHW = KeyID
PUSHW = Data Ptr
PUSHW = Key Ptr
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
X,Y = Next KeyID
# SListUpdateByID
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHB = hSList
PUSHW = KeyID
PUSHW = Data Ptr
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
A = Key Length
X,Y = KeyID
# SListAdd
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHB = hSList
PUSHW = Key Ptr
PUSHW = Data Ptr
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
A = Key Length
X,Y = KeyID
# SListLookup
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHB = hSList
PUSHW = Key Ptr
PUSHW = Data Ptr
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
A = Key Length
X,Y = KeyID
# SListNew
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
**Out:**
2018-06-17 07:19:20 +00:00
A=hSList
# SListFree
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A=hSList
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
# GetStkObjProp
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A = hObject (AUX Memory)
Y = Property Index
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Y,A = Property Value
# NewStkObj
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = Size Requested
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC : success
YA = PTR to Mem (Uninitialised)
2018-01-15 16:51:44 +00:00
* X = hMem
2018-06-17 07:19:20 +00:00
CS :
A = EC
# FreeStkObj
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A = hMem To Free (AUX Memory)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
none.
(X,Y unmodified)
# LoadStkObj
2018-06-18 06:22:50 +00:00
Load a file in AUX memory (Stock Objects)
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = AUXTYPE (Handled by....
PUSHB = TYPE ...
PUSHB = MODE ...
PUSHW = PATH ...FOpen)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Y,A = File Length
X = hMem of Loaded Object in AUX mem
# ExecPSNewEnv.YA
# ExecPS.YA (Blocking Parent PID)
# CreatePSNewEnv.YA
# CreatePS.YA (Non Blocking)
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = PTR To Cmd Line
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
A = Child PSID
# GetMemStat.YA
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = Ptr to 24 bytes buffer
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Buffer filled with memory stats
# GetPSStatus.A
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A = PID
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
A = Status Byte
# GetPSStat.YA
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = Ptr to 24 bytes buffer
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Buffer filled with PS stats
# Stat
2018-06-18 06:22:50 +00:00
Return information about a file
## In :
2018-06-18 06:22:50 +00:00
2018-06-17 07:19:20 +00:00
PUSHW = PTR to S.STAT buffer
PUSHW = PTR to Filename (C-String)
## Out :
# MKDir.YA
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = DIR name
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC : success
CS : error
A = EC
# MkNod.YA
2018-06-18 06:22:50 +00:00
return a hFile for a given Device Name
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A=DevName
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC = OK, CS = ERROR
A = hFILE
# MKFIFO
2018-06-18 06:22:50 +00:00
return a hFILE to a new FIFO
2018-06-14 15:31:36 +00:00
**In:**
**Out:**
2018-06-17 07:19:20 +00:00
CC = OK, CS = ERROR
A = hFILE
# FPutC
2018-06-18 06:22:50 +00:00
Print A (char) to hFILE
2018-06-17 07:19:20 +00:00
## C
2018-06-18 07:14:04 +00:00
`int fputc ( int character, hFILE stream );`
2018-06-17 07:19:20 +00:00
## ASM
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-18 06:22:50 +00:00
Y : character
A : stream
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-18 06:22:50 +00:00
CC = success
2018-06-17 07:19:20 +00:00
# PutChar
## C
2018-06-18 06:22:50 +00:00
`int putchar ( int character );`
2018-06-17 07:19:20 +00:00
## ASM
2018-06-18 06:22:50 +00:00
Print A (char) to StdOut
2018-06-14 15:31:36 +00:00
**In:**
2018-06-18 06:22:50 +00:00
A : char to print
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-18 06:22:50 +00:00
CC = success
2018-06-17 07:19:20 +00:00
# PutS
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
Write Str to StdOut, appends '\r\n'
2018-06-18 06:22:50 +00:00
## C
`int puts ( const char * str );`
2018-06-14 15:31:36 +00:00
**In:**
2018-06-18 06:22:50 +00:00
Y,A : CPtr
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-18 06:22:50 +00:00
CC = success
2018-06-17 07:19:20 +00:00
# FPutS
2018-06-18 06:22:50 +00:00
Write Str to FILE
2018-06-18 06:22:50 +00:00
## C
`int fputs ( const char * str, hFILE stream );`
2018-06-14 15:31:36 +00:00
**In:**
2018-06-18 06:22:50 +00:00
PUSHB : hFILE
Y,A: str
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-18 06:22:50 +00:00
CC = success
# PrintF/SPrintF/FPrintF
2018-06-18 06:22:50 +00:00
Prints C-Style String
## C
2018-06-18 06:22:50 +00:00
`int printf ( const char * format, ... );`
`int sprintf ( char * str, const char * format, ... );`
`int fprintf ( FILE * stream, const char * format, ... );`
## ASM
2017-03-30 09:03:23 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PrintF :
2018-06-18 06:22:50 +00:00
PUSH ...
Y,A = PTR to CStr
2018-06-17 07:19:20 +00:00
SPrintF :
2018-06-18 06:22:50 +00:00
PUSH ...
PUSHW = PTR to CStr
Y,A = Ptr to Dst Buffer
2018-06-17 07:19:20 +00:00
FPrintF :
2018-06-18 06:22:50 +00:00
PUSH ...
PUSHW = PTR to CStr
A = hFILE
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-18 06:22:50 +00:00
CC : success
CS : error code from Output
2018-06-14 15:31:36 +00:00
Specifiers :
2018-06-18 06:22:50 +00:00
+ %b : pull 1 byte to Print BIN
+ %B : pull 2 bytes 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
+ %n : pull 1 byte to Print low Nibble HEX
+ %N : pull 1 byte to Print high Nibble HEX
+ %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)
+ \\\\ : Print \
+ \\% : Print %
2018-06-14 15:31:36 +00:00
Modifiers for len and padding :
2018-06-18 06:22:50 +00:00
+ %d : '9' '12'
+ %2d : ' 9' '12'
+ %02d : '09' '12'
+ %11s : 'ABCDEFGH '
+ %011s : 'ABCDEFGH000'
+ %2f : '3.14'
# GetChar
2018-06-18 06:22:50 +00:00
Get char from StdIn
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
none.
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC = success
A = char
2018-06-18 06:22:50 +00:00
# GetC
Get char from Node
2018-06-18 06:22:50 +00:00
## C
`int getc ( FILE * stream );`
## ASM
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A = hNODE
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC = success
A = char
# SScanF
2018-06-18 06:22:50 +00:00
Read formatted data from string
2018-06-17 07:19:20 +00:00
## C
2018-06-18 06:22:50 +00:00
`int sscanf ( const char * s, const char * format, ...);`
2018-06-17 07:19:20 +00:00
## ASM
2018-06-18 06:22:50 +00:00
2018-06-17 07:19:20 +00:00
**In:**
`>PUSHBI Argument Byte count`
`>PUSHWI format`
+ %i : short int
+ %d : byte
+ %I : int
+ %D : word
+ %L : long int
+ %U : dword
+ %h : HEX byte
+ %H : HEX word
2018-06-18 06:22:50 +00:00
2018-06-17 07:19:20 +00:00
`>LDYA s`
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Y,A = Number of arguments filled.
2017-03-30 09:03:23 +00:00
# FOpen
2018-06-18 06:22:50 +00:00
Open a file
2017-03-30 09:03:23 +00:00
## In :
2018-06-18 06:22:50 +00:00
2018-06-17 07:19:20 +00:00
PUSHW = AUXTYPE
PUSHB = TYPE
PUSHB = MODE
SYS.FOpen.R : if R and exists -> ERROR
SYS.FOpen.W : if W and exists -> CREATE
SYS.FOpen.A : Append
SYS.FOpen.T : Open/Append in Text mode
SYS.FOpen.X : Create if not exists
PUSHW = PATH (PSTR)
2017-03-30 09:03:23 +00:00
## Out :
2018-06-18 06:22:50 +00:00
2018-06-17 07:19:20 +00:00
CC : A = hFILE
CS : A = EC
# FClose.A
2017-03-30 09:03:23 +00:00
2018-06-18 06:22:50 +00:00
Close a file
2017-03-30 09:03:23 +00:00
## In :
2018-06-18 06:22:50 +00:00
A = hFILE
2017-03-30 09:03:23 +00:00
## Out :
# FRead
2018-06-18 06:22:50 +00:00
int fread ( void * ptr, int count, FILE * stream );
2017-03-30 09:03:23 +00:00
Read bytes from file
## In :
2018-06-18 06:22:50 +00:00
2018-06-17 07:19:20 +00:00
PUSHW = Dest Ptr
PUSHW = Bytes To Read
PUSHB = hFILE
2017-03-30 09:03:23 +00:00
## Out :
2018-06-18 06:22:50 +00:00
Y,A = Bytes Read
2017-03-30 09:03:23 +00:00
# FWrite
2018-06-18 06:22:50 +00:00
int fwrite ( const void * ptr, int count, FILE * stream );
2017-12-13 06:38:43 +00:00
Write bytes to file
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = Src Ptr
PUSHW = Bytes To Write
PUSHB = hFILE
2017-03-30 09:03:23 +00:00
# Out:
2018-06-18 06:22:50 +00:00
Y,A = Bytes Written
# FFlush.A
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A = hFILE
2017-03-30 09:03:23 +00:00
# FSeek
2018-06-18 06:22:50 +00:00
Set the file-position indicator for hFILE
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = Ptr to Offset (DWORD)
PUSHB = From
PUSHB = hFILE
# FEOF.A
2018-06-18 06:22:50 +00:00
Test the end-of-file indicator for hFILE
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
A = hFILE
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC :
A=0 EOF
A =0 NOT EOF
CS :
# FTell
2018-06-18 06:22:50 +00:00
Return the current value of the file-position indicator
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = Ptr to Offset (DWORD)
PUSHB = hFILE
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Offset = Offset
# Remove.YA
2017-03-30 09:03:23 +00:00
# Rename
2018-06-18 06:22:50 +00:00
Rename a file
2017-03-30 09:03:23 +00:00
## In :
2018-06-18 06:22:50 +00:00
2018-06-17 07:19:20 +00:00
PUSHW = New Name
PUSHW = Old Name
2017-03-30 09:03:23 +00:00
## Out :
2018-06-17 07:19:20 +00:00
# StrToF
2018-06-18 06:22:50 +00:00
Convert String to 40 bits Float
2018-06-17 07:19:20 +00:00
## C
2018-06-18 06:22:50 +00:00
`float strtof (const char* str, char** endptr);`
2018-06-17 07:19:20 +00:00
## ASM
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
`>PUSHWI EndPtr`
`>LDYA str`
**Out:**
On stack (float)
2018-06-17 07:19:20 +00:00
# AToF
2018-06-18 06:22:50 +00:00
Convert String to 40 bits Float
2018-06-17 07:19:20 +00:00
## C
2017-03-30 09:03:23 +00:00
2018-06-18 06:22:50 +00:00
`float atof (const char* str);`
2018-06-17 07:19:20 +00:00
## ASM
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
`>LDYA str`
**Out:**
On stack (float)
2018-06-17 07:19:20 +00:00
# StrToL/StrToUL
2018-06-18 06:22:50 +00:00
Convert String to 32 bits (unsigned) int
2018-06-17 07:19:20 +00:00
## C
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
`long strtol (const char* str, char** endptr, int base);`
2018-06-15 15:15:48 +00:00
`unsigned long strtoul (const char* str, char** endptr, int base);`
2018-06-17 07:19:20 +00:00
## ASM
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
`>PUSHB Base`
`>PUSHWI EndPtr`
`>LDYA str`
**Out:**
On stack (long)
# AToL
2018-06-15 15:15:48 +00:00
2018-06-18 06:22:50 +00:00
Convert String to 32 bits int
2018-06-17 07:19:20 +00:00
## C
2018-06-15 15:15:48 +00:00
2018-06-18 06:22:50 +00:00
`long atol ( const char * str );`
2018-06-17 07:19:20 +00:00
## ASM
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-15 15:15:48 +00:00
`>LDYA str`
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-15 15:15:48 +00:00
On stack (long)
# AToI.YA
2018-06-15 15:15:48 +00:00
2018-06-17 07:19:20 +00:00
## C
2018-06-15 15:15:48 +00:00
2018-06-18 06:22:50 +00:00
`int atoi ( const char * str );`
2018-06-17 07:19:20 +00:00
## ASM
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-15 15:15:48 +00:00
`>LDYA str`
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Y,A = Int
# RealPath.YA
2018-06-18 06:22:50 +00:00
Return the canonicalized absolute pathname
## In :
2018-06-18 06:22:50 +00:00
Y,A = Ptr to Relative Filename (C-String)
## Out :
2018-06-18 06:22:50 +00:00
2018-06-17 07:19:20 +00:00
CC : success
Y,A = Ptr to Full Path (C-String)
X = hMem of Full Path
CS : A = Error Code
# StrLen
2018-06-18 06:22:50 +00:00
Returns Length of C-String
2018-06-17 07:19:20 +00:00
## C
2018-06-18 06:22:50 +00:00
`char * strcat ( char * destination, const char * source );`
2018-06-17 07:19:20 +00:00
## ASM
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = Ptr to CSTR
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Y,A = String length
# StrCat
2018-06-18 06:22:50 +00:00
Append SRC to DST
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = Ptr to SRC (CSTR)
PUSHW = Ptr to DST (CSTR)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
DST = DST+SRC
# StrCpy
2018-06-17 07:19:20 +00:00
2018-06-18 06:22:50 +00:00
Copy string
2018-06-17 07:19:20 +00:00
## C
2018-06-18 06:22:50 +00:00
`char * strcpy ( char * destination, const char * source );`
2018-06-17 07:19:20 +00:00
## ASM
2018-06-18 06:22:50 +00:00
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = Ptr to SRC (CSTR)
PUSHW = Ptr to DST (CSTR)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
DST = SRC
# StrMatch
2018-06-18 06:22:50 +00:00
2017-03-30 09:03:23 +00:00
Compare a String against pattern
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = PTR to Pattern (e.g. '*test?.txt')
PUSHW = PTR to Src String
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC : match
CS : no match
# StrUpr/StrLwr
2018-06-18 06:22:50 +00:00
2017-03-30 09:03:23 +00:00
Convert string to UPPERCASE/lowercase
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
Y,A = PTR to String (CSTR)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
Uppercased/lowercased String in Buffer
2018-01-15 16:51:44 +00:00
# StrCmp
2018-06-18 06:22:50 +00:00
2018-01-15 16:51:44 +00:00
Compare 2 strings
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = Ptr to String1 (CSTR)
PUSHW = Ptr to String2 (CSTR)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
DST = SRC
2018-01-15 16:51:44 +00:00
# StrICmp
2018-06-18 06:22:50 +00:00
2018-01-15 16:51:44 +00:00
Compare 2 strings
2018-06-14 15:31:36 +00:00
**In:**
2018-06-17 07:19:20 +00:00
PUSHW = Ptr to String1 (CSTR)
PUSHW = Ptr to String2 (CSTR)
2018-06-14 15:31:36 +00:00
**Out:**
2018-06-17 07:19:20 +00:00
CC, Y,A=0
CS, Y,A > 0 or < 0
# Time
2018-06-18 06:22:50 +00:00
Get System Time in Buffer
## In :
2018-06-18 06:22:50 +00:00
Y,A = PTR to S.TIME
## Out :
2018-06-18 06:22:50 +00:00
S.TIME filled with System date/time
# PTime2Time
2018-06-18 06:22:50 +00:00
Convert ProDOS Time To S.TIME
## In :
2018-06-18 06:22:50 +00:00
2018-06-17 07:19:20 +00:00
PUSHW = Dst PTR To S.TIME
PUSHW = Src PTR to ProDOS DATE/TIME (DWORD)
# CTime2Time
2018-06-18 06:22:50 +00:00
Convert CTIME to S.TIME
## In :
2018-06-18 06:22:50 +00:00
2018-06-17 07:19:20 +00:00
PUSHW = Dst PTR To S.TIME
PUSHW = Src CTIME DWORD
# StrFTime
2018-06-17 07:19:20 +00:00
## C
2018-06-18 06:22:50 +00:00
Convert S.TIME struct to CSTR
2018-06-17 07:19:20 +00:00
`size_t strftime (char* ptr, size_t maxsize, const char* format, const struct tm* timeptr );`
## ASM
2018-06-18 06:22:50 +00:00
2018-06-17 07:19:20 +00:00
**In:**
PUSHW = Dst PTR To CSTR Buf
PUSHW = Src PTR To Format String
%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 = Src PTR To S.Time
**Out:**
none. always succeed.