From fc27d27564651abea0f2e41d773e6df698c3be94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 12 Jan 2017 23:04:44 +0100 Subject: [PATCH] 0.9 : UTHERNET.DRV and related API & INC (wip) --- DRV/UTHERNET.DRV.S.txt | 58 +++++++++++++++++++++++++----------------- INC/A2osX.I.txt | 47 +++++++++++++++++++++------------- 2 files changed, 65 insertions(+), 40 deletions(-) diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index f4d9d462..59f4d674 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -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 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 8ed2d344..36a5aa62 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -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 *--------------------------------------