diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index 63a1ab3f..d35f43dc 100644 Binary files a/A2OSX.BOOT.po and b/A2OSX.BOOT.po differ diff --git a/A2OSX.DEV.po b/A2OSX.DEV.po index 3075f251..fd7fc9d3 100644 Binary files a/A2OSX.DEV.po and b/A2OSX.DEV.po differ diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index 6dfb7448..97573721 100644 Binary files a/A2OSX.SRC.po and b/A2OSX.SRC.po differ diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 38df7d44..4648af57 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -62,12 +62,12 @@ D.STACK.TOP .EQ $03F0 ...Down to $0300 *-------------------------------------- KrnBuf256 .EQ $0C00 Main *-------------------------------------- -MLICALL.PARAMS .EQ $0D00 Main, $12 bytes min !!!! -BLKCALL.PARAMS .EQ $0D20 Max 6 Bytes copied to/from $42->$47 before Firmware call -PRTCALL.PARAMS .EQ $D030 Max 8 bytes for smartport cmdnum $0->$9 -KrnSTAT .EQ $0D40 S.STAT = 64b +KrnOut256 .EQ $0D00 Used to return Values to User Space *-------------------------------------- -KrnOut256 .EQ $0E00 Used to return Values to User Space +MLICALL.PARAMS .EQ $0E00 Main, $12 bytes min for GetFileInfo +K.S.STAT .EQ MLICALL.PARAMS+$12 S.STAT for internal kernel operations (DIR,FIO) +K.S.DEVSTAT .EQ K.S.STAT+64 +K.S.PORTCALL .EQ K.S.DEVSTAT+9 *-------------------------------------- *** Z80 Reserved $0F00-10FF*** *-------------------------------------- @@ -103,8 +103,6 @@ DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC A2osX.SYSCALL .EQ $BD00 A2osX.LIBCALL .EQ $BD03 A2osX.MLICALL .EQ $BD06 -A2osX.BLKCALL .EQ $BD09 -A2osX.PRTCALL .EQ $BD0C *-------------------------------------- pCodeJmp .EQ $BD10 pLibJmp .EQ $BD13 diff --git a/SYS/KERNEL.S.D01.txt b/SYS/KERNEL.S.D01.txt index e71a5ef6..44349e11 100644 --- a/SYS/KERNEL.S.D01.txt +++ b/SYS/KERNEL.S.D01.txt @@ -4,6 +4,72 @@ LOMEM $A00 INC 1 AUTO 6 *-------------------------------------- +* Smartport Driver +*-------------------------------------- +A2osX.PrtDrv .DA A2osX.PrtDrv.S STATUS + .DA A2osX.PrtDrv.P BR + .DA A2osX.PrtDrv.P BW + .DA A2osX.PrtDrv.NP FORMAT + .DA A2osX.PrtDrv.P CONTROL + .DA A2osX.PrtDrv.NP INIT + .DA A2osX.PrtDrv.NP OPEN + .DA A2osX.PrtDrv.NP CLOSE + .DA A2osX.PrtDrv.P R + .DA A2osX.PrtDrv.P W +*-------------------------------------- +A2osX.PrtDrv.S jsr A2osX.PrtDrv.GetDev + >LDYAI K.S.DEVSTAT + >STYA K.S.PORTCALL+2 + lda #3 + sta K.S.PORTCALL+3 + jsr A2osX.PrtDrv.Go + bcs .9 + >LDYAI K.S.DEVSTAT +.9 rts +*-------------------------------------- +A2osX.PrtDrv.P jsr A2osX.PrtDrv.GetParam + bra A2osX.PrtDrv.Go +A2osX.PrtDrv.NP jsr A2osX.PrtDrv.GetDev +*-------------------------------------- +A2osX.PrtDrv.Go ldy #S.DEV.ROM.JMP + lda (pDev),y + sta .8+1 + iny + lda (pDev),y + sta .8+2 + +.8 jsr $ffff +A2osX.PrtDrv.Go.Cmd + .BS 1 + .DA K.S.PORTCALL + rts +*-------------------------------------- +A2osX.PrtDrv.GetParam + >STYA ZPDRV Get Ptr To ParamList + jsr A2osX.Blk.GetDev + + ldy #7 + +.1 lda (ZPDRV),y + sta K.S.PORTCALL+2,y + dey + bpl .1 + rts +*-------------------------------------- +A2osX.PrtDrv.GetDev + txa + asl + sta A2osX.PrtDrv.Go.Cmd + tax + lda A2osX.PrtDrv.Cnt,x + sta K.S.PORTCALL + ldy #S.DEV.DEVID + lda (pDev),y + sta K.S.PORTCALL+1 + rts +A2osX.PrtDrv.Cnt + .HS 03030301030101010404 +*-------------------------------------- DevMgr.NUL.Code .DA .1 STATUS .DA DevMgr.BADCALL READBLOCK .DA DevMgr.BADCALL WRITEBLOCK diff --git a/SYS/KERNEL.S.DIR.txt b/SYS/KERNEL.S.DIR.txt index 42428de0..b30de393 100644 --- a/SYS/KERNEL.S.DIR.txt +++ b/SYS/KERNEL.S.DIR.txt @@ -174,26 +174,26 @@ K.ReadDirA.ROOT ldy #S.NODE.DIR.FC did we already returned something ? lda #0 rol inc - sta KrnSTAT+S.STAT.P.DRIVE + sta K.S.STAT+S.STAT.P.DRIVE pla lsr CC lsr lsr lsr lsr - sta KrnSTAT+S.STAT.P.SLOT + sta K.S.STAT+S.STAT.P.SLOT >LDYAI KrnOut256 >STYA MLICALL.PARAMS+1 >MLICALL MLIGETFILEINFO - sta KrnSTAT+S.STAT.P.DEVSTATUS + sta K.S.STAT+S.STAT.P.DEVSTATUS bcs .80 >LDYA MLICALL.PARAMS+5 AUXTYPE=TOTAL BLOCKS - >STYA KrnSTAT+S.STAT.P.DEVBLOCKS + >STYA K.S.STAT+S.STAT.P.DEVBLOCKS >LDYA MLICALL.PARAMS+8 - >STYA KrnSTAT+S.STAT.BLOCKS + >STYA K.S.STAT+S.STAT.BLOCKS .80 jsr K.ReadDirA.ADDSTAT @@ -454,27 +454,27 @@ K.ReadDirA.ADD.. * ldy #$25 total_blocks * lda (ZPPtr3),y -* sta KrnSTAT+S.STAT.BLOCKS +* sta K.S.STAT+S.STAT.BLOCKS * iny * lda (ZPPtr3),y -* sta KrnSTAT+S.STAT.BLOCKS+1 +* sta K.S.STAT+S.STAT.BLOCKS+1 *-------------------------------------- K.ReadDirA.ADDD lda #$0F - sta KrnSTAT+S.STAT.P.TYPE + sta K.S.STAT+S.STAT.P.TYPE lda /S.STAT.MODE.DIR - sta KrnSTAT+S.STAT.MODE+1 + sta K.S.STAT+S.STAT.MODE+1 bra K.ReadDirA.AddAccess *-------------------------------------- K.ReadDirA.ADDF lda /S.STAT.MODE.REG - sta KrnSTAT+S.STAT.MODE+1 + sta K.S.STAT+S.STAT.MODE+1 ldx #ADDF.DST-ADDF.SRC .1 ldy ADDF.SRC-1,x lda (ZPPtr3),y ldy ADDF.DST-1,x - sta KrnSTAT,y + sta K.S.STAT,y dex bpl .1 *-------------------------------------- @@ -494,21 +494,21 @@ K.ReadDirA.AddAccess .HS 89 bit imm to skip txa .3 txa - sta KrnSTAT+S.STAT.MODE + sta K.S.STAT+S.STAT.MODE *-------------------------------------- K.ReadDirA.AddTime - >PUSHWI KrnSTAT+S.STAT.CTIME + >PUSHWI K.S.STAT+S.STAT.CTIME lda #$18 creation Date/time jsr K.ReadDirA.ConvertTime - >PUSHWI KrnSTAT+S.STAT.MTIME + >PUSHWI K.S.STAT+S.STAT.MTIME lda #$21 mod Date/time jsr K.ReadDirA.ConvertTime *-------------------------------------- K.ReadDirA.AddStat ldy #S.STAT-1 -.1 lda KrnSTAT,y +.1 lda K.S.STAT,y sta (ZPPtr4),y dey bpl .1 @@ -524,7 +524,7 @@ K.ReadDirA.AddStat K.ReadDirA.ClrStat ldx #S.STAT-1 -.1 stz KrnSTAT,x +.1 stz K.S.STAT,x dex bpl .1 rts diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index 85c1e6ae..40f469ef 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -59,7 +59,7 @@ K.FileSearch >PULLW ZPPtr4 ZPPtr1 trashed by ExpandPStrYA stx KrnBuf256 set string length - >PUSHWI KrnSTAT + >PUSHWI K.S.STAT >PUSHWI KrnBuf256 jsr K.STAT bcs .1 Failed...retry next path... diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index 2f9230e9..535e5d43 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -114,7 +114,7 @@ A2osX.DIIDrv.S >LDYAI A2osx.DIIStat clc rts *-------------------------------------- -A2osX.DIIDrv.RW jsr A2osX.Prt2Blk +A2osX.DIIDrv.RW jsr A2osX.Blk.GetParam jsr GO.ProDOS jsr $D000 @@ -144,31 +144,30 @@ A2osX.BlkDrv .DA A2osX.BlkDrv.S status .DA A2osX.DRV.BadCall .DA A2osX.DRV.BadCall *-------------------------------------- -A2osX.BlkDrv.S jsr A2osX.Prt2Blk.NoParam +A2osX.BlkDrv.S jsr A2osX.Blk.GetDev jsr A2osX.BlkDrv.Go bcs * stx A2osx.BlkStat+S.DEVSTAT.SIZE sty A2osx.BlkStat+S.DEVSTAT.SIZE+1 - >LDYAI A2osx.BlkStat + >LDYAI A2osX.BlkStat clc rts *-------------------------------------- -A2osX.BlkDrv.RW jsr A2osX.Prt2Blk +A2osX.BlkDrv.RW jsr A2osX.Blk.GetParam bra A2osX.BlkDrv.Go *-------------------------------------- -A2osX.BlkDrv.F jsr A2osX.Prt2Blk.NoParam +A2osX.BlkDrv.F jsr A2osX.Blk.GetDev A2osX.BlkDrv.Go ldy #S.DEV.ROM.JMP lda (pDev),y sta .8+1 iny lda (pDev),y sta .8+2 - .8 jmp $ffff *-------------------------------------- -A2osx.BlkStat .DA #S.DEVSTAT.S.BLOCK+S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ +A2osX.BlkStat .DA #S.DEVSTAT.S.BLOCK+S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ .BS 3 >PSTR "Generic Blk Dev" .BS 1 @@ -176,18 +175,19 @@ A2osx.BlkStat .DA #S.DEVSTAT.S.BLOCK+S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ .DA #0 .DA #0,#9 *-------------------------------------- -A2osX.Prt2Blk >STYA ZPDRV Get Ptr To ParamList - jsr A2osX.Prt2Blk.NoParam +A2osX.Blk.GetParam + >STYA ZPDRV Get Ptr To ParamList + jsr A2osX.Blk.GetDev ldy #3 .1 lda (ZPDRV),y - sta ($44),y + sta $44,y dey bpl .1 rts - -A2osX.Prt2Blk.NoParam +*-------------------------------------- +A2osX.Blk.GetDev txa asl sta $42 CMD @@ -211,23 +211,6 @@ A2osX.Prt2Blk.NoParam rts *-------------------------------------- -* Smartport -*-------------------------------------- -*A2osX.PrtDrv >STYA .1+1 -* txa -* beq STATUS -* lsr -* sta .2 -* tax -* lda A2osX.PRTCALL.Cnt,x -* sta PRTCALL.PARAMS -*.1 jsr $ffff -*.2 .BS 1 CMD -* .DA PRTCALL.PARAMS -* rts -*A2osX.PRTCALL.Cnt -* .HS 03030301030101010404 -*-------------------------------------- A2osX.DRV.BadCall lda #MLI.ERR.BADCALL sec diff --git a/SYS/KERNEL.S.INIT3.txt b/SYS/KERNEL.S.INIT3.txt index 7b80a496..8c3889af 100644 --- a/SYS/KERNEL.S.INIT3.txt +++ b/SYS/KERNEL.S.INIT3.txt @@ -134,16 +134,14 @@ DevMgr.NUL cld jmp (DevMgr.NUL.Code,x) .DA #S.DEV.S.WRITE+S.DEV.S.READ+S.DEV.S.OPENED .BS 6 - .DA #3 - .AS "NUL" NAME + >PSTR "NUL" NAME .HS 00 NAME must Be 4 bytes long *-------------------------------------- DevMgr.SYS cld jmp (DevMgr.SYS.Code,x) .DA #S.DEV.S.WRITE+S.DEV.S.READ .BS 6 - .DA #3 - .AS "SYS" NAME + >PSTR "SYS" NAME .HS 00 NAME must Be 4 bytes long *-------------------------------------- * Setup AuxLC $FFFE->Kernel IRQ Handler @@ -263,30 +261,31 @@ DevMgrInit stz ZPPtr1 .2 ldy SmartPort.OFS,x Check if there is a smartport firmware lda (ZPPtr1),y cmp SmartPort.SIG,x - bne .3 not a smartport... + bne .8 not a Disk Controller... dex bpl .2 -*SmartPort!!! - jsr DevMgrInit.SP - ldy #A2osX.SLOTS.SP - bra .7 -* Disk II, or Block device ? -.3 dex if x=0, only first SIG byte failed - bpl .8 - + ldy #$ff lda (ZPPtr1),y - bne .4 $0, Disk II, 16sect - + bne .3 $0, Disk II, 16sect + jsr DevMgrInit.DII ldy #A2osX.SLOTS.DII bra .7 - -.4 inc - beq .7 $ff, Disk II, 13sect, ignore + +.3 inc + beq .7 $ff, Disk II 13 Sect, ingnore dec -* Block device - jsr DevMgrInit.BLK + + ldy #7 + lda (ZPPtr1),y + bne .4 $Cn07=00 : smartport + + jsr DevMgrInit.SP + ldy #A2osX.SLOTS.SP + bra .7 + +.4 jsr DevMgrInit.BLK ldy #A2osX.SLOTS.BLK .7 lda ZPPtr1+1 @@ -342,26 +341,24 @@ DevMgrInit.SP ldy #$ff .DA #0 Status .DA SP.CTRL.STATUS bcs .9 - lda SP.STATUS1 + lda SP.CTRL.STATUS.DATA beq .9 no device .2 lda #'1' - sta DEV.HEADER+S.DEV.NAME+2 SxD1 + sta DEV.HEADER+S.DEV.DEVID + sta SP.DEV.STATUS.DEVID .3 jsr $ffff Self Modified .DA #0 Status - .DA DEV.HEADER+S.DEV.S + .DA SP.DEV.STATUS bcs .7 - lda SP.STATUS2+S.DEVSTAT.S + lda SP.DEV.STATUS.DATA+S.DEVSTAT.S sta DEV.HEADER+S.DEV.S + jsr DevMgrInit.AddDev - - - - -.7 inc DEV.HEADER+7 - dec SP.STATUS1 +.7 inc DEV.HEADER+S.DEV.DEVID + dec SP.CTRL.STATUS.DATA bne .3 .9 rts @@ -407,19 +404,22 @@ DEV.HEADER clc .BS 1 >PSTR "S1D1" 5 bytes *-------------------------------------- -SmartPort.OFS .HS 07010305 -SmartPort.SIG .HS 00200003 +SmartPort.OFS .HS 010305 +SmartPort.SIG .HS 200003 *-------------------------------------- SP.CTRL.STATUS .DA #3 .DA #0 - .DA SP.STATUS1 - .DA #0 return S only + .DA SP.CTRL.STATUS.DATA + .DA #0 +SP.CTRL.STATUS.DATA + .BS 8 DevCnt SP.DEV.STATUS .DA #3 +SP.DEV.STATUS.DEVID .BS 1 - .DA SP.STATUS2 + .DA SP.DEV.STATUS.DATA .DA #3 return DIB -SP.STATUS1 .BS 4 -SP.STATUS2 .BS S.DEVSTAT +SP.DEV.STATUS.DATA + .BS S.DEVSTAT *-------------------------------------- EvtMgrInit lda #$A5 sta A2osX.TIMER16