Kernel version 0.9 : LAN drivers, bugfix and optimization

This commit is contained in:
Rémy GIBERT 2017-04-27 22:08:12 +02:00
parent f2a899c776
commit d6aefbe613
7 changed files with 67 additions and 78 deletions

View File

@ -4,24 +4,23 @@ NEW
INC 1
AUTO 6
ECHO *** A2osX Startup Script ***
echo Working Directory:$CD
SET PS1='$PWD'
# Main Screen
INSDRV CONSOLE.DRV
STARTPROC GETTY CON ${A2OSX}SBIN/LOGIN
# Serial Login
#INSDRV SSC.DRV 9600,N,8,1,X
INSDRV SSC.I.DRV 9600,N,8,1,X
STARTPROC GETTY CON ${A2OSX}SBIN/LOGIN
STARTPROC GETTY COM2 ${A2OSX}SBIN/LOGIN
#INSDRV PIC.DRV
# Network Section
INSDRV UTHERNET.DRV 000E3A123456
INSDRV UTHERNET2.DRV 0008DC123456
#INSDRV LANCEGS.DRV
#INSDRV UTHER2.AI.DRV 0008DC123456
INSDRV LANCEGS.DRV
STARTPROC TCPIP
STARTPROC DHCPCLNT
STARTPROC TELNETD
#INSDRV UTHERNET2.DRV 0008DC123456
#STARTPROC TCPIP
#STARTPROC DHCPCLNT
#STARTPROC TELNETD
#STARTPROC HTTPD
#NFSMOUNT 192.168.1.5:/A2OSX /MNT/A2OSX
#CIFSMOUNT 192.168.1.5:/MSSHARE /MNT/MSSHARE

View File

@ -16,6 +16,8 @@ AUTO 6
.INB /A2OSX.BUILD/INC/LIBTCPIP.I
*--------------------------------------
ZPTmpPTR .EQ ZPDRV
Size .EQ ZPDRV+2
Counter .EQ ZPDRV+4
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -42,15 +44,9 @@ Dev.Detect >STYA Args
>SYSCALL CPrintFYA
ldx #$70
ldy #7
.1 txa IO based detection, avoid scanning in Disk Controller IO!!!!
lsr
lsr
lsr
lsr
tay
lda A2osX.SLOTS,y
.1 lda A2osX.SLOTS,y IO based detection, avoid scanning in Disk Controller IO!!!!
bne .2
lda L91C96.BSR+1,x
@ -62,6 +58,7 @@ Dev.Detect >STYA Args
sec
sbc #$10
tax
dey
bne .1
>LDYA L.MSG.DETECT.KO
@ -72,12 +69,6 @@ Dev.Detect >STYA Args
rts
.3 stx DEVSLOTx0
txa
lsr
lsr
lsr
lsr
tay
lda #A2osX.SLOTS.NET
sta A2osX.SLOTS,y
@ -188,12 +179,18 @@ READBLOCK.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
asl if odd, CS
lda L91C96.2.DATA,x get lo byte count
sbc #5 compute FRAMELEN
sta FRAMELEN
sbc #5 compute Size
sta Size
eor #$ff
sta Counter
tay
lda L91C96.2.DATA,x get hi byte count
sbc #0
sta FRAMELEN+1
sta Size+1
eor #$ff
sta Counter+1
eor #$ff
iny
bne .1
@ -212,26 +209,33 @@ READBLOCK.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
sty .8+3
sta .8+5
lda FRAMELEN
lda Size
sta (ZPTmpPTR)
ldy #1
lda FRAMELEN+1
lda Size+1
sta (ZPTmpPTR),y
iny
ldx DEVSLOTx0
.2 jsr DecFrameLen
.2 inc Counter
bne .21
inc Counter+1
beq .4
lda L91C96.2.DATA,x
.21 lda L91C96.2.DATA,x
sta (ZPTmpPTR),y
iny
bne .3
inc ZPTmpPTR+1
.3 jsr DecFrameLen
.3 inc Counter
bne .31
inc Counter+1
beq .4
lda L91C96.2.DATA,x
.31 lda L91C96.2.DATA,x
sta (ZPTmpPTR),y
iny
bne .2
@ -254,7 +258,11 @@ WRITEBLOCK >STYA ZPTmpPTR
sta L91C96.BSR,x
lda (ZPTmpPTR)
sta FRAMELEN
sta Size
eor #$ff
sta Counter
eor #$ff
clc
adc #6 3 WORDs more Status, len & Control
@ -263,7 +271,11 @@ WRITEBLOCK >STYA ZPTmpPTR
.10 ldy #1
lda (ZPTmpPTR),y
sta FRAMELEN+1
sta Size+1
eor #$ff
sta Counter+1
eor #$ff
adc #0
.1 ora #L91C96.2.MMUCR.ALLOC
@ -301,31 +313,35 @@ WRITEBLOCK >STYA ZPTmpPTR
stz L91C96.2.DATA,x write fake status word
stz L91C96.2.DATA,x
lda FRAMELEN
lda Size
pha
eor #$01
lsr
pla
adc #$05 add 5 if odd, 6 if even
sta L91C96.2.DATA,x
lda FRAMELEN+1
lda Size+1
adc #$00
sta L91C96.2.DATA,x
ldy #2
.5 jsr DecFrameLen
.5 inc Counter
bne .51
inc Counter+1
beq .70
lda (ZPTmpPTR),y
.51 lda (ZPTmpPTR),y
iny
bne .6
inc ZPTmpPTR+1
.6 pha
jsr DecFrameLen
.6 inc Counter
bne .61
inc Counter+1
beq .71
pla
sta L91C96.2.DATA,x
.61 sta L91C96.2.DATA,x
lda (ZPTmpPTR),y
sta L91C96.2.DATA,x
iny
@ -338,8 +354,7 @@ WRITEBLOCK >STYA ZPTmpPTR
sta L91C96.2.DATA,x
bra .8
.71 pla
sta L91C96.2.DATA,x
.71 sta L91C96.2.DATA,x
lda #%00100000 signal an extra (odd) byte
sta L91C96.2.DATA,x
@ -421,19 +436,9 @@ CLOSE ldx DEVSLOTx0
clc
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
DEVSLOTx0 .BS 1
USERMAC .BS 1
FRAMELEN .BS 2
*--------------------------------------
DEVSTAT .DA #0
.BS 3 size

View File

@ -182,14 +182,15 @@ READBLOCK.RTS rts
READBLOCK.RxOK >AR.SELECT S0.RX.RD
lda W5100.DR,x get the received ptr HI
sta offset+1
ldy W5100.DR,x get the received ptr LO
sty offset
and /RXTX.MASK
ora /RX.BASE
sta W5100.AR,x
sta offset+1
tya
sta W5100.AR+1,x
sta offset
ldy #0
@ -278,9 +279,6 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD
lda Offset+1
adc RXTX.Size+1
and /RXTX.MASK
ora /RX.BASE
sta W5100.DR,x write HI
pla
sta W5100.DR,x write LO

View File

@ -44,15 +44,9 @@ Dev.Detect >STYA ARGS
>SYSCALL CPrintFYA
ldx #$70
ldy #7
.1 txa IO based detection, avoid scanning in Disk Controller IO!!!!
lsr
lsr
lsr
lsr
tay
lda A2osX.SLOTS,y
.1 lda A2osX.SLOTS,y IO based detection, avoid scanning in Disk Controller IO!!!!
bne .2
lda /PP.ID
@ -73,6 +67,7 @@ Dev.Detect >STYA ARGS
sec
sbc #$10
tax
dey
bne .1
>LDYA L.MSG.DETECT.KO
@ -83,12 +78,6 @@ Dev.Detect >STYA ARGS
rts
.3 stx DEVSLOTx0
txa
lsr
lsr
lsr
lsr
tay
lda #A2osX.SLOTS.NET
sta A2osX.SLOTS,y

View File

@ -181,14 +181,15 @@ READBLOCK ldx DEVSLOTx0
READBLOCK.RxOK >AR.SELECT S0.RX.RD
lda W5100.DR,x get the received ptr HI
sta offset+1
ldy W5100.DR,x get the received ptr LO
sty offset
and /RXTX.MASK
ora /RX.BASE
sta W5100.AR,x
sta offset+1
tya
sta W5100.AR+1,x
sta offset
lda W5100.DR,x get RX.Size HI
sta RXTX.Size+1
@ -247,9 +248,6 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD
lda Offset+1
adc RXTX.Size+1
and /RXTX.MASK
ora /RX.BASE
sta W5100.DR,x write HI
pla
sta W5100.DR,x write LO

View File

@ -57,7 +57,7 @@ CS.INIT >SYSCALL GetArgC
lda #1 get PTR to ARG[1] (Driver name)
>SYSCALL GetArgA
>SYSCALL LoadDrvYA YA = PTR to ARG[1...n]
>SYSCALL LoadDrvYA YA = PTR to ARG[1...n]
bcs .99
lda #0 success, but....

View File

@ -52,7 +52,7 @@ K.GetMem >PULLB MemMgr.ReqFlags store requested flags
bcc .10
inx
.10 >STAX MemMgr.ReqSize
.10 >STAX MemMgr.ReqSize
>LDYAI MemMgr.Table
>STYA ZPMemMgrSPtr