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.SendTo .EQ 54
LIBTCPIP.GetTable .EQ 56 LIBTCPIP.GetTable .EQ 56
LIBTCPIP.setsockopt .EQ 58
*-------------------------------------- *--------------------------------------
ERR.SKT.OOS .EQ $BF ERR.SKT.OOS .EQ $BF
ERR.SKT.BUSY .EQ $BE ERR.SKT.BUSY .EQ $BE

View File

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

View File

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

View File

@ -40,7 +40,8 @@ CS.START cld
.DA CS.QUIT .DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP L.LIBTCPIP .DA LIBTCPIP
L.IPCFG .DA IPCFG 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.CFG1 .DA MSG.CFG1
L.MSG.CFG2 .DA MSG.CFG2 L.MSG.CFG2 .DA MSG.CFG2
L.MSG.CFG.KO .DA MSG.CFG.KO L.MSG.CFG.KO .DA MSG.CFG.KO
@ -53,6 +54,7 @@ L.DHCP.REQ .DA DHCP.REQ
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBTCPIP CS.INIT >LDYA L.LIBTCPIP
>SYSCALL LoadLib >SYSCALL LoadLib
bcs .9
sta hLIBTCPIP sta hLIBTCPIP
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
@ -105,13 +107,27 @@ CS.INIT >LDYA L.LIBTCPIP
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN >PUSHW L.Socket CS.RUN >PUSHBI 0 no protocol
lda #S.SOCKET.T.DGRAM
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket >LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcc .1 bcc .1
jmp CS.RUN.KO .9 jmp CS.RUN.KO
.1 >STA.G hSocket .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 >LDYA L.MSG.CFG1
>SYSCALL puts >SYSCALL puts
@ -236,7 +252,7 @@ CS.DOEVENT lda (pEvent)
CS.QUIT >LDA.G hSocket CS.QUIT >LDA.G hSocket
beq .1 beq .1
>SYSCALL fclose >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.1 lda hLIBTCPIP .1 lda hLIBTCPIP
>SYSCALL UnloadLib >SYSCALL UnloadLib
@ -437,7 +453,7 @@ Wait.TimeOut ldy #TimeOut
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
LIBTCPIP .AZ "libtcpip.o" LIBTCPIP .AZ "libtcpip"
MSG.CFG1 .AZ "DHCPCLNT:Searching for DHCP servers..." 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.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" 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 hLIBTCPIP .BS 1
IPCFG .BS S.IPCFG IPCFG .BS S.IPCFG
*-------------------------------------- *--------------------------------------
Socket .DA #S.SOCKET.T.DGRAM SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
.BS 3 .BS 1
.HS 00.00.00.00 Socket.Src.Addr .HS 00.00.00.00 S.SOCKADDR.ADDR
.DA UDP.PORT.DHCPC Socket.Src.Port .DA UDP.PORT.DHCPC S.SOCKADDR.PORT
.HS FF.FF.FF.FF Socket.Dst.Addr *--------------------------------------
.DA UDP.PORT.DHCPS Socket.Dst.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 .HS 01010600 OP,HTYPE,HLEN,HOPS
DHCP.DISC.XID .BS 4 DHCP.DISC.XID .BS 4