mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-05 23:30:15 +00:00
Kernel 0.9.2
This commit is contained in:
parent
563d695a1b
commit
617bf82063
Binary file not shown.
Binary file not shown.
@ -172,7 +172,7 @@ CS.RUN.OPENSKT ldx #3
|
||||
|
||||
>PUSHW L.SA.REMOTE
|
||||
>LDA.G hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
||||
|
||||
bcc CS.RUN.SEND.ECHO
|
||||
|
||||
|
@ -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
|
||||
|
@ -51,7 +51,6 @@ SKT.Socket.DSOCK
|
||||
txa
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
SKT.Socket.STREAM
|
||||
lda #S.IP.PROTOCOL.TCP
|
||||
ldy #S.SOCKET.TCP
|
||||
@ -66,18 +65,17 @@ SKT.Socket.STREAM
|
||||
|
||||
jsr SKT.Socket.FindFree
|
||||
bcs .9
|
||||
|
||||
|
||||
ldy #FD.SSOCK.SIZE-1
|
||||
|
||||
|
||||
.1 lda FD.SSOCK,y
|
||||
sta (ZPTmpPtr1),y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
|
||||
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
|
||||
@ -151,7 +149,7 @@ SKT.connect >SYSCALL GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
|
||||
jsr SKT.PullRemAddr
|
||||
|
||||
|
||||
ldy #S.SOCKET.T
|
||||
lda (ZPPtrSKT),y
|
||||
tax
|
||||
@ -164,7 +162,7 @@ SKT.connect.SEQPACKET
|
||||
jsr SKT.SetRemAddr
|
||||
jsr SKT.NewTCB
|
||||
bcs SKT.connect.99
|
||||
|
||||
|
||||
lda #S.TCP.OPTIONS.SYN
|
||||
jsr TCP.OUT.SendOptA Send SYN
|
||||
bcs .9
|
||||
@ -176,7 +174,7 @@ SKT.connect.SEQPACKET
|
||||
|
||||
.9 lda #ERR.SKT.BAD
|
||||
sec
|
||||
SKT.connect.99 rts
|
||||
SKT.connect.99 rts
|
||||
*/--------------------------------------
|
||||
* # Listen
|
||||
* Listen for connections on a socket
|
||||
@ -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
|
||||
@ -279,17 +277,15 @@ SKT.shutdown pha
|
||||
lda (ZPPtrSKT),y
|
||||
and #S.SOCKET.O.ACCEPTCONN
|
||||
bne SKT.shutdown.LISTEN
|
||||
|
||||
|
||||
ldy #S.SOCKET.T
|
||||
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
|
||||
@ -317,24 +313,22 @@ SKT.shutdown.SEQPACKET
|
||||
bra .1
|
||||
|
||||
.3 pla get hFD...
|
||||
|
||||
|
||||
ldx #0
|
||||
|
||||
|
||||
.4 cmp SKT.TABLE,x
|
||||
beq .5
|
||||
|
||||
|
||||
inx
|
||||
cpx #K.SKTTABLE.SIZE
|
||||
bne .4
|
||||
|
||||
|
||||
.5 stz SKT.TABLE,x
|
||||
>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
|
||||
|
||||
@ -560,7 +548,7 @@ SKT.Recv clc
|
||||
.99 plp
|
||||
lda #ERR.SKT.BAD
|
||||
sec
|
||||
rts
|
||||
rts
|
||||
|
||||
.90 plp
|
||||
lda #0 no data
|
||||
@ -590,19 +578,15 @@ SKT.Send clc
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
plp
|
||||
|
||||
>PULLW ZPDataInPtr
|
||||
>PULLW ZPDataInLen
|
||||
|
||||
>PULLW ZPDataInLen
|
||||
bcc .1
|
||||
|
||||
jsr SKT.PullRemAddr
|
||||
jsr SKT.SetRemAddr
|
||||
|
||||
.1 ldy #S.SOCKET.T
|
||||
lda (ZPPtrSKT),y
|
||||
tax
|
||||
jmp (J.SKT.send,x)
|
||||
jmp (J.SKT.send,x)
|
||||
*--------------------------------------
|
||||
SKT.Send.RAW ldy #S.SOCKET.PROTO
|
||||
lda (ZPPtrSKT),y
|
||||
@ -619,7 +603,7 @@ SKT.Send.DGRAM ldx #S.IP.PROTOCOL.UDP
|
||||
jsr SKT.SetFrameOutTCPUDPPorts
|
||||
SKT.Send.DGRAM.8
|
||||
jsr SKT.SetFrameOutDstIP
|
||||
jsr SKT.CopyDataInToOut
|
||||
jsr SKT.CopyDataInToOut
|
||||
jmp FRM.SendIP
|
||||
*--------------------------------------
|
||||
SKT.Send.STREAM lda #ERR.SKT.BAD
|
||||
@ -635,15 +619,33 @@ 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
|
||||
*/--------------------------------------
|
||||
* # 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
|
||||
*--------------------------------------
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
SKT.PullLocAddr >PULLW ZPTmpPtr1
|
||||
ldy #S.SOCKADDR-1
|
||||
.1 lda (ZPTmpPtr1),y
|
||||
@ -651,7 +653,7 @@ SKT.PullLocAddr >PULLW ZPTmpPtr1
|
||||
dey
|
||||
bpl .1
|
||||
rts
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
SKT.PullRemAddr >PULLW ZPTmpPtr1
|
||||
ldy #S.SOCKADDR-1
|
||||
.1 lda (ZPTmpPtr1),y
|
||||
@ -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
|
||||
|
||||
@ -713,11 +713,11 @@ SKT.FindMatchingLocRem
|
||||
lda (ZPTmpPtr1),y
|
||||
and #S.SOCKET.O.ACCEPTCONN
|
||||
beq .6
|
||||
|
||||
|
||||
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
|
||||
@ -733,7 +733,7 @@ SKT.FindMatchingLocRem
|
||||
bra .5
|
||||
|
||||
.41 ldy #S.SOCKET.REM.ADDR
|
||||
|
||||
|
||||
.5 lda (ZPTmpPtr1),y
|
||||
cmp SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y
|
||||
bne .8 wrong remote host, exit....
|
||||
@ -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
|
||||
@ -1077,8 +1071,8 @@ SKT.GetDataFromSktIn
|
||||
>LDYA ZPTmpPtr3
|
||||
clc
|
||||
rts
|
||||
.9
|
||||
* lda #0 NO DATA
|
||||
.9
|
||||
* lda #0
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -1093,7 +1087,7 @@ SKT.AddDataToSktOut
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE+1
|
||||
sbc ZPDataInLen+1
|
||||
bcc .9 Not enough room in Q
|
||||
|
||||
|
||||
ldy #S.SOCKET.SQ.hOutMem
|
||||
lda (ZPPtrSKT),y
|
||||
>SYSCALL GetMemPtr
|
||||
@ -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
|
||||
*--------------------------------------
|
||||
@ -1395,7 +1389,7 @@ SKT.SetFrameOutTCPUDPPorts
|
||||
iny
|
||||
txa
|
||||
sta (ZPFrameOutPtr),y
|
||||
|
||||
|
||||
ldy #S.SOCKET.REM.PORT
|
||||
lda (ZPPtrSKT),y
|
||||
tax
|
||||
@ -1414,7 +1408,7 @@ SKT.CopyDataInToOut
|
||||
pha
|
||||
lda ZPDataOutPtr+1
|
||||
pha
|
||||
|
||||
|
||||
lda ZPDataInLen
|
||||
eor #$ff
|
||||
tax
|
||||
@ -1438,13 +1432,12 @@ SKT.CopyDataInToOut
|
||||
inc ZPDataInPtr+1
|
||||
inc ZPDataOutPtr+1
|
||||
bne .1
|
||||
|
||||
|
||||
.9 pla
|
||||
sta ZPDataOutPtr+1
|
||||
pla
|
||||
sta ZPDataInPtr+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/LIB/LIBTCPIP.S.SKT
|
||||
LOAD /A2OSX.SRC/LIB/LIBTCPIP.S
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user