diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index ae9735b4..7dac558f 100644 Binary files a/A2OSX.BOOT.po and b/A2OSX.BOOT.po differ diff --git a/A2OSX.DEV.po b/A2OSX.DEV.po index 5dbbc45a..564afb00 100644 Binary files a/A2OSX.DEV.po and b/A2OSX.DEV.po differ diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index f05671dc..e6d57f56 100644 Binary files a/A2OSX.SRC.po and b/A2OSX.SRC.po differ diff --git a/A2osX.S.QC.txt b/A2osX.S.QC.txt index 3a67155a..d3e30125 100644 --- a/A2osX.S.QC.txt +++ b/A2osX.S.QC.txt @@ -40,7 +40,7 @@ A2osX.QC.Start1 sei bpl .1 lda #$CF protect zero page, stack and page 1 sta MEMTABL - lda #$03 + lda #$07 sta MEMTABL+$17 protect ProDOS & A2osX global page lda #$8C Reset 80 col screen ($0C=FF=HOME) @@ -49,12 +49,6 @@ A2osX.QC.Start1 sei >LDAXI MSG.INIT1 jsr A2osX.QC.PrintAX - ldx #0 -.2 lda $1200,x Setup Global Page - sta $BE00,x - inx - bne .2 - .3 jsr MLI .DA #MLISETPREFIX .DA MLISETPREFIX00 diff --git a/A2osX.S.txt b/A2osX.S.txt index d83fe3d0..b0202d33 100644 --- a/A2osX.S.txt +++ b/A2osX.S.txt @@ -169,10 +169,10 @@ A2osX.MLIQuit >LDAXI MSG.INIT0OK DisableRamDRV php sei lda DEVPTRS3D2 - cmp DEVPTRS0D1 + cmp DEVPTRS S0D1=NOVEV bne .1 lda DEVPTRS3D2+1 - cmp DEVPTRS0D1+1 + cmp DEVPTRS+1 S0D1=NODEV beq .9 S3D2=NODEV, nothing to do .1 ldx DEVCNT @@ -203,9 +203,9 @@ DisableRamDRV php stz DEVLST,x dec DEVCNT - lda DEVPTRS0D1 + lda DEVPTRS sta DEVPTRS3D2 - lda DEVPTRS0D1+1 + lda DEVPTRS+1 sta DEVPTRS3D2+1 plp diff --git a/BIN/DEVDUMP.S.txt b/BIN/DEVDUMP.S.txt index 0073a9be..ee6cca4d 100644 --- a/BIN/DEVDUMP.S.txt +++ b/BIN/DEVDUMP.S.txt @@ -33,6 +33,7 @@ CS.START cld .DA CS.RUN .DA CS.DOEVENT .DA CS.QUIT +L.MSG0 .DA MSG0 .DA 0 *-------------------------------------- CS.INIT >SYSCALL GetArgC @@ -89,16 +90,12 @@ CS.DOEVENT ldy #S.EVT.hDEV ldy #S.EVT.DATALO lda (pEvent),y - pha - >SYSCALL HexOutA - lda #'(' - >SYSCALL COutA - pla - cmp #$20 - bcc .1 - >SYSCALL COutA -.1 lda #')' - >SYSCALL COutA + >PUSHA + >PUSHA + + >LDYA L.MSG0 + >SYSCALL CPrintFYA + clc rts @@ -111,6 +108,8 @@ CS.QUIT ldx #DEVMGR.CLOSE rts *-------------------------------------- CS.END +MSG0 >CSTR "[%h]" +*-------------------------------------- .DUMMY .OR 0 DS.START diff --git a/BIN/DNSINFO.S.txt b/BIN/DNSINFO.S.txt index 5753165c..94197a44 100644 --- a/BIN/DNSINFO.S.txt +++ b/BIN/DNSINFO.S.txt @@ -8,9 +8,9 @@ AUTO 6 .OR $2000 .TF /A2OSX.BOOT/BIN/DNSINFO *-------------------------------------- - .INB INC/MACROS.I - .INB INC/A2OSX.I - .INB INC/LIBTCPIP.I + .INB /A2OSX.DEV/INC/MACROS.I + .INB /A2OSX.DEV/INC/A2OSX.I + .INB /A2OSX.DEV/INC/LIBTCPIP.I *-------------------------------------- ZPPTR1 .EQ ZPBIN ZPPTR2 .EQ ZPBIN+2 diff --git a/BIN/LSDEV.S.txt b/BIN/LSDEV.S.txt index d6d35084..05549e93 100644 --- a/BIN/LSDEV.S.txt +++ b/BIN/LSDEV.S.txt @@ -13,7 +13,7 @@ AUTO 6 .INB /A2OSX.DEV/INC/A2OSX.I *-------------------------------------- ZPPTR1 .EQ ZPBIN -BlkDevCmd .EQ ZPBIN+2 $42 +ZPPTR2 .EQ ZPBIN+2 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -101,26 +101,26 @@ DumpA2osXDev >LDYA L.MSG0 DumpProDOSDev >LDYA L.MSG2 >SYSCALL CPrintFYA - stz DEV.ID + stz BLKCALL.PARAMS CmdNum = 0, STATUS Call + stz BLKCALL.PARAMS+4 ask for Block 0 + stz BLKCALL.PARAMS+5 (in case driver check block validity before checking CmdNum) + + ldx DEVCNT + stx DEV.ID .1 ldx DEV.ID - inc DEV.ID - - cpx DEVCNT - bne .11 - - clc - rts - -.11 lda #1 - sta Drive - + + ldy #1 + lda DEVLST,x bpl .2 - inc Drive + iny -.2 and #$F0 +.2 sty Drive + + and #$F0 + sta BLKCALL.PARAMS+1 UnitNum for BLKCALL, if needed lsr lsr lsr @@ -130,14 +130,16 @@ DumpProDOSDev >LDYA L.MSG2 and #$7 sta Slot -* lda DEVPTRS,y -* sta ZPPTR1 - stz ZPPTR1 + stz ZPPTR1 make Ptr1 = Cn00 + lda DEVPTRS,y + sta ZPPTR2 make Ptr2 = Cnxx (prodos BLK entry point) + lda DEVPTRS+1,y sta ZPPTR1+1 + sta ZPPTR2+1 cmp #$C1 - bcc .1 3rd Party Driver loaded in RAM... + bcc .8 3rd Party Driver loaded in RAM... cmp #$C8 bcs .4 In ProDOS Space.../RAM or DisK II @@ -152,11 +154,11 @@ DumpProDOSDev >LDYA L.MSG2 bne .3 jsr GO.SmartPort Perform a Smartpot STATUS call - bcs .1 + bcs .8 jsr PrintDevStatus - jmp .1 + bra .8 .4 cmp #$ff RAM ? bne .5 @@ -175,9 +177,9 @@ DumpProDOSDev >LDYA L.MSG2 dey bpl .71 - >DEBUG - -* jsr GO.BlockDev + >LDYA ZPPTR2 Get Block device PTR + jsr A2osX.BLKCALL + bcs .8 stx UsrBuf256+S.SPSTAT.BLKNUM sty UsrBuf256+S.SPSTAT.BLKNUM+1 @@ -185,7 +187,12 @@ DumpProDOSDev >LDYA L.MSG2 jsr PrintDevStatus -.8 jmp .1 +.8 dec DEV.ID + bmi .9 + jmp .1 + +.9 clc + rts *-------------------------------------- S.SPSTAT.STATUS .EQ 0 S.SPSTAT.STATUS.BLK .EQ %10000000 @@ -203,9 +210,6 @@ S.SPSTAT.SUBTYP .EQ 22 S.SPSTAT.VER .EQ 23 S.SPSTAT .EQ 25 *-------------------------------------- -GO.BlockDev stz BlkDevCmd - jmp (ZPPTR1) -*-------------------------------------- GO.SmartPort ldy #$ff lda (ZPPTR1),y @@ -235,10 +239,7 @@ GO.SmartPort ldy #$ff .3 lda SMP.Params will be relocated rts *-------------------------------------- -PrintDevStatus - ldy #S.SPSTAT.BLKNUM - lda /UsrBuf256 - >PUSHYA +PrintDevStatus >PUSHW UsrBuf256+S.SPSTAT.BLKNUM ldy #S.SPSTAT.NAME lda /UsrBuf256 @@ -265,8 +266,8 @@ DiskII.OFS .HS 010305FF DiskII.SIG .HS 20000300 MSG0 >CSTR "ID Flags Name Address\n" MSG1 >CSTR "%03d %b %4S $%H\n" -MSG2 >CSTR "ID Flags Name Description Size\n" -MSG3 >CSTR "%03d %b S%dD%d %S %L\n" +MSG2 >CSTR "ID Flags Name Description Size\n" +MSG3 >CSTR "%03d %b S%dD%d %S %05D\n" RAM >PSTR "ProDOS Ram Disk " DISK2 >PSTR "Apple Disk ][ " GENERIC >PSTR "Generic Blk Dev " diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index c99a273f..081fd3ec 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -8,10 +8,10 @@ AUTO 6 .OR $2000 .TF /A2OSX.BOOT/DRV/DHGR.DRV *-------------------------------------- - .INB INC/MACROS.I - .INB INC/A2OSX.I - .INB INC/IO.I - .INB INC/LIBGFX.I + .INB /A2OSX.DEV/INC/MACROS.I + .INB /A2OSX.DEV/INC/A2OSX.I + .INB /A2OSX.DEV/INC/IO.I + .INB /A2OSX.DEV/INC/LIBGFX.I *-------------------------------------- ZPBase .EQ ZPDRV ZPShiftLo .EQ ZPDRV+2 diff --git a/DRV/SSC.I.DRV.S.txt b/DRV/SSC.I.DRV.S.txt index ff92dbff..fd426d60 100644 --- a/DRV/SSC.I.DRV.S.txt +++ b/DRV/SSC.I.DRV.S.txt @@ -8,8 +8,8 @@ AUTO 6 .OR $2000 .TF /A2OSX.BOOT/DRV/SSC.I.DRV *-------------------------------------- - .INB INC/MACROS.I - .INB INC/A2OSX.I + .INB /A2OSX.DEV/INC/MACROS.I + .INB /A2OSX.DEV/INC/A2OSX.I *-------------------------------------- BUF.SIZE .EQ $20 BUF.MASK .EQ $1F diff --git a/DRV/UTHERNET2.DRV.S.txt b/DRV/UTHERNET2.DRV.S.txt index 1985bea9..392fa116 100644 --- a/DRV/UTHERNET2.DRV.S.txt +++ b/DRV/UTHERNET2.DRV.S.txt @@ -13,13 +13,6 @@ AUTO 6 .INB /A2OSX.DEV/INC/LIBTCPIP.I *-------------------------------------- ZPTmpPTR .EQ ZPDRV -*-------------------------------------- - .MA AR.SELECT - lda /W5100.AR.]1 - sta W5100.AR,x - lda #W5100.AR.]1 - sta W5100.AR+1,x - .EM *-------------------------------------- .INB DRV/X.NET.W5100.S *-------------------------------------- diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 0e1acdbc..a3486b49 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -63,7 +63,9 @@ D.STACK.TOP .EQ $03F0 ...Down to $0300 KrnBuf256 .EQ $0C00 Main *-------------------------------------- MLICALL.PARAMS .EQ $0D00 Main, $12 bytes min !!!! -KrnSTAT .EQ $0D12 +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 *-------------------------------------- KrnOut256 .EQ $0E00 Used to return Values to User Space *-------------------------------------- @@ -89,23 +91,25 @@ MemMgr.HiMem .EQ $1804 MemMgr.LastSlot .EQ $1806 *-------------------------------------- MemMgr.MLoMem .EQ $2000 -MemMgr.MHiMem .EQ $BE00 +MemMgr.MHiMem .EQ $BD00 MemMgr.XLoMem .EQ $2000 MemMgr.XHiMem .EQ $C000 *-------------------------------------- DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC *-------------------------------------- * A2osX GLOBAL PAGE -* $BE00->$BE0F : Public Vetors +* $BD00->$BD0F : Public Vetors *-------------------------------------- -A2osX.SYSCALL .EQ $BE00 -A2osX.LIBCALL .EQ $BE03 -A2osX.MLICALL .EQ $BE06 +A2osX.SYSCALL .EQ $BD00 +A2osX.LIBCALL .EQ $BD03 +A2osX.MLICALL .EQ $BD06 +A2osX.BLKCALL .EQ $BD09 +A2osX.PRTCALL .EQ $BD0C *-------------------------------------- -pCodeJmp .EQ $BE10 -pLibJmp .EQ $BE13 -pDrvJmp .EQ $BE16 -pDevJmp .EQ $BE19 +pCodeJmp .EQ $BD10 +pLibJmp .EQ $BD13 +pDrvJmp .EQ $BD16 +pDevJmp .EQ $BD19 *-------------------------------------- * $BEE0->$BEEF : Public Variables *-------------------------------------- @@ -507,12 +511,6 @@ S.DIR.PRODOS.FC .EQ 6 S.DIR.PRODOS .EQ 8 * no S.DIR *-------------------------------------- -* S.DIRENT for ReadDir -*-------------------------------------- -S.DIRENT.NAME .EQ 0 -* Variable size -S.DIRENT.STAT .EQ S.STAT -*-------------------------------------- S.PFT.PATH .EQ 0 S.PFT.HANDLER .EQ 23 S.PFT.DATA .EQ 24 8 bytes OPAQUE data for handler diff --git a/INC/PRODOS.I.txt b/INC/PRODOS.I.txt index f42bef91..a8a0e8f1 100644 --- a/INC/PRODOS.I.txt +++ b/INC/PRODOS.I.txt @@ -115,8 +115,8 @@ MLI .EQ $BF00 *JSPARE .EQ $BF03 DATETIME .EQ $BF06 SYSERR .EQ $BF09 -SYSDEATH .EQ $BF0C -SERR .EQ $BF0F +*SYSDEATH .EQ $BF0C +*SERR .EQ $BF0F DEVPTRS .EQ $BF10 *DEVPTRS0D1 .EQ $BF10 *DEVPTRS1D1 .EQ $BF12 @@ -137,8 +137,8 @@ DEVPTRS3D2 .EQ $BF26 DEVNUM .EQ $BF30 DEVCNT .EQ $BF31 DEVLST .EQ $BF32 -> $BF3F -DEVLST0END .EQ $BF40 A 0 was added to ensure list ended with 0 if 14 devices in list -PRODOSCOPYRIGHT .EQ $BF41 ;free->$BF4B +*DEVLST0END .EQ $BF40 A 0 was added to ensure list ended with 0 if 14 devices in list +*PRODOSCOPYRIGHT .EQ $BF41 ;free->$BF4B MEMTABL .EQ $BF58 -> $BF6F *GL.BUFF .EQ $BF70 *INTRUPT1 .EQ $BF80 @@ -147,8 +147,8 @@ MEMTABL .EQ $BF58 -> $BF6F *INTRUPT4 .EQ $BF86 DATELO .EQ $BF90 TIMELO .EQ $BF92 -LEVEL .EQ $BF94 -BUBIT .EQ $BF95 +*LEVEL .EQ $BF94 +*BUBIT .EQ $BF95 *SPARE1 .EQ $BF96 MACHID .EQ $BF98 MACHID.TYPE .EQ %11001000 @@ -161,15 +161,15 @@ MACHID.RAM .EQ %00110000 MACHID.RAM.128 .EQ %00110000 MACHID.RAM.64 .EQ %00100000 MACHID.RAM.48 .EQ %00010000 -MACHID.SPARE .EQ %00000100 +*MACHID.SPARE .EQ %00000100 MACHID.COL80 .EQ %00000010 MACHID.CLK .EQ %00000001 -SLTBYT .EQ $BF99 -PFIXPTR .EQ $BF9A -MLIACTV .EQ $BF9B -CMDADR .EQ $BF9C -SAVEX .EQ $BF9E -SAVEY .EQ $BF9F +*SLTBYT .EQ $BF99 +*PFIXPTR .EQ $BF9A +*MLIACTV .EQ $BF9B +*CMDADR .EQ $BF9C +*SAVEX .EQ $BF9E +*SAVEY .EQ $BF9F *-------------------------------------- * code $BFA0 -> $BFF3 *-------------------------------------- diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index 8de8d562..367d3d2f 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -37,13 +37,20 @@ AUTO 6 *-------------------------------------- jmp A2osX.BLKCALL1 *-------------------------------------- - .BS $BE10-* +* PRTCALL (AUXLC to MAINLC) +* Used by Kernel +* In: +* Y,A = Ptr To Param Block +*-------------------------------------- + jmp A2osX.PRTCALL1 +*-------------------------------------- + .BS $BD10-* *-------------------------------------- jmp (pCode) pCodeJmp jmp (pLib) pLibJmp jmp (pDrv) pDrvJmp jmp (pDev) pDevJmp - .BS $BE20-* + .BS $BD20-* *-------------------------------------- GO.Reset jsr GO.A2osX jmp K.KernelRun @@ -97,7 +104,34 @@ A2osX.MLICALL1 stx .1 jsr GO.A2osX rts *-------------------------------------- -A2osX.BLKCALL1 +* BLKCALL.PARAMS moved to MainZP/LC +* $42 Command Number +* $43 Unit Number +* $44-$45 Buffer Pointer +* $46-$47 Block Number +*-------------------------------------- +A2osX.BLKCALL1 >STYA .2+1 setup device entry point $Cnxx + + jsr GO.ProDOS + + ldx #5 + +.1 lda BLKCALL.PARAMS,x + sta $42,x setup ZP in main memory for this block device calll + dex + bpl .1 + +.2 jsr $ffff + + jsr GO.A2osX + rts +*-------------------------------------- +* Smartport Call +*-------------------------------------- +A2osX.PRTCALL1 + + clc + rts *-------------------------------------- GO.ProDOS lda $D000 We re coming from AUXLC, saving bank... sta GO.A2osX.BNK+1 diff --git a/SYS/KERNEL.S.INIT2.txt b/SYS/KERNEL.S.INIT2.txt index d258fcee..f7d004b6 100644 --- a/SYS/KERNEL.S.INIT2.txt +++ b/SYS/KERNEL.S.INIT2.txt @@ -10,11 +10,11 @@ Kernel.Init2 sei >LDAXI MSG.Init2 jsr PrintCStrAX - >LDYAI A2osX.BE00 + >LDYAI A2osX.GP >STYA ZPQuickPtr1 - >LDYAI $BE00 + >LDYAI A2osX.SYSCALL >STYA ZPQuickPtr2 - >LDYAI A2osX.BE00.SIZE^$FFFF + >LDYAI A2osX.GP.SIZE^$FFFF >STYA ZPQuickPtr3 jsr Kernel.Move @@ -89,10 +89,10 @@ Kernel.Init2 sei jsr CPU.Init >LDAXI MSG.Init2.OK - jsr PrintCStrAX + jsr PrintCStrAX rts Do NOT replace this JSR/RTS with a JMP *-------------------------------------- -MSG.Init2 >CSTR "A2osX[Stage2]:Init\nInstalling KERNEL...\n - $BE00 (Global Page)...\n" +MSG.Init2 >CSTR "A2osX[Stage2]:Init\nInstalling KERNEL...\n - Global Page...\n" MSG.D000BNK1 >CSTR " - $D000 Bank1...\n" MSG.D000BNK2 >CSTR " - $D000 Bank2...\n" MSG.E000 >CSTR " - $E000...\n" diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 5fb0e911..c4e9d3ec 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -49,11 +49,11 @@ ZPQuickPtr4 .EQ ZPKERNEL+6 *-------------------------------------- * Global Page *-------------------------------------- -A2osX.BE00 .EQ * - .PH $BE00 +A2osX.GP .EQ * + .PH $BD00 .INB SYS/KERNEL.S.GP .EP -A2osX.BE00.END .EQ * +A2osX.GP.END .EQ * *-------------------------------------- * LC AUX $D000 BANK1 API Calls $00-$3E *-------------------------------------- @@ -120,13 +120,13 @@ A2osX.E000.END .EQ * *-------------------------------------- .LIST ON *-------------------------------------- -A2osX.BE00.SIZE .EQ A2osX.BE00.END-A2osX.BE00 +A2osX.GP.SIZE .EQ A2osX.GP.END-A2osX.GP A2osX.D001.SIZE .EQ A2osX.D001.END-A2osX.D001 A2osX.D002.SIZE .EQ A2osX.D002.END-A2osX.D002 A2osX.E000.SIZE .EQ A2osX.E000.END-A2osX.E000 *-------------------------------------- .LIST OFF - .DO A2osX.BE00.SIZE>$E0 + .DO A2osX.GP.SIZE>$1E0 .LIST ON * !!!!!!!!!!!!! ERROR:GP too big !!!!!!!!!!!! .LIST OFF diff --git a/_MAKESYS.txt b/_MAKESYS.txt index d42a8256..2ff695a4 100644 --- a/_MAKESYS.txt +++ b/_MAKESYS.txt @@ -5,7 +5,7 @@ AUTO 6 PREFIX /A2OSX.BOOT BLOAD A2OSX.SYSTEM DELETE A2OSX.SYSTEM -BSAVE A2OSX.SYSTEM,TSYS,A$2000,L$1000 +BSAVE A2OSX.SYSTEM,TSYS,A$2000,L$0A00 -A2OSX.SYSTEM MAN PREFIX /A2OSX.SRC