From 8a430e86f3979b9fd1a8419d385ad0d671cc1e97 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Wed, 7 Feb 2018 19:00:38 -0500 Subject: [PATCH] mockingboard: running out of RAM, load it high --- asm_routines/lzss_decompress.s | 15 +++------------ linker_scripts/apple2_4000.inc | 12 ++++++++++++ mockingboard/Makefile | 5 +++-- mockingboard/ksp_theme_interrupt.s | 9 ++++++--- 4 files changed, 24 insertions(+), 17 deletions(-) create mode 100644 linker_scripts/apple2_4000.inc diff --git a/asm_routines/lzss_decompress.s b/asm_routines/lzss_decompress.s index fdd16955..08ba507e 100644 --- a/asm_routines/lzss_decompress.s +++ b/asm_routines/lzss_decompress.s @@ -29,7 +29,7 @@ FREQUENT_CHAR EQU 0 ;R: .res (1024-64) ; N-F -R EQU $4000 +R EQU $9000 ; Init lzss_init: @@ -142,9 +142,7 @@ output_loop: load_carry1: store_byte: - sta (OUTPUTL),Y ; store byte to output - inc OUTPUTL ; increment address bne sb_carry inc OUTPUTH ; handle overflow @@ -188,23 +186,16 @@ done_logo: rts -;============================================ -; inc_pointer - increments the output pointer -;============================================ - -inc_pointer: - ldx #OUTPUTL - ;================================================== ; inc16 - increments a 16-bit pointer in zero page ;================================================== inc16: inc 0,X ; increment address - bne no_carry + bne not_zero inx inc 0,X ; handle overflow -no_carry: +not_zero: rts diff --git a/linker_scripts/apple2_4000.inc b/linker_scripts/apple2_4000.inc new file mode 100644 index 00000000..2720353e --- /dev/null +++ b/linker_scripts/apple2_4000.inc @@ -0,0 +1,12 @@ +MEMORY { + ZP: start = $00, size = $1A, type = rw; + RAM: start = $4000, size = $5000, file = %O; +} + +SEGMENTS { +CODE: load = RAM, type = ro; +RODATA: load = RAM, type = ro; +DATA: load = RAM, type = rw; +BSS: load = RAM, type = bss, define = yes; +ZEROPAGE: load = ZP, type = zp; +} diff --git a/mockingboard/Makefile b/mockingboard/Makefile index fc55298e..8a029276 100644 --- a/mockingboard/Makefile +++ b/mockingboard/Makefile @@ -9,7 +9,7 @@ mock.dsk: KSP_THEME_UNCOMPRESSED KSP_THEME_COMPRESSED \ KSP_THEME_INTERRUPT INTERRUPT_TEST $(DOS33) -y mock_test.dsk BSAVE -a 0x1000 KSP_THEME_UNCOMPRESSED $(DOS33) -y mock_test.dsk BSAVE -a 0x1000 KSP_THEME_COMPRESSED - $(DOS33) -y mock_test.dsk BSAVE -a 0xc00 KSP_THEME_INTERRUPT + $(DOS33) -y mock_test.dsk BSAVE -a 0x4000 KSP_THEME_INTERRUPT $(DOS33) -y mock_test.dsk BSAVE -a 0x1000 INTERRUPT_TEST KSP_THEME_COMPRESSED: ksp_theme_compressed.o @@ -21,10 +21,11 @@ ksp_theme_compressed.o: ksp_theme_compressed.s \ ca65 -o ksp_theme_compressed.o ksp_theme_compressed.s -l ksp_theme_compressed.lst KSP_THEME_INTERRUPT: ksp_theme_interrupt.o - ld65 -o KSP_THEME_INTERRUPT ksp_theme_interrupt.o -C ../linker_scripts/apple2_c00.inc + ld65 -o KSP_THEME_INTERRUPT ksp_theme_interrupt.o -C ../linker_scripts/apple2_4000.inc ksp_theme_interrupt.o: ksp_theme_interrupt.s \ ../asm_routines/mockingboard.s \ + ../asm_routines/lzss_decompress.s \ ksp_title.inc ca65 -o ksp_theme_interrupt.o ksp_theme_interrupt.s -l ksp_theme_interrupt.lst diff --git a/mockingboard/ksp_theme_interrupt.s b/mockingboard/ksp_theme_interrupt.s index 13b7a54b..020ab309 100644 --- a/mockingboard/ksp_theme_interrupt.s +++ b/mockingboard/ksp_theme_interrupt.s @@ -107,7 +107,7 @@ mockingboard_found: ; Enable 6502 interrupts ;============================ ; - cli ; clear interrupt mask +; cli ; clear interrupt mask bit SET_GR ; graphics mode @@ -119,7 +119,7 @@ mockingboard_found: ; Graphics ;========================== uncompress_graphics: - jsr lzss_init ; init R to zero + ;jsr lzss_init ; init R to zero lda #>ksp_title ; load logo pointer sta BASH @@ -131,7 +131,7 @@ uncompress_graphics: lda #$2000 sta OUTH lda #<$2000 @@ -315,3 +315,6 @@ done_message: .asciiz "DONE PLAYING" ;============= .include "ksp_title.inc" +.include "ksp_squad.inc" +.include "ksp_loading.inc" +