UTHERNET2 drivers optimisation/bugfix

This commit is contained in:
Rémy GIBERT 2016-04-07 23:05:38 +02:00
parent fd791e5b98
commit 79b43c9a99
2 changed files with 48 additions and 55 deletions

View File

@ -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

View File

@ -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