KERNEL 0.95

This commit is contained in:
burniouf 2023-10-18 07:41:12 +02:00
parent 9c547bcd35
commit a8cf411cd7
94 changed files with 2840 additions and 1791 deletions

View File

@ -49,7 +49,6 @@ A = Arg count
# LoadDrv # LoadDrv
## ASM ## ASM
**In:**
Y,A = PTR to "NAME.DRV [PARAM]" C-String Y,A = PTR to "NAME.DRV [PARAM]" C-String
## RETURN VALUE ## RETURN VALUE
@ -61,7 +60,6 @@ none
`void * insdrv (void * src, void * crvcsstart, void * drvcssize, void * drvend);` `void * insdrv (void * src, void * crvcsstart, void * drvcssize, void * drvend);`
## ASM ## ASM
**In:**
`>PUSHW DRV.END` `>PUSHW DRV.END`
`>PUSHW DRV.CS.SIZE` `>PUSHW DRV.CS.SIZE`
`>PUSHW DRV.CS.START` `>PUSHW DRV.CS.START`
@ -199,7 +197,6 @@ Change or add an environment variable, string is 'NAME=VALUE'
`int putenv(char *string);` `int putenv(char *string);`
## ASM ## ASM
**In:**
`>PUSHW string` `>PUSHW string`
`>SYSCALL putenv` `>SYSCALL putenv`
@ -221,7 +218,6 @@ Remove an environment variable
Return X+Y, X-Y, X*Y, X/Y, X mod Y.... Return X+Y, X-Y, X*Y, X/Y, X mod Y....
## ASM ## ASM
**In:**
`>PUSHL X (long)` `>PUSHL X (long)`
`>PUSHL Y (long)` `>PUSHL Y (long)`
`>FPU add32` `>FPU add32`
@ -237,7 +233,6 @@ Return X*Y, X/Y, X+Y, X-Y
`float pwr ( float x, float y);` `float pwr ( float x, float y);`
## ASM ## ASM
**In:**
`>PUSHF X (float)` `>PUSHF X (float)`
`>PUSHF Y (float)` `>PUSHF Y (float)`
`>FPU fmul` `>FPU fmul`
@ -263,7 +258,6 @@ Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x)
`float atan ( float x);` `float atan ( float x);`
## ASM ## ASM
**In:**
`>PUSHF x (Float)` `>PUSHF x (Float)`
`>FPU log` `>FPU log`
@ -277,7 +271,6 @@ Return 'floated' long
`float f = (float)l; `float f = (float)l;
## ASM ## ASM
**In:**
`>PUSHL l` (long) `>PUSHL l` (long)
`>FPU float` `>FPU float`
@ -291,7 +284,6 @@ Return float rounded into a long
`long int lrintf (float x);` `long int lrintf (float x);`
## ASM ## ASM
**In:**
`>PUSHF x` `>PUSHF x`
`>FPU lrintf` `>FPU lrintf`
@ -528,7 +520,6 @@ Load TXT a file in memory (with ending 0)
`int loadtxtfile ( const char * filename );` `int loadtxtfile ( const char * filename );`
## ASM ## ASM
**In:**
`>LDYA filename` `>LDYA filename`
`>SYSCALL loadtxtfile` `>SYSCALL loadtxtfile`
@ -543,7 +534,6 @@ Load a file in memory
`int loadfile ( const char * filename, short int flags, short int ftype, int auxtype );` `int loadfile ( const char * filename, short int flags, short int ftype, int auxtype );`
## ASM ## ASM
**In:**
`>PUSHW filename` `>PUSHW filename`
`>PUSHB flags` `>PUSHB flags`
`>PUSHB ftype` `>PUSHB ftype`
@ -562,7 +552,6 @@ And return, if found, the full path to it.
`int filesearch( char *filename, char *searchpath, char *fullpath, stat *filestat);` `int filesearch( char *filename, char *searchpath, char *fullpath, stat *filestat);`
## ASM ## ASM
**In:**
`>PUSHW filename` `>PUSHW filename`
`>PUSHW fullpath` `>PUSHW fullpath`
`>PUSHW searchpath` `>PUSHW searchpath`
@ -576,7 +565,6 @@ DstStat = S.STAT
CS : not found CS : not found
# GetMemStat # GetMemStat
**In:**
Y,A = Ptr to 24 bytes buffer Y,A = Ptr to 24 bytes buffer
## RETURN VALUE ## RETURN VALUE
@ -835,7 +823,7 @@ A = hFILE
# MkNod # MkNod
Create a special or ordinary file. Create a special or ordinary file.
(CDEV, BDEV, DSOCKS, SSOCK, PIPE) (CDEV, BDEV, DSOCK, SSOCK, PIPE)
## C ## C
`hFILE mknod(const char *pathname, int mode, hFD fd);` `hFILE mknod(const char *pathname, int mode, hFD fd);`
@ -870,7 +858,6 @@ Print A (char) to hFILE
`int fputc ( hFILE stream , short int character );` `int fputc ( hFILE stream , short int character );`
## ASM ## ASM
**In:**
`>PUSHB stream` `>PUSHB stream`
`>PUSHB character` `>PUSHB character`
`>SYSCALL fputc` `>SYSCALL fputc`
@ -885,7 +872,6 @@ Print A (char) to StdOut
`int putchar ( short int character );` `int putchar ( short int character );`
## ASM ## ASM
**In:**
`lda character` `lda character`
`>SYSCALL putchar` `>SYSCALL putchar`
@ -897,7 +883,6 @@ Write Str to StdOut, appends '\r\n'
## C ## C
`int puts ( const char * str );` `int puts ( const char * str );`
**In:**
## ASM ## ASM
`>LDYAI str` `>LDYAI str`
@ -913,7 +898,6 @@ Write Str to hFILE
`int fputs (hFILE stream, const char * str );` `int fputs (hFILE stream, const char * str );`
## ASM ## ASM
**In:**
`>PUSHB stream` `>PUSHB stream`
`>PUSHW str` `>PUSHW str`
`>SYSCALL fputs` `>SYSCALL fputs`
@ -931,7 +915,6 @@ string is then terminated with a null byte.
`char *fgets(hFILE stream, char * s, int n);` `char *fgets(hFILE stream, char * s, int n);`
## ASM ## ASM
**In:**
`>PUSHB hFILE` `>PUSHB hFILE`
`>PUSHW s` `>PUSHW s`
`>PUSHW n` `>PUSHW n`
@ -948,7 +931,6 @@ Get char from StdIn
`short int getchar ( );` `short int getchar ( );`
## ASM ## ASM
**In:**
`>SYSCALL getchar` `>SYSCALL getchar`
## RETURN VALUE ## RETURN VALUE
@ -962,7 +944,6 @@ Get char from Node
`short int getc ( short int stream );` `short int getc ( short int stream );`
## ASM ## ASM
**In:**
`lda stream` `lda stream`
`>SYSCALL getc` `>SYSCALL getc`
@ -990,7 +971,6 @@ Open a file
## C ## C
`short int fopen ( const char *filename, short int flags, short int ftype, int auxtype );` `short int fopen ( const char *filename, short int flags, short int ftype, int auxtype );`
**In:**
## ASM ## ASM
`>PUSHW filename` `>PUSHW filename`
@ -1024,7 +1004,6 @@ Close a file
`int fclose ( short int stream );` `int fclose ( short int stream );`
## ASM ## ASM
**In:**
`lda stream` `lda stream`
`>SYSCALL FClose` `>SYSCALL FClose`
@ -1037,7 +1016,6 @@ Read bytes from file
`int fread (short int stream, void * ptr, int count );` `int fread (short int stream, void * ptr, int count );`
## ASM ## ASM
**In:**
`>PUSHB stream` `>PUSHB stream`
`>PUSHW ptr` `>PUSHW ptr`
`>PUSHW count` `>PUSHW count`
@ -1053,7 +1031,6 @@ Write bytes to file
`int fwrite ( short int stream, const void * ptr, int count );` `int fwrite ( short int stream, const void * ptr, int count );`
## ASM ## ASM
**In:**
`>PUSHB stream` `>PUSHB stream`
`>PUSHW ptr` `>PUSHW ptr`
`>PUSHW count` `>PUSHW count`
@ -1068,7 +1045,6 @@ Write bytes to file
`int fflush( short int stream );` `int fflush( short int stream );`
## ASM ## ASM
**In:**
`lda stream` `lda stream`
`>SYSCALL fflush` `>SYSCALL fflush`
@ -1079,7 +1055,6 @@ Set the file-position indicator for hFILE
`int fseek( short int stream, long offset, short int whence );` `int fseek( short int stream, long offset, short int whence );`
## ASM ## ASM
**In:**
`>PUSHB stream` `>PUSHB stream`
`>PUSHL offset` `>PUSHL offset`
`>PUSHB whence` `>PUSHB whence`
@ -1092,7 +1067,6 @@ Test the end-of-file indicator for hFILE
`short int feof( short int stream );` `short int feof( short int stream );`
## ASM ## ASM
**In:**
`lda stream` `lda stream`
`>SYSCALL feof` `>SYSCALL feof`
@ -1109,7 +1083,6 @@ Return the current value of the file-position indicator
`long ftell( short int stream );` `long ftell( short int stream );`
## ASM ## ASM
**In:**
`lda stream` `lda stream`
`>SYSCALL ftell` `>SYSCALL ftell`
@ -1123,7 +1096,6 @@ Remove a file or directory
`int remove ( const char *pathname );` `int remove ( const char *pathname );`
## ASM ## ASM
**In:**
`>LDYA pathname` `>LDYA pathname`
`>SYSCALL remove` `>SYSCALL remove`
@ -1136,7 +1108,6 @@ Rename a file
`int rename ( const char * oldpath, const char * newpath );` `int rename ( const char * oldpath, const char * newpath );`
## ASM ## ASM
**In:**
`>PUSHW oldpath` `>PUSHW oldpath`
`>PUSHW newpath` `>PUSHW newpath`
`>SYSCALL rename` `>SYSCALL rename`
@ -1156,7 +1127,6 @@ Prints C-Style String
`int sprintf ( char *str, const char *format, ... );` `int sprintf ( char *str, const char *format, ... );`
## ASM ## ASM
**In:**
PrintF : (example is for printing Y,A as integer : format="%I", 2 bytes) PrintF : (example is for printing Y,A as integer : format="%I", 2 bytes)
`>PUSHW format` `>PUSHW format`
`>PUSHW i` `>PUSHW i`
@ -1218,7 +1188,6 @@ Read formatted data from string
`int sscanf ( const char *s, const char *format, ... );` `int sscanf ( const char *s, const char *format, ... );`
## ASM ## ASM
**In:**
ScanF : ScanF :
`>PUSHW format` `>PUSHW format`
`>PUSHW ptr` `>PUSHW ptr`
@ -1262,7 +1231,6 @@ Convert String to 40 bits Float
`float strtof (const char* str, char** endptr );` `float strtof (const char* str, char** endptr );`
## ASM ## ASM
**In:**
`>PUSHW str` `>PUSHW str`
`>PUSHWI EndPtr` `>PUSHWI EndPtr`
`>SYSCALL StrToF` `>SYSCALL StrToF`
@ -1277,7 +1245,6 @@ Convert String to 40 bits Float
`float atof ( const char* str );` `float atof ( const char* str );`
## ASM ## ASM
**In:**
`>LDYA str` `>LDYA str`
`>SYSCALL atof` `>SYSCALL atof`
@ -1292,7 +1259,6 @@ Convert String to 32 bits (unsigned) int
`unsigned long strtoul (const char* str, char** endptr, int base);` `unsigned long strtoul (const char* str, char** endptr, int base);`
## ASM ## ASM
**In:**
`>PUSHW str` `>PUSHW str`
`>PUSHW EndPtr` `>PUSHW EndPtr`
`>PUSHB Base` `>PUSHB Base`
@ -1308,7 +1274,6 @@ Convert String to 32 bits long
`long atol ( const char * str );` `long atol ( const char * str );`
## ASM ## ASM
**In:**
`>LDYA str` `>LDYA str`
`>SYSCALL atol` `>SYSCALL atol`
@ -1322,7 +1287,6 @@ Convert String to 16 bits int
`int atoi ( const char * str );` `int atoi ( const char * str );`
## ASM ## ASM
**In:**
`>LDYAI str` `>LDYAI str`
`>SYSCALL atoi` `>SYSCALL atoi`
@ -1336,7 +1300,6 @@ Return the canonicalized absolute pathname
`char *realpath(const char *path, char *resolvedpath);` `char *realpath(const char *path, char *resolvedpath);`
## ASM ## ASM
**In:**
`>PUSHW path` `>PUSHW path`
`>PUSHW resolvedpath` `>PUSHW resolvedpath`
`>SYSCALL realpath` `>SYSCALL realpath`
@ -1411,7 +1374,6 @@ Concatenate strings
`char * strcat ( char * destination, const char * source );` `char * strcat ( char * destination, const char * source );`
## ASM ## ASM
**In:**
`>PUSHWI destination` `>PUSHWI destination`
`>PUSHWI source` `>PUSHWI source`
`>SYSCALL strcat` `>SYSCALL strcat`
@ -1426,7 +1388,6 @@ Copy string
`char * strcpy ( char * destination, const char * source );` `char * strcpy ( char * destination, const char * source );`
## ASM ## ASM
**In:**
`>PUSHWI destination` `>PUSHWI destination`
`>PUSHWI source` `>PUSHWI source`
`>SYSCALL strcpy` `>SYSCALL strcpy`
@ -1456,7 +1417,6 @@ Convert string to UPPERCASE/lowercase
`int strlwr ( char * str);` `int strlwr ( char * str);`
## ASM ## ASM
**In:**
`>LDYAI str` `>LDYAI str`
`>SYSCALL strupr` `>SYSCALL strupr`
`>SYSCALL strlwr` `>SYSCALL strlwr`
@ -1472,7 +1432,6 @@ Compare 2 strings
`int strcmp(const char *s1, const char *s2);` `int strcmp(const char *s1, const char *s2);`
## ASM ## ASM
**In:**
`>PUSHWI s1` `>PUSHWI s1`
`>PUSHWI s2` `>PUSHWI s2`
`>SYSCALL strcmp` `>SYSCALL strcmp`
@ -1490,7 +1449,6 @@ Compare 2 strings, ignoring case
`int strcasecmp(const char *s1, const char *s2);` `int strcasecmp(const char *s1, const char *s2);`
## ASM ## ASM
**In:**
`>PUSHWI s1` `>PUSHWI s1`
`>PUSHWI s2` `>PUSHWI s2`
`>SYSCALL strcasecmp` `>SYSCALL strcasecmp`
@ -1614,7 +1572,6 @@ Convert S.TIME struct to CSTR
`hFD open(const char *pathname, short int flags);` `hFD open(const char *pathname, short int flags);`
## ASM ## ASM
**In:**
`>PUSHW pathname` `>PUSHW pathname`
`>PUSHB flags` `>PUSHB flags`
`>SYSCALL open` `>SYSCALL open`
@ -1629,7 +1586,6 @@ REG File created on ProDOS : T=TXT,X=$0000
`int close(hFD fd);` `int close(hFD fd);`
## ASM ## ASM
**In:**
`lda fd` `lda fd`
`>SYSCALL close` `>SYSCALL close`
@ -1639,7 +1595,6 @@ REG File created on ProDOS : T=TXT,X=$0000
`int read(hFD fd, void *buf, int count);` `int read(hFD fd, void *buf, int count);`
## ASM ## ASM
**In:**
`>PUSHB fd` `>PUSHB fd`
`>PUSHW buf` `>PUSHW buf`
`>PUSHW count` `>PUSHW count`
@ -1655,7 +1610,6 @@ CS: A = EC
`int write(hFD fd, const void *buf, int count);` `int write(hFD fd, const void *buf, int count);`
## ASM ## ASM
**In:**
`>PUSHB fd` `>PUSHB fd`
`>PUSHW buf` `>PUSHW buf`
`>PUSHW count` `>PUSHW count`
@ -1672,7 +1626,6 @@ Set the file-position indicator for hFD
`int lseek( short int hFD, long offset, short int whence );` `int lseek( short int hFD, long offset, short int whence );`
## ASM ## ASM
**In:**
`>PUSHB hFD` `>PUSHB hFD`
`>PUSHL offset` `>PUSHL offset`
`>PUSHB whence` `>PUSHB whence`
@ -1684,7 +1637,6 @@ Set the file-position indicator for hFD
`short int chown(const char *pathname, short int owner, short int group);` `short int chown(const char *pathname, short int owner, short int group);`
## ASM ## ASM
**In:**
`>PUSHW pathname` `>PUSHW pathname`
`>PUSHB owner` `>PUSHB owner`
`>PUSHB group` `>PUSHB group`

View File

@ -37,7 +37,8 @@ Write a track (16 sectors)
# D2TrkWriteNIB # D2TrkWriteNIB
Write a track (NIBBLE) Write a track (NIBBLE)
**In:**
## ASM
PUSHB = DSSS0000 PUSHB = DSSS0000
PUSHW = Ptr to NIBBLE buffer (0 ended) PUSHW = Ptr to NIBBLE buffer (0 ended)
@ -53,7 +54,6 @@ Write a track (NIBBLE)
int getprodoscatsize (short int options, short int catsize, int devsize ); int getprodoscatsize (short int options, short int catsize, int devsize );
## ASM ## ASM
**In:**
PUSHW = DevSize (in 512b blocks) PUSHW = DevSize (in 512b blocks)
PUSHB = Catalog Size (in blocks) PUSHB = Catalog Size (in blocks)
PUSHB = Options PUSHB = Options
@ -63,7 +63,8 @@ int getprodoscatsize (short int options, short int catsize, int devsize );
Y,A=BufSize (max $4400) Y,A=BufSize (max $4400)
# BuildProDOSCat # BuildProDOSCat
**In:**
## ASM
PUSHW = DevSize (in 512b blocks) PUSHW = DevSize (in 512b blocks)
PUSHB = Catalog Size (in blocks) PUSHB = Catalog Size (in blocks)
PUSHB = Options PUSHB = Options

View File

@ -5,13 +5,15 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
# ARP.Clear # ARP.Clear
Clear ARP Cache Clear ARP Cache
**In:**
## ASM
## RETURN VALUE ## RETURN VALUE
# ARP.Query # ARP.Query
Query ARP Cache and returns HW address Query ARP Cache and returns HW address
**In:**
## ASM
PUSHW PTR to MAC (to fill) PUSHW PTR to MAC (to fill)
PUSHW PTR to IP PUSHW PTR to IP
@ -21,26 +23,30 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
# ARP.Add # ARP.Add
Add a static ARP cache record Add a static ARP cache record
**In:**
## ASM
PUSHW PTR to MAC PUSHW PTR to MAC
PUSHW PTR to IP PUSHW PTR to IP
# ARP.GetCache # ARP.GetCache
Return a Ptr to ARP Cache Table Return a Ptr to ARP Cache Table
**In:**
## ASM
## RETURN VALUE ## RETURN VALUE
Y,A = PTR to ARP.CACHE Y,A = PTR to ARP.CACHE
# DNS.Clear # DNS.Clear
Clear DNS Cache Clear DNS Cache
**In:**
## ASM
## RETURN VALUE ## RETURN VALUE
# DNS.Query # DNS.Query
Query DNS for specified host Query DNS for specified host
**In:**
## ASM
PUSHW = PTR to IP to fill with cached data PUSHW = PTR to IP to fill with cached data
* PUSHW = hostname PTR to PSTR * PUSHW = hostname PTR to PSTR
@ -50,13 +56,15 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
# DNS.Add # DNS.Add
Add a static DNS record Add a static DNS record
**In:**
## ASM
PUSHW = PTR to IP PUSHW = PTR to IP
PUSHW = hostname CSTR to Add PUSHW = hostname CSTR to Add
# DNS.GetCAche # DNS.GetCAche
Return a Ptr to DNS Cache Table Return a Ptr to DNS Cache Table
**In:**
## ASM
## RETURN VALUE ## RETURN VALUE
Y,A = PTR to DNS.CACHE Y,A = PTR to DNS.CACHE
@ -68,7 +76,6 @@ Create a new socket
`hFD socket(short int type, short int protocol);` `hFD socket(short int type, short int protocol);`
## ASM ## ASM
**In:**
`>PUSHB type` `>PUSHB type`
`>PUSHB protocol` `>PUSHB protocol`
`>LIBCALL hLIBTCPIP,LIBTCPIP.socket` `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
@ -84,7 +91,6 @@ bind a name to a socket
`int bind(hFD fd, const struct sockaddr *addr);` `int bind(hFD fd, const struct sockaddr *addr);`
## ASM ## ASM
**In:**
`>PUSHB fd` `>PUSHB fd`
`>PUSHW addr` `>PUSHW addr`
`>LIBCALL hLIBTCPIP,LIBTCPIP.socket` `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
@ -100,7 +106,6 @@ Initiate a connection on a socket
`int connect(hFD fd, const struct sockaddr *addr);` `int connect(hFD fd, const struct sockaddr *addr);`
## ASM ## ASM
**In:**
`>PUSHB fd` `>PUSHB fd`
`>PUSHW addr` `>PUSHW addr`
`>LIBCALL hLIBTCPIP,LIBTCPIP.socket` `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
@ -116,7 +121,6 @@ Listen for connections on a socket
`int listen(hFD fd);` `int listen(hFD fd);`
## ASM ## ASM
**In:**
`lda fd` `lda fd`
`>LIBCALL hLIBTCPIP,LIBTCPIP.listen` `>LIBCALL hLIBTCPIP,LIBTCPIP.listen`
@ -130,7 +134,6 @@ Accept a connection on a socket
`hFD Accept(hFD fd);` `hFD Accept(hFD fd);`
## ASM ## ASM
**In:**
`lda fd` `lda fd`
`>LIBCALL hLIBTCPIP,LIBTCPIP.accept` `>LIBCALL hLIBTCPIP,LIBTCPIP.accept`
@ -144,7 +147,6 @@ Close socket
`int shutdown(int fd);` `int shutdown(int fd);`
## ASM ## ASM
**In:**
`lda fd` `lda fd`
`>LIBCALL hLIBTCPIP,LIBTCPIP.shutdown` `>LIBCALL hLIBTCPIP,LIBTCPIP.shutdown`
@ -156,7 +158,6 @@ Close socket
`int skt.read(hFD fd, void *buf, int count);` `int skt.read(hFD fd, void *buf, int count);`
## ASM ## ASM
**In:**
`>PUSHB fd` `>PUSHB fd`
`>PUSHW buf` `>PUSHW buf`
`>PUSHW count` `>PUSHW count`
@ -172,7 +173,6 @@ CS: A = EC
`int skt.write(hFD fd, const void *buf, int count);` `int skt.write(hFD fd, const void *buf, int count);`
## ASM ## ASM
**In:**
`>PUSHB fd` `>PUSHB fd`
`>PUSHW buf` `>PUSHW buf`
`>PUSHW count` `>PUSHW count`
@ -188,7 +188,6 @@ CS: A = EC
`hMem recvfrom(hFD fd, struct sockaddr *addr);` `hMem recvfrom(hFD fd, struct sockaddr *addr);`
## ASM ## ASM
**In:**
`>PUSHB fd` `>PUSHB fd`
`>PUSHW addr` (RecvFrom) `>PUSHW addr` (RecvFrom)
`>LIBCALL hLIBTCPIP,LIBTCPIP.Recv` `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
@ -203,7 +202,6 @@ CS: A = EC
`hMem recv(hFD fd);` `hMem recv(hFD fd);`
## ASM ## ASM
**In:**
`lda fd` `lda fd`
`>LIBCALL hLIBTCPIP,LIBTCPIP.Recv` `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
@ -217,7 +215,6 @@ CS: A = EC
`int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);` `int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);`
## ASM ## ASM
**In:**
`>PUSHB fd` `>PUSHB fd`
`>PUSHW buf` `>PUSHW buf`
`>PUSHWI count` `>PUSHWI count`
@ -234,7 +231,6 @@ CS: A = EC
`int skt.send(hFD fd, const void *buf, int count);` `int skt.send(hFD fd, const void *buf, int count);`
## ASM ## ASM
**In:**
`>PUSHB fd` `>PUSHB fd`
`>PUSHW buf` `>PUSHW buf`
`>PUSHWI count` `>PUSHWI count`
@ -251,7 +247,6 @@ Set Socket Options
`int getsockopt(hFD fd);` `int getsockopt(hFD fd);`
## ASM ## ASM
**In:**
`lda fd` `lda fd`
`>LIBCALL hLIBTCPIP,LIBTCPIP.GetSockOpt` `>LIBCALL hLIBTCPIP,LIBTCPIP.GetSockOpt`
@ -264,7 +259,6 @@ Set Socket Options
`int setsockopt(hFD fd, short int opts);` `int setsockopt(hFD fd, short int opts);`
## ASM ## ASM
**In:**
`>PUSHB fd` `>PUSHB fd`
`>PUSHB opts` `>PUSHB opts`
`>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt` `>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt`
@ -278,7 +272,6 @@ End Of File
`int eof(hFD fd);` `int eof(hFD fd);`
## ASM ## ASM
**In:**
`lda fd` `lda fd`
`>LIBCALL hLIBTCPIP,LIBTCPIP.EOF` `>LIBCALL hLIBTCPIP,LIBTCPIP.EOF`
@ -286,18 +279,6 @@ End Of File
CC : A = 0 if some data, A = $ff if EOF CC : A = 0 if some data, A = $ff if EOF
CS : A = Socket Error CS : A = Socket Error
# GetTable
Get socket table
## C
`void * gettable();`
## ASM
**In:**
`>LIBCALL hLIBTCPIP,LIBTCPIP.GetTable`
## RETURN VALUE
## License ## License
A2osX is licensed under the GNU General Public License. A2osX is licensed under the GNU General Public License.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -46,20 +46,24 @@ L.MSG2 .DA MSG2
CS.INIT >LDYA L.LIBETALK CS.INIT >LDYA L.LIBETALK
>SYSCALL LoadLib >SYSCALL LoadLib
bcs .9 bcs .9
sta hLIBETALK sta hLIBETALK
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG
>STYA ZPPTR1 >STYA ZPPTR1
* lda (ZPPTR1) lda (ZPPTR1)
* bmi .1 bne .1
jmp CS.RUN.ERR
* jmp CS.RUN.ERR
.1 ldy #S.PS.ARGC .1 ldy #S.PS.ARGC
lda (pPS),y lda (pPS),y
cmp #1 cmp #1
bcs .2 bcs .2
jmp CS.RUN.DUMP jmp CS.RUN.DUMP
.2 >PUSHEA.G DST.ADDR+3 .2 >PUSHEA.G DST.ADDR+3
@ -70,17 +74,18 @@ CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG
>SYSCALL ArgV >SYSCALL ArgV
>SYSCALL SScanF >SYSCALL SScanF
bcs CS.RUN.ERR bcs CS.RUN.ERR
ldy #S.PS.ARGC ldy #S.PS.ARGC
lda (pPS),y lda (pPS),y
cmp #1 cmp #2
beq CS.RUN.QUERY bcc CS.RUN.QUERY
cmp #3
bne CS.RUN.ERR bne CS.RUN.ERR
jmp CS.RUN.ADD jmp CS.RUN.ADD
CS.RUN.ERR >PUSHBI 0 CS.RUN.ERR >LDYA L.MSG.Usage
>LDYA L.MSG.Usage >SYSCALL PutS
>SYSCALL PrintF
lda #E.SYN lda #E.SYN
sec sec
rts rts
@ -91,30 +96,41 @@ CS.RUN.QUERY jsr Init.Timeout
>PUSHEA.G DST.ADDR >PUSHEA.G DST.ADDR
>LIBCALL hLIBETALK,LIBETALK.AARP.Query >LIBCALL hLIBETALK,LIBETALK.AARP.Query
bcc .2 success, print & exit bcc .2 success, print & exit
jsr Wait.TimeOut jsr Wait.TimeOut
bcs .8 bcs .8
>SLEEP >SLEEP
>SYSCALL GetChar >SYSCALL GetChar
bcs .1 bcs .1
cmp #3 cmp #3
beq .9 beq .9
bra .1 bra .1
.2 ldx #5 .2 ldx #5
ldy #DST.MAC+5 ldy #DST.MAC+5
.3 >PUSHB (pData),y .3 >PUSHB (pData),y
dey dey
dex dex
bpl .3 bpl .3
ldx #3 ldx #3
ldy #DST.ADDR+3 ldy #DST.ADDR+3
.4 >PUSHB (pData),y .4 >PUSHB (pData),y
dey dey
dex dex
bne .4 bne .4
>PUSHBI 8 >PUSHBI 8
>LDYA L.MSG2 >LDYA L.MSG2
>SYSCALL PrintF >SYSCALL PrintF
.8 lda #0 .8 lda #0
.9 sec .9 sec
rts rts
*-------------------------------------- *--------------------------------------
@ -133,9 +149,12 @@ CS.RUN.ADD >PUSHEA.G DST.MAC+5
>PUSHEA.G DST.MAC >PUSHEA.G DST.MAC
>PUSHEA.G DST.ADDR >PUSHEA.G DST.ADDR
>LIBCALL hLIBETALK,LIBETALK.AARP.Add * >LIBCALL hLIBETALK,LIBETALK.AARP.Add
clc clc
.8 rts .8 rts
.9 jmp CS.RUN.ERR .9 jmp CS.RUN.ERR
*-------------------------------------- *--------------------------------------
CS.RUN.DUMP >LIBCALL hLIBETALK,LIBETALK.AARP.GetCache CS.RUN.DUMP >LIBCALL hLIBETALK,LIBETALK.AARP.GetCache
@ -144,8 +163,10 @@ CS.RUN.DUMP >LIBCALL hLIBETALK,LIBETALK.AARP.GetCache
>SYSCALL PutS >SYSCALL PutS
ldx #K.AARPCACHE.SIZE ldx #K.AARPCACHE.SIZE
.1 lda (ZPPTR1) .1 lda (ZPPTR1)
beq .4 beq .4
ldy #S.AARPCACHE.ADDR+3 ldy #S.AARPCACHE.ADDR+3
>PUSHB (ZPPTR1),y >PUSHB (ZPPTR1),y
dey dey
@ -154,6 +175,7 @@ CS.RUN.DUMP >LIBCALL hLIBETALK,LIBETALK.AARP.GetCache
iny iny
>PUSHB (ZPPTR1),y >PUSHB (ZPPTR1),y
ldy #S.AARPCACHE.MAC+6 ldy #S.AARPCACHE.MAC+6
.3 dey .3 dey
>PUSHB (ZPPTR1),y >PUSHB (ZPPTR1),y
cpy #S.AARPCACHE.MAC cpy #S.AARPCACHE.MAC
@ -168,14 +190,18 @@ CS.RUN.DUMP >LIBCALL hLIBETALK,LIBETALK.AARP.GetCache
phx phx
>SYSCALL PrintF >SYSCALL PrintF
plx plx
.4 lda ZPPTR1 .4 lda ZPPTR1
clc clc
adc #S.AARPCACHE adc #S.AARPCACHE
sta ZPPTR1 sta ZPPTR1
bcc .5 bcc .5
inc ZPPTR1+1 inc ZPPTR1+1
.5 dex .5 dex
bne .1 bne .1
.8 lda #0 tell TSKMGR that all done ok, but .8 lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory sec we do not want to stay in memory
rts rts
@ -186,14 +212,18 @@ CS.DOEVENT lda (pEvent)
ldy #TimeOut ldy #TimeOut
lda (pData),y lda (pData),y
beq .9 beq .9
dec dec
sta (pData),y sta (pData),y
.9 sec do not discard TIMER event .9 sec do not discard TIMER event
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT lda hLIBETALK CS.QUIT lda hLIBETALK
beq .8 beq .8
>SYSCALL UnloadLib >SYSCALL UnloadLib
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
@ -203,10 +233,13 @@ Init.Timeout ldy #TimeOut
rts rts
*-------------------------------------- *--------------------------------------
Wait.TimeOut sec Wait.TimeOut sec
ldy #TimeOut ldy #TimeOut
lda (pData),y lda (pData),y
beq .9 beq .9
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.END CS.END

View File

@ -272,6 +272,7 @@ CS.RUN.PrintListYAX
adc ZPPTR1 adc ZPPTR1
sta ZPPTR1 sta ZPPTR1
bcc .2 bcc .2
inc ZPPTR1+1 inc ZPPTR1+1
.2 dex .2 dex
@ -285,6 +286,7 @@ CS.DOEVENT sec
*-------------------------------------- *--------------------------------------
CS.QUIT lda hBuf CS.QUIT lda hBuf
beq .8 beq .8
>SYSCALL FreeMem >SYSCALL FreeMem
.8 clc .8 clc

View File

@ -115,11 +115,10 @@ CS.RUN inc ArgCount
ldy #S.PS.hStdOut ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
tay
tax ldx FILEs.hFD-1,y
ldy FDs.pLO-1,x
lda hFDs-1,x lda FDs.pHI-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1 >STYA ZPPtr1
lda (ZPPtr1) lda (ZPPtr1)

View File

@ -142,9 +142,10 @@ CS.RUN lda #C.SPACE
.80 ldy #S.PS.hStdIn .80 ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
tax tay
lda hFDs-1,x ldx FILEs.hFD-1,y
>SYSCALL GetMemPtr ldy FDs.pLO-1,x
lda FDs.pHI-1,x
>STYA ZPPtr1 >STYA ZPPtr1
lda (ZPPtr1) lda (ZPPtr1)

View File

@ -420,7 +420,7 @@ CS.RUN.NewLine lda #C.CR
CS.RUN.SetCRLF ldy #S.PS.hStdOut CS.RUN.SetCRLF ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
tax tax
lda hFDs-1,x lda FILEs.hFD-1,x
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPPtr1 >STYA ZPPtr1
lda (ZPPtr1) #S.FD.T.REG ? lda (ZPPtr1) #S.FD.T.REG ?

View File

@ -26,9 +26,13 @@ ZPFrameBase .BS 2
ZPFramePtr .BS 2 ZPFramePtr .BS 2
BufPtr .BS 2 BufPtr .BS 2
DevID .BS 1
ProbeCnt .BS 1 ProbeCnt .BS 1
TimeOut .BS 1 TimeOut .BS 1
hFrame .BS 1 hFrame .BS 1
ZPPtr1 .BS 1
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -67,25 +71,27 @@ L.MSG2.C .DA MSG2.C
L.MSG2.U .DA MSG2.U L.MSG2.U .DA MSG2.U
L.MSG2.ADDR .DA MSG2.ADDR L.MSG2.ADDR .DA MSG2.ADDR
L.MSG2.ROUTER .DA MSG2.ROUTER L.MSG2.ROUTER .DA MSG2.ROUTER
L.MSG2.MCAST .DA MSG2.MCAST
L.MSG2.NETRANGE .DA MSG2.NETRANGE
L.MSG2.OBJECT .DA MSG2.OBJECT L.MSG2.OBJECT .DA MSG2.OBJECT
L.MSG.CFG .DA MSG.CFG L.MSG.CFG .DA MSG.CFG
L.MSG.CFG.KO .DA MSG.CFG.KO L.MSG.CFG.KO .DA MSG.CFG.KO
L.MSG.CFG.OK .DA MSG.CFG.OK L.MSG.CFG.OK .DA MSG.CFG.OK
L.HOSTNAME .DA HOSTNAME L.HOSTNAME .DA HOSTNAME
L.CFG.DefaultHost .DA CFG.DefaultHost L.CFG.DefaultHost .DA CFG.DefaultHost
L.ETKCFG .DA ETKCFG
L.ETKCFG.OBJECT .DA ETKCFG+S.ETKCFG.OBJECT
*-------------------------------------- *--------------------------------------
L.MSG.PROBE .DA MSG.PROBE L.MSG.PROBE .DA MSG.PROBE
L.MSG.PROBE.KO .DA MSG.PROBE.KO L.MSG.PROBE.KO .DA MSG.PROBE.KO
L.MSG.PROBE.OK .DA MSG.PROBE.OK L.MSG.PROBE.OK .DA MSG.PROBE.OK
L.AARP.PRB .DA AARP.PRB L.AARP.PRB .DA AARP.PRB
L.DDP.GetNetInfo .DA DDP.GetNetInfo L.DDP.GetNetInfo .DA DDP.GetNetInfo
L.NBP.Browse .DA NBP.Browse
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBETALK CS.INIT >LDYA L.LIBETALK
>SYSCALL LoadLib >SYSCALL LoadLib
bcs .9 bcs .9
sta hLIBETALK sta hLIBETALK
.9 rts .9 rts
@ -93,36 +99,34 @@ CS.INIT >LDYA L.LIBETALK
CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG
>STYA pETKCFG >STYA pETKCFG
ldy #S.ETKCFG-1 ldy #S.NETCFG.DevID
.1 lda (pETKCFG),y lda (pETKCFG),y
sta ETKCFG,y
dey
bpl .1
lda ETKCFG+S.NETCFG.DevID
bne CS.RUN.SETUP bne CS.RUN.SETUP
>LDYA L.MSG.NODEV >LDYA L.MSG.NODEV
>SYSCALL PutS >SYSCALL PutS
lda #MLI.E.NODEV lda #MLI.E.NODEV
sec sec
rts rts
CS.RUN.SETUP lda ETKCFG+S.NETCFG.STATUS CS.RUN.SETUP sta DevID
bne .7
lda (pETKCFG)
bmi .7
jsr CFG.EtcFiles bne .1
jsr CS.RUN.EtcFiles
jsr CS.RUN.PROBE jsr CS.RUN.PROBE
jsr CS.RUN.GETNETINFO .1 jsr CS.RUN.GETNETINFO
lda #$80
sta ETKCFG+S.NETCFG.STATUS
>PUSHW L.ETKCFG
>LIBCALL hLIBETALK,LIBETALK.SETCFG
.7 jsr CS.RUN.DUMP .7 jsr CS.RUN.DUMP
>PUSHW L.NBP.Browse
>LIBCALL hLIBETALK,LIBETALK.NBP.Lookop
.8 lda #0 .8 lda #0
sec sec
CS.RUN.SETUP.RTS CS.RUN.SETUP.RTS
@ -139,20 +143,17 @@ CS.RUN.DUMP >LEA.G DCB.NIC
ldx #S.IOCTL.S.GETDIB ldx #S.IOCTL.S.GETDIB
jsr CS.RUN.IOCTL jsr CS.RUN.IOCTL
bcs CS.RUN.SETUP.RTS bcs CS.RUN.SETUP.RTS
*--------------------------------------
CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV
lda ETKCFG+S.NETCFG.DevID >PUSHB DevID
>PUSHA
>SYSCALL GetMemPtr tax
lda FDs.pLO-1,x
pha
tya
clc clc
adc #S.FD.DEV adc #S.FD.DEV
tay tay
pla lda FDs.pHI-1,x
adc /S.FD.DEV adc /S.FD.DEV
>PUSHYA >PUSHYA
@ -201,10 +202,11 @@ CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV
>LDA.G DCB.NIC+S.DCB.NIC.LINK >LDA.G DCB.NIC+S.DCB.NIC.LINK
and #S.DCB.NIC.LINK.OK and #S.DCB.NIC.LINK.OK
bne CS.RUN.LINK bne CS.RUN.LINK
>LDYA L.MSG1.LINK.KO >LDYA L.MSG1.LINK.KO
>SYSCALL PutS >SYSCALL PutS
bra CS.RUN.DUMPNET bra CS.RUN.DUMPETKCFG
*--------------------------------------
CS.RUN.LINK >LDYA L.MSG1.LINK.OK CS.RUN.LINK >LDYA L.MSG1.LINK.OK
>SYSCALL PutS >SYSCALL PutS
@ -215,82 +217,149 @@ CS.RUN.LINK >LDYA L.MSG1.LINK.OK
>LDA.G DCB.NIC+S.DCB.NIC.SPEED >LDA.G DCB.NIC+S.DCB.NIC.SPEED
and #$0F and #$0F
tax tax
.4 phx .4 phx
lda #'0' lda #'0'
>SYSCALL PutChar >SYSCALL PutChar
plx plx
dex dex
bne .4 bne .4
>LDA.G DCB.NIC+S.DCB.NIC.LINK >LDA.G DCB.NIC+S.DCB.NIC.LINK
and #S.DCB.NIC.LINK.FD and #S.DCB.NIC.LINK.FD
bne .5 bne .5
>LDYA L.MSG1.DPLX.HD >LDYA L.MSG1.DPLX.HD
bra .6 bra .6
.5 >LDYA L.MSG1.DPLX.FD
.6 >SYSCALL PutS
CS.RUN.DUMPNET >PUSHW L.MSG2 .5 >LDYA L.MSG1.DPLX.FD
.6 >SYSCALL PutS
*--------------------------------------
CS.RUN.DUMPETKCFG
>PUSHW L.MSG2
>PUSHBI 0 >PUSHBI 0
>SYSCALL PrintF >SYSCALL PrintF
lda ETKCFG+S.ETKCFG.NodID lda (pETKCFG)
beq .11 beq .11
>LDYA L.MSG2.C >LDYA L.MSG2.C
bra .10 bra .10
.11 >LDYA L.MSG2.U .11 >LDYA L.MSG2.U
.10 >SYSCALL PutS .10 >SYSCALL PutS
>PUSHW L.MSG2.ADDR >PUSHW L.MSG2.ADDR
>PUSHW ETKCFG+S.ETKCFG.NetID
>PUSHB ETKCFG+S.ETKCFG.NodID ldy #S.ETKCFG.NetID+1
lda (pETKCFG),y
>PUSHA
dey
lda (pETKCFG),y
>PUSHA
ldy #S.ETKCFG.NodID
lda (pETKCFG),y
>PUSHA
>PUSHBI 3 >PUSHBI 3
>SYSCALL PrintF >SYSCALL PrintF
>PUSHW L.MSG2.ROUTER >PUSHW L.MSG2.ROUTER
>PUSHW ETKCFG+S.ETKCFG.NetID ldy #S.ETKCFG.NetID+1
>PUSHB ETKCFG+S.ETKCFG.Router lda (pETKCFG),y
>PUSHA
dey
lda (pETKCFG),y
>PUSHA
ldy #S.ETKCFG.Router
lda (pETKCFG),y
>PUSHA
>PUSHBI 3 >PUSHBI 3
>SYSCALL PrintF >SYSCALL PrintF
>PUSHW L.MSG2.OBJECT >PUSHW L.MSG2.MCAST
>PUSHW L.ETKCFG.OBJECT
>PUSHBI 2 ldy #S.ETKCFG.MCAddress+1
.1 >PUSHB (pETKCFG),y
iny
cpy #S.ETKCFG.MCAddress+7
bcc .1
>PUSHBI 6
>SYSCALL PrintF >SYSCALL PrintF
lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory >PUSHW L.MSG2.NETRANGE
ldy #S.ETKCFG.NetStart+1
lda (pETKCFG),y
>PUSHA
dey
lda (pETKCFG),y
>PUSHA
ldy #S.ETKCFG.NetEnd+1
lda (pETKCFG),y
>PUSHA
dey
lda (pETKCFG),y
>PUSHA
>PUSHBI 4
>SYSCALL PrintF
>PUSHW L.MSG2.OBJECT
lda pETKCFG
clc
adc #S.ETKCFG.Object
tay
lda pETKCFG+1
adc /S.ETKCFG.Object
>PUSHYA
lda pETKCFG
clc
adc #S.ETKCFG.Zone
tay
lda pETKCFG+1
adc /S.ETKCFG.Zone
>PUSHYA
>PUSHBI 4
>SYSCALL PrintF
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.PROBE >LDYA L.MSG.PROBE CS.RUN.PROBE >LDYA L.MSG.PROBE
>SYSCALL PutS >SYSCALL PutS
ldy #S.ETKCFG.MAC+5
ldx #5 ldx #5
.20 lda ETKCFG+S.NETCFG.MAC,x .20 lda (pETKCFG),y
sta AARP.PRB.SHA,x sta AARP.PRB.SHA,x
dey
dex dex
bpl .20 bpl .20
lda #$FF lda #$FF
sta AARP.PRB.SPA+2
sta AARP.PRB.TPA+2
lda #$FE
sta AARP.PRB.SPA+1 sta AARP.PRB.SPA+1
sta AARP.PRB.TPA+1 sta AARP.PRB.TPA+1
lda #$FE
sta AARP.PRB.SPA+2
sta AARP.PRB.TPA+2
lda A2osX.TIMER16 lda A2osX.TIMER16
eor A2osX.TIMER16+1 eor A2osX.TIMER16+1
bne .1 bne .1
inc inc
.1 cmp #$FE .1 cmp #$FE
bcc .2 bcc .2
eor #$80 eor #$80
.2 sta AARP.PRB.SPA+3 .2 sta AARP.PRB.SPA+3
sta AARP.PRB.TPA+3 sta AARP.PRB.TPA+3
lda #PROBE.MAX lda #PROBE.MAX
sta ProbeCnt sta ProbeCnt
@ -299,27 +368,31 @@ CS.RUN.PROBE >LDYA L.MSG.PROBE
>LDYAI AARP.PRB.LEN >LDYAI AARP.PRB.LEN
>STYA.G DEV.IOCTL+S.IOCTL.BYTECNT >STYA.G DEV.IOCTL+S.IOCTL.BYTECNT
>PUSHB ETKCFG+S.NETCFG.DevID ldx #IOCTL.WRITE
lda #IOCTL.WRITE jsr CS.RUN.IOCTL.X
jsr CS.RUN.IOCTL.A
>SLEEP >SLEEP
dec ProbeCnt dec ProbeCnt
bne .3 bne .3
lda AARP.PRB.SPA+2 lda AARP.PRB.SPA+2
sta ETKCFG+S.ETKCFG.NetID ldy #S.ETKCFG.NetID
sta DDP.GetNetInfo+S.DDP2.SRC.NET sta (pETKCFG),y
lda AARP.PRB.SPA+1
sta ETKCFG+S.ETKCFG.NetID+1
sta DDP.GetNetInfo+S.DDP2.SRC.NET+1 sta DDP.GetNetInfo+S.DDP2.SRC.NET+1
lda AARP.PRB.SPA+1
iny
sta (pETKCFG),y
sta DDP.GetNetInfo+S.DDP2.SRC.NET
lda AARP.PRB.SPA+3 lda AARP.PRB.SPA+3
sta ETKCFG+S.ETKCFG.NodID ldy #S.ETKCFG.NodID
sta (pETKCFG),y
sta DDP.GetNetInfo+S.DDP2.SRC.NOD sta DDP.GetNetInfo+S.DDP2.SRC.NOD
* clc lda (pETKCFG)
inc
sta (pETKCFG)
rts rts
*-------------------------------------- *--------------------------------------
@ -329,54 +402,45 @@ CS.RUN.GETNETINFO
>LDYAI DDP.GetNetInfo.LEN >LDYAI DDP.GetNetInfo.LEN
>STYA.G DEV.IOCTL+S.IOCTL.BYTECNT >STYA.G DEV.IOCTL+S.IOCTL.BYTECNT
>PUSHW ETKCFG+S.NETCFG.DevID ldx #IOCTL.WRITE
lda #IOCTL.WRITE jsr CS.RUN.IOCTL.X
jsr CS.RUN.IOCTL.A bcs .9
lda #TIMEOUT.MAX lda #TIMEOUT.MAX
sta TimeOut sta TimeOut
.1 >SLEEP .1 >SLEEP
dec TimeOut lda (pETKCFG)
beq .9 bmi .8
>PUSHW ETKCFG+S.NETCFG.DevID dec TimeOut
lda #IOCTL.READ bne .1
jsr CS.RUN.IOCTL.A
bcs .1
sta hFrame sec
>SYSCALL GetMemPtr rts
>STYA ZPFrameBase
.8 >LDYA L.MSG.PROBE.OK
lda hFrame
>SYSCALL FreeMem
>LDYA L.MSG.PROBE.OK
>SYSCALL PutS >SYSCALL PutS
rts
.9 rts
.9 sec
rts
*-------------------------------------- *--------------------------------------
CS.RUN.IOCTL >STYA.G DEV.IOCTL+S.IOCTL.BUFPTR CS.RUN.IOCTL >STYA.G DEV.IOCTL+S.IOCTL.BUFPTR
txa txa
>STA.G DEV.IOCTL+S.IOCTL.S >STA.G DEV.IOCTL+S.IOCTL.S
>PUSHB ETKCFG+S.NETCFG.DevID ldx #IOCTL.STATUS
lda #IOCTL.STATUS
CS.RUN.IOCTL.A >PUSHA CS.RUN.IOCTL.X >PUSHB DevID
txa
>PUSHA
>PUSHEA.G DEV.IOCTL >PUSHEA.G DEV.IOCTL
>SYSCALL IOCTL >SYSCALL IOCTL
rts rts
*-------------------------------------- *--------------------------------------
CFG.EtcFiles >LDYAI 256 CS.RUN.EtcFiles >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem
bcs .9 bcs .9
@ -386,22 +450,26 @@ CFG.EtcFiles >LDYAI 256
jsr CFG.Read.PrintF jsr CFG.Read.PrintF
jsr CFG.Read.HOSTNAME jsr CFG.Read.HOSTNAME
lda ETKCFG+S.ETKCFG.OBJECT ldy #S.ETKCFG.Object
lda (pETKCFG),y
bne .2 bne .2
>LDYA L.ETKCFG.OBJECT lda pETKCFG
iny clc
bne .1 adc #S.ETKCFG.Object+1
inc tay
lda pETKCFG+1
adc /S.ETKCFG.Object+1
.1 >PUSHYA >PUSHYA
>PUSHW L.CFG.DefaultHost >PUSHW L.CFG.DefaultHost
>PUSHW A2osX.TIMER16 >PUSHW A2osX.TIMER16
>PUSHBI 2 >PUSHBI 2
>SYSCALL SPrintF >SYSCALL SPrintF
lda #10 lda #10
sta ETKCFG+S.ETKCFG.OBJECT ldy #S.ETKCFG.Object
sta (pETKCFG),y
.2 lda CFG.hBuf1 .2 lda CFG.hBuf1
>SYSCALL FreeMem >SYSCALL FreeMem
@ -417,6 +485,14 @@ CFG.Read.PrintF pha
rts rts
*-------------------------------------- *--------------------------------------
CFG.Read.HOSTNAME CFG.Read.HOSTNAME
lda pETKCFG
clc
adc #S.ETKCFG.Object
sta ZPPtr1
lda pETKCFG+1
adc /S.ETKCFG.Object
sta ZPPtr1+1
>LDYA L.HOSTNAME >LDYA L.HOSTNAME
jsr CFG.Read.Open jsr CFG.Read.Open
bcs .9 bcs .9
@ -429,6 +505,7 @@ CFG.Read.HOSTNAME
lda (BufPtr) lda (BufPtr)
beq .1 empty line... beq .1 empty line...
cmp #'# cmp #'#
beq .1 comment... beq .1 comment...
@ -437,12 +514,13 @@ CFG.Read.HOSTNAME
.2 lda (BufPtr),y .2 lda (BufPtr),y
beq .8 end of name beq .8 end of name
sta ETKCFG+S.ETKCFG.OBJECT+1,y
iny iny
sta (ZPPtr1),y
cpy #32 cpy #32
bne .2 bne .2
.8 sty ETKCFG+S.ETKCFG.OBJECT .8 tya
sta (ZPPtr1)
clc clc
.HS B0 BCS .HS B0 BCS
@ -450,6 +528,7 @@ CFG.Read.HOSTNAME
jmp CFG.Read.Close jmp CFG.Read.Close
*-------------------------------------- *--------------------------------------
CFG.Read.Result bcc .1 CFG.Read.Result bcc .1
pha pha
>PUSHW L.MSG.CFG.KO >PUSHW L.MSG.CFG.KO
pla pla
@ -506,7 +585,9 @@ CS.DOEVENT lda (pEvent)
*-------------------------------------- *--------------------------------------
CS.QUIT lda hLIBETALK CS.QUIT lda hLIBETALK
beq .8 beq .8
>SYSCALL UnloadLib >SYSCALL UnloadLib
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
@ -519,7 +600,7 @@ MSG.USAGE .CZ "Usage : ETCONFIG\r\n"
MSG.NODEV .CZ "EtherTalk not bound to any device." MSG.NODEV .CZ "EtherTalk not bound to any device."
*-------------------------------------- *--------------------------------------
MSG1.DEV .CS "NIC Device Configuration :\r\n" MSG1.DEV .CS "NIC Device Configuration :\r\n"
.CS " Device ID : $%h\r\n" .CS " Device ID : %d\r\n"
.CS " Device Name : %s\r\n" .CS " Device Name : %s\r\n"
.CS " Device Type : %S\r\n" .CS " Device Type : %S\r\n"
.CZ " HW Address : %02h:%02h:%02h:%02h:%02h:%02h\r\n" .CZ " HW Address : %02h:%02h:%02h:%02h:%02h:%02h\r\n"
@ -537,7 +618,9 @@ MSG2.C .CZ "Configured"
MSG2.U .CZ "Not Configured" MSG2.U .CZ "Not Configured"
MSG2.ADDR .CZ " Network/Node : %D/%d\r\n" MSG2.ADDR .CZ " Network/Node : %D/%d\r\n"
MSG2.ROUTER .CZ " Router : %D/%d\r\n" MSG2.ROUTER .CZ " Router : %D/%d\r\n"
MSG2.OBJECT .CZ " Object Name : %S\r\n" MSG2.MCAST .CZ " Multicast @ : %h:%h:%h:%h:%h:%h\r\n"
MSG2.NETRANGE .CZ " Netrange : %D/%D\r\n"
MSG2.OBJECT .CZ " Object.Zone : %S@%S\r\n"
*-------------------------------------- *--------------------------------------
MSG.CFG .CZ "ETCONFIG:Reading %s..." MSG.CFG .CZ "ETCONFIG:Reading %s..."
MSG.CFG.KO .CZ "Not Found. [%h]\r\n" MSG.CFG.KO .CZ "Not Found. [%h]\r\n"
@ -551,35 +634,40 @@ MSG.PROBE .CZ "ETCONFIG:Acquiring NODE..."
MSG.PROBE.KO .CZ "ETCONFIG:Time Out [%h].\r\n" MSG.PROBE.KO .CZ "ETCONFIG:Time Out [%h].\r\n"
MSG.PROBE.OK .CZ "ETCONFIG:Success." MSG.PROBE.OK .CZ "ETCONFIG:Success."
*-------------------------------------- *--------------------------------------
ETKCFG .BS S.ETKCFG
CFG.hCfgFile .BS 1 CFG.hCfgFile .BS 1
CFG.hBuf1 .BS 1 CFG.hBuf1 .BS 1
*-------------------------------------- *--------------------------------------
AARP.PRB .HS 090007FFFFFF S.ETH.DSTMAC AARP.PRB .HS 090007FFFFFF S.ETH.DSTMAC
AARP.PRB.SRCMAC .BS 6 .BS 6
.DA #0,#36 S.ETH.802.3.LENGTH .DA /AARP.PRB.DEND-AARP.PRB.LLC
.DA #AARP.PRB.DEND-AARP.PRB.LLC
AARP.PRB.LLC
.HS AA S.ETH.802.2.DSTSAP .HS AA S.ETH.802.2.DSTSAP
.HS AA S.ETH.802.2.SRCSAP .HS AA S.ETH.802.2.SRCSAP
.HS 03 S.ETH.802.2.CTRL .HS 03 S.ETH.802.2.CTRL
.HS 00.00.00.80.F3 S.ETH.SNAP.PROTO .HS 00.00.00
.HS 80.F3 S.ETH.SNAP.PROTO
*--------------------------------------
.HS 00.01.80.9B.06.04 .HS 00.01.80.9B.06.04
.HS 0003 Probe .HS 0003 Probe
AARP.PRB.SHA .BS 6 AARP.PRB.SHA .BS 6
AARP.PRB.SPA .BS 4 AARP.PRB.SPA .BS 4
AARP.PRB.THA .BS 6 AARP.PRB.THA .BS 6
AARP.PRB.TPA .BS 4 AARP.PRB.TPA .BS 4
AARP.PRB.DEND .EQ *
.BS AARP.PRB+60-* .BS AARP.PRB+60-*
AARP.PRB.LEN .EQ 60 AARP.PRB.LEN .EQ 60
*-------------------------------------- *--------------------------------------
DDP.GetNetInfo .HS 090007FFFFFF S.ETH.DSTMAC DDP.GetNetInfo .HS 090007FFFFFF S.ETH.DSTMAC
.BS 6 .BS 6
.DA #0,#DDP.GetNetInfo.DEND-DDP.GetNetInfo.LLC .DA /DDP.GetNetInfo.DEND-DDP.GetNetInfo.LLC
*-------------------------------------- .DA #DDP.GetNetInfo.DEND-DDP.GetNetInfo.LLC
DDP.GetNetInfo.LLC DDP.GetNetInfo.LLC
.HS AA .HS AA
.HS AA .HS AA
.HS 03 .HS 03
.HS 08.00.07.80.9B .HS 08.00.07
.HS 80.9B S.ETH.SNAP.PROTO
*-------------------------------------- *--------------------------------------
DDP.GetNetInfo.DDP DDP.GetNetInfo.DDP
.DA #0,#DDP.GetNetInfo.DEND-DDP.GetNetInfo.DDP .DA #0,#DDP.GetNetInfo.DEND-DDP.GetNetInfo.DDP
@ -600,6 +688,11 @@ DDP.GetNetInfo.DEND .EQ *
.BS DDP.GetNetInfo+60-* .BS DDP.GetNetInfo+60-*
DDP.GetNetInfo.LEN .EQ 60 DDP.GetNetInfo.LEN .EQ 60
*-------------------------------------- *--------------------------------------
NBP.Browse .PS "="
.PS "="
.PS "*"
.HS 00
*--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START

View File

@ -23,7 +23,7 @@ GFX.TEXT ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
tax tax
lda hFDs-1,x lda FILEs.hFD-1,x
bra GFX.IOCTL bra GFX.IOCTL
GFX.TEXT.RTS clc GFX.TEXT.RTS clc

View File

@ -189,18 +189,18 @@ CS.RUN.CheckArgs
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
tax tay
ldx FILEs.hFD-1,y
lda hFDs-1,x lda FDs.pLO-1,x
>SYSCALL GetMemPtr sta ZPPtr1
>STYA ZPPtr1 lda FDs.pHI-1,x
sta ZPPtr1+1
lda (ZPPtr1) lda (ZPPtr1)
cmp #S.FD.T.PIPE cmp #S.FD.T.PIPE
bne .97 bne .97
ldy #S.PS.hStdIn sty hFile
lda (pPS),y
sta hFile
.8 clc .8 clc

View File

@ -246,14 +246,12 @@ CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV
lda IPCFG+S.NETCFG.DevID lda IPCFG+S.NETCFG.DevID
>PUSHA >PUSHA
>SYSCALL GetMemPtr tax
lda FDs.pLO-1,x
pha
tya
clc clc
adc #S.FD.DEV adc #S.FD.DEV
tay tay
pla lda FDs.pHI-1,x
adc /S.FD.DEV adc /S.FD.DEV
>PUSHYA >PUSHYA
@ -461,7 +459,7 @@ MSG.USAGE .CS "Usage : IPCONFIG <switches>\r\n"
MSG.NODEV .AZ "TCP/IP not bound to any device." MSG.NODEV .AZ "TCP/IP not bound to any device."
*-------------------------------------- *--------------------------------------
MSG1.DEV .CS "NIC Device Configuration :\r\n" MSG1.DEV .CS "NIC Device Configuration :\r\n"
.CS " Device ID : $%h\r\n" .CS " Device ID : %d\r\n"
.CS " Device Name : %s\r\n" .CS " Device Name : %s\r\n"
.CS " Device Type : %S\r\n" .CS " Device Type : %S\r\n"
.CZ " HW Address : %02h:%02h:%02h:%02h:%02h:%02h\r\n" .CZ " HW Address : %02h:%02h:%02h:%02h:%02h:%02h\r\n"

View File

@ -5,7 +5,7 @@ NEW
.OR $2000 .OR $2000
.TF bin/irc .TF bin/irc
*-------------------------------------- *--------------------------------------
TLS .EQ 1 TLS .EQ 0
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
@ -637,18 +637,20 @@ CS.RUN.CMD.PRIVMSG
.1 iny .1 iny
lda (ZPMsgPfxPtr),y lda (ZPMsgPfxPtr),y
beq .2 beq .2
eor #'!' eor #'!'
bne .1 bne .1
sta (ZPMsgPfxPtr),y .2 sta (ZPMsgPfxPtr),y
.2 >PUSHW L.SEQ.PRIVMSG >PUSHW L.SEQ.PRIVMSG
>PUSHW ZPMsgPfxPtr >PUSHW ZPMsgPfxPtr
>PUSHW ZPMsgExtPtr >PUSHW ZPMsgExtPtr
>PUSHBI 4 >PUSHBI 4
>SYSCALL PrintF >SYSCALL PrintF
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.CMD.MODE CS.RUN.CMD.MODE
@ -1091,7 +1093,7 @@ IRC.PRIVMSG .CZ "PRIVMSG %s :%s\r\n"
*-------------------------------------- *--------------------------------------
SEQ.INIT .CZ "\ec\e(B\e)0\e[?7l\e[2;20r\e[22;1H\e[?7h" SEQ.INIT .CZ "\ec\e(B\e)0\e[?7l\e[2;20r\e[22;1H\e[?7h"
SEQ.BAR .CZ "\e[?7l\e7\e[%d;1H\e[7m\e[37;40m%80s\e[0m\e8\e[?7h" SEQ.BAR .CZ "\e[?7l\e7\e[%d;1H\e[7m\e[37;40m%80s\e[0m\e8\e[?7h"
SEQ.TXTCLR .CZ "\e[22;1H\e[97;41m\e[K\r\n\e[K\r\n\e[K\e[22;1H" SEQ.TXTCLR .CZ "\e[97;41m\e[24;1H\e[K\e[23;1H\e[K\e[22;1H\e[K"
SEQ.PRIVMSG .CZ "\e7\e[20;1H\r\n\e[93;44m\e[7m%s:\e[0m\e[93;44m%s\e[K\e8" SEQ.PRIVMSG .CZ "\e7\e[20;1H\r\n\e[93;44m\e[7m%s:\e[0m\e[93;44m%s\e[K\e8"
SEQ.DUMPMSG .CZ "\e7\e[20;1H\r\n\e[7m%s \e[0m%s %s %s\e8" SEQ.DUMPMSG .CZ "\e7\e[20;1H\r\n\e[7m%s \e[0m%s %s %s\e8"
SEQ.INFOMSG .CZ "\e7\e[20;1H\e[92;44m%s\r\n\e8" SEQ.INFOMSG .CZ "\e7\e[20;1H\e[92;44m%s\r\n\e8"

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000

View File

@ -97,10 +97,13 @@ CS.INIT clc
*-------------------------------------- *--------------------------------------
CS.RUN ldy #S.PS.hStdOut CS.RUN ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
tax tay
lda hFDs-1,x ldx FILEs.hFD-1,y
>SYSCALL GetMemPtr lda FDs.pLO-1,x
>STYA ZPPtr1 sta ZPPtr1
lda FDs.pHI-1,x
sta ZPPtr1+1
lda (ZPPtr1) lda (ZPPtr1)
* cmp #S.FD.T.REG * cmp #S.FD.T.REG
beq .10 beq .10

View File

@ -14,7 +14,7 @@ NEW
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
ZPFDPtr .BS 2 ZPFDPtr .BS 2
Index .BS 1 hFD .BS 1
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -37,14 +37,13 @@ CS.START cld
.DA CS.RUN .DA CS.RUN
.DA CS.EVENT .DA CS.EVENT
.DA CS.QUIT .DA CS.QUIT
L.MSG0 .DA MSG0 L.MSG.Header .DA MSG.Header
L.MSG.FD .DA MSG.FD
L.MSG.DEV .DA MSG.DEV L.MSG.DEV .DA MSG.DEV
L.MSG.DEV.ERR .DA MSG.DEV.ERR L.MSG.DEV.ERR .DA MSG.DEV.ERR
L.MSG.DEV.DIB .DA MSG.DEV.DIB L.MSG.DEV.DIB .DA MSG.DEV.DIB
L.MSG.DEV.C .DA MSG.DEV.C L.MSG.DEV.NA .DA MSG.DEV.NA
L.MSG.DEV.B .DA MSG.DEV.B L.MSG.DEV.B .DA MSG.DEV.B
L.MSG.PIPE .DA MSG.PIPE
L.NO.PATH .DA NO.PATH
J.FD .DA DumpFD.REG J.FD .DA DumpFD.REG
.DA DumpFD.DIR .DA DumpFD.DIR
.DA DumpFD.CDEV .DA DumpFD.CDEV
@ -66,59 +65,77 @@ L.FD.T .DA FD.T.REG
CS.INIT clc CS.INIT clc
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN >LDYA L.MSG0 CS.RUN >LDYA L.MSG.Header
>SYSCALL PutS >SYSCALL PutS
ldx #0 ldx #1
.1 stx Index .1 stx hFD
lda hFDs,x lda FDs.pHI-1,x
beq .7 beq .7
>SYSCALL GetMemPtr sta ZPFDPtr+1
>STYA ZPFDPtr lda FDs.pLO-1,x
sta ZPFDPtr
jsr DumpFD jsr DumpFD
bcs .9 bcs .9
ldx Index ldx hFD
.7 inx .7 inx
cpx #K.hFD.MAX cpx #K.FD.MAX+1
bne .1 bne .1
lda #0 .8 lda #0
sec sec
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
DumpFD lda (ZPFDPtr) DumpFD >PUSHW L.MSG.FD
>PUSHB hFD
ldy #S.FD.DEV.BUSID
lda (ZPFDPtr),y
asl
asl
asl
asl
iny #S.FD.DEV.DEVID
ora (ZPFDPtr),y
>PUSHA
lda (ZPFDPtr) S.FD.T
tax
>PUSHW L.FD.T,x
ldy #S.FD.DEV.BUSPTR+1
>PUSHB (ZPFDPtr),y
dey
>PUSHB (ZPFDPtr),y
>PUSHBI 6
>SYSCALL PrintF
lda (ZPFDPtr)
tax tax
jmp (J.FD,x) jmp (J.FD,x)
*-------------------------------------- *--------------------------------------
DumpFD.REG
DumpFD.DIR
clc
rts
*--------------------------------------
DumpFD.CDEV DumpFD.CDEV
DumpFD.BDEV >PUSHW L.MSG.DEV DumpFD.BDEV >PUSHW L.MSG.DEV
jsr DumpFD.T
lda ZPFDPtr lda ZPFDPtr
clc clc
adc #S.FD.DEV adc #S.FD.DEV
tay tay
lda ZPFDPtr+1 lda ZPFDPtr+1
adc /S.FD.DEV adc /S.FD.DEV
>PUSHYA >PUSHYA
ldy #S.FD.DEV.BUSPTR+1 >PUSHBI 2
>PUSHB (ZPFDPtr),y
dey
>PUSHB (ZPFDPtr),y
>PUSHBI 8
>SYSCALL PrintF >SYSCALL PrintF
bcs .9 bcs .9
@ -138,8 +155,7 @@ DumpFD.BDEV >PUSHW L.MSG.DEV
>LEA.G DEV.DIB >LEA.G DEV.DIB
>STYA.G DEV.IOCTL+S.IOCTL.BUFPTR >STYA.G DEV.IOCTL+S.IOCTL.BUFPTR
ldx Index >PUSHB hFD
>PUSHB hFDs,x
>PUSHBI IOCTL.STATUS >PUSHBI IOCTL.STATUS
>PUSHEA.G DEV.IOCTL >PUSHEA.G DEV.IOCTL
>SYSCALL IOCTL >SYSCALL IOCTL
@ -187,7 +203,7 @@ DumpFD.DevDIB >PUSHW L.MSG.DEV.DIB
bcs .9 bcs .9
>LDA.G DEV.DIB+S.DIB.S >LDA.G DEV.DIB+S.DIB.S
bpl .4 char device... bpl DumpFD.NA char device...
>PUSHW L.MSG.DEV.B >PUSHW L.MSG.DEV.B
@ -196,58 +212,18 @@ DumpFD.DevDIB >PUSHW L.MSG.DEV.DIB
>PUSHB.G DEV.DIB+S.DIB.SIZE+1 >PUSHB.G DEV.DIB+S.DIB.SIZE+1
>PUSHB.G DEV.DIB+S.DIB.SIZE >PUSHB.G DEV.DIB+S.DIB.SIZE
>PUSHBI 4 >PUSHBI 4
bra .8 >SYSCALL PrintF
.4 >PUSHW L.MSG.DEV.C
>PUSHBI 0
.8 >SYSCALL PrintF
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
DumpFD.REG
DumpFD.DIR
DumpFD.LNK DumpFD.LNK
DumpFD.DSOCK DumpFD.DSOCK
DumpFD.SSOCK clc DumpFD.SSOCK
rts DumpFD.PIPE
*--------------------------------------
DumpFD.PIPE >PUSHW L.MSG.PIPE
jsr DumpFD.T DumpFD.NA >LDYA L.MSG.DEV.NA
>SYSCALL PutS
jsr DumpFD.Name
>PUSHBI 6
>SYSCALL PrintF
clc
rts
*--------------------------------------
DumpFD.T ldx Index
>PUSHB hFDs,x
ldy #S.FD.DEV.BUSID
lda (ZPFDPtr),y
asl
asl
asl
asl
iny #S.FD.DEV.DEVID
ora (ZPFDPtr),y
>PUSHA
lda (ZPFDPtr) S.FD.T
tax
>PUSHW L.FD.T,x
rts
*--------------------------------------
DumpFD.Name ldx Index
lda hFDs.hName,x
beq .1
>SYSCALL GetMemPtr
>PUSHYA
rts
.1 >PUSHYA L.NO.PATH
rts rts
*-------------------------------------- *--------------------------------------
CS.EVENT sec CS.EVENT sec
@ -257,16 +233,15 @@ CS.QUIT clc
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
MSG0 .CZ "hFD ID Type Name Addr Status TP.ST IDString Version Size (BLK)" MSG.Header .CZ "hFD ID Type Addr Name Status TP.ST IDString Version Size (BLK)"
MSG.DEV .CZ "%3d %h %4s %12s %H " MSG.FD .CZ " %2h %h %4s %H "
MSG.DEV .CZ "%12s "
MSG.DEV.ERR .CZ "[%h] Device Error.\r\n" MSG.DEV.ERR .CZ "[%h] Device Error.\r\n"
MSG.DEV.DIB .CZ "%s %h.%h %16S %3d.%3d " MSG.DEV.DIB .CZ "%s %h.%h %16S %3d.%3d "
MSG.DEV.B .CZ "%10u\r\n" MSG.DEV.B .CZ "%10u\r\n"
MSG.DEV.C .CZ "n/a\r\n" MSG.DEV.NA .CZ "n/a"
MSG.PIPE .CZ "%3d %h %4s %s\r\n"
*-------------------------------------- *--------------------------------------
MSG.SFLAGS .AS "bwrlneio" MSG.SFLAGS .AS "bwrlneio"
NO.PATH .AZ "(no path)"
*-------------------------------------- *--------------------------------------
FD.T.REG .AZ "REG" FD.T.REG .AZ "REG"
FD.T.DIR .AZ "DIR" FD.T.DIR .AZ "DIR"

View File

@ -14,6 +14,7 @@ NEW
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
ZPFDPtr .BS 2 ZPFDPtr .BS 2
ZPFNPtr .BS 2
FILE.ID .BS 2 FILE.ID .BS 2
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
@ -37,8 +38,7 @@ CS.START cld
.DA CS.EVENT .DA CS.EVENT
.DA CS.QUIT .DA CS.QUIT
L.MSG.HEADER .DA MSG.HEADER L.MSG.HEADER .DA MSG.HEADER
L.MSG.BODY .DA MSG.REGDIR L.MSG.BODY .DA MSG.BODY
.DA MSG.SPECIAL
L.FD.T .DA FD.T.REG L.FD.T .DA FD.T.REG
.DA FD.T.DIR .DA FD.T.DIR
.DA FD.T.CDEV .DA FD.T.CDEV
@ -59,72 +59,59 @@ CS.RUN >LDYA L.MSG.HEADER
.1 stx FILE.ID .1 stx FILE.ID
lda hFDs-1,x ldy FILEs.hFD-1,x
beq .7 beq .7
lda FDs.pLO-1,y
sta ZPFDPtr
lda FDs.pHI-1,y
sta ZPFDPtr+1
>SYSCALL GetMemPtr >PUSHW L.MSG.BODY
>STYA ZPFDPtr
ldx FILE.ID
lda hFDs.oCnt-1,x
beq .7
ldy #0
lda (ZPFDPtr)
cmp #S.FD.T.DIR+1
bcc .2
iny
iny
.2 >PUSHW L.MSG.BODY,y
txa txa
>PUSHA >PUSHA
lda hFDs-1,x
>PUSHA
lda hFDs.oCnt-1,x
>PUSHA
lda (ZPFDPtr) lda (ZPFDPtr)
tay tay
>PUSHW L.FD.T,y >PUSHW L.FD.T,y
jsr CS.RUN.GetName lda FILEs.hFD-1,x
>PUSHA
>PUSHYA >PUSHW ZPFDPtr
>PUSHBI 7 lda FILEs.oCnt-1,x
>PUSHA
>SYSCALL PrintF lda FILEs.hName-1,x
beq .2
.7 ldx FILE.ID >SYSCALL GetMemPtr
inx bra .6
cpx #K.hFD.MAX+1
bne .1 .2 lda ZPFDPtr
lda #0
sec
.9 rts
*--------------------------------------
CS.RUN.GetName lda hFDs.hName-1,x
bne .1
lda ZPFDPtr
clc clc
adc #S.FD.DEV adc #S.FD.DEV
tay tay
lda ZPFDPtr+1 lda ZPFDPtr+1
adc /S.FD.DEV adc /S.FD.DEV
rts .6 >PUSHYA
.1 >SYSCALL GetMemPtr >PUSHBI 9
rts >SYSCALL PrintF
* bcs .9
.7 ldx FILE.ID
inx
cpx #K.FILE.MAX+1
bcc .1
lda #0
* sec
.9 rts
*-------------------------------------- *--------------------------------------
CS.EVENT sec CS.EVENT sec
rts rts
@ -133,9 +120,8 @@ CS.QUIT clc
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
MSG.HEADER .CZ "hFILE hFD Cnt Type Filepath" MSG.HEADER .CZ "hFILE Type hFD pFD Cnt Filepath"
MSG.REGDIR .CZ "%3d %3d %3d %4s %s\r\n" MSG.BODY .CZ " %3d %4s %3d %H %3d %s\r\n"
MSG.SPECIAL .CZ "%3d %3d %3d %4s /dev/%s\r\n"
FD.T.REG .CZ "REG" FD.T.REG .CZ "REG"
FD.T.DIR .CZ "DIR" FD.T.DIR .CZ "DIR"
FD.T.CDEV .CZ "CDEV" FD.T.CDEV .CZ "CDEV"

View File

@ -373,7 +373,7 @@ CS.RUN.PRINTMEMX
*-------------------------------------- *--------------------------------------
CS.RUN.CHECKPS ldx #0 CS.RUN.CHECKPS ldx #0
.1 cmp PS.Table.PID,x .1 cmp PSs.PID,x
beq .8 beq .8
inx inx

View File

@ -59,7 +59,7 @@ CS.START cld
*-------------------------------------- *--------------------------------------
.1 .DA CS.INIT .1 .DA CS.INIT
.DA CS.RUN .DA CS.RUN
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE L.MSG.USAGE .DA MSG.USAGE
L.MSG.Init .DA MSG.Init L.MSG.Init .DA MSG.Init
@ -78,7 +78,7 @@ CS.RUN inc ArgCount
cmp #'-' cmp #'-'
bne .4 bne .4
ldy #1 ldy #1
lda (ZPPtr1),y lda (ZPPtr1),y
beq .99 beq .99
@ -89,7 +89,7 @@ CS.RUN inc ArgCount
dex dex
bpl .2 bpl .2
.99 >LDYA L.MSG.USAGE .99 >LDYA L.MSG.USAGE
>SYSCALL PutS >SYSCALL PutS
lda #E.SYN lda #E.SYN
@ -100,11 +100,11 @@ CS.RUN inc ArgCount
tax tax
sec sec
ror $0,x ror $0,x
iny iny
lda (ZPPtr1),y lda (ZPPtr1),y
bne .1 bne .1
bra CS.RUN bra CS.RUN
.4 lda hFile .4 lda hFile
@ -128,23 +128,20 @@ CS.RUN inc ArgCount
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
tay
pha ldx FILEs.hFD-1,y
lda FDs.pLO-1,x
tax sta ZPPtr1
lda FDs.pHI-1,x
sta ZPPtr1+1
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
plx
lda (ZPPtr1) lda (ZPPtr1)
cmp #S.FD.T.PIPE cmp #S.FD.T.PIPE
bne .71 bne .71
stx hFile sty hFile
.80 >LDYAI 256 .80 >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem
bcs .9 bcs .9
@ -155,7 +152,7 @@ CS.RUN inc ArgCount
>PUSHW L.MSG.Init >PUSHW L.MSG.Init
>PUSHBI 0 >PUSHBI 0
>SYSCALL PrintF >SYSCALL PrintF
*-------------------------------------- *--------------------------------------
CS.RUN.LOOP jsr CS.RUN.GETLINE CS.RUN.LOOP jsr CS.RUN.GETLINE
bcs .9 bcs .9
@ -196,7 +193,7 @@ CS.RUN.OPEN >PUSHYA
>PUSHBI O.RDONLY+O.TEXT >PUSHBI O.RDONLY+O.TEXT
>PUSHBI S.FI.T.TXT >PUSHBI S.FI.T.TXT
>PUSHWZ Aux type >PUSHWZ Aux type
>SYSCALL FOpen >SYSCALL FOpen
bcs .9 bcs .9
@ -209,7 +206,7 @@ CS.RUN.PAUSE ldy #S.PS.hStdErr
>PUSHA >PUSHA
>PUSHW L.MSG.Pause >PUSHW L.MSG.Pause
>SYSCALL FPutS >SYSCALL FPutS
.10 ldy #S.PS.hStdErr .10 ldy #S.PS.hStdErr
lda (pPS),y lda (pPS),y
>SYSCALL GetC >SYSCALL GetC
@ -261,7 +258,7 @@ CS.RUN.ERASE ldy #S.PS.hStdErr
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.GETLINE >PUSHB hFile CS.RUN.GETLINE >PUSHB hFile
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
>PUSHWI 256 >PUSHWI 256
>SYSCALL FGetS >SYSCALL FGetS

View File

@ -7,6 +7,7 @@ NEW
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/eth.i .INB inc/eth.i
.INB inc/net.tcpip.i .INB inc/net.tcpip.i
.INB inc/libtcpip.i .INB inc/libtcpip.i
@ -15,8 +16,7 @@ NEW
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
ZPPTR1 .BS 2 ZPPTR1 .BS 2
ZPPTR2 .BS 2 FDIndex .BS 1
SocketIndex .BS 1
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -76,19 +76,24 @@ CS.INIT >LDYA L.LIBTCPIP
CS.RUN >LDYA L.MSG0 CS.RUN >LDYA L.MSG0
>SYSCALL PutS >SYSCALL PutS
>LIBCALL hLIBTCPIP,LIBTCPIP.GetTable inc FDIndex
>STYA ZPPTR1 ldx FDIndex
ldy SocketIndex .1 lda FDs.pHI-1,x
.1 lda (ZPPTR1),y
beq .7 beq .7
>SYSCALL GetMemPtr ldy FDs.pLO-1,x
>STYA ZPPTR2 >STYA ZPPTR1
ldy #S.SOCKET.AF lda (ZPPTR1)
lda (ZPPTR2),y cmp #S.FD.T.DSOCK
beq .2
cmp #S.FD.T.SSOCK
bne .7
.2 ldy #S.SOCKET.AF
lda (ZPPTR1),y
cmp #AF.INET cmp #AF.INET
bne .7 bne .7
@ -103,7 +108,7 @@ CS.RUN >LDYA L.MSG0
jsr CS.RUN.A jsr CS.RUN.A
ldy #S.SOCKET.O ldy #S.SOCKET.O
>PUSHB (ZPPTR2),y >PUSHB (ZPPTR1),y
jsr CS.RUN.S 2 bytes jsr CS.RUN.S 2 bytes
>PUSHBI 19 >PUSHBI 19
@ -111,17 +116,17 @@ CS.RUN >LDYA L.MSG0
>SYSCALL PrintF >SYSCALL PrintF
bcs .9 bcs .9
.7 inc SocketIndex .7 inc FDIndex
ldy SocketIndex ldx FDIndex
cpy #K.SKTTABLE.SIZE cpx #K.FD.MAX+1
bne .1 bcc .1
lda #0 tell TSKMGR that all done ok, but lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory * sec we do not want to stay in memory
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.TP ldy #S.SOCKET.T CS.RUN.TP ldy #S.SOCKET.T
lda (ZPPTR2),y lda (ZPPTR1),y
tax tax
cpx #S.SOCKET.T.STREAM+1 cpx #S.SOCKET.T.STREAM+1
bcc .1 bcc .1
@ -132,7 +137,7 @@ CS.RUN.TP ldy #S.SOCKET.T
>PUSHB L.MSG1.T,x >PUSHB L.MSG1.T,x
ldy #S.SOCKET.PROTO ldy #S.SOCKET.PROTO
lda (ZPPTR2),y lda (ZPPTR1),y
ldx #0 ldx #0
@ -152,20 +157,20 @@ CS.RUN.TP ldy #S.SOCKET.T
*-------------------------------------- *--------------------------------------
CS.RUN.A ldx #4 CS.RUN.A ldx #4
.2 >PUSHB (ZPPTR2),y .2 >PUSHB (ZPPTR1),y
iny iny
dex dex
bne .2 bne .2
iny iny
>PUSHB (ZPPTR2),y >PUSHB (ZPPTR1),y
dey dey
>PUSHB (ZPPTR2),y >PUSHB (ZPPTR1),y
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.S ldy #S.SOCKET.TCP.S CS.RUN.S ldy #S.SOCKET.TCP.S
lda (ZPPTR2),y lda (ZPPTR1),y
cmp #S.SOCKET.TCP.S.TIMEWT+1 cmp #S.SOCKET.TCP.S.TIMEWT+1
bcc .1 bcc .1

View File

@ -1,8 +1,8 @@
NEW NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF bin/nl .TF bin/nl
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
@ -160,18 +160,18 @@ CS.RUN.CheckArgs
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
tax tay
ldx FILEs.hFD-1,y
lda hFDs-1,x lda FDs.pLO-1,x
>SYSCALL GetMemPtr sta ZPPtr1
>STYA ZPPtr1 lda FDs.pHI-1,x
sta ZPPtr1+1
lda (ZPPtr1) lda (ZPPtr1)
cmp #S.FD.T.PIPE cmp #S.FD.T.PIPE
bne .97 bne .97
ldy #S.PS.hStdIn sty hFile
lda (pPS),y
sta hFile
inc bPipe inc bPipe
.80 >LDYAI 256 .80 >LDYAI 256
@ -217,10 +217,12 @@ CS.RUN.OPEN >PUSHYA
*-------------------------------------- *--------------------------------------
CS.RUN.ISATTY ldy #S.PS.hStdOut CS.RUN.ISATTY ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
tax tay
lda hFDs-1,x ldx FILEs.hFD-1,y
>SYSCALL GetMemPtr ldy FDs.pLO-1,x
lda FDs.pHI-1,x
>STYA ZPPtr1 >STYA ZPPtr1
lda (ZPPtr1) lda (ZPPtr1)
beq .9 beq .9

View File

@ -27,7 +27,7 @@ bPipe .BS 1
bIsTTY .BS 1 bIsTTY .BS 1
bTemp .BS 1 bTemp .BS 1
bDummy .BS 1 bDummy .BS 1
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -48,7 +48,7 @@ CS.START cld
*-------------------------------------- *--------------------------------------
.1 .DA CS.INIT .1 .DA CS.INIT
.DA CS.RUN .DA CS.RUN
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE L.MSG.USAGE .DA MSG.USAGE
L.MSG.CRLF .DA MSG.CRLF L.MSG.CRLF .DA MSG.CRLF
@ -86,11 +86,11 @@ CS.RUN.LOOP lda bPipe If reading from pipe
beq .9 beq .9
cmp #$13 Ctrl-S cmp #$13 Ctrl-S
bne .1 bne .1
lda bPause lda bPause
eor #$ff eor #$ff
sta bPause sta bPause
bne CS.RUN.LOOP bne CS.RUN.LOOP
.1 lda bPause .1 lda bPause
bne CS.RUN.LOOP bne CS.RUN.LOOP
@ -117,75 +117,75 @@ CS.RUN.LOOP.RTS rts
CS.RUN.CheckArgs CS.RUN.CheckArgs
jsr CS.RUN.NextArg jsr CS.RUN.NextArg
bcs .4 bcs .4
lda (ZPPtr1) lda (ZPPtr1)
cmp #'-' cmp #'-'
beq .1 beq .1
.11 lda hFile .11 lda hFile
bne .97 bne .97
>LDYA ZPPtr1 >LDYA ZPPtr1
jsr CS.RUN.OPEN jsr CS.RUN.OPEN
bcs .9 bcs .9
sta hFile sta hFile
bra CS.RUN.CheckArgs bra CS.RUN.CheckArgs
.1 ldy #1 .1 ldy #1
lda (ZPPtr1),y lda (ZPPtr1),y
ldx #OptionList.Cnt-1 ldx #OptionList.Cnt-1
.2 cmp OptionList,x .2 cmp OptionList,x
beq .3 beq .3
dex dex
bpl .2 bpl .2
bra .97 bra .97
.3 txa .3 txa
lsr lsr
beq .98 beq .98
tax tax
lda #$80 lda #$80
sta bDummy-1,x sta bDummy-1,x
bra CS.RUN.CheckArgs bra CS.RUN.CheckArgs
.4 lda hFile .4 lda hFile
bne .80 bne .80
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
tax tay
ldx FILEs.hFD-1,y
lda hFDs-1,x lda FDs.pLO-1,x
>SYSCALL GetMemPtr sta ZPPtr1
>STYA ZPPtr1 lda FDs.pHI-1,x
sta ZPPtr1+1
lda (ZPPtr1) lda (ZPPtr1)
cmp #S.FD.T.PIPE cmp #S.FD.T.PIPE
bne .97 bne .97
ldy #S.PS.hStdIn sty hFile
lda (pPS),y inc bPipe
sta hFile
inc bPipe
.80 >LDYAI 256 .80 >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem
bcs .9 bcs .9
>STYA ZPBufPtr >STYA ZPBufPtr
stx hBuf stx hBuf
* clc * clc
.9 rts .9 rts
.97 lda #E.SYN .97 lda #E.SYN
.98 pha .98 pha
>PUSHW L.MSG.USAGE >PUSHW L.MSG.USAGE
>PUSHBI 0 >PUSHBI 0
@ -215,7 +215,7 @@ CS.RUN.OPEN >PUSHYA
CS.RUN.ISATTY ldy #S.PS.hStdOut CS.RUN.ISATTY ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
tax tax
lda hFDs-1,x lda FILEs.hFD-1,x
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPPtr1 >STYA ZPPtr1
lda (ZPPtr1) lda (ZPPtr1)
@ -254,7 +254,7 @@ CS.RUN.PRINTBYTE
pla Character pla Character
pha pha
sta (ZPBufPtr),y sta (ZPBufPtr),y
>PUSHW L.MSG.HEXBYTE >PUSHW L.MSG.HEXBYTE
pla pla
>PUSHA >PUSHA
@ -317,7 +317,7 @@ CS.RUN.FINISHUP
>SYSCALL PutChar >SYSCALL PutChar
lda #' ' lda #' '
>SYSCALL PutChar >SYSCALL PutChar
lda #' ' lda #' '
>SYSCALL PutChar >SYSCALL PutChar
pla pla
inc inc

View File

@ -283,7 +283,7 @@ CS.RUN.FILE jsr CS.RUN.BuildFilePath
>PUSHW ZPFullPath >PUSHW ZPFullPath
>LDA.G hArcFile >LDA.G hArcFile
tay tay
lda hFDs.hName-1,y lda FILEs.hName-1,y
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>PUSHYA >PUSHYA
>SYSCALL StrCmp >SYSCALL StrCmp

View File

@ -67,7 +67,7 @@ CS.RUN lda #1
* ldx #0 * ldx #0
.11 cmp PS.Table.PID,x .11 cmp PSs.PID,x
beq .12 beq .12
inx inx
@ -78,7 +78,7 @@ CS.RUN lda #1
* sec * sec
rts rts
.12 lda PS.Table.hPS,x .12 lda PSs.hPS,x
jsr CS.RUN.DUMP jsr CS.RUN.DUMP
bcs .9 bcs .9
@ -90,7 +90,7 @@ CS.RUN lda #1
>SYSCALL PutS >SYSCALL PutS
ldx Index ldx Index
.1 lda PS.Table.hPS,x .1 lda PSs.hPS,x
beq .7 beq .7
jsr CS.RUN.DUMP jsr CS.RUN.DUMP
@ -115,7 +115,7 @@ CS.RUN.DUMP >SYSCALL GetMemPtr
>PUSHW L.MSG1 >PUSHW L.MSG1
ldx Index ldx Index
lda PS.Table.hPS,x lda PSs.hPS,x
>PUSHA >PUSHA
ldy #S.PS.PPID ldy #S.PS.PPID
@ -126,7 +126,7 @@ CS.RUN.DUMP >SYSCALL GetMemPtr
cpy #S.PS.CPID+1 cpy #S.PS.CPID+1
bne .1 bne .1
lda PS.Table.Stats,x lda PSs.Stats,x
>PUSHA CPU% >PUSHA CPU%
ldy #S.PS.S ldy #S.PS.S
@ -141,7 +141,7 @@ CS.RUN.DUMP >SYSCALL GetMemPtr
ldy #S.PS.hSession ldy #S.PS.hSession
lda (ZPPSPtr),y lda (ZPPSPtr),y
tax tax
lda S.Table.hSID-1,x lda USRs.hSID-1,x
>SYSCALL GetStkObj >SYSCALL GetStkObj
bcs .9 bcs .9

View File

@ -145,18 +145,18 @@ CS.RUN.CheckArgs
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
tax tay
ldx FILEs.hFD-1,y
lda FDs.pLO-1,x
sta ZPPtr1
lda FDs.pHI-1,x
sta ZPPtr1+1
lda hFDs-1,x lda (ZPPtr1)
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)
cmp #S.FD.T.PIPE cmp #S.FD.T.PIPE
bne .97 bne .97
ldy #S.PS.hStdIn sty hFile
lda (pPS),y
sta hFile
.80 >LDYAI 256 .80 >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem

View File

@ -51,7 +51,7 @@ IO.Reset.In sec
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
IO.Pipe.Out >PUSHEA.G IO.DEVFIFO IO.Pipe.Out >PUSHEA.G IO.TMPFIFO
>PUSHWZ mode >PUSHWZ mode
>SYSCALL MKFIFO >SYSCALL MKFIFO
bcs .9 bcs .9
@ -128,8 +128,8 @@ IO.Pipe.OpenR ldx #O.RDONLY+O.TEXT
bra IO.Pipe.Open bra IO.Pipe.Open
IO.Pipe.OpenW ldx #O.WRONLY+O.TEXT IO.Pipe.OpenW ldx #O.WRONLY+O.TEXT
IO.Pipe.Open >LEA.G IO.DEVFIFO IO.Pipe.Open >LEA.G IO.TMPFIFO
*-------------------------------------- *--------------------------------------
IO.FOpenYAX >PUSHYA IO.FOpenYAX >PUSHYA
txa txa

View File

@ -780,7 +780,7 @@ Sleep .BS 4
*M32.BUF .BS 12 -1234567890\0 *M32.BUF .BS 12 -1234567890\0
TimeBuf .EQ * TimeBuf .EQ *
M32.BUF .EQ * M32.BUF .EQ *
IO.DEVFIFO .BS 12 /dev/fifoXX\0 IO.TMPFIFO .BS 12 /tmp/fifoXX\0
*-------------------------------------- *--------------------------------------
DS.END .ED DS.END .ED
*-------------------------------------- *--------------------------------------

View File

@ -186,7 +186,7 @@ CS.RUN.PS stz Count
ldx #0 ldx #0
stx Index stx Index
.1 lda PS.Table.hPS,x .1 lda PSs.hPS,x
beq .7 beq .7
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
@ -257,11 +257,11 @@ CS.RUN.KILL >PUSHW L.MSG.PS
>SYSCALL Kill >SYSCALL Kill
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.DEV ldx #K.hFD.MAX CS.RUN.DEV ldx #K.FILE.MAX
.1 dex .1 dex
stx Index stx Index
lda hFDs,x lda FILEs.hFD,x
beq .7 beq .7
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
@ -282,7 +282,7 @@ CS.RUN.DEV ldx #K.hFD.MAX
>SYSCALL PrintF >SYSCALL PrintF
ldx Index ldx Index
>PUSHB hFDs,x >PUSHB FILEs.hFD,x
>PUSHBI IOCTL.CLOSE >PUSHBI IOCTL.CLOSE
>PUSHWZ >PUSHWZ
>SYSCALL IOCTL >SYSCALL IOCTL
@ -341,7 +341,7 @@ CS.RUN.SYS stz $280
*-------------------------------------- *--------------------------------------
CS.GetPSByID ldx #0 CS.GetPSByID ldx #0
.1 ldy PS.Table.hPS,x .1 ldy PSs.hPS,x
beq .7 beq .7
pha pha

View File

@ -119,10 +119,13 @@ CS.RUN inc ArgIndex
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
tax tay
lda hFDs-1,x ldx FILEs.hFD-1,y
>SYSCALL GetMemPtr lda FDs.pLO-1,x
>STYA ZPPtr1 sta ZPPtr1
lda FDs.pHI-1,x
sta ZPPtr1+1
lda (ZPPtr1) lda (ZPPtr1)
cmp #S.FD.T.PIPE cmp #S.FD.T.PIPE
bne .9 bne .9

View File

@ -52,7 +52,7 @@ CS.RUN >LDYA L.MSG0
ldx #1 ldx #1
stx SessionID stx SessionID
.1 lda S.Table.hSID-1,x .1 lda USRs.hSID-1,x
beq .7 beq .7
>SYSCALL GetStkObj >SYSCALL GetStkObj
@ -63,7 +63,7 @@ CS.RUN >LDYA L.MSG0
>PUSHB SessionID 1 byte SID >PUSHB SessionID 1 byte SID
ldx SessionID ldx SessionID
lda S.Table.hSID-1,x lda USRs.hSID-1,x
>PUSHA 1 byte hSession >PUSHA 1 byte hSession
>PUSHB (ZPSessionPtr) 1 byte PRIVILEGE >PUSHB (ZPSessionPtr) 1 byte PRIVILEGE
@ -101,14 +101,17 @@ CS.RUN >LDYA L.MSG0
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.GetDevName CS.RUN.GetDevName
lda S.Table.hFile-1,x lda USRs.hFile-1,x
>PUSHA >PUSHA
tax tax
lda hFDs.hName-1,x lda FILEs.hName-1,x
bne .1 bne .1
lda hFDs-1,x lda FILEs.hFD-1,x
>SYSCALL GetMemPtr tay
ldx FILEs.hFD-1,y
ldy FDs.pLO-1,x
lda FDs.pHI-1,x
>STYA ZPFDPtr >STYA ZPFDPtr
lda ZPFDPtr lda ZPFDPtr

View File

@ -133,18 +133,18 @@ CS.RUN.CheckArgs
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
tax tay
ldx FILEs.hFD-1,y
lda hFDs-1,x lda FDs.pLO-1,x
>SYSCALL GetMemPtr sta ZPPtr1
>STYA ZPPtr1 lda FDs.pHI-1,x
sta ZPPtr1+1
lda (ZPPtr1) lda (ZPPtr1)
cmp #S.FD.T.PIPE cmp #S.FD.T.PIPE
bne .97 bne .97
ldy #S.PS.hStdIn sty hFile
lda (pPS),y
sta hFile
.80 >LDYAI 256 .80 >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem

View File

@ -7,6 +7,7 @@ NEW
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.e.i .INB inc/mli.e.i
.INB inc/nic.i .INB inc/nic.i
.INB inc/eth.i .INB inc/eth.i
@ -485,10 +486,11 @@ DEVSLOTx0 .BS 1
*-------------------------------------- *--------------------------------------
DIB .DA #0 DIB .DA #0
.DA #0,#0,#0 size .DA #0,#0,#0 size
.PS "dan2eth/W5500 " .PS "dan2eth/W5500"
.BS 3
.DA #S.DIB.T.NIC .DA #S.DIB.T.NIC
.BS 1 Subtype .BS 1 Subtype
.BS 2 Version .DA K.VER Version
*-------------------------------------- *--------------------------------------
DCB .DA #S.DCB.T.NIC DCB .DA #S.DCB.T.NIC
.BS 1 FLAGS .BS 1 FLAGS

View File

@ -197,7 +197,7 @@ OSD.GETTEXTSIZE clc
sta CBX.Cache+S.CB.SrcH sta CBX.Cache+S.CB.SrcH
stz CBX.Cache+S.CB.SrcH+1 stz CBX.Cache+S.CB.SrcH+1
.3 jsr OSD.TXTPTR.GetNext .3 jsr OSD.TXTPTRgn
beq .4 beq .4
jsr OSD.FON.GetChar jsr OSD.FON.GetChar
@ -237,7 +237,7 @@ OSD.GETTEXTSIZE clc
stz GWORD+1 reset Bit index in Col stz GWORD+1 reset Bit index in Col
OSD.DRAWTEXT.LOOP OSD.DRAWTEXT.LOOP
jsr OSD.TXTPTR.GetNext jsr OSD.TXTPTRgn
beq OSD.DRAWTEXT.END beq OSD.DRAWTEXT.END
jsr OSD.FON.GetChar jsr OSD.FON.GetChar
@ -602,8 +602,7 @@ CB.Update sta CLRWRITEAUX
clc clc
rts rts
*-------------------------------------- *--------------------------------------
OSD.TXTPTR.GetNext OSD.TXTPTRgn jmp ($a000)
jmp ($a000)
*-------------------------------------- *--------------------------------------
CBX.CmdLen .DA #S.CB.Y1+1 SETPIXEL CBX.CmdLen .DA #S.CB.Y1+1 SETPIXEL
.DA #S.CB.Y1+1 GETPIXEL .DA #S.CB.Y1+1 GETPIXEL

View File

@ -7,6 +7,7 @@ NEW
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.i .INB inc/mli.i
.INB inc/mli.e.i .INB inc/mli.e.i
.INB inc/io.i .INB inc/io.i
@ -634,7 +635,7 @@ DIB .DA #0
.BS 3 .BS 3
.DA #S.DIB.T.GFX .DA #S.DIB.T.GFX
.DA #0 .DA #0
.DA #00,#94 .DA K.VER
*-------------------------------------- *--------------------------------------
DCB .DA #S.DCB.T.GFX DCB .DA #S.DCB.T.GFX
.BS 1 DEV.ID .BS 1 DEV.ID

View File

@ -7,6 +7,7 @@ NEW
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/io.i .INB inc/io.i
.INB inc/mli.e.i .INB inc/mli.e.i
.INB inc/xy.i .INB inc/xy.i
@ -377,8 +378,8 @@ DIB .DA #0
.PS "Apple II Mouse" .PS "Apple II Mouse"
.BS 2 .BS 2
.DA #S.DIB.T.XY .DA #S.DIB.T.XY
.DA #0 .BS 1 Subtype
.DA #0,#94 .DA K.VER Version
*-------------------------------------- *--------------------------------------
DRV.END DRV.END
*-------------------------------------- *--------------------------------------

16
DRV/UDETH.D.DRV.S.txt Normal file
View File

@ -0,0 +1,16 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
UDETHDMA .EQ 1
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/mli.e.i
.INB inc/nic.i
.INB inc/eth.i
.INB usr/src/shared/x.udeth.drv.s
*--------------------------------------
MAN
SAVE usr/src/drv/udeth.d.drv.s
ASM

View File

@ -1,540 +1,16 @@
NEW NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
.OP 65C02 *--------------------------------------
.OR $2000 UDETHDMA .EQ 0
.TF drv/udeth.drv
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
.INB inc/mli.e.i .INB inc/mli.e.i
.INB inc/nic.i .INB inc/nic.i
.INB inc/eth.i .INB inc/eth.i
.INB usr/src/shared/x.udeth.drv.s
*-------------------------------------- *--------------------------------------
UD.ROM.SignOfs .EQ $EC "UltimateDrive"
UD.ROM.VerOfs .EQ $F9 MAX/MIN
UD.IO.Exec .EQ $C080 Write
UD.IO.Status .EQ $C081 Read
UD.IO.Cmd .EQ $C082 Write
UD.IO.Cmd.NetOpen .EQ $70
UD.IO.Cmd.NetClose .EQ $71
UD.IO.Cmd.NetSend .EQ $72
UD.IO.Cmd.NetRcvd .EQ $73
UD.IO.Cmd.NetPeek .EQ $74
UD.IO.Cmd.NetStatus .EQ $75
UD.IO.UnitNum .EQ $C083 Write
UD.IO.MemPtrL .EQ $C084
UD.IO.MemPtrH .EQ $C085
UD.IO.BlockNum .EQ $C086 Write 4 bytes, BE
UD.IO.RData .EQ $C087 Read
UD.IO.WData .EQ $C088 Write
UD.IO.DoDMA .EQ $C089 Write
UD.IO.Mode .EQ $C08D Read NZ = DMA, Write b7
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2
ZPArgPtr .BS 2
DEVSLOT0x .BS 1
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp Dev.Detect cld,jmp abs=DRV
.DA #$61 6502,Level 1 (65c02)
.DA #1 DRV Layout Version 1
.DA 0
.DA CS.END-CS.START Code Length
.DA 0
.DA 0
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
L.MSG.DETECT .DA MSG.DETECT
L.MSG.DETECT.OK .DA MSG.DETECT.OK
L.MSG.DETECT.KO .DA MSG.DETECT.KO
L.DRV.CS.START .DA DRV.CS.START
L.FD.DEV .DA FD.DEV
L.FD.DEV.NAME .DA FD.DEV.NAME
L.SSCANF.MAC .DA SSCANF.MAC
L.MAC0 .DA DCB+S.DCB.NIC.MAC
.DA DCB+S.DCB.NIC.MAC+1
.DA DCB+S.DCB.NIC.MAC+2
.DA DCB+S.DCB.NIC.MAC+3
.DA DCB+S.DCB.NIC.MAC+4
.DA DCB+S.DCB.NIC.MAC+5
.DA 0 End Of Reloc Table
*--------------------------------------
Dev.Detect >STYA ZPArgPtr
>LDYA L.MSG.DETECT
>SYSCALL PutS
lda #UD.ROM.SignOfs
sta ZPPtr1
lda #$C7
.1 sta ZPPtr1+1
ldy #ROM.SIG.L-1
.10 lda (ZPPtr1),y
cmp ROM.SIG,y
bne .2
dey
bpl .10
lda ZPPtr1+1
and #$0F
sta DEVSLOT0x
asl
asl
asl
asl
sta DEVSLOTx0
bra .3
.2 dec FD.DEV.NAME+3
lda ZPPtr1+1
dec
cmp #$C0
bne .1
>LDYA L.MSG.DETECT.KO
>SYSCALL PutS
lda #MLI.E.NODEV
sec
.99 rts
*--------------------------------------
.3 ldy #UD.ROM.VerOfs
lda (ZPPtr1),y
sta DIB+S.DIB.VERSION+1
iny
lda (ZPPtr1),y
sta DIB+S.DIB.VERSION
jsr Dev.ParseArgs
bcs .99
.8 >PUSHW L.MSG.DETECT.OK
>PUSHW L.FD.DEV.NAME
>PUSHBI 2
>SYSCALL PrintF
>PUSHWI DRV.END
>PUSHWI DRV.CS.END-DRV.CS.START
>PUSHWI DRV.CS.START
>LDYA L.DRV.CS.START
>SYSCALL InsDrv
bcs .9
>STYA FD.DEV+S.FD.DEV.DRVPTR
>PUSHW L.FD.DEV
>PUSHW L.FD.DEV.NAME
>SYSCALL MKDev
bcs .9
ldx DEVSLOT0x
lda #A2osX.S.NIC
sta A2osX.S,x
* clc
.9 rts
*--------------------------------------
Dev.ParseArgs lda (ZPArgPtr)
bne .1
lda A2osX.RANDOM16
eor A2osX.TIMER16
sta DCB+S.DCB.NIC.MAC+3
eor A2osX.RANDOM16+1
sta DCB+S.DCB.NIC.MAC+4
eor A2osX.TIMER16+1
sta DCB+S.DCB.NIC.MAC+5
clc
rts
.1 >PUSHW ZPArgPtr
>PUSHW L.SSCANF.MAC
ldx #0
.2 >PUSHW L.MAC0,x
inx
inx
cpx #12
bne .2
>PUSHBI 12 6 x byte PTRs
>SYSCALL SScanF
bcc .8
lda #E.SYN
* sec
.8 rts
*--------------------------------------
CS.END
MSG.DETECT .CZ "Ultimate Drive ETH/W5500 Driver."
MSG.DETECT.OK .CZ "Ultimate Drive ETH/W5500 Installed As Device : %s\r\n"
MSG.DETECT.KO .CZ "Hardware Not Found."
SSCANF.MAC .CZ "%h:%h:%h:%h:%h:%h"
ROM.SIG .AS "UltimateDrive"
ROM.SIG.L .EQ *-ROM.SIG
*--------------------------------------
FD.DEV .DA #S.FD.T.CDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #0 DEVID
.DA 0 BUSPTR
.BS 2 DRVPTR
.DA 0 DCBPTR
.DA 0 BUFPTR
FD.DEV.NAME .AZ "eth7"
*--------------------------------------
* Driver Code
*--------------------------------------
* https://github.com/profdc9/ip65/blob/main/drivers/dan2d.s
*--------------------------------------
ZPIOCTL .EQ ZPDRV
ZPBufPtr .EQ ZPDRV+2
Counter .EQ ZPDRV+4
*--------------------------------------
DRV.CS.START cld
jmp (.1,x)
.1 .DA STATUS
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA OPEN
.DA CLOSE
.DA READ
.DA WRITE
.DA 0 end or relocation
*--------------------------------------
STATUS >STYA ZPIOCTL
jsr IO.GetStatus
bcs STATUS.99
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldx #S.DIB-1
.HS 2C bit abs
.1 ldx #3
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta .3+1
iny
lda (ZPIOCTL),y
sta .3+2
.2 lda DIB,x
.3 sta $ffff,x SELF MODIFIED
dex
bpl .2
clc
rts
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne STATUS.9
stz DCB+S.DCB.NIC.LINK
lda #S.DCB.NIC.LINK.OK
tsb DCB+S.DCB.NIC.LINK
lda #S.DCB.NIC.LINK.FD
tsb DCB+S.DCB.NIC.LINK
.1 ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta .3+1
iny
lda (ZPIOCTL),y
sta .3+2
ldx #S.DCB.NIC-1
.2 lda DCB,x
.3 sta $ffff,x SELF MODIFIED
dex
bpl .2
clc
rts
STATUS.9 lda #MLI.E.BADCTL
STATUS.99 sec
rts
*--------------------------------------
OPEN lda #S.DIB.S.OPENED
bit DIB+S.DIB.S
bne .9
jsr CLOSE
* ldx DEVSLOTx0 Done by CLOSE
lda #UD.IO.Cmd.NetOpen
jsr IO.ExecA
bcs .99
ldy #0
.1 lda UD.IO.RData,x
sta DCB+S.DCB.NIC.MAC,y
iny
cpy #6
bcc .1
lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S
clc
rts
.9 lda #MLI.E.OPEN
sec
.99 rts
*--------------------------------------
CLOSE ldx DEVSLOTx0
lda #UD.IO.Cmd.NetClose
jsr IO.ExecA
bcs .9
lda #S.DIB.S.OPENED
trb DIB+S.DIB.S
* clc
.9 rts
*--------------------------------------
READ php
sei
>STYA ZPIOCTL
ldx DEVSLOTx0
lda #UD.IO.Cmd.NetPeek
jsr IO.ExecA
bcs READWRITE.99
lda UD.IO.RData,x
sta Counter
lda UD.IO.RData,x
sta Counter+1
ora Counter
beq READWRITE.9
>LDYA Counter
>SYSCALL2 GetMem
bcs READWRITE.99
>STYA ZPBufPtr
stx .8+1
phy
ldy #S.IOCTL.BUFPTR+1
sta (ZPIOCTL),y
dey
pla
sta (ZPIOCTL),y
ldx DEVSLOTx0
lda #UD.IO.Cmd.NetRcvd
jsr IO.ExecA
bcs READWRITE.99
lda UD.IO.RData,x
ldy #S.IOCTL.BYTECNT
sta (ZPIOCTL),y
eor #$ff
sta Counter
lda UD.IO.RData,x
iny
sta (ZPIOCTL),y
eor #$ff
sta Counter+1
ldy #0
.2 inc Counter
bne .3
inc Counter+1
beq .8
.3 lda UD.IO.RData,x
sta (ZPBufPtr),y
iny
bne .2
inc ZPBufPtr+1
bra .2
.8 lda #$ff SELF MODIFIED
plp
clc
rts
*--------------------------------------
READWRITE.9 lda #E.NODATA
READWRITE.99 plp
sec
rts
*--------------------------------------
WRITE php
sei
>STYA ZPIOCTL
ldx DEVSLOTx0
lda #UD.IO.Cmd.NetSend
sta UD.IO.Cmd,x
ldy #S.IOCTL.BYTECNT
lda (ZPIOCTL),y
sta UD.IO.WData,x
lda (ZPIOCTL),y
eor #$ff
sta Counter
iny
lda (ZPIOCTL),y
sta UD.IO.WData,x
eor #$ff
sta Counter+1
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta ZPBufPtr
iny
lda (ZPIOCTL),y
sta ZPBufPtr+1
ldy #S.ETH.SRCMAC+5
ldx #5
.10 lda DCB+S.DCB.NIC.MAC,x
sta (ZPBufPtr),y
dey
dex
bpl .10
ldx DEVSLOTx0
ldy #0
.1 inc Counter
bne .2
inc Counter+1
beq .8
.2 lda (ZPBufPtr),y
sta UD.IO.WData,x
iny
bne .1
inc ZPBufPtr+1
bra .1
.8 jsr IO.Exec
bcs WRITE.99
plp
clc
rts
WRITE.99 lda #MLI.E.IO
plp
sec
rts
*--------------------------------------
IO.GetStatus stz DCB+S.DCB.NIC.LINK
lda #S.DCB.NIC.SPEED.10
sta DCB+S.DCB.NIC.SPEED
ldx DEVSLOTx0
lda #UD.IO.Cmd.NetStatus
jsr IO.ExecA
bcs .99
lda UD.IO.RData,x PHYCFGR
lsr CS if Link OK
ror DCB+S.DCB.NIC.LINK
lsr CS if 100mb
bcc .1
inc DCB+S.DCB.NIC.SPEED
.1 lsr CS if FD
bcc .2
lda #S.DCB.NIC.LINK.FD
tsb DCB+S.DCB.NIC.LINK
.2 lda UD.IO.RData,x VERSIONR
sta DIB+S.DIB.VERSION
clc
.99 rts
*--------------------------------------
IO.ExecA sta UD.IO.Cmd,x
IO.Exec stz UD.IO.UnitNum,x
lda UD.IO.Exec,x
.1 lda UD.IO.Status,x
bmi .1
lsr CS if error, A = ERROR CODE ?
rts
*--------------------------------------
DRV.CS.END
DEVSLOTx0 .BS 1
*--------------------------------------
DIB .DA #0
.DA #0,#0,#0 size
.PS "udeth/W5500 "
.DA #S.DIB.T.NIC
.BS 1 Subtype
.BS 2 Version
*--------------------------------------
DCB .DA #S.DCB.T.NIC
.BS 1 FLAGS
.BS 1 LINK
.BS 1 SPEED
.HS 000000000000 MAC
.BS 12 IP/MASK/GW
*--------------------------------------
DRV.END
MAN MAN
SAVE usr/src/drv/udeth.drv.s SAVE usr/src/drv/udeth.drv.s
ASM ASM

View File

@ -99,12 +99,12 @@ Dev.Detect >STYA ZPArgPtr
sta DIB+S.DIB.VERSION sta DIB+S.DIB.VERSION
jsr Dev.ParseArgs jsr Dev.ParseArgs
bcs .99 bcs .99
.8 >PUSHW L.MSG.DETECT.OK .8 >PUSHW L.MSG.DETECT.OK
>PUSHW L.FD.DEV.NAME >PUSHW L.FD.DEV.NAME
>PUSHBI 2 >PUSHBI 2
>SYSCALL PrintF >SYSCALL PrintF
>PUSHWI DRV.END >PUSHWI DRV.END
>PUSHWI DRV.CS.END-DRV.CS.START >PUSHWI DRV.CS.END-DRV.CS.START
>PUSHWI DRV.CS.START >PUSHWI DRV.CS.START
@ -140,7 +140,7 @@ Dev.ParseArgs lda (ZPArgPtr)
.1 >PUSHW ZPArgPtr .1 >PUSHW ZPArgPtr
>PUSHW L.SSCANF.MAC >PUSHW L.SSCANF.MAC
ldx #0 ldx #0
.2 >PUSHW L.MAC0,x .2 >PUSHW L.MAC0,x
@ -152,7 +152,7 @@ Dev.ParseArgs lda (ZPArgPtr)
>PUSHBI 12 6 x byte PTRs >PUSHBI 12 6 x byte PTRs
>SYSCALL SScanF >SYSCALL SScanF
bcc .8 bcc .8
lda #E.SYN lda #E.SYN
* sec * sec
.8 rts .8 rts
@ -214,10 +214,13 @@ STATUS >STYA ZPIOCTL
iny iny
lda (ZPIOCTL),y lda (ZPIOCTL),y
sta .3+2 sta .3+2
.2 lda DIB,x .2 lda DIB,x
.3 sta $ffff,x SELF MODIFIED .3 sta $ffff,x SELF MODIFIED
dex dex
bpl .2 bpl .2
clc clc
rts rts
@ -238,7 +241,7 @@ STATUS.DCB cmp #S.IOCTL.S.GETDCB
lda #S.DCB.NIC.LINK.OK lda #S.DCB.NIC.LINK.OK
tsb DCB+S.DCB.NIC.LINK tsb DCB+S.DCB.NIC.LINK
lda /PP.TestCTL lda /PP.TestCTL
sta PacketPagePTR+1,x sta PacketPagePTR+1,x
lda #PP.TestCTL lda #PP.TestCTL
@ -272,11 +275,18 @@ STATUS.9 lda #MLI.E.BADCTL
sec sec
rts rts
*-------------------------------------- *--------------------------------------
* crc32(090007FFFFFF) = 0ba4eec0 : 0b>>2 = 3 = 00100000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
* crc32(FFFFFFFFFFFF) = 41d9ed00
*--------------------------------------
OPEN lda #S.DIB.S.OPENED OPEN lda #S.DIB.S.OPENED
bit DIB+S.DIB.S bit DIB+S.DIB.S
bne .9 beq .1
jsr CLOSE lda #MLI.E.OPEN
sec
rts
.1 jsr CLOSE
* ldx DEVSLOTx0 Done by CLOSE * ldx DEVSLOTx0 Done by CLOSE
@ -284,11 +294,51 @@ OPEN lda #S.DIB.S.OPENED
sta PacketPagePTR+1,x sta PacketPagePTR+1,x
lda #PP.RxCTL lda #PP.RxCTL
sta PacketPagePTR,x sta PacketPagePTR,x
lda /PP.RxCTL.LID+PP.RxCTL.RxOKA+PP.RxCTL.IA+PP.RxCTL.BroadcastA+PP.RxCTL.RuntA lda /PP.RxCTL.LID+PP.RxCTL.IAHashA+PP.RxCTL.RxOKA+PP.RxCTL.IA+PP.RxCTL.MulticastA+PP.RxCTL.BroadcastA+PP.RxCTL.RuntA
sta PacketPageDATA+1,x sta PacketPageDATA+1,x
lda #PP.RxCTL.LID+PP.RxCTL.RxOKA+PP.RxCTL.IA+PP.RxCTL.BroadcastA+PP.RxCTL.RuntA lda #PP.RxCTL.LID+PP.RxCTL.IAHashA+PP.RxCTL.RxOKA+PP.RxCTL.IA+PP.RxCTL.MulticastA+PP.RxCTL.BroadcastA+PP.RxCTL.RuntA
sta PacketPageDATA,x sta PacketPageDATA,x
* lda /PP.LAF
* sta PacketPagePTR+1,x
* lda #PP.LAF
* sta PacketPagePTR,x
* lda #%00000000
* sta PacketPageDATA+1,x
* lda #%00000000
* sta PacketPageDATA,x
* lda /PP.LAF+2
* sta PacketPagePTR+1,x
* lda #PP.LAF+2
* sta PacketPagePTR,x
* lda #%00000000
* sta PacketPageDATA+1,x
* lda #%00000000
* sta PacketPageDATA,x
* lda /PP.LAF+4
* sta PacketPagePTR+1,x
* lda #PP.LAF+4
* sta PacketPagePTR,x
* lda #%00000000
* sta PacketPageDATA+1,x
* lda #%00000000
* sta PacketPageDATA,x
lda /PP.LAF+6
sta PacketPagePTR+1,x
lda #PP.LAF+6
sta PacketPagePTR,x
lda #%00100000
sta PacketPageDATA+1,x
* lda #%00000000
* sta PacketPageDATA,x
lda /PP.MAC lda /PP.MAC
sta PacketPagePTR+1,x sta PacketPagePTR+1,x
lda #PP.MAC lda #PP.MAC
@ -328,13 +378,11 @@ OPEN lda #S.DIB.S.OPENED
sta PacketPageDATA+1,x sta PacketPageDATA+1,x
lda #PP.LineCTL.LID+PP.LineCTL.SerRxOn+PP.LineCTL.SerTxOn+PP.LineCTL.10BaseT lda #PP.LineCTL.LID+PP.LineCTL.SerRxOn+PP.LineCTL.SerTxOn+PP.LineCTL.10BaseT
sta PacketPageDATA,x sta PacketPageDATA,x
lda #S.DIB.S.OPENED lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S tsb DIB+S.DIB.S
clc
rts
.9 lda #MLI.E.OPEN clc
sec
rts rts
*-------------------------------------- *--------------------------------------
CLOSE ldx DEVSLOTx0 CLOSE ldx DEVSLOTx0
@ -391,7 +439,7 @@ READ php
pha pha
eor #$ff eor #$ff
sta Counter+1 sta Counter+1
dey dey
lda RTDATA,x lda RTDATA,x
sta (ZPIOCTL),y sta (ZPIOCTL),y
@ -432,7 +480,7 @@ READ php
inc Counter+1 inc Counter+1
beq .8 beq .8
.3 lda RTDATA+1,x .3 lda RTDATA+1,x
sta (ZPBufPtr),y sta (ZPBufPtr),y
iny iny
@ -475,9 +523,9 @@ WRITE php
eor #$ff eor #$ff
sta Counter sta Counter
lda /PP.BusST lda /PP.BusST
sta PacketPagePTR+1,x sta PacketPagePTR+1,x
lda #PP.BusST lda #PP.BusST
sta PacketPagePTR,x sta PacketPagePTR,x
lda PacketPageDATA+1,x lda PacketPageDATA+1,x
@ -521,7 +569,7 @@ WRITE php
inc Counter+1 inc Counter+1
beq .8 beq .8
.4 lda (ZPBufPtr),y .4 lda (ZPBufPtr),y
sta RTDATA+1,x sta RTDATA+1,x

View File

@ -25,7 +25,7 @@ PSCTX.SIZE .EQ $100-pCode
A2osX.ZCALL .EQ $0000 A2osX.ZCALL .EQ $0000
*-------------------------------------- *--------------------------------------
* A2osX GLOBAL PAGE * A2osX GLOBAL PAGE
* $BC00->$BC0F : Public Vectors * $1000->$1012 : Public Vectors
*-------------------------------------- *--------------------------------------
A2osX.SYSCALL .EQ $1000 A2osX.SYSCALL .EQ $1000
A2osX.LIBCALL .EQ $1003 A2osX.LIBCALL .EQ $1003
@ -35,7 +35,7 @@ A2osX.BADCALL .EQ $100C
*-------------------------------------- *--------------------------------------
A2osX.SLEEP .EQ $1010 A2osX.SLEEP .EQ $1010
*-------------------------------------- *--------------------------------------
* $1ED0->$1EEF : Public Variables * $11D0->$11EF : Public Variables
*-------------------------------------- *--------------------------------------
A2osX.SCRNDEVS .EQ $11D0 0=console, 1-8=VT100, 9=GFX A2osX.SCRNDEVS .EQ $11D0 0=console, 1-8=VT100, 9=GFX
A2osX.ASCREEN .EQ $11DA Active Screen A2osX.ASCREEN .EQ $11DA Active Screen
@ -263,7 +263,7 @@ SYS.StrCmp .EQ $8C
SYS.StrCaseCmp .EQ $8E SYS.StrCaseCmp .EQ $8E
* DEV * DEV
SYS.GetDevByName .EQ $90 SYS.GetDevByName .EQ $90
SYS.MKFD .EQ $92 * .EQ $92
SYS.MKDev .EQ $94 SYS.MKDev .EQ $94
SYS.IOCTL .EQ $96 SYS.IOCTL .EQ $96
* BIN * BIN

View File

@ -12,6 +12,8 @@ S.ETH.EII.TYPE.ARP .EQ $806
S.ETH.EII .EQ 14 S.ETH.EII .EQ 14
*-------------------------------------- *--------------------------------------
S.ETH.802.3.LENGTH .EQ 12 S.ETH.802.3.LENGTH .EQ 12
S.ETH.802.2.LLC .EQ 14
S.ETH.802.2.DSTSAP .EQ 14 S.ETH.802.2.DSTSAP .EQ 14
S.ETH.802.2.SRCSAP .EQ 15 S.ETH.802.2.SRCSAP .EQ 15
S.ETH.802.2.CTRL .EQ 16 S.ETH.802.2.CTRL .EQ 16
@ -23,4 +25,4 @@ S.ETH.SNAP.PROTO.DDP .EQ $809B
S.ETH.SNAP .EQ 22 S.ETH.SNAP .EQ 22
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE INC/ETH.I SAVE inc/eth.i

View File

@ -1,7 +1,7 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
K.VER .EQ $5E00 94.0 K.VER .EQ $5F00 95.0
K.ENV.SIZE .EQ 256 K.ENV.SIZE .EQ 256
*-------------------------------------- *--------------------------------------
K.MEM.ALIGN .EQ 16 K.MEM.ALIGN .EQ 16
@ -9,38 +9,36 @@ K.MEM.nALIGNm1 .EQ $F0
*K.MEM.ALIGN .EQ 64 *K.MEM.ALIGN .EQ 64
*K.MEM.nALIGNm1 .EQ $C0 *K.MEM.nALIGNm1 .EQ $C0
*-------------------------------------- *--------------------------------------
K.hFD.MAX .EQ 32 K.FD.MAX .EQ 32
K.FLT.MAX .EQ 4 K.FILE.MAX .EQ 32
K.USR.MAX .EQ 8 K.USR.MAX .EQ 8
K.PFT.MAX .EQ 4
K.PS.MAX .EQ 32 K.PS.MAX .EQ 32
K.EVT.MAX .EQ 4 K.EVT.MAX .EQ 4
K.TTY.MAX .EQ 8
K.IRQDEV.MAX .EQ 4 K.IRQDEV.MAX .EQ 4
*-------------------------------------- *--------------------------------------
Mem.Table .EQ $0800 -> $1000 Mem.Table .EQ $0800 -> $1000
*-------------------------------------- *--------------------------------------
* Z80 .EQ $1000 FDs.pLO .EQ $1BC0 K.FD.MAX
FDs.pHI .EQ $1BE0 K.FD.MAX
*-------------------------------------- *--------------------------------------
* Tables start at $1C00 FILEs.hFD .EQ $1D00 K.FILE.MAX
FILEs.oCnt .EQ $1D20 K.FILE.MAX
FILEs.hName .EQ $1D40 K.FILE.MAX
*-------------------------------------- *--------------------------------------
hFDs .EQ $1D00 K.hFD.MAX USRs.hSID .EQ $1D60 K.USR.MAX
hFDs.hName .EQ $1D20 K.hFD.MAX USRs.hFile .EQ $1D68 K.USR.MAX
hFDs.oCnt .EQ $1D40 K.hFD.MAX
*-------------------------------------- *--------------------------------------
Flt.Table.pftLO .EQ $1D60 K.FLT.MAX PFTs.pLO .EQ $1D70 K.PFT.MAX
Flt.Table.pftHI .EQ $1D64 K.FLT.MAX PFTs.pHI .EQ $1D74 K.PFT.MAX
Flt.Table.cbLO .EQ $1D68 K.FLT.MAX PFTs.cbLO .EQ $1D78 K.PFT.MAX
Flt.Table.cbHI .EQ $1D6C K.FLT.MAX PFTs.cbHI .EQ $1D7C K.PFT.MAX
*-------------------------------------- *--------------------------------------
S.Table.hSID .EQ $1D70 K.USR.MAX PSs.PID .EQ $1D80 K.PS.MAX
S.Table.hFile .EQ $1D78 K.USR.MAX PSs.hPS .EQ $1DA0 K.PS.MAX
*-------------------------------------- PSs.Hits .EQ $1DC0 K.PS.MAX
PS.Table.PID .EQ $1D80 K.PS.MAX PSs.Stats .EQ $1DE0 K.PS.MAX
PS.Table.hPS .EQ $1DA0 K.PS.MAX
PS.Table.Hits .EQ $1DC0 K.PS.MAX
PS.Table.Stats .EQ $1DE0 K.PS.MAX
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE inc/kernel.i SAVE inc/kernel.i

View File

@ -2,10 +2,10 @@ NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
K.AARPCACHE.SIZE .EQ 10 K.AARPCACHE.SIZE .EQ 10
K.AARP.TTL .EQ 600 K.AARP.TTL .EQ 600
K.AARP.PENDING.TTL .EQ 10 K.AARP.PENDING.TTL .EQ 10
K.AROUTER.TTL .EQ 500 50 sec K.AROUTER.TTL .EQ 500 50 sec
*-------------------------------------- *--------------------------------------
LIBETALK.SETCFG .EQ 4 LIBETALK.SETCFG .EQ 4
LIBETALK.GETCFG .EQ 6 LIBETALK.GETCFG .EQ 6
@ -15,21 +15,32 @@ LIBETALK.PULSE .EQ 10
LIBETALK.AARP.Clear .EQ 12 LIBETALK.AARP.Clear .EQ 12
LIBETALK.AARP.Query .EQ 14 LIBETALK.AARP.Query .EQ 14
LIBETALK.AARP.Add .EQ 16 LIBETALK.AARP.Probe .EQ 16
LIBETALK.AARP.GetCache .EQ 18 LIBETALK.AARP.GetCache .EQ 18
LIBETALK.NBP.Clear .EQ 20
LIBETALK.NBP.Query .EQ 22
LIBETALK.NBP.Lookop .EQ 24
LIBETALK.NBP.GetCache .EQ 26
*-------------------------------------- *--------------------------------------
ERR.AARP.PENDING .EQ $B5 ERR.AARP.PENDING .EQ $B5
*-------------------------------------- *--------------------------------------
*S.ETKCFG.STATUS .EQ 0 * ether proto 0x809B or ether proto 0x80F3
*S.ETKCFG.DevID .EQ 1 *--------------------------------------
*S.ETKCFG.MAC .EQ 4 S.ETKCFG.STATUS .EQ 0
S.ETKCFG.ADDR .EQ 10 S.ETKCFG.DevID .EQ 1
S.ETKCFG.MAC .EQ 4
S.ETKCFG.ADDR .EQ 10 to make ADDR 32 bits
S.ETKCFG.NetID .EQ 11 S.ETKCFG.NetID .EQ 11
S.ETKCFG.NodID .EQ 13 S.ETKCFG.NodID .EQ 13
S.ETKCFG.Router .EQ 14 S.ETKCFG.Router .EQ 14
S.ETKCFG.OBJECT .EQ 15 L+32 S.ETKCFG.MCAddress .EQ 15 L+6
S.ETKCFG.NetStart .EQ 22
S.ETKCFG.NetEnd .EQ 24
S.ETKCFG.Object .EQ 26 L+32
S.ETKCFG.Zone .EQ 59 L+32
* *
S.ETKCFG .EQ 48 S.ETKCFG .EQ 92
*-------------------------------------- *--------------------------------------
S.AARP.HTYPE .EQ S.ETH.SNAP+0 $0001 S.AARP.HTYPE .EQ S.ETH.SNAP+0 $0001
S.AARP.PTYPE .EQ S.ETH.SNAP+2 $809B S.AARP.PTYPE .EQ S.ETH.SNAP+2 $809B
@ -71,11 +82,59 @@ S.DDP2.SRC.NOD .EQ S.ETH.SNAP+9
S.DDP2.DST.SKT .EQ S.ETH.SNAP+10 S.DDP2.DST.SKT .EQ S.ETH.SNAP+10
S.DDP2.SRC.SKT .EQ S.ETH.SNAP+11 S.DDP2.SRC.SKT .EQ S.ETH.SNAP+11
S.DDP2.TYPE .EQ S.ETH.SNAP+12 S.DDP2.TYPE .EQ S.ETH.SNAP+12
S.DDP2.TYPE.RTMPREP .EQ 1
S.DDP2.TYPE.NBP .EQ 2
S.DDP2.TYPE.ATP .EQ 3
S.DDP2.TYPE.AEP .EQ 4
S.DDP2.TYPE.RTMPREQ .EQ 5
S.DDP2.TYPE.ZIP .EQ 6
S.DDP2.TYPE.ADSP .EQ 7
* *
S.DDP2 .EQ S.ETH.SNAP+13 S.DDP2 .EQ S.ETH.SNAP+13
*-------------------------------------- *--------------------------------------
S.NBP.F .EQ S.DDP2+0
S.NBP.F.BrRq .EQ $10
S.NBP.F.LkUpReq .EQ $20
S.NBP.F.LkUpRep .EQ $30
S.NBP.F.FwdReq .EQ $40
S.NBP.ID .EQ S.DDP2+1
S.NBP.Tuples .EQ S.DDP2+2
*--------------------------------------
S.NBPTUPLE.NetID .EQ 0
S.NBPTUPLE.NodID .EQ 2
S.NBPTUPLE.SktID .EQ 3
S.NBPTUPLE.Enum .EQ 4
*
S.NBPTUPLE .EQ 5
*--------------------------------------
S.RTMP S.RTMP
*-------------------------------------- *--------------------------------------
S.ZIP.GNI.Cmd .EQ S.DDP2+0
S.ZIP.GNI.Cmd.Req .EQ 5
S.ZIP.GNI.Cmd.Rep .EQ 6
S.ZIP.GNI.Flags .EQ S.DDP2+1
S.ZIP.GNI.NetStart .EQ S.DDP2+2
S.ZIP.GNI.NetEnd .EQ S.DDP2+4
S.ZIP.GNI.Zone0 .EQ S.DDP2+6
S.ZIP.GNI.MCAddress .EQ S.DDP2+7 L+6
S.ZIP.GNI.DefaultZone .EQ S.DDP2+14 L+32
*--------------------------------------
S.SOCKET.AF .EQ S.FD.DSOCK+0
S.SOCKET.T .EQ S.FD.DSOCK+1
S.SOCKET.PROTO .EQ S.FD.DSOCK+2
S.SOCKET.O .EQ S.FD.DSOCK+3
S.SOCKET.LOC.NET .EQ S.FD.DSOCK+4
S.SOCKET.LOC.NOD .EQ S.FD.DSOCK+6
S.SOCKET.LOC.PORT .EQ S.FD.DSOCK+7
S.SOCKET.REM.NET .EQ S.FD.DSOCK+8
S.SOCKET.REM.NOD .EQ S.FD.DSOCK+10
S.SOCKET.REM.PORT .EQ S.FD.DSOCK+11
S.SOCKET .EQ S.SOCKET+38
*--------------------------------------
MAN MAN
SAVE inc/libetalk.i SAVE inc/libetalk.i
LOAD usr/src/lib/libetalk.s LOAD usr/src/lib/libetalk.s

View File

@ -4,7 +4,6 @@ NEW
*-------------------------------------- *--------------------------------------
K.ARPCACHE.SIZE .EQ 8 K.ARPCACHE.SIZE .EQ 8
K.DNSCACHE.SIZE .EQ 8 K.DNSCACHE.SIZE .EQ 8
K.SKTTABLE.SIZE .EQ 16
K.FRMQUEUE.SIZE .EQ 16 K.FRMQUEUE.SIZE .EQ 16
K.FRMSEND.RETRY .EQ 10 K.FRMSEND.RETRY .EQ 10
K.ETH.FRAME.LEN .EQ 1514 K.ETH.FRAME.LEN .EQ 1514

View File

@ -95,6 +95,7 @@ PP.BusST.LID .EQ %00000000.00011000
PP.BusST.TxBidErr .EQ %00000000.10000000 PP.BusST.TxBidErr .EQ %00000000.10000000
PP.BusST.Rdy4TxNOW .EQ %00000001.00000000 PP.BusST.Rdy4TxNOW .EQ %00000001.00000000
PP.TDR .EQ $013C PP.TDR .EQ $013C
PP.LAF .EQ $0150
PP.MAC .EQ $0158 MAC Address (RW) PP.MAC .EQ $0158 MAC Address (RW)
PP.RxStatus .EQ $0400 PP.RxStatus .EQ $0400
PP.RxLength .EQ $0402 PP.RxLength .EQ $0402
@ -102,4 +103,4 @@ PP.RxFrame .EQ $0404
PP.TxFrame .EQ $0A00 PP.TxFrame .EQ $0A00
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE INC/NIC.8900A.I SAVE inc/nic.8900a.i

View File

@ -367,7 +367,7 @@ D2.TrkReadNIB
*/-------------------------------------- */--------------------------------------
* # D2TrkWriteNIB * # D2TrkWriteNIB
* Write a track (NIBBLE) * Write a track (NIBBLE)
* **In:** * ## ASM
* PUSHB = DSSS0000 * PUSHB = DSSS0000
* PUSHW = Ptr to NIBBLE buffer (0 ended) * PUSHW = Ptr to NIBBLE buffer (0 ended)
* ## RETURN VALUE * ## RETURN VALUE

View File

@ -84,7 +84,6 @@ LIB.UNLOAD clc
* ## C * ## C
* int getprodoscatsize (short int options, short int catsize, int devsize ); * int getprodoscatsize (short int options, short int catsize, int devsize );
* ## ASM * ## ASM
* **In:**
* PUSHW = DevSize (in 512b blocks) * PUSHW = DevSize (in 512b blocks)
* PUSHB = Catalog Size (in blocks) * PUSHB = Catalog Size (in blocks)
* PUSHB = Options * PUSHB = Options
@ -124,7 +123,7 @@ GetProDOSCatSize.I
rts rts
*/-------------------------------------- */--------------------------------------
* # BuildProDOSCat * # BuildProDOSCat
* **In:** * ## ASM
* PUSHW = DevSize (in 512b blocks) * PUSHW = DevSize (in 512b blocks)
* PUSHB = Catalog Size (in blocks) * PUSHB = Catalog Size (in blocks)
* PUSHB = Options * PUSHB = Options

View File

@ -3,7 +3,7 @@ NEW
*/-------------------------------------- */--------------------------------------
* # AARP.Clear * # AARP.Clear
* Clear AARP Cache * Clear AARP Cache
* **In:** * ## ASM
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
AARP.Clear ldx #K.AARPCACHE.SIZE*S.AARPCACHE AARP.Clear ldx #K.AARPCACHE.SIZE*S.AARPCACHE
@ -11,12 +11,13 @@ AARP.Clear ldx #K.AARPCACHE.SIZE*S.AARPCACHE
.1 stz AARP.CACHE-1,x .1 stz AARP.CACHE-1,x
dex dex
bne .1 bne .1
clc clc
rts rts
*/-------------------------------------- */--------------------------------------
* # AARP.Query * # AARP.Query
* Query AARP Cache and returns HW address * Query AARP Cache and returns HW address
* **In:** * ## ASM
* PUSHW PTR to MAC (to fill) * PUSHW PTR to MAC (to fill)
* PUSHW PTR to ADDR * PUSHW PTR to ADDR
* ## RETURN VALUE * ## RETURN VALUE
@ -26,23 +27,28 @@ AARP.Clear ldx #K.AARPCACHE.SIZE*S.AARPCACHE
AARP.Query >PULLW ZPPtrADDR ADDR AARP.Query >PULLW ZPPtrADDR ADDR
>PULLW ZPPtrMAC MAC >PULLW ZPPtrMAC MAC
ldy #3 ldy #3
.1 lda (ZPPtrADDR),y .1 lda (ZPPtrADDR),y
sta AARP.TmpCache+S.AARPCACHE.ADDR,y sta AARP.TmpCache+S.AARPCACHE.ADDR,y
dey dey
bpl .1 bpl .1
jsr AARP.QUERY.I jsr AARP.QUERY.I
bcs .9 bcs .9
ldy #5 ldy #5
.2 lda AARP.TmpCache+S.AARPCACHE.MAC,y .2 lda AARP.TmpCache+S.AARPCACHE.MAC,y
sta (ZPPtrMAC),y sta (ZPPtrMAC),y
dey dey
bpl .2 bpl .2
clc clc
.9 rts .9 rts
*/-------------------------------------- */--------------------------------------
* # AARP.Add * # AARP.Add
* Add a static AARP cache record * Add a static AARP cache record
* **In:** * ## ASM
* PUSHW PTR to MAC * PUSHW PTR to MAC
* PUSHW PTR to IP * PUSHW PTR to IP
*\-------------------------------------- *\--------------------------------------
@ -69,19 +75,22 @@ AARP.ADD.I sta AARP.TmpCache
jsr AARP.FIND.BY.ADDR jsr AARP.FIND.BY.ADDR
bcc .1 bcc .1
jsr AARP.FIND.FREE jsr AARP.FIND.FREE
.1 ldy #S.AARPCACHE-1 .1 ldy #S.AARPCACHE-1
.2 lda AARP.TmpCache,y .2 lda AARP.TmpCache,y
sta (ZPCachePtr),y sta (ZPCachePtr),y
dey dey
bpl .2 bpl .2
clc clc
rts rts
*/-------------------------------------- */--------------------------------------
* # AARP.GetCache * # AARP.GetCache
* Return a Ptr to AARP Cache Table * Return a Ptr to AARP Cache Table
* **In:** * ## ASM
* ## RETURN VALUE * ## RETURN VALUE
* Y,A = PTR to AARP.CACHE * Y,A = PTR to AARP.CACHE
*\-------------------------------------- *\--------------------------------------
@ -102,13 +111,16 @@ AARP.AddFromFrameInPtr
iny iny
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
sta AARP.TmpCache+S.AARPCACHE.ADDR+3,x sta AARP.TmpCache+S.AARPCACHE.ADDR+3,x
ldy #S.ETH.SRCMAC+5 ldy #S.ETH.SRCMAC+5
ldx #5 ldx #5
.2 lda (ZPFrameInPtr),y .2 lda (ZPFrameInPtr),y
sta AARP.TmpCache+S.AARPCACHE.MAC,x sta AARP.TmpCache+S.AARPCACHE.MAC,x
dey dey
dex dex
bpl .2 bpl .2
lda #K.AARP.TTL lda #K.AARP.TTL
sta AARP.TmpCache+S.AARPCACHE.TTL sta AARP.TmpCache+S.AARPCACHE.TTL
lda /K.AARP.TTL lda /K.AARP.TTL
@ -116,55 +128,77 @@ AARP.AddFromFrameInPtr
lda #S.AARPCACHE.S.RESOLVED lda #S.AARPCACHE.S.RESOLVED
jmp AARP.ADD.I jmp AARP.ADD.I
*-------------------------------------- *--------------------------------------
AARP.IN bra .10 AARP.IN ldy #S.AARP.TPA+3
lda (ZPFrameInPtr),y
ldy #S.AARP.TPA+3 cmp ETKCFG+S.ETKCFG.NodID
ldx #3
.1 lda (ZPFrameInPtr),y
cmp ETKCFG+S.ETKCFG.ADDR,x
bne AARP.IN.EXIT bne AARP.IN.EXIT
dey dey
dex lda (ZPFrameInPtr),y
bpl .1 cmp ETKCFG+S.ETKCFG.NetID
.10 ldy #S.AARP.OPERATION+1 HI byte bne AARP.IN.EXIT
dey
lda (ZPFrameInPtr),y
cmp ETKCFG+S.ETKCFG.NetID+1
bne AARP.IN.EXIT
ldy #S.AARP.OPERATION+1 HI byte
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
cmp #S.AARP.OPERATION.REQ cmp #S.AARP.OPERATION.REQ
beq AARP.IN.REQ beq AARP.IN.REQ
cmp #S.AARP.OPERATION.REP cmp #S.AARP.OPERATION.REP
beq AARP.IN.REP beq AARP.IN.REP
AARP.IN.EXIT lda hFrameIn AARP.IN.EXIT lda hFrameIn
beq .8 beq .8
stz hFrameIn stz hFrameIn
>SYSCALL2 FreeMem >SYSCALL2 FreeMem
.8 clc .8 clc
rts rts
*--------------------------------------
AARP.IN.REQ ldy #S.AARP.SPA+3 AARP.IN.REQ ldy #S.AARP.SPA+3
ldx #3 ldx #3
.1 lda (ZPFrameInPtr),y .1 lda (ZPFrameInPtr),y
sta AARP.REP.TPA,x sta AARP.REP.TPA,x
dey dey
dex dex
bpl .1 bpl .1
ldy #S.AARP.SHA+5 ldy #S.AARP.SHA+5
ldx #5 ldx #5
.2 lda (ZPFrameInPtr),y .2 lda (ZPFrameInPtr),y
sta AARP.REP.DSTMAC,x sta AARP.REP.DSTMAC,x
sta AARP.REP.THA,x sta AARP.REP.THA,x
dey dey
dex dex
bpl .2 bpl .2
lda ETKCFG+S.ETKCFG.NetID+1
sta AARP.REP.SPA+1
lda ETKCFG+S.ETKCFG.NetID
sta AARP.REP.SPA+2
lda ETKCFG+S.ETKCFG.NodID
sta AARP.REP.SPA+3
>LDYA L.AARP.REP >LDYA L.AARP.REP
jsr AARP.Send jsr AARP.Send
bra AARP.IN.EXIT bra AARP.IN.EXIT
*--------------------------------------
AARP.IN.REP lda #K.AARP.TTL AARP.IN.REP lda #K.AARP.TTL
sta AARP.TmpCache+S.AARPCACHE.TTL sta AARP.TmpCache+S.AARPCACHE.TTL
lda /K.AARP.TTL lda /K.AARP.TTL
sta AARP.TmpCache+S.AARPCACHE.TTL+1 sta AARP.TmpCache+S.AARPCACHE.TTL+1
ldy #S.AARP.SPA+3 ldy #S.AARP.SPA+3
ldx #3 ldx #3
.1 lda (ZPFrameInPtr),y .1 lda (ZPFrameInPtr),y
sta AARP.TmpCache+S.AARPCACHE.ADDR,x sta AARP.TmpCache+S.AARPCACHE.ADDR,x
dey dey
@ -173,11 +207,13 @@ AARP.IN.REP lda #K.AARP.TTL
ldy #S.AARP.SHA+5 ldy #S.AARP.SHA+5
ldx #5 ldx #5
.2 lda (ZPFrameInPtr),y .2 lda (ZPFrameInPtr),y
sta AARP.TmpCache+S.AARPCACHE.MAC,x sta AARP.TmpCache+S.AARPCACHE.MAC,x
dey dey
dex dex
bpl .2 bpl .2
lda #S.AARPCACHE.S.RESOLVED lda #S.AARPCACHE.S.RESOLVED
jsr AARP.ADD.I jsr AARP.ADD.I
jmp AARP.IN.EXIT jmp AARP.IN.EXIT
@ -187,12 +223,15 @@ AARP.QUERY.I jsr AARP.FIND.BY.ADDR
lda (ZPCachePtr) get status... lda (ZPCachePtr) get status...
bpl .9 Pending... bpl .9 Pending...
ldy #S.AARPCACHE.MAC ldy #S.AARPCACHE.MAC
.2 lda (ZPCachePtr),y .2 lda (ZPCachePtr),y
sta AARP.TmpCache,y sta AARP.TmpCache,y
iny iny
cpy #S.AARPCACHE.MAC+6 cpy #S.AARPCACHE.MAC+6
bne .2 bne .2
ldy #S.AARPCACHE.TTL ldy #S.AARPCACHE.TTL
lda #K.AARP.TTL lda #K.AARP.TTL
sta (ZPCachePtr),y sta (ZPCachePtr),y
@ -208,14 +247,17 @@ AARP.QUERY.I jsr AARP.FIND.BY.ADDR
sta AARP.REQ.TPA,x sta AARP.REQ.TPA,x
dex dex
bpl .4 bpl .4
>LDYA L.AARP.REQ >LDYA L.AARP.REQ
jsr AARP.Send jsr AARP.Send
bcs .99 bcs .99
lda #K.AARP.PENDING.TTL lda #K.AARP.PENDING.TTL
sta AARP.TmpCache+S.AARPCACHE.TTL sta AARP.TmpCache+S.AARPCACHE.TTL
stz AARP.TmpCache+S.AARPCACHE.TTL+1 stz AARP.TmpCache+S.AARPCACHE.TTL+1
lda #S.AARPCACHE.S.PENDING lda #S.AARPCACHE.S.PENDING
jsr AARP.ADD.I jsr AARP.ADD.I
.9 lda #ERR.AARP.PENDING .9 lda #ERR.AARP.PENDING
sec sec
.99 rts .99 rts
@ -231,22 +273,29 @@ AARP.FIND.BY.ADDR
ldx #3 ldx #3
ldy #S.AARPCACHE.ADDR+3 ldy #S.AARPCACHE.ADDR+3
.2 lda AARP.TmpCache+S.AARPCACHE.ADDR,x .2 lda AARP.TmpCache+S.AARPCACHE.ADDR,x
cmp (ZPCachePtr),y cmp (ZPCachePtr),y
bne .3 bne .3
dey dey
dex dex
bpl .2 bpl .2
clc clc
rts rts
.3 lda ZPCachePtr .3 lda ZPCachePtr
clc clc
adc #S.AARPCACHE adc #S.AARPCACHE
sta ZPCachePtr sta ZPCachePtr
bcc .8 bcc .8
inc ZPCachePtr+1 inc ZPCachePtr+1
.8 dec TmpOffset .8 dec TmpOffset
bne .1 bne .1
sec sec
rts rts
*-------------------------------------- *--------------------------------------
@ -260,7 +309,9 @@ AARP.FIND.FREE >LDYA L.AARP.CACHE
ldx #K.AARPCACHE.SIZE ldx #K.AARPCACHE.SIZE
.1 lda (ZPCachePtr) .1 lda (ZPCachePtr)
beq .8 beq .8
bpl .6 bpl .6
ldy #S.AARPCACHE.TTL ldy #S.AARPCACHE.TTL
lda (ZPCachePtr),y lda (ZPCachePtr),y
sec sec
@ -269,6 +320,7 @@ AARP.FIND.FREE >LDYA L.AARP.CACHE
lda (ZPCachePtr),y lda (ZPCachePtr),y
sbc TmpDWord+1 sbc TmpDWord+1
bcc .6 bcc .6
lda (ZPCachePtr),y lda (ZPCachePtr),y
sta TmpDWord+1 sta TmpDWord+1
dey dey
@ -282,23 +334,31 @@ AARP.FIND.FREE >LDYA L.AARP.CACHE
adc #S.AARPCACHE adc #S.AARPCACHE
sta ZPCachePtr sta ZPCachePtr
bcc .7 bcc .7
inc ZPCachePtr+1 inc ZPCachePtr+1
.7 dex .7 dex
bne .1 bne .1
>LDYA ZPTmpPtr1 >LDYA ZPTmpPtr1
>STYA ZPCachePtr >STYA ZPCachePtr
lda #0 lda #0
sta (ZPCachePtr) sta (ZPCachePtr)
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
AARP.EXPIRE >LDYA L.AARP.CACHE AARP.EXPIRE rts
>LDYA L.AARP.CACHE
>STYA ZPCachePtr >STYA ZPCachePtr
ldx #K.AARPCACHE.SIZE ldx #K.AARPCACHE.SIZE
.1 lda (ZPCachePtr) .1 lda (ZPCachePtr)
beq .2 beq .2
and #S.AARPCACHE.S.STATIC and #S.AARPCACHE.S.STATIC
bne .2 bne .2
ldy #S.AARPCACHE.TTL ldy #S.AARPCACHE.TTL
sec sec
lda (ZPCachePtr),y lda (ZPCachePtr),y
@ -309,16 +369,21 @@ AARP.EXPIRE >LDYA L.AARP.CACHE
sbc #0 sbc #0
sta (ZPCachePtr),y sta (ZPCachePtr),y
bcs .2 bcs .2
lda #0 lda #0
sta (ZPCachePtr) sta (ZPCachePtr)
.2 lda ZPCachePtr .2 lda ZPCachePtr
clc clc
adc #S.AARPCACHE adc #S.AARPCACHE
sta ZPCachePtr sta ZPCachePtr
bcc .3 bcc .3
inc ZPCachePtr+1 inc ZPCachePtr+1
.3 dex .3 dex
bne .1 bne .1
rts rts
*-------------------------------------- *--------------------------------------
AARP.Send >STYA IOCTL+S.IOCTL.BUFPTR AARP.Send >STYA IOCTL+S.IOCTL.BUFPTR

11
LIB/LIBETALK.S.ADSP.txt Normal file
View File

@ -0,0 +1,11 @@
NEW
AUTO 3,1
*--------------------------------------
ADSP.IN
clc
rts
*--------------------------------------
MAN
SAVE usr/src/lib/libetalk.s.adsp
LOAD usr/src/lib/libetalk.s
ASM

10
LIB/LIBETALK.S.AEP.txt Normal file
View File

@ -0,0 +1,10 @@
NEW
AUTO 3,1
*--------------------------------------
AEP.IN clc
rts
*--------------------------------------
MAN
SAVE usr/src/lib/libetalk.s.aep
LOAD usr/src/lib/libetalk.s
ASM

10
LIB/LIBETALK.S.ATP.txt Normal file
View File

@ -0,0 +1,10 @@
NEW
AUTO 3,1
*--------------------------------------
ATP.IN clc
rts
*--------------------------------------
MAN
SAVE usr/src/lib/libetalk.s.atp
LOAD usr/src/lib/libetalk.s
ASM

View File

@ -1,8 +1,49 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
DDP.IN clc DDP.IN ldy #S.DDP2.DST.NOD
lda (ZPFrameInPtr),y
cmp #$ff
beq .1
cmp ETKCFG+S.ETKCFG.NodID
bne .9
ldy #S.DDP2.DST.NET
lda (ZPFrameInPtr),y
cmp ETKCFG+S.ETKCFG.NetID+1
bne .9
iny
lda (ZPFrameInPtr),y
cmp ETKCFG+S.ETKCFG.NetID
bne .9
.1 ldy #S.DDP2.DST.SKT
lda (ZPFrameInPtr),y
beq .9
* bmi DDP.IN.DYNAMIC
cmp #8
bcs .9
ldy #S.DDP2.SRC.SKT
cmp (ZPFrameInPtr),y
bne .9
asl
tax
jmp (J.DDP.IN-2,x)
clc
rts rts
.9 lda #MLI.E.EOF
sec
rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/lib/libetalk.s.ddp SAVE usr/src/lib/libetalk.s.ddp

View File

@ -1,7 +1,115 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
FRM.NewDDP >STYA ZPDataOutLen
lda ZPDataOutLen
clc
adc #S.DDP2
sta ZPFrameOutLen
tay
lda ZPDataOutLen+1
adc /S.DDP2
sta ZPFrameOutLen+1
bne .10
cpy #60
bcs .10
ldy #60
.10 >SYSCALL2 GetMem
bcs .9
>STYA ZPFrameOutPtr
stx hFrameOut
lda ZPFrameOutLen
sec
sbc #S.ETH.802.2.LLC
ldy #S.ETH.802.3.LENGTH+1
sta (ZPFrameOutPtr),y
lda ZPFrameOutLen+1
sbc /S.ETH.802.2.LLC
dey
sta (ZPFrameOutPtr),y
ldx #DDP.LLC.L-1
ldy #S.ETH.802.2.LLC+DDP.LLC.L-1
.1 lda DDP.LLC,x
sta (ZPFrameOutPtr),y
dey
dex
bpl .1
lda ZPFrameOutLen
sec
sbc #S.ETH.SNAP
ldy #S.DDP2.DATALEN+1
sta (ZPFrameOutPtr),y
lda ZPFrameOutLen+1
sbc /S.ETH.SNAP
dey
sta (ZPFrameOutPtr),y
ldy #S.DDP2.CHECKSUM
lda #0
sta (ZPFrameOutPtr),y
iny
sta (ZPFrameOutPtr),y
lda hFrameOut
clc
.9 rts
*--------------------------------------
FRM.SendDDP ldy #S.DDP2.SRC.NET
lda ETKCFG+S.ETKCFG.NetID+1
sta (ZPFrameOutPtr),y
iny
lda ETKCFG+S.ETKCFG.NetID
sta (ZPFrameOutPtr),y
ldy #S.DDP2.SRC.NOD
lda ETKCFG+S.ETKCFG.NodID
sta (ZPFrameOutPtr),y
ldy #S.DDP2.DST.NOD
lda (ZPFrameOutPtr),y
beq .10 DST.NOD = 0 : any router
cmp #$FF Broadcast
bne FRM.SendAARP
.10 ldy #S.DDP2.DST.NET
lda (ZPFrameOutPtr),y
iny
ora (ZPFrameOutPtr),y
bne .2
ldy #5
.1 lda MAC.BROADCAST,y
sta (ZPFrameOutPtr),y
dey
bpl .1
bra FRM.Send
.2 ldy #5
.3 lda ETKCFG+S.ETKCFG.MCAddress+1,y
sta (ZPFrameOutPtr),y
dey
bpl .3
bra FRM.Send
FRM.SendAARP >DEBUG
*-------------------------------------- *--------------------------------------
FRM.Send ldx #3 FRM.Send ldx #3
@ -9,13 +117,42 @@ FRM.Send ldx #3
sta IOCTL+S.IOCTL.BUFPTR,x sta IOCTL+S.IOCTL.BUFPTR,x
dex dex
bpl .1 bpl .1
lda IOCTL+S.IOCTL.BYTECNT+1
bne FRM.Send.IOCTL
lda #60
cmp IOCTL+S.IOCTL.BYTECNT
bcc FRM.Send.IOCTL
sta IOCTL+S.IOCTL.BYTECNT
FRM.Send.IOCTL >PUSHB ETKCFG+S.NETCFG.DevID FRM.Send.IOCTL >PUSHB ETKCFG+S.NETCFG.DevID
>PUSHBI IOCTL.WRITE >PUSHBI IOCTL.WRITE
>PUSHW L.IOCTL >PUSHW L.IOCTL
>SYSCALL2 IOCTL >SYSCALL2 IOCTL
rts rts
*-------------------------------------- *--------------------------------------
FRM.DiscardIn lda hFrameIn
beq .8
stz hFrameIn
>SYSCALL2 FreeMem
.8 clc
rts
*--------------------------------------
FRM.DiscardOut lda hFrameOut
beq .8
stz hFrameOut
>SYSCALL2 FreeMem
.8 sec
rts
*--------------------------------------
MAN MAN
SAVE usr/src/lib/libetalk.s.frm SAVE usr/src/lib/libetalk.s.frm
LOAD usr/src/lib/libetalk.s LOAD usr/src/lib/libetalk.s

116
LIB/LIBETALK.S.NBP.txt Normal file
View File

@ -0,0 +1,116 @@
NEW
AUTO 3,1
*--------------------------------------
NBP.IN
clc
rts
*--------------------------------------
NBP.Clear
*--------------------------------------
NBP.Query
clc
rts
*--------------------------------------
NBP.Lookup >PULLW ZPDataInPtr PSTR/PSTR/PSTR/0
ldy #$ff
.1 iny
lda (ZPDataInPtr),y
bne .1
tya
clc
adc #S.NBPTUPLE+2 +F+ID
tay
lda #0
adc #0
jsr FRM.NewDDP
bcs .9
lda #S.DDP2.TYPE.NBP
ldy #S.DDP2.DST.SKT
sta (ZPFrameOutPtr),y
iny S.DDP2.SRC.SKT
sta (ZPFrameOutPtr),y
ldy #S.DDP2.TYPE
sta (ZPFrameOutPtr),y
ldy #S.NBP.F
lda #S.NBP.F.LkUpReq+1
sta (ZPFrameOutPtr),y
inc NBP.ID
lda NBP.ID
iny S.NBP.ID
sta (ZPFrameOutPtr),y
iny S.NBP.Tuples
lda ETKCFG+S.ETKCFG.NetID+1
sta (ZPFrameOutPtr),y
iny
lda ETKCFG+S.ETKCFG.NetID
sta (ZPFrameOutPtr),y
iny
lda ETKCFG+S.ETKCFG.NodID
sta (ZPFrameOutPtr),y
iny
lda #S.DDP2.TYPE.NBP
sta (ZPFrameOutPtr),y
iny
lda #0 S.NBPTUPLE.Enum
sta (ZPFrameOutPtr),y
.2 lda (ZPDataInPtr)
beq .4
inc ZPDataInPtr
bne .3
inc ZPDataInPtr+1
.3 iny
sta (ZPFrameOutPtr),y
bra .2
.4 cpy #60
bcs .8
iny
sta (ZPFrameOutPtr),y
bra .4
.8 ldy #S.DDP2.DST.NET
lda #0
* lda ETKCFG+S.ETKCFG.NetID+1
sta (ZPFrameOutPtr),y
iny
* lda ETKCFG+S.ETKCFG.NetID
sta (ZPFrameOutPtr),y
lda #$ff
* lda #0 all routers
ldy #S.DDP2.DST.NOD
sta (ZPFrameOutPtr),y
jmp FRM.SendDDP
.9 rts
*--------------------------------------
NBP.GetCache clc
rts
*--------------------------------------
MAN
SAVE usr/src/lib/libetalk.s.nbp
LOAD usr/src/lib/libetalk.s
ASM

View File

@ -1,7 +1,10 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
RTMP.IN.REQ
RTMP.IN.REP
clc
rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/lib/libetalk.s.rtmp SAVE usr/src/lib/libetalk.s.rtmp

219
LIB/LIBETALK.S.SKT.txt Normal file
View File

@ -0,0 +1,219 @@
NEW
AUTO 3,1
*/--------------------------------------
* # Socket
* Create a new socket
* ## C
* `hFD socket(short int type, short int protocol);`
* ## ASM
* `>PUSHB type`
* `>PUSHB protocol`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
* ## RETURN VALUE
* CC: A = hSOCKET
* CS: A = EC
*\--------------------------------------
SKT.Socket clc
rts
*/--------------------------------------
* # Bind
* bind a name to a socket
* ## C
* `int bind(hFD fd, const struct sockaddr *addr);`
* ## ASM
* `>PUSHB fd`
* `>PUSHW addr`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
* ## RETURN VALUE
* CC: A = hSOCKET
* CS: A = EC
*\--------------------------------------
SKT.bind
*/--------------------------------------
* # Connect
* Initiate a connection on a socket
* ## C
* `int connect(hFD fd, const struct sockaddr *addr);`
* ## ASM
* `>PUSHB fd`
* `>PUSHW addr`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
* ## RETURN VALUE
* CC: A = hSOCKET
* CS: A = EC
*\--------------------------------------
SKT.connect
*/--------------------------------------
* # Listen
* Listen for connections on a socket
* ## C
* `int listen(hFD fd);`
* ## ASM
* `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.listen`
* ## RETURN VALUE
* CS: A = EC
*\--------------------------------------
SKT.listen
*/--------------------------------------
* # Accept
* Accept a connection on a socket
* ## C
* `hFD Accept(hFD fd);`
* ## ASM
* `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.accept`
* ## RETURN VALUE
* A = hSocket
*\--------------------------------------
SKT.Accept
*/--------------------------------------
* # Shutdown
* Close socket
* ## C
* `int shutdown(int fd);`
* ## ASM
* `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.shutdown`
* ## RETURN VALUE
*\--------------------------------------
SKT.shutdown
*/--------------------------------------
* # Read (STREAM)
* ## C
* `int skt.read(hFD fd, void *buf, int count);`
* ## ASM
* `>PUSHB fd`
* `>PUSHW buf`
* `>PUSHW count`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.read`
* ## RETURN VALUE
* CC: Y,A = bytes read
* CS: A = EC
*\--------------------------------------
SKT.Read
*/--------------------------------------
* # Write (STREAM)
* ## C
* `int skt.write(hFD fd, const void *buf, int count);`
* ## ASM
* `>PUSHB fd`
* `>PUSHW buf`
* `>PUSHW count`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.write`
* ## RETURN VALUE
* CC: Y,A = bytes written
* CS: A = EC
*\--------------------------------------
SKT.Write
*/--------------------------------------
* # RecvFrom (RAW,DGRAM)
* ## C
* `hMem recvfrom(hFD fd, struct sockaddr *addr);`
* ## ASM
* `>PUSHB fd`
* `>PUSHW addr` (RecvFrom)
* `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
* ## RETURN VALUE
* CC: A = hMem
* CS: A = EC
*\--------------------------------------
SKT.RecvFrom
*/--------------------------------------
* # Recv (RAW,DGRAM,SEQPKT)
* ## C
* `hMem recv(hFD fd);`
* ## ASM
* `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
* ## RETURN VALUE
* CC: A = hMem
* CS: A = EC
*\--------------------------------------
SKT.Recv
*/--------------------------------------
* # SendTo (RAW,DGRAM,SEQPKT)
* ## C
* `int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);`
* ## ASM
* `>PUSHB fd`
* `>PUSHW buf`
* `>PUSHWI count`
* `>PUSHW addr`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.sendto`
* ## RETURN VALUE
* CC: Y,A = bytes written
* CS: A = EC
*\--------------------------------------
SKT.SendTo
*/--------------------------------------
* # Send (RAW,DGRAM,SEQPKT)
* ## C
* `int skt.send(hFD fd, const void *buf, int count);`
* ## ASM
* `>PUSHB fd`
* `>PUSHW buf`
* `>PUSHWI count`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.send`
* ## RETURN VALUE
* CC: Y,A = bytes written
* CS: A = EC
*\--------------------------------------
SKT.Send
*/--------------------------------------
* # GetSockOpt
* Set Socket Options
* ## C
* `int getsockopt(hFD fd);`
* ## ASM
* `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.GetSockOpt`
* ## RETURN VALUE
*\--------------------------------------
SKT.getsockopt
*/--------------------------------------
* # SetSockOpt
* Set Socket Options
* ## C
* `int setsockopt(hFD fd, short int opts);`
* ## ASM
* `>PUSHB fd`
* `>PUSHB opts`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt`
* ## RETURN VALUE
*\--------------------------------------
SKT.setsockopt
*/--------------------------------------
* # EOF
* End Of File
* ## C
* `int eof(hFD fd);`
* ## ASM
* `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.EOF`
* ## RETURN VALUE
* CC : A = 0 if some data, A = $ff if EOF
* CS : A = Socket Error
*\--------------------------------------
SKT.EOF
*--------------------------------------
MAN
SAVE usr/src/lib/libetalk.s.skt
LOAD usr/src/lib/libetalk.s
ASM

75
LIB/LIBETALK.S.ZIP.txt Normal file
View File

@ -0,0 +1,75 @@
NEW
AUTO 3,1
*--------------------------------------
ZIP.IN ldy #S.ZIP.GNI.Cmd
lda (ZPFrameInPtr),y
cmp #S.ZIP.GNI.Cmd.Rep
bne .8
ldy #S.ZIP.GNI.Zone0
lda (ZPFrameInPtr),y
bne .8
ldy #S.DDP2.SRC.NET
lda (ZPFrameInPtr),y
sta ETKCFG+S.ETKCFG.NetID+1
iny
lda (ZPFrameInPtr),y
sta ETKCFG+S.ETKCFG.NetID
ldy #S.DDP2.SRC.NOD
lda (ZPFrameInPtr),y
sta ETKCFG+S.ETKCFG.Router
ldy #S.ZIP.GNI.NetStart
lda (ZPFrameInPtr),y
sta ETKCFG+S.ETKCFG.NetStart+1
iny
lda (ZPFrameInPtr),y
sta ETKCFG+S.ETKCFG.NetStart
iny
lda (ZPFrameInPtr),y
sta ETKCFG+S.ETKCFG.NetEnd+1
iny
lda (ZPFrameInPtr),y
sta ETKCFG+S.ETKCFG.NetEnd
ldy #S.ZIP.GNI.MCAddress
lda (ZPFrameInPtr),y
cmp #6
bne .3
tax
ldy #S.ZIP.GNI.MCAddress+6
.2 lda (ZPFrameInPtr),y
sta ETKCFG+S.ETKCFG.MCAddress,x
dey
dex
bpl .2
.3 ldy #S.ZIP.GNI.DefaultZone
lda (ZPFrameInPtr),y
beq .7
tax
clc
adc #S.ZIP.GNI.DefaultZone
tay
.4 lda (ZPFrameInPtr),y
sta ETKCFG+S.ETKCFG.Zone,x
dey
dex
bpl .4
.7 lda #$80
sta ETKCFG STATUS
.8 clc
rts
*--------------------------------------
MAN
SAVE usr/src/lib/libetalk.s.zip
LOAD usr/src/lib/libetalk.s
ASM

View File

@ -4,9 +4,13 @@ NEW
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF lib/libetalk .TF lib/libetalk
*--------------------------------------
ETLK.Q.SIZE .EQ 8
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.e.i
.INB inc/nic.i .INB inc/nic.i
.INB inc/eth.i .INB inc/eth.i
.INB inc/lib.net.i .INB inc/lib.net.i
@ -55,7 +59,12 @@ CS.START cld
.DA AARP.CLEAR .DA AARP.CLEAR
.DA AARP.QUERY .DA AARP.QUERY
.DA AARP.ADD .DA AARP.ADD
.DA AARP.GetCACHE .DA AARP.GetCache
.DA NBP.Clear
.DA NBP.Query
.DA NBP.Lookup
.DA NBP.GetCache
L.IOCTL .DA IOCTL L.IOCTL .DA IOCTL
@ -63,6 +72,14 @@ L.AARP.REQ .DA AARP.REQ
L.AARP.REP .DA AARP.REP L.AARP.REP .DA AARP.REP
L.AARP.CACHE .DA AARP.CACHE L.AARP.CACHE .DA AARP.CACHE
J.DDP.IN .DA RTMP.IN.REP
.DA NBP.IN
.DA ATP.IN
.DA AEP.IN
.DA RTMP.IN.REQ
.DA ZIP.IN
.DA ADSP.IN
*-------------------------------------- *--------------------------------------
L.ETKCFG .DA ETKCFG L.ETKCFG .DA ETKCFG
.DA 0 .DA 0
@ -71,6 +88,7 @@ LIB.LOAD ldx RefCount
bne .8 bne .8
jsr AARP.CLEAR jsr AARP.CLEAR
.8 inc RefCount .8 inc RefCount
clc clc
@ -84,29 +102,46 @@ INCOMING sta hFrameIn
>PULLW ZPTmpPtr1 >PULLW ZPTmpPtr1
ldy #S.IOCTL.BUFPTR+3 ldy #S.IOCTL.BUFPTR+3
.1 lda (ZPTmpPtr1),y Get Frame Ptr & Len .1 lda (ZPTmpPtr1),y Get Frame Ptr & Len
sta ZPFrameInPtr-S.IOCTL.BUFPTR,y sta ZPFrameInPtr-S.IOCTL.BUFPTR,y
dey dey
bpl .1 bpl .1
ldy #S.ETH.802.3.LENGTH
lda (ZPFrameInPtr),y
cmp /$800
bcs .9 EII, not for us
lda #$AA SRCSAP=DSTSAP=$AA
ldy #S.ETH.802.2.DSTSAP
cmp (ZPFrameInPtr),y
bne .9
iny S.ETH.802.2.SRCSAP
cmp (ZPFrameInPtr),y
bne .9
ldy #S.ETH.SNAP.PROTO ldy #S.ETH.SNAP.PROTO
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
tax cmp /S.ETH.SNAP.PROTO.DDP $80 for both AARP & DDP
bne .9
iny iny
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
cmp #S.ETH.SNAP.PROTO.AARP cmp #S.ETH.SNAP.PROTO.DDP
bne .2 bne .2
cpx /S.ETH.SNAP.PROTO.AARP
bne .2 jmp DDP.IN
jmp AARP.IN
.2 cmp #S.ETH.SNAP.PROTO.DDP .2 cmp #S.ETH.SNAP.PROTO.AARP
bne .9
cpx /S.ETH.SNAP.PROTO.DDP
bne .9 bne .9
jmp DDP.IN jmp AARP.IN
.9 sec .9 lda #MLI.E.EOF
sec
rts rts
*-------------------------------------- *--------------------------------------
*-------------------------------------- *--------------------------------------
@ -118,14 +153,20 @@ PULSE and #S.EVT.F.T1SEC
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
.INB usr/src/lib/libetalk.s.aarp .INB usr/src/lib/libetalk.s.aarp
.INB usr/src/lib/libetalk.s.adsp
.INB usr/src/lib/libetalk.s.aep
.INB usr/src/lib/libetalk.s.atp
.INB usr/src/lib/libetalk.s.cfg .INB usr/src/lib/libetalk.s.cfg
.INB usr/src/lib/libetalk.s.ddp .INB usr/src/lib/libetalk.s.ddp
.INB usr/src/lib/libetalk.s.elap .INB usr/src/lib/libetalk.s.elap
.INB usr/src/lib/libetalk.s.frm .INB usr/src/lib/libetalk.s.frm
.INB usr/src/lib/libetalk.s.nbp
.INB usr/src/lib/libetalk.s.rtmp .INB usr/src/lib/libetalk.s.rtmp
.INB usr/src/lib/libetalk.s.zip
*-------------------------------------- *--------------------------------------
CS.END CS.END
*-------------------------------------- *--------------------------------------
MAC.BROADCAST .EQ *
AARP.REQ .HS 090007FFFFFF S.ETH.DSTMAC AARP.REQ .HS 090007FFFFFF S.ETH.DSTMAC
AARP.REQ.SRCMAC .BS 6 AARP.REQ.SRCMAC .BS 6
.DA #0,#36 S.ETH.802.3.LENGTH .DA #0,#36 S.ETH.802.3.LENGTH
@ -133,6 +174,7 @@ AARP.REQ.SRCMAC .BS 6
.HS AA S.ETH.802.2.SRCSAP .HS AA S.ETH.802.2.SRCSAP
.HS 03 S.ETH.802.2.CTRL .HS 03 S.ETH.802.2.CTRL
.HS 00.00.00.80.F3 S.ETH.SNAP.PROTO .HS 00.00.00.80.F3 S.ETH.SNAP.PROTO
*--------------------------------------
.HS 00.01.80.9B.06.04 .HS 00.01.80.9B.06.04
.HS 0001 Request .HS 0001 Request
AARP.REQ.SHA .BS 6 AARP.REQ.SHA .BS 6
@ -150,6 +192,7 @@ AARP.REP.SRCMAC .BS 6
.HS AA S.ETH.802.2.SRCSAP .HS AA S.ETH.802.2.SRCSAP
.HS 03 S.ETH.802.2.CTRL .HS 03 S.ETH.802.2.CTRL
.HS 00.00.00.80.F3 S.ETH.SNAP.PROTO .HS 00.00.00.80.F3 S.ETH.SNAP.PROTO
*--------------------------------------
.HS 00.01.80.9B.06.04 .HS 00.01.80.9B.06.04
.HS 0002 Response .HS 0002 Response
AARP.REP.SHA .BS 6 AARP.REP.SHA .BS 6
@ -159,9 +202,27 @@ AARP.REP.TPA .BS 4
.BS AARP.REP+60-* .BS AARP.REP+60-*
AARP.REP.LEN .EQ 60 AARP.REP.LEN .EQ 60
*-------------------------------------- *--------------------------------------
DDP.LLC .HS AA
.HS AA
.HS 03
.HS 08.00.07
.HS 80.9B
DDP.LLC.L .EQ *-DDP.LLC
*--------------------------------------
NBP.ID .BS 1
*--------------------------------------
ETLK.Q.Tail .BS 1
ETLK.Q.Head .BS 1
ETLK.Q.hMem .BS ETLK.Q.SIZE
ETLK.Q.State .BS ETLK.Q.SIZE
ETLK.Q.Retry .BS ETLK.Q.SIZE
ETLK.Q.LenL .BS ETLK.Q.SIZE
ETLK.Q.LenH .BS ETLK.Q.SIZE
*--------------------------------------
RefCount .BS 1 RefCount .BS 1
IOCTL .BS S.IOCTL IOCTL .BS S.IOCTL
hFrameIn .BS 1 hFrameIn .BS 1
hFrameOut .BS 1
ETKCFG .BS S.ETKCFG ETKCFG .BS S.ETKCFG
AARP.CACHE .BS K.AARPCACHE.SIZE*S.AARPCACHE AARP.CACHE .BS K.AARPCACHE.SIZE*S.AARPCACHE
AARP.TmpCache .BS S.AARPCACHE AARP.TmpCache .BS S.AARPCACHE

View File

@ -3,7 +3,7 @@ NEW
*/-------------------------------------- */--------------------------------------
* # ARP.Clear * # ARP.Clear
* Clear ARP Cache * Clear ARP Cache
* **In:** * ## ASM
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
ARP.Clear jsr ARP.GetCache ARP.Clear jsr ARP.GetCache
@ -21,7 +21,7 @@ ARP.Clear.I lda #0
*/-------------------------------------- */--------------------------------------
* # ARP.Query * # ARP.Query
* Query ARP Cache and returns HW address * Query ARP Cache and returns HW address
* **In:** * ## ASM
* PUSHW PTR to MAC (to fill) * PUSHW PTR to MAC (to fill)
* PUSHW PTR to IP * PUSHW PTR to IP
* ## RETURN VALUE * ## RETURN VALUE
@ -47,7 +47,7 @@ ARP.Query jsr ARP.GetIP
*/-------------------------------------- */--------------------------------------
* # ARP.Add * # ARP.Add
* Add a static ARP cache record * Add a static ARP cache record
* **In:** * ## ASM
* PUSHW PTR to MAC * PUSHW PTR to MAC
* PUSHW PTR to IP * PUSHW PTR to IP
*\-------------------------------------- *\--------------------------------------
@ -86,7 +86,7 @@ ARP.ADD.I sta ARP.TmpCache
*/-------------------------------------- */--------------------------------------
* # ARP.GetCache * # ARP.GetCache
* Return a Ptr to ARP Cache Table * Return a Ptr to ARP Cache Table
* **In:** * ## ASM
* ## RETURN VALUE * ## RETURN VALUE
* Y,A = PTR to ARP.CACHE * Y,A = PTR to ARP.CACHE
*\-------------------------------------- *\--------------------------------------

View File

@ -3,7 +3,7 @@ NEW
*/-------------------------------------- */--------------------------------------
* # DNS.Clear * # DNS.Clear
* Clear DNS Cache * Clear DNS Cache
* **In:** * ## ASM
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
DNS.Clear ldx #K.DNSCACHE.SIZE*S.DNSCACHE DNS.Clear ldx #K.DNSCACHE.SIZE*S.DNSCACHE
@ -17,7 +17,7 @@ DNS.Clear ldx #K.DNSCACHE.SIZE*S.DNSCACHE
*/-------------------------------------- */--------------------------------------
* # DNS.Query * # DNS.Query
* Query DNS for specified host * Query DNS for specified host
* **In:** * ## ASM
* PUSHW = PTR to IP to fill with cached data * PUSHW = PTR to IP to fill with cached data
* PUSHW = hostname PTR to PSTR * PUSHW = hostname PTR to PSTR
* ## RETURN VALUE * ## RETURN VALUE
@ -186,7 +186,7 @@ DNS.CSTR2DNS lda (ZPPtrDNS)
*/-------------------------------------- */--------------------------------------
* # DNS.Add * # DNS.Add
* Add a static DNS record * Add a static DNS record
* **In:** * ## ASM
* PUSHW = PTR to IP * PUSHW = PTR to IP
* PUSHW = hostname CSTR to Add * PUSHW = hostname CSTR to Add
*\-------------------------------------- *\--------------------------------------
@ -238,7 +238,7 @@ DNS.ADD.I sta DNS.TmpCache
*/-------------------------------------- */--------------------------------------
* # DNS.GetCAche * # DNS.GetCAche
* Return a Ptr to DNS Cache Table * Return a Ptr to DNS Cache Table
* **In:** * ## ASM
* ## RETURN VALUE * ## RETURN VALUE
* Y,A = PTR to DNS.CACHE * Y,A = PTR to DNS.CACHE
*\-------------------------------------- *\--------------------------------------

View File

@ -6,7 +6,6 @@ NEW
* ## C * ## C
* `hFD socket(short int type, short int protocol);` * `hFD socket(short int type, short int protocol);`
* ## ASM * ## ASM
* **In:**
* `>PUSHB type` * `>PUSHB type`
* `>PUSHB protocol` * `>PUSHB protocol`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.socket` * `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
@ -76,14 +75,14 @@ SKT.Socket.RTS rts
SKT.Socket.FindFree SKT.Socket.FindFree
sty TmpDWord Y = socket.size sty TmpDWord Y = socket.size
ldx #0 ldx #1
.1 lda SKT.TABLE,x .1 lda FDs.pHI-1,x
beq .2 beq .2
inx inx
cpx #K.SKTTABLE.SIZE cpx #K.FD.MAX+1
bne .1 bcc .1
lda #E.OOH lda #E.OOH
* sec * sec
@ -97,10 +96,10 @@ SKT.Socket.FindFree
>STYA ZPTmpPtr1 >STYA ZPTmpPtr1
txa .8 ldx #$FF SELF MODIFIED
sta FDs.pHI-1,x
.8 ldy #$FF SELF MODIFIED tya
sta SKT.TABLE,y sta FDs.pLO-1,x
* clc * clc
rts rts
@ -110,7 +109,6 @@ SKT.Socket.FindFree
* ## C * ## C
* `int bind(hFD fd, const struct sockaddr *addr);` * `int bind(hFD fd, const struct sockaddr *addr);`
* ## ASM * ## ASM
* **In:**
* `>PUSHB fd` * `>PUSHB fd`
* `>PUSHW addr` * `>PUSHW addr`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.socket` * `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
@ -130,15 +128,21 @@ SKT.bind jsr SKT.PullLocAddr
sta SKT.LOC.ADDR+S.SOCKADDR.PORT sta SKT.LOC.ADDR+S.SOCKADDR.PORT
stx SKT.LOC.ADDR+S.SOCKADDR.PORT+1 stx SKT.LOC.ADDR+S.SOCKADDR.PORT+1
.1 ldx #0 .1 ldx #1
.2 lda SKT.TABLE,x .2 lda FDs.pHI-1,x
beq .7 beq .7
phx sta ZPTmpPtr1+1
>SYSCALL2 GetMemPtr lda FDs.pLO-1,x
>STYA ZPTmpPtr1 sta ZPTmpPtr1
plx
lda (ZPTmpPtr1)
cmp #S.FD.T.DSOCK
beq .4
cmp #S.FD.T.SSOCK
bne .7
ldy #S.SOCKET.AF ldy #S.SOCKET.AF
lda (ZPTmpPtr1),y lda (ZPTmpPtr1),y
@ -147,19 +151,20 @@ SKT.bind jsr SKT.PullLocAddr
ldy #S.SOCKET.LOC.ADDR ldy #S.SOCKET.LOC.ADDR
.3 lda (ZPTmpPtr1),y .4 lda (ZPTmpPtr1),y
cmp SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y cmp SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
bne .7 bne .7
iny iny
cpy #S.SOCKET.LOC.PORT+2 cpy #S.SOCKET.LOC.PORT+2
bne .3 bne .4
lda #ERR.SKT.BUSY lda #ERR.SKT.BUSY
* sec * sec
rts rts
.7 inx .7 inx
cpx #K.SKTTABLE.SIZE cpx #K.FD.MAX+1
bne .2 bne .2
jmp SKT.SetLocAddr jmp SKT.SetLocAddr
@ -169,7 +174,6 @@ SKT.bind jsr SKT.PullLocAddr
* ## C * ## C
* `int connect(hFD fd, const struct sockaddr *addr);` * `int connect(hFD fd, const struct sockaddr *addr);`
* ## ASM * ## ASM
* **In:**
* `>PUSHB fd` * `>PUSHB fd`
* `>PUSHW addr` * `>PUSHW addr`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.socket` * `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
@ -232,7 +236,6 @@ SKT.connect.SEQPKT
* ## C * ## C
* `int listen(hFD fd);` * `int listen(hFD fd);`
* ## ASM * ## ASM
* **In:**
* `lda fd` * `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.listen` * `>LIBCALL hLIBTCPIP,LIBTCPIP.listen`
* ## RETURN VALUE * ## RETURN VALUE
@ -268,7 +271,6 @@ SKT.listen.RTS rts
* ## C * ## C
* `hFD Accept(hFD fd);` * `hFD Accept(hFD fd);`
* ## ASM * ## ASM
* **In:**
* `lda fd` * `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.accept` * `>LIBCALL hLIBTCPIP,LIBTCPIP.accept`
* ## RETURN VALUE * ## RETURN VALUE
@ -313,7 +315,6 @@ SKT.GetFromQueue
* ## C * ## C
* `int shutdown(int fd);` * `int shutdown(int fd);`
* ## ASM * ## ASM
* **In:**
* `lda fd` * `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.shutdown` * `>LIBCALL hLIBTCPIP,LIBTCPIP.shutdown`
* ## RETURN VALUE * ## RETURN VALUE
@ -331,7 +332,15 @@ SKT.shutdown pha
cmp #S.SOCKET.T.SEQPKT cmp #S.SOCKET.T.SEQPKT
bcc SKT.shutdown.HQ bcc SKT.shutdown.HQ
ldy #S.SOCKET.TCP.S bne .15
.11 jsr SKT.GetFromQueue
bcs .15
>SYSCALL2 FreeMem
bcc .11
.15 ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.CLWAIT cmp #S.SOCKET.TCP.S.CLWAIT
bne .10 bne .10
@ -347,10 +356,11 @@ SKT.shutdown pha
jsr SKT.GetTCB jsr SKT.GetTCB
ldy #S.SOCKET.TCP.S ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.ESTBLSH cmp #S.SOCKET.TCP.S.ESTBLSH
bne .1 bne .1
jsr SKT.OUT.SendFINACK jsr TCP.OUT.SendFINACK
lda #S.SOCKET.TCP.S.FINWT1 lda #S.SOCKET.TCP.S.FINWT1
jmp SKT.StoreTCB.S jmp SKT.StoreTCB.S
@ -358,7 +368,7 @@ SKT.shutdown pha
.1 cmp #S.SOCKET.TCP.S.FINWT2 .1 cmp #S.SOCKET.TCP.S.FINWT2
bne .2 bne .2
jsr SKT.OUT.SendFINACK jsr TCP.OUT.SendFINACK
lda #S.SOCKET.TCP.S.LASTACK lda #S.SOCKET.TCP.S.LASTACK
jmp SKT.StoreTCB.S jmp SKT.StoreTCB.S
@ -370,32 +380,25 @@ SKT.shutdown pha
jmp SKT.StoreTCB.S jmp SKT.StoreTCB.S
*-------------------------------------- *--------------------------------------
SKT.shutdown.HQ jsr SKT.GetFromQueue SKT.shutdown.HQ jsr SKT.GetFromQueue
bcs .3 bcs .1
>SYSCALL2 FreeMem >SYSCALL2 FreeMem
bra SKT.shutdown.HQ bra SKT.shutdown.HQ
.3 pla get hFD... .1 pla get hFD...
*--------------------------------------
ldx #0 SKT.FreeFD tax
lda FDs.pHI-1,x
.4 cmp SKT.TABLE,x stz FDs.pHI-1,x
beq .5 ldy FDs.pLO-1,x
>SYSCALL2 Free
inx
cpx #K.SKTTABLE.SIZE
bne .4
.5 stz SKT.TABLE,x
>SYSCALL2 freemem
* clc
rts rts
*/-------------------------------------- */--------------------------------------
* # Read (STREAM) * # Read (STREAM)
* ## C * ## C
* `int skt.read(hFD fd, void *buf, int count);` * `int skt.read(hFD fd, void *buf, int count);`
* ## ASM * ## ASM
* **In:**
* `>PUSHB fd` * `>PUSHB fd`
* `>PUSHW buf` * `>PUSHW buf`
* `>PUSHW count` * `>PUSHW count`
@ -615,7 +618,6 @@ SKT.AddDataToSktIn
* ## C * ## C
* `int skt.write(hFD fd, const void *buf, int count);` * `int skt.write(hFD fd, const void *buf, int count);`
* ## ASM * ## ASM
* **In:**
* `>PUSHB fd` * `>PUSHB fd`
* `>PUSHW buf` * `>PUSHW buf`
* `>PUSHW count` * `>PUSHW count`
@ -833,7 +835,6 @@ SKT.GetDataFromSktOut
* ## C * ## C
* `hMem recvfrom(hFD fd, struct sockaddr *addr);` * `hMem recvfrom(hFD fd, struct sockaddr *addr);`
* ## ASM * ## ASM
* **In:**
* `>PUSHB fd` * `>PUSHB fd`
* `>PUSHW addr` (RecvFrom) * `>PUSHW addr` (RecvFrom)
* `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv` * `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
@ -850,7 +851,6 @@ SKT.RecvFrom >PULLW ZPTmpPtr1 addr
* ## C * ## C
* `hMem recv(hFD fd);` * `hMem recv(hFD fd);`
* ## ASM * ## ASM
* **In:**
* `lda fd` * `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv` * `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
* ## RETURN VALUE * ## RETURN VALUE
@ -963,7 +963,6 @@ SKT.Recv clc
* ## C * ## C
* `int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);` * `int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);`
* ## ASM * ## ASM
* **In:**
* `>PUSHB fd` * `>PUSHB fd`
* `>PUSHW buf` * `>PUSHW buf`
* `>PUSHWI count` * `>PUSHWI count`
@ -979,7 +978,6 @@ SKT.SendTo jsr SKT.PullRemAddr
* ## C * ## C
* `int skt.send(hFD fd, const void *buf, int count);` * `int skt.send(hFD fd, const void *buf, int count);`
* ## ASM * ## ASM
* **In:**
* `>PUSHB fd` * `>PUSHB fd`
* `>PUSHW buf` * `>PUSHW buf`
* `>PUSHWI count` * `>PUSHWI count`
@ -1040,7 +1038,6 @@ SKT.Send.9 rts
* ## C * ## C
* `int getsockopt(hFD fd);` * `int getsockopt(hFD fd);`
* ## ASM * ## ASM
* **In:**
* `lda fd` * `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.GetSockOpt` * `>LIBCALL hLIBTCPIP,LIBTCPIP.GetSockOpt`
* ## RETURN VALUE * ## RETURN VALUE
@ -1056,7 +1053,6 @@ SKT.getsockopt jsr SKT.GetFD
* ## C * ## C
* `int setsockopt(hFD fd, short int opts);` * `int setsockopt(hFD fd, short int opts);`
* ## ASM * ## ASM
* **In:**
* `>PUSHB fd` * `>PUSHB fd`
* `>PUSHB opts` * `>PUSHB opts`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt` * `>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt`
@ -1078,7 +1074,6 @@ SKT.setsockopt >PULLA
* ## C * ## C
* `int eof(hFD fd);` * `int eof(hFD fd);`
* ## ASM * ## ASM
* **In:**
* `lda fd` * `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.EOF` * `>LIBCALL hLIBTCPIP,LIBTCPIP.EOF`
* ## RETURN VALUE * ## RETURN VALUE
@ -1138,19 +1133,6 @@ SKT.CheckTCP ldy #S.SOCKET.O
SKT.BAD lda #ERR.SKT.BAD SKT.BAD lda #ERR.SKT.BAD
sec sec
rts rts
*/--------------------------------------
* # GetTable
* Get socket table
* ## C
* `void * gettable();`
* ## ASM
* **In:**
* `>LIBCALL hLIBTCPIP,LIBTCPIP.GetTable`
* ## RETURN VALUE
*\--------------------------------------
SKT.GetTable >LDYA L.SKT.Table
clc
rts
*-------------------------------------- *--------------------------------------
SKT.PullhFDDataInPtrLen SKT.PullhFDDataInPtrLen
>PULLW ZPDataInLen !!!use DataInPtr/Len >PULLW ZPDataInLen !!!use DataInPtr/Len
@ -1158,7 +1140,10 @@ SKT.PullhFDDataInPtrLen
SKT.PullhFD >PULLA SKT.PullhFD >PULLA
SKT.GetFD >SYSCALL2 GetMemPtr SKT.GetFD tax
lda FDs.pHI-1,x
ldy FDs.pLO-1,x
>STYA ZPPtrSKT >STYA ZPPtrSKT
rts rts
*-------------------------------------- *--------------------------------------
@ -1206,14 +1191,14 @@ SKT.SetRemAddr ldy #S.SOCKET.REM.PORT+1
* SKT.LOC.ADDR = Incoming Frame DST * SKT.LOC.ADDR = Incoming Frame DST
*-------------------------------------- *--------------------------------------
SKT.FindMatchingLocRem SKT.FindMatchingLocRem
ldx #0 ldx #1
.1 lda SKT.TABLE,x .1 lda FDs.pHI-1,x
beq .8 beq .8
phx ldy FDs.pLO-1,x
jsr SKT.GetFD
plx >STYA ZPPtrSKT
ldy #S.SOCKET.AF ldy #S.SOCKET.AF
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
@ -1282,12 +1267,12 @@ SKT.FindMatchingLocRem
cpy #S.SOCKET.REM.PORT+2 cpy #S.SOCKET.REM.PORT+2
bne .42 bne .42
.7 clc x = SKT.TABLE index .7 clc x = hFD
rts rts
.8 inx .8 inx
cpx #K.SKTTABLE.SIZE cpx #K.FD.MAX+1
bne .1 bcc .1
* sec * sec
rts rts

View File

@ -240,7 +240,7 @@ TCP.IN.JMP.ESTBLSH
jsr TCP.IN.ACKTheFIN jsr TCP.IN.ACKTheFIN
jsr SKT.OUT.SendFINACK jsr TCP.OUT.SendFINACK
lda #S.SOCKET.TCP.S.LASTACK lda #S.SOCKET.TCP.S.LASTACK
jmp SKT.StoreTCB.S jmp SKT.StoreTCB.S
@ -386,13 +386,14 @@ TCP.IN.SetDataInPtrAndLen
stx ZPDataInPtr+1 stx ZPDataInPtr+1
TCP.IN.RTS rts TCP.IN.RTS rts
*-------------------------------------- *--------------------------------------
TCP.SENDCLOSE ldx #0 TCP.SENDCLOSE ldx #1
.1 phx .1 phx
lda SKT.TABLE,x lda FDs.pHI-1,x
beq .8 beq .8
jsr SKT.GetFD ldy FDs.pLO-1,x
>STYA ZPPtrSKT
ldy #S.SOCKET.AF ldy #S.SOCKET.AF
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
@ -456,18 +457,16 @@ TCP.SENDCLOSE ldx #0
ldy #S.SOCKET.SQ.hOutMem ldy #S.SOCKET.SQ.hOutMem
jsr TCP.SENDCLOSE.PIPE jsr TCP.SENDCLOSE.PIPE
.7 plx .7 pla
phx pha
lda SKT.TABLE,x jsr SKT.FreeFD
stz SKT.TABLE,x
>SYSCALL2 freemem
.8 plx .8 plx
inx inx
cpx #K.SKTTABLE.SIZE cpx #K.FD.MAX+1
bne .1 bcc .1
clc clc
rts rts
@ -531,7 +530,7 @@ TCP.OUT.SEQSEND ldy #S.TCP.WINDOW
jmp SKT.StoreTCB exits with CC jmp SKT.StoreTCB exits with CC
*-------------------------------------- *--------------------------------------
SKT.OUT.SendFINACK TCP.OUT.SendFINACK
lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA Send FIN/ACK jsr TCP.OUT.SendOptA Send FIN/ACK
bcs .9 bcs .9
@ -569,8 +568,8 @@ TCP.OUT.SendOpt >LDYAI 0
ldy #S.SOCKET.TCP.O ldy #S.SOCKET.TCP.O
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
sec DONT Queue if fail * sec DONT Queue if fail
.HS 90 BCC * .HS 90 BCC
TCP.OUT.Send clc Queue if fail TCP.OUT.Send clc Queue if fail

View File

@ -32,6 +32,7 @@ AUXPIPE .EQ 1
.INB inc/io.i .INB inc/io.i
.FIN .FIN
.INB inc/a2osx.i .INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.e.i .INB inc/mli.e.i
.INB inc/nic.i .INB inc/nic.i
.INB inc/eth.i .INB inc/eth.i
@ -115,7 +116,6 @@ CS.START cld
.DA SKT.setsockopt .DA SKT.setsockopt
.DA SKT.EOF .DA SKT.EOF
.DA SKT.GetTable
*-------------------------------------- *--------------------------------------
L.IPCFG .DA IPCFG L.IPCFG .DA IPCFG
L.ARP.REQ .DA ARP.REQ L.ARP.REQ .DA ARP.REQ
@ -124,7 +124,6 @@ L.SA.LOCAL .DA SA.LOCAL
L.SA.REMOTE .DA SA.REMOTE L.SA.REMOTE .DA SA.REMOTE
L.DNS.MSG .DA DNS.MSG L.DNS.MSG .DA DNS.MSG
L.DNS.CACHE .DA DNS.CACHE L.DNS.CACHE .DA DNS.CACHE
L.SKT.Table .DA SKT.Table
L.HST.SScanF .DA HST.SScanF L.HST.SScanF .DA HST.SScanF
L.IOCTL .DA IOCTL L.IOCTL .DA IOCTL
L.DCB.NIC .DA DCB.NIC L.DCB.NIC .DA DCB.NIC
@ -391,7 +390,6 @@ hDNSSocket .BS 1
DNS.TmpCache .BS S.DNSCACHE DNS.TmpCache .BS S.DNSCACHE
ARP.TmpCache .BS S.ARPCACHE ARP.TmpCache .BS S.ARPCACHE
*-------------------------------------- *--------------------------------------
SKT.TABLE .BS K.SKTTABLE.SIZE
SKT.LOC.ADDR .BS S.SOCKADDR SKT.LOC.ADDR .BS S.SOCKADDR
SKT.REM.ADDR .BS S.SOCKADDR SKT.REM.ADDR .BS S.SOCKADDR
SKT.Cache .EQ *-S.SOCKET.TCP.INTAIL SKT.Cache .EQ *-S.SOCKET.TCP.INTAIL

View File

@ -91,33 +91,55 @@ IO.R.SetAttr
*-------------------------------------- *--------------------------------------
IO.Q.ChMod IO.Q.ChMod
IO.R.ChMod IO.R.ChMod
*-------------------------------------- lda #MLI.E.BADCALL
IO.Q.FStat
*--------------------------------------
IO.R.FStat lda #MLI.E.BADCALL
sec sec
rts rts
*-------------------------------------- *--------------------------------------
IO.Q.FStat jsr IO.GetFD
jsr IO.Q.Stat1
jsr IO.WriteSocket
bcs .9
jmp IO.Sleep
.9 >POP 3
jmp IO.Exit
*--------------------------------------
IO.R.FStat jsr IO.ReadSocket
bvs .99
bcs .98
jsr CORE.CheckSMBStatus
lda #MLI.E.INVPATH Return this for stat() match ProDOS Behavior
bcs .98
jsr CORE.GetRespDataPtr1
jsr IO.FileInfo2StatBuf
>PULLW ZPPtr2 Stat Buffer
jsr IO.StatBuf2Ptr2
inc pStack Pop hFILE
clc
jmp IO.Exit
.98 >POP 3
jmp IO.Exit
.99 jmp IO.SleepCont
*--------------------------------------
IO.Q.Stat >STYA pPath resolved path IO.Q.Stat >STYA pPath resolved path
jsr CORE.ReqT2SetupX jsr IO.Q.Stat1
ldx #0
.1 lda SMB.QueryPathInfo,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.QueryPathInfo.Len
bne .1
jsr CORE.ReqT2SetupPtr2
jsr CORE.AppendPathPtr2
jsr CORE.AddYReqLenPtr2
jsr CORE.SetT2ReqLen
jsr IO.WriteSocket jsr IO.WriteSocket
bcs .9 bcs .9
@ -143,11 +165,11 @@ IO.R.Stat jsr IO.ReadSocket
>PULLW ZPPtr2 Stat Buffer >PULLW ZPPtr2 Stat Buffer
inc pStack Skip Filename
inc pStack
jsr IO.StatBuf2Ptr2 jsr IO.StatBuf2Ptr2
inc pStack Pop Filename
inc pStack
clc clc
jmp IO.Exit jmp IO.Exit
@ -158,6 +180,25 @@ IO.R.Stat jsr IO.ReadSocket
.99 jmp IO.SleepCont .99 jmp IO.SleepCont
*-------------------------------------- *--------------------------------------
IO.Q.Stat1 jsr CORE.ReqT2SetupX
ldx #0
.1 lda SMB.QueryPathInfo,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.QueryPathInfo.Len
bne .1
jsr CORE.ReqT2SetupPtr2
jsr CORE.AppendPathPtr2
jsr CORE.AddYReqLenPtr2
jmp CORE.SetT2ReqLen
*--------------------------------------
IO.Q.MKDir >STYA pPath resolved path IO.Q.MKDir >STYA pPath resolved path
jsr CORE.ReqT2SetupX jsr CORE.ReqT2SetupX
@ -203,7 +244,7 @@ IO.R.MKDir jsr IO.ReadSocket
.99 jmp IO.SleepCont .99 jmp IO.SleepCont
*-------------------------------------- *--------------------------------------
IO.Q.OpenDir >STYA pPath resolved path IO.Q.OpenDir >STYA pPath resolved path
>SYSCALL PutS
jsr IO.NewFD jsr IO.NewFD
bcs .98 bcs .98
@ -218,10 +259,7 @@ IO.Q.OpenDir >STYA pPath resolved path
iny iny
sta (pFD),y sta (pFD),y
>PUSHW pPath jsr IO.NewFILE
>PUSHWZ
>PUSHB hFD
>SYSCALL2 mknod
bcc .98 bcc .98
pha pha
@ -665,28 +703,11 @@ IO.R.ReadDir.Type
rts rts
*-------------------------------------- *--------------------------------------
IO.Q.CloseDir jsr IO.FreeFILE
*--------------------------------------
IO.Q.CloseReg
IO.Q.CloseDir tax
lda hFDs.hName-1,x
beq .1
phx
stz hFDs.hName-1,x
>SYSCALL2 FreeMem
plx
.1 lda hFDs-1,x
stz hFDs-1,x
>SYSCALL2 FreeMem
* clc * clc
jmp IO.Exit .8 jmp IO.Exit
*-------------------------------------- *--------------------------------------
* IO.R.CloseDir * IO.R.CloseDir
*-------------------------------------- *--------------------------------------
@ -800,13 +821,12 @@ IO.R.FOpen jsr IO.ReadSocket
ldy #4 path ldy #4 path
lda (pStack),y lda (pStack),y
>PUSHA sta pPath
iny
lda (pStack),y lda (pStack),y
>PUSHA sta pPath+1
>PUSHWZ mod jsr IO.NewFILE
>PUSHB hFD
>SYSCALL2 mknod
bcc .98 bcc .98
pha pha
@ -912,8 +932,7 @@ IO.R.FClose sta hFILE
jsr CORE.CheckSMBStatus jsr CORE.CheckSMBStatus
bcs .98 bcs .98
lda hFILE jsr IO.FreeFILE
jsr IO.Q.CloseReg
clc clc
@ -1372,67 +1391,6 @@ IO.R.Rename jsr IO.ReadSocket
.99 jmp IO.SleepCont .99 jmp IO.SleepCont
*-------------------------------------- *--------------------------------------
IO.NewFD ldx #1
.1 lda hFDs-1,x
beq .2
inx
cpx #K.hFD.MAX+1
bne .1
lda #E.OOH
* sec
rts
.2 stx hFILE
>LDYAI 16 S.FD.REG = S.FD.DIR = 16
>SYSCALL2 GetMem
bcs .9
>STYA pFD
stx hFD
txa
ldx hFILE
sta hFDs-1,x
stz hFDs.hName-1,x
lda hHandler
ldy #S.FD.PFT
sta (pFD),y
* clc
.9 rts
*--------------------------------------
IO.GetFD sta hFILE
tax
phx
lda hFDs.hName-1,x
>SYSCALL2 GetMemPtr
>STYA pPath
plx
lda hFDs-1,x
>SYSCALL2 GetMemPtr
>STYA pFD
rts
*--------------------------------------
IO.FreeFD pha
lda hFD
>SYSCALL2 FreeMem
ldx hFILE
stz hFDs-1,x
pla
rts
*--------------------------------------
IO.RWGetFidOfs ldx #6 IO.RWGetFidOfs ldx #6
ldy #S.FD.REG.REF ldy #S.FD.REG.REF
@ -1717,6 +1675,96 @@ IO.IsDigit cmp #'0'
.9 sec .9 sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
IO.NewFD ldx #1
.1 lda FDs.pHI-1,x
beq .2
inx
cpx #K.FD.MAX+1
bcc .1
lda #E.OOH
* sec
rts
.2 stx hFD
>LDYAI S.FD.REG S.FD.DIR = 16
>SYSCALL2 GetMem
bcs .9
>STYA pFD
ldx hFD
sta FDs.pHI-1,x
tya
sta FDs.pLO-1,x
lda hHandler
ldy #S.FD.PFT
sta (pFD),y
* clc
.9 rts
*--------------------------------------
IO.GetFD sta hFILE
tay
ldx FILEs.hFD-1,y
stx hFD
lda FDs.pLO-1,x
sta pFD
lda FDs.pHI-1,x
sta pFD+1
lda FILEs.hName-1,y
>SYSCALL2 GetMemPtr
>STYA pPath
rts
*--------------------------------------
IO.NewFILE >PUSHW pPath
>PUSHWZ
>PUSHB hFD
>SYSCALL2 mknod
bcs .9
tax
inc FILEs.oCnt-1,x
* clc
.9 rts
*--------------------------------------
IO.FreeFILE ldx hFILE
lda FILEs.hFD-1,x
sta hFD
stz FILEs.hFD-1,x
lda FILEs.hName-1,x
beq IO.FreeFD
stz FILEs.hName-1,x
>SYSCALL2 FreeMem
*--------------------------------------
IO.FreeFD ldx hFD
lda FDs.pHI-1,x
beq .8
stz FDs.pHI-1,x
ldy FDs.pLO-1,x
>SYSCALL2 Free
.8 clc
rts
*--------------------------------------
MAN MAN
SAVE usr/src/sbin/cifsd.s.io SAVE usr/src/sbin/cifsd.s.io
LOAD usr/src/sbin/cifsd.s LOAD usr/src/sbin/cifsd.s

View File

@ -108,8 +108,8 @@ CS.RUN ldy #S.PS.ARGC
>PUSHYA >PUSHYA
>PUSHBI O.RDWR >PUSHBI O.RDWR
>PUSHBI 0 type >PUSHBI 0 type
>PUSHWZ auxtype >PUSHA auxtype
>PUSHA
>SYSCALL FOpen >SYSCALL FOpen
bcs .99 bcs .99

View File

@ -151,7 +151,7 @@ CS.RUN.EXEC >PUSHEA.G Username
ldx #1 ldx #1
.1 lda S.Table.hSID-1,x .1 lda USRs.hSID-1,x
beq .2 beq .2
inx inx
@ -171,11 +171,11 @@ CS.RUN.EXEC >PUSHEA.G Username
sta (pPS),y sta (pPS),y
lda ZPNewSID lda ZPNewSID
sta S.Table.hSID-1,x sta USRs.hSID-1,x
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
sta S.Table.hFile-1,x sta USRs.hFile-1,x
jsr CS.RUN.EXECPS jsr CS.RUN.EXECPS
@ -186,8 +186,8 @@ CS.RUN.EXEC >PUSHEA.G Username
stz ZPNewSID stz ZPNewSID
.8 ldx ZPNewSession .8 ldx ZPNewSession
stz S.Table.hSID-1,x stz USRs.hSID-1,x
stz S.Table.hFile-1,x stz USRs.hFile-1,x
ldy #S.PS.hSession ldy #S.PS.hSession
lda ZPOldSession lda ZPOldSession

View File

@ -7,6 +7,7 @@ NEW
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/eth.i .INB inc/eth.i
.INB inc/libtcpip.i .INB inc/libtcpip.i
.INB inc/net.telnet.i .INB inc/net.telnet.i
@ -92,7 +93,9 @@ CS.RUN lda #TIMEOUT.MAX
cmp #$03 cmp #$03
bne .1 bne .1
* sec * sec
rts rts
.99 pha .99 pha
@ -114,6 +117,7 @@ CS.RUN.INIT ldx #3
lda #1 lda #1
>SYSCALL ArgV >SYSCALL ArgV
bcs CS.RUN.PORTOK bcs CS.RUN.PORTOK
>SYSCALL AToI >SYSCALL AToI
>STYA SA.LOCAL+S.SOCKADDR.PORT >STYA SA.LOCAL+S.SOCKADDR.PORT
@ -147,6 +151,7 @@ CS.RUN.PORTOK >PUSHBI S.SOCKET.T.STREAM
pla pla
bcc .2 bcc .2
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
bra .2 bra .2
@ -160,7 +165,10 @@ CS.RUN.PORTOK >PUSHBI S.SOCKET.T.STREAM
CS.RUN.CLIENT >SLEEP give some time for TCPIP SYN/ACK CS.RUN.CLIENT >SLEEP give some time for TCPIP SYN/ACK
sta hClientSocket sta hClientSocket
>SYSCALL GetMemPtr tax
lda FDs.pHI-1,x
ldy FDs.pLO-1,x
>STYA ZPSktPtr >STYA ZPSktPtr
>PUSHW L.MSG.INCOMING >PUSHW L.MSG.INCOMING
@ -184,8 +192,8 @@ CS.RUN.CLIENT >SLEEP give some time for TCPIP SYN/ACK
>PUSHBI 1 >PUSHBI 1
>SYSCALL SPrintF >SYSCALL SPrintF
CS.RUN.CLIENT1 >PUSHEA.G NodBuf+5 CS.RUN.CLIENT1 >PUSHEA.G NodBuf
>PUSHW 0 >PUSHWZ
>PUSHB hClientSocket >PUSHB hClientSocket
>SYSCALL MKNod >SYSCALL MKNod
bcs .9 bcs .9
@ -204,9 +212,12 @@ CS.RUN.CLIENT1 >PUSHEA.G NodBuf+5
*-------------------------------------- *--------------------------------------
CS.DOEVENT lda (pEvent) CS.DOEVENT lda (pEvent)
bpl .9 is it a TIMER event? bpl .9 is it a TIMER event?
lda TimeOut lda TimeOut
beq .9 beq .9
dec TimeOut dec TimeOut
.9 sec do not discard TIMER event .9 sec do not discard TIMER event
rts rts
*-------------------------------------- *--------------------------------------
@ -233,7 +244,7 @@ MSG.TCPIPERR .AZ "TELNETD:TCP/IP Not initialized properly."
MSG.SKTERR .AZ "TELNETD:Listen Error." MSG.SKTERR .AZ "TELNETD:Listen Error."
MSG.INCOMING .CZ "TELNETD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n" MSG.INCOMING .CZ "TELNETD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n"
*-------------------------------------- *--------------------------------------
NOD.Template .AZ "/dev/tty%h" NOD.Template .AZ "/tmp/tty%h"
CMD.Template .AZ "${ROOT}sbin/getty -E %s ${ROOT}sbin/login" CMD.Template .AZ "${ROOT}sbin/getty -E %s ${ROOT}sbin/login"
*-------------------------------------- *--------------------------------------
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF SA.LOCAL .DA #AF.INET S.SOCKADDR.AF

611
SHARED/X.UDETH.DRV.S.txt Normal file
View File

@ -0,0 +1,611 @@
NEW
AUTO 3,1
.OP 65C02
.OR $2000
*--------------------------------------
.DO UDETHDMA=1
.TF drv/udeth.d.drv
.ELSE
.TF drv/udeth.drv
.FIN
*--------------------------------------
UD.ROM.SignOfs .EQ $EC "UltimateDrive"
UD.ROM.VerOfs .EQ $F9 MAX/MIN
UD.IO.Exec .EQ $C080 Write
UD.IO.Status .EQ $C081 Read
UD.IO.Cmd .EQ $C082 Write
UD.IO.Cmd.NetOpen .EQ $70
UD.IO.Cmd.NetClose .EQ $71
UD.IO.Cmd.NetSend .EQ $72
UD.IO.Cmd.NetRcvd .EQ $73
UD.IO.Cmd.NetPeek .EQ $74
UD.IO.Cmd.NetStatus .EQ $75
UD.IO.Cmd.NetSDMA .EQ $76 Send Frame Via DMA
UD.IO.Cmd.NetRDMA .EQ $77 Read Frame via DMA
UD.IO.UnitNum .EQ $C083 Write
UD.IO.MemPtrL .EQ $C084
UD.IO.MemPtrH .EQ $C085
UD.IO.BlockNum .EQ $C086 Write 4 bytes, BE
UD.IO.RData .EQ $C087 Read
UD.IO.WData .EQ $C088 Write
UD.IO.DoDMA .EQ $C089 Write
UD.IO.Mode .EQ $C08D Read NZ = DMA, Write b7
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2
ZPArgPtr .BS 2
DEVSLOT0x .BS 1
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp Dev.Detect cld,jmp abs=DRV
.DA #$61 6502,Level 1 (65c02)
.DA #1 DRV Layout Version 1
.DA 0
.DA CS.END-CS.START Code Length
.DA 0
.DA 0
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
L.MSG.DETECT .DA MSG.DETECT
L.MSG.DETECT.OK .DA MSG.DETECT.OK
L.MSG.DETECT.KO .DA MSG.DETECT.KO
L.DRV.CS.START .DA DRV.CS.START
L.FD.DEV .DA FD.DEV
L.FD.DEV.NAME .DA FD.DEV.NAME
L.SSCANF.MAC .DA SSCANF.MAC
L.MAC0 .DA DCB+S.DCB.NIC.MAC
.DA DCB+S.DCB.NIC.MAC+1
.DA DCB+S.DCB.NIC.MAC+2
.DA DCB+S.DCB.NIC.MAC+3
.DA DCB+S.DCB.NIC.MAC+4
.DA DCB+S.DCB.NIC.MAC+5
.DA 0 End Of Reloc Table
*--------------------------------------
Dev.Detect >STYA ZPArgPtr
>LDYA L.MSG.DETECT
>SYSCALL PutS
lda #UD.ROM.SignOfs
sta ZPPtr1
lda #$C7
.1 sta ZPPtr1+1
ldy #ROM.SIG.L-1
.10 lda (ZPPtr1),y
cmp ROM.SIG,y
bne .2
dey
bpl .10
lda ZPPtr1+1
and #$0F
sta DEVSLOT0x
asl
asl
asl
asl
sta DEVSLOTx0
bra .3
.2 dec FD.DEV.NAME+3
lda ZPPtr1+1
dec
cmp #$C0
bne .1
>LDYA L.MSG.DETECT.KO
>SYSCALL PutS
lda #MLI.E.NODEV
sec
.99 rts
*--------------------------------------
.3 ldy #UD.ROM.VerOfs
lda (ZPPtr1),y
sta DIB+S.DIB.VERSION+1
iny
lda (ZPPtr1),y
sta DIB+S.DIB.VERSION
jsr Dev.ParseArgs
bcs .99
.8 >PUSHW L.MSG.DETECT.OK
>PUSHW L.FD.DEV.NAME
>PUSHBI 2
>SYSCALL PrintF
>PUSHWI DRV.END
>PUSHWI DRV.CS.END-DRV.CS.START
>PUSHWI DRV.CS.START
>LDYA L.DRV.CS.START
>SYSCALL InsDrv
bcs .9
>STYA FD.DEV+S.FD.DEV.DRVPTR
>PUSHW L.FD.DEV
>PUSHW L.FD.DEV.NAME
>SYSCALL MKDev
bcs .9
ldx DEVSLOT0x
lda #A2osX.S.NIC
sta A2osX.S,x
* clc
.9 rts
*--------------------------------------
Dev.ParseArgs lda (ZPArgPtr)
bne .1
lda A2osX.RANDOM16
eor A2osX.TIMER16
sta DCB+S.DCB.NIC.MAC+3
eor A2osX.RANDOM16+1
sta DCB+S.DCB.NIC.MAC+4
eor A2osX.TIMER16+1
sta DCB+S.DCB.NIC.MAC+5
clc
rts
.1 >PUSHW ZPArgPtr
>PUSHW L.SSCANF.MAC
ldx #0
.2 >PUSHW L.MAC0,x
inx
inx
cpx #12
bne .2
>PUSHBI 12 6 x byte PTRs
>SYSCALL SScanF
bcc .8
lda #E.SYN
* sec
.8 rts
*--------------------------------------
CS.END
MSG.DETECT .CZ "Ultimate Drive ETH/W5500 Driver."
MSG.DETECT.OK .CZ "Ultimate Drive ETH/W5500 Installed As Device : %s\r\n"
MSG.DETECT.KO .CZ "Hardware Not Found."
SSCANF.MAC .CZ "%h:%h:%h:%h:%h:%h"
ROM.SIG .AS "UltimateDrive"
ROM.SIG.L .EQ *-ROM.SIG
*--------------------------------------
FD.DEV .DA #S.FD.T.CDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #0 DEVID
.DA 0 BUSPTR
.BS 2 DRVPTR
.DA 0 DCBPTR
.DA 0 BUFPTR
FD.DEV.NAME .AZ "eth7"
*--------------------------------------
* Driver Code
*--------------------------------------
* https://github.com/profdc9/ip65/blob/main/drivers/dan2d.s
*--------------------------------------
ZPIOCTL .EQ ZPDRV
ZPBufPtr .EQ ZPDRV+2
Counter .EQ ZPDRV+4
*--------------------------------------
DRV.CS.START cld
jmp (.1,x)
.1 .DA STATUS
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA OPEN
.DA CLOSE
.DA READ
.DA WRITE
.DA 0 end or relocation
*--------------------------------------
STATUS >STYA ZPIOCTL
jsr IO.GetStatus
bcs STATUS.99
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldx #S.DIB-1
.HS 2C bit abs
.1 ldx #3
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta .3+1
iny
lda (ZPIOCTL),y
sta .3+2
.2 lda DIB,x
.3 sta $ffff,x SELF MODIFIED
dex
bpl .2
clc
rts
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne STATUS.9
stz DCB+S.DCB.NIC.LINK
lda #S.DCB.NIC.LINK.OK
tsb DCB+S.DCB.NIC.LINK
lda #S.DCB.NIC.LINK.FD
tsb DCB+S.DCB.NIC.LINK
.1 ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta .3+1
iny
lda (ZPIOCTL),y
sta .3+2
ldx #S.DCB.NIC-1
.2 lda DCB,x
.3 sta $ffff,x SELF MODIFIED
dex
bpl .2
clc
rts
STATUS.9 lda #MLI.E.BADCTL
STATUS.99 sec
rts
*--------------------------------------
OPEN lda #S.DIB.S.OPENED
bit DIB+S.DIB.S
bne .9
jsr CLOSE
* ldx DEVSLOTx0 Done by CLOSE
lda #UD.IO.Cmd.NetOpen
jsr IO.ExecA
bcs .99
ldy #0
.1 lda UD.IO.RData,x
sta DCB+S.DCB.NIC.MAC,y
iny
cpy #6
bcc .1
lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S
clc
rts
.9 lda #MLI.E.OPEN
sec
.99 rts
*--------------------------------------
CLOSE ldx DEVSLOTx0
lda #UD.IO.Cmd.NetClose
jsr IO.ExecA
bcs .9
lda #S.DIB.S.OPENED
trb DIB+S.DIB.S
* clc
.9 rts
*--------------------------------------
READ php
sei
>STYA ZPIOCTL
ldx DEVSLOTx0
lda #UD.IO.Cmd.NetPeek
jsr IO.ExecA
bcs READWRITE.99
lda UD.IO.RData,x
sta Counter
lda UD.IO.RData,x
sta Counter+1
ora Counter
beq READWRITE.9
>LDYA Counter
>SYSCALL2 GetMem
bcs READWRITE.99
>STYA ZPBufPtr
stx .8+1
phy
ldy #S.IOCTL.BUFPTR+1
sta (ZPIOCTL),y
dey
pla
sta (ZPIOCTL),y
ldx DEVSLOTx0
.DO UDETHDMA=0
lda #UD.IO.Cmd.NetRcvd
jsr IO.ExecA
bcs READWRITE.99
lda Counter
ldy #S.IOCTL.BYTECNT
sta (ZPIOCTL),y
eor #$ff
sta Counter
lda Counter+1
iny
sta (ZPIOCTL),y
eor #$ff
sta Counter+1
ldy #0
.1 inc Counter
bne .2
inc Counter+1
beq .8
.2 lda UD.IO.RData,x
sta (ZPBufPtr),y
iny
bne .1
inc ZPBufPtr+1
bra .1
.ELSE
lda UD.IO.Status,x
lda Counter
ldy #S.IOCTL.BYTECNT
sta (ZPIOCTL),y
lda Counter+1
iny
sta (ZPIOCTL),y
lda ZPBufPtr
sta UD.IO.MemPtrL,x
lda ZPBufPtr+1
sta UD.IO.MemPtrH,x
lda #UD.IO.Cmd.NetRDMA
jsr IO.ExecA
bcs READWRITE.99
lda UD.IO.DoDMA,x
.1 lda UD.IO.Status,x
bmi .1
lsr
bcs READWRITE.99
.FIN
.8 lda #$ff SELF MODIFIED
plp
clc
rts
*--------------------------------------
READWRITE.9 lda #E.NODATA
READWRITE.99 plp
sec
rts
*--------------------------------------
WRITE php
sei
>STYA ZPIOCTL
.DO UDETHDMA=0
ldx DEVSLOTx0
lda #UD.IO.Cmd.NetSend
sta UD.IO.Cmd,x
ldy #S.IOCTL.BYTECNT
lda (ZPIOCTL),y
sta UD.IO.WData,x
eor #$ff
sta Counter
iny
lda (ZPIOCTL),y
sta UD.IO.WData,x
eor #$ff
sta Counter+1
.FIN
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta ZPBufPtr
iny
lda (ZPIOCTL),y
sta ZPBufPtr+1
ldy #S.ETH.SRCMAC+5
ldx #5
.10 lda DCB+S.DCB.NIC.MAC,x
sta (ZPBufPtr),y
dey
dex
bpl .10
ldx DEVSLOTx0
.DO UDETHDMA=0
ldy #0
.1 inc Counter
bne .2
inc Counter+1
beq .8
.2 lda (ZPBufPtr),y
sta UD.IO.WData,x
iny
bne .1
inc ZPBufPtr+1
bra .1
.8 jsr IO.Exec
bcs WRITE.99
.ELSE
lda UD.IO.Status,x
ldy #S.IOCTL.BYTECNT
lda (ZPIOCTL),y
sta UD.IO.WData,x
lda Counter+1
iny
lda (ZPIOCTL),y
sta UD.IO.WData,x
lda ZPBufPtr
sta UD.IO.MemPtrL,x
lda ZPBufPtr+1
sta UD.IO.MemPtrH,x
lda #UD.IO.Cmd.NetSDMA
jsr IO.ExecA
bcs READWRITE.99
lda UD.IO.DoDMA,x
.1 lda UD.IO.Status,x
bmi .1
lsr
bcs READWRITE.99
.FIN
plp
clc
rts
WRITE.99 lda #MLI.E.IO
plp
sec
rts
*--------------------------------------
IO.GetStatus stz DCB+S.DCB.NIC.LINK
lda #S.DCB.NIC.SPEED.10
sta DCB+S.DCB.NIC.SPEED
ldx DEVSLOTx0
lda #UD.IO.Cmd.NetStatus
jsr IO.ExecA
bcs .99
lda UD.IO.RData,x PHYCFGR
lsr CS if Link OK
ror DCB+S.DCB.NIC.LINK
lsr CS if 100mb
bcc .1
inc DCB+S.DCB.NIC.SPEED
.1 lsr CS if FD
bcc .2
lda #S.DCB.NIC.LINK.FD
tsb DCB+S.DCB.NIC.LINK
.2 lda UD.IO.RData,x VERSIONR
sta DIB+S.DIB.VERSION
clc
.99 rts
*--------------------------------------
IO.ExecA sta UD.IO.Cmd,x
IO.Exec stz UD.IO.UnitNum,x
lda UD.IO.Exec,x
.1 lda UD.IO.Status,x
bmi .1
lsr CS if error, A = ERROR CODE ?
rts
*--------------------------------------
DRV.CS.END
DEVSLOTx0 .BS 1
*--------------------------------------
DIB .DA #0
.DA #0,#0,#0 size
.PS "udeth/W5500 "
.DA #S.DIB.T.NIC
.BS 1 Subtype
.BS 2 Version
*--------------------------------------
DCB .DA #S.DCB.T.NIC
.BS 1 FLAGS
.BS 1 LINK
.BS 1 SPEED
.HS 000000000000 MAC
.BS 12 IP/MASK/GW
*--------------------------------------
DRV.END
MAN
SAVE usr/src/shared/x.udeth.drv.s
LOAD usr/src/drv/udeth.d.drv.s
ASM

View File

@ -63,7 +63,6 @@ K.UnloadLib pha
*/-------------------------------------- */--------------------------------------
* # LoadDrv * # LoadDrv
* ## ASM * ## ASM
* **In:**
* Y,A = PTR to "NAME.DRV [PARAM]" C-String * Y,A = PTR to "NAME.DRV [PARAM]" C-String
* ## RETURN VALUE * ## RETURN VALUE
* none * none
@ -234,7 +233,6 @@ BIN.Load.Free php
* ## C * ## C
* `void * insdrv (void * src, void * crvcsstart, void * drvcssize, void * drvend);` * `void * insdrv (void * src, void * crvcsstart, void * drvcssize, void * drvend);`
* ## ASM * ## ASM
* **In:**
* `>PUSHW DRV.END` * `>PUSHW DRV.END`
* `>PUSHW DRV.CS.SIZE` * `>PUSHW DRV.CS.SIZE`
* `>PUSHW DRV.CS.START` * `>PUSHW DRV.CS.START`
@ -273,6 +271,7 @@ K.InsDrv >STYA ZPPtr3 SRC PTR for move
eor #$ff eor #$ff
pha pha
ldy #0 ldy #0
.1 inx .1 inx
bne .2 bne .2
@ -281,6 +280,7 @@ K.InsDrv >STYA ZPPtr3 SRC PTR for move
beq .3 beq .3
pha pha
.2 lda (ZPPtr3),y .2 lda (ZPPtr3),y
sta (ZPPtr4),y sta (ZPPtr4),y
iny iny
@ -296,33 +296,6 @@ K.InsDrv >STYA ZPPtr3 SRC PTR for move
.8 lda #$ff SELF MODIFIED .8 lda #$ff SELF MODIFIED
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
MEM.GetKBuf pha
tya
clc
adc DevMgr.Free
tax
pla
adc DevMgr.Free+1
bcs .99 we crossed $FFFF, out of mem
cpx #DevMgr.HiMem
pha
sbc /DevMgr.HiMem
pla
bcs .99 No More Room...
ldy DevMgr.Free
stx DevMgr.Free
ldx DevMgr.Free+1
sta DevMgr.Free+1
txa
* clc
rts
.99 lda #E.OOM
* sec
rts
*--------------------------------------
BIN.RelExe ldy #H.BIN.T+1 BIN.RelExe ldy #H.BIN.T+1
lda (ZPPtr1),y lda (ZPPtr1),y
cmp /H.BIN.T.BIN65 cmp /H.BIN.T.BIN65

View File

@ -7,7 +7,7 @@ CORE.Run ldx #1
.1 stx CORE.PSIndex .1 stx CORE.PSIndex
lda PS.Table.hPS,x lda PSs.hPS,x
beq .8 beq .8
jsr K.GetMemPtr jsr K.GetMemPtr
@ -80,7 +80,7 @@ CORE.Events jsr CORE.GetEvents
jsr CORE.Dispatch jsr CORE.Dispatch
bcc .4 CC=All Events Dispatched bcc .4 CC=All Events Dispatched
lda PS.Table.PID Select PS0 lda PSs.PID Select PS0
jsr K.GetMemPtr jsr K.GetMemPtr
>STYA pPs >STYA pPs
>LDYAI K.STACKTOP >LDYAI K.STACKTOP
@ -287,7 +287,7 @@ CORE.Dispatch ldx #1 skip PS0
.1 stx CORE.PSIndex .1 stx CORE.PSIndex
lda PS.Table.hPS,x lda PSs.hPS,x
beq .5 beq .5
jsr K.GetMemPtr jsr K.GetMemPtr
@ -352,7 +352,7 @@ CORE.Dispatch ldx #1 skip PS0
CORE.GetPSByID jsr CORE.GetPS CORE.GetPSByID jsr CORE.GetPS
bcs .9 bcs .9
lda PS.TABLE.hPS,y lda PSs.hPS,y
jmp K.GetMemPtr jmp K.GetMemPtr
.9 rts .9 rts
@ -365,7 +365,7 @@ CORE.GetPS tay
ldy #0 ldy #0
bra .2 Skip PS0 bra .2 Skip PS0
.1 cmp PS.Table.PID,y .1 cmp PSs.PID,y
beq .8 beq .8
.2 iny .2 iny
@ -552,23 +552,23 @@ CORE.IRQ.Switch inc IRQ.Tick
sta CORE.CPUStatCnt sta CORE.CPUStatCnt
ldx #K.PS.MAX-1 ldx #K.PS.MAX-1
.1 lda PS.Table.Hits,x .1 lda PSs.Hits,x
stz PS.Table.Hits,x stz PSs.Hits,x
sta PS.Table.Stats,x sta PSs.Stats,x
dex dex
bpl .1 bpl .1
.2 lda IRQ.InKernel .2 lda IRQ.InKernel
bpl .3 bpl .3
inc PS.Table.Hits inc PSs.Hits
.9 clv .9 clv
clc clc
rts rts
.3 ldx CORE.PSIndex .3 ldx CORE.PSIndex
inc PS.Table.Hits,x inc PSs.Hits,x
bit A2osX.F A2osX.F.PMODE .EQ %01000000 bit A2osX.F A2osX.F.PMODE .EQ %01000000
bvc .8 bvc .8

View File

@ -11,7 +11,7 @@ C4 .EQ D2.S
C5 .EQ E0.S C5 .EQ E0.S
*-------------------------------------- *--------------------------------------
.LIST OFF .LIST OFF
.DO MAIN.S>$C00 .DO MAIN.S>$BC0
.LIST ON .LIST ON
* ERROR:MAIN too big * ERROR:MAIN too big
.LIST OFF .LIST OFF

View File

@ -125,7 +125,7 @@ SaveSX .EQ $101 Aux
FOUTBuf .EQ $103 Aux FOUTBuf .EQ $103 Aux
*-------------------------------------- *--------------------------------------
* Main $200 -> 2FF : (Used By ProDOS,Clock DRV....) * Main $200 -> 2FF : (Used By ProDOS,Clock DRV....)
* Main $300 -> 3EF : <free> * Main $300 -> 3EF : Z80 I/O
* Main $3F0 -> 3FF : SYS Vectors (reset,IRQ...) * Main $3F0 -> 3FF : SYS Vectors (reset,IRQ...)
* Aux $200 -> 3FD : /RAM Driver * Aux $200 -> 3FD : /RAM Driver
* Aux $3FE -> 3FF : IRQ Vector * Aux $3FE -> 3FF : IRQ Vector
@ -143,14 +143,12 @@ Mem.Free .EQ $0802
Mem.HiMem .EQ $0804 Mem.HiMem .EQ $0804
Mem.LastSlot .EQ $0806 Mem.LastSlot .EQ $0806
*-------------------------------------- *--------------------------------------
* free $1000->$1FFF = $1000 (4096) Aux
*--------------------------------------
K.S.STAT .EQ $1C00 S.STAT for internal kernel operations K.S.STAT .EQ $1C00 S.STAT for internal kernel operations
K.S.EVT .EQ $1C40 K.EVT.MAX*S.EVT=4*8=32b K.S.EVT .EQ $1C40 K.EVT.MAX*S.EVT=4*8=32b
K.S.IOCTL .EQ $1C60 9 bytes K.S.IOCTL .EQ $1C60 9 bytes
K.MLI.PATH .EQ $1C69 64+1 K.MLI.PATH .EQ $1C69 64+1
K.MLI.PARAMS .EQ $1CAA Main, 18 bytes min for GetFileInfo K.MLI.PARAMS .EQ $1CAA Main, 18 bytes min for GetFileInfo
* GetFileInfoEx/SetFileInfoEx need 1 + 2 + 48 = 51 * GetFileInfoEx/SetFileInfoEx need 1 + 2 + 48 = 51 ->$1CDD
*-------------------------------------- *--------------------------------------
K.STACKTOP .EQ $1CFF K.STACKTOP .EQ $1CFF
*-------------------------------------- *--------------------------------------

View File

@ -12,36 +12,27 @@ K.GetDevByName >STYA ZPPtr1 requested dev name
ldx #1 ldx #1
.1 lda hFDs-1,x .1 ldy FDs.pHI-1,x
beq .7 beq .7
sta IO.hFD cpy #$C0
jsr K.GetMemPtr bcc .7
>STYA pFD
lda hFDs.hName-1,x stx IO.hFD
bne .2
sty pFD+1
lda FDs.pLO-1,x
sta pFD
jsr DEV.GetPDrv
lda pFD
clc clc
adc #S.FD.DEV adc #S.FD.DEV
sta ZPPtr2 sta ZPPtr2
lda pFD+1 tya
adc /S.FD.DEV adc /S.FD.DEV
sta ZPPtr2+1 sta ZPPtr2+1
bra .3
.2 jsr K.GetMemPtr
>STYA ZPPtr2
lda (ZPPtr2) ldy #$ff
cmp #'/' REG/DIR
beq .7
.3 ldy #$ff
.4 iny .4 iny
lda (ZPPtr1),y lda (ZPPtr1),y
@ -51,15 +42,14 @@ K.GetDevByName >STYA ZPPtr1 requested dev name
eor #0 eor #0
bne .4 bne .4
stx IO.hFILE
>LDYA pFD >LDYA pFD
ldx IO.hFD ldx IO.hFD
clc clc
rts rts
.7 inx no....loop .7 inx
cpx #K.hFD.MAX+1 cpx #K.FD.MAX+1
bne .1 bcc .1
lda #MLI.E.NODEV lda #MLI.E.NODEV
* sec * sec
@ -91,7 +81,12 @@ K.GetDev.9 rts
* ## RETURN VALUE * ## RETURN VALUE
* A = hDEV * A = hDEV
*\-------------------------------------- *\--------------------------------------
K.MKDev jsr SHARED.PullP2P1 ptr2=name,ptr1=fd K.MKDev jsr SHARED.PullP2P1 ptr2=devname,ptr1=fd
jsr DEV.GetFreeFD
bcs .9
stx IO.hFD
ldy #$ff ldy #$ff
ldx #S.FD.DEV ldx #S.FD.DEV
@ -103,12 +98,18 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,ptr1=fd
txa txa
tay tay
lda #S.FD.T.CDEV lda #0
jsr DEV.MkFDy jsr MEM.GetKBuf
bcs .9 bcs .9
>STYA pFD
>STYA .4+1 >STYA .4+1
ldx IO.hFD
sta FDs.pHI-1,x
tya
sta FDs.pLO-1,x
ldy #S.FD.DEV-1 ldy #S.FD.DEV-1
@ -123,6 +124,7 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,ptr1=fd
.3 iny .3 iny
inx inx
lda (ZPPtr2),y lda (ZPPtr2),y
.4 sta $ffff,x .4 sta $ffff,x
bne .3 bne .3
@ -156,8 +158,10 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,ptr1=fd
inx inx
inx inx
cpx #K.IRQDEV.MAX*2+1 cpx #K.IRQDEV.MAX*2
bne .6 bcc .6
lda #E.OOH
* sec * sec
@ -171,7 +175,9 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,ptr1=fd
sta IRQ.Vectors+1,x sta IRQ.Vectors+1,x
.8 lda IO.hFD .8 lda IO.hFD
* clc * clc
rts rts
*/-------------------------------------- */--------------------------------------
* # IOCTL * # IOCTL
@ -238,10 +244,60 @@ DEV.CLOSE ldx #IOCTL.CLOSE
DEV.pDrvJmp >LDYAI K.S.IOCTL DEV.pDrvJmp >LDYAI K.S.IOCTL
DEV.pDrvJmp.1 jmp (pDrv) DEV.pDrvJmp.1 jmp (pDrv)
*-------------------------------------- *--------------------------------------
DEV.GetPFD sta IO.hFD * For REG, DIR, PIPE
*--------------------------------------
DEV.MkFD sta .8+1 A = S.FD.T
jsr DEV.GetFreeFD
bcs .9
stx IO.hFD
ldy #16 Y = Size, MAX=16 for S.FD.DIR
lda #0
ldx #S.MEM.F.INIT0+S.MEM.F.FD
jsr MEM.GetMem.YAX
bcs .9
jsr K.GetMemPtr
>STYA pFD >STYA pFD
ldx IO.hFD
sta FDs.pHI-1,x
tya
sta FDs.pLO-1,x
jsr Mem.SetOwnerPS0
.8 lda #$ff SELF MODIFIED
sta (pFD)
* clc
.9 rts
*--------------------------------------
DEV.GetFreeFD ldx #1
clc
.1 lda FDs.pHI-1,x
beq .8
inx
cpx #K.FD.MAX+1
bcc .1
lda #E.OOH
* sec
.8 rts
*--------------------------------------
DEV.GetPFD sta IO.hFD
tay
lda FDs.pLO-1,y
sta pFD
lda FDs.pHI-1,y
sta pFD+1
DEV.GetPDrv ldy #S.FD.DEV.DRVPTR DEV.GetPDrv ldy #S.FD.DEV.DRVPTR
lda (pFD),y lda (pFD),y
@ -252,69 +308,6 @@ DEV.GetPDrv ldy #S.FD.DEV.DRVPTR
rts rts
*-------------------------------------- *--------------------------------------
DEV.MkFD ldy #16 Y = Size, MAX=16 for S.FD.DIR
DEV.MkFDy sta .8+1 A = S.FD.T
jsr DEV.GetFreeFD
bcs .9
.2 stx IO.hFILE
lda #0
ldx #S.MEM.F.INIT0+S.MEM.F.FD
jsr MEM.GetMem.YAX
bcs .9
>STYA pFD
stx IO.hFD
jsr Mem.SetOwnerPS0
txa
.7 ldx IO.hFILE
sta hFDs-1,x
stz hFDs.hName-1,x
.8 lda #$ff SELF MODIFIED
sta (pFD)
>LDYA pFD Y,A = pFD, X = hFILE
* clc
.9 rts
*--------------------------------------
DEV.GetFreeFD lda #0
DEV.GetFD ldx #1
.1 cmp hFDs-1,x
beq DEV.GetFD.8
inx
cpx #K.hFD.MAX+1
bne .1
tax
beq DEV.GetFD.8
lda #E.INVH
.HS 2C BIT ABS
.9 lda #E.OOH
* sec
rts
K.MkFD
DEV.GetFD.8 clc
rts
*--------------------------------------
DEV.hFDFree lda IO.hFD
beq DEV.GetFD.8
jmp K.FreeMem
*--------------------------------------
MAN MAN
SAVE usr/src/sys/kernel.s.dev SAVE usr/src/sys/kernel.s.dev
LOAD usr/src/sys/kernel.s LOAD usr/src/sys/kernel.s

View File

@ -14,14 +14,12 @@ NEW
* A = EC * A = EC
*\-------------------------------------- *\--------------------------------------
K.OpenDir jsr PFT.CheckPathYA K.OpenDir jsr PFT.CheckPathYA
bcs .9 bcs DIRENT.RTS
jsr FS.OPEN.DIR jsr FS.OPEN.DIR
bcs .9 bcs DIRENT.RTS
jmp K.FOpen.REGDIR jmp K.FOpen.REGDIR
.9 rts
*/-------------------------------------- */--------------------------------------
* # ReadDir * # ReadDir
* ## C * ## C
@ -151,11 +149,11 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ?
ldx #0 ldx #0
.6 lda Flt.Table.pftHI,x .6 lda PFTs.pHI,x
beq .8 beq .8
sta ZPPtr2+1 sta ZPPtr2+1
lda Flt.Table.pftLO,x lda PFTs.pLO,x
sta ZPPtr2 sta ZPPtr2
ldy #$ff ldy #$ff
@ -169,7 +167,7 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ?
jsr K.ReadDir.AddStat jsr K.ReadDir.AddStat
.8 inx .8 inx
cpx #K.FLT.MAX cpx #K.PFT.MAX
bne .6 bne .6
* lda #0 done by S.MEM.F.INIT0 * lda #0 done by S.MEM.F.INIT0

View File

@ -40,7 +40,6 @@ K.GetEnv >PULLW FORPNT value
* ## C / CSH * ## C / CSH
* `int putenv(char *string);` * `int putenv(char *string);`
* ## ASM * ## ASM
* **In:**
* `>PUSHW string` * `>PUSHW string`
* `>SYSCALL putenv` * `>SYSCALL putenv`
* ## RETURN VALUE * ## RETURN VALUE
@ -67,7 +66,7 @@ K.GetEnv.I ldy #S.PS.hENV FROM STDLIB:EXPAND
lda (pPS),y lda (pPS),y
tay tay
lda S.Table.hSID-1,y lda USRs.hSID-1,y
tay Y = hSID tay Y = hSID
pla A = hENV pla A = hENV

View File

@ -25,7 +25,7 @@ FS.OPEN.REG >MLICALL MLIGETFILEINFO
bpl .1 bpl .1
lda #S.FI.ST.STD lda #S.FI.ST.STD
jsr FS.CREATE jsr FS.MLICREATE
bcs .9 bcs .9
.2 lda #S.FD.T.REG .2 lda #S.FD.T.REG
@ -71,11 +71,6 @@ FS.OPEN.REG >MLICALL MLIGETFILEINFO
*-------------------------------------- *--------------------------------------
FS.OPEN.ERR pha Save Error Code FS.OPEN.ERR pha Save Error Code
jsr FS.MLICLOSE jsr FS.MLICLOSE
ldx IO.hFILE Cleanup what MkFD did
lda hFDs-1,x
stz hFDs-1,x
jsr K.FreeMem
pla pla
sec sec
@ -129,7 +124,9 @@ FS.WRITE.REG ldx #MLIWRITE
*-------------------------------------- *--------------------------------------
FS.EOF.REG >MLICALL MLIGETMARK FS.EOF.REG >MLICALL MLIGETMARK
bcs .9 bcs .9
ldy #2 ldy #2
.1 lda K.MLI.PARAMS+2,y .1 lda K.MLI.PARAMS+2,y
sta ACC32,y sta ACC32,y
dey dey
@ -139,11 +136,14 @@ FS.EOF.REG >MLICALL MLIGETMARK
bcs .9 bcs .9
ldy #2 ldy #2
.2 lda K.MLI.PARAMS+2,y .2 lda K.MLI.PARAMS+2,y
eor ACC32,y eor ACC32,y
bne .8 FALSE bne .8 FALSE
dey dey
bpl .2 bpl .2
lda #$ff TRUE lda #$ff TRUE
* clc * clc
rts rts
@ -152,7 +152,12 @@ FS.EOF.REG >MLICALL MLIGETMARK
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
FS.CREATE sta K.MLI.PARAMS+7 Storage Type FS.CLOSE jsr FS.MLICLOSE
bcs FS.RTS
jmp DEV.FreeFD
*--------------------------------------
FS.MLICREATE sta K.MLI.PARAMS+7 Storage Type
ldx #3 ldx #3
.1 lda DATELO,x .1 lda DATELO,x
@ -168,7 +173,7 @@ FS.CREATE sta K.MLI.PARAMS+7 Storage Type
FS.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF FS.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF
ldx #S.MEM.F.ALIGN ldx #S.MEM.F.ALIGN
jsr MEM.GetMem.YAX jsr MEM.GetMem.YAX
bcs .9 bcs FS.RTS
>STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call >STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call
txa txa
@ -176,7 +181,7 @@ FS.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF
sta (pFD),y sta (pFD),y
>MLICALL MLIOPEN >MLICALL MLIOPEN
bcs .9 bcs FS.RTS
lda K.MLI.PARAMS+5 get ref_num lda K.MLI.PARAMS+5 get ref_num
ldy #S.FD.REG.REF ldy #S.FD.REG.REF
@ -186,7 +191,6 @@ FS.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF
* clc * clc
.9
FS.RTS rts FS.RTS rts
*-------------------------------------- *--------------------------------------
FS.MLICLOSE ldy #S.FD.REG.REF FS.MLICLOSE ldy #S.FD.REG.REF
@ -195,7 +199,7 @@ FS.MLICLOSE ldy #S.FD.REG.REF
sta K.MLI.PARAMS+1 sta K.MLI.PARAMS+1
>MLICALL MLICLOSE >MLICALL MLICLOSE
* bcs FS.RTS bcs FS.RTS
.1 ldy #S.FD.REG.IOBUF .1 ldy #S.FD.REG.IOBUF
lda (pFD),y lda (pFD),y

View File

@ -195,7 +195,6 @@ GP.AtkCall dec IRQ.InKernel
* # Add32,Sub32,Mul32,IMul32,Div32,IDiv32,Mod32,IMod32,Cmp32,ICmp32 * # Add32,Sub32,Mul32,IMul32,Div32,IDiv32,Mod32,IMod32,Cmp32,ICmp32
* Return X+Y, X-Y, X*Y, X/Y, X mod Y.... * Return X+Y, X-Y, X*Y, X/Y, X mod Y....
* ## ASM * ## ASM
* **In:**
* `>PUSHL X (long)` * `>PUSHL X (long)`
* `>PUSHL Y (long)` * `>PUSHL Y (long)`
* `>FPU add32` * `>FPU add32`
@ -223,7 +222,6 @@ GP.FpuCall dec IRQ.InKernel
* ## C * ## C
* `float pwr ( float x, float y);` * `float pwr ( float x, float y);`
* ## ASM * ## ASM
* **In:**
* `>PUSHF X (float)` * `>PUSHF X (float)`
* `>PUSHF Y (float)` * `>PUSHF Y (float)`
* `>FPU fmul` * `>FPU fmul`
@ -254,7 +252,6 @@ GP.FpuCall dec IRQ.InKernel
* `float tan ( float x);` * `float tan ( float x);`
* `float atan ( float x);` * `float atan ( float x);`
* ## ASM * ## ASM
* **In:**
* `>PUSHF x (Float)` * `>PUSHF x (Float)`
* `>FPU log` * `>FPU log`
* ## RETURN VALUE * ## RETURN VALUE
@ -293,7 +290,6 @@ GP.SetFAC ldx #FPU.SETFAC
* ## C * ## C
* `float f = (float)l; * `float f = (float)l;
* ## ASM * ## ASM
* **In:**
* `>PUSHL l` (long) * `>PUSHL l` (long)
* `>FPU float` * `>FPU float`
* ## RETURN VALUE * ## RETURN VALUE
@ -319,7 +315,6 @@ GP.Float ldy #3
* ## C * ## C
* `long int lrintf (float x);` * `long int lrintf (float x);`
* ## ASM * ## ASM
* **In:**
* `>PUSHF x` * `>PUSHF x`
* `>FPU lrintf` * `>FPU lrintf`
* ## RETURN VALUE * ## RETURN VALUE
@ -436,11 +431,11 @@ GP.IRQ.Exit stz IRQ.Skip reset flag
*-------------------------------------- *--------------------------------------
*BrkHandler bra * *BrkHandler bra *
*-------------------------------------- *--------------------------------------
* $BED0->$BEEF : Public Variables * $11D0->$11EF : Public Variables
*-------------------------------------- *--------------------------------------
.BS 32 .BS 32
*-------------------------------------- *--------------------------------------
* $BEF0->$BEFF : Kernel Config Block * $11F0->$11FF : Kernel Config Block
*-------------------------------------- *--------------------------------------
.DA #6 A2osX.HZ=60hz .DA #6 A2osX.HZ=60hz
.DA #2 A2osX.TTYDEVS=2 .DA #2 A2osX.TTYDEVS=2

View File

@ -137,7 +137,7 @@ Kernel.Init3 sta SETALTZP
>LDYAI S.PS Select Process 0 (Kernel) >LDYAI S.PS Select Process 0 (Kernel)
jsr K.GetMem0 jsr K.GetMem0
>STYA pPs >STYA pPs
stx PS.Table.hPS stx PSs.hPS
jsr Mem.SetOwner jsr Mem.SetOwner
lda #1 lda #1
@ -146,11 +146,7 @@ Kernel.Init3 sta SETALTZP
>STYA pStack >STYA pStack
sta pBase+1 sta pBase+1
>PUSHWI FD.NULL jsr SysCDEVInit
>PUSHWI FD.NULL.NAME
>SYSCALL2 MKDev
jsr SysScrInit
bcs * bcs *
* sta CLRMIXED * sta CLRMIXED
@ -169,10 +165,9 @@ Kernel.Init3 sta SETALTZP
iny #S.PS.hStdErr iny #S.PS.hStdErr
sta (pPS),y sta (pPS),y
*-------------------------------------- *--------------------------------------
Kernel.Init3C >PUSHWI MSG.Init3 Kernel.Init3C >LDYAI MSG.Init3
>PUSHBI 0 >SYSCALL2 PutS
>SYSCALL2 printf
jsr HW.Detect jsr HW.Detect
jsr CPU.Init jsr CPU.Init
@ -201,9 +196,8 @@ Kernel.Init3C >PUSHWI MSG.Init3
>SYSCALL2 ExecV >SYSCALL2 ExecV
bcs Kernel.Init3.Err bcs Kernel.Init3.Err
>PUSHWI MSG.Init3.OK >LDYAI MSG.Init3.OK
>PUSHBI 0 >SYSCALL2 PutS
>SYSCALL2 printf
>DEBUGOA >DEBUGOA
jmp CORE.Run jmp CORE.Run
@ -285,19 +279,26 @@ MemMgrInit >LDYAI Mem.MHiMem
stz Mem.LastSlot Reserve Slot #0 stz Mem.LastSlot Reserve Slot #0
sta CLRWRITEAUX sta CLRWRITEAUX
ldx #K.hFD.MAX-1 ldx #K.FILE.MAX-1
.1 stz hFDs,x .1 stz FILEs.hFD,x
stz hFDs.hName,x stz FILEs.hName,x
stz hFDs.oCnt,x stz FILEs.oCnt,x
dex dex
bpl .1 bpl .1
ldx #K.PS.MAX*4-1 ldx #K.PS.MAX*4-1
.3 stz PS.Table.PID,x .3 stz PSs.PID,x
dex dex
bpl .3 bpl .3
ldx #K.FD.MAX-1
.4 stz FDs.pLO,x
stz FDs.pHI,x
dex
bpl .4
ldx #K.EVT.MAX*S.EVT-1 ldx #K.EVT.MAX*S.EVT-1
@ -307,26 +308,30 @@ MemMgrInit >LDYAI Mem.MHiMem
ldx #K.USR.MAX*2-1 ldx #K.USR.MAX*2-1
.6 stz S.Table.hSID,x .6 stz USRs.hSID,x
dex dex
bpl .6 bpl .6
ldx #K.FLT.MAX*4-1 ldx #K.PFT.MAX*4-1
.7 stz Flt.Table.pftLO,x .7 stz PFTs.pLO,x
dex dex
bpl .7 bpl .7
rts rts
*-------------------------------------- *--------------------------------------
SysScrInit >LDYAI Mem.XHiMem SysCDEVInit >PUSHWI FD.NULL
>PUSHWI FD.NULL.NAME
>SYSCALL2 MKDev
bcs .9
>LDYAI Mem.XHiMem
>STYA FD.TTY+S.FD.DEV.DCBPTR >STYA FD.TTY+S.FD.DEV.DCBPTR
jsr SysScrInit.TTYPtrs jsr SysCDEVInit.TTYPtrs
>PUSHWI FD.TTY >PUSHWI FD.TTY
>PUSHWI FD.CONSOLE.NAME >PUSHWI FD.CONSOLE.NAME
>SYSCALL2 MKDev >SYSCALL2 MKDev
bcs .9 bcs .9
@ -335,11 +340,10 @@ SysScrInit >LDYAI Mem.XHiMem
.1 phx .1 phx
inc FD.TTY+S.FD.DEV.DEVID inc FD.TTY+S.FD.DEV.DEVID
inc FD.TTY.NAME+3 inc FD.TTY.NAME+3
jsr SysScrInit.TTYPtrs jsr SysCDEVInit.TTYPtrs
>PUSHWI FD.TTY >PUSHWI FD.TTY
>PUSHWI FD.TTY.NAME >PUSHWI FD.TTY.NAME
>SYSCALL2 MKDev >SYSCALL2 MKDev
plx plx
bcs .9 bcs .9
@ -350,7 +354,7 @@ SysScrInit >LDYAI Mem.XHiMem
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
SysScrInit.TTYPtrs SysCDEVInit.TTYPtrs
lda FD.TTY+S.FD.DEV.DCBPTR lda FD.TTY+S.FD.DEV.DCBPTR
sec sec
sbc #80*24+S.DCB.TTY sbc #80*24+S.DCB.TTY
@ -570,6 +574,7 @@ CPU.Init.Z80 >PUSHWI MSG.Z80
>SYSCALL2 printf >SYSCALL2 printf
jsr DetectZ80 jsr DetectZ80
bcs .9 bcs .9
sta A2osX.Z80SLOT sta A2osX.Z80SLOT
tax tax
lda #A2osX.S.Z80 lda #A2osX.S.Z80
@ -674,13 +679,12 @@ DetectZ80 ldx #Z80.300.L
dex dex
bne .90 bne .90
pla pla
plp plp
rts rts
*-------------------------------------- *--------------------------------------
DevMgrInit >LDYAI MSG.DEV DevMgrInit >LDYAI MSG.DEV
>SYSCALL2 puts >SYSCALL2 PutS
jsr DevMgr.VXD jsr DevMgr.VXD
@ -1209,11 +1213,11 @@ TskMgrInit >LDYAI MSG.TSK
>SYSCALL OpenSession >SYSCALL OpenSession
bcs .99 bcs .99
sta S.Table.hSID sta USRs.hSID
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
sta S.Table.hFile sta USRs.hFile
lda #1 lda #1
ldy #S.PS.hSession ldy #S.PS.hSession
@ -1311,7 +1315,7 @@ MSG.HZ .CZ "Kernel SYS Timer Set For %d0 hz Machine.\r"
MSG.FX .CZ "!!!Running under ProDOS.FX!!! Enabling lowercase mode.\r" MSG.FX .CZ "!!!Running under ProDOS.FX!!! Enabling lowercase mode.\r"
MSG.Init2.OK .CZ "A2osX[Stage2]:Complete." MSG.Init2.OK .CZ "A2osX[Stage2]:Complete."
*-------------------------------------- *--------------------------------------
MSG.Init3 .CZ "A2osX[Stage3]:Init *** Press Ctrl-R for entering ROOT Mode ***\r\n" MSG.Init3 .CZ "A2osX[Stage3]:Init *** Press Ctrl-R for entering ROOT Mode ***"
MSG.DEV .AZ "Device Manager..." MSG.DEV .AZ "Device Manager..."
MSG.BDEV .CZ " Adding Device: /dev/%s, Addr:%H, Type: %s\r\n" MSG.BDEV .CZ " Adding Device: /dev/%s, Addr:%H, Type: %s\r\n"
MSG.BDEVs .DA MSG.BDEV.D2 MSG.BDEVs .DA MSG.BDEV.D2
@ -1346,7 +1350,7 @@ MSG.TSK .AZ "Task Manager..."
MSG.PWD .AZ "Password Manager..." MSG.PWD .AZ "Password Manager..."
MSG.EXEC .AZ "Executing %s..." MSG.EXEC .AZ "Executing %s..."
MSG.StartupErr .CZ "Failed : [$%h]\r\n" MSG.StartupErr .CZ "Failed : [$%h]\r\n"
MSG.Init3.OK .CZ "OK\r\nA2osX[Stage3]:Complete.\r\n" MSG.Init3.OK .CZ "OK\r\nA2osX[Stage3]:Complete."
*-------------------------------------- *--------------------------------------
MSG.HW .AZ "Checking Hardware..." MSG.HW .AZ "Checking Hardware..."
MSG.HW.TypeSubT .CZ "Type=%h,SubT=%h\r\n" MSG.HW.TypeSubT .CZ "Type=%h,SubT=%h\r\n"
@ -1396,19 +1400,17 @@ pMLICLOSE .DA #1
*-------------------------------------- *--------------------------------------
FD.NULL .DA #S.FD.T.CDEV FD.NULL .DA #S.FD.T.CDEV
.DA #0 HANDLER .DA #0 HANDLER
.DA #0 BUSID .DA #$F BUSID
.DA #0 DEVID .DA #$F DEVID
.DA 0 BUSPTR .DA 0 BUSPTR
.DA DRV.NULL .DA DRV.NULL
.DA 0 DCBPTR .DA 0 DCBPTR
.DA 0 BUFPTR .DA 0 BUFPTR
.BS 4 .BS 4
*-------------------------------------- *--------------------------------------
FD.NULL.NAME .AZ "null" NAME
*--------------------------------------
FD.TTY .DA #S.FD.T.CDEV FD.TTY .DA #S.FD.T.CDEV
.DA #0 HANDLER .DA #0 HANDLER
.DA #0 BUSID .DA #$F BUSID
.DA #0 DEVID .DA #0 DEVID
.DA 0 BUSPTR .DA 0 BUSPTR
.DA DRV.TERM .DA DRV.TERM
@ -1416,12 +1418,9 @@ FD.TTY .DA #S.FD.T.CDEV
.BS 2 BUFPTR .BS 2 BUFPTR
.BS 4 .BS 4
*-------------------------------------- *--------------------------------------
FD.CONSOLE.NAME .AZ "console"
FD.TTY.NAME .AZ "tty0"
*--------------------------------------
FD.BDEV .DA #S.FD.T.BDEV FD.BDEV .DA #S.FD.T.BDEV
.DA #0 HANDLER .DA #0 HANDLER
.DA #0 BUSID .DA #$F BUSID
.DA #0 DEVID .DA #0 DEVID
.BS 2 BUSPTR .BS 2 BUSPTR
.BS 2 DRVPTR .BS 2 DRVPTR
@ -1430,6 +1429,9 @@ FD.BDEV .DA #S.FD.T.BDEV
.DA 0 SIZE .DA 0 SIZE
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
FD.NULL.NAME .AZ "null"
FD.CONSOLE.NAME .AZ "console"
FD.TTY.NAME .AZ "tty0"
FD.BDEV.NAME .AZ "s1d1" FD.BDEV.NAME .AZ "s1d1"
*-------------------------------------- *--------------------------------------
* Z80 Reserved * Z80 Reserved
@ -1439,7 +1441,7 @@ FD.BDEV.NAME .AZ "s1d1"
*-------------------------------------- *--------------------------------------
Z80.300 .HS 3200E1 LD (0E100H),A Back to 6502 Z80.300 .HS 3200E1 LD (0E100H),A Back to 6502
.HS C300F3 JP 0F300h
Z80.300.L .EQ *-Z80.300 Z80.300.L .EQ *-Z80.300
*-------------------------------------- *--------------------------------------
Z80.1000 .HS 31CFF3 START: LD SP,0F3CFh Init Stack Z80.1000 .HS 31CFF3 START: LD SP,0F3CFh Init Stack

View File

@ -89,7 +89,7 @@ K.SYSCALL .DA 0 $00 : STAT
.DA K.StrCaseCmp .DA K.StrCaseCmp
.DA K.GetDevByName $90 : DEV .DA K.GetDevByName $90 : DEV
.DA K.MKFD .DA 0
.DA K.MKDev .DA K.MKDev
.DA K.IOCTL .DA K.IOCTL
.DA K.LoadLib BIN .DA K.LoadLib BIN

View File

@ -19,9 +19,11 @@ MEM.BestScore .EQ ZPMemMgrTmp1
* YA = ptr * YA = ptr
* X = hMem * X = hMem
*\-------------------------------------- *\--------------------------------------
MEM.NewSize .BS 2 K.Realloc >PULLA
*-------------------------------------- sta .2+1 New Size HI
K.Realloc >PULLW MEM.NewSize
>PULLA
sta .1+1 New Size LO
>PULLA Src hMem >PULLA Src hMem
tax tax
@ -40,7 +42,9 @@ K.Realloc >PULLW MEM.NewSize
stx .7+1 Aux hMem stx .7+1 Aux hMem
>LDYA MEM.NewSize .1 ldy #$FF SELF MODIFIED
.2 lda #$FF SELF MODIFIED
>STYA A2L size for MoveSetupA1A2 >STYA A2L size for MoveSetupA1A2
jsr K.getmem jsr K.getmem
@ -326,6 +330,18 @@ MEM.Init0 phx
.13 plx .13 plx
rts rts
*--------------------------------------
DEV.FreeFD.8 clc
rts
DEV.FreeFD ldx IO.hFD
lda FDs.pHI-1,x
cmp #$C0
bcs DEV.FreeFD.8
stz FDs.pHI-1,x
ldy FDs.pLO-1,x
*/-------------------------------------- */--------------------------------------
* # Free * # Free
* Y,A = Ptr To Free * Y,A = Ptr To Free
@ -373,7 +389,7 @@ K.FreeMem.ERR >PUSHWI .1
>PUSHBI 2 >PUSHBI 2
>SYSCALL2 PrintF >SYSCALL2 PrintF
>DEBUG * >DEBUG
lda #E.INVH lda #E.INVH
sec sec
rts rts
@ -645,6 +661,33 @@ MEM.SetA1A2 jsr K.GetMemPtr
rts rts
*-------------------------------------- *--------------------------------------
MEM.GetKBuf pha
tya
clc
adc DevMgr.Free
tax
pla
adc DevMgr.Free+1
bcs .99 we crossed $FFFF, out of mem
cpx #DevMgr.HiMem
pha
sbc /DevMgr.HiMem
pla
bcs .99 No More Room...
ldy DevMgr.Free
stx DevMgr.Free
ldx DevMgr.Free+1
sta DevMgr.Free+1
txa
* clc
rts
.99 lda #E.OOM
* sec
rts
*--------------------------------------
MAN MAN
SAVE usr/src/sys/kernel.s.mem SAVE usr/src/sys/kernel.s.mem
LOAD usr/src/sys/kernel.s LOAD usr/src/sys/kernel.s

View File

@ -12,11 +12,11 @@ K.Mount jsr SHARED.PullP2P1 callback,mountpoint
ldx #1 ldx #1
.1 lda Flt.Table.pftHI-1,x .1 lda PFTs.pHI-1,x
beq .2 beq .2
inx inx
cpx #K.FLT.MAX+1 cpx #K.PFT.MAX+1
bne .1 bne .1
lda #E.OOH lda #E.OOH
@ -24,14 +24,14 @@ K.Mount jsr SHARED.PullP2P1 callback,mountpoint
rts rts
.2 lda ZPPtr1 .2 lda ZPPtr1
sta Flt.Table.pftLO-1,x sta PFTs.pLO-1,x
lda ZPPtr1+1 lda ZPPtr1+1
sta Flt.Table.pftHI-1,x sta PFTs.pHI-1,x
lda ZPPtr2 lda ZPPtr2
sta Flt.Table.cbLO-1,x sta PFTs.cbLO-1,x
lda ZPPtr2+1 lda ZPPtr2+1
sta Flt.Table.cbHI-1,x sta PFTs.cbHI-1,x
txa txa
@ -44,10 +44,10 @@ K.Mount jsr SHARED.PullP2P1 callback,mountpoint
*-------------------------------------- *--------------------------------------
K.UMount tax K.UMount tax
lda Flt.Table.pftHI-1,x lda PFTs.pHI-1,x
beq .9 beq .9
stz Flt.Table.pftHI-1,x stz PFTs.pHI-1,x
clc clc
rts rts

View File

@ -24,12 +24,12 @@ PFT.CheckPathYA >PUSHYA
ldx #0 ldx #0
.1 inx .1 inx
lda Flt.Table.pftHI-1,x lda PFTs.pHI-1,x
beq .8 beq .8
sta ZPPtr1+1 sta ZPPtr1+1
lda Flt.Table.pftLO-1,x lda PFTs.pLO-1,x
sta ZPPtr1 sta ZPPtr1
ldy #$ff ldy #$ff
@ -51,10 +51,10 @@ PFT.CheckPathYA >PUSHYA
iny iny
.4 lda Flt.Table.cbLO-1,x .4 lda PFTs.cbLO-1,x
sta .7+1 sta .7+1
lda Flt.Table.cbHI-1,x lda PFTs.cbHI-1,x
sta .7+2 sta .7+2
stx hHandler stx hHandler
@ -68,7 +68,7 @@ PFT.CheckPathYA >PUSHYA
.7 jmp $ffff SELF MODIFIED .7 jmp $ffff SELF MODIFIED
.8 cpx #K.FLT.MAX .8 cpx #K.PFT.MAX
bne .1 bne .1
>LDYAI K.Buf256 >LDYAI K.Buf256
@ -105,24 +105,27 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL #
tax tax
beq .9 beq .9
cpx #K.hFD.MAX+1 cpx #K.FILE.MAX+1
bcs .9 bcs .9
lda hFDs-1,x ldy FILEs.hFD-1,x
sty IO.hFD
lda FDs.pLO-1,y
sta pFD
lda FDs.pHI-1,y
sta pFD+1
beq .9 beq .9
jsr DEV.GetPFD
ldy #S.FD.PFT ldy #S.FD.PFT
lda (pFD),y lda (pFD),y
beq .8 Handler is 0, back to kernel.... beq .8 Handler is 0, back to kernel....
tax tax
lda Flt.Table.cbLO-1,x lda PFTs.cbLO-1,x
sta .7+1 sta .7+1
lda Flt.Table.cbHI-1,x lda PFTs.cbHI-1,x
sta .7+2 sta .7+2
stx hHandler stx hHandler
@ -134,7 +137,9 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL #
.7 jmp $ffff SELF MODIFIED .7 jmp $ffff SELF MODIFIED
.8 lda (pFD) #S.FD.T .8 jsr DEV.GetPDrv
lda (pFD) #S.FD.T
cmp #S.FD.T.CDEV cmp #S.FD.T.CDEV
bcs .80 bcs .80

View File

@ -23,6 +23,7 @@ PIPE.CLOSE ldy #S.FD.PIPE.S
lda #$80 lda #$80
sta (pFD),y sta (pFD),y
clc
rts rts
.1 ldy #S.FD.PIPE.hMem .1 ldy #S.FD.PIPE.hMem
@ -31,8 +32,7 @@ PIPE.CLOSE ldy #S.FD.PIPE.S
>SYSCALL2 FreeStkObj >SYSCALL2 FreeStkObj
.2 clc .2 jmp DEV.FreeFD
rts
*-------------------------------------- *--------------------------------------
* (pStack)+2 buf * (pStack)+2 buf
* (pStack)+0 count * (pStack)+0 count

View File

@ -207,7 +207,7 @@ K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
PS.CreateChild ldx #0 PS.CreateChild ldx #0
bra .2 Skip PS0 bra .2 Skip PS0
.1 lda PS.Table.PID,x .1 lda PSs.PID,x
beq .4 Found an empty slot beq .4 Found an empty slot
.2 inx .2 inx
@ -234,7 +234,7 @@ PS.CreateChild ldx #0
bcc .4 running...loop bcc .4 running...loop
lda CORE.LastPSID lda CORE.LastPSID
sta PS.Table.PID,x sta PSs.PID,x
phx save PS Index phx save PS Index
>LDYAI S.PS >LDYAI S.PS
jsr K.GetMem0 Blank Everything in this S.PS jsr K.GetMem0 Blank Everything in this S.PS
@ -243,7 +243,7 @@ PS.CreateChild ldx #0
>STYA PS.NewPSPtr >STYA PS.NewPSPtr
txa txa
plx plx
sta PS.Table.hPS,x sta PSs.hPS,x
jsr Mem.SetOwner Set Ownership jsr Mem.SetOwner Set Ownership
lda PS.Flags lda PS.Flags
@ -258,7 +258,7 @@ PS.CreateChild ldx #0
bit PS.Flags bit PS.Flags
beq .5 beq .5
lda PS.Table.hPS Select PS0 lda PSs.hPS Select PS0
jsr K.GetMemPtr jsr K.GetMemPtr
bra .6 bra .6
@ -309,7 +309,7 @@ PS.CreateChild ldx #0
sta (PS.NewPSPtr),y sta (PS.NewPSPtr),y
* tax * tax
* lda S.Table.hSID-1,x * lda USRs.hSID-1,x
* jsr MEM.GetMemByID * jsr MEM.GetMemByID
* jsr MEM.IncRefCnt * jsr MEM.IncRefCnt
@ -729,7 +729,7 @@ K.Kill.0 clc
K.Kill.2 ldy #S.PS.hSession K.Kill.2 ldy #S.PS.hSession
lda (ZPPtr1),y lda (ZPPtr1),y
tax tax
* lda S.Table.hSID-1,x * lda USRs.hSID-1,x
* jsr K.FreeMem * jsr K.FreeMem
ldy #S.PS.hENV ldy #S.PS.hENV
@ -760,7 +760,7 @@ K.Kill.2 ldy #S.PS.hSession
.1 lda K.Kill.PID .1 lda K.Kill.PID
ldx #0 ldx #0
.2 cmp PS.Table.PID,x .2 cmp PSs.PID,x
beq .3 beq .3
inx inx
@ -769,9 +769,9 @@ K.Kill.2 ldy #S.PS.hSession
bra * bra *
.3 stz PS.Table.PID,x .3 stz PSs.PID,x
lda PS.TABLE.hPS,x lda PSs.hPS,x
stz PS.TABLE.hPS,x stz PSs.hPS,x
jmp K.FreeMem jmp K.FreeMem
.10 .DA #S.PS.hSS,#S.PS.hDS,#S.PS.hCS .10 .DA #S.PS.hSS,#S.PS.hDS,#S.PS.hCS
@ -782,7 +782,6 @@ K.Kill.2 ldy #S.PS.hSession
* ## C * ## C
* `int loadtxtfile ( const char * filename );` * `int loadtxtfile ( const char * filename );`
* ## ASM * ## ASM
* **In:**
* `>LDYA filename` * `>LDYA filename`
* `>SYSCALL loadtxtfile` * `>SYSCALL loadtxtfile`
* ## RETURN VALUE * ## RETURN VALUE
@ -802,7 +801,6 @@ K.LoadFile0 sec
* ## C * ## C
* `int loadfile ( const char * filename, short int flags, short int ftype, int auxtype );` * `int loadfile ( const char * filename, short int flags, short int ftype, int auxtype );`
* ## ASM * ## ASM
* **In:**
* `>PUSHW filename` * `>PUSHW filename`
* `>PUSHB flags` * `>PUSHB flags`
* `>PUSHB ftype` * `>PUSHB ftype`
@ -902,7 +900,6 @@ K.LoadFile clc
* ## C * ## C
* `int filesearch( char *filename, char *searchpath, char *fullpath, stat *filestat);` * `int filesearch( char *filename, char *searchpath, char *fullpath, stat *filestat);`
* ## ASM * ## ASM
* **In:**
* `>PUSHW filename` * `>PUSHW filename`
* `>PUSHW fullpath` * `>PUSHW fullpath`
* `>PUSHW searchpath` * `>PUSHW searchpath`
@ -1043,7 +1040,6 @@ PS.VARS .DA .1
.3 .AZ "PATH" .3 .AZ "PATH"
*/-------------------------------------- */--------------------------------------
* # GetMemStat * # GetMemStat
* **In:**
* Y,A = Ptr to 24 bytes buffer * Y,A = Ptr to 24 bytes buffer
* ## RETURN VALUE * ## RETURN VALUE
* Buffer filled with memory stats * Buffer filled with memory stats

View File

@ -17,13 +17,13 @@ K.ChMod jsr PFT.CheckPath2
jsr STAT.PM jsr STAT.PM
stz K.MLI.PARAMS+3+S.FIEX.ACL read mode stz K.MLI.PARAMS+3+S.FIEX.ACL read mode
>MLICALL MLIACL >MLICALL MLIACL
bcs .9 bcs .9
>LDYA K.S.STAT+S.STAT.MODE >LDYA K.S.STAT+S.STAT.MODE
>STYA K.MLI.PARAMS+3+S.FIEX.ACL.MOD >STYA K.MLI.PARAMS+3+S.FIEX.ACL.MOD
lda #$57 write mode lda #$57 write mode
sta K.MLI.PARAMS+3+S.FIEX.ACL sta K.MLI.PARAMS+3+S.FIEX.ACL
@ -52,10 +52,10 @@ K.FStat ldy #2
bcs STAT.RET3 bcs STAT.RET3
>PULLW K.Stat.Store.2+1 >PULLW K.Stat.Store.2+1
>PULLA >PULLA
tax tax
lda hFDs.hName-1,x get path lda FILEs.hName-1,x get path
jsr K.GetMemPtr jsr K.GetMemPtr
jsr PFT.YAToMLIPATH jsr PFT.YAToMLIPATH
@ -68,14 +68,14 @@ K.FStat ldy #2
>MLICALL MLIGETEOF >MLICALL MLIGETEOF
bcs STAT.RTS bcs STAT.RTS
ldx #2 ldx #2
.1 lda K.MLI.PARAMS+2,x .1 lda K.MLI.PARAMS+2,x
sta K.S.STAT+S.STAT.SIZE,x sta K.S.STAT+S.STAT.SIZE,x
dex dex
bpl .1 bpl .1
K.Stat.Store ldy #S.STAT-1 K.Stat.Store ldy #S.STAT-1
K.Stat.Store.1 lda K.S.STAT,y K.Stat.Store.1 lda K.S.STAT,y
@ -126,13 +126,13 @@ K.MKDir jsr PFT.CheckPath2
bcs STAT.RET4 bcs STAT.RET4
jsr STAT.PM jsr STAT.PM
lda #S.FI.T.DIR lda #S.FI.T.DIR
sta K.MLI.PARAMS+4 sta K.MLI.PARAMS+4
stz K.MLI.PARAMS+5 stz K.MLI.PARAMS+5
stz K.MLI.PARAMS+6 stz K.MLI.PARAMS+6
lda #S.FI.ST.DIR lda #S.FI.ST.DIR
jmp FS.CREATE jmp FS.MLICREATE
*/-------------------------------------- */--------------------------------------
* # MKFIFO * # MKFIFO
* return a pathname to a new FIFO * return a pathname to a new FIFO
@ -154,7 +154,7 @@ K.MKFIFO jsr STAT.PM
ldy #0 ldy #0
.1 lda UNISTD.DEVFIFO,y .1 lda STAT.TMPFIFO,y
sta (ZPPtr1),y fill pathname buffer sta (ZPPtr1),y fill pathname buffer
iny iny
cpy #9 cpy #9
@ -169,19 +169,11 @@ K.MKFIFO jsr STAT.PM
iny iny
lda #0 lda #0
sta (ZPPtr1),y sta (ZPPtr1),y
lda ZPPtr1
clc
adc #5 skip /dev/
sta ZPPtr1
bcc K.MkNod.I
inc ZPPtr1+1
bra K.MkNod.I bra K.MkNod.I
*/-------------------------------------- */--------------------------------------
* # MkNod * # MkNod
* Create a special or ordinary file. * Create a special or ordinary file.
* (CDEV, BDEV, DSOCKS, SSOCK, PIPE) * (CDEV, BDEV, DSOCK, SSOCK, PIPE)
* ## C * ## C
* `hFILE mknod(const char *pathname, int mode, hFD fd);` * `hFILE mknod(const char *pathname, int mode, hFD fd);`
* ## ASM * ## ASM
@ -193,22 +185,40 @@ K.MKFIFO jsr STAT.PM
* CC = OK, CS = ERROR * CC = OK, CS = ERROR
* A = hFILE * A = hFILE
*\-------------------------------------- *\--------------------------------------
K.MkNod >PULLB IO.hFD K.MkNod >PULLA
jsr DEV.GetPFD
jsr STAT.PM jsr STAT.PM
K.MkNod.I lda IO.hFD K.MkNod.I ldx #1
jsr DEV.GetFD
bcc .2 .1 lda FILEs.hFD-1,x
beq .2
jsr DEV.GetFreeFD
bcs .9 inx
cpx #K.FILE.MAX+1
lda IO.hFD bcc .1
sta hFDs-1,x
lda #E.OOH
* sec
rts
.2 stx IO.hFILE .2 stx IO.hFILE
lda IO.hFD
sta FILEs.hFD-1,x
stz FILEs.oCnt-1,x
lda (pFD)
cmp #S.FD.T.CDEV
beq .8
cmp #S.FD.T.BDEV
beq .8
>LDYA ZPPtr1 >LDYA ZPPtr1
>SYSCALL2 StrDup >SYSCALL2 StrDup
bcs .9 bcs .9
@ -216,10 +226,12 @@ K.MkNod.I lda IO.hFD
txa txa
ldx IO.hFILE ldx IO.hFILE
sta hFDs.hName-1,x store path sta FILEs.hName-1,x store path
.8 txa hFILE
txa hFILE
clc clc
.9 rts .9 rts
*/-------------------------------------- */--------------------------------------
* # pipe * # pipe
@ -249,9 +261,9 @@ K.Pipe sta .1+1 SIZE HI
ldy #S.FD.PIPE.Size+1 ldy #S.FD.PIPE.Size+1
sta (pFD),y sta (pFD),y
ldy #S.FD.PIPE.hMem ldy #S.FD.PIPE.hMem
.8 lda #$ff Self Modified .8 lda #$ff Self Modified
sta (pFD),y sta (pFD),y
lda IO.hFD lda IO.hFD
@ -271,6 +283,8 @@ STAT.PM >PULLW K.S.STAT+S.STAT.MODE
>PULLW ZPPtr1 pathname >PULLW ZPPtr1 pathname
rts rts
*-------------------------------------- *--------------------------------------
STAT.TMPFIFO .AS "/tmp/fifo"
*--------------------------------------
MAN MAN
SAVE usr/src/sys/kernel.s.stat SAVE usr/src/sys/kernel.s.stat
LOAD usr/src/sys/kernel.s LOAD usr/src/sys/kernel.s

View File

@ -6,7 +6,6 @@ NEW
* ## C * ## C
* `int fputc ( hFILE stream , short int character );` * `int fputc ( hFILE stream , short int character );`
* ## ASM * ## ASM
* **In:**
* `>PUSHB stream` * `>PUSHB stream`
* `>PUSHB character` * `>PUSHB character`
* `>SYSCALL fputc` * `>SYSCALL fputc`
@ -35,7 +34,6 @@ K.FPutC lda (pStack) character
* ## C * ## C
* `int putchar ( short int character );` * `int putchar ( short int character );`
* ## ASM * ## ASM
* **In:**
* `lda character` * `lda character`
* `>SYSCALL putchar` * `>SYSCALL putchar`
* ## RETURN VALUE * ## RETURN VALUE
@ -68,7 +66,6 @@ STDIO.Write jsr K.FWrite.PFT
* Write Str to StdOut, appends '\r\n' * Write Str to StdOut, appends '\r\n'
* ## C * ## C
* `int puts ( const char * str );` * `int puts ( const char * str );`
* **In:**
* ## ASM * ## ASM
* `>LDYAI str` * `>LDYAI str`
* `>SYSCALL PutS` * `>SYSCALL PutS`
@ -115,7 +112,6 @@ K.PutS >STYA .1+1
* ## C * ## C
* `int fputs (hFILE stream, const char * str );` * `int fputs (hFILE stream, const char * str );`
* ## ASM * ## ASM
* **In:**
* `>PUSHB stream` * `>PUSHB stream`
* `>PUSHW str` * `>PUSHW str`
* `>SYSCALL fputs` * `>SYSCALL fputs`
@ -173,7 +169,6 @@ K.FPutS lda (pStack)
* ## C * ## C
* `char *fgets(hFILE stream, char * s, int n);` * `char *fgets(hFILE stream, char * s, int n);`
* ## ASM * ## ASM
* **In:**
* `>PUSHB hFILE` * `>PUSHB hFILE`
* `>PUSHW s` * `>PUSHW s`
* `>PUSHW n` * `>PUSHW n`
@ -272,7 +267,6 @@ K.FGetS ldy #3
* ## C * ## C
* `short int getchar ( );` * `short int getchar ( );`
* ## ASM * ## ASM
* **In:**
* `>SYSCALL getchar` * `>SYSCALL getchar`
* ## RETURN VALUE * ## RETURN VALUE
* CC = success * CC = success
@ -286,7 +280,6 @@ K.GetChar ldy #S.PS.hStdIn
* ## C * ## C
* `short int getc ( short int stream );` * `short int getc ( short int stream );`
* ## ASM * ## ASM
* **In:**
* `lda stream` * `lda stream`
* `>SYSCALL getc` * `>SYSCALL getc`
* ## RETURN VALUE * ## RETURN VALUE
@ -335,7 +328,6 @@ K.UngetC clc
* Open a file * Open a file
* ## C * ## C
* `short int fopen ( const char *filename, short int flags, short int ftype, int auxtype );` * `short int fopen ( const char *filename, short int flags, short int ftype, int auxtype );`
* **In:**
* ## ASM * ## ASM
* `>PUSHW filename` * `>PUSHW filename`
* `>PUSHB flags` * `>PUSHB flags`
@ -373,22 +365,29 @@ K.FOpen jsr PFT.CheckPath4
jsr UNISTD.Open jsr UNISTD.Open
bcs K.FOpen.99 bcs K.FOpen.99
ldx IO.hFILE
lda (pFD) lda (pFD)
bne K.FOpen.8 cmp #S.FD.T.DSOCK
bcc .1
lda IO.hFILE don't create file for SOCK/PIPE
tax
inc FILEs.oCnt-1,x
clc
K.FOpen.REGDIR >LDYAI K.Buf256 rts
>SYSCALL2 StrDup
.1 >LDYAI K.Buf256
>STYA ZPPtr1
K.FOpen.REGDIR jsr K.MkNod.I
bcs K.FOpen.90 bcs K.FOpen.90
* tax
inc FILEs.oCnt-1,x
txa
ldx IO.hFILE
sta hFDs.hName-1,x
K.FOpen.8 inc hFDs.oCnt-1,x
txa
* clc * clc
rts rts
K.FOpen.90 pha K.FOpen.90 pha
@ -406,7 +405,6 @@ K.FOpen.99 rts
* ## C * ## C
* `int fclose ( short int stream );` * `int fclose ( short int stream );`
* ## ASM * ## ASM
* **In:**
* `lda stream` * `lda stream`
* `>SYSCALL FClose` * `>SYSCALL FClose`
* ## RETURN VALUE * ## RETURN VALUE
@ -415,44 +413,31 @@ K.FClose jsr PFT.CheckNodeA
bcs K.FRead.RTS bcs K.FRead.RTS
jsr UNISTD.Close jsr UNISTD.Close
bcs K.FRead.RTS
ldx IO.hFILE ldx IO.hFILE
dec hFDs.oCnt-1,x dec FILEs.oCnt-1,x
bne .8
lda hFDs.hName-1,x its a DEV, don't clear FD * clc
beq .8
stz hFDs.hName-1,x bne K.FRead.RTS
jsr K.FreeMem stz FILEs.hFD-1,x
lda (pFD) lda FILEs.hName-1,x
tay
ldx IO.hFILE * clc
lda hFDs-1,x
beq .8
stz hFDs-1,x
cpy #S.FD.T.DSOCK SOCKS will free FDs
beq .8
cpy #S.FD.T.SSOCK
beq .8
beq K.FRead.RTS
stz FILEs.hName-1,x
jmp K.FreeMem jmp K.FreeMem
.8 clc
rts
*/-------------------------------------- */--------------------------------------
* # FRead (BLOCKING) * # FRead (BLOCKING)
* Read bytes from file * Read bytes from file
* ## C * ## C
* `int fread (short int stream, void * ptr, int count );` * `int fread (short int stream, void * ptr, int count );`
* ## ASM * ## ASM
* **In:**
* `>PUSHB stream` * `>PUSHB stream`
* `>PUSHW ptr` * `>PUSHW ptr`
* `>PUSHW count` * `>PUSHW count`
@ -473,7 +458,6 @@ K.FRead.RTS rts
* ## C * ## C
* `int fwrite ( short int stream, const void * ptr, int count );` * `int fwrite ( short int stream, const void * ptr, int count );`
* ## ASM * ## ASM
* **In:**
* `>PUSHB stream` * `>PUSHB stream`
* `>PUSHW ptr` * `>PUSHW ptr`
* `>PUSHW count` * `>PUSHW count`
@ -509,7 +493,6 @@ K.FWrite.RET5 >RET 5
* ## C * ## C
* `int fflush( short int stream );` * `int fflush( short int stream );`
* ## ASM * ## ASM
* **In:**
* `lda stream` * `lda stream`
* `>SYSCALL fflush` * `>SYSCALL fflush`
*\-------------------------------------- *\--------------------------------------
@ -531,7 +514,6 @@ STDIO.IOERR lda #MLI.E.IO
* ## C * ## C
* `int fseek( short int stream, long offset, short int whence );` * `int fseek( short int stream, long offset, short int whence );`
* ## ASM * ## ASM
* **In:**
* `>PUSHB stream` * `>PUSHB stream`
* `>PUSHL offset` * `>PUSHL offset`
* `>PUSHB whence` * `>PUSHB whence`
@ -612,7 +594,6 @@ K.FSeek.RTS rts
* ## C * ## C
* `short int feof( short int stream );` * `short int feof( short int stream );`
* ## ASM * ## ASM
* **In:**
* `lda stream` * `lda stream`
* `>SYSCALL feof` * `>SYSCALL feof`
* ## RETURN VALUE * ## RETURN VALUE
@ -642,7 +623,6 @@ K.FEOF jsr PFT.CheckNodeA
* ## C * ## C
* `long ftell( short int stream );` * `long ftell( short int stream );`
* ## ASM * ## ASM
* **In:**
* `lda stream` * `lda stream`
* `>SYSCALL ftell` * `>SYSCALL ftell`
* ## RETURN VALUE * ## RETURN VALUE
@ -671,7 +651,6 @@ K.FTell jsr PFT.CheckNodeA
* ## C * ## C
* `int remove ( const char *pathname );` * `int remove ( const char *pathname );`
* ## ASM * ## ASM
* **In:**
* `>LDYA pathname` * `>LDYA pathname`
* `>SYSCALL remove` * `>SYSCALL remove`
* ## RETURN VALUE * ## RETURN VALUE
@ -687,7 +666,6 @@ K.Remove jsr PFT.CheckPathYA
* ## C * ## C
* `int rename ( const char * oldpath, const char * newpath );` * `int rename ( const char * oldpath, const char * newpath );`
* ## ASM * ## ASM
* **In:**
* `>PUSHW oldpath` * `>PUSHW oldpath`
* `>PUSHW newpath` * `>PUSHW newpath`
* `>SYSCALL rename` * `>SYSCALL rename`
@ -729,7 +707,6 @@ K.Rename jsr PFT.CheckPath2
* `int fprintf ( short int stream, const char *format, ... );` * `int fprintf ( short int stream, const char *format, ... );`
* `int sprintf ( char *str, const char *format, ... );` * `int sprintf ( char *str, const char *format, ... );`
* ## ASM * ## ASM
* **In:**
* PrintF : (example is for printing Y,A as integer : format="%I", 2 bytes) * PrintF : (example is for printing Y,A as integer : format="%I", 2 bytes)
* `>PUSHW format` * `>PUSHW format`
* `>PUSHW i` * `>PUSHW i`
@ -1145,7 +1122,6 @@ STDIO.RTS rts
* `int fscanf( short int stream, const char *format, ... );` * `int fscanf( short int stream, const char *format, ... );`
* `int sscanf ( const char *s, const char *format, ... );` * `int sscanf ( const char *s, const char *format, ... );`
* ## ASM * ## ASM
* **In:**
* ScanF : * ScanF :
* `>PUSHW format` * `>PUSHW format`
* `>PUSHW ptr` * `>PUSHW ptr`

View File

@ -6,7 +6,6 @@ NEW
* ## C * ## C
* `float strtof (const char* str, char** endptr );` * `float strtof (const char* str, char** endptr );`
* ## ASM * ## ASM
* **In:**
* `>PUSHW str` * `>PUSHW str`
* `>PUSHWI EndPtr` * `>PUSHWI EndPtr`
* `>SYSCALL StrToF` * `>SYSCALL StrToF`
@ -29,7 +28,6 @@ K.StrToF >PULLW ZPPtr1
* ## C * ## C
* `float atof ( const char* str );` * `float atof ( const char* str );`
* ## ASM * ## ASM
* **In:**
* `>LDYA str` * `>LDYA str`
* `>SYSCALL atof` * `>SYSCALL atof`
* ## RETURN VALUE * ## RETURN VALUE
@ -51,7 +49,6 @@ K.AToF >STYA TXTPTR Ptr to source string
* `long strtol (const char* str, char** endptr, int base);` * `long strtol (const char* str, char** endptr, int base);`
* `unsigned long strtoul (const char* str, char** endptr, int base);` * `unsigned long strtoul (const char* str, char** endptr, int base);`
* ## ASM * ## ASM
* **In:**
* `>PUSHW str` * `>PUSHW str`
* `>PUSHW EndPtr` * `>PUSHW EndPtr`
* `>PUSHB Base` * `>PUSHB Base`
@ -84,7 +81,6 @@ K.StrToUL.rts rts
* ## C * ## C
* `long atol ( const char * str );` * `long atol ( const char * str );`
* ## ASM * ## ASM
* **In:**
* `>LDYA str` * `>LDYA str`
* `>SYSCALL atol` * `>SYSCALL atol`
* ## RETURN VALUE * ## RETURN VALUE
@ -113,7 +109,6 @@ K.AToL.I jsr MATH.Dec2ACC32
* ## C * ## C
* `int atoi ( const char * str );` * `int atoi ( const char * str );`
* ## ASM * ## ASM
* **In:**
* `>LDYAI str` * `>LDYAI str`
* `>SYSCALL atoi` * `>SYSCALL atoi`
* ## RETURN VALUE * ## RETURN VALUE
@ -133,7 +128,6 @@ K.atoi >STYA ZPPtr2
* ## C / CSH * ## C / CSH
* `char *realpath(const char *path, char *resolvedpath);` * `char *realpath(const char *path, char *resolvedpath);`
* ## ASM * ## ASM
* **In:**
* `>PUSHW path` * `>PUSHW path`
* `>PUSHW resolvedpath` * `>PUSHW resolvedpath`
* `>SYSCALL realpath` * `>SYSCALL realpath`

View File

@ -34,7 +34,6 @@ K.StrLen >STYA .1+1
* ## C * ## C
* `char * strcat ( char * destination, const char * source );` * `char * strcat ( char * destination, const char * source );`
* ## ASM * ## ASM
* **In:**
* `>PUSHWI destination` * `>PUSHWI destination`
* `>PUSHWI source` * `>PUSHWI source`
* `>SYSCALL strcat` * `>SYSCALL strcat`
@ -49,7 +48,6 @@ K.StrCat sec
* ## C * ## C
* `char * strcpy ( char * destination, const char * source );` * `char * strcpy ( char * destination, const char * source );`
* ## ASM * ## ASM
* **In:**
* `>PUSHWI destination` * `>PUSHWI destination`
* `>PUSHWI source` * `>PUSHWI source`
* `>SYSCALL strcpy` * `>SYSCALL strcpy`
@ -146,7 +144,6 @@ K.StrDup.RTS rts
* `int strupr ( char * str);` * `int strupr ( char * str);`
* `int strlwr ( char * str);` * `int strlwr ( char * str);`
* ## ASM * ## ASM
* **In:**
* `>LDYAI str` * `>LDYAI str`
* `>SYSCALL strupr` * `>SYSCALL strupr`
* `>SYSCALL strlwr` * `>SYSCALL strlwr`
@ -188,7 +185,6 @@ K.StrLwr ldx #2
* ## C * ## C
* `int strcmp(const char *s1, const char *s2);` * `int strcmp(const char *s1, const char *s2);`
* ## ASM * ## ASM
* **In:**
* `>PUSHWI s1` * `>PUSHWI s1`
* `>PUSHWI s2` * `>PUSHWI s2`
* `>SYSCALL strcmp` * `>SYSCALL strcmp`
@ -206,7 +202,6 @@ K.StrCmp sec
* ## C * ## C
* `int strcasecmp(const char *s1, const char *s2);` * `int strcasecmp(const char *s1, const char *s2);`
* ## ASM * ## ASM
* **In:**
* `>PUSHWI s1` * `>PUSHWI s1`
* `>PUSHWI s2` * `>PUSHWI s2`
* `>SYSCALL strcasecmp` * `>SYSCALL strcasecmp`

View File

@ -5,7 +5,6 @@ NEW
* ## C * ## C
* `hFD open(const char *pathname, short int flags);` * `hFD open(const char *pathname, short int flags);`
* ## ASM * ## ASM
* **In:**
* `>PUSHW pathname` * `>PUSHW pathname`
* `>PUSHB flags` * `>PUSHB flags`
* `>SYSCALL open` * `>SYSCALL open`
@ -23,11 +22,11 @@ K.Open jsr PFT.CheckPath1
*-------------------------------------- *--------------------------------------
UNISTD.Open ldx #5 /dev/ UNISTD.Open ldx #5 /dev/
cpx K.MLI.PATH cpx K.MLI.PATH
bcs .8 bcs .2
.1 lda K.MLI.PATH,x .1 lda K.MLI.PATH,x
cmp UNISTD.DEVFIFO-1,x cmp UNISTD.DEV-1,x
bne .8 bne .2
dex dex
bne .1 bne .1
@ -37,12 +36,47 @@ UNISTD.Open ldx #5 /dev/
>LDYAI K.MLI.PATH+6 skip $/dev/ >LDYAI K.MLI.PATH+6 skip $/dev/
jsr K.GetDevByName jsr K.GetDevByName
bcs .9 bcc .6
lda (pFD) #S.FD.T .2 ldx #1
.3 lda FILEs.hFD-1,x
beq .5
lda FILEs.hName-1,x
beq .5
jsr K.GetMemPtr
>STYA ZPPtr1
ldy #$ff
.4 iny
lda K.Buf256,y
cmp (ZPPtr1),y
bne .5
cmp #0
bne .4
stx IO.hFILE
lda FILEs.hFD-1,x
jsr DEV.GetPFD
bra .7
.5 inx
cpx #K.FILE.MAX+1
bcc .3
jmp FS.OPEN.REG
.6 jsr DEV.GetPDrv
.7 lda (pFD) #S.FD.T
tax tax
jmp (.2-2,x) jmp (.8-2,x)
.2 .8
* .DA STDIO.IOERR REG * .DA STDIO.IOERR REG
.DA STDIO.IOERR DIR .DA STDIO.IOERR DIR
.DA DEV.OPEN .DA DEV.OPEN
@ -52,15 +86,12 @@ UNISTD.Open ldx #5 /dev/
.DA SOCK.OPEN .DA SOCK.OPEN
.DA PIPE.OPEN .DA PIPE.OPEN
.8 jmp FS.OPEN.REG
.9 rts .9 rts
*/-------------------------------------- */--------------------------------------
* # close * # close
* ## C * ## C
* `int close(hFD fd);` * `int close(hFD fd);`
* ## ASM * ## ASM
* **In:**
* `lda fd` * `lda fd`
* `>SYSCALL close` * `>SYSCALL close`
*\-------------------------------------- *\--------------------------------------
@ -70,8 +101,8 @@ UNISTD.Close lda (pFD) #S.FD.T
tax tax
jmp (.1,x) jmp (.1,x)
.1 .DA FS.MLICLOSE .1 .DA FS.CLOSE
.DA FS.MLICLOSE .DA FS.CLOSE
.DA DEV.CLOSE .DA DEV.CLOSE
.DA DEV.CLOSE .DA DEV.CLOSE
.DA STDIO.IOERR LNK .DA STDIO.IOERR LNK
@ -83,7 +114,6 @@ UNISTD.Close lda (pFD) #S.FD.T
* ## C * ## C
* `int read(hFD fd, void *buf, int count);` * `int read(hFD fd, void *buf, int count);`
* ## ASM * ## ASM
* **In:**
* `>PUSHB fd` * `>PUSHB fd`
* `>PUSHW buf` * `>PUSHW buf`
* `>PUSHW count` * `>PUSHW count`
@ -94,7 +124,7 @@ UNISTD.Close lda (pFD) #S.FD.T
*\-------------------------------------- *\--------------------------------------
K.Read ldy #4 hFD K.Read ldy #4 hFD
lda (pStack),y lda (pStack),y
jsr DEV.GetPFD jsr DEV.GetPFD
UNISTD.Read lda (pFD) #S.FD.T UNISTD.Read lda (pFD) #S.FD.T
@ -114,7 +144,6 @@ UNISTD.Read lda (pFD) #S.FD.T
* ## C * ## C
* `int write(hFD fd, const void *buf, int count);` * `int write(hFD fd, const void *buf, int count);`
* ## ASM * ## ASM
* **In:**
* `>PUSHB fd` * `>PUSHB fd`
* `>PUSHW buf` * `>PUSHW buf`
* `>PUSHW count` * `>PUSHW count`
@ -146,7 +175,6 @@ UNISTD.Write lda (pFD) #S.FD.T
* ## C * ## C
* `int lseek( short int hFD, long offset, short int whence );` * `int lseek( short int hFD, long offset, short int whence );`
* ## ASM * ## ASM
* **In:**
* `>PUSHB hFD` * `>PUSHB hFD`
* `>PUSHL offset` * `>PUSHL offset`
* `>PUSHB whence` * `>PUSHB whence`
@ -159,7 +187,6 @@ UNISTD.Write lda (pFD) #S.FD.T
* ## C * ## C
* `short int chown(const char *pathname, short int owner, short int group);` * `short int chown(const char *pathname, short int owner, short int group);`
* ## ASM * ## ASM
* **In:**
* `>PUSHW pathname` * `>PUSHW pathname`
* `>PUSHB owner` * `>PUSHB owner`
* `>PUSHB group` * `>PUSHB group`
@ -168,12 +195,12 @@ UNISTD.Write lda (pFD) #S.FD.T
*\-------------------------------------- *\--------------------------------------
K.ChOwn jsr PFT.CheckPath2 K.ChOwn jsr PFT.CheckPath2
bcs .9 bcs .9
stz K.MLI.PARAMS+3+S.FIEX.ACL read mode stz K.MLI.PARAMS+3+S.FIEX.ACL read mode
>MLICALL MLIACL >MLICALL MLIACL
bcs .9 bcs .9
lda (pStack) lda (pStack)
bmi .1 bmi .1
@ -184,15 +211,15 @@ K.ChOwn jsr PFT.CheckPath2
bmi .2 bmi .2
sta K.MLI.PARAMS+3+S.FIEX.ACL.UID sta K.MLI.PARAMS+3+S.FIEX.ACL.UID
.2 lda #$57 write mode .2 lda #$57 write mode
sta K.MLI.PARAMS+3+S.FIEX.ACL sta K.MLI.PARAMS+3+S.FIEX.ACL
>MLICALL MLIACL >MLICALL MLIACL
.9 >RET 4 .9 >RET 4
*-------------------------------------- *--------------------------------------
UNISTD.DEVFIFO .AS "/dev/fifo" UNISTD.DEV .AS "/dev/"
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/kernel.s.unistd SAVE usr/src/sys/kernel.s.unistd

View File

@ -3,25 +3,26 @@ NEW
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF sys/kernel
.INB inc/macros.i .TF sys/kernel
.INB inc/a2osx.i
.INB inc/io.i
.INB inc/io.iic.i
.INB inc/io.iigs.i
.INB inc/mli.i
.INB inc/mli.e.i
.INB inc/net.telnet.i
.INB inc/xy.mouse.i
.INB inc/kernel.i .INB inc/macros.i
.INB usr/src/sys/kernel.s.def .INB inc/a2osx.i
.INB usr/src/sys/kernel.s.init .INB inc/io.i
.INB usr/src/shared/x.printf.s .INB inc/io.iic.i
.INB inc/io.iigs.i
.INB inc/mli.i
.INB inc/mli.e.i
.INB inc/net.telnet.i
.INB inc/xy.mouse.i
.INB inc/kernel.i
.INB usr/src/sys/kernel.s.def
.INB usr/src/sys/kernel.s.init
.INB usr/src/shared/x.printf.s
A2osX.Unpak >STYA ZPOutBufPtr A2osX.Unpak >STYA ZPOutBufPtr
.INB usr/src/shared/x.unpak.s .INB usr/src/shared/x.unpak.s
PAKME.MAIN .DA MAIN PAKME.MAIN .DA MAIN
PAKME.AUX .DA AUX PAKME.AUX .DA AUX
@ -33,12 +34,12 @@ MAIN .DA #0
.DA MAIN.S .DA MAIN.S
MAIN.B .PH $1000 MAIN.B .PH $1000
.INB usr/src/sys/kernel.s.gp .INB usr/src/sys/kernel.s.gp
.INB usr/src/sys/kernel.s.core .INB usr/src/sys/kernel.s.core
.INB usr/src/sys/kernel.s.drv .INB usr/src/sys/kernel.s.drv
.INB usr/src/sys/kernel.s.pft .INB usr/src/sys/kernel.s.pft
.INB usr/src/sys/kernel.s.fs .INB usr/src/sys/kernel.s.fs
.INB usr/src/sys/kernel.s.mathf .INB usr/src/sys/kernel.s.mathf
.EP .EP
MAIN.S .EQ *-MAIN.B MAIN.S .EQ *-MAIN.B
@ -47,18 +48,18 @@ AUX .DA #0
AUX.B .PH Mem.XHiMem AUX.B .PH Mem.XHiMem
.DA SHARED.TXTPTRgn .DA SHARED.TXTPTRgn OSD.TXTPTRgn
.INB usr/src/sys/kernel.s.jmpx .INB usr/src/sys/kernel.s.jmpx
.INB usr/src/sys/kernel.s.termx .INB usr/src/sys/kernel.s.termx
.INB usr/src/sys/kernel.s.strvx .INB usr/src/sys/kernel.s.strvx
.INB usr/src/sys/kernel.s.envx .INB usr/src/sys/kernel.s.envx
.INB usr/src/sys/kernel.s.timex .INB usr/src/sys/kernel.s.timex
.INB usr/src/sys/kernel.s.md5x .INB usr/src/sys/kernel.s.md5x
.INB usr/src/sys/kernel.s.pwdx .INB usr/src/sys/kernel.s.pwdx
.INB usr/src/sys/kernel.s.slistx .INB usr/src/sys/kernel.s.slistx
.INB usr/src/sys/kernel.s.blistx .INB usr/src/sys/kernel.s.blistx
.INB usr/src/sys/kernel.s.errorx .INB usr/src/sys/kernel.s.errorx
.EP .EP
AUX.S .EQ *-AUX.B AUX.S .EQ *-AUX.B
@ -67,14 +68,14 @@ D1 .DA #0
D1.B .PH $D000 D1.B .PH $D000
.DA #RRAMWRAMBNK1 .DA #RRAMWRAMBNK1
.INB usr/src/sys/kernel.s.stat .INB usr/src/sys/kernel.s.stat
.INB usr/src/sys/kernel.s.dirent .INB usr/src/sys/kernel.s.dirent
.INB usr/src/sys/kernel.s.unistd .INB usr/src/sys/kernel.s.unistd
.INB usr/src/sys/kernel.s.stdio .INB usr/src/sys/kernel.s.stdio
.INB usr/src/sys/kernel.s.prodos .INB usr/src/sys/kernel.s.prodos
.INB usr/src/sys/kernel.s.dev .INB usr/src/sys/kernel.s.dev
.INB usr/src/sys/kernel.s.sock .INB usr/src/sys/kernel.s.sock
.INB usr/src/sys/kernel.s.pipe .INB usr/src/sys/kernel.s.pipe
.EP .EP
D1.S .EQ *-D1.B D1.S .EQ *-D1.B
@ -83,14 +84,14 @@ D2 .DA #0
D2.B .PH $D000 D2.B .PH $D000
.DA #RRAMWRAMBNK2 .DA #RRAMWRAMBNK2
.INB usr/src/sys/kernel.s.mount .INB usr/src/sys/kernel.s.mount
.INB usr/src/sys/kernel.s.stkobj .INB usr/src/sys/kernel.s.stkobj
.INB usr/src/sys/kernel.s.arg .INB usr/src/sys/kernel.s.arg
.INB usr/src/sys/kernel.s.error .INB usr/src/sys/kernel.s.error
.INB usr/src/sys/kernel.s.stdlib .INB usr/src/sys/kernel.s.stdlib
.INB usr/src/sys/kernel.s.string .INB usr/src/sys/kernel.s.string
.INB usr/src/sys/kernel.s.bin .INB usr/src/sys/kernel.s.bin
.INB usr/src/sys/kernel.s.ps .INB usr/src/sys/kernel.s.ps
.EP .EP
D2.S .EQ *-D2.B D2.S .EQ *-D2.B
@ -98,22 +99,22 @@ E0 .DA #0
.DA E0.S .DA E0.S
E0.B .PH $E000 E0.B .PH $E000
.INB usr/src/sys/kernel.s.jmp .INB usr/src/sys/kernel.s.jmp
.INB usr/src/sys/kernel.s.irq .INB usr/src/sys/kernel.s.irq
.INB usr/src/sys/kernel.s.shared .INB usr/src/sys/kernel.s.shared
.INB usr/src/sys/kernel.s.math .INB usr/src/sys/kernel.s.math
.INB usr/src/sys/kernel.s.math16 .INB usr/src/sys/kernel.s.math16
.INB usr/src/sys/kernel.s.math32 .INB usr/src/sys/kernel.s.math32
.INB usr/src/sys/kernel.s.term
.INB usr/src/sys/kernel.s.strv .INB usr/src/sys/kernel.s.term
.INB usr/src/sys/kernel.s.env .INB usr/src/sys/kernel.s.strv
.INB usr/src/sys/kernel.s.time .INB usr/src/sys/kernel.s.env
.INB usr/src/sys/kernel.s.md5 .INB usr/src/sys/kernel.s.time
.INB usr/src/sys/kernel.s.pwd .INB usr/src/sys/kernel.s.md5
.INB usr/src/sys/kernel.s.slist .INB usr/src/sys/kernel.s.pwd
.INB usr/src/sys/kernel.s.slist
.INB usr/src/sys/kernel.s.mem .INB usr/src/sys/kernel.s.mem
DevMgr.Timer .BS 1 DevMgr.Timer .BS 1
DevMgr.Stat .DA DevMgr.FreeMem DevMgr.Stat .DA DevMgr.FreeMem
@ -129,7 +130,7 @@ E0.S .EQ *-E0.B
.DA #5 Chunk Count .DA #5 Chunk Count
.DA PAKME.MAIN Chunks .DA PAKME.MAIN Chunks
.INB usr/src/sys/kernel.s.ctrl .INB usr/src/sys/kernel.s.ctrl
MAN MAN
SAVE usr/src/sys/kernel.s SAVE usr/src/sys/kernel.s
ASM ASM