Home » Archimedes archive » Acorn User » AU 1994-05.adf » !Armony_Armony » !Armony/!RunImage

!Armony/!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 » !Armony_Armony
Filename: !Armony/!RunImage
Read OK:
File size: E1A7 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM              +------------------------------------------+
   20REM              |         !Armony, by Mike Smith,          |
   30REM              |     Version 1.32  (29/12/93), based on   |
   40REM              |     BareBones Wimp application program   |
   50REM              |         Version 1.00  (4/10/92)          |
   60REM              |          (C) Alan Senior 1992            |
   70REM              |    Dabs Press : Basic Wimp Programming   |
   80REM              +------------------------------------------+
   90:
  100ON ERROR REPORT:PRINT" at line ";ERL DIV10:END
  110SYS263872
  120PROCdefine_arrays:PROCdefine_variables
  130ON ERROR PROCerror(ERR,REPORT$):PROCquit
  140task_handle%=FNtask_initialise(app_name$)
  150PROCload_sprites:PROCload_windows:PROCinstall_icon
  160PROCcreate_windows:PROCmenus:PROCinfo
  170PROCload_check
  180ON ERROR PROCerror(ERR,REPORT$)
  190SYS263873
  200:
  210PROCwimp_poll:PROCquit
  220:
  230DEFPROCdefine_arrays
  240DIM blk% &2000:DIM temp_blk% &2000:DIM errorblk% &100:DIM workstart% &1000
  250workfree%=workstart%:workend%=workstart%+&1000
  260DIM sequlen%(25):sequlen%()=0
  270DIM chord$(25,32):chord$()="    "
  280DIM rhythm$(25,32):rhythm$()="a"
  290DIM rhythm_name$(25):rhythm_name$()="          "
  300FOR r%=0 TO 25:rhythm_name$(r%)=CHR$(r%+97):NEXT
  310DIM nobeats%(25):nobeats%()=8
  320DIM vol%(25,7,16):vol%()=-1
  330DIM ins%(25,7,16):ins%()=0
  340DIM fx%(6):fx%()=7
  350DIMfxchannel%(6):fxchannel%()=FALSE
  360DIM stereo%(8)
  370DIM p%(6)
  380DIM lkc 16:DIM hkc 24
  390DIM sequence_window%(25):DIM rhythm_window%(25)
  400DIM chord_icon%(25,32):DIM rhythm_icon%(25,32):DIM beat_icon%(7,16)
  410ENDPROC
  420:
  430DEFPROCdefine_variables
  440app_sprite$="!Armony":app_name$="!Armony":app_purpose$="A chord sequencer"
  450app_author$="� Mike Smith 1993"
  460app_version$="Version 1.00, 14th Oct 1993"
  470app_directory$=FNsystem_variable("Armony$Dir")
  480errorcount%=0:menufile%=0:icon_bar%=-2
  490select_click%=4:menu_click%=2:adjust_click%=1:select_menu_click%=6
  500select_drag%=64:adjust_drag%=16:quit%=FALSE
  510tempo%=32:trans%=0:coct%=3:boct%=2:koct%=2:
  520sequences%=1:rhythms%=1:structure$="A"
  530stereo%(1)=-3:stereo%(2)=-2:stereo%(3)=-1:stereo%(4)=1:stereo%(5)=2:stereo%(6)=3:stereo%(7)=0:stereo%(8)=0
  540play_rhythm%=FALSE:repeat%=FALSE:edit_sequence%=0
  550root$="C D EF G A B":chord_input$="ABCDEFG#bmMs+-13679/"
  560rhythm_input$="abcdefghijklmnopqrstuvwxyz"
  570lowkey$="zsxdcvgbhnjm,l.;/":highkey$="a1q2we4r5t6yu8i9op-[=]�\f"
  580cvol%=1:bvol%=2:fxvol%=1
  590FOR i%=1 TO 17:READ lkc?i%:NEXT
  600DATA 98,82,67,51,83,100,84,101,85,86,70,102,103,87,104,88,105
  610FOR i%=1 TO 25:READ hkc?i%:NEXT
  620DATA 97,49,17,50,34,35,19,52,20,36,53,69,54,22,38,39,55,56,24,57,94,89,47,121,62
  630*FX11,0
  640SOUND ON:VOICES 8
  650chord_voice%=2:FOR ch%=1 TO 6:OSCLI("CHANNELVOICE "+STR$(ch%)+" 2"):NEXT
  660SYS262531,0,2 TO chord_voice$,F%
  670bass_voice%=1:*CHANNELVOICE 7 1
  680SYS262531,0,1 TO bass_voice$,F%
  690keyboard_voice%=3:*CHANNELVOICE 8 3
  700SYS262531,0,3 TO keyboard_voice$,F%
  710ok_icon%=0:name_icon%=1:file_icon%=2:rhythm_name_icon%=1:rhythm_file_icon%=2
  720B%=1:C%=1:R%=0:S%=1:Z%=0:last_r%=R%:last_b%=B%:last_vol%=15
  730play_rhythm%=FALSE:play_sequence%=FALSE:play_song%=FALSE:repeat%=FALSE
  740ENDPROC
  750:
  760DEFPROCinstall_icon
  770icon_bar_handle%=FNput_icon_on_bar(app_sprite$,"RIGHT")
  780ENDPROC
  790:
  800DEFPROCload_sprites
  810sprites%=FNload_sprites(app_directory$+".Sprites")
  820ENDPROC
  830:
  840DEFPROCload_windows
  850save%=FNnew_template(app_directory$+".Templates","save%",workfree%,workend%)
  860save_rthm%=FNnew_template(app_directory$+".Templates","save_rthm%",workfree%,workend%)
  870ENDPROC
  880:
  890DEFPROCcreate_windows
  900info%=FNcreate_info_window
  910PROCstereo_window:PROCstereo
  920:
  930PROCcreate_show_value
  940:
  950PROCupdate_windows("Newsong")
  960ENDPROC
  970:
  980DEFPROCupdate_windows(file$)
  990LOCAL s%,r%
 1000FOR s%=0 TO sequences%-1:PROCsequence_window(s%):NEXT
 1010FOR r%=0 TO rhythms%-1:PROCrhythm_window(r%):NEXT
 1020PROCkeyboard_window(file$)
 1030ENDPROC
 1040:
 1050DEFPROCopen_windows
 1060LOCAL s%,r%
 1070FOR s%=0 TO sequences%-1:PROCopen_window(sequence_window%(s%)):NEXT
 1080FOR r%=0 TO rhythms%-1:PROCopen_window(rhythm_window%(r%)):NEXT
 1090ENDPROC
 1100:
 1110DEFPROCdelete_windows
 1120LOCAL s%,r%
 1130PROCdelete_window(keyboard_window%)
 1140FOR s%=0 TO sequences%-1:PROCdelete_window(sequence_window%(s%)):NEXT
 1150FOR r%=0 TO rhythms%-1:PROCdelete_window(rhythm_window%(r%)):NEXT
 1160ENDPROC
 1170:
 1180DEFPROCkeyboard_window(title$)
 1190LOCAL icon%,f%,w%,h%,vw%,vh%,px%,py%,note$,k%,minx%,maxx%
 1200f%=%10000111000000000000000000010010
 1210w%=1280:h%=432:vw%=w%:vh%=h%:px%=0:py%=54
 1220keyboard_window%=FNcreate_window(title$,f%,w%,h%,px%,vw%,py%,vh%)
 1230icon%=FNadd_icon_block(keyboard_window%,16,-408,752,-24,1)
 1240PROCborder_icon(keyboard_window%,icon%)
 1250note$="1 2   4 5 6   8 9   - = �"
 1260icon%=FNadd_icon("label",note$,keyboard_window%,272,-24,0,0,0)
 1270note$="s d   g h j   l ;"
 1280icon%=FNadd_icon("label",note$,keyboard_window%,48,-72,0,0,0)
 1290note$="C D E F G A B C D E F G A B C D E F G A B C"
 1300icon%=FNadd_icon("label",note$,keyboard_window%,32,-264,0,0,0)
 1310note$="T q w e r t y u i o p [ ] \ I"
 1320icon%=FNadd_icon("label",note$,keyboard_window%,256,-312,0,0,0)
 1330note$="z x c v b n m , . /"
 1340icon%=FNadd_icon("label",note$,keyboard_window%,32,-360,0,0,0)
 1350FOR k%=1 TO 22
 1360 minx%=32*k%+4:maxx%=minx%+24
 1370 icon%=FNadd_icon_block(keyboard_window%,minx%,-260,maxx%,-124,0)
 1380 PROCborder_icon(keyboard_window%,icon%)
 1390 NEXT
 1400FOR k%=1 TO 20
 1410 minx%=32*k%+20:maxx%=minx%+24
 1420 IF k%<>3 AND k%<>7 AND k%<>10 AND k%<>14 AND k%<>17 THEN
 1430  icon%=FNadd_icon_block(keyboard_window%,minx%,-202,maxx%,-124,7)
 1440  PROCborder_icon(keyboard_window%,icon%)
 1450 ENDIF
 1460 NEXT
 1470:
 1480icon%=FNadd_icon("label","Tempo",keyboard_window%,790,-24,0,0,0)
 1490icon%=FNadd_icon("label","Keybd",keyboard_window%,790,-120,0,0,0)
 1500icon%=FNadd_icon("label","Sustn",keyboard_window%,790,-216,0,0,0)
 1510on_icon%=FNadd_icon("write"," OFF ",keyboard_window%,790,-168,1,0,1)
 1520PROCicon_validation(keyboard_window%,on_icon%,"K")
 1530PROCicon_bg_colour(keyboard_window%,on_icon%,1)
 1540sustain%=0
 1550sustain_icon%=FNadd_icon("report"," OFF ",keyboard_window%,790,-264,5,0,1)
 1560icon%=FNadd_icon("label","Trans",keyboard_window%,790,-312,0,0,0)
 1570icon%=FNadd_icon("label","  Structure/Pause",keyboard_window%,928,-24,0,0,0)
 1580icon%=FNadd_icon("label"," Chords instrument",keyboard_window%,928,-120,0,0,0)
 1590icon%=FNadd_icon("label","  Bass instrument",keyboard_window%,928,-216,0,0,0)
 1600icon%=FNadd_icon("label","Keyboard instrument",keyboard_window%,928,-312,0,0,0)
 1610tempo_icon%=FNadd_icon("report","     ",keyboard_window%,790,-72,5,0,1)
 1620left_tempo_icon%=FNadd_icon("sprite","left",keyboard_window%,794,-76,0,sprites%,0)
 1630right_tempo_icon%=FNadd_icon("sprite","right",keyboard_window%,866,-76,0,sprites%,0)
 1640trans_icon%=FNadd_icon("report","     ",keyboard_window%,790,-360,5,0,1)
 1650left_trans_icon%=FNadd_icon("sprite","left",keyboard_window%,794,-364,0,sprites%,0)
 1660right_trans_icon%=FNadd_icon("sprite","right",keyboard_window%,866,-364,0,sprites%,0)
 1670structure_icon%=FNadd_icon("report","                   ",keyboard_window%,928,-72,19,0,1)
 1680PROCicon_bg_colour(keyboard_window%,structure_icon%,11)
 1690chord_ins_icon%=FNadd_icon("report","                   ",keyboard_window%,928,-168,19,0,1)
 1700bass_ins_icon%=FNadd_icon("report","                   ",keyboard_window%,928,-264,19,0,1)
 1710keyboard_ins_icon%=FNadd_icon("report","                   ",keyboard_window%,928,-360,19,0,1)
 1720PROCput_icon_text(keyboard_window%,tempo_icon%,STR$(tempo%))
 1730PROCput_icon_text(keyboard_window%,trans_icon%,STR$(trans%))
 1740C%=1:S%=1:Z%=0
 1750structure_pos$=LEFT$(structure$,S%-1)+"("+MID$(structure$,S%,1)+")"+MID$(structure$,S%+1,19-S%)
 1760PROCput_icon_text(keyboard_window%,structure_icon%,structure_pos$)
 1770PROCput_icon_text(keyboard_window%,chord_ins_icon%,chord_voice$)
 1780PROCput_icon_text(keyboard_window%,bass_ins_icon%,bass_voice$)
 1790PROCput_icon_text(keyboard_window%,keyboard_ins_icon%,keyboard_voice$)
 1800ENDPROC
 1810:
 1820DEFPROCsequence_window(s%)
 1830LOCAL title$,px%,py%,type$,c%,x%,y%
 1840sf%=%10000111000000000000000000010010
 1850sw%=512:sh%=448:svw%=512:svh%=448:px%=s%*48:py%=532-s%*48
 1860title$="Chord Sequence "+CHR$(s%+65):type$="write"
 1870sequence_window%(s%)=FNcreate_window(title$,sf%,sw%,sh%,px%,svw%,py%,svh%)
 1880window%=sequence_window%(s%)
 1890FOR c%=1 TO sequlen%(s%)-1*(sequlen%(s%)<32)
 1900 text$=chord$(s%,c%)+STRING$(4-LEN(chord$(s%,c%))," ")
 1910 x%=((c%-1)MOD4)*128+4:y%=-((c%-1)DIV4)*56-4
 1920 chord_icon%(s%,c%)=FNadd_icon(type$,text$,window%,x%,y%,4,0,1)
 1930 PROCicon_validation(window%,chord_icon%(s%,c%),chord_input$)
 1940 IF text$="    " PROCput_icon_text(window%,chord_icon%(s%,c%),"")
 1950 text$=rhythm$(s%,c%)
 1960 rhythm_icon%(s%,c%)=FNadd_icon(type$,text$,window%,x%+88,y%,1,0,1)
 1970 PROCicon_validation(window%,rhythm_icon%(s%,c%),rhythm_input$)
 1980 PROCicon_bg_colour(window%,rhythm_icon%(s%,c%),14)
 1990 PROCicon_fg_colour(window%,rhythm_icon%(s%,c%),11)
 2000 NEXT
 2010ENDPROC
 2020:
 2030DEFPROCrhythm_window(r%)
 2040LOCAL title$,type$,window%,w%,vw%,px%,py%,b%,c%,x%,y%,icon%
 2050rf%=%10000111000000000000000000010010
 2060rh%=392:rvh%=rh%:w%=88+40*nobeats%(r%):vw%=w%:px%=640+r%*48:py%=588-r%*48
 2070title$="Rhythm "+CHR$(r%+97)+" ("+rhythm_name$(r%)+")":type$="label"
 2080rhythm_window%(r%)=FNcreate_window(title$,rf%,w%,rh%,px%,vw%,py%,rvh%)
 2090window%=rhythm_window%(r%)
 2100icon%=FNadd_icon(type$,"6   ",window%,4,-4,4,0,1)
 2110icon%=FNadd_icon(type$,"5   ",window%,4,-60,4,0,1)
 2120icon%=FNadd_icon(type$,"4   ",window%,4,-116,4,0,1)
 2130icon%=FNadd_icon(type$,"3   ",window%,4,-172,4,0,1)
 2140icon%=FNadd_icon(type$,"2   ",window%,4,-228,4,0,1)
 2150icon%=FNadd_icon(type$,"1   ",window%,4,-284,4,0,1)
 2160icon%=FNadd_icon(type$,"bass",window%,4,-340,4,0,1)
 2170type$="select"
 2180FOR b%=1 TO nobeats%(r%):FOR c%=1 TO 7
 2190 IF ins%(r%,c%,b%)=0 text$=" " ELSE text$=STR$(ins%(r%,c%,b%))
 2200 x%=52+b%*40:  y%=52-c%*56
 2210 beat_icon%(c%,b%)=FNadd_icon(type$,text$,window%,x%,y%,1,0,1)
 2220 IF vol%(r%,c%,b%)<0 bg_colour%=15 ELSE bg_colour%=vol%(r%,c%,b%)
 2230 PROCicon_bg_colour(window%,beat_icon%(c%,b%),bg_colour%)
 2240 IF c%<7 PROCicon_fg_colour(window%,beat_icon%(c%,b%),11)
 2250 IF c%=7 PROCicon_fg_colour(window%,beat_icon%(c%,b%),10)
 2260 NEXT:NEXT
 2270ENDPROC
 2280:
 2290DEFPROCstereo_window
 2300LOCAL p%,c%,on%
 2310f%=%10000100000000000000000000010010
 2320title$="Stereo Positions"
 2330w%=576:h%=816:vw%=w%:vh%=h%:px%=0:py%=0
 2340stereo_pos%=FNcreate_window(title$,f%,w%,h%,px%,vw%,py%,vh%)
 2350FOR p%=0 TO 6:FOR c%=1 TO 8
 2360 IF stereo%(c%)=p%-3 on%=1 ELSE on%=0
 2370 icon%=FNadd_icon("radio"," ",stereo_pos%,224+48*p%,-(c%*96-54),on%,c%,0)
 2380 NEXT:NEXT
 2390icon%=FNadd_icon("label","Chords 6",stereo_pos%,32,-48,0,0,1)
 2400icon%=FNadd_icon("label","       5",stereo_pos%,32,-144,0,0,1)
 2410icon%=FNadd_icon("label","       4",stereo_pos%,32,-240,0,0,1)
 2420icon%=FNadd_icon("label","       3",stereo_pos%,32,-336,0,0,1)
 2430icon%=FNadd_icon("label","       2",stereo_pos%,32,-432,0,0,1)
 2440icon%=FNadd_icon("label","       1",stereo_pos%,32,-528,0,0,1)
 2450icon%=FNadd_icon("label","Bass    ",stereo_pos%,32,-624,0,0,1)
 2460icon%=FNadd_icon("label","Keyboard",stereo_pos%,32,-720,0,0,1)
 2470ENDPROC
 2480:
 2490DEFPROCinfo
 2500PROCput_info_text(info%,app_name$,app_purpose$,app_author$,app_version$)
 2510ENDPROC
 2520:
 2530DEFPROCmenus
 2540PROCload_menus(app_directory$+".menus")
 2550PROCname_voices
 2560PROCclear_flags
 2570PROCput_writem(5,"A")
 2580ENDPROC
 2590:
 2600DEFPROCclear_flags
 2610FOR menu%=14 TO 17:FOR item%=0 TO 31:PROCclear_write_flag(menu%,item%)
 2620NEXT:NEXT
 2630ENDPROC
 2640:
 2650DEFPROCadd_flags
 2660FOR menu%=14 TO 17:FOR item%=0 TO 31:PROCadd_write_flag(menu%,item%)
 2670NEXT:NEXT
 2680ENDPROC
 2690:
 2700DEFPROCwimp_poll
 2710LOCAL poll_mask%
 2720poll_mask%=&832
 2730REPEAT
 2740 SYS262343,poll_mask%,blk% TO event%
 2750 CASE event% OF
 2760  WHEN 2:PROCopen_window_event
 2770  WHEN 3:window%=!blk%:PROCclose_window(window%)
 2780  WHEN 6:PROCmouse_button
 2790  WHEN 7:PROCdrag_over
 2800  WHEN 8:PROCkey_press
 2810  WHEN 9:PROCmenu_selection
 2820  WHEN12:PROCgain_caret
 2830  WHEN17,18:PROCmessage
 2840 ENDCASE
 2850 PROCevent
 2860UNTIL quit%
 2870ENDPROC
 2880:
 2890DEFPROCopen_window_event
 2900SYS262341,,blk%
 2910ENDPROC
 2920:
 2930DEFPROCclose_window(window%)
 2940!blk%=window%:SYS262342,,blk%
 2950ENDPROC
 2960:
 2970DEF PROCmouse_button
 2980LOCAL wx%,wy%,x%,y%
 2990mousex%=blk%!0:mousey%=blk%!4:mousebut%=blk%!8
 3000window_handle%=blk%!12:icon_handle%=blk%!16
 3010wx%=FNwindow_x_origin(window_handle%):wy%=FNwindow_y_origin(window_handle%)
 3020x%=mousex%-wx%:y%=wy%-mousey%
 3030CASE window_handle% OF
 3040 WHEN icon_bar%:PROCicon_bar_click
 3050 WHEN keyboard_window%:PROCkeyboard_window_click
 3060 WHEN save%:PROCsave_click
 3070 WHEN save_rthm%:PROCsave_rhythm_click
 3080 WHEN stereo_pos%:PROCstereo_click
 3090ENDCASE
 3100FOR s%=0 TO sequences%-1
 3110 IF sequence_window%(s%)=window_handle% THEN
 3120  edit_sequence%=s%:PROCsequence_window_click
 3130 ENDIF
 3140NEXT
 3150FOR s%=0 TO rhythms%-1
 3160 IF rhythm_window%(s%)=window_handle% THEN
 3170  edit_rhythm%=s%
 3180  edit_beat%=1+(x%-88)DIV40
 3190  edit_channel%=1+y%DIV56
 3200  edit_icon%=icon_handle%
 3210  PROCrhythm_window_click
 3220 ENDIF
 3230NEXT
 3240ENDPROC
 3250:
 3260DEFPROCdrag_over
 3270LOCAL window%,icon%,x%,y%,file$,start%,size%,type%
 3280SYS262351,,blk%
 3290x%=blk%!0:y%=blk%!4
 3300window%=blk%!12:icon%=blk%!16
 3310CASE drag_window% OF
 3320 WHEN save%
 3330  file$=FNleaf(FNget_icon_text(save%,name_icon%))
 3340  type%=FNicon_sprite_type(save%,file_icon%)
 3350  PROCinitiate_save(window%,icon%,x%,y%,file$,END,0,type%)
 3360 WHEN save_rthm%
 3370  file$=FNleaf(FNget_icon_text(save_rthm%,rhythm_name_icon%))
 3380  type%=FNicon_sprite_type(save_rthm%,rhythm_file_icon%)
 3390  PROCinitiate_save(window%,icon%,x%,y%,file$,END,0,type%)
 3400 ENDCASE
 3410ENDPROC
 3420:
 3430DEFPROCkey_press
 3440LOCAL window_handle%,icon_handle%,key%
 3450window_handle%=blk%!0:icon_handle%=blk%!4:key%=blk%!24
 3460IF key%=&61 OR key%=&66 ENDPROC
 3470IF key%=&18A key%=&61
 3480IF key%=&1CD key%=&66
 3490CASE window_handle% OF
 3500 WHEN save%:PROCsave_key_press(key%,icon_handle%)
 3510 WHEN save_rthm%:PROCsave_rhythm_key_press(key%,icon_handle%)
 3520 WHEN keyboard_window%:PROCkeyboard(key%)
 3530 OTHERWISE
 3540  SYS262364,key%
 3550 ENDCASE
 3560FOR s%=0 TO sequences%-1
 3570 IF sequence_window%(s%)=window_handle% edit_sequence%=s%
 3580 NEXT
 3590FOR c%=1 TO sequlen%(edit_sequence%)-1*(sequlen%(edit_sequence%)<32)
 3600 IF chord_icon%(edit_sequence%,c%)=icon_handle% PROCchord_key_press(window_handle%,icon_handle%,edit_sequence%,c%,key%)
 3610 NEXT
 3620FOR r%=1 TO sequlen%(edit_sequence%)-1*(sequlen%(edit_sequence%)<32)
 3630 IF rhythm_icon%(edit_sequence%,r%)=icon_handle% PROCrhythm_key_press(window_handle%,icon_handle%,edit_sequence%,r%,key%)
 3640 NEXT
 3650ENDPROC
 3660:
 3670DEFPROCmenu_selection
 3680LOCAL menu_path$,menu_item$
 3690menu_path$=FNdecode_menu(current_menu%,blk%)
 3700menu_item$=FNleaf(menu_path$)
 3710CASE current_menu% OF
 3720 WHEN menu%(1):PROCmain_menu(menu_item$)
 3730 WHEN menu%(2):PROCsequence_menu(menu_item$)
 3740 WHEN menu%(4):PROCrhythm_menu(menu_item$)
 3750 WHEN menu%(5):PROCkeyboard_menu(menu_item$)
 3760ENDCASE
 3770SYS262351,,blk%
 3780IF blk%!8=adjust_click% SYS262356,,current_menu%,menu_x%,menu_y%
 3790ENDPROC
 3800:
 3810DEFPROCgain_caret
 3820window_handle%=blk%!0:icon_handle%=blk%!4
 3830IF window_handle%=keyboard_window% THEN
 3840 PROCicon_bg_colour(keyboard_window%,on_icon%,14)
 3850 PROCput_icon_text(keyboard_window%,on_icon%," ON ")
 3860ELSE
 3870 PROCicon_bg_colour(keyboard_window%,on_icon%,1)
 3880 PROCput_icon_text(keyboard_window%,on_icon%," OFF ")
 3890ENDIF
 3900ENDPROC
 3910:
 3920DEFPROCmessage
 3930LOCAL message_type%
 3940message_type%=blk%!16
 3950CASE message_type% OF
 3960 WHEN 0:quit%=TRUE
 3970 WHEN 1:PROCsave_request
 3980 WHEN 2:PROCsave_demand
 3990 WHEN 3:PROCload_request
 4000 WHEN 4:PROCmenu_close
 4010 WHEN 5:PROCdouble_click
 4020ENDCASE
 4030ENDPROC
 4040:
 4050DEFPROCicon_bar_click
 4060LOCAL r%,s%
 4070CASE mousebut% OF
 4080 WHEN menu_click%
 4090  current_menu%=menu%(1)
 4100  menu_x%=mousex%-64:menu_y%=FNmenu_height(menu%(1))+96
 4110  SYS262356,,current_menu%,menu_x%,menu_y%
 4120 WHEN select_click%:PROCopen_windows
 4130 WHEN adjust_click%:PROCopen_window(keyboard_window%)
 4140ENDCASE
 4150ENDPROC
 4160:
 4170DEFPROCsave_click
 4180CASE mousebut% OF
 4190 WHEN select_click%,adjust_click%
 4200  IF icon_handle%=ok_icon% THEN
 4210   file_name$=FNget_icon_text(save%,name_icon%)
 4220   file_type%=FNicon_sprite_type(save%,file_icon%)
 4230   IF INSTR(file_name$,".") THEN
 4240    $(blk%+44)=file_name$+CHR$0:PROCsave(file_name$):PROCmenu_close
 4250   ELSE
 4260    $(blk%+44)=app_directory$+".songs."+file_name$+CHR$0
 4270    PROCsave(app_directory$+".songs."+file_name$)
 4280   ENDIF
 4290  ENDIF
 4300 WHEN select_drag%,adjust_drag%
 4310  IF icon_handle%=file_icon% THEN
 4320   drag_icon%=file_icon%:drag_window%=save%:PROCdrag_box(save%,file_icon%)
 4330  ENDIF
 4340 ENDCASE
 4350ENDPROC
 4360:
 4370DEFPROCsave_rhythm_click
 4380CASE mousebut% OF
 4390 WHEN select_click%,adjust_click%
 4400  IF icon_handle%=ok_icon% THEN
 4410   file_name$=FNget_icon_text(save_rthm%,rhythm_name_icon%)
 4420   file_type%=FNicon_sprite_type(save_rthm%,rhythm_file_icon%)
 4430   IF INSTR(file_name$,".") THEN
 4440    $(blk%+44)=file_name$+CHR$0:PROCsave_rhythm(file_name$):PROCmenu_close
 4450   ELSE
 4460    $(blk%+44)=app_directory$+".rhythms."+file_name$+CHR$0
 4470    PROCsave_rhythm(app_directory$+".rhythms."+file_name$)
 4480   ENDIF
 4490  ENDIF
 4500 WHEN select_drag%,adjust_drag%
 4510  IF icon_handle%=rhythm_file_icon% THEN
 4520   drag_icon%=rhythm_file_icon%:drag_window%=save_rthm%
 4530   PROCdrag_box(save_rthm%,rhythm_file_icon%)
 4540  ENDIF
 4550 ENDCASE
 4560ENDPROC
 4570:
 4580DEFPROCkeyboard_window_click
 4590CASE mousebut% OF
 4600 WHEN menu_click%
 4610  current_menu%=menu%(5):menu_x%=mousex%-64:menu_y%=mousey%
 4620  SYS262356,,current_menu%,menu_x%,menu_y%
 4630 WHEN select_click%
 4640  CASE icon_handle% OF
 4650   WHEN sustain_icon%
 4660    IF sustain%=0 THEN
 4670     sustain%=1
 4680     PROCput_icon_text(keyboard_window%,sustain_icon%,"ON")
 4690    ELSE sustain%=0
 4700     PROCput_icon_text(keyboard_window%,sustain_icon%,"OFF")
 4710    ENDIF
 4720   WHEN structure_icon%
 4730    IF play_rhythm%=FALSE THEN
 4740     play_rhythm%=TRUE
 4750     PROCicon_bg_colour(keyboard_window%,structure_icon%,0)
 4760    ELSE
 4770     play_rhythm%=FALSE
 4780     PROCicon_bg_colour(keyboard_window%,structure_icon%,11)
 4790    ENDIF
 4800   WHEN left_tempo_icon%
 4810    tempo%-=1:IF tempo%<4 tempo%=4
 4820    PROCput_icon_text(keyboard_window%,tempo_icon%,STR$(tempo%))
 4830   WHEN right_tempo_icon%
 4840    tempo%+=1:IF tempo%>999 tempo%=999
 4850    PROCput_icon_text(keyboard_window%,tempo_icon%,STR$(tempo%))
 4860   WHEN left_trans_icon%
 4870    trans%-=1:IF trans%<-96 trans%=-96
 4880    PROCput_icon_text(keyboard_window%,trans_icon%,STR$(trans%))
 4890   WHEN right_trans_icon%
 4900    trans%+=1:IF trans%>96 trans%=96
 4910    PROCput_icon_text(keyboard_window%,trans_icon%,STR$(trans%))
 4920  ENDCASE
 4930 WHEN adjust_click%
 4940  CASE icon_handle% OF
 4950   WHEN left_tempo_icon%
 4960    tempo%=tempo%DIV2:IF tempo%<4 tempo%=4
 4970    PROCput_icon_text(keyboard_window%,tempo_icon%,STR$(tempo%))
 4980   WHEN right_tempo_icon%
 4990    tempo%=tempo%*2:IF tempo%>999 tempo%=999
 5000    PROCput_icon_text(keyboard_window%,tempo_icon%,STR$(tempo%))
 5010   WHEN left_trans_icon%
 5020    trans%-=8:IF trans%<-96 trans%=-96
 5030    PROCput_icon_text(keyboard_window%,trans_icon%,STR$(trans%))
 5040   WHEN right_trans_icon%
 5050    trans%+=8:IF trans%>96 trans%=96
 5060    PROCput_icon_text(keyboard_window%,trans_icon%,STR$(trans%))
 5070   ENDCASE
 5080 ENDCASE
 5090PROCput_writem(3,STR$(tempo%)):PROCput_writem(4,STR$(trans%))
 5100ENDPROC
 5110:
 5120DEFPROCsequence_window_click
 5130CASE mousebut% OF
 5140 WHEN menu_click%:current_menu%=menu%(2):menu_x%=mousex%-64:menu_y%=mousey%
 5150  SYS262356,,current_menu%,menu_x%,menu_y%
 5160 ENDCASE
 5170ENDPROC
 5180:
 5190DEFPROCrhythm_window_click
 5200LOCAL r%,c%,b%
 5210r%=edit_rhythm%:c%=edit_channel%:b%=edit_beat%:i%=edit_icon%
 5220PROCput_icon_text(save_rthm%,1,rhythm_name$(r%))
 5230CASE mousebut% OF
 5240 WHEN menu_click%:current_menu%=menu%(4):menu_x%=mousex%-64:menu_y%=mousey%
 5250  SYS262356,,current_menu%,menu_x%,menu_y%
 5260 WHEN select_click%
 5270  IF vol%(r%,c%,b%)<0 THEN
 5280   vol%(r%,c%,b%)+=8
 5290   PROCicon_bg_colour(rhythm_window%(r%),i%,vol%(r%,c%,b%))
 5300  ELSE
 5310   vol%(r%,c%,b%)-=8
 5320   PROCicon_bg_colour(rhythm_window%(r%),i%,15)
 5330  ENDIF
 5340 WHEN adjust_click%
 5350  vol%(r%,c%,b%)-=1:IF vol%(r%,c%,b%)<0 vol%(r%,c%,b%)=7
 5360  PROCicon_bg_colour(rhythm_window%(r%),i%,vol%(r%,c%,b%))
 5370 WHEN select_menu_click%:ins%(r%,c%,b%)+=1
 5380  IF ins%(r%,c%,b%)>6 THEN
 5390   ins%(r%,c%,b%)=0:ins$=" "
 5400   ELSE ins$=STR$(ins%(r%,c%,b%))
 5410  ENDIF
 5420  PROCput_icon_text(rhythm_window%(r%),i%,ins$)
 5430 ENDCASE
 5440ENDPROC
 5450:
 5460DEFPROCstereo_click
 5470LOCAL channel%,position%
 5480CASE mousebut% OF
 5490 WHEN select_click%,adjust_click%
 5500  IF icon_handle%<56 AND icon_handle%>-1 THEN
 5510   channel%=1+icon_handle%MOD8:IFchannel%=1
 5520   position%=icon_handle%DIV8
 5530   stereo%(channel%)=position%-3
 5540   SYS262466,channel%,stereo%(channel%)*32
 5550  ENDIF
 5560  IF mousebut%=select_click% PROCmenu_close
 5570 ENDCASE
 5580ENDPROC
 5590:
 5600DEFPROCmain_menu(item$)
 5610CASE item$ OF
 5620 WHEN "Quit"
 5630  quit%=TRUE
 5640 WHEN "Keyboard"
 5650  PROCopen_window(keyboard_window%)
 5660 WHEN "Chords and Rhythms"
 5670  FOR s%=0 TO sequences%-1:PROCopen_window(sequence_window%(s%)):NEXT
 5680  FOR r%=0 TO rhythms%-1:PROCopen_window(rhythm_window%(r%)):NEXT
 5690 WHEN "Update Instruments"
 5700  SYS263872
 5710  PROCadd_flags:PROCname_voices:PROCclear_flags
 5720  SYS263873
 5730 ENDCASE
 5740ENDPROC
 5750:
 5760DEFPROCkeyboard_menu(item$)
 5770LOCAL l%,s%
 5780numeric_path$=FNmenu_path(blk%)
 5790CASE numeric_path$ OF
 5800 WHEN "0.0":file_path$=FNget_writem(2):PROCload(file_path$)
 5810 WHEN "2"
 5820  play_song%=TRUE:play_sequence%=TRUE:play_rhythm%=TRUE
 5830  PROCicon_bg_colour(sequence_window%(Z%),chord_icon%(Z%,C%),0)
 5840  PROCicon_bg_colour(keyboard_window%,structure_icon%,0)
 5850  B%=1:C%=1:S%=1:TIME=0
 5860  structure_pos$=LEFT$(structure$,S%-1)+"("+MID$(structure$,S%,1)+")"+MID$(structure$,S%+1,19-S%)
 5870  PROCput_icon_text(keyboard_window%,structure_icon%,structure_pos$)
 5880  Z%=ASC(MID$(structure$,S%,1))-65
 5890  PROCchord(chord$(Z%,C%))
 5900  R%=ASC(rhythm$(Z%,C%))-97
 5910 WHEN "3"
 5920  IF repeat%=FALSE THEN
 5930   PROCtick(2,1,TRUE):PROCtick(4,1,TRUE):PROCtick(5,3,TRUE)
 5940   repeat%=TRUE
 5950  ELSE PROCtick(2,1,FALSE):PROCtick(4,1,FALSE):PROCtick(5,3,FALSE)
 5960   repeat%=FALSE
 5970  ENDIF
 5980 WHEN "4.0":structure$=item$
 5990  structure_pos$=LEFT$(structure$,S%-1)+"("+MID$(structure$,S%,1)+")"+MID$(structure$,S%+1,19-S%)
 6000  PROCput_icon_text(keyboard_window%,structure_icon%,structure_pos$)
 6010 WHEN "5.0":tempo%=VAL(item$)
 6020  PROCput_icon_text(keyboard_window%,tempo_icon%,item$)
 6030 WHEN "11.0":trans%=VAL(item$)
 6040  PROCput_icon_text(keyboard_window%,trans_icon%,item$)
 6050 ENDCASE
 6060l%=VAL(LEFT$(numeric_path$,1))
 6070IF l%>5 AND l%<9 PROCoctaves(numeric_path$)
 6080IF l%=9 PROCinstruments(numeric_path$)
 6090ENDPROC
 6100:
 6110DEFPROCsequence_menu(item$)
 6120numeric_path$=FNmenu_path(blk%)
 6130CASE numeric_path$ OF
 6140 WHEN "0"
 6150  play_sequence%=TRUE:play_rhythm%=TRUE:play_song%=FALSE
 6160  PROCicon_bg_colour(sequence_window%(Z%),chord_icon%(Z%,C%),0)
 6170  PROCicon_bg_colour(keyboard_window%,structure_icon%,0)
 6180  B%=1:C%=1:S%=1:TIME=0:Z%=edit_sequence%
 6190  PROCchord(chord$(Z%,C%))
 6200  R%=ASC(rhythm$(Z%,C%))-97
 6210 WHEN "1"
 6220  IF repeat%=FALSE THEN
 6230   PROCtick(2,1,TRUE):PROCtick(4,1,TRUE):PROCtick(5,3,TRUE)
 6240   repeat%=TRUE
 6250  ELSE PROCtick(2,1,FALSE):PROCtick(4,1,FALSE):PROCtick(5,3,FALSE)
 6260   repeat%=FALSE
 6270  ENDIF
 6280 WHEN "2":PROCcopy_sequence(edit_sequence%)
 6290 WHEN "3":PROCadd_sequence
 6300 WHEN "4":PROCclear_sequence(edit_sequence%)
 6310 WHEN "5.0":r$=item$
 6320  IF ASC(r$)<65 OR ASC(r$)>122 r$="a":PROCput_writem(1,r$)
 6330  IF ASC(r$)<97 r$=CHR$(ASC(r$)+32):PROCput_writem(1,r$)
 6340  PROCglobal_rhythm(r$,edit_sequence%)
 6350 ENDCASE
 6360ENDPROC
 6370:
 6380DEFPROCrhythm_menu(item$)
 6390numeric_path$=FNmenu_path(blk%)
 6400CASE numeric_path$ OF
 6410 WHEN "0"
 6420  play_rhythm%=TRUE:play_sequence%=FALSE:play_song%=FALSE
 6430  PROCicon_bg_colour(sequence_window%(Z%),chord_icon%(Z%,C%),0)
 6440  PROCicon_bg_colour(keyboard_window%,structure_icon%,0)
 6450  B%=1:C%=1:S%=1:Z%=0:TIME=0:PROCchord("C"):R%=edit_rhythm%
 6460 WHEN "1"
 6470  IF repeat%=FALSE THEN
 6480   PROCtick(2,1,TRUE):PROCtick(4,1,TRUE):PROCtick(5,3,TRUE):repeat%=TRUE
 6490  ELSE PROCtick(2,1,FALSE):PROCtick(4,1,FALSE):PROCtick(5,3,FALSE)
 6500   repeat%=FALSE
 6510  ENDIF
 6520 WHEN "2":PROCcopy_rhythm(edit_rhythm%)
 6530 WHEN "3":PROCadd_rhythm
 6540 WHEN "4":PROCclear_rhythm(edit_rhythm%)
 6550 WHEN "5.0":n%=VAL(item$):IF n%>16 n%=16:PROCput_writem(5,STR$(n%))
 6560  nobeats%(edit_rhythm%)=n%:PROCno_beats(edit_rhythm%)
 6570 WHEN "6.0":cvol%=1:PROCtick(20,0,TRUE):PROCtick(20,1,FALSE)
 6580 WHEN "6.1":cvol%=2:PROCtick(20,0,FALSE):PROCtick(20,1,TRUE)
 6590 WHEN "7.0":bvol%=1:PROCtick(21,0,TRUE):PROCtick(21,1,FALSE)
 6600 WHEN "7.1":bvol%=2:PROCtick(21,0,FALSE):PROCtick(21,1,TRUE)
 6610 WHEN "8.0":fxvol%=1:PROCtick(22,0,TRUE):PROCtick(22,1,FALSE)
 6620 WHEN "8.1":fxvol%=2:PROCtick(22,0,FALSE):PROCtick(22,1,TRUE)
 6630 WHEN "9.0":file_path$=FNget_writem(135)
 6640  IF INSTR(file_path$,".")=0 file_path$=app_directory$+".rhythms."+file_path$
 6650  PROCload_rhythm(file_path$)
 6660 ENDCASE
 6670ENDPROC
 6680:
 6690DEFPROCsave_key_press(key%,icon_handle%)
 6700LOCAL file_name$,file_type%
 6710CASE key% OF
 6720 WHEN 13
 6730  file_name$=FNget_icon_text(save%,name_icon%)
 6740  file_type%=FNicon_sprite_type(save%,file_icon%)
 6750  IF INSTR(file_name$,".") THEN
 6760   $(blk%+44)=file_name$+CHR$0
 6770   PROCsave(file_name$):PROCmenu_close
 6780  ELSE
 6790   $(blk%+44)=app_directory$+".songs."+file_name$+CHR$0
 6800   PROCsave(app_directory$+".songs."+file_name$)
 6810  ENDIF
 6820 ENDCASE
 6830ENDPROC
 6840:
 6850DEFPROCsave_rhythm_key_press(key%,icon_handle%)
 6860LOCAL file_name$,file_type%
 6870CASE key% OF
 6880 WHEN 13
 6890  file_name$=FNget_icon_text(save_rthm%,rhythm_name_icon%)
 6900  file_type%=FNicon_sprite_type(save_rthm%,rhythm_file_icon%)
 6910  IF INSTR(file_name$,".") THEN
 6920   $(blk%+44)=file_name$+CHR$0:PROCsave_rhythm(file_name$):PROCmenu_close
 6930  ELSE
 6940   $(blk%+44)=app_directory$+".rhythms."+file_name$+CHR$0
 6950   PROCsave_rhythm(app_directory$+".rhythms."+file_name$)
 6960  ENDIF
 6970 ENDCASE
 6980ENDPROC
 6990:
 7000DEFPROCchord_key_press(window%,icon%,s%,c%,key%)
 7010CASE key% OF
 7020 WHEN 13:PROCenter_chord(window%,icon%,s%,c%)
 7030 WHEN &4:PROCdelete_chord(window%,icon%,s%,c%)
 7040 WHEN &9:PROCinsert_chord(window%,icon%,s%,c%)
 7050ENDCASE
 7060ENDPROC
 7070:
 7080DEFPROCrhythm_key_press(window%,icon%,s%,p%,key%)
 7090CASE key% OF
 7100 WHEN 13
 7110  rhythm$(s%,p%)=FNget_icon_text(window%,icon%)
 7120  IF p%<sequlen%(s%) PROCplace_caret(window%,rhythm_icon%(s%,p%+1),1)
 7130 ENDCASE
 7140ENDPROC
 7150:
 7160DEFPROCsave_request
 7170LOCAL to_window%,to_icon%,data_type%
 7180to_window%=blk%!20:to_icon%=blk%!24:data_type%=blk%!40
 7190CASE data_type% OF
 7200 WHEN &00A
 7210  file_name$=FNget_string(blk%+44,255)
 7220  blk%!12=blk%!8:blk%!16=4:SYS262375,17,blk%,blk%!4
 7230  PROCload(file_name$)
 7240 WHEN &00B
 7250  file_name$=FNget_string(blk%+44,255)
 7260  blk%!12=blk%!8:blk%!16=4:SYS262375,17,blk%,blk%!4
 7270  PROCload_rhythm(file_name$)
 7280 ENDCASE
 7290ENDPROC
 7300:
 7310DEFPROCload_request
 7320LOCAL file_type%,file_name$
 7330file_type%=blk%!40
 7340CASE file_type% OF
 7350 WHEN &00A:file_name$=FNget_string(blk%+44,255):PROCload(file_name$)
 7360 WHEN &00B:file_name$=FNget_string(blk%+44,255):PROCload_rhythm(file_name$)
 7370 ENDCASE
 7380ENDPROC
 7390:
 7400DEFPROCsave_demand
 7410LOCAL file_name$,file_type%
 7420file_name$=FNget_string(blk%+44,255)
 7430IF blk%!36=-1 THEN to_filer%=FALSE ELSE to_filer%=TRUE
 7440file_type%=blk%!40
 7450CASE drag_window% OF
 7460 WHEN save%:PROCsave(file_name$):PROCmessage_save_reply
 7470  IF to_filer% PROCput_icon_text(save%,1,file_name$)
 7480 WHEN save_rthm%:PROCsave_rhythm(file_name$):PROCmessage_save_reply
 7490  IF to_filer% PROCput_icon_text(save_rthm%,1,file_name$)
 7500 ENDCASE
 7510PROCmenu_close
 7520ENDPROC
 7530:
 7540DEFPROCdouble_click
 7550LOCAL file_type%,file$
 7560file_type%=blk%!40
 7570CASE file_type% OF
 7580 WHEN &00A:file_name$=FNget_string(blk%+44,255)
 7590  blk%!12=blk%!8:blk%!16=4:SYS262375,17,blk%,blk%!4
 7600  PROCload(file_name$)
 7610 WHEN &00B:file_name$=FNget_string(blk%+44,255)
 7620  blk%!12=blk%!8:blk%!16=4:SYS262375,17,blk%,blk%!4
 7630  PROCload_rhythm(file_name$)
 7640 ENDCASE
 7650ENDPROC
 7660:
 7670DEFPROCload_check
 7680file_to_load$=FNcommand_line
 7690IF file_to_load$<>"" THEN
 7700 CASE FNfile_type(file_to_load$) OF
 7710  WHEN &00A:PROCload(file_to_load$)
 7720  WHEN &00B:PROCload_rhythm(file_to_load$)
 7730 ENDCASE
 7740ENDIF
 7750ENDPROC
 7760:
 7770DEFPROCsave(file$)
 7780SYS263872
 7790LOCAL s%,c%,r%,b%,v%
 7800F%=OPENOUT(file$)
 7810PRINT#F%,tempo%,sequences%,rhythms%,structure$
 7820FOR s%=0 TO sequences%-1:PRINT#F%,sequlen%(s%):FOR c%=1 TO sequlen%(s%)
 7830 PRINT#F%,chord$(s%,c%),rhythm$(s%,c%)
 7840 NEXT:NEXT
 7850FOR r%=0 TO rhythms%-1:PRINT#F%,nobeats%(r%),rhythm_name$(r%):FOR c%=1 TO 7:FOR b%=1 TO nobeats%(r%)
 7860 PRINT#F%,vol%(r%,c%,b%),ins%(r%,c%,b%)
 7870 NEXT:NEXT:NEXT
 7880FOR v%=1 TO 6:PRINT#F%,fx%(v%),fxchannel%(v%):NEXT
 7890CLOSE#F%:PROCmenu_close
 7900SYS8,&12,blk%+44,&00A:SYS263873
 7910ENDPROC
 7920:
 7930DEFPROCload(file$)
 7940LOCAL s%,c%,r%,b%,v%
 7950FOR c%=1 TO 8:SOUND c%,0,0,-1:NEXT
 7960F%=OPENIN(file$)
 7970IF F%=0 PROCreport_error("File not found","Loading"):ENDPROC
 7980SYS263872
 7990PROCdelete_windows:FOR s%=0 TO sequences%-1:FOR c%=1 TO sequlen%(s%):chord$(s%,c%)="    ":rhythm$(s%,c%)="a":NEXT:NEXT
 8000FOR r%=0 TO rhythms%-1:rhythm_name$(r%)=CHR$(r%+97):NEXT
 8010INPUT#F%,tempo%,sequences%,rhythms%,structure$
 8020FOR s%=0 TO sequences%-1:INPUT#F%,sequlen%(s%):FOR c%=1 TO sequlen%(s%)
 8030 INPUT#F%,chord$(s%,c%),rhythm$(s%,c%)
 8040 NEXT:NEXT
 8050FOR r%=0 TO rhythms%-1:INPUT#F%,nobeats%(r%),rhythm_name$(r%):FOR c%=1 TO 7:FOR b%=1 TO nobeats%(r%)
 8060 INPUT#F%,vol%(r%,c%,b%),ins%(r%,c%,b%)
 8070 NEXT:NEXT:NEXT
 8080FOR v%=1 TO 6:INPUT#F%,fx%(v%),fxchannel%(v%):NEXT
 8090CLOSE#F%:PROCupdate_windows(file$)
 8100PROCput_writem(3,STR$(tempo%)):PROCput_writem(4,STR$(trans%)):PROCput_writem(5,structure$):PROCput_icon_text(save%,1,file$)
 8110PROCopen_windows:PROCopen_window(keyboard_window%):SYS263873
 8120play_rhythm%=0
 8130ENDPROC
 8140:
 8150DEFPROCsave_rhythm(file$)
 8160SYS263872
 8170LOCAL c%,r%,b%:r%=edit_rhythm%:F%=OPENOUT(file$):PRINT#F%,nobeats%(r%)
 8180FOR c%=1 TO 7:FOR b%=1 TO nobeats%(r%):PRINT#F%,vol%(r%,c%,b%),ins%(r%,c%,b%)
 8190 NEXT:NEXT
 8200CLOSE#F%:rhythm_name$(r%)=FNleaf(file$)
 8210PROCdelete_window(rhythm_window%(r%)):PROCrhythm_window(r%)
 8220PROCopen_window(rhythm_window%(r%))
 8230SYS8,&12,blk%+44,&00B:SYS263873
 8240ENDPROC
 8250:
 8260DEFPROCload_rhythm(file$)
 8270IF rhythms%=26:PROCreport_error("Only 26 rhythms possible!","Load Rhythm"):ENDPROC
 8280F%=OPENIN(file$):IF F%=0 PROCreport_error("File not found","Loading"):ENDPROC
 8290SYS263872:LOCAL c%,r%,b%:r%=rhythms%:INPUT#F%,nobeats%(r%)
 8300FOR c%=1 TO 7:FOR b%=1 TO nobeats%(r%):INPUT#F%,vol%(r%,c%,b%),ins%(r%,c%,b%)
 8310 NEXT:NEXT
 8320rhythm_name$(r%)=FNleaf(file$)
 8330PROCrhythm_window(rhythms%):PROCopen_window(rhythm_window%(rhythms%))
 8340rhythms%+=1:CLOSE#F%:SYS263873
 8350ENDPROC
 8360:
 8370DEFPROCerror(!errorblk%,error$)
 8380errorcount%+=1
 8390IF errorcount%>5:ERROR EXT 0,"Too many errors!"
 8400IF ERR<200 error$+=" at line "+STR$(ERL DIV10)
 8410IF ERR=200 error$="*** Error in menu file! *** "+error$
 8420IF ERR=201 error$="***     Menu error      *** "+error$
 8430IF ERR=202 error$="***     Icon error      *** "+error$
 8440IF ERR=203 error$="***     File error      *** "+error$
 8450IF ERR=204 error$="***    Window error     *** "+error$
 8460SYS131085,0,menufile%
 8470SYS393434
 8480$(errorblk%+4)=error$
 8490SYS262367,errorblk%,1,app_name$
 8500ENDPROC
 8510:
 8520DEFPROCquit
 8530*FX12
 8540SYS262365
 8550END
 8560ENDPROC
 8570:
 8580DEFPROCevent
 8590IF sustain%=0 PROCkeyboard(0)
 8600IF TIME>tempo% TIME=0:IF play_rhythm% PROCstrum
 8610ENDPROC
 8620:
 8630DEFPROCstereo
 8640FOR ch%=1 TO 8:SYS262466,ch%,stereo%(ch%)*32:NEXT
 8650ENDPROC
 8660:
 8670DEFPROCcopy_sequence(s%)
 8680LOCAL c%
 8690SYS263872
 8700IF sequences%=26:PROCreport_error("Only 26 sequences possible!","Copy Sequence"):ENDPROC
 8710FOR c%=1 TO sequlen%(s%)
 8720 chord$(sequences%,c%)=chord$(s%,c%):rhythm$(sequences%,c%)=rhythm$(s%,c%)
 8730 NEXT
 8740sequlen%(sequences%)=sequlen%(s%)
 8750PROCsequence_window(sequences%):PROCopen_window(sequence_window%(sequences%))
 8760sequences%+=1:SYS263873
 8770ENDPROC
 8780:
 8790DEFPROCadd_sequence
 8800SYS263872
 8810IF sequences%=26:PROCreport_error("Only 26 sequences possible!","Add Sequence"):ENDPROC
 8820PROCsequence_window(sequences%):PROCopen_window(sequence_window%(sequences%))
 8830sequences%+=1:SYS263873
 8840ENDPROC
 8850:
 8860DEFPROCclear_sequence(s%)
 8870LOCAL c%
 8880SYS263872
 8890FOR c%=1 TO 32:chord$(s%,c%)="    ":rhythm$(s%,c%)="a":NEXT
 8900sequlen%(s%)=0:PROCdelete_window(sequence_window%(s%))
 8910PROCsequence_window(s%):PROCopen_window(sequence_window%(s%))
 8920SYS263873
 8930ENDPROC
 8940:
 8950DEFPROCglobal_rhythm(r$,s%)
 8960LOCAL c%
 8970SYS263872
 8980FOR c%=1 TO 32:rhythm$(s%,c%)=r$:NEXT
 8990PROCclose_window(sequence_window%(s%))
 9000PROCsequence_window(s%):PROCopen_window(sequence_window%(s%))
 9010SYS263873
 9020ENDPROC
 9030:
 9040DEFPROCcopy_rhythm(r%)
 9050LOCAL c%,b%
 9060SYS263872
 9070IF rhythms%=26:PROCreport_error("Only 26 rhythms possible!","Copy Rhythm"):ENDPROC
 9080nobeats%(rhythms%)=nobeats%(r%)
 9090FOR c%=1 TO 7:FOR b%=1 TO nobeats%(r%)
 9100  vol%(rhythms%,c%,b%)=vol%(r%,c%,b%)
 9110  ins%(rhythms%,c%,b%)=ins%(r%,c%,b%)
 9120  NEXT:NEXT
 9130PROCrhythm_window(rhythms%):PROCopen_window(rhythm_window%(rhythms%))
 9140rhythms%+=1:SYS263873
 9150ENDPROC
 9160:
 9170DEFPROCadd_rhythm
 9180SYS263872
 9190IF rhythms%=26:PROCreport_error("Only 26 rhythms possible!","Add Rhythm"):ENDPROC
 9200PROCrhythm_window(rhythms%):PROCopen_window(rhythm_window%(rhythms%))
 9210rhythms%+=1:SYS263873
 9220ENDPROC
 9230:
 9240DEFPROCclear_rhythm(r%)
 9250LOCAL c%,b%
 9260SYS263872
 9270FOR c%=1 TO 7:FOR b%=1 TO nobeats%(r%)
 9280  vol%(r%,c%,b%)=-1
 9290  ins%(r%,c%,b%)=0
 9300  NEXT:NEXT
 9310PROCclose_window(rhythm_window%(r%))
 9320PROCrhythm_window(r%):PROCopen_window(rhythm_window%(r%))
 9330SYS263873
 9340ENDPROC
 9350:
 9360DEFPROCno_beats(r%)
 9370SYS263872
 9380PROCclose_window(rhythm_window%(r%))
 9390PROCrhythm_window(r%):PROCopen_window(rhythm_window%(r%))
 9400SYS263873
 9410ENDPROC
 9420:
 9430DEFPROCoctaves(choice$)
 9440LOCAL p%,o%
 9450p%=VAL(LEFT$(choice$,1)):o%=VAL(MID$(choice$,3,1))+1
 9460CASE p% OF
 9470 WHEN 6:PROCtick(10,coct%-1,FALSE):coct%=o%:PROCtick(10,o%-1,TRUE)
 9480 WHEN 7:PROCtick(11,boct%-1,FALSE):boct%=o%:PROCtick(11,o%-1,TRUE)
 9490 WHEN 8:PROCtick(12,koct%-1,FALSE):koct%=o%:PROCtick(12,o%-1,TRUE)
 9500ENDCASE
 9510ENDPROC
 9520:
 9530DEFPROCname_voices
 9540LOCAL m%,voice$
 9550FOR m%=0 TO 127
 9560 SYS262531,0,1+m%MOD32 TO voice$,F%
 9570 IF INSTR(voice$,"!K")=0 THEN
 9580  IF m%>95 voice$="  "+voice$
 9590  PROCput_writem(m%+6,voice$):PROCshade(14+m%DIV32,m%MOD32,FALSE)
 9600 ELSE
 9610  PROCput_writem(m%+6,STR$(1+m%MOD32)):PROCshade(14+m%DIV32,m%MOD32,TRUE)
 9620 ENDIF
 9630NEXT
 9640ENDPROC
 9650:
 9660DEFPROCinstruments(choice$)
 9670LOCAL r%,p%,v%,F%,voice$
 9680p%=VAL(MID$(choice$,3,1)):v%=VAL(MID$(choice$,5))+1
 9690CASE p% OF
 9700 WHEN 0:PROCtick(14,chord_voice%-1,FALSE):chord_voice%=v%
 9710  PROCtick(14,chord_voice%-1,TRUE)
 9720  SYS262531,0,chord_voice% TO chord_voice$,F%
 9730  PROCput_icon_text(keyboard_window%,chord_ins_icon%,chord_voice$)
 9740 WHEN 1:PROCtick(15,bass_voice%-1,FALSE):bass_voice%=v%
 9750  PROCtick(15,bass_voice%-1,TRUE)
 9760  SYS262533,7,bass_voice%
 9770  SYS262531,0,bass_voice% TO bass_voice$,F%
 9780  PROCput_icon_text(keyboard_window%,bass_ins_icon%,bass_voice$)
 9790 WHEN 2:PROCtick(16,keyboard_voice%-1,FALSE):keyboard_voice%=v%
 9800  PROCtick(16,keyboard_voice%-1,TRUE)
 9810  SYS262533,8,keyboard_voice%
 9820  SYS262531,0,keyboard_voice% TO keyboard_voice$,F%
 9830  PROCput_icon_text(keyboard_window%,keyboard_ins_icon%,keyboard_voice$)
 9840 WHEN 3,4,5,6,7,8
 9850  IF LEFT$(FNget_writem(101+fx%(p%-2)),1)=STR$(p%-2) THEN
 9860   SYS262531,0,fx%(p%-2) TO voice$,F%
 9870   PROCput_writem(101+fx%(p%-2),"  "+voice$)
 9880  ENDIF
 9890  fx%(p%-2)=v%
 9900  SYS262531,0,v% TO voice$,F%
 9910  PROCput_writem(101+v%,STR$(p%-2)+" "+voice$)
 9920 WHEN 9
 9930  IF fxchannel%(v%)=TRUE THEN
 9940   fxchannel%(v%)=FALSE:PROCtick(18,v%-1,FALSE)
 9950   FOR r%=0 TO rhythms%-1:PROCput_icon_text(rhythm_window%(r%),(v%-1)*5,STR$(7-v%)+"   "):NEXT
 9960  ELSE fxchannel%(v%)=TRUE:PROCtick(18,v%-1,TRUE)
 9970   FOR r%=0 TO rhythms%-1:PROCput_icon_text(rhythm_window%(r%),(v%-1)*5,STR$(7-v%)+" FX"):NEXT
 9980  ENDIF
 9990 ENDCASE
10000ENDPROC
10010:
10020DEFPROCenter_chord(window%,icon%,s%,c%)
10030LOCAL type$,x%,y%
10040type$="write":chord$(s%,c%)=FNget_icon_text(window%,icon%)
10050IF c%=sequlen%(s%)+1 THEN
10060 sequlen%(s%)+=1
10070  IF c%<32 THEN
10080   PROCclose_window(window%)
10090   c%+=1:x%=((c%-1)MOD4)*128+4:y%=-((c%-1)DIV4)*56-4
10100   text$=chord$(s%,c%)
10110   chord_icon%(s%,c%)=FNadd_icon(type$,text$,window%,x%,y%,4,0,1)
10120   PROCput_icon_text(window%,chord_icon%(s%,c%),"")
10130   text$=rhythm$(s%,c%)
10140   rhythm_icon%(s%,c%)=FNadd_icon(type$,text$,window%,x%+88,y%,1,0,1)
10150   PROCicon_bg_colour(window%,rhythm_icon%(s%,c%),14)
10160   PROCicon_fg_colour(window%,rhythm_icon%(s%,c%),11)
10170   PROCopen_window(window%):PROCplace_caret(window%,chord_icon%(s%,c%),0)
10180   ENDIF
10190  ELSE
10200   IF c%<32 PROCplace_caret(window%,chord_icon%(s%,c%+1),0)
10210 ENDIF
10220ENDPROC
10230:
10240DEFPROCdelete_chord(window%,icon%,s%,chord%)
10250LOCAL c%
10260IF sequlen%(s%)=1 OR chord%=sequlen%(s%)+1 ENDPROC
10270FOR c%=chord% TO sequlen%(s%)+1*(sequlen%(s%)=32)
10280 chord$(s%,c%)=chord$(s%,c%+1)
10290 PROCput_icon_text(window%,chord_icon%(s%,c%),chord$(s%,c%))
10300 IF chord$(s%,c%+1)="    " PROCput_icon_text(window%,chord_icon%(s%,c%),"")
10310 rhythm$(s%,c%)=rhythm$(s%,c%+1)
10320 PROCput_icon_text(window%,rhythm_icon%(s%,c%),rhythm$(s%,c%))
10330 NEXT
10340IF sequlen%(s%)=32 THEN
10350 chord$(s%,c%+1)=""
10360 PROCput_icon_text(window%,chord_icon%(s%,c+1%),chord$(s%,c+1%))
10370ELSE
10380 FOR c%=0 TO 4
10390  PROCdelete_icon(window%,chord_icon%(s%,sequlen%(s%)+1)+c%)
10400  PROCdelete_icon(window%,rhythm_icon%(s%,sequlen%(s%)+1)+c%)
10410 NEXT
10420ENDIF
10430sequlen%(s%)-=1
10440ENDPROC
10450:
10460DEFPROCinsert_chord(window%,icon%,s%,chord%)
10470IF sequlen%(s%)=32 OR chord%>sequlen%(s%) ENDPROC
10480LOCAL c%,type$,x%,y%
10490type$="write"
10500PROCclose_window(window%)
10510IF sequlen%(s%)<31 THEN
10520 c%=sequlen%(s%)+2:x%=((c%-1)MOD4)*128+4:y%=-((c%-1)DIV4)*56-4
10530 chord_icon%(s%,c%)=FNadd_icon(type$,"    ",window%,x%,y%,4,0,1)
10540 PROCput_icon_text(window%,chord_icon%(s%,c%),"")
10550 rhythm_icon%(s%,c%)=FNadd_icon(type$,"a",window%,x%+88,y%,1,0,1)
10560 PROCicon_bg_colour(window%,rhythm_icon%(s%,c%),14)
10570 PROCicon_fg_colour(window%,rhythm_icon%(s%,c%),11)
10580 ENDIF
10590sequlen%(s%)+=1
10600FOR c%=sequlen%(s%) TO chord%+1 STEP -1
10610 chord$(s%,c%)=chord$(s%,c%-1)
10620 PROCput_icon_text(window%,chord_icon%(s%,c%),chord$(s%,c%))
10630 rhythm$(s%,c%)=rhythm$(s%,c%-1)
10640 PROCput_icon_text(window%,rhythm_icon%(s%,c%),rhythm$(s%,c%))
10650 NEXT
10660chord$(s%,chord%)="    ":PROCput_icon_text(window%,chord_icon%(s%,c%),"")
10670PROCopen_window(window%):PROCplace_caret(window%,chord_icon%(s%,chord%),0)
10680ENDPROC
10690:
10700DEFPROCkeyboard(k%)
10710N%=INSTR(lowkey$,CHR$k%)+INSTR(highkey$,CHR$k%)-12*(INSTR(highkey$,CHR$k%)>0)
10720IF INSTR(lowkey$,CHR$k%) L%=lkc?(INSTR(lowkey$,CHR$k%))
10730IF INSTR(highkey$,CHR$k%) L%=hkc?(INSTR(highkey$,CHR$k%))
10740IF N%=0 N%=INKEY(-L%)
10750IF N%=-1 OR N%=255 ENDPROC
10760IF N%=0 SOUND 8,0,0,-1:ENDPROC
10770SOUND 8,-15,(N%-1)*&155+(koct%*&1000)+trans%*&2B,-1
10780ENDPROC
10790:
10800DEFPROCstrum
10810LOCAL ch%,i%,v%,p%
10820FOR ch%=1 TO 6
10830 i%=0:v%=-1:i%=ins%(R%,ch%,B%)
10840 IF i% THEN
10850  v%=vol%(R%,ch%,B%)*fxvol%:IF v%>-1 SYS262533,ch%,fx%(i%)
10860 ELSE
10870  v%=vol%(R%,ch%,B%)*cvol%:IF v%>-1 SYS262533,ch%,chord_voice%
10880 ENDIF
10890 IF fxchannel%(ch%)=FALSE p%=p%(7-ch%)*&155+coct%*&1000+trans%*&2B ELSE p%=&3000+trans%*&2B
10900 IF v%>-1 IF p%(7-ch%)>-1 SOUND ch%,-v%,p%,255
10910NEXT
10920v%=vol%(R%,7,B%)*bvol%:p%=p%(ins%(R%,7,B%))*&155+boct%*&1000+trans%*&2B
10930IF v%>-1 IF p%(ins%(R%,7,B%))>-1 SOUND 7,-v%,p%,255
10940IF tempo%>7 PROCbeat
10950IF B%=1 PROCicon_bg_colour(sequence_window%(Z%),chord_icon%(Z%,C%),10)
10960B%+=1
10970IF B%>nobeats%(R%) THEN
10980 B%=1:IF play_sequence%=FALSE AND repeat%=FALSE play_rhythm%=FALSE
10990 PROCicon_bg_colour(sequence_window%(Z%),chord_icon%(Z%,C%),0)
11000 IF play_sequence%=TRUE C%+=1
11010 IF C%>sequlen%(Z%) THEN
11020  C%=1:IF play_song%=FALSE AND repeat%=FALSE play_sequence%=FALSE:play_rhythm%=FALSE
11030  IF play_song%=TRUE S%+=1
11040  IF S%>LEN(structure$) THEN
11050   S%=1:IF repeat%=FALSE play_song%=FALSE:play_sequence%=FALSE:play_rhythm%=FALSE
11060  ENDIF
11070  structure_pos$=LEFT$(structure$,S%-1)+"("+MID$(structure$,S%,1)+")"+MID$(structure$,S%+1,19-S%)
11080  PROCput_icon_text(keyboard_window%,structure_icon%,structure_pos$)
11090  IF play_song% Z%=ASC(MID$(structure$,S%,1))-65
11100 ENDIF
11110 IF play_sequence% PROCchord(chord$(Z%,C%)):R%=ASC(rhythm$(Z%,C%))-97
11120ENDIF
11130ENDPROC
11140:
11150DEFPROCbeat
11160PROCicon_bg_colour(rhythm_window%(last_r%),beat_icon%(1,last_b%),last_vol%)
11170PROCicon_bg_colour(rhythm_window%(R%),beat_icon%(1,B%),14)
11180last_r%=R%:last_b%=B%:last_vol%=vol%(R%,1,B%):IF last_vol%<0 last_vol%=15
11190ENDPROC
11200:
11210DEFPROCchord(c$)
11220LOCAL r%
11230IF c$="/" ENDPROC
11240IF c$="" OR LEFT$(c$,1)=" " p%()=-1:ENDPROC
11250r%=INSTR(root$,LEFT$(c$,1))-1
11260IF INSTR(c$,"#") r%+=1
11270IF INSTR(c$,"b") r%-=1
11280p%()=r%:p%(2)+=4:p%(3)+=7:p%(4)+=12:p%(5)+=16:p%(6)+=19
11290IF (INSTR(c$,"m") OR INSTR(c$,"-")) AND NOT INSTR(c$,"M") p%(2)-=1:p%(5)-=1
11300IF (INSTR(c$,"7") OR INSTR(c$,"11")) AND NOT INSTR(c$,"M") p%(4)-=2
11310IF INSTR(c$,"M7") p%(4)-=1
11320IF INSTR(c$,"+") p%(3)+=1:p%(6)+=1
11330IF INSTR(c$,"-") p%(2)-=1:p%(3)-=1:p%(4)-=3:p%(5)-=4:p%(6)-=5
11340IF INSTR(c$,"s") OR INSTR(c$,"11") p%(2)+=1:p%(5)+=1
11350IF INSTR(c$,"6") OR INSTR(c$,"13") p%(3)+=2:p%(6)+=2
11360IF INSTR(c$,"9") OR INSTR(c$,"13") p%(4)+=2
11370ENDPROC
11380:
11390DEFFNfile_size(file$)
11400LOCAL size%,found%
11410SYS8,17,file$ TO found%,,,,size%
11420IF found%<>1 THEN ERROR 203,"File '"+FNleaf(file$)+"' not found!"
11430=size%
11440:
11450DEFFNfile_type(file$)
11460LOCAL temp%,found%
11470SYS"OS_File",17,file$ TO found%,,temp%
11480IF found%<>1 THEN ERROR 203,"File "+FNleaf(file$)+", not found!"
11490IF(temp%>>>20)=&FFFTHEN=(temp%>>>8)AND&FFF ELSE=0
11500:
11510DEFPROCinitiate_save(window%,icon%,x%,y%,file$,start%,size%,type%)
11520blk%!0=256
11530blk%!12=0
11540blk%!16=1
11550blk%!20=window%
11560blk%!24=icon%
11570blk%!28=x%
11580blk%!32=y%
11590blk%!36=size%
11600blk%!40=type%
11610$(blk%+44)=file$+CHR$0
11620SYS262375,17,blk%,window%,icon% TO destination_task%
11630ENDPROC
11640:
11650DEFPROCmessage_save_reply
11660blk%!12=blk%!8:blk%!16=3:SYS262375,17,blk%,blk%!4
11670ENDPROC
11680:
11690DEFFNcommand_line
11700LOCAL pos%,cmd_line$
11710SYS "OS_GetEnv" TO cmd_line$
11720pos%=INSTR(cmd_line$," -quit ")
11730IF pos%=0 =""
11740pos%+=7
11750WHILEMID$(cmd_line$,pos%,1)=" ":pos%+=1:ENDWHILE
11760pos%=INSTR(cmd_line$+" "," ",pos%+1)
11770REPEATpos%+=1:UNTILMID$(cmd_line$,pos%,1)<>" "
11780cmd_line$=MID$(cmd_line$,pos%)
11790cmd_line$=LEFT$(cmd_line$,INSTR(cmd_line$+" "," ")-1)
11800=cmd_line$
11810:
11820DEFFNadd_icon(type$,text$,window%,x%,y%,sl%,esg_sp%,border%)
11830LOCAL icon%,text_space%,name_space%,val_space%,w%,h%,mode%,xs%,ys%,sel%
11840sel%=sl%
11850IF sl%<LENtext$ sl%=LENtext$
11860IF sl%<LENtype$ sl%=LENtype$
11870DIM text_space% sl%
11880temp_blk%!0=window%
11890temp_blk%!4=x%
11900temp_blk%!8=y%-48
11910temp_blk%!12=x%+16+16*LENtext$
11920temp_blk%!16=y%
11930$text_space%=text$
11940temp_blk%!20=&17000139
11950temp_blk%!24=text_space%
11960temp_blk%!28=-1
11970temp_blk%!32=LENtext$
11980CASE LEFT$(type$,5) OF
11990 WHEN "file_"
12000  SYS262377,&28,,type$+CHR$(0) TO ,,,w%,h%,,mode%
12010  SYS53,mode%,4 TO ,,xs%
12020  SYS53,mode%,5 TO ,,ys%
12030  h%=h%<<ys%:w%=w%<<xs%
12040  IF text$="" THEN
12050   temp_blk%!8=y%-h%
12060   temp_blk%!12=x%+w%
12070   temp_blk%!20=&1700613A
12080   temp_blk%!28=1
12090   temp_blk%!32=LENtype$
12100   $text_space%=type$
12110  ELSE
12120   temp_blk%!8=y%-h%-(10<<ys%)
12130   sl%=(8<<xs%)*LENtext$:IF sl%>w% w%=sl%
12140   temp_blk%!12=x%+w%
12150   temp_blk%!20=&1700612B
12160   DIM name_space% (2+LENtype$)
12170   $name_space%="s"+type$
12180   temp_blk%!28=name_space%
12190  ENDIF
12200 WHEN "sprit"
12210  SYS46,&128,esg_sp%,text$+CHR$(0) TO ,,,w%,h%,,mode%
12220  SYS53,mode%,4 TO ,,xs%
12230  SYS53,mode%,5 TO ,,ys%
12240  h%=h%<<ys%:w%=w%<<xs%
12250  temp_blk%!8=y%-h%
12260  temp_blk%!12=x%+w%
12270  temp_blk%!20=&1700313A
12280  temp_blk%!28=esg_sp%
12290  temp_blk%!32=LENtext$
12300  $text_space%=text$
12310 WHEN "selec":temp_blk%!20=&17003139
12320 WHEN "actio":temp_blk%!20=&C71F913D.
12330 WHEN "repor":temp_blk%!20=&0700313D
12340 WHEN "optio"
12350  temp_blk%!8=y%-52
12360  temp_blk%!12=x%+40+16+16*LENtext$
12370  temp_blk%!20=&1700B133
12380  IF sel% temp_blk%!20=&17303133
12390  DIM val_space% (2+LEN"soptoff,opton")
12400  $val_space%="soptoff,opton"
12410  temp_blk%!28=val_space%
12420 WHEN "radio"
12430  temp_blk%!8=y%-52
12440  temp_blk%!12=x%+40+16+16*LENtext$
12450  IF (esg_sp%<1) OR (esg_sp%>31) THEN esg_sp%=1
12460  temp_blk%!20=&1700B133 OR (esg_sp%*&10000)
12470  IF sel% temp_blk%!20=&1720B133 OR (esg_sp%*&10000)
12480  DIM text_space% (2+LEN"sradiooff,radioon")
12490  $text_space%="sradiooff,radioon"
12500  temp_blk%!28=text_space%
12510 WHEN "write"
12520  temp_blk%!12=x%+16+16*LENtext$
12530  temp_blk%!20=&0700F131
12540  DIM val_space% 27
12550  $val_space%=""
12560  temp_blk%!28=val_space%
12570  IF sel%<(LENtext$) sel%=LENtext$
12580  temp_blk%!32=sel%+1
12590 ENDCASE
12600SYS262338,,temp_blk% TO icon%
12610IF border%>0 PROCborder_icon(window%,icon%)
12620=icon%
12630:
12640DEFFNadd_icon_block(window_handle%,minx%,miny%,maxx%,maxy%,colour%)
12650LOCAL icon%
12660temp_blk%!0=window_handle%
12670IF minx%>maxx% SWAP minx%,maxx%
12680IF miny%>maxy% SWAP miny%,maxy%
12690IF minx%=maxx% maxx%+=1
12700IF miny%=maxy% maxy%+=1
12710temp_blk%!4=minx%
12720temp_blk%!8=miny%
12730temp_blk%!12=maxx%
12740temp_blk%!16=maxy%
12750temp_blk%!20=32+(colour%<<28)
12760SYS262338,,temp_blk% TO icon%
12770=icon%
12780:
12790DEFPROCborder_icon(window_handle%,icon_handle%)
12800LOCAL icon%,minx%,miny%,maxx%,maxy%,flag%,tl%,br%
12810temp_blk%!0=window_handle%
12820temp_blk%!4=icon_handle%
12830SYS262350,,temp_blk%
12840minx%=temp_blk%!8
12850miny%=temp_blk%!12
12860maxx%=temp_blk%!16
12870maxy%=temp_blk%!20
12880flag%=temp_blk%!24
12890tl%=0:br%=4
12900IF (flag% AND 4)=4 minx%-=4:maxx%+=4:miny%-=4:maxy%+=4:tl%=4:br%=0
12910icon%=FNadd_icon_block(window_handle%,maxx%,miny%-4,maxx%+4,maxy%+4,br%)
12920icon%=FNadd_icon_block(window_handle%,minx%-4,maxy%,maxx%+2,maxy%+4,tl%)
12930icon%=FNadd_icon_block(window_handle%,minx%-4,miny%-4,minx%,maxy%,tl%)
12940icon%=FNadd_icon_block(window_handle%,minx%-2,miny%-4,maxx%+2,miny%,br%)
12950ENDPROC
12960:
12970DEFPROCdelete_icon(window_handle%,icon_handle%)
12980LOCAL minx%,miny%,maxx%,maxy%
12990temp_blk%!0=window_handle%:temp_blk%!4=icon_handle%
13000SYS262350,,temp_blk%
13010minx%=temp_blk%!8:miny%=temp_blk%!12:maxx%=temp_blk%!16:maxy%=temp_blk%!20
13020SYS262340,,temp_blk%
13030SYS262353,window_handle%,minx%,miny%,maxx%,maxy%
13040ENDPROC
13050:
13060DEFPROCdrag_box(window_handle%,icon_handle%)
13070LOCAL x%,y%
13080temp_blk%!0=window_handle%
13090SYS262347,,temp_blk%
13100x%=temp_blk%!4-temp_blk%!20:y%=temp_blk%!16-temp_blk%!24
13110temp_blk%!4=icon_handle%
13120SYS262350,,temp_blk%
13130IF (temp_blk%!24 AND &B000)=&B000 ENDPROC
13140IF (temp_blk%!24 AND &800000)=&800000 ENDPROC
13150temp_blk%!4=5
13160temp_blk%!8+=x%
13170temp_blk%!12+=y%
13180temp_blk%!16+=x%
13190temp_blk%!20+=y%
13200temp_blk%!24=-1
13210temp_blk%!28=-1
13220temp_blk%!32=&7FFFFFFF
13230temp_blk%!36=&7FFFFFFF
13240SYS262352,,temp_blk%
13250ENDPROC
13260:
13270DEFFNget_icon_text(window_handle%,icon_handle%)
13280temp_blk%!0=window_handle%
13290temp_blk%!4=icon_handle%
13300SYS262350,,temp_blk%
13310IF (temp_blk%!24 AND &101)<>&101 THEN
13320 ERROR 202,"Icon "+STR$icon%+" not indirected!"
13330 =""
13340ENDIF
13350=$temp_blk%!28
13360:
13370DEFPROCicon_bg_colour(window_handle%,icon_handle%,colour%)
13380IF colour%<0 OR colour%>15 ENDPROC
13390temp_blk%!0=window_handle%
13400temp_blk%!4=icon_handle%
13410SYS262350,,temp_blk%
13420IF (temp_blk%!24 AND 1<<6) THEN ENDPROC
13430temp_blk%!12=&F0000000
13440temp_blk%!8=colour%<<28:SYS262349,,temp_blk%
13450ENDPROC
13460:
13470DEFPROCicon_fg_colour(window_handle%,icon_handle%,colour%)
13480IF colour%<0 OR colour%>15 ENDPROC
13490temp_blk%!0=window_handle%
13500temp_blk%!4=icon_handle%
13510SYS262350,,temp_blk%
13520IF (temp_blk%!24 AND 1<<6) THEN ENDPROC
13530temp_blk%!12=&F000000
13540temp_blk%!8=colour%<<24:SYS262349,,temp_blk%
13550ENDPROC
13560:
13570DEFPROCicon_validation(window_handle%,icon_handle%,type$)
13580temp_blk%!0=window_handle%
13590temp_blk%!4=icon_handle%
13600SYS262350,,temp_blk%
13610IF (temp_blk%!24 AND &E101)<>&E101 THEN
13620 ERROR 202,"Icon "+STR$icon_handle%+" not writable and not indirected!"
13630 ENDPROC
13640ENDIF
13650CASE type$ OF
13660 WHEN "number":$temp_blk%!32="A0-9."
13670 WHEN "file":$temp_blk%!32="A~ $&@\\^:.#*|"+CHR$34
13680OTHERWISE
13690 $temp_blk%!32="A"+type$
13700ENDCASE
13710ENDPROC
13720:
13730DEFPROCplace_caret(window_handle%,icon_handle%,position%)
13740temp_blk%!0=window_handle%
13750temp_blk%!4=icon_handle%
13760SYS262350,,temp_blk%
13770IF (temp_blk%!24 AND &E101)<>&E101 THEN
13780 ERROR 202,"Icon "+STR$icon_handle%+" not writable and not indirected!"
13790 ENDPROC
13800ENDIF
13810text$=$temp_blk%!28
13820IF position%>LENtext$ position%=LENtext$
13830SYS262354,window_handle%,icon_handle%,0,0,-1,position%
13840ENDPROC
13850:
13860DEFPROCput_icon_text(window_handle%,icon_handle%,text$)
13870temp_blk%!0=window_handle%
13880temp_blk%!4=icon_handle%
13890SYS262350,,temp_blk%
13900IF (temp_blk%!24 AND &101)<>&101 THEN
13910 ERROR 202,"Icon "+STR$icon_handle%+" not indirected!"
13920 ENDPROC
13930ENDIF
13940text$=LEFT$(text$,temp_blk%!36):REM -1 allows for <RETURN> chr!
13950$temp_blk%!28=text$
13960temp_blk%!8=0
13970temp_blk%!12=0
13980SYS262349,,temp_blk%
13990ENDPROC
14000:
14010DEFFNput_icon_on_bar(sprite_name$,side$)
14020LOCAL handle%
14030IF side$="RIGHT" !temp_blk%=-1 ELSE !temp_blk%=-2
14040temp_blk%!4=0
14050temp_blk%!8=0
14060temp_blk%!12=68
14070temp_blk%!16=68
14080temp_blk%!20=&1700202A
14090$(temp_blk%+24)=sprite_name$
14100SYS262338,,temp_blk% TO handle%
14110=handle%
14120:
14130DEFPROCput_info_text(window_handle%,name$,purpose$,author$,version$)
14140PROCput_icon_text(window_handle%,1,name$)
14150PROCput_icon_text(window_handle%,2,purpose$)
14160PROCput_icon_text(window_handle%,3,author$)
14170PROCput_icon_text(window_handle%,4,version$)
14180ENDPROC
14190:
14200DEF FNtask_initialise(title$)
14210LOCAL version%
14220version%=200
14230SYS262336,version%,&4B534154,title$ TO version%,this_task%
14240=this_task%
14250:
14260DEFPROCadd_menu_item(line$)
14270LOCAL menuflag%,iconflag%,param$,sub%,itemtext$,writable%,maxlength%
14280iconflag%=&7000021:sub%=-1:writable%=FALSE
14290itemtext$=FNmenu_item_text(line$):maxlength%=LENitemtext$
14300REPEAT
14310 param$=FNmenu_item_param(line$)
14320 CASE LEFT$(param$,4) OF
14330  WHEN"tick":menuflag%=menuflag%OR1
14340  WHEN"line":menuflag%=menuflag%OR2
14350  WHEN"shad":iconflag%=iconflag%OR&400000
14360  WHEN"subm":sub%=FNmenu_submenu(FNmenuvar(param$))
14370  WHEN"wind":sub%=FNmenu_window(FNmenuvar(param$))
14380  WHEN"icon":iconflag%=FNmenu_iconflag(FNmenuvar(param$))
14390  WHEN"writ":PROCmenu_writable(FNmenuvar(param$))
14400  ENDCASE
14410 UNTIL param$=""
14420pointer%!0=menuflag%
14430pointer%!4=sub%
14440IF LEN(itemtext$)>12 OR writable% THEN
14450 pointer%!8=iconflag% OR &100
14460 PROCindirected_item(pointer%,writable%,maxlength%)
14470ELSE
14480 pointer%!8=iconflag%
14490 $(pointer%+12)=LEFT$(itemtext$+CHR$(0),12)
14500ENDIF
14510pointer%+=24
14520ENDPROC
14530:
14540DEFFNbeginmenu(line$)
14550IF LEFT$(line$,9)="beginmenu" =TRUE
14560=FALSE
14570:
14580DEFFNdecode_menu(menustart%,listptr%)
14590LOCAL text_path$
14600SYS262357,,menustart%,listptr%,blk%+256 TO ,,,text_path$
14610=text_path$
14620:
14630DEFPROCdim_menu_arrays(menucount%,itemcount%,writecount%,windowcount%)
14640DIM menustart% (menucount%*28)+(itemcount%*24)
14650DIM menuwidth%(menucount%)
14660DIM menu%(menucount%)
14670DIM writable_item%(writecount%)
14680DIM writable_len%(writecount%)
14690ENDPROC
14700:
14710DEFFNget_writem(writem%)
14720LOCAL temp$
14730IF writem%<1 OR writem%>DIM(writable_item%(),1) THEN
14740 ERROR 201,"writable menu item "+STR$(writem%)+" does not exist!"
14750ENDIF
14760writem%=writable_item%(writem%)
14770temp$="": WHILE ?writem%>31:temp$+=CHR$?writem%:writem%+=1:ENDWHILE
14780=temp$
14790:
14800DEFPROCgoto_beginmenu
14810LOCAL temp%,line$
14820PTR#menufile%=0
14830REPEAT temp%=PTR#menufile%:line$=GET$#menufile%
14840UNTIL FNbeginmenu(line$) OR EOF#menufile%
14850IF EOF#menufile% ERROR 200,"No 'beginmenu' found in menu file"
14860PTR#menufile%=temp%
14870ENDPROC
14880:
14890DEFPROCindirected_item(menu_ptr%,writable%,length%)
14900LOCAL indir_ptr%
14910IF writable% DIM indir_ptr% length%+1 ELSE DIM indir_ptr% 1+LENitemtext$
14920menu_ptr%!12=indir_ptr%:REM pointer to indirection buffer
14930$indir_ptr%=itemtext$+CHR$(0)
14940IF writable% THEN
14950 writable_item%(writable%)=indir_ptr%
14960 writable_len%(writable%)=length%
14970 indir_ptr%+=length%+1
14980 menu_ptr%!20=length%+1
14990ELSE
15000 indir_ptr%+=1+LENitemtext$
15010 menu_ptr%!20=1+LENitemtext$:REM Buffer length
15020ENDIF
15030?indir_ptr%=0
15040menu_ptr%!16=indir_ptr%:REM Pointer to validation string (null)
15050ENDPROC
15060:
15070DEFFNitem_count(menu_ptr%)
15080LOCAL count%
15090count%=1:menu_ptr%+=28
15100WHILE (!menu_ptr% AND &80)=0:menu_ptr%+=24:count%+=1:ENDWHILE
15110=count%
15120:
15130DEFPROCload_menus(menufile$)
15140LOCAL menucount%,header%,line$,pointer%,menustart%
15150PROCsize_menu_arrays(menufile$)
15160menufile%=OPENINmenufile$
15170PROCset_menu_arrays:PROCgoto_beginmenu
15180menucount%=0:header%=FALSE
15190REPEAT
15200 line$=GET$#menufile%
15210 IF FNbeginmenu(line$) THEN
15220  IFheader% ERROR 200,"Bad menu file, no items in menu "+STR$(menucount%)
15230  IFmenucount% PROCmark_menu_end(pointer%)
15240  menucount%+=1:line$=GET$#menufile%
15250  PROCmake_menu_header(pointer%,line$,menuwidth%(menucount%)):header%=TRUE
15260 ELSE
15270  PROCadd_menu_item(line$):header%=FALSE
15280 ENDIF
15290UNTIL EOF#menufile%
15300PROCmark_menu_end(pointer%)
15310SYS131085,0,menufile%:menufile%=0
15320IFheader% ERROR 200,"Bad menu file, no items in menu "+STR$(menucount%)
15330ENDPROC
15340:
15350DEFPROCmake_menu_header(RETURN pointer%,title$,width%)
15360$pointer%=LEFT$(title$,12)+CHR$(0)
15370pointer%?12=7
15380pointer%?13=2
15390pointer%?14=7
15400pointer%?15=0
15410pointer%!16=width%
15420pointer%!20=44
15430pointer%!24=0
15440pointer%+=28
15450ENDPROC
15460:
15470DEFPROCmark_menu_end(pointer%)
15480!(pointer%-24)=!(pointer%-24) OR &80
15490ENDPROC
15500:
15510DEFPROCmenu_close
15520SYS262356,,-1
15530ENDPROC
15540:
15550DEFFNmenu_height(menu_ptr%)
15560LOCAL itemcount%,linecount%,height%
15570itemcount%=1
15580height%=menu_ptr%!20+menu_ptr%!24
15590menu_ptr%+=28
15600WHILE (!menu_ptr% AND &80)=0
15610 itemcount%+=1
15620 IF (!menu_ptr% AND &2) linecount%+=1
15630 menu_ptr%+=24
15640ENDWHILE
15650IF (!menu_ptr% AND &2) linecount%+=1
15660=itemcount%*height%+linecount%*24
15670:
15680DEFFNmenu_iconflag(var$)
15690IFvar$="" ERROR 200,"Menu icon flag value missing!"
15700=EVAL(var$)
15710:
15720DEFFNmenu_item_param(RETURN item$)
15730LOCAL param$
15740IF INSTR(item$,",") THEN
15750 item$=MID$(item$,INSTR(item$,",")+1):param$=LEFT$(item$,INSTR(item$,",")-1)
15760ELSE
15770 param$=""
15780ENDIF
15790=param$
15800:
15810DEFFNmenu_item_text(item$)
15820IF INSTR(item$,",") item$=LEFT$(item$,INSTR(item$,",")-1)
15830=item$
15840:
15850DEFFNmenu_path(ptr%)
15860LOCAL path$
15870path$=STR$(!ptr%)
15880ptr%+=4
15890WHILE !ptr%<>-1 path$+="."+STR$(!ptr%):ptr%+=4:ENDWHILE
15900=path$
15910:
15920DEFFNmenu_submenu(var$)
15930IF VAL(var$)<1 OR VAL(var$)>DIM(menu%(),1) THEN
15940 ERROR 200,"Can't find menu "+var$+", as referred to in:- "+param$
15950ENDIF
15960IF VAL(var$)=menucount% THEN
15970 ERROR 200,"An item in menu "+var$+" cannot have menu "+var$+" as a submenu!"
15980ENDIF
15990=menu%(VAL(var$))
16000:
16010DEFFNmenuvar(var$)
16020var$=MID$(var$,INSTR(var$,"(")+1):var$=LEFT$(var$,INSTR(var$,")")-1)
16030=var$
16040:
16050DEFFNmenu_window(var$)
16060LOCAL handle%
16070LOCAL ERROR
16080ONERROR ERROR EXT 0,"Menu file error. Window variable "+var$+" not found."
16090handle%=EVAL(var$)
16100IF handle%<1 THEN
16110 SYS131085,0,menufile%
16120 ERROR
16130ENDIF
16140=handle%
16150:
16160:
16170DEFPROCmenu_writable(var$)
16180maxlength%=0
16190IF INSTR(var$,":") THEN
16200 maxlength%=VAL(MID$(var$,INSTR(var$,":")+1))
16210 IFLEN(itemtext$)>maxlength% maxlength%=LENitemtext$
16220ELSE
16230 maxlength%=LENitemtext$
16240ENDIF
16250menuflag%=menuflag%OR4:writable%=VAL(var$)
16260ENDPROC
16270:
16280DEFPROCput_writem(writem%,text$)
16290IF writem%<1 OR writem%>DIM(writable_item%(),1) THEN
16300 ERROR 201,"writable menu item "+STR$(writem%)+" does not exist!"
16310ENDIF
16320IF LENtext$>writable_len%(writem%) THEN
16330 IF LENtext$>100 text$=LEFT$(text$,100)+"......"
16340 ERROR 201,"Text '"+text$+"' too long for writable item "+STR$writem%+"!"
16350ENDIF
16360$writable_item%(writem%)=text$
16370ENDPROC
16380:
16390DEFPROCclear_write_flag(menu%,item%)
16400LOCAL flagaddress%
16410 IFmenu%<1 OR menu%>DIM(menu%(),1) THEN
16420 ERROR 201,"Clear write flag error. Out of range menu number!"
16430 ENDIF
16440IF item%<0 OR item%>FNitem_count(menu%(menu%)) THEN
16450 ERROR 201,"Clear write flag error. Out of range item number!"
16460 ENDIF
16470flagaddress%=menu%(menu%)+28+(24*item%):!flagaddress%=(!flagaddress% AND &FFFFFFFB)
16480ENDPROC
16490:
16500DEFPROCadd_write_flag(menu%,item%)
16510LOCAL flagaddress%
16520IFmenu%<1 OR menu%>DIM(menu%(),1) THEN
16530 ERROR 201,"Add write flag error. Out of range menu number!"
16540 ENDIF
16550IF item%<0 OR item%>FNitem_count(menu%(menu%)) THEN
16560 ERROR 201,"Add write flag error. Out of range item number!"
16570 ENDIF
16580flagaddress%=menu%(menu%)+28+(24*item%):!flagaddress%=(!flagaddress% OR 4)
16590ENDPROC
16600:
16610DEFPROCset_menu_arrays
16620LOCAL itemcount%,line$,width%
16630menucount%=0:pointer%=menustart%:PROCgoto_beginmenu
16640REPEAT
16650 line$=GET$#menufile%
16660 IF FNbeginmenu(line$) THEN
16670  menu%(menucount%+1)=menustart%+(menucount%*28)+(itemcount%*24)
16680  line$=GET$#menufile%:REM Get title line
16690  menucount%+=1:line$=LEFT$(line$,12):menuwidth%(menucount%)=12+16*LENline$
16700 ELSE
16710  itemcount%+=1
16720  IF INSTR(line$,",") THEN
16730   width%=12+16*LEN(LEFT$(line$,INSTR(line$,",")-1))
16740  ELSE
16750   width%=12+16*LENline$
16760  ENDIF
16770  IF width%>menuwidth%(menucount%) menuwidth%(menucount%)=width%
16780 ENDIF
16790UNTIL EOF#menufile%
16800ENDPROC
16810:
16820DEFPROCshade(menu%,item%,shade%)
16830LOCAL flagaddress%
16840IFmenu%<1 OR menu%>DIM(menu%(),1) THEN
16850 ERROR 201,"Item shade error. Out of range menu number!"
16860ENDIF
16870IF item%<0 OR item%>FNitem_count(menu%(menu%)) THEN
16880 ERROR 201,"Item shade error. Out of range menu item number!"
16890ENDIF
16900flagaddress%=menu%(menu%)+28+(24*item%)+8
16910IF shade%=TRUE shade%=&400000 ELSE shade%=0
16920!flagaddress%=(!flagaddress% AND &FFBFFFFF) OR shade%
16930ENDPROC
16940:
16950DEFPROCsize_menu_arrays(menufile$)
16960LOCAL menucount%,itemcount%,writecount%,windowcount%,line$
16970menufile%=OPENINmenufile$
16980REPEAT
16990 line$=GET$#menufile%
17000 IF FNbeginmenu(line$) THEN
17010  menucount%+=1:line$=GET$#menufile%:REM Next line is an item
17020 ELSE
17030  IF INSTR(line$,",writ") writecount%+=1
17040  IF INSTR(line$,",wind") windowcount%+=1
17050  itemcount%+=1
17060 ENDIF
17070UNTIL EOF#menufile%
17080SYS131085,0,menufile%:menufile%=0
17090PROCdim_menu_arrays(menucount%,itemcount%,writecount%,windowcount%)
17100ENDPROC
17110:
17120DEFPROCtick(menu%,item%,tick%)
17130LOCAL flagaddress%
17140IFmenu%<1 OR menu%>DIM(menu%(),1) THEN
17150 ERROR 201,"Item tick error. Out of range menu number!"
17160ENDIF
17170IF item%<0 OR item%>FNitem_count(menu%(menu%)) THEN
17180 ERROR 201,"Item tick error. Out of range item number!"
17190ENDIF
17200flagaddress%=menu%(menu%)+28+(24*item%)
17210IF tick%=TRUE tick%=1 ELSE tick%=0
17220!flagaddress%=(!flagaddress% AND &FFFFFFFE) OR tick%
17230ENDPROC
17240:
17250DEFFNget_string(pointer%,length%)
17260LOCAL temp$
17270IF length%=0 length%=255
17280FOR pointer%=pointer% TO pointer%+length%-1
17290 IF ?pointer%<32 THEN
17300  =temp$
17310 ELSE
17320  temp$+=CHR$(?pointer%)
17330 ENDIF
17340NEXT
17350=temp$
17360:
17370DEFFNleaf(path$)
17380WHILE INSTR(path$,"."):path$=MID$(path$,INSTR(path$,".")+1):ENDWHILE
17390=path$
17400:
17410DEFPROCreport_error(message$,title$)
17420message$=CHR$0+CHR$0+CHR$0+CHR$0+message$+CHR$0
17430SYS262367,message$,18,title$
17440ENDPROC
17450:
17460DEFPROCshow_value(line%,variable$)
17470line%=line%MOD4
17480IF INSTR(variable$,"$") THEN
17490 variable$+="="+EVAL(variable$)
17500ELSE
17510 IF INSTR(variable$," ") THEN
17520  ELSE
17530  variable$+="="+STR$(EVAL(variable$))
17540 ENDIF
17550ENDIF
17560PROCput_icon_text(show_value%,line%,LEFT$(variable$,35))
17570PROCopen_window(show_value%)
17580ENDPROC
17590:
17600DEFFNsystem_variable(sys_var$)
17610LOCAL length%
17620SYS131107,sys_var$+CHR$(0),temp_blk%,-1 TO ,,length%
17630IF length%=0 ERROR EXT 0,"System variable '"+sys_var$+"' not found!"
17640SYS131107,sys_var$+CHR$(0),temp_blk%,255,,3 TO ,,length%
17650?(temp_blk%+length%)=13
17660=$temp_blk%
17670:
17680DEFFNget_sprite_name(window_handle%,icon_handle%)
17690LOCAL temp$
17700temp_blk%!0=window_handle%
17710temp_blk%!4=icon_handle%
17720SYS262350,,temp_blk%
17730CASE (temp_blk%!24 AND &103) OF
17740 WHEN &002,&003:=FNget_string(temp_blk%!28,256)
17750 WHEN &102
17760  IF temp_blk%!36>0 THEN
17770   =FNget_string(temp_blk%!28,temp_blk%!36)
17780  ELSE
17790   ERROR 202,"No sprite name in icon "+STR$icon_handle%:=""
17800  ENDIF
17810 WHEN &103:=MID$(FNget_string(temp_blk%!32,temp_blk%!36),2)
17820 OTHERWISE
17830  ERROR 202,"No sprite name in icon "+STR$icon_handle%:=""
17840 ENDCASE
17850=temp$
17860:
17870DEFFNicon_sprite_type(window_handle%,icon_handle%)
17880=EVAL("&"+RIGHT$(FNget_sprite_name(window_handle%,icon_handle%),3))
17890:
17900DEFFNload_sprites(file$)
17910LOCAL sprites%,size%
17920size%=FNfile_size(file$)+16
17930DIM sprites% size%
17940sprites%!0=size%
17950sprites%!8=16
17960SYS46,&10A,sprites%,file$:REM Load sprite file
17970=sprites%
17980:
17990DEFFNnew_template(template_file$,window_name$,RETURN memfree%,memend%)
18000LOCAL window_handle%
18010SYS262361,,template_file$
18020window_handle%=FNtemplate(window_name$,memfree%,memend%)
18030SYS262362
18040=window_handle%
18050:
18060DEFFNtemplate(window_name$,RETURN ptr%,end%)
18070LOCAL found%,window_handle%
18080SYS262363,,blk%,ptr%,end%,-1,window_name$,0 TO ,,ptr%,,,,found%
18090IF found% THEN
18100 SYS262337,,blk% TO window_handle%
18110ELSE
18120 ERROR EXT 0,"Window "+window_name$+" not found in template file!"
18130 window_handle%=0
18140ENDIF
18150=window_handle%
18160:
18170DEF PROCclose_window(window_handle%)
18180!temp_blk%=window_handle%
18190SYS262342,,temp_blk%
18200ENDPROC
18210:
18220DEFFNcreate_info_window
18230LOCAL icon%
18240info%=FNcreate_window("About this program",&84000012,660,212,0,660,999,999)
18250icon%=FNadd_icon("label","   Name:",info%,8,-4,0,0,0)
18260icon%=FNadd_icon("report",STRING$(30," "),info%,156,-4,0,0,0)
18270icon%=FNadd_icon("report",STRING$(30," "),info%,156,-56,0,0,0)
18280icon%=FNadd_icon("report",STRING$(30," "),info%,156,-108,0,0,0)
18290icon%=FNadd_icon("report",STRING$(30," "),info%,156,-160,0,0,0)
18300icon%=FNadd_icon("label","Purpose:",info%,8,-56,0,0,0)
18310icon%=FNadd_icon("label"," Author:",info%,8,-108,0,0,0)
18320icon%=FNadd_icon("label","Version:",info%,8,-160,0,0,0)
18330=info%
18340:
18350DEFPROCcreate_show_value
18360LOCAL icon%
18370show_value%=FNcreate_window("Show Variable",0,608,212,300,999,350,999)
18380icon%=FNadd_icon("report",STRING$(36," "),show_value%,8,-4,0,0,0)
18390icon%=FNadd_icon("report",STRING$(36," "),show_value%,8,-56,0,0,0)
18400icon%=FNadd_icon("report",STRING$(36," "),show_value%,8,-108,0,0,0)
18410icon%=FNadd_icon("report",STRING$(36," "),show_value%,8,-160,0,0,0)
18420ENDPROC
18430:
18440DEFFNcreate_window(title$,wf%,x_size%,y_size%,left%,width%,bottom%,height%)
18450LOCAL title_space%,handle%
18460DIM title_space% (1+LENtitle$)
18470temp_blk%!0=left%
18480temp_blk%!4=bottom%
18490temp_blk%!8=left%+width%
18500temp_blk%!12=bottom%+height%
18510temp_blk%!16=0
18520temp_blk%!20=0
18530temp_blk%!24=-1
18540IF wf%=0 wf%=&FF000012
18550temp_blk%!28=wf%
18560temp_blk%?32=7
18570temp_blk%?33=2
18580temp_blk%?34=7
18590temp_blk%?35=1
18600temp_blk%?36=3
18610temp_blk%?37=1
18620temp_blk%?38=12
18630temp_blk%?39=0
18640temp_blk%!40=0
18650temp_blk%!44=-y_size%
18660temp_blk%!48=x_size%
18670temp_blk%!52=0
18680temp_blk%!56=&119
18690temp_blk%!60=&6000
18700temp_blk%!64=1
18710temp_blk%?68=0
18720temp_blk%?69=0
18730temp_blk%?70=0
18740temp_blk%?71=0
18750$title_space%=title$
18760temp_blk%!72=title_space%
18770temp_blk%!76=-1
18780temp_blk%!80=LEN(title$)+1
18790temp_blk%!84=0
18800SYS262337,,temp_blk% TO handle%
18810=handle%
18820:
18830DEF PROCdelete_window(window_handle%)
18840!temp_blk%=window_handle%:SYS262339,,temp_blk%
18850ENDPROC
18860:
18870DEF PROCopen_window(window_handle%)
18880!temp_blk%=window_handle%
18890SYS262347,,temp_blk%
18900SYS262341,,temp_blk%
18910ENDPROC
18920:
18930DEFFNwindow_x_origin(window_handle%)
18940temp_blk%!0=window_handle%:SYS262347,,temp_blk%
18950=temp_blk%!4-temp_blk%!20
18960:
18970DEFFNwindow_y_origin(window_handle%)
18980temp_blk%!0=window_handle%:SYS262347,,temp_blk%
18990=temp_blk%!16-temp_blk%!24
19000:

?�              +------------------------------------------+
?�              |         !Armony, by Mike Smith,          |
?�              |     Version 1.32  (29/12/93), based on   |
(?�              |     BareBones Wimp application program   |
2?�              |         Version 1.00  (4/10/92)          |
<?�              |          (C) Alan Senior 1992            |
F?�              |    Dabs Press : Basic Wimp Programming   |
P?�              +------------------------------------------+
Z:
d� � �:�" at line ";� �10:�
nș263872
x$�define_arrays:�define_variables
�� � �error(�,�$):�quit
�,task_handle%=�task_initialise(app_name$)
�-�load_sprites:�load_windows:�install_icon
� �create_windows:�menus:�info
��load_check
�� � �error(�,�$)
�ș263873
�:
��wimp_poll:�quit
�:
���define_arrays
�F� blk% &2000:� temp_blk% &2000:� errorblk% &100:� workstart% &1000
�2workfree%=workstart%:workend%=workstart%+&1000
� sequlen%(25):sequlen%()=0
#� chord$(25,32):chord$()="    "
"� rhythm$(25,32):rhythm$()="a"
"2� rhythm_name$(25):rhythm_name$()="          "
,+� r%=0 � 25:rhythm_name$(r%)=�(r%+97):�
6� nobeats%(25):nobeats%()=8
@� vol%(25,7,16):vol%()=-1
J� ins%(25,7,16):ins%()=0
T� fx%(6):fx%()=7
^!�fxchannel%(6):fxchannel%()=�
h� stereo%(8)
r� p%(6)
|� lkc 16:� hkc 24
�/� sequence_window%(25):� rhythm_window%(25)
�A� chord_icon%(25,32):� rhythm_icon%(25,32):� beat_icon%(7,16)
��
�:
���define_variables
�Napp_sprite$="!Armony":app_name$="!Armony":app_purpose$="A chord sequencer"
�#app_author$="� Mike Smith 1993"
�.app_version$="Version 1.00, 14th Oct 1993"
�1app_directory$=�system_variable("Armony$Dir")
�*errorcount%=0:menufile%=0:icon_bar%=-2
�Fselect_click%=4:menu_click%=2:adjust_click%=1:select_menu_click%=6
�+select_drag%=64:adjust_drag%=16:quit%=�
�/tempo%=32:trans%=0:coct%=3:boct%=2:koct%=2:
*sequences%=1:rhythms%=1:structure$="A"
nstereo%(1)=-3:stereo%(2)=-2:stereo%(3)=-1:stereo%(4)=1:stereo%(5)=2:stereo%(6)=3:stereo%(7)=0:stereo%(8)=0
-play_rhythm%=�:repeat%=�:edit_sequence%=0
&<root$="C D EF G A B":chord_input$="ABCDEFG#bmMs+-13679/"
0.rhythm_input$="abcdefghijklmnopqrstuvwxyz"
:Dlowkey$="zsxdcvgbhnjm,l.;/":highkey$="a1q2we4r5t6yu8i9op-[=]�\f"
Dcvol%=1:bvol%=2:fxvol%=1
N� i%=1 � 17:� lkc?i%:�
X>� 98,82,67,51,83,100,84,101,85,86,70,102,103,87,104,88,105
b� i%=1 � 25:� hkc?i%:�
lQ� 97,49,17,50,34,35,19,52,20,36,53,69,54,22,38,39,55,56,24,57,94,89,47,121,62
v*FX11,0
�� �:Ƞ 8
�?chord_voice%=2:� ch%=1 � 6:�("CHANNELVOICE "+�(ch%)+" 2"):�
�"ș262531,0,2 � chord_voice$,F%
�#bass_voice%=1:*CHANNELVOICE 7 1
�!ș262531,0,1 � bass_voice$,F%
�'keyboard_voice%=3:*CHANNELVOICE 8 3
�%ș262531,0,3 � keyboard_voice$,F%
�Pok_icon%=0:name_icon%=1:file_icon%=2:rhythm_name_icon%=1:rhythm_file_icon%=2
�?B%=1:C%=1:R%=0:S%=1:Z%=0:last_r%=R%:last_b%=B%:last_vol%=15
�:play_rhythm%=�:play_sequence%=�:play_song%=�:repeat%=�
��
�:
���install_icon
:icon_bar_handle%=�put_icon_on_bar(app_sprite$,"RIGHT")
�
:
 ��load_sprites
*5sprites%=�load_sprites(app_directory$+".Sprites")
4�
>:
H��load_windows
ROsave%=�new_template(app_directory$+".Templates","save%",workfree%,workend%)
\Ysave_rthm%=�new_template(app_directory$+".Templates","save_rthm%",workfree%,workend%)
f�
p:
z��create_windows
�info%=�create_info_window
��stereo_window:�stereo
�:
��create_show_value
�:
��update_windows("Newsong")
��
�:
���update_windows(file$)
�� s%,r%
�0� s%=0 � sequences%-1:�sequence_window(s%):�
�,� r%=0 � rhythms%-1:�rhythm_window(r%):�
��keyboard_window(file$)
�
:
��open_windows
$� s%,r%
.>� s%=0 � sequences%-1:�open_window(sequence_window%(s%)):�
8:� r%=0 � rhythms%-1:�open_window(rhythm_window%(r%)):�
B�
L:
V��delete_windows
`� s%,r%
j$�delete_window(keyboard_window%)
t@� s%=0 � sequences%-1:�delete_window(sequence_window%(s%)):�
~<� r%=0 � rhythms%-1:�delete_window(rhythm_window%(r%)):�
��
�:
���keyboard_window(title$)
�9� icon%,f%,w%,h%,vw%,vh%,px%,py%,note$,k%,minx%,maxx%
�(f%=%10000111000000000000000000010010
�-w%=1280:h%=432:vw%=w%:vh%=h%:px%=0:py%=54
�Dkeyboard_window%=�create_window(title$,f%,w%,h%,px%,vw%,py%,vh%)
�=icon%=�add_icon_block(keyboard_window%,16,-408,752,-24,1)
�(�border_icon(keyboard_window%,icon%)
�%note$="1 2   4 5 6   8 9   - = �"
�Aicon%=�add_icon("label",note$,keyboard_window%,272,-24,0,0,0)
�note$="s d   g h j   l ;"
@icon%=�add_icon("label",note$,keyboard_window%,48,-72,0,0,0)

7note$="C D E F G A B C D E F G A B C D E F G A B C"
Aicon%=�add_icon("label",note$,keyboard_window%,32,-264,0,0,0)
)note$="T q w e r t y u i o p [ ] \ I"
(Bicon%=�add_icon("label",note$,keyboard_window%,256,-312,0,0,0)
2note$="z x c v b n m , . /"
<Aicon%=�add_icon("label",note$,keyboard_window%,32,-360,0,0,0)
F� k%=1 � 22
P! minx%=32*k%+4:maxx%=minx%+24
ZD icon%=�add_icon_block(keyboard_window%,minx%,-260,maxx%,-124,0)
d) �border_icon(keyboard_window%,icon%)
n �
x� k%=1 � 20
�" minx%=32*k%+20:maxx%=minx%+24
�1 � k%<>3 � k%<>7 � k%<>10 � k%<>14 � k%<>17 �
�E  icon%=�add_icon_block(keyboard_window%,minx%,-202,maxx%,-124,7)
�*  �border_icon(keyboard_window%,icon%)
� �
� �
�:
�Cicon%=�add_icon("label","Tempo",keyboard_window%,790,-24,0,0,0)
�Dicon%=�add_icon("label","Keybd",keyboard_window%,790,-120,0,0,0)
�Dicon%=�add_icon("label","Sustn",keyboard_window%,790,-216,0,0,0)
�Gon_icon%=�add_icon("write"," OFF ",keyboard_window%,790,-168,1,0,1)
�3�icon_validation(keyboard_window%,on_icon%,"K")
�0�icon_bg_colour(keyboard_window%,on_icon%,1)
sustain%=0
Msustain_icon%=�add_icon("report"," OFF ",keyboard_window%,790,-264,5,0,1)
Dicon%=�add_icon("label","Trans",keyboard_window%,790,-312,0,0,0)
"Oicon%=�add_icon("label","  Structure/Pause",keyboard_window%,928,-24,0,0,0)
,Qicon%=�add_icon("label"," Chords instrument",keyboard_window%,928,-120,0,0,0)
6Picon%=�add_icon("label","  Bass instrument",keyboard_window%,928,-216,0,0,0)
@Ricon%=�add_icon("label","Keyboard instrument",keyboard_window%,928,-312,0,0,0)
JJtempo_icon%=�add_icon("report","     ",keyboard_window%,790,-72,5,0,1)
TUleft_tempo_icon%=�add_icon("sprite","left",keyboard_window%,794,-76,0,sprites%,0)
^Wright_tempo_icon%=�add_icon("sprite","right",keyboard_window%,866,-76,0,sprites%,0)
hKtrans_icon%=�add_icon("report","     ",keyboard_window%,790,-360,5,0,1)
rVleft_trans_icon%=�add_icon("sprite","left",keyboard_window%,794,-364,0,sprites%,0)
|Xright_trans_icon%=�add_icon("sprite","right",keyboard_window%,866,-364,0,sprites%,0)
�]structure_icon%=�add_icon("report","                   ",keyboard_window%,928,-72,19,0,1)
�8�icon_bg_colour(keyboard_window%,structure_icon%,11)
�^chord_ins_icon%=�add_icon("report","                   ",keyboard_window%,928,-168,19,0,1)
�]bass_ins_icon%=�add_icon("report","                   ",keyboard_window%,928,-264,19,0,1)
�akeyboard_ins_icon%=�add_icon("report","                   ",keyboard_window%,928,-360,19,0,1)
�:�put_icon_text(keyboard_window%,tempo_icon%,�(tempo%))
�:�put_icon_text(keyboard_window%,trans_icon%,�(trans%))
�C%=1:S%=1:Z%=0
�Vstructure_pos$=�structure$,S%-1)+"("+�structure$,S%,1)+")"+�structure$,S%+1,19-S%)
�C�put_icon_text(keyboard_window%,structure_icon%,structure_pos$)
�A�put_icon_text(keyboard_window%,chord_ins_icon%,chord_voice$)
�?�put_icon_text(keyboard_window%,bass_ins_icon%,bass_voice$)
�G�put_icon_text(keyboard_window%,keyboard_ins_icon%,keyboard_voice$)
�
:
��sequence_window(s%)
&#� title$,px%,py%,type$,c%,x%,y%
0)sf%=%10000111000000000000000000010010
:=sw%=512:sh%=448:svw%=512:svh%=448:px%=s%*48:py%=532-s%*48
D3title$="Chord Sequence "+�(s%+65):type$="write"
NMsequence_window%(s%)=�create_window(title$,sf%,sw%,sh%,px%,svw%,py%,svh%)
X window%=sequence_window%(s%)
b-� c%=1 � sequlen%(s%)-1*(sequlen%(s%)<32)
l1 text$=chord$(s%,c%)+�4-�(chord$(s%,c%))," ")
v, x%=((c%-1)�4)*128+4:y%=-((c%-1)�4)*56-4
�B chord_icon%(s%,c%)=�add_icon(type$,text$,window%,x%,y%,4,0,1)
�> �icon_validation(window%,chord_icon%(s%,c%),chord_input$)
�A � text$="    " �put_icon_text(window%,chord_icon%(s%,c%),"")
� text$=rhythm$(s%,c%)
�F rhythm_icon%(s%,c%)=�add_icon(type$,text$,window%,x%+88,y%,1,0,1)
�@ �icon_validation(window%,rhythm_icon%(s%,c%),rhythm_input$)
�4 �icon_bg_colour(window%,rhythm_icon%(s%,c%),14)
�4 �icon_fg_colour(window%,rhythm_icon%(s%,c%),11)
� �
��
�:
���rhythm_window(r%)
�;� title$,type$,window%,w%,vw%,px%,py%,b%,c%,x%,y%,icon%
)rf%=%10000111000000000000000000010010
Mrh%=392:rvh%=rh%:w%=88+40*nobeats%(r%):vw%=w%:px%=640+r%*48:py%=588-r%*48
Etitle$="Rhythm "+�(r%+97)+" ("+rhythm_name$(r%)+")":type$="label"
 Irhythm_window%(r%)=�create_window(title$,rf%,w%,rh%,px%,vw%,py%,rvh%)
*window%=rhythm_window%(r%)
44icon%=�add_icon(type$,"6   ",window%,4,-4,4,0,1)
>5icon%=�add_icon(type$,"5   ",window%,4,-60,4,0,1)
H6icon%=�add_icon(type$,"4   ",window%,4,-116,4,0,1)
R6icon%=�add_icon(type$,"3   ",window%,4,-172,4,0,1)
\6icon%=�add_icon(type$,"2   ",window%,4,-228,4,0,1)
f6icon%=�add_icon(type$,"1   ",window%,4,-284,4,0,1)
p6icon%=�add_icon(type$,"bass",window%,4,-340,4,0,1)
ztype$="select"
�$� b%=1 � nobeats%(r%):� c%=1 � 7
�; � ins%(r%,c%,b%)=0 text$=" " � text$=�(ins%(r%,c%,b%))
� x%=52+b%*40:  y%=52-c%*56
�A beat_icon%(c%,b%)=�add_icon(type$,text$,window%,x%,y%,1,0,1)
�A � vol%(r%,c%,b%)<0 bg_colour%=15 � bg_colour%=vol%(r%,c%,b%)
�: �icon_bg_colour(window%,beat_icon%(c%,b%),bg_colour%)
�9 � c%<7 �icon_fg_colour(window%,beat_icon%(c%,b%),11)
�9 � c%=7 �icon_fg_colour(window%,beat_icon%(c%,b%),10)
� �:�
��
�:
���stereo_window
�� p%,c%,on%
	(f%=%10000100000000000000000000010010
	title$="Stereo Positions"
	+w%=576:h%=816:vw%=w%:vh%=h%:px%=0:py%=0
	$?stereo_pos%=�create_window(title$,f%,w%,h%,px%,vw%,py%,vh%)
	.� p%=0 � 6:� c%=1 � 8
	8% � stereo%(c%)=p%-3 on%=1 � on%=0
	BL icon%=�add_icon("radio"," ",stereo_pos%,224+48*p%,-(c%*96-54),on%,c%,0)
	L �:�
	V@icon%=�add_icon("label","Chords 6",stereo_pos%,32,-48,0,0,1)
	`Aicon%=�add_icon("label","       5",stereo_pos%,32,-144,0,0,1)
	jAicon%=�add_icon("label","       4",stereo_pos%,32,-240,0,0,1)
	tAicon%=�add_icon("label","       3",stereo_pos%,32,-336,0,0,1)
	~Aicon%=�add_icon("label","       2",stereo_pos%,32,-432,0,0,1)
	�Aicon%=�add_icon("label","       1",stereo_pos%,32,-528,0,0,1)
	�Aicon%=�add_icon("label","Bass    ",stereo_pos%,32,-624,0,0,1)
	�Aicon%=�add_icon("label","Keyboard",stereo_pos%,32,-720,0,0,1)
	��
	�:
	�
��info
	�I�put_info_text(info%,app_name$,app_purpose$,app_author$,app_version$)
	��
	�:
	���menus
	�(�load_menus(app_directory$+".menus")
	��name_voices
�clear_flags

�put_writem(5,"A")
�
:
(��clear_flags
2A� menu%=14 � 17:� item%=0 � 31:�clear_write_flag(menu%,item%)
<�:�
F�
P:
Z��add_flags
d?� menu%=14 � 17:� item%=0 � 31:�add_write_flag(menu%,item%)
n�:�
x�
�:
���wimp_poll
�� poll_mask%
�poll_mask%=&832
��
�& ș262343,poll_mask%,blk% � event%
� Ȏ event% �
�  � 2:�open_window_event
�.  � 3:window%=!blk%:�close_window(window%)
�  � 6:�mouse_button
�  � 7:�drag_over
�  � 8:�key_press
�  � 9:�menu_selection
  �12:�gain_caret
  �17,18:�message
 �
" �event
,� quit%
6�
@:
J��open_window_event
Tș262341,,blk%
^�
h:
r��close_window(window%)
| !blk%=window%:ș262342,,blk%
��
�:
�� �mouse_button
�� wx%,wy%,x%,y%
�2mousex%=blk%!0:mousey%=blk%!4:mousebut%=blk%!8
�/window_handle%=blk%!12:icon_handle%=blk%!16
�Mwx%=�window_x_origin(window_handle%):wy%=�window_y_origin(window_handle%)
�!x%=mousex%-wx%:y%=wy%-mousey%
�Ȏ window_handle% �
�  � icon_bar%:�icon_bar_click
�. � keyboard_window%:�keyboard_window_click
� � save%:�save_click
�$ � save_rthm%:�save_rhythm_click
  � stereo_pos%:�stereo_click
�
� s%=0 � sequences%-1
&, � sequence_window%(s%)=window_handle% �
0.  edit_sequence%=s%:�sequence_window_click
: �
D�
N� s%=0 � rhythms%-1
X* � rhythm_window%(s%)=window_handle% �
b  edit_rhythm%=s%
l  edit_beat%=1+(x%-88)�40
v  edit_channel%=1+y%�56
�  edit_icon%=icon_handle%
�  �rhythm_window_click
� �
��
��
�:
���drag_over
�2� window%,icon%,x%,y%,file$,start%,size%,type%
�ș262351,,blk%
�x%=blk%!0:y%=blk%!4
�!window%=blk%!12:icon%=blk%!16
�Ȏ drag_window% �
� � save%

3  file$=�leaf(�get_icon_text(save%,name_icon%))

/  type%=�icon_sprite_type(save%,file_icon%)

9  �initiate_save(window%,icon%,x%,y%,file$,�,0,type%)

  � save_rthm%

*?  file$=�leaf(�get_icon_text(save_rthm%,rhythm_name_icon%))

4;  type%=�icon_sprite_type(save_rthm%,rhythm_file_icon%)

>9  �initiate_save(window%,icon%,x%,y%,file$,�,0,type%)

H �

R�

\:

f��key_press

p&� window_handle%,icon_handle%,key%

z:window_handle%=blk%!0:icon_handle%=blk%!4:key%=blk%!24

�� key%=&61 � key%=&66 �

�� key%=&18A key%=&61

�� key%=&1CD key%=&66

�Ȏ window_handle% �

�/ � save%:�save_key_press(key%,icon_handle%)

�; � save_rthm%:�save_rhythm_key_press(key%,icon_handle%)

�' � keyboard_window%:�keyboard(key%)

� 

�  ș262364,key%

� �

�� s%=0 � sequences%-1

�< � sequence_window%(s%)=window_handle% edit_sequence%=s%

� �
E� c%=1 � sequlen%(edit_sequence%)-1*(sequlen%(edit_sequence%)<32)
w � chord_icon%(edit_sequence%,c%)=icon_handle% �chord_key_press(window_handle%,icon_handle%,edit_sequence%,c%,key%)
 �
$E� r%=1 � sequlen%(edit_sequence%)-1*(sequlen%(edit_sequence%)<32)
.y � rhythm_icon%(edit_sequence%,r%)=icon_handle% �rhythm_key_press(window_handle%,icon_handle%,edit_sequence%,r%,key%)
8 �
B�
L:
V��menu_selection
`� menu_path$,menu_item$
j/menu_path$=�decode_menu(current_menu%,blk%)
t menu_item$=�leaf(menu_path$)
~Ȏ current_menu% �
�& � menu%(1):�main_menu(menu_item$)
�* � menu%(2):�sequence_menu(menu_item$)
�( � menu%(4):�rhythm_menu(menu_item$)
�* � menu%(5):�keyboard_menu(menu_item$)
��
�ș262351,,blk%
�B� blk%!8=adjust_click% ș262356,,current_menu%,menu_x%,menu_y%
��
�:
���gain_caret
�-window_handle%=blk%!0:icon_handle%=blk%!4
�'� window_handle%=keyboard_window% �
2 �icon_bg_colour(keyboard_window%,on_icon%,14)

5 �put_icon_text(keyboard_window%,on_icon%," ON ")
�
1 �icon_bg_colour(keyboard_window%,on_icon%,1)
(6 �put_icon_text(keyboard_window%,on_icon%," OFF ")
2�
<�
F:
P
��message
Z� message_type%
dmessage_type%=blk%!16
nȎ message_type% �
x � 0:quit%=�
� � 1:�save_request
� � 2:�save_demand
� � 3:�load_request
� � 4:�menu_close
� � 5:�double_click
��
��
�:
���icon_bar_click
�� r%,s%
�Ȏ mousebut% �
� � menu_click%
�  current_menu%=menu%(1)
:  menu_x%=mousex%-64:menu_y%=�menu_height(menu%(1))+96
-  ș262356,,current_menu%,menu_x%,menu_y%
" � select_click%:�open_windows
"3 � adjust_click%:�open_window(keyboard_window%)
,�
6�
@:
J��save_click
TȎ mousebut% �
^" � select_click%,adjust_click%
h  � icon_handle%=ok_icon% �
r2   file_name$=�get_icon_text(save%,name_icon%)
|5   file_type%=�icon_sprite_type(save%,file_icon%)
�   � �file_name$,".") �
�>    $(blk%+44)=file_name$+�0:�save(file_name$):�menu_close
�   �
�9    $(blk%+44)=app_directory$+".songs."+file_name$+�0
�2    �save(app_directory$+".songs."+file_name$)
�   �
�  �
�  � select_drag%,adjust_drag%
�!  � icon_handle%=file_icon% �
�K   drag_icon%=file_icon%:drag_window%=save%:�drag_box(save%,file_icon%)
�  �
� �
��
:
��save_rhythm_click
Ȏ mousebut% �
&" � select_click%,adjust_click%
0  � icon_handle%=ok_icon% �
:>   file_name$=�get_icon_text(save_rthm%,rhythm_name_icon%)
DA   file_type%=�icon_sprite_type(save_rthm%,rhythm_file_icon%)
N   � �file_name$,".") �
XE    $(blk%+44)=file_name$+�0:�save_rhythm(file_name$):�menu_close
b   �
l;    $(blk%+44)=app_directory$+".rhythms."+file_name$+�0
v;    �save_rhythm(app_directory$+".rhythms."+file_name$)
�   �
�  �
�  � select_drag%,adjust_drag%
�(  � icon_handle%=rhythm_file_icon% �
�;   drag_icon%=rhythm_file_icon%:drag_window%=save_rthm%
�.   �drag_box(save_rthm%,rhythm_file_icon%)
�  �
� �
��
�:
���keyboard_window_click
�Ȏ mousebut% �
� � menu_click%
?  current_menu%=menu%(5):menu_x%=mousex%-64:menu_y%=mousey%
-  ș262356,,current_menu%,menu_x%,menu_y%
 � select_click%
   Ȏ icon_handle% �
*   � sustain_icon%
4    � sustain%=0 �
>     sustain%=1
H<     �put_icon_text(keyboard_window%,sustain_icon%,"ON")
R    � sustain%=0
\=     �put_icon_text(keyboard_window%,sustain_icon%,"OFF")
f	    �
p   � structure_icon%
z    � play_rhythm%=� �
�     play_rhythm%=�
�<     �icon_bg_colour(keyboard_window%,structure_icon%,0)
�	    �
�     play_rhythm%=�
�=     �icon_bg_colour(keyboard_window%,structure_icon%,11)
�	    �
�   � left_tempo_icon%
�%    tempo%-=1:� tempo%<4 tempo%=4
�>    �put_icon_text(keyboard_window%,tempo_icon%,�(tempo%))
�   � right_tempo_icon%
�)    tempo%+=1:� tempo%>999 tempo%=999
�>    �put_icon_text(keyboard_window%,tempo_icon%,�(tempo%))
�   � left_trans_icon%
)    trans%-=1:� trans%<-96 trans%=-96
>    �put_icon_text(keyboard_window%,trans_icon%,�(trans%))
   � right_trans_icon%
$'    trans%+=1:� trans%>96 trans%=96
.>    �put_icon_text(keyboard_window%,trans_icon%,�(trans%))
8  �
B � adjust_click%
L  Ȏ icon_handle% �
V   � left_tempo_icon%
`+    tempo%=tempo%�2:� tempo%<4 tempo%=4
j>    �put_icon_text(keyboard_window%,tempo_icon%,�(tempo%))
t   � right_tempo_icon%
~/    tempo%=tempo%*2:� tempo%>999 tempo%=999
�>    �put_icon_text(keyboard_window%,tempo_icon%,�(tempo%))
�   � left_trans_icon%
�)    trans%-=8:� trans%<-96 trans%=-96
�>    �put_icon_text(keyboard_window%,trans_icon%,�(trans%))
�   � right_trans_icon%
�'    trans%+=8:� trans%>96 trans%=96
�>    �put_icon_text(keyboard_window%,trans_icon%,�(trans%))
�   �
� �
�5�put_writem(3,�(tempo%)):�put_writem(4,�(trans%))
��
�:
��sequence_window_click

Ȏ mousebut% �
L � menu_click%:current_menu%=menu%(2):menu_x%=mousex%-64:menu_y%=mousey%
-  ș262356,,current_menu%,menu_x%,menu_y%
( �
2�
<:
F��rhythm_window_click
P� r%,c%,b%
Z@r%=edit_rhythm%:c%=edit_channel%:b%=edit_beat%:i%=edit_icon%
d1�put_icon_text(save_rthm%,1,rhythm_name$(r%))
nȎ mousebut% �
xL � menu_click%:current_menu%=menu%(4):menu_x%=mousex%-64:menu_y%=mousey%
�-  ș262356,,current_menu%,menu_x%,menu_y%
� � select_click%
�  � vol%(r%,c%,b%)<0 �
�   vol%(r%,c%,b%)+=8
�<   �icon_bg_colour(rhythm_window%(r%),i%,vol%(r%,c%,b%))
�  �
�   vol%(r%,c%,b%)-=8
�0   �icon_bg_colour(rhythm_window%(r%),i%,15)
�  �
� � adjust_click%
�;  vol%(r%,c%,b%)-=1:� vol%(r%,c%,b%)<0 vol%(r%,c%,b%)=7
�;  �icon_bg_colour(rhythm_window%(r%),i%,vol%(r%,c%,b%))
�+ � select_menu_click%:ins%(r%,c%,b%)+=1
  � ins%(r%,c%,b%)>6 �
    ins%(r%,c%,b%)=0:ins$=" "
   � ins$=�(ins%(r%,c%,b%))
"  �
,0  �put_icon_text(rhythm_window%(r%),i%,ins$)
6 �
@�
J:
T��stereo_click
^� channel%,position%
hȎ mousebut% �
r" � select_click%,adjust_click%
|+  � icon_handle%<56 � icon_handle%>-1 �
�,   channel%=1+icon_handle%�8:�channel%=1
�   position%=icon_handle%�8
�$   stereo%(channel%)=position%-3
�-   ș262466,channel%,stereo%(channel%)*32
�  �
�+  � mousebut%=select_click% �menu_close
� �
��
�:
���main_menu(item$)
�Ȏ item$ �
�
 � "Quit"
�
  quit%=�
 � "Keyboard"
$  �open_window(keyboard_window%)
 � "Chords and Rhythms"
&@  � s%=0 � sequences%-1:�open_window(sequence_window%(s%)):�
0<  � r%=0 � rhythms%-1:�open_window(rhythm_window%(r%)):�
: � "Update Instruments"
D  ș263872
N*  �add_flags:�name_voices:�clear_flags
X  ș263873
b �
l�
v:
���keyboard_menu(item$)
�� l%,s%
�"numeric_path$=�menu_path(blk%)
�Ȏ numeric_path$ �
�8 � "0.0":file_path$=�get_writem(2):�load(file_path$)
�
 � "2"
�2  play_song%=�:play_sequence%=�:play_rhythm%=�
�@  �icon_bg_colour(sequence_window%(Z%),chord_icon%(Z%,C%),0)
�9  �icon_bg_colour(keyboard_window%,structure_icon%,0)
�  B%=1:C%=1:S%=1:�=0
�X  structure_pos$=�structure$,S%-1)+"("+�structure$,S%,1)+")"+�structure$,S%+1,19-S%)
�E  �put_icon_text(keyboard_window%,structure_icon%,structure_pos$)
�   Z%=�(�structure$,S%,1))-65
  �chord(chord$(Z%,C%))
  R%=�(rhythm$(Z%,C%))-97

 � "3"
   � repeat%=� �
*-   �tick(2,1,�):�tick(4,1,�):�tick(5,3,�)
4   repeat%=�
>.  � �tick(2,1,�):�tick(4,1,�):�tick(5,3,�)
H   repeat%=�
R  �
\ � "4.0":structure$=item$
fX  structure_pos$=�structure$,S%-1)+"("+�structure$,S%,1)+")"+�structure$,S%+1,19-S%)
pE  �put_icon_text(keyboard_window%,structure_icon%,structure_pos$)
z � "5.0":tempo%=�(item$)
�8  �put_icon_text(keyboard_window%,tempo_icon%,item$)
� � "11.0":trans%=�(item$)
�8  �put_icon_text(keyboard_window%,trans_icon%,item$)
� �
�l%=�(�numeric_path$,1))
�)� l%>5 � l%<9 �octaves(numeric_path$)
�&� l%=9 �instruments(numeric_path$)
��
�:
���sequence_menu(item$)
�"numeric_path$=�menu_path(blk%)
�Ȏ numeric_path$ �
�
 � "0"
2  play_sequence%=�:play_rhythm%=�:play_song%=�
@  �icon_bg_colour(sequence_window%(Z%),chord_icon%(Z%,C%),0)
9  �icon_bg_colour(keyboard_window%,structure_icon%,0)
$*  B%=1:C%=1:S%=1:�=0:Z%=edit_sequence%
.  �chord(chord$(Z%,C%))
8  R%=�(rhythm$(Z%,C%))-97
B
 � "1"
L  � repeat%=� �
V-   �tick(2,1,�):�tick(4,1,�):�tick(5,3,�)
`   repeat%=�
j.  � �tick(2,1,�):�tick(4,1,�):�tick(5,3,�)
t   repeat%=�
~  �
�) � "2":�copy_sequence(edit_sequence%)
� � "3":�add_sequence
�* � "4":�clear_sequence(edit_sequence%)
� � "5.0":r$=item$
�5  � �(r$)<65 � �(r$)>122 r$="a":�put_writem(1,r$)
�1  � �(r$)<97 r$=�(�(r$)+32):�put_writem(1,r$)
�'  �global_rhythm(r$,edit_sequence%)
� �
��
�:
���rhythm_menu(item$)
�"numeric_path$=�menu_path(blk%)
Ȏ numeric_path$ �


 � "0"
2  play_rhythm%=�:play_sequence%=�:play_song%=�
@  �icon_bg_colour(sequence_window%(Z%),chord_icon%(Z%,C%),0)
(9  �icon_bg_colour(keyboard_window%,structure_icon%,0)
29  B%=1:C%=1:S%=1:Z%=0:�=0:�chord("C"):R%=edit_rhythm%
<
 � "1"
F  � repeat%=� �
P7   �tick(2,1,�):�tick(4,1,�):�tick(5,3,�):repeat%=�
Z.  � �tick(2,1,�):�tick(4,1,�):�tick(5,3,�)
d   repeat%=�
n  �
x% � "2":�copy_rhythm(edit_rhythm%)
� � "3":�add_rhythm
�& � "4":�clear_rhythm(edit_rhythm%)
�; � "5.0":n%=�(item$):� n%>16 n%=16:�put_writem(5,�(n%))
�7  nobeats%(edit_rhythm%)=n%:�no_beats(edit_rhythm%)
�0 � "6.0":cvol%=1:�tick(20,0,�):�tick(20,1,�)
�0 � "6.1":cvol%=2:�tick(20,0,�):�tick(20,1,�)
�0 � "7.0":bvol%=1:�tick(21,0,�):�tick(21,1,�)
�0 � "7.1":bvol%=2:�tick(21,0,�):�tick(21,1,�)
�1 � "8.0":fxvol%=1:�tick(22,0,�):�tick(22,1,�)
�1 � "8.1":fxvol%=2:�tick(22,0,�):�tick(22,1,�)
�( � "9.0":file_path$=�get_writem(135)
�K  � �file_path$,".")=0 file_path$=app_directory$+".rhythms."+file_path$
�  �load_rhythm(file_path$)
 �
�
:
"'��save_key_press(key%,icon_handle%)
,� file_name$,file_type%
6
Ȏ key% �
@	 � 13
J1  file_name$=�get_icon_text(save%,name_icon%)
T4  file_type%=�icon_sprite_type(save%,file_icon%)
^  � �file_name$,".") �
h   $(blk%+44)=file_name$+�0
r$   �save(file_name$):�menu_close
|  �
�8   $(blk%+44)=app_directory$+".songs."+file_name$+�0
�1   �save(app_directory$+".songs."+file_name$)
�  �
� �
��
�:
�.��save_rhythm_key_press(key%,icon_handle%)
�� file_name$,file_type%
�
Ȏ key% �
�	 � 13
�=  file_name$=�get_icon_text(save_rthm%,rhythm_name_icon%)
�@  file_type%=�icon_sprite_type(save_rthm%,rhythm_file_icon%)
�  � �file_name$,".") �
D   $(blk%+44)=file_name$+�0:�save_rhythm(file_name$):�menu_close
  �
:   $(blk%+44)=app_directory$+".rhythms."+file_name$+�0
&:   �save_rhythm(app_directory$+".rhythms."+file_name$)
0  �
: �
D�
N:
X/��chord_key_press(window%,icon%,s%,c%,key%)
b
Ȏ key% �
l+ � 13:�enter_chord(window%,icon%,s%,c%)
v, � &4:�delete_chord(window%,icon%,s%,c%)
�, � &9:�insert_chord(window%,icon%,s%,c%)
��
��
�:
�0��rhythm_key_press(window%,icon%,s%,p%,key%)
�
Ȏ key% �
�	 � 13
�2  rhythm$(s%,p%)=�get_icon_text(window%,icon%)
�E  � p%<sequlen%(s%) �place_caret(window%,rhythm_icon%(s%,p%+1),1)
� �
��
�:
���save_request
$� to_window%,to_icon%,data_type%
:to_window%=blk%!20:to_icon%=blk%!24:data_type%=blk%!40
Ȏ data_type% �
  � &00A
*)  file_name$=�get_string(blk%+44,255)
46  blk%!12=blk%!8:blk%!16=4:ș262375,17,blk%,blk%!4
>  �load(file_name$)
H � &00B
R)  file_name$=�get_string(blk%+44,255)
\6  blk%!12=blk%!8:blk%!16=4:ș262375,17,blk%,blk%!4
f  �load_rhythm(file_name$)
p �
z�
�:
���load_request
�� file_type%,file_name$
�file_type%=blk%!40
�Ȏ file_type% �
�A � &00A:file_name$=�get_string(blk%+44,255):�load(file_name$)
�H � &00B:file_name$=�get_string(blk%+44,255):�load_rhythm(file_name$)
� �
��
�:
���save_demand
�� file_name$,file_type%
�'file_name$=�get_string(blk%+44,255)
,� blk%!36=-1 � to_filer%=� � to_filer%=�
file_type%=blk%!40
Ȏ drag_window% �
$2 � save%:�save(file_name$):�message_save_reply
.4  � to_filer% �put_icon_text(save%,1,file_name$)
8> � save_rthm%:�save_rhythm(file_name$):�message_save_reply
B9  � to_filer% �put_icon_text(save_rthm%,1,file_name$)
L �
V�menu_close
`�
j:
t��double_click
~� file_type%,file$
�file_type%=blk%!40
�Ȏ file_type% �
�/ � &00A:file_name$=�get_string(blk%+44,255)
�6  blk%!12=blk%!8:blk%!16=4:ș262375,17,blk%,blk%!4
�  �load(file_name$)
�/ � &00B:file_name$=�get_string(blk%+44,255)
�6  blk%!12=blk%!8:blk%!16=4:ș262375,17,blk%,blk%!4
�  �load_rhythm(file_name$)
� �
��
�:
���load_check
file_to_load$=�command_line

� file_to_load$<>"" �
# Ȏ �file_type(file_to_load$) �
!  � &00A:�load(file_to_load$)
((  � &00B:�load_rhythm(file_to_load$)
2 �
<�
F�
P:
Z��save(file$)
dș263872
n� s%,c%,r%,b%,v%
xF%=�(file$)
�.�#F%,tempo%,sequences%,rhythms%,structure$
�A� s%=0 � sequences%-1:�#F%,sequlen%(s%):� c%=1 � sequlen%(s%)
�& �#F%,chord$(s%,c%),rhythm$(s%,c%)
� �:�
�[� r%=0 � rhythms%-1:�#F%,nobeats%(r%),rhythm_name$(r%):� c%=1 � 7:� b%=1 � nobeats%(r%)
�' �#F%,vol%(r%,c%,b%),ins%(r%,c%,b%)
�
 �:�:�
�,� v%=1 � 6:�#F%,fx%(v%),fxchannel%(v%):�
��#F%:�menu_close
�!ș8,&12,blk%+44,&00A:ș263873
��
�:
���load(file$)
� s%,c%,r%,b%,v%
� c%=1 � 8:� c%,0,0,-1:�
F%=�(file$)
"6� F%=0 �report_error("File not found","Loading"):�
,ș263872
6k�delete_windows:� s%=0 � sequences%-1:� c%=1 � sequlen%(s%):chord$(s%,c%)="    ":rhythm$(s%,c%)="a":�:�
@3� r%=0 � rhythms%-1:rhythm_name$(r%)=�(r%+97):�
J.�#F%,tempo%,sequences%,rhythms%,structure$
TA� s%=0 � sequences%-1:�#F%,sequlen%(s%):� c%=1 � sequlen%(s%)
^& �#F%,chord$(s%,c%),rhythm$(s%,c%)
h �:�
r[� r%=0 � rhythms%-1:�#F%,nobeats%(r%),rhythm_name$(r%):� c%=1 � 7:� b%=1 � nobeats%(r%)
|' �#F%,vol%(r%,c%,b%),ins%(r%,c%,b%)
�
 �:�:�
�,� v%=1 � 6:�#F%,fx%(v%),fxchannel%(v%):�
��#F%:�update_windows(file$)
�m�put_writem(3,�(tempo%)):�put_writem(4,�(trans%)):�put_writem(5,structure$):�put_icon_text(save%,1,file$)
�9�open_windows:�open_window(keyboard_window%):ș263873
�play_rhythm%=0
��
�:
���save_rhythm(file$)
�ș263872
�<� c%,r%,b%:r%=edit_rhythm%:F%=�(file$):�#F%,nobeats%(r%)
�G� c%=1 � 7:� b%=1 � nobeats%(r%):�#F%,vol%(r%,c%,b%),ins%(r%,c%,b%)
� �:�
 &�#F%:rhythm_name$(r%)=�leaf(file$)
 9�delete_window(rhythm_window%(r%)):�rhythm_window(r%)
 $�open_window(rhythm_window%(r%))
 &!ș8,&12,blk%+44,&00B:ș263873
 0�
 ::
 D��load_rhythm(file$)
 NL� rhythms%=26:�report_error("Only 26 rhythms possible!","Load Rhythm"):�
 XBF%=�(file$):� F%=0 �report_error("File not found","Loading"):�
 b5ș263872:� c%,r%,b%:r%=rhythms%:�#F%,nobeats%(r%)
 lG� c%=1 � 7:� b%=1 � nobeats%(r%):�#F%,vol%(r%,c%,b%),ins%(r%,c%,b%)
 v �:�
 �!rhythm_name$(r%)=�leaf(file$)
 �C�rhythm_window(rhythms%):�open_window(rhythm_window%(rhythms%))
 �rhythms%+=1:�#F%:ș263873
 ��
 �:
 ���error(!errorblk%,error$)
 �errorcount%+=1
 �,� errorcount%>5:� � 0,"Too many errors!"
 �(� �<200 error$+=" at line "+�(� �10)
 �8� �=200 error$="*** Error in menu file! *** "+error$
 �8� �=201 error$="***     Menu error      *** "+error$
 �8� �=202 error$="***     Icon error      *** "+error$
 �8� �=203 error$="***     File error      *** "+error$
!8� �=204 error$="***    Window error     *** "+error$
!ș131085,0,menufile%
!ș393434
! $(errorblk%+4)=error$
!*"ș262367,errorblk%,1,app_name$
!4�
!>:
!H
��quit
!R	*FX12
!\ș262365
!f�
!p�
!z:
!���event
!�� sustain%=0 �keyboard(0)
!�(� �>tempo% �=0:� play_rhythm% �strum
!��
!�:
!���stereo
!�.� ch%=1 � 8:ș262466,ch%,stereo%(ch%)*32:�
!��
!�:
!���copy_sequence(s%)
!�� c%
!�ș263872
!�R� sequences%=26:�report_error("Only 26 sequences possible!","Copy Sequence"):�
"� c%=1 � sequlen%(s%)
"N chord$(sequences%,c%)=chord$(s%,c%):rhythm$(sequences%,c%)=rhythm$(s%,c%)
" �
"$%sequlen%(sequences%)=sequlen%(s%)
".K�sequence_window(sequences%):�open_window(sequence_window%(sequences%))
"8sequences%+=1:ș263873
"B�
"L:
"V��add_sequence
"`ș263872
"jQ� sequences%=26:�report_error("Only 26 sequences possible!","Add Sequence"):�
"tK�sequence_window(sequences%):�open_window(sequence_window%(sequences%))
"~sequences%+=1:ș263873
"��
"�:
"���clear_sequence(s%)
"�� c%
"�ș263872
"�9� c%=1 � 32:chord$(s%,c%)="    ":rhythm$(s%,c%)="a":�
"�7sequlen%(s%)=0:�delete_window(sequence_window%(s%))
"�;�sequence_window(s%):�open_window(sequence_window%(s%))
"�ș263873
"��
"�:
"���global_rhythm(r$,s%)
#� c%
#
ș263872
##� c%=1 � 32:rhythm$(s%,c%)=r$:�
#'�close_window(sequence_window%(s%))
#(;�sequence_window(s%):�open_window(sequence_window%(s%))
#2ș263873
#<�
#F:
#P��copy_rhythm(r%)
#Z� c%,b%
#dș263872
#nL� rhythms%=26:�report_error("Only 26 rhythms possible!","Copy Rhythm"):�
#x#nobeats%(rhythms%)=nobeats%(r%)
#�$� c%=1 � 7:� b%=1 � nobeats%(r%)
#�)  vol%(rhythms%,c%,b%)=vol%(r%,c%,b%)
#�)  ins%(rhythms%,c%,b%)=ins%(r%,c%,b%)
#�	  �:�
#�C�rhythm_window(rhythms%):�open_window(rhythm_window%(rhythms%))
#�rhythms%+=1:ș263873
#��
#�:
#���add_rhythm
#�ș263872
#�K� rhythms%=26:�report_error("Only 26 rhythms possible!","Add Rhythm"):�
#�C�rhythm_window(rhythms%):�open_window(rhythm_window%(rhythms%))
#�rhythms%+=1:ș263873
$�
$:
$��clear_rhythm(r%)
$"� c%,b%
$,ș263872
$6$� c%=1 � 7:� b%=1 � nobeats%(r%)
$@  vol%(r%,c%,b%)=-1
$J  ins%(r%,c%,b%)=0
$T	  �:�
$^%�close_window(rhythm_window%(r%))
$h7�rhythm_window(r%):�open_window(rhythm_window%(r%))
$rș263873
$|�
$�:
$���no_beats(r%)
$�ș263872
$�%�close_window(rhythm_window%(r%))
$�7�rhythm_window(r%):�open_window(rhythm_window%(r%))
$�ș263873
$��
$�:
$���octaves(choice$)
$�� p%,o%
$�+p%=�(�choice$,1)):o%=�(�choice$,3,1))+1
$�Ȏ p% �
$�6 � 6:�tick(10,coct%-1,�):coct%=o%:�tick(10,o%-1,�)
%6 � 7:�tick(11,boct%-1,�):boct%=o%:�tick(11,o%-1,�)
%6 � 8:�tick(12,koct%-1,�):koct%=o%:�tick(12,o%-1,�)
%�
%&�
%0:
%:��name_voices
%D� m%,voice$
%N� m%=0 � 127
%X# ș262531,0,1+m%�32 � voice$,F%
%b � �voice$,"!K")=0 �
%l   � m%>95 voice$="  "+voice$
%v7  �put_writem(m%+6,voice$):�shade(14+m%�32,m%�32,�)
%� �
%�;  �put_writem(m%+6,�(1+m%�32)):�shade(14+m%�32,m%�32,�)
%� �
%��
%��
%�:
%���instruments(choice$)
%�� r%,p%,v%,F%,voice$
%�+p%=�(�choice$,3,1)):v%=�(�choice$,5))+1
%�Ȏ p% �
%�3 � 0:�tick(14,chord_voice%-1,�):chord_voice%=v%
%�   �tick(14,chord_voice%-1,�)
%�/  ș262531,0,chord_voice% � chord_voice$,F%
&C  �put_icon_text(keyboard_window%,chord_ins_icon%,chord_voice$)
&1 � 1:�tick(15,bass_voice%-1,�):bass_voice%=v%
&  �tick(15,bass_voice%-1,�)
&   ș262533,7,bass_voice%
&*-  ș262531,0,bass_voice% � bass_voice$,F%
&4A  �put_icon_text(keyboard_window%,bass_ins_icon%,bass_voice$)
&>9 � 2:�tick(16,keyboard_voice%-1,�):keyboard_voice%=v%
&H#  �tick(16,keyboard_voice%-1,�)
&R   ș262533,8,keyboard_voice%
&\5  ș262531,0,keyboard_voice% � keyboard_voice$,F%
&fI  �put_icon_text(keyboard_window%,keyboard_ins_icon%,keyboard_voice$)
&p � 3,4,5,6,7,8
&z0  � ��get_writem(101+fx%(p%-2)),1)=�(p%-2) �
&�'   ș262531,0,fx%(p%-2) � voice$,F%
&�-   �put_writem(101+fx%(p%-2),"  "+voice$)
&�  �
&�  fx%(p%-2)=v%
&�  ș262531,0,v% � voice$,F%
&�,  �put_writem(101+v%,�(p%-2)+" "+voice$)
&� � 9
&�  � fxchannel%(v%)=� �
&�(   fxchannel%(v%)=�:�tick(18,v%-1,�)
&�V   � r%=0 � rhythms%-1:�put_icon_text(rhythm_window%(r%),(v%-1)*5,�(7-v%)+"   "):�
&�)  � fxchannel%(v%)=�:�tick(18,v%-1,�)
&�V   � r%=0 � rhythms%-1:�put_icon_text(rhythm_window%(r%),(v%-1)*5,�(7-v%)+" FX"):�
&�  �
' �
'�
':
'$&��enter_chord(window%,icon%,s%,c%)
'.� type$,x%,y%
'8=type$="write":chord$(s%,c%)=�get_icon_text(window%,icon%)
'B� c%=sequlen%(s%)+1 �
'L sequlen%(s%)+=1
'V  � c%<32 �
'`   �close_window(window%)
'j4   c%+=1:x%=((c%-1)�4)*128+4:y%=-((c%-1)�4)*56-4
't   text$=chord$(s%,c%)
'~D   chord_icon%(s%,c%)=�add_icon(type$,text$,window%,x%,y%,4,0,1)
'�4   �put_icon_text(window%,chord_icon%(s%,c%),"")
'�   text$=rhythm$(s%,c%)
'�H   rhythm_icon%(s%,c%)=�add_icon(type$,text$,window%,x%+88,y%,1,0,1)
'�6   �icon_bg_colour(window%,rhythm_icon%(s%,c%),14)
'�6   �icon_fg_colour(window%,rhythm_icon%(s%,c%),11)
'�G   �open_window(window%):�place_caret(window%,chord_icon%(s%,c%),0)
'�   �
'�  �
'�;   � c%<32 �place_caret(window%,chord_icon%(s%,c%+1),0)
'� �
'��
'�:
(+��delete_chord(window%,icon%,s%,chord%)
(
� c%
(.� sequlen%(s%)=1 � chord%=sequlen%(s%)+1 �
(2� c%=chord% � sequlen%(s%)+1*(sequlen%(s%)=32)
((" chord$(s%,c%)=chord$(s%,c%+1)
(2= �put_icon_text(window%,chord_icon%(s%,c%),chord$(s%,c%))
(<K � chord$(s%,c%+1)="    " �put_icon_text(window%,chord_icon%(s%,c%),"")
(F$ rhythm$(s%,c%)=rhythm$(s%,c%+1)
(P? �put_icon_text(window%,rhythm_icon%(s%,c%),rhythm$(s%,c%))
(Z �
(d� sequlen%(s%)=32 �
(n chord$(s%,c%+1)=""
(xA �put_icon_text(window%,chord_icon%(s%,c+1%),chord$(s%,c+1%))
(��
(� � c%=0 � 4
(�=  �delete_icon(window%,chord_icon%(s%,sequlen%(s%)+1)+c%)
(�>  �delete_icon(window%,rhythm_icon%(s%,sequlen%(s%)+1)+c%)
(� �
(��
(�sequlen%(s%)-=1
(��
(�:
(�+��insert_chord(window%,icon%,s%,chord%)
(�-� sequlen%(s%)=32 � chord%>sequlen%(s%) �
(�� c%,type$,x%,y%
(�type$="write"
)�close_window(window%)
)� sequlen%(s%)<31 �
)> c%=sequlen%(s%)+2:x%=((c%-1)�4)*128+4:y%=-((c%-1)�4)*56-4
)"C chord_icon%(s%,c%)=�add_icon(type$,"    ",window%,x%,y%,4,0,1)
),2 �put_icon_text(window%,chord_icon%(s%,c%),"")
)6D rhythm_icon%(s%,c%)=�add_icon(type$,"a",window%,x%+88,y%,1,0,1)
)@4 �icon_bg_colour(window%,rhythm_icon%(s%,c%),14)
)J4 �icon_fg_colour(window%,rhythm_icon%(s%,c%),11)
)T �
)^sequlen%(s%)+=1
)h%� c%=sequlen%(s%) � chord%+1 � -1
)r" chord$(s%,c%)=chord$(s%,c%-1)
)|= �put_icon_text(window%,chord_icon%(s%,c%),chord$(s%,c%))
)�$ rhythm$(s%,c%)=rhythm$(s%,c%-1)
)�? �put_icon_text(window%,rhythm_icon%(s%,c%),rhythm$(s%,c%))
)� �
)�Jchord$(s%,chord%)="    ":�put_icon_text(window%,chord_icon%(s%,c%),"")
)�H�open_window(window%):�place_caret(window%,chord_icon%(s%,chord%),0)
)��
)�:
)���keyboard(k%)
)�9N%=�lowkey$,�k%)+�highkey$,�k%)-12*(�highkey$,�k%)>0)
)�*� �lowkey$,�k%) L%=lkc?(�lowkey$,�k%))
)�,� �highkey$,�k%) L%=hkc?(�highkey$,�k%))
)�� N%=0 N%=�(-L%)
)�� N%=-1 � N%=255 �
*� N%=0 � 8,0,0,-1:�
*3� 8,-15,(N%-1)*&155+(koct%*&1000)+trans%*&2B,-1
*�
*&:
*0��strum
*:� ch%,i%,v%,p%
*D� ch%=1 � 6
*N" i%=0:v%=-1:i%=ins%(R%,ch%,B%)
*X � i% �
*b<  v%=vol%(R%,ch%,B%)*fxvol%:� v%>-1 ș262533,ch%,fx%(i%)
*l �
*v@  v%=vol%(R%,ch%,B%)*cvol%:� v%>-1 ș262533,ch%,chord_voice%
*� �
*�W � fxchannel%(ch%)=� p%=p%(7-ch%)*&155+coct%*&1000+trans%*&2B � p%=&3000+trans%*&2B
*�, � v%>-1 � p%(7-ch%)>-1 � ch%,-v%,p%,255
*��
*�Kv%=vol%(R%,7,B%)*bvol%:p%=p%(ins%(R%,7,B%))*&155+boct%*&1000+trans%*&2B
*�1� v%>-1 � p%(ins%(R%,7,B%))>-1 � 7,-v%,p%,255
*�� tempo%>7 �beat
*�F� B%=1 �icon_bg_colour(sequence_window%(Z%),chord_icon%(Z%,C%),10)
*�	B%+=1
*�� B%>nobeats%(R%) �
*�7 B%=1:� play_sequence%=� � repeat%=� play_rhythm%=�
*�? �icon_bg_colour(sequence_window%(Z%),chord_icon%(Z%,C%),0)
*� � play_sequence%=� C%+=1
+ � C%>sequlen%(Z%) �
+E  C%=1:� play_song%=� � repeat%=� play_sequence%=�:play_rhythm%=�
+  � play_song%=� S%+=1
+   � S%>�(structure$) �
+*D   S%=1:� repeat%=� play_song%=�:play_sequence%=�:play_rhythm%=�
+4  �
+>X  structure_pos$=�structure$,S%-1)+"("+�structure$,S%,1)+")"+�structure$,S%+1,19-S%)
+HE  �put_icon_text(keyboard_window%,structure_icon%,structure_pos$)
+R-  � play_song% Z%=�(�structure$,S%,1))-65
+\ �
+fC � play_sequence% �chord(chord$(Z%,C%)):R%=�(rhythm$(Z%,C%))-97
+p�
+z�
+�:
+�
��beat
+�L�icon_bg_colour(rhythm_window%(last_r%),beat_icon%(1,last_b%),last_vol%)
+�;�icon_bg_colour(rhythm_window%(R%),beat_icon%(1,B%),14)
+�Llast_r%=R%:last_b%=B%:last_vol%=vol%(R%,1,B%):� last_vol%<0 last_vol%=15
+��
+�:
+���chord(c$)
+�� r%
+�� c$="/" �
+�"� c$="" � �c$,1)=" " p%()=-1:�
+�r%=�root$,�c$,1))-1
+�� �c$,"#") r%+=1
,� �c$,"b") r%-=1
,;p%()=r%:p%(2)+=4:p%(3)+=7:p%(4)+=12:p%(5)+=16:p%(6)+=19
,:� (�c$,"m") � �c$,"-")) � � �c$,"M") p%(2)-=1:p%(5)-=1
,$2� (�c$,"7") � �c$,"11")) � � �c$,"M") p%(4)-=2
,.� �c$,"M7") p%(4)-=1
,8 � �c$,"+") p%(3)+=1:p%(6)+=1
,B;� �c$,"-") p%(2)-=1:p%(3)-=1:p%(4)-=3:p%(5)-=4:p%(6)-=5
,L,� �c$,"s") � �c$,"11") p%(2)+=1:p%(5)+=1
,V,� �c$,"6") � �c$,"13") p%(3)+=2:p%(6)+=2
,`#� �c$,"9") � �c$,"13") p%(4)+=2
,j�
,t:
,~ݤfile_size(file$)
,�� size%,found%
,�"ș8,17,file$ � found%,,,,size%
,�<� found%<>1 � � 203,"File '"+�leaf(file$)+"' not found!"
,�
=size%
,�:
,�ݤfile_type(file$)
,�� temp%,found%
,�(ș"OS_File",17,file$ � found%,,temp%
,�;� found%<>1 � � 203,"File "+�leaf(file$)+", not found!"
,�,�(temp%>>>20)=&FFF�=(temp%>>>8)�&FFF �=0
,�:
,�A��initiate_save(window%,icon%,x%,y%,file$,start%,size%,type%)
-blk%!0=256
-

blk%!12=0
-
blk%!16=1
-blk%!20=window%
-(blk%!24=icon%
-2blk%!28=x%
-<blk%!32=y%
-Fblk%!36=size%
-Pblk%!40=type%
-Z$(blk%+44)=file$+�0
-d6ș262375,17,blk%,window%,icon% � destination_task%
-n�
-x:
-���message_save_reply
-�4blk%!12=blk%!8:blk%!16=3:ș262375,17,blk%,blk%!4
-��
-�:
-�ݤcommand_line
-�� pos%,cmd_line$
-�ș "OS_GetEnv" � cmd_line$
-�pos%=�cmd_line$," -quit ")
-�� pos%=0 =""
-�pos%+=7
-�&ȕ�cmd_line$,pos%,1)=" ":pos%+=1:�
-�#pos%=�cmd_line$+" "," ",pos%+1)
-�%�pos%+=1:��cmd_line$,pos%,1)<>" "
.cmd_line$=�cmd_line$,pos%)
./cmd_line$=�cmd_line$,�cmd_line$+" "," ")-1)
.=cmd_line$
.":
.,=ݤadd_icon(type$,text$,window%,x%,y%,sl%,esg_sp%,border%)
.6G� icon%,text_space%,name_space%,val_space%,w%,h%,mode%,xs%,ys%,sel%
.@sel%=sl%
.J� sl%<�text$ sl%=�text$
.T� sl%<�type$ sl%=�type$
.^� text_space% sl%
.htemp_blk%!0=window%
.rtemp_blk%!4=x%
.|temp_blk%!8=y%-48
.� temp_blk%!12=x%+16+16*�text$
.�temp_blk%!16=y%
.�$text_space%=text$
.�temp_blk%!20=&17000139
.�temp_blk%!24=text_space%
.�temp_blk%!28=-1
.�temp_blk%!32=�text$
.�Ȏ �type$,5) �
.� � "file_"
.�0  ș262377,&28,,type$+�(0) � ,,,w%,h%,,mode%
.�  ș53,mode%,4 � ,,xs%
.�  ș53,mode%,5 � ,,ys%
.�  h%=h%<<ys%:w%=w%<<xs%
/  � text$="" �
/   temp_blk%!8=y%-h%
/   temp_blk%!12=x%+w%
/&   temp_blk%!20=&1700613A
/0   temp_blk%!28=1
/:   temp_blk%!32=�type$
/D   $text_space%=type$
/N  �
/X"   temp_blk%!8=y%-h%-(10<<ys%)
/b*   sl%=(8<<xs%)*�text$:� sl%>w% w%=sl%
/l   temp_blk%!12=x%+w%
/v   temp_blk%!20=&1700612B
/�   � name_space% (2+�type$)
/�   $name_space%="s"+type$
/�   temp_blk%!28=name_space%
/�  �
/� � "sprit"
/�4  ș46,&128,esg_sp%,text$+�(0) � ,,,w%,h%,,mode%
/�  ș53,mode%,4 � ,,xs%
/�  ș53,mode%,5 � ,,ys%
/�  h%=h%<<ys%:w%=w%<<xs%
/�  temp_blk%!8=y%-h%
/�  temp_blk%!12=x%+w%
/�  temp_blk%!20=&1700313A
/�  temp_blk%!28=esg_sp%
0  temp_blk%!32=�text$
0  $text_space%=text$
0% � "selec":temp_blk%!20=&17003139
0 & � "actio":temp_blk%!20=&C71F913D.
0*% � "repor":temp_blk%!20=&0700313D
04 � "optio"
0>  temp_blk%!8=y%-52
0H%  temp_blk%!12=x%+40+16+16*�text$
0R  temp_blk%!20=&1700B133
0\#  � sel% temp_blk%!20=&17303133
0f'  � val_space% (2+�"soptoff,opton")
0p!  $val_space%="soptoff,opton"
0z  temp_blk%!28=val_space%
0� � "radio"
0�  temp_blk%!8=y%-52
0�%  temp_blk%!12=x%+40+16+16*�text$
0�.  � (esg_sp%<1) � (esg_sp%>31) � esg_sp%=1
0�/  temp_blk%!20=&1700B133 � (esg_sp%*&10000)
0�6  � sel% temp_blk%!20=&1720B133 � (esg_sp%*&10000)
0�,  � text_space% (2+�"sradiooff,radioon")
0�&  $text_space%="sradiooff,radioon"
0�  temp_blk%!28=text_space%
0� � "write"
0�"  temp_blk%!12=x%+16+16*�text$
0�  temp_blk%!20=&0700F131
0�  � val_space% 27
1  $val_space%=""
1  temp_blk%!28=val_space%
1!  � sel%<(�text$) sel%=�text$
1$  temp_blk%!32=sel%+1
1. �
18ș262338,,temp_blk% � icon%
1B+� border%>0 �border_icon(window%,icon%)
1L
=icon%
1V:
1`Dݤadd_icon_block(window_handle%,minx%,miny%,maxx%,maxy%,colour%)
1j� icon%
1ttemp_blk%!0=window_handle%
1~ � minx%>maxx% Ȕ minx%,maxx%
1� � miny%>maxy% Ȕ miny%,maxy%
1�� minx%=maxx% maxx%+=1
1�� miny%=maxy% maxy%+=1
1�temp_blk%!4=minx%
1�temp_blk%!8=miny%
1�temp_blk%!12=maxx%
1�temp_blk%!16=maxy%
1�!temp_blk%!20=32+(colour%<<28)
1�ș262338,,temp_blk% � icon%
1�
=icon%
1�:
1�.��border_icon(window_handle%,icon_handle%)
21� icon%,minx%,miny%,maxx%,maxy%,flag%,tl%,br%
2
temp_blk%!0=window_handle%
2temp_blk%!4=icon_handle%
2ș262350,,temp_blk%
2(minx%=temp_blk%!8
22miny%=temp_blk%!12
2<maxx%=temp_blk%!16
2Fmaxy%=temp_blk%!20
2Pflag%=temp_blk%!24
2Ztl%=0:br%=4
2dC� (flag% � 4)=4 minx%-=4:maxx%+=4:miny%-=4:maxy%+=4:tl%=4:br%=0
2nKicon%=�add_icon_block(window_handle%,maxx%,miny%-4,maxx%+4,maxy%+4,br%)
2xKicon%=�add_icon_block(window_handle%,minx%-4,maxy%,maxx%+2,maxy%+4,tl%)
2�Iicon%=�add_icon_block(window_handle%,minx%-4,miny%-4,minx%,maxy%,tl%)
2�Kicon%=�add_icon_block(window_handle%,minx%-2,miny%-4,maxx%+2,miny%,br%)
2��
2�:
2�.��delete_icon(window_handle%,icon_handle%)
2�� minx%,miny%,maxx%,maxy%
2�7temp_blk%!0=window_handle%:temp_blk%!4=icon_handle%
2�ș262350,,temp_blk%
2�Nminx%=temp_blk%!8:miny%=temp_blk%!12:maxx%=temp_blk%!16:maxy%=temp_blk%!20
2�ș262340,,temp_blk%
2�3ș262353,window_handle%,minx%,miny%,maxx%,maxy%
2��
2�:
3+��drag_box(window_handle%,icon_handle%)
3� x%,y%
3temp_blk%!0=window_handle%
3"ș262347,,temp_blk%
3,<x%=temp_blk%!4-temp_blk%!20:y%=temp_blk%!16-temp_blk%!24
36temp_blk%!4=icon_handle%
3@ș262350,,temp_blk%
3J$� (temp_blk%!24 � &B000)=&B000 �
3T(� (temp_blk%!24 � &800000)=&800000 �
3^temp_blk%!4=5
3htemp_blk%!8+=x%
3rtemp_blk%!12+=y%
3|temp_blk%!16+=x%
3�temp_blk%!20+=y%
3�temp_blk%!24=-1
3�temp_blk%!28=-1
3�temp_blk%!32=&7FFFFFFF
3�temp_blk%!36=&7FFFFFFF
3�ș262352,,temp_blk%
3��
3�:
3�0ݤget_icon_text(window_handle%,icon_handle%)
3�temp_blk%!0=window_handle%
3�temp_blk%!4=icon_handle%
3�ș262350,,temp_blk%
3�#� (temp_blk%!24 � &101)<>&101 �
4, � 202,"Icon "+�icon%+" not indirected!"
4 =""
4�
4&=$temp_blk%!28
40:
4:9��icon_bg_colour(window_handle%,icon_handle%,colour%)
4D� colour%<0 � colour%>15 �
4Ntemp_blk%!0=window_handle%
4Xtemp_blk%!4=icon_handle%
4bș262350,,temp_blk%
4l� (temp_blk%!24 � 1<<6) � �
4vtemp_blk%!12=&F0000000
4�/temp_blk%!8=colour%<<28:ș262349,,temp_blk%
4��
4�:
4�9��icon_fg_colour(window_handle%,icon_handle%,colour%)
4�� colour%<0 � colour%>15 �
4�temp_blk%!0=window_handle%
4�temp_blk%!4=icon_handle%
4�ș262350,,temp_blk%
4�� (temp_blk%!24 � 1<<6) � �
4�temp_blk%!12=&F000000
4�/temp_blk%!8=colour%<<24:ș262349,,temp_blk%
4��
4�:
58��icon_validation(window_handle%,icon_handle%,type$)
5temp_blk%!0=window_handle%
5temp_blk%!4=icon_handle%
5 ș262350,,temp_blk%
5*%� (temp_blk%!24 � &E101)<>&E101 �
54D � 202,"Icon "+�icon_handle%+" not writable and not indirected!"
5> �
5H�
5RȎ type$ �
5\% � "number":$temp_blk%!32="A0-9."
5f0 � "file":$temp_blk%!32="A~ $&@\\^:.#*|"+�34
5p
5z $temp_blk%!32="A"+type$
5��
5��
5�:
5�8��place_caret(window_handle%,icon_handle%,position%)
5�temp_blk%!0=window_handle%
5�temp_blk%!4=icon_handle%
5�ș262350,,temp_blk%
5�%� (temp_blk%!24 � &E101)<>&E101 �
5�D � 202,"Icon "+�icon_handle%+" not writable and not indirected!"
5� �
5��
5�text$=$temp_blk%!28
5�'� position%>�text$ position%=�text$
69ș262354,window_handle%,icon_handle%,0,0,-1,position%
6�
6:
6$6��put_icon_text(window_handle%,icon_handle%,text$)
6.temp_blk%!0=window_handle%
68temp_blk%!4=icon_handle%
6Bș262350,,temp_blk%
6L#� (temp_blk%!24 � &101)<>&101 �
6V3 � 202,"Icon "+�icon_handle%+" not indirected!"
6` �
6j�
6t<text$=�text$,temp_blk%!36):� -1 allows for <RETURN> chr!
6~$temp_blk%!28=text$
6�temp_blk%!8=0
6�temp_blk%!12=0
6�ș262349,,temp_blk%
6��
6�:
6�)ݤput_icon_on_bar(sprite_name$,side$)
6�
� handle%
6�1� side$="RIGHT" !temp_blk%=-1 � !temp_blk%=-2
6�temp_blk%!4=0
6�temp_blk%!8=0
6�temp_blk%!12=68
6�temp_blk%!16=68
7temp_blk%!20=&1700202A
7
 $(temp_blk%+24)=sprite_name$
7!ș262338,,temp_blk% � handle%
7=handle%
7(:
72C��put_info_text(window_handle%,name$,purpose$,author$,version$)
7<*�put_icon_text(window_handle%,1,name$)
7F-�put_icon_text(window_handle%,2,purpose$)
7P,�put_icon_text(window_handle%,3,author$)
7Z-�put_icon_text(window_handle%,4,version$)
7d�
7n:
7x� �task_initialise(title$)
7�� version%
7�version%=200
7�<ș262336,version%,&4B534154,title$ � version%,this_task%
7�=this_task%
7�:
7���add_menu_item(line$)
7�D� menuflag%,iconflag%,param$,sub%,itemtext$,writable%,maxlength%
7�*iconflag%=&7000021:sub%=-1:writable%=�
7�:itemtext$=�menu_item_text(line$):maxlength%=�itemtext$
7��
7�# param$=�menu_item_param(line$)
7� Ȏ �param$,4) �
7�#  �"tick":menuflag%=menuflag%�1
8#  �"line":menuflag%=menuflag%�2
8)  �"shad":iconflag%=iconflag%�&400000
82  �"subm":sub%=�menu_submenu(�menuvar(param$))
8"1  �"wind":sub%=�menu_window(�menuvar(param$))
8,8  �"icon":iconflag%=�menu_iconflag(�menuvar(param$))
86.  �"writ":�menu_writable(�menuvar(param$))
8@  �
8J � param$=""
8Tpointer%!0=menuflag%
8^pointer%!4=sub%
8h#� �(itemtext$)>12 � writable% �
8r  pointer%!8=iconflag% � &100
8|4 �indirected_item(pointer%,writable%,maxlength%)
8��
8� pointer%!8=iconflag%
8�' $(pointer%+12)=�itemtext$+�(0),12)
8��
8�pointer%+=24
8��
8�:
8�ݤbeginmenu(line$)
8�� �line$,9)="beginmenu" =�
8�=�
8�:
8�&ݤdecode_menu(menustart%,listptr%)
8�� text_path$
9:ș262357,,menustart%,listptr%,blk%+256 � ,,,text_path$
9=text_path$
9:
9&E��dim_menu_arrays(menucount%,itemcount%,writecount%,windowcount%)
900� menustart% (menucount%*28)+(itemcount%*24)
9:� menuwidth%(menucount%)
9D� menu%(menucount%)
9N!� writable_item%(writecount%)
9X � writable_len%(writecount%)
9b�
9l:
9vݤget_writem(writem%)
9�� temp$
9�1� writem%<1 � writem%>�(writable_item%(),1) �
9�> � 201,"writable menu item "+�(writem%)+" does not exist!"
9��
9�#writem%=writable_item%(writem%)
9�:temp$="": ȕ ?writem%>31:temp$+=�?writem%:writem%+=1:�
9�
=temp$
9�:
9���goto_beginmenu
9�� temp%,line$
9��#menufile%=0
9�)� temp%=�#menufile%:line$=�#menufile%
9�%� �beginmenu(line$) � �#menufile%
:;� �#menufile% � 200,"No 'beginmenu' found in menu file"
:�#menufile%=temp%
:�
: :
:*2��indirected_item(menu_ptr%,writable%,length%)
:4� indir_ptr%
:>B� writable% � indir_ptr% length%+1 � � indir_ptr% 1+�itemtext$
:H;menu_ptr%!12=indir_ptr%:� pointer to indirection buffer
:R$indir_ptr%=itemtext$+�(0)
:\� writable% �
:f) writable_item%(writable%)=indir_ptr%
:p% writable_len%(writable%)=length%
:z indir_ptr%+=length%+1
:� menu_ptr%!20=length%+1
:��
:� indir_ptr%+=1+�itemtext$
:�. menu_ptr%!20=1+�itemtext$:� Buffer length
:��
:�?indir_ptr%=0
:�Amenu_ptr%!16=indir_ptr%:� Pointer to validation string (null)
:��
:�:
:�ݤitem_count(menu_ptr%)
:�� count%
:�count%=1:menu_ptr%+=28
:�5ȕ (!menu_ptr% � &80)=0:menu_ptr%+=24:count%+=1:�
;=count%
;:
;��load_menus(menufile$)
;$2� menucount%,header%,line$,pointer%,menustart%
;. �size_menu_arrays(menufile$)
;8menufile%=�menufile$
;B$�set_menu_arrays:�goto_beginmenu
;Lmenucount%=0:header%=�
;V�
;` line$=�#menufile%
;j � �beginmenu(line$) �
;tE  �header% � 200,"Bad menu file, no items in menu "+�(menucount%)
;~*  �menucount% �mark_menu_end(pointer%)
;�%  menucount%+=1:line$=�#menufile%
;�H  �make_menu_header(pointer%,line$,menuwidth%(menucount%)):header%=�
;� �
;�%  �add_menu_item(line$):header%=�
;� �
;�� �#menufile%
;��mark_menu_end(pointer%)
;�$ș131085,0,menufile%:menufile%=0
;�C�header% � 200,"Bad menu file, no items in menu "+�(menucount%)
;��
;�:
;�0��make_menu_header(� pointer%,title$,width%)
<$pointer%=�title$,12)+�(0)
<
pointer%?12=7
<pointer%?13=2
<pointer%?14=7
<(pointer%?15=0
<2pointer%!16=width%
<<pointer%!20=44
<Fpointer%!24=0
<Ppointer%+=28
<Z�
<d:
<n��mark_menu_end(pointer%)
<x'!(pointer%-24)=!(pointer%-24) � &80
<��
<�:
<���menu_close
<�ș262356,,-1
<��
<�:
<�ݤmenu_height(menu_ptr%)
<�#� itemcount%,linecount%,height%
<�itemcount%=1
<�%height%=menu_ptr%!20+menu_ptr%!24
<�menu_ptr%+=28
<�ȕ (!menu_ptr% � &80)=0
<� itemcount%+=1
=& � (!menu_ptr% � &2) linecount%+=1
= menu_ptr%+=24
=�
="%� (!menu_ptr% � &2) linecount%+=1
=,%=itemcount%*height%+linecount%*24
=6:
=@ݤmenu_iconflag(var$)
=J2�var$="" � 200,"Menu icon flag value missing!"
=T=�(var$)
=^:
=hݤmenu_item_param(� item$)
=r� param$
=|� �item$,",") �
=�= item$=�item$,�item$,",")+1):param$=�item$,�item$,",")-1)
=��
=� param$=""
=��
=�=param$
=�:
=�ݤmenu_item_text(item$)
=�-� �item$,",") item$=�item$,�item$,",")-1)
=�
=item$
=�:
=�ݤmenu_path(ptr%)
=�� path$
=�path$=�(!ptr%)
>ptr%+=4
>.ȕ !ptr%<>-1 path$+="."+�(!ptr%):ptr%+=4:�
>
=path$
>&:
>0ݤmenu_submenu(var$)
>:(� �(var$)<1 � �(var$)>�(menu%(),1) �
>DB � 200,"Can't find menu "+var$+", as referred to in:- "+param$
>N�
>X� �(var$)=menucount% �
>bM � 200,"An item in menu "+var$+" cannot have menu "+var$+" as a submenu!"
>l�
>v=menu%(�(var$))
>�:
>�ݤmenuvar(var$)
>�5var$=�var$,�var$,"(")+1):var$=�var$,�var$,")")-1)
>�	=var$
>�:
>�ݤmenu_window(var$)
>�
� handle%
>�� �
>�C� � � 0,"Menu file error. Window variable "+var$+" not found."
>�handle%=�(var$)
>�� handle%<1 �
>� ș131085,0,menufile%
>� �
?�
?=handle%
?:
? :
?*��menu_writable(var$)
?4maxlength%=0
?>� �var$,":") �
?H& maxlength%=�(�var$,�var$,":")+1))
?R3 �(itemtext$)>maxlength% maxlength%=�itemtext$
?\�
?f maxlength%=�itemtext$
?p�
?z+menuflag%=menuflag%�4:writable%=�(var$)
?��
?�:
?���put_writem(writem%,text$)
?�1� writem%<1 � writem%>�(writable_item%(),1) �
?�> � 201,"writable menu item "+�(writem%)+" does not exist!"
?��
?�%� �text$>writable_len%(writem%) �
?�, � �text$>100 text$=�text$,100)+"......"
?�F � 201,"Text '"+text$+"' too long for writable item "+�writem%+"!"
?��
?�"$writable_item%(writem%)=text$
?��
?�:
@#��clear_write_flag(menu%,item%)
@� flagaddress%
@$ �menu%<1 � menu%>�(menu%(),1) �
@$> � 201,"Clear write flag error. Out of range menu number!"
@. �
@81� item%<0 � item%>�item_count(menu%(menu%)) �
@B> � 201,"Clear write flag error. Out of range item number!"
@L �
@VUflagaddress%=menu%(menu%)+28+(24*item%):!flagaddress%=(!flagaddress% � &FFFFFFFB)
@`�
@j:
@t!��add_write_flag(menu%,item%)
@~� flagaddress%
@�#�menu%<1 � menu%>�(menu%(),1) �
@�< � 201,"Add write flag error. Out of range menu number!"
@� �
@�1� item%<0 � item%>�item_count(menu%(menu%)) �
@�< � 201,"Add write flag error. Out of range item number!"
@� �
@�Mflagaddress%=menu%(menu%)+28+(24*item%):!flagaddress%=(!flagaddress% � 4)
@��
@�:
@���set_menu_arrays
@�� itemcount%,line$,width%
@�4menucount%=0:pointer%=menustart%:�goto_beginmenu
A�
A
 line$=�#menufile%
A � �beginmenu(line$) �
AD  menu%(menucount%+1)=menustart%+(menucount%*28)+(itemcount%*24)
A((  line$=�#menufile%:� Get title line
A2H  menucount%+=1:line$=�line$,12):menuwidth%(menucount%)=12+16*�line$
A< �
AF  itemcount%+=1
AP  � �line$,",") �
AZ,   width%=12+16*�(�line$,�line$,",")-1))
Ad  �
An   width%=12+16*�line$
Ax  �
A�C  � width%>menuwidth%(menucount%) menuwidth%(menucount%)=width%
A� �
A�� �#menufile%
A��
A�:
A���shade(menu%,item%,shade%)
A�� flagaddress%
A�#�menu%<1 � menu%>�(menu%(),1) �
A�8 � 201,"Item shade error. Out of range menu number!"
A��
A�1� item%<0 � item%>�item_count(menu%(menu%)) �
A�= � 201,"Item shade error. Out of range menu item number!"
A��
B-flagaddress%=menu%(menu%)+28+(24*item%)+8
B(� shade%=� shade%=&400000 � shade%=0
B6!flagaddress%=(!flagaddress% � &FFBFFFFF) � shade%
B"�
B,:
B6!��size_menu_arrays(menufile$)
B@:� menucount%,itemcount%,writecount%,windowcount%,line$
BJmenufile%=�menufile$
BT�
B^ line$=�#menufile%
Bh � �beginmenu(line$) �
Br<  menucount%+=1:line$=�#menufile%:� Next line is an item
B| �
B�&  � �line$,",writ") writecount%+=1
B�'  � �line$,",wind") windowcount%+=1
B�  itemcount%+=1
B� �
B�� �#menufile%
B�$ș131085,0,menufile%:menufile%=0
B�D�dim_menu_arrays(menucount%,itemcount%,writecount%,windowcount%)
B��
B�:
B���tick(menu%,item%,tick%)
B�� flagaddress%
B�#�menu%<1 � menu%>�(menu%(),1) �
B�7 � 201,"Item tick error. Out of range menu number!"
C�
C1� item%<0 � item%>�item_count(menu%(menu%)) �
C7 � 201,"Item tick error. Out of range item number!"
C&�
C0+flagaddress%=menu%(menu%)+28+(24*item%)
C:� tick%=� tick%=1 � tick%=0
CD5!flagaddress%=(!flagaddress% � &FFFFFFFE) � tick%
CN�
CX:
Cb"ݤget_string(pointer%,length%)
Cl� temp$
Cv� length%=0 length%=255
C�,� pointer%=pointer% � pointer%+length%-1
C� � ?pointer%<32 �
C�  =temp$
C� �
C�  temp$+=�(?pointer%)
C� �
C��
C�
=temp$
C�:
C�ݤleaf(path$)
C�0ȕ �path$,"."):path$=�path$,�path$,".")+1):�
C�
=path$
C�:
D#��report_error(message$,title$)
D$message$=�0+�0+�0+�0+message$+�0
Dș262367,message$,18,title$
D �
D*:
D4!��show_value(line%,variable$)
D>line%=line%�4
DH� �variable$,"$") �
DR  variable$+="="+�(variable$)
D\�
Df � �variable$," ") �
Dp  �
Dz$  variable$+="="+�(�(variable$))
D� �
D��
D�4�put_icon_text(show_value%,line%,�variable$,35))
D��open_window(show_value%)
D��
D�:
D�ݤsystem_variable(sys_var$)
D�
� length%
D�3ș131107,sys_var$+�(0),temp_blk%,-1 � ,,length%
D�A� length%=0 � � 0,"System variable '"+sys_var$+"' not found!"
D�7ș131107,sys_var$+�(0),temp_blk%,255,,3 � ,,length%
D�?(temp_blk%+length%)=13
D�=$temp_blk%
E:
E2ݤget_sprite_name(window_handle%,icon_handle%)
E� temp$
E$temp_blk%!0=window_handle%
E.temp_blk%!4=icon_handle%
E8ș262350,,temp_blk%
EBȎ (temp_blk%!24 � &103) �
EL/ � &002,&003:=�get_string(temp_blk%!28,256)
EV � &102
E`  � temp_blk%!36>0 �
Ej.   =�get_string(temp_blk%!28,temp_blk%!36)
Et  �
E~8   � 202,"No sprite name in icon "+�icon_handle%:=""
E�  �
E�7 � &103:=��get_string(temp_blk%!32,temp_blk%!36),2)
E� 
E�7  � 202,"No sprite name in icon "+�icon_handle%:=""
E� �
E�
=temp$
E�:
E�3ݤicon_sprite_type(window_handle%,icon_handle%)
E�==�("&"+¤get_sprite_name(window_handle%,icon_handle%),3))
E�:
E�ݤload_sprites(file$)
E�� sprites%,size%
Fsize%=�file_size(file$)+16
F
� sprites% size%
Fsprites%!0=size%
Fsprites%!8=16
F(/ș46,&10A,sprites%,file$:� Load sprite file
F2
=sprites%
F<:
FFBݤnew_template(template_file$,window_name$,� memfree%,memend%)
FP� window_handle%
FZș262361,,template_file$
Fd;window_handle%=�template(window_name$,memfree%,memend%)
Fnș262362
Fx=window_handle%
F�:
F�(ݤtemplate(window_name$,� ptr%,end%)
F�� found%,window_handle%
F�Aș262363,,blk%,ptr%,end%,-1,window_name$,0 � ,,ptr%,,,,found%
F�� found% �
F�$ ș262337,,blk% � window_handle%
F��
F�@ � � 0,"Window "+window_name$+" not found in template file!"
F� window_handle%=0
F��
F�=window_handle%
F�:
F�#� �close_window(window_handle%)
G!temp_blk%=window_handle%
Gș262342,,temp_blk%
G�
G":
G,ݤcreate_info_window
G6� icon%
G@Ninfo%=�create_window("About this program",&84000012,660,212,0,660,999,999)
GJ8icon%=�add_icon("label","   Name:",info%,8,-4,0,0,0)
GT9icon%=�add_icon("report",�30," "),info%,156,-4,0,0,0)
G^:icon%=�add_icon("report",�30," "),info%,156,-56,0,0,0)
Gh;icon%=�add_icon("report",�30," "),info%,156,-108,0,0,0)
Gr;icon%=�add_icon("report",�30," "),info%,156,-160,0,0,0)
G|9icon%=�add_icon("label","Purpose:",info%,8,-56,0,0,0)
G�:icon%=�add_icon("label"," Author:",info%,8,-108,0,0,0)
G�:icon%=�add_icon("label","Version:",info%,8,-160,0,0,0)
G�
=info%
G�:
G���create_show_value
G�� icon%
G�Ishow_value%=�create_window("Show Variable",0,608,212,300,999,350,999)
G�=icon%=�add_icon("report",�36," "),show_value%,8,-4,0,0,0)
G�>icon%=�add_icon("report",�36," "),show_value%,8,-56,0,0,0)
G�?icon%=�add_icon("report",�36," "),show_value%,8,-108,0,0,0)
G�?icon%=�add_icon("report",�36," "),show_value%,8,-160,0,0,0)
G��
G�:
HLݤcreate_window(title$,wf%,x_size%,y_size%,left%,width%,bottom%,height%)
H� title_space%,handle%
H� title_space% (1+�title$)
H&temp_blk%!0=left%
H0temp_blk%!4=bottom%
H:temp_blk%!8=left%+width%
HD temp_blk%!12=bottom%+height%
HNtemp_blk%!16=0
HXtemp_blk%!20=0
Hbtemp_blk%!24=-1
Hl� wf%=0 wf%=&FF000012
Hvtemp_blk%!28=wf%
H�temp_blk%?32=7
H�temp_blk%?33=2
H�temp_blk%?34=7
H�temp_blk%?35=1
H�temp_blk%?36=3
H�temp_blk%?37=1
H�temp_blk%?38=12
H�temp_blk%?39=0
H�temp_blk%!40=0
H�temp_blk%!44=-y_size%
H�temp_blk%!48=x_size%
H�temp_blk%!52=0
H�temp_blk%!56=&119
Itemp_blk%!60=&6000
Itemp_blk%!64=1
Itemp_blk%?68=0
I temp_blk%?69=0
I*temp_blk%?70=0
I4temp_blk%?71=0
I>$title_space%=title$
IHtemp_blk%!72=title_space%
IRtemp_blk%!76=-1
I\temp_blk%!80=�(title$)+1
Iftemp_blk%!84=0
Ip!ș262337,,temp_blk% � handle%
Iz=handle%
I�:
I�$� �delete_window(window_handle%)
I�1!temp_blk%=window_handle%:ș262339,,temp_blk%
I��
I�:
I�"� �open_window(window_handle%)
I�!temp_blk%=window_handle%
I�ș262347,,temp_blk%
I�ș262341,,temp_blk%
I��
I�:
I�%ݤwindow_x_origin(window_handle%)
I�2temp_blk%!0=window_handle%:ș262347,,temp_blk%
J=temp_blk%!4-temp_blk%!20
J:
J%ݤwindow_y_origin(window_handle%)
J$2temp_blk%!0=window_handle%:ș262347,,temp_blk%
J.=temp_blk%!16-temp_blk%!24
J8:
�
00000000  0d 00 0a 3f f4 20 20 20  20 20 20 20 20 20 20 20  |...?.           |
00000010  20 20 20 2b 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |   +------------|
00000020  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000030  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2b 0d  |--------------+.|
00000040  00 14 3f f4 20 20 20 20  20 20 20 20 20 20 20 20  |..?.            |
00000050  20 20 7c 20 20 20 20 20  20 20 20 20 21 41 72 6d  |  |         !Arm|
00000060  6f 6e 79 2c 20 62 79 20  4d 69 6b 65 20 53 6d 69  |ony, by Mike Smi|
00000070  74 68 2c 20 20 20 20 20  20 20 20 20 20 7c 0d 00  |th,          |..|
00000080  1e 3f f4 20 20 20 20 20  20 20 20 20 20 20 20 20  |.?.             |
00000090  20 7c 20 20 20 20 20 56  65 72 73 69 6f 6e 20 31  | |     Version 1|
000000a0  2e 33 32 20 20 28 32 39  2f 31 32 2f 39 33 29 2c  |.32  (29/12/93),|
000000b0  20 62 61 73 65 64 20 6f  6e 20 20 20 7c 0d 00 28  | based on   |..(|
000000c0  3f f4 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |?.              |
000000d0  7c 20 20 20 20 20 42 61  72 65 42 6f 6e 65 73 20  ||     BareBones |
000000e0  57 69 6d 70 20 61 70 70  6c 69 63 61 74 69 6f 6e  |Wimp application|
000000f0  20 70 72 6f 67 72 61 6d  20 20 20 7c 0d 00 32 3f  | program   |..2?|
00000100  f4 20 20 20 20 20 20 20  20 20 20 20 20 20 20 7c  |.              ||
00000110  20 20 20 20 20 20 20 20  20 56 65 72 73 69 6f 6e  |         Version|
00000120  20 31 2e 30 30 20 20 28  34 2f 31 30 2f 39 32 29  | 1.00  (4/10/92)|
00000130  20 20 20 20 20 20 20 20  20 20 7c 0d 00 3c 3f f4  |          |..<?.|
00000140  20 20 20 20 20 20 20 20  20 20 20 20 20 20 7c 20  |              | |
00000150  20 20 20 20 20 20 20 20  20 28 43 29 20 41 6c 61  |         (C) Ala|
00000160  6e 20 53 65 6e 69 6f 72  20 31 39 39 32 20 20 20  |n Senior 1992   |
00000170  20 20 20 20 20 20 20 20  20 7c 0d 00 46 3f f4 20  |         |..F?. |
00000180  20 20 20 20 20 20 20 20  20 20 20 20 20 7c 20 20  |             |  |
00000190  20 20 44 61 62 73 20 50  72 65 73 73 20 3a 20 42  |  Dabs Press : B|
000001a0  61 73 69 63 20 57 69 6d  70 20 50 72 6f 67 72 61  |asic Wimp Progra|
000001b0  6d 6d 69 6e 67 20 20 20  7c 0d 00 50 3f f4 20 20  |mming   |..P?.  |
000001c0  20 20 20 20 20 20 20 20  20 20 20 20 2b 2d 2d 2d  |            +---|
000001d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000001f0  2d 2d 2d 2d 2d 2d 2d 2b  0d 00 5a 05 3a 0d 00 64  |-------+..Z.:..d|
00000200  1e ee 20 85 20 f6 3a f1  22 20 61 74 20 6c 69 6e  |.. . .:." at lin|
00000210  65 20 22 3b 9e 20 81 31  30 3a e0 0d 00 6e 0c c8  |e ";. .10:...n..|
00000220  99 32 36 33 38 37 32 0d  00 78 24 f2 64 65 66 69  |.263872..x$.defi|
00000230  6e 65 5f 61 72 72 61 79  73 3a f2 64 65 66 69 6e  |ne_arrays:.defin|
00000240  65 5f 76 61 72 69 61 62  6c 65 73 0d 00 82 1a ee  |e_variables.....|
00000250  20 85 20 f2 65 72 72 6f  72 28 9f 2c f6 24 29 3a  | . .error(.,.$):|
00000260  f2 71 75 69 74 0d 00 8c  2c 74 61 73 6b 5f 68 61  |.quit...,task_ha|
00000270  6e 64 6c 65 25 3d a4 74  61 73 6b 5f 69 6e 69 74  |ndle%=.task_init|
00000280  69 61 6c 69 73 65 28 61  70 70 5f 6e 61 6d 65 24  |ialise(app_name$|
00000290  29 0d 00 96 2d f2 6c 6f  61 64 5f 73 70 72 69 74  |)...-.load_sprit|
000002a0  65 73 3a f2 6c 6f 61 64  5f 77 69 6e 64 6f 77 73  |es:.load_windows|
000002b0  3a f2 69 6e 73 74 61 6c  6c 5f 69 63 6f 6e 0d 00  |:.install_icon..|
000002c0  a0 20 f2 63 72 65 61 74  65 5f 77 69 6e 64 6f 77  |. .create_window|
000002d0  73 3a f2 6d 65 6e 75 73  3a f2 69 6e 66 6f 0d 00  |s:.menus:.info..|
000002e0  aa 0f f2 6c 6f 61 64 5f  63 68 65 63 6b 0d 00 b4  |...load_check...|
000002f0  14 ee 20 85 20 f2 65 72  72 6f 72 28 9f 2c f6 24  |.. . .error(.,.$|
00000300  29 0d 00 be 0c c8 99 32  36 33 38 37 33 0d 00 c8  |)......263873...|
00000310  05 3a 0d 00 d2 14 f2 77  69 6d 70 5f 70 6f 6c 6c  |.:.....wimp_poll|
00000320  3a f2 71 75 69 74 0d 00  dc 05 3a 0d 00 e6 13 dd  |:.quit....:.....|
00000330  f2 64 65 66 69 6e 65 5f  61 72 72 61 79 73 0d 00  |.define_arrays..|
00000340  f0 46 de 20 62 6c 6b 25  20 26 32 30 30 30 3a de  |.F. blk% &2000:.|
00000350  20 74 65 6d 70 5f 62 6c  6b 25 20 26 32 30 30 30  | temp_blk% &2000|
00000360  3a de 20 65 72 72 6f 72  62 6c 6b 25 20 26 31 30  |:. errorblk% &10|
00000370  30 3a de 20 77 6f 72 6b  73 74 61 72 74 25 20 26  |0:. workstart% &|
00000380  31 30 30 30 0d 00 fa 32  77 6f 72 6b 66 72 65 65  |1000...2workfree|
00000390  25 3d 77 6f 72 6b 73 74  61 72 74 25 3a 77 6f 72  |%=workstart%:wor|
000003a0  6b 65 6e 64 25 3d 77 6f  72 6b 73 74 61 72 74 25  |kend%=workstart%|
000003b0  2b 26 31 30 30 30 0d 01  04 1f de 20 73 65 71 75  |+&1000..... sequ|
000003c0  6c 65 6e 25 28 32 35 29  3a 73 65 71 75 6c 65 6e  |len%(25):sequlen|
000003d0  25 28 29 3d 30 0d 01 0e  23 de 20 63 68 6f 72 64  |%()=0...#. chord|
000003e0  24 28 32 35 2c 33 32 29  3a 63 68 6f 72 64 24 28  |$(25,32):chord$(|
000003f0  29 3d 22 20 20 20 20 22  0d 01 18 22 de 20 72 68  |)="    "...". rh|
00000400  79 74 68 6d 24 28 32 35  2c 33 32 29 3a 72 68 79  |ythm$(25,32):rhy|
00000410  74 68 6d 24 28 29 3d 22  61 22 0d 01 22 32 de 20  |thm$()="a".."2. |
00000420  72 68 79 74 68 6d 5f 6e  61 6d 65 24 28 32 35 29  |rhythm_name$(25)|
00000430  3a 72 68 79 74 68 6d 5f  6e 61 6d 65 24 28 29 3d  |:rhythm_name$()=|
00000440  22 20 20 20 20 20 20 20  20 20 20 22 0d 01 2c 2b  |"          "..,+|
00000450  e3 20 72 25 3d 30 20 b8  20 32 35 3a 72 68 79 74  |. r%=0 . 25:rhyt|
00000460  68 6d 5f 6e 61 6d 65 24  28 72 25 29 3d bd 28 72  |hm_name$(r%)=.(r|
00000470  25 2b 39 37 29 3a ed 0d  01 36 1f de 20 6e 6f 62  |%+97):...6.. nob|
00000480  65 61 74 73 25 28 32 35  29 3a 6e 6f 62 65 61 74  |eats%(25):nobeat|
00000490  73 25 28 29 3d 38 0d 01  40 1d de 20 76 6f 6c 25  |s%()=8..@.. vol%|
000004a0  28 32 35 2c 37 2c 31 36  29 3a 76 6f 6c 25 28 29  |(25,7,16):vol%()|
000004b0  3d 2d 31 0d 01 4a 1c de  20 69 6e 73 25 28 32 35  |=-1..J.. ins%(25|
000004c0  2c 37 2c 31 36 29 3a 69  6e 73 25 28 29 3d 30 0d  |,7,16):ins%()=0.|
000004d0  01 54 14 de 20 66 78 25  28 36 29 3a 66 78 25 28  |.T.. fx%(6):fx%(|
000004e0  29 3d 37 0d 01 5e 21 de  66 78 63 68 61 6e 6e 65  |)=7..^!.fxchanne|
000004f0  6c 25 28 36 29 3a 66 78  63 68 61 6e 6e 65 6c 25  |l%(6):fxchannel%|
00000500  28 29 3d a3 0d 01 68 10  de 20 73 74 65 72 65 6f  |()=...h.. stereo|
00000510  25 28 38 29 0d 01 72 0b  de 20 70 25 28 36 29 0d  |%(8)..r.. p%(6).|
00000520  01 7c 15 de 20 6c 6b 63  20 31 36 3a de 20 68 6b  |.|.. lkc 16:. hk|
00000530  63 20 32 34 0d 01 86 2f  de 20 73 65 71 75 65 6e  |c 24.../. sequen|
00000540  63 65 5f 77 69 6e 64 6f  77 25 28 32 35 29 3a de  |ce_window%(25):.|
00000550  20 72 68 79 74 68 6d 5f  77 69 6e 64 6f 77 25 28  | rhythm_window%(|
00000560  32 35 29 0d 01 90 41 de  20 63 68 6f 72 64 5f 69  |25)...A. chord_i|
00000570  63 6f 6e 25 28 32 35 2c  33 32 29 3a de 20 72 68  |con%(25,32):. rh|
00000580  79 74 68 6d 5f 69 63 6f  6e 25 28 32 35 2c 33 32  |ythm_icon%(25,32|
00000590  29 3a de 20 62 65 61 74  5f 69 63 6f 6e 25 28 37  |):. beat_icon%(7|
000005a0  2c 31 36 29 0d 01 9a 05  e1 0d 01 a4 05 3a 0d 01  |,16).........:..|
000005b0  ae 16 dd f2 64 65 66 69  6e 65 5f 76 61 72 69 61  |....define_varia|
000005c0  62 6c 65 73 0d 01 b8 4e  61 70 70 5f 73 70 72 69  |bles...Napp_spri|
000005d0  74 65 24 3d 22 21 41 72  6d 6f 6e 79 22 3a 61 70  |te$="!Armony":ap|
000005e0  70 5f 6e 61 6d 65 24 3d  22 21 41 72 6d 6f 6e 79  |p_name$="!Armony|
000005f0  22 3a 61 70 70 5f 70 75  72 70 6f 73 65 24 3d 22  |":app_purpose$="|
00000600  41 20 63 68 6f 72 64 20  73 65 71 75 65 6e 63 65  |A chord sequence|
00000610  72 22 0d 01 c2 23 61 70  70 5f 61 75 74 68 6f 72  |r"...#app_author|
00000620  24 3d 22 a9 20 4d 69 6b  65 20 53 6d 69 74 68 20  |$=". Mike Smith |
00000630  31 39 39 33 22 0d 01 cc  2e 61 70 70 5f 76 65 72  |1993"....app_ver|
00000640  73 69 6f 6e 24 3d 22 56  65 72 73 69 6f 6e 20 31  |sion$="Version 1|
00000650  2e 30 30 2c 20 31 34 74  68 20 4f 63 74 20 31 39  |.00, 14th Oct 19|
00000660  39 33 22 0d 01 d6 31 61  70 70 5f 64 69 72 65 63  |93"...1app_direc|
00000670  74 6f 72 79 24 3d a4 73  79 73 74 65 6d 5f 76 61  |tory$=.system_va|
00000680  72 69 61 62 6c 65 28 22  41 72 6d 6f 6e 79 24 44  |riable("Armony$D|
00000690  69 72 22 29 0d 01 e0 2a  65 72 72 6f 72 63 6f 75  |ir")...*errorcou|
000006a0  6e 74 25 3d 30 3a 6d 65  6e 75 66 69 6c 65 25 3d  |nt%=0:menufile%=|
000006b0  30 3a 69 63 6f 6e 5f 62  61 72 25 3d 2d 32 0d 01  |0:icon_bar%=-2..|
000006c0  ea 46 73 65 6c 65 63 74  5f 63 6c 69 63 6b 25 3d  |.Fselect_click%=|
000006d0  34 3a 6d 65 6e 75 5f 63  6c 69 63 6b 25 3d 32 3a  |4:menu_click%=2:|
000006e0  61 64 6a 75 73 74 5f 63  6c 69 63 6b 25 3d 31 3a  |adjust_click%=1:|
000006f0  73 65 6c 65 63 74 5f 6d  65 6e 75 5f 63 6c 69 63  |select_menu_clic|
00000700  6b 25 3d 36 0d 01 f4 2b  73 65 6c 65 63 74 5f 64  |k%=6...+select_d|
00000710  72 61 67 25 3d 36 34 3a  61 64 6a 75 73 74 5f 64  |rag%=64:adjust_d|
00000720  72 61 67 25 3d 31 36 3a  71 75 69 74 25 3d a3 0d  |rag%=16:quit%=..|
00000730  01 fe 2f 74 65 6d 70 6f  25 3d 33 32 3a 74 72 61  |../tempo%=32:tra|
00000740  6e 73 25 3d 30 3a 63 6f  63 74 25 3d 33 3a 62 6f  |ns%=0:coct%=3:bo|
00000750  63 74 25 3d 32 3a 6b 6f  63 74 25 3d 32 3a 0d 02  |ct%=2:koct%=2:..|
00000760  08 2a 73 65 71 75 65 6e  63 65 73 25 3d 31 3a 72  |.*sequences%=1:r|
00000770  68 79 74 68 6d 73 25 3d  31 3a 73 74 72 75 63 74  |hythms%=1:struct|
00000780  75 72 65 24 3d 22 41 22  0d 02 12 6e 73 74 65 72  |ure$="A"...nster|
00000790  65 6f 25 28 31 29 3d 2d  33 3a 73 74 65 72 65 6f  |eo%(1)=-3:stereo|
000007a0  25 28 32 29 3d 2d 32 3a  73 74 65 72 65 6f 25 28  |%(2)=-2:stereo%(|
000007b0  33 29 3d 2d 31 3a 73 74  65 72 65 6f 25 28 34 29  |3)=-1:stereo%(4)|
000007c0  3d 31 3a 73 74 65 72 65  6f 25 28 35 29 3d 32 3a  |=1:stereo%(5)=2:|
000007d0  73 74 65 72 65 6f 25 28  36 29 3d 33 3a 73 74 65  |stereo%(6)=3:ste|
000007e0  72 65 6f 25 28 37 29 3d  30 3a 73 74 65 72 65 6f  |reo%(7)=0:stereo|
000007f0  25 28 38 29 3d 30 0d 02  1c 2d 70 6c 61 79 5f 72  |%(8)=0...-play_r|
00000800  68 79 74 68 6d 25 3d a3  3a 72 65 70 65 61 74 25  |hythm%=.:repeat%|
00000810  3d a3 3a 65 64 69 74 5f  73 65 71 75 65 6e 63 65  |=.:edit_sequence|
00000820  25 3d 30 0d 02 26 3c 72  6f 6f 74 24 3d 22 43 20  |%=0..&<root$="C |
00000830  44 20 45 46 20 47 20 41  20 42 22 3a 63 68 6f 72  |D EF G A B":chor|
00000840  64 5f 69 6e 70 75 74 24  3d 22 41 42 43 44 45 46  |d_input$="ABCDEF|
00000850  47 23 62 6d 4d 73 2b 2d  31 33 36 37 39 2f 22 0d  |G#bmMs+-13679/".|
00000860  02 30 2e 72 68 79 74 68  6d 5f 69 6e 70 75 74 24  |.0.rhythm_input$|
00000870  3d 22 61 62 63 64 65 66  67 68 69 6a 6b 6c 6d 6e  |="abcdefghijklmn|
00000880  6f 70 71 72 73 74 75 76  77 78 79 7a 22 0d 02 3a  |opqrstuvwxyz"..:|
00000890  44 6c 6f 77 6b 65 79 24  3d 22 7a 73 78 64 63 76  |Dlowkey$="zsxdcv|
000008a0  67 62 68 6e 6a 6d 2c 6c  2e 3b 2f 22 3a 68 69 67  |gbhnjm,l.;/":hig|
000008b0  68 6b 65 79 24 3d 22 61  31 71 32 77 65 34 72 35  |hkey$="a1q2we4r5|
000008c0  74 36 79 75 38 69 39 6f  70 2d 5b 3d 5d a3 5c 66  |t6yu8i9op-[=].\f|
000008d0  22 0d 02 44 1c 63 76 6f  6c 25 3d 31 3a 62 76 6f  |"..D.cvol%=1:bvo|
000008e0  6c 25 3d 32 3a 66 78 76  6f 6c 25 3d 31 0d 02 4e  |l%=2:fxvol%=1..N|
000008f0  1a e3 20 69 25 3d 31 20  b8 20 31 37 3a f3 20 6c  |.. i%=1 . 17:. l|
00000900  6b 63 3f 69 25 3a ed 0d  02 58 3e dc 20 39 38 2c  |kc?i%:...X>. 98,|
00000910  38 32 2c 36 37 2c 35 31  2c 38 33 2c 31 30 30 2c  |82,67,51,83,100,|
00000920  38 34 2c 31 30 31 2c 38  35 2c 38 36 2c 37 30 2c  |84,101,85,86,70,|
00000930  31 30 32 2c 31 30 33 2c  38 37 2c 31 30 34 2c 38  |102,103,87,104,8|
00000940  38 2c 31 30 35 0d 02 62  1a e3 20 69 25 3d 31 20  |8,105..b.. i%=1 |
00000950  b8 20 32 35 3a f3 20 68  6b 63 3f 69 25 3a ed 0d  |. 25:. hkc?i%:..|
00000960  02 6c 51 dc 20 39 37 2c  34 39 2c 31 37 2c 35 30  |.lQ. 97,49,17,50|
00000970  2c 33 34 2c 33 35 2c 31  39 2c 35 32 2c 32 30 2c  |,34,35,19,52,20,|
00000980  33 36 2c 35 33 2c 36 39  2c 35 34 2c 32 32 2c 33  |36,53,69,54,22,3|
00000990  38 2c 33 39 2c 35 35 2c  35 36 2c 32 34 2c 35 37  |8,39,55,56,24,57|
000009a0  2c 39 34 2c 38 39 2c 34  37 2c 31 32 31 2c 36 32  |,94,89,47,121,62|
000009b0  0d 02 76 0b 2a 46 58 31  31 2c 30 0d 02 80 0c d4  |..v.*FX11,0.....|
000009c0  20 ee 3a c8 a0 20 38 0d  02 8a 3f 63 68 6f 72 64  | .:.. 8...?chord|
000009d0  5f 76 6f 69 63 65 25 3d  32 3a e3 20 63 68 25 3d  |_voice%=2:. ch%=|
000009e0  31 20 b8 20 36 3a ff 28  22 43 48 41 4e 4e 45 4c  |1 . 6:.("CHANNEL|
000009f0  56 4f 49 43 45 20 22 2b  c3 28 63 68 25 29 2b 22  |VOICE "+.(ch%)+"|
00000a00  20 32 22 29 3a ed 0d 02  94 22 c8 99 32 36 32 35  | 2"):...."..2625|
00000a10  33 31 2c 30 2c 32 20 b8  20 63 68 6f 72 64 5f 76  |31,0,2 . chord_v|
00000a20  6f 69 63 65 24 2c 46 25  0d 02 9e 23 62 61 73 73  |oice$,F%...#bass|
00000a30  5f 76 6f 69 63 65 25 3d  31 3a 2a 43 48 41 4e 4e  |_voice%=1:*CHANN|
00000a40  45 4c 56 4f 49 43 45 20  37 20 31 0d 02 a8 21 c8  |ELVOICE 7 1...!.|
00000a50  99 32 36 32 35 33 31 2c  30 2c 31 20 b8 20 62 61  |.262531,0,1 . ba|
00000a60  73 73 5f 76 6f 69 63 65  24 2c 46 25 0d 02 b2 27  |ss_voice$,F%...'|
00000a70  6b 65 79 62 6f 61 72 64  5f 76 6f 69 63 65 25 3d  |keyboard_voice%=|
00000a80  33 3a 2a 43 48 41 4e 4e  45 4c 56 4f 49 43 45 20  |3:*CHANNELVOICE |
00000a90  38 20 33 0d 02 bc 25 c8  99 32 36 32 35 33 31 2c  |8 3...%..262531,|
00000aa0  30 2c 33 20 b8 20 6b 65  79 62 6f 61 72 64 5f 76  |0,3 . keyboard_v|
00000ab0  6f 69 63 65 24 2c 46 25  0d 02 c6 50 6f 6b 5f 69  |oice$,F%...Pok_i|
00000ac0  63 6f 6e 25 3d 30 3a 6e  61 6d 65 5f 69 63 6f 6e  |con%=0:name_icon|
00000ad0  25 3d 31 3a 66 69 6c 65  5f 69 63 6f 6e 25 3d 32  |%=1:file_icon%=2|
00000ae0  3a 72 68 79 74 68 6d 5f  6e 61 6d 65 5f 69 63 6f  |:rhythm_name_ico|
00000af0  6e 25 3d 31 3a 72 68 79  74 68 6d 5f 66 69 6c 65  |n%=1:rhythm_file|
00000b00  5f 69 63 6f 6e 25 3d 32  0d 02 d0 3f 42 25 3d 31  |_icon%=2...?B%=1|
00000b10  3a 43 25 3d 31 3a 52 25  3d 30 3a 53 25 3d 31 3a  |:C%=1:R%=0:S%=1:|
00000b20  5a 25 3d 30 3a 6c 61 73  74 5f 72 25 3d 52 25 3a  |Z%=0:last_r%=R%:|
00000b30  6c 61 73 74 5f 62 25 3d  42 25 3a 6c 61 73 74 5f  |last_b%=B%:last_|
00000b40  76 6f 6c 25 3d 31 35 0d  02 da 3a 70 6c 61 79 5f  |vol%=15...:play_|
00000b50  72 68 79 74 68 6d 25 3d  a3 3a 70 6c 61 79 5f 73  |rhythm%=.:play_s|
00000b60  65 71 75 65 6e 63 65 25  3d a3 3a 70 6c 61 79 5f  |equence%=.:play_|
00000b70  73 6f 6e 67 25 3d a3 3a  72 65 70 65 61 74 25 3d  |song%=.:repeat%=|
00000b80  a3 0d 02 e4 05 e1 0d 02  ee 05 3a 0d 02 f8 12 dd  |..........:.....|
00000b90  f2 69 6e 73 74 61 6c 6c  5f 69 63 6f 6e 0d 03 02  |.install_icon...|
00000ba0  3a 69 63 6f 6e 5f 62 61  72 5f 68 61 6e 64 6c 65  |:icon_bar_handle|
00000bb0  25 3d a4 70 75 74 5f 69  63 6f 6e 5f 6f 6e 5f 62  |%=.put_icon_on_b|
00000bc0  61 72 28 61 70 70 5f 73  70 72 69 74 65 24 2c 22  |ar(app_sprite$,"|
00000bd0  52 49 47 48 54 22 29 0d  03 0c 05 e1 0d 03 16 05  |RIGHT").........|
00000be0  3a 0d 03 20 12 dd f2 6c  6f 61 64 5f 73 70 72 69  |:.. ...load_spri|
00000bf0  74 65 73 0d 03 2a 35 73  70 72 69 74 65 73 25 3d  |tes..*5sprites%=|
00000c00  a4 6c 6f 61 64 5f 73 70  72 69 74 65 73 28 61 70  |.load_sprites(ap|
00000c10  70 5f 64 69 72 65 63 74  6f 72 79 24 2b 22 2e 53  |p_directory$+".S|
00000c20  70 72 69 74 65 73 22 29  0d 03 34 05 e1 0d 03 3e  |prites")..4....>|
00000c30  05 3a 0d 03 48 12 dd f2  6c 6f 61 64 5f 77 69 6e  |.:..H...load_win|
00000c40  64 6f 77 73 0d 03 52 4f  73 61 76 65 25 3d a4 6e  |dows..ROsave%=.n|
00000c50  65 77 5f 74 65 6d 70 6c  61 74 65 28 61 70 70 5f  |ew_template(app_|
00000c60  64 69 72 65 63 74 6f 72  79 24 2b 22 2e 54 65 6d  |directory$+".Tem|
00000c70  70 6c 61 74 65 73 22 2c  22 73 61 76 65 25 22 2c  |plates","save%",|
00000c80  77 6f 72 6b 66 72 65 65  25 2c 77 6f 72 6b 65 6e  |workfree%,worken|
00000c90  64 25 29 0d 03 5c 59 73  61 76 65 5f 72 74 68 6d  |d%)..\Ysave_rthm|
00000ca0  25 3d a4 6e 65 77 5f 74  65 6d 70 6c 61 74 65 28  |%=.new_template(|
00000cb0  61 70 70 5f 64 69 72 65  63 74 6f 72 79 24 2b 22  |app_directory$+"|
00000cc0  2e 54 65 6d 70 6c 61 74  65 73 22 2c 22 73 61 76  |.Templates","sav|
00000cd0  65 5f 72 74 68 6d 25 22  2c 77 6f 72 6b 66 72 65  |e_rthm%",workfre|
00000ce0  65 25 2c 77 6f 72 6b 65  6e 64 25 29 0d 03 66 05  |e%,workend%)..f.|
00000cf0  e1 0d 03 70 05 3a 0d 03  7a 14 dd f2 63 72 65 61  |...p.:..z...crea|
00000d00  74 65 5f 77 69 6e 64 6f  77 73 0d 03 84 1d 69 6e  |te_windows....in|
00000d10  66 6f 25 3d a4 63 72 65  61 74 65 5f 69 6e 66 6f  |fo%=.create_info|
00000d20  5f 77 69 6e 64 6f 77 0d  03 8e 1a f2 73 74 65 72  |_window.....ster|
00000d30  65 6f 5f 77 69 6e 64 6f  77 3a f2 73 74 65 72 65  |eo_window:.stere|
00000d40  6f 0d 03 98 05 3a 0d 03  a2 16 f2 63 72 65 61 74  |o....:.....creat|
00000d50  65 5f 73 68 6f 77 5f 76  61 6c 75 65 0d 03 ac 05  |e_show_value....|
00000d60  3a 0d 03 b6 1e f2 75 70  64 61 74 65 5f 77 69 6e  |:.....update_win|
00000d70  64 6f 77 73 28 22 4e 65  77 73 6f 6e 67 22 29 0d  |dows("Newsong").|
00000d80  03 c0 05 e1 0d 03 ca 05  3a 0d 03 d4 1b dd f2 75  |........:......u|
00000d90  70 64 61 74 65 5f 77 69  6e 64 6f 77 73 28 66 69  |pdate_windows(fi|
00000da0  6c 65 24 29 0d 03 de 0b  ea 20 73 25 2c 72 25 0d  |le$)..... s%,r%.|
00000db0  03 e8 30 e3 20 73 25 3d  30 20 b8 20 73 65 71 75  |..0. s%=0 . sequ|
00000dc0  65 6e 63 65 73 25 2d 31  3a f2 73 65 71 75 65 6e  |ences%-1:.sequen|
00000dd0  63 65 5f 77 69 6e 64 6f  77 28 73 25 29 3a ed 0d  |ce_window(s%):..|
00000de0  03 f2 2c e3 20 72 25 3d  30 20 b8 20 72 68 79 74  |..,. r%=0 . rhyt|
00000df0  68 6d 73 25 2d 31 3a f2  72 68 79 74 68 6d 5f 77  |hms%-1:.rhythm_w|
00000e00  69 6e 64 6f 77 28 72 25  29 3a ed 0d 03 fc 1b f2  |indow(r%):......|
00000e10  6b 65 79 62 6f 61 72 64  5f 77 69 6e 64 6f 77 28  |keyboard_window(|
00000e20  66 69 6c 65 24 29 0d 04  06 05 e1 0d 04 10 05 3a  |file$).........:|
00000e30  0d 04 1a 12 dd f2 6f 70  65 6e 5f 77 69 6e 64 6f  |......open_windo|
00000e40  77 73 0d 04 24 0b ea 20  73 25 2c 72 25 0d 04 2e  |ws..$.. s%,r%...|
00000e50  3e e3 20 73 25 3d 30 20  b8 20 73 65 71 75 65 6e  |>. s%=0 . sequen|
00000e60  63 65 73 25 2d 31 3a f2  6f 70 65 6e 5f 77 69 6e  |ces%-1:.open_win|
00000e70  64 6f 77 28 73 65 71 75  65 6e 63 65 5f 77 69 6e  |dow(sequence_win|
00000e80  64 6f 77 25 28 73 25 29  29 3a ed 0d 04 38 3a e3  |dow%(s%)):...8:.|
00000e90  20 72 25 3d 30 20 b8 20  72 68 79 74 68 6d 73 25  | r%=0 . rhythms%|
00000ea0  2d 31 3a f2 6f 70 65 6e  5f 77 69 6e 64 6f 77 28  |-1:.open_window(|
00000eb0  72 68 79 74 68 6d 5f 77  69 6e 64 6f 77 25 28 72  |rhythm_window%(r|
00000ec0  25 29 29 3a ed 0d 04 42  05 e1 0d 04 4c 05 3a 0d  |%)):...B....L.:.|
00000ed0  04 56 14 dd f2 64 65 6c  65 74 65 5f 77 69 6e 64  |.V...delete_wind|
00000ee0  6f 77 73 0d 04 60 0b ea  20 73 25 2c 72 25 0d 04  |ows..`.. s%,r%..|
00000ef0  6a 24 f2 64 65 6c 65 74  65 5f 77 69 6e 64 6f 77  |j$.delete_window|
00000f00  28 6b 65 79 62 6f 61 72  64 5f 77 69 6e 64 6f 77  |(keyboard_window|
00000f10  25 29 0d 04 74 40 e3 20  73 25 3d 30 20 b8 20 73  |%)..t@. s%=0 . s|
00000f20  65 71 75 65 6e 63 65 73  25 2d 31 3a f2 64 65 6c  |equences%-1:.del|
00000f30  65 74 65 5f 77 69 6e 64  6f 77 28 73 65 71 75 65  |ete_window(seque|
00000f40  6e 63 65 5f 77 69 6e 64  6f 77 25 28 73 25 29 29  |nce_window%(s%))|
00000f50  3a ed 0d 04 7e 3c e3 20  72 25 3d 30 20 b8 20 72  |:...~<. r%=0 . r|
00000f60  68 79 74 68 6d 73 25 2d  31 3a f2 64 65 6c 65 74  |hythms%-1:.delet|
00000f70  65 5f 77 69 6e 64 6f 77  28 72 68 79 74 68 6d 5f  |e_window(rhythm_|
00000f80  77 69 6e 64 6f 77 25 28  72 25 29 29 3a ed 0d 04  |window%(r%)):...|
00000f90  88 05 e1 0d 04 92 05 3a  0d 04 9c 1d dd f2 6b 65  |.......:......ke|
00000fa0  79 62 6f 61 72 64 5f 77  69 6e 64 6f 77 28 74 69  |yboard_window(ti|
00000fb0  74 6c 65 24 29 0d 04 a6  39 ea 20 69 63 6f 6e 25  |tle$)...9. icon%|
00000fc0  2c 66 25 2c 77 25 2c 68  25 2c 76 77 25 2c 76 68  |,f%,w%,h%,vw%,vh|
00000fd0  25 2c 70 78 25 2c 70 79  25 2c 6e 6f 74 65 24 2c  |%,px%,py%,note$,|
00000fe0  6b 25 2c 6d 69 6e 78 25  2c 6d 61 78 78 25 0d 04  |k%,minx%,maxx%..|
00000ff0  b0 28 66 25 3d 25 31 30  30 30 30 31 31 31 30 30  |.(f%=%1000011100|
00001000  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  |0000000000000000|
00001010  30 31 30 30 31 30 0d 04  ba 2d 77 25 3d 31 32 38  |010010...-w%=128|
00001020  30 3a 68 25 3d 34 33 32  3a 76 77 25 3d 77 25 3a  |0:h%=432:vw%=w%:|
00001030  76 68 25 3d 68 25 3a 70  78 25 3d 30 3a 70 79 25  |vh%=h%:px%=0:py%|
00001040  3d 35 34 0d 04 c4 44 6b  65 79 62 6f 61 72 64 5f  |=54...Dkeyboard_|
00001050  77 69 6e 64 6f 77 25 3d  a4 63 72 65 61 74 65 5f  |window%=.create_|
00001060  77 69 6e 64 6f 77 28 74  69 74 6c 65 24 2c 66 25  |window(title$,f%|
00001070  2c 77 25 2c 68 25 2c 70  78 25 2c 76 77 25 2c 70  |,w%,h%,px%,vw%,p|
00001080  79 25 2c 76 68 25 29 0d  04 ce 3d 69 63 6f 6e 25  |y%,vh%)...=icon%|
00001090  3d a4 61 64 64 5f 69 63  6f 6e 5f 62 6c 6f 63 6b  |=.add_icon_block|
000010a0  28 6b 65 79 62 6f 61 72  64 5f 77 69 6e 64 6f 77  |(keyboard_window|
000010b0  25 2c 31 36 2c 2d 34 30  38 2c 37 35 32 2c 2d 32  |%,16,-408,752,-2|
000010c0  34 2c 31 29 0d 04 d8 28  f2 62 6f 72 64 65 72 5f  |4,1)...(.border_|
000010d0  69 63 6f 6e 28 6b 65 79  62 6f 61 72 64 5f 77 69  |icon(keyboard_wi|
000010e0  6e 64 6f 77 25 2c 69 63  6f 6e 25 29 0d 04 e2 25  |ndow%,icon%)...%|
000010f0  6e 6f 74 65 24 3d 22 31  20 32 20 20 20 34 20 35  |note$="1 2   4 5|
00001100  20 36 20 20 20 38 20 39  20 20 20 2d 20 3d 20 a3  | 6   8 9   - = .|
00001110  22 0d 04 ec 41 69 63 6f  6e 25 3d a4 61 64 64 5f  |"...Aicon%=.add_|
00001120  69 63 6f 6e 28 22 6c 61  62 65 6c 22 2c 6e 6f 74  |icon("label",not|
00001130  65 24 2c 6b 65 79 62 6f  61 72 64 5f 77 69 6e 64  |e$,keyboard_wind|
00001140  6f 77 25 2c 32 37 32 2c  2d 32 34 2c 30 2c 30 2c  |ow%,272,-24,0,0,|
00001150  30 29 0d 04 f6 1d 6e 6f  74 65 24 3d 22 73 20 64  |0)....note$="s d|
00001160  20 20 20 67 20 68 20 6a  20 20 20 6c 20 3b 22 0d  |   g h j   l ;".|
00001170  05 00 40 69 63 6f 6e 25  3d a4 61 64 64 5f 69 63  |..@icon%=.add_ic|
00001180  6f 6e 28 22 6c 61 62 65  6c 22 2c 6e 6f 74 65 24  |on("label",note$|
00001190  2c 6b 65 79 62 6f 61 72  64 5f 77 69 6e 64 6f 77  |,keyboard_window|
000011a0  25 2c 34 38 2c 2d 37 32  2c 30 2c 30 2c 30 29 0d  |%,48,-72,0,0,0).|
000011b0  05 0a 37 6e 6f 74 65 24  3d 22 43 20 44 20 45 20  |..7note$="C D E |
000011c0  46 20 47 20 41 20 42 20  43 20 44 20 45 20 46 20  |F G A B C D E F |
000011d0  47 20 41 20 42 20 43 20  44 20 45 20 46 20 47 20  |G A B C D E F G |
000011e0  41 20 42 20 43 22 0d 05  14 41 69 63 6f 6e 25 3d  |A B C"...Aicon%=|
000011f0  a4 61 64 64 5f 69 63 6f  6e 28 22 6c 61 62 65 6c  |.add_icon("label|
00001200  22 2c 6e 6f 74 65 24 2c  6b 65 79 62 6f 61 72 64  |",note$,keyboard|
00001210  5f 77 69 6e 64 6f 77 25  2c 33 32 2c 2d 32 36 34  |_window%,32,-264|
00001220  2c 30 2c 30 2c 30 29 0d  05 1e 29 6e 6f 74 65 24  |,0,0,0)...)note$|
00001230  3d 22 54 20 71 20 77 20  65 20 72 20 74 20 79 20  |="T q w e r t y |
00001240  75 20 69 20 6f 20 70 20  5b 20 5d 20 5c 20 49 22  |u i o p [ ] \ I"|
00001250  0d 05 28 42 69 63 6f 6e  25 3d a4 61 64 64 5f 69  |..(Bicon%=.add_i|
00001260  63 6f 6e 28 22 6c 61 62  65 6c 22 2c 6e 6f 74 65  |con("label",note|
00001270  24 2c 6b 65 79 62 6f 61  72 64 5f 77 69 6e 64 6f  |$,keyboard_windo|
00001280  77 25 2c 32 35 36 2c 2d  33 31 32 2c 30 2c 30 2c  |w%,256,-312,0,0,|
00001290  30 29 0d 05 32 1f 6e 6f  74 65 24 3d 22 7a 20 78  |0)..2.note$="z x|
000012a0  20 63 20 76 20 62 20 6e  20 6d 20 2c 20 2e 20 2f  | c v b n m , . /|
000012b0  22 0d 05 3c 41 69 63 6f  6e 25 3d a4 61 64 64 5f  |"..<Aicon%=.add_|
000012c0  69 63 6f 6e 28 22 6c 61  62 65 6c 22 2c 6e 6f 74  |icon("label",not|
000012d0  65 24 2c 6b 65 79 62 6f  61 72 64 5f 77 69 6e 64  |e$,keyboard_wind|
000012e0  6f 77 25 2c 33 32 2c 2d  33 36 30 2c 30 2c 30 2c  |ow%,32,-360,0,0,|
000012f0  30 29 0d 05 46 0f e3 20  6b 25 3d 31 20 b8 20 32  |0)..F.. k%=1 . 2|
00001300  32 0d 05 50 21 20 6d 69  6e 78 25 3d 33 32 2a 6b  |2..P! minx%=32*k|
00001310  25 2b 34 3a 6d 61 78 78  25 3d 6d 69 6e 78 25 2b  |%+4:maxx%=minx%+|
00001320  32 34 0d 05 5a 44 20 69  63 6f 6e 25 3d a4 61 64  |24..ZD icon%=.ad|
00001330  64 5f 69 63 6f 6e 5f 62  6c 6f 63 6b 28 6b 65 79  |d_icon_block(key|
00001340  62 6f 61 72 64 5f 77 69  6e 64 6f 77 25 2c 6d 69  |board_window%,mi|
00001350  6e 78 25 2c 2d 32 36 30  2c 6d 61 78 78 25 2c 2d  |nx%,-260,maxx%,-|
00001360  31 32 34 2c 30 29 0d 05  64 29 20 f2 62 6f 72 64  |124,0)..d) .bord|
00001370  65 72 5f 69 63 6f 6e 28  6b 65 79 62 6f 61 72 64  |er_icon(keyboard|
00001380  5f 77 69 6e 64 6f 77 25  2c 69 63 6f 6e 25 29 0d  |_window%,icon%).|
00001390  05 6e 06 20 ed 0d 05 78  0f e3 20 6b 25 3d 31 20  |.n. ...x.. k%=1 |
000013a0  b8 20 32 30 0d 05 82 22  20 6d 69 6e 78 25 3d 33  |. 20..." minx%=3|
000013b0  32 2a 6b 25 2b 32 30 3a  6d 61 78 78 25 3d 6d 69  |2*k%+20:maxx%=mi|
000013c0  6e 78 25 2b 32 34 0d 05  8c 31 20 e7 20 6b 25 3c  |nx%+24...1 . k%<|
000013d0  3e 33 20 80 20 6b 25 3c  3e 37 20 80 20 6b 25 3c  |>3 . k%<>7 . k%<|
000013e0  3e 31 30 20 80 20 6b 25  3c 3e 31 34 20 80 20 6b  |>10 . k%<>14 . k|
000013f0  25 3c 3e 31 37 20 8c 0d  05 96 45 20 20 69 63 6f  |%<>17 ....E  ico|
00001400  6e 25 3d a4 61 64 64 5f  69 63 6f 6e 5f 62 6c 6f  |n%=.add_icon_blo|
00001410  63 6b 28 6b 65 79 62 6f  61 72 64 5f 77 69 6e 64  |ck(keyboard_wind|
00001420  6f 77 25 2c 6d 69 6e 78  25 2c 2d 32 30 32 2c 6d  |ow%,minx%,-202,m|
00001430  61 78 78 25 2c 2d 31 32  34 2c 37 29 0d 05 a0 2a  |axx%,-124,7)...*|
00001440  20 20 f2 62 6f 72 64 65  72 5f 69 63 6f 6e 28 6b  |  .border_icon(k|
00001450  65 79 62 6f 61 72 64 5f  77 69 6e 64 6f 77 25 2c  |eyboard_window%,|
00001460  69 63 6f 6e 25 29 0d 05  aa 06 20 cd 0d 05 b4 06  |icon%).... .....|
00001470  20 ed 0d 05 be 05 3a 0d  05 c8 43 69 63 6f 6e 25  | .....:...Cicon%|
00001480  3d a4 61 64 64 5f 69 63  6f 6e 28 22 6c 61 62 65  |=.add_icon("labe|
00001490  6c 22 2c 22 54 65 6d 70  6f 22 2c 6b 65 79 62 6f  |l","Tempo",keybo|
000014a0  61 72 64 5f 77 69 6e 64  6f 77 25 2c 37 39 30 2c  |ard_window%,790,|
000014b0  2d 32 34 2c 30 2c 30 2c  30 29 0d 05 d2 44 69 63  |-24,0,0,0)...Dic|
000014c0  6f 6e 25 3d a4 61 64 64  5f 69 63 6f 6e 28 22 6c  |on%=.add_icon("l|
000014d0  61 62 65 6c 22 2c 22 4b  65 79 62 64 22 2c 6b 65  |abel","Keybd",ke|
000014e0  79 62 6f 61 72 64 5f 77  69 6e 64 6f 77 25 2c 37  |yboard_window%,7|
000014f0  39 30 2c 2d 31 32 30 2c  30 2c 30 2c 30 29 0d 05  |90,-120,0,0,0)..|
00001500  dc 44 69 63 6f 6e 25 3d  a4 61 64 64 5f 69 63 6f  |.Dicon%=.add_ico|
00001510  6e 28 22 6c 61 62 65 6c  22 2c 22 53 75 73 74 6e  |n("label","Sustn|
00001520  22 2c 6b 65 79 62 6f 61  72 64 5f 77 69 6e 64 6f  |",keyboard_windo|
00001530  77 25 2c 37 39 30 2c 2d  32 31 36 2c 30 2c 30 2c  |w%,790,-216,0,0,|
00001540  30 29 0d 05 e6 47 6f 6e  5f 69 63 6f 6e 25 3d a4  |0)...Gon_icon%=.|
00001550  61 64 64 5f 69 63 6f 6e  28 22 77 72 69 74 65 22  |add_icon("write"|
00001560  2c 22 20 4f 46 46 20 22  2c 6b 65 79 62 6f 61 72  |," OFF ",keyboar|
00001570  64 5f 77 69 6e 64 6f 77  25 2c 37 39 30 2c 2d 31  |d_window%,790,-1|
00001580  36 38 2c 31 2c 30 2c 31  29 0d 05 f0 33 f2 69 63  |68,1,0,1)...3.ic|
00001590  6f 6e 5f 76 61 6c 69 64  61 74 69 6f 6e 28 6b 65  |on_validation(ke|
000015a0  79 62 6f 61 72 64 5f 77  69 6e 64 6f 77 25 2c 6f  |yboard_window%,o|
000015b0  6e 5f 69 63 6f 6e 25 2c  22 4b 22 29 0d 05 fa 30  |n_icon%,"K")...0|
000015c0  f2 69 63 6f 6e 5f 62 67  5f 63 6f 6c 6f 75 72 28  |.icon_bg_colour(|
000015d0  6b 65 79 62 6f 61 72 64  5f 77 69 6e 64 6f 77 25  |keyboard_window%|
000015e0  2c 6f 6e 5f 69 63 6f 6e  25 2c 31 29 0d 06 04 0e  |,on_icon%,1)....|
000015f0  73 75 73 74 61 69 6e 25  3d 30 0d 06 0e 4d 73 75  |sustain%=0...Msu|
00001600  73 74 61 69 6e 5f 69 63  6f 6e 25 3d a4 61 64 64  |stain_icon%=.add|
00001610  5f 69 63 6f 6e 28 22 72  65 70 6f 72 74 22 2c 22  |_icon("report","|
00001620  20 4f 46 46 20 22 2c 6b  65 79 62 6f 61 72 64 5f  | OFF ",keyboard_|
00001630  77 69 6e 64 6f 77 25 2c  37 39 30 2c 2d 32 36 34  |window%,790,-264|
00001640  2c 35 2c 30 2c 31 29 0d  06 18 44 69 63 6f 6e 25  |,5,0,1)...Dicon%|
00001650  3d a4 61 64 64 5f 69 63  6f 6e 28 22 6c 61 62 65  |=.add_icon("labe|
00001660  6c 22 2c 22 54 72 61 6e  73 22 2c 6b 65 79 62 6f  |l","Trans",keybo|
00001670  61 72 64 5f 77 69 6e 64  6f 77 25 2c 37 39 30 2c  |ard_window%,790,|
00001680  2d 33 31 32 2c 30 2c 30  2c 30 29 0d 06 22 4f 69  |-312,0,0,0).."Oi|
00001690  63 6f 6e 25 3d a4 61 64  64 5f 69 63 6f 6e 28 22  |con%=.add_icon("|
000016a0  6c 61 62 65 6c 22 2c 22  20 20 53 74 72 75 63 74  |label","  Struct|
000016b0  75 72 65 2f 50 61 75 73  65 22 2c 6b 65 79 62 6f  |ure/Pause",keybo|
000016c0  61 72 64 5f 77 69 6e 64  6f 77 25 2c 39 32 38 2c  |ard_window%,928,|
000016d0  2d 32 34 2c 30 2c 30 2c  30 29 0d 06 2c 51 69 63  |-24,0,0,0)..,Qic|
000016e0  6f 6e 25 3d a4 61 64 64  5f 69 63 6f 6e 28 22 6c  |on%=.add_icon("l|
000016f0  61 62 65 6c 22 2c 22 20  43 68 6f 72 64 73 20 69  |abel"," Chords i|
00001700  6e 73 74 72 75 6d 65 6e  74 22 2c 6b 65 79 62 6f  |nstrument",keybo|
00001710  61 72 64 5f 77 69 6e 64  6f 77 25 2c 39 32 38 2c  |ard_window%,928,|
00001720  2d 31 32 30 2c 30 2c 30  2c 30 29 0d 06 36 50 69  |-120,0,0,0)..6Pi|
00001730  63 6f 6e 25 3d a4 61 64  64 5f 69 63 6f 6e 28 22  |con%=.add_icon("|
00001740  6c 61 62 65 6c 22 2c 22  20 20 42 61 73 73 20 69  |label","  Bass i|
00001750  6e 73 74 72 75 6d 65 6e  74 22 2c 6b 65 79 62 6f  |nstrument",keybo|
00001760  61 72 64 5f 77 69 6e 64  6f 77 25 2c 39 32 38 2c  |ard_window%,928,|
00001770  2d 32 31 36 2c 30 2c 30  2c 30 29 0d 06 40 52 69  |-216,0,0,0)..@Ri|
00001780  63 6f 6e 25 3d a4 61 64  64 5f 69 63 6f 6e 28 22  |con%=.add_icon("|
00001790  6c 61 62 65 6c 22 2c 22  4b 65 79 62 6f 61 72 64  |label","Keyboard|
000017a0  20 69 6e 73 74 72 75 6d  65 6e 74 22 2c 6b 65 79  | instrument",key|
000017b0  62 6f 61 72 64 5f 77 69  6e 64 6f 77 25 2c 39 32  |board_window%,92|
000017c0  38 2c 2d 33 31 32 2c 30  2c 30 2c 30 29 0d 06 4a  |8,-312,0,0,0)..J|
000017d0  4a 74 65 6d 70 6f 5f 69  63 6f 6e 25 3d a4 61 64  |Jtempo_icon%=.ad|
000017e0  64 5f 69 63 6f 6e 28 22  72 65 70 6f 72 74 22 2c  |d_icon("report",|
000017f0  22 20 20 20 20 20 22 2c  6b 65 79 62 6f 61 72 64  |"     ",keyboard|
00001800  5f 77 69 6e 64 6f 77 25  2c 37 39 30 2c 2d 37 32  |_window%,790,-72|
00001810  2c 35 2c 30 2c 31 29 0d  06 54 55 6c 65 66 74 5f  |,5,0,1)..TUleft_|
00001820  74 65 6d 70 6f 5f 69 63  6f 6e 25 3d a4 61 64 64  |tempo_icon%=.add|
00001830  5f 69 63 6f 6e 28 22 73  70 72 69 74 65 22 2c 22  |_icon("sprite","|
00001840  6c 65 66 74 22 2c 6b 65  79 62 6f 61 72 64 5f 77  |left",keyboard_w|
00001850  69 6e 64 6f 77 25 2c 37  39 34 2c 2d 37 36 2c 30  |indow%,794,-76,0|
00001860  2c 73 70 72 69 74 65 73  25 2c 30 29 0d 06 5e 57  |,sprites%,0)..^W|
00001870  72 69 67 68 74 5f 74 65  6d 70 6f 5f 69 63 6f 6e  |right_tempo_icon|
00001880  25 3d a4 61 64 64 5f 69  63 6f 6e 28 22 73 70 72  |%=.add_icon("spr|
00001890  69 74 65 22 2c 22 72 69  67 68 74 22 2c 6b 65 79  |ite","right",key|
000018a0  62 6f 61 72 64 5f 77 69  6e 64 6f 77 25 2c 38 36  |board_window%,86|
000018b0  36 2c 2d 37 36 2c 30 2c  73 70 72 69 74 65 73 25  |6,-76,0,sprites%|
000018c0  2c 30 29 0d 06 68 4b 74  72 61 6e 73 5f 69 63 6f  |,0)..hKtrans_ico|
000018d0  6e 25 3d a4 61 64 64 5f  69 63 6f 6e 28 22 72 65  |n%=.add_icon("re|
000018e0  70 6f 72 74 22 2c 22 20  20 20 20 20 22 2c 6b 65  |port","     ",ke|
000018f0  79 62 6f 61 72 64 5f 77  69 6e 64 6f 77 25 2c 37  |yboard_window%,7|
00001900  39 30 2c 2d 33 36 30 2c  35 2c 30 2c 31 29 0d 06  |90,-360,5,0,1)..|
00001910  72 56 6c 65 66 74 5f 74  72 61 6e 73 5f 69 63 6f  |rVleft_trans_ico|
00001920  6e 25 3d a4 61 64 64 5f  69 63 6f 6e 28 22 73 70  |n%=.add_icon("sp|
00001930  72 69 74 65 22 2c 22 6c  65 66 74 22 2c 6b 65 79  |rite","left",key|
00001940  62 6f 61 72 64 5f 77 69  6e 64 6f 77 25 2c 37 39  |board_window%,79|
00001950  34 2c 2d 33 36 34 2c 30  2c 73 70 72 69 74 65 73  |4,-364,0,sprites|
00001960  25 2c 30 29 0d 06 7c 58  72 69 67 68 74 5f 74 72  |%,0)..|Xright_tr|
00001970  61 6e 73 5f 69 63 6f 6e  25 3d a4 61 64 64 5f 69  |ans_icon%=.add_i|
00001980  63 6f 6e 28 22 73 70 72  69 74 65 22 2c 22 72 69  |con("sprite","ri|
00001990  67 68 74 22 2c 6b 65 79  62 6f 61 72 64 5f 77 69  |ght",keyboard_wi|
000019a0  6e 64 6f 77 25 2c 38 36  36 2c 2d 33 36 34 2c 30  |ndow%,866,-364,0|
000019b0  2c 73 70 72 69 74 65 73  25 2c 30 29 0d 06 86 5d  |,sprites%,0)...]|
000019c0  73 74 72 75 63 74 75 72  65 5f 69 63 6f 6e 25 3d  |structure_icon%=|
000019d0  a4 61 64 64 5f 69 63 6f  6e 28 22 72 65 70 6f 72  |.add_icon("repor|
000019e0  74 22 2c 22 20 20 20 20  20 20 20 20 20 20 20 20  |t","            |
000019f0  20 20 20 20 20 20 20 22  2c 6b 65 79 62 6f 61 72  |       ",keyboar|
00001a00  64 5f 77 69 6e 64 6f 77  25 2c 39 32 38 2c 2d 37  |d_window%,928,-7|
00001a10  32 2c 31 39 2c 30 2c 31  29 0d 06 90 38 f2 69 63  |2,19,0,1)...8.ic|
00001a20  6f 6e 5f 62 67 5f 63 6f  6c 6f 75 72 28 6b 65 79  |on_bg_colour(key|
00001a30  62 6f 61 72 64 5f 77 69  6e 64 6f 77 25 2c 73 74  |board_window%,st|
00001a40  72 75 63 74 75 72 65 5f  69 63 6f 6e 25 2c 31 31  |ructure_icon%,11|
00001a50  29 0d 06 9a 5e 63 68 6f  72 64 5f 69 6e 73 5f 69  |)...^chord_ins_i|
00001a60  63 6f 6e 25 3d a4 61 64  64 5f 69 63 6f 6e 28 22  |con%=.add_icon("|
00001a70  72 65 70 6f 72 74 22 2c  22 20 20 20 20 20 20 20  |report","       |
00001a80  20 20 20 20 20 20 20 20  20 20 20 20 22 2c 6b 65  |            ",ke|
00001a90  79 62 6f 61 72 64 5f 77  69 6e 64 6f 77 25 2c 39  |yboard_window%,9|
00001aa0  32 38 2c 2d 31 36 38 2c  31 39 2c 30 2c 31 29 0d  |28,-168,19,0,1).|
00001ab0  06 a4 5d 62 61 73 73 5f  69 6e 73 5f 69 63 6f 6e  |..]bass_ins_icon|
00001ac0  25 3d a4 61 64 64 5f 69  63 6f 6e 28 22 72 65 70  |%=.add_icon("rep|
00001ad0  6f 72 74 22 2c 22 20 20  20 20 20 20 20 20 20 20  |ort","          |
00001ae0  20 20 20 20 20 20 20 20  20 22 2c 6b 65 79 62 6f  |         ",keybo|
00001af0  61 72 64 5f 77 69 6e 64  6f 77 25 2c 39 32 38 2c  |ard_window%,928,|
00001b00  2d 32 36 34 2c 31 39 2c  30 2c 31 29 0d 06 ae 61  |-264,19,0,1)...a|
00001b10  6b 65 79 62 6f 61 72 64  5f 69 6e 73 5f 69 63 6f  |keyboard_ins_ico|
00001b20  6e 25 3d a4 61 64 64 5f  69 63 6f 6e 28 22 72 65  |n%=.add_icon("re|
00001b30  70 6f 72 74 22 2c 22 20  20 20 20 20 20 20 20 20  |port","         |
00001b40  20 20 20 20 20 20 20 20  20 20 22 2c 6b 65 79 62  |          ",keyb|
00001b50  6f 61 72 64 5f 77 69 6e  64 6f 77 25 2c 39 32 38  |oard_window%,928|
00001b60  2c 2d 33 36 30 2c 31 39  2c 30 2c 31 29 0d 06 b8  |,-360,19,0,1)...|
00001b70  3a f2 70 75 74 5f 69 63  6f 6e 5f 74 65 78 74 28  |:.put_icon_text(|
00001b80  6b 65 79 62 6f 61 72 64  5f 77 69 6e 64 6f 77 25  |keyboard_window%|
00001b90  2c 74 65 6d 70 6f 5f 69  63 6f 6e 25 2c c3 28 74  |,tempo_icon%,.(t|
00001ba0  65 6d 70 6f 25 29 29 0d  06 c2 3a f2 70 75 74 5f  |empo%))...:.put_|
00001bb0  69 63 6f 6e 5f 74 65 78  74 28 6b 65 79 62 6f 61  |icon_text(keyboa|
00001bc0  72 64 5f 77 69 6e 64 6f  77 25 2c 74 72 61 6e 73  |rd_window%,trans|
00001bd0  5f 69 63 6f 6e 25 2c c3  28 74 72 61 6e 73 25 29  |_icon%,.(trans%)|
00001be0  29 0d 06 cc 12 43 25 3d  31 3a 53 25 3d 31 3a 5a  |)....C%=1:S%=1:Z|
00001bf0  25 3d 30 0d 06 d6 56 73  74 72 75 63 74 75 72 65  |%=0...Vstructure|
00001c00  5f 70 6f 73 24 3d c0 73  74 72 75 63 74 75 72 65  |_pos$=.structure|
00001c10  24 2c 53 25 2d 31 29 2b  22 28 22 2b c1 73 74 72  |$,S%-1)+"("+.str|
00001c20  75 63 74 75 72 65 24 2c  53 25 2c 31 29 2b 22 29  |ucture$,S%,1)+")|
00001c30  22 2b c1 73 74 72 75 63  74 75 72 65 24 2c 53 25  |"+.structure$,S%|
00001c40  2b 31 2c 31 39 2d 53 25  29 0d 06 e0 43 f2 70 75  |+1,19-S%)...C.pu|
00001c50  74 5f 69 63 6f 6e 5f 74  65 78 74 28 6b 65 79 62  |t_icon_text(keyb|
00001c60  6f 61 72 64 5f 77 69 6e  64 6f 77 25 2c 73 74 72  |oard_window%,str|
00001c70  75 63 74 75 72 65 5f 69  63 6f 6e 25 2c 73 74 72  |ucture_icon%,str|
00001c80  75 63 74 75 72 65 5f 70  6f 73 24 29 0d 06 ea 41  |ucture_pos$)...A|
00001c90  f2 70 75 74 5f 69 63 6f  6e 5f 74 65 78 74 28 6b  |.put_icon_text(k|
00001ca0  65 79 62 6f 61 72 64 5f  77 69 6e 64 6f 77 25 2c  |eyboard_window%,|
00001cb0  63 68 6f 72 64 5f 69 6e  73 5f 69 63 6f 6e 25 2c  |chord_ins_icon%,|
00001cc0  63 68 6f 72 64 5f 76 6f  69 63 65 24 29 0d 06 f4  |chord_voice$)...|
00001cd0  3f f2 70 75 74 5f 69 63  6f 6e 5f 74 65 78 74 28  |?.put_icon_text(|
00001ce0  6b 65 79 62 6f 61 72 64  5f 77 69 6e 64 6f 77 25  |keyboard_window%|
00001cf0  2c 62 61 73 73 5f 69 6e  73 5f 69 63 6f 6e 25 2c  |,bass_ins_icon%,|
00001d00  62 61 73 73 5f 76 6f 69  63 65 24 29 0d 06 fe 47  |bass_voice$)...G|
00001d10  f2 70 75 74 5f 69 63 6f  6e 5f 74 65 78 74 28 6b  |.put_icon_text(k|
00001d20  65 79 62 6f 61 72 64 5f  77 69 6e 64 6f 77 25 2c  |eyboard_window%,|
00001d30  6b 65 79 62 6f 61 72 64  5f 69 6e 73 5f 69 63 6f  |keyboard_ins_ico|
00001d40  6e 25 2c 6b 65 79 62 6f  61 72 64 5f 76 6f 69 63  |n%,keyboard_voic|
00001d50  65 24 29 0d 07 08 05 e1  0d 07 12 05 3a 0d 07 1c  |e$).........:...|
00001d60  19 dd f2 73 65 71 75 65  6e 63 65 5f 77 69 6e 64  |...sequence_wind|
00001d70  6f 77 28 73 25 29 0d 07  26 23 ea 20 74 69 74 6c  |ow(s%)..&#. titl|
00001d80  65 24 2c 70 78 25 2c 70  79 25 2c 74 79 70 65 24  |e$,px%,py%,type$|
00001d90  2c 63 25 2c 78 25 2c 79  25 0d 07 30 29 73 66 25  |,c%,x%,y%..0)sf%|
00001da0  3d 25 31 30 30 30 30 31  31 31 30 30 30 30 30 30  |=%10000111000000|
00001db0  30 30 30 30 30 30 30 30  30 30 30 30 30 31 30 30  |0000000000000100|
00001dc0  31 30 0d 07 3a 3d 73 77  25 3d 35 31 32 3a 73 68  |10..:=sw%=512:sh|
00001dd0  25 3d 34 34 38 3a 73 76  77 25 3d 35 31 32 3a 73  |%=448:svw%=512:s|
00001de0  76 68 25 3d 34 34 38 3a  70 78 25 3d 73 25 2a 34  |vh%=448:px%=s%*4|
00001df0  38 3a 70 79 25 3d 35 33  32 2d 73 25 2a 34 38 0d  |8:py%=532-s%*48.|
00001e00  07 44 33 74 69 74 6c 65  24 3d 22 43 68 6f 72 64  |.D3title$="Chord|
00001e10  20 53 65 71 75 65 6e 63  65 20 22 2b bd 28 73 25  | Sequence "+.(s%|
00001e20  2b 36 35 29 3a 74 79 70  65 24 3d 22 77 72 69 74  |+65):type$="writ|
00001e30  65 22 0d 07 4e 4d 73 65  71 75 65 6e 63 65 5f 77  |e"..NMsequence_w|
00001e40  69 6e 64 6f 77 25 28 73  25 29 3d a4 63 72 65 61  |indow%(s%)=.crea|
00001e50  74 65 5f 77 69 6e 64 6f  77 28 74 69 74 6c 65 24  |te_window(title$|
00001e60  2c 73 66 25 2c 73 77 25  2c 73 68 25 2c 70 78 25  |,sf%,sw%,sh%,px%|
00001e70  2c 73 76 77 25 2c 70 79  25 2c 73 76 68 25 29 0d  |,svw%,py%,svh%).|
00001e80  07 58 20 77 69 6e 64 6f  77 25 3d 73 65 71 75 65  |.X window%=seque|
00001e90  6e 63 65 5f 77 69 6e 64  6f 77 25 28 73 25 29 0d  |nce_window%(s%).|
00001ea0  07 62 2d e3 20 63 25 3d  31 20 b8 20 73 65 71 75  |.b-. c%=1 . sequ|
00001eb0  6c 65 6e 25 28 73 25 29  2d 31 2a 28 73 65 71 75  |len%(s%)-1*(sequ|
00001ec0  6c 65 6e 25 28 73 25 29  3c 33 32 29 0d 07 6c 31  |len%(s%)<32)..l1|
00001ed0  20 74 65 78 74 24 3d 63  68 6f 72 64 24 28 73 25  | text$=chord$(s%|
00001ee0  2c 63 25 29 2b c4 34 2d  a9 28 63 68 6f 72 64 24  |,c%)+.4-.(chord$|
00001ef0  28 73 25 2c 63 25 29 29  2c 22 20 22 29 0d 07 76  |(s%,c%))," ")..v|
00001f00  2c 20 78 25 3d 28 28 63  25 2d 31 29 83 34 29 2a  |, x%=((c%-1).4)*|
00001f10  31 32 38 2b 34 3a 79 25  3d 2d 28 28 63 25 2d 31  |128+4:y%=-((c%-1|
00001f20  29 81 34 29 2a 35 36 2d  34 0d 07 80 42 20 63 68  |).4)*56-4...B ch|
00001f30  6f 72 64 5f 69 63 6f 6e  25 28 73 25 2c 63 25 29  |ord_icon%(s%,c%)|
00001f40  3d a4 61 64 64 5f 69 63  6f 6e 28 74 79 70 65 24  |=.add_icon(type$|
00001f50  2c 74 65 78 74 24 2c 77  69 6e 64 6f 77 25 2c 78  |,text$,window%,x|
00001f60  25 2c 79 25 2c 34 2c 30  2c 31 29 0d 07 8a 3e 20  |%,y%,4,0,1)...> |
00001f70  f2 69 63 6f 6e 5f 76 61  6c 69 64 61 74 69 6f 6e  |.icon_validation|
00001f80  28 77 69 6e 64 6f 77 25  2c 63 68 6f 72 64 5f 69  |(window%,chord_i|
00001f90  63 6f 6e 25 28 73 25 2c  63 25 29 2c 63 68 6f 72  |con%(s%,c%),chor|
00001fa0  64 5f 69 6e 70 75 74 24  29 0d 07 94 41 20 e7 20  |d_input$)...A . |
00001fb0  74 65 78 74 24 3d 22 20  20 20 20 22 20 f2 70 75  |text$="    " .pu|
00001fc0  74 5f 69 63 6f 6e 5f 74  65 78 74 28 77 69 6e 64  |t_icon_text(wind|
00001fd0  6f 77 25 2c 63 68 6f 72  64 5f 69 63 6f 6e 25 28  |ow%,chord_icon%(|
00001fe0  73 25 2c 63 25 29 2c 22  22 29 0d 07 9e 19 20 74  |s%,c%),"").... t|
00001ff0  65 78 74 24 3d 72 68 79  74 68 6d 24 28 73 25 2c  |ext$=rhythm$(s%,|
00002000  63 25 29 0d 07 a8 46 20  72 68 79 74 68 6d 5f 69  |c%)...F rhythm_i|
00002010  63 6f 6e 25 28 73 25 2c  63 25 29 3d a4 61 64 64  |con%(s%,c%)=.add|
00002020  5f 69 63 6f 6e 28 74 79  70 65 24 2c 74 65 78 74  |_icon(type$,text|
00002030  24 2c 77 69 6e 64 6f 77  25 2c 78 25 2b 38 38 2c  |$,window%,x%+88,|
00002040  79 25 2c 31 2c 30 2c 31  29 0d 07 b2 40 20 f2 69  |y%,1,0,1)...@ .i|
00002050  63 6f 6e 5f 76 61 6c 69  64 61 74 69 6f 6e 28 77  |con_validation(w|
00002060  69 6e 64 6f 77 25 2c 72  68 79 74 68 6d 5f 69 63  |indow%,rhythm_ic|
00002070  6f 6e 25 28 73 25 2c 63  25 29 2c 72 68 79 74 68  |on%(s%,c%),rhyth|
00002080  6d 5f 69 6e 70 75 74 24  29 0d 07 bc 34 20 f2 69  |m_input$)...4 .i|
00002090  63 6f 6e 5f 62 67 5f 63  6f 6c 6f 75 72 28 77 69  |con_bg_colour(wi|
000020a0  6e 64 6f 77 25 2c 72 68  79 74 68 6d 5f 69 63 6f  |ndow%,rhythm_ico|
000020b0  6e 25 28 73 25 2c 63 25  29 2c 31 34 29 0d 07 c6  |n%(s%,c%),14)...|
000020c0  34 20 f2 69 63 6f 6e 5f  66 67 5f 63 6f 6c 6f 75  |4 .icon_fg_colou|
000020d0  72 28 77 69 6e 64 6f 77  25 2c 72 68 79 74 68 6d  |r(window%,rhythm|
000020e0  5f 69 63 6f 6e 25 28 73  25 2c 63 25 29 2c 31 31  |_icon%(s%,c%),11|
000020f0  29 0d 07 d0 06 20 ed 0d  07 da 05 e1 0d 07 e4 05  |).... ..........|
00002100  3a 0d 07 ee 17 dd f2 72  68 79 74 68 6d 5f 77 69  |:......rhythm_wi|
00002110  6e 64 6f 77 28 72 25 29  0d 07 f8 3b ea 20 74 69  |ndow(r%)...;. ti|
00002120  74 6c 65 24 2c 74 79 70  65 24 2c 77 69 6e 64 6f  |tle$,type$,windo|
00002130  77 25 2c 77 25 2c 76 77  25 2c 70 78 25 2c 70 79  |w%,w%,vw%,px%,py|
00002140  25 2c 62 25 2c 63 25 2c  78 25 2c 79 25 2c 69 63  |%,b%,c%,x%,y%,ic|
00002150  6f 6e 25 0d 08 02 29 72  66 25 3d 25 31 30 30 30  |on%...)rf%=%1000|
00002160  30 31 31 31 30 30 30 30  30 30 30 30 30 30 30 30  |0111000000000000|
00002170  30 30 30 30 30 30 30 31  30 30 31 30 0d 08 0c 4d  |000000010010...M|
00002180  72 68 25 3d 33 39 32 3a  72 76 68 25 3d 72 68 25  |rh%=392:rvh%=rh%|
00002190  3a 77 25 3d 38 38 2b 34  30 2a 6e 6f 62 65 61 74  |:w%=88+40*nobeat|
000021a0  73 25 28 72 25 29 3a 76  77 25 3d 77 25 3a 70 78  |s%(r%):vw%=w%:px|
000021b0  25 3d 36 34 30 2b 72 25  2a 34 38 3a 70 79 25 3d  |%=640+r%*48:py%=|
000021c0  35 38 38 2d 72 25 2a 34  38 0d 08 16 45 74 69 74  |588-r%*48...Etit|
000021d0  6c 65 24 3d 22 52 68 79  74 68 6d 20 22 2b bd 28  |le$="Rhythm "+.(|
000021e0  72 25 2b 39 37 29 2b 22  20 28 22 2b 72 68 79 74  |r%+97)+" ("+rhyt|
000021f0  68 6d 5f 6e 61 6d 65 24  28 72 25 29 2b 22 29 22  |hm_name$(r%)+")"|
00002200  3a 74 79 70 65 24 3d 22  6c 61 62 65 6c 22 0d 08  |:type$="label"..|
00002210  20 49 72 68 79 74 68 6d  5f 77 69 6e 64 6f 77 25  | Irhythm_window%|
00002220  28 72 25 29 3d a4 63 72  65 61 74 65 5f 77 69 6e  |(r%)=.create_win|
00002230  64 6f 77 28 74 69 74 6c  65 24 2c 72 66 25 2c 77  |dow(title$,rf%,w|
00002240  25 2c 72 68 25 2c 70 78  25 2c 76 77 25 2c 70 79  |%,rh%,px%,vw%,py|
00002250  25 2c 72 76 68 25 29 0d  08 2a 1e 77 69 6e 64 6f  |%,rvh%)..*.windo|
00002260  77 25 3d 72 68 79 74 68  6d 5f 77 69 6e 64 6f 77  |w%=rhythm_window|
00002270  25 28 72 25 29 0d 08 34  34 69 63 6f 6e 25 3d a4  |%(r%)..44icon%=.|
00002280  61 64 64 5f 69 63 6f 6e  28 74 79 70 65 24 2c 22  |add_icon(type$,"|
00002290  36 20 20 20 22 2c 77 69  6e 64 6f 77 25 2c 34 2c  |6   ",window%,4,|
000022a0  2d 34 2c 34 2c 30 2c 31  29 0d 08 3e 35 69 63 6f  |-4,4,0,1)..>5ico|
000022b0  6e 25 3d a4 61 64 64 5f  69 63 6f 6e 28 74 79 70  |n%=.add_icon(typ|
000022c0  65 24 2c 22 35 20 20 20  22 2c 77 69 6e 64 6f 77  |e$,"5   ",window|
000022d0  25 2c 34 2c 2d 36 30 2c  34 2c 30 2c 31 29 0d 08  |%,4,-60,4,0,1)..|
000022e0  48 36 69 63 6f 6e 25 3d  a4 61 64 64 5f 69 63 6f  |H6icon%=.add_ico|
000022f0  6e 28 74 79 70 65 24 2c  22 34 20 20 20 22 2c 77  |n(type$,"4   ",w|
00002300  69 6e 64 6f 77 25 2c 34  2c 2d 31 31 36 2c 34 2c  |indow%,4,-116,4,|
00002310  30 2c 31 29 0d 08 52 36  69 63 6f 6e 25 3d a4 61  |0,1)..R6icon%=.a|
00002320  64 64 5f 69 63 6f 6e 28  74 79 70 65 24 2c 22 33  |dd_icon(type$,"3|
00002330  20 20 20 22 2c 77 69 6e  64 6f 77 25 2c 34 2c 2d  |   ",window%,4,-|
00002340  31 37 32 2c 34 2c 30 2c  31 29 0d 08 5c 36 69 63  |172,4,0,1)..\6ic|
00002350  6f 6e 25 3d a4 61 64 64  5f 69 63 6f 6e 28 74 79  |on%=.add_icon(ty|
00002360  70 65 24 2c 22 32 20 20  20 22 2c 77 69 6e 64 6f  |pe$,"2   ",windo|
00002370  77 25 2c 34 2c 2d 32 32  38 2c 34 2c 30 2c 31 29  |w%,4,-228,4,0,1)|
00002380  0d 08 66 36 69 63 6f 6e  25 3d a4 61 64 64 5f 69  |..f6icon%=.add_i|
00002390  63 6f 6e 28 74 79 70 65  24 2c 22 31 20 20 20 22  |con(type$,"1   "|
000023a0  2c 77 69 6e 64 6f 77 25  2c 34 2c 2d 32 38 34 2c  |,window%,4,-284,|
000023b0  34 2c 30 2c 31 29 0d 08  70 36 69 63 6f 6e 25 3d  |4,0,1)..p6icon%=|
000023c0  a4 61 64 64 5f 69 63 6f  6e 28 74 79 70 65 24 2c  |.add_icon(type$,|
000023d0  22 62 61 73 73 22 2c 77  69 6e 64 6f 77 25 2c 34  |"bass",window%,4|
000023e0  2c 2d 33 34 30 2c 34 2c  30 2c 31 29 0d 08 7a 12  |,-340,4,0,1)..z.|
000023f0  74 79 70 65 24 3d 22 73  65 6c 65 63 74 22 0d 08  |type$="select"..|
00002400  84 24 e3 20 62 25 3d 31  20 b8 20 6e 6f 62 65 61  |.$. b%=1 . nobea|
00002410  74 73 25 28 72 25 29 3a  e3 20 63 25 3d 31 20 b8  |ts%(r%):. c%=1 .|
00002420  20 37 0d 08 8e 3b 20 e7  20 69 6e 73 25 28 72 25  | 7...; . ins%(r%|
00002430  2c 63 25 2c 62 25 29 3d  30 20 74 65 78 74 24 3d  |,c%,b%)=0 text$=|
00002440  22 20 22 20 8b 20 74 65  78 74 24 3d c3 28 69 6e  |" " . text$=.(in|
00002450  73 25 28 72 25 2c 63 25  2c 62 25 29 29 0d 08 98  |s%(r%,c%,b%))...|
00002460  1e 20 78 25 3d 35 32 2b  62 25 2a 34 30 3a 20 20  |. x%=52+b%*40:  |
00002470  79 25 3d 35 32 2d 63 25  2a 35 36 0d 08 a2 41 20  |y%=52-c%*56...A |
00002480  62 65 61 74 5f 69 63 6f  6e 25 28 63 25 2c 62 25  |beat_icon%(c%,b%|
00002490  29 3d a4 61 64 64 5f 69  63 6f 6e 28 74 79 70 65  |)=.add_icon(type|
000024a0  24 2c 74 65 78 74 24 2c  77 69 6e 64 6f 77 25 2c  |$,text$,window%,|
000024b0  78 25 2c 79 25 2c 31 2c  30 2c 31 29 0d 08 ac 41  |x%,y%,1,0,1)...A|
000024c0  20 e7 20 76 6f 6c 25 28  72 25 2c 63 25 2c 62 25  | . vol%(r%,c%,b%|
000024d0  29 3c 30 20 62 67 5f 63  6f 6c 6f 75 72 25 3d 31  |)<0 bg_colour%=1|
000024e0  35 20 8b 20 62 67 5f 63  6f 6c 6f 75 72 25 3d 76  |5 . bg_colour%=v|
000024f0  6f 6c 25 28 72 25 2c 63  25 2c 62 25 29 0d 08 b6  |ol%(r%,c%,b%)...|
00002500  3a 20 f2 69 63 6f 6e 5f  62 67 5f 63 6f 6c 6f 75  |: .icon_bg_colou|
00002510  72 28 77 69 6e 64 6f 77  25 2c 62 65 61 74 5f 69  |r(window%,beat_i|
00002520  63 6f 6e 25 28 63 25 2c  62 25 29 2c 62 67 5f 63  |con%(c%,b%),bg_c|
00002530  6f 6c 6f 75 72 25 29 0d  08 c0 39 20 e7 20 63 25  |olour%)...9 . c%|
00002540  3c 37 20 f2 69 63 6f 6e  5f 66 67 5f 63 6f 6c 6f  |<7 .icon_fg_colo|
00002550  75 72 28 77 69 6e 64 6f  77 25 2c 62 65 61 74 5f  |ur(window%,beat_|
00002560  69 63 6f 6e 25 28 63 25  2c 62 25 29 2c 31 31 29  |icon%(c%,b%),11)|
00002570  0d 08 ca 39 20 e7 20 63  25 3d 37 20 f2 69 63 6f  |...9 . c%=7 .ico|
00002580  6e 5f 66 67 5f 63 6f 6c  6f 75 72 28 77 69 6e 64  |n_fg_colour(wind|
00002590  6f 77 25 2c 62 65 61 74  5f 69 63 6f 6e 25 28 63  |ow%,beat_icon%(c|
000025a0  25 2c 62 25 29 2c 31 30  29 0d 08 d4 08 20 ed 3a  |%,b%),10).... .:|
000025b0  ed 0d 08 de 05 e1 0d 08  e8 05 3a 0d 08 f2 13 dd  |..........:.....|
000025c0  f2 73 74 65 72 65 6f 5f  77 69 6e 64 6f 77 0d 08  |.stereo_window..|
000025d0  fc 0f ea 20 70 25 2c 63  25 2c 6f 6e 25 0d 09 06  |... p%,c%,on%...|
000025e0  28 66 25 3d 25 31 30 30  30 30 31 30 30 30 30 30  |(f%=%10000100000|
000025f0  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  |0000000000000000|
00002600  31 30 30 31 30 0d 09 10  1d 74 69 74 6c 65 24 3d  |10010....title$=|
00002610  22 53 74 65 72 65 6f 20  50 6f 73 69 74 69 6f 6e  |"Stereo Position|
00002620  73 22 0d 09 1a 2b 77 25  3d 35 37 36 3a 68 25 3d  |s"...+w%=576:h%=|
00002630  38 31 36 3a 76 77 25 3d  77 25 3a 76 68 25 3d 68  |816:vw%=w%:vh%=h|
00002640  25 3a 70 78 25 3d 30 3a  70 79 25 3d 30 0d 09 24  |%:px%=0:py%=0..$|
00002650  3f 73 74 65 72 65 6f 5f  70 6f 73 25 3d a4 63 72  |?stereo_pos%=.cr|
00002660  65 61 74 65 5f 77 69 6e  64 6f 77 28 74 69 74 6c  |eate_window(titl|
00002670  65 24 2c 66 25 2c 77 25  2c 68 25 2c 70 78 25 2c  |e$,f%,w%,h%,px%,|
00002680  76 77 25 2c 70 79 25 2c  76 68 25 29 0d 09 2e 19  |vw%,py%,vh%)....|
00002690  e3 20 70 25 3d 30 20 b8  20 36 3a e3 20 63 25 3d  |. p%=0 . 6:. c%=|
000026a0  31 20 b8 20 38 0d 09 38  25 20 e7 20 73 74 65 72  |1 . 8..8% . ster|
000026b0  65 6f 25 28 63 25 29 3d  70 25 2d 33 20 6f 6e 25  |eo%(c%)=p%-3 on%|
000026c0  3d 31 20 8b 20 6f 6e 25  3d 30 0d 09 42 4c 20 69  |=1 . on%=0..BL i|
000026d0  63 6f 6e 25 3d a4 61 64  64 5f 69 63 6f 6e 28 22  |con%=.add_icon("|
000026e0  72 61 64 69 6f 22 2c 22  20 22 2c 73 74 65 72 65  |radio"," ",stere|
000026f0  6f 5f 70 6f 73 25 2c 32  32 34 2b 34 38 2a 70 25  |o_pos%,224+48*p%|
00002700  2c 2d 28 63 25 2a 39 36  2d 35 34 29 2c 6f 6e 25  |,-(c%*96-54),on%|
00002710  2c 63 25 2c 30 29 0d 09  4c 08 20 ed 3a ed 0d 09  |,c%,0)..L. .:...|
00002720  56 40 69 63 6f 6e 25 3d  a4 61 64 64 5f 69 63 6f  |V@icon%=.add_ico|
00002730  6e 28 22 6c 61 62 65 6c  22 2c 22 43 68 6f 72 64  |n("label","Chord|
00002740  73 20 36 22 2c 73 74 65  72 65 6f 5f 70 6f 73 25  |s 6",stereo_pos%|
00002750  2c 33 32 2c 2d 34 38 2c  30 2c 30 2c 31 29 0d 09  |,32,-48,0,0,1)..|
00002760  60 41 69 63 6f 6e 25 3d  a4 61 64 64 5f 69 63 6f  |`Aicon%=.add_ico|
00002770  6e 28 22 6c 61 62 65 6c  22 2c 22 20 20 20 20 20  |n("label","     |
00002780  20 20 35 22 2c 73 74 65  72 65 6f 5f 70 6f 73 25  |  5",stereo_pos%|
00002790  2c 33 32 2c 2d 31 34 34  2c 30 2c 30 2c 31 29 0d  |,32,-144,0,0,1).|
000027a0  09 6a 41 69 63 6f 6e 25  3d a4 61 64 64 5f 69 63  |.jAicon%=.add_ic|
000027b0  6f 6e 28 22 6c 61 62 65  6c 22 2c 22 20 20 20 20  |on("label","    |
000027c0  20 20 20 34 22 2c 73 74  65 72 65 6f 5f 70 6f 73  |   4",stereo_pos|
000027d0  25 2c 33 32 2c 2d 32 34  30 2c 30 2c 30 2c 31 29  |%,32,-240,0,0,1)|
000027e0  0d 09 74 41 69 63 6f 6e  25 3d a4 61 64 64 5f 69  |..tAicon%=.add_i|
000027f0  63 6f 6e 28 22 6c 61 62  65 6c 22 2c 22 20 20 20  |con("label","   |
00002800  20 20 20 20 33 22 2c 73  74 65 72 65 6f 5f 70 6f  |    3",stereo_po|
00002810  73 25 2c 33 32 2c 2d 33  33 36 2c 30 2c 30 2c 31  |s%,32,-336,0,0,1|
00002820  29 0d 09 7e 41 69 63 6f  6e 25 3d a4 61 64 64 5f  |)..~Aicon%=.add_|
00002830  69 63 6f 6e 28 22 6c 61  62 65 6c 22 2c 22 20 20  |icon("label","  |
00002840  20 20 20 20 20 32 22 2c  73 74 65 72 65 6f 5f 70  |     2",stereo_p|
00002850  6f 73 25 2c 33 32 2c 2d  34 33 32 2c 30 2c 30 2c  |os%,32,-432,0,0,|
00002860  31 29 0d 09 88 41 69 63  6f 6e 25 3d a4 61 64 64  |1)...Aicon%=.add|
00002870  5f 69 63 6f 6e 28 22 6c  61 62 65 6c 22 2c 22 20  |_icon("label"," |
00002880  20 20 20 20 20 20 31 22  2c 73 74 65 72 65 6f 5f  |      1",stereo_|
00002890  70 6f 73 25 2c 33 32 2c  2d 35 32 38 2c 30 2c 30  |pos%,32,-528,0,0|
000028a0  2c 31 29 0d 09 92 41 69  63 6f 6e 25 3d a4 61 64  |,1)...Aicon%=.ad|
000028b0  64 5f 69 63 6f 6e 28 22  6c 61 62 65 6c 22 2c 22  |d_icon("label","|
000028c0  42 61 73 73 20 20 20 20  22 2c 73 74 65 72 65 6f  |Bass    ",stereo|
000028d0  5f 70 6f 73 25 2c 33 32  2c 2d 36 32 34 2c 30 2c  |_pos%,32,-624,0,|
000028e0  30 2c 31 29 0d 09 9c 41  69 63 6f 6e 25 3d a4 61  |0,1)...Aicon%=.a|
000028f0  64 64 5f 69 63 6f 6e 28  22 6c 61 62 65 6c 22 2c  |dd_icon("label",|
00002900  22 4b 65 79 62 6f 61 72  64 22 2c 73 74 65 72 65  |"Keyboard",stere|
00002910  6f 5f 70 6f 73 25 2c 33  32 2c 2d 37 32 30 2c 30  |o_pos%,32,-720,0|
00002920  2c 30 2c 31 29 0d 09 a6  05 e1 0d 09 b0 05 3a 0d  |,0,1).........:.|
00002930  09 ba 0a dd f2 69 6e 66  6f 0d 09 c4 49 f2 70 75  |.....info...I.pu|
00002940  74 5f 69 6e 66 6f 5f 74  65 78 74 28 69 6e 66 6f  |t_info_text(info|
00002950  25 2c 61 70 70 5f 6e 61  6d 65 24 2c 61 70 70 5f  |%,app_name$,app_|
00002960  70 75 72 70 6f 73 65 24  2c 61 70 70 5f 61 75 74  |purpose$,app_aut|
00002970  68 6f 72 24 2c 61 70 70  5f 76 65 72 73 69 6f 6e  |hor$,app_version|
00002980  24 29 0d 09 ce 05 e1 0d  09 d8 05 3a 0d 09 e2 0b  |$).........:....|
00002990  dd f2 6d 65 6e 75 73 0d  09 ec 28 f2 6c 6f 61 64  |..menus...(.load|
000029a0  5f 6d 65 6e 75 73 28 61  70 70 5f 64 69 72 65 63  |_menus(app_direc|
000029b0  74 6f 72 79 24 2b 22 2e  6d 65 6e 75 73 22 29 0d  |tory$+".menus").|
000029c0  09 f6 10 f2 6e 61 6d 65  5f 76 6f 69 63 65 73 0d  |....name_voices.|
000029d0  0a 00 10 f2 63 6c 65 61  72 5f 66 6c 61 67 73 0d  |....clear_flags.|
000029e0  0a 0a 16 f2 70 75 74 5f  77 72 69 74 65 6d 28 35  |....put_writem(5|
000029f0  2c 22 41 22 29 0d 0a 14  05 e1 0d 0a 1e 05 3a 0d  |,"A").........:.|
00002a00  0a 28 11 dd f2 63 6c 65  61 72 5f 66 6c 61 67 73  |.(...clear_flags|
00002a10  0d 0a 32 41 e3 20 6d 65  6e 75 25 3d 31 34 20 b8  |..2A. menu%=14 .|
00002a20  20 31 37 3a e3 20 69 74  65 6d 25 3d 30 20 b8 20  | 17:. item%=0 . |
00002a30  33 31 3a f2 63 6c 65 61  72 5f 77 72 69 74 65 5f  |31:.clear_write_|
00002a40  66 6c 61 67 28 6d 65 6e  75 25 2c 69 74 65 6d 25  |flag(menu%,item%|
00002a50  29 0d 0a 3c 07 ed 3a ed  0d 0a 46 05 e1 0d 0a 50  |)..<..:...F....P|
00002a60  05 3a 0d 0a 5a 0f dd f2  61 64 64 5f 66 6c 61 67  |.:..Z...add_flag|
00002a70  73 0d 0a 64 3f e3 20 6d  65 6e 75 25 3d 31 34 20  |s..d?. menu%=14 |
00002a80  b8 20 31 37 3a e3 20 69  74 65 6d 25 3d 30 20 b8  |. 17:. item%=0 .|
00002a90  20 33 31 3a f2 61 64 64  5f 77 72 69 74 65 5f 66  | 31:.add_write_f|
00002aa0  6c 61 67 28 6d 65 6e 75  25 2c 69 74 65 6d 25 29  |lag(menu%,item%)|
00002ab0  0d 0a 6e 07 ed 3a ed 0d  0a 78 05 e1 0d 0a 82 05  |..n..:...x......|
00002ac0  3a 0d 0a 8c 0f dd f2 77  69 6d 70 5f 70 6f 6c 6c  |:......wimp_poll|
00002ad0  0d 0a 96 10 ea 20 70 6f  6c 6c 5f 6d 61 73 6b 25  |..... poll_mask%|
00002ae0  0d 0a a0 13 70 6f 6c 6c  5f 6d 61 73 6b 25 3d 26  |....poll_mask%=&|
00002af0  38 33 32 0d 0a aa 05 f5  0d 0a b4 26 20 c8 99 32  |832........& ..2|
00002b00  36 32 33 34 33 2c 70 6f  6c 6c 5f 6d 61 73 6b 25  |62343,poll_mask%|
00002b10  2c 62 6c 6b 25 20 b8 20  65 76 65 6e 74 25 0d 0a  |,blk% . event%..|
00002b20  be 10 20 c8 8e 20 65 76  65 6e 74 25 20 ca 0d 0a  |.. .. event% ...|
00002b30  c8 1c 20 20 c9 20 32 3a  f2 6f 70 65 6e 5f 77 69  |..  . 2:.open_wi|
00002b40  6e 64 6f 77 5f 65 76 65  6e 74 0d 0a d2 2e 20 20  |ndow_event....  |
00002b50  c9 20 33 3a 77 69 6e 64  6f 77 25 3d 21 62 6c 6b  |. 3:window%=!blk|
00002b60  25 3a f2 63 6c 6f 73 65  5f 77 69 6e 64 6f 77 28  |%:.close_window(|
00002b70  77 69 6e 64 6f 77 25 29  0d 0a dc 17 20 20 c9 20  |window%)....  . |
00002b80  36 3a f2 6d 6f 75 73 65  5f 62 75 74 74 6f 6e 0d  |6:.mouse_button.|
00002b90  0a e6 14 20 20 c9 20 37  3a f2 64 72 61 67 5f 6f  |...  . 7:.drag_o|
00002ba0  76 65 72 0d 0a f0 14 20  20 c9 20 38 3a f2 6b 65  |ver....  . 8:.ke|
00002bb0  79 5f 70 72 65 73 73 0d  0a fa 19 20 20 c9 20 39  |y_press....  . 9|
00002bc0  3a f2 6d 65 6e 75 5f 73  65 6c 65 63 74 69 6f 6e  |:.menu_selection|
00002bd0  0d 0b 04 15 20 20 c9 31  32 3a f2 67 61 69 6e 5f  |....  .12:.gain_|
00002be0  63 61 72 65 74 0d 0b 0e  15 20 20 c9 31 37 2c 31  |caret....  .17,1|
00002bf0  38 3a f2 6d 65 73 73 61  67 65 0d 0b 18 06 20 cb  |8:.message.... .|
00002c00  0d 0b 22 0b 20 f2 65 76  65 6e 74 0d 0b 2c 0b fd  |..". .event..,..|
00002c10  20 71 75 69 74 25 0d 0b  36 05 e1 0d 0b 40 05 3a  | quit%..6....@.:|
00002c20  0d 0b 4a 17 dd f2 6f 70  65 6e 5f 77 69 6e 64 6f  |..J...open_windo|
00002c30  77 5f 65 76 65 6e 74 0d  0b 54 12 c8 99 32 36 32  |w_event..T...262|
00002c40  33 34 31 2c 2c 62 6c 6b  25 0d 0b 5e 05 e1 0d 0b  |341,,blk%..^....|
00002c50  68 05 3a 0d 0b 72 1b dd  f2 63 6c 6f 73 65 5f 77  |h.:..r...close_w|
00002c60  69 6e 64 6f 77 28 77 69  6e 64 6f 77 25 29 0d 0b  |indow(window%)..|
00002c70  7c 20 21 62 6c 6b 25 3d  77 69 6e 64 6f 77 25 3a  || !blk%=window%:|
00002c80  c8 99 32 36 32 33 34 32  2c 2c 62 6c 6b 25 0d 0b  |..262342,,blk%..|
00002c90  86 05 e1 0d 0b 90 05 3a  0d 0b 9a 13 dd 20 f2 6d  |.......:..... .m|
00002ca0  6f 75 73 65 5f 62 75 74  74 6f 6e 0d 0b a4 13 ea  |ouse_button.....|
00002cb0  20 77 78 25 2c 77 79 25  2c 78 25 2c 79 25 0d 0b  | wx%,wy%,x%,y%..|
00002cc0  ae 32 6d 6f 75 73 65 78  25 3d 62 6c 6b 25 21 30  |.2mousex%=blk%!0|
00002cd0  3a 6d 6f 75 73 65 79 25  3d 62 6c 6b 25 21 34 3a  |:mousey%=blk%!4:|
00002ce0  6d 6f 75 73 65 62 75 74  25 3d 62 6c 6b 25 21 38  |mousebut%=blk%!8|
00002cf0  0d 0b b8 2f 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |.../window_handl|
00002d00  65 25 3d 62 6c 6b 25 21  31 32 3a 69 63 6f 6e 5f  |e%=blk%!12:icon_|
00002d10  68 61 6e 64 6c 65 25 3d  62 6c 6b 25 21 31 36 0d  |handle%=blk%!16.|
00002d20  0b c2 4d 77 78 25 3d a4  77 69 6e 64 6f 77 5f 78  |..Mwx%=.window_x|
00002d30  5f 6f 72 69 67 69 6e 28  77 69 6e 64 6f 77 5f 68  |_origin(window_h|
00002d40  61 6e 64 6c 65 25 29 3a  77 79 25 3d a4 77 69 6e  |andle%):wy%=.win|
00002d50  64 6f 77 5f 79 5f 6f 72  69 67 69 6e 28 77 69 6e  |dow_y_origin(win|
00002d60  64 6f 77 5f 68 61 6e 64  6c 65 25 29 0d 0b cc 21  |dow_handle%)...!|
00002d70  78 25 3d 6d 6f 75 73 65  78 25 2d 77 78 25 3a 79  |x%=mousex%-wx%:y|
00002d80  25 3d 77 79 25 2d 6d 6f  75 73 65 79 25 0d 0b d6  |%=wy%-mousey%...|
00002d90  17 c8 8e 20 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |... window_handl|
00002da0  65 25 20 ca 0d 0b e0 20  20 c9 20 69 63 6f 6e 5f  |e% ....  . icon_|
00002db0  62 61 72 25 3a f2 69 63  6f 6e 5f 62 61 72 5f 63  |bar%:.icon_bar_c|
00002dc0  6c 69 63 6b 0d 0b ea 2e  20 c9 20 6b 65 79 62 6f  |lick.... . keybo|
00002dd0  61 72 64 5f 77 69 6e 64  6f 77 25 3a f2 6b 65 79  |ard_window%:.key|
00002de0  62 6f 61 72 64 5f 77 69  6e 64 6f 77 5f 63 6c 69  |board_window_cli|
00002df0  63 6b 0d 0b f4 18 20 c9  20 73 61 76 65 25 3a f2  |ck.... . save%:.|
00002e00  73 61 76 65 5f 63 6c 69  63 6b 0d 0b fe 24 20 c9  |save_click...$ .|
00002e10  20 73 61 76 65 5f 72 74  68 6d 25 3a f2 73 61 76  | save_rthm%:.sav|
00002e20  65 5f 72 68 79 74 68 6d  5f 63 6c 69 63 6b 0d 0c  |e_rhythm_click..|
00002e30  08 20 20 c9 20 73 74 65  72 65 6f 5f 70 6f 73 25  |.  . stereo_pos%|
00002e40  3a f2 73 74 65 72 65 6f  5f 63 6c 69 63 6b 0d 0c  |:.stereo_click..|
00002e50  12 05 cb 0d 0c 1c 19 e3  20 73 25 3d 30 20 b8 20  |........ s%=0 . |
00002e60  73 65 71 75 65 6e 63 65  73 25 2d 31 0d 0c 26 2c  |sequences%-1..&,|
00002e70  20 e7 20 73 65 71 75 65  6e 63 65 5f 77 69 6e 64  | . sequence_wind|
00002e80  6f 77 25 28 73 25 29 3d  77 69 6e 64 6f 77 5f 68  |ow%(s%)=window_h|
00002e90  61 6e 64 6c 65 25 20 8c  0d 0c 30 2e 20 20 65 64  |andle% ...0.  ed|
00002ea0  69 74 5f 73 65 71 75 65  6e 63 65 25 3d 73 25 3a  |it_sequence%=s%:|
00002eb0  f2 73 65 71 75 65 6e 63  65 5f 77 69 6e 64 6f 77  |.sequence_window|
00002ec0  5f 63 6c 69 63 6b 0d 0c  3a 06 20 cd 0d 0c 44 05  |_click..:. ...D.|
00002ed0  ed 0d 0c 4e 17 e3 20 73  25 3d 30 20 b8 20 72 68  |...N.. s%=0 . rh|
00002ee0  79 74 68 6d 73 25 2d 31  0d 0c 58 2a 20 e7 20 72  |ythms%-1..X* . r|
00002ef0  68 79 74 68 6d 5f 77 69  6e 64 6f 77 25 28 73 25  |hythm_window%(s%|
00002f00  29 3d 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 25  |)=window_handle%|
00002f10  20 8c 0d 0c 62 15 20 20  65 64 69 74 5f 72 68 79  | ...b.  edit_rhy|
00002f20  74 68 6d 25 3d 73 25 0d  0c 6c 1d 20 20 65 64 69  |thm%=s%..l.  edi|
00002f30  74 5f 62 65 61 74 25 3d  31 2b 28 78 25 2d 38 38  |t_beat%=1+(x%-88|
00002f40  29 81 34 30 0d 0c 76 1b  20 20 65 64 69 74 5f 63  |).40..v.  edit_c|
00002f50  68 61 6e 6e 65 6c 25 3d  31 2b 79 25 81 35 36 0d  |hannel%=1+y%.56.|
00002f60  0c 80 1d 20 20 65 64 69  74 5f 69 63 6f 6e 25 3d  |...  edit_icon%=|
00002f70  69 63 6f 6e 5f 68 61 6e  64 6c 65 25 0d 0c 8a 1a  |icon_handle%....|
00002f80  20 20 f2 72 68 79 74 68  6d 5f 77 69 6e 64 6f 77  |  .rhythm_window|
00002f90  5f 63 6c 69 63 6b 0d 0c  94 06 20 cd 0d 0c 9e 05  |_click.... .....|
00002fa0  ed 0d 0c a8 05 e1 0d 0c  b2 05 3a 0d 0c bc 0f dd  |..........:.....|
00002fb0  f2 64 72 61 67 5f 6f 76  65 72 0d 0c c6 32 ea 20  |.drag_over...2. |
00002fc0  77 69 6e 64 6f 77 25 2c  69 63 6f 6e 25 2c 78 25  |window%,icon%,x%|
00002fd0  2c 79 25 2c 66 69 6c 65  24 2c 73 74 61 72 74 25  |,y%,file$,start%|
00002fe0  2c 73 69 7a 65 25 2c 74  79 70 65 25 0d 0c d0 12  |,size%,type%....|
00002ff0  c8 99 32 36 32 33 35 31  2c 2c 62 6c 6b 25 0d 0c  |..262351,,blk%..|
00003000  da 17 78 25 3d 62 6c 6b  25 21 30 3a 79 25 3d 62  |..x%=blk%!0:y%=b|
00003010  6c 6b 25 21 34 0d 0c e4  21 77 69 6e 64 6f 77 25  |lk%!4...!window%|
00003020  3d 62 6c 6b 25 21 31 32  3a 69 63 6f 6e 25 3d 62  |=blk%!12:icon%=b|
00003030  6c 6b 25 21 31 36 0d 0c  ee 15 c8 8e 20 64 72 61  |lk%!16...... dra|
00003040  67 5f 77 69 6e 64 6f 77  25 20 ca 0d 0c f8 0c 20  |g_window% ..... |
00003050  c9 20 73 61 76 65 25 0d  0d 02 33 20 20 66 69 6c  |. save%...3  fil|
00003060  65 24 3d a4 6c 65 61 66  28 a4 67 65 74 5f 69 63  |e$=.leaf(.get_ic|
00003070  6f 6e 5f 74 65 78 74 28  73 61 76 65 25 2c 6e 61  |on_text(save%,na|
00003080  6d 65 5f 69 63 6f 6e 25  29 29 0d 0d 0c 2f 20 20  |me_icon%)).../  |
00003090  74 79 70 65 25 3d a4 69  63 6f 6e 5f 73 70 72 69  |type%=.icon_spri|
000030a0  74 65 5f 74 79 70 65 28  73 61 76 65 25 2c 66 69  |te_type(save%,fi|
000030b0  6c 65 5f 69 63 6f 6e 25  29 0d 0d 16 39 20 20 f2  |le_icon%)...9  .|
000030c0  69 6e 69 74 69 61 74 65  5f 73 61 76 65 28 77 69  |initiate_save(wi|
000030d0  6e 64 6f 77 25 2c 69 63  6f 6e 25 2c 78 25 2c 79  |ndow%,icon%,x%,y|
000030e0  25 2c 66 69 6c 65 24 2c  e0 2c 30 2c 74 79 70 65  |%,file$,.,0,type|
000030f0  25 29 0d 0d 20 11 20 c9  20 73 61 76 65 5f 72 74  |%).. . . save_rt|
00003100  68 6d 25 0d 0d 2a 3f 20  20 66 69 6c 65 24 3d a4  |hm%..*?  file$=.|
00003110  6c 65 61 66 28 a4 67 65  74 5f 69 63 6f 6e 5f 74  |leaf(.get_icon_t|
00003120  65 78 74 28 73 61 76 65  5f 72 74 68 6d 25 2c 72  |ext(save_rthm%,r|
00003130  68 79 74 68 6d 5f 6e 61  6d 65 5f 69 63 6f 6e 25  |hythm_name_icon%|
00003140  29 29 0d 0d 34 3b 20 20  74 79 70 65 25 3d a4 69  |))..4;  type%=.i|
00003150  63 6f 6e 5f 73 70 72 69  74 65 5f 74 79 70 65 28  |con_sprite_type(|
00003160  73 61 76 65 5f 72 74 68  6d 25 2c 72 68 79 74 68  |save_rthm%,rhyth|
00003170  6d 5f 66 69 6c 65 5f 69  63 6f 6e 25 29 0d 0d 3e  |m_file_icon%)..>|
00003180  39 20 20 f2 69 6e 69 74  69 61 74 65 5f 73 61 76  |9  .initiate_sav|
00003190  65 28 77 69 6e 64 6f 77  25 2c 69 63 6f 6e 25 2c  |e(window%,icon%,|
000031a0  78 25 2c 79 25 2c 66 69  6c 65 24 2c e0 2c 30 2c  |x%,y%,file$,.,0,|
000031b0  74 79 70 65 25 29 0d 0d  48 06 20 cb 0d 0d 52 05  |type%)..H. ...R.|
000031c0  e1 0d 0d 5c 05 3a 0d 0d  66 0f dd f2 6b 65 79 5f  |...\.:..f...key_|
000031d0  70 72 65 73 73 0d 0d 70  26 ea 20 77 69 6e 64 6f  |press..p&. windo|
000031e0  77 5f 68 61 6e 64 6c 65  25 2c 69 63 6f 6e 5f 68  |w_handle%,icon_h|
000031f0  61 6e 64 6c 65 25 2c 6b  65 79 25 0d 0d 7a 3a 77  |andle%,key%..z:w|
00003200  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 25 3d 62 6c  |indow_handle%=bl|
00003210  6b 25 21 30 3a 69 63 6f  6e 5f 68 61 6e 64 6c 65  |k%!0:icon_handle|
00003220  25 3d 62 6c 6b 25 21 34  3a 6b 65 79 25 3d 62 6c  |%=blk%!4:key%=bl|
00003230  6b 25 21 32 34 0d 0d 84  1b e7 20 6b 65 79 25 3d  |k%!24..... key%=|
00003240  26 36 31 20 84 20 6b 65  79 25 3d 26 36 36 20 e1  |&61 . key%=&66 .|
00003250  0d 0d 8e 18 e7 20 6b 65  79 25 3d 26 31 38 41 20  |..... key%=&18A |
00003260  6b 65 79 25 3d 26 36 31  0d 0d 98 18 e7 20 6b 65  |key%=&61..... ke|
00003270  79 25 3d 26 31 43 44 20  6b 65 79 25 3d 26 36 36  |y%=&1CD key%=&66|
00003280  0d 0d a2 17 c8 8e 20 77  69 6e 64 6f 77 5f 68 61  |...... window_ha|
00003290  6e 64 6c 65 25 20 ca 0d  0d ac 2f 20 c9 20 73 61  |ndle% ..../ . sa|
000032a0  76 65 25 3a f2 73 61 76  65 5f 6b 65 79 5f 70 72  |ve%:.save_key_pr|
000032b0  65 73 73 28 6b 65 79 25  2c 69 63 6f 6e 5f 68 61  |ess(key%,icon_ha|
000032c0  6e 64 6c 65 25 29 0d 0d  b6 3b 20 c9 20 73 61 76  |ndle%)...; . sav|
000032d0  65 5f 72 74 68 6d 25 3a  f2 73 61 76 65 5f 72 68  |e_rthm%:.save_rh|
000032e0  79 74 68 6d 5f 6b 65 79  5f 70 72 65 73 73 28 6b  |ythm_key_press(k|
000032f0  65 79 25 2c 69 63 6f 6e  5f 68 61 6e 64 6c 65 25  |ey%,icon_handle%|
00003300  29 0d 0d c0 27 20 c9 20  6b 65 79 62 6f 61 72 64  |)...' . keyboard|
00003310  5f 77 69 6e 64 6f 77 25  3a f2 6b 65 79 62 6f 61  |_window%:.keyboa|
00003320  72 64 28 6b 65 79 25 29  0d 0d ca 06 20 7f 0d 0d  |rd(key%).... ...|
00003330  d4 13 20 20 c8 99 32 36  32 33 36 34 2c 6b 65 79  |..  ..262364,key|
00003340  25 0d 0d de 06 20 cb 0d  0d e8 19 e3 20 73 25 3d  |%.... ...... s%=|
00003350  30 20 b8 20 73 65 71 75  65 6e 63 65 73 25 2d 31  |0 . sequences%-1|
00003360  0d 0d f2 3c 20 e7 20 73  65 71 75 65 6e 63 65 5f  |...< . sequence_|
00003370  77 69 6e 64 6f 77 25 28  73 25 29 3d 77 69 6e 64  |window%(s%)=wind|
00003380  6f 77 5f 68 61 6e 64 6c  65 25 20 65 64 69 74 5f  |ow_handle% edit_|
00003390  73 65 71 75 65 6e 63 65  25 3d 73 25 0d 0d fc 06  |sequence%=s%....|
000033a0  20 ed 0d 0e 06 45 e3 20  63 25 3d 31 20 b8 20 73  | ....E. c%=1 . s|
000033b0  65 71 75 6c 65 6e 25 28  65 64 69 74 5f 73 65 71  |equlen%(edit_seq|
000033c0  75 65 6e 63 65 25 29 2d  31 2a 28 73 65 71 75 6c  |uence%)-1*(sequl|
000033d0  65 6e 25 28 65 64 69 74  5f 73 65 71 75 65 6e 63  |en%(edit_sequenc|
000033e0  65 25 29 3c 33 32 29 0d  0e 10 77 20 e7 20 63 68  |e%)<32)...w . ch|
000033f0  6f 72 64 5f 69 63 6f 6e  25 28 65 64 69 74 5f 73  |ord_icon%(edit_s|
00003400  65 71 75 65 6e 63 65 25  2c 63 25 29 3d 69 63 6f  |equence%,c%)=ico|
00003410  6e 5f 68 61 6e 64 6c 65  25 20 f2 63 68 6f 72 64  |n_handle% .chord|
00003420  5f 6b 65 79 5f 70 72 65  73 73 28 77 69 6e 64 6f  |_key_press(windo|
00003430  77 5f 68 61 6e 64 6c 65  25 2c 69 63 6f 6e 5f 68  |w_handle%,icon_h|
00003440  61 6e 64 6c 65 25 2c 65  64 69 74 5f 73 65 71 75  |andle%,edit_sequ|
00003450  65 6e 63 65 25 2c 63 25  2c 6b 65 79 25 29 0d 0e  |ence%,c%,key%)..|
00003460  1a 06 20 ed 0d 0e 24 45  e3 20 72 25 3d 31 20 b8  |.. ...$E. r%=1 .|
00003470  20 73 65 71 75 6c 65 6e  25 28 65 64 69 74 5f 73  | sequlen%(edit_s|
00003480  65 71 75 65 6e 63 65 25  29 2d 31 2a 28 73 65 71  |equence%)-1*(seq|
00003490  75 6c 65 6e 25 28 65 64  69 74 5f 73 65 71 75 65  |ulen%(edit_seque|
000034a0  6e 63 65 25 29 3c 33 32  29 0d 0e 2e 79 20 e7 20  |nce%)<32)...y . |
000034b0  72 68 79 74 68 6d 5f 69  63 6f 6e 25 28 65 64 69  |rhythm_icon%(edi|
000034c0  74 5f 73 65 71 75 65 6e  63 65 25 2c 72 25 29 3d  |t_sequence%,r%)=|
000034d0  69 63 6f 6e 5f 68 61 6e  64 6c 65 25 20 f2 72 68  |icon_handle% .rh|
000034e0  79 74 68 6d 5f 6b 65 79  5f 70 72 65 73 73 28 77  |ythm_key_press(w|
000034f0  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 25 2c 69 63  |indow_handle%,ic|
00003500  6f 6e 5f 68 61 6e 64 6c  65 25 2c 65 64 69 74 5f  |on_handle%,edit_|
00003510  73 65 71 75 65 6e 63 65  25 2c 72 25 2c 6b 65 79  |sequence%,r%,key|
00003520  25 29 0d 0e 38 06 20 ed  0d 0e 42 05 e1 0d 0e 4c  |%)..8. ...B....L|
00003530  05 3a 0d 0e 56 14 dd f2  6d 65 6e 75 5f 73 65 6c  |.:..V...menu_sel|
00003540  65 63 74 69 6f 6e 0d 0e  60 1b ea 20 6d 65 6e 75  |ection..`.. menu|
00003550  5f 70 61 74 68 24 2c 6d  65 6e 75 5f 69 74 65 6d  |_path$,menu_item|
00003560  24 0d 0e 6a 2f 6d 65 6e  75 5f 70 61 74 68 24 3d  |$..j/menu_path$=|
00003570  a4 64 65 63 6f 64 65 5f  6d 65 6e 75 28 63 75 72  |.decode_menu(cur|
00003580  72 65 6e 74 5f 6d 65 6e  75 25 2c 62 6c 6b 25 29  |rent_menu%,blk%)|
00003590  0d 0e 74 20 6d 65 6e 75  5f 69 74 65 6d 24 3d a4  |..t menu_item$=.|
000035a0  6c 65 61 66 28 6d 65 6e  75 5f 70 61 74 68 24 29  |leaf(menu_path$)|
000035b0  0d 0e 7e 16 c8 8e 20 63  75 72 72 65 6e 74 5f 6d  |..~... current_m|
000035c0  65 6e 75 25 20 ca 0d 0e  88 26 20 c9 20 6d 65 6e  |enu% ....& . men|
000035d0  75 25 28 31 29 3a f2 6d  61 69 6e 5f 6d 65 6e 75  |u%(1):.main_menu|
000035e0  28 6d 65 6e 75 5f 69 74  65 6d 24 29 0d 0e 92 2a  |(menu_item$)...*|
000035f0  20 c9 20 6d 65 6e 75 25  28 32 29 3a f2 73 65 71  | . menu%(2):.seq|
00003600  75 65 6e 63 65 5f 6d 65  6e 75 28 6d 65 6e 75 5f  |uence_menu(menu_|
00003610  69 74 65 6d 24 29 0d 0e  9c 28 20 c9 20 6d 65 6e  |item$)...( . men|
00003620  75 25 28 34 29 3a f2 72  68 79 74 68 6d 5f 6d 65  |u%(4):.rhythm_me|
00003630  6e 75 28 6d 65 6e 75 5f  69 74 65 6d 24 29 0d 0e  |nu(menu_item$)..|
00003640  a6 2a 20 c9 20 6d 65 6e  75 25 28 35 29 3a f2 6b  |.* . menu%(5):.k|
00003650  65 79 62 6f 61 72 64 5f  6d 65 6e 75 28 6d 65 6e  |eyboard_menu(men|
00003660  75 5f 69 74 65 6d 24 29  0d 0e b0 05 cb 0d 0e ba  |u_item$)........|
00003670  12 c8 99 32 36 32 33 35  31 2c 2c 62 6c 6b 25 0d  |...262351,,blk%.|
00003680  0e c4 42 e7 20 62 6c 6b  25 21 38 3d 61 64 6a 75  |..B. blk%!8=adju|
00003690  73 74 5f 63 6c 69 63 6b  25 20 c8 99 32 36 32 33  |st_click% ..2623|
000036a0  35 36 2c 2c 63 75 72 72  65 6e 74 5f 6d 65 6e 75  |56,,current_menu|
000036b0  25 2c 6d 65 6e 75 5f 78  25 2c 6d 65 6e 75 5f 79  |%,menu_x%,menu_y|
000036c0  25 0d 0e ce 05 e1 0d 0e  d8 05 3a 0d 0e e2 10 dd  |%.........:.....|
000036d0  f2 67 61 69 6e 5f 63 61  72 65 74 0d 0e ec 2d 77  |.gain_caret...-w|
000036e0  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 25 3d 62 6c  |indow_handle%=bl|
000036f0  6b 25 21 30 3a 69 63 6f  6e 5f 68 61 6e 64 6c 65  |k%!0:icon_handle|
00003700  25 3d 62 6c 6b 25 21 34  0d 0e f6 27 e7 20 77 69  |%=blk%!4...'. wi|
00003710  6e 64 6f 77 5f 68 61 6e  64 6c 65 25 3d 6b 65 79  |ndow_handle%=key|
00003720  62 6f 61 72 64 5f 77 69  6e 64 6f 77 25 20 8c 0d  |board_window% ..|
00003730  0f 00 32 20 f2 69 63 6f  6e 5f 62 67 5f 63 6f 6c  |..2 .icon_bg_col|
00003740  6f 75 72 28 6b 65 79 62  6f 61 72 64 5f 77 69 6e  |our(keyboard_win|
00003750  64 6f 77 25 2c 6f 6e 5f  69 63 6f 6e 25 2c 31 34  |dow%,on_icon%,14|
00003760  29 0d 0f 0a 35 20 f2 70  75 74 5f 69 63 6f 6e 5f  |)...5 .put_icon_|
00003770  74 65 78 74 28 6b 65 79  62 6f 61 72 64 5f 77 69  |text(keyboard_wi|
00003780  6e 64 6f 77 25 2c 6f 6e  5f 69 63 6f 6e 25 2c 22  |ndow%,on_icon%,"|
00003790  20 4f 4e 20 22 29 0d 0f  14 05 cc 0d 0f 1e 31 20  | ON ")........1 |
000037a0  f2 69 63 6f 6e 5f 62 67  5f 63 6f 6c 6f 75 72 28  |.icon_bg_colour(|
000037b0  6b 65 79 62 6f 61 72 64  5f 77 69 6e 64 6f 77 25  |keyboard_window%|
000037c0  2c 6f 6e 5f 69 63 6f 6e  25 2c 31 29 0d 0f 28 36  |,on_icon%,1)..(6|
000037d0  20 f2 70 75 74 5f 69 63  6f 6e 5f 74 65 78 74 28  | .put_icon_text(|
000037e0  6b 65 79 62 6f 61 72 64  5f 77 69 6e 64 6f 77 25  |keyboard_window%|
000037f0  2c 6f 6e 5f 69 63 6f 6e  25 2c 22 20 4f 46 46 20  |,on_icon%," OFF |
00003800  22 29 0d 0f 32 05 cd 0d  0f 3c 05 e1 0d 0f 46 05  |")..2....<....F.|
00003810  3a 0d 0f 50 0d dd f2 6d  65 73 73 61 67 65 0d 0f  |:..P...message..|
00003820  5a 13 ea 20 6d 65 73 73  61 67 65 5f 74 79 70 65  |Z.. message_type|
00003830  25 0d 0f 64 19 6d 65 73  73 61 67 65 5f 74 79 70  |%..d.message_typ|
00003840  65 25 3d 62 6c 6b 25 21  31 36 0d 0f 6e 16 c8 8e  |e%=blk%!16..n...|
00003850  20 6d 65 73 73 61 67 65  5f 74 79 70 65 25 20 ca  | message_type% .|
00003860  0d 0f 78 10 20 c9 20 30  3a 71 75 69 74 25 3d b9  |..x. . 0:quit%=.|
00003870  0d 0f 82 16 20 c9 20 31  3a f2 73 61 76 65 5f 72  |.... . 1:.save_r|
00003880  65 71 75 65 73 74 0d 0f  8c 15 20 c9 20 32 3a f2  |equest.... . 2:.|
00003890  73 61 76 65 5f 64 65 6d  61 6e 64 0d 0f 96 16 20  |save_demand.... |
000038a0  c9 20 33 3a f2 6c 6f 61  64 5f 72 65 71 75 65 73  |. 3:.load_reques|
000038b0  74 0d 0f a0 14 20 c9 20  34 3a f2 6d 65 6e 75 5f  |t.... . 4:.menu_|
000038c0  63 6c 6f 73 65 0d 0f aa  16 20 c9 20 35 3a f2 64  |close.... . 5:.d|
000038d0  6f 75 62 6c 65 5f 63 6c  69 63 6b 0d 0f b4 05 cb  |ouble_click.....|
000038e0  0d 0f be 05 e1 0d 0f c8  05 3a 0d 0f d2 14 dd f2  |.........:......|
000038f0  69 63 6f 6e 5f 62 61 72  5f 63 6c 69 63 6b 0d 0f  |icon_bar_click..|
00003900  dc 0b ea 20 72 25 2c 73  25 0d 0f e6 12 c8 8e 20  |... r%,s%...... |
00003910  6d 6f 75 73 65 62 75 74  25 20 ca 0d 0f f0 12 20  |mousebut% ..... |
00003920  c9 20 6d 65 6e 75 5f 63  6c 69 63 6b 25 0d 0f fa  |. menu_click%...|
00003930  1c 20 20 63 75 72 72 65  6e 74 5f 6d 65 6e 75 25  |.  current_menu%|
00003940  3d 6d 65 6e 75 25 28 31  29 0d 10 04 3a 20 20 6d  |=menu%(1)...:  m|
00003950  65 6e 75 5f 78 25 3d 6d  6f 75 73 65 78 25 2d 36  |enu_x%=mousex%-6|
00003960  34 3a 6d 65 6e 75 5f 79  25 3d a4 6d 65 6e 75 5f  |4:menu_y%=.menu_|
00003970  68 65 69 67 68 74 28 6d  65 6e 75 25 28 31 29 29  |height(menu%(1))|
00003980  2b 39 36 0d 10 0e 2d 20  20 c8 99 32 36 32 33 35  |+96...-  ..26235|
00003990  36 2c 2c 63 75 72 72 65  6e 74 5f 6d 65 6e 75 25  |6,,current_menu%|
000039a0  2c 6d 65 6e 75 5f 78 25  2c 6d 65 6e 75 5f 79 25  |,menu_x%,menu_y%|
000039b0  0d 10 18 22 20 c9 20 73  65 6c 65 63 74 5f 63 6c  |..." . select_cl|
000039c0  69 63 6b 25 3a f2 6f 70  65 6e 5f 77 69 6e 64 6f  |ick%:.open_windo|
000039d0  77 73 0d 10 22 33 20 c9  20 61 64 6a 75 73 74 5f  |ws.."3 . adjust_|
000039e0  63 6c 69 63 6b 25 3a f2  6f 70 65 6e 5f 77 69 6e  |click%:.open_win|
000039f0  64 6f 77 28 6b 65 79 62  6f 61 72 64 5f 77 69 6e  |dow(keyboard_win|
00003a00  64 6f 77 25 29 0d 10 2c  05 cb 0d 10 36 05 e1 0d  |dow%)..,....6...|
00003a10  10 40 05 3a 0d 10 4a 10  dd f2 73 61 76 65 5f 63  |.@.:..J...save_c|
00003a20  6c 69 63 6b 0d 10 54 12  c8 8e 20 6d 6f 75 73 65  |lick..T... mouse|
00003a30  62 75 74 25 20 ca 0d 10  5e 22 20 c9 20 73 65 6c  |but% ...^" . sel|
00003a40  65 63 74 5f 63 6c 69 63  6b 25 2c 61 64 6a 75 73  |ect_click%,adjus|
00003a50  74 5f 63 6c 69 63 6b 25  0d 10 68 1f 20 20 e7 20  |t_click%..h.  . |
00003a60  69 63 6f 6e 5f 68 61 6e  64 6c 65 25 3d 6f 6b 5f  |icon_handle%=ok_|
00003a70  69 63 6f 6e 25 20 8c 0d  10 72 32 20 20 20 66 69  |icon% ...r2   fi|
00003a80  6c 65 5f 6e 61 6d 65 24  3d a4 67 65 74 5f 69 63  |le_name$=.get_ic|
00003a90  6f 6e 5f 74 65 78 74 28  73 61 76 65 25 2c 6e 61  |on_text(save%,na|
00003aa0  6d 65 5f 69 63 6f 6e 25  29 0d 10 7c 35 20 20 20  |me_icon%)..|5   |
00003ab0  66 69 6c 65 5f 74 79 70  65 25 3d a4 69 63 6f 6e  |file_type%=.icon|
00003ac0  5f 73 70 72 69 74 65 5f  74 79 70 65 28 73 61 76  |_sprite_type(sav|
00003ad0  65 25 2c 66 69 6c 65 5f  69 63 6f 6e 25 29 0d 10  |e%,file_icon%)..|
00003ae0  86 1b 20 20 20 e7 20 a7  66 69 6c 65 5f 6e 61 6d  |..   . .file_nam|
00003af0  65 24 2c 22 2e 22 29 20  8c 0d 10 90 3e 20 20 20  |e$,".") ....>   |
00003b00  20 24 28 62 6c 6b 25 2b  34 34 29 3d 66 69 6c 65  | $(blk%+44)=file|
00003b10  5f 6e 61 6d 65 24 2b bd  30 3a f2 73 61 76 65 28  |_name$+.0:.save(|
00003b20  66 69 6c 65 5f 6e 61 6d  65 24 29 3a f2 6d 65 6e  |file_name$):.men|
00003b30  75 5f 63 6c 6f 73 65 0d  10 9a 08 20 20 20 cc 0d  |u_close....   ..|
00003b40  10 a4 39 20 20 20 20 24  28 62 6c 6b 25 2b 34 34  |..9    $(blk%+44|
00003b50  29 3d 61 70 70 5f 64 69  72 65 63 74 6f 72 79 24  |)=app_directory$|
00003b60  2b 22 2e 73 6f 6e 67 73  2e 22 2b 66 69 6c 65 5f  |+".songs."+file_|
00003b70  6e 61 6d 65 24 2b bd 30  0d 10 ae 32 20 20 20 20  |name$+.0...2    |
00003b80  f2 73 61 76 65 28 61 70  70 5f 64 69 72 65 63 74  |.save(app_direct|
00003b90  6f 72 79 24 2b 22 2e 73  6f 6e 67 73 2e 22 2b 66  |ory$+".songs."+f|
00003ba0  69 6c 65 5f 6e 61 6d 65  24 29 0d 10 b8 08 20 20  |ile_name$)....  |
00003bb0  20 cd 0d 10 c2 07 20 20  cd 0d 10 cc 20 20 c9 20  | .....  ....  . |
00003bc0  73 65 6c 65 63 74 5f 64  72 61 67 25 2c 61 64 6a  |select_drag%,adj|
00003bd0  75 73 74 5f 64 72 61 67  25 0d 10 d6 21 20 20 e7  |ust_drag%...!  .|
00003be0  20 69 63 6f 6e 5f 68 61  6e 64 6c 65 25 3d 66 69  | icon_handle%=fi|
00003bf0  6c 65 5f 69 63 6f 6e 25  20 8c 0d 10 e0 4b 20 20  |le_icon% ....K  |
00003c00  20 64 72 61 67 5f 69 63  6f 6e 25 3d 66 69 6c 65  | drag_icon%=file|
00003c10  5f 69 63 6f 6e 25 3a 64  72 61 67 5f 77 69 6e 64  |_icon%:drag_wind|
00003c20  6f 77 25 3d 73 61 76 65  25 3a f2 64 72 61 67 5f  |ow%=save%:.drag_|
00003c30  62 6f 78 28 73 61 76 65  25 2c 66 69 6c 65 5f 69  |box(save%,file_i|
00003c40  63 6f 6e 25 29 0d 10 ea  07 20 20 cd 0d 10 f4 06  |con%)....  .....|
00003c50  20 cb 0d 10 fe 05 e1 0d  11 08 05 3a 0d 11 12 17  | ..........:....|
00003c60  dd f2 73 61 76 65 5f 72  68 79 74 68 6d 5f 63 6c  |..save_rhythm_cl|
00003c70  69 63 6b 0d 11 1c 12 c8  8e 20 6d 6f 75 73 65 62  |ick...... mouseb|
00003c80  75 74 25 20 ca 0d 11 26  22 20 c9 20 73 65 6c 65  |ut% ...&" . sele|
00003c90  63 74 5f 63 6c 69 63 6b  25 2c 61 64 6a 75 73 74  |ct_click%,adjust|
00003ca0  5f 63 6c 69 63 6b 25 0d  11 30 1f 20 20 e7 20 69  |_click%..0.  . i|
00003cb0  63 6f 6e 5f 68 61 6e 64  6c 65 25 3d 6f 6b 5f 69  |con_handle%=ok_i|
00003cc0  63 6f 6e 25 20 8c 0d 11  3a 3e 20 20 20 66 69 6c  |con% ...:>   fil|
00003cd0  65 5f 6e 61 6d 65 24 3d  a4 67 65 74 5f 69 63 6f  |e_name$=.get_ico|
00003ce0  6e 5f 74 65 78 74 28 73  61 76 65 5f 72 74 68 6d  |n_text(save_rthm|
00003cf0  25 2c 72 68 79 74 68 6d  5f 6e 61 6d 65 5f 69 63  |%,rhythm_name_ic|
00003d00  6f 6e 25 29 0d 11 44 41  20 20 20 66 69 6c 65 5f  |on%)..DA   file_|
00003d10  74 79 70 65 25 3d a4 69  63 6f 6e 5f 73 70 72 69  |type%=.icon_spri|
00003d20  74 65 5f 74 79 70 65 28  73 61 76 65 5f 72 74 68  |te_type(save_rth|
00003d30  6d 25 2c 72 68 79 74 68  6d 5f 66 69 6c 65 5f 69  |m%,rhythm_file_i|
00003d40  63 6f 6e 25 29 0d 11 4e  1b 20 20 20 e7 20 a7 66  |con%)..N.   . .f|
00003d50  69 6c 65 5f 6e 61 6d 65  24 2c 22 2e 22 29 20 8c  |ile_name$,".") .|
00003d60  0d 11 58 45 20 20 20 20  24 28 62 6c 6b 25 2b 34  |..XE    $(blk%+4|
00003d70  34 29 3d 66 69 6c 65 5f  6e 61 6d 65 24 2b bd 30  |4)=file_name$+.0|
00003d80  3a f2 73 61 76 65 5f 72  68 79 74 68 6d 28 66 69  |:.save_rhythm(fi|
00003d90  6c 65 5f 6e 61 6d 65 24  29 3a f2 6d 65 6e 75 5f  |le_name$):.menu_|
00003da0  63 6c 6f 73 65 0d 11 62  08 20 20 20 cc 0d 11 6c  |close..b.   ...l|
00003db0  3b 20 20 20 20 24 28 62  6c 6b 25 2b 34 34 29 3d  |;    $(blk%+44)=|
00003dc0  61 70 70 5f 64 69 72 65  63 74 6f 72 79 24 2b 22  |app_directory$+"|
00003dd0  2e 72 68 79 74 68 6d 73  2e 22 2b 66 69 6c 65 5f  |.rhythms."+file_|
00003de0  6e 61 6d 65 24 2b bd 30  0d 11 76 3b 20 20 20 20  |name$+.0..v;    |
00003df0  f2 73 61 76 65 5f 72 68  79 74 68 6d 28 61 70 70  |.save_rhythm(app|
00003e00  5f 64 69 72 65 63 74 6f  72 79 24 2b 22 2e 72 68  |_directory$+".rh|
00003e10  79 74 68 6d 73 2e 22 2b  66 69 6c 65 5f 6e 61 6d  |ythms."+file_nam|
00003e20  65 24 29 0d 11 80 08 20  20 20 cd 0d 11 8a 07 20  |e$)....   ..... |
00003e30  20 cd 0d 11 94 20 20 c9  20 73 65 6c 65 63 74 5f  | ....  . select_|
00003e40  64 72 61 67 25 2c 61 64  6a 75 73 74 5f 64 72 61  |drag%,adjust_dra|
00003e50  67 25 0d 11 9e 28 20 20  e7 20 69 63 6f 6e 5f 68  |g%...(  . icon_h|
00003e60  61 6e 64 6c 65 25 3d 72  68 79 74 68 6d 5f 66 69  |andle%=rhythm_fi|
00003e70  6c 65 5f 69 63 6f 6e 25  20 8c 0d 11 a8 3b 20 20  |le_icon% ....;  |
00003e80  20 64 72 61 67 5f 69 63  6f 6e 25 3d 72 68 79 74  | drag_icon%=rhyt|
00003e90  68 6d 5f 66 69 6c 65 5f  69 63 6f 6e 25 3a 64 72  |hm_file_icon%:dr|
00003ea0  61 67 5f 77 69 6e 64 6f  77 25 3d 73 61 76 65 5f  |ag_window%=save_|
00003eb0  72 74 68 6d 25 0d 11 b2  2e 20 20 20 f2 64 72 61  |rthm%....   .dra|
00003ec0  67 5f 62 6f 78 28 73 61  76 65 5f 72 74 68 6d 25  |g_box(save_rthm%|
00003ed0  2c 72 68 79 74 68 6d 5f  66 69 6c 65 5f 69 63 6f  |,rhythm_file_ico|
00003ee0  6e 25 29 0d 11 bc 07 20  20 cd 0d 11 c6 06 20 cb  |n%)....  ..... .|
00003ef0  0d 11 d0 05 e1 0d 11 da  05 3a 0d 11 e4 1b dd f2  |.........:......|
00003f00  6b 65 79 62 6f 61 72 64  5f 77 69 6e 64 6f 77 5f  |keyboard_window_|
00003f10  63 6c 69 63 6b 0d 11 ee  12 c8 8e 20 6d 6f 75 73  |click...... mous|
00003f20  65 62 75 74 25 20 ca 0d  11 f8 12 20 c9 20 6d 65  |ebut% ..... . me|
00003f30  6e 75 5f 63 6c 69 63 6b  25 0d 12 02 3f 20 20 63  |nu_click%...?  c|
00003f40  75 72 72 65 6e 74 5f 6d  65 6e 75 25 3d 6d 65 6e  |urrent_menu%=men|
00003f50  75 25 28 35 29 3a 6d 65  6e 75 5f 78 25 3d 6d 6f  |u%(5):menu_x%=mo|
00003f60  75 73 65 78 25 2d 36 34  3a 6d 65 6e 75 5f 79 25  |usex%-64:menu_y%|
00003f70  3d 6d 6f 75 73 65 79 25  0d 12 0c 2d 20 20 c8 99  |=mousey%...-  ..|
00003f80  32 36 32 33 35 36 2c 2c  63 75 72 72 65 6e 74 5f  |262356,,current_|
00003f90  6d 65 6e 75 25 2c 6d 65  6e 75 5f 78 25 2c 6d 65  |menu%,menu_x%,me|
00003fa0  6e 75 5f 79 25 0d 12 16  14 20 c9 20 73 65 6c 65  |nu_y%.... . sele|
00003fb0  63 74 5f 63 6c 69 63 6b  25 0d 12 20 17 20 20 c8  |ct_click%.. .  .|
00003fc0  8e 20 69 63 6f 6e 5f 68  61 6e 64 6c 65 25 20 ca  |. icon_handle% .|
00003fd0  0d 12 2a 16 20 20 20 c9  20 73 75 73 74 61 69 6e  |..*.   . sustain|
00003fe0  5f 69 63 6f 6e 25 0d 12  34 16 20 20 20 20 e7 20  |_icon%..4.    . |
00003ff0  73 75 73 74 61 69 6e 25  3d 30 20 8c 0d 12 3e 13  |sustain%=0 ...>.|
00004000  20 20 20 20 20 73 75 73  74 61 69 6e 25 3d 31 0d  |     sustain%=1.|
00004010  12 48 3c 20 20 20 20 20  f2 70 75 74 5f 69 63 6f  |.H<     .put_ico|
00004020  6e 5f 74 65 78 74 28 6b  65 79 62 6f 61 72 64 5f  |n_text(keyboard_|
00004030  77 69 6e 64 6f 77 25 2c  73 75 73 74 61 69 6e 5f  |window%,sustain_|
00004040  69 63 6f 6e 25 2c 22 4f  4e 22 29 0d 12 52 14 20  |icon%,"ON")..R. |
00004050  20 20 20 cc 20 73 75 73  74 61 69 6e 25 3d 30 0d  |   . sustain%=0.|
00004060  12 5c 3d 20 20 20 20 20  f2 70 75 74 5f 69 63 6f  |.\=     .put_ico|
00004070  6e 5f 74 65 78 74 28 6b  65 79 62 6f 61 72 64 5f  |n_text(keyboard_|
00004080  77 69 6e 64 6f 77 25 2c  73 75 73 74 61 69 6e 5f  |window%,sustain_|
00004090  69 63 6f 6e 25 2c 22 4f  46 46 22 29 0d 12 66 09  |icon%,"OFF")..f.|
000040a0  20 20 20 20 cd 0d 12 70  18 20 20 20 c9 20 73 74  |    ...p.   . st|
000040b0  72 75 63 74 75 72 65 5f  69 63 6f 6e 25 0d 12 7a  |ructure_icon%..z|
000040c0  1a 20 20 20 20 e7 20 70  6c 61 79 5f 72 68 79 74  |.    . play_rhyt|
000040d0  68 6d 25 3d a3 20 8c 0d  12 84 17 20 20 20 20 20  |hm%=. .....     |
000040e0  70 6c 61 79 5f 72 68 79  74 68 6d 25 3d b9 0d 12  |play_rhythm%=...|
000040f0  8e 3c 20 20 20 20 20 f2  69 63 6f 6e 5f 62 67 5f  |.<     .icon_bg_|
00004100  63 6f 6c 6f 75 72 28 6b  65 79 62 6f 61 72 64 5f  |colour(keyboard_|
00004110  77 69 6e 64 6f 77 25 2c  73 74 72 75 63 74 75 72  |window%,structur|
00004120  65 5f 69 63 6f 6e 25 2c  30 29 0d 12 98 09 20 20  |e_icon%,0)....  |
00004130  20 20 cc 0d 12 a2 17 20  20 20 20 20 70 6c 61 79  |  .....     play|
00004140  5f 72 68 79 74 68 6d 25  3d a3 0d 12 ac 3d 20 20  |_rhythm%=....=  |
00004150  20 20 20 f2 69 63 6f 6e  5f 62 67 5f 63 6f 6c 6f  |   .icon_bg_colo|
00004160  75 72 28 6b 65 79 62 6f  61 72 64 5f 77 69 6e 64  |ur(keyboard_wind|
00004170  6f 77 25 2c 73 74 72 75  63 74 75 72 65 5f 69 63  |ow%,structure_ic|
00004180  6f 6e 25 2c 31 31 29 0d  12 b6 09 20 20 20 20 cd  |on%,11)....    .|
00004190  0d 12 c0 19 20 20 20 c9  20 6c 65 66 74 5f 74 65  |....   . left_te|
000041a0  6d 70 6f 5f 69 63 6f 6e  25 0d 12 ca 25 20 20 20  |mpo_icon%...%   |
000041b0  20 74 65 6d 70 6f 25 2d  3d 31 3a e7 20 74 65 6d  | tempo%-=1:. tem|
000041c0  70 6f 25 3c 34 20 74 65  6d 70 6f 25 3d 34 0d 12  |po%<4 tempo%=4..|
000041d0  d4 3e 20 20 20 20 f2 70  75 74 5f 69 63 6f 6e 5f  |.>    .put_icon_|
000041e0  74 65 78 74 28 6b 65 79  62 6f 61 72 64 5f 77 69  |text(keyboard_wi|
000041f0  6e 64 6f 77 25 2c 74 65  6d 70 6f 5f 69 63 6f 6e  |ndow%,tempo_icon|
00004200  25 2c c3 28 74 65 6d 70  6f 25 29 29 0d 12 de 1a  |%,.(tempo%))....|
00004210  20 20 20 c9 20 72 69 67  68 74 5f 74 65 6d 70 6f  |   . right_tempo|
00004220  5f 69 63 6f 6e 25 0d 12  e8 29 20 20 20 20 74 65  |_icon%...)    te|
00004230  6d 70 6f 25 2b 3d 31 3a  e7 20 74 65 6d 70 6f 25  |mpo%+=1:. tempo%|
00004240  3e 39 39 39 20 74 65 6d  70 6f 25 3d 39 39 39 0d  |>999 tempo%=999.|
00004250  12 f2 3e 20 20 20 20 f2  70 75 74 5f 69 63 6f 6e  |..>    .put_icon|
00004260  5f 74 65 78 74 28 6b 65  79 62 6f 61 72 64 5f 77  |_text(keyboard_w|
00004270  69 6e 64 6f 77 25 2c 74  65 6d 70 6f 5f 69 63 6f  |indow%,tempo_ico|
00004280  6e 25 2c c3 28 74 65 6d  70 6f 25 29 29 0d 12 fc  |n%,.(tempo%))...|
00004290  19 20 20 20 c9 20 6c 65  66 74 5f 74 72 61 6e 73  |.   . left_trans|
000042a0  5f 69 63 6f 6e 25 0d 13  06 29 20 20 20 20 74 72  |_icon%...)    tr|
000042b0  61 6e 73 25 2d 3d 31 3a  e7 20 74 72 61 6e 73 25  |ans%-=1:. trans%|
000042c0  3c 2d 39 36 20 74 72 61  6e 73 25 3d 2d 39 36 0d  |<-96 trans%=-96.|
000042d0  13 10 3e 20 20 20 20 f2  70 75 74 5f 69 63 6f 6e  |..>    .put_icon|
000042e0  5f 74 65 78 74 28 6b 65  79 62 6f 61 72 64 5f 77  |_text(keyboard_w|
000042f0  69 6e 64 6f 77 25 2c 74  72 61 6e 73 5f 69 63 6f  |indow%,trans_ico|
00004300  6e 25 2c c3 28 74 72 61  6e 73 25 29 29 0d 13 1a  |n%,.(trans%))...|
00004310  1a 20 20 20 c9 20 72 69  67 68 74 5f 74 72 61 6e  |.   . right_tran|
00004320  73 5f 69 63 6f 6e 25 0d  13 24 27 20 20 20 20 74  |s_icon%..$'    t|
00004330  72 61 6e 73 25 2b 3d 31  3a e7 20 74 72 61 6e 73  |rans%+=1:. trans|
00004340  25 3e 39 36 20 74 72 61  6e 73 25 3d 39 36 0d 13  |%>96 trans%=96..|
00004350  2e 3e 20 20 20 20 f2 70  75 74 5f 69 63 6f 6e 5f  |.>    .put_icon_|
00004360  74 65 78 74 28 6b 65 79  62 6f 61 72 64 5f 77 69  |text(keyboard_wi|
00004370  6e 64 6f 77 25 2c 74 72  61 6e 73 5f 69 63 6f 6e  |ndow%,trans_icon|
00004380  25 2c c3 28 74 72 61 6e  73 25 29 29 0d 13 38 07  |%,.(trans%))..8.|
00004390  20 20 cb 0d 13 42 14 20  c9 20 61 64 6a 75 73 74  |  ...B. . adjust|
000043a0  5f 63 6c 69 63 6b 25 0d  13 4c 17 20 20 c8 8e 20  |_click%..L.  .. |
000043b0  69 63 6f 6e 5f 68 61 6e  64 6c 65 25 20 ca 0d 13  |icon_handle% ...|
000043c0  56 19 20 20 20 c9 20 6c  65 66 74 5f 74 65 6d 70  |V.   . left_temp|
000043d0  6f 5f 69 63 6f 6e 25 0d  13 60 2b 20 20 20 20 74  |o_icon%..`+    t|
000043e0  65 6d 70 6f 25 3d 74 65  6d 70 6f 25 81 32 3a e7  |empo%=tempo%.2:.|
000043f0  20 74 65 6d 70 6f 25 3c  34 20 74 65 6d 70 6f 25  | tempo%<4 tempo%|
00004400  3d 34 0d 13 6a 3e 20 20  20 20 f2 70 75 74 5f 69  |=4..j>    .put_i|
00004410  63 6f 6e 5f 74 65 78 74  28 6b 65 79 62 6f 61 72  |con_text(keyboar|
00004420  64 5f 77 69 6e 64 6f 77  25 2c 74 65 6d 70 6f 5f  |d_window%,tempo_|
00004430  69 63 6f 6e 25 2c c3 28  74 65 6d 70 6f 25 29 29  |icon%,.(tempo%))|
00004440  0d 13 74 1a 20 20 20 c9  20 72 69 67 68 74 5f 74  |..t.   . right_t|
00004450  65 6d 70 6f 5f 69 63 6f  6e 25 0d 13 7e 2f 20 20  |empo_icon%..~/  |
00004460  20 20 74 65 6d 70 6f 25  3d 74 65 6d 70 6f 25 2a  |  tempo%=tempo%*|
00004470  32 3a e7 20 74 65 6d 70  6f 25 3e 39 39 39 20 74  |2:. tempo%>999 t|
00004480  65 6d 70 6f 25 3d 39 39  39 0d 13 88 3e 20 20 20  |empo%=999...>   |
00004490  20 f2 70 75 74 5f 69 63  6f 6e 5f 74 65 78 74 28  | .put_icon_text(|
000044a0  6b 65 79 62 6f 61 72 64  5f 77 69 6e 64 6f 77 25  |keyboard_window%|
000044b0  2c 74 65 6d 70 6f 5f 69  63 6f 6e 25 2c c3 28 74  |,tempo_icon%,.(t|
000044c0  65 6d 70 6f 25 29 29 0d  13 92 19 20 20 20 c9 20  |empo%))....   . |
000044d0  6c 65 66 74 5f 74 72 61  6e 73 5f 69 63 6f 6e 25  |left_trans_icon%|
000044e0  0d 13 9c 29 20 20 20 20  74 72 61 6e 73 25 2d 3d  |...)    trans%-=|
000044f0  38 3a e7 20 74 72 61 6e  73 25 3c 2d 39 36 20 74  |8:. trans%<-96 t|
00004500  72 61 6e 73 25 3d 2d 39  36 0d 13 a6 3e 20 20 20  |rans%=-96...>   |
00004510  20 f2 70 75 74 5f 69 63  6f 6e 5f 74 65 78 74 28  | .put_icon_text(|
00004520  6b 65 79 62 6f 61 72 64  5f 77 69 6e 64 6f 77 25  |keyboard_window%|
00004530  2c 74 72 61 6e 73 5f 69  63 6f 6e 25 2c c3 28 74  |,trans_icon%,.(t|
00004540  72 61 6e 73 25 29 29 0d  13 b0 1a 20 20 20 c9 20  |rans%))....   . |
00004550  72 69 67 68 74 5f 74 72  61 6e 73 5f 69 63 6f 6e  |right_trans_icon|
00004560  25 0d 13 ba 27 20 20 20  20 74 72 61 6e 73 25 2b  |%...'    trans%+|
00004570  3d 38 3a e7 20 74 72 61  6e 73 25 3e 39 36 20 74  |=8:. trans%>96 t|
00004580  72 61 6e 73 25 3d 39 36  0d 13 c4 3e 20 20 20 20  |rans%=96...>    |
00004590  f2 70 75 74 5f 69 63 6f  6e 5f 74 65 78 74 28 6b  |.put_icon_text(k|
000045a0  65 79 62 6f 61 72 64 5f  77 69 6e 64 6f 77 25 2c  |eyboard_window%,|
000045b0  74 72 61 6e 73 5f 69 63  6f 6e 25 2c c3 28 74 72  |trans_icon%,.(tr|
000045c0  61 6e 73 25 29 29 0d 13  ce 08 20 20 20 cb 0d 13  |ans%))....   ...|
000045d0  d8 06 20 cb 0d 13 e2 35  f2 70 75 74 5f 77 72 69  |.. ....5.put_wri|
000045e0  74 65 6d 28 33 2c c3 28  74 65 6d 70 6f 25 29 29  |tem(3,.(tempo%))|
000045f0  3a f2 70 75 74 5f 77 72  69 74 65 6d 28 34 2c c3  |:.put_writem(4,.|
00004600  28 74 72 61 6e 73 25 29  29 0d 13 ec 05 e1 0d 13  |(trans%)).......|
00004610  f6 05 3a 0d 14 00 1b dd  f2 73 65 71 75 65 6e 63  |..:......sequenc|
00004620  65 5f 77 69 6e 64 6f 77  5f 63 6c 69 63 6b 0d 14  |e_window_click..|
00004630  0a 12 c8 8e 20 6d 6f 75  73 65 62 75 74 25 20 ca  |.... mousebut% .|
00004640  0d 14 14 4c 20 c9 20 6d  65 6e 75 5f 63 6c 69 63  |...L . menu_clic|
00004650  6b 25 3a 63 75 72 72 65  6e 74 5f 6d 65 6e 75 25  |k%:current_menu%|
00004660  3d 6d 65 6e 75 25 28 32  29 3a 6d 65 6e 75 5f 78  |=menu%(2):menu_x|
00004670  25 3d 6d 6f 75 73 65 78  25 2d 36 34 3a 6d 65 6e  |%=mousex%-64:men|
00004680  75 5f 79 25 3d 6d 6f 75  73 65 79 25 0d 14 1e 2d  |u_y%=mousey%...-|
00004690  20 20 c8 99 32 36 32 33  35 36 2c 2c 63 75 72 72  |  ..262356,,curr|
000046a0  65 6e 74 5f 6d 65 6e 75  25 2c 6d 65 6e 75 5f 78  |ent_menu%,menu_x|
000046b0  25 2c 6d 65 6e 75 5f 79  25 0d 14 28 06 20 cb 0d  |%,menu_y%..(. ..|
000046c0  14 32 05 e1 0d 14 3c 05  3a 0d 14 46 19 dd f2 72  |.2....<.:..F...r|
000046d0  68 79 74 68 6d 5f 77 69  6e 64 6f 77 5f 63 6c 69  |hythm_window_cli|
000046e0  63 6b 0d 14 50 0e ea 20  72 25 2c 63 25 2c 62 25  |ck..P.. r%,c%,b%|
000046f0  0d 14 5a 40 72 25 3d 65  64 69 74 5f 72 68 79 74  |..Z@r%=edit_rhyt|
00004700  68 6d 25 3a 63 25 3d 65  64 69 74 5f 63 68 61 6e  |hm%:c%=edit_chan|
00004710  6e 65 6c 25 3a 62 25 3d  65 64 69 74 5f 62 65 61  |nel%:b%=edit_bea|
00004720  74 25 3a 69 25 3d 65 64  69 74 5f 69 63 6f 6e 25  |t%:i%=edit_icon%|
00004730  0d 14 64 31 f2 70 75 74  5f 69 63 6f 6e 5f 74 65  |..d1.put_icon_te|
00004740  78 74 28 73 61 76 65 5f  72 74 68 6d 25 2c 31 2c  |xt(save_rthm%,1,|
00004750  72 68 79 74 68 6d 5f 6e  61 6d 65 24 28 72 25 29  |rhythm_name$(r%)|
00004760  29 0d 14 6e 12 c8 8e 20  6d 6f 75 73 65 62 75 74  |)..n... mousebut|
00004770  25 20 ca 0d 14 78 4c 20  c9 20 6d 65 6e 75 5f 63  |% ...xL . menu_c|
00004780  6c 69 63 6b 25 3a 63 75  72 72 65 6e 74 5f 6d 65  |lick%:current_me|
00004790  6e 75 25 3d 6d 65 6e 75  25 28 34 29 3a 6d 65 6e  |nu%=menu%(4):men|
000047a0  75 5f 78 25 3d 6d 6f 75  73 65 78 25 2d 36 34 3a  |u_x%=mousex%-64:|
000047b0  6d 65 6e 75 5f 79 25 3d  6d 6f 75 73 65 79 25 0d  |menu_y%=mousey%.|
000047c0  14 82 2d 20 20 c8 99 32  36 32 33 35 36 2c 2c 63  |..-  ..262356,,c|
000047d0  75 72 72 65 6e 74 5f 6d  65 6e 75 25 2c 6d 65 6e  |urrent_menu%,men|
000047e0  75 5f 78 25 2c 6d 65 6e  75 5f 79 25 0d 14 8c 14  |u_x%,menu_y%....|
000047f0  20 c9 20 73 65 6c 65 63  74 5f 63 6c 69 63 6b 25  | . select_click%|
00004800  0d 14 96 1a 20 20 e7 20  76 6f 6c 25 28 72 25 2c  |....  . vol%(r%,|
00004810  63 25 2c 62 25 29 3c 30  20 8c 0d 14 a0 18 20 20  |c%,b%)<0 .....  |
00004820  20 76 6f 6c 25 28 72 25  2c 63 25 2c 62 25 29 2b  | vol%(r%,c%,b%)+|
00004830  3d 38 0d 14 aa 3c 20 20  20 f2 69 63 6f 6e 5f 62  |=8...<   .icon_b|
00004840  67 5f 63 6f 6c 6f 75 72  28 72 68 79 74 68 6d 5f  |g_colour(rhythm_|
00004850  77 69 6e 64 6f 77 25 28  72 25 29 2c 69 25 2c 76  |window%(r%),i%,v|
00004860  6f 6c 25 28 72 25 2c 63  25 2c 62 25 29 29 0d 14  |ol%(r%,c%,b%))..|
00004870  b4 07 20 20 cc 0d 14 be  18 20 20 20 76 6f 6c 25  |..  .....   vol%|
00004880  28 72 25 2c 63 25 2c 62  25 29 2d 3d 38 0d 14 c8  |(r%,c%,b%)-=8...|
00004890  30 20 20 20 f2 69 63 6f  6e 5f 62 67 5f 63 6f 6c  |0   .icon_bg_col|
000048a0  6f 75 72 28 72 68 79 74  68 6d 5f 77 69 6e 64 6f  |our(rhythm_windo|
000048b0  77 25 28 72 25 29 2c 69  25 2c 31 35 29 0d 14 d2  |w%(r%),i%,15)...|
000048c0  07 20 20 cd 0d 14 dc 14  20 c9 20 61 64 6a 75 73  |.  ..... . adjus|
000048d0  74 5f 63 6c 69 63 6b 25  0d 14 e6 3b 20 20 76 6f  |t_click%...;  vo|
000048e0  6c 25 28 72 25 2c 63 25  2c 62 25 29 2d 3d 31 3a  |l%(r%,c%,b%)-=1:|
000048f0  e7 20 76 6f 6c 25 28 72  25 2c 63 25 2c 62 25 29  |. vol%(r%,c%,b%)|
00004900  3c 30 20 76 6f 6c 25 28  72 25 2c 63 25 2c 62 25  |<0 vol%(r%,c%,b%|
00004910  29 3d 37 0d 14 f0 3b 20  20 f2 69 63 6f 6e 5f 62  |)=7...;  .icon_b|
00004920  67 5f 63 6f 6c 6f 75 72  28 72 68 79 74 68 6d 5f  |g_colour(rhythm_|
00004930  77 69 6e 64 6f 77 25 28  72 25 29 2c 69 25 2c 76  |window%(r%),i%,v|
00004940  6f 6c 25 28 72 25 2c 63  25 2c 62 25 29 29 0d 14  |ol%(r%,c%,b%))..|
00004950  fa 2b 20 c9 20 73 65 6c  65 63 74 5f 6d 65 6e 75  |.+ . select_menu|
00004960  5f 63 6c 69 63 6b 25 3a  69 6e 73 25 28 72 25 2c  |_click%:ins%(r%,|
00004970  63 25 2c 62 25 29 2b 3d  31 0d 15 04 1a 20 20 e7  |c%,b%)+=1....  .|
00004980  20 69 6e 73 25 28 72 25  2c 63 25 2c 62 25 29 3e  | ins%(r%,c%,b%)>|
00004990  36 20 8c 0d 15 0e 20 20  20 20 69 6e 73 25 28 72  |6 ....    ins%(r|
000049a0  25 2c 63 25 2c 62 25 29  3d 30 3a 69 6e 73 24 3d  |%,c%,b%)=0:ins$=|
000049b0  22 20 22 0d 15 18 1f 20  20 20 cc 20 69 6e 73 24  |" "....   . ins$|
000049c0  3d c3 28 69 6e 73 25 28  72 25 2c 63 25 2c 62 25  |=.(ins%(r%,c%,b%|
000049d0  29 29 0d 15 22 07 20 20  cd 0d 15 2c 30 20 20 f2  |))..".  ...,0  .|
000049e0  70 75 74 5f 69 63 6f 6e  5f 74 65 78 74 28 72 68  |put_icon_text(rh|
000049f0  79 74 68 6d 5f 77 69 6e  64 6f 77 25 28 72 25 29  |ythm_window%(r%)|
00004a00  2c 69 25 2c 69 6e 73 24  29 0d 15 36 06 20 cb 0d  |,i%,ins$)..6. ..|
00004a10  15 40 05 e1 0d 15 4a 05  3a 0d 15 54 12 dd f2 73  |.@....J.:..T...s|
00004a20  74 65 72 65 6f 5f 63 6c  69 63 6b 0d 15 5e 18 ea  |tereo_click..^..|
00004a30  20 63 68 61 6e 6e 65 6c  25 2c 70 6f 73 69 74 69  | channel%,positi|
00004a40  6f 6e 25 0d 15 68 12 c8  8e 20 6d 6f 75 73 65 62  |on%..h... mouseb|
00004a50  75 74 25 20 ca 0d 15 72  22 20 c9 20 73 65 6c 65  |ut% ...r" . sele|
00004a60  63 74 5f 63 6c 69 63 6b  25 2c 61 64 6a 75 73 74  |ct_click%,adjust|
00004a70  5f 63 6c 69 63 6b 25 0d  15 7c 2b 20 20 e7 20 69  |_click%..|+  . i|
00004a80  63 6f 6e 5f 68 61 6e 64  6c 65 25 3c 35 36 20 80  |con_handle%<56 .|
00004a90  20 69 63 6f 6e 5f 68 61  6e 64 6c 65 25 3e 2d 31  | icon_handle%>-1|
00004aa0  20 8c 0d 15 86 2c 20 20  20 63 68 61 6e 6e 65 6c  | ....,   channel|
00004ab0  25 3d 31 2b 69 63 6f 6e  5f 68 61 6e 64 6c 65 25  |%=1+icon_handle%|
00004ac0  83 38 3a e7 63 68 61 6e  6e 65 6c 25 3d 31 0d 15  |.8:.channel%=1..|
00004ad0  90 1f 20 20 20 70 6f 73  69 74 69 6f 6e 25 3d 69  |..   position%=i|
00004ae0  63 6f 6e 5f 68 61 6e 64  6c 65 25 81 38 0d 15 9a  |con_handle%.8...|
00004af0  24 20 20 20 73 74 65 72  65 6f 25 28 63 68 61 6e  |$   stereo%(chan|
00004b00  6e 65 6c 25 29 3d 70 6f  73 69 74 69 6f 6e 25 2d  |nel%)=position%-|
00004b10  33 0d 15 a4 2d 20 20 20  c8 99 32 36 32 34 36 36  |3...-   ..262466|
00004b20  2c 63 68 61 6e 6e 65 6c  25 2c 73 74 65 72 65 6f  |,channel%,stereo|
00004b30  25 28 63 68 61 6e 6e 65  6c 25 29 2a 33 32 0d 15  |%(channel%)*32..|
00004b40  ae 07 20 20 cd 0d 15 b8  2b 20 20 e7 20 6d 6f 75  |..  ....+  . mou|
00004b50  73 65 62 75 74 25 3d 73  65 6c 65 63 74 5f 63 6c  |sebut%=select_cl|
00004b60  69 63 6b 25 20 f2 6d 65  6e 75 5f 63 6c 6f 73 65  |ick% .menu_close|
00004b70  0d 15 c2 06 20 cb 0d 15  cc 05 e1 0d 15 d6 05 3a  |.... ..........:|
00004b80  0d 15 e0 16 dd f2 6d 61  69 6e 5f 6d 65 6e 75 28  |......main_menu(|
00004b90  69 74 65 6d 24 29 0d 15  ea 0e c8 8e 20 69 74 65  |item$)...... ite|
00004ba0  6d 24 20 ca 0d 15 f4 0d  20 c9 20 22 51 75 69 74  |m$ ..... . "Quit|
00004bb0  22 0d 15 fe 0d 20 20 71  75 69 74 25 3d b9 0d 16  |"....  quit%=...|
00004bc0  08 11 20 c9 20 22 4b 65  79 62 6f 61 72 64 22 0d  |.. . "Keyboard".|
00004bd0  16 12 24 20 20 f2 6f 70  65 6e 5f 77 69 6e 64 6f  |..$  .open_windo|
00004be0  77 28 6b 65 79 62 6f 61  72 64 5f 77 69 6e 64 6f  |w(keyboard_windo|
00004bf0  77 25 29 0d 16 1c 1b 20  c9 20 22 43 68 6f 72 64  |w%).... . "Chord|
00004c00  73 20 61 6e 64 20 52 68  79 74 68 6d 73 22 0d 16  |s and Rhythms"..|
00004c10  26 40 20 20 e3 20 73 25  3d 30 20 b8 20 73 65 71  |&@  . s%=0 . seq|
00004c20  75 65 6e 63 65 73 25 2d  31 3a f2 6f 70 65 6e 5f  |uences%-1:.open_|
00004c30  77 69 6e 64 6f 77 28 73  65 71 75 65 6e 63 65 5f  |window(sequence_|
00004c40  77 69 6e 64 6f 77 25 28  73 25 29 29 3a ed 0d 16  |window%(s%)):...|
00004c50  30 3c 20 20 e3 20 72 25  3d 30 20 b8 20 72 68 79  |0<  . r%=0 . rhy|
00004c60  74 68 6d 73 25 2d 31 3a  f2 6f 70 65 6e 5f 77 69  |thms%-1:.open_wi|
00004c70  6e 64 6f 77 28 72 68 79  74 68 6d 5f 77 69 6e 64  |ndow(rhythm_wind|
00004c80  6f 77 25 28 72 25 29 29  3a ed 0d 16 3a 1b 20 c9  |ow%(r%)):...:. .|
00004c90  20 22 55 70 64 61 74 65  20 49 6e 73 74 72 75 6d  | "Update Instrum|
00004ca0  65 6e 74 73 22 0d 16 44  0e 20 20 c8 99 32 36 33  |ents"..D.  ..263|
00004cb0  38 37 32 0d 16 4e 2a 20  20 f2 61 64 64 5f 66 6c  |872..N*  .add_fl|
00004cc0  61 67 73 3a f2 6e 61 6d  65 5f 76 6f 69 63 65 73  |ags:.name_voices|
00004cd0  3a f2 63 6c 65 61 72 5f  66 6c 61 67 73 0d 16 58  |:.clear_flags..X|
00004ce0  0e 20 20 c8 99 32 36 33  38 37 33 0d 16 62 06 20  |.  ..263873..b. |
00004cf0  cb 0d 16 6c 05 e1 0d 16  76 05 3a 0d 16 80 1a dd  |...l....v.:.....|
00004d00  f2 6b 65 79 62 6f 61 72  64 5f 6d 65 6e 75 28 69  |.keyboard_menu(i|
00004d10  74 65 6d 24 29 0d 16 8a  0b ea 20 6c 25 2c 73 25  |tem$)..... l%,s%|
00004d20  0d 16 94 22 6e 75 6d 65  72 69 63 5f 70 61 74 68  |..."numeric_path|
00004d30  24 3d a4 6d 65 6e 75 5f  70 61 74 68 28 62 6c 6b  |$=.menu_path(blk|
00004d40  25 29 0d 16 9e 16 c8 8e  20 6e 75 6d 65 72 69 63  |%)...... numeric|
00004d50  5f 70 61 74 68 24 20 ca  0d 16 a8 38 20 c9 20 22  |_path$ ....8 . "|
00004d60  30 2e 30 22 3a 66 69 6c  65 5f 70 61 74 68 24 3d  |0.0":file_path$=|
00004d70  a4 67 65 74 5f 77 72 69  74 65 6d 28 32 29 3a f2  |.get_writem(2):.|
00004d80  6c 6f 61 64 28 66 69 6c  65 5f 70 61 74 68 24 29  |load(file_path$)|
00004d90  0d 16 b2 0a 20 c9 20 22  32 22 0d 16 bc 32 20 20  |.... . "2"...2  |
00004da0  70 6c 61 79 5f 73 6f 6e  67 25 3d b9 3a 70 6c 61  |play_song%=.:pla|
00004db0  79 5f 73 65 71 75 65 6e  63 65 25 3d b9 3a 70 6c  |y_sequence%=.:pl|
00004dc0  61 79 5f 72 68 79 74 68  6d 25 3d b9 0d 16 c6 40  |ay_rhythm%=....@|
00004dd0  20 20 f2 69 63 6f 6e 5f  62 67 5f 63 6f 6c 6f 75  |  .icon_bg_colou|
00004de0  72 28 73 65 71 75 65 6e  63 65 5f 77 69 6e 64 6f  |r(sequence_windo|
00004df0  77 25 28 5a 25 29 2c 63  68 6f 72 64 5f 69 63 6f  |w%(Z%),chord_ico|
00004e00  6e 25 28 5a 25 2c 43 25  29 2c 30 29 0d 16 d0 39  |n%(Z%,C%),0)...9|
00004e10  20 20 f2 69 63 6f 6e 5f  62 67 5f 63 6f 6c 6f 75  |  .icon_bg_colou|
00004e20  72 28 6b 65 79 62 6f 61  72 64 5f 77 69 6e 64 6f  |r(keyboard_windo|
00004e30  77 25 2c 73 74 72 75 63  74 75 72 65 5f 69 63 6f  |w%,structure_ico|
00004e40  6e 25 2c 30 29 0d 16 da  18 20 20 42 25 3d 31 3a  |n%,0)....  B%=1:|
00004e50  43 25 3d 31 3a 53 25 3d  31 3a d1 3d 30 0d 16 e4  |C%=1:S%=1:.=0...|
00004e60  58 20 20 73 74 72 75 63  74 75 72 65 5f 70 6f 73  |X  structure_pos|
00004e70  24 3d c0 73 74 72 75 63  74 75 72 65 24 2c 53 25  |$=.structure$,S%|
00004e80  2d 31 29 2b 22 28 22 2b  c1 73 74 72 75 63 74 75  |-1)+"("+.structu|
00004e90  72 65 24 2c 53 25 2c 31  29 2b 22 29 22 2b c1 73  |re$,S%,1)+")"+.s|
00004ea0  74 72 75 63 74 75 72 65  24 2c 53 25 2b 31 2c 31  |tructure$,S%+1,1|
00004eb0  39 2d 53 25 29 0d 16 ee  45 20 20 f2 70 75 74 5f  |9-S%)...E  .put_|
00004ec0  69 63 6f 6e 5f 74 65 78  74 28 6b 65 79 62 6f 61  |icon_text(keyboa|
00004ed0  72 64 5f 77 69 6e 64 6f  77 25 2c 73 74 72 75 63  |rd_window%,struc|
00004ee0  74 75 72 65 5f 69 63 6f  6e 25 2c 73 74 72 75 63  |ture_icon%,struc|
00004ef0  74 75 72 65 5f 70 6f 73  24 29 0d 16 f8 20 20 20  |ture_pos$)...   |
00004f00  5a 25 3d 97 28 c1 73 74  72 75 63 74 75 72 65 24  |Z%=.(.structure$|
00004f10  2c 53 25 2c 31 29 29 2d  36 35 0d 17 02 1b 20 20  |,S%,1))-65....  |
00004f20  f2 63 68 6f 72 64 28 63  68 6f 72 64 24 28 5a 25  |.chord(chord$(Z%|
00004f30  2c 43 25 29 29 0d 17 0c  1d 20 20 52 25 3d 97 28  |,C%))....  R%=.(|
00004f40  72 68 79 74 68 6d 24 28  5a 25 2c 43 25 29 29 2d  |rhythm$(Z%,C%))-|
00004f50  39 37 0d 17 16 0a 20 c9  20 22 33 22 0d 17 20 13  |97.... . "3".. .|
00004f60  20 20 e7 20 72 65 70 65  61 74 25 3d a3 20 8c 0d  |  . repeat%=. ..|
00004f70  17 2a 2d 20 20 20 f2 74  69 63 6b 28 32 2c 31 2c  |.*-   .tick(2,1,|
00004f80  b9 29 3a f2 74 69 63 6b  28 34 2c 31 2c b9 29 3a  |.):.tick(4,1,.):|
00004f90  f2 74 69 63 6b 28 35 2c  33 2c b9 29 0d 17 34 10  |.tick(5,3,.)..4.|
00004fa0  20 20 20 72 65 70 65 61  74 25 3d b9 0d 17 3e 2e  |   repeat%=...>.|
00004fb0  20 20 cc 20 f2 74 69 63  6b 28 32 2c 31 2c a3 29  |  . .tick(2,1,.)|
00004fc0  3a f2 74 69 63 6b 28 34  2c 31 2c a3 29 3a f2 74  |:.tick(4,1,.):.t|
00004fd0  69 63 6b 28 35 2c 33 2c  a3 29 0d 17 48 10 20 20  |ick(5,3,.)..H.  |
00004fe0  20 72 65 70 65 61 74 25  3d a3 0d 17 52 07 20 20  | repeat%=...R.  |
00004ff0  cd 0d 17 5c 1d 20 c9 20  22 34 2e 30 22 3a 73 74  |...\. . "4.0":st|
00005000  72 75 63 74 75 72 65 24  3d 69 74 65 6d 24 0d 17  |ructure$=item$..|
00005010  66 58 20 20 73 74 72 75  63 74 75 72 65 5f 70 6f  |fX  structure_po|
00005020  73 24 3d c0 73 74 72 75  63 74 75 72 65 24 2c 53  |s$=.structure$,S|
00005030  25 2d 31 29 2b 22 28 22  2b c1 73 74 72 75 63 74  |%-1)+"("+.struct|
00005040  75 72 65 24 2c 53 25 2c  31 29 2b 22 29 22 2b c1  |ure$,S%,1)+")"+.|
00005050  73 74 72 75 63 74 75 72  65 24 2c 53 25 2b 31 2c  |structure$,S%+1,|
00005060  31 39 2d 53 25 29 0d 17  70 45 20 20 f2 70 75 74  |19-S%)..pE  .put|
00005070  5f 69 63 6f 6e 5f 74 65  78 74 28 6b 65 79 62 6f  |_icon_text(keybo|
00005080  61 72 64 5f 77 69 6e 64  6f 77 25 2c 73 74 72 75  |ard_window%,stru|
00005090  63 74 75 72 65 5f 69 63  6f 6e 25 2c 73 74 72 75  |cture_icon%,stru|
000050a0  63 74 75 72 65 5f 70 6f  73 24 29 0d 17 7a 1c 20  |cture_pos$)..z. |
000050b0  c9 20 22 35 2e 30 22 3a  74 65 6d 70 6f 25 3d bb  |. "5.0":tempo%=.|
000050c0  28 69 74 65 6d 24 29 0d  17 84 38 20 20 f2 70 75  |(item$)...8  .pu|
000050d0  74 5f 69 63 6f 6e 5f 74  65 78 74 28 6b 65 79 62  |t_icon_text(keyb|
000050e0  6f 61 72 64 5f 77 69 6e  64 6f 77 25 2c 74 65 6d  |oard_window%,tem|
000050f0  70 6f 5f 69 63 6f 6e 25  2c 69 74 65 6d 24 29 0d  |po_icon%,item$).|
00005100  17 8e 1d 20 c9 20 22 31  31 2e 30 22 3a 74 72 61  |... . "11.0":tra|
00005110  6e 73 25 3d bb 28 69 74  65 6d 24 29 0d 17 98 38  |ns%=.(item$)...8|
00005120  20 20 f2 70 75 74 5f 69  63 6f 6e 5f 74 65 78 74  |  .put_icon_text|
00005130  28 6b 65 79 62 6f 61 72  64 5f 77 69 6e 64 6f 77  |(keyboard_window|
00005140  25 2c 74 72 61 6e 73 5f  69 63 6f 6e 25 2c 69 74  |%,trans_icon%,it|
00005150  65 6d 24 29 0d 17 a2 06  20 cb 0d 17 ac 1b 6c 25  |em$).... .....l%|
00005160  3d bb 28 c0 6e 75 6d 65  72 69 63 5f 70 61 74 68  |=.(.numeric_path|
00005170  24 2c 31 29 29 0d 17 b6  29 e7 20 6c 25 3e 35 20  |$,1))...). l%>5 |
00005180  80 20 6c 25 3c 39 20 f2  6f 63 74 61 76 65 73 28  |. l%<9 .octaves(|
00005190  6e 75 6d 65 72 69 63 5f  70 61 74 68 24 29 0d 17  |numeric_path$)..|
000051a0  c0 26 e7 20 6c 25 3d 39  20 f2 69 6e 73 74 72 75  |.&. l%=9 .instru|
000051b0  6d 65 6e 74 73 28 6e 75  6d 65 72 69 63 5f 70 61  |ments(numeric_pa|
000051c0  74 68 24 29 0d 17 ca 05  e1 0d 17 d4 05 3a 0d 17  |th$).........:..|
000051d0  de 1a dd f2 73 65 71 75  65 6e 63 65 5f 6d 65 6e  |....sequence_men|
000051e0  75 28 69 74 65 6d 24 29  0d 17 e8 22 6e 75 6d 65  |u(item$)..."nume|
000051f0  72 69 63 5f 70 61 74 68  24 3d a4 6d 65 6e 75 5f  |ric_path$=.menu_|
00005200  70 61 74 68 28 62 6c 6b  25 29 0d 17 f2 16 c8 8e  |path(blk%)......|
00005210  20 6e 75 6d 65 72 69 63  5f 70 61 74 68 24 20 ca  | numeric_path$ .|
00005220  0d 17 fc 0a 20 c9 20 22  30 22 0d 18 06 32 20 20  |.... . "0"...2  |
00005230  70 6c 61 79 5f 73 65 71  75 65 6e 63 65 25 3d b9  |play_sequence%=.|
00005240  3a 70 6c 61 79 5f 72 68  79 74 68 6d 25 3d b9 3a  |:play_rhythm%=.:|
00005250  70 6c 61 79 5f 73 6f 6e  67 25 3d a3 0d 18 10 40  |play_song%=....@|
00005260  20 20 f2 69 63 6f 6e 5f  62 67 5f 63 6f 6c 6f 75  |  .icon_bg_colou|
00005270  72 28 73 65 71 75 65 6e  63 65 5f 77 69 6e 64 6f  |r(sequence_windo|
00005280  77 25 28 5a 25 29 2c 63  68 6f 72 64 5f 69 63 6f  |w%(Z%),chord_ico|
00005290  6e 25 28 5a 25 2c 43 25  29 2c 30 29 0d 18 1a 39  |n%(Z%,C%),0)...9|
000052a0  20 20 f2 69 63 6f 6e 5f  62 67 5f 63 6f 6c 6f 75  |  .icon_bg_colou|
000052b0  72 28 6b 65 79 62 6f 61  72 64 5f 77 69 6e 64 6f  |r(keyboard_windo|
000052c0  77 25 2c 73 74 72 75 63  74 75 72 65 5f 69 63 6f  |w%,structure_ico|
000052d0  6e 25 2c 30 29 0d 18 24  2a 20 20 42 25 3d 31 3a  |n%,0)..$*  B%=1:|
000052e0  43 25 3d 31 3a 53 25 3d  31 3a d1 3d 30 3a 5a 25  |C%=1:S%=1:.=0:Z%|
000052f0  3d 65 64 69 74 5f 73 65  71 75 65 6e 63 65 25 0d  |=edit_sequence%.|
00005300  18 2e 1b 20 20 f2 63 68  6f 72 64 28 63 68 6f 72  |...  .chord(chor|
00005310  64 24 28 5a 25 2c 43 25  29 29 0d 18 38 1d 20 20  |d$(Z%,C%))..8.  |
00005320  52 25 3d 97 28 72 68 79  74 68 6d 24 28 5a 25 2c  |R%=.(rhythm$(Z%,|
00005330  43 25 29 29 2d 39 37 0d  18 42 0a 20 c9 20 22 31  |C%))-97..B. . "1|
00005340  22 0d 18 4c 13 20 20 e7  20 72 65 70 65 61 74 25  |"..L.  . repeat%|
00005350  3d a3 20 8c 0d 18 56 2d  20 20 20 f2 74 69 63 6b  |=. ...V-   .tick|
00005360  28 32 2c 31 2c b9 29 3a  f2 74 69 63 6b 28 34 2c  |(2,1,.):.tick(4,|
00005370  31 2c b9 29 3a f2 74 69  63 6b 28 35 2c 33 2c b9  |1,.):.tick(5,3,.|
00005380  29 0d 18 60 10 20 20 20  72 65 70 65 61 74 25 3d  |)..`.   repeat%=|
00005390  b9 0d 18 6a 2e 20 20 cc  20 f2 74 69 63 6b 28 32  |...j.  . .tick(2|
000053a0  2c 31 2c a3 29 3a f2 74  69 63 6b 28 34 2c 31 2c  |,1,.):.tick(4,1,|
000053b0  a3 29 3a f2 74 69 63 6b  28 35 2c 33 2c a3 29 0d  |.):.tick(5,3,.).|
000053c0  18 74 10 20 20 20 72 65  70 65 61 74 25 3d a3 0d  |.t.   repeat%=..|
000053d0  18 7e 07 20 20 cd 0d 18  88 29 20 c9 20 22 32 22  |.~.  ....) . "2"|
000053e0  3a f2 63 6f 70 79 5f 73  65 71 75 65 6e 63 65 28  |:.copy_sequence(|
000053f0  65 64 69 74 5f 73 65 71  75 65 6e 63 65 25 29 0d  |edit_sequence%).|
00005400  18 92 18 20 c9 20 22 33  22 3a f2 61 64 64 5f 73  |... . "3":.add_s|
00005410  65 71 75 65 6e 63 65 0d  18 9c 2a 20 c9 20 22 34  |equence...* . "4|
00005420  22 3a f2 63 6c 65 61 72  5f 73 65 71 75 65 6e 63  |":.clear_sequenc|
00005430  65 28 65 64 69 74 5f 73  65 71 75 65 6e 63 65 25  |e(edit_sequence%|
00005440  29 0d 18 a6 15 20 c9 20  22 35 2e 30 22 3a 72 24  |).... . "5.0":r$|
00005450  3d 69 74 65 6d 24 0d 18  b0 35 20 20 e7 20 97 28  |=item$...5  . .(|
00005460  72 24 29 3c 36 35 20 84  20 97 28 72 24 29 3e 31  |r$)<65 . .(r$)>1|
00005470  32 32 20 72 24 3d 22 61  22 3a f2 70 75 74 5f 77  |22 r$="a":.put_w|
00005480  72 69 74 65 6d 28 31 2c  72 24 29 0d 18 ba 31 20  |ritem(1,r$)...1 |
00005490  20 e7 20 97 28 72 24 29  3c 39 37 20 72 24 3d bd  | . .(r$)<97 r$=.|
000054a0  28 97 28 72 24 29 2b 33  32 29 3a f2 70 75 74 5f  |(.(r$)+32):.put_|
000054b0  77 72 69 74 65 6d 28 31  2c 72 24 29 0d 18 c4 27  |writem(1,r$)...'|
000054c0  20 20 f2 67 6c 6f 62 61  6c 5f 72 68 79 74 68 6d  |  .global_rhythm|
000054d0  28 72 24 2c 65 64 69 74  5f 73 65 71 75 65 6e 63  |(r$,edit_sequenc|
000054e0  65 25 29 0d 18 ce 06 20  cb 0d 18 d8 05 e1 0d 18  |e%).... ........|
000054f0  e2 05 3a 0d 18 ec 18 dd  f2 72 68 79 74 68 6d 5f  |..:......rhythm_|
00005500  6d 65 6e 75 28 69 74 65  6d 24 29 0d 18 f6 22 6e  |menu(item$)..."n|
00005510  75 6d 65 72 69 63 5f 70  61 74 68 24 3d a4 6d 65  |umeric_path$=.me|
00005520  6e 75 5f 70 61 74 68 28  62 6c 6b 25 29 0d 19 00  |nu_path(blk%)...|
00005530  16 c8 8e 20 6e 75 6d 65  72 69 63 5f 70 61 74 68  |... numeric_path|
00005540  24 20 ca 0d 19 0a 0a 20  c9 20 22 30 22 0d 19 14  |$ ..... . "0"...|
00005550  32 20 20 70 6c 61 79 5f  72 68 79 74 68 6d 25 3d  |2  play_rhythm%=|
00005560  b9 3a 70 6c 61 79 5f 73  65 71 75 65 6e 63 65 25  |.:play_sequence%|
00005570  3d a3 3a 70 6c 61 79 5f  73 6f 6e 67 25 3d a3 0d  |=.:play_song%=..|
00005580  19 1e 40 20 20 f2 69 63  6f 6e 5f 62 67 5f 63 6f  |..@  .icon_bg_co|
00005590  6c 6f 75 72 28 73 65 71  75 65 6e 63 65 5f 77 69  |lour(sequence_wi|
000055a0  6e 64 6f 77 25 28 5a 25  29 2c 63 68 6f 72 64 5f  |ndow%(Z%),chord_|
000055b0  69 63 6f 6e 25 28 5a 25  2c 43 25 29 2c 30 29 0d  |icon%(Z%,C%),0).|
000055c0  19 28 39 20 20 f2 69 63  6f 6e 5f 62 67 5f 63 6f  |.(9  .icon_bg_co|
000055d0  6c 6f 75 72 28 6b 65 79  62 6f 61 72 64 5f 77 69  |lour(keyboard_wi|
000055e0  6e 64 6f 77 25 2c 73 74  72 75 63 74 75 72 65 5f  |ndow%,structure_|
000055f0  69 63 6f 6e 25 2c 30 29  0d 19 32 39 20 20 42 25  |icon%,0)..29  B%|
00005600  3d 31 3a 43 25 3d 31 3a  53 25 3d 31 3a 5a 25 3d  |=1:C%=1:S%=1:Z%=|
00005610  30 3a d1 3d 30 3a f2 63  68 6f 72 64 28 22 43 22  |0:.=0:.chord("C"|
00005620  29 3a 52 25 3d 65 64 69  74 5f 72 68 79 74 68 6d  |):R%=edit_rhythm|
00005630  25 0d 19 3c 0a 20 c9 20  22 31 22 0d 19 46 13 20  |%..<. . "1"..F. |
00005640  20 e7 20 72 65 70 65 61  74 25 3d a3 20 8c 0d 19  | . repeat%=. ...|
00005650  50 37 20 20 20 f2 74 69  63 6b 28 32 2c 31 2c b9  |P7   .tick(2,1,.|
00005660  29 3a f2 74 69 63 6b 28  34 2c 31 2c b9 29 3a f2  |):.tick(4,1,.):.|
00005670  74 69 63 6b 28 35 2c 33  2c b9 29 3a 72 65 70 65  |tick(5,3,.):repe|
00005680  61 74 25 3d b9 0d 19 5a  2e 20 20 cc 20 f2 74 69  |at%=...Z.  . .ti|
00005690  63 6b 28 32 2c 31 2c a3  29 3a f2 74 69 63 6b 28  |ck(2,1,.):.tick(|
000056a0  34 2c 31 2c a3 29 3a f2  74 69 63 6b 28 35 2c 33  |4,1,.):.tick(5,3|
000056b0  2c a3 29 0d 19 64 10 20  20 20 72 65 70 65 61 74  |,.)..d.   repeat|
000056c0  25 3d a3 0d 19 6e 07 20  20 cd 0d 19 78 25 20 c9  |%=...n.  ...x% .|
000056d0  20 22 32 22 3a f2 63 6f  70 79 5f 72 68 79 74 68  | "2":.copy_rhyth|
000056e0  6d 28 65 64 69 74 5f 72  68 79 74 68 6d 25 29 0d  |m(edit_rhythm%).|
000056f0  19 82 16 20 c9 20 22 33  22 3a f2 61 64 64 5f 72  |... . "3":.add_r|
00005700  68 79 74 68 6d 0d 19 8c  26 20 c9 20 22 34 22 3a  |hythm...& . "4":|
00005710  f2 63 6c 65 61 72 5f 72  68 79 74 68 6d 28 65 64  |.clear_rhythm(ed|
00005720  69 74 5f 72 68 79 74 68  6d 25 29 0d 19 96 3b 20  |it_rhythm%)...; |
00005730  c9 20 22 35 2e 30 22 3a  6e 25 3d bb 28 69 74 65  |. "5.0":n%=.(ite|
00005740  6d 24 29 3a e7 20 6e 25  3e 31 36 20 6e 25 3d 31  |m$):. n%>16 n%=1|
00005750  36 3a f2 70 75 74 5f 77  72 69 74 65 6d 28 35 2c  |6:.put_writem(5,|
00005760  c3 28 6e 25 29 29 0d 19  a0 37 20 20 6e 6f 62 65  |.(n%))...7  nobe|
00005770  61 74 73 25 28 65 64 69  74 5f 72 68 79 74 68 6d  |ats%(edit_rhythm|
00005780  25 29 3d 6e 25 3a f2 6e  6f 5f 62 65 61 74 73 28  |%)=n%:.no_beats(|
00005790  65 64 69 74 5f 72 68 79  74 68 6d 25 29 0d 19 aa  |edit_rhythm%)...|
000057a0  30 20 c9 20 22 36 2e 30  22 3a 63 76 6f 6c 25 3d  |0 . "6.0":cvol%=|
000057b0  31 3a f2 74 69 63 6b 28  32 30 2c 30 2c b9 29 3a  |1:.tick(20,0,.):|
000057c0  f2 74 69 63 6b 28 32 30  2c 31 2c a3 29 0d 19 b4  |.tick(20,1,.)...|
000057d0  30 20 c9 20 22 36 2e 31  22 3a 63 76 6f 6c 25 3d  |0 . "6.1":cvol%=|
000057e0  32 3a f2 74 69 63 6b 28  32 30 2c 30 2c a3 29 3a  |2:.tick(20,0,.):|
000057f0  f2 74 69 63 6b 28 32 30  2c 31 2c b9 29 0d 19 be  |.tick(20,1,.)...|
00005800  30 20 c9 20 22 37 2e 30  22 3a 62 76 6f 6c 25 3d  |0 . "7.0":bvol%=|
00005810  31 3a f2 74 69 63 6b 28  32 31 2c 30 2c b9 29 3a  |1:.tick(21,0,.):|
00005820  f2 74 69 63 6b 28 32 31  2c 31 2c a3 29 0d 19 c8  |.tick(21,1,.)...|
00005830  30 20 c9 20 22 37 2e 31  22 3a 62 76 6f 6c 25 3d  |0 . "7.1":bvol%=|
00005840  32 3a f2 74 69 63 6b 28  32 31 2c 30 2c a3 29 3a  |2:.tick(21,0,.):|
00005850  f2 74 69 63 6b 28 32 31  2c 31 2c b9 29 0d 19 d2  |.tick(21,1,.)...|
00005860  31 20 c9 20 22 38 2e 30  22 3a 66 78 76 6f 6c 25  |1 . "8.0":fxvol%|
00005870  3d 31 3a f2 74 69 63 6b  28 32 32 2c 30 2c b9 29  |=1:.tick(22,0,.)|
00005880  3a f2 74 69 63 6b 28 32  32 2c 31 2c a3 29 0d 19  |:.tick(22,1,.)..|
00005890  dc 31 20 c9 20 22 38 2e  31 22 3a 66 78 76 6f 6c  |.1 . "8.1":fxvol|
000058a0  25 3d 32 3a f2 74 69 63  6b 28 32 32 2c 30 2c a3  |%=2:.tick(22,0,.|
000058b0  29 3a f2 74 69 63 6b 28  32 32 2c 31 2c b9 29 0d  |):.tick(22,1,.).|
000058c0  19 e6 28 20 c9 20 22 39  2e 30 22 3a 66 69 6c 65  |..( . "9.0":file|
000058d0  5f 70 61 74 68 24 3d a4  67 65 74 5f 77 72 69 74  |_path$=.get_writ|
000058e0  65 6d 28 31 33 35 29 0d  19 f0 4b 20 20 e7 20 a7  |em(135)...K  . .|
000058f0  66 69 6c 65 5f 70 61 74  68 24 2c 22 2e 22 29 3d  |file_path$,".")=|
00005900  30 20 66 69 6c 65 5f 70  61 74 68 24 3d 61 70 70  |0 file_path$=app|
00005910  5f 64 69 72 65 63 74 6f  72 79 24 2b 22 2e 72 68  |_directory$+".rh|
00005920  79 74 68 6d 73 2e 22 2b  66 69 6c 65 5f 70 61 74  |ythms."+file_pat|
00005930  68 24 0d 19 fa 1e 20 20  f2 6c 6f 61 64 5f 72 68  |h$....  .load_rh|
00005940  79 74 68 6d 28 66 69 6c  65 5f 70 61 74 68 24 29  |ythm(file_path$)|
00005950  0d 1a 04 06 20 cb 0d 1a  0e 05 e1 0d 1a 18 05 3a  |.... ..........:|
00005960  0d 1a 22 27 dd f2 73 61  76 65 5f 6b 65 79 5f 70  |.."'..save_key_p|
00005970  72 65 73 73 28 6b 65 79  25 2c 69 63 6f 6e 5f 68  |ress(key%,icon_h|
00005980  61 6e 64 6c 65 25 29 0d  1a 2c 1b ea 20 66 69 6c  |andle%)..,.. fil|
00005990  65 5f 6e 61 6d 65 24 2c  66 69 6c 65 5f 74 79 70  |e_name$,file_typ|
000059a0  65 25 0d 1a 36 0d c8 8e  20 6b 65 79 25 20 ca 0d  |e%..6... key% ..|
000059b0  1a 40 09 20 c9 20 31 33  0d 1a 4a 31 20 20 66 69  |.@. . 13..J1  fi|
000059c0  6c 65 5f 6e 61 6d 65 24  3d a4 67 65 74 5f 69 63  |le_name$=.get_ic|
000059d0  6f 6e 5f 74 65 78 74 28  73 61 76 65 25 2c 6e 61  |on_text(save%,na|
000059e0  6d 65 5f 69 63 6f 6e 25  29 0d 1a 54 34 20 20 66  |me_icon%)..T4  f|
000059f0  69 6c 65 5f 74 79 70 65  25 3d a4 69 63 6f 6e 5f  |ile_type%=.icon_|
00005a00  73 70 72 69 74 65 5f 74  79 70 65 28 73 61 76 65  |sprite_type(save|
00005a10  25 2c 66 69 6c 65 5f 69  63 6f 6e 25 29 0d 1a 5e  |%,file_icon%)..^|
00005a20  1a 20 20 e7 20 a7 66 69  6c 65 5f 6e 61 6d 65 24  |.  . .file_name$|
00005a30  2c 22 2e 22 29 20 8c 0d  1a 68 1f 20 20 20 24 28  |,".") ...h.   $(|
00005a40  62 6c 6b 25 2b 34 34 29  3d 66 69 6c 65 5f 6e 61  |blk%+44)=file_na|
00005a50  6d 65 24 2b bd 30 0d 1a  72 24 20 20 20 f2 73 61  |me$+.0..r$   .sa|
00005a60  76 65 28 66 69 6c 65 5f  6e 61 6d 65 24 29 3a f2  |ve(file_name$):.|
00005a70  6d 65 6e 75 5f 63 6c 6f  73 65 0d 1a 7c 07 20 20  |menu_close..|.  |
00005a80  cc 0d 1a 86 38 20 20 20  24 28 62 6c 6b 25 2b 34  |....8   $(blk%+4|
00005a90  34 29 3d 61 70 70 5f 64  69 72 65 63 74 6f 72 79  |4)=app_directory|
00005aa0  24 2b 22 2e 73 6f 6e 67  73 2e 22 2b 66 69 6c 65  |$+".songs."+file|
00005ab0  5f 6e 61 6d 65 24 2b bd  30 0d 1a 90 31 20 20 20  |_name$+.0...1   |
00005ac0  f2 73 61 76 65 28 61 70  70 5f 64 69 72 65 63 74  |.save(app_direct|
00005ad0  6f 72 79 24 2b 22 2e 73  6f 6e 67 73 2e 22 2b 66  |ory$+".songs."+f|
00005ae0  69 6c 65 5f 6e 61 6d 65  24 29 0d 1a 9a 07 20 20  |ile_name$)....  |
00005af0  cd 0d 1a a4 06 20 cb 0d  1a ae 05 e1 0d 1a b8 05  |..... ..........|
00005b00  3a 0d 1a c2 2e dd f2 73  61 76 65 5f 72 68 79 74  |:......save_rhyt|
00005b10  68 6d 5f 6b 65 79 5f 70  72 65 73 73 28 6b 65 79  |hm_key_press(key|
00005b20  25 2c 69 63 6f 6e 5f 68  61 6e 64 6c 65 25 29 0d  |%,icon_handle%).|
00005b30  1a cc 1b ea 20 66 69 6c  65 5f 6e 61 6d 65 24 2c  |.... file_name$,|
00005b40  66 69 6c 65 5f 74 79 70  65 25 0d 1a d6 0d c8 8e  |file_type%......|
00005b50  20 6b 65 79 25 20 ca 0d  1a e0 09 20 c9 20 31 33  | key% ..... . 13|
00005b60  0d 1a ea 3d 20 20 66 69  6c 65 5f 6e 61 6d 65 24  |...=  file_name$|
00005b70  3d a4 67 65 74 5f 69 63  6f 6e 5f 74 65 78 74 28  |=.get_icon_text(|
00005b80  73 61 76 65 5f 72 74 68  6d 25 2c 72 68 79 74 68  |save_rthm%,rhyth|
00005b90  6d 5f 6e 61 6d 65 5f 69  63 6f 6e 25 29 0d 1a f4  |m_name_icon%)...|
00005ba0  40 20 20 66 69 6c 65 5f  74 79 70 65 25 3d a4 69  |@  file_type%=.i|
00005bb0  63 6f 6e 5f 73 70 72 69  74 65 5f 74 79 70 65 28  |con_sprite_type(|
00005bc0  73 61 76 65 5f 72 74 68  6d 25 2c 72 68 79 74 68  |save_rthm%,rhyth|
00005bd0  6d 5f 66 69 6c 65 5f 69  63 6f 6e 25 29 0d 1a fe  |m_file_icon%)...|
00005be0  1a 20 20 e7 20 a7 66 69  6c 65 5f 6e 61 6d 65 24  |.  . .file_name$|
00005bf0  2c 22 2e 22 29 20 8c 0d  1b 08 44 20 20 20 24 28  |,".") ....D   $(|
00005c00  62 6c 6b 25 2b 34 34 29  3d 66 69 6c 65 5f 6e 61  |blk%+44)=file_na|
00005c10  6d 65 24 2b bd 30 3a f2  73 61 76 65 5f 72 68 79  |me$+.0:.save_rhy|
00005c20  74 68 6d 28 66 69 6c 65  5f 6e 61 6d 65 24 29 3a  |thm(file_name$):|
00005c30  f2 6d 65 6e 75 5f 63 6c  6f 73 65 0d 1b 12 07 20  |.menu_close.... |
00005c40  20 cc 0d 1b 1c 3a 20 20  20 24 28 62 6c 6b 25 2b  | ....:   $(blk%+|
00005c50  34 34 29 3d 61 70 70 5f  64 69 72 65 63 74 6f 72  |44)=app_director|
00005c60  79 24 2b 22 2e 72 68 79  74 68 6d 73 2e 22 2b 66  |y$+".rhythms."+f|
00005c70  69 6c 65 5f 6e 61 6d 65  24 2b bd 30 0d 1b 26 3a  |ile_name$+.0..&:|
00005c80  20 20 20 f2 73 61 76 65  5f 72 68 79 74 68 6d 28  |   .save_rhythm(|
00005c90  61 70 70 5f 64 69 72 65  63 74 6f 72 79 24 2b 22  |app_directory$+"|
00005ca0  2e 72 68 79 74 68 6d 73  2e 22 2b 66 69 6c 65 5f  |.rhythms."+file_|
00005cb0  6e 61 6d 65 24 29 0d 1b  30 07 20 20 cd 0d 1b 3a  |name$)..0.  ...:|
00005cc0  06 20 cb 0d 1b 44 05 e1  0d 1b 4e 05 3a 0d 1b 58  |. ...D....N.:..X|
00005cd0  2f dd f2 63 68 6f 72 64  5f 6b 65 79 5f 70 72 65  |/..chord_key_pre|
00005ce0  73 73 28 77 69 6e 64 6f  77 25 2c 69 63 6f 6e 25  |ss(window%,icon%|
00005cf0  2c 73 25 2c 63 25 2c 6b  65 79 25 29 0d 1b 62 0d  |,s%,c%,key%)..b.|
00005d00  c8 8e 20 6b 65 79 25 20  ca 0d 1b 6c 2b 20 c9 20  |.. key% ...l+ . |
00005d10  31 33 3a f2 65 6e 74 65  72 5f 63 68 6f 72 64 28  |13:.enter_chord(|
00005d20  77 69 6e 64 6f 77 25 2c  69 63 6f 6e 25 2c 73 25  |window%,icon%,s%|
00005d30  2c 63 25 29 0d 1b 76 2c  20 c9 20 26 34 3a f2 64  |,c%)..v, . &4:.d|
00005d40  65 6c 65 74 65 5f 63 68  6f 72 64 28 77 69 6e 64  |elete_chord(wind|
00005d50  6f 77 25 2c 69 63 6f 6e  25 2c 73 25 2c 63 25 29  |ow%,icon%,s%,c%)|
00005d60  0d 1b 80 2c 20 c9 20 26  39 3a f2 69 6e 73 65 72  |..., . &9:.inser|
00005d70  74 5f 63 68 6f 72 64 28  77 69 6e 64 6f 77 25 2c  |t_chord(window%,|
00005d80  69 63 6f 6e 25 2c 73 25  2c 63 25 29 0d 1b 8a 05  |icon%,s%,c%)....|
00005d90  cb 0d 1b 94 05 e1 0d 1b  9e 05 3a 0d 1b a8 30 dd  |..........:...0.|
00005da0  f2 72 68 79 74 68 6d 5f  6b 65 79 5f 70 72 65 73  |.rhythm_key_pres|
00005db0  73 28 77 69 6e 64 6f 77  25 2c 69 63 6f 6e 25 2c  |s(window%,icon%,|
00005dc0  73 25 2c 70 25 2c 6b 65  79 25 29 0d 1b b2 0d c8  |s%,p%,key%).....|
00005dd0  8e 20 6b 65 79 25 20 ca  0d 1b bc 09 20 c9 20 31  |. key% ..... . 1|
00005de0  33 0d 1b c6 32 20 20 72  68 79 74 68 6d 24 28 73  |3...2  rhythm$(s|
00005df0  25 2c 70 25 29 3d a4 67  65 74 5f 69 63 6f 6e 5f  |%,p%)=.get_icon_|
00005e00  74 65 78 74 28 77 69 6e  64 6f 77 25 2c 69 63 6f  |text(window%,ico|
00005e10  6e 25 29 0d 1b d0 45 20  20 e7 20 70 25 3c 73 65  |n%)...E  . p%<se|
00005e20  71 75 6c 65 6e 25 28 73  25 29 20 f2 70 6c 61 63  |qulen%(s%) .plac|
00005e30  65 5f 63 61 72 65 74 28  77 69 6e 64 6f 77 25 2c  |e_caret(window%,|
00005e40  72 68 79 74 68 6d 5f 69  63 6f 6e 25 28 73 25 2c  |rhythm_icon%(s%,|
00005e50  70 25 2b 31 29 2c 31 29  0d 1b da 06 20 cb 0d 1b  |p%+1),1).... ...|
00005e60  e4 05 e1 0d 1b ee 05 3a  0d 1b f8 12 dd f2 73 61  |.......:......sa|
00005e70  76 65 5f 72 65 71 75 65  73 74 0d 1c 02 24 ea 20  |ve_request...$. |
00005e80  74 6f 5f 77 69 6e 64 6f  77 25 2c 74 6f 5f 69 63  |to_window%,to_ic|
00005e90  6f 6e 25 2c 64 61 74 61  5f 74 79 70 65 25 0d 1c  |on%,data_type%..|
00005ea0  0c 3a 74 6f 5f 77 69 6e  64 6f 77 25 3d 62 6c 6b  |.:to_window%=blk|
00005eb0  25 21 32 30 3a 74 6f 5f  69 63 6f 6e 25 3d 62 6c  |%!20:to_icon%=bl|
00005ec0  6b 25 21 32 34 3a 64 61  74 61 5f 74 79 70 65 25  |k%!24:data_type%|
00005ed0  3d 62 6c 6b 25 21 34 30  0d 1c 16 13 c8 8e 20 64  |=blk%!40...... d|
00005ee0  61 74 61 5f 74 79 70 65  25 20 ca 0d 1c 20 0b 20  |ata_type% ... . |
00005ef0  c9 20 26 30 30 41 0d 1c  2a 29 20 20 66 69 6c 65  |. &00A..*)  file|
00005f00  5f 6e 61 6d 65 24 3d a4  67 65 74 5f 73 74 72 69  |_name$=.get_stri|
00005f10  6e 67 28 62 6c 6b 25 2b  34 34 2c 32 35 35 29 0d  |ng(blk%+44,255).|
00005f20  1c 34 36 20 20 62 6c 6b  25 21 31 32 3d 62 6c 6b  |.46  blk%!12=blk|
00005f30  25 21 38 3a 62 6c 6b 25  21 31 36 3d 34 3a c8 99  |%!8:blk%!16=4:..|
00005f40  32 36 32 33 37 35 2c 31  37 2c 62 6c 6b 25 2c 62  |262375,17,blk%,b|
00005f50  6c 6b 25 21 34 0d 1c 3e  17 20 20 f2 6c 6f 61 64  |lk%!4..>.  .load|
00005f60  28 66 69 6c 65 5f 6e 61  6d 65 24 29 0d 1c 48 0b  |(file_name$)..H.|
00005f70  20 c9 20 26 30 30 42 0d  1c 52 29 20 20 66 69 6c  | . &00B..R)  fil|
00005f80  65 5f 6e 61 6d 65 24 3d  a4 67 65 74 5f 73 74 72  |e_name$=.get_str|
00005f90  69 6e 67 28 62 6c 6b 25  2b 34 34 2c 32 35 35 29  |ing(blk%+44,255)|
00005fa0  0d 1c 5c 36 20 20 62 6c  6b 25 21 31 32 3d 62 6c  |..\6  blk%!12=bl|
00005fb0  6b 25 21 38 3a 62 6c 6b  25 21 31 36 3d 34 3a c8  |k%!8:blk%!16=4:.|
00005fc0  99 32 36 32 33 37 35 2c  31 37 2c 62 6c 6b 25 2c  |.262375,17,blk%,|
00005fd0  62 6c 6b 25 21 34 0d 1c  66 1e 20 20 f2 6c 6f 61  |blk%!4..f.  .loa|
00005fe0  64 5f 72 68 79 74 68 6d  28 66 69 6c 65 5f 6e 61  |d_rhythm(file_na|
00005ff0  6d 65 24 29 0d 1c 70 06  20 cb 0d 1c 7a 05 e1 0d  |me$)..p. ...z...|
00006000  1c 84 05 3a 0d 1c 8e 12  dd f2 6c 6f 61 64 5f 72  |...:......load_r|
00006010  65 71 75 65 73 74 0d 1c  98 1b ea 20 66 69 6c 65  |equest..... file|
00006020  5f 74 79 70 65 25 2c 66  69 6c 65 5f 6e 61 6d 65  |_type%,file_name|
00006030  24 0d 1c a2 16 66 69 6c  65 5f 74 79 70 65 25 3d  |$....file_type%=|
00006040  62 6c 6b 25 21 34 30 0d  1c ac 13 c8 8e 20 66 69  |blk%!40...... fi|
00006050  6c 65 5f 74 79 70 65 25  20 ca 0d 1c b6 41 20 c9  |le_type% ....A .|
00006060  20 26 30 30 41 3a 66 69  6c 65 5f 6e 61 6d 65 24  | &00A:file_name$|
00006070  3d a4 67 65 74 5f 73 74  72 69 6e 67 28 62 6c 6b  |=.get_string(blk|
00006080  25 2b 34 34 2c 32 35 35  29 3a f2 6c 6f 61 64 28  |%+44,255):.load(|
00006090  66 69 6c 65 5f 6e 61 6d  65 24 29 0d 1c c0 48 20  |file_name$)...H |
000060a0  c9 20 26 30 30 42 3a 66  69 6c 65 5f 6e 61 6d 65  |. &00B:file_name|
000060b0  24 3d a4 67 65 74 5f 73  74 72 69 6e 67 28 62 6c  |$=.get_string(bl|
000060c0  6b 25 2b 34 34 2c 32 35  35 29 3a f2 6c 6f 61 64  |k%+44,255):.load|
000060d0  5f 72 68 79 74 68 6d 28  66 69 6c 65 5f 6e 61 6d  |_rhythm(file_nam|
000060e0  65 24 29 0d 1c ca 06 20  cb 0d 1c d4 05 e1 0d 1c  |e$).... ........|
000060f0  de 05 3a 0d 1c e8 11 dd  f2 73 61 76 65 5f 64 65  |..:......save_de|
00006100  6d 61 6e 64 0d 1c f2 1b  ea 20 66 69 6c 65 5f 6e  |mand..... file_n|
00006110  61 6d 65 24 2c 66 69 6c  65 5f 74 79 70 65 25 0d  |ame$,file_type%.|
00006120  1c fc 27 66 69 6c 65 5f  6e 61 6d 65 24 3d a4 67  |..'file_name$=.g|
00006130  65 74 5f 73 74 72 69 6e  67 28 62 6c 6b 25 2b 34  |et_string(blk%+4|
00006140  34 2c 32 35 35 29 0d 1d  06 2c e7 20 62 6c 6b 25  |4,255)...,. blk%|
00006150  21 33 36 3d 2d 31 20 8c  20 74 6f 5f 66 69 6c 65  |!36=-1 . to_file|
00006160  72 25 3d a3 20 8b 20 74  6f 5f 66 69 6c 65 72 25  |r%=. . to_filer%|
00006170  3d b9 0d 1d 10 16 66 69  6c 65 5f 74 79 70 65 25  |=.....file_type%|
00006180  3d 62 6c 6b 25 21 34 30  0d 1d 1a 15 c8 8e 20 64  |=blk%!40...... d|
00006190  72 61 67 5f 77 69 6e 64  6f 77 25 20 ca 0d 1d 24  |rag_window% ...$|
000061a0  32 20 c9 20 73 61 76 65  25 3a f2 73 61 76 65 28  |2 . save%:.save(|
000061b0  66 69 6c 65 5f 6e 61 6d  65 24 29 3a f2 6d 65 73  |file_name$):.mes|
000061c0  73 61 67 65 5f 73 61 76  65 5f 72 65 70 6c 79 0d  |sage_save_reply.|
000061d0  1d 2e 34 20 20 e7 20 74  6f 5f 66 69 6c 65 72 25  |..4  . to_filer%|
000061e0  20 f2 70 75 74 5f 69 63  6f 6e 5f 74 65 78 74 28  | .put_icon_text(|
000061f0  73 61 76 65 25 2c 31 2c  66 69 6c 65 5f 6e 61 6d  |save%,1,file_nam|
00006200  65 24 29 0d 1d 38 3e 20  c9 20 73 61 76 65 5f 72  |e$)..8> . save_r|
00006210  74 68 6d 25 3a f2 73 61  76 65 5f 72 68 79 74 68  |thm%:.save_rhyth|
00006220  6d 28 66 69 6c 65 5f 6e  61 6d 65 24 29 3a f2 6d  |m(file_name$):.m|
00006230  65 73 73 61 67 65 5f 73  61 76 65 5f 72 65 70 6c  |essage_save_repl|
00006240  79 0d 1d 42 39 20 20 e7  20 74 6f 5f 66 69 6c 65  |y..B9  . to_file|
00006250  72 25 20 f2 70 75 74 5f  69 63 6f 6e 5f 74 65 78  |r% .put_icon_tex|
00006260  74 28 73 61 76 65 5f 72  74 68 6d 25 2c 31 2c 66  |t(save_rthm%,1,f|
00006270  69 6c 65 5f 6e 61 6d 65  24 29 0d 1d 4c 06 20 cb  |ile_name$)..L. .|
00006280  0d 1d 56 0f f2 6d 65 6e  75 5f 63 6c 6f 73 65 0d  |..V..menu_close.|
00006290  1d 60 05 e1 0d 1d 6a 05  3a 0d 1d 74 12 dd f2 64  |.`....j.:..t...d|
000062a0  6f 75 62 6c 65 5f 63 6c  69 63 6b 0d 1d 7e 16 ea  |ouble_click..~..|
000062b0  20 66 69 6c 65 5f 74 79  70 65 25 2c 66 69 6c 65  | file_type%,file|
000062c0  24 0d 1d 88 16 66 69 6c  65 5f 74 79 70 65 25 3d  |$....file_type%=|
000062d0  62 6c 6b 25 21 34 30 0d  1d 92 13 c8 8e 20 66 69  |blk%!40...... fi|
000062e0  6c 65 5f 74 79 70 65 25  20 ca 0d 1d 9c 2f 20 c9  |le_type% ..../ .|
000062f0  20 26 30 30 41 3a 66 69  6c 65 5f 6e 61 6d 65 24  | &00A:file_name$|
00006300  3d a4 67 65 74 5f 73 74  72 69 6e 67 28 62 6c 6b  |=.get_string(blk|
00006310  25 2b 34 34 2c 32 35 35  29 0d 1d a6 36 20 20 62  |%+44,255)...6  b|
00006320  6c 6b 25 21 31 32 3d 62  6c 6b 25 21 38 3a 62 6c  |lk%!12=blk%!8:bl|
00006330  6b 25 21 31 36 3d 34 3a  c8 99 32 36 32 33 37 35  |k%!16=4:..262375|
00006340  2c 31 37 2c 62 6c 6b 25  2c 62 6c 6b 25 21 34 0d  |,17,blk%,blk%!4.|
00006350  1d b0 17 20 20 f2 6c 6f  61 64 28 66 69 6c 65 5f  |...  .load(file_|
00006360  6e 61 6d 65 24 29 0d 1d  ba 2f 20 c9 20 26 30 30  |name$).../ . &00|
00006370  42 3a 66 69 6c 65 5f 6e  61 6d 65 24 3d a4 67 65  |B:file_name$=.ge|
00006380  74 5f 73 74 72 69 6e 67  28 62 6c 6b 25 2b 34 34  |t_string(blk%+44|
00006390  2c 32 35 35 29 0d 1d c4  36 20 20 62 6c 6b 25 21  |,255)...6  blk%!|
000063a0  31 32 3d 62 6c 6b 25 21  38 3a 62 6c 6b 25 21 31  |12=blk%!8:blk%!1|
000063b0  36 3d 34 3a c8 99 32 36  32 33 37 35 2c 31 37 2c  |6=4:..262375,17,|
000063c0  62 6c 6b 25 2c 62 6c 6b  25 21 34 0d 1d ce 1e 20  |blk%,blk%!4.... |
000063d0  20 f2 6c 6f 61 64 5f 72  68 79 74 68 6d 28 66 69  | .load_rhythm(fi|
000063e0  6c 65 5f 6e 61 6d 65 24  29 0d 1d d8 06 20 cb 0d  |le_name$).... ..|
000063f0  1d e2 05 e1 0d 1d ec 05  3a 0d 1d f6 10 dd f2 6c  |........:......l|
00006400  6f 61 64 5f 63 68 65 63  6b 0d 1e 00 1f 66 69 6c  |oad_check....fil|
00006410  65 5f 74 6f 5f 6c 6f 61  64 24 3d a4 63 6f 6d 6d  |e_to_load$=.comm|
00006420  61 6e 64 5f 6c 69 6e 65  0d 1e 0a 19 e7 20 66 69  |and_line..... fi|
00006430  6c 65 5f 74 6f 5f 6c 6f  61 64 24 3c 3e 22 22 20  |le_to_load$<>"" |
00006440  8c 0d 1e 14 23 20 c8 8e  20 a4 66 69 6c 65 5f 74  |....# .. .file_t|
00006450  79 70 65 28 66 69 6c 65  5f 74 6f 5f 6c 6f 61 64  |ype(file_to_load|
00006460  24 29 20 ca 0d 1e 1e 21  20 20 c9 20 26 30 30 41  |$) ....!  . &00A|
00006470  3a f2 6c 6f 61 64 28 66  69 6c 65 5f 74 6f 5f 6c  |:.load(file_to_l|
00006480  6f 61 64 24 29 0d 1e 28  28 20 20 c9 20 26 30 30  |oad$)..((  . &00|
00006490  42 3a f2 6c 6f 61 64 5f  72 68 79 74 68 6d 28 66  |B:.load_rhythm(f|
000064a0  69 6c 65 5f 74 6f 5f 6c  6f 61 64 24 29 0d 1e 32  |ile_to_load$)..2|
000064b0  06 20 cb 0d 1e 3c 05 cd  0d 1e 46 05 e1 0d 1e 50  |. ...<....F....P|
000064c0  05 3a 0d 1e 5a 11 dd f2  73 61 76 65 28 66 69 6c  |.:..Z...save(fil|
000064d0  65 24 29 0d 1e 64 0c c8  99 32 36 33 38 37 32 0d  |e$)..d...263872.|
000064e0  1e 6e 14 ea 20 73 25 2c  63 25 2c 72 25 2c 62 25  |.n.. s%,c%,r%,b%|
000064f0  2c 76 25 0d 1e 78 0f 46  25 3d ae 28 66 69 6c 65  |,v%..x.F%=.(file|
00006500  24 29 0d 1e 82 2e f1 23  46 25 2c 74 65 6d 70 6f  |$).....#F%,tempo|
00006510  25 2c 73 65 71 75 65 6e  63 65 73 25 2c 72 68 79  |%,sequences%,rhy|
00006520  74 68 6d 73 25 2c 73 74  72 75 63 74 75 72 65 24  |thms%,structure$|
00006530  0d 1e 8c 41 e3 20 73 25  3d 30 20 b8 20 73 65 71  |...A. s%=0 . seq|
00006540  75 65 6e 63 65 73 25 2d  31 3a f1 23 46 25 2c 73  |uences%-1:.#F%,s|
00006550  65 71 75 6c 65 6e 25 28  73 25 29 3a e3 20 63 25  |equlen%(s%):. c%|
00006560  3d 31 20 b8 20 73 65 71  75 6c 65 6e 25 28 73 25  |=1 . sequlen%(s%|
00006570  29 0d 1e 96 26 20 f1 23  46 25 2c 63 68 6f 72 64  |)...& .#F%,chord|
00006580  24 28 73 25 2c 63 25 29  2c 72 68 79 74 68 6d 24  |$(s%,c%),rhythm$|
00006590  28 73 25 2c 63 25 29 0d  1e a0 08 20 ed 3a ed 0d  |(s%,c%).... .:..|
000065a0  1e aa 5b e3 20 72 25 3d  30 20 b8 20 72 68 79 74  |..[. r%=0 . rhyt|
000065b0  68 6d 73 25 2d 31 3a f1  23 46 25 2c 6e 6f 62 65  |hms%-1:.#F%,nobe|
000065c0  61 74 73 25 28 72 25 29  2c 72 68 79 74 68 6d 5f  |ats%(r%),rhythm_|
000065d0  6e 61 6d 65 24 28 72 25  29 3a e3 20 63 25 3d 31  |name$(r%):. c%=1|
000065e0  20 b8 20 37 3a e3 20 62  25 3d 31 20 b8 20 6e 6f  | . 7:. b%=1 . no|
000065f0  62 65 61 74 73 25 28 72  25 29 0d 1e b4 27 20 f1  |beats%(r%)...' .|
00006600  23 46 25 2c 76 6f 6c 25  28 72 25 2c 63 25 2c 62  |#F%,vol%(r%,c%,b|
00006610  25 29 2c 69 6e 73 25 28  72 25 2c 63 25 2c 62 25  |%),ins%(r%,c%,b%|
00006620  29 0d 1e be 0a 20 ed 3a  ed 3a ed 0d 1e c8 2c e3  |).... .:.:....,.|
00006630  20 76 25 3d 31 20 b8 20  36 3a f1 23 46 25 2c 66  | v%=1 . 6:.#F%,f|
00006640  78 25 28 76 25 29 2c 66  78 63 68 61 6e 6e 65 6c  |x%(v%),fxchannel|
00006650  25 28 76 25 29 3a ed 0d  1e d2 14 d9 23 46 25 3a  |%(v%):......#F%:|
00006660  f2 6d 65 6e 75 5f 63 6c  6f 73 65 0d 1e dc 21 c8  |.menu_close...!.|
00006670  99 38 2c 26 31 32 2c 62  6c 6b 25 2b 34 34 2c 26  |.8,&12,blk%+44,&|
00006680  30 30 41 3a c8 99 32 36  33 38 37 33 0d 1e e6 05  |00A:..263873....|
00006690  e1 0d 1e f0 05 3a 0d 1e  fa 11 dd f2 6c 6f 61 64  |.....:......load|
000066a0  28 66 69 6c 65 24 29 0d  1f 04 14 ea 20 73 25 2c  |(file$)..... s%,|
000066b0  63 25 2c 72 25 2c 62 25  2c 76 25 0d 1f 0e 1c e3  |c%,r%,b%,v%.....|
000066c0  20 63 25 3d 31 20 b8 20  38 3a d4 20 63 25 2c 30  | c%=1 . 8:. c%,0|
000066d0  2c 30 2c 2d 31 3a ed 0d  1f 18 0f 46 25 3d 8e 28  |,0,-1:.....F%=.(|
000066e0  66 69 6c 65 24 29 0d 1f  22 36 e7 20 46 25 3d 30  |file$).."6. F%=0|
000066f0  20 f2 72 65 70 6f 72 74  5f 65 72 72 6f 72 28 22  | .report_error("|
00006700  46 69 6c 65 20 6e 6f 74  20 66 6f 75 6e 64 22 2c  |File not found",|
00006710  22 4c 6f 61 64 69 6e 67  22 29 3a e1 0d 1f 2c 0c  |"Loading"):...,.|
00006720  c8 99 32 36 33 38 37 32  0d 1f 36 6b f2 64 65 6c  |..263872..6k.del|
00006730  65 74 65 5f 77 69 6e 64  6f 77 73 3a e3 20 73 25  |ete_windows:. s%|
00006740  3d 30 20 b8 20 73 65 71  75 65 6e 63 65 73 25 2d  |=0 . sequences%-|
00006750  31 3a e3 20 63 25 3d 31  20 b8 20 73 65 71 75 6c  |1:. c%=1 . sequl|
00006760  65 6e 25 28 73 25 29 3a  63 68 6f 72 64 24 28 73  |en%(s%):chord$(s|
00006770  25 2c 63 25 29 3d 22 20  20 20 20 22 3a 72 68 79  |%,c%)="    ":rhy|
00006780  74 68 6d 24 28 73 25 2c  63 25 29 3d 22 61 22 3a  |thm$(s%,c%)="a":|
00006790  ed 3a ed 0d 1f 40 33 e3  20 72 25 3d 30 20 b8 20  |.:...@3. r%=0 . |
000067a0  72 68 79 74 68 6d 73 25  2d 31 3a 72 68 79 74 68  |rhythms%-1:rhyth|
000067b0  6d 5f 6e 61 6d 65 24 28  72 25 29 3d bd 28 72 25  |m_name$(r%)=.(r%|
000067c0  2b 39 37 29 3a ed 0d 1f  4a 2e e8 23 46 25 2c 74  |+97):...J..#F%,t|
000067d0  65 6d 70 6f 25 2c 73 65  71 75 65 6e 63 65 73 25  |empo%,sequences%|
000067e0  2c 72 68 79 74 68 6d 73  25 2c 73 74 72 75 63 74  |,rhythms%,struct|
000067f0  75 72 65 24 0d 1f 54 41  e3 20 73 25 3d 30 20 b8  |ure$..TA. s%=0 .|
00006800  20 73 65 71 75 65 6e 63  65 73 25 2d 31 3a e8 23  | sequences%-1:.#|
00006810  46 25 2c 73 65 71 75 6c  65 6e 25 28 73 25 29 3a  |F%,sequlen%(s%):|
00006820  e3 20 63 25 3d 31 20 b8  20 73 65 71 75 6c 65 6e  |. c%=1 . sequlen|
00006830  25 28 73 25 29 0d 1f 5e  26 20 e8 23 46 25 2c 63  |%(s%)..^& .#F%,c|
00006840  68 6f 72 64 24 28 73 25  2c 63 25 29 2c 72 68 79  |hord$(s%,c%),rhy|
00006850  74 68 6d 24 28 73 25 2c  63 25 29 0d 1f 68 08 20  |thm$(s%,c%)..h. |
00006860  ed 3a ed 0d 1f 72 5b e3  20 72 25 3d 30 20 b8 20  |.:...r[. r%=0 . |
00006870  72 68 79 74 68 6d 73 25  2d 31 3a e8 23 46 25 2c  |rhythms%-1:.#F%,|
00006880  6e 6f 62 65 61 74 73 25  28 72 25 29 2c 72 68 79  |nobeats%(r%),rhy|
00006890  74 68 6d 5f 6e 61 6d 65  24 28 72 25 29 3a e3 20  |thm_name$(r%):. |
000068a0  63 25 3d 31 20 b8 20 37  3a e3 20 62 25 3d 31 20  |c%=1 . 7:. b%=1 |
000068b0  b8 20 6e 6f 62 65 61 74  73 25 28 72 25 29 0d 1f  |. nobeats%(r%)..|
000068c0  7c 27 20 e8 23 46 25 2c  76 6f 6c 25 28 72 25 2c  ||' .#F%,vol%(r%,|
000068d0  63 25 2c 62 25 29 2c 69  6e 73 25 28 72 25 2c 63  |c%,b%),ins%(r%,c|
000068e0  25 2c 62 25 29 0d 1f 86  0a 20 ed 3a ed 3a ed 0d  |%,b%).... .:.:..|
000068f0  1f 90 2c e3 20 76 25 3d  31 20 b8 20 36 3a e8 23  |..,. v%=1 . 6:.#|
00006900  46 25 2c 66 78 25 28 76  25 29 2c 66 78 63 68 61  |F%,fx%(v%),fxcha|
00006910  6e 6e 65 6c 25 28 76 25  29 3a ed 0d 1f 9a 1f d9  |nnel%(v%):......|
00006920  23 46 25 3a f2 75 70 64  61 74 65 5f 77 69 6e 64  |#F%:.update_wind|
00006930  6f 77 73 28 66 69 6c 65  24 29 0d 1f a4 6d f2 70  |ows(file$)...m.p|
00006940  75 74 5f 77 72 69 74 65  6d 28 33 2c c3 28 74 65  |ut_writem(3,.(te|
00006950  6d 70 6f 25 29 29 3a f2  70 75 74 5f 77 72 69 74  |mpo%)):.put_writ|
00006960  65 6d 28 34 2c c3 28 74  72 61 6e 73 25 29 29 3a  |em(4,.(trans%)):|
00006970  f2 70 75 74 5f 77 72 69  74 65 6d 28 35 2c 73 74  |.put_writem(5,st|
00006980  72 75 63 74 75 72 65 24  29 3a f2 70 75 74 5f 69  |ructure$):.put_i|
00006990  63 6f 6e 5f 74 65 78 74  28 73 61 76 65 25 2c 31  |con_text(save%,1|
000069a0  2c 66 69 6c 65 24 29 0d  1f ae 39 f2 6f 70 65 6e  |,file$)...9.open|
000069b0  5f 77 69 6e 64 6f 77 73  3a f2 6f 70 65 6e 5f 77  |_windows:.open_w|
000069c0  69 6e 64 6f 77 28 6b 65  79 62 6f 61 72 64 5f 77  |indow(keyboard_w|
000069d0  69 6e 64 6f 77 25 29 3a  c8 99 32 36 33 38 37 33  |indow%):..263873|
000069e0  0d 1f b8 12 70 6c 61 79  5f 72 68 79 74 68 6d 25  |....play_rhythm%|
000069f0  3d 30 0d 1f c2 05 e1 0d  1f cc 05 3a 0d 1f d6 18  |=0.........:....|
00006a00  dd f2 73 61 76 65 5f 72  68 79 74 68 6d 28 66 69  |..save_rhythm(fi|
00006a10  6c 65 24 29 0d 1f e0 0c  c8 99 32 36 33 38 37 32  |le$)......263872|
00006a20  0d 1f ea 3c ea 20 63 25  2c 72 25 2c 62 25 3a 72  |...<. c%,r%,b%:r|
00006a30  25 3d 65 64 69 74 5f 72  68 79 74 68 6d 25 3a 46  |%=edit_rhythm%:F|
00006a40  25 3d ae 28 66 69 6c 65  24 29 3a f1 23 46 25 2c  |%=.(file$):.#F%,|
00006a50  6e 6f 62 65 61 74 73 25  28 72 25 29 0d 1f f4 47  |nobeats%(r%)...G|
00006a60  e3 20 63 25 3d 31 20 b8  20 37 3a e3 20 62 25 3d  |. c%=1 . 7:. b%=|
00006a70  31 20 b8 20 6e 6f 62 65  61 74 73 25 28 72 25 29  |1 . nobeats%(r%)|
00006a80  3a f1 23 46 25 2c 76 6f  6c 25 28 72 25 2c 63 25  |:.#F%,vol%(r%,c%|
00006a90  2c 62 25 29 2c 69 6e 73  25 28 72 25 2c 63 25 2c  |,b%),ins%(r%,c%,|
00006aa0  62 25 29 0d 1f fe 08 20  ed 3a ed 0d 20 08 26 d9  |b%).... .:.. .&.|
00006ab0  23 46 25 3a 72 68 79 74  68 6d 5f 6e 61 6d 65 24  |#F%:rhythm_name$|
00006ac0  28 72 25 29 3d a4 6c 65  61 66 28 66 69 6c 65 24  |(r%)=.leaf(file$|
00006ad0  29 0d 20 12 39 f2 64 65  6c 65 74 65 5f 77 69 6e  |). .9.delete_win|
00006ae0  64 6f 77 28 72 68 79 74  68 6d 5f 77 69 6e 64 6f  |dow(rhythm_windo|
00006af0  77 25 28 72 25 29 29 3a  f2 72 68 79 74 68 6d 5f  |w%(r%)):.rhythm_|
00006b00  77 69 6e 64 6f 77 28 72  25 29 0d 20 1c 24 f2 6f  |window(r%). .$.o|
00006b10  70 65 6e 5f 77 69 6e 64  6f 77 28 72 68 79 74 68  |pen_window(rhyth|
00006b20  6d 5f 77 69 6e 64 6f 77  25 28 72 25 29 29 0d 20  |m_window%(r%)). |
00006b30  26 21 c8 99 38 2c 26 31  32 2c 62 6c 6b 25 2b 34  |&!..8,&12,blk%+4|
00006b40  34 2c 26 30 30 42 3a c8  99 32 36 33 38 37 33 0d  |4,&00B:..263873.|
00006b50  20 30 05 e1 0d 20 3a 05  3a 0d 20 44 18 dd f2 6c  | 0... :.:. D...l|
00006b60  6f 61 64 5f 72 68 79 74  68 6d 28 66 69 6c 65 24  |oad_rhythm(file$|
00006b70  29 0d 20 4e 4c e7 20 72  68 79 74 68 6d 73 25 3d  |). NL. rhythms%=|
00006b80  32 36 3a f2 72 65 70 6f  72 74 5f 65 72 72 6f 72  |26:.report_error|
00006b90  28 22 4f 6e 6c 79 20 32  36 20 72 68 79 74 68 6d  |("Only 26 rhythm|
00006ba0  73 20 70 6f 73 73 69 62  6c 65 21 22 2c 22 4c 6f  |s possible!","Lo|
00006bb0  61 64 20 52 68 79 74 68  6d 22 29 3a e1 0d 20 58  |ad Rhythm"):.. X|
00006bc0  42 46 25 3d 8e 28 66 69  6c 65 24 29 3a e7 20 46  |BF%=.(file$):. F|
00006bd0  25 3d 30 20 f2 72 65 70  6f 72 74 5f 65 72 72 6f  |%=0 .report_erro|
00006be0  72 28 22 46 69 6c 65 20  6e 6f 74 20 66 6f 75 6e  |r("File not foun|
00006bf0  64 22 2c 22 4c 6f 61 64  69 6e 67 22 29 3a e1 0d  |d","Loading"):..|
00006c00  20 62 35 c8 99 32 36 33  38 37 32 3a ea 20 63 25  | b5..263872:. c%|
00006c10  2c 72 25 2c 62 25 3a 72  25 3d 72 68 79 74 68 6d  |,r%,b%:r%=rhythm|
00006c20  73 25 3a e8 23 46 25 2c  6e 6f 62 65 61 74 73 25  |s%:.#F%,nobeats%|
00006c30  28 72 25 29 0d 20 6c 47  e3 20 63 25 3d 31 20 b8  |(r%). lG. c%=1 .|
00006c40  20 37 3a e3 20 62 25 3d  31 20 b8 20 6e 6f 62 65  | 7:. b%=1 . nobe|
00006c50  61 74 73 25 28 72 25 29  3a e8 23 46 25 2c 76 6f  |ats%(r%):.#F%,vo|
00006c60  6c 25 28 72 25 2c 63 25  2c 62 25 29 2c 69 6e 73  |l%(r%,c%,b%),ins|
00006c70  25 28 72 25 2c 63 25 2c  62 25 29 0d 20 76 08 20  |%(r%,c%,b%). v. |
00006c80  ed 3a ed 0d 20 80 21 72  68 79 74 68 6d 5f 6e 61  |.:.. .!rhythm_na|
00006c90  6d 65 24 28 72 25 29 3d  a4 6c 65 61 66 28 66 69  |me$(r%)=.leaf(fi|
00006ca0  6c 65 24 29 0d 20 8a 43  f2 72 68 79 74 68 6d 5f  |le$). .C.rhythm_|
00006cb0  77 69 6e 64 6f 77 28 72  68 79 74 68 6d 73 25 29  |window(rhythms%)|
00006cc0  3a f2 6f 70 65 6e 5f 77  69 6e 64 6f 77 28 72 68  |:.open_window(rh|
00006cd0  79 74 68 6d 5f 77 69 6e  64 6f 77 25 28 72 68 79  |ythm_window%(rhy|
00006ce0  74 68 6d 73 25 29 29 0d  20 94 1d 72 68 79 74 68  |thms%)). ..rhyth|
00006cf0  6d 73 25 2b 3d 31 3a d9  23 46 25 3a c8 99 32 36  |ms%+=1:.#F%:..26|
00006d00  33 38 37 33 0d 20 9e 05  e1 0d 20 a8 05 3a 0d 20  |3873. .... ..:. |
00006d10  b2 1e dd f2 65 72 72 6f  72 28 21 65 72 72 6f 72  |....error(!error|
00006d20  62 6c 6b 25 2c 65 72 72  6f 72 24 29 0d 20 bc 12  |blk%,error$). ..|
00006d30  65 72 72 6f 72 63 6f 75  6e 74 25 2b 3d 31 0d 20  |errorcount%+=1. |
00006d40  c6 2c e7 20 65 72 72 6f  72 63 6f 75 6e 74 25 3e  |.,. errorcount%>|
00006d50  35 3a 85 20 a2 20 30 2c  22 54 6f 6f 20 6d 61 6e  |5:. . 0,"Too man|
00006d60  79 20 65 72 72 6f 72 73  21 22 0d 20 d0 28 e7 20  |y errors!". .(. |
00006d70  9f 3c 32 30 30 20 65 72  72 6f 72 24 2b 3d 22 20  |.<200 error$+=" |
00006d80  61 74 20 6c 69 6e 65 20  22 2b c3 28 9e 20 81 31  |at line "+.(. .1|
00006d90  30 29 0d 20 da 38 e7 20  9f 3d 32 30 30 20 65 72  |0). .8. .=200 er|
00006da0  72 6f 72 24 3d 22 2a 2a  2a 20 45 72 72 6f 72 20  |ror$="*** Error |
00006db0  69 6e 20 6d 65 6e 75 20  66 69 6c 65 21 20 2a 2a  |in menu file! **|
00006dc0  2a 20 22 2b 65 72 72 6f  72 24 0d 20 e4 38 e7 20  |* "+error$. .8. |
00006dd0  9f 3d 32 30 31 20 65 72  72 6f 72 24 3d 22 2a 2a  |.=201 error$="**|
00006de0  2a 20 20 20 20 20 4d 65  6e 75 20 65 72 72 6f 72  |*     Menu error|
00006df0  20 20 20 20 20 20 2a 2a  2a 20 22 2b 65 72 72 6f  |      *** "+erro|
00006e00  72 24 0d 20 ee 38 e7 20  9f 3d 32 30 32 20 65 72  |r$. .8. .=202 er|
00006e10  72 6f 72 24 3d 22 2a 2a  2a 20 20 20 20 20 49 63  |ror$="***     Ic|
00006e20  6f 6e 20 65 72 72 6f 72  20 20 20 20 20 20 2a 2a  |on error      **|
00006e30  2a 20 22 2b 65 72 72 6f  72 24 0d 20 f8 38 e7 20  |* "+error$. .8. |
00006e40  9f 3d 32 30 33 20 65 72  72 6f 72 24 3d 22 2a 2a  |.=203 error$="**|
00006e50  2a 20 20 20 20 20 46 69  6c 65 20 65 72 72 6f 72  |*     File error|
00006e60  20 20 20 20 20 20 2a 2a  2a 20 22 2b 65 72 72 6f  |      *** "+erro|
00006e70  72 24 0d 21 02 38 e7 20  9f 3d 32 30 34 20 65 72  |r$.!.8. .=204 er|
00006e80  72 6f 72 24 3d 22 2a 2a  2a 20 20 20 20 57 69 6e  |ror$="***    Win|
00006e90  64 6f 77 20 65 72 72 6f  72 20 20 20 20 20 2a 2a  |dow error     **|
00006ea0  2a 20 22 2b 65 72 72 6f  72 24 0d 21 0c 18 c8 99  |* "+error$.!....|
00006eb0  31 33 31 30 38 35 2c 30  2c 6d 65 6e 75 66 69 6c  |131085,0,menufil|
00006ec0  65 25 0d 21 16 0c c8 99  33 39 33 34 33 34 0d 21  |e%.!....393434.!|
00006ed0  20 19 24 28 65 72 72 6f  72 62 6c 6b 25 2b 34 29  | .$(errorblk%+4)|
00006ee0  3d 65 72 72 6f 72 24 0d  21 2a 22 c8 99 32 36 32  |=error$.!*"..262|
00006ef0  33 36 37 2c 65 72 72 6f  72 62 6c 6b 25 2c 31 2c  |367,errorblk%,1,|
00006f00  61 70 70 5f 6e 61 6d 65  24 0d 21 34 05 e1 0d 21  |app_name$.!4...!|
00006f10  3e 05 3a 0d 21 48 0a dd  f2 71 75 69 74 0d 21 52  |>.:.!H...quit.!R|
00006f20  09 2a 46 58 31 32 0d 21  5c 0c c8 99 32 36 32 33  |.*FX12.!\...2623|
00006f30  36 35 0d 21 66 05 e0 0d  21 70 05 e1 0d 21 7a 05  |65.!f...!p...!z.|
00006f40  3a 0d 21 84 0b dd f2 65  76 65 6e 74 0d 21 8e 1d  |:.!....event.!..|
00006f50  e7 20 73 75 73 74 61 69  6e 25 3d 30 20 f2 6b 65  |. sustain%=0 .ke|
00006f60  79 62 6f 61 72 64 28 30  29 0d 21 98 28 e7 20 91  |yboard(0).!.(. .|
00006f70  3e 74 65 6d 70 6f 25 20  91 3d 30 3a e7 20 70 6c  |>tempo% .=0:. pl|
00006f80  61 79 5f 72 68 79 74 68  6d 25 20 f2 73 74 72 75  |ay_rhythm% .stru|
00006f90  6d 0d 21 a2 05 e1 0d 21  ac 05 3a 0d 21 b6 0c dd  |m.!....!..:.!...|
00006fa0  f2 73 74 65 72 65 6f 0d  21 c0 2e e3 20 63 68 25  |.stereo.!... ch%|
00006fb0  3d 31 20 b8 20 38 3a c8  99 32 36 32 34 36 36 2c  |=1 . 8:..262466,|
00006fc0  63 68 25 2c 73 74 65 72  65 6f 25 28 63 68 25 29  |ch%,stereo%(ch%)|
00006fd0  2a 33 32 3a ed 0d 21 ca  05 e1 0d 21 d4 05 3a 0d  |*32:..!....!..:.|
00006fe0  21 de 17 dd f2 63 6f 70  79 5f 73 65 71 75 65 6e  |!....copy_sequen|
00006ff0  63 65 28 73 25 29 0d 21  e8 08 ea 20 63 25 0d 21  |ce(s%).!... c%.!|
00007000  f2 0c c8 99 32 36 33 38  37 32 0d 21 fc 52 e7 20  |....263872.!.R. |
00007010  73 65 71 75 65 6e 63 65  73 25 3d 32 36 3a f2 72  |sequences%=26:.r|
00007020  65 70 6f 72 74 5f 65 72  72 6f 72 28 22 4f 6e 6c  |eport_error("Onl|
00007030  79 20 32 36 20 73 65 71  75 65 6e 63 65 73 20 70  |y 26 sequences p|
00007040  6f 73 73 69 62 6c 65 21  22 2c 22 43 6f 70 79 20  |ossible!","Copy |
00007050  53 65 71 75 65 6e 63 65  22 29 3a e1 0d 22 06 19  |Sequence"):.."..|
00007060  e3 20 63 25 3d 31 20 b8  20 73 65 71 75 6c 65 6e  |. c%=1 . sequlen|
00007070  25 28 73 25 29 0d 22 10  4e 20 63 68 6f 72 64 24  |%(s%).".N chord$|
00007080  28 73 65 71 75 65 6e 63  65 73 25 2c 63 25 29 3d  |(sequences%,c%)=|
00007090  63 68 6f 72 64 24 28 73  25 2c 63 25 29 3a 72 68  |chord$(s%,c%):rh|
000070a0  79 74 68 6d 24 28 73 65  71 75 65 6e 63 65 73 25  |ythm$(sequences%|
000070b0  2c 63 25 29 3d 72 68 79  74 68 6d 24 28 73 25 2c  |,c%)=rhythm$(s%,|
000070c0  63 25 29 0d 22 1a 06 20  ed 0d 22 24 25 73 65 71  |c%).".. .."$%seq|
000070d0  75 6c 65 6e 25 28 73 65  71 75 65 6e 63 65 73 25  |ulen%(sequences%|
000070e0  29 3d 73 65 71 75 6c 65  6e 25 28 73 25 29 0d 22  |)=sequlen%(s%)."|
000070f0  2e 4b f2 73 65 71 75 65  6e 63 65 5f 77 69 6e 64  |.K.sequence_wind|
00007100  6f 77 28 73 65 71 75 65  6e 63 65 73 25 29 3a f2  |ow(sequences%):.|
00007110  6f 70 65 6e 5f 77 69 6e  64 6f 77 28 73 65 71 75  |open_window(sequ|
00007120  65 6e 63 65 5f 77 69 6e  64 6f 77 25 28 73 65 71  |ence_window%(seq|
00007130  75 65 6e 63 65 73 25 29  29 0d 22 38 1a 73 65 71  |uences%))."8.seq|
00007140  75 65 6e 63 65 73 25 2b  3d 31 3a c8 99 32 36 33  |uences%+=1:..263|
00007150  38 37 33 0d 22 42 05 e1  0d 22 4c 05 3a 0d 22 56  |873."B..."L.:."V|
00007160  12 dd f2 61 64 64 5f 73  65 71 75 65 6e 63 65 0d  |...add_sequence.|
00007170  22 60 0c c8 99 32 36 33  38 37 32 0d 22 6a 51 e7  |"`...263872."jQ.|
00007180  20 73 65 71 75 65 6e 63  65 73 25 3d 32 36 3a f2  | sequences%=26:.|
00007190  72 65 70 6f 72 74 5f 65  72 72 6f 72 28 22 4f 6e  |report_error("On|
000071a0  6c 79 20 32 36 20 73 65  71 75 65 6e 63 65 73 20  |ly 26 sequences |
000071b0  70 6f 73 73 69 62 6c 65  21 22 2c 22 41 64 64 20  |possible!","Add |
000071c0  53 65 71 75 65 6e 63 65  22 29 3a e1 0d 22 74 4b  |Sequence"):.."tK|
000071d0  f2 73 65 71 75 65 6e 63  65 5f 77 69 6e 64 6f 77  |.sequence_window|
000071e0  28 73 65 71 75 65 6e 63  65 73 25 29 3a f2 6f 70  |(sequences%):.op|
000071f0  65 6e 5f 77 69 6e 64 6f  77 28 73 65 71 75 65 6e  |en_window(sequen|
00007200  63 65 5f 77 69 6e 64 6f  77 25 28 73 65 71 75 65  |ce_window%(seque|
00007210  6e 63 65 73 25 29 29 0d  22 7e 1a 73 65 71 75 65  |nces%))."~.seque|
00007220  6e 63 65 73 25 2b 3d 31  3a c8 99 32 36 33 38 37  |nces%+=1:..26387|
00007230  33 0d 22 88 05 e1 0d 22  92 05 3a 0d 22 9c 18 dd  |3."...."..:."...|
00007240  f2 63 6c 65 61 72 5f 73  65 71 75 65 6e 63 65 28  |.clear_sequence(|
00007250  73 25 29 0d 22 a6 08 ea  20 63 25 0d 22 b0 0c c8  |s%)."... c%."...|
00007260  99 32 36 33 38 37 32 0d  22 ba 39 e3 20 63 25 3d  |.263872.".9. c%=|
00007270  31 20 b8 20 33 32 3a 63  68 6f 72 64 24 28 73 25  |1 . 32:chord$(s%|
00007280  2c 63 25 29 3d 22 20 20  20 20 22 3a 72 68 79 74  |,c%)="    ":rhyt|
00007290  68 6d 24 28 73 25 2c 63  25 29 3d 22 61 22 3a ed  |hm$(s%,c%)="a":.|
000072a0  0d 22 c4 37 73 65 71 75  6c 65 6e 25 28 73 25 29  |.".7sequlen%(s%)|
000072b0  3d 30 3a f2 64 65 6c 65  74 65 5f 77 69 6e 64 6f  |=0:.delete_windo|
000072c0  77 28 73 65 71 75 65 6e  63 65 5f 77 69 6e 64 6f  |w(sequence_windo|
000072d0  77 25 28 73 25 29 29 0d  22 ce 3b f2 73 65 71 75  |w%(s%)).".;.sequ|
000072e0  65 6e 63 65 5f 77 69 6e  64 6f 77 28 73 25 29 3a  |ence_window(s%):|
000072f0  f2 6f 70 65 6e 5f 77 69  6e 64 6f 77 28 73 65 71  |.open_window(seq|
00007300  75 65 6e 63 65 5f 77 69  6e 64 6f 77 25 28 73 25  |uence_window%(s%|
00007310  29 29 0d 22 d8 0c c8 99  32 36 33 38 37 33 0d 22  |))."....263873."|
00007320  e2 05 e1 0d 22 ec 05 3a  0d 22 f6 1a dd f2 67 6c  |...."..:."....gl|
00007330  6f 62 61 6c 5f 72 68 79  74 68 6d 28 72 24 2c 73  |obal_rhythm(r$,s|
00007340  25 29 0d 23 00 08 ea 20  63 25 0d 23 0a 0c c8 99  |%).#... c%.#....|
00007350  32 36 33 38 37 32 0d 23  14 23 e3 20 63 25 3d 31  |263872.#.#. c%=1|
00007360  20 b8 20 33 32 3a 72 68  79 74 68 6d 24 28 73 25  | . 32:rhythm$(s%|
00007370  2c 63 25 29 3d 72 24 3a  ed 0d 23 1e 27 f2 63 6c  |,c%)=r$:..#.'.cl|
00007380  6f 73 65 5f 77 69 6e 64  6f 77 28 73 65 71 75 65  |ose_window(seque|
00007390  6e 63 65 5f 77 69 6e 64  6f 77 25 28 73 25 29 29  |nce_window%(s%))|
000073a0  0d 23 28 3b f2 73 65 71  75 65 6e 63 65 5f 77 69  |.#(;.sequence_wi|
000073b0  6e 64 6f 77 28 73 25 29  3a f2 6f 70 65 6e 5f 77  |ndow(s%):.open_w|
000073c0  69 6e 64 6f 77 28 73 65  71 75 65 6e 63 65 5f 77  |indow(sequence_w|
000073d0  69 6e 64 6f 77 25 28 73  25 29 29 0d 23 32 0c c8  |indow%(s%)).#2..|
000073e0  99 32 36 33 38 37 33 0d  23 3c 05 e1 0d 23 46 05  |.263873.#<...#F.|
000073f0  3a 0d 23 50 15 dd f2 63  6f 70 79 5f 72 68 79 74  |:.#P...copy_rhyt|
00007400  68 6d 28 72 25 29 0d 23  5a 0b ea 20 63 25 2c 62  |hm(r%).#Z.. c%,b|
00007410  25 0d 23 64 0c c8 99 32  36 33 38 37 32 0d 23 6e  |%.#d...263872.#n|
00007420  4c e7 20 72 68 79 74 68  6d 73 25 3d 32 36 3a f2  |L. rhythms%=26:.|
00007430  72 65 70 6f 72 74 5f 65  72 72 6f 72 28 22 4f 6e  |report_error("On|
00007440  6c 79 20 32 36 20 72 68  79 74 68 6d 73 20 70 6f  |ly 26 rhythms po|
00007450  73 73 69 62 6c 65 21 22  2c 22 43 6f 70 79 20 52  |ssible!","Copy R|
00007460  68 79 74 68 6d 22 29 3a  e1 0d 23 78 23 6e 6f 62  |hythm"):..#x#nob|
00007470  65 61 74 73 25 28 72 68  79 74 68 6d 73 25 29 3d  |eats%(rhythms%)=|
00007480  6e 6f 62 65 61 74 73 25  28 72 25 29 0d 23 82 24  |nobeats%(r%).#.$|
00007490  e3 20 63 25 3d 31 20 b8  20 37 3a e3 20 62 25 3d  |. c%=1 . 7:. b%=|
000074a0  31 20 b8 20 6e 6f 62 65  61 74 73 25 28 72 25 29  |1 . nobeats%(r%)|
000074b0  0d 23 8c 29 20 20 76 6f  6c 25 28 72 68 79 74 68  |.#.)  vol%(rhyth|
000074c0  6d 73 25 2c 63 25 2c 62  25 29 3d 76 6f 6c 25 28  |ms%,c%,b%)=vol%(|
000074d0  72 25 2c 63 25 2c 62 25  29 0d 23 96 29 20 20 69  |r%,c%,b%).#.)  i|
000074e0  6e 73 25 28 72 68 79 74  68 6d 73 25 2c 63 25 2c  |ns%(rhythms%,c%,|
000074f0  62 25 29 3d 69 6e 73 25  28 72 25 2c 63 25 2c 62  |b%)=ins%(r%,c%,b|
00007500  25 29 0d 23 a0 09 20 20  ed 3a ed 0d 23 aa 43 f2  |%).#..  .:..#.C.|
00007510  72 68 79 74 68 6d 5f 77  69 6e 64 6f 77 28 72 68  |rhythm_window(rh|
00007520  79 74 68 6d 73 25 29 3a  f2 6f 70 65 6e 5f 77 69  |ythms%):.open_wi|
00007530  6e 64 6f 77 28 72 68 79  74 68 6d 5f 77 69 6e 64  |ndow(rhythm_wind|
00007540  6f 77 25 28 72 68 79 74  68 6d 73 25 29 29 0d 23  |ow%(rhythms%)).#|
00007550  b4 18 72 68 79 74 68 6d  73 25 2b 3d 31 3a c8 99  |..rhythms%+=1:..|
00007560  32 36 33 38 37 33 0d 23  be 05 e1 0d 23 c8 05 3a  |263873.#....#..:|
00007570  0d 23 d2 10 dd f2 61 64  64 5f 72 68 79 74 68 6d  |.#....add_rhythm|
00007580  0d 23 dc 0c c8 99 32 36  33 38 37 32 0d 23 e6 4b  |.#....263872.#.K|
00007590  e7 20 72 68 79 74 68 6d  73 25 3d 32 36 3a f2 72  |. rhythms%=26:.r|
000075a0  65 70 6f 72 74 5f 65 72  72 6f 72 28 22 4f 6e 6c  |eport_error("Onl|
000075b0  79 20 32 36 20 72 68 79  74 68 6d 73 20 70 6f 73  |y 26 rhythms pos|
000075c0  73 69 62 6c 65 21 22 2c  22 41 64 64 20 52 68 79  |sible!","Add Rhy|
000075d0  74 68 6d 22 29 3a e1 0d  23 f0 43 f2 72 68 79 74  |thm"):..#.C.rhyt|
000075e0  68 6d 5f 77 69 6e 64 6f  77 28 72 68 79 74 68 6d  |hm_window(rhythm|
000075f0  73 25 29 3a f2 6f 70 65  6e 5f 77 69 6e 64 6f 77  |s%):.open_window|
00007600  28 72 68 79 74 68 6d 5f  77 69 6e 64 6f 77 25 28  |(rhythm_window%(|
00007610  72 68 79 74 68 6d 73 25  29 29 0d 23 fa 18 72 68  |rhythms%)).#..rh|
00007620  79 74 68 6d 73 25 2b 3d  31 3a c8 99 32 36 33 38  |ythms%+=1:..2638|
00007630  37 33 0d 24 04 05 e1 0d  24 0e 05 3a 0d 24 18 16  |73.$....$..:.$..|
00007640  dd f2 63 6c 65 61 72 5f  72 68 79 74 68 6d 28 72  |..clear_rhythm(r|
00007650  25 29 0d 24 22 0b ea 20  63 25 2c 62 25 0d 24 2c  |%).$".. c%,b%.$,|
00007660  0c c8 99 32 36 33 38 37  32 0d 24 36 24 e3 20 63  |...263872.$6$. c|
00007670  25 3d 31 20 b8 20 37 3a  e3 20 62 25 3d 31 20 b8  |%=1 . 7:. b%=1 .|
00007680  20 6e 6f 62 65 61 74 73  25 28 72 25 29 0d 24 40  | nobeats%(r%).$@|
00007690  17 20 20 76 6f 6c 25 28  72 25 2c 63 25 2c 62 25  |.  vol%(r%,c%,b%|
000076a0  29 3d 2d 31 0d 24 4a 16  20 20 69 6e 73 25 28 72  |)=-1.$J.  ins%(r|
000076b0  25 2c 63 25 2c 62 25 29  3d 30 0d 24 54 09 20 20  |%,c%,b%)=0.$T.  |
000076c0  ed 3a ed 0d 24 5e 25 f2  63 6c 6f 73 65 5f 77 69  |.:..$^%.close_wi|
000076d0  6e 64 6f 77 28 72 68 79  74 68 6d 5f 77 69 6e 64  |ndow(rhythm_wind|
000076e0  6f 77 25 28 72 25 29 29  0d 24 68 37 f2 72 68 79  |ow%(r%)).$h7.rhy|
000076f0  74 68 6d 5f 77 69 6e 64  6f 77 28 72 25 29 3a f2  |thm_window(r%):.|
00007700  6f 70 65 6e 5f 77 69 6e  64 6f 77 28 72 68 79 74  |open_window(rhyt|
00007710  68 6d 5f 77 69 6e 64 6f  77 25 28 72 25 29 29 0d  |hm_window%(r%)).|
00007720  24 72 0c c8 99 32 36 33  38 37 33 0d 24 7c 05 e1  |$r...263873.$|..|
00007730  0d 24 86 05 3a 0d 24 90  12 dd f2 6e 6f 5f 62 65  |.$..:.$....no_be|
00007740  61 74 73 28 72 25 29 0d  24 9a 0c c8 99 32 36 33  |ats(r%).$....263|
00007750  38 37 32 0d 24 a4 25 f2  63 6c 6f 73 65 5f 77 69  |872.$.%.close_wi|
00007760  6e 64 6f 77 28 72 68 79  74 68 6d 5f 77 69 6e 64  |ndow(rhythm_wind|
00007770  6f 77 25 28 72 25 29 29  0d 24 ae 37 f2 72 68 79  |ow%(r%)).$.7.rhy|
00007780  74 68 6d 5f 77 69 6e 64  6f 77 28 72 25 29 3a f2  |thm_window(r%):.|
00007790  6f 70 65 6e 5f 77 69 6e  64 6f 77 28 72 68 79 74  |open_window(rhyt|
000077a0  68 6d 5f 77 69 6e 64 6f  77 25 28 72 25 29 29 0d  |hm_window%(r%)).|
000077b0  24 b8 0c c8 99 32 36 33  38 37 33 0d 24 c2 05 e1  |$....263873.$...|
000077c0  0d 24 cc 05 3a 0d 24 d6  16 dd f2 6f 63 74 61 76  |.$..:.$....octav|
000077d0  65 73 28 63 68 6f 69 63  65 24 29 0d 24 e0 0b ea  |es(choice$).$...|
000077e0  20 70 25 2c 6f 25 0d 24  ea 2b 70 25 3d bb 28 c0  | p%,o%.$.+p%=.(.|
000077f0  63 68 6f 69 63 65 24 2c  31 29 29 3a 6f 25 3d bb  |choice$,1)):o%=.|
00007800  28 c1 63 68 6f 69 63 65  24 2c 33 2c 31 29 29 2b  |(.choice$,3,1))+|
00007810  31 0d 24 f4 0b c8 8e 20  70 25 20 ca 0d 24 fe 36  |1.$.... p% ..$.6|
00007820  20 c9 20 36 3a f2 74 69  63 6b 28 31 30 2c 63 6f  | . 6:.tick(10,co|
00007830  63 74 25 2d 31 2c a3 29  3a 63 6f 63 74 25 3d 6f  |ct%-1,.):coct%=o|
00007840  25 3a f2 74 69 63 6b 28  31 30 2c 6f 25 2d 31 2c  |%:.tick(10,o%-1,|
00007850  b9 29 0d 25 08 36 20 c9  20 37 3a f2 74 69 63 6b  |.).%.6 . 7:.tick|
00007860  28 31 31 2c 62 6f 63 74  25 2d 31 2c a3 29 3a 62  |(11,boct%-1,.):b|
00007870  6f 63 74 25 3d 6f 25 3a  f2 74 69 63 6b 28 31 31  |oct%=o%:.tick(11|
00007880  2c 6f 25 2d 31 2c b9 29  0d 25 12 36 20 c9 20 38  |,o%-1,.).%.6 . 8|
00007890  3a f2 74 69 63 6b 28 31  32 2c 6b 6f 63 74 25 2d  |:.tick(12,koct%-|
000078a0  31 2c a3 29 3a 6b 6f 63  74 25 3d 6f 25 3a f2 74  |1,.):koct%=o%:.t|
000078b0  69 63 6b 28 31 32 2c 6f  25 2d 31 2c b9 29 0d 25  |ick(12,o%-1,.).%|
000078c0  1c 05 cb 0d 25 26 05 e1  0d 25 30 05 3a 0d 25 3a  |....%&...%0.:.%:|
000078d0  11 dd f2 6e 61 6d 65 5f  76 6f 69 63 65 73 0d 25  |...name_voices.%|
000078e0  44 0f ea 20 6d 25 2c 76  6f 69 63 65 24 0d 25 4e  |D.. m%,voice$.%N|
000078f0  10 e3 20 6d 25 3d 30 20  b8 20 31 32 37 0d 25 58  |.. m%=0 . 127.%X|
00007900  23 20 c8 99 32 36 32 35  33 31 2c 30 2c 31 2b 6d  |# ..262531,0,1+m|
00007910  25 83 33 32 20 b8 20 76  6f 69 63 65 24 2c 46 25  |%.32 . voice$,F%|
00007920  0d 25 62 18 20 e7 20 a7  76 6f 69 63 65 24 2c 22  |.%b. . .voice$,"|
00007930  21 4b 22 29 3d 30 20 8c  0d 25 6c 20 20 20 e7 20  |!K")=0 ..%l   . |
00007940  6d 25 3e 39 35 20 76 6f  69 63 65 24 3d 22 20 20  |m%>95 voice$="  |
00007950  22 2b 76 6f 69 63 65 24  0d 25 76 37 20 20 f2 70  |"+voice$.%v7  .p|
00007960  75 74 5f 77 72 69 74 65  6d 28 6d 25 2b 36 2c 76  |ut_writem(m%+6,v|
00007970  6f 69 63 65 24 29 3a f2  73 68 61 64 65 28 31 34  |oice$):.shade(14|
00007980  2b 6d 25 81 33 32 2c 6d  25 83 33 32 2c a3 29 0d  |+m%.32,m%.32,.).|
00007990  25 80 06 20 cc 0d 25 8a  3b 20 20 f2 70 75 74 5f  |%.. ..%.;  .put_|
000079a0  77 72 69 74 65 6d 28 6d  25 2b 36 2c c3 28 31 2b  |writem(m%+6,.(1+|
000079b0  6d 25 83 33 32 29 29 3a  f2 73 68 61 64 65 28 31  |m%.32)):.shade(1|
000079c0  34 2b 6d 25 81 33 32 2c  6d 25 83 33 32 2c b9 29  |4+m%.32,m%.32,.)|
000079d0  0d 25 94 06 20 cd 0d 25  9e 05 ed 0d 25 a8 05 e1  |.%.. ..%....%...|
000079e0  0d 25 b2 05 3a 0d 25 bc  1a dd f2 69 6e 73 74 72  |.%..:.%....instr|
000079f0  75 6d 65 6e 74 73 28 63  68 6f 69 63 65 24 29 0d  |uments(choice$).|
00007a00  25 c6 18 ea 20 72 25 2c  70 25 2c 76 25 2c 46 25  |%... r%,p%,v%,F%|
00007a10  2c 76 6f 69 63 65 24 0d  25 d0 2b 70 25 3d bb 28  |,voice$.%.+p%=.(|
00007a20  c1 63 68 6f 69 63 65 24  2c 33 2c 31 29 29 3a 76  |.choice$,3,1)):v|
00007a30  25 3d bb 28 c1 63 68 6f  69 63 65 24 2c 35 29 29  |%=.(.choice$,5))|
00007a40  2b 31 0d 25 da 0b c8 8e  20 70 25 20 ca 0d 25 e4  |+1.%.... p% ..%.|
00007a50  33 20 c9 20 30 3a f2 74  69 63 6b 28 31 34 2c 63  |3 . 0:.tick(14,c|
00007a60  68 6f 72 64 5f 76 6f 69  63 65 25 2d 31 2c a3 29  |hord_voice%-1,.)|
00007a70  3a 63 68 6f 72 64 5f 76  6f 69 63 65 25 3d 76 25  |:chord_voice%=v%|
00007a80  0d 25 ee 20 20 20 f2 74  69 63 6b 28 31 34 2c 63  |.%.   .tick(14,c|
00007a90  68 6f 72 64 5f 76 6f 69  63 65 25 2d 31 2c b9 29  |hord_voice%-1,.)|
00007aa0  0d 25 f8 2f 20 20 c8 99  32 36 32 35 33 31 2c 30  |.%./  ..262531,0|
00007ab0  2c 63 68 6f 72 64 5f 76  6f 69 63 65 25 20 b8 20  |,chord_voice% . |
00007ac0  63 68 6f 72 64 5f 76 6f  69 63 65 24 2c 46 25 0d  |chord_voice$,F%.|
00007ad0  26 02 43 20 20 f2 70 75  74 5f 69 63 6f 6e 5f 74  |&.C  .put_icon_t|
00007ae0  65 78 74 28 6b 65 79 62  6f 61 72 64 5f 77 69 6e  |ext(keyboard_win|
00007af0  64 6f 77 25 2c 63 68 6f  72 64 5f 69 6e 73 5f 69  |dow%,chord_ins_i|
00007b00  63 6f 6e 25 2c 63 68 6f  72 64 5f 76 6f 69 63 65  |con%,chord_voice|
00007b10  24 29 0d 26 0c 31 20 c9  20 31 3a f2 74 69 63 6b  |$).&.1 . 1:.tick|
00007b20  28 31 35 2c 62 61 73 73  5f 76 6f 69 63 65 25 2d  |(15,bass_voice%-|
00007b30  31 2c a3 29 3a 62 61 73  73 5f 76 6f 69 63 65 25  |1,.):bass_voice%|
00007b40  3d 76 25 0d 26 16 1f 20  20 f2 74 69 63 6b 28 31  |=v%.&..  .tick(1|
00007b50  35 2c 62 61 73 73 5f 76  6f 69 63 65 25 2d 31 2c  |5,bass_voice%-1,|
00007b60  b9 29 0d 26 20 1c 20 20  c8 99 32 36 32 35 33 33  |.).& .  ..262533|
00007b70  2c 37 2c 62 61 73 73 5f  76 6f 69 63 65 25 0d 26  |,7,bass_voice%.&|
00007b80  2a 2d 20 20 c8 99 32 36  32 35 33 31 2c 30 2c 62  |*-  ..262531,0,b|
00007b90  61 73 73 5f 76 6f 69 63  65 25 20 b8 20 62 61 73  |ass_voice% . bas|
00007ba0  73 5f 76 6f 69 63 65 24  2c 46 25 0d 26 34 41 20  |s_voice$,F%.&4A |
00007bb0  20 f2 70 75 74 5f 69 63  6f 6e 5f 74 65 78 74 28  | .put_icon_text(|
00007bc0  6b 65 79 62 6f 61 72 64  5f 77 69 6e 64 6f 77 25  |keyboard_window%|
00007bd0  2c 62 61 73 73 5f 69 6e  73 5f 69 63 6f 6e 25 2c  |,bass_ins_icon%,|
00007be0  62 61 73 73 5f 76 6f 69  63 65 24 29 0d 26 3e 39  |bass_voice$).&>9|
00007bf0  20 c9 20 32 3a f2 74 69  63 6b 28 31 36 2c 6b 65  | . 2:.tick(16,ke|
00007c00  79 62 6f 61 72 64 5f 76  6f 69 63 65 25 2d 31 2c  |yboard_voice%-1,|
00007c10  a3 29 3a 6b 65 79 62 6f  61 72 64 5f 76 6f 69 63  |.):keyboard_voic|
00007c20  65 25 3d 76 25 0d 26 48  23 20 20 f2 74 69 63 6b  |e%=v%.&H#  .tick|
00007c30  28 31 36 2c 6b 65 79 62  6f 61 72 64 5f 76 6f 69  |(16,keyboard_voi|
00007c40  63 65 25 2d 31 2c b9 29  0d 26 52 20 20 20 c8 99  |ce%-1,.).&R   ..|
00007c50  32 36 32 35 33 33 2c 38  2c 6b 65 79 62 6f 61 72  |262533,8,keyboar|
00007c60  64 5f 76 6f 69 63 65 25  0d 26 5c 35 20 20 c8 99  |d_voice%.&\5  ..|
00007c70  32 36 32 35 33 31 2c 30  2c 6b 65 79 62 6f 61 72  |262531,0,keyboar|
00007c80  64 5f 76 6f 69 63 65 25  20 b8 20 6b 65 79 62 6f  |d_voice% . keybo|
00007c90  61 72 64 5f 76 6f 69 63  65 24 2c 46 25 0d 26 66  |ard_voice$,F%.&f|
00007ca0  49 20 20 f2 70 75 74 5f  69 63 6f 6e 5f 74 65 78  |I  .put_icon_tex|
00007cb0  74 28 6b 65 79 62 6f 61  72 64 5f 77 69 6e 64 6f  |t(keyboard_windo|
00007cc0  77 25 2c 6b 65 79 62 6f  61 72 64 5f 69 6e 73 5f  |w%,keyboard_ins_|
00007cd0  69 63 6f 6e 25 2c 6b 65  79 62 6f 61 72 64 5f 76  |icon%,keyboard_v|
00007ce0  6f 69 63 65 24 29 0d 26  70 12 20 c9 20 33 2c 34  |oice$).&p. . 3,4|
00007cf0  2c 35 2c 36 2c 37 2c 38  0d 26 7a 30 20 20 e7 20  |,5,6,7,8.&z0  . |
00007d00  c0 a4 67 65 74 5f 77 72  69 74 65 6d 28 31 30 31  |..get_writem(101|
00007d10  2b 66 78 25 28 70 25 2d  32 29 29 2c 31 29 3d c3  |+fx%(p%-2)),1)=.|
00007d20  28 70 25 2d 32 29 20 8c  0d 26 84 27 20 20 20 c8  |(p%-2) ..&.'   .|
00007d30  99 32 36 32 35 33 31 2c  30 2c 66 78 25 28 70 25  |.262531,0,fx%(p%|
00007d40  2d 32 29 20 b8 20 76 6f  69 63 65 24 2c 46 25 0d  |-2) . voice$,F%.|
00007d50  26 8e 2d 20 20 20 f2 70  75 74 5f 77 72 69 74 65  |&.-   .put_write|
00007d60  6d 28 31 30 31 2b 66 78  25 28 70 25 2d 32 29 2c  |m(101+fx%(p%-2),|
00007d70  22 20 20 22 2b 76 6f 69  63 65 24 29 0d 26 98 07  |"  "+voice$).&..|
00007d80  20 20 cd 0d 26 a2 12 20  20 66 78 25 28 70 25 2d  |  ..&..  fx%(p%-|
00007d90  32 29 3d 76 25 0d 26 ac  1f 20 20 c8 99 32 36 32  |2)=v%.&..  ..262|
00007da0  35 33 31 2c 30 2c 76 25  20 b8 20 76 6f 69 63 65  |531,0,v% . voice|
00007db0  24 2c 46 25 0d 26 b6 2c  20 20 f2 70 75 74 5f 77  |$,F%.&.,  .put_w|
00007dc0  72 69 74 65 6d 28 31 30  31 2b 76 25 2c c3 28 70  |ritem(101+v%,.(p|
00007dd0  25 2d 32 29 2b 22 20 22  2b 76 6f 69 63 65 24 29  |%-2)+" "+voice$)|
00007de0  0d 26 c0 08 20 c9 20 39  0d 26 ca 1a 20 20 e7 20  |.&.. . 9.&..  . |
00007df0  66 78 63 68 61 6e 6e 65  6c 25 28 76 25 29 3d b9  |fxchannel%(v%)=.|
00007e00  20 8c 0d 26 d4 28 20 20  20 66 78 63 68 61 6e 6e  | ..&.(   fxchann|
00007e10  65 6c 25 28 76 25 29 3d  a3 3a f2 74 69 63 6b 28  |el%(v%)=.:.tick(|
00007e20  31 38 2c 76 25 2d 31 2c  a3 29 0d 26 de 56 20 20  |18,v%-1,.).&.V  |
00007e30  20 e3 20 72 25 3d 30 20  b8 20 72 68 79 74 68 6d  | . r%=0 . rhythm|
00007e40  73 25 2d 31 3a f2 70 75  74 5f 69 63 6f 6e 5f 74  |s%-1:.put_icon_t|
00007e50  65 78 74 28 72 68 79 74  68 6d 5f 77 69 6e 64 6f  |ext(rhythm_windo|
00007e60  77 25 28 72 25 29 2c 28  76 25 2d 31 29 2a 35 2c  |w%(r%),(v%-1)*5,|
00007e70  c3 28 37 2d 76 25 29 2b  22 20 20 20 22 29 3a ed  |.(7-v%)+"   "):.|
00007e80  0d 26 e8 29 20 20 cc 20  66 78 63 68 61 6e 6e 65  |.&.)  . fxchanne|
00007e90  6c 25 28 76 25 29 3d b9  3a f2 74 69 63 6b 28 31  |l%(v%)=.:.tick(1|
00007ea0  38 2c 76 25 2d 31 2c b9  29 0d 26 f2 56 20 20 20  |8,v%-1,.).&.V   |
00007eb0  e3 20 72 25 3d 30 20 b8  20 72 68 79 74 68 6d 73  |. r%=0 . rhythms|
00007ec0  25 2d 31 3a f2 70 75 74  5f 69 63 6f 6e 5f 74 65  |%-1:.put_icon_te|
00007ed0  78 74 28 72 68 79 74 68  6d 5f 77 69 6e 64 6f 77  |xt(rhythm_window|
00007ee0  25 28 72 25 29 2c 28 76  25 2d 31 29 2a 35 2c c3  |%(r%),(v%-1)*5,.|
00007ef0  28 37 2d 76 25 29 2b 22  20 46 58 22 29 3a ed 0d  |(7-v%)+" FX"):..|
00007f00  26 fc 07 20 20 cd 0d 27  06 06 20 cb 0d 27 10 05  |&..  ..'.. ..'..|
00007f10  e1 0d 27 1a 05 3a 0d 27  24 26 dd f2 65 6e 74 65  |..'..:.'$&..ente|
00007f20  72 5f 63 68 6f 72 64 28  77 69 6e 64 6f 77 25 2c  |r_chord(window%,|
00007f30  69 63 6f 6e 25 2c 73 25  2c 63 25 29 0d 27 2e 11  |icon%,s%,c%).'..|
00007f40  ea 20 74 79 70 65 24 2c  78 25 2c 79 25 0d 27 38  |. type$,x%,y%.'8|
00007f50  3d 74 79 70 65 24 3d 22  77 72 69 74 65 22 3a 63  |=type$="write":c|
00007f60  68 6f 72 64 24 28 73 25  2c 63 25 29 3d a4 67 65  |hord$(s%,c%)=.ge|
00007f70  74 5f 69 63 6f 6e 5f 74  65 78 74 28 77 69 6e 64  |t_icon_text(wind|
00007f80  6f 77 25 2c 69 63 6f 6e  25 29 0d 27 42 19 e7 20  |ow%,icon%).'B.. |
00007f90  63 25 3d 73 65 71 75 6c  65 6e 25 28 73 25 29 2b  |c%=sequlen%(s%)+|
00007fa0  31 20 8c 0d 27 4c 14 20  73 65 71 75 6c 65 6e 25  |1 ..'L. sequlen%|
00007fb0  28 73 25 29 2b 3d 31 0d  27 56 0f 20 20 e7 20 63  |(s%)+=1.'V.  . c|
00007fc0  25 3c 33 32 20 8c 0d 27  60 1d 20 20 20 f2 63 6c  |%<32 ..'`.   .cl|
00007fd0  6f 73 65 5f 77 69 6e 64  6f 77 28 77 69 6e 64 6f  |ose_window(windo|
00007fe0  77 25 29 0d 27 6a 34 20  20 20 63 25 2b 3d 31 3a  |w%).'j4   c%+=1:|
00007ff0  78 25 3d 28 28 63 25 2d  31 29 83 34 29 2a 31 32  |x%=((c%-1).4)*12|
00008000  38 2b 34 3a 79 25 3d 2d  28 28 63 25 2d 31 29 81  |8+4:y%=-((c%-1).|
00008010  34 29 2a 35 36 2d 34 0d  27 74 1a 20 20 20 74 65  |4)*56-4.'t.   te|
00008020  78 74 24 3d 63 68 6f 72  64 24 28 73 25 2c 63 25  |xt$=chord$(s%,c%|
00008030  29 0d 27 7e 44 20 20 20  63 68 6f 72 64 5f 69 63  |).'~D   chord_ic|
00008040  6f 6e 25 28 73 25 2c 63  25 29 3d a4 61 64 64 5f  |on%(s%,c%)=.add_|
00008050  69 63 6f 6e 28 74 79 70  65 24 2c 74 65 78 74 24  |icon(type$,text$|
00008060  2c 77 69 6e 64 6f 77 25  2c 78 25 2c 79 25 2c 34  |,window%,x%,y%,4|
00008070  2c 30 2c 31 29 0d 27 88  34 20 20 20 f2 70 75 74  |,0,1).'.4   .put|
00008080  5f 69 63 6f 6e 5f 74 65  78 74 28 77 69 6e 64 6f  |_icon_text(windo|
00008090  77 25 2c 63 68 6f 72 64  5f 69 63 6f 6e 25 28 73  |w%,chord_icon%(s|
000080a0  25 2c 63 25 29 2c 22 22  29 0d 27 92 1b 20 20 20  |%,c%),"").'..   |
000080b0  74 65 78 74 24 3d 72 68  79 74 68 6d 24 28 73 25  |text$=rhythm$(s%|
000080c0  2c 63 25 29 0d 27 9c 48  20 20 20 72 68 79 74 68  |,c%).'.H   rhyth|
000080d0  6d 5f 69 63 6f 6e 25 28  73 25 2c 63 25 29 3d a4  |m_icon%(s%,c%)=.|
000080e0  61 64 64 5f 69 63 6f 6e  28 74 79 70 65 24 2c 74  |add_icon(type$,t|
000080f0  65 78 74 24 2c 77 69 6e  64 6f 77 25 2c 78 25 2b  |ext$,window%,x%+|
00008100  38 38 2c 79 25 2c 31 2c  30 2c 31 29 0d 27 a6 36  |88,y%,1,0,1).'.6|
00008110  20 20 20 f2 69 63 6f 6e  5f 62 67 5f 63 6f 6c 6f  |   .icon_bg_colo|
00008120  75 72 28 77 69 6e 64 6f  77 25 2c 72 68 79 74 68  |ur(window%,rhyth|
00008130  6d 5f 69 63 6f 6e 25 28  73 25 2c 63 25 29 2c 31  |m_icon%(s%,c%),1|
00008140  34 29 0d 27 b0 36 20 20  20 f2 69 63 6f 6e 5f 66  |4).'.6   .icon_f|
00008150  67 5f 63 6f 6c 6f 75 72  28 77 69 6e 64 6f 77 25  |g_colour(window%|
00008160  2c 72 68 79 74 68 6d 5f  69 63 6f 6e 25 28 73 25  |,rhythm_icon%(s%|
00008170  2c 63 25 29 2c 31 31 29  0d 27 ba 47 20 20 20 f2  |,c%),11).'.G   .|
00008180  6f 70 65 6e 5f 77 69 6e  64 6f 77 28 77 69 6e 64  |open_window(wind|
00008190  6f 77 25 29 3a f2 70 6c  61 63 65 5f 63 61 72 65  |ow%):.place_care|
000081a0  74 28 77 69 6e 64 6f 77  25 2c 63 68 6f 72 64 5f  |t(window%,chord_|
000081b0  69 63 6f 6e 25 28 73 25  2c 63 25 29 2c 30 29 0d  |icon%(s%,c%),0).|
000081c0  27 c4 08 20 20 20 cd 0d  27 ce 07 20 20 cc 0d 27  |'..   ..'..  ..'|
000081d0  d8 3b 20 20 20 e7 20 63  25 3c 33 32 20 f2 70 6c  |.;   . c%<32 .pl|
000081e0  61 63 65 5f 63 61 72 65  74 28 77 69 6e 64 6f 77  |ace_caret(window|
000081f0  25 2c 63 68 6f 72 64 5f  69 63 6f 6e 25 28 73 25  |%,chord_icon%(s%|
00008200  2c 63 25 2b 31 29 2c 30  29 0d 27 e2 06 20 cd 0d  |,c%+1),0).'.. ..|
00008210  27 ec 05 e1 0d 27 f6 05  3a 0d 28 00 2b dd f2 64  |'....'..:.(.+..d|
00008220  65 6c 65 74 65 5f 63 68  6f 72 64 28 77 69 6e 64  |elete_chord(wind|
00008230  6f 77 25 2c 69 63 6f 6e  25 2c 73 25 2c 63 68 6f  |ow%,icon%,s%,cho|
00008240  72 64 25 29 0d 28 0a 08  ea 20 63 25 0d 28 14 2e  |rd%).(... c%.(..|
00008250  e7 20 73 65 71 75 6c 65  6e 25 28 73 25 29 3d 31  |. sequlen%(s%)=1|
00008260  20 84 20 63 68 6f 72 64  25 3d 73 65 71 75 6c 65  | . chord%=sequle|
00008270  6e 25 28 73 25 29 2b 31  20 e1 0d 28 1e 32 e3 20  |n%(s%)+1 ..(.2. |
00008280  63 25 3d 63 68 6f 72 64  25 20 b8 20 73 65 71 75  |c%=chord% . sequ|
00008290  6c 65 6e 25 28 73 25 29  2b 31 2a 28 73 65 71 75  |len%(s%)+1*(sequ|
000082a0  6c 65 6e 25 28 73 25 29  3d 33 32 29 0d 28 28 22  |len%(s%)=32).(("|
000082b0  20 63 68 6f 72 64 24 28  73 25 2c 63 25 29 3d 63  | chord$(s%,c%)=c|
000082c0  68 6f 72 64 24 28 73 25  2c 63 25 2b 31 29 0d 28  |hord$(s%,c%+1).(|
000082d0  32 3d 20 f2 70 75 74 5f  69 63 6f 6e 5f 74 65 78  |2= .put_icon_tex|
000082e0  74 28 77 69 6e 64 6f 77  25 2c 63 68 6f 72 64 5f  |t(window%,chord_|
000082f0  69 63 6f 6e 25 28 73 25  2c 63 25 29 2c 63 68 6f  |icon%(s%,c%),cho|
00008300  72 64 24 28 73 25 2c 63  25 29 29 0d 28 3c 4b 20  |rd$(s%,c%)).(<K |
00008310  e7 20 63 68 6f 72 64 24  28 73 25 2c 63 25 2b 31  |. chord$(s%,c%+1|
00008320  29 3d 22 20 20 20 20 22  20 f2 70 75 74 5f 69 63  |)="    " .put_ic|
00008330  6f 6e 5f 74 65 78 74 28  77 69 6e 64 6f 77 25 2c  |on_text(window%,|
00008340  63 68 6f 72 64 5f 69 63  6f 6e 25 28 73 25 2c 63  |chord_icon%(s%,c|
00008350  25 29 2c 22 22 29 0d 28  46 24 20 72 68 79 74 68  |%),"").(F$ rhyth|
00008360  6d 24 28 73 25 2c 63 25  29 3d 72 68 79 74 68 6d  |m$(s%,c%)=rhythm|
00008370  24 28 73 25 2c 63 25 2b  31 29 0d 28 50 3f 20 f2  |$(s%,c%+1).(P? .|
00008380  70 75 74 5f 69 63 6f 6e  5f 74 65 78 74 28 77 69  |put_icon_text(wi|
00008390  6e 64 6f 77 25 2c 72 68  79 74 68 6d 5f 69 63 6f  |ndow%,rhythm_ico|
000083a0  6e 25 28 73 25 2c 63 25  29 2c 72 68 79 74 68 6d  |n%(s%,c%),rhythm|
000083b0  24 28 73 25 2c 63 25 29  29 0d 28 5a 06 20 ed 0d  |$(s%,c%)).(Z. ..|
000083c0  28 64 17 e7 20 73 65 71  75 6c 65 6e 25 28 73 25  |(d.. sequlen%(s%|
000083d0  29 3d 33 32 20 8c 0d 28  6e 17 20 63 68 6f 72 64  |)=32 ..(n. chord|
000083e0  24 28 73 25 2c 63 25 2b  31 29 3d 22 22 0d 28 78  |$(s%,c%+1)="".(x|
000083f0  41 20 f2 70 75 74 5f 69  63 6f 6e 5f 74 65 78 74  |A .put_icon_text|
00008400  28 77 69 6e 64 6f 77 25  2c 63 68 6f 72 64 5f 69  |(window%,chord_i|
00008410  63 6f 6e 25 28 73 25 2c  63 2b 31 25 29 2c 63 68  |con%(s%,c+1%),ch|
00008420  6f 72 64 24 28 73 25 2c  63 2b 31 25 29 29 0d 28  |ord$(s%,c+1%)).(|
00008430  82 05 cc 0d 28 8c 0f 20  e3 20 63 25 3d 30 20 b8  |....(.. . c%=0 .|
00008440  20 34 0d 28 96 3d 20 20  f2 64 65 6c 65 74 65 5f  | 4.(.=  .delete_|
00008450  69 63 6f 6e 28 77 69 6e  64 6f 77 25 2c 63 68 6f  |icon(window%,cho|
00008460  72 64 5f 69 63 6f 6e 25  28 73 25 2c 73 65 71 75  |rd_icon%(s%,sequ|
00008470  6c 65 6e 25 28 73 25 29  2b 31 29 2b 63 25 29 0d  |len%(s%)+1)+c%).|
00008480  28 a0 3e 20 20 f2 64 65  6c 65 74 65 5f 69 63 6f  |(.>  .delete_ico|
00008490  6e 28 77 69 6e 64 6f 77  25 2c 72 68 79 74 68 6d  |n(window%,rhythm|
000084a0  5f 69 63 6f 6e 25 28 73  25 2c 73 65 71 75 6c 65  |_icon%(s%,sequle|
000084b0  6e 25 28 73 25 29 2b 31  29 2b 63 25 29 0d 28 aa  |n%(s%)+1)+c%).(.|
000084c0  06 20 ed 0d 28 b4 05 cd  0d 28 be 13 73 65 71 75  |. ..(....(..sequ|
000084d0  6c 65 6e 25 28 73 25 29  2d 3d 31 0d 28 c8 05 e1  |len%(s%)-=1.(...|
000084e0  0d 28 d2 05 3a 0d 28 dc  2b dd f2 69 6e 73 65 72  |.(..:.(.+..inser|
000084f0  74 5f 63 68 6f 72 64 28  77 69 6e 64 6f 77 25 2c  |t_chord(window%,|
00008500  69 63 6f 6e 25 2c 73 25  2c 63 68 6f 72 64 25 29  |icon%,s%,chord%)|
00008510  0d 28 e6 2d e7 20 73 65  71 75 6c 65 6e 25 28 73  |.(.-. sequlen%(s|
00008520  25 29 3d 33 32 20 84 20  63 68 6f 72 64 25 3e 73  |%)=32 . chord%>s|
00008530  65 71 75 6c 65 6e 25 28  73 25 29 20 e1 0d 28 f0  |equlen%(s%) ..(.|
00008540  14 ea 20 63 25 2c 74 79  70 65 24 2c 78 25 2c 79  |.. c%,type$,x%,y|
00008550  25 0d 28 fa 11 74 79 70  65 24 3d 22 77 72 69 74  |%.(..type$="writ|
00008560  65 22 0d 29 04 1a f2 63  6c 6f 73 65 5f 77 69 6e  |e".)...close_win|
00008570  64 6f 77 28 77 69 6e 64  6f 77 25 29 0d 29 0e 17  |dow(window%).)..|
00008580  e7 20 73 65 71 75 6c 65  6e 25 28 73 25 29 3c 33  |. sequlen%(s%)<3|
00008590  31 20 8c 0d 29 18 3e 20  63 25 3d 73 65 71 75 6c  |1 ..).> c%=sequl|
000085a0  65 6e 25 28 73 25 29 2b  32 3a 78 25 3d 28 28 63  |en%(s%)+2:x%=((c|
000085b0  25 2d 31 29 83 34 29 2a  31 32 38 2b 34 3a 79 25  |%-1).4)*128+4:y%|
000085c0  3d 2d 28 28 63 25 2d 31  29 81 34 29 2a 35 36 2d  |=-((c%-1).4)*56-|
000085d0  34 0d 29 22 43 20 63 68  6f 72 64 5f 69 63 6f 6e  |4.)"C chord_icon|
000085e0  25 28 73 25 2c 63 25 29  3d a4 61 64 64 5f 69 63  |%(s%,c%)=.add_ic|
000085f0  6f 6e 28 74 79 70 65 24  2c 22 20 20 20 20 22 2c  |on(type$,"    ",|
00008600  77 69 6e 64 6f 77 25 2c  78 25 2c 79 25 2c 34 2c  |window%,x%,y%,4,|
00008610  30 2c 31 29 0d 29 2c 32  20 f2 70 75 74 5f 69 63  |0,1).),2 .put_ic|
00008620  6f 6e 5f 74 65 78 74 28  77 69 6e 64 6f 77 25 2c  |on_text(window%,|
00008630  63 68 6f 72 64 5f 69 63  6f 6e 25 28 73 25 2c 63  |chord_icon%(s%,c|
00008640  25 29 2c 22 22 29 0d 29  36 44 20 72 68 79 74 68  |%),"").)6D rhyth|
00008650  6d 5f 69 63 6f 6e 25 28  73 25 2c 63 25 29 3d a4  |m_icon%(s%,c%)=.|
00008660  61 64 64 5f 69 63 6f 6e  28 74 79 70 65 24 2c 22  |add_icon(type$,"|
00008670  61 22 2c 77 69 6e 64 6f  77 25 2c 78 25 2b 38 38  |a",window%,x%+88|
00008680  2c 79 25 2c 31 2c 30 2c  31 29 0d 29 40 34 20 f2  |,y%,1,0,1).)@4 .|
00008690  69 63 6f 6e 5f 62 67 5f  63 6f 6c 6f 75 72 28 77  |icon_bg_colour(w|
000086a0  69 6e 64 6f 77 25 2c 72  68 79 74 68 6d 5f 69 63  |indow%,rhythm_ic|
000086b0  6f 6e 25 28 73 25 2c 63  25 29 2c 31 34 29 0d 29  |on%(s%,c%),14).)|
000086c0  4a 34 20 f2 69 63 6f 6e  5f 66 67 5f 63 6f 6c 6f  |J4 .icon_fg_colo|
000086d0  75 72 28 77 69 6e 64 6f  77 25 2c 72 68 79 74 68  |ur(window%,rhyth|
000086e0  6d 5f 69 63 6f 6e 25 28  73 25 2c 63 25 29 2c 31  |m_icon%(s%,c%),1|
000086f0  31 29 0d 29 54 06 20 cd  0d 29 5e 13 73 65 71 75  |1).)T. ..)^.sequ|
00008700  6c 65 6e 25 28 73 25 29  2b 3d 31 0d 29 68 25 e3  |len%(s%)+=1.)h%.|
00008710  20 63 25 3d 73 65 71 75  6c 65 6e 25 28 73 25 29  | c%=sequlen%(s%)|
00008720  20 b8 20 63 68 6f 72 64  25 2b 31 20 88 20 2d 31  | . chord%+1 . -1|
00008730  0d 29 72 22 20 63 68 6f  72 64 24 28 73 25 2c 63  |.)r" chord$(s%,c|
00008740  25 29 3d 63 68 6f 72 64  24 28 73 25 2c 63 25 2d  |%)=chord$(s%,c%-|
00008750  31 29 0d 29 7c 3d 20 f2  70 75 74 5f 69 63 6f 6e  |1).)|= .put_icon|
00008760  5f 74 65 78 74 28 77 69  6e 64 6f 77 25 2c 63 68  |_text(window%,ch|
00008770  6f 72 64 5f 69 63 6f 6e  25 28 73 25 2c 63 25 29  |ord_icon%(s%,c%)|
00008780  2c 63 68 6f 72 64 24 28  73 25 2c 63 25 29 29 0d  |,chord$(s%,c%)).|
00008790  29 86 24 20 72 68 79 74  68 6d 24 28 73 25 2c 63  |).$ rhythm$(s%,c|
000087a0  25 29 3d 72 68 79 74 68  6d 24 28 73 25 2c 63 25  |%)=rhythm$(s%,c%|
000087b0  2d 31 29 0d 29 90 3f 20  f2 70 75 74 5f 69 63 6f  |-1).).? .put_ico|
000087c0  6e 5f 74 65 78 74 28 77  69 6e 64 6f 77 25 2c 72  |n_text(window%,r|
000087d0  68 79 74 68 6d 5f 69 63  6f 6e 25 28 73 25 2c 63  |hythm_icon%(s%,c|
000087e0  25 29 2c 72 68 79 74 68  6d 24 28 73 25 2c 63 25  |%),rhythm$(s%,c%|
000087f0  29 29 0d 29 9a 06 20 ed  0d 29 a4 4a 63 68 6f 72  |)).).. ..).Jchor|
00008800  64 24 28 73 25 2c 63 68  6f 72 64 25 29 3d 22 20  |d$(s%,chord%)=" |
00008810  20 20 20 22 3a f2 70 75  74 5f 69 63 6f 6e 5f 74  |   ":.put_icon_t|
00008820  65 78 74 28 77 69 6e 64  6f 77 25 2c 63 68 6f 72  |ext(window%,chor|
00008830  64 5f 69 63 6f 6e 25 28  73 25 2c 63 25 29 2c 22  |d_icon%(s%,c%),"|
00008840  22 29 0d 29 ae 48 f2 6f  70 65 6e 5f 77 69 6e 64  |").).H.open_wind|
00008850  6f 77 28 77 69 6e 64 6f  77 25 29 3a f2 70 6c 61  |ow(window%):.pla|
00008860  63 65 5f 63 61 72 65 74  28 77 69 6e 64 6f 77 25  |ce_caret(window%|
00008870  2c 63 68 6f 72 64 5f 69  63 6f 6e 25 28 73 25 2c  |,chord_icon%(s%,|
00008880  63 68 6f 72 64 25 29 2c  30 29 0d 29 b8 05 e1 0d  |chord%),0).)....|
00008890  29 c2 05 3a 0d 29 cc 12  dd f2 6b 65 79 62 6f 61  |)..:.)....keyboa|
000088a0  72 64 28 6b 25 29 0d 29  d6 39 4e 25 3d a7 6c 6f  |rd(k%).).9N%=.lo|
000088b0  77 6b 65 79 24 2c bd 6b  25 29 2b a7 68 69 67 68  |wkey$,.k%)+.high|
000088c0  6b 65 79 24 2c bd 6b 25  29 2d 31 32 2a 28 a7 68  |key$,.k%)-12*(.h|
000088d0  69 67 68 6b 65 79 24 2c  bd 6b 25 29 3e 30 29 0d  |ighkey$,.k%)>0).|
000088e0  29 e0 2a e7 20 a7 6c 6f  77 6b 65 79 24 2c bd 6b  |).*. .lowkey$,.k|
000088f0  25 29 20 4c 25 3d 6c 6b  63 3f 28 a7 6c 6f 77 6b  |%) L%=lkc?(.lowk|
00008900  65 79 24 2c bd 6b 25 29  29 0d 29 ea 2c e7 20 a7  |ey$,.k%)).).,. .|
00008910  68 69 67 68 6b 65 79 24  2c bd 6b 25 29 20 4c 25  |highkey$,.k%) L%|
00008920  3d 68 6b 63 3f 28 a7 68  69 67 68 6b 65 79 24 2c  |=hkc?(.highkey$,|
00008930  bd 6b 25 29 29 0d 29 f4  14 e7 20 4e 25 3d 30 20  |.k%)).)... N%=0 |
00008940  4e 25 3d a6 28 2d 4c 25  29 0d 29 fe 16 e7 20 4e  |N%=.(-L%).)... N|
00008950  25 3d 2d 31 20 84 20 4e  25 3d 32 35 35 20 e1 0d  |%=-1 . N%=255 ..|
00008960  2a 08 17 e7 20 4e 25 3d  30 20 d4 20 38 2c 30 2c  |*... N%=0 . 8,0,|
00008970  30 2c 2d 31 3a e1 0d 2a  12 33 d4 20 38 2c 2d 31  |0,-1:..*.3. 8,-1|
00008980  35 2c 28 4e 25 2d 31 29  2a 26 31 35 35 2b 28 6b  |5,(N%-1)*&155+(k|
00008990  6f 63 74 25 2a 26 31 30  30 30 29 2b 74 72 61 6e  |oct%*&1000)+tran|
000089a0  73 25 2a 26 32 42 2c 2d  31 0d 2a 1c 05 e1 0d 2a  |s%*&2B,-1.*....*|
000089b0  26 05 3a 0d 2a 30 0b dd  f2 73 74 72 75 6d 0d 2a  |&.:.*0...strum.*|
000089c0  3a 12 ea 20 63 68 25 2c  69 25 2c 76 25 2c 70 25  |:.. ch%,i%,v%,p%|
000089d0  0d 2a 44 0f e3 20 63 68  25 3d 31 20 b8 20 36 0d  |.*D.. ch%=1 . 6.|
000089e0  2a 4e 22 20 69 25 3d 30  3a 76 25 3d 2d 31 3a 69  |*N" i%=0:v%=-1:i|
000089f0  25 3d 69 6e 73 25 28 52  25 2c 63 68 25 2c 42 25  |%=ins%(R%,ch%,B%|
00008a00  29 0d 2a 58 0b 20 e7 20  69 25 20 8c 0d 2a 62 3c  |).*X. . i% ..*b<|
00008a10  20 20 76 25 3d 76 6f 6c  25 28 52 25 2c 63 68 25  |  v%=vol%(R%,ch%|
00008a20  2c 42 25 29 2a 66 78 76  6f 6c 25 3a e7 20 76 25  |,B%)*fxvol%:. v%|
00008a30  3e 2d 31 20 c8 99 32 36  32 35 33 33 2c 63 68 25  |>-1 ..262533,ch%|
00008a40  2c 66 78 25 28 69 25 29  0d 2a 6c 06 20 cc 0d 2a  |,fx%(i%).*l. ..*|
00008a50  76 40 20 20 76 25 3d 76  6f 6c 25 28 52 25 2c 63  |v@  v%=vol%(R%,c|
00008a60  68 25 2c 42 25 29 2a 63  76 6f 6c 25 3a e7 20 76  |h%,B%)*cvol%:. v|
00008a70  25 3e 2d 31 20 c8 99 32  36 32 35 33 33 2c 63 68  |%>-1 ..262533,ch|
00008a80  25 2c 63 68 6f 72 64 5f  76 6f 69 63 65 25 0d 2a  |%,chord_voice%.*|
00008a90  80 06 20 cd 0d 2a 8a 57  20 e7 20 66 78 63 68 61  |.. ..*.W . fxcha|
00008aa0  6e 6e 65 6c 25 28 63 68  25 29 3d a3 20 70 25 3d  |nnel%(ch%)=. p%=|
00008ab0  70 25 28 37 2d 63 68 25  29 2a 26 31 35 35 2b 63  |p%(7-ch%)*&155+c|
00008ac0  6f 63 74 25 2a 26 31 30  30 30 2b 74 72 61 6e 73  |oct%*&1000+trans|
00008ad0  25 2a 26 32 42 20 8b 20  70 25 3d 26 33 30 30 30  |%*&2B . p%=&3000|
00008ae0  2b 74 72 61 6e 73 25 2a  26 32 42 0d 2a 94 2c 20  |+trans%*&2B.*., |
00008af0  e7 20 76 25 3e 2d 31 20  e7 20 70 25 28 37 2d 63  |. v%>-1 . p%(7-c|
00008b00  68 25 29 3e 2d 31 20 d4  20 63 68 25 2c 2d 76 25  |h%)>-1 . ch%,-v%|
00008b10  2c 70 25 2c 32 35 35 0d  2a 9e 05 ed 0d 2a a8 4b  |,p%,255.*....*.K|
00008b20  76 25 3d 76 6f 6c 25 28  52 25 2c 37 2c 42 25 29  |v%=vol%(R%,7,B%)|
00008b30  2a 62 76 6f 6c 25 3a 70  25 3d 70 25 28 69 6e 73  |*bvol%:p%=p%(ins|
00008b40  25 28 52 25 2c 37 2c 42  25 29 29 2a 26 31 35 35  |%(R%,7,B%))*&155|
00008b50  2b 62 6f 63 74 25 2a 26  31 30 30 30 2b 74 72 61  |+boct%*&1000+tra|
00008b60  6e 73 25 2a 26 32 42 0d  2a b2 31 e7 20 76 25 3e  |ns%*&2B.*.1. v%>|
00008b70  2d 31 20 e7 20 70 25 28  69 6e 73 25 28 52 25 2c  |-1 . p%(ins%(R%,|
00008b80  37 2c 42 25 29 29 3e 2d  31 20 d4 20 37 2c 2d 76  |7,B%))>-1 . 7,-v|
00008b90  25 2c 70 25 2c 32 35 35  0d 2a bc 14 e7 20 74 65  |%,p%,255.*... te|
00008ba0  6d 70 6f 25 3e 37 20 f2  62 65 61 74 0d 2a c6 46  |mpo%>7 .beat.*.F|
00008bb0  e7 20 42 25 3d 31 20 f2  69 63 6f 6e 5f 62 67 5f  |. B%=1 .icon_bg_|
00008bc0  63 6f 6c 6f 75 72 28 73  65 71 75 65 6e 63 65 5f  |colour(sequence_|
00008bd0  77 69 6e 64 6f 77 25 28  5a 25 29 2c 63 68 6f 72  |window%(Z%),chor|
00008be0  64 5f 69 63 6f 6e 25 28  5a 25 2c 43 25 29 2c 31  |d_icon%(Z%,C%),1|
00008bf0  30 29 0d 2a d0 09 42 25  2b 3d 31 0d 2a da 17 e7  |0).*..B%+=1.*...|
00008c00  20 42 25 3e 6e 6f 62 65  61 74 73 25 28 52 25 29  | B%>nobeats%(R%)|
00008c10  20 8c 0d 2a e4 37 20 42  25 3d 31 3a e7 20 70 6c  | ..*.7 B%=1:. pl|
00008c20  61 79 5f 73 65 71 75 65  6e 63 65 25 3d a3 20 80  |ay_sequence%=. .|
00008c30  20 72 65 70 65 61 74 25  3d a3 20 70 6c 61 79 5f  | repeat%=. play_|
00008c40  72 68 79 74 68 6d 25 3d  a3 0d 2a ee 3f 20 f2 69  |rhythm%=..*.? .i|
00008c50  63 6f 6e 5f 62 67 5f 63  6f 6c 6f 75 72 28 73 65  |con_bg_colour(se|
00008c60  71 75 65 6e 63 65 5f 77  69 6e 64 6f 77 25 28 5a  |quence_window%(Z|
00008c70  25 29 2c 63 68 6f 72 64  5f 69 63 6f 6e 25 28 5a  |%),chord_icon%(Z|
00008c80  25 2c 43 25 29 2c 30 29  0d 2a f8 1d 20 e7 20 70  |%,C%),0).*.. . p|
00008c90  6c 61 79 5f 73 65 71 75  65 6e 63 65 25 3d b9 20  |lay_sequence%=. |
00008ca0  43 25 2b 3d 31 0d 2b 02  18 20 e7 20 43 25 3e 73  |C%+=1.+.. . C%>s|
00008cb0  65 71 75 6c 65 6e 25 28  5a 25 29 20 8c 0d 2b 0c  |equlen%(Z%) ..+.|
00008cc0  45 20 20 43 25 3d 31 3a  e7 20 70 6c 61 79 5f 73  |E  C%=1:. play_s|
00008cd0  6f 6e 67 25 3d a3 20 80  20 72 65 70 65 61 74 25  |ong%=. . repeat%|
00008ce0  3d a3 20 70 6c 61 79 5f  73 65 71 75 65 6e 63 65  |=. play_sequence|
00008cf0  25 3d a3 3a 70 6c 61 79  5f 72 68 79 74 68 6d 25  |%=.:play_rhythm%|
00008d00  3d a3 0d 2b 16 1a 20 20  e7 20 70 6c 61 79 5f 73  |=..+..  . play_s|
00008d10  6f 6e 67 25 3d b9 20 53  25 2b 3d 31 0d 2b 20 1a  |ong%=. S%+=1.+ .|
00008d20  20 20 e7 20 53 25 3e a9  28 73 74 72 75 63 74 75  |  . S%>.(structu|
00008d30  72 65 24 29 20 8c 0d 2b  2a 44 20 20 20 53 25 3d  |re$) ..+*D   S%=|
00008d40  31 3a e7 20 72 65 70 65  61 74 25 3d a3 20 70 6c  |1:. repeat%=. pl|
00008d50  61 79 5f 73 6f 6e 67 25  3d a3 3a 70 6c 61 79 5f  |ay_song%=.:play_|
00008d60  73 65 71 75 65 6e 63 65  25 3d a3 3a 70 6c 61 79  |sequence%=.:play|
00008d70  5f 72 68 79 74 68 6d 25  3d a3 0d 2b 34 07 20 20  |_rhythm%=..+4.  |
00008d80  cd 0d 2b 3e 58 20 20 73  74 72 75 63 74 75 72 65  |..+>X  structure|
00008d90  5f 70 6f 73 24 3d c0 73  74 72 75 63 74 75 72 65  |_pos$=.structure|
00008da0  24 2c 53 25 2d 31 29 2b  22 28 22 2b c1 73 74 72  |$,S%-1)+"("+.str|
00008db0  75 63 74 75 72 65 24 2c  53 25 2c 31 29 2b 22 29  |ucture$,S%,1)+")|
00008dc0  22 2b c1 73 74 72 75 63  74 75 72 65 24 2c 53 25  |"+.structure$,S%|
00008dd0  2b 31 2c 31 39 2d 53 25  29 0d 2b 48 45 20 20 f2  |+1,19-S%).+HE  .|
00008de0  70 75 74 5f 69 63 6f 6e  5f 74 65 78 74 28 6b 65  |put_icon_text(ke|
00008df0  79 62 6f 61 72 64 5f 77  69 6e 64 6f 77 25 2c 73  |yboard_window%,s|
00008e00  74 72 75 63 74 75 72 65  5f 69 63 6f 6e 25 2c 73  |tructure_icon%,s|
00008e10  74 72 75 63 74 75 72 65  5f 70 6f 73 24 29 0d 2b  |tructure_pos$).+|
00008e20  52 2d 20 20 e7 20 70 6c  61 79 5f 73 6f 6e 67 25  |R-  . play_song%|
00008e30  20 5a 25 3d 97 28 c1 73  74 72 75 63 74 75 72 65  | Z%=.(.structure|
00008e40  24 2c 53 25 2c 31 29 29  2d 36 35 0d 2b 5c 06 20  |$,S%,1))-65.+\. |
00008e50  cd 0d 2b 66 43 20 e7 20  70 6c 61 79 5f 73 65 71  |..+fC . play_seq|
00008e60  75 65 6e 63 65 25 20 f2  63 68 6f 72 64 28 63 68  |uence% .chord(ch|
00008e70  6f 72 64 24 28 5a 25 2c  43 25 29 29 3a 52 25 3d  |ord$(Z%,C%)):R%=|
00008e80  97 28 72 68 79 74 68 6d  24 28 5a 25 2c 43 25 29  |.(rhythm$(Z%,C%)|
00008e90  29 2d 39 37 0d 2b 70 05  cd 0d 2b 7a 05 e1 0d 2b  |)-97.+p...+z...+|
00008ea0  84 05 3a 0d 2b 8e 0a dd  f2 62 65 61 74 0d 2b 98  |..:.+....beat.+.|
00008eb0  4c f2 69 63 6f 6e 5f 62  67 5f 63 6f 6c 6f 75 72  |L.icon_bg_colour|
00008ec0  28 72 68 79 74 68 6d 5f  77 69 6e 64 6f 77 25 28  |(rhythm_window%(|
00008ed0  6c 61 73 74 5f 72 25 29  2c 62 65 61 74 5f 69 63  |last_r%),beat_ic|
00008ee0  6f 6e 25 28 31 2c 6c 61  73 74 5f 62 25 29 2c 6c  |on%(1,last_b%),l|
00008ef0  61 73 74 5f 76 6f 6c 25  29 0d 2b a2 3b f2 69 63  |ast_vol%).+.;.ic|
00008f00  6f 6e 5f 62 67 5f 63 6f  6c 6f 75 72 28 72 68 79  |on_bg_colour(rhy|
00008f10  74 68 6d 5f 77 69 6e 64  6f 77 25 28 52 25 29 2c  |thm_window%(R%),|
00008f20  62 65 61 74 5f 69 63 6f  6e 25 28 31 2c 42 25 29  |beat_icon%(1,B%)|
00008f30  2c 31 34 29 0d 2b ac 4c  6c 61 73 74 5f 72 25 3d  |,14).+.Llast_r%=|
00008f40  52 25 3a 6c 61 73 74 5f  62 25 3d 42 25 3a 6c 61  |R%:last_b%=B%:la|
00008f50  73 74 5f 76 6f 6c 25 3d  76 6f 6c 25 28 52 25 2c  |st_vol%=vol%(R%,|
00008f60  31 2c 42 25 29 3a e7 20  6c 61 73 74 5f 76 6f 6c  |1,B%):. last_vol|
00008f70  25 3c 30 20 6c 61 73 74  5f 76 6f 6c 25 3d 31 35  |%<0 last_vol%=15|
00008f80  0d 2b b6 05 e1 0d 2b c0  05 3a 0d 2b ca 0f dd f2  |.+....+..:.+....|
00008f90  63 68 6f 72 64 28 63 24  29 0d 2b d4 08 ea 20 72  |chord(c$).+... r|
00008fa0  25 0d 2b de 0e e7 20 63  24 3d 22 2f 22 20 e1 0d  |%.+... c$="/" ..|
00008fb0  2b e8 22 e7 20 63 24 3d  22 22 20 84 20 c0 63 24  |+.". c$="" . .c$|
00008fc0  2c 31 29 3d 22 20 22 20  70 25 28 29 3d 2d 31 3a  |,1)=" " p%()=-1:|
00008fd0  e1 0d 2b f2 17 72 25 3d  a7 72 6f 6f 74 24 2c c0  |..+..r%=.root$,.|
00008fe0  63 24 2c 31 29 29 2d 31  0d 2b fc 14 e7 20 a7 63  |c$,1))-1.+... .c|
00008ff0  24 2c 22 23 22 29 20 72  25 2b 3d 31 0d 2c 06 14  |$,"#") r%+=1.,..|
00009000  e7 20 a7 63 24 2c 22 62  22 29 20 72 25 2d 3d 31  |. .c$,"b") r%-=1|
00009010  0d 2c 10 3b 70 25 28 29  3d 72 25 3a 70 25 28 32  |.,.;p%()=r%:p%(2|
00009020  29 2b 3d 34 3a 70 25 28  33 29 2b 3d 37 3a 70 25  |)+=4:p%(3)+=7:p%|
00009030  28 34 29 2b 3d 31 32 3a  70 25 28 35 29 2b 3d 31  |(4)+=12:p%(5)+=1|
00009040  36 3a 70 25 28 36 29 2b  3d 31 39 0d 2c 1a 3a e7  |6:p%(6)+=19.,.:.|
00009050  20 28 a7 63 24 2c 22 6d  22 29 20 84 20 a7 63 24  | (.c$,"m") . .c$|
00009060  2c 22 2d 22 29 29 20 80  20 ac 20 a7 63 24 2c 22  |,"-")) . . .c$,"|
00009070  4d 22 29 20 70 25 28 32  29 2d 3d 31 3a 70 25 28  |M") p%(2)-=1:p%(|
00009080  35 29 2d 3d 31 0d 2c 24  32 e7 20 28 a7 63 24 2c  |5)-=1.,$2. (.c$,|
00009090  22 37 22 29 20 84 20 a7  63 24 2c 22 31 31 22 29  |"7") . .c$,"11")|
000090a0  29 20 80 20 ac 20 a7 63  24 2c 22 4d 22 29 20 70  |) . . .c$,"M") p|
000090b0  25 28 34 29 2d 3d 32 0d  2c 2e 18 e7 20 a7 63 24  |%(4)-=2.,... .c$|
000090c0  2c 22 4d 37 22 29 20 70  25 28 34 29 2d 3d 31 0d  |,"M7") p%(4)-=1.|
000090d0  2c 38 20 e7 20 a7 63 24  2c 22 2b 22 29 20 70 25  |,8 . .c$,"+") p%|
000090e0  28 33 29 2b 3d 31 3a 70  25 28 36 29 2b 3d 31 0d  |(3)+=1:p%(6)+=1.|
000090f0  2c 42 3b e7 20 a7 63 24  2c 22 2d 22 29 20 70 25  |,B;. .c$,"-") p%|
00009100  28 32 29 2d 3d 31 3a 70  25 28 33 29 2d 3d 31 3a  |(2)-=1:p%(3)-=1:|
00009110  70 25 28 34 29 2d 3d 33  3a 70 25 28 35 29 2d 3d  |p%(4)-=3:p%(5)-=|
00009120  34 3a 70 25 28 36 29 2d  3d 35 0d 2c 4c 2c e7 20  |4:p%(6)-=5.,L,. |
00009130  a7 63 24 2c 22 73 22 29  20 84 20 a7 63 24 2c 22  |.c$,"s") . .c$,"|
00009140  31 31 22 29 20 70 25 28  32 29 2b 3d 31 3a 70 25  |11") p%(2)+=1:p%|
00009150  28 35 29 2b 3d 31 0d 2c  56 2c e7 20 a7 63 24 2c  |(5)+=1.,V,. .c$,|
00009160  22 36 22 29 20 84 20 a7  63 24 2c 22 31 33 22 29  |"6") . .c$,"13")|
00009170  20 70 25 28 33 29 2b 3d  32 3a 70 25 28 36 29 2b  | p%(3)+=2:p%(6)+|
00009180  3d 32 0d 2c 60 23 e7 20  a7 63 24 2c 22 39 22 29  |=2.,`#. .c$,"9")|
00009190  20 84 20 a7 63 24 2c 22  31 33 22 29 20 70 25 28  | . .c$,"13") p%(|
000091a0  34 29 2b 3d 32 0d 2c 6a  05 e1 0d 2c 74 05 3a 0d  |4)+=2.,j...,t.:.|
000091b0  2c 7e 16 dd a4 66 69 6c  65 5f 73 69 7a 65 28 66  |,~...file_size(f|
000091c0  69 6c 65 24 29 0d 2c 88  12 ea 20 73 69 7a 65 25  |ile$).,... size%|
000091d0  2c 66 6f 75 6e 64 25 0d  2c 92 22 c8 99 38 2c 31  |,found%.,."..8,1|
000091e0  37 2c 66 69 6c 65 24 20  b8 20 66 6f 75 6e 64 25  |7,file$ . found%|
000091f0  2c 2c 2c 2c 73 69 7a 65  25 0d 2c 9c 3c e7 20 66  |,,,,size%.,.<. f|
00009200  6f 75 6e 64 25 3c 3e 31  20 8c 20 85 20 32 30 33  |ound%<>1 . . 203|
00009210  2c 22 46 69 6c 65 20 27  22 2b a4 6c 65 61 66 28  |,"File '"+.leaf(|
00009220  66 69 6c 65 24 29 2b 22  27 20 6e 6f 74 20 66 6f  |file$)+"' not fo|
00009230  75 6e 64 21 22 0d 2c a6  0a 3d 73 69 7a 65 25 0d  |und!".,..=size%.|
00009240  2c b0 05 3a 0d 2c ba 16  dd a4 66 69 6c 65 5f 74  |,..:.,....file_t|
00009250  79 70 65 28 66 69 6c 65  24 29 0d 2c c4 12 ea 20  |ype(file$).,... |
00009260  74 65 6d 70 25 2c 66 6f  75 6e 64 25 0d 2c ce 28  |temp%,found%.,.(|
00009270  c8 99 22 4f 53 5f 46 69  6c 65 22 2c 31 37 2c 66  |.."OS_File",17,f|
00009280  69 6c 65 24 20 b8 20 66  6f 75 6e 64 25 2c 2c 74  |ile$ . found%,,t|
00009290  65 6d 70 25 0d 2c d8 3b  e7 20 66 6f 75 6e 64 25  |emp%.,.;. found%|
000092a0  3c 3e 31 20 8c 20 85 20  32 30 33 2c 22 46 69 6c  |<>1 . . 203,"Fil|
000092b0  65 20 22 2b a4 6c 65 61  66 28 66 69 6c 65 24 29  |e "+.leaf(file$)|
000092c0  2b 22 2c 20 6e 6f 74 20  66 6f 75 6e 64 21 22 0d  |+", not found!".|
000092d0  2c e2 2c e7 28 74 65 6d  70 25 3e 3e 3e 32 30 29  |,.,.(temp%>>>20)|
000092e0  3d 26 46 46 46 8c 3d 28  74 65 6d 70 25 3e 3e 3e  |=&FFF.=(temp%>>>|
000092f0  38 29 80 26 46 46 46 20  8b 3d 30 0d 2c ec 05 3a  |8).&FFF .=0.,..:|
00009300  0d 2c f6 41 dd f2 69 6e  69 74 69 61 74 65 5f 73  |.,.A..initiate_s|
00009310  61 76 65 28 77 69 6e 64  6f 77 25 2c 69 63 6f 6e  |ave(window%,icon|
00009320  25 2c 78 25 2c 79 25 2c  66 69 6c 65 24 2c 73 74  |%,x%,y%,file$,st|
00009330  61 72 74 25 2c 73 69 7a  65 25 2c 74 79 70 65 25  |art%,size%,type%|
00009340  29 0d 2d 00 0e 62 6c 6b  25 21 30 3d 32 35 36 0d  |).-..blk%!0=256.|
00009350  2d 0a 0d 62 6c 6b 25 21  31 32 3d 30 0d 2d 14 0d  |-..blk%!12=0.-..|
00009360  62 6c 6b 25 21 31 36 3d  31 0d 2d 1e 13 62 6c 6b  |blk%!16=1.-..blk|
00009370  25 21 32 30 3d 77 69 6e  64 6f 77 25 0d 2d 28 11  |%!20=window%.-(.|
00009380  62 6c 6b 25 21 32 34 3d  69 63 6f 6e 25 0d 2d 32  |blk%!24=icon%.-2|
00009390  0e 62 6c 6b 25 21 32 38  3d 78 25 0d 2d 3c 0e 62  |.blk%!28=x%.-<.b|
000093a0  6c 6b 25 21 33 32 3d 79  25 0d 2d 46 11 62 6c 6b  |lk%!32=y%.-F.blk|
000093b0  25 21 33 36 3d 73 69 7a  65 25 0d 2d 50 11 62 6c  |%!36=size%.-P.bl|
000093c0  6b 25 21 34 30 3d 74 79  70 65 25 0d 2d 5a 17 24  |k%!40=type%.-Z.$|
000093d0  28 62 6c 6b 25 2b 34 34  29 3d 66 69 6c 65 24 2b  |(blk%+44)=file$+|
000093e0  bd 30 0d 2d 64 36 c8 99  32 36 32 33 37 35 2c 31  |.0.-d6..262375,1|
000093f0  37 2c 62 6c 6b 25 2c 77  69 6e 64 6f 77 25 2c 69  |7,blk%,window%,i|
00009400  63 6f 6e 25 20 b8 20 64  65 73 74 69 6e 61 74 69  |con% . destinati|
00009410  6f 6e 5f 74 61 73 6b 25  0d 2d 6e 05 e1 0d 2d 78  |on_task%.-n...-x|
00009420  05 3a 0d 2d 82 18 dd f2  6d 65 73 73 61 67 65 5f  |.:.-....message_|
00009430  73 61 76 65 5f 72 65 70  6c 79 0d 2d 8c 34 62 6c  |save_reply.-.4bl|
00009440  6b 25 21 31 32 3d 62 6c  6b 25 21 38 3a 62 6c 6b  |k%!12=blk%!8:blk|
00009450  25 21 31 36 3d 33 3a c8  99 32 36 32 33 37 35 2c  |%!16=3:..262375,|
00009460  31 37 2c 62 6c 6b 25 2c  62 6c 6b 25 21 34 0d 2d  |17,blk%,blk%!4.-|
00009470  96 05 e1 0d 2d a0 05 3a  0d 2d aa 12 dd a4 63 6f  |....-..:.-....co|
00009480  6d 6d 61 6e 64 5f 6c 69  6e 65 0d 2d b4 14 ea 20  |mmand_line.-... |
00009490  70 6f 73 25 2c 63 6d 64  5f 6c 69 6e 65 24 0d 2d  |pos%,cmd_line$.-|
000094a0  be 1e c8 99 20 22 4f 53  5f 47 65 74 45 6e 76 22  |.... "OS_GetEnv"|
000094b0  20 b8 20 63 6d 64 5f 6c  69 6e 65 24 0d 2d c8 1e  | . cmd_line$.-..|
000094c0  70 6f 73 25 3d a7 63 6d  64 5f 6c 69 6e 65 24 2c  |pos%=.cmd_line$,|
000094d0  22 20 2d 71 75 69 74 20  22 29 0d 2d d2 10 e7 20  |" -quit ").-... |
000094e0  70 6f 73 25 3d 30 20 3d  22 22 0d 2d dc 0b 70 6f  |pos%=0 ="".-..po|
000094f0  73 25 2b 3d 37 0d 2d e6  26 c8 95 c1 63 6d 64 5f  |s%+=7.-.&...cmd_|
00009500  6c 69 6e 65 24 2c 70 6f  73 25 2c 31 29 3d 22 20  |line$,pos%,1)=" |
00009510  22 3a 70 6f 73 25 2b 3d  31 3a ce 0d 2d f0 23 70  |":pos%+=1:..-.#p|
00009520  6f 73 25 3d a7 63 6d 64  5f 6c 69 6e 65 24 2b 22  |os%=.cmd_line$+"|
00009530  20 22 2c 22 20 22 2c 70  6f 73 25 2b 31 29 0d 2d  | "," ",pos%+1).-|
00009540  fa 25 f5 70 6f 73 25 2b  3d 31 3a fd c1 63 6d 64  |.%.pos%+=1:..cmd|
00009550  5f 6c 69 6e 65 24 2c 70  6f 73 25 2c 31 29 3c 3e  |_line$,pos%,1)<>|
00009560  22 20 22 0d 2e 04 1e 63  6d 64 5f 6c 69 6e 65 24  |" "....cmd_line$|
00009570  3d c1 63 6d 64 5f 6c 69  6e 65 24 2c 70 6f 73 25  |=.cmd_line$,pos%|
00009580  29 0d 2e 0e 2f 63 6d 64  5f 6c 69 6e 65 24 3d c0  |).../cmd_line$=.|
00009590  63 6d 64 5f 6c 69 6e 65  24 2c a7 63 6d 64 5f 6c  |cmd_line$,.cmd_l|
000095a0  69 6e 65 24 2b 22 20 22  2c 22 20 22 29 2d 31 29  |ine$+" "," ")-1)|
000095b0  0d 2e 18 0e 3d 63 6d 64  5f 6c 69 6e 65 24 0d 2e  |....=cmd_line$..|
000095c0  22 05 3a 0d 2e 2c 3d dd  a4 61 64 64 5f 69 63 6f  |".:..,=..add_ico|
000095d0  6e 28 74 79 70 65 24 2c  74 65 78 74 24 2c 77 69  |n(type$,text$,wi|
000095e0  6e 64 6f 77 25 2c 78 25  2c 79 25 2c 73 6c 25 2c  |ndow%,x%,y%,sl%,|
000095f0  65 73 67 5f 73 70 25 2c  62 6f 72 64 65 72 25 29  |esg_sp%,border%)|
00009600  0d 2e 36 47 ea 20 69 63  6f 6e 25 2c 74 65 78 74  |..6G. icon%,text|
00009610  5f 73 70 61 63 65 25 2c  6e 61 6d 65 5f 73 70 61  |_space%,name_spa|
00009620  63 65 25 2c 76 61 6c 5f  73 70 61 63 65 25 2c 77  |ce%,val_space%,w|
00009630  25 2c 68 25 2c 6d 6f 64  65 25 2c 78 73 25 2c 79  |%,h%,mode%,xs%,y|
00009640  73 25 2c 73 65 6c 25 0d  2e 40 0c 73 65 6c 25 3d  |s%,sel%..@.sel%=|
00009650  73 6c 25 0d 2e 4a 1b e7  20 73 6c 25 3c a9 74 65  |sl%..J.. sl%<.te|
00009660  78 74 24 20 73 6c 25 3d  a9 74 65 78 74 24 0d 2e  |xt$ sl%=.text$..|
00009670  54 1b e7 20 73 6c 25 3c  a9 74 79 70 65 24 20 73  |T.. sl%<.type$ s|
00009680  6c 25 3d a9 74 79 70 65  24 0d 2e 5e 15 de 20 74  |l%=.type$..^.. t|
00009690  65 78 74 5f 73 70 61 63  65 25 20 73 6c 25 0d 2e  |ext_space% sl%..|
000096a0  68 17 74 65 6d 70 5f 62  6c 6b 25 21 30 3d 77 69  |h.temp_blk%!0=wi|
000096b0  6e 64 6f 77 25 0d 2e 72  12 74 65 6d 70 5f 62 6c  |ndow%..r.temp_bl|
000096c0  6b 25 21 34 3d 78 25 0d  2e 7c 15 74 65 6d 70 5f  |k%!4=x%..|.temp_|
000096d0  62 6c 6b 25 21 38 3d 79  25 2d 34 38 0d 2e 86 20  |blk%!8=y%-48... |
000096e0  74 65 6d 70 5f 62 6c 6b  25 21 31 32 3d 78 25 2b  |temp_blk%!12=x%+|
000096f0  31 36 2b 31 36 2a a9 74  65 78 74 24 0d 2e 90 13  |16+16*.text$....|
00009700  74 65 6d 70 5f 62 6c 6b  25 21 31 36 3d 79 25 0d  |temp_blk%!16=y%.|
00009710  2e 9a 16 24 74 65 78 74  5f 73 70 61 63 65 25 3d  |...$text_space%=|
00009720  74 65 78 74 24 0d 2e a4  1a 74 65 6d 70 5f 62 6c  |text$....temp_bl|
00009730  6b 25 21 32 30 3d 26 31  37 30 30 30 31 33 39 0d  |k%!20=&17000139.|
00009740  2e ae 1c 74 65 6d 70 5f  62 6c 6b 25 21 32 34 3d  |...temp_blk%!24=|
00009750  74 65 78 74 5f 73 70 61  63 65 25 0d 2e b8 13 74  |text_space%....t|
00009760  65 6d 70 5f 62 6c 6b 25  21 32 38 3d 2d 31 0d 2e  |emp_blk%!28=-1..|
00009770  c2 17 74 65 6d 70 5f 62  6c 6b 25 21 33 32 3d a9  |..temp_blk%!32=.|
00009780  74 65 78 74 24 0d 2e cc  12 c8 8e 20 c0 74 79 70  |text$...... .typ|
00009790  65 24 2c 35 29 20 ca 0d  2e d6 0e 20 c9 20 22 66  |e$,5) ..... . "f|
000097a0  69 6c 65 5f 22 0d 2e e0  30 20 20 c8 99 32 36 32  |ile_"...0  ..262|
000097b0  33 37 37 2c 26 32 38 2c  2c 74 79 70 65 24 2b bd  |377,&28,,type$+.|
000097c0  28 30 29 20 b8 20 2c 2c  2c 77 25 2c 68 25 2c 2c  |(0) . ,,,w%,h%,,|
000097d0  6d 6f 64 65 25 0d 2e ea  1a 20 20 c8 99 35 33 2c  |mode%....  ..53,|
000097e0  6d 6f 64 65 25 2c 34 20  b8 20 2c 2c 78 73 25 0d  |mode%,4 . ,,xs%.|
000097f0  2e f4 1a 20 20 c8 99 35  33 2c 6d 6f 64 65 25 2c  |...  ..53,mode%,|
00009800  35 20 b8 20 2c 2c 79 73  25 0d 2e fe 1b 20 20 68  |5 . ,,ys%....  h|
00009810  25 3d 68 25 3c 3c 79 73  25 3a 77 25 3d 77 25 3c  |%=h%<<ys%:w%=w%<|
00009820  3c 78 73 25 0d 2f 08 12  20 20 e7 20 74 65 78 74  |<xs%./..  . text|
00009830  24 3d 22 22 20 8c 0d 2f  12 18 20 20 20 74 65 6d  |$="" ../..   tem|
00009840  70 5f 62 6c 6b 25 21 38  3d 79 25 2d 68 25 0d 2f  |p_blk%!8=y%-h%./|
00009850  1c 19 20 20 20 74 65 6d  70 5f 62 6c 6b 25 21 31  |..   temp_blk%!1|
00009860  32 3d 78 25 2b 77 25 0d  2f 26 1d 20 20 20 74 65  |2=x%+w%./&.   te|
00009870  6d 70 5f 62 6c 6b 25 21  32 30 3d 26 31 37 30 30  |mp_blk%!20=&1700|
00009880  36 31 33 41 0d 2f 30 15  20 20 20 74 65 6d 70 5f  |613A./0.   temp_|
00009890  62 6c 6b 25 21 32 38 3d  31 0d 2f 3a 1a 20 20 20  |blk%!28=1./:.   |
000098a0  74 65 6d 70 5f 62 6c 6b  25 21 33 32 3d a9 74 79  |temp_blk%!32=.ty|
000098b0  70 65 24 0d 2f 44 19 20  20 20 24 74 65 78 74 5f  |pe$./D.   $text_|
000098c0  73 70 61 63 65 25 3d 74  79 70 65 24 0d 2f 4e 07  |space%=type$./N.|
000098d0  20 20 cc 0d 2f 58 22 20  20 20 74 65 6d 70 5f 62  |  ../X"   temp_b|
000098e0  6c 6b 25 21 38 3d 79 25  2d 68 25 2d 28 31 30 3c  |lk%!8=y%-h%-(10<|
000098f0  3c 79 73 25 29 0d 2f 62  2a 20 20 20 73 6c 25 3d  |<ys%)./b*   sl%=|
00009900  28 38 3c 3c 78 73 25 29  2a a9 74 65 78 74 24 3a  |(8<<xs%)*.text$:|
00009910  e7 20 73 6c 25 3e 77 25  20 77 25 3d 73 6c 25 0d  |. sl%>w% w%=sl%.|
00009920  2f 6c 19 20 20 20 74 65  6d 70 5f 62 6c 6b 25 21  |/l.   temp_blk%!|
00009930  31 32 3d 78 25 2b 77 25  0d 2f 76 1d 20 20 20 74  |12=x%+w%./v.   t|
00009940  65 6d 70 5f 62 6c 6b 25  21 32 30 3d 26 31 37 30  |emp_blk%!20=&170|
00009950  30 36 31 32 42 0d 2f 80  1f 20 20 20 de 20 6e 61  |0612B./..   . na|
00009960  6d 65 5f 73 70 61 63 65  25 20 28 32 2b a9 74 79  |me_space% (2+.ty|
00009970  70 65 24 29 0d 2f 8a 1d  20 20 20 24 6e 61 6d 65  |pe$)./..   $name|
00009980  5f 73 70 61 63 65 25 3d  22 73 22 2b 74 79 70 65  |_space%="s"+type|
00009990  24 0d 2f 94 1f 20 20 20  74 65 6d 70 5f 62 6c 6b  |$./..   temp_blk|
000099a0  25 21 32 38 3d 6e 61 6d  65 5f 73 70 61 63 65 25  |%!28=name_space%|
000099b0  0d 2f 9e 07 20 20 cd 0d  2f a8 0e 20 c9 20 22 73  |./..  ../.. . "s|
000099c0  70 72 69 74 22 0d 2f b2  34 20 20 c8 99 34 36 2c  |prit"./.4  ..46,|
000099d0  26 31 32 38 2c 65 73 67  5f 73 70 25 2c 74 65 78  |&128,esg_sp%,tex|
000099e0  74 24 2b bd 28 30 29 20  b8 20 2c 2c 2c 77 25 2c  |t$+.(0) . ,,,w%,|
000099f0  68 25 2c 2c 6d 6f 64 65  25 0d 2f bc 1a 20 20 c8  |h%,,mode%./..  .|
00009a00  99 35 33 2c 6d 6f 64 65  25 2c 34 20 b8 20 2c 2c  |.53,mode%,4 . ,,|
00009a10  78 73 25 0d 2f c6 1a 20  20 c8 99 35 33 2c 6d 6f  |xs%./..  ..53,mo|
00009a20  64 65 25 2c 35 20 b8 20  2c 2c 79 73 25 0d 2f d0  |de%,5 . ,,ys%./.|
00009a30  1b 20 20 68 25 3d 68 25  3c 3c 79 73 25 3a 77 25  |.  h%=h%<<ys%:w%|
00009a40  3d 77 25 3c 3c 78 73 25  0d 2f da 17 20 20 74 65  |=w%<<xs%./..  te|
00009a50  6d 70 5f 62 6c 6b 25 21  38 3d 79 25 2d 68 25 0d  |mp_blk%!8=y%-h%.|
00009a60  2f e4 18 20 20 74 65 6d  70 5f 62 6c 6b 25 21 31  |/..  temp_blk%!1|
00009a70  32 3d 78 25 2b 77 25 0d  2f ee 1c 20 20 74 65 6d  |2=x%+w%./..  tem|
00009a80  70 5f 62 6c 6b 25 21 32  30 3d 26 31 37 30 30 33  |p_blk%!20=&17003|
00009a90  31 33 41 0d 2f f8 1a 20  20 74 65 6d 70 5f 62 6c  |13A./..  temp_bl|
00009aa0  6b 25 21 32 38 3d 65 73  67 5f 73 70 25 0d 30 02  |k%!28=esg_sp%.0.|
00009ab0  19 20 20 74 65 6d 70 5f  62 6c 6b 25 21 33 32 3d  |.  temp_blk%!32=|
00009ac0  a9 74 65 78 74 24 0d 30  0c 18 20 20 24 74 65 78  |.text$.0..  $tex|
00009ad0  74 5f 73 70 61 63 65 25  3d 74 65 78 74 24 0d 30  |t_space%=text$.0|
00009ae0  16 25 20 c9 20 22 73 65  6c 65 63 22 3a 74 65 6d  |.% . "selec":tem|
00009af0  70 5f 62 6c 6b 25 21 32  30 3d 26 31 37 30 30 33  |p_blk%!20=&17003|
00009b00  31 33 39 0d 30 20 26 20  c9 20 22 61 63 74 69 6f  |139.0 & . "actio|
00009b10  22 3a 74 65 6d 70 5f 62  6c 6b 25 21 32 30 3d 26  |":temp_blk%!20=&|
00009b20  43 37 31 46 39 31 33 44  2e 0d 30 2a 25 20 c9 20  |C71F913D..0*% . |
00009b30  22 72 65 70 6f 72 22 3a  74 65 6d 70 5f 62 6c 6b  |"repor":temp_blk|
00009b40  25 21 32 30 3d 26 30 37  30 30 33 31 33 44 0d 30  |%!20=&0700313D.0|
00009b50  34 0e 20 c9 20 22 6f 70  74 69 6f 22 0d 30 3e 17  |4. . "optio".0>.|
00009b60  20 20 74 65 6d 70 5f 62  6c 6b 25 21 38 3d 79 25  |  temp_blk%!8=y%|
00009b70  2d 35 32 0d 30 48 25 20  20 74 65 6d 70 5f 62 6c  |-52.0H%  temp_bl|
00009b80  6b 25 21 31 32 3d 78 25  2b 34 30 2b 31 36 2b 31  |k%!12=x%+40+16+1|
00009b90  36 2a a9 74 65 78 74 24  0d 30 52 1c 20 20 74 65  |6*.text$.0R.  te|
00009ba0  6d 70 5f 62 6c 6b 25 21  32 30 3d 26 31 37 30 30  |mp_blk%!20=&1700|
00009bb0  42 31 33 33 0d 30 5c 23  20 20 e7 20 73 65 6c 25  |B133.0\#  . sel%|
00009bc0  20 74 65 6d 70 5f 62 6c  6b 25 21 32 30 3d 26 31  | temp_blk%!20=&1|
00009bd0  37 33 30 33 31 33 33 0d  30 66 27 20 20 de 20 76  |7303133.0f'  . v|
00009be0  61 6c 5f 73 70 61 63 65  25 20 28 32 2b a9 22 73  |al_space% (2+."s|
00009bf0  6f 70 74 6f 66 66 2c 6f  70 74 6f 6e 22 29 0d 30  |optoff,opton").0|
00009c00  70 21 20 20 24 76 61 6c  5f 73 70 61 63 65 25 3d  |p!  $val_space%=|
00009c10  22 73 6f 70 74 6f 66 66  2c 6f 70 74 6f 6e 22 0d  |"soptoff,opton".|
00009c20  30 7a 1d 20 20 74 65 6d  70 5f 62 6c 6b 25 21 32  |0z.  temp_blk%!2|
00009c30  38 3d 76 61 6c 5f 73 70  61 63 65 25 0d 30 84 0e  |8=val_space%.0..|
00009c40  20 c9 20 22 72 61 64 69  6f 22 0d 30 8e 17 20 20  | . "radio".0..  |
00009c50  74 65 6d 70 5f 62 6c 6b  25 21 38 3d 79 25 2d 35  |temp_blk%!8=y%-5|
00009c60  32 0d 30 98 25 20 20 74  65 6d 70 5f 62 6c 6b 25  |2.0.%  temp_blk%|
00009c70  21 31 32 3d 78 25 2b 34  30 2b 31 36 2b 31 36 2a  |!12=x%+40+16+16*|
00009c80  a9 74 65 78 74 24 0d 30  a2 2e 20 20 e7 20 28 65  |.text$.0..  . (e|
00009c90  73 67 5f 73 70 25 3c 31  29 20 84 20 28 65 73 67  |sg_sp%<1) . (esg|
00009ca0  5f 73 70 25 3e 33 31 29  20 8c 20 65 73 67 5f 73  |_sp%>31) . esg_s|
00009cb0  70 25 3d 31 0d 30 ac 2f  20 20 74 65 6d 70 5f 62  |p%=1.0./  temp_b|
00009cc0  6c 6b 25 21 32 30 3d 26  31 37 30 30 42 31 33 33  |lk%!20=&1700B133|
00009cd0  20 84 20 28 65 73 67 5f  73 70 25 2a 26 31 30 30  | . (esg_sp%*&100|
00009ce0  30 30 29 0d 30 b6 36 20  20 e7 20 73 65 6c 25 20  |00).0.6  . sel% |
00009cf0  74 65 6d 70 5f 62 6c 6b  25 21 32 30 3d 26 31 37  |temp_blk%!20=&17|
00009d00  32 30 42 31 33 33 20 84  20 28 65 73 67 5f 73 70  |20B133 . (esg_sp|
00009d10  25 2a 26 31 30 30 30 30  29 0d 30 c0 2c 20 20 de  |%*&10000).0.,  .|
00009d20  20 74 65 78 74 5f 73 70  61 63 65 25 20 28 32 2b  | text_space% (2+|
00009d30  a9 22 73 72 61 64 69 6f  6f 66 66 2c 72 61 64 69  |."sradiooff,radi|
00009d40  6f 6f 6e 22 29 0d 30 ca  26 20 20 24 74 65 78 74  |oon").0.&  $text|
00009d50  5f 73 70 61 63 65 25 3d  22 73 72 61 64 69 6f 6f  |_space%="sradioo|
00009d60  66 66 2c 72 61 64 69 6f  6f 6e 22 0d 30 d4 1e 20  |ff,radioon".0.. |
00009d70  20 74 65 6d 70 5f 62 6c  6b 25 21 32 38 3d 74 65  | temp_blk%!28=te|
00009d80  78 74 5f 73 70 61 63 65  25 0d 30 de 0e 20 c9 20  |xt_space%.0.. . |
00009d90  22 77 72 69 74 65 22 0d  30 e8 22 20 20 74 65 6d  |"write".0."  tem|
00009da0  70 5f 62 6c 6b 25 21 31  32 3d 78 25 2b 31 36 2b  |p_blk%!12=x%+16+|
00009db0  31 36 2a a9 74 65 78 74  24 0d 30 f2 1c 20 20 74  |16*.text$.0..  t|
00009dc0  65 6d 70 5f 62 6c 6b 25  21 32 30 3d 26 30 37 30  |emp_blk%!20=&070|
00009dd0  30 46 31 33 31 0d 30 fc  15 20 20 de 20 76 61 6c  |0F131.0..  . val|
00009de0  5f 73 70 61 63 65 25 20  32 37 0d 31 06 14 20 20  |_space% 27.1..  |
00009df0  24 76 61 6c 5f 73 70 61  63 65 25 3d 22 22 0d 31  |$val_space%="".1|
00009e00  10 1d 20 20 74 65 6d 70  5f 62 6c 6b 25 21 32 38  |..  temp_blk%!28|
00009e10  3d 76 61 6c 5f 73 70 61  63 65 25 0d 31 1a 21 20  |=val_space%.1.! |
00009e20  20 e7 20 73 65 6c 25 3c  28 a9 74 65 78 74 24 29  | . sel%<(.text$)|
00009e30  20 73 65 6c 25 3d a9 74  65 78 74 24 0d 31 24 19  | sel%=.text$.1$.|
00009e40  20 20 74 65 6d 70 5f 62  6c 6b 25 21 33 32 3d 73  |  temp_blk%!32=s|
00009e50  65 6c 25 2b 31 0d 31 2e  06 20 cb 0d 31 38 1f c8  |el%+1.1.. ..18..|
00009e60  99 32 36 32 33 33 38 2c  2c 74 65 6d 70 5f 62 6c  |.262338,,temp_bl|
00009e70  6b 25 20 b8 20 69 63 6f  6e 25 0d 31 42 2b e7 20  |k% . icon%.1B+. |
00009e80  62 6f 72 64 65 72 25 3e  30 20 f2 62 6f 72 64 65  |border%>0 .borde|
00009e90  72 5f 69 63 6f 6e 28 77  69 6e 64 6f 77 25 2c 69  |r_icon(window%,i|
00009ea0  63 6f 6e 25 29 0d 31 4c  0a 3d 69 63 6f 6e 25 0d  |con%).1L.=icon%.|
00009eb0  31 56 05 3a 0d 31 60 44  dd a4 61 64 64 5f 69 63  |1V.:.1`D..add_ic|
00009ec0  6f 6e 5f 62 6c 6f 63 6b  28 77 69 6e 64 6f 77 5f  |on_block(window_|
00009ed0  68 61 6e 64 6c 65 25 2c  6d 69 6e 78 25 2c 6d 69  |handle%,minx%,mi|
00009ee0  6e 79 25 2c 6d 61 78 78  25 2c 6d 61 78 79 25 2c  |ny%,maxx%,maxy%,|
00009ef0  63 6f 6c 6f 75 72 25 29  0d 31 6a 0b ea 20 69 63  |colour%).1j.. ic|
00009f00  6f 6e 25 0d 31 74 1e 74  65 6d 70 5f 62 6c 6b 25  |on%.1t.temp_blk%|
00009f10  21 30 3d 77 69 6e 64 6f  77 5f 68 61 6e 64 6c 65  |!0=window_handle|
00009f20  25 0d 31 7e 20 e7 20 6d  69 6e 78 25 3e 6d 61 78  |%.1~ . minx%>max|
00009f30  78 25 20 c8 94 20 6d 69  6e 78 25 2c 6d 61 78 78  |x% .. minx%,maxx|
00009f40  25 0d 31 88 20 e7 20 6d  69 6e 79 25 3e 6d 61 78  |%.1. . miny%>max|
00009f50  79 25 20 c8 94 20 6d 69  6e 79 25 2c 6d 61 78 79  |y% .. miny%,maxy|
00009f60  25 0d 31 92 1a e7 20 6d  69 6e 78 25 3d 6d 61 78  |%.1... minx%=max|
00009f70  78 25 20 6d 61 78 78 25  2b 3d 31 0d 31 9c 1a e7  |x% maxx%+=1.1...|
00009f80  20 6d 69 6e 79 25 3d 6d  61 78 79 25 20 6d 61 78  | miny%=maxy% max|
00009f90  79 25 2b 3d 31 0d 31 a6  15 74 65 6d 70 5f 62 6c  |y%+=1.1..temp_bl|
00009fa0  6b 25 21 34 3d 6d 69 6e  78 25 0d 31 b0 15 74 65  |k%!4=minx%.1..te|
00009fb0  6d 70 5f 62 6c 6b 25 21  38 3d 6d 69 6e 79 25 0d  |mp_blk%!8=miny%.|
00009fc0  31 ba 16 74 65 6d 70 5f  62 6c 6b 25 21 31 32 3d  |1..temp_blk%!12=|
00009fd0  6d 61 78 78 25 0d 31 c4  16 74 65 6d 70 5f 62 6c  |maxx%.1..temp_bl|
00009fe0  6b 25 21 31 36 3d 6d 61  78 79 25 0d 31 ce 21 74  |k%!16=maxy%.1.!t|
00009ff0  65 6d 70 5f 62 6c 6b 25  21 32 30 3d 33 32 2b 28  |emp_blk%!20=32+(|
0000a000  63 6f 6c 6f 75 72 25 3c  3c 32 38 29 0d 31 d8 1f  |colour%<<28).1..|
0000a010  c8 99 32 36 32 33 33 38  2c 2c 74 65 6d 70 5f 62  |..262338,,temp_b|
0000a020  6c 6b 25 20 b8 20 69 63  6f 6e 25 0d 31 e2 0a 3d  |lk% . icon%.1..=|
0000a030  69 63 6f 6e 25 0d 31 ec  05 3a 0d 31 f6 2e dd f2  |icon%.1..:.1....|
0000a040  62 6f 72 64 65 72 5f 69  63 6f 6e 28 77 69 6e 64  |border_icon(wind|
0000a050  6f 77 5f 68 61 6e 64 6c  65 25 2c 69 63 6f 6e 5f  |ow_handle%,icon_|
0000a060  68 61 6e 64 6c 65 25 29  0d 32 00 31 ea 20 69 63  |handle%).2.1. ic|
0000a070  6f 6e 25 2c 6d 69 6e 78  25 2c 6d 69 6e 79 25 2c  |on%,minx%,miny%,|
0000a080  6d 61 78 78 25 2c 6d 61  78 79 25 2c 66 6c 61 67  |maxx%,maxy%,flag|
0000a090  25 2c 74 6c 25 2c 62 72  25 0d 32 0a 1e 74 65 6d  |%,tl%,br%.2..tem|
0000a0a0  70 5f 62 6c 6b 25 21 30  3d 77 69 6e 64 6f 77 5f  |p_blk%!0=window_|
0000a0b0  68 61 6e 64 6c 65 25 0d  32 14 1c 74 65 6d 70 5f  |handle%.2..temp_|
0000a0c0  62 6c 6b 25 21 34 3d 69  63 6f 6e 5f 68 61 6e 64  |blk%!4=icon_hand|
0000a0d0  6c 65 25 0d 32 1e 17 c8  99 32 36 32 33 35 30 2c  |le%.2....262350,|
0000a0e0  2c 74 65 6d 70 5f 62 6c  6b 25 0d 32 28 15 6d 69  |,temp_blk%.2(.mi|
0000a0f0  6e 78 25 3d 74 65 6d 70  5f 62 6c 6b 25 21 38 0d  |nx%=temp_blk%!8.|
0000a100  32 32 16 6d 69 6e 79 25  3d 74 65 6d 70 5f 62 6c  |22.miny%=temp_bl|
0000a110  6b 25 21 31 32 0d 32 3c  16 6d 61 78 78 25 3d 74  |k%!12.2<.maxx%=t|
0000a120  65 6d 70 5f 62 6c 6b 25  21 31 36 0d 32 46 16 6d  |emp_blk%!16.2F.m|
0000a130  61 78 79 25 3d 74 65 6d  70 5f 62 6c 6b 25 21 32  |axy%=temp_blk%!2|
0000a140  30 0d 32 50 16 66 6c 61  67 25 3d 74 65 6d 70 5f  |0.2P.flag%=temp_|
0000a150  62 6c 6b 25 21 32 34 0d  32 5a 0f 74 6c 25 3d 30  |blk%!24.2Z.tl%=0|
0000a160  3a 62 72 25 3d 34 0d 32  64 43 e7 20 28 66 6c 61  |:br%=4.2dC. (fla|
0000a170  67 25 20 80 20 34 29 3d  34 20 6d 69 6e 78 25 2d  |g% . 4)=4 minx%-|
0000a180  3d 34 3a 6d 61 78 78 25  2b 3d 34 3a 6d 69 6e 79  |=4:maxx%+=4:miny|
0000a190  25 2d 3d 34 3a 6d 61 78  79 25 2b 3d 34 3a 74 6c  |%-=4:maxy%+=4:tl|
0000a1a0  25 3d 34 3a 62 72 25 3d  30 0d 32 6e 4b 69 63 6f  |%=4:br%=0.2nKico|
0000a1b0  6e 25 3d a4 61 64 64 5f  69 63 6f 6e 5f 62 6c 6f  |n%=.add_icon_blo|
0000a1c0  63 6b 28 77 69 6e 64 6f  77 5f 68 61 6e 64 6c 65  |ck(window_handle|
0000a1d0  25 2c 6d 61 78 78 25 2c  6d 69 6e 79 25 2d 34 2c  |%,maxx%,miny%-4,|
0000a1e0  6d 61 78 78 25 2b 34 2c  6d 61 78 79 25 2b 34 2c  |maxx%+4,maxy%+4,|
0000a1f0  62 72 25 29 0d 32 78 4b  69 63 6f 6e 25 3d a4 61  |br%).2xKicon%=.a|
0000a200  64 64 5f 69 63 6f 6e 5f  62 6c 6f 63 6b 28 77 69  |dd_icon_block(wi|
0000a210  6e 64 6f 77 5f 68 61 6e  64 6c 65 25 2c 6d 69 6e  |ndow_handle%,min|
0000a220  78 25 2d 34 2c 6d 61 78  79 25 2c 6d 61 78 78 25  |x%-4,maxy%,maxx%|
0000a230  2b 32 2c 6d 61 78 79 25  2b 34 2c 74 6c 25 29 0d  |+2,maxy%+4,tl%).|
0000a240  32 82 49 69 63 6f 6e 25  3d a4 61 64 64 5f 69 63  |2.Iicon%=.add_ic|
0000a250  6f 6e 5f 62 6c 6f 63 6b  28 77 69 6e 64 6f 77 5f  |on_block(window_|
0000a260  68 61 6e 64 6c 65 25 2c  6d 69 6e 78 25 2d 34 2c  |handle%,minx%-4,|
0000a270  6d 69 6e 79 25 2d 34 2c  6d 69 6e 78 25 2c 6d 61  |miny%-4,minx%,ma|
0000a280  78 79 25 2c 74 6c 25 29  0d 32 8c 4b 69 63 6f 6e  |xy%,tl%).2.Kicon|
0000a290  25 3d a4 61 64 64 5f 69  63 6f 6e 5f 62 6c 6f 63  |%=.add_icon_bloc|
0000a2a0  6b 28 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 25  |k(window_handle%|
0000a2b0  2c 6d 69 6e 78 25 2d 32  2c 6d 69 6e 79 25 2d 34  |,minx%-2,miny%-4|
0000a2c0  2c 6d 61 78 78 25 2b 32  2c 6d 69 6e 79 25 2c 62  |,maxx%+2,miny%,b|
0000a2d0  72 25 29 0d 32 96 05 e1  0d 32 a0 05 3a 0d 32 aa  |r%).2....2..:.2.|
0000a2e0  2e dd f2 64 65 6c 65 74  65 5f 69 63 6f 6e 28 77  |...delete_icon(w|
0000a2f0  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 25 2c 69 63  |indow_handle%,ic|
0000a300  6f 6e 5f 68 61 6e 64 6c  65 25 29 0d 32 b4 1d ea  |on_handle%).2...|
0000a310  20 6d 69 6e 78 25 2c 6d  69 6e 79 25 2c 6d 61 78  | minx%,miny%,max|
0000a320  78 25 2c 6d 61 78 79 25  0d 32 be 37 74 65 6d 70  |x%,maxy%.2.7temp|
0000a330  5f 62 6c 6b 25 21 30 3d  77 69 6e 64 6f 77 5f 68  |_blk%!0=window_h|
0000a340  61 6e 64 6c 65 25 3a 74  65 6d 70 5f 62 6c 6b 25  |andle%:temp_blk%|
0000a350  21 34 3d 69 63 6f 6e 5f  68 61 6e 64 6c 65 25 0d  |!4=icon_handle%.|
0000a360  32 c8 17 c8 99 32 36 32  33 35 30 2c 2c 74 65 6d  |2....262350,,tem|
0000a370  70 5f 62 6c 6b 25 0d 32  d2 4e 6d 69 6e 78 25 3d  |p_blk%.2.Nminx%=|
0000a380  74 65 6d 70 5f 62 6c 6b  25 21 38 3a 6d 69 6e 79  |temp_blk%!8:miny|
0000a390  25 3d 74 65 6d 70 5f 62  6c 6b 25 21 31 32 3a 6d  |%=temp_blk%!12:m|
0000a3a0  61 78 78 25 3d 74 65 6d  70 5f 62 6c 6b 25 21 31  |axx%=temp_blk%!1|
0000a3b0  36 3a 6d 61 78 79 25 3d  74 65 6d 70 5f 62 6c 6b  |6:maxy%=temp_blk|
0000a3c0  25 21 32 30 0d 32 dc 17  c8 99 32 36 32 33 34 30  |%!20.2....262340|
0000a3d0  2c 2c 74 65 6d 70 5f 62  6c 6b 25 0d 32 e6 33 c8  |,,temp_blk%.2.3.|
0000a3e0  99 32 36 32 33 35 33 2c  77 69 6e 64 6f 77 5f 68  |.262353,window_h|
0000a3f0  61 6e 64 6c 65 25 2c 6d  69 6e 78 25 2c 6d 69 6e  |andle%,minx%,min|
0000a400  79 25 2c 6d 61 78 78 25  2c 6d 61 78 79 25 0d 32  |y%,maxx%,maxy%.2|
0000a410  f0 05 e1 0d 32 fa 05 3a  0d 33 04 2b dd f2 64 72  |....2..:.3.+..dr|
0000a420  61 67 5f 62 6f 78 28 77  69 6e 64 6f 77 5f 68 61  |ag_box(window_ha|
0000a430  6e 64 6c 65 25 2c 69 63  6f 6e 5f 68 61 6e 64 6c  |ndle%,icon_handl|
0000a440  65 25 29 0d 33 0e 0b ea  20 78 25 2c 79 25 0d 33  |e%).3... x%,y%.3|
0000a450  18 1e 74 65 6d 70 5f 62  6c 6b 25 21 30 3d 77 69  |..temp_blk%!0=wi|
0000a460  6e 64 6f 77 5f 68 61 6e  64 6c 65 25 0d 33 22 17  |ndow_handle%.3".|
0000a470  c8 99 32 36 32 33 34 37  2c 2c 74 65 6d 70 5f 62  |..262347,,temp_b|
0000a480  6c 6b 25 0d 33 2c 3c 78  25 3d 74 65 6d 70 5f 62  |lk%.3,<x%=temp_b|
0000a490  6c 6b 25 21 34 2d 74 65  6d 70 5f 62 6c 6b 25 21  |lk%!4-temp_blk%!|
0000a4a0  32 30 3a 79 25 3d 74 65  6d 70 5f 62 6c 6b 25 21  |20:y%=temp_blk%!|
0000a4b0  31 36 2d 74 65 6d 70 5f  62 6c 6b 25 21 32 34 0d  |16-temp_blk%!24.|
0000a4c0  33 36 1c 74 65 6d 70 5f  62 6c 6b 25 21 34 3d 69  |36.temp_blk%!4=i|
0000a4d0  63 6f 6e 5f 68 61 6e 64  6c 65 25 0d 33 40 17 c8  |con_handle%.3@..|
0000a4e0  99 32 36 32 33 35 30 2c  2c 74 65 6d 70 5f 62 6c  |.262350,,temp_bl|
0000a4f0  6b 25 0d 33 4a 24 e7 20  28 74 65 6d 70 5f 62 6c  |k%.3J$. (temp_bl|
0000a500  6b 25 21 32 34 20 80 20  26 42 30 30 30 29 3d 26  |k%!24 . &B000)=&|
0000a510  42 30 30 30 20 e1 0d 33  54 28 e7 20 28 74 65 6d  |B000 ..3T(. (tem|
0000a520  70 5f 62 6c 6b 25 21 32  34 20 80 20 26 38 30 30  |p_blk%!24 . &800|
0000a530  30 30 30 29 3d 26 38 30  30 30 30 30 20 e1 0d 33  |000)=&800000 ..3|
0000a540  5e 11 74 65 6d 70 5f 62  6c 6b 25 21 34 3d 35 0d  |^.temp_blk%!4=5.|
0000a550  33 68 13 74 65 6d 70 5f  62 6c 6b 25 21 38 2b 3d  |3h.temp_blk%!8+=|
0000a560  78 25 0d 33 72 14 74 65  6d 70 5f 62 6c 6b 25 21  |x%.3r.temp_blk%!|
0000a570  31 32 2b 3d 79 25 0d 33  7c 14 74 65 6d 70 5f 62  |12+=y%.3|.temp_b|
0000a580  6c 6b 25 21 31 36 2b 3d  78 25 0d 33 86 14 74 65  |lk%!16+=x%.3..te|
0000a590  6d 70 5f 62 6c 6b 25 21  32 30 2b 3d 79 25 0d 33  |mp_blk%!20+=y%.3|
0000a5a0  90 13 74 65 6d 70 5f 62  6c 6b 25 21 32 34 3d 2d  |..temp_blk%!24=-|
0000a5b0  31 0d 33 9a 13 74 65 6d  70 5f 62 6c 6b 25 21 32  |1.3..temp_blk%!2|
0000a5c0  38 3d 2d 31 0d 33 a4 1a  74 65 6d 70 5f 62 6c 6b  |8=-1.3..temp_blk|
0000a5d0  25 21 33 32 3d 26 37 46  46 46 46 46 46 46 0d 33  |%!32=&7FFFFFFF.3|
0000a5e0  ae 1a 74 65 6d 70 5f 62  6c 6b 25 21 33 36 3d 26  |..temp_blk%!36=&|
0000a5f0  37 46 46 46 46 46 46 46  0d 33 b8 17 c8 99 32 36  |7FFFFFFF.3....26|
0000a600  32 33 35 32 2c 2c 74 65  6d 70 5f 62 6c 6b 25 0d  |2352,,temp_blk%.|
0000a610  33 c2 05 e1 0d 33 cc 05  3a 0d 33 d6 30 dd a4 67  |3....3..:.3.0..g|
0000a620  65 74 5f 69 63 6f 6e 5f  74 65 78 74 28 77 69 6e  |et_icon_text(win|
0000a630  64 6f 77 5f 68 61 6e 64  6c 65 25 2c 69 63 6f 6e  |dow_handle%,icon|
0000a640  5f 68 61 6e 64 6c 65 25  29 0d 33 e0 1e 74 65 6d  |_handle%).3..tem|
0000a650  70 5f 62 6c 6b 25 21 30  3d 77 69 6e 64 6f 77 5f  |p_blk%!0=window_|
0000a660  68 61 6e 64 6c 65 25 0d  33 ea 1c 74 65 6d 70 5f  |handle%.3..temp_|
0000a670  62 6c 6b 25 21 34 3d 69  63 6f 6e 5f 68 61 6e 64  |blk%!4=icon_hand|
0000a680  6c 65 25 0d 33 f4 17 c8  99 32 36 32 33 35 30 2c  |le%.3....262350,|
0000a690  2c 74 65 6d 70 5f 62 6c  6b 25 0d 33 fe 23 e7 20  |,temp_blk%.3.#. |
0000a6a0  28 74 65 6d 70 5f 62 6c  6b 25 21 32 34 20 80 20  |(temp_blk%!24 . |
0000a6b0  26 31 30 31 29 3c 3e 26  31 30 31 20 8c 0d 34 08  |&101)<>&101 ..4.|
0000a6c0  2c 20 85 20 32 30 32 2c  22 49 63 6f 6e 20 22 2b  |, . 202,"Icon "+|
0000a6d0  c3 69 63 6f 6e 25 2b 22  20 6e 6f 74 20 69 6e 64  |.icon%+" not ind|
0000a6e0  69 72 65 63 74 65 64 21  22 0d 34 12 08 20 3d 22  |irected!".4.. ="|
0000a6f0  22 0d 34 1c 05 cd 0d 34  26 12 3d 24 74 65 6d 70  |".4....4&.=$temp|
0000a700  5f 62 6c 6b 25 21 32 38  0d 34 30 05 3a 0d 34 3a  |_blk%!28.40.:.4:|
0000a710  39 dd f2 69 63 6f 6e 5f  62 67 5f 63 6f 6c 6f 75  |9..icon_bg_colou|
0000a720  72 28 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 25  |r(window_handle%|
0000a730  2c 69 63 6f 6e 5f 68 61  6e 64 6c 65 25 2c 63 6f  |,icon_handle%,co|
0000a740  6c 6f 75 72 25 29 0d 34  44 1e e7 20 63 6f 6c 6f  |lour%).4D.. colo|
0000a750  75 72 25 3c 30 20 84 20  63 6f 6c 6f 75 72 25 3e  |ur%<0 . colour%>|
0000a760  31 35 20 e1 0d 34 4e 1e  74 65 6d 70 5f 62 6c 6b  |15 ..4N.temp_blk|
0000a770  25 21 30 3d 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |%!0=window_handl|
0000a780  65 25 0d 34 58 1c 74 65  6d 70 5f 62 6c 6b 25 21  |e%.4X.temp_blk%!|
0000a790  34 3d 69 63 6f 6e 5f 68  61 6e 64 6c 65 25 0d 34  |4=icon_handle%.4|
0000a7a0  62 17 c8 99 32 36 32 33  35 30 2c 2c 74 65 6d 70  |b...262350,,temp|
0000a7b0  5f 62 6c 6b 25 0d 34 6c  1f e7 20 28 74 65 6d 70  |_blk%.4l.. (temp|
0000a7c0  5f 62 6c 6b 25 21 32 34  20 80 20 31 3c 3c 36 29  |_blk%!24 . 1<<6)|
0000a7d0  20 8c 20 e1 0d 34 76 1a  74 65 6d 70 5f 62 6c 6b  | . ..4v.temp_blk|
0000a7e0  25 21 31 32 3d 26 46 30  30 30 30 30 30 30 0d 34  |%!12=&F0000000.4|
0000a7f0  80 2f 74 65 6d 70 5f 62  6c 6b 25 21 38 3d 63 6f  |./temp_blk%!8=co|
0000a800  6c 6f 75 72 25 3c 3c 32  38 3a c8 99 32 36 32 33  |lour%<<28:..2623|
0000a810  34 39 2c 2c 74 65 6d 70  5f 62 6c 6b 25 0d 34 8a  |49,,temp_blk%.4.|
0000a820  05 e1 0d 34 94 05 3a 0d  34 9e 39 dd f2 69 63 6f  |...4..:.4.9..ico|
0000a830  6e 5f 66 67 5f 63 6f 6c  6f 75 72 28 77 69 6e 64  |n_fg_colour(wind|
0000a840  6f 77 5f 68 61 6e 64 6c  65 25 2c 69 63 6f 6e 5f  |ow_handle%,icon_|
0000a850  68 61 6e 64 6c 65 25 2c  63 6f 6c 6f 75 72 25 29  |handle%,colour%)|
0000a860  0d 34 a8 1e e7 20 63 6f  6c 6f 75 72 25 3c 30 20  |.4... colour%<0 |
0000a870  84 20 63 6f 6c 6f 75 72  25 3e 31 35 20 e1 0d 34  |. colour%>15 ..4|
0000a880  b2 1e 74 65 6d 70 5f 62  6c 6b 25 21 30 3d 77 69  |..temp_blk%!0=wi|
0000a890  6e 64 6f 77 5f 68 61 6e  64 6c 65 25 0d 34 bc 1c  |ndow_handle%.4..|
0000a8a0  74 65 6d 70 5f 62 6c 6b  25 21 34 3d 69 63 6f 6e  |temp_blk%!4=icon|
0000a8b0  5f 68 61 6e 64 6c 65 25  0d 34 c6 17 c8 99 32 36  |_handle%.4....26|
0000a8c0  32 33 35 30 2c 2c 74 65  6d 70 5f 62 6c 6b 25 0d  |2350,,temp_blk%.|
0000a8d0  34 d0 1f e7 20 28 74 65  6d 70 5f 62 6c 6b 25 21  |4... (temp_blk%!|
0000a8e0  32 34 20 80 20 31 3c 3c  36 29 20 8c 20 e1 0d 34  |24 . 1<<6) . ..4|
0000a8f0  da 19 74 65 6d 70 5f 62  6c 6b 25 21 31 32 3d 26  |..temp_blk%!12=&|
0000a900  46 30 30 30 30 30 30 0d  34 e4 2f 74 65 6d 70 5f  |F000000.4./temp_|
0000a910  62 6c 6b 25 21 38 3d 63  6f 6c 6f 75 72 25 3c 3c  |blk%!8=colour%<<|
0000a920  32 34 3a c8 99 32 36 32  33 34 39 2c 2c 74 65 6d  |24:..262349,,tem|
0000a930  70 5f 62 6c 6b 25 0d 34  ee 05 e1 0d 34 f8 05 3a  |p_blk%.4....4..:|
0000a940  0d 35 02 38 dd f2 69 63  6f 6e 5f 76 61 6c 69 64  |.5.8..icon_valid|
0000a950  61 74 69 6f 6e 28 77 69  6e 64 6f 77 5f 68 61 6e  |ation(window_han|
0000a960  64 6c 65 25 2c 69 63 6f  6e 5f 68 61 6e 64 6c 65  |dle%,icon_handle|
0000a970  25 2c 74 79 70 65 24 29  0d 35 0c 1e 74 65 6d 70  |%,type$).5..temp|
0000a980  5f 62 6c 6b 25 21 30 3d  77 69 6e 64 6f 77 5f 68  |_blk%!0=window_h|
0000a990  61 6e 64 6c 65 25 0d 35  16 1c 74 65 6d 70 5f 62  |andle%.5..temp_b|
0000a9a0  6c 6b 25 21 34 3d 69 63  6f 6e 5f 68 61 6e 64 6c  |lk%!4=icon_handl|
0000a9b0  65 25 0d 35 20 17 c8 99  32 36 32 33 35 30 2c 2c  |e%.5 ...262350,,|
0000a9c0  74 65 6d 70 5f 62 6c 6b  25 0d 35 2a 25 e7 20 28  |temp_blk%.5*%. (|
0000a9d0  74 65 6d 70 5f 62 6c 6b  25 21 32 34 20 80 20 26  |temp_blk%!24 . &|
0000a9e0  45 31 30 31 29 3c 3e 26  45 31 30 31 20 8c 0d 35  |E101)<>&E101 ..5|
0000a9f0  34 44 20 85 20 32 30 32  2c 22 49 63 6f 6e 20 22  |4D . 202,"Icon "|
0000aa00  2b c3 69 63 6f 6e 5f 68  61 6e 64 6c 65 25 2b 22  |+.icon_handle%+"|
0000aa10  20 6e 6f 74 20 77 72 69  74 61 62 6c 65 20 61 6e  | not writable an|
0000aa20  64 20 6e 6f 74 20 69 6e  64 69 72 65 63 74 65 64  |d not indirected|
0000aa30  21 22 0d 35 3e 06 20 e1  0d 35 48 05 cd 0d 35 52  |!".5>. ..5H...5R|
0000aa40  0e c8 8e 20 74 79 70 65  24 20 ca 0d 35 5c 25 20  |... type$ ..5\% |
0000aa50  c9 20 22 6e 75 6d 62 65  72 22 3a 24 74 65 6d 70  |. "number":$temp|
0000aa60  5f 62 6c 6b 25 21 33 32  3d 22 41 30 2d 39 2e 22  |_blk%!32="A0-9."|
0000aa70  0d 35 66 30 20 c9 20 22  66 69 6c 65 22 3a 24 74  |.5f0 . "file":$t|
0000aa80  65 6d 70 5f 62 6c 6b 25  21 33 32 3d 22 41 7e 20  |emp_blk%!32="A~ |
0000aa90  24 26 40 5c 5c 5e 3a 2e  23 2a 7c 22 2b bd 33 34  |$&@\\^:.#*|"+.34|
0000aaa0  0d 35 70 05 7f 0d 35 7a  1c 20 24 74 65 6d 70 5f  |.5p...5z. $temp_|
0000aab0  62 6c 6b 25 21 33 32 3d  22 41 22 2b 74 79 70 65  |blk%!32="A"+type|
0000aac0  24 0d 35 84 05 cb 0d 35  8e 05 e1 0d 35 98 05 3a  |$.5....5....5..:|
0000aad0  0d 35 a2 38 dd f2 70 6c  61 63 65 5f 63 61 72 65  |.5.8..place_care|
0000aae0  74 28 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 25  |t(window_handle%|
0000aaf0  2c 69 63 6f 6e 5f 68 61  6e 64 6c 65 25 2c 70 6f  |,icon_handle%,po|
0000ab00  73 69 74 69 6f 6e 25 29  0d 35 ac 1e 74 65 6d 70  |sition%).5..temp|
0000ab10  5f 62 6c 6b 25 21 30 3d  77 69 6e 64 6f 77 5f 68  |_blk%!0=window_h|
0000ab20  61 6e 64 6c 65 25 0d 35  b6 1c 74 65 6d 70 5f 62  |andle%.5..temp_b|
0000ab30  6c 6b 25 21 34 3d 69 63  6f 6e 5f 68 61 6e 64 6c  |lk%!4=icon_handl|
0000ab40  65 25 0d 35 c0 17 c8 99  32 36 32 33 35 30 2c 2c  |e%.5....262350,,|
0000ab50  74 65 6d 70 5f 62 6c 6b  25 0d 35 ca 25 e7 20 28  |temp_blk%.5.%. (|
0000ab60  74 65 6d 70 5f 62 6c 6b  25 21 32 34 20 80 20 26  |temp_blk%!24 . &|
0000ab70  45 31 30 31 29 3c 3e 26  45 31 30 31 20 8c 0d 35  |E101)<>&E101 ..5|
0000ab80  d4 44 20 85 20 32 30 32  2c 22 49 63 6f 6e 20 22  |.D . 202,"Icon "|
0000ab90  2b c3 69 63 6f 6e 5f 68  61 6e 64 6c 65 25 2b 22  |+.icon_handle%+"|
0000aba0  20 6e 6f 74 20 77 72 69  74 61 62 6c 65 20 61 6e  | not writable an|
0000abb0  64 20 6e 6f 74 20 69 6e  64 69 72 65 63 74 65 64  |d not indirected|
0000abc0  21 22 0d 35 de 06 20 e1  0d 35 e8 05 cd 0d 35 f2  |!".5.. ..5....5.|
0000abd0  17 74 65 78 74 24 3d 24  74 65 6d 70 5f 62 6c 6b  |.text$=$temp_blk|
0000abe0  25 21 32 38 0d 35 fc 27  e7 20 70 6f 73 69 74 69  |%!28.5.'. positi|
0000abf0  6f 6e 25 3e a9 74 65 78  74 24 20 70 6f 73 69 74  |on%>.text$ posit|
0000ac00  69 6f 6e 25 3d a9 74 65  78 74 24 0d 36 06 39 c8  |ion%=.text$.6.9.|
0000ac10  99 32 36 32 33 35 34 2c  77 69 6e 64 6f 77 5f 68  |.262354,window_h|
0000ac20  61 6e 64 6c 65 25 2c 69  63 6f 6e 5f 68 61 6e 64  |andle%,icon_hand|
0000ac30  6c 65 25 2c 30 2c 30 2c  2d 31 2c 70 6f 73 69 74  |le%,0,0,-1,posit|
0000ac40  69 6f 6e 25 0d 36 10 05  e1 0d 36 1a 05 3a 0d 36  |ion%.6....6..:.6|
0000ac50  24 36 dd f2 70 75 74 5f  69 63 6f 6e 5f 74 65 78  |$6..put_icon_tex|
0000ac60  74 28 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 25  |t(window_handle%|
0000ac70  2c 69 63 6f 6e 5f 68 61  6e 64 6c 65 25 2c 74 65  |,icon_handle%,te|
0000ac80  78 74 24 29 0d 36 2e 1e  74 65 6d 70 5f 62 6c 6b  |xt$).6..temp_blk|
0000ac90  25 21 30 3d 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |%!0=window_handl|
0000aca0  65 25 0d 36 38 1c 74 65  6d 70 5f 62 6c 6b 25 21  |e%.68.temp_blk%!|
0000acb0  34 3d 69 63 6f 6e 5f 68  61 6e 64 6c 65 25 0d 36  |4=icon_handle%.6|
0000acc0  42 17 c8 99 32 36 32 33  35 30 2c 2c 74 65 6d 70  |B...262350,,temp|
0000acd0  5f 62 6c 6b 25 0d 36 4c  23 e7 20 28 74 65 6d 70  |_blk%.6L#. (temp|
0000ace0  5f 62 6c 6b 25 21 32 34  20 80 20 26 31 30 31 29  |_blk%!24 . &101)|
0000acf0  3c 3e 26 31 30 31 20 8c  0d 36 56 33 20 85 20 32  |<>&101 ..6V3 . 2|
0000ad00  30 32 2c 22 49 63 6f 6e  20 22 2b c3 69 63 6f 6e  |02,"Icon "+.icon|
0000ad10  5f 68 61 6e 64 6c 65 25  2b 22 20 6e 6f 74 20 69  |_handle%+" not i|
0000ad20  6e 64 69 72 65 63 74 65  64 21 22 0d 36 60 06 20  |ndirected!".6`. |
0000ad30  e1 0d 36 6a 05 cd 0d 36  74 3c 74 65 78 74 24 3d  |..6j...6t<text$=|
0000ad40  c0 74 65 78 74 24 2c 74  65 6d 70 5f 62 6c 6b 25  |.text$,temp_blk%|
0000ad50  21 33 36 29 3a f4 20 2d  31 20 61 6c 6c 6f 77 73  |!36):. -1 allows|
0000ad60  20 66 6f 72 20 3c 52 45  54 55 52 4e 3e 20 63 68  | for <RETURN> ch|
0000ad70  72 21 0d 36 7e 17 24 74  65 6d 70 5f 62 6c 6b 25  |r!.6~.$temp_blk%|
0000ad80  21 32 38 3d 74 65 78 74  24 0d 36 88 11 74 65 6d  |!28=text$.6..tem|
0000ad90  70 5f 62 6c 6b 25 21 38  3d 30 0d 36 92 12 74 65  |p_blk%!8=0.6..te|
0000ada0  6d 70 5f 62 6c 6b 25 21  31 32 3d 30 0d 36 9c 17  |mp_blk%!12=0.6..|
0000adb0  c8 99 32 36 32 33 34 39  2c 2c 74 65 6d 70 5f 62  |..262349,,temp_b|
0000adc0  6c 6b 25 0d 36 a6 05 e1  0d 36 b0 05 3a 0d 36 ba  |lk%.6....6..:.6.|
0000add0  29 dd a4 70 75 74 5f 69  63 6f 6e 5f 6f 6e 5f 62  |)..put_icon_on_b|
0000ade0  61 72 28 73 70 72 69 74  65 5f 6e 61 6d 65 24 2c  |ar(sprite_name$,|
0000adf0  73 69 64 65 24 29 0d 36  c4 0d ea 20 68 61 6e 64  |side$).6... hand|
0000ae00  6c 65 25 0d 36 ce 31 e7  20 73 69 64 65 24 3d 22  |le%.6.1. side$="|
0000ae10  52 49 47 48 54 22 20 21  74 65 6d 70 5f 62 6c 6b  |RIGHT" !temp_blk|
0000ae20  25 3d 2d 31 20 8b 20 21  74 65 6d 70 5f 62 6c 6b  |%=-1 . !temp_blk|
0000ae30  25 3d 2d 32 0d 36 d8 11  74 65 6d 70 5f 62 6c 6b  |%=-2.6..temp_blk|
0000ae40  25 21 34 3d 30 0d 36 e2  11 74 65 6d 70 5f 62 6c  |%!4=0.6..temp_bl|
0000ae50  6b 25 21 38 3d 30 0d 36  ec 13 74 65 6d 70 5f 62  |k%!8=0.6..temp_b|
0000ae60  6c 6b 25 21 31 32 3d 36  38 0d 36 f6 13 74 65 6d  |lk%!12=68.6..tem|
0000ae70  70 5f 62 6c 6b 25 21 31  36 3d 36 38 0d 37 00 1a  |p_blk%!16=68.7..|
0000ae80  74 65 6d 70 5f 62 6c 6b  25 21 32 30 3d 26 31 37  |temp_blk%!20=&17|
0000ae90  30 30 32 30 32 41 0d 37  0a 20 24 28 74 65 6d 70  |00202A.7. $(temp|
0000aea0  5f 62 6c 6b 25 2b 32 34  29 3d 73 70 72 69 74 65  |_blk%+24)=sprite|
0000aeb0  5f 6e 61 6d 65 24 0d 37  14 21 c8 99 32 36 32 33  |_name$.7.!..2623|
0000aec0  33 38 2c 2c 74 65 6d 70  5f 62 6c 6b 25 20 b8 20  |38,,temp_blk% . |
0000aed0  68 61 6e 64 6c 65 25 0d  37 1e 0c 3d 68 61 6e 64  |handle%.7..=hand|
0000aee0  6c 65 25 0d 37 28 05 3a  0d 37 32 43 dd f2 70 75  |le%.7(.:.72C..pu|
0000aef0  74 5f 69 6e 66 6f 5f 74  65 78 74 28 77 69 6e 64  |t_info_text(wind|
0000af00  6f 77 5f 68 61 6e 64 6c  65 25 2c 6e 61 6d 65 24  |ow_handle%,name$|
0000af10  2c 70 75 72 70 6f 73 65  24 2c 61 75 74 68 6f 72  |,purpose$,author|
0000af20  24 2c 76 65 72 73 69 6f  6e 24 29 0d 37 3c 2a f2  |$,version$).7<*.|
0000af30  70 75 74 5f 69 63 6f 6e  5f 74 65 78 74 28 77 69  |put_icon_text(wi|
0000af40  6e 64 6f 77 5f 68 61 6e  64 6c 65 25 2c 31 2c 6e  |ndow_handle%,1,n|
0000af50  61 6d 65 24 29 0d 37 46  2d f2 70 75 74 5f 69 63  |ame$).7F-.put_ic|
0000af60  6f 6e 5f 74 65 78 74 28  77 69 6e 64 6f 77 5f 68  |on_text(window_h|
0000af70  61 6e 64 6c 65 25 2c 32  2c 70 75 72 70 6f 73 65  |andle%,2,purpose|
0000af80  24 29 0d 37 50 2c f2 70  75 74 5f 69 63 6f 6e 5f  |$).7P,.put_icon_|
0000af90  74 65 78 74 28 77 69 6e  64 6f 77 5f 68 61 6e 64  |text(window_hand|
0000afa0  6c 65 25 2c 33 2c 61 75  74 68 6f 72 24 29 0d 37  |le%,3,author$).7|
0000afb0  5a 2d f2 70 75 74 5f 69  63 6f 6e 5f 74 65 78 74  |Z-.put_icon_text|
0000afc0  28 77 69 6e 64 6f 77 5f  68 61 6e 64 6c 65 25 2c  |(window_handle%,|
0000afd0  34 2c 76 65 72 73 69 6f  6e 24 29 0d 37 64 05 e1  |4,version$).7d..|
0000afe0  0d 37 6e 05 3a 0d 37 78  1e dd 20 a4 74 61 73 6b  |.7n.:.7x.. .task|
0000aff0  5f 69 6e 69 74 69 61 6c  69 73 65 28 74 69 74 6c  |_initialise(titl|
0000b000  65 24 29 0d 37 82 0e ea  20 76 65 72 73 69 6f 6e  |e$).7... version|
0000b010  25 0d 37 8c 10 76 65 72  73 69 6f 6e 25 3d 32 30  |%.7..version%=20|
0000b020  30 0d 37 96 3c c8 99 32  36 32 33 33 36 2c 76 65  |0.7.<..262336,ve|
0000b030  72 73 69 6f 6e 25 2c 26  34 42 35 33 34 31 35 34  |rsion%,&4B534154|
0000b040  2c 74 69 74 6c 65 24 20  b8 20 76 65 72 73 69 6f  |,title$ . versio|
0000b050  6e 25 2c 74 68 69 73 5f  74 61 73 6b 25 0d 37 a0  |n%,this_task%.7.|
0000b060  0f 3d 74 68 69 73 5f 74  61 73 6b 25 0d 37 aa 05  |.=this_task%.7..|
0000b070  3a 0d 37 b4 1a dd f2 61  64 64 5f 6d 65 6e 75 5f  |:.7....add_menu_|
0000b080  69 74 65 6d 28 6c 69 6e  65 24 29 0d 37 be 44 ea  |item(line$).7.D.|
0000b090  20 6d 65 6e 75 66 6c 61  67 25 2c 69 63 6f 6e 66  | menuflag%,iconf|
0000b0a0  6c 61 67 25 2c 70 61 72  61 6d 24 2c 73 75 62 25  |lag%,param$,sub%|
0000b0b0  2c 69 74 65 6d 74 65 78  74 24 2c 77 72 69 74 61  |,itemtext$,writa|
0000b0c0  62 6c 65 25 2c 6d 61 78  6c 65 6e 67 74 68 25 0d  |ble%,maxlength%.|
0000b0d0  37 c8 2a 69 63 6f 6e 66  6c 61 67 25 3d 26 37 30  |7.*iconflag%=&70|
0000b0e0  30 30 30 32 31 3a 73 75  62 25 3d 2d 31 3a 77 72  |00021:sub%=-1:wr|
0000b0f0  69 74 61 62 6c 65 25 3d  a3 0d 37 d2 3a 69 74 65  |itable%=..7.:ite|
0000b100  6d 74 65 78 74 24 3d a4  6d 65 6e 75 5f 69 74 65  |mtext$=.menu_ite|
0000b110  6d 5f 74 65 78 74 28 6c  69 6e 65 24 29 3a 6d 61  |m_text(line$):ma|
0000b120  78 6c 65 6e 67 74 68 25  3d a9 69 74 65 6d 74 65  |xlength%=.itemte|
0000b130  78 74 24 0d 37 dc 05 f5  0d 37 e6 23 20 70 61 72  |xt$.7....7.# par|
0000b140  61 6d 24 3d a4 6d 65 6e  75 5f 69 74 65 6d 5f 70  |am$=.menu_item_p|
0000b150  61 72 61 6d 28 6c 69 6e  65 24 29 0d 37 f0 14 20  |aram(line$).7.. |
0000b160  c8 8e 20 c0 70 61 72 61  6d 24 2c 34 29 20 ca 0d  |.. .param$,4) ..|
0000b170  37 fa 23 20 20 c9 22 74  69 63 6b 22 3a 6d 65 6e  |7.#  ."tick":men|
0000b180  75 66 6c 61 67 25 3d 6d  65 6e 75 66 6c 61 67 25  |uflag%=menuflag%|
0000b190  84 31 0d 38 04 23 20 20  c9 22 6c 69 6e 65 22 3a  |.1.8.#  ."line":|
0000b1a0  6d 65 6e 75 66 6c 61 67  25 3d 6d 65 6e 75 66 6c  |menuflag%=menufl|
0000b1b0  61 67 25 84 32 0d 38 0e  29 20 20 c9 22 73 68 61  |ag%.2.8.)  ."sha|
0000b1c0  64 22 3a 69 63 6f 6e 66  6c 61 67 25 3d 69 63 6f  |d":iconflag%=ico|
0000b1d0  6e 66 6c 61 67 25 84 26  34 30 30 30 30 30 0d 38  |nflag%.&400000.8|
0000b1e0  18 32 20 20 c9 22 73 75  62 6d 22 3a 73 75 62 25  |.2  ."subm":sub%|
0000b1f0  3d a4 6d 65 6e 75 5f 73  75 62 6d 65 6e 75 28 a4  |=.menu_submenu(.|
0000b200  6d 65 6e 75 76 61 72 28  70 61 72 61 6d 24 29 29  |menuvar(param$))|
0000b210  0d 38 22 31 20 20 c9 22  77 69 6e 64 22 3a 73 75  |.8"1  ."wind":su|
0000b220  62 25 3d a4 6d 65 6e 75  5f 77 69 6e 64 6f 77 28  |b%=.menu_window(|
0000b230  a4 6d 65 6e 75 76 61 72  28 70 61 72 61 6d 24 29  |.menuvar(param$)|
0000b240  29 0d 38 2c 38 20 20 c9  22 69 63 6f 6e 22 3a 69  |).8,8  ."icon":i|
0000b250  63 6f 6e 66 6c 61 67 25  3d a4 6d 65 6e 75 5f 69  |conflag%=.menu_i|
0000b260  63 6f 6e 66 6c 61 67 28  a4 6d 65 6e 75 76 61 72  |conflag(.menuvar|
0000b270  28 70 61 72 61 6d 24 29  29 0d 38 36 2e 20 20 c9  |(param$)).86.  .|
0000b280  22 77 72 69 74 22 3a f2  6d 65 6e 75 5f 77 72 69  |"writ":.menu_wri|
0000b290  74 61 62 6c 65 28 a4 6d  65 6e 75 76 61 72 28 70  |table(.menuvar(p|
0000b2a0  61 72 61 6d 24 29 29 0d  38 40 07 20 20 cb 0d 38  |aram$)).8@.  ..8|
0000b2b0  4a 10 20 fd 20 70 61 72  61 6d 24 3d 22 22 0d 38  |J. . param$="".8|
0000b2c0  54 18 70 6f 69 6e 74 65  72 25 21 30 3d 6d 65 6e  |T.pointer%!0=men|
0000b2d0  75 66 6c 61 67 25 0d 38  5e 13 70 6f 69 6e 74 65  |uflag%.8^.pointe|
0000b2e0  72 25 21 34 3d 73 75 62  25 0d 38 68 23 e7 20 a9  |r%!4=sub%.8h#. .|
0000b2f0  28 69 74 65 6d 74 65 78  74 24 29 3e 31 32 20 84  |(itemtext$)>12 .|
0000b300  20 77 72 69 74 61 62 6c  65 25 20 8c 0d 38 72 20  | writable% ..8r |
0000b310  20 70 6f 69 6e 74 65 72  25 21 38 3d 69 63 6f 6e  | pointer%!8=icon|
0000b320  66 6c 61 67 25 20 84 20  26 31 30 30 0d 38 7c 34  |flag% . &100.8|4|
0000b330  20 f2 69 6e 64 69 72 65  63 74 65 64 5f 69 74 65  | .indirected_ite|
0000b340  6d 28 70 6f 69 6e 74 65  72 25 2c 77 72 69 74 61  |m(pointer%,writa|
0000b350  62 6c 65 25 2c 6d 61 78  6c 65 6e 67 74 68 25 29  |ble%,maxlength%)|
0000b360  0d 38 86 05 cc 0d 38 90  19 20 70 6f 69 6e 74 65  |.8....8.. pointe|
0000b370  72 25 21 38 3d 69 63 6f  6e 66 6c 61 67 25 0d 38  |r%!8=iconflag%.8|
0000b380  9a 27 20 24 28 70 6f 69  6e 74 65 72 25 2b 31 32  |.' $(pointer%+12|
0000b390  29 3d c0 69 74 65 6d 74  65 78 74 24 2b bd 28 30  |)=.itemtext$+.(0|
0000b3a0  29 2c 31 32 29 0d 38 a4  05 cd 0d 38 ae 10 70 6f  |),12).8....8..po|
0000b3b0  69 6e 74 65 72 25 2b 3d  32 34 0d 38 b8 05 e1 0d  |inter%+=24.8....|
0000b3c0  38 c2 05 3a 0d 38 cc 16  dd a4 62 65 67 69 6e 6d  |8..:.8....beginm|
0000b3d0  65 6e 75 28 6c 69 6e 65  24 29 0d 38 d6 1e e7 20  |enu(line$).8... |
0000b3e0  c0 6c 69 6e 65 24 2c 39  29 3d 22 62 65 67 69 6e  |.line$,9)="begin|
0000b3f0  6d 65 6e 75 22 20 3d b9  0d 38 e0 06 3d a3 0d 38  |menu" =..8..=..8|
0000b400  ea 05 3a 0d 38 f4 26 dd  a4 64 65 63 6f 64 65 5f  |..:.8.&..decode_|
0000b410  6d 65 6e 75 28 6d 65 6e  75 73 74 61 72 74 25 2c  |menu(menustart%,|
0000b420  6c 69 73 74 70 74 72 25  29 0d 38 fe 10 ea 20 74  |listptr%).8... t|
0000b430  65 78 74 5f 70 61 74 68  24 0d 39 08 3a c8 99 32  |ext_path$.9.:..2|
0000b440  36 32 33 35 37 2c 2c 6d  65 6e 75 73 74 61 72 74  |62357,,menustart|
0000b450  25 2c 6c 69 73 74 70 74  72 25 2c 62 6c 6b 25 2b  |%,listptr%,blk%+|
0000b460  32 35 36 20 b8 20 2c 2c  2c 74 65 78 74 5f 70 61  |256 . ,,,text_pa|
0000b470  74 68 24 0d 39 12 0f 3d  74 65 78 74 5f 70 61 74  |th$.9..=text_pat|
0000b480  68 24 0d 39 1c 05 3a 0d  39 26 45 dd f2 64 69 6d  |h$.9..:.9&E..dim|
0000b490  5f 6d 65 6e 75 5f 61 72  72 61 79 73 28 6d 65 6e  |_menu_arrays(men|
0000b4a0  75 63 6f 75 6e 74 25 2c  69 74 65 6d 63 6f 75 6e  |ucount%,itemcoun|
0000b4b0  74 25 2c 77 72 69 74 65  63 6f 75 6e 74 25 2c 77  |t%,writecount%,w|
0000b4c0  69 6e 64 6f 77 63 6f 75  6e 74 25 29 0d 39 30 30  |indowcount%).900|
0000b4d0  de 20 6d 65 6e 75 73 74  61 72 74 25 20 28 6d 65  |. menustart% (me|
0000b4e0  6e 75 63 6f 75 6e 74 25  2a 32 38 29 2b 28 69 74  |nucount%*28)+(it|
0000b4f0  65 6d 63 6f 75 6e 74 25  2a 32 34 29 0d 39 3a 1c  |emcount%*24).9:.|
0000b500  de 20 6d 65 6e 75 77 69  64 74 68 25 28 6d 65 6e  |. menuwidth%(men|
0000b510  75 63 6f 75 6e 74 25 29  0d 39 44 17 de 20 6d 65  |ucount%).9D.. me|
0000b520  6e 75 25 28 6d 65 6e 75  63 6f 75 6e 74 25 29 0d  |nu%(menucount%).|
0000b530  39 4e 21 de 20 77 72 69  74 61 62 6c 65 5f 69 74  |9N!. writable_it|
0000b540  65 6d 25 28 77 72 69 74  65 63 6f 75 6e 74 25 29  |em%(writecount%)|
0000b550  0d 39 58 20 de 20 77 72  69 74 61 62 6c 65 5f 6c  |.9X . writable_l|
0000b560  65 6e 25 28 77 72 69 74  65 63 6f 75 6e 74 25 29  |en%(writecount%)|
0000b570  0d 39 62 05 e1 0d 39 6c  05 3a 0d 39 76 19 dd a4  |.9b...9l.:.9v...|
0000b580  67 65 74 5f 77 72 69 74  65 6d 28 77 72 69 74 65  |get_writem(write|
0000b590  6d 25 29 0d 39 80 0b ea  20 74 65 6d 70 24 0d 39  |m%).9... temp$.9|
0000b5a0  8a 31 e7 20 77 72 69 74  65 6d 25 3c 31 20 84 20  |.1. writem%<1 . |
0000b5b0  77 72 69 74 65 6d 25 3e  de 28 77 72 69 74 61 62  |writem%>.(writab|
0000b5c0  6c 65 5f 69 74 65 6d 25  28 29 2c 31 29 20 8c 0d  |le_item%(),1) ..|
0000b5d0  39 94 3e 20 85 20 32 30  31 2c 22 77 72 69 74 61  |9.> . 201,"writa|
0000b5e0  62 6c 65 20 6d 65 6e 75  20 69 74 65 6d 20 22 2b  |ble menu item "+|
0000b5f0  c3 28 77 72 69 74 65 6d  25 29 2b 22 20 64 6f 65  |.(writem%)+" doe|
0000b600  73 20 6e 6f 74 20 65 78  69 73 74 21 22 0d 39 9e  |s not exist!".9.|
0000b610  05 cd 0d 39 a8 23 77 72  69 74 65 6d 25 3d 77 72  |...9.#writem%=wr|
0000b620  69 74 61 62 6c 65 5f 69  74 65 6d 25 28 77 72 69  |itable_item%(wri|
0000b630  74 65 6d 25 29 0d 39 b2  3a 74 65 6d 70 24 3d 22  |tem%).9.:temp$="|
0000b640  22 3a 20 c8 95 20 3f 77  72 69 74 65 6d 25 3e 33  |": .. ?writem%>3|
0000b650  31 3a 74 65 6d 70 24 2b  3d bd 3f 77 72 69 74 65  |1:temp$+=.?write|
0000b660  6d 25 3a 77 72 69 74 65  6d 25 2b 3d 31 3a ce 0d  |m%:writem%+=1:..|
0000b670  39 bc 0a 3d 74 65 6d 70  24 0d 39 c6 05 3a 0d 39  |9..=temp$.9..:.9|
0000b680  d0 14 dd f2 67 6f 74 6f  5f 62 65 67 69 6e 6d 65  |....goto_beginme|
0000b690  6e 75 0d 39 da 11 ea 20  74 65 6d 70 25 2c 6c 69  |nu.9... temp%,li|
0000b6a0  6e 65 24 0d 39 e4 11 cf  23 6d 65 6e 75 66 69 6c  |ne$.9...#menufil|
0000b6b0  65 25 3d 30 0d 39 ee 29  f5 20 74 65 6d 70 25 3d  |e%=0.9.). temp%=|
0000b6c0  8f 23 6d 65 6e 75 66 69  6c 65 25 3a 6c 69 6e 65  |.#menufile%:line|
0000b6d0  24 3d be 23 6d 65 6e 75  66 69 6c 65 25 0d 39 f8  |$=.#menufile%.9.|
0000b6e0  25 fd 20 a4 62 65 67 69  6e 6d 65 6e 75 28 6c 69  |%. .beginmenu(li|
0000b6f0  6e 65 24 29 20 84 20 c5  23 6d 65 6e 75 66 69 6c  |ne$) . .#menufil|
0000b700  65 25 0d 3a 02 3b e7 20  c5 23 6d 65 6e 75 66 69  |e%.:.;. .#menufi|
0000b710  6c 65 25 20 85 20 32 30  30 2c 22 4e 6f 20 27 62  |le% . 200,"No 'b|
0000b720  65 67 69 6e 6d 65 6e 75  27 20 66 6f 75 6e 64 20  |eginmenu' found |
0000b730  69 6e 20 6d 65 6e 75 20  66 69 6c 65 22 0d 3a 0c  |in menu file".:.|
0000b740  15 cf 23 6d 65 6e 75 66  69 6c 65 25 3d 74 65 6d  |..#menufile%=tem|
0000b750  70 25 0d 3a 16 05 e1 0d  3a 20 05 3a 0d 3a 2a 32  |p%.:....: .:.:*2|
0000b760  dd f2 69 6e 64 69 72 65  63 74 65 64 5f 69 74 65  |..indirected_ite|
0000b770  6d 28 6d 65 6e 75 5f 70  74 72 25 2c 77 72 69 74  |m(menu_ptr%,writ|
0000b780  61 62 6c 65 25 2c 6c 65  6e 67 74 68 25 29 0d 3a  |able%,length%).:|
0000b790  34 10 ea 20 69 6e 64 69  72 5f 70 74 72 25 0d 3a  |4.. indir_ptr%.:|
0000b7a0  3e 42 e7 20 77 72 69 74  61 62 6c 65 25 20 de 20  |>B. writable% . |
0000b7b0  69 6e 64 69 72 5f 70 74  72 25 20 6c 65 6e 67 74  |indir_ptr% lengt|
0000b7c0  68 25 2b 31 20 8b 20 de  20 69 6e 64 69 72 5f 70  |h%+1 . . indir_p|
0000b7d0  74 72 25 20 31 2b a9 69  74 65 6d 74 65 78 74 24  |tr% 1+.itemtext$|
0000b7e0  0d 3a 48 3b 6d 65 6e 75  5f 70 74 72 25 21 31 32  |.:H;menu_ptr%!12|
0000b7f0  3d 69 6e 64 69 72 5f 70  74 72 25 3a f4 20 70 6f  |=indir_ptr%:. po|
0000b800  69 6e 74 65 72 20 74 6f  20 69 6e 64 69 72 65 63  |inter to indirec|
0000b810  74 69 6f 6e 20 62 75 66  66 65 72 0d 3a 52 1e 24  |tion buffer.:R.$|
0000b820  69 6e 64 69 72 5f 70 74  72 25 3d 69 74 65 6d 74  |indir_ptr%=itemt|
0000b830  65 78 74 24 2b bd 28 30  29 0d 3a 5c 11 e7 20 77  |ext$+.(0).:\.. w|
0000b840  72 69 74 61 62 6c 65 25  20 8c 0d 3a 66 29 20 77  |ritable% ..:f) w|
0000b850  72 69 74 61 62 6c 65 5f  69 74 65 6d 25 28 77 72  |ritable_item%(wr|
0000b860  69 74 61 62 6c 65 25 29  3d 69 6e 64 69 72 5f 70  |itable%)=indir_p|
0000b870  74 72 25 0d 3a 70 25 20  77 72 69 74 61 62 6c 65  |tr%.:p% writable|
0000b880  5f 6c 65 6e 25 28 77 72  69 74 61 62 6c 65 25 29  |_len%(writable%)|
0000b890  3d 6c 65 6e 67 74 68 25  0d 3a 7a 1a 20 69 6e 64  |=length%.:z. ind|
0000b8a0  69 72 5f 70 74 72 25 2b  3d 6c 65 6e 67 74 68 25  |ir_ptr%+=length%|
0000b8b0  2b 31 0d 3a 84 1b 20 6d  65 6e 75 5f 70 74 72 25  |+1.:.. menu_ptr%|
0000b8c0  21 32 30 3d 6c 65 6e 67  74 68 25 2b 31 0d 3a 8e  |!20=length%+1.:.|
0000b8d0  05 cc 0d 3a 98 1d 20 69  6e 64 69 72 5f 70 74 72  |...:.. indir_ptr|
0000b8e0  25 2b 3d 31 2b a9 69 74  65 6d 74 65 78 74 24 0d  |%+=1+.itemtext$.|
0000b8f0  3a a2 2e 20 6d 65 6e 75  5f 70 74 72 25 21 32 30  |:.. menu_ptr%!20|
0000b900  3d 31 2b a9 69 74 65 6d  74 65 78 74 24 3a f4 20  |=1+.itemtext$:. |
0000b910  42 75 66 66 65 72 20 6c  65 6e 67 74 68 0d 3a ac  |Buffer length.:.|
0000b920  05 cd 0d 3a b6 11 3f 69  6e 64 69 72 5f 70 74 72  |...:..?indir_ptr|
0000b930  25 3d 30 0d 3a c0 41 6d  65 6e 75 5f 70 74 72 25  |%=0.:.Amenu_ptr%|
0000b940  21 31 36 3d 69 6e 64 69  72 5f 70 74 72 25 3a f4  |!16=indir_ptr%:.|
0000b950  20 50 6f 69 6e 74 65 72  20 74 6f 20 76 61 6c 69  | Pointer to vali|
0000b960  64 61 74 69 6f 6e 20 73  74 72 69 6e 67 20 28 6e  |dation string (n|
0000b970  75 6c 6c 29 0d 3a ca 05  e1 0d 3a d4 05 3a 0d 3a  |ull).:....:..:.:|
0000b980  de 1b dd a4 69 74 65 6d  5f 63 6f 75 6e 74 28 6d  |....item_count(m|
0000b990  65 6e 75 5f 70 74 72 25  29 0d 3a e8 0c ea 20 63  |enu_ptr%).:... c|
0000b9a0  6f 75 6e 74 25 0d 3a f2  1a 63 6f 75 6e 74 25 3d  |ount%.:..count%=|
0000b9b0  31 3a 6d 65 6e 75 5f 70  74 72 25 2b 3d 32 38 0d  |1:menu_ptr%+=28.|
0000b9c0  3a fc 35 c8 95 20 28 21  6d 65 6e 75 5f 70 74 72  |:.5.. (!menu_ptr|
0000b9d0  25 20 80 20 26 38 30 29  3d 30 3a 6d 65 6e 75 5f  |% . &80)=0:menu_|
0000b9e0  70 74 72 25 2b 3d 32 34  3a 63 6f 75 6e 74 25 2b  |ptr%+=24:count%+|
0000b9f0  3d 31 3a ce 0d 3b 06 0b  3d 63 6f 75 6e 74 25 0d  |=1:..;..=count%.|
0000ba00  3b 10 05 3a 0d 3b 1a 1b  dd f2 6c 6f 61 64 5f 6d  |;..:.;....load_m|
0000ba10  65 6e 75 73 28 6d 65 6e  75 66 69 6c 65 24 29 0d  |enus(menufile$).|
0000ba20  3b 24 32 ea 20 6d 65 6e  75 63 6f 75 6e 74 25 2c  |;$2. menucount%,|
0000ba30  68 65 61 64 65 72 25 2c  6c 69 6e 65 24 2c 70 6f  |header%,line$,po|
0000ba40  69 6e 74 65 72 25 2c 6d  65 6e 75 73 74 61 72 74  |inter%,menustart|
0000ba50  25 0d 3b 2e 20 f2 73 69  7a 65 5f 6d 65 6e 75 5f  |%.;. .size_menu_|
0000ba60  61 72 72 61 79 73 28 6d  65 6e 75 66 69 6c 65 24  |arrays(menufile$|
0000ba70  29 0d 3b 38 18 6d 65 6e  75 66 69 6c 65 25 3d 8e  |).;8.menufile%=.|
0000ba80  6d 65 6e 75 66 69 6c 65  24 0d 3b 42 24 f2 73 65  |menufile$.;B$.se|
0000ba90  74 5f 6d 65 6e 75 5f 61  72 72 61 79 73 3a f2 67  |t_menu_arrays:.g|
0000baa0  6f 74 6f 5f 62 65 67 69  6e 6d 65 6e 75 0d 3b 4c  |oto_beginmenu.;L|
0000bab0  1a 6d 65 6e 75 63 6f 75  6e 74 25 3d 30 3a 68 65  |.menucount%=0:he|
0000bac0  61 64 65 72 25 3d a3 0d  3b 56 05 f5 0d 3b 60 16  |ader%=..;V...;`.|
0000bad0  20 6c 69 6e 65 24 3d be  23 6d 65 6e 75 66 69 6c  | line$=.#menufil|
0000bae0  65 25 0d 3b 6a 1a 20 e7  20 a4 62 65 67 69 6e 6d  |e%.;j. . .beginm|
0000baf0  65 6e 75 28 6c 69 6e 65  24 29 20 8c 0d 3b 74 45  |enu(line$) ..;tE|
0000bb00  20 20 e7 68 65 61 64 65  72 25 20 85 20 32 30 30  |  .header% . 200|
0000bb10  2c 22 42 61 64 20 6d 65  6e 75 20 66 69 6c 65 2c  |,"Bad menu file,|
0000bb20  20 6e 6f 20 69 74 65 6d  73 20 69 6e 20 6d 65 6e  | no items in men|
0000bb30  75 20 22 2b c3 28 6d 65  6e 75 63 6f 75 6e 74 25  |u "+.(menucount%|
0000bb40  29 0d 3b 7e 2a 20 20 e7  6d 65 6e 75 63 6f 75 6e  |).;~*  .menucoun|
0000bb50  74 25 20 f2 6d 61 72 6b  5f 6d 65 6e 75 5f 65 6e  |t% .mark_menu_en|
0000bb60  64 28 70 6f 69 6e 74 65  72 25 29 0d 3b 88 25 20  |d(pointer%).;.% |
0000bb70  20 6d 65 6e 75 63 6f 75  6e 74 25 2b 3d 31 3a 6c  | menucount%+=1:l|
0000bb80  69 6e 65 24 3d be 23 6d  65 6e 75 66 69 6c 65 25  |ine$=.#menufile%|
0000bb90  0d 3b 92 48 20 20 f2 6d  61 6b 65 5f 6d 65 6e 75  |.;.H  .make_menu|
0000bba0  5f 68 65 61 64 65 72 28  70 6f 69 6e 74 65 72 25  |_header(pointer%|
0000bbb0  2c 6c 69 6e 65 24 2c 6d  65 6e 75 77 69 64 74 68  |,line$,menuwidth|
0000bbc0  25 28 6d 65 6e 75 63 6f  75 6e 74 25 29 29 3a 68  |%(menucount%)):h|
0000bbd0  65 61 64 65 72 25 3d b9  0d 3b 9c 06 20 cc 0d 3b  |eader%=..;.. ..;|
0000bbe0  a6 25 20 20 f2 61 64 64  5f 6d 65 6e 75 5f 69 74  |.%  .add_menu_it|
0000bbf0  65 6d 28 6c 69 6e 65 24  29 3a 68 65 61 64 65 72  |em(line$):header|
0000bc00  25 3d a3 0d 3b b0 06 20  cd 0d 3b ba 11 fd 20 c5  |%=..;.. ..;... .|
0000bc10  23 6d 65 6e 75 66 69 6c  65 25 0d 3b c4 1c f2 6d  |#menufile%.;...m|
0000bc20  61 72 6b 5f 6d 65 6e 75  5f 65 6e 64 28 70 6f 69  |ark_menu_end(poi|
0000bc30  6e 74 65 72 25 29 0d 3b  ce 24 c8 99 31 33 31 30  |nter%).;.$..1310|
0000bc40  38 35 2c 30 2c 6d 65 6e  75 66 69 6c 65 25 3a 6d  |85,0,menufile%:m|
0000bc50  65 6e 75 66 69 6c 65 25  3d 30 0d 3b d8 43 e7 68  |enufile%=0.;.C.h|
0000bc60  65 61 64 65 72 25 20 85  20 32 30 30 2c 22 42 61  |eader% . 200,"Ba|
0000bc70  64 20 6d 65 6e 75 20 66  69 6c 65 2c 20 6e 6f 20  |d menu file, no |
0000bc80  69 74 65 6d 73 20 69 6e  20 6d 65 6e 75 20 22 2b  |items in menu "+|
0000bc90  c3 28 6d 65 6e 75 63 6f  75 6e 74 25 29 0d 3b e2  |.(menucount%).;.|
0000bca0  05 e1 0d 3b ec 05 3a 0d  3b f6 30 dd f2 6d 61 6b  |...;..:.;.0..mak|
0000bcb0  65 5f 6d 65 6e 75 5f 68  65 61 64 65 72 28 f8 20  |e_menu_header(. |
0000bcc0  70 6f 69 6e 74 65 72 25  2c 74 69 74 6c 65 24 2c  |pointer%,title$,|
0000bcd0  77 69 64 74 68 25 29 0d  3c 00 1e 24 70 6f 69 6e  |width%).<..$poin|
0000bce0  74 65 72 25 3d c0 74 69  74 6c 65 24 2c 31 32 29  |ter%=.title$,12)|
0000bcf0  2b bd 28 30 29 0d 3c 0a  11 70 6f 69 6e 74 65 72  |+.(0).<..pointer|
0000bd00  25 3f 31 32 3d 37 0d 3c  14 11 70 6f 69 6e 74 65  |%?12=7.<..pointe|
0000bd10  72 25 3f 31 33 3d 32 0d  3c 1e 11 70 6f 69 6e 74  |r%?13=2.<..point|
0000bd20  65 72 25 3f 31 34 3d 37  0d 3c 28 11 70 6f 69 6e  |er%?14=7.<(.poin|
0000bd30  74 65 72 25 3f 31 35 3d  30 0d 3c 32 16 70 6f 69  |ter%?15=0.<2.poi|
0000bd40  6e 74 65 72 25 21 31 36  3d 77 69 64 74 68 25 0d  |nter%!16=width%.|
0000bd50  3c 3c 12 70 6f 69 6e 74  65 72 25 21 32 30 3d 34  |<<.pointer%!20=4|
0000bd60  34 0d 3c 46 11 70 6f 69  6e 74 65 72 25 21 32 34  |4.<F.pointer%!24|
0000bd70  3d 30 0d 3c 50 10 70 6f  69 6e 74 65 72 25 2b 3d  |=0.<P.pointer%+=|
0000bd80  32 38 0d 3c 5a 05 e1 0d  3c 64 05 3a 0d 3c 6e 1d  |28.<Z...<d.:.<n.|
0000bd90  dd f2 6d 61 72 6b 5f 6d  65 6e 75 5f 65 6e 64 28  |..mark_menu_end(|
0000bda0  70 6f 69 6e 74 65 72 25  29 0d 3c 78 27 21 28 70  |pointer%).<x'!(p|
0000bdb0  6f 69 6e 74 65 72 25 2d  32 34 29 3d 21 28 70 6f  |ointer%-24)=!(po|
0000bdc0  69 6e 74 65 72 25 2d 32  34 29 20 84 20 26 38 30  |inter%-24) . &80|
0000bdd0  0d 3c 82 05 e1 0d 3c 8c  05 3a 0d 3c 96 10 dd f2  |.<....<..:.<....|
0000bde0  6d 65 6e 75 5f 63 6c 6f  73 65 0d 3c a0 10 c8 99  |menu_close.<....|
0000bdf0  32 36 32 33 35 36 2c 2c  2d 31 0d 3c aa 05 e1 0d  |262356,,-1.<....|
0000be00  3c b4 05 3a 0d 3c be 1c  dd a4 6d 65 6e 75 5f 68  |<..:.<....menu_h|
0000be10  65 69 67 68 74 28 6d 65  6e 75 5f 70 74 72 25 29  |eight(menu_ptr%)|
0000be20  0d 3c c8 23 ea 20 69 74  65 6d 63 6f 75 6e 74 25  |.<.#. itemcount%|
0000be30  2c 6c 69 6e 65 63 6f 75  6e 74 25 2c 68 65 69 67  |,linecount%,heig|
0000be40  68 74 25 0d 3c d2 10 69  74 65 6d 63 6f 75 6e 74  |ht%.<..itemcount|
0000be50  25 3d 31 0d 3c dc 25 68  65 69 67 68 74 25 3d 6d  |%=1.<.%height%=m|
0000be60  65 6e 75 5f 70 74 72 25  21 32 30 2b 6d 65 6e 75  |enu_ptr%!20+menu|
0000be70  5f 70 74 72 25 21 32 34  0d 3c e6 11 6d 65 6e 75  |_ptr%!24.<..menu|
0000be80  5f 70 74 72 25 2b 3d 32  38 0d 3c f0 1b c8 95 20  |_ptr%+=28.<.... |
0000be90  28 21 6d 65 6e 75 5f 70  74 72 25 20 80 20 26 38  |(!menu_ptr% . &8|
0000bea0  30 29 3d 30 0d 3c fa 12  20 69 74 65 6d 63 6f 75  |0)=0.<.. itemcou|
0000beb0  6e 74 25 2b 3d 31 0d 3d  04 26 20 e7 20 28 21 6d  |nt%+=1.=.& . (!m|
0000bec0  65 6e 75 5f 70 74 72 25  20 80 20 26 32 29 20 6c  |enu_ptr% . &2) l|
0000bed0  69 6e 65 63 6f 75 6e 74  25 2b 3d 31 0d 3d 0e 12  |inecount%+=1.=..|
0000bee0  20 6d 65 6e 75 5f 70 74  72 25 2b 3d 32 34 0d 3d  | menu_ptr%+=24.=|
0000bef0  18 05 ce 0d 3d 22 25 e7  20 28 21 6d 65 6e 75 5f  |....="%. (!menu_|
0000bf00  70 74 72 25 20 80 20 26  32 29 20 6c 69 6e 65 63  |ptr% . &2) linec|
0000bf10  6f 75 6e 74 25 2b 3d 31  0d 3d 2c 25 3d 69 74 65  |ount%+=1.=,%=ite|
0000bf20  6d 63 6f 75 6e 74 25 2a  68 65 69 67 68 74 25 2b  |mcount%*height%+|
0000bf30  6c 69 6e 65 63 6f 75 6e  74 25 2a 32 34 0d 3d 36  |linecount%*24.=6|
0000bf40  05 3a 0d 3d 40 19 dd a4  6d 65 6e 75 5f 69 63 6f  |.:.=@...menu_ico|
0000bf50  6e 66 6c 61 67 28 76 61  72 24 29 0d 3d 4a 32 e7  |nflag(var$).=J2.|
0000bf60  76 61 72 24 3d 22 22 20  85 20 32 30 30 2c 22 4d  |var$="" . 200,"M|
0000bf70  65 6e 75 20 69 63 6f 6e  20 66 6c 61 67 20 76 61  |enu icon flag va|
0000bf80  6c 75 65 20 6d 69 73 73  69 6e 67 21 22 0d 3d 54  |lue missing!".=T|
0000bf90  0c 3d a0 28 76 61 72 24  29 0d 3d 5e 05 3a 0d 3d  |.=.(var$).=^.:.=|
0000bfa0  68 1e dd a4 6d 65 6e 75  5f 69 74 65 6d 5f 70 61  |h...menu_item_pa|
0000bfb0  72 61 6d 28 f8 20 69 74  65 6d 24 29 0d 3d 72 0c  |ram(. item$).=r.|
0000bfc0  ea 20 70 61 72 61 6d 24  0d 3d 7c 13 e7 20 a7 69  |. param$.=|.. .i|
0000bfd0  74 65 6d 24 2c 22 2c 22  29 20 8c 0d 3d 86 3d 20  |tem$,",") ..=.= |
0000bfe0  69 74 65 6d 24 3d c1 69  74 65 6d 24 2c a7 69 74  |item$=.item$,.it|
0000bff0  65 6d 24 2c 22 2c 22 29  2b 31 29 3a 70 61 72 61  |em$,",")+1):para|
0000c000  6d 24 3d c0 69 74 65 6d  24 2c a7 69 74 65 6d 24  |m$=.item$,.item$|
0000c010  2c 22 2c 22 29 2d 31 29  0d 3d 90 05 cc 0d 3d 9a  |,",")-1).=....=.|
0000c020  0e 20 70 61 72 61 6d 24  3d 22 22 0d 3d a4 05 cd  |. param$="".=...|
0000c030  0d 3d ae 0b 3d 70 61 72  61 6d 24 0d 3d b8 05 3a  |.=..=param$.=..:|
0000c040  0d 3d c2 1b dd a4 6d 65  6e 75 5f 69 74 65 6d 5f  |.=....menu_item_|
0000c050  74 65 78 74 28 69 74 65  6d 24 29 0d 3d cc 2d e7  |text(item$).=.-.|
0000c060  20 a7 69 74 65 6d 24 2c  22 2c 22 29 20 69 74 65  | .item$,",") ite|
0000c070  6d 24 3d c0 69 74 65 6d  24 2c a7 69 74 65 6d 24  |m$=.item$,.item$|
0000c080  2c 22 2c 22 29 2d 31 29  0d 3d d6 0a 3d 69 74 65  |,",")-1).=..=ite|
0000c090  6d 24 0d 3d e0 05 3a 0d  3d ea 15 dd a4 6d 65 6e  |m$.=..:.=....men|
0000c0a0  75 5f 70 61 74 68 28 70  74 72 25 29 0d 3d f4 0b  |u_path(ptr%).=..|
0000c0b0  ea 20 70 61 74 68 24 0d  3d fe 12 70 61 74 68 24  |. path$.=..path$|
0000c0c0  3d c3 28 21 70 74 72 25  29 0d 3e 08 0b 70 74 72  |=.(!ptr%).>..ptr|
0000c0d0  25 2b 3d 34 0d 3e 12 2e  c8 95 20 21 70 74 72 25  |%+=4.>.... !ptr%|
0000c0e0  3c 3e 2d 31 20 70 61 74  68 24 2b 3d 22 2e 22 2b  |<>-1 path$+="."+|
0000c0f0  c3 28 21 70 74 72 25 29  3a 70 74 72 25 2b 3d 34  |.(!ptr%):ptr%+=4|
0000c100  3a ce 0d 3e 1c 0a 3d 70  61 74 68 24 0d 3e 26 05  |:..>..=path$.>&.|
0000c110  3a 0d 3e 30 18 dd a4 6d  65 6e 75 5f 73 75 62 6d  |:.>0...menu_subm|
0000c120  65 6e 75 28 76 61 72 24  29 0d 3e 3a 28 e7 20 bb  |enu(var$).>:(. .|
0000c130  28 76 61 72 24 29 3c 31  20 84 20 bb 28 76 61 72  |(var$)<1 . .(var|
0000c140  24 29 3e de 28 6d 65 6e  75 25 28 29 2c 31 29 20  |$)>.(menu%(),1) |
0000c150  8c 0d 3e 44 42 20 85 20  32 30 30 2c 22 43 61 6e  |..>DB . 200,"Can|
0000c160  27 74 20 66 69 6e 64 20  6d 65 6e 75 20 22 2b 76  |'t find menu "+v|
0000c170  61 72 24 2b 22 2c 20 61  73 20 72 65 66 65 72 72  |ar$+", as referr|
0000c180  65 64 20 74 6f 20 69 6e  3a 2d 20 22 2b 70 61 72  |ed to in:- "+par|
0000c190  61 6d 24 0d 3e 4e 05 cd  0d 3e 58 1a e7 20 bb 28  |am$.>N...>X.. .(|
0000c1a0  76 61 72 24 29 3d 6d 65  6e 75 63 6f 75 6e 74 25  |var$)=menucount%|
0000c1b0  20 8c 0d 3e 62 4d 20 85  20 32 30 30 2c 22 41 6e  | ..>bM . 200,"An|
0000c1c0  20 69 74 65 6d 20 69 6e  20 6d 65 6e 75 20 22 2b  | item in menu "+|
0000c1d0  76 61 72 24 2b 22 20 63  61 6e 6e 6f 74 20 68 61  |var$+" cannot ha|
0000c1e0  76 65 20 6d 65 6e 75 20  22 2b 76 61 72 24 2b 22  |ve menu "+var$+"|
0000c1f0  20 61 73 20 61 20 73 75  62 6d 65 6e 75 21 22 0d  | as a submenu!".|
0000c200  3e 6c 05 cd 0d 3e 76 13  3d 6d 65 6e 75 25 28 bb  |>l...>v.=menu%(.|
0000c210  28 76 61 72 24 29 29 0d  3e 80 05 3a 0d 3e 8a 13  |(var$)).>..:.>..|
0000c220  dd a4 6d 65 6e 75 76 61  72 28 76 61 72 24 29 0d  |..menuvar(var$).|
0000c230  3e 94 35 76 61 72 24 3d  c1 76 61 72 24 2c a7 76  |>.5var$=.var$,.v|
0000c240  61 72 24 2c 22 28 22 29  2b 31 29 3a 76 61 72 24  |ar$,"(")+1):var$|
0000c250  3d c0 76 61 72 24 2c a7  76 61 72 24 2c 22 29 22  |=.var$,.var$,")"|
0000c260  29 2d 31 29 0d 3e 9e 09  3d 76 61 72 24 0d 3e a8  |)-1).>..=var$.>.|
0000c270  05 3a 0d 3e b2 17 dd a4  6d 65 6e 75 5f 77 69 6e  |.:.>....menu_win|
0000c280  64 6f 77 28 76 61 72 24  29 0d 3e bc 0d ea 20 68  |dow(var$).>... h|
0000c290  61 6e 64 6c 65 25 0d 3e  c6 07 ea 20 85 0d 3e d0  |andle%.>... ..>.|
0000c2a0  43 ee 85 20 85 20 a2 20  30 2c 22 4d 65 6e 75 20  |C.. . . 0,"Menu |
0000c2b0  66 69 6c 65 20 65 72 72  6f 72 2e 20 57 69 6e 64  |file error. Wind|
0000c2c0  6f 77 20 76 61 72 69 61  62 6c 65 20 22 2b 76 61  |ow variable "+va|
0000c2d0  72 24 2b 22 20 6e 6f 74  20 66 6f 75 6e 64 2e 22  |r$+" not found."|
0000c2e0  0d 3e da 13 68 61 6e 64  6c 65 25 3d a0 28 76 61  |.>..handle%=.(va|
0000c2f0  72 24 29 0d 3e e4 11 e7  20 68 61 6e 64 6c 65 25  |r$).>... handle%|
0000c300  3c 31 20 8c 0d 3e ee 19  20 c8 99 31 33 31 30 38  |<1 ..>.. ..13108|
0000c310  35 2c 30 2c 6d 65 6e 75  66 69 6c 65 25 0d 3e f8  |5,0,menufile%.>.|
0000c320  06 20 85 0d 3f 02 05 cd  0d 3f 0c 0c 3d 68 61 6e  |. ..?....?..=han|
0000c330  64 6c 65 25 0d 3f 16 05  3a 0d 3f 20 05 3a 0d 3f  |dle%.?..:.? .:.?|
0000c340  2a 19 dd f2 6d 65 6e 75  5f 77 72 69 74 61 62 6c  |*...menu_writabl|
0000c350  65 28 76 61 72 24 29 0d  3f 34 10 6d 61 78 6c 65  |e(var$).?4.maxle|
0000c360  6e 67 74 68 25 3d 30 0d  3f 3e 12 e7 20 a7 76 61  |ngth%=0.?>.. .va|
0000c370  72 24 2c 22 3a 22 29 20  8c 0d 3f 48 26 20 6d 61  |r$,":") ..?H& ma|
0000c380  78 6c 65 6e 67 74 68 25  3d bb 28 c1 76 61 72 24  |xlength%=.(.var$|
0000c390  2c a7 76 61 72 24 2c 22  3a 22 29 2b 31 29 29 0d  |,.var$,":")+1)).|
0000c3a0  3f 52 33 20 e7 a9 28 69  74 65 6d 74 65 78 74 24  |?R3 ..(itemtext$|
0000c3b0  29 3e 6d 61 78 6c 65 6e  67 74 68 25 20 6d 61 78  |)>maxlength% max|
0000c3c0  6c 65 6e 67 74 68 25 3d  a9 69 74 65 6d 74 65 78  |length%=.itemtex|
0000c3d0  74 24 0d 3f 5c 05 cc 0d  3f 66 1a 20 6d 61 78 6c  |t$.?\...?f. maxl|
0000c3e0  65 6e 67 74 68 25 3d a9  69 74 65 6d 74 65 78 74  |ength%=.itemtext|
0000c3f0  24 0d 3f 70 05 cd 0d 3f  7a 2b 6d 65 6e 75 66 6c  |$.?p...?z+menufl|
0000c400  61 67 25 3d 6d 65 6e 75  66 6c 61 67 25 84 34 3a  |ag%=menuflag%.4:|
0000c410  77 72 69 74 61 62 6c 65  25 3d bb 28 76 61 72 24  |writable%=.(var$|
0000c420  29 0d 3f 84 05 e1 0d 3f  8e 05 3a 0d 3f 98 1f dd  |).?....?..:.?...|
0000c430  f2 70 75 74 5f 77 72 69  74 65 6d 28 77 72 69 74  |.put_writem(writ|
0000c440  65 6d 25 2c 74 65 78 74  24 29 0d 3f a2 31 e7 20  |em%,text$).?.1. |
0000c450  77 72 69 74 65 6d 25 3c  31 20 84 20 77 72 69 74  |writem%<1 . writ|
0000c460  65 6d 25 3e de 28 77 72  69 74 61 62 6c 65 5f 69  |em%>.(writable_i|
0000c470  74 65 6d 25 28 29 2c 31  29 20 8c 0d 3f ac 3e 20  |tem%(),1) ..?.> |
0000c480  85 20 32 30 31 2c 22 77  72 69 74 61 62 6c 65 20  |. 201,"writable |
0000c490  6d 65 6e 75 20 69 74 65  6d 20 22 2b c3 28 77 72  |menu item "+.(wr|
0000c4a0  69 74 65 6d 25 29 2b 22  20 64 6f 65 73 20 6e 6f  |item%)+" does no|
0000c4b0  74 20 65 78 69 73 74 21  22 0d 3f b6 05 cd 0d 3f  |t exist!".?....?|
0000c4c0  c0 25 e7 20 a9 74 65 78  74 24 3e 77 72 69 74 61  |.%. .text$>writa|
0000c4d0  62 6c 65 5f 6c 65 6e 25  28 77 72 69 74 65 6d 25  |ble_len%(writem%|
0000c4e0  29 20 8c 0d 3f ca 2c 20  e7 20 a9 74 65 78 74 24  |) ..?., . .text$|
0000c4f0  3e 31 30 30 20 74 65 78  74 24 3d c0 74 65 78 74  |>100 text$=.text|
0000c500  24 2c 31 30 30 29 2b 22  2e 2e 2e 2e 2e 2e 22 0d  |$,100)+"......".|
0000c510  3f d4 46 20 85 20 32 30  31 2c 22 54 65 78 74 20  |?.F . 201,"Text |
0000c520  27 22 2b 74 65 78 74 24  2b 22 27 20 74 6f 6f 20  |'"+text$+"' too |
0000c530  6c 6f 6e 67 20 66 6f 72  20 77 72 69 74 61 62 6c  |long for writabl|
0000c540  65 20 69 74 65 6d 20 22  2b c3 77 72 69 74 65 6d  |e item "+.writem|
0000c550  25 2b 22 21 22 0d 3f de  05 cd 0d 3f e8 22 24 77  |%+"!".?....?."$w|
0000c560  72 69 74 61 62 6c 65 5f  69 74 65 6d 25 28 77 72  |ritable_item%(wr|
0000c570  69 74 65 6d 25 29 3d 74  65 78 74 24 0d 3f f2 05  |item%)=text$.?..|
0000c580  e1 0d 3f fc 05 3a 0d 40  06 23 dd f2 63 6c 65 61  |..?..:.@.#..clea|
0000c590  72 5f 77 72 69 74 65 5f  66 6c 61 67 28 6d 65 6e  |r_write_flag(men|
0000c5a0  75 25 2c 69 74 65 6d 25  29 0d 40 10 12 ea 20 66  |u%,item%).@... f|
0000c5b0  6c 61 67 61 64 64 72 65  73 73 25 0d 40 1a 24 20  |lagaddress%.@.$ |
0000c5c0  e7 6d 65 6e 75 25 3c 31  20 84 20 6d 65 6e 75 25  |.menu%<1 . menu%|
0000c5d0  3e de 28 6d 65 6e 75 25  28 29 2c 31 29 20 8c 0d  |>.(menu%(),1) ..|
0000c5e0  40 24 3e 20 85 20 32 30  31 2c 22 43 6c 65 61 72  |@$> . 201,"Clear|
0000c5f0  20 77 72 69 74 65 20 66  6c 61 67 20 65 72 72 6f  | write flag erro|
0000c600  72 2e 20 4f 75 74 20 6f  66 20 72 61 6e 67 65 20  |r. Out of range |
0000c610  6d 65 6e 75 20 6e 75 6d  62 65 72 21 22 0d 40 2e  |menu number!".@.|
0000c620  06 20 cd 0d 40 38 31 e7  20 69 74 65 6d 25 3c 30  |. ..@81. item%<0|
0000c630  20 84 20 69 74 65 6d 25  3e a4 69 74 65 6d 5f 63  | . item%>.item_c|
0000c640  6f 75 6e 74 28 6d 65 6e  75 25 28 6d 65 6e 75 25  |ount(menu%(menu%|
0000c650  29 29 20 8c 0d 40 42 3e  20 85 20 32 30 31 2c 22  |)) ..@B> . 201,"|
0000c660  43 6c 65 61 72 20 77 72  69 74 65 20 66 6c 61 67  |Clear write flag|
0000c670  20 65 72 72 6f 72 2e 20  4f 75 74 20 6f 66 20 72  | error. Out of r|
0000c680  61 6e 67 65 20 69 74 65  6d 20 6e 75 6d 62 65 72  |ange item number|
0000c690  21 22 0d 40 4c 06 20 cd  0d 40 56 55 66 6c 61 67  |!".@L. ..@VUflag|
0000c6a0  61 64 64 72 65 73 73 25  3d 6d 65 6e 75 25 28 6d  |address%=menu%(m|
0000c6b0  65 6e 75 25 29 2b 32 38  2b 28 32 34 2a 69 74 65  |enu%)+28+(24*ite|
0000c6c0  6d 25 29 3a 21 66 6c 61  67 61 64 64 72 65 73 73  |m%):!flagaddress|
0000c6d0  25 3d 28 21 66 6c 61 67  61 64 64 72 65 73 73 25  |%=(!flagaddress%|
0000c6e0  20 80 20 26 46 46 46 46  46 46 46 42 29 0d 40 60  | . &FFFFFFFB).@`|
0000c6f0  05 e1 0d 40 6a 05 3a 0d  40 74 21 dd f2 61 64 64  |...@j.:.@t!..add|
0000c700  5f 77 72 69 74 65 5f 66  6c 61 67 28 6d 65 6e 75  |_write_flag(menu|
0000c710  25 2c 69 74 65 6d 25 29  0d 40 7e 12 ea 20 66 6c  |%,item%).@~.. fl|
0000c720  61 67 61 64 64 72 65 73  73 25 0d 40 88 23 e7 6d  |agaddress%.@.#.m|
0000c730  65 6e 75 25 3c 31 20 84  20 6d 65 6e 75 25 3e de  |enu%<1 . menu%>.|
0000c740  28 6d 65 6e 75 25 28 29  2c 31 29 20 8c 0d 40 92  |(menu%(),1) ..@.|
0000c750  3c 20 85 20 32 30 31 2c  22 41 64 64 20 77 72 69  |< . 201,"Add wri|
0000c760  74 65 20 66 6c 61 67 20  65 72 72 6f 72 2e 20 4f  |te flag error. O|
0000c770  75 74 20 6f 66 20 72 61  6e 67 65 20 6d 65 6e 75  |ut of range menu|
0000c780  20 6e 75 6d 62 65 72 21  22 0d 40 9c 06 20 cd 0d  | number!".@.. ..|
0000c790  40 a6 31 e7 20 69 74 65  6d 25 3c 30 20 84 20 69  |@.1. item%<0 . i|
0000c7a0  74 65 6d 25 3e a4 69 74  65 6d 5f 63 6f 75 6e 74  |tem%>.item_count|
0000c7b0  28 6d 65 6e 75 25 28 6d  65 6e 75 25 29 29 20 8c  |(menu%(menu%)) .|
0000c7c0  0d 40 b0 3c 20 85 20 32  30 31 2c 22 41 64 64 20  |.@.< . 201,"Add |
0000c7d0  77 72 69 74 65 20 66 6c  61 67 20 65 72 72 6f 72  |write flag error|
0000c7e0  2e 20 4f 75 74 20 6f 66  20 72 61 6e 67 65 20 69  |. Out of range i|
0000c7f0  74 65 6d 20 6e 75 6d 62  65 72 21 22 0d 40 ba 06  |tem number!".@..|
0000c800  20 cd 0d 40 c4 4d 66 6c  61 67 61 64 64 72 65 73  | ..@.Mflagaddres|
0000c810  73 25 3d 6d 65 6e 75 25  28 6d 65 6e 75 25 29 2b  |s%=menu%(menu%)+|
0000c820  32 38 2b 28 32 34 2a 69  74 65 6d 25 29 3a 21 66  |28+(24*item%):!f|
0000c830  6c 61 67 61 64 64 72 65  73 73 25 3d 28 21 66 6c  |lagaddress%=(!fl|
0000c840  61 67 61 64 64 72 65 73  73 25 20 84 20 34 29 0d  |agaddress% . 4).|
0000c850  40 ce 05 e1 0d 40 d8 05  3a 0d 40 e2 15 dd f2 73  |@....@..:.@....s|
0000c860  65 74 5f 6d 65 6e 75 5f  61 72 72 61 79 73 0d 40  |et_menu_arrays.@|
0000c870  ec 1d ea 20 69 74 65 6d  63 6f 75 6e 74 25 2c 6c  |... itemcount%,l|
0000c880  69 6e 65 24 2c 77 69 64  74 68 25 0d 40 f6 34 6d  |ine$,width%.@.4m|
0000c890  65 6e 75 63 6f 75 6e 74  25 3d 30 3a 70 6f 69 6e  |enucount%=0:poin|
0000c8a0  74 65 72 25 3d 6d 65 6e  75 73 74 61 72 74 25 3a  |ter%=menustart%:|
0000c8b0  f2 67 6f 74 6f 5f 62 65  67 69 6e 6d 65 6e 75 0d  |.goto_beginmenu.|
0000c8c0  41 00 05 f5 0d 41 0a 16  20 6c 69 6e 65 24 3d be  |A....A.. line$=.|
0000c8d0  23 6d 65 6e 75 66 69 6c  65 25 0d 41 14 1a 20 e7  |#menufile%.A.. .|
0000c8e0  20 a4 62 65 67 69 6e 6d  65 6e 75 28 6c 69 6e 65  | .beginmenu(line|
0000c8f0  24 29 20 8c 0d 41 1e 44  20 20 6d 65 6e 75 25 28  |$) ..A.D  menu%(|
0000c900  6d 65 6e 75 63 6f 75 6e  74 25 2b 31 29 3d 6d 65  |menucount%+1)=me|
0000c910  6e 75 73 74 61 72 74 25  2b 28 6d 65 6e 75 63 6f  |nustart%+(menuco|
0000c920  75 6e 74 25 2a 32 38 29  2b 28 69 74 65 6d 63 6f  |unt%*28)+(itemco|
0000c930  75 6e 74 25 2a 32 34 29  0d 41 28 28 20 20 6c 69  |unt%*24).A((  li|
0000c940  6e 65 24 3d be 23 6d 65  6e 75 66 69 6c 65 25 3a  |ne$=.#menufile%:|
0000c950  f4 20 47 65 74 20 74 69  74 6c 65 20 6c 69 6e 65  |. Get title line|
0000c960  0d 41 32 48 20 20 6d 65  6e 75 63 6f 75 6e 74 25  |.A2H  menucount%|
0000c970  2b 3d 31 3a 6c 69 6e 65  24 3d c0 6c 69 6e 65 24  |+=1:line$=.line$|
0000c980  2c 31 32 29 3a 6d 65 6e  75 77 69 64 74 68 25 28  |,12):menuwidth%(|
0000c990  6d 65 6e 75 63 6f 75 6e  74 25 29 3d 31 32 2b 31  |menucount%)=12+1|
0000c9a0  36 2a a9 6c 69 6e 65 24  0d 41 3c 06 20 cc 0d 41  |6*.line$.A<. ..A|
0000c9b0  46 13 20 20 69 74 65 6d  63 6f 75 6e 74 25 2b 3d  |F.  itemcount%+=|
0000c9c0  31 0d 41 50 15 20 20 e7  20 a7 6c 69 6e 65 24 2c  |1.AP.  . .line$,|
0000c9d0  22 2c 22 29 20 8c 0d 41  5a 2c 20 20 20 77 69 64  |",") ..AZ,   wid|
0000c9e0  74 68 25 3d 31 32 2b 31  36 2a a9 28 c0 6c 69 6e  |th%=12+16*.(.lin|
0000c9f0  65 24 2c a7 6c 69 6e 65  24 2c 22 2c 22 29 2d 31  |e$,.line$,",")-1|
0000ca00  29 29 0d 41 64 07 20 20  cc 0d 41 6e 1a 20 20 20  |)).Ad.  ..An.   |
0000ca10  77 69 64 74 68 25 3d 31  32 2b 31 36 2a a9 6c 69  |width%=12+16*.li|
0000ca20  6e 65 24 0d 41 78 07 20  20 cd 0d 41 82 43 20 20  |ne$.Ax.  ..A.C  |
0000ca30  e7 20 77 69 64 74 68 25  3e 6d 65 6e 75 77 69 64  |. width%>menuwid|
0000ca40  74 68 25 28 6d 65 6e 75  63 6f 75 6e 74 25 29 20  |th%(menucount%) |
0000ca50  6d 65 6e 75 77 69 64 74  68 25 28 6d 65 6e 75 63  |menuwidth%(menuc|
0000ca60  6f 75 6e 74 25 29 3d 77  69 64 74 68 25 0d 41 8c  |ount%)=width%.A.|
0000ca70  06 20 cd 0d 41 96 11 fd  20 c5 23 6d 65 6e 75 66  |. ..A... .#menuf|
0000ca80  69 6c 65 25 0d 41 a0 05  e1 0d 41 aa 05 3a 0d 41  |ile%.A....A..:.A|
0000ca90  b4 1f dd f2 73 68 61 64  65 28 6d 65 6e 75 25 2c  |....shade(menu%,|
0000caa0  69 74 65 6d 25 2c 73 68  61 64 65 25 29 0d 41 be  |item%,shade%).A.|
0000cab0  12 ea 20 66 6c 61 67 61  64 64 72 65 73 73 25 0d  |.. flagaddress%.|
0000cac0  41 c8 23 e7 6d 65 6e 75  25 3c 31 20 84 20 6d 65  |A.#.menu%<1 . me|
0000cad0  6e 75 25 3e de 28 6d 65  6e 75 25 28 29 2c 31 29  |nu%>.(menu%(),1)|
0000cae0  20 8c 0d 41 d2 38 20 85  20 32 30 31 2c 22 49 74  | ..A.8 . 201,"It|
0000caf0  65 6d 20 73 68 61 64 65  20 65 72 72 6f 72 2e 20  |em shade error. |
0000cb00  4f 75 74 20 6f 66 20 72  61 6e 67 65 20 6d 65 6e  |Out of range men|
0000cb10  75 20 6e 75 6d 62 65 72  21 22 0d 41 dc 05 cd 0d  |u number!".A....|
0000cb20  41 e6 31 e7 20 69 74 65  6d 25 3c 30 20 84 20 69  |A.1. item%<0 . i|
0000cb30  74 65 6d 25 3e a4 69 74  65 6d 5f 63 6f 75 6e 74  |tem%>.item_count|
0000cb40  28 6d 65 6e 75 25 28 6d  65 6e 75 25 29 29 20 8c  |(menu%(menu%)) .|
0000cb50  0d 41 f0 3d 20 85 20 32  30 31 2c 22 49 74 65 6d  |.A.= . 201,"Item|
0000cb60  20 73 68 61 64 65 20 65  72 72 6f 72 2e 20 4f 75  | shade error. Ou|
0000cb70  74 20 6f 66 20 72 61 6e  67 65 20 6d 65 6e 75 20  |t of range menu |
0000cb80  69 74 65 6d 20 6e 75 6d  62 65 72 21 22 0d 41 fa  |item number!".A.|
0000cb90  05 cd 0d 42 04 2d 66 6c  61 67 61 64 64 72 65 73  |...B.-flagaddres|
0000cba0  73 25 3d 6d 65 6e 75 25  28 6d 65 6e 75 25 29 2b  |s%=menu%(menu%)+|
0000cbb0  32 38 2b 28 32 34 2a 69  74 65 6d 25 29 2b 38 0d  |28+(24*item%)+8.|
0000cbc0  42 0e 28 e7 20 73 68 61  64 65 25 3d b9 20 73 68  |B.(. shade%=. sh|
0000cbd0  61 64 65 25 3d 26 34 30  30 30 30 30 20 8b 20 73  |ade%=&400000 . s|
0000cbe0  68 61 64 65 25 3d 30 0d  42 18 36 21 66 6c 61 67  |hade%=0.B.6!flag|
0000cbf0  61 64 64 72 65 73 73 25  3d 28 21 66 6c 61 67 61  |address%=(!flaga|
0000cc00  64 64 72 65 73 73 25 20  80 20 26 46 46 42 46 46  |ddress% . &FFBFF|
0000cc10  46 46 46 29 20 84 20 73  68 61 64 65 25 0d 42 22  |FFF) . shade%.B"|
0000cc20  05 e1 0d 42 2c 05 3a 0d  42 36 21 dd f2 73 69 7a  |...B,.:.B6!..siz|
0000cc30  65 5f 6d 65 6e 75 5f 61  72 72 61 79 73 28 6d 65  |e_menu_arrays(me|
0000cc40  6e 75 66 69 6c 65 24 29  0d 42 40 3a ea 20 6d 65  |nufile$).B@:. me|
0000cc50  6e 75 63 6f 75 6e 74 25  2c 69 74 65 6d 63 6f 75  |nucount%,itemcou|
0000cc60  6e 74 25 2c 77 72 69 74  65 63 6f 75 6e 74 25 2c  |nt%,writecount%,|
0000cc70  77 69 6e 64 6f 77 63 6f  75 6e 74 25 2c 6c 69 6e  |windowcount%,lin|
0000cc80  65 24 0d 42 4a 18 6d 65  6e 75 66 69 6c 65 25 3d  |e$.BJ.menufile%=|
0000cc90  8e 6d 65 6e 75 66 69 6c  65 24 0d 42 54 05 f5 0d  |.menufile$.BT...|
0000cca0  42 5e 16 20 6c 69 6e 65  24 3d be 23 6d 65 6e 75  |B^. line$=.#menu|
0000ccb0  66 69 6c 65 25 0d 42 68  1a 20 e7 20 a4 62 65 67  |file%.Bh. . .beg|
0000ccc0  69 6e 6d 65 6e 75 28 6c  69 6e 65 24 29 20 8c 0d  |inmenu(line$) ..|
0000ccd0  42 72 3c 20 20 6d 65 6e  75 63 6f 75 6e 74 25 2b  |Br<  menucount%+|
0000cce0  3d 31 3a 6c 69 6e 65 24  3d be 23 6d 65 6e 75 66  |=1:line$=.#menuf|
0000ccf0  69 6c 65 25 3a f4 20 4e  65 78 74 20 6c 69 6e 65  |ile%:. Next line|
0000cd00  20 69 73 20 61 6e 20 69  74 65 6d 0d 42 7c 06 20  | is an item.B|. |
0000cd10  cc 0d 42 86 26 20 20 e7  20 a7 6c 69 6e 65 24 2c  |..B.&  . .line$,|
0000cd20  22 2c 77 72 69 74 22 29  20 77 72 69 74 65 63 6f  |",writ") writeco|
0000cd30  75 6e 74 25 2b 3d 31 0d  42 90 27 20 20 e7 20 a7  |unt%+=1.B.'  . .|
0000cd40  6c 69 6e 65 24 2c 22 2c  77 69 6e 64 22 29 20 77  |line$,",wind") w|
0000cd50  69 6e 64 6f 77 63 6f 75  6e 74 25 2b 3d 31 0d 42  |indowcount%+=1.B|
0000cd60  9a 13 20 20 69 74 65 6d  63 6f 75 6e 74 25 2b 3d  |..  itemcount%+=|
0000cd70  31 0d 42 a4 06 20 cd 0d  42 ae 11 fd 20 c5 23 6d  |1.B.. ..B... .#m|
0000cd80  65 6e 75 66 69 6c 65 25  0d 42 b8 24 c8 99 31 33  |enufile%.B.$..13|
0000cd90  31 30 38 35 2c 30 2c 6d  65 6e 75 66 69 6c 65 25  |1085,0,menufile%|
0000cda0  3a 6d 65 6e 75 66 69 6c  65 25 3d 30 0d 42 c2 44  |:menufile%=0.B.D|
0000cdb0  f2 64 69 6d 5f 6d 65 6e  75 5f 61 72 72 61 79 73  |.dim_menu_arrays|
0000cdc0  28 6d 65 6e 75 63 6f 75  6e 74 25 2c 69 74 65 6d  |(menucount%,item|
0000cdd0  63 6f 75 6e 74 25 2c 77  72 69 74 65 63 6f 75 6e  |count%,writecoun|
0000cde0  74 25 2c 77 69 6e 64 6f  77 63 6f 75 6e 74 25 29  |t%,windowcount%)|
0000cdf0  0d 42 cc 05 e1 0d 42 d6  05 3a 0d 42 e0 1d dd f2  |.B....B..:.B....|
0000ce00  74 69 63 6b 28 6d 65 6e  75 25 2c 69 74 65 6d 25  |tick(menu%,item%|
0000ce10  2c 74 69 63 6b 25 29 0d  42 ea 12 ea 20 66 6c 61  |,tick%).B... fla|
0000ce20  67 61 64 64 72 65 73 73  25 0d 42 f4 23 e7 6d 65  |gaddress%.B.#.me|
0000ce30  6e 75 25 3c 31 20 84 20  6d 65 6e 75 25 3e de 28  |nu%<1 . menu%>.(|
0000ce40  6d 65 6e 75 25 28 29 2c  31 29 20 8c 0d 42 fe 37  |menu%(),1) ..B.7|
0000ce50  20 85 20 32 30 31 2c 22  49 74 65 6d 20 74 69 63  | . 201,"Item tic|
0000ce60  6b 20 65 72 72 6f 72 2e  20 4f 75 74 20 6f 66 20  |k error. Out of |
0000ce70  72 61 6e 67 65 20 6d 65  6e 75 20 6e 75 6d 62 65  |range menu numbe|
0000ce80  72 21 22 0d 43 08 05 cd  0d 43 12 31 e7 20 69 74  |r!".C....C.1. it|
0000ce90  65 6d 25 3c 30 20 84 20  69 74 65 6d 25 3e a4 69  |em%<0 . item%>.i|
0000cea0  74 65 6d 5f 63 6f 75 6e  74 28 6d 65 6e 75 25 28  |tem_count(menu%(|
0000ceb0  6d 65 6e 75 25 29 29 20  8c 0d 43 1c 37 20 85 20  |menu%)) ..C.7 . |
0000cec0  32 30 31 2c 22 49 74 65  6d 20 74 69 63 6b 20 65  |201,"Item tick e|
0000ced0  72 72 6f 72 2e 20 4f 75  74 20 6f 66 20 72 61 6e  |rror. Out of ran|
0000cee0  67 65 20 69 74 65 6d 20  6e 75 6d 62 65 72 21 22  |ge item number!"|
0000cef0  0d 43 26 05 cd 0d 43 30  2b 66 6c 61 67 61 64 64  |.C&...C0+flagadd|
0000cf00  72 65 73 73 25 3d 6d 65  6e 75 25 28 6d 65 6e 75  |ress%=menu%(menu|
0000cf10  25 29 2b 32 38 2b 28 32  34 2a 69 74 65 6d 25 29  |%)+28+(24*item%)|
0000cf20  0d 43 3a 1f e7 20 74 69  63 6b 25 3d b9 20 74 69  |.C:.. tick%=. ti|
0000cf30  63 6b 25 3d 31 20 8b 20  74 69 63 6b 25 3d 30 0d  |ck%=1 . tick%=0.|
0000cf40  43 44 35 21 66 6c 61 67  61 64 64 72 65 73 73 25  |CD5!flagaddress%|
0000cf50  3d 28 21 66 6c 61 67 61  64 64 72 65 73 73 25 20  |=(!flagaddress% |
0000cf60  80 20 26 46 46 46 46 46  46 46 45 29 20 84 20 74  |. &FFFFFFFE) . t|
0000cf70  69 63 6b 25 0d 43 4e 05  e1 0d 43 58 05 3a 0d 43  |ick%.CN...CX.:.C|
0000cf80  62 22 dd a4 67 65 74 5f  73 74 72 69 6e 67 28 70  |b"..get_string(p|
0000cf90  6f 69 6e 74 65 72 25 2c  6c 65 6e 67 74 68 25 29  |ointer%,length%)|
0000cfa0  0d 43 6c 0b ea 20 74 65  6d 70 24 0d 43 76 1b e7  |.Cl.. temp$.Cv..|
0000cfb0  20 6c 65 6e 67 74 68 25  3d 30 20 6c 65 6e 67 74  | length%=0 lengt|
0000cfc0  68 25 3d 32 35 35 0d 43  80 2c e3 20 70 6f 69 6e  |h%=255.C.,. poin|
0000cfd0  74 65 72 25 3d 70 6f 69  6e 74 65 72 25 20 b8 20  |ter%=pointer% . |
0000cfe0  70 6f 69 6e 74 65 72 25  2b 6c 65 6e 67 74 68 25  |pointer%+length%|
0000cff0  2d 31 0d 43 8a 15 20 e7  20 3f 70 6f 69 6e 74 65  |-1.C.. . ?pointe|
0000d000  72 25 3c 33 32 20 8c 0d  43 94 0c 20 20 3d 74 65  |r%<32 ..C..  =te|
0000d010  6d 70 24 0d 43 9e 06 20  cc 0d 43 a8 19 20 20 74  |mp$.C.. ..C..  t|
0000d020  65 6d 70 24 2b 3d bd 28  3f 70 6f 69 6e 74 65 72  |emp$+=.(?pointer|
0000d030  25 29 0d 43 b2 06 20 cd  0d 43 bc 05 ed 0d 43 c6  |%).C.. ..C....C.|
0000d040  0a 3d 74 65 6d 70 24 0d  43 d0 05 3a 0d 43 da 11  |.=temp$.C..:.C..|
0000d050  dd a4 6c 65 61 66 28 70  61 74 68 24 29 0d 43 e4  |..leaf(path$).C.|
0000d060  30 c8 95 20 a7 70 61 74  68 24 2c 22 2e 22 29 3a  |0.. .path$,"."):|
0000d070  70 61 74 68 24 3d c1 70  61 74 68 24 2c a7 70 61  |path$=.path$,.pa|
0000d080  74 68 24 2c 22 2e 22 29  2b 31 29 3a ce 0d 43 ee  |th$,".")+1):..C.|
0000d090  0a 3d 70 61 74 68 24 0d  43 f8 05 3a 0d 44 02 23  |.=path$.C..:.D.#|
0000d0a0  dd f2 72 65 70 6f 72 74  5f 65 72 72 6f 72 28 6d  |..report_error(m|
0000d0b0  65 73 73 61 67 65 24 2c  74 69 74 6c 65 24 29 0d  |essage$,title$).|
0000d0c0  44 0c 24 6d 65 73 73 61  67 65 24 3d bd 30 2b bd  |D.$message$=.0+.|
0000d0d0  30 2b bd 30 2b bd 30 2b  6d 65 73 73 61 67 65 24  |0+.0+.0+message$|
0000d0e0  2b bd 30 0d 44 16 1f c8  99 32 36 32 33 36 37 2c  |+.0.D....262367,|
0000d0f0  6d 65 73 73 61 67 65 24  2c 31 38 2c 74 69 74 6c  |message$,18,titl|
0000d100  65 24 0d 44 20 05 e1 0d  44 2a 05 3a 0d 44 34 21  |e$.D ...D*.:.D4!|
0000d110  dd f2 73 68 6f 77 5f 76  61 6c 75 65 28 6c 69 6e  |..show_value(lin|
0000d120  65 25 2c 76 61 72 69 61  62 6c 65 24 29 0d 44 3e  |e%,variable$).D>|
0000d130  11 6c 69 6e 65 25 3d 6c  69 6e 65 25 83 34 0d 44  |.line%=line%.4.D|
0000d140  48 17 e7 20 a7 76 61 72  69 61 62 6c 65 24 2c 22  |H.. .variable$,"|
0000d150  24 22 29 20 8c 0d 44 52  20 20 76 61 72 69 61 62  |$") ..DR  variab|
0000d160  6c 65 24 2b 3d 22 3d 22  2b a0 28 76 61 72 69 61  |le$+="="+.(varia|
0000d170  62 6c 65 24 29 0d 44 5c  05 cc 0d 44 66 18 20 e7  |ble$).D\...Df. .|
0000d180  20 a7 76 61 72 69 61 62  6c 65 24 2c 22 20 22 29  | .variable$," ")|
0000d190  20 8c 0d 44 70 07 20 20  cc 0d 44 7a 24 20 20 76  | ..Dp.  ..Dz$  v|
0000d1a0  61 72 69 61 62 6c 65 24  2b 3d 22 3d 22 2b c3 28  |ariable$+="="+.(|
0000d1b0  a0 28 76 61 72 69 61 62  6c 65 24 29 29 0d 44 84  |.(variable$)).D.|
0000d1c0  06 20 cd 0d 44 8e 05 cd  0d 44 98 34 f2 70 75 74  |. ..D....D.4.put|
0000d1d0  5f 69 63 6f 6e 5f 74 65  78 74 28 73 68 6f 77 5f  |_icon_text(show_|
0000d1e0  76 61 6c 75 65 25 2c 6c  69 6e 65 25 2c c0 76 61  |value%,line%,.va|
0000d1f0  72 69 61 62 6c 65 24 2c  33 35 29 29 0d 44 a2 1d  |riable$,35)).D..|
0000d200  f2 6f 70 65 6e 5f 77 69  6e 64 6f 77 28 73 68 6f  |.open_window(sho|
0000d210  77 5f 76 61 6c 75 65 25  29 0d 44 ac 05 e1 0d 44  |w_value%).D....D|
0000d220  b6 05 3a 0d 44 c0 1f dd  a4 73 79 73 74 65 6d 5f  |..:.D....system_|
0000d230  76 61 72 69 61 62 6c 65  28 73 79 73 5f 76 61 72  |variable(sys_var|
0000d240  24 29 0d 44 ca 0d ea 20  6c 65 6e 67 74 68 25 0d  |$).D... length%.|
0000d250  44 d4 33 c8 99 31 33 31  31 30 37 2c 73 79 73 5f  |D.3..131107,sys_|
0000d260  76 61 72 24 2b bd 28 30  29 2c 74 65 6d 70 5f 62  |var$+.(0),temp_b|
0000d270  6c 6b 25 2c 2d 31 20 b8  20 2c 2c 6c 65 6e 67 74  |lk%,-1 . ,,lengt|
0000d280  68 25 0d 44 de 41 e7 20  6c 65 6e 67 74 68 25 3d  |h%.D.A. length%=|
0000d290  30 20 85 20 a2 20 30 2c  22 53 79 73 74 65 6d 20  |0 . . 0,"System |
0000d2a0  76 61 72 69 61 62 6c 65  20 27 22 2b 73 79 73 5f  |variable '"+sys_|
0000d2b0  76 61 72 24 2b 22 27 20  6e 6f 74 20 66 6f 75 6e  |var$+"' not foun|
0000d2c0  64 21 22 0d 44 e8 37 c8  99 31 33 31 31 30 37 2c  |d!".D.7..131107,|
0000d2d0  73 79 73 5f 76 61 72 24  2b bd 28 30 29 2c 74 65  |sys_var$+.(0),te|
0000d2e0  6d 70 5f 62 6c 6b 25 2c  32 35 35 2c 2c 33 20 b8  |mp_blk%,255,,3 .|
0000d2f0  20 2c 2c 6c 65 6e 67 74  68 25 0d 44 f2 1b 3f 28  | ,,length%.D..?(|
0000d300  74 65 6d 70 5f 62 6c 6b  25 2b 6c 65 6e 67 74 68  |temp_blk%+length|
0000d310  25 29 3d 31 33 0d 44 fc  0f 3d 24 74 65 6d 70 5f  |%)=13.D..=$temp_|
0000d320  62 6c 6b 25 0d 45 06 05  3a 0d 45 10 32 dd a4 67  |blk%.E..:.E.2..g|
0000d330  65 74 5f 73 70 72 69 74  65 5f 6e 61 6d 65 28 77  |et_sprite_name(w|
0000d340  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 25 2c 69 63  |indow_handle%,ic|
0000d350  6f 6e 5f 68 61 6e 64 6c  65 25 29 0d 45 1a 0b ea  |on_handle%).E...|
0000d360  20 74 65 6d 70 24 0d 45  24 1e 74 65 6d 70 5f 62  | temp$.E$.temp_b|
0000d370  6c 6b 25 21 30 3d 77 69  6e 64 6f 77 5f 68 61 6e  |lk%!0=window_han|
0000d380  64 6c 65 25 0d 45 2e 1c  74 65 6d 70 5f 62 6c 6b  |dle%.E..temp_blk|
0000d390  25 21 34 3d 69 63 6f 6e  5f 68 61 6e 64 6c 65 25  |%!4=icon_handle%|
0000d3a0  0d 45 38 17 c8 99 32 36  32 33 35 30 2c 2c 74 65  |.E8...262350,,te|
0000d3b0  6d 70 5f 62 6c 6b 25 0d  45 42 1e c8 8e 20 28 74  |mp_blk%.EB... (t|
0000d3c0  65 6d 70 5f 62 6c 6b 25  21 32 34 20 80 20 26 31  |emp_blk%!24 . &1|
0000d3d0  30 33 29 20 ca 0d 45 4c  2f 20 c9 20 26 30 30 32  |03) ..EL/ . &002|
0000d3e0  2c 26 30 30 33 3a 3d a4  67 65 74 5f 73 74 72 69  |,&003:=.get_stri|
0000d3f0  6e 67 28 74 65 6d 70 5f  62 6c 6b 25 21 32 38 2c  |ng(temp_blk%!28,|
0000d400  32 35 36 29 0d 45 56 0b  20 c9 20 26 31 30 32 0d  |256).EV. . &102.|
0000d410  45 60 18 20 20 e7 20 74  65 6d 70 5f 62 6c 6b 25  |E`.  . temp_blk%|
0000d420  21 33 36 3e 30 20 8c 0d  45 6a 2e 20 20 20 3d a4  |!36>0 ..Ej.   =.|
0000d430  67 65 74 5f 73 74 72 69  6e 67 28 74 65 6d 70 5f  |get_string(temp_|
0000d440  62 6c 6b 25 21 32 38 2c  74 65 6d 70 5f 62 6c 6b  |blk%!28,temp_blk|
0000d450  25 21 33 36 29 0d 45 74  07 20 20 cc 0d 45 7e 38  |%!36).Et.  ..E~8|
0000d460  20 20 20 85 20 32 30 32  2c 22 4e 6f 20 73 70 72  |   . 202,"No spr|
0000d470  69 74 65 20 6e 61 6d 65  20 69 6e 20 69 63 6f 6e  |ite name in icon|
0000d480  20 22 2b c3 69 63 6f 6e  5f 68 61 6e 64 6c 65 25  | "+.icon_handle%|
0000d490  3a 3d 22 22 0d 45 88 07  20 20 cd 0d 45 92 37 20  |:="".E..  ..E.7 |
0000d4a0  c9 20 26 31 30 33 3a 3d  c1 a4 67 65 74 5f 73 74  |. &103:=..get_st|
0000d4b0  72 69 6e 67 28 74 65 6d  70 5f 62 6c 6b 25 21 33  |ring(temp_blk%!3|
0000d4c0  32 2c 74 65 6d 70 5f 62  6c 6b 25 21 33 36 29 2c  |2,temp_blk%!36),|
0000d4d0  32 29 0d 45 9c 06 20 7f  0d 45 a6 37 20 20 85 20  |2).E.. ..E.7  . |
0000d4e0  32 30 32 2c 22 4e 6f 20  73 70 72 69 74 65 20 6e  |202,"No sprite n|
0000d4f0  61 6d 65 20 69 6e 20 69  63 6f 6e 20 22 2b c3 69  |ame in icon "+.i|
0000d500  63 6f 6e 5f 68 61 6e 64  6c 65 25 3a 3d 22 22 0d  |con_handle%:="".|
0000d510  45 b0 06 20 cb 0d 45 ba  0a 3d 74 65 6d 70 24 0d  |E.. ..E..=temp$.|
0000d520  45 c4 05 3a 0d 45 ce 33  dd a4 69 63 6f 6e 5f 73  |E..:.E.3..icon_s|
0000d530  70 72 69 74 65 5f 74 79  70 65 28 77 69 6e 64 6f  |prite_type(windo|
0000d540  77 5f 68 61 6e 64 6c 65  25 2c 69 63 6f 6e 5f 68  |w_handle%,icon_h|
0000d550  61 6e 64 6c 65 25 29 0d  45 d8 3d 3d a0 28 22 26  |andle%).E.==.("&|
0000d560  22 2b c2 a4 67 65 74 5f  73 70 72 69 74 65 5f 6e  |"+..get_sprite_n|
0000d570  61 6d 65 28 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |ame(window_handl|
0000d580  65 25 2c 69 63 6f 6e 5f  68 61 6e 64 6c 65 25 29  |e%,icon_handle%)|
0000d590  2c 33 29 29 0d 45 e2 05  3a 0d 45 ec 19 dd a4 6c  |,3)).E..:.E....l|
0000d5a0  6f 61 64 5f 73 70 72 69  74 65 73 28 66 69 6c 65  |oad_sprites(file|
0000d5b0  24 29 0d 45 f6 14 ea 20  73 70 72 69 74 65 73 25  |$).E... sprites%|
0000d5c0  2c 73 69 7a 65 25 0d 46  00 1e 73 69 7a 65 25 3d  |,size%.F..size%=|
0000d5d0  a4 66 69 6c 65 5f 73 69  7a 65 28 66 69 6c 65 24  |.file_size(file$|
0000d5e0  29 2b 31 36 0d 46 0a 14  de 20 73 70 72 69 74 65  |)+16.F... sprite|
0000d5f0  73 25 20 73 69 7a 65 25  0d 46 14 14 73 70 72 69  |s% size%.F..spri|
0000d600  74 65 73 25 21 30 3d 73  69 7a 65 25 0d 46 1e 11  |tes%!0=size%.F..|
0000d610  73 70 72 69 74 65 73 25  21 38 3d 31 36 0d 46 28  |sprites%!8=16.F(|
0000d620  2f c8 99 34 36 2c 26 31  30 41 2c 73 70 72 69 74  |/..46,&10A,sprit|
0000d630  65 73 25 2c 66 69 6c 65  24 3a f4 20 4c 6f 61 64  |es%,file$:. Load|
0000d640  20 73 70 72 69 74 65 20  66 69 6c 65 0d 46 32 0d  | sprite file.F2.|
0000d650  3d 73 70 72 69 74 65 73  25 0d 46 3c 05 3a 0d 46  |=sprites%.F<.:.F|
0000d660  46 42 dd a4 6e 65 77 5f  74 65 6d 70 6c 61 74 65  |FB..new_template|
0000d670  28 74 65 6d 70 6c 61 74  65 5f 66 69 6c 65 24 2c  |(template_file$,|
0000d680  77 69 6e 64 6f 77 5f 6e  61 6d 65 24 2c f8 20 6d  |window_name$,. m|
0000d690  65 6d 66 72 65 65 25 2c  6d 65 6d 65 6e 64 25 29  |emfree%,memend%)|
0000d6a0  0d 46 50 14 ea 20 77 69  6e 64 6f 77 5f 68 61 6e  |.FP.. window_han|
0000d6b0  64 6c 65 25 0d 46 5a 1c  c8 99 32 36 32 33 36 31  |dle%.FZ...262361|
0000d6c0  2c 2c 74 65 6d 70 6c 61  74 65 5f 66 69 6c 65 24  |,,template_file$|
0000d6d0  0d 46 64 3b 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |.Fd;window_handl|
0000d6e0  65 25 3d a4 74 65 6d 70  6c 61 74 65 28 77 69 6e  |e%=.template(win|
0000d6f0  64 6f 77 5f 6e 61 6d 65  24 2c 6d 65 6d 66 72 65  |dow_name$,memfre|
0000d700  65 25 2c 6d 65 6d 65 6e  64 25 29 0d 46 6e 0c c8  |e%,memend%).Fn..|
0000d710  99 32 36 32 33 36 32 0d  46 78 13 3d 77 69 6e 64  |.262362.Fx.=wind|
0000d720  6f 77 5f 68 61 6e 64 6c  65 25 0d 46 82 05 3a 0d  |ow_handle%.F..:.|
0000d730  46 8c 28 dd a4 74 65 6d  70 6c 61 74 65 28 77 69  |F.(..template(wi|
0000d740  6e 64 6f 77 5f 6e 61 6d  65 24 2c f8 20 70 74 72  |ndow_name$,. ptr|
0000d750  25 2c 65 6e 64 25 29 0d  46 96 1b ea 20 66 6f 75  |%,end%).F... fou|
0000d760  6e 64 25 2c 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |nd%,window_handl|
0000d770  65 25 0d 46 a0 41 c8 99  32 36 32 33 36 33 2c 2c  |e%.F.A..262363,,|
0000d780  62 6c 6b 25 2c 70 74 72  25 2c 65 6e 64 25 2c 2d  |blk%,ptr%,end%,-|
0000d790  31 2c 77 69 6e 64 6f 77  5f 6e 61 6d 65 24 2c 30  |1,window_name$,0|
0000d7a0  20 b8 20 2c 2c 70 74 72  25 2c 2c 2c 2c 66 6f 75  | . ,,ptr%,,,,fou|
0000d7b0  6e 64 25 0d 46 aa 0e e7  20 66 6f 75 6e 64 25 20  |nd%.F... found% |
0000d7c0  8c 0d 46 b4 24 20 c8 99  32 36 32 33 33 37 2c 2c  |..F.$ ..262337,,|
0000d7d0  62 6c 6b 25 20 b8 20 77  69 6e 64 6f 77 5f 68 61  |blk% . window_ha|
0000d7e0  6e 64 6c 65 25 0d 46 be  05 cc 0d 46 c8 40 20 85  |ndle%.F....F.@ .|
0000d7f0  20 a2 20 30 2c 22 57 69  6e 64 6f 77 20 22 2b 77  | . 0,"Window "+w|
0000d800  69 6e 64 6f 77 5f 6e 61  6d 65 24 2b 22 20 6e 6f  |indow_name$+" no|
0000d810  74 20 66 6f 75 6e 64 20  69 6e 20 74 65 6d 70 6c  |t found in templ|
0000d820  61 74 65 20 66 69 6c 65  21 22 0d 46 d2 15 20 77  |ate file!".F.. w|
0000d830  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 25 3d 30 0d  |indow_handle%=0.|
0000d840  46 dc 05 cd 0d 46 e6 13  3d 77 69 6e 64 6f 77 5f  |F....F..=window_|
0000d850  68 61 6e 64 6c 65 25 0d  46 f0 05 3a 0d 46 fa 23  |handle%.F..:.F.#|
0000d860  dd 20 f2 63 6c 6f 73 65  5f 77 69 6e 64 6f 77 28  |. .close_window(|
0000d870  77 69 6e 64 6f 77 5f 68  61 6e 64 6c 65 25 29 0d  |window_handle%).|
0000d880  47 04 1d 21 74 65 6d 70  5f 62 6c 6b 25 3d 77 69  |G..!temp_blk%=wi|
0000d890  6e 64 6f 77 5f 68 61 6e  64 6c 65 25 0d 47 0e 17  |ndow_handle%.G..|
0000d8a0  c8 99 32 36 32 33 34 32  2c 2c 74 65 6d 70 5f 62  |..262342,,temp_b|
0000d8b0  6c 6b 25 0d 47 18 05 e1  0d 47 22 05 3a 0d 47 2c  |lk%.G....G".:.G,|
0000d8c0  18 dd a4 63 72 65 61 74  65 5f 69 6e 66 6f 5f 77  |...create_info_w|
0000d8d0  69 6e 64 6f 77 0d 47 36  0b ea 20 69 63 6f 6e 25  |indow.G6.. icon%|
0000d8e0  0d 47 40 4e 69 6e 66 6f  25 3d a4 63 72 65 61 74  |.G@Ninfo%=.creat|
0000d8f0  65 5f 77 69 6e 64 6f 77  28 22 41 62 6f 75 74 20  |e_window("About |
0000d900  74 68 69 73 20 70 72 6f  67 72 61 6d 22 2c 26 38  |this program",&8|
0000d910  34 30 30 30 30 31 32 2c  36 36 30 2c 32 31 32 2c  |4000012,660,212,|
0000d920  30 2c 36 36 30 2c 39 39  39 2c 39 39 39 29 0d 47  |0,660,999,999).G|
0000d930  4a 38 69 63 6f 6e 25 3d  a4 61 64 64 5f 69 63 6f  |J8icon%=.add_ico|
0000d940  6e 28 22 6c 61 62 65 6c  22 2c 22 20 20 20 4e 61  |n("label","   Na|
0000d950  6d 65 3a 22 2c 69 6e 66  6f 25 2c 38 2c 2d 34 2c  |me:",info%,8,-4,|
0000d960  30 2c 30 2c 30 29 0d 47  54 39 69 63 6f 6e 25 3d  |0,0,0).GT9icon%=|
0000d970  a4 61 64 64 5f 69 63 6f  6e 28 22 72 65 70 6f 72  |.add_icon("repor|
0000d980  74 22 2c c4 33 30 2c 22  20 22 29 2c 69 6e 66 6f  |t",.30," "),info|
0000d990  25 2c 31 35 36 2c 2d 34  2c 30 2c 30 2c 30 29 0d  |%,156,-4,0,0,0).|
0000d9a0  47 5e 3a 69 63 6f 6e 25  3d a4 61 64 64 5f 69 63  |G^:icon%=.add_ic|
0000d9b0  6f 6e 28 22 72 65 70 6f  72 74 22 2c c4 33 30 2c  |on("report",.30,|
0000d9c0  22 20 22 29 2c 69 6e 66  6f 25 2c 31 35 36 2c 2d  |" "),info%,156,-|
0000d9d0  35 36 2c 30 2c 30 2c 30  29 0d 47 68 3b 69 63 6f  |56,0,0,0).Gh;ico|
0000d9e0  6e 25 3d a4 61 64 64 5f  69 63 6f 6e 28 22 72 65  |n%=.add_icon("re|
0000d9f0  70 6f 72 74 22 2c c4 33  30 2c 22 20 22 29 2c 69  |port",.30," "),i|
0000da00  6e 66 6f 25 2c 31 35 36  2c 2d 31 30 38 2c 30 2c  |nfo%,156,-108,0,|
0000da10  30 2c 30 29 0d 47 72 3b  69 63 6f 6e 25 3d a4 61  |0,0).Gr;icon%=.a|
0000da20  64 64 5f 69 63 6f 6e 28  22 72 65 70 6f 72 74 22  |dd_icon("report"|
0000da30  2c c4 33 30 2c 22 20 22  29 2c 69 6e 66 6f 25 2c  |,.30," "),info%,|
0000da40  31 35 36 2c 2d 31 36 30  2c 30 2c 30 2c 30 29 0d  |156,-160,0,0,0).|
0000da50  47 7c 39 69 63 6f 6e 25  3d a4 61 64 64 5f 69 63  |G|9icon%=.add_ic|
0000da60  6f 6e 28 22 6c 61 62 65  6c 22 2c 22 50 75 72 70  |on("label","Purp|
0000da70  6f 73 65 3a 22 2c 69 6e  66 6f 25 2c 38 2c 2d 35  |ose:",info%,8,-5|
0000da80  36 2c 30 2c 30 2c 30 29  0d 47 86 3a 69 63 6f 6e  |6,0,0,0).G.:icon|
0000da90  25 3d a4 61 64 64 5f 69  63 6f 6e 28 22 6c 61 62  |%=.add_icon("lab|
0000daa0  65 6c 22 2c 22 20 41 75  74 68 6f 72 3a 22 2c 69  |el"," Author:",i|
0000dab0  6e 66 6f 25 2c 38 2c 2d  31 30 38 2c 30 2c 30 2c  |nfo%,8,-108,0,0,|
0000dac0  30 29 0d 47 90 3a 69 63  6f 6e 25 3d a4 61 64 64  |0).G.:icon%=.add|
0000dad0  5f 69 63 6f 6e 28 22 6c  61 62 65 6c 22 2c 22 56  |_icon("label","V|
0000dae0  65 72 73 69 6f 6e 3a 22  2c 69 6e 66 6f 25 2c 38  |ersion:",info%,8|
0000daf0  2c 2d 31 36 30 2c 30 2c  30 2c 30 29 0d 47 9a 0a  |,-160,0,0,0).G..|
0000db00  3d 69 6e 66 6f 25 0d 47  a4 05 3a 0d 47 ae 17 dd  |=info%.G..:.G...|
0000db10  f2 63 72 65 61 74 65 5f  73 68 6f 77 5f 76 61 6c  |.create_show_val|
0000db20  75 65 0d 47 b8 0b ea 20  69 63 6f 6e 25 0d 47 c2  |ue.G... icon%.G.|
0000db30  49 73 68 6f 77 5f 76 61  6c 75 65 25 3d a4 63 72  |Ishow_value%=.cr|
0000db40  65 61 74 65 5f 77 69 6e  64 6f 77 28 22 53 68 6f  |eate_window("Sho|
0000db50  77 20 56 61 72 69 61 62  6c 65 22 2c 30 2c 36 30  |w Variable",0,60|
0000db60  38 2c 32 31 32 2c 33 30  30 2c 39 39 39 2c 33 35  |8,212,300,999,35|
0000db70  30 2c 39 39 39 29 0d 47  cc 3d 69 63 6f 6e 25 3d  |0,999).G.=icon%=|
0000db80  a4 61 64 64 5f 69 63 6f  6e 28 22 72 65 70 6f 72  |.add_icon("repor|
0000db90  74 22 2c c4 33 36 2c 22  20 22 29 2c 73 68 6f 77  |t",.36," "),show|
0000dba0  5f 76 61 6c 75 65 25 2c  38 2c 2d 34 2c 30 2c 30  |_value%,8,-4,0,0|
0000dbb0  2c 30 29 0d 47 d6 3e 69  63 6f 6e 25 3d a4 61 64  |,0).G.>icon%=.ad|
0000dbc0  64 5f 69 63 6f 6e 28 22  72 65 70 6f 72 74 22 2c  |d_icon("report",|
0000dbd0  c4 33 36 2c 22 20 22 29  2c 73 68 6f 77 5f 76 61  |.36," "),show_va|
0000dbe0  6c 75 65 25 2c 38 2c 2d  35 36 2c 30 2c 30 2c 30  |lue%,8,-56,0,0,0|
0000dbf0  29 0d 47 e0 3f 69 63 6f  6e 25 3d a4 61 64 64 5f  |).G.?icon%=.add_|
0000dc00  69 63 6f 6e 28 22 72 65  70 6f 72 74 22 2c c4 33  |icon("report",.3|
0000dc10  36 2c 22 20 22 29 2c 73  68 6f 77 5f 76 61 6c 75  |6," "),show_valu|
0000dc20  65 25 2c 38 2c 2d 31 30  38 2c 30 2c 30 2c 30 29  |e%,8,-108,0,0,0)|
0000dc30  0d 47 ea 3f 69 63 6f 6e  25 3d a4 61 64 64 5f 69  |.G.?icon%=.add_i|
0000dc40  63 6f 6e 28 22 72 65 70  6f 72 74 22 2c c4 33 36  |con("report",.36|
0000dc50  2c 22 20 22 29 2c 73 68  6f 77 5f 76 61 6c 75 65  |," "),show_value|
0000dc60  25 2c 38 2c 2d 31 36 30  2c 30 2c 30 2c 30 29 0d  |%,8,-160,0,0,0).|
0000dc70  47 f4 05 e1 0d 47 fe 05  3a 0d 48 08 4c dd a4 63  |G....G..:.H.L..c|
0000dc80  72 65 61 74 65 5f 77 69  6e 64 6f 77 28 74 69 74  |reate_window(tit|
0000dc90  6c 65 24 2c 77 66 25 2c  78 5f 73 69 7a 65 25 2c  |le$,wf%,x_size%,|
0000dca0  79 5f 73 69 7a 65 25 2c  6c 65 66 74 25 2c 77 69  |y_size%,left%,wi|
0000dcb0  64 74 68 25 2c 62 6f 74  74 6f 6d 25 2c 68 65 69  |dth%,bottom%,hei|
0000dcc0  67 68 74 25 29 0d 48 12  1a ea 20 74 69 74 6c 65  |ght%).H... title|
0000dcd0  5f 73 70 61 63 65 25 2c  68 61 6e 64 6c 65 25 0d  |_space%,handle%.|
0000dce0  48 1c 1e de 20 74 69 74  6c 65 5f 73 70 61 63 65  |H... title_space|
0000dcf0  25 20 28 31 2b a9 74 69  74 6c 65 24 29 0d 48 26  |% (1+.title$).H&|
0000dd00  15 74 65 6d 70 5f 62 6c  6b 25 21 30 3d 6c 65 66  |.temp_blk%!0=lef|
0000dd10  74 25 0d 48 30 17 74 65  6d 70 5f 62 6c 6b 25 21  |t%.H0.temp_blk%!|
0000dd20  34 3d 62 6f 74 74 6f 6d  25 0d 48 3a 1c 74 65 6d  |4=bottom%.H:.tem|
0000dd30  70 5f 62 6c 6b 25 21 38  3d 6c 65 66 74 25 2b 77  |p_blk%!8=left%+w|
0000dd40  69 64 74 68 25 0d 48 44  20 74 65 6d 70 5f 62 6c  |idth%.HD temp_bl|
0000dd50  6b 25 21 31 32 3d 62 6f  74 74 6f 6d 25 2b 68 65  |k%!12=bottom%+he|
0000dd60  69 67 68 74 25 0d 48 4e  12 74 65 6d 70 5f 62 6c  |ight%.HN.temp_bl|
0000dd70  6b 25 21 31 36 3d 30 0d  48 58 12 74 65 6d 70 5f  |k%!16=0.HX.temp_|
0000dd80  62 6c 6b 25 21 32 30 3d  30 0d 48 62 13 74 65 6d  |blk%!20=0.Hb.tem|
0000dd90  70 5f 62 6c 6b 25 21 32  34 3d 2d 31 0d 48 6c 19  |p_blk%!24=-1.Hl.|
0000dda0  e7 20 77 66 25 3d 30 20  77 66 25 3d 26 46 46 30  |. wf%=0 wf%=&FF0|
0000ddb0  30 30 30 31 32 0d 48 76  14 74 65 6d 70 5f 62 6c  |00012.Hv.temp_bl|
0000ddc0  6b 25 21 32 38 3d 77 66  25 0d 48 80 12 74 65 6d  |k%!28=wf%.H..tem|
0000ddd0  70 5f 62 6c 6b 25 3f 33  32 3d 37 0d 48 8a 12 74  |p_blk%?32=7.H..t|
0000dde0  65 6d 70 5f 62 6c 6b 25  3f 33 33 3d 32 0d 48 94  |emp_blk%?33=2.H.|
0000ddf0  12 74 65 6d 70 5f 62 6c  6b 25 3f 33 34 3d 37 0d  |.temp_blk%?34=7.|
0000de00  48 9e 12 74 65 6d 70 5f  62 6c 6b 25 3f 33 35 3d  |H..temp_blk%?35=|
0000de10  31 0d 48 a8 12 74 65 6d  70 5f 62 6c 6b 25 3f 33  |1.H..temp_blk%?3|
0000de20  36 3d 33 0d 48 b2 12 74  65 6d 70 5f 62 6c 6b 25  |6=3.H..temp_blk%|
0000de30  3f 33 37 3d 31 0d 48 bc  13 74 65 6d 70 5f 62 6c  |?37=1.H..temp_bl|
0000de40  6b 25 3f 33 38 3d 31 32  0d 48 c6 12 74 65 6d 70  |k%?38=12.H..temp|
0000de50  5f 62 6c 6b 25 3f 33 39  3d 30 0d 48 d0 12 74 65  |_blk%?39=0.H..te|
0000de60  6d 70 5f 62 6c 6b 25 21  34 30 3d 30 0d 48 da 19  |mp_blk%!40=0.H..|
0000de70  74 65 6d 70 5f 62 6c 6b  25 21 34 34 3d 2d 79 5f  |temp_blk%!44=-y_|
0000de80  73 69 7a 65 25 0d 48 e4  18 74 65 6d 70 5f 62 6c  |size%.H..temp_bl|
0000de90  6b 25 21 34 38 3d 78 5f  73 69 7a 65 25 0d 48 ee  |k%!48=x_size%.H.|
0000dea0  12 74 65 6d 70 5f 62 6c  6b 25 21 35 32 3d 30 0d  |.temp_blk%!52=0.|
0000deb0  48 f8 15 74 65 6d 70 5f  62 6c 6b 25 21 35 36 3d  |H..temp_blk%!56=|
0000dec0  26 31 31 39 0d 49 02 16  74 65 6d 70 5f 62 6c 6b  |&119.I..temp_blk|
0000ded0  25 21 36 30 3d 26 36 30  30 30 0d 49 0c 12 74 65  |%!60=&6000.I..te|
0000dee0  6d 70 5f 62 6c 6b 25 21  36 34 3d 31 0d 49 16 12  |mp_blk%!64=1.I..|
0000def0  74 65 6d 70 5f 62 6c 6b  25 3f 36 38 3d 30 0d 49  |temp_blk%?68=0.I|
0000df00  20 12 74 65 6d 70 5f 62  6c 6b 25 3f 36 39 3d 30  | .temp_blk%?69=0|
0000df10  0d 49 2a 12 74 65 6d 70  5f 62 6c 6b 25 3f 37 30  |.I*.temp_blk%?70|
0000df20  3d 30 0d 49 34 12 74 65  6d 70 5f 62 6c 6b 25 3f  |=0.I4.temp_blk%?|
0000df30  37 31 3d 30 0d 49 3e 18  24 74 69 74 6c 65 5f 73  |71=0.I>.$title_s|
0000df40  70 61 63 65 25 3d 74 69  74 6c 65 24 0d 49 48 1d  |pace%=title$.IH.|
0000df50  74 65 6d 70 5f 62 6c 6b  25 21 37 32 3d 74 69 74  |temp_blk%!72=tit|
0000df60  6c 65 5f 73 70 61 63 65  25 0d 49 52 13 74 65 6d  |le_space%.IR.tem|
0000df70  70 5f 62 6c 6b 25 21 37  36 3d 2d 31 0d 49 5c 1c  |p_blk%!76=-1.I\.|
0000df80  74 65 6d 70 5f 62 6c 6b  25 21 38 30 3d a9 28 74  |temp_blk%!80=.(t|
0000df90  69 74 6c 65 24 29 2b 31  0d 49 66 12 74 65 6d 70  |itle$)+1.If.temp|
0000dfa0  5f 62 6c 6b 25 21 38 34  3d 30 0d 49 70 21 c8 99  |_blk%!84=0.Ip!..|
0000dfb0  32 36 32 33 33 37 2c 2c  74 65 6d 70 5f 62 6c 6b  |262337,,temp_blk|
0000dfc0  25 20 b8 20 68 61 6e 64  6c 65 25 0d 49 7a 0c 3d  |% . handle%.Iz.=|
0000dfd0  68 61 6e 64 6c 65 25 0d  49 84 05 3a 0d 49 8e 24  |handle%.I..:.I.$|
0000dfe0  dd 20 f2 64 65 6c 65 74  65 5f 77 69 6e 64 6f 77  |. .delete_window|
0000dff0  28 77 69 6e 64 6f 77 5f  68 61 6e 64 6c 65 25 29  |(window_handle%)|
0000e000  0d 49 98 31 21 74 65 6d  70 5f 62 6c 6b 25 3d 77  |.I.1!temp_blk%=w|
0000e010  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 25 3a c8 99  |indow_handle%:..|
0000e020  32 36 32 33 33 39 2c 2c  74 65 6d 70 5f 62 6c 6b  |262339,,temp_blk|
0000e030  25 0d 49 a2 05 e1 0d 49  ac 05 3a 0d 49 b6 22 dd  |%.I....I..:.I.".|
0000e040  20 f2 6f 70 65 6e 5f 77  69 6e 64 6f 77 28 77 69  | .open_window(wi|
0000e050  6e 64 6f 77 5f 68 61 6e  64 6c 65 25 29 0d 49 c0  |ndow_handle%).I.|
0000e060  1d 21 74 65 6d 70 5f 62  6c 6b 25 3d 77 69 6e 64  |.!temp_blk%=wind|
0000e070  6f 77 5f 68 61 6e 64 6c  65 25 0d 49 ca 17 c8 99  |ow_handle%.I....|
0000e080  32 36 32 33 34 37 2c 2c  74 65 6d 70 5f 62 6c 6b  |262347,,temp_blk|
0000e090  25 0d 49 d4 17 c8 99 32  36 32 33 34 31 2c 2c 74  |%.I....262341,,t|
0000e0a0  65 6d 70 5f 62 6c 6b 25  0d 49 de 05 e1 0d 49 e8  |emp_blk%.I....I.|
0000e0b0  05 3a 0d 49 f2 25 dd a4  77 69 6e 64 6f 77 5f 78  |.:.I.%..window_x|
0000e0c0  5f 6f 72 69 67 69 6e 28  77 69 6e 64 6f 77 5f 68  |_origin(window_h|
0000e0d0  61 6e 64 6c 65 25 29 0d  49 fc 32 74 65 6d 70 5f  |andle%).I.2temp_|
0000e0e0  62 6c 6b 25 21 30 3d 77  69 6e 64 6f 77 5f 68 61  |blk%!0=window_ha|
0000e0f0  6e 64 6c 65 25 3a c8 99  32 36 32 33 34 37 2c 2c  |ndle%:..262347,,|
0000e100  74 65 6d 70 5f 62 6c 6b  25 0d 4a 06 1d 3d 74 65  |temp_blk%.J..=te|
0000e110  6d 70 5f 62 6c 6b 25 21  34 2d 74 65 6d 70 5f 62  |mp_blk%!4-temp_b|
0000e120  6c 6b 25 21 32 30 0d 4a  10 05 3a 0d 4a 1a 25 dd  |lk%!20.J..:.J.%.|
0000e130  a4 77 69 6e 64 6f 77 5f  79 5f 6f 72 69 67 69 6e  |.window_y_origin|
0000e140  28 77 69 6e 64 6f 77 5f  68 61 6e 64 6c 65 25 29  |(window_handle%)|
0000e150  0d 4a 24 32 74 65 6d 70  5f 62 6c 6b 25 21 30 3d  |.J$2temp_blk%!0=|
0000e160  77 69 6e 64 6f 77 5f 68  61 6e 64 6c 65 25 3a c8  |window_handle%:.|
0000e170  99 32 36 32 33 34 37 2c  2c 74 65 6d 70 5f 62 6c  |.262347,,temp_bl|
0000e180  6b 25 0d 4a 2e 1e 3d 74  65 6d 70 5f 62 6c 6b 25  |k%.J..=temp_blk%|
0000e190  21 31 36 2d 74 65 6d 70  5f 62 6c 6b 25 21 32 34  |!16-temp_blk%!24|
0000e1a0  0d 4a 38 05 3a 0d ff                              |.J8.:..|
0000e1a7