From 27b693e8fa5399958d3a5a9fa058efe1f364438e Mon Sep 17 00:00:00 2001 From: ytmytm Date: Sat, 22 May 2021 14:31:21 +0200 Subject: [PATCH 1/4] correct symbol import/export for RAM expansions, generalize DetectRamExp --- kernal/files/files10.s | 9 +++++++++ kernal/files/files6a.s | 5 +++++ kernal/load/deskacc.s | 7 +++++++ kernal/load/load1a.s | 7 +++++++ kernal/ramexp/ramexp1.s | 30 +++++++++++++++++++++++++++--- kernal/ramexp/ramexp2.s | 13 +++++++++++++ kernal/start/start64.s | 14 +++----------- 7 files changed, 71 insertions(+), 14 deletions(-) diff --git a/kernal/files/files10.s b/kernal/files/files10.s index c016f6d3..f8893c2b 100644 --- a/kernal/files/files10.s +++ b/kernal/files/files10.s @@ -36,6 +36,15 @@ .import ReadR9 .endif +.ifdef useRamExp +.import RamExpRead +.import RamExpGetStat +.import CmpString +.import DeskTopOpen +.import DeskTopRecord +.import DeskTopName +.endif + .global _AppendRecord .global _CloseRecordFile .global _WriteRecord diff --git a/kernal/files/files6a.s b/kernal/files/files6a.s index c4e8fb3c..5a7f59ee 100644 --- a/kernal/files/files6a.s +++ b/kernal/files/files6a.s @@ -24,6 +24,11 @@ .ifdef wheels .import GetBlock .endif +.ifdef useRamExp +.import DeskTopOpen +.import DeskTopName +.import CopyString +.endif .global _FollowChain .global _FindFTypes diff --git a/kernal/load/deskacc.s b/kernal/load/deskacc.s index 88fbf528..de5e5379 100644 --- a/kernal/load/deskacc.s +++ b/kernal/load/deskacc.s @@ -35,6 +35,13 @@ .import StashRAM .endif +.ifdef useRamExp +.import RamExpRead +.import RamExpGetStat +.import RamExpWrite +.import RamExpPutStat +.endif + .global _LdDeskAcc .global _RstrAppl diff --git a/kernal/load/load1a.s b/kernal/load/load1a.s index e90f07d4..d27c15a5 100644 --- a/kernal/load/load1a.s +++ b/kernal/load/load1a.s @@ -33,6 +33,13 @@ .import InitMachine .endif +.ifdef useRamExp +.import RamExpRead +.import DeskTopStart +.import DeskTopLgh +.import DeskTopExec +.endif + .global _EnterDeskTop .global _StartAppl diff --git a/kernal/ramexp/ramexp1.s b/kernal/ramexp/ramexp1.s index 7fddaf2b..200c680b 100644 --- a/kernal/ramexp/ramexp1.s +++ b/kernal/ramexp/ramexp1.s @@ -9,10 +9,35 @@ .include "kernal.inc" .include "c64.inc" +.ifdef useRamExp +.import OpenRecordFile +.import ReadRecord +.import PointRecord +.import NewDisk +.import FindFile +.import GetFHdrInfo +.import ToBASIC +.import DoDlgBox +.import _EnterDT_DB +.import DeskTopName +.import RamExpGetStat +.import RamExpPutStat +.import RamExpWrite +.import DeskTopOpen +.import DeskTopStart +.import DeskTopExec +.import DeskTopLgh +.endif + +.ifdef useRamExp +.global LoadDeskTop +.global DetectRamExp +.endif + .segment "ramexp1" .ifdef usePlus60K -DetectPlus60K: +DetectRamExp: ASSERT_NOT_BELOW_IO LoadB CPU_DATA, IO_IN ldx #0 @@ -49,8 +74,7 @@ Plus60KTestEnd: .endif .if .defined(useRamCart64) || .defined(useRamCart128) -DetectRamCart: -ASSERT_NOT_BELOW_IO +DetectRamExp: LoadB CPU_DATA, IO_IN LoadW RAMC_BASE, 0 ldx RAMC_WINDOW diff --git a/kernal/ramexp/ramexp2.s b/kernal/ramexp/ramexp2.s index e8641556..ce150640 100644 --- a/kernal/ramexp/ramexp2.s +++ b/kernal/ramexp/ramexp2.s @@ -9,6 +9,19 @@ .include "kernal.inc" .include "c64.inc" +.ifdef useRamExp +.global RamExpSetStat +.global RamExpGetStat +.global RamExpPutStat +.global RamExpRead +.global RamExpWrite +.global DeskTopOpen +.global DeskTopStart +.global DeskTopExec +.global DeskTopLgh +.global DeskTopRecord +.endif + .segment "ramexp2" .ifdef useRamExp diff --git a/kernal/start/start64.s b/kernal/start/start64.s index b8725583..c70a3bf9 100644 --- a/kernal/start/start64.s +++ b/kernal/start/start64.s @@ -33,13 +33,8 @@ ; used by header.s .global _ResetHandle -.ifdef usePlus60K -.import DetectPlus60K -.endif -.if .defined(useRamCart64) || .defined(useRamCart128) -.import DetectRamCart -.endif .ifdef useRamExp +.import DetectRamExp .import LoadDeskTop .endif @@ -149,11 +144,8 @@ OrigResetHandle: ldx #$ff jsr _DoFirstInitIO jsr InitGEOEnv -.ifdef usePlus60K - jsr DetectPlus60K -.endif -.if .defined(useRamCart64) || .defined(useRamCart128) - jsr DetectRamCart +.ifdef useRamExp + jsr DetectRamExp .endif jsr GetDirHead MoveB bootSec, r1H From 52b8ca05f3bbd014fee762793a6c189c8eff63a2 Mon Sep 17 00:00:00 2001 From: Maciej Witkowiak Date: Sat, 22 May 2021 18:00:21 +0200 Subject: [PATCH 2/4] missing assertion --- kernal/ramexp/ramexp1.s | 1 + 1 file changed, 1 insertion(+) diff --git a/kernal/ramexp/ramexp1.s b/kernal/ramexp/ramexp1.s index 200c680b..a8fa897a 100644 --- a/kernal/ramexp/ramexp1.s +++ b/kernal/ramexp/ramexp1.s @@ -75,6 +75,7 @@ Plus60KTestEnd: .if .defined(useRamCart64) || .defined(useRamCart128) DetectRamExp: +ASSERT_NOT_BELOW_IO LoadB CPU_DATA, IO_IN LoadW RAMC_BASE, 0 ldx RAMC_WINDOW From 3288550684835ed223814185738935ddbfff350e Mon Sep 17 00:00:00 2001 From: Maciej Witkowiak Date: Sun, 23 May 2021 02:39:37 +0200 Subject: [PATCH 3/4] remove leftover code that prevented returing from Desk Accessories with useRamExp enabled --- kernal/load/deskacc.s | 5 ----- 1 file changed, 5 deletions(-) diff --git a/kernal/load/deskacc.s b/kernal/load/deskacc.s index de5e5379..1da42012 100644 --- a/kernal/load/deskacc.s +++ b/kernal/load/deskacc.s @@ -205,11 +205,6 @@ _RstrAppl: lda #0 .elseif .defined(useRamExp) ; restore from other bank - ldx DeskAccSP - txs - tax - PushW DeskAccPC - rts jsr RamExpGetStat MoveW diskBlkBuf+DACC_ST_ADDR, r0 MoveB diskBlkBuf+DACC_LGH, r2H From 0b98f79d5dbbc6536ada3b478563d4d9b5ede755 Mon Sep 17 00:00:00 2001 From: Maciej Witkowiak Date: Thu, 27 May 2021 00:32:39 +0200 Subject: [PATCH 4/4] correct parameter passing for GetFHdrInfo, the only way to boot if there are no auto-execs --- kernal/ramexp/ramexp1.s | 1 + 1 file changed, 1 insertion(+) diff --git a/kernal/ramexp/ramexp1.s b/kernal/ramexp/ramexp1.s index a8fa897a..15197897 100644 --- a/kernal/ramexp/ramexp1.s +++ b/kernal/ramexp/ramexp1.s @@ -140,6 +140,7 @@ LoadDTLp: jsr NewDisk jmp LoadDTLp LoadDTCont: + MoveW r5, r9 jsr GetFHdrInfo MoveW fileHeader+O_GHST_ADDR, DeskTopStart MoveW fileHeader+O_GHST_VEC, DeskTopExec