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

View File

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

View File

@ -182,14 +182,15 @@ 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
sta offset+1
ldy W5100.DR,x get the received ptr LO ldy W5100.DR,x get the received ptr LO
sty offset
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
@ -278,9 +279,6 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD
lda Offset+1 lda Offset+1
adc RXTX.Size+1 adc RXTX.Size+1
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

View File

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

View File

@ -181,14 +181,15 @@ READBLOCK ldx DEVSLOTx0
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
sta offset+1
ldy W5100.DR,x get the received ptr LO ldy W5100.DR,x get the received ptr LO
sty offset
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 RXTX.Size+1 sta RXTX.Size+1
@ -247,9 +248,6 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD
lda Offset+1 lda Offset+1
adc RXTX.Size+1 adc RXTX.Size+1
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

View File

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

View File

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