mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-12 17:30:23 +00:00
Kernel version 0.9 : LIBTCPIP development resuming....
This commit is contained in:
parent
8e863610f5
commit
30cdf5a6c8
BIN
A2OSX.BOOT.po
BIN
A2OSX.BOOT.po
Binary file not shown.
BIN
A2OSX.DEV.po
BIN
A2OSX.DEV.po
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
@ -44,10 +44,11 @@ LIBTCPIP.HST.GETBYADDR .EQ 30
|
||||
|
||||
LIBTCPIP.SKT.New .EQ 32
|
||||
LIBTCPIP.SKT.CLOSEA .EQ 34
|
||||
LIBTCPIP.SKT.GETTABLE .EQ 36
|
||||
LIBTCPIP.SKT.GETTABLE .EQ 36
|
||||
LIBTCPIP.SKT.GETA .EQ 38
|
||||
|
||||
LIBTCPIP.SKT.ACCEPTA .EQ 40
|
||||
LIBTCPIP.SKT.AcceptA .EQ 40
|
||||
LIBTCPIP.SKT.MkNodA .EQ 42
|
||||
|
||||
LIBTCPIP.SKT.Write .EQ 44
|
||||
LIBTCPIP.SKT.Read .EQ 46
|
||||
|
@ -284,6 +284,19 @@ SKT.AcceptA jsr SKT.GetA.I
|
||||
.99 lda #ERR.SKT.BAD
|
||||
sec
|
||||
.9 rts
|
||||
|
||||
*/--------------------------------------
|
||||
* #SKT.MkNodA
|
||||
* Create a new file from TCP socket
|
||||
* ##In :
|
||||
* A = hSocket
|
||||
* ##Out :
|
||||
* A = hFile
|
||||
*\--------------------------------------
|
||||
SKT.MkNodA
|
||||
|
||||
sec
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* #SKT.Write (DGRAM,STREAM,RAW)
|
||||
* Send block of data
|
||||
@ -292,13 +305,12 @@ SKT.AcceptA jsr SKT.GetA.I
|
||||
* PUSHW = pBuf
|
||||
* PUSHW = len
|
||||
* ##Out :
|
||||
* A = hFrame
|
||||
*\--------------------------------------
|
||||
SKT.Write >PULLW ZPDataInLen
|
||||
>PULLW ZPDataInPtr
|
||||
>PULLB hSocket
|
||||
|
||||
jsr SKT.GetA.I
|
||||
SKT.Write.I jsr SKT.GetA.I
|
||||
bcs .9
|
||||
|
||||
cmp #S.SOCKET.SOCK.DGRAM
|
||||
@ -435,10 +447,19 @@ SKT.ReadA jsr SKT.GetA.I
|
||||
* PUSHB = hSocket
|
||||
* PUSHB = Char
|
||||
* ##Out :
|
||||
* A = char
|
||||
*\--------------------------------------
|
||||
SKT.PutC sec
|
||||
rts
|
||||
SKT.PutC >PULLB TmpByte
|
||||
|
||||
>PULLB hSocket
|
||||
|
||||
lda #1
|
||||
sta ZPDataOutLen
|
||||
stz ZPDataOutLen+1
|
||||
|
||||
>LDYA L.TmpByte
|
||||
>STYA ZPDataOutPtr
|
||||
|
||||
jmp SKT.Write.I
|
||||
*/--------------------------------------
|
||||
* #SKT.PutS (STREAM)
|
||||
* Write Line in pBuf
|
||||
@ -447,9 +468,17 @@ SKT.PutC sec
|
||||
* PUSHW = PSTR
|
||||
* ##Out :
|
||||
*\--------------------------------------
|
||||
SKT.PutS
|
||||
sec
|
||||
rts
|
||||
SKT.PutS >PULLW ZPDataOutPtr
|
||||
lda (ZPDataOutPtr)
|
||||
|
||||
sta ZPDataOutLen
|
||||
stz ZPDataOutLen+1
|
||||
|
||||
inc ZPDataOutPtr
|
||||
bne .1
|
||||
inc ZPDataOutPtr+1
|
||||
|
||||
.1 jmp SKT.Write.I
|
||||
*/--------------------------------------
|
||||
* #SKT.GetCA (STREAM)
|
||||
* Read a Char From Stream in A
|
||||
@ -458,8 +487,21 @@ SKT.PutS
|
||||
* ##Out :
|
||||
* A = char
|
||||
*\--------------------------------------
|
||||
SKT.GetCA sec
|
||||
rts
|
||||
SKT.GetCA sta hSocket
|
||||
stz bTextMode
|
||||
|
||||
lda #1
|
||||
sta ZPDataOutLen
|
||||
stz ZPDataOutLen+1
|
||||
|
||||
>LDYA L.TmpByte
|
||||
>STYA ZPDataOutPtr
|
||||
|
||||
jsr SKT.Read.I
|
||||
bcs .9
|
||||
lda TmpByte
|
||||
|
||||
.9 rts
|
||||
*/--------------------------------------
|
||||
* #SKT.GetS (STREAM)
|
||||
* Read a CR terminated Line in pBuf
|
||||
@ -488,7 +530,7 @@ SKT.Read clc
|
||||
>PULLW ZPDataOutPtr
|
||||
>PULLB hSocket
|
||||
|
||||
jsr SKT.GetA.I
|
||||
SKT.Read.I jsr SKT.GetA.I
|
||||
bcs .99
|
||||
cmp #S.SOCKET.SOCK.STREAM
|
||||
bne .90 bad skt
|
||||
|
@ -65,6 +65,12 @@ TCP.IN jsr IP.FillSKT.TemplateSrcDst
|
||||
bne .6
|
||||
|
||||
stx hSocket
|
||||
|
||||
ldy #S.TCP.OPTIONS
|
||||
lda (ZPFrameInPtr),y
|
||||
and #S.TCP.OPTIONS.RST RST ? go Kill this socket.
|
||||
bne TCP.IN.RST
|
||||
|
||||
ldy #S.SOCKET.TCP.STATUS
|
||||
lda (ZPPtrSKT),y
|
||||
asl
|
||||
@ -85,6 +91,11 @@ TCP.IN jsr IP.FillSKT.TemplateSrcDst
|
||||
.9 clc Discard frame
|
||||
rts
|
||||
*--------------------------------------
|
||||
TCP.IN.RST txa
|
||||
jsr SKT.CloseA
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
TCP.IN.JMP.CLOSED
|
||||
clc
|
||||
rts
|
||||
|
@ -76,8 +76,8 @@ CS.START cld
|
||||
.DA SKT.GETTABLE
|
||||
.DA SKT.GETA
|
||||
|
||||
.DA SKT.ACCEPTA
|
||||
.DA $FFFF
|
||||
.DA SKT.AcceptA
|
||||
.DA SKT.MkNodA
|
||||
|
||||
.DA SKT.Write
|
||||
.DA SKT.Read
|
||||
@ -95,6 +95,7 @@ L.DNS.MSG .DA DNS.MSG
|
||||
L.ARP.CACHE .DA ARP.CACHE
|
||||
L.DNS.CACHE .DA DNS.CACHE
|
||||
L.SKT.Template .DA SKT.Template
|
||||
L.TmpByte .DA TmpByte
|
||||
L.TCP.IN.JMP .DA TCP.IN.JMP.CLOSED
|
||||
.DA TCP.IN.JMP.LISTEN
|
||||
.DA TCP.IN.JMP.SYNSENT
|
||||
@ -294,6 +295,7 @@ DNS.TmpCache .BS S.DNSCACHE
|
||||
ARP.TmpCache .BS S.ARP
|
||||
SKT.Template .BS S.SOCKET.TEMPLATE
|
||||
SKT.TCBCache .BS S.SOCKET
|
||||
TmpByte .BS 1
|
||||
TmpDWord .BS 4
|
||||
TmpOffset .BS 2
|
||||
hFrameIn .BS 1
|
||||
|
@ -105,7 +105,7 @@ CS.RUN.INIT ldx #3
|
||||
ldy #hSocket
|
||||
lda (pData),y
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.ACCEPTA
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.AcceptA
|
||||
bcs .11
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.GETA
|
||||
>STYA ZPSktPtr
|
||||
|
@ -12,6 +12,12 @@ AUTO 6
|
||||
.INB /A2OSX.DEV/INC/A2OSX.I
|
||||
.INB /A2OSX.DEV/INC/LIBTCPIP.I
|
||||
*--------------------------------------
|
||||
TIMEOUT.MAX .EQ 30 30 sec.
|
||||
CONN.MAX .EQ 16
|
||||
*--------------------------------------
|
||||
ZPIPCfgPtr .EQ ZPBIN
|
||||
ZPSktPtr .EQ ZPBIN+2
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
CS.START cld
|
||||
@ -20,7 +26,7 @@ CS.START cld
|
||||
.DA #1 BIN Layout Version 1
|
||||
.DA 0
|
||||
.DA CS.END-CS.START Code Length To Relocate
|
||||
.DA 0
|
||||
.DA DS.END-DS.START Data Segment to Allocate
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
@ -31,52 +37,236 @@ CS.START cld
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.LIBTCPIP .DA LIBTCPIP
|
||||
L.Socket .DA Socket
|
||||
L.MSG.TCPWAIT .DA MSG.TCPWAIT
|
||||
L.MSG.INITOK .DA MSG.INITOK
|
||||
L.MSG.TCPIPERR .DA MSG.TCPIPERR
|
||||
L.MSG.SKTERR .DA MSG.SKTERR
|
||||
L.MSG.ABORT .DA MSG.ABORT
|
||||
L.MSG.INCOMING .DA MSG.INCOMING
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBTCPIP
|
||||
>SYSCALL LoadLibYA
|
||||
bcs .99
|
||||
|
||||
sta hLIBTCPIP
|
||||
|
||||
>PUSHWI S.IP.PROTOCOL.TCP
|
||||
>PUSHWI TCP.PORT.TELNET
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.NewSrvSocket
|
||||
bcs .99
|
||||
sta hSrvSocket
|
||||
|
||||
clc
|
||||
.99 rts
|
||||
lda (pPs)
|
||||
ora #S.PS.F.EVENT Now accept events
|
||||
sta (pPs)
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN >PUSHB hSrvSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SrvSocketAccept
|
||||
CS.RUN jsr Init.Timeout
|
||||
|
||||
>LDYA L.MSG.TCPWAIT
|
||||
>SYSCALL CPrintFYA
|
||||
|
||||
.1 >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
|
||||
bcs .99
|
||||
>STYA ZPIPCfgPtr
|
||||
|
||||
lda (ZPIPCfgPtr) Configured ?
|
||||
bmi CS.RUN.INIT
|
||||
|
||||
>SYSCALL Sleep
|
||||
jsr Wait.Timeout
|
||||
bcc .1
|
||||
>SYSCALL GetC
|
||||
bcs .1
|
||||
cmp #$03
|
||||
bne .1
|
||||
jmp CS.RUN.ABORT
|
||||
|
||||
.99 >LDYA L.MSG.TCPIPERR
|
||||
>SYSCALL CPrintFYA
|
||||
lda #SYSMGR.ERRSYN
|
||||
sec
|
||||
rts
|
||||
|
||||
CS.RUN.INIT ldx #3
|
||||
ldy #S.IPCFG.IP+3
|
||||
.1 lda (ZPIPCfgPtr),y
|
||||
sta Socket.Src.Addr,x
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
>PUSHW L.Socket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.New
|
||||
bcs .9
|
||||
txa
|
||||
ldy #hSrvSocket
|
||||
sta (pData),y
|
||||
|
||||
>LDYA L.MSG.INITOK
|
||||
>SYSCALL CPrintFYA
|
||||
|
||||
.2 >SYSCALL Sleep
|
||||
jsr CS.RUN.SERVER
|
||||
bcs CS.RUN.ERR
|
||||
|
||||
ldy #SktIndex
|
||||
lda (pData),y
|
||||
tay
|
||||
lda (pData),y hSockets
|
||||
|
||||
beq .3
|
||||
|
||||
* jsr CS.RUN.CLIENT
|
||||
|
||||
.3 ldy #SktIndex
|
||||
lda (pData),y
|
||||
inc
|
||||
cmp #CONN.MAX
|
||||
bne .4
|
||||
lda #0
|
||||
|
||||
.4 sta (pData),y
|
||||
|
||||
bra .2
|
||||
|
||||
.9 >LDYA L.MSG.SKTERR
|
||||
>SYSCALL CPrintFYA
|
||||
lda #SYSMGR.ERRSYN
|
||||
sec
|
||||
rts
|
||||
|
||||
CS.RUN.ABORT >LDYA L.MSG.ABORT
|
||||
>SYSCALL CPrintFYA
|
||||
lda #0
|
||||
|
||||
CS.RUN.ERR sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.SERVER ldy #hSrvSocket
|
||||
lda (pData),y
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.AcceptA
|
||||
bcs .8
|
||||
|
||||
pha
|
||||
|
||||
|
||||
ldy #hSockets
|
||||
ldx #CONN.MAX
|
||||
|
||||
.1 lda (pData),y
|
||||
beq .2
|
||||
iny
|
||||
dex
|
||||
bne .1
|
||||
|
||||
pla
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.CloseA
|
||||
bra .8
|
||||
|
||||
.2 pla
|
||||
sta (pData),y
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.GetA
|
||||
>STYA ZPSktPtr
|
||||
|
||||
ldx #3
|
||||
ldy #S.SOCKET.DST.ADDR+3
|
||||
|
||||
.3 >PUSHB (ZPSktPtr),y
|
||||
dey
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
>LDYA L.MSG.INCOMING
|
||||
>SYSCALL CPrintFYA
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.CLIENT >PUSHA hSocket
|
||||
sta .1+1
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.GetCA
|
||||
bcs .8
|
||||
sta .2+1
|
||||
|
||||
>SYSCALL PutCA
|
||||
|
||||
|
||||
.1 lda #$ff
|
||||
>PUSHA
|
||||
|
||||
.2 lda #$ff
|
||||
>PUSHA
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.PutC
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT clc
|
||||
CS.DOEVENT sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT >PUSHB hSrvSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.CloseSocket
|
||||
CS.QUIT ldx #CONN.MAX
|
||||
ldy #hSockets
|
||||
|
||||
.1 lda (pData),y
|
||||
beq .2
|
||||
|
||||
phx
|
||||
phy
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.CLOSEA
|
||||
ply
|
||||
plx
|
||||
|
||||
.2 iny
|
||||
dex
|
||||
bne .1
|
||||
|
||||
ldy #hSrvSocket
|
||||
lda (pData),y
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.CLOSEA
|
||||
|
||||
|
||||
lda hLIBTCPIP
|
||||
>SYSCALL UnloadLibA
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
Init.Timeout ldy #TimeOut
|
||||
lda #TIMEOUT.MAX
|
||||
sta (pData),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
Wait.TimeOut sec
|
||||
ldy #TimeOut
|
||||
lda (pData),y
|
||||
beq .9
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
LIBTCPIP >PSTR "libtcpip.o"
|
||||
MSG.TCPWAIT >CSTR "TELNETD:Waiting for TCP/IP initializing...\r\n"
|
||||
MSG.INITOK >CSTR "TELNETD:Init Ok, Listening.\r\n"
|
||||
MSG.TCPIPERR >CSTR "TELNETD:TCP/IP Not initialized properly\r\n"
|
||||
MSG.SKTERR >CSTR "TELNETD:Listen Error\r\n"
|
||||
MSG.ABORT >CSTR "TELNETD:User Aborted\r\n"
|
||||
MSG.INCOMING >CSTR "TELNETD:Incoming Connection From : %d.%d.%d.%d\r\n"
|
||||
hLIBTCPIP .BS 1
|
||||
hSrvSocket .BS 1
|
||||
*--------------------------------------
|
||||
|
||||
Socket .DA #S.SOCKET.SOCK.STREAM
|
||||
.DA #S.SOCKET.SO.ACCEPTCONN
|
||||
.DA #S.SOCKET.TCP.STATUS.LISTEN
|
||||
.BS 1
|
||||
Socket.Src.Addr .BS 4
|
||||
Socket.Src.Port .DA 23
|
||||
Socket.Dst.Addr .BS 4
|
||||
Socket.Dst.Port .BS 2
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
hSockets .BS CONN.MAX pData
|
||||
SktIndex .BS 1
|
||||
hSrvSocket .BS 1
|
||||
TimeOut .BS 1
|
||||
DS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE SBIN/TELNETD.S
|
||||
ASM
|
||||
|
@ -1,6 +1,6 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.SRC
|
||||
NEW
|
||||
LOMEM $900
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
@ -100,7 +100,7 @@ K.GetDevStatusA jsr K.GetDevByIDA
|
||||
jmp (ZPPtr1)
|
||||
*/--------------------------------------
|
||||
* #MkNodYA
|
||||
* return a S.FILE for a given Device NAME
|
||||
* return a hFile for a given Device Name
|
||||
* ##IN:
|
||||
* Y,A=DevName
|
||||
* ##OUT:
|
||||
@ -164,7 +164,7 @@ K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME
|
||||
.4 jmp $ffff
|
||||
*/--------------------------------------
|
||||
* #MkNodA
|
||||
* return a S.FILE for a given Socket
|
||||
* return a hFile for a given Socket
|
||||
* ##IN:
|
||||
* A=hSocket
|
||||
* ##OUT:
|
||||
@ -186,7 +186,7 @@ K.MKFIFO >PUSHWI 256
|
||||
jsr K.GetMem
|
||||
bcs .99
|
||||
|
||||
phx save FIFO buffer
|
||||
stx .1+1 save FIFO buffer
|
||||
|
||||
>PUSHWI S.NODE.FIFO
|
||||
>PUSHBI S.MEM.F.INIT0
|
||||
@ -201,15 +201,14 @@ K.MKFIFO >PUSHWI 256
|
||||
sta (ZPPtr1),y
|
||||
|
||||
iny S.NODE.FIFO.hMem
|
||||
pla
|
||||
.1 lda #$ff Self Modified
|
||||
sta (ZPPtr1),y
|
||||
txa
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 plx get back FIFO buffer
|
||||
pha save error code
|
||||
txa
|
||||
.9 pha save error code
|
||||
lda .1+1 get back FIFO buffer
|
||||
jsr K.FreeMemA
|
||||
pla
|
||||
sec
|
||||
|
@ -159,7 +159,7 @@ Prints Pascal/C-Style String
|
||||
+ Y,A = Ptr to S.DEVINFO
|
||||
|
||||
#MkNodYA
|
||||
return a S.FILE for a given Device NAME
|
||||
return a hFile for a given Device Name
|
||||
|
||||
##IN:
|
||||
+ Y,A=DevName
|
||||
@ -169,7 +169,7 @@ return a S.FILE for a given Device NAME
|
||||
+ A = hFILE
|
||||
|
||||
#MkNodA
|
||||
return a S.FILE for a given Socket
|
||||
return a hFile for a given Socket
|
||||
|
||||
##IN:
|
||||
+ A=hSocket
|
||||
|
@ -110,6 +110,15 @@
|
||||
##Out :
|
||||
+ A = hSocket
|
||||
|
||||
#SKT.MkNodA
|
||||
+ Create a new file from TCP socket
|
||||
|
||||
##In :
|
||||
+ A = hSocket
|
||||
|
||||
##Out :
|
||||
+ A = hFile
|
||||
|
||||
#SKT.Write (DGRAM,STREAM,RAW)
|
||||
+ Send block of data
|
||||
|
||||
@ -119,7 +128,6 @@
|
||||
+ PUSHW = len
|
||||
|
||||
##Out :
|
||||
+ A = hFrame
|
||||
|
||||
#SKT.ReadA (DGRAM,RAW)
|
||||
|
||||
@ -137,7 +145,6 @@
|
||||
+ PUSHB = Char
|
||||
|
||||
##Out :
|
||||
+ A = char
|
||||
|
||||
#SKT.PutS (STREAM)
|
||||
+ Write Line in pBuf
|
||||
|
Loading…
x
Reference in New Issue
Block a user