Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-11-07 22:48:48 +01:00
parent 563d695a1b
commit 617bf82063
7 changed files with 87 additions and 72 deletions

Binary file not shown.

Binary file not shown.

View File

@ -56,6 +56,7 @@ LIBTCPIP.RecvFrom .EQ 52
LIBTCPIP.SendTo .EQ 54
LIBTCPIP.GetTable .EQ 56
LIBTCPIP.setsockopt .EQ 58
*--------------------------------------
ERR.SKT.OOS .EQ $BF
ERR.SKT.BUSY .EQ $BE

View File

@ -51,7 +51,6 @@ SKT.Socket.DSOCK
txa
clc
.9 rts
SKT.Socket.STREAM
lda #S.IP.PROTOCOL.TCP
ldy #S.SOCKET.TCP
@ -77,7 +76,6 @@ SKT.Socket.STREAM
txa
clc
.9 rts
SKT.Socket.FindFree
ldy #0
@ -93,7 +91,7 @@ SKT.Socket.FindFree
sec
rts
.2 txa x = hFD
.2 txa
sta SKT.TABLE,y
clc
rts
@ -237,10 +235,10 @@ SKT.Accept >SYSCALL GetMemPtr
ldy #S.SOCKET.HQ.TAIL
lda (ZPPtrSKT),y
ldy #S.SOCKET.HQ.HEAD
cmp (ZPPtrSKT),y Queue Empty
cmp (ZPPtrSKT),y
beq .9 CS
pha save tail...
pha
inc
cmp #S.SOCKET.HQ.MAX
bne .1
@ -284,12 +282,10 @@ SKT.shutdown pha
lda (ZPPtrSKT),y
tax
jmp (J.SKT.shutdown,x)
SKT.shutdown.LISTEN
SKT.shutdown.RAW
SKT.shutdown.DGRAM
SKT.shutdown.SEQPACKET
.1 ldy #S.SOCKET.HQ.TAIL
lda (ZPPtrSKT),y
ldy #S.SOCKET.HQ.HEAD
@ -331,10 +327,8 @@ SKT.shutdown.SEQPACKET
>SYSCALL freemem
clc
rts
SKT.shutdown.STREAM
pla
ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.CLWAIT
@ -350,7 +344,6 @@ SKT.shutdown.STREAM
lda (ZPPtrSKT),y
ora #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
sta (ZPPtrSKT),y
jmp TCP.OUT
*/--------------------------------------
* # Read (STREAM)
@ -368,7 +361,6 @@ SKT.shutdown.STREAM
*\--------------------------------------
SKT.Read >SYSCALL GetMemPtr
>STYA ZPPtrSKT
>PULLW ZPDataInPtr !!!DataOut trashed when sending ACK in TCP.OUT
>PULLW ZPDataInLen !!!use DataInPtr/Len
@ -419,7 +411,6 @@ SKT.Read >SYSCALL GetMemPtr
*\--------------------------------------
SKT.Write >SYSCALL GetMemPtr
>STYA ZPPtrSKT
>PULLW ZPDataInPtr
>PULLW ZPDataInLen
@ -474,13 +465,10 @@ SKT.Write >SYSCALL GetMemPtr
SKT.RecvFrom pha
>PULLW ZPTmpPtr1 addr
pla
sec
.HS 90 BCC
SKT.Recv clc
php
>SYSCALL GetMemPtr
>STYA ZPPtrSKT
@ -590,15 +578,11 @@ SKT.Send clc
>SYSCALL GetMemPtr
>STYA ZPPtrSKT
plp
>PULLW ZPDataInPtr
>PULLW ZPDataInLen
bcc .1
jsr SKT.PullRemAddr
jsr SKT.SetRemAddr
.1 ldy #S.SOCKET.T
lda (ZPPtrSKT),y
tax
@ -635,14 +619,32 @@ SKT.Send.SEQPACKET
* `void * gettable();`
* ## ASM
* **In:**
* `>LIBCALL hLIBTCPIP,LIBTCPIP.skt.GetTable`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.GetTable`
* ## RETURN VALUE
*\--------------------------------------
SKT.GetTable >LDYA L.SKT.Table
clc
rts
*--------------------------------------
* PRIVATE
*/--------------------------------------
* # SetSockOpt
* Set Socket Options
* ## C
* `int setsockopt(hFD fd, short int opts);`
* ## ASM
* **In:**
* `>PUSHWI opts`
* `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt`
* ## RETURN VALUE
*\--------------------------------------
SKT.setsockopt >SYSCALL GetMemPtr
>STYA ZPPtrSKT
>PULLA
ldy #S.SOCKET.O
ora (ZPPtrSKT),y
sta (ZPPtrSKT),y
clc
rts
*--------------------------------------
SKT.PullLocAddr >PULLW ZPTmpPtr1
ldy #S.SOCKADDR-1
@ -666,7 +668,6 @@ SKT.SetLocAddr ldy #S.SOCKET.LOC.PORT+1
dey
cpy #S.SOCKET.LOC.ADDR
bcs .1
* clc
rts
*--------------------------------------
SKT.SetRemAddr ldy #S.SOCKET.REM.PORT+1
@ -675,7 +676,6 @@ SKT.SetRemAddr ldy #S.SOCKET.REM.PORT+1
dey
cpy #S.SOCKET.REM.ADDR
bcs .1
* clc
rts
*--------------------------------------
SKT.FindMatchingLocRem
@ -699,7 +699,7 @@ SKT.FindMatchingLocRem
.2 lda (ZPTmpPtr1),y
bne .4
ldy #S.SOCKET.LOC.PORT This Socket is bound to 0.0.0.0,check only LOC port
ldy #S.SOCKET.LOC.PORT bound to 0.0.0.0,check only LOC port
.3 lda (ZPTmpPtr1),y
@ -717,7 +717,7 @@ SKT.FindMatchingLocRem
ldy #S.TCP.OPTIONS Listening, only SYN packet....
lda (ZPFrameInPtr),y
cmp #S.TCP.OPTIONS.SYN
beq .7 a SYN recieved on a LISTEN socket, ok
beq .7 SYN recieved on a LISTEN socket, ok
bne .8 bad packet for this listening
.6 lda SKT.REM.ADDR+S.SOCKADDR.ADDR
@ -788,9 +788,6 @@ SKT.FindMatchingLoc
* sec
.9 rts
*--------------------------------------
* ZPPtrSKT -> actual socket
* A = hSocket or hFrame
*--------------------------------------
SKT.AddToQueueA pha
ldy #S.SOCKET.HQ.HEAD
lda (ZPPtrSKT),y
@ -990,7 +987,7 @@ SKT.GetDataFromSktIn
bne .3
lda SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
eor SKT.TmpCache+S.SOCKET.TCP.INHEAD+1
beq .7 no more data....
beq .7
.3 lda (ZPTmpPtr2)
pha
@ -1037,7 +1034,6 @@ SKT.GetDataFromSktIn
clc
adc ZPTmpPtr3
sta SKT.TmpCache+S.SOCKET.TCP.INFREE
lda SKT.TmpCache+S.SOCKET.TCP.INFREE+1
adc ZPTmpPtr3+1
sta SKT.TmpCache+S.SOCKET.TCP.INFREE+1
@ -1046,7 +1042,6 @@ SKT.GetDataFromSktIn
sec
sbc ZPTmpPtr3
sta SKT.TmpCache+S.SOCKET.TCP.INUSED
lda SKT.TmpCache+S.SOCKET.TCP.INUSED+1
sbc ZPTmpPtr3+1
sta SKT.TmpCache+S.SOCKET.TCP.INUSED+1
@ -1055,7 +1050,6 @@ SKT.GetDataFromSktIn
clc
adc ZPTmpPtr3
sta SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+3
lda SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+2
adc ZPTmpPtr3+1
sta SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+2
@ -1078,7 +1072,7 @@ SKT.GetDataFromSktIn
clc
rts
.9
* lda #0 NO DATA
* lda #0
sec
rts
*--------------------------------------
@ -1339,7 +1333,7 @@ SKT.StoreTCB ldy #S.SOCKET
iny
cpy #S.SOCKET.TCP
bne .1
clc Make CC for successfull exit
clc
SKT.StoreTCB.RTS
rts
*--------------------------------------
@ -1444,7 +1438,6 @@ SKT.CopyDataInToOut
pla
sta ZPDataInPtr+1
rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/LIB/LIBTCPIP.S.SKT
LOAD /A2OSX.SRC/LIB/LIBTCPIP.S

View File

@ -89,6 +89,8 @@ CS.START cld
.DA SKT.SendTo
.DA SKT.GetTable
.DA SKT.setsockopt
*--------------------------------------
L.DEVNAME .DA DEVNAME
L.MSG.DEV.KO .DA MSG.DEV.KO

View File

@ -40,7 +40,8 @@ CS.START cld
.DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP
L.IPCFG .DA IPCFG
L.Socket .DA Socket
L.SA.LOCAL .DA SA.LOCAL
L.SA.REMOTE .DA SA.REMOTE
L.MSG.CFG1 .DA MSG.CFG1
L.MSG.CFG2 .DA MSG.CFG2
L.MSG.CFG.KO .DA MSG.CFG.KO
@ -53,6 +54,7 @@ L.DHCP.REQ .DA DHCP.REQ
*--------------------------------------
CS.INIT >LDYA L.LIBTCPIP
>SYSCALL LoadLib
bcs .9
sta hLIBTCPIP
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
@ -105,13 +107,27 @@ CS.INIT >LDYA L.LIBTCPIP
sec
rts
*--------------------------------------
CS.RUN >PUSHW L.Socket
CS.RUN >PUSHBI 0 no protocol
lda #S.SOCKET.T.DGRAM
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcc .1
jmp CS.RUN.KO
.9 jmp CS.RUN.KO
.1 >STA.G hSocket
pha
>PUSHW L.SA.LOCAL
pla
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs .9
>PUSHWI S.SOCKET.O.BROADCAST
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.setsockopt
>PUSHW L.SA.REMOTE
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcs .9
>LDYA L.MSG.CFG1
>SYSCALL puts
@ -236,7 +252,7 @@ CS.DOEVENT lda (pEvent)
CS.QUIT >LDA.G hSocket
beq .1
>SYSCALL fclose
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.1 lda hLIBTCPIP
>SYSCALL UnloadLib
@ -437,7 +453,7 @@ Wait.TimeOut ldy #TimeOut
rts
*--------------------------------------
CS.END
LIBTCPIP .AZ "libtcpip.o"
LIBTCPIP .AZ "libtcpip"
MSG.CFG1 .AZ "DHCPCLNT:Searching for DHCP servers..."
MSG.CFG2 .AZ "DHCPCLNT:Reply from DHCP Server at %d.%d.%d.%d, requesting...\r\n"
MSG.CFG.KO .AZ "DHCPCLNT:Time Out [%h].\r\n"
@ -447,12 +463,15 @@ MSG.CFG.NA .AZ "DHCPCLNT:TCPIP Already configured, exiting."
hLIBTCPIP .BS 1
IPCFG .BS S.IPCFG
*--------------------------------------
Socket .DA #S.SOCKET.T.DGRAM
.BS 3
.HS 00.00.00.00 Socket.Src.Addr
.DA UDP.PORT.DHCPC Socket.Src.Port
.HS FF.FF.FF.FF Socket.Dst.Addr
.DA UDP.PORT.DHCPS Socket.Dst.Port
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
.BS 1
.HS 00.00.00.00 S.SOCKADDR.ADDR
.DA UDP.PORT.DHCPC S.SOCKADDR.PORT
*--------------------------------------
SA.REMOTE .DA #AF.INET S.SOCKADDR.AF
.BS 1
.HS FF.FF.FF.FF S.SOCKADDR.ADDR
.DA UDP.PORT.DHCPS S.SOCKADDR.PORT
*--------------------------------------
DHCP.DISC .HS 01010600 OP,HTYPE,HLEN,HOPS
DHCP.DISC.XID .BS 4