Finish making the tune a program
The user's conversion, which I reverted while I was working out whether it was half done or broken. It was half done: an sbx application wants its #Include above #Program, because services.asm ends in a #Vectors block and a #Base written after that has no segment to be the base of. So the include moves up, the bases move a page with everything else, and the test starts it from the shell instead of booting it. It plays for 9,469,987 cycles, 9,423,527 of them waiting, which is the same 567 frames of music it played as a boot image. BEING A PROGRAM MEANS ITS VECTOR IS THE SYSTEM'S TO INSTALL. It brings the screen's, so that it has a beat to play to, and CosmOS puts it in when the tune starts and takes it back out when it stops - a thing a boot image never had to have right, and the second program here to exercise the version two format at all. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW
This commit is contained in:
co-authored by
Claude Opus 5
parent
3449405b18
commit
b04e4b7d1c
@@ -35,8 +35,12 @@
|
||||
; that the inner loop is two: the note, and letting go of it. That split is what the selector
|
||||
; and value registers are for - see Making A Noise in the Programming Manual.
|
||||
|
||||
#Include services.asm
|
||||
|
||||
#Program
|
||||
|
||||
#Base 0x5000
|
||||
|
||||
start:
|
||||
|
||||
; ---- The instrument ----
|
||||
@@ -182,7 +186,7 @@ lastRing:
|
||||
CIF
|
||||
RSTA
|
||||
OUTA 0x35
|
||||
HALT
|
||||
SWI osExit
|
||||
|
||||
; Sixty times a second, and it has nothing to do. WAIT only needs something to have happened,
|
||||
; and this is the something. A handler still has to exist: an interrupt with nothing installed
|
||||
@@ -192,6 +196,8 @@ frame:
|
||||
|
||||
#Data
|
||||
|
||||
#Base 0x3000
|
||||
|
||||
; ---- Notes and how long they last ----
|
||||
;
|
||||
; Pairs: a MIDI note, then a count of frames. 60 is middle C and every 12 is an octave. A zero
|
||||
|
||||
Reference in New Issue
Block a user