1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2026-01-22 18:15:59 +00:00

Somewhat passable PCM player

This commit is contained in:
David Schmenk
2025-10-20 15:34:54 -07:00
parent f1bff1e05d
commit a9a346b3b6
6 changed files with 299 additions and 216 deletions

View File

@@ -1,7 +1,7 @@
import sndseq
word musicSequence // musicSequence(yield, backgroundProc)#0
word spkrTone // spkrTone(pitch, duration)#0
word spkrPWM // spkrPWM(sample, speed, len)#0
word tonePlay // tonePlay(pitch, duration)#0
word pcmPlay // pcmPlay(samples, pagecnt)#0
predef musicPlay(track, rept)#0, musicStop#0, musicSimple
predef musicGetKey(yield, backgroundProc)#1, musicRead(filename)#1
end

View File

@@ -66,14 +66,14 @@ predef musicPlay(track, rept)#0
predef musicStop#0
predef spkrSequence(yield, func)#0
predef a2spkrTone(pitch, duration)#0
predef a2spkrPWM(sample, speed, len)#0
predef a2spkrPCM(samples, pagecnt)#0
predef a2keypressed
//
// Static sequencer values
//
export word musicSequence = @spkrSequence
export word spkrTone = @a2spkrTone
export word spkrPWM = @a2spkrPWM
export word tonePlay = @a2spkrTone
export word pcmPlay = @a2spkrPCM
word keypressed = @a2keypressed
word instr[] // Overlay with other variables
@@ -315,42 +315,45 @@ TONEXIT PLP
INX
RTS
end
asm a2spkrPWM(sample, speed, len)#0
STX ESP
LDY ESTKH,X
asm a2spkrPCM(samples, pagecnt)#0
PWM_DIV = 3
PWM_DLY = $100/PWM_DIV
LDA ESTKL,X
BEQ +
INY
+ STY DSTH
STA DSTL
LDA ESTKL+2,X
STA TMP
LDA ESTKL+1,X
STA SRCL
LDA ESTKH+2,X
LDA ESTKH+1,X
STA SRCH
LDY ESTKL+1,X
INY
STY TMPL
LDY #$00
PHP
SEI
- LDA (SRC),Y
SEC
-- LDX TMPL
--- DEX
BNE ---
SBC #$01
BCS --
BIT $C030
INY
BNE +
LDY #$00
PWM_OUT LDA (SRC),Y ; 5
STA $C030 ; 4
LSR ; 2
LSR ; 2
LSR ; 2
;LSR ; 2
; 17
end
asm pwm_on
STA ON_BR+1 ; 4
ON_BR BNE OFF_BR ; 3
!FILL 31, $EA ; 15 * 2 NOPs
EOR #$1F ; 2
STA $C030 ; 4
; 43
end
asm pwm_off
STA OFF_BR+1 ; 4
OFF_BR BNE ON_BR ; 3
!FILL 31, $EA ; 15 * 2 NOPs
INY ; 2
BNE PWM_OUT ; 3
; 12
INC SRCH
+ DEC DSTL
BNE -
DEC DSTH
BNE -
PLP
LDX ESP
INX
DEC TMP
BNE PWM_OUT
PCMEX PLP
INX
INX
RTS
@@ -389,12 +392,12 @@ def a3spkrTone(pitch, duration)#0
a2spkrTone(pitch, duration)
^ENV_REG = env
end
def a3spkrPWM(sample, speed, len)#0
def a3spkrPCM(samples, pagecnt)#0
byte env
env = ^ENV_REG
^ENV_REG = env | $C0
a2spkrPWM(sample, speed, len)
a2spkrPCM(samples, pagecnt)
^ENV_REG = env
end
//
@@ -736,7 +739,7 @@ def spkrSequence(yield, func)#0
// Percussion event
//
if seqEvent->perchanvol
//spkrPWM($D000, 0, 64) // Play some random sample as percussion
//pcmPlay($D000, 0, 64) // Play some random sample as percussion
else
if seqRepeat
musicPlay(seqTrack, TRUE)
@@ -755,7 +758,7 @@ def spkrSequence(yield, func)#0
if numNotes > 1
for i = 0 to MAX_SPKR_NOTES-1
if notes1[i]
spkrTone(periods1[i], arpeggioDuration[numNotes])#0
tonePlay(periods1[i], arpeggioDuration[numNotes])#0
fin
next
seqTime++
@@ -769,7 +772,7 @@ def spkrSequence(yield, func)#0
next
duration = eventTime - seqTime
seqTime = duration + seqTime
spkrTone(period, DUR16TH * duration)#0
tonePlay(period, DUR16TH * duration)#0
fin
if yieldTime <= seqTime; func()#0; yieldTime = seqTime + yield; fin
until keypressed()
@@ -788,7 +791,7 @@ def noSequence(yield, func)#0
repeat
seqTime++
if seqTime < 0; seqTime = 1; fin // Capture wrap-around
spkrTone(0, DUR16TH) // Waste 16th of a second playing silence
tonePlay(0, DUR16TH) // Waste 16th of a second playing silence
if keypressed(); return; fin
if yield == seqTime; func()#0; seqTime = 0; fin
until FALSE
@@ -868,8 +871,8 @@ end
when MACHID & MACHID_MODEL
is MACHID_III
spkrTone = @a3spkrTone
spkrPWM = @a3spkrPWM
tonePlay = @a3spkrTone
pcmPlay = @a3spkrPCM
keypressed = @a3keypressed
break
is MACHID_I
@@ -897,6 +900,11 @@ if mbSlot < 0
next
fin
//
// Fixups
//
pwm_on:1 = @pwm_on+4
pwm_off:1 = @pwm_off+4
//
// Keep module in memory
//
done

View File

@@ -48,6 +48,7 @@ FPSTR = rel/FPSTR\#FE1000
FPU = rel/FPU\#FE1000
SNDSEQ = rel/apple/SNDSEQ\#FE1000
PLAYSEQ = rel/apple/PLAYSEQ\#FE1000
PLAYWAV = rel/apple/PLAYWAV\#FE1000
SANITY = rel/SANITY\#FE1000
RPNCALC = rel/RPNCALC\#FE1000
LZ4 = rel/LZ4\#FE1000
@@ -119,7 +120,16 @@ TXTTYPE = .TXT
#SYSTYPE = \#FF2000
#TXTTYPE = \#040000
apple: $(PLVMZP_APL) $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVMJIT) $(PLVM802) $(PLVM03) $(PLVMJIT03) $(CMD) $(CMDJIT) $(JIT) $(JIT16) $(JITUNE) $(SOSCMD) $(SOSCMDJIT) $(PLASMAPLASM) $(CODEOPT) $(PLFORTH) $(HRFORTH) $(HR2FORTH) $(TX2FORTH) $(SEXPR) $(SMATH) $(DRAWL) $(ZIPCHIP) $(MATCHFILES) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(FIBERTEST) $(LONGJMP) $(ED) $(MON) $(COPY) $(DEL) $(REN) $(CAT) $(NEWDIR) $(TYPE) $(INITSLOT) $(SOS) $(ROD) $(SIEVE) $(PRIMEGAP) $(MOUSE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(TFTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(SFM) $(SFMSPRT) $(GRAFIX) $(GFXDEMO) $(LINES) $(HGRTILE) $(HGRFONT) $(HGRSPRITE) $(HGRLIB) $(TILETEST) $(HGRTEST) $(GRLIB) $(DGRLIB) $(VBLANK) $(GRTEST) $(DGRTEST) $(HGRTEST) $(FILEIO_APL) $(CONIO_APL) $(JOYBUZZ) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(INT32) $(INT32TEST) $(SANE) $(FPSTR) $(FPU) $(SANITY) $(LZ4) $(LZ4CAT) $(RPNCALC) $(SNDSEQ) $(PLAYSEQ) $(CONIOTEST)
apple: $(PLVMZP_APL) $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVMJIT) $(PLVM802) $(PLVM03) $(PLVMJIT03) \
$(CMD) $(CMDJIT) $(JIT) $(JIT16) $(JITUNE) $(SOSCMD) $(SOSCMDJIT) $(PLASMAPLASM) $(CODEOPT) $(PLFORTH) \
$(HRFORTH) $(HR2FORTH) $(TX2FORTH) $(SEXPR) $(SMATH) $(DRAWL) $(ZIPCHIP) $(MATCHFILES) $(ARGS) $(MEMMGR) \
$(MEMTEST) $(FIBER) $(FIBERTEST) $(LONGJMP) $(ED) $(MON) $(COPY) $(DEL) $(REN) $(CAT) $(NEWDIR) $(TYPE) \
$(INITSLOT) $(SOS) $(ROD) $(SIEVE) $(PRIMEGAP) $(MOUSE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) \
$(HTTPD) $(TFTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(SFM) $(SFMSPRT) $(GRAFIX) $(GFXDEMO) $(LINES) \
$(HGRTILE) $(HGRFONT) $(HGRSPRITE) $(HGRLIB) $(TILETEST) $(HGRTEST) $(GRLIB) $(DGRLIB) $(VBLANK) \
$(GRTEST) $(DGRTEST) $(HGRTEST) $(FILEIO_APL) $(CONIO_APL) $(JOYBUZZ) $(PORTIO) $(SPIPORT) \
$(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(INT32) $(INT32TEST) $(SANE) $(FPSTR) $(FPU) $(SANITY) \
$(LZ4) $(LZ4CAT) $(RPNCALC) $(SNDSEQ) $(PLAYSEQ) $(PLAYWAV) $(CONIOTEST)
-rm vmsrc/plvmzp.inc
@@ -433,6 +443,10 @@ $(PLAYSEQ): samplesrc/playseq.pla $(PLVM02) $(PLASM)
./$(PLASM) -AMOW samplesrc/playseq.pla
acme --setpc 4094 -o $(PLAYSEQ) samplesrc/playseq.a
$(PLAYWAV): samplesrc/playwav.pla $(PLVM02) $(PLASM)
./$(PLASM) -AMOW samplesrc/playwav.pla
acme --setpc 4094 -o $(PLAYWAV) samplesrc/playwav.a
$(GRAFIX): libsrc/apple/grafix.pla $(PLVM02) $(PLASM)
./$(PLASM) -AMOW libsrc/apple/grafix.pla
acme --setpc 4094 -o $(GRAFIX) libsrc/apple/grafix.a

347
src/mkrel
View File

@@ -2,198 +2,201 @@
make apple
cp rel/apple/CMD#061000 prodos/CMD.BIN
cp rel/apple/CMD.128#061000 prodos/CMD.128.BIN
cp rel/apple/CMD#061000 prodos/CMD.BIN
cp rel/apple/CMD.128#061000 prodos/CMD.128.BIN
cp rel/apple/PLASMA.SYSTEM#FF2000 prodos/PLASMA.SYSTEM.SYS
cp rel/apple/PLVM.128#FF2000 prodos/PLVM.128.SYS
cp rel/apple/PLVM16#FF2000 prodos/PLVM16.SYS
cp ../doc/Editor.md prodos/EDITOR.README.TXT
cp rel/apple/PLVM.128#FF2000 prodos/PLVM.128.SYS
cp rel/apple/PLVM16#FF2000 prodos/PLVM16.SYS
cp ../doc/Editor.md prodos/EDITOR.README.TXT
rm -rf prodos/sys
mkdir prodos/sys
cp rel/apple/FILEIO#FE1000 prodos/sys/FILEIO.REL
cp rel/apple/CONIO#FE1000 prodos/sys/CONIO.REL
cp rel/LINES#FE1000 prodos/sys/LINES.REL
cp rel/apple/HGRFONT#FE1000 prodos/sys/HGRFONT.REL
cp rel/apple/HGRTILE#FE1000 prodos/sys/HGRTILE.REL
cp rel/apple/HGRSPRITE#FE1000 prodos/sys/HGRSPRITE.REL
cp rel/apple/HGRLIB#FE1000 prodos/sys/HGRLIB.REL
cp rel/apple/GRLIB#FE1000 prodos/sys/GRLIB.REL
cp rel/apple/DGRLIB#FE1000 prodos/sys/DGRLIB.REL
cp rel/apple/VBLANK#FE1000 prodos/sys/VBLANK.REL
cp rel/apple/COPY#FE1000 prodos/sys/COPY.REL
cp rel/apple/DEL#FE1000 prodos/sys/DEL.REL
cp rel/apple/REN#FE1000 prodos/sys/REN.REL
cp rel/apple/CAT#FE1000 prodos/sys/CAT.REL
cp rel/apple/NEWDIR#FE1000 prodos/sys/NEWDIR.REL
cp rel/apple/TYPE#FE1000 prodos/sys/TYPE.REL
cp rel/apple/INITSLOT#FE1000 prodos/sys/INITSLOT.REL
cp rel/apple/MATCHFILES#FE1000 prodos/sys/MATCHFILES.REL
cp rel/LZ4CAT#FE1000 prodos/sys/LZ4CAT.REL
cp rel/ARGS#FE1000 prodos/sys/ARGS.REL
cp rel/ED#FE1000 prodos/sys/ED.REL
cp rel/FIBER#FE1000 prodos/sys/FIBER.REL
cp rel/LONGJMP#FE1000 prodos/sys/LONGJMP.REL
cp rel/MEMMGR#FE1000 prodos/sys/MEMMGR.REL
cp rel/INET#FE1000 prodos/sys/INET.REL
cp rel/DHCP#FE1000 prodos/sys/DHCP.REL
cp rel/ETHERIP#FE1000 prodos/sys/ETHERIP.REL
cp rel/apple/MOUSE#FE1000 prodos/sys/MOUSE.REL
cp rel/apple/UTHERNET2#FE1000 prodos/sys/UTHERNET2.REL
cp rel/apple/UTHERNET#FE1000 prodos/sys/UTHERNET.REL
cp rel/apple/PORTIO#FE1000 prodos/sys/PORTIO.REL
cp rel/apple/JOYBUZZ#FE1000 prodos/sys/JOYBUZZ.REL
cp rel/apple/SNDSEQ#FE1000 prodos/sys/SNDSEQ.REL
cp rel/apple/JIT#FE1000 prodos/sys/JIT.REL
cp rel/apple/JIT16#FE1000 prodos/sys/JIT16.REL
cp rel/apple/JITUNE#FE1000 prodos/sys/JITUNE.REL
cp rel/apple/ZIPCHIP#FE1000 prodos/sys/ZIPCHIP.REL
cp rel/LZ4#FE1000 prodos/sys/LZ4.REL
cp rel/TFTPD#FE1000 prodos/sys/TFTPD.REL
cp rel/INT32#FE1000 prodos/sys/INT32.REL
cp rel/FPSTR#FE1000 prodos/sys/FPSTR.REL
cp rel/FPU#FE1000 prodos/sys/FPU.REL
cp rel/SANE#FE1000 prodos/sys/SANE.REL
cp rel/apple/FILEIO#FE1000 prodos/sys/FILEIO.REL
cp rel/apple/CONIO#FE1000 prodos/sys/CONIO.REL
cp rel/LINES#FE1000 prodos/sys/LINES.REL
cp rel/apple/HGRFONT#FE1000 prodos/sys/HGRFONT.REL
cp rel/apple/HGRTILE#FE1000 prodos/sys/HGRTILE.REL
cp rel/apple/HGRSPRITE#FE1000 prodos/sys/HGRSPRITE.REL
cp rel/apple/HGRLIB#FE1000 prodos/sys/HGRLIB.REL
cp rel/apple/GRLIB#FE1000 prodos/sys/GRLIB.REL
cp rel/apple/DGRLIB#FE1000 prodos/sys/DGRLIB.REL
cp rel/apple/VBLANK#FE1000 prodos/sys/VBLANK.REL
cp rel/apple/COPY#FE1000 prodos/sys/COPY.REL
cp rel/apple/DEL#FE1000 prodos/sys/DEL.REL
cp rel/apple/REN#FE1000 prodos/sys/REN.REL
cp rel/apple/CAT#FE1000 prodos/sys/CAT.REL
cp rel/apple/NEWDIR#FE1000 prodos/sys/NEWDIR.REL
cp rel/apple/TYPE#FE1000 prodos/sys/TYPE.REL
cp rel/apple/INITSLOT#FE1000 prodos/sys/INITSLOT.REL
cp rel/apple/MATCHFILES#FE1000 prodos/sys/MATCHFILES.REL
cp rel/LZ4CAT#FE1000 prodos/sys/LZ4CAT.REL
cp rel/ARGS#FE1000 prodos/sys/ARGS.REL
cp rel/ED#FE1000 prodos/sys/ED.REL
cp rel/FIBER#FE1000 prodos/sys/FIBER.REL
cp rel/LONGJMP#FE1000 prodos/sys/LONGJMP.REL
cp rel/MEMMGR#FE1000 prodos/sys/MEMMGR.REL
cp rel/INET#FE1000 prodos/sys/INET.REL
cp rel/DHCP#FE1000 prodos/sys/DHCP.REL
cp rel/ETHERIP#FE1000 prodos/sys/ETHERIP.REL
cp rel/apple/MOUSE#FE1000 prodos/sys/MOUSE.REL
cp rel/apple/UTHERNET2#FE1000 prodos/sys/UTHERNET2.REL
cp rel/apple/UTHERNET#FE1000 prodos/sys/UTHERNET.REL
cp rel/apple/PORTIO#FE1000 prodos/sys/PORTIO.REL
cp rel/apple/JOYBUZZ#FE1000 prodos/sys/JOYBUZZ.REL
cp rel/apple/SNDSEQ#FE1000 prodos/sys/SNDSEQ.REL
cp rel/apple/JIT#FE1000 prodos/sys/JIT.REL
cp rel/apple/JIT16#FE1000 prodos/sys/JIT16.REL
cp rel/apple/JITUNE#FE1000 prodos/sys/JITUNE.REL
cp rel/apple/ZIPCHIP#FE1000 prodos/sys/ZIPCHIP.REL
cp rel/LZ4#FE1000 prodos/sys/LZ4.REL
cp rel/TFTPD#FE1000 prodos/sys/TFTPD.REL
cp rel/INT32#FE1000 prodos/sys/INT32.REL
cp rel/FPSTR#FE1000 prodos/sys/FPSTR.REL
cp rel/FPU#FE1000 prodos/sys/FPU.REL
cp rel/SANE#FE1000 prodos/sys/SANE.REL
cp ../sysfiles/FP6502.CODE#060000 prodos/sys/FP6502.CODE.BIN
cp ../sysfiles/ELEMS.CODE#060000 prodos/sys/ELEMS.CODE.BIN
cp rel/apple/SOS#FE1000 prodos/sys/SOS.REL
cp rel/apple/GRAFIX#FE1000 prodos/sys/GRAFIX.REL
cp rel/HRFORTH#FE1000 prodos/sys/HRFORTH.REL
cp rel/HR2FORTH#FE1000 prodos/sys/HR2FORTH.REL
cp rel/TX2FORTH#FE1000 prodos/sys/TX2FORTH.REL
cp rel/PLFORTH#FE1000 prodos/sys/PLFORTH.REL
cp ../sysfiles/ELEMS.CODE#060000 prodos/sys/ELEMS.CODE.BIN
cp rel/apple/SOS#FE1000 prodos/sys/SOS.REL
cp rel/apple/GRAFIX#FE1000 prodos/sys/GRAFIX.REL
cp rel/HRFORTH#FE1000 prodos/sys/HRFORTH.REL
cp rel/HR2FORTH#FE1000 prodos/sys/HR2FORTH.REL
cp rel/TX2FORTH#FE1000 prodos/sys/TX2FORTH.REL
cp rel/PLFORTH#FE1000 prodos/sys/PLFORTH.REL
mkdir prodos/sys/scripts
cp scripts/plasma.4th prodos/sys/scripts/PLASMA.4TH.TXT
cp scripts/machid.4th prodos/sys/scripts/MACHID.4TH.TXT
cp scripts/conio.4th prodos/sys/scripts/CONIO.4TH.TXT
cp scripts/fileio.4th prodos/sys/scripts/FILEIO.4TH.TXT
cp scripts/grlib.4th prodos/sys/scripts/GRLIB.4TH.TXT
cp scripts/dgrlib.4th prodos/sys/scripts/DGRLIB.4TH.TXT
cp scripts/hgrlib.4th prodos/sys/scripts/HGRLIB.4TH.TXT
cp scripts/grafix.4th prodos/sys/scripts/GRAFIX.4TH.TXT
cp scripts/int32.4th prodos/sys/scripts/INT32.4TH.TXT
cp scripts/fpu.4th prodos/sys/scripts/FPU.4TH.TXT
cp scripts/plasma.4th prodos/sys/scripts/PLASMA.4TH.TXT
cp scripts/machid.4th prodos/sys/scripts/MACHID.4TH.TXT
cp scripts/conio.4th prodos/sys/scripts/CONIO.4TH.TXT
cp scripts/fileio.4th prodos/sys/scripts/FILEIO.4TH.TXT
cp scripts/grlib.4th prodos/sys/scripts/GRLIB.4TH.TXT
cp scripts/dgrlib.4th prodos/sys/scripts/DGRLIB.4TH.TXT
cp scripts/hgrlib.4th prodos/sys/scripts/HGRLIB.4TH.TXT
cp scripts/grafix.4th prodos/sys/scripts/GRAFIX.4TH.TXT
cp scripts/int32.4th prodos/sys/scripts/INT32.4TH.TXT
cp scripts/fpu.4th prodos/sys/scripts/FPU.4TH.TXT
rm -rf prodos/demos
mkdir prodos/demos
cp rel/INT32TEST#FE1000 prodos/demos/INT32TEST.REL
cp rel/apple/CONIOTEST#FE1000 prodos/demos/CONIOTEST.REL
cp rel/apple/ROD#FE1000 prodos/demos/ROD.REL
cp rel/RPNCALC#FE1000 prodos/demos/RPNCALC.REL
cp ../doc/ROGUE.LZ4.BIN prodos/demos/ROGUE.LZ4.BIN
cp rel/PRIMEGAP#FE1000 prodos/demos/PRIMEGAP.REL
cp rel/INT32TEST#FE1000 prodos/demos/INT32TEST.REL
cp rel/apple/CONIOTEST#FE1000 prodos/demos/CONIOTEST.REL
cp rel/apple/ROD#FE1000 prodos/demos/ROD.REL
cp rel/RPNCALC#FE1000 prodos/demos/RPNCALC.REL
cp ../doc/ROGUE.LZ4.BIN prodos/demos/ROGUE.LZ4.BIN
cp rel/PRIMEGAP#FE1000 prodos/demos/PRIMEGAP.REL
mkdir prodos/demos/rogue
cp rel/ROGUE#FE1000 prodos/demos/rogue/ROGUE.REL
cp rel/ROGUECOMBAT#FE1000 prodos/demos/rogue/ROGUECOMBAT.REL
cp rel/ROGUEMAP#FE1000 prodos/demos/rogue/ROGUEMAP.REL
cp rel/ROGUE#FE1000 prodos/demos/rogue/ROGUE.REL
cp rel/ROGUECOMBAT#FE1000 prodos/demos/rogue/ROGUECOMBAT.REL
cp rel/ROGUEMAP#FE1000 prodos/demos/rogue/ROGUEMAP.REL
cp samplesrc/LEVEL0#040000 prodos/demos/rogue/LEVEL0.TXT
cp samplesrc/LEVEL1#040000 prodos/demos/rogue/LEVEL1.TXT
mkdir prodos/demos/music
cp rel/apple/PLAYSEQ#FE1000 prodos/demos/music/PLAYSEQ.REL
cp mockingboard/ultima3.seq prodos/demos/music/ULTIMA3.SEQ.BIN
cp rel/apple/PLAYSEQ#FE1000 prodos/demos/music/PLAYSEQ.REL
cp rel/apple/PLAYWAV#FE1000 prodos/demos/music/PLAYWAV.REL
cp mockingboard/ultima3.seq prodos/demos/music/ULTIMA3.SEQ.BIN
cp mockingboard/startrek.seq prodos/demos/music/STARTREK.SEQ.BIN
cp mockingboard/hello.wav prodos/demos/music/HELLO.WAV.BIN
mkdir prodos/demos/net
cp rel/HTTPD#FE1000 prodos/demos/net/HTTPD.REL
cp rel/HTTPD#FE1000 prodos/demos/net/HTTPD.REL
cp samplesrc/index.html prodos/demos/net/INDEX.HTML.TXT
mkdir prodos/demos/apple2
cp rel/apple/TILETEST#FE1000 prodos/demos/apple2/TILETEST.REL
cp rel/apple/HGRTEST#FE1000 prodos/demos/apple2/HGRTEST.REL
cp rel/apple/GRTEST#FE1000 prodos/demos/apple2/GRTEST.REL
cp rel/apple/DGRTEST#FE1000 prodos/demos/apple2/DGRTEST.REL
cp rel/apple/HGRTEST#FE1000 prodos/demos/apple2/HGRTEST.REL
cp rel/apple/GRTEST#FE1000 prodos/demos/apple2/GRTEST.REL
cp rel/apple/DGRTEST#FE1000 prodos/demos/apple2/DGRTEST.REL
mkdir prodos/demos/apple2/spiders
cp rel/apple/SFM#FE1000 prodos/demos/apple2/spiders/SFM.REL
cp rel/apple/SFM#FE1000 prodos/demos/apple2/spiders/SFM.REL
cp rel/apple/SFMSPRT#FE1000 prodos/demos/apple2/spiders/SFMSPRT.REL
mkdir prodos/demos/apple2/sdutils
cp rel/apple/SPIPORT#FE1000 prodos/demos/apple2/sdutils/SPIPORT.REL
cp rel/apple/SDFAT#FE1000 prodos/demos/apple2/sdutils/SDFAT.REL
cp rel/apple/FATCAT#FE1000 prodos/demos/apple2/sdutils/FATCAT.REL
cp rel/apple/FATGET#FE1000 prodos/demos/apple2/sdutils/FATGET.REL
cp rel/apple/FATPUT#FE1000 prodos/demos/apple2/sdutils/FATPUT.REL
cp rel/apple/FATREADDSK#FE1000 prodos/demos/apple2/sdutils/FATREADDSK.REL
cp rel/apple/SPIPORT#FE1000 prodos/demos/apple2/sdutils/SPIPORT.REL
cp rel/apple/SDFAT#FE1000 prodos/demos/apple2/sdutils/SDFAT.REL
cp rel/apple/FATCAT#FE1000 prodos/demos/apple2/sdutils/FATCAT.REL
cp rel/apple/FATGET#FE1000 prodos/demos/apple2/sdutils/FATGET.REL
cp rel/apple/FATPUT#FE1000 prodos/demos/apple2/sdutils/FATPUT.REL
cp rel/apple/FATREADDSK#FE1000 prodos/demos/apple2/sdutils/FATREADDSK.REL
cp rel/apple/FATWRITEDSK#FE1000 prodos/demos/apple2/sdutils/FATWRITEDSK.REL
mkdir prodos/demos/apple3
cp rel/apple/GFXDEMO#FE1000 prodos/demos/apple3/GFXDEMO.REL
cp rel/apple/GFXDEMO#FE1000 prodos/demos/apple3/GFXDEMO.REL
cp samplesrc/APPLE3.PIX#060000 prodos/demos/apple3/APPLE3.PIX.BIN
rm -rf prodos/bld
mkdir prodos/bld
cp rel/PLASM#FE1000 prodos/bld/PLASM.REL
cp rel/CODEOPT#FE1000 prodos/bld/CODEOPT.REL
cp ../sysfiles/EDASM#FF2000 prodos/bld/EDASM.SYS
cp ../sysfiles/EDASM.ASM#063000 prodos/bld/EDASM.ASM.BIN
cp ../sysfiles/EDASM.ED#063000 prodos/bld/EDASM.ED.BIN
cp rel/PLASM#FE1000 prodos/bld/PLASM.REL
cp rel/CODEOPT#FE1000 prodos/bld/CODEOPT.REL
cp ../sysfiles/EDASM#FF2000 prodos/bld/EDASM.SYS
cp ../sysfiles/EDASM.ASM#063000 prodos/bld/EDASM.ASM.BIN
cp ../sysfiles/EDASM.ED#063000 prodos/bld/EDASM.ED.BIN
cp ../sysfiles/EDASM.SWAP#062000 prodos/bld/EDASM.SWAP.BIN
mkdir prodos/bld/basic
cp ../sysfiles/BASIC.SYSTEM#FF2000 prodos/bld/basic/BASIC.SYS
cp samplesrc/rod.bas prodos/bld/basic/ROD.BAS.TXT
cp samplesrc/rod.bas prodos/bld/basic/ROD.BAS.TXT
mkdir prodos/bld/samples
cp samplesrc/hello.pla prodos/bld/samples/HELLO.PLA.TXT
cp samplesrc/hello.pla prodos/bld/samples/HELLO.PLA.TXT
cp samplesrc/int32test.pla prodos/bld/samples/INT32TEST.PLA.TXT
cp samplesrc/coniotest.pla prodos/bld/samples/CONIOTEST.PLA.TXT
cp samplesrc/grtest.pla prodos/bld/samples/GRTEST.PLA.TXT
cp samplesrc/dgrtest.pla prodos/bld/samples/DGRTEST.PLA.TXT
cp samplesrc/hgrtest.pla prodos/bld/samples/HGRTEST.PLA.TXT
cp samplesrc/tiletest.pla prodos/bld/samples/TILETEST.PLA.TXT
cp samplesrc/grtest.pla prodos/bld/samples/GRTEST.PLA.TXT
cp samplesrc/dgrtest.pla prodos/bld/samples/DGRTEST.PLA.TXT
cp samplesrc/hgrtest.pla prodos/bld/samples/HGRTEST.PLA.TXT
cp samplesrc/tiletest.pla prodos/bld/samples/TILETEST.PLA.TXT
cp samplesrc/fibertest.pla prodos/bld/samples/FIBERTEST.PLA.TXT
cp samplesrc/mousetest.pla prodos/bld/samples/MOUSETEST.PLA.TXT
cp samplesrc/memtest.pla prodos/bld/samples/MEMTEST.PLA.TXT
cp samplesrc/rod.pla prodos/bld/samples/ROD.PLA.TXT
cp samplesrc/sieve.pla prodos/bld/samples/SIEVE.PLA.TXT
cp samplesrc/test.pla prodos/bld/samples/TEST.PLA.TXT
cp samplesrc/testlib.pla prodos/bld/samples/TESTLIB.PLA.TXT
cp samplesrc/playseq.pla prodos/bld/samples/PLAYSEQ.PLA.TXT
cp samplesrc/rpncalc.pla prodos/bld/samples/RPNCALC.PLA.TXT
cp samplesrc/fatcat.pla prodos/bld/samples/FATCAT.PLA.TXT
cp samplesrc/gfxdemo.pla prodos/bld/samples/GFXDEMO.PLA.TXT
cp samplesrc/sfm.pla prodos/bld/samples/SFM.PLA.TXT
cp samplesrc/sfmsprt.pla prodos/bld/samples/SFMSPRT.PLA.TXT
cp samplesrc/fppow.pla prodos/bld/samples/FPPOW.PLA.TXT
cp utilsrc/apple/mon.pla prodos/bld/samples/MON.PLA.TXT
cp samplesrc/memtest.pla prodos/bld/samples/MEMTEST.PLA.TXT
cp samplesrc/rod.pla prodos/bld/samples/ROD.PLA.TXT
cp samplesrc/sieve.pla prodos/bld/samples/SIEVE.PLA.TXT
cp samplesrc/test.pla prodos/bld/samples/TEST.PLA.TXT
cp samplesrc/testlib.pla prodos/bld/samples/TESTLIB.PLA.TXT
cp samplesrc/playseq.pla prodos/bld/samples/PLAYSEQ.PLA.TXT
cp samplesrc/playwav.pla prodos/bld/samples/PLAYWAV.PLA.TXT
cp samplesrc/rpncalc.pla prodos/bld/samples/RPNCALC.PLA.TXT
cp samplesrc/fatcat.pla prodos/bld/samples/FATCAT.PLA.TXT
cp samplesrc/gfxdemo.pla prodos/bld/samples/GFXDEMO.PLA.TXT
cp samplesrc/sfm.pla prodos/bld/samples/SFM.PLA.TXT
cp samplesrc/sfmsprt.pla prodos/bld/samples/SFMSPRT.PLA.TXT
cp samplesrc/fppow.pla prodos/bld/samples/FPPOW.PLA.TXT
cp utilsrc/apple/mon.pla prodos/bld/samples/MON.PLA.TXT
cp utilsrc/apple/zipchip.pla prodos/bld/samples/ZIPCHIP.PLA.TXT
cp samplesrc/testrel.asm prodos/bld/samples/TESTREL.ASM.TXT
cp samplesrc/testext.asm prodos/bld/samples/TESTEXT.ASM.TXT
cp samplesrc/testasm.pla prodos/bld/samples/TESTASM.PLA.TXT
cp samplesrc/testrel.asm prodos/bld/samples/TESTREL.ASM.TXT
cp samplesrc/testext.asm prodos/bld/samples/TESTEXT.ASM.TXT
cp samplesrc/testasm.pla prodos/bld/samples/TESTASM.PLA.TXT
cp libsrc/apple/debug.asm prodos/bld/samples/DEBUG.ASM.TXT
cp libsrc/apple/mxtui.pla prodos/bld/samples/MXTUI.PLA.TXT
cp libsrc/apple/debug.asm prodos/bld/samples/DEBUG.ASM.TXT
cp libsrc/apple/mxtui.pla prodos/bld/samples/MXTUI.PLA.TXT
mkdir prodos/bld/scripts
cp scripts/rod.4th prodos/bld/scripts/ROD.4TH.TXT
cp scripts/bounce.4th prodos/bld/scripts/BOUNCE.4TH.TXT
cp scripts/dbounce.4th prodos/bld/scripts/DBOUNCE.4TH.TXT
cp scripts/hrbounce.4th prodos/bld/scripts/HRBOUNCE.4TH.TXT
cp scripts/plot.4th prodos/bld/scripts/PLOT.4TH.TXT
cp scripts/hrplot.4th prodos/bld/scripts/HRPLOT.4TH.TXT
cp scripts/gfxplot.4th prodos/bld/scripts/GFXPLOT.4TH.TXT
cp scripts/hdinstall.4th prodos/bld/scripts/HDINSTALL.4TH.TXT
cp scripts/rod.4th prodos/bld/scripts/ROD.4TH.TXT
cp scripts/bounce.4th prodos/bld/scripts/BOUNCE.4TH.TXT
cp scripts/dbounce.4th prodos/bld/scripts/DBOUNCE.4TH.TXT
cp scripts/hrbounce.4th prodos/bld/scripts/HRBOUNCE.4TH.TXT
cp scripts/plot.4th prodos/bld/scripts/PLOT.4TH.TXT
cp scripts/hrplot.4th prodos/bld/scripts/HRPLOT.4TH.TXT
cp scripts/gfxplot.4th prodos/bld/scripts/GFXPLOT.4TH.TXT
cp scripts/hdinstall.4th prodos/bld/scripts/HDINSTALL.4TH.TXT
cp scripts/hdinstall1.4th prodos/bld/scripts/HDINSTALL1.4TH.TXT
cp scripts/hdinstall2.4th prodos/bld/scripts/HDINSTALL2.4TH.TXT
mkdir prodos/bld/lisp
cp rel/SEXPR#FE1000 prodos/bld/lisp/SEXPR.REL
cp rel/SMATH#FE1000 prodos/bld/lisp/SMATH.REL
cp rel/DRAWL#FE1000 prodos/bld/lisp/DRAWL.REL
cp lisp/set.lisp prodos/bld/lisp/SET.LISP.TXT
cp lisp/list.lisp prodos/bld/lisp/LIST.LISP.TXT
cp lisp/maplist.lisp prodos/bld/lisp/MAPLIST.LISP.TXT
cp lisp/gcd.lisp prodos/bld/lisp/GCD.LISP.TXT
cp lisp/fact.lisp prodos/bld/lisp/FACT.LISP.TXT
cp lisp/loop.lisp prodos/bld/lisp/LOOP.LISP.TXT
cp lisp/minmax.lisp prodos/bld/lisp/MINMAX.LISP.TXT
cp lisp/prog.lisp prodos/bld/lisp/PROG.LISP.TXT
cp lisp/lores.lisp prodos/bld/lisp/LORES.LISP.TXT
cp lisp/defun.lisp prodos/bld/lisp/DEFUN.LISP.TXT
cp lisp/rod.lisp prodos/bld/lisp/ROD.LISP.TXT
cp rel/SEXPR#FE1000 prodos/bld/lisp/SEXPR.REL
cp rel/SMATH#FE1000 prodos/bld/lisp/SMATH.REL
cp rel/DRAWL#FE1000 prodos/bld/lisp/DRAWL.REL
cp lisp/set.lisp prodos/bld/lisp/SET.LISP.TXT
cp lisp/list.lisp prodos/bld/lisp/LIST.LISP.TXT
cp lisp/maplist.lisp prodos/bld/lisp/MAPLIST.LISP.TXT
cp lisp/gcd.lisp prodos/bld/lisp/GCD.LISP.TXT
cp lisp/fact.lisp prodos/bld/lisp/FACT.LISP.TXT
cp lisp/loop.lisp prodos/bld/lisp/LOOP.LISP.TXT
cp lisp/minmax.lisp prodos/bld/lisp/MINMAX.LISP.TXT
cp lisp/prog.lisp prodos/bld/lisp/PROG.LISP.TXT
cp lisp/lores.lisp prodos/bld/lisp/LORES.LISP.TXT
cp lisp/defun.lisp prodos/bld/lisp/DEFUN.LISP.TXT
cp lisp/rod.lisp prodos/bld/lisp/ROD.LISP.TXT
#mkdir prodos/bld/examples
#cp samplesrc/examples/ex.1.pla prodos/bld/examples/EX.1.PLA.TXT
@@ -215,38 +218,38 @@ cp lisp/rod.lisp prodos/bld/lisp/ROD.LISP.TXT
#cp samplesrc/examples/ex.17.pla prodos/bld/examples/EX.17.PLA.TXT
mkdir prodos/bld/inc
cp inc/args.plh prodos/bld/inc/ARGS.PLH.TXT
cp inc/matchfiles.plh prodos/bld/inc/MATCHFILES.PLH.TXT
cp inc/cmdsys.plh prodos/bld/inc/CMDSYS.PLH.TXT
cp inc/conio.plh prodos/bld/inc/CONIO.PLH.TXT
cp inc/lines.plh prodos/bld/inc/LINES.PLH.TXT
cp inc/hgrfont.plh prodos/bld/inc/HGRFONT.PLH.TXT
cp inc/hgrtile.plh prodos/bld/inc/HGRTILE.PLH.TXT
cp inc/hgrsprite.plh prodos/bld/inc/HGRSPRITE.PLH.TXT
cp inc/hgrlib.plh prodos/bld/inc/HGRLIB.PLH.TXT
cp inc/grlib.plh prodos/bld/inc/GRLIB.PLH.TXT
cp inc/dgrlib.plh prodos/bld/inc/DGRLIB.PLH.TXT
cp inc/vblank.plh prodos/bld/inc/VBLANK.PLH.TXT
cp inc/fiber.plh prodos/bld/inc/FIBER.PLH.TXT
cp inc/fileio.plh prodos/bld/inc/FILEIO.PLH.TXT
cp inc/int32.plh prodos/bld/inc/INT32.PLH.TXT
cp inc/fpstr.plh prodos/bld/inc/FPSTR.PLH.TXT
cp inc/fpu.plh prodos/bld/inc/FPU.PLH.TXT
cp inc/mouse.plh prodos/bld/inc/MOUSE.PLH.TXT
cp inc/inet.plh prodos/bld/inc/INET.PLH.TXT
cp inc/longjmp.plh prodos/bld/inc/LONGJMP.PLH.TXT
cp inc/memmgr.plh prodos/bld/inc/MEMMGR.PLH.TXT
cp inc/sane.plh prodos/bld/inc/SANE.PLH.TXT
cp inc/joybuzz.plh prodos/bld/inc/JOYBUZZ.PLH.TXT
cp inc/portio.plh prodos/bld/inc/PORTIO.PLH.TXT
cp inc/sdfat.plh prodos/bld/inc/SDFAT.PLH.TXT
cp inc/sndseq.plh prodos/bld/inc/SNDSEQ.PLH.TXT
cp inc/spiport.plh prodos/bld/inc/SPIPORT.PLH.TXT
cp inc/testlib.plh prodos/bld/inc/TESTLIB.PLH.TXT
cp inc/grafix.plh prodos/bld/inc/GRAFIX.PLH.TXT
cp inc/lz4.plh prodos/bld/inc/LZ4.PLH.TXT
cp inc/plasma.inc prodos/bld/inc/PLASMA.INC.TXT
cp inc/extheader.inc prodos/bld/inc/EXTHEADER.INC.TXT
cp inc/extdefseg.inc prodos/bld/inc/EXTDEFSEG.INC.TXT
cp inc/args.plh prodos/bld/inc/ARGS.PLH.TXT
cp inc/matchfiles.plh prodos/bld/inc/MATCHFILES.PLH.TXT
cp inc/cmdsys.plh prodos/bld/inc/CMDSYS.PLH.TXT
cp inc/conio.plh prodos/bld/inc/CONIO.PLH.TXT
cp inc/lines.plh prodos/bld/inc/LINES.PLH.TXT
cp inc/hgrfont.plh prodos/bld/inc/HGRFONT.PLH.TXT
cp inc/hgrtile.plh prodos/bld/inc/HGRTILE.PLH.TXT
cp inc/hgrsprite.plh prodos/bld/inc/HGRSPRITE.PLH.TXT
cp inc/hgrlib.plh prodos/bld/inc/HGRLIB.PLH.TXT
cp inc/grlib.plh prodos/bld/inc/GRLIB.PLH.TXT
cp inc/dgrlib.plh prodos/bld/inc/DGRLIB.PLH.TXT
cp inc/vblank.plh prodos/bld/inc/VBLANK.PLH.TXT
cp inc/fiber.plh prodos/bld/inc/FIBER.PLH.TXT
cp inc/fileio.plh prodos/bld/inc/FILEIO.PLH.TXT
cp inc/int32.plh prodos/bld/inc/INT32.PLH.TXT
cp inc/fpstr.plh prodos/bld/inc/FPSTR.PLH.TXT
cp inc/fpu.plh prodos/bld/inc/FPU.PLH.TXT
cp inc/mouse.plh prodos/bld/inc/MOUSE.PLH.TXT
cp inc/inet.plh prodos/bld/inc/INET.PLH.TXT
cp inc/longjmp.plh prodos/bld/inc/LONGJMP.PLH.TXT
cp inc/memmgr.plh prodos/bld/inc/MEMMGR.PLH.TXT
cp inc/sane.plh prodos/bld/inc/SANE.PLH.TXT
cp inc/joybuzz.plh prodos/bld/inc/JOYBUZZ.PLH.TXT
cp inc/portio.plh prodos/bld/inc/PORTIO.PLH.TXT
cp inc/sdfat.plh prodos/bld/inc/SDFAT.PLH.TXT
cp inc/sndseq.plh prodos/bld/inc/SNDSEQ.PLH.TXT
cp inc/spiport.plh prodos/bld/inc/SPIPORT.PLH.TXT
cp inc/testlib.plh prodos/bld/inc/TESTLIB.PLH.TXT
cp inc/grafix.plh prodos/bld/inc/GRAFIX.PLH.TXT
cp inc/lz4.plh prodos/bld/inc/LZ4.PLH.TXT
cp inc/plasma.inc prodos/bld/inc/PLASMA.INC.TXT
cp inc/extheader.inc prodos/bld/inc/EXTHEADER.INC.TXT
cp inc/extdefseg.inc prodos/bld/inc/EXTDEFSEG.INC.TXT
make -f dhgr.tk/makefile all

BIN
src/mockingboard/hello.wav Normal file

Binary file not shown.

58
src/samplesrc/playwav.pla Executable file
View File

@@ -0,0 +1,58 @@
include "inc/cmdsys.plh"
include "inc/args.plh"
include "inc/fileio.plh"
include "inc/sndseq.plh"
//
// These are utility sequences/routines needed to test the music sequencer code.
//
word arg, pcm, len
byte ref
byte sinewave[]
byte = $80, $83, $86, $89, $8C, $8F, $92, $95, $98, $9C, $9F, $A2, $A5, $A8, $AB, $AE
byte = $B0, $B3, $B6, $B9, $BC, $BF, $C1, $C4, $C7, $C9, $CC, $CE, $D1, $D3, $D5, $D8
byte = $DA, $DC, $DE, $E0, $E2, $E4, $E6, $E8, $EA, $EC, $ED, $EF, $F0, $F2, $F3, $F5
byte = $F6, $F7, $F8, $F9, $FA, $FB, $FC, $FC, $FD, $FE, $FE, $FF, $FF, $FF, $FF, $FF
byte = $FF, $FF, $FF, $FF, $FF, $FF, $FE, $FE, $FD, $FC, $FC, $FB, $FA, $F9, $F8, $F7
byte = $F6, $F5, $F3, $F2, $F0, $EF, $ED, $EC, $EA, $E8, $E6, $E4, $E2, $E0, $DE, $DC
byte = $DA, $D8, $D5, $D3, $D1, $CE, $CC, $C9, $C7, $C4, $C1, $BF, $BC, $B9, $B6, $B3
byte = $B0, $AE, $AB, $A8, $A5, $A2, $9F, $9C, $98, $95, $92, $8F, $8C, $89, $86, $83
byte = $80, $7C, $79, $76, $73, $70, $6D, $6A, $67, $63, $60, $5D, $5A, $57, $54, $51
byte = $4F, $4C, $49, $46, $43, $40, $3E, $3B, $38, $36, $33, $31, $2E, $2C, $2A, $27
byte = $25, $23, $21, $1F, $1D, $1B, $19, $17, $15, $13, $12, $10, $0F, $0D, $0C, $0A
byte = $09, $08, $07, $06, $05, $04, $03, $03, $02, $01, $01, $00, $00, $00, $00, $00
byte = $00, $00, $00, $00, $00, $00, $01, $01, $02, $03, $03, $04, $05, $06, $07, $08
byte = $09, $0A, $0C, $0D, $0F, $10, $12, $13, $15, $17, $19, $1B, $1D, $1F, $21, $23
byte = $25, $27, $2A, $2C, $2E, $31, $33, $36, $38, $3B, $3E, $40, $43, $46, $49, $4C
byte = $4F, $51, $54, $57, $5A, $5D, $60, $63, $67, $6A, $6D, $70, $73, $76, $79, $7C
arg = argNext(argFirst)
if ^arg
ref = fileio:open(arg)
if ref
pcm = heapmark
len = fileio:read(ref, pcm, heapavail)
fileio:close(ref)
heapalloc(len)
pcm = pcm + 44
len = len - 44
pcmPlay(pcm, len / 256)#0
fin
else
while ^$C000 < 128
pcmPlay(@sinewave, 1)#0
loop
getc
memset(@sinewave, $10F0, 256)
while ^$C000 < 128
pcmPlay(@sinewave, 1)#0
loop
getc
memset(@sinewave, $8080, 256)
while ^$C000 < 128
pcmPlay(@sinewave, 1)#0
loop
getc
fin
done