Home » Archimedes archive » Acorn User » AU 1994-03.adf » !StarInfo_StarInfo » Salt/!MakeWaves/!RunImage
Salt/!MakeWaves/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1994-03.adf » !StarInfo_StarInfo |
Filename: | Salt/!MakeWaves/!RunImage |
Read OK: | ✔ |
File size: | 57C1 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM > !RunImage (!MakeWaves) 20: 30ON ERROR ERROR EXT ERR,REPORT$ 40SYS "Wimp_Initialise",200,&4B534154,"MakeWaves" TO ,task% 50PROCinit 60ON ERROR IF FNquery(REPORT$+" / "+STR$ ERL) ELSE PROCexit:END 70REPEAT 80 IF voice%=0 AND worksp%<>-1 THEN 90 SYS "XSound_InstallVoice",mc%+voicebase TO ,voice%;a% 100 IF a% AND 1:voice%=0:PROCprevious 110 ENDIF 120 IF file$="<Wimp$Scrap>" THEN 130 !q%=overwrite%:SYS "Wimp_GetWindowState",,q% 140 IF q%?34 AND 1 ELSE file$="":*Remove <Wimp$Scrap> 150 ENDIF 160 SYS "Wimp_Poll",,q% TO r% 170 CASE r% OF 180 WHEN 1:PROCredraw 190 WHEN 2:SYS "Wimp_OpenWindow",,q% 200 WHEN 3:SYS "Wimp_CloseWindow",,q% 210 WHEN 6:PROCmouse 220 WHEN 7:PROCdrag 230 WHEN 8:PROCkey 240 WHEN 9:PROCmenu 250 WHEN 17,18:PROCmessage 260 ENDCASE 270UNTIL quit% 280PROCexit 290IF shutdown%:SYS "Wimp_ProcessKey",508 300END 310: 320DEF PROCexit 330PROCclaim(-1) 340SYS "XOS_Module",7,,mc% 350PROCprevious 360IF voice%:SYS "Sound_RemoveVoice",,voice% 370ENDPROC 380: 390DEF PROCinit 400DIM q% 1520,icon% 1024,menu% 172,menu1% 100,vol% 255,st% 92,plot 200 410DIM notes$(1),note%(6),sharp%(4):name%=q%+300:err%=q%+1000 420notes$()="C C#D D#E F F#G G#A A#B ","C DbD EbE F GbG AbA BbB " 430note%()=0,2,4,5,7,9,11:sharp%()=0,1,3,4,5 440worksp%=-1:file$="" 450SYS "OS_File",5,"<Obey$Dir>.Sprites" TO a%,,,,l% 460IF a%<>1:ERROR 214,"File 'Sprites' not found" 470DIM spr% l%+16:!spr%=l%+16 480SYS "OS_SpriteOp",256+9,spr% 490SYS "OS_SpriteOp",256+10,spr%,"<Obey$Dir>.Sprites" 500ptr%=icon% 510LOCAL ERROR 520ON ERROR LOCAL SYS "XWimp_CloseTemplate":ERROR EXT ERR,REPORT$ 530SYS "Wimp_OpenTemplate",,"<Obey$Dir>.Templates" 540PROCtemplate("Info") 550SYS "Wimp_CreateWindow",,q% TO info% 560PROCtemplate("Save") 570saveptr%=q%!172:saveicon%=q%!144+LEN $(q%!144)-3 580SYS "Wimp_CreateWindow",,q% TO save% 590PROCtemplate("Edit") 600nameptr%=q%!108:slenptr%=q%!140 610svolptr%=q%!172:rofsptr%=q%!204 620rlenptr%=q%!236 630SYS "Wimp_CreateWindow",,q% TO edit% 640PROCtemplate("Keyboard") 650q%!64=spr% 660FOR n%=q%+136 TO q%+1224 STEP 32 670 !n%=!n% OR 256:n%!4=q%!108:n%!8=q%!112 680NEXT 690SYS "Wimp_CreateWindow",,q% TO keyboard% 700PROCtemplate("Unsaved") 710SYS "Wimp_CreateWindow",,q% TO overwrite% 720PROCtemplate("Quit") 730SYS "Wimp_CreateWindow",,q% TO discard% 740PROCtemplate("Waveform") 750SYS "Wimp_CreateWindow",,q% TO waveform% 760RESTORE ERROR 770SYS "Wimp_CloseTemplate" 780PROCdisable 790!q%=-1:q%!4=0 800q%!8=0:q%!12=104 810q%!16=68:q%!20=&3002 820$(q%+24)="!makewaves" 830SYS "Wimp_CreateIcon",,q% 840SYS "OS_Module",6,,,640 TO ,,mc% 850voice%=0:prev%=0 860quit%=FALSE:shutdown%=FALSE 870drag%=FALSE:asm%=FALSE 880text%=FALSE:linsignd%=FALSE 890unsaved%=FALSE 900FOR n%=0 TO 255 910 SYS "Sound_SoundLog",n%<<24 TO a% 920 n%?vol%=a% 930NEXT 940RESTORE +0 950PROCmakemenu(menu%) 960PROCmakemenu(menu1%) 970menux%=100:menuy%=360 980FOR p%=0 TO 2 STEP 2 990P%=plot 1000[OPT p% 1010STMFD 13!,{14} 1020MOV 0,#7 1030SWI "Wimp_SetColour" 1040.plotloop 1050MOV 9,#40 1060BL modulus 1070BNE plotpoint 1080MOV 0,#3 1090SWI "Wimp_SetColour" 1100MOV 9,#200 1110BL modulus 1120MOVEQ 11,#40 1130MOVNE 11,#20 1140MOV 0,#4 1150ADD 1,4,6 1160SUB 2,7,11 1170SWI "OS_Plot" 1180MOV 0,#5 1190ADD 1,4,6 1200ADD 2,7,11 1210SWI "OS_Plot" 1220MOV 0,#7 1230SWI "Wimp_SetColour" 1240.plotpoint 1250MOV 0,#69 1260ADD 1,4,6 1270LDRB 8,[3,4,LSR #1] 1280AND 2,8,#254 1290TST 8,#1 1300RSBNE 2,2,#0 1310ADD 2,2,7 1320SWI "OS_Plot" 1330ADD 4,4,#2 1340CMP 4,5 1350BLE plotloop 1360LDMFD 13!,{PC} 1370: 1380.modulus 1390MOV 8,4 1400MOV 10,9 1410.max 1420MOV 9,9,LSL #1 1430CMP 8,9 1440BGT max 1450.mod 1460MOV 9,9,LSR #1 1470CMP 8,9 1480SUBGE 8,8,9 1490TEQ 9,10 1500BNE mod 1510SUB 10,10,#2 1520TEQ 8,10 1530MOV PC,14 1540]NEXT 1550ENDPROC 1560DATA MakeWaves,&70207,136,44,0 1570DATA 0,info%,&7000021,"Info" 1580DATA 0,-1,&7000021,"Edit" 1590DATA 0,menu1%,&7400021,"Save" 1600DATA 0,-1,&7000021,"Keyboard" 1610DATA 0,-1,&7400021,"Waveform" 1620DATA 128,-1,&7000021,"Quit" 1630DATA Save,&70207,136,44,0 1640DATA 8,save%,&7000021,"LinSignd" 1650DATA 8,save%,&7000021,"STsample" 1660DATA 136,save%,&7000021,"Module" 1670: 1680DEF PROCmakemenu(a%) 1690READ $a%,a%!12,a%!16,a%!20,a%!24:a%+=4 1700REPEAT 1710 a%+=24:READ !a%,a%!4,a%!8,$(a%+12) 1720UNTIL !a% AND 128 1730ENDPROC 1740: 1750DEF PROCtemplate(a$) 1760SYS "Wimp_LoadTemplate",,q%,ptr%,icon%+1024,-1,a$ TO ,,ptr%,,,,c% 1770IF c% ELSE ERROR 1,"Template '"+a$+"' not found" 1780ENDPROC 1790: 1800DEF PROCmessage 1810CASE q%!16 OF 1820WHEN 0:shutdown%=FALSE:quit%=NOT unsaved%:IF quit% ELSE PROCcentre(discard%) 1830WHEN 1:PROCdatasave 1840WHEN 2:PROCdatasaveack 1850WHEN 3:PROCdataload 1860WHEN 5:PROCdataopen 1870WHEN 8:quit%=NOT unsaved%:shutdown%=TRUE 1880 IF quit%=FALSE THEN 1890 !q%=20:q%!12=q%!8:q%!16=0 1900 SYS "Wimp_SendMessage",19,q% 1910 PROCcentre(discard%) 1920 ENDIF 1930WHEN &400C0 1940 IF q%!20=save% THEN 1950 $saveicon%=MID$("D3CCB5FFA",q%!36*3+1,3) 1960 SYS "Wimp_CreateSubMenu",,save%,q%!24,q%!28 1970 ENDIF 1980ENDCASE 1990ENDPROC 2000: 2010DEF PROCline(x%) 2020IF x% AND rlen<3:ENDPROC 2030LOCAL y%,z% 2040SYS "OS_ReadModeVariable",-1,4 TO ,,y%:y%=(1<<y%) 2050IF x%:z%=(rofs+rlen-1)*2 AND -y%:ELSE z%=(rofs-1)*2 AND -y% 2060SYS "Wimp_ForceRedraw",waveform%,z%,-512,z%+y%,0 2070IF x% ELSE PROCline(TRUE) 2080ENDPROC 2090: 2100DEF PROCredraw 2110SYS "Wimp_RedrawWindow",,q% TO more% 2120G%=q%!4-q%!20:H%=q%!16-q%!24-256 2130WHILE more% 2140 D%=worksp%-length%*linsignd% 2150 E%=q%!28-G%:F%=q%!36-G% 2160 SYS "Wimp_SetColour",3 2170 LINE E%+G%,H%,F%+G%,H% 2180 SYS "Wimp_SetColour",10 2190 MOVE rofs*2+G%-2,H%-256:DRAW BY 0,512 2200 IF rlen>2 THEN 2210 SYS "Wimp_SetColour",11 2220 MOVE (rofs+rlen)*2+G%-2,H%-256:DRAW BY 0,512 2230 ENDIF 2240 CALL plot 2250 SYS "Wimp_GetRectangle",,q% TO more% 2260ENDWHILE 2270ENDPROC 2280: 2290DEF PROCmouse 2300IF q%!8 AND 2 THEN 2310 CASE q%!12 OF 2320 WHEN -2:mx%=!q%-menux%:my%=menuy%:SYS "Wimp_CreateMenu",,menu%,mx%,my% 2330 WHEN edit%,keyboard%,waveform% 2340 mx%=!q%-64:my%=q%!4+64:SYS "Wimp_CreateMenu",,menu%,mx%,my% 2350 ENDCASE 2360ELSE 2370 CASE q%!12 OF 2380 WHEN -2:IF q%!8 AND 1:PROCopen(keyboard%):ELSE PROCopen(edit%) 2390 WHEN save% 2400 CASE q%!16 OF 2410 WHEN 0 2420 IF INSTR($saveptr%,".") THEN 2430 $name%=$saveptr%:PROCdosave 2440 ELSE 2450 PROCtellthemoff("To save, drag the file icon to a directory viewer.") 2460 ENDIF 2470 WHEN 1 2480 !q%=save%:q%!4=1:SYS "Wimp_GetIconState",,q% 2490 q%!40=save%:SYS "Wimp_GetWindowState",,q%+40 2500 q%!8+=q%!44-q%!60:q%!16+=q%!44-q%!60 2510 q%!12+=q%!56-q%!64:q%!20+=q%!56-q%!64 2520 q%!24=0:q%!28=0:q%!4=5 2530 q%!32=-1>>>1:q%!36=q%!32 2540 drag%=FNdrag(197,1,"file_"+$saveicon%) 2550 ENDCASE 2560 WHEN edit% 2570 a%=q%!8 AND 1 2580 CASE q%!16 OF 2590 WHEN 5+a%:b%=FNeval(svolptr%) 2600 IF b%:$svolptr%=STR$ (b%-1):PROCicon(edit%,2,1):a%=2 2610 WHEN 6-a%:b%=FNeval(svolptr%) 2620 IF b%<255:$svolptr%=STR$ (b%+1):PROCicon(edit%,2,1):a%=2 2630 WHEN 7+a%:rofs=FNeval(rofsptr%) 2640 IF rofs THEN 2650 PROCline(FALSE):rofs-=1 2660 $rofsptr%=STR$ rofs:PROCicon(edit%,3,1) 2670 PROCline(FALSE):a%=2 2680 ENDIF 2690 WHEN 8-a%:rofs=FNeval(rofsptr%) 2700 IF rofs<length%-FNeval(rlenptr%) THEN 2710 PROCline(FALSE):rofs+=1 2720 $rofsptr%=STR$ rofs:PROCicon(edit%,3,1) 2730 PROCline(FALSE):a%=2 2740 ENDIF 2750 WHEN 9+a%:rlen=FNeval(rlenptr%) 2760 IF rlen>2 THEN 2770 PROCline(TRUE):rlen-=1 2780 $rlenptr%=STR$ rlen:PROCicon(edit%,4,1) 2790 PROCline(TRUE):a%=2 2800 ENDIF 2810 WHEN 10-a%:rlen=FNeval(rlenptr%) 2820 IF rlen<length%-FNeval(rofsptr%) THEN 2830 PROCline(TRUE):rlen+=1 2840 $rlenptr%=STR$ rlen:PROCicon(edit%,4,1) 2850 PROCline(TRUE):a%=2 2860 ENDIF 2870 WHEN 16,17,18:$saveicon%=MID$("D3CCB5FFA",q%!16*3-47,3) 2880 mx%=!q%-64:my%=q%!4+64:SYS "Wimp_CreateMenu",,save%,mx%,my% 2890 ENDCASE 2900 IF a%=2:asm%=FALSE:unsaved%=TRUE 2910 WHEN keyboard% 2920 IF q%!16=40 THEN 2930 SOUND 1,0,0,0 2940 ELSE 2950 IF q%!16>-1 AND q%!16<36 THEN 2960 IF worksp%>-1 AND NOT asm% THEN 2970 PROCreleasevoice 2980 PROCassemble 2990 SYS "XSound_InstallVoice",mc%+voicebase TO ,voice%;a% 3000 IF a% AND 1:voice%=0:PROCprevious 3010 ENDIF 3020 IF voice% THEN 3030 SYS "Sound_AttachVoice",1,voice% TO ,a% 3040 IF a%<>voice%:prev%=a% 3050 ENDIF 3060 IF q%!16<21 THEN 3070 pitch%=note%(q%!16 MOD 7) 3080 ELSE 3090 pitch%=q%!16-21:q%!16=(pitch% DIV 5)*7+sharp%(pitch% MOD 5) 3100 pitch%=note%(q%!16 MOD 7)+1 3110 ENDIF 3120 pitch%=4096*(q%!16 DIV 7+3)+pitch%*1024/3 3130 SOUND 1,&17F,pitch%,255 3140 ENDIF 3150 ENDIF 3160 WHEN waveform% 3170 x%=!q%:!q%=waveform%:SYS "Wimp_GetWindowState",,q%+12 3180 x%=(x%+q%!32-q%!16)/2+1 3190 IF q%!8 AND 1 THEN 3200 PROCline(TRUE) 3210 IF x%<rofs:rlen=2:ELSE rlen=x%-rofs 3220 IF rlen<2:rlen=2 3230 IF rofs+rlen>length%:rlen=length%-rofs 3240 IF rlen<2:rlen=2:rofs=length%-2 3250 PROCline(TRUE) 3260 $rlenptr%=STR$ rlen:PROCicon(edit%,4,1) 3270 ELSE 3280 PROCline(FALSE):rofs=x% 3290 IF rofs+rlen>length% THEN 3300 rlen=length%-rofs:IF rlen<2:rofs=length%-2:rlen=2 3310 $rlenptr%=STR$ rlen:PROCicon(edit%,4,1) 3320 ENDIF 3330 PROCline(FALSE) 3340 $rofsptr%=STR$ rofs:PROCicon(edit%,3,1) 3350 ENDIF 3360 asm%=FALSE:unsaved%=TRUE 3370 WHEN overwrite% 3380 IF q%!16=0 THEN 3390 IF type%<0:type%=-type%:SYS "Wimp_SendMessage",17,q%+1200,q%!1204 3400 PROCdoload 3410 ENDIF 3420 SYS "Wimp_CreateMenu",,-1 3430 WHEN discard% 3440 IF q%!16=0:quit%=TRUE:ELSE shutdown%=FALSE 3450 SYS "Wimp_CreateMenu",,-1 3460 ENDCASE 3470ENDIF 3480ENDPROC 3490: 3500DEF FNdrag(A%,B%,a$) 3510LOCAL mx%,my% 3520SYS "OS_Byte",161,28 TO ,,mx% 3530IF mx% AND 2 THEN 3540 SYS &62400,A%,B%,a$,q%+8,q%+24 TO ;A%:REM XDragASprite_Start 3550 my%=1:IF A% AND 1:mx%=0 3560ENDIF 3570IF mx% AND 2 ELSE my%=-1:SYS "Wimp_DragBox",,q% 3580=my% 3590: 3600DEF PROCdrag 3610SYS "Wimp_GetPointerInfo",,q%+128 3620q%!20=q%!140 3630q%!24=q%!144 3640CASE $saveicon% OF 3650WHEN "D3C":q%!36=length%+3 AND -4 3660WHEN "CB5":q%!36=length%+95 AND -4 3670WHEN "FFA":q%!36=length%+1027 AND -4 3680ENDCASE 3690q%!40=EVAL ("&"+$saveicon%) 3700a$=FNleaf($saveptr%) 3710$(q%+44)=a$+CHR$0 3720!q%=48+LEN a$ AND -4 3730q%!12=0:q%!16=1 3740SYS "Wimp_SendMessage",17,q%,q%!20,q%!24 3750drag%=0 3760ENDPROC 3770: 3780DEF PROCmenu 3790SYS "Wimp_GetPointerInfo",,q%+20 3800CASE !q% OF 3810WHEN 0:SYS "Wimp_CreateMenu",,info%,q%!20-64,q%!24+64:q%!28=0 3820WHEN 1:PROCopen(edit%) 3830WHEN 2 3840 IF q%!4>=0 AND q%!4<3 THEN 3850 $saveicon%=MID$("D3CCB5FFA",q%!4*3+1,3) 3860 SYS "Wimp_CreateMenu",,save%,mx%,my%:q%!28=0 3870 ENDIF 3880WHEN 3:PROCopen(keyboard%) 3890WHEN 4:PROCopen(waveform%) 3900WHEN 5:shutdown%=FALSE:quit%=NOT unsaved%:IF quit% ELSE PROCcentre(discard%) 3910ENDCASE 3920IF q%!28 AND 1:SYS "Wimp_CreateMenu",,menu%,mx%,my% 3930ENDPROC 3940: 3950DEF PROCopen(q%!600) 3960SYS "Wimp_GetWindowState",,q%+600 3970q%!628=TRUE:SYS "Wimp_OpenWindow",,q%+600 3980ENDPROC 3990: 4000DEF PROCfront(q%!600) 4010SYS "Wimp_GetWindowState",,q%+600 4020IF q%?634 AND 1:q%!628=TRUE:SYS "Wimp_OpenWindow",,q%+600 4030ENDPROC 4040: 4050DEF PROCcentre(q%!600) 4060SYS "Wimp_GetWindowState",,q%+600 4070SYS "OS_ReadModeVariable",MODE,4 TO ,,a% 4080SYS "OS_ReadModeVariable",MODE,11 TO ,,x% 4090x%=x%<<a% 4100SYS "OS_ReadModeVariable",MODE,5 TO ,,a% 4110SYS "OS_ReadModeVariable",MODE,12 TO ,,y% 4120y%=y%<<a% 4130SYS "Wimp_CreateMenu",,q%!600,(x%+q%!604-q%!612)/2,(y%+q%!616-q%!608)/2 4140ENDPROC 4150: 4160DEF PROCdataopen 4170IF q%!40<>&D3C AND q%!40<>&CB5 AND q%!40<>6:ENDPROC 4180q%!16=4:q%!12=q%!8 4190type%=q%!40:file$=FNread(q%+44) 4200SYS "Wimp_SendMessage",17,q%,q%!4 4210IF unsaved%:PROCcentre(overwrite%):ENDPROC 4220PROCdoload 4230ENDPROC 4240: 4250DEF PROCdatasave 4260IF q%!4=task%:ENDPROC 4270IF q%!40<>&FFF AND q%!40<>&D3C AND q%!40<>&CB5 AND q%!40<>6:ENDPROC 4280text%=q%!40=&FFF 4290linsignd%=text% OR q%!40=&D3C 4300SYS "XOS_ReadVarVal","Wimp$Scrap",name%,0 TO a%;f% 4310IF f% AND 1 AND !a%=&124:PROCtellthemoff("Could not transfer file: no scrap file set"):ENDPROC 4320$(q%+44)="<Wimp$Scrap>"+CHR$ 0 4330q%!16=2:q%!12=q%!8:!q%=60:q%!36=-1 4340SYS "Wimp_SendMessage",17,q%,q%!4 4350ENDPROC 4360: 4370DEF PROCdataload 4380IF q%!40<>&FFF AND q%!40<>&D3C AND q%!40<>&CB5 AND q%!40<>6:ENDPROC 4390q%!16=4:q%!12=q%!8 4400type%=-q%!40:file$=FNread(q%+44) 4410FOR n%=0 TO !q%-1 STEP 4 4420 q%!1200=!q% 4430NEXT 4440SYS "Wimp_SendMessage",17,q%,q%!4 4450IF unsaved%:PROCcentre(overwrite%):ENDPROC 4460type%=ABS type%:PROCdoload 4470ENDPROC 4480: 4490DEF PROCdoload 4500SYS "Wimp_CreateMenu",,-1 4510text%=type%=&FFF 4520linsignd%=text% OR type%=&D3C 4530$saveptr%=file$ 4540SYS "OS_File",5,saveptr% TO a%,,,,filelen% 4550IF a%<>1:ENDPROC 4560unsaved%=FALSE 4570CASE TRUE OF 4580WHEN text%:loaded%=FNprocess_text:IF loaded%:unsaved%=TRUE 4590WHEN linsignd%:loaded%=FNprocess_linsignd 4600OTHERWISE:loaded%=FNprocess_stsample 4610ENDCASE 4620IF loaded% THEN 4630 menu%?86=0:menu%?134=0 4640 menu1%?38=64 AND NOT linsignd% 4650 PROCenable 4660 IF linsignd% ELSE PROCicon(edit%,16,0) 4670 PROCopen(edit%):PROCfront(keyboard%) 4680ELSE 4690 menu%?86=64:menu%?134=0 4700 !q%=waveform%:SYS "Wimp_CloseWindow",,q% 4710 PROCclaim(-1):PROCdisable 4720ENDIF 4730IF $saveptr%="<Wimp$Scrap>":$saveptr%="SampleFile" 4740SYS "Wimp_ForceRedraw",waveform%,0,-512,1E6,0 4750ENDPROC 4760: 4770DEF PROCdatasaveack 4780IF q%!4=task% THEN ENDPROC 4790a$=FNread(q%+44):$name%=a$ 4800IF a$<>"<Wimp$Scrap>":$saveptr%=a$ 4810PROCdosave 4820q%!16=3:q%!12=q%!8 4830SYS "Wimp_SendMessage",18,q%,q%!4 4840ENDPROC 4850: 4860DEF PROCdosave 4870LOCAL out% 4880LOCAL ERROR 4890ON ERROR LOCAL RESTORE ERROR:PROCtellthemoff(REPORT$):PROCcloseit:ENDPROC 4900CASE $saveicon% OF 4910WHEN "D3C":SYS "OS_File",10,name%,&D3C,,worksp%,worksp%+length% 4920WHEN "CB5":PROCsave_stsample 4930WHEN "FFA":PROCsave_module 4940ENDCASE 4950RESTORE ERROR 4960SYS "Wimp_GetPointerInfo",,q%+300 4970IF q%!308 AND 1 ELSE SYS "Wimp_CreateMenu",,-1 4980unsaved%=FALSE 4990ENDPROC 5000: 5010DEF PROCcloseit 5020LOCAL ERROR 5030ON ERROR LOCAL RESTORE ERROR:PROCtellthemoff(REPORT$):ENDPROC 5040IF out%:CLOSE #out% 5050RESTORE ERROR 5060ENDPROC 5070: 5080DEF PROCkey 5090f%=FALSE 5100CASE !q% OF 5110WHEN save% 5120 IF q%!24=13 THEN 5130 f%=TRUE 5140 IF INSTR($saveptr%,".") THEN 5150 $name%=$saveptr%:PROCdosave 5160 ELSE 5170 PROCtellthemoff("To save, drag the file icon to a directory viewer.") 5180 ENDIF 5190 ENDIF 5200WHEN edit% 5210 CASE TRUE OF 5220 WHEN q%!4>0 AND q%!24>47 AND q%!24<58:asm%=FALSE:unsaved%=TRUE 5230 WHEN q%!4=0 AND q%!24>31 AND q%!24<256:asm%=FALSE:unsaved%=TRUE 5240 ENDCASE 5250 IF q%!24=13 THEN 5260 CASE q%!4 OF 5270 WHEN 2:IF $svolptr%="":$svolptr%="0":f%=2 5280 a%=FNeval(svolptr%):IF a%>255:$svolptr%="255":f%=2 5290 WHEN 3:PROCline(FALSE) 5300 IF $rofsptr%="":$rofsptr%="0":f%=3 5310 rofs=FNeval(rofsptr%):b%=FNeval(rlenptr%):IF b%=0:b%=1 5320 IF rofs>length%-b%:rofs=length%-b%:$rofsptr%=STR$ rofs:f%=3 5330 PROCline(FALSE) 5340 WHEN 4:PROCline(TRUE) 5350 rlen=FNeval(rlenptr%):b%=FNeval(rofsptr%) 5360 IF rlen<2:rlen=2:$rlenptr%="2":f%=4 5370 IF rlen>length%-b%:rlen=length%-b%:$rlenptr%=STR$ rlen:f%=4 5380 SYS "Wimp_SetCaretPosition",edit%,0,,,-1,LEN $nameptr% 5390 PROCline(TRUE) 5400 ENDCASE 5410 IF f%:PROCicon(edit%,f%,1):f%=FALSE 5420 ENDIF 5430ENDCASE 5440IF f% ELSE SYS "Wimp_ProcessKey",q%!24 5450ENDPROC 5460: 5470DEF PROCtellthemoff(t$) 5480IF drag%=-1:SYS "Wimp_DragBox",,-1 5490IF drag%=1:SYS "DragASprite_Stop" 5500drag%=0 5510!err%=0:$(err%+4)=t$+CHR$ 0 5520PROCprevious 5530SYS "Wimp_ReportError",err%,1,"MakeWaves" 5540ENDPROC 5550: 5560DEF FNquery(t$) 5570!err%=0:$(err%+4)=t$+CHR$ 0 5580PROCprevious 5590SYS "Wimp_ReportError",err%,3,"MakeWaves" TO ,r% 5600=r%=1 5610: 5620DEF PROCprevious 5630IF prev% ELSE prev%=1 5640SYS "Sound_AttachVoice",1,prev% 5650prev%=FALSE 5660ENDPROC 5670: 5680DEF PROCdisable 5690FOR n%=0 TO 10 5700 PROCicon(edit%,n%,0) 5710NEXT 5720FOR n%=16 TO 18 5730 PROCicon(edit%,n%,0) 5740NEXT 5750ENDPROC 5760: 5770DEF PROCenable 5780FOR n%=0 TO 10 5790 PROCicon(edit%,n%,1) 5800NEXT 5810FOR n%=16 TO 18 5820 PROCicon(edit%,n%,1) 5830NEXT 5840ENDPROC 5850: 5860DEF FNread(q%) 5870LOCAL a$ 5880WHILE ?q%>31 5890 a$+=CHR$ ?q%:q%+=1 5900ENDWHILE 5910=a$ 5920: 5930DEF FNeval(q%) 5940=EVAL ("0"+$q%) 5950: 5960DEF FNevallim(q%,max%,a$) 5970LOCAL a% 5980a%=EVAL ("0"+$q%) 5990IF a%>max%:PROCtellthemoff("The "+a$+" is too big"):=-1 6000=a% 6010: 6020DEF PROCicon(!q%,q%!4,n%) 6030LOCAL q%!8,q%!12,q%!16,q%!20,q%!24,q%!28 6040q%!8=n%=0 AND 1<<22:q%!12=1<<22 6050SYS "Wimp_SetIconState",,q% 6060SYS "Wimp_GetCaretPosition",,q%+8 6070IF !q%=q%!8 AND q%!4=q%!12:SYS "Wimp_SetCaretPosition",-1 6080ENDPROC 6090: 6100DEF FNleaf(a$) 6110WHILE INSTR(a$,":")>1 6120 a$=MID$(a$,INSTR(a$,":")+1) 6130ENDWHILE 6140WHILE INSTR(a$,".")>1 6150 a$=MID$(a$,INSTR(a$,".")+1) 6160ENDWHILE 6170=a$ 6180: 6190DEF FNprocess_text 6200SYS "Hourglass_On" 6210LOCAL ERROR 6220ON ERROR LOCAL RESTORE ERROR:PROCclosein:IF ERR=2:PROCtellthemoff(REPORT$):=FALSE:ELSE PROCtellthemoff(REPORT$+" (line "+STR$ line%+")"):=FALSE 6230line%=0:a=0 6240bend=0:vol=127 6250vbend=0:noise=0 6260in%=OPENIN $saveptr% 6270ext=EXT #in%/100 6280IF ext=0:RESTORE ERROR:PROCcloseit:PROCtellthemoff("No description for waveform"):=FALSE 6290FOR pass%=0 TO 1 6300 P%=worksp%*pass%:PTR #in%=0 6310 p$=FNline(in%) 6320 WHILE p$>"" 6330 PROCeval(p$) 6340 IF pass% THEN 6350 n=noise:p=2^(note/12+3) 6360 IF note=999:p=0:n=0 6370 b=2^(bend/12)^(1/256/len) 6380 v=vol:w=vbend/256/len 6390 IF n THEN 6400 n+=1 6410 FOR p%=0 TO len*256-1 6420 P%?p%=v*SIN ((a+RND(n)-1)*PI/128):a+=p:p=p*b:v+=w:IF a>=254:a-=254 6430 NEXT 6440 ELSE 6450 FOR p%=0 TO len*256-1 6460 P%?p%=v*SIN (a*PI/128):a+=p:p=p*b:v+=w:IF a>=254:a-=254 6470 NEXT 6480 ENDIF 6490 ELSE 6500 p%=len*256 6510 ENDIF 6520 IF pass%:SYS "Hourglass_Percentage",PTR #in%/ext 6530 P%+=p%:p$=FNline(in%) 6540 ENDWHILE 6550 IF pass% ELSE length%=P%:PROCclaim(P%*2):SYS "Hourglass_Percentage" 6560NEXT 6570RESTORE ERROR 6580PROCclosein 6590PROCprocess_linsignd 6600PROCassemble 6610SYS "Hourglass_Off" 6620=TRUE 6630: 6640DEF PROCeval(p$) 6650LOCAL q$ 6660WHILE RIGHT$(p$)=" " 6670 p$=LEFT$(p$) 6680ENDWHILE 6690p$=FNspc(p$+" ") 6700note=999:len=0 6710bend=0:vbend=0 6720WHILE p$>"" 6730 q$=LEFT$(p$,1):p$=FNspc(MID$(p$,2)) 6740 CASE q$ OF 6750 WHEN "b","B":bend=VAL p$ 6760 WHEN "l","L":len=VAL p$ 6770 WHEN "n","N":note=FNnote(LEFT$(p$,INSTR(p$," ")-1)) 6780 WHEN "p","P":note=VAL p$ 6790 WHEN "v","V":vol=VAL p$ 6800 WHEN "w","W":vbend=VAL p$ 6810 WHEN "z","Z":noise=VAL p$*2.54 6820 OTHERWISE:ERROR 1,"Bad parameter '"+q$+"'" 6830 ENDCASE 6840 p$=FNspc(MID$(p$,INSTR(p$," "))) 6850ENDWHILE 6860IF note=999 AND vol=0 THEN 6870 IF bend OR vbend:ERROR 1,"Can't bend rests" 6880ENDIF 6890IF (note<-24 OR note>24) AND vol:ERROR 1,"Bad or missing note name/number" 6900IF len<=0:ERROR 1,"Bad or missing note length" 6910IF vol<0 OR vol>127:ERROR 1,"Bad volume level" 6920IF (note+bend<-24 OR note+bend>24) AND vol:ERROR 1,"Note bent out of range" 6930IF vol+vbend<0 OR vol+vbend>127:ERROR 1,"Volume bent out of range" 6940IF noise<0 OR noise>254:ERROR "Noise level out of range" 6950IF noise>0 AND noise<1:noise=1 6960ENDPROC 6970: 6980DEF FNspc(p$) 6990WHILE ASC p$=32 7000 p$=MID$(p$,2) 7010ENDWHILE 7020=p$ 7030: 7040DEF FNnote(p$) 7050IF LEFT$(p$,1)<"A":=EVAL p$ 7060LOCAL p% 7070IF ASC p$>96:LEFT$(p$,1)=CHR$ (ASC p$-32) 7080IF MID$(p$,2,1)="b":p%=1 7090=INSTR(notes$(p%),LEFT$(LEFT$(p$)+" ",2))/2+12*VAL RIGHT$(p$)-24.5 7100: 7110DEF FNline(in%) 7120LOCAL p$ 7130WHILE p$="" OR ASC p$=35 7140 line%+=1 7150 IF EOF #in%:p$=" ":ELSE p$=FNspc(GET$#in%) 7160ENDWHILE 7170IF p$=" ":="" 7180=p$ 7190: 7200DEF PROCclosein 7210SYS "Hourglass_Off" 7220IF in%:CLOSE #in% 7230ENDPROC 7240: 7250DEF FNprocess_linsignd 7260SYS "Hourglass_On" 7270LOCAL ERROR 7280ON ERROR LOCAL RESTORE ERROR:SYS "Hourglass_Off":PROCtellthemoff(REPORT$):=FALSE 7290length%=filelen%:PROCclaim(length%*2) 7300SYS "OS_File",255,saveptr%,worksp% 7310RESTORE ERROR 7320PROCprocess_linsignd 7330PROCassemble 7340SYS "Hourglass_Off" 7350=TRUE 7360: 7370DEF FNprocess_stsample 7380SYS "Hourglass_On" 7390LOCAL ERROR 7400ON ERROR LOCAL RESTORE ERROR:SYS "Hourglass_Off":PROCtellthemoff(REPORT$):=FALSE 7410PROCclaim(filelen%) 7420SYS "OS_File",255,saveptr%,worksp% 7430RESTORE ERROR 7440LOCAL a$,b$,a%,b% 7450rofs=0:rlen=2 7460svol=255:slen=0 7470name$="" 7480a%=worksp% 7490IF !a%=&504D4153 THEN 7500 a%=worksp%+8 7510 REPEAT 7520 a$=CHR$ ?a%+CHR$ a%?1+CHR$ a%?2+CHR$ a%?3 7530 CASE a$ OF 7540 WHEN "SDAT":a%!4=0 7550 WHEN "SNAM":name$=LEFT$(FNread(a%+8),19) 7560 WHEN "SVOL":svol=a%?8 7570 WHEN "SLEN":slen=a%!8 7580 WHEN "ROFS":rofs=a%!8-1 7590 WHEN "RLEN":rlen=a%!8 7600 ENDCASE 7610 a%+=8+a%!4 7620 UNTIL a$="SDAT" OR a%>=worksp%+filelen% 7630ELSE 7640 name$=FNleaf($saveptr%) 7650 a%=filelen%:slen=a% 7660ENDIF 7670IF name$="":name$="ST-01:sample" 7680IF rofs<0:rofs=0:rlen=2 7690IF rlen<2:rlen=2 7700IF slen=0 OR a%>=worksp%+filelen%:SYS "Hourglass_Off":PROCtellthemoff("Bad STsample file"):=FALSE 7710$nameptr%=name$ 7720$svolptr%=STR$ svol 7730$slenptr%=STR$ slen 7740$rofsptr%=STR$ rofs 7750$rlenptr%=STR$ rlen 7760start%=a%+(slen-1 AND 3) 7770length%=slen 7780IF a%<>slen THEN 7790 FOR n%=0 TO a%!-4-4 STEP 4 7800 n%!worksp%=n%!a% 7810 NEXT 7820ENDIF 7830PROCassemble 7840SYS "Hourglass_Off" 7850!q%=0:q%!4=-512:q%!8=length%*2:q%!12=0 7860SYS "Wimp_SetExtent",waveform%,q% 7870=TRUE 7880: 7890DEF PROCprocess_linsignd 7900FOR n%=0 TO length%-1 7910 n%?(worksp%+length%)=vol%?(n%?worksp%) 7920NEXT 7930$nameptr%=FNleaf($saveptr%) 7940IF $saveptr%="<Wimp$Scrap>":$nameptr%="ST-01:sample" 7950$slenptr%=STR$ length% 7960$svolptr%="255" 7970$rofsptr%="0":$rlenptr%="2" 7980FOR n%=0 TO 4 7990 PROCicon(edit%,n%,1) 8000NEXT 8010!q%=0:q%!4=-512:q%!8=length%*2:q%!12=0 8020SYS "Wimp_SetExtent",waveform%,q% 8030ENDPROC 8040: 8050DEF PROCclaim(p%) 8060IF worksp%<>-1:PROCreleasevoice:SYS "XOS_Module",7,,worksp%:worksp%=-1 8070IF p%<0:ENDPROC 8080SYS "XOS_Module",6,,,p%+3 AND -4 TO ,,worksp%;p% 8090IF p% AND 1 THEN 8100 IF ERR=257:ERROR 2,"Can't claim enough workspace to process the file" 8110 ERROR ERR,REPORT$ 8120ENDIF 8130ENDPROC 8140: 8150DEF PROCreleasevoice 8160IF voice% THEN 8170 SYS "Sound_InstallVoice",,voice% TO a% 8180 IF a%=voicename+mc%:SYS "XSound_RemoveVoice",,voice%:voice%=0 8190ENDIF 8200ENDPROC 8210: 8220DEF PROCsave_stsample 8230RESTORE +0 8240ptr%=st%:READ a$ 8250WHILE a$>"" 8260 $ptr%=a$:READ ptr%!4 8270 IF ptr%!4:FOR n%=8 TO 7+ptr%!4 STEP 4:n%!ptr%=0:NEXT 8280 ptr%+=8+ptr%!4 8290 READ a$ 8300ENDWHILE 8310DATA SAMP,0,SNAM,20,SVOL,4 8320DATA SLEN,4,ROFS,4,RLEN,4 8330DATA SDAT,0, 8340st%!4=length%+87 AND -4 8350IF $nameptr%="" THEN 8360 $nameptr%="ST-01:sample" 8370 PROCicon(edit%,0) 8380ENDIF 8390$(st%+16)=$nameptr%:st%?(16+LEN $(st%+16))=0 8400PROCreaddata("STsample") 8410st%!44=svol:st%!68=rofs:st%!80=rlen 8420st%!56=length% 8430st%!88=length% 8440out%=OPENOUT $name% 8450SYS "OS_GBPB",1,out%,st%,95-(length%-1 AND 3) 8460SYS "OS_GBPB",2,out%,worksp%-length%*linsignd%,length% 8470CLOSE #out% 8480SYS "OS_File",18,name%,&CB5 8490ENDPROC 8500: 8510DEF PROCreaddata(a$) 8520svol=FNevallim(svolptr%,255,"Volume") 8530rofs=FNevallim(rofsptr%,length%-1,"Repeat offset") 8540rlen=FNevallim(rlenptr%,length%-rofs,"Repeat length") 8550IF (svol OR rofs OR rlen)=-1:ERROR 1,a$+" file not saved. Edit and try again" 8560ENDPROC 8570: 8580DEF PROCsave_module 8590name$=$nameptr% 8600IF name$="" THEN 8610 name$="ST-01:sample" 8620 $nameptr%=name$ 8630 PROCicon(edit%,0) 8640ENDIF 8650PROCreaddata("Module voice") 8660PROCassemblemod 8670out%=OPENOUT $name% 8680SYS "OS_GBPB",1,out%,mc%,mclen% 8690SYS "OS_GBPB",2,out%,worksp%-length%*linsignd%,length%+3 AND -4 8700CLOSE #out% 8710SYS "OS_File",18,name%,&FFA 8720mc%!start=worksp%-length%*linsignd% 8730mc%!end=mc%!start+len% 8740PROCassemble 8750ENDPROC 8760: 8770DEF PROCassemble 8780name$="MakeWaves-Voice" 8790svol=FNeval(svolptr%) 8800rofs=FNeval(rofsptr%) 8810rlen=FNeval(rlenptr%) 8820PROCassemblemod 8830mc%!start=worksp%-length%*linsignd% 8840mc%!end=mc%!start+len% 8850asm%=TRUE 8860ENDPROC 8870: 8880DEF PROCassemblemod 8890PROCreleasevoice 8900len%=length% 8910IF rlen>2 AND rofs+rlen<len%:len%=rofs+rlen 8920FOR p%=4 TO 6 STEP 2 8930P%=0:O%=mc% 8940[OPT p% 8950EQUD 0 8960EQUD init 8970EQUD exit 8980EQUD 0 8990EQUD title 9000EQUD help 9010EQUD 0 9020EQUD 0 9030EQUD 0 9040EQUD 0 9050: 9060.title EQUS name$+CHR$ 0 9070.help EQUS "STsample Module"+CHR$ 9+"1.00 ("+MID$(TIME$,5,11)+") "+name$+CHR$ 0 9080ALIGN 9090: 9100.init 9110STMFD 13!,{14} 9120ADR 0,voicebase 9130MOV 1,#0 9140SWI "Sound_InstallVoice" 9150STR 1,slot 9160ADR 0,0 9170LDR 1,offset 9180ADD 0,0,1 9190STR 0,start 9200LDR 1,len 9210ADD 1,1,0 9220STR 1,end 9230LDMFD 13!,{PC}^ 9240: 9250.exit 9260STMFD 13!,{14} 9270LDR 1,slot 9280SWI "XSound_RemoveVoice" 9290MOV 1,#0 9300STR 1,slot 9310LDMFD 13!,{PC}^ 9320: 9330.voicebase 9340B fill 9350B fill 9360B gateon 9370B gateoff 9380B instance 9390LDMFD 13!,{PC} 9400LDMFD 13!,{PC} 9410EQUD voicename-voicebase 9420: 9430.voicename EQUS name$+CHR$ 0 9440ALIGN 9450: 9460.instance 9470STMFD 13!,{0-4,14} 9480MOV 0,#0 9490MOV 1,0 9500MOV 2,0 9510MOV 3,0 9520MOV 4,0 9530SWI "Sound_Configure" 9540LDR 0,[3,#12] 9550STR 0,logampptr 9560LDMFD 13!,{0-4,14,PC} 9570: 9580.gateon 9590LDR 0,start 9600STR 0,[9,#16] 9610LDR 0,logampptr 9620STR 0,[9,#20] 9630.fill 9640STMFD 13!,{7,8} 9650LDMIA 9,{1-6} 9660AND 1,1,#&7F 9670LDRB 1,[6,1,LSL #1] 9680ADR 6,vol 9690LDMIA 6,{6-8} 9700ADD 6,6,#1 9710MUL 1,6,1 9720MOV 1,1,LSR #9 9730RSB 1,1,#127 9740.fillloop 9750ADD 2,2,2,LSL #16 9760LDRB 0,[5],2,LSR #27 9770SUBS 0,0,1,LSL #1 9780MOVMI 0,#0 9790STRB 0,[12],11 9800] 9810IF rlen>2 THEN 9820 [OPT p% 9830 .rounding 9840 CMP 5,8 9850 SUBGE 5,5,7 9860 BGE rounding 9870 ] 9880ELSE 9890 [OPT p% 9900 CMP 5,8 9910 BGE padout 9920 ] 9930ENDIF 9940[OPT p% 9950BIC 2,2,#&F8<<24 9960CMP 12,10 9970BLT fillloop 9980SUBS 4,4,#1 9990STMIB 9,{2-5} 10000MOVPL 0,#8 10010MOVMI 0,#2 10020LDMFD 13!,{7,8,PC} 10030] 10040IF rlen=2 THEN 10050 [OPT p% 10060 .padout 10070 STRB 0,[12],11 10080 CMP 12,10 10090 BLT padout 10100 MOV 0,#2 10110 LDMFD 13!,{7,8,PC} 10120 ] 10130ENDIF 10140[OPT p% 10150.gateoff 10160MOV 0,#0 10170.flush 10180STRB 0,[12],11 10190STRB 0,[12],11 10200STRB 0,[12],11 10210STRB 0,[12],11 10220CMP 12,10 10230BLT flush 10240MOV 0,#1 10250LDMFD 13!,{PC} 10260: 10270.slot EQUD 0 10280.logampptr EQUD 0 10290.start EQUD 0 10300.len EQUD len% 10310.vol EQUD svol 10320.rlen% EQUD rlen 10330.end EQUD 0 10340.offset EQUD P%+4 10350]NEXT 10360mclen%=O%-mc% 10370ENDPROC
� > !RunImage (!MakeWaves) : � � � � �,�$ (;ș "Wimp_Initialise",200,&4B534154,"MakeWaves" � ,task% 2 �init <(� � � �query(�$+" / "+� �) � �exit:� F� P � voice%=0 � worksp%<>-1 � Z9 ș "XSound_InstallVoice",mc%+voicebase � ,voice%;a% d! � a% � 1:voice%=0:�previous n � x � file$="<Wimp$Scrap>" � �1 !q%=overwrite%:ș "Wimp_GetWindowState",,q% �1 � q%?34 � 1 � file$="":*Remove <Wimp$Scrap> � � � ș "Wimp_Poll",,q% � r% � Ȏ r% � � � 1:�redraw �! � 2:ș "Wimp_OpenWindow",,q% �" � 3:ș "Wimp_CloseWindow",,q% � � 6:�mouse � � 7:�drag � � 8:�key � � 9:�menu � � 17,18:�message � � quit% �exit "(� shutdown%:ș "Wimp_ProcessKey",508 ,� 6: @� �exit J�claim(-1) Tș "XOS_Module",7,,mc% ^ �previous h+� voice%:ș "Sound_RemoveVoice",,voice% r� |: �� �init �F� q% 1520,icon% 1024,menu% 172,menu1% 100,vol% 255,st% 92,plot 200 �<� notes$(1),note%(6),sharp%(4):name%=q%+300:err%=q%+1000 �Bnotes$()="C C#D D#E F F#G G#A A#B ","C DbD EbE F GbG AbA BbB " �-note%()=0,2,4,5,7,9,11:sharp%()=0,1,3,4,5 �worksp%=-1:file$="" �2ș "OS_File",5,"<Obey$Dir>.Sprites" � a%,,,,l% �,� a%<>1:� 214,"File 'Sprites' not found" �� spr% l%+16:!spr%=l%+16 �ș "OS_SpriteOp",256+9,spr% �5ș "OS_SpriteOp",256+10,spr%,"<Obey$Dir>.Sprites" �ptr%=icon% �� � +� � � ș "XWimp_CloseTemplate":� � �,�$ 2ș "Wimp_OpenTemplate",,"<Obey$Dir>.Templates" �template("Info") &&ș "Wimp_CreateWindow",,q% � info% 0�template("Save") :2saveptr%=q%!172:saveicon%=q%!144+� $(q%!144)-3 D&ș "Wimp_CreateWindow",,q% � save% N�template("Edit") X#nameptr%=q%!108:slenptr%=q%!140 b#svolptr%=q%!172:rofsptr%=q%!204 lrlenptr%=q%!236 v&ș "Wimp_CreateWindow",,q% � edit% ��template("Keyboard") �q%!64=spr% �� n%=q%+136 � q%+1224 � 32 �* !n%=!n% � 256:n%!4=q%!108:n%!8=q%!112 �� �*ș "Wimp_CreateWindow",,q% � keyboard% ��template("Unsaved") �+ș "Wimp_CreateWindow",,q% � overwrite% ��template("Quit") �)ș "Wimp_CreateWindow",,q% � discard% ��template("Waveform") �*ș "Wimp_CreateWindow",,q% � waveform% �� � ș "Wimp_CloseTemplate" �disable !q%=-1:q%!4=0 q%!8=0:q%!12=104 *q%!16=68:q%!20=&3002 4$(q%+24)="!makewaves" >ș "Wimp_CreateIcon",,q% H"ș "OS_Module",6,,,640 � ,,mc% Rvoice%=0:prev%=0 \quit%=�:shutdown%=� fdrag%=�:asm%=� ptext%=�:linsignd%=� zunsaved%=� �� n%=0 � 255 �$ ș "Sound_SoundLog",n%<<24 � a% � n%?vol%=a% �� �� +0 ��makemenu(menu%) ��makemenu(menu1%) �menux%=100:menuy%=360 �� p%=0 � 2 � 2 �P%=plot �[OPT p% �STMFD 13!,{14} �MOV 0,#7 SWI "Wimp_SetColour" .plotloop MOV 9,#40 $BL modulus .BNE plotpoint 8MOV 0,#3 BSWI "Wimp_SetColour" LMOV 9,#200 VBL modulus ` �Q 11,#40 jMOVNE 11,#20 tMOV 0,#4 ~ ADD 1,4,6 �SUB 2,7,11 �SWI "OS_Plot" �MOV 0,#5 � ADD 1,4,6 �ADD 2,7,11 �SWI "OS_Plot" �MOV 0,#7 �SWI "Wimp_SetColour" �.plotpoint � MOV 0,#69 � ADD 1,4,6 �LDRB 8,[3,4,LSR #1] � 2,8,#254 TST 8,#1 RSBNE 2,2,#0 ADD 2,2,7 (SWI "OS_Plot" 2ADD 4,4,#2 <CMP 4,5 FBLE plotloop PLDMFD 13!,{PC} Z: d.modulus nMOV 8,4 xMOV 10,9 �.max �MOV 9,9,LSL #1 �CMP 8,9 �BGT max �.mod �MOV 9,9,LSR #1 �CMP 8,9 �SUBGE 8,8,9 �TEQ 9,10 �BNE mod �SUB 10,10,#2 �TEQ 8,10 � MOV PC,14 ]� � � MakeWaves,&70207,136,44,0 "� 0,info%,&7000021,"Info" ,� 0,-1,&7000021,"Edit" 6� 0,menu1%,&7400021,"Save" @� 0,-1,&7000021,"Keyboard" J� 0,-1,&7400021,"Waveform" T� 128,-1,&7000021,"Quit" ^� Save,&70207,136,44,0 h!� 8,save%,&7000021,"LinSignd" r!� 8,save%,&7000021,"STsample" |!� 136,save%,&7000021,"Module" �: �� �makemenu(a%) �'� $a%,a%!12,a%!16,a%!20,a%!24:a%+=4 �� �$ a%+=24:� !a%,a%!4,a%!8,$(a%+12) �� !a% � 128 �� �: �� �template(a$) �Cș "Wimp_LoadTemplate",,q%,ptr%,icon%+1024,-1,a$ � ,,ptr%,,,,c% �,� c% � � 1,"Template '"+a$+"' not found" �� �: � �message Ȏ q%!16 � @� 0:shutdown%=�:quit%=� unsaved%:� quit% � �centre(discard%) &� 1:�datasave 0� 2:�datasaveack :� 3:�dataload D� 5:�dataopen N$� 8:quit%=� unsaved%:shutdown%=� X � quit%=� � b !q%=20:q%!12=q%!8:q%!16=0 l! ș "Wimp_SendMessage",19,q% v �centre(discard%) � � �� &400C0 � � q%!20=save% � �* $saveicon%=�"D3CCB5FFA",q%!36*3+1,3) �0 ș "Wimp_CreateSubMenu",,save%,q%!24,q%!28 � � �� �� �: �� �line(x%) �� x% � rlen<3:� �� y%,z% �3ș "OS_ReadModeVariable",-1,4 � ,,y%:y%=(1<<y%) 7� x%:z%=(rofs+rlen-1)*2 � -y%:� z%=(rofs-1)*2 � -y% 3ș "Wimp_ForceRedraw",waveform%,z%,-512,z%+y%,0 � x% � �line(�) � *: 4 � �redraw >&ș "Wimp_RedrawWindow",,q% � more% H$G%=q%!4-q%!20:H%=q%!16-q%!24-256 Rȕ more% \! D%=worksp%-length%*linsignd% f E%=q%!28-G%:F%=q%!36-G% p ș "Wimp_SetColour",3 z � E%+G%,H%,F%+G%,H% � ș "Wimp_SetColour",10 �$ � rofs*2+G%-2,H%-256:� BY 0,512 � � rlen>2 � � ș "Wimp_SetColour",11 �, � (rofs+rlen)*2+G%-2,H%-256:� BY 0,512 � � � � plot �' ș "Wimp_GetRectangle",,q% � more% �� �� �: �� �mouse �� q%!8 � 2 � Ȏ q%!12 � G � -2:mx%=!q%-menux%:my%=menuy%:ș "Wimp_CreateMenu",,menu%,mx%,my% � edit%,keyboard%,waveform% $@ mx%=!q%-64:my%=q%!4+64:ș "Wimp_CreateMenu",,menu%,mx%,my% . � 8� B Ȏ q%!12 � L4 � -2:� q%!8 � 1:�open(keyboard%):� �open(edit%) V � save% ` Ȏ q%!16 � j � 0 t � �$saveptr%,".") � ~ $name%=$saveptr%:�dosave � � �J �tellthemoff("To save, drag the file icon to a directory viewer.") � � � � 1 �2 !q%=save%:q%!4=1:ș "Wimp_GetIconState",,q% �2 q%!40=save%:ș "Wimp_GetWindowState",,q%+40 �+ q%!8+=q%!44-q%!60:q%!16+=q%!44-q%!60 �, q%!12+=q%!56-q%!64:q%!20+=q%!56-q%!64 � q%!24=0:q%!28=0:q%!4=5 � q%!32=-1>>>1:q%!36=q%!32 �, drag%=�drag(197,1,"file_"+$saveicon%) � � � edit% a%=q%!8 � 1 Ȏ q%!16 � � 5+a%:b%=�eval(svolptr%) (4 � b%:$svolptr%=� (b%-1):�icon(edit%,2,1):a%=2 2 � 6-a%:b%=�eval(svolptr%) <8 � b%<255:$svolptr%=� (b%+1):�icon(edit%,2,1):a%=2 F! � 7+a%:rofs=�eval(rofsptr%) P � rofs � Z �line(�):rofs-=1 d) $rofsptr%=� rofs:�icon(edit%,3,1) n �line(�):a%=2 x � �! � 8-a%:rofs=�eval(rofsptr%) �' � rofs<length%-�eval(rlenptr%) � � �line(�):rofs+=1 �) $rofsptr%=� rofs:�icon(edit%,3,1) � �line(�):a%=2 � � �! � 9+a%:rlen=�eval(rlenptr%) � � rlen>2 � � �line(�):rlen-=1 �) $rlenptr%=� rlen:�icon(edit%,4,1) � �line(�):a%=2 � � �" � 10-a%:rlen=�eval(rlenptr%) ' � rlen<length%-�eval(rofsptr%) � �line(�):rlen+=1 ) $rlenptr%=� rlen:�icon(edit%,4,1) " �line(�):a%=2 , � 66 � 16,17,18:$saveicon%=�"D3CCB5FFA",q%!16*3-47,3) @A mx%=!q%-64:my%=q%!4+64:ș "Wimp_CreateMenu",,save%,mx%,my% J � T � a%=2:asm%=�:unsaved%=� ^ � keyboard% h � q%!16=40 � r � 1,0,0,0 | � � � q%!16>-1 � q%!16<36 � � � worksp%>-1 � � asm% � � �releasevoice � �assemble �< ș "XSound_InstallVoice",mc%+voicebase � ,voice%;a% �$ � a% � 1:voice%=0:�previous � � � � voice% � �. ș "Sound_AttachVoice",1,voice% � ,a% � � a%<>voice%:prev%=a% � � � � q%!16<21 � � pitch%=note%(q%!16 � 7) � @ pitch%=q%!16-21:q%!16=(pitch% � 5)*7+sharp%(pitch% � 5) " pitch%=note%(q%!16 � 7)+1 & � 0/ pitch%=4096*(q%!16 � 7+3)+pitch%*1024/3 : � 1,&17F,pitch%,255 D � N � X � waveform% b: x%=!q%:!q%=waveform%:ș "Wimp_GetWindowState",,q%+12 l x%=(x%+q%!32-q%!16)/2+1 v � q%!8 � 1 � � �line(�) �& � x%<rofs:rlen=2:� rlen=x%-rofs � � rlen<2:rlen=2 �, � rofs+rlen>length%:rlen=length%-rofs �% � rlen<2:rlen=2:rofs=length%-2 � �line(�) �( $rlenptr%=� rlen:�icon(edit%,4,1) � � � �line(�):rofs=x% � � rofs+rlen>length% � �8 rlen=length%-rofs:� rlen<2:rofs=length%-2:rlen=2 �) $rlenptr%=� rlen:�icon(edit%,4,1) � � �line(�) ( $rofsptr%=� rofs:�icon(edit%,3,1) � asm%=�:unsaved%=� * � overwrite% 4 � q%!16=0 � >F � type%<0:type%=-type%:ș "Wimp_SendMessage",17,q%+1200,q%!1204 H �doload R � \ ș "Wimp_CreateMenu",,-1 f � discard% p% � q%!16=0:quit%=�:� shutdown%=� z ș "Wimp_CreateMenu",,-1 � � �� �� �: �� �drag(A%,B%,a$) � � mx%,my% �ș "OS_Byte",161,28 � ,,mx% �� mx% � 2 � �= ș &62400,A%,B%,a$,q%+8,q%+24 � ;A%:� XDragASprite_Start � my%=1:� A% � 1:mx%=0 �� �,� mx% � 2 � my%=-1:ș "Wimp_DragBox",,q% �=my% : � �drag $ș "Wimp_GetPointerInfo",,q%+128 $q%!20=q%!140 .q%!24=q%!144 8Ȏ $saveicon% � B � "D3C":q%!36=length%+3 � -4 L!� "CB5":q%!36=length%+95 � -4 V#� "FFA":q%!36=length%+1027 � -4 `� jq%!40=� ("&"+$saveicon%) ta$=�leaf($saveptr%) ~$(q%+44)=a$+�0 �!q%=48+� a$ � -4 �q%!12=0:q%!16=1 �+ș "Wimp_SendMessage",17,q%,q%!20,q%!24 �drag%=0 �� �: �� �menu �#ș "Wimp_GetPointerInfo",,q%+20 �Ȏ !q% � �=� 0:ș "Wimp_CreateMenu",,info%,q%!20-64,q%!24+64:q%!28=0 �� 1:�open(edit%) �� 2 � q%!4>=0 � q%!4<3 � ) $saveicon%=�"D3CCB5FFA",q%!4*3+1,3) 1 ș "Wimp_CreateMenu",,save%,mx%,my%:q%!28=0 � (� 3:�open(keyboard%) 2� 4:�open(waveform%) <@� 5:shutdown%=�:quit%=� unsaved%:� quit% � �centre(discard%) F� P3� q%!28 � 1:ș "Wimp_CreateMenu",,menu%,mx%,my% Z� d: n� �open(q%!600) x$ș "Wimp_GetWindowState",,q%+600 �)q%!628=�:ș "Wimp_OpenWindow",,q%+600 �� �: �� �front(q%!600) �$ș "Wimp_GetWindowState",,q%+600 �6� q%?634 � 1:q%!628=�:ș "Wimp_OpenWindow",,q%+600 �� �: �� �centre(q%!600) �$ș "Wimp_GetWindowState",,q%+600 �'ș "OS_ReadModeVariable",�,4 � ,,a% �(ș "OS_ReadModeVariable",�,11 � ,,x% � x%=x%<<a% 'ș "OS_ReadModeVariable",�,5 � ,,a% (ș "OS_ReadModeVariable",�,12 � ,,y% y%=y%<<a% "Jș "Wimp_CreateMenu",,q%!600,(x%+q%!604-q%!612)/2,(y%+q%!616-q%!608)/2 ,� 6: @� �dataopen J,� q%!40<>&D3C � q%!40<>&CB5 � q%!40<>6:� Tq%!16=4:q%!12=q%!8 ^"type%=q%!40:file$=�read(q%+44) h$ș "Wimp_SendMessage",17,q%,q%!4 r$� unsaved%:�centre(overwrite%):� |�doload �� �: �� �datasave �� q%!4=task%:� �:� q%!40<>&FFF � q%!40<>&D3C � q%!40<>&CB5 � q%!40<>6:� �text%=q%!40=&FFF � linsignd%=text% � q%!40=&D3C �4ș "XOS_ReadVarVal","Wimp$Scrap",name%,0 � a%;f% �T� f% � 1 � !a%=&124:�tellthemoff("Could not transfer file: no scrap file set"):� �$(q%+44)="<Wimp$Scrap>"+� 0 �&q%!16=2:q%!12=q%!8:!q%=60:q%!36=-1 �$ș "Wimp_SendMessage",17,q%,q%!4 �� : � �dataload :� q%!40<>&FFF � q%!40<>&D3C � q%!40<>&CB5 � q%!40<>6:� &q%!16=4:q%!12=q%!8 0#type%=-q%!40:file$=�read(q%+44) :� n%=0 � !q%-1 � 4 D q%!1200=!q% N� X$ș "Wimp_SendMessage",17,q%,q%!4 b$� unsaved%:�centre(overwrite%):� ltype%=� type%:�doload v� �: � � �doload �ș "Wimp_CreateMenu",,-1 �text%=type%=&FFF � linsignd%=text% � type%=&D3C �$saveptr%=file$ �,ș "OS_File",5,saveptr% � a%,,,,filelen% � � a%<>1:� �unsaved%=� � Ȏ � � �6� text%:loaded%=�process_text:� loaded%:unsaved%=� �)� linsignd%:loaded%=�process_linsignd �:loaded%=�process_stsample � � loaded% � menu%?86=0:menu%?134=0 menu1%?38=64 � � linsignd% * �enable 4$ � linsignd% � �icon(edit%,16,0) ># �open(edit%):�front(keyboard%) H� R menu%?86=64:menu%?134=0 \, !q%=waveform%:ș "Wimp_CloseWindow",,q% f �claim(-1):�disable p� z5� $saveptr%="<Wimp$Scrap>":$saveptr%="SampleFile" �0ș "Wimp_ForceRedraw",waveform%,0,-512,1E6,0 �� �: �� �datasaveack �� q%!4=task% � � �a$=�read(q%+44):$name%=a$ �%� a$<>"<Wimp$Scrap>":$saveptr%=a$ ��dosave �q%!16=3:q%!12=q%!8 �$ș "Wimp_SendMessage",18,q%,q%!4 �� �: � � �dosave � out% � � )� � � � �:�tellthemoff(�$):�closeit:� $Ȏ $saveicon% � .?� "D3C":ș "OS_File",10,name%,&D3C,,worksp%,worksp%+length% 8� "CB5":�save_stsample B� "FFA":�save_module L� V� � `$ș "Wimp_GetPointerInfo",,q%+300 j+� q%!308 � 1 � ș "Wimp_CreateMenu",,-1 tunsaved%=� ~� �: �� �closeit �� � � � � � � �:�tellthemoff(�$):� �� out%:� #out% �� � �� �: � � �key �f%=� �Ȏ !q% � �� save% � q%!24=13 � f%=� � �$saveptr%,".") � $name%=$saveptr%:�dosave ( � 2I �tellthemoff("To save, drag the file icon to a directory viewer.") < � F � P� edit% Z Ȏ � � d5 � q%!4>0 � q%!24>47 � q%!24<58:asm%=�:unsaved%=� n6 � q%!4=0 � q%!24>31 � q%!24<256:asm%=�:unsaved%=� x � � � q%!24=13 � � Ȏ q%!4 � �+ � 2:� $svolptr%="":$svolptr%="0":f%=2 �7 a%=�eval(svolptr%):� a%>255:$svolptr%="255":f%=2 � � 3:�line(�) �( � $rofsptr%="":$rofsptr%="0":f%=3 �: rofs=�eval(rofsptr%):b%=�eval(rlenptr%):� b%=0:b%=1 �> � rofs>length%-b%:rofs=length%-b%:$rofsptr%=� rofs:f%=3 � �line(�) � � 4:�line(�) �. rlen=�eval(rlenptr%):b%=�eval(rofsptr%) �) � rlen<2:rlen=2:$rlenptr%="2":f%=4 �> � rlen>length%-b%:rlen=length%-b%:$rlenptr%=� rlen:f%=4 : ș "Wimp_SetCaretPosition",edit%,0,,,-1,� $nameptr% �line(�) � "! � f%:�icon(edit%,f%,1):f%=� , � 6� @%� f% � ș "Wimp_ProcessKey",q%!24 J� T: ^� �tellthemoff(t$) h$� drag%=-1:ș "Wimp_DragBox",,-1 r#� drag%=1:ș "DragASprite_Stop" |drag%=0 �!err%=0:$(err%+4)=t$+� 0 � �previous �,ș "Wimp_ReportError",err%,1,"MakeWaves" �� �: �� �query(t$) �!err%=0:$(err%+4)=t$+� 0 � �previous �2ș "Wimp_ReportError",err%,3,"MakeWaves" � ,r% � =r%=1 �: �� �previous �� prev% � prev%=1 "ș "Sound_AttachVoice",1,prev% prev%=� � &: 0� �disable :� n%=0 � 10 D �icon(edit%,n%,0) N� X� n%=16 � 18 b �icon(edit%,n%,0) l� v� �: � � �enable �� n%=0 � 10 � �icon(edit%,n%,1) �� �� n%=16 � 18 � �icon(edit%,n%,1) �� �� �: �� �read(q%) �� a$ � ȕ ?q%>31 a$+=� ?q%:q%+=1 � =a$ : *� �eval(q%) 4=� ("0"+$q%) >: H� �evallim(q%,max%,a$) R� a% \a%=� ("0"+$q%) f7� a%>max%:�tellthemoff("The "+a$+" is too big"):=-1 p=a% z: �� �icon(!q%,q%!4,n%) �(� q%!8,q%!12,q%!16,q%!20,q%!24,q%!28 �!q%!8=n%=0 � 1<<22:q%!12=1<<22 �ș "Wimp_SetIconState",,q% �$ș "Wimp_GetCaretPosition",,q%+8 �9� !q%=q%!8 � q%!4=q%!12:ș "Wimp_SetCaretPosition",-1 �� �: �� �leaf(a$) �ȕ �a$,":")>1 � a$=�a$,�a$,":")+1) �� �ȕ �a$,".")>1 a$=�a$,�a$,".")+1) � =a$ $: .� �process_text 8ș "Hourglass_On" B� � L\� � � � �:�closein:� �=2:�tellthemoff(�$):=�:� �tellthemoff(�$+" (line "+� line%+")"):=� Vline%=0:a=0 `bend=0:vol=127 jvbend=0:noise=0 tin%=� $saveptr% ~ext=� #in%/100 �G� ext=0:� �:�closeit:�tellthemoff("No description for waveform"):=� �� pass%=0 � 1 � P%=worksp%*pass%:� #in%=0 � p$=�line(in%) � ȕ p$>"" � �eval(p$) � � pass% � � n=noise:p=2^(note/12+3) � � note=999:p=0:n=0 � b=2^(bend/12)^(1/256/len) � v=vol:w=vbend/256/len � � n � n+=1 � p%=0 � len*256-1 E P%?p%=v*� ((a+�(n)-1)*�/128):a+=p:p=p*b:v+=w:� a>=254:a-=254 � ( � 2 � p%=0 � len*256-1 << P%?p%=v*� (a*�/128):a+=p:p=p*b:v+=w:� a>=254:a-=254 F � P � Z � d p%=len*256 n � x2 � pass%:ș "Hourglass_Percentage",� #in%/ext � P%+=p%:p$=�line(in%) � � �@ � pass% � length%=P%:�claim(P%*2):ș "Hourglass_Percentage" �� �� � ��closein ��process_linsignd � �assemble �ș "Hourglass_Off" �=� �: �� �eval(p$) �� q$ ȕ �p$)=" " p$=�p$) � "p$=�spc(p$+" ") ,note=999:len=0 6bend=0:vbend=0 @ȕ p$>"" J q$=�p$,1):p$=�spc(�p$,2)) T Ȏ q$ � ^ � "b","B":bend=� p$ h � "l","L":len=� p$ r* � "n","N":note=�note(�p$,�p$," ")-1)) | � "p","P":note=� p$ � � "v","V":vol=� p$ � � "w","W":vbend=� p$ � � "z","Z":noise=� p$*2.54 �# :� 1,"Bad parameter '"+q$+"'" � � � p$=�spc(�p$,�p$," "))) �� �� note=999 � vol=0 � �* � bend � vbend:� 1,"Can't bend rests" �� �F� (note<-24 � note>24) � vol:� 1,"Bad or missing note name/number" �-� len<=0:� 1,"Bad or missing note length" �,� vol<0 � vol>127:� 1,"Bad volume level" G� (note+bend<-24 � note+bend>24) � vol:� 1,"Note bent out of range" @� vol+vbend<0 � vol+vbend>127:� 1,"Volume bent out of range" 6� noise<0 � noise>254:� "Noise level out of range" &� noise>0 � noise<1:noise=1 0� :: D� �spc(p$) Nȕ � p$=32 X p$=�p$,2) b� l=p$ v: �� �note(p$) �� �p$,1)<"A":=� p$ �� p% � � � p$>96:�p$,1)=� (� p$-32) �� �p$,2,1)="b":p%=1 �/=�notes$(p%),��p$)+" ",2))/2+12*� �p$)-24.5 �: �� �line(in%) �� p$ �ȕ p$="" � � p$=35 � line%+=1 �% � � #in%:p$=" ":� p$=�spc(�#in%) �� � p$=" ":="" =p$ : � �closein *ș "Hourglass_Off" 4� in%:� #in% >� H: R� �process_linsignd \ș "Hourglass_On" f� � p4� � � � �:ș "Hourglass_Off":�tellthemoff(�$):=� z&length%=filelen%:�claim(length%*2) �%ș "OS_File",255,saveptr%,worksp% �� � ��process_linsignd � �assemble �ș "Hourglass_Off" �=� �: �� �process_stsample �ș "Hourglass_On" �� � �4� � � � �:ș "Hourglass_Off":�tellthemoff(�$):=� ��claim(filelen%) �%ș "OS_File",255,saveptr%,worksp% � � � a$,b$,a%,b% rofs=0:rlen=2 $svol=255:slen=0 .name$="" 8a%=worksp% B� !a%=&504D4153 � L a%=worksp%+8 V � `# a$=� ?a%+� a%?1+� a%?2+� a%?3 j Ȏ a$ � t � "SDAT":a%!4=0 ~% � "SNAM":name$=��read(a%+8),19) � � "SVOL":svol=a%?8 � � "SLEN":slen=a%!8 � � "ROFS":rofs=a%!8-1 � � "RLEN":rlen=a%!8 � � � a%+=8+a%!4 �' � a$="SDAT" � a%>=worksp%+filelen% �� � name$=�leaf($saveptr%) � a%=filelen%:slen=a% �� �#� name$="":name$="ST-01:sample" � rofs<0:rofs=0:rlen=2 � rlen<2:rlen=2 [� slen=0 � a%>=worksp%+filelen%:ș "Hourglass_Off":�tellthemoff("Bad STsample file"):=� $nameptr%=name$ ($svolptr%=� svol 2$slenptr%=� slen <$rofsptr%=� rofs F$rlenptr%=� rlen Pstart%=a%+(slen-1 � 3) Zlength%=slen d� a%<>slen � n � n%=0 � a%!-4-4 � 4 x n%!worksp%=n%!a% � � �� � �assemble �ș "Hourglass_Off" �*!q%=0:q%!4=-512:q%!8=length%*2:q%!12=0 �$ș "Wimp_SetExtent",waveform%,q% �=� �: �� �process_linsignd �� n%=0 � length%-1 �+ n%?(worksp%+length%)=vol%?(n%?worksp%) �� �$nameptr%=�leaf($saveptr%) 7� $saveptr%="<Wimp$Scrap>":$nameptr%="ST-01:sample" $slenptr%=� length% $svolptr%="255" "$rofsptr%="0":$rlenptr%="2" ,� n%=0 � 4 6 �icon(edit%,n%,1) @� J*!q%=0:q%!4=-512:q%!8=length%*2:q%!12=0 T$ș "Wimp_SetExtent",waveform%,q% ^� h: r� �claim(p%) |E� worksp%<>-1:�releasevoice:ș "XOS_Module",7,,worksp%:worksp%=-1 �� p%<0:� �0ș "XOS_Module",6,,,p%+3 � -4 � ,,worksp%;p% �� p% � 1 � �C � �=257:� 2,"Can't claim enough workspace to process the file" � � �,�$ �� �� �: �� �releasevoice �� voice% � �) ș "Sound_InstallVoice",,voice% � a% �@ � a%=voicename+mc%:ș "XSound_RemoveVoice",,voice%:voice%=0 �� � : � �save_stsample &� +0 0ptr%=st%:� a$ :ȕ a$>"" D $ptr%=a$:� ptr%!4 N/ � ptr%!4:� n%=8 � 7+ptr%!4 � 4:n%!ptr%=0:� X ptr%+=8+ptr%!4 b � a$ l� v� SAMP,0,SNAM,20,SVOL,4 �� SLEN,4,ROFS,4,RLEN,4 � � SDAT,0, �st%!4=length%+87 � -4 �� $nameptr%="" � � $nameptr%="ST-01:sample" � �icon(edit%,0) �� �.$(st%+16)=$nameptr%:st%?(16+� $(st%+16))=0 ��readdata("STsample") �'st%!44=svol:st%!68=rofs:st%!80=rlen �st%!56=length% �st%!88=length% �out%=� $name% !.ș "OS_GBPB",1,out%,st%,95-(length%-1 � 3) !9ș "OS_GBPB",2,out%,worksp%-length%*linsignd%,length% !� #out% ! ș "OS_File",18,name%,&CB5 !*� !4: !>� �readdata(a$) !H(svol=�evallim(svolptr%,255,"Volume") !R5rofs=�evallim(rofsptr%,length%-1,"Repeat offset") !\8rlen=�evallim(rlenptr%,length%-rofs,"Repeat length") !fJ� (svol � rofs � rlen)=-1:� 1,a$+" file not saved. Edit and try again" !p� !z: !�� �save_module !�name$=$nameptr% !�� name$="" � !� name$="ST-01:sample" !� $nameptr%=name$ !� �icon(edit%,0) !�� !��readdata("Module voice") !��assemblemod !�out%=� $name% !�"ș "OS_GBPB",1,out%,mc%,mclen% !�@ș "OS_GBPB",2,out%,worksp%-length%*linsignd%,length%+3 � -4 !�� #out% "ș "OS_File",18,name%,&FFA "'mc%!start=worksp%-length%*linsignd% "mc%!end=mc%!start+len% "$ �assemble ".� "8: "B� �assemble "Lname$="MakeWaves-Voice" "Vsvol=�eval(svolptr%) "`rofs=�eval(rofsptr%) "jrlen=�eval(rlenptr%) "t�assemblemod "~'mc%!start=worksp%-length%*linsignd% "�mc%!end=mc%!start+len% "� asm%=� "�� "�: "�� �assemblemod "��releasevoice "�len%=length% "�,� rlen>2 � rofs+rlen<len%:len%=rofs+rlen "�� p%=4 � 6 � 2 "�P%=0:O%=mc% "�[OPT p% "� EQUD 0 # EQUD init # EQUD exit # EQUD 0 #EQUD title #( EQUD help #2 EQUD 0 #< EQUD 0 #F EQUD 0 #P EQUD 0 #Z: #d.title EQUS name$+� 0 #nF.help EQUS "STsample Module"+� 9+"1.00 ("+��$,5,11)+") "+name$+� 0 #x ALIGN #�: #� .init #�STMFD 13!,{14} #�ADR 0,voicebase #�MOV 1,#0 #�SWI "Sound_InstallVoice" #�STR 1,slot #�ADR 0,0 #�LDR 1,offset #� ADD 0,0,1 #�STR 0,start #� LDR 1,len #� ADD 1,1,0 $ STR 1,end $LDMFD 13!,{PC}^ $: $" .exit $,STMFD 13!,{14} $6LDR 1,slot $@SWI "XSound_RemoveVoice" $JMOV 1,#0 $TSTR 1,slot $^LDMFD 13!,{PC}^ $h: $r.voicebase $| B fill $� B fill $�B gateon $� B gateoff $�B instance $�LDMFD 13!,{PC} $�LDMFD 13!,{PC} $�EQUD voicename-voicebase $�: $�.voicename EQUS name$+� 0 $� ALIGN $�: $� .instance $�STMFD 13!,{0-4,14} %MOV 0,#0 %MOV 1,0 %MOV 2,0 %&MOV 3,0 %0MOV 4,0 %:SWI "Sound_Configure" %DLDR 0,[3,#12] %NSTR 0,logampptr %XLDMFD 13!,{0-4,14,PC} %b: %l.gateon %vLDR 0,start %�STR 0,[9,#16] %�LDR 0,logampptr %�STR 0,[9,#20] %� .fill %�STMFD 13!,{7,8} %�LDMIA 9,{1-6} %�� 1,1,#&7F %�LDRB 1,[6,1,LSL #1] %� ADR 6,vol %�LDMIA 6,{6-8} %�ADD 6,6,#1 %� MUL 1,6,1 %�MOV 1,1,LSR #9 &RSB 1,1,#127 & .fillloop &ADD 2,2,2,LSL #16 & LDRB 0,[5],2,LSR #27 &*SUBS 0,0,1,LSL #1 &4MOVMI 0,#0 &>STRB 0,[12],11 &H] &R� rlen>2 � &\ [OPT p% &f .rounding &p CMP 5,8 &z SUBGE 5,5,7 &� BGE rounding &� ] &�� &� [OPT p% &� CMP 5,8 &� BGE padout &� ] &�� &�[OPT p% &�BIC 2,2,#&F8<<24 &� CMP 12,10 &�BLT fillloop &�SUBS 4,4,#1 'STMIB 9,{2-5} 'MOVPL 0,#8 'MOVMI 0,#2 '$LDMFD 13!,{7,8,PC} '.] '8� rlen=2 � 'B [OPT p% 'L .padout 'V STRB 0,[12],11 '` CMP 12,10 'j BLT padout 't MOV 0,#2 '~ LDMFD 13!,{7,8,PC} '� ] '�� '�[OPT p% '�.gateoff '�MOV 0,#0 '� .flush '�STRB 0,[12],11 '�STRB 0,[12],11 '�STRB 0,[12],11 '�STRB 0,[12],11 '� CMP 12,10 '� BLT flush ( MOV 0,#1 ( LDMFD 13!,{PC} (: (.slot EQUD 0 ((.logampptr EQUD 0 (2.start EQUD 0 (<.len EQUD len% (F.vol EQUD svol (P.rlen% EQUD rlen (Z.end EQUD 0 (d.offset EQUD P%+4 (n]� (xmclen%=O%-mc% (�� �
00000000 0d 00 0a 1e f4 20 3e 20 21 52 75 6e 49 6d 61 67 |..... > !RunImag| 00000010 65 20 28 21 4d 61 6b 65 57 61 76 65 73 29 0d 00 |e (!MakeWaves)..| 00000020 14 05 3a 0d 00 1e 10 ee 20 85 20 85 20 a2 20 9f |..:..... . . . .| 00000030 2c f6 24 0d 00 28 3b c8 99 20 22 57 69 6d 70 5f |,.$..(;.. "Wimp_| 00000040 49 6e 69 74 69 61 6c 69 73 65 22 2c 32 30 30 2c |Initialise",200,| 00000050 26 34 42 35 33 34 31 35 34 2c 22 4d 61 6b 65 57 |&4B534154,"MakeW| 00000060 61 76 65 73 22 20 b8 20 2c 74 61 73 6b 25 0d 00 |aves" . ,task%..| 00000070 32 09 f2 69 6e 69 74 0d 00 3c 28 ee 20 85 20 e7 |2..init..<(. . .| 00000080 20 a4 71 75 65 72 79 28 f6 24 2b 22 20 2f 20 22 | .query(.$+" / "| 00000090 2b c3 20 9e 29 20 8b 20 f2 65 78 69 74 3a e0 0d |+. .) . .exit:..| 000000a0 00 46 05 f5 0d 00 50 1f 20 e7 20 76 6f 69 63 65 |.F....P. . voice| 000000b0 25 3d 30 20 80 20 77 6f 72 6b 73 70 25 3c 3e 2d |%=0 . worksp%<>-| 000000c0 31 20 8c 0d 00 5a 39 20 20 c8 99 20 22 58 53 6f |1 ...Z9 .. "XSo| 000000d0 75 6e 64 5f 49 6e 73 74 61 6c 6c 56 6f 69 63 65 |und_InstallVoice| 000000e0 22 2c 6d 63 25 2b 76 6f 69 63 65 62 61 73 65 20 |",mc%+voicebase | 000000f0 b8 20 2c 76 6f 69 63 65 25 3b 61 25 0d 00 64 21 |. ,voice%;a%..d!| 00000100 20 20 e7 20 61 25 20 80 20 31 3a 76 6f 69 63 65 | . a% . 1:voice| 00000110 25 3d 30 3a f2 70 72 65 76 69 6f 75 73 0d 00 6e |%=0:.previous..n| 00000120 06 20 cd 0d 00 78 1d 20 e7 20 66 69 6c 65 24 3d |. ...x. . file$=| 00000130 22 3c 57 69 6d 70 24 53 63 72 61 70 3e 22 20 8c |"<Wimp$Scrap>" .| 00000140 0d 00 82 31 20 20 21 71 25 3d 6f 76 65 72 77 72 |...1 !q%=overwr| 00000150 69 74 65 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 |ite%:.. "Wimp_Ge| 00000160 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 71 |tWindowState",,q| 00000170 25 0d 00 8c 31 20 20 e7 20 71 25 3f 33 34 20 80 |%...1 . q%?34 .| 00000180 20 31 20 8b 20 66 69 6c 65 24 3d 22 22 3a 2a 52 | 1 . file$="":*R| 00000190 65 6d 6f 76 65 20 3c 57 69 6d 70 24 53 63 72 61 |emove <Wimp$Scra| 000001a0 70 3e 0d 00 96 06 20 cd 0d 00 a0 1c 20 c8 99 20 |p>.... ..... .. | 000001b0 22 57 69 6d 70 5f 50 6f 6c 6c 22 2c 2c 71 25 20 |"Wimp_Poll",,q% | 000001c0 b8 20 72 25 0d 00 aa 0c 20 c8 8e 20 72 25 20 ca |. r%.... .. r% .| 000001d0 0d 00 b4 10 20 c9 20 31 3a f2 72 65 64 72 61 77 |.... . 1:.redraw| 000001e0 0d 00 be 21 20 c9 20 32 3a c8 99 20 22 57 69 6d |...! . 2:.. "Wim| 000001f0 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 71 |p_OpenWindow",,q| 00000200 25 0d 00 c8 22 20 c9 20 33 3a c8 99 20 22 57 69 |%..." . 3:.. "Wi| 00000210 6d 70 5f 43 6c 6f 73 65 57 69 6e 64 6f 77 22 2c |mp_CloseWindow",| 00000220 2c 71 25 0d 00 d2 0f 20 c9 20 36 3a f2 6d 6f 75 |,q%.... . 6:.mou| 00000230 73 65 0d 00 dc 0e 20 c9 20 37 3a f2 64 72 61 67 |se.... . 7:.drag| 00000240 0d 00 e6 0d 20 c9 20 38 3a f2 6b 65 79 0d 00 f0 |.... . 8:.key...| 00000250 0e 20 c9 20 39 3a f2 6d 65 6e 75 0d 00 fa 15 20 |. . 9:.menu.... | 00000260 c9 20 31 37 2c 31 38 3a f2 6d 65 73 73 61 67 65 |. 17,18:.message| 00000270 0d 01 04 06 20 cb 0d 01 0e 0b fd 20 71 75 69 74 |.... ...... quit| 00000280 25 0d 01 18 09 f2 65 78 69 74 0d 01 22 28 e7 20 |%.....exit.."(. | 00000290 73 68 75 74 64 6f 77 6e 25 3a c8 99 20 22 57 69 |shutdown%:.. "Wi| 000002a0 6d 70 5f 50 72 6f 63 65 73 73 4b 65 79 22 2c 35 |mp_ProcessKey",5| 000002b0 30 38 0d 01 2c 05 e0 0d 01 36 05 3a 0d 01 40 0b |08..,....6.:..@.| 000002c0 dd 20 f2 65 78 69 74 0d 01 4a 0e f2 63 6c 61 69 |. .exit..J..clai| 000002d0 6d 28 2d 31 29 0d 01 54 1a c8 99 20 22 58 4f 53 |m(-1)..T... "XOS| 000002e0 5f 4d 6f 64 75 6c 65 22 2c 37 2c 2c 6d 63 25 0d |_Module",7,,mc%.| 000002f0 01 5e 0d f2 70 72 65 76 69 6f 75 73 0d 01 68 2b |.^..previous..h+| 00000300 e7 20 76 6f 69 63 65 25 3a c8 99 20 22 53 6f 75 |. voice%:.. "Sou| 00000310 6e 64 5f 52 65 6d 6f 76 65 56 6f 69 63 65 22 2c |nd_RemoveVoice",| 00000320 2c 76 6f 69 63 65 25 0d 01 72 05 e1 0d 01 7c 05 |,voice%..r....|.| 00000330 3a 0d 01 86 0b dd 20 f2 69 6e 69 74 0d 01 90 46 |:..... .init...F| 00000340 de 20 71 25 20 31 35 32 30 2c 69 63 6f 6e 25 20 |. q% 1520,icon% | 00000350 31 30 32 34 2c 6d 65 6e 75 25 20 31 37 32 2c 6d |1024,menu% 172,m| 00000360 65 6e 75 31 25 20 31 30 30 2c 76 6f 6c 25 20 32 |enu1% 100,vol% 2| 00000370 35 35 2c 73 74 25 20 39 32 2c 70 6c 6f 74 20 32 |55,st% 92,plot 2| 00000380 30 30 0d 01 9a 3c de 20 6e 6f 74 65 73 24 28 31 |00...<. notes$(1| 00000390 29 2c 6e 6f 74 65 25 28 36 29 2c 73 68 61 72 70 |),note%(6),sharp| 000003a0 25 28 34 29 3a 6e 61 6d 65 25 3d 71 25 2b 33 30 |%(4):name%=q%+30| 000003b0 30 3a 65 72 72 25 3d 71 25 2b 31 30 30 30 0d 01 |0:err%=q%+1000..| 000003c0 a4 42 6e 6f 74 65 73 24 28 29 3d 22 43 20 43 23 |.Bnotes$()="C C#| 000003d0 44 20 44 23 45 20 46 20 46 23 47 20 47 23 41 20 |D D#E F F#G G#A | 000003e0 41 23 42 20 22 2c 22 43 20 44 62 44 20 45 62 45 |A#B ","C DbD EbE| 000003f0 20 46 20 47 62 47 20 41 62 41 20 42 62 42 20 22 | F GbG AbA BbB "| 00000400 0d 01 ae 2d 6e 6f 74 65 25 28 29 3d 30 2c 32 2c |...-note%()=0,2,| 00000410 34 2c 35 2c 37 2c 39 2c 31 31 3a 73 68 61 72 70 |4,5,7,9,11:sharp| 00000420 25 28 29 3d 30 2c 31 2c 33 2c 34 2c 35 0d 01 b8 |%()=0,1,3,4,5...| 00000430 17 77 6f 72 6b 73 70 25 3d 2d 31 3a 66 69 6c 65 |.worksp%=-1:file| 00000440 24 3d 22 22 0d 01 c2 32 c8 99 20 22 4f 53 5f 46 |$=""...2.. "OS_F| 00000450 69 6c 65 22 2c 35 2c 22 3c 4f 62 65 79 24 44 69 |ile",5,"<Obey$Di| 00000460 72 3e 2e 53 70 72 69 74 65 73 22 20 b8 20 61 25 |r>.Sprites" . a%| 00000470 2c 2c 2c 2c 6c 25 0d 01 cc 2c e7 20 61 25 3c 3e |,,,,l%...,. a%<>| 00000480 31 3a 85 20 32 31 34 2c 22 46 69 6c 65 20 27 53 |1:. 214,"File 'S| 00000490 70 72 69 74 65 73 27 20 6e 6f 74 20 66 6f 75 6e |prites' not foun| 000004a0 64 22 0d 01 d6 1c de 20 73 70 72 25 20 6c 25 2b |d"..... spr% l%+| 000004b0 31 36 3a 21 73 70 72 25 3d 6c 25 2b 31 36 0d 01 |16:!spr%=l%+16..| 000004c0 e0 1f c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f |.... "OS_SpriteO| 000004d0 70 22 2c 32 35 36 2b 39 2c 73 70 72 25 0d 01 ea |p",256+9,spr%...| 000004e0 35 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 |5.. "OS_SpriteOp| 000004f0 22 2c 32 35 36 2b 31 30 2c 73 70 72 25 2c 22 3c |",256+10,spr%,"<| 00000500 4f 62 65 79 24 44 69 72 3e 2e 53 70 72 69 74 65 |Obey$Dir>.Sprite| 00000510 73 22 0d 01 f4 0e 70 74 72 25 3d 69 63 6f 6e 25 |s"....ptr%=icon%| 00000520 0d 01 fe 07 ea 20 85 0d 02 08 2b ee 20 85 20 ea |..... ....+. . .| 00000530 20 c8 99 20 22 58 57 69 6d 70 5f 43 6c 6f 73 65 | .. "XWimp_Close| 00000540 54 65 6d 70 6c 61 74 65 22 3a 85 20 a2 20 9f 2c |Template":. . .,| 00000550 f6 24 0d 02 12 32 c8 99 20 22 57 69 6d 70 5f 4f |.$...2.. "Wimp_O| 00000560 70 65 6e 54 65 6d 70 6c 61 74 65 22 2c 2c 22 3c |penTemplate",,"<| 00000570 4f 62 65 79 24 44 69 72 3e 2e 54 65 6d 70 6c 61 |Obey$Dir>.Templa| 00000580 74 65 73 22 0d 02 1c 15 f2 74 65 6d 70 6c 61 74 |tes".....templat| 00000590 65 28 22 49 6e 66 6f 22 29 0d 02 26 26 c8 99 20 |e("Info")..&&.. | 000005a0 22 57 69 6d 70 5f 43 72 65 61 74 65 57 69 6e 64 |"Wimp_CreateWind| 000005b0 6f 77 22 2c 2c 71 25 20 b8 20 69 6e 66 6f 25 0d |ow",,q% . info%.| 000005c0 02 30 15 f2 74 65 6d 70 6c 61 74 65 28 22 53 61 |.0..template("Sa| 000005d0 76 65 22 29 0d 02 3a 32 73 61 76 65 70 74 72 25 |ve")..:2saveptr%| 000005e0 3d 71 25 21 31 37 32 3a 73 61 76 65 69 63 6f 6e |=q%!172:saveicon| 000005f0 25 3d 71 25 21 31 34 34 2b a9 20 24 28 71 25 21 |%=q%!144+. $(q%!| 00000600 31 34 34 29 2d 33 0d 02 44 26 c8 99 20 22 57 69 |144)-3..D&.. "Wi| 00000610 6d 70 5f 43 72 65 61 74 65 57 69 6e 64 6f 77 22 |mp_CreateWindow"| 00000620 2c 2c 71 25 20 b8 20 73 61 76 65 25 0d 02 4e 15 |,,q% . save%..N.| 00000630 f2 74 65 6d 70 6c 61 74 65 28 22 45 64 69 74 22 |.template("Edit"| 00000640 29 0d 02 58 23 6e 61 6d 65 70 74 72 25 3d 71 25 |)..X#nameptr%=q%| 00000650 21 31 30 38 3a 73 6c 65 6e 70 74 72 25 3d 71 25 |!108:slenptr%=q%| 00000660 21 31 34 30 0d 02 62 23 73 76 6f 6c 70 74 72 25 |!140..b#svolptr%| 00000670 3d 71 25 21 31 37 32 3a 72 6f 66 73 70 74 72 25 |=q%!172:rofsptr%| 00000680 3d 71 25 21 32 30 34 0d 02 6c 13 72 6c 65 6e 70 |=q%!204..l.rlenp| 00000690 74 72 25 3d 71 25 21 32 33 36 0d 02 76 26 c8 99 |tr%=q%!236..v&..| 000006a0 20 22 57 69 6d 70 5f 43 72 65 61 74 65 57 69 6e | "Wimp_CreateWin| 000006b0 64 6f 77 22 2c 2c 71 25 20 b8 20 65 64 69 74 25 |dow",,q% . edit%| 000006c0 0d 02 80 19 f2 74 65 6d 70 6c 61 74 65 28 22 4b |.....template("K| 000006d0 65 79 62 6f 61 72 64 22 29 0d 02 8a 0e 71 25 21 |eyboard")....q%!| 000006e0 36 34 3d 73 70 72 25 0d 02 94 1e e3 20 6e 25 3d |64=spr%..... n%=| 000006f0 71 25 2b 31 33 36 20 b8 20 71 25 2b 31 32 32 34 |q%+136 . q%+1224| 00000700 20 88 20 33 32 0d 02 9e 2a 20 21 6e 25 3d 21 6e | . 32...* !n%=!n| 00000710 25 20 84 20 32 35 36 3a 6e 25 21 34 3d 71 25 21 |% . 256:n%!4=q%!| 00000720 31 30 38 3a 6e 25 21 38 3d 71 25 21 31 31 32 0d |108:n%!8=q%!112.| 00000730 02 a8 05 ed 0d 02 b2 2a c8 99 20 22 57 69 6d 70 |.......*.. "Wimp| 00000740 5f 43 72 65 61 74 65 57 69 6e 64 6f 77 22 2c 2c |_CreateWindow",,| 00000750 71 25 20 b8 20 6b 65 79 62 6f 61 72 64 25 0d 02 |q% . keyboard%..| 00000760 bc 18 f2 74 65 6d 70 6c 61 74 65 28 22 55 6e 73 |...template("Uns| 00000770 61 76 65 64 22 29 0d 02 c6 2b c8 99 20 22 57 69 |aved")...+.. "Wi| 00000780 6d 70 5f 43 72 65 61 74 65 57 69 6e 64 6f 77 22 |mp_CreateWindow"| 00000790 2c 2c 71 25 20 b8 20 6f 76 65 72 77 72 69 74 65 |,,q% . overwrite| 000007a0 25 0d 02 d0 15 f2 74 65 6d 70 6c 61 74 65 28 22 |%.....template("| 000007b0 51 75 69 74 22 29 0d 02 da 29 c8 99 20 22 57 69 |Quit")...).. "Wi| 000007c0 6d 70 5f 43 72 65 61 74 65 57 69 6e 64 6f 77 22 |mp_CreateWindow"| 000007d0 2c 2c 71 25 20 b8 20 64 69 73 63 61 72 64 25 0d |,,q% . discard%.| 000007e0 02 e4 19 f2 74 65 6d 70 6c 61 74 65 28 22 57 61 |....template("Wa| 000007f0 76 65 66 6f 72 6d 22 29 0d 02 ee 2a c8 99 20 22 |veform")...*.. "| 00000800 57 69 6d 70 5f 43 72 65 61 74 65 57 69 6e 64 6f |Wimp_CreateWindo| 00000810 77 22 2c 2c 71 25 20 b8 20 77 61 76 65 66 6f 72 |w",,q% . wavefor| 00000820 6d 25 0d 02 f8 07 f7 20 85 0d 03 02 1b c8 99 20 |m%..... ....... | 00000830 22 57 69 6d 70 5f 43 6c 6f 73 65 54 65 6d 70 6c |"Wimp_CloseTempl| 00000840 61 74 65 22 0d 03 0c 0c f2 64 69 73 61 62 6c 65 |ate".....disable| 00000850 0d 03 16 11 21 71 25 3d 2d 31 3a 71 25 21 34 3d |....!q%=-1:q%!4=| 00000860 30 0d 03 20 14 71 25 21 38 3d 30 3a 71 25 21 31 |0.. .q%!8=0:q%!1| 00000870 32 3d 31 30 34 0d 03 2a 18 71 25 21 31 36 3d 36 |2=104..*.q%!16=6| 00000880 38 3a 71 25 21 32 30 3d 26 33 30 30 32 0d 03 34 |8:q%!20=&3002..4| 00000890 19 24 28 71 25 2b 32 34 29 3d 22 21 6d 61 6b 65 |.$(q%+24)="!make| 000008a0 77 61 76 65 73 22 0d 03 3e 1c c8 99 20 22 57 69 |waves"..>... "Wi| 000008b0 6d 70 5f 43 72 65 61 74 65 49 63 6f 6e 22 2c 2c |mp_CreateIcon",,| 000008c0 71 25 0d 03 48 22 c8 99 20 22 4f 53 5f 4d 6f 64 |q%..H".. "OS_Mod| 000008d0 75 6c 65 22 2c 36 2c 2c 2c 36 34 30 20 b8 20 2c |ule",6,,,640 . ,| 000008e0 2c 6d 63 25 0d 03 52 14 76 6f 69 63 65 25 3d 30 |,mc%..R.voice%=0| 000008f0 3a 70 72 65 76 25 3d 30 0d 03 5c 17 71 75 69 74 |:prev%=0..\.quit| 00000900 25 3d a3 3a 73 68 75 74 64 6f 77 6e 25 3d a3 0d |%=.:shutdown%=..| 00000910 03 66 12 64 72 61 67 25 3d a3 3a 61 73 6d 25 3d |.f.drag%=.:asm%=| 00000920 a3 0d 03 70 17 74 65 78 74 25 3d a3 3a 6c 69 6e |...p.text%=.:lin| 00000930 73 69 67 6e 64 25 3d a3 0d 03 7a 0e 75 6e 73 61 |signd%=...z.unsa| 00000940 76 65 64 25 3d a3 0d 03 84 10 e3 20 6e 25 3d 30 |ved%=...... n%=0| 00000950 20 b8 20 32 35 35 0d 03 8e 24 20 c8 99 20 22 53 | . 255...$ .. "S| 00000960 6f 75 6e 64 5f 53 6f 75 6e 64 4c 6f 67 22 2c 6e |ound_SoundLog",n| 00000970 25 3c 3c 32 34 20 b8 20 61 25 0d 03 98 0f 20 6e |%<<24 . a%.... n| 00000980 25 3f 76 6f 6c 25 3d 61 25 0d 03 a2 05 ed 0d 03 |%?vol%=a%.......| 00000990 ac 08 f7 20 2b 30 0d 03 b6 14 f2 6d 61 6b 65 6d |... +0.....makem| 000009a0 65 6e 75 28 6d 65 6e 75 25 29 0d 03 c0 15 f2 6d |enu(menu%).....m| 000009b0 61 6b 65 6d 65 6e 75 28 6d 65 6e 75 31 25 29 0d |akemenu(menu1%).| 000009c0 03 ca 19 6d 65 6e 75 78 25 3d 31 30 30 3a 6d 65 |...menux%=100:me| 000009d0 6e 75 79 25 3d 33 36 30 0d 03 d4 12 e3 20 70 25 |nuy%=360..... p%| 000009e0 3d 30 20 b8 20 32 20 88 20 32 0d 03 de 0b 50 25 |=0 . 2 . 2....P%| 000009f0 3d 70 6c 6f 74 0d 03 e8 0b 5b 4f 50 54 20 70 25 |=plot....[OPT p%| 00000a00 0d 03 f2 12 53 54 4d 46 44 20 31 33 21 2c 7b 31 |....STMFD 13!,{1| 00000a10 34 7d 0d 03 fc 0c 4d 4f 56 20 30 2c 23 37 0d 04 |4}....MOV 0,#7..| 00000a20 06 18 53 57 49 20 22 57 69 6d 70 5f 53 65 74 43 |..SWI "Wimp_SetC| 00000a30 6f 6c 6f 75 72 22 0d 04 10 0d 2e 70 6c 6f 74 6c |olour".....plotl| 00000a40 6f 6f 70 0d 04 1a 0d 4d 4f 56 20 39 2c 23 34 30 |oop....MOV 9,#40| 00000a50 0d 04 24 0e 42 4c 20 6d 6f 64 75 6c 75 73 0d 04 |..$.BL modulus..| 00000a60 2e 11 42 4e 45 20 70 6c 6f 74 70 6f 69 6e 74 0d |..BNE plotpoint.| 00000a70 04 38 0c 4d 4f 56 20 30 2c 23 33 0d 04 42 18 53 |.8.MOV 0,#3..B.S| 00000a80 57 49 20 22 57 69 6d 70 5f 53 65 74 43 6f 6c 6f |WI "Wimp_SetColo| 00000a90 75 72 22 0d 04 4c 0e 4d 4f 56 20 39 2c 23 32 30 |ur"..L.MOV 9,#20| 00000aa0 30 0d 04 56 0e 42 4c 20 6d 6f 64 75 6c 75 73 0d |0..V.BL modulus.| 00000ab0 04 60 0d ec 51 20 31 31 2c 23 34 30 0d 04 6a 10 |.`..Q 11,#40..j.| 00000ac0 4d 4f 56 4e 45 20 31 31 2c 23 32 30 0d 04 74 0c |MOVNE 11,#20..t.| 00000ad0 4d 4f 56 20 30 2c 23 34 0d 04 7e 0d 41 44 44 20 |MOV 0,#4..~.ADD | 00000ae0 31 2c 34 2c 36 0d 04 88 0e 53 55 42 20 32 2c 37 |1,4,6....SUB 2,7| 00000af0 2c 31 31 0d 04 92 11 53 57 49 20 22 4f 53 5f 50 |,11....SWI "OS_P| 00000b00 6c 6f 74 22 0d 04 9c 0c 4d 4f 56 20 30 2c 23 35 |lot"....MOV 0,#5| 00000b10 0d 04 a6 0d 41 44 44 20 31 2c 34 2c 36 0d 04 b0 |....ADD 1,4,6...| 00000b20 0e 41 44 44 20 32 2c 37 2c 31 31 0d 04 ba 11 53 |.ADD 2,7,11....S| 00000b30 57 49 20 22 4f 53 5f 50 6c 6f 74 22 0d 04 c4 0c |WI "OS_Plot"....| 00000b40 4d 4f 56 20 30 2c 23 37 0d 04 ce 18 53 57 49 20 |MOV 0,#7....SWI | 00000b50 22 57 69 6d 70 5f 53 65 74 43 6f 6c 6f 75 72 22 |"Wimp_SetColour"| 00000b60 0d 04 d8 0e 2e 70 6c 6f 74 70 6f 69 6e 74 0d 04 |.....plotpoint..| 00000b70 e2 0d 4d 4f 56 20 30 2c 23 36 39 0d 04 ec 0d 41 |..MOV 0,#69....A| 00000b80 44 44 20 31 2c 34 2c 36 0d 04 f6 17 4c 44 52 42 |DD 1,4,6....LDRB| 00000b90 20 38 2c 5b 33 2c 34 2c 4c 53 52 20 23 31 5d 0d | 8,[3,4,LSR #1].| 00000ba0 05 00 0e 80 20 32 2c 38 2c 23 32 35 34 0d 05 0a |.... 2,8,#254...| 00000bb0 0c 54 53 54 20 38 2c 23 31 0d 05 14 10 52 53 42 |.TST 8,#1....RSB| 00000bc0 4e 45 20 32 2c 32 2c 23 30 0d 05 1e 0d 41 44 44 |NE 2,2,#0....ADD| 00000bd0 20 32 2c 32 2c 37 0d 05 28 11 53 57 49 20 22 4f | 2,2,7..(.SWI "O| 00000be0 53 5f 50 6c 6f 74 22 0d 05 32 0e 41 44 44 20 34 |S_Plot"..2.ADD 4| 00000bf0 2c 34 2c 23 32 0d 05 3c 0b 43 4d 50 20 34 2c 35 |,4,#2..<.CMP 4,5| 00000c00 0d 05 46 10 42 4c 45 20 70 6c 6f 74 6c 6f 6f 70 |..F.BLE plotloop| 00000c10 0d 05 50 12 4c 44 4d 46 44 20 31 33 21 2c 7b 50 |..P.LDMFD 13!,{P| 00000c20 43 7d 0d 05 5a 05 3a 0d 05 64 0c 2e 6d 6f 64 75 |C}..Z.:..d..modu| 00000c30 6c 75 73 0d 05 6e 0b 4d 4f 56 20 38 2c 34 0d 05 |lus..n.MOV 8,4..| 00000c40 78 0c 4d 4f 56 20 31 30 2c 39 0d 05 82 08 2e 6d |x.MOV 10,9.....m| 00000c50 61 78 0d 05 8c 12 4d 4f 56 20 39 2c 39 2c 4c 53 |ax....MOV 9,9,LS| 00000c60 4c 20 23 31 0d 05 96 0b 43 4d 50 20 38 2c 39 0d |L #1....CMP 8,9.| 00000c70 05 a0 0b 42 47 54 20 6d 61 78 0d 05 aa 08 2e 6d |...BGT max.....m| 00000c80 6f 64 0d 05 b4 12 4d 4f 56 20 39 2c 39 2c 4c 53 |od....MOV 9,9,LS| 00000c90 52 20 23 31 0d 05 be 0b 43 4d 50 20 38 2c 39 0d |R #1....CMP 8,9.| 00000ca0 05 c8 0f 53 55 42 47 45 20 38 2c 38 2c 39 0d 05 |...SUBGE 8,8,9..| 00000cb0 d2 0c 54 45 51 20 39 2c 31 30 0d 05 dc 0b 42 4e |..TEQ 9,10....BN| 00000cc0 45 20 6d 6f 64 0d 05 e6 10 53 55 42 20 31 30 2c |E mod....SUB 10,| 00000cd0 31 30 2c 23 32 0d 05 f0 0c 54 45 51 20 38 2c 31 |10,#2....TEQ 8,1| 00000ce0 30 0d 05 fa 0d 4d 4f 56 20 50 43 2c 31 34 0d 06 |0....MOV PC,14..| 00000cf0 04 06 5d ed 0d 06 0e 05 e1 0d 06 18 1f dc 20 4d |..]........... M| 00000d00 61 6b 65 57 61 76 65 73 2c 26 37 30 32 30 37 2c |akeWaves,&70207,| 00000d10 31 33 36 2c 34 34 2c 30 0d 06 22 1d dc 20 30 2c |136,44,0..".. 0,| 00000d20 69 6e 66 6f 25 2c 26 37 30 30 30 30 32 31 2c 22 |info%,&7000021,"| 00000d30 49 6e 66 6f 22 0d 06 2c 1a dc 20 30 2c 2d 31 2c |Info"..,.. 0,-1,| 00000d40 26 37 30 30 30 30 32 31 2c 22 45 64 69 74 22 0d |&7000021,"Edit".| 00000d50 06 36 1e dc 20 30 2c 6d 65 6e 75 31 25 2c 26 37 |.6.. 0,menu1%,&7| 00000d60 34 30 30 30 32 31 2c 22 53 61 76 65 22 0d 06 40 |400021,"Save"..@| 00000d70 1e dc 20 30 2c 2d 31 2c 26 37 30 30 30 30 32 31 |.. 0,-1,&7000021| 00000d80 2c 22 4b 65 79 62 6f 61 72 64 22 0d 06 4a 1e dc |,"Keyboard"..J..| 00000d90 20 30 2c 2d 31 2c 26 37 34 30 30 30 32 31 2c 22 | 0,-1,&7400021,"| 00000da0 57 61 76 65 66 6f 72 6d 22 0d 06 54 1c dc 20 31 |Waveform"..T.. 1| 00000db0 32 38 2c 2d 31 2c 26 37 30 30 30 30 32 31 2c 22 |28,-1,&7000021,"| 00000dc0 51 75 69 74 22 0d 06 5e 1a dc 20 53 61 76 65 2c |Quit"..^.. Save,| 00000dd0 26 37 30 32 30 37 2c 31 33 36 2c 34 34 2c 30 0d |&70207,136,44,0.| 00000de0 06 68 21 dc 20 38 2c 73 61 76 65 25 2c 26 37 30 |.h!. 8,save%,&70| 00000df0 30 30 30 32 31 2c 22 4c 69 6e 53 69 67 6e 64 22 |00021,"LinSignd"| 00000e00 0d 06 72 21 dc 20 38 2c 73 61 76 65 25 2c 26 37 |..r!. 8,save%,&7| 00000e10 30 30 30 30 32 31 2c 22 53 54 73 61 6d 70 6c 65 |000021,"STsample| 00000e20 22 0d 06 7c 21 dc 20 31 33 36 2c 73 61 76 65 25 |"..|!. 136,save%| 00000e30 2c 26 37 30 30 30 30 32 31 2c 22 4d 6f 64 75 6c |,&7000021,"Modul| 00000e40 65 22 0d 06 86 05 3a 0d 06 90 13 dd 20 f2 6d 61 |e"....:..... .ma| 00000e50 6b 65 6d 65 6e 75 28 61 25 29 0d 06 9a 27 f3 20 |kemenu(a%)...'. | 00000e60 24 61 25 2c 61 25 21 31 32 2c 61 25 21 31 36 2c |$a%,a%!12,a%!16,| 00000e70 61 25 21 32 30 2c 61 25 21 32 34 3a 61 25 2b 3d |a%!20,a%!24:a%+=| 00000e80 34 0d 06 a4 05 f5 0d 06 ae 24 20 61 25 2b 3d 32 |4........$ a%+=2| 00000e90 34 3a f3 20 21 61 25 2c 61 25 21 34 2c 61 25 21 |4:. !a%,a%!4,a%!| 00000ea0 38 2c 24 28 61 25 2b 31 32 29 0d 06 b8 0f fd 20 |8,$(a%+12)..... | 00000eb0 21 61 25 20 80 20 31 32 38 0d 06 c2 05 e1 0d 06 |!a% . 128.......| 00000ec0 cc 05 3a 0d 06 d6 13 dd 20 f2 74 65 6d 70 6c 61 |..:..... .templa| 00000ed0 74 65 28 61 24 29 0d 06 e0 43 c8 99 20 22 57 69 |te(a$)...C.. "Wi| 00000ee0 6d 70 5f 4c 6f 61 64 54 65 6d 70 6c 61 74 65 22 |mp_LoadTemplate"| 00000ef0 2c 2c 71 25 2c 70 74 72 25 2c 69 63 6f 6e 25 2b |,,q%,ptr%,icon%+| 00000f00 31 30 32 34 2c 2d 31 2c 61 24 20 b8 20 2c 2c 70 |1024,-1,a$ . ,,p| 00000f10 74 72 25 2c 2c 2c 2c 63 25 0d 06 ea 2c e7 20 63 |tr%,,,,c%...,. c| 00000f20 25 20 8b 20 85 20 31 2c 22 54 65 6d 70 6c 61 74 |% . . 1,"Templat| 00000f30 65 20 27 22 2b 61 24 2b 22 27 20 6e 6f 74 20 66 |e '"+a$+"' not f| 00000f40 6f 75 6e 64 22 0d 06 f4 05 e1 0d 06 fe 05 3a 0d |ound".........:.| 00000f50 07 08 0e dd 20 f2 6d 65 73 73 61 67 65 0d 07 12 |.... .message...| 00000f60 0e c8 8e 20 71 25 21 31 36 20 ca 0d 07 1c 40 c9 |... q%!16 ....@.| 00000f70 20 30 3a 73 68 75 74 64 6f 77 6e 25 3d a3 3a 71 | 0:shutdown%=.:q| 00000f80 75 69 74 25 3d ac 20 75 6e 73 61 76 65 64 25 3a |uit%=. unsaved%:| 00000f90 e7 20 71 75 69 74 25 20 8b 20 f2 63 65 6e 74 72 |. quit% . .centr| 00000fa0 65 28 64 69 73 63 61 72 64 25 29 0d 07 26 11 c9 |e(discard%)..&..| 00000fb0 20 31 3a f2 64 61 74 61 73 61 76 65 0d 07 30 14 | 1:.datasave..0.| 00000fc0 c9 20 32 3a f2 64 61 74 61 73 61 76 65 61 63 6b |. 2:.datasaveack| 00000fd0 0d 07 3a 11 c9 20 33 3a f2 64 61 74 61 6c 6f 61 |..:.. 3:.dataloa| 00000fe0 64 0d 07 44 11 c9 20 35 3a f2 64 61 74 61 6f 70 |d..D.. 5:.dataop| 00000ff0 65 6e 0d 07 4e 24 c9 20 38 3a 71 75 69 74 25 3d |en..N$. 8:quit%=| 00001000 ac 20 75 6e 73 61 76 65 64 25 3a 73 68 75 74 64 |. unsaved%:shutd| 00001010 6f 77 6e 25 3d b9 0d 07 58 10 20 e7 20 71 75 69 |own%=...X. . qui| 00001020 74 25 3d a3 20 8c 0d 07 62 1f 20 20 21 71 25 3d |t%=. ...b. !q%=| 00001030 32 30 3a 71 25 21 31 32 3d 71 25 21 38 3a 71 25 |20:q%!12=q%!8:q%| 00001040 21 31 36 3d 30 0d 07 6c 21 20 20 c8 99 20 22 57 |!16=0..l! .. "W| 00001050 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 |imp_SendMessage"| 00001060 2c 31 39 2c 71 25 0d 07 76 17 20 20 f2 63 65 6e |,19,q%..v. .cen| 00001070 74 72 65 28 64 69 73 63 61 72 64 25 29 0d 07 80 |tre(discard%)...| 00001080 06 20 cd 0d 07 8a 0c c9 20 26 34 30 30 43 30 0d |. ...... &400C0.| 00001090 07 94 14 20 e7 20 71 25 21 32 30 3d 73 61 76 65 |... . q%!20=save| 000010a0 25 20 8c 0d 07 9e 2a 20 20 24 73 61 76 65 69 63 |% ....* $saveic| 000010b0 6f 6e 25 3d c1 22 44 33 43 43 42 35 46 46 41 22 |on%=."D3CCB5FFA"| 000010c0 2c 71 25 21 33 36 2a 33 2b 31 2c 33 29 0d 07 a8 |,q%!36*3+1,3)...| 000010d0 30 20 20 c8 99 20 22 57 69 6d 70 5f 43 72 65 61 |0 .. "Wimp_Crea| 000010e0 74 65 53 75 62 4d 65 6e 75 22 2c 2c 73 61 76 65 |teSubMenu",,save| 000010f0 25 2c 71 25 21 32 34 2c 71 25 21 32 38 0d 07 b2 |%,q%!24,q%!28...| 00001100 06 20 cd 0d 07 bc 05 cb 0d 07 c6 05 e1 0d 07 d0 |. ..............| 00001110 05 3a 0d 07 da 0f dd 20 f2 6c 69 6e 65 28 78 25 |.:..... .line(x%| 00001120 29 0d 07 e4 13 e7 20 78 25 20 80 20 72 6c 65 6e |)..... x% . rlen| 00001130 3c 33 3a e1 0d 07 ee 0b ea 20 79 25 2c 7a 25 0d |<3:...... y%,z%.| 00001140 07 f8 33 c8 99 20 22 4f 53 5f 52 65 61 64 4d 6f |..3.. "OS_ReadMo| 00001150 64 65 56 61 72 69 61 62 6c 65 22 2c 2d 31 2c 34 |deVariable",-1,4| 00001160 20 b8 20 2c 2c 79 25 3a 79 25 3d 28 31 3c 3c 79 | . ,,y%:y%=(1<<y| 00001170 25 29 0d 08 02 37 e7 20 78 25 3a 7a 25 3d 28 72 |%)...7. x%:z%=(r| 00001180 6f 66 73 2b 72 6c 65 6e 2d 31 29 2a 32 20 80 20 |ofs+rlen-1)*2 . | 00001190 2d 79 25 3a 8b 20 7a 25 3d 28 72 6f 66 73 2d 31 |-y%:. z%=(rofs-1| 000011a0 29 2a 32 20 80 20 2d 79 25 0d 08 0c 33 c8 99 20 |)*2 . -y%...3.. | 000011b0 22 57 69 6d 70 5f 46 6f 72 63 65 52 65 64 72 61 |"Wimp_ForceRedra| 000011c0 77 22 2c 77 61 76 65 66 6f 72 6d 25 2c 7a 25 2c |w",waveform%,z%,| 000011d0 2d 35 31 32 2c 7a 25 2b 79 25 2c 30 0d 08 16 13 |-512,z%+y%,0....| 000011e0 e7 20 78 25 20 8b 20 f2 6c 69 6e 65 28 b9 29 0d |. x% . .line(.).| 000011f0 08 20 05 e1 0d 08 2a 05 3a 0d 08 34 0d dd 20 f2 |. ....*.:..4.. .| 00001200 72 65 64 72 61 77 0d 08 3e 26 c8 99 20 22 57 69 |redraw..>&.. "Wi| 00001210 6d 70 5f 52 65 64 72 61 77 57 69 6e 64 6f 77 22 |mp_RedrawWindow"| 00001220 2c 2c 71 25 20 b8 20 6d 6f 72 65 25 0d 08 48 24 |,,q% . more%..H$| 00001230 47 25 3d 71 25 21 34 2d 71 25 21 32 30 3a 48 25 |G%=q%!4-q%!20:H%| 00001240 3d 71 25 21 31 36 2d 71 25 21 32 34 2d 32 35 36 |=q%!16-q%!24-256| 00001250 0d 08 52 0c c8 95 20 6d 6f 72 65 25 0d 08 5c 21 |..R... more%..\!| 00001260 20 44 25 3d 77 6f 72 6b 73 70 25 2d 6c 65 6e 67 | D%=worksp%-leng| 00001270 74 68 25 2a 6c 69 6e 73 69 67 6e 64 25 0d 08 66 |th%*linsignd%..f| 00001280 1c 20 45 25 3d 71 25 21 32 38 2d 47 25 3a 46 25 |. E%=q%!28-G%:F%| 00001290 3d 71 25 21 33 36 2d 47 25 0d 08 70 1a 20 c8 99 |=q%!36-G%..p. ..| 000012a0 20 22 57 69 6d 70 5f 53 65 74 43 6f 6c 6f 75 72 | "Wimp_SetColour| 000012b0 22 2c 33 0d 08 7a 18 20 86 20 45 25 2b 47 25 2c |",3..z. . E%+G%,| 000012c0 48 25 2c 46 25 2b 47 25 2c 48 25 0d 08 84 1b 20 |H%,F%+G%,H%.... | 000012d0 c8 99 20 22 57 69 6d 70 5f 53 65 74 43 6f 6c 6f |.. "Wimp_SetColo| 000012e0 75 72 22 2c 31 30 0d 08 8e 24 20 ec 20 72 6f 66 |ur",10...$ . rof| 000012f0 73 2a 32 2b 47 25 2d 32 2c 48 25 2d 32 35 36 3a |s*2+G%-2,H%-256:| 00001300 df 20 42 59 20 30 2c 35 31 32 0d 08 98 0f 20 e7 |. BY 0,512.... .| 00001310 20 72 6c 65 6e 3e 32 20 8c 0d 08 a2 1c 20 20 c8 | rlen>2 ..... .| 00001320 99 20 22 57 69 6d 70 5f 53 65 74 43 6f 6c 6f 75 |. "Wimp_SetColou| 00001330 72 22 2c 31 31 0d 08 ac 2c 20 20 ec 20 28 72 6f |r",11..., . (ro| 00001340 66 73 2b 72 6c 65 6e 29 2a 32 2b 47 25 2d 32 2c |fs+rlen)*2+G%-2,| 00001350 48 25 2d 32 35 36 3a df 20 42 59 20 30 2c 35 31 |H%-256:. BY 0,51| 00001360 32 0d 08 b6 06 20 cd 0d 08 c0 0b 20 d6 20 70 6c |2.... ..... . pl| 00001370 6f 74 0d 08 ca 27 20 c8 99 20 22 57 69 6d 70 5f |ot...' .. "Wimp_| 00001380 47 65 74 52 65 63 74 61 6e 67 6c 65 22 2c 2c 71 |GetRectangle",,q| 00001390 25 20 b8 20 6d 6f 72 65 25 0d 08 d4 05 ce 0d 08 |% . more%.......| 000013a0 de 05 e1 0d 08 e8 05 3a 0d 08 f2 0c dd 20 f2 6d |.......:..... .m| 000013b0 6f 75 73 65 0d 08 fc 10 e7 20 71 25 21 38 20 80 |ouse..... q%!8 .| 000013c0 20 32 20 8c 0d 09 06 0f 20 c8 8e 20 71 25 21 31 | 2 ..... .. q%!1| 000013d0 32 20 ca 0d 09 10 47 20 c9 20 2d 32 3a 6d 78 25 |2 ....G . -2:mx%| 000013e0 3d 21 71 25 2d 6d 65 6e 75 78 25 3a 6d 79 25 3d |=!q%-menux%:my%=| 000013f0 6d 65 6e 75 79 25 3a c8 99 20 22 57 69 6d 70 5f |menuy%:.. "Wimp_| 00001400 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c 6d 65 6e |CreateMenu",,men| 00001410 75 25 2c 6d 78 25 2c 6d 79 25 0d 09 1a 20 20 c9 |u%,mx%,my%... .| 00001420 20 65 64 69 74 25 2c 6b 65 79 62 6f 61 72 64 25 | edit%,keyboard%| 00001430 2c 77 61 76 65 66 6f 72 6d 25 0d 09 24 40 20 20 |,waveform%..$@ | 00001440 6d 78 25 3d 21 71 25 2d 36 34 3a 6d 79 25 3d 71 |mx%=!q%-64:my%=q| 00001450 25 21 34 2b 36 34 3a c8 99 20 22 57 69 6d 70 5f |%!4+64:.. "Wimp_| 00001460 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c 6d 65 6e |CreateMenu",,men| 00001470 75 25 2c 6d 78 25 2c 6d 79 25 0d 09 2e 06 20 cb |u%,mx%,my%.... .| 00001480 0d 09 38 05 cc 0d 09 42 0f 20 c8 8e 20 71 25 21 |..8....B. .. q%!| 00001490 31 32 20 ca 0d 09 4c 34 20 c9 20 2d 32 3a e7 20 |12 ...L4 . -2:. | 000014a0 71 25 21 38 20 80 20 31 3a f2 6f 70 65 6e 28 6b |q%!8 . 1:.open(k| 000014b0 65 79 62 6f 61 72 64 25 29 3a 8b 20 f2 6f 70 65 |eyboard%):. .ope| 000014c0 6e 28 65 64 69 74 25 29 0d 09 56 0c 20 c9 20 73 |n(edit%)..V. . s| 000014d0 61 76 65 25 0d 09 60 10 20 20 c8 8e 20 71 25 21 |ave%..`. .. q%!| 000014e0 31 36 20 ca 0d 09 6a 09 20 20 c9 20 30 0d 09 74 |16 ...j. . 0..t| 000014f0 1a 20 20 20 e7 20 a7 24 73 61 76 65 70 74 72 25 |. . .$saveptr%| 00001500 2c 22 2e 22 29 20 8c 0d 09 7e 20 20 20 20 20 24 |,".") ...~ $| 00001510 6e 61 6d 65 25 3d 24 73 61 76 65 70 74 72 25 3a |name%=$saveptr%:| 00001520 f2 64 6f 73 61 76 65 0d 09 88 08 20 20 20 cc 0d |.dosave.... ..| 00001530 09 92 4a 20 20 20 20 f2 74 65 6c 6c 74 68 65 6d |..J .tellthem| 00001540 6f 66 66 28 22 54 6f 20 73 61 76 65 2c 20 64 72 |off("To save, dr| 00001550 61 67 20 74 68 65 20 66 69 6c 65 20 69 63 6f 6e |ag the file icon| 00001560 20 74 6f 20 61 20 64 69 72 65 63 74 6f 72 79 20 | to a directory | 00001570 76 69 65 77 65 72 2e 22 29 0d 09 9c 08 20 20 20 |viewer.").... | 00001580 cd 0d 09 a6 09 20 20 c9 20 31 0d 09 b0 32 20 20 |..... . 1...2 | 00001590 20 21 71 25 3d 73 61 76 65 25 3a 71 25 21 34 3d | !q%=save%:q%!4=| 000015a0 31 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 |1:.. "Wimp_GetIc| 000015b0 6f 6e 53 74 61 74 65 22 2c 2c 71 25 0d 09 ba 32 |onState",,q%...2| 000015c0 20 20 20 71 25 21 34 30 3d 73 61 76 65 25 3a c8 | q%!40=save%:.| 000015d0 99 20 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f |. "Wimp_GetWindo| 000015e0 77 53 74 61 74 65 22 2c 2c 71 25 2b 34 30 0d 09 |wState",,q%+40..| 000015f0 c4 2b 20 20 20 71 25 21 38 2b 3d 71 25 21 34 34 |.+ q%!8+=q%!44| 00001600 2d 71 25 21 36 30 3a 71 25 21 31 36 2b 3d 71 25 |-q%!60:q%!16+=q%| 00001610 21 34 34 2d 71 25 21 36 30 0d 09 ce 2c 20 20 20 |!44-q%!60..., | 00001620 71 25 21 31 32 2b 3d 71 25 21 35 36 2d 71 25 21 |q%!12+=q%!56-q%!| 00001630 36 34 3a 71 25 21 32 30 2b 3d 71 25 21 35 36 2d |64:q%!20+=q%!56-| 00001640 71 25 21 36 34 0d 09 d8 1d 20 20 20 71 25 21 32 |q%!64.... q%!2| 00001650 34 3d 30 3a 71 25 21 32 38 3d 30 3a 71 25 21 34 |4=0:q%!28=0:q%!4| 00001660 3d 35 0d 09 e2 1f 20 20 20 71 25 21 33 32 3d 2d |=5.... q%!32=-| 00001670 31 3e 3e 3e 31 3a 71 25 21 33 36 3d 71 25 21 33 |1>>>1:q%!36=q%!3| 00001680 32 0d 09 ec 2c 20 20 20 64 72 61 67 25 3d a4 64 |2..., drag%=.d| 00001690 72 61 67 28 31 39 37 2c 31 2c 22 66 69 6c 65 5f |rag(197,1,"file_| 000016a0 22 2b 24 73 61 76 65 69 63 6f 6e 25 29 0d 09 f6 |"+$saveicon%)...| 000016b0 07 20 20 cb 0d 0a 00 0c 20 c9 20 65 64 69 74 25 |. ..... . edit%| 000016c0 0d 0a 0a 11 20 20 61 25 3d 71 25 21 38 20 80 20 |.... a%=q%!8 . | 000016d0 31 0d 0a 14 10 20 20 c8 8e 20 71 25 21 31 36 20 |1.... .. q%!16 | 000016e0 ca 0d 0a 1e 1f 20 20 c9 20 35 2b 61 25 3a 62 25 |..... . 5+a%:b%| 000016f0 3d a4 65 76 61 6c 28 73 76 6f 6c 70 74 72 25 29 |=.eval(svolptr%)| 00001700 0d 0a 28 34 20 20 20 e7 20 62 25 3a 24 73 76 6f |..(4 . b%:$svo| 00001710 6c 70 74 72 25 3d c3 20 28 62 25 2d 31 29 3a f2 |lptr%=. (b%-1):.| 00001720 69 63 6f 6e 28 65 64 69 74 25 2c 32 2c 31 29 3a |icon(edit%,2,1):| 00001730 61 25 3d 32 0d 0a 32 1f 20 20 c9 20 36 2d 61 25 |a%=2..2. . 6-a%| 00001740 3a 62 25 3d a4 65 76 61 6c 28 73 76 6f 6c 70 74 |:b%=.eval(svolpt| 00001750 72 25 29 0d 0a 3c 38 20 20 20 e7 20 62 25 3c 32 |r%)..<8 . b%<2| 00001760 35 35 3a 24 73 76 6f 6c 70 74 72 25 3d c3 20 28 |55:$svolptr%=. (| 00001770 62 25 2b 31 29 3a f2 69 63 6f 6e 28 65 64 69 74 |b%+1):.icon(edit| 00001780 25 2c 32 2c 31 29 3a 61 25 3d 32 0d 0a 46 21 20 |%,2,1):a%=2..F! | 00001790 20 c9 20 37 2b 61 25 3a 72 6f 66 73 3d a4 65 76 | . 7+a%:rofs=.ev| 000017a0 61 6c 28 72 6f 66 73 70 74 72 25 29 0d 0a 50 0f |al(rofsptr%)..P.| 000017b0 20 20 20 e7 20 72 6f 66 73 20 8c 0d 0a 5a 18 20 | . rofs ...Z. | 000017c0 20 20 20 f2 6c 69 6e 65 28 a3 29 3a 72 6f 66 73 | .line(.):rofs| 000017d0 2d 3d 31 0d 0a 64 29 20 20 20 20 24 72 6f 66 73 |-=1..d) $rofs| 000017e0 70 74 72 25 3d c3 20 72 6f 66 73 3a f2 69 63 6f |ptr%=. rofs:.ico| 000017f0 6e 28 65 64 69 74 25 2c 33 2c 31 29 0d 0a 6e 15 |n(edit%,3,1)..n.| 00001800 20 20 20 20 f2 6c 69 6e 65 28 a3 29 3a 61 25 3d | .line(.):a%=| 00001810 32 0d 0a 78 08 20 20 20 cd 0d 0a 82 21 20 20 c9 |2..x. ....! .| 00001820 20 38 2d 61 25 3a 72 6f 66 73 3d a4 65 76 61 6c | 8-a%:rofs=.eval| 00001830 28 72 6f 66 73 70 74 72 25 29 0d 0a 8c 27 20 20 |(rofsptr%)...' | 00001840 20 e7 20 72 6f 66 73 3c 6c 65 6e 67 74 68 25 2d | . rofs<length%-| 00001850 a4 65 76 61 6c 28 72 6c 65 6e 70 74 72 25 29 20 |.eval(rlenptr%) | 00001860 8c 0d 0a 96 18 20 20 20 20 f2 6c 69 6e 65 28 a3 |..... .line(.| 00001870 29 3a 72 6f 66 73 2b 3d 31 0d 0a a0 29 20 20 20 |):rofs+=1...) | 00001880 20 24 72 6f 66 73 70 74 72 25 3d c3 20 72 6f 66 | $rofsptr%=. rof| 00001890 73 3a f2 69 63 6f 6e 28 65 64 69 74 25 2c 33 2c |s:.icon(edit%,3,| 000018a0 31 29 0d 0a aa 15 20 20 20 20 f2 6c 69 6e 65 28 |1).... .line(| 000018b0 a3 29 3a 61 25 3d 32 0d 0a b4 08 20 20 20 cd 0d |.):a%=2.... ..| 000018c0 0a be 21 20 20 c9 20 39 2b 61 25 3a 72 6c 65 6e |..! . 9+a%:rlen| 000018d0 3d a4 65 76 61 6c 28 72 6c 65 6e 70 74 72 25 29 |=.eval(rlenptr%)| 000018e0 0d 0a c8 11 20 20 20 e7 20 72 6c 65 6e 3e 32 20 |.... . rlen>2 | 000018f0 8c 0d 0a d2 18 20 20 20 20 f2 6c 69 6e 65 28 b9 |..... .line(.| 00001900 29 3a 72 6c 65 6e 2d 3d 31 0d 0a dc 29 20 20 20 |):rlen-=1...) | 00001910 20 24 72 6c 65 6e 70 74 72 25 3d c3 20 72 6c 65 | $rlenptr%=. rle| 00001920 6e 3a f2 69 63 6f 6e 28 65 64 69 74 25 2c 34 2c |n:.icon(edit%,4,| 00001930 31 29 0d 0a e6 15 20 20 20 20 f2 6c 69 6e 65 28 |1).... .line(| 00001940 b9 29 3a 61 25 3d 32 0d 0a f0 08 20 20 20 cd 0d |.):a%=2.... ..| 00001950 0a fa 22 20 20 c9 20 31 30 2d 61 25 3a 72 6c 65 |.." . 10-a%:rle| 00001960 6e 3d a4 65 76 61 6c 28 72 6c 65 6e 70 74 72 25 |n=.eval(rlenptr%| 00001970 29 0d 0b 04 27 20 20 20 e7 20 72 6c 65 6e 3c 6c |)...' . rlen<l| 00001980 65 6e 67 74 68 25 2d a4 65 76 61 6c 28 72 6f 66 |ength%-.eval(rof| 00001990 73 70 74 72 25 29 20 8c 0d 0b 0e 18 20 20 20 20 |sptr%) ..... | 000019a0 f2 6c 69 6e 65 28 b9 29 3a 72 6c 65 6e 2b 3d 31 |.line(.):rlen+=1| 000019b0 0d 0b 18 29 20 20 20 20 24 72 6c 65 6e 70 74 72 |...) $rlenptr| 000019c0 25 3d c3 20 72 6c 65 6e 3a f2 69 63 6f 6e 28 65 |%=. rlen:.icon(e| 000019d0 64 69 74 25 2c 34 2c 31 29 0d 0b 22 15 20 20 20 |dit%,4,1)..". | 000019e0 20 f2 6c 69 6e 65 28 b9 29 3a 61 25 3d 32 0d 0b | .line(.):a%=2..| 000019f0 2c 08 20 20 20 cd 0d 0b 36 36 20 20 c9 20 31 36 |,. ...66 . 16| 00001a00 2c 31 37 2c 31 38 3a 24 73 61 76 65 69 63 6f 6e |,17,18:$saveicon| 00001a10 25 3d c1 22 44 33 43 43 42 35 46 46 41 22 2c 71 |%=."D3CCB5FFA",q| 00001a20 25 21 31 36 2a 33 2d 34 37 2c 33 29 0d 0b 40 41 |%!16*3-47,3)..@A| 00001a30 20 20 20 6d 78 25 3d 21 71 25 2d 36 34 3a 6d 79 | mx%=!q%-64:my| 00001a40 25 3d 71 25 21 34 2b 36 34 3a c8 99 20 22 57 69 |%=q%!4+64:.. "Wi| 00001a50 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c |mp_CreateMenu",,| 00001a60 73 61 76 65 25 2c 6d 78 25 2c 6d 79 25 0d 0b 4a |save%,mx%,my%..J| 00001a70 07 20 20 cb 0d 0b 54 1e 20 20 e7 20 61 25 3d 32 |. ...T. . a%=2| 00001a80 3a 61 73 6d 25 3d a3 3a 75 6e 73 61 76 65 64 25 |:asm%=.:unsaved%| 00001a90 3d b9 0d 0b 5e 10 20 c9 20 6b 65 79 62 6f 61 72 |=...^. . keyboar| 00001aa0 64 25 0d 0b 68 12 20 20 e7 20 71 25 21 31 36 3d |d%..h. . q%!16=| 00001ab0 34 30 20 8c 0d 0b 72 10 20 20 20 d4 20 31 2c 30 |40 ...r. . 1,0| 00001ac0 2c 30 2c 30 0d 0b 7c 07 20 20 cc 0d 0b 86 1e 20 |,0,0..|. ..... | 00001ad0 20 20 e7 20 71 25 21 31 36 3e 2d 31 20 80 20 71 | . q%!16>-1 . q| 00001ae0 25 21 31 36 3c 33 36 20 8c 0d 0b 90 1f 20 20 20 |%!16<36 ..... | 00001af0 20 e7 20 77 6f 72 6b 73 70 25 3e 2d 31 20 80 20 | . worksp%>-1 . | 00001b00 ac 20 61 73 6d 25 20 8c 0d 0b 9a 16 20 20 20 20 |. asm% ..... | 00001b10 20 f2 72 65 6c 65 61 73 65 76 6f 69 63 65 0d 0b | .releasevoice..| 00001b20 a4 12 20 20 20 20 20 f2 61 73 73 65 6d 62 6c 65 |.. .assemble| 00001b30 0d 0b ae 3c 20 20 20 20 20 c8 99 20 22 58 53 6f |...< .. "XSo| 00001b40 75 6e 64 5f 49 6e 73 74 61 6c 6c 56 6f 69 63 65 |und_InstallVoice| 00001b50 22 2c 6d 63 25 2b 76 6f 69 63 65 62 61 73 65 20 |",mc%+voicebase | 00001b60 b8 20 2c 76 6f 69 63 65 25 3b 61 25 0d 0b b8 24 |. ,voice%;a%...$| 00001b70 20 20 20 20 20 e7 20 61 25 20 80 20 31 3a 76 6f | . a% . 1:vo| 00001b80 69 63 65 25 3d 30 3a f2 70 72 65 76 69 6f 75 73 |ice%=0:.previous| 00001b90 0d 0b c2 09 20 20 20 20 cd 0d 0b cc 12 20 20 20 |.... ..... | 00001ba0 20 e7 20 76 6f 69 63 65 25 20 8c 0d 0b d6 2e 20 | . voice% ..... | 00001bb0 20 20 20 20 c8 99 20 22 53 6f 75 6e 64 5f 41 74 | .. "Sound_At| 00001bc0 74 61 63 68 56 6f 69 63 65 22 2c 31 2c 76 6f 69 |tachVoice",1,voi| 00001bd0 63 65 25 20 b8 20 2c 61 25 0d 0b e0 1e 20 20 20 |ce% . ,a%.... | 00001be0 20 20 e7 20 61 25 3c 3e 76 6f 69 63 65 25 3a 70 | . a%<>voice%:p| 00001bf0 72 65 76 25 3d 61 25 0d 0b ea 09 20 20 20 20 cd |rev%=a%.... .| 00001c00 0d 0b f4 14 20 20 20 20 e7 20 71 25 21 31 36 3c |.... . q%!16<| 00001c10 32 31 20 8c 0d 0b fe 20 20 20 20 20 20 70 69 74 |21 .... pit| 00001c20 63 68 25 3d 6e 6f 74 65 25 28 71 25 21 31 36 20 |ch%=note%(q%!16 | 00001c30 83 20 37 29 0d 0c 08 09 20 20 20 20 cc 0d 0c 12 |. 7).... ....| 00001c40 40 20 20 20 20 20 70 69 74 63 68 25 3d 71 25 21 |@ pitch%=q%!| 00001c50 31 36 2d 32 31 3a 71 25 21 31 36 3d 28 70 69 74 |16-21:q%!16=(pit| 00001c60 63 68 25 20 81 20 35 29 2a 37 2b 73 68 61 72 70 |ch% . 5)*7+sharp| 00001c70 25 28 70 69 74 63 68 25 20 83 20 35 29 0d 0c 1c |%(pitch% . 5)...| 00001c80 22 20 20 20 20 20 70 69 74 63 68 25 3d 6e 6f 74 |" pitch%=not| 00001c90 65 25 28 71 25 21 31 36 20 83 20 37 29 2b 31 0d |e%(q%!16 . 7)+1.| 00001ca0 0c 26 09 20 20 20 20 cd 0d 0c 30 2f 20 20 20 20 |.&. ...0/ | 00001cb0 70 69 74 63 68 25 3d 34 30 39 36 2a 28 71 25 21 |pitch%=4096*(q%!| 00001cc0 31 36 20 81 20 37 2b 33 29 2b 70 69 74 63 68 25 |16 . 7+3)+pitch%| 00001cd0 2a 31 30 32 34 2f 33 0d 0c 3a 1b 20 20 20 20 d4 |*1024/3..:. .| 00001ce0 20 31 2c 26 31 37 46 2c 70 69 74 63 68 25 2c 32 | 1,&17F,pitch%,2| 00001cf0 35 35 0d 0c 44 08 20 20 20 cd 0d 0c 4e 07 20 20 |55..D. ...N. | 00001d00 cd 0d 0c 58 10 20 c9 20 77 61 76 65 66 6f 72 6d |...X. . waveform| 00001d10 25 0d 0c 62 3a 20 20 78 25 3d 21 71 25 3a 21 71 |%..b: x%=!q%:!q| 00001d20 25 3d 77 61 76 65 66 6f 72 6d 25 3a c8 99 20 22 |%=waveform%:.. "| 00001d30 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 |Wimp_GetWindowSt| 00001d40 61 74 65 22 2c 2c 71 25 2b 31 32 0d 0c 6c 1d 20 |ate",,q%+12..l. | 00001d50 20 78 25 3d 28 78 25 2b 71 25 21 33 32 2d 71 25 | x%=(x%+q%!32-q%| 00001d60 21 31 36 29 2f 32 2b 31 0d 0c 76 12 20 20 e7 20 |!16)/2+1..v. . | 00001d70 71 25 21 38 20 80 20 31 20 8c 0d 0c 80 0f 20 20 |q%!8 . 1 ..... | 00001d80 20 f2 6c 69 6e 65 28 b9 29 0d 0c 8a 26 20 20 20 | .line(.)...& | 00001d90 e7 20 78 25 3c 72 6f 66 73 3a 72 6c 65 6e 3d 32 |. x%<rofs:rlen=2| 00001da0 3a 8b 20 72 6c 65 6e 3d 78 25 2d 72 6f 66 73 0d |:. rlen=x%-rofs.| 00001db0 0c 94 16 20 20 20 e7 20 72 6c 65 6e 3c 32 3a 72 |... . rlen<2:r| 00001dc0 6c 65 6e 3d 32 0d 0c 9e 2c 20 20 20 e7 20 72 6f |len=2..., . ro| 00001dd0 66 73 2b 72 6c 65 6e 3e 6c 65 6e 67 74 68 25 3a |fs+rlen>length%:| 00001de0 72 6c 65 6e 3d 6c 65 6e 67 74 68 25 2d 72 6f 66 |rlen=length%-rof| 00001df0 73 0d 0c a8 25 20 20 20 e7 20 72 6c 65 6e 3c 32 |s...% . rlen<2| 00001e00 3a 72 6c 65 6e 3d 32 3a 72 6f 66 73 3d 6c 65 6e |:rlen=2:rofs=len| 00001e10 67 74 68 25 2d 32 0d 0c b2 0f 20 20 20 f2 6c 69 |gth%-2.... .li| 00001e20 6e 65 28 b9 29 0d 0c bc 28 20 20 20 24 72 6c 65 |ne(.)...( $rle| 00001e30 6e 70 74 72 25 3d c3 20 72 6c 65 6e 3a f2 69 63 |nptr%=. rlen:.ic| 00001e40 6f 6e 28 65 64 69 74 25 2c 34 2c 31 29 0d 0c c6 |on(edit%,4,1)...| 00001e50 07 20 20 cc 0d 0c d0 17 20 20 20 f2 6c 69 6e 65 |. ..... .line| 00001e60 28 a3 29 3a 72 6f 66 73 3d 78 25 0d 0c da 1c 20 |(.):rofs=x%.... | 00001e70 20 20 e7 20 72 6f 66 73 2b 72 6c 65 6e 3e 6c 65 | . rofs+rlen>le| 00001e80 6e 67 74 68 25 20 8c 0d 0c e4 38 20 20 20 20 72 |ngth% ....8 r| 00001e90 6c 65 6e 3d 6c 65 6e 67 74 68 25 2d 72 6f 66 73 |len=length%-rofs| 00001ea0 3a e7 20 72 6c 65 6e 3c 32 3a 72 6f 66 73 3d 6c |:. rlen<2:rofs=l| 00001eb0 65 6e 67 74 68 25 2d 32 3a 72 6c 65 6e 3d 32 0d |ength%-2:rlen=2.| 00001ec0 0c ee 29 20 20 20 20 24 72 6c 65 6e 70 74 72 25 |..) $rlenptr%| 00001ed0 3d c3 20 72 6c 65 6e 3a f2 69 63 6f 6e 28 65 64 |=. rlen:.icon(ed| 00001ee0 69 74 25 2c 34 2c 31 29 0d 0c f8 08 20 20 20 cd |it%,4,1).... .| 00001ef0 0d 0d 02 0f 20 20 20 f2 6c 69 6e 65 28 a3 29 0d |.... .line(.).| 00001f00 0d 0c 28 20 20 20 24 72 6f 66 73 70 74 72 25 3d |..( $rofsptr%=| 00001f10 c3 20 72 6f 66 73 3a f2 69 63 6f 6e 28 65 64 69 |. rofs:.icon(edi| 00001f20 74 25 2c 33 2c 31 29 0d 0d 16 07 20 20 cd 0d 0d |t%,3,1).... ...| 00001f30 20 17 20 20 61 73 6d 25 3d a3 3a 75 6e 73 61 76 | . asm%=.:unsav| 00001f40 65 64 25 3d b9 0d 0d 2a 11 20 c9 20 6f 76 65 72 |ed%=...*. . over| 00001f50 77 72 69 74 65 25 0d 0d 34 11 20 20 e7 20 71 25 |write%..4. . q%| 00001f60 21 31 36 3d 30 20 8c 0d 0d 3e 46 20 20 20 e7 20 |!16=0 ...>F . | 00001f70 74 79 70 65 25 3c 30 3a 74 79 70 65 25 3d 2d 74 |type%<0:type%=-t| 00001f80 79 70 65 25 3a c8 99 20 22 57 69 6d 70 5f 53 65 |ype%:.. "Wimp_Se| 00001f90 6e 64 4d 65 73 73 61 67 65 22 2c 31 37 2c 71 25 |ndMessage",17,q%| 00001fa0 2b 31 32 30 30 2c 71 25 21 31 32 30 34 0d 0d 48 |+1200,q%!1204..H| 00001fb0 0e 20 20 20 f2 64 6f 6c 6f 61 64 0d 0d 52 07 20 |. .doload..R. | 00001fc0 20 cd 0d 0d 5c 1e 20 20 c8 99 20 22 57 69 6d 70 | ...\. .. "Wimp| 00001fd0 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c 2d 31 |_CreateMenu",,-1| 00001fe0 0d 0d 66 0f 20 c9 20 64 69 73 63 61 72 64 25 0d |..f. . discard%.| 00001ff0 0d 70 25 20 20 e7 20 71 25 21 31 36 3d 30 3a 71 |.p% . q%!16=0:q| 00002000 75 69 74 25 3d b9 3a 8b 20 73 68 75 74 64 6f 77 |uit%=.:. shutdow| 00002010 6e 25 3d a3 0d 0d 7a 1e 20 20 c8 99 20 22 57 69 |n%=...z. .. "Wi| 00002020 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c |mp_CreateMenu",,| 00002030 2d 31 0d 0d 84 06 20 cb 0d 0d 8e 05 cd 0d 0d 98 |-1.... .........| 00002040 05 e1 0d 0d a2 05 3a 0d 0d ac 15 dd 20 a4 64 72 |......:..... .dr| 00002050 61 67 28 41 25 2c 42 25 2c 61 24 29 0d 0d b6 0d |ag(A%,B%,a$)....| 00002060 ea 20 6d 78 25 2c 6d 79 25 0d 0d c0 1f c8 99 20 |. mx%,my%...... | 00002070 22 4f 53 5f 42 79 74 65 22 2c 31 36 31 2c 32 38 |"OS_Byte",161,28| 00002080 20 b8 20 2c 2c 6d 78 25 0d 0d ca 0f e7 20 6d 78 | . ,,mx%..... mx| 00002090 25 20 80 20 32 20 8c 0d 0d d4 3d 20 c8 99 20 26 |% . 2 ....= .. &| 000020a0 36 32 34 30 30 2c 41 25 2c 42 25 2c 61 24 2c 71 |62400,A%,B%,a$,q| 000020b0 25 2b 38 2c 71 25 2b 32 34 20 b8 20 3b 41 25 3a |%+8,q%+24 . ;A%:| 000020c0 f4 20 58 44 72 61 67 41 53 70 72 69 74 65 5f 53 |. XDragASprite_S| 000020d0 74 61 72 74 0d 0d de 19 20 6d 79 25 3d 31 3a e7 |tart.... my%=1:.| 000020e0 20 41 25 20 80 20 31 3a 6d 78 25 3d 30 0d 0d e8 | A% . 1:mx%=0...| 000020f0 05 cd 0d 0d f2 2c e7 20 6d 78 25 20 80 20 32 20 |.....,. mx% . 2 | 00002100 8b 20 6d 79 25 3d 2d 31 3a c8 99 20 22 57 69 6d |. my%=-1:.. "Wim| 00002110 70 5f 44 72 61 67 42 6f 78 22 2c 2c 71 25 0d 0d |p_DragBox",,q%..| 00002120 fc 08 3d 6d 79 25 0d 0e 06 05 3a 0d 0e 10 0b dd |..=my%....:.....| 00002130 20 f2 64 72 61 67 0d 0e 1a 24 c8 99 20 22 57 69 | .drag...$.. "Wi| 00002140 6d 70 5f 47 65 74 50 6f 69 6e 74 65 72 49 6e 66 |mp_GetPointerInf| 00002150 6f 22 2c 2c 71 25 2b 31 32 38 0d 0e 24 10 71 25 |o",,q%+128..$.q%| 00002160 21 32 30 3d 71 25 21 31 34 30 0d 0e 2e 10 71 25 |!20=q%!140....q%| 00002170 21 32 34 3d 71 25 21 31 34 34 0d 0e 38 13 c8 8e |!24=q%!144..8...| 00002180 20 24 73 61 76 65 69 63 6f 6e 25 20 ca 0d 0e 42 | $saveicon% ...B| 00002190 20 c9 20 22 44 33 43 22 3a 71 25 21 33 36 3d 6c | . "D3C":q%!36=l| 000021a0 65 6e 67 74 68 25 2b 33 20 80 20 2d 34 0d 0e 4c |ength%+3 . -4..L| 000021b0 21 c9 20 22 43 42 35 22 3a 71 25 21 33 36 3d 6c |!. "CB5":q%!36=l| 000021c0 65 6e 67 74 68 25 2b 39 35 20 80 20 2d 34 0d 0e |ength%+95 . -4..| 000021d0 56 23 c9 20 22 46 46 41 22 3a 71 25 21 33 36 3d |V#. "FFA":q%!36=| 000021e0 6c 65 6e 67 74 68 25 2b 31 30 32 37 20 80 20 2d |length%+1027 . -| 000021f0 34 0d 0e 60 05 cb 0d 0e 6a 1c 71 25 21 34 30 3d |4..`....j.q%!40=| 00002200 a0 20 28 22 26 22 2b 24 73 61 76 65 69 63 6f 6e |. ("&"+$saveicon| 00002210 25 29 0d 0e 74 17 61 24 3d a4 6c 65 61 66 28 24 |%)..t.a$=.leaf($| 00002220 73 61 76 65 70 74 72 25 29 0d 0e 7e 12 24 28 71 |saveptr%)..~.$(q| 00002230 25 2b 34 34 29 3d 61 24 2b bd 30 0d 0e 88 14 21 |%+44)=a$+.0....!| 00002240 71 25 3d 34 38 2b a9 20 61 24 20 80 20 2d 34 0d |q%=48+. a$ . -4.| 00002250 0e 92 13 71 25 21 31 32 3d 30 3a 71 25 21 31 36 |...q%!12=0:q%!16| 00002260 3d 31 0d 0e 9c 2b c8 99 20 22 57 69 6d 70 5f 53 |=1...+.. "Wimp_S| 00002270 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 37 2c 71 |endMessage",17,q| 00002280 25 2c 71 25 21 32 30 2c 71 25 21 32 34 0d 0e a6 |%,q%!20,q%!24...| 00002290 0b 64 72 61 67 25 3d 30 0d 0e b0 05 e1 0d 0e ba |.drag%=0........| 000022a0 05 3a 0d 0e c4 0b dd 20 f2 6d 65 6e 75 0d 0e ce |.:..... .menu...| 000022b0 23 c8 99 20 22 57 69 6d 70 5f 47 65 74 50 6f 69 |#.. "Wimp_GetPoi| 000022c0 6e 74 65 72 49 6e 66 6f 22 2c 2c 71 25 2b 32 30 |nterInfo",,q%+20| 000022d0 0d 0e d8 0c c8 8e 20 21 71 25 20 ca 0d 0e e2 3d |...... !q% ....=| 000022e0 c9 20 30 3a c8 99 20 22 57 69 6d 70 5f 43 72 65 |. 0:.. "Wimp_Cre| 000022f0 61 74 65 4d 65 6e 75 22 2c 2c 69 6e 66 6f 25 2c |ateMenu",,info%,| 00002300 71 25 21 32 30 2d 36 34 2c 71 25 21 32 34 2b 36 |q%!20-64,q%!24+6| 00002310 34 3a 71 25 21 32 38 3d 30 0d 0e ec 14 c9 20 31 |4:q%!28=0..... 1| 00002320 3a f2 6f 70 65 6e 28 65 64 69 74 25 29 0d 0e f6 |:.open(edit%)...| 00002330 07 c9 20 32 0d 0f 00 19 20 e7 20 71 25 21 34 3e |.. 2.... . q%!4>| 00002340 3d 30 20 80 20 71 25 21 34 3c 33 20 8c 0d 0f 0a |=0 . q%!4<3 ....| 00002350 29 20 20 24 73 61 76 65 69 63 6f 6e 25 3d c1 22 |) $saveicon%=."| 00002360 44 33 43 43 42 35 46 46 41 22 2c 71 25 21 34 2a |D3CCB5FFA",q%!4*| 00002370 33 2b 31 2c 33 29 0d 0f 14 31 20 20 c8 99 20 22 |3+1,3)...1 .. "| 00002380 57 69 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 |Wimp_CreateMenu"| 00002390 2c 2c 73 61 76 65 25 2c 6d 78 25 2c 6d 79 25 3a |,,save%,mx%,my%:| 000023a0 71 25 21 32 38 3d 30 0d 0f 1e 06 20 cd 0d 0f 28 |q%!28=0.... ...(| 000023b0 18 c9 20 33 3a f2 6f 70 65 6e 28 6b 65 79 62 6f |.. 3:.open(keybo| 000023c0 61 72 64 25 29 0d 0f 32 18 c9 20 34 3a f2 6f 70 |ard%)..2.. 4:.op| 000023d0 65 6e 28 77 61 76 65 66 6f 72 6d 25 29 0d 0f 3c |en(waveform%)..<| 000023e0 40 c9 20 35 3a 73 68 75 74 64 6f 77 6e 25 3d a3 |@. 5:shutdown%=.| 000023f0 3a 71 75 69 74 25 3d ac 20 75 6e 73 61 76 65 64 |:quit%=. unsaved| 00002400 25 3a e7 20 71 75 69 74 25 20 8b 20 f2 63 65 6e |%:. quit% . .cen| 00002410 74 72 65 28 64 69 73 63 61 72 64 25 29 0d 0f 46 |tre(discard%)..F| 00002420 05 cb 0d 0f 50 33 e7 20 71 25 21 32 38 20 80 20 |....P3. q%!28 . | 00002430 31 3a c8 99 20 22 57 69 6d 70 5f 43 72 65 61 74 |1:.. "Wimp_Creat| 00002440 65 4d 65 6e 75 22 2c 2c 6d 65 6e 75 25 2c 6d 78 |eMenu",,menu%,mx| 00002450 25 2c 6d 79 25 0d 0f 5a 05 e1 0d 0f 64 05 3a 0d |%,my%..Z....d.:.| 00002460 0f 6e 13 dd 20 f2 6f 70 65 6e 28 71 25 21 36 30 |.n.. .open(q%!60| 00002470 30 29 0d 0f 78 24 c8 99 20 22 57 69 6d 70 5f 47 |0)..x$.. "Wimp_G| 00002480 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c |etWindowState",,| 00002490 71 25 2b 36 30 30 0d 0f 82 29 71 25 21 36 32 38 |q%+600...)q%!628| 000024a0 3d b9 3a c8 99 20 22 57 69 6d 70 5f 4f 70 65 6e |=.:.. "Wimp_Open| 000024b0 57 69 6e 64 6f 77 22 2c 2c 71 25 2b 36 30 30 0d |Window",,q%+600.| 000024c0 0f 8c 05 e1 0d 0f 96 05 3a 0d 0f a0 14 dd 20 f2 |........:..... .| 000024d0 66 72 6f 6e 74 28 71 25 21 36 30 30 29 0d 0f aa |front(q%!600)...| 000024e0 24 c8 99 20 22 57 69 6d 70 5f 47 65 74 57 69 6e |$.. "Wimp_GetWin| 000024f0 64 6f 77 53 74 61 74 65 22 2c 2c 71 25 2b 36 30 |dowState",,q%+60| 00002500 30 0d 0f b4 36 e7 20 71 25 3f 36 33 34 20 80 20 |0...6. q%?634 . | 00002510 31 3a 71 25 21 36 32 38 3d b9 3a c8 99 20 22 57 |1:q%!628=.:.. "W| 00002520 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 2c |imp_OpenWindow",| 00002530 2c 71 25 2b 36 30 30 0d 0f be 05 e1 0d 0f c8 05 |,q%+600.........| 00002540 3a 0d 0f d2 15 dd 20 f2 63 65 6e 74 72 65 28 71 |:..... .centre(q| 00002550 25 21 36 30 30 29 0d 0f dc 24 c8 99 20 22 57 69 |%!600)...$.. "Wi| 00002560 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 74 |mp_GetWindowStat| 00002570 65 22 2c 2c 71 25 2b 36 30 30 0d 0f e6 27 c8 99 |e",,q%+600...'..| 00002580 20 22 4f 53 5f 52 65 61 64 4d 6f 64 65 56 61 72 | "OS_ReadModeVar| 00002590 69 61 62 6c 65 22 2c eb 2c 34 20 b8 20 2c 2c 61 |iable",.,4 . ,,a| 000025a0 25 0d 0f f0 28 c8 99 20 22 4f 53 5f 52 65 61 64 |%...(.. "OS_Read| 000025b0 4d 6f 64 65 56 61 72 69 61 62 6c 65 22 2c eb 2c |ModeVariable",.,| 000025c0 31 31 20 b8 20 2c 2c 78 25 0d 0f fa 0d 78 25 3d |11 . ,,x%....x%=| 000025d0 78 25 3c 3c 61 25 0d 10 04 27 c8 99 20 22 4f 53 |x%<<a%...'.. "OS| 000025e0 5f 52 65 61 64 4d 6f 64 65 56 61 72 69 61 62 6c |_ReadModeVariabl| 000025f0 65 22 2c eb 2c 35 20 b8 20 2c 2c 61 25 0d 10 0e |e",.,5 . ,,a%...| 00002600 28 c8 99 20 22 4f 53 5f 52 65 61 64 4d 6f 64 65 |(.. "OS_ReadMode| 00002610 56 61 72 69 61 62 6c 65 22 2c eb 2c 31 32 20 b8 |Variable",.,12 .| 00002620 20 2c 2c 79 25 0d 10 18 0d 79 25 3d 79 25 3c 3c | ,,y%....y%=y%<<| 00002630 61 25 0d 10 22 4a c8 99 20 22 57 69 6d 70 5f 43 |a%.."J.. "Wimp_C| 00002640 72 65 61 74 65 4d 65 6e 75 22 2c 2c 71 25 21 36 |reateMenu",,q%!6| 00002650 30 30 2c 28 78 25 2b 71 25 21 36 30 34 2d 71 25 |00,(x%+q%!604-q%| 00002660 21 36 31 32 29 2f 32 2c 28 79 25 2b 71 25 21 36 |!612)/2,(y%+q%!6| 00002670 31 36 2d 71 25 21 36 30 38 29 2f 32 0d 10 2c 05 |16-q%!608)/2..,.| 00002680 e1 0d 10 36 05 3a 0d 10 40 0f dd 20 f2 64 61 74 |...6.:..@.. .dat| 00002690 61 6f 70 65 6e 0d 10 4a 2c e7 20 71 25 21 34 30 |aopen..J,. q%!40| 000026a0 3c 3e 26 44 33 43 20 80 20 71 25 21 34 30 3c 3e |<>&D3C . q%!40<>| 000026b0 26 43 42 35 20 80 20 71 25 21 34 30 3c 3e 36 3a |&CB5 . q%!40<>6:| 000026c0 e1 0d 10 54 16 71 25 21 31 36 3d 34 3a 71 25 21 |...T.q%!16=4:q%!| 000026d0 31 32 3d 71 25 21 38 0d 10 5e 22 74 79 70 65 25 |12=q%!8..^"type%| 000026e0 3d 71 25 21 34 30 3a 66 69 6c 65 24 3d a4 72 65 |=q%!40:file$=.re| 000026f0 61 64 28 71 25 2b 34 34 29 0d 10 68 24 c8 99 20 |ad(q%+44)..h$.. | 00002700 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 67 |"Wimp_SendMessag| 00002710 65 22 2c 31 37 2c 71 25 2c 71 25 21 34 0d 10 72 |e",17,q%,q%!4..r| 00002720 24 e7 20 75 6e 73 61 76 65 64 25 3a f2 63 65 6e |$. unsaved%:.cen| 00002730 74 72 65 28 6f 76 65 72 77 72 69 74 65 25 29 3a |tre(overwrite%):| 00002740 e1 0d 10 7c 0b f2 64 6f 6c 6f 61 64 0d 10 86 05 |...|..doload....| 00002750 e1 0d 10 90 05 3a 0d 10 9a 0f dd 20 f2 64 61 74 |.....:..... .dat| 00002760 61 73 61 76 65 0d 10 a4 12 e7 20 71 25 21 34 3d |asave..... q%!4=| 00002770 74 61 73 6b 25 3a e1 0d 10 ae 3a e7 20 71 25 21 |task%:....:. q%!| 00002780 34 30 3c 3e 26 46 46 46 20 80 20 71 25 21 34 30 |40<>&FFF . q%!40| 00002790 3c 3e 26 44 33 43 20 80 20 71 25 21 34 30 3c 3e |<>&D3C . q%!40<>| 000027a0 26 43 42 35 20 80 20 71 25 21 34 30 3c 3e 36 3a |&CB5 . q%!40<>6:| 000027b0 e1 0d 10 b8 14 74 65 78 74 25 3d 71 25 21 34 30 |.....text%=q%!40| 000027c0 3d 26 46 46 46 0d 10 c2 20 6c 69 6e 73 69 67 6e |=&FFF... linsign| 000027d0 64 25 3d 74 65 78 74 25 20 84 20 71 25 21 34 30 |d%=text% . q%!40| 000027e0 3d 26 44 33 43 0d 10 cc 34 c8 99 20 22 58 4f 53 |=&D3C...4.. "XOS| 000027f0 5f 52 65 61 64 56 61 72 56 61 6c 22 2c 22 57 69 |_ReadVarVal","Wi| 00002800 6d 70 24 53 63 72 61 70 22 2c 6e 61 6d 65 25 2c |mp$Scrap",name%,| 00002810 30 20 b8 20 61 25 3b 66 25 0d 10 d6 54 e7 20 66 |0 . a%;f%...T. f| 00002820 25 20 80 20 31 20 80 20 21 61 25 3d 26 31 32 34 |% . 1 . !a%=&124| 00002830 3a f2 74 65 6c 6c 74 68 65 6d 6f 66 66 28 22 43 |:.tellthemoff("C| 00002840 6f 75 6c 64 20 6e 6f 74 20 74 72 61 6e 73 66 65 |ould not transfe| 00002850 72 20 66 69 6c 65 3a 20 6e 6f 20 73 63 72 61 70 |r file: no scrap| 00002860 20 66 69 6c 65 20 73 65 74 22 29 3a e1 0d 10 e0 | file set"):....| 00002870 1f 24 28 71 25 2b 34 34 29 3d 22 3c 57 69 6d 70 |.$(q%+44)="<Wimp| 00002880 24 53 63 72 61 70 3e 22 2b bd 20 30 0d 10 ea 26 |$Scrap>"+. 0...&| 00002890 71 25 21 31 36 3d 32 3a 71 25 21 31 32 3d 71 25 |q%!16=2:q%!12=q%| 000028a0 21 38 3a 21 71 25 3d 36 30 3a 71 25 21 33 36 3d |!8:!q%=60:q%!36=| 000028b0 2d 31 0d 10 f4 24 c8 99 20 22 57 69 6d 70 5f 53 |-1...$.. "Wimp_S| 000028c0 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 37 2c 71 |endMessage",17,q| 000028d0 25 2c 71 25 21 34 0d 10 fe 05 e1 0d 11 08 05 3a |%,q%!4.........:| 000028e0 0d 11 12 0f dd 20 f2 64 61 74 61 6c 6f 61 64 0d |..... .dataload.| 000028f0 11 1c 3a e7 20 71 25 21 34 30 3c 3e 26 46 46 46 |..:. q%!40<>&FFF| 00002900 20 80 20 71 25 21 34 30 3c 3e 26 44 33 43 20 80 | . q%!40<>&D3C .| 00002910 20 71 25 21 34 30 3c 3e 26 43 42 35 20 80 20 71 | q%!40<>&CB5 . q| 00002920 25 21 34 30 3c 3e 36 3a e1 0d 11 26 16 71 25 21 |%!40<>6:...&.q%!| 00002930 31 36 3d 34 3a 71 25 21 31 32 3d 71 25 21 38 0d |16=4:q%!12=q%!8.| 00002940 11 30 23 74 79 70 65 25 3d 2d 71 25 21 34 30 3a |.0#type%=-q%!40:| 00002950 66 69 6c 65 24 3d a4 72 65 61 64 28 71 25 2b 34 |file$=.read(q%+4| 00002960 34 29 0d 11 3a 16 e3 20 6e 25 3d 30 20 b8 20 21 |4)..:.. n%=0 . !| 00002970 71 25 2d 31 20 88 20 34 0d 11 44 10 20 71 25 21 |q%-1 . 4..D. q%!| 00002980 31 32 30 30 3d 21 71 25 0d 11 4e 05 ed 0d 11 58 |1200=!q%..N....X| 00002990 24 c8 99 20 22 57 69 6d 70 5f 53 65 6e 64 4d 65 |$.. "Wimp_SendMe| 000029a0 73 73 61 67 65 22 2c 31 37 2c 71 25 2c 71 25 21 |ssage",17,q%,q%!| 000029b0 34 0d 11 62 24 e7 20 75 6e 73 61 76 65 64 25 3a |4..b$. unsaved%:| 000029c0 f2 63 65 6e 74 72 65 28 6f 76 65 72 77 72 69 74 |.centre(overwrit| 000029d0 65 25 29 3a e1 0d 11 6c 19 74 79 70 65 25 3d 94 |e%):...l.type%=.| 000029e0 20 74 79 70 65 25 3a f2 64 6f 6c 6f 61 64 0d 11 | type%:.doload..| 000029f0 76 05 e1 0d 11 80 05 3a 0d 11 8a 0d dd 20 f2 64 |v......:..... .d| 00002a00 6f 6c 6f 61 64 0d 11 94 1c c8 99 20 22 57 69 6d |oload...... "Wim| 00002a10 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c 2d |p_CreateMenu",,-| 00002a20 31 0d 11 9e 14 74 65 78 74 25 3d 74 79 70 65 25 |1....text%=type%| 00002a30 3d 26 46 46 46 0d 11 a8 20 6c 69 6e 73 69 67 6e |=&FFF... linsign| 00002a40 64 25 3d 74 65 78 74 25 20 84 20 74 79 70 65 25 |d%=text% . type%| 00002a50 3d 26 44 33 43 0d 11 b2 13 24 73 61 76 65 70 74 |=&D3C....$savept| 00002a60 72 25 3d 66 69 6c 65 24 0d 11 bc 2c c8 99 20 22 |r%=file$...,.. "| 00002a70 4f 53 5f 46 69 6c 65 22 2c 35 2c 73 61 76 65 70 |OS_File",5,savep| 00002a80 74 72 25 20 b8 20 61 25 2c 2c 2c 2c 66 69 6c 65 |tr% . a%,,,,file| 00002a90 6c 65 6e 25 0d 11 c6 0d e7 20 61 25 3c 3e 31 3a |len%..... a%<>1:| 00002aa0 e1 0d 11 d0 0e 75 6e 73 61 76 65 64 25 3d a3 0d |.....unsaved%=..| 00002ab0 11 da 0a c8 8e 20 b9 20 ca 0d 11 e4 36 c9 20 74 |..... . ....6. t| 00002ac0 65 78 74 25 3a 6c 6f 61 64 65 64 25 3d a4 70 72 |ext%:loaded%=.pr| 00002ad0 6f 63 65 73 73 5f 74 65 78 74 3a e7 20 6c 6f 61 |ocess_text:. loa| 00002ae0 64 65 64 25 3a 75 6e 73 61 76 65 64 25 3d b9 0d |ded%:unsaved%=..| 00002af0 11 ee 29 c9 20 6c 69 6e 73 69 67 6e 64 25 3a 6c |..). linsignd%:l| 00002b00 6f 61 64 65 64 25 3d a4 70 72 6f 63 65 73 73 5f |oaded%=.process_| 00002b10 6c 69 6e 73 69 67 6e 64 0d 11 f8 1f 7f 3a 6c 6f |linsignd.....:lo| 00002b20 61 64 65 64 25 3d a4 70 72 6f 63 65 73 73 5f 73 |aded%=.process_s| 00002b30 74 73 61 6d 70 6c 65 0d 12 02 05 cb 0d 12 0c 0f |tsample.........| 00002b40 e7 20 6c 6f 61 64 65 64 25 20 8c 0d 12 16 1b 20 |. loaded% ..... | 00002b50 6d 65 6e 75 25 3f 38 36 3d 30 3a 6d 65 6e 75 25 |menu%?86=0:menu%| 00002b60 3f 31 33 34 3d 30 0d 12 20 1f 20 6d 65 6e 75 31 |?134=0.. . menu1| 00002b70 25 3f 33 38 3d 36 34 20 80 20 ac 20 6c 69 6e 73 |%?38=64 . . lins| 00002b80 69 67 6e 64 25 0d 12 2a 0c 20 f2 65 6e 61 62 6c |ignd%..*. .enabl| 00002b90 65 0d 12 34 24 20 e7 20 6c 69 6e 73 69 67 6e 64 |e..4$ . linsignd| 00002ba0 25 20 8b 20 f2 69 63 6f 6e 28 65 64 69 74 25 2c |% . .icon(edit%,| 00002bb0 31 36 2c 30 29 0d 12 3e 23 20 f2 6f 70 65 6e 28 |16,0)..># .open(| 00002bc0 65 64 69 74 25 29 3a f2 66 72 6f 6e 74 28 6b 65 |edit%):.front(ke| 00002bd0 79 62 6f 61 72 64 25 29 0d 12 48 05 cc 0d 12 52 |yboard%)..H....R| 00002be0 1c 20 6d 65 6e 75 25 3f 38 36 3d 36 34 3a 6d 65 |. menu%?86=64:me| 00002bf0 6e 75 25 3f 31 33 34 3d 30 0d 12 5c 2c 20 21 71 |nu%?134=0..\, !q| 00002c00 25 3d 77 61 76 65 66 6f 72 6d 25 3a c8 99 20 22 |%=waveform%:.. "| 00002c10 57 69 6d 70 5f 43 6c 6f 73 65 57 69 6e 64 6f 77 |Wimp_CloseWindow| 00002c20 22 2c 2c 71 25 0d 12 66 18 20 f2 63 6c 61 69 6d |",,q%..f. .claim| 00002c30 28 2d 31 29 3a f2 64 69 73 61 62 6c 65 0d 12 70 |(-1):.disable..p| 00002c40 05 cd 0d 12 7a 35 e7 20 24 73 61 76 65 70 74 72 |....z5. $saveptr| 00002c50 25 3d 22 3c 57 69 6d 70 24 53 63 72 61 70 3e 22 |%="<Wimp$Scrap>"| 00002c60 3a 24 73 61 76 65 70 74 72 25 3d 22 53 61 6d 70 |:$saveptr%="Samp| 00002c70 6c 65 46 69 6c 65 22 0d 12 84 30 c8 99 20 22 57 |leFile"...0.. "W| 00002c80 69 6d 70 5f 46 6f 72 63 65 52 65 64 72 61 77 22 |imp_ForceRedraw"| 00002c90 2c 77 61 76 65 66 6f 72 6d 25 2c 30 2c 2d 35 31 |,waveform%,0,-51| 00002ca0 32 2c 31 45 36 2c 30 0d 12 8e 05 e1 0d 12 98 05 |2,1E6,0.........| 00002cb0 3a 0d 12 a2 12 dd 20 f2 64 61 74 61 73 61 76 65 |:..... .datasave| 00002cc0 61 63 6b 0d 12 ac 14 e7 20 71 25 21 34 3d 74 61 |ack..... q%!4=ta| 00002cd0 73 6b 25 20 8c 20 e1 0d 12 b6 1d 61 24 3d a4 72 |sk% . .....a$=.r| 00002ce0 65 61 64 28 71 25 2b 34 34 29 3a 24 6e 61 6d 65 |ead(q%+44):$name| 00002cf0 25 3d 61 24 0d 12 c0 25 e7 20 61 24 3c 3e 22 3c |%=a$...%. a$<>"<| 00002d00 57 69 6d 70 24 53 63 72 61 70 3e 22 3a 24 73 61 |Wimp$Scrap>":$sa| 00002d10 76 65 70 74 72 25 3d 61 24 0d 12 ca 0b f2 64 6f |veptr%=a$.....do| 00002d20 73 61 76 65 0d 12 d4 16 71 25 21 31 36 3d 33 3a |save....q%!16=3:| 00002d30 71 25 21 31 32 3d 71 25 21 38 0d 12 de 24 c8 99 |q%!12=q%!8...$..| 00002d40 20 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 | "Wimp_SendMessa| 00002d50 67 65 22 2c 31 38 2c 71 25 2c 71 25 21 34 0d 12 |ge",18,q%,q%!4..| 00002d60 e8 05 e1 0d 12 f2 05 3a 0d 12 fc 0d dd 20 f2 64 |.......:..... .d| 00002d70 6f 73 61 76 65 0d 13 06 0a ea 20 6f 75 74 25 0d |osave..... out%.| 00002d80 13 10 07 ea 20 85 0d 13 1a 29 ee 20 85 20 ea 20 |.... ....). . . | 00002d90 f7 20 85 3a f2 74 65 6c 6c 74 68 65 6d 6f 66 66 |. .:.tellthemoff| 00002da0 28 f6 24 29 3a f2 63 6c 6f 73 65 69 74 3a e1 0d |(.$):.closeit:..| 00002db0 13 24 13 c8 8e 20 24 73 61 76 65 69 63 6f 6e 25 |.$... $saveicon%| 00002dc0 20 ca 0d 13 2e 3f c9 20 22 44 33 43 22 3a c8 99 | ....?. "D3C":..| 00002dd0 20 22 4f 53 5f 46 69 6c 65 22 2c 31 30 2c 6e 61 | "OS_File",10,na| 00002de0 6d 65 25 2c 26 44 33 43 2c 2c 77 6f 72 6b 73 70 |me%,&D3C,,worksp| 00002df0 25 2c 77 6f 72 6b 73 70 25 2b 6c 65 6e 67 74 68 |%,worksp%+length| 00002e00 25 0d 13 38 1a c9 20 22 43 42 35 22 3a f2 73 61 |%..8.. "CB5":.sa| 00002e10 76 65 5f 73 74 73 61 6d 70 6c 65 0d 13 42 18 c9 |ve_stsample..B..| 00002e20 20 22 46 46 41 22 3a f2 73 61 76 65 5f 6d 6f 64 | "FFA":.save_mod| 00002e30 75 6c 65 0d 13 4c 05 cb 0d 13 56 07 f7 20 85 0d |ule..L....V.. ..| 00002e40 13 60 24 c8 99 20 22 57 69 6d 70 5f 47 65 74 50 |.`$.. "Wimp_GetP| 00002e50 6f 69 6e 74 65 72 49 6e 66 6f 22 2c 2c 71 25 2b |ointerInfo",,q%+| 00002e60 33 30 30 0d 13 6a 2b e7 20 71 25 21 33 30 38 20 |300..j+. q%!308 | 00002e70 80 20 31 20 8b 20 c8 99 20 22 57 69 6d 70 5f 43 |. 1 . .. "Wimp_C| 00002e80 72 65 61 74 65 4d 65 6e 75 22 2c 2c 2d 31 0d 13 |reateMenu",,-1..| 00002e90 74 0e 75 6e 73 61 76 65 64 25 3d a3 0d 13 7e 05 |t.unsaved%=...~.| 00002ea0 e1 0d 13 88 05 3a 0d 13 92 0e dd 20 f2 63 6c 6f |.....:..... .clo| 00002eb0 73 65 69 74 0d 13 9c 07 ea 20 85 0d 13 a6 20 ee |seit..... .... .| 00002ec0 20 85 20 ea 20 f7 20 85 3a f2 74 65 6c 6c 74 68 | . . . .:.tellth| 00002ed0 65 6d 6f 66 66 28 f6 24 29 3a e1 0d 13 b0 12 e7 |emoff(.$):......| 00002ee0 20 6f 75 74 25 3a d9 20 23 6f 75 74 25 0d 13 ba | out%:. #out%...| 00002ef0 07 f7 20 85 0d 13 c4 05 e1 0d 13 ce 05 3a 0d 13 |.. ..........:..| 00002f00 d8 0a dd 20 f2 6b 65 79 0d 13 e2 08 66 25 3d a3 |... .key....f%=.| 00002f10 0d 13 ec 0c c8 8e 20 21 71 25 20 ca 0d 13 f6 0b |...... !q% .....| 00002f20 c9 20 73 61 76 65 25 0d 14 00 11 20 e7 20 71 25 |. save%.... . q%| 00002f30 21 32 34 3d 31 33 20 8c 0d 14 0a 0a 20 20 66 25 |!24=13 ..... f%| 00002f40 3d b9 0d 14 14 19 20 20 e7 20 a7 24 73 61 76 65 |=..... . .$save| 00002f50 70 74 72 25 2c 22 2e 22 29 20 8c 0d 14 1e 1f 20 |ptr%,".") ..... | 00002f60 20 20 24 6e 61 6d 65 25 3d 24 73 61 76 65 70 74 | $name%=$savept| 00002f70 72 25 3a f2 64 6f 73 61 76 65 0d 14 28 07 20 20 |r%:.dosave..(. | 00002f80 cc 0d 14 32 49 20 20 20 f2 74 65 6c 6c 74 68 65 |...2I .tellthe| 00002f90 6d 6f 66 66 28 22 54 6f 20 73 61 76 65 2c 20 64 |moff("To save, d| 00002fa0 72 61 67 20 74 68 65 20 66 69 6c 65 20 69 63 6f |rag the file ico| 00002fb0 6e 20 74 6f 20 61 20 64 69 72 65 63 74 6f 72 79 |n to a directory| 00002fc0 20 76 69 65 77 65 72 2e 22 29 0d 14 3c 07 20 20 | viewer.")..<. | 00002fd0 cd 0d 14 46 06 20 cd 0d 14 50 0b c9 20 65 64 69 |...F. ...P.. edi| 00002fe0 74 25 0d 14 5a 0b 20 c8 8e 20 b9 20 ca 0d 14 64 |t%..Z. .. . ...d| 00002ff0 35 20 c9 20 71 25 21 34 3e 30 20 80 20 71 25 21 |5 . q%!4>0 . q%!| 00003000 32 34 3e 34 37 20 80 20 71 25 21 32 34 3c 35 38 |24>47 . q%!24<58| 00003010 3a 61 73 6d 25 3d a3 3a 75 6e 73 61 76 65 64 25 |:asm%=.:unsaved%| 00003020 3d b9 0d 14 6e 36 20 c9 20 71 25 21 34 3d 30 20 |=...n6 . q%!4=0 | 00003030 80 20 71 25 21 32 34 3e 33 31 20 80 20 71 25 21 |. q%!24>31 . q%!| 00003040 32 34 3c 32 35 36 3a 61 73 6d 25 3d a3 3a 75 6e |24<256:asm%=.:un| 00003050 73 61 76 65 64 25 3d b9 0d 14 78 06 20 cb 0d 14 |saved%=...x. ...| 00003060 82 11 20 e7 20 71 25 21 32 34 3d 31 33 20 8c 0d |.. . q%!24=13 ..| 00003070 14 8c 0f 20 20 c8 8e 20 71 25 21 34 20 ca 0d 14 |... .. q%!4 ...| 00003080 96 2b 20 20 c9 20 32 3a e7 20 24 73 76 6f 6c 70 |.+ . 2:. $svolp| 00003090 74 72 25 3d 22 22 3a 24 73 76 6f 6c 70 74 72 25 |tr%="":$svolptr%| 000030a0 3d 22 30 22 3a 66 25 3d 32 0d 14 a0 37 20 20 20 |="0":f%=2...7 | 000030b0 61 25 3d a4 65 76 61 6c 28 73 76 6f 6c 70 74 72 |a%=.eval(svolptr| 000030c0 25 29 3a e7 20 61 25 3e 32 35 35 3a 24 73 76 6f |%):. a%>255:$svo| 000030d0 6c 70 74 72 25 3d 22 32 35 35 22 3a 66 25 3d 32 |lptr%="255":f%=2| 000030e0 0d 14 aa 12 20 20 c9 20 33 3a f2 6c 69 6e 65 28 |.... . 3:.line(| 000030f0 a3 29 0d 14 b4 28 20 20 20 e7 20 24 72 6f 66 73 |.)...( . $rofs| 00003100 70 74 72 25 3d 22 22 3a 24 72 6f 66 73 70 74 72 |ptr%="":$rofsptr| 00003110 25 3d 22 30 22 3a 66 25 3d 33 0d 14 be 3a 20 20 |%="0":f%=3...: | 00003120 20 72 6f 66 73 3d a4 65 76 61 6c 28 72 6f 66 73 | rofs=.eval(rofs| 00003130 70 74 72 25 29 3a 62 25 3d a4 65 76 61 6c 28 72 |ptr%):b%=.eval(r| 00003140 6c 65 6e 70 74 72 25 29 3a e7 20 62 25 3d 30 3a |lenptr%):. b%=0:| 00003150 62 25 3d 31 0d 14 c8 3e 20 20 20 e7 20 72 6f 66 |b%=1...> . rof| 00003160 73 3e 6c 65 6e 67 74 68 25 2d 62 25 3a 72 6f 66 |s>length%-b%:rof| 00003170 73 3d 6c 65 6e 67 74 68 25 2d 62 25 3a 24 72 6f |s=length%-b%:$ro| 00003180 66 73 70 74 72 25 3d c3 20 72 6f 66 73 3a 66 25 |fsptr%=. rofs:f%| 00003190 3d 33 0d 14 d2 0f 20 20 20 f2 6c 69 6e 65 28 a3 |=3.... .line(.| 000031a0 29 0d 14 dc 12 20 20 c9 20 34 3a f2 6c 69 6e 65 |).... . 4:.line| 000031b0 28 b9 29 0d 14 e6 2e 20 20 20 72 6c 65 6e 3d a4 |(.).... rlen=.| 000031c0 65 76 61 6c 28 72 6c 65 6e 70 74 72 25 29 3a 62 |eval(rlenptr%):b| 000031d0 25 3d a4 65 76 61 6c 28 72 6f 66 73 70 74 72 25 |%=.eval(rofsptr%| 000031e0 29 0d 14 f0 29 20 20 20 e7 20 72 6c 65 6e 3c 32 |)...) . rlen<2| 000031f0 3a 72 6c 65 6e 3d 32 3a 24 72 6c 65 6e 70 74 72 |:rlen=2:$rlenptr| 00003200 25 3d 22 32 22 3a 66 25 3d 34 0d 14 fa 3e 20 20 |%="2":f%=4...> | 00003210 20 e7 20 72 6c 65 6e 3e 6c 65 6e 67 74 68 25 2d | . rlen>length%-| 00003220 62 25 3a 72 6c 65 6e 3d 6c 65 6e 67 74 68 25 2d |b%:rlen=length%-| 00003230 62 25 3a 24 72 6c 65 6e 70 74 72 25 3d c3 20 72 |b%:$rlenptr%=. r| 00003240 6c 65 6e 3a 66 25 3d 34 0d 15 04 3a 20 20 20 c8 |len:f%=4...: .| 00003250 99 20 22 57 69 6d 70 5f 53 65 74 43 61 72 65 74 |. "Wimp_SetCaret| 00003260 50 6f 73 69 74 69 6f 6e 22 2c 65 64 69 74 25 2c |Position",edit%,| 00003270 30 2c 2c 2c 2d 31 2c a9 20 24 6e 61 6d 65 70 74 |0,,,-1,. $namept| 00003280 72 25 0d 15 0e 0f 20 20 20 f2 6c 69 6e 65 28 b9 |r%.... .line(.| 00003290 29 0d 15 18 07 20 20 cb 0d 15 22 21 20 20 e7 20 |).... ..."! . | 000032a0 66 25 3a f2 69 63 6f 6e 28 65 64 69 74 25 2c 66 |f%:.icon(edit%,f| 000032b0 25 2c 31 29 3a 66 25 3d a3 0d 15 2c 06 20 cd 0d |%,1):f%=...,. ..| 000032c0 15 36 05 cb 0d 15 40 25 e7 20 66 25 20 8b 20 c8 |.6....@%. f% . .| 000032d0 99 20 22 57 69 6d 70 5f 50 72 6f 63 65 73 73 4b |. "Wimp_ProcessK| 000032e0 65 79 22 2c 71 25 21 32 34 0d 15 4a 05 e1 0d 15 |ey",q%!24..J....| 000032f0 54 05 3a 0d 15 5e 16 dd 20 f2 74 65 6c 6c 74 68 |T.:..^.. .tellth| 00003300 65 6d 6f 66 66 28 74 24 29 0d 15 68 24 e7 20 64 |emoff(t$)..h$. d| 00003310 72 61 67 25 3d 2d 31 3a c8 99 20 22 57 69 6d 70 |rag%=-1:.. "Wimp| 00003320 5f 44 72 61 67 42 6f 78 22 2c 2c 2d 31 0d 15 72 |_DragBox",,-1..r| 00003330 23 e7 20 64 72 61 67 25 3d 31 3a c8 99 20 22 44 |#. drag%=1:.. "D| 00003340 72 61 67 41 53 70 72 69 74 65 5f 53 74 6f 70 22 |ragASprite_Stop"| 00003350 0d 15 7c 0b 64 72 61 67 25 3d 30 0d 15 86 1c 21 |..|.drag%=0....!| 00003360 65 72 72 25 3d 30 3a 24 28 65 72 72 25 2b 34 29 |err%=0:$(err%+4)| 00003370 3d 74 24 2b bd 20 30 0d 15 90 0d f2 70 72 65 76 |=t$+. 0.....prev| 00003380 69 6f 75 73 0d 15 9a 2c c8 99 20 22 57 69 6d 70 |ious...,.. "Wimp| 00003390 5f 52 65 70 6f 72 74 45 72 72 6f 72 22 2c 65 72 |_ReportError",er| 000033a0 72 25 2c 31 2c 22 4d 61 6b 65 57 61 76 65 73 22 |r%,1,"MakeWaves"| 000033b0 0d 15 a4 05 e1 0d 15 ae 05 3a 0d 15 b8 10 dd 20 |.........:..... | 000033c0 a4 71 75 65 72 79 28 74 24 29 0d 15 c2 1c 21 65 |.query(t$)....!e| 000033d0 72 72 25 3d 30 3a 24 28 65 72 72 25 2b 34 29 3d |rr%=0:$(err%+4)=| 000033e0 74 24 2b bd 20 30 0d 15 cc 0d f2 70 72 65 76 69 |t$+. 0.....previ| 000033f0 6f 75 73 0d 15 d6 32 c8 99 20 22 57 69 6d 70 5f |ous...2.. "Wimp_| 00003400 52 65 70 6f 72 74 45 72 72 6f 72 22 2c 65 72 72 |ReportError",err| 00003410 25 2c 33 2c 22 4d 61 6b 65 57 61 76 65 73 22 20 |%,3,"MakeWaves" | 00003420 b8 20 2c 72 25 0d 15 e0 09 3d 72 25 3d 31 0d 15 |. ,r%....=r%=1..| 00003430 ea 05 3a 0d 15 f4 0f dd 20 f2 70 72 65 76 69 6f |..:..... .previo| 00003440 75 73 0d 15 fe 15 e7 20 70 72 65 76 25 20 8b 20 |us..... prev% . | 00003450 70 72 65 76 25 3d 31 0d 16 08 22 c8 99 20 22 53 |prev%=1...".. "S| 00003460 6f 75 6e 64 5f 41 74 74 61 63 68 56 6f 69 63 65 |ound_AttachVoice| 00003470 22 2c 31 2c 70 72 65 76 25 0d 16 12 0b 70 72 65 |",1,prev%....pre| 00003480 76 25 3d a3 0d 16 1c 05 e1 0d 16 26 05 3a 0d 16 |v%=........&.:..| 00003490 30 0e dd 20 f2 64 69 73 61 62 6c 65 0d 16 3a 0f |0.. .disable..:.| 000034a0 e3 20 6e 25 3d 30 20 b8 20 31 30 0d 16 44 16 20 |. n%=0 . 10..D. | 000034b0 f2 69 63 6f 6e 28 65 64 69 74 25 2c 6e 25 2c 30 |.icon(edit%,n%,0| 000034c0 29 0d 16 4e 05 ed 0d 16 58 10 e3 20 6e 25 3d 31 |)..N....X.. n%=1| 000034d0 36 20 b8 20 31 38 0d 16 62 16 20 f2 69 63 6f 6e |6 . 18..b. .icon| 000034e0 28 65 64 69 74 25 2c 6e 25 2c 30 29 0d 16 6c 05 |(edit%,n%,0)..l.| 000034f0 ed 0d 16 76 05 e1 0d 16 80 05 3a 0d 16 8a 0d dd |...v......:.....| 00003500 20 f2 65 6e 61 62 6c 65 0d 16 94 0f e3 20 6e 25 | .enable..... n%| 00003510 3d 30 20 b8 20 31 30 0d 16 9e 16 20 f2 69 63 6f |=0 . 10.... .ico| 00003520 6e 28 65 64 69 74 25 2c 6e 25 2c 31 29 0d 16 a8 |n(edit%,n%,1)...| 00003530 05 ed 0d 16 b2 10 e3 20 6e 25 3d 31 36 20 b8 20 |....... n%=16 . | 00003540 31 38 0d 16 bc 16 20 f2 69 63 6f 6e 28 65 64 69 |18.... .icon(edi| 00003550 74 25 2c 6e 25 2c 31 29 0d 16 c6 05 ed 0d 16 d0 |t%,n%,1)........| 00003560 05 e1 0d 16 da 05 3a 0d 16 e4 0f dd 20 a4 72 65 |......:..... .re| 00003570 61 64 28 71 25 29 0d 16 ee 08 ea 20 61 24 0d 16 |ad(q%)..... a$..| 00003580 f8 0d c8 95 20 3f 71 25 3e 33 31 0d 17 02 14 20 |.... ?q%>31.... | 00003590 61 24 2b 3d bd 20 3f 71 25 3a 71 25 2b 3d 31 0d |a$+=. ?q%:q%+=1.| 000035a0 17 0c 05 ce 0d 17 16 07 3d 61 24 0d 17 20 05 3a |........=a$.. .:| 000035b0 0d 17 2a 0f dd 20 a4 65 76 61 6c 28 71 25 29 0d |..*.. .eval(q%).| 000035c0 17 34 10 3d a0 20 28 22 30 22 2b 24 71 25 29 0d |.4.=. ("0"+$q%).| 000035d0 17 3e 05 3a 0d 17 48 1a dd 20 a4 65 76 61 6c 6c |.>.:..H.. .evall| 000035e0 69 6d 28 71 25 2c 6d 61 78 25 2c 61 24 29 0d 17 |im(q%,max%,a$)..| 000035f0 52 08 ea 20 61 25 0d 17 5c 12 61 25 3d a0 20 28 |R.. a%..\.a%=. (| 00003600 22 30 22 2b 24 71 25 29 0d 17 66 37 e7 20 61 25 |"0"+$q%)..f7. a%| 00003610 3e 6d 61 78 25 3a f2 74 65 6c 6c 74 68 65 6d 6f |>max%:.tellthemo| 00003620 66 66 28 22 54 68 65 20 22 2b 61 24 2b 22 20 69 |ff("The "+a$+" i| 00003630 73 20 74 6f 6f 20 62 69 67 22 29 3a 3d 2d 31 0d |s too big"):=-1.| 00003640 17 70 07 3d 61 25 0d 17 7a 05 3a 0d 17 84 18 dd |.p.=a%..z.:.....| 00003650 20 f2 69 63 6f 6e 28 21 71 25 2c 71 25 21 34 2c | .icon(!q%,q%!4,| 00003660 6e 25 29 0d 17 8e 28 ea 20 71 25 21 38 2c 71 25 |n%)...(. q%!8,q%| 00003670 21 31 32 2c 71 25 21 31 36 2c 71 25 21 32 30 2c |!12,q%!16,q%!20,| 00003680 71 25 21 32 34 2c 71 25 21 32 38 0d 17 98 21 71 |q%!24,q%!28...!q| 00003690 25 21 38 3d 6e 25 3d 30 20 80 20 31 3c 3c 32 32 |%!8=n%=0 . 1<<22| 000036a0 3a 71 25 21 31 32 3d 31 3c 3c 32 32 0d 17 a2 1e |:q%!12=1<<22....| 000036b0 c8 99 20 22 57 69 6d 70 5f 53 65 74 49 63 6f 6e |.. "Wimp_SetIcon| 000036c0 53 74 61 74 65 22 2c 2c 71 25 0d 17 ac 24 c8 99 |State",,q%...$..| 000036d0 20 22 57 69 6d 70 5f 47 65 74 43 61 72 65 74 50 | "Wimp_GetCaretP| 000036e0 6f 73 69 74 69 6f 6e 22 2c 2c 71 25 2b 38 0d 17 |osition",,q%+8..| 000036f0 b6 39 e7 20 21 71 25 3d 71 25 21 38 20 80 20 71 |.9. !q%=q%!8 . q| 00003700 25 21 34 3d 71 25 21 31 32 3a c8 99 20 22 57 69 |%!4=q%!12:.. "Wi| 00003710 6d 70 5f 53 65 74 43 61 72 65 74 50 6f 73 69 74 |mp_SetCaretPosit| 00003720 69 6f 6e 22 2c 2d 31 0d 17 c0 05 e1 0d 17 ca 05 |ion",-1.........| 00003730 3a 0d 17 d4 0f dd 20 a4 6c 65 61 66 28 61 24 29 |:..... .leaf(a$)| 00003740 0d 17 de 11 c8 95 20 a7 61 24 2c 22 3a 22 29 3e |...... .a$,":")>| 00003750 31 0d 17 e8 17 20 61 24 3d c1 61 24 2c a7 61 24 |1.... a$=.a$,.a$| 00003760 2c 22 3a 22 29 2b 31 29 0d 17 f2 05 ce 0d 17 fc |,":")+1)........| 00003770 11 c8 95 20 a7 61 24 2c 22 2e 22 29 3e 31 0d 18 |... .a$,".")>1..| 00003780 06 17 20 61 24 3d c1 61 24 2c a7 61 24 2c 22 2e |.. a$=.a$,.a$,".| 00003790 22 29 2b 31 29 0d 18 10 05 ce 0d 18 1a 07 3d 61 |")+1).........=a| 000037a0 24 0d 18 24 05 3a 0d 18 2e 13 dd 20 a4 70 72 6f |$..$.:..... .pro| 000037b0 63 65 73 73 5f 74 65 78 74 0d 18 38 15 c8 99 20 |cess_text..8... | 000037c0 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 18 |"Hourglass_On"..| 000037d0 42 07 ea 20 85 0d 18 4c 5c ee 20 85 20 ea 20 f7 |B.. ...L\. . . .| 000037e0 20 85 3a f2 63 6c 6f 73 65 69 6e 3a e7 20 9f 3d | .:.closein:. .=| 000037f0 32 3a f2 74 65 6c 6c 74 68 65 6d 6f 66 66 28 f6 |2:.tellthemoff(.| 00003800 24 29 3a 3d a3 3a 8b 20 f2 74 65 6c 6c 74 68 65 |$):=.:. .tellthe| 00003810 6d 6f 66 66 28 f6 24 2b 22 20 28 6c 69 6e 65 20 |moff(.$+" (line | 00003820 22 2b c3 20 6c 69 6e 65 25 2b 22 29 22 29 3a 3d |"+. line%+")"):=| 00003830 a3 0d 18 56 0f 6c 69 6e 65 25 3d 30 3a 61 3d 30 |...V.line%=0:a=0| 00003840 0d 18 60 12 62 65 6e 64 3d 30 3a 76 6f 6c 3d 31 |..`.bend=0:vol=1| 00003850 32 37 0d 18 6a 13 76 62 65 6e 64 3d 30 3a 6e 6f |27..j.vbend=0:no| 00003860 69 73 65 3d 30 0d 18 74 13 69 6e 25 3d 8e 20 24 |ise=0..t.in%=. $| 00003870 73 61 76 65 70 74 72 25 0d 18 7e 12 65 78 74 3d |saveptr%..~.ext=| 00003880 a2 20 23 69 6e 25 2f 31 30 30 0d 18 88 47 e7 20 |. #in%/100...G. | 00003890 65 78 74 3d 30 3a f7 20 85 3a f2 63 6c 6f 73 65 |ext=0:. .:.close| 000038a0 69 74 3a f2 74 65 6c 6c 74 68 65 6d 6f 66 66 28 |it:.tellthemoff(| 000038b0 22 4e 6f 20 64 65 73 63 72 69 70 74 69 6f 6e 20 |"No description | 000038c0 66 6f 72 20 77 61 76 65 66 6f 72 6d 22 29 3a 3d |for waveform"):=| 000038d0 a3 0d 18 92 11 e3 20 70 61 73 73 25 3d 30 20 b8 |...... pass%=0 .| 000038e0 20 31 0d 18 9c 1e 20 50 25 3d 77 6f 72 6b 73 70 | 1.... P%=worksp| 000038f0 25 2a 70 61 73 73 25 3a cf 20 23 69 6e 25 3d 30 |%*pass%:. #in%=0| 00003900 0d 18 a6 12 20 70 24 3d a4 6c 69 6e 65 28 69 6e |.... p$=.line(in| 00003910 25 29 0d 18 b0 0d 20 c8 95 20 70 24 3e 22 22 0d |%).... .. p$>"".| 00003920 18 ba 0f 20 20 f2 65 76 61 6c 28 70 24 29 0d 18 |... .eval(p$)..| 00003930 c4 0f 20 20 e7 20 70 61 73 73 25 20 8c 0d 18 ce |.. . pass% ....| 00003940 1e 20 20 20 6e 3d 6e 6f 69 73 65 3a 70 3d 32 5e |. n=noise:p=2^| 00003950 28 6e 6f 74 65 2f 31 32 2b 33 29 0d 18 d8 19 20 |(note/12+3).... | 00003960 20 20 e7 20 6e 6f 74 65 3d 39 39 39 3a 70 3d 30 | . note=999:p=0| 00003970 3a 6e 3d 30 0d 18 e2 20 20 20 20 62 3d 32 5e 28 |:n=0... b=2^(| 00003980 62 65 6e 64 2f 31 32 29 5e 28 31 2f 32 35 36 2f |bend/12)^(1/256/| 00003990 6c 65 6e 29 0d 18 ec 1c 20 20 20 76 3d 76 6f 6c |len).... v=vol| 000039a0 3a 77 3d 76 62 65 6e 64 2f 32 35 36 2f 6c 65 6e |:w=vbend/256/len| 000039b0 0d 18 f6 0c 20 20 20 e7 20 6e 20 8c 0d 19 00 0c |.... . n .....| 000039c0 20 20 20 20 6e 2b 3d 31 0d 19 0a 1a 20 20 20 20 | n+=1.... | 000039d0 e3 20 70 25 3d 30 20 b8 20 6c 65 6e 2a 32 35 36 |. p%=0 . len*256| 000039e0 2d 31 0d 19 14 45 20 20 20 20 20 50 25 3f 70 25 |-1...E P%?p%| 000039f0 3d 76 2a b5 20 28 28 61 2b b3 28 6e 29 2d 31 29 |=v*. ((a+.(n)-1)| 00003a00 2a af 2f 31 32 38 29 3a 61 2b 3d 70 3a 70 3d 70 |*./128):a+=p:p=p| 00003a10 2a 62 3a 76 2b 3d 77 3a e7 20 61 3e 3d 32 35 34 |*b:v+=w:. a>=254| 00003a20 3a 61 2d 3d 32 35 34 0d 19 1e 09 20 20 20 20 ed |:a-=254.... .| 00003a30 0d 19 28 08 20 20 20 cc 0d 19 32 1a 20 20 20 20 |..(. ...2. | 00003a40 e3 20 70 25 3d 30 20 b8 20 6c 65 6e 2a 32 35 36 |. p%=0 . len*256| 00003a50 2d 31 0d 19 3c 3c 20 20 20 20 20 50 25 3f 70 25 |-1..<< P%?p%| 00003a60 3d 76 2a b5 20 28 61 2a af 2f 31 32 38 29 3a 61 |=v*. (a*./128):a| 00003a70 2b 3d 70 3a 70 3d 70 2a 62 3a 76 2b 3d 77 3a e7 |+=p:p=p*b:v+=w:.| 00003a80 20 61 3e 3d 32 35 34 3a 61 2d 3d 32 35 34 0d 19 | a>=254:a-=254..| 00003a90 46 09 20 20 20 20 ed 0d 19 50 08 20 20 20 cd 0d |F. ...P. ..| 00003aa0 19 5a 07 20 20 cc 0d 19 64 11 20 20 20 70 25 3d |.Z. ...d. p%=| 00003ab0 6c 65 6e 2a 32 35 36 0d 19 6e 07 20 20 cd 0d 19 |len*256..n. ...| 00003ac0 78 32 20 20 e7 20 70 61 73 73 25 3a c8 99 20 22 |x2 . pass%:.. "| 00003ad0 48 6f 75 72 67 6c 61 73 73 5f 50 65 72 63 65 6e |Hourglass_Percen| 00003ae0 74 61 67 65 22 2c 8f 20 23 69 6e 25 2f 65 78 74 |tage",. #in%/ext| 00003af0 0d 19 82 1a 20 20 50 25 2b 3d 70 25 3a 70 24 3d |.... P%+=p%:p$=| 00003b00 a4 6c 69 6e 65 28 69 6e 25 29 0d 19 8c 06 20 ce |.line(in%).... .| 00003b10 0d 19 96 40 20 e7 20 70 61 73 73 25 20 8b 20 6c |...@ . pass% . l| 00003b20 65 6e 67 74 68 25 3d 50 25 3a f2 63 6c 61 69 6d |ength%=P%:.claim| 00003b30 28 50 25 2a 32 29 3a c8 99 20 22 48 6f 75 72 67 |(P%*2):.. "Hourg| 00003b40 6c 61 73 73 5f 50 65 72 63 65 6e 74 61 67 65 22 |lass_Percentage"| 00003b50 0d 19 a0 05 ed 0d 19 aa 07 f7 20 85 0d 19 b4 0c |.......... .....| 00003b60 f2 63 6c 6f 73 65 69 6e 0d 19 be 15 f2 70 72 6f |.closein.....pro| 00003b70 63 65 73 73 5f 6c 69 6e 73 69 67 6e 64 0d 19 c8 |cess_linsignd...| 00003b80 0d f2 61 73 73 65 6d 62 6c 65 0d 19 d2 16 c8 99 |..assemble......| 00003b90 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 | "Hourglass_Off"| 00003ba0 0d 19 dc 06 3d b9 0d 19 e6 05 3a 0d 19 f0 0f dd |....=.....:.....| 00003bb0 20 f2 65 76 61 6c 28 70 24 29 0d 19 fa 08 ea 20 | .eval(p$)..... | 00003bc0 71 24 0d 1a 04 0f c8 95 20 c2 70 24 29 3d 22 20 |q$...... .p$)=" | 00003bd0 22 0d 1a 0e 0c 20 70 24 3d c0 70 24 29 0d 1a 18 |".... p$=.p$)...| 00003be0 05 ce 0d 1a 22 13 70 24 3d a4 73 70 63 28 70 24 |....".p$=.spc(p$| 00003bf0 2b 22 20 22 29 0d 1a 2c 12 6e 6f 74 65 3d 39 39 |+" ")..,.note=99| 00003c00 39 3a 6c 65 6e 3d 30 0d 1a 36 12 62 65 6e 64 3d |9:len=0..6.bend=| 00003c10 30 3a 76 62 65 6e 64 3d 30 0d 1a 40 0c c8 95 20 |0:vbend=0..@... | 00003c20 70 24 3e 22 22 0d 1a 4a 1e 20 71 24 3d c0 70 24 |p$>""..J. q$=.p$| 00003c30 2c 31 29 3a 70 24 3d a4 73 70 63 28 c1 70 24 2c |,1):p$=.spc(.p$,| 00003c40 32 29 29 0d 1a 54 0c 20 c8 8e 20 71 24 20 ca 0d |2))..T. .. q$ ..| 00003c50 1a 5e 18 20 c9 20 22 62 22 2c 22 42 22 3a 62 65 |.^. . "b","B":be| 00003c60 6e 64 3d bb 20 70 24 0d 1a 68 17 20 c9 20 22 6c |nd=. p$..h. . "l| 00003c70 22 2c 22 4c 22 3a 6c 65 6e 3d bb 20 70 24 0d 1a |","L":len=. p$..| 00003c80 72 2a 20 c9 20 22 6e 22 2c 22 4e 22 3a 6e 6f 74 |r* . "n","N":not| 00003c90 65 3d a4 6e 6f 74 65 28 c0 70 24 2c a7 70 24 2c |e=.note(.p$,.p$,| 00003ca0 22 20 22 29 2d 31 29 29 0d 1a 7c 18 20 c9 20 22 |" ")-1))..|. . "| 00003cb0 70 22 2c 22 50 22 3a 6e 6f 74 65 3d bb 20 70 24 |p","P":note=. p$| 00003cc0 0d 1a 86 17 20 c9 20 22 76 22 2c 22 56 22 3a 76 |.... . "v","V":v| 00003cd0 6f 6c 3d bb 20 70 24 0d 1a 90 19 20 c9 20 22 77 |ol=. p$.... . "w| 00003ce0 22 2c 22 57 22 3a 76 62 65 6e 64 3d bb 20 70 24 |","W":vbend=. p$| 00003cf0 0d 1a 9a 1e 20 c9 20 22 7a 22 2c 22 5a 22 3a 6e |.... . "z","Z":n| 00003d00 6f 69 73 65 3d bb 20 70 24 2a 32 2e 35 34 0d 1a |oise=. p$*2.54..| 00003d10 a4 23 20 7f 3a 85 20 31 2c 22 42 61 64 20 70 61 |.# .:. 1,"Bad pa| 00003d20 72 61 6d 65 74 65 72 20 27 22 2b 71 24 2b 22 27 |rameter '"+q$+"'| 00003d30 22 0d 1a ae 06 20 cb 0d 1a b8 1b 20 70 24 3d a4 |".... ..... p$=.| 00003d40 73 70 63 28 c1 70 24 2c a7 70 24 2c 22 20 22 29 |spc(.p$,.p$," ")| 00003d50 29 29 0d 1a c2 05 ce 0d 1a cc 18 e7 20 6e 6f 74 |)).......... not| 00003d60 65 3d 39 39 39 20 80 20 76 6f 6c 3d 30 20 8c 0d |e=999 . vol=0 ..| 00003d70 1a d6 2a 20 e7 20 62 65 6e 64 20 84 20 76 62 65 |..* . bend . vbe| 00003d80 6e 64 3a 85 20 31 2c 22 43 61 6e 27 74 20 62 65 |nd:. 1,"Can't be| 00003d90 6e 64 20 72 65 73 74 73 22 0d 1a e0 05 cd 0d 1a |nd rests".......| 00003da0 ea 46 e7 20 28 6e 6f 74 65 3c 2d 32 34 20 84 20 |.F. (note<-24 . | 00003db0 6e 6f 74 65 3e 32 34 29 20 80 20 76 6f 6c 3a 85 |note>24) . vol:.| 00003dc0 20 31 2c 22 42 61 64 20 6f 72 20 6d 69 73 73 69 | 1,"Bad or missi| 00003dd0 6e 67 20 6e 6f 74 65 20 6e 61 6d 65 2f 6e 75 6d |ng note name/num| 00003de0 62 65 72 22 0d 1a f4 2d e7 20 6c 65 6e 3c 3d 30 |ber"...-. len<=0| 00003df0 3a 85 20 31 2c 22 42 61 64 20 6f 72 20 6d 69 73 |:. 1,"Bad or mis| 00003e00 73 69 6e 67 20 6e 6f 74 65 20 6c 65 6e 67 74 68 |sing note length| 00003e10 22 0d 1a fe 2c e7 20 76 6f 6c 3c 30 20 84 20 76 |"...,. vol<0 . v| 00003e20 6f 6c 3e 31 32 37 3a 85 20 31 2c 22 42 61 64 20 |ol>127:. 1,"Bad | 00003e30 76 6f 6c 75 6d 65 20 6c 65 76 65 6c 22 0d 1b 08 |volume level"...| 00003e40 47 e7 20 28 6e 6f 74 65 2b 62 65 6e 64 3c 2d 32 |G. (note+bend<-2| 00003e50 34 20 84 20 6e 6f 74 65 2b 62 65 6e 64 3e 32 34 |4 . note+bend>24| 00003e60 29 20 80 20 76 6f 6c 3a 85 20 31 2c 22 4e 6f 74 |) . vol:. 1,"Not| 00003e70 65 20 62 65 6e 74 20 6f 75 74 20 6f 66 20 72 61 |e bent out of ra| 00003e80 6e 67 65 22 0d 1b 12 40 e7 20 76 6f 6c 2b 76 62 |nge"...@. vol+vb| 00003e90 65 6e 64 3c 30 20 84 20 76 6f 6c 2b 76 62 65 6e |end<0 . vol+vben| 00003ea0 64 3e 31 32 37 3a 85 20 31 2c 22 56 6f 6c 75 6d |d>127:. 1,"Volum| 00003eb0 65 20 62 65 6e 74 20 6f 75 74 20 6f 66 20 72 61 |e bent out of ra| 00003ec0 6e 67 65 22 0d 1b 1c 36 e7 20 6e 6f 69 73 65 3c |nge"...6. noise<| 00003ed0 30 20 84 20 6e 6f 69 73 65 3e 32 35 34 3a 85 20 |0 . noise>254:. | 00003ee0 22 4e 6f 69 73 65 20 6c 65 76 65 6c 20 6f 75 74 |"Noise level out| 00003ef0 20 6f 66 20 72 61 6e 67 65 22 0d 1b 26 1f e7 20 | of range"..&.. | 00003f00 6e 6f 69 73 65 3e 30 20 80 20 6e 6f 69 73 65 3c |noise>0 . noise<| 00003f10 31 3a 6e 6f 69 73 65 3d 31 0d 1b 30 05 e1 0d 1b |1:noise=1..0....| 00003f20 3a 05 3a 0d 1b 44 0e dd 20 a4 73 70 63 28 70 24 |:.:..D.. .spc(p$| 00003f30 29 0d 1b 4e 0e c8 95 20 97 20 70 24 3d 33 32 0d |)..N... . p$=32.| 00003f40 1b 58 0e 20 70 24 3d c1 70 24 2c 32 29 0d 1b 62 |.X. p$=.p$,2)..b| 00003f50 05 ce 0d 1b 6c 07 3d 70 24 0d 1b 76 05 3a 0d 1b |....l.=p$..v.:..| 00003f60 80 0f dd 20 a4 6e 6f 74 65 28 70 24 29 0d 1b 8a |... .note(p$)...| 00003f70 16 e7 20 c0 70 24 2c 31 29 3c 22 41 22 3a 3d a0 |.. .p$,1)<"A":=.| 00003f80 20 70 24 0d 1b 94 08 ea 20 70 25 0d 1b 9e 20 e7 | p$..... p%... .| 00003f90 20 97 20 70 24 3e 39 36 3a c0 70 24 2c 31 29 3d | . p$>96:.p$,1)=| 00003fa0 bd 20 28 97 20 70 24 2d 33 32 29 0d 1b a8 17 e7 |. (. p$-32).....| 00003fb0 20 c1 70 24 2c 32 2c 31 29 3d 22 62 22 3a 70 25 | .p$,2,1)="b":p%| 00003fc0 3d 31 0d 1b b2 2f 3d a7 6e 6f 74 65 73 24 28 70 |=1.../=.notes$(p| 00003fd0 25 29 2c c0 c0 70 24 29 2b 22 20 22 2c 32 29 29 |%),..p$)+" ",2))| 00003fe0 2f 32 2b 31 32 2a bb 20 c2 70 24 29 2d 32 34 2e |/2+12*. .p$)-24.| 00003ff0 35 0d 1b bc 05 3a 0d 1b c6 10 dd 20 a4 6c 69 6e |5....:..... .lin| 00004000 65 28 69 6e 25 29 0d 1b d0 08 ea 20 70 24 0d 1b |e(in%)..... p$..| 00004010 da 16 c8 95 20 70 24 3d 22 22 20 84 20 97 20 70 |.... p$="" . . p| 00004020 24 3d 33 35 0d 1b e4 0d 20 6c 69 6e 65 25 2b 3d |$=35.... line%+=| 00004030 31 0d 1b ee 25 20 e7 20 c5 20 23 69 6e 25 3a 70 |1...% . . #in%:p| 00004040 24 3d 22 20 22 3a 8b 20 70 24 3d a4 73 70 63 28 |$=" ":. p$=.spc(| 00004050 be 23 69 6e 25 29 0d 1b f8 05 ce 0d 1c 02 10 e7 |.#in%)..........| 00004060 20 70 24 3d 22 20 22 3a 3d 22 22 0d 1c 0c 07 3d | p$=" ":=""....=| 00004070 70 24 0d 1c 16 05 3a 0d 1c 20 0e dd 20 f2 63 6c |p$....:.. .. .cl| 00004080 6f 73 65 69 6e 0d 1c 2a 16 c8 99 20 22 48 6f 75 |osein..*... "Hou| 00004090 72 67 6c 61 73 73 5f 4f 66 66 22 0d 1c 34 10 e7 |rglass_Off"..4..| 000040a0 20 69 6e 25 3a d9 20 23 69 6e 25 0d 1c 3e 05 e1 | in%:. #in%..>..| 000040b0 0d 1c 48 05 3a 0d 1c 52 17 dd 20 a4 70 72 6f 63 |..H.:..R.. .proc| 000040c0 65 73 73 5f 6c 69 6e 73 69 67 6e 64 0d 1c 5c 15 |ess_linsignd..\.| 000040d0 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e |.. "Hourglass_On| 000040e0 22 0d 1c 66 07 ea 20 85 0d 1c 70 34 ee 20 85 20 |"..f.. ...p4. . | 000040f0 ea 20 f7 20 85 3a c8 99 20 22 48 6f 75 72 67 6c |. . .:.. "Hourgl| 00004100 61 73 73 5f 4f 66 66 22 3a f2 74 65 6c 6c 74 68 |ass_Off":.tellth| 00004110 65 6d 6f 66 66 28 f6 24 29 3a 3d a3 0d 1c 7a 26 |emoff(.$):=...z&| 00004120 6c 65 6e 67 74 68 25 3d 66 69 6c 65 6c 65 6e 25 |length%=filelen%| 00004130 3a f2 63 6c 61 69 6d 28 6c 65 6e 67 74 68 25 2a |:.claim(length%*| 00004140 32 29 0d 1c 84 25 c8 99 20 22 4f 53 5f 46 69 6c |2)...%.. "OS_Fil| 00004150 65 22 2c 32 35 35 2c 73 61 76 65 70 74 72 25 2c |e",255,saveptr%,| 00004160 77 6f 72 6b 73 70 25 0d 1c 8e 07 f7 20 85 0d 1c |worksp%..... ...| 00004170 98 15 f2 70 72 6f 63 65 73 73 5f 6c 69 6e 73 69 |...process_linsi| 00004180 67 6e 64 0d 1c a2 0d f2 61 73 73 65 6d 62 6c 65 |gnd.....assemble| 00004190 0d 1c ac 16 c8 99 20 22 48 6f 75 72 67 6c 61 73 |...... "Hourglas| 000041a0 73 5f 4f 66 66 22 0d 1c b6 06 3d b9 0d 1c c0 05 |s_Off"....=.....| 000041b0 3a 0d 1c ca 17 dd 20 a4 70 72 6f 63 65 73 73 5f |:..... .process_| 000041c0 73 74 73 61 6d 70 6c 65 0d 1c d4 15 c8 99 20 22 |stsample...... "| 000041d0 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 1c de |Hourglass_On"...| 000041e0 07 ea 20 85 0d 1c e8 34 ee 20 85 20 ea 20 f7 20 |.. ....4. . . . | 000041f0 85 3a c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f |.:.. "Hourglass_| 00004200 4f 66 66 22 3a f2 74 65 6c 6c 74 68 65 6d 6f 66 |Off":.tellthemof| 00004210 66 28 f6 24 29 3a 3d a3 0d 1c f2 14 f2 63 6c 61 |f(.$):=......cla| 00004220 69 6d 28 66 69 6c 65 6c 65 6e 25 29 0d 1c fc 25 |im(filelen%)...%| 00004230 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 32 35 35 |.. "OS_File",255| 00004240 2c 73 61 76 65 70 74 72 25 2c 77 6f 72 6b 73 70 |,saveptr%,worksp| 00004250 25 0d 1d 06 07 f7 20 85 0d 1d 10 11 ea 20 61 24 |%..... ...... a$| 00004260 2c 62 24 2c 61 25 2c 62 25 0d 1d 1a 11 72 6f 66 |,b$,a%,b%....rof| 00004270 73 3d 30 3a 72 6c 65 6e 3d 32 0d 1d 24 13 73 76 |s=0:rlen=2..$.sv| 00004280 6f 6c 3d 32 35 35 3a 73 6c 65 6e 3d 30 0d 1d 2e |ol=255:slen=0...| 00004290 0c 6e 61 6d 65 24 3d 22 22 0d 1d 38 0e 61 25 3d |.name$=""..8.a%=| 000042a0 77 6f 72 6b 73 70 25 0d 1d 42 15 e7 20 21 61 25 |worksp%..B.. !a%| 000042b0 3d 26 35 30 34 44 34 31 35 33 20 8c 0d 1d 4c 11 |=&504D4153 ...L.| 000042c0 20 61 25 3d 77 6f 72 6b 73 70 25 2b 38 0d 1d 56 | a%=worksp%+8..V| 000042d0 06 20 f5 0d 1d 60 23 20 20 61 24 3d bd 20 3f 61 |. ...`# a$=. ?a| 000042e0 25 2b bd 20 61 25 3f 31 2b bd 20 61 25 3f 32 2b |%+. a%?1+. a%?2+| 000042f0 bd 20 61 25 3f 33 0d 1d 6a 0d 20 20 c8 8e 20 61 |. a%?3..j. .. a| 00004300 24 20 ca 0d 1d 74 15 20 20 c9 20 22 53 44 41 54 |$ ...t. . "SDAT| 00004310 22 3a 61 25 21 34 3d 30 0d 1d 7e 25 20 20 c9 20 |":a%!4=0..~% . | 00004320 22 53 4e 41 4d 22 3a 6e 61 6d 65 24 3d c0 a4 72 |"SNAM":name$=..r| 00004330 65 61 64 28 61 25 2b 38 29 2c 31 39 29 0d 1d 88 |ead(a%+8),19)...| 00004340 18 20 20 c9 20 22 53 56 4f 4c 22 3a 73 76 6f 6c |. . "SVOL":svol| 00004350 3d 61 25 3f 38 0d 1d 92 18 20 20 c9 20 22 53 4c |=a%?8.... . "SL| 00004360 45 4e 22 3a 73 6c 65 6e 3d 61 25 21 38 0d 1d 9c |EN":slen=a%!8...| 00004370 1a 20 20 c9 20 22 52 4f 46 53 22 3a 72 6f 66 73 |. . "ROFS":rofs| 00004380 3d 61 25 21 38 2d 31 0d 1d a6 18 20 20 c9 20 22 |=a%!8-1.... . "| 00004390 52 4c 45 4e 22 3a 72 6c 65 6e 3d 61 25 21 38 0d |RLEN":rlen=a%!8.| 000043a0 1d b0 07 20 20 cb 0d 1d ba 10 20 20 61 25 2b 3d |... ..... a%+=| 000043b0 38 2b 61 25 21 34 0d 1d c4 27 20 fd 20 61 24 3d |8+a%!4...' . a$=| 000043c0 22 53 44 41 54 22 20 84 20 61 25 3e 3d 77 6f 72 |"SDAT" . a%>=wor| 000043d0 6b 73 70 25 2b 66 69 6c 65 6c 65 6e 25 0d 1d ce |ksp%+filelen%...| 000043e0 05 cc 0d 1d d8 1b 20 6e 61 6d 65 24 3d a4 6c 65 |...... name$=.le| 000043f0 61 66 28 24 73 61 76 65 70 74 72 25 29 0d 1d e2 |af($saveptr%)...| 00004400 18 20 61 25 3d 66 69 6c 65 6c 65 6e 25 3a 73 6c |. a%=filelen%:sl| 00004410 65 6e 3d 61 25 0d 1d ec 05 cd 0d 1d f6 23 e7 20 |en=a%........#. | 00004420 6e 61 6d 65 24 3d 22 22 3a 6e 61 6d 65 24 3d 22 |name$="":name$="| 00004430 53 54 2d 30 31 3a 73 61 6d 70 6c 65 22 0d 1e 00 |ST-01:sample"...| 00004440 1a e7 20 72 6f 66 73 3c 30 3a 72 6f 66 73 3d 30 |.. rofs<0:rofs=0| 00004450 3a 72 6c 65 6e 3d 32 0d 1e 0a 13 e7 20 72 6c 65 |:rlen=2..... rle| 00004460 6e 3c 32 3a 72 6c 65 6e 3d 32 0d 1e 14 5b e7 20 |n<2:rlen=2...[. | 00004470 73 6c 65 6e 3d 30 20 84 20 61 25 3e 3d 77 6f 72 |slen=0 . a%>=wor| 00004480 6b 73 70 25 2b 66 69 6c 65 6c 65 6e 25 3a c8 99 |ksp%+filelen%:..| 00004490 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 | "Hourglass_Off"| 000044a0 3a f2 74 65 6c 6c 74 68 65 6d 6f 66 66 28 22 42 |:.tellthemoff("B| 000044b0 61 64 20 53 54 73 61 6d 70 6c 65 20 66 69 6c 65 |ad STsample file| 000044c0 22 29 3a 3d a3 0d 1e 1e 13 24 6e 61 6d 65 70 74 |"):=.....$namept| 000044d0 72 25 3d 6e 61 6d 65 24 0d 1e 28 14 24 73 76 6f |r%=name$..(.$svo| 000044e0 6c 70 74 72 25 3d c3 20 73 76 6f 6c 0d 1e 32 14 |lptr%=. svol..2.| 000044f0 24 73 6c 65 6e 70 74 72 25 3d c3 20 73 6c 65 6e |$slenptr%=. slen| 00004500 0d 1e 3c 14 24 72 6f 66 73 70 74 72 25 3d c3 20 |..<.$rofsptr%=. | 00004510 72 6f 66 73 0d 1e 46 14 24 72 6c 65 6e 70 74 72 |rofs..F.$rlenptr| 00004520 25 3d c3 20 72 6c 65 6e 0d 1e 50 1a 73 74 61 72 |%=. rlen..P.star| 00004530 74 25 3d 61 25 2b 28 73 6c 65 6e 2d 31 20 80 20 |t%=a%+(slen-1 . | 00004540 33 29 0d 1e 5a 10 6c 65 6e 67 74 68 25 3d 73 6c |3)..Z.length%=sl| 00004550 65 6e 0d 1e 64 10 e7 20 61 25 3c 3e 73 6c 65 6e |en..d.. a%<>slen| 00004560 20 8c 0d 1e 6e 19 20 e3 20 6e 25 3d 30 20 b8 20 | ...n. . n%=0 . | 00004570 61 25 21 2d 34 2d 34 20 88 20 34 0d 1e 78 16 20 |a%!-4-4 . 4..x. | 00004580 20 6e 25 21 77 6f 72 6b 73 70 25 3d 6e 25 21 61 | n%!worksp%=n%!a| 00004590 25 0d 1e 82 06 20 ed 0d 1e 8c 05 cd 0d 1e 96 0d |%.... ..........| 000045a0 f2 61 73 73 65 6d 62 6c 65 0d 1e a0 16 c8 99 20 |.assemble...... | 000045b0 22 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d |"Hourglass_Off".| 000045c0 1e aa 2a 21 71 25 3d 30 3a 71 25 21 34 3d 2d 35 |..*!q%=0:q%!4=-5| 000045d0 31 32 3a 71 25 21 38 3d 6c 65 6e 67 74 68 25 2a |12:q%!8=length%*| 000045e0 32 3a 71 25 21 31 32 3d 30 0d 1e b4 24 c8 99 20 |2:q%!12=0...$.. | 000045f0 22 57 69 6d 70 5f 53 65 74 45 78 74 65 6e 74 22 |"Wimp_SetExtent"| 00004600 2c 77 61 76 65 66 6f 72 6d 25 2c 71 25 0d 1e be |,waveform%,q%...| 00004610 06 3d b9 0d 1e c8 05 3a 0d 1e d2 17 dd 20 f2 70 |.=.....:..... .p| 00004620 72 6f 63 65 73 73 5f 6c 69 6e 73 69 67 6e 64 0d |rocess_linsignd.| 00004630 1e dc 16 e3 20 6e 25 3d 30 20 b8 20 6c 65 6e 67 |.... n%=0 . leng| 00004640 74 68 25 2d 31 0d 1e e6 2b 20 6e 25 3f 28 77 6f |th%-1...+ n%?(wo| 00004650 72 6b 73 70 25 2b 6c 65 6e 67 74 68 25 29 3d 76 |rksp%+length%)=v| 00004660 6f 6c 25 3f 28 6e 25 3f 77 6f 72 6b 73 70 25 29 |ol%?(n%?worksp%)| 00004670 0d 1e f0 05 ed 0d 1e fa 1e 24 6e 61 6d 65 70 74 |.........$namept| 00004680 72 25 3d a4 6c 65 61 66 28 24 73 61 76 65 70 74 |r%=.leaf($savept| 00004690 72 25 29 0d 1f 04 37 e7 20 24 73 61 76 65 70 74 |r%)...7. $savept| 000046a0 72 25 3d 22 3c 57 69 6d 70 24 53 63 72 61 70 3e |r%="<Wimp$Scrap>| 000046b0 22 3a 24 6e 61 6d 65 70 74 72 25 3d 22 53 54 2d |":$nameptr%="ST-| 000046c0 30 31 3a 73 61 6d 70 6c 65 22 0d 1f 0e 17 24 73 |01:sample"....$s| 000046d0 6c 65 6e 70 74 72 25 3d c3 20 6c 65 6e 67 74 68 |lenptr%=. length| 000046e0 25 0d 1f 18 13 24 73 76 6f 6c 70 74 72 25 3d 22 |%....$svolptr%="| 000046f0 32 35 35 22 0d 1f 22 1f 24 72 6f 66 73 70 74 72 |255"..".$rofsptr| 00004700 25 3d 22 30 22 3a 24 72 6c 65 6e 70 74 72 25 3d |%="0":$rlenptr%=| 00004710 22 32 22 0d 1f 2c 0e e3 20 6e 25 3d 30 20 b8 20 |"2"..,.. n%=0 . | 00004720 34 0d 1f 36 16 20 f2 69 63 6f 6e 28 65 64 69 74 |4..6. .icon(edit| 00004730 25 2c 6e 25 2c 31 29 0d 1f 40 05 ed 0d 1f 4a 2a |%,n%,1)..@....J*| 00004740 21 71 25 3d 30 3a 71 25 21 34 3d 2d 35 31 32 3a |!q%=0:q%!4=-512:| 00004750 71 25 21 38 3d 6c 65 6e 67 74 68 25 2a 32 3a 71 |q%!8=length%*2:q| 00004760 25 21 31 32 3d 30 0d 1f 54 24 c8 99 20 22 57 69 |%!12=0..T$.. "Wi| 00004770 6d 70 5f 53 65 74 45 78 74 65 6e 74 22 2c 77 61 |mp_SetExtent",wa| 00004780 76 65 66 6f 72 6d 25 2c 71 25 0d 1f 5e 05 e1 0d |veform%,q%..^...| 00004790 1f 68 05 3a 0d 1f 72 10 dd 20 f2 63 6c 61 69 6d |.h.:..r.. .claim| 000047a0 28 70 25 29 0d 1f 7c 45 e7 20 77 6f 72 6b 73 70 |(p%)..|E. worksp| 000047b0 25 3c 3e 2d 31 3a f2 72 65 6c 65 61 73 65 76 6f |%<>-1:.releasevo| 000047c0 69 63 65 3a c8 99 20 22 58 4f 53 5f 4d 6f 64 75 |ice:.. "XOS_Modu| 000047d0 6c 65 22 2c 37 2c 2c 77 6f 72 6b 73 70 25 3a 77 |le",7,,worksp%:w| 000047e0 6f 72 6b 73 70 25 3d 2d 31 0d 1f 86 0c e7 20 70 |orksp%=-1..... p| 000047f0 25 3c 30 3a e1 0d 1f 90 30 c8 99 20 22 58 4f 53 |%<0:....0.. "XOS| 00004800 5f 4d 6f 64 75 6c 65 22 2c 36 2c 2c 2c 70 25 2b |_Module",6,,,p%+| 00004810 33 20 80 20 2d 34 20 b8 20 2c 2c 77 6f 72 6b 73 |3 . -4 . ,,works| 00004820 70 25 3b 70 25 0d 1f 9a 0e e7 20 70 25 20 80 20 |p%;p%..... p% . | 00004830 31 20 8c 0d 1f a4 43 20 e7 20 9f 3d 32 35 37 3a |1 ....C . .=257:| 00004840 85 20 32 2c 22 43 61 6e 27 74 20 63 6c 61 69 6d |. 2,"Can't claim| 00004850 20 65 6e 6f 75 67 68 20 77 6f 72 6b 73 70 61 63 | enough workspac| 00004860 65 20 74 6f 20 70 72 6f 63 65 73 73 20 74 68 65 |e to process the| 00004870 20 66 69 6c 65 22 0d 1f ae 0b 20 85 20 9f 2c f6 | file".... . .,.| 00004880 24 0d 1f b8 05 cd 0d 1f c2 05 e1 0d 1f cc 05 3a |$..............:| 00004890 0d 1f d6 13 dd 20 f2 72 65 6c 65 61 73 65 76 6f |..... .releasevo| 000048a0 69 63 65 0d 1f e0 0e e7 20 76 6f 69 63 65 25 20 |ice..... voice% | 000048b0 8c 0d 1f ea 29 20 c8 99 20 22 53 6f 75 6e 64 5f |....) .. "Sound_| 000048c0 49 6e 73 74 61 6c 6c 56 6f 69 63 65 22 2c 2c 76 |InstallVoice",,v| 000048d0 6f 69 63 65 25 20 b8 20 61 25 0d 1f f4 40 20 e7 |oice% . a%...@ .| 000048e0 20 61 25 3d 76 6f 69 63 65 6e 61 6d 65 2b 6d 63 | a%=voicename+mc| 000048f0 25 3a c8 99 20 22 58 53 6f 75 6e 64 5f 52 65 6d |%:.. "XSound_Rem| 00004900 6f 76 65 56 6f 69 63 65 22 2c 2c 76 6f 69 63 65 |oveVoice",,voice| 00004910 25 3a 76 6f 69 63 65 25 3d 30 0d 1f fe 05 cd 0d |%:voice%=0......| 00004920 20 08 05 e1 0d 20 12 05 3a 0d 20 1c 14 dd 20 f2 | .... ..:. ... .| 00004930 73 61 76 65 5f 73 74 73 61 6d 70 6c 65 0d 20 26 |save_stsample. &| 00004940 08 f7 20 2b 30 0d 20 30 11 70 74 72 25 3d 73 74 |.. +0. 0.ptr%=st| 00004950 25 3a f3 20 61 24 0d 20 3a 0c c8 95 20 61 24 3e |%:. a$. :... a$>| 00004960 22 22 0d 20 44 16 20 24 70 74 72 25 3d 61 24 3a |"". D. $ptr%=a$:| 00004970 f3 20 70 74 72 25 21 34 0d 20 4e 2f 20 e7 20 70 |. ptr%!4. N/ . p| 00004980 74 72 25 21 34 3a e3 20 6e 25 3d 38 20 b8 20 37 |tr%!4:. n%=8 . 7| 00004990 2b 70 74 72 25 21 34 20 88 20 34 3a 6e 25 21 70 |+ptr%!4 . 4:n%!p| 000049a0 74 72 25 3d 30 3a ed 0d 20 58 13 20 70 74 72 25 |tr%=0:.. X. ptr%| 000049b0 2b 3d 38 2b 70 74 72 25 21 34 0d 20 62 09 20 f3 |+=8+ptr%!4. b. .| 000049c0 20 61 24 0d 20 6c 05 ce 0d 20 76 1b dc 20 53 41 | a$. l... v.. SA| 000049d0 4d 50 2c 30 2c 53 4e 41 4d 2c 32 30 2c 53 56 4f |MP,0,SNAM,20,SVO| 000049e0 4c 2c 34 0d 20 80 1a dc 20 53 4c 45 4e 2c 34 2c |L,4. ... SLEN,4,| 000049f0 52 4f 46 53 2c 34 2c 52 4c 45 4e 2c 34 0d 20 8a |ROFS,4,RLEN,4. .| 00004a00 0d dc 20 53 44 41 54 2c 30 2c 0d 20 94 19 73 74 |.. SDAT,0,. ..st| 00004a10 25 21 34 3d 6c 65 6e 67 74 68 25 2b 38 37 20 80 |%!4=length%+87 .| 00004a20 20 2d 34 0d 20 9e 14 e7 20 24 6e 61 6d 65 70 74 | -4. ... $namept| 00004a30 72 25 3d 22 22 20 8c 0d 20 a8 1d 20 24 6e 61 6d |r%="" .. .. $nam| 00004a40 65 70 74 72 25 3d 22 53 54 2d 30 31 3a 73 61 6d |eptr%="ST-01:sam| 00004a50 70 6c 65 22 0d 20 b2 13 20 f2 69 63 6f 6e 28 65 |ple". .. .icon(e| 00004a60 64 69 74 25 2c 30 29 0d 20 bc 05 cd 0d 20 c6 2e |dit%,0). .... ..| 00004a70 24 28 73 74 25 2b 31 36 29 3d 24 6e 61 6d 65 70 |$(st%+16)=$namep| 00004a80 74 72 25 3a 73 74 25 3f 28 31 36 2b a9 20 24 28 |tr%:st%?(16+. $(| 00004a90 73 74 25 2b 31 36 29 29 3d 30 0d 20 d0 19 f2 72 |st%+16))=0. ...r| 00004aa0 65 61 64 64 61 74 61 28 22 53 54 73 61 6d 70 6c |eaddata("STsampl| 00004ab0 65 22 29 0d 20 da 27 73 74 25 21 34 34 3d 73 76 |e"). .'st%!44=sv| 00004ac0 6f 6c 3a 73 74 25 21 36 38 3d 72 6f 66 73 3a 73 |ol:st%!68=rofs:s| 00004ad0 74 25 21 38 30 3d 72 6c 65 6e 0d 20 e4 12 73 74 |t%!80=rlen. ..st| 00004ae0 25 21 35 36 3d 6c 65 6e 67 74 68 25 0d 20 ee 12 |%!56=length%. ..| 00004af0 73 74 25 21 38 38 3d 6c 65 6e 67 74 68 25 0d 20 |st%!88=length%. | 00004b00 f8 11 6f 75 74 25 3d ae 20 24 6e 61 6d 65 25 0d |..out%=. $name%.| 00004b10 21 02 2e c8 99 20 22 4f 53 5f 47 42 50 42 22 2c |!.... "OS_GBPB",| 00004b20 31 2c 6f 75 74 25 2c 73 74 25 2c 39 35 2d 28 6c |1,out%,st%,95-(l| 00004b30 65 6e 67 74 68 25 2d 31 20 80 20 33 29 0d 21 0c |ength%-1 . 3).!.| 00004b40 39 c8 99 20 22 4f 53 5f 47 42 50 42 22 2c 32 2c |9.. "OS_GBPB",2,| 00004b50 6f 75 74 25 2c 77 6f 72 6b 73 70 25 2d 6c 65 6e |out%,worksp%-len| 00004b60 67 74 68 25 2a 6c 69 6e 73 69 67 6e 64 25 2c 6c |gth%*linsignd%,l| 00004b70 65 6e 67 74 68 25 0d 21 16 0b d9 20 23 6f 75 74 |ength%.!... #out| 00004b80 25 0d 21 20 1e c8 99 20 22 4f 53 5f 46 69 6c 65 |%.! ... "OS_File| 00004b90 22 2c 31 38 2c 6e 61 6d 65 25 2c 26 43 42 35 0d |",18,name%,&CB5.| 00004ba0 21 2a 05 e1 0d 21 34 05 3a 0d 21 3e 13 dd 20 f2 |!*...!4.:.!>.. .| 00004bb0 72 65 61 64 64 61 74 61 28 61 24 29 0d 21 48 28 |readdata(a$).!H(| 00004bc0 73 76 6f 6c 3d a4 65 76 61 6c 6c 69 6d 28 73 76 |svol=.evallim(sv| 00004bd0 6f 6c 70 74 72 25 2c 32 35 35 2c 22 56 6f 6c 75 |olptr%,255,"Volu| 00004be0 6d 65 22 29 0d 21 52 35 72 6f 66 73 3d a4 65 76 |me").!R5rofs=.ev| 00004bf0 61 6c 6c 69 6d 28 72 6f 66 73 70 74 72 25 2c 6c |allim(rofsptr%,l| 00004c00 65 6e 67 74 68 25 2d 31 2c 22 52 65 70 65 61 74 |ength%-1,"Repeat| 00004c10 20 6f 66 66 73 65 74 22 29 0d 21 5c 38 72 6c 65 | offset").!\8rle| 00004c20 6e 3d a4 65 76 61 6c 6c 69 6d 28 72 6c 65 6e 70 |n=.evallim(rlenp| 00004c30 74 72 25 2c 6c 65 6e 67 74 68 25 2d 72 6f 66 73 |tr%,length%-rofs| 00004c40 2c 22 52 65 70 65 61 74 20 6c 65 6e 67 74 68 22 |,"Repeat length"| 00004c50 29 0d 21 66 4a e7 20 28 73 76 6f 6c 20 84 20 72 |).!fJ. (svol . r| 00004c60 6f 66 73 20 84 20 72 6c 65 6e 29 3d 2d 31 3a 85 |ofs . rlen)=-1:.| 00004c70 20 31 2c 61 24 2b 22 20 66 69 6c 65 20 6e 6f 74 | 1,a$+" file not| 00004c80 20 73 61 76 65 64 2e 20 45 64 69 74 20 61 6e 64 | saved. Edit and| 00004c90 20 74 72 79 20 61 67 61 69 6e 22 0d 21 70 05 e1 | try again".!p..| 00004ca0 0d 21 7a 05 3a 0d 21 84 12 dd 20 f2 73 61 76 65 |.!z.:.!... .save| 00004cb0 5f 6d 6f 64 75 6c 65 0d 21 8e 13 6e 61 6d 65 24 |_module.!..name$| 00004cc0 3d 24 6e 61 6d 65 70 74 72 25 0d 21 98 10 e7 20 |=$nameptr%.!... | 00004cd0 6e 61 6d 65 24 3d 22 22 20 8c 0d 21 a2 19 20 6e |name$="" ..!.. n| 00004ce0 61 6d 65 24 3d 22 53 54 2d 30 31 3a 73 61 6d 70 |ame$="ST-01:samp| 00004cf0 6c 65 22 0d 21 ac 14 20 24 6e 61 6d 65 70 74 72 |le".!.. $nameptr| 00004d00 25 3d 6e 61 6d 65 24 0d 21 b6 13 20 f2 69 63 6f |%=name$.!.. .ico| 00004d10 6e 28 65 64 69 74 25 2c 30 29 0d 21 c0 05 cd 0d |n(edit%,0).!....| 00004d20 21 ca 1d f2 72 65 61 64 64 61 74 61 28 22 4d 6f |!...readdata("Mo| 00004d30 64 75 6c 65 20 76 6f 69 63 65 22 29 0d 21 d4 10 |dule voice").!..| 00004d40 f2 61 73 73 65 6d 62 6c 65 6d 6f 64 0d 21 de 11 |.assemblemod.!..| 00004d50 6f 75 74 25 3d ae 20 24 6e 61 6d 65 25 0d 21 e8 |out%=. $name%.!.| 00004d60 22 c8 99 20 22 4f 53 5f 47 42 50 42 22 2c 31 2c |".. "OS_GBPB",1,| 00004d70 6f 75 74 25 2c 6d 63 25 2c 6d 63 6c 65 6e 25 0d |out%,mc%,mclen%.| 00004d80 21 f2 40 c8 99 20 22 4f 53 5f 47 42 50 42 22 2c |!.@.. "OS_GBPB",| 00004d90 32 2c 6f 75 74 25 2c 77 6f 72 6b 73 70 25 2d 6c |2,out%,worksp%-l| 00004da0 65 6e 67 74 68 25 2a 6c 69 6e 73 69 67 6e 64 25 |ength%*linsignd%| 00004db0 2c 6c 65 6e 67 74 68 25 2b 33 20 80 20 2d 34 0d |,length%+3 . -4.| 00004dc0 21 fc 0b d9 20 23 6f 75 74 25 0d 22 06 1e c8 99 |!... #out%."....| 00004dd0 20 22 4f 53 5f 46 69 6c 65 22 2c 31 38 2c 6e 61 | "OS_File",18,na| 00004de0 6d 65 25 2c 26 46 46 41 0d 22 10 27 6d 63 25 21 |me%,&FFA.".'mc%!| 00004df0 73 74 61 72 74 3d 77 6f 72 6b 73 70 25 2d 6c 65 |start=worksp%-le| 00004e00 6e 67 74 68 25 2a 6c 69 6e 73 69 67 6e 64 25 0d |ngth%*linsignd%.| 00004e10 22 1a 1a 6d 63 25 21 65 6e 64 3d 6d 63 25 21 73 |"..mc%!end=mc%!s| 00004e20 74 61 72 74 2b 6c 65 6e 25 0d 22 24 0d f2 61 73 |tart+len%."$..as| 00004e30 73 65 6d 62 6c 65 0d 22 2e 05 e1 0d 22 38 05 3a |semble."...."8.:| 00004e40 0d 22 42 0f dd 20 f2 61 73 73 65 6d 62 6c 65 0d |."B.. .assemble.| 00004e50 22 4c 1b 6e 61 6d 65 24 3d 22 4d 61 6b 65 57 61 |"L.name$="MakeWa| 00004e60 76 65 73 2d 56 6f 69 63 65 22 0d 22 56 18 73 76 |ves-Voice"."V.sv| 00004e70 6f 6c 3d a4 65 76 61 6c 28 73 76 6f 6c 70 74 72 |ol=.eval(svolptr| 00004e80 25 29 0d 22 60 18 72 6f 66 73 3d a4 65 76 61 6c |%)."`.rofs=.eval| 00004e90 28 72 6f 66 73 70 74 72 25 29 0d 22 6a 18 72 6c |(rofsptr%)."j.rl| 00004ea0 65 6e 3d a4 65 76 61 6c 28 72 6c 65 6e 70 74 72 |en=.eval(rlenptr| 00004eb0 25 29 0d 22 74 10 f2 61 73 73 65 6d 62 6c 65 6d |%)."t..assemblem| 00004ec0 6f 64 0d 22 7e 27 6d 63 25 21 73 74 61 72 74 3d |od."~'mc%!start=| 00004ed0 77 6f 72 6b 73 70 25 2d 6c 65 6e 67 74 68 25 2a |worksp%-length%*| 00004ee0 6c 69 6e 73 69 67 6e 64 25 0d 22 88 1a 6d 63 25 |linsignd%."..mc%| 00004ef0 21 65 6e 64 3d 6d 63 25 21 73 74 61 72 74 2b 6c |!end=mc%!start+l| 00004f00 65 6e 25 0d 22 92 0a 61 73 6d 25 3d b9 0d 22 9c |en%."..asm%=..".| 00004f10 05 e1 0d 22 a6 05 3a 0d 22 b0 12 dd 20 f2 61 73 |..."..:."... .as| 00004f20 73 65 6d 62 6c 65 6d 6f 64 0d 22 ba 11 f2 72 65 |semblemod."...re| 00004f30 6c 65 61 73 65 76 6f 69 63 65 0d 22 c4 10 6c 65 |leasevoice."..le| 00004f40 6e 25 3d 6c 65 6e 67 74 68 25 0d 22 ce 2c e7 20 |n%=length%.".,. | 00004f50 72 6c 65 6e 3e 32 20 80 20 72 6f 66 73 2b 72 6c |rlen>2 . rofs+rl| 00004f60 65 6e 3c 6c 65 6e 25 3a 6c 65 6e 25 3d 72 6f 66 |en<len%:len%=rof| 00004f70 73 2b 72 6c 65 6e 0d 22 d8 12 e3 20 70 25 3d 34 |s+rlen."... p%=4| 00004f80 20 b8 20 36 20 88 20 32 0d 22 e2 0f 50 25 3d 30 | . 6 . 2."..P%=0| 00004f90 3a 4f 25 3d 6d 63 25 0d 22 ec 0b 5b 4f 50 54 20 |:O%=mc%."..[OPT | 00004fa0 70 25 0d 22 f6 0a 45 51 55 44 20 30 0d 23 00 0d |p%."..EQUD 0.#..| 00004fb0 45 51 55 44 20 69 6e 69 74 0d 23 0a 0d 45 51 55 |EQUD init.#..EQU| 00004fc0 44 20 65 78 69 74 0d 23 14 0a 45 51 55 44 20 30 |D exit.#..EQUD 0| 00004fd0 0d 23 1e 0e 45 51 55 44 20 74 69 74 6c 65 0d 23 |.#..EQUD title.#| 00004fe0 28 0d 45 51 55 44 20 68 65 6c 70 0d 23 32 0a 45 |(.EQUD help.#2.E| 00004ff0 51 55 44 20 30 0d 23 3c 0a 45 51 55 44 20 30 0d |QUD 0.#<.EQUD 0.| 00005000 23 46 0a 45 51 55 44 20 30 0d 23 50 0a 45 51 55 |#F.EQUD 0.#P.EQU| 00005010 44 20 30 0d 23 5a 05 3a 0d 23 64 19 2e 74 69 74 |D 0.#Z.:.#d..tit| 00005020 6c 65 20 45 51 55 53 20 6e 61 6d 65 24 2b bd 20 |le EQUS name$+. | 00005030 30 0d 23 6e 46 2e 68 65 6c 70 20 45 51 55 53 20 |0.#nF.help EQUS | 00005040 22 53 54 73 61 6d 70 6c 65 20 4d 6f 64 75 6c 65 |"STsample Module| 00005050 22 2b bd 20 39 2b 22 31 2e 30 30 20 28 22 2b c1 |"+. 9+"1.00 ("+.| 00005060 91 24 2c 35 2c 31 31 29 2b 22 29 20 22 2b 6e 61 |.$,5,11)+") "+na| 00005070 6d 65 24 2b bd 20 30 0d 23 78 09 41 4c 49 47 4e |me$+. 0.#x.ALIGN| 00005080 0d 23 82 05 3a 0d 23 8c 09 2e 69 6e 69 74 0d 23 |.#..:.#...init.#| 00005090 96 12 53 54 4d 46 44 20 31 33 21 2c 7b 31 34 7d |..STMFD 13!,{14}| 000050a0 0d 23 a0 13 41 44 52 20 30 2c 76 6f 69 63 65 62 |.#..ADR 0,voiceb| 000050b0 61 73 65 0d 23 aa 0c 4d 4f 56 20 31 2c 23 30 0d |ase.#..MOV 1,#0.| 000050c0 23 b4 1c 53 57 49 20 22 53 6f 75 6e 64 5f 49 6e |#..SWI "Sound_In| 000050d0 73 74 61 6c 6c 56 6f 69 63 65 22 0d 23 be 0e 53 |stallVoice".#..S| 000050e0 54 52 20 31 2c 73 6c 6f 74 0d 23 c8 0b 41 44 52 |TR 1,slot.#..ADR| 000050f0 20 30 2c 30 0d 23 d2 10 4c 44 52 20 31 2c 6f 66 | 0,0.#..LDR 1,of| 00005100 66 73 65 74 0d 23 dc 0d 41 44 44 20 30 2c 30 2c |fset.#..ADD 0,0,| 00005110 31 0d 23 e6 0f 53 54 52 20 30 2c 73 74 61 72 74 |1.#..STR 0,start| 00005120 0d 23 f0 0d 4c 44 52 20 31 2c 6c 65 6e 0d 23 fa |.#..LDR 1,len.#.| 00005130 0d 41 44 44 20 31 2c 31 2c 30 0d 24 04 0d 53 54 |.ADD 1,1,0.$..ST| 00005140 52 20 31 2c 65 6e 64 0d 24 0e 13 4c 44 4d 46 44 |R 1,end.$..LDMFD| 00005150 20 31 33 21 2c 7b 50 43 7d 5e 0d 24 18 05 3a 0d | 13!,{PC}^.$..:.| 00005160 24 22 09 2e 65 78 69 74 0d 24 2c 12 53 54 4d 46 |$"..exit.$,.STMF| 00005170 44 20 31 33 21 2c 7b 31 34 7d 0d 24 36 0e 4c 44 |D 13!,{14}.$6.LD| 00005180 52 20 31 2c 73 6c 6f 74 0d 24 40 1c 53 57 49 20 |R 1,slot.$@.SWI | 00005190 22 58 53 6f 75 6e 64 5f 52 65 6d 6f 76 65 56 6f |"XSound_RemoveVo| 000051a0 69 63 65 22 0d 24 4a 0c 4d 4f 56 20 31 2c 23 30 |ice".$J.MOV 1,#0| 000051b0 0d 24 54 0e 53 54 52 20 31 2c 73 6c 6f 74 0d 24 |.$T.STR 1,slot.$| 000051c0 5e 13 4c 44 4d 46 44 20 31 33 21 2c 7b 50 43 7d |^.LDMFD 13!,{PC}| 000051d0 5e 0d 24 68 05 3a 0d 24 72 0e 2e 76 6f 69 63 65 |^.$h.:.$r..voice| 000051e0 62 61 73 65 0d 24 7c 0a 42 20 66 69 6c 6c 0d 24 |base.$|.B fill.$| 000051f0 86 0a 42 20 66 69 6c 6c 0d 24 90 0c 42 20 67 61 |..B fill.$..B ga| 00005200 74 65 6f 6e 0d 24 9a 0d 42 20 67 61 74 65 6f 66 |teon.$..B gateof| 00005210 66 0d 24 a4 0e 42 20 69 6e 73 74 61 6e 63 65 0d |f.$..B instance.| 00005220 24 ae 12 4c 44 4d 46 44 20 31 33 21 2c 7b 50 43 |$..LDMFD 13!,{PC| 00005230 7d 0d 24 b8 12 4c 44 4d 46 44 20 31 33 21 2c 7b |}.$..LDMFD 13!,{| 00005240 50 43 7d 0d 24 c2 1c 45 51 55 44 20 76 6f 69 63 |PC}.$..EQUD voic| 00005250 65 6e 61 6d 65 2d 76 6f 69 63 65 62 61 73 65 0d |ename-voicebase.| 00005260 24 cc 05 3a 0d 24 d6 1d 2e 76 6f 69 63 65 6e 61 |$..:.$...voicena| 00005270 6d 65 20 45 51 55 53 20 6e 61 6d 65 24 2b bd 20 |me EQUS name$+. | 00005280 30 0d 24 e0 09 41 4c 49 47 4e 0d 24 ea 05 3a 0d |0.$..ALIGN.$..:.| 00005290 24 f4 0d 2e 69 6e 73 74 61 6e 63 65 0d 24 fe 16 |$...instance.$..| 000052a0 53 54 4d 46 44 20 31 33 21 2c 7b 30 2d 34 2c 31 |STMFD 13!,{0-4,1| 000052b0 34 7d 0d 25 08 0c 4d 4f 56 20 30 2c 23 30 0d 25 |4}.%..MOV 0,#0.%| 000052c0 12 0b 4d 4f 56 20 31 2c 30 0d 25 1c 0b 4d 4f 56 |..MOV 1,0.%..MOV| 000052d0 20 32 2c 30 0d 25 26 0b 4d 4f 56 20 33 2c 30 0d | 2,0.%&.MOV 3,0.| 000052e0 25 30 0b 4d 4f 56 20 34 2c 30 0d 25 3a 19 53 57 |%0.MOV 4,0.%:.SW| 000052f0 49 20 22 53 6f 75 6e 64 5f 43 6f 6e 66 69 67 75 |I "Sound_Configu| 00005300 72 65 22 0d 25 44 11 4c 44 52 20 30 2c 5b 33 2c |re".%D.LDR 0,[3,| 00005310 23 31 32 5d 0d 25 4e 13 53 54 52 20 30 2c 6c 6f |#12].%N.STR 0,lo| 00005320 67 61 6d 70 70 74 72 0d 25 58 19 4c 44 4d 46 44 |gampptr.%X.LDMFD| 00005330 20 31 33 21 2c 7b 30 2d 34 2c 31 34 2c 50 43 7d | 13!,{0-4,14,PC}| 00005340 0d 25 62 05 3a 0d 25 6c 0b 2e 67 61 74 65 6f 6e |.%b.:.%l..gateon| 00005350 0d 25 76 0f 4c 44 52 20 30 2c 73 74 61 72 74 0d |.%v.LDR 0,start.| 00005360 25 80 11 53 54 52 20 30 2c 5b 39 2c 23 31 36 5d |%..STR 0,[9,#16]| 00005370 0d 25 8a 13 4c 44 52 20 30 2c 6c 6f 67 61 6d 70 |.%..LDR 0,logamp| 00005380 70 74 72 0d 25 94 11 53 54 52 20 30 2c 5b 39 2c |ptr.%..STR 0,[9,| 00005390 23 32 30 5d 0d 25 9e 09 2e 66 69 6c 6c 0d 25 a8 |#20].%...fill.%.| 000053a0 13 53 54 4d 46 44 20 31 33 21 2c 7b 37 2c 38 7d |.STMFD 13!,{7,8}| 000053b0 0d 25 b2 11 4c 44 4d 49 41 20 39 2c 7b 31 2d 36 |.%..LDMIA 9,{1-6| 000053c0 7d 0d 25 bc 0e 80 20 31 2c 31 2c 23 26 37 46 0d |}.%... 1,1,#&7F.| 000053d0 25 c6 17 4c 44 52 42 20 31 2c 5b 36 2c 31 2c 4c |%..LDRB 1,[6,1,L| 000053e0 53 4c 20 23 31 5d 0d 25 d0 0d 41 44 52 20 36 2c |SL #1].%..ADR 6,| 000053f0 76 6f 6c 0d 25 da 11 4c 44 4d 49 41 20 36 2c 7b |vol.%..LDMIA 6,{| 00005400 36 2d 38 7d 0d 25 e4 0e 41 44 44 20 36 2c 36 2c |6-8}.%..ADD 6,6,| 00005410 23 31 0d 25 ee 0d 4d 55 4c 20 31 2c 36 2c 31 0d |#1.%..MUL 1,6,1.| 00005420 25 f8 12 4d 4f 56 20 31 2c 31 2c 4c 53 52 20 23 |%..MOV 1,1,LSR #| 00005430 39 0d 26 02 10 52 53 42 20 31 2c 31 2c 23 31 32 |9.&..RSB 1,1,#12| 00005440 37 0d 26 0c 0d 2e 66 69 6c 6c 6c 6f 6f 70 0d 26 |7.&...fillloop.&| 00005450 16 15 41 44 44 20 32 2c 32 2c 32 2c 4c 53 4c 20 |..ADD 2,2,2,LSL | 00005460 23 31 36 0d 26 20 18 4c 44 52 42 20 30 2c 5b 35 |#16.& .LDRB 0,[5| 00005470 5d 2c 32 2c 4c 53 52 20 23 32 37 0d 26 2a 15 53 |],2,LSR #27.&*.S| 00005480 55 42 53 20 30 2c 30 2c 31 2c 4c 53 4c 20 23 31 |UBS 0,0,1,LSL #1| 00005490 0d 26 34 0e 4d 4f 56 4d 49 20 30 2c 23 30 0d 26 |.&4.MOVMI 0,#0.&| 000054a0 3e 12 53 54 52 42 20 30 2c 5b 31 32 5d 2c 31 31 |>.STRB 0,[12],11| 000054b0 0d 26 48 05 5d 0d 26 52 0e e7 20 72 6c 65 6e 3e |.&H.].&R.. rlen>| 000054c0 32 20 8c 0d 26 5c 0c 20 5b 4f 50 54 20 70 25 0d |2 ..&\. [OPT p%.| 000054d0 26 66 0e 20 2e 72 6f 75 6e 64 69 6e 67 0d 26 70 |&f. .rounding.&p| 000054e0 0c 20 43 4d 50 20 35 2c 38 0d 26 7a 10 20 53 55 |. CMP 5,8.&z. SU| 000054f0 42 47 45 20 35 2c 35 2c 37 0d 26 84 11 20 42 47 |BGE 5,5,7.&.. BG| 00005500 45 20 72 6f 75 6e 64 69 6e 67 0d 26 8e 06 20 5d |E rounding.&.. ]| 00005510 0d 26 98 05 cc 0d 26 a2 0c 20 5b 4f 50 54 20 70 |.&....&.. [OPT p| 00005520 25 0d 26 ac 0c 20 43 4d 50 20 35 2c 38 0d 26 b6 |%.&.. CMP 5,8.&.| 00005530 0f 20 42 47 45 20 70 61 64 6f 75 74 0d 26 c0 06 |. BGE padout.&..| 00005540 20 5d 0d 26 ca 05 cd 0d 26 d4 0b 5b 4f 50 54 20 | ].&....&..[OPT | 00005550 70 25 0d 26 de 14 42 49 43 20 32 2c 32 2c 23 26 |p%.&..BIC 2,2,#&| 00005560 46 38 3c 3c 32 34 0d 26 e8 0d 43 4d 50 20 31 32 |F8<<24.&..CMP 12| 00005570 2c 31 30 0d 26 f2 10 42 4c 54 20 66 69 6c 6c 6c |,10.&..BLT filll| 00005580 6f 6f 70 0d 26 fc 0f 53 55 42 53 20 34 2c 34 2c |oop.&..SUBS 4,4,| 00005590 23 31 0d 27 06 11 53 54 4d 49 42 20 39 2c 7b 32 |#1.'..STMIB 9,{2| 000055a0 2d 35 7d 0d 27 10 0e 4d 4f 56 50 4c 20 30 2c 23 |-5}.'..MOVPL 0,#| 000055b0 38 0d 27 1a 0e 4d 4f 56 4d 49 20 30 2c 23 32 0d |8.'..MOVMI 0,#2.| 000055c0 27 24 16 4c 44 4d 46 44 20 31 33 21 2c 7b 37 2c |'$.LDMFD 13!,{7,| 000055d0 38 2c 50 43 7d 0d 27 2e 05 5d 0d 27 38 0e e7 20 |8,PC}.'..].'8.. | 000055e0 72 6c 65 6e 3d 32 20 8c 0d 27 42 0c 20 5b 4f 50 |rlen=2 ..'B. [OP| 000055f0 54 20 70 25 0d 27 4c 0c 20 2e 70 61 64 6f 75 74 |T p%.'L. .padout| 00005600 0d 27 56 13 20 53 54 52 42 20 30 2c 5b 31 32 5d |.'V. STRB 0,[12]| 00005610 2c 31 31 0d 27 60 0e 20 43 4d 50 20 31 32 2c 31 |,11.'`. CMP 12,1| 00005620 30 0d 27 6a 0f 20 42 4c 54 20 70 61 64 6f 75 74 |0.'j. BLT padout| 00005630 0d 27 74 0d 20 4d 4f 56 20 30 2c 23 32 0d 27 7e |.'t. MOV 0,#2.'~| 00005640 17 20 4c 44 4d 46 44 20 31 33 21 2c 7b 37 2c 38 |. LDMFD 13!,{7,8| 00005650 2c 50 43 7d 0d 27 88 06 20 5d 0d 27 92 05 cd 0d |,PC}.'.. ].'....| 00005660 27 9c 0b 5b 4f 50 54 20 70 25 0d 27 a6 0c 2e 67 |'..[OPT p%.'...g| 00005670 61 74 65 6f 66 66 0d 27 b0 0c 4d 4f 56 20 30 2c |ateoff.'..MOV 0,| 00005680 23 30 0d 27 ba 0a 2e 66 6c 75 73 68 0d 27 c4 12 |#0.'...flush.'..| 00005690 53 54 52 42 20 30 2c 5b 31 32 5d 2c 31 31 0d 27 |STRB 0,[12],11.'| 000056a0 ce 12 53 54 52 42 20 30 2c 5b 31 32 5d 2c 31 31 |..STRB 0,[12],11| 000056b0 0d 27 d8 12 53 54 52 42 20 30 2c 5b 31 32 5d 2c |.'..STRB 0,[12],| 000056c0 31 31 0d 27 e2 12 53 54 52 42 20 30 2c 5b 31 32 |11.'..STRB 0,[12| 000056d0 5d 2c 31 31 0d 27 ec 0d 43 4d 50 20 31 32 2c 31 |],11.'..CMP 12,1| 000056e0 30 0d 27 f6 0d 42 4c 54 20 66 6c 75 73 68 0d 28 |0.'..BLT flush.(| 000056f0 00 0c 4d 4f 56 20 30 2c 23 31 0d 28 0a 12 4c 44 |..MOV 0,#1.(..LD| 00005700 4d 46 44 20 31 33 21 2c 7b 50 43 7d 0d 28 14 05 |MFD 13!,{PC}.(..| 00005710 3a 0d 28 1e 10 2e 73 6c 6f 74 20 45 51 55 44 20 |:.(...slot EQUD | 00005720 30 0d 28 28 15 2e 6c 6f 67 61 6d 70 70 74 72 20 |0.((..logampptr | 00005730 45 51 55 44 20 30 0d 28 32 11 2e 73 74 61 72 74 |EQUD 0.(2..start| 00005740 20 45 51 55 44 20 30 0d 28 3c 12 2e 6c 65 6e 20 | EQUD 0.(<..len | 00005750 45 51 55 44 20 6c 65 6e 25 0d 28 46 12 2e 76 6f |EQUD len%.(F..vo| 00005760 6c 20 45 51 55 44 20 73 76 6f 6c 0d 28 50 14 2e |l EQUD svol.(P..| 00005770 72 6c 65 6e 25 20 45 51 55 44 20 72 6c 65 6e 0d |rlen% EQUD rlen.| 00005780 28 5a 0f 2e 65 6e 64 20 45 51 55 44 20 30 0d 28 |(Z..end EQUD 0.(| 00005790 64 15 2e 6f 66 66 73 65 74 20 45 51 55 44 20 50 |d..offset EQUD P| 000057a0 25 2b 34 0d 28 6e 06 5d ed 0d 28 78 11 6d 63 6c |%+4.(n.]..(x.mcl| 000057b0 65 6e 25 3d 4f 25 2d 6d 63 25 0d 28 82 05 e1 0d |en%=O%-mc%.(....| 000057c0 ff |.| 000057c1