aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2016-03-08 01:30:49 -0500
committerB. Watson <yalhcru@gmail.com>2016-03-08 01:30:49 -0500
commit742808e762c95c77b942b710431a55200f28b5b3 (patch)
treef98a5b225c8dcde8ac93cc826251a11d80cdd8ba
parent45d35f025d3ea5490569e46a4df2f773294a7729 (diff)
downloadtaipan-742808e762c95c77b942b710431a55200f28b5b3.tar.gz
fix title screen breakage
-rw-r--r--bigfloat.s3
-rw-r--r--checkmem.s6
-rw-r--r--newtitle.s9
-rw-r--r--taipan.c6
4 files changed, 16 insertions, 8 deletions
diff --git a/bigfloat.s b/bigfloat.s
index 5acbecf..d3115bc 100644
--- a/bigfloat.s
+++ b/bigfloat.s
@@ -16,6 +16,8 @@
; atari.inc also has a typo, PLD1P for FLD1P
FLD1P = PLD1P
+ ;bfstart = *
+
.rodata
BIG_64K: ; 65535 (2**16-1) in float format.
.byte $42, $06, $55, $36, $00, $00
@@ -369,3 +371,4 @@ _big_cmp:
tax ; sign extension, grr.
rts
+ ;.out .sprintf("bigfloat.s code is %d bytes", *-bfstart)
diff --git a/checkmem.s b/checkmem.s
index 9994add..a539e4b 100644
--- a/checkmem.s
+++ b/checkmem.s
@@ -101,11 +101,11 @@ gr_0:
; save display list pointer where taipan.c's main() can find it.
; this is done ASAP after the CIO call, to avoid saving the DL
; after SpartaDOS's TDLINE has had a chance to modify it.
- ; we use FR1 because the menu code in newtitle.s trashes FR0.
+ ; we use FRE because the menu code in newtitle.s trashes FR0 and FR1.
lda SDLSTL
- sta FR1
+ sta FRE
lda SDLSTH
- sta FR1+1
+ sta FRE+1
rts
diff --git a/newtitle.s b/newtitle.s
index 6bc0b4a..a2c8559 100644
--- a/newtitle.s
+++ b/newtitle.s
@@ -285,11 +285,16 @@ start:
; still needs to be done here for the cart.
.ifdef CART_TARGET
lda SDLSTL
- sta FR1
+ sta FRE
lda SDLSTH
- sta FR1+1
+ sta FRE+1
.endif
+ ; helpshowing is FR1, it's being messed with by the checkmem
+ ; code so we need to initialize it.
+ lda #0
+ sta helpshowing
+
; setup our display list
lda #<dlist
sta SDLSTL
diff --git a/taipan.c b/taipan.c
index 1f5c468..1371fd1 100644
--- a/taipan.c
+++ b/taipan.c
@@ -3345,12 +3345,12 @@ hangx: goto hangx;
int main(void) {
char choice;
- /* newtitle.s saves the OS's display list pointer in FR0,
+ /* newtitle.s saves the OS's display list pointer in FRE,
sets up its own DL, and uses narrow playfield mode. First
thing we do it put things back the way they were.
FONT_ADDR is set on the command line (see the Makefile). */
- POKE(560, PEEK(0xe0)); // restore the
- POKE(561, PEEK(0xe1)); // display list
+ POKE(560, PEEK(0xda)); // restore the
+ POKE(561, PEEK(0xdb)); // display list
POKE(756, FONT_ADDR / 256); // use our custom font
POKE(731, 1); // disable keyclick on XL/XE (does nothing on 400/800)
POKE(559, 34); // turn on the screen (normal playfield)