Kernel version 0.9 : TCP & MkNodA

This commit is contained in:
Rémy GIBERT 2017-03-09 08:11:44 +01:00
parent 66d20ceba0
commit 635529e795
13 changed files with 130 additions and 99 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -69,6 +69,8 @@ CS.RUN >LDYA L.MSG0
lda #K.SKTTABLE.SIZE
sta SocketCount
>DEBUG
.1 lda (ZPPTR1)
beq .7
@ -100,13 +102,15 @@ CS.RUN >LDYA L.MSG0
>LDYA L.MSG1
>SYSCALL CPrintFYA
.7 clc
lda ZPPTR1
.7 lda ZPPTR1
clc
adc #S.SOCKET
sta ZPPTR1
lda ZPPTR1+1
adc /S.SOCKET
sta ZPPTR1+1
dec SocketCount
bne .1

View File

@ -585,6 +585,15 @@ S.NODE.DEV .EQ 5
*--------------------------------------
* S.NODE.LNK
*--------------------------------------
S.NODE.SSOCK.HSKT .EQ 2
*S.NODE.SSOCK.OPEN .EQ 3
*S.NODE.SSOCK.CLOSE .EQ 4
*S.NODE.SSOCK.READ .EQ 5
*S.NODE.SSOCK.WRITE .EQ 6
*S.NODE.SSOCK.STATUS .EQ 7
*
S.NODE.SSOCK .EQ 8
*--------------------------------------
S.NODE.FIFO.S .EQ 2
S.NODE.FIFO.S.Opened .EQ 1
S.NODE.FIFO.S.Closed .EQ 2

View File

@ -39,6 +39,7 @@ S.DHCP.OPTIONS.MASK .EQ 1
S.DHCP.OPTIONS.GW .EQ 3
S.DHCP.OPTIONS.DNS .EQ 6
S.DHCP.OPTIONS.DOMAIN .EQ 15
S.DHCP.OPTIONS.MSGTYPE .EQ 53
S.DHCP.OPTIONS.END .EQ 255
*
S.DHCP .EQ S.UDP+240

View File

@ -175,12 +175,21 @@ SKT.CloseA cmp #K.SKTTABLE.SIZE
cmp #S.SOCKET.SOCK.RAW
beq .8
cmp #S.SOCKET.SOCK.STREAM
bne SKT.GetA.9
ldy #S.SOCKET.SO
lda (ZPPtrSKT),y
bit #S.SOCKET.SO.ACCEPTCONN
beq *
bne *
ldy #S.SOCKET.TCP.OPTIONS
lda (ZPPtrSKT),y
ora #S.TCP.OPTIONS.FIN
sta (ZPPtrSKT),y
clc
rts
.8 lda #0
sta (ZPPtrSKT)
@ -393,7 +402,7 @@ SKT.Write.TCP ldy #S.SOCKET.TCP.STATUS
jsr SKT.AddDataToSktOut
bcs .90
jsr TCP.OUT try to push, ignore error....
jsr TCP.OUT.ESTBLSH try to push, ignore error....
clc
rts

View File

@ -73,6 +73,8 @@ TCP.IN jsr IP.FillSKT.TemplateSrcDst
ldy #S.SOCKET.TCP.STATUS
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.STATUS.TIMEWT
bcs *
asl
tax
jmp (L.TCP.IN.JMP,x)
@ -91,8 +93,8 @@ TCP.IN jsr IP.FillSKT.TemplateSrcDst
.9 clc Discard frame
rts
*--------------------------------------
TCP.IN.RST txa
jsr SKT.CloseA
TCP.IN.RST lda #0
sta (ZPPtrSKT)
clc
rts
*--------------------------------------
@ -152,15 +154,7 @@ TCP.IN.JMP.LISTEN
dex
bpl .4
ldy #S.SOCKET.TCP.STATUS
lda #S.SOCKET.TCP.STATUS.SYNRCVD
sta (ZPPtrSKT),y
ldy #S.SOCKET.TCP.OPTIONS
lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK
sta (ZPPtrSKT),y
jsr TCP.Out
jsr TCP.OUT.SYNACK
bcs .9
ldy #S.SOCKET.TCP.STATUS
@ -172,10 +166,6 @@ TCP.IN.JMP.LISTEN
rts
*--------------------------------------
TCP.IN.JMP.SYNSENT
clc
rts
*--------------------------------------
TCP.IN.JMP.SYNRCVD
ldy #S.TCP.OPTIONS only accept ACK packet
lda (ZPFrameInPtr),y
cmp #S.TCP.OPTIONS.ACK
@ -218,6 +208,10 @@ TCP.IN.JMP.SYNRCVD
.8 clc
rts
*--------------------------------------
TCP.IN.JMP.SYNRCVD
clc
rts
*--------------------------------------
TCP.IN.JMP.ESTBLSH
ldy #S.TCP.OPTIONS
lda (ZPFrameInPtr),y
@ -292,29 +286,33 @@ TCP.IN.JMP.TIMEWT
clc
rts
*--------------------------------------
TCP.OUT ldy #S.SOCKET.TCP.OPTIONS
lda (ZPPtrSKT),y
bit #S.TCP.OPTIONS.SYN
beq TCP.OUT.ESTBLSH
>LDYAI 0
TCP.OUT.SYNACK >LDYAI 0
jsr TCP.NewFrame
bcs .9
ldx #3
ldy #S.TCP.ACK.NUMBER+3
.1 lda TmpDWord,x
sta (ZPFrameOutPtr),y
dey
dex
bpl .1
ldy #S.TCP.OPTIONS
lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK
sta (ZPFrameOutPtr),y
sta (ZPFrameOutPtr),y
jsr TCP.SendFrame
bcs .9
ldy #S.TCP.OPTIONS
ldy #S.SOCKET.TCP.OPTIONS
lda #0
sta (ZPFrameOutPtr),y
sta (ZPPtrSKT),y
ldy #S.SOCKET.TCP.STATUS
lda #S.SOCKET.TCP.STATUS.SYNSENT
sta (ZPFrameOutPtr),y
sta (ZPPtrSKT),y
clc
.9 rts
@ -379,12 +377,7 @@ TCP.OUT.ESTBLSH ldy #S.SOCKET.SQ.OUTUSED
ldy #S.SOCKET.TCP.OPTIONS
lda (ZPPtrSKT),y
bit #S.TCP.OPTIONS.ACK
beq .7
ldy #S.TCP.OPTIONS
lda (ZPFrameOutPtr),y
ora #S.TCP.OPTIONS.ACK
sta (ZPFrameOutPtr),y
.7 jsr TCP.SendFrame
@ -392,7 +385,15 @@ TCP.OUT.ESTBLSH ldy #S.SOCKET.SQ.OUTUSED
ldy #S.SOCKET.TCP.OPTIONS
lda (ZPPtrSKT),y
and #$ff^S.TCP.OPTIONS.ACK
bit #S.TCP.OPTIONS.FIN
beq .70
ldy #S.SOCKET.TCP.STATUS
lda #S.SOCKET.TCP.STATUS.FINWT1
sta (ZPPtrSKT),y
.70 ldy #S.SOCKET.TCP.OPTIONS
lda #0
sta (ZPPtrSKT),y
ldx #3

View File

@ -74,13 +74,14 @@ CS.INIT >LDYA L.LIBTCPIP
stz IPCFG
>LDYA A2OSX.TIMER16
>STYA DHCP.DISC.XID
>STYA DHCP.REQ.XID
>LDYA A2OSX.RANDOM16
>STYA DHCP.DISC.XID+2
>STYA DHCP.REQ.XID+2
ldx #3
.11 lda A2osX.TIMER16,x
sta DHCP.DISC.XID,x
sta DHCP.REQ.XID,x
dex
bpl .11
ldx #5
.2 lda IPCFG+S.IPCFG.MAC,x
sta DHCP.DISC.CHADDR,x
@ -134,7 +135,7 @@ CS.RUN.ROFFER >SYSCALL Sleep
jsr CS.RUN.SKT.RCVD
bcc .1
jsr Wait.Timeout
bcc CS.RUN.ROFFER
bne CS.RUN.ROFFER
lda #1
jmp CS.RUN.KO
@ -170,7 +171,7 @@ CS.RUN.RACK >SYSCALL Sleep
jsr CS.RUN.SKT.RCVD
bcc .1
jsr Wait.Timeout
bcc CS.RUN.RACK
bne CS.RUN.RACK
lda #2
bra CS.RUN.KO
@ -250,49 +251,48 @@ CS.QUIT ldy #hSocket
CheckDHCPOffer jsr CheckDHCPXID
bcs .9
>LDAXI S.DHCP.OPTIONS
jsr SetFramePtr1AX
lda ZPFrameBase
clc
adc #S.DHCP.OPTIONS
sta ZPFramePtr
lda ZPFrameBase+1
adc /S.DHCP.OPTIONS
sta ZPFramePtr+1
ldy #2 DHCPOffer ?
lda (ZPFramePtr)
cmp #S.DHCP.OPTIONS.MSGTYPE
bne .9
ldy #2
lda (ZPFramePtr),y
cmp #S.DHCP.OPTIONS.DHCPOffer
bne .9
ldy #S.DHCP.YIADDR+3
ldx #3
.1 lda (ZPFrameBase),y
sta DHCP.REQ.OPT.REQIP,x
sta IPCFG+S.IPCFG.IP,x
dey
dex
bpl .1
ldx #3
ldy #S.IPCFG.IP+3
.2 lda DHCP.REQ.OPT.REQIP,x
sta IPCFG,y
dey
dex
bpl .2
ldy #S.IP.SRC+3
ldx #3
.3 lda (ZPFrameBase),y
sta DHCP.REQ.OPT.SVRIP,x
sta IPCFG+S.IPCFG.DHCPSRVR,x
dey
dex
bpl .3
ldx #3
ldy #S.IPCFG.DHCPSRVR+3
.4 lda DHCP.REQ.OPT.SVRIP,x
sta IPCFG,y
dey
dex
bpl .4
.5 inc ZPFramePtr skip Option 53 (DHCPOffer:530102)
bne .6
inc ZPFramePtr+1
.6 lda (ZPFramePtr)
sec
adc ZPFramePtr add option len + 1
@ -377,10 +377,20 @@ GetDHCPOption.CopyIP
CheckDHCPAck jsr CheckDHCPXID
bcs .9
>LDAXI S.DHCP.OPTIONS
jsr SetFramePtr1AX
lda ZPFrameBase
clc
adc #S.DHCP.OPTIONS
sta ZPFramePtr
lda ZPFrameBase+1
adc /S.DHCP.OPTIONS
sta ZPFramePtr+1
ldy #2 DHCPAck ?
lda (ZPFramePtr)
cmp #S.DHCP.OPTIONS.MSGTYPE
bne .9
ldy #2
lda (ZPFramePtr),y
cmp #S.DHCP.OPTIONS.DHCPAck
bne .9
@ -395,6 +405,7 @@ CheckDHCPAck jsr CheckDHCPXID
*--------------------------------------
CheckDHCPXID ldy #S.DHCP.XID+3
ldx #3
.1 lda (ZPFrameBase),y
cmp DHCP.DISC.XID,x same XID ?
bne .9
@ -408,25 +419,14 @@ CheckDHCPXID ldy #S.DHCP.XID+3
.9 sec
rts
*--------------------------------------
SetFramePtr1AX clc
adc ZPFrameBase
sta ZPFramePtr
txa
adc ZPFrameBase+1
sta ZPFramePtr+1
rts
*--------------------------------------
Init.Timeout ldy #TimeOut
lda #TIMEOUT.MAX
sta (pData),y
rts
*--------------------------------------
Wait.TimeOut sec
ldy #TimeOut
Wait.TimeOut ldy #TimeOut
lda (pData),y
beq .9
clc
.9 rts
rts
*--------------------------------------
CS.END
LIBTCPIP >PSTR "libtcpip.o"
@ -438,7 +438,6 @@ MSG.CFG.ND >CSTR "DHCPCLNT:No Device, exiting.\r\n"
MSG.CFG.NA >CSTR "DHCPCLNT:TCPIP Already configured, exiting.\r\n"
hLIBTCPIP .BS 1
IPCFG .BS S.IPCFG
FrameLen .BS 2
*--------------------------------------
Socket .DA #S.SOCKET.SOCK.DGRAM
.BS 3

View File

@ -171,8 +171,24 @@ K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME
* CC = OK, CS = ERROR
* A = hFILE
*\--------------------------------------
K.MkNodA sec
rts
K.MkNodA sta .1+1
>PUSHWI S.NODE.SSOCK
>PUSHBI S.MEM.F.INIT0
jsr K.GetMem
bcs .9
>STYA ZPPtr1
ldy #S.NODE.T
lda #S.NODE.T.SSOCK
sta (ZPPtr1),y
ldy #S.NODE.SSOCK.HSKT
.1 lda #$ff
sta (ZPPtr1),y
txa
.9 rts
*/--------------------------------------
* #MKFIFO
* return a S.FILE to a new FIFO

View File

@ -384,22 +384,12 @@ SP.DRV.hi lda #$ff
*--------------------------------------
BLK.DRV
*--------------------------------------
EvtMgrInit
* lda #10
* sta EVTMGR.10TH.CNT WARNING!!!! WRONG BANK!!!
EvtMgrInit lda #$A5
sta A2osX.TIMER16
lda #$9B
sta A2osX.TIMER16+1
* lda A2osX.HZ
* sta EVTMGR.HZ.CNT
lda MACHID
and #MACHID.TYPE
cmp #MACHID.TYPE.IIc
bne .8
* sta CLRIOUDIS
* sta ENBVBLIIC
.8 lda /EvtMgr.Table
lda /EvtMgr.Table
sta pEvent+1
clc
rts

View File

@ -8,7 +8,11 @@ AUTO 6
SYS.BASL0 .EQ $800
*--------------------------------------
K.KernelRun jsr TSK.TskMgrRun
stx A2osX.RANDOM16
jsr EVT.GetEvents
txa
eor KBD
sta A2osX.RANDOM16+1
bcs .4 CS=no event
jsr TSK.DispatchEvents
@ -51,9 +55,7 @@ K.KernelRun jsr TSK.TskMgrRun
.42 bit OPENAPPLE
bpl K.KernelRun
inc A2osX.RANDOM16
lda KBD
sta A2osX.RANDOM16+1
bpl K.KernelRun

View File

@ -85,7 +85,6 @@ A2osX.D002 .EQ *
.INB SYS/KERNEL.S.ARG
.INB SYS/KERNEL.S.ENV
*--------------------------------------
.INB SYS/KERNEL.S.CNV
.INB SYS/KERNEL.S.RUN
.INB SYS/KERNEL.S.EVT
.INB SYS/KERNEL.S.TSK
@ -100,6 +99,7 @@ A2osX.E000 .EQ *
.INB SYS/KERNEL.S.DAT
.INB SYS/KERNEL.S.IRQ
.INB SYS/KERNEL.S.MEM
.INB SYS/KERNEL.S.CNV
.INB SYS/KERNEL.S.CHR
*--------------------------------------
PullPtr1Ptr2Ptr3