Kernel version 0.9 : Many bugfix in NIC drivers, ATLK massages at load time to help debugging

This commit is contained in:
Rémy GIBERT 2017-04-17 21:36:00 +02:00
parent 1a57cc4352
commit 9e853cd049
10 changed files with 181 additions and 174 deletions

View File

@ -16,9 +16,9 @@ STARTPROC GETTY COM2 ${A2OSX}SBIN/LOGIN
#INSDRV PIC.DRV
# Network Section
INSDRV UTHERNET.DRV 000E3A123456
#INSDRV UTHERNET2.DRV 0008DC123456
INSDRV UTHERNET2.DRV 0008DC123456
#INSDRV UTHER2.AI.DRV 0008DC123456
#INSDRV LANCEGS.DRV
INSDRV LANCEGS.DRV
STARTPROC TCPIP
STARTPROC DHCPCLNT
STARTPROC TELNETD

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
@ -10,11 +10,12 @@ AUTO 6
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/MLI.ERR.I
.INB /A2OSX.BUILD/INC/NET.I
.INB /A2OSX.BUILD/INC/NET.91C96.I
.INB /A2OSX.BUILD/INC/LIBTCPIP.I
*--------------------------------------
ZPTmpPTR .EQ ZPDRV
*--------------------------------------
.INB DRV/X.NET.91C96.S
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -40,27 +41,46 @@ Dev.Detect >STYA Args
>LDYA L.MSG.DETECT
>SYSCALL CPrintFYA
ldx #$10
.1 lda L91C96.BSR+1,x
ldx #$70
.1 txa IO based detection, avoid scanning in Disk Controller IO!!!!
lsr
lsr
lsr
lsr
tay
lda A2osX.SLOTS,y
bne .2
lda L91C96.BSR+1,x
cmp #DEVID
beq .3
inc DEV.HEADER.NAME+4
.2 dec DEV.HEADER.NAME+4
txa
clc
adc #$10
sec
sbc #$10
tax
bpl .1 not yat at $80
bne .1
>LDYA L.MSG.DETECT.KO
>SYSCALL CPrintFYA
lda #DEVMGR.ERRNOHW Not Found in any slot, exiting
lda #MLI.ERR.NODEV
sec
rts
.3 stx DEVSLOTx0
txa
lsr
lsr
lsr
lsr
tay
lda #A2osX.SLOTS.NET
sta A2osX.SLOTS,y
>LDYA ARGS
>STYA ZPTmpPTR
lda (ZPTmpPTR)
@ -82,108 +102,79 @@ Dev.Detect >STYA Args
clc
rts
*--------------------------------------
.INB DRV/X.NET.DRV.S
.INB /A2OSX.SRC/DRV/X.NET.DRV.S
*--------------------------------------
CS.END
MSG.DETECT >CSTR "LanCeGS/SMSC91C96 Driver.\n"
MSG.DETECT.OK >CSTR "LanCeGS/SMSC91C96 Installed As Device : %S\n"
MSG.DETECT.KO >CSTR "Hardware Not Found.\n"
MSG.DETECT >CSTR "LanCeGS/SMSC91C96 Driver.\r\n"
MSG.DETECT.OK >CSTR "LanCeGS/SMSC91C96 Installed As Device : %S\r\n"
MSG.DETECT.KO >CSTR "Hardware Not Found.\r\n"
Args .BS 2
*--------------------------------------
* Device Header (16 Bytes)
*--------------------------------------
DEV.HEADER cld
jmp (DRV.CS.START,x)
.DA #S.DEV.F.SHARE+S.DEV.F.EVENT
DEV.HEADER.NAME >PSTR "ETH1" NAME
.HS 00.00
.HS 00.00.00.00
.DA #0
.BS 6
DEV.HEADER.NAME >PSTR "ETH7"
*--------------------------------------
* Driver Code
*--------------------------------------
DRV.CS.START .DA OPEN
.DA GETEVENT
.DA $FFFF no COUT
DRV.CS.START .DA STATUS
.DA READBLOCK
.DA WRITEBLOCK
.DA BADCALL
.DA BADCALL
.DA BADCALL
.DA OPEN
.DA CLOSE
.DA GETINFO
.DA $FFFF no IRQ
.DA SEND
.DA $FFFF no SETIPCFG
L.DEVINFO .DA DEVINFO
.DA BADCALL
.DA BADCALL
L.DEVSTAT .DA DEVSTAT
.DA 0 end or relocation
*--------------------------------------
* input :
* none
* output :
* CC on success
* CS on error
*--------------------------------------
OPEN jsr Reset will select L91C96.0
BADCALL lda #MLI.ERR.BADCALL
sec
rts
*--------------------------------------
STATUS lda #S.DEVSTAT.NET.STATUS.10
sta LINK.STATUS
lda #L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA
sta L91C96.0.TCR,x
lda /L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA
sta L91C96.0.TCR+1,x
lda #L91C96.0.RCR.NOCRC+L91C96.0.RCR.RXENA+L91C96.0.RCR.ALLMUL
sta L91C96.0.RCR,x
lda /L91C96.0.RCR.NOCRC+L91C96.0.RCR.RXENA+L91C96.0.RCR.ALLMUL
sta L91C96.0.RCR+1,x
lda #1
sta L91C96.BSR,x
lda #L91C96.1.CR.NOWAIT
sta L91C96.1.CR,x
lda /L91C96.1.CR.NOWAIT
sta L91C96.1.CR+1,x
ldx DEVSLOTx0
ldy #0
bit USERMAC
bmi .2
stz L91C96.BSR,x
lda L91C96.0.EPHSR,x
lda L91C96.0.EPHSR+1,x
and /L91C96.0.EPHSR.LINK
beq .1
lda LINK.STATUS
ora #S.DEVSTAT.NET.STATUS.OK
sta LINK.STATUS
.1 lda L91C96.1.IAR,x
sta MAC,y
inx
iny
cpy #6
bne .1
bra .3
.2 lda MAC,y
sta L91C96.1.IAR,x
inx
iny
cpy #6
.1 lda L91C96.0.TCR,x
lda L91C96.0.TCR+1,x
and /L91C96.0.TCR.FDSE
bne .2
lda LINK.STATUS
ora #S.DEVSTAT.NET.STATUS.FD
sta LINK.STATUS
.3 ldx DEVSLOTx0
lda #L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL
sta L91C96.1.CTR,x
lda /L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL
sta L91C96.1.CTR+1,x
.2 >LDYA L.DEVSTAT
clc
rts
*--------------------------------------
* input :
* pEvent
* output :
* CC no event
* CS event
*--------------------------------------
GETEVENT ldx DEVSLOTx0
READBLOCK ldx DEVSLOTx0
lda #2
sta L91C96.BSR,x
lda L91C96.2.IST,x
and #L91C96.2.IST.RCV
bne GETEVENT.RxOK
bne READBLOCK.RxOK
lda #ERR.DEV.NOFRAME
sec
rts
GETEVENT.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
READBLOCK.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
sta L91C96.2.PTR,x
lda /L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
sta L91C96.2.PTR+1,x
@ -191,10 +182,7 @@ GETEVENT.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
lda L91C96.2.DATA,x Get Frame Status Word (lo)
lda L91C96.2.DATA,x Get Frame Status Word (HI)
asl #$60 = Broadcast?
ldy #S.EVT.DATAHI
sta (pEvent),y
asl
asl
asl #$10 = odd?
asl if odd, CS
@ -209,21 +197,20 @@ GETEVENT.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
iny
bne .1
inc
.1 iny
bne .11
inc
.11 >PUSHYA FRAMLEN+2
>PUSHBI 0
>SYSCALL GetMem
bcs .99
>STYA ZPTmpPTR
txa
ldy #S.EVT.DATALO
sta (pEvent),y
lda #S.EVT.F.NET+S.EVT.F.hMEM1
sta (pEvent)
stx .8+1
sty .8+3
sta .8+5
lda FRAMELEN
sta (ZPTmpPTR)
@ -236,14 +223,14 @@ GETEVENT.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
ldx DEVSLOTx0
.2 jsr DecFrameLen
beq .8
beq .4
lda L91C96.2.DATA,x
sta (ZPTmpPTR),y
iny
bne .3
inc ZPTmpPTR+1
.3 jsr DecFrameLen
beq .8
beq .4
lda L91C96.2.DATA,x
sta (ZPTmpPTR),y
iny
@ -251,58 +238,16 @@ GETEVENT.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
inc ZPTmpPTR+1
bra .2
.8 lda #L91C96.2.MMUCR.REMREL
.4 lda #L91C96.2.MMUCR.REMREL
sta L91C96.2.MMUCR,x
clc
rts
.99 sec
rts
*--------------------------------------
CLOSE jsr Reset
.8 ldx #$ff hMem
ldy #$ff PtrLO
lda #$ff PtrHI
clc
rts
.99 rts
*--------------------------------------
* in:
* out:
* Y,A = BUFFER PTR
* CC on success
* CS on error
*--------------------------------------
GETINFO lda #S.DEVINFO.NET.STATUS.10
sta LINK.STATUS
ldx DEVSLOTx0
stz L91C96.BSR,x
lda L91C96.0.EPHSR,x
lda L91C96.0.EPHSR+1,x
and /L91C96.0.EPHSR.LINK
beq .1
lda LINK.STATUS
ora #S.DEVINFO.NET.STATUS.OK
sta LINK.STATUS
.1 lda L91C96.0.TCR,x
lda L91C96.0.TCR+1,x
and /L91C96.0.TCR.FDSE
bne .2
lda LINK.STATUS
ora #S.DEVINFO.NET.STATUS.FD
sta LINK.STATUS
.2 >LDYA L.DEVINFO
clc
rts
*--------------------------------------
* in:
* PULLW = FRAME PTR
* PULLW = FRAME LEN
* out:
* CC on success
* CS on error
*--------------------------------------
SEND >PULLW ZPTmpPTR
WRITEBLOCK >STYA ZPTmpPTR
ldx DEVSLOTx0
lda #2
@ -406,9 +351,55 @@ SEND >PULLW ZPTmpPTR
.9 sec
rts
*--------------------------------------
* PRIVATE
OPEN jsr CLOSE
lda #L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA
sta L91C96.0.TCR,x
lda /L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA
sta L91C96.0.TCR+1,x
lda #L91C96.0.RCR.NOCRC+L91C96.0.RCR.RXENA+L91C96.0.RCR.ALLMUL
sta L91C96.0.RCR,x
lda /L91C96.0.RCR.NOCRC+L91C96.0.RCR.RXENA+L91C96.0.RCR.ALLMUL
sta L91C96.0.RCR+1,x
lda #1
sta L91C96.BSR,x
lda #L91C96.1.CR.NOWAIT
sta L91C96.1.CR,x
lda /L91C96.1.CR.NOWAIT
sta L91C96.1.CR+1,x
ldy #0
bit USERMAC
bmi .2
.1 lda L91C96.1.IAR,x
sta MAC,y
inx
iny
cpy #6
bne .1
bra .3
.2 lda MAC,y
sta L91C96.1.IAR,x
inx
iny
cpy #6
bne .2
.3 ldx DEVSLOTx0
lda #L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL
sta L91C96.1.CTR,x
lda /L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL
sta L91C96.1.CTR+1,x
clc
rts
*--------------------------------------
Reset ldx DEVSLOTx0
CLOSE ldx DEVSLOTx0
stz L91C96.BSR,x
lda #L91C96.0.RCR.RESET
@ -426,6 +417,8 @@ Reset ldx DEVSLOTx0
stz L91C96.0.RCR,x
stz L91C96.0.RCR+1,x
clc
rts
*--------------------------------------
DecFrameLen lda FRAMELEN
@ -438,16 +431,22 @@ DecFrameLen lda FRAMELEN
.8 rts
*--------------------------------------
DRV.CS.END
*--------------------------------------
DEVSLOTx0 .BS 1
USERMAC .BS 1
FRAMELEN .BS 2
*--------------------------------------
DEVSTAT .DA #0
.BS 3 size
>PSTR "LanCEGS/L91C96"
.BS 1
.DA #S.DEVSTAT.TYPE.NET
.BS 1 Subtype
.BS 2 Version
*--------------------------------------
DEVINFO .DA #S.DEVINFO.TYPE.NET
DEVFLAGS .DA #0
MAC .BS 6
FLAGS .DA #0
LINK.STATUS .BS 1 OK/DUPLEX/SPEED
MAC .BS 6
*--------------------------------------
MAN
SAVE DRV/LANCEGS.DRV.S
SAVE /A2OSX.SRC/DRV/LANCEGS.DRV.S
ASM

View File

@ -36,7 +36,7 @@ L.DEV.HEADER.NAME .DA DEV.HEADER.NAME
*--------------------------------------
Dev.Detect >STYA ARGS
>LDYA L.MSG.DETECT
>SYSCALL PPrintFYA
>SYSCALL CPrintFYA
stz ZPTmpPtr1
lda #$C1
@ -63,7 +63,7 @@ Dev.Detect >STYA ARGS
bne .1
>LDYA L.MSG.DETECT.KO
>SYSCALL PPrintFYA
>SYSCALL CPrintFYA
lda #MLI.ERR.NODEV Not Found in any slot, exiting
sec
@ -86,7 +86,7 @@ Dev.Detect >STYA ARGS
>PUSHW L.DEV.HEADER.NAME
>LDYA L.MSG.DETECT.OK
>SYSCALL PPrintFYA
>SYSCALL CPrintFYA
clc
rts
*--------------------------------------
@ -94,9 +94,9 @@ CS.END
DEVSIG.Offset .HS 0507
DEVSIG.Value .HS 4848
DEVSIG.Length .EQ DEVSIG.Value-DEVSIG.Offset
MSG.DETECT >CSTR "Apple PIC (Parallel Interface Card).\n"
MSG.DETECT.OK >CSTR "PIC Installed As Device : %S\n"
MSG.DETECT.KO >CSTR "No PIC Found.\n"
MSG.DETECT >CSTR "Apple PIC (Parallel Interface Card).\r\n"
MSG.DETECT.OK >CSTR "PIC Installed As Device : %S\r\n"
MSG.DETECT.KO >CSTR "No PIC Found.\r\n"
ARGS .BS 2
*--------------------------------------
* Device Header (16 Bytes)

View File

@ -75,7 +75,7 @@ Dev.Detect >STYA Args
cmp #W5100.MR.AI+W5100.MR.IND
bne .2
>AR.SELECT RTR Double Check with RTR default value...
>AR.SELECT RTR
lda W5100.DR,x Get RTR HI
cmp /2000
@ -299,7 +299,7 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD
clc
rts
*--------------------------------------
WRITEBLOCK >PULLW ZPTmpPTR
WRITEBLOCK >STYA ZPTmpPTR
lda (ZPTmpPTR)
sec
@ -383,6 +383,8 @@ WRITEBLOCK.1 >AR.SELECT S0.DIPR
lda Offset+1
adc RXTX.Size+1
and /RXTX.MASK
ora /TX.BASE
sta W5100.DR,x write HI
pla
sta W5100.DR,x write LO
@ -507,11 +509,9 @@ DEVSTAT .DA #0
.DA #S.DEVSTAT.TYPE.NET
.BS 1 Subtype
.BS 2 Version
*--------------------------------------
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
MAC .BS 6
*--------------------------------------
MAN
SAVE /A2OSX.SRC/DRV/UTHER2.AI.DRV.S
ASM

View File

@ -74,7 +74,7 @@ Dev.Detect >STYA Args
cmp #W5100.MR.AI+W5100.MR.IND
bne .2
>AR.SELECT RTR Double Check with RTR default value...
>AR.SELECT RTR
lda W5100.DR,x Get RTR HI
cmp /2000
@ -153,7 +153,7 @@ DEV.HEADER cld
jmp (DRV.CS.START,x)
.DA #0
.BS 6
DEV.HEADER.NAME >PSTR "ETH7" NAME
DEV.HEADER.NAME >PSTR "ETH7"
*--------------------------------------
* Driver Code
*--------------------------------------
@ -187,7 +187,7 @@ READBLOCK ldx DEVSLOTx0
lda #ERR.DEV.NOFRAME
READBLOCK.Err sec
sec
rts
READBLOCK.RxOK >AR.SELECT S0.RX.RD
@ -217,7 +217,7 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD
* >PUSHYA Already pushed....
>PUSHBI 0
>SYSCALL GetMem
bcs READBLOCK.Err
bcs .99
>STYA ZPTmpPTR
stx .8+1
sty .8+3
@ -274,9 +274,9 @@ READBLOCK.RxOK >AR.SELECT S0.RX.RD
ldy #$ff PtrLO
lda #$ff PtrHI
clc
rts
.99 rts
*--------------------------------------
WRITEBLOCK >PULLW ZPTmpPTR
WRITEBLOCK >STYA ZPTmpPTR
lda (ZPTmpPTR)
sta RXTX.Size
@ -347,8 +347,8 @@ WRITEBLOCK.1 ldy #S.ETH.SRCMAC+5
lda Offset+1
adc RXTX.Size+1
* and /RXTX.MASK
* ora /TX.BASE
and /RXTX.MASK
ora /TX.BASE
sta W5100.DR,x write HI
pla
sta W5100.DR,x write LO

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -81,7 +81,7 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR.
| LOGIN | In Progress | no auth using /etc/passd yet | 0.9 |
| SHELL | Working | (See Internal Shell commands) | 0.9 |
| KCONFIG | Working | Kernel Configuration Utility | 0.9 |
| ---- | ------ | ------- | -----:|
| ---- | ------ | ------- | ----- |
| TCPIP | Working | Socket API.ARP,IP,ICMP,UDP & TCP ok | 0.9 |
| DHCPCLNT| Working | rewritten to use new Socket API | 0.9 |
| TELNETD | In Progress | | 0.9 |
@ -126,14 +126,14 @@ note : '$VAR' does NOT expand Variable
| Console.DRV | Working | ANSI support in Progress. | 0.9 |
| SSC.DRV | Working | Apple "Super Serial Card" Driver | 0.9 |
| SSC.I.DRV | Working | Apple "Super Serial Card" Driver (IRQ enabled) | 0.9 |
| PIC.DRV | In Progress | Apple "Parallel Interface Card" Driver, renamed from PPIC.DRV | 0.8 |
| PIC.DRV | In Progress | Apple "Parallel Interface Card" Driver, renamed from PPIC.DRV | 0.9 |
| Mouse.DRV | Working | Apple Mouse Card,//c Mouse Port | 0.9 |
| DHGR.DRV | In Progress | except bitblt... | 0.8 |
| ---- | ------ | ------- | ----- |
| LanCeGS.DRV | Working | | 0.9 |
| Uthernet.DRV | Working | | 0.9 |
| Uthernet2.DRV | Working | | 0.9 |
| Uther2.AI.DRV | In Progress | With ARP/IP Offloading | 0.8 |
| LanCeGS.DRV | Working | | 0.8 |
| Uther2.AI.DRV | In Progress | With ARP/IP Offloading | 0.9 |
## BIN,External Shell commands:
| Name | Status | Comment | K.Ver |

View File

@ -78,12 +78,18 @@ AT.INIT >LDAXI MSG.INIT
bmi .5
>STYA MLI+1
>LDAXI MSG.ATINIT
jsr PrintCStrAX
.5 jsr GO.WSCARD
.DA #MLIATALK
.DA MLIATALK.PARAMS
bcs .9
>LDAXI MSG.PRODOS
jsr PrintCStrAX
jsr MLI
.DA #MLIALLOCIRQ
.DA MLIALLOCIRQ.PARAMS
@ -116,9 +122,11 @@ GO.OLDMLI jmp $ffff
.INB /A2OSX.SRC/X.PRINTF.S
*--------------------------------------
MSG.INIT >CSTR "AppleTalk Driver For A2osX\n"
MSG.FAILED >CSTR "AppleTalk Workstation Card Failed Power Up Diagnostics : EC=%h.\n"
MSG.NOHW >CSTR "AppleTalk Workstation Card Not Found.\n"
MSG.HWOK >CSTR "AppleTalk Workstation Card Type #%d Found In Slot #%d.\n"
MSG.FAILED >CSTR "AppleTalk Workstation Card Failed Power Up Diagnostics : EC=%h.\n"
MSG.ATINIT >CSTR "Calling ATINIT..."
MSG.PRODOS >CSTR "Registering Into ProDOS..."
MSG.OK >CSTR "AppleTalk Driver Successfully Installed.\n"
MSG.KO >CSTR "AppleTalk Driver Install Failed : EC=%h.\n"
*--------------------------------------