Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-11-01 09:53:47 +01:00
parent 8bcf18386a
commit 005c2ee1c6
12 changed files with 359 additions and 331 deletions

Binary file not shown.

Binary file not shown.

View File

@ -37,28 +37,35 @@ L.LIBTCPIP .DA LIBTCPIP
L.SSCANF.IP .DA SSCANF.IP
L.MSG0 .DA MSG0
L.MSG1 .DA MSG1
L.MSG.USAGE .DA MSG.USAGE
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBTCPIP
>SYSCALL LoadLib
sta hLIBTCPIP
* lda (pPs)
* ora #S.PS.F.EVENT Now accept events
* sta (pPs)
clc
rts
*--------------------------------------
CS.RUN ldy #S.PS.ARGC
lda (pPs),y
bne CS.RUN.ADD
cmp #1
bne .1
jmp CS.RUN.DUMP
*--------------------------------------
CS.RUN.ADD cmp #2
beq .1
jmp .9
.1 >PUSHEA.G DST.IP+3
.1 cmp #3
beq CS.RUN.ADD
>PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
rts
*--------------------------------------
CS.RUN.ADD >PUSHEA.G DST.IP+3
>PUSHEA.G DST.IP+2
>PUSHEA.G DST.IP+1
>PUSHEA.G DST.IP
@ -152,10 +159,12 @@ CS.QUIT lda hLIBTCPIP
*--------------------------------------
CS.END
LIBTCPIP .AZ "libtcpip"
hLIBTCPIP .BS 1
SSCANF.IP .AZ "%d.%d.%d.%d"
MSG0 .AZ "STS TR.ID Hostname IP Address TTL"
MSG1 .AZ "$%h $%H %32s %03d.%03d.%03d.%03d %u\r\n"
hLIBTCPIP .BS 1
MSG.USAGE .AS "Usage : Add a static entry, DNSINFO <host> <IP>\r\n"
.AZ " Dump DNS Cache, DNSINFO \r\n"
*--------------------------------------
DS.START
DST.IP .BS 4

View File

@ -39,7 +39,6 @@ CS.START cld
.DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP
L.SA.LOCAL .DA SA.LOCAL
L.SA.LOCAL.AD .DA SA.LOCAL+S.SOCKADDR.ADDR
L.SA.REMOTE .DA SA.REMOTE
L.SA.REMOTE.AD .DA SA.REMOTE+S.SOCKADDR.ADDR
L.MSG.IPKO .DA MSG.IPKO
@ -75,8 +74,17 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
CS.RUN.IPOK ldy #S.PS.ARGC
lda (pPs),y
cmp #2
bcc .9
beq .9
ldy #S.IPCFG.IP+3
ldx #3
.1 lda (ZPIPCfgPtr),y
sta SA.LOCAL+S.SOCKADDR.ADDR,x
dey
dex
bpl .1
jsr Init.Timeout
@ -105,13 +113,10 @@ CS.RUN.IPOK ldy #S.PS.ARGC
sec
rts
CS.RUN.HOSTOK ldy #S.PS.ARGC
lda (pPs),y
cmp #2
bcc CS.RUN.PORTOK
lda #2
CS.RUN.HOSTOK lda #2
>SYSCALL ArgV
bcs CS.RUN.PORTOK
>SYSCALL atoi
>STYA SA.REMOTE+S.SOCKADDR.PORT
@ -152,6 +157,7 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
.2 >PUSHW L.SA.REMOTE
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcs .9
>LDYA L.MSG.SKTOK
>SYSCALL puts
@ -164,7 +170,6 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
>STA.G hBuf
CS.RUN.LOOP >SLEEP
>PUSHWI BUFSIZE
>PUSHW ZPBufPtr
>LDA.G hSocket
@ -179,14 +184,15 @@ CS.RUN.LOOP >SLEEP
>PUSHW ZPBufPtr
ldy #S.PS.hStdOut
lda (pPs),y
>SYSCALL write
>SYSCALL fwrite
bcs .11
.2 >PUSHWI BUFSIZE
>PUSHW ZPBufPtr
ldy #S.PS.hStdIn
lda (pPs),y
>SYSCALL read
>SYSCALL fread
bcc .3
tay
beq CS.RUN.LOOP no char from STDIN
@ -198,14 +204,20 @@ CS.RUN.LOOP >SLEEP
cmp #3 Ctrl-C
beq CS.RUN.USER
>PUSHW ZPBufLen
.4 >PUSHW ZPBufLen
>PUSHW ZPBufPtr
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Write
bcs CS.RUN.SKTERR
bcc .8
jmp CS.RUN.LOOP
tay
bne CS.RUN.SKTERR
* >SLEEP
* bra .4
.8 jmp CS.RUN.LOOP
.9 lda #0
sec

View File

@ -106,8 +106,16 @@ DNS.REQUEST lda hDNSSocket
rts
*--------------------------------------
DNS.REQUEST.SEND
ldy #3
.1 lda IPCFG+S.IPCFG.DNS1,y
sta SA.REMOTE+S.SOCKADDR.ADDR,y
dey
bpl .1
* TODO : >PUSHW L.SOCKADDR.DNS1....DNS2
>LDYAI UDP.PORT.DNS
>STYA SA.REMOTE+S.SOCKADDR.PORT
>PUSHW L.SA.REMOTE
>PUSHW DNS.MSG.LEN
>PUSHW L.DNS.MSG
@ -415,7 +423,7 @@ DNS.DecodeMsg sta hFrameIn
>SYSCALL GetMemPtr
>STYA ZPFrameInPtr
ldy #S.DNS.F+1
ldy #S.DNS.F
lda (ZPFrameInPtr),y
and /S.DNS.F.QR
beq .9

View File

@ -16,22 +16,19 @@ AUTO 4,1
* CC: A = hSOCKET
* CS: A = EC
*\--------------------------------------
SKT.Socket tax type (RAW,DGRAM,SEQPACKET,STREAM)
SKT.Socket tax
>PULLA get protocol (RAW)
SKT.Socket.I jmp (J.SKT.Socket,x)
SKT.Socket.RAW ldy #S.SOCKET socket.size
SKT.Socket.RAW ldy #S.SOCKET
bra SKT.Socket.DSOCK
SKT.Socket.DGRAM
lda #S.IP.PROTOCOL.UDP
ldy #S.SOCKET socket.size
ldy #S.SOCKET
bra SKT.Socket.DSOCK
SKT.Socket.SEQPACKET
lda #S.IP.PROTOCOL.TCP
ldy #S.SOCKET.TCP socket.size
ldy #S.SOCKET.TCP
SKT.Socket.DSOCK
stx FD.DSOCK+S.SOCKET.T save type
sta FD.DSOCK+S.SOCKET.PROTO ICMP,UDP,TCP
@ -60,7 +57,7 @@ SKT.Socket.STREAM
ldy #S.SOCKET.TCP
stx FD.SSOCK+S.SOCKET.T save type
sta FD.SSOCK+S.SOCKET.PROTO ICMP,UDP,TCP
sta FD.SSOCK+S.SOCKET.PROTO
lda #0 Y = socket.size
>SYSCALL GetMem0
bcs .9
@ -116,7 +113,6 @@ SKT.Socket.FindFree
*\--------------------------------------
SKT.bind >SYSCALL GetMemPtr
>STYA ZPPtrSKT
jsr SKT.PullLocAddr
lda SKT.LOC.ADDR+S.SOCKADDR.PORT
@ -142,7 +138,7 @@ SKT.bind >SYSCALL GetMemPtr
rts
*/--------------------------------------
* # Connect
* Iinitiate a connection on a socket
* Initiate a connection on a socket
* ## C
* `int connect(hFD fd, const struct sockaddr *addr);`
* ## ASM
@ -163,71 +159,27 @@ SKT.connect >SYSCALL GetMemPtr
lda (ZPPtrSKT),y
tax
jmp (J.SKT.connect,x)
SKT.connect.RAW
SKT.connect.DGRAM
jsr SKT.SetRemAddr
clc
rts
SKT.connect.STREAM
>LDYAI K.TCP.WSIZE
>SYSCALL getmem
bcs SKT.connect.99
txa
ldy #S.SOCKET.SQ.hInMem
sta (ZPPtrSKT),y
>LDYAI K.TCP.WSIZE
>SYSCALL getmem
bcs SKT.connect.99
txa
ldy #S.SOCKET.SQ.hOutMem
sta (ZPPtrSKT),y
SKT.connect.SEQPACKET
ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y
bne SKT.connect.9
jsr SKT.SetRemAddr
lda #K.TCP.WSIZE
ldy #S.SOCKET.TCP.INFREE
sta (ZPPtrSKT),y
ldy #S.SOCKET.TCP.OUTFREE
sta (ZPPtrSKT),y
lda /K.TCP.WSIZE
ldy #S.SOCKET.TCP.INFREE
sta (ZPPtrSKT),y
ldy #S.SOCKET.TCP.OUTFREE
sta (ZPPtrSKT),y
ldy #S.SOCKET.TCP.OUTNEXTSEQ
.2 lda A2osX.TIMER16-S.SOCKET.TCP.OUTNEXTSEQ,y
sta (ZPPtrSKT),y
iny
cpy #S.SOCKET.TCP.OUTNEXTSEQ+4
bne .2
jsr SKT.NewTCB
bcs SKT.connect.99
lda #S.TCP.OPTIONS.SYN
jsr TCP.OUT.SendOptA Send SYN
bcs .9
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.SYNSENT
sta (ZPPtrSKT),y
sta SKT.TmpCache+S.SOCKET.TCP.S
clc
.9 rts
jmp SKT.StoreTCB
SKT.connect.9 lda #ERR.SKT.BAD
.9 lda #ERR.SKT.BAD
sec
SKT.connect.99 rts
*/--------------------------------------
@ -358,9 +310,7 @@ SKT.shutdown >SYSCALL GetMemPtr
>SYSCALL FreeMem
bra .1
.8 lda #0
sta (ZPPtrSKT)
clc
.8 clc
rts
.9 lda #ERR.SKT.BAD
@ -474,7 +424,7 @@ SKT.Write >SYSCALL GetMemPtr
ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.ESTBLSH
bne .91
bcc .90 Not yet established...no data
jsr SKT.AddDataToSktOut will call SKT.GetTCB
bcs .90
@ -509,9 +459,14 @@ SKT.Write >SYSCALL GetMemPtr
* CC: A = hMem
* CS: A = EC
*\--------------------------------------
SKT.RecvFrom sec
SKT.RecvFrom pha
>PULLW ZPTmpPtr1 addr
pla
sec
.HS 90 BCC
SKT.Recv clc
php
>SYSCALL GetMemPtr
@ -544,13 +499,12 @@ SKT.Recv clc
tay
lda (ZPPtrSKT),y
plp
bcc .9
bcc .9 Exit with CC and A=hFrame
pha
>SYSCALL GetMemPtr
>STYA ZPFrameInPtr
>PULLW ZPTmpPtr1 addr
ldy #S.IP.SRC
.2 lda (ZPFrameInPtr),y
@ -625,41 +579,35 @@ SKT.Send clc
>STYA ZPPtrSKT
plp
>PULLW ZPDataInPtr
>PULLW ZPDataInLen
bcc .1
jsr SKT.PullRemAddr
jsr SKT.SetRemAddr
.1 >PULLW ZPDataInPtr
>PULLW ZPDataInLen
ldy #S.SOCKET.T
.1 ldy #S.SOCKET.T
lda (ZPPtrSKT),y
tax
jmp (J.SKT.send,x)
*--------------------------------------
SKT.Send.RAW ldy #S.SOCKET.PROTO
lda (ZPPtrSKT),y
tax
>LDYA ZPDataInLen
jsr FRM.NewIP
bcs SKT.Send.9
bra SKT.Send.DGRAM.8
*--------------------------------------
SKT.Send.DGRAM ldx #S.IP.PROTOCOL.UDP
>LDYA ZPDataInLen
jsr FRM.NewIP
bcs SKT.Send.9
jsr SKT.SetFrameOutTCPUDPPorts
SKT.Send.DGRAM.8
jsr SKT.SetFrameOutDstIP
jsr SKT.CopyDataInToOut
jmp FRM.SendIP
*--------------------------------------
SKT.Send.STREAM lda #ERR.SKT.BAD
@ -685,9 +633,7 @@ SKT.GetTable >LDYA L.SKT.Table
* PRIVATE
*--------------------------------------
SKT.PullLocAddr >PULLW ZPTmpPtr1
ldy #S.SOCKADDR-1
.1 lda (ZPTmpPtr1),y
sta SKT.LOC.ADDR,y
dey
@ -695,9 +641,7 @@ SKT.PullLocAddr >PULLW ZPTmpPtr1
rts
*--------------------------------------
SKT.PullRemAddr >PULLW ZPTmpPtr1
ldy #S.SOCKADDR-1
.1 lda (ZPTmpPtr1),y
sta SKT.REM.ADDR,y
dey
@ -705,7 +649,6 @@ SKT.PullRemAddr >PULLW ZPTmpPtr1
rts
*--------------------------------------
SKT.SetLocAddr ldy #S.SOCKET.LOC.ADDR
.1 lda SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
sta (ZPPtrSKT),y
iny
@ -714,7 +657,6 @@ SKT.SetLocAddr ldy #S.SOCKET.LOC.ADDR
rts
*--------------------------------------
SKT.SetRemAddr ldy #S.SOCKET.REM.ADDR
.1 lda SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y
sta (ZPPtrSKT),y
iny
@ -733,7 +675,12 @@ SKT.FindMatchingLocRem
>STYA ZPTmpPtr1
plx
ldy #0
ldy #S.SOCKET.AF
lda (ZPTmpPtr1),y
cmp #AF.INET
bne .8
ldy #S.SOCKET.LOC.ADDR
.2 lda (ZPTmpPtr1),y
bne .4
@ -745,28 +692,42 @@ SKT.FindMatchingLocRem
.4 cmp SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
bne .8
iny
cpy #S.SOCKET.REM.ADDR
cpy #S.SOCKET.LOC.PORT+2
bne .3
lda SKT.REM.ADDR+S.SOCKADDR.ADDR
cmp #$ff FF.FF.FF.FF, Broadcast ?
bne .5
ldy #S.SOCKET.O
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
bne .8 bad packet for this listening
.6 lda SKT.REM.ADDR+S.SOCKADDR.ADDR
cmp #$ff FF.FF.FF.FF, Broadcast ?
bne .41
* ldy #S.SOCKET.O
lda (ZPTmpPtr1),y
and #S.SOCKET.O.BROADCAST
beq .9 this socket does not accept broadcast
ldy #S.SOCKET.REM.PORT Boradcast, check port only
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 .9 wrong remote host, exit....
bne .8 wrong remote host, exit....
iny
cpy #S.SOCKET.REM.PORT+2
bne .5
>LDYA ZPTmpPtr1 x = SKT.TABLE index
.7 >LDYA ZPTmpPtr1 x = SKT.TABLE index
clc
rts
@ -775,14 +736,9 @@ SKT.FindMatchingLocRem
bne .1
.9 sec
rts
*--------------------------------------
SKT.FindMatchingLoc
ldy #S.SOCKET.LOC.PORT+1
phy
ldx #0
.1 lda SKT.TABLE,x
@ -793,18 +749,20 @@ SKT.FindMatchingLoc
>STYA ZPTmpPtr1
plx
ply
phy
ldy #S.SOCKET.AF
lda (ZPTmpPtr1),y
cmp #AF.INET
bne .7
ldy #S.SOCKET.LOC.ADDR
.2 lda (ZPTmpPtr1),y
cmp SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
bne .7
dey
cpy #S.SOCKET.LOC.ADDR-1
iny
cpy #S.SOCKET.LOC.PORT+2
bne .2
ply
>LDYA ZPTmpPtr1 x = SKT.TABLE index
clc
rts
@ -813,16 +771,13 @@ SKT.FindMatchingLoc
cpx #K.SKTTABLE.SIZE
bne .1
ply
* sec
.9 rts
*--------------------------------------
* ZPPtrSKT -> actual socket
* A = hSocket or hFrame
*--------------------------------------
SKT.AddToQueueA sta .2+1
SKT.AddToQueueA pha
ldy #S.SOCKET.HQ.HEAD
lda (ZPPtrSKT),y
tax
@ -842,12 +797,13 @@ SKT.AddToQueueA sta .2+1
adc #S.SOCKET.HQ
tay
.2 lda #$ff
pla
sta (ZPPtrSKT),y
clc
rts
.9 sec
.9 pla dicard hFrame
* sec
rts
*--------------------------------------
* From TCP.IN
@ -1107,7 +1063,6 @@ SKT.GetDataFromSktIn
>LDYA ZPTmpPtr3
clc
rts
.9
* lda #0 NO DATA
sec
@ -1207,8 +1162,7 @@ SKT.AddDataToSktOut
lda SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
adc ZPDataInLen+1
sta SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
jsr SKT.StoreTCB
rts
jmp SKT.StoreTCB
*--------------------------------------
* From TCP.OUT
* Src : hOutMem/OUTTAIL
@ -1317,7 +1271,6 @@ SKT.AckDataToSktOut
adc SKT.TmpCache+S.SOCKET.TCP.OUTTAIL+1
and /K.TCP.WSIZE-1
sta SKT.TmpCache+S.SOCKET.TCP.OUTTAIL+1
lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE
clc
adc TmpDWord+3
@ -1336,24 +1289,52 @@ SKT.AckDataToSktOut
.8 rts
*--------------------------------------
SKT.GetTCB ldy #S.SOCKET.TCP-S.SOCKET
SKT.NewTCB ldx #S.SOCKET
.1 dey
lda (ZPPtrSKT),y
sta SKT.TmpCache,y
cpy #S.SOCKET
.1 stz SKT.TmpCache,x
inx
cpx #S.SOCKET.TCP
bne .1
>LDYAI K.TCP.WSIZE
>STYA SKT.TmpCache+S.SOCKET.TCP.INFREE
>SYSCALL getmem
bcs SKT.StoreTCB.RTS
txa
ldy #S.SOCKET.SQ.hInMem
sta (ZPPtrSKT),y
>LDYAI K.TCP.WSIZE
>STYA SKT.TmpCache+S.SOCKET.TCP.OUTFREE
>SYSCALL getmem
bcs SKT.StoreTCB.RTS
txa
ldy #S.SOCKET.SQ.hOutMem
sta (ZPPtrSKT),y
ldx #3
.2 lda A2osX.TIMER16,x
sta SKT.TmpCache+S.SOCKET.TCP.OUTNEXTSEQ,x
dex
bpl .2
*--------------------------------------
SKT.StoreTCB ldy #S.SOCKET
.1 lda SKT.TmpCache,y
sta (ZPPtrSKT),y
iny
cpy #S.SOCKET.TCP
bne .1
clc Make CC for successfull exit
SKT.StoreTCB.RTS
rts
*--------------------------------------
SKT.StoreTCB ldy #S.SOCKET.TCP-S.SOCKET
.1 dey
lda SKT.TmpCache,y
sta (ZPPtrSKT),y
cpy #S.SOCKET
SKT.GetTCB ldy #S.SOCKET
.1 lda (ZPPtrSKT),y
sta SKT.TmpCache,y
iny
cpy #S.SOCKET.TCP
bne .1
rts
*--------------------------------------
SKT.Destroy ldy #S.SOCKET.SQ.hOutMem
@ -1366,9 +1347,7 @@ SKT.Destroy ldy #S.SOCKET.SQ.hOutMem
beq .2
>SYSCALL FreeMem
.2 lda #0
sta (ZPPtrSKT)
clc
.2 clc
rts
*--------------------------------------
SKT.SetFrameOutDstIP

View File

@ -4,7 +4,6 @@ AUTO 4,1
.LIST OFF
*--------------------------------------
TCP.IN jsr FRM.GetTargetSKT.TCPUDP
>DEBUG
jsr SKT.FindMatchingLocRem
bcs TCP.IN.JMP.CLOSED no socket, go discard
@ -35,20 +34,15 @@ TCP.IN.JMP.CLOSED
rts
*--------------------------------------
TCP.IN.JMP.LISTEN
ldy #S.TCP.OPTIONS SYN Received, send SYN.ACK packet
lda (ZPFrameInPtr),y
cmp #S.TCP.OPTIONS.SYN
bne TCP.IN.JMP.CLOSED
ldy #S.SOCKET.T Create a new client socket
lda (ZPPtrSKT),y
tax Same type a listening socket
iny #S.SOCKET.PROTO
lda (ZPPtrSKT),y
jsr SKT.Socket.I get new socket in ZPTmpPtr1
bcs TCP.IN.JMP.CLOSED
txa
jsr SKT.AddToQueueA Queued successfully ?
bcs TCP.IN.JMP.CLOSED no, discard frame and new socket
@ -57,27 +51,26 @@ TCP.IN.JMP.LISTEN
lda ZPTmpPtr1
sta ZPPtrSKT
ldaZPTmpPtr1+1
lda ZPTmpPtr1+1
sta ZPPtrSKT+1
jsr TCP.IN.ACKTheSYN
jsr SKT.SetLocAddr
jsr SKT.SetRemAddr
jsr SKT.StoreTCB
jsr SKT.NewTCB
bcs .99
jsr TCP.IN.ACKTheSYN
lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA SYN received, Send SYN.ACK
bcs .9
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.SYNRCVD
sta (ZPPtrSKT),y
sta SKT.TmpCache+S.SOCKET.TCP.S
jmp SKT.StoreTCB
clc
rts
.9 lda #0 error
sta (ZPPtrSKT) clear this socket
lda #ERR.SKT.OOS
.9 lda #ERR.SKT.OOS
.99 rts
*--------------------------------------
TCP.IN.JMP.SYNSENT
@ -109,10 +102,8 @@ TCP.IN.JMP.SYNSENT
jsr TCP.OUT.SendOptA SYN.ACK recieved, Send, ACK
bcs .9
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.ESTBLSH
sta (ZPPtrSKT),y
sta SKT.TmpCache+S.SOCKET.TCP.S
jmp SKT.StoreTCB
.9 lda #S.TCP.OPTIONS.RST
@ -143,9 +134,8 @@ TCP.IN.JMP.SYNRCVD
dex
bpl .1
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.ESTBLSH
sta (ZPPtrSKT),y
sta SKT.TmpCache+S.SOCKET.TCP.S
jmp SKT.StoreTCB
.8 clc
@ -185,12 +175,13 @@ TCP.IN.JMP.ESTBLSH
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.CLWAIT
sta (ZPPtrSKT),y
jmp SKT.StoreTCB
.8 clc
.9 rts
*--------------------------------------
TCP.IN.JMP.CLWAIT
clc Wait for SKT.CloseA from Daemon
clc Wait for SKT.shutdown
rts
*--------------------------------------
TCP.IN.JMP.LASTACK

View File

@ -133,16 +133,16 @@ J.TCP.IN .DA TCP.IN.JMP.CLOSED
.DA TCP.IN.JMP.TIMEWT
J.SKT.Socket .DA SKT.Socket.RAW
.DA SKT.Socket.DGRAM
.DA SKT.Socket.STREAM
.DA SKT.Socket.SEQPACKET
.DA SKT.Socket.STREAM
J.SKT.connect .DA SKT.connect.RAW
.DA SKT.connect.DGRAM
.DA SKT.connect.STREAM
.DA SKT.connect.SEQPACKET
.DA SKT.connect.STREAM
J.SKT.send .DA SKT.send.RAW
.DA SKT.send.DGRAM
.DA SKT.send.STREAM
.DA SKT.send.SEQPACKET
.DA SKT.send.STREAM
.DA 0
*--------------------------------------
LIB.LOAD ldx RefCount
@ -211,7 +211,6 @@ POLL >PUSHW L.IOCTL
jmp IP.IN
.9 lda hFrameIn
beq LIB.UNLOAD.8
>SYSCALL FreeMem
.99 rts
@ -222,11 +221,10 @@ POLL >PUSHW L.IOCTL
PULSE and #S.EVT.F.T1SEC
beq .1
* jsr ARP.EXPIRE
* jsr DNS.EXPIRE
jsr ARP.EXPIRE
jsr DNS.EXPIRE
.1
* jsr DNS.POLL
.1 jsr DNS.POLL
jmp FRM.RETRY
*--------------------------------------
GetDynPort inc DYNPORT.LAST
@ -319,9 +317,9 @@ FD.DSOCK.SIZE .EQ *-FD.DSOCK
*--------------------------------------
FD.SSOCK .DA #S.FD.T.SSOCK
.BS 1 S.FD.HANDLER
.BS 1 S.FD.DSOCK.HSKT
.DA #0 S.FD.DSOCK.OPEN
.DA #0 S.FD.DSOCK.CLOSE
.BS 1 S.FD.SSOCK.HSKT
.DA #0 S.FD.SSOCK.OPEN
.DA #0 S.FD.SSOCK.CLOSE
.DA #LIBTCPIP.Read
.DA #LIBTCPIP.Write
.DA #0 S.FD.DSOCK.STATUS

View File

@ -55,6 +55,7 @@ CS.RUN ldy #S.PS.ARGC
>PUSHBI O.RDWR
lda #1
>SYSCALL ArgV get /dev/xxx
>SYSCALL fopen
bcs .9

View File

@ -40,14 +40,14 @@ CS.START cld
.DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP
L.SA.LOCAL .DA SA.LOCAL
L.NOD.Template .DA NOD.Template
L.NOD.Name .DA NOD.Name
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
L.NOD.Template .DA NOD.Template
L.CMD.Template .DA CMD.Template
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBTCPIP
@ -163,6 +163,8 @@ CS.RUN.CLIENT sta (pData),y
>SYSCALL GetMemPtr
>STYA ZPSktPtr
>PUSHB.G hClientSocket
ldx #3
ldy #S.SOCKET.REM.ADDR+3
@ -171,24 +173,34 @@ CS.RUN.CLIENT sta (pData),y
dex
bpl .3
>PUSHB.G hClientSocket
>PUSHBI 5
>LDYA L.MSG.INCOMING
>SYSCALL printf
bcs .9
>PUSHB.G hClientSocket
>PUSHBI 1
>PUSHWI L.NOD.Template
>LDYAI L.NOD.Name
>PUSHW L.NOD.Template
>LEA.G NodBuf
>SYSCALL sprintf
>PUSHB.G hClientSocket
>PUSHW 0
>LDYAI L.NOD.Name
>LEA.G NodBuf
>SYSCALL mknod
bcs .9
>PUSHEA.G NodBuf
>PUSHBI 2
>PUSHW L.CMD.Template
>LEA.G CmdBuf
>SYSCALL sprintf
>LEA.G CmdBuf
>SYSCALL puts
>PUSHBI S.PS.F.DUPENV
>LEA.G CmdBuf
>SYSCALL execl
.8 clc
.9 rts
@ -221,8 +233,7 @@ CS.QUIT ldx #CONN.MAX
dex
bne .1
ldy #hSrvSocket
lda (pData),y
>LDA.G hSrvSocket
beq .3
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
@ -253,22 +264,14 @@ MSG.TCPIPERR .AZ "TELNETD:TCP/IP Not initialized properly"
MSG.SKTERR .AZ "TELNETD:Listen Error."
MSG.ABORT .AZ "TELNETD:User Aborted."
MSG.INCOMING .AZ "TELNETD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n"
CMD.LINE .AS "${A2OSX}SBIN/GETTY "
.AZ " ${A2OSX}SBIN/LOGIN"
*--------------------------------------
NOD.Template .AZ "/DEV/TTY%h"
CMD.Template .AZ "${A2OSX}SBIN/GETTY %s ${A2OSX}SBIN/LOGIN"
*--------------------------------------
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
.BS 1
.BS 4 S.SOCKADDR.ADDR
.DA TCP.PORT.TELNET
*--------------------------------------
SA.REMOTE .DA #AF.INET S.SOCKADDR.AF
.BS 1
.BS 4 S.SOCKADDR.ADDR
.BS 2 S.SOCKADDR.PORT
*--------------------------------------
NOD.Template .AZ "/DEV/TTY%h"
NOD.Name .AZ " "
*--------------------------------------
.DUMMY
.OR 0
@ -278,7 +281,8 @@ SktIndex .BS 1
hSrvSocket .BS 1
hClientSocket .BS 1
TimeOut .BS 1
NodBuf .BS 11
CmdBuf .BS 65
DS.END
.ED
*--------------------------------------

View File

@ -45,17 +45,45 @@ IO.Open.I jsr STDIO.SetMLIPathYA
>LDYAI K.MLI.PATH+6 skip $/DEV/
jsr K.GetDevByName
bcs IO.OPEN.RTS
bcc .7
>STYA pFD
phx DEVID
ldx #0
.10 lda Nod.Table.hPath,x
beq .6
jsr K.GetMemPtr
>STYA ZPPtr1
ldy #0
.2 lda (ZPPtr1),y
iny
cmp K.MLI.PATH,y
bne .6
cmp #0 end of string ?
bne .2
txa return hFILE
clc
rts
.6 inx
cpx #K.NOD.MAX
bne .10
lda #MLI.E.NODEV
* sec
rts no OF found
.7 >STYA pFD
phx DEVID/hFILE
lda (pFD) #S.FD.T
tax
pla
jmp (.2,x)
jmp (.8,x)
.2 .DA STDIO.IOERR REG
.8 .DA STDIO.IOERR REG
.DA STDIO.IOERR DIR
.DA IO.OPEN.CDEV
.DA STDIO.IOERR BDEV

View File

@ -239,9 +239,8 @@ Mem.NextSlot lda ZPMemMgrSPtr
K.FreeMem.ERR >PUSHA
>PUSHBI 1
>PUSHWI K.FreeMem.ERR1
lda #DEVID.SYS
>SYSCALL fprintf
>LDYAI K.FreeMem.ERR1
>SYSCALL printf
sec
rts
@ -314,14 +313,13 @@ K.FreeMem tay
>PUSHYA
>PUSHBI 2
>PUSHWI K.FreeMem.ERR2
lda #DEVID.SYS
>SYSCALL fprintf
>LDYAI K.FreeMem.ERR2
>SYSCALL printf
sec
rts
*--------------------------------------
K.FreeMem.ERR1 .AZ "FreeMem:Bad hMem:%h."
K.FreeMem.ERR2 .AZ "FreeMem:hMem already freed At $%H."
K.FreeMem.ERR1 .AZ "FreeMem:Bad hMem:%h.\r\n"
K.FreeMem.ERR2 .AZ "FreeMem:hMem already freed At $%H.\r\n"
*/--------------------------------------
* # GetMemPtr
* A = hMem