Home » Archimedes archive » Acorn User » AU 1994-05.adf » !StarInfo_StarInfo » Daly/!Keyboard/!RunImage

Daly/!Keyboard/!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-05.adf » !StarInfo_StarInfo
Filename: Daly/!Keyboard/!RunImage
Read OK:
File size: 9A5D bytes
Load address: 0000
Exec address: 0000
File contents
   10 REM     >!RunImage (Keyboard)
   20 REM by  Thomas Daly
   30 REM (c) AU May 1994
   40
   50 PROCinitall
   60 ON ERROR PROCreport_err(REPORT$,ERR,ERL):IF finish% PROCclosedown:END
   70
   80 REPEAT
   90 SYS "Wimp_Poll",mask%,blk% TO A%
  100 CASE A% OF
  110 WHEN 0:
  120 IF keydown%<>&FF THEN
  130 SYS "OS_Byte",&7A TO ,kcode%
  140 IF kcode%=&FF PROCdecode_drag:mask%=&80033:keydown%=&FF
  150 ENDIF
  160 IF dragbar%<>0 THEN
  170 PROCget_pointer_info
  180 IF dragbar%=&FF PROCget_window_state(con%)
  190 dragbar%=(((mousex%-x0%)DIV 23)*23)+12
  200 IF dragbar%<>olddragbar% THEN
  210 PROCget_icon_state(con%,19)
  220 blk%!16=dragbar%:SYS "Wimp_DeleteIcon",,blk%
  230 blk%!4=con%:SYS "Wimp_CreateIcon",,blk%+4
  240 SYS "Wimp_ForceRedraw",con%,blk%!8,blk%!12,(x1%-x0%)-20,blk%!20
  250 olddragbar%=dragbar%
  260 ENDIF
  270 ENDIF
  280 WHEN 2:PROCopen_window
  290 WHEN 3:PROCclose_window(!blk%)
  300 WHEN 6:PROCmouse_click(!blk%,blk%!4,blk%!8,blk%!12,blk%!16,FALSE)
  310 WHEN 7:PROCdecode_drag
  320 WHEN 8:PROCkey_pressed(!blk%,blk%!4,blk%!24)
  330 WHEN 9:PROCdecode_menu(blk%)
  340 WHEN 11:IF !blk%=main% ifneeded%=TRUE:suneeded%=TRUE
  350 WHEN 12:IF !blk%=main% ifneeded%=FALSE
  360 WHEN 17,18:PROCreceive_mess
  370 ENDCASE
  380 UNTIL finish%
  390 PROCclosedown:END
  400
  410 DEFPROCreceive_mess
  420 FOR N%=0 TO !blk%-1 STEP 4:messblk%!N%=blk%!N%:NEXT
  430 CASE blk%!16 OF
  440 WHEN 0:finish%=TRUE
  450 WHEN 1
  460 CASE blk%!40 OF
  470 WHEN &DF9,&CB5,&ED0,&D3C,&FFD,&FFA,&10C
  480 SYS "XOS_ReadVarVal","Wimp$Scrap",,-1,0,3 TO ,,N%
  490 IF N%=0 PROCreport_err("Wimp$Scrap not defined",100,ERL):ENDPROC
  500 leafname$=FNstring(blk%+44)
  510 IF FNfile_present(leafname$,blk%!40)=TRUE PROCreport_err("Sample name '"+leafname$+"' already present",100,ERL):ENDPROC
  520 !messblk%=64:messblk%!12=messblk%!8:messblk%!16=2
  530 messblk%!36=-1:$(messblk%+44)="<Wimp$Scrap>"+CHR$0
  540 SYS "Wimp_SendMessage",17,messblk%,messblk%!4
  550 scrap%=messblk%!8
  560 ENDCASE
  570 WHEN 2
  580 IF blk%!12<>saveref% ERROR 1,"Unexpected DataSave packet received"
  590 IF blk%!40<>&10C ERROR 1,"Unexpected DataSave filetype received"
  600 filename$=FNstring(blk%+44)
  610 IF menubut%<>1 SYS "Wimp_CreateMenu",,-1
  620 menubut%=0
  630 IF blk%!36<>-1 PROCkeyboarddataout(filename$,TRUE) ELSE PROCkeyboarddataout(filename$,FALSE)
  640 messblk%!12=messblk%!8:messblk%!16=3
  650 SYS "Wimp_SendMessage",17,messblk%,messblk%!4
  660 WHEN 3
  670 filename$=FNstring(blk%+44):filetype%=blk%!40:PROCload_file
  680 WHEN 5
  690 IF blk%!40=&10C filename$=FNstring(blk%+44):filetype%=&10C:PROCload_file
  700 WHEN 8
  710 IF changed% THEN
  720 blk%!12=blk%!8:SYS "Wimp_SendMessage",19,blk%
  730 PROCmessage_box(3)
  740 ENDIF
  750 WHEN 10:PROCdesksave
  760 WHEN &400C1:PROCgetmodeinfo
  770 ENDCASE
  780 ENDPROC
  790
  800 DEFFNstring(a%)
  810 LOCAL d$:d$="":WHILE ?a%<>0:d$+=CHR$?a%:a%+=1:ENDWHILE:=d$
  820
  830 DEFPROCinitall
  840 ON ERROR PROCreport_err(REPORT$,ERR,ERL):PROCclosedown:END
  850 LOCAL N%,N2%,f$
  860 SYS "Hourglass_On"
  870 SYS "Wimp_Initialise",200,&4B534154,"Keyboard" TO version%
  880 code%=0:samplebase%=0
  890 :
  900 DIM blk% &1000,buf% &1000,fmitem% 20,mst% 64,menudata% &600,mblk% 36,messblk% 256,slotblk% 31,vlistblk% 703
  910 bufstart%=buf%:mdatastart%=menudata%:vlstart%=vlistblk%
  920 version$="1.32 (16-Oct-93)":mask%=&80033:finish%=FALSE
  930 controls%=FALSE:sampopen%=FALSE:mainopen%=FALSE
  940 ifneeded%=TRUE:suneeded%=TRUE:dragbar%=0:olddragbar%=0
  950 x0%=0:x1%=0:y0%=0:y1%=0:wf%=0
  960 mhan%=0:mousex%=0:mousey%=0:mbut%=0:micon%=0:menubut%=0
  970 menuwidth%=174:keystat%=0:redrawreq%=TRUE
  980 maction%=0
  990 :
 1000 DIM pathname$(31),size%(31),type%(31),sampaddr%(31),sstereo%(7),loadedvoices$(31)
 1010 filename$="":filetype%=0:next%=0:saveref%=0:leafname$="":scrap%=0
 1020 :
 1030 DIM mv%(32),pitchtable%(11),voice$(7)
 1040 chan%=1:oct%=0:vlsel%=0:keydown%=&FF:salone%=FALSE
 1050 dura%=20:trans%=0:volume%=-12:count%=0:tunoct%=0:tunsemi%=0
 1060 keymap$="ZSXDCVGBHNJMQ2W3ER5T6Y7UI9O0P[=]�\":showkeys%=TRUE
 1070 savechoices%=FALSE:autoinst%=TRUE:changed%=FALSE
 1080 :
 1090 code%=FNclaim(&E00)
 1100 IF code%=0 ERROR 1,"Not enough room in RMA"
 1110 OSCLI "Load <Keyboard$Dir>.Code "+STR$~code%
 1120 :
 1130 FOR N%=0 TO 11:READ pitchtable%(N%):NEXT
 1140 DATA &4000,&4155,&42AA,&4400,&4555,&46AA,&4800,&49AA,&4AAA,&4C00,&4D55,&4EAA
 1150 :
 1160 N%=OPENIN "<Keyboard$Dir>.Sprites":N2%=EXT#N%+16:CLOSE#N%
 1170 DIM sprites% N2%
 1180 !sprites%=N2%:sprites%!8=1
 1190 SYS "OS_SpriteOp",&109,sprites%
 1200 SYS "OS_SpriteOp",&10A,sprites%,"<Keyboard$Dir>.Sprites"
 1210 :
 1220 PROCgetmodeinfo
 1230 SYS "Wimp_OpenTemplate",,"<Keyboard$Dir>.Templates"
 1240 con%=FNcreate_window("Toolbox",FALSE)
 1250 main%=FNcreate_window("Main",TRUE)
 1260 info%=FNcreate_window("Info",FALSE)
 1270 samples%=FNcreate_window("Samples",FALSE)
 1280 samplist%=FNcreate_window("SampList",FALSE)
 1290 savebox%=FNcreate_window("save",FALSE)
 1300 sampinfo%=FNcreate_window("SampInfo",FALSE)
 1310 message%=FNcreate_window("Message",FALSE)
 1320 tuning%=FNcreate_window("Tuning",FALSE)
 1330 SYS "Wimp_CloseTemplate"
 1340 PROCset_icon(info%,11,version$)
 1350 PROCset_icon(message%,0,"Are you sure? Your current choices are not saved")
 1360 winmenu%=FNmenutree(3,FALSE)
 1370 icmenu%=FNmenutree(1,FALSE)
 1380 vlmenu%=FNmenutree(1,TRUE)
 1390 PROClinks(winmenu%,&600)
 1400 :
 1410 samplebase%=0:sampoffset%=0
 1420 :
 1430 SYS "Sound_InstallVoice",0,mv%(0) TO curvoice$
 1440 kiconbar%=FNiconbar
 1450 PROCtogglechars
 1460 SYS "OS_GetEnv" TO f$
 1470 IF INSTR(f$," ",13)<>0 AND RIGHT$(f$,1)<>" " THEN
 1480 N%=LEN f$:WHILE MID$(f$,N%,1)<>" " AND N%>1:N%-=1:ENDWHILE
 1490 PROCkeyboarddatain(RIGHT$(f$,LENf$-N%))
 1500 ENDIF
 1510 SYS "Hourglass_Off"
 1520 *Pointer
 1530 ENDPROC
 1540
 1550 DATA Keyboard,6,Sample '',4,Select all,0,Save,0,Voice,0,Tuning,0,Options,0
 1560 DATA Selection,5,Info,0,Delete  ^X,0,Install ^I,0,Remove  ^R,0,Clear   ^Z,0
 1570 DATA Options,5,Auto install,1,Save choices,0,Stand alone,0,Controls...  ^C,0,Samples...   ^S,0
 1580 DATA 5,Keyboard,0,Selection,Keyboard,2,#savebox%,Keyboard,4,#tuning%,Keyboard,5,Options,Selection,0,#sampinfo%
 1590 :
 1600 DATA Keyboard,2,Info,0,Quit,0
 1610 DATA 1,Keyboard,0,#info%
 1620 :
 1630 DATA Voice list,32
 1640 DATA 0
 1650 DATA 1,Keyboard,3,Voice list
 1660
 1670 DEFPROCmouse_click(mousex%,mousey%,but%,han%,icon%,key%)
 1680 LOCAL pitch%,text$,i%
 1690 :
 1700 IF but% AND 2 THEN
 1710 CASE han% OF
 1720 WHEN -2
 1730 curmenu%=icmenu%:cmx%=mousex%-80:cmy%=184
 1740 PROCshowmenu
 1750 WHEN main%: PROCfirst_items(TRUE,TRUE,main%)
 1760 WHEN samples%: PROCfirst_items(FALSE,FALSE,samples%)
 1770 WHEN samplist%
 1780 IF (next%>0 AND icon%>-1) AND FNicons_selected<2 THEN
 1790 PROCentire_list(1)
 1800 PROCupdate_icon(han%,icon%,%1<<21,%1<<21)
 1810 ENDIF
 1820 PROCfirst_items(FALSE,FALSE,samplist%)
 1830 ENDCASE
 1840 IF han%=main% OR han%=samplist% OR han%=samples% THEN
 1850 PROCupdatevoicelist:PROCsetsavefield
 1860 curmenu%=winmenu%:cmx%=mousex%:cmy%=mousey%
 1870 PROCshowmenu
 1880 ENDIF
 1890 ENDIF
 1900 :
 1910 CASE han% OF
 1920 WHEN -2
 1930 IF but% AND 4 THEN
 1940 IF mainopen% THEN
 1950 PROCpopup_window(main%,0)
 1960 ELSE
 1970 i%=FALSE
 1980 SYS "Wimp_GetCaretPosition",,blk%
 1990 IF !blk%=-1 i%=TRUE
 2000 PROCpopup_window(main%,1):mainopen%=TRUE
 2010 IF i% PROCgetif
 2020 ENDIF
 2030 ENDIF
 2040 :
 2050 WHEN main%
 2060 IF but%=4 OR but%=1 THEN
 2070 IF icon%=-1 PROCgetif
 2080 ENDIF
 2090 IF icon%>=0 THEN
 2100 IF icon%>35 icon%=35-(icon%-36)
 2110 IF but%=4 AND keydown%=&FF AND dragbar%<>&FF THEN
 2120 PROCupdate_icon(main%,icon%,%1<<21,0)
 2130 PROCgetif
 2140 IF suneeded% PROCsetsoundsys:suneeded%=FALSE
 2150 pitch%=pitchtable%((35-icon%)MOD 12)+(trans%*&156)+(&1000*((35-icon%)DIV 12))+((oct%-1)*&1000)
 2160 IF pitch%>0 AND pitch%<=&7EAA SOUND chan%,volume%,pitch%,dura%
 2170 keydown%=icon%
 2180 IF NOT key% THEN
 2190 blk%!4=7:blk%!24=0:blk%!28=0:blk%!32=swidth%:blk%!36=sheight%
 2200 SYS "Wimp_DragBox",,blk%
 2210 ENDIF
 2220 ENDIF
 2230 ENDIF
 2240 :
 2250 WHEN con%
 2260 IF but%<>2 THEN
 2270 PROCcheckchange(TRUE)
 2280 IF but%=1 THEN
 2290 IF icon% MOD 2=1 icon%-=1 ELSE icon%+=1
 2300 ENDIF
 2310 PROCsetvars:CASE icon% OF
 2320 WHEN 21:
 2330 oct%+=1:IF oct%>=5 oct%=-4
 2340 PROCset_icon(con%,23,STR$(oct%))
 2350 WHEN 22:
 2360 oct%-=1:IF oct%<=-5 oct%=4
 2370 PROCset_icon(con%,23,STR$(oct%))
 2380 WHEN 24:
 2390 trans%+=1:IF trans%>=12 trans%=-11
 2400 PROCset_icon(con%,26,STR$(trans%))
 2410 WHEN 25:
 2420 trans%-=1:IF trans%<=-12 trans%=11
 2430 PROCset_icon(con%,26,STR$(trans%))
 2440 WHEN 27:
 2450 chan%+=1:IF chan%>=9 chan%=1
 2460 PROCset_icon(con%,32,STR$(chan%))
 2470 suneeded%=TRUE
 2480 WHEN 28:
 2490 chan%-=1:IF chan%<=0 chan%=8
 2500 PROCset_icon(con%,32,STR$(chan%))
 2510 suneeded%=TRUE
 2520 WHEN 29:
 2530 dura%+=5:IF dura%>=256 dura%=0
 2540 PROCset_icon(con%,31,STR$(dura%))
 2550 WHEN 30:
 2560 dura%-=5:IF dura%<0 dura%=255
 2570 PROCset_icon(con%,31,STR$(dura%))
 2580 WHEN 20,34: PROCtogglechars
 2590 PROCupdate_icon(con%,34,%1<<21,%0<<21)
 2600 WHEN 18,19
 2610 PROCget_window_state(con%):PROCget_pointer_info
 2620 IF icon%=19 OR (icon%=18 AND (mousex%>x0%+46 AND mousex%<x1%-46 AND mousey%>y0%+62 AND mousey%<y0%+86)) THEN
 2630 blk%!4=7:blk%!24=x0%+56:blk%!28=y0%+66:blk%!32=x1%-56:blk%!36=y0%+82
 2640 SYS "Wimp_DragBox",,blk%
 2650 dragbar%=&FF:mask%=&80032
 2660 ENDIF
 2670 ENDCASE
 2680 ENDIF
 2690 :
 2700 WHEN samplist%,samples%
 2710 IF but%=4 OR but%=1 THEN
 2720 IF icon%=-1 OR han%=samples% PROCentire_list(1)
 2730 ENDIF
 2740 :
 2750 WHEN savebox%
 2760 CASE icon% OF
 2770 WHEN 0: IF but%<>1 SYS "Wimp_CreateMenu",,-1
 2780 PROCkeyboarddataout($FNiconaddr(savebox%,2),TRUE)
 2790 WHEN 3: PROCdrag_icon(mousex%,mousey%,savebox%,3)
 2800 ENDCASE
 2810 :
 2820 WHEN tuning%
 2830 IF but%<>2 THEN
 2840 tunoct%=VAL($FNiconaddr(tuning%,6))
 2850 tunsemi%=VAL($FNiconaddr(tuning%,9))
 2860 CASE icon% OF
 2870 WHEN 2
 2880 tunoct%+=1:IF tunoct%>=4 tunoct%=-3
 2890 PROCset_icon(tuning%,6,STR$(tunoct%))
 2900 WHEN 4
 2910 tunoct%-=1:IF tunoct%<=-4 tunoct%=3
 2920 PROCset_icon(tuning%,6,STR$(tunoct%))
 2930 WHEN 13
 2940 tunsemi%+=1:IF tunsemi%>=12 tunsemi%=-11
 2950 PROCset_icon(tuning%,9,STR$(tunsemi%))
 2960 WHEN 11
 2970 tunsemi%-=1:IF tunsemi%<=-12 tunsemi%=11
 2980 PROCset_icon(tuning%,9,STR$(tunsemi%))
 2990 WHEN 15
 3000 PROCcheckchange(TRUE)
 3010 *Tuning 0
 3020 OSCLI "Tuning "+STR$((tunoct%*4096)+(tunsemi%*341))
 3030 IF but%<>1 SYS "Wimp_CreateMenu",,-1
 3040 ENDIF
 3050 ENDCASE
 3060 :
 3070 WHEN message%
 3080 PROCclose_window(message%)
 3090 SYS "OS_Byte",&C9,keystat%,0
 3100 MOUSE RECTANGLE 0,0,swidth%,sheight%
 3110 IF redrawreq%=FALSE PROCshowmenu
 3120 IF icon%=2 THEN
 3130  CASE maction% OF
 3140  WHEN 1: finish%=TRUE
 3150  WHEN 2: PROCkeyboarddatain(filename$)
 3160  WHEN 3
 3170  changed%=FALSE
 3180  SYS "Wimp_GetCaretPosition",,blk%
 3190  blk%!24=&1FC
 3200  SYS "Wimp_SendMessage",8,blk%,messblk%!4
 3210  ENDCASE
 3220 ELSE
 3230  CASE maction% OF
 3240  WHEN 2: IF scrap%<>0 OSCLI "Delete <Wimp$Scrap>":scrap%=0
 3250  ENDCASE
 3260 ENDIF
 3270 maction%=0
 3280 ENDCASE
 3290 ENDPROC
 3300
 3310 DEFPROCfirst_items(g1%,g2%,han%)
 3320 LOCAL a%
 3330 IF g1%=TRUE OR FNicons_selected=0 THEN
 3340 PROCmenu_text("Sample ''",winmenu%+28,1)
 3350 winmenu%!16=menuwidth%:g1%=TRUE
 3360 ELSE
 3370 IF han%<>main% THEN
 3380 IF FNicons_selected=1 THEN
 3390 SYS "Wimp_WhichIcon",samplist%,blk%+128,%1<<21,%1<<21
 3400 text$="Sample '"+FNicontext(samplist%,!(blk%+128))+"'"
 3410 PROCmenu_text(text$,winmenu%+28,0)
 3420 a%=((LEN text$)*16)+14
 3430 IF a%>menuwidth% winmenu%!16=a% ELSE winmenu%!16=menuwidth%
 3440 PROCupdateinfobox(!(blk%+128))
 3450 ELSE
 3460 PROCmenu_text("Selection",winmenu%+28,0)
 3470 winmenu%!16=menuwidth%
 3480 ENDIF
 3490 PROCselection_items
 3500 ENDIF
 3510 ENDIF
 3520 winmenu%!36=FNSpecItem(g1%,winmenu%!36,22)
 3530 IF next%>0 winmenu%!60=FNSpecItem(g2%,winmenu%!60,22) ELSE winmenu%!60=FNSpecItem(TRUE,winmenu%!60,22)
 3540 ENDPROC
 3550
 3560 DEFPROCselection_items
 3570 LOCAL a%,b%,i%:a%=FALSE:b%=FALSE:i%=FALSE
 3580 IF FNcheck_list(0)=TRUE OR count%>=32 a%=TRUE
 3590 IF FNcheck_list(1)=TRUE b%=TRUE
 3600 winmenu%!256=FNSpecItem(a%,winmenu%!256,22)
 3610 winmenu%!280=FNSpecItem(b%,winmenu%!280,22)
 3620 IF FNicons_selected>1 i%=TRUE
 3630 winmenu%!208=FNSpecItem(i%,winmenu%!208,22)
 3640 ENDPROC
 3650
 3660 DEFPROCmenu_width(p%,len%)
 3670 IF len%>16 !p%=(len%*16)+1F4 ELSE !p%=(16*16)+14
 3680 ENDPROC
 3690
 3700 DEFPROCkey_pressed(han%,icon%,ch%)
 3710 LOCAL p%,k%,ci%,s%:p%=FALSE
 3720 IF han%<>savebox% AND han%<>tuning% SYS "Wimp_CreateMenu",,-1
 3730 :
 3740 CASE han% OF
 3750 WHEN con%
 3760 s%=FNshortcuts
 3770 CASE ch% OF
 3780 WHEN &18F
 3790 CASE icon% OF
 3800 WHEN 23: ci%=31
 3810 WHEN 26: ci%=23
 3820 WHEN 32: ci%=26
 3830 WHEN 31: ci%=32
 3840 ENDCASE
 3850 PROCcaret(con%,ci%)
 3860 WHEN &18E,&D
 3870 CASE icon% OF
 3880 WHEN 23: ci%=26
 3890 WHEN 26: ci%=32
 3900 WHEN 32: ci%=31
 3910 WHEN 31: ci%=23
 3920 ENDCASE
 3930 PROCcaret(con%,ci%)
 3940 OTHERWISE
 3950 IF s%=FALSE p%=TRUE
 3960 ENDCASE
 3970 :
 3980 WHEN savebox%
 3990 IF ch%=&D PROCmouse_click(0,0,4,savebox%,0,0) ELSE p%=TRUE
 4000 :
 4010 WHEN tuning%
 4020 p%=TRUE
 4030 IF ch%=&D AND icon%=9 THEN
 4040  PROCmouse_click(0,0,4,tuning%,15,0):p%=FALSE
 4050 ELSE
 4060  IF ch%=&18F OR ch%=&18E OR ch%=&D THEN
 4070  IF icon%=6 PROCcaret(tuning%,9) ELSE PROCcaret(tuning%,6)
 4080  p%=FALSE
 4090  ENDIF
 4100 ENDIF
 4110 :
 4120 WHEN main%
 4130 s%=FNshortcuts
 4140 IF ch%>96 AND ch%<123 ch%=ch%-32
 4150 k%=INSTR(keymap$,CHR$(ch%))
 4160 IF k%>0 THEN
 4170 IF keydown%=&FF THEN
 4180 PROCmouse_click(0,0,4,main%,36-k%,TRUE)
 4190 keydown%=36-k%:mask%=&80032
 4200 ENDIF
 4210 IF keydown%<>&FF AND (36-k%<>keydown%) THEN
 4220 PROCdecode_drag
 4230 PROCmouse_click(0,0,4,main%,36-k%,TRUE)
 4240 keydown%=36-k%:mask%=&80032
 4250 ENDIF
 4260 ELSE
 4270 IF s%=FALSE p%=TRUE
 4280 ENDIF
 4290 ENDCASE
 4300 IF p% SYS "Wimp_ProcessKey",ch%
 4310 ENDPROC
 4320
 4330 DEFFNshortcuts
 4340 LOCAL a%:a%=TRUE
 4350 CASE ch% OF
 4360 WHEN &183
 4370 PROCsetsavefield
 4380 PROCget_pointer_info
 4390 SYS "Wimp_CreateMenu",,savebox%,mousex%,mousey%
 4400 WHEN 127,24
 4410 IF FNicons_selected>0 AND next%>0 THEN
 4420 SYS "Hourglass_On"
 4430 PROCentire_list(2):PROCcheckchange(FALSE)
 4440 PROCentire_list(3)
 4450 PROCfirst_items(TRUE,FALSE,samplist%)
 4460 PROCupdatevoicelist
 4470 SYS "Hourglass_Off"
 4480 ENDIF
 4490 WHEN 26
 4500 PROCentire_list(1)
 4510 PROCfirst_items(TRUE,FALSE,samplist%)
 4520 WHEN 1
 4530 PROCentire_list(0)
 4540 PROCfirst_items(FALSE,FALSE,samplist%)
 4550 WHEN 19
 4560 IF sampopen%=FALSE sampopen%=TRUE:winmenu%!444=FNSpecItem(sampopen%,winmenu%!444,0)
 4570 PROCpopup_window(samples%,0)
 4580 WHEN 3
 4590 PROCpopup_window(con%,0)
 4600 IF controls%=FALSE controls%=TRUE:winmenu%!420=FNSpecItem(controls%,winmenu%!420,0)
 4610 WHEN 22
 4620 PROCget_pointer_info
 4630 curmenu%=vlmenu%:cmx%=mousex%:cmy%=mousey%
 4640 PROCupdatevoicelist:PROCshowmenu
 4650 WHEN 9
 4660 PROCentire_list(5)
 4670 PROCupdatevoicelist
 4680 WHEN 18
 4690 PROCentire_list(6)
 4700 PROCupdatevoicelist
 4710 WHEN 20
 4720 PROCget_pointer_info
 4730 SYS "Wimp_CreateMenu",,tuning%,mousex%,mousey%
 4740 OTHERWISE
 4750 a%=FALSE
 4760 ENDCASE
 4770 =a%
 4780
 4790 DEFPROCsetsavefield
 4800 LOCAL t$,a$
 4810 PROCget_window_info(main%)
 4820 IF (blk%!80 AND %100000000)=0 ERROR 1,"Window title bar is not indirected"
 4830 t$=$(blk%!76)
 4840 IF changed% t$=LEFT$(t$,LENt$-2)
 4850 IF LEFT$(t$,8)="Keyboard" PROCset_icon(savebox%,2,"SampleList") ELSE PROCset_icon(savebox%,2,t$)
 4860 ENDPROC
 4870
 4880 DEFPROCcaret(han%,i%)
 4890 LOCAL a%
 4900 a%=LEN($FNiconaddr(han%,i%))
 4910 SYS "Wimp_SetCaretPosition",han%,i%,0,0,-1,a%
 4920 ENDPROC
 4930
 4940 DEFPROCset_icon(han%,i%,value$)
 4950 LOCAL A%
 4960 A%=FNiconaddr(han%,i%)
 4970 $A%=value$
 4980 PROCupdate_icon(han%,i%,0,0)
 4990 SYS "Wimp_GetCaretPosition",,blk%
 5000 IF !blk%=han% AND blk%!4=i% THEN
 5010 A%=LEN value$
 5020 SYS "Wimp_SetCaretPosition",han%,i%,,,-1,A%
 5030 ENDIF
 5040 ENDPROC
 5050
 5060 DEFPROCupdate_icon(han%,i%,e%,c%)
 5070 blk%!0=han%:blk%!4=i%
 5080 blk%!8=e%:blk%!12=c%
 5090 SYS "Wimp_SetIconState",,blk%
 5100 ENDPROC
 5110
 5120 DEFFNiconaddr(h%,i%)
 5130 PROCget_icon_state(h%,i%)
 5140 IF (blk%!24 AND %100000000)=0 ERROR 1,"Icon is not indirected"
 5150 =blk%!28
 5160
 5170 DEFFNicontext(h%,i%)
 5180 PROCget_icon_state(h%,i%)
 5190 IF (blk%!24 AND %100000000)=1 ERROR 1,"Icon is indirected"
 5200 =$(blk%+28)
 5210
 5220 DEFPROCclose_window(han%)
 5230 !blk%=han%
 5240 SYS "Wimp_CloseWindow",,blk%
 5250 CASE han% OF
 5260 WHEN main%: mainopen%=FALSE:ifneeded%=TRUE
 5270 WHEN con%
 5280 controls%=FALSE
 5290 winmenu%!420=FNSpecItem(controls%,winmenu%!420,0)
 5300 WHEN samples%
 5310 PROCclose_window(samplist%):sampopen%=FALSE
 5320 winmenu%!444=FNSpecItem(sampopen%,winmenu%!444,0)
 5330 ENDCASE
 5340 ENDPROC
 5350
 5360 DEFPROCclosedown
 5370 LOCAL N%,a%
 5380 IF next%>0 THEN
 5390 FOR N%=0 TO next%-1
 5400 IF ?(code%+&9D0+N%)>0 PROCremove_sample(N%)
 5410 NEXT
 5420 ENDIF
 5430 IF samplebase%>0 SYS "OS_Module",7,,samplebase%
 5440 IF code%>0 SYS "OS_Module",7,,code%
 5450 SYS "Hourglass_Smash"
 5460 SYS "Wimp_CloseDown"
 5470 ENDPROC
 5480
 5490 DEFFNmenutree(menus%,voicelist%)
 5500 LOCAL N%,N2%,next%,menustart%,treestart%,text$,maxlen%,menuptr%
 5510 menuptr%=mdatastart%
 5520 treestart%=menuptr%
 5530 FOR N%=1 TO menus%
 5540 menustart%=menuptr%
 5550 READ text$:IF LEN text$>12 ERROR 1,"Menu title too long"
 5560 $menuptr%=text$:maxlen%=LEN text$
 5570 menuptr%?12=7:menuptr%?13=2:menuptr%?14=7:menuptr%?15=0
 5580 menuptr%!20=44:menuptr%!24=0:menuptr%+=28
 5590 count%=0
 5600 READ next%
 5610 FOR N2%=1 TO next%
 5620 PROCmenuitem:NEXT
 5630 menuptr%!-24=(menuptr%!-24) OR &80
 5640 menustart%!16=(maxlen%*16)+14
 5650 NEXT
 5660 IF voicelist%=FALSE THEN
 5670 mdatastart%=menuptr%
 5680 ELSE
 5690 IF count%=0 winmenu%!108=FNSpecItem(TRUE,winmenu%!108,22) ELSE winmenu%!108=FNSpecItem(FALSE,winmenu%!108,22)
 5700 mv%(count%)=0
 5710 ENDIF
 5720 IF mdatastart%>menudata%+&600 ERROR 1,"Menu data area full"
 5730 PROClinks(treestart%,mdatastart%-treestart%)
 5740 =treestart%
 5750
 5760 DEFPROCmenuitem
 5770 LOCAL text$,flag%,it%,f%
 5780 IF voicelist% THEN
 5790  SYS "Sound_InstallVoice",0,N2% TO f%
 5800  IF f%<>0 SYS "Sound_InstallVoice",0,N2% TO text$
 5810  IF f%<>0 THEN
 5820  mv%(count%)=N2%:count%+=1
 5830  ELSE
 5840  IF (N2%=32 AND count%=0) text$="****":f%=0 ELSE ENDPROC
 5850  ENDIF
 5860 ELSE
 5870  READ text$,flag%
 5880 ENDIF
 5890 menuptr%!0=0:menuptr%!4=-1:menuptr%!8=&07000021
 5900 IF voicelist% THEN
 5910 PROCmenu_text(text$,menuptr%,2)
 5920 ELSE
 5930 PROCmenu_text(text$,menuptr%,0)
 5940 ENDIF
 5950 IF flag% AND 2 !menuptr%=2 AND %111
 5960 IF flag% AND 1 !menuptr%=FNSpecItem(TRUE,!menuptr%,0)
 5970 IF flag% AND 4 menuptr%!8=FNSpecItem(TRUE,menuptr%!8,22)
 5980 menuptr%+=24
 5990 ENDPROC
 6000
 6010 DEFPROCmenu_text(t$,mptr%,p%)
 6020 LOCAL s%
 6030 IF LEN t$>21 t$=LEFT$(t$,21)
 6040 IF LEN t$<12 THEN
 6050  $(mptr%+12)=t$
 6060  mptr%!8=mptr%!8 AND NOT &100
 6070 ELSE
 6080  CASE p% OF
 6090  WHEN 1: s%=fmitem%
 6100  WHEN 2: s%=vlstart%:vlstart%+=(LENt$+1)
 6110  OTHERWISE: s%=FNtextspace(LENt$+1)
 6120  ENDCASE
 6130  $s%=t$
 6140  mptr%!12=s%:mptr%!16=-1:mptr%!20=LENt$+1
 6150  mptr%!8=mptr%!8 OR &100
 6160 ENDIF
 6170 IF LEN t$>maxlen% maxlen%=LEN t$
 6180 ENDPROC
 6190
 6200 DEFFNtextspace(L%)
 6210 bufstart%+=L%
 6220 IF bufstart%>(buf%+&1000) ERROR 1,"Buffer space full"
 6230 =bufstart%-L%
 6240
 6250 DEFPROClinks(datastart%,len%)
 6260 LOCAL ptr1%,ptr2%,nolinks%,N%,startmenu$,item%,destobj$
 6270 READ nolinks%:IF nolinks%=0 ENDPROC
 6280 FOR N%=1 TO nolinks%
 6290 READ startmenu$,item%,destobj$
 6300 ptr1%=FNmenustart(startmenu$,datastart%-1)
 6310 ptr1%+=28:ptr1%+=(item%*24)
 6320 IF LEFT$(destobj$,1)="#"THEN
 6330 ptr1%!4=EVAL(RIGHT$(destobj$,(LENdestobj$-1)))
 6340 ELSE
 6350 ptr2%=FNmenustart(destobj$,datastart%-1)
 6360 ptr1%!4=ptr2%
 6370 ENDIF
 6380 NEXT
 6390 ENDPROC
 6400
 6410 DEFFNmenustart(m$,p%)
 6420 REPEAT:p%+=1
 6430 IF p%>(datastart%+len%) ERROR 1,"Failed to link menu"
 6440 UNTIL $p%=m$ AND p%?12=7 AND p%?13=2 AND p%?14=7 AND p%?15=0:=p%
 6450
 6460 DEFPROCshowmenu
 6470 SYS "Wimp_CreateMenu",,curmenu%,cmx%,cmy%
 6480 rdmenu%=0
 6490 ENDPROC
 6500
 6510 DEFPROCdecode_menu(mselect%)
 6520 LOCAL p%,a%,v$:redrawreq%=TRUE
 6530 SYS "Wimp_DecodeMenu",,curmenu%,mselect%,mst%
 6540 IF (!mselect%=3 AND mselect%!4<>-1) OR curmenu%=vlmenu% THEN
 6550 IF curmenu%=vlmenu% p%=!mselect% ELSE p%=mselect%!4
 6560 IF p%<0 OR p%>32 ENDPROC
 6570 SYS "Sound_InstallVoice",0,mv%(p%) TO a%
 6580 IF a%<>0 SYS "Sound_InstallVoice",0,mv%(p%) TO v$ ELSE SYS "Sound_InstallVoice",0,1 TO v$
 6590 curvoice$=v$
 6600 IF a%=0 vlsel%=p%:PROCupdatevoicelist:PROCmenuredraw:PROCreport_err("Voice not found",100,ERL):ENDPROC
 6610 vlmenu%!(28+(vlsel%*24))=FNSpecItem(FALSE,vlmenu%!(28+(vlsel%*24)),0)
 6620 vlmenu%!(28+(p%*24))=FNSpecItem(TRUE,vlmenu%!(28+(p%*24)),0)
 6630 vlsel%=p%:suneeded%=TRUE
 6640 PROCcheckchange(TRUE)
 6650 ENDIF
 6660 CASE $mst% OF
 6670 WHEN "Options.Controls...  ^C"
 6680 PROCpopup_window(con%,0)
 6690 IF controls%=FALSE controls%=TRUE:winmenu%!420=FNSpecItem(controls%,winmenu%!420,0)
 6700 WHEN "Options.Samples...   ^S"
 6710 IF sampopen%=FALSE sampopen%=TRUE:winmenu%!444=FNSpecItem(sampopen%,winmenu%!444,0)
 6720 PROCpopup_window(samples%,0)
 6730 ENDCASE
 6740 CASE FNleafname($mst%) OF
 6750 WHEN "Quit"
 6760 IF changed%=TRUE PROCmessage_box(1):redrawreq%=FALSE ELSE finish%=TRUE
 6770 WHEN "Select all"
 6780 PROCentire_list(0)
 6790 PROCfirst_items(FALSE,FALSE,samplist%)
 6800 WHEN "Clear   ^Z"
 6810 PROCentire_list(1)
 6820 PROCfirst_items(TRUE,FALSE,samplist%)
 6830 WHEN "Auto install"
 6840 IF autoinst%=TRUE autoinst%=FALSE ELSE autoinst%=TRUE
 6850 winmenu%!348=FNSpecItem(autoinst%,winmenu%!348,0)
 6860 PROCcheckchange(TRUE)
 6870 WHEN "Save choices"
 6880 IF savechoices%=TRUE savechoices%=FALSE ELSE savechoices%=TRUE
 6890 winmenu%!372=FNSpecItem(savechoices%,winmenu%!372,0)
 6900 WHEN "Stand alone"
 6910 IF salone%=TRUE salone%=FALSE ELSE salone%=TRUE
 6920 winmenu%!396=FNSpecItem(salone%,winmenu%!396,0)
 6930 WHEN "Delete  ^X"
 6940 SYS "Hourglass_On"
 6950 PROCentire_list(2):PROCcheckchange(FALSE)
 6960 PROCentire_list(3)
 6970 PROCfirst_items(TRUE,FALSE,samplist%)
 6980 PROCupdatevoicelist
 6990 SYS "Hourglass_Off"
 7000 WHEN "Install ^I"
 7010 PROCentire_list(5)
 7020 PROCupdatevoicelist
 7030 PROCselection_items
 7040 PROCset_icon(sampinfo%,12,"Yes")
 7050 WHEN "Remove  ^R"
 7060 PROCentire_list(6)
 7070 PROCupdatevoicelist
 7080 PROCselection_items
 7090 PROCset_icon(sampinfo%,12,"No")
 7100 ENDCASE
 7110 PROCmenuredraw
 7120 ENDPROC
 7130
 7140 DEFPROCmenuredraw
 7150 PROCget_pointer_info:IF (mbut% AND 1) THEN
 7160 IF redrawreq%=TRUE PROCshowmenu
 7170 ELSE
 7180 redrawreq%=TRUE
 7190 ENDIF
 7200 ENDPROC
 7210
 7220 DEFPROCupdatevoicelist
 7230 LOCAL voice$
 7240 RESTORE 1630:vlstart%=vlistblk%
 7250 vlmenu%=FNmenutree(1,TRUE)
 7260 IF count%=0 vlsel%=0:curvoice$="":ENDPROC
 7270 vlsel%=-1:REPEAT:vlsel%+=1
 7280 SYS "Sound_InstallVoice",0,mv%(vlsel%) TO voice$
 7290 UNTIL voice$=curvoice$ OR mv%(vlsel%)=0 OR vlsel%>=31
 7300 IF vlsel%>(count%-1) vlsel%=0:curvoice$=""
 7310 vlmenu%!(28+(vlsel%*24))=FNSpecItem(TRUE,vlmenu%!(28+(vlsel%*24)),0)
 7320 suneeded%=TRUE
 7330 ENDPROC
 7340
 7350 DEFPROCget_pointer_info
 7360 SYS "Wimp_GetPointerInfo",,blk%
 7370 mousex%=!blk%:mousey%=blk%!4:mbut%=blk%!8:mhan%=blk%!12:micon%=blk%!16
 7380 ENDPROC
 7390
 7400 DEFPROCreport_err(r$,e%,el%)
 7410 LOCAL flag%,text$
 7420 IF scrap%<>0 SYS "XOS_File",6,"<Wimp$Scrap>":scrap%=0
 7430 !blk%=e%
 7440 :
 7450 $(blk%+4)=r$+CHR$0:finish%=FALSE
 7460 text$="Keyboard":flag%=%1
 7470 :
 7480 IF e%>=0 AND e%<=127 THEN
 7490 $(blk%+4)="Fatal internal error: "+r$+" (internal error code "+STR$e%+") "+CHR$0
 7500 text$="Keyboard":flag%=%1:finish%=TRUE
 7510 ENDIF
 7520 :
 7530 IF e%=100 THEN
 7540 $(blk%+4)=r$+CHR$0:finish%=FALSE
 7550 flag%=%10001:text$="Message from Keyboard"
 7560 ENDIF
 7570 :
 7580 SYS "OS_Byte",&C9,keystat%,0
 7590 SYS "Wimp_ReportError",blk%,flag%,text$
 7600 ENDPROC
 7610
 7620 DEFFNSpecItem(t%,w%,bit%)
 7630 IF t% THEN
 7640 =w% OR (1<<bit%)
 7650 ELSE
 7660 =w% AND NOT (1<<bit%)
 7670 ENDIF
 7680
 7690 DEFFNcreate_window(a$,c%)
 7700 LOCAL han%,a%
 7710 SYS "Wimp_LoadTemplate",,blk%,bufstart%,buf%+&1000,-1,a$,0 TO ,,bufstart%,,,,a%
 7720 IF a%=0 ERROR 1,"Template '"+a$+"' not found"
 7730 IF c% blk%!64=sprites%
 7740 SYS "Wimp_CreateWindow",,blk% TO han%
 7750 =han%
 7760
 7770 DEFPROCopen_window
 7780 IF !blk%=samples% THEN
 7790 LOCAL mx0%,mx1%,my0%,my1%,mb%
 7800 mx0%=blk%!4:mx1%=blk%!12:my0%=blk%!8:my1%=blk%!16:mb%=blk%!28
 7810 PROCsubwindow(samplist%,90,mb%)
 7820 !blk%=samples%:blk%!4=mx0%:blk%!12=mx1%:blk%!8=my0%:blk%!16=my1%:blk%!28=samplist%
 7830 ENDIF
 7840 SYS "Wimp_OpenWindow",,blk%
 7850 ENDPROC
 7860
 7870 DEFPROCget_window_state(han%)
 7880 !blk%=han%:SYS "Wimp_GetWindowState",,blk%
 7890 x0%=blk%!4:y0%=blk%!8:x1%=blk%!12:y1%=blk%!16:wf%=blk%!28
 7900 ENDPROC
 7910
 7920 DEFPROCget_window_info(han%)
 7930 !blk%=han%:SYS "Wimp_GetWindowInfo",,blk%
 7940 x0%=blk%!4:y0%=blk%!8:x1%=blk%!12:y1%=blk%!16
 7950 ENDPROC
 7960
 7970 DEFPROCget_window_outline(han%)
 7980 !blk%=han%:SYS "Wimp_GetWindowOutline",,blk%
 7990 x0%=blk%!4:y0%=blk%!8:x1%=blk%!12:y1%=blk%!16
 8000 ENDPROC
 8010
 8020 DEFPROCget_icon_state(han%,icon%)
 8030 !blk%=han%:blk%!4=icon%:SYS "Wimp_GetIconState",,blk%
 8040 ENDPROC
 8050
 8060 DEFPROCsubwindow(han%,y%,bhan%)
 8070 LOCAL w%,h%
 8080 PROCget_window_state(han%)
 8090 w%=x1%-x0%:h%=y1%-y0%
 8100 !blk%=han%:blk%!4=mx0%+(((mx1%-mx0%)-(w%+40))/2)
 8110 blk%!8=my0%+y%:blk%!12=blk%!4+w%:blk%!16=blk%!8+h%:blk%!28=bhan%
 8120 PROCopen_window
 8130 ENDIF
 8140 ENDPROC
 8150
 8160 DEFFNiconbar
 8170 LOCAL iconhan%
 8180 $bufstart%="!keyboard"
 8190 !blk%=-1:blk%!4=0:blk%!8=0:blk%!12=68:blk%!16=68
 8200 blk%!20=%11000100000010:blk%!24=bufstart%:blk%!28=1:blk%!32=9
 8210 bufstart%+=10
 8220 SYS "Wimp_CreateIcon",,blk% TO iconhan%
 8230 =iconhan%
 8240
 8250 DEFPROCdecode_drag
 8260 LOCAL e%:e%=FALSE
 8270 IF dragbar%=0 AND keydown%=&FF THEN
 8280 LOCAL f$:f$=FNleafname($FNiconaddr(savebox%,2))
 8290 PROCget_pointer_info
 8300 CASE mhan% OF
 8310 WHEN savebox%,main%,con%,samplist%,samples%: e%=TRUE
 8320 ENDCASE
 8330 IF micon%=kiconbar% OR e%=TRUE ENDPROC
 8340 !blk%=56:blk%!12=0:blk%!16=1:blk%!20=mhan%:blk%!24=micon%
 8350 blk%!28=mousex%:blk%!32=mousey%:blk%!36=1024:blk%!40=&10C
 8360 $(blk%+44)=f$+CHR$0
 8370 SYS "Wimp_SendMessage",17,blk%,mhan%,micon%
 8380 saveref%=blk%!8
 8390 ENDIF
 8400 IF keydown%<&FF THEN
 8410 PROCupdate_icon(main%,keydown%,%1<<21,0)
 8420 keydown%=&FF
 8430 ENDIF
 8440 IF dragbar%<>0 volume%=-(((dragbar%-12)DIV 23)-2):dragbar%=0:mask%=&80033
 8450 ENDPROC
 8460
 8470 DEFPROCpopup_window(han%,a%)
 8480 LOCAL wwidth%,wheight%,cx%,cy%
 8490 PROCget_window_info(han%)
 8500 cx%=(swidth% DIV 2)
 8510 cy%=(sheight% DIV 2)
 8520 CASE a% OF
 8530 WHEN 1
 8540 wwidth%=(blk%!52-blk%!44) DIV 2:wheight%=(blk%!56-blk%!48) DIV 2
 8550 x0%=cx%-wwidth%-20:x1%=cx%+wwidth%-20
 8560 y0%=cy%-wheight%:y1%=cy%+wheight%
 8570 WHEN 2
 8580 wwidth%=(x1%-x0%) DIV 2:wheight%=(y1%-y0%) DIV 2
 8590 x0%=cx%-wwidth%:x1%=cx%+wwidth%:y0%=cy%-wheight%:y1%=cy%+wheight%
 8600 ENDCASE
 8610 !blk%=han%:blk%!28=-1:blk%!4=x0%:blk%!8=y0%:blk%!12=x1%:blk%!16=y1%
 8620 PROCopen_window
 8630 ENDPROC
 8640
 8650 DEFPROCgetmodeinfo
 8660 LOCAL Hi%,Vi%
 8670 mblk%!0=0:mblk%!4=1:mblk%!8=2:mblk%!12=3:mblk%!16=4:mblk%!20=5
 8680 mblk%!24=11:mblk%!28=12:mblk%!32=-1
 8690 SYS "OS_ReadVduVariables",mblk%,blk%
 8700 Hi%=1<<(blk%!16):Vi%=1<<(blk%!20)
 8710 swidth%=Hi%*((blk%!24)+1)-2:sheight%=Vi%*((blk%!28)+1)-4
 8720 ENDPROC
 8730
 8740 DEFPROCsetsoundsys
 8750 LOCAL i%
 8760 PROCsetvars
 8770 SYS "Sound_AttachVoice",chan%,mv%(vlsel%) TO i%
 8780 IF i%=0 ERROR 1,"Illegal voice number"
 8790 IF salone% VOICES chan%
 8800 ENDPROC
 8810
 8820 DEFPROCsetvars
 8830 chan%=VAL($FNiconaddr(con%,32))
 8840 oct%=VAL($FNiconaddr(con%,23))
 8850 trans%=VAL($FNiconaddr(con%,26))
 8860 dura%=VAL($FNiconaddr(con%,31))
 8870 IF oct%>4 OR oct%<-4 PROCreport_err("Value for octave out of range",100,ERL):oct%=0:PROCset_icon(con%,23,STR$(oct%))
 8880 IF dura%>255 PROCreport_err("Value for duration out of range",100,ERL):dura%=20:PROCset_icon(con%,31,STR$(dura%))
 8890 IF trans%>11 OR trans%<-11 PROCreport_err("Value for transpose out of range",100,ERL):trans%=0:PROCset_icon(con%,26,STR$(trans%))
 8900 IF chan%>8 OR chan%<1 PROCreport_err("Sound channel number out of range",100,ERL):chan%=1:PROCset_icon(con%,32,STR$(chan%))
 8910 ENDPROC
 8920
 8930 DEFPROCtogglechars
 8940 SYS "Hourglass_On"
 8950 IF showkeys%=TRUE THEN
 8960 FOR N%=36 TO 70:PROCupdate_icon(main%,N%,0,1):NEXT
 8970 showkeys%=FALSE
 8980 ELSE
 8990 FOR N%=36 TO 70:PROCupdate_icon(main%,N%,1,1):NEXT
 9000 showkeys%=TRUE
 9010 ENDIF
 9020 SYS "Hourglass_Off"
 9030 ENDPROC
 9040
 9050 DEFPROCgetif
 9060 IF ifneeded% THEN
 9070 SYS "Wimp_SetCaretPosition",main%,-1,,,%1<<25
 9080 ifneeded%=FALSE
 9090 ENDIF
 9100 ENDPROC
 9110
 9120 DEFPROCupdate_title(han%,a%,t$)
 9130 LOCAL b%
 9140 PROCget_window_info(han%)
 9150 IF (blk%!80 AND %100000000)=0 ERROR 1,"Window title bar is not indirected"
 9160 IF LEN t$>blk%!84 ERROR 1,"Indirected area insufficient for data"
 9170 b%=blk%!76
 9180 CASE a% OF
 9190 WHEN 0: $b%=t$
 9200 WHEN 1: $b%="Keyboard: "+t$
 9210 WHEN 2: $b%=$b%+" *"
 9220 ENDCASE
 9230 IF mainopen% SYS "Wimp_ForceRedraw",-1,x0%,y1%,x1%,y1%+40
 9240 ENDPROC
 9250
 9260 DEFFNleafname(f$)
 9270 LOCAL i%:REPEAT:i%=INSTR(f$,"."):IF i%<>0 f$=MID$(f$,i%+1):UNTIL i%=0
 9280 =f$
 9290
 9300 DEFPROCkeyboarddataout(fname$,u%)
 9310 LOCAL N%,A%,svol%,sspeaker%,V$,e%
 9320 IF INSTR(fname$,".")=0 AND u%=TRUE PROCreport_err("To save, drag the file icon to a directory viewer",100,ERL):ENDPROC
 9330 svol%=0:sspeaker%=0:sstereo%()=0
 9340 e%=0:WHILE mv%(e%)<>0:e%+=1:ENDWHILE
 9350 SYS "Hourglass_On"
 9360 A%=OPENOUT(fname$)
 9370 PRINT# A%,"Keyboard"
 9380 PRINT# A%,version$
 9390 BPUT# A%,savechoices%
 9400 IF savechoices%=TRUE THEN
 9410 BPUT# A%,autoinst%
 9420 BPUT# A%,oct%
 9430 BPUT# A%,trans%
 9440 BPUT# A%,chan%
 9450 BPUT# A%,dura%
 9460 BPUT# A%,showkeys%
 9470 BPUT# A%,volume%
 9480 BPUT# A%,vlsel%
 9490 PRINT# A%,tunoct%
 9500 PRINT# A%,tunsemi%
 9510 BPUT# A%,svol%
 9520 BPUT# A%,sspeaker%
 9530 FOR N%=0 TO 7
 9540 BPUT# A%,sstereo%(N%):NEXT
 9550 BPUT# A%,salone%
 9560 FOR N%=0 TO 6
 9570 BPUT# A%,0:NEXT
 9580 ELSE
 9590 FOR N%=0 TO 30
 9600 BPUT# A%,0:NEXT
 9610 ENDIF
 9620 BPUT# A%,next%
 9630 IF next%<>0 THEN
 9640 FOR N%=1 TO next%
 9650 PRINT# A%,pathname$(N%-1)
 9660 PRINT# A%,type%(N%-1)
 9670 BPUT# A%,?(code%+&9D0+N%-1)
 9680 NEXT
 9690 ENDIF
 9700 CLOSE# A%
 9710 OSCLI("Settype "+fname$+" 10C")
 9720 IF u% THEN
 9730 PROCupdate_title(main%,0,fname$)
 9740 changed%=FALSE
 9750 ENDIF
 9760 SYS "Hourglass_Off"
 9770 ENDPROC
 9780
 9790 DEFPROCdrag_icon(mx%,my%,han%,icon%)
 9800 LOCAL ix0%,ix1%,iy0%,iy1%,b%
 9810 IF han%<>savebox% ENDPROC
 9820 PROCget_pointer_info:IF mbut%=2 ENDPROC
 9830 menubut%=mbut%:PROCget_window_info(han%)
 9840 PROCget_icon_state(han%,icon%)
 9850 ix0%=blk%!8:iy0%=blk%!12:ix1%=blk%!16:iy1%=blk%!20:!blk%=han%:blk%!4=5
 9860 blk%!8=x0%+ix0%:blk%!12=y1%+iy0%:blk%!16=x0%+ix1%:blk%!20=y1%+iy1%
 9870 blk%!24=blk%!8-mx%:blk%!28=blk%!12-my%:blk%!32=swidth%+(blk%!16-mx%)
 9880 blk%!36=sheight%+(blk%!20-my%)
 9890 IF version%>=300 THEN
 9900  SYS "OS_Byte",161,28 TO ,,b%
 9910  IF b% AND 2 THEN
 9920  SYS "XDragASprite_Start",197,1,"file_10c",blk%+8
 9930  ELSE
 9940  SYS "Wimp_DragBox",,blk%
 9950  ENDIF
 9960 ELSE
 9970  SYS "Wimp_DragBox",,blk%
 9980 ENDIF
 9990 ENDPROC
10000
10010 DEFPROCload_file
10020 LOCAL len%,o%,modpresent%,modname$,loaded%:loaded%=TRUE
10030 SYS "Hourglass_On"
10040 IF filetype%<>&10C AND next%>=32 PROCreport_err("Can't load any more samples",100,ERL):ENDPROC
10050 SYS "OS_File",17,filename$ TO o%,,,,len%
10060 IF o%=0 ERROR 1,"File not found"
10070 IF FNfile_present(FNleafname(filename$),filetype%)=TRUE PROCreport_err("Sample name '"+FNleafname(filename$)+"' already present",100,ERL):ENDPROC
10080 CASE filetype% OF
10090 WHEN &FFA
10100 modname$=FNget_module_name(filename$)
10110 modpresent%=FNmodule_present(modname$)
10120 IF modpresent% PROCkill_module(modname$)
10130 PROCstoresamples(0,FNleafname(filename$))
10140 OSCLI "RMLoad "+filename$
10150 PROCstoresamples(32,FNleafname(filename$))
10160 IF loaded%=FALSE AND modpresent%=FALSE PROCkill_module(modname$)
10170 IF scrap%<>0 OSCLI "Delete <Wimp$Scrap>":scrap%=0:filename$=leafname$
10180 IF loaded% sampaddr%(next%)=0:PROCupdatesamparrays(len%,TRUE)
10190 PROCdataload_ack
10200 WHEN &DF9,&CB5,&ED0,&D3C,&FFD
10210 IF FNextend(len%)=FALSE THEN
10220 PROCload_sample(len%,TRUE)
10230 IF autoinst% PROCinstall_sample(next%-1)
10240 PROCdataload_ack
10250 ENDIF
10260 WHEN &10C
10270 PROCdataload_ack
10280 IF changed% PROCmessage_box(2) ELSE PROCkeyboarddatain(filename$)
10290 ENDCASE
10300 SYS "Hourglass_Off"
10310 ENDPROC
10320
10330 DEFPROCupdatesamparrays(len%,p%)
10340 IF p% pathname$(next%)=filename$:type%(next%)=filetype%
10350 size%(next%)=len%
10360 PROCupdatesamplist(FNleafname(filename$))
10370 next%+=1
10380 PROCupdatesampicon(next%)
10390 PROCcheckchange(FALSE)
10400 ENDPROC
10410
10420 DEFPROCupdatesamplist(name$)
10430 IF LEN name$>11 ERROR 1,"Sample name too long"
10440 PROCget_window_state(samplist%)
10450 !blk%=samplist%:blk%!4=0:blk%!8=0-(next%*44)-44:blk%!12=x1%-x0%:blk%!16=0-(next%*44)
10460 blk%!20=&701B431:$(blk%+24)=name$
10470 SYS "Wimp_CreateIcon",,blk%
10480 IF sampopen% SYS "Wimp_ForceRedraw",samplist%,0,(0-(next%*44)-44),x1%-x0%,(0-(next%*44))
10490 IF (0-(next%*44)-44)<-(y1%-y0%) THEN
10500 !blk%=0:blk%!4=0-(next%*44)-44:blk%!8=x1%-x0%:blk%!12=0
10510 SYS "Wimp_SetExtent",samplist%,blk%
10520 ENDIF
10530 ENDPROC
10540
10550 DEFPROCentire_list(action%)
10560 LOCAL mask%,bmatch%,addr%,p%,n%:n%=0:addr%=blk%+256:p%=0
10570 mask%=%1<<21
10580 CASE action% OF
10590 WHEN 0,3: bmatch%=0
10600 WHEN 1,2,5,6: bmatch%=%1<<21
10610 ENDCASE
10620 SYS "Wimp_WhichIcon",samplist%,addr%,mask%,bmatch%
10630 :
10640 IF action%=2 OR action%=6 PROCmute
10650 :
10660 IF action%=2 THEN
10670 WHILE !addr%<>-1:addr%+=4:n%+=1:ENDWHILE
10680 IF n%=next% PROCdelete_all:action%=-1
10690 addr%=blk%+256
10700 ENDIF
10710 :
10720 IF action%>-1 THEN
10730 WHILE !addr%<>-1
10740 CASE action% OF
10750 WHEN 0: PROCupdate_icon(samplist%,!addr%,mask%,mask%)
10760 WHEN 1: PROCupdate_icon(samplist%,!addr%,0,mask%)
10770 WHEN 2: PROCdelete_sample(!addr%)
10780 WHEN 3: PROCrenumber_icon(!addr%)
10790 WHEN 5: PROCinstall_sample(!addr%)
10800 WHEN 6: PROCremove_sample(!addr%)
10810 ENDCASE
10820 addr%+=4
10830 ENDWHILE
10840 ENDIF
10850 IF action%=2 PROCreinitvoices
10860 IF action%=2 OR action%=-1 PROCupdatesampicon(next%)
10870 IF action%=2 OR action%=6 OR action%=-1 PROCrestore
10880 IF action%=3 THEN
10890 PROCget_window_state(samplist%)
10900 IF (0-(next%*44))<-(y1%-y0%) THEN
10910 !blk%=0:blk%!4=0-(next%*44):blk%!8=x1%-x0%:blk%!12=0
10920 ELSE
10930 !blk%=0:blk%!4=-(y1%-y0%):blk%!8=x1%-x0%:blk%!12=0
10940 ENDIF
10950 SYS "Wimp_SetExtent",samplist%,blk%
10960 IF sampopen% THEN
10970 SYS "Wimp_ForceRedraw",-1,x0%,y0%,x1%,y1%
10980 PROCget_window_info(samplist%):PROCopen_window
10990 ENDIF
11000 ENDIF
11010 ENDPROC
11020
11030 DEFPROCdelete_all
11040 IF next%=0 ENDPROC
11050 !blk%=samplist%
11060 FOR N%=0 TO next%-1
11070 blk%!4=N%
11080 SYS "Wimp_DeleteIcon",,blk%
11090 IF ?(code%+&9D0+N%)>0 PROCremove_sample(N%)
11100 NEXT
11110 pathname$()="":size%()=0:type%()=0:sampaddr%()=0
11120 IF samplebase%>0 SYS "OS_Module",7,,samplebase%
11130 next%=0:samplebase%=0:sampoffset%=0
11140 ENDPROC
11150
11160 DEFPROCupdateinfobox(icon%)
11170 LOCAL a$,b$,c$
11180 PROCset_icon(sampinfo%,8,pathname$(icon%))
11190 PROCset_icon(sampinfo%,7,STR$ size%(icon%))
11200 b$=STR$ ~type%(icon%)
11210 CASE b$ OF
11220 WHEN "FFA": a$="Module"
11230 WHEN "DF9": a$="EMR"
11240 WHEN "CB5": a$="SoundTracker"
11250 WHEN "ED0": a$="DSEdit"
11260 WHEN "FFD": a$="Logarithmic"
11270 WHEN "D3C": a$="Armadeus"
11280 ENDCASE
11290 PROCset_icon(sampinfo%,3,a$)
11300 IF ?(code%+&9D0+icon%)>0 c$="Yes" ELSE c$="No"
11310 IF type%(icon%)=&FFA c$="Yes"
11320 PROCset_icon(sampinfo%,12,c$)
11330 PROCget_icon_state(sampinfo%,13)
11340 SYS "Wimp_DeleteIcon",,blk%
11350 blk%!4=sampinfo%:$(blk%+28)="file_"+b$
11360 SYS "Wimp_CreateIcon",,blk%+4
11370 ENDPROC
11380
11390 DEFFNicons_selected
11400 LOCAL n%:n%=-1
11410 SYS "Wimp_WhichIcon",samplist%,blk%+128,%1<<21,%1<<21
11420 REPEAT:n%+=1:UNTIL !(blk%+128+(n%*4))=-1
11430 =n%
11440
11450 DEFPROCmessage_box(a%)
11460 PROCpopup_window(message%,2):maction%=a%
11470 PROCget_window_outline(message%)
11480 MOUSE RECTANGLE x0%,y0%,x1%-x0%-2,y1%-y0%-4
11490 SYS "OS_Byte",&C9,0,&FF TO ,keystat%
11500 SYS "OS_Byte",&C9,1,0
11510 ENDPROC
11520
11530 DEFPROCkeyboarddatain(f$)
11540 LOCAL f%,o%,l%,a$,b$,n%,A%,svol%,sspeaker%,e%,i%,s$,sk%,len%
11550 SYS "Hourglass_On"
11560 PROCclose_window(con%):PROCclose_window(samples%)
11570 PROCclose_window(main%)
11580 PROCmute:PROCdelete_all:PROCrestore
11590 sk%=showkeys%
11600 mv%()=0
11610 loadedvoices$()=""
11620 :
11630 A%=OPENIN(f$)
11640 INPUT# A%,a$
11650 INPUT# A%,b$
11660 savechoices%=FNnegative(BGET# A%)
11670 IF savechoices%=TRUE THEN
11680 autoinst%=FNnegative(BGET# A%)
11690 oct%=FNnegative(BGET# A%)
11700 trans%=FNnegative(BGET# A%)
11710 chan%=BGET# A%
11720 dura%=BGET# A%
11730 showkeys%=FNnegative(BGET# A%)
11740 volume%=FNnegative(BGET# A%)
11750 vlsel%=BGET# A%
11760 INPUT# A%,tunoct%
11770 INPUT# A%,tunsemi%
11780 svol%=BGET# A%
11790 sspeaker%=BGET# A%
11800 FOR n%=0 TO 7
11810 sstereo%(n%)=FNnegative(BGET# A%):NEXT
11820 salone%=FNnegative(BGET# A%)
11830 FOR n%=0 TO 6
11840 PTR# A%=PTR# A%+1:NEXT
11850 ELSE
11860 FOR n%=0 TO 30
11870 PTR# A%=PTR# A%+1:NEXT
11880 ENDIF
11890 i%=BGET# A%
11900 IF i%<>0 THEN
11910 FOR n%=1 TO i%
11920 INPUT# A%,s$
11930 INPUT# A%,type%(n%-1)
11940 ?(slotblk%+n%-1)=BGET# A%
11950 pathname$(n%-1)=s$
11960 NEXT
11970 ENDIF
11980 CLOSE# A%
11990 :
12000 PROCset_icon(tuning%,6,STR$(tunoct%))
12010 PROCset_icon(tuning%,9,STR$(tunsemi%))
12020 *Tuning 0
12030 OSCLI "Tuning "+STR$((tunoct%*4096)+(tunsemi%*341))
12040 PROCupdatevoicelist
12050 :
12060 winmenu%!372=FNSpecItem(savechoices%,winmenu%!372,0)
12070 IF savechoices%=TRUE THEN
12080 winmenu%!348=FNSpecItem(autoinst%,winmenu%!348,0)
12090 winmenu%!396=FNSpecItem(salone%,winmenu%!396,0)
12100 PROCset_icon(con%,23,STR$(oct%))
12110 PROCset_icon(con%,26,STR$(trans%))
12120 PROCset_icon(con%,32,STR$(chan%))
12130 PROCset_icon(con%,31,STR$(dura%))
12140 IF sk% EOR showkeys%=TRUE THEN
12150 showkeys%=sk%:PROCtogglechars:PROCupdate_icon(con%,34,%1<<21,%0<<21)
12160 ENDIF
12170 PROCget_icon_state(con%,19)
12180 blk%!16=58-(23*volume%):SYS "Wimp_DeleteIcon",,blk%
12190 blk%!4=con%:SYS "Wimp_CreateIcon",,blk%+4
12200 ENDIF
12210 :
12220 IF i%>0 THEN
12230 f%=0:LOCAL ERROR
12240 FOR n%=1 TO i%
12250 ON ERROR LOCAL f%+=1:pathname$(n%-1)="":type%(n%-1)=0:GOTO 12310
12260 filename$=pathname$(n%-1):filetype%=type%(n%-1)
12270 SYS "XOS_File",17,filename$ TO o%,,,,len%
12280 IF o%=0 ERROR 100,"File not found"
12290 IF FNextend(len%)=TRUE ERROR 100,"Not enough room in RMA"
12300 PROCload_sample(len%,FALSE)
12310 NEXT
12320 RESTORE ERROR
12330 IF f%=1 PROCreport_err("Failed to load one sample",100,ERL)
12340 IF f%>1 PROCreport_err("Failed to load "+STR$f%+" samples",100,ERL)
12350 :
12360 f%=0:LOCAL ERROR
12370 FOR n%=0 TO i%-1
12380 ON ERROR LOCAL f%+=1:GOTO 12470
12390 o%=slotblk%?n%
12400 IF o%>0 THEN
12410  IF pathname$(n%)<>"" THEN
12420   IF FNinstall_in_slot(n%,o%)=FALSE ERROR 100,"Sample slot occupied"
12430  ELSE
12440   f%+=1
12450  ENDIF
12460 ENDIF
12470 NEXT
12480 RESTORE ERROR
12490 IF f%=1 PROCreport_err("Failed to install one sample",100,ERL)
12500 IF f%>1 PROCreport_err("Failed to install "+STR$f%+" samples",100,ERL)
12510 ENDIF
12520 :
12530 IF f$="<Wimp$Scrap>" f$=leafname$
12540 PROCupdate_title(main%,0,f$)
12550 SYS "Wimp_GetCaretPosition",,blk%
12560 IF !blk%=-1 o%=TRUE ELSE o%=FALSE
12570 PROCpopup_window(main%,1):mainopen%=TRUE
12580 IF o% PROCgetif
12590 changed%=FALSE
12600 IF scrap%<>0 OSCLI "Delete <Wimp$Scrap>":scrap%=0
12610 SYS "Hourglass_Off"
12620 ENDPROC
12630
12640 DEFPROCdataload_ack
12650 messblk%!12=messblk%!8:messblk%!16=4
12660 SYS "Wimp_SendMessage",17,messblk%,messblk%!4
12670 ENDPROC
12680
12690 DEFPROCcheckchange(a%)
12700 IF a%=TRUE THEN
12710 IF savechoices%=TRUE THEN
12720 IF changed%=FALSE changed%=TRUE:PROCupdate_title(main%,2,"")
12730 ENDIF
12740 ELSE
12750 IF changed%=FALSE changed%=TRUE:PROCupdate_title(main%,2,"")
12760 ENDIF
12770 ENDPROC
12780
12790 DEFFNnegative(a%)
12800 IF a%>127 =(&FFFFFF00 OR a%) ELSE =a%
12810
12820 DEFPROCload_sample(len%,p%)
12830 LOCAL sft%,addr%
12840 sft%=FNset_sft(filetype%)
12850 IF scrap%<>0 filename$="<Wimp$Scrap>"
12860 IF sft%<1 OR sft%>7 ERROR 1,"Sample file type out of range"
12870 IF sampoffset% MOD 4<>0 ERROR 1,"Sample block not word aligned"
12880 SYS "Hourglass_On"
12890 addr%=samplebase%+sampoffset%
12900 OSCLI "Load "+filename$+" "+STR$~addr%
12910 CALL code%+&240,sft%,addr%,len%
12920 sampaddr%(next%)=sampoffset%
12930 sampoffset%+=len%
12940 sampoffset%=FNword_align(sampoffset%)
12950 IF scrap%<>0 OSCLI "Delete <Wimp$Scrap>":scrap%=0:filename$=leafname$
12960 PROCupdatesamparrays(len%,p%)
12970 SYS "Hourglass_Off"
12980 ENDPROC
12990
13000 DEFPROCdelete_sample(i%)
13010 LOCAL a%,b%,icon%,len1%,len2%,saddr%,t%:icon%=i%-p%
13020 t%=type%(icon%):len1%=size%(icon%):saddr%=samplebase%+sampaddr%(icon%)
13030 IF t%<>&FFA AND ?(code%+&9D0+icon%)>0 CALL code%+&864,icon%
13040 IF t%=&FFA len1%=0
13050 len1%=FNword_align(len1%)
13060 IF icon%<(next%-1) THEN
13070 FOR a%=icon% TO next%-2
13080 IF t%<>&FFA AND len1%<>0 THEN
13090 IF type%(a%+1)<>&FFA AND size%(a%+1)<>0 THEN
13100 len2%=size%(a%+1):len2%=FNword_align(len2%)
13110 b%=samplebase%+sampaddr%(a%+1)
13120 CALL code%,b%,saddr%,len2%
13130 sampaddr%(a%)=saddr%-samplebase%:saddr%+=len2%
13140 ENDIF
13150 ELSE
13160 sampaddr%(a%)=sampaddr%(a%+1)
13170 ENDIF
13180 ?(code%+&9D0+a%)=?(code%+&9D0+a%+1):?(code%+&9D0+a%+1)=0
13190 pathname$(a%)=pathname$(a%+1)
13200 size%(a%)=size%(a%+1)
13210 type%(a%)=type%(a%+1)
13220 NEXT
13230 p%+=1
13240 ENDIF
13250 !blk%=samplist%:blk%!4=i%:SYS "Wimp_DeleteIcon",,blk%
13260 next%-=1:IF t%<>&FFA THEN
13270 t%=FNextend(-len1%):sampoffset%-=len1%
13280 IF sampoffset%<=0 SYS "OS_Module",7,,samplebase%:samplebase%=0:sampoffset%=0
13290 ENDIF
13300 ENDPROC
13310
13320 DEFPROCrenumber_icon(icon%)
13330 PROCget_icon_state(samplist%,icon%)
13340 blk%!12=0-(p%*44)-44:blk%!20=0-(p%*44)
13350 SYS "Wimp_DeleteIcon",,blk%
13360 blk%!4=samplist%:SYS "Wimp_CreateIcon",,blk%+4
13370 p%+=1
13380 ENDPROC
13390
13400 DEFFNfile_present(f$,t%)
13410 LOCAL N%,a%:a%=FALSE
13420 IF next%=0 OR t%=&10C =FALSE
13430 FOR N%=1 TO next%
13440 IF FNleafname(pathname$(N%-1))=f$ a%=TRUE
13450 NEXT
13460 =a%
13470
13480 DEFPROCupdatesampicon(i%)
13490 PROCset_icon(samples%,1,STR$i%)
13500 ENDPROC
13510
13520 DEFPROCstoresamples(offset%,c$)
13530 LOCAL a%,b%,a$,b$,c%,N%:c%=FALSE
13540 FOR N%=1 TO 32
13550 SYS "Sound_InstallVoice",0,N% TO f%
13560 IF f%<>0 SYS "Sound_InstallVoice",0,N% TO text$ ELSE text$=""
13570 IF LEN text$>32 text$=LEFT$(text$,32)
13580 $(blk%+(((N%-1)+offset%)*32))=text$
13590 NEXT
13600 IF offset%=32 THEN
13610 FOR N%=0 TO 31
13620 a$=$(blk%+(N%*32)):b$=$(blk%+((N%+32)*32))
13630 IF a$<>b$ c%=TRUE
13640 NEXT
13650 IF c%=FALSE loaded%=FALSE:PROCreport_err("Not a sample module",100,ERL)
13660 ENDIF
13670 ENDPROC
13680
13690 DEFFNget_module_name(path$)
13700 LOCAL a$,a%,b%
13710 a%=OPENIN path$
13720 REPEAT:b%=BGET# a%:UNTIL PTR#a%=&10
13730 FOR N%=0 TO 3:blk%?N%=BGET# a%:NEXT
13740 PTR#a%=!blk%
13750 REPEAT:b%=BGET# a%:a$=a$+CHR$(b%):UNTIL b%=0
13760 a$=LEFT$(a$,LENa$-1)
13770 CLOSE# a%
13780 =a$
13790
13800 DEFPROCkill_module(name$)
13810 IF FNmodule_present(name$)=TRUE OSCLI "RMKill "+name$
13820 ENDPROC
13830
13840 DEFFNmodule_present(name$)
13850 LOCAL a%,b%
13860 *Set KeyboardTempVar Present
13870 OSCLI "RMEnsure "+name$+" 0 Set KeyboardTempVar NotPresent"
13880 SYS "OS_ReadVarVal","KeyboardTempVar",blk%,&1500,0,0 TO ,,a%
13890 ?(blk%+a%)=&D
13900 *Unset KeyboardTempVar
13910 IF $blk%="Present" =TRUE ELSE =FALSE
13920
13930 DEFFNset_sft(t%)
13940 LOCAL a%
13950 CASE t% OF
13960 WHEN &FFA:a%=1
13970 WHEN &DF9:a%=2
13980 WHEN &CB5:a%=3
13990 WHEN &ED0:a%=4
14000 WHEN &D3C:a%=6
14010 WHEN &FFD:a%=5
14020 ENDCASE
14030 =a%
14040
14050 DEFFNword_align(a%)
14060 WHILE a% MOD 4<>0:a%+=1:ENDWHILE:=a%
14070
14080 DEFPROCdesksave
14090 LOCAL N%
14100 ON ERROR LOCAL messblk%!12=messblk%!8:SYS "Wimp_SendMessage",19,messblk%,messblk%!4:PROCreport_err(REPORT$,ERR,ERL):ENDPROC
14110 SYS "XOS_ReadVarVal","Keyboard$Dir",blk%,&1500,0,3 TO ,,N%
14120 blk%?N%=13
14130 BPUT# messblk%!20,"Run "+$blk%
14140 ENDPROC
14150
14160 DEFPROCinstall_sample(i%)
14170 LOCAL a$,t%,addr%,a%:a%=0
14180 SYS "Sound_InstallVoice",0,0 TO ,a%
14190 IF a%=0 OR type%(i%)=&FFA ENDPROC
14200 IF ?(code%+&9D0+i%)=0 THEN
14210 a$=FNleafname(pathname$(i%))
14220 t%=FNset_sft(type%(i%))
14230 addr%=samplebase%+sampaddr%(i%)
14240 CALL code%+&8CC,a%,i%,a$,t%,addr%,size%(i%)
14250 t%=?(code%+&9D0+i%)
14260 IF t%=0 PROCreport_err("Failed to install sample",100,ERL)
14270 ENDIF
14280 ENDPROC
14290
14300 DEFPROCremove_sample(i%)
14310 IF type%(i%)=&FFA ENDPROC
14320 IF ?(code%+&9D0+i%)>0 THEN
14330 CALL code%+&864,i%
14340 ENDIF
14350 ENDPROC
14360
14370 DEFFNclaim(len%)
14380 LOCAL a%,N%
14390 SYS "XOS_Module",6,,,len% TO ,,a%;N%
14400 IF N% AND %0001 =0
14410 =a%
14420
14430 DEFFNextend(len%)
14440 LOCAL s%,N%,a%,i%:a%=samplebase%
14450 len%=FNword_align(len%)
14460 IF sampoffset%=0 THEN
14470 samplebase%=FNclaim(len%)
14480 IF samplebase%=0 PROCreport_err("Not enough room in RMA",100,ERL):=TRUE
14490 ELSE
14500 SYS "XOS_Module",13,,samplebase%,len% TO ,,samplebase%;N%
14510 IF N% AND %0001 PROCreport_err("Not enough room in RMA",100,ERL):=TRUE
14520 IF samplebase%<>a% PROCreinitvoices
14530 ENDIF
14540 =FALSE
14550
14560 DEFPROCreinitvoices
14570 LOCAL i%,s%,addr%,a$,a%
14580 FOR i%=0 TO 31
14590 s%=?(code%+&9D0+i%)
14600 IF s%>0 THEN
14610 CALL code%+&864,i%
14620 addr%=samplebase%+sampaddr%(i%)
14630 a$=FNleafname(pathname$(i%)):a%=FNset_sft(type%(i%))
14640 CALL code%+&8CC,s%,i%,a$,a%,addr%,size%(i%)
14650 ENDIF
14660 NEXT
14670 ENDPROC
14680
14690 DEFFNinstall_in_slot(i%,s%)
14700 LOCAL addr%,a$,a%
14710 IF s%<1 OR s%>32 ERROR 1,"Voice slot number out of range"
14720 SYS "Sound_InstallVoice",0,s% TO a%
14730 IF a%<>0 =FALSE
14740 addr%=samplebase%+sampaddr%(i%)
14750 a$=FNleafname(pathname$(i%)):a%=FNset_sft(type%(i%))
14760 CALL code%+&8CC,s%,i%,a$,a%,addr%,size%(i%)
14770 =TRUE
14780
14790 DEFFNcheck_list(action%)
14800 LOCAL n%,addr%,a%:n%=0:a%=0
14810 SYS "Wimp_WhichIcon",samplist%,blk%,%1<<21,%1<<21
14820 addr%=blk%
14830 REPEAT
14840 IF type%(!addr%)=&FFA THEN
14850  n%+=1
14860 ELSE
14870  CASE action% OF
14880  WHEN 0
14890  IF ?(code%+&9D0+!addr%)>0 n%+=1
14900  WHEN 1
14910  IF ?(code%+&9D0+!addr%)=0 n%+=1
14920  ENDCASE
14930 ENDIF
14940 addr%+=4:a%+=1:UNTIL !addr%=-1
14950 IF a%=n% =TRUE
14960 =FALSE
14970
14980 DEFPROCmute
14990 LOCAL v%,N%
15000 *Audio Off
15010 voice$()=""
15020 FOR N%=1 TO 8
15030 SYS "Sound_AttachVoice",N%,0 TO ,v%
15040 IF v%>0 SYS "Sound_InstallVoice",0,v% TO voice$(N%-1)
15050 NEXT
15060 ENDPROC
15070
15080 DEFPROCrestore
15090 LOCAL N%
15100 FOR N%=1 TO 8
15110 SYS "XSound_AttachNamedVoice",N%,voice$(N%-1)
15120 NEXT
15130 *Audio On
15140 ENDPROC

  �     >!RunImage (Keyboard)
 � by  Thomas Daly
 � (c) AU May 1994
(
2
 �initall
<3 � � �report_err(�$,�,�):� finish% �closedown:�
F
P �
Z# ș "Wimp_Poll",mask%,blk% � A%
d Ȏ A% �
n	 � 0:
x � keydown%<>&FF �
� ș "OS_Byte",&7A � ,kcode%
�8 � kcode%=&FF �decode_drag:mask%=&80033:keydown%=&FF
� �
� � dragbar%<>0 �
� �get_pointer_info
�+ � dragbar%=&FF �get_window_state(con%)
�) dragbar%=(((mousex%-x0%)� 23)*23)+12
� � dragbar%<>olddragbar% �
� �get_icon_state(con%,19)
�0 blk%!16=dragbar%:ș "Wimp_DeleteIcon",,blk%
�- blk%!4=con%:ș "Wimp_CreateIcon",,blk%+4
�C ș "Wimp_ForceRedraw",con%,blk%!8,blk%!12,(x1%-x0%)-20,blk%!20
� olddragbar%=dragbar%
 �
 �
 � 2:�open_window
" � 3:�close_window(!blk%)
,< � 6:�mouse_click(!blk%,blk%!4,blk%!8,blk%!12,blk%!16,�)
6 � 7:�decode_drag
@+ � 8:�key_pressed(!blk%,blk%!4,blk%!24)
J � 9:�decode_menu(blk%)
T/ � 11:� !blk%=main% ifneeded%=�:suneeded%=�
^# � 12:� !blk%=main% ifneeded%=�
h � 17,18:�receive_mess
r �
| � finish%
� �closedown:�
�
� ��receive_mess
�/ � N%=0 � !blk%-1 � 4:messblk%!N%=blk%!N%:�
� Ȏ blk%!16 �
� � 0:finish%=�
� � 1
� Ȏ blk%!40 �
�) � &DF9,&CB5,&ED0,&D3C,&FFD,&FFA,&10C
�4 ș "XOS_ReadVarVal","Wimp$Scrap",,-1,0,3 � ,,N%
�9 � N%=0 �report_err("Wimp$Scrap not defined",100,�):�
� leafname$=�string(blk%+44)
�l � �file_present(leafname$,blk%!40)=� �report_err("Sample name '"+leafname$+"' already present",100,�):�
6 !messblk%=64:messblk%!12=messblk%!8:messblk%!16=2
4 messblk%!36=-1:$(messblk%+44)="<Wimp$Scrap>"+�0
1 ș "Wimp_SendMessage",17,messblk%,messblk%!4
& scrap%=messblk%!8
0 �
: � 2
DB � blk%!12<>saveref% � 1,"Unexpected DataSave packet received"
N@ � blk%!40<>&10C � 1,"Unexpected DataSave filetype received"
X filename$=�string(blk%+44)
b+ � menubut%<>1 ș "Wimp_CreateMenu",,-1
l menubut%=0
vP � blk%!36<>-1 �keyboarddataout(filename$,�) � �keyboarddataout(filename$,�)
�) messblk%!12=messblk%!8:messblk%!16=3
�1 ș "Wimp_SendMessage",17,messblk%,messblk%!4
� � 3
�< filename$=�string(blk%+44):filetype%=blk%!40:�load_file
� � 5
�H � blk%!40=&10C filename$=�string(blk%+44):filetype%=&10C:�load_file
� � 8
� � changed% �
�1 blk%!12=blk%!8:ș "Wimp_SendMessage",19,blk%
� �message_box(3)
� �
� � 10:�desksave
� � &400C1:�getmodeinfo
 �
 �

  ݤstring(a%)
*. � d$:d$="":ȕ ?a%<>0:d$+=�?a%:a%+=1:�:=d$
4
> ��initall
H) � � �report_err(�$,�,�):�closedown:�
R � N%,N2%,f$
\ ș "Hourglass_On"
f= ș "Wimp_Initialise",200,&4B534154,"Keyboard" � version%
p code%=0:samplebase%=0
z :
�n � blk% &1000,buf% &1000,fmitem% 20,mst% 64,menudata% &600,mblk% 36,messblk% 256,slotblk% 31,vlistblk% 703
�< bufstart%=buf%:mdatastart%=menudata%:vlstart%=vlistblk%
�7 version$="1.32 (16-Oct-93)":mask%=&80033:finish%=�
�( controls%=�:sampopen%=�:mainopen%=�
�5 ifneeded%=�:suneeded%=�:dragbar%=0:olddragbar%=0
�" x0%=0:x1%=0:y0%=0:y1%=0:wf%=0
�< mhan%=0:mousex%=0:mousey%=0:mbut%=0:micon%=0:menubut%=0
�+ menuwidth%=174:keystat%=0:redrawreq%=�
� maction%=0
� :
�T � pathname$(31),size%(31),type%(31),sampaddr%(31),sstereo%(7),loadedvoices$(31)
�F filename$="":filetype%=0:next%=0:saveref%=0:leafname$="":scrap%=0
� :
( � mv%(32),pitchtable%(11),voice$(7)
3 chan%=1:oct%=0:vlsel%=0:keydown%=&FF:salone%=�
@ dura%=20:trans%=0:volume%=-12:count%=0:tunoct%=0:tunsemi%=0
$= keymap$="ZSXDCVGBHNJMQ2W3ER5T6Y7UI9O0P[=]�\":showkeys%=�
.* savechoices%=�:autoinst%=�:changed%=�
8 :
B code%=�claim(&E00)
L+ � code%=0 � 1,"Not enough room in RMA"
V* � "Load <Keyboard$Dir>.Code "+�~code%
` :
j$ � N%=0 � 11:� pitchtable%(N%):�
tN � &4000,&4155,&42AA,&4400,&4555,&46AA,&4800,&49AA,&4AAA,&4C00,&4D55,&4EAA
~ :
�3 N%=� "<Keyboard$Dir>.Sprites":N2%=�#N%+16:�#N%
� � sprites% N2%
� !sprites%=N2%:sprites%!8=1
�# ș "OS_SpriteOp",&109,sprites%
�< ș "OS_SpriteOp",&10A,sprites%,"<Keyboard$Dir>.Sprites"
� :
� �getmodeinfo
�7 ș "Wimp_OpenTemplate",,"<Keyboard$Dir>.Templates"
�% con%=�create_window("Toolbox",�)
�# main%=�create_window("Main",�)
�# info%=�create_window("Info",�)
�) samples%=�create_window("Samples",�)
+ samplist%=�create_window("SampList",�)

& savebox%=�create_window("save",�)
+ sampinfo%=�create_window("SampInfo",�)
) message%=�create_window("Message",�)
(' tuning%=�create_window("Tuning",�)
2 ș "Wimp_CloseTemplate"
<! �set_icon(info%,11,version$)
FM �set_icon(message%,0,"Are you sure? Your current choices are not saved")
P winmenu%=�menutree(3,�)
Z icmenu%=�menutree(1,�)
d vlmenu%=�menutree(1,�)
n �links(winmenu%,&600)
x :
�  samplebase%=0:sampoffset%=0
� :
�1 ș "Sound_InstallVoice",0,mv%(0) � curvoice$
� kiconbar%=�iconbar
� �togglechars
� ș "OS_GetEnv" � f$
�% � �f$," ",13)<>0 � �f$,1)<>" " �
�- N%=� f$:ȕ �f$,N%,1)<>" " � N%>1:N%-=1:�
�! �keyboarddatain(�f$,�f$-N%))
� �
� ș "Hourglass_Off"
�
 *Pointer
� �

L � Keyboard,6,Sample '',4,Select all,0,Save,0,Voice,0,Tuning,0,Options,0
M � Selection,5,Info,0,Delete  ^X,0,Install ^I,0,Remove  ^R,0,Clear   ^Z,0
"` � Options,5,Auto install,1,Save choices,0,Stand alone,0,Controls...  ^C,0,Samples...   ^S,0
,p � 5,Keyboard,0,Selection,Keyboard,2,#savebox%,Keyboard,4,#tuning%,Keyboard,5,Options,Selection,0,#sampinfo%
6 :
@ � Keyboard,2,Info,0,Quit,0
J � 1,Keyboard,0,#info%
T :
^ � Voice list,32
h � 0
r � 1,Keyboard,3,Voice list
|
�8 ��mouse_click(mousex%,mousey%,but%,han%,icon%,key%)
� � pitch%,text$,i%
� :
� � but% � 2 �
� Ȏ han% �
�	 � -2
�. curmenu%=icmenu%:cmx%=mousex%-80:cmy%=184
� �showmenu
�% � main%: �first_items(�,�,main%)
�+ � samples%: �first_items(�,�,samples%)
� � samplist%
�1 � (next%>0 � icon%>-1) � �icons_selected<2 �
� �entire_list(1)
+ �update_icon(han%,icon%,%1<<21,%1<<21)
 �
  �first_items(�,�,samplist%)
& �
04 � han%=main% � han%=samplist% � han%=samples% �
:# �updatevoicelist:�setsavefield
D0 curmenu%=winmenu%:cmx%=mousex%:cmy%=mousey%
N �showmenu
X �
b �
l :
v Ȏ han% �
�	 � -2
� � but% � 4 �
� � mainopen% �
� �popup_window(main%,0)
� �
�	 i%=�
�% ș "Wimp_GetCaretPosition",,blk%
� � !blk%=-1 i%=�
�' �popup_window(main%,1):mainopen%=�
� � i% �getif
� �
� �
� :
 � main%
 � but%=4 � but%=1 �
 � icon%=-1 �getif
  �
* � icon%>=0 �
4# � icon%>35 icon%=35-(icon%-36)
>. � but%=4 � keydown%=&FF � dragbar%<>&FF �
H' �update_icon(main%,icon%,%1<<21,0)
R �getif
\) � suneeded% �setsoundsys:suneeded%=�
f_ pitch%=pitchtable%((35-icon%)� 12)+(trans%*&156)+(&1000*((35-icon%)� 12))+((oct%-1)*&1000)
p< � pitch%>0 � pitch%<=&7EAA � chan%,volume%,pitch%,dura%
z keydown%=icon%
� � � key% �
�B blk%!4=7:blk%!24=0:blk%!28=0:blk%!32=swidth%:blk%!36=sheight%
� ș "Wimp_DragBox",,blk%
� �
� �
� �
� :
� � con%
� � but%<>2 �
� �checkchange(�)
� � but%=1 �
�& � icon% � 2=1 icon%-=1 � icon%+=1
� �
	 �setvars:Ȏ icon% �
	
 � 21:
	 oct%+=1:� oct%>=5 oct%=-4
	$ �set_icon(con%,23,�(oct%))
	.
 � 22:
	8 oct%-=1:� oct%<=-5 oct%=4
	B �set_icon(con%,23,�(oct%))
	L
 � 24:
	V& trans%+=1:� trans%>=12 trans%=-11
	`! �set_icon(con%,26,�(trans%))
	j
 � 25:
	t& trans%-=1:� trans%<=-12 trans%=11
	~! �set_icon(con%,26,�(trans%))
	�
 � 27:
	�  chan%+=1:� chan%>=9 chan%=1
	�  �set_icon(con%,32,�(chan%))
	� suneeded%=�
	�
 � 28:
	�  chan%-=1:� chan%<=0 chan%=8
	�  �set_icon(con%,32,�(chan%))
	� suneeded%=�
	�
 � 29:
	�" dura%+=5:� dura%>=256 dura%=0
	�  �set_icon(con%,31,�(dura%))
	�
 � 30:
! dura%-=5:� dura%<0 dura%=255

  �set_icon(con%,31,�(dura%))
 � 20,34: �togglechars
( �update_icon(con%,34,%1<<21,%0<<21)
( � 18,19
2. �get_window_state(con%):�get_pointer_info
<d � icon%=19 � (icon%=18 � (mousex%>x0%+46 � mousex%<x1%-46 � mousey%>y0%+62 � mousey%<y0%+86)) �
FI blk%!4=7:blk%!24=x0%+56:blk%!28=y0%+66:blk%!32=x1%-56:blk%!36=y0%+82
P ș "Wimp_DragBox",,blk%
Z dragbar%=&FF:mask%=&80032
d �
n �
x �
� :
� � samplist%,samples%
� � but%=4 � but%=1 �
�/ � icon%=-1 � han%=samples% �entire_list(1)
� �
� :
� � savebox%
� Ȏ icon% �
�, � 0: � but%<>1 ș "Wimp_CreateMenu",,-1
�/ �keyboarddataout($�iconaddr(savebox%,2),�)
�0 � 3: �drag_icon(mousex%,mousey%,savebox%,3)
� �
� :
 � tuning%
 � but%<>2 �
% tunoct%=�($�iconaddr(tuning%,6))
"& tunsemi%=�($�iconaddr(tuning%,9))
, Ȏ icon% �
6 � 2
@' tunoct%+=1:� tunoct%>=4 tunoct%=-3
J$ �set_icon(tuning%,6,�(tunoct%))
T � 4
^' tunoct%-=1:� tunoct%<=-4 tunoct%=3
h$ �set_icon(tuning%,6,�(tunoct%))
r	 � 13
|, tunsemi%+=1:� tunsemi%>=12 tunsemi%=-11
�% �set_icon(tuning%,9,�(tunsemi%))
�	 � 11
�, tunsemi%-=1:� tunsemi%<=-12 tunsemi%=11
�% �set_icon(tuning%,9,�(tunsemi%))
�	 � 15
� �checkchange(�)
� *Tuning 0
�1 � "Tuning "+�((tunoct%*4096)+(tunsemi%*341))
�' � but%<>1 ș "Wimp_CreateMenu",,-1
� �
� �
� :
� � message%
 �close_window(message%)
  ș "OS_Byte",&C9,keystat%,0
 ȗ ȓ 0,0,swidth%,sheight%
& � redrawreq%=� �showmenu
0 � icon%=2 �
:  Ȏ maction% �
D  � 1: finish%=�
N%  � 2: �keyboarddatain(filename$)
X	  � 3
b  changed%=�
l&  ș "Wimp_GetCaretPosition",,blk%
v  blk%!24=&1FC
�-  ș "Wimp_SendMessage",8,blk%,messblk%!4
�  �
� �
�  Ȏ maction% �
�7  � 2: � scrap%<>0 � "Delete <Wimp$Scrap>":scrap%=0
�  �
� �
� maction%=0
� �
� �
�
�  ��first_items(g1%,g2%,han%)
�	 � a%

" � g1%=� � �icons_selected=0 �

* �menu_text("Sample ''",winmenu%+28,1)

! winmenu%!16=menuwidth%:g1%=�

  �

* � han%<>main% �

4 � �icons_selected=1 �

>9 ș "Wimp_WhichIcon",samplist%,blk%+128,%1<<21,%1<<21

H: text$="Sample '"+�icontext(samplist%,!(blk%+128))+"'"

R$ �menu_text(text$,winmenu%+28,0)

\ a%=((� text$)*16)+14

f< � a%>menuwidth% winmenu%!16=a% � winmenu%!16=menuwidth%

p  �updateinfobox(!(blk%+128))

z �

�* �menu_text("Selection",winmenu%+28,0)

� winmenu%!16=menuwidth%

� �

� �selection_items

� �

� �

�. winmenu%!36=�SpecItem(g1%,winmenu%!36,22)

�b � next%>0 winmenu%!60=�SpecItem(g2%,winmenu%!60,22) � winmenu%!60=�SpecItem(�,winmenu%!60,22)

� �

�

� ��selection_items

� � a%,b%,i%:a%=�:b%=�:i%=�

�) � �check_list(0)=� � count%>=32 a%=�
 � �check_list(1)=� b%=�
/ winmenu%!256=�SpecItem(a%,winmenu%!256,22)
/ winmenu%!280=�SpecItem(b%,winmenu%!280,22)
$ � �icons_selected>1 i%=�
./ winmenu%!208=�SpecItem(i%,winmenu%!208,22)
8 �
B
L ��menu_width(p%,len%)
V1 � len%>16 !p%=(len%*16)+1F4 � !p%=(16*16)+14
` �
j
t" ��key_pressed(han%,icon%,ch%)
~ � p%,k%,ci%,s%:p%=�
�> � han%<>savebox% � han%<>tuning% ș "Wimp_CreateMenu",,-1
� :
� Ȏ han% �
� � con%
� s%=�shortcuts
�
 Ȏ ch% �
� � &18F
� Ȏ icon% �
� � 23: ci%=31
� � 26: ci%=23
� � 32: ci%=26
� � 31: ci%=32
 �

 �caret(con%,ci%)
 � &18E,&D
 Ȏ icon% �
( � 23: ci%=26
2 � 26: ci%=32
< � 32: ci%=31
F � 31: ci%=23
P �
Z �caret(con%,ci%)
d 
n � s%=� p%=�
x �
� :
� � savebox%
�5 � ch%=&D �mouse_click(0,0,4,savebox%,0,0) � p%=�
� :
� � tuning%
�	 p%=�
� � ch%=&D � icon%=9 �
�+  �mouse_click(0,0,4,tuning%,15,0):p%=�
� �
�&  � ch%=&18F � ch%=&18E � ch%=&D �
�5  � icon%=6 �caret(tuning%,9) � �caret(tuning%,6)
�
  p%=�
�  �
 �
 :
 � main%
" s%=�shortcuts
," � ch%>96 � ch%<123 ch%=ch%-32
6 k%=�keymap$,�(ch%))
@
 � k%>0 �
J � keydown%=&FF �
T& �mouse_click(0,0,4,main%,36-k%,�)
^  keydown%=36-k%:mask%=&80032
h �
r* � keydown%<>&FF � (36-k%<>keydown%) �
| �decode_drag
�& �mouse_click(0,0,4,main%,36-k%,�)
�  keydown%=36-k%:mask%=&80032
� �
� �
� � s%=� p%=�
� �
� �
�" � p% ș "Wimp_ProcessKey",ch%
� �
�
� ݤshortcuts
� � a%:a%=�
�
 Ȏ ch% �
 � &183
 �setsavefield
 �get_pointer_info
&3 ș "Wimp_CreateMenu",,savebox%,mousex%,mousey%
0
 � 127,24
:$ � �icons_selected>0 � next%>0 �
D ș "Hourglass_On"
N$ �entire_list(2):�checkchange(�)
X �entire_list(3)
b  �first_items(�,�,samplist%)
l �updatevoicelist
v ș "Hourglass_Off"
� �
�	 � 26
� �entire_list(1)
�  �first_items(�,�,samplist%)
� � 1
� �entire_list(0)
�  �first_items(�,�,samplist%)
�	 � 19
�O � sampopen%=� sampopen%=�:winmenu%!444=�SpecItem(sampopen%,winmenu%!444,0)
� �popup_window(samples%,0)
� � 3
� �popup_window(con%,0)
�O � controls%=� controls%=�:winmenu%!420=�SpecItem(controls%,winmenu%!420,0)
	 � 22
 �get_pointer_info
/ curmenu%=vlmenu%:cmx%=mousex%:cmy%=mousey%
  �updatevoicelist:�showmenu
* � 9
4 �entire_list(5)
> �updatevoicelist
H	 � 18
R �entire_list(6)
\ �updatevoicelist
f	 � 20
p �get_pointer_info
z2 ș "Wimp_CreateMenu",,tuning%,mousex%,mousey%
� 
�	 a%=�
� �
� =a%
�
� ��setsavefield
� � t$,a$
� �get_window_info(main%)
�H � (blk%!80 � %100000000)=0 � 1,"Window title bar is not indirected"
� t$=$(blk%!76)
� � changed% t$=�t$,�t$-2)
�V � �t$,8)="Keyboard" �set_icon(savebox%,2,"SampleList") � �set_icon(savebox%,2,t$)
� �

 ��caret(han%,i%)
	 � a%
$ a%=�($�iconaddr(han%,i%))
.1 ș "Wimp_SetCaretPosition",han%,i%,0,0,-1,a%
8 �
B
L ��set_icon(han%,i%,value$)
V	 � A%
` A%=�iconaddr(han%,i%)
j $A%=value$
t �update_icon(han%,i%,0,0)
~% ș "Wimp_GetCaretPosition",,blk%
� � !blk%=han% � blk%!4=i% �
� A%=� value$
�/ ș "Wimp_SetCaretPosition",han%,i%,,,-1,A%
� �
� �
�
�! ��update_icon(han%,i%,e%,c%)
� blk%!0=han%:blk%!4=i%
� blk%!8=e%:blk%!12=c%
�! ș "Wimp_SetIconState",,blk%
� �
�
 ݤiconaddr(h%,i%)

 �get_icon_state(h%,i%)
< � (blk%!24 � %100000000)=0 � 1,"Icon is not indirected"

 =blk%!28
(
2 ݤicontext(h%,i%)
< �get_icon_state(h%,i%)
F8 � (blk%!24 � %100000000)=1 � 1,"Icon is indirected"
P =$(blk%+28)
Z
d ��close_window(han%)
n !blk%=han%
x  ș "Wimp_CloseWindow",,blk%
� Ȏ han% �
�% � main%: mainopen%=�:ifneeded%=�
� � con%
� controls%=�
�5 winmenu%!420=�SpecItem(controls%,winmenu%!420,0)
� � samples%
�) �close_window(samplist%):sampopen%=�
�5 winmenu%!444=�SpecItem(sampopen%,winmenu%!444,0)
� �
� �
�
� ��closedown
� � N%,a%
 � next%>0 �
 � N%=0 � next%-1
, � ?(code%+&9D0+N%)>0 �remove_sample(N%)
" �
, �
62 � samplebase%>0 ș "OS_Module",7,,samplebase%
@& � code%>0 ș "OS_Module",7,,code%
J ș "Hourglass_Smash"
T ș "Wimp_CloseDown"
^ �
h
r" ݤmenutree(menus%,voicelist%)
|@ � N%,N2%,next%,menustart%,treestart%,text$,maxlen%,menuptr%
� menuptr%=mdatastart%
� treestart%=menuptr%
� � N%=1 � menus%
� menustart%=menuptr%
�3 � text$:� � text$>12 � 1,"Menu title too long"
�$ $menuptr%=text$:maxlen%=� text$
�< menuptr%?12=7:menuptr%?13=2:menuptr%?14=7:menuptr%?15=0
�. menuptr%!20=44:menuptr%!24=0:menuptr%+=28
�
 count%=0
� � next%
� � N2%=1 � next%
� �menuitem:�
�& menuptr%!-24=(menuptr%!-24) � &80
" menustart%!16=(maxlen%*16)+14
 �
 � voicelist%=� �
& mdatastart%=menuptr%
0 �
:e � count%=0 winmenu%!108=�SpecItem(�,winmenu%!108,22) � winmenu%!108=�SpecItem(�,winmenu%!108,22)
D mv%(count%)=0
N �
X; � mdatastart%>menudata%+&600 � 1,"Menu data area full"
b. �links(treestart%,mdatastart%-treestart%)
l =treestart%
v
� ��menuitem
� � text$,flag%,it%,f%
� � voicelist% �
�(  ș "Sound_InstallVoice",0,N2% � f%
�3  � f%<>0 ș "Sound_InstallVoice",0,N2% � text$
�  � f%<>0 �
�  mv%(count%)=N2%:count%+=1
�  �
�1  � (N2%=32 � count%=0) text$="****":f%=0 � �
�  �
� �
�  � text$,flag%
� �
4 menuptr%!0=0:menuptr%!4=-1:menuptr%!8=&07000021
 � voicelist% �
! �menu_text(text$,menuptr%,2)
  �
*! �menu_text(text$,menuptr%,0)
4 �
># � flag% � 2 !menuptr%=2 � %111
H3 � flag% � 1 !menuptr%=�SpecItem(�,!menuptr%,0)
R6 � flag% � 4 menuptr%!8=�SpecItem(�,menuptr%!8,22)
\ menuptr%+=24
f �
p
z ��menu_text(t$,mptr%,p%)
�	 � s%
� � � t$>21 t$=�t$,21)
� � � t$<12 �
�  $(mptr%+12)=t$
�  mptr%!8=mptr%!8 � � &100
� �
�
  Ȏ p% �
�  � 1: s%=fmitem%
�(  � 2: s%=vlstart%:vlstart%+=(�t$+1)
�  : s%=�textspace(�t$+1)
�  �
�  $s%=t$
�,  mptr%!12=s%:mptr%!16=-1:mptr%!20=�t$+1
  mptr%!8=mptr%!8 � &100
 �
  � � t$>maxlen% maxlen%=� t$
$ �
.
8 ݤtextspace(L%)
B bufstart%+=L%
L5 � bufstart%>(buf%+&1000) � 1,"Buffer space full"
V =bufstart%-L%
`
j ��links(datastart%,len%)
t8 � ptr1%,ptr2%,nolinks%,N%,startmenu$,item%,destobj$
~ � nolinks%:� nolinks%=0 �
� � N%=1 � nolinks%
�  � startmenu$,item%,destobj$
�. ptr1%=�menustart(startmenu$,datastart%-1)
�  ptr1%+=28:ptr1%+=(item%*24)
� � �destobj$,1)="#"�
�( ptr1%!4=�(�destobj$,(�destobj$-1)))
� �
�, ptr2%=�menustart(destobj$,datastart%-1)
� ptr1%!4=ptr2%
� �
� �
� �


 ݤmenustart(m$,p%)
 �:p%+=1
5 � p%>(datastart%+len%) � 1,"Failed to link menu"
(9 � $p%=m$ � p%?12=7 � p%?13=2 � p%?14=7 � p%?15=0:=p%
2
< ��showmenu
F- ș "Wimp_CreateMenu",,curmenu%,cmx%,cmy%
P rdmenu%=0
Z �
d
n ��decode_menu(mselect%)
x � p%,a%,v$:redrawreq%=�
�1 ș "Wimp_DecodeMenu",,curmenu%,mselect%,mst%
�: � (!mselect%=3 � mselect%!4<>-1) � curmenu%=vlmenu% �
�4 � curmenu%=vlmenu% p%=!mselect% � p%=mselect%!4
� � p%<0 � p%>32 �
�+ ș "Sound_InstallVoice",0,mv%(p%) � a%
�V � a%<>0 ș "Sound_InstallVoice",0,mv%(p%) � v$ � ș "Sound_InstallVoice",0,1 � v$
� curvoice$=v$
�Y � a%=0 vlsel%=p%:�updatevoicelist:�menuredraw:�report_err("Voice not found",100,�):�
�E vlmenu%!(28+(vlsel%*24))=�SpecItem(�,vlmenu%!(28+(vlsel%*24)),0)
�= vlmenu%!(28+(p%*24))=�SpecItem(�,vlmenu%!(28+(p%*24)),0)
� vlsel%=p%:suneeded%=�
� �checkchange(�)
� �
 Ȏ $mst% �
  � "Options.Controls...  ^C"
 �popup_window(con%,0)
"O � controls%=� controls%=�:winmenu%!420=�SpecItem(controls%,winmenu%!420,0)
,  � "Options.Samples...   ^S"
6O � sampopen%=� sampopen%=�:winmenu%!444=�SpecItem(sampopen%,winmenu%!444,0)
@ �popup_window(samples%,0)
J �
T Ȏ �leafname($mst%) �
^
 � "Quit"
h: � changed%=� �message_box(1):redrawreq%=� � finish%=�
r � "Select all"
| �entire_list(0)
�  �first_items(�,�,samplist%)
� � "Clear   ^Z"
� �entire_list(1)
�  �first_items(�,�,samplist%)
� � "Auto install"
�, � autoinst%=� autoinst%=� � autoinst%=�
�5 winmenu%!348=�SpecItem(autoinst%,winmenu%!348,0)
� �checkchange(�)
� � "Save choices"
�5 � savechoices%=� savechoices%=� � savechoices%=�
�8 winmenu%!372=�SpecItem(savechoices%,winmenu%!372,0)
� � "Stand alone"
�& � salone%=� salone%=� � salone%=�
3 winmenu%!396=�SpecItem(salone%,winmenu%!396,0)
 � "Delete  ^X"
 ș "Hourglass_On"
&$ �entire_list(2):�checkchange(�)
0 �entire_list(3)
:  �first_items(�,�,samplist%)
D �updatevoicelist
N ș "Hourglass_Off"
X � "Install ^I"
b �entire_list(5)
l �updatevoicelist
v �selection_items
�" �set_icon(sampinfo%,12,"Yes")
� � "Remove  ^R"
� �entire_list(6)
� �updatevoicelist
� �selection_items
�! �set_icon(sampinfo%,12,"No")
� �
� �menuredraw
� �
�
� ��menuredraw
�& �get_pointer_info:� (mbut% � 1) �
� � redrawreq%=� �showmenu
 �
 redrawreq%=�
 �
  �
*
4 ��updatevoicelist
>
 � voice$
H � �D^F:vlstart%=vlistblk%
R vlmenu%=�menutree(1,�)
\' � count%=0 vlsel%=0:curvoice$="":�
f vlsel%=-1:�:vlsel%+=1
p3 ș "Sound_InstallVoice",0,mv%(vlsel%) � voice$
z4 � voice$=curvoice$ � mv%(vlsel%)=0 � vlsel%>=31
�. � vlsel%>(count%-1) vlsel%=0:curvoice$=""
�E vlmenu%!(28+(vlsel%*24))=�SpecItem(�,vlmenu%!(28+(vlsel%*24)),0)
� suneeded%=�
� �
�
� ��get_pointer_info
�# ș "Wimp_GetPointerInfo",,blk%
�K mousex%=!blk%:mousey%=blk%!4:mbut%=blk%!8:mhan%=blk%!12:micon%=blk%!16
� �
�
� ��report_err(r$,e%,el%)
� � flag%,text$
�8 � scrap%<>0 ș "XOS_File",6,"<Wimp$Scrap>":scrap%=0

 !blk%=e%
 :
 $(blk%+4)=r$+�0:finish%=�
$ text$="Keyboard":flag%=%1
. :
8 � e%>=0 � e%<=127 �
BO $(blk%+4)="Fatal internal error: "+r$+" (internal error code "+�e%+") "+�0
L( text$="Keyboard":flag%=%1:finish%=�
V �
` :
j � e%=100 �
t $(blk%+4)=r$+�0:finish%=�
~/ flag%=%10001:text$="Message from Keyboard"
� �
� :
�  ș "OS_Byte",&C9,keystat%,0
�+ ș "Wimp_ReportError",blk%,flag%,text$
� �
�
� ݤSpecItem(t%,w%,bit%)
� � t% �
� =w% � (1<<bit%)
� �
� =w% � � (1<<bit%)
� �


 ݤcreate_window(a$,c%)
 � han%,a%
R ș "Wimp_LoadTemplate",,blk%,bufstart%,buf%+&1000,-1,a$,0 � ,,bufstart%,,,,a%
(- � a%=0 � 1,"Template '"+a$+"' not found"
2 � c% blk%!64=sprites%
<( ș "Wimp_CreateWindow",,blk% � han%
F
 =han%
P
Z ��open_window
d � !blk%=samples% �
n � mx0%,mx1%,my0%,my1%,mb%
xB mx0%=blk%!4:mx1%=blk%!12:my0%=blk%!8:my1%=blk%!16:mb%=blk%!28
�! �subwindow(samplist%,90,mb%)
�W !blk%=samples%:blk%!4=mx0%:blk%!12=mx1%:blk%!8=my0%:blk%!16=my1%:blk%!28=samplist%
� �
� ș "Wimp_OpenWindow",,blk%
� �
�
� ��get_window_state(han%)
�. !blk%=han%:ș "Wimp_GetWindowState",,blk%
�> x0%=blk%!4:y0%=blk%!8:x1%=blk%!12:y1%=blk%!16:wf%=blk%!28
� �
�
� ��get_window_info(han%)
�- !blk%=han%:ș "Wimp_GetWindowInfo",,blk%
2 x0%=blk%!4:y0%=blk%!8:x1%=blk%!12:y1%=blk%!16
 �

" ��get_window_outline(han%)
,0 !blk%=han%:ș "Wimp_GetWindowOutline",,blk%
62 x0%=blk%!4:y0%=blk%!8:x1%=blk%!12:y1%=blk%!16
@ �
J
T! ��get_icon_state(han%,icon%)
^9 !blk%=han%:blk%!4=icon%:ș "Wimp_GetIconState",,blk%
h �
r
| ��subwindow(han%,y%,bhan%)
� � w%,h%
� �get_window_state(han%)
� w%=x1%-x0%:h%=y1%-y0%
�5 !blk%=han%:blk%!4=mx0%+(((mx1%-mx0%)-(w%+40))/2)
�E blk%!8=my0%+y%:blk%!12=blk%!4+w%:blk%!16=blk%!8+h%:blk%!28=bhan%
� �open_window
� �
� �
�
� ݤiconbar
� � iconhan%
� $bufstart%="!keyboard"
�5 !blk%=-1:blk%!4=0:blk%!8=0:blk%!12=68:blk%!16=68
 B blk%!20=%11000100000010:blk%!24=bufstart%:blk%!28=1:blk%!32=9
  bufstart%+=10
 * ș "Wimp_CreateIcon",,blk% � iconhan%
 & =iconhan%
 0
 : ��decode_drag
 D � e%:e%=�
 N" � dragbar%=0 � keydown%=&FF �
 X. � f$:f$=�leafname($�iconaddr(savebox%,2))
 b �get_pointer_info
 l Ȏ mhan% �
 v3 � savebox%,main%,con%,samplist%,samples%: e%=�
 � �
 �  � micon%=kiconbar% � e%=� �
 �> !blk%=56:blk%!12=0:blk%!16=1:blk%!20=mhan%:blk%!24=micon%
 �> blk%!28=mousex%:blk%!32=mousey%:blk%!36=1024:blk%!40=&10C
 � $(blk%+44)=f$+�0
 �/ ș "Wimp_SendMessage",17,blk%,mhan%,micon%
 � saveref%=blk%!8
 � �
 � � keydown%<&FF �
 �* �update_icon(main%,keydown%,%1<<21,0)
 � keydown%=&FF
 � �
 �K � dragbar%<>0 volume%=-(((dragbar%-12)� 23)-2):dragbar%=0:mask%=&80033
! �
!
! ��popup_window(han%,a%)
!  � wwidth%,wheight%,cx%,cy%
!* �get_window_info(han%)
!4 cx%=(swidth% � 2)
!> cy%=(sheight% � 2)
!H Ȏ a% �
!R � 1
!\A wwidth%=(blk%!52-blk%!44) � 2:wheight%=(blk%!56-blk%!48) � 2
!f* x0%=cx%-wwidth%-20:x1%=cx%+wwidth%-20
!p& y0%=cy%-wheight%:y1%=cy%+wheight%
!z � 2
!�1 wwidth%=(x1%-x0%) � 2:wheight%=(y1%-y0%) � 2
!�F x0%=cx%-wwidth%:x1%=cx%+wwidth%:y0%=cy%-wheight%:y1%=cy%+wheight%
!� �
!�H !blk%=han%:blk%!28=-1:blk%!4=x0%:blk%!8=y0%:blk%!12=x1%:blk%!16=y1%
!� �open_window
!� �
!�
!� ��getmodeinfo
!� � Hi%,Vi%
!�C mblk%!0=0:mblk%!4=1:mblk%!8=2:mblk%!12=3:mblk%!16=4:mblk%!20=5
!�( mblk%!24=11:mblk%!28=12:mblk%!32=-1
!�( ș "OS_ReadVduVariables",mblk%,blk%
!�& Hi%=1<<(blk%!16):Vi%=1<<(blk%!20)
"= swidth%=Hi%*((blk%!24)+1)-2:sheight%=Vi%*((blk%!28)+1)-4
" �
"
"$ ��setsoundsys
".	 � i%
"8
 �setvars
"B2 ș "Sound_AttachVoice",chan%,mv%(vlsel%) � i%
"L& � i%=0 � 1,"Illegal voice number"
"V � salone% Ƞ chan%
"` �
"j
"t ��setvars
"~! chan%=�($�iconaddr(con%,32))
"�  oct%=�($�iconaddr(con%,23))
"�" trans%=�($�iconaddr(con%,26))
"�! dura%=�($�iconaddr(con%,31))
"�l � oct%>4 � oct%<-4 �report_err("Value for octave out of range",100,�):oct%=0:�set_icon(con%,23,�(oct%))
"�j � dura%>255 �report_err("Value for duration out of range",100,�):dura%=20:�set_icon(con%,31,�(dura%))
"�y � trans%>11 � trans%<-11 �report_err("Value for transpose out of range",100,�):trans%=0:�set_icon(con%,26,�(trans%))
"�s � chan%>8 � chan%<1 �report_err("Sound channel number out of range",100,�):chan%=1:�set_icon(con%,32,�(chan%))
"� �
"�
"� ��togglechars
"� ș "Hourglass_On"
"� � showkeys%=� �
#. � N%=36 � 70:�update_icon(main%,N%,0,1):�
#
 showkeys%=�
# �
#. � N%=36 � 70:�update_icon(main%,N%,1,1):�
#( showkeys%=�
#2 �
#< ș "Hourglass_Off"
#F �
#P
#Z ��getif
#d � ifneeded% �
#n1 ș "Wimp_SetCaretPosition",main%,-1,,,%1<<25
#x ifneeded%=�
#� �
#� �
#�
#� ��update_title(han%,a%,t$)
#�	 � b%
#� �get_window_info(han%)
#�H � (blk%!80 � %100000000)=0 � 1,"Window title bar is not indirected"
#�? � � t$>blk%!84 � 1,"Indirected area insufficient for data"
#� b%=blk%!76
#� Ȏ a% �
#� � 0: $b%=t$
#� � 1: $b%="Keyboard: "+t$
#� � 2: $b%=$b%+" *"
$ �
$< � mainopen% ș "Wimp_ForceRedraw",-1,x0%,y1%,x1%,y1%+40
$ �
$"
$, ݤleafname(f$)
$63 � i%:�:i%=�f$,"."):� i%<>0 f$=�f$,i%+1):� i%=0
$@ =f$
$J
$T! ��keyboarddataout(fname$,u%)
$^" � N%,A%,svol%,sspeaker%,V$,e%
$he � �fname$,".")=0 � u%=� �report_err("To save, drag the file icon to a directory viewer",100,�):�
$r% svol%=0:sspeaker%=0:sstereo%()=0
$| e%=0:ȕ mv%(e%)<>0:e%+=1:�
$� ș "Hourglass_On"
$� A%=�(fname$)
$� �# A%,"Keyboard"
$� �# A%,version$
$� �# A%,savechoices%
$� � savechoices%=� �
$� �# A%,autoinst%
$� �# A%,oct%
$� �# A%,trans%
$� �# A%,chan%
$� �# A%,dura%
$� �# A%,showkeys%
$� �# A%,volume%
% �# A%,vlsel%
% �# A%,tunoct%
% �# A%,tunsemi%
%& �# A%,svol%
%0 �# A%,sspeaker%
%: � N%=0 � 7
%D �# A%,sstereo%(N%):�
%N �# A%,salone%
%X � N%=0 � 6
%b �# A%,0:�
%l �
%v � N%=0 � 30
%� �# A%,0:�
%� �
%� �# A%,next%
%� � next%<>0 �
%� � N%=1 � next%
%� �# A%,pathname$(N%-1)
%� �# A%,type%(N%-1)
%� �# A%,?(code%+&9D0+N%-1)
%� �
%� �
%�
 �# A%
%�  �("Settype "+fname$+" 10C")
%� � u% �
&" �update_title(main%,0,fname$)
& changed%=�
& �
&  ș "Hourglass_Off"
&* �
&4
&>$ ��drag_icon(mx%,my%,han%,icon%)
&H � ix0%,ix1%,iy0%,iy1%,b%
&R � han%<>savebox% �
&\" �get_pointer_info:� mbut%=2 �
&f* menubut%=mbut%:�get_window_info(han%)
&p  �get_icon_state(han%,icon%)
&zK ix0%=blk%!8:iy0%=blk%!12:ix1%=blk%!16:iy1%=blk%!20:!blk%=han%:blk%!4=5
&�G blk%!8=x0%+ix0%:blk%!12=y1%+iy0%:blk%!16=x0%+ix1%:blk%!20=y1%+iy1%
&�I blk%!24=blk%!8-mx%:blk%!28=blk%!12-my%:blk%!32=swidth%+(blk%!16-mx%)
&�# blk%!36=sheight%+(blk%!20-my%)
&� � version%>=300 �
&�   ș "OS_Byte",161,28 � ,,b%
&�  � b% � 2 �
&�5  ș "XDragASprite_Start",197,1,"file_10c",blk%+8
&�  �
&�  ș "Wimp_DragBox",,blk%
&�  �
&� �
&�  ș "Wimp_DragBox",,blk%
&� �
' �
'
' ��load_file
'$5 � len%,o%,modpresent%,modname$,loaded%:loaded%=�
'. ș "Hourglass_On"
'8U � filetype%<>&10C � next%>=32 �report_err("Can't load any more samples",100,�):�
'B+ ș "OS_File",17,filename$ � o%,,,,len%
'L  � o%=0 � 1,"File not found"
'V� � �file_present(�leafname(filename$),filetype%)=� �report_err("Sample name '"+�leafname(filename$)+"' already present",100,�):�
'` Ȏ filetype% �
'j � &FFA
't) modname$=�get_module_name(filename$)
'~* modpresent%=�module_present(modname$)
'�) � modpresent% �kill_module(modname$)
'�* �storesamples(0,�leafname(filename$))
'� � "RMLoad "+filename$
'�+ �storesamples(32,�leafname(filename$))
'�7 � loaded%=� � modpresent%=� �kill_module(modname$)
'�E � scrap%<>0 � "Delete <Wimp$Scrap>":scrap%=0:filename$=leafname$
'�; � loaded% sampaddr%(next%)=0:�updatesamparrays(len%,�)
'� �dataload_ack
'� � &DF9,&CB5,&ED0,&D3C,&FFD
'� � �extend(len%)=� �
'� �load_sample(len%,�)
'�) � autoinst% �install_sample(next%-1)
( �dataload_ack
(
 �
( � &10C
( �dataload_ack
((< � changed% �message_box(2) � �keyboarddatain(filename$)
(2 �
(< ș "Hourglass_Off"
(F �
(P
(Z  ��updatesamparrays(len%,p%)
(d; � p% pathname$(next%)=filename$:type%(next%)=filetype%
(n size%(next%)=len%
(x* �updatesamplist(�leafname(filename$))
(�
 next%+=1
(� �updatesampicon(next%)
(� �checkchange(�)
(� �
(�
(� ��updatesamplist(name$)
(�, � � name$>11 � 1,"Sample name too long"
(�! �get_window_state(samplist%)
(�Y !blk%=samplist%:blk%!4=0:blk%!8=0-(next%*44)-44:blk%!12=x1%-x0%:blk%!16=0-(next%*44)
(�& blk%!20=&701B431:$(blk%+24)=name$
(� ș "Wimp_CreateIcon",,blk%
(�[ � sampopen% ș "Wimp_ForceRedraw",samplist%,0,(0-(next%*44)-44),x1%-x0%,(0-(next%*44))
(�% � (0-(next%*44)-44)<-(y1%-y0%) �
)< !blk%=0:blk%!4=0-(next%*44)-44:blk%!8=x1%-x0%:blk%!12=0
)' ș "Wimp_SetExtent",samplist%,blk%
) �
)" �
),
)6 ��entire_list(action%)
)@9 � mask%,bmatch%,addr%,p%,n%:n%=0:addr%=blk%+256:p%=0
)J mask%=%1<<21
)T Ȏ action% �
)^ � 0,3: bmatch%=0
)h � 1,2,5,6: bmatch%=%1<<21
)r �
)|6 ș "Wimp_WhichIcon",samplist%,addr%,mask%,bmatch%
)� :
)�" � action%=2 � action%=6 �mute
)� :
)� � action%=2 �
)�# ȕ !addr%<>-1:addr%+=4:n%+=1:�
)�& � n%=next% �delete_all:action%=-1
)� addr%=blk%+256
)� �
)� :
)� � action%>-1 �
)� ȕ !addr%<>-1
)� Ȏ action% �
)�4 � 0: �update_icon(samplist%,!addr%,mask%,mask%)
*0 � 1: �update_icon(samplist%,!addr%,0,mask%)
*  � 2: �delete_sample(!addr%)
*  � 3: �renumber_icon(!addr%)
*&! � 5: �install_sample(!addr%)
*0  � 6: �remove_sample(!addr%)
*: �
*D
 addr%+=4
*N �
*X �
*b � action%=2 �reinitvoices
*l4 � action%=2 � action%=-1 �updatesampicon(next%)
*v2 � action%=2 � action%=6 � action%=-1 �restore
*� � action%=3 �
*�! �get_window_state(samplist%)
*�" � (0-(next%*44))<-(y1%-y0%) �
*�9 !blk%=0:blk%!4=0-(next%*44):blk%!8=x1%-x0%:blk%!12=0
*� �
*�7 !blk%=0:blk%!4=-(y1%-y0%):blk%!8=x1%-x0%:blk%!12=0
*� �
*�' ș "Wimp_SetExtent",samplist%,blk%
*� � sampopen% �
*�- ș "Wimp_ForceRedraw",-1,x0%,y0%,x1%,y1%
*�- �get_window_info(samplist%):�open_window
*� �
*� �
+ �
+
+ ��delete_all
+  � next%=0 �
+* !blk%=samplist%
+4 � N%=0 � next%-1
+> blk%!4=N%
+H ș "Wimp_DeleteIcon",,blk%
+R, � ?(code%+&9D0+N%)>0 �remove_sample(N%)
+\ �
+f5 pathname$()="":size%()=0:type%()=0:sampaddr%()=0
+p2 � samplebase%>0 ș "OS_Module",7,,samplebase%
+z( next%=0:samplebase%=0:sampoffset%=0
+� �
+�
+� ��updateinfobox(icon%)
+� � a$,b$,c$
+�, �set_icon(sampinfo%,8,pathname$(icon%))
+�* �set_icon(sampinfo%,7,� size%(icon%))
+� b$=� ~type%(icon%)
+� Ȏ b$ �
+� � "FFA": a$="Module"
+� � "DF9": a$="EMR"
+� � "CB5": a$="SoundTracker"
+� � "ED0": a$="DSEdit"
+� � "FFD": a$="Logarithmic"
, � "D3C": a$="Armadeus"
, �
, �set_icon(sampinfo%,3,a$)
,$/ � ?(code%+&9D0+icon%)>0 c$="Yes" � c$="No"
,.! � type%(icon%)=&FFA c$="Yes"
,8 �set_icon(sampinfo%,12,c$)
,B" �get_icon_state(sampinfo%,13)
,L ș "Wimp_DeleteIcon",,blk%
,V+ blk%!4=sampinfo%:$(blk%+28)="file_"+b$
,`! ș "Wimp_CreateIcon",,blk%+4
,j �
,t
,~ ݤicons_selected
,� � n%:n%=-1
,�9 ș "Wimp_WhichIcon",samplist%,blk%+128,%1<<21,%1<<21
,�$ �:n%+=1:� !(blk%+128+(n%*4))=-1
,� =n%
,�
,� ��message_box(a%)
,�* �popup_window(message%,2):maction%=a%
,�" �get_window_outline(message%)
,�& ȗ ȓ x0%,y0%,x1%-x0%-2,y1%-y0%-4
,�' ș "OS_Byte",&C9,0,&FF � ,keystat%
,� ș "OS_Byte",&C9,1,0
,� �
-
-
 ��keyboarddatain(f$)
-= � f%,o%,l%,a$,b$,n%,A%,svol%,sspeaker%,e%,i%,s$,sk%,len%
- ș "Hourglass_On"
-(0 �close_window(con%):�close_window(samples%)
-2 �close_window(main%)
-< �mute:�delete_all:�restore
-F sk%=showkeys%
-P mv%()=0
-Z loadedvoices$()=""
-d :
-n
 A%=�(f$)
-x
 �# A%,a$
-�
 �# A%,b$
-�" savechoices%=�negative(�# A%)
-� � savechoices%=� �
-� autoinst%=�negative(�# A%)
-� oct%=�negative(�# A%)
-� trans%=�negative(�# A%)
-� chan%=�# A%
-� dura%=�# A%
-� showkeys%=�negative(�# A%)
-� volume%=�negative(�# A%)
-� vlsel%=�# A%
-� �# A%,tunoct%
-� �# A%,tunsemi%
. svol%=�# A%
. sspeaker%=�# A%
. � n%=0 � 7
."$ sstereo%(n%)=�negative(�# A%):�
., salone%=�negative(�# A%)
.6 � n%=0 � 6
.@ �# A%=�# A%+1:�
.J �
.T � n%=0 � 30
.^ �# A%=�# A%+1:�
.h �
.r
 i%=�# A%
.| � i%<>0 �
.� � n%=1 � i%
.�
 �# A%,s$
.� �# A%,type%(n%-1)
.� ?(slotblk%+n%-1)=�# A%
.� pathname$(n%-1)=s$
.� �
.� �
.�
 �# A%
.� :
.�$ �set_icon(tuning%,6,�(tunoct%))
.�% �set_icon(tuning%,9,�(tunsemi%))
.� *Tuning 0
.�1 � "Tuning "+�((tunoct%*4096)+(tunsemi%*341))
/ �updatevoicelist
/ :
/8 winmenu%!372=�SpecItem(savechoices%,winmenu%!372,0)
/& � savechoices%=� �
/05 winmenu%!348=�SpecItem(autoinst%,winmenu%!348,0)
/:3 winmenu%!396=�SpecItem(salone%,winmenu%!396,0)
/D �set_icon(con%,23,�(oct%))
/N! �set_icon(con%,26,�(trans%))
/X  �set_icon(con%,32,�(chan%))
/b  �set_icon(con%,31,�(dura%))
/l � sk% � showkeys%=� �
/vC showkeys%=sk%:�togglechars:�update_icon(con%,34,%1<<21,%0<<21)
/� �
/� �get_icon_state(con%,19)
/�7 blk%!16=58-(23*volume%):ș "Wimp_DeleteIcon",,blk%
/�- blk%!4=con%:ș "Wimp_CreateIcon",,blk%+4
/� �
/� :
/�
 � i%>0 �
/�
 f%=0:� �
/� � n%=1 � i%
/�8 � � � f%+=1:pathname$(n%-1)="":type%(n%-1)=0:� �TVp
/�4 filename$=pathname$(n%-1):filetype%=type%(n%-1)
/�, ș "XOS_File",17,filename$ � o%,,,,len%
/�" � o%=0 � 100,"File not found"
05 � �extend(len%)=� � 100,"Not enough room in RMA"
0 �load_sample(len%,�)
0 �
0  � �
0*: � f%=1 �report_err("Failed to load one sample",100,�)
04? � f%>1 �report_err("Failed to load "+�f%+" samples",100,�)
0> :
0H
 f%=0:� �
0R � n%=0 � i%-1
0\ � � � f%+=1:� �tvp
0f o%=slotblk%?n%
0p
 � o%>0 �
0z  � pathname$(n%)<>"" �
0�?   � �install_in_slot(n%,o%)=� � 100,"Sample slot occupied"
0�  �
0�   f%+=1
0�  �
0� �
0� �
0� � �
0�= � f%=1 �report_err("Failed to install one sample",100,�)
0�B � f%>1 �report_err("Failed to install "+�f%+" samples",100,�)
0� �
0� :
0�% � f$="<Wimp$Scrap>" f$=leafname$
0� �update_title(main%,0,f$)
1% ș "Wimp_GetCaretPosition",,blk%
1 � !blk%=-1 o%=� � o%=�
1' �popup_window(main%,1):mainopen%=�
1$ � o% �getif
1. changed%=�
181 � scrap%<>0 � "Delete <Wimp$Scrap>":scrap%=0
1B ș "Hourglass_Off"
1L �
1V
1` ��dataload_ack
1j) messblk%!12=messblk%!8:messblk%!16=4
1t1 ș "Wimp_SendMessage",17,messblk%,messblk%!4
1~ �
1�
1� ��checkchange(a%)
1�
 � a%=� �
1� � savechoices%=� �
1�6 � changed%=� changed%=�:�update_title(main%,2,"")
1� �
1� �
1�6 � changed%=� changed%=�:�update_title(main%,2,"")
1� �
1� �
1�
1� ݤnegative(a%)
2% � a%>127 =(&FFFFFF00 � a%) � =a%
2

2 ��load_sample(len%,p%)
2 � sft%,addr%
2( sft%=�set_sft(filetype%)
22) � scrap%<>0 filename$="<Wimp$Scrap>"
2<: � sft%<1 � sft%>7 � 1,"Sample file type out of range"
2F= � sampoffset% � 4<>0 � 1,"Sample block not word aligned"
2P ș "Hourglass_On"
2Z" addr%=samplebase%+sampoffset%
2d$ � "Load "+filename$+" "+�~addr%
2n! � code%+&240,sft%,addr%,len%
2x! sampaddr%(next%)=sampoffset%
2� sampoffset%+=len%
2�) sampoffset%=�word_align(sampoffset%)
2�E � scrap%<>0 � "Delete <Wimp$Scrap>":scrap%=0:filename$=leafname$
2� �updatesamparrays(len%,p%)
2� ș "Hourglass_Off"
2� �
2�
2� ��delete_sample(i%)
2�4 � a%,b%,icon%,len1%,len2%,saddr%,t%:icon%=i%-p%
2�K t%=type%(icon%):len1%=size%(icon%):saddr%=samplebase%+sampaddr%(icon%)
2�: � t%<>&FFA � ?(code%+&9D0+icon%)>0 � code%+&864,icon%
2� � t%=&FFA len1%=0
2� len1%=�word_align(len1%)
3 � icon%<(next%-1) �
3 � a%=icon% � next%-2
3 � t%<>&FFA � len1%<>0 �
3"+ � type%(a%+1)<>&FFA � size%(a%+1)<>0 �
3,/ len2%=size%(a%+1):len2%=�word_align(len2%)
36# b%=samplebase%+sampaddr%(a%+1)
3@ � code%,b%,saddr%,len2%
3J3 sampaddr%(a%)=saddr%-samplebase%:saddr%+=len2%
3T �
3^ �
3h" sampaddr%(a%)=sampaddr%(a%+1)
3r �
3|= ?(code%+&9D0+a%)=?(code%+&9D0+a%+1):?(code%+&9D0+a%+1)=0
3�" pathname$(a%)=pathname$(a%+1)
3� size%(a%)=size%(a%+1)
3� type%(a%)=type%(a%+1)
3� �
3�
 p%+=1
3� �
3�9 !blk%=samplist%:blk%!4=i%:ș "Wimp_DeleteIcon",,blk%
3� next%-=1:� t%<>&FFA �
3�* t%=�extend(-len1%):sampoffset%-=len1%
3�O � sampoffset%<=0 ș "OS_Module",7,,samplebase%:samplebase%=0:sampoffset%=0
3� �
3� �
3�
4 ��renumber_icon(icon%)
4% �get_icon_state(samplist%,icon%)
4+ blk%!12=0-(p%*44)-44:blk%!20=0-(p%*44)
4& ș "Wimp_DeleteIcon",,blk%
402 blk%!4=samplist%:ș "Wimp_CreateIcon",,blk%+4
4:
 p%+=1
4D �
4N
4X ݤfile_present(f$,t%)
4b � N%,a%:a%=�
4l � next%=0 � t%=&10C =�
4v � N%=1 � next%
4�) � �leafname(pathname$(N%-1))=f$ a%=�
4� �
4� =a%
4�
4� ��updatesampicon(i%)
4� �set_icon(samples%,1,�i%)
4� �
4�
4� ��storesamples(offset%,c$)
4� � a%,b%,a$,b$,c%,N%:c%=�
4� � N%=1 � 32
4�& ș "Sound_InstallVoice",0,N% � f%
4�< � f%<>0 ș "Sound_InstallVoice",0,N% � text$ � text$=""
5" � � text$>32 text$=�text$,32)
5( $(blk%+(((N%-1)+offset%)*32))=text$
5 �
5  � offset%=32 �
5* � N%=0 � 31
54/ a$=$(blk%+(N%*32)):b$=$(blk%+((N%+32)*32))
5> � a$<>b$ c%=�
5H �
5R> � c%=� loaded%=�:�report_err("Not a sample module",100,�)
5\ �
5f �
5p
5z ݤget_module_name(path$)
5� � a$,a%,b%
5� a%=� path$
5� �:b%=�# a%:� �#a%=&10
5� � N%=0 � 3:blk%?N%=�# a%:�
5� �#a%=!blk%
5�" �:b%=�# a%:a$=a$+�(b%):� b%=0
5� a$=�a$,�a$-1)
5�
 �# a%
5� =a$
5�
5� ��kill_module(name$)
5�1 � �module_present(name$)=� � "RMKill "+name$
5� �
6
6 ݤmodule_present(name$)
6 � a%,b%
6$! *Set KeyboardTempVar Present
6.< � "RMEnsure "+name$+" 0 Set KeyboardTempVar NotPresent"
68? ș "OS_ReadVarVal","KeyboardTempVar",blk%,&1500,0,0 � ,,a%
6B ?(blk%+a%)=&D
6L *Unset KeyboardTempVar
6V � $blk%="Present" =� � =�
6`
6j ݤset_sft(t%)
6t	 � a%
6~ Ȏ t% �
6� � &FFA:a%=1
6� � &DF9:a%=2
6� � &CB5:a%=3
6� � &ED0:a%=4
6� � &D3C:a%=6
6� � &FFD:a%=5
6� �
6� =a%
6�
6� ݤword_align(a%)
6� ȕ a% � 4<>0:a%+=1:�:=a%
6�
7 ��desksave
7
	 � N%
7d � � � messblk%!12=messblk%!8:ș "Wimp_SendMessage",19,messblk%,messblk%!4:�report_err(�$,�,�):�
7= ș "XOS_ReadVarVal","Keyboard$Dir",blk%,&1500,0,3 � ,,N%
7( blk%?N%=13
72  �# messblk%!20,"Run "+$blk%
7< �
7F
7P ��install_sample(i%)
7Z � a$,t%,addr%,a%:a%=0
7d& ș "Sound_InstallVoice",0,0 � ,a%
7n � a%=0 � type%(i%)=&FFA �
7x � ?(code%+&9D0+i%)=0 �
7�  a$=�leafname(pathname$(i%))
7� t%=�set_sft(type%(i%))
7�$ addr%=samplebase%+sampaddr%(i%)
7�- � code%+&8CC,a%,i%,a$,t%,addr%,size%(i%)
7� t%=?(code%+&9D0+i%)
7�9 � t%=0 �report_err("Failed to install sample",100,�)
7� �
7� �
7�
7� ��remove_sample(i%)
7� � type%(i%)=&FFA �
7� � ?(code%+&9D0+i%)>0 �
7� � code%+&864,i%
8 �
8 �
8
8" ݤclaim(len%)
8, � a%,N%
86' ș "XOS_Module",6,,,len% � ,,a%;N%
8@ � N% � %0001 =0
8J =a%
8T
8^ ݤextend(len%)
8h! � s%,N%,a%,i%:a%=samplebase%
8r len%=�word_align(len%)
8| � sampoffset%=0 �
8� samplebase%=�claim(len%)
8�C � samplebase%=0 �report_err("Not enough room in RMA",100,�):=�
8� �
8�< ș "XOS_Module",13,,samplebase%,len% � ,,samplebase%;N%
8�@ � N% � %0001 �report_err("Not enough room in RMA",100,�):=�
8�$ � samplebase%<>a% �reinitvoices
8� �
8� =�
8�
8� ��reinitvoices
8� � i%,s%,addr%,a$,a%
8� � i%=0 � 31
8� s%=?(code%+&9D0+i%)
9
 � s%>0 �
9 � code%+&864,i%
9$ addr%=samplebase%+sampaddr%(i%)
9&7 a$=�leafname(pathname$(i%)):a%=�set_sft(type%(i%))
90- � code%+&8CC,s%,i%,a$,a%,addr%,size%(i%)
9: �
9D �
9N �
9X
9b ݤinstall_in_slot(i%,s%)
9l � addr%,a$,a%
9v8 � s%<1 � s%>32 � 1,"Voice slot number out of range"
9�& ș "Sound_InstallVoice",0,s% � a%
9� � a%<>0 =�
9�$ addr%=samplebase%+sampaddr%(i%)
9�7 a$=�leafname(pathname$(i%)):a%=�set_sft(type%(i%))
9�- � code%+&8CC,s%,i%,a$,a%,addr%,size%(i%)
9� =�
9�
9� ݤcheck_list(action%)
9� � n%,addr%,a%:n%=0:a%=0
9�5 ș "Wimp_WhichIcon",samplist%,blk%,%1<<21,%1<<21
9� addr%=blk%
9� �
9� � type%(!addr%)=&FFA �
:  n%+=1
: �
:  Ȏ action% �
: 	  � 0
:*$  � ?(code%+&9D0+!addr%)>0 n%+=1
:4	  � 1
:>$  � ?(code%+&9D0+!addr%)=0 n%+=1
:H  �
:R �
:\ addr%+=4:a%+=1:� !addr%=-1
:f � a%=n% =�
:p =�
:z
:� ��mute
:� � v%,N%
:� *Audio Off
:� voice$()=""
:� � N%=1 � 8
:�& ș "Sound_AttachVoice",N%,0 � ,v%
:�7 � v%>0 ș "Sound_InstallVoice",0,v% � voice$(N%-1)
:� �
:� �
:�
:� ��restore
:�	 � N%
:� � N%=1 � 8
;1 ș "XSound_AttachNamedVoice",N%,voice$(N%-1)
; �
; *Audio On
;$ �
�
00000000  0d 00 0a 20 20 f4 20 20  20 20 20 3e 21 52 75 6e  |...  .     >!Run|
00000010  49 6d 61 67 65 20 28 4b  65 79 62 6f 61 72 64 29  |Image (Keyboard)|
00000020  0d 00 14 16 20 f4 20 62  79 20 20 54 68 6f 6d 61  |.... . by  Thoma|
00000030  73 20 44 61 6c 79 0d 00  1e 16 20 f4 20 28 63 29  |s Daly.... . (c)|
00000040  20 41 55 20 4d 61 79 20  31 39 39 34 0d 00 28 04  | AU May 1994..(.|
00000050  0d 00 32 0d 20 f2 69 6e  69 74 61 6c 6c 0d 00 3c  |..2. .initall..<|
00000060  33 20 ee 20 85 20 f2 72  65 70 6f 72 74 5f 65 72  |3 . . .report_er|
00000070  72 28 f6 24 2c 9f 2c 9e  29 3a e7 20 66 69 6e 69  |r(.$,.,.):. fini|
00000080  73 68 25 20 f2 63 6c 6f  73 65 64 6f 77 6e 3a e0  |sh% .closedown:.|
00000090  0d 00 46 04 0d 00 50 06  20 f5 0d 00 5a 23 20 c8  |..F...P. ...Z# .|
000000a0  99 20 22 57 69 6d 70 5f  50 6f 6c 6c 22 2c 6d 61  |. "Wimp_Poll",ma|
000000b0  73 6b 25 2c 62 6c 6b 25  20 b8 20 41 25 0d 00 64  |sk%,blk% . A%..d|
000000c0  0c 20 c8 8e 20 41 25 20  ca 0d 00 6e 09 20 c9 20  |. .. A% ...n. . |
000000d0  30 3a 0d 00 78 16 20 e7  20 6b 65 79 64 6f 77 6e  |0:..x. . keydown|
000000e0  25 3c 3e 26 46 46 20 8c  0d 00 82 1f 20 c8 99 20  |%<>&FF ..... .. |
000000f0  22 4f 53 5f 42 79 74 65  22 2c 26 37 41 20 b8 20  |"OS_Byte",&7A . |
00000100  2c 6b 63 6f 64 65 25 0d  00 8c 38 20 e7 20 6b 63  |,kcode%...8 . kc|
00000110  6f 64 65 25 3d 26 46 46  20 f2 64 65 63 6f 64 65  |ode%=&FF .decode|
00000120  5f 64 72 61 67 3a 6d 61  73 6b 25 3d 26 38 30 30  |_drag:mask%=&800|
00000130  33 33 3a 6b 65 79 64 6f  77 6e 25 3d 26 46 46 0d  |33:keydown%=&FF.|
00000140  00 96 06 20 cd 0d 00 a0  14 20 e7 20 64 72 61 67  |... ..... . drag|
00000150  62 61 72 25 3c 3e 30 20  8c 0d 00 aa 16 20 f2 67  |bar%<>0 ..... .g|
00000160  65 74 5f 70 6f 69 6e 74  65 72 5f 69 6e 66 6f 0d  |et_pointer_info.|
00000170  00 b4 2b 20 e7 20 64 72  61 67 62 61 72 25 3d 26  |..+ . dragbar%=&|
00000180  46 46 20 f2 67 65 74 5f  77 69 6e 64 6f 77 5f 73  |FF .get_window_s|
00000190  74 61 74 65 28 63 6f 6e  25 29 0d 00 be 29 20 64  |tate(con%)...) d|
000001a0  72 61 67 62 61 72 25 3d  28 28 28 6d 6f 75 73 65  |ragbar%=(((mouse|
000001b0  78 25 2d 78 30 25 29 81  20 32 33 29 2a 32 33 29  |x%-x0%). 23)*23)|
000001c0  2b 31 32 0d 00 c8 1e 20  e7 20 64 72 61 67 62 61  |+12.... . dragba|
000001d0  72 25 3c 3e 6f 6c 64 64  72 61 67 62 61 72 25 20  |r%<>olddragbar% |
000001e0  8c 0d 00 d2 1d 20 f2 67  65 74 5f 69 63 6f 6e 5f  |..... .get_icon_|
000001f0  73 74 61 74 65 28 63 6f  6e 25 2c 31 39 29 0d 00  |state(con%,19)..|
00000200  dc 30 20 62 6c 6b 25 21  31 36 3d 64 72 61 67 62  |.0 blk%!16=dragb|
00000210  61 72 25 3a c8 99 20 22  57 69 6d 70 5f 44 65 6c  |ar%:.. "Wimp_Del|
00000220  65 74 65 49 63 6f 6e 22  2c 2c 62 6c 6b 25 0d 00  |eteIcon",,blk%..|
00000230  e6 2d 20 62 6c 6b 25 21  34 3d 63 6f 6e 25 3a c8  |.- blk%!4=con%:.|
00000240  99 20 22 57 69 6d 70 5f  43 72 65 61 74 65 49 63  |. "Wimp_CreateIc|
00000250  6f 6e 22 2c 2c 62 6c 6b  25 2b 34 0d 00 f0 43 20  |on",,blk%+4...C |
00000260  c8 99 20 22 57 69 6d 70  5f 46 6f 72 63 65 52 65  |.. "Wimp_ForceRe|
00000270  64 72 61 77 22 2c 63 6f  6e 25 2c 62 6c 6b 25 21  |draw",con%,blk%!|
00000280  38 2c 62 6c 6b 25 21 31  32 2c 28 78 31 25 2d 78  |8,blk%!12,(x1%-x|
00000290  30 25 29 2d 32 30 2c 62  6c 6b 25 21 32 30 0d 00  |0%)-20,blk%!20..|
000002a0  fa 19 20 6f 6c 64 64 72  61 67 62 61 72 25 3d 64  |.. olddragbar%=d|
000002b0  72 61 67 62 61 72 25 0d  01 04 06 20 cd 0d 01 0e  |ragbar%.... ....|
000002c0  06 20 cd 0d 01 18 15 20  c9 20 32 3a f2 6f 70 65  |. ..... . 2:.ope|
000002d0  6e 5f 77 69 6e 64 6f 77  0d 01 22 1d 20 c9 20 33  |n_window..". . 3|
000002e0  3a f2 63 6c 6f 73 65 5f  77 69 6e 64 6f 77 28 21  |:.close_window(!|
000002f0  62 6c 6b 25 29 0d 01 2c  3c 20 c9 20 36 3a f2 6d  |blk%)..,< . 6:.m|
00000300  6f 75 73 65 5f 63 6c 69  63 6b 28 21 62 6c 6b 25  |ouse_click(!blk%|
00000310  2c 62 6c 6b 25 21 34 2c  62 6c 6b 25 21 38 2c 62  |,blk%!4,blk%!8,b|
00000320  6c 6b 25 21 31 32 2c 62  6c 6b 25 21 31 36 2c a3  |lk%!12,blk%!16,.|
00000330  29 0d 01 36 15 20 c9 20  37 3a f2 64 65 63 6f 64  |)..6. . 7:.decod|
00000340  65 5f 64 72 61 67 0d 01  40 2b 20 c9 20 38 3a f2  |e_drag..@+ . 8:.|
00000350  6b 65 79 5f 70 72 65 73  73 65 64 28 21 62 6c 6b  |key_pressed(!blk|
00000360  25 2c 62 6c 6b 25 21 34  2c 62 6c 6b 25 21 32 34  |%,blk%!4,blk%!24|
00000370  29 0d 01 4a 1b 20 c9 20  39 3a f2 64 65 63 6f 64  |)..J. . 9:.decod|
00000380  65 5f 6d 65 6e 75 28 62  6c 6b 25 29 0d 01 54 2f  |e_menu(blk%)..T/|
00000390  20 c9 20 31 31 3a e7 20  21 62 6c 6b 25 3d 6d 61  | . 11:. !blk%=ma|
000003a0  69 6e 25 20 69 66 6e 65  65 64 65 64 25 3d b9 3a  |in% ifneeded%=.:|
000003b0  73 75 6e 65 65 64 65 64  25 3d b9 0d 01 5e 23 20  |suneeded%=...^# |
000003c0  c9 20 31 32 3a e7 20 21  62 6c 6b 25 3d 6d 61 69  |. 12:. !blk%=mai|
000003d0  6e 25 20 69 66 6e 65 65  64 65 64 25 3d a3 0d 01  |n% ifneeded%=...|
000003e0  68 1a 20 c9 20 31 37 2c  31 38 3a f2 72 65 63 65  |h. . 17,18:.rece|
000003f0  69 76 65 5f 6d 65 73 73  0d 01 72 06 20 cb 0d 01  |ive_mess..r. ...|
00000400  7c 0e 20 fd 20 66 69 6e  69 73 68 25 0d 01 86 11  ||. . finish%....|
00000410  20 f2 63 6c 6f 73 65 64  6f 77 6e 3a e0 0d 01 90  | .closedown:....|
00000420  04 0d 01 9a 13 20 dd f2  72 65 63 65 69 76 65 5f  |..... ..receive_|
00000430  6d 65 73 73 0d 01 a4 2f  20 e3 20 4e 25 3d 30 20  |mess.../ . N%=0 |
00000440  b8 20 21 62 6c 6b 25 2d  31 20 88 20 34 3a 6d 65  |. !blk%-1 . 4:me|
00000450  73 73 62 6c 6b 25 21 4e  25 3d 62 6c 6b 25 21 4e  |ssblk%!N%=blk%!N|
00000460  25 3a ed 0d 01 ae 11 20  c8 8e 20 62 6c 6b 25 21  |%:..... .. blk%!|
00000470  31 36 20 ca 0d 01 b8 12  20 c9 20 30 3a 66 69 6e  |16 ..... . 0:fin|
00000480  69 73 68 25 3d b9 0d 01  c2 08 20 c9 20 31 0d 01  |ish%=..... . 1..|
00000490  cc 11 20 c8 8e 20 62 6c  6b 25 21 34 30 20 ca 0d  |.. .. blk%!40 ..|
000004a0  01 d6 29 20 c9 20 26 44  46 39 2c 26 43 42 35 2c  |..) . &DF9,&CB5,|
000004b0  26 45 44 30 2c 26 44 33  43 2c 26 46 46 44 2c 26  |&ED0,&D3C,&FFD,&|
000004c0  46 46 41 2c 26 31 30 43  0d 01 e0 34 20 c8 99 20  |FFA,&10C...4 .. |
000004d0  22 58 4f 53 5f 52 65 61  64 56 61 72 56 61 6c 22  |"XOS_ReadVarVal"|
000004e0  2c 22 57 69 6d 70 24 53  63 72 61 70 22 2c 2c 2d  |,"Wimp$Scrap",,-|
000004f0  31 2c 30 2c 33 20 b8 20  2c 2c 4e 25 0d 01 ea 39  |1,0,3 . ,,N%...9|
00000500  20 e7 20 4e 25 3d 30 20  f2 72 65 70 6f 72 74 5f  | . N%=0 .report_|
00000510  65 72 72 28 22 57 69 6d  70 24 53 63 72 61 70 20  |err("Wimp$Scrap |
00000520  6e 6f 74 20 64 65 66 69  6e 65 64 22 2c 31 30 30  |not defined",100|
00000530  2c 9e 29 3a e1 0d 01 f4  1f 20 6c 65 61 66 6e 61  |,.):..... leafna|
00000540  6d 65 24 3d a4 73 74 72  69 6e 67 28 62 6c 6b 25  |me$=.string(blk%|
00000550  2b 34 34 29 0d 01 fe 6c  20 e7 20 a4 66 69 6c 65  |+44)...l . .file|
00000560  5f 70 72 65 73 65 6e 74  28 6c 65 61 66 6e 61 6d  |_present(leafnam|
00000570  65 24 2c 62 6c 6b 25 21  34 30 29 3d b9 20 f2 72  |e$,blk%!40)=. .r|
00000580  65 70 6f 72 74 5f 65 72  72 28 22 53 61 6d 70 6c  |eport_err("Sampl|
00000590  65 20 6e 61 6d 65 20 27  22 2b 6c 65 61 66 6e 61  |e name '"+leafna|
000005a0  6d 65 24 2b 22 27 20 61  6c 72 65 61 64 79 20 70  |me$+"' already p|
000005b0  72 65 73 65 6e 74 22 2c  31 30 30 2c 9e 29 3a e1  |resent",100,.):.|
000005c0  0d 02 08 36 20 21 6d 65  73 73 62 6c 6b 25 3d 36  |...6 !messblk%=6|
000005d0  34 3a 6d 65 73 73 62 6c  6b 25 21 31 32 3d 6d 65  |4:messblk%!12=me|
000005e0  73 73 62 6c 6b 25 21 38  3a 6d 65 73 73 62 6c 6b  |ssblk%!8:messblk|
000005f0  25 21 31 36 3d 32 0d 02  12 34 20 6d 65 73 73 62  |%!16=2...4 messb|
00000600  6c 6b 25 21 33 36 3d 2d  31 3a 24 28 6d 65 73 73  |lk%!36=-1:$(mess|
00000610  62 6c 6b 25 2b 34 34 29  3d 22 3c 57 69 6d 70 24  |blk%+44)="<Wimp$|
00000620  53 63 72 61 70 3e 22 2b  bd 30 0d 02 1c 31 20 c8  |Scrap>"+.0...1 .|
00000630  99 20 22 57 69 6d 70 5f  53 65 6e 64 4d 65 73 73  |. "Wimp_SendMess|
00000640  61 67 65 22 2c 31 37 2c  6d 65 73 73 62 6c 6b 25  |age",17,messblk%|
00000650  2c 6d 65 73 73 62 6c 6b  25 21 34 0d 02 26 16 20  |,messblk%!4..&. |
00000660  73 63 72 61 70 25 3d 6d  65 73 73 62 6c 6b 25 21  |scrap%=messblk%!|
00000670  38 0d 02 30 06 20 cb 0d  02 3a 08 20 c9 20 32 0d  |8..0. ...:. . 2.|
00000680  02 44 42 20 e7 20 62 6c  6b 25 21 31 32 3c 3e 73  |.DB . blk%!12<>s|
00000690  61 76 65 72 65 66 25 20  85 20 31 2c 22 55 6e 65  |averef% . 1,"Une|
000006a0  78 70 65 63 74 65 64 20  44 61 74 61 53 61 76 65  |xpected DataSave|
000006b0  20 70 61 63 6b 65 74 20  72 65 63 65 69 76 65 64  | packet received|
000006c0  22 0d 02 4e 40 20 e7 20  62 6c 6b 25 21 34 30 3c  |"..N@ . blk%!40<|
000006d0  3e 26 31 30 43 20 85 20  31 2c 22 55 6e 65 78 70  |>&10C . 1,"Unexp|
000006e0  65 63 74 65 64 20 44 61  74 61 53 61 76 65 20 66  |ected DataSave f|
000006f0  69 6c 65 74 79 70 65 20  72 65 63 65 69 76 65 64  |iletype received|
00000700  22 0d 02 58 1f 20 66 69  6c 65 6e 61 6d 65 24 3d  |"..X. filename$=|
00000710  a4 73 74 72 69 6e 67 28  62 6c 6b 25 2b 34 34 29  |.string(blk%+44)|
00000720  0d 02 62 2b 20 e7 20 6d  65 6e 75 62 75 74 25 3c  |..b+ . menubut%<|
00000730  3e 31 20 c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |>1 .. "Wimp_Crea|
00000740  74 65 4d 65 6e 75 22 2c  2c 2d 31 0d 02 6c 0f 20  |teMenu",,-1..l. |
00000750  6d 65 6e 75 62 75 74 25  3d 30 0d 02 76 50 20 e7  |menubut%=0..vP .|
00000760  20 62 6c 6b 25 21 33 36  3c 3e 2d 31 20 f2 6b 65  | blk%!36<>-1 .ke|
00000770  79 62 6f 61 72 64 64 61  74 61 6f 75 74 28 66 69  |yboarddataout(fi|
00000780  6c 65 6e 61 6d 65 24 2c  b9 29 20 8b 20 f2 6b 65  |lename$,.) . .ke|
00000790  79 62 6f 61 72 64 64 61  74 61 6f 75 74 28 66 69  |yboarddataout(fi|
000007a0  6c 65 6e 61 6d 65 24 2c  a3 29 0d 02 80 29 20 6d  |lename$,.)...) m|
000007b0  65 73 73 62 6c 6b 25 21  31 32 3d 6d 65 73 73 62  |essblk%!12=messb|
000007c0  6c 6b 25 21 38 3a 6d 65  73 73 62 6c 6b 25 21 31  |lk%!8:messblk%!1|
000007d0  36 3d 33 0d 02 8a 31 20  c8 99 20 22 57 69 6d 70  |6=3...1 .. "Wimp|
000007e0  5f 53 65 6e 64 4d 65 73  73 61 67 65 22 2c 31 37  |_SendMessage",17|
000007f0  2c 6d 65 73 73 62 6c 6b  25 2c 6d 65 73 73 62 6c  |,messblk%,messbl|
00000800  6b 25 21 34 0d 02 94 08  20 c9 20 33 0d 02 9e 3c  |k%!4.... . 3...<|
00000810  20 66 69 6c 65 6e 61 6d  65 24 3d a4 73 74 72 69  | filename$=.stri|
00000820  6e 67 28 62 6c 6b 25 2b  34 34 29 3a 66 69 6c 65  |ng(blk%+44):file|
00000830  74 79 70 65 25 3d 62 6c  6b 25 21 34 30 3a f2 6c  |type%=blk%!40:.l|
00000840  6f 61 64 5f 66 69 6c 65  0d 02 a8 08 20 c9 20 35  |oad_file.... . 5|
00000850  0d 02 b2 48 20 e7 20 62  6c 6b 25 21 34 30 3d 26  |...H . blk%!40=&|
00000860  31 30 43 20 66 69 6c 65  6e 61 6d 65 24 3d a4 73  |10C filename$=.s|
00000870  74 72 69 6e 67 28 62 6c  6b 25 2b 34 34 29 3a 66  |tring(blk%+44):f|
00000880  69 6c 65 74 79 70 65 25  3d 26 31 30 43 3a f2 6c  |iletype%=&10C:.l|
00000890  6f 61 64 5f 66 69 6c 65  0d 02 bc 08 20 c9 20 38  |oad_file.... . 8|
000008a0  0d 02 c6 11 20 e7 20 63  68 61 6e 67 65 64 25 20  |.... . changed% |
000008b0  8c 0d 02 d0 31 20 62 6c  6b 25 21 31 32 3d 62 6c  |....1 blk%!12=bl|
000008c0  6b 25 21 38 3a c8 99 20  22 57 69 6d 70 5f 53 65  |k%!8:.. "Wimp_Se|
000008d0  6e 64 4d 65 73 73 61 67  65 22 2c 31 39 2c 62 6c  |ndMessage",19,bl|
000008e0  6b 25 0d 02 da 14 20 f2  6d 65 73 73 61 67 65 5f  |k%.... .message_|
000008f0  62 6f 78 28 33 29 0d 02  e4 06 20 cd 0d 02 ee 13  |box(3).... .....|
00000900  20 c9 20 31 30 3a f2 64  65 73 6b 73 61 76 65 0d  | . 10:.desksave.|
00000910  02 f8 1a 20 c9 20 26 34  30 30 43 31 3a f2 67 65  |... . &400C1:.ge|
00000920  74 6d 6f 64 65 69 6e 66  6f 0d 03 02 06 20 cb 0d  |tmodeinfo.... ..|
00000930  03 0c 06 20 e1 0d 03 16  04 0d 03 20 11 20 dd a4  |... ....... . ..|
00000940  73 74 72 69 6e 67 28 61  25 29 0d 03 2a 2e 20 ea  |string(a%)..*. .|
00000950  20 64 24 3a 64 24 3d 22  22 3a c8 95 20 3f 61 25  | d$:d$="":.. ?a%|
00000960  3c 3e 30 3a 64 24 2b 3d  bd 3f 61 25 3a 61 25 2b  |<>0:d$+=.?a%:a%+|
00000970  3d 31 3a ce 3a 3d 64 24  0d 03 34 04 0d 03 3e 0e  |=1:.:=d$..4...>.|
00000980  20 dd f2 69 6e 69 74 61  6c 6c 0d 03 48 29 20 ee  | ..initall..H) .|
00000990  20 85 20 f2 72 65 70 6f  72 74 5f 65 72 72 28 f6  | . .report_err(.|
000009a0  24 2c 9f 2c 9e 29 3a f2  63 6c 6f 73 65 64 6f 77  |$,.,.):.closedow|
000009b0  6e 3a e0 0d 03 52 10 20  ea 20 4e 25 2c 4e 32 25  |n:...R. . N%,N2%|
000009c0  2c 66 24 0d 03 5c 16 20  c8 99 20 22 48 6f 75 72  |,f$..\. .. "Hour|
000009d0  67 6c 61 73 73 5f 4f 6e  22 0d 03 66 3d 20 c8 99  |glass_On"..f= ..|
000009e0  20 22 57 69 6d 70 5f 49  6e 69 74 69 61 6c 69 73  | "Wimp_Initialis|
000009f0  65 22 2c 32 30 30 2c 26  34 42 35 33 34 31 35 34  |e",200,&4B534154|
00000a00  2c 22 4b 65 79 62 6f 61  72 64 22 20 b8 20 76 65  |,"Keyboard" . ve|
00000a10  72 73 69 6f 6e 25 0d 03  70 1a 20 63 6f 64 65 25  |rsion%..p. code%|
00000a20  3d 30 3a 73 61 6d 70 6c  65 62 61 73 65 25 3d 30  |=0:samplebase%=0|
00000a30  0d 03 7a 06 20 3a 0d 03  84 6e 20 de 20 62 6c 6b  |..z. :...n . blk|
00000a40  25 20 26 31 30 30 30 2c  62 75 66 25 20 26 31 30  |% &1000,buf% &10|
00000a50  30 30 2c 66 6d 69 74 65  6d 25 20 32 30 2c 6d 73  |00,fmitem% 20,ms|
00000a60  74 25 20 36 34 2c 6d 65  6e 75 64 61 74 61 25 20  |t% 64,menudata% |
00000a70  26 36 30 30 2c 6d 62 6c  6b 25 20 33 36 2c 6d 65  |&600,mblk% 36,me|
00000a80  73 73 62 6c 6b 25 20 32  35 36 2c 73 6c 6f 74 62  |ssblk% 256,slotb|
00000a90  6c 6b 25 20 33 31 2c 76  6c 69 73 74 62 6c 6b 25  |lk% 31,vlistblk%|
00000aa0  20 37 30 33 0d 03 8e 3c  20 62 75 66 73 74 61 72  | 703...< bufstar|
00000ab0  74 25 3d 62 75 66 25 3a  6d 64 61 74 61 73 74 61  |t%=buf%:mdatasta|
00000ac0  72 74 25 3d 6d 65 6e 75  64 61 74 61 25 3a 76 6c  |rt%=menudata%:vl|
00000ad0  73 74 61 72 74 25 3d 76  6c 69 73 74 62 6c 6b 25  |start%=vlistblk%|
00000ae0  0d 03 98 37 20 76 65 72  73 69 6f 6e 24 3d 22 31  |...7 version$="1|
00000af0  2e 33 32 20 28 31 36 2d  4f 63 74 2d 39 33 29 22  |.32 (16-Oct-93)"|
00000b00  3a 6d 61 73 6b 25 3d 26  38 30 30 33 33 3a 66 69  |:mask%=&80033:fi|
00000b10  6e 69 73 68 25 3d a3 0d  03 a2 28 20 63 6f 6e 74  |nish%=....( cont|
00000b20  72 6f 6c 73 25 3d a3 3a  73 61 6d 70 6f 70 65 6e  |rols%=.:sampopen|
00000b30  25 3d a3 3a 6d 61 69 6e  6f 70 65 6e 25 3d a3 0d  |%=.:mainopen%=..|
00000b40  03 ac 35 20 69 66 6e 65  65 64 65 64 25 3d b9 3a  |..5 ifneeded%=.:|
00000b50  73 75 6e 65 65 64 65 64  25 3d b9 3a 64 72 61 67  |suneeded%=.:drag|
00000b60  62 61 72 25 3d 30 3a 6f  6c 64 64 72 61 67 62 61  |bar%=0:olddragba|
00000b70  72 25 3d 30 0d 03 b6 22  20 78 30 25 3d 30 3a 78  |r%=0..." x0%=0:x|
00000b80  31 25 3d 30 3a 79 30 25  3d 30 3a 79 31 25 3d 30  |1%=0:y0%=0:y1%=0|
00000b90  3a 77 66 25 3d 30 0d 03  c0 3c 20 6d 68 61 6e 25  |:wf%=0...< mhan%|
00000ba0  3d 30 3a 6d 6f 75 73 65  78 25 3d 30 3a 6d 6f 75  |=0:mousex%=0:mou|
00000bb0  73 65 79 25 3d 30 3a 6d  62 75 74 25 3d 30 3a 6d  |sey%=0:mbut%=0:m|
00000bc0  69 63 6f 6e 25 3d 30 3a  6d 65 6e 75 62 75 74 25  |icon%=0:menubut%|
00000bd0  3d 30 0d 03 ca 2b 20 6d  65 6e 75 77 69 64 74 68  |=0...+ menuwidth|
00000be0  25 3d 31 37 34 3a 6b 65  79 73 74 61 74 25 3d 30  |%=174:keystat%=0|
00000bf0  3a 72 65 64 72 61 77 72  65 71 25 3d b9 0d 03 d4  |:redrawreq%=....|
00000c00  0f 20 6d 61 63 74 69 6f  6e 25 3d 30 0d 03 de 06  |. maction%=0....|
00000c10  20 3a 0d 03 e8 54 20 de  20 70 61 74 68 6e 61 6d  | :...T . pathnam|
00000c20  65 24 28 33 31 29 2c 73  69 7a 65 25 28 33 31 29  |e$(31),size%(31)|
00000c30  2c 74 79 70 65 25 28 33  31 29 2c 73 61 6d 70 61  |,type%(31),sampa|
00000c40  64 64 72 25 28 33 31 29  2c 73 73 74 65 72 65 6f  |ddr%(31),sstereo|
00000c50  25 28 37 29 2c 6c 6f 61  64 65 64 76 6f 69 63 65  |%(7),loadedvoice|
00000c60  73 24 28 33 31 29 0d 03  f2 46 20 66 69 6c 65 6e  |s$(31)...F filen|
00000c70  61 6d 65 24 3d 22 22 3a  66 69 6c 65 74 79 70 65  |ame$="":filetype|
00000c80  25 3d 30 3a 6e 65 78 74  25 3d 30 3a 73 61 76 65  |%=0:next%=0:save|
00000c90  72 65 66 25 3d 30 3a 6c  65 61 66 6e 61 6d 65 24  |ref%=0:leafname$|
00000ca0  3d 22 22 3a 73 63 72 61  70 25 3d 30 0d 03 fc 06  |="":scrap%=0....|
00000cb0  20 3a 0d 04 06 28 20 de  20 6d 76 25 28 33 32 29  | :...( . mv%(32)|
00000cc0  2c 70 69 74 63 68 74 61  62 6c 65 25 28 31 31 29  |,pitchtable%(11)|
00000cd0  2c 76 6f 69 63 65 24 28  37 29 0d 04 10 33 20 63  |,voice$(7)...3 c|
00000ce0  68 61 6e 25 3d 31 3a 6f  63 74 25 3d 30 3a 76 6c  |han%=1:oct%=0:vl|
00000cf0  73 65 6c 25 3d 30 3a 6b  65 79 64 6f 77 6e 25 3d  |sel%=0:keydown%=|
00000d00  26 46 46 3a 73 61 6c 6f  6e 65 25 3d a3 0d 04 1a  |&FF:salone%=....|
00000d10  40 20 64 75 72 61 25 3d  32 30 3a 74 72 61 6e 73  |@ dura%=20:trans|
00000d20  25 3d 30 3a 76 6f 6c 75  6d 65 25 3d 2d 31 32 3a  |%=0:volume%=-12:|
00000d30  63 6f 75 6e 74 25 3d 30  3a 74 75 6e 6f 63 74 25  |count%=0:tunoct%|
00000d40  3d 30 3a 74 75 6e 73 65  6d 69 25 3d 30 0d 04 24  |=0:tunsemi%=0..$|
00000d50  3d 20 6b 65 79 6d 61 70  24 3d 22 5a 53 58 44 43  |= keymap$="ZSXDC|
00000d60  56 47 42 48 4e 4a 4d 51  32 57 33 45 52 35 54 36  |VGBHNJMQ2W3ER5T6|
00000d70  59 37 55 49 39 4f 30 50  5b 3d 5d a3 5c 22 3a 73  |Y7UI9O0P[=].\":s|
00000d80  68 6f 77 6b 65 79 73 25  3d b9 0d 04 2e 2a 20 73  |howkeys%=....* s|
00000d90  61 76 65 63 68 6f 69 63  65 73 25 3d a3 3a 61 75  |avechoices%=.:au|
00000da0  74 6f 69 6e 73 74 25 3d  b9 3a 63 68 61 6e 67 65  |toinst%=.:change|
00000db0  64 25 3d a3 0d 04 38 06  20 3a 0d 04 42 17 20 63  |d%=...8. :..B. c|
00000dc0  6f 64 65 25 3d a4 63 6c  61 69 6d 28 26 45 30 30  |ode%=.claim(&E00|
00000dd0  29 0d 04 4c 2b 20 e7 20  63 6f 64 65 25 3d 30 20  |)..L+ . code%=0 |
00000de0  85 20 31 2c 22 4e 6f 74  20 65 6e 6f 75 67 68 20  |. 1,"Not enough |
00000df0  72 6f 6f 6d 20 69 6e 20  52 4d 41 22 0d 04 56 2a  |room in RMA"..V*|
00000e00  20 ff 20 22 4c 6f 61 64  20 3c 4b 65 79 62 6f 61  | . "Load <Keyboa|
00000e10  72 64 24 44 69 72 3e 2e  43 6f 64 65 20 22 2b c3  |rd$Dir>.Code "+.|
00000e20  7e 63 6f 64 65 25 0d 04  60 06 20 3a 0d 04 6a 24  |~code%..`. :..j$|
00000e30  20 e3 20 4e 25 3d 30 20  b8 20 31 31 3a f3 20 70  | . N%=0 . 11:. p|
00000e40  69 74 63 68 74 61 62 6c  65 25 28 4e 25 29 3a ed  |itchtable%(N%):.|
00000e50  0d 04 74 4e 20 dc 20 26  34 30 30 30 2c 26 34 31  |..tN . &4000,&41|
00000e60  35 35 2c 26 34 32 41 41  2c 26 34 34 30 30 2c 26  |55,&42AA,&4400,&|
00000e70  34 35 35 35 2c 26 34 36  41 41 2c 26 34 38 30 30  |4555,&46AA,&4800|
00000e80  2c 26 34 39 41 41 2c 26  34 41 41 41 2c 26 34 43  |,&49AA,&4AAA,&4C|
00000e90  30 30 2c 26 34 44 35 35  2c 26 34 45 41 41 0d 04  |00,&4D55,&4EAA..|
00000ea0  7e 06 20 3a 0d 04 88 33  20 4e 25 3d 8e 20 22 3c  |~. :...3 N%=. "<|
00000eb0  4b 65 79 62 6f 61 72 64  24 44 69 72 3e 2e 53 70  |Keyboard$Dir>.Sp|
00000ec0  72 69 74 65 73 22 3a 4e  32 25 3d a2 23 4e 25 2b  |rites":N2%=.#N%+|
00000ed0  31 36 3a d9 23 4e 25 0d  04 92 13 20 de 20 73 70  |16:.#N%.... . sp|
00000ee0  72 69 74 65 73 25 20 4e  32 25 0d 04 9c 1f 20 21  |rites% N2%.... !|
00000ef0  73 70 72 69 74 65 73 25  3d 4e 32 25 3a 73 70 72  |sprites%=N2%:spr|
00000f00  69 74 65 73 25 21 38 3d  31 0d 04 a6 23 20 c8 99  |ites%!8=1...# ..|
00000f10  20 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 26  | "OS_SpriteOp",&|
00000f20  31 30 39 2c 73 70 72 69  74 65 73 25 0d 04 b0 3c  |109,sprites%...<|
00000f30  20 c8 99 20 22 4f 53 5f  53 70 72 69 74 65 4f 70  | .. "OS_SpriteOp|
00000f40  22 2c 26 31 30 41 2c 73  70 72 69 74 65 73 25 2c  |",&10A,sprites%,|
00000f50  22 3c 4b 65 79 62 6f 61  72 64 24 44 69 72 3e 2e  |"<Keyboard$Dir>.|
00000f60  53 70 72 69 74 65 73 22  0d 04 ba 06 20 3a 0d 04  |Sprites".... :..|
00000f70  c4 11 20 f2 67 65 74 6d  6f 64 65 69 6e 66 6f 0d  |.. .getmodeinfo.|
00000f80  04 ce 37 20 c8 99 20 22  57 69 6d 70 5f 4f 70 65  |..7 .. "Wimp_Ope|
00000f90  6e 54 65 6d 70 6c 61 74  65 22 2c 2c 22 3c 4b 65  |nTemplate",,"<Ke|
00000fa0  79 62 6f 61 72 64 24 44  69 72 3e 2e 54 65 6d 70  |yboard$Dir>.Temp|
00000fb0  6c 61 74 65 73 22 0d 04  d8 25 20 63 6f 6e 25 3d  |lates"...% con%=|
00000fc0  a4 63 72 65 61 74 65 5f  77 69 6e 64 6f 77 28 22  |.create_window("|
00000fd0  54 6f 6f 6c 62 6f 78 22  2c a3 29 0d 04 e2 23 20  |Toolbox",.)...# |
00000fe0  6d 61 69 6e 25 3d a4 63  72 65 61 74 65 5f 77 69  |main%=.create_wi|
00000ff0  6e 64 6f 77 28 22 4d 61  69 6e 22 2c b9 29 0d 04  |ndow("Main",.)..|
00001000  ec 23 20 69 6e 66 6f 25  3d a4 63 72 65 61 74 65  |.# info%=.create|
00001010  5f 77 69 6e 64 6f 77 28  22 49 6e 66 6f 22 2c a3  |_window("Info",.|
00001020  29 0d 04 f6 29 20 73 61  6d 70 6c 65 73 25 3d a4  |)...) samples%=.|
00001030  63 72 65 61 74 65 5f 77  69 6e 64 6f 77 28 22 53  |create_window("S|
00001040  61 6d 70 6c 65 73 22 2c  a3 29 0d 05 00 2b 20 73  |amples",.)...+ s|
00001050  61 6d 70 6c 69 73 74 25  3d a4 63 72 65 61 74 65  |amplist%=.create|
00001060  5f 77 69 6e 64 6f 77 28  22 53 61 6d 70 4c 69 73  |_window("SampLis|
00001070  74 22 2c a3 29 0d 05 0a  26 20 73 61 76 65 62 6f  |t",.)...& savebo|
00001080  78 25 3d a4 63 72 65 61  74 65 5f 77 69 6e 64 6f  |x%=.create_windo|
00001090  77 28 22 73 61 76 65 22  2c a3 29 0d 05 14 2b 20  |w("save",.)...+ |
000010a0  73 61 6d 70 69 6e 66 6f  25 3d a4 63 72 65 61 74  |sampinfo%=.creat|
000010b0  65 5f 77 69 6e 64 6f 77  28 22 53 61 6d 70 49 6e  |e_window("SampIn|
000010c0  66 6f 22 2c a3 29 0d 05  1e 29 20 6d 65 73 73 61  |fo",.)...) messa|
000010d0  67 65 25 3d a4 63 72 65  61 74 65 5f 77 69 6e 64  |ge%=.create_wind|
000010e0  6f 77 28 22 4d 65 73 73  61 67 65 22 2c a3 29 0d  |ow("Message",.).|
000010f0  05 28 27 20 74 75 6e 69  6e 67 25 3d a4 63 72 65  |.(' tuning%=.cre|
00001100  61 74 65 5f 77 69 6e 64  6f 77 28 22 54 75 6e 69  |ate_window("Tuni|
00001110  6e 67 22 2c a3 29 0d 05  32 1c 20 c8 99 20 22 57  |ng",.)..2. .. "W|
00001120  69 6d 70 5f 43 6c 6f 73  65 54 65 6d 70 6c 61 74  |imp_CloseTemplat|
00001130  65 22 0d 05 3c 21 20 f2  73 65 74 5f 69 63 6f 6e  |e"..<! .set_icon|
00001140  28 69 6e 66 6f 25 2c 31  31 2c 76 65 72 73 69 6f  |(info%,11,versio|
00001150  6e 24 29 0d 05 46 4d 20  f2 73 65 74 5f 69 63 6f  |n$)..FM .set_ico|
00001160  6e 28 6d 65 73 73 61 67  65 25 2c 30 2c 22 41 72  |n(message%,0,"Ar|
00001170  65 20 79 6f 75 20 73 75  72 65 3f 20 59 6f 75 72  |e you sure? Your|
00001180  20 63 75 72 72 65 6e 74  20 63 68 6f 69 63 65 73  | current choices|
00001190  20 61 72 65 20 6e 6f 74  20 73 61 76 65 64 22 29  | are not saved")|
000011a0  0d 05 50 1c 20 77 69 6e  6d 65 6e 75 25 3d a4 6d  |..P. winmenu%=.m|
000011b0  65 6e 75 74 72 65 65 28  33 2c a3 29 0d 05 5a 1b  |enutree(3,.)..Z.|
000011c0  20 69 63 6d 65 6e 75 25  3d a4 6d 65 6e 75 74 72  | icmenu%=.menutr|
000011d0  65 65 28 31 2c a3 29 0d  05 64 1b 20 76 6c 6d 65  |ee(1,.)..d. vlme|
000011e0  6e 75 25 3d a4 6d 65 6e  75 74 72 65 65 28 31 2c  |nu%=.menutree(1,|
000011f0  b9 29 0d 05 6e 1a 20 f2  6c 69 6e 6b 73 28 77 69  |.)..n. .links(wi|
00001200  6e 6d 65 6e 75 25 2c 26  36 30 30 29 0d 05 78 06  |nmenu%,&600)..x.|
00001210  20 3a 0d 05 82 20 20 73  61 6d 70 6c 65 62 61 73  | :...  samplebas|
00001220  65 25 3d 30 3a 73 61 6d  70 6f 66 66 73 65 74 25  |e%=0:sampoffset%|
00001230  3d 30 0d 05 8c 06 20 3a  0d 05 96 31 20 c8 99 20  |=0.... :...1 .. |
00001240  22 53 6f 75 6e 64 5f 49  6e 73 74 61 6c 6c 56 6f  |"Sound_InstallVo|
00001250  69 63 65 22 2c 30 2c 6d  76 25 28 30 29 20 b8 20  |ice",0,mv%(0) . |
00001260  63 75 72 76 6f 69 63 65  24 0d 05 a0 17 20 6b 69  |curvoice$.... ki|
00001270  63 6f 6e 62 61 72 25 3d  a4 69 63 6f 6e 62 61 72  |conbar%=.iconbar|
00001280  0d 05 aa 11 20 f2 74 6f  67 67 6c 65 63 68 61 72  |.... .togglechar|
00001290  73 0d 05 b4 18 20 c8 99  20 22 4f 53 5f 47 65 74  |s.... .. "OS_Get|
000012a0  45 6e 76 22 20 b8 20 66  24 0d 05 be 25 20 e7 20  |Env" . f$...% . |
000012b0  a7 66 24 2c 22 20 22 2c  31 33 29 3c 3e 30 20 80  |.f$," ",13)<>0 .|
000012c0  20 c2 66 24 2c 31 29 3c  3e 22 20 22 20 8c 0d 05  | .f$,1)<>" " ...|
000012d0  c8 2d 20 4e 25 3d a9 20  66 24 3a c8 95 20 c1 66  |.- N%=. f$:.. .f|
000012e0  24 2c 4e 25 2c 31 29 3c  3e 22 20 22 20 80 20 4e  |$,N%,1)<>" " . N|
000012f0  25 3e 31 3a 4e 25 2d 3d  31 3a ce 0d 05 d2 21 20  |%>1:N%-=1:....! |
00001300  f2 6b 65 79 62 6f 61 72  64 64 61 74 61 69 6e 28  |.keyboarddatain(|
00001310  c2 66 24 2c a9 66 24 2d  4e 25 29 29 0d 05 dc 06  |.f$,.f$-N%))....|
00001320  20 cd 0d 05 e6 17 20 c8  99 20 22 48 6f 75 72 67  | ..... .. "Hourg|
00001330  6c 61 73 73 5f 4f 66 66  22 0d 05 f0 0d 20 2a 50  |lass_Off".... *P|
00001340  6f 69 6e 74 65 72 0d 05  fa 06 20 e1 0d 06 04 04  |ointer.... .....|
00001350  0d 06 0e 4c 20 dc 20 4b  65 79 62 6f 61 72 64 2c  |...L . Keyboard,|
00001360  36 2c 53 61 6d 70 6c 65  20 27 27 2c 34 2c 53 65  |6,Sample '',4,Se|
00001370  6c 65 63 74 20 61 6c 6c  2c 30 2c 53 61 76 65 2c  |lect all,0,Save,|
00001380  30 2c 56 6f 69 63 65 2c  30 2c 54 75 6e 69 6e 67  |0,Voice,0,Tuning|
00001390  2c 30 2c 4f 70 74 69 6f  6e 73 2c 30 0d 06 18 4d  |,0,Options,0...M|
000013a0  20 dc 20 53 65 6c 65 63  74 69 6f 6e 2c 35 2c 49  | . Selection,5,I|
000013b0  6e 66 6f 2c 30 2c 44 65  6c 65 74 65 20 20 5e 58  |nfo,0,Delete  ^X|
000013c0  2c 30 2c 49 6e 73 74 61  6c 6c 20 5e 49 2c 30 2c  |,0,Install ^I,0,|
000013d0  52 65 6d 6f 76 65 20 20  5e 52 2c 30 2c 43 6c 65  |Remove  ^R,0,Cle|
000013e0  61 72 20 20 20 5e 5a 2c  30 0d 06 22 60 20 dc 20  |ar   ^Z,0.."` . |
000013f0  4f 70 74 69 6f 6e 73 2c  35 2c 41 75 74 6f 20 69  |Options,5,Auto i|
00001400  6e 73 74 61 6c 6c 2c 31  2c 53 61 76 65 20 63 68  |nstall,1,Save ch|
00001410  6f 69 63 65 73 2c 30 2c  53 74 61 6e 64 20 61 6c  |oices,0,Stand al|
00001420  6f 6e 65 2c 30 2c 43 6f  6e 74 72 6f 6c 73 2e 2e  |one,0,Controls..|
00001430  2e 20 20 5e 43 2c 30 2c  53 61 6d 70 6c 65 73 2e  |.  ^C,0,Samples.|
00001440  2e 2e 20 20 20 5e 53 2c  30 0d 06 2c 70 20 dc 20  |..   ^S,0..,p . |
00001450  35 2c 4b 65 79 62 6f 61  72 64 2c 30 2c 53 65 6c  |5,Keyboard,0,Sel|
00001460  65 63 74 69 6f 6e 2c 4b  65 79 62 6f 61 72 64 2c  |ection,Keyboard,|
00001470  32 2c 23 73 61 76 65 62  6f 78 25 2c 4b 65 79 62  |2,#savebox%,Keyb|
00001480  6f 61 72 64 2c 34 2c 23  74 75 6e 69 6e 67 25 2c  |oard,4,#tuning%,|
00001490  4b 65 79 62 6f 61 72 64  2c 35 2c 4f 70 74 69 6f  |Keyboard,5,Optio|
000014a0  6e 73 2c 53 65 6c 65 63  74 69 6f 6e 2c 30 2c 23  |ns,Selection,0,#|
000014b0  73 61 6d 70 69 6e 66 6f  25 0d 06 36 06 20 3a 0d  |sampinfo%..6. :.|
000014c0  06 40 1f 20 dc 20 4b 65  79 62 6f 61 72 64 2c 32  |.@. . Keyboard,2|
000014d0  2c 49 6e 66 6f 2c 30 2c  51 75 69 74 2c 30 0d 06  |,Info,0,Quit,0..|
000014e0  4a 1a 20 dc 20 31 2c 4b  65 79 62 6f 61 72 64 2c  |J. . 1,Keyboard,|
000014f0  30 2c 23 69 6e 66 6f 25  0d 06 54 06 20 3a 0d 06  |0,#info%..T. :..|
00001500  5e 14 20 dc 20 56 6f 69  63 65 20 6c 69 73 74 2c  |^. . Voice list,|
00001510  33 32 0d 06 68 08 20 dc  20 30 0d 06 72 1e 20 dc  |32..h. . 0..r. .|
00001520  20 31 2c 4b 65 79 62 6f  61 72 64 2c 33 2c 56 6f  | 1,Keyboard,3,Vo|
00001530  69 63 65 20 6c 69 73 74  0d 06 7c 04 0d 06 86 38  |ice list..|....8|
00001540  20 dd f2 6d 6f 75 73 65  5f 63 6c 69 63 6b 28 6d  | ..mouse_click(m|
00001550  6f 75 73 65 78 25 2c 6d  6f 75 73 65 79 25 2c 62  |ousex%,mousey%,b|
00001560  75 74 25 2c 68 61 6e 25  2c 69 63 6f 6e 25 2c 6b  |ut%,han%,icon%,k|
00001570  65 79 25 29 0d 06 90 16  20 ea 20 70 69 74 63 68  |ey%).... . pitch|
00001580  25 2c 74 65 78 74 24 2c  69 25 0d 06 9a 06 20 3a  |%,text$,i%.... :|
00001590  0d 06 a4 11 20 e7 20 62  75 74 25 20 80 20 32 20  |.... . but% . 2 |
000015a0  8c 0d 06 ae 0e 20 c8 8e  20 68 61 6e 25 20 ca 0d  |..... .. han% ..|
000015b0  06 b8 09 20 c9 20 2d 32  0d 06 c2 2e 20 63 75 72  |... . -2.... cur|
000015c0  6d 65 6e 75 25 3d 69 63  6d 65 6e 75 25 3a 63 6d  |menu%=icmenu%:cm|
000015d0  78 25 3d 6d 6f 75 73 65  78 25 2d 38 30 3a 63 6d  |x%=mousex%-80:cm|
000015e0  79 25 3d 31 38 34 0d 06  cc 0e 20 f2 73 68 6f 77  |y%=184.... .show|
000015f0  6d 65 6e 75 0d 06 d6 25  20 c9 20 6d 61 69 6e 25  |menu...% . main%|
00001600  3a 20 f2 66 69 72 73 74  5f 69 74 65 6d 73 28 b9  |: .first_items(.|
00001610  2c b9 2c 6d 61 69 6e 25  29 0d 06 e0 2b 20 c9 20  |,.,main%)...+ . |
00001620  73 61 6d 70 6c 65 73 25  3a 20 f2 66 69 72 73 74  |samples%: .first|
00001630  5f 69 74 65 6d 73 28 a3  2c a3 2c 73 61 6d 70 6c  |_items(.,.,sampl|
00001640  65 73 25 29 0d 06 ea 10  20 c9 20 73 61 6d 70 6c  |es%).... . sampl|
00001650  69 73 74 25 0d 06 f4 31  20 e7 20 28 6e 65 78 74  |ist%...1 . (next|
00001660  25 3e 30 20 80 20 69 63  6f 6e 25 3e 2d 31 29 20  |%>0 . icon%>-1) |
00001670  80 20 a4 69 63 6f 6e 73  5f 73 65 6c 65 63 74 65  |. .icons_selecte|
00001680  64 3c 32 20 8c 0d 06 fe  14 20 f2 65 6e 74 69 72  |d<2 ..... .entir|
00001690  65 5f 6c 69 73 74 28 31  29 0d 07 08 2b 20 f2 75  |e_list(1)...+ .u|
000016a0  70 64 61 74 65 5f 69 63  6f 6e 28 68 61 6e 25 2c  |pdate_icon(han%,|
000016b0  69 63 6f 6e 25 2c 25 31  3c 3c 32 31 2c 25 31 3c  |icon%,%1<<21,%1<|
000016c0  3c 32 31 29 0d 07 12 06  20 cd 0d 07 1c 20 20 f2  |<21).... ....  .|
000016d0  66 69 72 73 74 5f 69 74  65 6d 73 28 a3 2c a3 2c  |first_items(.,.,|
000016e0  73 61 6d 70 6c 69 73 74  25 29 0d 07 26 06 20 cb  |samplist%)..&. .|
000016f0  0d 07 30 34 20 e7 20 68  61 6e 25 3d 6d 61 69 6e  |..04 . han%=main|
00001700  25 20 84 20 68 61 6e 25  3d 73 61 6d 70 6c 69 73  |% . han%=samplis|
00001710  74 25 20 84 20 68 61 6e  25 3d 73 61 6d 70 6c 65  |t% . han%=sample|
00001720  73 25 20 8c 0d 07 3a 23  20 f2 75 70 64 61 74 65  |s% ...:# .update|
00001730  76 6f 69 63 65 6c 69 73  74 3a f2 73 65 74 73 61  |voicelist:.setsa|
00001740  76 65 66 69 65 6c 64 0d  07 44 30 20 63 75 72 6d  |vefield..D0 curm|
00001750  65 6e 75 25 3d 77 69 6e  6d 65 6e 75 25 3a 63 6d  |enu%=winmenu%:cm|
00001760  78 25 3d 6d 6f 75 73 65  78 25 3a 63 6d 79 25 3d  |x%=mousex%:cmy%=|
00001770  6d 6f 75 73 65 79 25 0d  07 4e 0e 20 f2 73 68 6f  |mousey%..N. .sho|
00001780  77 6d 65 6e 75 0d 07 58  06 20 cd 0d 07 62 06 20  |wmenu..X. ...b. |
00001790  cd 0d 07 6c 06 20 3a 0d  07 76 0e 20 c8 8e 20 68  |...l. :..v. .. h|
000017a0  61 6e 25 20 ca 0d 07 80  09 20 c9 20 2d 32 0d 07  |an% ..... . -2..|
000017b0  8a 11 20 e7 20 62 75 74  25 20 80 20 34 20 8c 0d  |.. . but% . 4 ..|
000017c0  07 94 12 20 e7 20 6d 61  69 6e 6f 70 65 6e 25 20  |... . mainopen% |
000017d0  8c 0d 07 9e 1b 20 f2 70  6f 70 75 70 5f 77 69 6e  |..... .popup_win|
000017e0  64 6f 77 28 6d 61 69 6e  25 2c 30 29 0d 07 a8 06  |dow(main%,0)....|
000017f0  20 cc 0d 07 b2 09 20 69  25 3d a3 0d 07 bc 25 20  | ..... i%=....% |
00001800  c8 99 20 22 57 69 6d 70  5f 47 65 74 43 61 72 65  |.. "Wimp_GetCare|
00001810  74 50 6f 73 69 74 69 6f  6e 22 2c 2c 62 6c 6b 25  |tPosition",,blk%|
00001820  0d 07 c6 14 20 e7 20 21  62 6c 6b 25 3d 2d 31 20  |.... . !blk%=-1 |
00001830  69 25 3d b9 0d 07 d0 27  20 f2 70 6f 70 75 70 5f  |i%=....' .popup_|
00001840  77 69 6e 64 6f 77 28 6d  61 69 6e 25 2c 31 29 3a  |window(main%,1):|
00001850  6d 61 69 6e 6f 70 65 6e  25 3d b9 0d 07 da 10 20  |mainopen%=..... |
00001860  e7 20 69 25 20 f2 67 65  74 69 66 0d 07 e4 06 20  |. i% .getif.... |
00001870  cd 0d 07 ee 06 20 cd 0d  07 f8 06 20 3a 0d 08 02  |..... ..... :...|
00001880  0c 20 c9 20 6d 61 69 6e  25 0d 08 0c 18 20 e7 20  |. . main%.... . |
00001890  62 75 74 25 3d 34 20 84  20 62 75 74 25 3d 31 20  |but%=4 . but%=1 |
000018a0  8c 0d 08 16 16 20 e7 20  69 63 6f 6e 25 3d 2d 31  |..... . icon%=-1|
000018b0  20 f2 67 65 74 69 66 0d  08 20 06 20 cd 0d 08 2a  | .getif.. . ...*|
000018c0  11 20 e7 20 69 63 6f 6e  25 3e 3d 30 20 8c 0d 08  |. . icon%>=0 ...|
000018d0  34 23 20 e7 20 69 63 6f  6e 25 3e 33 35 20 69 63  |4# . icon%>35 ic|
000018e0  6f 6e 25 3d 33 35 2d 28  69 63 6f 6e 25 2d 33 36  |on%=35-(icon%-36|
000018f0  29 0d 08 3e 2e 20 e7 20  62 75 74 25 3d 34 20 80  |)..>. . but%=4 .|
00001900  20 6b 65 79 64 6f 77 6e  25 3d 26 46 46 20 80 20  | keydown%=&FF . |
00001910  64 72 61 67 62 61 72 25  3c 3e 26 46 46 20 8c 0d  |dragbar%<>&FF ..|
00001920  08 48 27 20 f2 75 70 64  61 74 65 5f 69 63 6f 6e  |.H' .update_icon|
00001930  28 6d 61 69 6e 25 2c 69  63 6f 6e 25 2c 25 31 3c  |(main%,icon%,%1<|
00001940  3c 32 31 2c 30 29 0d 08  52 0b 20 f2 67 65 74 69  |<21,0)..R. .geti|
00001950  66 0d 08 5c 29 20 e7 20  73 75 6e 65 65 64 65 64  |f..\) . suneeded|
00001960  25 20 f2 73 65 74 73 6f  75 6e 64 73 79 73 3a 73  |% .setsoundsys:s|
00001970  75 6e 65 65 64 65 64 25  3d a3 0d 08 66 5f 20 70  |uneeded%=...f_ p|
00001980  69 74 63 68 25 3d 70 69  74 63 68 74 61 62 6c 65  |itch%=pitchtable|
00001990  25 28 28 33 35 2d 69 63  6f 6e 25 29 83 20 31 32  |%((35-icon%). 12|
000019a0  29 2b 28 74 72 61 6e 73  25 2a 26 31 35 36 29 2b  |)+(trans%*&156)+|
000019b0  28 26 31 30 30 30 2a 28  28 33 35 2d 69 63 6f 6e  |(&1000*((35-icon|
000019c0  25 29 81 20 31 32 29 29  2b 28 28 6f 63 74 25 2d  |%). 12))+((oct%-|
000019d0  31 29 2a 26 31 30 30 30  29 0d 08 70 3c 20 e7 20  |1)*&1000)..p< . |
000019e0  70 69 74 63 68 25 3e 30  20 80 20 70 69 74 63 68  |pitch%>0 . pitch|
000019f0  25 3c 3d 26 37 45 41 41  20 d4 20 63 68 61 6e 25  |%<=&7EAA . chan%|
00001a00  2c 76 6f 6c 75 6d 65 25  2c 70 69 74 63 68 25 2c  |,volume%,pitch%,|
00001a10  64 75 72 61 25 0d 08 7a  13 20 6b 65 79 64 6f 77  |dura%..z. keydow|
00001a20  6e 25 3d 69 63 6f 6e 25  0d 08 84 0f 20 e7 20 ac  |n%=icon%.... . .|
00001a30  20 6b 65 79 25 20 8c 0d  08 8e 42 20 62 6c 6b 25  | key% ....B blk%|
00001a40  21 34 3d 37 3a 62 6c 6b  25 21 32 34 3d 30 3a 62  |!4=7:blk%!24=0:b|
00001a50  6c 6b 25 21 32 38 3d 30  3a 62 6c 6b 25 21 33 32  |lk%!28=0:blk%!32|
00001a60  3d 73 77 69 64 74 68 25  3a 62 6c 6b 25 21 33 36  |=swidth%:blk%!36|
00001a70  3d 73 68 65 69 67 68 74  25 0d 08 98 1c 20 c8 99  |=sheight%.... ..|
00001a80  20 22 57 69 6d 70 5f 44  72 61 67 42 6f 78 22 2c  | "Wimp_DragBox",|
00001a90  2c 62 6c 6b 25 0d 08 a2  06 20 cd 0d 08 ac 06 20  |,blk%.... ..... |
00001aa0  cd 0d 08 b6 06 20 cd 0d  08 c0 06 20 3a 0d 08 ca  |..... ..... :...|
00001ab0  0b 20 c9 20 63 6f 6e 25  0d 08 d4 10 20 e7 20 62  |. . con%.... . b|
00001ac0  75 74 25 3c 3e 32 20 8c  0d 08 de 14 20 f2 63 68  |ut%<>2 ..... .ch|
00001ad0  65 63 6b 63 68 61 6e 67  65 28 b9 29 0d 08 e8 0f  |eckchange(.)....|
00001ae0  20 e7 20 62 75 74 25 3d  31 20 8c 0d 08 f2 26 20  | . but%=1 ....& |
00001af0  e7 20 69 63 6f 6e 25 20  83 20 32 3d 31 20 69 63  |. icon% . 2=1 ic|
00001b00  6f 6e 25 2d 3d 31 20 8b  20 69 63 6f 6e 25 2b 3d  |on%-=1 . icon%+=|
00001b10  31 0d 08 fc 06 20 cd 0d  09 06 18 20 f2 73 65 74  |1.... ..... .set|
00001b20  76 61 72 73 3a c8 8e 20  69 63 6f 6e 25 20 ca 0d  |vars:.. icon% ..|
00001b30  09 10 0a 20 c9 20 32 31  3a 0d 09 1a 1e 20 6f 63  |... . 21:.... oc|
00001b40  74 25 2b 3d 31 3a e7 20  6f 63 74 25 3e 3d 35 20  |t%+=1:. oct%>=5 |
00001b50  6f 63 74 25 3d 2d 34 0d  09 24 1f 20 f2 73 65 74  |oct%=-4..$. .set|
00001b60  5f 69 63 6f 6e 28 63 6f  6e 25 2c 32 33 2c c3 28  |_icon(con%,23,.(|
00001b70  6f 63 74 25 29 29 0d 09  2e 0a 20 c9 20 32 32 3a  |oct%)).... . 22:|
00001b80  0d 09 38 1e 20 6f 63 74  25 2d 3d 31 3a e7 20 6f  |..8. oct%-=1:. o|
00001b90  63 74 25 3c 3d 2d 35 20  6f 63 74 25 3d 34 0d 09  |ct%<=-5 oct%=4..|
00001ba0  42 1f 20 f2 73 65 74 5f  69 63 6f 6e 28 63 6f 6e  |B. .set_icon(con|
00001bb0  25 2c 32 33 2c c3 28 6f  63 74 25 29 29 0d 09 4c  |%,23,.(oct%))..L|
00001bc0  0a 20 c9 20 32 34 3a 0d  09 56 26 20 74 72 61 6e  |. . 24:..V& tran|
00001bd0  73 25 2b 3d 31 3a e7 20  74 72 61 6e 73 25 3e 3d  |s%+=1:. trans%>=|
00001be0  31 32 20 74 72 61 6e 73  25 3d 2d 31 31 0d 09 60  |12 trans%=-11..`|
00001bf0  21 20 f2 73 65 74 5f 69  63 6f 6e 28 63 6f 6e 25  |! .set_icon(con%|
00001c00  2c 32 36 2c c3 28 74 72  61 6e 73 25 29 29 0d 09  |,26,.(trans%))..|
00001c10  6a 0a 20 c9 20 32 35 3a  0d 09 74 26 20 74 72 61  |j. . 25:..t& tra|
00001c20  6e 73 25 2d 3d 31 3a e7  20 74 72 61 6e 73 25 3c  |ns%-=1:. trans%<|
00001c30  3d 2d 31 32 20 74 72 61  6e 73 25 3d 31 31 0d 09  |=-12 trans%=11..|
00001c40  7e 21 20 f2 73 65 74 5f  69 63 6f 6e 28 63 6f 6e  |~! .set_icon(con|
00001c50  25 2c 32 36 2c c3 28 74  72 61 6e 73 25 29 29 0d  |%,26,.(trans%)).|
00001c60  09 88 0a 20 c9 20 32 37  3a 0d 09 92 20 20 63 68  |... . 27:...  ch|
00001c70  61 6e 25 2b 3d 31 3a e7  20 63 68 61 6e 25 3e 3d  |an%+=1:. chan%>=|
00001c80  39 20 63 68 61 6e 25 3d  31 0d 09 9c 20 20 f2 73  |9 chan%=1...  .s|
00001c90  65 74 5f 69 63 6f 6e 28  63 6f 6e 25 2c 33 32 2c  |et_icon(con%,32,|
00001ca0  c3 28 63 68 61 6e 25 29  29 0d 09 a6 10 20 73 75  |.(chan%)).... su|
00001cb0  6e 65 65 64 65 64 25 3d  b9 0d 09 b0 0a 20 c9 20  |needed%=..... . |
00001cc0  32 38 3a 0d 09 ba 20 20  63 68 61 6e 25 2d 3d 31  |28:...  chan%-=1|
00001cd0  3a e7 20 63 68 61 6e 25  3c 3d 30 20 63 68 61 6e  |:. chan%<=0 chan|
00001ce0  25 3d 38 0d 09 c4 20 20  f2 73 65 74 5f 69 63 6f  |%=8...  .set_ico|
00001cf0  6e 28 63 6f 6e 25 2c 33  32 2c c3 28 63 68 61 6e  |n(con%,32,.(chan|
00001d00  25 29 29 0d 09 ce 10 20  73 75 6e 65 65 64 65 64  |%)).... suneeded|
00001d10  25 3d b9 0d 09 d8 0a 20  c9 20 32 39 3a 0d 09 e2  |%=..... . 29:...|
00001d20  22 20 64 75 72 61 25 2b  3d 35 3a e7 20 64 75 72  |" dura%+=5:. dur|
00001d30  61 25 3e 3d 32 35 36 20  64 75 72 61 25 3d 30 0d  |a%>=256 dura%=0.|
00001d40  09 ec 20 20 f2 73 65 74  5f 69 63 6f 6e 28 63 6f  |..  .set_icon(co|
00001d50  6e 25 2c 33 31 2c c3 28  64 75 72 61 25 29 29 0d  |n%,31,.(dura%)).|
00001d60  09 f6 0a 20 c9 20 33 30  3a 0d 0a 00 21 20 64 75  |... . 30:...! du|
00001d70  72 61 25 2d 3d 35 3a e7  20 64 75 72 61 25 3c 30  |ra%-=5:. dura%<0|
00001d80  20 64 75 72 61 25 3d 32  35 35 0d 0a 0a 20 20 f2  | dura%=255...  .|
00001d90  73 65 74 5f 69 63 6f 6e  28 63 6f 6e 25 2c 33 31  |set_icon(con%,31|
00001da0  2c c3 28 64 75 72 61 25  29 29 0d 0a 14 1a 20 c9  |,.(dura%)).... .|
00001db0  20 32 30 2c 33 34 3a 20  f2 74 6f 67 67 6c 65 63  | 20,34: .togglec|
00001dc0  68 61 72 73 0d 0a 1e 28  20 f2 75 70 64 61 74 65  |hars...( .update|
00001dd0  5f 69 63 6f 6e 28 63 6f  6e 25 2c 33 34 2c 25 31  |_icon(con%,34,%1|
00001de0  3c 3c 32 31 2c 25 30 3c  3c 32 31 29 0d 0a 28 0c  |<<21,%0<<21)..(.|
00001df0  20 c9 20 31 38 2c 31 39  0d 0a 32 2e 20 f2 67 65  | . 18,19..2. .ge|
00001e00  74 5f 77 69 6e 64 6f 77  5f 73 74 61 74 65 28 63  |t_window_state(c|
00001e10  6f 6e 25 29 3a f2 67 65  74 5f 70 6f 69 6e 74 65  |on%):.get_pointe|
00001e20  72 5f 69 6e 66 6f 0d 0a  3c 64 20 e7 20 69 63 6f  |r_info..<d . ico|
00001e30  6e 25 3d 31 39 20 84 20  28 69 63 6f 6e 25 3d 31  |n%=19 . (icon%=1|
00001e40  38 20 80 20 28 6d 6f 75  73 65 78 25 3e 78 30 25  |8 . (mousex%>x0%|
00001e50  2b 34 36 20 80 20 6d 6f  75 73 65 78 25 3c 78 31  |+46 . mousex%<x1|
00001e60  25 2d 34 36 20 80 20 6d  6f 75 73 65 79 25 3e 79  |%-46 . mousey%>y|
00001e70  30 25 2b 36 32 20 80 20  6d 6f 75 73 65 79 25 3c  |0%+62 . mousey%<|
00001e80  79 30 25 2b 38 36 29 29  20 8c 0d 0a 46 49 20 62  |y0%+86)) ...FI b|
00001e90  6c 6b 25 21 34 3d 37 3a  62 6c 6b 25 21 32 34 3d  |lk%!4=7:blk%!24=|
00001ea0  78 30 25 2b 35 36 3a 62  6c 6b 25 21 32 38 3d 79  |x0%+56:blk%!28=y|
00001eb0  30 25 2b 36 36 3a 62 6c  6b 25 21 33 32 3d 78 31  |0%+66:blk%!32=x1|
00001ec0  25 2d 35 36 3a 62 6c 6b  25 21 33 36 3d 79 30 25  |%-56:blk%!36=y0%|
00001ed0  2b 38 32 0d 0a 50 1c 20  c8 99 20 22 57 69 6d 70  |+82..P. .. "Wimp|
00001ee0  5f 44 72 61 67 42 6f 78  22 2c 2c 62 6c 6b 25 0d  |_DragBox",,blk%.|
00001ef0  0a 5a 1e 20 64 72 61 67  62 61 72 25 3d 26 46 46  |.Z. dragbar%=&FF|
00001f00  3a 6d 61 73 6b 25 3d 26  38 30 30 33 32 0d 0a 64  |:mask%=&80032..d|
00001f10  06 20 cd 0d 0a 6e 06 20  cb 0d 0a 78 06 20 cd 0d  |. ...n. ...x. ..|
00001f20  0a 82 06 20 3a 0d 0a 8c  19 20 c9 20 73 61 6d 70  |... :.... . samp|
00001f30  6c 69 73 74 25 2c 73 61  6d 70 6c 65 73 25 0d 0a  |list%,samples%..|
00001f40  96 18 20 e7 20 62 75 74  25 3d 34 20 84 20 62 75  |.. . but%=4 . bu|
00001f50  74 25 3d 31 20 8c 0d 0a  a0 2f 20 e7 20 69 63 6f  |t%=1 ..../ . ico|
00001f60  6e 25 3d 2d 31 20 84 20  68 61 6e 25 3d 73 61 6d  |n%=-1 . han%=sam|
00001f70  70 6c 65 73 25 20 f2 65  6e 74 69 72 65 5f 6c 69  |ples% .entire_li|
00001f80  73 74 28 31 29 0d 0a aa  06 20 cd 0d 0a b4 06 20  |st(1).... ..... |
00001f90  3a 0d 0a be 0f 20 c9 20  73 61 76 65 62 6f 78 25  |:.... . savebox%|
00001fa0  0d 0a c8 0f 20 c8 8e 20  69 63 6f 6e 25 20 ca 0d  |.... .. icon% ..|
00001fb0  0a d2 2c 20 c9 20 30 3a  20 e7 20 62 75 74 25 3c  |.., . 0: . but%<|
00001fc0  3e 31 20 c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |>1 .. "Wimp_Crea|
00001fd0  74 65 4d 65 6e 75 22 2c  2c 2d 31 0d 0a dc 2f 20  |teMenu",,-1.../ |
00001fe0  f2 6b 65 79 62 6f 61 72  64 64 61 74 61 6f 75 74  |.keyboarddataout|
00001ff0  28 24 a4 69 63 6f 6e 61  64 64 72 28 73 61 76 65  |($.iconaddr(save|
00002000  62 6f 78 25 2c 32 29 2c  b9 29 0d 0a e6 30 20 c9  |box%,2),.)...0 .|
00002010  20 33 3a 20 f2 64 72 61  67 5f 69 63 6f 6e 28 6d  | 3: .drag_icon(m|
00002020  6f 75 73 65 78 25 2c 6d  6f 75 73 65 79 25 2c 73  |ousex%,mousey%,s|
00002030  61 76 65 62 6f 78 25 2c  33 29 0d 0a f0 06 20 cb  |avebox%,3).... .|
00002040  0d 0a fa 06 20 3a 0d 0b  04 0e 20 c9 20 74 75 6e  |.... :.... . tun|
00002050  69 6e 67 25 0d 0b 0e 10  20 e7 20 62 75 74 25 3c  |ing%.... . but%<|
00002060  3e 32 20 8c 0d 0b 18 25  20 74 75 6e 6f 63 74 25  |>2 ....% tunoct%|
00002070  3d bb 28 24 a4 69 63 6f  6e 61 64 64 72 28 74 75  |=.($.iconaddr(tu|
00002080  6e 69 6e 67 25 2c 36 29  29 0d 0b 22 26 20 74 75  |ning%,6)).."& tu|
00002090  6e 73 65 6d 69 25 3d bb  28 24 a4 69 63 6f 6e 61  |nsemi%=.($.icona|
000020a0  64 64 72 28 74 75 6e 69  6e 67 25 2c 39 29 29 0d  |ddr(tuning%,9)).|
000020b0  0b 2c 0f 20 c8 8e 20 69  63 6f 6e 25 20 ca 0d 0b  |.,. .. icon% ...|
000020c0  36 08 20 c9 20 32 0d 0b  40 27 20 74 75 6e 6f 63  |6. . 2..@' tunoc|
000020d0  74 25 2b 3d 31 3a e7 20  74 75 6e 6f 63 74 25 3e  |t%+=1:. tunoct%>|
000020e0  3d 34 20 74 75 6e 6f 63  74 25 3d 2d 33 0d 0b 4a  |=4 tunoct%=-3..J|
000020f0  24 20 f2 73 65 74 5f 69  63 6f 6e 28 74 75 6e 69  |$ .set_icon(tuni|
00002100  6e 67 25 2c 36 2c c3 28  74 75 6e 6f 63 74 25 29  |ng%,6,.(tunoct%)|
00002110  29 0d 0b 54 08 20 c9 20  34 0d 0b 5e 27 20 74 75  |)..T. . 4..^' tu|
00002120  6e 6f 63 74 25 2d 3d 31  3a e7 20 74 75 6e 6f 63  |noct%-=1:. tunoc|
00002130  74 25 3c 3d 2d 34 20 74  75 6e 6f 63 74 25 3d 33  |t%<=-4 tunoct%=3|
00002140  0d 0b 68 24 20 f2 73 65  74 5f 69 63 6f 6e 28 74  |..h$ .set_icon(t|
00002150  75 6e 69 6e 67 25 2c 36  2c c3 28 74 75 6e 6f 63  |uning%,6,.(tunoc|
00002160  74 25 29 29 0d 0b 72 09  20 c9 20 31 33 0d 0b 7c  |t%))..r. . 13..||
00002170  2c 20 74 75 6e 73 65 6d  69 25 2b 3d 31 3a e7 20  |, tunsemi%+=1:. |
00002180  74 75 6e 73 65 6d 69 25  3e 3d 31 32 20 74 75 6e  |tunsemi%>=12 tun|
00002190  73 65 6d 69 25 3d 2d 31  31 0d 0b 86 25 20 f2 73  |semi%=-11...% .s|
000021a0  65 74 5f 69 63 6f 6e 28  74 75 6e 69 6e 67 25 2c  |et_icon(tuning%,|
000021b0  39 2c c3 28 74 75 6e 73  65 6d 69 25 29 29 0d 0b  |9,.(tunsemi%))..|
000021c0  90 09 20 c9 20 31 31 0d  0b 9a 2c 20 74 75 6e 73  |.. . 11..., tuns|
000021d0  65 6d 69 25 2d 3d 31 3a  e7 20 74 75 6e 73 65 6d  |emi%-=1:. tunsem|
000021e0  69 25 3c 3d 2d 31 32 20  74 75 6e 73 65 6d 69 25  |i%<=-12 tunsemi%|
000021f0  3d 31 31 0d 0b a4 25 20  f2 73 65 74 5f 69 63 6f  |=11...% .set_ico|
00002200  6e 28 74 75 6e 69 6e 67  25 2c 39 2c c3 28 74 75  |n(tuning%,9,.(tu|
00002210  6e 73 65 6d 69 25 29 29  0d 0b ae 09 20 c9 20 31  |nsemi%)).... . 1|
00002220  35 0d 0b b8 14 20 f2 63  68 65 63 6b 63 68 61 6e  |5.... .checkchan|
00002230  67 65 28 b9 29 0d 0b c2  0e 20 2a 54 75 6e 69 6e  |ge(.).... *Tunin|
00002240  67 20 30 0d 0b cc 31 20  ff 20 22 54 75 6e 69 6e  |g 0...1 . "Tunin|
00002250  67 20 22 2b c3 28 28 74  75 6e 6f 63 74 25 2a 34  |g "+.((tunoct%*4|
00002260  30 39 36 29 2b 28 74 75  6e 73 65 6d 69 25 2a 33  |096)+(tunsemi%*3|
00002270  34 31 29 29 0d 0b d6 27  20 e7 20 62 75 74 25 3c  |41))...' . but%<|
00002280  3e 31 20 c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |>1 .. "Wimp_Crea|
00002290  74 65 4d 65 6e 75 22 2c  2c 2d 31 0d 0b e0 06 20  |teMenu",,-1.... |
000022a0  cd 0d 0b ea 06 20 cb 0d  0b f4 06 20 3a 0d 0b fe  |..... ..... :...|
000022b0  0f 20 c9 20 6d 65 73 73  61 67 65 25 0d 0c 08 1c  |. . message%....|
000022c0  20 f2 63 6c 6f 73 65 5f  77 69 6e 64 6f 77 28 6d  | .close_window(m|
000022d0  65 73 73 61 67 65 25 29  0d 0c 12 20 20 c8 99 20  |essage%)...  .. |
000022e0  22 4f 53 5f 42 79 74 65  22 2c 26 43 39 2c 6b 65  |"OS_Byte",&C9,ke|
000022f0  79 73 74 61 74 25 2c 30  0d 0c 1c 1f 20 c8 97 20  |ystat%,0.... .. |
00002300  c8 93 20 30 2c 30 2c 73  77 69 64 74 68 25 2c 73  |.. 0,0,swidth%,s|
00002310  68 65 69 67 68 74 25 0d  0c 26 1d 20 e7 20 72 65  |height%..&. . re|
00002320  64 72 61 77 72 65 71 25  3d a3 20 f2 73 68 6f 77  |drawreq%=. .show|
00002330  6d 65 6e 75 0d 0c 30 10  20 e7 20 69 63 6f 6e 25  |menu..0. . icon%|
00002340  3d 32 20 8c 0d 0c 3a 13  20 20 c8 8e 20 6d 61 63  |=2 ...:.  .. mac|
00002350  74 69 6f 6e 25 20 ca 0d  0c 44 14 20 20 c9 20 31  |tion% ...D.  . 1|
00002360  3a 20 66 69 6e 69 73 68  25 3d b9 0d 0c 4e 25 20  |: finish%=...N% |
00002370  20 c9 20 32 3a 20 f2 6b  65 79 62 6f 61 72 64 64  | . 2: .keyboardd|
00002380  61 74 61 69 6e 28 66 69  6c 65 6e 61 6d 65 24 29  |atain(filename$)|
00002390  0d 0c 58 09 20 20 c9 20  33 0d 0c 62 10 20 20 63  |..X.  . 3..b.  c|
000023a0  68 61 6e 67 65 64 25 3d  a3 0d 0c 6c 26 20 20 c8  |hanged%=...l&  .|
000023b0  99 20 22 57 69 6d 70 5f  47 65 74 43 61 72 65 74  |. "Wimp_GetCaret|
000023c0  50 6f 73 69 74 69 6f 6e  22 2c 2c 62 6c 6b 25 0d  |Position",,blk%.|
000023d0  0c 76 12 20 20 62 6c 6b  25 21 32 34 3d 26 31 46  |.v.  blk%!24=&1F|
000023e0  43 0d 0c 80 2d 20 20 c8  99 20 22 57 69 6d 70 5f  |C...-  .. "Wimp_|
000023f0  53 65 6e 64 4d 65 73 73  61 67 65 22 2c 38 2c 62  |SendMessage",8,b|
00002400  6c 6b 25 2c 6d 65 73 73  62 6c 6b 25 21 34 0d 0c  |lk%,messblk%!4..|
00002410  8a 07 20 20 cb 0d 0c 94  06 20 cc 0d 0c 9e 13 20  |..  ..... ..... |
00002420  20 c8 8e 20 6d 61 63 74  69 6f 6e 25 20 ca 0d 0c  | .. maction% ...|
00002430  a8 37 20 20 c9 20 32 3a  20 e7 20 73 63 72 61 70  |.7  . 2: . scrap|
00002440  25 3c 3e 30 20 ff 20 22  44 65 6c 65 74 65 20 3c  |%<>0 . "Delete <|
00002450  57 69 6d 70 24 53 63 72  61 70 3e 22 3a 73 63 72  |Wimp$Scrap>":scr|
00002460  61 70 25 3d 30 0d 0c b2  07 20 20 cb 0d 0c bc 06  |ap%=0....  .....|
00002470  20 cd 0d 0c c6 0f 20 6d  61 63 74 69 6f 6e 25 3d  | ..... maction%=|
00002480  30 0d 0c d0 06 20 cb 0d  0c da 06 20 e1 0d 0c e4  |0.... ..... ....|
00002490  04 0d 0c ee 20 20 dd f2  66 69 72 73 74 5f 69 74  |....  ..first_it|
000024a0  65 6d 73 28 67 31 25 2c  67 32 25 2c 68 61 6e 25  |ems(g1%,g2%,han%|
000024b0  29 0d 0c f8 09 20 ea 20  61 25 0d 0d 02 22 20 e7  |).... . a%..." .|
000024c0  20 67 31 25 3d b9 20 84  20 a4 69 63 6f 6e 73 5f  | g1%=. . .icons_|
000024d0  73 65 6c 65 63 74 65 64  3d 30 20 8c 0d 0d 0c 2a  |selected=0 ....*|
000024e0  20 f2 6d 65 6e 75 5f 74  65 78 74 28 22 53 61 6d  | .menu_text("Sam|
000024f0  70 6c 65 20 27 27 22 2c  77 69 6e 6d 65 6e 75 25  |ple ''",winmenu%|
00002500  2b 32 38 2c 31 29 0d 0d  16 21 20 77 69 6e 6d 65  |+28,1)...! winme|
00002510  6e 75 25 21 31 36 3d 6d  65 6e 75 77 69 64 74 68  |nu%!16=menuwidth|
00002520  25 3a 67 31 25 3d b9 0d  0d 20 06 20 cc 0d 0d 2a  |%:g1%=... . ...*|
00002530  14 20 e7 20 68 61 6e 25  3c 3e 6d 61 69 6e 25 20  |. . han%<>main% |
00002540  8c 0d 0d 34 1a 20 e7 20  a4 69 63 6f 6e 73 5f 73  |...4. . .icons_s|
00002550  65 6c 65 63 74 65 64 3d  31 20 8c 0d 0d 3e 39 20  |elected=1 ...>9 |
00002560  c8 99 20 22 57 69 6d 70  5f 57 68 69 63 68 49 63  |.. "Wimp_WhichIc|
00002570  6f 6e 22 2c 73 61 6d 70  6c 69 73 74 25 2c 62 6c  |on",samplist%,bl|
00002580  6b 25 2b 31 32 38 2c 25  31 3c 3c 32 31 2c 25 31  |k%+128,%1<<21,%1|
00002590  3c 3c 32 31 0d 0d 48 3a  20 74 65 78 74 24 3d 22  |<<21..H: text$="|
000025a0  53 61 6d 70 6c 65 20 27  22 2b a4 69 63 6f 6e 74  |Sample '"+.icont|
000025b0  65 78 74 28 73 61 6d 70  6c 69 73 74 25 2c 21 28  |ext(samplist%,!(|
000025c0  62 6c 6b 25 2b 31 32 38  29 29 2b 22 27 22 0d 0d  |blk%+128))+"'"..|
000025d0  52 24 20 f2 6d 65 6e 75  5f 74 65 78 74 28 74 65  |R$ .menu_text(te|
000025e0  78 74 24 2c 77 69 6e 6d  65 6e 75 25 2b 32 38 2c  |xt$,winmenu%+28,|
000025f0  30 29 0d 0d 5c 19 20 61  25 3d 28 28 a9 20 74 65  |0)..\. a%=((. te|
00002600  78 74 24 29 2a 31 36 29  2b 31 34 0d 0d 66 3c 20  |xt$)*16)+14..f< |
00002610  e7 20 61 25 3e 6d 65 6e  75 77 69 64 74 68 25 20  |. a%>menuwidth% |
00002620  77 69 6e 6d 65 6e 75 25  21 31 36 3d 61 25 20 8b  |winmenu%!16=a% .|
00002630  20 77 69 6e 6d 65 6e 75  25 21 31 36 3d 6d 65 6e  | winmenu%!16=men|
00002640  75 77 69 64 74 68 25 0d  0d 70 20 20 f2 75 70 64  |uwidth%..p  .upd|
00002650  61 74 65 69 6e 66 6f 62  6f 78 28 21 28 62 6c 6b  |ateinfobox(!(blk|
00002660  25 2b 31 32 38 29 29 0d  0d 7a 06 20 cc 0d 0d 84  |%+128))..z. ....|
00002670  2a 20 f2 6d 65 6e 75 5f  74 65 78 74 28 22 53 65  |* .menu_text("Se|
00002680  6c 65 63 74 69 6f 6e 22  2c 77 69 6e 6d 65 6e 75  |lection",winmenu|
00002690  25 2b 32 38 2c 30 29 0d  0d 8e 1b 20 77 69 6e 6d  |%+28,0).... winm|
000026a0  65 6e 75 25 21 31 36 3d  6d 65 6e 75 77 69 64 74  |enu%!16=menuwidt|
000026b0  68 25 0d 0d 98 06 20 cd  0d 0d a2 15 20 f2 73 65  |h%.... ..... .se|
000026c0  6c 65 63 74 69 6f 6e 5f  69 74 65 6d 73 0d 0d ac  |lection_items...|
000026d0  06 20 cd 0d 0d b6 06 20  cd 0d 0d c0 2e 20 77 69  |. ..... ..... wi|
000026e0  6e 6d 65 6e 75 25 21 33  36 3d a4 53 70 65 63 49  |nmenu%!36=.SpecI|
000026f0  74 65 6d 28 67 31 25 2c  77 69 6e 6d 65 6e 75 25  |tem(g1%,winmenu%|
00002700  21 33 36 2c 32 32 29 0d  0d ca 62 20 e7 20 6e 65  |!36,22)...b . ne|
00002710  78 74 25 3e 30 20 77 69  6e 6d 65 6e 75 25 21 36  |xt%>0 winmenu%!6|
00002720  30 3d a4 53 70 65 63 49  74 65 6d 28 67 32 25 2c  |0=.SpecItem(g2%,|
00002730  77 69 6e 6d 65 6e 75 25  21 36 30 2c 32 32 29 20  |winmenu%!60,22) |
00002740  8b 20 77 69 6e 6d 65 6e  75 25 21 36 30 3d a4 53  |. winmenu%!60=.S|
00002750  70 65 63 49 74 65 6d 28  b9 2c 77 69 6e 6d 65 6e  |pecItem(.,winmen|
00002760  75 25 21 36 30 2c 32 32  29 0d 0d d4 06 20 e1 0d  |u%!60,22).... ..|
00002770  0d de 04 0d 0d e8 16 20  dd f2 73 65 6c 65 63 74  |....... ..select|
00002780  69 6f 6e 5f 69 74 65 6d  73 0d 0d f2 1e 20 ea 20  |ion_items.... . |
00002790  61 25 2c 62 25 2c 69 25  3a 61 25 3d a3 3a 62 25  |a%,b%,i%:a%=.:b%|
000027a0  3d a3 3a 69 25 3d a3 0d  0d fc 29 20 e7 20 a4 63  |=.:i%=....) . .c|
000027b0  68 65 63 6b 5f 6c 69 73  74 28 30 29 3d b9 20 84  |heck_list(0)=. .|
000027c0  20 63 6f 75 6e 74 25 3e  3d 33 32 20 61 25 3d b9  | count%>=32 a%=.|
000027d0  0d 0e 06 1c 20 e7 20 a4  63 68 65 63 6b 5f 6c 69  |.... . .check_li|
000027e0  73 74 28 31 29 3d b9 20  62 25 3d b9 0d 0e 10 2f  |st(1)=. b%=..../|
000027f0  20 77 69 6e 6d 65 6e 75  25 21 32 35 36 3d a4 53  | winmenu%!256=.S|
00002800  70 65 63 49 74 65 6d 28  61 25 2c 77 69 6e 6d 65  |pecItem(a%,winme|
00002810  6e 75 25 21 32 35 36 2c  32 32 29 0d 0e 1a 2f 20  |nu%!256,22).../ |
00002820  77 69 6e 6d 65 6e 75 25  21 32 38 30 3d a4 53 70  |winmenu%!280=.Sp|
00002830  65 63 49 74 65 6d 28 62  25 2c 77 69 6e 6d 65 6e  |ecItem(b%,winmen|
00002840  75 25 21 32 38 30 2c 32  32 29 0d 0e 24 1d 20 e7  |u%!280,22)..$. .|
00002850  20 a4 69 63 6f 6e 73 5f  73 65 6c 65 63 74 65 64  | .icons_selected|
00002860  3e 31 20 69 25 3d b9 0d  0e 2e 2f 20 77 69 6e 6d  |>1 i%=..../ winm|
00002870  65 6e 75 25 21 32 30 38  3d a4 53 70 65 63 49 74  |enu%!208=.SpecIt|
00002880  65 6d 28 69 25 2c 77 69  6e 6d 65 6e 75 25 21 32  |em(i%,winmenu%!2|
00002890  30 38 2c 32 32 29 0d 0e  38 06 20 e1 0d 0e 42 04  |08,22)..8. ...B.|
000028a0  0d 0e 4c 1a 20 dd f2 6d  65 6e 75 5f 77 69 64 74  |..L. ..menu_widt|
000028b0  68 28 70 25 2c 6c 65 6e  25 29 0d 0e 56 31 20 e7  |h(p%,len%)..V1 .|
000028c0  20 6c 65 6e 25 3e 31 36  20 21 70 25 3d 28 6c 65  | len%>16 !p%=(le|
000028d0  6e 25 2a 31 36 29 2b 31  46 34 20 8b 20 21 70 25  |n%*16)+1F4 . !p%|
000028e0  3d 28 31 36 2a 31 36 29  2b 31 34 0d 0e 60 06 20  |=(16*16)+14..`. |
000028f0  e1 0d 0e 6a 04 0d 0e 74  22 20 dd f2 6b 65 79 5f  |...j...t" ..key_|
00002900  70 72 65 73 73 65 64 28  68 61 6e 25 2c 69 63 6f  |pressed(han%,ico|
00002910  6e 25 2c 63 68 25 29 0d  0e 7e 18 20 ea 20 70 25  |n%,ch%)..~. . p%|
00002920  2c 6b 25 2c 63 69 25 2c  73 25 3a 70 25 3d a3 0d  |,k%,ci%,s%:p%=..|
00002930  0e 88 3e 20 e7 20 68 61  6e 25 3c 3e 73 61 76 65  |..> . han%<>save|
00002940  62 6f 78 25 20 80 20 68  61 6e 25 3c 3e 74 75 6e  |box% . han%<>tun|
00002950  69 6e 67 25 20 c8 99 20  22 57 69 6d 70 5f 43 72  |ing% .. "Wimp_Cr|
00002960  65 61 74 65 4d 65 6e 75  22 2c 2c 2d 31 0d 0e 92  |eateMenu",,-1...|
00002970  06 20 3a 0d 0e 9c 0e 20  c8 8e 20 68 61 6e 25 20  |. :.... .. han% |
00002980  ca 0d 0e a6 0b 20 c9 20  63 6f 6e 25 0d 0e b0 12  |..... . con%....|
00002990  20 73 25 3d a4 73 68 6f  72 74 63 75 74 73 0d 0e  | s%=.shortcuts..|
000029a0  ba 0d 20 c8 8e 20 63 68  25 20 ca 0d 0e c4 0b 20  |.. .. ch% ..... |
000029b0  c9 20 26 31 38 46 0d 0e  ce 0f 20 c8 8e 20 69 63  |. &18F.... .. ic|
000029c0  6f 6e 25 20 ca 0d 0e d8  11 20 c9 20 32 33 3a 20  |on% ..... . 23: |
000029d0  63 69 25 3d 33 31 0d 0e  e2 11 20 c9 20 32 36 3a  |ci%=31.... . 26:|
000029e0  20 63 69 25 3d 32 33 0d  0e ec 11 20 c9 20 33 32  | ci%=23.... . 32|
000029f0  3a 20 63 69 25 3d 32 36  0d 0e f6 11 20 c9 20 33  |: ci%=26.... . 3|
00002a00  31 3a 20 63 69 25 3d 33  32 0d 0f 00 06 20 cb 0d  |1: ci%=32.... ..|
00002a10  0f 0a 15 20 f2 63 61 72  65 74 28 63 6f 6e 25 2c  |... .caret(con%,|
00002a20  63 69 25 29 0d 0f 14 0e  20 c9 20 26 31 38 45 2c  |ci%).... . &18E,|
00002a30  26 44 0d 0f 1e 0f 20 c8  8e 20 69 63 6f 6e 25 20  |&D.... .. icon% |
00002a40  ca 0d 0f 28 11 20 c9 20  32 33 3a 20 63 69 25 3d  |...(. . 23: ci%=|
00002a50  32 36 0d 0f 32 11 20 c9  20 32 36 3a 20 63 69 25  |26..2. . 26: ci%|
00002a60  3d 33 32 0d 0f 3c 11 20  c9 20 33 32 3a 20 63 69  |=32..<. . 32: ci|
00002a70  25 3d 33 31 0d 0f 46 11  20 c9 20 33 31 3a 20 63  |%=31..F. . 31: c|
00002a80  69 25 3d 32 33 0d 0f 50  06 20 cb 0d 0f 5a 15 20  |i%=23..P. ...Z. |
00002a90  f2 63 61 72 65 74 28 63  6f 6e 25 2c 63 69 25 29  |.caret(con%,ci%)|
00002aa0  0d 0f 64 06 20 7f 0d 0f  6e 10 20 e7 20 73 25 3d  |..d. ...n. . s%=|
00002ab0  a3 20 70 25 3d b9 0d 0f  78 06 20 cb 0d 0f 82 06  |. p%=...x. .....|
00002ac0  20 3a 0d 0f 8c 0f 20 c9  20 73 61 76 65 62 6f 78  | :.... . savebox|
00002ad0  25 0d 0f 96 35 20 e7 20  63 68 25 3d 26 44 20 f2  |%...5 . ch%=&D .|
00002ae0  6d 6f 75 73 65 5f 63 6c  69 63 6b 28 30 2c 30 2c  |mouse_click(0,0,|
00002af0  34 2c 73 61 76 65 62 6f  78 25 2c 30 2c 30 29 20  |4,savebox%,0,0) |
00002b00  8b 20 70 25 3d b9 0d 0f  a0 06 20 3a 0d 0f aa 0e  |. p%=..... :....|
00002b10  20 c9 20 74 75 6e 69 6e  67 25 0d 0f b4 09 20 70  | . tuning%.... p|
00002b20  25 3d b9 0d 0f be 19 20  e7 20 63 68 25 3d 26 44  |%=..... . ch%=&D|
00002b30  20 80 20 69 63 6f 6e 25  3d 39 20 8c 0d 0f c8 2b  | . icon%=9 ....+|
00002b40  20 20 f2 6d 6f 75 73 65  5f 63 6c 69 63 6b 28 30  |  .mouse_click(0|
00002b50  2c 30 2c 34 2c 74 75 6e  69 6e 67 25 2c 31 35 2c  |,0,4,tuning%,15,|
00002b60  30 29 3a 70 25 3d a3 0d  0f d2 06 20 cc 0d 0f dc  |0):p%=..... ....|
00002b70  26 20 20 e7 20 63 68 25  3d 26 31 38 46 20 84 20  |&  . ch%=&18F . |
00002b80  63 68 25 3d 26 31 38 45  20 84 20 63 68 25 3d 26  |ch%=&18E . ch%=&|
00002b90  44 20 8c 0d 0f e6 35 20  20 e7 20 69 63 6f 6e 25  |D ....5  . icon%|
00002ba0  3d 36 20 f2 63 61 72 65  74 28 74 75 6e 69 6e 67  |=6 .caret(tuning|
00002bb0  25 2c 39 29 20 8b 20 f2  63 61 72 65 74 28 74 75  |%,9) . .caret(tu|
00002bc0  6e 69 6e 67 25 2c 36 29  0d 0f f0 0a 20 20 70 25  |ning%,6)....  p%|
00002bd0  3d a3 0d 0f fa 07 20 20  cd 0d 10 04 06 20 cd 0d  |=.....  ..... ..|
00002be0  10 0e 06 20 3a 0d 10 18  0c 20 c9 20 6d 61 69 6e  |... :.... . main|
00002bf0  25 0d 10 22 12 20 73 25  3d a4 73 68 6f 72 74 63  |%..". s%=.shortc|
00002c00  75 74 73 0d 10 2c 22 20  e7 20 63 68 25 3e 39 36  |uts..," . ch%>96|
00002c10  20 80 20 63 68 25 3c 31  32 33 20 63 68 25 3d 63  | . ch%<123 ch%=c|
00002c20  68 25 2d 33 32 0d 10 36  18 20 6b 25 3d a7 6b 65  |h%-32..6. k%=.ke|
00002c30  79 6d 61 70 24 2c bd 28  63 68 25 29 29 0d 10 40  |ymap$,.(ch%))..@|
00002c40  0d 20 e7 20 6b 25 3e 30  20 8c 0d 10 4a 15 20 e7  |. . k%>0 ...J. .|
00002c50  20 6b 65 79 64 6f 77 6e  25 3d 26 46 46 20 8c 0d  | keydown%=&FF ..|
00002c60  10 54 26 20 f2 6d 6f 75  73 65 5f 63 6c 69 63 6b  |.T& .mouse_click|
00002c70  28 30 2c 30 2c 34 2c 6d  61 69 6e 25 2c 33 36 2d  |(0,0,4,main%,36-|
00002c80  6b 25 2c b9 29 0d 10 5e  20 20 6b 65 79 64 6f 77  |k%,.)..^  keydow|
00002c90  6e 25 3d 33 36 2d 6b 25  3a 6d 61 73 6b 25 3d 26  |n%=36-k%:mask%=&|
00002ca0  38 30 30 33 32 0d 10 68  06 20 cd 0d 10 72 2a 20  |80032..h. ...r* |
00002cb0  e7 20 6b 65 79 64 6f 77  6e 25 3c 3e 26 46 46 20  |. keydown%<>&FF |
00002cc0  80 20 28 33 36 2d 6b 25  3c 3e 6b 65 79 64 6f 77  |. (36-k%<>keydow|
00002cd0  6e 25 29 20 8c 0d 10 7c  11 20 f2 64 65 63 6f 64  |n%) ...|. .decod|
00002ce0  65 5f 64 72 61 67 0d 10  86 26 20 f2 6d 6f 75 73  |e_drag...& .mous|
00002cf0  65 5f 63 6c 69 63 6b 28  30 2c 30 2c 34 2c 6d 61  |e_click(0,0,4,ma|
00002d00  69 6e 25 2c 33 36 2d 6b  25 2c b9 29 0d 10 90 20  |in%,36-k%,.)... |
00002d10  20 6b 65 79 64 6f 77 6e  25 3d 33 36 2d 6b 25 3a  | keydown%=36-k%:|
00002d20  6d 61 73 6b 25 3d 26 38  30 30 33 32 0d 10 9a 06  |mask%=&80032....|
00002d30  20 cd 0d 10 a4 06 20 cc  0d 10 ae 10 20 e7 20 73  | ..... ..... . s|
00002d40  25 3d a3 20 70 25 3d b9  0d 10 b8 06 20 cd 0d 10  |%=. p%=..... ...|
00002d50  c2 06 20 cb 0d 10 cc 22  20 e7 20 70 25 20 c8 99  |.. ...." . p% ..|
00002d60  20 22 57 69 6d 70 5f 50  72 6f 63 65 73 73 4b 65  | "Wimp_ProcessKe|
00002d70  79 22 2c 63 68 25 0d 10  d6 06 20 e1 0d 10 e0 04  |y",ch%.... .....|
00002d80  0d 10 ea 10 20 dd a4 73  68 6f 72 74 63 75 74 73  |.... ..shortcuts|
00002d90  0d 10 f4 0e 20 ea 20 61  25 3a 61 25 3d b9 0d 10  |.... . a%:a%=...|
00002da0  fe 0d 20 c8 8e 20 63 68  25 20 ca 0d 11 08 0b 20  |.. .. ch% ..... |
00002db0  c9 20 26 31 38 33 0d 11  12 12 20 f2 73 65 74 73  |. &183.... .sets|
00002dc0  61 76 65 66 69 65 6c 64  0d 11 1c 16 20 f2 67 65  |avefield.... .ge|
00002dd0  74 5f 70 6f 69 6e 74 65  72 5f 69 6e 66 6f 0d 11  |t_pointer_info..|
00002de0  26 33 20 c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |&3 .. "Wimp_Crea|
00002df0  74 65 4d 65 6e 75 22 2c  2c 73 61 76 65 62 6f 78  |teMenu",,savebox|
00002e00  25 2c 6d 6f 75 73 65 78  25 2c 6d 6f 75 73 65 79  |%,mousex%,mousey|
00002e10  25 0d 11 30 0d 20 c9 20  31 32 37 2c 32 34 0d 11  |%..0. . 127,24..|
00002e20  3a 24 20 e7 20 a4 69 63  6f 6e 73 5f 73 65 6c 65  |:$ . .icons_sele|
00002e30  63 74 65 64 3e 30 20 80  20 6e 65 78 74 25 3e 30  |cted>0 . next%>0|
00002e40  20 8c 0d 11 44 16 20 c8  99 20 22 48 6f 75 72 67  | ...D. .. "Hourg|
00002e50  6c 61 73 73 5f 4f 6e 22  0d 11 4e 24 20 f2 65 6e  |lass_On"..N$ .en|
00002e60  74 69 72 65 5f 6c 69 73  74 28 32 29 3a f2 63 68  |tire_list(2):.ch|
00002e70  65 63 6b 63 68 61 6e 67  65 28 a3 29 0d 11 58 14  |eckchange(.)..X.|
00002e80  20 f2 65 6e 74 69 72 65  5f 6c 69 73 74 28 33 29  | .entire_list(3)|
00002e90  0d 11 62 20 20 f2 66 69  72 73 74 5f 69 74 65 6d  |..b  .first_item|
00002ea0  73 28 b9 2c a3 2c 73 61  6d 70 6c 69 73 74 25 29  |s(.,.,samplist%)|
00002eb0  0d 11 6c 15 20 f2 75 70  64 61 74 65 76 6f 69 63  |..l. .updatevoic|
00002ec0  65 6c 69 73 74 0d 11 76  17 20 c8 99 20 22 48 6f  |elist..v. .. "Ho|
00002ed0  75 72 67 6c 61 73 73 5f  4f 66 66 22 0d 11 80 06  |urglass_Off"....|
00002ee0  20 cd 0d 11 8a 09 20 c9  20 32 36 0d 11 94 14 20  | ..... . 26.... |
00002ef0  f2 65 6e 74 69 72 65 5f  6c 69 73 74 28 31 29 0d  |.entire_list(1).|
00002f00  11 9e 20 20 f2 66 69 72  73 74 5f 69 74 65 6d 73  |..  .first_items|
00002f10  28 b9 2c a3 2c 73 61 6d  70 6c 69 73 74 25 29 0d  |(.,.,samplist%).|
00002f20  11 a8 08 20 c9 20 31 0d  11 b2 14 20 f2 65 6e 74  |... . 1.... .ent|
00002f30  69 72 65 5f 6c 69 73 74  28 30 29 0d 11 bc 20 20  |ire_list(0)...  |
00002f40  f2 66 69 72 73 74 5f 69  74 65 6d 73 28 a3 2c a3  |.first_items(.,.|
00002f50  2c 73 61 6d 70 6c 69 73  74 25 29 0d 11 c6 09 20  |,samplist%).... |
00002f60  c9 20 31 39 0d 11 d0 4f  20 e7 20 73 61 6d 70 6f  |. 19...O . sampo|
00002f70  70 65 6e 25 3d a3 20 73  61 6d 70 6f 70 65 6e 25  |pen%=. sampopen%|
00002f80  3d b9 3a 77 69 6e 6d 65  6e 75 25 21 34 34 34 3d  |=.:winmenu%!444=|
00002f90  a4 53 70 65 63 49 74 65  6d 28 73 61 6d 70 6f 70  |.SpecItem(sampop|
00002fa0  65 6e 25 2c 77 69 6e 6d  65 6e 75 25 21 34 34 34  |en%,winmenu%!444|
00002fb0  2c 30 29 0d 11 da 1e 20  f2 70 6f 70 75 70 5f 77  |,0).... .popup_w|
00002fc0  69 6e 64 6f 77 28 73 61  6d 70 6c 65 73 25 2c 30  |indow(samples%,0|
00002fd0  29 0d 11 e4 08 20 c9 20  33 0d 11 ee 1a 20 f2 70  |).... . 3.... .p|
00002fe0  6f 70 75 70 5f 77 69 6e  64 6f 77 28 63 6f 6e 25  |opup_window(con%|
00002ff0  2c 30 29 0d 11 f8 4f 20  e7 20 63 6f 6e 74 72 6f  |,0)...O . contro|
00003000  6c 73 25 3d a3 20 63 6f  6e 74 72 6f 6c 73 25 3d  |ls%=. controls%=|
00003010  b9 3a 77 69 6e 6d 65 6e  75 25 21 34 32 30 3d a4  |.:winmenu%!420=.|
00003020  53 70 65 63 49 74 65 6d  28 63 6f 6e 74 72 6f 6c  |SpecItem(control|
00003030  73 25 2c 77 69 6e 6d 65  6e 75 25 21 34 32 30 2c  |s%,winmenu%!420,|
00003040  30 29 0d 12 02 09 20 c9  20 32 32 0d 12 0c 16 20  |0).... . 22.... |
00003050  f2 67 65 74 5f 70 6f 69  6e 74 65 72 5f 69 6e 66  |.get_pointer_inf|
00003060  6f 0d 12 16 2f 20 63 75  72 6d 65 6e 75 25 3d 76  |o.../ curmenu%=v|
00003070  6c 6d 65 6e 75 25 3a 63  6d 78 25 3d 6d 6f 75 73  |lmenu%:cmx%=mous|
00003080  65 78 25 3a 63 6d 79 25  3d 6d 6f 75 73 65 79 25  |ex%:cmy%=mousey%|
00003090  0d 12 20 1f 20 f2 75 70  64 61 74 65 76 6f 69 63  |.. . .updatevoic|
000030a0  65 6c 69 73 74 3a f2 73  68 6f 77 6d 65 6e 75 0d  |elist:.showmenu.|
000030b0  12 2a 08 20 c9 20 39 0d  12 34 14 20 f2 65 6e 74  |.*. . 9..4. .ent|
000030c0  69 72 65 5f 6c 69 73 74  28 35 29 0d 12 3e 15 20  |ire_list(5)..>. |
000030d0  f2 75 70 64 61 74 65 76  6f 69 63 65 6c 69 73 74  |.updatevoicelist|
000030e0  0d 12 48 09 20 c9 20 31  38 0d 12 52 14 20 f2 65  |..H. . 18..R. .e|
000030f0  6e 74 69 72 65 5f 6c 69  73 74 28 36 29 0d 12 5c  |ntire_list(6)..\|
00003100  15 20 f2 75 70 64 61 74  65 76 6f 69 63 65 6c 69  |. .updatevoiceli|
00003110  73 74 0d 12 66 09 20 c9  20 32 30 0d 12 70 16 20  |st..f. . 20..p. |
00003120  f2 67 65 74 5f 70 6f 69  6e 74 65 72 5f 69 6e 66  |.get_pointer_inf|
00003130  6f 0d 12 7a 32 20 c8 99  20 22 57 69 6d 70 5f 43  |o..z2 .. "Wimp_C|
00003140  72 65 61 74 65 4d 65 6e  75 22 2c 2c 74 75 6e 69  |reateMenu",,tuni|
00003150  6e 67 25 2c 6d 6f 75 73  65 78 25 2c 6d 6f 75 73  |ng%,mousex%,mous|
00003160  65 79 25 0d 12 84 06 20  7f 0d 12 8e 09 20 61 25  |ey%.... ..... a%|
00003170  3d a3 0d 12 98 06 20 cb  0d 12 a2 08 20 3d 61 25  |=..... ..... =a%|
00003180  0d 12 ac 04 0d 12 b6 13  20 dd f2 73 65 74 73 61  |........ ..setsa|
00003190  76 65 66 69 65 6c 64 0d  12 c0 0c 20 ea 20 74 24  |vefield.... . t$|
000031a0  2c 61 24 0d 12 ca 1c 20  f2 67 65 74 5f 77 69 6e  |,a$.... .get_win|
000031b0  64 6f 77 5f 69 6e 66 6f  28 6d 61 69 6e 25 29 0d  |dow_info(main%).|
000031c0  12 d4 48 20 e7 20 28 62  6c 6b 25 21 38 30 20 80  |..H . (blk%!80 .|
000031d0  20 25 31 30 30 30 30 30  30 30 30 29 3d 30 20 85  | %100000000)=0 .|
000031e0  20 31 2c 22 57 69 6e 64  6f 77 20 74 69 74 6c 65  | 1,"Window title|
000031f0  20 62 61 72 20 69 73 20  6e 6f 74 20 69 6e 64 69  | bar is not indi|
00003200  72 65 63 74 65 64 22 0d  12 de 12 20 74 24 3d 24  |rected".... t$=$|
00003210  28 62 6c 6b 25 21 37 36  29 0d 12 e8 1d 20 e7 20  |(blk%!76).... . |
00003220  63 68 61 6e 67 65 64 25  20 74 24 3d c0 74 24 2c  |changed% t$=.t$,|
00003230  a9 74 24 2d 32 29 0d 12  f2 56 20 e7 20 c0 74 24  |.t$-2)...V . .t$|
00003240  2c 38 29 3d 22 4b 65 79  62 6f 61 72 64 22 20 f2  |,8)="Keyboard" .|
00003250  73 65 74 5f 69 63 6f 6e  28 73 61 76 65 62 6f 78  |set_icon(savebox|
00003260  25 2c 32 2c 22 53 61 6d  70 6c 65 4c 69 73 74 22  |%,2,"SampleList"|
00003270  29 20 8b 20 f2 73 65 74  5f 69 63 6f 6e 28 73 61  |) . .set_icon(sa|
00003280  76 65 62 6f 78 25 2c 32  2c 74 24 29 0d 12 fc 06  |vebox%,2,t$)....|
00003290  20 e1 0d 13 06 04 0d 13  10 15 20 dd f2 63 61 72  | ......... ..car|
000032a0  65 74 28 68 61 6e 25 2c  69 25 29 0d 13 1a 09 20  |et(han%,i%).... |
000032b0  ea 20 61 25 0d 13 24 1e  20 61 25 3d a9 28 24 a4  |. a%..$. a%=.($.|
000032c0  69 63 6f 6e 61 64 64 72  28 68 61 6e 25 2c 69 25  |iconaddr(han%,i%|
000032d0  29 29 0d 13 2e 31 20 c8  99 20 22 57 69 6d 70 5f  |))...1 .. "Wimp_|
000032e0  53 65 74 43 61 72 65 74  50 6f 73 69 74 69 6f 6e  |SetCaretPosition|
000032f0  22 2c 68 61 6e 25 2c 69  25 2c 30 2c 30 2c 2d 31  |",han%,i%,0,0,-1|
00003300  2c 61 25 0d 13 38 06 20  e1 0d 13 42 04 0d 13 4c  |,a%..8. ...B...L|
00003310  1f 20 dd f2 73 65 74 5f  69 63 6f 6e 28 68 61 6e  |. ..set_icon(han|
00003320  25 2c 69 25 2c 76 61 6c  75 65 24 29 0d 13 56 09  |%,i%,value$)..V.|
00003330  20 ea 20 41 25 0d 13 60  1a 20 41 25 3d a4 69 63  | . A%..`. A%=.ic|
00003340  6f 6e 61 64 64 72 28 68  61 6e 25 2c 69 25 29 0d  |onaddr(han%,i%).|
00003350  13 6a 0f 20 24 41 25 3d  76 61 6c 75 65 24 0d 13  |.j. $A%=value$..|
00003360  74 1e 20 f2 75 70 64 61  74 65 5f 69 63 6f 6e 28  |t. .update_icon(|
00003370  68 61 6e 25 2c 69 25 2c  30 2c 30 29 0d 13 7e 25  |han%,i%,0,0)..~%|
00003380  20 c8 99 20 22 57 69 6d  70 5f 47 65 74 43 61 72  | .. "Wimp_GetCar|
00003390  65 74 50 6f 73 69 74 69  6f 6e 22 2c 2c 62 6c 6b  |etPosition",,blk|
000033a0  25 0d 13 88 1f 20 e7 20  21 62 6c 6b 25 3d 68 61  |%.... . !blk%=ha|
000033b0  6e 25 20 80 20 62 6c 6b  25 21 34 3d 69 25 20 8c  |n% . blk%!4=i% .|
000033c0  0d 13 92 10 20 41 25 3d  a9 20 76 61 6c 75 65 24  |.... A%=. value$|
000033d0  0d 13 9c 2f 20 c8 99 20  22 57 69 6d 70 5f 53 65  |.../ .. "Wimp_Se|
000033e0  74 43 61 72 65 74 50 6f  73 69 74 69 6f 6e 22 2c  |tCaretPosition",|
000033f0  68 61 6e 25 2c 69 25 2c  2c 2c 2d 31 2c 41 25 0d  |han%,i%,,,-1,A%.|
00003400  13 a6 06 20 cd 0d 13 b0  06 20 e1 0d 13 ba 04 0d  |... ..... ......|
00003410  13 c4 21 20 dd f2 75 70  64 61 74 65 5f 69 63 6f  |..! ..update_ico|
00003420  6e 28 68 61 6e 25 2c 69  25 2c 65 25 2c 63 25 29  |n(han%,i%,e%,c%)|
00003430  0d 13 ce 1a 20 62 6c 6b  25 21 30 3d 68 61 6e 25  |.... blk%!0=han%|
00003440  3a 62 6c 6b 25 21 34 3d  69 25 0d 13 d8 19 20 62  |:blk%!4=i%.... b|
00003450  6c 6b 25 21 38 3d 65 25  3a 62 6c 6b 25 21 31 32  |lk%!8=e%:blk%!12|
00003460  3d 63 25 0d 13 e2 21 20  c8 99 20 22 57 69 6d 70  |=c%...! .. "Wimp|
00003470  5f 53 65 74 49 63 6f 6e  53 74 61 74 65 22 2c 2c  |_SetIconState",,|
00003480  62 6c 6b 25 0d 13 ec 06  20 e1 0d 13 f6 04 0d 14  |blk%.... .......|
00003490  00 16 20 dd a4 69 63 6f  6e 61 64 64 72 28 68 25  |.. ..iconaddr(h%|
000034a0  2c 69 25 29 0d 14 0a 1b  20 f2 67 65 74 5f 69 63  |,i%).... .get_ic|
000034b0  6f 6e 5f 73 74 61 74 65  28 68 25 2c 69 25 29 0d  |on_state(h%,i%).|
000034c0  14 14 3c 20 e7 20 28 62  6c 6b 25 21 32 34 20 80  |..< . (blk%!24 .|
000034d0  20 25 31 30 30 30 30 30  30 30 30 29 3d 30 20 85  | %100000000)=0 .|
000034e0  20 31 2c 22 49 63 6f 6e  20 69 73 20 6e 6f 74 20  | 1,"Icon is not |
000034f0  69 6e 64 69 72 65 63 74  65 64 22 0d 14 1e 0d 20  |indirected".... |
00003500  3d 62 6c 6b 25 21 32 38  0d 14 28 04 0d 14 32 16  |=blk%!28..(...2.|
00003510  20 dd a4 69 63 6f 6e 74  65 78 74 28 68 25 2c 69  | ..icontext(h%,i|
00003520  25 29 0d 14 3c 1b 20 f2  67 65 74 5f 69 63 6f 6e  |%)..<. .get_icon|
00003530  5f 73 74 61 74 65 28 68  25 2c 69 25 29 0d 14 46  |_state(h%,i%)..F|
00003540  38 20 e7 20 28 62 6c 6b  25 21 32 34 20 80 20 25  |8 . (blk%!24 . %|
00003550  31 30 30 30 30 30 30 30  30 29 3d 31 20 85 20 31  |100000000)=1 . 1|
00003560  2c 22 49 63 6f 6e 20 69  73 20 69 6e 64 69 72 65  |,"Icon is indire|
00003570  63 74 65 64 22 0d 14 50  10 20 3d 24 28 62 6c 6b  |cted"..P. =$(blk|
00003580  25 2b 32 38 29 0d 14 5a  04 0d 14 64 19 20 dd f2  |%+28)..Z...d. ..|
00003590  63 6c 6f 73 65 5f 77 69  6e 64 6f 77 28 68 61 6e  |close_window(han|
000035a0  25 29 0d 14 6e 0f 20 21  62 6c 6b 25 3d 68 61 6e  |%)..n. !blk%=han|
000035b0  25 0d 14 78 20 20 c8 99  20 22 57 69 6d 70 5f 43  |%..x  .. "Wimp_C|
000035c0  6c 6f 73 65 57 69 6e 64  6f 77 22 2c 2c 62 6c 6b  |loseWindow",,blk|
000035d0  25 0d 14 82 0e 20 c8 8e  20 68 61 6e 25 20 ca 0d  |%.... .. han% ..|
000035e0  14 8c 25 20 c9 20 6d 61  69 6e 25 3a 20 6d 61 69  |..% . main%: mai|
000035f0  6e 6f 70 65 6e 25 3d a3  3a 69 66 6e 65 65 64 65  |nopen%=.:ifneede|
00003600  64 25 3d b9 0d 14 96 0b  20 c9 20 63 6f 6e 25 0d  |d%=..... . con%.|
00003610  14 a0 10 20 63 6f 6e 74  72 6f 6c 73 25 3d a3 0d  |... controls%=..|
00003620  14 aa 35 20 77 69 6e 6d  65 6e 75 25 21 34 32 30  |..5 winmenu%!420|
00003630  3d a4 53 70 65 63 49 74  65 6d 28 63 6f 6e 74 72  |=.SpecItem(contr|
00003640  6f 6c 73 25 2c 77 69 6e  6d 65 6e 75 25 21 34 32  |ols%,winmenu%!42|
00003650  30 2c 30 29 0d 14 b4 0f  20 c9 20 73 61 6d 70 6c  |0,0).... . sampl|
00003660  65 73 25 0d 14 be 29 20  f2 63 6c 6f 73 65 5f 77  |es%...) .close_w|
00003670  69 6e 64 6f 77 28 73 61  6d 70 6c 69 73 74 25 29  |indow(samplist%)|
00003680  3a 73 61 6d 70 6f 70 65  6e 25 3d a3 0d 14 c8 35  |:sampopen%=....5|
00003690  20 77 69 6e 6d 65 6e 75  25 21 34 34 34 3d a4 53  | winmenu%!444=.S|
000036a0  70 65 63 49 74 65 6d 28  73 61 6d 70 6f 70 65 6e  |pecItem(sampopen|
000036b0  25 2c 77 69 6e 6d 65 6e  75 25 21 34 34 34 2c 30  |%,winmenu%!444,0|
000036c0  29 0d 14 d2 06 20 cb 0d  14 dc 06 20 e1 0d 14 e6  |).... ..... ....|
000036d0  04 0d 14 f0 10 20 dd f2  63 6c 6f 73 65 64 6f 77  |..... ..closedow|
000036e0  6e 0d 14 fa 0c 20 ea 20  4e 25 2c 61 25 0d 15 04  |n.... . N%,a%...|
000036f0  10 20 e7 20 6e 65 78 74  25 3e 30 20 8c 0d 15 0e  |. . next%>0 ....|
00003700  15 20 e3 20 4e 25 3d 30  20 b8 20 6e 65 78 74 25  |. . N%=0 . next%|
00003710  2d 31 0d 15 18 2c 20 e7  20 3f 28 63 6f 64 65 25  |-1..., . ?(code%|
00003720  2b 26 39 44 30 2b 4e 25  29 3e 30 20 f2 72 65 6d  |+&9D0+N%)>0 .rem|
00003730  6f 76 65 5f 73 61 6d 70  6c 65 28 4e 25 29 0d 15  |ove_sample(N%)..|
00003740  22 06 20 ed 0d 15 2c 06  20 cd 0d 15 36 32 20 e7  |". ...,. ...62 .|
00003750  20 73 61 6d 70 6c 65 62  61 73 65 25 3e 30 20 c8  | samplebase%>0 .|
00003760  99 20 22 4f 53 5f 4d 6f  64 75 6c 65 22 2c 37 2c  |. "OS_Module",7,|
00003770  2c 73 61 6d 70 6c 65 62  61 73 65 25 0d 15 40 26  |,samplebase%..@&|
00003780  20 e7 20 63 6f 64 65 25  3e 30 20 c8 99 20 22 4f  | . code%>0 .. "O|
00003790  53 5f 4d 6f 64 75 6c 65  22 2c 37 2c 2c 63 6f 64  |S_Module",7,,cod|
000037a0  65 25 0d 15 4a 19 20 c8  99 20 22 48 6f 75 72 67  |e%..J. .. "Hourg|
000037b0  6c 61 73 73 5f 53 6d 61  73 68 22 0d 15 54 18 20  |lass_Smash"..T. |
000037c0  c8 99 20 22 57 69 6d 70  5f 43 6c 6f 73 65 44 6f  |.. "Wimp_CloseDo|
000037d0  77 6e 22 0d 15 5e 06 20  e1 0d 15 68 04 0d 15 72  |wn"..^. ...h...r|
000037e0  22 20 dd a4 6d 65 6e 75  74 72 65 65 28 6d 65 6e  |" ..menutree(men|
000037f0  75 73 25 2c 76 6f 69 63  65 6c 69 73 74 25 29 0d  |us%,voicelist%).|
00003800  15 7c 40 20 ea 20 4e 25  2c 4e 32 25 2c 6e 65 78  |.|@ . N%,N2%,nex|
00003810  74 25 2c 6d 65 6e 75 73  74 61 72 74 25 2c 74 72  |t%,menustart%,tr|
00003820  65 65 73 74 61 72 74 25  2c 74 65 78 74 24 2c 6d  |eestart%,text$,m|
00003830  61 78 6c 65 6e 25 2c 6d  65 6e 75 70 74 72 25 0d  |axlen%,menuptr%.|
00003840  15 86 19 20 6d 65 6e 75  70 74 72 25 3d 6d 64 61  |... menuptr%=mda|
00003850  74 61 73 74 61 72 74 25  0d 15 90 18 20 74 72 65  |tastart%.... tre|
00003860  65 73 74 61 72 74 25 3d  6d 65 6e 75 70 74 72 25  |estart%=menuptr%|
00003870  0d 15 9a 14 20 e3 20 4e  25 3d 31 20 b8 20 6d 65  |.... . N%=1 . me|
00003880  6e 75 73 25 0d 15 a4 18  20 6d 65 6e 75 73 74 61  |nus%.... menusta|
00003890  72 74 25 3d 6d 65 6e 75  70 74 72 25 0d 15 ae 33  |rt%=menuptr%...3|
000038a0  20 f3 20 74 65 78 74 24  3a e7 20 a9 20 74 65 78  | . text$:. . tex|
000038b0  74 24 3e 31 32 20 85 20  31 2c 22 4d 65 6e 75 20  |t$>12 . 1,"Menu |
000038c0  74 69 74 6c 65 20 74 6f  6f 20 6c 6f 6e 67 22 0d  |title too long".|
000038d0  15 b8 24 20 24 6d 65 6e  75 70 74 72 25 3d 74 65  |..$ $menuptr%=te|
000038e0  78 74 24 3a 6d 61 78 6c  65 6e 25 3d a9 20 74 65  |xt$:maxlen%=. te|
000038f0  78 74 24 0d 15 c2 3c 20  6d 65 6e 75 70 74 72 25  |xt$...< menuptr%|
00003900  3f 31 32 3d 37 3a 6d 65  6e 75 70 74 72 25 3f 31  |?12=7:menuptr%?1|
00003910  33 3d 32 3a 6d 65 6e 75  70 74 72 25 3f 31 34 3d  |3=2:menuptr%?14=|
00003920  37 3a 6d 65 6e 75 70 74  72 25 3f 31 35 3d 30 0d  |7:menuptr%?15=0.|
00003930  15 cc 2e 20 6d 65 6e 75  70 74 72 25 21 32 30 3d  |... menuptr%!20=|
00003940  34 34 3a 6d 65 6e 75 70  74 72 25 21 32 34 3d 30  |44:menuptr%!24=0|
00003950  3a 6d 65 6e 75 70 74 72  25 2b 3d 32 38 0d 15 d6  |:menuptr%+=28...|
00003960  0d 20 63 6f 75 6e 74 25  3d 30 0d 15 e0 0c 20 f3  |. count%=0.... .|
00003970  20 6e 65 78 74 25 0d 15  ea 14 20 e3 20 4e 32 25  | next%.... . N2%|
00003980  3d 31 20 b8 20 6e 65 78  74 25 0d 15 f4 10 20 f2  |=1 . next%.... .|
00003990  6d 65 6e 75 69 74 65 6d  3a ed 0d 15 fe 26 20 6d  |menuitem:....& m|
000039a0  65 6e 75 70 74 72 25 21  2d 32 34 3d 28 6d 65 6e  |enuptr%!-24=(men|
000039b0  75 70 74 72 25 21 2d 32  34 29 20 84 20 26 38 30  |uptr%!-24) . &80|
000039c0  0d 16 08 22 20 6d 65 6e  75 73 74 61 72 74 25 21  |..." menustart%!|
000039d0  31 36 3d 28 6d 61 78 6c  65 6e 25 2a 31 36 29 2b  |16=(maxlen%*16)+|
000039e0  31 34 0d 16 12 06 20 ed  0d 16 1c 15 20 e7 20 76  |14.... ..... . v|
000039f0  6f 69 63 65 6c 69 73 74  25 3d a3 20 8c 0d 16 26  |oicelist%=. ...&|
00003a00  19 20 6d 64 61 74 61 73  74 61 72 74 25 3d 6d 65  |. mdatastart%=me|
00003a10  6e 75 70 74 72 25 0d 16  30 06 20 cc 0d 16 3a 65  |nuptr%..0. ...:e|
00003a20  20 e7 20 63 6f 75 6e 74  25 3d 30 20 77 69 6e 6d  | . count%=0 winm|
00003a30  65 6e 75 25 21 31 30 38  3d a4 53 70 65 63 49 74  |enu%!108=.SpecIt|
00003a40  65 6d 28 b9 2c 77 69 6e  6d 65 6e 75 25 21 31 30  |em(.,winmenu%!10|
00003a50  38 2c 32 32 29 20 8b 20  77 69 6e 6d 65 6e 75 25  |8,22) . winmenu%|
00003a60  21 31 30 38 3d a4 53 70  65 63 49 74 65 6d 28 a3  |!108=.SpecItem(.|
00003a70  2c 77 69 6e 6d 65 6e 75  25 21 31 30 38 2c 32 32  |,winmenu%!108,22|
00003a80  29 0d 16 44 12 20 6d 76  25 28 63 6f 75 6e 74 25  |)..D. mv%(count%|
00003a90  29 3d 30 0d 16 4e 06 20  cd 0d 16 58 3b 20 e7 20  |)=0..N. ...X; . |
00003aa0  6d 64 61 74 61 73 74 61  72 74 25 3e 6d 65 6e 75  |mdatastart%>menu|
00003ab0  64 61 74 61 25 2b 26 36  30 30 20 85 20 31 2c 22  |data%+&600 . 1,"|
00003ac0  4d 65 6e 75 20 64 61 74  61 20 61 72 65 61 20 66  |Menu data area f|
00003ad0  75 6c 6c 22 0d 16 62 2e  20 f2 6c 69 6e 6b 73 28  |ull"..b. .links(|
00003ae0  74 72 65 65 73 74 61 72  74 25 2c 6d 64 61 74 61  |treestart%,mdata|
00003af0  73 74 61 72 74 25 2d 74  72 65 65 73 74 61 72 74  |start%-treestart|
00003b00  25 29 0d 16 6c 10 20 3d  74 72 65 65 73 74 61 72  |%)..l. =treestar|
00003b10  74 25 0d 16 76 04 0d 16  80 0f 20 dd f2 6d 65 6e  |t%..v..... ..men|
00003b20  75 69 74 65 6d 0d 16 8a  19 20 ea 20 74 65 78 74  |uitem.... . text|
00003b30  24 2c 66 6c 61 67 25 2c  69 74 25 2c 66 25 0d 16  |$,flag%,it%,f%..|
00003b40  94 13 20 e7 20 76 6f 69  63 65 6c 69 73 74 25 20  |.. . voicelist% |
00003b50  8c 0d 16 9e 28 20 20 c8  99 20 22 53 6f 75 6e 64  |....(  .. "Sound|
00003b60  5f 49 6e 73 74 61 6c 6c  56 6f 69 63 65 22 2c 30  |_InstallVoice",0|
00003b70  2c 4e 32 25 20 b8 20 66  25 0d 16 a8 33 20 20 e7  |,N2% . f%...3  .|
00003b80  20 66 25 3c 3e 30 20 c8  99 20 22 53 6f 75 6e 64  | f%<>0 .. "Sound|
00003b90  5f 49 6e 73 74 61 6c 6c  56 6f 69 63 65 22 2c 30  |_InstallVoice",0|
00003ba0  2c 4e 32 25 20 b8 20 74  65 78 74 24 0d 16 b2 0f  |,N2% . text$....|
00003bb0  20 20 e7 20 66 25 3c 3e  30 20 8c 0d 16 bc 1f 20  |  . f%<>0 ..... |
00003bc0  20 6d 76 25 28 63 6f 75  6e 74 25 29 3d 4e 32 25  | mv%(count%)=N2%|
00003bd0  3a 63 6f 75 6e 74 25 2b  3d 31 0d 16 c6 07 20 20  |:count%+=1....  |
00003be0  cc 0d 16 d0 31 20 20 e7  20 28 4e 32 25 3d 33 32  |....1  . (N2%=32|
00003bf0  20 80 20 63 6f 75 6e 74  25 3d 30 29 20 74 65 78  | . count%=0) tex|
00003c00  74 24 3d 22 2a 2a 2a 2a  22 3a 66 25 3d 30 20 8b  |t$="****":f%=0 .|
00003c10  20 e1 0d 16 da 07 20 20  cd 0d 16 e4 06 20 cc 0d  | .....  ..... ..|
00003c20  16 ee 13 20 20 f3 20 74  65 78 74 24 2c 66 6c 61  |...  . text$,fla|
00003c30  67 25 0d 16 f8 06 20 cd  0d 17 02 34 20 6d 65 6e  |g%.... ....4 men|
00003c40  75 70 74 72 25 21 30 3d  30 3a 6d 65 6e 75 70 74  |uptr%!0=0:menupt|
00003c50  72 25 21 34 3d 2d 31 3a  6d 65 6e 75 70 74 72 25  |r%!4=-1:menuptr%|
00003c60  21 38 3d 26 30 37 30 30  30 30 32 31 0d 17 0c 13  |!8=&07000021....|
00003c70  20 e7 20 76 6f 69 63 65  6c 69 73 74 25 20 8c 0d  | . voicelist% ..|
00003c80  17 16 21 20 f2 6d 65 6e  75 5f 74 65 78 74 28 74  |..! .menu_text(t|
00003c90  65 78 74 24 2c 6d 65 6e  75 70 74 72 25 2c 32 29  |ext$,menuptr%,2)|
00003ca0  0d 17 20 06 20 cc 0d 17  2a 21 20 f2 6d 65 6e 75  |.. . ...*! .menu|
00003cb0  5f 74 65 78 74 28 74 65  78 74 24 2c 6d 65 6e 75  |_text(text$,menu|
00003cc0  70 74 72 25 2c 30 29 0d  17 34 06 20 cd 0d 17 3e  |ptr%,0)..4. ...>|
00003cd0  23 20 e7 20 66 6c 61 67  25 20 80 20 32 20 21 6d  |# . flag% . 2 !m|
00003ce0  65 6e 75 70 74 72 25 3d  32 20 80 20 25 31 31 31  |enuptr%=2 . %111|
00003cf0  0d 17 48 33 20 e7 20 66  6c 61 67 25 20 80 20 31  |..H3 . flag% . 1|
00003d00  20 21 6d 65 6e 75 70 74  72 25 3d a4 53 70 65 63  | !menuptr%=.Spec|
00003d10  49 74 65 6d 28 b9 2c 21  6d 65 6e 75 70 74 72 25  |Item(.,!menuptr%|
00003d20  2c 30 29 0d 17 52 36 20  e7 20 66 6c 61 67 25 20  |,0)..R6 . flag% |
00003d30  80 20 34 20 6d 65 6e 75  70 74 72 25 21 38 3d a4  |. 4 menuptr%!8=.|
00003d40  53 70 65 63 49 74 65 6d  28 b9 2c 6d 65 6e 75 70  |SpecItem(.,menup|
00003d50  74 72 25 21 38 2c 32 32  29 0d 17 5c 11 20 6d 65  |tr%!8,22)..\. me|
00003d60  6e 75 70 74 72 25 2b 3d  32 34 0d 17 66 06 20 e1  |nuptr%+=24..f. .|
00003d70  0d 17 70 04 0d 17 7a 1d  20 dd f2 6d 65 6e 75 5f  |..p...z. ..menu_|
00003d80  74 65 78 74 28 74 24 2c  6d 70 74 72 25 2c 70 25  |text(t$,mptr%,p%|
00003d90  29 0d 17 84 09 20 ea 20  73 25 0d 17 8e 19 20 e7  |).... . s%.... .|
00003da0  20 a9 20 74 24 3e 32 31  20 74 24 3d c0 74 24 2c  | . t$>21 t$=.t$,|
00003db0  32 31 29 0d 17 98 10 20  e7 20 a9 20 74 24 3c 31  |21).... . . t$<1|
00003dc0  32 20 8c 0d 17 a2 14 20  20 24 28 6d 70 74 72 25  |2 .....  $(mptr%|
00003dd0  2b 31 32 29 3d 74 24 0d  17 ac 1e 20 20 6d 70 74  |+12)=t$....  mpt|
00003de0  72 25 21 38 3d 6d 70 74  72 25 21 38 20 80 20 ac  |r%!8=mptr%!8 . .|
00003df0  20 26 31 30 30 0d 17 b6  06 20 cc 0d 17 c0 0d 20  | &100.... ..... |
00003e00  20 c8 8e 20 70 25 20 ca  0d 17 ca 15 20 20 c9 20  | .. p% .....  . |
00003e10  31 3a 20 73 25 3d 66 6d  69 74 65 6d 25 0d 17 d4  |1: s%=fmitem%...|
00003e20  28 20 20 c9 20 32 3a 20  73 25 3d 76 6c 73 74 61  |(  . 2: s%=vlsta|
00003e30  72 74 25 3a 76 6c 73 74  61 72 74 25 2b 3d 28 a9  |rt%:vlstart%+=(.|
00003e40  74 24 2b 31 29 0d 17 de  1d 20 20 7f 3a 20 73 25  |t$+1)....  .: s%|
00003e50  3d a4 74 65 78 74 73 70  61 63 65 28 a9 74 24 2b  |=.textspace(.t$+|
00003e60  31 29 0d 17 e8 07 20 20  cb 0d 17 f2 0c 20 20 24  |1)....  .....  $|
00003e70  73 25 3d 74 24 0d 17 fc  2c 20 20 6d 70 74 72 25  |s%=t$...,  mptr%|
00003e80  21 31 32 3d 73 25 3a 6d  70 74 72 25 21 31 36 3d  |!12=s%:mptr%!16=|
00003e90  2d 31 3a 6d 70 74 72 25  21 32 30 3d a9 74 24 2b  |-1:mptr%!20=.t$+|
00003ea0  31 0d 18 06 1c 20 20 6d  70 74 72 25 21 38 3d 6d  |1....  mptr%!8=m|
00003eb0  70 74 72 25 21 38 20 84  20 26 31 30 30 0d 18 10  |ptr%!8 . &100...|
00003ec0  06 20 cd 0d 18 1a 20 20  e7 20 a9 20 74 24 3e 6d  |. ....  . . t$>m|
00003ed0  61 78 6c 65 6e 25 20 6d  61 78 6c 65 6e 25 3d a9  |axlen% maxlen%=.|
00003ee0  20 74 24 0d 18 24 06 20  e1 0d 18 2e 04 0d 18 38  | t$..$. .......8|
00003ef0  14 20 dd a4 74 65 78 74  73 70 61 63 65 28 4c 25  |. ..textspace(L%|
00003f00  29 0d 18 42 12 20 62 75  66 73 74 61 72 74 25 2b  |)..B. bufstart%+|
00003f10  3d 4c 25 0d 18 4c 35 20  e7 20 62 75 66 73 74 61  |=L%..L5 . bufsta|
00003f20  72 74 25 3e 28 62 75 66  25 2b 26 31 30 30 30 29  |rt%>(buf%+&1000)|
00003f30  20 85 20 31 2c 22 42 75  66 66 65 72 20 73 70 61  | . 1,"Buffer spa|
00003f40  63 65 20 66 75 6c 6c 22  0d 18 56 12 20 3d 62 75  |ce full"..V. =bu|
00003f50  66 73 74 61 72 74 25 2d  4c 25 0d 18 60 04 0d 18  |fstart%-L%..`...|
00003f60  6a 1d 20 dd f2 6c 69 6e  6b 73 28 64 61 74 61 73  |j. ..links(datas|
00003f70  74 61 72 74 25 2c 6c 65  6e 25 29 0d 18 74 38 20  |tart%,len%)..t8 |
00003f80  ea 20 70 74 72 31 25 2c  70 74 72 32 25 2c 6e 6f  |. ptr1%,ptr2%,no|
00003f90  6c 69 6e 6b 73 25 2c 4e  25 2c 73 74 61 72 74 6d  |links%,N%,startm|
00003fa0  65 6e 75 24 2c 69 74 65  6d 25 2c 64 65 73 74 6f  |enu$,item%,desto|
00003fb0  62 6a 24 0d 18 7e 1e 20  f3 20 6e 6f 6c 69 6e 6b  |bj$..~. . nolink|
00003fc0  73 25 3a e7 20 6e 6f 6c  69 6e 6b 73 25 3d 30 20  |s%:. nolinks%=0 |
00003fd0  e1 0d 18 88 16 20 e3 20  4e 25 3d 31 20 b8 20 6e  |..... . N%=1 . n|
00003fe0  6f 6c 69 6e 6b 73 25 0d  18 92 20 20 f3 20 73 74  |olinks%...  . st|
00003ff0  61 72 74 6d 65 6e 75 24  2c 69 74 65 6d 25 2c 64  |artmenu$,item%,d|
00004000  65 73 74 6f 62 6a 24 0d  18 9c 2e 20 70 74 72 31  |estobj$.... ptr1|
00004010  25 3d a4 6d 65 6e 75 73  74 61 72 74 28 73 74 61  |%=.menustart(sta|
00004020  72 74 6d 65 6e 75 24 2c  64 61 74 61 73 74 61 72  |rtmenu$,datastar|
00004030  74 25 2d 31 29 0d 18 a6  20 20 70 74 72 31 25 2b  |t%-1)...  ptr1%+|
00004040  3d 32 38 3a 70 74 72 31  25 2b 3d 28 69 74 65 6d  |=28:ptr1%+=(item|
00004050  25 2a 32 34 29 0d 18 b0  18 20 e7 20 c0 64 65 73  |%*24).... . .des|
00004060  74 6f 62 6a 24 2c 31 29  3d 22 23 22 8c 0d 18 ba  |tobj$,1)="#"....|
00004070  28 20 70 74 72 31 25 21  34 3d a0 28 c2 64 65 73  |( ptr1%!4=.(.des|
00004080  74 6f 62 6a 24 2c 28 a9  64 65 73 74 6f 62 6a 24  |tobj$,(.destobj$|
00004090  2d 31 29 29 29 0d 18 c4  06 20 cc 0d 18 ce 2c 20  |-1))).... ...., |
000040a0  70 74 72 32 25 3d a4 6d  65 6e 75 73 74 61 72 74  |ptr2%=.menustart|
000040b0  28 64 65 73 74 6f 62 6a  24 2c 64 61 74 61 73 74  |(destobj$,datast|
000040c0  61 72 74 25 2d 31 29 0d  18 d8 12 20 70 74 72 31  |art%-1).... ptr1|
000040d0  25 21 34 3d 70 74 72 32  25 0d 18 e2 06 20 cd 0d  |%!4=ptr2%.... ..|
000040e0  18 ec 06 20 ed 0d 18 f6  06 20 e1 0d 19 00 04 0d  |... ..... ......|
000040f0  19 0a 17 20 dd a4 6d 65  6e 75 73 74 61 72 74 28  |... ..menustart(|
00004100  6d 24 2c 70 25 29 0d 19  14 0c 20 f5 3a 70 25 2b  |m$,p%).... .:p%+|
00004110  3d 31 0d 19 1e 35 20 e7  20 70 25 3e 28 64 61 74  |=1...5 . p%>(dat|
00004120  61 73 74 61 72 74 25 2b  6c 65 6e 25 29 20 85 20  |astart%+len%) . |
00004130  31 2c 22 46 61 69 6c 65  64 20 74 6f 20 6c 69 6e  |1,"Failed to lin|
00004140  6b 20 6d 65 6e 75 22 0d  19 28 39 20 fd 20 24 70  |k menu"..(9 . $p|
00004150  25 3d 6d 24 20 80 20 70  25 3f 31 32 3d 37 20 80  |%=m$ . p%?12=7 .|
00004160  20 70 25 3f 31 33 3d 32  20 80 20 70 25 3f 31 34  | p%?13=2 . p%?14|
00004170  3d 37 20 80 20 70 25 3f  31 35 3d 30 3a 3d 70 25  |=7 . p%?15=0:=p%|
00004180  0d 19 32 04 0d 19 3c 0f  20 dd f2 73 68 6f 77 6d  |..2...<. ..showm|
00004190  65 6e 75 0d 19 46 2d 20  c8 99 20 22 57 69 6d 70  |enu..F- .. "Wimp|
000041a0  5f 43 72 65 61 74 65 4d  65 6e 75 22 2c 2c 63 75  |_CreateMenu",,cu|
000041b0  72 6d 65 6e 75 25 2c 63  6d 78 25 2c 63 6d 79 25  |rmenu%,cmx%,cmy%|
000041c0  0d 19 50 0e 20 72 64 6d  65 6e 75 25 3d 30 0d 19  |..P. rdmenu%=0..|
000041d0  5a 06 20 e1 0d 19 64 04  0d 19 6e 1c 20 dd f2 64  |Z. ...d...n. ..d|
000041e0  65 63 6f 64 65 5f 6d 65  6e 75 28 6d 73 65 6c 65  |ecode_menu(msele|
000041f0  63 74 25 29 0d 19 78 1c  20 ea 20 70 25 2c 61 25  |ct%)..x. . p%,a%|
00004200  2c 76 24 3a 72 65 64 72  61 77 72 65 71 25 3d b9  |,v$:redrawreq%=.|
00004210  0d 19 82 31 20 c8 99 20  22 57 69 6d 70 5f 44 65  |...1 .. "Wimp_De|
00004220  63 6f 64 65 4d 65 6e 75  22 2c 2c 63 75 72 6d 65  |codeMenu",,curme|
00004230  6e 75 25 2c 6d 73 65 6c  65 63 74 25 2c 6d 73 74  |nu%,mselect%,mst|
00004240  25 0d 19 8c 3a 20 e7 20  28 21 6d 73 65 6c 65 63  |%...: . (!mselec|
00004250  74 25 3d 33 20 80 20 6d  73 65 6c 65 63 74 25 21  |t%=3 . mselect%!|
00004260  34 3c 3e 2d 31 29 20 84  20 63 75 72 6d 65 6e 75  |4<>-1) . curmenu|
00004270  25 3d 76 6c 6d 65 6e 75  25 20 8c 0d 19 96 34 20  |%=vlmenu% ....4 |
00004280  e7 20 63 75 72 6d 65 6e  75 25 3d 76 6c 6d 65 6e  |. curmenu%=vlmen|
00004290  75 25 20 70 25 3d 21 6d  73 65 6c 65 63 74 25 20  |u% p%=!mselect% |
000042a0  8b 20 70 25 3d 6d 73 65  6c 65 63 74 25 21 34 0d  |. p%=mselect%!4.|
000042b0  19 a0 15 20 e7 20 70 25  3c 30 20 84 20 70 25 3e  |... . p%<0 . p%>|
000042c0  33 32 20 e1 0d 19 aa 2b  20 c8 99 20 22 53 6f 75  |32 ....+ .. "Sou|
000042d0  6e 64 5f 49 6e 73 74 61  6c 6c 56 6f 69 63 65 22  |nd_InstallVoice"|
000042e0  2c 30 2c 6d 76 25 28 70  25 29 20 b8 20 61 25 0d  |,0,mv%(p%) . a%.|
000042f0  19 b4 56 20 e7 20 61 25  3c 3e 30 20 c8 99 20 22  |..V . a%<>0 .. "|
00004300  53 6f 75 6e 64 5f 49 6e  73 74 61 6c 6c 56 6f 69  |Sound_InstallVoi|
00004310  63 65 22 2c 30 2c 6d 76  25 28 70 25 29 20 b8 20  |ce",0,mv%(p%) . |
00004320  76 24 20 8b 20 c8 99 20  22 53 6f 75 6e 64 5f 49  |v$ . .. "Sound_I|
00004330  6e 73 74 61 6c 6c 56 6f  69 63 65 22 2c 30 2c 31  |nstallVoice",0,1|
00004340  20 b8 20 76 24 0d 19 be  11 20 63 75 72 76 6f 69  | . v$.... curvoi|
00004350  63 65 24 3d 76 24 0d 19  c8 59 20 e7 20 61 25 3d  |ce$=v$...Y . a%=|
00004360  30 20 76 6c 73 65 6c 25  3d 70 25 3a f2 75 70 64  |0 vlsel%=p%:.upd|
00004370  61 74 65 76 6f 69 63 65  6c 69 73 74 3a f2 6d 65  |atevoicelist:.me|
00004380  6e 75 72 65 64 72 61 77  3a f2 72 65 70 6f 72 74  |nuredraw:.report|
00004390  5f 65 72 72 28 22 56 6f  69 63 65 20 6e 6f 74 20  |_err("Voice not |
000043a0  66 6f 75 6e 64 22 2c 31  30 30 2c 9e 29 3a e1 0d  |found",100,.):..|
000043b0  19 d2 45 20 76 6c 6d 65  6e 75 25 21 28 32 38 2b  |..E vlmenu%!(28+|
000043c0  28 76 6c 73 65 6c 25 2a  32 34 29 29 3d a4 53 70  |(vlsel%*24))=.Sp|
000043d0  65 63 49 74 65 6d 28 a3  2c 76 6c 6d 65 6e 75 25  |ecItem(.,vlmenu%|
000043e0  21 28 32 38 2b 28 76 6c  73 65 6c 25 2a 32 34 29  |!(28+(vlsel%*24)|
000043f0  29 2c 30 29 0d 19 dc 3d  20 76 6c 6d 65 6e 75 25  |),0)...= vlmenu%|
00004400  21 28 32 38 2b 28 70 25  2a 32 34 29 29 3d a4 53  |!(28+(p%*24))=.S|
00004410  70 65 63 49 74 65 6d 28  b9 2c 76 6c 6d 65 6e 75  |pecItem(.,vlmenu|
00004420  25 21 28 32 38 2b 28 70  25 2a 32 34 29 29 2c 30  |%!(28+(p%*24)),0|
00004430  29 0d 19 e6 1a 20 76 6c  73 65 6c 25 3d 70 25 3a  |).... vlsel%=p%:|
00004440  73 75 6e 65 65 64 65 64  25 3d b9 0d 19 f0 14 20  |suneeded%=..... |
00004450  f2 63 68 65 63 6b 63 68  61 6e 67 65 28 b9 29 0d  |.checkchange(.).|
00004460  19 fa 06 20 cd 0d 1a 04  0f 20 c8 8e 20 24 6d 73  |... ..... .. $ms|
00004470  74 25 20 ca 0d 1a 0e 20  20 c9 20 22 4f 70 74 69  |t% ....  . "Opti|
00004480  6f 6e 73 2e 43 6f 6e 74  72 6f 6c 73 2e 2e 2e 20  |ons.Controls... |
00004490  20 5e 43 22 0d 1a 18 1a  20 f2 70 6f 70 75 70 5f  | ^C".... .popup_|
000044a0  77 69 6e 64 6f 77 28 63  6f 6e 25 2c 30 29 0d 1a  |window(con%,0)..|
000044b0  22 4f 20 e7 20 63 6f 6e  74 72 6f 6c 73 25 3d a3  |"O . controls%=.|
000044c0  20 63 6f 6e 74 72 6f 6c  73 25 3d b9 3a 77 69 6e  | controls%=.:win|
000044d0  6d 65 6e 75 25 21 34 32  30 3d a4 53 70 65 63 49  |menu%!420=.SpecI|
000044e0  74 65 6d 28 63 6f 6e 74  72 6f 6c 73 25 2c 77 69  |tem(controls%,wi|
000044f0  6e 6d 65 6e 75 25 21 34  32 30 2c 30 29 0d 1a 2c  |nmenu%!420,0)..,|
00004500  20 20 c9 20 22 4f 70 74  69 6f 6e 73 2e 53 61 6d  |  . "Options.Sam|
00004510  70 6c 65 73 2e 2e 2e 20  20 20 5e 53 22 0d 1a 36  |ples...   ^S"..6|
00004520  4f 20 e7 20 73 61 6d 70  6f 70 65 6e 25 3d a3 20  |O . sampopen%=. |
00004530  73 61 6d 70 6f 70 65 6e  25 3d b9 3a 77 69 6e 6d  |sampopen%=.:winm|
00004540  65 6e 75 25 21 34 34 34  3d a4 53 70 65 63 49 74  |enu%!444=.SpecIt|
00004550  65 6d 28 73 61 6d 70 6f  70 65 6e 25 2c 77 69 6e  |em(sampopen%,win|
00004560  6d 65 6e 75 25 21 34 34  34 2c 30 29 0d 1a 40 1e  |menu%!444,0)..@.|
00004570  20 f2 70 6f 70 75 70 5f  77 69 6e 64 6f 77 28 73  | .popup_window(s|
00004580  61 6d 70 6c 65 73 25 2c  30 29 0d 1a 4a 06 20 cb  |amples%,0)..J. .|
00004590  0d 1a 54 1a 20 c8 8e 20  a4 6c 65 61 66 6e 61 6d  |..T. .. .leafnam|
000045a0  65 28 24 6d 73 74 25 29  20 ca 0d 1a 5e 0d 20 c9  |e($mst%) ...^. .|
000045b0  20 22 51 75 69 74 22 0d  1a 68 3a 20 e7 20 63 68  | "Quit"..h: . ch|
000045c0  61 6e 67 65 64 25 3d b9  20 f2 6d 65 73 73 61 67  |anged%=. .messag|
000045d0  65 5f 62 6f 78 28 31 29  3a 72 65 64 72 61 77 72  |e_box(1):redrawr|
000045e0  65 71 25 3d a3 20 8b 20  66 69 6e 69 73 68 25 3d  |eq%=. . finish%=|
000045f0  b9 0d 1a 72 13 20 c9 20  22 53 65 6c 65 63 74 20  |...r. . "Select |
00004600  61 6c 6c 22 0d 1a 7c 14  20 f2 65 6e 74 69 72 65  |all"..|. .entire|
00004610  5f 6c 69 73 74 28 30 29  0d 1a 86 20 20 f2 66 69  |_list(0)...  .fi|
00004620  72 73 74 5f 69 74 65 6d  73 28 a3 2c a3 2c 73 61  |rst_items(.,.,sa|
00004630  6d 70 6c 69 73 74 25 29  0d 1a 90 13 20 c9 20 22  |mplist%).... . "|
00004640  43 6c 65 61 72 20 20 20  5e 5a 22 0d 1a 9a 14 20  |Clear   ^Z".... |
00004650  f2 65 6e 74 69 72 65 5f  6c 69 73 74 28 31 29 0d  |.entire_list(1).|
00004660  1a a4 20 20 f2 66 69 72  73 74 5f 69 74 65 6d 73  |..  .first_items|
00004670  28 b9 2c a3 2c 73 61 6d  70 6c 69 73 74 25 29 0d  |(.,.,samplist%).|
00004680  1a ae 15 20 c9 20 22 41  75 74 6f 20 69 6e 73 74  |... . "Auto inst|
00004690  61 6c 6c 22 0d 1a b8 2c  20 e7 20 61 75 74 6f 69  |all"..., . autoi|
000046a0  6e 73 74 25 3d b9 20 61  75 74 6f 69 6e 73 74 25  |nst%=. autoinst%|
000046b0  3d a3 20 8b 20 61 75 74  6f 69 6e 73 74 25 3d b9  |=. . autoinst%=.|
000046c0  0d 1a c2 35 20 77 69 6e  6d 65 6e 75 25 21 33 34  |...5 winmenu%!34|
000046d0  38 3d a4 53 70 65 63 49  74 65 6d 28 61 75 74 6f  |8=.SpecItem(auto|
000046e0  69 6e 73 74 25 2c 77 69  6e 6d 65 6e 75 25 21 33  |inst%,winmenu%!3|
000046f0  34 38 2c 30 29 0d 1a cc  14 20 f2 63 68 65 63 6b  |48,0).... .check|
00004700  63 68 61 6e 67 65 28 b9  29 0d 1a d6 15 20 c9 20  |change(.).... . |
00004710  22 53 61 76 65 20 63 68  6f 69 63 65 73 22 0d 1a  |"Save choices"..|
00004720  e0 35 20 e7 20 73 61 76  65 63 68 6f 69 63 65 73  |.5 . savechoices|
00004730  25 3d b9 20 73 61 76 65  63 68 6f 69 63 65 73 25  |%=. savechoices%|
00004740  3d a3 20 8b 20 73 61 76  65 63 68 6f 69 63 65 73  |=. . savechoices|
00004750  25 3d b9 0d 1a ea 38 20  77 69 6e 6d 65 6e 75 25  |%=....8 winmenu%|
00004760  21 33 37 32 3d a4 53 70  65 63 49 74 65 6d 28 73  |!372=.SpecItem(s|
00004770  61 76 65 63 68 6f 69 63  65 73 25 2c 77 69 6e 6d  |avechoices%,winm|
00004780  65 6e 75 25 21 33 37 32  2c 30 29 0d 1a f4 14 20  |enu%!372,0).... |
00004790  c9 20 22 53 74 61 6e 64  20 61 6c 6f 6e 65 22 0d  |. "Stand alone".|
000047a0  1a fe 26 20 e7 20 73 61  6c 6f 6e 65 25 3d b9 20  |..& . salone%=. |
000047b0  73 61 6c 6f 6e 65 25 3d  a3 20 8b 20 73 61 6c 6f  |salone%=. . salo|
000047c0  6e 65 25 3d b9 0d 1b 08  33 20 77 69 6e 6d 65 6e  |ne%=....3 winmen|
000047d0  75 25 21 33 39 36 3d a4  53 70 65 63 49 74 65 6d  |u%!396=.SpecItem|
000047e0  28 73 61 6c 6f 6e 65 25  2c 77 69 6e 6d 65 6e 75  |(salone%,winmenu|
000047f0  25 21 33 39 36 2c 30 29  0d 1b 12 13 20 c9 20 22  |%!396,0).... . "|
00004800  44 65 6c 65 74 65 20 20  5e 58 22 0d 1b 1c 16 20  |Delete  ^X".... |
00004810  c8 99 20 22 48 6f 75 72  67 6c 61 73 73 5f 4f 6e  |.. "Hourglass_On|
00004820  22 0d 1b 26 24 20 f2 65  6e 74 69 72 65 5f 6c 69  |"..&$ .entire_li|
00004830  73 74 28 32 29 3a f2 63  68 65 63 6b 63 68 61 6e  |st(2):.checkchan|
00004840  67 65 28 a3 29 0d 1b 30  14 20 f2 65 6e 74 69 72  |ge(.)..0. .entir|
00004850  65 5f 6c 69 73 74 28 33  29 0d 1b 3a 20 20 f2 66  |e_list(3)..:  .f|
00004860  69 72 73 74 5f 69 74 65  6d 73 28 b9 2c a3 2c 73  |irst_items(.,.,s|
00004870  61 6d 70 6c 69 73 74 25  29 0d 1b 44 15 20 f2 75  |amplist%)..D. .u|
00004880  70 64 61 74 65 76 6f 69  63 65 6c 69 73 74 0d 1b  |pdatevoicelist..|
00004890  4e 17 20 c8 99 20 22 48  6f 75 72 67 6c 61 73 73  |N. .. "Hourglass|
000048a0  5f 4f 66 66 22 0d 1b 58  13 20 c9 20 22 49 6e 73  |_Off"..X. . "Ins|
000048b0  74 61 6c 6c 20 5e 49 22  0d 1b 62 14 20 f2 65 6e  |tall ^I"..b. .en|
000048c0  74 69 72 65 5f 6c 69 73  74 28 35 29 0d 1b 6c 15  |tire_list(5)..l.|
000048d0  20 f2 75 70 64 61 74 65  76 6f 69 63 65 6c 69 73  | .updatevoicelis|
000048e0  74 0d 1b 76 15 20 f2 73  65 6c 65 63 74 69 6f 6e  |t..v. .selection|
000048f0  5f 69 74 65 6d 73 0d 1b  80 22 20 f2 73 65 74 5f  |_items..." .set_|
00004900  69 63 6f 6e 28 73 61 6d  70 69 6e 66 6f 25 2c 31  |icon(sampinfo%,1|
00004910  32 2c 22 59 65 73 22 29  0d 1b 8a 13 20 c9 20 22  |2,"Yes").... . "|
00004920  52 65 6d 6f 76 65 20 20  5e 52 22 0d 1b 94 14 20  |Remove  ^R".... |
00004930  f2 65 6e 74 69 72 65 5f  6c 69 73 74 28 36 29 0d  |.entire_list(6).|
00004940  1b 9e 15 20 f2 75 70 64  61 74 65 76 6f 69 63 65  |... .updatevoice|
00004950  6c 69 73 74 0d 1b a8 15  20 f2 73 65 6c 65 63 74  |list.... .select|
00004960  69 6f 6e 5f 69 74 65 6d  73 0d 1b b2 21 20 f2 73  |ion_items...! .s|
00004970  65 74 5f 69 63 6f 6e 28  73 61 6d 70 69 6e 66 6f  |et_icon(sampinfo|
00004980  25 2c 31 32 2c 22 4e 6f  22 29 0d 1b bc 06 20 cb  |%,12,"No").... .|
00004990  0d 1b c6 10 20 f2 6d 65  6e 75 72 65 64 72 61 77  |.... .menuredraw|
000049a0  0d 1b d0 06 20 e1 0d 1b  da 04 0d 1b e4 11 20 dd  |.... ......... .|
000049b0  f2 6d 65 6e 75 72 65 64  72 61 77 0d 1b ee 26 20  |.menuredraw...& |
000049c0  f2 67 65 74 5f 70 6f 69  6e 74 65 72 5f 69 6e 66  |.get_pointer_inf|
000049d0  6f 3a e7 20 28 6d 62 75  74 25 20 80 20 31 29 20  |o:. (mbut% . 1) |
000049e0  8c 0d 1b f8 1d 20 e7 20  72 65 64 72 61 77 72 65  |..... . redrawre|
000049f0  71 25 3d b9 20 f2 73 68  6f 77 6d 65 6e 75 0d 1c  |q%=. .showmenu..|
00004a00  02 06 20 cc 0d 1c 0c 11  20 72 65 64 72 61 77 72  |.. ..... redrawr|
00004a10  65 71 25 3d b9 0d 1c 16  06 20 cd 0d 1c 20 06 20  |eq%=..... ... . |
00004a20  e1 0d 1c 2a 04 0d 1c 34  16 20 dd f2 75 70 64 61  |...*...4. ..upda|
00004a30  74 65 76 6f 69 63 65 6c  69 73 74 0d 1c 3e 0d 20  |tevoicelist..>. |
00004a40  ea 20 76 6f 69 63 65 24  0d 1c 48 1e 20 f7 20 8d  |. voice$..H. . .|
00004a50  44 5e 46 3a 76 6c 73 74  61 72 74 25 3d 76 6c 69  |D^F:vlstart%=vli|
00004a60  73 74 62 6c 6b 25 0d 1c  52 1b 20 76 6c 6d 65 6e  |stblk%..R. vlmen|
00004a70  75 25 3d a4 6d 65 6e 75  74 72 65 65 28 31 2c b9  |u%=.menutree(1,.|
00004a80  29 0d 1c 5c 27 20 e7 20  63 6f 75 6e 74 25 3d 30  |)..\' . count%=0|
00004a90  20 76 6c 73 65 6c 25 3d  30 3a 63 75 72 76 6f 69  | vlsel%=0:curvoi|
00004aa0  63 65 24 3d 22 22 3a e1  0d 1c 66 1a 20 76 6c 73  |ce$="":...f. vls|
00004ab0  65 6c 25 3d 2d 31 3a f5  3a 76 6c 73 65 6c 25 2b  |el%=-1:.:vlsel%+|
00004ac0  3d 31 0d 1c 70 33 20 c8  99 20 22 53 6f 75 6e 64  |=1..p3 .. "Sound|
00004ad0  5f 49 6e 73 74 61 6c 6c  56 6f 69 63 65 22 2c 30  |_InstallVoice",0|
00004ae0  2c 6d 76 25 28 76 6c 73  65 6c 25 29 20 b8 20 76  |,mv%(vlsel%) . v|
00004af0  6f 69 63 65 24 0d 1c 7a  34 20 fd 20 76 6f 69 63  |oice$..z4 . voic|
00004b00  65 24 3d 63 75 72 76 6f  69 63 65 24 20 84 20 6d  |e$=curvoice$ . m|
00004b10  76 25 28 76 6c 73 65 6c  25 29 3d 30 20 84 20 76  |v%(vlsel%)=0 . v|
00004b20  6c 73 65 6c 25 3e 3d 33  31 0d 1c 84 2e 20 e7 20  |lsel%>=31.... . |
00004b30  76 6c 73 65 6c 25 3e 28  63 6f 75 6e 74 25 2d 31  |vlsel%>(count%-1|
00004b40  29 20 76 6c 73 65 6c 25  3d 30 3a 63 75 72 76 6f  |) vlsel%=0:curvo|
00004b50  69 63 65 24 3d 22 22 0d  1c 8e 45 20 76 6c 6d 65  |ice$=""...E vlme|
00004b60  6e 75 25 21 28 32 38 2b  28 76 6c 73 65 6c 25 2a  |nu%!(28+(vlsel%*|
00004b70  32 34 29 29 3d a4 53 70  65 63 49 74 65 6d 28 b9  |24))=.SpecItem(.|
00004b80  2c 76 6c 6d 65 6e 75 25  21 28 32 38 2b 28 76 6c  |,vlmenu%!(28+(vl|
00004b90  73 65 6c 25 2a 32 34 29  29 2c 30 29 0d 1c 98 10  |sel%*24)),0)....|
00004ba0  20 73 75 6e 65 65 64 65  64 25 3d b9 0d 1c a2 06  | suneeded%=.....|
00004bb0  20 e1 0d 1c ac 04 0d 1c  b6 17 20 dd f2 67 65 74  | ......... ..get|
00004bc0  5f 70 6f 69 6e 74 65 72  5f 69 6e 66 6f 0d 1c c0  |_pointer_info...|
00004bd0  23 20 c8 99 20 22 57 69  6d 70 5f 47 65 74 50 6f  |# .. "Wimp_GetPo|
00004be0  69 6e 74 65 72 49 6e 66  6f 22 2c 2c 62 6c 6b 25  |interInfo",,blk%|
00004bf0  0d 1c ca 4b 20 6d 6f 75  73 65 78 25 3d 21 62 6c  |...K mousex%=!bl|
00004c00  6b 25 3a 6d 6f 75 73 65  79 25 3d 62 6c 6b 25 21  |k%:mousey%=blk%!|
00004c10  34 3a 6d 62 75 74 25 3d  62 6c 6b 25 21 38 3a 6d  |4:mbut%=blk%!8:m|
00004c20  68 61 6e 25 3d 62 6c 6b  25 21 31 32 3a 6d 69 63  |han%=blk%!12:mic|
00004c30  6f 6e 25 3d 62 6c 6b 25  21 31 36 0d 1c d4 06 20  |on%=blk%!16.... |
00004c40  e1 0d 1c de 04 0d 1c e8  1c 20 dd f2 72 65 70 6f  |......... ..repo|
00004c50  72 74 5f 65 72 72 28 72  24 2c 65 25 2c 65 6c 25  |rt_err(r$,e%,el%|
00004c60  29 0d 1c f2 12 20 ea 20  66 6c 61 67 25 2c 74 65  |).... . flag%,te|
00004c70  78 74 24 0d 1c fc 38 20  e7 20 73 63 72 61 70 25  |xt$...8 . scrap%|
00004c80  3c 3e 30 20 c8 99 20 22  58 4f 53 5f 46 69 6c 65  |<>0 .. "XOS_File|
00004c90  22 2c 36 2c 22 3c 57 69  6d 70 24 53 63 72 61 70  |",6,"<Wimp$Scrap|
00004ca0  3e 22 3a 73 63 72 61 70  25 3d 30 0d 1d 06 0d 20  |>":scrap%=0.... |
00004cb0  21 62 6c 6b 25 3d 65 25  0d 1d 10 06 20 3a 0d 1d  |!blk%=e%.... :..|
00004cc0  1a 1e 20 24 28 62 6c 6b  25 2b 34 29 3d 72 24 2b  |.. $(blk%+4)=r$+|
00004cd0  bd 30 3a 66 69 6e 69 73  68 25 3d a3 0d 1d 24 1e  |.0:finish%=...$.|
00004ce0  20 74 65 78 74 24 3d 22  4b 65 79 62 6f 61 72 64  | text$="Keyboard|
00004cf0  22 3a 66 6c 61 67 25 3d  25 31 0d 1d 2e 06 20 3a  |":flag%=%1.... :|
00004d00  0d 1d 38 18 20 e7 20 65  25 3e 3d 30 20 80 20 65  |..8. . e%>=0 . e|
00004d10  25 3c 3d 31 32 37 20 8c  0d 1d 42 4f 20 24 28 62  |%<=127 ...BO $(b|
00004d20  6c 6b 25 2b 34 29 3d 22  46 61 74 61 6c 20 69 6e  |lk%+4)="Fatal in|
00004d30  74 65 72 6e 61 6c 20 65  72 72 6f 72 3a 20 22 2b  |ternal error: "+|
00004d40  72 24 2b 22 20 28 69 6e  74 65 72 6e 61 6c 20 65  |r$+" (internal e|
00004d50  72 72 6f 72 20 63 6f 64  65 20 22 2b c3 65 25 2b  |rror code "+.e%+|
00004d60  22 29 20 22 2b bd 30 0d  1d 4c 28 20 74 65 78 74  |") "+.0..L( text|
00004d70  24 3d 22 4b 65 79 62 6f  61 72 64 22 3a 66 6c 61  |$="Keyboard":fla|
00004d80  67 25 3d 25 31 3a 66 69  6e 69 73 68 25 3d b9 0d  |g%=%1:finish%=..|
00004d90  1d 56 06 20 cd 0d 1d 60  06 20 3a 0d 1d 6a 0f 20  |.V. ...`. :..j. |
00004da0  e7 20 65 25 3d 31 30 30  20 8c 0d 1d 74 1e 20 24  |. e%=100 ...t. $|
00004db0  28 62 6c 6b 25 2b 34 29  3d 72 24 2b bd 30 3a 66  |(blk%+4)=r$+.0:f|
00004dc0  69 6e 69 73 68 25 3d a3  0d 1d 7e 2f 20 66 6c 61  |inish%=...~/ fla|
00004dd0  67 25 3d 25 31 30 30 30  31 3a 74 65 78 74 24 3d  |g%=%10001:text$=|
00004de0  22 4d 65 73 73 61 67 65  20 66 72 6f 6d 20 4b 65  |"Message from Ke|
00004df0  79 62 6f 61 72 64 22 0d  1d 88 06 20 cd 0d 1d 92  |yboard".... ....|
00004e00  06 20 3a 0d 1d 9c 20 20  c8 99 20 22 4f 53 5f 42  |. :...  .. "OS_B|
00004e10  79 74 65 22 2c 26 43 39  2c 6b 65 79 73 74 61 74  |yte",&C9,keystat|
00004e20  25 2c 30 0d 1d a6 2b 20  c8 99 20 22 57 69 6d 70  |%,0...+ .. "Wimp|
00004e30  5f 52 65 70 6f 72 74 45  72 72 6f 72 22 2c 62 6c  |_ReportError",bl|
00004e40  6b 25 2c 66 6c 61 67 25  2c 74 65 78 74 24 0d 1d  |k%,flag%,text$..|
00004e50  b0 06 20 e1 0d 1d ba 04  0d 1d c4 1b 20 dd a4 53  |.. ......... ..S|
00004e60  70 65 63 49 74 65 6d 28  74 25 2c 77 25 2c 62 69  |pecItem(t%,w%,bi|
00004e70  74 25 29 0d 1d ce 0b 20  e7 20 74 25 20 8c 0d 1d  |t%).... . t% ...|
00004e80  d8 14 20 3d 77 25 20 84  20 28 31 3c 3c 62 69 74  |.. =w% . (1<<bit|
00004e90  25 29 0d 1d e2 06 20 cc  0d 1d ec 16 20 3d 77 25  |%).... ..... =w%|
00004ea0  20 80 20 ac 20 28 31 3c  3c 62 69 74 25 29 0d 1d  | . . (1<<bit%)..|
00004eb0  f6 06 20 cd 0d 1e 00 04  0d 1e 0a 1b 20 dd a4 63  |.. ......... ..c|
00004ec0  72 65 61 74 65 5f 77 69  6e 64 6f 77 28 61 24 2c  |reate_window(a$,|
00004ed0  63 25 29 0d 1e 14 0e 20  ea 20 68 61 6e 25 2c 61  |c%).... . han%,a|
00004ee0  25 0d 1e 1e 52 20 c8 99  20 22 57 69 6d 70 5f 4c  |%...R .. "Wimp_L|
00004ef0  6f 61 64 54 65 6d 70 6c  61 74 65 22 2c 2c 62 6c  |oadTemplate",,bl|
00004f00  6b 25 2c 62 75 66 73 74  61 72 74 25 2c 62 75 66  |k%,bufstart%,buf|
00004f10  25 2b 26 31 30 30 30 2c  2d 31 2c 61 24 2c 30 20  |%+&1000,-1,a$,0 |
00004f20  b8 20 2c 2c 62 75 66 73  74 61 72 74 25 2c 2c 2c  |. ,,bufstart%,,,|
00004f30  2c 61 25 0d 1e 28 2d 20  e7 20 61 25 3d 30 20 85  |,a%..(- . a%=0 .|
00004f40  20 31 2c 22 54 65 6d 70  6c 61 74 65 20 27 22 2b  | 1,"Template '"+|
00004f50  61 24 2b 22 27 20 6e 6f  74 20 66 6f 75 6e 64 22  |a$+"' not found"|
00004f60  0d 1e 32 1a 20 e7 20 63  25 20 62 6c 6b 25 21 36  |..2. . c% blk%!6|
00004f70  34 3d 73 70 72 69 74 65  73 25 0d 1e 3c 28 20 c8  |4=sprites%..<( .|
00004f80  99 20 22 57 69 6d 70 5f  43 72 65 61 74 65 57 69  |. "Wimp_CreateWi|
00004f90  6e 64 6f 77 22 2c 2c 62  6c 6b 25 20 b8 20 68 61  |ndow",,blk% . ha|
00004fa0  6e 25 0d 1e 46 0a 20 3d  68 61 6e 25 0d 1e 50 04  |n%..F. =han%..P.|
00004fb0  0d 1e 5a 12 20 dd f2 6f  70 65 6e 5f 77 69 6e 64  |..Z. ..open_wind|
00004fc0  6f 77 0d 1e 64 17 20 e7  20 21 62 6c 6b 25 3d 73  |ow..d. . !blk%=s|
00004fd0  61 6d 70 6c 65 73 25 20  8c 0d 1e 6e 1e 20 ea 20  |amples% ...n. . |
00004fe0  6d 78 30 25 2c 6d 78 31  25 2c 6d 79 30 25 2c 6d  |mx0%,mx1%,my0%,m|
00004ff0  79 31 25 2c 6d 62 25 0d  1e 78 42 20 6d 78 30 25  |y1%,mb%..xB mx0%|
00005000  3d 62 6c 6b 25 21 34 3a  6d 78 31 25 3d 62 6c 6b  |=blk%!4:mx1%=blk|
00005010  25 21 31 32 3a 6d 79 30  25 3d 62 6c 6b 25 21 38  |%!12:my0%=blk%!8|
00005020  3a 6d 79 31 25 3d 62 6c  6b 25 21 31 36 3a 6d 62  |:my1%=blk%!16:mb|
00005030  25 3d 62 6c 6b 25 21 32  38 0d 1e 82 21 20 f2 73  |%=blk%!28...! .s|
00005040  75 62 77 69 6e 64 6f 77  28 73 61 6d 70 6c 69 73  |ubwindow(samplis|
00005050  74 25 2c 39 30 2c 6d 62  25 29 0d 1e 8c 57 20 21  |t%,90,mb%)...W !|
00005060  62 6c 6b 25 3d 73 61 6d  70 6c 65 73 25 3a 62 6c  |blk%=samples%:bl|
00005070  6b 25 21 34 3d 6d 78 30  25 3a 62 6c 6b 25 21 31  |k%!4=mx0%:blk%!1|
00005080  32 3d 6d 78 31 25 3a 62  6c 6b 25 21 38 3d 6d 79  |2=mx1%:blk%!8=my|
00005090  30 25 3a 62 6c 6b 25 21  31 36 3d 6d 79 31 25 3a  |0%:blk%!16=my1%:|
000050a0  62 6c 6b 25 21 32 38 3d  73 61 6d 70 6c 69 73 74  |blk%!28=samplist|
000050b0  25 0d 1e 96 06 20 cd 0d  1e a0 1f 20 c8 99 20 22  |%.... ..... .. "|
000050c0  57 69 6d 70 5f 4f 70 65  6e 57 69 6e 64 6f 77 22  |Wimp_OpenWindow"|
000050d0  2c 2c 62 6c 6b 25 0d 1e  aa 06 20 e1 0d 1e b4 04  |,,blk%.... .....|
000050e0  0d 1e be 1d 20 dd f2 67  65 74 5f 77 69 6e 64 6f  |.... ..get_windo|
000050f0  77 5f 73 74 61 74 65 28  68 61 6e 25 29 0d 1e c8  |w_state(han%)...|
00005100  2e 20 21 62 6c 6b 25 3d  68 61 6e 25 3a c8 99 20  |. !blk%=han%:.. |
00005110  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 53  |"Wimp_GetWindowS|
00005120  74 61 74 65 22 2c 2c 62  6c 6b 25 0d 1e d2 3e 20  |tate",,blk%...> |
00005130  78 30 25 3d 62 6c 6b 25  21 34 3a 79 30 25 3d 62  |x0%=blk%!4:y0%=b|
00005140  6c 6b 25 21 38 3a 78 31  25 3d 62 6c 6b 25 21 31  |lk%!8:x1%=blk%!1|
00005150  32 3a 79 31 25 3d 62 6c  6b 25 21 31 36 3a 77 66  |2:y1%=blk%!16:wf|
00005160  25 3d 62 6c 6b 25 21 32  38 0d 1e dc 06 20 e1 0d  |%=blk%!28.... ..|
00005170  1e e6 04 0d 1e f0 1c 20  dd f2 67 65 74 5f 77 69  |....... ..get_wi|
00005180  6e 64 6f 77 5f 69 6e 66  6f 28 68 61 6e 25 29 0d  |ndow_info(han%).|
00005190  1e fa 2d 20 21 62 6c 6b  25 3d 68 61 6e 25 3a c8  |..- !blk%=han%:.|
000051a0  99 20 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |. "Wimp_GetWindo|
000051b0  77 49 6e 66 6f 22 2c 2c  62 6c 6b 25 0d 1f 04 32  |wInfo",,blk%...2|
000051c0  20 78 30 25 3d 62 6c 6b  25 21 34 3a 79 30 25 3d  | x0%=blk%!4:y0%=|
000051d0  62 6c 6b 25 21 38 3a 78  31 25 3d 62 6c 6b 25 21  |blk%!8:x1%=blk%!|
000051e0  31 32 3a 79 31 25 3d 62  6c 6b 25 21 31 36 0d 1f  |12:y1%=blk%!16..|
000051f0  0e 06 20 e1 0d 1f 18 04  0d 1f 22 1f 20 dd f2 67  |.. .......". ..g|
00005200  65 74 5f 77 69 6e 64 6f  77 5f 6f 75 74 6c 69 6e  |et_window_outlin|
00005210  65 28 68 61 6e 25 29 0d  1f 2c 30 20 21 62 6c 6b  |e(han%)..,0 !blk|
00005220  25 3d 68 61 6e 25 3a c8  99 20 22 57 69 6d 70 5f  |%=han%:.. "Wimp_|
00005230  47 65 74 57 69 6e 64 6f  77 4f 75 74 6c 69 6e 65  |GetWindowOutline|
00005240  22 2c 2c 62 6c 6b 25 0d  1f 36 32 20 78 30 25 3d  |",,blk%..62 x0%=|
00005250  62 6c 6b 25 21 34 3a 79  30 25 3d 62 6c 6b 25 21  |blk%!4:y0%=blk%!|
00005260  38 3a 78 31 25 3d 62 6c  6b 25 21 31 32 3a 79 31  |8:x1%=blk%!12:y1|
00005270  25 3d 62 6c 6b 25 21 31  36 0d 1f 40 06 20 e1 0d  |%=blk%!16..@. ..|
00005280  1f 4a 04 0d 1f 54 21 20  dd f2 67 65 74 5f 69 63  |.J...T! ..get_ic|
00005290  6f 6e 5f 73 74 61 74 65  28 68 61 6e 25 2c 69 63  |on_state(han%,ic|
000052a0  6f 6e 25 29 0d 1f 5e 39  20 21 62 6c 6b 25 3d 68  |on%)..^9 !blk%=h|
000052b0  61 6e 25 3a 62 6c 6b 25  21 34 3d 69 63 6f 6e 25  |an%:blk%!4=icon%|
000052c0  3a c8 99 20 22 57 69 6d  70 5f 47 65 74 49 63 6f  |:.. "Wimp_GetIco|
000052d0  6e 53 74 61 74 65 22 2c  2c 62 6c 6b 25 0d 1f 68  |nState",,blk%..h|
000052e0  06 20 e1 0d 1f 72 04 0d  1f 7c 1f 20 dd f2 73 75  |. ...r...|. ..su|
000052f0  62 77 69 6e 64 6f 77 28  68 61 6e 25 2c 79 25 2c  |bwindow(han%,y%,|
00005300  62 68 61 6e 25 29 0d 1f  86 0c 20 ea 20 77 25 2c  |bhan%).... . w%,|
00005310  68 25 0d 1f 90 1c 20 f2  67 65 74 5f 77 69 6e 64  |h%.... .get_wind|
00005320  6f 77 5f 73 74 61 74 65  28 68 61 6e 25 29 0d 1f  |ow_state(han%)..|
00005330  9a 1a 20 77 25 3d 78 31  25 2d 78 30 25 3a 68 25  |.. w%=x1%-x0%:h%|
00005340  3d 79 31 25 2d 79 30 25  0d 1f a4 35 20 21 62 6c  |=y1%-y0%...5 !bl|
00005350  6b 25 3d 68 61 6e 25 3a  62 6c 6b 25 21 34 3d 6d  |k%=han%:blk%!4=m|
00005360  78 30 25 2b 28 28 28 6d  78 31 25 2d 6d 78 30 25  |x0%+(((mx1%-mx0%|
00005370  29 2d 28 77 25 2b 34 30  29 29 2f 32 29 0d 1f ae  |)-(w%+40))/2)...|
00005380  45 20 62 6c 6b 25 21 38  3d 6d 79 30 25 2b 79 25  |E blk%!8=my0%+y%|
00005390  3a 62 6c 6b 25 21 31 32  3d 62 6c 6b 25 21 34 2b  |:blk%!12=blk%!4+|
000053a0  77 25 3a 62 6c 6b 25 21  31 36 3d 62 6c 6b 25 21  |w%:blk%!16=blk%!|
000053b0  38 2b 68 25 3a 62 6c 6b  25 21 32 38 3d 62 68 61  |8+h%:blk%!28=bha|
000053c0  6e 25 0d 1f b8 11 20 f2  6f 70 65 6e 5f 77 69 6e  |n%.... .open_win|
000053d0  64 6f 77 0d 1f c2 06 20  cd 0d 1f cc 06 20 e1 0d  |dow.... ..... ..|
000053e0  1f d6 04 0d 1f e0 0e 20  dd a4 69 63 6f 6e 62 61  |....... ..iconba|
000053f0  72 0d 1f ea 0f 20 ea 20  69 63 6f 6e 68 61 6e 25  |r.... . iconhan%|
00005400  0d 1f f4 1b 20 24 62 75  66 73 74 61 72 74 25 3d  |.... $bufstart%=|
00005410  22 21 6b 65 79 62 6f 61  72 64 22 0d 1f fe 35 20  |"!keyboard"...5 |
00005420  21 62 6c 6b 25 3d 2d 31  3a 62 6c 6b 25 21 34 3d  |!blk%=-1:blk%!4=|
00005430  30 3a 62 6c 6b 25 21 38  3d 30 3a 62 6c 6b 25 21  |0:blk%!8=0:blk%!|
00005440  31 32 3d 36 38 3a 62 6c  6b 25 21 31 36 3d 36 38  |12=68:blk%!16=68|
00005450  0d 20 08 42 20 62 6c 6b  25 21 32 30 3d 25 31 31  |. .B blk%!20=%11|
00005460  30 30 30 31 30 30 30 30  30 30 31 30 3a 62 6c 6b  |000100000010:blk|
00005470  25 21 32 34 3d 62 75 66  73 74 61 72 74 25 3a 62  |%!24=bufstart%:b|
00005480  6c 6b 25 21 32 38 3d 31  3a 62 6c 6b 25 21 33 32  |lk%!28=1:blk%!32|
00005490  3d 39 0d 20 12 12 20 62  75 66 73 74 61 72 74 25  |=9. .. bufstart%|
000054a0  2b 3d 31 30 0d 20 1c 2a  20 c8 99 20 22 57 69 6d  |+=10. .* .. "Wim|
000054b0  70 5f 43 72 65 61 74 65  49 63 6f 6e 22 2c 2c 62  |p_CreateIcon",,b|
000054c0  6c 6b 25 20 b8 20 69 63  6f 6e 68 61 6e 25 0d 20  |lk% . iconhan%. |
000054d0  26 0e 20 3d 69 63 6f 6e  68 61 6e 25 0d 20 30 04  |&. =iconhan%. 0.|
000054e0  0d 20 3a 12 20 dd f2 64  65 63 6f 64 65 5f 64 72  |. :. ..decode_dr|
000054f0  61 67 0d 20 44 0e 20 ea  20 65 25 3a 65 25 3d a3  |ag. D. . e%:e%=.|
00005500  0d 20 4e 22 20 e7 20 64  72 61 67 62 61 72 25 3d  |. N" . dragbar%=|
00005510  30 20 80 20 6b 65 79 64  6f 77 6e 25 3d 26 46 46  |0 . keydown%=&FF|
00005520  20 8c 0d 20 58 2e 20 ea  20 66 24 3a 66 24 3d a4  | .. X. . f$:f$=.|
00005530  6c 65 61 66 6e 61 6d 65  28 24 a4 69 63 6f 6e 61  |leafname($.icona|
00005540  64 64 72 28 73 61 76 65  62 6f 78 25 2c 32 29 29  |ddr(savebox%,2))|
00005550  0d 20 62 16 20 f2 67 65  74 5f 70 6f 69 6e 74 65  |. b. .get_pointe|
00005560  72 5f 69 6e 66 6f 0d 20  6c 0f 20 c8 8e 20 6d 68  |r_info. l. .. mh|
00005570  61 6e 25 20 ca 0d 20 76  33 20 c9 20 73 61 76 65  |an% .. v3 . save|
00005580  62 6f 78 25 2c 6d 61 69  6e 25 2c 63 6f 6e 25 2c  |box%,main%,con%,|
00005590  73 61 6d 70 6c 69 73 74  25 2c 73 61 6d 70 6c 65  |samplist%,sample|
000055a0  73 25 3a 20 65 25 3d b9  0d 20 80 06 20 cb 0d 20  |s%: e%=.. .. .. |
000055b0  8a 20 20 e7 20 6d 69 63  6f 6e 25 3d 6b 69 63 6f  |.  . micon%=kico|
000055c0  6e 62 61 72 25 20 84 20  65 25 3d b9 20 e1 0d 20  |nbar% . e%=. .. |
000055d0  94 3e 20 21 62 6c 6b 25  3d 35 36 3a 62 6c 6b 25  |.> !blk%=56:blk%|
000055e0  21 31 32 3d 30 3a 62 6c  6b 25 21 31 36 3d 31 3a  |!12=0:blk%!16=1:|
000055f0  62 6c 6b 25 21 32 30 3d  6d 68 61 6e 25 3a 62 6c  |blk%!20=mhan%:bl|
00005600  6b 25 21 32 34 3d 6d 69  63 6f 6e 25 0d 20 9e 3e  |k%!24=micon%. .>|
00005610  20 62 6c 6b 25 21 32 38  3d 6d 6f 75 73 65 78 25  | blk%!28=mousex%|
00005620  3a 62 6c 6b 25 21 33 32  3d 6d 6f 75 73 65 79 25  |:blk%!32=mousey%|
00005630  3a 62 6c 6b 25 21 33 36  3d 31 30 32 34 3a 62 6c  |:blk%!36=1024:bl|
00005640  6b 25 21 34 30 3d 26 31  30 43 0d 20 a8 15 20 24  |k%!40=&10C. .. $|
00005650  28 62 6c 6b 25 2b 34 34  29 3d 66 24 2b bd 30 0d  |(blk%+44)=f$+.0.|
00005660  20 b2 2f 20 c8 99 20 22  57 69 6d 70 5f 53 65 6e  | ./ .. "Wimp_Sen|
00005670  64 4d 65 73 73 61 67 65  22 2c 31 37 2c 62 6c 6b  |dMessage",17,blk|
00005680  25 2c 6d 68 61 6e 25 2c  6d 69 63 6f 6e 25 0d 20  |%,mhan%,micon%. |
00005690  bc 14 20 73 61 76 65 72  65 66 25 3d 62 6c 6b 25  |.. saveref%=blk%|
000056a0  21 38 0d 20 c6 06 20 cd  0d 20 d0 15 20 e7 20 6b  |!8. .. .. .. . k|
000056b0  65 79 64 6f 77 6e 25 3c  26 46 46 20 8c 0d 20 da  |eydown%<&FF .. .|
000056c0  2a 20 f2 75 70 64 61 74  65 5f 69 63 6f 6e 28 6d  |* .update_icon(m|
000056d0  61 69 6e 25 2c 6b 65 79  64 6f 77 6e 25 2c 25 31  |ain%,keydown%,%1|
000056e0  3c 3c 32 31 2c 30 29 0d  20 e4 11 20 6b 65 79 64  |<<21,0). .. keyd|
000056f0  6f 77 6e 25 3d 26 46 46  0d 20 ee 06 20 cd 0d 20  |own%=&FF. .. .. |
00005700  f8 4b 20 e7 20 64 72 61  67 62 61 72 25 3c 3e 30  |.K . dragbar%<>0|
00005710  20 76 6f 6c 75 6d 65 25  3d 2d 28 28 28 64 72 61  | volume%=-(((dra|
00005720  67 62 61 72 25 2d 31 32  29 81 20 32 33 29 2d 32  |gbar%-12). 23)-2|
00005730  29 3a 64 72 61 67 62 61  72 25 3d 30 3a 6d 61 73  |):dragbar%=0:mas|
00005740  6b 25 3d 26 38 30 30 33  33 0d 21 02 06 20 e1 0d  |k%=&80033.!.. ..|
00005750  21 0c 04 0d 21 16 1c 20  dd f2 70 6f 70 75 70 5f  |!...!.. ..popup_|
00005760  77 69 6e 64 6f 77 28 68  61 6e 25 2c 61 25 29 0d  |window(han%,a%).|
00005770  21 20 1f 20 ea 20 77 77  69 64 74 68 25 2c 77 68  |! . . wwidth%,wh|
00005780  65 69 67 68 74 25 2c 63  78 25 2c 63 79 25 0d 21  |eight%,cx%,cy%.!|
00005790  2a 1b 20 f2 67 65 74 5f  77 69 6e 64 6f 77 5f 69  |*. .get_window_i|
000057a0  6e 66 6f 28 68 61 6e 25  29 0d 21 34 16 20 63 78  |nfo(han%).!4. cx|
000057b0  25 3d 28 73 77 69 64 74  68 25 20 81 20 32 29 0d  |%=(swidth% . 2).|
000057c0  21 3e 17 20 63 79 25 3d  28 73 68 65 69 67 68 74  |!>. cy%=(sheight|
000057d0  25 20 81 20 32 29 0d 21  48 0c 20 c8 8e 20 61 25  |% . 2).!H. .. a%|
000057e0  20 ca 0d 21 52 08 20 c9  20 31 0d 21 5c 41 20 77  | ..!R. . 1.!\A w|
000057f0  77 69 64 74 68 25 3d 28  62 6c 6b 25 21 35 32 2d  |width%=(blk%!52-|
00005800  62 6c 6b 25 21 34 34 29  20 81 20 32 3a 77 68 65  |blk%!44) . 2:whe|
00005810  69 67 68 74 25 3d 28 62  6c 6b 25 21 35 36 2d 62  |ight%=(blk%!56-b|
00005820  6c 6b 25 21 34 38 29 20  81 20 32 0d 21 66 2a 20  |lk%!48) . 2.!f* |
00005830  78 30 25 3d 63 78 25 2d  77 77 69 64 74 68 25 2d  |x0%=cx%-wwidth%-|
00005840  32 30 3a 78 31 25 3d 63  78 25 2b 77 77 69 64 74  |20:x1%=cx%+wwidt|
00005850  68 25 2d 32 30 0d 21 70  26 20 79 30 25 3d 63 79  |h%-20.!p& y0%=cy|
00005860  25 2d 77 68 65 69 67 68  74 25 3a 79 31 25 3d 63  |%-wheight%:y1%=c|
00005870  79 25 2b 77 68 65 69 67  68 74 25 0d 21 7a 08 20  |y%+wheight%.!z. |
00005880  c9 20 32 0d 21 84 31 20  77 77 69 64 74 68 25 3d  |. 2.!.1 wwidth%=|
00005890  28 78 31 25 2d 78 30 25  29 20 81 20 32 3a 77 68  |(x1%-x0%) . 2:wh|
000058a0  65 69 67 68 74 25 3d 28  79 31 25 2d 79 30 25 29  |eight%=(y1%-y0%)|
000058b0  20 81 20 32 0d 21 8e 46  20 78 30 25 3d 63 78 25  | . 2.!.F x0%=cx%|
000058c0  2d 77 77 69 64 74 68 25  3a 78 31 25 3d 63 78 25  |-wwidth%:x1%=cx%|
000058d0  2b 77 77 69 64 74 68 25  3a 79 30 25 3d 63 79 25  |+wwidth%:y0%=cy%|
000058e0  2d 77 68 65 69 67 68 74  25 3a 79 31 25 3d 63 79  |-wheight%:y1%=cy|
000058f0  25 2b 77 68 65 69 67 68  74 25 0d 21 98 06 20 cb  |%+wheight%.!.. .|
00005900  0d 21 a2 48 20 21 62 6c  6b 25 3d 68 61 6e 25 3a  |.!.H !blk%=han%:|
00005910  62 6c 6b 25 21 32 38 3d  2d 31 3a 62 6c 6b 25 21  |blk%!28=-1:blk%!|
00005920  34 3d 78 30 25 3a 62 6c  6b 25 21 38 3d 79 30 25  |4=x0%:blk%!8=y0%|
00005930  3a 62 6c 6b 25 21 31 32  3d 78 31 25 3a 62 6c 6b  |:blk%!12=x1%:blk|
00005940  25 21 31 36 3d 79 31 25  0d 21 ac 11 20 f2 6f 70  |%!16=y1%.!.. .op|
00005950  65 6e 5f 77 69 6e 64 6f  77 0d 21 b6 06 20 e1 0d  |en_window.!.. ..|
00005960  21 c0 04 0d 21 ca 12 20  dd f2 67 65 74 6d 6f 64  |!...!.. ..getmod|
00005970  65 69 6e 66 6f 0d 21 d4  0e 20 ea 20 48 69 25 2c  |einfo.!.. . Hi%,|
00005980  56 69 25 0d 21 de 43 20  6d 62 6c 6b 25 21 30 3d  |Vi%.!.C mblk%!0=|
00005990  30 3a 6d 62 6c 6b 25 21  34 3d 31 3a 6d 62 6c 6b  |0:mblk%!4=1:mblk|
000059a0  25 21 38 3d 32 3a 6d 62  6c 6b 25 21 31 32 3d 33  |%!8=2:mblk%!12=3|
000059b0  3a 6d 62 6c 6b 25 21 31  36 3d 34 3a 6d 62 6c 6b  |:mblk%!16=4:mblk|
000059c0  25 21 32 30 3d 35 0d 21  e8 28 20 6d 62 6c 6b 25  |%!20=5.!.( mblk%|
000059d0  21 32 34 3d 31 31 3a 6d  62 6c 6b 25 21 32 38 3d  |!24=11:mblk%!28=|
000059e0  31 32 3a 6d 62 6c 6b 25  21 33 32 3d 2d 31 0d 21  |12:mblk%!32=-1.!|
000059f0  f2 28 20 c8 99 20 22 4f  53 5f 52 65 61 64 56 64  |.( .. "OS_ReadVd|
00005a00  75 56 61 72 69 61 62 6c  65 73 22 2c 6d 62 6c 6b  |uVariables",mblk|
00005a10  25 2c 62 6c 6b 25 0d 21  fc 26 20 48 69 25 3d 31  |%,blk%.!.& Hi%=1|
00005a20  3c 3c 28 62 6c 6b 25 21  31 36 29 3a 56 69 25 3d  |<<(blk%!16):Vi%=|
00005a30  31 3c 3c 28 62 6c 6b 25  21 32 30 29 0d 22 06 3d  |1<<(blk%!20).".=|
00005a40  20 73 77 69 64 74 68 25  3d 48 69 25 2a 28 28 62  | swidth%=Hi%*((b|
00005a50  6c 6b 25 21 32 34 29 2b  31 29 2d 32 3a 73 68 65  |lk%!24)+1)-2:she|
00005a60  69 67 68 74 25 3d 56 69  25 2a 28 28 62 6c 6b 25  |ight%=Vi%*((blk%|
00005a70  21 32 38 29 2b 31 29 2d  34 0d 22 10 06 20 e1 0d  |!28)+1)-4.".. ..|
00005a80  22 1a 04 0d 22 24 12 20  dd f2 73 65 74 73 6f 75  |"..."$. ..setsou|
00005a90  6e 64 73 79 73 0d 22 2e  09 20 ea 20 69 25 0d 22  |ndsys.".. . i%."|
00005aa0  38 0d 20 f2 73 65 74 76  61 72 73 0d 22 42 32 20  |8. .setvars."B2 |
00005ab0  c8 99 20 22 53 6f 75 6e  64 5f 41 74 74 61 63 68  |.. "Sound_Attach|
00005ac0  56 6f 69 63 65 22 2c 63  68 61 6e 25 2c 6d 76 25  |Voice",chan%,mv%|
00005ad0  28 76 6c 73 65 6c 25 29  20 b8 20 69 25 0d 22 4c  |(vlsel%) . i%."L|
00005ae0  26 20 e7 20 69 25 3d 30  20 85 20 31 2c 22 49 6c  |& . i%=0 . 1,"Il|
00005af0  6c 65 67 61 6c 20 76 6f  69 63 65 20 6e 75 6d 62  |legal voice numb|
00005b00  65 72 22 0d 22 56 17 20  e7 20 73 61 6c 6f 6e 65  |er"."V. . salone|
00005b10  25 20 c8 a0 20 63 68 61  6e 25 0d 22 60 06 20 e1  |% .. chan%."`. .|
00005b20  0d 22 6a 04 0d 22 74 0e  20 dd f2 73 65 74 76 61  |."j.."t. ..setva|
00005b30  72 73 0d 22 7e 21 20 63  68 61 6e 25 3d bb 28 24  |rs."~! chan%=.($|
00005b40  a4 69 63 6f 6e 61 64 64  72 28 63 6f 6e 25 2c 33  |.iconaddr(con%,3|
00005b50  32 29 29 0d 22 88 20 20  6f 63 74 25 3d bb 28 24  |2)).".  oct%=.($|
00005b60  a4 69 63 6f 6e 61 64 64  72 28 63 6f 6e 25 2c 32  |.iconaddr(con%,2|
00005b70  33 29 29 0d 22 92 22 20  74 72 61 6e 73 25 3d bb  |3))."." trans%=.|
00005b80  28 24 a4 69 63 6f 6e 61  64 64 72 28 63 6f 6e 25  |($.iconaddr(con%|
00005b90  2c 32 36 29 29 0d 22 9c  21 20 64 75 72 61 25 3d  |,26)).".! dura%=|
00005ba0  bb 28 24 a4 69 63 6f 6e  61 64 64 72 28 63 6f 6e  |.($.iconaddr(con|
00005bb0  25 2c 33 31 29 29 0d 22  a6 6c 20 e7 20 6f 63 74  |%,31)).".l . oct|
00005bc0  25 3e 34 20 84 20 6f 63  74 25 3c 2d 34 20 f2 72  |%>4 . oct%<-4 .r|
00005bd0  65 70 6f 72 74 5f 65 72  72 28 22 56 61 6c 75 65  |eport_err("Value|
00005be0  20 66 6f 72 20 6f 63 74  61 76 65 20 6f 75 74 20  | for octave out |
00005bf0  6f 66 20 72 61 6e 67 65  22 2c 31 30 30 2c 9e 29  |of range",100,.)|
00005c00  3a 6f 63 74 25 3d 30 3a  f2 73 65 74 5f 69 63 6f  |:oct%=0:.set_ico|
00005c10  6e 28 63 6f 6e 25 2c 32  33 2c c3 28 6f 63 74 25  |n(con%,23,.(oct%|
00005c20  29 29 0d 22 b0 6a 20 e7  20 64 75 72 61 25 3e 32  |)).".j . dura%>2|
00005c30  35 35 20 f2 72 65 70 6f  72 74 5f 65 72 72 28 22  |55 .report_err("|
00005c40  56 61 6c 75 65 20 66 6f  72 20 64 75 72 61 74 69  |Value for durati|
00005c50  6f 6e 20 6f 75 74 20 6f  66 20 72 61 6e 67 65 22  |on out of range"|
00005c60  2c 31 30 30 2c 9e 29 3a  64 75 72 61 25 3d 32 30  |,100,.):dura%=20|
00005c70  3a f2 73 65 74 5f 69 63  6f 6e 28 63 6f 6e 25 2c  |:.set_icon(con%,|
00005c80  33 31 2c c3 28 64 75 72  61 25 29 29 0d 22 ba 79  |31,.(dura%)).".y|
00005c90  20 e7 20 74 72 61 6e 73  25 3e 31 31 20 84 20 74  | . trans%>11 . t|
00005ca0  72 61 6e 73 25 3c 2d 31  31 20 f2 72 65 70 6f 72  |rans%<-11 .repor|
00005cb0  74 5f 65 72 72 28 22 56  61 6c 75 65 20 66 6f 72  |t_err("Value for|
00005cc0  20 74 72 61 6e 73 70 6f  73 65 20 6f 75 74 20 6f  | transpose out o|
00005cd0  66 20 72 61 6e 67 65 22  2c 31 30 30 2c 9e 29 3a  |f range",100,.):|
00005ce0  74 72 61 6e 73 25 3d 30  3a f2 73 65 74 5f 69 63  |trans%=0:.set_ic|
00005cf0  6f 6e 28 63 6f 6e 25 2c  32 36 2c c3 28 74 72 61  |on(con%,26,.(tra|
00005d00  6e 73 25 29 29 0d 22 c4  73 20 e7 20 63 68 61 6e  |ns%)).".s . chan|
00005d10  25 3e 38 20 84 20 63 68  61 6e 25 3c 31 20 f2 72  |%>8 . chan%<1 .r|
00005d20  65 70 6f 72 74 5f 65 72  72 28 22 53 6f 75 6e 64  |eport_err("Sound|
00005d30  20 63 68 61 6e 6e 65 6c  20 6e 75 6d 62 65 72 20  | channel number |
00005d40  6f 75 74 20 6f 66 20 72  61 6e 67 65 22 2c 31 30  |out of range",10|
00005d50  30 2c 9e 29 3a 63 68 61  6e 25 3d 31 3a f2 73 65  |0,.):chan%=1:.se|
00005d60  74 5f 69 63 6f 6e 28 63  6f 6e 25 2c 33 32 2c c3  |t_icon(con%,32,.|
00005d70  28 63 68 61 6e 25 29 29  0d 22 ce 06 20 e1 0d 22  |(chan%)).".. .."|
00005d80  d8 04 0d 22 e2 12 20 dd  f2 74 6f 67 67 6c 65 63  |...".. ..togglec|
00005d90  68 61 72 73 0d 22 ec 16  20 c8 99 20 22 48 6f 75  |hars.".. .. "Hou|
00005da0  72 67 6c 61 73 73 5f 4f  6e 22 0d 22 f6 14 20 e7  |rglass_On".".. .|
00005db0  20 73 68 6f 77 6b 65 79  73 25 3d b9 20 8c 0d 23  | showkeys%=. ..#|
00005dc0  00 2e 20 e3 20 4e 25 3d  33 36 20 b8 20 37 30 3a  |.. . N%=36 . 70:|
00005dd0  f2 75 70 64 61 74 65 5f  69 63 6f 6e 28 6d 61 69  |.update_icon(mai|
00005de0  6e 25 2c 4e 25 2c 30 2c  31 29 3a ed 0d 23 0a 10  |n%,N%,0,1):..#..|
00005df0  20 73 68 6f 77 6b 65 79  73 25 3d a3 0d 23 14 06  | showkeys%=..#..|
00005e00  20 cc 0d 23 1e 2e 20 e3  20 4e 25 3d 33 36 20 b8  | ..#.. . N%=36 .|
00005e10  20 37 30 3a f2 75 70 64  61 74 65 5f 69 63 6f 6e  | 70:.update_icon|
00005e20  28 6d 61 69 6e 25 2c 4e  25 2c 31 2c 31 29 3a ed  |(main%,N%,1,1):.|
00005e30  0d 23 28 10 20 73 68 6f  77 6b 65 79 73 25 3d b9  |.#(. showkeys%=.|
00005e40  0d 23 32 06 20 cd 0d 23  3c 17 20 c8 99 20 22 48  |.#2. ..#<. .. "H|
00005e50  6f 75 72 67 6c 61 73 73  5f 4f 66 66 22 0d 23 46  |ourglass_Off".#F|
00005e60  06 20 e1 0d 23 50 04 0d  23 5a 0c 20 dd f2 67 65  |. ..#P..#Z. ..ge|
00005e70  74 69 66 0d 23 64 12 20  e7 20 69 66 6e 65 65 64  |tif.#d. . ifneed|
00005e80  65 64 25 20 8c 0d 23 6e  31 20 c8 99 20 22 57 69  |ed% ..#n1 .. "Wi|
00005e90  6d 70 5f 53 65 74 43 61  72 65 74 50 6f 73 69 74  |mp_SetCaretPosit|
00005ea0  69 6f 6e 22 2c 6d 61 69  6e 25 2c 2d 31 2c 2c 2c  |ion",main%,-1,,,|
00005eb0  25 31 3c 3c 32 35 0d 23  78 10 20 69 66 6e 65 65  |%1<<25.#x. ifnee|
00005ec0  64 65 64 25 3d a3 0d 23  82 06 20 cd 0d 23 8c 06  |ded%=..#.. ..#..|
00005ed0  20 e1 0d 23 96 04 0d 23  a0 1f 20 dd f2 75 70 64  | ..#...#.. ..upd|
00005ee0  61 74 65 5f 74 69 74 6c  65 28 68 61 6e 25 2c 61  |ate_title(han%,a|
00005ef0  25 2c 74 24 29 0d 23 aa  09 20 ea 20 62 25 0d 23  |%,t$).#.. . b%.#|
00005f00  b4 1b 20 f2 67 65 74 5f  77 69 6e 64 6f 77 5f 69  |.. .get_window_i|
00005f10  6e 66 6f 28 68 61 6e 25  29 0d 23 be 48 20 e7 20  |nfo(han%).#.H . |
00005f20  28 62 6c 6b 25 21 38 30  20 80 20 25 31 30 30 30  |(blk%!80 . %1000|
00005f30  30 30 30 30 30 29 3d 30  20 85 20 31 2c 22 57 69  |00000)=0 . 1,"Wi|
00005f40  6e 64 6f 77 20 74 69 74  6c 65 20 62 61 72 20 69  |ndow title bar i|
00005f50  73 20 6e 6f 74 20 69 6e  64 69 72 65 63 74 65 64  |s not indirected|
00005f60  22 0d 23 c8 3f 20 e7 20  a9 20 74 24 3e 62 6c 6b  |".#.? . . t$>blk|
00005f70  25 21 38 34 20 85 20 31  2c 22 49 6e 64 69 72 65  |%!84 . 1,"Indire|
00005f80  63 74 65 64 20 61 72 65  61 20 69 6e 73 75 66 66  |cted area insuff|
00005f90  69 63 69 65 6e 74 20 66  6f 72 20 64 61 74 61 22  |icient for data"|
00005fa0  0d 23 d2 0f 20 62 25 3d  62 6c 6b 25 21 37 36 0d  |.#.. b%=blk%!76.|
00005fb0  23 dc 0c 20 c8 8e 20 61  25 20 ca 0d 23 e6 10 20  |#.. .. a% ..#.. |
00005fc0  c9 20 30 3a 20 24 62 25  3d 74 24 0d 23 f0 1d 20  |. 0: $b%=t$.#.. |
00005fd0  c9 20 31 3a 20 24 62 25  3d 22 4b 65 79 62 6f 61  |. 1: $b%="Keyboa|
00005fe0  72 64 3a 20 22 2b 74 24  0d 23 fa 16 20 c9 20 32  |rd: "+t$.#.. . 2|
00005ff0  3a 20 24 62 25 3d 24 62  25 2b 22 20 2a 22 0d 24  |: $b%=$b%+" *".$|
00006000  04 06 20 cb 0d 24 0e 3c  20 e7 20 6d 61 69 6e 6f  |.. ..$.< . maino|
00006010  70 65 6e 25 20 c8 99 20  22 57 69 6d 70 5f 46 6f  |pen% .. "Wimp_Fo|
00006020  72 63 65 52 65 64 72 61  77 22 2c 2d 31 2c 78 30  |rceRedraw",-1,x0|
00006030  25 2c 79 31 25 2c 78 31  25 2c 79 31 25 2b 34 30  |%,y1%,x1%,y1%+40|
00006040  0d 24 18 06 20 e1 0d 24  22 04 0d 24 2c 13 20 dd  |.$.. ..$"..$,. .|
00006050  a4 6c 65 61 66 6e 61 6d  65 28 66 24 29 0d 24 36  |.leafname(f$).$6|
00006060  33 20 ea 20 69 25 3a f5  3a 69 25 3d a7 66 24 2c  |3 . i%:.:i%=.f$,|
00006070  22 2e 22 29 3a e7 20 69  25 3c 3e 30 20 66 24 3d  |"."):. i%<>0 f$=|
00006080  c1 66 24 2c 69 25 2b 31  29 3a fd 20 69 25 3d 30  |.f$,i%+1):. i%=0|
00006090  0d 24 40 08 20 3d 66 24  0d 24 4a 04 0d 24 54 21  |.$@. =f$.$J..$T!|
000060a0  20 dd f2 6b 65 79 62 6f  61 72 64 64 61 74 61 6f  | ..keyboarddatao|
000060b0  75 74 28 66 6e 61 6d 65  24 2c 75 25 29 0d 24 5e  |ut(fname$,u%).$^|
000060c0  22 20 ea 20 4e 25 2c 41  25 2c 73 76 6f 6c 25 2c  |" . N%,A%,svol%,|
000060d0  73 73 70 65 61 6b 65 72  25 2c 56 24 2c 65 25 0d  |sspeaker%,V$,e%.|
000060e0  24 68 65 20 e7 20 a7 66  6e 61 6d 65 24 2c 22 2e  |$he . .fname$,".|
000060f0  22 29 3d 30 20 80 20 75  25 3d b9 20 f2 72 65 70  |")=0 . u%=. .rep|
00006100  6f 72 74 5f 65 72 72 28  22 54 6f 20 73 61 76 65  |ort_err("To save|
00006110  2c 20 64 72 61 67 20 74  68 65 20 66 69 6c 65 20  |, drag the file |
00006120  69 63 6f 6e 20 74 6f 20  61 20 64 69 72 65 63 74  |icon to a direct|
00006130  6f 72 79 20 76 69 65 77  65 72 22 2c 31 30 30 2c  |ory viewer",100,|
00006140  9e 29 3a e1 0d 24 72 25  20 73 76 6f 6c 25 3d 30  |.):..$r% svol%=0|
00006150  3a 73 73 70 65 61 6b 65  72 25 3d 30 3a 73 73 74  |:sspeaker%=0:sst|
00006160  65 72 65 6f 25 28 29 3d  30 0d 24 7c 1f 20 65 25  |ereo%()=0.$|. e%|
00006170  3d 30 3a c8 95 20 6d 76  25 28 65 25 29 3c 3e 30  |=0:.. mv%(e%)<>0|
00006180  3a 65 25 2b 3d 31 3a ce  0d 24 86 16 20 c8 99 20  |:e%+=1:..$.. .. |
00006190  22 48 6f 75 72 67 6c 61  73 73 5f 4f 6e 22 0d 24  |"Hourglass_On".$|
000061a0  90 11 20 41 25 3d ae 28  66 6e 61 6d 65 24 29 0d  |.. A%=.(fname$).|
000061b0  24 9a 15 20 f1 23 20 41  25 2c 22 4b 65 79 62 6f  |$.. .# A%,"Keybo|
000061c0  61 72 64 22 0d 24 a4 13  20 f1 23 20 41 25 2c 76  |ard".$.. .# A%,v|
000061d0  65 72 73 69 6f 6e 24 0d  24 ae 17 20 d5 23 20 41  |ersion$.$.. .# A|
000061e0  25 2c 73 61 76 65 63 68  6f 69 63 65 73 25 0d 24  |%,savechoices%.$|
000061f0  b8 17 20 e7 20 73 61 76  65 63 68 6f 69 63 65 73  |.. . savechoices|
00006200  25 3d b9 20 8c 0d 24 c2  14 20 d5 23 20 41 25 2c  |%=. ..$.. .# A%,|
00006210  61 75 74 6f 69 6e 73 74  25 0d 24 cc 0f 20 d5 23  |autoinst%.$.. .#|
00006220  20 41 25 2c 6f 63 74 25  0d 24 d6 11 20 d5 23 20  | A%,oct%.$.. .# |
00006230  41 25 2c 74 72 61 6e 73  25 0d 24 e0 10 20 d5 23  |A%,trans%.$.. .#|
00006240  20 41 25 2c 63 68 61 6e  25 0d 24 ea 10 20 d5 23  | A%,chan%.$.. .#|
00006250  20 41 25 2c 64 75 72 61  25 0d 24 f4 14 20 d5 23  | A%,dura%.$.. .#|
00006260  20 41 25 2c 73 68 6f 77  6b 65 79 73 25 0d 24 fe  | A%,showkeys%.$.|
00006270  12 20 d5 23 20 41 25 2c  76 6f 6c 75 6d 65 25 0d  |. .# A%,volume%.|
00006280  25 08 11 20 d5 23 20 41  25 2c 76 6c 73 65 6c 25  |%.. .# A%,vlsel%|
00006290  0d 25 12 12 20 f1 23 20  41 25 2c 74 75 6e 6f 63  |.%.. .# A%,tunoc|
000062a0  74 25 0d 25 1c 13 20 f1  23 20 41 25 2c 74 75 6e  |t%.%.. .# A%,tun|
000062b0  73 65 6d 69 25 0d 25 26  10 20 d5 23 20 41 25 2c  |semi%.%&. .# A%,|
000062c0  73 76 6f 6c 25 0d 25 30  14 20 d5 23 20 41 25 2c  |svol%.%0. .# A%,|
000062d0  73 73 70 65 61 6b 65 72  25 0d 25 3a 0f 20 e3 20  |sspeaker%.%:. . |
000062e0  4e 25 3d 30 20 b8 20 37  0d 25 44 19 20 d5 23 20  |N%=0 . 7.%D. .# |
000062f0  41 25 2c 73 73 74 65 72  65 6f 25 28 4e 25 29 3a  |A%,sstereo%(N%):|
00006300  ed 0d 25 4e 12 20 d5 23  20 41 25 2c 73 61 6c 6f  |..%N. .# A%,salo|
00006310  6e 65 25 0d 25 58 0f 20  e3 20 4e 25 3d 30 20 b8  |ne%.%X. . N%=0 .|
00006320  20 36 0d 25 62 0e 20 d5  23 20 41 25 2c 30 3a ed  | 6.%b. .# A%,0:.|
00006330  0d 25 6c 06 20 cc 0d 25  76 10 20 e3 20 4e 25 3d  |.%l. ..%v. . N%=|
00006340  30 20 b8 20 33 30 0d 25  80 0e 20 d5 23 20 41 25  |0 . 30.%.. .# A%|
00006350  2c 30 3a ed 0d 25 8a 06  20 cd 0d 25 94 10 20 d5  |,0:..%.. ..%.. .|
00006360  23 20 41 25 2c 6e 65 78  74 25 0d 25 9e 11 20 e7  |# A%,next%.%.. .|
00006370  20 6e 65 78 74 25 3c 3e  30 20 8c 0d 25 a8 13 20  | next%<>0 ..%.. |
00006380  e3 20 4e 25 3d 31 20 b8  20 6e 65 78 74 25 0d 25  |. N%=1 . next%.%|
00006390  b2 1a 20 f1 23 20 41 25  2c 70 61 74 68 6e 61 6d  |.. .# A%,pathnam|
000063a0  65 24 28 4e 25 2d 31 29  0d 25 bc 16 20 f1 23 20  |e$(N%-1).%.. .# |
000063b0  41 25 2c 74 79 70 65 25  28 4e 25 2d 31 29 0d 25  |A%,type%(N%-1).%|
000063c0  c6 1d 20 d5 23 20 41 25  2c 3f 28 63 6f 64 65 25  |.. .# A%,?(code%|
000063d0  2b 26 39 44 30 2b 4e 25  2d 31 29 0d 25 d0 06 20  |+&9D0+N%-1).%.. |
000063e0  ed 0d 25 da 06 20 cd 0d  25 e4 0a 20 d9 23 20 41  |..%.. ..%.. .# A|
000063f0  25 0d 25 ee 20 20 ff 28  22 53 65 74 74 79 70 65  |%.%.  .("Settype|
00006400  20 22 2b 66 6e 61 6d 65  24 2b 22 20 31 30 43 22  | "+fname$+" 10C"|
00006410  29 0d 25 f8 0b 20 e7 20  75 25 20 8c 0d 26 02 22  |).%.. . u% ..&."|
00006420  20 f2 75 70 64 61 74 65  5f 74 69 74 6c 65 28 6d  | .update_title(m|
00006430  61 69 6e 25 2c 30 2c 66  6e 61 6d 65 24 29 0d 26  |ain%,0,fname$).&|
00006440  0c 0f 20 63 68 61 6e 67  65 64 25 3d a3 0d 26 16  |.. changed%=..&.|
00006450  06 20 cd 0d 26 20 17 20  c8 99 20 22 48 6f 75 72  |. ..& . .. "Hour|
00006460  67 6c 61 73 73 5f 4f 66  66 22 0d 26 2a 06 20 e1  |glass_Off".&*. .|
00006470  0d 26 34 04 0d 26 3e 24  20 dd f2 64 72 61 67 5f  |.&4..&>$ ..drag_|
00006480  69 63 6f 6e 28 6d 78 25  2c 6d 79 25 2c 68 61 6e  |icon(mx%,my%,han|
00006490  25 2c 69 63 6f 6e 25 29  0d 26 48 1d 20 ea 20 69  |%,icon%).&H. . i|
000064a0  78 30 25 2c 69 78 31 25  2c 69 79 30 25 2c 69 79  |x0%,ix1%,iy0%,iy|
000064b0  31 25 2c 62 25 0d 26 52  17 20 e7 20 68 61 6e 25  |1%,b%.&R. . han%|
000064c0  3c 3e 73 61 76 65 62 6f  78 25 20 e1 0d 26 5c 22  |<>savebox% ..&\"|
000064d0  20 f2 67 65 74 5f 70 6f  69 6e 74 65 72 5f 69 6e  | .get_pointer_in|
000064e0  66 6f 3a e7 20 6d 62 75  74 25 3d 32 20 e1 0d 26  |fo:. mbut%=2 ..&|
000064f0  66 2a 20 6d 65 6e 75 62  75 74 25 3d 6d 62 75 74  |f* menubut%=mbut|
00006500  25 3a f2 67 65 74 5f 77  69 6e 64 6f 77 5f 69 6e  |%:.get_window_in|
00006510  66 6f 28 68 61 6e 25 29  0d 26 70 20 20 f2 67 65  |fo(han%).&p  .ge|
00006520  74 5f 69 63 6f 6e 5f 73  74 61 74 65 28 68 61 6e  |t_icon_state(han|
00006530  25 2c 69 63 6f 6e 25 29  0d 26 7a 4b 20 69 78 30  |%,icon%).&zK ix0|
00006540  25 3d 62 6c 6b 25 21 38  3a 69 79 30 25 3d 62 6c  |%=blk%!8:iy0%=bl|
00006550  6b 25 21 31 32 3a 69 78  31 25 3d 62 6c 6b 25 21  |k%!12:ix1%=blk%!|
00006560  31 36 3a 69 79 31 25 3d  62 6c 6b 25 21 32 30 3a  |16:iy1%=blk%!20:|
00006570  21 62 6c 6b 25 3d 68 61  6e 25 3a 62 6c 6b 25 21  |!blk%=han%:blk%!|
00006580  34 3d 35 0d 26 84 47 20  62 6c 6b 25 21 38 3d 78  |4=5.&.G blk%!8=x|
00006590  30 25 2b 69 78 30 25 3a  62 6c 6b 25 21 31 32 3d  |0%+ix0%:blk%!12=|
000065a0  79 31 25 2b 69 79 30 25  3a 62 6c 6b 25 21 31 36  |y1%+iy0%:blk%!16|
000065b0  3d 78 30 25 2b 69 78 31  25 3a 62 6c 6b 25 21 32  |=x0%+ix1%:blk%!2|
000065c0  30 3d 79 31 25 2b 69 79  31 25 0d 26 8e 49 20 62  |0=y1%+iy1%.&.I b|
000065d0  6c 6b 25 21 32 34 3d 62  6c 6b 25 21 38 2d 6d 78  |lk%!24=blk%!8-mx|
000065e0  25 3a 62 6c 6b 25 21 32  38 3d 62 6c 6b 25 21 31  |%:blk%!28=blk%!1|
000065f0  32 2d 6d 79 25 3a 62 6c  6b 25 21 33 32 3d 73 77  |2-my%:blk%!32=sw|
00006600  69 64 74 68 25 2b 28 62  6c 6b 25 21 31 36 2d 6d  |idth%+(blk%!16-m|
00006610  78 25 29 0d 26 98 23 20  62 6c 6b 25 21 33 36 3d  |x%).&.# blk%!36=|
00006620  73 68 65 69 67 68 74 25  2b 28 62 6c 6b 25 21 32  |sheight%+(blk%!2|
00006630  30 2d 6d 79 25 29 0d 26  a2 16 20 e7 20 76 65 72  |0-my%).&.. . ver|
00006640  73 69 6f 6e 25 3e 3d 33  30 30 20 8c 0d 26 ac 20  |sion%>=300 ..&. |
00006650  20 20 c8 99 20 22 4f 53  5f 42 79 74 65 22 2c 31  |  .. "OS_Byte",1|
00006660  36 31 2c 32 38 20 b8 20  2c 2c 62 25 0d 26 b6 10  |61,28 . ,,b%.&..|
00006670  20 20 e7 20 62 25 20 80  20 32 20 8c 0d 26 c0 35  |  . b% . 2 ..&.5|
00006680  20 20 c8 99 20 22 58 44  72 61 67 41 53 70 72 69  |  .. "XDragASpri|
00006690  74 65 5f 53 74 61 72 74  22 2c 31 39 37 2c 31 2c  |te_Start",197,1,|
000066a0  22 66 69 6c 65 5f 31 30  63 22 2c 62 6c 6b 25 2b  |"file_10c",blk%+|
000066b0  38 0d 26 ca 07 20 20 cc  0d 26 d4 1d 20 20 c8 99  |8.&..  ..&..  ..|
000066c0  20 22 57 69 6d 70 5f 44  72 61 67 42 6f 78 22 2c  | "Wimp_DragBox",|
000066d0  2c 62 6c 6b 25 0d 26 de  07 20 20 cd 0d 26 e8 06  |,blk%.&..  ..&..|
000066e0  20 cc 0d 26 f2 1d 20 20  c8 99 20 22 57 69 6d 70  | ..&..  .. "Wimp|
000066f0  5f 44 72 61 67 42 6f 78  22 2c 2c 62 6c 6b 25 0d  |_DragBox",,blk%.|
00006700  26 fc 06 20 cd 0d 27 06  06 20 e1 0d 27 10 04 0d  |&.. ..'.. ..'...|
00006710  27 1a 10 20 dd f2 6c 6f  61 64 5f 66 69 6c 65 0d  |'.. ..load_file.|
00006720  27 24 35 20 ea 20 6c 65  6e 25 2c 6f 25 2c 6d 6f  |'$5 . len%,o%,mo|
00006730  64 70 72 65 73 65 6e 74  25 2c 6d 6f 64 6e 61 6d  |dpresent%,modnam|
00006740  65 24 2c 6c 6f 61 64 65  64 25 3a 6c 6f 61 64 65  |e$,loaded%:loade|
00006750  64 25 3d b9 0d 27 2e 16  20 c8 99 20 22 48 6f 75  |d%=..'.. .. "Hou|
00006760  72 67 6c 61 73 73 5f 4f  6e 22 0d 27 38 55 20 e7  |rglass_On".'8U .|
00006770  20 66 69 6c 65 74 79 70  65 25 3c 3e 26 31 30 43  | filetype%<>&10C|
00006780  20 80 20 6e 65 78 74 25  3e 3d 33 32 20 f2 72 65  | . next%>=32 .re|
00006790  70 6f 72 74 5f 65 72 72  28 22 43 61 6e 27 74 20  |port_err("Can't |
000067a0  6c 6f 61 64 20 61 6e 79  20 6d 6f 72 65 20 73 61  |load any more sa|
000067b0  6d 70 6c 65 73 22 2c 31  30 30 2c 9e 29 3a e1 0d  |mples",100,.):..|
000067c0  27 42 2b 20 c8 99 20 22  4f 53 5f 46 69 6c 65 22  |'B+ .. "OS_File"|
000067d0  2c 31 37 2c 66 69 6c 65  6e 61 6d 65 24 20 b8 20  |,17,filename$ . |
000067e0  6f 25 2c 2c 2c 2c 6c 65  6e 25 0d 27 4c 20 20 e7  |o%,,,,len%.'L  .|
000067f0  20 6f 25 3d 30 20 85 20  31 2c 22 46 69 6c 65 20  | o%=0 . 1,"File |
00006800  6e 6f 74 20 66 6f 75 6e  64 22 0d 27 56 84 20 e7  |not found".'V. .|
00006810  20 a4 66 69 6c 65 5f 70  72 65 73 65 6e 74 28 a4  | .file_present(.|
00006820  6c 65 61 66 6e 61 6d 65  28 66 69 6c 65 6e 61 6d  |leafname(filenam|
00006830  65 24 29 2c 66 69 6c 65  74 79 70 65 25 29 3d b9  |e$),filetype%)=.|
00006840  20 f2 72 65 70 6f 72 74  5f 65 72 72 28 22 53 61  | .report_err("Sa|
00006850  6d 70 6c 65 20 6e 61 6d  65 20 27 22 2b a4 6c 65  |mple name '"+.le|
00006860  61 66 6e 61 6d 65 28 66  69 6c 65 6e 61 6d 65 24  |afname(filename$|
00006870  29 2b 22 27 20 61 6c 72  65 61 64 79 20 70 72 65  |)+"' already pre|
00006880  73 65 6e 74 22 2c 31 30  30 2c 9e 29 3a e1 0d 27  |sent",100,.):..'|
00006890  60 13 20 c8 8e 20 66 69  6c 65 74 79 70 65 25 20  |`. .. filetype% |
000068a0  ca 0d 27 6a 0b 20 c9 20  26 46 46 41 0d 27 74 29  |..'j. . &FFA.'t)|
000068b0  20 6d 6f 64 6e 61 6d 65  24 3d a4 67 65 74 5f 6d  | modname$=.get_m|
000068c0  6f 64 75 6c 65 5f 6e 61  6d 65 28 66 69 6c 65 6e  |odule_name(filen|
000068d0  61 6d 65 24 29 0d 27 7e  2a 20 6d 6f 64 70 72 65  |ame$).'~* modpre|
000068e0  73 65 6e 74 25 3d a4 6d  6f 64 75 6c 65 5f 70 72  |sent%=.module_pr|
000068f0  65 73 65 6e 74 28 6d 6f  64 6e 61 6d 65 24 29 0d  |esent(modname$).|
00006900  27 88 29 20 e7 20 6d 6f  64 70 72 65 73 65 6e 74  |'.) . modpresent|
00006910  25 20 f2 6b 69 6c 6c 5f  6d 6f 64 75 6c 65 28 6d  |% .kill_module(m|
00006920  6f 64 6e 61 6d 65 24 29  0d 27 92 2a 20 f2 73 74  |odname$).'.* .st|
00006930  6f 72 65 73 61 6d 70 6c  65 73 28 30 2c a4 6c 65  |oresamples(0,.le|
00006940  61 66 6e 61 6d 65 28 66  69 6c 65 6e 61 6d 65 24  |afname(filename$|
00006950  29 29 0d 27 9c 1a 20 ff  20 22 52 4d 4c 6f 61 64  |)).'.. . "RMLoad|
00006960  20 22 2b 66 69 6c 65 6e  61 6d 65 24 0d 27 a6 2b  | "+filename$.'.+|
00006970  20 f2 73 74 6f 72 65 73  61 6d 70 6c 65 73 28 33  | .storesamples(3|
00006980  32 2c a4 6c 65 61 66 6e  61 6d 65 28 66 69 6c 65  |2,.leafname(file|
00006990  6e 61 6d 65 24 29 29 0d  27 b0 37 20 e7 20 6c 6f  |name$)).'.7 . lo|
000069a0  61 64 65 64 25 3d a3 20  80 20 6d 6f 64 70 72 65  |aded%=. . modpre|
000069b0  73 65 6e 74 25 3d a3 20  f2 6b 69 6c 6c 5f 6d 6f  |sent%=. .kill_mo|
000069c0  64 75 6c 65 28 6d 6f 64  6e 61 6d 65 24 29 0d 27  |dule(modname$).'|
000069d0  ba 45 20 e7 20 73 63 72  61 70 25 3c 3e 30 20 ff  |.E . scrap%<>0 .|
000069e0  20 22 44 65 6c 65 74 65  20 3c 57 69 6d 70 24 53  | "Delete <Wimp$S|
000069f0  63 72 61 70 3e 22 3a 73  63 72 61 70 25 3d 30 3a  |crap>":scrap%=0:|
00006a00  66 69 6c 65 6e 61 6d 65  24 3d 6c 65 61 66 6e 61  |filename$=leafna|
00006a10  6d 65 24 0d 27 c4 3b 20  e7 20 6c 6f 61 64 65 64  |me$.'.; . loaded|
00006a20  25 20 73 61 6d 70 61 64  64 72 25 28 6e 65 78 74  |% sampaddr%(next|
00006a30  25 29 3d 30 3a f2 75 70  64 61 74 65 73 61 6d 70  |%)=0:.updatesamp|
00006a40  61 72 72 61 79 73 28 6c  65 6e 25 2c b9 29 0d 27  |arrays(len%,.).'|
00006a50  ce 12 20 f2 64 61 74 61  6c 6f 61 64 5f 61 63 6b  |.. .dataload_ack|
00006a60  0d 27 d8 1f 20 c9 20 26  44 46 39 2c 26 43 42 35  |.'.. . &DF9,&CB5|
00006a70  2c 26 45 44 30 2c 26 44  33 43 2c 26 46 46 44 0d  |,&ED0,&D3C,&FFD.|
00006a80  27 e2 18 20 e7 20 a4 65  78 74 65 6e 64 28 6c 65  |'.. . .extend(le|
00006a90  6e 25 29 3d a3 20 8c 0d  27 ec 19 20 f2 6c 6f 61  |n%)=. ..'.. .loa|
00006aa0  64 5f 73 61 6d 70 6c 65  28 6c 65 6e 25 2c b9 29  |d_sample(len%,.)|
00006ab0  0d 27 f6 29 20 e7 20 61  75 74 6f 69 6e 73 74 25  |.'.) . autoinst%|
00006ac0  20 f2 69 6e 73 74 61 6c  6c 5f 73 61 6d 70 6c 65  | .install_sample|
00006ad0  28 6e 65 78 74 25 2d 31  29 0d 28 00 12 20 f2 64  |(next%-1).(.. .d|
00006ae0  61 74 61 6c 6f 61 64 5f  61 63 6b 0d 28 0a 06 20  |ataload_ack.(.. |
00006af0  cd 0d 28 14 0b 20 c9 20  26 31 30 43 0d 28 1e 12  |..(.. . &10C.(..|
00006b00  20 f2 64 61 74 61 6c 6f  61 64 5f 61 63 6b 0d 28  | .dataload_ack.(|
00006b10  28 3c 20 e7 20 63 68 61  6e 67 65 64 25 20 f2 6d  |(< . changed% .m|
00006b20  65 73 73 61 67 65 5f 62  6f 78 28 32 29 20 8b 20  |essage_box(2) . |
00006b30  f2 6b 65 79 62 6f 61 72  64 64 61 74 61 69 6e 28  |.keyboarddatain(|
00006b40  66 69 6c 65 6e 61 6d 65  24 29 0d 28 32 06 20 cb  |filename$).(2. .|
00006b50  0d 28 3c 17 20 c8 99 20  22 48 6f 75 72 67 6c 61  |.(<. .. "Hourgla|
00006b60  73 73 5f 4f 66 66 22 0d  28 46 06 20 e1 0d 28 50  |ss_Off".(F. ..(P|
00006b70  04 0d 28 5a 20 20 dd f2  75 70 64 61 74 65 73 61  |..(Z  ..updatesa|
00006b80  6d 70 61 72 72 61 79 73  28 6c 65 6e 25 2c 70 25  |mparrays(len%,p%|
00006b90  29 0d 28 64 3b 20 e7 20  70 25 20 70 61 74 68 6e  |).(d; . p% pathn|
00006ba0  61 6d 65 24 28 6e 65 78  74 25 29 3d 66 69 6c 65  |ame$(next%)=file|
00006bb0  6e 61 6d 65 24 3a 74 79  70 65 25 28 6e 65 78 74  |name$:type%(next|
00006bc0  25 29 3d 66 69 6c 65 74  79 70 65 25 0d 28 6e 16  |%)=filetype%.(n.|
00006bd0  20 73 69 7a 65 25 28 6e  65 78 74 25 29 3d 6c 65  | size%(next%)=le|
00006be0  6e 25 0d 28 78 2a 20 f2  75 70 64 61 74 65 73 61  |n%.(x* .updatesa|
00006bf0  6d 70 6c 69 73 74 28 a4  6c 65 61 66 6e 61 6d 65  |mplist(.leafname|
00006c00  28 66 69 6c 65 6e 61 6d  65 24 29 29 0d 28 82 0d  |(filename$)).(..|
00006c10  20 6e 65 78 74 25 2b 3d  31 0d 28 8c 1b 20 f2 75  | next%+=1.(.. .u|
00006c20  70 64 61 74 65 73 61 6d  70 69 63 6f 6e 28 6e 65  |pdatesampicon(ne|
00006c30  78 74 25 29 0d 28 96 14  20 f2 63 68 65 63 6b 63  |xt%).(.. .checkc|
00006c40  68 61 6e 67 65 28 a3 29  0d 28 a0 06 20 e1 0d 28  |hange(.).(.. ..(|
00006c50  aa 04 0d 28 b4 1c 20 dd  f2 75 70 64 61 74 65 73  |...(.. ..updates|
00006c60  61 6d 70 6c 69 73 74 28  6e 61 6d 65 24 29 0d 28  |amplist(name$).(|
00006c70  be 2c 20 e7 20 a9 20 6e  61 6d 65 24 3e 31 31 20  |., . . name$>11 |
00006c80  85 20 31 2c 22 53 61 6d  70 6c 65 20 6e 61 6d 65  |. 1,"Sample name|
00006c90  20 74 6f 6f 20 6c 6f 6e  67 22 0d 28 c8 21 20 f2  | too long".(.! .|
00006ca0  67 65 74 5f 77 69 6e 64  6f 77 5f 73 74 61 74 65  |get_window_state|
00006cb0  28 73 61 6d 70 6c 69 73  74 25 29 0d 28 d2 59 20  |(samplist%).(.Y |
00006cc0  21 62 6c 6b 25 3d 73 61  6d 70 6c 69 73 74 25 3a  |!blk%=samplist%:|
00006cd0  62 6c 6b 25 21 34 3d 30  3a 62 6c 6b 25 21 38 3d  |blk%!4=0:blk%!8=|
00006ce0  30 2d 28 6e 65 78 74 25  2a 34 34 29 2d 34 34 3a  |0-(next%*44)-44:|
00006cf0  62 6c 6b 25 21 31 32 3d  78 31 25 2d 78 30 25 3a  |blk%!12=x1%-x0%:|
00006d00  62 6c 6b 25 21 31 36 3d  30 2d 28 6e 65 78 74 25  |blk%!16=0-(next%|
00006d10  2a 34 34 29 0d 28 dc 26  20 62 6c 6b 25 21 32 30  |*44).(.& blk%!20|
00006d20  3d 26 37 30 31 42 34 33  31 3a 24 28 62 6c 6b 25  |=&701B431:$(blk%|
00006d30  2b 32 34 29 3d 6e 61 6d  65 24 0d 28 e6 1f 20 c8  |+24)=name$.(.. .|
00006d40  99 20 22 57 69 6d 70 5f  43 72 65 61 74 65 49 63  |. "Wimp_CreateIc|
00006d50  6f 6e 22 2c 2c 62 6c 6b  25 0d 28 f0 5b 20 e7 20  |on",,blk%.(.[ . |
00006d60  73 61 6d 70 6f 70 65 6e  25 20 c8 99 20 22 57 69  |sampopen% .. "Wi|
00006d70  6d 70 5f 46 6f 72 63 65  52 65 64 72 61 77 22 2c  |mp_ForceRedraw",|
00006d80  73 61 6d 70 6c 69 73 74  25 2c 30 2c 28 30 2d 28  |samplist%,0,(0-(|
00006d90  6e 65 78 74 25 2a 34 34  29 2d 34 34 29 2c 78 31  |next%*44)-44),x1|
00006da0  25 2d 78 30 25 2c 28 30  2d 28 6e 65 78 74 25 2a  |%-x0%,(0-(next%*|
00006db0  34 34 29 29 0d 28 fa 25  20 e7 20 28 30 2d 28 6e  |44)).(.% . (0-(n|
00006dc0  65 78 74 25 2a 34 34 29  2d 34 34 29 3c 2d 28 79  |ext%*44)-44)<-(y|
00006dd0  31 25 2d 79 30 25 29 20  8c 0d 29 04 3c 20 21 62  |1%-y0%) ..).< !b|
00006de0  6c 6b 25 3d 30 3a 62 6c  6b 25 21 34 3d 30 2d 28  |lk%=0:blk%!4=0-(|
00006df0  6e 65 78 74 25 2a 34 34  29 2d 34 34 3a 62 6c 6b  |next%*44)-44:blk|
00006e00  25 21 38 3d 78 31 25 2d  78 30 25 3a 62 6c 6b 25  |%!8=x1%-x0%:blk%|
00006e10  21 31 32 3d 30 0d 29 0e  27 20 c8 99 20 22 57 69  |!12=0.).' .. "Wi|
00006e20  6d 70 5f 53 65 74 45 78  74 65 6e 74 22 2c 73 61  |mp_SetExtent",sa|
00006e30  6d 70 6c 69 73 74 25 2c  62 6c 6b 25 0d 29 18 06  |mplist%,blk%.)..|
00006e40  20 cd 0d 29 22 06 20 e1  0d 29 2c 04 0d 29 36 1b  | ..)". ..),..)6.|
00006e50  20 dd f2 65 6e 74 69 72  65 5f 6c 69 73 74 28 61  | ..entire_list(a|
00006e60  63 74 69 6f 6e 25 29 0d  29 40 39 20 ea 20 6d 61  |ction%).)@9 . ma|
00006e70  73 6b 25 2c 62 6d 61 74  63 68 25 2c 61 64 64 72  |sk%,bmatch%,addr|
00006e80  25 2c 70 25 2c 6e 25 3a  6e 25 3d 30 3a 61 64 64  |%,p%,n%:n%=0:add|
00006e90  72 25 3d 62 6c 6b 25 2b  32 35 36 3a 70 25 3d 30  |r%=blk%+256:p%=0|
00006ea0  0d 29 4a 11 20 6d 61 73  6b 25 3d 25 31 3c 3c 32  |.)J. mask%=%1<<2|
00006eb0  31 0d 29 54 11 20 c8 8e  20 61 63 74 69 6f 6e 25  |1.)T. .. action%|
00006ec0  20 ca 0d 29 5e 15 20 c9  20 30 2c 33 3a 20 62 6d  | ..)^. . 0,3: bm|
00006ed0  61 74 63 68 25 3d 30 0d  29 68 1e 20 c9 20 31 2c  |atch%=0.)h. . 1,|
00006ee0  32 2c 35 2c 36 3a 20 62  6d 61 74 63 68 25 3d 25  |2,5,6: bmatch%=%|
00006ef0  31 3c 3c 32 31 0d 29 72  06 20 cb 0d 29 7c 36 20  |1<<21.)r. ..)|6 |
00006f00  c8 99 20 22 57 69 6d 70  5f 57 68 69 63 68 49 63  |.. "Wimp_WhichIc|
00006f10  6f 6e 22 2c 73 61 6d 70  6c 69 73 74 25 2c 61 64  |on",samplist%,ad|
00006f20  64 72 25 2c 6d 61 73 6b  25 2c 62 6d 61 74 63 68  |dr%,mask%,bmatch|
00006f30  25 0d 29 86 06 20 3a 0d  29 90 22 20 e7 20 61 63  |%.).. :.)." . ac|
00006f40  74 69 6f 6e 25 3d 32 20  84 20 61 63 74 69 6f 6e  |tion%=2 . action|
00006f50  25 3d 36 20 f2 6d 75 74  65 0d 29 9a 06 20 3a 0d  |%=6 .mute.).. :.|
00006f60  29 a4 12 20 e7 20 61 63  74 69 6f 6e 25 3d 32 20  |).. . action%=2 |
00006f70  8c 0d 29 ae 23 20 c8 95  20 21 61 64 64 72 25 3c  |..).# .. !addr%<|
00006f80  3e 2d 31 3a 61 64 64 72  25 2b 3d 34 3a 6e 25 2b  |>-1:addr%+=4:n%+|
00006f90  3d 31 3a ce 0d 29 b8 26  20 e7 20 6e 25 3d 6e 65  |=1:..).& . n%=ne|
00006fa0  78 74 25 20 f2 64 65 6c  65 74 65 5f 61 6c 6c 3a  |xt% .delete_all:|
00006fb0  61 63 74 69 6f 6e 25 3d  2d 31 0d 29 c2 13 20 61  |action%=-1.).. a|
00006fc0  64 64 72 25 3d 62 6c 6b  25 2b 32 35 36 0d 29 cc  |ddr%=blk%+256.).|
00006fd0  06 20 cd 0d 29 d6 06 20  3a 0d 29 e0 13 20 e7 20  |. ..).. :.).. . |
00006fe0  61 63 74 69 6f 6e 25 3e  2d 31 20 8c 0d 29 ea 12  |action%>-1 ..)..|
00006ff0  20 c8 95 20 21 61 64 64  72 25 3c 3e 2d 31 0d 29  | .. !addr%<>-1.)|
00007000  f4 11 20 c8 8e 20 61 63  74 69 6f 6e 25 20 ca 0d  |.. .. action% ..|
00007010  29 fe 34 20 c9 20 30 3a  20 f2 75 70 64 61 74 65  |).4 . 0: .update|
00007020  5f 69 63 6f 6e 28 73 61  6d 70 6c 69 73 74 25 2c  |_icon(samplist%,|
00007030  21 61 64 64 72 25 2c 6d  61 73 6b 25 2c 6d 61 73  |!addr%,mask%,mas|
00007040  6b 25 29 0d 2a 08 30 20  c9 20 31 3a 20 f2 75 70  |k%).*.0 . 1: .up|
00007050  64 61 74 65 5f 69 63 6f  6e 28 73 61 6d 70 6c 69  |date_icon(sampli|
00007060  73 74 25 2c 21 61 64 64  72 25 2c 30 2c 6d 61 73  |st%,!addr%,0,mas|
00007070  6b 25 29 0d 2a 12 20 20  c9 20 32 3a 20 f2 64 65  |k%).*.  . 2: .de|
00007080  6c 65 74 65 5f 73 61 6d  70 6c 65 28 21 61 64 64  |lete_sample(!add|
00007090  72 25 29 0d 2a 1c 20 20  c9 20 33 3a 20 f2 72 65  |r%).*.  . 3: .re|
000070a0  6e 75 6d 62 65 72 5f 69  63 6f 6e 28 21 61 64 64  |number_icon(!add|
000070b0  72 25 29 0d 2a 26 21 20  c9 20 35 3a 20 f2 69 6e  |r%).*&! . 5: .in|
000070c0  73 74 61 6c 6c 5f 73 61  6d 70 6c 65 28 21 61 64  |stall_sample(!ad|
000070d0  64 72 25 29 0d 2a 30 20  20 c9 20 36 3a 20 f2 72  |dr%).*0  . 6: .r|
000070e0  65 6d 6f 76 65 5f 73 61  6d 70 6c 65 28 21 61 64  |emove_sample(!ad|
000070f0  64 72 25 29 0d 2a 3a 06  20 cb 0d 2a 44 0d 20 61  |dr%).*:. ..*D. a|
00007100  64 64 72 25 2b 3d 34 0d  2a 4e 06 20 ce 0d 2a 58  |ddr%+=4.*N. ..*X|
00007110  06 20 cd 0d 2a 62 1e 20  e7 20 61 63 74 69 6f 6e  |. ..*b. . action|
00007120  25 3d 32 20 f2 72 65 69  6e 69 74 76 6f 69 63 65  |%=2 .reinitvoice|
00007130  73 0d 2a 6c 34 20 e7 20  61 63 74 69 6f 6e 25 3d  |s.*l4 . action%=|
00007140  32 20 84 20 61 63 74 69  6f 6e 25 3d 2d 31 20 f2  |2 . action%=-1 .|
00007150  75 70 64 61 74 65 73 61  6d 70 69 63 6f 6e 28 6e  |updatesampicon(n|
00007160  65 78 74 25 29 0d 2a 76  32 20 e7 20 61 63 74 69  |ext%).*v2 . acti|
00007170  6f 6e 25 3d 32 20 84 20  61 63 74 69 6f 6e 25 3d  |on%=2 . action%=|
00007180  36 20 84 20 61 63 74 69  6f 6e 25 3d 2d 31 20 f2  |6 . action%=-1 .|
00007190  72 65 73 74 6f 72 65 0d  2a 80 12 20 e7 20 61 63  |restore.*.. . ac|
000071a0  74 69 6f 6e 25 3d 33 20  8c 0d 2a 8a 21 20 f2 67  |tion%=3 ..*.! .g|
000071b0  65 74 5f 77 69 6e 64 6f  77 5f 73 74 61 74 65 28  |et_window_state(|
000071c0  73 61 6d 70 6c 69 73 74  25 29 0d 2a 94 22 20 e7  |samplist%).*." .|
000071d0  20 28 30 2d 28 6e 65 78  74 25 2a 34 34 29 29 3c  | (0-(next%*44))<|
000071e0  2d 28 79 31 25 2d 79 30  25 29 20 8c 0d 2a 9e 39  |-(y1%-y0%) ..*.9|
000071f0  20 21 62 6c 6b 25 3d 30  3a 62 6c 6b 25 21 34 3d  | !blk%=0:blk%!4=|
00007200  30 2d 28 6e 65 78 74 25  2a 34 34 29 3a 62 6c 6b  |0-(next%*44):blk|
00007210  25 21 38 3d 78 31 25 2d  78 30 25 3a 62 6c 6b 25  |%!8=x1%-x0%:blk%|
00007220  21 31 32 3d 30 0d 2a a8  06 20 cc 0d 2a b2 37 20  |!12=0.*.. ..*.7 |
00007230  21 62 6c 6b 25 3d 30 3a  62 6c 6b 25 21 34 3d 2d  |!blk%=0:blk%!4=-|
00007240  28 79 31 25 2d 79 30 25  29 3a 62 6c 6b 25 21 38  |(y1%-y0%):blk%!8|
00007250  3d 78 31 25 2d 78 30 25  3a 62 6c 6b 25 21 31 32  |=x1%-x0%:blk%!12|
00007260  3d 30 0d 2a bc 06 20 cd  0d 2a c6 27 20 c8 99 20  |=0.*.. ..*.' .. |
00007270  22 57 69 6d 70 5f 53 65  74 45 78 74 65 6e 74 22  |"Wimp_SetExtent"|
00007280  2c 73 61 6d 70 6c 69 73  74 25 2c 62 6c 6b 25 0d  |,samplist%,blk%.|
00007290  2a d0 12 20 e7 20 73 61  6d 70 6f 70 65 6e 25 20  |*.. . sampopen% |
000072a0  8c 0d 2a da 2d 20 c8 99  20 22 57 69 6d 70 5f 46  |..*.- .. "Wimp_F|
000072b0  6f 72 63 65 52 65 64 72  61 77 22 2c 2d 31 2c 78  |orceRedraw",-1,x|
000072c0  30 25 2c 79 30 25 2c 78  31 25 2c 79 31 25 0d 2a  |0%,y0%,x1%,y1%.*|
000072d0  e4 2d 20 f2 67 65 74 5f  77 69 6e 64 6f 77 5f 69  |.- .get_window_i|
000072e0  6e 66 6f 28 73 61 6d 70  6c 69 73 74 25 29 3a f2  |nfo(samplist%):.|
000072f0  6f 70 65 6e 5f 77 69 6e  64 6f 77 0d 2a ee 06 20  |open_window.*.. |
00007300  cd 0d 2a f8 06 20 cd 0d  2b 02 06 20 e1 0d 2b 0c  |..*.. ..+.. ..+.|
00007310  04 0d 2b 16 11 20 dd f2  64 65 6c 65 74 65 5f 61  |..+.. ..delete_a|
00007320  6c 6c 0d 2b 20 10 20 e7  20 6e 65 78 74 25 3d 30  |ll.+ . . next%=0|
00007330  20 e1 0d 2b 2a 14 20 21  62 6c 6b 25 3d 73 61 6d  | ..+*. !blk%=sam|
00007340  70 6c 69 73 74 25 0d 2b  34 15 20 e3 20 4e 25 3d  |plist%.+4. . N%=|
00007350  30 20 b8 20 6e 65 78 74  25 2d 31 0d 2b 3e 0e 20  |0 . next%-1.+>. |
00007360  62 6c 6b 25 21 34 3d 4e  25 0d 2b 48 1f 20 c8 99  |blk%!4=N%.+H. ..|
00007370  20 22 57 69 6d 70 5f 44  65 6c 65 74 65 49 63 6f  | "Wimp_DeleteIco|
00007380  6e 22 2c 2c 62 6c 6b 25  0d 2b 52 2c 20 e7 20 3f  |n",,blk%.+R, . ?|
00007390  28 63 6f 64 65 25 2b 26  39 44 30 2b 4e 25 29 3e  |(code%+&9D0+N%)>|
000073a0  30 20 f2 72 65 6d 6f 76  65 5f 73 61 6d 70 6c 65  |0 .remove_sample|
000073b0  28 4e 25 29 0d 2b 5c 06  20 ed 0d 2b 66 35 20 70  |(N%).+\. ..+f5 p|
000073c0  61 74 68 6e 61 6d 65 24  28 29 3d 22 22 3a 73 69  |athname$()="":si|
000073d0  7a 65 25 28 29 3d 30 3a  74 79 70 65 25 28 29 3d  |ze%()=0:type%()=|
000073e0  30 3a 73 61 6d 70 61 64  64 72 25 28 29 3d 30 0d  |0:sampaddr%()=0.|
000073f0  2b 70 32 20 e7 20 73 61  6d 70 6c 65 62 61 73 65  |+p2 . samplebase|
00007400  25 3e 30 20 c8 99 20 22  4f 53 5f 4d 6f 64 75 6c  |%>0 .. "OS_Modul|
00007410  65 22 2c 37 2c 2c 73 61  6d 70 6c 65 62 61 73 65  |e",7,,samplebase|
00007420  25 0d 2b 7a 28 20 6e 65  78 74 25 3d 30 3a 73 61  |%.+z( next%=0:sa|
00007430  6d 70 6c 65 62 61 73 65  25 3d 30 3a 73 61 6d 70  |mplebase%=0:samp|
00007440  6f 66 66 73 65 74 25 3d  30 0d 2b 84 06 20 e1 0d  |offset%=0.+.. ..|
00007450  2b 8e 04 0d 2b 98 1b 20  dd f2 75 70 64 61 74 65  |+...+.. ..update|
00007460  69 6e 66 6f 62 6f 78 28  69 63 6f 6e 25 29 0d 2b  |infobox(icon%).+|
00007470  a2 0f 20 ea 20 61 24 2c  62 24 2c 63 24 0d 2b ac  |.. . a$,b$,c$.+.|
00007480  2c 20 f2 73 65 74 5f 69  63 6f 6e 28 73 61 6d 70  |, .set_icon(samp|
00007490  69 6e 66 6f 25 2c 38 2c  70 61 74 68 6e 61 6d 65  |info%,8,pathname|
000074a0  24 28 69 63 6f 6e 25 29  29 0d 2b b6 2a 20 f2 73  |$(icon%)).+.* .s|
000074b0  65 74 5f 69 63 6f 6e 28  73 61 6d 70 69 6e 66 6f  |et_icon(sampinfo|
000074c0  25 2c 37 2c c3 20 73 69  7a 65 25 28 69 63 6f 6e  |%,7,. size%(icon|
000074d0  25 29 29 0d 2b c0 17 20  62 24 3d c3 20 7e 74 79  |%)).+.. b$=. ~ty|
000074e0  70 65 25 28 69 63 6f 6e  25 29 0d 2b ca 0c 20 c8  |pe%(icon%).+.. .|
000074f0  8e 20 62 24 20 ca 0d 2b  d4 19 20 c9 20 22 46 46  |. b$ ..+.. . "FF|
00007500  41 22 3a 20 61 24 3d 22  4d 6f 64 75 6c 65 22 0d  |A": a$="Module".|
00007510  2b de 16 20 c9 20 22 44  46 39 22 3a 20 61 24 3d  |+.. . "DF9": a$=|
00007520  22 45 4d 52 22 0d 2b e8  1f 20 c9 20 22 43 42 35  |"EMR".+.. . "CB5|
00007530  22 3a 20 61 24 3d 22 53  6f 75 6e 64 54 72 61 63  |": a$="SoundTrac|
00007540  6b 65 72 22 0d 2b f2 19  20 c9 20 22 45 44 30 22  |ker".+.. . "ED0"|
00007550  3a 20 61 24 3d 22 44 53  45 64 69 74 22 0d 2b fc  |: a$="DSEdit".+.|
00007560  1e 20 c9 20 22 46 46 44  22 3a 20 61 24 3d 22 4c  |. . "FFD": a$="L|
00007570  6f 67 61 72 69 74 68 6d  69 63 22 0d 2c 06 1b 20  |ogarithmic".,.. |
00007580  c9 20 22 44 33 43 22 3a  20 61 24 3d 22 41 72 6d  |. "D3C": a$="Arm|
00007590  61 64 65 75 73 22 0d 2c  10 06 20 cb 0d 2c 1a 1e  |adeus".,.. ..,..|
000075a0  20 f2 73 65 74 5f 69 63  6f 6e 28 73 61 6d 70 69  | .set_icon(sampi|
000075b0  6e 66 6f 25 2c 33 2c 61  24 29 0d 2c 24 2f 20 e7  |nfo%,3,a$).,$/ .|
000075c0  20 3f 28 63 6f 64 65 25  2b 26 39 44 30 2b 69 63  | ?(code%+&9D0+ic|
000075d0  6f 6e 25 29 3e 30 20 63  24 3d 22 59 65 73 22 20  |on%)>0 c$="Yes" |
000075e0  8b 20 63 24 3d 22 4e 6f  22 0d 2c 2e 21 20 e7 20  |. c$="No".,.! . |
000075f0  74 79 70 65 25 28 69 63  6f 6e 25 29 3d 26 46 46  |type%(icon%)=&FF|
00007600  41 20 63 24 3d 22 59 65  73 22 0d 2c 38 1f 20 f2  |A c$="Yes".,8. .|
00007610  73 65 74 5f 69 63 6f 6e  28 73 61 6d 70 69 6e 66  |set_icon(sampinf|
00007620  6f 25 2c 31 32 2c 63 24  29 0d 2c 42 22 20 f2 67  |o%,12,c$).,B" .g|
00007630  65 74 5f 69 63 6f 6e 5f  73 74 61 74 65 28 73 61  |et_icon_state(sa|
00007640  6d 70 69 6e 66 6f 25 2c  31 33 29 0d 2c 4c 1f 20  |mpinfo%,13).,L. |
00007650  c8 99 20 22 57 69 6d 70  5f 44 65 6c 65 74 65 49  |.. "Wimp_DeleteI|
00007660  63 6f 6e 22 2c 2c 62 6c  6b 25 0d 2c 56 2b 20 62  |con",,blk%.,V+ b|
00007670  6c 6b 25 21 34 3d 73 61  6d 70 69 6e 66 6f 25 3a  |lk%!4=sampinfo%:|
00007680  24 28 62 6c 6b 25 2b 32  38 29 3d 22 66 69 6c 65  |$(blk%+28)="file|
00007690  5f 22 2b 62 24 0d 2c 60  21 20 c8 99 20 22 57 69  |_"+b$.,`! .. "Wi|
000076a0  6d 70 5f 43 72 65 61 74  65 49 63 6f 6e 22 2c 2c  |mp_CreateIcon",,|
000076b0  62 6c 6b 25 2b 34 0d 2c  6a 06 20 e1 0d 2c 74 04  |blk%+4.,j. ..,t.|
000076c0  0d 2c 7e 15 20 dd a4 69  63 6f 6e 73 5f 73 65 6c  |.,~. ..icons_sel|
000076d0  65 63 74 65 64 0d 2c 88  0f 20 ea 20 6e 25 3a 6e  |ected.,.. . n%:n|
000076e0  25 3d 2d 31 0d 2c 92 39  20 c8 99 20 22 57 69 6d  |%=-1.,.9 .. "Wim|
000076f0  70 5f 57 68 69 63 68 49  63 6f 6e 22 2c 73 61 6d  |p_WhichIcon",sam|
00007700  70 6c 69 73 74 25 2c 62  6c 6b 25 2b 31 32 38 2c  |plist%,blk%+128,|
00007710  25 31 3c 3c 32 31 2c 25  31 3c 3c 32 31 0d 2c 9c  |%1<<21,%1<<21.,.|
00007720  24 20 f5 3a 6e 25 2b 3d  31 3a fd 20 21 28 62 6c  |$ .:n%+=1:. !(bl|
00007730  6b 25 2b 31 32 38 2b 28  6e 25 2a 34 29 29 3d 2d  |k%+128+(n%*4))=-|
00007740  31 0d 2c a6 08 20 3d 6e  25 0d 2c b0 04 0d 2c ba  |1.,.. =n%.,...,.|
00007750  16 20 dd f2 6d 65 73 73  61 67 65 5f 62 6f 78 28  |. ..message_box(|
00007760  61 25 29 0d 2c c4 2a 20  f2 70 6f 70 75 70 5f 77  |a%).,.* .popup_w|
00007770  69 6e 64 6f 77 28 6d 65  73 73 61 67 65 25 2c 32  |indow(message%,2|
00007780  29 3a 6d 61 63 74 69 6f  6e 25 3d 61 25 0d 2c ce  |):maction%=a%.,.|
00007790  22 20 f2 67 65 74 5f 77  69 6e 64 6f 77 5f 6f 75  |" .get_window_ou|
000077a0  74 6c 69 6e 65 28 6d 65  73 73 61 67 65 25 29 0d  |tline(message%).|
000077b0  2c d8 26 20 c8 97 20 c8  93 20 78 30 25 2c 79 30  |,.& .. .. x0%,y0|
000077c0  25 2c 78 31 25 2d 78 30  25 2d 32 2c 79 31 25 2d  |%,x1%-x0%-2,y1%-|
000077d0  79 30 25 2d 34 0d 2c e2  27 20 c8 99 20 22 4f 53  |y0%-4.,.' .. "OS|
000077e0  5f 42 79 74 65 22 2c 26  43 39 2c 30 2c 26 46 46  |_Byte",&C9,0,&FF|
000077f0  20 b8 20 2c 6b 65 79 73  74 61 74 25 0d 2c ec 19  | . ,keystat%.,..|
00007800  20 c8 99 20 22 4f 53 5f  42 79 74 65 22 2c 26 43  | .. "OS_Byte",&C|
00007810  39 2c 31 2c 30 0d 2c f6  06 20 e1 0d 2d 00 04 0d  |9,1,0.,.. ..-...|
00007820  2d 0a 19 20 dd f2 6b 65  79 62 6f 61 72 64 64 61  |-.. ..keyboardda|
00007830  74 61 69 6e 28 66 24 29  0d 2d 14 3d 20 ea 20 66  |tain(f$).-.= . f|
00007840  25 2c 6f 25 2c 6c 25 2c  61 24 2c 62 24 2c 6e 25  |%,o%,l%,a$,b$,n%|
00007850  2c 41 25 2c 73 76 6f 6c  25 2c 73 73 70 65 61 6b  |,A%,svol%,sspeak|
00007860  65 72 25 2c 65 25 2c 69  25 2c 73 24 2c 73 6b 25  |er%,e%,i%,s$,sk%|
00007870  2c 6c 65 6e 25 0d 2d 1e  16 20 c8 99 20 22 48 6f  |,len%.-.. .. "Ho|
00007880  75 72 67 6c 61 73 73 5f  4f 6e 22 0d 2d 28 30 20  |urglass_On".-(0 |
00007890  f2 63 6c 6f 73 65 5f 77  69 6e 64 6f 77 28 63 6f  |.close_window(co|
000078a0  6e 25 29 3a f2 63 6c 6f  73 65 5f 77 69 6e 64 6f  |n%):.close_windo|
000078b0  77 28 73 61 6d 70 6c 65  73 25 29 0d 2d 32 19 20  |w(samples%).-2. |
000078c0  f2 63 6c 6f 73 65 5f 77  69 6e 64 6f 77 28 6d 61  |.close_window(ma|
000078d0  69 6e 25 29 0d 2d 3c 1f  20 f2 6d 75 74 65 3a f2  |in%).-<. .mute:.|
000078e0  64 65 6c 65 74 65 5f 61  6c 6c 3a f2 72 65 73 74  |delete_all:.rest|
000078f0  6f 72 65 0d 2d 46 12 20  73 6b 25 3d 73 68 6f 77  |ore.-F. sk%=show|
00007900  6b 65 79 73 25 0d 2d 50  0c 20 6d 76 25 28 29 3d  |keys%.-P. mv%()=|
00007910  30 0d 2d 5a 17 20 6c 6f  61 64 65 64 76 6f 69 63  |0.-Z. loadedvoic|
00007920  65 73 24 28 29 3d 22 22  0d 2d 64 06 20 3a 0d 2d  |es$()="".-d. :.-|
00007930  6e 0d 20 41 25 3d 8e 28  66 24 29 0d 2d 78 0d 20  |n. A%=.(f$).-x. |
00007940  e8 23 20 41 25 2c 61 24  0d 2d 82 0d 20 e8 23 20  |.# A%,a$.-.. .# |
00007950  41 25 2c 62 24 0d 2d 8c  22 20 73 61 76 65 63 68  |A%,b$.-." savech|
00007960  6f 69 63 65 73 25 3d a4  6e 65 67 61 74 69 76 65  |oices%=.negative|
00007970  28 9a 23 20 41 25 29 0d  2d 96 17 20 e7 20 73 61  |(.# A%).-.. . sa|
00007980  76 65 63 68 6f 69 63 65  73 25 3d b9 20 8c 0d 2d  |vechoices%=. ..-|
00007990  a0 1f 20 61 75 74 6f 69  6e 73 74 25 3d a4 6e 65  |.. autoinst%=.ne|
000079a0  67 61 74 69 76 65 28 9a  23 20 41 25 29 0d 2d aa  |gative(.# A%).-.|
000079b0  1a 20 6f 63 74 25 3d a4  6e 65 67 61 74 69 76 65  |. oct%=.negative|
000079c0  28 9a 23 20 41 25 29 0d  2d b4 1c 20 74 72 61 6e  |(.# A%).-.. tran|
000079d0  73 25 3d a4 6e 65 67 61  74 69 76 65 28 9a 23 20  |s%=.negative(.# |
000079e0  41 25 29 0d 2d be 10 20  63 68 61 6e 25 3d 9a 23  |A%).-.. chan%=.#|
000079f0  20 41 25 0d 2d c8 10 20  64 75 72 61 25 3d 9a 23  | A%.-.. dura%=.#|
00007a00  20 41 25 0d 2d d2 1f 20  73 68 6f 77 6b 65 79 73  | A%.-.. showkeys|
00007a10  25 3d a4 6e 65 67 61 74  69 76 65 28 9a 23 20 41  |%=.negative(.# A|
00007a20  25 29 0d 2d dc 1d 20 76  6f 6c 75 6d 65 25 3d a4  |%).-.. volume%=.|
00007a30  6e 65 67 61 74 69 76 65  28 9a 23 20 41 25 29 0d  |negative(.# A%).|
00007a40  2d e6 11 20 76 6c 73 65  6c 25 3d 9a 23 20 41 25  |-.. vlsel%=.# A%|
00007a50  0d 2d f0 12 20 e8 23 20  41 25 2c 74 75 6e 6f 63  |.-.. .# A%,tunoc|
00007a60  74 25 0d 2d fa 13 20 e8  23 20 41 25 2c 74 75 6e  |t%.-.. .# A%,tun|
00007a70  73 65 6d 69 25 0d 2e 04  10 20 73 76 6f 6c 25 3d  |semi%.... svol%=|
00007a80  9a 23 20 41 25 0d 2e 0e  14 20 73 73 70 65 61 6b  |.# A%.... sspeak|
00007a90  65 72 25 3d 9a 23 20 41  25 0d 2e 18 0f 20 e3 20  |er%=.# A%.... . |
00007aa0  6e 25 3d 30 20 b8 20 37  0d 2e 22 24 20 73 73 74  |n%=0 . 7.."$ sst|
00007ab0  65 72 65 6f 25 28 6e 25  29 3d a4 6e 65 67 61 74  |ereo%(n%)=.negat|
00007ac0  69 76 65 28 9a 23 20 41  25 29 3a ed 0d 2e 2c 1d  |ive(.# A%):...,.|
00007ad0  20 73 61 6c 6f 6e 65 25  3d a4 6e 65 67 61 74 69  | salone%=.negati|
00007ae0  76 65 28 9a 23 20 41 25  29 0d 2e 36 0f 20 e3 20  |ve(.# A%)..6. . |
00007af0  6e 25 3d 30 20 b8 20 36  0d 2e 40 14 20 cf 23 20  |n%=0 . 6..@. .# |
00007b00  41 25 3d 8f 23 20 41 25  2b 31 3a ed 0d 2e 4a 06  |A%=.# A%+1:...J.|
00007b10  20 cc 0d 2e 54 10 20 e3  20 6e 25 3d 30 20 b8 20  | ...T. . n%=0 . |
00007b20  33 30 0d 2e 5e 14 20 cf  23 20 41 25 3d 8f 23 20  |30..^. .# A%=.# |
00007b30  41 25 2b 31 3a ed 0d 2e  68 06 20 cd 0d 2e 72 0d  |A%+1:...h. ...r.|
00007b40  20 69 25 3d 9a 23 20 41  25 0d 2e 7c 0e 20 e7 20  | i%=.# A%..|. . |
00007b50  69 25 3c 3e 30 20 8c 0d  2e 86 10 20 e3 20 6e 25  |i%<>0 ..... . n%|
00007b60  3d 31 20 b8 20 69 25 0d  2e 90 0d 20 e8 23 20 41  |=1 . i%.... .# A|
00007b70  25 2c 73 24 0d 2e 9a 16  20 e8 23 20 41 25 2c 74  |%,s$.... .# A%,t|
00007b80  79 70 65 25 28 6e 25 2d  31 29 0d 2e a4 1b 20 3f  |ype%(n%-1).... ?|
00007b90  28 73 6c 6f 74 62 6c 6b  25 2b 6e 25 2d 31 29 3d  |(slotblk%+n%-1)=|
00007ba0  9a 23 20 41 25 0d 2e ae  17 20 70 61 74 68 6e 61  |.# A%.... pathna|
00007bb0  6d 65 24 28 6e 25 2d 31  29 3d 73 24 0d 2e b8 06  |me$(n%-1)=s$....|
00007bc0  20 ed 0d 2e c2 06 20 cd  0d 2e cc 0a 20 d9 23 20  | ..... ..... .# |
00007bd0  41 25 0d 2e d6 06 20 3a  0d 2e e0 24 20 f2 73 65  |A%.... :...$ .se|
00007be0  74 5f 69 63 6f 6e 28 74  75 6e 69 6e 67 25 2c 36  |t_icon(tuning%,6|
00007bf0  2c c3 28 74 75 6e 6f 63  74 25 29 29 0d 2e ea 25  |,.(tunoct%))...%|
00007c00  20 f2 73 65 74 5f 69 63  6f 6e 28 74 75 6e 69 6e  | .set_icon(tunin|
00007c10  67 25 2c 39 2c c3 28 74  75 6e 73 65 6d 69 25 29  |g%,9,.(tunsemi%)|
00007c20  29 0d 2e f4 0e 20 2a 54  75 6e 69 6e 67 20 30 0d  |).... *Tuning 0.|
00007c30  2e fe 31 20 ff 20 22 54  75 6e 69 6e 67 20 22 2b  |..1 . "Tuning "+|
00007c40  c3 28 28 74 75 6e 6f 63  74 25 2a 34 30 39 36 29  |.((tunoct%*4096)|
00007c50  2b 28 74 75 6e 73 65 6d  69 25 2a 33 34 31 29 29  |+(tunsemi%*341))|
00007c60  0d 2f 08 15 20 f2 75 70  64 61 74 65 76 6f 69 63  |./.. .updatevoic|
00007c70  65 6c 69 73 74 0d 2f 12  06 20 3a 0d 2f 1c 38 20  |elist./.. :./.8 |
00007c80  77 69 6e 6d 65 6e 75 25  21 33 37 32 3d a4 53 70  |winmenu%!372=.Sp|
00007c90  65 63 49 74 65 6d 28 73  61 76 65 63 68 6f 69 63  |ecItem(savechoic|
00007ca0  65 73 25 2c 77 69 6e 6d  65 6e 75 25 21 33 37 32  |es%,winmenu%!372|
00007cb0  2c 30 29 0d 2f 26 17 20  e7 20 73 61 76 65 63 68  |,0)./&. . savech|
00007cc0  6f 69 63 65 73 25 3d b9  20 8c 0d 2f 30 35 20 77  |oices%=. ../05 w|
00007cd0  69 6e 6d 65 6e 75 25 21  33 34 38 3d a4 53 70 65  |inmenu%!348=.Spe|
00007ce0  63 49 74 65 6d 28 61 75  74 6f 69 6e 73 74 25 2c  |cItem(autoinst%,|
00007cf0  77 69 6e 6d 65 6e 75 25  21 33 34 38 2c 30 29 0d  |winmenu%!348,0).|
00007d00  2f 3a 33 20 77 69 6e 6d  65 6e 75 25 21 33 39 36  |/:3 winmenu%!396|
00007d10  3d a4 53 70 65 63 49 74  65 6d 28 73 61 6c 6f 6e  |=.SpecItem(salon|
00007d20  65 25 2c 77 69 6e 6d 65  6e 75 25 21 33 39 36 2c  |e%,winmenu%!396,|
00007d30  30 29 0d 2f 44 1f 20 f2  73 65 74 5f 69 63 6f 6e  |0)./D. .set_icon|
00007d40  28 63 6f 6e 25 2c 32 33  2c c3 28 6f 63 74 25 29  |(con%,23,.(oct%)|
00007d50  29 0d 2f 4e 21 20 f2 73  65 74 5f 69 63 6f 6e 28  |)./N! .set_icon(|
00007d60  63 6f 6e 25 2c 32 36 2c  c3 28 74 72 61 6e 73 25  |con%,26,.(trans%|
00007d70  29 29 0d 2f 58 20 20 f2  73 65 74 5f 69 63 6f 6e  |))./X  .set_icon|
00007d80  28 63 6f 6e 25 2c 33 32  2c c3 28 63 68 61 6e 25  |(con%,32,.(chan%|
00007d90  29 29 0d 2f 62 20 20 f2  73 65 74 5f 69 63 6f 6e  |))./b  .set_icon|
00007da0  28 63 6f 6e 25 2c 33 31  2c c3 28 64 75 72 61 25  |(con%,31,.(dura%|
00007db0  29 29 0d 2f 6c 1a 20 e7  20 73 6b 25 20 82 20 73  |))./l. . sk% . s|
00007dc0  68 6f 77 6b 65 79 73 25  3d b9 20 8c 0d 2f 76 43  |howkeys%=. ../vC|
00007dd0  20 73 68 6f 77 6b 65 79  73 25 3d 73 6b 25 3a f2  | showkeys%=sk%:.|
00007de0  74 6f 67 67 6c 65 63 68  61 72 73 3a f2 75 70 64  |togglechars:.upd|
00007df0  61 74 65 5f 69 63 6f 6e  28 63 6f 6e 25 2c 33 34  |ate_icon(con%,34|
00007e00  2c 25 31 3c 3c 32 31 2c  25 30 3c 3c 32 31 29 0d  |,%1<<21,%0<<21).|
00007e10  2f 80 06 20 cd 0d 2f 8a  1d 20 f2 67 65 74 5f 69  |/.. ../.. .get_i|
00007e20  63 6f 6e 5f 73 74 61 74  65 28 63 6f 6e 25 2c 31  |con_state(con%,1|
00007e30  39 29 0d 2f 94 37 20 62  6c 6b 25 21 31 36 3d 35  |9)./.7 blk%!16=5|
00007e40  38 2d 28 32 33 2a 76 6f  6c 75 6d 65 25 29 3a c8  |8-(23*volume%):.|
00007e50  99 20 22 57 69 6d 70 5f  44 65 6c 65 74 65 49 63  |. "Wimp_DeleteIc|
00007e60  6f 6e 22 2c 2c 62 6c 6b  25 0d 2f 9e 2d 20 62 6c  |on",,blk%./.- bl|
00007e70  6b 25 21 34 3d 63 6f 6e  25 3a c8 99 20 22 57 69  |k%!4=con%:.. "Wi|
00007e80  6d 70 5f 43 72 65 61 74  65 49 63 6f 6e 22 2c 2c  |mp_CreateIcon",,|
00007e90  62 6c 6b 25 2b 34 0d 2f  a8 06 20 cd 0d 2f b2 06  |blk%+4./.. ../..|
00007ea0  20 3a 0d 2f bc 0d 20 e7  20 69 25 3e 30 20 8c 0d  | :./.. . i%>0 ..|
00007eb0  2f c6 0d 20 66 25 3d 30  3a ea 20 85 0d 2f d0 10  |/.. f%=0:. ../..|
00007ec0  20 e3 20 6e 25 3d 31 20  b8 20 69 25 0d 2f da 38  | . n%=1 . i%./.8|
00007ed0  20 ee 20 85 20 ea 20 66  25 2b 3d 31 3a 70 61 74  | . . . f%+=1:pat|
00007ee0  68 6e 61 6d 65 24 28 6e  25 2d 31 29 3d 22 22 3a  |hname$(n%-1)="":|
00007ef0  74 79 70 65 25 28 6e 25  2d 31 29 3d 30 3a e5 20  |type%(n%-1)=0:. |
00007f00  8d 54 56 70 0d 2f e4 34  20 66 69 6c 65 6e 61 6d  |.TVp./.4 filenam|
00007f10  65 24 3d 70 61 74 68 6e  61 6d 65 24 28 6e 25 2d  |e$=pathname$(n%-|
00007f20  31 29 3a 66 69 6c 65 74  79 70 65 25 3d 74 79 70  |1):filetype%=typ|
00007f30  65 25 28 6e 25 2d 31 29  0d 2f ee 2c 20 c8 99 20  |e%(n%-1)./., .. |
00007f40  22 58 4f 53 5f 46 69 6c  65 22 2c 31 37 2c 66 69  |"XOS_File",17,fi|
00007f50  6c 65 6e 61 6d 65 24 20  b8 20 6f 25 2c 2c 2c 2c  |lename$ . o%,,,,|
00007f60  6c 65 6e 25 0d 2f f8 22  20 e7 20 6f 25 3d 30 20  |len%./." . o%=0 |
00007f70  85 20 31 30 30 2c 22 46  69 6c 65 20 6e 6f 74 20  |. 100,"File not |
00007f80  66 6f 75 6e 64 22 0d 30  02 35 20 e7 20 a4 65 78  |found".0.5 . .ex|
00007f90  74 65 6e 64 28 6c 65 6e  25 29 3d b9 20 85 20 31  |tend(len%)=. . 1|
00007fa0  30 30 2c 22 4e 6f 74 20  65 6e 6f 75 67 68 20 72  |00,"Not enough r|
00007fb0  6f 6f 6d 20 69 6e 20 52  4d 41 22 0d 30 0c 19 20  |oom in RMA".0.. |
00007fc0  f2 6c 6f 61 64 5f 73 61  6d 70 6c 65 28 6c 65 6e  |.load_sample(len|
00007fd0  25 2c a3 29 0d 30 16 06  20 ed 0d 30 20 08 20 f7  |%,.).0.. ..0 . .|
00007fe0  20 85 0d 30 2a 3a 20 e7  20 66 25 3d 31 20 f2 72  | ..0*: . f%=1 .r|
00007ff0  65 70 6f 72 74 5f 65 72  72 28 22 46 61 69 6c 65  |eport_err("Faile|
00008000  64 20 74 6f 20 6c 6f 61  64 20 6f 6e 65 20 73 61  |d to load one sa|
00008010  6d 70 6c 65 22 2c 31 30  30 2c 9e 29 0d 30 34 3f  |mple",100,.).04?|
00008020  20 e7 20 66 25 3e 31 20  f2 72 65 70 6f 72 74 5f  | . f%>1 .report_|
00008030  65 72 72 28 22 46 61 69  6c 65 64 20 74 6f 20 6c  |err("Failed to l|
00008040  6f 61 64 20 22 2b c3 66  25 2b 22 20 73 61 6d 70  |oad "+.f%+" samp|
00008050  6c 65 73 22 2c 31 30 30  2c 9e 29 0d 30 3e 06 20  |les",100,.).0>. |
00008060  3a 0d 30 48 0d 20 66 25  3d 30 3a ea 20 85 0d 30  |:.0H. f%=0:. ..0|
00008070  52 12 20 e3 20 6e 25 3d  30 20 b8 20 69 25 2d 31  |R. . n%=0 . i%-1|
00008080  0d 30 5c 17 20 ee 20 85  20 ea 20 66 25 2b 3d 31  |.0\. . . . f%+=1|
00008090  3a e5 20 8d 74 76 70 0d  30 66 13 20 6f 25 3d 73  |:. .tvp.0f. o%=s|
000080a0  6c 6f 74 62 6c 6b 25 3f  6e 25 0d 30 70 0d 20 e7  |lotblk%?n%.0p. .|
000080b0  20 6f 25 3e 30 20 8c 0d  30 7a 1b 20 20 e7 20 70  | o%>0 ..0z.  . p|
000080c0  61 74 68 6e 61 6d 65 24  28 6e 25 29 3c 3e 22 22  |athname$(n%)<>""|
000080d0  20 8c 0d 30 84 3f 20 20  20 e7 20 a4 69 6e 73 74  | ..0.?   . .inst|
000080e0  61 6c 6c 5f 69 6e 5f 73  6c 6f 74 28 6e 25 2c 6f  |all_in_slot(n%,o|
000080f0  25 29 3d a3 20 85 20 31  30 30 2c 22 53 61 6d 70  |%)=. . 100,"Samp|
00008100  6c 65 20 73 6c 6f 74 20  6f 63 63 75 70 69 65 64  |le slot occupied|
00008110  22 0d 30 8e 07 20 20 cc  0d 30 98 0c 20 20 20 66  |".0..  ..0..   f|
00008120  25 2b 3d 31 0d 30 a2 07  20 20 cd 0d 30 ac 06 20  |%+=1.0..  ..0.. |
00008130  cd 0d 30 b6 06 20 ed 0d  30 c0 08 20 f7 20 85 0d  |..0.. ..0.. . ..|
00008140  30 ca 3d 20 e7 20 66 25  3d 31 20 f2 72 65 70 6f  |0.= . f%=1 .repo|
00008150  72 74 5f 65 72 72 28 22  46 61 69 6c 65 64 20 74  |rt_err("Failed t|
00008160  6f 20 69 6e 73 74 61 6c  6c 20 6f 6e 65 20 73 61  |o install one sa|
00008170  6d 70 6c 65 22 2c 31 30  30 2c 9e 29 0d 30 d4 42  |mple",100,.).0.B|
00008180  20 e7 20 66 25 3e 31 20  f2 72 65 70 6f 72 74 5f  | . f%>1 .report_|
00008190  65 72 72 28 22 46 61 69  6c 65 64 20 74 6f 20 69  |err("Failed to i|
000081a0  6e 73 74 61 6c 6c 20 22  2b c3 66 25 2b 22 20 73  |nstall "+.f%+" s|
000081b0  61 6d 70 6c 65 73 22 2c  31 30 30 2c 9e 29 0d 30  |amples",100,.).0|
000081c0  de 06 20 cd 0d 30 e8 06  20 3a 0d 30 f2 25 20 e7  |.. ..0.. :.0.% .|
000081d0  20 66 24 3d 22 3c 57 69  6d 70 24 53 63 72 61 70  | f$="<Wimp$Scrap|
000081e0  3e 22 20 66 24 3d 6c 65  61 66 6e 61 6d 65 24 0d  |>" f$=leafname$.|
000081f0  30 fc 1e 20 f2 75 70 64  61 74 65 5f 74 69 74 6c  |0.. .update_titl|
00008200  65 28 6d 61 69 6e 25 2c  30 2c 66 24 29 0d 31 06  |e(main%,0,f$).1.|
00008210  25 20 c8 99 20 22 57 69  6d 70 5f 47 65 74 43 61  |% .. "Wimp_GetCa|
00008220  72 65 74 50 6f 73 69 74  69 6f 6e 22 2c 2c 62 6c  |retPosition",,bl|
00008230  6b 25 0d 31 10 1b 20 e7  20 21 62 6c 6b 25 3d 2d  |k%.1.. . !blk%=-|
00008240  31 20 6f 25 3d b9 20 8b  20 6f 25 3d a3 0d 31 1a  |1 o%=. . o%=..1.|
00008250  27 20 f2 70 6f 70 75 70  5f 77 69 6e 64 6f 77 28  |' .popup_window(|
00008260  6d 61 69 6e 25 2c 31 29  3a 6d 61 69 6e 6f 70 65  |main%,1):mainope|
00008270  6e 25 3d b9 0d 31 24 10  20 e7 20 6f 25 20 f2 67  |n%=..1$. . o% .g|
00008280  65 74 69 66 0d 31 2e 0f  20 63 68 61 6e 67 65 64  |etif.1.. changed|
00008290  25 3d a3 0d 31 38 31 20  e7 20 73 63 72 61 70 25  |%=..181 . scrap%|
000082a0  3c 3e 30 20 ff 20 22 44  65 6c 65 74 65 20 3c 57  |<>0 . "Delete <W|
000082b0  69 6d 70 24 53 63 72 61  70 3e 22 3a 73 63 72 61  |imp$Scrap>":scra|
000082c0  70 25 3d 30 0d 31 42 17  20 c8 99 20 22 48 6f 75  |p%=0.1B. .. "Hou|
000082d0  72 67 6c 61 73 73 5f 4f  66 66 22 0d 31 4c 06 20  |rglass_Off".1L. |
000082e0  e1 0d 31 56 04 0d 31 60  13 20 dd f2 64 61 74 61  |..1V..1`. ..data|
000082f0  6c 6f 61 64 5f 61 63 6b  0d 31 6a 29 20 6d 65 73  |load_ack.1j) mes|
00008300  73 62 6c 6b 25 21 31 32  3d 6d 65 73 73 62 6c 6b  |sblk%!12=messblk|
00008310  25 21 38 3a 6d 65 73 73  62 6c 6b 25 21 31 36 3d  |%!8:messblk%!16=|
00008320  34 0d 31 74 31 20 c8 99  20 22 57 69 6d 70 5f 53  |4.1t1 .. "Wimp_S|
00008330  65 6e 64 4d 65 73 73 61  67 65 22 2c 31 37 2c 6d  |endMessage",17,m|
00008340  65 73 73 62 6c 6b 25 2c  6d 65 73 73 62 6c 6b 25  |essblk%,messblk%|
00008350  21 34 0d 31 7e 06 20 e1  0d 31 88 04 0d 31 92 16  |!4.1~. ..1...1..|
00008360  20 dd f2 63 68 65 63 6b  63 68 61 6e 67 65 28 61  | ..checkchange(a|
00008370  25 29 0d 31 9c 0d 20 e7  20 61 25 3d b9 20 8c 0d  |%).1.. . a%=. ..|
00008380  31 a6 17 20 e7 20 73 61  76 65 63 68 6f 69 63 65  |1.. . savechoice|
00008390  73 25 3d b9 20 8c 0d 31  b0 36 20 e7 20 63 68 61  |s%=. ..1.6 . cha|
000083a0  6e 67 65 64 25 3d a3 20  63 68 61 6e 67 65 64 25  |nged%=. changed%|
000083b0  3d b9 3a f2 75 70 64 61  74 65 5f 74 69 74 6c 65  |=.:.update_title|
000083c0  28 6d 61 69 6e 25 2c 32  2c 22 22 29 0d 31 ba 06  |(main%,2,"").1..|
000083d0  20 cd 0d 31 c4 06 20 cc  0d 31 ce 36 20 e7 20 63  | ..1.. ..1.6 . c|
000083e0  68 61 6e 67 65 64 25 3d  a3 20 63 68 61 6e 67 65  |hanged%=. change|
000083f0  64 25 3d b9 3a f2 75 70  64 61 74 65 5f 74 69 74  |d%=.:.update_tit|
00008400  6c 65 28 6d 61 69 6e 25  2c 32 2c 22 22 29 0d 31  |le(main%,2,"").1|
00008410  d8 06 20 cd 0d 31 e2 06  20 e1 0d 31 ec 04 0d 31  |.. ..1.. ..1...1|
00008420  f6 13 20 dd a4 6e 65 67  61 74 69 76 65 28 61 25  |.. ..negative(a%|
00008430  29 0d 32 00 25 20 e7 20  61 25 3e 31 32 37 20 3d  |).2.% . a%>127 =|
00008440  28 26 46 46 46 46 46 46  30 30 20 84 20 61 25 29  |(&FFFFFF00 . a%)|
00008450  20 8b 20 3d 61 25 0d 32  0a 04 0d 32 14 1b 20 dd  | . =a%.2...2.. .|
00008460  f2 6c 6f 61 64 5f 73 61  6d 70 6c 65 28 6c 65 6e  |.load_sample(len|
00008470  25 2c 70 25 29 0d 32 1e  11 20 ea 20 73 66 74 25  |%,p%).2.. . sft%|
00008480  2c 61 64 64 72 25 0d 32  28 1d 20 73 66 74 25 3d  |,addr%.2(. sft%=|
00008490  a4 73 65 74 5f 73 66 74  28 66 69 6c 65 74 79 70  |.set_sft(filetyp|
000084a0  65 25 29 0d 32 32 29 20  e7 20 73 63 72 61 70 25  |e%).22) . scrap%|
000084b0  3c 3e 30 20 66 69 6c 65  6e 61 6d 65 24 3d 22 3c  |<>0 filename$="<|
000084c0  57 69 6d 70 24 53 63 72  61 70 3e 22 0d 32 3c 3a  |Wimp$Scrap>".2<:|
000084d0  20 e7 20 73 66 74 25 3c  31 20 84 20 73 66 74 25  | . sft%<1 . sft%|
000084e0  3e 37 20 85 20 31 2c 22  53 61 6d 70 6c 65 20 66  |>7 . 1,"Sample f|
000084f0  69 6c 65 20 74 79 70 65  20 6f 75 74 20 6f 66 20  |ile type out of |
00008500  72 61 6e 67 65 22 0d 32  46 3d 20 e7 20 73 61 6d  |range".2F= . sam|
00008510  70 6f 66 66 73 65 74 25  20 83 20 34 3c 3e 30 20  |poffset% . 4<>0 |
00008520  85 20 31 2c 22 53 61 6d  70 6c 65 20 62 6c 6f 63  |. 1,"Sample bloc|
00008530  6b 20 6e 6f 74 20 77 6f  72 64 20 61 6c 69 67 6e  |k not word align|
00008540  65 64 22 0d 32 50 16 20  c8 99 20 22 48 6f 75 72  |ed".2P. .. "Hour|
00008550  67 6c 61 73 73 5f 4f 6e  22 0d 32 5a 22 20 61 64  |glass_On".2Z" ad|
00008560  64 72 25 3d 73 61 6d 70  6c 65 62 61 73 65 25 2b  |dr%=samplebase%+|
00008570  73 61 6d 70 6f 66 66 73  65 74 25 0d 32 64 24 20  |sampoffset%.2d$ |
00008580  ff 20 22 4c 6f 61 64 20  22 2b 66 69 6c 65 6e 61  |. "Load "+filena|
00008590  6d 65 24 2b 22 20 22 2b  c3 7e 61 64 64 72 25 0d  |me$+" "+.~addr%.|
000085a0  32 6e 21 20 d6 20 63 6f  64 65 25 2b 26 32 34 30  |2n! . code%+&240|
000085b0  2c 73 66 74 25 2c 61 64  64 72 25 2c 6c 65 6e 25  |,sft%,addr%,len%|
000085c0  0d 32 78 21 20 73 61 6d  70 61 64 64 72 25 28 6e  |.2x! sampaddr%(n|
000085d0  65 78 74 25 29 3d 73 61  6d 70 6f 66 66 73 65 74  |ext%)=sampoffset|
000085e0  25 0d 32 82 16 20 73 61  6d 70 6f 66 66 73 65 74  |%.2.. sampoffset|
000085f0  25 2b 3d 6c 65 6e 25 0d  32 8c 29 20 73 61 6d 70  |%+=len%.2.) samp|
00008600  6f 66 66 73 65 74 25 3d  a4 77 6f 72 64 5f 61 6c  |offset%=.word_al|
00008610  69 67 6e 28 73 61 6d 70  6f 66 66 73 65 74 25 29  |ign(sampoffset%)|
00008620  0d 32 96 45 20 e7 20 73  63 72 61 70 25 3c 3e 30  |.2.E . scrap%<>0|
00008630  20 ff 20 22 44 65 6c 65  74 65 20 3c 57 69 6d 70  | . "Delete <Wimp|
00008640  24 53 63 72 61 70 3e 22  3a 73 63 72 61 70 25 3d  |$Scrap>":scrap%=|
00008650  30 3a 66 69 6c 65 6e 61  6d 65 24 3d 6c 65 61 66  |0:filename$=leaf|
00008660  6e 61 6d 65 24 0d 32 a0  1f 20 f2 75 70 64 61 74  |name$.2.. .updat|
00008670  65 73 61 6d 70 61 72 72  61 79 73 28 6c 65 6e 25  |esamparrays(len%|
00008680  2c 70 25 29 0d 32 aa 17  20 c8 99 20 22 48 6f 75  |,p%).2.. .. "Hou|
00008690  72 67 6c 61 73 73 5f 4f  66 66 22 0d 32 b4 06 20  |rglass_Off".2.. |
000086a0  e1 0d 32 be 04 0d 32 c8  18 20 dd f2 64 65 6c 65  |..2...2.. ..dele|
000086b0  74 65 5f 73 61 6d 70 6c  65 28 69 25 29 0d 32 d2  |te_sample(i%).2.|
000086c0  34 20 ea 20 61 25 2c 62  25 2c 69 63 6f 6e 25 2c  |4 . a%,b%,icon%,|
000086d0  6c 65 6e 31 25 2c 6c 65  6e 32 25 2c 73 61 64 64  |len1%,len2%,sadd|
000086e0  72 25 2c 74 25 3a 69 63  6f 6e 25 3d 69 25 2d 70  |r%,t%:icon%=i%-p|
000086f0  25 0d 32 dc 4b 20 74 25  3d 74 79 70 65 25 28 69  |%.2.K t%=type%(i|
00008700  63 6f 6e 25 29 3a 6c 65  6e 31 25 3d 73 69 7a 65  |con%):len1%=size|
00008710  25 28 69 63 6f 6e 25 29  3a 73 61 64 64 72 25 3d  |%(icon%):saddr%=|
00008720  73 61 6d 70 6c 65 62 61  73 65 25 2b 73 61 6d 70  |samplebase%+samp|
00008730  61 64 64 72 25 28 69 63  6f 6e 25 29 0d 32 e6 3a  |addr%(icon%).2.:|
00008740  20 e7 20 74 25 3c 3e 26  46 46 41 20 80 20 3f 28  | . t%<>&FFA . ?(|
00008750  63 6f 64 65 25 2b 26 39  44 30 2b 69 63 6f 6e 25  |code%+&9D0+icon%|
00008760  29 3e 30 20 d6 20 63 6f  64 65 25 2b 26 38 36 34  |)>0 . code%+&864|
00008770  2c 69 63 6f 6e 25 0d 32  f0 16 20 e7 20 74 25 3d  |,icon%.2.. . t%=|
00008780  26 46 46 41 20 6c 65 6e  31 25 3d 30 0d 32 fa 1d  |&FFA len1%=0.2..|
00008790  20 6c 65 6e 31 25 3d a4  77 6f 72 64 5f 61 6c 69  | len1%=.word_ali|
000087a0  67 6e 28 6c 65 6e 31 25  29 0d 33 04 18 20 e7 20  |gn(len1%).3.. . |
000087b0  69 63 6f 6e 25 3c 28 6e  65 78 74 25 2d 31 29 20  |icon%<(next%-1) |
000087c0  8c 0d 33 0e 19 20 e3 20  61 25 3d 69 63 6f 6e 25  |..3.. . a%=icon%|
000087d0  20 b8 20 6e 65 78 74 25  2d 32 0d 33 18 1c 20 e7  | . next%-2.3.. .|
000087e0  20 74 25 3c 3e 26 46 46  41 20 80 20 6c 65 6e 31  | t%<>&FFA . len1|
000087f0  25 3c 3e 30 20 8c 0d 33  22 2b 20 e7 20 74 79 70  |%<>0 ..3"+ . typ|
00008800  65 25 28 61 25 2b 31 29  3c 3e 26 46 46 41 20 80  |e%(a%+1)<>&FFA .|
00008810  20 73 69 7a 65 25 28 61  25 2b 31 29 3c 3e 30 20  | size%(a%+1)<>0 |
00008820  8c 0d 33 2c 2f 20 6c 65  6e 32 25 3d 73 69 7a 65  |..3,/ len2%=size|
00008830  25 28 61 25 2b 31 29 3a  6c 65 6e 32 25 3d a4 77  |%(a%+1):len2%=.w|
00008840  6f 72 64 5f 61 6c 69 67  6e 28 6c 65 6e 32 25 29  |ord_align(len2%)|
00008850  0d 33 36 23 20 62 25 3d  73 61 6d 70 6c 65 62 61  |.36# b%=sampleba|
00008860  73 65 25 2b 73 61 6d 70  61 64 64 72 25 28 61 25  |se%+sampaddr%(a%|
00008870  2b 31 29 0d 33 40 1c 20  d6 20 63 6f 64 65 25 2c  |+1).3@. . code%,|
00008880  62 25 2c 73 61 64 64 72  25 2c 6c 65 6e 32 25 0d  |b%,saddr%,len2%.|
00008890  33 4a 33 20 73 61 6d 70  61 64 64 72 25 28 61 25  |3J3 sampaddr%(a%|
000088a0  29 3d 73 61 64 64 72 25  2d 73 61 6d 70 6c 65 62  |)=saddr%-sampleb|
000088b0  61 73 65 25 3a 73 61 64  64 72 25 2b 3d 6c 65 6e  |ase%:saddr%+=len|
000088c0  32 25 0d 33 54 06 20 cd  0d 33 5e 06 20 cc 0d 33  |2%.3T. ..3^. ..3|
000088d0  68 22 20 73 61 6d 70 61  64 64 72 25 28 61 25 29  |h" sampaddr%(a%)|
000088e0  3d 73 61 6d 70 61 64 64  72 25 28 61 25 2b 31 29  |=sampaddr%(a%+1)|
000088f0  0d 33 72 06 20 cd 0d 33  7c 3d 20 3f 28 63 6f 64  |.3r. ..3|= ?(cod|
00008900  65 25 2b 26 39 44 30 2b  61 25 29 3d 3f 28 63 6f  |e%+&9D0+a%)=?(co|
00008910  64 65 25 2b 26 39 44 30  2b 61 25 2b 31 29 3a 3f  |de%+&9D0+a%+1):?|
00008920  28 63 6f 64 65 25 2b 26  39 44 30 2b 61 25 2b 31  |(code%+&9D0+a%+1|
00008930  29 3d 30 0d 33 86 22 20  70 61 74 68 6e 61 6d 65  |)=0.3." pathname|
00008940  24 28 61 25 29 3d 70 61  74 68 6e 61 6d 65 24 28  |$(a%)=pathname$(|
00008950  61 25 2b 31 29 0d 33 90  1a 20 73 69 7a 65 25 28  |a%+1).3.. size%(|
00008960  61 25 29 3d 73 69 7a 65  25 28 61 25 2b 31 29 0d  |a%)=size%(a%+1).|
00008970  33 9a 1a 20 74 79 70 65  25 28 61 25 29 3d 74 79  |3.. type%(a%)=ty|
00008980  70 65 25 28 61 25 2b 31  29 0d 33 a4 06 20 ed 0d  |pe%(a%+1).3.. ..|
00008990  33 ae 0a 20 70 25 2b 3d  31 0d 33 b8 06 20 cd 0d  |3.. p%+=1.3.. ..|
000089a0  33 c2 39 20 21 62 6c 6b  25 3d 73 61 6d 70 6c 69  |3.9 !blk%=sampli|
000089b0  73 74 25 3a 62 6c 6b 25  21 34 3d 69 25 3a c8 99  |st%:blk%!4=i%:..|
000089c0  20 22 57 69 6d 70 5f 44  65 6c 65 74 65 49 63 6f  | "Wimp_DeleteIco|
000089d0  6e 22 2c 2c 62 6c 6b 25  0d 33 cc 1a 20 6e 65 78  |n",,blk%.3.. nex|
000089e0  74 25 2d 3d 31 3a e7 20  74 25 3c 3e 26 46 46 41  |t%-=1:. t%<>&FFA|
000089f0  20 8c 0d 33 d6 2a 20 74  25 3d a4 65 78 74 65 6e  | ..3.* t%=.exten|
00008a00  64 28 2d 6c 65 6e 31 25  29 3a 73 61 6d 70 6f 66  |d(-len1%):sampof|
00008a10  66 73 65 74 25 2d 3d 6c  65 6e 31 25 0d 33 e0 4f  |fset%-=len1%.3.O|
00008a20  20 e7 20 73 61 6d 70 6f  66 66 73 65 74 25 3c 3d  | . sampoffset%<=|
00008a30  30 20 c8 99 20 22 4f 53  5f 4d 6f 64 75 6c 65 22  |0 .. "OS_Module"|
00008a40  2c 37 2c 2c 73 61 6d 70  6c 65 62 61 73 65 25 3a  |,7,,samplebase%:|
00008a50  73 61 6d 70 6c 65 62 61  73 65 25 3d 30 3a 73 61  |samplebase%=0:sa|
00008a60  6d 70 6f 66 66 73 65 74  25 3d 30 0d 33 ea 06 20  |mpoffset%=0.3.. |
00008a70  cd 0d 33 f4 06 20 e1 0d  33 fe 04 0d 34 08 1b 20  |..3.. ..3...4.. |
00008a80  dd f2 72 65 6e 75 6d 62  65 72 5f 69 63 6f 6e 28  |..renumber_icon(|
00008a90  69 63 6f 6e 25 29 0d 34  12 25 20 f2 67 65 74 5f  |icon%).4.% .get_|
00008aa0  69 63 6f 6e 5f 73 74 61  74 65 28 73 61 6d 70 6c  |icon_state(sampl|
00008ab0  69 73 74 25 2c 69 63 6f  6e 25 29 0d 34 1c 2b 20  |ist%,icon%).4.+ |
00008ac0  62 6c 6b 25 21 31 32 3d  30 2d 28 70 25 2a 34 34  |blk%!12=0-(p%*44|
00008ad0  29 2d 34 34 3a 62 6c 6b  25 21 32 30 3d 30 2d 28  |)-44:blk%!20=0-(|
00008ae0  70 25 2a 34 34 29 0d 34  26 1f 20 c8 99 20 22 57  |p%*44).4&. .. "W|
00008af0  69 6d 70 5f 44 65 6c 65  74 65 49 63 6f 6e 22 2c  |imp_DeleteIcon",|
00008b00  2c 62 6c 6b 25 0d 34 30  32 20 62 6c 6b 25 21 34  |,blk%.402 blk%!4|
00008b10  3d 73 61 6d 70 6c 69 73  74 25 3a c8 99 20 22 57  |=samplist%:.. "W|
00008b20  69 6d 70 5f 43 72 65 61  74 65 49 63 6f 6e 22 2c  |imp_CreateIcon",|
00008b30  2c 62 6c 6b 25 2b 34 0d  34 3a 0a 20 70 25 2b 3d  |,blk%+4.4:. p%+=|
00008b40  31 0d 34 44 06 20 e1 0d  34 4e 04 0d 34 58 1a 20  |1.4D. ..4N..4X. |
00008b50  dd a4 66 69 6c 65 5f 70  72 65 73 65 6e 74 28 66  |..file_present(f|
00008b60  24 2c 74 25 29 0d 34 62  11 20 ea 20 4e 25 2c 61  |$,t%).4b. . N%,a|
00008b70  25 3a 61 25 3d a3 0d 34  6c 1b 20 e7 20 6e 65 78  |%:a%=..4l. . nex|
00008b80  74 25 3d 30 20 84 20 74  25 3d 26 31 30 43 20 3d  |t%=0 . t%=&10C =|
00008b90  a3 0d 34 76 13 20 e3 20  4e 25 3d 31 20 b8 20 6e  |..4v. . N%=1 . n|
00008ba0  65 78 74 25 0d 34 80 29  20 e7 20 a4 6c 65 61 66  |ext%.4.) . .leaf|
00008bb0  6e 61 6d 65 28 70 61 74  68 6e 61 6d 65 24 28 4e  |name(pathname$(N|
00008bc0  25 2d 31 29 29 3d 66 24  20 61 25 3d b9 0d 34 8a  |%-1))=f$ a%=..4.|
00008bd0  06 20 ed 0d 34 94 08 20  3d 61 25 0d 34 9e 04 0d  |. ..4.. =a%.4...|
00008be0  34 a8 19 20 dd f2 75 70  64 61 74 65 73 61 6d 70  |4.. ..updatesamp|
00008bf0  69 63 6f 6e 28 69 25 29  0d 34 b2 1e 20 f2 73 65  |icon(i%).4.. .se|
00008c00  74 5f 69 63 6f 6e 28 73  61 6d 70 6c 65 73 25 2c  |t_icon(samples%,|
00008c10  31 2c c3 69 25 29 0d 34  bc 06 20 e1 0d 34 c6 04  |1,.i%).4.. ..4..|
00008c20  0d 34 d0 1f 20 dd f2 73  74 6f 72 65 73 61 6d 70  |.4.. ..storesamp|
00008c30  6c 65 73 28 6f 66 66 73  65 74 25 2c 63 24 29 0d  |les(offset%,c$).|
00008c40  34 da 1d 20 ea 20 61 25  2c 62 25 2c 61 24 2c 62  |4.. . a%,b%,a$,b|
00008c50  24 2c 63 25 2c 4e 25 3a  63 25 3d a3 0d 34 e4 10  |$,c%,N%:c%=..4..|
00008c60  20 e3 20 4e 25 3d 31 20  b8 20 33 32 0d 34 ee 26  | . N%=1 . 32.4.&|
00008c70  20 c8 99 20 22 53 6f 75  6e 64 5f 49 6e 73 74 61  | .. "Sound_Insta|
00008c80  6c 6c 56 6f 69 63 65 22  2c 30 2c 4e 25 20 b8 20  |llVoice",0,N% . |
00008c90  66 25 0d 34 f8 3c 20 e7  20 66 25 3c 3e 30 20 c8  |f%.4.< . f%<>0 .|
00008ca0  99 20 22 53 6f 75 6e 64  5f 49 6e 73 74 61 6c 6c  |. "Sound_Install|
00008cb0  56 6f 69 63 65 22 2c 30  2c 4e 25 20 b8 20 74 65  |Voice",0,N% . te|
00008cc0  78 74 24 20 8b 20 74 65  78 74 24 3d 22 22 0d 35  |xt$ . text$="".5|
00008cd0  02 22 20 e7 20 a9 20 74  65 78 74 24 3e 33 32 20  |." . . text$>32 |
00008ce0  74 65 78 74 24 3d c0 74  65 78 74 24 2c 33 32 29  |text$=.text$,32)|
00008cf0  0d 35 0c 28 20 24 28 62  6c 6b 25 2b 28 28 28 4e  |.5.( $(blk%+(((N|
00008d00  25 2d 31 29 2b 6f 66 66  73 65 74 25 29 2a 33 32  |%-1)+offset%)*32|
00008d10  29 29 3d 74 65 78 74 24  0d 35 16 06 20 ed 0d 35  |))=text$.5.. ..5|
00008d20  20 13 20 e7 20 6f 66 66  73 65 74 25 3d 33 32 20  | . . offset%=32 |
00008d30  8c 0d 35 2a 10 20 e3 20  4e 25 3d 30 20 b8 20 33  |..5*. . N%=0 . 3|
00008d40  31 0d 35 34 2f 20 61 24  3d 24 28 62 6c 6b 25 2b  |1.54/ a$=$(blk%+|
00008d50  28 4e 25 2a 33 32 29 29  3a 62 24 3d 24 28 62 6c  |(N%*32)):b$=$(bl|
00008d60  6b 25 2b 28 28 4e 25 2b  33 32 29 2a 33 32 29 29  |k%+((N%+32)*32))|
00008d70  0d 35 3e 12 20 e7 20 61  24 3c 3e 62 24 20 63 25  |.5>. . a$<>b$ c%|
00008d80  3d b9 0d 35 48 06 20 ed  0d 35 52 3e 20 e7 20 63  |=..5H. ..5R> . c|
00008d90  25 3d a3 20 6c 6f 61 64  65 64 25 3d a3 3a f2 72  |%=. loaded%=.:.r|
00008da0  65 70 6f 72 74 5f 65 72  72 28 22 4e 6f 74 20 61  |eport_err("Not a|
00008db0  20 73 61 6d 70 6c 65 20  6d 6f 64 75 6c 65 22 2c  | sample module",|
00008dc0  31 30 30 2c 9e 29 0d 35  5c 06 20 cd 0d 35 66 06  |100,.).5\. ..5f.|
00008dd0  20 e1 0d 35 70 04 0d 35  7a 1d 20 dd a4 67 65 74  | ..5p..5z. ..get|
00008de0  5f 6d 6f 64 75 6c 65 5f  6e 61 6d 65 28 70 61 74  |_module_name(pat|
00008df0  68 24 29 0d 35 84 0f 20  ea 20 61 24 2c 61 25 2c  |h$).5.. . a$,a%,|
00008e00  62 25 0d 35 8e 0f 20 61  25 3d 8e 20 70 61 74 68  |b%.5.. a%=. path|
00008e10  24 0d 35 98 1a 20 f5 3a  62 25 3d 9a 23 20 61 25  |$.5.. .:b%=.# a%|
00008e20  3a fd 20 8f 23 61 25 3d  26 31 30 0d 35 a2 1f 20  |:. .#a%=&10.5.. |
00008e30  e3 20 4e 25 3d 30 20 b8  20 33 3a 62 6c 6b 25 3f  |. N%=0 . 3:blk%?|
00008e40  4e 25 3d 9a 23 20 61 25  3a ed 0d 35 ac 0f 20 cf  |N%=.# a%:..5.. .|
00008e50  23 61 25 3d 21 62 6c 6b  25 0d 35 b6 22 20 f5 3a  |#a%=!blk%.5." .:|
00008e60  62 25 3d 9a 23 20 61 25  3a 61 24 3d 61 24 2b bd  |b%=.# a%:a$=a$+.|
00008e70  28 62 25 29 3a fd 20 62  25 3d 30 0d 35 c0 12 20  |(b%):. b%=0.5.. |
00008e80  61 24 3d c0 61 24 2c a9  61 24 2d 31 29 0d 35 ca  |a$=.a$,.a$-1).5.|
00008e90  0a 20 d9 23 20 61 25 0d  35 d4 08 20 3d 61 24 0d  |. .# a%.5.. =a$.|
00008ea0  35 de 04 0d 35 e8 19 20  dd f2 6b 69 6c 6c 5f 6d  |5...5.. ..kill_m|
00008eb0  6f 64 75 6c 65 28 6e 61  6d 65 24 29 0d 35 f2 31  |odule(name$).5.1|
00008ec0  20 e7 20 a4 6d 6f 64 75  6c 65 5f 70 72 65 73 65  | . .module_prese|
00008ed0  6e 74 28 6e 61 6d 65 24  29 3d b9 20 ff 20 22 52  |nt(name$)=. . "R|
00008ee0  4d 4b 69 6c 6c 20 22 2b  6e 61 6d 65 24 0d 35 fc  |MKill "+name$.5.|
00008ef0  06 20 e1 0d 36 06 04 0d  36 10 1c 20 dd a4 6d 6f  |. ..6...6.. ..mo|
00008f00  64 75 6c 65 5f 70 72 65  73 65 6e 74 28 6e 61 6d  |dule_present(nam|
00008f10  65 24 29 0d 36 1a 0c 20  ea 20 61 25 2c 62 25 0d  |e$).6.. . a%,b%.|
00008f20  36 24 21 20 2a 53 65 74  20 4b 65 79 62 6f 61 72  |6$! *Set Keyboar|
00008f30  64 54 65 6d 70 56 61 72  20 50 72 65 73 65 6e 74  |dTempVar Present|
00008f40  0d 36 2e 3c 20 ff 20 22  52 4d 45 6e 73 75 72 65  |.6.< . "RMEnsure|
00008f50  20 22 2b 6e 61 6d 65 24  2b 22 20 30 20 53 65 74  | "+name$+" 0 Set|
00008f60  20 4b 65 79 62 6f 61 72  64 54 65 6d 70 56 61 72  | KeyboardTempVar|
00008f70  20 4e 6f 74 50 72 65 73  65 6e 74 22 0d 36 38 3f  | NotPresent".68?|
00008f80  20 c8 99 20 22 4f 53 5f  52 65 61 64 56 61 72 56  | .. "OS_ReadVarV|
00008f90  61 6c 22 2c 22 4b 65 79  62 6f 61 72 64 54 65 6d  |al","KeyboardTem|
00008fa0  70 56 61 72 22 2c 62 6c  6b 25 2c 26 31 35 30 30  |pVar",blk%,&1500|
00008fb0  2c 30 2c 30 20 b8 20 2c  2c 61 25 0d 36 42 12 20  |,0,0 . ,,a%.6B. |
00008fc0  3f 28 62 6c 6b 25 2b 61  25 29 3d 26 44 0d 36 4c  |?(blk%+a%)=&D.6L|
00008fd0  1b 20 2a 55 6e 73 65 74  20 4b 65 79 62 6f 61 72  |. *Unset Keyboar|
00008fe0  64 54 65 6d 70 56 61 72  0d 36 56 1e 20 e7 20 24  |dTempVar.6V. . $|
00008ff0  62 6c 6b 25 3d 22 50 72  65 73 65 6e 74 22 20 3d  |blk%="Present" =|
00009000  b9 20 8b 20 3d a3 0d 36  60 04 0d 36 6a 12 20 dd  |. . =..6`..6j. .|
00009010  a4 73 65 74 5f 73 66 74  28 74 25 29 0d 36 74 09  |.set_sft(t%).6t.|
00009020  20 ea 20 61 25 0d 36 7e  0c 20 c8 8e 20 74 25 20  | . a%.6~. .. t% |
00009030  ca 0d 36 88 10 20 c9 20  26 46 46 41 3a 61 25 3d  |..6.. . &FFA:a%=|
00009040  31 0d 36 92 10 20 c9 20  26 44 46 39 3a 61 25 3d  |1.6.. . &DF9:a%=|
00009050  32 0d 36 9c 10 20 c9 20  26 43 42 35 3a 61 25 3d  |2.6.. . &CB5:a%=|
00009060  33 0d 36 a6 10 20 c9 20  26 45 44 30 3a 61 25 3d  |3.6.. . &ED0:a%=|
00009070  34 0d 36 b0 10 20 c9 20  26 44 33 43 3a 61 25 3d  |4.6.. . &D3C:a%=|
00009080  36 0d 36 ba 10 20 c9 20  26 46 46 44 3a 61 25 3d  |6.6.. . &FFD:a%=|
00009090  35 0d 36 c4 06 20 cb 0d  36 ce 08 20 3d 61 25 0d  |5.6.. ..6.. =a%.|
000090a0  36 d8 04 0d 36 e2 15 20  dd a4 77 6f 72 64 5f 61  |6...6.. ..word_a|
000090b0  6c 69 67 6e 28 61 25 29  0d 36 ec 1d 20 c8 95 20  |lign(a%).6.. .. |
000090c0  61 25 20 83 20 34 3c 3e  30 3a 61 25 2b 3d 31 3a  |a% . 4<>0:a%+=1:|
000090d0  ce 3a 3d 61 25 0d 36 f6  04 0d 37 00 0f 20 dd f2  |.:=a%.6...7.. ..|
000090e0  64 65 73 6b 73 61 76 65  0d 37 0a 09 20 ea 20 4e  |desksave.7.. . N|
000090f0  25 0d 37 14 64 20 ee 20  85 20 ea 20 6d 65 73 73  |%.7.d . . . mess|
00009100  62 6c 6b 25 21 31 32 3d  6d 65 73 73 62 6c 6b 25  |blk%!12=messblk%|
00009110  21 38 3a c8 99 20 22 57  69 6d 70 5f 53 65 6e 64  |!8:.. "Wimp_Send|
00009120  4d 65 73 73 61 67 65 22  2c 31 39 2c 6d 65 73 73  |Message",19,mess|
00009130  62 6c 6b 25 2c 6d 65 73  73 62 6c 6b 25 21 34 3a  |blk%,messblk%!4:|
00009140  f2 72 65 70 6f 72 74 5f  65 72 72 28 f6 24 2c 9f  |.report_err(.$,.|
00009150  2c 9e 29 3a e1 0d 37 1e  3d 20 c8 99 20 22 58 4f  |,.):..7.= .. "XO|
00009160  53 5f 52 65 61 64 56 61  72 56 61 6c 22 2c 22 4b  |S_ReadVarVal","K|
00009170  65 79 62 6f 61 72 64 24  44 69 72 22 2c 62 6c 6b  |eyboard$Dir",blk|
00009180  25 2c 26 31 35 30 30 2c  30 2c 33 20 b8 20 2c 2c  |%,&1500,0,3 . ,,|
00009190  4e 25 0d 37 28 0f 20 62  6c 6b 25 3f 4e 25 3d 31  |N%.7(. blk%?N%=1|
000091a0  33 0d 37 32 20 20 d5 23  20 6d 65 73 73 62 6c 6b  |3.72  .# messblk|
000091b0  25 21 32 30 2c 22 52 75  6e 20 22 2b 24 62 6c 6b  |%!20,"Run "+$blk|
000091c0  25 0d 37 3c 06 20 e1 0d  37 46 04 0d 37 50 19 20  |%.7<. ..7F..7P. |
000091d0  dd f2 69 6e 73 74 61 6c  6c 5f 73 61 6d 70 6c 65  |..install_sample|
000091e0  28 69 25 29 0d 37 5a 1a  20 ea 20 61 24 2c 74 25  |(i%).7Z. . a$,t%|
000091f0  2c 61 64 64 72 25 2c 61  25 3a 61 25 3d 30 0d 37  |,addr%,a%:a%=0.7|
00009200  64 26 20 c8 99 20 22 53  6f 75 6e 64 5f 49 6e 73  |d& .. "Sound_Ins|
00009210  74 61 6c 6c 56 6f 69 63  65 22 2c 30 2c 30 20 b8  |tallVoice",0,0 .|
00009220  20 2c 61 25 0d 37 6e 1e  20 e7 20 61 25 3d 30 20  | ,a%.7n. . a%=0 |
00009230  84 20 74 79 70 65 25 28  69 25 29 3d 26 46 46 41  |. type%(i%)=&FFA|
00009240  20 e1 0d 37 78 1b 20 e7  20 3f 28 63 6f 64 65 25  | ..7x. . ?(code%|
00009250  2b 26 39 44 30 2b 69 25  29 3d 30 20 8c 0d 37 82  |+&9D0+i%)=0 ..7.|
00009260  20 20 61 24 3d a4 6c 65  61 66 6e 61 6d 65 28 70  |  a$=.leafname(p|
00009270  61 74 68 6e 61 6d 65 24  28 69 25 29 29 0d 37 8c  |athname$(i%)).7.|
00009280  1b 20 74 25 3d a4 73 65  74 5f 73 66 74 28 74 79  |. t%=.set_sft(ty|
00009290  70 65 25 28 69 25 29 29  0d 37 96 24 20 61 64 64  |pe%(i%)).7.$ add|
000092a0  72 25 3d 73 61 6d 70 6c  65 62 61 73 65 25 2b 73  |r%=samplebase%+s|
000092b0  61 6d 70 61 64 64 72 25  28 69 25 29 0d 37 a0 2d  |ampaddr%(i%).7.-|
000092c0  20 d6 20 63 6f 64 65 25  2b 26 38 43 43 2c 61 25  | . code%+&8CC,a%|
000092d0  2c 69 25 2c 61 24 2c 74  25 2c 61 64 64 72 25 2c  |,i%,a$,t%,addr%,|
000092e0  73 69 7a 65 25 28 69 25  29 0d 37 aa 18 20 74 25  |size%(i%).7.. t%|
000092f0  3d 3f 28 63 6f 64 65 25  2b 26 39 44 30 2b 69 25  |=?(code%+&9D0+i%|
00009300  29 0d 37 b4 39 20 e7 20  74 25 3d 30 20 f2 72 65  |).7.9 . t%=0 .re|
00009310  70 6f 72 74 5f 65 72 72  28 22 46 61 69 6c 65 64  |port_err("Failed|
00009320  20 74 6f 20 69 6e 73 74  61 6c 6c 20 73 61 6d 70  | to install samp|
00009330  6c 65 22 2c 31 30 30 2c  9e 29 0d 37 be 06 20 cd  |le",100,.).7.. .|
00009340  0d 37 c8 06 20 e1 0d 37  d2 04 0d 37 dc 18 20 dd  |.7.. ..7...7.. .|
00009350  f2 72 65 6d 6f 76 65 5f  73 61 6d 70 6c 65 28 69  |.remove_sample(i|
00009360  25 29 0d 37 e6 17 20 e7  20 74 79 70 65 25 28 69  |%).7.. . type%(i|
00009370  25 29 3d 26 46 46 41 20  e1 0d 37 f0 1b 20 e7 20  |%)=&FFA ..7.. . |
00009380  3f 28 63 6f 64 65 25 2b  26 39 44 30 2b 69 25 29  |?(code%+&9D0+i%)|
00009390  3e 30 20 8c 0d 37 fa 14  20 d6 20 63 6f 64 65 25  |>0 ..7.. . code%|
000093a0  2b 26 38 36 34 2c 69 25  0d 38 04 06 20 cd 0d 38  |+&864,i%.8.. ..8|
000093b0  0e 06 20 e1 0d 38 18 04  0d 38 22 12 20 dd a4 63  |.. ..8...8". ..c|
000093c0  6c 61 69 6d 28 6c 65 6e  25 29 0d 38 2c 0c 20 ea  |laim(len%).8,. .|
000093d0  20 61 25 2c 4e 25 0d 38  36 27 20 c8 99 20 22 58  | a%,N%.86' .. "X|
000093e0  4f 53 5f 4d 6f 64 75 6c  65 22 2c 36 2c 2c 2c 6c  |OS_Module",6,,,l|
000093f0  65 6e 25 20 b8 20 2c 2c  61 25 3b 4e 25 0d 38 40  |en% . ,,a%;N%.8@|
00009400  14 20 e7 20 4e 25 20 80  20 25 30 30 30 31 20 3d  |. . N% . %0001 =|
00009410  30 0d 38 4a 08 20 3d 61  25 0d 38 54 04 0d 38 5e  |0.8J. =a%.8T..8^|
00009420  13 20 dd a4 65 78 74 65  6e 64 28 6c 65 6e 25 29  |. ..extend(len%)|
00009430  0d 38 68 21 20 ea 20 73  25 2c 4e 25 2c 61 25 2c  |.8h! . s%,N%,a%,|
00009440  69 25 3a 61 25 3d 73 61  6d 70 6c 65 62 61 73 65  |i%:a%=samplebase|
00009450  25 0d 38 72 1b 20 6c 65  6e 25 3d a4 77 6f 72 64  |%.8r. len%=.word|
00009460  5f 61 6c 69 67 6e 28 6c  65 6e 25 29 0d 38 7c 16  |_align(len%).8|.|
00009470  20 e7 20 73 61 6d 70 6f  66 66 73 65 74 25 3d 30  | . sampoffset%=0|
00009480  20 8c 0d 38 86 1d 20 73  61 6d 70 6c 65 62 61 73  | ..8.. samplebas|
00009490  65 25 3d a4 63 6c 61 69  6d 28 6c 65 6e 25 29 0d  |e%=.claim(len%).|
000094a0  38 90 43 20 e7 20 73 61  6d 70 6c 65 62 61 73 65  |8.C . samplebase|
000094b0  25 3d 30 20 f2 72 65 70  6f 72 74 5f 65 72 72 28  |%=0 .report_err(|
000094c0  22 4e 6f 74 20 65 6e 6f  75 67 68 20 72 6f 6f 6d  |"Not enough room|
000094d0  20 69 6e 20 52 4d 41 22  2c 31 30 30 2c 9e 29 3a  | in RMA",100,.):|
000094e0  3d b9 0d 38 9a 06 20 cc  0d 38 a4 3c 20 c8 99 20  |=..8.. ..8.< .. |
000094f0  22 58 4f 53 5f 4d 6f 64  75 6c 65 22 2c 31 33 2c  |"XOS_Module",13,|
00009500  2c 73 61 6d 70 6c 65 62  61 73 65 25 2c 6c 65 6e  |,samplebase%,len|
00009510  25 20 b8 20 2c 2c 73 61  6d 70 6c 65 62 61 73 65  |% . ,,samplebase|
00009520  25 3b 4e 25 0d 38 ae 40  20 e7 20 4e 25 20 80 20  |%;N%.8.@ . N% . |
00009530  25 30 30 30 31 20 f2 72  65 70 6f 72 74 5f 65 72  |%0001 .report_er|
00009540  72 28 22 4e 6f 74 20 65  6e 6f 75 67 68 20 72 6f  |r("Not enough ro|
00009550  6f 6d 20 69 6e 20 52 4d  41 22 2c 31 30 30 2c 9e  |om in RMA",100,.|
00009560  29 3a 3d b9 0d 38 b8 24  20 e7 20 73 61 6d 70 6c  |):=..8.$ . sampl|
00009570  65 62 61 73 65 25 3c 3e  61 25 20 f2 72 65 69 6e  |ebase%<>a% .rein|
00009580  69 74 76 6f 69 63 65 73  0d 38 c2 06 20 cd 0d 38  |itvoices.8.. ..8|
00009590  cc 07 20 3d a3 0d 38 d6  04 0d 38 e0 13 20 dd f2  |.. =..8...8.. ..|
000095a0  72 65 69 6e 69 74 76 6f  69 63 65 73 0d 38 ea 18  |reinitvoices.8..|
000095b0  20 ea 20 69 25 2c 73 25  2c 61 64 64 72 25 2c 61  | . i%,s%,addr%,a|
000095c0  24 2c 61 25 0d 38 f4 10  20 e3 20 69 25 3d 30 20  |$,a%.8.. . i%=0 |
000095d0  b8 20 33 31 0d 38 fe 18  20 73 25 3d 3f 28 63 6f  |. 31.8.. s%=?(co|
000095e0  64 65 25 2b 26 39 44 30  2b 69 25 29 0d 39 08 0d  |de%+&9D0+i%).9..|
000095f0  20 e7 20 73 25 3e 30 20  8c 0d 39 12 14 20 d6 20  | . s%>0 ..9.. . |
00009600  63 6f 64 65 25 2b 26 38  36 34 2c 69 25 0d 39 1c  |code%+&864,i%.9.|
00009610  24 20 61 64 64 72 25 3d  73 61 6d 70 6c 65 62 61  |$ addr%=sampleba|
00009620  73 65 25 2b 73 61 6d 70  61 64 64 72 25 28 69 25  |se%+sampaddr%(i%|
00009630  29 0d 39 26 37 20 61 24  3d a4 6c 65 61 66 6e 61  |).9&7 a$=.leafna|
00009640  6d 65 28 70 61 74 68 6e  61 6d 65 24 28 69 25 29  |me(pathname$(i%)|
00009650  29 3a 61 25 3d a4 73 65  74 5f 73 66 74 28 74 79  |):a%=.set_sft(ty|
00009660  70 65 25 28 69 25 29 29  0d 39 30 2d 20 d6 20 63  |pe%(i%)).90- . c|
00009670  6f 64 65 25 2b 26 38 43  43 2c 73 25 2c 69 25 2c  |ode%+&8CC,s%,i%,|
00009680  61 24 2c 61 25 2c 61 64  64 72 25 2c 73 69 7a 65  |a$,a%,addr%,size|
00009690  25 28 69 25 29 0d 39 3a  06 20 cd 0d 39 44 06 20  |%(i%).9:. ..9D. |
000096a0  ed 0d 39 4e 06 20 e1 0d  39 58 04 0d 39 62 1d 20  |..9N. ..9X..9b. |
000096b0  dd a4 69 6e 73 74 61 6c  6c 5f 69 6e 5f 73 6c 6f  |..install_in_slo|
000096c0  74 28 69 25 2c 73 25 29  0d 39 6c 12 20 ea 20 61  |t(i%,s%).9l. . a|
000096d0  64 64 72 25 2c 61 24 2c  61 25 0d 39 76 38 20 e7  |ddr%,a$,a%.9v8 .|
000096e0  20 73 25 3c 31 20 84 20  73 25 3e 33 32 20 85 20  | s%<1 . s%>32 . |
000096f0  31 2c 22 56 6f 69 63 65  20 73 6c 6f 74 20 6e 75  |1,"Voice slot nu|
00009700  6d 62 65 72 20 6f 75 74  20 6f 66 20 72 61 6e 67  |mber out of rang|
00009710  65 22 0d 39 80 26 20 c8  99 20 22 53 6f 75 6e 64  |e".9.& .. "Sound|
00009720  5f 49 6e 73 74 61 6c 6c  56 6f 69 63 65 22 2c 30  |_InstallVoice",0|
00009730  2c 73 25 20 b8 20 61 25  0d 39 8a 0f 20 e7 20 61  |,s% . a%.9.. . a|
00009740  25 3c 3e 30 20 3d a3 0d  39 94 24 20 61 64 64 72  |%<>0 =..9.$ addr|
00009750  25 3d 73 61 6d 70 6c 65  62 61 73 65 25 2b 73 61  |%=samplebase%+sa|
00009760  6d 70 61 64 64 72 25 28  69 25 29 0d 39 9e 37 20  |mpaddr%(i%).9.7 |
00009770  61 24 3d a4 6c 65 61 66  6e 61 6d 65 28 70 61 74  |a$=.leafname(pat|
00009780  68 6e 61 6d 65 24 28 69  25 29 29 3a 61 25 3d a4  |hname$(i%)):a%=.|
00009790  73 65 74 5f 73 66 74 28  74 79 70 65 25 28 69 25  |set_sft(type%(i%|
000097a0  29 29 0d 39 a8 2d 20 d6  20 63 6f 64 65 25 2b 26  |)).9.- . code%+&|
000097b0  38 43 43 2c 73 25 2c 69  25 2c 61 24 2c 61 25 2c  |8CC,s%,i%,a$,a%,|
000097c0  61 64 64 72 25 2c 73 69  7a 65 25 28 69 25 29 0d  |addr%,size%(i%).|
000097d0  39 b2 07 20 3d b9 0d 39  bc 04 0d 39 c6 1a 20 dd  |9.. =..9...9.. .|
000097e0  a4 63 68 65 63 6b 5f 6c  69 73 74 28 61 63 74 69  |.check_list(acti|
000097f0  6f 6e 25 29 0d 39 d0 1c  20 ea 20 6e 25 2c 61 64  |on%).9.. . n%,ad|
00009800  64 72 25 2c 61 25 3a 6e  25 3d 30 3a 61 25 3d 30  |dr%,a%:n%=0:a%=0|
00009810  0d 39 da 35 20 c8 99 20  22 57 69 6d 70 5f 57 68  |.9.5 .. "Wimp_Wh|
00009820  69 63 68 49 63 6f 6e 22  2c 73 61 6d 70 6c 69 73  |ichIcon",samplis|
00009830  74 25 2c 62 6c 6b 25 2c  25 31 3c 3c 32 31 2c 25  |t%,blk%,%1<<21,%|
00009840  31 3c 3c 32 31 0d 39 e4  0f 20 61 64 64 72 25 3d  |1<<21.9.. addr%=|
00009850  62 6c 6b 25 0d 39 ee 06  20 f5 0d 39 f8 1b 20 e7  |blk%.9.. ..9.. .|
00009860  20 74 79 70 65 25 28 21  61 64 64 72 25 29 3d 26  | type%(!addr%)=&|
00009870  46 46 41 20 8c 0d 3a 02  0b 20 20 6e 25 2b 3d 31  |FFA ..:..  n%+=1|
00009880  0d 3a 0c 06 20 cc 0d 3a  16 12 20 20 c8 8e 20 61  |.:.. ..:..  .. a|
00009890  63 74 69 6f 6e 25 20 ca  0d 3a 20 09 20 20 c9 20  |ction% ..: .  . |
000098a0  30 0d 3a 2a 24 20 20 e7  20 3f 28 63 6f 64 65 25  |0.:*$  . ?(code%|
000098b0  2b 26 39 44 30 2b 21 61  64 64 72 25 29 3e 30 20  |+&9D0+!addr%)>0 |
000098c0  6e 25 2b 3d 31 0d 3a 34  09 20 20 c9 20 31 0d 3a  |n%+=1.:4.  . 1.:|
000098d0  3e 24 20 20 e7 20 3f 28  63 6f 64 65 25 2b 26 39  |>$  . ?(code%+&9|
000098e0  44 30 2b 21 61 64 64 72  25 29 3d 30 20 6e 25 2b  |D0+!addr%)=0 n%+|
000098f0  3d 31 0d 3a 48 07 20 20  cb 0d 3a 52 06 20 cd 0d  |=1.:H.  ..:R. ..|
00009900  3a 5c 1f 20 61 64 64 72  25 2b 3d 34 3a 61 25 2b  |:\. addr%+=4:a%+|
00009910  3d 31 3a fd 20 21 61 64  64 72 25 3d 2d 31 0d 3a  |=1:. !addr%=-1.:|
00009920  66 0f 20 e7 20 61 25 3d  6e 25 20 3d b9 0d 3a 70  |f. . a%=n% =..:p|
00009930  07 20 3d a3 0d 3a 7a 04  0d 3a 84 0b 20 dd f2 6d  |. =..:z..:.. ..m|
00009940  75 74 65 0d 3a 8e 0c 20  ea 20 76 25 2c 4e 25 0d  |ute.:.. . v%,N%.|
00009950  3a 98 0f 20 2a 41 75 64  69 6f 20 4f 66 66 0d 3a  |:.. *Audio Off.:|
00009960  a2 10 20 76 6f 69 63 65  24 28 29 3d 22 22 0d 3a  |.. voice$()="".:|
00009970  ac 0f 20 e3 20 4e 25 3d  31 20 b8 20 38 0d 3a b6  |.. . N%=1 . 8.:.|
00009980  26 20 c8 99 20 22 53 6f  75 6e 64 5f 41 74 74 61  |& .. "Sound_Atta|
00009990  63 68 56 6f 69 63 65 22  2c 4e 25 2c 30 20 b8 20  |chVoice",N%,0 . |
000099a0  2c 76 25 0d 3a c0 37 20  e7 20 76 25 3e 30 20 c8  |,v%.:.7 . v%>0 .|
000099b0  99 20 22 53 6f 75 6e 64  5f 49 6e 73 74 61 6c 6c  |. "Sound_Install|
000099c0  56 6f 69 63 65 22 2c 30  2c 76 25 20 b8 20 76 6f  |Voice",0,v% . vo|
000099d0  69 63 65 24 28 4e 25 2d  31 29 0d 3a ca 06 20 ed  |ice$(N%-1).:.. .|
000099e0  0d 3a d4 06 20 e1 0d 3a  de 04 0d 3a e8 0e 20 dd  |.:.. ..:...:.. .|
000099f0  f2 72 65 73 74 6f 72 65  0d 3a f2 09 20 ea 20 4e  |.restore.:.. . N|
00009a00  25 0d 3a fc 0f 20 e3 20  4e 25 3d 31 20 b8 20 38  |%.:.. . N%=1 . 8|
00009a10  0d 3b 06 31 20 c8 99 20  22 58 53 6f 75 6e 64 5f  |.;.1 .. "XSound_|
00009a20  41 74 74 61 63 68 4e 61  6d 65 64 56 6f 69 63 65  |AttachNamedVoice|
00009a30  22 2c 4e 25 2c 76 6f 69  63 65 24 28 4e 25 2d 31  |",N%,voice$(N%-1|
00009a40  29 0d 3b 10 06 20 ed 0d  3b 1a 0e 20 2a 41 75 64  |).;.. ..;.. *Aud|
00009a50  69 6f 20 4f 6e 0d 3b 24  06 20 e1 0d ff           |io On.;$. ...|
00009a5d