mirror of https://github.com/A2osX/A2osX.git
KERNEL 0.95
This commit is contained in:
parent
9c547bcd35
commit
a8cf411cd7
|
@ -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`
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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 ?
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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
|
||||||
|
|
11
BIN/LS.S.txt
11
BIN/LS.S.txt
|
@ -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
|
||||||
|
|
145
BIN/LSDEV.S.txt
145
BIN/LSDEV.S.txt
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
28
BIN/NL.S.txt
28
BIN/NL.S.txt
|
@ -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
|
||||||
|
|
||||||
|
|
76
BIN/OD.S.txt
76
BIN/OD.S.txt
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
12
BIN/PS.S.txt
12
BIN/PS.S.txt
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
|
|
11
BIN/WC.S.txt
11
BIN/WC.S.txt
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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`
|
||||||
|
|
|
@ -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`
|
||||||
|
|
|
@ -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`
|
||||||
|
|
|
@ -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
|
||||||
|
|
127
SYS/KERNEL.S.txt
127
SYS/KERNEL.S.txt
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue