mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-27 00:29:29 +00:00
Kernel 0.94
This commit is contained in:
parent
d34a1cbf52
commit
5bba299976
163
.Docs/KERNEL.md
163
.Docs/KERNEL.md
|
@ -85,7 +85,7 @@ X = hDev
|
||||||
`int getdevstatus(short int DevID, S.DIB *dstat);`
|
`int getdevstatus(short int DevID, S.DIB *dstat);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
`PUSHB DevID`
|
`>PUSHB DevID`
|
||||||
`>PUSHW S.DIB`
|
`>PUSHW S.DIB`
|
||||||
`>SYSCALL GetDevStatus`
|
`>SYSCALL GetDevStatus`
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ Create a hDEV
|
||||||
## ASM
|
## ASM
|
||||||
`>PUSHW fd`
|
`>PUSHW fd`
|
||||||
`>PUSHW devname`
|
`>PUSHW devname`
|
||||||
`>SYSCALL mkdev
|
`>SYSCALL mkdev`
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
A = hDEV
|
A = hDEV
|
||||||
|
@ -108,7 +108,7 @@ Create a hDEV
|
||||||
# IOCTL
|
# IOCTL
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int ioctl(short int DevID, int request, void * param );`
|
`int ioctl(short int DevID, short int request, void *param);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
`>PUSHB hDEV`
|
`>PUSHB hDEV`
|
||||||
|
@ -125,7 +125,7 @@ Create a hDEV
|
||||||
`int hDIR opendir (const char * dirpath);`
|
`int hDIR opendir (const char * dirpath);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
`>PUSHW dirpath`
|
`>LDYA dirpath`
|
||||||
`>SYSCALL opendir`
|
`>SYSCALL opendir`
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
@ -171,7 +171,6 @@ Change or add an environment variable
|
||||||
`int setenv(const char *name, const char *value);`
|
`int setenv(const char *name, const char *value);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
|
||||||
`>PUSHW name`
|
`>PUSHW name`
|
||||||
`>PUSHW value`
|
`>PUSHW value`
|
||||||
`>SYSCALL setenv`
|
`>SYSCALL setenv`
|
||||||
|
@ -186,7 +185,6 @@ and returns a pointer to the corresponding value string.
|
||||||
`char *getenv(const char *name, char *value);`
|
`char *getenv(const char *name, char *value);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
|
||||||
`>PUSHW name`
|
`>PUSHW name`
|
||||||
`>PUSHW value`
|
`>PUSHW value`
|
||||||
`>SYSCALL getenv`
|
`>SYSCALL getenv`
|
||||||
|
@ -215,7 +213,6 @@ Remove an environment variable
|
||||||
`int unsetenv(const char *name);`
|
`int unsetenv(const char *name);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
|
||||||
`>PUSHW name`
|
`>PUSHW name`
|
||||||
`>SYSCALL unsetenv`
|
`>SYSCALL unsetenv`
|
||||||
|
|
||||||
|
@ -550,29 +547,6 @@ CS : not found
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
|
||||||
# GetPWName
|
|
||||||
|
|
||||||
## C
|
|
||||||
`int getpwname(const char* name, S.PW *passwd);`
|
|
||||||
|
|
||||||
## ASM
|
|
||||||
`>PUSHW name`
|
|
||||||
`>PUSHW passwd`
|
|
||||||
`>SYSCALL getpwname`
|
|
||||||
|
|
||||||
## RETURN VALUE
|
|
||||||
|
|
||||||
# PutPW
|
|
||||||
|
|
||||||
## C
|
|
||||||
`int putpw( S.PW* passwd );`
|
|
||||||
|
|
||||||
## ASM
|
|
||||||
`>PUSHW passwd`
|
|
||||||
`>SYSCALL putpw`
|
|
||||||
|
|
||||||
## RETURN VALUE
|
|
||||||
|
|
||||||
# GetGRGID
|
# GetGRGID
|
||||||
|
|
||||||
## C
|
## C
|
||||||
|
@ -585,6 +559,18 @@ CS : not found
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
|
||||||
|
# GetPWName
|
||||||
|
|
||||||
|
## C
|
||||||
|
`int getpwname(const char* name, S.PW *passwd);`
|
||||||
|
|
||||||
|
## ASM
|
||||||
|
`>PUSHW name`
|
||||||
|
`>PUSHW passwd`
|
||||||
|
`>SYSCALL getpwname`
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
|
||||||
# GetGRName
|
# GetGRName
|
||||||
|
|
||||||
## C
|
## C
|
||||||
|
@ -597,6 +583,17 @@ CS : not found
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
|
||||||
|
# PutPW
|
||||||
|
|
||||||
|
## C
|
||||||
|
`int putpw( S.PW* passwd );`
|
||||||
|
|
||||||
|
## ASM
|
||||||
|
`>PUSHW passwd`
|
||||||
|
`>SYSCALL putpw`
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
|
||||||
# PutGR
|
# PutGR
|
||||||
|
|
||||||
## C
|
## C
|
||||||
|
@ -608,6 +605,29 @@ CS : not found
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
|
||||||
|
# OpenSession
|
||||||
|
|
||||||
|
## C
|
||||||
|
`short int hSID opensession(const char *name, const char *passwd);`
|
||||||
|
|
||||||
|
## ASM
|
||||||
|
`>PUSHW name`
|
||||||
|
`>PUSHW passwd`
|
||||||
|
`>SYSCALL OpenSession`
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
|
||||||
|
# CloseSession
|
||||||
|
|
||||||
|
## C
|
||||||
|
`int closesession(short int hSID);`
|
||||||
|
|
||||||
|
## ASM
|
||||||
|
`>PUSHB hSID`
|
||||||
|
`>SYSCALL CloseSession`
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
|
||||||
# SListGetData
|
# SListGetData
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
|
@ -649,7 +669,7 @@ CS : not found
|
||||||
## ASM
|
## ASM
|
||||||
`>PUSHB hSList`
|
`>PUSHB hSList`
|
||||||
`>PUSHW KeyID`
|
`>PUSHW KeyID`
|
||||||
`>PUSHW DataPtr`
|
`>PUSHW KeyPtr`
|
||||||
`>SYSCALL SListGetByID`
|
`>SYSCALL SListGetByID`
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
@ -700,7 +720,6 @@ Change The type of a ProDOS File
|
||||||
`int chtyp(const char *filepath, short int filetype);`
|
`int chtyp(const char *filepath, short int filetype);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
|
||||||
`>PUSHW filepath`
|
`>PUSHW filepath`
|
||||||
`>PUSHB filetype`
|
`>PUSHB filetype`
|
||||||
`>SYSCALL chtyp`
|
`>SYSCALL chtyp`
|
||||||
|
@ -714,7 +733,6 @@ Return information about a file
|
||||||
`int stat(const char *pathname, struct stat *statbuf);`
|
`int stat(const char *pathname, struct stat *statbuf);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
|
||||||
`>PUSHW pathname`
|
`>PUSHW pathname`
|
||||||
`>PUSHW statbuf`
|
`>PUSHW statbuf`
|
||||||
`>SYSCALL stat`
|
`>SYSCALL stat`
|
||||||
|
@ -728,7 +746,6 @@ create a directory
|
||||||
`int mkdir(const char *pathname, int mode);`
|
`int mkdir(const char *pathname, int mode);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
|
||||||
`>PUSHW pathname`
|
`>PUSHW pathname`
|
||||||
`>PUSHW mode`
|
`>PUSHW mode`
|
||||||
`>SYSCALL mkdir`
|
`>SYSCALL mkdir`
|
||||||
|
@ -742,17 +759,16 @@ A = EC
|
||||||
return a pathname to a new FIFO
|
return a pathname to a new FIFO
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int mkfifo( char *pathname, int mode );`
|
`hFILE mkfifo(const char *pathname, int mode);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
`>PUSHW pathname`
|
||||||
`>PUSHW mode`
|
`>PUSHW mode`
|
||||||
`>LDYA pathname`
|
|
||||||
`>SYSCALL mkfifo`
|
`>SYSCALL mkfifo`
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
CC = OK, CS = ERROR
|
CC = OK, CS = ERROR
|
||||||
A = hFD
|
A = hFILE
|
||||||
|
|
||||||
# MkNod
|
# MkNod
|
||||||
Create a special or ordinary file.
|
Create a special or ordinary file.
|
||||||
|
@ -762,10 +778,9 @@ Create a special or ordinary file.
|
||||||
`hFILE mknod(const char *pathname, int mode, hFD fd);`
|
`hFILE mknod(const char *pathname, int mode, hFD fd);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
`>PUSHW pathname`
|
||||||
`>PUSHB fd`
|
|
||||||
`>PUSHW mode`
|
`>PUSHW mode`
|
||||||
`>LDYA pathname`
|
`>PUSHB fd`
|
||||||
`>SYSCALL mknod`
|
`>SYSCALL mknod`
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
@ -789,7 +804,7 @@ A = hFD
|
||||||
Print A (char) to StdOut
|
Print A (char) to StdOut
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int putchar ( int character );`
|
`int putchar ( short int character );`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
**In:**
|
||||||
|
@ -803,7 +818,7 @@ CC = success
|
||||||
Print A (char) to hFILE
|
Print A (char) to hFILE
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int fputc ( hFILE stream , int character );`
|
`int fputc ( hFILE stream , short int character );`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
**In:**
|
||||||
|
@ -823,7 +838,7 @@ Write Str to StdOut, appends '\r\n'
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
`>LDYAI str`
|
`>LDYAI str`
|
||||||
`>SYSCALL puts`
|
`>SYSCALL PutS`
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
CC = success
|
CC = success
|
||||||
|
@ -933,7 +948,7 @@ int fclose ( hFILE stream );
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
**In:**
|
||||||
`lda stream`
|
`lda stream`
|
||||||
`>SYSCALL fclose`
|
`>SYSCALL FClose`
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
|
||||||
|
@ -1031,7 +1046,7 @@ int remove(const char *pathname);
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
**In:**
|
||||||
`>PUSHW pathname`
|
`>LDYA pathname`
|
||||||
`>SYSCALL remove`
|
`>SYSCALL remove`
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
@ -1069,7 +1084,7 @@ PrintF : (example is for printing Y,A as integer : format="%I", 2 bytes)
|
||||||
`>PUSHW i`
|
`>PUSHW i`
|
||||||
`...`
|
`...`
|
||||||
`>PUSHBI 2` #bytecount
|
`>PUSHBI 2` #bytecount
|
||||||
`>SYSCALL printf`
|
`>SYSCALL PrintF`
|
||||||
FPrintF :
|
FPrintF :
|
||||||
`>PUSHB hFILE`
|
`>PUSHB hFILE`
|
||||||
`>PUSHW format`
|
`>PUSHW format`
|
||||||
|
@ -1172,7 +1187,7 @@ TODO : %10s
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
A = Number of arguments filled.
|
A = Number of arguments filled.
|
||||||
|
|
||||||
# strtof
|
# StrToF
|
||||||
Convert String to 40 bits Float
|
Convert String to 40 bits Float
|
||||||
|
|
||||||
## C
|
## C
|
||||||
|
@ -1180,9 +1195,9 @@ Convert String to 40 bits Float
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
**In:**
|
||||||
|
`>PUSHW str`
|
||||||
`>PUSHWI EndPtr`
|
`>PUSHWI EndPtr`
|
||||||
`>LDYA str`
|
`>SYSCALL StrToF`
|
||||||
`>SYSCALL strtof`
|
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
On stack (float)
|
On stack (float)
|
||||||
|
@ -1213,7 +1228,7 @@ Convert String to 32 bits (unsigned) int
|
||||||
`>PUSHW str`
|
`>PUSHW str`
|
||||||
`>PUSHW EndPtr`
|
`>PUSHW EndPtr`
|
||||||
`>PUSHB Base`
|
`>PUSHB Base`
|
||||||
`>SYSCALL strtol`
|
`>SYSCALL StrToL`
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
On stack (long)
|
On stack (long)
|
||||||
|
@ -1385,15 +1400,6 @@ CS : no match
|
||||||
CC, Y,A=0
|
CC, Y,A=0
|
||||||
CS, Y,A > 0 or < 0
|
CS, Y,A > 0 or < 0
|
||||||
|
|
||||||
# StrVShift
|
|
||||||
|
|
||||||
## ASM
|
|
||||||
`>PUSHB hSTRV`
|
|
||||||
`>PUSHB index`
|
|
||||||
`>SYSCALL StrVShift`
|
|
||||||
|
|
||||||
## RETURN VALUE
|
|
||||||
|
|
||||||
# StrVGet
|
# StrVGet
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
|
@ -1406,6 +1412,15 @@ CS : no match
|
||||||
CC: Y,A = Ptr
|
CC: Y,A = Ptr
|
||||||
CS: Y,A = NULL
|
CS: Y,A = NULL
|
||||||
|
|
||||||
|
# StrVShift
|
||||||
|
|
||||||
|
## ASM
|
||||||
|
`>PUSHB hSTRV`
|
||||||
|
`>PUSHB index`
|
||||||
|
`>SYSCALL StrVShift`
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
|
||||||
# StrVAdd
|
# StrVAdd
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
|
@ -1486,20 +1501,6 @@ Convert S.TIME struct to CSTR
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
|
||||||
# ChOwn
|
|
||||||
|
|
||||||
## C
|
|
||||||
`short int chown(const char *pathname, short int owner, short int group);`
|
|
||||||
|
|
||||||
## ASM
|
|
||||||
**In:**
|
|
||||||
`>PUSHW pathname`
|
|
||||||
`>PUSHB owner`
|
|
||||||
`>PUSHB group`
|
|
||||||
`>SYSCALL chown`
|
|
||||||
|
|
||||||
## RETURN VALUE
|
|
||||||
|
|
||||||
# open
|
# open
|
||||||
|
|
||||||
## C
|
## C
|
||||||
|
@ -1557,6 +1558,20 @@ CS: A = EC
|
||||||
CC: Y,A = bytes written
|
CC: Y,A = bytes written
|
||||||
CS: A = EC
|
CS: A = EC
|
||||||
|
|
||||||
|
# ChOwn
|
||||||
|
|
||||||
|
## C
|
||||||
|
`short int chown(const char *pathname, short int owner, short int group);`
|
||||||
|
|
||||||
|
## ASM
|
||||||
|
**In:**
|
||||||
|
`>PUSHW pathname`
|
||||||
|
`>PUSHB owner`
|
||||||
|
`>PUSHB group`
|
||||||
|
`>SYSCALL chown`
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
|
||||||
## License
|
## License
|
||||||
A2osX is licensed under the GNU General Public License.
|
A2osX is licensed under the GNU General Public License.
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,29 @@
|
||||||
## Copyright
|
## Copyright
|
||||||
Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
|
Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
|
||||||
|
|
||||||
|
# D2TrkWrite16s
|
||||||
|
Write a track (16 sectors)
|
||||||
|
**In:**
|
||||||
|
PUSHB = DSSS0000
|
||||||
|
PUSHB = TrackNum * 4 : 0->136+
|
||||||
|
PUSHW = Ptr to 16*256 buffer
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
CC : success
|
||||||
|
CS : A = Error
|
||||||
|
A=0, currently starting/seeking...
|
||||||
|
|
||||||
|
# D2TrkWriteNIB
|
||||||
|
Write a track (NIBBLE)
|
||||||
|
**In:**
|
||||||
|
PUSHB = DSSS0000
|
||||||
|
PUSHW = Ptr to NIBBLE buffer (0 ended)
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
CC : success
|
||||||
|
CS : A = Error
|
||||||
|
A=0, currently starting/seeking...
|
||||||
|
|
||||||
# GetProDOSCatSize
|
# GetProDOSCatSize
|
||||||
Compute space needed for ProDOS Catalog
|
Compute space needed for ProDOS Catalog
|
||||||
|
|
||||||
|
@ -35,30 +58,6 @@ int getprodoscatsize (short int options, short int catsize, int devsize );
|
||||||
7 for Disk II(280blk),3.5(1600),3.5HD(2880)
|
7 for Disk II(280blk),3.5(1600),3.5HD(2880)
|
||||||
22 for 32mb Hardisk...
|
22 for 32mb Hardisk...
|
||||||
|
|
||||||
# D2TrkW16s
|
|
||||||
Write a track (16 sectors)
|
|
||||||
**In:**
|
|
||||||
PUSHW = Ptr to 16*256 buffer
|
|
||||||
PUSHB = TrackNum * 4 : 0->140+
|
|
||||||
PUSHB = DSSS0000
|
|
||||||
|
|
||||||
## RETURN VALUE
|
|
||||||
CC : success
|
|
||||||
CS : A = Error
|
|
||||||
A=0, currently starting/seeking...
|
|
||||||
|
|
||||||
# D2TrkWNIB
|
|
||||||
Write a track (NIBBLE)
|
|
||||||
**In:**
|
|
||||||
PUSHW = Ptr to NIBBLE buffer (0 ended)
|
|
||||||
PUSHB = TrackNum * 4 : 0->140+
|
|
||||||
PUSHB = DSSS0000
|
|
||||||
|
|
||||||
## RETURN VALUE
|
|
||||||
CC : success
|
|
||||||
CS : A = Error
|
|
||||||
A=0, currently starting/seeking...
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
A2osX is licensed under the GNU General Public License.
|
A2osX is licensed under the GNU General Public License.
|
||||||
|
|
||||||
|
|
|
@ -182,9 +182,9 @@ CS: A = EC
|
||||||
CC: Y,A = bytes written
|
CC: Y,A = bytes written
|
||||||
CS: A = EC
|
CS: A = EC
|
||||||
|
|
||||||
# Recv (RAW,DGRAM,SEQPACKET)
|
# Recv (RAW,DGRAM,SEQPKT)
|
||||||
|
|
||||||
# RecvFrom (RAW,DGRAM,SEQPACKET)
|
# RecvFrom (RAW,DGRAM,SEQPKT)
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`hMem recv(hFD fd);`
|
`hMem recv(hFD fd);`
|
||||||
|
@ -200,9 +200,9 @@ CS: A = EC
|
||||||
CC: A = hMem
|
CC: A = hMem
|
||||||
CS: A = EC
|
CS: A = EC
|
||||||
|
|
||||||
# Send (RAW,DGRAM,SEQPACKET)
|
# Send (RAW,DGRAM,SEQPKT)
|
||||||
|
|
||||||
# SendTo (RAW,DGRAM,SEQPACKET)
|
# SendTo (RAW,DGRAM,SEQPKT)
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int skt.send(hFD fd, const void *buf, int count);`
|
`int skt.send(hFD fd, const void *buf, int count);`
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -127,7 +127,7 @@ S.SOCKET.AF .EQ S.FD.DSOCK+0
|
||||||
S.SOCKET.T .EQ S.FD.DSOCK+1
|
S.SOCKET.T .EQ S.FD.DSOCK+1
|
||||||
S.SOCKET.T.RAW .EQ 0 S.FD.T.DSOCK,ICMP...
|
S.SOCKET.T.RAW .EQ 0 S.FD.T.DSOCK,ICMP...
|
||||||
S.SOCKET.T.DGRAM .EQ 2 S.FD.T.DSOCK,UDP
|
S.SOCKET.T.DGRAM .EQ 2 S.FD.T.DSOCK,UDP
|
||||||
S.SOCKET.T.SEQPACKET .EQ 4 S.FD.T.DSOCK,TCP
|
S.SOCKET.T.SEQPKT .EQ 4 S.FD.T.DSOCK,TCP
|
||||||
S.SOCKET.T.STREAM .EQ 6 S.FD.T.SSOCK,TCP
|
S.SOCKET.T.STREAM .EQ 6 S.FD.T.SSOCK,TCP
|
||||||
|
|
||||||
S.SOCKET.PROTO .EQ S.FD.DSOCK+2
|
S.SOCKET.PROTO .EQ S.FD.DSOCK+2
|
||||||
|
@ -295,6 +295,6 @@ S.DNS.QTYPE.ANY .EQ 255
|
||||||
S.DNS.QCLASS.IN .EQ 1
|
S.DNS.QCLASS.IN .EQ 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE INC/LIBTCPIP.I
|
SAVE inc/libtcpip.i
|
||||||
LOAD USR/SRC/LIB/LIBTCPIP.S
|
LOAD usr/src/lib/libtcpip.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -27,8 +27,8 @@ sector .EQ $3d
|
||||||
BB.RetryCnt .EQ $40
|
BB.RetryCnt .EQ $40
|
||||||
BB.TargetTrk .EQ $41
|
BB.TargetTrk .EQ $41
|
||||||
|
|
||||||
BB.CurQTrk .EQ $50
|
BB.CurrentQTrack .EQ $50
|
||||||
BB.TargetQTrk .EQ $51
|
BB.TargetQTrack .EQ $51
|
||||||
|
|
||||||
BB.HdrPtr .EQ $52
|
BB.HdrPtr .EQ $52
|
||||||
|
|
||||||
|
@ -49,10 +49,10 @@ kernel .EQ $2000
|
||||||
.PH $800
|
.PH $800
|
||||||
xboot .DA #1
|
xboot .DA #1
|
||||||
sec apple iii enters xboot 'ora $38'
|
sec apple iii enters xboot 'ora $38'
|
||||||
bcs BB.AppleII branch if not apple iii native mode
|
* bcs BB.AppleII branch if not apple iii native mode
|
||||||
|
bcc *
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.AppleIII bcc *
|
*BB.AppleIII lda #$9f make apple iii boot using block 1
|
||||||
* lda #$9f make apple iii boot using block 1
|
|
||||||
* pha the return address is $a000
|
* pha the return address is $a000
|
||||||
* lda #$ff
|
* lda #$ff
|
||||||
* pha
|
* pha
|
||||||
|
@ -161,11 +161,12 @@ rddir jsr goread call read block routine.
|
||||||
lda sosid is it a prodos (sos) directory?
|
lda sosid is it a prodos (sos) directory?
|
||||||
ora sosid+1
|
ora sosid+1
|
||||||
bterr1 bne booterr branch if not.
|
bterr1 bne booterr branch if not.
|
||||||
|
*--------------------------------------
|
||||||
lda #4 begin look-up with first entry past header.
|
lda #4 begin look-up with first entry past header.
|
||||||
bne nxdent1 branch always
|
* bne nxdent1 branch always
|
||||||
|
.HS 2C BIT ABS
|
||||||
nxdent lda idxl
|
nxdent lda idxl
|
||||||
|
|
||||||
nxdent1 clc
|
nxdent1 clc
|
||||||
adc entlen bump to next directory entry.
|
adc entlen bump to next directory entry.
|
||||||
tay save in y for now.
|
tay save in y for now.
|
||||||
|
@ -181,7 +182,7 @@ nxdent1 clc
|
||||||
|
|
||||||
ldy #4 else, begin at block beginning.
|
ldy #4 else, begin at block beginning.
|
||||||
|
|
||||||
nxdent2 sty idxl note: this method treats garbage at
|
nxdent2 sty idxl
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
|
@ -194,9 +195,9 @@ lookpro lda (idxl),y look for matching name.
|
||||||
bne lookpro
|
bne lookpro
|
||||||
|
|
||||||
ldy #$10 get file type & index block addr.
|
ldy #$10 get file type & index block addr.
|
||||||
lda (idxl),y
|
* lda (idxl),y
|
||||||
cmp #S.FI.T.SYS is it a system file?
|
* cmp #S.FI.T.SYS is it a system file?
|
||||||
bne booterr
|
* bne booterr
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda (idxl),y
|
lda (idxl),y
|
||||||
|
@ -231,7 +232,8 @@ bterr2 bcs booterr
|
||||||
|
|
||||||
jmp kernel go execute kernel code.
|
jmp kernel go execute kernel code.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
booterr jsr clrscrn clear video
|
booterr
|
||||||
|
* jsr clrscrn clear video
|
||||||
* ldy #BB.MSG.ERR.Len-1
|
* ldy #BB.MSG.ERR.Len-1
|
||||||
|
|
||||||
*.1 lda BB.MSG.ERR,y
|
*.1 lda BB.MSG.ERR,y
|
||||||
|
@ -255,7 +257,7 @@ endcode ldx slotz
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
jmp BB.Read
|
jmp BB.Seek
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*BB.MSG.ERR .AS -"ERR"
|
*BB.MSG.ERR .AS -"ERR"
|
||||||
*BB.MSG.ERR.Len .EQ *-BB.MSG.ERR
|
*BB.MSG.ERR.Len .EQ *-BB.MSG.ERR
|
||||||
|
@ -280,106 +282,123 @@ d2io lda blok figure out track & sector.
|
||||||
lsr
|
lsr
|
||||||
sta BB.TargetTrk
|
sta BB.TargetTrk
|
||||||
|
|
||||||
jsr BB.Trk2Qtrk
|
|
||||||
sta BB.TargetQTrk
|
|
||||||
|
|
||||||
lda buff+1
|
lda buff+1
|
||||||
sta dbuf+1
|
sta dbuf+1
|
||||||
|
|
||||||
ldx slotz
|
ldx slotz
|
||||||
lda IO.D2.DrvOn,x
|
lda IO.D2.DrvOn,x
|
||||||
|
|
||||||
jsr BB.Read go read sector.
|
jsr BB.Seek go read sector.
|
||||||
|
|
||||||
inc dbuf+1 bump address
|
inc dbuf+1 bump address
|
||||||
inc sector
|
inc sector
|
||||||
inc sector and sector #
|
inc sector and sector #
|
||||||
bcs quitrd branch if error.
|
bcs quitrd branch if error.
|
||||||
|
|
||||||
jsr BB.Read
|
jsr BB.Seek
|
||||||
|
|
||||||
quitrd ldy IO.D2.DrvOff,x
|
quitrd ldy IO.D2.DrvOff,x
|
||||||
rts return error status in carry.
|
rts return error status in carry.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.Read lda BB.HdrTrk get track we're on
|
BB.Seek lda BB.HdrTrk get track we're on
|
||||||
jsr BB.Trk2Qtrk
|
jsr BB.Trk2Qtrk
|
||||||
|
sta BB.CurrentQTrack
|
||||||
|
|
||||||
sta BB.CurQTrk
|
lda BB.TargetTrk
|
||||||
|
jsr BB.Trk2Qtrk
|
||||||
|
sta BB.TargetQTrack
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
beq .2
|
.1 lda BB.TargetQTrack
|
||||||
|
sec
|
||||||
.1 lda BB.CurQTrk
|
sbc BB.CurrentQTrack
|
||||||
jsr BB.PhaseOff
|
|
||||||
|
|
||||||
.2 ldx BB.CurQTrk
|
|
||||||
cpx BB.TargetQTrk
|
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
bcs .3
|
bcc .2
|
||||||
|
|
||||||
inx
|
* Current < Target, must move in
|
||||||
|
|
||||||
.HS B0 BCS
|
cmp #2
|
||||||
|
bcc .6 one QT remaining
|
||||||
|
|
||||||
.3 dex
|
lda BB.CurrentQTrack
|
||||||
|
and #$FE from QT1 or QT3
|
||||||
|
inc
|
||||||
|
inc
|
||||||
|
bra .4
|
||||||
|
|
||||||
stx BB.CurQTrk
|
* Current > Target, must move out
|
||||||
|
|
||||||
txa
|
.2 cmp #$FF
|
||||||
jsr BB.PhaseOn
|
beq .6 one QT remaining
|
||||||
|
|
||||||
lda #114
|
lda BB.CurrentQTrack
|
||||||
jsr BB.Wait100usecA Trash X
|
bit #1 from QT1 or QT3
|
||||||
|
bne .3
|
||||||
|
|
||||||
iny
|
dec
|
||||||
|
.3 dec
|
||||||
|
|
||||||
bcs .1 CS from BB.MSWait
|
.4 sta BB.CurrentQTrack
|
||||||
|
|
||||||
|
and #6
|
||||||
|
ora slotz
|
||||||
|
tax
|
||||||
|
pha
|
||||||
|
tya
|
||||||
|
beq .5
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,y
|
||||||
|
|
||||||
|
.5 lda IO.D2.Ph0On,x
|
||||||
|
ply
|
||||||
|
|
||||||
|
lda #164
|
||||||
|
jsr BB.Wait100usecA
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
* Last QTrack
|
||||||
|
|
||||||
|
.6 lda BB.TargetQTrack
|
||||||
|
and #6
|
||||||
|
ora slotz
|
||||||
|
tax
|
||||||
|
inc
|
||||||
|
inc
|
||||||
|
and #$F7
|
||||||
|
tay
|
||||||
|
lda IO.D2.Ph0On,x
|
||||||
|
lda IO.D2.Ph0On,y
|
||||||
|
|
||||||
|
.7 phx
|
||||||
|
jsr BB.Wait25600usec
|
||||||
|
plx
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,x
|
||||||
|
lda IO.D2.Ph0Off,y
|
||||||
|
bra BB.Read
|
||||||
|
|
||||||
.8 tya
|
.8 tya
|
||||||
beq seekend
|
beq BB.Read
|
||||||
|
|
||||||
lda #0 wait 25.6 ms
|
|
||||||
jsr BB.Wait100usecA Trash X
|
|
||||||
|
|
||||||
lda BB.TargetQTrk
|
|
||||||
jsr BB.PhaseOff
|
|
||||||
bcs seekend CS from BB.MSWait
|
|
||||||
*--------------------------------------
|
|
||||||
BB.PhaseOff clc
|
|
||||||
.HS B0 BCS
|
|
||||||
*--------------------------------------
|
|
||||||
BB.PhaseOn sec
|
|
||||||
|
|
||||||
bit #1
|
|
||||||
beq .1
|
|
||||||
|
|
||||||
php
|
|
||||||
pha
|
|
||||||
jsr .1
|
|
||||||
pla
|
|
||||||
inc
|
|
||||||
plp
|
|
||||||
|
|
||||||
.1 and #6 mask for 0,2,4,6
|
|
||||||
|
|
||||||
adc slotz Slot $n0
|
|
||||||
tax
|
tax
|
||||||
sta IO.D2.Ph0Off,x
|
bra .7
|
||||||
nop
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
BB.Wait25600usec
|
||||||
|
lda #0
|
||||||
BB.Wait100usecA sec (6) JSR (2)
|
BB.Wait100usecA sec (6) JSR (2)
|
||||||
|
|
||||||
.1 ldx #19 (2)
|
.1 ldx #18 (2)
|
||||||
|
|
||||||
.2 dex (2) delay 86 usec.
|
.2 dex (2) delay 86 usec.
|
||||||
bne .2 (2+) 2 + 5x16 + 2 + 2
|
bne .2 (2+) 2 + 5x16 + 2 + 2
|
||||||
|
|
||||||
sbc #1 (2) done 'n' intervals?
|
* ldx slotz (3)
|
||||||
bne .1 (2+) a-reg counts
|
* bit IO.D2.RData,x (4) Slow down ACC boards
|
||||||
|
|
||||||
|
sbc #1 (2)
|
||||||
|
bne .1 (2+)
|
||||||
|
|
||||||
rts (6)
|
rts (6)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -394,7 +413,7 @@ BB.Trk2Qtrk asl x2
|
||||||
.1 adc #$ff SELF MODIFIED
|
.1 adc #$ff SELF MODIFIED
|
||||||
BB.Trk2Qtrk.RTS rts
|
BB.Trk2Qtrk.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
seekend ldx slotz
|
BB.Read ldx slotz
|
||||||
|
|
||||||
ldy #$7f allow 127 mistakes.
|
ldy #$7f allow 127 mistakes.
|
||||||
sty BB.RetryCnt
|
sty BB.RetryCnt
|
||||||
|
@ -541,7 +560,7 @@ zzzend ldx slotz
|
||||||
rts
|
rts
|
||||||
|
|
||||||
chg5 .EQ *-chg5a
|
chg5 .EQ *-chg5a
|
||||||
goseek jmp BB.Read
|
goseek jmp BB.Seek
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.LIST ON
|
.LIST ON
|
||||||
|
|
|
@ -142,7 +142,7 @@ D2.PhaseOn.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
D2.Wait100usecA sec (2)
|
D2.Wait100usecA sec (2)
|
||||||
|
|
||||||
.1 ldx #19 (2)
|
.1 ldx #18 (2)
|
||||||
|
|
||||||
.2 dex (2)
|
.2 dex (2)
|
||||||
bne .2 (3)
|
bne .2 (3)
|
||||||
|
@ -150,8 +150,8 @@ D2.Wait100usecA sec (2)
|
||||||
ldx Slotn0 (3)
|
ldx Slotn0 (3)
|
||||||
bit IO.D2.RData,x (4) Slow down ACC boards
|
bit IO.D2.RData,x (4) Slow down ACC boards
|
||||||
|
|
||||||
sbc #1
|
sbc #1 (2)
|
||||||
bne .1
|
bne .1 (3)
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
|
|
@ -364,6 +364,6 @@ ARP.Send >STYA IOCTL+S.IOCTL.BUFPTR
|
||||||
jmp FRM.Send.IOCTL
|
jmp FRM.Send.IOCTL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/LIB/LIBTCPIP.S.ARP
|
SAVE usr/src/lib/libtcpip.s.arp
|
||||||
LOAD USR/SRC/LIB/LIBTCPIP.S
|
LOAD usr/src/lib/libtcpip.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -105,6 +105,6 @@ CFG.GET >LDYA L.IPCFG
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/LIB/LIBTCPIP.S.CFG
|
SAVE usr/src/lib/libtcpip.s.cfg
|
||||||
LOAD USR/SRC/LIB/LIBTCPIP.S
|
LOAD usr/src/lib/libtcpip.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -506,6 +506,6 @@ DNS.NextCache lda ZPCachePtr
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/LIB/LIBTCPIP.S.DNS
|
SAVE usr/src/lib/libtcpip.s.dns
|
||||||
LOAD USR/SRC/LIB/LIBTCPIP.S
|
LOAD usr/src/lib/libtcpip.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -347,6 +347,6 @@ FRM.DiscardIn lda hFrameIn
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/LIB/LIBTCPIP.S.FRM
|
SAVE usr/src/lib/libtcpip.s.frm
|
||||||
LOAD USR/SRC/LIB/LIBTCPIP.S
|
LOAD usr/src/lib/libtcpip.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -37,6 +37,6 @@ HST.GetByAddr >PULLW ZPPtrIP TODO
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/LIB/LIBTCPIP.S.HST
|
SAVE usr/src/lib/libtcpip.s.hst
|
||||||
LOAD USR/SRC/LIB/LIBTCPIP.S
|
LOAD usr/src/lib/libtcpip.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -73,6 +73,6 @@ ICMP.IN.ECHOREP jsr FRM.GetTargetSKT.RAW
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/LIB/LIBTCPIP.S.ICMP
|
SAVE usr/src/lib/libtcpip.s.icmp
|
||||||
LOAD USR/SRC/LIB/LIBTCPIP.S
|
LOAD usr/src/lib/libtcpip.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -222,6 +222,6 @@ IP.SetDestMAC ldy #S.IP.DST
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/LIB/LIBTCPIP.S.IP
|
SAVE usr/src/lib/libtcpip.s.ip
|
||||||
LOAD USR/SRC/LIB/LIBTCPIP.S
|
LOAD usr/src/lib/libtcpip.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -57,7 +57,7 @@ SKT.Socket.DSOCK
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
SKT.Socket.SEQPACKET
|
SKT.Socket.SEQPKT
|
||||||
SKT.Socket.STREAM
|
SKT.Socket.STREAM
|
||||||
lda #S.IP.PROTOCOL.TCP
|
lda #S.IP.PROTOCOL.TCP
|
||||||
ldy #S.SOCKET.TCP
|
ldy #S.SOCKET.TCP
|
||||||
|
@ -198,7 +198,7 @@ SKT.connect.DGRAM
|
||||||
jmp SKT.SetRemAddr
|
jmp SKT.SetRemAddr
|
||||||
|
|
||||||
SKT.connect.STREAM
|
SKT.connect.STREAM
|
||||||
SKT.connect.SEQPACKET
|
SKT.connect.SEQPKT
|
||||||
ldy #S.SOCKET.TCP.S
|
ldy #S.SOCKET.TCP.S
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
beq .1
|
beq .1
|
||||||
|
@ -251,7 +251,7 @@ SKT.listen >SYSCALL2 GetMemPtr
|
||||||
|
|
||||||
ldy #S.SOCKET.T
|
ldy #S.SOCKET.T
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
cmp #S.SOCKET.T.SEQPACKET
|
cmp #S.SOCKET.T.SEQPKT
|
||||||
bcc SKT.listen.9
|
bcc SKT.listen.9
|
||||||
|
|
||||||
ldy #S.SOCKET.TCP.S
|
ldy #S.SOCKET.TCP.S
|
||||||
|
@ -342,7 +342,7 @@ SKT.shutdown pha
|
||||||
cmp #S.SOCKET.T.STREAM
|
cmp #S.SOCKET.T.STREAM
|
||||||
beq SKT.shutdown.STREAM
|
beq SKT.shutdown.STREAM
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
cmp #S.SOCKET.T.SEQPACKET
|
cmp #S.SOCKET.T.SEQPKT
|
||||||
bne SKT.shutdown.DGRAM
|
bne SKT.shutdown.DGRAM
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
@ -355,6 +355,7 @@ SKT.shutdown pha
|
||||||
SKT.shutdown.LISTEN
|
SKT.shutdown.LISTEN
|
||||||
SKT.shutdown.RAW
|
SKT.shutdown.RAW
|
||||||
SKT.shutdown.DGRAM
|
SKT.shutdown.DGRAM
|
||||||
|
SKT.shutdown.SEQPKT
|
||||||
.1 ldy #S.SOCKET.HQ.TAIL
|
.1 ldy #S.SOCKET.HQ.TAIL
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
ldy #S.SOCKET.HQ.HEAD
|
ldy #S.SOCKET.HQ.HEAD
|
||||||
|
@ -836,8 +837,8 @@ SKT.GetDataFromSktOut
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # Recv (RAW,DGRAM,SEQPACKET)
|
* # Recv (RAW,DGRAM,SEQPKT)
|
||||||
* # RecvFrom (RAW,DGRAM,SEQPACKET)
|
* # RecvFrom (RAW,DGRAM,SEQPKT)
|
||||||
* ## C
|
* ## C
|
||||||
* `hMem recv(hFD fd);`
|
* `hMem recv(hFD fd);`
|
||||||
* `hMem recvfrom(hFD fd, struct sockaddr *addr);`
|
* `hMem recvfrom(hFD fd, struct sockaddr *addr);`
|
||||||
|
@ -855,6 +856,7 @@ SKT.RecvFrom pha
|
||||||
pla
|
pla
|
||||||
sec
|
sec
|
||||||
.HS 90 BCC
|
.HS 90 BCC
|
||||||
|
|
||||||
SKT.Recv clc
|
SKT.Recv clc
|
||||||
php
|
php
|
||||||
>SYSCALL2 GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
|
@ -865,9 +867,6 @@ SKT.Recv clc
|
||||||
cmp #S.SOCKET.T.STREAM
|
cmp #S.SOCKET.T.STREAM
|
||||||
beq .99
|
beq .99
|
||||||
|
|
||||||
cmp #S.SOCKET.T.SEQPACKET
|
|
||||||
php CS is SEQ
|
|
||||||
|
|
||||||
ldy #S.SOCKET.HQ.TAIL
|
ldy #S.SOCKET.HQ.TAIL
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
tax
|
tax
|
||||||
|
@ -890,10 +889,7 @@ SKT.Recv clc
|
||||||
tay
|
tay
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
|
|
||||||
plp
|
plp if CS, RecvFrom
|
||||||
bcc .10 not a SEQPKT socket
|
|
||||||
|
|
||||||
.10 plp if CS, RecvFrom
|
|
||||||
bcc .9 Exit with CC and A=hFrame
|
bcc .9 Exit with CC and A=hFrame
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
@ -940,19 +936,18 @@ SKT.Recv clc
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.99 lda #ERR.SKT.BAD
|
.99 plp
|
||||||
plp
|
lda #ERR.SKT.BAD
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.90 lda #0 no data
|
.90 plp
|
||||||
plp
|
lda #0 no data
|
||||||
plp
|
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # Send (RAW,DGRAM,SEQPACKET)
|
* # Send (RAW,DGRAM,SEQPKT)
|
||||||
* # SendTo (RAW,DGRAM,SEQPACKET)
|
* # SendTo (RAW,DGRAM,SEQPKT)
|
||||||
* ## C
|
* ## C
|
||||||
* `int skt.send(hFD fd, const void *buf, int count);`
|
* `int skt.send(hFD fd, const void *buf, int count);`
|
||||||
* `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);`
|
||||||
|
@ -1001,7 +996,7 @@ SKT.Send.8 jsr SKT.SetFrameOutDstIP
|
||||||
clc Queue if fail
|
clc Queue if fail
|
||||||
jmp FRM.SendIP
|
jmp FRM.SendIP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.Send.SEQPACKET
|
SKT.Send.SEQPKT
|
||||||
>LDYA ZPDataInLen
|
>LDYA ZPDataInLen
|
||||||
jsr TCP.NewFrame
|
jsr TCP.NewFrame
|
||||||
bcs SKT.Send.9
|
bcs SKT.Send.9
|
||||||
|
@ -1309,7 +1304,7 @@ SKT.NewTCB ldx #S.SOCKET.TCP.INSEQNUM
|
||||||
|
|
||||||
ldy #S.SOCKET.T
|
ldy #S.SOCKET.T
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
cmp #S.SOCKET.T.SEQPACKET
|
cmp #S.SOCKET.T.SEQPKT
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
||||||
tax
|
tax
|
||||||
|
@ -1481,6 +1476,6 @@ SKT.SetupZPCode ldy #ZP.CODE.Len-1
|
||||||
.FIN
|
.FIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/LIB/LIBTCPIP.S.SKT
|
SAVE usr/src/lib/libtcpip.s.skt
|
||||||
LOAD USR/SRC/LIB/LIBTCPIP.S
|
LOAD usr/src/lib/libtcpip.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -378,6 +378,7 @@ TCP.SENDCLOSE ldx #0
|
||||||
.1 phx
|
.1 phx
|
||||||
lda SKT.TABLE,x
|
lda SKT.TABLE,x
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
>SYSCALL2 GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
>STYA ZPPtrSKT
|
>STYA ZPPtrSKT
|
||||||
|
|
||||||
|
@ -385,21 +386,32 @@ TCP.SENDCLOSE ldx #0
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
cmp #AF.INET
|
cmp #AF.INET
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
iny #S.SOCKET.T
|
iny #S.SOCKET.T
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
cmp #S.SOCKET.T.SEQPACKET
|
cmp #S.SOCKET.T.SEQPKT
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
||||||
|
tax
|
||||||
|
|
||||||
ldy #S.SOCKET.TCP.S
|
ldy #S.SOCKET.TCP.S
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
cmp #S.SOCKET.TCP.S.TIMEWT
|
cmp #S.SOCKET.TCP.S.TIMEWT
|
||||||
beq .4
|
beq .4
|
||||||
|
|
||||||
cmp #S.SOCKET.TCP.S.ESTBLSH
|
cmp #S.SOCKET.TCP.S.ESTBLSH
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
|
cpx #S.SOCKET.T.SEQPKT
|
||||||
|
beq .8
|
||||||
|
|
||||||
jsr SKT.GetTCB
|
jsr SKT.GetTCB
|
||||||
jsr TCP.OUT
|
jsr TCP.OUT
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.2 cmp #S.SOCKET.TCP.S.OPENED
|
.2 cmp #S.SOCKET.TCP.S.OPENED
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
jsr SKT.GetTCB
|
jsr SKT.GetTCB
|
||||||
lda #S.TCP.OPTIONS.SYN
|
lda #S.TCP.OPTIONS.SYN
|
||||||
jsr TCP.OUT.SendOptA Send SYN
|
jsr TCP.OUT.SendOptA Send SYN
|
||||||
|
@ -412,34 +424,41 @@ TCP.SENDCLOSE ldx #0
|
||||||
lda #S.TCP.OPTIONS.SYN
|
lda #S.TCP.OPTIONS.SYN
|
||||||
jsr TCP.OUT.SendOptA Send SYN
|
jsr TCP.OUT.SendOptA Send SYN
|
||||||
bra .8
|
bra .8
|
||||||
.4 ldy #S.SOCKET.SQ.hInMem
|
*--------------------------------------
|
||||||
lda (ZPPtrSKT),y
|
.4 cpx #S.SOCKET.T.SEQPKT
|
||||||
beq .5
|
bne .5
|
||||||
.DO AUXPIPE=1
|
|
||||||
>SYSCALL2 FreeStkObj
|
|
||||||
.ELSE
|
|
||||||
>SYSCALL2 freemem
|
|
||||||
.FIN
|
|
||||||
.5 ldy #S.SOCKET.SQ.hOutMem
|
|
||||||
lda (ZPPtrSKT),y
|
|
||||||
beq .6
|
|
||||||
|
|
||||||
.DO AUXPIPE=1
|
jsr SKT.shutdown.SEQPKT
|
||||||
>SYSCALL2 FreeStkObj
|
bra .8
|
||||||
.ELSE
|
|
||||||
>SYSCALL2 freemem
|
.5 ldy #S.SOCKET.SQ.hInMem
|
||||||
.FIN
|
jsr TCP.SENDCLOSE.PIPE
|
||||||
.6 plx
|
|
||||||
|
ldy #S.SOCKET.SQ.hOutMem
|
||||||
|
jsr TCP.SENDCLOSE.PIPE
|
||||||
|
|
||||||
|
plx
|
||||||
phx
|
phx
|
||||||
lda SKT.TABLE,x
|
lda SKT.TABLE,x
|
||||||
stz SKT.TABLE,x
|
stz SKT.TABLE,x
|
||||||
>SYSCALL2 freemem
|
>SYSCALL2 freemem
|
||||||
|
|
||||||
.8 plx
|
.8 plx
|
||||||
inx
|
inx
|
||||||
cpx #K.SKTTABLE.SIZE
|
cpx #K.SKTTABLE.SIZE
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.9 rts
|
rts
|
||||||
|
TCP.SENDCLOSE.PIPE
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
.DO AUXPIPE=1
|
||||||
|
>SYSCALL2 FreeStkObj
|
||||||
|
.ELSE
|
||||||
|
>SYSCALL2 freemem
|
||||||
|
.FIN
|
||||||
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.OUT lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1
|
TCP.OUT lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1
|
||||||
ldy SKT.Cache+S.SOCKET.TCP.OUTTOSEND
|
ldy SKT.Cache+S.SOCKET.TCP.OUTTOSEND
|
||||||
|
@ -575,6 +594,6 @@ TCP.AddAYToSktCacheAtX
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/LIB/LIBTCPIP.S.TCP
|
SAVE usr/src/lib/libtcpip.s.tcp
|
||||||
LOAD USR/SRC/LIB/LIBTCPIP.S
|
LOAD usr/src/lib/libtcpip.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -27,16 +27,16 @@ AUXPIPE .EQ 1
|
||||||
sta ]1+1
|
sta ]1+1
|
||||||
.EM
|
.EM
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB inc/macros.i
|
||||||
.DO AUXPIPE=1
|
.DO AUXPIPE=1
|
||||||
.INB INC/IO.I
|
.INB inc/io.i
|
||||||
.FIN
|
.FIN
|
||||||
.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 INC/LIB.NET.I
|
.INB inc/lib.net.i
|
||||||
.INB INC/LIBTCPIP.I
|
.INB inc/libtcpip.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPFrameInPtr .EQ ZPLIB
|
ZPFrameInPtr .EQ ZPLIB
|
||||||
ZPFrameInLen .EQ ZPLIB+2
|
ZPFrameInLen .EQ ZPLIB+2
|
||||||
|
@ -140,15 +140,15 @@ J.TCP.IN .DA TCP.IN.JMP.CLOSED
|
||||||
.DA TCP.IN.JMP.TIMEWT
|
.DA TCP.IN.JMP.TIMEWT
|
||||||
J.SKT.Socket .DA SKT.Socket.RAW
|
J.SKT.Socket .DA SKT.Socket.RAW
|
||||||
.DA SKT.Socket.DGRAM
|
.DA SKT.Socket.DGRAM
|
||||||
.DA SKT.Socket.SEQPACKET
|
.DA SKT.Socket.SEQPKT
|
||||||
.DA SKT.Socket.STREAM
|
.DA SKT.Socket.STREAM
|
||||||
J.SKT.connect .DA SKT.connect.RAW
|
J.SKT.connect .DA SKT.connect.RAW
|
||||||
.DA SKT.connect.DGRAM
|
.DA SKT.connect.DGRAM
|
||||||
.DA SKT.connect.SEQPACKET
|
.DA SKT.connect.SEQPKT
|
||||||
.DA SKT.connect.STREAM
|
.DA SKT.connect.STREAM
|
||||||
J.SKT.send .DA SKT.send.RAW
|
J.SKT.send .DA SKT.send.RAW
|
||||||
.DA SKT.send.DGRAM
|
.DA SKT.send.DGRAM
|
||||||
.DA SKT.send.SEQPACKET
|
.DA SKT.send.SEQPKT
|
||||||
.DA SKT.send.STREAM
|
.DA SKT.send.STREAM
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -247,15 +247,15 @@ GetDynPort inc DYNPORT.LAST
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB USR/SRC/LIB/LIBTCPIP.S.ARP
|
.INB usr/src/lib/libtcpip.s.arp
|
||||||
.INB USR/SRC/LIB/LIBTCPIP.S.CFG
|
.INB usr/src/lib/libtcpip.s.cfg
|
||||||
.INB USR/SRC/LIB/LIBTCPIP.S.DNS
|
.INB usr/src/lib/libtcpip.s.dns
|
||||||
.INB USR/SRC/LIB/LIBTCPIP.S.FRM
|
.INB usr/src/lib/libtcpip.s.frm
|
||||||
.INB USR/SRC/LIB/LIBTCPIP.S.HST
|
.INB usr/src/lib/libtcpip.s.hst
|
||||||
.INB USR/SRC/LIB/LIBTCPIP.S.ICMP
|
.INB usr/src/lib/libtcpip.s.icmp
|
||||||
.INB USR/SRC/LIB/LIBTCPIP.S.IP
|
.INB usr/src/lib/libtcpip.s.ip
|
||||||
.INB USR/SRC/LIB/LIBTCPIP.S.SKT
|
.INB usr/src/lib/libtcpip.s.skt
|
||||||
.INB USR/SRC/LIB/LIBTCPIP.S.TCP
|
.INB usr/src/lib/libtcpip.s.tcp
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -25,7 +25,7 @@ XRW.START cld $D8 to flag language card bank 1 (main)
|
||||||
beq L59BD
|
beq L59BD
|
||||||
|
|
||||||
lda #$01
|
lda #$01
|
||||||
sta montimeh
|
sta XRW.montimeh
|
||||||
|
|
||||||
L59A6 lda XRW.LastUnitUsed
|
L59A6 lda XRW.LastUnitUsed
|
||||||
and #$70
|
and #$70
|
||||||
|
@ -37,7 +37,7 @@ L59A6 lda XRW.LastUnitUsed
|
||||||
|
|
||||||
jsr XRW.Wait100usec
|
jsr XRW.Wait100usec
|
||||||
|
|
||||||
lda montimeh
|
lda XRW.montimeh
|
||||||
bne L59A6
|
bne L59A6
|
||||||
|
|
||||||
L59BD ldx A2L
|
L59BD ldx A2L
|
||||||
|
@ -107,7 +107,7 @@ regrwts ldy #$01 retry count
|
||||||
|
|
||||||
php save test results
|
php save test results
|
||||||
lda #$E8
|
lda #$E8
|
||||||
sta montimeh
|
sta XRW.montimeh
|
||||||
|
|
||||||
lda unitnum determine drive 1 or 2.
|
lda unitnum determine drive 1 or 2.
|
||||||
cmp XRW.LastUnitUsed same drive used before ?
|
cmp XRW.LastUnitUsed same drive used before ?
|
||||||
|
@ -148,7 +148,7 @@ L537C plp was motor on ?
|
||||||
|
|
||||||
L537F jsr XRW.Wait100usec wait 100us for each count in montime
|
L537F jsr XRW.Wait100usec wait 100us for each count in montime
|
||||||
|
|
||||||
lda montimeh
|
lda XRW.montimeh
|
||||||
bmi L537F count up to 0000
|
bmi L537F count up to 0000
|
||||||
|
|
||||||
* motor should be up to speed,
|
* motor should be up to speed,
|
||||||
|
@ -564,7 +564,7 @@ XRW.Wait100usec lda #1
|
||||||
XRW.Wait100usecA
|
XRW.Wait100usecA
|
||||||
sec (2)
|
sec (2)
|
||||||
|
|
||||||
.1 ldx #17 (2)
|
.1 ldx #16 (2)
|
||||||
|
|
||||||
.2 dex (2)
|
.2 dex (2)
|
||||||
bne .2 (3)
|
bne .2 (3)
|
||||||
|
@ -572,13 +572,13 @@ XRW.Wait100usecA
|
||||||
ldx A2L (3)
|
ldx A2L (3)
|
||||||
bit IO.D2.RData,x (4) Slow down ACC boards
|
bit IO.D2.RData,x (4) Slow down ACC boards
|
||||||
|
|
||||||
inc montimel (6)
|
inc XRW.montimel (6)
|
||||||
bne .3 (3)
|
bne .3 (3)
|
||||||
|
|
||||||
inc montimeh (6)
|
inc XRW.montimeh (6)
|
||||||
|
|
||||||
.3 sbc #1
|
.3 sbc #1 (2)
|
||||||
bne .1
|
bne .1 (3)
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -804,8 +804,6 @@ XRW.Seek ldx XRW.UnitIndex
|
||||||
lda IO.D2.Ph0On,y
|
lda IO.D2.Ph0On,y
|
||||||
|
|
||||||
phx
|
phx
|
||||||
* lda #164
|
|
||||||
* jsr XRW.Wait100usecA
|
|
||||||
|
|
||||||
lda #0 wait 25.6 ms
|
lda #0 wait 25.6 ms
|
||||||
jsr XRW.Wait100usecA
|
jsr XRW.Wait100usecA
|
||||||
|
@ -962,8 +960,8 @@ XRW.Recalibrate .HS 00
|
||||||
.HS 101418
|
.HS 101418
|
||||||
XRW.XX000000 .HS 008040C0 used in fast prenib as lookup for 2-bit quantities.
|
XRW.XX000000 .HS 008040C0 used in fast prenib as lookup for 2-bit quantities.
|
||||||
* .HS FFFF
|
* .HS FFFF
|
||||||
montimel .HS 00
|
XRW.montimel .HS 00
|
||||||
montimeh .HS 00
|
XRW.montimeh .HS 00
|
||||||
.HS 1C20
|
.HS 1C20
|
||||||
.HS FFFFFF
|
.HS FFFFFF
|
||||||
.HS 24282C3034
|
.HS 24282C3034
|
||||||
|
|
112
SBIN/HTTPD.S.txt
112
SBIN/HTTPD.S.txt
|
@ -23,7 +23,7 @@ ZPPtr1 .BS 2
|
||||||
ZPPtr2 .BS 2
|
ZPPtr2 .BS 2
|
||||||
ZPSktPtr .BS 2
|
ZPSktPtr .BS 2
|
||||||
hFile .BS 1
|
hFile .BS 1
|
||||||
hStr .BS 1
|
hLineBuf .BS 1
|
||||||
|
|
||||||
hSrvSocket .BS 1
|
hSrvSocket .BS 1
|
||||||
TimeOut .BS 1
|
TimeOut .BS 1
|
||||||
|
@ -33,8 +33,6 @@ ZPSrvNamePtr .BS 2
|
||||||
hRootdir .BS 1
|
hRootdir .BS 1
|
||||||
ZPRootDirPtr .BS 2
|
ZPRootDirPtr .BS 2
|
||||||
|
|
||||||
hClntSocket .BS 1
|
|
||||||
|
|
||||||
ZPRequestPtr .BS 2
|
ZPRequestPtr .BS 2
|
||||||
ZPnRequestLen .BS 2
|
ZPnRequestLen .BS 2
|
||||||
ZPLinePtr .BS 2
|
ZPLinePtr .BS 2
|
||||||
|
@ -76,6 +74,8 @@ L.MSG.INITCONF .DA MSG.INITCONF
|
||||||
L.MSG.INITOK .DA MSG.INITOK
|
L.MSG.INITOK .DA MSG.INITOK
|
||||||
L.MSG.SKTERR .DA MSG.SKTERR
|
L.MSG.SKTERR .DA MSG.SKTERR
|
||||||
L.MSG.INCOMING .DA MSG.INCOMING
|
L.MSG.INCOMING .DA MSG.INCOMING
|
||||||
|
L.MSG.REQ .DA MSG.REQ
|
||||||
|
L.MSG.SKTCLOSE .DA MSG.SKTCLOSE
|
||||||
L.KEYWORDS.REQ .DA KEYWORDS.REQ
|
L.KEYWORDS.REQ .DA KEYWORDS.REQ
|
||||||
J.KEYWORDS.REQ .DA CS.RUN.REQ.GET
|
J.KEYWORDS.REQ .DA CS.RUN.REQ.GET
|
||||||
L.INDEX.HTML .DA INDEX.HTML
|
L.INDEX.HTML .DA INDEX.HTML
|
||||||
|
@ -137,7 +137,7 @@ CS.RUN.SYN
|
||||||
lda #E.SYN
|
lda #E.SYN
|
||||||
sec
|
sec
|
||||||
CS.RUN.RTS rts
|
CS.RUN.RTS rts
|
||||||
|
*--------------------------------------
|
||||||
CS.RUN.INIT ldx #3
|
CS.RUN.INIT ldx #3
|
||||||
ldy #S.IPCFG.IP+3
|
ldy #S.IPCFG.IP+3
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ CS.RUN.INIT ldx #3
|
||||||
bcs CS.RUN.RTS
|
bcs CS.RUN.RTS
|
||||||
|
|
||||||
>STYA ZPLinePtr
|
>STYA ZPLinePtr
|
||||||
stx hStr
|
stx hLineBuf
|
||||||
|
|
||||||
>PUSHW L.MSG.INITCONF
|
>PUSHW L.MSG.INITCONF
|
||||||
>PUSHW L.ETCHTTPDCONF
|
>PUSHW L.ETCHTTPDCONF
|
||||||
|
@ -186,17 +186,17 @@ CS.RUN.INIT ldx #3
|
||||||
>PUSHBI 4
|
>PUSHBI 4
|
||||||
|
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
|
*--------------------------------------
|
||||||
CS.RUN.LOOP >SLEEP
|
CS.RUN.LOOP >SLEEP
|
||||||
jsr CS.RUN.SERVER
|
jsr CS.RUN.SERVER
|
||||||
bcs CS.RUN.ERR
|
bcs CS.RUN.ERR
|
||||||
bra CS.RUN.LOOP
|
bra CS.RUN.LOOP
|
||||||
|
|
||||||
.9 >LDYA L.MSG.SKTERR
|
CS.RUN.ERR >LDYA L.MSG.SKTERR
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
lda #E.SYN
|
lda #E.SYN
|
||||||
sec
|
sec
|
||||||
CS.RUN.ERR rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.CONF >PUSHW L.ETCHTTPDCONF
|
CS.RUN.CONF >PUSHW L.ETCHTTPDCONF
|
||||||
>PUSHBI O.RDONLY+O.TEXT
|
>PUSHBI O.RDONLY+O.TEXT
|
||||||
|
@ -313,17 +313,17 @@ CS.RUN.SERVER lda hSrvSocket
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.accept
|
>LIBCALL hLIBTCPIP,LIBTCPIP.accept
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
sta hClntSocket
|
>STA.G CLN.hSocket
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPSktPtr
|
>STYA ZPSktPtr
|
||||||
|
|
||||||
>PUSHW L.MSG.INCOMING
|
>PUSHW L.MSG.INCOMING
|
||||||
|
|
||||||
|
>PUSHB.G CLN.hSocket
|
||||||
|
|
||||||
ldx #3
|
ldx #3
|
||||||
ldy #S.SOCKET.REM.ADDR
|
ldy #S.SOCKET.REM.ADDR
|
||||||
|
|
||||||
>PUSHB hClntSocket
|
|
||||||
|
|
||||||
.1 >PUSHB (ZPSktPtr),y
|
.1 >PUSHB (ZPSktPtr),y
|
||||||
iny
|
iny
|
||||||
dex
|
dex
|
||||||
|
@ -335,24 +335,35 @@ CS.RUN.SERVER lda hSrvSocket
|
||||||
jsr CS.RUN.CLIENT
|
jsr CS.RUN.CLIENT
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9
|
||||||
|
CS.RUN.SERVER.RTS
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.CLIENT >STZ.G REQ.KeepAlive
|
CS.RUN.CLIENT >LDYAI 1024
|
||||||
>STA.G REQ.FullPath
|
>SYSCALL GetMem
|
||||||
|
bcs CS.RUN.SERVER.RTS
|
||||||
|
|
||||||
|
>STYA ZPRepPtr
|
||||||
|
txa
|
||||||
|
>STA.G REQ.hBuf
|
||||||
|
|
||||||
|
.10 >STZ.G REQ.FullPath
|
||||||
|
>STA.G REQ.hReq
|
||||||
|
>STA.G REQ.KeepAlive
|
||||||
>STA.G REQ.hFile
|
>STA.G REQ.hFile
|
||||||
>STA.G REQ.hBuf
|
>STA.G REQ.hBuf
|
||||||
|
|
||||||
.1 >SLEEP
|
.1 >SLEEP
|
||||||
|
|
||||||
lda hClntSocket
|
>LDA.G CLN.hSocket
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
|
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
tay
|
tay
|
||||||
beq .1
|
beq .1
|
||||||
jmp .80
|
jmp .90
|
||||||
|
|
||||||
.2 jsr CS.RUN.REQ.GetFrame
|
.2 jsr CS.RUN.REQ.GetReq
|
||||||
|
|
||||||
.3 jsr CS.RUN.REQ.GetLine
|
.3 jsr CS.RUN.REQ.GetLine
|
||||||
bcs .4
|
bcs .4
|
||||||
|
@ -371,28 +382,17 @@ CS.RUN.CLIENT >STZ.G REQ.KeepAlive
|
||||||
.4 >LDA.G REQ.FullPath
|
.4 >LDA.G REQ.FullPath
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
>LDYAI 1024
|
|
||||||
>SYSCALL GetMem
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>STYA ZPRepPtr
|
|
||||||
txa
|
|
||||||
>STA.G REQ.hBuf
|
|
||||||
|
|
||||||
jsr CS.RUN.OpenFile
|
jsr CS.RUN.OpenFile
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CS.RUN.GetMime
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr CS.RUN.SendFile
|
jsr CS.RUN.SendFile
|
||||||
bcc .5
|
bcc .5
|
||||||
|
bra .90
|
||||||
|
|
||||||
.9 >PUSHWI HTTP.404.len
|
.9 >PUSHWI HTTP.404.len
|
||||||
>PUSHW L.HTTP.404
|
>PUSHW L.HTTP.404
|
||||||
lda hClntSocket
|
>LDA.G CLN.hSocket
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||||
bcc .5
|
|
||||||
|
|
||||||
>STZ.G REQ.KeepAlive
|
>STZ.G REQ.KeepAlive
|
||||||
|
|
||||||
|
@ -401,30 +401,41 @@ CS.RUN.CLIENT >STZ.G REQ.KeepAlive
|
||||||
|
|
||||||
>SYSCALL FClose
|
>SYSCALL FClose
|
||||||
|
|
||||||
.6 >LDA.G REQ.hBuf
|
.6 >LDA.G REQ.hReq
|
||||||
beq .7
|
|
||||||
|
|
||||||
>SYSCALL freemem
|
|
||||||
|
|
||||||
.7 >LDA.G REQ.hFrame
|
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.8 >LDA.G REQ.KeepAlive
|
.8 >LDA.G REQ.KeepAlive
|
||||||
beq .80
|
beq .90
|
||||||
jmp CS.RUN.CLIENT
|
jmp .10
|
||||||
|
|
||||||
.80 lda hClntSocket
|
.90 >LDA.G REQ.hBuf
|
||||||
|
beq .91
|
||||||
|
|
||||||
|
>SYSCALL freemem
|
||||||
|
|
||||||
|
.91 >PUSHW L.MSG.SKTCLOSE
|
||||||
|
>PUSHB.G CLN.hSocket
|
||||||
|
>PUSHBI 1
|
||||||
|
>SYSCALL printf
|
||||||
|
|
||||||
|
>LDA.G CLN.hSocket
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
|
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.REQ.GetFrame
|
CS.RUN.REQ.GetReq
|
||||||
>STA.G REQ.hFrame
|
>STA.G REQ.hReq
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPRequestPtr
|
>STYA ZPRequestPtr
|
||||||
|
|
||||||
|
>PUSHW L.MSG.REQ
|
||||||
|
>PUSHB.G REQ.hReq
|
||||||
|
>PUSHB.G CLN.hSocket
|
||||||
|
>PUSHBI 2
|
||||||
|
>SYSCALL printf
|
||||||
|
|
||||||
ldy #S.IP.TOTAL.LENGTH+1
|
ldy #S.IP.TOTAL.LENGTH+1
|
||||||
lda (ZPRequestPtr),y
|
lda (ZPRequestPtr),y
|
||||||
sec
|
sec
|
||||||
|
@ -505,9 +516,7 @@ CS.RUN.OpenFile >LEA.G REQ.FullPath
|
||||||
>PUSHEA.G REQ.Stat
|
>PUSHEA.G REQ.Stat
|
||||||
>SYSCALL FStat
|
>SYSCALL FStat
|
||||||
|
|
||||||
.9 rts
|
>LEA.G REQ.FullPath
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.GetMime >LEA.G REQ.FullPath
|
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
|
|
||||||
ldx #$ff
|
ldx #$ff
|
||||||
|
@ -546,7 +555,7 @@ CS.RUN.GetMime >LEA.G REQ.FullPath
|
||||||
.8 >STA.G REQ.MimeType
|
.8 >STA.G REQ.MimeType
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.SendFile >PUSHW ZPRepPtr
|
CS.RUN.SendFile >PUSHW ZPRepPtr
|
||||||
>PUSHW L.HTTP.200
|
>PUSHW L.HTTP.200
|
||||||
|
@ -580,7 +589,7 @@ CS.RUN.SendFile >PUSHW ZPRepPtr
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.SendBuf >PUSHYA
|
CS.RUN.SendBuf >PUSHYA
|
||||||
>PUSHW ZPRepPtr
|
>PUSHW ZPRepPtr
|
||||||
lda hClntSocket
|
>LDA.G CLN.hSocket
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -700,7 +709,7 @@ CS.QUIT lda hSrvSocket
|
||||||
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
|
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
|
||||||
|
|
||||||
.1 lda hStr
|
.1 lda hLineBuf
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
@ -730,8 +739,10 @@ MSG.TCPWAIT .AZ "HTTPD:Waiting for TCP/IP initializing..."
|
||||||
MSG.TCPIPERR .AZ "HTTPD:TCP/IP Not initialized properly."
|
MSG.TCPIPERR .AZ "HTTPD:TCP/IP Not initialized properly."
|
||||||
MSG.INITCONF .AZ "HTTPD:Reading %s file...\r\n"
|
MSG.INITCONF .AZ "HTTPD:Reading %s file...\r\n"
|
||||||
MSG.INITOK .AZ "HTTPD:Listening on port %D, root dir: %s.\r\n"
|
MSG.INITOK .AZ "HTTPD:Listening on port %D, root dir: %s.\r\n"
|
||||||
MSG.SKTERR .AZ "HTTPD:Listen Error."
|
MSG.SKTERR .AZ "HTTPD:Skt Bind Error."
|
||||||
MSG.INCOMING .AZ "HTTPD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n"
|
MSG.INCOMING .AZ "HTTPD:Skt $%h Opened From %d.%d.%d.%d\r\n"
|
||||||
|
MSG.REQ .AZ "HTTPD:Req $%h From Skt $%h\r\n"
|
||||||
|
MSG.SKTCLOSE .AZ "HTTPD:Skt $%h Close\r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KEYWORDS.REQ .AS "GET "
|
KEYWORDS.REQ .AS "GET "
|
||||||
.AS "Connection: "
|
.AS "Connection: "
|
||||||
|
@ -791,11 +802,12 @@ SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
|
||||||
DS.START
|
DS.START
|
||||||
REQ.FullPath .BS MLI.MAXPATH+1
|
REQ.FullPath .BS MLI.MAXPATH+1
|
||||||
REQ.Stat .BS S.STAT
|
REQ.Stat .BS S.STAT
|
||||||
REQ.hFrame .BS 1
|
REQ.hReq .BS 1
|
||||||
REQ.hFile .BS 1
|
REQ.hFile .BS 1
|
||||||
REQ.hBuf .BS 1
|
REQ.hBuf .BS 1
|
||||||
REQ.MimeType .BS 1
|
REQ.MimeType .BS 1
|
||||||
REQ.KeepAlive .BS 1
|
REQ.KeepAlive .BS 1
|
||||||
|
CLN.hSocket .BS 1
|
||||||
DS.END
|
DS.END
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -63,6 +63,7 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||||
|
|
||||||
jsr PS.AddArgV K.IOBuf= /.../SHELL, K.Buf256=/.../SCRIPT
|
jsr PS.AddArgV K.IOBuf= /.../SHELL, K.Buf256=/.../SCRIPT
|
||||||
bcc .8 or K.IOBuf= 0, K.Buf256=/.../BINFILE
|
bcc .8 or K.IOBuf= 0, K.Buf256=/.../BINFILE
|
||||||
|
|
||||||
.90 pha save error code
|
.90 pha save error code
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
lda .8+1
|
lda .8+1
|
||||||
|
|
Loading…
Reference in New Issue
Block a user