2021-11-02 04:01:43 +00:00
|
|
|
; Tiny Mockingboard Player
|
|
|
|
|
2021-11-02 20:48:35 +00:00
|
|
|
SONG_L = $70
|
|
|
|
SONG_H = $71
|
|
|
|
SONG_OFFSET = $72
|
|
|
|
SONG_COUNTDOWN = $73
|
|
|
|
|
|
|
|
|
2021-11-02 04:01:43 +00:00
|
|
|
|
|
|
|
; proposed format
|
|
|
|
; CCOONNNN -- c=channel, o=octave, n=note
|
|
|
|
; 11LLLLLL -- L=length
|
2021-11-02 20:48:35 +00:00
|
|
|
; 11LLLLLL -- wait time
|
2021-11-02 04:01:43 +00:00
|
|
|
|
|
|
|
; by deater (Vince Weaver) <vince@deater.net>
|
|
|
|
|
|
|
|
; Zero Page
|
|
|
|
.include "zp.inc"
|
|
|
|
.include "hardware.inc"
|
|
|
|
|
|
|
|
|
|
|
|
;==========================================
|
|
|
|
|
|
|
|
tiny_music:
|
|
|
|
|
|
|
|
;===================
|
|
|
|
;
|
|
|
|
|
|
|
|
;===================
|
|
|
|
; Player Setup
|
|
|
|
|
|
|
|
lda #0
|
|
|
|
sta DONE_PLAYING
|
|
|
|
lda #1
|
|
|
|
sta LOOP
|
|
|
|
|
2021-11-02 20:48:35 +00:00
|
|
|
|
|
|
|
lda #<song_track_a
|
|
|
|
sta SONG_L
|
|
|
|
lda #>song_track_a
|
|
|
|
sta SONG_H
|
|
|
|
|
|
|
|
lda #0
|
|
|
|
sta SONG_OFFSET
|
|
|
|
sta SONG_COUNTDOWN
|
|
|
|
|
2021-11-02 04:01:43 +00:00
|
|
|
; assume mockingboard in slot#4
|
|
|
|
|
|
|
|
jsr mockingboard_init
|
|
|
|
jsr mockingboard_setup_interrupt
|
|
|
|
jsr reset_ay_both
|
|
|
|
jsr clear_ay_both
|
|
|
|
|
2021-11-02 20:48:35 +00:00
|
|
|
jsr init_registers
|
2021-11-02 04:01:43 +00:00
|
|
|
start_interrupts:
|
|
|
|
cli
|
|
|
|
|
2021-11-02 20:48:35 +00:00
|
|
|
forever:
|
|
|
|
jmp forever
|
|
|
|
|
2021-11-02 04:01:43 +00:00
|
|
|
|
|
|
|
.include "mockingboard_setup.s"
|
|
|
|
.include "interrupt_handler.s"
|
|
|
|
|
|
|
|
.include "nozp.inc"
|
|
|
|
|
2021-11-02 20:48:35 +00:00
|
|
|
.include "yankee_music.s"
|