Kernel version 0.9 : UTHERNET2.DRV.S.txt & UTHER2.AI.DRV.S.txt , code rework

This commit is contained in:
Rémy GIBERT
2017-04-25 17:44:21 +02:00
parent 173256a691
commit d71c265058
6 changed files with 100 additions and 81 deletions

View File

@@ -143,7 +143,7 @@ DEV.HEADER cld
jmp (DRV.CS.START,x) jmp (DRV.CS.START,x)
.DA #0 .DA #0
.BS 6 .BS 6
DEV.HEADER.NAME >PSTR "ETH7" NAME DEV.HEADER.NAME >PSTR "ETH7"
*-------------------------------------- *--------------------------------------
* Driver Code * Driver Code
*-------------------------------------- *--------------------------------------
@@ -171,23 +171,25 @@ STATUS >LDYA L.DEVSTAT
READBLOCK ldx DEVSLOTx0 READBLOCK ldx DEVSLOTx0
>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
ora W5100.DR,x LO ora W5100.DR,x LO
bne READBLOCK.RxOK bne READBLOCK.RxOK
lda #ERR.DEV.NOFRAME lda #ERR.DEV.NOFRAME
READBLOCK.Err sec sec
rts READBLOCK.RTS rts
READBLOCK.RxOK >AR.SELECT S0.RX.RD READBLOCK.RxOK >AR.SELECT S0.RX.RD
lda W5100.DR,x get the received ptr HI lda W5100.DR,x get the received ptr HI
ldy W5100.DR,x get the received ptr LO ldy W5100.DR,x get the received ptr LO
and /RXTX.MASK and /RXTX.MASK
ora /RX.BASE ora /RX.BASE
sta W5100.AR,x sta W5100.AR,x
sta offset+1
tya tya
sta W5100.AR+1,x sta W5100.AR+1,x
sta offset
ldy #0 ldy #0
@@ -197,9 +199,9 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD
cpy #4 cpy #4
bne .10 bne .10
ldy W5100.DR,x get RX.Size HI ldy W5100.DR,x get RX.Size HI
sty RXTX.Size+1 sty RXTX.Size+1
lda W5100.DR,x get RX.Size LO lda W5100.DR,x get RX.Size LO
sta RXTX.Size sta RXTX.Size
clc clc
@@ -207,12 +209,14 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD
pha pha
tya tya
adc /S.IP adc /S.IP
ply >PUSHA
pla
>PUSHYA >PUSHA
>PUSHBI 0 >PUSHBI 0
>SYSCALL GetMem >SYSCALL GetMem
bcs READBLOCK.Err bcs READBLOCK.RTS
>STYA ZPTmpPTR >STYA ZPTmpPTR
stx .8+1 stx .8+1
sty .8+3 sty .8+3
@@ -220,23 +224,24 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD
lda RXTX.Size lda RXTX.Size
sta (ZPTmpPTR) sta (ZPTmpPTR)
pha
eor #$ff eor #$ff
sta Counter sta Counter
pla
* clc
adc #6 Header Size
sta RXTX.Size
ldy #1 ldy #1
lda RXTX.Size+1 lda RXTX.Size+1
sta (ZPTmpPTR),y sta (ZPTmpPTR),y
pha
eor #$ff eor #$ff
sta Counter+1 sta Counter+1
pla
lda RXTX.Size
clc
adc #6 Header Size
sta Offset
lda RXTX.Size+1
adc #0 adc #0
sta Offset+1 sta RXTX.Size+1
ldy #S.IP.DST+3 ldy #S.IP.DST+3
ldx #3 ldx #3
@@ -262,32 +267,34 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD
bne .2 bne .2
inc ZPTmpPTR+1 inc ZPTmpPTR+1
bne .2 bne .2
.4 >AR.SELECT S0.RX.RD .4 >AR.SELECT S0.RX.RD
ldy W5100.DR,x Get HI
lda W5100.DR,x Get LO lda Offset
clc clc
adc Offset adc RXTX.Size
pha save LO pha save LO
tya
adc Offset+1 lda Offset+1
pha adc RXTX.Size+1
>AR.SELECT S0.RX.RD
pla and /RXTX.MASK
ora /RX.BASE
sta W5100.DR,x write HI sta W5100.DR,x write HI
pla pla
sta W5100.DR,x write LO sta W5100.DR,x write LO
>AR.SELECT S0.CR >AR.SELECT S0.CR
lda #W5100.AR.S0.CR.RCVD lda #W5100.AR.S0.CR.RCVD
sta W5100.DR,x sta W5100.DR,x
.8 ldx #$ff hMem .8 ldx #$ff hMem
ldy #$ff PtrLO ldy #$ff PtrLO
lda #$ff PtrHI lda #$ff PtrHI
clc clc
rts rts
*-------------------------------------- *--------------------------------------
WRITEBLOCK >STYA ZPTmpPTR WRITEBLOCK >STYA ZPTmpPTR
lda (ZPTmpPTR) lda (ZPTmpPTR)
@@ -296,7 +303,7 @@ WRITEBLOCK >STYA ZPTmpPTR
sta RXTX.Size sta RXTX.Size
eor #$ff eor #$ff
sta Counter sta Counter
ldy #1 ldy #1
lda (ZPTmpPTR),y lda (ZPTmpPTR),y
sbc /S.IP-2 sbc /S.IP-2
@@ -331,13 +338,6 @@ WRITEBLOCK.1 >AR.SELECT S0.DIPR
lda (ZPTmpPTR),y lda (ZPTmpPTR),y
sta W5100.DR,x sta W5100.DR,x
* >AR.SELECT S0.TOS
stz W5100.DR,x
* >AR.SELECT S0.TTL
lda #K.IP.TTL
sta W5100.DR,x
>AR.SELECT S0.TX.WR >AR.SELECT S0.TX.WR
lda W5100.DR,x Get HI lda W5100.DR,x Get HI
ldy W5100.DR,x Get LO ldy W5100.DR,x Get LO
@@ -353,6 +353,7 @@ WRITEBLOCK.1 >AR.SELECT S0.DIPR
.2 inc Counter .2 inc Counter
bne .3 bne .3
inc Counter+1 inc Counter+1
beq .8 beq .8
@@ -365,8 +366,8 @@ WRITEBLOCK.1 >AR.SELECT S0.DIPR
.8 >AR.SELECT S0.TX.WR .8 >AR.SELECT S0.TX.WR
clc
lda Offset lda Offset
clc
adc RXTX.Size adc RXTX.Size
pha save LO pha save LO
@@ -381,6 +382,7 @@ WRITEBLOCK.1 >AR.SELECT S0.DIPR
>AR.SELECT S0.CR >AR.SELECT S0.CR
lda #W5100.AR.S0.CR.SEND lda #W5100.AR.S0.CR.SEND
sta W5100.DR,x sta W5100.DR,x
clc clc
rts rts
*-------------------------------------- *--------------------------------------
@@ -391,29 +393,38 @@ OPEN jsr CLOSE
>AR.SELECT GAR >AR.SELECT GAR
ldy #8 GAR,SUBR ldy #4
.1 stz W5100.DR,x .1 stz W5100.DR,x
dey dey
bne .1 bne .1
* >AR.SELECT SUBR
ldy #4
lda #255
.2 sta W5100.DR,x
dey
bne .2
* >AR.SELECT SHAR * >AR.SELECT SHAR
ldy #0 ldy #0
.2 lda MAC,y .3 lda MAC,y
sta W5100.DR,x sta W5100.DR,x
iny iny
cpy #6 cpy #6
bne .2 bne .3
* >AR.SELECT SIPR * >AR.SELECT SIPR
ldy #4 ldy #4
.3 stz W5100.DR,x .4 stz W5100.DR,x
dey dey
bne .3 bne .4
>AR.SELECT RMSR >AR.SELECT RMSR
lda #3 8k,0k,0k,0k lda #3 8k,0k,0k,0k
@@ -468,6 +479,13 @@ CONTROL.OPEN >AR.SELECT S0.MR
lda #W5100.AR.S0.MR.IPRAW+W5100.AR.S0.MR.MF lda #W5100.AR.S0.MR.IPRAW+W5100.AR.S0.MR.MF
sta W5100.DR,x sta W5100.DR,x
>AR.SELECT S0.TOS
stz W5100.DR,x
* >AR.SELECT S0.TTL
lda #K.IP.TTL
sta W5100.DR,x
>AR.SELECT S0.CR >AR.SELECT S0.CR
lda #W5100.AR.S0.CR.OPEN lda #W5100.AR.S0.CR.OPEN
sta W5100.DR,x sta W5100.DR,x
@@ -478,7 +496,7 @@ CONTROL.OPEN >AR.SELECT S0.MR
CLOSE ldx DEVSLOTx0 CLOSE ldx DEVSLOTx0
lda #W5100.MR.RST lda #W5100.MR.RST
sta W5100.MR,x sta W5100.MR,x
lda $C019 we can use VBL as we are not on //c lda $C019 we can use VBL as we are not on //c
.1 eor $C019 .1 eor $C019
bpl .1 bpl .1
@@ -487,6 +505,7 @@ CLOSE ldx DEVSLOTx0
.2 eor $C019 .2 eor $C019
bpl .2 bpl .2
clc
rts rts
*-------------------------------------- *--------------------------------------
DRV.CS.END DRV.CS.END
@@ -498,6 +517,7 @@ DEVSTAT .DA #0
.DA #S.DEVSTAT.TYPE.NET .DA #S.DEVSTAT.TYPE.NET
.BS 1 Subtype .BS 1 Subtype
.BS 2 Version .BS 2 Version
*--------------------------------------
FLAGS .DA #S.DEVSTAT.NET.FLAGS.ARPOFFLOAD+S.DEVSTAT.NET.FLAGS.IPOFFLOAD FLAGS .DA #S.DEVSTAT.NET.FLAGS.ARPOFFLOAD+S.DEVSTAT.NET.FLAGS.IPOFFLOAD
LINK.STATUS .DA #S.DEVSTAT.NET.STATUS.OK+S.DEVSTAT.NET.STATUS.FD+S.DEVSTAT.NET.STATUS.100 LINK.STATUS .DA #S.DEVSTAT.NET.STATUS.OK+S.DEVSTAT.NET.STATUS.FD+S.DEVSTAT.NET.STATUS.100
MAC .BS 6 MAC .BS 6

View File

@@ -171,7 +171,7 @@ READBLOCK ldx DEVSLOTx0
>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
ora W5100.DR,x LO ora W5100.DR,x LO
bne READBLOCK.RxOK bne READBLOCK.RxOK
lda #ERR.DEV.NOFRAME lda #ERR.DEV.NOFRAME
@@ -180,30 +180,24 @@ READBLOCK ldx DEVSLOTx0
rts rts
READBLOCK.RxOK >AR.SELECT S0.RX.RD READBLOCK.RxOK >AR.SELECT S0.RX.RD
lda W5100.DR,x get the received ptr HI lda W5100.DR,x get the received ptr HI
ldy W5100.DR,x get the received ptr LO ldy W5100.DR,x get the received ptr LO
and /RXTX.MASK and /RXTX.MASK
ora /RX.BASE ora /RX.BASE
sta W5100.AR,x sta W5100.AR,x
sta offset+1
tya tya
sta W5100.AR+1,x sta W5100.AR+1,x
sta offset
lda W5100.DR,x get RX.Size HI lda W5100.DR,x get RX.Size HI
sta Offset+1 sta RXTX.Size+1
>PUSHA for SYS.GetMem >PUSHA for SYS.GetMem
tay
lda W5100.DR,x get RX.Size LO
sta Offset
>PUSHA for SYS.GetMem
sec lda W5100.DR,x get RX.Size LO
sbc #2
sta RXTX.Size sta RXTX.Size
bcs .1 >PUSHA for SYS.GetMem
dey
.1 sty RXTX.Size+1
* >PUSHYA Already pushed....
>PUSHBI 0 >PUSHBI 0
>SYSCALL GetMem >SYSCALL GetMem
bcs .99 bcs .99
@@ -213,13 +207,16 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD
sta .8+5 sta .8+5
lda RXTX.Size lda RXTX.Size
sec
sbc #2 Header Size
sta (ZPTmpPTR) sta (ZPTmpPTR)
eor #$ff eor #$ff
sta Counter sta Counter
ldy #1 ldy #1
lda RXTX.Size+1 lda RXTX.Size+1
sbc #0
sta (ZPTmpPTR),y sta (ZPTmpPTR),y
eor #$ff eor #$ff
sta Counter+1 sta Counter+1
@@ -241,16 +238,18 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD
bne .2 bne .2
.4 >AR.SELECT S0.RX.RD .4 >AR.SELECT S0.RX.RD
ldy W5100.DR,x Get HI
lda W5100.DR,x Get LO lda Offset
clc clc
adc Offset adc RXTX.Size
pha save LO pha save LO
tya
adc Offset+1 lda Offset+1
pha adc RXTX.Size+1
>AR.SELECT S0.RX.RD
pla and /RXTX.MASK
ora /RX.BASE
sta W5100.DR,x write HI sta W5100.DR,x write HI
pla pla
sta W5100.DR,x write LO sta W5100.DR,x write LO
@@ -318,7 +317,7 @@ WRITEBLOCK.1 ldy #S.ETH.SRCMAC+5
bne .3 bne .3
inc Counter+1 inc Counter+1
beq .4 beq .8
.3 lda (ZPTmpPTR),y .3 lda (ZPTmpPTR),y
sta W5100.DR,x sta W5100.DR,x
@@ -327,7 +326,7 @@ WRITEBLOCK.1 ldy #S.ETH.SRCMAC+5
inc ZPTmpPTR+1 inc ZPTmpPTR+1
bne .2 bne .2
.4 >AR.SELECT S0.TX.WR .8 >AR.SELECT S0.TX.WR
lda Offset lda Offset
clc clc
@@ -345,7 +344,7 @@ WRITEBLOCK.1 ldy #S.ETH.SRCMAC+5
>AR.SELECT S0.CR >AR.SELECT S0.CR
lda #W5100.AR.S0.CR.SEND lda #W5100.AR.S0.CR.SEND
sta W5100.DR,x sta W5100.DR,x
clc clc
rts rts
*-------------------------------------- *--------------------------------------
@@ -357,6 +356,7 @@ OPEN jsr CLOSE
>AR.SELECT SHAR >AR.SELECT SHAR
ldy #0 ldy #0
.1 lda MAC,y .1 lda MAC,y
sta W5100.DR,x sta W5100.DR,x
iny iny

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -38,7 +38,6 @@ SET.IPCFG >PULLW ZPTmpPtr1
lda IPCFG+S.IPCFG.HDEV lda IPCFG+S.IPCFG.HDEV
>SYSCALL GetDevByIDA >SYSCALL GetDevByIDA
>STYA ZPTmpPtr2
>STYA NetDevJmp+1 >STYA NetDevJmp+1
ldx #DEVMGR.STATUS ldx #DEVMGR.STATUS