diff --git a/still_alive/README.still_alive b/still_alive/README.still_alive index db039f28..f5ab134d 100644 --- a/still_alive/README.still_alive +++ b/still_alive/README.still_alive @@ -33,7 +33,13 @@ Challenges: the music is already decompressing on the fly. + Re-using the Lyrics for both the Mockingboard and Electric Duet versions. - + + Squeezing the compressed image into memory leaving room for + all the code to be decompressed while leaving enough + room that DOS still has room to load things. It's + an *extremely* tight fit. + + An odd issue where the 80col display would get corrupted + if we set HIRES without explicitly setting LORES + before doing PR#3 Goal: Binary fits in 16k (16384 bytes) @@ -57,6 +63,8 @@ merge ED and MB code: 24993 properly select between versions: 25001 merge the ED and MB lyrics: 22828 80 column ED, wait for keypress+reboot at end: 22852 +Crazy compression: +Remove mockingboard detection: 16343 Memory Map: @@ -75,11 +83,17 @@ FFFF: END Plan: - Load compressed 16k image ($4000) at $5600 - $9600 + Load compressed 16k image ($4000) at $5900 - $9900 + We use MAXFILES 1 to give us some extra room + just before DOS + Decompress ENDING sequence at $1800 - $4000 (writes background to HGR graphics automatically) - When done: - + STILL_ALIVE ($5a00, 22.5k) at $0c00 - $6600 + + STILL_ALIVE: + + $0800 - $5900 + $2e2d of code + $2282 of KR4 music *or* + $0842 of ED music + Sound buffers ($3800, 14k) at $5e00 - $9600 - (the overlap is OK, the ED file is over-written by - the mockingboard buffers, but that is not used by MB) + diff --git a/still_alive/interrupt_handler.s b/still_alive/interrupt_handler.s index 2bf26d76..1d6556af 100644 --- a/still_alive/interrupt_handler.s +++ b/still_alive/interrupt_handler.s @@ -54,7 +54,7 @@ mb_write_frame: mb_write_loop: lda REGISTER_DUMP,X ; load register value ; 4 cmp REGISTER_OLD,X ; compare with old values ; 4 - beq mb_no_write_left ; 3/2nt + beq mb_no_write_left ; 3/2nt ; address stx MOCK_6522_ORA1 ; put address on PA1 ; 4 @@ -94,7 +94,7 @@ mb_no_write_left: mb_no_write_right: inx ; point to next register ; 2 - cpx #12 ; if 14 we're done ; 2 + cpx #12 ; if 12 we're done ; 2 bmi mb_write_loop ; otherwise, loop ; 3/2nt @@ -137,7 +137,7 @@ mb_load12: sta REGISTER_DUMP2+3 jmp mb_done_load mb_load13: - cpx #12 + cpx #13 bne mb_regular_load sta REGISTER_DUMP2+9 jmp mb_done_load diff --git a/still_alive/still_alive.dsk b/still_alive/still_alive.dsk index 9ac98bce..ff442eba 100644 Binary files a/still_alive/still_alive.dsk and b/still_alive/still_alive.dsk differ