diff --git a/.Docs/KERNEL.md b/.Docs/KERNEL.md index 5ad9979e..d49c6f3c 100644 --- a/.Docs/KERNEL.md +++ b/.Docs/KERNEL.md @@ -1,86 +1,72 @@ *** Auto generated by docgen.cmd *** -# GetArg.A +## GetArg -## In: -+ A = argument index. - -## Out: -+ CC : success - + Y,A = CStr To Arg[A] -+ CS : Out Of Bound +# ASM +**In:** +A = argument index. +**Out:** +CC : success +Y,A = PTR To Arg[A] +CS : Out Of Bound # FileSearch Search a file in the provided PATH list And return, if found, the full path to it. - -## In: +**In:** + PUSHW = Ptr to Search Path (CSTR) %LIB%;/SYS/SLIB + PUSHW = Ptr to File Name (CSTR) + PUSHW = Ptr to DstBuf + PUSHW = Ptr to DstStat - -## Out: +**Out:** + CC : success + DstBuf = FilePath + DstStat = S.STAT + CS : not found # GetDevByID.A - -## IN: +**In:** + A = DevID - -## OUT: +**Out:** + CC = OK, CS = ERROR + Y,A = DEVSLOT + note: X Unmodified # GetDevByName.YA - -## IN: +**In:** + Y,A = Ptr to device name (C-String) - -## OUT: +**Out:** + CC = OK, CS = ERROR + X = DEVID + Y,A = DEVSLOT # GetDevStatus.A - -## IN: +**In:** + A = DevID - -## OUT: +**Out:** + Y,A = S.DSTAT # IOCTL - -## IN: +**In:** + PUSHB = DevID + PUSHB = Operation + PUSHW = Param Block - -## OUT: +**Out:** + Y,A = ... # OpenDir.YA - -## In: +**In:** + Y,A = PATH (C-String) - -## Out: +**Out:** + CC : success + A = hDIR + CS : error + A = EC # ReadDir.A - -## In: +**In:** + A = hDIR - -## Out: +**Out:** + CC : success + X = hDIRENT + Y,A = PTR to S.DIRENT @@ -89,135 +75,113 @@ And return, if found, the full path to it. + note : A = 0 means no more entry # CloseDir.A - -## In: +**In:** + A = hDIR - -## Out: +**Out:** + none, always succeed. # ExpandStr.YA - -## In: +**In:** + Y,A = PTR to String to Expand (C-String) - -## Out: +**Out:** + X = hMem to Expanded String (C-String) + Y,A = PTR to Expanded String # PutEnv.YA - -## In: +**In:** + Y,A = PTR to String NAME=VALUE (C-String) - -## Out: +**Out:** # SetEnv - -## In: +**In:** + PUSHW = PTR To Value (PSTR) + PUSHW = PTR To Name (PSTR) - -## Out: +**Out:** # GetEnv.YA - -## In: +**In:** + Y,A = PTR to NAME (PSTR) - -## Out: +**Out:** + CC : Y,A = PTR to VALUE (PSTR) + CS : not found # UnsetEnv.YA - -## In: +**In:** + Y,A = PTR To Name (PSTR) - -## Out: +**Out:** # LoadTxtFile.YA Load TXT a file in memory (with ending 0) - -## In: +**In:** + Y,A = File Path - -## Out: +**Out:** + Y,A = File Length (without ending 0) + X = hMem of Loaded File # LoadFile Load a file in memory - -## In: +**In:** + PUSHW = AUXTYPE (Handled by.... + PUSHB = TYPE ... + PUSHB = MODE ... + PUSHW = PATH ...FOpen) - -## Out: +**Out:** + Y,A = File Length + X = hMem of Loaded File # ChTyp - -## In: +**In:** + PUSHB = TYPE + PUSHW = PATH # ChMod - -## In: +**In:** + PUSHW = UID + PUSHW = PATH # ChOwn - -## In: +**In:** + PUSHW = UID + PUSHW = PATH # ChGrp - -## In: +**In:** + PUSHW = GID + PUSHW = PATH # FAdd,FSub,FMult,FDiv,FPwr Return X+Y, X-Y, X*Y, X/Y, X^Y - -## In: -+ PUSHW = X (*Float) -+ PUSHW = Y (*Float) -+ Y,A = Dest (*Float) +**In:** ++ PUSHF = X (Float) ++ PUSHF = Y (Float) +**Out:** ++ 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) - -## In: -+ PUSHW = X (*Float) -+ Y,A = Dest (*Float) +**In:** ++ PUSHF = X (Float) +**Out:** ++ On stack (Float) # Float -Return return 'floated' long - -## In: -+ PUSHW = X (*long) -+ Y,A = Dest (*float) +Return 'floated' long +**In:** ++ PUSHL = X (long) +**Out:** ++ On stack (Float) # LRIntF Return Float rounded into a long - -## In: -+ PUSHW = X (*Float) -+ Y,A = Dest (*long) +**In:** ++ PUSHF = X (Float) +**Out:** ++ On stack (long) # GetMem0.YA - -## In: +**In:** + Y,A = Size Requested - -## Out: +**Out:** + CC : success + YA = PTR to Mem (ZERO Initialised) * X = hMem @@ -225,11 +189,9 @@ Return Float rounded into a long + A = EC # GetMem.YA - -## In: +**In:** + Y,A = Size Requested - -## Out: +**Out:** + CC : success + YA = PTR to Mem (Uninitialised) * X = hMem @@ -237,39 +199,31 @@ Return Float rounded into a long + A = EC # FreeMem.A - -## In: +**In:** + A = hMem To Free - -## Out: +**Out:** + none. + (X,Y unmodified) # GetMemPtr.A - -## In: +**In:** + A = hMem - -## Out: +**Out:** + Y,A = PTR to MemBlock + (X unmodified) # GetMemByID.A - -## In: +**In:** + A = hMem - -## Out: +**Out:** + Y,A = ZPMemMgrSPtr = PTR to S.MEM + X unmodified # NewStr.YA Create a new copy of this C-String - -## In: +**In:** + Y,A = Ptr to source C-String - -## Out: +**Out:** + CC : success + Y,A = PTR to String + X = hMem (PSTR) @@ -277,78 +231,62 @@ Create a new copy of this C-String + A = SYS error code # SListGetByID - -## In: +**In:** + PUSHB = hSList + PUSHW = KeyID + PUSHW = Data Ptr + PUSHW = Key Ptr - -## Out: +**Out:** + X,Y = Next KeyID # SListUpdateByID - -## In: +**In:** + PUSHB = hSList + PUSHW = KeyID + PUSHW = Data Ptr - -## Out: +**Out:** + A = Key Length + X,Y = KeyID # SListAdd - -## In: +**In:** + PUSHB = hSList + PUSHW = Key Ptr + PUSHW = Data Ptr - -## Out: +**Out:** + A = Key Length + X,Y = KeyID # SListLookup - -## In: +**In:** + PUSHB = hSList + PUSHW = Key Ptr + PUSHW = Data Ptr - -## Out: +**Out:** + A = Key Length + X,Y = KeyID # SListNew - -## In: - -## Out: +**In:** +**Out:** + A=hSList # SListFree - -## In: +**In:** + A=hSList - -## Out: +**Out:** # GetStkObjProperty.AY - -## In: +**In:** + A = hObject (AUX Memory) + Y = Property Index - -## Out: +**Out:** + Y,A = Property Value # NewStkObj.YA - -## In: +**In:** + Y,A = Size Requested - -## Out: +**Out:** + CC : success + YA = PTR to Mem (Uninitialised) * X = hMem @@ -356,24 +294,20 @@ Create a new copy of this C-String + A = EC # FreeStkObj.A - -## In: +**In:** + A = hMem To Free (AUX Memory) - -## Out: +**Out:** + none. + (X,Y unmodified) # LoadStkObj Load a file in AUX memory (Stock Objects) - -## In: +**In:** + PUSHW = AUXTYPE (Handled by.... + PUSHB = TYPE ... + PUSHB = MODE ... + PUSHW = PATH ...FOpen) - -## Out: +**Out:** + Y,A = File Length + X = hMem of Loaded Object in AUX mem @@ -384,35 +318,27 @@ Load a file in AUX memory (Stock Objects) # CreatePSNewEnv.YA # CreatePS.YA (Non Blocking) - -## In: +**In:** + Y,A = PTR To Cmd Line - -## Out: +**Out:** + A = Child PSID # GetMemStat.YA - -## In: +**In:** + Y,A = Ptr to 24 bytes buffer - -## Out: +**Out:** + Buffer filled with memory stats # GetPSStatus.A - -## In: +**In:** + A = PID - -## Out: +**Out:** + A = Status Byte # GetPSStat.YA - -## In: +**In:** + Y,A = Ptr to 24 bytes buffer - -## Out: +**Out:** + Buffer filled with PS stats # Stat @@ -425,96 +351,153 @@ Return information about a file ## Out : # MKDir.YA - -## In: +**In:** + Y,A = DIR name - -## Out: +**Out:** + CC : success + CS : error + A = EC # MkNod.YA return a hFile for a given Device Name - -## IN: +**In:** + Y,A=DevName - -## OUT: +**Out:** + CC = OK, CS = ERROR + A = hFILE # MKFIFO return a hFILE to a new FIFO - -## IN: - -## OUT: +**In:** +**Out:** + CC = OK, CS = ERROR + A = hFILE -# FPutC.AY +# FPutC.A int fputc ( int character, hFILE stream ); Print A (char) to hFILE - -## In: +**In:** ++ PUSHB : hFILE + A : char to print -+ Y = hFILE - -## Out: +**Out:** + CC = success # PutChar.A int putchar ( int character ); Print A (char) to StdOut - -## In: +**In:** + A : char to print - -## Out: -+ CC = success - -# FPutS -int fputs ( const char * str, hFILE stream ); -Write Str to FILE - -## In: -+ PUSHW : CPtr -+ PUSHB : hFILE - -## Out: +**Out:** + CC = success # PutS.YA int puts ( const char * str ); -Write Str to StdOut, appends '\n' - -## In: +Write Str to StdOut, appends '\r\n' +**In:** + Y,A : CPtr - -## Out: +**Out:** + CC = success +# FPutS.YA +int fputs ( const char * str, hFILE stream ); +Write Str to FILE +**In:** ++ PUSHB : hFILE ++ Y,A: CPtr +**Out:** ++ CC = success + +# PrintF.YA +int printf ( const char * format, ... ); + +# SPrintF.YA +int sprintf ( char * str, const char * format, ... ); + +# FPrintF.A +int fprintf ( FILE * stream, const char * format, ... ); +* +Prints C-Style String +**In:** +PrintF.YA : + + PUSH ... + + Y,A = PTR to CStr +SPrintF.YA : + + PUSH ... + + PUSHW = PTR to CStr + + Y,A = Ptr to Dst Buffer +FPrintF.YA : + + PUSH ... + + PUSHW = PTR to CStr + + A = hFILE +* +**Out:** ++ CC : success ++ CS : error code from Output +Specifiers : + + %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 % +Modifiers for len and padding : + + %d : '9' '12' + + %2d : ' 9' '12' + + %02d : '09' '12' + + %11s : 'ABCDEFGH ' + + %011s : 'ABCDEFGH000' + + %2f : '3.14' + # GetChar Get char from StdIn - -## In: +**In:** + none. - -## Out: +**Out:** + CC = success + A = char # GetC.A Get char from Node - -## In: +**In:** + A = hNODE - -## Out: +**Out:** + CC = success + A = char +# SScanF.YA +Scan a C-String (in progress) +**In:** ++ PUSHW PTR to target var ++ ... ++ PUSHW PTR pattern (ex: "%d.%d.%d.%d") + + %i : short int + + %d : byte + + %I : int + + %D : word +* %L : long int +* %U : dword + + %h : HEX byte + + %H : HEX word ++ Y,A = PTR to String to scan (ex: "192.168.1.5") +**Out:** + # FOpen Open a file @@ -556,8 +539,7 @@ Read bytes from file # FWrite int fwrite ( const void * ptr, int count, FILE * stream ); Write bytes to file - -## In: +**In:** + PUSHW = Src Ptr + PUSHW = Bytes To Write + PUSHB = hFILE @@ -566,25 +548,21 @@ Write bytes to file + Y,A = Bytes Written # FFlush.A - -## In: +**In:** + A = hFILE # FSeek Set the file-position indicator for hFILE - -## In: +**In:** + PUSHW = Ptr to Offset (DWORD) + PUSHB = From + PUSHB = hFILE # FEOF.A Test the end-of-file indicator for hFILE - -## In: +**In:** + A = hFILE - -## Out: +**Out:** + CC : + A=0 EOF + A =0 NOT EOF @@ -592,12 +570,10 @@ Test the end-of-file indicator for hFILE # FTell Return the current value of the file-position indicator - -## In: +**In:** + PUSHW = Ptr to Offset (DWORD) + PUSHB = hFILE - -## Out: +**Out:** + Offset = Offset # Remove.YA @@ -611,131 +587,58 @@ Rename a file ## Out : -# SScanF.YA -Scan a C-String (in progress) - -## In: -+ PUSHW PTR to target var -+ ... -+ PUSHW PTR pattern (ex: "%d.%d.%d.%d") - + %i : short int - + %d : byte - + %I : int - + %D : word -* %L : long int -* %U : dword - + %h : HEX byte - + %H : HEX word -+ Y,A = PTR to String to scan (ex: "192.168.1.5") - -## Out: - -# PrintF.YA/SPrintF.YA/FPrintF.YA -Prints C-Style String - -## In: -PrintF.YA : - + Y,A = PTR to CStr -SPrintF.YA : - + Y,A = PTR to CStr - + PULLW = Ptr to Dst Buffer -FPrintF.YA : - + Y,A = PTR to CStr - + PULLB = hNode - -## Out: -+ CC : success -+ CS : error code from Output -Specifiers : - + %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 % -Modifiers for len and padding : - + %d : '9' '12' - + %2d : ' 9' '12' - + %02d : '09' '12' - + %11s : 'ABCDEFGH ' - + %011s : 'ABCDEFGH000' - + %2f : '3.14' - -# StrToF +## StrToF Convert String to 40 bits Float -## In: -+ PUSHW PTR to EndPtr -+ PUSHW Source String (C-Sring) -+ PUSHW PTR to target buffer (5 bytes) +# C +`float strtof (const char* str, char** endptr);` -## Out: -+ Target buffer filled with a FLOAT (packed) +# ASM +**In:** +`>PUSHWI EndPtr` +`>LDYA str` +**Out:** +On stack (float) -# AToF +## AToF Convert String to 40 bits Float -## In: -+ PUSHW Source String (C-Sring) -+ PUSHW PTR to target buffer (5 Bytes) +# C +`float atof (const char* str);` -## Out: +# ASM +**In:** +`>LDYA str` +**Out:** +On stack (float) -# StrToL -Convert String to 32 bits int +## StrToL (StrToUL) +Convert String to 32 bits (unsigned) int -## In: -+ PUSHB Base -+ PUSHW PTR to EndPtr -+ PUSHW Source String (C-Sring) -+ PUSHW PTR to target buffer DWORD +# C +`long strtol (const char* str, char** endptr, int base);` +`unsigned long strtol (const char* str, char** endptr, int base);` -## Out: - -# StrToUL -Convert String to 32 bits unsigned int - -## In: -+ PUSHB Base -+ PUSHW PTR to EndPtr -+ PUSHW Source String (C-Sring) -+ PUSHW PTR to target buffer DWORD - -## Out: +# ASM +**In:** +`>PUSHB Base` +`>PUSHWI EndPtr` +`>LDYA str` +**Out:** +On stack (long) # AToL Convert String to 32 bits int - -## In: +**In:** + PUSHW Source String (C-Sring) + PUSHW PTR to target buffer DWORD - -## Out: +**Out:** # AToI.YA Convert String to 16 bits int - -## In: +**In:** + Y,A = Source String (C-String) - -## Out: +**Out:** + Y,A = Int # RealPath.YA @@ -752,71 +655,57 @@ Return the canonicalized absolute pathname # StrLen.YA Returns Length of C-String - -## In: +**In:** + Y,A = Ptr to CSTR - -## Out: +**Out:** + Y,A = String length # StrCat Append SRC to DST - -## In: +**In:** + PUSHW = Ptr to SRC (CSTR) + PUSHW = Ptr to DST (CSTR) - -## Out: +**Out:** + DST = DST+SRC # StrCpy Copy string - -## In: +**In:** + PUSHW = Ptr to SRC (CSTR) + PUSHW = Ptr to DST (CSTR) - -## Out: +**Out:** + DST = SRC # StrMatch Compare a String against pattern - -## In: +**In:** + PUSHW = PTR to Pattern (e.g. '*test?.txt') + PUSHW = PTR to Src String - -## Out: +**Out:** + CC : match + CS : no match # StrUpr.YA/StrLwr.YA Convert string to UPPERCASE/lowercase - -## In: +**In:** + Y,A = PTR to String (CSTR) - -## Out: +**Out:** + Uppercased/lowercased String in Buffer # StrCmp Compare 2 strings - -## In: +**In:** + PUSHW = Ptr to String1 (CSTR) + PUSHW = Ptr to String2 (CSTR) - -## Out: +**Out:** + DST = SRC # StrICmp Compare 2 strings - -## In: +**In:** + PUSHW = Ptr to String1 (CSTR) + PUSHW = Ptr to String2 (CSTR) - -## Out: +**Out:** + CC, Y,A=0 + CS, Y,A > 0 or < 0 @@ -845,8 +734,7 @@ Compare 2 strings # StrFTime Convert S.TIME struct to CSTR - -## In: +**In:** + PUSHW = Dst PTR To CSTR Buf + PUSHW = Src PTR To Format String + %a : Abbreviated weekday name : Thu @@ -864,6 +752,5 @@ Convert S.TIME struct to CSTR + %y : Year, last two digits (00-99) + %Y : Year four digits 2001 + PUSHW = Src PTR To S.Time - -## Out: +**Out:** + none. always succeed. diff --git a/.Docs/LIBBLKDEV.md b/.Docs/LIBBLKDEV.md index 02790b02..c21ea2ad 100644 --- a/.Docs/LIBBLKDEV.md +++ b/.Docs/LIBBLKDEV.md @@ -31,26 +31,22 @@ # TrkW16s Write a track (16 sectors) - -## In: +**In:** + PUSHW = Ptr to 16*256 buffer + PUSHB = TrackNum * 4 : 0->140+ + PUSHB = DSSS0000 - -## Out: +**Out:** + CC : success + CS : A = Error + A=0, currently starting/seeking... # TrkWNIB Write a track (NIBBLE) - -## In: +**In:** + PUSHW = Ptr to NIBBLE buffer (0 ended) + PUSHB = TrackNum * 4 : 0->140+ + PUSHB = DSSS0000 - -## Out: +**Out:** + CC : success + CS : A = Error + A=0, currently starting/seeking... diff --git a/.Docs/LIBCRYPT.md b/.Docs/LIBCRYPT.md index 7e4a294a..a82dd8e0 100644 --- a/.Docs/LIBCRYPT.md +++ b/.Docs/LIBCRYPT.md @@ -1,35 +1,49 @@ *** Auto generated by docgen.cmd *** -# MD5 -+ Return MD5 Hash for input String +## MD5 +Return MD5 Hash for input String -## In : - + PUSHW = PTR to Src String - + PUSHW = PTR to Dst MessageDigest Buffer +# C +`void md5 (const char* str, char* digest);` -## Out : - + CC +# ASM +**In:** +`>PUSHW digest` +`>LDYA str` +**Out:** +CC -# MD5Init +## MD5Init +Initialize a MD5 computation -## In : +# C +`HANDLE md5init ();` -## Out : - + A = hMem To S.MD5 +# ASM +**In:** +**Out:** +A = hMem To S.MD5 -# MD5Update +## MD5Update +Add Data to MD5 computation -## In: -* PUSHW DATA LEN -* PUSHW DATA PTR -* PUSHB MD5 Context hMem +# C +`int md5update (HANDLE md5, char* data, int len);` -## Out : +# ASM +**In:** +`>PUSHW len` +`>PUSHW data` +`>LDA.G md5` +**Out:** -# MD5Finalize +## MD5Finalize -## In : - + PUSHW = MessageDigest (PSTR, 16 Bytes, 32 Chars) +Ending 0 - + PUSHB = hMem To S.MD5 +# C +`int md5finalize (HANDLE md5, char* digest);` -## Out: +# ASM +**In:** +`>PUSHW digest` +`>LDA.G md5` +**Out:** diff --git a/.Docs/LIBTCPIP.md b/.Docs/LIBTCPIP.md index 3f74e2ce..46bb70bb 100644 --- a/.Docs/LIBTCPIP.md +++ b/.Docs/LIBTCPIP.md @@ -9,28 +9,23 @@ # ARP.Query + Query ARP Cache and returns HW address - -## In: +**In:** + PUSHW PTR to MAC (to fill) + PUSHW PTR to IP - -## Out: +**Out:** + CC: hit: MAC filled + CS: missed # ARP.Add + Add a static ARP cache record - -## In: +**In:** + PUSHW PTR to MAC + PUSHW PTR to IP # ARP.GetCAche + Return a Ptr to ARP Cache Table - -## In: - -## Out: +**In:** +**Out:** + Y,A = PTR to ARP.CACHE # DNS.Clear @@ -42,28 +37,23 @@ # DNS.Query + Query DNS for specified host - -## In: +**In:** + PUSHW = PTR to IP to fill with cached data * PUSHW = hostname PTR to PSTR - -## Out: +**Out:** + CC: hit: IP filled with address + CS: missed # DNS.Add + Add a static DNS record - -## In: +**In:** + PUSHW = PTR to IP + PUSHW = hostname CSTR to Add # DNS.GetCAche + Return a Ptr to DNS Cache Table - -## In: - -## Out: +**In:** +**Out:** + Y,A = PTR to DNS.CACHE # SKT.New diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 1f2c297c..543a732e 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 75bffefd..056e61b4 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index eb657b36..08589aa0 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -2,6 +2,8 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *-------------------------------------- +KVER .EQ $5C00 92.0 +*-------------------------------------- ZPDRV .EQ $20 32 bytes for DHGR.DRV.... ZPLIB .EQ $40 32 bytes for TCPIPD.. *-------------------------------------- diff --git a/INC/LIBCRYPT.I.txt b/INC/LIBCRYPT.I.txt index 09a0ff64..18e8e297 100644 --- a/INC/LIBCRYPT.I.txt +++ b/INC/LIBCRYPT.I.txt @@ -22,7 +22,7 @@ S.MD5.BITCOUNT .EQ 16 S.MD5.EXTRABIT .EQ 24 S.MD5.FINALIZED .EQ 25 * -S.MD5.SIZE .EQ 26 +S.MD5 .EQ 26 *-------------------------------------- MAN SAVE /A2OSX.BUILD/INC/LIBCRYPT.I diff --git a/INC/MACROS.I.txt b/INC/MACROS.I.txt index f891c50f..30876c2a 100644 --- a/INC/MACROS.I.txt +++ b/INC/MACROS.I.txt @@ -147,6 +147,42 @@ AUTO 4,1 lda (pData),y >PUSHA .EM +*-------------------------------------- + .MA PUSHL.G + ldy #]1+4 +:1 dey + lda (pData),y + >PUSHA + cpy #]1 + bne :1 + .EM +*-------------------------------------- + .MA PULLL.G + ldy #]1 +:1 >PULLA + sta (pData),y + iny + cpy #]1+4 + bne :1 + .EM +*-------------------------------------- + .MA PUSHF.G + ldy #]1+5 +:1 dey + lda (pData),y + >PUSHA + cpy #]1 + bne :1 + .EM +*-------------------------------------- + .MA PULLF.G + ldy #]1 +:1 >PULLA + sta (pData),y + iny + cpy #]1+5 + bne :1 + .EM *-------------------------------------- .MA LDA.G ldy #]1 @@ -224,24 +260,6 @@ AUTO 4,1 pla sta (pData),y .EM -*-------------------------------------- - .MA PUSHF.G - ldy #]1+5 -:1 dey - lda (pData),y - >PUSHA - cpy #]1 - bne :1 - .EM -*-------------------------------------- - .MA PULLF.G - ldy #]1 -:1 >PULLA - sta (pData),y - iny - cpy #]1+5 - bne :1 - .EM *-------------------------------------- * STACK PUSH/PULL *-------------------------------------- diff --git a/LIB/LIBBLKDEV.S.txt b/LIB/LIBBLKDEV.S.txt index 995dd053..522a769d 100644 --- a/LIB/LIBBLKDEV.S.txt +++ b/LIB/LIBBLKDEV.S.txt @@ -291,11 +291,11 @@ D2TrkR16s */-------------------------------------- * # TrkW16s * Write a track (16 sectors) -* ## In: +* **In:** * PUSHW = Ptr to 16*256 buffer * PUSHB = TrackNum * 4 : 0->140+ * PUSHB = DSSS0000 -* ## Out: +* **Out:** * CC : success * CS : A = Error * A=0, currently starting/seeking... @@ -307,11 +307,11 @@ D2TrkW16s */-------------------------------------- * # TrkWNIB * Write a track (NIBBLE) -* ## In: +* **In:** * PUSHW = Ptr to NIBBLE buffer (0 ended) * PUSHB = TrackNum * 4 : 0->140+ * PUSHB = DSSS0000 -* ## Out: +* **Out:** * CC : success * CS : A = Error * A=0, currently starting/seeking... diff --git a/LIB/LIBCRYPT.S.txt b/LIB/LIBCRYPT.S.txt index fe066131..026c9349 100644 --- a/LIB/LIBCRYPT.S.txt +++ b/LIB/LIBCRYPT.S.txt @@ -111,17 +111,20 @@ LIB.LOAD LIB.UNLOAD clc rts */-------------------------------------- -* # MD5 -* Return MD5 Hash for input String -* ## In : -* PUSHW = PTR to Src String -* PUSHW = PTR to Dst MessageDigest Buffer -* ## Out : -* CC +* ## MD5 +* Return MD5 Hash for input String +* # C +* `void md5 (const char* str, char* digest);` +* # ASM +* **In:** +* `>PUSHW digest` +* `>LDYA str` +* **Out:** +* CC *\-------------------------------------- -MD5 >PULLW ZPHashPtr +MD5 >STYA ZPDataPtr + >PULLW ZPHashPtr >PULLYA - >STYA ZPDataPtr >SYSCALL StrLen.YA >STYA ZPDataLen @@ -140,12 +143,16 @@ MD5 >PULLW ZPHashPtr clc .9 rts */-------------------------------------- -* # MD5Init -* ## In : -* ## Out : -* A = hMem To S.MD5 +* ## MD5Init +* Initialize a MD5 computation +* # C +* `HANDLE md5init ();` +* # ASM +* **In:** +* **Out:** +* A = hMem To S.MD5 *\-------------------------------------- -MD5Init >LDYAI S.MD5.SIZE +MD5Init >LDYAI S.MD5 >SYSCALL GetMem.YA bcs .9 @@ -170,16 +177,19 @@ MD5Init >LDYAI S.MD5.SIZE clc .9 rts */-------------------------------------- -* # MD5Update -* ## In: -* PUSHW DATA LEN -* PUSHW DATA PTR -* PUSHB MD5 Context hMem -* ## Out : +* ## MD5Update +* Add Data to MD5 computation +* # C +* `int md5update (HANDLE md5, char* data, int len);` +* # ASM +* **In:** +* `>PUSHW len` +* `>PUSHW data` +* `>LDA.G md5` +* **Out:** *\-------------------------------------- -MD5Update >PULLA get MD5 Context - >SYSCALL GetMemPtr.A - >STYA ZPCtxPtr get MD5 Context +MD5Update >SYSCALL GetMemPtr.A get MD5 Context + >STYA ZPCtxPtr >PULLW ZPDataPtr get DATA >PULLW ZPDataLen get LEN @@ -255,11 +265,14 @@ MD5Update.I ldy #S.MD5.FINALIZED inc ZPDataPtr+1 bra .1 */-------------------------------------- -* # MD5Finalize -* ## In : -* PUSHW = MessageDigest (PSTR, 16 Bytes, 32 Chars) +Ending 0 -* PUSHB = hMem To S.MD5 -* ## Out: +* ## MD5Finalize +* # C +* `int md5finalize (HANDLE md5, char* digest);` +* # ASM +* **In:** +* `>PUSHW digest` +* `>LDA.G md5` +* **Out:** *\-------------------------------------- MD5Finalize >PULLA pha diff --git a/LIB/LIBTCPIP.S.ARP.txt b/LIB/LIBTCPIP.S.ARP.txt index ba89d237..ab8daaab 100644 --- a/LIB/LIBTCPIP.S.ARP.txt +++ b/LIB/LIBTCPIP.S.ARP.txt @@ -17,10 +17,10 @@ ARP.Clear ldx #K.ARPCACHE.SIZE*S.ARPCACHE */-------------------------------------- * # ARP.Query * Query ARP Cache and returns HW address -* ## In: +* **In:** * PUSHW PTR to MAC (to fill) * PUSHW PTR to IP -* ## Out: +* **Out:** * CC: hit: MAC filled * CS: missed *\-------------------------------------- @@ -45,7 +45,7 @@ ARP.Query >PULLW ZPPtrIP IP */-------------------------------------- * # ARP.Add * Add a static ARP cache record -* ## In: +* **In:** * PUSHW PTR to MAC * PUSHW PTR to IP *\-------------------------------------- @@ -86,8 +86,8 @@ ARP.ADD.I sta ARP.TmpCache */-------------------------------------- * # ARP.GetCAche * Return a Ptr to ARP Cache Table -* ## In: -* ## Out: +* **In:** +* **Out:** * Y,A = PTR to ARP.CACHE *\-------------------------------------- ARP.GetCAche >LDYA L.ARP.CACHE diff --git a/LIB/LIBTCPIP.S.DNS.txt b/LIB/LIBTCPIP.S.DNS.txt index 3a3506d2..b92aa248 100644 --- a/LIB/LIBTCPIP.S.DNS.txt +++ b/LIB/LIBTCPIP.S.DNS.txt @@ -17,10 +17,10 @@ DNS.Clear ldx #K.DNSCACHE.SIZE*S.DNSCACHE */-------------------------------------- * # DNS.Query * Query DNS for specified host -* ## In: +* **In:** * PUSHW = PTR to IP to fill with cached data * PUSHW = hostname PTR to PSTR -* ## Out: +* **Out:** * CC: hit: IP filled with address * CS: missed *\-------------------------------------- @@ -125,7 +125,7 @@ DNS.REQUEST lda hDNSSocket1 */-------------------------------------- * # DNS.Add * Add a static DNS record -* ## In: +* **In:** * PUSHW = PTR to IP * PUSHW = hostname CSTR to Add *\-------------------------------------- @@ -176,8 +176,8 @@ DNS.ADD.I sta DNS.TmpCache */-------------------------------------- * # DNS.GetCAche * Return a Ptr to DNS Cache Table -* ## In: -* ## Out: +* **In:** +* **Out:** * Y,A = PTR to DNS.CACHE *\-------------------------------------- DNS.GetCAche >LDYA L.DNS.CACHE diff --git a/README.md b/README.md index f81fddf4..2cf624c2 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ + **A2OSX.BOOT.po** : **(0.9.1)** 140k BOOT disk image with all binaries + **A2OSX.DEV.po** : **(0.9.1)** 140k disk image with ASM binaries, Debug Tools & INClude files -+ **A2OSX.BUILD.po** : **(0.9.1)** 800k BOOT disk image with S-C MASM 3.0 and all binaries (BOOT+DEV) -+ **A2OSX.SRC.po** : **(0.9.1)** 800k disk image with all sources ++ **A2OSX.BUILD.po** : **(0.9.2)** 800k BOOT disk image with S-C MASM 3.0 and all binaries (BOOT+DEV) ++ **A2OSX.SRC.po** : **(0.9.2)** 800k disk image with all sources ## Latest News 2018-06-13 diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index 1f209bf4..75c16bbe 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -115,7 +115,7 @@ CS.RUN.LOOP .4 jsr Wait.Timeout bcc .1 - + >PUSHWI KVER >LDYA L.MSG.GREETINGS >SYSCALL PrintF.YA @@ -257,7 +257,7 @@ MSG.TELNETOPT .DA #IAC,#WILL,#TELOPT.BINARY .DA #IAC,#DO,#TELOPT.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.SEND,#IAC,#SE MSG.TELNETOPT.LEN .EQ *-MSG.TELNETOPT -MSG.GREETINGS .AZ "\r\nA2osX-GeTTY 0.9.1\r\n" +MSG.GREETINGS .AZ "\r\nA2osX-GeTTY %d.%d\r\n" ENV.TERM .AZ "TERM" *-------------------------------------- .DUMMY diff --git a/SBIN/SHELL.S.CSH.txt b/SBIN/SHELL.S.CSH.txt index 82b1cc7f..94180bff 100644 --- a/SBIN/SHELL.S.CSH.txt +++ b/SBIN/SHELL.S.CSH.txt @@ -654,19 +654,24 @@ CSH.GetNumInACC >LDA.G CSH.ACCT >PUSHWI ZPCSHBufPtr >PUSHW ZPCSHBufPtr - >PUSHEA.G CSH.ACC >SYSCALL StrToF + bcs .9 + >PULLF.G CSH.ACC + rts .1 >PUSHBI 10 >PUSHWI ZPCSHBufPtr >PUSHW ZPCSHBufPtr - >PUSHEA.G CSH.ACC >SYSCALL StrToL - rts + bcs .9 + >PULLL.G CSH.ACC + + +.9 rts *-------------------------------------- CSH.ZeroACC lda #0 ldx #5 @@ -927,12 +932,13 @@ CSH.BOPS.SUB >LDA.G CSH.ACCT clc rts -.8 >PUSHEA.G CSH.ACC - >PUSHEA.G CSH.ARG - >LEA.G CSH.ACC +.8 >PUSHF.G CSH.ACC + >PUSHF.G CSH.ARG >SYSCALL FSUB + bcs .9 - rts + >PULLF.G CSH.ACC +.9 rts CSH.BOPS.MUL clc rts diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index ed90f8f7..adb28b4f 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -138,6 +138,7 @@ CS.INIT jsr SetPWD .1 jsr HIS.Init bcs .9 + >PUSHWI KVER >LDYA L.MSG.GREETINGS >SYSCALL PrintF.YA @@ -355,7 +356,7 @@ INTCMDS .AZ "CD" .AZ "TIME" .HS 00 *-------------------------------------- -MSG.GREETINGS .AZ "\r\nA2osX-Shell 0.9.1\r\n\r\n" +MSG.GREETINGS .AZ "\r\nA2osX-Shell %d.%d\r\n\r\n" MSG.PROMPT .AZ "$ " MSG.ECHO .AZ ">%s\r\n" MSG.ERROR .AZ "[$%h]:%S.\r\n" diff --git a/SYS/KERNEL.S.ARG.txt b/SYS/KERNEL.S.ARG.txt index 9f39c73a..c68c76cf 100644 --- a/SYS/KERNEL.S.ARG.txt +++ b/SYS/KERNEL.S.ARG.txt @@ -2,15 +2,16 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 */-------------------------------------- -* # GetArg.A -* ## In: -* A = argument index. -* ## Out: -* CC : success -* Y,A = CStr To Arg[A] -* CS : Out Of Bound +* ## GetArg +* # ASM +* **In:** +* A = argument index. +* **Out:** +* CC : success +* Y,A = PTR To Arg[A] +* CS : Out Of Bound *\-------------------------------------- -K.GetArg.A pha save requested arg# +K.GetArg pha save requested arg# ldy #S.PS.hARGS lda (pPs),y @@ -18,7 +19,7 @@ K.GetArg.A pha save requested arg# plx we want 0 ? - beq .80 yes, returns MemPtr + beq .8 yes, returns MemPtr >STYA ZPPtr1 no, save it @@ -42,8 +43,8 @@ K.GetArg.A pha save requested arg# lda (ZPPtr1) at end of ARGS[] ? beq .9 -.8 >LDYA ZPPtr1 -.80 clc + >LDYA ZPPtr1 +.8 clc rts .9 sec diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 1d9154b8..8588c83d 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -142,12 +142,12 @@ BIN.FindDRV.YA sec * # FileSearch * Search a file in the provided PATH list * And return, if found, the full path to it. -* ## In: +* **In:** * PUSHW = Ptr to Search Path (CSTR) %LIB%;/SYS/SLIB * PUSHW = Ptr to File Name (CSTR) * PUSHW = Ptr to DstBuf * PUSHW = Ptr to DstStat -* ## Out: +* **Out:** * CC : success * DstBuf = FilePath * DstStat = S.STAT diff --git a/SYS/KERNEL.S.D01.txt b/SYS/KERNEL.S.D01.txt index 8f67d8cd..a2141cf5 100644 --- a/SYS/KERNEL.S.D01.txt +++ b/SYS/KERNEL.S.D01.txt @@ -292,7 +292,7 @@ DevMgr.NUL.Code .DA .1 STATUS >PSTR "NULL DEVICE " .DA #S.DSTAT.T.CHAR .DA #0 - .DA #0,#91 + .DA KVER *-------------------------------------- * SYS DEVICE *-------------------------------------- @@ -316,7 +316,7 @@ DevMgr.SYS.Code .DA .1 STATUS >PSTR "A2osX SYS Screen" .DA #S.DSTAT.T.CHAR .DA #0 - .DA #0,#91 + .DA KVER *-------------------------------------- DevMgr.SYS.Open lda #1 sta A2osX.SCRNDEVS diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 3a946ab7..962b6946 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -3,9 +3,9 @@ PREFIX /A2OSX.BUILD AUTO 4,1 */-------------------------------------- * # GetDevByID.A -* ## IN: +* **In:** * A = DevID -* ## OUT: +* **Out:** * CC = OK, CS = ERROR * Y,A = DEVSLOT * note: X Unmodified @@ -24,9 +24,9 @@ K.GetDevByID.A cmp DevMgr.Count rts CC */-------------------------------------- * # GetDevByName.YA -* ## IN: +* **In:** * Y,A = Ptr to device name (C-String) -* ## OUT: +* **Out:** * CC = OK, CS = ERROR * X = DEVID * Y,A = DEVSLOT @@ -71,9 +71,9 @@ K.GetDevDNF lda #MLI.E.NODEV CS from cpx/beq rts */-------------------------------------- * # GetDevStatus.A -* ## IN: +* **In:** * A = DevID -* ## OUT: +* **Out:** * Y,A = S.DSTAT *\-------------------------------------- K.DevClose.A ldx #DEVMGR.CLOSE @@ -88,11 +88,11 @@ K.GetDevStatus.A jmp (pDev) */-------------------------------------- * # IOCTL -* ## IN: +* **In:** * PUSHB = DevID * PUSHB = Operation * PUSHW = Param Block -* ## OUT: +* **Out:** * Y,A = ... *\-------------------------------------- K.IOCTL >PULLB .1+1 diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index 048fcbeb..0cd8fea4 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -3,9 +3,9 @@ PREFIX /A2OSX.BUILD AUTO 4,1 */-------------------------------------- * # OpenDir.YA -* ## In: +* **In:** * Y,A = PATH (C-String) -* ## Out: +* **Out:** * CC : success * A = hDIR * CS : error @@ -59,9 +59,9 @@ K.OpenDir.YA jsr PFT.CheckPathYA .99 rts */-------------------------------------- * # ReadDir.A -* ## In: +* **In:** * A = hDIR -* ## Out: +* **Out:** * CC : success * X = hDIRENT * Y,A = PTR to S.DIRENT @@ -599,9 +599,9 @@ K.ReadDir.A.ConvertTime rts */------------------------------------- * # CloseDir.A -* ## In: +* **In:** * A = hDIR -* ## Out: +* **Out:** * none, always succeed. *\------------------------------------- K.CloseDir.A .EQ K.FClose.A diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index 582d35b2..d1c027c6 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -3,9 +3,9 @@ PREFIX /A2OSX.BUILD AUTO 4,1 */-------------------------------------- * # ExpandStr.YA -* ## In: +* **In:** * Y,A = PTR to String to Expand (C-String) -* ## Out: +* **Out:** * X = hMem to Expanded String (C-String) * Y,A = PTR to Expanded String *\-------------------------------------- @@ -123,9 +123,9 @@ K.ExpandStr.YA stz .88+1 Reset Intermediate string... .9 rts */-------------------------------------- * # PutEnv.YA -* ## In: +* **In:** * Y,A = PTR to String NAME=VALUE (C-String) -* ## Out: +* **Out:** *\-------------------------------------- K.PutEnv.YA >STYA ZPPtr1 NAME=VALUE @@ -160,10 +160,10 @@ K.PutEnv.YA >STYA ZPPtr1 NAME=VALUE rts */-------------------------------------- * # SetEnv -* ## In: +* **In:** * PUSHW = PTR To Value (PSTR) * PUSHW = PTR To Name (PSTR) -* ## Out: +* **Out:** *\-------------------------------------- K.SetEnv jsr MEM.PullP1P2 Ptr1=NAME,Ptr2=VALUE K.SetEnv.I jsr K.UnsetEnv.I @@ -264,9 +264,9 @@ K.SetEnv.I jsr K.UnsetEnv.I rts */-------------------------------------- * # GetEnv.YA -* ## In: +* **In:** * Y,A = PTR to NAME (PSTR) -* ## Out: +* **Out:** * CC : Y,A = PTR to VALUE (PSTR) * CS : not found *\-------------------------------------- @@ -281,9 +281,9 @@ K.GetEnv.YA >STYA ZPPtr1 rts */-------------------------------------- * # UnsetEnv.YA -* ## In: +* **In:** * Y,A = PTR To Name (PSTR) -* ## Out: +* **Out:** *\-------------------------------------- K.UnsetEnv.YA >STYA ZPPtr1 Store VAR Name K.UnsetEnv.I jsr ENV.FindVarP1 diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index 6c7a2e69..649ca2f0 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -4,9 +4,9 @@ AUTO 4,1 */-------------------------------------- * # LoadTxtFile.YA * Load TXT a file in memory (with ending 0) -* ## In: +* **In:** * Y,A = File Path -* ## Out: +* **Out:** * Y,A = File Length (without ending 0) * X = hMem of Loaded File *\-------------------------------------- @@ -22,12 +22,12 @@ K.LoadTxtFile.YA */-------------------------------------- * # LoadFile * Load a file in memory -* ## In: +* **In:** * PUSHW = AUXTYPE (Handled by.... * PUSHB = TYPE ... * PUSHB = MODE ... * PUSHW = PATH ...FOpen) -* ## Out: +* **Out:** * Y,A = File Length * X = hMem of Loaded File *\-------------------------------------- @@ -140,7 +140,7 @@ FIO.Mem .BS 2 FIO.FSize .BS 2 */-------------------------------------- * # ChTyp -* ## In: +* **In:** * PUSHB = TYPE * PUSHW = PATH *\-------------------------------------- @@ -156,21 +156,21 @@ K.ChTyp jsr PFT.CheckPathSTK .9 rts */-------------------------------------- * # ChMod -* ## In: +* **In:** * PUSHW = UID * PUSHW = PATH *\-------------------------------------- K.ChMod */-------------------------------------- * # ChOwn -* ## In: +* **In:** * PUSHW = UID * PUSHW = PATH *\-------------------------------------- K.ChOwn */-------------------------------------- * # ChGrp -* ## In: +* **In:** * PUSHW = GID * PUSHW = PATH *\-------------------------------------- diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index f0e3cf07..58b483a5 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -26,11 +26,11 @@ GP.CodeStart jmp GP.SysCall *-------------------------------------- jmp GP.AtkCall *-------------------------------------- -* MLICALL (AUXLC to MAINLC) +* ROMCALL (AUXLC to ROMLC) * Used by Kernel * In: -* X = MLI Function -* A = Param Count +* X = ROM Function +* Y,A = Param *-------------------------------------- jmp GP.RomCall *-------------------------------------- diff --git a/SYS/KERNEL.S.MATH.txt b/SYS/KERNEL.S.MATH.txt index eeaddd43..00fbaac8 100644 --- a/SYS/KERNEL.S.MATH.txt +++ b/SYS/KERNEL.S.MATH.txt @@ -4,10 +4,10 @@ AUTO 4,1 */-------------------------------------- * # FAdd,FSub,FMult,FDiv,FPwr * Return X+Y, X-Y, X*Y, X/Y, X^Y -* ## In: +* **In:** * PUSHF = X (Float) * PUSHF = Y (Float) -* ## Out: +* **Out:** * On stack (Float) *\-------------------------------------- K.FAdd ldx #ROM.FADD @@ -19,17 +19,19 @@ K.FMult ldx #ROM.FMULT K.FDiv ldx #ROM.FDIV .HS 2C BIT ABS K.FPwr ldx #ROM.PWR - >STYA FORPNT + phx jsr MATH.PullFAC jsr MATH.PullARG + + plx bra MATH.Go */-------------------------------------- * # Log,Sqr,Exp,Cos,Sin,Tan,ATan * Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x) -* ## In: +* **In:** * PUSHF = X (Float) -* ## Out: +* **Out:** * On stack (Float) *\-------------------------------------- K.Log ldx #ROM.LOG @@ -45,16 +47,18 @@ K.Sin ldx #ROM.SIN K.Tan ldx #ROM.TAN .HS 2C BIT ABS K.ATan ldx #ROM.ATAN - >STYA FORPNT + phx jsr MATH.PullFAC + + plx bra MATH.Go */-------------------------------------- * # Float * Return 'floated' long -* ## In: +* **In:** * PUSHL = X (long) -* ## Out: +* **Out:** * On stack (Float) *\-------------------------------------- K.Float >PULLW FAC+1 @@ -65,10 +69,17 @@ K.Float >PULLW FAC+1 sta FAC Exp=32 ldx #ROM.LTOF - phx -MATH.Go plx - jsr GP.ROMCALL +MATH.Go jsr GP.ROMCALL + + lda pStack + sec + sbc #5 + sta pStack + + sta FORPNT + lda pStack+1 + sta FORPNT+1 ldx #ROM.GETFAC jsr GP.ROMCALL @@ -78,9 +89,9 @@ MATH.Go plx */-------------------------------------- * # LRIntF * Return Float rounded into a long -* ## In: +* **In:** * PUSHF = X (Float) -* ## Out: +* **Out:** * On stack (long) *\-------------------------------------- K.LRIntF jsr MATH.PullFAC diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index b78163f7..7f9c5c9c 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -19,9 +19,9 @@ ZPSListDataPtr .EQ ZPMEMMGR+14 *-------------------------------------- */-------------------------------------- * # GetMem0.YA -* ## In: +* **In:** * Y,A = Size Requested -* ## Out: +* **Out:** * CC : success * YA = PTR to Mem (ZERO Initialised) * X = hMem @@ -32,9 +32,9 @@ K.GetMem0.YA ldx #S.MEM.F.INIT0 .HS 2C bit abs */-------------------------------------- * # GetMem.YA -* ## In: +* **In:** * Y,A = Size Requested -* ## Out: +* **Out:** * CC : success * YA = PTR to Mem (Uninitialised) * X = hMem @@ -236,9 +236,9 @@ Mem.NextSlot lda ZPMemMgrSPtr .8 rts */-------------------------------------- * # FreeMem.A -* ## In: +* **In:** * A = hMem To Free -* ## Out: +* **Out:** * none. * (X,Y unmodified) *\-------------------------------------- @@ -332,9 +332,9 @@ K.FreeMem.A phy K.FreeMem.A.ERR .AZ "FreeMem:%H:hMem already freed." */-------------------------------------- * # GetMemPtr.A -* ## In: +* **In:** * A = hMem -* ## Out: +* **Out:** * Y,A = PTR to MemBlock * (X unmodified) *\-------------------------------------- @@ -348,9 +348,9 @@ K.GetMemPtr.A jsr K.GetMemByID.A rts */-------------------------------------- * # GetMemByID.A -* ## In: +* **In:** * A = hMem -* ## Out: +* **Out:** * Y,A = ZPMemMgrSPtr = PTR to S.MEM * X unmodified *\-------------------------------------- @@ -399,9 +399,9 @@ K.GetMemByID.A sta ZPMemMgrSPtr */-------------------------------------- * # NewStr.YA * Create a new copy of this C-String -* ## In: +* **In:** * Y,A = Ptr to source C-String -* ## Out: +* **Out:** * CC : success * Y,A = PTR to String * X = hMem (PSTR) @@ -451,22 +451,22 @@ K.NewStr.YA >STYA .1+1 .9 rts */-------------------------------------- * # SListGetByID -* ## In: +* **In:** * PUSHB = hSList * PUSHW = KeyID * PUSHW = Data Ptr * PUSHW = Key Ptr -* ## Out: +* **Out:** * X,Y = Next KeyID *\-------------------------------------- K.SListGetByID >PULLW ZPSListKeyPtr */-------------------------------------- * # SListUpdateByID -* ## In: +* **In:** * PUSHB = hSList * PUSHW = KeyID * PUSHW = Data Ptr -* ## Out: +* **Out:** * A = Key Length * X,Y = KeyID *\-------------------------------------- @@ -476,22 +476,22 @@ K.SListUpdateByID bra K.SListPullH */-------------------------------------- * # SListAdd -* ## In: +* **In:** * PUSHB = hSList * PUSHW = Key Ptr * PUSHW = Data Ptr -* ## Out: +* **Out:** * A = Key Length * X,Y = KeyID *\-------------------------------------- K.SListAdd */-------------------------------------- * # SListLookup -* ## In: +* **In:** * PUSHB = hSList * PUSHW = Key Ptr * PUSHW = Data Ptr -* ## Out: +* **Out:** * A = Key Length * X,Y = KeyID *\-------------------------------------- @@ -502,16 +502,16 @@ K.SListLookup K.SListPullH >PULLA */-------------------------------------- * # SListNew -* ## In: -* ## Out: +* **In:** +* **Out:** * A=hSList *\-------------------------------------- K.SListNew */-------------------------------------- * # SListFree -* ## In: +* **In:** * A=hSList -* ## Out: +* **Out:** *\-------------------------------------- K.SListFree.A *-------------------------------------- @@ -523,10 +523,10 @@ K.SListFree.A rts */-------------------------------------- * # GetStkObjProperty.AY -* ## In: +* **In:** * A = hObject (AUX Memory) * Y = Property Index -* ## Out: +* **Out:** * Y,A = Property Value *\-------------------------------------- K.GetStkObjProperty.AY @@ -545,9 +545,9 @@ K.GetStkObjProperty.AY rts */-------------------------------------- * # NewStkObj.YA -* ## In: +* **In:** * Y,A = Size Requested -* ## Out: +* **Out:** * CC : success * YA = PTR to Mem (Uninitialised) * X = hMem @@ -558,9 +558,9 @@ K.NewStkObj.YA ldx #SYS.GetMem.YA .HS 2C BIT ABS */-------------------------------------- * # FreeStkObj.A -* ## In: +* **In:** * A = hMem To Free (AUX Memory) -* ## Out: +* **Out:** * none. * (X,Y unmodified) *\-------------------------------------- @@ -579,12 +579,12 @@ MEM.GoStkObj sta SETREADAUX */-------------------------------------- * # LoadStkObj * Load a file in AUX memory (Stock Objects) -* ## In: +* **In:** * PUSHW = AUXTYPE (Handled by.... * PUSHB = TYPE ... * PUSHB = MODE ... * PUSHW = PATH ...FOpen) -* ## Out: +* **Out:** * Y,A = File Length * X = hMem of Loaded Object in AUX mem *\-------------------------------------- diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 11dc1bf3..bd83bcd6 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -6,9 +6,9 @@ AUTO 4,1 * # ExecPS.YA (Blocking Parent PID) * # CreatePSNewEnv.YA * # CreatePS.YA (Non Blocking) -* ## In: +* **In:** * Y,A = PTR To Cmd Line -* ## Out: +* **Out:** * A = Child PSID *\-------------------------------------- K.ExecPSNewEnv.YA @@ -386,9 +386,9 @@ PS.SetMemOwner lda CORE.LastPSID rts */-------------------------------------- * # GetMemStat.YA -* ## In: +* **In:** * Y,A = Ptr to 24 bytes buffer -* ## Out: +* **Out:** * Buffer filled with memory stats *\-------------------------------------- K.GetMemStat.YA >STYA ZPMemMgrTmp1 @@ -421,9 +421,9 @@ K.GetMemStat.YA >STYA ZPMemMgrTmp1 rts */-------------------------------------- * # GetPSStatus.A -* ## In: +* **In:** * A = PID -* ## Out: +* **Out:** * A = Status Byte *\-------------------------------------- K.GetPSStatus.A jsr CORE.GetPSByID.A @@ -433,9 +433,9 @@ K.GetPSStatus.A jsr CORE.GetPSByID.A .9 rts */-------------------------------------- * # GetPSStat.YA -* ## In: +* **In:** * Y,A = Ptr to 24 bytes buffer -* ## Out: +* **Out:** * Buffer filled with PS stats *\-------------------------------------- K.GetPSStat.YA >STYA ZPPtr1 diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index 47965a31..94c1a285 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -85,9 +85,9 @@ K.Stat.DST .DA #S.STAT.P.TYPE .DA #S.STAT.BLOCKS,#S.STAT.BLOCKS+1 */------------------------------------- * # MKDir.YA -* ## In: +* **In:** * Y,A = DIR name -* ## Out: +* **Out:** * CC : success * CS : error * A = EC @@ -114,9 +114,9 @@ K.MKDir.YA jsr PFT.CheckPathYA */-------------------------------------- * # MkNod.YA * return a hFile for a given Device Name -* ## IN: +* **In:** * Y,A=DevName -* ## OUT: +* **Out:** * CC = OK, CS = ERROR * A = hFILE *\-------------------------------------- @@ -167,8 +167,8 @@ K.MkNod.YA jsr K.GetDevByName.YA Ptr1=NAME */-------------------------------------- * # MKFIFO * return a hFILE to a new FIFO -* ## IN: -* ## OUT: +* **In:** +* **Out:** * CC = OK, CS = ERROR * A = hFILE *\-------------------------------------- diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 84ca98b2..90a8f841 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -5,10 +5,10 @@ AUTO 4,1 * # FPutC.A * int fputc ( int character, hFILE stream ); * Print A (char) to hFILE -* ## In: +* **In:** * PUSHB : hFILE * A : char to print -* ## Out: +* **Out:** * CC = success *\-------------------------------------- K.FPutC.AY sta K.IOBuf @@ -19,9 +19,9 @@ K.FPutC.AY sta K.IOBuf * # PutChar.A * int putchar ( int character ); * Print A (char) to StdOut -* ## In: +* **In:** * A : char to print -* ## Out: +* **Out:** * CC = success *\-------------------------------------- K.PutChar.A sta K.IOBuf @@ -41,9 +41,9 @@ K.PutChar.A.1 jsr K.GetMemPtr.A * # PutS.YA * int puts ( const char * str ); * Write Str to StdOut, appends '\r\n' -* ## In: +* **In:** * Y,A : CPtr -* ## Out: +* **Out:** * CC = success *\-------------------------------------- K.PutS.YA >STYA pIOBuf @@ -62,10 +62,10 @@ K.PutS.YA >STYA pIOBuf * # FPutS.YA * int fputs ( const char * str, hFILE stream ); * Write Str to FILE -* ## In: +* **In:** * PUSHB : hFILE * Y,A: CPtr -* ## Out: +* **Out:** * CC = success *\-------------------------------------- K.FPutS.YA >STYA pIOBuf @@ -103,7 +103,7 @@ K.FPutS.YA.1 jsr K.GetMemPtr.A * int fprintf ( FILE * stream, const char * format, ... ); * * Prints C-Style String -* ## In: +* **In:** * PrintF.YA : * PUSH ... * Y,A = PTR to CStr @@ -116,7 +116,7 @@ K.FPutS.YA.1 jsr K.GetMemPtr.A * PUSHW = PTR to CStr * A = hFILE * -* ## Out: +* **Out:** * CC : success * CS : error code from Output * Specifiers : @@ -646,9 +646,9 @@ STDIO.Out.FIFO ldy #S.NODE.FIFO.S */-------------------------------------- * # GetChar * Get char from StdIn -* ## In: +* **In:** * none. -* ## Out: +* **Out:** * CC = success * A = char *\-------------------------------------- @@ -657,9 +657,9 @@ K.GetChar ldy #S.PS.hStdIn */-------------------------------------- * # GetC.A * Get char from Node -* ## In: +* **In:** * A = hNODE -* ## Out: +* **Out:** * CC = success * A = char *\-------------------------------------- @@ -729,7 +729,7 @@ BCDBUF .EQ ARG */-------------------------------------- * # SScanF.YA * Scan a C-String (in progress) -* ## In: +* **In:** * PUSHW PTR to target var * ... * PUSHW PTR pattern (ex: "%d.%d.%d.%d") @@ -742,7 +742,7 @@ BCDBUF .EQ ARG * %h : HEX byte * %H : HEX word * Y,A = PTR to String to scan (ex: "192.168.1.5") -* ## Out: +* **Out:** *\-------------------------------------- K.SScanF.YA >STYA ZPPtr2 String to Scan >PULLW ZPPtr1 Pattern @@ -1014,7 +1014,7 @@ K.FRead jsr PFT.CheckNodeSTK * # FWrite * int fwrite ( const void * ptr, int count, FILE * stream ); * Write bytes to file -* ## In: +* **In:** * PUSHW = Src Ptr * PUSHW = Bytes To Write * PUSHB = hFILE @@ -1035,7 +1035,7 @@ K.FReadWrite.1 >PULLA .9 rts */-------------------------------------- * # FFlush.A -* ## In: +* **In:** * A = hFILE *\-------------------------------------- K.FFlush.A jsr PFT.CheckNodeA @@ -1045,7 +1045,7 @@ K.FFlush.A jsr PFT.CheckNodeA */------------------------------------- * # FSeek * Set the file-position indicator for hFILE -* ## In: +* **In:** * PUSHW = Ptr to Offset (DWORD) * PUSHB = From * PUSHB = hFILE @@ -1114,9 +1114,9 @@ K.FSeek jsr PFT.CheckNodeSTK */-------------------------------------- * # FEOF.A * Test the end-of-file indicator for hFILE -* ## In: +* **In:** * A = hFILE -* ## Out: +* **Out:** * CC : * A=0 EOF * A !=0 NOT EOF @@ -1153,10 +1153,10 @@ K.FEOF.A.MARK .BS 3 */-------------------------------------- * # FTell * Return the current value of the file-position indicator -* ## In: +* **In:** * PUSHW = Ptr to Offset (DWORD) * PUSHB = hFILE -* ## Out: +* **Out:** * Offset = Offset *\-------------------------------------- K.FTell jsr PFT.CheckNodeSTK diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index a3dbf7c8..0f309d87 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -2,14 +2,16 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 */-------------------------------------- -* # StrToF +* ## StrToF * Convert String to 40 bits Float -* ## In: -* PUSHW PTR to EndPtr -* PUSHW Source String (C-Sring) -* PUSHW PTR to target buffer (5 bytes) -* ## Out: -* Target buffer filled with a FLOAT (packed) +* # C +* `float strtof (const char* str, char** endptr);` +* # ASM +* **In:** +* `>PUSHWI EndPtr` +* `>LDYA str` +* **Out:** +* On stack (float) *\-------------------------------------- K.StrToF jsr K.AToF >PULLW ZPPtr3 @@ -20,12 +22,15 @@ K.StrToF jsr K.AToF sta (ZPPtr3),y rts */-------------------------------------- -* # AToF +* ## AToF * Convert String to 40 bits Float -* ## In: -* PUSHW Source String (C-Sring) -* PUSHW PTR to target buffer (5 Bytes) -* ## Out: +* # C +* `float atof (const char* str);` +* # ASM +* **In:** +* `>LDYA str` +* **Out:** +* On stack (float) *\-------------------------------------- K.AToF >PULLW FORPNT Ptr to dst buffer >PULLW TXTPTR Ptr to source string @@ -39,27 +44,21 @@ K.AToF >PULLW FORPNT Ptr to dst buffer clc rts */-------------------------------------- -* # StrToL -* Convert String to 32 bits int -* ## In: -* PUSHB Base -* PUSHW PTR to EndPtr -* PUSHW Source String (C-Sring) -* PUSHW PTR to target buffer DWORD -* ## Out: +* ## StrToL (StrToUL) +* Convert String to 32 bits (unsigned) int +* # C +* `long strtol (const char* str, char** endptr, int base);` +* `unsigned long strtol (const char* str, char** endptr, int base);` +* # ASM +* **In:** +* `>PUSHB Base` +* `>PUSHWI EndPtr` +* `>LDYA str` +* **Out:** +* On stack (long) *\-------------------------------------- K.StrToL sec Signed .HS 90 BCC -*/-------------------------------------- -* # StrToUL -* Convert String to 32 bits unsigned int -* ## In: -* PUSHB Base -* PUSHW PTR to EndPtr -* PUSHW Source String (C-Sring) -* PUSHW PTR to target buffer DWORD -* ## Out: -*\-------------------------------------- K.StrToUL clc Unsigned jsr MEM.PullP1P2P3 >PULLA Base @@ -79,10 +78,10 @@ K.StrToUL.rts rts */-------------------------------------- * # AToL * Convert String to 32 bits int -* ## In: +* **In:** * PUSHW Source String (C-Sring) * PUSHW PTR to target buffer DWORD -* ## Out: +* **Out:** *\-------------------------------------- *STDLIB.32 .BS 4 32 bits max STDLIB.32 .EQ FAC 32 bits max @@ -110,9 +109,9 @@ K.AToL.I jsr STDLIB.GetDec */-------------------------------------- * # AToI.YA * Convert String to 16 bits int -* ## In: +* **In:** * Y,A = Source String (C-String) -* ## Out: +* **Out:** * Y,A = Int *\-------------------------------------- K.AToI.YA >STYA ZPPtr2 diff --git a/SYS/KERNEL.S.STRING.txt b/SYS/KERNEL.S.STRING.txt index 68c1ba1f..8a5d58a3 100644 --- a/SYS/KERNEL.S.STRING.txt +++ b/SYS/KERNEL.S.STRING.txt @@ -4,9 +4,9 @@ AUTO 4,1 */-------------------------------------- * # StrLen.YA * Returns Length of C-String -* ## In: +* **In:** * Y,A = Ptr to CSTR -* ## Out: +* **Out:** * Y,A = String length *\-------------------------------------- K.StrLen.YA >STYA ZPPtr1 @@ -27,10 +27,10 @@ K.StrLen.YA >STYA ZPPtr1 */-------------------------------------- * # StrCat * Append SRC to DST -* ## In: +* **In:** * PUSHW = Ptr to SRC (CSTR) * PUSHW = Ptr to DST (CSTR) -* ## Out: +* **Out:** * DST = DST+SRC *\-------------------------------------- K.StrCat jsr MEM.PullP1P2 @@ -45,10 +45,10 @@ K.StrCat jsr MEM.PullP1P2 */-------------------------------------- * # StrCpy * Copy string -* ## In: +* **In:** * PUSHW = Ptr to SRC (CSTR) * PUSHW = Ptr to DST (CSTR) -* ## Out: +* **Out:** * DST = SRC *\-------------------------------------- K.StrCpy jsr MEM.PullP1P2 @@ -68,10 +68,10 @@ K.StrCpy.I ldy #0 */-------------------------------------- * # StrMatch * Compare a String against pattern -* ## In: +* **In:** * PUSHW = PTR to Pattern (e.g. '*test?.txt') * PUSHW = PTR to Src String -* ## Out: +* **Out:** * CC : match * CS : no match *\-------------------------------------- @@ -142,9 +142,9 @@ K.StrMatch jsr MEM.PullP1P2 */-------------------------------------- * # StrUpr.YA/StrLwr.YA * Convert string to UPPERCASE/lowercase -* ## In: +* **In:** * Y,A = PTR to String (CSTR) -* ## Out: +* **Out:** * Uppercased/lowercased String in Buffer *\-------------------------------------- K.StrUpr.YA ldx #0 @@ -179,10 +179,10 @@ K.StrLwr.YA ldx #2 */-------------------------------------- * # StrCmp * Compare 2 strings -* ## In: +* **In:** * PUSHW = Ptr to String1 (CSTR) * PUSHW = Ptr to String2 (CSTR) -* ## Out: +* **Out:** * DST = SRC *\-------------------------------------- K.StrCmp sec @@ -190,10 +190,10 @@ K.StrCmp sec */-------------------------------------- * # StrICmp * Compare 2 strings -* ## In: +* **In:** * PUSHW = Ptr to String1 (CSTR) * PUSHW = Ptr to String2 (CSTR) -* ## Out: +* **Out:** * CC, Y,A=0 * CS, Y,A > 0 or < 0 *\-------------------------------------- diff --git a/SYS/KERNEL.S.TIME.txt b/SYS/KERNEL.S.TIME.txt index b4f5d2be..f67a4d35 100644 --- a/SYS/KERNEL.S.TIME.txt +++ b/SYS/KERNEL.S.TIME.txt @@ -377,7 +377,7 @@ K.CTime.Year .BS 1 */-------------------------------------- * # StrFTime * Convert S.TIME struct to CSTR -* ## In: +* **In:** * PUSHW = Dst PTR To CSTR Buf * PUSHW = Src PTR To Format String * %a : Abbreviated weekday name : Thu @@ -395,7 +395,7 @@ K.CTime.Year .BS 1 * %y : Year, last two digits (00-99) * %Y : Year four digits 2001 * PUSHW = Src PTR To S.Time -* ## Out: +* **Out:** * none. always succeed. *\-------------------------------------- K.StrFTime jsr MEM.PullP1P2P3