From ae9ab595490510674c63dee6b2b486192e237e42 Mon Sep 17 00:00:00 2001 From: Christian Groessler Date: Tue, 27 Aug 2013 22:45:23 +0200 Subject: [PATCH] xlmemchk.inc: Fix wrong calculation if load address is at an exact 4K border. --- libsrc/atari/xlmemchk.inc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libsrc/atari/xlmemchk.inc b/libsrc/atari/xlmemchk.inc index 9cc6b612c..81e09ba90 100644 --- a/libsrc/atari/xlmemchk.inc +++ b/libsrc/atari/xlmemchk.inc @@ -61,13 +61,17 @@ scrmemtst: cmp tmp beq scrmemok +; if lodadr is at an exact 4K boundary, it's still ok + + lda lodadr+1 + and #$0f + beq scrmemok + ; 4K boundary will be crossed, use this 4K boundary address as lodadr al4k: lda lodadr+1 and #$f0 - tax - dex - stx lodadr+1 + sta lodadr+1 bne scrmemtst ; not reached @@ -89,6 +93,7 @@ scrmemok: sbc #>DLSZ sta lowadr+1 +.if 0 ; this cannot happen ; check if a 1K boundary is crossed lda tstadr+1 @@ -98,6 +103,7 @@ scrmemok: and #$fc cmp tmp bne al4k ; 1K boundary will be crossed, decrease lodadr +.endif ; address of display list is ok ; decrease lowadr by two -- 2.39.5