mirror of
https://github.com/A2osX/A2osX.git
synced 2024-08-13 06:29:03 +00:00
Kernel 0.93
This commit is contained in:
parent
4fbe9aa410
commit
f75c1173d9
Binary file not shown.
@ -76,28 +76,28 @@ IP.ComputeTCPChecksum
|
|||||||
lda ZPFrameOutLen
|
lda ZPFrameOutLen
|
||||||
sec
|
sec
|
||||||
sbc #S.IP
|
sbc #S.IP
|
||||||
sta ZPDataInLen
|
sta IP.CHECKSUM.TMP
|
||||||
|
|
||||||
lda ZPFrameOutLen+1
|
lda ZPFrameOutLen+1
|
||||||
sbc /S.IP
|
sbc /S.IP
|
||||||
sta ZPDataInLen+1
|
sta IP.CHECKSUM.TMP+1
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
* lda ZPDataInLen+1
|
* lda IP.CHECKSUM.TMP+1
|
||||||
* adc /S.IP.PROTOCOL.TCP (all zero)
|
* adc /S.IP.PROTOCOL.TCP (all zero)
|
||||||
sta IP.CHECKSUM
|
sta IP.CHECKSUM
|
||||||
|
|
||||||
lda ZPDataInLen
|
lda IP.CHECKSUM.TMP
|
||||||
adc #S.IP.PROTOCOL.TCP
|
adc #S.IP.PROTOCOL.TCP
|
||||||
sta IP.CHECKSUM+1
|
sta IP.CHECKSUM+1
|
||||||
|
|
||||||
jsr IP.AddSrcDstIPToChecksum
|
jsr IP.AddSrcDstIPToChecksum
|
||||||
|
|
||||||
lda ZPDataInLen
|
lda IP.CHECKSUM.TMP
|
||||||
eor #$ff
|
eor #$ff
|
||||||
tax
|
tax
|
||||||
lda ZPDataInLen+1
|
lda IP.CHECKSUM.TMP+1
|
||||||
eor #$ff
|
eor #$ff
|
||||||
|
|
||||||
ldy #S.TCP.CHECKSUM
|
ldy #S.TCP.CHECKSUM
|
||||||
|
@ -499,12 +499,12 @@ SKT.GetDataFromSktIn
|
|||||||
|
|
||||||
.80 jsr SKT.StoreTCB
|
.80 jsr SKT.StoreTCB
|
||||||
|
|
||||||
lda #S.TCP.OPTIONS.ACK
|
* lda #S.TCP.OPTIONS.ACK
|
||||||
* jsr TCP.OUT.SendOptA trash ZPDataInLen
|
* jsr TCP.OUT.SendOptA
|
||||||
|
|
||||||
jsr TCP.SetSocketTCPO.ACK
|
jsr TCP.SetSocketTCPO.ACK
|
||||||
|
|
||||||
* jsr TCP.OUT.I SKT.GetTCB already called
|
jsr TCP.OUT.I SKT.GetTCB already called
|
||||||
|
|
||||||
>LDYA ZPDataInLen
|
>LDYA ZPDataInLen
|
||||||
clc
|
clc
|
||||||
@ -529,6 +529,7 @@ SKT.Write jsr SKT.PullhFDDataInPtrLen
|
|||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr SKT.GetTCB
|
jsr SKT.GetTCB
|
||||||
|
|
||||||
ldx SKT.Cache+S.SOCKET.TCP.OUTFREE
|
ldx SKT.Cache+S.SOCKET.TCP.OUTFREE
|
||||||
cpx ZPDataInLen
|
cpx ZPDataInLen
|
||||||
lda SKT.Cache+S.SOCKET.TCP.OUTFREE+1
|
lda SKT.Cache+S.SOCKET.TCP.OUTFREE+1
|
||||||
@ -610,7 +611,7 @@ SKT.AddDataToSktOut
|
|||||||
|
|
||||||
jsr TCP.OUT.I SKT.GetTCB called, try to push, ignore error....
|
jsr TCP.OUT.I SKT.GetTCB called, try to push, ignore error....
|
||||||
|
|
||||||
.88 >LDYA ZPDataInLen
|
>LDYA ZPDataInLen
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
@ -32,62 +32,6 @@ TCP.IN.JMP.CLOSED
|
|||||||
>SYSCALL2 FreeMem
|
>SYSCALL2 FreeMem
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.SENDCLOSE ldx #0
|
|
||||||
|
|
||||||
.1 phx
|
|
||||||
lda SKT.TABLE,x
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
>SYSCALL2 GetMemPtr
|
|
||||||
>STYA ZPPtrSKT
|
|
||||||
|
|
||||||
ldy #S.SOCKET.AF
|
|
||||||
lda (ZPPtrSKT),y
|
|
||||||
cmp #AF.INET
|
|
||||||
bne .8
|
|
||||||
|
|
||||||
iny #S.SOCKET.T
|
|
||||||
|
|
||||||
lda (ZPPtrSKT),y
|
|
||||||
cmp #S.SOCKET.T.SEQPACKET
|
|
||||||
bcc .8
|
|
||||||
|
|
||||||
ldy #S.SOCKET.TCP.S
|
|
||||||
lda (ZPPtrSKT),y
|
|
||||||
cmp #S.SOCKET.TCP.S.TIMEWT
|
|
||||||
beq .4
|
|
||||||
|
|
||||||
cmp #S.SOCKET.TCP.S.ESTBLSH
|
|
||||||
bne .8
|
|
||||||
|
|
||||||
jsr TCP.OUT
|
|
||||||
|
|
||||||
bra .8
|
|
||||||
|
|
||||||
.4 ldy #S.SOCKET.SQ.hInMem
|
|
||||||
lda (ZPPtrSKT),y
|
|
||||||
>SYSCALL2 freemem
|
|
||||||
|
|
||||||
ldy #S.SOCKET.SQ.hOutMem
|
|
||||||
lda (ZPPtrSKT),y
|
|
||||||
>SYSCALL2 freemem
|
|
||||||
|
|
||||||
plx
|
|
||||||
phx
|
|
||||||
lda SKT.TABLE,x
|
|
||||||
>SYSCALL2 freemem
|
|
||||||
|
|
||||||
plx
|
|
||||||
phx
|
|
||||||
stz SKT.TABLE,x
|
|
||||||
|
|
||||||
.8 plx
|
|
||||||
inx
|
|
||||||
cpx #K.SKTTABLE.SIZE
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
TCP.IN.JMP.LISTEN
|
TCP.IN.JMP.LISTEN
|
||||||
ldy #S.SOCKET.T Create a new client socket
|
ldy #S.SOCKET.T Create a new client socket
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
@ -327,10 +271,10 @@ TCP.IN.JMP.FINWT1
|
|||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.IN.JMP.FINWT2
|
TCP.IN.JMP.FINWT2
|
||||||
ldy #S.TCP.OPTIONS only accept FIN packet
|
ldy #S.TCP.OPTIONS only accept ACK packet
|
||||||
lda (ZPFrameInPtr),y
|
lda (ZPFrameInPtr),y
|
||||||
|
|
||||||
bit #S.TCP.OPTIONS.FIN
|
bit #S.TCP.OPTIONS.ACK
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
jsr SKT.GetTCB
|
jsr SKT.GetTCB
|
||||||
@ -383,25 +327,19 @@ TCP.IN.ACKTheFIN
|
|||||||
|
|
||||||
ldx #3
|
ldx #3
|
||||||
|
|
||||||
sec
|
.1 inc SKT.Cache+S.SOCKET.TCP.INLASTSEQNUM,x
|
||||||
|
bne .2
|
||||||
.2 lda SKT.Cache+S.SOCKET.TCP.INLASTSEQNUM,x
|
|
||||||
adc #0
|
|
||||||
sta SKT.Cache+S.SOCKET.TCP.INLASTSEQNUM,x
|
|
||||||
dex
|
dex
|
||||||
bpl .2
|
bpl .1
|
||||||
|
|
||||||
ldx #3
|
.2 ldx #3
|
||||||
|
|
||||||
sec
|
.3 inc SKT.Cache+S.SOCKET.TCP.OUTACKNUM,x
|
||||||
|
bne .8
|
||||||
.3 lda SKT.Cache+S.SOCKET.TCP.OUTACKNUM,x
|
|
||||||
adc #0
|
|
||||||
sta SKT.Cache+S.SOCKET.TCP.OUTACKNUM,x
|
|
||||||
dex
|
dex
|
||||||
bpl .3
|
bpl .3
|
||||||
|
|
||||||
rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.IN.SetDataInPtrAndLen
|
TCP.IN.SetDataInPtrAndLen
|
||||||
ldy #S.IP.TOTAL.LENGTH+1
|
ldy #S.IP.TOTAL.LENGTH+1
|
||||||
@ -451,6 +389,70 @@ TCP.IN.SetDataInPtrAndLen
|
|||||||
|
|
||||||
TCP.IN.RTS rts
|
TCP.IN.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
TCP.SENDCLOSE ldx #0
|
||||||
|
|
||||||
|
.1 phx
|
||||||
|
lda SKT.TABLE,x
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
>SYSCALL2 GetMemPtr
|
||||||
|
>STYA ZPPtrSKT
|
||||||
|
|
||||||
|
ldy #S.SOCKET.AF
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
cmp #AF.INET
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
iny #S.SOCKET.T
|
||||||
|
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
cmp #S.SOCKET.T.SEQPACKET
|
||||||
|
bcc .8
|
||||||
|
|
||||||
|
ldy #S.SOCKET.TCP.S
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
cmp #S.SOCKET.TCP.S.TIMEWT
|
||||||
|
beq .4
|
||||||
|
|
||||||
|
cmp #S.SOCKET.TCP.S.ESTBLSH
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
jsr TCP.OUT
|
||||||
|
|
||||||
|
bra .8
|
||||||
|
|
||||||
|
.4 ldy #S.SOCKET.SQ.hInMem
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
>SYSCALL2 freemem
|
||||||
|
|
||||||
|
ldy #S.SOCKET.SQ.hOutMem
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
>SYSCALL2 freemem
|
||||||
|
|
||||||
|
plx
|
||||||
|
phx
|
||||||
|
lda SKT.TABLE,x
|
||||||
|
>SYSCALL2 freemem
|
||||||
|
|
||||||
|
plx
|
||||||
|
phx
|
||||||
|
stz SKT.TABLE,x
|
||||||
|
|
||||||
|
.8 plx
|
||||||
|
inx
|
||||||
|
cpx #K.SKTTABLE.SIZE
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
TCP.SetSocketTCPO.ACK
|
||||||
|
lda #S.TCP.OPTIONS.ACK
|
||||||
|
TCP.SetSocketTCPO
|
||||||
|
ldy #S.SOCKET.TCP.O
|
||||||
|
ora (ZPPtrSKT),y
|
||||||
|
sta (ZPPtrSKT),y
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
TCP.OUT jsr SKT.GetTCB
|
TCP.OUT jsr SKT.GetTCB
|
||||||
|
|
||||||
TCP.OUT.I lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1
|
TCP.OUT.I lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1
|
||||||
@ -467,7 +469,7 @@ TCP.OUT.I lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1
|
|||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
bne TCP.OUT.SendOptA a least an option...
|
bne TCP.OUT.SendOptA a least an option...
|
||||||
clc No data, no flag....exit
|
clc No data, no flag....exit
|
||||||
rts
|
.9 rts
|
||||||
|
|
||||||
.1 cpy #K.TCP.MSS
|
.1 cpy #K.TCP.MSS
|
||||||
pha
|
pha
|
||||||
@ -478,7 +480,7 @@ TCP.OUT.I lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1
|
|||||||
>LDYAI K.TCP.MSS yes send only MSS
|
>LDYAI K.TCP.MSS yes send only MSS
|
||||||
|
|
||||||
.2 jsr TCP.NewFrame
|
.2 jsr TCP.NewFrame
|
||||||
bcs TCP.IN.RTS
|
bcs .9
|
||||||
|
|
||||||
jsr SKT.GetDataFromSktOut
|
jsr SKT.GetDataFromSktOut
|
||||||
|
|
||||||
@ -488,7 +490,7 @@ TCP.OUT.I lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1
|
|||||||
|
|
||||||
jsr TCP.OUT.Send
|
jsr TCP.OUT.Send
|
||||||
|
|
||||||
bcs TCP.IN.RTS
|
bcs .9
|
||||||
|
|
||||||
lda SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ+3
|
lda SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ+3
|
||||||
clc
|
clc
|
||||||
@ -510,7 +512,7 @@ TCP.OUT.SendOptA
|
|||||||
|
|
||||||
>LDYAI 0
|
>LDYAI 0
|
||||||
jsr TCP.NewFrame
|
jsr TCP.NewFrame
|
||||||
bcs TCP.IN.RTS
|
bcs TCP.OUT.Send.RTS
|
||||||
|
|
||||||
ldy #S.SOCKET.TCP.O
|
ldy #S.SOCKET.TCP.O
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
@ -547,21 +549,14 @@ TCP.OUT.Send ldy #S.TCP.OPTIONS
|
|||||||
sta (ZPFrameOutPtr),y
|
sta (ZPFrameOutPtr),y
|
||||||
|
|
||||||
jsr FRM.SendIP
|
jsr FRM.SendIP
|
||||||
bcs .9
|
bcs TCP.OUT.Send.RTS
|
||||||
|
|
||||||
ldy #S.SOCKET.TCP.O
|
ldy #S.SOCKET.TCP.O
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPPtrSKT),y
|
sta (ZPPtrSKT),y
|
||||||
|
|
||||||
* clc
|
* clc
|
||||||
.9 rts
|
TCP.OUT.Send.RTS
|
||||||
*--------------------------------------
|
|
||||||
TCP.SetSocketTCPO.ACK
|
|
||||||
lda #S.TCP.OPTIONS.ACK
|
|
||||||
TCP.SetSocketTCPO
|
|
||||||
ldy #S.SOCKET.TCP.O
|
|
||||||
ora (ZPPtrSKT),y
|
|
||||||
sta (ZPPtrSKT),y
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.NewFrame ldx #S.IP.PROTOCOL.TCP
|
TCP.NewFrame ldx #S.IP.PROTOCOL.TCP
|
||||||
|
@ -55,10 +55,10 @@ ZPPtrSKT .EQ ZPLIB+22
|
|||||||
|
|
||||||
ZPCachePtr .EQ ZPLIB+24
|
ZPCachePtr .EQ ZPLIB+24
|
||||||
ZPTmpPtr1 .EQ ZPLIB+26
|
ZPTmpPtr1 .EQ ZPLIB+26
|
||||||
|
ZPTmpPtr2 .EQ ZPLIB+28
|
||||||
TmpDWord .EQ ZPLIB+28
|
TmpDWord .EQ ZPLIB+28
|
||||||
IP.CHECKSUM .EQ ZPLIB+28
|
IP.CHECKSUM .EQ ZPLIB+28
|
||||||
ZPTmpPtr2 .EQ ZPLIB+28
|
IP.CHECKSUM.TMP .EQ ZPLIB+30
|
||||||
ZPTmpPtr3 .EQ ZPLIB+30
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -179,11 +179,11 @@ S.DCB.TTY.bG1ALT .EQ 15
|
|||||||
S.DCB.TTY.OUTTAIL .EQ 16
|
S.DCB.TTY.OUTTAIL .EQ 16
|
||||||
S.DCB.TTY.OUTHEAD .EQ 17
|
S.DCB.TTY.OUTHEAD .EQ 17
|
||||||
S.DCB.TTY.INBUFFER .EQ 18
|
S.DCB.TTY.INBUFFER .EQ 18
|
||||||
S.DCB.TTY.INBUFFER.MAX .EQ 33
|
S.DCB.TTY.INBUFFER.MAX .EQ 39
|
||||||
S.DCB.TTY.OUTBUFFER .EQ 34
|
S.DCB.TTY.OUTBUFFER .EQ 40
|
||||||
S.DCB.TTY.OUTBUFFER.MAX .EQ 48
|
S.DCB.TTY.OUTBUFFER.MAX .EQ 64
|
||||||
*
|
*
|
||||||
S.DCB.TTY .EQ 48
|
S.DCB.TTY .EQ 64
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.DEF
|
SAVE USR/SRC/SYS/KERNEL.S.DEF
|
||||||
|
Loading…
Reference in New Issue
Block a user