TCPIP:fixes for dual FIN/ACK transaction

DAN2ETH.DRV
This commit is contained in:
burniouf 2023-01-06 15:02:35 +01:00
parent 321b273a0f
commit 84d77aaf7f
18 changed files with 863 additions and 298 deletions

Binary file not shown.

Binary file not shown.

View File

@ -30,10 +30,10 @@ CODE.Quit >LDA.G CC.hOutFile
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
CODE.nAddLocal eor #$FF CODE.AddLocal eor #$FF
inc inc
CODE.AddLocal jsr CODE.LDAI CODE.RemLocal jsr CODE.LDAI
bcs .9 bcs .9
>LDYA L.PCC.ADDLOCAL >LDYA L.PCC.ADDLOCAL

View File

@ -20,7 +20,7 @@ CORE.Init lda #SL._
>STA.G CC.hSyms >STA.G CC.hSyms
ldy #CC.ScopeIDs ldy #CC.ScopeIDs
sty ScopeIdx sty ScopePtr
>LDYAI 256 >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem
@ -34,7 +34,7 @@ CORE.Init lda #SL._
>SYSCALL GetMem >SYSCALL GetMem
bcs .9 bcs .9
>STYA ZPCCStack >STYA StmtStk
txa txa
>STA.G CC.hStack >STA.G CC.hStack
@ -329,13 +329,13 @@ CC.SListLookup >PUSHA hSList
*-------------------------------------- *--------------------------------------
* CT Stack * CT Stack
*-------------------------------------- *--------------------------------------
CC.Push ldy CStackPtr CC.Push ldy StmtPtr
dey dey
beq .9 beq .9
sty CStackPtr sty StmtPtr
sta (ZPCCStack),y sta (StmtStk),y
clc clc
rts rts

View File

@ -95,7 +95,7 @@ DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
ldx #SYM.SC.AUTO ldx #SYM.SC.AUTO
.22 jsr SYM.New Y,A=T/Q, X=SC, C=clear/reuse .22 jsr SYM.New Y,A=T/Q, X=SC, C=clear/reuse
bcs .98 OOM or DUP bcs .99 OOM or DUP
jsr SYM.GetTQInYA Y,A = T/Q jsr SYM.GetTQInYA Y,A = T/Q
bit #SYM.Q.FUNC bit #SYM.Q.FUNC

View File

@ -1,9 +1,7 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
F.Decl stz LocalPtr F.Decl jsr SCOPE.New
jsr SCOPE.New
bcs .99 bcs .99
lda (ZPSymBufPtr) #SYM.T lda (ZPSymBufPtr) #SYM.T
@ -37,28 +35,19 @@ F.Decl stz LocalPtr
jsr SYM.AddWord jsr SYM.AddWord
bcs .99 bcs .99
cpy #SYM.T.VARIADIC
beq .5
jsr CC.GetCharNB jsr CC.GetCharNB
bcs .9 bcs .9
jsr CC.IsLetter jsr CC.IsLetter
bcs .2 bcs .2
jsr F.NewArg will update LocalPtr jsr F.NewArg will update LocalPtr,LocalFrame
bcc .3 bcs .99
rts .2 jsr CC.GetCharNB
.2 >LDYA ZPPtr2
jsr EXP.GetYASizeOfInAX
clc
adc LocalPtr
sta LocalPtr
bcs .9
txa
bne .9
.3 jsr CC.GetCharNB
bcs .9 bcs .9
cmp #')' cmp #')'
@ -74,6 +63,12 @@ F.Decl stz LocalPtr
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
.5 jsr CC.GetCharNB
bcs .9
cmp #')'
bne .9
.6 jsr SYM.Add0000 definition End .6 jsr SYM.Add0000 definition End
bcs .99 bcs .99
@ -82,7 +77,7 @@ F.Decl stz LocalPtr
cmp #';' cmp #';'
bne .7 bne .7
jsr SCOPE.Close discard local scope jsr SCOPE.Close discard local scope
bcs .99 bcs .99
@ -112,7 +107,17 @@ F.Def >LDA.G CC.bInitCode
jsr SYM.Update Store f() Declaration jsr SYM.Update Store f() Declaration
bcs .99 bcs .99
lda LocalPtr ldy #SYM.SizeOf
lda (ZPSymBufPtr),y
beq .2 void f()
.2 >LDA.G CC.LocalFrame
jsr CODE.LDAI A = f() ARGS size jsr CODE.LDAI A = f() ARGS size
bcs .99 bcs .99
@ -201,7 +206,10 @@ F.AddReturnVar ldx ZPLineBufPtr
>STYA ZPPtr2 Y,A = T/Q >STYA ZPPtr2 Y,A = T/Q
>LDYA L.CC._RETURN_ lda #'R'
>STA.G CC.Label+1
>LEA.G CC.Label
>STYA ZPLineBufPtr >STYA ZPLineBufPtr
jsr F.NewArg jsr F.NewArg
@ -229,8 +237,6 @@ F.NewArg >LDYA.G CC.SymID
jsr SYM.Store jsr SYM.Store
bcs .9 bcs .9
stz LocalFrame DONT ADD TO LOCAL
>LDA.G CC.hSymBuf >LDA.G CC.hSymBuf
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPSymBufPtr >STYA ZPSymBufPtr
@ -262,8 +268,16 @@ F.CallRetV sec
>STYA ZPPtr2 >STYA ZPPtr2
ror ZPPtr1+1 bRetV ror ZPPtr1+1 bRetV
bpl .1
jsr EXP.GetYASizeOfInAX
txa
jsr CODE.AddLocal
bcc .1
rts
jsr CORE.GetNCharNB skip '(' .1 jsr CORE.GetNCharNB skip '('
bcs .90 bcs .90
jsr SYM.LookupCheckTQ jsr SYM.LookupCheckTQ

View File

@ -391,10 +391,10 @@ KW.SWITCH jsr CC.GetCharNB
bcs .99 bcs .99
txa txa
jsr CC.Push push CPS.hMEM jsr CC.Push push STMT.hMEM
lda #0 lda #0
jsr CC.Push push CPS.MemPtr jsr CC.Push push STMT.MemPtr
bcs .99 bcs .99
jsr STMT.New jsr STMT.New
@ -429,20 +429,21 @@ KW.SWITCH.END lda #'J' define JMP Label
jsr SYM.NewLabelA jsr SYM.NewLabelA
bcs KW.SWITCH.RTS bcs KW.SWITCH.RTS
lda CStackPtr lda StmtPtr
clc clc
adc #CPS.hMEM adc #STMT.hMEM
tay tay
lda (StmtStk),y
lda (ZPCCStack),y
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPPtr1 >STYA ZPPtr1
lda CStackPtr lda StmtPtr
clc clc
adc #CPS.MemPtr adc #STMT.MemPtr
tay tay
lda (ZPCCStack),y lda (StmtStk),y
sta ZPPtr2+1 sta ZPPtr2+1
stz ZPPtr2 stz ZPPtr2
@ -498,30 +499,23 @@ KW.SWITCH.END lda #'J' define JMP Label
jsr SYM.NewLabelA jsr SYM.NewLabelA
bcs .99 bcs .99
lda CStackPtr
clc
adc #CPS.hMEM
tay
lda (ZPCCStack),y
>SYSCALL FreeMem
jmp STMT.Close SWITCH () jmp STMT.Close SWITCH ()
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
KW.CASE ldy CStackPtr KW.CASE ldy StmtPtr
beq .98 beq .98
lda (ZPCCStack),y lda (StmtStk),y
cmp #KW.SWITCH.ID SWITCH ?? cmp #KW.SWITCH.ID SWITCH ??
bne .98 bne .98
tya lda StmtPtr
clc clc
adc #CPS.hMEM adc #STMT.hMEM
tay tay
lda (ZPCCStack),y lda (StmtStk),y
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPPtr1 >STYA ZPPtr1
@ -530,11 +524,12 @@ KW.CASE ldy CStackPtr
>STYA ZPPtr2 >STYA ZPPtr2
lda CStackPtr lda StmtPtr
clc clc
adc #CPS.MemPtr adc #STMT.MemPtr
tay tay
lda (ZPCCStack),y lda (StmtStk),y
tay tay
lda ZPPtr2 lda ZPPtr2
@ -554,12 +549,12 @@ KW.CASE ldy CStackPtr
phy phy
lda CStackPtr lda StmtPtr
clc clc
adc #CPS.MemPtr adc #STMT.MemPtr
tay tay
pla pla
sta (ZPCCStack),y sta (StmtStk),y
jsr CC.GetCharNB jsr CC.GetCharNB
bcs .98 bcs .98
@ -580,10 +575,10 @@ KW.CASE ldy CStackPtr
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
KW.DEFAULT ldy CStackPtr KW.DEFAULT ldy StmtPtr
beq .9 beq .9
lda (ZPCCStack),y lda (StmtStk),y
cmp #KW.SWITCH.ID cmp #KW.SWITCH.ID
bne .9 bne .9
@ -615,7 +610,6 @@ KW.BREAK lda #'B'
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
KW.CONTINUE lda #'C' KW.CONTINUE lda #'C'
jsr SYM.LookupLabelA jsr SYM.LookupLabelA
bcs .99 bcs .99
@ -631,7 +625,10 @@ KW.RETURN ldx ZPLineBufPtr
ldx ZPLineBufPtr+1 ldx ZPLineBufPtr+1
phx phx
>LDYA L.CC._RETURN_ lda #'R'
>STA.G CC.Label+1
>LEA.G CC.Label
>STYA ZPLineBufPtr >STYA ZPLineBufPtr
jsr SYM.Lookup jsr SYM.Lookup
@ -668,9 +665,6 @@ KW.RETURN ldx ZPLineBufPtr
lda #$4C emit JMP exit lda #$4C emit JMP exit
jmp CODE.TOABSYX jmp CODE.TOABSYX
.9 lda #E.CSYN
sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
KW.SIZEOF KW.SIZEOF
@ -732,7 +726,7 @@ KW.StackDiscard jsr TYPE.SizeOf
txa txa
beq .8 void beq .8 void
jsr CODE.AddLocal jsr CODE.RemLocal
.8 clc .8 clc
.9 rts .9 rts

View File

@ -1,46 +1,58 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
SCOPE.New ldy ScopeIdx SCOPE.New ldy ScopePtr
cpy #CC.ScopeIDs+SCOPE.MAX*2 cpy #CC.ScopeIDs+SCOPE.MAX*2
bcs .9 bcs .9
iny iny
iny iny
sty ScopeIdx sty ScopePtr
>INCW.G CC.ScopeID >INCW.G CC.ScopeID
>LDA.G CC.ScopeID >LDA.G CC.ScopeID
ldy ScopeIdx ldy ScopePtr
sta (pData),y sta (pData),y
>LDA.G CC.ScopeID+1 >LDA.G CC.ScopeID+1
ldy ScopeIdx ldy ScopePtr
iny iny
sta (pData),y sta (pData),y
dec bLocalScope
stz LocalFrame
dec bLocalScope
lda #'F'
jsr SYM.LookupLabelA
bcs .99
txa
jsr CODE.AddLocal
bcs .99
.DO _DBG_SCOPE=1 .DO _DBG_SCOPE=1
>PUSHW L.MSG.DEBUG.SCIN >PUSHW L.MSG.DEBUG.SCIN
jsr SCOPE.Push jsr SCOPE.Push
lda ScopeIdx lda ScopePtr
sec sec
sbc #CC.ScopeIDs sbc #CC.ScopeIDs
lsr lsr
>PUSHA >PUSHA
>PUSHB LocalPtr >PUSHB.G CC.LocalPtr
>PUSHB LocalFrame >PUSHB.G CC.LocalFrame
>PUSHBI 5 >PUSHBI 5
>SYSCALL PrintF >SYSCALL PrintF
* >DEBUG >DEBUG
.FIN .FIN
clc clc
@ -48,44 +60,65 @@ SCOPE.New ldy ScopeIdx
.9 lda #E.OOH .9 lda #E.OOH
sec sec
.99 rts .99
SCOPE.New.RTS rts
*-------------------------------------- *--------------------------------------
SCOPE.Close .DO _DBG_SCOPE=1 SCOPE.Close lda #'F' define FRAME SIZE
jsr SYM.NewLabelA
bcs SCOPE.New.RTS
>LDA.G CC.LocalFrame
jsr CODE.RemLocal
bcs SCOPE.New.RTS
.DO _DBG_SCOPE=1
>PUSHW L.MSG.DEBUG.SCOUT >PUSHW L.MSG.DEBUG.SCOUT
jsr SCOPE.Push jsr SCOPE.Push
.FIN lda ScopePtr
ldy ScopeIdx
cpy #CC.ScopeIDs
beq *
dey
dey
sty ScopeIdx
inc bLocalScope
.DO _DBG_SCOPE=1
lda ScopeIdx
sec sec
sbc #CC.ScopeIDs sbc #CC.ScopeIDs
lsr lsr
>PUSHA >PUSHA
>PUSHB LocalPtr >PUSHB.G CC.LocalPtr
>PUSHB LocalFrame >PUSHB.G CC.LocalFrame
jsr SCOPE.Push >PUSHBI 5
>PUSHBI 7
>SYSCALL PrintF >SYSCALL PrintF
.FIN
ldy ScopePtr
cpy #CC.ScopeIDs
beq *
dey
dey
sty ScopePtr
inc bLocalScope
.DO _DBG_SCOPE=1
>PUSHW L.MSG.DEBUG.SC
jsr SCOPE.Push
lda ScopePtr
sec
sbc #CC.ScopeIDs
lsr
>PUSHA
>PUSHB.G CC.LocalPtr
>PUSHB.G CC.LocalFrame
>PUSHBI 5
>SYSCALL PrintF
>DEBUG
.FIN .FIN
clc clc
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
SCOPE.Push ldy ScopeIdx SCOPE.Push ldy ScopePtr
SCOPE.PushY iny SCOPE.PushY iny
lda (pData),y lda (pData),y

View File

@ -122,16 +122,16 @@ STMT.SetVar stz ExpState
*-------------------------------------- *--------------------------------------
*-------------------------------------- *--------------------------------------
STMT.Stmt.END ldy CStackPtr STMT.Stmt.END ldy StmtPtr
beq STMT.POP.8 Global context beq STMT.POP.8 Global context
lda (ZPCCStack),y lda (StmtStk),y
bmi STMT.POP.8 local F context bmi STMT.POP.8 local F context
* in an instruction ... * in an instruction ...
iny CPS.TERM iny STMT.TERM
lda (ZPCCStack),y lda (StmtStk),y
cmp #'}' cmp #'}'
beq STMT.POP.8 in a CPS... beq STMT.POP.8 in a STMT...
cmp #';' must be ';' on stack.... cmp #';' must be ';' on stack....
beq STMT.End beq STMT.End
@ -143,45 +143,37 @@ STMT.POP.9 lda #E.STACKERROR
STMT.POP.8 clc STMT.POP.8 clc
STMT.POP.99 rts STMT.POP.99 rts
*-------------------------------------- *--------------------------------------
STMT.CPStmt.END ldy CStackPtr STMT.CPStmt.END ldy StmtPtr
beq STMT.POP.9 beq STMT.POP.9
lda (ZPCCStack),y lda (StmtStk),y
bpl .1 bpl .1
jmp F.Def.END local F context jmp F.Def.END local F context
.1 iny .1 iny
lda (ZPCCStack),y CPS.TERM lda (StmtStk),y STMT.TERM
cmp #'}' must be '}' on stack.... cmp #'}' must be '}' on stack....
bne STMT.POP.9 bne STMT.POP.9
*-------------------------------------- *--------------------------------------
STMT.End ldy CStackPtr CPS.KW STMT.End ldy StmtPtr STMT.KW
lda (ZPCCStack),y lda (StmtStk),y
tax tax
jmp (J.CC.KW.END,x) jmp (J.CC.KW.END,x)
*-------------------------------------- *--------------------------------------
STMT.New00 lda #0 STMT.New00 lda #0
jsr CC.Push CPS.hMEM jsr CC.Push STMT.hMEM
bcs STMT.New.RTS bcs STMT.New.RTS
jsr CC.Push CPS.MemPtr jsr CC.Push STMT.MemPtr
bcs STMT.New.RTS bcs STMT.New.RTS
STMT.New lda LocalFrame STMT.New lda #';' STMT.TERM
jsr CC.Push jsr CC.Push
bcs .99 bcs .99
lda LocalPtr >LDA.G CC.CmdSave STMT.KW
jsr CC.Push
bcs .99
lda #';' CPS.TERM
jsr CC.Push
bcs .99
>LDA.G CC.CmdSave
jmp CC.Push jmp CC.Push
.99 .99
@ -195,27 +187,18 @@ STMT.SetType jsr CORE.GetNCharNBNL
cmp #'{' cmp #'{'
bne STMT.SetType.1 bne STMT.SetType.1
STMT.SetTypeCP jsr CORE.GetNCharNB skip '{' STMT.SetTypeCP jsr CORE.GetNCharNBNL skip '{'
bcs STMT.SetType.9 bcs STMT.SetType.9
jsr SCOPE.New jsr SCOPE.New
bcs STMT.New.RTS bcs STMT.New.RTS
lda #'F'
jsr SYM.LookupLabelA
bcs STMT.New.RTS
txa
jsr CODE.nAddLocal
bcs STMT.New.RTS
ldx #'}' ldx #'}'
STMT.SetType.1 txa STMT.SetType.1 txa
ldy CStackPtr ldy StmtPtr
iny CPS.TERM iny STMT.TERM
sta (ZPCCStack),y sta (StmtStk),y
clc clc
rts rts
@ -224,40 +207,31 @@ STMT.SetType.9 lda #E.CSYN
sec sec
rts rts
*-------------------------------------- *--------------------------------------
STMT.Close ldy CStackPtr CPS.KW STMT.Close lda StmtPtr
iny CPS.TERM
lda (ZPCCStack),y
cmp #'}'
bne .1
lda #'F' define FRAME SIZE
jsr SYM.NewLabelA
bcs .99
lda LocalFrame
jsr CODE.AddLocal
bcs .99
lda CStackPtr
clc clc
adc #CPS.LocalPtr adc #STMT.hMEM
tay tay
lda (ZPCCStack),y lda (StmtStk),y
sta LocalPtr beq .1
iny CPS.LocalFrame >SYSCALL FreeMem
lda (ZPCCStack),y
sta LocalFrame .1 ldy StmtPtr STMT.KW
iny STMT.TERM
lda (StmtStk),y
cmp #'}'
bne .2
jsr SCOPE.Close jsr SCOPE.Close
bcs .99 bcs .99
.1 lda CStackPtr .2 lda StmtPtr
clc
adc #STMT
sta StmtPtr
clc clc
adc #CPS
sta CStackPtr
.8 clc
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -81,7 +81,8 @@ SYM.New.2 jsr CC.GetCharNB
jsr SYM.Store Store this f() with no prototype... jsr SYM.Store Store this f() with no prototype...
bcs .99 bcs .99
jmp F.Decl jsr F.Decl
rts
.98 lda #E.CSYN .98 lda #E.CSYN
sec sec
@ -195,16 +196,18 @@ SYM.SetAddrG ldy #SYM.Addr
rts rts
*-------------------------------------- *--------------------------------------
SYM.SetAddrL ldy #SYM.SizeOf+1 SYM.SetAddrL ldy #SYM.SizeOf+1
lda (ZPSymBufPtr),y lda (ZPSymBufPtr),y
bne .9 bne .9
lda LocalPtr dey #SYM.SizeOf
lda (ZPSymBufPtr),y
clc clc
dey SYM.SizeOf >ADC.G CC.LocalPtr
adc (ZPSymBufPtr),y
bcs .9 bcs .9
sta LocalPtr sta (pData),y
ldy #SYM.Addr ldy #SYM.Addr
sta (ZPSymBufPtr),y sta (ZPSymBufPtr),y
@ -213,8 +216,8 @@ SYM.SetAddrL ldy #SYM.SizeOf+1
lda (ZPSymBufPtr),y lda (ZPSymBufPtr),y
clc clc
adc LocalFrame >ADC.G CC.LocalFrame
sta LocalFrame sta (pData),y
clc clc
rts rts
@ -241,7 +244,7 @@ SYM.BufInitYAXC pha
.1 iny .1 iny
sta (ZPSymBufPtr),y sta (ZPSymBufPtr),y
cpy #SYM cpy #SYM-1
bcc .1 bcc .1
ldy #SYM.DefSize ldy #SYM.DefSize
@ -536,7 +539,7 @@ SYM.Lookup >LDA.G CC.LookupIdx
>PUSHB.G CC.hSyms ...for SListGetData >PUSHB.G CC.hSyms ...for SListGetData
lda ScopeIdx lda ScopePtr
.1 pha .1 pha
>PUSHB.G CC.hSyms >PUSHB.G CC.hSyms
@ -570,7 +573,7 @@ SYM.Lookup >LDA.G CC.LookupIdx
tya tya
>PUSHA KeyID.LO >PUSHA KeyID.LO
pla discard ScopeIdx pla discard ScopePtr
jsr CC.SkipX jsr CC.SkipX
@ -607,7 +610,7 @@ SYM.NewLabelA bit bPass2
bpl .10 bpl .10
clc clc
rts .98 rts
.10 >STA.G CC.Label+1 .10 >STA.G CC.Label+1
@ -615,48 +618,60 @@ SYM.NewLabelA bit bPass2
>PUSHEA.G CC.Label >PUSHEA.G CC.Label
jsr SCOPE.Push jsr SCOPE.Push
>SYSCALL SListNewKey >SYSCALL SListNewKey
bcs .99 bcs .98
>STYA.G CC.SymID Y,A = KeyID >STYA.G CC.LabelID
ldy #SYM.T.VOID lda #SYM.T.VOID
>STA.G CC.LabelBuf
lda #SYM.Q.POINTER lda #SYM.Q.POINTER
ldx #SYM.SC.STATIC iny
sec sta (pData),y
jsr SYM.BufInitYAXC
ldy #CC.LabelBuf+SYM.DefSize
lda #SYM.Def
sta (pData),y
>LDA.G CC.Label+1 >LDA.G CC.Label+1
cmp #'F' cmp #'F'
bne .1 bne .1
lda LocalFrame ldy #CC.LabelBuf+SYM.SC
ldy #SYM.Addr
sta (ZPSymBufPtr),y
lda #SYM.SC.AUTO lda #SYM.SC.AUTO
ldy #SYM.SC sta (pData),y
sta (ZPSymBufPtr),y
>LDA.G CC.LocalFrame
ldy #CC.LabelBuf+SYM.Addr
sta (pData),y
bra .2 bra .2
.1 jsr SYM.SetAddrCCode .1 ldy #CC.LabelBuf+SYM.SC
lda #SYM.SC.STATIC
sta (pData),y
ldy #CC.LabelBuf+SYM.Addr
lda ZPCCCode
sta (pData),y
iny
lda ZPCCCode+1
sta (pData),y
.2 .DO _DBG_SYM=1 .2 .DO _DBG_SYM=1
jsr SYM.DEBUGN jsr SYM.DEBUGNL
.FIN .FIN
>PUSHB.G CC.hSyms >PUSHB.G CC.hSyms
>PUSHW.G CC.SymID >PUSHW.G CC.LabelID
>PUSHW ZPSymBufPtr >PUSHEA.G CC.LabelBuf
>PUSHBI 0 >PUSHBI 0
ldy #SYM.DefSize lda #SYM.Def
lda (ZPSymBufPtr),y
>PUSHA >PUSHA
>SYSCALL SListAddData >SYSCALL SListAddData
.DO _DBG_SYM=1 .DO _DBG_SYM=1
bcs .99 bcs .99
jsr SYM.DEBUGS jsr SYM.DEBUGSL
.FIN .FIN
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
@ -673,7 +688,7 @@ SYM.LookupLabelA
>PUSHB.G CC.hSyms ...for SListGetData >PUSHB.G CC.hSyms ...for SListGetData
ldy ScopeIdx ldy ScopePtr
.2 phy .2 phy
>PUSHB.G CC.hSyms >PUSHB.G CC.hSyms
@ -923,15 +938,12 @@ SYM.SetSizeOf ldy #SYM.SizeOf
rts rts
*-------------------------------------- *--------------------------------------
SYM.SetAddrCCode SYM.SetAddrCCode
>LDYA ZPCCCode lda ZPCCCode
SYM.SetAddrYA phy ldy #SYM.Addr
ldy #SYM.Addr+1
sta (ZPSymBufPtr),y sta (ZPSymBufPtr),y
pla lda ZPCCCode+1
iny
dey
sta (ZPSymBufPtr),y sta (ZPSymBufPtr),y
rts rts
@ -950,7 +962,7 @@ SYM.DEBUGN >PUSHW L.MSG.DEBUG.SYMN
>PUSHA >PUSHA
>PUSHBI 7 >PUSHBI 7
>SYSCALL Printf >SYSCALL Printf
* >DEBUG * >DEBUG
rts rts
SYM.DEBUGU >PUSHW L.MSG.DEBUG.SYMU SYM.DEBUGU >PUSHW L.MSG.DEBUG.SYMU
@ -994,6 +1006,39 @@ SYM.DEBUGG >PUSHW L.MSG.DEBUG.SYMG
>PUSHBI 5 >PUSHBI 5
>SYSCALL Printf >SYSCALL Printf
rts rts
SYM.DEBUGNL >PUSHW L.MSG.DEBUG.SYMNL
>PUSHEA.G CC.Label
>PUSHW.G CC.LabelID
jsr SCOPE.Push
ldy #CC.LabelBuf
lda (pData),y
>PUSHA
iny
lda (pData),y
>PUSHA
iny
lda (pData),y
>PUSHA
>PUSHBI 9
>SYSCALL Printf
* >DEBUG
rts
SYM.DEBUGSL >PUSHW L.MSG.DEBUG.SYMSL
>PUSHW.G CC.LabelID
ldy #CC.LabelBuf
lda (pData),y
>PUSHA
iny
lda (pData),y
>PUSHA
iny
lda (pData),y
>PUSHA
>PUSHBI 5
>SYSCALL Printf
rts
.FIN .FIN
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -11,7 +11,7 @@ NEW
.INB inc/mli.e.i .INB inc/mli.e.i
*-------------------------------------- *--------------------------------------
_DBG_SYM .EQ 0 _DBG_SYM .EQ 0
_DBG_SCOPE .EQ 0 _DBG_SCOPE .EQ 1
_DBG_OUT .EQ 0 _DBG_OUT .EQ 0
*-------------------------------------- *--------------------------------------
FILES.MAX .EQ 4 FILES.MAX .EQ 4
@ -70,14 +70,12 @@ SU.F.BitO .EQ 4
SU.F.BitW .EQ 5 SU.F.BitW .EQ 5
SU.F.Name .EQ 6 SU.F.Name .EQ 6
*-------------------------------------- *--------------------------------------
CPS.hMEM .EQ 5 switch/case STMT.hMEM .EQ 3 switch/case
CPS.MemPtr .EQ 4 STMT.MemPtr .EQ 2
CPS.LocalFrame .EQ 3 STMT.TERM .EQ 1
CPS.LocalPtr .EQ 2 STMT.KW .EQ 0
CPS.TERM .EQ 1
CPS.KW .EQ 0
* *
CPS .EQ 6 STMT .EQ 4
*-------------------------------------- *--------------------------------------
*-------------------------------------- *--------------------------------------
@ -95,14 +93,14 @@ bPass2 .BS 1
ZPCCCode .BS 2 ZPCCCode .BS 2
ZPCCConst .BS 2 ZPCCConst .BS 2
ZPCCData .BS 2 ZPCCData .BS 2
ZPCCStack .BS 2
StmtStk .BS 2
ZPLineBufPtr .BS 2 ZPLineBufPtr .BS 2
ZPLookupPtr .BS 2 ZPLookupPtr .BS 2
CStackPtr .BS 1
LocalPtr .BS 1 ScopePtr .BS 1
LocalFrame .BS 1 StmtPtr .BS 1
ScopeIdx .BS 1
ZPSymBufPtr .BS 2 ZPSymBufPtr .BS 2
ZPLookupSymPtr .BS 2 ZPLookupSymPtr .BS 2
@ -149,6 +147,8 @@ L.MSG.DEBUG.SYMN .DA MSG.DEBUG.SYMN
L.MSG.DEBUG.SYMU .DA MSG.DEBUG.SYMU L.MSG.DEBUG.SYMU .DA MSG.DEBUG.SYMU
L.MSG.DEBUG.SYMS .DA MSG.DEBUG.SYMS L.MSG.DEBUG.SYMS .DA MSG.DEBUG.SYMS
L.MSG.DEBUG.SYMG .DA MSG.DEBUG.SYMG L.MSG.DEBUG.SYMG .DA MSG.DEBUG.SYMG
L.MSG.DEBUG.SYMNL .DA MSG.DEBUG.SYMNL
L.MSG.DEBUG.SYMSL .DA MSG.DEBUG.SYMSL
.FIN .FIN
.DO _DBG_SCOPE=1 .DO _DBG_SCOPE=1
L.MSG.DEBUG.SCIN .DA MSG.DEBUG.SCIN L.MSG.DEBUG.SCIN .DA MSG.DEBUG.SCIN
@ -251,7 +251,6 @@ J.CC.STYPES .DA TYPE.SCHAR
.DA TYPE.SLONG .DA TYPE.SLONG
*-------------------------------------- *--------------------------------------
L.CC.MAIN .DA CC.MAIN L.CC.MAIN .DA CC.MAIN
L.CC._RETURN_ .DA CC._RETURN_
L.CC.SYSCALL .DA CC.SYSCALL L.CC.SYSCALL .DA CC.SYSCALL
L.CC.FPUCALL .DA CC.FPUCALL L.CC.FPUCALL .DA CC.FPUCALL
*-------------------------------------- *--------------------------------------
@ -389,10 +388,10 @@ CS.RUN.CLOOP jsr CORE.CompileFile
*-------------------------------------- *--------------------------------------
.1 jsr PrintSummary .1 jsr PrintSummary
bcs .99 bcs .99
>DEBUG * >DEBUG
jsr CC.Link jsr CC.Link
bcs .99 bcs .99
>DEBUG * >DEBUG
jsr CC.Link.CheckMain jsr CC.Link.CheckMain
bcs .99 bcs .99
@ -538,14 +537,14 @@ PrintVerboseMsg
>PUSHW L.MSG.DEBUG.SC >PUSHW L.MSG.DEBUG.SC
jsr SCOPE.Push jsr SCOPE.Push
lda ScopeIdx lda ScopePtr
sec sec
sbc #CC.ScopeIDs sbc #CC.ScopeIDs
lsr lsr
>PUSHA >PUSHA
>PUSHB LocalPtr >PUSHB.G CC.LocalPtr
>PUSHB LocalFrame >PUSHB.G CC.LocalFrame
>PUSHBI 5 >PUSHBI 5
>SYSCALL PrintF >SYSCALL PrintF
* >DEBUG * >DEBUG
@ -660,11 +659,13 @@ MSG.DEBUG.SYMN .CZ "New SymID=%H[%H],T=%h,Q=%h,SC=%h "
MSG.DEBUG.SYMU .CZ "Upd SymID=%H,T=%h,Q=%h,SC=%h\r\n" MSG.DEBUG.SYMU .CZ "Upd SymID=%H,T=%h,Q=%h,SC=%h\r\n"
MSG.DEBUG.SYMS .CZ "Sto SymID=%H,T=%h,Q=%h,SC=%h\r\n" MSG.DEBUG.SYMS .CZ "Sto SymID=%H,T=%h,Q=%h,SC=%h\r\n"
MSG.DEBUG.SYMG .CZ "Get SymID=%H,T=%h,Q=%h,SC=%h\r\n" MSG.DEBUG.SYMG .CZ "Get SymID=%H,T=%h,Q=%h,SC=%h\r\n"
MSG.DEBUG.SYMNL .CZ "New (%s) ID=%H[%H],T=%h,Q=%h,SC=%h "
MSG.DEBUG.SYMSL .CZ "Sto ID=%H,T=%h,Q=%h,SC=%h\r\n"
.FIN .FIN
.DO _DBG_SCOPE=1 .DO _DBG_SCOPE=1
MSG.DEBUG.SCIN .CZ "Scope { %H (%d:%h:%h)\r\n" MSG.DEBUG.SCIN .CZ "Scope { %H (%d:%h:%h)\r\n"
MSG.DEBUG.SC .CZ "Scope = %H (%d:%h:%h)\r\n" MSG.DEBUG.SC .CZ "Scope = %H (%d:%h:%h)\r\n"
MSG.DEBUG.SCOUT .CZ "Scope } %H (%d:%h:%h) -> %H\r\n" MSG.DEBUG.SCOUT .CZ "Scope } %H (%d:%h:%h) -> "
.FIN .FIN
.DO _DBG_OUT=1 .DO _DBG_OUT=1
MSG.DEBUG.CSOUT .CZ "\r\n%H-" MSG.DEBUG.CSOUT .CZ "\r\n%H-"
@ -815,7 +816,6 @@ CC.TYPESIGN .HS 0000FF00FF00FFFF
CC.MAIN .AZ "main" CC.MAIN .AZ "main"
CC.MAIN.DEF .DA #SYM.T.SINT,#0,#SYM.T.SINT,#0,#SYM.T.UCHAR,#SYM.Q.PPOINTER,0 CC.MAIN.DEF .DA #SYM.T.SINT,#0,#SYM.T.SINT,#0,#SYM.T.UCHAR,#SYM.Q.PPOINTER,0
CC.MAIN.DEF.LEN .EQ *-CC.MAIN.DEF CC.MAIN.DEF.LEN .EQ *-CC.MAIN.DEF
CC._RETURN_ .AZ "_RETURN_;"
*-------------------------------------- *--------------------------------------
CC.SYSCALL .PS "chtyp" CC.SYSCALL .PS "chtyp"
.DA #SYS.ChTyp .DA #SYS.ChTyp
@ -1136,16 +1136,21 @@ CC.hStack .BS 1
CC.hSyms .BS 1 CC.hSyms .BS 1
CC.ScopeID .BS 2 CC.ScopeID .BS 2
CC.LocalPtr .BS 1
CC.LocalFrame .BS 1
CC.ScopeIDs .BS 2+SCOPE.MAX*2 2 bytes Global+ MAX locals CC.ScopeIDs .BS 2+SCOPE.MAX*2 2 bytes Global+ MAX locals
CC.ScopePtrs .BS 2+SCOPE.MAX*2
CC.bInitCode .BS 1 CC.bInitCode .BS 1
CC.Label .BS 3 _X\0
*-------------------------------------- *--------------------------------------
CC.hSymBuf .BS 1 CC.hSymBuf .BS 1
CC.SymID .BS 2 CC.SymID .BS 2
CC.SymIDSave .BS 2 CC.SymIDSave .BS 2
CC.ArgBuf .BS SYM CC.ArgBuf .BS SYM
CC.Label .BS 3 _X\0
CC.LabelID .BS 2
CC.LabelBuf .BS SYM
*-------------------------------------- *--------------------------------------
CC.LookupSymSize .BS 2 CC.LookupSymSize .BS 2
CC.LookupSymPtr .BS 2 CC.LookupSymPtr .BS 2

View File

@ -80,6 +80,7 @@ CS.RUN >LDYA L.MSG0
>STYA ZPPTR1 >STYA ZPPTR1
ldy SocketIndex ldy SocketIndex
.1 lda (ZPPTR1),y .1 lda (ZPPTR1),y
beq .7 beq .7
@ -137,6 +138,7 @@ CS.RUN.TP ldy #S.SOCKET.T
.3 cmp PROTO,x .3 cmp PROTO,x
beq .4 beq .4
inx inx
cpx #PROTO.Cnt cpx #PROTO.Cnt
bne .3 bne .3
@ -167,6 +169,7 @@ CS.RUN.S ldy #S.SOCKET.TCP.S
cmp #S.SOCKET.TCP.S.TIMEWT+1 cmp #S.SOCKET.TCP.S.TIMEWT+1
bcc .1 bcc .1
lda #S.SOCKET.TCP.S.TIMEWT+1 lda #S.SOCKET.TCP.S.TIMEWT+1
.1 asl .1 asl
@ -180,6 +183,7 @@ CS.DOEVENT sec
*-------------------------------------- *--------------------------------------
CS.QUIT lda hLIBTCPIP CS.QUIT lda hLIBTCPIP
beq .8 beq .8
>SYSCALL UnloadLib >SYSCALL UnloadLib
.8 clc .8 clc
rts rts

503
DRV/DAN2ETH.DRV.S.txt Normal file
View File

@ -0,0 +1,503 @@
NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF drv/dan2eth.drv
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/mli.e.i
.INB inc/nic.i
.INB inc/eth.i
*--------------------------------------
IO.8255.Cmd.PFX .EQ $AC
IO.8255.Cmd.INIT .EQ $10
IO.8255.Cmd.POLL .EQ $11
IO.8255.Cmd.SEND .EQ $12
IO.8255.Data .EQ $C080-$88
* IO.6255.PortB .EQ $C081-$88 Unused
IO.8255.S .EQ $C082-$88
IO.8255.S.ByteSent .EQ %10000000
IO.8255.S.ByteRcvd .EQ %00100000
IO.8255.Mode .EQ $C083-$88
*--------------------------------------
.MA READBYTE
lda #IO.8255.S.ByteRcvd
:1 bit IO.8255.S,x
bne :1
lda IO.8255.Data,x
.EM
.MA WRITEBYTE
sta IO.8255.Data,x
* lda #IO.8255.S.ByteSent
:1 bit IO.8255.S,x
bpl :1
.EM
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2
ZPArgPtr .BS 2
DEVSLOT0x .BS 1
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp Dev.Detect cld,jmp abs=DRV
.DA #$61 6502,Level 1 (65c02)
.DA #1 DRV Layout Version 1
.DA 0
.DA CS.END-CS.START Code Length
.DA 0
.DA 0
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
L.MSG.DETECT .DA MSG.DETECT
L.MSG.DETECT.OK .DA MSG.DETECT.OK
L.MSG.DETECT.KO .DA MSG.DETECT.KO
L.DRV.CS.START .DA DRV.CS.START
L.FD.DEV .DA FD.DEV
L.FD.DEV.NAME .DA FD.DEV.NAME
L.SSCANF.MAC .DA SSCANF.MAC
L.MAC0 .DA DCB+S.DCB.NIC.MAC
.DA DCB+S.DCB.NIC.MAC+1
.DA DCB+S.DCB.NIC.MAC+2
.DA DCB+S.DCB.NIC.MAC+3
.DA DCB+S.DCB.NIC.MAC+4
.DA DCB+S.DCB.NIC.MAC+5
.DA 0 End Of Reloc Table
*--------------------------------------
Dev.Detect >STYA ZPArgPtr
>LDYA L.MSG.DETECT
>SYSCALL PutS
stz ZPPtr1
lda #$C7
.1 sta ZPPtr1+1
ldy #ROM.SIG.L-1
.10 lda (ZPPtr1),y
cmp ROM.SIG,y
bne .2
dey
bpl .10
lda ZPPtr1+1
and #$0F
tay
asl
asl
asl
asl
ora #$88
tax
lda #$fa
sta IO.8255.Mode,x
cmp IO.8255.Mode,x
beq .3
.2 dec FD.DEV.NAME+3
lda ZPPtr1+1
dec
cmp #$C0
bne .1
>LDYA L.MSG.DETECT.KO
>SYSCALL PutS
lda #MLI.E.NODEV
sec
.99 rts
.3 stx DEVSLOTx0
sty DEVSLOT0x
* sta DIB+S.DIB.VERSION+1
* sta DIB+S.DIB.VERSION
jsr Dev.ParseArgs
bcs .99
.8 >PUSHW L.MSG.DETECT.OK
>PUSHW L.FD.DEV.NAME
>PUSHBI 2
>SYSCALL PrintF
>PUSHWI DRV.END
>PUSHWI DRV.CS.END-DRV.CS.START
>PUSHWI DRV.CS.START
>LDYA L.DRV.CS.START
>SYSCALL InsDrv
bcs .9
>STYA FD.DEV+S.FD.DEV.DRVPTR
>PUSHW L.FD.DEV
>PUSHW L.FD.DEV.NAME
>SYSCALL MKDev
bcs .9
ldx DEVSLOT0x
lda #A2osX.S.NIC
sta A2osX.S,x
* clc
.9 rts
*--------------------------------------
Dev.ParseArgs lda (ZPArgPtr)
bne .1
lda A2osX.RANDOM16
eor A2osX.TIMER16
sta DCB+S.DCB.NIC.MAC+3
eor A2osX.RANDOM16+1
sta DCB+S.DCB.NIC.MAC+4
eor A2osX.TIMER16+1
sta DCB+S.DCB.NIC.MAC+5
clc
rts
.1 >PUSHW ZPArgPtr
>PUSHW L.SSCANF.MAC
ldx #0
.2 >PUSHW L.MAC0,x
inx
inx
cpx #12
bne .2
>PUSHBI 12 6 x byte PTRs
>SYSCALL SScanF
bcc .8
lda #E.SYN
* sec
.8 rts
*--------------------------------------
CS.END
MSG.DETECT .CZ "dan2eth/W5500 Driver."
MSG.DETECT.OK .CZ "dan2eth/W5500 Installed As Device : %s\r\n"
MSG.DETECT.KO .CZ "Hardware Not Found."
SSCANF.MAC .CZ "%h:%h:%h:%h:%h:%h"
ROM.SIG .HS E0.20.A0.00.E0.03.A2.3C.D0.05.A9.01.9D.FB.BF.A0
ROM.SIG.L .EQ *-ROM.SIG
*--------------------------------------
FD.DEV .DA #S.FD.T.CDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #0 DEVID
.DA 0 BUSPTR
.BS 2 DRVPTR
.DA 0 DCBPTR
.DA 0 BUFPTR
FD.DEV.NAME .AZ "eth7"
*--------------------------------------
* Driver Code
*--------------------------------------
ZPIOCTL .EQ ZPDRV
ZPBufPtr .EQ ZPDRV+2
Counter .EQ ZPDRV+4
*--------------------------------------
DRV.CS.START cld
jmp (.1,x)
.1 .DA STATUS
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA OPEN
.DA CLOSE
.DA READ
.DA WRITE
.DA 0 end or relocation
*--------------------------------------
STATUS >STYA ZPIOCTL
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldx #S.DIB-1
.HS 2C bit abs
.1 ldx #3
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta .3+1
iny
lda (ZPIOCTL),y
sta .3+2
.2 lda DIB,x
.3 sta $ffff,x SELF MODIFIED
dex
bpl .2
clc
rts
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne STATUS.9
stz DCB+S.DCB.NIC.LINK
lda #S.DCB.NIC.LINK.OK
tsb DCB+S.DCB.NIC.LINK
lda #S.DCB.NIC.LINK.FD
tsb DCB+S.DCB.NIC.LINK
.1 ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta .3+1
iny
lda (ZPIOCTL),y
sta .3+2
ldx #S.DCB.NIC-1
.2 lda DCB,x
.3 sta $ffff,x SELF MODIFIED
dex
bpl .2
clc
rts
STATUS.9 lda #MLI.E.BADCTL
sec
rts
*--------------------------------------
OPEN lda #S.DIB.S.OPENED
bit DIB+S.DIB.S
bne .9
jsr CLOSE
* ldx DEVSLOTx0 Done by CLOSE
lda #$FA
sta IO.8255.Mode,x
lda #IO.8255.Cmd.PFX
>WRITEBYTE
lda #IO.8255.Cmd.INIT
>WRITEBYTE
ldy #0
.1 lda DCB+S.DCB.NIC.MAC+0,y
>WRITEBYTE
iny
cpy #6
bcc .1
>READBYTE
beq .8
lda #MLI.E.IO
sec
rts
.8 lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S
clc
rts
.9 lda #MLI.E.OPEN
sec
rts
*--------------------------------------
CLOSE ldx DEVSLOTx0
.8 lda #S.DIB.S.OPENED
trb DIB+S.DIB.S
clc
rts
*--------------------------------------
READ php
sei
>STYA ZPIOCTL
ldx DEVSLOTx0
lda #IO.8255.Cmd.PFX
>WRITEBYTE
lda #IO.8255.Cmd.POLL
>WRITEBYTE
lda #2048
>WRITEBYTE
lda /2048
>WRITEBYTE
>READBYTE
ldy #S.IOCTL.BYTECNT
sta (ZPIOCTL),y
pha
eor #$ff
sta Counter
>READBYTE
sta (ZPIOCTL),y
pha
eor #$ff
sta Counter+1
pla
ply
bne .1
tax
beq READWRITE.9
.1 >SYSCALL2 GetMem
bcs READWRITE.99
>STYA ZPBufPtr
phx
phy
ldy #S.IOCTL.BUFPTR+1
sta (ZPIOCTL),y
dey
pla
sta (ZPIOCTL),y
ldx DEVSLOTx0
ldy #0
.2 inc Counter
bne .3
inc Counter+1
beq .8
.3 >READBYTE
sta (ZPBufPtr),y
iny
bne .2
inc ZPBufPtr+1
bra .2
.8 pla hMem
plp
clc
rts
*--------------------------------------
READWRITE.9 lda #E.NODATA
READWRITE.99 plp
sec
rts
*--------------------------------------
WRITE php
sei
>STYA ZPIOCTL
ldx DEVSLOTx0
lda #IO.8255.Cmd.PFX
>WRITEBYTE
lda #IO.8255.Cmd.POLL
>WRITEBYTE
ldy #S.IOCTL.BYTECNT
lda (ZPIOCTL),y
>WRITEBYTE
eor #$ff
sta Counter
iny
lda (ZPIOCTL),y
>WRITEBYTE
eor #$ff
sta Counter+1
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta ZPBufPtr
iny
lda (ZPIOCTL),y
sta ZPBufPtr+1
ldy #0
.1 inc Counter
bne .2
inc Counter+1
beq .8
.2 lda (ZPBufPtr),y
>WRITEBYTE
iny
bne .1
inc ZPBufPtr+1
bne .1
.8 >READBYTE
bne READWRITE.9
plp
clc
rts
*--------------------------------------
DRV.CS.END
DEVSLOTx0 .BS 1
*--------------------------------------
DIB .DA #0
.DA #0,#0,#0 size
.PS "dan2eth/W5500 "
.DA #S.DIB.T.NIC
.BS 1 Subtype
.BS 2 Version
*--------------------------------------
DCB .DA #S.DCB.T.NIC
.BS 1 FLAGS
.BS 1 LINK
.DA #S.DCB.NIC.SPEED.10
.HS 0008DC123456 MAC
.BS 12 IP/MASK/GW
*--------------------------------------
DRV.END
MAN
SAVE usr/src/drv/dan2eth.drv.s
ASM

View File

@ -82,12 +82,8 @@ DNS.REQUEST lda hDNSSocket
>STYA DNS.MSG.ID >STYA DNS.MSG.ID
>STYA DNS.TmpCache+S.DNSCACHE.ID >STYA DNS.TmpCache+S.DNSCACHE.ID
lda #K.DNS.PENDING.TTL
sta DNS.TmpCache+S.DNSCACHE.TTL
stz DNS.TmpCache+S.DNSCACHE.TTL+1
stz DNS.TmpCache+S.DNSCACHE.TTL+2
stz DNS.TmpCache+S.DNSCACHE.TTL+3
lda #S.DNSCACHE.STATUS.PENDING lda #S.DNSCACHE.STATUS.PENDING
ldx #K.DNS.PENDING.TTL
jsr DNS.ADD.I jsr DNS.ADD.I
bcs .9 bcs .9
@ -204,14 +200,15 @@ DNS.Add >PULLW ZPPtrDNS Get host string
dey dey
bpl .1 bpl .1
stz DNS.TmpCache+S.DNSCACHE.TTL lda #S.DNSCACHE.STATUS.RESOLVED+S.DNSCACHE.STATUS.STATIC
ldx #0
DNS.ADD.I sta DNS.TmpCache
stx DNS.TmpCache+S.DNSCACHE.TTL
stz DNS.TmpCache+S.DNSCACHE.TTL+1 stz DNS.TmpCache+S.DNSCACHE.TTL+1
stz DNS.TmpCache+S.DNSCACHE.TTL+2 stz DNS.TmpCache+S.DNSCACHE.TTL+2
stz DNS.TmpCache+S.DNSCACHE.TTL+3 stz DNS.TmpCache+S.DNSCACHE.TTL+3
lda #S.DNSCACHE.STATUS.RESOLVED+S.DNSCACHE.STATUS.STATIC
DNS.ADD.I sta DNS.TmpCache
jsr DNS.FIND.BY.NAME jsr DNS.FIND.BY.NAME
bcc .2 Found, go update... bcc .2 Found, go update...
@ -290,6 +287,7 @@ DNS.UPDATE.BY.ID
lda (ZPCachePtr),y lda (ZPCachePtr),y
cmp DNS.TmpCache+S.DNSCACHE.ID cmp DNS.TmpCache+S.DNSCACHE.ID
bne .6 bne .6
iny iny
lda (ZPCachePtr),y lda (ZPCachePtr),y
cmp DNS.TmpCache+S.DNSCACHE.ID+1 cmp DNS.TmpCache+S.DNSCACHE.ID+1
@ -330,10 +328,12 @@ DNS.FIND.FREE jsr DNS.GetCAche
bit #S.DNSCACHE.STATUS.STATIC+S.DNSCACHE.STATUS.PENDING bit #S.DNSCACHE.STATUS.STATIC+S.DNSCACHE.STATUS.PENDING
bne .7 Static/Pending.....skip bne .7 Static/Pending.....skip
phx phx
ldy #S.DNSCACHE.TTL ldy #S.DNSCACHE.TTL
ldx #3 ldx #3
sec sec
.2 lda TmpDWord,x is saved TTL greater then actual TTL? .2 lda TmpDWord,x is saved TTL greater then actual TTL?
sbc (ZPCachePtr),y sbc (ZPCachePtr),y
iny iny

View File

@ -349,7 +349,7 @@ SKT.shutdown pha
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.ESTBLSH cmp #S.SOCKET.TCP.S.ESTBLSH
bne .1 bne .1
lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA Send FIN/ACK jsr TCP.OUT.SendOptA Send FIN/ACK
@ -419,7 +419,14 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen
sta ZPDataInLen+1 sta ZPDataInLen+1
bra SKT.GetDataFromSktIn bra SKT.GetDataFromSktIn
.7 jsr SKT.CheckStream .7 ldy #S.SOCKET.TCP.O
lda (ZPPtrSKT),y
and #S.TCP.OPTIONS.ACK
beq .8
jmp TCP.OUT.SendOptA
.8 jsr SKT.CheckStream
bcs .99 I/O error bcs .99 I/O error
lda #E.NODATA lda #E.NODATA
@ -499,10 +506,10 @@ SKT.GetDataFromSktIn
jsr SKT.SubDataInLenAtSktX jsr SKT.SubDataInLenAtSktX
jsr SKT.StoreTCB jsr SKT.StoreTCB
* jsr TCP.SetSocketTCPO.ACK ACK=1 -> send WSIZE jsr TCP.SetSocketTCPO.ACK ACK=1 -> send WSIZE
lda #S.TCP.OPTIONS.ACK * lda #S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA * jsr TCP.OUT.SendOptA
>LDYA ZPDataInLen >LDYA ZPDataInLen
clc clc
@ -655,6 +662,7 @@ SKT.AddDataToSktOut
.2 inx .2 inx
bne .3 bne .3
pla pla
inc inc
beq .8 beq .8
@ -670,6 +678,7 @@ SKT.AddDataToSktOut
.4 iny .4 iny
bne .2 bne .2
inc ZPTmpPtr1+1 inc ZPTmpPtr1+1
.DO AUXPIPE=1 .DO AUXPIPE=1
sta CLRWRITEAUX sta CLRWRITEAUX

View File

@ -16,7 +16,7 @@ TCP.IN jsr FRM.GetTargetSKT.TCPUDP
tax tax
jmp (J.TCP.IN,x) jmp (J.TCP.IN,x)
*-------------------------------------- *--------------------------------------
TCP.IN.RST lda #S.SOCKET.TCP.S.CLOSING TCP.IN.RST lda #S.SOCKET.TCP.S.TIMEWT
ldy #S.SOCKET.TCP.S ldy #S.SOCKET.TCP.S
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
*-------------------------------------- *--------------------------------------
@ -105,6 +105,7 @@ TCP.IN.JMP.SYNRCVD
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
cmp #S.TCP.OPTIONS.ACK cmp #S.TCP.OPTIONS.ACK
bne .8 bne .8
jsr SKT.GetTCB jsr SKT.GetTCB
ldx #3 ldx #3
@ -236,7 +237,6 @@ TCP.IN.JMP.ESTBLSH
and #S.TCP.OPTIONS.FIN and #S.TCP.OPTIONS.FIN
beq .8 beq .8
jsr TCP.IN.ACKTheFIN
jsr SKT.StoreTCB update socket jsr SKT.StoreTCB update socket
lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
@ -271,7 +271,7 @@ TCP.IN.JMP.LASTACK
* jsr TCP.OUT.SendACK * jsr TCP.OUT.SendACK
ldy #S.SOCKET.TCP.S ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.CLOSING lda #S.SOCKET.TCP.S.TIMEWT
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
.8 .8
*-------------------------------------- *--------------------------------------
@ -280,59 +280,50 @@ TCP.IN.JMP.CLWAIT
rts rts
*-------------------------------------- *--------------------------------------
TCP.IN.JMP.FINWT1 TCP.IN.JMP.FINWT1
jsr SKT.GetTCB
ldy #S.TCP.OPTIONS FIN sent, accept ACK or FIN/ACK packet ldy #S.TCP.OPTIONS FIN sent, accept ACK or FIN/ACK packet
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
bit #S.TCP.OPTIONS.FIN bit #S.TCP.OPTIONS.FIN
bne .1 bne TCP.IN.2TIMEWT FIN/ACK
lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA Send FIN.ACK
bcs TCP.IN.JMP.TIMEWT.RTS
jsr SKT.GetTCB
lda #S.SOCKET.TCP.S.FINWT2 lda #S.SOCKET.TCP.S.FINWT2
jmp SKT.StoreTCB.S jmp SKT.StoreTCB.S
.1 jsr TCP.IN.ACKTheFIN FIN/ACK
* lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendACK FIN received, Send ACK
bcs TCP.IN.JMP.TIMEWT.RTS
lda #S.SOCKET.TCP.S.LASTACK
jmp SKT.StoreTCB.S
*-------------------------------------- *--------------------------------------
TCP.IN.JMP.FINWT2 TCP.IN.JMP.FINWT2
ldy #S.TCP.OPTIONS only accept ACK packet ldy #S.TCP.OPTIONS FIN sent & ACKed, awaiting FIN
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
bit #S.TCP.OPTIONS.ACK bit #S.TCP.OPTIONS.FIN
beq TCP.IN.JMP.TIMEWT beq TCP.IN.JMP.TIMEWT
jsr SKT.GetTCB
jsr TCP.IN.ACKTheFIN TCP.IN.2TIMEWT jsr SKT.GetTCB
jsr TCP.OUT.SendACK FIN received, Send ACK ldx #3
.1 inc SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
bne .2
dex
bpl .1
.2 ldx #3
.3 inc SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x
bne .4
dex
bpl .3
.4 jsr TCP.OUT.SendACK FIN received, Send ACK
bcs TCP.IN.JMP.TIMEWT.RTS bcs TCP.IN.JMP.TIMEWT.RTS
lda #S.SOCKET.TCP.S.CLOSING lda #S.SOCKET.TCP.S.TIMEWT
jmp SKT.StoreTCB.S jmp SKT.StoreTCB.S
*-------------------------------------- *--------------------------------------
TCP.IN.JMP.CLOSING TCP.IN.JMP.CLOSING
* Wait for SKT.Shutdown
* ldy #S.TCP.OPTIONS only accept ACK packet
* lda (ZPFrameInPtr),y
* bit #S.TCP.OPTIONS.ACK
* beq .1
* ldy #S.SOCKET.TCP.S * Wait for SKT.Shutdown
* lda #S.SOCKET.TCP.S.TIMEWT
* sta (ZPPtrSKT),y
*.1
* clc
* rts
*--------------------------------------
TCP.IN.JMP.TIMEWT TCP.IN.JMP.TIMEWT
clc Wait for TCP.SendClose clc Wait for TCP.SendClose
TCP.IN.JMP.TIMEWT.RTS TCP.IN.JMP.TIMEWT.RTS
@ -353,17 +344,6 @@ TCP.IN.ACKTheSYN
rts rts
*-------------------------------------- *--------------------------------------
TCP.IN.ACKTheFIN
ldx #3
.1 inc SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
bne .8
dex
bpl .1
.8 rts
*--------------------------------------
TCP.IN.SetDataInPtrAndLen TCP.IN.SetDataInPtrAndLen
ldy #S.IP.TOTAL.LENGTH+1 ldy #S.IP.TOTAL.LENGTH+1
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
@ -508,6 +488,7 @@ TCP.OUT lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1
ldy #S.SOCKET.TCP.O ldy #S.SOCKET.TCP.O
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
.9 rts .9 rts

View File

@ -34,22 +34,25 @@ printf("i=%D\r\n", i);
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
printf("argc=%D\r\n", argc); int r=testf1();
printf("testf1() returned %D\r\n", r);
getchar();
r=testf2();
printf("testf2() returned %D\r\n", r);
getchar();
testf3("testf3() void function...");
getchar();
i = testf4(34, 43);
printf("testf4() returned %D\r\n", i);
getchar();
printf("main() argc=%D\r\n", argc);
for(int i=0; i<=argc; i++) { for(int i=0; i<=argc; i++) {
printf(" argv[%I] : %s\r\n", i, argv[i]); printf(" argv[%I] : %s\r\n", i, argv[i]);
} }
int r=testf1(); puts("set main() return code=0x73");
printf("testf1() returned %D\r\n", r); return 115; // return E_INUM
r=testf2();
printf("testf2() returned %D\r\n", r);
testf3("testf3() void function...");
i = testf4(34, 43);
printf("testf4() returned %D\r\n", i);
} }
MAN MAN
TEXT root/ctest/testargs.c TEXT root/ctest/testargs.c

View File

@ -442,7 +442,7 @@ CHECK.DIGIT.OR.LETTER
JSR CHECK.DIGIT JSR CHECK.DIGIT
BCS CHECKS.OK BCS CHECKS.OK
CHECK.LETTER CHECK.LETTER
CMP #'_' allow underline in symbols too CMP #'_ allow underline in symbols too
BEQ CHECKS.OK BEQ CHECKS.OK
CMP #'A CMP #'A
BCC CHECKS.NOT.OK BCC CHECKS.NOT.OK