mirror of
https://github.com/A2osX/A2osX.git
synced 2024-09-17 07:56:27 +00:00
UTHERNE drivers! optimisation
This commit is contained in:
parent
e1a8061997
commit
64cf656ba5
@ -195,12 +195,12 @@ DEV.HEADER.NAME >PSTRING "ETH1" NAME
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.CS.START .DA OPEN
|
DRV.CS.START .DA OPEN
|
||||||
.DA GETEVENT
|
.DA GETEVENT
|
||||||
.DA $FFFF no COUT
|
.DA COUT
|
||||||
.DA CLOSE
|
.DA CLOSE
|
||||||
.DA GETINFO
|
.DA GETINFO
|
||||||
.DA $FFFF no IRQ
|
.DA IRQ
|
||||||
.DA SEND
|
.DA SEND
|
||||||
.DA $FFFF no SETIPCFG
|
.DA SETIPCFG
|
||||||
L.DEVINFO .DA DEVINFO
|
L.DEVINFO .DA DEVINFO
|
||||||
.DA 0 end or relocation
|
.DA 0 end or relocation
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -238,7 +238,11 @@ GETEVENT ldx DEVSLOTx0
|
|||||||
and /PP.RxEvent.RxOK+PP.RxEvent.Brdcast+PP.RxEvent.IA
|
and /PP.RxEvent.RxOK+PP.RxEvent.Brdcast+PP.RxEvent.IA
|
||||||
bne GETEVENT.RxOK
|
bne GETEVENT.RxOK
|
||||||
lda #ERR.DEV.NOFRAME
|
lda #ERR.DEV.NOFRAME
|
||||||
sec
|
|
||||||
|
COUT
|
||||||
|
IRQ
|
||||||
|
SETIPCFG
|
||||||
|
GETEVENT.Err sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
GETEVENT.RxOK and /PP.RxEvent.Brdcast
|
GETEVENT.RxOK and /PP.RxEvent.Brdcast
|
||||||
@ -249,10 +253,10 @@ GETEVENT.RxOK and /PP.RxEvent.Brdcast
|
|||||||
>LDYA RTDATA,x discard RxStatus
|
>LDYA RTDATA,x discard RxStatus
|
||||||
|
|
||||||
lda RTDATA+1,x get RxLength
|
lda RTDATA+1,x get RxLength
|
||||||
sta FRAMELEN+1
|
sta Size+1
|
||||||
pha
|
pha
|
||||||
lda RTDATA,x
|
lda RTDATA,x
|
||||||
sta FRAMELEN
|
sta Size
|
||||||
clc
|
clc
|
||||||
adc #2
|
adc #2
|
||||||
tay
|
tay
|
||||||
@ -260,10 +264,10 @@ GETEVENT.RxOK and /PP.RxEvent.Brdcast
|
|||||||
bcc .11
|
bcc .11
|
||||||
inc
|
inc
|
||||||
|
|
||||||
.11 >PUSHYA FRAMLEN+2
|
.11 >PUSHYA Size+2
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>SYSCALL SYS.GetMem
|
>SYSCALL SYS.GetMem
|
||||||
bcs .99
|
bcs GETEVENT.Err
|
||||||
>STYA ZPTmpPTR
|
>STYA ZPTmpPTR
|
||||||
txa
|
txa
|
||||||
ldy #S.EVT.DATALO
|
ldy #S.EVT.DATALO
|
||||||
@ -272,27 +276,37 @@ GETEVENT.RxOK and /PP.RxEvent.Brdcast
|
|||||||
lda #S.EVT.F.NET+S.EVT.F.hMEM1
|
lda #S.EVT.F.NET+S.EVT.F.hMEM1
|
||||||
sta (pEvent)
|
sta (pEvent)
|
||||||
|
|
||||||
lda FRAMELEN
|
lda Size
|
||||||
sta (ZPTmpPTR)
|
sta (ZPTmpPTR)
|
||||||
|
eor #$ff
|
||||||
|
sta Counter
|
||||||
ldy #1
|
ldy #1
|
||||||
lda FRAMELEN+1
|
lda Size+1
|
||||||
sta (ZPTmpPTR),y
|
sta (ZPTmpPTR),y
|
||||||
|
eor #$ff
|
||||||
|
sta Counter+1
|
||||||
|
|
||||||
iny
|
iny
|
||||||
|
|
||||||
ldx DEVSLOTx0
|
ldx DEVSLOTx0
|
||||||
|
|
||||||
.1 jsr DecFrameLen
|
.1 inc Counter
|
||||||
|
bne .12
|
||||||
|
inc Counter+1
|
||||||
beq .8
|
beq .8
|
||||||
lda RTDATA,x
|
|
||||||
|
.12 lda RTDATA,x
|
||||||
sta (ZPTmpPTR),y
|
sta (ZPTmpPTR),y
|
||||||
iny
|
iny
|
||||||
bne .2
|
bne .2
|
||||||
inc ZPTmpPTR+1
|
inc ZPTmpPTR+1
|
||||||
|
|
||||||
.2 jsr DecFrameLen
|
.2 inc Counter
|
||||||
|
bne .21
|
||||||
|
inc Counter+1
|
||||||
beq .8
|
beq .8
|
||||||
lda RTDATA+1,x
|
|
||||||
|
.21 lda RTDATA+1,x
|
||||||
sta (ZPTmpPTR),y
|
sta (ZPTmpPTR),y
|
||||||
iny
|
iny
|
||||||
bne .1
|
bne .1
|
||||||
@ -301,9 +315,6 @@ GETEVENT.RxOK and /PP.RxEvent.Brdcast
|
|||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.99 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLOSE jsr Reset
|
CLOSE jsr Reset
|
||||||
clc
|
clc
|
||||||
@ -339,10 +350,14 @@ GETINFO lda #S.DEVINFO.NET.STATUS.10
|
|||||||
SEND >PULLW ZPTmpPTR
|
SEND >PULLW ZPTmpPTR
|
||||||
|
|
||||||
lda (ZPTmpPTR)
|
lda (ZPTmpPTR)
|
||||||
sta FRAMELEN
|
sta Size
|
||||||
|
eor #$ff
|
||||||
|
sta Counter
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPTmpPTR),y
|
lda (ZPTmpPTR),y
|
||||||
sta FRAMELEN+1
|
sta Size+1
|
||||||
|
eor #$ff
|
||||||
|
sta Counter+1
|
||||||
|
|
||||||
ldy #S.ETH.SRCMAC+5
|
ldy #S.ETH.SRCMAC+5
|
||||||
ldx #5
|
ldx #5
|
||||||
@ -355,7 +370,7 @@ SEND >PULLW ZPTmpPTR
|
|||||||
ldx DEVSLOTx0
|
ldx DEVSLOTx0
|
||||||
>LDYAI PP.TxCMD.LID+PP.TxCMD.TxStartFULL
|
>LDYAI PP.TxCMD.LID+PP.TxCMD.TxStartFULL
|
||||||
>STYA TxCMD,x
|
>STYA TxCMD,x
|
||||||
>LDYA FRAMELEN
|
>LDYA Size
|
||||||
>STYA TxLength,x
|
>STYA TxLength,x
|
||||||
>LDYAI PP.BusST
|
>LDYAI PP.BusST
|
||||||
>STYA PacketPagePTR,x
|
>STYA PacketPagePTR,x
|
||||||
@ -375,27 +390,29 @@ SEND >PULLW ZPTmpPTR
|
|||||||
dey
|
dey
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda #ERR.DEV.TIMEOUT
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 lda #ERR.DEV.NOBUFFER
|
.9 lda #ERR.DEV.NOBUFFER
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
SENDPREADY ldy #2
|
SENDPREADY ldy #2
|
||||||
|
|
||||||
.1 jsr DecFrameLen
|
.1 inc Counter
|
||||||
|
bne .11
|
||||||
|
inc Counter+1
|
||||||
beq .8
|
beq .8
|
||||||
lda (ZPTmpPTR),y
|
|
||||||
|
.11 lda (ZPTmpPTR),y
|
||||||
sta RTDATA,x
|
sta RTDATA,x
|
||||||
iny
|
iny
|
||||||
bne .2
|
bne .2
|
||||||
inc ZPTmpPTR+1
|
inc ZPTmpPTR+1
|
||||||
|
|
||||||
.2 jsr DecFrameLen
|
.2 inc Counter
|
||||||
|
bne .21
|
||||||
|
inc Counter+1
|
||||||
beq .8
|
beq .8
|
||||||
.3 lda (ZPTmpPTR),y
|
|
||||||
|
.21 lda (ZPTmpPTR),y
|
||||||
sta RTDATA+1,x
|
sta RTDATA+1,x
|
||||||
iny
|
iny
|
||||||
bne .1
|
bne .1
|
||||||
@ -412,19 +429,11 @@ Reset ldx DEVSLOTx0
|
|||||||
>STYA PacketPageDATA,x
|
>STYA PacketPageDATA,x
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DecFrameLen lda FRAMELEN
|
|
||||||
bne .1
|
|
||||||
lda FRAMELEN+1
|
|
||||||
beq .8
|
|
||||||
dec FRAMELEN+1
|
|
||||||
.1 dec FRAMELEN
|
|
||||||
lda #1 Make something NZ
|
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
|
||||||
DRV.CS.END
|
DRV.CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEVSLOTx0 .BS 1
|
DEVSLOTx0 .BS 1
|
||||||
FRAMELEN .BS 2
|
Size .BS 2
|
||||||
|
Counter .BS 2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEVINFO .DA #S.DEVINFO.TYPE.NET
|
DEVINFO .DA #S.DEVINFO.TYPE.NET
|
||||||
DEVFLAGS .DA #0
|
DEVFLAGS .DA #0
|
||||||
|
@ -23,13 +23,13 @@ ZPTmpPTR .EQ ZPDRV
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* WIZnet W5100 IO Registers
|
* WIZnet W5100 IO Registers
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
W5100.MR .EQ $C084 Mode Register
|
W5100.MR .EQ $C084-$88 Mode Register
|
||||||
W5100.MR.RST .EQ %10000000
|
W5100.MR.RST .EQ %10000000
|
||||||
W5100.MR.PB .EQ %00010000
|
W5100.MR.PB .EQ %00010000
|
||||||
W5100.MR.PPPOE .EQ %00001000
|
W5100.MR.PPPOE .EQ %00001000
|
||||||
W5100.MR.AI .EQ %00000010
|
W5100.MR.AI .EQ %00000010
|
||||||
W5100.MR.IND .EQ %00000001
|
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.GAR .EQ $0001
|
||||||
W5100.AR.SUBR .EQ $0005
|
W5100.AR.SUBR .EQ $0005
|
||||||
W5100.AR.SHAR .EQ $0009
|
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.TX.WR .EQ $0424
|
||||||
W5100.AR.S0.RX.RSR .EQ $0426
|
W5100.AR.S0.RX.RSR .EQ $0426
|
||||||
W5100.AR.S0.RX.RD .EQ $0428
|
W5100.AR.S0.RX.RD .EQ $0428
|
||||||
W5100.DR .EQ $C087
|
W5100.DR .EQ $C087-$88
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TX.BASE .EQ $4000
|
TX.BASE .EQ $4000
|
||||||
RX.BASE .EQ $6000
|
RX.BASE .EQ $6000
|
||||||
@ -92,7 +92,7 @@ Dev.Detect sta hArgs
|
|||||||
>LDYA L.MSG.DETECT
|
>LDYA L.MSG.DETECT
|
||||||
>SYSCALL SYS.PSTROutYA
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
|
||||||
ldx #$10
|
ldx #$10+$88
|
||||||
.1 lda #W5100.MR.RST
|
.1 lda #W5100.MR.RST
|
||||||
sta W5100.MR,x
|
sta W5100.MR,x
|
||||||
|
|
||||||
@ -117,7 +117,7 @@ Dev.Detect sta hArgs
|
|||||||
clc
|
clc
|
||||||
adc #$10
|
adc #$10
|
||||||
tax
|
tax
|
||||||
bpl .1 #$80 ?
|
bcc .1 #$108 ?
|
||||||
|
|
||||||
>LDYA L.MSG.DETECT.KO
|
>LDYA L.MSG.DETECT.KO
|
||||||
>SYSCALL SYS.PSTROutYA
|
>SYSCALL SYS.PSTROutYA
|
||||||
@ -126,7 +126,7 @@ Dev.Detect sta hArgs
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.3 stx DEVSLOTx0
|
.3 stx DEVSLOTx8
|
||||||
|
|
||||||
lda hARGS
|
lda hARGS
|
||||||
bne .4
|
bne .4
|
||||||
@ -184,12 +184,12 @@ DEV.HEADER.NAME >PSTRING "ETH1" NAME
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.CS.START .DA OPEN
|
DRV.CS.START .DA OPEN
|
||||||
.DA GETEVENT
|
.DA GETEVENT
|
||||||
.DA $FFFF no COUT
|
.DA COUT
|
||||||
.DA CLOSE
|
.DA CLOSE
|
||||||
.DA GETINFO
|
.DA GETINFO
|
||||||
.DA $FFFF no IRQ
|
.DA IRQ
|
||||||
.DA SEND
|
.DA SEND
|
||||||
.DA $FFFF no SETIPCFG
|
.DA SETIPCFG
|
||||||
L.DEVINFO .DA DEVINFO
|
L.DEVINFO .DA DEVINFO
|
||||||
.DA 0 end or relocation
|
.DA 0 end or relocation
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -223,7 +223,7 @@ OPEN jsr Reset
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GETEVENT ldx DEVSLOTx0
|
GETEVENT ldx DEVSLOTx8
|
||||||
|
|
||||||
>AR.SELECT S0.RX.RSR
|
>AR.SELECT S0.RX.RSR
|
||||||
lda W5100.DR,x get the received size HI
|
lda W5100.DR,x get the received size HI
|
||||||
@ -231,6 +231,9 @@ GETEVENT ldx DEVSLOTx0
|
|||||||
bne GETEVENT.RxOK
|
bne GETEVENT.RxOK
|
||||||
|
|
||||||
lda #ERR.DEV.NOFRAME
|
lda #ERR.DEV.NOFRAME
|
||||||
|
COUT
|
||||||
|
IRQ
|
||||||
|
SETIPCFG
|
||||||
GETEVENT.Err sec
|
GETEVENT.Err sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -264,36 +267,34 @@ GETEVENT.RxOK >AR.SELECT S0.RX.RD
|
|||||||
ldy #S.EVT.DATALO
|
ldy #S.EVT.DATALO
|
||||||
sta (pEvent),y
|
sta (pEvent),y
|
||||||
|
|
||||||
|
lda #S.EVT.F.NET+S.EVT.F.hMEM1
|
||||||
|
sta (pEvent)
|
||||||
|
|
||||||
lda RXTX.Size
|
lda RXTX.Size
|
||||||
sta (ZPTmpPTR)
|
sta (ZPTmpPTR)
|
||||||
|
eor #$ff
|
||||||
|
sta Counter
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda RXTX.Size+1
|
lda RXTX.Size+1
|
||||||
sta (ZPTmpPTR),y
|
sta (ZPTmpPTR),y
|
||||||
|
eor #$ff
|
||||||
lda #S.EVT.F.NET+S.EVT.F.hMEM1
|
|
||||||
sta (pEvent)
|
|
||||||
|
|
||||||
sec
|
|
||||||
lda #0
|
|
||||||
sbc RXTX.Size
|
|
||||||
sta Counter
|
|
||||||
lda #0
|
|
||||||
sbc RXTX.Size+1
|
|
||||||
sta Counter+1
|
sta Counter+1
|
||||||
|
|
||||||
ldx DEVSLOTx0
|
ldx DEVSLOTx8
|
||||||
|
|
||||||
ldy #2
|
ldy #2
|
||||||
.2 lda W5100.DR,x
|
|
||||||
|
.2 inc Counter
|
||||||
|
bne .3
|
||||||
|
inc Counter+1
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
.3 lda W5100.DR,x
|
||||||
sta (ZPTmpPTR),y
|
sta (ZPTmpPTR),y
|
||||||
iny
|
iny
|
||||||
bne .3
|
|
||||||
inc ZPTmpPTR+1
|
|
||||||
|
|
||||||
.3 inc Counter
|
|
||||||
bne .2
|
bne .2
|
||||||
inc Counter+1
|
inc ZPTmpPTR+1
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
.8 >AR.SELECT S0.RX.RD
|
.8 >AR.SELECT S0.RX.RD
|
||||||
@ -332,11 +333,16 @@ SEND >PULLW ZPTmpPTR
|
|||||||
|
|
||||||
lda (ZPTmpPTR)
|
lda (ZPTmpPTR)
|
||||||
sta RXTX.Size
|
sta RXTX.Size
|
||||||
|
eor #$ff
|
||||||
|
sta Counter
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPTmpPTR),y
|
lda (ZPTmpPTR),y
|
||||||
sta RXTX.Size+1
|
sta RXTX.Size+1
|
||||||
|
eor #$ff
|
||||||
|
sta Counter+1
|
||||||
|
|
||||||
ldx DEVSLOTx0
|
ldx DEVSLOTx8
|
||||||
>AR.SELECT S0.TX.FSR
|
>AR.SELECT S0.TX.FSR
|
||||||
|
|
||||||
lda W5100.DR,x get send size HI
|
lda W5100.DR,x get send size HI
|
||||||
@ -360,30 +366,22 @@ SEND.READY >AR.SELECT S0.TX.WR
|
|||||||
sta W5100.AR+1,x Write LO
|
sta W5100.AR+1,x Write LO
|
||||||
sta Offset
|
sta Offset
|
||||||
|
|
||||||
sec
|
|
||||||
lda #0
|
|
||||||
sbc RXTX.Size
|
|
||||||
sta Counter
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
sbc RXTX.Size+1
|
|
||||||
sta Counter+1
|
|
||||||
|
|
||||||
ldy #2
|
ldy #2
|
||||||
|
|
||||||
.2 lda (ZPTmpPTR),y
|
.2 inc Counter
|
||||||
sta W5100.DR,x
|
|
||||||
iny
|
|
||||||
bne .3
|
bne .3
|
||||||
inc ZPTmpPTR+1
|
|
||||||
|
|
||||||
.3 inc Counter
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
inc Counter+1
|
inc Counter+1
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
.3 lda (ZPTmpPTR),y
|
||||||
|
sta W5100.DR,x
|
||||||
|
iny
|
||||||
|
bne .2
|
||||||
|
inc ZPTmpPTR+1
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
>AR.SELECT S0.TX.WR
|
.8 >AR.SELECT S0.TX.WR
|
||||||
|
|
||||||
clc
|
clc
|
||||||
lda Offset
|
lda Offset
|
||||||
@ -398,19 +396,19 @@ SEND.READY >AR.SELECT S0.TX.WR
|
|||||||
pla
|
pla
|
||||||
sta W5100.DR,x write LO
|
sta W5100.DR,x write LO
|
||||||
|
|
||||||
.8 >AR.SELECT S0.CR
|
>AR.SELECT S0.CR
|
||||||
lda #$20 SEND
|
lda #$20 SEND
|
||||||
sta W5100.DR,x
|
sta W5100.DR,x
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Reset ldx DEVSLOTx0
|
Reset ldx DEVSLOTx8
|
||||||
lda #W5100.MR.RST
|
lda #W5100.MR.RST
|
||||||
sta W5100.MR,x
|
sta W5100.MR,x
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.CS.END
|
DRV.CS.END
|
||||||
DEVSLOTx0 .BS 1
|
DEVSLOTx8 .BS 1
|
||||||
RXTX.Size .BS 2
|
RXTX.Size .BS 2
|
||||||
Counter .BS 2
|
Counter .BS 2
|
||||||
Offset .BS 2
|
Offset .BS 2
|
||||||
|
Loading…
Reference in New Issue
Block a user