mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-11 00:31:06 +00:00
UTHERNET2 drivers optimisation/bugfix
This commit is contained in:
parent
fd791e5b98
commit
79b43c9a99
@ -23,13 +23,13 @@ ZPTmpPTR .EQ ZPDRV
|
||||
*--------------------------------------
|
||||
* WIZnet W5100 IO Registers
|
||||
*--------------------------------------
|
||||
W5100.MR .EQ $C084 Mode Register
|
||||
W5100.MR .EQ $C084-$88 Mode Register
|
||||
W5100.MR.RST .EQ %10000000
|
||||
W5100.MR.PB .EQ %00010000
|
||||
W5100.MR.PPPOE .EQ %00001000
|
||||
W5100.MR.AI .EQ %00000010
|
||||
W5100.MR.IND .EQ %00000001
|
||||
W5100.AR .EQ $C085 Memory Pointer
|
||||
W5100.AR .EQ $C085-$88 Memory Pointer
|
||||
W5100.AR.GAR .EQ $0001
|
||||
W5100.AR.SUBR .EQ $0005
|
||||
W5100.AR.SHAR .EQ $0009
|
||||
@ -62,7 +62,7 @@ W5100.AR.S0.TX.RD .EQ $0422
|
||||
W5100.AR.S0.TX.WR .EQ $0424
|
||||
W5100.AR.S0.RX.RSR .EQ $0426
|
||||
W5100.AR.S0.RX.RD .EQ $0428
|
||||
W5100.DR .EQ $C087
|
||||
W5100.DR .EQ $C087-$88
|
||||
*--------------------------------------
|
||||
TX.BASE .EQ $4000
|
||||
RX.BASE .EQ $6000
|
||||
@ -92,7 +92,7 @@ Dev.Detect sta hArgs
|
||||
>LDYA L.MSG.DETECT
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
|
||||
ldx #$10
|
||||
ldx #$10+$88
|
||||
.1 lda #W5100.MR.RST
|
||||
sta W5100.MR,x
|
||||
|
||||
@ -117,7 +117,7 @@ Dev.Detect sta hArgs
|
||||
clc
|
||||
adc #$10
|
||||
tax
|
||||
bpl .1 #$80 ?
|
||||
bcc .1 #$108 ?
|
||||
|
||||
>LDYA L.MSG.DETECT.KO
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
@ -126,7 +126,7 @@ Dev.Detect sta hArgs
|
||||
sec
|
||||
rts
|
||||
|
||||
.3 stx DEVSLOTx0
|
||||
.3 stx DEVSLOTx8
|
||||
|
||||
lda hARGS
|
||||
bne .4
|
||||
@ -184,10 +184,10 @@ DEV.HEADER.NAME >PSTRING "ETH1" NAME
|
||||
*--------------------------------------
|
||||
DRV.CS.START .DA OPEN
|
||||
.DA GETEVENT
|
||||
.DA $FFFF no COUT
|
||||
.DA COUT
|
||||
.DA CLOSE
|
||||
.DA GETINFO
|
||||
.DA $FFFF no IRQ
|
||||
.DA IRQ
|
||||
.DA SEND
|
||||
.DA SETIPCFG
|
||||
L.DEVINFO .DA DEVINFO
|
||||
@ -206,7 +206,7 @@ OPEN jsr Reset
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
GETEVENT ldx DEVSLOTx0
|
||||
GETEVENT ldx DEVSLOTx8
|
||||
|
||||
>AR.SELECT S0.RX.RSR
|
||||
lda W5100.DR,x get the received size HI
|
||||
@ -214,6 +214,8 @@ GETEVENT ldx DEVSLOTx0
|
||||
bne GETEVENT.RxOK
|
||||
|
||||
lda #ERR.DEV.NOFRAME
|
||||
COUT
|
||||
IRQ
|
||||
GETEVENT.Err sec
|
||||
rts
|
||||
|
||||
@ -256,16 +258,20 @@ GETEVENT.RxOK >AR.SELECT S0.RX.RD
|
||||
ldy #S.EVT.DATALO
|
||||
sta (pEvent),y
|
||||
|
||||
lda #S.EVT.F.NET+S.EVT.F.hMEM1
|
||||
sta (pEvent)
|
||||
|
||||
lda RXTX.Size
|
||||
eor #$ff
|
||||
sta Counter
|
||||
sta (ZPTmpPTR)
|
||||
|
||||
ldy #1
|
||||
lda RXTX.Size+1
|
||||
eor #$ff
|
||||
sta Counter+1
|
||||
sta (ZPTmpPTR),y
|
||||
|
||||
lda #S.EVT.F.NET+S.EVT.F.hMEM1
|
||||
sta (pEvent)
|
||||
|
||||
ldy #S.IP.DST+3
|
||||
ldx #3
|
||||
|
||||
@ -275,15 +281,7 @@ GETEVENT.RxOK >AR.SELECT S0.RX.RD
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
sec
|
||||
lda #0
|
||||
sbc RXTX.Size
|
||||
sta Counter
|
||||
lda #0
|
||||
sbc RXTX.Size+1
|
||||
sta Counter+1
|
||||
|
||||
ldx DEVSLOTx0
|
||||
ldx DEVSLOTx8
|
||||
|
||||
ldy #S.IP
|
||||
.2 lda W5100.DR,x
|
||||
@ -334,11 +332,15 @@ SEND >PULLW ZPTmpPTR
|
||||
ldy #S.IP.TOTAL.LENGTH+1
|
||||
lda (ZPTmpPTR),y
|
||||
sta RXTX.Size
|
||||
eor #$ff
|
||||
sta Counter
|
||||
dey
|
||||
lda (ZPTmpPTR),y
|
||||
sta RXTX.Size+1
|
||||
eor #$ff
|
||||
sta Counter+1
|
||||
|
||||
ldx DEVSLOTx0
|
||||
ldx DEVSLOTx8
|
||||
>AR.SELECT S0.TX.FSR
|
||||
|
||||
lda W5100.DR,x get send size HI
|
||||
@ -384,30 +386,21 @@ SEND.READY >AR.SELECT S0.DIPR
|
||||
sta W5100.AR+1,x Write LO
|
||||
sta Offset
|
||||
|
||||
sec
|
||||
lda #0
|
||||
sbc RXTX.Size
|
||||
sta Counter
|
||||
|
||||
lda #0
|
||||
sbc RXTX.Size+1
|
||||
sta Counter+1
|
||||
|
||||
ldy #S.IP
|
||||
|
||||
.2 lda (ZPTmpPTR),y
|
||||
.2 inc Counter
|
||||
bne .3
|
||||
inc Counter+1
|
||||
beq .8
|
||||
|
||||
.3 lda (ZPTmpPTR),y
|
||||
sta W5100.DR,x
|
||||
iny
|
||||
bne .3
|
||||
bne .2
|
||||
inc ZPTmpPTR+1
|
||||
|
||||
.3 inc Counter
|
||||
bne .2
|
||||
|
||||
inc Counter+1
|
||||
bne .2
|
||||
|
||||
>AR.SELECT S0.TX.WR
|
||||
.8 >AR.SELECT S0.TX.WR
|
||||
|
||||
clc
|
||||
lda Offset
|
||||
@ -422,7 +415,7 @@ SEND.READY >AR.SELECT S0.DIPR
|
||||
pla
|
||||
sta W5100.DR,x write LO
|
||||
|
||||
.8 >AR.SELECT S0.CR
|
||||
>AR.SELECT S0.CR
|
||||
lda #$20 SEND
|
||||
sta W5100.DR,x
|
||||
clc
|
||||
@ -430,7 +423,7 @@ SEND.READY >AR.SELECT S0.DIPR
|
||||
*--------------------------------------
|
||||
SETIPCFG >PULLW ZPTmpPTR
|
||||
|
||||
ldx DEVSLOTx0
|
||||
ldx DEVSLOTx8
|
||||
|
||||
>AR.SELECT S0.CR
|
||||
lda #10 CLOSE
|
||||
@ -483,13 +476,13 @@ SETIPCFG >PULLW ZPTmpPTR
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
Reset ldx DEVSLOTx0
|
||||
Reset ldx DEVSLOTx8
|
||||
lda #W5100.MR.RST
|
||||
sta W5100.MR,x
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.CS.END
|
||||
DEVSLOTx0 .BS 1
|
||||
DEVSLOTx8 .BS 1
|
||||
RX.IP .BS 4
|
||||
RXTX.Size .BS 2
|
||||
Counter .BS 2
|
||||
|
@ -246,19 +246,19 @@ GETEVENT.RxOK >AR.SELECT S0.RX.RD
|
||||
tya
|
||||
sta W5100.AR+1,x
|
||||
|
||||
lda W5100.DR,x get RX.Size HI
|
||||
sta RXTX.Size+1
|
||||
ldy W5100.DR,x get RX.Size LO
|
||||
sty RXTX.Size
|
||||
ldy W5100.DR,x get RX.Size HI
|
||||
sty RXTX.Size+1
|
||||
lda W5100.DR,x get RX.Size LO
|
||||
sta RXTX.Size
|
||||
|
||||
clc
|
||||
adc #2
|
||||
pha
|
||||
tya
|
||||
adc #0
|
||||
ply
|
||||
|
||||
iny
|
||||
bne .10
|
||||
inc
|
||||
.10 iny
|
||||
bne .11
|
||||
inc
|
||||
|
||||
.11 >PUSHYA
|
||||
>PUSHYA
|
||||
>PUSHBI 0
|
||||
>SYSCALL SYS.GetMem
|
||||
bcs GETEVENT.Err
|
||||
|
Loading…
x
Reference in New Issue
Block a user