]
# see lemonade_tone_patched.lst
-TONE_PERIOD = 0x300
-TONE_DUR = 0x301
-TONE_TONE = 0x302
-TONE_TONE1 = 0x310
-
-# see lemonade_tone_nick.lst
-NICK_REST = 0x300
-NICK_TONE = 0x308
-NICK_DURL = 0x309
-NICK_DURH = 0x30b
-NICK_FREQL = 0x30d
-NICK_FREQH = 0x314
+LEMONADE_TONE_PERIOD = 0x300
+LEMONADE_TONE_DUR = 0x301
+LEMONADE_TONE_TONE = 0x302
+LEMONADE_TONE_TONE1 = 0x310
+
+# see tone.lst
+TONE_REST = 0x300
+TONE_TONE = 0x308
+TONE_DURL = 0x309
+TONE_DURH = 0x30b
+TONE_FREQL = 0x30d
+TONE_FREQH = 0x314
# see lemonade_flash_patched.lst
FLASH_INIT = 0x3600
global flash_color0
addr &= 0xffff
- if addr == NICK_REST or addr == NICK_TONE:
+ if addr == TONE_REST or addr == TONE_TONE:
pass
- ## for lemonade_patched, see test/lemonade_tone_nick.py
- #if addr == NICK_REST:
- # low_mem[NICK_FREQL] = 0
- # low_mem[NICK_FREQH] = 0
- #frequency_incr = low_mem[NICK_FREQL] + (low_mem[NICK_FREQH] << 8)
- #duration_count = -(low_mem[NICK_DURL] + (low_mem[NICK_DURH] << 8))
+ ## for lemonade_patched, see test/tone.py
+ #if addr == TONE_REST:
+ # low_mem[TONE_FREQL] = 0
+ # low_mem[TONE_FREQH] = 0
+ #frequency_incr = low_mem[TONE_FREQL] + (low_mem[TONE_FREQH] << 8)
+ #duration_count = -(low_mem[TONE_DURL] + (low_mem[TONE_DURH] << 8))
#duration_count = ((duration_count - 1) & 0xffff) + 1
#duration = 3.58309497e-10 + duration_count * (
# 2.34821712e-05 + frequency_incr * 4.47591203e-11
# tone(1. / period, duration)
#else:
# time.sleep(duration)
- elif addr == TONE_TONE or addr == TONE_TONE1:
+ elif addr == LEMONADE_TONE_TONE or addr == LEMONADE_TONE_TONE1:
# for lemonade, see test/lemonade_tone_patched.py
- period_count = ((low_mem[TONE_PERIOD] - 1) & 0xff) + 1
- duration_count = ((low_mem[TONE_DUR] - 1) & 0xff) + 1
+ period_count = ((low_mem[LEMONADE_TONE_PERIOD] - 1) & 0xff) + 1
+ duration_count = ((low_mem[LEMONADE_TONE_DUR] - 1) & 0xff) + 1
cycles = 1.37788799e-02 + duration_count * (
-4.21513128e-06 + 1.27999925e+02 / period_count
)
.PHONY: all
all: lemonade_patched.dsk lemonade_tone_patched.obj
-lemonade_patched.dsk: lemonade_patched.bin lemonade_tone_nick.obj lemonade_flash_patched.obj bootable.dsk
+lemonade_patched.dsk: lemonade_patched.bin tone.obj lemonade_flash_patched.obj bootable.dsk
cp bootable.dsk $@
${DOS33} $@ DELETE HELLO
${DOS33} $@ SAVE A lemonade_patched.bin "LEMONADE PATCHED"
- ${DOS33} $@ SAVE B lemonade_tone_nick.obj "LEMONADE TONE NICK.OBJ"
+ ${DOS33} $@ SAVE B tone.obj TONE.OBJ
${DOS33} $@ SAVE B lemonade_flash_patched.obj "LEMONADE FLASH PATCHED.OBJ"
${DOS33} $@ HELLO "LEMONADE PATCHED"
lemonade.bin: ../orig/Lemonade_Stand_1979_Apple.do
${DOS33} $< LOAD LEMONADE $@
-lemonade_tone_nick.obj: \
-lemonade_tone_nick.asm \
-lemonade_tone_nick_asm.txt \
+tone.obj: \
+tone.asm \
+tone_asm.txt \
bootable.dsk \
../orig/DOS_Tool_Kit_v1.0_1980_Apple.do
cp ../orig/DOS_Tool_Kit_v1.0_1980_Apple.do .
- tr '\t\na-z' ' \rA-Z' <lemonade_tone_nick.asm |\
+ tr '\t\na-z' ' \rA-Z' <tone.asm |\
LC_ALL=C tr '\000-\177' '\200-\377' >__temp__.asm
${MKDOS33FS} __temp__.dsk
- ${DOS33} __temp__.dsk SAVE T __temp__.asm "LEMONADE TONE NICK.ASM"
+ ${DOS33} __temp__.dsk SAVE T __temp__.asm TONE.ASM
rm -f ../linapple-pie/Printer.txt
- tr '\n' '\r' <lemonade_tone_nick_asm.txt |\
+ tr '\n' '\r' <tone_asm.txt |\
( \
cd ../linapple-pie && \
./linapple -b -1 ../lemonade/DOS_Tool_Kit_v1.0_1980_Apple.do -2 ../lemonade/__temp__.dsk \
)
- tr -d '\r' <../linapple-pie/Printer.txt >lemonade_tone_nick.lst
- ${DOS33} __temp__.dsk LOAD "LEMONADE TONE NICK.OBJ" $@
+ tr -d '\r' <../linapple-pie/Printer.txt >tone.lst
+ ${DOS33} __temp__.dsk LOAD TONE.OBJ $@
rm DOS_Tool_Kit_v1.0_1980_Apple.do __temp__.asm __temp__.dsk
lemonade_tone_patched.obj: \
---- lemonade.bas 2022-05-20 00:21:16.340356477 +1000
-+++ lemonade_patched.bas 2022-05-22 16:49:59.180075298 +1000
+--- lemonade.bas 2022-05-24 17:44:06.656892314 +1000
++++ lemonade_patched.bas 2022-05-24 17:44:21.104892896 +1000
@@ -1,5 +1,3 @@
-1LOMEM:14080
-5GOSUB10000:GOSUB11000:GOSUB16000:GOTO135
90REM BY CHARLIE KELLNER
+100IFPEEK(116)<150THENPRINT"48K REQUIRED":END
+105HIMEM:38272
-+110PRINT CHR$(4);"BLOAD LEMONADE TONE NICK.OBJ":RE=768:TN=776:DL=777:DH=779:FL=781:FH=788
++110PRINT CHR$(4);"BLOAD TONE.OBJ":RE=768:TN=776:DL=777:DH=779:FL=781:FH=788
+115PRINT CHR$(4);"BLOAD LEMONADE FLASH PATCHED.OBJ":FE=38278:FI=38383
+120IN#0:PR#0
+125GOSUB11000
+++ /dev/null
-BRUN EDASM.OBJ
-PR#1
-DR 2
-ASM LEMONADE TONE NICK.ASM,LEMONADE TONE NICK.OBJ
-
--- /dev/null
+BRUN EDASM.OBJ
+PR#1
+DR 2
+ASM TONE.ASM,TONE.OBJ
+
semitone = j + int(note[len(semitones[j]):]) * 12
frequency = 2. ** (semitone / 12.) * 110.
- # constants were calculated by lemonade_tone_nick.py:
+ # constants were calculated by tone.py:
frequency_incr = round(
2.34821712e-05 / (1. / frequency / 0x1fffe - 4.47591203e-11)
)
- # constants were calculated by lemonade_tone_nick.py:
+ # constants were calculated by tone.py:
duration_count = round(
(duration - 3.58309497e-10) /
(2.34821712e-05 + frequency_incr * 4.47591203e-11)
print(f'frequency_incr {frequency_incr:04x} duration_count {duration_count:04x} note {note:>4s} duration {duration:7.3f}')
-# converted music for lemonade_tone_nick.obj
+# converted music for tone.obj
music = [
# welcome
[
],
]
-# see ../lemonade/lemonade_tone_nick.lst
+# see ../lemonade/tone.lst
REST = 0x300
TONE = 0x308
DURL = 0x309
#!/bin/sh
cp ../lemonade/bootable.dsk .
-../dos33fsprogs/utils/dos33fs-utils/dos33 bootable.dsk SAVE B ../lemonade/lemonade_tone_nick.obj "LEMONADE TONE NICK.OBJ"
+../dos33fsprogs/utils/dos33fs-utils/dos33 bootable.dsk SAVE B ../lemonade/tone.obj TONE.OBJ
./lemonade_music.py |sed -ne '/^10PRINT/,$p' >lemonade_music.bas