diff --git a/DRV/PIC.DRV.S.txt b/DRV/PIC.DRV.S.txt index 79e5f187..741fded1 100644 --- a/DRV/PIC.DRV.S.txt +++ b/DRV/PIC.DRV.S.txt @@ -10,12 +10,10 @@ AUTO 6 *-------------------------------------- .INB /A2OSX.BUILD/INC/MACROS.I .INB /A2OSX.BUILD/INC/A2OSX.I + .INB /A2OSX.BUILD/INC/MLI.ERR.I *-------------------------------------- ZPTmpPtr1 .EQ ZPDRV *-------------------------------------- -SIG.05 .EQ $48 -SIG.07 .EQ $48 -*-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld @@ -36,38 +34,48 @@ L.MSG.DETECT.KO .DA MSG.DETECT.KO L.DEV.HEADER.NAME .DA DEV.HEADER.NAME .DA 0 End Of Reloc Table *-------------------------------------- -Dev.Detect >LDYA L.MSG.DETECT - >SYSCALL CPrintFYA +Dev.Detect >STYA ARGS + >LDYA L.MSG.DETECT + >SYSCALL PPrintFYA stz ZPTmpPtr1 lda #$C1 sta ZPTmpPtr1+1 -.1 ldy #5 - lda (ZPTmpPtr1),y - cmp #SIG.05 - bne .2 - ldy #7 - lda (ZPTmpPtr1),y - cmp #SIG.07 - beq .3 +.1 and #$0f + tay + lda A2osX.SLOTS,y + bne .3 -.2 inc ZPTmpPtr1+1 + ldx #DEVSIG.Length-1 + +.2 ldy DEVSIG.Offset,x + lda (ZPTmpPtr1),y + cmp DEVSIG.Value,x + bne .3 + dex + bpl .2 + bra .4 + +.3 inc ZPTmpPtr1+1 no match, try next slot.... lda ZPTmpPtr1+1 cmp #$C8 bne .1 - + >LDYA L.MSG.DETECT.KO - >SYSCALL CPrintFYA + >SYSCALL PPrintFYA - lda #DEVMGR.ERRNOHW Not Found in any slot, exiting + lda #MLI.ERR.NODEV Not Found in any slot, exiting sec rts - -.3 lda ZPTmpPtr1+1 - sta DEVSLOTCn + +.4 lda ZPTmpPtr1+1 and #$0F - sta DEVSLOT0n + pha + tay + lda #A2osX.SLOTS.COM + sta A2osX.SLOTS,y + pla ora #$30 sta DEV.HEADER.NAME+4 asl @@ -75,62 +83,82 @@ Dev.Detect >LDYA L.MSG.DETECT asl asl sta DEVSLOTn0 - + >PUSHW L.DEV.HEADER.NAME >LDYA L.MSG.DETECT.OK - >SYSCALL CPrintFYA + >SYSCALL PPrintFYA clc rts *-------------------------------------- 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" +ARGS .BS 2 *-------------------------------------- * Device Header (16 Bytes) *-------------------------------------- DEV.HEADER cld jmp (DRV.CS.START,x) - .DA #S.DEV.F.EVENT+S.DEV.F.COUT+S.DEV.F.CHAR -DEV.HEADER.NAME >PSTR "LPT1" NAME - .HS 00.00 - .HS 00.00.00.00 + .DA #S.DEV.S.WRITE + .BS 6 +DEV.HEADER.NAME >PSTR "LPT1" *-------------------------------------- * Driver Code *-------------------------------------- -DRV.CS.START .DA OPEN - .DA GETEVENT - .DA COUT +DRV.CS.START .DA STATUS + .DA BADCALL + .DA BADCALL + .DA BADCALL + .DA CONTROL + .DA BADCALL + .DA OPEN .DA CLOSE - .DA GETINFO - .DA IRQ -L.DEVINFO .DA DEVINFO + .DA BADCALL + .DA WRITE +L.STAT .DA STAT .DA 0 end or relocation *-------------------------------------- -OPEN clc - rts -*-------------------------------------- -GETEVENT lda #0 +BADCALL lda #MLI.ERR.BADCALL sec rts *-------------------------------------- -COUT clc +STATUS >LDYA L.STAT + clc rts *-------------------------------------- -CLOSE clc +CONTROL + clc rts *-------------------------------------- -GETINFO >LDYA L.DEVINFO -IRQ clc +OPEN + clc + rts +*-------------------------------------- +CLOSE + clc + rts +*-------------------------------------- +WRITE + clc rts *-------------------------------------- DRV.CS.END DEVSLOT0n .BS 1 DEVSLOTCn .BS 1 DEVSLOTn0 .BS 1 -DEVINFO .DA #S.DEVINFO.TYPE.CHAR +*-------------------------------------- +STAT .DA #S.DEVSTAT.S.WRITE + .DA #0,#0,#0 + >PSTR "Parallel Card" + .DA #0,#0,#0 + .DA #S.DEVSTAT.TYPE.CHAR .DA #0 + .DA $0900 *-------------------------------------- MAN -SAVE DRV/PIC.DRV.S +SAVE /A2OSX/SRC/DRV/PIC.DRV.S ASM diff --git a/DRV/UTHER2.AI.DRV.S.txt b/DRV/UTHER2.AI.DRV.S.txt index 7d628352..3ec66403 100644 --- a/DRV/UTHER2.AI.DRV.S.txt +++ b/DRV/UTHER2.AI.DRV.S.txt @@ -1,6 +1,6 @@ PR#3 PREFIX /A2OSX.BUILD -NEW +LOMEM $A00 INC 1 AUTO 6 .LIST OFF @@ -10,11 +10,16 @@ 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.W5100.I .INB /A2OSX.BUILD/INC/LIBTCPIP.I *-------------------------------------- ZPTmpPTR .EQ ZPDRV -*-------------------------------------- - .INB DRV/X.NET.W5100.S +RXTX.Size .EQ ZPDRV+2 +Counter .EQ ZPDRV+4 +Offset .EQ ZPDRV+6 +RX.IP .EQ ZPDRV+8 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -40,13 +45,32 @@ Dev.Detect >STYA Args >LDYA L.MSG.DETECT >SYSCALL CPrintFYA - ldx #$10+$88 -.1 lda #W5100.MR.RST + 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 #W5100.MR.RST sta W5100.MR,x + lda #0 + +.10 dec give some time.... + bne .10 + lda #W5100.MR.AI+W5100.MR.IND sta W5100.MR,x - + + pha + pla + lda W5100.MR,x cmp #W5100.MR.AI+W5100.MR.IND bne .2 @@ -60,21 +84,29 @@ Dev.Detect >STYA Args cmp #2000 beq .3 -.2 inc DEV.HEADER.NAME+4 +.2 dec DEV.HEADER.NAME+4 txa - clc - adc #$10 + sec + sbc #$10 tax - bcc .1 #$108 ? + bne .1 >LDYA L.MSG.DETECT.KO >SYSCALL CPrintFYA - lda #DEVMGR.ERRNOHW + lda #MLI.ERR.NODEV sec rts -.3 stx DEVSLOTx8 +.3 stx DEVSLOTx0 + txa + lsr + lsr + lsr + lsr + tay + lda #A2osX.SLOTS.NET + sta A2osX.SLOTS,y >LDYA ARGS >STYA ZPTmpPTR @@ -96,9 +128,7 @@ Dev.Detect >STYA Args sta MAC+5 bra .8 -.4 >SYSCALL GetMemPtrA - >STYA ZPTmpPTR - jsr DecodeMac +.4 jsr DecodeMac bcc .8 lda #DEVMGR.ERRICL sec @@ -110,90 +140,58 @@ 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 "UtherNet2/W5100 Driver (ARP OffLoad).\n" -MSG.DETECT.OK >CSTR "UtherNet2/W5100 Installed As Device : %S\n" -MSG.DETECT.KO >CSTR "Hardware Not Found.\n" +MSG.DETECT >CSTR "UtherNet2/W5100 Driver.\r\n" +MSG.DETECT.OK >CSTR "UtherNet2/W5100 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) - .HS 00 - .DA #S.DEV.F.SHARE+S.DEV.F.EVENT -DEV.HEADER.NAME >PSTR "ETH1" NAME - .HS 00 - .HS 00.00.00.00 + .DA #0 + .BS 6 +DEV.HEADER.NAME >PSTR "ETH7" NAME *-------------------------------------- * Driver Code *-------------------------------------- -DRV.CS.START .DA OPEN - .DA GETEVENT - .DA COUT +DRV.CS.START .DA STATUS + .DA READBLOCK + .DA WRITEBLOCK + .DA BADCALL + .DA CONTROL + .DA BADCALL + .DA OPEN .DA CLOSE - .DA GETINFO - .DA IRQ - .DA SEND - .DA SETIPCFG -L.DEVINFO .DA DEVINFO + .DA BADCALL + .DA BADCALL +L.DEVSTAT .DA DEVSTAT .DA 0 end or relocation *-------------------------------------- -OPEN jsr Reset - - lda #W5100.MR.AI+W5100.MR.IND - sta W5100.MR,x - - >AR.SELECT GAR - - ldy #8 GAR,SUBR - -.1 stz W5100.DR,x - dey - bne .1 - -* >AR.SELECT SHAR - - ldy #0 - -.2 lda MAC,y - sta W5100.DR,x - iny - cpy #6 - bne .2 - -* >AR.SELECT SIPR - - ldy #4 - -.3 stz W5100.DR,x - dey - bne .3 - - >AR.SELECT RMSR - lda #3 8k,0k,0k,0k - sta W5100.DR,x ...for Socket RX Buffers - sta W5100.DR,x ...for Socket TX Buffers - +BADCALL lda #MLI.ERR.BADCALL + sec + rts +*-------------------------------------- +STATUS >LDYA L.DEVSTAT clc rts *-------------------------------------- -GETEVENT ldx DEVSLOTx8 +READBLOCK ldx DEVSLOTx0 >AR.SELECT S0.RX.RSR lda W5100.DR,x get the received size HI ora W5100.DR,x LO - bne GETEVENT.RxOK + bne READBLOCK.RxOK lda #ERR.DEV.NOFRAME -COUT -IRQ -GETEVENT.Err sec + +READBLOCK.Err sec rts -GETEVENT.RxOK >AR.SELECT S0.RX.RD +READBLOCK.RxOK >AR.SELECT S0.RX.RD lda W5100.DR,x get the received ptr HI ldy W5100.DR,x get the received ptr LO and /RXTX.MASK @@ -203,6 +201,7 @@ GETEVENT.RxOK >AR.SELECT S0.RX.RD sta W5100.AR+1,x ldy #0 + .10 lda W5100.DR,x sta RX.IP,y iny @@ -224,14 +223,11 @@ GETEVENT.RxOK >AR.SELECT S0.RX.RD >PUSHYA >PUSHBI 0 >SYSCALL GetMem - bcs GETEVENT.Err + bcs READBLOCK.Err >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 RXTX.Size sta (ZPTmpPTR) @@ -262,14 +258,14 @@ GETEVENT.RxOK >AR.SELECT S0.RX.RD dex bpl .1 - ldx DEVSLOTx8 + ldx DEVSLOTx0 ldy #S.IP .2 inc Counter bne .3 inc Counter+1 - beq .8 + beq .4 .3 lda W5100.DR,x sta (ZPTmpPTR),y @@ -278,7 +274,7 @@ GETEVENT.RxOK >AR.SELECT S0.RX.RD inc ZPTmpPTR+1 bne .2 -.8 >AR.SELECT S0.RX.RD +.4 >AR.SELECT S0.RX.RD ldy W5100.DR,x Get HI lda W5100.DR,x Get LO clc @@ -294,38 +290,16 @@ GETEVENT.RxOK >AR.SELECT S0.RX.RD sta W5100.DR,x write LO >AR.SELECT S0.CR - lda #$40 RECV + lda #W5100.AR.S0.CR.RCVD sta W5100.DR,x - - ldy #S.IP.DST - lda (ZPTmpPTR),y - -.81 iny - and (ZPTmpPTR),y - cpy #S.IP.DST+3 - bne .81 if EQ, CS - - inc $ff = Broadcast ?? - beq .82 - clc not a broadcast - -.82 lda #$00 - ror - ldy #S.EVT.DATAHI - sta (pEvent),y - -* clc cleared by ROR - rts -*-------------------------------------- -CLOSE jsr Reset + +.8 ldx #$ff hMem + ldy #$ff PtrLO + lda #$ff PtrHI clc rts *-------------------------------------- -GETINFO >LDYA L.DEVINFO - clc - rts -*-------------------------------------- -SEND >PULLW ZPTmpPTR +WRITEBLOCK >PULLW ZPTmpPTR lda (ZPTmpPTR) sec @@ -341,20 +315,20 @@ SEND >PULLW ZPTmpPTR eor #$ff sta Counter+1 - ldx DEVSLOTx8 + ldx DEVSLOTx0 >AR.SELECT S0.TX.FSR lda W5100.DR,x get send size HI ldy W5100.DR,x LO cpy RXTX.Size sbc RXTX.Size+1 - bcs SEND.READY + bcs WRITEBLOCK.1 lda #ERR.DEV.NOBUFFER sec rts -SEND.READY >AR.SELECT S0.DIPR +WRITEBLOCK.1 >AR.SELECT S0.DIPR ldy #S.IP.DST .1 lda (ZPTmpPTR),y @@ -414,17 +388,55 @@ SEND.READY >AR.SELECT S0.DIPR sta W5100.DR,x write LO >AR.SELECT S0.CR - lda #$20 SEND + lda #W5100.AR.S0.CR.SEND sta W5100.DR,x clc rts *-------------------------------------- -SETIPCFG >STYA ZPTmpPTR +OPEN jsr CLOSE + + lda #W5100.MR.AI+W5100.MR.IND + sta W5100.MR,x + + >AR.SELECT GAR - ldx DEVSLOTx8 + ldy #8 GAR,SUBR + +.1 stz W5100.DR,x + dey + bne .1 + +* >AR.SELECT SHAR + + ldy #0 + +.2 lda MAC,y + sta W5100.DR,x + iny + cpy #6 + bne .2 + +* >AR.SELECT SIPR + + ldy #4 + +.3 stz W5100.DR,x + dey + bne .3 + + >AR.SELECT RMSR + lda #3 8k,0k,0k,0k + sta W5100.DR,x ...for Socket RX Buffers + sta W5100.DR,x ...for Socket TX Buffers + + bra CONTROL.OPEN +*-------------------------------------- +CONTROL >STYA ZPTmpPTR + + ldx DEVSLOTx0 >AR.SELECT S0.CR - lda #$10 CLOSE + lda #W5100.AR.S0.CR.CLOSE sta W5100.DR,x .10 >AR.SELECT S0.SR @@ -461,18 +473,18 @@ SETIPCFG >STYA ZPTmpPTR cpy #S.IPCFG.IP+4 bne .3 - >AR.SELECT S0.MR +CONTROL.OPEN >AR.SELECT S0.MR lda #W5100.AR.S0.MR.IPRAW+W5100.AR.S0.MR.MF sta W5100.DR,x -* >AR.SELECT S0.CR Implicit, next to S0.MR - lda #1 OPEN + >AR.SELECT S0.CR + lda #W5100.AR.S0.CR.OPEN sta W5100.DR,x clc rts *-------------------------------------- -Reset ldx DEVSLOTx8 +CLOSE ldx DEVSLOTx0 lda #W5100.MR.RST sta W5100.MR,x @@ -487,16 +499,19 @@ Reset ldx DEVSLOTx8 rts *-------------------------------------- DRV.CS.END -DEVSLOTx8 .BS 1 -RX.IP .BS 4 -RXTX.Size .BS 2 -Counter .BS 2 -Offset .BS 2 +DEVSLOTx0 .BS 1 *-------------------------------------- -DEVINFO .DA #S.DEVINFO.TYPE.NET -DEVFLAGS .DA #S.DEVINFO.NET.FLAGS.ARPOFFLOAD+S.DEVINFO.NET.FLAGS.IPOFFLOAD +DEVSTAT .DA #0 + .BS 3 size + >PSTR "UtherNetII/W5100" + .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 -LINK.STATUS .DA #S.DEVINFO.NET.STATUS.OK+S.DEVINFO.NET.STATUS.FD+S.DEVINFO.NET.STATUS.100 +*-------------------------------------- MAN -SAVE DRV/UTHER2.AI.DRV.S +SAVE /A2OSX.SRC/DRV/UTHER2.AI.DRV.S ASM diff --git a/DRV/UTHERNET2.DRV.S.txt b/DRV/UTHERNET2.DRV.S.txt index aa5e73c5..6ea90789 100644 --- a/DRV/UTHERNET2.DRV.S.txt +++ b/DRV/UTHERNET2.DRV.S.txt @@ -93,7 +93,7 @@ Dev.Detect >STYA Args >LDYA L.MSG.DETECT.KO >SYSCALL CPrintFYA - lda #$28 MLI.ERR.NODEV + lda #MLI.ERR.NODEV sec rts @@ -354,7 +354,7 @@ WRITEBLOCK.1 ldy #S.ETH.SRCMAC+5 sta W5100.DR,x write LO >AR.SELECT S0.CR - lda #$20 SEND + lda #W5100.AR.S0.CR.SEND sta W5100.DR,x clc diff --git a/Floppies/A2OSX.BOOT.po b/Floppies/A2OSX.BOOT.po index ff77a4d1..38336ce9 100644 Binary files a/Floppies/A2OSX.BOOT.po and b/Floppies/A2OSX.BOOT.po differ diff --git a/Floppies/A2OSX.BUILD.po b/Floppies/A2OSX.BUILD.po index 6958bda7..ee8323b2 100644 Binary files a/Floppies/A2OSX.BUILD.po and b/Floppies/A2OSX.BUILD.po differ diff --git a/Floppies/A2OSX.SRC.po b/Floppies/A2OSX.SRC.po index 92c92f8a..8ce349d4 100644 Binary files a/Floppies/A2OSX.SRC.po and b/Floppies/A2OSX.SRC.po differ