0.9 : UTHERNET.DRV and related API & INC (wip)

This commit is contained in:
Rémy GIBERT 2017-01-12 23:04:44 +01:00
parent b081d3a3cd
commit fc27d27564
2 changed files with 65 additions and 40 deletions

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.SRC
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
@ -14,16 +14,6 @@ AUTO 6
.INB /A2OSX.DEV/INC/PRODOS.I
*--------------------------------------
ZPTmpPTR .EQ ZPDRV
*--------------------------------------
*S.DEVINFO.NET.FLAGS.ARPOFFLOAD .EQ %00000001
*S.DEVINFO.NET.FLAGS.IPOFFLOAD .EQ %00000010
*S.DEVINFO.NET.MAC .EQ 2
*S.DEVINFO.NET.STATUS .EQ 8
*S.DEVINFO.NET.STATUS.OK .EQ $80
*S.DEVINFO.NET.STATUS.FD .EQ $40
*S.DEVINFO.NET.STATUS.10 .EQ $01
*S.DEVINFO.NET.STATUS.100 .EQ $02
*S.DEVINFO.NET.STATUS.1000 .EQ $03
*--------------------------------------
.INB DRV/X.NET.8900A.S
*--------------------------------------
@ -51,8 +41,18 @@ Dev.Detect >STYA ARGS
>LDYA L.MSG.DETECT
>SYSCALL CPrintFYA
ldx #$10
.1 >LDYAI PP.ID
ldx #$70
.1 txa IO based detection, avoid scanning in Disk Controller IO!!!!
asl
asl
asl
asl
tay
lda A2osX.SLOTS,y
bne .2
>LDYAI PP.ID
>STYA PacketPagePTR,x
>LDYA PacketPageDATA,x
cpy #DEVID
@ -60,12 +60,11 @@ Dev.Detect >STYA ARGS
cmp /DEVID
beq .3
.2 inc DEV.HEADER.NAME+4
.2 dec DEV.HEADER.NAME+4
txa
clc
adc #$10
sec
sbc #$10
tax
cpx #$80
bne .1
>LDYA L.MSG.DETECT.KO
@ -77,6 +76,11 @@ Dev.Detect >STYA ARGS
.3 stx DEVSLOTx0
>LDYAI PP.ID+2 Get Revision# of ths chip...
>STYA PacketPagePTR,x
>LDYA PacketPageDATA,x
>STYA DEVSTAT+S.DEVSTAT.VERSION set Hardware version
>LDYA ARGS
>STYA ZPTmpPTR
lda (ZPTmpPTR)
@ -122,7 +126,7 @@ ARGS .BS 2
DEV.HEADER .DA DRV.CS.START
.DA #S.DEV.S.BLOCK+S.DEV.S.WRITE+S.DEV.S.READ
DEV.HEADER.NAME .DA #4
.AS "ETHx" NAME
.AS "ETH7" NAME
*--------------------------------------
* Driver Code
*--------------------------------------
@ -143,7 +147,7 @@ BADCALL lda #MLI.ERR.BADCALL
sec
rts
*--------------------------------------
STATUS lda #S.DEVINFO.NET.STATUS.10
STATUS lda #S.DEVSTAT.NET.STATUS.10
sta LINK.STATUS
ldx DEVSLOTx0
@ -154,7 +158,7 @@ STATUS lda #S.DEVINFO.NET.STATUS.10
and #PP.LineST.LinkOK
bne .1
lda LINK.STATUS
ora #S.DEVINFO.NET.STATUS.OK
ora #S.DEVSTAT.NET.STATUS.OK
sta LINK.STATUS
.1 >LDYAI PP.TestCTL
@ -163,7 +167,7 @@ STATUS lda #S.DEVINFO.NET.STATUS.10
and /PP.TestCTL.FDX
bne .2
lda LINK.STATUS
ora #S.DEVINFO.NET.STATUS.FD
ora #S.DEVSTAT.NET.STATUS.FD
sta LINK.STATUS
.2 >LDYA L.DEVSTAT
@ -368,9 +372,17 @@ DRV.CS.END
DEVSLOTx0 .BS 1
Size .BS 2
Counter .BS 2
DEVSTAT .BS S.DEVSTAT
MAC .BS 6
DEVSTAT .DA #S.DEV.S.BLOCK+S.DEV.S.WRITE+S.DEV.S.READ
.BS 3 size
>PSTR "Uthernet/CS8900A"
.DA #S.DEVSTAT.TYPE.NET
*--------------------------------------
.BS 1 Subtype
.BS 2 Version
*--------------------------------------
FLAGS .DA 0
LINK.STATUS .BS 1 OK/DUPLEX/SPEED
MAC .BS 6
MAN
SAVE DRV/UTHERNET.DRV.S
ASM

View File

@ -432,28 +432,41 @@ S.DEVSTAT.S.OPENED .EQ %00000001
S.DEVSTAT.SIZE .EQ 1 3 bytes
S.DEVSTAT.IDSTRING .EQ 4 1 (LEN) + 16 MAX
S.DEVSTAT.TYPE .EQ 21
* $00: Memory Expansion Card (RAM disk)
* $01: 3.5" disk
* $02: ProFile-type hard disk
* $03: Generic SCSI
* $04: ROM disk
* $05: SCSI CD-ROM
* $06: SCSI tape or other SCSI sequential device
* $07: SCSI hard disk
* $08: Reserved
* $09: SCSI printer
* $0A: 5-1/4" disk
* $0B: Reserved
* $0C: Reserved
* $0D: Printer
* $0E: Clock
* $0F: Modem
S.DEVSTAT.TYPE.RAM .EQ $00 Memory Expansion Card (RAM disk)
S.DEVSTAT.TYPE.3.5 .EQ $01 3.5" disk
S.DEVSTAT.TYPE.PROFILE .EQ $02 ProFile-type hard disk
S.DEVSTAT.TYPE.GENSCSI .EQ $03 Generic SCSI
S.DEVSTAT.TYPE.ROM .EQ $04 ROM disk
S.DEVSTAT.TYPE.CDROM .EQ $05 SCSI CD-ROM
S.DEVSTAT.TYPE.TAPE .EQ $06 SCSI tape or other SCSI sequential device
S.DEVSTAT.TYPE.HD .EQ $07 SCSI hard disk
* .EQ $08 Reserved
S.DEVSTAT.TYPE.SPRINTER .EQ $09 SCSI printer
S.DEVSTAT.TYPE.5.25 .EQ $0A 5-1/4" disk
* .EQ $0B Reserved
* .EQ $0C Reserved
S.DEVSTAT.TYPE.PRINTER .EQ $0D Printer
S.DEVSTAT.TYPE.CLOCK .EQ $0E Clock
S.DEVSTAT.TYPE.MODEM .EQ $0F Modem
S.DEVSTAT.TYPE.NET .EQ $10 Network board
S.DEVSTAT.SUBTYPE .EQ 22
S.DEVSTAT.SUBTYPE.EXT .EQ $80
S.DEVSTAT.SUBTYPE.DSKSW .EQ $40
S.DEVSTAT.SUBTYPE.NOREM .EQ $20
S.DEVSTAT.VERSION .EQ 23
S.DEVSTAT .EQ 25
S.DEVSTAT .EQ 25
*--------------------------------------
S.DEVSTAT.NET.FLAGS .EQ 25
S.DEVSTAT.NET.FLAGS.ARPOFFLOAD .EQ %00000001
S.DEVSTAT.NET.FLAGS.IPOFFLOAD .EQ %00000010
S.DEVSTAT.NET.STATUS .EQ 26
S.DEVSTAT.NET.STATUS.OK .EQ $80
S.DEVSTAT.NET.STATUS.FD .EQ $40
S.DEVSTAT.NET.STATUS.10 .EQ $01
S.DEVSTAT.NET.STATUS.100 .EQ $02
S.DEVSTAT.NET.STATUS.1000 .EQ $03
S.DEVSTAT.NET.MAC .EQ 27
S.DEVSTAT.NET .EQ 33
*--------------------------------------
* PS STRUCT
*--------------------------------------