aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--memsetup.asm14
1 files changed, 14 insertions, 0 deletions
diff --git a/memsetup.asm b/memsetup.asm
index fa81ae6..de9c7d9 100644
--- a/memsetup.asm
+++ b/memsetup.asm
@@ -1,3 +1,14 @@
+; Initial load segment for the fnchat.exe executable. Sets MEMTOP and
+; RAMTOP to $6A00, disables BASIC (on XL/XE), disables ANTIC DMA, then
+; returns so the rest of the .xex continues to load.
+
+; This is pretty weird: when loading fnchat.xex from MyDOS 4.50 or
+; (apparently) Spartados X, a 0 byte gets written to our display
+; list. It's up in the $BFxx area, which is to say, where the GR.0
+; screen used by DOS lives... and somehow these DOSes are writing a
+; 0 byte to the screen (a space) in the middle of loading the file.
+; Setting SAVMSC to something else ($0600, here) avoids this.
+
*= $2000
memsetup
lda $d301 ; PORTB
@@ -9,6 +20,9 @@ memsetup
lda #0
sta $02e5 ; MEMTOP low
sta $022f ; SDMCTL (turn off screen)
+ sta $58 ; SAVMSC
+ lda #$06
+ sta $59 ; SAVMSC+1
lda $14 ; RTCLOK+2
loop
cmp $14 ; wait until next frame