dya: merge in the changes from updated chiptune_player

This commit is contained in:
Vince Weaver 2018-11-19 20:38:13 -05:00
parent e6900ced57
commit 6146f3a229
4 changed files with 102 additions and 98 deletions

View File

@ -11,23 +11,23 @@ $(DOS33):
chiptune_dya.dsk: CHIPTUNE_PLAYER HELLO
cp chiptune_empty.dsk chiptune_dya.dsk
$(DOS33) -y chiptune_dya.dsk SAVE A HELLO
$(DOS33) -y chiptune_dya.dsk BSAVE -a 0x0C00 CHIPTUNE_PLAYER
$(DOS33) -y chiptune_dya.dsk SAVE B DOTD1.KRW
$(DOS33) -y chiptune_dya.dsk SAVE B DOTD2.KRW
$(DOS33) -y chiptune_dya.dsk BSAVE -a 0x0800 CHIPTUNE_PLAYER
$(DOS33) -y chiptune_dya.dsk BSAVE -a 0x1c00 DOTD1.KRW
$(DOS33) -y chiptune_dya.dsk BSAVE -a 0x1c00 DOTD2.KRW
HELLO: hello.bas
../asoft_basic-utils/tokenize_asoft < hello.bas > HELLO
CHIPTUNE_PLAYER: chiptune_player.o
ld65 -o CHIPTUNE_PLAYER chiptune_player.o -C ../linker_scripts/apple2_c00.inc
ld65 -o CHIPTUNE_PLAYER chiptune_player.o -C ../linker_scripts/apple2_800.inc
chiptune_player.o: chiptune_player.s \
../asm_routines/mockingboard.s \
../asm_routines/dos33_routines.s \
../asm_routines/lz4_decode.s \
../asm_routines/keypress_minimal.s \
rasterbars.s volume_bars.s interrupt_handler.s \
chip_title.inc zp.inc
rasterbars.s volume_bars.s interrupt_handler.s qkumba_rts.s \
chip_title_uncompressed.inc zp.inc
ca65 -o chiptune_player.o chiptune_player.s -l chiptune_player.lst
CHIPTUNE_UNROLLED: chiptune_unrolled.o

View File

@ -1,51 +0,0 @@
chip_title: .byte $28 ; ysize=40
.byte $AE,$00, $A3,$10, $40, $A3,$20, $40, $A3,$20, $A0,$14,$00
.byte $A3,$10, $11, $A4,$91, $00, $A3,$11, $44, $A3,$22
.byte $44, $A3,$22, $00, $A4,$91, $11, $A3,$10, $A8,$00
.byte $10, $11, $91,$91, $99, $A3,$D9, $DD, $CD,$CD
.byte $C0, $00, $11, $A3,$44, $22, $A3,$44, $22
.byte $00, $C0, $CD,$CD, $DD, $A3,$D9, $99, $A3,$91
.byte $11, $10, $A3,$00, $10, $91, $D9,$D9, $DD
.byte $CD,$CD, $A3,$6C, $A3,$06, $00, $01, $A3,$04, $02
.byte $A3,$04, $02, $00, $A3,$06, $A3,$6C, $A3,$CD, $DD
.byte $D9,$D9, $91, $10, $00,$00, $11, $A0,$24,$00, $11
.byte $00,$00, $11, $00, $20, $22,$22, $00, $22
.byte $00, $22, $00, $22, $00, $22,$22, $20
.byte $00, $A3,$33, $00, $33, $00, $33, $00
.byte $33, $00,$00, $33, $00, $A3,$33, $00, $A3,$33
.byte $00, $11, $00,$00, $11, $00, $22, $A3,$00
.byte $22, $20, $22, $00, $22, $00, $22
.byte $00, $22, $00,$00, $33, $00,$00, $33, $00
.byte $33, $00, $33,$33, $30, $33, $00, $33
.byte $30, $00,$00, $33, $30,$30, $00, $11, $00,$00
.byte $11, $00, $22, $A3,$00, $22, $02, $22
.byte $00, $22, $00, $22,$22, $02, $00,$00, $33
.byte $00,$00, $33, $00, $33, $00, $33, $00
.byte $33,$33, $00, $33, $03, $00,$00, $03,$03, $33
.byte $00, $11, $00,$00, $11, $00, $02, $22,$22
.byte $00, $22, $00, $22, $00, $22, $00
.byte $22, $A4,$00, $33, $00,$00, $A3,$33, $00, $33
.byte $00,$00, $33, $00, $A3,$33, $00, $A3,$33, $00
.byte $11, $00, $10, $11, $A0,$24,$00, $11, $10
.byte $11, $A8,$00, $A0,$15,$40, $A9,$00, $11,$11, $A4,$00, $C0
.byte $A3,$00, $44, $A3,$55, $44, $A5,$55, $44, $55
.byte $45, $55, $44, $94, $44, $4E, $44
.byte $4E, $44, $A6,$00, $C0, $00,$00, $11,$11, $00,$00
.byte $C0, $CC, $C0,$C0, $00,$00, $44, $A3,$55, $44
.byte $A5,$55, $44, $55, $54, $55, $44, $94
.byte $44, $55, $44, $55, $44, $A4,$00, $C0
.byte $CC, $C0,$C0, $00, $11,$11, $00, $A4,$9D, $A3,$00
.byte $A0,$12,$44, $64, $44, $64, $44, $00,$00, $A4,$9D
.byte $00,$00, $11,$11, $00, $A5,$21, $00,$00, $44, $A3,$55
.byte $44, $A5,$55, $44, $55, $45, $55, $44
.byte $54,$54, $44, $66, $44, $66, $44, $00,$00
.byte $A5,$21, $00, $11,$11, $00,$00, $A3,$06, $A3,$00, $44
.byte $A3,$55, $44, $A5,$55, $44, $55, $54, $55
.byte $44, $45,$45, $44, $46, $44, $46, $44
.byte $A3,$00, $A3,$06, $00,$00, $11,$11, $A8,$00, $A0,$15,$44, $57
.byte $A8,$00, $11,$11, $A8,$00, $05, $AB,$04, $C4, $D4
.byte $C4, $D4, $C4, $D4, $C4, $D4, $04
.byte $05, $A8,$00, $11,$11, $A0,$14,$00, $0C, $0D, $0C
.byte $0D, $0C, $0D, $0C, $0D, $AA,$00, $11,$11
.byte $A0,$26,$10, $11
.byte $A1

View File

@ -3,17 +3,35 @@
.include "zp.inc"
; program is ~4k, so from 0xc00 to 0x1C00
LZ4_BUFFER EQU $1C00 ; $1C00 - $5C00, 16k for now
UNPACK_BUFFER EQU $5E00 ; $5E00 - $9600, 14k, $3800
; trying not to hit DOS at $9600
; Reserve 3 chunks plus spare (14k)
DISK_BUFFER EQU $5D00 ; for disk loading
UNPACK_BUFFER EQU $6000 ; $6000 - $9800, 14k, $3800
; by using qkumba's RTS code
; no need for DOS, so we actually
; are free the whole way to $C000
; instead of stopping at $9600
; $6000 - $C000 = 24k
NUM_FILES EQU 15
jmp chiptune_setup
.include "chip_title_uncompressed.inc"
.align $400
;=============================
; Setup
;=============================
jsr HOME
jsr TEXT
chiptune_setup:
; jsr HOME
; jsr TEXT
; Init disk code
jsr rts_init
; init variables
@ -22,25 +40,26 @@ NUM_FILES EQU 15
sta CH
sta CV
sta DONE_PLAYING
sta XPOS
sta MB_CHUNK_OFFSET
sta DECODE_ERROR
; lda #0
; lda #4 ; start at DEMO4
; lda #7 ; start at LYRA
; lda #10 ; start at SDEMO
sta WHICH_FILE
lda #$ff
sta RASTERBARS_ON
; lda #4 ; start at DEMO4
; lda #7 ; start at LYRA
lda #10 ; start at SDEMO
sta WHICH_FILE
; print detection message
lda #<mocking_message ; load loading message
sta OUTL
lda #>mocking_message
sta OUTH
jsr move_and_print ; print it
; lda #<mocking_message ; load loading message
; sta OUTL
; lda #>mocking_message
; sta OUTH
; jsr move_and_print ; print it
jsr mockingboard_detect_slot4 ; call detection routine
cpx #$1
@ -111,25 +130,27 @@ mockingboard_found:
; Draw title screen
;============================
jsr set_gr_page0 ; set page 0
; jsr set_gr_page0 ; set page 0
lda #$4 ; draw page 1
sta DRAW_PAGE
; lda #$4 ; draw page 1
; sta DRAW_PAGE
jsr clear_screens ; clear both screens
; jsr clear_screens ; clear both screens
lda #<chip_title ; point to title data
sta GBASL
lda #>chip_title
sta GBASH
; lda #<chip_title ; point to title data
; sta GBASL
; lda #>chip_title
; sta GBASH
; bit PAGE1
; Load image ; load the image
lda #<$400
sta BASL
lda #>$400
sta BASH
; lda #<$800
; sta BASL
; lda #>$800
; sta BASH
jsr load_rle_gr
; jsr load_rle_gr
;==================
; load first song
@ -288,7 +309,7 @@ new_song:
jsr get_filename
lda #8
lda #8 ; print filename to screen
sta CH
lda #21
sta CV
@ -299,8 +320,36 @@ new_song:
sta OUTH
jsr print_both_pages
disk_buff EQU LZ4_BUFFER
read_size EQU $4000
; needs to be space-padded $A0 30-byte filename
lda #<readfile_filename
sta namlo
lda #>readfile_filename
sta namhi
ldy #0
ldx #30 ; 30 chars
name_loop:
lda (INL),Y
beq space_loop
ora #$80
sta (namlo),Y
iny
dex
bne name_loop
beq done_name_loop
space_loop:
lda #$a0 ; pad with ' '
sta (namlo),Y
iny
dex
bne space_loop
done_name_loop:
; open and read a file
; loads to whatever it was BSAVED at (default is $1C00)
jsr read_file ; read KRW file from disk
@ -567,9 +616,9 @@ krw_file:
.include "../asm_routines/mockingboard_a.s"
.include "../asm_routines/gr_fast_clear.s"
.include "../asm_routines/pageflip.s"
.include "../asm_routines/gr_unrle.s"
;.include "../asm_routines/gr_unrle.s"
.include "../asm_routines/gr_setpage.s"
.include "../asm_routines/dos33_routines.s"
.include "qkumba_rts.s"
.include "../asm_routines/gr_hlin.s"
.include "../asm_routines/lz4_decode.s"
.include "../asm_routines/keypress_minimal.s"
@ -583,13 +632,9 @@ krw_file:
;=========
; strings
;=========
mocking_message: .asciiz "LOOKING FOR MOCKINGBOARD IN SLOT #4"
;mocking_message: .asciiz "LOOKING FOR MOCKINGBOARD IN SLOT #4"
not_message: .byte "NOT "
found_message: .asciiz "FOUND"
;done_message: .asciiz "DONE PLAYING"
loading_message: .asciiz "LOADING"
;============
; graphics
;============
.include "chip_title.inc"

View File

@ -153,8 +153,18 @@ DRAW_PAGE EQU $EE
;FIRST EQU $F0
LASTKEY EQU $F1
;PADDLE_STATUS EQU $F2
XPOS EQU $F3
YPOS EQU $F4
;XPOS EQU $F3
;YPOS EQU $F4
namlo = $f6
namhi = $f7
step = $f8 ; state for stepper motor
tmptrk = $f9 ; temporary copy of current track
phase = $fa ; current phase for /seek
TEMP EQU $FA
;RUN EQU $FA
;TEMP2 EQU $FB