From 3a50ceceb8f09c2fc52ff73cd93bbb202e6d0be0 Mon Sep 17 00:00:00 2001 From: Peter Ferrie Date: Tue, 10 Sep 2019 09:51:04 -0700 Subject: [PATCH] more in LC RAM2 --- src/4cade.a | 1 - src/constants.a | 2 +- src/glue.launch.a | 1 + src/glue.prorwts2.a | 38 -------------------------------------- src/prodos.impl.a | 40 ++++++++++++++++++++++++++++++++++++++-- src/ui.attract.mode.a | 2 -- 6 files changed, 40 insertions(+), 44 deletions(-) diff --git a/src/4cade.a b/src/4cade.a index f31690935..ad4fb2b79 100644 --- a/src/4cade.a +++ b/src/4cade.a @@ -105,7 +105,6 @@ LastMover !pseudopc $D600 { !source "src/ui.font.data.a" !source "src/prodos.impl.a" -!warn * !if * > $DEFF { !error "code is too large: ends at ", * } diff --git a/src/constants.a b/src/constants.a index 91e4be665..391c5ef4c 100644 --- a/src/constants.a +++ b/src/constants.a @@ -9,7 +9,7 @@ ; D000..E4E9 - persistent data structures (gGlobalPrefsStore, gGamesListStore) ; ...end of data and start of code are approximate, in between is unused... ; ...if they ever overlap, things will go boom... -; EA09..FFF9 - main program code +; EA72..FFF9 - main program code ; FFFA..FFFF - NMI, reset, IRQ vectors ; ; LC RAM BANK 2 diff --git a/src/glue.launch.a b/src/glue.launch.a index d9d0ac153..68846ea30 100644 --- a/src/glue.launch.a +++ b/src/glue.launch.a @@ -172,6 +172,7 @@ gCurrentlyVisibleSlideshowIndex Launch +READ_RAM2_WRITE_RAM2 + jsr SaveOrRestoreScreenHoles ; save screen hole contents ldx #1 - lda $100,x sta $DF00,x ; back up stack diff --git a/src/glue.prorwts2.a b/src/glue.prorwts2.a index 50bd78d59..c464d442b 100644 --- a/src/glue.prorwts2.a +++ b/src/glue.prorwts2.a @@ -164,41 +164,3 @@ SaveSmallFile jsr hddopendir ; exit via ProRWTS2 (must re-open the file after query) +READ_RAM1_WRITE_RAM1 rts - -;------------------------------------------------------------------------------ -; SaveOrRestoreScreenHoles -; preserve screen hole contents across demo execution -; to avoid crashing later on disk access -; -; in: nothing -; out: all flags clobbered -; all registers clobbered -;------------------------------------------------------------------------------ - -SaveOrRestoreScreenHoles - lda #4 - sta namhi - ldx #0 - stx namlo - sta bloklo --- ldy #$78 -- lda (namlo),y - pha - lda holey_stuff,x -holepatch ;sta->lda - lda (namlo),y - pla - sta holey_stuff,x - inx - tya - eor #$80 - tay - bmi - - iny - bpl - - inc namhi - dec bloklo - bne -- - rts -holey_stuff - !fill 64 diff --git a/src/prodos.impl.a b/src/prodos.impl.a index ae5b8e0db..657c26b78 100644 --- a/src/prodos.impl.a +++ b/src/prodos.impl.a @@ -4,7 +4,6 @@ ; Pseudo-ProDOS environment ; -!pseudopc $DA00 { ;------------------------------------------------------------------------------ ; ProDOS_enter ; intercept certain ProDOS requests @@ -547,4 +546,41 @@ ProDOS_prefix=$bfd0 } end_promote -} + +;------------------------------------------------------------------------------ +; SaveOrRestoreScreenHoles +; preserve screen hole contents across demo execution +; to avoid crashing later on disk access +; +; in: nothing +; out: all flags clobbered +; all registers clobbered +;------------------------------------------------------------------------------ + +SaveOrRestoreScreenHoles + lda #4 + sta namhi + ldx #0 + stx namlo + sta bloklo +-- ldy #$78 +- lda (namlo),y + pha + lda holey_stuff,x +holepatch ;sta->lda + lda (namlo),y + pla + sta holey_stuff,x + inx + tya + eor #$80 + tay + bmi - + iny + bpl - + inc namhi + dec bloklo + bne -- + rts +holey_stuff + !fill 64 diff --git a/src/ui.attract.mode.a b/src/ui.attract.mode.a index b757fb9db..f56c220e1 100644 --- a/src/ui.attract.mode.a +++ b/src/ui.attract.mode.a @@ -199,8 +199,6 @@ RunAttractModule @key !word $FDFD !word 0 - jsr SaveOrRestoreScreenHoles ; save screen hole contents - jmp Launch ; will return to caller via |Reenter| ; not a demo, so maybe a slideshow or single screenshot