Home » Archimedes archive » Archimedes World » AW-1995-06_Disc2.adf » June95_2 » Apps/BigBook/!BigBook/!RunImage

Apps/BigBook/!BigBook/!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 » Archimedes World » AW-1995-06_Disc2.adf » June95_2
Filename: Apps/BigBook/!BigBook/!RunImage
Read OK:
File size: 1166C bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > <BigBook$Dir>.!RunImage
   20PROCinitiate
   30ON ERROR PROCerror(REPORT$)
   40
   50next_time%=0
   60WHILE NOTexit
   70  null%=dragging%OR(insptr%<inslen%)
   80  IF alarm_set% THEN
   90    PROCpollidle(0,next_time%)
  100    SYS"OS_ReadMonotonicTime" TO new_time%
  110    IF new_time%>=next_time% THEN
  120      IF FNthis_time>=c_time%(alarm_set%) THEN PROCalarm(alarm_set%,this_date%,1)
  130      next_time%=new_time%+1000
  140    ENDIF
  150  ELSE
  160    PROCpoll(1+null%)
  170  ENDIF
  180ENDWHILE
  190PROCclosedown
  200
  210DEF PROCinitiate
  220PROCwimpinit("Big Book","!bigbook","BigBook",19,6000)
  230PROCinit_s
  240PROCinit_n
  250PROCinit_c
  260PROCinit_a
  270PROCinit_l
  280PROCinit_m
  290PROCc_alarms
  300ENDPROC
  310
  320DEF PROCinit_m
  330DIM mp$(5,20)
  340ENDPROC
  350
  360DEF PROCinit_s
  370s_file$=dir$+".Settings"
  380IF FNfileexist(s_file$) THEN
  390  in_file=OPENIN(s_file$)
  400  INPUT#in_file,weekends
  410  INPUT#in_file,today
  420  INPUT#in_file,fonts
  430  INPUT#in_file,beep
  440  INPUT#in_file,birthday
  450  INPUT#in_file,other$
  460  CLOSE#in_file
  470ELSE
  480  weekends=TRUE
  490  today=TRUE
  500  fonts=FALSE
  510  beep=TRUE
  520  birthday=7
  530  other$="Other"
  540ENDIF
  550s_changed%=FALSE
  560ENDPROC
  570
  580DEF PROCsave_s
  590out_file=OPENOUT(s_file$)
  600PRINT#out_file,weekends
  610PRINT#out_file,today
  620PRINT#out_file,fonts
  630PRINT#out_file,beep
  640PRINT#out_file,birthday
  650PRINT#out_file,other$
  660CLOSE#out_file
  670s_changed%=FALSE
  680ENDPROC
  690
  700DEF PROCinit_n
  710PROCiconinfo(w%(notepad%),9,q%)
  720n_s0%=q%!8+4
  730n_s1%=q%!16-q%!8-8
  740n_si%=10
  750PROCiconinfo(w%(notepad%),n_si%,q%)
  760n_s2%=q%!12
  770n_s3%=q%!20
  780n_sf%=q%!24
  790max_n%=64
  800DIM note$(max_n%,5),n_num%(max_n%)
  810n_file$=dir$+".Notes"
  820IF FNfileexist(n_file$) THEN
  830  in_file=OPENIN(n_file$)
  840  INPUT#in_file,notes%
  850  INPUT#in_file,last_n%
  860  FOR note%=1 TO notes%
  870    FOR i%=0 TO 5
  880      INPUT#in_file,note$(note%,i%)
  890    NEXT i%
  900    INPUT#in_file,n_num%(note%)
  910  NEXT note%
  920  CLOSE#in_file
  930ELSE
  940  notes%=1
  950  last_n%=1
  960  n_num%(notes%)=last_n%
  970ENDIF
  980this_note%=-1
  990n_changed%=FALSE
 1000ENDPROC
 1010
 1020DEF PROCsave_n
 1030out_file=OPENOUT(n_file$)
 1040PRINT#out_file,notes%
 1050PRINT#out_file,last_n%
 1060FOR note%=1 TO notes%
 1070  FOR i%=0 TO 5
 1080    PRINT#out_file,note$(note%,i%)
 1090  NEXT i%
 1100  PRINT#out_file,n_num%(note%)
 1110NEXT note%
 1120CLOSE#out_file
 1130n_changed%=FALSE
 1140ENDPROC
 1150
 1160DEF PROCinit_c
 1170!q%=1
 1180SYS"OS_Word",14,q%
 1190this_year%=VAL(STR$~(?q%))
 1200this_month%=VAL(STR$~(q%?1))
 1210this_date%=VAL(STR$~(q%?2))
 1220DIM month$(12),ml%(12),day$(6),sd%(12),mo%(12),mml%(12)
 1230month$()="","January","February","March","April","May","June","July","August","September","October","November","December"
 1240ml%()=0,31,28,31,30,31,30,31,31,30,31,30,31
 1250FOR m%=2 TO 12
 1260  mo%(m%)=(mo%(m%-1)+ml%(m%-1))MOD7
 1270NEXT m%
 1280day$()="Sun","Mon","Tue","Wed","Thu","Fri","Sat"
 1290FOR m%=0 TO 12
 1300  month%=m%+this_month%-1
 1310  c_year%=this_year%
 1320  IF month%<1 THEN
 1330    c_year%-=1
 1340    month%+=12
 1350  ENDIF
 1360  IF month%>12 THEN
 1370    c_year%+=1
 1380    month%-=12
 1390  ENDIF
 1400  sd%(m%)=FNday(1,month%,c_year%)
 1410  mml%(m%)=ml%(month%)
 1420  IF c_year%MOD4=0 AND month%=2 THEN mml%(m%)=29
 1430NEXT m%
 1440c_width%=350:c_height%=40:border%=32:m_height%=40:d_width%=80
 1450p_x0%=-(border%+d_width%):p_y0%=-(c_height%*37+border%)
 1460p_x1%=c_width%*13+border%:p_y1%=border%+m_height%
 1470PROCsetwindowextent(w%(year%),p_x0%,p_y0%,p_x1%,p_y1%)
 1480PROCsetwindowextent(w%(c_horz%),p_x0%,p_y1%-m_height%,p_x1%,p_y1%)
 1490PROCsetwindowextent(w%(c_vert%),p_x0%,p_y0%,p_x0%+d_width%,p_y1%)
 1500c_max%=300
 1510DIM c_first%(12,31),c_colour%(12,31)
 1520DIM c_entry$(c_max%),c_type%(c_max%),c_time%(c_max%),c_next%(c_max%),c_link%(1,c_max%)
 1530c_first%()=-1
 1540c_last%=0
 1550DIM d_icon% 40
 1560PROCiconinfo(w%(day%),0,d_icon%)
 1570d_icon%+=8
 1580PROCdeleteicon(w%(day%),0)
 1590d_height%=d_icon%!12-d_icon%!4
 1600d_date%=-1:d_month%=-1
 1610DIM l_icon%(1)
 1620FOR i%=0 TO 1
 1630  DIM d% 40
 1640  PROCiconinfo(w%(day%),i%+1,d%)
 1650  l_icon%(i%)=d%+8
 1660  PROCdeleteicon(w%(day%),i%+1)
 1670NEXT i%
 1680DIM e_icon%(7),e_icon$(7)
 1690e_icon%()=4,1,2,3,10,11,12,15
 1700e_icon$()="none","birthday","todo","alarm","red","blue","green","gold"
 1710DIM b_col%(15)
 1720FOR i%=0 TO 15
 1730  b_col%(i%)=FNiconfc(w%(colours%),i%)
 1740NEXT i%
 1750in_file=OPENIN(dir$+".Colours")
 1760FOR i%=0 TO 15
 1770  PROCseticontext(w%(colours%),i%,LEFT$(GET$#in_file,12))
 1780NEXT i%
 1790CLOSE#in_file
 1800PROCload_c
 1810a_date%=1:a_month%=0:a_next%=0
 1820alarm_set%=0
 1830DIM trans% 16,rect% 16,plotat% 8
 1840ENDPROC
 1850
 1860DEF PROCinit_l
 1870DIM l_list%(max_a%), l_icon% 40
 1880PROCiconinfo(w%(letter%),1,l_icon%)
 1890l_icon%+=8
 1900l_y0%=l_icon%!4
 1910l_y1%=l_icon%!12-l_icon%!4
 1920PROCdeleteicon(w%(letter%),1)
 1930letters%=-1
 1940l_selected%=-1
 1950PROCcalc_l
 1960ENDPROC
 1970
 1980DEF PROCinit_a
 1990PROCiconinfo(w%(address%),17,q%)
 2000a_s0%=q%!8+4
 2010a_s1%=q%!16-q%!8-8
 2020a_si%=18
 2030PROCiconinfo(w%(address%),a_si%,q%)
 2040a_s2%=q%!12
 2050a_s3%=q%!20
 2060a_sf%=q%!24
 2070max_a%=256
 2080name=0:address=1:phone=6:other=7:dob=8:sent=9:rec=10:file=11
 2090DIM a$(max_a%,11), flag%(max_a%), type%(max_a%), a_num%(max_a%), icon%(8), a%(26), g%(max_a%), temp$(max_a%), ind%(max_a%)
 2100icon%()=0,2,3,4,5,6,12,13,14
 2110PROCload_a
 2120this_name%=1
 2130DIM index_menu% 1024, sub_block% 2048, sub_index% 2048
 2140PROCseticontext(w%(address%),10,other$+":")
 2150DIM col_tone%(2),row_tone%(3)
 2160col_tone%()=160,167,174
 2170row_tone%()=122,130,136,142
 2180inslen%=0:insptr%=0:DIM insdata% 400
 2190ENDPROC
 2200
 2210DEF PROCinitwindows
 2220info%=FNinfowindow("Big Book","Diary, Address book,...","Barry Wickett","1.20 (17-Dec-1994)")
 2230entry%=FNwindow("day","entry",0,%10)
 2240record%=FNwindow("record","record",FNmenu("File Link,Unlink"),0)
 2250DIM other% 14
 2260othermenu%=FNmenu("  Enter date  ,14!,,other%")
 2270recordmenu%=FNmenu("Date,Today,Yesterday,Other>,othermenu%")
 2280insert%=FNwindow("insert","insert",0,0)
 2290special%=FNmenu("Specials,Insert at Caret>,w%(insert%),Mark up birthday")
 2300address%=FNwindow("addresses","address",FNmenu("Addresses,Add,Delete,Search,Sort-,Save-,Specials>,special%,Print..."),%110)
 2310letter%=FNwindow("letters","letter",FNmenu("Letters,Print..."),%1)
 2320colours%=FNwindow("colours","colours",0,0)
 2330day%=FNwindow("days","day",FNmenu("Day,Colours>,w%(colours%),Add entry,Print..."),%100)
 2340alarm%=FNwindow("alarm","alarm",0,%10)
 2350print%=FNwindow("print","print",0,0)
 2360year%=FNwindow("years","year",FNmenu("Book of Days,Print>-,w%(print%),Save"),%10011)
 2370birthday%=FNwindow("birthday","birthday",0,%10)
 2380savemenu%=FNmenu("Save,Days,Addresses,Letters,Notes,Settings-,All changes")
 2390menu%=FNwindow("menu","menu",FNmenu("Big Book,Info>,w%(info%),Save>,savemenu%,Quit"),0)
 2400c_horz%=FNwindow("blank","c_horz",0,0)
 2410c_vert%=FNwindow("blank","c_vert",0,0)
 2420settings%=FNwindow("system","settings",0,%1)
 2430notepad%=FNwindow("notes","notepad",0,%10)
 2440search%=FNwindow("search","search",0,0)
 2450multi%=FNwindow("multi","multi",0,0)
 2460PROCiconbarmenu("Big Book,Info>,w%(info%),Quit")
 2470ENDPROC
 2480
 2490DEF PROCsave_changed
 2500IF c_changed% THEN PROCsave_c
 2510IF a_changed% THEN PROCsave_a
 2520IF n_changed% THEN PROCsave_n
 2530IF s_changed% THEN PROCsave_s
 2540ENDPROC
 2550
 2560DEF FNmenu_iconbar
 2570IF !blk%=1 THEN PROCquit
 2580=0
 2590
 2600DEF FNclick_iconbar
 2610PROCopenup(w%(menu%))
 2620=0
 2630
 2640DEF FNmenu_menu
 2650CASE !blk% OF
 2660  WHEN 1
 2670    CASE blk%!4 OF
 2680      WHEN 0 : PROCsave_c
 2690      WHEN 1,2 : PROCsave_a
 2700      WHEN 3 : PROCsave_n
 2710      WHEN 4 : PROCsave_s
 2720      WHEN 5 : PROCsave_changed
 2730    ENDCASE
 2740  WHEN 2 : PROCquit
 2750ENDCASE
 2760=0
 2770
 2780DEF FNclick_menu
 2790CASE icon% OF
 2800  WHEN 1 : PROCopenup(w%(settings%))
 2810  WHEN 3 : IF active%(notepad%) THEN PROCopenup(w%(notepad%)) ELSE PROCset_n(1)
 2820  WHEN 4 : PROCopenup(w%(year%))
 2830  WHEN 5 : IF active%(address%) THEN PROCopenup(w%(address%)) ELSE PROCset_a(1)
 2840  WHEN 6 : PROCopenup(w%(letter%))
 2850ENDCASE
 2860=0
 2870
 2880DEF FNopen_settings
 2890IF NOTactive%(settings%) THEN
 2900  PROCselecticon(w%(settings%),14,weekends)
 2910  PROCselecticon(w%(settings%),2,today)
 2920  PROCselecticon(w%(settings%),3,fonts)
 2930  PROCselecticon(w%(settings%),4,beep)
 2940  PROCseticonval(w%(settings%),8,birthday)
 2950  PROCseticontext(w%(settings%),12,other$)
 2960ENDIF
 2970=0
 2980
 2990DEF FNclick_settings
 3000CASE icon% OF
 3010  WHEN 16
 3020    PROCnew_settings
 3030    PROCclosewindow(w%(settings%))
 3040  WHEN 15 : PROCclosewindow(w%(settings%))
 3050  WHEN 17
 3060    PROCnew_settings
 3070    PROCsave_s
 3080    PROCclosewindow(w%(settings%))
 3090  WHEN 5,6 : d%=FNincicon(8,5,6,1,9)
 3100OTHERWISE
 3110ENDCASE
 3120=0
 3130
 3140DEF FNclose_birthday
 3150PROCquickclosewindow(w%(birthday%))
 3160active%(birthday%)=FALSE
 3170IF b_checking% THEN PROCc_birthdays
 3180=0
 3190
 3200DEF FNclose_alarm
 3210PROCquickclosewindow(w%(alarm%))
 3220active%(alarm%)=FALSE
 3230IF a_checking% THEN PROCc_alarms
 3240=0
 3250
 3260DEF FNclick_alarm
 3270=0
 3280
 3290DEF FNclick_colours
 3300CASE icon% OF
 3310  WHEN 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 : c_chosen%=icon%
 3320  WHEN 16 : PROCclosemenu
 3330  WHEN 17
 3340    c_colour%(d_month%,d_date%)=c_chosen%
 3350    PROCredo_c(d_month%,d_date%)
 3360    PROCclosemenu
 3370ENDCASE
 3380=0
 3390
 3400DEF FNmenu_record
 3410IF !blk%=0 THEN
 3420  a$(l_selected%,file)=""
 3430  type%(l_selected%)=-1
 3440  PROCset_l_data
 3450ENDIF
 3460=0
 3470
 3480DEF FNclick_record
 3490CASE icon% OF
 3500  WHEN 4
 3510    file$=a$(l_selected%,file)
 3520    PROCfileinfo(file$)
 3530    IF exist% THEN
 3540      PROCmouseinfo
 3550      blk%!12=0
 3560      blk%!16=5
 3570      blk%!20=wind%
 3580      blk%!24=icon%
 3590      blk%!28=mx%
 3600      blk%!32=my%
 3610      blk%!36=filesize%
 3620      blk%!40=type%(l_selected%)
 3630      $(blk%+44)=file$+CHR$0
 3640      !blk%=(LENfile$+48)ANDNOT3
 3650      SYS"Wimp_SendMessage",18,blk%,0
 3660    ELSE
 3670      PROCreport("Letter file not found.")
 3680    ENDIF
 3690  WHEN 5,6
 3700    r_which%=6-icon%
 3710    $other%=FNicontext(wind%,r_which%+2)
 3720    PROCopeniconmenu(wind%,icon%,recordmenu%)
 3730  WHEN 10
 3740    PROCset_a(l_selected%)
 3750    PROCopenup(w%(address%))
 3760  WHEN 11 : PROCclosewindow(w%(record%))
 3770ENDCASE
 3780=0
 3790
 3800DEF FNkey_search
 3810IF key%=13 THEN PROCsearch(0,1)
 3820=0
 3830
 3840DEF FNclick_search
 3850IF search_type%=1 THEN this%=this_note% ELSE this%=this_name%
 3860CASE icon% OF
 3870  WHEN 2 : PROCsearch(0,1)
 3880  WHEN 3 : PROCsearch(this%,1)
 3890  WHEN 4 : PROCsearch(this%,-1)
 3900  WHEN 5 : PROCclosewindow(w%(search%))
 3910ENDCASE
 3920=0
 3930
 3940DEF FNdrop_notepad
 3950=0
 3960
 3970DEF FNclose_notepad
 3980PROCget_n_data
 3990=TRUE
 4000
 4010DEF FNclick_notepad
 4020CASE icon% OF
 4030  WHEN 7 : PROCinc_n(-1)
 4040  WHEN 8 : PROCinc_n(1)
 4050  WHEN n_si% : PROCdrag_n
 4060  WHEN 11 : PROCadd_n
 4070  WHEN 12 : PROCdelete_n
 4080  WHEN 13 : PROCopen_search(1)
 4090  WHEN 14 : PROCstart_multi(notepad%)
 4100ENDCASE
 4110=0
 4120
 4130DEF FNkey_notepad
 4140IF key%>=32 AND key%<=255 THEN
 4150  st$=FNicontext(wind%,icon%)
 4160  IF key%=127 THEN
 4170    IF index%>0 THEN
 4180      st$=LEFT$(st$,index%-1)+MID$(st$,index%+1)
 4190      PROCseticontext(wind%,icon%,st$)
 4200    ENDIF
 4210  ELSE
 4220    st$=LEFT$(st$,index%)+CHR$(key%)+MID$(st$,index%+1)
 4230    index%+=1
 4240    rem$=""
 4250    first%=TRUE
 4260    REPEAT
 4270      IF rem$<>"" AND st$<>"" THEN rem$+=" "
 4280      st$=rem$+st$
 4290      rem$=""
 4300      IF LENst$>30 THEN
 4310        p%=30
 4320        REPEAT
 4330          IF MID$(st$,p%,1)=" " THEN p%=-p% ELSE p%-=1
 4340        UNTIL p%<=0
 4350        IF p%=0 THEN
 4360          rem$=MID$(st$,31)
 4370          st$=LEFT$(st$,30)
 4380        ELSE
 4390          p%=-p%
 4400          rem$=MID$(st$,p%+1)
 4410          st$=LEFT$(st$,p%-1)
 4420        ENDIF
 4430      ENDIF
 4440      PROCseticontext(wind%,icon%,st$)
 4450      IF first% THEN
 4460        IF index%<=LENst$ THEN
 4470          cicon%=icon%
 4480          cindex%=index%
 4490        ELSE
 4500          cicon%=icon%+1
 4510          cindex%=index%-LENst$-1
 4520        ENDIF
 4530        first%=FALSE
 4540      ENDIF
 4550      icon%+=1
 4560      IF icon%<=6 THEN st$=FNicontext(wind%,icon%)
 4570    UNTIL rem$="" OR icon%>6
 4580    IF cicon%=7 THEN
 4590      PROCadd_n
 4600      PROCseticontext(wind%,1,rem$)
 4610      cicon%=1
 4620    ENDIF
 4630    PROCputcaret(wind%,cicon%,cindex%)
 4640  ENDIF
 4650ENDIF
 4660IF key%=13 THEN PROCadd_n
 4670=0
 4680
 4690DEF FNkey_address
 4700IF key%=13 THEN PROCadd_a
 4710=0
 4720
 4730DEF FNclick_address
 4740CASE icon% OF
 4750  WHEN 16 : PROCinc_a(-1)
 4760  WHEN 19 : PROCinc_a(1)
 4770  WHEN a_si% : PROCdrag_a
 4780  WHEN 24 : PROCletter_a
 4790  WHEN 20 : PROCa_index
 4800  WHEN 25 : PROCl_select(this_name%)
 4810  WHEN 26 : PROCdial(FNicontext(w%(address%),12))
 4820ENDCASE
 4830=0
 4840
 4850DEF FNpremenu_address
 4860PROCseticontext(w%(insert%),5,other$)
 4870=0
 4880
 4890DEF FNmenu_address
 4900CASE !blk% OF
 4910  WHEN 0 : PROCadd_a
 4920  WHEN 1 : PROCdelete_a
 4930  WHEN 2 : PROCopen_search(2)
 4940  WHEN 3 : IF names%>1 THEN PROCsort_a
 4950  WHEN 4 : PROCsave_a
 4960  WHEN 5 : IF blk%!4=1 THEN PROCmark_birthday
 4970  WHEN 6 : PROCstart_multi(address%)
 4980ENDCASE
 4990=0
 5000
 5010DEF FNclose_address
 5020PROCget_a_data
 5030=TRUE
 5040
 5050DEF FNdrop_address
 5060=0
 5070
 5080DEF FNkey_entry
 5090IF key%=13 THEN
 5100  PROCget_e
 5110  PROCclosewindow(w%(entry%))
 5120ENDIF
 5130=0
 5140
 5150DEF FNclose_entry
 5160PROCget_e
 5170=TRUE
 5180
 5190DEF FNclick_entry
 5200CASE icon% OF
 5210  WHEN 1,2,3,4,10,11,12,15 : PROCselecticon(wind%,icon%,TRUE)
 5220  WHEN 13
 5230    PROCget_e
 5240    PROCclosewindow(w%(entry%))
 5250  WHEN 5,6,8,9
 5260    h%=e_time%DIV60
 5270    m%=e_time%MOD60
 5280    CASE icon% OF
 5290      WHEN 5 : h%-=1
 5300      WHEN 6 : h%+=1
 5310      WHEN 9 : m%-=1
 5320      WHEN 8 : m%+=1
 5330    ENDCASE
 5340    IF h%>23 THEN h%=0 ELSE IF h%<0 THEN h%=23
 5350    IF m%<0 THEN m%=59 ELSE IF m%>59 THEN m%=0
 5360    PROCset_e_time(h%*60+m%)
 5370  WHEN 16 : PROCstartdrag(entry%,icon%)
 5380  WHEN 17
 5390    temp_entry%=this_entry%
 5400    PROCset_e(-1)
 5410    PROCremove_e(d_month%,d_date%,temp_entry%)
 5420    PROCcalc_d
 5430  WHEN 18,19
 5440    c_link%(icon%-18,this_entry%)=0
 5450    PROCforceredraw(w%(day%))
 5460ENDCASE
 5470=0
 5480
 5490DEF FNdrop_entry
 5500CASE wind% OF
 5510  WHEN w%(notepad%)
 5520    c_link%(1,this_entry%)=n_num%(this_note%)
 5530    c_changed%=TRUE
 5540    PROCforceredraw(w%(day%))
 5550  WHEN w%(address%)
 5560    c_link%(0,this_entry%)=a_num%(this_name%)
 5570    c_changed%=TRUE
 5580    PROCforceredraw(w%(day%))
 5590ENDCASE
 5600=0
 5610
 5620DEF FNclick_insert
 5630CASE icon% OF
 5640  WHEN 7 : PROCinsert
 5650  WHEN 8 : PROCclosemenu
 5660ENDCASE
 5670=0
 5680
 5690DEF PROCstart_multi(w0%)
 5700mp$()=""
 5710FOR i%=3 TO 8
 5720  PROCseticonvalid(w%(multi%),i%,"Sp")
 5730NEXT i%
 5740PROCset_multi(w0%,3)
 5750PROCopenup(w%(multi%))
 5760ENDPROC
 5770
 5780DEF FNclick_multi
 5790CASE icon% OF
 5800  WHEN 1 : PROCclosewindow(w%(multi%))
 5810  WHEN 2 : PROCprint_multi
 5820ENDCASE
 5830=0
 5840
 5850DEF PROCprint_multi
 5860SYS "XPDriver_Info" TO ;flags%
 5870IF flags% AND 1 THEN PROCreport("Printer manager not installed."):ENDPROC
 5880SYS"Hourglass_On"
 5890pf%=OPENOUT("printer:")
 5900SYS"PDriver_SelectJob",pf%,"Planner"
 5910LOCAL ERROR
 5920ON ERROR LOCAL:RESTORE ERROR:SYS "PDriver_AbortJob",pf%:CLOSE#pf%:SYS"Hourglass_Off":PROCreport(REPORT$):ENDPROC
 5930SYS"PDriver_PageSize" TO ,w%,h%,l%,b%,r%,t%
 5940!rect%=0:rect%!4=0
 5950rect%!8=1420:rect%!12=1820
 5960!trans%=1<<16:trans%!4=0
 5970trans%!8=0:trans%!12=1<<16
 5980!plotat%=l%:plotat%!4=b%
 5990SYS"PDriver_GiveRectangle",0,rect%,trans%,plotat%,&FFFFFF00
 6000SYS"PDriver_DrawPage",1,blk%,0,0 TO more%
 6010WHILE more%
 6020  SYS"Font_FindFont",,"Trinity.Medium",12*16,12*16,0,0 TO handle%
 6030  SYS"Font_FindFont",,"Trinity.Bold",12*16,12*16,0,0 TO bold%
 6040  SYS"Font_SetFont",handle%
 6050  SYS"ColourTrans_SetFontColours",0,&FFFFFF00,0,6
 6060  FOR i%=0 TO 5
 6070    x0%=(i%MOD2)*700+20
 6080    y0%=1820-(i%DIV2)*600
 6090    FOR l%=0 TO 20
 6100      IF mp$(i%,l%)<>"" THEN
 6110        IF LEFT$(mp$(i%,l%),1)="!" THEN
 6120          SYS"Font_SetFont",bold%
 6130          PROCfancy(MID$(mp$(i%,l%),2),x0%,y0%-(l%+1)*32)
 6140          SYS"Font_SetFont",handle%
 6150        ELSE
 6160          PROCfancy(mp$(i%,l%),x0%,y0%-(l%+1)*32)
 6170        ENDIF
 6180      ENDIF
 6190    NEXT l%
 6200  NEXT i%
 6210  SYS"PDriver_GetRectangle",,blk% TO more%
 6220  SYS"Font_LoseFont",handle%
 6230  SYS"Font_LoseFont",bold%
 6240ENDWHILE
 6250SYS"PDriver_EndJob",pf%
 6260RESTORE ERROR
 6270CLOSE#pf%
 6280SYS"Hourglass_Off"
 6290PROCclosewindow(w%(multi%))
 6300ENDPROC
 6310
 6320DEF PROCfancy(st$,x%,y%)
 6330LOCAL tab%
 6340tab%=INSTR(st$,CHR$9)
 6350IF tab%=0 THEN
 6360  SYS"Font_Paint",,st$,%10100,x%,y%
 6370ELSE
 6380  IF tab%>1 THEN PROCfancy(LEFT$(st$,tab%-1),x%,y%)
 6390  PROCfancy(MID$(st$,tab%+1),x%+80,y%)
 6400ENDPROC
 6410
 6420DEF FNdrop_multi
 6430PROCset_multi(FNid(wind%),dragicon%)
 6440=0
 6450
 6460DEF PROCset_multi(w%,i%)
 6470icon$=""
 6480FOR l%=0 TO 20
 6490  mp$(i%-3,l%)=""
 6500NEXT l%
 6510CASE w% OF
 6520  WHEN address%
 6530    icon$="paddress"
 6540    FOR type=name TO dob
 6550      mp$(i%-3,type-name)=a$(this_name%,type)
 6560    NEXT type
 6570    mp$(i%-3,0)="!"+mp$(i%-3,0)
 6580  WHEN day%
 6590    icon$="pdays"
 6600    p%=1
 6610    mp$(i%-3,0)="!"+t_date$
 6620    next%=c_first%(d_month%,d_date%)
 6630    WHILE next%<>-1 AND p%<=20
 6640      IF c_type%(next%)AND256 THEN time$=FNtime(c_time%(next%))+CHR$9 ELSE time$=""
 6650      mp$(i%-3,p%)=time$+c_entry$(next%)
 6660      next%=c_next%(next%)
 6670      p%+=1
 6680    ENDWHILE
 6690  WHEN notepad%
 6700    icon$="pnotepad"
 6710    FOR i2%=0 TO 5
 6720      mp$(i%-3,i2%)=FNicontext(w%(notepad%),i2%+1)
 6730    NEXT i2%
 6740  WHEN letter%
 6750    icon$="pletters"
 6760    t$=CHR$9+CHR$9+CHR$9+CHR$9+CHR$9
 6770    mp$(i%-3,0)="!Name"+t$+"Last Sent"+CHR$9+CHR$9+"Last Received"
 6780    IF letters% THEN
 6790      FOR l%=1 TO letters%
 6800        name%=l_list%(l%)
 6810        mp$(i%-3,l%)=a$(name%,name)+t$+a$(name%,sent)+CHR$9+CHR$9+a$(name%,rec)
 6820      NEXT l%
 6830    ENDIF
 6840OTHERWISE
 6850  icon$="p"
 6860ENDCASE
 6870PROCseticonvalid(w%(multi%),i%,"S"+icon$)
 6880IF icon$="p" THEN PROCreport("Cannot print this.")
 6890ENDPROC
 6900
 6910DEF FNclick_print
 6920CASE icon% OF
 6930  WHEN 4 : PROCclosemenu
 6940  WHEN 5 : PROCprint_year
 6950ENDCASE
 6960=0
 6970
 6980DEF FNpreopen_year
 6990IF active%(year%) THEN
 7000  !q%=w%(c_horz%)
 7010  SYS"Wimp_GetWindowState",,q%
 7020  IF q%!28=blk%!28 THEN blk%!28=w%(c_vert%)
 7030ENDIF
 7040=0
 7050
 7060DEF FNopen_year
 7070IF active%(year%)=FALSE AND today=TRUE THEN PROCnew_day(this_date%,1)
 7080PROCwindow_state(w%(year%))
 7090!blk%=w%(c_horz%)
 7100blk%!8=blk%!16-m_height%
 7110blk%!24=0
 7120PROCopenwindow
 7130PROCwindow_state(w%(year%))
 7140!blk%=w%(c_vert%)
 7150blk%!12=blk%!4+d_width%
 7160blk%!16=blk%!16
 7170blk%!20=0
 7180blk%!28=w%(c_horz%)
 7190PROCopenwindow
 7200=0
 7210
 7220DEF FNclose_year
 7230PROCclosewindow(w%(c_horz%))
 7240PROCclosewindow(w%(c_vert%))
 7250=TRUE
 7260
 7270DEF FNmenu_year
 7280CASE !blk% OF
 7290  WHEN 1 : PROCsave_c
 7300ENDCASE
 7310=0
 7320
 7330DEF FNclick_year
 7340mx%-=wx%(year%)
 7350my%-=wy%(year%)
 7360m%=mx%DIVc_width%
 7370IF m%>=0 AND m%<=12 THEN
 7380  d%=((-my%)DIVc_height%)-sd%(m%)+1
 7390  IF d%>=1 AND d%<=mml%(m%) THEN PROCnew_day(d%,m%)
 7400ENDIF
 7410=0
 7420
 7430DEF FNredraw_year
 7440font_col%=-1
 7450IF fonts THEN
 7460  SYS"Font_FindFont",,"Trinity.Medium",12*16,12*16,0,0 TO handle%
 7470  SYS"Font_SetFont",handle%
 7480ENDIF
 7490m0%=x0%DIVc_width%
 7500m1%=x1%DIVc_width%
 7510d1%=(-y0%)DIVc_height%
 7520d0%=(-y1%)DIVc_height%
 7530FOR m%=m0% TO m1%
 7540  IF m%>=0 AND m%<=12 THEN
 7550    month%=((m%+this_month%+10)MOD12)+1
 7560    x_pos%=wx%+m%*c_width%
 7570    FOR d%=d0% TO d1%
 7580      IF d%>=sd%(m%) AND d%<sd%(m%)+mml%(m%) THEN
 7590        y_pos%=wy%-d%*c_height%
 7600        date%=d%-sd%(m%)+1
 7610        IF opt1% THEN
 7620          f_col%=0
 7630        ELSE
 7640          f_col%=c_colour%(m%,date%)
 7650          IF f_col%=0 AND weekends=TRUE AND (d%MOD7=0 OR d%MOD7=6) THEN f_col%=1
 7660        ENDIF
 7670        IF font_col%<>f_col% AND fonts THEN
 7680          SYS"ColourTrans_SetFontColours",0,!(deskpal%+f_col%*4),!(deskpal%+b_col%(f_col%)*4),6
 7690          font_col%=f_col%
 7700        ENDIF
 7710        IF f_col% THEN
 7720          SYS"ColourTrans_SetGCOL",!(deskpal%+(f_col%*4))
 7730          RECTANGLE FILL x_pos%,y_pos%,c_width%,-c_height%
 7740        ENDIF
 7750        SYS"ColourTrans_SetGCOL",deskpal%!28
 7760        RECTANGLE x_pos%,y_pos%,c_width%,-c_height%
 7770        IF b_col%(f_col%)=0 AND fonts=0 THEN SYS"ColourTrans_SetGCOL",!deskpal%
 7780        PROCprint(STR$(date%),x_pos%+8,y_pos%-8)
 7790        IF c_first%(m%,date%)>-1 AND opt0%=FALSE THEN PROCprint(FNsnip(c_entry$(c_first%(m%,date%)),c_width%-50),x_pos%+46,y_pos%-8)
 7800      ENDIF
 7810    NEXT d%
 7820  ENDIF
 7830NEXT m%
 7840IF fonts THEN SYS"Font_LoseFont",handle%
 7850=0
 7860
 7870DEF FNsnip(st$,max%)
 7880WHILE FNstring_width(st$)>max%
 7890  st$=LEFT$(st$,LENst$-1)
 7900ENDWHILE
 7910=st$
 7920
 7930DEF PROCprint(st$,x%,y%)
 7940IF fonts THEN
 7950  SYS"Font_Paint",handle%,st$,%10100,x%,y%-20
 7960ELSE
 7970  MOVE x%,y%
 7980  PRINTst$
 7990ENDIF
 8000ENDPROC
 8010
 8020DEF FNstring_width(st$)
 8030LOCAL width%,x0%,x1%
 8040IF fonts THEN
 8050  SYS"Font_StringBBox",handle%,st$ TO ,x0%,,x1%
 8060  width%=x1%-x0%
 8070  SYS"Font_ConverttoOS",,width% TO ,width%
 8080ELSE
 8090  width%=LENst$*16
 8100ENDIF
 8110=width%
 8120
 8130DEF FNclick_c_horz
 8140=0
 8150
 8160DEF FNredraw_c_horz
 8170IF fonts THEN
 8180  SYS"Font_FindFont",,"Trinity.Medium",12*16,12*16,0,0 TO handle%
 8190  SYS"Font_SetFont",handle%
 8200  SYS"ColourTrans_SetFontColours",0,!deskpal%,deskpal%!28,6
 8210ELSE
 8220  SYS"ColourTrans_SetGCOL",deskpal%!28
 8230ENDIF
 8240m0%=x0%DIVc_width%
 8250m1%=x1%DIVc_width%
 8260y_pos%=wy%-8+p_y1%
 8270FOR m%=m0% TO m1%
 8280  IF m%>=0 AND m%<=12 THEN
 8290    month%=((m%+this_month%+10)MOD12)+1
 8300    PROCprint(month$(month%),wx%+m%*c_width%+(c_width%-FNstring_width(month$(month%)))/2,y_pos%)
 8310  ENDIF
 8320NEXT m%
 8330IF fonts THEN SYS"Font_LoseFont",handle%
 8340=0
 8350
 8360DEF FNclick_c_vert
 8370=0
 8380
 8390DEF FNredraw_c_vert
 8400IF fonts THEN
 8410  SYS"Font_FindFont",,"Trinity.Medium",12*16,12*16,0,0 TO handle%
 8420  SYS"Font_SetFont",handle%
 8430  SYS"ColourTrans_SetFontColours",0,!deskpal%,deskpal%!28,6
 8440ELSE
 8450  SYS"ColourTrans_SetGCOL",deskpal%!28
 8460ENDIF
 8470d1%=(-y0%)DIVc_height%
 8480d0%=(-y1%)DIVc_height%
 8490x_pos%=wx%+8+p_x0%
 8500FOR d%=d0% TO d1%
 8510  IF d%>=0 AND d%<=36 THEN PROCprint(day$(d%MOD7),x_pos%,wy%-(d%*c_height%+8))
 8520NEXT d%
 8530IF fonts THEN SYS"Font_LoseFont",handle%
 8540=0
 8550
 8560DEF FNpremenu_day
 8570FOR i%=0 TO 15
 8580  PROCselecticon(w%(colours%),i%,(c_colour%(d_month%,d_date%)=i%))
 8590NEXT i%
 8600c_chosen%=c_colour%(d_month%,d_date%)
 8610=0
 8620
 8630DEF FNmenu_day
 8640CASE !blk% OF
 8650  WHEN 1 : PROCadd_e
 8660  WHEN 2 : PROCstart_multi(day%)
 8670ENDCASE
 8680=0
 8690
 8700DEF FNclick_day
 8710mx%-=wx%(day%)
 8720my%-=wy%(day%)
 8730next%=c_first%(d_month%,d_date%)
 8740e%=0
 8750WHILE next%<>-1
 8760  PROCcalc_d_ords(e%)
 8770  IF mx%>!d_icon% AND my%>d_icon%!4 AND mx%<d_icon%!8 AND my%<d_icon%!12 THEN
 8780    link%=-1
 8790    FOR i%=0 TO 1
 8800      IF mx%>!l_icon%(i%) AND mx%<l_icon%(i%)!8 AND c_link%(i%,next%)>0 THEN link%=i%
 8810    NEXT i%
 8820    CASE link% OF
 8830      WHEN 0
 8840        l_name%=-1
 8850        FOR n%=1 TO names%
 8860          IF a_num%(n%)=c_link%(0,next%) THEN l_name%=n%
 8870        NEXT n%
 8880        IF l_name%>0 THEN
 8890          PROCset_a(l_name%)
 8900          PROCopenup(w%(address%))
 8910        ELSE
 8920          PROCreport("Linked address has been deleted.")
 8930        ENDIF
 8940      WHEN 1
 8950        l_note%=-1
 8960        FOR n%=1 TO notes%
 8970          IF n_num%(n%)=c_link%(1,next%) THEN l_note%=n%
 8980        NEXT n%
 8990        IF l_note%>0 THEN
 9000          PROCset_n(l_note%)
 9010          PROCopenup(w%(notepad%))
 9020        ELSE
 9030          PROCreport("Linked note has been deleted.")
 9040        ENDIF
 9050      WHEN -1
 9060        PROCset_e(next%)
 9070    ENDCASE
 9080  ENDIF
 9090  next%=c_next%(next%)
 9100  e%+=1
 9110ENDWHILE
 9120=0
 9130
 9140DEF FNredraw_day
 9150next%=c_first%(d_month%,d_date%)
 9160e%=0
 9170WHILE next%<>-1
 9180  PROCcalc_d_ords(e%)
 9190  IF c_type%(next%)AND256 THEN time$=FNtime(c_time%(next%))+" " ELSE time$=""
 9200  $(d_icon%!20)=time$+c_entry$(next%)
 9210  $(d_icon%!24)="S"+e_icon$(c_type%(next%)AND255)
 9220  SYS"Wimp_PlotIcon",,d_icon%
 9230  FOR i%=0 TO 1
 9240    IF c_link%(i%,next%) THEN
 9250      l_icon%(i%)!4=d_icon%!4
 9260      l_icon%(i%)!12=d_icon%!12
 9270      SYS"Wimp_PlotIcon",,l_icon%(i%)
 9280    ENDIF
 9290  NEXT i%
 9300  next%=c_next%(next%)
 9310  e%+=1
 9320ENDWHILE
 9330=0
 9340
 9350DEF FNopen_letter
 9360IF NOTactive%(letter%) THEN
 9370  PROCcalc_l
 9380  l_selected%=0
 9390ENDIF
 9400=0
 9410
 9420DEF FNredraw_letter
 9430IF letters% THEN
 9440  FOR l%=1 TO letters%
 9450    PROCcalc_l_ords(l%)
 9460    IF l_icon%!4<=y1% AND l_icon%!12>=y0% THEN
 9470      name%=l_list%(l%)
 9480      $(l_icon%!20)=" "+a$(name%,name)+STRING$(32-LENa$(name%,name)," ")+a$(name%,sent)+STRING$(15-LENa$(name%,sent)," ")+a$(name%,rec)
 9490      SYS"Wimp_PlotIcon",,l_icon%
 9500    ENDIF
 9510  NEXT l%
 9520ENDIF
 9530=0
 9540
 9550DEF FNmenu_letter
 9560IF !blk%=0 THEN PROCstart_multi(letter%)
 9570=0
 9580
 9590DEF FNclick_letter
 9600mx%-=wx%(letter%)
 9610my%-=wy%(letter%)
 9620IF letters% THEN
 9630  new%=0
 9640  FOR l%=1 TO letters%
 9650    PROCcalc_l_ords(l%)
 9660    IF !l_icon%<=mx% AND l_icon%!4<=my% AND l_icon%!8>=mx% AND l_icon%!12>=my% THEN new%=l_list%(l%)
 9670  NEXT l%
 9680  PROCl_select(new%)
 9690ENDIF
 9700=0
 9710
 9720DEF FNmenu_unknown
 9730CASE openmenu% OF
 9740  WHEN index_menu%
 9750    IF !blk%>=0 AND blk%!4>=0 THEN PROCset_a(?(!(sub_index%+40+blk%!4*24)-1)+1)
 9760  WHEN recordmenu%
 9770    CASE !blk% OF
 9780      WHEN 0 : PROCnew_l_sr(FNdate(this_date%,this_month%,this_year%))
 9790      WHEN 1 : PROCnew_l_sr(FNdate(this_date%-1,this_month%,this_year%))
 9800      WHEN 2 : PROCnew_l_sr($other%)
 9810    ENDCASE
 9820ENDCASE
 9830=0
 9840
 9850DEF PROCnew_l_sr(new$)
 9860IF new$<>a$(l_selected%,sent+r_which%) THEN
 9870  a$(l_selected%,sent+r_which%)=new$
 9880  FOR l%=1 TO letters%
 9890    IF l_list%(l%)=l_selected% THEN
 9900      PROCcalc_l_ords(l%)
 9910      SYS"Wimp_ForceRedraw",w%(letter%),!l_icon%,l_icon%!4,l_icon%!8,l_icon%!12
 9920    ENDIF
 9930  NEXT l%
 9940  PROCset_l_data
 9950  a_changed%=TRUE
 9960ENDIF
 9970ENDPROC
 9980
 9990DEF PROCmenu_warning(sub_menu%,sub_x%,sub_y%,menu%)
10000CASE openmenu% OF
10010  WHEN index_menu%
10020    c%=ASC($(index_menu%+40+menu%*24))-64
10030    ptr%=sub_index%
10040    PROCmenutitle("Select",ptr%)
10050    sub%=sub_block%
10060    FOR name%=1 TO names%
10070      IF g%(name%)=c% THEN
10080        ?sub%=name%-1
10090        len%=LEN(a$(name%,name))
10100        $(sub%+1)=a$(name%,name)
10110        ptr%+=24
10120        !ptr%=0
10130        ptr%!4=0
10140        ptr%!8=(7<<24) OR (%100010001)
10150        ptr%!12=sub%+1
10160        ptr%!16=-1
10170        ptr%!20=len%+1
10180        IF len%>max% THEN max%=len%
10190        sub%+=len%+2
10200      ENDIF
10210    NEXT name%
10220    PROCendmenu(ptr%)
10230    SYS"Wimp_CreateSubMenu",,sub_menu%,sub_x%,sub_y%
10240ENDCASE
10250ENDPROC
10260
10270REM ----Non Wimp routines----
10280
10290DEF PROCprint_year
10300SYS "XPDriver_Info" TO ;flags%
10310IF flags% AND 1 THEN PROCreport("Printer manager not installed."):ENDPROC
10320SYS"Hourglass_On"
10330pf%=OPENOUT("printer:")
10340SYS"PDriver_SelectJob",pf%,"Planner"
10350LOCAL ERROR
10360ON ERROR LOCAL:RESTORE ERROR:SYS "PDriver_AbortJob",pf%:CLOSE#pf%:SYS"Hourglass_Off":PROCreport(REPORT$):ENDPROC
10370SYS"PDriver_PageSize" TO ,w%,h%,l%,b%,r%,t%
10380opt0%=FNselected(w%(print%),2)
10390opt1%=NOT(FNselected(w%(print%),3))
10400times%=-FNselected(w%(print%),6)
10410wx%=-p_x0%:wy%=-p_y0%
10420!rect%=0:rect%!4=0
10430rect%!8=p_x1%-p_x0%:rect%!12=p_y1%-p_y0%
10440!trans%=0:trans%!4=-(1<<15)*(1+times%)*0.8
10450trans%!8=(1<<15)*(1+times%)*0.8:trans%!12=0
10460FOR time%=0 TO times%
10470  !plotat%=b%:plotat%!4=t%+(t%-(b%+8000))*time%
10480  SYS"PDriver_GiveRectangle",0,rect%,trans%,plotat%,&FFFFFF00
10490  SYS"PDriver_DrawPage",1,blk%,0,0 TO more%
10500  WHILE more%
10510    x0%=!blk%-wx%
10520    y0%=blk%!4-wy%
10530    x1%=blk%!8-wx%
10540    y1%=blk%!12-wy%
10550    d%=FNredraw_year
10560    d%=FNredraw_c_horz
10570    d%=FNredraw_c_vert
10580    SYS"PDriver_GetRectangle",,blk% TO more%
10590  ENDWHILE
10600NEXT time%
10610SYS"PDriver_EndJob",pf%
10620RESTORE ERROR
10630CLOSE#pf%
10640SYS"Hourglass_Off"
10650PROCclosemenu
10660ENDPROC
10670
10680DEF PROCinsert
10690insptr%=insdata%
10700IF FNselected(w%(insert%),2) THEN PROCadd_ins(a$(this_name%,name))
10710IF FNselected(w%(insert%),3) THEN
10720  FOR i%=address TO phone-1
10730    PROCadd_ins(a$(this_name%,i%))
10740  NEXT i%
10750ENDIF
10760IF FNselected(w%(insert%),4) THEN PROCadd_ins(a$(this_name%,phone))
10770IF FNselected(w%(insert%),5) THEN PROCadd_ins(a$(this_name%,other))
10780IF FNselected(w%(insert%),6) THEN PROCadd_ins(a$(this_name%,dob))
10790inslen%=insptr%
10800insptr%=insdata%
10810PROCclosemenu
10820a_changed%=TRUE
10830ENDPROC
10840
10850DEF PROCadd_ins(st$)
10860IF LENst$ THEN
10870  $insptr%=st$
10880  insptr%+=LENst$+1
10890ENDIF
10900ENDPROC
10910
10920DEF PROCnew_settings
10930old%=s_changed%
10940PROCsetting_change(14,weekends)
10950PROCsetting_change(2,today)
10960PROCsetting_change(3,fonts)
10970PROCsetting_change(4,beep)
10980new%=FNiconval(w%(settings%),8)
10990IF new%<>birthday THEN
11000  birthday=new%
11010  s_changed%=TRUE
11020ENDIF
11030new$=FNicontext(w%(settings%),12)
11040IF new$<>other$ THEN
11050  other$=new$
11060  s_changed%=TRUE
11070  PROCseticontext(w%(address%),10,other$+":")
11080ENDIF
11090IF s_changed%<>old% AND active%(year%) THEN PROCforceredraw(w%(year%))
11100ENDPROC
11110
11120DEF PROCsetting_change(icon%,RETURN val)
11130new=FNselected(w%(settings%),icon%)
11140IF new<>val THEN
11150  val=new
11160  s_changed%=TRUE
11170ENDIF
11180ENDPROC
11190
11200DEF PROCc_birthdays
11210REPEAT
11220  b_person%+=1
11230  IF b_person%>names% THEN
11240    b_person%=0
11250    b_days%+=1
11260    a_date%+=1
11270    IF a_date%>mml%(a_month%) THEN
11280      a_date%=1
11290      a_month%+=1
11300    ENDIF
11310  ELSE
11320    IF flag%(b_person%)AND2 THEN
11330      st$=a$(b_person%,dob)+"."
11340      d%=FNnext_number(st$)
11350      m%=FNnext_number(st$)
11360      IF d%=a_date% AND m%=((a_month%+this_month%-2)MOD12)+1 THEN PROCbirthday(b_person%,a_date%,a_month%,b_days%)
11370    ENDIF
11380  ENDIF
11390UNTIL active%(birthday%) OR b_days%>birthday
11400b_checking%=active%(birthday%)
11410ENDPROC
11420
11430DEF PROCbirthday(person%,date%,month%,days%)
11440PROCseticontext(w%(birthday%),2,FNdate(date%,month%+this_month%-1,this_year%))
11450PROCseticontext(w%(birthday%),3,a$(person%,name))
11460PROCopenincentre(w%(birthday%))
11470ENDPROC
11480
11490DEF FNnext_number(RETURN st$)
11500LOCAL num%
11510num%=0
11520WHILE LEFT$(st$,1)>="0" AND LEFT$(st$,1)<="9"
11530  num%=VAL(LEFT$(st$,1))+num%*10
11540  st$=MID$(st$,2)
11550ENDWHILE
11560st$=MID$(st$,2)
11570=num%
11580
11590DEF PROCc_alarms2
11600a_next%=c_first%(1,this_date%)
11610alarm_set%=0
11620WHILE a_next%<>-1
11630  IF (c_type%(a_next%)AND255)=3 AND (alarm_set%=0 OR c_time%(a_next%)<c_time%(alarm_set%)) THEN alarm_set%=a_next%
11640  a_next%=c_next%(a_next%)
11650ENDWHILE
11660ENDPROC
11670
11680DEF PROCc_alarms
11690a_checking%=TRUE
11700REPEAT
11710  IF a_next%=0 THEN a_next%=c_first%(a_month%,a_date%) ELSE a_next%=c_next%(a_next%)
11720  IF a_next%=-1 THEN
11730    a_date%+=1
11740    IF a_date%>mml%(a_month%) THEN
11750      a_date%=1
11760      a_month%+=1
11770    ENDIF
11780    a_next%=0
11790  ELSE
11800    IF (c_type%(a_next%)AND255)=3 THEN PROCalarm(a_next%,a_date%,a_month%)
11810  ENDIF
11820UNTIL active%(alarm%) OR (a_date%=this_date% AND a_month%=1)
11830a_checking%=active%(alarm%)
11840IF a_checking%=FALSE THEN
11850  PROCc_alarms2
11860  b_person%=0
11870  b_days%=0
11880  PROCc_birthdays
11890ENDIF
11900ENDPROC
11910
11920DEF PROCalarm(pos%,date%,month%)
11930PROCdial("999999")
11940c_type%(pos%)=c_type%(pos%)AND256
11950time$=FNdate(date%,month%+this_month%-1,this_year%)
11960time$=LEFT$(time$,LENtime$-3)
11970IF c_type%(pos%)AND256 THEN time$=FNtime(c_time%(pos%))+", "+time$
11980PROCseticontext(w%(alarm%),2,time$)
11990PROCseticontext(w%(alarm%),3,c_entry$(pos%))
12000PROCopenincentre(w%(alarm%))
12010IF a_checking%=FALSE THEN PROCc_alarms2
12020ENDPROC
12030
12040DEF PROCopen_search(type%)
12050search_type%=type%
12060PROCseticontext(w%(search%),0,"")
12070PROCopenwindowasmenu(w%(search%))
12080ENDPROC
12090
12100DEF PROCsearch(rec%,inc%)
12110st$=FNicontext(w%(search%),0)
12120CASE search_type% OF
12130  WHEN 1
12140    PROCget_n_data
12150    max%=notes%
12160  WHEN 2
12170    PROCget_a_data
12180    max%=names%
12190ENDCASE
12200match%=FALSE
12210rec%+=inc%
12220WHILE match%=FALSE AND rec%>=1 AND rec%<=max%
12230  CASE search_type% OF
12240    WHEN 1
12250      FOR n%=0 TO 5
12260        IF FNmatch(note$(rec%,n%),st$) THEN match%=TRUE
12270      NEXT n%
12280    WHEN 2
12290      FOR type=name TO dob
12300        IF FNmatch(a$(rec%,type),st$) THEN match%=TRUE
12310      NEXT type
12320  ENDCASE
12330  IF match%=FALSE THEN rec%+=inc%
12340ENDWHILE
12350IF match% THEN
12360  CASE search_type% OF
12370    WHEN 1 : PROCset_n(rec%)
12380    WHEN 2 : PROCset_a(rec%)
12390  ENDCASE
12400ELSE
12410  PROCclosewindow(w%(search%))
12420ENDIF
12430ENDPROC
12440
12450DEF FNmatch(st$,search$)
12460LOCAL match%,i%,i2%
12470match%=FALSE
12480i%=INSTR(search$,"*")
12490IF i%>0 THEN
12500  i2%=INSTR(st$,LEFT$(search$,i%-1))
12510  IF i2%>0 THEN match%=FNmatch(MID$(st$,i2%+i%),MID$(search$,i%+1))
12520ELSE
12530  IF INSTR(st$,search$) THEN match%=TRUE
12540ENDIF
12550=match%
12560
12570DEF PROCset_n(new%)
12580IF active%(notepad%) AND this_note%>-1 THEN PROCget_n_data
12590IF (new%<>this_note% OR active%(notepad%)=FALSE) AND new%<>-1 THEN
12600  this_note%=new%
12610  FOR i%=0 TO 5
12620    PROCseticontext(w%(notepad%),i%+1,note$(this_note%,i%))
12630  NEXT i%
12640  PROCresetcaret(w%(notepad%),-1)
12650  IF active%(notepad%)=FALSE THEN PROCopenup(w%(notepad%))
12660  PROCset_n_scroll
12670ENDIF
12680IF new%=-1 THEN PROCclosewindow(w%(notepad%))
12690ENDPROC
12700
12710DEF PROCget_n_data
12720FOR i%=0 TO 5
12730  new$=FNicontext(w%(notepad%),i%+1)
12740  IF new$<>note$(this_note%,i%) THEN
12750    note$(this_note%,i%)=new$
12760    n_changed%=TRUE
12770  ENDIF
12780NEXT i%
12790ENDPROC
12800
12810DEF PROCblank_n
12820FOR i%=0 TO 5
12830  note$(this_note%,i%)=""
12840NEXT i%
12850ENDPROC
12860
12870DEF PROCinc_n(inc%)
12880IF this_note%+inc%>=1 AND this_note%+inc%<=notes% THEN PROCset_n(this_note%+inc%)
12890ENDPROC
12900
12910DEF PROCdrag_n
12920n_off%=mx%-n_s5%
12930PROCstartuserdrag(notepad%,0,n_s0%+n_off%,my%,n_s4*(notes%-1)+n_s0%+n_off%,my%)
12940ENDPROC
12950
12960DEF PROCset_n_scroll
12970PROCdeleteicon(w%(notepad%),n_si%)
12980n_s4=(n_s1%/notes%)
12990n_s5%=n_s0%+n_s4*(this_note%-1)
13000!q%=w%(notepad%)
13010q%!4=n_s5%
13020q%!8=n_s2%
13030q%!12=q%!4+n_s4
13040q%!16=n_s3%
13050q%!20=n_sf%
13060SYS"Wimp_CreateIcon",,q% TO n_si%
13070PROCredoicon(w%(notepad%),9)
13080ENDPROC
13090
13100DEF PROCadd_n
13110IF notes%<max_n% THEN
13120  notes%+=1
13130  PROCset_n(notes%)
13140  last_n%+=1
13150  n_num%(notes%)=last_n%
13160  PROCputcaret(w%(notepad%),1,0)
13170ELSE
13180  PROCreport("Too many notes.")
13190ENDIF
13200ENDPROC
13210
13220DEF PROCdelete_n
13230PROCblank_n
13240temp%=this_note%
13250WHILE temp%<notes%
13260  FOR i%=0 TO 5
13270    note$(temp%,i%)=note$(temp%+1,i%)
13280  NEXT i%
13290  n_num%(temp%)=n_num%(temp%+1)
13300  temp%+=1
13310ENDWHILE
13320temp%=this_note%-1
13330IF temp%=0 THEN temp%=1
13340this_note%=-1
13350IF notes%>1 THEN notes%-=1
13360PROCset_n(temp%)
13370ENDPROC
13380
13390DEF PROCremove_e(m%,d%,e%)
13400next%=c_first%(m%,d%)
13410IF next%=e% THEN
13420  c_first%(m%,d%)=c_next%(e%)
13430ELSE
13440  WHILE c_next%(next%)<>e%
13450    next%=c_next%(next%)
13460  ENDWHILE
13470  c_next%(next%)=c_next%(e%)
13480ENDIF
13490ENDPROC
13500
13510DEF PROCinsert_e(m%,d%,e%)
13520after%=-1
13530next%=c_first%(m%,d%)
13540c_next%(e%)=e%
13550IF c_type%(e%)AND256 THEN
13560  WHILE next%>-1
13570    IF c_time%(e%)>c_time%(next%) AND c_type%(next%)>=256 THEN after%=next%
13580    next%=c_next%(next%)
13590  ENDWHILE
13600ELSE
13610  WHILE next%>-1
13620    IF c_type%(next%)>c_type%(e%) THEN after%=next%
13630    next%=c_next%(next%)
13640  ENDWHILE
13650ENDIF
13660IF after%=-1 THEN
13670  SWAP c_first%(m%,d%),c_next%(e%)
13680ELSE
13690  SWAP c_next%(e%),c_next%(after%)
13700ENDIF
13710e_changed%=TRUE
13720ENDPROC
13730
13740DEF PROCmark_birthday
13750st$=a$(this_name%,dob)+"."
13760d%=FNnext_number(st$)
13770m%=FNnext_number(st$)
13780IF d%>=1 AND d%<=31 AND m%>=1 AND m%<=12
13790m%=((12+m%-this_month%)MOD12)+1
13800IF c_last%<c_max% THEN
13810  c_last%+=1
13820  c_entry$(c_last%)=LEFT$(a$(this_name%,name),INSTR(a$(this_name%,name)," ")-1)+"'s birthday"
13830  c_type%(c_last%)=1
13840  c_time%(c_last%)=0
13850  c_link%(0,c_last%)=a_num%(this_name%)
13860  c_link%(1,c_last%)=0
13870  PROCinsert_e(m%,d%,c_last%)
13880  IF d_month%=m% AND d_date%=d% AND active%(day%) THEN PROCforceredraw(w%(day%))
13890  c_changed%=TRUE
13900  PROCredo_c(m%,d%)
13910ELSE
13920  PROCreport("Book of days is full.")
13930ENDIF
13940ENDPROC
13950
13960DEF PROCadd_e
13970IF c_last%<c_max% THEN
13980  c_last%+=1
13990  IF d_items%=0 THEN
14000    c_first%(d_month%,d_date%)=c_last%
14010  ELSE
14020    last%=c_first%(d_month%,d_date%)
14030    WHILE c_next%(last%)<>-1
14040      last%=c_next%(last%)
14050    ENDWHILE
14060    c_next%(last%)=c_last%
14070  ENDIF
14080  c_entry$(c_last%)=""
14090  c_type%(c_last%)=0
14100  c_time%(c_last%)=0
14110  c_next%(c_last%)=-1
14120  c_link%(0,c_last%)=0
14130  c_link%(1,c_last%)=0
14140  PROCset_e(c_last%)
14150  PROCcalc_d
14160ELSE
14170  PROCreport("Book of days is full.")
14180ENDIF
14190ENDPROC
14200
14210DEF PROCget_e
14220e_changed%=FALSE
14230o_entry$=c_entry$(this_entry%)
14240o_time%=c_time%(this_entry%)
14250o_type%=c_type%(this_entry%)
14260c_entry$(this_entry%)=FNicontext(w%(entry%),0)
14270FOR i%=0 TO 7
14280  IF FNselected(w%(entry%),e_icon%(i%)) THEN c_type%(this_entry%)=i%
14290NEXT i%
14300IF FNselected(w%(entry%),14) THEN c_type%(this_entry%)=c_type%(this_entry%)OR256 ELSE e_time%=0
14310c_time%(this_entry%)=e_time%
14320IF o_time%<>c_time%(this_entry%) OR o_type%<>c_type%(this_entry%) THEN
14330  PROCremove_e(d_month%,d_date%,this_entry%)
14340  PROCinsert_e(d_month%,d_date%,this_entry%)
14350ELSE
14360  IF o_entry$<>c_entry$(this_entry%) THEN e_changed%=TRUE
14370ENDIF
14380IF e_changed% THEN
14390  PROCforceredraw(w%(day%))
14400  PROCredo_c(d_month%,d_date%)
14410  c_changed%=TRUE
14420ENDIF
14430IF d_month%=1 AND d_date%=this_date% THEN PROCc_alarms2
14440ENDPROC
14450
14460DEF PROCset_e(new%)
14470IF new%<>-1 THEN
14480  IF active%(entry%)=FALSE THEN PROCopenup(w%(entry%))
14490  PROCseticontext(w%(entry%),0,c_entry$(new%))
14500  PROCputcaret(w%(entry%),0,LENc_entry$(new%))
14510  PROCset_e_time(c_time%(new%))
14520  FOR i%=0 TO 7
14530    PROCselecticon(w%(entry%),e_icon%(i%),(i%=(c_type%(new%)AND255)))
14540  NEXT i%
14550  PROCselecticon(w%(entry%),14,c_type%(new%)AND256)
14560ELSE
14570  PROCclosewindow(w%(entry%))
14580ENDIF
14590this_entry%=new%
14600ENDPROC
14610
14620DEF PROCset_e_time(e%)
14630PROCseticontext(w%(entry%),7,FNtime(e%))
14640e_time%=e%
14650ENDPROC
14660
14670DEF FNtime(time%)
14680=RIGHT$("0"+STR$(time%DIV60),2)+":"+RIGHT$("0"+STR$(time%MOD60),2)
14690
14700DEF FNday(date%,month%,year%)
14710=(date%+year%+(year%DIV4)+mo%(month%)+(year%MOD4=0 AND month%<=2))MOD7
14720
14730DEF FNdate(date%,month%,year%)
14740IF year%MOD4=0 THEN ml%(2)=29
14750IF date%<1 THEN month%-=1
14760IF month%>12 THEN
14770  month%-=12
14780  year%+=1
14790ENDIF
14800IF month%<1 THEN
14810  month%+=12
14820  year%-=1
14830ENDIF
14840IF date%<1 THEN date%=ml%(month%)
14850=day$(FNday(date%,month%,year%))+" "+STR$(date%)+" "+LEFT$(month$(month%),3)+" "+STR$(year%)
14860
14870DEF PROCnew_day(d%,m%)
14880IF d%<>d_date% OR m%<>d_month% THEN
14890  d_month%=m%
14900  d_date%=d%
14910  PROCcalc_d
14920  t_date$=FNdate(d_date%,d_month%+this_month%-1,this_year%)
14930  PROCnewtitle(w%(day%),t_date$)
14940  IF active%(entry%) THEN PROCclosewindow(w%(entry%))
14950  PROCnewtitle(w%(entry%),t_date$)
14960ENDIF
14970PROCopenup(w%(day%))
14980ENDPROC
14990
15000DEF PROCredo_c(m%,d%)
15010d%=d%-1+sd%(m%)
15020PROCredobox(w%(year%),m%*c_width%,-(d%*c_height%+c_height%),m%*c_width%+c_width%,-d%*c_height%)
15030ENDPROC
15040
15050DEF PROCcalc_d
15060d_items%=0
15070next%=c_first%(d_month%,d_date%)
15080WHILE next%<>-1
15090  d_items%+=1
15100  next%=c_next%(next%)
15110ENDWHILE
15120PROCsetwindowextent(w%(day%),!d_icon%-8,-d_height%*d_items%,d_icon%!8+8,0)
15130PROCreopen(w%(day%))
15140ENDPROC
15150
15160DEF PROCcalc_d_ords(e%)
15170d_icon%!4=-(e%+1)*d_height%
15180d_icon%!12=d_icon%!4+d_height%
15190ENDPROC
15200
15210DEF PROCload_c
15220c_file$=dir$+".Days"
15230IF FNfileexist(c_file$) THEN
15240  in_file=OPENIN(c_file$)
15250  mf%=this_month%+this_year%*12-1
15260  WHILE NOTEOF#in_file
15270    INPUT#in_file,m%
15280    INPUT#in_file,d%
15290    INPUT#in_file,colour%
15300    INPUT#in_file,end%
15310    m%-=mf%
15320    IF m%>=0 AND m%<=12 THEN
15330      c_colour%(m%,d%)=colour%
15340      prev%=-1
15350      WHILE PTR#in_file<>end%
15360        c_last%+=1
15370        INPUT#in_file,c_entry$(c_last%)
15380        INPUT#in_file,c_type%(c_last%)
15390        INPUT#in_file,c_time%(c_last%)
15400        INPUT#in_file,c_link%(0,c_last%)
15410        INPUT#in_file,c_link%(1,c_last%)
15420        c_next%(c_last%)=-1
15430        IF prev%=-1 THEN c_first%(m%,d%)=c_last% ELSE c_next%(prev%)=c_last%
15440        prev%=c_last%
15450      ENDWHILE
15460    ELSE
15470      PTR#in_file=end%
15480    ENDIF
15490  ENDWHILE
15500  CLOSE#in_file
15510ENDIF
15520c_changed%=FALSE
15530ENDPROC
15540
15550DEF PROCsave_c
15560out_file=OPENOUT(c_file$)
15570mf%=this_month%+this_year%*12-1
15580FOR m%=0 TO 12
15590  FOR d%=1 TO mml%(m%)
15600    IF c_colour%(m%,d%)>0 OR c_first%(m%,d%)>-1 THEN
15610      PRINT#out_file,m%+mf%
15620      PRINT#out_file,d%
15630      PRINT#out_file,c_colour%(m%,d%)
15640      start%=PTR#out_file
15650      PRINT#out_file,0
15660      next%=c_first%(m%,d%)
15670      WHILE next%>-1
15680        PRINT#out_file,c_entry$(next%)
15690        PRINT#out_file,c_type%(next%)
15700        PRINT#out_file,c_time%(next%)
15710        PRINT#out_file,c_link%(0,next%)
15720        PRINT#out_file,c_link%(1,next%)
15730        next%=c_next%(next%)
15740      ENDWHILE
15750      end%=PTR#out_file
15760      PTR#out_file=start%
15770      PRINT#out_file,end%
15780      PTR#out_file=end%
15790    ENDIF
15800  NEXT d%
15810NEXT m%
15820CLOSE#out_file
15830c_changed%=FALSE
15840ENDPROC
15850
15860DEF PROCl_select(new%)
15870l_selected%=new%
15880IF l_selected%=0 AND active%(record%) THEN PROCclosewindow(w%(record%))
15890IF l_selected% THEN
15900  PROCopenup(w%(record%))
15910  PROCset_l_data
15920ENDIF
15930ENDPROC
15940
15950DEF PROCset_l_data
15960PROCseticontext(w%(record%),2,a$(l_selected%,sent))
15970PROCseticontext(w%(record%),3,a$(l_selected%,rec))
15980IF type%(l_selected%)>-1 THEN
15990  PROCshadeicon(w%(record%),4,FALSE)
16000  PROCseticontext(w%(record%),4,FNlastbit(a$(l_selected%,file)))
16010  PROCsetfileicon(w%(record%),4,type%(l_selected%))
16020ELSE
16030  PROCseticontext(w%(record%),4,"<no link>")
16040  PROCseticonvalid(w%(record%),4,"Sfile_xxx")
16050  PROCshadeicon(w%(record%),4,TRUE)
16060ENDIF
16070PROCnewtitle(w%(record%),a$(l_selected%,name))
16080ENDPROC
16090
16100DEF PROCcalc_l_ords(l%)
16110l_icon%!4=l_y0%-(l%-1)*l_y1%
16120l_icon%!12=l_icon%!4+l_y1%
16130ENDPROC
16140
16150DEF PROCcalc_l
16160old%=letters%
16170l_change%=FALSE
16180letters%=0
16190FOR name%=1 TO names%
16200  IF flag%(name%)AND1 THEN
16210    letters%+=1
16220    IF l_list%(letters%)<>name% THEN l_list%(letters%)=name%
16230  ENDIF
16240NEXT name%
16250IF letters%<>old% THEN l_change%=TRUE
16260IF l_change% THEN PROCsetwindowextent(w%(letter%),!l_icon%,l_y0%-(letters%-1)*l_y1%,l_icon%!8,0)
16270IF active%(letter%) THEN PROCreopen(w%(letter%))
16280ENDPROC
16290
16300DEF PROCdial(num$)
16310SYS"Sound_Configure" TO i%
16320IF i%<2 THEN VOICES 2
16330*channelvoice 1 1
16340*channelvoice 2 1
16350SYS"Sound_QBeat",-2
16360WHILE num$<>""
16370digit%=INSTR(" 123456789*0#",LEFT$(num$,1))-2
16380IF digit%>-1 THEN
16390col%=digit%MOD3
16400row%=digit%DIV3
16410SYS"Sound_QSchedule",i%*30+5,,&FFF80001,&40000 OR col_tone%(col%)
16420SYS"Sound_QSchedule",-1,,&FFF80002,&40000 OR row_tone%(row%)
16430i%+=1
16440ENDIF
16450num$=MID$(num$,2)
16460ENDWHILE
16470ENDPROC
16480
16490DEF PROCsave_a
16500PROCget_a_data
16510out_file=OPENOUT(a_file$)
16520PRINT#out_file,last_a%
16530PRINT#out_file,names%
16540FOR name%=1 TO names%
16550  FOR type=name TO file
16560    PRINT#out_file,a$(name%,type)
16570  NEXT type
16580  PRINT#out_file,flag%(name%)
16590  PRINT#out_file,type%(name%)
16600  PRINT#out_file,a_num%(name%)
16610NEXT name%
16620CLOSE#out_file
16630a_changed%=FALSE
16640ENDPROC
16650
16660DEF PROCload_a
16670a_file$=dir$+".Address"
16680IF FNfileexist(a_file$) THEN
16690  in_file=OPENIN(a_file$)
16700  INPUT#in_file,last_a%
16710  INPUT#in_file,names%
16720  FOR name%=1 TO names%
16730    FOR type=name TO file
16740      INPUT#in_file,a$(name%,type)
16750    NEXT type
16760    INPUT#in_file,flag%(name%)
16770    INPUT#in_file,type%(name%)
16780    INPUT#in_file,a_num%(name%)
16790  NEXT name%
16800  CLOSE#in_file
16810ELSE
16820  last_a%=1
16830  names%=1
16840  this_name%=1
16850  a_num%(this_name%)=last_a%
16860  PROCget_a_data
16870ENDIF
16880a_changed%=FALSE
16890ENDPROC
16900
16910DEF PROCsort_a
16920PROCget_a_data
16930SYS"Hourglass_On"
16940FOR n%=1 TO names%
16950  ind%(n%)=n%
16960  temp$(n%)=FNlast_name(n%)
16970  temp$(n%)+=LEFT$(a$(n%,name),LENa$(n%,name)-LENtemp$(n%))
16980NEXT n%
16990REPEAT
17000  swap%=FALSE
17010  FOR n%=1 TO names%-1
17020    IF temp$(ind%(n%))>temp$(ind%(n%+1)) AND temp$(ind%(n%+1))<>"" THEN
17030      SWAP ind%(n%),ind%(n%+1)
17040      swap%=TRUE
17050    ENDIF
17060  NEXT n%
17070UNTIL swap%=FALSE
17080FOR i%=name TO file
17090  FOR n%=1 TO names%
17100    temp$(n%)=a$(n%,i%)
17110  NEXT n%
17120  FOR n%=1 TO names%
17130    a$(n%,i%)=temp$(ind%(n%))
17140  NEXT n%
17150NEXT i%
17160FOR n%=1 TO names%
17170  g%(n%)=flag%(n%)
17180NEXT n%
17190FOR n%=1 TO names%
17200  flag%(n%)=g%(ind%(n%))
17210NEXT n%
17220FOR n%=1 TO names%
17230  g%(n%)=type%(n%)
17240NEXT n%
17250FOR n%=1 TO names%
17260  type%(n%)=g%(ind%(n%))
17270NEXT n%
17280FOR n%=1 TO names%
17290  g%(n%)=a_num%(n%)
17300NEXT n%
17310FOR n%=1 TO names%
17320  a_num%(n%)=g%(ind%(n%))
17330NEXT n%
17340SYS"Hourglass_Off"
17350new%=this_name%
17360this_name%=-1
17370PROCset_a(new%)
17380IF active%(record%) THEN PROCclosewindow(w%(record%))
17390IF active%(letter%) THEN
17400  PROCcalc_l
17410  PROCforceredraw(w%(letter%))
17420ENDIF
17430ENDPROC
17440
17450DEF PROCletter_a
17460PROCshadeicon(w%(address%),25,NOT FNselected(w%(address%),24))
17470PROCget_a_data
17480IF l_selected%=this_name% AND active%(record%) THEN PROCclosewindow(w%(record%))
17490IF active%(letter%) THEN PROCcalc_l
17500ENDPROC
17510
17520DEF PROCa_index
17530a%()=0
17540ptr%=index_menu%
17550FOR name%=1 TO names%
17560  c%=ASC(FNlast_name(name%))-64
17570  IF c%>=33 AND c%<=58 THEN c%-=32
17580  IF c%>=1 AND c%<=26 THEN
17590    a%(c%)+=1
17600    g%(name%)=c%
17610  ENDIF
17620NEXT name%
17630PROCmenutitle("Index",ptr%)
17640FOR a%=1 TO 26
17650  st$=CHR$(a%+64)+">+,sub_index%,"
17660  IF a%(a%) THEN PROCmenuitem(st$,ptr%)
17670NEXT a%
17680PROCendmenu(ptr%)
17690PROCopeniconmenu(w%(address%),20,index_menu%)
17700ENDPROC
17710
17720DEF PROCdrag_a
17730a_off%=mx%-a_s5%
17740PROCstartuserdrag(address%,0,a_off%+a_s0%,my%,a_s4*(names%-1)+a_off%+a_s0%,my%)
17750ENDPROC
17760
17770DEF PROCnull
17780PROCmouseinfo
17790CASE dragid% OF
17800  WHEN address%
17810    new%=((mx%-(a_off%+a_s0%))/a_s4)+1.5
17820    IF new%<1 THEN new%=1 ELSE IF new%>names% THEN new%=names%
17830    PROCset_a(new%)
17840  WHEN notepad%
17850    new%=((mx%-(n_off%+n_s0%))/n_s4)+1.5
17860    IF new%<1 THEN new%=1 ELSE IF new%>notes% THEN new%=notes%
17870    PROCset_n(new%)
17880ENDCASE
17890IF but%=0 AND dragid%>0 THEN PROCenddrag
17900IF insptr%<inslen% THEN
17910  PROCgetcaret
17920  IF cwind%<>w%(address%) THEN
17930    SYS"Wimp_ProcessKey",?insptr%
17940    insptr%+=1
17950  ENDIF
17960ENDIF
17970ENDPROC
17980
17990DEF FNthis_time
18000!q%=1
18010SYS"OS_Word",14,q%
18020=VAL(STR$~(q%?4))*60+VAL(STR$~(q%?5))
18030
18040DEF PROCinc_a(inc%)
18050IF this_name%+inc%>=1 AND this_name%+inc%<=names% THEN PROCset_a(this_name%+inc%)
18060ENDPROC
18070
18080DEF PROCset_a(new%)
18090IF active%(address%) AND this_name%>-1 THEN PROCget_a_data
18100IF (this_name%<>new% OR active%(address%)=FALSE) AND new%<>-1 THEN
18110  this_name%=new%
18120  FOR type=name TO dob
18130    PROCseticontext(w%(address%),icon%(type),a$(this_name%,type))
18140  NEXT type
18150  PROCselecticon(w%(address%),24,flag%(this_name%)AND1)
18160  PROCselecticon(w%(address%),15,flag%(this_name%)AND2)
18170  PROCshadeicon(w%(address%),25,(NOTflag%(this_name%))AND1)
18180  PROCresetcaret(w%(address%),-1)
18190  PROCset_a_scroll
18200  IF active%(address%)=FALSE THEN PROCopenup(w%(address%))
18210ENDIF
18220IF new%=-1 THEN PROCclosewindow(w%(address%))
18230ENDPROC
18240
18250DEF PROCget_a_data
18260LOCAL new%
18270FOR type=name TO dob
18280  new$=FNicontext(w%(address%),icon%(type))
18290  IF new$<>a$(this_name%,type) THEN
18300    a_changed%=TRUE
18310    a$(this_name%,type)=new$
18320  ENDIF
18330NEXT type
18340new%=0
18350IF FNselected(w%(address%),24) THEN new%=new%OR1
18360IF FNselected(w%(address%),15) THEN new%=new%OR2
18370IF new%<>flag%(this_name%) THEN
18380  a_changed%=TRUE
18390  flag%(this_name%)=new%
18400ENDIF
18410ENDPROC
18420
18430DEF PROCset_a_scroll
18440PROCseticonval(w%(address%),21,this_name%)
18450PROCseticonval(w%(address%),23,names%)
18460PROCdeleteicon(w%(address%),a_si%)
18470a_s4=(a_s1%/names%)
18480a_s5%=a_s0%+a_s4*(this_name%-1)
18490!q%=w%(address%)
18500q%!4=a_s5%
18510q%!8=a_s2%
18520q%!12=q%!4+a_s4
18530q%!16=a_s3%
18540q%!20=a_sf%
18550SYS"Wimp_CreateIcon",,q% TO a_si%
18560PROCredoicon(w%(address%),17)
18570ENDPROC
18580
18590DEF PROCblank_a
18600FOR type=name TO file
18610  a$(this_name%,type)=""
18620NEXT type
18630flag%(this_name%)=0
18640type%(this_name%)=-1
18650ENDPROC
18660
18670DEF PROCadd_a
18680IF names%=max_a% THEN
18690  PROCreport("256 names is the maximum.")
18700ELSE
18710  names%+=1
18720  type%(names%)=-1
18730  last_a%+=1
18740  a_num%(names%)=last_a%
18750  PROCset_a(names%)
18760  PROCputcaret(w%(address%),icon%(0),0)
18770ENDIF
18780ENDPROC
18790
18800DEF PROCdelete_a
18810PROCblank_a
18820IF this_name%<names% THEN
18830  FOR a%=this_name% TO names%-1
18840    FOR type=name TO file
18850      a$(a%,type)=a$(a%+1,type)
18860    NEXT type
18870    flag%(a%)=flag%(a%+1)
18880    type%(a%)=type%(a%+1)
18890    a_num%(a%)=a_num%(a%+1)
18900  NEXT a%
18910ENDIF
18920IF names%>1 THEN names%-=1
18930IF this_name%>names% THEN this_name%=names%
18940new%=this_name%
18950this_name%=-1
18960PROCset_a(new%)
18970a_changed%=TRUE
18980ENDPROC
18990
19000DEF FNlast_name(name%)
19010LOCAL st$
19020st$=a$(name%,name)
19030WHILE INSTR(st$," ")
19040  st$=MID$(st$,INSTR(st$," ")+1)
19050ENDWHILE
19060=st$
19070
19080DEF FNfileokay(filetype%)
19090ok%=FALSE
19100PROCmouseinfo
19110CASE wind% OF
19120  WHEN w%(record%) : ok%=TRUE
19130ENDCASE
19140=ok%
19150
19160DEF PROCdo_load
19170CASE wind% OF
19180  WHEN w%(record%)
19190    type%(l_selected%)=filetype%
19200    a$(l_selected%,file)=file$
19210    PROCset_l_data
19220ENDCASE
19230ENDPROC
19240
19250REM ----WIMP Library routines----
19260
19270DEF PROCnewspritearea(RETURN sprite%,size%)
19280IF sprite%>-1 THEN PROCloseblock(sprite%)
19290sprite%=FNgetblock(size%+16)
19300IF sprite%>-1 THEN
19310!sprite%=size%+16
19320sprite%!4=0
19330sprite%!8=16
19340sprite%!12=16
19350ENDIF
19360ENDPROC
19370
19380REM ==== message routines ====
19390
19400DEF PROCpoll(poll_flags%)
19410SYS"Wimp_Poll",poll_flags%,blk% TO reason%
19420PROCsort_reason
19430ENDPROC
19440
19450DEF PROCpollidle(poll_flags%,time%)
19460SYS"Wimp_PollIdle",poll_flags%,blk%,time% TO reason%
19470PROCsort_reason
19480ENDPROC
19490
19500DEF PROCsort_reason
19510CASE reason% OF
19520  WHEN 0:IF null% THEN PROCnull
19530  WHEN 1:PROCredraw
19540  WHEN 2:PROCopenwindow
19550  WHEN 3:PROCclosewindow(!blk%)
19560  WHEN 4:IF sysflags%(FNid(!blk%))AND8 THEN d%=EVAL("FNleave_"+id$(FNid(!blk%)))
19570  WHEN 5:IF sysflags%(FNid(!blk%))AND8 THEN d%=EVAL("FNenter_"+id$(FNid(!blk%)))
19580  WHEN 6:PROCclick(!blk%,blk%!4,blk%!8,blk%!12,blk%!16)
19590  WHEN 7:PROCenddrag
19600  WHEN 8:PROCkey(!blk%,blk%!4,blk%!20,blk%!24)
19610  WHEN 9:PROCmenuselect
19620  WHEN 10:REM scroll request
19630  WHEN 11:mycaret%=FALSE
19640  WHEN 12:mycaret%=TRUE
19650  WHEN 17,18:PROCmessage(blk%!4,blk%!8,blk%!16)
19660  WHEN 19:PROCmessage_returned(blk%!16)
19670ENDCASE
19680ENDPROC
19690
19700DEF PROCmessage_returned(message%)
19710CASE message% OF
19720  WHEN 5 : SYS"Wimp_StartTask","Run "+FNstring(blk%+44)
19730ENDCASE
19740ENDPROC
19750
19760DEF PROCmessage(task%,ref%,message%)
19770IF (status%>0 AND message%>=1 AND message%<=7) OR task%=mytask% THEN message%=-1
19780CASE message% OF
19790  WHEN 0 : exit=TRUE
19800  WHEN 1
19810    wind%=blk%!20
19820    icon%=blk%!24
19830    filetype%=blk%!40
19840    IF FNfileokay(filetype%) THEN
19850      itrans%=0
19860      filesize%=blk%!36
19870      file$=FNstring(blk%+44)
19880      heapfile%=-1
19890      file%=EVAL("FNtransblock(filetype%)")
19900      IF heapfile%=-1 THEN heapfile%=file%
19910      blk%!20=file%
19920      blk%!24=filesize%
19930      IF blk%!20>-1 THEN PROCreply(18,6)
19940    ENDIF
19950  WHEN 2
19960    PROCsave(dragid%,FNstring(blk%+44),prepared%)
19970    IF saved% THEN PROCtelltoload ELSE PROCreport("Could not save file")
19980  WHEN 3 : PROCload(FNstring(blk%+44),blk%!40)
19990  WHEN 5 : PROCload(FNstring(blk%+44),blk%!40)
20000  WHEN 6
20010    togo%=filesize%-otrans%
20020    IF togo%>blk%!24 THEN togo%=blk%!24
20030    IF togo%+otrans%>filesize% THEN togo%=filesize%-otrans%
20040    SYS"Wimp_TransferBlock",mytask%,savebuff%+otrans%,task%,blk%!20,togo%
20050    blk%!24=togo%
20060    PROCreply(18,7)
20070    otrans%+=togo%
20080    IF otrans%=filesize% THEN d%=EVAL("FNfinishedtrans"+STR$~(misc%(dragid%)))
20090  WHEN 7
20100    itrans%+=blk%!24
20110    IF itrans%<filesize% THEN
20120      filesize%=itrans%
20130      d%=EVAL("FNloaded"+STR$~(filetype%))
20140    ELSE
20150      IF FNextendblock(heapfile%,1024) THEN
20160        filesize%+=1024
20170        blk%!20=file%+itrans%
20180        blk%!24=filesize%-itrans%
20190        PROCreply(18,6)
20200      ELSE
20210        PROCloseblock(file%)
20220        PROCreport("Out of room.")
20230      ENDIF
20240    ENDIF
20250  WHEN 8 : PROCprequit
20260  WHEN 10: PROCaddtobootfile(blk%!20)
20270  WHEN 9,&400C1 : PROCnewmode
20280  WHEN &400C9 :
20290    id%=FNid(blk%!20)
20300    IF id%>-1 THEN
20310      IF sysflags%(id%)AND2 THEN d%=EVAL("FNclose_"+id$(id%))
20320    ENDIF
20330  WHEN &400C0 : PROCmenu_warning(blk%!20,blk%!24,blk%!28,blk%!32)
20340ENDCASE
20350ENDPROC
20360
20370DEF PROCreply(type%,blk%!16)
20380blk%!12=ref%
20390SYS"Wimp_SendMessage",type%,blk%,task%
20400ENDPROC
20410
20420DEF PROCnewmode
20430!q%=11:q%!4=12:q%!8=4:q%!12=5:q%!16=3:q%!20=-1
20440SYS"OS_ReadVduVariables",q%,q%
20450scx%=(!q%+1)<<(q%!8)
20460scy%=(q%!4+1)<<(q%!12)
20470pixelw%=1<<q%!8:pixelh%=1<<q%!12
20480dcols%=q%!16
20490SYS"Wimp_ReadPalette",,deskpal%
20500ENDPROC
20510
20520DEF PROCprequit
20530IF a_changed% OR s_changed% OR n_changed% OR c_changed% THEN
20540  IF FNcheck("There is unsaved data, click Cancel to abort exit.")=FALSE THEN PROCreply(17,8)
20550ENDIF
20560ENDPROC
20570
20580DEF PROCaddtobootfile(handle%)
20590BPUT#file,"Run "+dir$
20600ENDPROC
20610
20620DEF PROCtelltoload
20630PROCmouseinfo
20640blk%!20=wind%
20650blk%!24=icon%
20660blk%!28=mx%
20670blk%!32=my%
20680blk%!36=filesize%
20690blk%!40=filetype%
20700PROCreply(17,3)
20710ENDPROC
20720
20730DEF PROCdropfile(filename$,filetype%,filesize%)
20740PROCmouseinfo
20750blk%!12=0
20760blk%!16=1
20770blk%!20=wind%
20780blk%!24=icon%
20790blk%!28=mx%
20800blk%!32=my%
20810blk%!36=filesize%
20820blk%!40=filetype%
20830$(blk%+44)=FNlastbit(filename$)+CHR$0
20840!blk%=(LEN$(blk%+44)+48)ANDNOT3
20850SYS"Wimp_SendMessage",17,blk%,blk%!20,blk%!24
20860otrans%=0
20870ENDPROC
20880
20890REM - Sprite routines -
20900
20910DEF PROCloadsprites
20920spritefile$=dir$+".Sprites"
20930PROCfileinfo(spritefile$)
20940IF exist%=1 THEN
20950ssize%=filesize%+16
20960DIM sprites% ssize%
20970!sprites%=ssize%
20980sprites%!4=0
20990sprites%!8=16
21000sprites%!12=16
21010SYS"OS_SpriteOp",10+256,sprites%,spritefile$
21020ELSE
21030sprites%=-1
21040ENDIF
21050ENDPROC
21060
21070DEF PROCputsprite(sprite%,sprite$,x%,y%,z1%,z2%)
21080SYS"OS_SpriteOp",24+256,sprite%,sprite$ TO ,,addr%
21090SYS"OS_SpriteOp",40+256,sprite%,sprite$ TO ,,,,,,mode%
21100s%=FNtables(addr%,mode%,spmode%,spal%,1,1,dgcol%,dscale%)
21110SYS"OS_SpriteOp",52+512,sprite%,addr%,x%,y%,8,dscale%,dgcol%
21120ENDPROC
21130
21140DEF FNtables(saddr%,spmode%,dmode%,pal%,z1%,z2%,gcol%,scale%)
21150LOCAL spal%,palblock%
21160palblock%=palblock2%
21170!scale%=(1<<FNmodevar(spmode%,4))*z1%
21180scale%!4=(1<<FNmodevar(spmode%,5))*z1%
21190scale%!8=(1<<FNmodevar(dmode%,4))*z2%
21200scale%!12=(1<<FNmodevar(dmode%,5))*z2%
21210spritepal%=(saddr%!32<>44)
21220scols%=FNmodevar(spmode%,3)
21230IF saddr%!32<>44 THEN spal%=FNspritepalette(saddr%) ELSE spal%=FNwpal(spmode%)
21240s%=FALSE
21250SYS"ColourTrans_SelectTable",spmode%,spal%,dmode%,pal%,gcol%
21260IF !scale%=scale%!8 AND scale%!4=scale%!12 AND FNmodevar(spmode%,3)=FNmodevar(dmode%,3) THEN
21270  cols%=FNmodevar(dmode%,3)
21280  IF cols%=63 THEN cols%=255
21290  s%=TRUE
21300  FOR c%=0 TO cols%
21310    IF gcol%?c%<>c% THEN s%=FALSE
21320  NEXT c%
21330ENDIF
21340=s%
21350
21360DEF FNspritepalette(saddr%)
21370cols%=FNmodevar(spmode%,3)
21380IF cols%>15 THEN cols%=15
21390FOR c%=0 TO cols%
21400palblock%!(c%<<2)=saddr%!(44+(c%<<3))
21410NEXT c%
21420=palblock%
21430
21440DEF PROCcopypalette(faddr%,taddr%)
21450FOR a%=44 TO faddr%!32-4 STEP 4
21460  taddr%!a%=faddr%!a%
21470NEXT a%
21480ENDPROC
21490
21500REM - file handling -
21510
21520DEF PROCfileinfo(file$)
21530SYS"OS_File",5,file$ TO exist%,,,,filesize%
21540ENDPROC
21550
21560DEF FNfilesize(file$)
21570LOCAL exist%,filesize%
21580PROCfileinfo(file$)
21590=filesize%
21600
21610DEF FNfileexist(file$)
21620LOCAL exist%,filesize%
21630PROCfileinfo(file$)
21640=exist%
21650
21660DEF FNloadtemplate(title$)
21670SYS"Wimp_LoadTemplate",,blk%,ind%,indend%,fonttable%,title$ TO ,,ind%,,,,found%
21680IF found%=0 THEN
21690  PROCreport("Window "+title$+" not found.")
21700  wind%=0
21710ELSE
21720  IF sprites%<>-1 THEN blk%!64=sprites%
21730  SYS"Wimp_CreateWindow",,blk% TO wind%
21740ENDIF
21750=wind%
21760
21770DEF FNnameok(file$)
21780result%=TRUE
21790IF INSTR(file$,":")+INSTR(file$,".")=0 AND file$<>"<Wimp$Scrap>" THEN
21800PROCreport("To save, drag icon to a directory viewer.")
21810result%=FALSE
21820ENDIF
21830=result%
21840
21850REM - menus -
21860
21870DEF FNchange_menu_option(menu%,item%,RETURN olditem%,wind%,icon%)
21880d%=FALSE
21890IF item%>-1 AND item%<>olditem% THEN
21900  d%=TRUE
21910  PROCtickmenu(menu%,olditem%,FALSE)
21920  PROCtickmenu(menu%,item%,TRUE)
21930  olditem%=item%
21940  IF wind%<>0 THEN
21950    p%=menu%+28+item%*24
21960    IF p%!8 AND 1<<8 THEN a$=$(p%!12) ELSE a$=$(p%+12)
21970    PROCseticontext(wind%,icon%,a$)
21980  ENDIF
21990ENDIF
22000=d%
22010
22020DEF PROCtickmenu(menu%,item%,tick%)
22030p%=menu%+28+item%*24
22040IF tick% THEN !p%=!p% OR1 ELSE !p%=!p% ANDNOT1
22050ENDPROC
22060
22070DEF PROCmenutitle(title$,RETURN menuptr%)
22080oldptr%=menuptr%
22090$menuptr%=title$
22100max%=LENtitle$
22110menuptr%!12=&70207
22120menuptr%!20=44
22130menuptr%!24=0
22140menuptr%+=4
22150ENDPROC
22160
22170DEF PROCmenuitem(RETURN text$,RETURN menuptr%)
22180menuptr%+=24
22190!menuptr%=0
22200menuptr%!4=0
22210word$=FNnextword(text$)
22220token$=FNtoken(word$)
22230i1%=-1
22240WHILE token$<>""
22250CASE token$ OF
22260WHEN ">" : menuptr%!4=EVAL(FNnextword(text$))
22270WHEN "/" : !menuptr%=!menuptr% OR 1
22280WHEN "-" : !menuptr%=!menuptr% OR 2
22290WHEN "+" : !menuptr%=!menuptr% OR 8
22300WHEN "!"
22310  !menuptr%=!menuptr% OR 4
22320  valid$=FNnextword(text$)
22330  IF LENvalid$ THEN
22340  DIM i1% LENvalid$+1
22350  $i1%=valid$
22360  ENDIF
22370ENDCASE
22380token$=FNtoken(word$)
22390ENDWHILE
22400menuptr%!8=(7<<24) OR %10001
22410IF !menuptr% AND 4 OR token$="#" THEN
22420PROCinditem(EVAL(FNnextword(text$)),i1%,EVAL(word$))
22430ELSE
22440IF LENword$<=12 THEN
22450$(menuptr%+12)=word$
22460ELSE
22470DIM i0% LENword$+1
22480$i0%=word$
22490PROCinditem(i0%,-1,LENword$+1)
22500ENDIF
22510IF LENword$>max% THEN max%=LENword$
22520ENDIF
22530ENDPROC
22540
22550DEF PROCendmenu(RETURN menuptr%)
22560!menuptr%=!menuptr% OR &80
22570menuptr%+=24
22580oldptr%!16=max%*16+12
22590ENDPROC
22600
22610DEF FNmenu(text$)
22620stext$=text$
22630items%=0
22640text$+=","
22650title$=FNnextword(text$)
22660PROCmenutitle(title$,menuptr%)
22670WHILE text$<>""
22680items%+=1
22690PROCmenuitem(text$,menuptr%)
22700ENDWHILE
22710PROCendmenu(menuptr%)
22720=oldptr%
22730
22740DEF PROCinditem(i0%,i1%,i2%)
22750menuptr%!8=menuptr%!8 OR 1<<8
22760menuptr%!12=i0%
22770menuptr%!16=i1%
22780menuptr%!20=i2%
22790IF i2%-1>max% AND (!menuptr% AND 4)=0 THEN max%=i2%-1
22800ENDPROC
22810
22820DEF FNtoken(RETURN word$)
22830token$=""
22840IF INSTR(">/!#-+",RIGHT$(word$)) THEN
22850token$=RIGHT$(word$,1)
22860word$=LEFT$(word$,LENword$-1)
22870ENDIF
22880=token$
22890
22900DEF FNnextword(RETURN text$)
22910LOCAL word$,pos%
22920pos%=INSTR(text$,",")
22930word$=LEFT$(text$,pos%-1)
22940text$=MID$(text$,pos%+1)
22950=word$
22960
22970DEF PROCclosemenu
22980SYS"Wimp_CreateMenu",,-1
22990ENDPROC
23000
23010REM - icons -
23020
23030DEF PROCshadeicon(!q%,q%!4,shade%)
23040SYS"Wimp_GetIconState",,q%
23050IF shade% THEN q%!8=1<<22 ELSE q%!8=0
23060q%!12=1<<22
23070IF (q%!24 AND q%!12)<>q%!8 THEN SYS"Wimp_SetIconState",,q%
23080ENDPROC
23090
23100DEF FNicontext(!q%,q%!4)
23110SYS"Wimp_GetIconState",,q%
23120IF q%!24AND(1<<8) THEN text$=$(q%!28) ELSE text$=$(q%+28)
23130=text$
23140
23150DEF FNiconval(!q%,q%!4)
23160=VAL(FNicontext(!q%,q%!4))
23170
23180DEF PROCredoicon(!q%,q%!4)
23190SYS"Wimp_GetIconState",,q%
23200SYS"Wimp_ForceRedraw",!q%,q%!8,q%!12,q%!16,q%!20
23210ENDPROC
23220
23230DEF PROCdeleteicon(!q%,q%!4)
23240SYS"Wimp_DeleteIcon",,q%
23250ENDPROC
23260
23270DEF PROCiconinfo(wind%,icon%,data%)
23280!data%=wind%
23290data%!4=icon%
23300SYS"Wimp_GetIconState",,data%
23310ENDPROC
23320
23330DEF FNselected(!q%,q%!4)
23340SYS"Wimp_GetIconState",,q%
23350=(((q%!24)AND(1<<21))>0)
23360
23370DEF FNcricon(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,$(q%+24))
23380SYS"Wimp_CreateIcon",,q% TO icon%
23390=icon%
23400
23410DEF FNbuttype(!q%,q%!4)
23420IF q%!4>=0 THEN SYS"Wimp_GetIconState",,q% ELSE q%!24=0
23430=((q%!24)>>12)AND15
23440
23450DEF PROCselecticon(!q%,q%!4,select%)
23460SYS"Wimp_GetIconState",,q%
23470IF select% THEN q%!8=1<<21 ELSE q%!8=0
23480q%!12=1<<21
23490IF (q%!24 AND q%!12)<>q%!8 THEN SYS"Wimp_SetIconState",,q%
23500ENDPROC
23510
23520DEF FNiconfc(!q%,q%!4)
23530SYS"Wimp_GetIconState",,q%
23540=((q%!24)>>24)AND15
23550
23560DEF PROCseticonfc(!q%,q%!4,col%)
23570SYS"Wimp_GetIconState",,q%
23580q%!8=col%<<24
23590q%!12=15<<24
23600IF (q%!24 AND q%!12)<>q%!8 THEN SYS"Wimp_SetIconState",,q%
23610ENDPROC
23620
23630DEF PROCseticonval(!q%,q%!4,val%)
23640PROCseticontext(!q%,q%!4,STR$(val%))
23650ENDPROC
23660
23670DEF PROCseticontext(!q%,q%!4,text$)
23680SYS"Wimp_GetIconState",,q%
23690text$=LEFT$(text$,q%!36-1)
23700IF $(q%!28)<>text$ THEN
23710$(q%!28)=text$
23720q%!8=0
23730q%!12=0
23740SYS"Wimp_SetIconState",,q%
23750ENDIF
23760ENDPROC
23770
23780DEF PROCseticonvalid(!q%,q%!4,text$)
23790SYS"Wimp_GetIconState",,q%
23800IF $(q%!32)<>text$ THEN
23810$(q%!32)=text$
23820q%!8=0
23830q%!12=0
23840SYS"Wimp_SetIconState",,q%
23850ENDIF
23860ENDPROC
23870
23880DEF PROCsetfileicon(wind%,icon%,filetype%)
23890LOCAL rom%,ram%,sprite$,not%
23900IF filetype%<&1000 THEN
23910sprite$="file_"+RIGHT$("00"+STR$~(filetype%),3)
23920SYS"Wimp_BaseOfSprites" TO rom%,ram%
23930SYS"XOS_SpriteOp",24+256,rom%,sprite$ TO ;not%
23940not%=not%AND1
23950IF not% THEN SYS"XOS_SpriteOp",24+256,ram%,sprite$ TO ;not%
23960not%=not%AND1
23970ELSE
23980CASE filetype% OF
23990  WHEN &1000 : sprite$="directory"
24000  WHEN &2000 : sprite$="application"
24010OTHERWISE
24020  not%=TRUE
24030ENDCASE
24040ENDIF
24050IF not% THEN sprite$="file_xxx"
24060PROCseticonvalid(wind%,icon%,"S"+sprite$)
24070ENDPROC
24080
24090DEF FNicontp(!q%,q%!4)
24100SYS"Wimp_GetIconState",,q%
24110=q%!28
24120
24130DEF PROCstartuserdrag(id%,type%,blk%!24,blk%!28,blk%!32,blk%!36)
24140IF type%>256 THEN
24150  PROCwindowinfo(w%(id%))
24160  blk%!24=blk%!4
24170  blk%!28=blk%!8
24180  blk%!32=blk%!12
24190  blk%!36=blk%!16
24200  type%-=256
24210ENDIF
24220!blk%=0
24230blk%!4=7
24240dragging%=TRUE
24250dragid%=id%
24260drag_type%=type%
24270SYS"Wimp_DragBox",,blk%
24280ENDPROC
24290
24300DEF PROCstartdrag(id%,icon%)
24310dragid%=id%
24320dragicon%=icon%
24330wind%=w%(dragid%)
24340PROCwindowinfo(wind%)
24350PROCiconinfo(wind%,icon%,blk%)
24360!blk%=0
24370blk%!4=5
24380blk%!8+=wx%
24390blk%!12+=wy%
24400blk%!16+=wx%
24410blk%!20+=wy%
24420blk%!24=0
24430blk%!28=0
24440blk%!32=scx%
24450blk%!36=scy%
24460IF drag% THEN
24470PROCiconinfo(wind%,icon%,q%)
24471sprite%=1
24472sprite$=FNicontext(wind%,icon%)
24480IF (q%!24)AND3=3 THEN sprite$=$((q%!32)+1):sprite%=sprites%
24490SYS"DragASprite_Start",197,sprite%,sprite$,blk%+8,blk%+24
24500ELSE
24510SYS"Wimp_DragBox",,blk%
24520ENDIF
24530ENDPROC
24540
24550REM - user interogation -
24560
24570DEF FNcheck(message$)
24580SYS"Wimp_DragBox",,-1
24590!q%=0
24600$(q%+4)=message$
24610SYS"Wimp_ReportError",q%,19,"Message from "+program$ TO ,answer%
24620IF answer%=1 THEN =TRUE ELSE =FALSE
24630
24640DEF PROCreport(message$)
24650d%=FNquestion(message$,"OK","","")
24660ENDPROC
24670
24680DEF FNquestion(ans$(0),ans$(1),ans$(2),ans$(3))
24690LOCAL status%
24700status%=2
24710PROCclosemenu
24720FOR i%=0 TO 3
24730  IF ans$(i%)="" THEN
24740    PROCremoveicon(w%(report%),i%)
24750  ELSE
24760    PROCreiniticon(w%(report%),i%)
24770    PROCseticontext(w%(report%),i%,ans$(i%))
24780  ENDIF
24790NEXT i%
24800PROClosecaret
24810PROCopenincentre(w%(report%))
24820IF beep% THEN VDU 7
24830answer%=0
24840REPEAT
24850  PROCpoll(1)
24860UNTIL answer%
24870PROCclosewindow(w%(report%))
24880=answer%
24890
24900DEF FNclick_report
24910IF icon%>0 THEN answer%=icon%
24920=0
24930
24940REM - misc -
24950
24960DEF PROCquit
24970PROCclose_if_active(address%)
24980PROCclose_if_active(entry%)
24990PROCclose_if_active(letter%)
25000PROCclose_if_active(day%)
25010PROCclose_if_active(year%)
25020PROCclose_if_active(notepad%)
25030IF a_changed% OR s_changed% OR n_changed% OR c_changed% THEN
25040  CASE FNquestion("There is unsaved data.","Save","Quit","Cancel") OF
25050    WHEN 1
25060      PROCsave_changed
25070      exit=TRUE
25080    WHEN 2 : exit=TRUE
25090  ENDCASE
25100ELSE
25110  exit=TRUE
25120ENDIF
25130IF exit=TRUE THEN PROCpoll(0)
25140ENDPROC
25150
25160DEF PROCclosedown
25170PROCresetslot
25180FOR i%=1 TO 255
25190WHILE fonttable%?i%
25200SYS"Font_LoseFont",i%
25210fonttable%?i%-=1
25220ENDWHILE
25230NEXT i%
25240SYS"Wimp_CloseDown",mytask%
25250END
25260ENDPROC
25270
25280DEF FNmodevar(mode%,var%)
25290SYS"OS_ReadModeVariable",mode%,var% TO ,,val%
25300=val%
25310
25320DEF FNstring(b%)
25330LOCAL s$
25340s$=""
25350WHILE ?b%>31
25360s$+=CHR$(?b%)
25370b%+=1
25380ENDWHILE
25390=s$
25400
25410REM - windows -
25420
25430DEF PROCsetwindowextent(wind%,!q%,q%!4,q%!8,q%!12)
25440SYS"Wimp_SetExtent",wind%,q%
25450ENDPROC
25460
25470DEF PROCopenincentre(!blk%)
25480SYS"Wimp_GetWindowState",,blk%
25490m1%=blk%!12-blk%!4
25500m2%=blk%!16-blk%!8
25510blk%!4=(scx%-m1%)>>1
25520blk%!8=(scy%-m2%)>>1
25530blk%!12=(scx%+m1%)>>1
25540blk%!16=(scy%+m2%)>>1
25550blk%!28=-1
25560PROCopenwindow
25570ENDPROC
25580
25590DEF PROCnewtitle(!blk%,title$)
25600SYS"Wimp_GetWindowInfo",,blk%
25610IF $(blk%!76)<>title$ THEN
25620$(blk%!76)=title$
25630IF active%(FNid(!blk%)) THEN
25640  SYS"Wimp_GetWindowOutline",,blk%
25650  SYS"Wimp_ForceRedraw",-1,blk%!4,blk%!16-44,blk%!12,blk%!16
25660ENDIF
25670ENDIF
25680ENDPROC
25690
25700DEF PROCforceredraw(!blk%)
25710SYS"Wimp_GetWindowInfo",,blk%
25720SYS"Wimp_ForceRedraw",!blk%,blk%!44,blk%!48,blk%!52,blk%!56
25730ENDPROC
25740
25750DEF PROCupdatewindow(!blk%)
25760SYS"Wimp_GetWindowInfo",,blk%
25770blk%!4=blk%!44
25780blk%!8=blk%!48
25790blk%!12=blk%!52
25800blk%!16=blk%!56
25810SYS"Wimp_UpdateWindow",,blk% TO more%
25820ENDPROC
25830
25840DEF PROCopenfully(!blk%,top%)
25850SYS"Wimp_GetWindowInfo",,blk%
25860blk%!12=blk%!4+(blk%!52-blk%!44)
25870blk%!8=blk%!16-(blk%!56-blk%!48)
25880IF top% THEN blk%!28=-1
25890PROCopenwindow
25900ENDPROC
25910
25920DEF PROCclosewindow(wind%)
25930LOCAL cid%,close%
25940cid%=FNid(wind%)
25950IF sysflags%(cid%)AND2 THEN close%=EVAL("FNclose_"+id$(cid%)) ELSE close%=TRUE
25960IF close% THEN
25970  active%(cid%)=FALSE
25980  PROCquickclosewindow(w%(cid%))
25990ENDIF
26000ENDPROC
26010
26020DEF PROCclose_if_active(id%)
26030IF active%(id%) THEN PROCclosewindow(w%(id%))
26040ENDPROC
26050
26060DEF PROCquickclosewindow(!q%)
26070SYS"Wimp_CloseWindow",,q%
26080ENDPROC
26090
26100DEF PROCreopen(wind%)
26110id%=FNid(wind%)
26120IF active%(id%) THEN
26130  !blk%=wind%
26140  SYS"Wimp_GetWindowState",,blk%
26150  PROCopenwindow
26160  PROCforceredraw(wind%)
26170ELSE
26180  PROCopenup(wind%)
26190ENDIF
26200ENDPROC
26210
26220DEF PROCwindowinfo(wind%)
26230!blk%=wind%
26240SYS"Wimp_GetWindowInfo",,blk%
26250wx%=blk%!4-blk%!20
26260wy%=blk%!16-blk%!24
26270ww%=blk%!12-blk%!4
26280wh%=blk%!16-blk%!8
26290ENDPROC
26300
26310DEF PROCinitwindords(id%)
26320PROCwindowinfo(w%(id%))
26330wx%(id%)=wx%
26340wy%(id%)=wy%
26350ww%(id%)=ww%
26360wh%(id%)=wh%
26370ENDPROC
26380
26390DEF FNsavebox(filetype%,standard$,flags%)
26400wind%=FNwindow("save","save",0,0)
26410PROCseticontext(w%(wind%),3,"file_"+RIGHT$("00"+STR$~(filetype%),3))
26420PROCseticontext(w%(wind%),1,standard$)
26430PROCseticontext(w%(wind%),2,standard$)
26440misc%(wind%)=filetype%
26450sysflags%(wind%)=flags%
26460=wind%
26470
26480DEF FNlastbit(file$)
26490WHILE INSTR(file$,".")
26500file$=MID$(file$,INSTR(file$,".")+1)
26510ENDWHILE
26520=file$
26530
26540DEF PROCmouseinfo
26550SYS"Wimp_GetPointerInfo",,q%
26560mx%=!q%
26570my%=q%!4
26580but%=q%!8
26590wind%=q%!12
26600icon%=q%!16
26610ENDPROC
26620
26630DEF PROCsetfiletype(file$,filetype%)
26640SYS"OS_File",&12,file$,filetype%
26650ENDPROC
26660
26670DEF PROCshademenu(menu%,item%,shade%)
26680p%=menu%+36+item%*24
26690!p%=!p% ANDNOT(1<<22)
26700IF shade% THEN !p%=!p% OR(1<<22)
26710ENDPROC
26720
26730DEF PROCgetcaret
26740SYS"Wimp_GetCaretPosition",,q%
26750cwind%=!q%
26760cicon%=q%!4
26770cxoff%=q%!8
26780cyoff%=q%!12
26790cheight%=q%!16
26800cindex%=q%!20
26810ENDPROC
26820
26830DEF PROCputcaret(wind%,icon%,index%)
26840len%=LENFNicontext(wind%,icon%)
26850IF index%>len% THEN index%=len%
26860SYS"Wimp_SetCaretPosition",wind%,icon%,,,-1,index%
26870ENDPROC
26880
26890DEF PROCresetcaret(wind%,icon%)
26900SYS"Wimp_GetCaretPosition",,q%
26910IF (!q%=wind% AND (q%!4=icon% OR icon%=-1)) THEN
26920  icon%=q%!4
26930  index%=q%!20
26940  len%=LENFNicontext(wind%,icon%)
26950  IF index%>len% THEN index%=len%
26960  SYS"Wimp_SetCaretPosition",wind%,icon%,,,-1,index%
26970ENDIF
26980IF wind%=0 THEN SYS"Wimp_SetCaretPosition",!q%,q%!4,q%!8,q%!12,q%!16,q%!20
26990ENDPROC
27000
27010DEF PROClosecaret
27020IF mycaret% THEN SYS"Wimp_SetCaretPosition",-1
27030ENDPROC
27040
27050DEF PROCflashicon(!q%,q%!4)
27060FOR f%=1 TO 3
27070WAIT:WAIT
27080PROCselecticon(!q%,q%!4,FALSE)
27090WAIT:WAIT
27100PROCselecticon(!q%,q%!4,TRUE)
27110NEXT f%
27120ENDPROC
27130
27140DEF PROCopeniconmenu(!q%,q%!4,wind%)
27150openmenu%=wind%
27160SYS"Wimp_GetIconState",,q%
27170menux%=q%!16
27180menuy%=q%!20
27190PROCwindowinfo(!q%)
27200menux%+=wx%
27210menuy%+=wy%
27220SYS"Wimp_CreateMenu",,openmenu%,menux%,menuy%
27230menuid%=windows%+1
27240ENDPROC
27250
27260DEF FNinfowindow(i1$,i2$,i3$,i4$)
27270wind%=FNwindow("info","",0,0)
27280PROCseticontext(w%(wind%),1,i1$)
27290PROCseticontext(w%(wind%),2,i2$)
27300PROCseticontext(w%(wind%),3,i3$)
27310PROCseticontext(w%(wind%),4,i4$)
27320=wind%
27330
27340DEF PROCwimpinit(name$,sprite$,work$,no%,isize%)
27350pointermine%=FALSE
27360SYS"OS_GetEnv" TO autoload$
27370autoload$=MID$(autoload$,INSTR(autoload$,CHR$34,INSTR(autoload$,CHR$34)+1)+2)
27380dragging%=0:drag_type%=0:dragid%=0
27390status%=0:mycaret%=FALSE
27400windows%=no%+1
27410program$=name$
27420DIM blk% 10000,q% 256,ind% isize%,deskpal% 256,dgcol% 256,dscale% 16,palblock% 256,palblock2% 256
27430indend%=ind%+isize%
27440DIM messagelist% 100
27450p%=0
27460REPEAT
27470  READ message%
27480  messagelist%!p%=message%
27490  p%+=4
27500UNTIL message%=0
27510DATA 1,2,3,5,6,7,8,9,10,&400C0,&400C1,&400C9,0
27520$blk%="TASK"
27530SYS"Wimp_Initialise",310,!blk%,program$,messagelist% TO ,mytask%
27540iconbar%=FNcricon(-1,0,0,68,68,&2002,sprite$)
27550dir$=FNreadvar(work$+"$Dir")
27560SYS"XOS_SWINumberFromString",,"DragASprite_Start" TO ;drag%
27570drag%=(drag% AND 1)=0
27580SYS"OS_Byte",161,28 TO ,,bit%
27590IF (bit% AND 2)=0 THEN drag%=FALSE
27600SYS"Wimp_SlotSize",-1,-1 TO appsize%
27610PROCloadsprites
27620tft%=&FFF
27630dft%=&AFF
27640sft%=&FF9
27650exit=FALSE
27660DIM gcol% 256,pal2% 80,pal4% 80,scale% 16
27670FOR i%=0 TO 1
27680  pal2%!(4*(1-i%))=(&FFFFFF*i%)<<8
27690NEXT i%
27700FOR i%=0 TO 3
27710  pal4%!(4*(3-i%))=(&555555*i%)<<8
27720NEXT i%
27730PROCnewmode
27740DIM menubuffer% 4000,fonttable% 256
27750twind%=0
27760DIM w%(windows%),menu%(windows%),id$(windows%+1),misc%(windows%),active%(windows%),default%(5,windows%),sysflags%(windows%),wx%(windows%),wy%(windows%),ww%(windows%),wh%(windows%)
27770id$(windows%+1)="unknown"
27780DIM ans$(3)
27790menuptr%=menubuffer%
27800FOR i%=1 TO 255
27810fonttable%?i%=0
27820NEXT i%
27830w%(0)=-2:id$(0)="iconbar"
27840SYS"Wimp_OpenTemplate",,dir$+".Templates"
27850PROCinitwindows
27860report%=FNwindow("report","report",0,0)
27870SYS"Wimp_CloseTemplate"
27880beep%=TRUE
27890instant%=FALSE
27900ENDPROC
27910
27920REM ==== memory management ====
27930
27940DEF FNspace(size%)
27950LOCAL room%,noroom%,new%
27960SYS"XWimp_SlotSize",appsize%+size%,-1 TO new%;noroom%
27970room%=((noroom%AND1)=0)
27980IF new%<appsize%+size% THEN room%=FALSE
27990IF room% THEN appinc%=new%-appsize%
28000=room%
28010
28020DEF PROCinitheap
28030heap%=HIMEM
28040heapsize%=8*1024
28050IF FNspace(heapsize%) THEN
28060  SYS"OS_Heap",0,heap%,,heapsize%
28070ELSE
28080  PROCerror("Out of room.")
28090ENDIF
28100ENDPROC
28110
28120DEF FNlargestblock
28130SYS"OS_Heap",1,heap% TO ,,largest%
28140=largest%
28150
28160DEF FNgetblock(size%)
28170LOCAL ok%
28180ok%=TRUE
28190WHILE ok% AND FNlargestblock<size%
28200  ok%=FNextendheap(8*1024)
28210ENDWHILE
28220IF ok% THEN
28230  SYS"OS_Heap",2,heap%,,size% TO ,,block%
28240ELSE
28250  block%=-1
28260  PROCreport("No room for operation.")
28270ENDIF
28280=block%
28290
28300DEF PROCloseblock(RETURN block%)
28310IF block%>-1 THEN SYS"OS_Heap",3,heap%,block%
28320block%=-1
28330PROCshrinkheap
28340ENDPROC
28350
28360DEF PROCshrinkheap
28370LOCAL ok%,size%
28380ok%=TRUE
28390size%=-1024*8
28400WHILE ok%
28410  SYS"XOS_Heap",5,heap%,,size% TO ;ok%
28420  ok%=((ok%AND1)=0)
28430  IF ok% THEN
28440    heapsize%=heap%!12
28450    ok%=FNspace(heapsize%)
28460  ENDIF
28470ENDWHILE
28480ENDPROC
28490
28500DEF FNextendheap(size%)
28510LOCAL ok%
28520ok%=FNspace(heapsize%+size%)
28530IF ok% THEN
28540  SYS"OS_Heap",5,heap%,,size%
28550  heapsize%=heap%!12
28560ELSE
28570  PROCreport("No room for this operation.")
28580ENDIF
28590=ok%
28600
28610DEF FNextendblock(RETURN block%,inc%)
28620LOCAL ok%, heapfull%
28630heapfull%=FALSE
28640REPEAT
28650  SYS"XOS_Heap",4,heap%,block%,inc% TO ,,block%;ok%
28660  ok%=((ok%AND1)=0)
28670  IF NOTok% THEN heapfull%=NOTFNextendheap(8*1024)
28680UNTIL ok% OR heapfull%
28690=ok%
28700
28710DEF PROCresetslot
28720SYS"Wimp_SlotSize",appsize%,-1
28730appinc%=0
28740ENDPROC
28750
28760REM ==== filing system routines ====
28770
28780DEF FNstandardfilename(wind%)
28790=FNicontext(wind%,1)
28800
28810DEF PROCresetfilename(wind%)
28820PROCseticontext(wind%,2,FNstandardfilename(wind%))
28830ENDPROC
28840
28850DEF PROCsave(id%,file$,prepared%)
28860saved%=FALSE
28870IF FNnameok(file$) THEN
28880IF prepared%=FALSE THEN prepared%=EVAL("FNprepare"+STR$~(misc%(id%)))
28890CASE prepared% OF
28900  WHEN -1
28910    SYS"OS_File",10,file$,misc%(id%),,savebuff%,savebuff%+filesize%
28920    d%=EVAL("FNsaved"+STR$~(misc%(id%)))
28930  WHEN -2
28940    d%=EVAL("FNsave"+STR$~(misc%(id%)))
28950ENDCASE
28960PROCclosemenu
28970PROCseticontext(w%(id%),2,filename$)
28980saved%=TRUE
28990ENDIF
29000ENDIF
29010ENDPROC
29020
29030REM ==== menu routines ====
29040
29050DEF PROCopenwindowasmenu(window%)
29060PROCwindowinfo(window%)
29070PROCmouseinfo
29080IF my%-wh%/2<96 THEN my%=96+wh%/2
29090menux%=mx%-ww%/2
29100menuy%=my%+wh%/2
29110openmenu%=window%
29120id%=FNid(window%)
29130PROCreopenmenu
29140IF sysflags%(id%)AND1 THEN d%=EVAL("FNopen_"+id$(id%))
29150ENDPROC
29160
29170DEF PROCiconbarmenu(text$)
29180menu%(0)=FNmenu(text$)
29190barheight%=items%*44+96
29200ENDPROC
29210
29220DEF PROCmenuselect
29230d%=EVAL("FNmenu_"+id$(menuid%))
29240PROCmouseinfo
29250IF but%=1 THEN PROCreopenmenu
29260ENDPROC
29270
29280DEF PROCreopenmenu
29290IF sysflags%(id%)AND4 THEN d%=EVAL("FNpremenu_"+id$(id%))
29300SYS"Wimp_CreateMenu",,openmenu%,menux%,menuy%
29310ENDPROC
29320
29330DEF PROCopenmenu(id%)
29340IF menu%(id%) THEN
29350menuid%=id%
29360openmenu%=menu%(id%)
29370IF id%=0 THEN menuy%=barheight% ELSE menuy%=my%
29380menux%=mx%-(openmenu%!16)/2-16
29390PROCreopenmenu
29400ENDIF
29410ENDPROC
29420
29430REM ==== window routines ====
29440
29450DEF FNwindow(wind$,name$,menu%,flags%)
29460twind%+=1
29470IF twind%>windows% THEN ERROR 255,"More windows than declared."
29480w%(twind%)=FNloadtemplate(wind$)
29490PROCwindowinfo(w%(twind%))
29500FOR d%=0 TO 5
29510default%(d%,twind%)=!(blk%+(d%<<2)+4)
29520NEXT d%
29530id$(twind%)=name$
29540menu%(twind%)=menu%
29550sysflags%(twind%)=flags%
29560=twind%
29570
29580DEF PROCredraw
29590id%=FNid(!blk%)
29600SYS"Wimp_RedrawWindow",,blk% TO more%
29610PROCrectangleloop
29620ENDPROC
29630
29640DEF PROCrectangleloop
29650wx%=wx%(id%):wy%=wy%(id%):opt0%=FALSE:opt1%=FALSE
29660WHILE more%
29670x0%=blk%!28-wx%
29680y0%=blk%!32-wy%
29690x1%=blk%!36-wx%
29700y1%=blk%!40-wy%
29710d%=EVAL("FNredraw_"+id$(id%))
29720SYS"Wimp_GetRectangle",,blk% TO more%
29730ENDWHILE
29740ENDPROC
29750
29760DEF FNid(find%)
29770found%=0
29780FOR i%=1 TO windows%
29790IF w%(i%)=find% THEN found%=i%
29800NEXT i%
29810=found%
29820
29830DEF PROCopenup(wind%)
29840!blk%=wind%
29850id%=FNid(wind%)
29860IF NOTactive%(id%) THEN
29870FOR d%=0 TO 5
29880!(blk%+(d%<<2)+4)=default%(d%,id%)
29890NEXT d%
29900ELSE
29910SYS"Wimp_GetWindowState",,blk%
29920ENDIF
29930blk%!28=-1
29940PROCopenwindow
29950ENDPROC
29960
29970DEF PROCopenwindow
29980LOCAL open_id%
29990open_id%=FNid(!blk%)
30000IF sysflags%(open_id%)AND16 THEN d%=EVAL("FNpreopen_"+id$(open_id%))
30010SYS"Wimp_OpenWindow",,blk%
30020wx%(open_id%)=blk%!4-blk%!20
30030wy%(open_id%)=blk%!16-blk%!24
30040ww%(open_id%)=blk%!12-blk%!4
30050wh%(open_id%)=blk%!16-blk%!8
30060IF sysflags%(open_id%)AND1 THEN d%=EVAL("FNopen_"+id$(open_id%))
30070active%(open_id%)=TRUE
30080ENDPROC
30090
30100DEF FNopen(!q%)
30110LOCAL open%
30120open%=FALSE
30130SYS"Wimp_GetWindowState",,q%
30140IF q%!32AND(1<<16) THEN open%=TRUE
30150=open%
30160
30170DEF PROCwindow_state(!blk%)
30180SYS"Wimp_GetWindowState",,blk%
30190ENDPROC
30200
30210DEF PROCredobox(wind%,x0%,y0%,x1%,y1%)
30220IF x1%<x0% THEN SWAP x0%,x1%
30230IF y1%<y0% THEN SWAP y0%,y1%
30240SYS"Wimp_ForceRedraw",wind%,x0%,y0%,x1%,y1%
30250ENDPROC
30260
30270DEF PROCinstantredobox(wind%,x0%,y0%,x1%,y1%)
30280IF x1%<x0% THEN SWAP x0%,x1%
30290IF y1%<y0% THEN SWAP y0%,y1%
30300id%=FNid(wind%)
30310!blk%=w%(id%)
30320blk%!4=x0%
30330blk%!8=y0%
30340blk%!12=x1%
30350blk%!16=y1%
30360SYS"Wimp_UpdateWindow",,blk% TO more%
30370instant%=TRUE
30380PROCrectangleloop
30390instant%=FALSE
30400ENDPROC
30410
30420DEF PROCstartupdatewindow(wind%,x0%,y0%,x1%,y1%)
30430!blk%=wind%
30440blk%!4=x0%
30450blk%!8=y0%
30460blk%!12=x1%
30470blk%!16=y1%
30480SYS"Wimp_UpdateWindow",,blk% TO more%
30490ENDPROC
30500
30510DEF PROCstartupdatewindowblock(wind%,x0%,y0%,x1%,y1%)
30520!blk%=wind%
30530IF x0%>x1% THEN SWAP x0%,x1%
30540IF y0%>y1% THEN SWAP y0%,y1%
30550blk%!4=x0%-4
30560blk%!8=y0%-4
30570blk%!12=x1%+4
30580blk%!16=y1%+4
30590SYS"Wimp_UpdateWindow",,blk% TO more%
30600ENDPROC
30610
30620DEF PROCdeletewindow(RETURN !q%)
30630SYS"Wimp_DeleteWindow",,q%
30640!q%=0
30650ENDPROC
30660
30670REM ==== icon routines ====
30680
30690DEF PROCclick(mx%,my%,but%,wind%,icon%)
30700IF FNbuttype(wind%,icon%)=9 THEN PROCflashicon(wind%,icon%)
30710id%=FNid(wind%)
30720CASE but% OF
30730WHEN 64
30740  CASE FNbuttype(w%(id%),icon%) OF
30750    WHEN 6,7,8,10,14 : PROCstartdrag(id%,icon%)
30760  ENDCASE
30770WHEN 2 : PROCopenmenu(id%)
30780OTHERWISE
30790d%=EVAL("FNclick_"+id$(id%))
30800ENDCASE
30810ENDPROC
30820
30830DEF PROCenddrag
30840dragging%=FALSE
30850drag_type%=0
30860SYS"Wimp_DragBox",,-1
30870PROCmouseinfo
30880IF drag% THEN SYS"DragASprite_Stop"
30890d%=EVAL("FNdrop_"+id$(dragid%))
30900dragid%=0
30910ENDPROC
30920
30930DEF PROCstartdragbox(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28,q%!32,q%!36)
30940SYS"Wimp_DragBox",,q%
30950ENDPROC
30960
30970DEF PROCsetpointer(ptr$,ox%,oy%)
30980SYS"Wimp_SpriteOp",36,1,ptr$,2,ox%,oy%,0,0
30990IF ptr$<>"ptr_default" THEN pointermine%=TRUE ELSE pointermine%=FALSE
31000ENDPROC
31010
31020DEF PROCkey(wind%,icon%,index%,key%)
31030taken=EVAL("FNkey_"+id$(FNid(wind%)))
31040IF taken=FALSE THEN SYS"Wimp_ProcessKey",key%
31050ENDPROC
31060
31070DEF FNincicon(iicon%,dec%,inc%,lb%,ub%)
31080change%=FALSE
31090IF icon%=dec% OR icon%=inc% THEN
31100val%=VALFNicontext(wind%,iicon%)
31110val%+=(icon%=dec%)*2+1
31120IF val%>ub% THEN val%=ub% ELSE IF val%<lb% THEN val%=lb%
31130PROCseticontext(wind%,iicon%,STR$(val%))
31140PROCresetcaret(wind%,iicon%)
31150change%=TRUE
31160ENDIF
31170ENDIF
31180=change%
31190
31200DEF PROCremoveicon(!q%,q%!4)
31210q%!8=(1<<24)
31220q%!12=(1<<2)OR(1<<5)OR(15<<24)OR(15<<12)
31230SYS"Wimp_SetIconState",,q%
31240ENDPROC
31250
31260DEF PROCreiniticon(!q%,q%!4)
31270q%!8=(1<<2)OR(1<<5)OR(7<<24)OR(3<<12)
31280q%!12=(1<<2)OR(1<<5)OR(15<<12)OR(15<<24)
31290SYS"Wimp_SetIconState",,q%
31300ENDPROC
31310
31320DEF FNiconkeys(data%)
31330taken=TRUE
31340icons%=0
31350WHILE data%?icons%<255
31360  icons%+=1
31370ENDWHILE
31380icons%-=1
31390found%=-1
31400FOR p%=0 TO icons%
31410  IF data%?p%=icon% THEN found%=p%
31420NEXT p%
31430newicon%=-1
31440IF found%>=0 THEN
31450  CASE key% OF
31460    WHEN 13 : newicon%=found%+1
31470    WHEN &18E : IF found%<icons% THEN newicon%=found%+1
31480    WHEN &18F : IF found%>0 THEN newicon%=found%-1
31490    WHEN &19E,&1AE,&1BE : newicon%=icons%
31500    WHEN &19F,&1AF,&1BF : newicon%=0
31510  OTHERWISE
31520    taken=FALSE
31530  ENDCASE
31540ENDIF
31550IF newicon%>icons% THEN taken=-2:newicon%=-1
31560IF newicon%>=0 THEN
31570  PROCgetcaret
31580  PROCputcaret(wind%,data%?newicon%,cindex%)
31590ENDIF
31600=taken
31610
31620REM ==== and the rest ====
31630
31640DEF FNclick_=0
31650
31660DEF FNredraw_=0
31670
31680DEF FNkey_=0
31690
31700DEF FNdrop_=0
31710
31720DEF PROCerror(error$)
31730SYS"Hourglass_Smash"
31740CASE status% OF
31750  WHEN 1
31760    IF print THEN CLOSE#print
31770    report$="Print error, print cancelled"
31780OTHERWISE
31790  report$="An uncontrolable error has occured ("+error$+STR$(ERL)+"), shall I exit?"
31800ENDCASE
31810exit=FNcheck(report$)
31820status%=0
31830ENDPROC
31840
31850DEF FNwpal(mode%)
31860CASE FNmodevar(mode%,3) OF
31870  WHEN 63:p%=0
31880  WHEN 15:p%=deskpal%
31890  WHEN 3:p%=pal4%
31900  WHEN 1:p%=pal2%
31910ENDCASE
31920=p%
31930
31940DEF FNdrop_save
31950filetype%=misc%(dragid%)
31960id%=dragid%
31970prepared%=EVAL("FNprepare"+STR$~(filetype%))
31980IF prepared% THEN PROCdropfile(FNicontext(w%(dragid%),2),filetype%,filesize%)
31990=0
32000
32010DEF FNclick_save
32020IF icon%=0 THEN PROCsave(id%,FNicontext(wind%,2),FALSE)
32030=0
32040
32050DEF FNkey_save
32060IF key%=13 THEN PROCsave(id%,FNicontext(wind%,2),FALSE):=TRUE
32070=0
32080
32090DEF FNspritename(sprite%,number%)
32100SYS"OS_SpriteOp",13+256,sprite%,q%,256,number% TO ,,,len%
32110q%?len%=13
32120=$q%
32130
32140DEF PROCload(file$,filetype%)
32150ok%=FNfileokay(filetype%)
32160IF ok% THEN ok%=FNfileexist(file$)
32170IF ok% THEN
32180  PROCreply(18,4)
32190  PROCdo_load
32200ENDIF
32210ENDPROC
32220
32230DEF FNreadvar($q%)
32240SYS"OS_ReadVarVal",q%,blk%,256,0,3 TO ,,len%
32250blk%?len%=13
32260=$blk%

� > <BigBook$Dir>.!RunImage

�initiate
� � �error(�$)
(
2next_time%=0
<ȕ �exit
F'  null%=dragging%�(insptr%<inslen%)
P  � alarm_set% �
Z    �pollidle(0,next_time%)
d,    ș"OS_ReadMonotonicTime" � new_time%
n!    � new_time%>=next_time% �
xM      � �this_time>=c_time%(alarm_set%) � �alarm(alarm_set%,this_date%,1)
�#      next_time%=new_time%+1000
�	    �
�  �
�    �poll(1+null%)
�  �
��
��closedown
�
�� �initiate
�6�wimpinit("Big Book","!bigbook","BigBook",19,6000)
��init_s
��init_n
��init_c
�init_a
�init_l
�init_m
"
�c_alarms
,�
6
@
� �init_m
J� mp$(5,20)
T�
^
h
� �init_s
rs_file$=dir$+".Settings"
|� �fileexist(s_file$) �
�  in_file=�(s_file$)
�  �#in_file,weekends
�  �#in_file,today
�  �#in_file,fonts
�  �#in_file,beep
�  �#in_file,birthday
�  �#in_file,other$
�  �#in_file
��
�  weekends=�
�
  today=�
�
  fonts=�
�  beep=�
  birthday=7
  other$="Other"
�
&s_changed%=�
0�
:
D
� �save_s
Nout_file=�(s_file$)
X�#out_file,weekends
b�#out_file,today
l�#out_file,fonts
v�#out_file,beep
��#out_file,birthday
��#out_file,other$
��#out_file
�s_changed%=�
��
�
�
� �init_n
� �iconinfo(w%(notepad%),9,q%)
�n_s0%=q%!8+4
�n_s1%=q%!16-q%!8-8
�n_si%=10
�$�iconinfo(w%(notepad%),n_si%,q%)
�n_s2%=q%!12
n_s3%=q%!20
n_sf%=q%!24

max_n%=64
 $� note$(max_n%,5),n_num%(max_n%)
*n_file$=dir$+".Notes"
4� �fileexist(n_file$) �
>  in_file=�(n_file$)
H  �#in_file,notes%
R  �#in_file,last_n%
\  � note%=1 � notes%
f    � i%=0 � 5
p#      �#in_file,note$(note%,i%)
z    � i%
�    �#in_file,n_num%(note%)
�
  � note%
�  �#in_file
��
�  notes%=1
�  last_n%=1
�  n_num%(notes%)=last_n%
��
�this_note%=-1
�n_changed%=�
��
�
�
� �save_n
out_file=�(n_file$)
�#out_file,notes%
�#out_file,last_n%
$� note%=1 � notes%
.  � i%=0 � 5
8"    �#out_file,note$(note%,i%)
B
  � i%
L  �#out_file,n_num%(note%)
V� note%
`�#out_file
jn_changed%=�
t�
~
�
� �init_c
�	!q%=1
�ș"OS_Word",14,q%
�this_year%=�(�~(?q%))
�this_month%=�(�~(q%?1))
�this_date%=�(�~(q%?2))
�9� month$(12),ml%(12),day$(6),sd%(12),mo%(12),mml%(12)
�}month$()="","January","February","March","April","May","June","July","August","September","October","November","December"
�/ml%()=0,31,28,31,30,31,30,31,31,30,31,30,31
�� m%=2 � 12
�%  mo%(m%)=(mo%(m%-1)+ml%(m%-1))�7
�� m%
4day$()="Sun","Mon","Tue","Wed","Thu","Fri","Sat"

� m%=0 � 12
  month%=m%+this_month%-1
  c_year%=this_year%
(  � month%<1 �
2    c_year%-=1
<    month%+=12
F  �
P  � month%>12 �
Z    c_year%+=1
d    month%-=12
n  �
x$  sd%(m%)=�day(1,month%,c_year%)
�  mml%(m%)=ml%(month%)
�,  � c_year%�4=0 � month%=2 � mml%(m%)=29
�� m%
�Ac_width%=350:c_height%=40:border%=32:m_height%=40:d_width%=80
�;p_x0%=-(border%+d_width%):p_y0%=-(c_height%*37+border%)
�5p_x1%=c_width%*13+border%:p_y1%=border%+m_height%
�7�setwindowextent(w%(year%),p_x0%,p_y0%,p_x1%,p_y1%)
�C�setwindowextent(w%(c_horz%),p_x0%,p_y1%-m_height%,p_x1%,p_y1%)
�B�setwindowextent(w%(c_vert%),p_x0%,p_y0%,p_x0%+d_width%,p_y1%)
�c_max%=300
�&� c_first%(12,31),c_colour%(12,31)
�X� c_entry$(c_max%),c_type%(c_max%),c_time%(c_max%),c_next%(c_max%),c_link%(1,c_max%)
�c_first%()=-1

c_last%=0
� d_icon% 40
!�iconinfo(w%(day%),0,d_icon%)
"d_icon%+=8
,�deleteicon(w%(day%),0)
6"d_height%=d_icon%!12-d_icon%!4
@d_date%=-1:d_month%=-1
J� l_icon%(1)
T� i%=0 � 1
^
  � d% 40
h!  �iconinfo(w%(day%),i%+1,d%)
r  l_icon%(i%)=d%+8
|   �deleteicon(w%(day%),i%+1)
�� i%
�� e_icon%(7),e_icon$(7)
�!e_icon%()=4,1,2,3,10,11,12,15
�Je_icon$()="none","birthday","todo","alarm","red","blue","green","gold"
�� b_col%(15)
�� i%=0 � 15
�)  b_col%(i%)=�iconfc(w%(colours%),i%)
�� i%
�in_file=�(dir$+".Colours")
�� i%=0 � 15
�2  �seticontext(w%(colours%),i%,��#in_file,12))
�� i%
�
�#in_file
�load_c
"a_date%=1:a_month%=0:a_next%=0
alarm_set%=0
&"� trans% 16,rect% 16,plotat% 8
0�
:
D
� �init_l
N!� l_list%(max_a%), l_icon% 40
X$�iconinfo(w%(letter%),1,l_icon%)
bl_icon%+=8
ll_y0%=l_icon%!4
vl_y1%=l_icon%!12-l_icon%!4
��deleteicon(w%(letter%),1)
�letters%=-1
�l_selected%=-1
��calc_l
��
�
�
� �init_a
�!�iconinfo(w%(address%),17,q%)
�a_s0%=q%!8+4
�a_s1%=q%!16-q%!8-8
�a_si%=18
�$�iconinfo(w%(address%),a_si%,q%)
�a_s2%=q%!12
a_s3%=q%!20
a_sf%=q%!24
max_a%=256
 @name=0:address=1:phone=6:other=7:dob=8:sent=9:rec=10:file=11
*|� a$(max_a%,11), flag%(max_a%), type%(max_a%), a_num%(max_a%), icon%(8), a%(26), g%(max_a%), temp$(max_a%), ind%(max_a%)
4 icon%()=0,2,3,4,5,6,12,13,14
>�load_a
Hthis_name%=1
R8� index_menu% 1024, sub_block% 2048, sub_index% 2048
\,�seticontext(w%(address%),10,other$+":")
f� col_tone%(2),row_tone%(3)
pcol_tone%()=160,167,174
zrow_tone%()=122,130,136,142
�&inslen%=0:insptr%=0:� insdata% 400
��
�
�� �initwindows
�`info%=�infowindow("Big Book","Diary, Address book,...","Barry Wickett","1.20 (17-Dec-1994)")
�'entry%=�window("day","entry",0,%10)
�Brecord%=�window("record","record",�menu("File Link,Unlink"),0)
�� other% 14
�2othermenu%=�menu("  Enter date  ,14!,,other%")
�?recordmenu%=�menu("Date,Today,Yesterday,Other>,othermenu%")
�*insert%=�window("insert","insert",0,0)
�Lspecial%=�menu("Specials,Insert at Caret>,w%(insert%),Mark up birthday")
�}address%=�window("addresses","address",�menu("Addresses,Add,Delete,Search,Sort-,Save-,Specials>,special%,Print..."),%110)
	Dletter%=�window("letters","letter",�menu("Letters,Print..."),%1)
	-colours%=�window("colours","colours",0,0)
	Yday%=�window("days","day",�menu("Day,Colours>,w%(colours%),Add entry,Print..."),%100)
	$)alarm%=�window("alarm","alarm",0,%10)
	.'print%=�window("print","print",0,0)
	8Vyear%=�window("years","year",�menu("Book of Days,Print>-,w%(print%),Save"),%10011)
	B2birthday%=�window("birthday","birthday",0,%10)
	LNsavemenu%=�menu("Save,Days,Addresses,Letters,Notes,Settings-,All changes")
	VYmenu%=�window("menu","menu",�menu("Big Book,Info>,w%(info%),Save>,savemenu%,Quit"),0)
	`)c_horz%=�window("blank","c_horz",0,0)
	j)c_vert%=�window("blank","c_vert",0,0)
	t/settings%=�window("system","settings",0,%1)
	~-notepad%=�window("notes","notepad",0,%10)
	�*search%=�window("search","search",0,0)
	�'multi%=�window("multi","multi",0,0)
	�1�iconbarmenu("Big Book,Info>,w%(info%),Quit")
	��
	�
	�� �save_changed
	�� c_changed% � �save_c
	�� a_changed% � �save_a
	�� n_changed% � �save_n
	�� s_changed% � �save_s
	��
	�
� �menu_iconbar

� !blk%=1 � �quit
=0

(� �click_iconbar
2�openup(w%(menu%))
<=0
F
P� �menu_menu
ZȎ !blk% �
d	  � 1
n    Ȏ blk%!4 �
x      � 0 : �save_c
�      � 1,2 : �save_a
�      � 3 : �save_n
�      � 4 : �save_s
�      � 5 : �save_changed
�	    �
�  � 2 : �quit
��
�=0
�
�� �click_menu
�Ȏ icon% �
�"  � 1 : �openup(w%(settings%))
�C  � 3 : � active%(notepad%) � �openup(w%(notepad%)) � �set_n(1)
  � 4 : �openup(w%(year%))
C  � 5 : � active%(address%) � �openup(w%(address%)) � �set_a(1)
   � 6 : �openup(w%(letter%))
"�
,=0
6
@� �open_settings
J� �active%(settings%) �
T,  �selecticon(w%(settings%),14,weekends)
^(  �selecticon(w%(settings%),2,today)
h(  �selecticon(w%(settings%),3,fonts)
r'  �selecticon(w%(settings%),4,beep)
|+  �seticonval(w%(settings%),8,birthday)
�+  �seticontext(w%(settings%),12,other$)
��
�=0
�
�� �click_settings
�Ȏ icon% �
�
  � 16
�    �new_settings
�#    �closewindow(w%(settings%))
�(  � 15 : �closewindow(w%(settings%))
�
  � 17
�    �new_settings
�    �save_s
#    �closewindow(w%(settings%))
$  � 5,6 : d%=�incicon(8,5,6,1,9)

&�
0=0
:
D� �close_birthday
N$�quickclosewindow(w%(birthday%))
Xactive%(birthday%)=�
b � b_checking% � �c_birthdays
l=0
v
�� �close_alarm
�!�quickclosewindow(w%(alarm%))
�active%(alarm%)=�
�� a_checking% � �c_alarms
�=0
�
�� �click_alarm
�=0
�
�� �click_colours
�Ȏ icon% �
�?  � 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 : c_chosen%=icon%
�  � 16 : �closemenu


  � 17

-    c_colour%(d_month%,d_date%)=c_chosen%

!    �redo_c(d_month%,d_date%)

     �closemenu

*�

4=0

>

H� �menu_record

R� !blk%=0 �

\  a$(l_selected%,file)=""

f  type%(l_selected%)=-1

p  �set_l_data

z�

�=0

�

�� �click_record

�Ȏ icon% �

�	  � 4

�"    file$=a$(l_selected%,file)

�    �fileinfo(file$)

�    � exist% �

�      �mouseinfo

�      blk%!12=0

�      blk%!16=5

�      blk%!20=wind%

�      blk%!24=icon%
      blk%!28=mx%
      blk%!32=my%
      blk%!36=filesize%
$$      blk%!40=type%(l_selected%)
.      $(blk%+44)=file$+�0
8      !blk%=(�file$+48)��3
B(      ș"Wimp_SendMessage",18,blk%,0
L	    �
V+      �report("Letter file not found.")
`	    �
j  � 5,6
t    r_which%=6-icon%
~+    $other%=�icontext(wind%,r_which%+2)
�.    �openiconmenu(wind%,icon%,recordmenu%)
�
  � 10
�    �set_a(l_selected%)
�    �openup(w%(address%))
�&  � 11 : �closewindow(w%(record%))
��
�=0
�
�� �key_search
�� key%=13 � �search(0,1)
�=0
�
� �click_search

:� search_type%=1 � this%=this_note% � this%=this_name%
Ȏ icon% �
  � 2 : �search(0,1)
(  � 3 : �search(this%,1)
2  � 4 : �search(this%,-1)
<%  � 5 : �closewindow(w%(search%))
F�
P=0
Z
d� �drop_notepad
n=0
x
�� �close_notepad
��get_n_data
�=�
�
�� �click_notepad
�Ȏ icon% �
�  � 7 : �inc_n(-1)
�  � 8 : �inc_n(1)
�  � n_si% : �drag_n
�  � 11 : �add_n
�  � 12 : �delete_n
�  � 13 : �open_search(1)
�#  � 14 : �start_multi(notepad%)
�
=0

"� �key_notepad
,� key%>=32 � key%<=255 �
6   st$=�icontext(wind%,icon%)
@  � key%=127 �
J    � index%>0 �
T+      st$=�st$,index%-1)+�st$,index%+1)
^'      �seticontext(wind%,icon%,st$)
h	    �
r  �
|/    st$=�st$,index%)+�(key%)+�st$,index%+1)
�    index%+=1
�    rem$=""
�    first%=�
�	    �
�*      � rem$<>"" � st$<>"" � rem$+=" "
�      st$=rem$+st$
�      rem$=""
�      � �st$>30 �
�        p%=30
�
        �
�/          � �st$,p%,1)=" " � p%=-p% � p%-=1
�        � p%<=0
�        � p%=0 �
          rem$=�st$,31)
          st$=�st$,30)

        �
&          p%=-p%
0          rem$=�st$,p%+1)
:          st$=�st$,p%-1)
D
        �
N      �
X'      �seticontext(wind%,icon%,st$)
b      � first% �
l        � index%<=�st$ �
v          cicon%=icon%
�          cindex%=index%
�
        �
�          cicon%=icon%+1
�#          cindex%=index%-�st$-1
�
        �
�        first%=�
�      �
�      icon%+=1
�1      � icon%<=6 � st$=�icontext(wind%,icon%)
�    � rem$="" � icon%>6
�    � cicon%=7 �
�      �add_n
�$      �seticontext(wind%,1,rem$)
      cicon%=1
	    �
'    �putcaret(wind%,cicon%,cindex%)
   �
*�
4� key%=13 � �add_n
>=0
H
R� �key_address
\� key%=13 � �add_a
f=0
p
z� �click_address
�Ȏ icon% �
�  � 16 : �inc_a(-1)
�  � 19 : �inc_a(1)
�  � a_si% : �drag_a
�  � 24 : �letter_a
�  � 20 : �a_index
�"  � 25 : �l_select(this_name%)
�.  � 26 : �dial(�icontext(w%(address%),12))
��
�=0
�
�� �premenu_address
�&�seticontext(w%(insert%),5,other$)
=0

� �menu_address
$Ȏ !blk% �
.  � 0 : �add_a
8  � 1 : �delete_a
B  � 2 : �open_search(2)
L   � 3 : � names%>1 � �sort_a
V  � 4 : �save_a
`'  � 5 : � blk%!4=1 � �mark_birthday
j"  � 6 : �start_multi(address%)
t�
~=0
�
�� �close_address
��get_a_data
�=�
�
�� �drop_address
�=0
�
�� �key_entry
�� key%=13 �
�  �get_e
�  �closewindow(w%(entry%))
�

=0

� �close_entry
(
�get_e
2=�
<
F� �click_entry
PȎ icon% �
Z8  � 1,2,3,4,10,11,12,15 : �selecticon(wind%,icon%,�)
d
  � 13
n    �get_e
x     �closewindow(w%(entry%))
�  � 5,6,8,9
�    h%=e_time%�60
�    m%=e_time%�60
�    Ȏ icon% �
�      � 5 : h%-=1
�      � 6 : h%+=1
�      � 9 : m%-=1
�      � 8 : m%+=1
�	    �
�'    � h%>23 � h%=0 � � h%<0 � h%=23
�'    � m%<0 � m%=59 � � m%>59 � m%=0
�    �set_e_time(h%*60+m%)
�%  � 16 : �startdrag(entry%,icon%)

  � 17
    temp_entry%=this_entry%
    �set_e(-1)
"/    �remove_e(d_month%,d_date%,temp_entry%)
,    �calc_d
6
  � 18,19
@'    c_link%(icon%-18,this_entry%)=0
J    �forceredraw(w%(day%))
T�
^=0
h
r� �drop_entry
|Ȏ wind% �
�  � w%(notepad%)
�1    c_link%(1,this_entry%)=n_num%(this_note%)
�    c_changed%=�
�    �forceredraw(w%(day%))
�  � w%(address%)
�1    c_link%(0,this_entry%)=a_num%(this_name%)
�    c_changed%=�
�    �forceredraw(w%(day%))
��
�=0
�
�� �click_insert
�Ȏ icon% �
  � 7 : �insert
  � 8 : �closemenu
�
&=0
0
:� �start_multi(w0%)
Dmp$()=""
N� i%=3 � 8
X'  �seticonvalid(w%(multi%),i%,"Sp")
b� i%
l�set_multi(w0%,3)
v�openup(w%(multi%))
��
�
�� �click_multi
�Ȏ icon% �
�$  � 1 : �closewindow(w%(multi%))
�  � 2 : �print_multi
��
�=0
�
�� �print_multi
� ș "XPDriver_Info" � ;flags%
�>� flags% � 1 � �report("Printer manager not installed."):�
�ș"Hourglass_On"
pf%=�("printer:")
'ș"PDriver_SelectJob",pf%,"Planner"
� �
 M� � �:� �:ș "PDriver_AbortJob",pf%:�#pf%:ș"Hourglass_Off":�report(�$):�
*-ș"PDriver_PageSize" � ,w%,h%,l%,b%,r%,t%
4!rect%=0:rect%!4=0
>rect%!8=1420:rect%!12=1820
H!trans%=1<<16:trans%!4=0
Rtrans%!8=0:trans%!12=1<<16
\!plotat%=l%:plotat%!4=b%
f>ș"PDriver_GiveRectangle",0,rect%,trans%,plotat%,&FFFFFF00
p+ș"PDriver_DrawPage",1,blk%,0,0 � more%
zȕ more%
�C  ș"Font_FindFont",,"Trinity.Medium",12*16,12*16,0,0 � handle%
�?  ș"Font_FindFont",,"Trinity.Bold",12*16,12*16,0,0 � bold%
�  ș"Font_SetFont",handle%
�4  ș"ColourTrans_SetFontColours",0,&FFFFFF00,0,6
�  � i%=0 � 5
�    x0%=(i%�2)*700+20
�    y0%=1820-(i%�2)*600
�    � l%=0 � 20
�      � mp$(i%,l%)<>"" �
�"        � �mp$(i%,l%),1)="!" �
�$          ș"Font_SetFont",bold%
�6          �fancy(�mp$(i%,l%),2),x0%,y0%-(l%+1)*32)
�&          ș"Font_SetFont",handle%

        �
2          �fancy(mp$(i%,l%),x0%,y0%-(l%+1)*32)

        �
$      �
.    � l%
8
  � i%
B,  ș"PDriver_GetRectangle",,blk% � more%
L  ș"Font_LoseFont",handle%
V  ș"Font_LoseFont",bold%
`�
jș"PDriver_EndJob",pf%
t� �
~	�#pf%
�ș"Hourglass_Off"
��closewindow(w%(multi%))
��
�
�� �fancy(st$,x%,y%)
�
� tab%
�tab%=�st$,�9)
�� tab%=0 �
�&  ș"Font_Paint",,st$,%10100,x%,y%
��
�+  � tab%>1 � �fancy(�st$,tab%-1),x%,y%)
�#  �fancy(�st$,tab%+1),x%+80,y%)
�


� �drop_multi
$�set_multi(�id(wind%),dragicon%)
(=0
2
<� �set_multi(w%,i%)
Ficon$=""
P� l%=0 � 20
Z  mp$(i%-3,l%)=""
d� l%
nȎ w% �
x  � address%
�    icon$="paddress"
�    � type=name � dob
�1      mp$(i%-3,type-name)=a$(this_name%,type)
�    � type
�#    mp$(i%-3,0)="!"+mp$(i%-3,0)
�  � day%
�    icon$="pdays"
�    p%=1
�    mp$(i%-3,0)="!"+t_date$
�(    next%=c_first%(d_month%,d_date%)
�    ȕ next%<>-1 � p%<=20
�J      � c_type%(next%)�256 � time$=�time(c_time%(next%))+�9 � time$=""
�,      mp$(i%-3,p%)=time$+c_entry$(next%)
      next%=c_next%(next%)
      p%+=1
	    �
"  � notepad%
,    icon$="pnotepad"
6    � i2%=0 � 5
@5      mp$(i%-3,i2%)=�icontext(w%(notepad%),i2%+1)
J
    � i2%
T  � letter%
^    icon$="pletters"
h    t$=�9+�9+�9+�9+�9
r@    mp$(i%-3,0)="!Name"+t$+"Last Sent"+�9+�9+"Last Received"
|    � letters% �
�      � l%=1 � letters%
�        name%=l_list%(l%)
�M        mp$(i%-3,l%)=a$(name%,name)+t$+a$(name%,sent)+�9+�9+a$(name%,rec)
�      � l%
�	    �
�
�  icon$="p"
��
�*�seticonvalid(w%(multi%),i%,"S"+icon$)
�/� icon$="p" � �report("Cannot print this.")
��
�
�� �click_print
Ȏ icon% �
  � 4 : �closemenu
  � 5 : �print_year
&�
0=0
:
D� �preopen_year
N� active%(year%) �
X  !q%=w%(c_horz%)
b!  ș"Wimp_GetWindowState",,q%
l+  � q%!28=blk%!28 � blk%!28=w%(c_vert%)
v�
�=0
�
�� �open_year
�9� active%(year%)=� � today=� � �new_day(this_date%,1)
��window_state(w%(year%))
�!blk%=w%(c_horz%)
�blk%!8=blk%!16-m_height%
�
blk%!24=0
��openwindow
��window_state(w%(year%))
�!blk%=w%(c_vert%)
�blk%!12=blk%!4+d_width%
�blk%!16=blk%!16

blk%!20=0
blk%!28=w%(c_horz%)
�openwindow
 =0
*
4� �close_year
>�closewindow(w%(c_horz%))
H�closewindow(w%(c_vert%))
R=�
\
f� �menu_year
pȎ !blk% �
z  � 1 : �save_c
��
�=0
�
�� �click_year
�mx%-=wx%(year%)
�my%-=wy%(year%)
�m%=mx%�c_width%
�� m%>=0 � m%<=12 �
�%  d%=((-my%)�c_height%)-sd%(m%)+1
�.  � d%>=1 � d%<=mml%(m%) � �new_day(d%,m%)
��
�=0
�
� �redraw_year
font_col%=-1

� fonts �
$C  ș"Font_FindFont",,"Trinity.Medium",12*16,12*16,0,0 � handle%
.  ș"Font_SetFont",handle%
8�
Bm0%=x0%�c_width%
Lm1%=x1%�c_width%
Vd1%=(-y0%)�c_height%
`d0%=(-y1%)�c_height%
j� m%=m0% � m1%
t  � m%>=0 � m%<=12 �
~)    month%=((m%+this_month%+10)�12)+1
�    x_pos%=wx%+m%*c_width%
�    � d%=d0% � d1%
�/      � d%>=sd%(m%) � d%<sd%(m%)+mml%(m%) �
�#        y_pos%=wy%-d%*c_height%
�        date%=d%-sd%(m%)+1
�        � opt1% �
�          f_col%=0
�
        �
�(          f_col%=c_colour%(m%,date%)
�D          � f_col%=0 � weekends=� � (d%�7=0 � d%�7=6) � f_col%=1
�
        �
�)        � font_col%<>f_col% � fonts �
b          ș"ColourTrans_SetFontColours",0,!(deskpal%+f_col%*4),!(deskpal%+b_col%(f_col%)*4),6

          font_col%=f_col%

        �
        � f_col% �
(<          ș"ColourTrans_SetGCOL",!(deskpal%+(f_col%*4))
25          ȓ Ȑ x_pos%,y_pos%,c_width%,-c_height%
<
        �
F/        ș"ColourTrans_SetGCOL",deskpal%!28
P0        ȓ x_pos%,y_pos%,c_width%,-c_height%
ZL        � b_col%(f_col%)=0 � fonts=0 � ș"ColourTrans_SetGCOL",!deskpal%
d.        �print(�(date%),x_pos%+8,y_pos%-8)
nz        � c_first%(m%,date%)>-1 � opt0%=� � �print(�snip(c_entry$(c_first%(m%,date%)),c_width%-50),x_pos%+46,y_pos%-8)
x      �
�    � d%
�  �
�� m%
�'� fonts � ș"Font_LoseFont",handle%
�=0
�
�� �snip(st$,max%)
�ȕ �string_width(st$)>max%
�  st$=�st$,�st$-1)
��
�=st$
�
�� �print(st$,x%,y%)

� fonts �
0  ș"Font_Paint",handle%,st$,%10100,x%,y%-20
�
"
  � x%,y%
,
  �st$
6�
@�
J
T� �string_width(st$)
^� width%,x0%,x1%
h
� fonts �
r1  ș"Font_StringBBox",handle%,st$ � ,x0%,,x1%
|  width%=x1%-x0%
�,  ș"Font_ConverttoOS",,width% � ,width%
��
�  width%=�st$*16
��
�=width%
�
�� �click_c_horz
�=0
�
�� �redraw_c_horz
�
� fonts �
�C  ș"Font_FindFont",,"Trinity.Medium",12*16,12*16,0,0 � handle%
�  ș"Font_SetFont",handle%
 >  ș"ColourTrans_SetFontColours",0,!deskpal%,deskpal%!28,6
 �
 )  ș"ColourTrans_SetGCOL",deskpal%!28
 &�
 0m0%=x0%�c_width%
 :m1%=x1%�c_width%
 Dy_pos%=wy%-8+p_y1%
 N� m%=m0% � m1%
 X  � m%>=0 � m%<=12 �
 b)    month%=((m%+this_month%+10)�12)+1
 l`    �print(month$(month%),wx%+m%*c_width%+(c_width%-�string_width(month$(month%)))/2,y_pos%)
 v  �
 �� m%
 �'� fonts � ș"Font_LoseFont",handle%
 �=0
 �
 �� �click_c_vert
 �=0
 �
 �� �redraw_c_vert
 �
� fonts �
 �C  ș"Font_FindFont",,"Trinity.Medium",12*16,12*16,0,0 � handle%
 �  ș"Font_SetFont",handle%
 �>  ș"ColourTrans_SetFontColours",0,!deskpal%,deskpal%!28,6
 ��
!)  ș"ColourTrans_SetGCOL",deskpal%!28
!�
!d1%=(-y0%)�c_height%
! d0%=(-y1%)�c_height%
!*x_pos%=wx%+8+p_x0%
!4� d%=d0% � d1%
!>G  � d%>=0 � d%<=36 � �print(day$(d%�7),x_pos%,wy%-(d%*c_height%+8))
!H� d%
!R'� fonts � ș"Font_LoseFont",handle%
!\=0
!f
!p� �premenu_day
!z� i%=0 � 15
!�C  �selecticon(w%(colours%),i%,(c_colour%(d_month%,d_date%)=i%))
!�� i%
!�)c_chosen%=c_colour%(d_month%,d_date%)
!�=0
!�
!�� �menu_day
!�Ȏ !blk% �
!�  � 1 : �add_e
!�  � 2 : �start_multi(day%)
!��
!�=0
!�
!�� �click_day
"mx%-=wx%(day%)
"my%-=wy%(day%)
"$next%=c_first%(d_month%,d_date%)
"$e%=0
".ȕ next%<>-1
"8  �calc_d_ords(e%)
"BG  � mx%>!d_icon% � my%>d_icon%!4 � mx%<d_icon%!8 � my%<d_icon%!12 �
"L    link%=-1
"V    � i%=0 � 1
"`Q      � mx%>!l_icon%(i%) � mx%<l_icon%(i%)!8 � c_link%(i%,next%)>0 � link%=i%
"j    � i%
"t    Ȏ link% �
"~
      � 0
"�        l_name%=-1
"�        � n%=1 � names%
"�8          � a_num%(n%)=c_link%(0,next%) � l_name%=n%
"�        � n%
"�        � l_name%>0 �
"�          �set_a(l_name%)
"�#          �openup(w%(address%))
"�
        �
"�9          �report("Linked address has been deleted.")
"�
        �
"�
      � 1
"�        l_note%=-1
#        � n%=1 � notes%
#
8          � n_num%(n%)=c_link%(1,next%) � l_note%=n%
#        � n%
#        � l_note%>0 �
#(          �set_n(l_note%)
#2#          �openup(w%(notepad%))
#<
        �
#F6          �report("Linked note has been deleted.")
#P
        �
#Z      � -1
#d        �set_e(next%)
#n	    �
#x  �
#�  next%=c_next%(next%)
#�  e%+=1
#��
#�=0
#�
#�� �redraw_day
#�$next%=c_first%(d_month%,d_date%)
#�e%=0
#�ȕ next%<>-1
#�  �calc_d_ords(e%)
#�G  � c_type%(next%)�256 � time$=�time(c_time%(next%))+" " � time$=""
#�)  $(d_icon%!20)=time$+c_entry$(next%)
#�3  $(d_icon%!24)="S"+e_icon$(c_type%(next%)�255)
$   ș"Wimp_PlotIcon",,d_icon%
$  � i%=0 � 1
$    � c_link%(i%,next%) �
$"!      l_icon%(i%)!4=d_icon%!4
$,#      l_icon%(i%)!12=d_icon%!12
$6(      ș"Wimp_PlotIcon",,l_icon%(i%)
$@	    �
$J
  � i%
$T  next%=c_next%(next%)
$^  e%+=1
$h�
$r=0
$|
$�� �open_letter
$�� �active%(letter%) �
$�
  �calc_l
$�  l_selected%=0
$��
$�=0
$�
$�� �redraw_letter
$�� letters% �
$�  � l%=1 � letters%
$�    �calc_l_ords(l%)
$�,    � l_icon%!4<=y1% � l_icon%!12>=y0% �
$�      name%=l_list%(l%)
%y      $(l_icon%!20)=" "+a$(name%,name)+�32-�a$(name%,name)," ")+a$(name%,sent)+�15-�a$(name%,sent)," ")+a$(name%,rec)
%$      ș"Wimp_PlotIcon",,l_icon%
%	    �
%&
  � l%
%0�
%:=0
%D
%N� �menu_letter
%X%� !blk%=0 � �start_multi(letter%)
%b=0
%l
%v� �click_letter
%�mx%-=wx%(letter%)
%�my%-=wy%(letter%)
%�� letters% �
%�  new%=0
%�  � l%=1 � letters%
%�    �calc_l_ords(l%)
%�^    � !l_icon%<=mx% � l_icon%!4<=my% � l_icon%!8>=mx% � l_icon%!12>=my% � new%=l_list%(l%)
%�
  � l%
%�  �l_select(new%)
%��
%�=0
%�
%�� �menu_unknown
&Ȏ openmenu% �
&  � index_menu%
&J    � !blk%>=0 � blk%!4>=0 � �set_a(?(!(sub_index%+40+blk%!4*24)-1)+1)
&   � recordmenu%
&*    Ȏ !blk% �
&4C      � 0 : �new_l_sr(�date(this_date%,this_month%,this_year%))
&>E      � 1 : �new_l_sr(�date(this_date%-1,this_month%,this_year%))
&H"      � 2 : �new_l_sr($other%)
&R	    �
&\�
&f=0
&p
&z� �new_l_sr(new$)
&�+� new$<>a$(l_selected%,sent+r_which%) �
&�(  a$(l_selected%,sent+r_which%)=new$
&�  � l%=1 � letters%
&�#    � l_list%(l%)=l_selected% �
&�      �calc_l_ords(l%)
&�R      ș"Wimp_ForceRedraw",w%(letter%),!l_icon%,l_icon%!4,l_icon%!8,l_icon%!12
&�	    �
&�
  � l%
&�  �set_l_data
&�  a_changed%=�
&��
&��
&�
'2� �menu_warning(sub_menu%,sub_x%,sub_y%,menu%)
'Ȏ openmenu% �
'  � index_menu%
'$+    c%=�($(index_menu%+40+menu%*24))-64
'.    ptr%=sub_index%
'8!    �menutitle("Select",ptr%)
'B    sub%=sub_block%
'L    � name%=1 � names%
'V      � g%(name%)=c% �
'`        ?sub%=name%-1
'j"        len%=�(a$(name%,name))
't$        $(sub%+1)=a$(name%,name)
'~        ptr%+=24
'�        !ptr%=0
'�        ptr%!4=0
'�)        ptr%!8=(7<<24) � (%100010001)
'�        ptr%!12=sub%+1
'�        ptr%!16=-1
'�        ptr%!20=len%+1
'�#        � len%>max% � max%=len%
'�        sub%+=len%+2
'�      �
'�    � name%
'�    �endmenu(ptr%)
'�7    ș"Wimp_CreateSubMenu",,sub_menu%,sub_x%,sub_y%
(�
(
�
(
(� ----Non Wimp routines----
((
(2� �print_year
(< ș "XPDriver_Info" � ;flags%
(F>� flags% � 1 � �report("Printer manager not installed."):�
(Pș"Hourglass_On"
(Zpf%=�("printer:")
(d'ș"PDriver_SelectJob",pf%,"Planner"
(n� �
(xM� � �:� �:ș "PDriver_AbortJob",pf%:�#pf%:ș"Hourglass_Off":�report(�$):�
(�-ș"PDriver_PageSize" � ,w%,h%,l%,b%,r%,t%
(�!opt0%=�selected(w%(print%),2)
(�$opt1%=�(�selected(w%(print%),3))
(�#times%=-�selected(w%(print%),6)
(�wx%=-p_x0%:wy%=-p_y0%
(�!rect%=0:rect%!4=0
(�,rect%!8=p_x1%-p_x0%:rect%!12=p_y1%-p_y0%
(�.!trans%=0:trans%!4=-(1<<15)*(1+times%)*0.8
(�/trans%!8=(1<<15)*(1+times%)*0.8:trans%!12=0
(�� time%=0 � times%
(�3  !plotat%=b%:plotat%!4=t%+(t%-(b%+8000))*time%
(�@  ș"PDriver_GiveRectangle",0,rect%,trans%,plotat%,&FFFFFF00
(�-  ș"PDriver_DrawPage",1,blk%,0,0 � more%
)  ȕ more%
)    x0%=!blk%-wx%
)    y0%=blk%!4-wy%
)"    x1%=blk%!8-wx%
),    y1%=blk%!12-wy%
)6    d%=�redraw_year
)@    d%=�redraw_c_horz
)J    d%=�redraw_c_vert
)T.    ș"PDriver_GetRectangle",,blk% � more%
)^  �
)h� time%
)rș"PDriver_EndJob",pf%
)|� �
)�	�#pf%
)�ș"Hourglass_Off"
)��closemenu
)��
)�
)�
� �insert
)�insptr%=insdata%
)�>� �selected(w%(insert%),2) � �add_ins(a$(this_name%,name))
)� � �selected(w%(insert%),3) �
)�  � i%=address � phone-1
)�#    �add_ins(a$(this_name%,i%))
)�
  � i%
)��
*?� �selected(w%(insert%),4) � �add_ins(a$(this_name%,phone))
*?� �selected(w%(insert%),5) � �add_ins(a$(this_name%,other))
*=� �selected(w%(insert%),6) � �add_ins(a$(this_name%,dob))
*&inslen%=insptr%
*0insptr%=insdata%
*:�closemenu
*Da_changed%=�
*N�
*X
*b� �add_ins(st$)
*l� �st$ �
*v  $insptr%=st$
*�  insptr%+=�st$+1
*��
*��
*�
*�� �new_settings
*�old%=s_changed%
*� �setting_change(14,weekends)
*��setting_change(2,today)
*��setting_change(3,fonts)
*��setting_change(4,beep)
*�"new%=�iconval(w%(settings%),8)
*�� new%<>birthday �
*�  birthday=new%
+  s_changed%=�
+�
+$new$=�icontext(w%(settings%),12)
+ � new$<>other$ �
+*  other$=new$
+4  s_changed%=�
+>.  �seticontext(w%(address%),10,other$+":")
+H�
+RA� s_changed%<>old% � active%(year%) � �forceredraw(w%(year%))
+\�
+f
+p"� �setting_change(icon%,� val)
+z&new=�selected(w%(settings%),icon%)
+�� new<>val �
+�
  val=new
+�  s_changed%=�
+��
+��
+�
+�� �c_birthdays
+��
+�  b_person%+=1
+�  � b_person%>names% �
+�    b_person%=0
+�    b_days%+=1
+�    a_date%+=1
,"    � a_date%>mml%(a_month%) �
,      a_date%=1
,      a_month%+=1
,$	    �
,.  �
,8    � flag%(b_person%)�2 �
,B#      st$=a$(b_person%,dob)+"."
,L      d%=�next_number(st$)
,V      m%=�next_number(st$)
,`k      � d%=a_date% � m%=((a_month%+this_month%-2)�12)+1 � �birthday(b_person%,a_date%,a_month%,b_days%)
,j	    �
,t  �
,~+� active%(birthday%) � b_days%>birthday
,�"b_checking%=active%(birthday%)
,��
,�
,�+� �birthday(person%,date%,month%,days%)
,�N�seticontext(w%(birthday%),2,�date(date%,month%+this_month%-1,this_year%))
,�2�seticontext(w%(birthday%),3,a$(person%,name))
,� �openincentre(w%(birthday%))
,��
,�
,�� �next_number(� st$)
,�
� num%
,�
num%=0
-"ȕ �st$,1)>="0" � �st$,1)<="9"
-
  num%=�(�st$,1))+num%*10
-  st$=�st$,2)
-�
-(st$=�st$,2)
-2	=num%
-<
-F� �c_alarms2
-P"a_next%=c_first%(1,this_date%)
-Zalarm_set%=0
-dȕ a_next%<>-1
-nm  � (c_type%(a_next%)�255)=3 � (alarm_set%=0 � c_time%(a_next%)<c_time%(alarm_set%)) � alarm_set%=a_next%
-x  a_next%=c_next%(a_next%)
-��
-��
-�
-�� �c_alarms
-�a_checking%=�
-��
-�Q  � a_next%=0 � a_next%=c_first%(a_month%,a_date%) � a_next%=c_next%(a_next%)
-�  � a_next%=-1 �
-�    a_date%+=1
-�"    � a_date%>mml%(a_month%) �
-�      a_date%=1
-�      a_month%+=1
-�	    �
.    a_next%=0
.  �
.E    � (c_type%(a_next%)�255)=3 � �alarm(a_next%,a_date%,a_month%)
."  �
.,9� active%(alarm%) � (a_date%=this_date% � a_month%=1)
.6a_checking%=active%(alarm%)
.@� a_checking%=� �
.J  �c_alarms2
.T  b_person%=0
.^  b_days%=0
.h  �c_birthdays
.r�
.|�
.�
.�� �alarm(pos%,date%,month%)
.��dial("999999")
.�#c_type%(pos%)=c_type%(pos%)�256
.�6time$=�date(date%,month%+this_month%-1,this_year%)
.�time$=�time$,�time$-3)
.�?� c_type%(pos%)�256 � time$=�time(c_time%(pos%))+", "+time$
.�$�seticontext(w%(alarm%),2,time$)
.�-�seticontext(w%(alarm%),3,c_entry$(pos%))
.��openincentre(w%(alarm%))
.� � a_checking%=� � �c_alarms2
.��
.�
/� �open_search(type%)
/search_type%=type%
/"�seticontext(w%(search%),0,"")
/&"�openwindowasmenu(w%(search%))
/0�
/:
/D� �search(rec%,inc%)
/N st$=�icontext(w%(search%),0)
/XȎ search_type% �
/b	  � 1
/l    �get_n_data
/v    max%=notes%
/�	  � 2
/�    �get_a_data
/�    max%=names%
/��
/�match%=�
/�rec%+=inc%
/�&ȕ match%=� � rec%>=1 � rec%<=max%
/�  Ȏ search_type% �
/�    � 1
/�      � n%=0 � 5
/�3        � �match(note$(rec%,n%),st$) � match%=�
/�      � n%
/�    � 2
0      � type=name � dob
02        � �match(a$(rec%,type),st$) � match%=�
0      � type
0   �
0*  � match%=� � rec%+=inc%
04�
0>� match% �
0H  Ȏ search_type% �
0R    � 1 : �set_n(rec%)
0\    � 2 : �set_a(rec%)
0f  �
0p�
0z  �closewindow(w%(search%))
0��
0��
0�
0�� �match(st$,search$)
0�� match%,i%,i2%
0�match%=�
0�i%=�search$,"*")
0�� i%>0 �
0�  i2%=�st$,�search$,i%-1))
0�:  � i2%>0 � match%=�match(�st$,i2%+i%),�search$,i%+1))
0��
0�   � �st$,search$) � match%=�
0��
1=match%
1
1� �set_n(new%)
1$5� active%(notepad%) � this_note%>-1 � �get_n_data
1.;� (new%<>this_note% � active%(notepad%)=�) � new%<>-1 �
18  this_note%=new%
1B  � i%=0 � 5
1L<    �seticontext(w%(notepad%),i%+1,note$(this_note%,i%))
1V
  � i%
1`"  �resetcaret(w%(notepad%),-1)
1j3  � active%(notepad%)=� � �openup(w%(notepad%))
1t  �set_n_scroll
1~�
1�*� new%=-1 � �closewindow(w%(notepad%))
1��
1�
1�� �get_n_data
1�� i%=0 � 5
1�'  new$=�icontext(w%(notepad%),i%+1)
1�$  � new$<>note$(this_note%,i%) �
1�!    note$(this_note%,i%)=new$
1�    n_changed%=�
1�  �
1�� i%
1��
2
2
� �blank_n
2� i%=0 � 5
2  note$(this_note%,i%)=""
2(� i%
22�
2<
2F� �inc_n(inc%)
2PL� this_note%+inc%>=1 � this_note%+inc%<=notes% � �set_n(this_note%+inc%)
2Z�
2d
2n
� �drag_n
2xn_off%=mx%-n_s5%
2�P�startuserdrag(notepad%,0,n_s0%+n_off%,my%,n_s4*(notes%-1)+n_s0%+n_off%,my%)
2��
2�
2�� �set_n_scroll
2�#�deleteicon(w%(notepad%),n_si%)
2�n_s4=(n_s1%/notes%)
2�#n_s5%=n_s0%+n_s4*(this_note%-1)
2�!q%=w%(notepad%)
2�q%!4=n_s5%
2�q%!8=n_s2%
2�q%!12=q%!4+n_s4
2�q%!16=n_s3%
2�q%!20=n_sf%
3#ș"Wimp_CreateIcon",,q% � n_si%
3�redoicon(w%(notepad%),9)
3�
3"
3,� �add_n
36� notes%<max_n% �
3@  notes%+=1
3J  �set_n(notes%)
3T  last_n%+=1
3^  n_num%(notes%)=last_n%
3h!  �putcaret(w%(notepad%),1,0)
3r�
3|   �report("Too many notes.")
3��
3��
3�
3�� �delete_n
3��blank_n
3�temp%=this_note%
3�ȕ temp%<notes%
3�  � i%=0 � 5
3�)    note$(temp%,i%)=note$(temp%+1,i%)
3�
  � i%
3�#  n_num%(temp%)=n_num%(temp%+1)
3�  temp%+=1
3��
4temp%=this_note%-1
4� temp%=0 � temp%=1
4this_note%=-1
4&� notes%>1 � notes%-=1
40�set_n(temp%)
4:�
4D
4N� �remove_e(m%,d%,e%)
4Xnext%=c_first%(m%,d%)
4b� next%=e% �
4l!  c_first%(m%,d%)=c_next%(e%)
4v�
4�  ȕ c_next%(next%)<>e%
4�    next%=c_next%(next%)
4�  �
4�   c_next%(next%)=c_next%(e%)
4��
4��
4�
4�� �insert_e(m%,d%,e%)
4�
after%=-1
4�next%=c_first%(m%,d%)
4�c_next%(e%)=e%
4�� c_type%(e%)�256 �
4�  ȕ next%>-1
5I    � c_time%(e%)>c_time%(next%) � c_type%(next%)>=256 � after%=next%
5    next%=c_next%(next%)
5  �
5 �
5*  ȕ next%>-1
543    � c_type%(next%)>c_type%(e%) � after%=next%
5>    next%=c_next%(next%)
5H  �
5R�
5\� after%=-1 �
5f$  Ȕ c_first%(m%,d%),c_next%(e%)
5p�
5z$  Ȕ c_next%(e%),c_next%(after%)
5��
5�e_changed%=�
5��
5�
5�� �mark_birthday
5�st$=a$(this_name%,dob)+"."
5�d%=�next_number(st$)
5�m%=�next_number(st$)
5�%� d%>=1 � d%<=31 � m%>=1 � m%<=12
5�!m%=((12+m%-this_month%)�12)+1
5�� c_last%<c_max% �
5�  c_last%+=1
5�W  c_entry$(c_last%)=�a$(this_name%,name),�a$(this_name%,name)," ")-1)+"'s birthday"
6  c_type%(c_last%)=1
6  c_time%(c_last%)=0
6+  c_link%(0,c_last%)=a_num%(this_name%)
6$  c_link%(1,c_last%)=0
6.  �insert_e(m%,d%,c_last%)
68I  � d_month%=m% � d_date%=d% � active%(day%) � �forceredraw(w%(day%))
6B  c_changed%=�
6L  �redo_c(m%,d%)
6V�
6`&  �report("Book of days is full.")
6j�
6t�
6~
6�� �add_e
6�� c_last%<c_max% �
6�  c_last%+=1
6�  � d_items%=0 �
6�*    c_first%(d_month%,d_date%)=c_last%
6�  �
6�(    last%=c_first%(d_month%,d_date%)
6�    ȕ c_next%(last%)<>-1
6�      last%=c_next%(last%)
6�	    �
6�    c_next%(last%)=c_last%
6�  �
7  c_entry$(c_last%)=""
7
  c_type%(c_last%)=0
7  c_time%(c_last%)=0
7  c_next%(c_last%)=-1
7(  c_link%(0,c_last%)=0
72  c_link%(1,c_last%)=0
7<  �set_e(c_last%)
7F
  �calc_d
7P�
7Z&  �report("Book of days is full.")
7d�
7n�
7x
7�� �get_e
7�e_changed%=�
7�"o_entry$=c_entry$(this_entry%)
7� o_time%=c_time%(this_entry%)
7� o_type%=c_type%(this_entry%)
7�1c_entry$(this_entry%)=�icontext(w%(entry%),0)
7�� i%=0 � 7
7�C  � �selected(w%(entry%),e_icon%(i%)) � c_type%(this_entry%)=i%
7�� i%
7�Z� �selected(w%(entry%),14) � c_type%(this_entry%)=c_type%(this_entry%)�256 � e_time%=0
7� c_time%(this_entry%)=e_time%
7�E� o_time%<>c_time%(this_entry%) � o_type%<>c_type%(this_entry%) �
7�-  �remove_e(d_month%,d_date%,this_entry%)
8-  �insert_e(d_month%,d_date%,this_entry%)
8�
86  � o_entry$<>c_entry$(this_entry%) � e_changed%=�
8"�
8,� e_changed% �
86  �forceredraw(w%(day%))
8@  �redo_c(d_month%,d_date%)
8J  c_changed%=�
8T�
8^2� d_month%=1 � d_date%=this_date% � �c_alarms2
8h�
8r
8|� �set_e(new%)
8�� new%<>-1 �
8�/  � active%(entry%)=� � �openup(w%(entry%))
8�/  �seticontext(w%(entry%),0,c_entry$(new%))
8�-  �putcaret(w%(entry%),0,�c_entry$(new%))
8�   �set_e_time(c_time%(new%))
8�  � i%=0 � 7
8�D    �selecticon(w%(entry%),e_icon%(i%),(i%=(c_type%(new%)�255)))
8�
  � i%
8�2  �selecticon(w%(entry%),14,c_type%(new%)�256)
8��
8�  �closewindow(w%(entry%))
8��
8�this_entry%=new%
9�
9
9� �set_e_time(e%)
9&(�seticontext(w%(entry%),7,�time(e%))
90e_time%=e%
9:�
9D
9N� �time(time%)
9X0=�"0"+�(time%�60),2)+":"+�"0"+�(time%�60),2)
9b
9l� �day(date%,month%,year%)
9vB=(date%+year%+(year%�4)+mo%(month%)+(year%�4=0 � month%<=2))�7
9�
9�� �date(date%,month%,year%)
9�� year%�4=0 � ml%(2)=29
9�� date%<1 � month%-=1
9�� month%>12 �
9�  month%-=12
9�  year%+=1
9��
9�� month%<1 �
9�  month%+=12
9�  year%-=1
9��
9�!� date%<1 � date%=ml%(month%)
:T=day$(�day(date%,month%,year%))+" "+�(date%)+" "+�month$(month%),3)+" "+�(year%)
:
:� �new_day(d%,m%)
: "� d%<>d_date% � m%<>d_month% �
:*  d_month%=m%
:4  d_date%=d%
:>
  �calc_d
:H>  t_date$=�date(d_date%,d_month%+this_month%-1,this_year%)
:R!  �newtitle(w%(day%),t_date$)
:\2  � active%(entry%) � �closewindow(w%(entry%))
:f#  �newtitle(w%(entry%),t_date$)
:p�
:z�openup(w%(day%))
:��
:�
:�� �redo_c(m%,d%)
:�d%=d%-1+sd%(m%)
:�`�redobox(w%(year%),m%*c_width%,-(d%*c_height%+c_height%),m%*c_width%+c_width%,-d%*c_height%)
:��
:�
:�
� �calc_d
:�d_items%=0
:�$next%=c_first%(d_month%,d_date%)
:�ȕ next%<>-1
:�  d_items%+=1
:�  next%=c_next%(next%)
;�
;K�setwindowextent(w%(day%),!d_icon%-8,-d_height%*d_items%,d_icon%!8+8,0)
;�reopen(w%(day%))
;$�
;.
;8� �calc_d_ords(e%)
;Bd_icon%!4=-(e%+1)*d_height%
;L"d_icon%!12=d_icon%!4+d_height%
;V�
;`
;j
� �load_c
;tc_file$=dir$+".Days"
;~� �fileexist(c_file$) �
;�  in_file=�(c_file$)
;�%  mf%=this_month%+this_year%*12-1
;�  ȕ ��#in_file
;�    �#in_file,m%
;�    �#in_file,d%
;�    �#in_file,colour%
;�    �#in_file,end%
;�    m%-=mf%
;�    � m%>=0 � m%<=12 �
;�"      c_colour%(m%,d%)=colour%
;�      prev%=-1
;�      ȕ �#in_file<>end%
<        c_last%+=1
<
'        �#in_file,c_entry$(c_last%)
<&        �#in_file,c_type%(c_last%)
<&        �#in_file,c_time%(c_last%)
<((        �#in_file,c_link%(0,c_last%)
<2(        �#in_file,c_link%(1,c_last%)
<<        c_next%(c_last%)=-1
<FI        � prev%=-1 � c_first%(m%,d%)=c_last% � c_next%(prev%)=c_last%
<P        prev%=c_last%
<Z      �
<d	    �
<n      �#in_file=end%
<x	    �
<�  �
<�  �#in_file
<��
<�c_changed%=�
<��
<�
<�
� �save_c
<�out_file=�(c_file$)
<�#mf%=this_month%+this_year%*12-1
<�� m%=0 � 12
<�  � d%=1 � mml%(m%)
<�3    � c_colour%(m%,d%)>0 � c_first%(m%,d%)>-1 �
<�      �#out_file,m%+mf%
=      �#out_file,d%
=%      �#out_file,c_colour%(m%,d%)
=      start%=�#out_file
="      �#out_file,0
=,      next%=c_first%(m%,d%)
=6      ȕ next%>-1
=@&        �#out_file,c_entry$(next%)
=J%        �#out_file,c_type%(next%)
=T%        �#out_file,c_time%(next%)
=^'        �#out_file,c_link%(0,next%)
=h'        �#out_file,c_link%(1,next%)
=r         next%=c_next%(next%)
=|      �
=�      end%=�#out_file
=�      �#out_file=start%
=�      �#out_file,end%
=�      �#out_file=end%
=�	    �
=�
  � d%
=�� m%
=��#out_file
=�c_changed%=�
=��
=�
=�� �l_select(new%)
=�l_selected%=new%
>B� l_selected%=0 � active%(record%) � �closewindow(w%(record%))
>� l_selected% �
>  �openup(w%(record%))
>&  �set_l_data
>0�
>:�
>D
>N� �set_l_data
>X4�seticontext(w%(record%),2,a$(l_selected%,sent))
>b3�seticontext(w%(record%),3,a$(l_selected%,rec))
>l� type%(l_selected%)>-1 �
>v!  �shadeicon(w%(record%),4,�)
>�@  �seticontext(w%(record%),4,�lastbit(a$(l_selected%,file)))
>�4  �setfileicon(w%(record%),4,type%(l_selected%))
>��
>�-  �seticontext(w%(record%),4,"<no link>")
>�.  �seticonvalid(w%(record%),4,"Sfile_xxx")
>�!  �shadeicon(w%(record%),4,�)
>��
>�/�newtitle(w%(record%),a$(l_selected%,name))
>��
>�
>�� �calc_l_ords(l%)
>� l_icon%!4=l_y0%-(l%-1)*l_y1%
>�l_icon%!12=l_icon%!4+l_y1%
?�
?
?
� �calc_l
? old%=letters%
?*l_change%=�
?4letters%=0
?>� name%=1 � names%
?H  � flag%(name%)�1 �
?R    letters%+=1
?\<    � l_list%(letters%)<>name% � l_list%(letters%)=name%
?f  �
?p� name%
?z"� letters%<>old% � l_change%=�
?�]� l_change% � �setwindowextent(w%(letter%),!l_icon%,l_y0%-(letters%-1)*l_y1%,l_icon%!8,0)
?�-� active%(letter%) � �reopen(w%(letter%))
?��
?�
?�� �dial(num$)
?�ș"Sound_Configure" � i%
?�� i%<2 � Ƞ 2
?�*channelvoice 1 1
?�*channelvoice 2 1
?�ș"Sound_QBeat",-2
?�ȕ num$<>""
?�'digit%=�" 123456789*0#",�num$,1))-2
?�� digit%>-1 �
@col%=digit%�3
@row%=digit%�3
@Cș"Sound_QSchedule",i%*30+5,,&FFF80001,&40000 � col_tone%(col%)
@$>ș"Sound_QSchedule",-1,,&FFF80002,&40000 � row_tone%(row%)
@.	i%+=1
@8�
@Bnum$=�num$,2)
@L�
@V�
@`
@j
� �save_a
@t�get_a_data
@~out_file=�(a_file$)
@��#out_file,last_a%
@��#out_file,names%
@�� name%=1 � names%
@�  � type=name � file
@�!    �#out_file,a$(name%,type)
@�  � type
@�  �#out_file,flag%(name%)
@�  �#out_file,type%(name%)
@�  �#out_file,a_num%(name%)
@�� name%
@��#out_file
@�a_changed%=�
A�
A

A
� �load_a
Aa_file$=dir$+".Address"
A(� �fileexist(a_file$) �
A2  in_file=�(a_file$)
A<  �#in_file,last_a%
AF  �#in_file,names%
AP  � name%=1 � names%
AZ    � type=name � file
Ad"      �#in_file,a$(name%,type)
An    � type
Ax    �#in_file,flag%(name%)
A�    �#in_file,type%(name%)
A�    �#in_file,a_num%(name%)
A�
  � name%
A�  �#in_file
A��
A�  last_a%=1
A�  names%=1
A�  this_name%=1
A�   a_num%(this_name%)=last_a%
A�  �get_a_data
A��
A�a_changed%=�
A��
B
B
� �sort_a
B�get_a_data
B"ș"Hourglass_On"
B,� n%=1 � names%
B6  ind%(n%)=n%
B@  temp$(n%)=�last_name(n%)
BJ6  temp$(n%)+=�a$(n%,name),�a$(n%,name)-�temp$(n%))
BT� n%
B^�
Bh
  swap%=�
Br  � n%=1 � names%-1
B|E    � temp$(ind%(n%))>temp$(ind%(n%+1)) � temp$(ind%(n%+1))<>"" �
B�       Ȕ ind%(n%),ind%(n%+1)
B�      swap%=�
B�	    �
B�
  � n%
B�
� swap%=�
B�� i%=name � file
B�  � n%=1 � names%
B�    temp$(n%)=a$(n%,i%)
B�
  � n%
B�  � n%=1 � names%
B�!    a$(n%,i%)=temp$(ind%(n%))
B�
  � n%
B�� i%
C� n%=1 � names%
C  g%(n%)=flag%(n%)
C� n%
C&� n%=1 � names%
C0  flag%(n%)=g%(ind%(n%))
C:� n%
CD� n%=1 � names%
CN  g%(n%)=type%(n%)
CX� n%
Cb� n%=1 � names%
Cl  type%(n%)=g%(ind%(n%))
Cv� n%
C�� n%=1 � names%
C�  g%(n%)=a_num%(n%)
C�� n%
C�� n%=1 � names%
C�  a_num%(n%)=g%(ind%(n%))
C�� n%
C�ș"Hourglass_Off"
C�new%=this_name%
C�this_name%=-1
C��set_a(new%)
C�2� active%(record%) � �closewindow(w%(record%))
C�� active%(letter%) �
C�
  �calc_l
D  �forceredraw(w%(letter%))
D�
D�
D 
D*� �letter_a
D4<�shadeicon(w%(address%),25,� �selected(w%(address%),24))
D>�get_a_data
DHK� l_selected%=this_name% � active%(record%) � �closewindow(w%(record%))
DR � active%(letter%) � �calc_l
D\�
Df
Dp� �a_index
Dz
a%()=0
D�ptr%=index_menu%
D�� name%=1 � names%
D�   c%=�(�last_name(name%))-64
D�   � c%>=33 � c%<=58 � c%-=32
D�  � c%>=1 � c%<=26 �
D�    a%(c%)+=1
D�    g%(name%)=c%
D�  �
D�� name%
D��menutitle("Index",ptr%)
D�� a%=1 � 26
D�#  st$=�(a%+64)+">+,sub_index%,"
D�$  � a%(a%) � �menuitem(st$,ptr%)
E� a%
E�endmenu(ptr%)
E.�openiconmenu(w%(address%),20,index_menu%)
E$�
E.
E8
� �drag_a
EBa_off%=mx%-a_s5%
ELP�startuserdrag(address%,0,a_off%+a_s0%,my%,a_s4*(names%-1)+a_off%+a_s0%,my%)
EV�
E`
Ej� �null
Et�mouseinfo
E~Ȏ dragid% �
E�  � address%
E�,    new%=((mx%-(a_off%+a_s0%))/a_s4)+1.5
E�7    � new%<1 � new%=1 � � new%>names% � new%=names%
E�    �set_a(new%)
E�  � notepad%
E�,    new%=((mx%-(n_off%+n_s0%))/n_s4)+1.5
E�7    � new%<1 � new%=1 � � new%>notes% � new%=notes%
E�    �set_n(new%)
E��
E�#� but%=0 � dragid%>0 � �enddrag
E�� insptr%<inslen% �
E�  �getcaret
F  � cwind%<>w%(address%) �
F
$    ș"Wimp_ProcessKey",?insptr%
F    insptr%+=1
F  �
F(�
F2�
F<
FF� �this_time
FP	!q%=1
FZș"OS_Word",14,q%
Fd=�(�~(q%?4))*60+�(�~(q%?5))
Fn
Fx� �inc_a(inc%)
F�L� this_name%+inc%>=1 � this_name%+inc%<=names% � �set_a(this_name%+inc%)
F��
F�
F�� �set_a(new%)
F�5� active%(address%) � this_name%>-1 � �get_a_data
F�;� (this_name%<>new% � active%(address%)=�) � new%<>-1 �
F�  this_name%=new%
F�  � type=name � dob
F�B    �seticontext(w%(address%),icon%(type),a$(this_name%,type))
F�  � type
F�6  �selecticon(w%(address%),24,flag%(this_name%)�1)
F�6  �selecticon(w%(address%),15,flag%(this_name%)�2)
F�8  �shadeicon(w%(address%),25,(�flag%(this_name%))�1)
G"  �resetcaret(w%(address%),-1)
G  �set_a_scroll
G3  � active%(address%)=� � �openup(w%(address%))
G"�
G,*� new%=-1 � �closewindow(w%(address%))
G6�
G@
GJ� �get_a_data
GT
� new%
G^� type=name � dob
Gh.  new$=�icontext(w%(address%),icon%(type))
Gr#  � new$<>a$(this_name%,type) �
G|    a_changed%=�
G�     a$(this_name%,type)=new$
G�  �
G�
� type
G�
new%=0
G�.� �selected(w%(address%),24) � new%=new%�1
G�.� �selected(w%(address%),15) � new%=new%�2
G�� new%<>flag%(this_name%) �
G�  a_changed%=�
G�  flag%(this_name%)=new%
G��
G��
G�
G�� �set_a_scroll
H+�seticonval(w%(address%),21,this_name%)
H'�seticonval(w%(address%),23,names%)
H#�deleteicon(w%(address%),a_si%)
H&a_s4=(a_s1%/names%)
H0#a_s5%=a_s0%+a_s4*(this_name%-1)
H:!q%=w%(address%)
HDq%!4=a_s5%
HNq%!8=a_s2%
HXq%!12=q%!4+a_s4
Hbq%!16=a_s3%
Hlq%!20=a_sf%
Hv#ș"Wimp_CreateIcon",,q% � a_si%
H��redoicon(w%(address%),17)
H��
H�
H�� �blank_a
H�� type=name � file
H�  a$(this_name%,type)=""
H�
� type
H�flag%(this_name%)=0
H�type%(this_name%)=-1
H��
H�
H�� �add_a
H�� names%=max_a% �
I*  �report("256 names is the maximum.")
I�
I  names%+=1
I   type%(names%)=-1
I*  last_a%+=1
I4  a_num%(names%)=last_a%
I>  �set_a(names%)
IH(  �putcaret(w%(address%),icon%(0),0)
IR�
I\�
If
Ip� �delete_a
Iz�blank_a
I�� this_name%<names% �
I�   � a%=this_name% � names%-1
I�    � type=name � file
I�#      a$(a%,type)=a$(a%+1,type)
I�    � type
I�    flag%(a%)=flag%(a%+1)
I�    type%(a%)=type%(a%+1)
I�    a_num%(a%)=a_num%(a%+1)
I�
  � a%
I��
I�� names%>1 � names%-=1
I�+� this_name%>names% � this_name%=names%
I�new%=this_name%
Jthis_name%=-1
J�set_a(new%)
Ja_changed%=�
J$�
J.
J8� �last_name(name%)
JB	� st$
JLst$=a$(name%,name)
JVȕ �st$," ")
J`  st$=�st$,�st$," ")+1)
Jj�
Jt=st$
J~
J�� �fileokay(filetype%)
J�	ok%=�
J��mouseinfo
J�Ȏ wind% �
J�  � w%(record%) : ok%=�
J��
J�=ok%
J�
J�� �do_load
J�Ȏ wind% �
J�  � w%(record%)
J�$    type%(l_selected%)=filetype%
K"    a$(l_selected%,file)=file$
K
    �set_l_data
K�
K�
K(
K2#� ----WIMP Library routines----
K<
KF%� �newspritearea(� sprite%,size%)
KP&� sprite%>-1 � �loseblock(sprite%)
KZsprite%=�getblock(size%+16)
Kd� sprite%>-1 �
Kn!sprite%=size%+16
Kxsprite%!4=0
K�sprite%!8=16
K�sprite%!12=16
K��
K��
K�
K� � ==== message routines ====
K�
K�� �poll(poll_flags%)
K�,ș"Wimp_Poll",poll_flags%,blk% � reason%
K��sort_reason
K��
K�
K�"� �pollidle(poll_flags%,time%)
L6ș"Wimp_PollIdle",poll_flags%,blk%,time% � reason%
L�sort_reason
L�
L"
L,� �sort_reason
L6Ȏ reason% �
L@  � 0:� null% � �null
LJ  � 1:�redraw
LT  � 2:�openwindow
L^  � 3:�closewindow(!blk%)
LhF  � 4:� sysflags%(�id(!blk%))�8 � d%=�("FNleave_"+id$(�id(!blk%)))
LrF  � 5:� sysflags%(�id(!blk%))�8 � d%=�("FNenter_"+id$(�id(!blk%)))
L|5  � 6:�click(!blk%,blk%!4,blk%!8,blk%!12,blk%!16)
L�  � 7:�enddrag
L�,  � 8:�key(!blk%,blk%!4,blk%!20,blk%!24)
L�  � 9:�menuselect
L�  � 10:� scroll request
L�  � 11:mycaret%=�
L�  � 12:mycaret%=�
L�-  � 17,18:�message(blk%!4,blk%!8,blk%!16)
L�%  � 19:�message_returned(blk%!16)
L��
L��
L�
L�!� �message_returned(message%)
L�Ȏ message% �
M6  � 5 : ș"Wimp_StartTask","Run "+�string(blk%+44)
M�
M�
M&
M0#� �message(task%,ref%,message%)
M:K� (status%>0 � message%>=1 � message%<=7) � task%=mytask% � message%=-1
MDȎ message% �
MN  � 0 : exit=�
MX	  � 1
Mb    wind%=blk%!20
Ml    icon%=blk%!24
Mv    filetype%=blk%!40
M�     � �fileokay(filetype%) �
M�      itrans%=0
M�      filesize%=blk%!36
M�       file$=�string(blk%+44)
M�      heapfile%=-1
M�,      file%=�("FNtransblock(filetype%)")
M�*      � heapfile%=-1 � heapfile%=file%
M�      blk%!20=file%
M�      blk%!24=filesize%
M�%      � blk%!20>-1 � �reply(18,6)
M�	    �
M�	  � 2
M�1    �save(dragid%,�string(blk%+44),prepared%)
N?    � saved% � �telltoload � �report("Could not save file")
N+  � 3 : �load(�string(blk%+44),blk%!40)
N+  � 5 : �load(�string(blk%+44),blk%!40)
N 	  � 6
N*    togo%=filesize%-otrans%
N4'    � togo%>blk%!24 � togo%=blk%!24
N>;    � togo%+otrans%>filesize% � togo%=filesize%-otrans%
NHL    ș"Wimp_TransferBlock",mytask%,savebuff%+otrans%,task%,blk%!20,togo%
NR    blk%!24=togo%
N\    �reply(18,7)
Nf    otrans%+=togo%
NpH    � otrans%=filesize% � d%=�("FNfinishedtrans"+�~(misc%(dragid%)))
Nz	  � 7
N�    itrans%+=blk%!24
N�    � itrans%<filesize% �
N�      filesize%=itrans%
N�(      d%=�("FNloaded"+�~(filetype%))
N�	    �
N�*      � �extendblock(heapfile%,1024) �
N�        filesize%+=1024
N�!        blk%!20=file%+itrans%
N�%        blk%!24=filesize%-itrans%
N�        �reply(18,6)
N�      �
N�        �loseblock(file%)
N�#        �report("Out of room.")
O      �
O	    �
O  � 8 : �prequit
O$#  � 10: �addtobootfile(blk%!20)
O.  � 9,&400C1 : �newmode
O8  � &400C9 :
OB    id%=�id(blk%!20)
OL    � id%>-1 �
OV8      � sysflags%(id%)�2 � d%=�("FNclose_"+id$(id%))
O`	    �
Oj?  � &400C0 : �menu_warning(blk%!20,blk%!24,blk%!28,blk%!32)
Ot�
O~�
O�
O�� �reply(type%,blk%!16)
O�blk%!12=ref%
O�)ș"Wimp_SendMessage",type%,blk%,task%
O��
O�
O�� �newmode
O�2!q%=11:q%!4=12:q%!8=4:q%!12=5:q%!16=3:q%!20=-1
O�!ș"OS_ReadVduVariables",q%,q%
O�scx%=(!q%+1)<<(q%!8)
O�scy%=(q%!4+1)<<(q%!12)
O�$pixelw%=1<<q%!8:pixelh%=1<<q%!12
Pdcols%=q%!16
P
"ș"Wimp_ReadPalette",,deskpal%
P�
P
P(� �prequit
P29� a_changed% � s_changed% � n_changed% � c_changed% �
P<U  � �check("There is unsaved data, click Cancel to abort exit.")=� � �reply(17,8)
PF�
PP�
PZ
Pd� �addtobootfile(handle%)
Pn�#file,"Run "+dir$
Px�
P�
P�� �telltoload
P��mouseinfo
P�blk%!20=wind%
P�blk%!24=icon%
P�blk%!28=mx%
P�blk%!32=my%
P�blk%!36=filesize%
P�blk%!40=filetype%
P��reply(17,3)
P��
P�
P�.� �dropfile(filename$,filetype%,filesize%)
Q�mouseinfo
Q
blk%!12=0
Q
blk%!16=1
Q"blk%!20=wind%
Q,blk%!24=icon%
Q6blk%!28=mx%
Q@blk%!32=my%
QJblk%!36=filesize%
QTblk%!40=filetype%
Q^%$(blk%+44)=�lastbit(filename$)+�0
Qh!blk%=(�$(blk%+44)+48)��3
Qr0ș"Wimp_SendMessage",17,blk%,blk%!20,blk%!24
Q|
otrans%=0
Q��
Q�
Q�� - Sprite routines -
Q�
Q�� �loadsprites
Q�spritefile$=dir$+".Sprites"
Q��fileinfo(spritefile$)
Q�� exist%=1 �
Q�ssize%=filesize%+16
Q�� sprites% ssize%
Q�!sprites%=ssize%
Q�sprites%!4=0
Q�sprites%!8=16
Rsprites%!12=16
R/ș"OS_SpriteOp",10+256,sprites%,spritefile$
R�
R&sprites%=-1
R0�
R:�
RD
RN/� �putsprite(sprite%,sprite$,x%,y%,z1%,z2%)
RX4ș"OS_SpriteOp",24+256,sprite%,sprite$ � ,,addr%
Rb8ș"OS_SpriteOp",40+256,sprite%,sprite$ � ,,,,,,mode%
Rl<s%=�tables(addr%,mode%,spmode%,spal%,1,1,dgcol%,dscale%)
Rv?ș"OS_SpriteOp",52+512,sprite%,addr%,x%,y%,8,dscale%,dgcol%
R��
R�
R�>� �tables(saddr%,spmode%,dmode%,pal%,z1%,z2%,gcol%,scale%)
R�� spal%,palblock%
R�palblock%=palblock2%
R�(!scale%=(1<<�modevar(spmode%,4))*z1%
R�)scale%!4=(1<<�modevar(spmode%,5))*z1%
R�(scale%!8=(1<<�modevar(dmode%,4))*z2%
R�)scale%!12=(1<<�modevar(dmode%,5))*z2%
R�spritepal%=(saddr%!32<>44)
R�scols%=�modevar(spmode%,3)
R�I� saddr%!32<>44 � spal%=�spritepalette(saddr%) � spal%=�wpal(spmode%)
R�s%=�
S?ș"ColourTrans_SelectTable",spmode%,spal%,dmode%,pal%,gcol%
SV� !scale%=scale%!8 � scale%!4=scale%!12 � �modevar(spmode%,3)=�modevar(dmode%,3) �
S  cols%=�modevar(dmode%,3)
S   � cols%=63 � cols%=255
S*
  s%=�
S4  � c%=0 � cols%
S>    � gcol%?c%<>c% � s%=�
SH
  � c%
SR�
S\=s%
Sf
Sp� �spritepalette(saddr%)
Szcols%=�modevar(spmode%,3)
S�� cols%>15 � cols%=15
S�� c%=0 � cols%
S�)palblock%!(c%<<2)=saddr%!(44+(c%<<3))
S�� c%
S�=palblock%
S�
S�!� �copypalette(faddr%,taddr%)
S�� a%=44 � faddr%!32-4 � 4
S�  taddr%!a%=faddr%!a%
S�� a%
S��
S�
S�� - file handling -
T
T� �fileinfo(file$)
T-ș"OS_File",5,file$ � exist%,,,,filesize%
T$�
T.
T8� �filesize(file$)
TB� exist%,filesize%
TL�fileinfo(file$)
TV=filesize%
T`
Tj� �fileexist(file$)
Tt� exist%,filesize%
T~�fileinfo(file$)
T�=exist%
T�
T�� �loadtemplate(title$)
T�Qș"Wimp_LoadTemplate",,blk%,ind%,indend%,fonttable%,title$ � ,,ind%,,,,found%
T�� found%=0 �
T�-  �report("Window "+title$+" not found.")
T�
  wind%=0
T��
T�'  � sprites%<>-1 � blk%!64=sprites%
T�)  ș"Wimp_CreateWindow",,blk% � wind%
T��
T�
=wind%
U
U
� �nameok(file$)
U
result%=�
U9� �file$,":")+�file$,".")=0 � file$<>"<Wimp$Scrap>" �
U(8�report("To save, drag icon to a directory viewer.")
U2
result%=�
U<�
UF=result%
UP
UZ� - menus -
Ud
Un=� �change_menu_option(menu%,item%,� olditem%,wind%,icon%)
Uxd%=�
U�"� item%>-1 � item%<>olditem% �
U�
  d%=�
U�!  �tickmenu(menu%,olditem%,�)
U�  �tickmenu(menu%,item%,�)
U�  olditem%=item%
U�  � wind%<>0 �
U�    p%=menu%+28+item%*24
U�1    � p%!8 � 1<<8 � a$=$(p%!12) � a$=$(p%+12)
U�$    �seticontext(wind%,icon%,a$)
U�  �
U��
U�=d%
U�
V"� �tickmenu(menu%,item%,tick%)
Vp%=menu%+28+item%*24
V&� tick% � !p%=!p% �1 � !p%=!p% ��1
V"�
V,
V6#� �menutitle(title$,� menuptr%)
V@oldptr%=menuptr%
VJ$menuptr%=title$
VTmax%=�title$
V^menuptr%!12=&70207
Vhmenuptr%!20=44
Vrmenuptr%!24=0
V|menuptr%+=4
V��
V�
V�#� �menuitem(� text$,� menuptr%)
V�menuptr%+=24
V�!menuptr%=0
V�menuptr%!4=0
V�word$=�nextword(text$)
V�token$=�token(word$)
V�
i1%=-1
V�ȕ token$<>""
V�Ȏ token$ �
V�*� ">" : menuptr%!4=�(�nextword(text$))
V�#� "/" : !menuptr%=!menuptr% � 1
W#� "-" : !menuptr%=!menuptr% � 2
W#� "+" : !menuptr%=!menuptr% � 8
W	� "!"
W&  !menuptr%=!menuptr% � 4
W0  valid$=�nextword(text$)
W:  � �valid$ �
WD  � i1% �valid$+1
WN  $i1%=valid$
WX  �
Wb�
Wltoken$=�token(word$)
Wv�
W�menuptr%!8=(7<<24) � %10001
W�"� !menuptr% � 4 � token$="#" �
W�.�inditem(�(�nextword(text$)),i1%,�(word$))
W��
W�� �word$<=12 �
W�$(menuptr%+12)=word$
W��
W�� i0% �word$+1
W�$i0%=word$
W��inditem(i0%,-1,�word$+1)
W��
W�� �word$>max% � max%=�word$
W��
X�
X
X� �endmenu(� menuptr%)
X !menuptr%=!menuptr% � &80
X*menuptr%+=24
X4oldptr%!16=max%*16+12
X>�
XH
XR� �menu(text$)
X\stext$=text$
Xfitems%=0
Xptext$+=","
Xztitle$=�nextword(text$)
X��menutitle(title$,menuptr%)
X�ȕ text$<>""
X�
items%+=1
X��menuitem(text$,menuptr%)
X��
X��endmenu(menuptr%)
X�=oldptr%
X�
X�� �inditem(i0%,i1%,i2%)
X� menuptr%!8=menuptr%!8 � 1<<8
X�menuptr%!12=i0%
X�menuptr%!16=i1%
X�menuptr%!20=i2%
Y1� i2%-1>max% � (!menuptr% � 4)=0 � max%=i2%-1
Y�
Y
Y$� �token(� word$)
Y.
token$=""
Y8� �">/!#-+",�word$)) �
YBtoken$=�word$,1)
YLword$=�word$,�word$-1)
YV�
Y`=token$
Yj
Yt� �nextword(� text$)
Y~� word$,pos%
Y�pos%=�text$,",")
Y�word$=�text$,pos%-1)
Y�text$=�text$,pos%+1)
Y�
=word$
Y�
Y�� �closemenu
Y�ș"Wimp_CreateMenu",,-1
Y��
Y�
Y�� - icons -
Y�
Y�!� �shadeicon(!q%,q%!4,shade%)
Zș"Wimp_GetIconState",,q%
Z
"� shade% � q%!8=1<<22 � q%!8=0
Zq%!12=1<<22
Z7� (q%!24 � q%!12)<>q%!8 � ș"Wimp_SetIconState",,q%
Z(�
Z2
Z<� �icontext(!q%,q%!4)
ZFș"Wimp_GetIconState",,q%
ZP4� q%!24�(1<<8) � text$=$(q%!28) � text$=$(q%+28)
ZZ
=text$
Zd
Zn� �iconval(!q%,q%!4)
Zx=�(�icontext(!q%,q%!4))
Z�
Z�� �redoicon(!q%,q%!4)
Z�ș"Wimp_GetIconState",,q%
Z�3ș"Wimp_ForceRedraw",!q%,q%!8,q%!12,q%!16,q%!20
Z��
Z�
Z�� �deleteicon(!q%,q%!4)
Z�ș"Wimp_DeleteIcon",,q%
Z��
Z�
Z�"� �iconinfo(wind%,icon%,data%)
Z�!data%=wind%
Z�data%!4=icon%
[ ș"Wimp_GetIconState",,data%
[�
[
["� �selected(!q%,q%!4)
[,ș"Wimp_GetIconState",,q%
[6=(((q%!24)�(1<<21))>0)
[@
[J7� �cricon(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,$(q%+24))
[T#ș"Wimp_CreateIcon",,q% � icon%
[^
=icon%
[h
[r� �buttype(!q%,q%!4)
[|3� q%!4>=0 � ș"Wimp_GetIconState",,q% � q%!24=0
[�=((q%!24)>>12)�15
[�
[�#� �selecticon(!q%,q%!4,select%)
[�ș"Wimp_GetIconState",,q%
[�#� select% � q%!8=1<<21 � q%!8=0
[�q%!12=1<<21
[�7� (q%!24 � q%!12)<>q%!8 � ș"Wimp_SetIconState",,q%
[��
[�
[�� �iconfc(!q%,q%!4)
[�ș"Wimp_GetIconState",,q%
[�=((q%!24)>>24)�15
[�
\� �seticonfc(!q%,q%!4,col%)
\ș"Wimp_GetIconState",,q%
\q%!8=col%<<24
\&q%!12=15<<24
\07� (q%!24 � q%!12)<>q%!8 � ș"Wimp_SetIconState",,q%
\:�
\D
\N � �seticonval(!q%,q%!4,val%)
\X"�seticontext(!q%,q%!4,�(val%))
\b�
\l
\v"� �seticontext(!q%,q%!4,text$)
\�ș"Wimp_GetIconState",,q%
\�text$=�text$,q%!36-1)
\�� $(q%!28)<>text$ �
\�$(q%!28)=text$
\�
q%!8=0
\�q%!12=0
\�ș"Wimp_SetIconState",,q%
\��
\��
\�
\�#� �seticonvalid(!q%,q%!4,text$)
\�ș"Wimp_GetIconState",,q%
\�� $(q%!32)<>text$ �
]$(q%!32)=text$
]
q%!8=0
]q%!12=0
] ș"Wimp_SetIconState",,q%
]*�
]4�
]>
]H)� �setfileicon(wind%,icon%,filetype%)
]R� rom%,ram%,sprite$,not%
]\� filetype%<&1000 �
]f*sprite$="file_"+�"00"+�~(filetype%),3)
]p&ș"Wimp_BaseOfSprites" � rom%,ram%
]z0ș"XOS_SpriteOp",24+256,rom%,sprite$ � ;not%
]�not%=not%�1
]�9� not% � ș"XOS_SpriteOp",24+256,ram%,sprite$ � ;not%
]�not%=not%�1
]��
]�Ȏ filetype% �
]�#  � &1000 : sprite$="directory"
]�%  � &2000 : sprite$="application"
]�
]�  not%=�
]��
]��
]�� not% � sprite$="file_xxx"
]�*�seticonvalid(wind%,icon%,"S"+sprite$)
^�
^
^� �icontp(!q%,q%!4)
^$ș"Wimp_GetIconState",,q%
^.
=q%!28
^8
^B?� �startuserdrag(id%,type%,blk%!24,blk%!28,blk%!32,blk%!36)
^L� type%>256 �
^V  �windowinfo(w%(id%))
^`  blk%!24=blk%!4
^j  blk%!28=blk%!8
^t  blk%!32=blk%!12
^~  blk%!36=blk%!16
^�  type%-=256
^��
^�!blk%=0
^�blk%!4=7
^�dragging%=�
^�dragid%=id%
^�drag_type%=type%
^�ș"Wimp_DragBox",,blk%
^��
^�
^�� �startdrag(id%,icon%)
^�dragid%=id%
_dragicon%=icon%
_
wind%=w%(dragid%)
_�windowinfo(wind%)
_�iconinfo(wind%,icon%,blk%)
_(!blk%=0
_2blk%!4=5
_<blk%!8+=wx%
_Fblk%!12+=wy%
_Pblk%!16+=wx%
_Zblk%!20+=wy%
_d
blk%!24=0
_n
blk%!28=0
_xblk%!32=scx%
_�blk%!36=scy%
_�
� drag% �
_��iconinfo(wind%,icon%,q%)
_�
sprite%=1
_�"sprite$=�icontext(wind%,icon%)
_�9� (q%!24)�3=3 � sprite$=$((q%!32)+1):sprite%=sprites%
_�<ș"DragASprite_Start",197,sprite%,sprite$,blk%+8,blk%+24
_��
_�ș"Wimp_DragBox",,blk%
_��
_��
_�
_�� - user interogation -
_�
_�� �check(message$)
`ș"Wimp_DragBox",,-1
`	!q%=0
`$(q%+4)=message$
`"Bș"Wimp_ReportError",q%,19,"Message from "+program$ � ,answer%
`,� answer%=1 � =� � =�
`6
`@� �report(message$)
`J%d%=�question(message$,"OK","","")
`T�
`^
`h0� �question(ans$(0),ans$(1),ans$(2),ans$(3))
`r
� status%
`|
status%=2
`��closemenu
`�� i%=0 � 3
`�  � ans$(i%)="" �
`�#    �removeicon(w%(report%),i%)
`�  �
`�#    �reiniticon(w%(report%),i%)
`�-    �seticontext(w%(report%),i%,ans$(i%))
`�  �
`�� i%
`��losecaret
`��openincentre(w%(report%))
`�� beep% � � 7
`�
answer%=0
a�
a  �poll(1)
a
� answer%
a&�closewindow(w%(report%))
a0=answer%
a:
aD� �click_report
aN� icon%>0 � answer%=icon%
aX=0
ab
al� - misc -
av
a�� �quit
a��close_if_active(address%)
a��close_if_active(entry%)
a��close_if_active(letter%)
a��close_if_active(day%)
a��close_if_active(year%)
a��close_if_active(notepad%)
a�9� a_changed% � s_changed% � n_changed% � c_changed% �
a�E  Ȏ �question("There is unsaved data.","Save","Quit","Cancel") �
a�    � 1
a�      �save_changed
a�      exit=�
a�    � 2 : exit=�
b  �
b�
b  exit=�
b �
b*� exit=� � �poll(0)
b4�
b>
bH� �closedown
bR�resetslot
b\� i%=1 � 255
bfȕ fonttable%?i%
bpș"Font_LoseFont",i%
bzfonttable%?i%-=1
b��
b�� i%
b�ș"Wimp_CloseDown",mytask%
b��
b��
b�
b�� �modevar(mode%,var%)
b�/ș"OS_ReadModeVariable",mode%,var% � ,,val%
b�	=val%
b�
b�� �string(b%)
b�� s$
b�	s$=""
c
ȕ ?b%>31
cs$+=�(?b%)
c	b%+=1
c$�
c.=s$
c8
cB� - windows -
cL
cV1� �setwindowextent(wind%,!q%,q%!4,q%!8,q%!12)
c`ș"Wimp_SetExtent",wind%,q%
cj�
ct
c~� �openincentre(!blk%)
c�!ș"Wimp_GetWindowState",,blk%
c�m1%=blk%!12-blk%!4
c�m2%=blk%!16-blk%!8
c�blk%!4=(scx%-m1%)>>1
c�blk%!8=(scy%-m2%)>>1
c�blk%!12=(scx%+m1%)>>1
c�blk%!16=(scy%+m2%)>>1
c�blk%!28=-1
c��openwindow
c��
c�
c�� �newtitle(!blk%,title$)
d ș"Wimp_GetWindowInfo",,blk%
d
� $(blk%!76)<>title$ �
d$(blk%!76)=title$
d� active%(�id(!blk%)) �
d(%  ș"Wimp_GetWindowOutline",,blk%
d2?  ș"Wimp_ForceRedraw",-1,blk%!4,blk%!16-44,blk%!12,blk%!16
d<�
dF�
dP�
dZ
dd� �forceredraw(!blk%)
dn ș"Wimp_GetWindowInfo",,blk%
dx>ș"Wimp_ForceRedraw",!blk%,blk%!44,blk%!48,blk%!52,blk%!56
d��
d�
d�� �updatewindow(!blk%)
d� ș"Wimp_GetWindowInfo",,blk%
d�blk%!4=blk%!44
d�blk%!8=blk%!48
d�blk%!12=blk%!52
d�blk%!16=blk%!56
d�'ș"Wimp_UpdateWindow",,blk% � more%
d��
d�
d�� �openfully(!blk%,top%)
d� ș"Wimp_GetWindowInfo",,blk%
e$blk%!12=blk%!4+(blk%!52-blk%!44)
e$blk%!8=blk%!16-(blk%!56-blk%!48)
e� top% � blk%!28=-1
e"�openwindow
e,�
e6
e@� �closewindow(wind%)
eJ� cid%,close%
eTcid%=�id(wind%)
e^C� sysflags%(cid%)�2 � close%=�("FNclose_"+id$(cid%)) � close%=�
eh� close% �
er  active%(cid%)=�
e|!  �quickclosewindow(w%(cid%))
e��
e��
e�
e�� �close_if_active(id%)
e�*� active%(id%) � �closewindow(w%(id%))
e��
e�
e�� �quickclosewindow(!q%)
e�ș"Wimp_CloseWindow",,q%
e��
e�
e�� �reopen(wind%)
e�id%=�id(wind%)
f� active%(id%) �
f  !blk%=wind%
f#  ș"Wimp_GetWindowState",,blk%
f&  �openwindow
f0  �forceredraw(wind%)
f:�
fD  �openup(wind%)
fN�
fX�
fb
fl� �windowinfo(wind%)
fv!blk%=wind%
f� ș"Wimp_GetWindowInfo",,blk%
f�wx%=blk%!4-blk%!20
f�wy%=blk%!16-blk%!24
f�ww%=blk%!12-blk%!4
f�wh%=blk%!16-blk%!8
f��
f�
f�� �initwindords(id%)
f��windowinfo(w%(id%))
f�wx%(id%)=wx%
f�wy%(id%)=wy%
f�ww%(id%)=ww%
f�wh%(id%)=wh%
g�
g
g*� �savebox(filetype%,standard$,flags%)
g $wind%=�window("save","save",0,0)
g*<�seticontext(w%(wind%),3,"file_"+�"00"+�~(filetype%),3))
g4'�seticontext(w%(wind%),1,standard$)
g>'�seticontext(w%(wind%),2,standard$)
gHmisc%(wind%)=filetype%
gRsysflags%(wind%)=flags%
g\
=wind%
gf
gp� �lastbit(file$)
gzȕ �file$,".")
g�file$=�file$,�file$,".")+1)
g��
g�
=file$
g�
g�� �mouseinfo
g�ș"Wimp_GetPointerInfo",,q%
g�mx%=!q%
g�my%=q%!4
g�
but%=q%!8
g�wind%=q%!12
g�icon%=q%!16
g��
g�
h#� �setfiletype(file$,filetype%)
h#ș"OS_File",&12,file$,filetype%
h�
h$
h.$� �shademenu(menu%,item%,shade%)
h8p%=menu%+36+item%*24
hB!p%=!p% ��(1<<22)
hL� shade% � !p%=!p% �(1<<22)
hV�
h`
hj� �getcaret
ht!ș"Wimp_GetCaretPosition",,q%
h~cwind%=!q%
h�cicon%=q%!4
h�cxoff%=q%!8
h�cyoff%=q%!12
h�cheight%=q%!16
h�cindex%=q%!20
h��
h�
h�#� �putcaret(wind%,icon%,index%)
h� len%=��icontext(wind%,icon%)
h�� index%>len% � index%=len%
h�5ș"Wimp_SetCaretPosition",wind%,icon%,,,-1,index%
h��
i
i
� �resetcaret(wind%,icon%)
i!ș"Wimp_GetCaretPosition",,q%
i-� (!q%=wind% � (q%!4=icon% � icon%=-1)) �
i(  icon%=q%!4
i2  index%=q%!20
i<"  len%=��icontext(wind%,icon%)
iF!  � index%>len% � index%=len%
iP7  ș"Wimp_SetCaretPosition",wind%,icon%,,,-1,index%
iZ�
idI� wind%=0 � ș"Wimp_SetCaretPosition",!q%,q%!4,q%!8,q%!12,q%!16,q%!20
in�
ix
i�� �losecaret
i�-� mycaret% � ș"Wimp_SetCaretPosition",-1
i��
i�
i�� �flashicon(!q%,q%!4)
i�� f%=1 � 3
i�	Ȗ:Ȗ
i��selecticon(!q%,q%!4,�)
i�	Ȗ:Ȗ
i��selecticon(!q%,q%!4,�)
i�� f%
i��
i�
j#� �openiconmenu(!q%,q%!4,wind%)
jopenmenu%=wind%
jș"Wimp_GetIconState",,q%
j"menux%=q%!16
j,menuy%=q%!20
j6�windowinfo(!q%)
j@menux%+=wx%
jJmenuy%+=wy%
jT0ș"Wimp_CreateMenu",,openmenu%,menux%,menuy%
j^menuid%=windows%+1
jh�
jr
j|"� �infowindow(i1$,i2$,i3$,i4$)
j� wind%=�window("info","",0,0)
j�!�seticontext(w%(wind%),1,i1$)
j�!�seticontext(w%(wind%),2,i2$)
j�!�seticontext(w%(wind%),3,i3$)
j�!�seticontext(w%(wind%),4,i4$)
j�
=wind%
j�
j�/� �wimpinit(name$,sprite$,work$,no%,isize%)
j�pointermine%=�
j�ș"OS_GetEnv" � autoload$
j�=autoload$=�autoload$,�autoload$,�34,�autoload$,�34)+1)+2)
j�&dragging%=0:drag_type%=0:dragid%=0
j�status%=0:mycaret%=�
kwindows%=no%+1
kprogram$=name$
kc� blk% 10000,q% 256,ind% isize%,deskpal% 256,dgcol% 256,dscale% 16,palblock% 256,palblock2% 256
k&indend%=ind%+isize%
k0� messagelist% 100
k:p%=0
kD�
kN  � message%
kX  messagelist%!p%=message%
kb  p%+=4
kl� message%=0
kv/� 1,2,3,5,6,7,8,9,10,&400C0,&400C1,&400C9,0
k�$blk%="TASK"
k�Bș"Wimp_Initialise",310,!blk%,program$,messagelist% � ,mytask%
k�0iconbar%=�cricon(-1,0,0,68,68,&2002,sprite$)
k�dir$=�readvar(work$+"$Dir")
k�=ș"XOS_SWINumberFromString",,"DragASprite_Start" � ;drag%
k�drag%=(drag% � 1)=0
k�ș"OS_Byte",161,28 � ,,bit%
k�� (bit% � 2)=0 � drag%=�
k�&ș"Wimp_SlotSize",-1,-1 � appsize%
k��loadsprites
k�
tft%=&FFF
k�
dft%=&AFF
k�
sft%=&FF9
l
exit=�
l+� gcol% 256,pal2% 80,pal4% 80,scale% 16
l� i%=0 � 1
l &  pal2%!(4*(1-i%))=(&FFFFFF*i%)<<8
l*� i%
l4� i%=0 � 3
l>&  pal4%!(4*(3-i%))=(&555555*i%)<<8
lH� i%
lR�newmode
l\%� menubuffer% 4000,fonttable% 256
lftwind%=0
lp�� w%(windows%),menu%(windows%),id$(windows%+1),misc%(windows%),active%(windows%),default%(5,windows%),sysflags%(windows%),wx%(windows%),wy%(windows%),ww%(windows%),wh%(windows%)
lzid$(windows%+1)="unknown"
l�
� ans$(3)
l�menuptr%=menubuffer%
l�� i%=1 � 255
l�fonttable%?i%=0
l�� i%
l�w%(0)=-2:id$(0)="iconbar"
l�,ș"Wimp_OpenTemplate",,dir$+".Templates"
l��initwindows
l�*report%=�window("report","report",0,0)
l�ș"Wimp_CloseTemplate"
l�beep%=�
l�instant%=�
l��
m
m!� ==== memory management ====
m
m$� �space(size%)
m.� room%,noroom%,new%
m87ș"XWimp_SlotSize",appsize%+size%,-1 � new%;noroom%
mBroom%=((noroom%�1)=0)
mL#� new%<appsize%+size% � room%=�
mV#� room% � appinc%=new%-appsize%
m`
=room%
mj
mt� �initheap
m~heap%=�
m�heapsize%=8*1024
m�� �space(heapsize%) �
m�$  ș"OS_Heap",0,heap%,,heapsize%
m��
m�  �error("Out of room.")
m��
m��
m�
m�� �largestblock
m�$ș"OS_Heap",1,heap% � ,,largest%
m�
=largest%
m�
n� �getblock(size%)
n
	� ok%
n	ok%=�
n ȕ ok% � �largestblock<size%
n(  ok%=�extendheap(8*1024)
n2�
n<� ok% �
nF+  ș"OS_Heap",2,heap%,,size% � ,,block%
nP�
nZ  block%=-1
nd'  �report("No room for operation.")
nn�
nx=block%
n�
n�� �loseblock(� block%)
n�,� block%>-1 � ș"OS_Heap",3,heap%,block%
n�
block%=-1
n��shrinkheap
n��
n�
n�� �shrinkheap
n�� ok%,size%
n�	ok%=�
n�size%=-1024*8
n�
ȕ ok%
n�(  ș"XOS_Heap",5,heap%,,size% � ;ok%
o  ok%=((ok%�1)=0)
o
  � ok% �
o    heapsize%=heap%!12
o"    ok%=�space(heapsize%)
o,  �
o6�
o@�
oJ
oT� �extendheap(size%)
o^	� ok%
ohok%=�space(heapsize%+size%)
or� ok% �
o|   ș"OS_Heap",5,heap%,,size%
o�  heapsize%=heap%!12
o��
o�,  �report("No room for this operation.")
o��
o�=ok%
o�
o�!� �extendblock(� block%,inc%)
o�� ok%, heapfull%
o�heapfull%=�
o��
o�5  ș"XOS_Heap",4,heap%,block%,inc% � ,,block%;ok%
o�  ok%=((ok%�1)=0)
o�-  � �ok% � heapfull%=��extendheap(8*1024)
p� ok% � heapfull%
p=ok%
p
p&� �resetslot
p0!ș"Wimp_SlotSize",appsize%,-1
p:
appinc%=0
pD�
pN
pX&� ==== filing system routines ====
pb
pl� �standardfilename(wind%)
pv=�icontext(wind%,1)
p�
p�� �resetfilename(wind%)
p�2�seticontext(wind%,2,�standardfilename(wind%))
p��
p�
p� � �save(id%,file$,prepared%)
p�saved%=�
p�� �nameok(file$) �
p�;� prepared%=� � prepared%=�("FNprepare"+�~(misc%(id%)))
p�Ȏ prepared% �
p�
  � -1
p�F    ș"OS_File",10,file$,misc%(id%),,savebuff%,savebuff%+filesize%
p�&    d%=�("FNsaved"+�~(misc%(id%)))
q
  � -2
q%    d%=�("FNsave"+�~(misc%(id%)))
q�
q �closemenu
q*%�seticontext(w%(id%),2,filename$)
q4saved%=�
q>�
qH�
qR�
q\
qf� ==== menu routines ====
qp
qz � �openwindowasmenu(window%)
q��windowinfo(window%)
q��mouseinfo
q�!� my%-wh%/2<96 � my%=96+wh%/2
q�menux%=mx%-ww%/2
q�menuy%=my%+wh%/2
q�openmenu%=window%
q�id%=�id(window%)
q��reopenmenu
q�1� sysflags%(id%)�1 � d%=�("FNopen_"+id$(id%))
q��
q�
q�� �iconbarmenu(text$)
q�menu%(0)=�menu(text$)
rbarheight%=items%*44+96
r�
r
r$� �menuselect
r. d%=�("FNmenu_"+id$(menuid%))
r8�mouseinfo
rB� but%=1 � �reopenmenu
rL�
rV
r`� �reopenmenu
rj4� sysflags%(id%)�4 � d%=�("FNpremenu_"+id$(id%))
rt0ș"Wimp_CreateMenu",,openmenu%,menux%,menuy%
r~�
r�
r�� �openmenu(id%)
r�� menu%(id%) �
r�menuid%=id%
r�openmenu%=menu%(id%)
r�,� id%=0 � menuy%=barheight% � menuy%=my%
r�"menux%=mx%-(openmenu%!16)/2-16
r��reopenmenu
r��
r��
r�
r�� ==== window routines ====
s
s
'� �window(wind$,name$,menu%,flags%)
s
twind%+=1
s;� twind%>windows% � � 255,"More windows than declared."
s(#w%(twind%)=�loadtemplate(wind$)
s2�windowinfo(w%(twind%))
s<� d%=0 � 5
sF)default%(d%,twind%)=!(blk%+(d%<<2)+4)
sP� d%
sZid$(twind%)=name$
sdmenu%(twind%)=menu%
snsysflags%(twind%)=flags%
sx=twind%
s�
s�
� �redraw
s�id%=�id(!blk%)
s�'ș"Wimp_RedrawWindow",,blk% � more%
s��rectangleloop
s��
s�
s�� �rectangleloop
s�-wx%=wx%(id%):wy%=wy%(id%):opt0%=�:opt1%=�
s�ȕ more%
s�x0%=blk%!28-wx%
s�y0%=blk%!32-wy%
s�x1%=blk%!36-wx%
ty1%=blk%!40-wy%
td%=�("FNredraw_"+id$(id%))
t'ș"Wimp_GetRectangle",,blk% � more%
t"�
t,�
t6
t@� �id(find%)
tJfound%=0
tT� i%=1 � windows%
t^� w%(i%)=find% � found%=i%
th� i%
tr=found%
t|
t�� �openup(wind%)
t�!blk%=wind%
t�id%=�id(wind%)
t�� �active%(id%) �
t�� d%=0 � 5
t�&!(blk%+(d%<<2)+4)=default%(d%,id%)
t�� d%
t��
t�!ș"Wimp_GetWindowState",,blk%
t��
t�blk%!28=-1
t��openwindow
t��
u
u� �openwindow
u� open_id%
u&open_id%=�id(!blk%)
u0?� sysflags%(open_id%)�16 � d%=�("FNpreopen_"+id$(open_id%))
u:ș"Wimp_OpenWindow",,blk%
uD wx%(open_id%)=blk%!4-blk%!20
uN!wy%(open_id%)=blk%!16-blk%!24
uX ww%(open_id%)=blk%!12-blk%!4
ub wh%(open_id%)=blk%!16-blk%!8
ul;� sysflags%(open_id%)�1 � d%=�("FNopen_"+id$(open_id%))
uvactive%(open_id%)=�
u��
u�
u�� �open(!q%)
u�� open%
u�open%=�
u�ș"Wimp_GetWindowState",,q%
u�� q%!32�(1<<16) � open%=�
u�
=open%
u�
u�� �window_state(!blk%)
u�!ș"Wimp_GetWindowState",,blk%
u��
u�
v%� �redobox(wind%,x0%,y0%,x1%,y1%)
v� x1%<x0% � Ȕ x0%,x1%
v� y1%<y0% � Ȕ y0%,y1%
v .ș"Wimp_ForceRedraw",wind%,x0%,y0%,x1%,y1%
v*�
v4
v>,� �instantredobox(wind%,x0%,y0%,x1%,y1%)
vH� x1%<x0% � Ȕ x0%,x1%
vR� y1%<y0% � Ȕ y0%,y1%
v\id%=�id(wind%)
vf!blk%=w%(id%)
vpblk%!4=x0%
vzblk%!8=y0%
v�blk%!12=x1%
v�blk%!16=y1%
v�'ș"Wimp_UpdateWindow",,blk% � more%
v�instant%=�
v��rectangleloop
v�instant%=�
v��
v�
v�/� �startupdatewindow(wind%,x0%,y0%,x1%,y1%)
v�!blk%=wind%
v�blk%!4=x0%
v�blk%!8=y0%
v�blk%!12=x1%
wblk%!16=y1%
w'ș"Wimp_UpdateWindow",,blk% � more%
w�
w$
w.4� �startupdatewindowblock(wind%,x0%,y0%,x1%,y1%)
w8!blk%=wind%
wB� x0%>x1% � Ȕ x0%,x1%
wL� y0%>y1% � Ȕ y0%,y1%
wVblk%!4=x0%-4
w`blk%!8=y0%-4
wjblk%!12=x1%+4
wtblk%!16=y1%+4
w~'ș"Wimp_UpdateWindow",,blk% � more%
w��
w�
w�� �deletewindow(� !q%)
w�ș"Wimp_DeleteWindow",,q%
w�	!q%=0
w��
w�
w�� ==== icon routines ====
w�
w�&� �click(mx%,my%,but%,wind%,icon%)
w�7� �buttype(wind%,icon%)=9 � �flashicon(wind%,icon%)
w�id%=�id(wind%)
x
Ȏ but% �
x
� 64
x"  Ȏ �buttype(w%(id%),icon%) �
x-    � 6,7,8,10,14 : �startdrag(id%,icon%)
x(  �
x2� 2 : �openmenu(id%)
x<
xFd%=�("FNclick_"+id$(id%))
xP�
xZ�
xd
xn� �enddrag
xxdragging%=�
x�drag_type%=0
x�ș"Wimp_DragBox",,-1
x��mouseinfo
x�"� drag% � ș"DragASprite_Stop"
x� d%=�("FNdrop_"+id$(dragid%))
x�
dragid%=0
x��
x�
x�L� �startdragbox(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28,q%!32,q%!36)
x�ș"Wimp_DragBox",,q%
x��
x�
x�� �setpointer(ptr$,ox%,oy%)
y-ș"Wimp_SpriteOp",36,1,ptr$,2,ox%,oy%,0,0
y;� ptr$<>"ptr_default" � pointermine%=� � pointermine%=�
y�
y"
y,#� �key(wind%,icon%,index%,key%)
y6%taken=�("FNkey_"+id$(�id(wind%)))
y@(� taken=� � ș"Wimp_ProcessKey",key%
yJ�
yT
y^(� �incicon(iicon%,dec%,inc%,lb%,ub%)
yh
change%=�
yr� icon%=dec% � icon%=inc% �
y|!val%=��icontext(wind%,iicon%)
y�val%+=(icon%=dec%)*2+1
y�1� val%>ub% � val%=ub% � � val%<lb% � val%=lb%
y�&�seticontext(wind%,iicon%,�(val%))
y��resetcaret(wind%,iicon%)
y�
change%=�
y��
y��
y�=change%
y�
y�� �removeicon(!q%,q%!4)
y�q%!8=(1<<24)
y�)q%!12=(1<<2)�(1<<5)�(15<<24)�(15<<12)
y�ș"Wimp_SetIconState",,q%
z�
z
z� �reiniticon(!q%,q%!4)
z&&q%!8=(1<<2)�(1<<5)�(7<<24)�(3<<12)
z0)q%!12=(1<<2)�(1<<5)�(15<<12)�(15<<24)
z:ș"Wimp_SetIconState",,q%
zD�
zN
zX� �iconkeys(data%)
zbtaken=�
zlicons%=0
zvȕ data%?icons%<255
z�  icons%+=1
z��
z�
icons%-=1
z�
found%=-1
z�� p%=0 � icons%
z�"  � data%?p%=icon% � found%=p%
z�� p%
z�newicon%=-1
z�� found%>=0 �
z�  Ȏ key% �
z�     � 13 : newicon%=found%+1
z�4    � &18E : � found%<icons% � newicon%=found%+1
z�/    � &18F : � found%>0 � newicon%=found%-1
{*    � &19E,&1AE,&1BE : newicon%=icons%
{%    � &19F,&1AF,&1BF : newicon%=0
{  
{     taken=�
{*  �
{4�
{>,� newicon%>icons% � taken=-2:newicon%=-1
{H� newicon%>=0 �
{R  �getcaret
{\-  �putcaret(wind%,data%?newicon%,cindex%)
{f�
{p
=taken
{z
{�� ==== and the rest ====
{�
{�� �click_=0
{�
{�� �redraw_=0
{�
{�
� �key_=0
{�
{�� �drop_=0
{�
{�� �error(error$)
{�ș"Hourglass_Smash"
{�Ȏ status% �
|	  � 1
|    � print � �#print
|.    report$="Print error, print cancelled"
|$
|.S  report$="An uncontrolable error has occured ("+error$+�(�)+"), shall I exit?"
|8�
|Bexit=�check(report$)
|L
status%=0
|V�
|`
|j� �wpal(mode%)
|tȎ �modevar(mode%,3) �
|~  � 63:p%=0
|�  � 15:p%=deskpal%
|�  � 3:p%=pal4%
|�  � 1:p%=pal2%
|��
|�=p%
|�
|�� �drop_save
|�filetype%=misc%(dragid%)
|�id%=dragid%
|�*prepared%=�("FNprepare"+�~(filetype%))
|�I� prepared% � �dropfile(�icontext(w%(dragid%),2),filetype%,filesize%)
|�=0
}
}
� �click_save
}/� icon%=0 � �save(id%,�icontext(wind%,2),�)
}=0
}(
}2� �key_save
}<2� key%=13 � �save(id%,�icontext(wind%,2),�):=�
}F=0
}P
}Z"� �spritename(sprite%,number%)
}d;ș"OS_SpriteOp",13+256,sprite%,q%,256,number% � ,,,len%
}nq%?len%=13
}x=$q%
}�
}�� �load(file$,filetype%)
}�ok%=�fileokay(filetype%)
}�!� ok% � ok%=�fileexist(file$)
}�� ok% �
}�  �reply(18,4)
}�  �do_load
}��
}��
}�
}�� �readvar($q%)
}�.ș"OS_ReadVarVal",q%,blk%,256,0,3 � ,,len%
}�blk%?len%=13
~
=$blk%
�
00000000  0d 00 0a 1f f4 20 3e 20  3c 42 69 67 42 6f 6f 6b  |..... > <BigBook|
00000010  24 44 69 72 3e 2e 21 52  75 6e 49 6d 61 67 65 0d  |$Dir>.!RunImage.|
00000020  00 14 0d f2 69 6e 69 74  69 61 74 65 0d 00 1e 12  |....initiate....|
00000030  ee 20 85 20 f2 65 72 72  6f 72 28 f6 24 29 0d 00  |. . .error(.$)..|
00000040  28 04 0d 00 32 10 6e 65  78 74 5f 74 69 6d 65 25  |(...2.next_time%|
00000050  3d 30 0d 00 3c 0c c8 95  20 ac 65 78 69 74 0d 00  |=0..<... .exit..|
00000060  46 27 20 20 6e 75 6c 6c  25 3d 64 72 61 67 67 69  |F'  null%=draggi|
00000070  6e 67 25 84 28 69 6e 73  70 74 72 25 3c 69 6e 73  |ng%.(insptr%<ins|
00000080  6c 65 6e 25 29 0d 00 50  14 20 20 e7 20 61 6c 61  |len%)..P.  . ala|
00000090  72 6d 5f 73 65 74 25 20  8c 0d 00 5a 1f 20 20 20  |rm_set% ...Z.   |
000000a0  20 f2 70 6f 6c 6c 69 64  6c 65 28 30 2c 6e 65 78  | .pollidle(0,nex|
000000b0  74 5f 74 69 6d 65 25 29  0d 00 64 2c 20 20 20 20  |t_time%)..d,    |
000000c0  c8 99 22 4f 53 5f 52 65  61 64 4d 6f 6e 6f 74 6f  |.."OS_ReadMonoto|
000000d0  6e 69 63 54 69 6d 65 22  20 b8 20 6e 65 77 5f 74  |nicTime" . new_t|
000000e0  69 6d 65 25 0d 00 6e 21  20 20 20 20 e7 20 6e 65  |ime%..n!    . ne|
000000f0  77 5f 74 69 6d 65 25 3e  3d 6e 65 78 74 5f 74 69  |w_time%>=next_ti|
00000100  6d 65 25 20 8c 0d 00 78  4d 20 20 20 20 20 20 e7  |me% ...xM      .|
00000110  20 a4 74 68 69 73 5f 74  69 6d 65 3e 3d 63 5f 74  | .this_time>=c_t|
00000120  69 6d 65 25 28 61 6c 61  72 6d 5f 73 65 74 25 29  |ime%(alarm_set%)|
00000130  20 8c 20 f2 61 6c 61 72  6d 28 61 6c 61 72 6d 5f  | . .alarm(alarm_|
00000140  73 65 74 25 2c 74 68 69  73 5f 64 61 74 65 25 2c  |set%,this_date%,|
00000150  31 29 0d 00 82 23 20 20  20 20 20 20 6e 65 78 74  |1)...#      next|
00000160  5f 74 69 6d 65 25 3d 6e  65 77 5f 74 69 6d 65 25  |_time%=new_time%|
00000170  2b 31 30 30 30 0d 00 8c  09 20 20 20 20 cd 0d 00  |+1000....    ...|
00000180  96 07 20 20 cc 0d 00 a0  16 20 20 20 20 f2 70 6f  |..  .....    .po|
00000190  6c 6c 28 31 2b 6e 75 6c  6c 25 29 0d 00 aa 07 20  |ll(1+null%).... |
000001a0  20 cd 0d 00 b4 05 ce 0d  00 be 0e f2 63 6c 6f 73  | ...........clos|
000001b0  65 64 6f 77 6e 0d 00 c8  04 0d 00 d2 0f dd 20 f2  |edown......... .|
000001c0  69 6e 69 74 69 61 74 65  0d 00 dc 36 f2 77 69 6d  |initiate...6.wim|
000001d0  70 69 6e 69 74 28 22 42  69 67 20 42 6f 6f 6b 22  |pinit("Big Book"|
000001e0  2c 22 21 62 69 67 62 6f  6f 6b 22 2c 22 42 69 67  |,"!bigbook","Big|
000001f0  42 6f 6f 6b 22 2c 31 39  2c 36 30 30 30 29 0d 00  |Book",19,6000)..|
00000200  e6 0b f2 69 6e 69 74 5f  73 0d 00 f0 0b f2 69 6e  |...init_s.....in|
00000210  69 74 5f 6e 0d 00 fa 0b  f2 69 6e 69 74 5f 63 0d  |it_n.....init_c.|
00000220  01 04 0b f2 69 6e 69 74  5f 61 0d 01 0e 0b f2 69  |....init_a.....i|
00000230  6e 69 74 5f 6c 0d 01 18  0b f2 69 6e 69 74 5f 6d  |nit_l.....init_m|
00000240  0d 01 22 0d f2 63 5f 61  6c 61 72 6d 73 0d 01 2c  |.."..c_alarms..,|
00000250  05 e1 0d 01 36 04 0d 01  40 0d dd 20 f2 69 6e 69  |....6...@.. .ini|
00000260  74 5f 6d 0d 01 4a 0f de  20 6d 70 24 28 35 2c 32  |t_m..J.. mp$(5,2|
00000270  30 29 0d 01 54 05 e1 0d  01 5e 04 0d 01 68 0d dd  |0)..T....^...h..|
00000280  20 f2 69 6e 69 74 5f 73  0d 01 72 1c 73 5f 66 69  | .init_s..r.s_fi|
00000290  6c 65 24 3d 64 69 72 24  2b 22 2e 53 65 74 74 69  |le$=dir$+".Setti|
000002a0  6e 67 73 22 0d 01 7c 1b  e7 20 a4 66 69 6c 65 65  |ngs"..|.. .filee|
000002b0  78 69 73 74 28 73 5f 66  69 6c 65 24 29 20 8c 0d  |xist(s_file$) ..|
000002c0  01 86 18 20 20 69 6e 5f  66 69 6c 65 3d 8e 28 73  |...  in_file=.(s|
000002d0  5f 66 69 6c 65 24 29 0d  01 90 18 20 20 e8 23 69  |_file$)....  .#i|
000002e0  6e 5f 66 69 6c 65 2c 77  65 65 6b 65 6e 64 73 0d  |n_file,weekends.|
000002f0  01 9a 15 20 20 e8 23 69  6e 5f 66 69 6c 65 2c 74  |...  .#in_file,t|
00000300  6f 64 61 79 0d 01 a4 15  20 20 e8 23 69 6e 5f 66  |oday....  .#in_f|
00000310  69 6c 65 2c 66 6f 6e 74  73 0d 01 ae 14 20 20 e8  |ile,fonts....  .|
00000320  23 69 6e 5f 66 69 6c 65  2c 62 65 65 70 0d 01 b8  |#in_file,beep...|
00000330  18 20 20 e8 23 69 6e 5f  66 69 6c 65 2c 62 69 72  |.  .#in_file,bir|
00000340  74 68 64 61 79 0d 01 c2  16 20 20 e8 23 69 6e 5f  |thday....  .#in_|
00000350  66 69 6c 65 2c 6f 74 68  65 72 24 0d 01 cc 0f 20  |file,other$.... |
00000360  20 d9 23 69 6e 5f 66 69  6c 65 0d 01 d6 05 cc 0d  | .#in_file......|
00000370  01 e0 10 20 20 77 65 65  6b 65 6e 64 73 3d b9 0d  |...  weekends=..|
00000380  01 ea 0d 20 20 74 6f 64  61 79 3d b9 0d 01 f4 0d  |...  today=.....|
00000390  20 20 66 6f 6e 74 73 3d  a3 0d 01 fe 0c 20 20 62  |  fonts=.....  b|
000003a0  65 65 70 3d b9 0d 02 08  10 20 20 62 69 72 74 68  |eep=.....  birth|
000003b0  64 61 79 3d 37 0d 02 12  14 20 20 6f 74 68 65 72  |day=7....  other|
000003c0  24 3d 22 4f 74 68 65 72  22 0d 02 1c 05 cd 0d 02  |$="Other".......|
000003d0  26 10 73 5f 63 68 61 6e  67 65 64 25 3d a3 0d 02  |&.s_changed%=...|
000003e0  30 05 e1 0d 02 3a 04 0d  02 44 0d dd 20 f2 73 61  |0....:...D.. .sa|
000003f0  76 65 5f 73 0d 02 4e 17  6f 75 74 5f 66 69 6c 65  |ve_s..N.out_file|
00000400  3d ae 28 73 5f 66 69 6c  65 24 29 0d 02 58 17 f1  |=.(s_file$)..X..|
00000410  23 6f 75 74 5f 66 69 6c  65 2c 77 65 65 6b 65 6e  |#out_file,weeken|
00000420  64 73 0d 02 62 14 f1 23  6f 75 74 5f 66 69 6c 65  |ds..b..#out_file|
00000430  2c 74 6f 64 61 79 0d 02  6c 14 f1 23 6f 75 74 5f  |,today..l..#out_|
00000440  66 69 6c 65 2c 66 6f 6e  74 73 0d 02 76 13 f1 23  |file,fonts..v..#|
00000450  6f 75 74 5f 66 69 6c 65  2c 62 65 65 70 0d 02 80  |out_file,beep...|
00000460  17 f1 23 6f 75 74 5f 66  69 6c 65 2c 62 69 72 74  |..#out_file,birt|
00000470  68 64 61 79 0d 02 8a 15  f1 23 6f 75 74 5f 66 69  |hday.....#out_fi|
00000480  6c 65 2c 6f 74 68 65 72  24 0d 02 94 0e d9 23 6f  |le,other$.....#o|
00000490  75 74 5f 66 69 6c 65 0d  02 9e 10 73 5f 63 68 61  |ut_file....s_cha|
000004a0  6e 67 65 64 25 3d a3 0d  02 a8 05 e1 0d 02 b2 04  |nged%=..........|
000004b0  0d 02 bc 0d dd 20 f2 69  6e 69 74 5f 6e 0d 02 c6  |..... .init_n...|
000004c0  20 f2 69 63 6f 6e 69 6e  66 6f 28 77 25 28 6e 6f  | .iconinfo(w%(no|
000004d0  74 65 70 61 64 25 29 2c  39 2c 71 25 29 0d 02 d0  |tepad%),9,q%)...|
000004e0  10 6e 5f 73 30 25 3d 71  25 21 38 2b 34 0d 02 da  |.n_s0%=q%!8+4...|
000004f0  16 6e 5f 73 31 25 3d 71  25 21 31 36 2d 71 25 21  |.n_s1%=q%!16-q%!|
00000500  38 2d 38 0d 02 e4 0c 6e  5f 73 69 25 3d 31 30 0d  |8-8....n_si%=10.|
00000510  02 ee 24 f2 69 63 6f 6e  69 6e 66 6f 28 77 25 28  |..$.iconinfo(w%(|
00000520  6e 6f 74 65 70 61 64 25  29 2c 6e 5f 73 69 25 2c  |notepad%),n_si%,|
00000530  71 25 29 0d 02 f8 0f 6e  5f 73 32 25 3d 71 25 21  |q%)....n_s2%=q%!|
00000540  31 32 0d 03 02 0f 6e 5f  73 33 25 3d 71 25 21 32  |12....n_s3%=q%!2|
00000550  30 0d 03 0c 0f 6e 5f 73  66 25 3d 71 25 21 32 34  |0....n_sf%=q%!24|
00000560  0d 03 16 0d 6d 61 78 5f  6e 25 3d 36 34 0d 03 20  |....max_n%=64.. |
00000570  24 de 20 6e 6f 74 65 24  28 6d 61 78 5f 6e 25 2c  |$. note$(max_n%,|
00000580  35 29 2c 6e 5f 6e 75 6d  25 28 6d 61 78 5f 6e 25  |5),n_num%(max_n%|
00000590  29 0d 03 2a 19 6e 5f 66  69 6c 65 24 3d 64 69 72  |)..*.n_file$=dir|
000005a0  24 2b 22 2e 4e 6f 74 65  73 22 0d 03 34 1b e7 20  |$+".Notes"..4.. |
000005b0  a4 66 69 6c 65 65 78 69  73 74 28 6e 5f 66 69 6c  |.fileexist(n_fil|
000005c0  65 24 29 20 8c 0d 03 3e  18 20 20 69 6e 5f 66 69  |e$) ...>.  in_fi|
000005d0  6c 65 3d 8e 28 6e 5f 66  69 6c 65 24 29 0d 03 48  |le=.(n_file$)..H|
000005e0  16 20 20 e8 23 69 6e 5f  66 69 6c 65 2c 6e 6f 74  |.  .#in_file,not|
000005f0  65 73 25 0d 03 52 17 20  20 e8 23 69 6e 5f 66 69  |es%..R.  .#in_fi|
00000600  6c 65 2c 6c 61 73 74 5f  6e 25 0d 03 5c 18 20 20  |le,last_n%..\.  |
00000610  e3 20 6e 6f 74 65 25 3d  31 20 b8 20 6e 6f 74 65  |. note%=1 . note|
00000620  73 25 0d 03 66 12 20 20  20 20 e3 20 69 25 3d 30  |s%..f.    . i%=0|
00000630  20 b8 20 35 0d 03 70 23  20 20 20 20 20 20 e8 23  | . 5..p#      .#|
00000640  69 6e 5f 66 69 6c 65 2c  6e 6f 74 65 24 28 6e 6f  |in_file,note$(no|
00000650  74 65 25 2c 69 25 29 0d  03 7a 0c 20 20 20 20 ed  |te%,i%)..z.    .|
00000660  20 69 25 0d 03 84 1f 20  20 20 20 e8 23 69 6e 5f  | i%....    .#in_|
00000670  66 69 6c 65 2c 6e 5f 6e  75 6d 25 28 6e 6f 74 65  |file,n_num%(note|
00000680  25 29 0d 03 8e 0d 20 20  ed 20 6e 6f 74 65 25 0d  |%)....  . note%.|
00000690  03 98 0f 20 20 d9 23 69  6e 5f 66 69 6c 65 0d 03  |...  .#in_file..|
000006a0  a2 05 cc 0d 03 ac 0e 20  20 6e 6f 74 65 73 25 3d  |.......  notes%=|
000006b0  31 0d 03 b6 0f 20 20 6c  61 73 74 5f 6e 25 3d 31  |1....  last_n%=1|
000006c0  0d 03 c0 1c 20 20 6e 5f  6e 75 6d 25 28 6e 6f 74  |....  n_num%(not|
000006d0  65 73 25 29 3d 6c 61 73  74 5f 6e 25 0d 03 ca 05  |es%)=last_n%....|
000006e0  cd 0d 03 d4 11 74 68 69  73 5f 6e 6f 74 65 25 3d  |.....this_note%=|
000006f0  2d 31 0d 03 de 10 6e 5f  63 68 61 6e 67 65 64 25  |-1....n_changed%|
00000700  3d a3 0d 03 e8 05 e1 0d  03 f2 04 0d 03 fc 0d dd  |=...............|
00000710  20 f2 73 61 76 65 5f 6e  0d 04 06 17 6f 75 74 5f  | .save_n....out_|
00000720  66 69 6c 65 3d ae 28 6e  5f 66 69 6c 65 24 29 0d  |file=.(n_file$).|
00000730  04 10 15 f1 23 6f 75 74  5f 66 69 6c 65 2c 6e 6f  |....#out_file,no|
00000740  74 65 73 25 0d 04 1a 16  f1 23 6f 75 74 5f 66 69  |tes%.....#out_fi|
00000750  6c 65 2c 6c 61 73 74 5f  6e 25 0d 04 24 16 e3 20  |le,last_n%..$.. |
00000760  6e 6f 74 65 25 3d 31 20  b8 20 6e 6f 74 65 73 25  |note%=1 . notes%|
00000770  0d 04 2e 10 20 20 e3 20  69 25 3d 30 20 b8 20 35  |....  . i%=0 . 5|
00000780  0d 04 38 22 20 20 20 20  f1 23 6f 75 74 5f 66 69  |..8"    .#out_fi|
00000790  6c 65 2c 6e 6f 74 65 24  28 6e 6f 74 65 25 2c 69  |le,note$(note%,i|
000007a0  25 29 0d 04 42 0a 20 20  ed 20 69 25 0d 04 4c 1e  |%)..B.  . i%..L.|
000007b0  20 20 f1 23 6f 75 74 5f  66 69 6c 65 2c 6e 5f 6e  |  .#out_file,n_n|
000007c0  75 6d 25 28 6e 6f 74 65  25 29 0d 04 56 0b ed 20  |um%(note%)..V.. |
000007d0  6e 6f 74 65 25 0d 04 60  0e d9 23 6f 75 74 5f 66  |note%..`..#out_f|
000007e0  69 6c 65 0d 04 6a 10 6e  5f 63 68 61 6e 67 65 64  |ile..j.n_changed|
000007f0  25 3d a3 0d 04 74 05 e1  0d 04 7e 04 0d 04 88 0d  |%=...t....~.....|
00000800  dd 20 f2 69 6e 69 74 5f  63 0d 04 92 09 21 71 25  |. .init_c....!q%|
00000810  3d 31 0d 04 9c 15 c8 99  22 4f 53 5f 57 6f 72 64  |=1......"OS_Word|
00000820  22 2c 31 34 2c 71 25 0d  04 a6 19 74 68 69 73 5f  |",14,q%....this_|
00000830  79 65 61 72 25 3d bb 28  c3 7e 28 3f 71 25 29 29  |year%=.(.~(?q%))|
00000840  0d 04 b0 1b 74 68 69 73  5f 6d 6f 6e 74 68 25 3d  |....this_month%=|
00000850  bb 28 c3 7e 28 71 25 3f  31 29 29 0d 04 ba 1a 74  |.(.~(q%?1))....t|
00000860  68 69 73 5f 64 61 74 65  25 3d bb 28 c3 7e 28 71  |his_date%=.(.~(q|
00000870  25 3f 32 29 29 0d 04 c4  39 de 20 6d 6f 6e 74 68  |%?2))...9. month|
00000880  24 28 31 32 29 2c 6d 6c  25 28 31 32 29 2c 64 61  |$(12),ml%(12),da|
00000890  79 24 28 36 29 2c 73 64  25 28 31 32 29 2c 6d 6f  |y$(6),sd%(12),mo|
000008a0  25 28 31 32 29 2c 6d 6d  6c 25 28 31 32 29 0d 04  |%(12),mml%(12)..|
000008b0  ce 7d 6d 6f 6e 74 68 24  28 29 3d 22 22 2c 22 4a  |.}month$()="","J|
000008c0  61 6e 75 61 72 79 22 2c  22 46 65 62 72 75 61 72  |anuary","Februar|
000008d0  79 22 2c 22 4d 61 72 63  68 22 2c 22 41 70 72 69  |y","March","Apri|
000008e0  6c 22 2c 22 4d 61 79 22  2c 22 4a 75 6e 65 22 2c  |l","May","June",|
000008f0  22 4a 75 6c 79 22 2c 22  41 75 67 75 73 74 22 2c  |"July","August",|
00000900  22 53 65 70 74 65 6d 62  65 72 22 2c 22 4f 63 74  |"September","Oct|
00000910  6f 62 65 72 22 2c 22 4e  6f 76 65 6d 62 65 72 22  |ober","November"|
00000920  2c 22 44 65 63 65 6d 62  65 72 22 0d 04 d8 2f 6d  |,"December".../m|
00000930  6c 25 28 29 3d 30 2c 33  31 2c 32 38 2c 33 31 2c  |l%()=0,31,28,31,|
00000940  33 30 2c 33 31 2c 33 30  2c 33 31 2c 33 31 2c 33  |30,31,30,31,31,3|
00000950  30 2c 33 31 2c 33 30 2c  33 31 0d 04 e2 0f e3 20  |0,31,30,31..... |
00000960  6d 25 3d 32 20 b8 20 31  32 0d 04 ec 25 20 20 6d  |m%=2 . 12...%  m|
00000970  6f 25 28 6d 25 29 3d 28  6d 6f 25 28 6d 25 2d 31  |o%(m%)=(mo%(m%-1|
00000980  29 2b 6d 6c 25 28 6d 25  2d 31 29 29 83 37 0d 04  |)+ml%(m%-1)).7..|
00000990  f6 08 ed 20 6d 25 0d 05  00 34 64 61 79 24 28 29  |... m%...4day$()|
000009a0  3d 22 53 75 6e 22 2c 22  4d 6f 6e 22 2c 22 54 75  |="Sun","Mon","Tu|
000009b0  65 22 2c 22 57 65 64 22  2c 22 54 68 75 22 2c 22  |e","Wed","Thu","|
000009c0  46 72 69 22 2c 22 53 61  74 22 0d 05 0a 0f e3 20  |Fri","Sat"..... |
000009d0  6d 25 3d 30 20 b8 20 31  32 0d 05 14 1d 20 20 6d  |m%=0 . 12....  m|
000009e0  6f 6e 74 68 25 3d 6d 25  2b 74 68 69 73 5f 6d 6f  |onth%=m%+this_mo|
000009f0  6e 74 68 25 2d 31 0d 05  1e 18 20 20 63 5f 79 65  |nth%-1....  c_ye|
00000a00  61 72 25 3d 74 68 69 73  5f 79 65 61 72 25 0d 05  |ar%=this_year%..|
00000a10  28 12 20 20 e7 20 6d 6f  6e 74 68 25 3c 31 20 8c  |(.  . month%<1 .|
00000a20  0d 05 32 12 20 20 20 20  63 5f 79 65 61 72 25 2d  |..2.    c_year%-|
00000a30  3d 31 0d 05 3c 12 20 20  20 20 6d 6f 6e 74 68 25  |=1..<.    month%|
00000a40  2b 3d 31 32 0d 05 46 07  20 20 cd 0d 05 50 13 20  |+=12..F.  ...P. |
00000a50  20 e7 20 6d 6f 6e 74 68  25 3e 31 32 20 8c 0d 05  | . month%>12 ...|
00000a60  5a 12 20 20 20 20 63 5f  79 65 61 72 25 2b 3d 31  |Z.    c_year%+=1|
00000a70  0d 05 64 12 20 20 20 20  6d 6f 6e 74 68 25 2d 3d  |..d.    month%-=|
00000a80  31 32 0d 05 6e 07 20 20  cd 0d 05 78 24 20 20 73  |12..n.  ...x$  s|
00000a90  64 25 28 6d 25 29 3d a4  64 61 79 28 31 2c 6d 6f  |d%(m%)=.day(1,mo|
00000aa0  6e 74 68 25 2c 63 5f 79  65 61 72 25 29 0d 05 82  |nth%,c_year%)...|
00000ab0  1a 20 20 6d 6d 6c 25 28  6d 25 29 3d 6d 6c 25 28  |.  mml%(m%)=ml%(|
00000ac0  6d 6f 6e 74 68 25 29 0d  05 8c 2c 20 20 e7 20 63  |month%)...,  . c|
00000ad0  5f 79 65 61 72 25 83 34  3d 30 20 80 20 6d 6f 6e  |_year%.4=0 . mon|
00000ae0  74 68 25 3d 32 20 8c 20  6d 6d 6c 25 28 6d 25 29  |th%=2 . mml%(m%)|
00000af0  3d 32 39 0d 05 96 08 ed  20 6d 25 0d 05 a0 41 63  |=29..... m%...Ac|
00000b00  5f 77 69 64 74 68 25 3d  33 35 30 3a 63 5f 68 65  |_width%=350:c_he|
00000b10  69 67 68 74 25 3d 34 30  3a 62 6f 72 64 65 72 25  |ight%=40:border%|
00000b20  3d 33 32 3a 6d 5f 68 65  69 67 68 74 25 3d 34 30  |=32:m_height%=40|
00000b30  3a 64 5f 77 69 64 74 68  25 3d 38 30 0d 05 aa 3b  |:d_width%=80...;|
00000b40  70 5f 78 30 25 3d 2d 28  62 6f 72 64 65 72 25 2b  |p_x0%=-(border%+|
00000b50  64 5f 77 69 64 74 68 25  29 3a 70 5f 79 30 25 3d  |d_width%):p_y0%=|
00000b60  2d 28 63 5f 68 65 69 67  68 74 25 2a 33 37 2b 62  |-(c_height%*37+b|
00000b70  6f 72 64 65 72 25 29 0d  05 b4 35 70 5f 78 31 25  |order%)...5p_x1%|
00000b80  3d 63 5f 77 69 64 74 68  25 2a 31 33 2b 62 6f 72  |=c_width%*13+bor|
00000b90  64 65 72 25 3a 70 5f 79  31 25 3d 62 6f 72 64 65  |der%:p_y1%=borde|
00000ba0  72 25 2b 6d 5f 68 65 69  67 68 74 25 0d 05 be 37  |r%+m_height%...7|
00000bb0  f2 73 65 74 77 69 6e 64  6f 77 65 78 74 65 6e 74  |.setwindowextent|
00000bc0  28 77 25 28 79 65 61 72  25 29 2c 70 5f 78 30 25  |(w%(year%),p_x0%|
00000bd0  2c 70 5f 79 30 25 2c 70  5f 78 31 25 2c 70 5f 79  |,p_y0%,p_x1%,p_y|
00000be0  31 25 29 0d 05 c8 43 f2  73 65 74 77 69 6e 64 6f  |1%)...C.setwindo|
00000bf0  77 65 78 74 65 6e 74 28  77 25 28 63 5f 68 6f 72  |wextent(w%(c_hor|
00000c00  7a 25 29 2c 70 5f 78 30  25 2c 70 5f 79 31 25 2d  |z%),p_x0%,p_y1%-|
00000c10  6d 5f 68 65 69 67 68 74  25 2c 70 5f 78 31 25 2c  |m_height%,p_x1%,|
00000c20  70 5f 79 31 25 29 0d 05  d2 42 f2 73 65 74 77 69  |p_y1%)...B.setwi|
00000c30  6e 64 6f 77 65 78 74 65  6e 74 28 77 25 28 63 5f  |ndowextent(w%(c_|
00000c40  76 65 72 74 25 29 2c 70  5f 78 30 25 2c 70 5f 79  |vert%),p_x0%,p_y|
00000c50  30 25 2c 70 5f 78 30 25  2b 64 5f 77 69 64 74 68  |0%,p_x0%+d_width|
00000c60  25 2c 70 5f 79 31 25 29  0d 05 dc 0e 63 5f 6d 61  |%,p_y1%)....c_ma|
00000c70  78 25 3d 33 30 30 0d 05  e6 26 de 20 63 5f 66 69  |x%=300...&. c_fi|
00000c80  72 73 74 25 28 31 32 2c  33 31 29 2c 63 5f 63 6f  |rst%(12,31),c_co|
00000c90  6c 6f 75 72 25 28 31 32  2c 33 31 29 0d 05 f0 58  |lour%(12,31)...X|
00000ca0  de 20 63 5f 65 6e 74 72  79 24 28 63 5f 6d 61 78  |. c_entry$(c_max|
00000cb0  25 29 2c 63 5f 74 79 70  65 25 28 63 5f 6d 61 78  |%),c_type%(c_max|
00000cc0  25 29 2c 63 5f 74 69 6d  65 25 28 63 5f 6d 61 78  |%),c_time%(c_max|
00000cd0  25 29 2c 63 5f 6e 65 78  74 25 28 63 5f 6d 61 78  |%),c_next%(c_max|
00000ce0  25 29 2c 63 5f 6c 69 6e  6b 25 28 31 2c 63 5f 6d  |%),c_link%(1,c_m|
00000cf0  61 78 25 29 0d 05 fa 11  63 5f 66 69 72 73 74 25  |ax%)....c_first%|
00000d00  28 29 3d 2d 31 0d 06 04  0d 63 5f 6c 61 73 74 25  |()=-1....c_last%|
00000d10  3d 30 0d 06 0e 10 de 20  64 5f 69 63 6f 6e 25 20  |=0..... d_icon% |
00000d20  34 30 0d 06 18 21 f2 69  63 6f 6e 69 6e 66 6f 28  |40...!.iconinfo(|
00000d30  77 25 28 64 61 79 25 29  2c 30 2c 64 5f 69 63 6f  |w%(day%),0,d_ico|
00000d40  6e 25 29 0d 06 22 0e 64  5f 69 63 6f 6e 25 2b 3d  |n%)..".d_icon%+=|
00000d50  38 0d 06 2c 1b f2 64 65  6c 65 74 65 69 63 6f 6e  |8..,..deleteicon|
00000d60  28 77 25 28 64 61 79 25  29 2c 30 29 0d 06 36 22  |(w%(day%),0)..6"|
00000d70  64 5f 68 65 69 67 68 74  25 3d 64 5f 69 63 6f 6e  |d_height%=d_icon|
00000d80  25 21 31 32 2d 64 5f 69  63 6f 6e 25 21 34 0d 06  |%!12-d_icon%!4..|
00000d90  40 1a 64 5f 64 61 74 65  25 3d 2d 31 3a 64 5f 6d  |@.d_date%=-1:d_m|
00000da0  6f 6e 74 68 25 3d 2d 31  0d 06 4a 10 de 20 6c 5f  |onth%=-1..J.. l_|
00000db0  69 63 6f 6e 25 28 31 29  0d 06 54 0e e3 20 69 25  |icon%(1)..T.. i%|
00000dc0  3d 30 20 b8 20 31 0d 06  5e 0d 20 20 de 20 64 25  |=0 . 1..^.  . d%|
00000dd0  20 34 30 0d 06 68 21 20  20 f2 69 63 6f 6e 69 6e  | 40..h!  .iconin|
00000de0  66 6f 28 77 25 28 64 61  79 25 29 2c 69 25 2b 31  |fo(w%(day%),i%+1|
00000df0  2c 64 25 29 0d 06 72 16  20 20 6c 5f 69 63 6f 6e  |,d%)..r.  l_icon|
00000e00  25 28 69 25 29 3d 64 25  2b 38 0d 06 7c 20 20 20  |%(i%)=d%+8..|   |
00000e10  f2 64 65 6c 65 74 65 69  63 6f 6e 28 77 25 28 64  |.deleteicon(w%(d|
00000e20  61 79 25 29 2c 69 25 2b  31 29 0d 06 86 08 ed 20  |ay%),i%+1)..... |
00000e30  69 25 0d 06 90 1b de 20  65 5f 69 63 6f 6e 25 28  |i%..... e_icon%(|
00000e40  37 29 2c 65 5f 69 63 6f  6e 24 28 37 29 0d 06 9a  |7),e_icon$(7)...|
00000e50  21 65 5f 69 63 6f 6e 25  28 29 3d 34 2c 31 2c 32  |!e_icon%()=4,1,2|
00000e60  2c 33 2c 31 30 2c 31 31  2c 31 32 2c 31 35 0d 06  |,3,10,11,12,15..|
00000e70  a4 4a 65 5f 69 63 6f 6e  24 28 29 3d 22 6e 6f 6e  |.Je_icon$()="non|
00000e80  65 22 2c 22 62 69 72 74  68 64 61 79 22 2c 22 74  |e","birthday","t|
00000e90  6f 64 6f 22 2c 22 61 6c  61 72 6d 22 2c 22 72 65  |odo","alarm","re|
00000ea0  64 22 2c 22 62 6c 75 65  22 2c 22 67 72 65 65 6e  |d","blue","green|
00000eb0  22 2c 22 67 6f 6c 64 22  0d 06 ae 10 de 20 62 5f  |","gold"..... b_|
00000ec0  63 6f 6c 25 28 31 35 29  0d 06 b8 0f e3 20 69 25  |col%(15)..... i%|
00000ed0  3d 30 20 b8 20 31 35 0d  06 c2 29 20 20 62 5f 63  |=0 . 15...)  b_c|
00000ee0  6f 6c 25 28 69 25 29 3d  a4 69 63 6f 6e 66 63 28  |ol%(i%)=.iconfc(|
00000ef0  77 25 28 63 6f 6c 6f 75  72 73 25 29 2c 69 25 29  |w%(colours%),i%)|
00000f00  0d 06 cc 08 ed 20 69 25  0d 06 d6 1e 69 6e 5f 66  |..... i%....in_f|
00000f10  69 6c 65 3d 8e 28 64 69  72 24 2b 22 2e 43 6f 6c  |ile=.(dir$+".Col|
00000f20  6f 75 72 73 22 29 0d 06  e0 0f e3 20 69 25 3d 30  |ours")..... i%=0|
00000f30  20 b8 20 31 35 0d 06 ea  32 20 20 f2 73 65 74 69  | . 15...2  .seti|
00000f40  63 6f 6e 74 65 78 74 28  77 25 28 63 6f 6c 6f 75  |context(w%(colou|
00000f50  72 73 25 29 2c 69 25 2c  c0 be 23 69 6e 5f 66 69  |rs%),i%,..#in_fi|
00000f60  6c 65 2c 31 32 29 29 0d  06 f4 08 ed 20 69 25 0d  |le,12))..... i%.|
00000f70  06 fe 0d d9 23 69 6e 5f  66 69 6c 65 0d 07 08 0b  |....#in_file....|
00000f80  f2 6c 6f 61 64 5f 63 0d  07 12 22 61 5f 64 61 74  |.load_c..."a_dat|
00000f90  65 25 3d 31 3a 61 5f 6d  6f 6e 74 68 25 3d 30 3a  |e%=1:a_month%=0:|
00000fa0  61 5f 6e 65 78 74 25 3d  30 0d 07 1c 10 61 6c 61  |a_next%=0....ala|
00000fb0  72 6d 5f 73 65 74 25 3d  30 0d 07 26 22 de 20 74  |rm_set%=0..&". t|
00000fc0  72 61 6e 73 25 20 31 36  2c 72 65 63 74 25 20 31  |rans% 16,rect% 1|
00000fd0  36 2c 70 6c 6f 74 61 74  25 20 38 0d 07 30 05 e1  |6,plotat% 8..0..|
00000fe0  0d 07 3a 04 0d 07 44 0d  dd 20 f2 69 6e 69 74 5f  |..:...D.. .init_|
00000ff0  6c 0d 07 4e 21 de 20 6c  5f 6c 69 73 74 25 28 6d  |l..N!. l_list%(m|
00001000  61 78 5f 61 25 29 2c 20  6c 5f 69 63 6f 6e 25 20  |ax_a%), l_icon% |
00001010  34 30 0d 07 58 24 f2 69  63 6f 6e 69 6e 66 6f 28  |40..X$.iconinfo(|
00001020  77 25 28 6c 65 74 74 65  72 25 29 2c 31 2c 6c 5f  |w%(letter%),1,l_|
00001030  69 63 6f 6e 25 29 0d 07  62 0e 6c 5f 69 63 6f 6e  |icon%)..b.l_icon|
00001040  25 2b 3d 38 0d 07 6c 13  6c 5f 79 30 25 3d 6c 5f  |%+=8..l.l_y0%=l_|
00001050  69 63 6f 6e 25 21 34 0d  07 76 1e 6c 5f 79 31 25  |icon%!4..v.l_y1%|
00001060  3d 6c 5f 69 63 6f 6e 25  21 31 32 2d 6c 5f 69 63  |=l_icon%!12-l_ic|
00001070  6f 6e 25 21 34 0d 07 80  1e f2 64 65 6c 65 74 65  |on%!4.....delete|
00001080  69 63 6f 6e 28 77 25 28  6c 65 74 74 65 72 25 29  |icon(w%(letter%)|
00001090  2c 31 29 0d 07 8a 0f 6c  65 74 74 65 72 73 25 3d  |,1)....letters%=|
000010a0  2d 31 0d 07 94 12 6c 5f  73 65 6c 65 63 74 65 64  |-1....l_selected|
000010b0  25 3d 2d 31 0d 07 9e 0b  f2 63 61 6c 63 5f 6c 0d  |%=-1.....calc_l.|
000010c0  07 a8 05 e1 0d 07 b2 04  0d 07 bc 0d dd 20 f2 69  |............. .i|
000010d0  6e 69 74 5f 61 0d 07 c6  21 f2 69 63 6f 6e 69 6e  |nit_a...!.iconin|
000010e0  66 6f 28 77 25 28 61 64  64 72 65 73 73 25 29 2c  |fo(w%(address%),|
000010f0  31 37 2c 71 25 29 0d 07  d0 10 61 5f 73 30 25 3d  |17,q%)....a_s0%=|
00001100  71 25 21 38 2b 34 0d 07  da 16 61 5f 73 31 25 3d  |q%!8+4....a_s1%=|
00001110  71 25 21 31 36 2d 71 25  21 38 2d 38 0d 07 e4 0c  |q%!16-q%!8-8....|
00001120  61 5f 73 69 25 3d 31 38  0d 07 ee 24 f2 69 63 6f  |a_si%=18...$.ico|
00001130  6e 69 6e 66 6f 28 77 25  28 61 64 64 72 65 73 73  |ninfo(w%(address|
00001140  25 29 2c 61 5f 73 69 25  2c 71 25 29 0d 07 f8 0f  |%),a_si%,q%)....|
00001150  61 5f 73 32 25 3d 71 25  21 31 32 0d 08 02 0f 61  |a_s2%=q%!12....a|
00001160  5f 73 33 25 3d 71 25 21  32 30 0d 08 0c 0f 61 5f  |_s3%=q%!20....a_|
00001170  73 66 25 3d 71 25 21 32  34 0d 08 16 0e 6d 61 78  |sf%=q%!24....max|
00001180  5f 61 25 3d 32 35 36 0d  08 20 40 6e 61 6d 65 3d  |_a%=256.. @name=|
00001190  30 3a 61 64 64 72 65 73  73 3d 31 3a 70 68 6f 6e  |0:address=1:phon|
000011a0  65 3d 36 3a 6f 74 68 65  72 3d 37 3a 64 6f 62 3d  |e=6:other=7:dob=|
000011b0  38 3a 73 65 6e 74 3d 39  3a 72 65 63 3d 31 30 3a  |8:sent=9:rec=10:|
000011c0  66 69 6c 65 3d 31 31 0d  08 2a 7c de 20 61 24 28  |file=11..*|. a$(|
000011d0  6d 61 78 5f 61 25 2c 31  31 29 2c 20 66 6c 61 67  |max_a%,11), flag|
000011e0  25 28 6d 61 78 5f 61 25  29 2c 20 74 79 70 65 25  |%(max_a%), type%|
000011f0  28 6d 61 78 5f 61 25 29  2c 20 61 5f 6e 75 6d 25  |(max_a%), a_num%|
00001200  28 6d 61 78 5f 61 25 29  2c 20 69 63 6f 6e 25 28  |(max_a%), icon%(|
00001210  38 29 2c 20 61 25 28 32  36 29 2c 20 67 25 28 6d  |8), a%(26), g%(m|
00001220  61 78 5f 61 25 29 2c 20  74 65 6d 70 24 28 6d 61  |ax_a%), temp$(ma|
00001230  78 5f 61 25 29 2c 20 69  6e 64 25 28 6d 61 78 5f  |x_a%), ind%(max_|
00001240  61 25 29 0d 08 34 20 69  63 6f 6e 25 28 29 3d 30  |a%)..4 icon%()=0|
00001250  2c 32 2c 33 2c 34 2c 35  2c 36 2c 31 32 2c 31 33  |,2,3,4,5,6,12,13|
00001260  2c 31 34 0d 08 3e 0b f2  6c 6f 61 64 5f 61 0d 08  |,14..>..load_a..|
00001270  48 10 74 68 69 73 5f 6e  61 6d 65 25 3d 31 0d 08  |H.this_name%=1..|
00001280  52 38 de 20 69 6e 64 65  78 5f 6d 65 6e 75 25 20  |R8. index_menu% |
00001290  31 30 32 34 2c 20 73 75  62 5f 62 6c 6f 63 6b 25  |1024, sub_block%|
000012a0  20 32 30 34 38 2c 20 73  75 62 5f 69 6e 64 65 78  | 2048, sub_index|
000012b0  25 20 32 30 34 38 0d 08  5c 2c f2 73 65 74 69 63  |% 2048..\,.setic|
000012c0  6f 6e 74 65 78 74 28 77  25 28 61 64 64 72 65 73  |ontext(w%(addres|
000012d0  73 25 29 2c 31 30 2c 6f  74 68 65 72 24 2b 22 3a  |s%),10,other$+":|
000012e0  22 29 0d 08 66 1f de 20  63 6f 6c 5f 74 6f 6e 65  |")..f.. col_tone|
000012f0  25 28 32 29 2c 72 6f 77  5f 74 6f 6e 65 25 28 33  |%(2),row_tone%(3|
00001300  29 0d 08 70 1b 63 6f 6c  5f 74 6f 6e 65 25 28 29  |)..p.col_tone%()|
00001310  3d 31 36 30 2c 31 36 37  2c 31 37 34 0d 08 7a 1f  |=160,167,174..z.|
00001320  72 6f 77 5f 74 6f 6e 65  25 28 29 3d 31 32 32 2c  |row_tone%()=122,|
00001330  31 33 30 2c 31 33 36 2c  31 34 32 0d 08 84 26 69  |130,136,142...&i|
00001340  6e 73 6c 65 6e 25 3d 30  3a 69 6e 73 70 74 72 25  |nslen%=0:insptr%|
00001350  3d 30 3a de 20 69 6e 73  64 61 74 61 25 20 34 30  |=0:. insdata% 40|
00001360  30 0d 08 8e 05 e1 0d 08  98 04 0d 08 a2 12 dd 20  |0.............. |
00001370  f2 69 6e 69 74 77 69 6e  64 6f 77 73 0d 08 ac 60  |.initwindows...`|
00001380  69 6e 66 6f 25 3d a4 69  6e 66 6f 77 69 6e 64 6f  |info%=.infowindo|
00001390  77 28 22 42 69 67 20 42  6f 6f 6b 22 2c 22 44 69  |w("Big Book","Di|
000013a0  61 72 79 2c 20 41 64 64  72 65 73 73 20 62 6f 6f  |ary, Address boo|
000013b0  6b 2c 2e 2e 2e 22 2c 22  42 61 72 72 79 20 57 69  |k,...","Barry Wi|
000013c0  63 6b 65 74 74 22 2c 22  31 2e 32 30 20 28 31 37  |ckett","1.20 (17|
000013d0  2d 44 65 63 2d 31 39 39  34 29 22 29 0d 08 b6 27  |-Dec-1994)")...'|
000013e0  65 6e 74 72 79 25 3d a4  77 69 6e 64 6f 77 28 22  |entry%=.window("|
000013f0  64 61 79 22 2c 22 65 6e  74 72 79 22 2c 30 2c 25  |day","entry",0,%|
00001400  31 30 29 0d 08 c0 42 72  65 63 6f 72 64 25 3d a4  |10)...Brecord%=.|
00001410  77 69 6e 64 6f 77 28 22  72 65 63 6f 72 64 22 2c  |window("record",|
00001420  22 72 65 63 6f 72 64 22  2c a4 6d 65 6e 75 28 22  |"record",.menu("|
00001430  46 69 6c 65 20 4c 69 6e  6b 2c 55 6e 6c 69 6e 6b  |File Link,Unlink|
00001440  22 29 2c 30 29 0d 08 ca  0f de 20 6f 74 68 65 72  |"),0)..... other|
00001450  25 20 31 34 0d 08 d4 32  6f 74 68 65 72 6d 65 6e  |% 14...2othermen|
00001460  75 25 3d a4 6d 65 6e 75  28 22 20 20 45 6e 74 65  |u%=.menu("  Ente|
00001470  72 20 64 61 74 65 20 20  2c 31 34 21 2c 2c 6f 74  |r date  ,14!,,ot|
00001480  68 65 72 25 22 29 0d 08  de 3f 72 65 63 6f 72 64  |her%")...?record|
00001490  6d 65 6e 75 25 3d a4 6d  65 6e 75 28 22 44 61 74  |menu%=.menu("Dat|
000014a0  65 2c 54 6f 64 61 79 2c  59 65 73 74 65 72 64 61  |e,Today,Yesterda|
000014b0  79 2c 4f 74 68 65 72 3e  2c 6f 74 68 65 72 6d 65  |y,Other>,otherme|
000014c0  6e 75 25 22 29 0d 08 e8  2a 69 6e 73 65 72 74 25  |nu%")...*insert%|
000014d0  3d a4 77 69 6e 64 6f 77  28 22 69 6e 73 65 72 74  |=.window("insert|
000014e0  22 2c 22 69 6e 73 65 72  74 22 2c 30 2c 30 29 0d  |","insert",0,0).|
000014f0  08 f2 4c 73 70 65 63 69  61 6c 25 3d a4 6d 65 6e  |..Lspecial%=.men|
00001500  75 28 22 53 70 65 63 69  61 6c 73 2c 49 6e 73 65  |u("Specials,Inse|
00001510  72 74 20 61 74 20 43 61  72 65 74 3e 2c 77 25 28  |rt at Caret>,w%(|
00001520  69 6e 73 65 72 74 25 29  2c 4d 61 72 6b 20 75 70  |insert%),Mark up|
00001530  20 62 69 72 74 68 64 61  79 22 29 0d 08 fc 7d 61  | birthday")...}a|
00001540  64 64 72 65 73 73 25 3d  a4 77 69 6e 64 6f 77 28  |ddress%=.window(|
00001550  22 61 64 64 72 65 73 73  65 73 22 2c 22 61 64 64  |"addresses","add|
00001560  72 65 73 73 22 2c a4 6d  65 6e 75 28 22 41 64 64  |ress",.menu("Add|
00001570  72 65 73 73 65 73 2c 41  64 64 2c 44 65 6c 65 74  |resses,Add,Delet|
00001580  65 2c 53 65 61 72 63 68  2c 53 6f 72 74 2d 2c 53  |e,Search,Sort-,S|
00001590  61 76 65 2d 2c 53 70 65  63 69 61 6c 73 3e 2c 73  |ave-,Specials>,s|
000015a0  70 65 63 69 61 6c 25 2c  50 72 69 6e 74 2e 2e 2e  |pecial%,Print...|
000015b0  22 29 2c 25 31 31 30 29  0d 09 06 44 6c 65 74 74  |"),%110)...Dlett|
000015c0  65 72 25 3d a4 77 69 6e  64 6f 77 28 22 6c 65 74  |er%=.window("let|
000015d0  74 65 72 73 22 2c 22 6c  65 74 74 65 72 22 2c a4  |ters","letter",.|
000015e0  6d 65 6e 75 28 22 4c 65  74 74 65 72 73 2c 50 72  |menu("Letters,Pr|
000015f0  69 6e 74 2e 2e 2e 22 29  2c 25 31 29 0d 09 10 2d  |int..."),%1)...-|
00001600  63 6f 6c 6f 75 72 73 25  3d a4 77 69 6e 64 6f 77  |colours%=.window|
00001610  28 22 63 6f 6c 6f 75 72  73 22 2c 22 63 6f 6c 6f  |("colours","colo|
00001620  75 72 73 22 2c 30 2c 30  29 0d 09 1a 59 64 61 79  |urs",0,0)...Yday|
00001630  25 3d a4 77 69 6e 64 6f  77 28 22 64 61 79 73 22  |%=.window("days"|
00001640  2c 22 64 61 79 22 2c a4  6d 65 6e 75 28 22 44 61  |,"day",.menu("Da|
00001650  79 2c 43 6f 6c 6f 75 72  73 3e 2c 77 25 28 63 6f  |y,Colours>,w%(co|
00001660  6c 6f 75 72 73 25 29 2c  41 64 64 20 65 6e 74 72  |lours%),Add entr|
00001670  79 2c 50 72 69 6e 74 2e  2e 2e 22 29 2c 25 31 30  |y,Print..."),%10|
00001680  30 29 0d 09 24 29 61 6c  61 72 6d 25 3d a4 77 69  |0)..$)alarm%=.wi|
00001690  6e 64 6f 77 28 22 61 6c  61 72 6d 22 2c 22 61 6c  |ndow("alarm","al|
000016a0  61 72 6d 22 2c 30 2c 25  31 30 29 0d 09 2e 27 70  |arm",0,%10)...'p|
000016b0  72 69 6e 74 25 3d a4 77  69 6e 64 6f 77 28 22 70  |rint%=.window("p|
000016c0  72 69 6e 74 22 2c 22 70  72 69 6e 74 22 2c 30 2c  |rint","print",0,|
000016d0  30 29 0d 09 38 56 79 65  61 72 25 3d a4 77 69 6e  |0)..8Vyear%=.win|
000016e0  64 6f 77 28 22 79 65 61  72 73 22 2c 22 79 65 61  |dow("years","yea|
000016f0  72 22 2c a4 6d 65 6e 75  28 22 42 6f 6f 6b 20 6f  |r",.menu("Book o|
00001700  66 20 44 61 79 73 2c 50  72 69 6e 74 3e 2d 2c 77  |f Days,Print>-,w|
00001710  25 28 70 72 69 6e 74 25  29 2c 53 61 76 65 22 29  |%(print%),Save")|
00001720  2c 25 31 30 30 31 31 29  0d 09 42 32 62 69 72 74  |,%10011)..B2birt|
00001730  68 64 61 79 25 3d a4 77  69 6e 64 6f 77 28 22 62  |hday%=.window("b|
00001740  69 72 74 68 64 61 79 22  2c 22 62 69 72 74 68 64  |irthday","birthd|
00001750  61 79 22 2c 30 2c 25 31  30 29 0d 09 4c 4e 73 61  |ay",0,%10)..LNsa|
00001760  76 65 6d 65 6e 75 25 3d  a4 6d 65 6e 75 28 22 53  |vemenu%=.menu("S|
00001770  61 76 65 2c 44 61 79 73  2c 41 64 64 72 65 73 73  |ave,Days,Address|
00001780  65 73 2c 4c 65 74 74 65  72 73 2c 4e 6f 74 65 73  |es,Letters,Notes|
00001790  2c 53 65 74 74 69 6e 67  73 2d 2c 41 6c 6c 20 63  |,Settings-,All c|
000017a0  68 61 6e 67 65 73 22 29  0d 09 56 59 6d 65 6e 75  |hanges")..VYmenu|
000017b0  25 3d a4 77 69 6e 64 6f  77 28 22 6d 65 6e 75 22  |%=.window("menu"|
000017c0  2c 22 6d 65 6e 75 22 2c  a4 6d 65 6e 75 28 22 42  |,"menu",.menu("B|
000017d0  69 67 20 42 6f 6f 6b 2c  49 6e 66 6f 3e 2c 77 25  |ig Book,Info>,w%|
000017e0  28 69 6e 66 6f 25 29 2c  53 61 76 65 3e 2c 73 61  |(info%),Save>,sa|
000017f0  76 65 6d 65 6e 75 25 2c  51 75 69 74 22 29 2c 30  |vemenu%,Quit"),0|
00001800  29 0d 09 60 29 63 5f 68  6f 72 7a 25 3d a4 77 69  |)..`)c_horz%=.wi|
00001810  6e 64 6f 77 28 22 62 6c  61 6e 6b 22 2c 22 63 5f  |ndow("blank","c_|
00001820  68 6f 72 7a 22 2c 30 2c  30 29 0d 09 6a 29 63 5f  |horz",0,0)..j)c_|
00001830  76 65 72 74 25 3d a4 77  69 6e 64 6f 77 28 22 62  |vert%=.window("b|
00001840  6c 61 6e 6b 22 2c 22 63  5f 76 65 72 74 22 2c 30  |lank","c_vert",0|
00001850  2c 30 29 0d 09 74 2f 73  65 74 74 69 6e 67 73 25  |,0)..t/settings%|
00001860  3d a4 77 69 6e 64 6f 77  28 22 73 79 73 74 65 6d  |=.window("system|
00001870  22 2c 22 73 65 74 74 69  6e 67 73 22 2c 30 2c 25  |","settings",0,%|
00001880  31 29 0d 09 7e 2d 6e 6f  74 65 70 61 64 25 3d a4  |1)..~-notepad%=.|
00001890  77 69 6e 64 6f 77 28 22  6e 6f 74 65 73 22 2c 22  |window("notes","|
000018a0  6e 6f 74 65 70 61 64 22  2c 30 2c 25 31 30 29 0d  |notepad",0,%10).|
000018b0  09 88 2a 73 65 61 72 63  68 25 3d a4 77 69 6e 64  |..*search%=.wind|
000018c0  6f 77 28 22 73 65 61 72  63 68 22 2c 22 73 65 61  |ow("search","sea|
000018d0  72 63 68 22 2c 30 2c 30  29 0d 09 92 27 6d 75 6c  |rch",0,0)...'mul|
000018e0  74 69 25 3d a4 77 69 6e  64 6f 77 28 22 6d 75 6c  |ti%=.window("mul|
000018f0  74 69 22 2c 22 6d 75 6c  74 69 22 2c 30 2c 30 29  |ti","multi",0,0)|
00001900  0d 09 9c 31 f2 69 63 6f  6e 62 61 72 6d 65 6e 75  |...1.iconbarmenu|
00001910  28 22 42 69 67 20 42 6f  6f 6b 2c 49 6e 66 6f 3e  |("Big Book,Info>|
00001920  2c 77 25 28 69 6e 66 6f  25 29 2c 51 75 69 74 22  |,w%(info%),Quit"|
00001930  29 0d 09 a6 05 e1 0d 09  b0 04 0d 09 ba 13 dd 20  |).............. |
00001940  f2 73 61 76 65 5f 63 68  61 6e 67 65 64 0d 09 c4  |.save_changed...|
00001950  1a e7 20 63 5f 63 68 61  6e 67 65 64 25 20 8c 20  |.. c_changed% . |
00001960  f2 73 61 76 65 5f 63 0d  09 ce 1a e7 20 61 5f 63  |.save_c..... a_c|
00001970  68 61 6e 67 65 64 25 20  8c 20 f2 73 61 76 65 5f  |hanged% . .save_|
00001980  61 0d 09 d8 1a e7 20 6e  5f 63 68 61 6e 67 65 64  |a..... n_changed|
00001990  25 20 8c 20 f2 73 61 76  65 5f 6e 0d 09 e2 1a e7  |% . .save_n.....|
000019a0  20 73 5f 63 68 61 6e 67  65 64 25 20 8c 20 f2 73  | s_changed% . .s|
000019b0  61 76 65 5f 73 0d 09 ec  05 e1 0d 09 f6 04 0d 0a  |ave_s...........|
000019c0  00 13 dd 20 a4 6d 65 6e  75 5f 69 63 6f 6e 62 61  |... .menu_iconba|
000019d0  72 0d 0a 0a 15 e7 20 21  62 6c 6b 25 3d 31 20 8c  |r..... !blk%=1 .|
000019e0  20 f2 71 75 69 74 0d 0a  14 06 3d 30 0d 0a 1e 04  | .quit....=0....|
000019f0  0d 0a 28 14 dd 20 a4 63  6c 69 63 6b 5f 69 63 6f  |..(.. .click_ico|
00001a00  6e 62 61 72 0d 0a 32 16  f2 6f 70 65 6e 75 70 28  |nbar..2..openup(|
00001a10  77 25 28 6d 65 6e 75 25  29 29 0d 0a 3c 06 3d 30  |w%(menu%))..<.=0|
00001a20  0d 0a 46 04 0d 0a 50 10  dd 20 a4 6d 65 6e 75 5f  |..F...P.. .menu_|
00001a30  6d 65 6e 75 0d 0a 5a 0e  c8 8e 20 21 62 6c 6b 25  |menu..Z... !blk%|
00001a40  20 ca 0d 0a 64 09 20 20  c9 20 31 0d 0a 6e 13 20  | ...d.  . 1..n. |
00001a50  20 20 20 c8 8e 20 62 6c  6b 25 21 34 20 ca 0d 0a  |   .. blk%!4 ...|
00001a60  78 17 20 20 20 20 20 20  c9 20 30 20 3a 20 f2 73  |x.      . 0 : .s|
00001a70  61 76 65 5f 63 0d 0a 82  19 20 20 20 20 20 20 c9  |ave_c....      .|
00001a80  20 31 2c 32 20 3a 20 f2  73 61 76 65 5f 61 0d 0a  | 1,2 : .save_a..|
00001a90  8c 17 20 20 20 20 20 20  c9 20 33 20 3a 20 f2 73  |..      . 3 : .s|
00001aa0  61 76 65 5f 6e 0d 0a 96  17 20 20 20 20 20 20 c9  |ave_n....      .|
00001ab0  20 34 20 3a 20 f2 73 61  76 65 5f 73 0d 0a a0 1d  | 4 : .save_s....|
00001ac0  20 20 20 20 20 20 c9 20  35 20 3a 20 f2 73 61 76  |      . 5 : .sav|
00001ad0  65 5f 63 68 61 6e 67 65  64 0d 0a aa 09 20 20 20  |e_changed....   |
00001ae0  20 cb 0d 0a b4 11 20 20  c9 20 32 20 3a 20 f2 71  | .....  . 2 : .q|
00001af0  75 69 74 0d 0a be 05 cb  0d 0a c8 06 3d 30 0d 0a  |uit.........=0..|
00001b00  d2 04 0d 0a dc 11 dd 20  a4 63 6c 69 63 6b 5f 6d  |....... .click_m|
00001b10  65 6e 75 0d 0a e6 0e c8  8e 20 69 63 6f 6e 25 20  |enu...... icon% |
00001b20  ca 0d 0a f0 22 20 20 c9  20 31 20 3a 20 f2 6f 70  |...."  . 1 : .op|
00001b30  65 6e 75 70 28 77 25 28  73 65 74 74 69 6e 67 73  |enup(w%(settings|
00001b40  25 29 29 0d 0a fa 43 20  20 c9 20 33 20 3a 20 e7  |%))...C  . 3 : .|
00001b50  20 61 63 74 69 76 65 25  28 6e 6f 74 65 70 61 64  | active%(notepad|
00001b60  25 29 20 8c 20 f2 6f 70  65 6e 75 70 28 77 25 28  |%) . .openup(w%(|
00001b70  6e 6f 74 65 70 61 64 25  29 29 20 8b 20 f2 73 65  |notepad%)) . .se|
00001b80  74 5f 6e 28 31 29 0d 0b  04 1e 20 20 c9 20 34 20  |t_n(1)....  . 4 |
00001b90  3a 20 f2 6f 70 65 6e 75  70 28 77 25 28 79 65 61  |: .openup(w%(yea|
00001ba0  72 25 29 29 0d 0b 0e 43  20 20 c9 20 35 20 3a 20  |r%))...C  . 5 : |
00001bb0  e7 20 61 63 74 69 76 65  25 28 61 64 64 72 65 73  |. active%(addres|
00001bc0  73 25 29 20 8c 20 f2 6f  70 65 6e 75 70 28 77 25  |s%) . .openup(w%|
00001bd0  28 61 64 64 72 65 73 73  25 29 29 20 8b 20 f2 73  |(address%)) . .s|
00001be0  65 74 5f 61 28 31 29 0d  0b 18 20 20 20 c9 20 36  |et_a(1)...   . 6|
00001bf0  20 3a 20 f2 6f 70 65 6e  75 70 28 77 25 28 6c 65  | : .openup(w%(le|
00001c00  74 74 65 72 25 29 29 0d  0b 22 05 cb 0d 0b 2c 06  |tter%)).."....,.|
00001c10  3d 30 0d 0b 36 04 0d 0b  40 14 dd 20 a4 6f 70 65  |=0..6...@.. .ope|
00001c20  6e 5f 73 65 74 74 69 6e  67 73 0d 0b 4a 1b e7 20  |n_settings..J.. |
00001c30  ac 61 63 74 69 76 65 25  28 73 65 74 74 69 6e 67  |.active%(setting|
00001c40  73 25 29 20 8c 0d 0b 54  2c 20 20 f2 73 65 6c 65  |s%) ...T,  .sele|
00001c50  63 74 69 63 6f 6e 28 77  25 28 73 65 74 74 69 6e  |cticon(w%(settin|
00001c60  67 73 25 29 2c 31 34 2c  77 65 65 6b 65 6e 64 73  |gs%),14,weekends|
00001c70  29 0d 0b 5e 28 20 20 f2  73 65 6c 65 63 74 69 63  |)..^(  .selectic|
00001c80  6f 6e 28 77 25 28 73 65  74 74 69 6e 67 73 25 29  |on(w%(settings%)|
00001c90  2c 32 2c 74 6f 64 61 79  29 0d 0b 68 28 20 20 f2  |,2,today)..h(  .|
00001ca0  73 65 6c 65 63 74 69 63  6f 6e 28 77 25 28 73 65  |selecticon(w%(se|
00001cb0  74 74 69 6e 67 73 25 29  2c 33 2c 66 6f 6e 74 73  |ttings%),3,fonts|
00001cc0  29 0d 0b 72 27 20 20 f2  73 65 6c 65 63 74 69 63  |)..r'  .selectic|
00001cd0  6f 6e 28 77 25 28 73 65  74 74 69 6e 67 73 25 29  |on(w%(settings%)|
00001ce0  2c 34 2c 62 65 65 70 29  0d 0b 7c 2b 20 20 f2 73  |,4,beep)..|+  .s|
00001cf0  65 74 69 63 6f 6e 76 61  6c 28 77 25 28 73 65 74  |eticonval(w%(set|
00001d00  74 69 6e 67 73 25 29 2c  38 2c 62 69 72 74 68 64  |tings%),8,birthd|
00001d10  61 79 29 0d 0b 86 2b 20  20 f2 73 65 74 69 63 6f  |ay)...+  .setico|
00001d20  6e 74 65 78 74 28 77 25  28 73 65 74 74 69 6e 67  |ntext(w%(setting|
00001d30  73 25 29 2c 31 32 2c 6f  74 68 65 72 24 29 0d 0b  |s%),12,other$)..|
00001d40  90 05 cd 0d 0b 9a 06 3d  30 0d 0b a4 04 0d 0b ae  |.......=0.......|
00001d50  15 dd 20 a4 63 6c 69 63  6b 5f 73 65 74 74 69 6e  |.. .click_settin|
00001d60  67 73 0d 0b b8 0e c8 8e  20 69 63 6f 6e 25 20 ca  |gs...... icon% .|
00001d70  0d 0b c2 0a 20 20 c9 20  31 36 0d 0b cc 15 20 20  |....  . 16....  |
00001d80  20 20 f2 6e 65 77 5f 73  65 74 74 69 6e 67 73 0d  |  .new_settings.|
00001d90  0b d6 23 20 20 20 20 f2  63 6c 6f 73 65 77 69 6e  |..#    .closewin|
00001da0  64 6f 77 28 77 25 28 73  65 74 74 69 6e 67 73 25  |dow(w%(settings%|
00001db0  29 29 0d 0b e0 28 20 20  c9 20 31 35 20 3a 20 f2  |))...(  . 15 : .|
00001dc0  63 6c 6f 73 65 77 69 6e  64 6f 77 28 77 25 28 73  |closewindow(w%(s|
00001dd0  65 74 74 69 6e 67 73 25  29 29 0d 0b ea 0a 20 20  |ettings%))....  |
00001de0  c9 20 31 37 0d 0b f4 15  20 20 20 20 f2 6e 65 77  |. 17....    .new|
00001df0  5f 73 65 74 74 69 6e 67  73 0d 0b fe 0f 20 20 20  |_settings....   |
00001e00  20 f2 73 61 76 65 5f 73  0d 0c 08 23 20 20 20 20  | .save_s...#    |
00001e10  f2 63 6c 6f 73 65 77 69  6e 64 6f 77 28 77 25 28  |.closewindow(w%(|
00001e20  73 65 74 74 69 6e 67 73  25 29 29 0d 0c 12 24 20  |settings%))...$ |
00001e30  20 c9 20 35 2c 36 20 3a  20 64 25 3d a4 69 6e 63  | . 5,6 : d%=.inc|
00001e40  69 63 6f 6e 28 38 2c 35  2c 36 2c 31 2c 39 29 0d  |icon(8,5,6,1,9).|
00001e50  0c 1c 05 7f 0d 0c 26 05  cb 0d 0c 30 06 3d 30 0d  |......&....0.=0.|
00001e60  0c 3a 04 0d 0c 44 15 dd  20 a4 63 6c 6f 73 65 5f  |.:...D.. .close_|
00001e70  62 69 72 74 68 64 61 79  0d 0c 4e 24 f2 71 75 69  |birthday..N$.qui|
00001e80  63 6b 63 6c 6f 73 65 77  69 6e 64 6f 77 28 77 25  |ckclosewindow(w%|
00001e90  28 62 69 72 74 68 64 61  79 25 29 29 0d 0c 58 18  |(birthday%))..X.|
00001ea0  61 63 74 69 76 65 25 28  62 69 72 74 68 64 61 79  |active%(birthday|
00001eb0  25 29 3d a3 0d 0c 62 20  e7 20 62 5f 63 68 65 63  |%)=...b . b_chec|
00001ec0  6b 69 6e 67 25 20 8c 20  f2 63 5f 62 69 72 74 68  |king% . .c_birth|
00001ed0  64 61 79 73 0d 0c 6c 06  3d 30 0d 0c 76 04 0d 0c  |days..l.=0..v...|
00001ee0  80 12 dd 20 a4 63 6c 6f  73 65 5f 61 6c 61 72 6d  |... .close_alarm|
00001ef0  0d 0c 8a 21 f2 71 75 69  63 6b 63 6c 6f 73 65 77  |...!.quickclosew|
00001f00  69 6e 64 6f 77 28 77 25  28 61 6c 61 72 6d 25 29  |indow(w%(alarm%)|
00001f10  29 0d 0c 94 15 61 63 74  69 76 65 25 28 61 6c 61  |)....active%(ala|
00001f20  72 6d 25 29 3d a3 0d 0c  9e 1d e7 20 61 5f 63 68  |rm%)=...... a_ch|
00001f30  65 63 6b 69 6e 67 25 20  8c 20 f2 63 5f 61 6c 61  |ecking% . .c_ala|
00001f40  72 6d 73 0d 0c a8 06 3d  30 0d 0c b2 04 0d 0c bc  |rms....=0.......|
00001f50  12 dd 20 a4 63 6c 69 63  6b 5f 61 6c 61 72 6d 0d  |.. .click_alarm.|
00001f60  0c c6 06 3d 30 0d 0c d0  04 0d 0c da 14 dd 20 a4  |...=0......... .|
00001f70  63 6c 69 63 6b 5f 63 6f  6c 6f 75 72 73 0d 0c e4  |click_colours...|
00001f80  0e c8 8e 20 69 63 6f 6e  25 20 ca 0d 0c ee 3f 20  |... icon% ....? |
00001f90  20 c9 20 30 2c 31 2c 32  2c 33 2c 34 2c 35 2c 36  | . 0,1,2,3,4,5,6|
00001fa0  2c 37 2c 38 2c 39 2c 31  30 2c 31 31 2c 31 32 2c  |,7,8,9,10,11,12,|
00001fb0  31 33 2c 31 34 2c 31 35  20 3a 20 63 5f 63 68 6f  |13,14,15 : c_cho|
00001fc0  73 65 6e 25 3d 69 63 6f  6e 25 0d 0c f8 17 20 20  |sen%=icon%....  |
00001fd0  c9 20 31 36 20 3a 20 f2  63 6c 6f 73 65 6d 65 6e  |. 16 : .closemen|
00001fe0  75 0d 0d 02 0a 20 20 c9  20 31 37 0d 0d 0c 2d 20  |u....  . 17...- |
00001ff0  20 20 20 63 5f 63 6f 6c  6f 75 72 25 28 64 5f 6d  |   c_colour%(d_m|
00002000  6f 6e 74 68 25 2c 64 5f  64 61 74 65 25 29 3d 63  |onth%,d_date%)=c|
00002010  5f 63 68 6f 73 65 6e 25  0d 0d 16 21 20 20 20 20  |_chosen%...!    |
00002020  f2 72 65 64 6f 5f 63 28  64 5f 6d 6f 6e 74 68 25  |.redo_c(d_month%|
00002030  2c 64 5f 64 61 74 65 25  29 0d 0d 20 12 20 20 20  |,d_date%).. .   |
00002040  20 f2 63 6c 6f 73 65 6d  65 6e 75 0d 0d 2a 05 cb  | .closemenu..*..|
00002050  0d 0d 34 06 3d 30 0d 0d  3e 04 0d 0d 48 12 dd 20  |..4.=0..>...H.. |
00002060  a4 6d 65 6e 75 5f 72 65  63 6f 72 64 0d 0d 52 0f  |.menu_record..R.|
00002070  e7 20 21 62 6c 6b 25 3d  30 20 8c 0d 0d 5c 1d 20  |. !blk%=0 ...\. |
00002080  20 61 24 28 6c 5f 73 65  6c 65 63 74 65 64 25 2c  | a$(l_selected%,|
00002090  66 69 6c 65 29 3d 22 22  0d 0d 66 1b 20 20 74 79  |file)=""..f.  ty|
000020a0  70 65 25 28 6c 5f 73 65  6c 65 63 74 65 64 25 29  |pe%(l_selected%)|
000020b0  3d 2d 31 0d 0d 70 11 20  20 f2 73 65 74 5f 6c 5f  |=-1..p.  .set_l_|
000020c0  64 61 74 61 0d 0d 7a 05  cd 0d 0d 84 06 3d 30 0d  |data..z......=0.|
000020d0  0d 8e 04 0d 0d 98 13 dd  20 a4 63 6c 69 63 6b 5f  |........ .click_|
000020e0  72 65 63 6f 72 64 0d 0d  a2 0e c8 8e 20 69 63 6f  |record...... ico|
000020f0  6e 25 20 ca 0d 0d ac 09  20 20 c9 20 34 0d 0d b6  |n% .....  . 4...|
00002100  22 20 20 20 20 66 69 6c  65 24 3d 61 24 28 6c 5f  |"    file$=a$(l_|
00002110  73 65 6c 65 63 74 65 64  25 2c 66 69 6c 65 29 0d  |selected%,file).|
00002120  0d c0 18 20 20 20 20 f2  66 69 6c 65 69 6e 66 6f  |...    .fileinfo|
00002130  28 66 69 6c 65 24 29 0d  0d ca 12 20 20 20 20 e7  |(file$)....    .|
00002140  20 65 78 69 73 74 25 20  8c 0d 0d d4 14 20 20 20  | exist% .....   |
00002150  20 20 20 f2 6d 6f 75 73  65 69 6e 66 6f 0d 0d de  |   .mouseinfo...|
00002160  13 20 20 20 20 20 20 62  6c 6b 25 21 31 32 3d 30  |.      blk%!12=0|
00002170  0d 0d e8 13 20 20 20 20  20 20 62 6c 6b 25 21 31  |....      blk%!1|
00002180  36 3d 35 0d 0d f2 17 20  20 20 20 20 20 62 6c 6b  |6=5....      blk|
00002190  25 21 32 30 3d 77 69 6e  64 25 0d 0d fc 17 20 20  |%!20=wind%....  |
000021a0  20 20 20 20 62 6c 6b 25  21 32 34 3d 69 63 6f 6e  |    blk%!24=icon|
000021b0  25 0d 0e 06 15 20 20 20  20 20 20 62 6c 6b 25 21  |%....      blk%!|
000021c0  32 38 3d 6d 78 25 0d 0e  10 15 20 20 20 20 20 20  |28=mx%....      |
000021d0  62 6c 6b 25 21 33 32 3d  6d 79 25 0d 0e 1a 1b 20  |blk%!32=my%.... |
000021e0  20 20 20 20 20 62 6c 6b  25 21 33 36 3d 66 69 6c  |     blk%!36=fil|
000021f0  65 73 69 7a 65 25 0d 0e  24 24 20 20 20 20 20 20  |esize%..$$      |
00002200  62 6c 6b 25 21 34 30 3d  74 79 70 65 25 28 6c 5f  |blk%!40=type%(l_|
00002210  73 65 6c 65 63 74 65 64  25 29 0d 0e 2e 1d 20 20  |selected%)....  |
00002220  20 20 20 20 24 28 62 6c  6b 25 2b 34 34 29 3d 66  |    $(blk%+44)=f|
00002230  69 6c 65 24 2b bd 30 0d  0e 38 1e 20 20 20 20 20  |ile$+.0..8.     |
00002240  20 21 62 6c 6b 25 3d 28  a9 66 69 6c 65 24 2b 34  | !blk%=(.file$+4|
00002250  38 29 80 ac 33 0d 0e 42  28 20 20 20 20 20 20 c8  |8)..3..B(      .|
00002260  99 22 57 69 6d 70 5f 53  65 6e 64 4d 65 73 73 61  |."Wimp_SendMessa|
00002270  67 65 22 2c 31 38 2c 62  6c 6b 25 2c 30 0d 0e 4c  |ge",18,blk%,0..L|
00002280  09 20 20 20 20 cc 0d 0e  56 2b 20 20 20 20 20 20  |.    ...V+      |
00002290  f2 72 65 70 6f 72 74 28  22 4c 65 74 74 65 72 20  |.report("Letter |
000022a0  66 69 6c 65 20 6e 6f 74  20 66 6f 75 6e 64 2e 22  |file not found."|
000022b0  29 0d 0e 60 09 20 20 20  20 cd 0d 0e 6a 0b 20 20  |)..`.    ...j.  |
000022c0  c9 20 35 2c 36 0d 0e 74  18 20 20 20 20 72 5f 77  |. 5,6..t.    r_w|
000022d0  68 69 63 68 25 3d 36 2d  69 63 6f 6e 25 0d 0e 7e  |hich%=6-icon%..~|
000022e0  2b 20 20 20 20 24 6f 74  68 65 72 25 3d a4 69 63  |+    $other%=.ic|
000022f0  6f 6e 74 65 78 74 28 77  69 6e 64 25 2c 72 5f 77  |ontext(wind%,r_w|
00002300  68 69 63 68 25 2b 32 29  0d 0e 88 2e 20 20 20 20  |hich%+2)....    |
00002310  f2 6f 70 65 6e 69 63 6f  6e 6d 65 6e 75 28 77 69  |.openiconmenu(wi|
00002320  6e 64 25 2c 69 63 6f 6e  25 2c 72 65 63 6f 72 64  |nd%,icon%,record|
00002330  6d 65 6e 75 25 29 0d 0e  92 0a 20 20 c9 20 31 30  |menu%)....  . 10|
00002340  0d 0e 9c 1b 20 20 20 20  f2 73 65 74 5f 61 28 6c  |....    .set_a(l|
00002350  5f 73 65 6c 65 63 74 65  64 25 29 0d 0e a6 1d 20  |_selected%).... |
00002360  20 20 20 f2 6f 70 65 6e  75 70 28 77 25 28 61 64  |   .openup(w%(ad|
00002370  64 72 65 73 73 25 29 29  0d 0e b0 26 20 20 c9 20  |dress%))...&  . |
00002380  31 31 20 3a 20 f2 63 6c  6f 73 65 77 69 6e 64 6f  |11 : .closewindo|
00002390  77 28 77 25 28 72 65 63  6f 72 64 25 29 29 0d 0e  |w(w%(record%))..|
000023a0  ba 05 cb 0d 0e c4 06 3d  30 0d 0e ce 04 0d 0e d8  |.......=0.......|
000023b0  11 dd 20 a4 6b 65 79 5f  73 65 61 72 63 68 0d 0e  |.. .key_search..|
000023c0  e2 1c e7 20 6b 65 79 25  3d 31 33 20 8c 20 f2 73  |... key%=13 . .s|
000023d0  65 61 72 63 68 28 30 2c  31 29 0d 0e ec 06 3d 30  |earch(0,1)....=0|
000023e0  0d 0e f6 04 0d 0f 00 13  dd 20 a4 63 6c 69 63 6b  |......... .click|
000023f0  5f 73 65 61 72 63 68 0d  0f 0a 3a e7 20 73 65 61  |_search...:. sea|
00002400  72 63 68 5f 74 79 70 65  25 3d 31 20 8c 20 74 68  |rch_type%=1 . th|
00002410  69 73 25 3d 74 68 69 73  5f 6e 6f 74 65 25 20 8b  |is%=this_note% .|
00002420  20 74 68 69 73 25 3d 74  68 69 73 5f 6e 61 6d 65  | this%=this_name|
00002430  25 0d 0f 14 0e c8 8e 20  69 63 6f 6e 25 20 ca 0d  |%...... icon% ..|
00002440  0f 1e 18 20 20 c9 20 32  20 3a 20 f2 73 65 61 72  |...  . 2 : .sear|
00002450  63 68 28 30 2c 31 29 0d  0f 28 1c 20 20 c9 20 33  |ch(0,1)..(.  . 3|
00002460  20 3a 20 f2 73 65 61 72  63 68 28 74 68 69 73 25  | : .search(this%|
00002470  2c 31 29 0d 0f 32 1d 20  20 c9 20 34 20 3a 20 f2  |,1)..2.  . 4 : .|
00002480  73 65 61 72 63 68 28 74  68 69 73 25 2c 2d 31 29  |search(this%,-1)|
00002490  0d 0f 3c 25 20 20 c9 20  35 20 3a 20 f2 63 6c 6f  |..<%  . 5 : .clo|
000024a0  73 65 77 69 6e 64 6f 77  28 77 25 28 73 65 61 72  |sewindow(w%(sear|
000024b0  63 68 25 29 29 0d 0f 46  05 cb 0d 0f 50 06 3d 30  |ch%))..F....P.=0|
000024c0  0d 0f 5a 04 0d 0f 64 13  dd 20 a4 64 72 6f 70 5f  |..Z...d.. .drop_|
000024d0  6e 6f 74 65 70 61 64 0d  0f 6e 06 3d 30 0d 0f 78  |notepad..n.=0..x|
000024e0  04 0d 0f 82 14 dd 20 a4  63 6c 6f 73 65 5f 6e 6f  |...... .close_no|
000024f0  74 65 70 61 64 0d 0f 8c  0f f2 67 65 74 5f 6e 5f  |tepad.....get_n_|
00002500  64 61 74 61 0d 0f 96 06  3d b9 0d 0f a0 04 0d 0f  |data....=.......|
00002510  aa 14 dd 20 a4 63 6c 69  63 6b 5f 6e 6f 74 65 70  |... .click_notep|
00002520  61 64 0d 0f b4 0e c8 8e  20 69 63 6f 6e 25 20 ca  |ad...... icon% .|
00002530  0d 0f be 16 20 20 c9 20  37 20 3a 20 f2 69 6e 63  |....  . 7 : .inc|
00002540  5f 6e 28 2d 31 29 0d 0f  c8 15 20 20 c9 20 38 20  |_n(-1)....  . 8 |
00002550  3a 20 f2 69 6e 63 5f 6e  28 31 29 0d 0f d2 17 20  |: .inc_n(1).... |
00002560  20 c9 20 6e 5f 73 69 25  20 3a 20 f2 64 72 61 67  | . n_si% : .drag|
00002570  5f 6e 0d 0f dc 13 20 20  c9 20 31 31 20 3a 20 f2  |_n....  . 11 : .|
00002580  61 64 64 5f 6e 0d 0f e6  16 20 20 c9 20 31 32 20  |add_n....  . 12 |
00002590  3a 20 f2 64 65 6c 65 74  65 5f 6e 0d 0f f0 1c 20  |: .delete_n.... |
000025a0  20 c9 20 31 33 20 3a 20  f2 6f 70 65 6e 5f 73 65  | . 13 : .open_se|
000025b0  61 72 63 68 28 31 29 0d  0f fa 23 20 20 c9 20 31  |arch(1)...#  . 1|
000025c0  34 20 3a 20 f2 73 74 61  72 74 5f 6d 75 6c 74 69  |4 : .start_multi|
000025d0  28 6e 6f 74 65 70 61 64  25 29 0d 10 04 05 cb 0d  |(notepad%)......|
000025e0  10 0e 06 3d 30 0d 10 18  04 0d 10 22 12 dd 20 a4  |...=0......".. .|
000025f0  6b 65 79 5f 6e 6f 74 65  70 61 64 0d 10 2c 1c e7  |key_notepad..,..|
00002600  20 6b 65 79 25 3e 3d 33  32 20 80 20 6b 65 79 25  | key%>=32 . key%|
00002610  3c 3d 32 35 35 20 8c 0d  10 36 20 20 20 73 74 24  |<=255 ...6   st$|
00002620  3d a4 69 63 6f 6e 74 65  78 74 28 77 69 6e 64 25  |=.icontext(wind%|
00002630  2c 69 63 6f 6e 25 29 0d  10 40 12 20 20 e7 20 6b  |,icon%)..@.  . k|
00002640  65 79 25 3d 31 32 37 20  8c 0d 10 4a 14 20 20 20  |ey%=127 ...J.   |
00002650  20 e7 20 69 6e 64 65 78  25 3e 30 20 8c 0d 10 54  | . index%>0 ...T|
00002660  2b 20 20 20 20 20 20 73  74 24 3d c0 73 74 24 2c  |+      st$=.st$,|
00002670  69 6e 64 65 78 25 2d 31  29 2b c1 73 74 24 2c 69  |index%-1)+.st$,i|
00002680  6e 64 65 78 25 2b 31 29  0d 10 5e 27 20 20 20 20  |ndex%+1)..^'    |
00002690  20 20 f2 73 65 74 69 63  6f 6e 74 65 78 74 28 77  |  .seticontext(w|
000026a0  69 6e 64 25 2c 69 63 6f  6e 25 2c 73 74 24 29 0d  |ind%,icon%,st$).|
000026b0  10 68 09 20 20 20 20 cd  0d 10 72 07 20 20 cc 0d  |.h.    ...r.  ..|
000026c0  10 7c 2f 20 20 20 20 73  74 24 3d c0 73 74 24 2c  |.|/    st$=.st$,|
000026d0  69 6e 64 65 78 25 29 2b  bd 28 6b 65 79 25 29 2b  |index%)+.(key%)+|
000026e0  c1 73 74 24 2c 69 6e 64  65 78 25 2b 31 29 0d 10  |.st$,index%+1)..|
000026f0  86 11 20 20 20 20 69 6e  64 65 78 25 2b 3d 31 0d  |..    index%+=1.|
00002700  10 90 0f 20 20 20 20 72  65 6d 24 3d 22 22 0d 10  |...    rem$=""..|
00002710  9a 10 20 20 20 20 66 69  72 73 74 25 3d b9 0d 10  |..    first%=...|
00002720  a4 09 20 20 20 20 f5 0d  10 ae 2a 20 20 20 20 20  |..    ....*     |
00002730  20 e7 20 72 65 6d 24 3c  3e 22 22 20 80 20 73 74  | . rem$<>"" . st|
00002740  24 3c 3e 22 22 20 8c 20  72 65 6d 24 2b 3d 22 20  |$<>"" . rem$+=" |
00002750  22 0d 10 b8 16 20 20 20  20 20 20 73 74 24 3d 72  |"....      st$=r|
00002760  65 6d 24 2b 73 74 24 0d  10 c2 11 20 20 20 20 20  |em$+st$....     |
00002770  20 72 65 6d 24 3d 22 22  0d 10 cc 15 20 20 20 20  | rem$=""....    |
00002780  20 20 e7 20 a9 73 74 24  3e 33 30 20 8c 0d 10 d6  |  . .st$>30 ....|
00002790  11 20 20 20 20 20 20 20  20 70 25 3d 33 30 0d 10  |.        p%=30..|
000027a0  e0 0d 20 20 20 20 20 20  20 20 f5 0d 10 ea 2f 20  |..        ..../ |
000027b0  20 20 20 20 20 20 20 20  20 e7 20 c1 73 74 24 2c  |         . .st$,|
000027c0  70 25 2c 31 29 3d 22 20  22 20 8c 20 70 25 3d 2d  |p%,1)=" " . p%=-|
000027d0  70 25 20 8b 20 70 25 2d  3d 31 0d 10 f4 13 20 20  |p% . p%-=1....  |
000027e0  20 20 20 20 20 20 fd 20  70 25 3c 3d 30 0d 10 fe  |      . p%<=0...|
000027f0  14 20 20 20 20 20 20 20  20 e7 20 70 25 3d 30 20  |.        . p%=0 |
00002800  8c 0d 11 08 1b 20 20 20  20 20 20 20 20 20 20 72  |.....          r|
00002810  65 6d 24 3d c1 73 74 24  2c 33 31 29 0d 11 12 1a  |em$=.st$,31)....|
00002820  20 20 20 20 20 20 20 20  20 20 73 74 24 3d c0 73  |          st$=.s|
00002830  74 24 2c 33 30 29 0d 11  1c 0d 20 20 20 20 20 20  |t$,30)....      |
00002840  20 20 cc 0d 11 26 14 20  20 20 20 20 20 20 20 20  |  ...&.         |
00002850  20 70 25 3d 2d 70 25 0d  11 30 1d 20 20 20 20 20  | p%=-p%..0.     |
00002860  20 20 20 20 20 72 65 6d  24 3d c1 73 74 24 2c 70  |     rem$=.st$,p|
00002870  25 2b 31 29 0d 11 3a 1c  20 20 20 20 20 20 20 20  |%+1)..:.        |
00002880  20 20 73 74 24 3d c0 73  74 24 2c 70 25 2d 31 29  |  st$=.st$,p%-1)|
00002890  0d 11 44 0d 20 20 20 20  20 20 20 20 cd 0d 11 4e  |..D.        ...N|
000028a0  0b 20 20 20 20 20 20 cd  0d 11 58 27 20 20 20 20  |.      ...X'    |
000028b0  20 20 f2 73 65 74 69 63  6f 6e 74 65 78 74 28 77  |  .seticontext(w|
000028c0  69 6e 64 25 2c 69 63 6f  6e 25 2c 73 74 24 29 0d  |ind%,icon%,st$).|
000028d0  11 62 14 20 20 20 20 20  20 e7 20 66 69 72 73 74  |.b.      . first|
000028e0  25 20 8c 0d 11 6c 1c 20  20 20 20 20 20 20 20 e7  |% ...l.        .|
000028f0  20 69 6e 64 65 78 25 3c  3d a9 73 74 24 20 8c 0d  | index%<=.st$ ..|
00002900  11 76 1a 20 20 20 20 20  20 20 20 20 20 63 69 63  |.v.          cic|
00002910  6f 6e 25 3d 69 63 6f 6e  25 0d 11 80 1c 20 20 20  |on%=icon%....   |
00002920  20 20 20 20 20 20 20 63  69 6e 64 65 78 25 3d 69  |       cindex%=i|
00002930  6e 64 65 78 25 0d 11 8a  0d 20 20 20 20 20 20 20  |ndex%....       |
00002940  20 cc 0d 11 94 1c 20 20  20 20 20 20 20 20 20 20  | .....          |
00002950  63 69 63 6f 6e 25 3d 69  63 6f 6e 25 2b 31 0d 11  |cicon%=icon%+1..|
00002960  9e 23 20 20 20 20 20 20  20 20 20 20 63 69 6e 64  |.#          cind|
00002970  65 78 25 3d 69 6e 64 65  78 25 2d a9 73 74 24 2d  |ex%=index%-.st$-|
00002980  31 0d 11 a8 0d 20 20 20  20 20 20 20 20 cd 0d 11  |1....        ...|
00002990  b2 14 20 20 20 20 20 20  20 20 66 69 72 73 74 25  |..        first%|
000029a0  3d a3 0d 11 bc 0b 20 20  20 20 20 20 cd 0d 11 c6  |=.....      ....|
000029b0  12 20 20 20 20 20 20 69  63 6f 6e 25 2b 3d 31 0d  |.      icon%+=1.|
000029c0  11 d0 31 20 20 20 20 20  20 e7 20 69 63 6f 6e 25  |..1      . icon%|
000029d0  3c 3d 36 20 8c 20 73 74  24 3d a4 69 63 6f 6e 74  |<=6 . st$=.icont|
000029e0  65 78 74 28 77 69 6e 64  25 2c 69 63 6f 6e 25 29  |ext(wind%,icon%)|
000029f0  0d 11 da 1b 20 20 20 20  fd 20 72 65 6d 24 3d 22  |....    . rem$="|
00002a00  22 20 84 20 69 63 6f 6e  25 3e 36 0d 11 e4 14 20  |" . icon%>6.... |
00002a10  20 20 20 e7 20 63 69 63  6f 6e 25 3d 37 20 8c 0d  |   . cicon%=7 ..|
00002a20  11 ee 10 20 20 20 20 20  20 f2 61 64 64 5f 6e 0d  |...      .add_n.|
00002a30  11 f8 24 20 20 20 20 20  20 f2 73 65 74 69 63 6f  |..$      .setico|
00002a40  6e 74 65 78 74 28 77 69  6e 64 25 2c 31 2c 72 65  |ntext(wind%,1,re|
00002a50  6d 24 29 0d 12 02 12 20  20 20 20 20 20 63 69 63  |m$)....      cic|
00002a60  6f 6e 25 3d 31 0d 12 0c  09 20 20 20 20 cd 0d 12  |on%=1....    ...|
00002a70  16 27 20 20 20 20 f2 70  75 74 63 61 72 65 74 28  |.'    .putcaret(|
00002a80  77 69 6e 64 25 2c 63 69  63 6f 6e 25 2c 63 69 6e  |wind%,cicon%,cin|
00002a90  64 65 78 25 29 0d 12 20  07 20 20 cd 0d 12 2a 05  |dex%).. .  ...*.|
00002aa0  cd 0d 12 34 16 e7 20 6b  65 79 25 3d 31 33 20 8c  |...4.. key%=13 .|
00002ab0  20 f2 61 64 64 5f 6e 0d  12 3e 06 3d 30 0d 12 48  | .add_n..>.=0..H|
00002ac0  04 0d 12 52 12 dd 20 a4  6b 65 79 5f 61 64 64 72  |...R.. .key_addr|
00002ad0  65 73 73 0d 12 5c 16 e7  20 6b 65 79 25 3d 31 33  |ess..\.. key%=13|
00002ae0  20 8c 20 f2 61 64 64 5f  61 0d 12 66 06 3d 30 0d  | . .add_a..f.=0.|
00002af0  12 70 04 0d 12 7a 14 dd  20 a4 63 6c 69 63 6b 5f  |.p...z.. .click_|
00002b00  61 64 64 72 65 73 73 0d  12 84 0e c8 8e 20 69 63  |address...... ic|
00002b10  6f 6e 25 20 ca 0d 12 8e  17 20 20 c9 20 31 36 20  |on% .....  . 16 |
00002b20  3a 20 f2 69 6e 63 5f 61  28 2d 31 29 0d 12 98 16  |: .inc_a(-1)....|
00002b30  20 20 c9 20 31 39 20 3a  20 f2 69 6e 63 5f 61 28  |  . 19 : .inc_a(|
00002b40  31 29 0d 12 a2 17 20 20  c9 20 61 5f 73 69 25 20  |1)....  . a_si% |
00002b50  3a 20 f2 64 72 61 67 5f  61 0d 12 ac 16 20 20 c9  |: .drag_a....  .|
00002b60  20 32 34 20 3a 20 f2 6c  65 74 74 65 72 5f 61 0d  | 24 : .letter_a.|
00002b70  12 b6 15 20 20 c9 20 32  30 20 3a 20 f2 61 5f 69  |...  . 20 : .a_i|
00002b80  6e 64 65 78 0d 12 c0 22  20 20 c9 20 32 35 20 3a  |ndex..."  . 25 :|
00002b90  20 f2 6c 5f 73 65 6c 65  63 74 28 74 68 69 73 5f  | .l_select(this_|
00002ba0  6e 61 6d 65 25 29 0d 12  ca 2e 20 20 c9 20 32 36  |name%)....  . 26|
00002bb0  20 3a 20 f2 64 69 61 6c  28 a4 69 63 6f 6e 74 65  | : .dial(.iconte|
00002bc0  78 74 28 77 25 28 61 64  64 72 65 73 73 25 29 2c  |xt(w%(address%),|
00002bd0  31 32 29 29 0d 12 d4 05  cb 0d 12 de 06 3d 30 0d  |12)).........=0.|
00002be0  12 e8 04 0d 12 f2 16 dd  20 a4 70 72 65 6d 65 6e  |........ .premen|
00002bf0  75 5f 61 64 64 72 65 73  73 0d 12 fc 26 f2 73 65  |u_address...&.se|
00002c00  74 69 63 6f 6e 74 65 78  74 28 77 25 28 69 6e 73  |ticontext(w%(ins|
00002c10  65 72 74 25 29 2c 35 2c  6f 74 68 65 72 24 29 0d  |ert%),5,other$).|
00002c20  13 06 06 3d 30 0d 13 10  04 0d 13 1a 13 dd 20 a4  |...=0......... .|
00002c30  6d 65 6e 75 5f 61 64 64  72 65 73 73 0d 13 24 0e  |menu_address..$.|
00002c40  c8 8e 20 21 62 6c 6b 25  20 ca 0d 13 2e 12 20 20  |.. !blk% .....  |
00002c50  c9 20 30 20 3a 20 f2 61  64 64 5f 61 0d 13 38 15  |. 0 : .add_a..8.|
00002c60  20 20 c9 20 31 20 3a 20  f2 64 65 6c 65 74 65 5f  |  . 1 : .delete_|
00002c70  61 0d 13 42 1b 20 20 c9  20 32 20 3a 20 f2 6f 70  |a..B.  . 2 : .op|
00002c80  65 6e 5f 73 65 61 72 63  68 28 32 29 0d 13 4c 20  |en_search(2)..L |
00002c90  20 20 c9 20 33 20 3a 20  e7 20 6e 61 6d 65 73 25  |  . 3 : . names%|
00002ca0  3e 31 20 8c 20 f2 73 6f  72 74 5f 61 0d 13 56 13  |>1 . .sort_a..V.|
00002cb0  20 20 c9 20 34 20 3a 20  f2 73 61 76 65 5f 61 0d  |  . 4 : .save_a.|
00002cc0  13 60 27 20 20 c9 20 35  20 3a 20 e7 20 62 6c 6b  |.`'  . 5 : . blk|
00002cd0  25 21 34 3d 31 20 8c 20  f2 6d 61 72 6b 5f 62 69  |%!4=1 . .mark_bi|
00002ce0  72 74 68 64 61 79 0d 13  6a 22 20 20 c9 20 36 20  |rthday..j"  . 6 |
00002cf0  3a 20 f2 73 74 61 72 74  5f 6d 75 6c 74 69 28 61  |: .start_multi(a|
00002d00  64 64 72 65 73 73 25 29  0d 13 74 05 cb 0d 13 7e  |ddress%)..t....~|
00002d10  06 3d 30 0d 13 88 04 0d  13 92 14 dd 20 a4 63 6c  |.=0......... .cl|
00002d20  6f 73 65 5f 61 64 64 72  65 73 73 0d 13 9c 0f f2  |ose_address.....|
00002d30  67 65 74 5f 61 5f 64 61  74 61 0d 13 a6 06 3d b9  |get_a_data....=.|
00002d40  0d 13 b0 04 0d 13 ba 13  dd 20 a4 64 72 6f 70 5f  |......... .drop_|
00002d50  61 64 64 72 65 73 73 0d  13 c4 06 3d 30 0d 13 ce  |address....=0...|
00002d60  04 0d 13 d8 10 dd 20 a4  6b 65 79 5f 65 6e 74 72  |...... .key_entr|
00002d70  79 0d 13 e2 0f e7 20 6b  65 79 25 3d 31 33 20 8c  |y..... key%=13 .|
00002d80  0d 13 ec 0c 20 20 f2 67  65 74 5f 65 0d 13 f6 1e  |....  .get_e....|
00002d90  20 20 f2 63 6c 6f 73 65  77 69 6e 64 6f 77 28 77  |  .closewindow(w|
00002da0  25 28 65 6e 74 72 79 25  29 29 0d 14 00 05 cd 0d  |%(entry%))......|
00002db0  14 0a 06 3d 30 0d 14 14  04 0d 14 1e 12 dd 20 a4  |...=0......... .|
00002dc0  63 6c 6f 73 65 5f 65 6e  74 72 79 0d 14 28 0a f2  |close_entry..(..|
00002dd0  67 65 74 5f 65 0d 14 32  06 3d b9 0d 14 3c 04 0d  |get_e..2.=...<..|
00002de0  14 46 12 dd 20 a4 63 6c  69 63 6b 5f 65 6e 74 72  |.F.. .click_entr|
00002df0  79 0d 14 50 0e c8 8e 20  69 63 6f 6e 25 20 ca 0d  |y..P... icon% ..|
00002e00  14 5a 38 20 20 c9 20 31  2c 32 2c 33 2c 34 2c 31  |.Z8  . 1,2,3,4,1|
00002e10  30 2c 31 31 2c 31 32 2c  31 35 20 3a 20 f2 73 65  |0,11,12,15 : .se|
00002e20  6c 65 63 74 69 63 6f 6e  28 77 69 6e 64 25 2c 69  |lecticon(wind%,i|
00002e30  63 6f 6e 25 2c b9 29 0d  14 64 0a 20 20 c9 20 31  |con%,.)..d.  . 1|
00002e40  33 0d 14 6e 0e 20 20 20  20 f2 67 65 74 5f 65 0d  |3..n.    .get_e.|
00002e50  14 78 20 20 20 20 20 f2  63 6c 6f 73 65 77 69 6e  |.x     .closewin|
00002e60  64 6f 77 28 77 25 28 65  6e 74 72 79 25 29 29 0d  |dow(w%(entry%)).|
00002e70  14 82 0f 20 20 c9 20 35  2c 36 2c 38 2c 39 0d 14  |...  . 5,6,8,9..|
00002e80  8c 15 20 20 20 20 68 25  3d 65 5f 74 69 6d 65 25  |..    h%=e_time%|
00002e90  81 36 30 0d 14 96 15 20  20 20 20 6d 25 3d 65 5f  |.60....    m%=e_|
00002ea0  74 69 6d 65 25 83 36 30  0d 14 a0 12 20 20 20 20  |time%.60....    |
00002eb0  c8 8e 20 69 63 6f 6e 25  20 ca 0d 14 aa 15 20 20  |.. icon% .....  |
00002ec0  20 20 20 20 c9 20 35 20  3a 20 68 25 2d 3d 31 0d  |    . 5 : h%-=1.|
00002ed0  14 b4 15 20 20 20 20 20  20 c9 20 36 20 3a 20 68  |...      . 6 : h|
00002ee0  25 2b 3d 31 0d 14 be 15  20 20 20 20 20 20 c9 20  |%+=1....      . |
00002ef0  39 20 3a 20 6d 25 2d 3d  31 0d 14 c8 15 20 20 20  |9 : m%-=1....   |
00002f00  20 20 20 c9 20 38 20 3a  20 6d 25 2b 3d 31 0d 14  |   . 8 : m%+=1..|
00002f10  d2 09 20 20 20 20 cb 0d  14 dc 27 20 20 20 20 e7  |..    ....'    .|
00002f20  20 68 25 3e 32 33 20 8c  20 68 25 3d 30 20 8b 20  | h%>23 . h%=0 . |
00002f30  e7 20 68 25 3c 30 20 8c  20 68 25 3d 32 33 0d 14  |. h%<0 . h%=23..|
00002f40  e6 27 20 20 20 20 e7 20  6d 25 3c 30 20 8c 20 6d  |.'    . m%<0 . m|
00002f50  25 3d 35 39 20 8b 20 e7  20 6d 25 3e 35 39 20 8c  |%=59 . . m%>59 .|
00002f60  20 6d 25 3d 30 0d 14 f0  1d 20 20 20 20 f2 73 65  | m%=0....    .se|
00002f70  74 5f 65 5f 74 69 6d 65  28 68 25 2a 36 30 2b 6d  |t_e_time(h%*60+m|
00002f80  25 29 0d 14 fa 25 20 20  c9 20 31 36 20 3a 20 f2  |%)...%  . 16 : .|
00002f90  73 74 61 72 74 64 72 61  67 28 65 6e 74 72 79 25  |startdrag(entry%|
00002fa0  2c 69 63 6f 6e 25 29 0d  15 04 0a 20 20 c9 20 31  |,icon%)....  . 1|
00002fb0  37 0d 15 0e 1f 20 20 20  20 74 65 6d 70 5f 65 6e  |7....    temp_en|
00002fc0  74 72 79 25 3d 74 68 69  73 5f 65 6e 74 72 79 25  |try%=this_entry%|
00002fd0  0d 15 18 12 20 20 20 20  f2 73 65 74 5f 65 28 2d  |....    .set_e(-|
00002fe0  31 29 0d 15 22 2f 20 20  20 20 f2 72 65 6d 6f 76  |1).."/    .remov|
00002ff0  65 5f 65 28 64 5f 6d 6f  6e 74 68 25 2c 64 5f 64  |e_e(d_month%,d_d|
00003000  61 74 65 25 2c 74 65 6d  70 5f 65 6e 74 72 79 25  |ate%,temp_entry%|
00003010  29 0d 15 2c 0f 20 20 20  20 f2 63 61 6c 63 5f 64  |)..,.    .calc_d|
00003020  0d 15 36 0d 20 20 c9 20  31 38 2c 31 39 0d 15 40  |..6.  . 18,19..@|
00003030  27 20 20 20 20 63 5f 6c  69 6e 6b 25 28 69 63 6f  |'    c_link%(ico|
00003040  6e 25 2d 31 38 2c 74 68  69 73 5f 65 6e 74 72 79  |n%-18,this_entry|
00003050  25 29 3d 30 0d 15 4a 1e  20 20 20 20 f2 66 6f 72  |%)=0..J.    .for|
00003060  63 65 72 65 64 72 61 77  28 77 25 28 64 61 79 25  |ceredraw(w%(day%|
00003070  29 29 0d 15 54 05 cb 0d  15 5e 06 3d 30 0d 15 68  |))..T....^.=0..h|
00003080  04 0d 15 72 11 dd 20 a4  64 72 6f 70 5f 65 6e 74  |...r.. .drop_ent|
00003090  72 79 0d 15 7c 0e c8 8e  20 77 69 6e 64 25 20 ca  |ry..|... wind% .|
000030a0  0d 15 86 14 20 20 c9 20  77 25 28 6e 6f 74 65 70  |....  . w%(notep|
000030b0  61 64 25 29 0d 15 90 31  20 20 20 20 63 5f 6c 69  |ad%)...1    c_li|
000030c0  6e 6b 25 28 31 2c 74 68  69 73 5f 65 6e 74 72 79  |nk%(1,this_entry|
000030d0  25 29 3d 6e 5f 6e 75 6d  25 28 74 68 69 73 5f 6e  |%)=n_num%(this_n|
000030e0  6f 74 65 25 29 0d 15 9a  14 20 20 20 20 63 5f 63  |ote%)....    c_c|
000030f0  68 61 6e 67 65 64 25 3d  b9 0d 15 a4 1e 20 20 20  |hanged%=.....   |
00003100  20 f2 66 6f 72 63 65 72  65 64 72 61 77 28 77 25  | .forceredraw(w%|
00003110  28 64 61 79 25 29 29 0d  15 ae 14 20 20 c9 20 77  |(day%))....  . w|
00003120  25 28 61 64 64 72 65 73  73 25 29 0d 15 b8 31 20  |%(address%)...1 |
00003130  20 20 20 63 5f 6c 69 6e  6b 25 28 30 2c 74 68 69  |   c_link%(0,thi|
00003140  73 5f 65 6e 74 72 79 25  29 3d 61 5f 6e 75 6d 25  |s_entry%)=a_num%|
00003150  28 74 68 69 73 5f 6e 61  6d 65 25 29 0d 15 c2 14  |(this_name%)....|
00003160  20 20 20 20 63 5f 63 68  61 6e 67 65 64 25 3d b9  |    c_changed%=.|
00003170  0d 15 cc 1e 20 20 20 20  f2 66 6f 72 63 65 72 65  |....    .forcere|
00003180  64 72 61 77 28 77 25 28  64 61 79 25 29 29 0d 15  |draw(w%(day%))..|
00003190  d6 05 cb 0d 15 e0 06 3d  30 0d 15 ea 04 0d 15 f4  |.......=0.......|
000031a0  13 dd 20 a4 63 6c 69 63  6b 5f 69 6e 73 65 72 74  |.. .click_insert|
000031b0  0d 15 fe 0e c8 8e 20 69  63 6f 6e 25 20 ca 0d 16  |...... icon% ...|
000031c0  08 13 20 20 c9 20 37 20  3a 20 f2 69 6e 73 65 72  |..  . 7 : .inser|
000031d0  74 0d 16 12 16 20 20 c9  20 38 20 3a 20 f2 63 6c  |t....  . 8 : .cl|
000031e0  6f 73 65 6d 65 6e 75 0d  16 1c 05 cb 0d 16 26 06  |osemenu.......&.|
000031f0  3d 30 0d 16 30 04 0d 16  3a 17 dd 20 f2 73 74 61  |=0..0...:.. .sta|
00003200  72 74 5f 6d 75 6c 74 69  28 77 30 25 29 0d 16 44  |rt_multi(w0%)..D|
00003210  0c 6d 70 24 28 29 3d 22  22 0d 16 4e 0e e3 20 69  |.mp$()=""..N.. i|
00003220  25 3d 33 20 b8 20 38 0d  16 58 27 20 20 f2 73 65  |%=3 . 8..X'  .se|
00003230  74 69 63 6f 6e 76 61 6c  69 64 28 77 25 28 6d 75  |ticonvalid(w%(mu|
00003240  6c 74 69 25 29 2c 69 25  2c 22 53 70 22 29 0d 16  |lti%),i%,"Sp")..|
00003250  62 08 ed 20 69 25 0d 16  6c 15 f2 73 65 74 5f 6d  |b.. i%..l..set_m|
00003260  75 6c 74 69 28 77 30 25  2c 33 29 0d 16 76 17 f2  |ulti(w0%,3)..v..|
00003270  6f 70 65 6e 75 70 28 77  25 28 6d 75 6c 74 69 25  |openup(w%(multi%|
00003280  29 29 0d 16 80 05 e1 0d  16 8a 04 0d 16 94 12 dd  |))..............|
00003290  20 a4 63 6c 69 63 6b 5f  6d 75 6c 74 69 0d 16 9e  | .click_multi...|
000032a0  0e c8 8e 20 69 63 6f 6e  25 20 ca 0d 16 a8 24 20  |... icon% ....$ |
000032b0  20 c9 20 31 20 3a 20 f2  63 6c 6f 73 65 77 69 6e  | . 1 : .closewin|
000032c0  64 6f 77 28 77 25 28 6d  75 6c 74 69 25 29 29 0d  |dow(w%(multi%)).|
000032d0  16 b2 18 20 20 c9 20 32  20 3a 20 f2 70 72 69 6e  |...  . 2 : .prin|
000032e0  74 5f 6d 75 6c 74 69 0d  16 bc 05 cb 0d 16 c6 06  |t_multi.........|
000032f0  3d 30 0d 16 d0 04 0d 16  da 12 dd 20 f2 70 72 69  |=0......... .pri|
00003300  6e 74 5f 6d 75 6c 74 69  0d 16 e4 20 c8 99 20 22  |nt_multi... .. "|
00003310  58 50 44 72 69 76 65 72  5f 49 6e 66 6f 22 20 b8  |XPDriver_Info" .|
00003320  20 3b 66 6c 61 67 73 25  0d 16 ee 3e e7 20 66 6c  | ;flags%...>. fl|
00003330  61 67 73 25 20 80 20 31  20 8c 20 f2 72 65 70 6f  |ags% . 1 . .repo|
00003340  72 74 28 22 50 72 69 6e  74 65 72 20 6d 61 6e 61  |rt("Printer mana|
00003350  67 65 72 20 6e 6f 74 20  69 6e 73 74 61 6c 6c 65  |ger not installe|
00003360  64 2e 22 29 3a e1 0d 16  f8 14 c8 99 22 48 6f 75  |d."):......."Hou|
00003370  72 67 6c 61 73 73 5f 4f  6e 22 0d 17 02 15 70 66  |rglass_On"....pf|
00003380  25 3d ae 28 22 70 72 69  6e 74 65 72 3a 22 29 0d  |%=.("printer:").|
00003390  17 0c 27 c8 99 22 50 44  72 69 76 65 72 5f 53 65  |..'.."PDriver_Se|
000033a0  6c 65 63 74 4a 6f 62 22  2c 70 66 25 2c 22 50 6c  |lectJob",pf%,"Pl|
000033b0  61 6e 6e 65 72 22 0d 17  16 07 ea 20 85 0d 17 20  |anner"..... ... |
000033c0  4d ee 20 85 20 ea 3a f7  20 85 3a c8 99 20 22 50  |M. . .:. .:.. "P|
000033d0  44 72 69 76 65 72 5f 41  62 6f 72 74 4a 6f 62 22  |Driver_AbortJob"|
000033e0  2c 70 66 25 3a d9 23 70  66 25 3a c8 99 22 48 6f  |,pf%:.#pf%:.."Ho|
000033f0  75 72 67 6c 61 73 73 5f  4f 66 66 22 3a f2 72 65  |urglass_Off":.re|
00003400  70 6f 72 74 28 f6 24 29  3a e1 0d 17 2a 2d c8 99  |port(.$):...*-..|
00003410  22 50 44 72 69 76 65 72  5f 50 61 67 65 53 69 7a  |"PDriver_PageSiz|
00003420  65 22 20 b8 20 2c 77 25  2c 68 25 2c 6c 25 2c 62  |e" . ,w%,h%,l%,b|
00003430  25 2c 72 25 2c 74 25 0d  17 34 16 21 72 65 63 74  |%,r%,t%..4.!rect|
00003440  25 3d 30 3a 72 65 63 74  25 21 34 3d 30 0d 17 3e  |%=0:rect%!4=0..>|
00003450  1e 72 65 63 74 25 21 38  3d 31 34 32 30 3a 72 65  |.rect%!8=1420:re|
00003460  63 74 25 21 31 32 3d 31  38 32 30 0d 17 48 1c 21  |ct%!12=1820..H.!|
00003470  74 72 61 6e 73 25 3d 31  3c 3c 31 36 3a 74 72 61  |trans%=1<<16:tra|
00003480  6e 73 25 21 34 3d 30 0d  17 52 1e 74 72 61 6e 73  |ns%!4=0..R.trans|
00003490  25 21 38 3d 30 3a 74 72  61 6e 73 25 21 31 32 3d  |%!8=0:trans%!12=|
000034a0  31 3c 3c 31 36 0d 17 5c  1c 21 70 6c 6f 74 61 74  |1<<16..\.!plotat|
000034b0  25 3d 6c 25 3a 70 6c 6f  74 61 74 25 21 34 3d 62  |%=l%:plotat%!4=b|
000034c0  25 0d 17 66 3e c8 99 22  50 44 72 69 76 65 72 5f  |%..f>.."PDriver_|
000034d0  47 69 76 65 52 65 63 74  61 6e 67 6c 65 22 2c 30  |GiveRectangle",0|
000034e0  2c 72 65 63 74 25 2c 74  72 61 6e 73 25 2c 70 6c  |,rect%,trans%,pl|
000034f0  6f 74 61 74 25 2c 26 46  46 46 46 46 46 30 30 0d  |otat%,&FFFFFF00.|
00003500  17 70 2b c8 99 22 50 44  72 69 76 65 72 5f 44 72  |.p+.."PDriver_Dr|
00003510  61 77 50 61 67 65 22 2c  31 2c 62 6c 6b 25 2c 30  |awPage",1,blk%,0|
00003520  2c 30 20 b8 20 6d 6f 72  65 25 0d 17 7a 0c c8 95  |,0 . more%..z...|
00003530  20 6d 6f 72 65 25 0d 17  84 43 20 20 c8 99 22 46  | more%...C  .."F|
00003540  6f 6e 74 5f 46 69 6e 64  46 6f 6e 74 22 2c 2c 22  |ont_FindFont",,"|
00003550  54 72 69 6e 69 74 79 2e  4d 65 64 69 75 6d 22 2c  |Trinity.Medium",|
00003560  31 32 2a 31 36 2c 31 32  2a 31 36 2c 30 2c 30 20  |12*16,12*16,0,0 |
00003570  b8 20 68 61 6e 64 6c 65  25 0d 17 8e 3f 20 20 c8  |. handle%...?  .|
00003580  99 22 46 6f 6e 74 5f 46  69 6e 64 46 6f 6e 74 22  |."Font_FindFont"|
00003590  2c 2c 22 54 72 69 6e 69  74 79 2e 42 6f 6c 64 22  |,,"Trinity.Bold"|
000035a0  2c 31 32 2a 31 36 2c 31  32 2a 31 36 2c 30 2c 30  |,12*16,12*16,0,0|
000035b0  20 b8 20 62 6f 6c 64 25  0d 17 98 1e 20 20 c8 99  | . bold%....  ..|
000035c0  22 46 6f 6e 74 5f 53 65  74 46 6f 6e 74 22 2c 68  |"Font_SetFont",h|
000035d0  61 6e 64 6c 65 25 0d 17  a2 34 20 20 c8 99 22 43  |andle%...4  .."C|
000035e0  6f 6c 6f 75 72 54 72 61  6e 73 5f 53 65 74 46 6f  |olourTrans_SetFo|
000035f0  6e 74 43 6f 6c 6f 75 72  73 22 2c 30 2c 26 46 46  |ntColours",0,&FF|
00003600  46 46 46 46 30 30 2c 30  2c 36 0d 17 ac 10 20 20  |FFFF00,0,6....  |
00003610  e3 20 69 25 3d 30 20 b8  20 35 0d 17 b6 19 20 20  |. i%=0 . 5....  |
00003620  20 20 78 30 25 3d 28 69  25 83 32 29 2a 37 30 30  |  x0%=(i%.2)*700|
00003630  2b 32 30 0d 17 c0 1b 20  20 20 20 79 30 25 3d 31  |+20....    y0%=1|
00003640  38 32 30 2d 28 69 25 81  32 29 2a 36 30 30 0d 17  |820-(i%.2)*600..|
00003650  ca 13 20 20 20 20 e3 20  6c 25 3d 30 20 b8 20 32  |..    . l%=0 . 2|
00003660  30 0d 17 d4 1c 20 20 20  20 20 20 e7 20 6d 70 24  |0....      . mp$|
00003670  28 69 25 2c 6c 25 29 3c  3e 22 22 20 8c 0d 17 de  |(i%,l%)<>"" ....|
00003680  22 20 20 20 20 20 20 20  20 e7 20 c0 6d 70 24 28  |"        . .mp$(|
00003690  69 25 2c 6c 25 29 2c 31  29 3d 22 21 22 20 8c 0d  |i%,l%),1)="!" ..|
000036a0  17 e8 24 20 20 20 20 20  20 20 20 20 20 c8 99 22  |..$          .."|
000036b0  46 6f 6e 74 5f 53 65 74  46 6f 6e 74 22 2c 62 6f  |Font_SetFont",bo|
000036c0  6c 64 25 0d 17 f2 36 20  20 20 20 20 20 20 20 20  |ld%...6         |
000036d0  20 f2 66 61 6e 63 79 28  c1 6d 70 24 28 69 25 2c  | .fancy(.mp$(i%,|
000036e0  6c 25 29 2c 32 29 2c 78  30 25 2c 79 30 25 2d 28  |l%),2),x0%,y0%-(|
000036f0  6c 25 2b 31 29 2a 33 32  29 0d 17 fc 26 20 20 20  |l%+1)*32)...&   |
00003700  20 20 20 20 20 20 20 c8  99 22 46 6f 6e 74 5f 53  |       .."Font_S|
00003710  65 74 46 6f 6e 74 22 2c  68 61 6e 64 6c 65 25 0d  |etFont",handle%.|
00003720  18 06 0d 20 20 20 20 20  20 20 20 cc 0d 18 10 32  |...        ....2|
00003730  20 20 20 20 20 20 20 20  20 20 f2 66 61 6e 63 79  |          .fancy|
00003740  28 6d 70 24 28 69 25 2c  6c 25 29 2c 78 30 25 2c  |(mp$(i%,l%),x0%,|
00003750  79 30 25 2d 28 6c 25 2b  31 29 2a 33 32 29 0d 18  |y0%-(l%+1)*32)..|
00003760  1a 0d 20 20 20 20 20 20  20 20 cd 0d 18 24 0b 20  |..        ...$. |
00003770  20 20 20 20 20 cd 0d 18  2e 0c 20 20 20 20 ed 20  |     .....    . |
00003780  6c 25 0d 18 38 0a 20 20  ed 20 69 25 0d 18 42 2c  |l%..8.  . i%..B,|
00003790  20 20 c8 99 22 50 44 72  69 76 65 72 5f 47 65 74  |  .."PDriver_Get|
000037a0  52 65 63 74 61 6e 67 6c  65 22 2c 2c 62 6c 6b 25  |Rectangle",,blk%|
000037b0  20 b8 20 6d 6f 72 65 25  0d 18 4c 1f 20 20 c8 99  | . more%..L.  ..|
000037c0  22 46 6f 6e 74 5f 4c 6f  73 65 46 6f 6e 74 22 2c  |"Font_LoseFont",|
000037d0  68 61 6e 64 6c 65 25 0d  18 56 1d 20 20 c8 99 22  |handle%..V.  .."|
000037e0  46 6f 6e 74 5f 4c 6f 73  65 46 6f 6e 74 22 2c 62  |Font_LoseFont",b|
000037f0  6f 6c 64 25 0d 18 60 05  ce 0d 18 6a 1a c8 99 22  |old%..`....j..."|
00003800  50 44 72 69 76 65 72 5f  45 6e 64 4a 6f 62 22 2c  |PDriver_EndJob",|
00003810  70 66 25 0d 18 74 07 f7  20 85 0d 18 7e 09 d9 23  |pf%..t.. ...~..#|
00003820  70 66 25 0d 18 88 15 c8  99 22 48 6f 75 72 67 6c  |pf%......"Hourgl|
00003830  61 73 73 5f 4f 66 66 22  0d 18 92 1c f2 63 6c 6f  |ass_Off".....clo|
00003840  73 65 77 69 6e 64 6f 77  28 77 25 28 6d 75 6c 74  |sewindow(w%(mult|
00003850  69 25 29 29 0d 18 9c 05  e1 0d 18 a6 04 0d 18 b0  |i%))............|
00003860  17 dd 20 f2 66 61 6e 63  79 28 73 74 24 2c 78 25  |.. .fancy(st$,x%|
00003870  2c 79 25 29 0d 18 ba 0a  ea 20 74 61 62 25 0d 18  |,y%)..... tab%..|
00003880  c4 11 74 61 62 25 3d a7  73 74 24 2c bd 39 29 0d  |..tab%=.st$,.9).|
00003890  18 ce 0e e7 20 74 61 62  25 3d 30 20 8c 0d 18 d8  |.... tab%=0 ....|
000038a0  26 20 20 c8 99 22 46 6f  6e 74 5f 50 61 69 6e 74  |&  .."Font_Paint|
000038b0  22 2c 2c 73 74 24 2c 25  31 30 31 30 30 2c 78 25  |",,st$,%10100,x%|
000038c0  2c 79 25 0d 18 e2 05 cc  0d 18 ec 2b 20 20 e7 20  |,y%........+  . |
000038d0  74 61 62 25 3e 31 20 8c  20 f2 66 61 6e 63 79 28  |tab%>1 . .fancy(|
000038e0  c0 73 74 24 2c 74 61 62  25 2d 31 29 2c 78 25 2c  |.st$,tab%-1),x%,|
000038f0  79 25 29 0d 18 f6 23 20  20 f2 66 61 6e 63 79 28  |y%)...#  .fancy(|
00003900  c1 73 74 24 2c 74 61 62  25 2b 31 29 2c 78 25 2b  |.st$,tab%+1),x%+|
00003910  38 30 2c 79 25 29 0d 19  00 05 e1 0d 19 0a 04 0d  |80,y%)..........|
00003920  19 14 11 dd 20 a4 64 72  6f 70 5f 6d 75 6c 74 69  |.... .drop_multi|
00003930  0d 19 1e 24 f2 73 65 74  5f 6d 75 6c 74 69 28 a4  |...$.set_multi(.|
00003940  69 64 28 77 69 6e 64 25  29 2c 64 72 61 67 69 63  |id(wind%),dragic|
00003950  6f 6e 25 29 0d 19 28 06  3d 30 0d 19 32 04 0d 19  |on%)..(.=0..2...|
00003960  3c 17 dd 20 f2 73 65 74  5f 6d 75 6c 74 69 28 77  |<.. .set_multi(w|
00003970  25 2c 69 25 29 0d 19 46  0c 69 63 6f 6e 24 3d 22  |%,i%)..F.icon$="|
00003980  22 0d 19 50 0f e3 20 6c  25 3d 30 20 b8 20 32 30  |"..P.. l%=0 . 20|
00003990  0d 19 5a 15 20 20 6d 70  24 28 69 25 2d 33 2c 6c  |..Z.  mp$(i%-3,l|
000039a0  25 29 3d 22 22 0d 19 64  08 ed 20 6c 25 0d 19 6e  |%)=""..d.. l%..n|
000039b0  0b c8 8e 20 77 25 20 ca  0d 19 78 10 20 20 c9 20  |... w% ...x.  . |
000039c0  61 64 64 72 65 73 73 25  0d 19 82 18 20 20 20 20  |address%....    |
000039d0  69 63 6f 6e 24 3d 22 70  61 64 64 72 65 73 73 22  |icon$="paddress"|
000039e0  0d 19 8c 19 20 20 20 20  e3 20 74 79 70 65 3d 6e  |....    . type=n|
000039f0  61 6d 65 20 b8 20 64 6f  62 0d 19 96 31 20 20 20  |ame . dob...1   |
00003a00  20 20 20 6d 70 24 28 69  25 2d 33 2c 74 79 70 65  |   mp$(i%-3,type|
00003a10  2d 6e 61 6d 65 29 3d 61  24 28 74 68 69 73 5f 6e  |-name)=a$(this_n|
00003a20  61 6d 65 25 2c 74 79 70  65 29 0d 19 a0 0e 20 20  |ame%,type)....  |
00003a30  20 20 ed 20 74 79 70 65  0d 19 aa 23 20 20 20 20  |  . type...#    |
00003a40  6d 70 24 28 69 25 2d 33  2c 30 29 3d 22 21 22 2b  |mp$(i%-3,0)="!"+|
00003a50  6d 70 24 28 69 25 2d 33  2c 30 29 0d 19 b4 0c 20  |mp$(i%-3,0).... |
00003a60  20 c9 20 64 61 79 25 0d  19 be 15 20 20 20 20 69  | . day%....    i|
00003a70  63 6f 6e 24 3d 22 70 64  61 79 73 22 0d 19 c8 0c  |con$="pdays"....|
00003a80  20 20 20 20 70 25 3d 31  0d 19 d2 1f 20 20 20 20  |    p%=1....    |
00003a90  6d 70 24 28 69 25 2d 33  2c 30 29 3d 22 21 22 2b  |mp$(i%-3,0)="!"+|
00003aa0  74 5f 64 61 74 65 24 0d  19 dc 28 20 20 20 20 6e  |t_date$...(    n|
00003ab0  65 78 74 25 3d 63 5f 66  69 72 73 74 25 28 64 5f  |ext%=c_first%(d_|
00003ac0  6d 6f 6e 74 68 25 2c 64  5f 64 61 74 65 25 29 0d  |month%,d_date%).|
00003ad0  19 e6 1d 20 20 20 20 c8  95 20 6e 65 78 74 25 3c  |...    .. next%<|
00003ae0  3e 2d 31 20 80 20 70 25  3c 3d 32 30 0d 19 f0 4a  |>-1 . p%<=20...J|
00003af0  20 20 20 20 20 20 e7 20  63 5f 74 79 70 65 25 28  |      . c_type%(|
00003b00  6e 65 78 74 25 29 80 32  35 36 20 8c 20 74 69 6d  |next%).256 . tim|
00003b10  65 24 3d a4 74 69 6d 65  28 63 5f 74 69 6d 65 25  |e$=.time(c_time%|
00003b20  28 6e 65 78 74 25 29 29  2b bd 39 20 8b 20 74 69  |(next%))+.9 . ti|
00003b30  6d 65 24 3d 22 22 0d 19  fa 2c 20 20 20 20 20 20  |me$=""...,      |
00003b40  6d 70 24 28 69 25 2d 33  2c 70 25 29 3d 74 69 6d  |mp$(i%-3,p%)=tim|
00003b50  65 24 2b 63 5f 65 6e 74  72 79 24 28 6e 65 78 74  |e$+c_entry$(next|
00003b60  25 29 0d 1a 04 1e 20 20  20 20 20 20 6e 65 78 74  |%)....      next|
00003b70  25 3d 63 5f 6e 65 78 74  25 28 6e 65 78 74 25 29  |%=c_next%(next%)|
00003b80  0d 1a 0e 0f 20 20 20 20  20 20 70 25 2b 3d 31 0d  |....      p%+=1.|
00003b90  1a 18 09 20 20 20 20 ce  0d 1a 22 10 20 20 c9 20  |...    ...".  . |
00003ba0  6e 6f 74 65 70 61 64 25  0d 1a 2c 18 20 20 20 20  |notepad%..,.    |
00003bb0  69 63 6f 6e 24 3d 22 70  6e 6f 74 65 70 61 64 22  |icon$="pnotepad"|
00003bc0  0d 1a 36 13 20 20 20 20  e3 20 69 32 25 3d 30 20  |..6.    . i2%=0 |
00003bd0  b8 20 35 0d 1a 40 35 20  20 20 20 20 20 6d 70 24  |. 5..@5      mp$|
00003be0  28 69 25 2d 33 2c 69 32  25 29 3d a4 69 63 6f 6e  |(i%-3,i2%)=.icon|
00003bf0  74 65 78 74 28 77 25 28  6e 6f 74 65 70 61 64 25  |text(w%(notepad%|
00003c00  29 2c 69 32 25 2b 31 29  0d 1a 4a 0d 20 20 20 20  |),i2%+1)..J.    |
00003c10  ed 20 69 32 25 0d 1a 54  0f 20 20 c9 20 6c 65 74  |. i2%..T.  . let|
00003c20  74 65 72 25 0d 1a 5e 18  20 20 20 20 69 63 6f 6e  |ter%..^.    icon|
00003c30  24 3d 22 70 6c 65 74 74  65 72 73 22 0d 1a 68 19  |$="pletters"..h.|
00003c40  20 20 20 20 74 24 3d bd  39 2b bd 39 2b bd 39 2b  |    t$=.9+.9+.9+|
00003c50  bd 39 2b bd 39 0d 1a 72  40 20 20 20 20 6d 70 24  |.9+.9..r@    mp$|
00003c60  28 69 25 2d 33 2c 30 29  3d 22 21 4e 61 6d 65 22  |(i%-3,0)="!Name"|
00003c70  2b 74 24 2b 22 4c 61 73  74 20 53 65 6e 74 22 2b  |+t$+"Last Sent"+|
00003c80  bd 39 2b bd 39 2b 22 4c  61 73 74 20 52 65 63 65  |.9+.9+"Last Rece|
00003c90  69 76 65 64 22 0d 1a 7c  14 20 20 20 20 e7 20 6c  |ived"..|.    . l|
00003ca0  65 74 74 65 72 73 25 20  8c 0d 1a 86 1b 20 20 20  |etters% .....   |
00003cb0  20 20 20 e3 20 6c 25 3d  31 20 b8 20 6c 65 74 74  |   . l%=1 . lett|
00003cc0  65 72 73 25 0d 1a 90 1d  20 20 20 20 20 20 20 20  |ers%....        |
00003cd0  6e 61 6d 65 25 3d 6c 5f  6c 69 73 74 25 28 6c 25  |name%=l_list%(l%|
00003ce0  29 0d 1a 9a 4d 20 20 20  20 20 20 20 20 6d 70 24  |)...M        mp$|
00003cf0  28 69 25 2d 33 2c 6c 25  29 3d 61 24 28 6e 61 6d  |(i%-3,l%)=a$(nam|
00003d00  65 25 2c 6e 61 6d 65 29  2b 74 24 2b 61 24 28 6e  |e%,name)+t$+a$(n|
00003d10  61 6d 65 25 2c 73 65 6e  74 29 2b bd 39 2b bd 39  |ame%,sent)+.9+.9|
00003d20  2b 61 24 28 6e 61 6d 65  25 2c 72 65 63 29 0d 1a  |+a$(name%,rec)..|
00003d30  a4 0e 20 20 20 20 20 20  ed 20 6c 25 0d 1a ae 09  |..      . l%....|
00003d40  20 20 20 20 cd 0d 1a b8  05 7f 0d 1a c2 0f 20 20  |    ..........  |
00003d50  69 63 6f 6e 24 3d 22 70  22 0d 1a cc 05 cb 0d 1a  |icon$="p".......|
00003d60  d6 2a f2 73 65 74 69 63  6f 6e 76 61 6c 69 64 28  |.*.seticonvalid(|
00003d70  77 25 28 6d 75 6c 74 69  25 29 2c 69 25 2c 22 53  |w%(multi%),i%,"S|
00003d80  22 2b 69 63 6f 6e 24 29  0d 1a e0 2f e7 20 69 63  |"+icon$).../. ic|
00003d90  6f 6e 24 3d 22 70 22 20  8c 20 f2 72 65 70 6f 72  |on$="p" . .repor|
00003da0  74 28 22 43 61 6e 6e 6f  74 20 70 72 69 6e 74 20  |t("Cannot print |
00003db0  74 68 69 73 2e 22 29 0d  1a ea 05 e1 0d 1a f4 04  |this.").........|
00003dc0  0d 1a fe 12 dd 20 a4 63  6c 69 63 6b 5f 70 72 69  |..... .click_pri|
00003dd0  6e 74 0d 1b 08 0e c8 8e  20 69 63 6f 6e 25 20 ca  |nt...... icon% .|
00003de0  0d 1b 12 16 20 20 c9 20  34 20 3a 20 f2 63 6c 6f  |....  . 4 : .clo|
00003df0  73 65 6d 65 6e 75 0d 1b  1c 17 20 20 c9 20 35 20  |semenu....  . 5 |
00003e00  3a 20 f2 70 72 69 6e 74  5f 79 65 61 72 0d 1b 26  |: .print_year..&|
00003e10  05 cb 0d 1b 30 06 3d 30  0d 1b 3a 04 0d 1b 44 13  |....0.=0..:...D.|
00003e20  dd 20 a4 70 72 65 6f 70  65 6e 5f 79 65 61 72 0d  |. .preopen_year.|
00003e30  1b 4e 16 e7 20 61 63 74  69 76 65 25 28 79 65 61  |.N.. active%(yea|
00003e40  72 25 29 20 8c 0d 1b 58  15 20 20 21 71 25 3d 77  |r%) ...X.  !q%=w|
00003e50  25 28 63 5f 68 6f 72 7a  25 29 0d 1b 62 21 20 20  |%(c_horz%)..b!  |
00003e60  c8 99 22 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |.."Wimp_GetWindo|
00003e70  77 53 74 61 74 65 22 2c  2c 71 25 0d 1b 6c 2b 20  |wState",,q%..l+ |
00003e80  20 e7 20 71 25 21 32 38  3d 62 6c 6b 25 21 32 38  | . q%!28=blk%!28|
00003e90  20 8c 20 62 6c 6b 25 21  32 38 3d 77 25 28 63 5f  | . blk%!28=w%(c_|
00003ea0  76 65 72 74 25 29 0d 1b  76 05 cd 0d 1b 80 06 3d  |vert%)..v......=|
00003eb0  30 0d 1b 8a 04 0d 1b 94  10 dd 20 a4 6f 70 65 6e  |0......... .open|
00003ec0  5f 79 65 61 72 0d 1b 9e  39 e7 20 61 63 74 69 76  |_year...9. activ|
00003ed0  65 25 28 79 65 61 72 25  29 3d a3 20 80 20 74 6f  |e%(year%)=. . to|
00003ee0  64 61 79 3d b9 20 8c 20  f2 6e 65 77 5f 64 61 79  |day=. . .new_day|
00003ef0  28 74 68 69 73 5f 64 61  74 65 25 2c 31 29 0d 1b  |(this_date%,1)..|
00003f00  a8 1c f2 77 69 6e 64 6f  77 5f 73 74 61 74 65 28  |...window_state(|
00003f10  77 25 28 79 65 61 72 25  29 29 0d 1b b2 15 21 62  |w%(year%))....!b|
00003f20  6c 6b 25 3d 77 25 28 63  5f 68 6f 72 7a 25 29 0d  |lk%=w%(c_horz%).|
00003f30  1b bc 1c 62 6c 6b 25 21  38 3d 62 6c 6b 25 21 31  |...blk%!8=blk%!1|
00003f40  36 2d 6d 5f 68 65 69 67  68 74 25 0d 1b c6 0d 62  |6-m_height%....b|
00003f50  6c 6b 25 21 32 34 3d 30  0d 1b d0 0f f2 6f 70 65  |lk%!24=0.....ope|
00003f60  6e 77 69 6e 64 6f 77 0d  1b da 1c f2 77 69 6e 64  |nwindow.....wind|
00003f70  6f 77 5f 73 74 61 74 65  28 77 25 28 79 65 61 72  |ow_state(w%(year|
00003f80  25 29 29 0d 1b e4 15 21  62 6c 6b 25 3d 77 25 28  |%))....!blk%=w%(|
00003f90  63 5f 76 65 72 74 25 29  0d 1b ee 1b 62 6c 6b 25  |c_vert%)....blk%|
00003fa0  21 31 32 3d 62 6c 6b 25  21 34 2b 64 5f 77 69 64  |!12=blk%!4+d_wid|
00003fb0  74 68 25 0d 1b f8 13 62  6c 6b 25 21 31 36 3d 62  |th%....blk%!16=b|
00003fc0  6c 6b 25 21 31 36 0d 1c  02 0d 62 6c 6b 25 21 32  |lk%!16....blk%!2|
00003fd0  30 3d 30 0d 1c 0c 17 62  6c 6b 25 21 32 38 3d 77  |0=0....blk%!28=w|
00003fe0  25 28 63 5f 68 6f 72 7a  25 29 0d 1c 16 0f f2 6f  |%(c_horz%).....o|
00003ff0  70 65 6e 77 69 6e 64 6f  77 0d 1c 20 06 3d 30 0d  |penwindow.. .=0.|
00004000  1c 2a 04 0d 1c 34 11 dd  20 a4 63 6c 6f 73 65 5f  |.*...4.. .close_|
00004010  79 65 61 72 0d 1c 3e 1d  f2 63 6c 6f 73 65 77 69  |year..>..closewi|
00004020  6e 64 6f 77 28 77 25 28  63 5f 68 6f 72 7a 25 29  |ndow(w%(c_horz%)|
00004030  29 0d 1c 48 1d f2 63 6c  6f 73 65 77 69 6e 64 6f  |)..H..closewindo|
00004040  77 28 77 25 28 63 5f 76  65 72 74 25 29 29 0d 1c  |w(w%(c_vert%))..|
00004050  52 06 3d b9 0d 1c 5c 04  0d 1c 66 10 dd 20 a4 6d  |R.=...\...f.. .m|
00004060  65 6e 75 5f 79 65 61 72  0d 1c 70 0e c8 8e 20 21  |enu_year..p... !|
00004070  62 6c 6b 25 20 ca 0d 1c  7a 13 20 20 c9 20 31 20  |blk% ...z.  . 1 |
00004080  3a 20 f2 73 61 76 65 5f  63 0d 1c 84 05 cb 0d 1c  |: .save_c.......|
00004090  8e 06 3d 30 0d 1c 98 04  0d 1c a2 11 dd 20 a4 63  |..=0......... .c|
000040a0  6c 69 63 6b 5f 79 65 61  72 0d 1c ac 13 6d 78 25  |lick_year....mx%|
000040b0  2d 3d 77 78 25 28 79 65  61 72 25 29 0d 1c b6 13  |-=wx%(year%)....|
000040c0  6d 79 25 2d 3d 77 79 25  28 79 65 61 72 25 29 0d  |my%-=wy%(year%).|
000040d0  1c c0 13 6d 25 3d 6d 78  25 81 63 5f 77 69 64 74  |...m%=mx%.c_widt|
000040e0  68 25 0d 1c ca 16 e7 20  6d 25 3e 3d 30 20 80 20  |h%..... m%>=0 . |
000040f0  6d 25 3c 3d 31 32 20 8c  0d 1c d4 25 20 20 64 25  |m%<=12 ....%  d%|
00004100  3d 28 28 2d 6d 79 25 29  81 63 5f 68 65 69 67 68  |=((-my%).c_heigh|
00004110  74 25 29 2d 73 64 25 28  6d 25 29 2b 31 0d 1c de  |t%)-sd%(m%)+1...|
00004120  2e 20 20 e7 20 64 25 3e  3d 31 20 80 20 64 25 3c  |.  . d%>=1 . d%<|
00004130  3d 6d 6d 6c 25 28 6d 25  29 20 8c 20 f2 6e 65 77  |=mml%(m%) . .new|
00004140  5f 64 61 79 28 64 25 2c  6d 25 29 0d 1c e8 05 cd  |_day(d%,m%).....|
00004150  0d 1c f2 06 3d 30 0d 1c  fc 04 0d 1d 06 12 dd 20  |....=0......... |
00004160  a4 72 65 64 72 61 77 5f  79 65 61 72 0d 1d 10 10  |.redraw_year....|
00004170  66 6f 6e 74 5f 63 6f 6c  25 3d 2d 31 0d 1d 1a 0d  |font_col%=-1....|
00004180  e7 20 66 6f 6e 74 73 20  8c 0d 1d 24 43 20 20 c8  |. fonts ...$C  .|
00004190  99 22 46 6f 6e 74 5f 46  69 6e 64 46 6f 6e 74 22  |."Font_FindFont"|
000041a0  2c 2c 22 54 72 69 6e 69  74 79 2e 4d 65 64 69 75  |,,"Trinity.Mediu|
000041b0  6d 22 2c 31 32 2a 31 36  2c 31 32 2a 31 36 2c 30  |m",12*16,12*16,0|
000041c0  2c 30 20 b8 20 68 61 6e  64 6c 65 25 0d 1d 2e 1e  |,0 . handle%....|
000041d0  20 20 c8 99 22 46 6f 6e  74 5f 53 65 74 46 6f 6e  |  .."Font_SetFon|
000041e0  74 22 2c 68 61 6e 64 6c  65 25 0d 1d 38 05 cd 0d  |t",handle%..8...|
000041f0  1d 42 14 6d 30 25 3d 78  30 25 81 63 5f 77 69 64  |.B.m0%=x0%.c_wid|
00004200  74 68 25 0d 1d 4c 14 6d  31 25 3d 78 31 25 81 63  |th%..L.m1%=x1%.c|
00004210  5f 77 69 64 74 68 25 0d  1d 56 18 64 31 25 3d 28  |_width%..V.d1%=(|
00004220  2d 79 30 25 29 81 63 5f  68 65 69 67 68 74 25 0d  |-y0%).c_height%.|
00004230  1d 60 18 64 30 25 3d 28  2d 79 31 25 29 81 63 5f  |.`.d0%=(-y1%).c_|
00004240  68 65 69 67 68 74 25 0d  1d 6a 12 e3 20 6d 25 3d  |height%..j.. m%=|
00004250  6d 30 25 20 b8 20 6d 31  25 0d 1d 74 18 20 20 e7  |m0% . m1%..t.  .|
00004260  20 6d 25 3e 3d 30 20 80  20 6d 25 3c 3d 31 32 20  | m%>=0 . m%<=12 |
00004270  8c 0d 1d 7e 29 20 20 20  20 6d 6f 6e 74 68 25 3d  |...~)    month%=|
00004280  28 28 6d 25 2b 74 68 69  73 5f 6d 6f 6e 74 68 25  |((m%+this_month%|
00004290  2b 31 30 29 83 31 32 29  2b 31 0d 1d 88 1e 20 20  |+10).12)+1....  |
000042a0  20 20 78 5f 70 6f 73 25  3d 77 78 25 2b 6d 25 2a  |  x_pos%=wx%+m%*|
000042b0  63 5f 77 69 64 74 68 25  0d 1d 92 16 20 20 20 20  |c_width%....    |
000042c0  e3 20 64 25 3d 64 30 25  20 b8 20 64 31 25 0d 1d  |. d%=d0% . d1%..|
000042d0  9c 2f 20 20 20 20 20 20  e7 20 64 25 3e 3d 73 64  |./      . d%>=sd|
000042e0  25 28 6d 25 29 20 80 20  64 25 3c 73 64 25 28 6d  |%(m%) . d%<sd%(m|
000042f0  25 29 2b 6d 6d 6c 25 28  6d 25 29 20 8c 0d 1d a6  |%)+mml%(m%) ....|
00004300  23 20 20 20 20 20 20 20  20 79 5f 70 6f 73 25 3d  |#        y_pos%=|
00004310  77 79 25 2d 64 25 2a 63  5f 68 65 69 67 68 74 25  |wy%-d%*c_height%|
00004320  0d 1d b0 1e 20 20 20 20  20 20 20 20 64 61 74 65  |....        date|
00004330  25 3d 64 25 2d 73 64 25  28 6d 25 29 2b 31 0d 1d  |%=d%-sd%(m%)+1..|
00004340  ba 15 20 20 20 20 20 20  20 20 e7 20 6f 70 74 31  |..        . opt1|
00004350  25 20 8c 0d 1d c4 16 20  20 20 20 20 20 20 20 20  |% .....         |
00004360  20 66 5f 63 6f 6c 25 3d  30 0d 1d ce 0d 20 20 20  | f_col%=0....   |
00004370  20 20 20 20 20 cc 0d 1d  d8 28 20 20 20 20 20 20  |     ....(      |
00004380  20 20 20 20 66 5f 63 6f  6c 25 3d 63 5f 63 6f 6c  |    f_col%=c_col|
00004390  6f 75 72 25 28 6d 25 2c  64 61 74 65 25 29 0d 1d  |our%(m%,date%)..|
000043a0  e2 44 20 20 20 20 20 20  20 20 20 20 e7 20 66 5f  |.D          . f_|
000043b0  63 6f 6c 25 3d 30 20 80  20 77 65 65 6b 65 6e 64  |col%=0 . weekend|
000043c0  73 3d b9 20 80 20 28 64  25 83 37 3d 30 20 84 20  |s=. . (d%.7=0 . |
000043d0  64 25 83 37 3d 36 29 20  8c 20 66 5f 63 6f 6c 25  |d%.7=6) . f_col%|
000043e0  3d 31 0d 1d ec 0d 20 20  20 20 20 20 20 20 cd 0d  |=1....        ..|
000043f0  1d f6 29 20 20 20 20 20  20 20 20 e7 20 66 6f 6e  |..)        . fon|
00004400  74 5f 63 6f 6c 25 3c 3e  66 5f 63 6f 6c 25 20 80  |t_col%<>f_col% .|
00004410  20 66 6f 6e 74 73 20 8c  0d 1e 00 62 20 20 20 20  | fonts ....b    |
00004420  20 20 20 20 20 20 c8 99  22 43 6f 6c 6f 75 72 54  |      .."ColourT|
00004430  72 61 6e 73 5f 53 65 74  46 6f 6e 74 43 6f 6c 6f  |rans_SetFontColo|
00004440  75 72 73 22 2c 30 2c 21  28 64 65 73 6b 70 61 6c  |urs",0,!(deskpal|
00004450  25 2b 66 5f 63 6f 6c 25  2a 34 29 2c 21 28 64 65  |%+f_col%*4),!(de|
00004460  73 6b 70 61 6c 25 2b 62  5f 63 6f 6c 25 28 66 5f  |skpal%+b_col%(f_|
00004470  63 6f 6c 25 29 2a 34 29  2c 36 0d 1e 0a 1e 20 20  |col%)*4),6....  |
00004480  20 20 20 20 20 20 20 20  66 6f 6e 74 5f 63 6f 6c  |        font_col|
00004490  25 3d 66 5f 63 6f 6c 25  0d 1e 14 0d 20 20 20 20  |%=f_col%....    |
000044a0  20 20 20 20 cd 0d 1e 1e  16 20 20 20 20 20 20 20  |    .....       |
000044b0  20 e7 20 66 5f 63 6f 6c  25 20 8c 0d 1e 28 3c 20  | . f_col% ...(< |
000044c0  20 20 20 20 20 20 20 20  20 c8 99 22 43 6f 6c 6f  |         .."Colo|
000044d0  75 72 54 72 61 6e 73 5f  53 65 74 47 43 4f 4c 22  |urTrans_SetGCOL"|
000044e0  2c 21 28 64 65 73 6b 70  61 6c 25 2b 28 66 5f 63  |,!(deskpal%+(f_c|
000044f0  6f 6c 25 2a 34 29 29 0d  1e 32 35 20 20 20 20 20  |ol%*4))..25     |
00004500  20 20 20 20 20 c8 93 20  c8 90 20 78 5f 70 6f 73  |     .. .. x_pos|
00004510  25 2c 79 5f 70 6f 73 25  2c 63 5f 77 69 64 74 68  |%,y_pos%,c_width|
00004520  25 2c 2d 63 5f 68 65 69  67 68 74 25 0d 1e 3c 0d  |%,-c_height%..<.|
00004530  20 20 20 20 20 20 20 20  cd 0d 1e 46 2f 20 20 20  |        ...F/   |
00004540  20 20 20 20 20 c8 99 22  43 6f 6c 6f 75 72 54 72  |     .."ColourTr|
00004550  61 6e 73 5f 53 65 74 47  43 4f 4c 22 2c 64 65 73  |ans_SetGCOL",des|
00004560  6b 70 61 6c 25 21 32 38  0d 1e 50 30 20 20 20 20  |kpal%!28..P0    |
00004570  20 20 20 20 c8 93 20 78  5f 70 6f 73 25 2c 79 5f  |    .. x_pos%,y_|
00004580  70 6f 73 25 2c 63 5f 77  69 64 74 68 25 2c 2d 63  |pos%,c_width%,-c|
00004590  5f 68 65 69 67 68 74 25  0d 1e 5a 4c 20 20 20 20  |_height%..ZL    |
000045a0  20 20 20 20 e7 20 62 5f  63 6f 6c 25 28 66 5f 63  |    . b_col%(f_c|
000045b0  6f 6c 25 29 3d 30 20 80  20 66 6f 6e 74 73 3d 30  |ol%)=0 . fonts=0|
000045c0  20 8c 20 c8 99 22 43 6f  6c 6f 75 72 54 72 61 6e  | . .."ColourTran|
000045d0  73 5f 53 65 74 47 43 4f  4c 22 2c 21 64 65 73 6b  |s_SetGCOL",!desk|
000045e0  70 61 6c 25 0d 1e 64 2e  20 20 20 20 20 20 20 20  |pal%..d.        |
000045f0  f2 70 72 69 6e 74 28 c3  28 64 61 74 65 25 29 2c  |.print(.(date%),|
00004600  78 5f 70 6f 73 25 2b 38  2c 79 5f 70 6f 73 25 2d  |x_pos%+8,y_pos%-|
00004610  38 29 0d 1e 6e 7a 20 20  20 20 20 20 20 20 e7 20  |8)..nz        . |
00004620  63 5f 66 69 72 73 74 25  28 6d 25 2c 64 61 74 65  |c_first%(m%,date|
00004630  25 29 3e 2d 31 20 80 20  6f 70 74 30 25 3d a3 20  |%)>-1 . opt0%=. |
00004640  8c 20 f2 70 72 69 6e 74  28 a4 73 6e 69 70 28 63  |. .print(.snip(c|
00004650  5f 65 6e 74 72 79 24 28  63 5f 66 69 72 73 74 25  |_entry$(c_first%|
00004660  28 6d 25 2c 64 61 74 65  25 29 29 2c 63 5f 77 69  |(m%,date%)),c_wi|
00004670  64 74 68 25 2d 35 30 29  2c 78 5f 70 6f 73 25 2b  |dth%-50),x_pos%+|
00004680  34 36 2c 79 5f 70 6f 73  25 2d 38 29 0d 1e 78 0b  |46,y_pos%-8)..x.|
00004690  20 20 20 20 20 20 cd 0d  1e 82 0c 20 20 20 20 ed  |      .....    .|
000046a0  20 64 25 0d 1e 8c 07 20  20 cd 0d 1e 96 08 ed 20  | d%....  ...... |
000046b0  6d 25 0d 1e a0 27 e7 20  66 6f 6e 74 73 20 8c 20  |m%...'. fonts . |
000046c0  c8 99 22 46 6f 6e 74 5f  4c 6f 73 65 46 6f 6e 74  |.."Font_LoseFont|
000046d0  22 2c 68 61 6e 64 6c 65  25 0d 1e aa 06 3d 30 0d  |",handle%....=0.|
000046e0  1e b4 04 0d 1e be 15 dd  20 a4 73 6e 69 70 28 73  |........ .snip(s|
000046f0  74 24 2c 6d 61 78 25 29  0d 1e c8 1e c8 95 20 a4  |t$,max%)...... .|
00004700  73 74 72 69 6e 67 5f 77  69 64 74 68 28 73 74 24  |string_width(st$|
00004710  29 3e 6d 61 78 25 0d 1e  d2 16 20 20 73 74 24 3d  |)>max%....  st$=|
00004720  c0 73 74 24 2c a9 73 74  24 2d 31 29 0d 1e dc 05  |.st$,.st$-1)....|
00004730  ce 0d 1e e6 08 3d 73 74  24 0d 1e f0 04 0d 1e fa  |.....=st$.......|
00004740  17 dd 20 f2 70 72 69 6e  74 28 73 74 24 2c 78 25  |.. .print(st$,x%|
00004750  2c 79 25 29 0d 1f 04 0d  e7 20 66 6f 6e 74 73 20  |,y%)..... fonts |
00004760  8c 0d 1f 0e 30 20 20 c8  99 22 46 6f 6e 74 5f 50  |....0  .."Font_P|
00004770  61 69 6e 74 22 2c 68 61  6e 64 6c 65 25 2c 73 74  |aint",handle%,st|
00004780  24 2c 25 31 30 31 30 30  2c 78 25 2c 79 25 2d 32  |$,%10100,x%,y%-2|
00004790  30 0d 1f 18 05 cc 0d 1f  22 0d 20 20 ec 20 78 25  |0.......".  . x%|
000047a0  2c 79 25 0d 1f 2c 0a 20  20 f1 73 74 24 0d 1f 36  |,y%..,.  .st$..6|
000047b0  05 cd 0d 1f 40 05 e1 0d  1f 4a 04 0d 1f 54 18 dd  |....@....J...T..|
000047c0  20 a4 73 74 72 69 6e 67  5f 77 69 64 74 68 28 73  | .string_width(s|
000047d0  74 24 29 0d 1f 5e 14 ea  20 77 69 64 74 68 25 2c  |t$)..^.. width%,|
000047e0  78 30 25 2c 78 31 25 0d  1f 68 0d e7 20 66 6f 6e  |x0%,x1%..h.. fon|
000047f0  74 73 20 8c 0d 1f 72 31  20 20 c8 99 22 46 6f 6e  |ts ...r1  .."Fon|
00004800  74 5f 53 74 72 69 6e 67  42 42 6f 78 22 2c 68 61  |t_StringBBox",ha|
00004810  6e 64 6c 65 25 2c 73 74  24 20 b8 20 2c 78 30 25  |ndle%,st$ . ,x0%|
00004820  2c 2c 78 31 25 0d 1f 7c  14 20 20 77 69 64 74 68  |,,x1%..|.  width|
00004830  25 3d 78 31 25 2d 78 30  25 0d 1f 86 2c 20 20 c8  |%=x1%-x0%...,  .|
00004840  99 22 46 6f 6e 74 5f 43  6f 6e 76 65 72 74 74 6f  |."Font_Convertto|
00004850  4f 53 22 2c 2c 77 69 64  74 68 25 20 b8 20 2c 77  |OS",,width% . ,w|
00004860  69 64 74 68 25 0d 1f 90  05 cc 0d 1f 9a 14 20 20  |idth%.........  |
00004870  77 69 64 74 68 25 3d a9  73 74 24 2a 31 36 0d 1f  |width%=.st$*16..|
00004880  a4 05 cd 0d 1f ae 0b 3d  77 69 64 74 68 25 0d 1f  |.......=width%..|
00004890  b8 04 0d 1f c2 13 dd 20  a4 63 6c 69 63 6b 5f 63  |....... .click_c|
000048a0  5f 68 6f 72 7a 0d 1f cc  06 3d 30 0d 1f d6 04 0d  |_horz....=0.....|
000048b0  1f e0 14 dd 20 a4 72 65  64 72 61 77 5f 63 5f 68  |.... .redraw_c_h|
000048c0  6f 72 7a 0d 1f ea 0d e7  20 66 6f 6e 74 73 20 8c  |orz..... fonts .|
000048d0  0d 1f f4 43 20 20 c8 99  22 46 6f 6e 74 5f 46 69  |...C  .."Font_Fi|
000048e0  6e 64 46 6f 6e 74 22 2c  2c 22 54 72 69 6e 69 74  |ndFont",,"Trinit|
000048f0  79 2e 4d 65 64 69 75 6d  22 2c 31 32 2a 31 36 2c  |y.Medium",12*16,|
00004900  31 32 2a 31 36 2c 30 2c  30 20 b8 20 68 61 6e 64  |12*16,0,0 . hand|
00004910  6c 65 25 0d 1f fe 1e 20  20 c8 99 22 46 6f 6e 74  |le%....  .."Font|
00004920  5f 53 65 74 46 6f 6e 74  22 2c 68 61 6e 64 6c 65  |_SetFont",handle|
00004930  25 0d 20 08 3e 20 20 c8  99 22 43 6f 6c 6f 75 72  |%. .>  .."Colour|
00004940  54 72 61 6e 73 5f 53 65  74 46 6f 6e 74 43 6f 6c  |Trans_SetFontCol|
00004950  6f 75 72 73 22 2c 30 2c  21 64 65 73 6b 70 61 6c  |ours",0,!deskpal|
00004960  25 2c 64 65 73 6b 70 61  6c 25 21 32 38 2c 36 0d  |%,deskpal%!28,6.|
00004970  20 12 05 cc 0d 20 1c 29  20 20 c8 99 22 43 6f 6c  | .... .)  .."Col|
00004980  6f 75 72 54 72 61 6e 73  5f 53 65 74 47 43 4f 4c  |ourTrans_SetGCOL|
00004990  22 2c 64 65 73 6b 70 61  6c 25 21 32 38 0d 20 26  |",deskpal%!28. &|
000049a0  05 cd 0d 20 30 14 6d 30  25 3d 78 30 25 81 63 5f  |... 0.m0%=x0%.c_|
000049b0  77 69 64 74 68 25 0d 20  3a 14 6d 31 25 3d 78 31  |width%. :.m1%=x1|
000049c0  25 81 63 5f 77 69 64 74  68 25 0d 20 44 16 79 5f  |%.c_width%. D.y_|
000049d0  70 6f 73 25 3d 77 79 25  2d 38 2b 70 5f 79 31 25  |pos%=wy%-8+p_y1%|
000049e0  0d 20 4e 12 e3 20 6d 25  3d 6d 30 25 20 b8 20 6d  |. N.. m%=m0% . m|
000049f0  31 25 0d 20 58 18 20 20  e7 20 6d 25 3e 3d 30 20  |1%. X.  . m%>=0 |
00004a00  80 20 6d 25 3c 3d 31 32  20 8c 0d 20 62 29 20 20  |. m%<=12 .. b)  |
00004a10  20 20 6d 6f 6e 74 68 25  3d 28 28 6d 25 2b 74 68  |  month%=((m%+th|
00004a20  69 73 5f 6d 6f 6e 74 68  25 2b 31 30 29 83 31 32  |is_month%+10).12|
00004a30  29 2b 31 0d 20 6c 60 20  20 20 20 f2 70 72 69 6e  |)+1. l`    .prin|
00004a40  74 28 6d 6f 6e 74 68 24  28 6d 6f 6e 74 68 25 29  |t(month$(month%)|
00004a50  2c 77 78 25 2b 6d 25 2a  63 5f 77 69 64 74 68 25  |,wx%+m%*c_width%|
00004a60  2b 28 63 5f 77 69 64 74  68 25 2d a4 73 74 72 69  |+(c_width%-.stri|
00004a70  6e 67 5f 77 69 64 74 68  28 6d 6f 6e 74 68 24 28  |ng_width(month$(|
00004a80  6d 6f 6e 74 68 25 29 29  29 2f 32 2c 79 5f 70 6f  |month%)))/2,y_po|
00004a90  73 25 29 0d 20 76 07 20  20 cd 0d 20 80 08 ed 20  |s%). v.  .. ... |
00004aa0  6d 25 0d 20 8a 27 e7 20  66 6f 6e 74 73 20 8c 20  |m%. .'. fonts . |
00004ab0  c8 99 22 46 6f 6e 74 5f  4c 6f 73 65 46 6f 6e 74  |.."Font_LoseFont|
00004ac0  22 2c 68 61 6e 64 6c 65  25 0d 20 94 06 3d 30 0d  |",handle%. ..=0.|
00004ad0  20 9e 04 0d 20 a8 13 dd  20 a4 63 6c 69 63 6b 5f  | ... ... .click_|
00004ae0  63 5f 76 65 72 74 0d 20  b2 06 3d 30 0d 20 bc 04  |c_vert. ..=0. ..|
00004af0  0d 20 c6 14 dd 20 a4 72  65 64 72 61 77 5f 63 5f  |. ... .redraw_c_|
00004b00  76 65 72 74 0d 20 d0 0d  e7 20 66 6f 6e 74 73 20  |vert. ... fonts |
00004b10  8c 0d 20 da 43 20 20 c8  99 22 46 6f 6e 74 5f 46  |.. .C  .."Font_F|
00004b20  69 6e 64 46 6f 6e 74 22  2c 2c 22 54 72 69 6e 69  |indFont",,"Trini|
00004b30  74 79 2e 4d 65 64 69 75  6d 22 2c 31 32 2a 31 36  |ty.Medium",12*16|
00004b40  2c 31 32 2a 31 36 2c 30  2c 30 20 b8 20 68 61 6e  |,12*16,0,0 . han|
00004b50  64 6c 65 25 0d 20 e4 1e  20 20 c8 99 22 46 6f 6e  |dle%. ..  .."Fon|
00004b60  74 5f 53 65 74 46 6f 6e  74 22 2c 68 61 6e 64 6c  |t_SetFont",handl|
00004b70  65 25 0d 20 ee 3e 20 20  c8 99 22 43 6f 6c 6f 75  |e%. .>  .."Colou|
00004b80  72 54 72 61 6e 73 5f 53  65 74 46 6f 6e 74 43 6f  |rTrans_SetFontCo|
00004b90  6c 6f 75 72 73 22 2c 30  2c 21 64 65 73 6b 70 61  |lours",0,!deskpa|
00004ba0  6c 25 2c 64 65 73 6b 70  61 6c 25 21 32 38 2c 36  |l%,deskpal%!28,6|
00004bb0  0d 20 f8 05 cc 0d 21 02  29 20 20 c8 99 22 43 6f  |. ....!.)  .."Co|
00004bc0  6c 6f 75 72 54 72 61 6e  73 5f 53 65 74 47 43 4f  |lourTrans_SetGCO|
00004bd0  4c 22 2c 64 65 73 6b 70  61 6c 25 21 32 38 0d 21  |L",deskpal%!28.!|
00004be0  0c 05 cd 0d 21 16 18 64  31 25 3d 28 2d 79 30 25  |....!..d1%=(-y0%|
00004bf0  29 81 63 5f 68 65 69 67  68 74 25 0d 21 20 18 64  |).c_height%.! .d|
00004c00  30 25 3d 28 2d 79 31 25  29 81 63 5f 68 65 69 67  |0%=(-y1%).c_heig|
00004c10  68 74 25 0d 21 2a 16 78  5f 70 6f 73 25 3d 77 78  |ht%.!*.x_pos%=wx|
00004c20  25 2b 38 2b 70 5f 78 30  25 0d 21 34 12 e3 20 64  |%+8+p_x0%.!4.. d|
00004c30  25 3d 64 30 25 20 b8 20  64 31 25 0d 21 3e 47 20  |%=d0% . d1%.!>G |
00004c40  20 e7 20 64 25 3e 3d 30  20 80 20 64 25 3c 3d 33  | . d%>=0 . d%<=3|
00004c50  36 20 8c 20 f2 70 72 69  6e 74 28 64 61 79 24 28  |6 . .print(day$(|
00004c60  64 25 83 37 29 2c 78 5f  70 6f 73 25 2c 77 79 25  |d%.7),x_pos%,wy%|
00004c70  2d 28 64 25 2a 63 5f 68  65 69 67 68 74 25 2b 38  |-(d%*c_height%+8|
00004c80  29 29 0d 21 48 08 ed 20  64 25 0d 21 52 27 e7 20  |)).!H.. d%.!R'. |
00004c90  66 6f 6e 74 73 20 8c 20  c8 99 22 46 6f 6e 74 5f  |fonts . .."Font_|
00004ca0  4c 6f 73 65 46 6f 6e 74  22 2c 68 61 6e 64 6c 65  |LoseFont",handle|
00004cb0  25 0d 21 5c 06 3d 30 0d  21 66 04 0d 21 70 12 dd  |%.!\.=0.!f..!p..|
00004cc0  20 a4 70 72 65 6d 65 6e  75 5f 64 61 79 0d 21 7a  | .premenu_day.!z|
00004cd0  0f e3 20 69 25 3d 30 20  b8 20 31 35 0d 21 84 43  |.. i%=0 . 15.!.C|
00004ce0  20 20 f2 73 65 6c 65 63  74 69 63 6f 6e 28 77 25  |  .selecticon(w%|
00004cf0  28 63 6f 6c 6f 75 72 73  25 29 2c 69 25 2c 28 63  |(colours%),i%,(c|
00004d00  5f 63 6f 6c 6f 75 72 25  28 64 5f 6d 6f 6e 74 68  |_colour%(d_month|
00004d10  25 2c 64 5f 64 61 74 65  25 29 3d 69 25 29 29 0d  |%,d_date%)=i%)).|
00004d20  21 8e 08 ed 20 69 25 0d  21 98 29 63 5f 63 68 6f  |!... i%.!.)c_cho|
00004d30  73 65 6e 25 3d 63 5f 63  6f 6c 6f 75 72 25 28 64  |sen%=c_colour%(d|
00004d40  5f 6d 6f 6e 74 68 25 2c  64 5f 64 61 74 65 25 29  |_month%,d_date%)|
00004d50  0d 21 a2 06 3d 30 0d 21  ac 04 0d 21 b6 0f dd 20  |.!..=0.!...!... |
00004d60  a4 6d 65 6e 75 5f 64 61  79 0d 21 c0 0e c8 8e 20  |.menu_day.!.... |
00004d70  21 62 6c 6b 25 20 ca 0d  21 ca 12 20 20 c9 20 31  |!blk% ..!..  . 1|
00004d80  20 3a 20 f2 61 64 64 5f  65 0d 21 d4 1e 20 20 c9  | : .add_e.!..  .|
00004d90  20 32 20 3a 20 f2 73 74  61 72 74 5f 6d 75 6c 74  | 2 : .start_mult|
00004da0  69 28 64 61 79 25 29 0d  21 de 05 cb 0d 21 e8 06  |i(day%).!....!..|
00004db0  3d 30 0d 21 f2 04 0d 21  fc 10 dd 20 a4 63 6c 69  |=0.!...!... .cli|
00004dc0  63 6b 5f 64 61 79 0d 22  06 12 6d 78 25 2d 3d 77  |ck_day."..mx%-=w|
00004dd0  78 25 28 64 61 79 25 29  0d 22 10 12 6d 79 25 2d  |x%(day%)."..my%-|
00004de0  3d 77 79 25 28 64 61 79  25 29 0d 22 1a 24 6e 65  |=wy%(day%).".$ne|
00004df0  78 74 25 3d 63 5f 66 69  72 73 74 25 28 64 5f 6d  |xt%=c_first%(d_m|
00004e00  6f 6e 74 68 25 2c 64 5f  64 61 74 65 25 29 0d 22  |onth%,d_date%)."|
00004e10  24 08 65 25 3d 30 0d 22  2e 10 c8 95 20 6e 65 78  |$.e%=0.".... nex|
00004e20  74 25 3c 3e 2d 31 0d 22  38 16 20 20 f2 63 61 6c  |t%<>-1."8.  .cal|
00004e30  63 5f 64 5f 6f 72 64 73  28 65 25 29 0d 22 42 47  |c_d_ords(e%)."BG|
00004e40  20 20 e7 20 6d 78 25 3e  21 64 5f 69 63 6f 6e 25  |  . mx%>!d_icon%|
00004e50  20 80 20 6d 79 25 3e 64  5f 69 63 6f 6e 25 21 34  | . my%>d_icon%!4|
00004e60  20 80 20 6d 78 25 3c 64  5f 69 63 6f 6e 25 21 38  | . mx%<d_icon%!8|
00004e70  20 80 20 6d 79 25 3c 64  5f 69 63 6f 6e 25 21 31  | . my%<d_icon%!1|
00004e80  32 20 8c 0d 22 4c 10 20  20 20 20 6c 69 6e 6b 25  |2 .."L.    link%|
00004e90  3d 2d 31 0d 22 56 12 20  20 20 20 e3 20 69 25 3d  |=-1."V.    . i%=|
00004ea0  30 20 b8 20 31 0d 22 60  51 20 20 20 20 20 20 e7  |0 . 1."`Q      .|
00004eb0  20 6d 78 25 3e 21 6c 5f  69 63 6f 6e 25 28 69 25  | mx%>!l_icon%(i%|
00004ec0  29 20 80 20 6d 78 25 3c  6c 5f 69 63 6f 6e 25 28  |) . mx%<l_icon%(|
00004ed0  69 25 29 21 38 20 80 20  63 5f 6c 69 6e 6b 25 28  |i%)!8 . c_link%(|
00004ee0  69 25 2c 6e 65 78 74 25  29 3e 30 20 8c 20 6c 69  |i%,next%)>0 . li|
00004ef0  6e 6b 25 3d 69 25 0d 22  6a 0c 20 20 20 20 ed 20  |nk%=i%."j.    . |
00004f00  69 25 0d 22 74 12 20 20  20 20 c8 8e 20 6c 69 6e  |i%."t.    .. lin|
00004f10  6b 25 20 ca 0d 22 7e 0d  20 20 20 20 20 20 c9 20  |k% .."~.      . |
00004f20  30 0d 22 88 16 20 20 20  20 20 20 20 20 6c 5f 6e  |0."..        l_n|
00004f30  61 6d 65 25 3d 2d 31 0d  22 92 1b 20 20 20 20 20  |ame%=-1."..     |
00004f40  20 20 20 e3 20 6e 25 3d  31 20 b8 20 6e 61 6d 65  |   . n%=1 . name|
00004f50  73 25 0d 22 9c 38 20 20  20 20 20 20 20 20 20 20  |s%.".8          |
00004f60  e7 20 61 5f 6e 75 6d 25  28 6e 25 29 3d 63 5f 6c  |. a_num%(n%)=c_l|
00004f70  69 6e 6b 25 28 30 2c 6e  65 78 74 25 29 20 8c 20  |ink%(0,next%) . |
00004f80  6c 5f 6e 61 6d 65 25 3d  6e 25 0d 22 a6 10 20 20  |l_name%=n%."..  |
00004f90  20 20 20 20 20 20 ed 20  6e 25 0d 22 b0 19 20 20  |      . n%."..  |
00004fa0  20 20 20 20 20 20 e7 20  6c 5f 6e 61 6d 65 25 3e  |      . l_name%>|
00004fb0  30 20 8c 0d 22 ba 1d 20  20 20 20 20 20 20 20 20  |0 .."..         |
00004fc0  20 f2 73 65 74 5f 61 28  6c 5f 6e 61 6d 65 25 29  | .set_a(l_name%)|
00004fd0  0d 22 c4 23 20 20 20 20  20 20 20 20 20 20 f2 6f  |.".#          .o|
00004fe0  70 65 6e 75 70 28 77 25  28 61 64 64 72 65 73 73  |penup(w%(address|
00004ff0  25 29 29 0d 22 ce 0d 20  20 20 20 20 20 20 20 cc  |%))."..        .|
00005000  0d 22 d8 39 20 20 20 20  20 20 20 20 20 20 f2 72  |.".9          .r|
00005010  65 70 6f 72 74 28 22 4c  69 6e 6b 65 64 20 61 64  |eport("Linked ad|
00005020  64 72 65 73 73 20 68 61  73 20 62 65 65 6e 20 64  |dress has been d|
00005030  65 6c 65 74 65 64 2e 22  29 0d 22 e2 0d 20 20 20  |eleted.")."..   |
00005040  20 20 20 20 20 cd 0d 22  ec 0d 20 20 20 20 20 20  |     .."..      |
00005050  c9 20 31 0d 22 f6 16 20  20 20 20 20 20 20 20 6c  |. 1."..        l|
00005060  5f 6e 6f 74 65 25 3d 2d  31 0d 23 00 1b 20 20 20  |_note%=-1.#..   |
00005070  20 20 20 20 20 e3 20 6e  25 3d 31 20 b8 20 6e 6f  |     . n%=1 . no|
00005080  74 65 73 25 0d 23 0a 38  20 20 20 20 20 20 20 20  |tes%.#.8        |
00005090  20 20 e7 20 6e 5f 6e 75  6d 25 28 6e 25 29 3d 63  |  . n_num%(n%)=c|
000050a0  5f 6c 69 6e 6b 25 28 31  2c 6e 65 78 74 25 29 20  |_link%(1,next%) |
000050b0  8c 20 6c 5f 6e 6f 74 65  25 3d 6e 25 0d 23 14 10  |. l_note%=n%.#..|
000050c0  20 20 20 20 20 20 20 20  ed 20 6e 25 0d 23 1e 19  |        . n%.#..|
000050d0  20 20 20 20 20 20 20 20  e7 20 6c 5f 6e 6f 74 65  |        . l_note|
000050e0  25 3e 30 20 8c 0d 23 28  1d 20 20 20 20 20 20 20  |%>0 ..#(.       |
000050f0  20 20 20 f2 73 65 74 5f  6e 28 6c 5f 6e 6f 74 65  |   .set_n(l_note|
00005100  25 29 0d 23 32 23 20 20  20 20 20 20 20 20 20 20  |%).#2#          |
00005110  f2 6f 70 65 6e 75 70 28  77 25 28 6e 6f 74 65 70  |.openup(w%(notep|
00005120  61 64 25 29 29 0d 23 3c  0d 20 20 20 20 20 20 20  |ad%)).#<.       |
00005130  20 cc 0d 23 46 36 20 20  20 20 20 20 20 20 20 20  | ..#F6          |
00005140  f2 72 65 70 6f 72 74 28  22 4c 69 6e 6b 65 64 20  |.report("Linked |
00005150  6e 6f 74 65 20 68 61 73  20 62 65 65 6e 20 64 65  |note has been de|
00005160  6c 65 74 65 64 2e 22 29  0d 23 50 0d 20 20 20 20  |leted.").#P.    |
00005170  20 20 20 20 cd 0d 23 5a  0e 20 20 20 20 20 20 c9  |    ..#Z.      .|
00005180  20 2d 31 0d 23 64 19 20  20 20 20 20 20 20 20 f2  | -1.#d.        .|
00005190  73 65 74 5f 65 28 6e 65  78 74 25 29 0d 23 6e 09  |set_e(next%).#n.|
000051a0  20 20 20 20 cb 0d 23 78  07 20 20 cd 0d 23 82 1a  |    ..#x.  ..#..|
000051b0  20 20 6e 65 78 74 25 3d  63 5f 6e 65 78 74 25 28  |  next%=c_next%(|
000051c0  6e 65 78 74 25 29 0d 23  8c 0b 20 20 65 25 2b 3d  |next%).#..  e%+=|
000051d0  31 0d 23 96 05 ce 0d 23  a0 06 3d 30 0d 23 aa 04  |1.#....#..=0.#..|
000051e0  0d 23 b4 11 dd 20 a4 72  65 64 72 61 77 5f 64 61  |.#... .redraw_da|
000051f0  79 0d 23 be 24 6e 65 78  74 25 3d 63 5f 66 69 72  |y.#.$next%=c_fir|
00005200  73 74 25 28 64 5f 6d 6f  6e 74 68 25 2c 64 5f 64  |st%(d_month%,d_d|
00005210  61 74 65 25 29 0d 23 c8  08 65 25 3d 30 0d 23 d2  |ate%).#..e%=0.#.|
00005220  10 c8 95 20 6e 65 78 74  25 3c 3e 2d 31 0d 23 dc  |... next%<>-1.#.|
00005230  16 20 20 f2 63 61 6c 63  5f 64 5f 6f 72 64 73 28  |.  .calc_d_ords(|
00005240  65 25 29 0d 23 e6 47 20  20 e7 20 63 5f 74 79 70  |e%).#.G  . c_typ|
00005250  65 25 28 6e 65 78 74 25  29 80 32 35 36 20 8c 20  |e%(next%).256 . |
00005260  74 69 6d 65 24 3d a4 74  69 6d 65 28 63 5f 74 69  |time$=.time(c_ti|
00005270  6d 65 25 28 6e 65 78 74  25 29 29 2b 22 20 22 20  |me%(next%))+" " |
00005280  8b 20 74 69 6d 65 24 3d  22 22 0d 23 f0 29 20 20  |. time$="".#.)  |
00005290  24 28 64 5f 69 63 6f 6e  25 21 32 30 29 3d 74 69  |$(d_icon%!20)=ti|
000052a0  6d 65 24 2b 63 5f 65 6e  74 72 79 24 28 6e 65 78  |me$+c_entry$(nex|
000052b0  74 25 29 0d 23 fa 33 20  20 24 28 64 5f 69 63 6f  |t%).#.3  $(d_ico|
000052c0  6e 25 21 32 34 29 3d 22  53 22 2b 65 5f 69 63 6f  |n%!24)="S"+e_ico|
000052d0  6e 24 28 63 5f 74 79 70  65 25 28 6e 65 78 74 25  |n$(c_type%(next%|
000052e0  29 80 32 35 35 29 0d 24  04 20 20 20 c8 99 22 57  |).255).$.   .."W|
000052f0  69 6d 70 5f 50 6c 6f 74  49 63 6f 6e 22 2c 2c 64  |imp_PlotIcon",,d|
00005300  5f 69 63 6f 6e 25 0d 24  0e 10 20 20 e3 20 69 25  |_icon%.$..  . i%|
00005310  3d 30 20 b8 20 31 0d 24  18 1d 20 20 20 20 e7 20  |=0 . 1.$..    . |
00005320  63 5f 6c 69 6e 6b 25 28  69 25 2c 6e 65 78 74 25  |c_link%(i%,next%|
00005330  29 20 8c 0d 24 22 21 20  20 20 20 20 20 6c 5f 69  |) ..$"!      l_i|
00005340  63 6f 6e 25 28 69 25 29  21 34 3d 64 5f 69 63 6f  |con%(i%)!4=d_ico|
00005350  6e 25 21 34 0d 24 2c 23  20 20 20 20 20 20 6c 5f  |n%!4.$,#      l_|
00005360  69 63 6f 6e 25 28 69 25  29 21 31 32 3d 64 5f 69  |icon%(i%)!12=d_i|
00005370  63 6f 6e 25 21 31 32 0d  24 36 28 20 20 20 20 20  |con%!12.$6(     |
00005380  20 c8 99 22 57 69 6d 70  5f 50 6c 6f 74 49 63 6f  | .."Wimp_PlotIco|
00005390  6e 22 2c 2c 6c 5f 69 63  6f 6e 25 28 69 25 29 0d  |n",,l_icon%(i%).|
000053a0  24 40 09 20 20 20 20 cd  0d 24 4a 0a 20 20 ed 20  |$@.    ..$J.  . |
000053b0  69 25 0d 24 54 1a 20 20  6e 65 78 74 25 3d 63 5f  |i%.$T.  next%=c_|
000053c0  6e 65 78 74 25 28 6e 65  78 74 25 29 0d 24 5e 0b  |next%(next%).$^.|
000053d0  20 20 65 25 2b 3d 31 0d  24 68 05 ce 0d 24 72 06  |  e%+=1.$h...$r.|
000053e0  3d 30 0d 24 7c 04 0d 24  86 12 dd 20 a4 6f 70 65  |=0.$|..$... .ope|
000053f0  6e 5f 6c 65 74 74 65 72  0d 24 90 19 e7 20 ac 61  |n_letter.$... .a|
00005400  63 74 69 76 65 25 28 6c  65 74 74 65 72 25 29 20  |ctive%(letter%) |
00005410  8c 0d 24 9a 0d 20 20 f2  63 61 6c 63 5f 6c 0d 24  |..$..  .calc_l.$|
00005420  a4 13 20 20 6c 5f 73 65  6c 65 63 74 65 64 25 3d  |..  l_selected%=|
00005430  30 0d 24 ae 05 cd 0d 24  b8 06 3d 30 0d 24 c2 04  |0.$....$..=0.$..|
00005440  0d 24 cc 14 dd 20 a4 72  65 64 72 61 77 5f 6c 65  |.$... .redraw_le|
00005450  74 74 65 72 0d 24 d6 10  e7 20 6c 65 74 74 65 72  |tter.$... letter|
00005460  73 25 20 8c 0d 24 e0 17  20 20 e3 20 6c 25 3d 31  |s% ..$..  . l%=1|
00005470  20 b8 20 6c 65 74 74 65  72 73 25 0d 24 ea 18 20  | . letters%.$.. |
00005480  20 20 20 f2 63 61 6c 63  5f 6c 5f 6f 72 64 73 28  |   .calc_l_ords(|
00005490  6c 25 29 0d 24 f4 2c 20  20 20 20 e7 20 6c 5f 69  |l%).$.,    . l_i|
000054a0  63 6f 6e 25 21 34 3c 3d  79 31 25 20 80 20 6c 5f  |con%!4<=y1% . l_|
000054b0  69 63 6f 6e 25 21 31 32  3e 3d 79 30 25 20 8c 0d  |icon%!12>=y0% ..|
000054c0  24 fe 1b 20 20 20 20 20  20 6e 61 6d 65 25 3d 6c  |$..      name%=l|
000054d0  5f 6c 69 73 74 25 28 6c  25 29 0d 25 08 79 20 20  |_list%(l%).%.y  |
000054e0  20 20 20 20 24 28 6c 5f  69 63 6f 6e 25 21 32 30  |    $(l_icon%!20|
000054f0  29 3d 22 20 22 2b 61 24  28 6e 61 6d 65 25 2c 6e  |)=" "+a$(name%,n|
00005500  61 6d 65 29 2b c4 33 32  2d a9 61 24 28 6e 61 6d  |ame)+.32-.a$(nam|
00005510  65 25 2c 6e 61 6d 65 29  2c 22 20 22 29 2b 61 24  |e%,name)," ")+a$|
00005520  28 6e 61 6d 65 25 2c 73  65 6e 74 29 2b c4 31 35  |(name%,sent)+.15|
00005530  2d a9 61 24 28 6e 61 6d  65 25 2c 73 65 6e 74 29  |-.a$(name%,sent)|
00005540  2c 22 20 22 29 2b 61 24  28 6e 61 6d 65 25 2c 72  |," ")+a$(name%,r|
00005550  65 63 29 0d 25 12 24 20  20 20 20 20 20 c8 99 22  |ec).%.$      .."|
00005560  57 69 6d 70 5f 50 6c 6f  74 49 63 6f 6e 22 2c 2c  |Wimp_PlotIcon",,|
00005570  6c 5f 69 63 6f 6e 25 0d  25 1c 09 20 20 20 20 cd  |l_icon%.%..    .|
00005580  0d 25 26 0a 20 20 ed 20  6c 25 0d 25 30 05 cd 0d  |.%&.  . l%.%0...|
00005590  25 3a 06 3d 30 0d 25 44  04 0d 25 4e 12 dd 20 a4  |%:.=0.%D..%N.. .|
000055a0  6d 65 6e 75 5f 6c 65 74  74 65 72 0d 25 58 25 e7  |menu_letter.%X%.|
000055b0  20 21 62 6c 6b 25 3d 30  20 8c 20 f2 73 74 61 72  | !blk%=0 . .star|
000055c0  74 5f 6d 75 6c 74 69 28  6c 65 74 74 65 72 25 29  |t_multi(letter%)|
000055d0  0d 25 62 06 3d 30 0d 25  6c 04 0d 25 76 13 dd 20  |.%b.=0.%l..%v.. |
000055e0  a4 63 6c 69 63 6b 5f 6c  65 74 74 65 72 0d 25 80  |.click_letter.%.|
000055f0  15 6d 78 25 2d 3d 77 78  25 28 6c 65 74 74 65 72  |.mx%-=wx%(letter|
00005600  25 29 0d 25 8a 15 6d 79  25 2d 3d 77 79 25 28 6c  |%).%..my%-=wy%(l|
00005610  65 74 74 65 72 25 29 0d  25 94 10 e7 20 6c 65 74  |etter%).%... let|
00005620  74 65 72 73 25 20 8c 0d  25 9e 0c 20 20 6e 65 77  |ters% ..%..  new|
00005630  25 3d 30 0d 25 a8 17 20  20 e3 20 6c 25 3d 31 20  |%=0.%..  . l%=1 |
00005640  b8 20 6c 65 74 74 65 72  73 25 0d 25 b2 18 20 20  |. letters%.%..  |
00005650  20 20 f2 63 61 6c 63 5f  6c 5f 6f 72 64 73 28 6c  |  .calc_l_ords(l|
00005660  25 29 0d 25 bc 5e 20 20  20 20 e7 20 21 6c 5f 69  |%).%.^    . !l_i|
00005670  63 6f 6e 25 3c 3d 6d 78  25 20 80 20 6c 5f 69 63  |con%<=mx% . l_ic|
00005680  6f 6e 25 21 34 3c 3d 6d  79 25 20 80 20 6c 5f 69  |on%!4<=my% . l_i|
00005690  63 6f 6e 25 21 38 3e 3d  6d 78 25 20 80 20 6c 5f  |con%!8>=mx% . l_|
000056a0  69 63 6f 6e 25 21 31 32  3e 3d 6d 79 25 20 8c 20  |icon%!12>=my% . |
000056b0  6e 65 77 25 3d 6c 5f 6c  69 73 74 25 28 6c 25 29  |new%=l_list%(l%)|
000056c0  0d 25 c6 0a 20 20 ed 20  6c 25 0d 25 d0 15 20 20  |.%..  . l%.%..  |
000056d0  f2 6c 5f 73 65 6c 65 63  74 28 6e 65 77 25 29 0d  |.l_select(new%).|
000056e0  25 da 05 cd 0d 25 e4 06  3d 30 0d 25 ee 04 0d 25  |%....%..=0.%...%|
000056f0  f8 13 dd 20 a4 6d 65 6e  75 5f 75 6e 6b 6e 6f 77  |... .menu_unknow|
00005700  6e 0d 26 02 12 c8 8e 20  6f 70 65 6e 6d 65 6e 75  |n.&.... openmenu|
00005710  25 20 ca 0d 26 0c 13 20  20 c9 20 69 6e 64 65 78  |% ..&..  . index|
00005720  5f 6d 65 6e 75 25 0d 26  16 4a 20 20 20 20 e7 20  |_menu%.&.J    . |
00005730  21 62 6c 6b 25 3e 3d 30  20 80 20 62 6c 6b 25 21  |!blk%>=0 . blk%!|
00005740  34 3e 3d 30 20 8c 20 f2  73 65 74 5f 61 28 3f 28  |4>=0 . .set_a(?(|
00005750  21 28 73 75 62 5f 69 6e  64 65 78 25 2b 34 30 2b  |!(sub_index%+40+|
00005760  62 6c 6b 25 21 34 2a 32  34 29 2d 31 29 2b 31 29  |blk%!4*24)-1)+1)|
00005770  0d 26 20 13 20 20 c9 20  72 65 63 6f 72 64 6d 65  |.& .  . recordme|
00005780  6e 75 25 0d 26 2a 12 20  20 20 20 c8 8e 20 21 62  |nu%.&*.    .. !b|
00005790  6c 6b 25 20 ca 0d 26 34  43 20 20 20 20 20 20 c9  |lk% ..&4C      .|
000057a0  20 30 20 3a 20 f2 6e 65  77 5f 6c 5f 73 72 28 a4  | 0 : .new_l_sr(.|
000057b0  64 61 74 65 28 74 68 69  73 5f 64 61 74 65 25 2c  |date(this_date%,|
000057c0  74 68 69 73 5f 6d 6f 6e  74 68 25 2c 74 68 69 73  |this_month%,this|
000057d0  5f 79 65 61 72 25 29 29  0d 26 3e 45 20 20 20 20  |_year%)).&>E    |
000057e0  20 20 c9 20 31 20 3a 20  f2 6e 65 77 5f 6c 5f 73  |  . 1 : .new_l_s|
000057f0  72 28 a4 64 61 74 65 28  74 68 69 73 5f 64 61 74  |r(.date(this_dat|
00005800  65 25 2d 31 2c 74 68 69  73 5f 6d 6f 6e 74 68 25  |e%-1,this_month%|
00005810  2c 74 68 69 73 5f 79 65  61 72 25 29 29 0d 26 48  |,this_year%)).&H|
00005820  22 20 20 20 20 20 20 c9  20 32 20 3a 20 f2 6e 65  |"      . 2 : .ne|
00005830  77 5f 6c 5f 73 72 28 24  6f 74 68 65 72 25 29 0d  |w_l_sr($other%).|
00005840  26 52 09 20 20 20 20 cb  0d 26 5c 05 cb 0d 26 66  |&R.    ..&\...&f|
00005850  06 3d 30 0d 26 70 04 0d  26 7a 15 dd 20 f2 6e 65  |.=0.&p..&z.. .ne|
00005860  77 5f 6c 5f 73 72 28 6e  65 77 24 29 0d 26 84 2b  |w_l_sr(new$).&.+|
00005870  e7 20 6e 65 77 24 3c 3e  61 24 28 6c 5f 73 65 6c  |. new$<>a$(l_sel|
00005880  65 63 74 65 64 25 2c 73  65 6e 74 2b 72 5f 77 68  |ected%,sent+r_wh|
00005890  69 63 68 25 29 20 8c 0d  26 8e 28 20 20 61 24 28  |ich%) ..&.(  a$(|
000058a0  6c 5f 73 65 6c 65 63 74  65 64 25 2c 73 65 6e 74  |l_selected%,sent|
000058b0  2b 72 5f 77 68 69 63 68  25 29 3d 6e 65 77 24 0d  |+r_which%)=new$.|
000058c0  26 98 17 20 20 e3 20 6c  25 3d 31 20 b8 20 6c 65  |&..  . l%=1 . le|
000058d0  74 74 65 72 73 25 0d 26  a2 23 20 20 20 20 e7 20  |tters%.&.#    . |
000058e0  6c 5f 6c 69 73 74 25 28  6c 25 29 3d 6c 5f 73 65  |l_list%(l%)=l_se|
000058f0  6c 65 63 74 65 64 25 20  8c 0d 26 ac 1a 20 20 20  |lected% ..&..   |
00005900  20 20 20 f2 63 61 6c 63  5f 6c 5f 6f 72 64 73 28  |   .calc_l_ords(|
00005910  6c 25 29 0d 26 b6 52 20  20 20 20 20 20 c8 99 22  |l%).&.R      .."|
00005920  57 69 6d 70 5f 46 6f 72  63 65 52 65 64 72 61 77  |Wimp_ForceRedraw|
00005930  22 2c 77 25 28 6c 65 74  74 65 72 25 29 2c 21 6c  |",w%(letter%),!l|
00005940  5f 69 63 6f 6e 25 2c 6c  5f 69 63 6f 6e 25 21 34  |_icon%,l_icon%!4|
00005950  2c 6c 5f 69 63 6f 6e 25  21 38 2c 6c 5f 69 63 6f  |,l_icon%!8,l_ico|
00005960  6e 25 21 31 32 0d 26 c0  09 20 20 20 20 cd 0d 26  |n%!12.&..    ..&|
00005970  ca 0a 20 20 ed 20 6c 25  0d 26 d4 11 20 20 f2 73  |..  . l%.&..  .s|
00005980  65 74 5f 6c 5f 64 61 74  61 0d 26 de 12 20 20 61  |et_l_data.&..  a|
00005990  5f 63 68 61 6e 67 65 64  25 3d b9 0d 26 e8 05 cd  |_changed%=..&...|
000059a0  0d 26 f2 05 e1 0d 26 fc  04 0d 27 06 32 dd 20 f2  |.&....&...'.2. .|
000059b0  6d 65 6e 75 5f 77 61 72  6e 69 6e 67 28 73 75 62  |menu_warning(sub|
000059c0  5f 6d 65 6e 75 25 2c 73  75 62 5f 78 25 2c 73 75  |_menu%,sub_x%,su|
000059d0  62 5f 79 25 2c 6d 65 6e  75 25 29 0d 27 10 12 c8  |b_y%,menu%).'...|
000059e0  8e 20 6f 70 65 6e 6d 65  6e 75 25 20 ca 0d 27 1a  |. openmenu% ..'.|
000059f0  13 20 20 c9 20 69 6e 64  65 78 5f 6d 65 6e 75 25  |.  . index_menu%|
00005a00  0d 27 24 2b 20 20 20 20  63 25 3d 97 28 24 28 69  |.'$+    c%=.($(i|
00005a10  6e 64 65 78 5f 6d 65 6e  75 25 2b 34 30 2b 6d 65  |ndex_menu%+40+me|
00005a20  6e 75 25 2a 32 34 29 29  2d 36 34 0d 27 2e 17 20  |nu%*24))-64.'.. |
00005a30  20 20 20 70 74 72 25 3d  73 75 62 5f 69 6e 64 65  |   ptr%=sub_inde|
00005a40  78 25 0d 27 38 21 20 20  20 20 f2 6d 65 6e 75 74  |x%.'8!    .menut|
00005a50  69 74 6c 65 28 22 53 65  6c 65 63 74 22 2c 70 74  |itle("Select",pt|
00005a60  72 25 29 0d 27 42 17 20  20 20 20 73 75 62 25 3d  |r%).'B.    sub%=|
00005a70  73 75 62 5f 62 6c 6f 63  6b 25 0d 27 4c 1a 20 20  |sub_block%.'L.  |
00005a80  20 20 e3 20 6e 61 6d 65  25 3d 31 20 b8 20 6e 61  |  . name%=1 . na|
00005a90  6d 65 73 25 0d 27 56 1a  20 20 20 20 20 20 e7 20  |mes%.'V.      . |
00005aa0  67 25 28 6e 61 6d 65 25  29 3d 63 25 20 8c 0d 27  |g%(name%)=c% ..'|
00005ab0  60 19 20 20 20 20 20 20  20 20 3f 73 75 62 25 3d  |`.        ?sub%=|
00005ac0  6e 61 6d 65 25 2d 31 0d  27 6a 22 20 20 20 20 20  |name%-1.'j"     |
00005ad0  20 20 20 6c 65 6e 25 3d  a9 28 61 24 28 6e 61 6d  |   len%=.(a$(nam|
00005ae0  65 25 2c 6e 61 6d 65 29  29 0d 27 74 24 20 20 20  |e%,name)).'t$   |
00005af0  20 20 20 20 20 24 28 73  75 62 25 2b 31 29 3d 61  |     $(sub%+1)=a|
00005b00  24 28 6e 61 6d 65 25 2c  6e 61 6d 65 29 0d 27 7e  |$(name%,name).'~|
00005b10  14 20 20 20 20 20 20 20  20 70 74 72 25 2b 3d 32  |.        ptr%+=2|
00005b20  34 0d 27 88 13 20 20 20  20 20 20 20 20 21 70 74  |4.'..        !pt|
00005b30  72 25 3d 30 0d 27 92 14  20 20 20 20 20 20 20 20  |r%=0.'..        |
00005b40  70 74 72 25 21 34 3d 30  0d 27 9c 29 20 20 20 20  |ptr%!4=0.'.)    |
00005b50  20 20 20 20 70 74 72 25  21 38 3d 28 37 3c 3c 32  |    ptr%!8=(7<<2|
00005b60  34 29 20 84 20 28 25 31  30 30 30 31 30 30 30 31  |4) . (%100010001|
00005b70  29 0d 27 a6 1a 20 20 20  20 20 20 20 20 70 74 72  |).'..        ptr|
00005b80  25 21 31 32 3d 73 75 62  25 2b 31 0d 27 b0 16 20  |%!12=sub%+1.'.. |
00005b90  20 20 20 20 20 20 20 70  74 72 25 21 31 36 3d 2d  |       ptr%!16=-|
00005ba0  31 0d 27 ba 1a 20 20 20  20 20 20 20 20 70 74 72  |1.'..        ptr|
00005bb0  25 21 32 30 3d 6c 65 6e  25 2b 31 0d 27 c4 23 20  |%!20=len%+1.'.# |
00005bc0  20 20 20 20 20 20 20 e7  20 6c 65 6e 25 3e 6d 61  |       . len%>ma|
00005bd0  78 25 20 8c 20 6d 61 78  25 3d 6c 65 6e 25 0d 27  |x% . max%=len%.'|
00005be0  ce 18 20 20 20 20 20 20  20 20 73 75 62 25 2b 3d  |..        sub%+=|
00005bf0  6c 65 6e 25 2b 32 0d 27  d8 0b 20 20 20 20 20 20  |len%+2.'..      |
00005c00  cd 0d 27 e2 0f 20 20 20  20 ed 20 6e 61 6d 65 25  |..'..    . name%|
00005c10  0d 27 ec 16 20 20 20 20  f2 65 6e 64 6d 65 6e 75  |.'..    .endmenu|
00005c20  28 70 74 72 25 29 0d 27  f6 37 20 20 20 20 c8 99  |(ptr%).'.7    ..|
00005c30  22 57 69 6d 70 5f 43 72  65 61 74 65 53 75 62 4d  |"Wimp_CreateSubM|
00005c40  65 6e 75 22 2c 2c 73 75  62 5f 6d 65 6e 75 25 2c  |enu",,sub_menu%,|
00005c50  73 75 62 5f 78 25 2c 73  75 62 5f 79 25 0d 28 00  |sub_x%,sub_y%.(.|
00005c60  05 cb 0d 28 0a 05 e1 0d  28 14 04 0d 28 1e 1f f4  |...(....(...(...|
00005c70  20 2d 2d 2d 2d 4e 6f 6e  20 57 69 6d 70 20 72 6f  | ----Non Wimp ro|
00005c80  75 74 69 6e 65 73 2d 2d  2d 2d 0d 28 28 04 0d 28  |utines----.((..(|
00005c90  32 11 dd 20 f2 70 72 69  6e 74 5f 79 65 61 72 0d  |2.. .print_year.|
00005ca0  28 3c 20 c8 99 20 22 58  50 44 72 69 76 65 72 5f  |(< .. "XPDriver_|
00005cb0  49 6e 66 6f 22 20 b8 20  3b 66 6c 61 67 73 25 0d  |Info" . ;flags%.|
00005cc0  28 46 3e e7 20 66 6c 61  67 73 25 20 80 20 31 20  |(F>. flags% . 1 |
00005cd0  8c 20 f2 72 65 70 6f 72  74 28 22 50 72 69 6e 74  |. .report("Print|
00005ce0  65 72 20 6d 61 6e 61 67  65 72 20 6e 6f 74 20 69  |er manager not i|
00005cf0  6e 73 74 61 6c 6c 65 64  2e 22 29 3a e1 0d 28 50  |nstalled."):..(P|
00005d00  14 c8 99 22 48 6f 75 72  67 6c 61 73 73 5f 4f 6e  |..."Hourglass_On|
00005d10  22 0d 28 5a 15 70 66 25  3d ae 28 22 70 72 69 6e  |".(Z.pf%=.("prin|
00005d20  74 65 72 3a 22 29 0d 28  64 27 c8 99 22 50 44 72  |ter:").(d'.."PDr|
00005d30  69 76 65 72 5f 53 65 6c  65 63 74 4a 6f 62 22 2c  |iver_SelectJob",|
00005d40  70 66 25 2c 22 50 6c 61  6e 6e 65 72 22 0d 28 6e  |pf%,"Planner".(n|
00005d50  07 ea 20 85 0d 28 78 4d  ee 20 85 20 ea 3a f7 20  |.. ..(xM. . .:. |
00005d60  85 3a c8 99 20 22 50 44  72 69 76 65 72 5f 41 62  |.:.. "PDriver_Ab|
00005d70  6f 72 74 4a 6f 62 22 2c  70 66 25 3a d9 23 70 66  |ortJob",pf%:.#pf|
00005d80  25 3a c8 99 22 48 6f 75  72 67 6c 61 73 73 5f 4f  |%:.."Hourglass_O|
00005d90  66 66 22 3a f2 72 65 70  6f 72 74 28 f6 24 29 3a  |ff":.report(.$):|
00005da0  e1 0d 28 82 2d c8 99 22  50 44 72 69 76 65 72 5f  |..(.-.."PDriver_|
00005db0  50 61 67 65 53 69 7a 65  22 20 b8 20 2c 77 25 2c  |PageSize" . ,w%,|
00005dc0  68 25 2c 6c 25 2c 62 25  2c 72 25 2c 74 25 0d 28  |h%,l%,b%,r%,t%.(|
00005dd0  8c 21 6f 70 74 30 25 3d  a4 73 65 6c 65 63 74 65  |.!opt0%=.selecte|
00005de0  64 28 77 25 28 70 72 69  6e 74 25 29 2c 32 29 0d  |d(w%(print%),2).|
00005df0  28 96 24 6f 70 74 31 25  3d ac 28 a4 73 65 6c 65  |(.$opt1%=.(.sele|
00005e00  63 74 65 64 28 77 25 28  70 72 69 6e 74 25 29 2c  |cted(w%(print%),|
00005e10  33 29 29 0d 28 a0 23 74  69 6d 65 73 25 3d 2d a4  |3)).(.#times%=-.|
00005e20  73 65 6c 65 63 74 65 64  28 77 25 28 70 72 69 6e  |selected(w%(prin|
00005e30  74 25 29 2c 36 29 0d 28  aa 19 77 78 25 3d 2d 70  |t%),6).(..wx%=-p|
00005e40  5f 78 30 25 3a 77 79 25  3d 2d 70 5f 79 30 25 0d  |_x0%:wy%=-p_y0%.|
00005e50  28 b4 16 21 72 65 63 74  25 3d 30 3a 72 65 63 74  |(..!rect%=0:rect|
00005e60  25 21 34 3d 30 0d 28 be  2c 72 65 63 74 25 21 38  |%!4=0.(.,rect%!8|
00005e70  3d 70 5f 78 31 25 2d 70  5f 78 30 25 3a 72 65 63  |=p_x1%-p_x0%:rec|
00005e80  74 25 21 31 32 3d 70 5f  79 31 25 2d 70 5f 79 30  |t%!12=p_y1%-p_y0|
00005e90  25 0d 28 c8 2e 21 74 72  61 6e 73 25 3d 30 3a 74  |%.(..!trans%=0:t|
00005ea0  72 61 6e 73 25 21 34 3d  2d 28 31 3c 3c 31 35 29  |rans%!4=-(1<<15)|
00005eb0  2a 28 31 2b 74 69 6d 65  73 25 29 2a 30 2e 38 0d  |*(1+times%)*0.8.|
00005ec0  28 d2 2f 74 72 61 6e 73  25 21 38 3d 28 31 3c 3c  |(./trans%!8=(1<<|
00005ed0  31 35 29 2a 28 31 2b 74  69 6d 65 73 25 29 2a 30  |15)*(1+times%)*0|
00005ee0  2e 38 3a 74 72 61 6e 73  25 21 31 32 3d 30 0d 28  |.8:trans%!12=0.(|
00005ef0  dc 16 e3 20 74 69 6d 65  25 3d 30 20 b8 20 74 69  |... time%=0 . ti|
00005f00  6d 65 73 25 0d 28 e6 33  20 20 21 70 6c 6f 74 61  |mes%.(.3  !plota|
00005f10  74 25 3d 62 25 3a 70 6c  6f 74 61 74 25 21 34 3d  |t%=b%:plotat%!4=|
00005f20  74 25 2b 28 74 25 2d 28  62 25 2b 38 30 30 30 29  |t%+(t%-(b%+8000)|
00005f30  29 2a 74 69 6d 65 25 0d  28 f0 40 20 20 c8 99 22  |)*time%.(.@  .."|
00005f40  50 44 72 69 76 65 72 5f  47 69 76 65 52 65 63 74  |PDriver_GiveRect|
00005f50  61 6e 67 6c 65 22 2c 30  2c 72 65 63 74 25 2c 74  |angle",0,rect%,t|
00005f60  72 61 6e 73 25 2c 70 6c  6f 74 61 74 25 2c 26 46  |rans%,plotat%,&F|
00005f70  46 46 46 46 46 30 30 0d  28 fa 2d 20 20 c8 99 22  |FFFFF00.(.-  .."|
00005f80  50 44 72 69 76 65 72 5f  44 72 61 77 50 61 67 65  |PDriver_DrawPage|
00005f90  22 2c 31 2c 62 6c 6b 25  2c 30 2c 30 20 b8 20 6d  |",1,blk%,0,0 . m|
00005fa0  6f 72 65 25 0d 29 04 0e  20 20 c8 95 20 6d 6f 72  |ore%.)..  .. mor|
00005fb0  65 25 0d 29 0e 15 20 20  20 20 78 30 25 3d 21 62  |e%.)..    x0%=!b|
00005fc0  6c 6b 25 2d 77 78 25 0d  29 18 16 20 20 20 20 79  |lk%-wx%.)..    y|
00005fd0  30 25 3d 62 6c 6b 25 21  34 2d 77 79 25 0d 29 22  |0%=blk%!4-wy%.)"|
00005fe0  16 20 20 20 20 78 31 25  3d 62 6c 6b 25 21 38 2d  |.    x1%=blk%!8-|
00005ff0  77 78 25 0d 29 2c 17 20  20 20 20 79 31 25 3d 62  |wx%.),.    y1%=b|
00006000  6c 6b 25 21 31 32 2d 77  79 25 0d 29 36 17 20 20  |lk%!12-wy%.)6.  |
00006010  20 20 64 25 3d a4 72 65  64 72 61 77 5f 79 65 61  |  d%=.redraw_yea|
00006020  72 0d 29 40 19 20 20 20  20 64 25 3d a4 72 65 64  |r.)@.    d%=.red|
00006030  72 61 77 5f 63 5f 68 6f  72 7a 0d 29 4a 19 20 20  |raw_c_horz.)J.  |
00006040  20 20 64 25 3d a4 72 65  64 72 61 77 5f 63 5f 76  |  d%=.redraw_c_v|
00006050  65 72 74 0d 29 54 2e 20  20 20 20 c8 99 22 50 44  |ert.)T.    .."PD|
00006060  72 69 76 65 72 5f 47 65  74 52 65 63 74 61 6e 67  |river_GetRectang|
00006070  6c 65 22 2c 2c 62 6c 6b  25 20 b8 20 6d 6f 72 65  |le",,blk% . more|
00006080  25 0d 29 5e 07 20 20 ce  0d 29 68 0b ed 20 74 69  |%.)^.  ..)h.. ti|
00006090  6d 65 25 0d 29 72 1a c8  99 22 50 44 72 69 76 65  |me%.)r..."PDrive|
000060a0  72 5f 45 6e 64 4a 6f 62  22 2c 70 66 25 0d 29 7c  |r_EndJob",pf%.)||
000060b0  07 f7 20 85 0d 29 86 09  d9 23 70 66 25 0d 29 90  |.. ..)...#pf%.).|
000060c0  15 c8 99 22 48 6f 75 72  67 6c 61 73 73 5f 4f 66  |..."Hourglass_Of|
000060d0  66 22 0d 29 9a 0e f2 63  6c 6f 73 65 6d 65 6e 75  |f".)...closemenu|
000060e0  0d 29 a4 05 e1 0d 29 ae  04 0d 29 b8 0d dd 20 f2  |.)....)...)... .|
000060f0  69 6e 73 65 72 74 0d 29  c2 14 69 6e 73 70 74 72  |insert.)..insptr|
00006100  25 3d 69 6e 73 64 61 74  61 25 0d 29 cc 3e e7 20  |%=insdata%.).>. |
00006110  a4 73 65 6c 65 63 74 65  64 28 77 25 28 69 6e 73  |.selected(w%(ins|
00006120  65 72 74 25 29 2c 32 29  20 8c 20 f2 61 64 64 5f  |ert%),2) . .add_|
00006130  69 6e 73 28 61 24 28 74  68 69 73 5f 6e 61 6d 65  |ins(a$(this_name|
00006140  25 2c 6e 61 6d 65 29 29  0d 29 d6 20 e7 20 a4 73  |%,name)).). . .s|
00006150  65 6c 65 63 74 65 64 28  77 25 28 69 6e 73 65 72  |elected(w%(inser|
00006160  74 25 29 2c 33 29 20 8c  0d 29 e0 1c 20 20 e3 20  |t%),3) ..)..  . |
00006170  69 25 3d 61 64 64 72 65  73 73 20 b8 20 70 68 6f  |i%=address . pho|
00006180  6e 65 2d 31 0d 29 ea 23  20 20 20 20 f2 61 64 64  |ne-1.).#    .add|
00006190  5f 69 6e 73 28 61 24 28  74 68 69 73 5f 6e 61 6d  |_ins(a$(this_nam|
000061a0  65 25 2c 69 25 29 29 0d  29 f4 0a 20 20 ed 20 69  |e%,i%)).)..  . i|
000061b0  25 0d 29 fe 05 cd 0d 2a  08 3f e7 20 a4 73 65 6c  |%.)....*.?. .sel|
000061c0  65 63 74 65 64 28 77 25  28 69 6e 73 65 72 74 25  |ected(w%(insert%|
000061d0  29 2c 34 29 20 8c 20 f2  61 64 64 5f 69 6e 73 28  |),4) . .add_ins(|
000061e0  61 24 28 74 68 69 73 5f  6e 61 6d 65 25 2c 70 68  |a$(this_name%,ph|
000061f0  6f 6e 65 29 29 0d 2a 12  3f e7 20 a4 73 65 6c 65  |one)).*.?. .sele|
00006200  63 74 65 64 28 77 25 28  69 6e 73 65 72 74 25 29  |cted(w%(insert%)|
00006210  2c 35 29 20 8c 20 f2 61  64 64 5f 69 6e 73 28 61  |,5) . .add_ins(a|
00006220  24 28 74 68 69 73 5f 6e  61 6d 65 25 2c 6f 74 68  |$(this_name%,oth|
00006230  65 72 29 29 0d 2a 1c 3d  e7 20 a4 73 65 6c 65 63  |er)).*.=. .selec|
00006240  74 65 64 28 77 25 28 69  6e 73 65 72 74 25 29 2c  |ted(w%(insert%),|
00006250  36 29 20 8c 20 f2 61 64  64 5f 69 6e 73 28 61 24  |6) . .add_ins(a$|
00006260  28 74 68 69 73 5f 6e 61  6d 65 25 2c 64 6f 62 29  |(this_name%,dob)|
00006270  29 0d 2a 26 13 69 6e 73  6c 65 6e 25 3d 69 6e 73  |).*&.inslen%=ins|
00006280  70 74 72 25 0d 2a 30 14  69 6e 73 70 74 72 25 3d  |ptr%.*0.insptr%=|
00006290  69 6e 73 64 61 74 61 25  0d 2a 3a 0e f2 63 6c 6f  |insdata%.*:..clo|
000062a0  73 65 6d 65 6e 75 0d 2a  44 10 61 5f 63 68 61 6e  |semenu.*D.a_chan|
000062b0  67 65 64 25 3d b9 0d 2a  4e 05 e1 0d 2a 58 04 0d  |ged%=..*N...*X..|
000062c0  2a 62 13 dd 20 f2 61 64  64 5f 69 6e 73 28 73 74  |*b.. .add_ins(st|
000062d0  24 29 0d 2a 6c 0c e7 20  a9 73 74 24 20 8c 0d 2a  |$).*l.. .st$ ..*|
000062e0  76 12 20 20 24 69 6e 73  70 74 72 25 3d 73 74 24  |v.  $insptr%=st$|
000062f0  0d 2a 80 15 20 20 69 6e  73 70 74 72 25 2b 3d a9  |.*..  insptr%+=.|
00006300  73 74 24 2b 31 0d 2a 8a  05 cd 0d 2a 94 05 e1 0d  |st$+1.*....*....|
00006310  2a 9e 04 0d 2a a8 13 dd  20 f2 6e 65 77 5f 73 65  |*...*... .new_se|
00006320  74 74 69 6e 67 73 0d 2a  b2 13 6f 6c 64 25 3d 73  |ttings.*..old%=s|
00006330  5f 63 68 61 6e 67 65 64  25 0d 2a bc 20 f2 73 65  |_changed%.*. .se|
00006340  74 74 69 6e 67 5f 63 68  61 6e 67 65 28 31 34 2c  |tting_change(14,|
00006350  77 65 65 6b 65 6e 64 73  29 0d 2a c6 1c f2 73 65  |weekends).*...se|
00006360  74 74 69 6e 67 5f 63 68  61 6e 67 65 28 32 2c 74  |tting_change(2,t|
00006370  6f 64 61 79 29 0d 2a d0  1c f2 73 65 74 74 69 6e  |oday).*...settin|
00006380  67 5f 63 68 61 6e 67 65  28 33 2c 66 6f 6e 74 73  |g_change(3,fonts|
00006390  29 0d 2a da 1b f2 73 65  74 74 69 6e 67 5f 63 68  |).*...setting_ch|
000063a0  61 6e 67 65 28 34 2c 62  65 65 70 29 0d 2a e4 22  |ange(4,beep).*."|
000063b0  6e 65 77 25 3d a4 69 63  6f 6e 76 61 6c 28 77 25  |new%=.iconval(w%|
000063c0  28 73 65 74 74 69 6e 67  73 25 29 2c 38 29 0d 2a  |(settings%),8).*|
000063d0  ee 16 e7 20 6e 65 77 25  3c 3e 62 69 72 74 68 64  |... new%<>birthd|
000063e0  61 79 20 8c 0d 2a f8 13  20 20 62 69 72 74 68 64  |ay ..*..  birthd|
000063f0  61 79 3d 6e 65 77 25 0d  2b 02 12 20 20 73 5f 63  |ay=new%.+..  s_c|
00006400  68 61 6e 67 65 64 25 3d  b9 0d 2b 0c 05 cd 0d 2b  |hanged%=..+....+|
00006410  16 24 6e 65 77 24 3d a4  69 63 6f 6e 74 65 78 74  |.$new$=.icontext|
00006420  28 77 25 28 73 65 74 74  69 6e 67 73 25 29 2c 31  |(w%(settings%),1|
00006430  32 29 0d 2b 20 14 e7 20  6e 65 77 24 3c 3e 6f 74  |2).+ .. new$<>ot|
00006440  68 65 72 24 20 8c 0d 2b  2a 11 20 20 6f 74 68 65  |her$ ..+*.  othe|
00006450  72 24 3d 6e 65 77 24 0d  2b 34 12 20 20 73 5f 63  |r$=new$.+4.  s_c|
00006460  68 61 6e 67 65 64 25 3d  b9 0d 2b 3e 2e 20 20 f2  |hanged%=..+>.  .|
00006470  73 65 74 69 63 6f 6e 74  65 78 74 28 77 25 28 61  |seticontext(w%(a|
00006480  64 64 72 65 73 73 25 29  2c 31 30 2c 6f 74 68 65  |ddress%),10,othe|
00006490  72 24 2b 22 3a 22 29 0d  2b 48 05 cd 0d 2b 52 41  |r$+":").+H...+RA|
000064a0  e7 20 73 5f 63 68 61 6e  67 65 64 25 3c 3e 6f 6c  |. s_changed%<>ol|
000064b0  64 25 20 80 20 61 63 74  69 76 65 25 28 79 65 61  |d% . active%(yea|
000064c0  72 25 29 20 8c 20 f2 66  6f 72 63 65 72 65 64 72  |r%) . .forceredr|
000064d0  61 77 28 77 25 28 79 65  61 72 25 29 29 0d 2b 5c  |aw(w%(year%)).+\|
000064e0  05 e1 0d 2b 66 04 0d 2b  70 22 dd 20 f2 73 65 74  |...+f..+p". .set|
000064f0  74 69 6e 67 5f 63 68 61  6e 67 65 28 69 63 6f 6e  |ting_change(icon|
00006500  25 2c f8 20 76 61 6c 29  0d 2b 7a 26 6e 65 77 3d  |%,. val).+z&new=|
00006510  a4 73 65 6c 65 63 74 65  64 28 77 25 28 73 65 74  |.selected(w%(set|
00006520  74 69 6e 67 73 25 29 2c  69 63 6f 6e 25 29 0d 2b  |tings%),icon%).+|
00006530  84 10 e7 20 6e 65 77 3c  3e 76 61 6c 20 8c 0d 2b  |... new<>val ..+|
00006540  8e 0d 20 20 76 61 6c 3d  6e 65 77 0d 2b 98 12 20  |..  val=new.+.. |
00006550  20 73 5f 63 68 61 6e 67  65 64 25 3d b9 0d 2b a2  | s_changed%=..+.|
00006560  05 cd 0d 2b ac 05 e1 0d  2b b6 04 0d 2b c0 12 dd  |...+....+...+...|
00006570  20 f2 63 5f 62 69 72 74  68 64 61 79 73 0d 2b ca  | .c_birthdays.+.|
00006580  05 f5 0d 2b d4 12 20 20  62 5f 70 65 72 73 6f 6e  |...+..  b_person|
00006590  25 2b 3d 31 0d 2b de 1a  20 20 e7 20 62 5f 70 65  |%+=1.+..  . b_pe|
000065a0  72 73 6f 6e 25 3e 6e 61  6d 65 73 25 20 8c 0d 2b  |rson%>names% ..+|
000065b0  e8 13 20 20 20 20 62 5f  70 65 72 73 6f 6e 25 3d  |..    b_person%=|
000065c0  30 0d 2b f2 12 20 20 20  20 62 5f 64 61 79 73 25  |0.+..    b_days%|
000065d0  2b 3d 31 0d 2b fc 12 20  20 20 20 61 5f 64 61 74  |+=1.+..    a_dat|
000065e0  65 25 2b 3d 31 0d 2c 06  22 20 20 20 20 e7 20 61  |e%+=1.,."    . a|
000065f0  5f 64 61 74 65 25 3e 6d  6d 6c 25 28 61 5f 6d 6f  |_date%>mml%(a_mo|
00006600  6e 74 68 25 29 20 8c 0d  2c 10 13 20 20 20 20 20  |nth%) ..,..     |
00006610  20 61 5f 64 61 74 65 25  3d 31 0d 2c 1a 15 20 20  | a_date%=1.,..  |
00006620  20 20 20 20 61 5f 6d 6f  6e 74 68 25 2b 3d 31 0d  |    a_month%+=1.|
00006630  2c 24 09 20 20 20 20 cd  0d 2c 2e 07 20 20 cc 0d  |,$.    ..,..  ..|
00006640  2c 38 1e 20 20 20 20 e7  20 66 6c 61 67 25 28 62  |,8.    . flag%(b|
00006650  5f 70 65 72 73 6f 6e 25  29 80 32 20 8c 0d 2c 42  |_person%).2 ..,B|
00006660  23 20 20 20 20 20 20 73  74 24 3d 61 24 28 62 5f  |#      st$=a$(b_|
00006670  70 65 72 73 6f 6e 25 2c  64 6f 62 29 2b 22 2e 22  |person%,dob)+"."|
00006680  0d 2c 4c 1e 20 20 20 20  20 20 64 25 3d a4 6e 65  |.,L.      d%=.ne|
00006690  78 74 5f 6e 75 6d 62 65  72 28 73 74 24 29 0d 2c  |xt_number(st$).,|
000066a0  56 1e 20 20 20 20 20 20  6d 25 3d a4 6e 65 78 74  |V.      m%=.next|
000066b0  5f 6e 75 6d 62 65 72 28  73 74 24 29 0d 2c 60 6b  |_number(st$).,`k|
000066c0  20 20 20 20 20 20 e7 20  64 25 3d 61 5f 64 61 74  |      . d%=a_dat|
000066d0  65 25 20 80 20 6d 25 3d  28 28 61 5f 6d 6f 6e 74  |e% . m%=((a_mont|
000066e0  68 25 2b 74 68 69 73 5f  6d 6f 6e 74 68 25 2d 32  |h%+this_month%-2|
000066f0  29 83 31 32 29 2b 31 20  8c 20 f2 62 69 72 74 68  |).12)+1 . .birth|
00006700  64 61 79 28 62 5f 70 65  72 73 6f 6e 25 2c 61 5f  |day(b_person%,a_|
00006710  64 61 74 65 25 2c 61 5f  6d 6f 6e 74 68 25 2c 62  |date%,a_month%,b|
00006720  5f 64 61 79 73 25 29 0d  2c 6a 09 20 20 20 20 cd  |_days%).,j.    .|
00006730  0d 2c 74 07 20 20 cd 0d  2c 7e 2b fd 20 61 63 74  |.,t.  ..,~+. act|
00006740  69 76 65 25 28 62 69 72  74 68 64 61 79 25 29 20  |ive%(birthday%) |
00006750  84 20 62 5f 64 61 79 73  25 3e 62 69 72 74 68 64  |. b_days%>birthd|
00006760  61 79 0d 2c 88 22 62 5f  63 68 65 63 6b 69 6e 67  |ay.,."b_checking|
00006770  25 3d 61 63 74 69 76 65  25 28 62 69 72 74 68 64  |%=active%(birthd|
00006780  61 79 25 29 0d 2c 92 05  e1 0d 2c 9c 04 0d 2c a6  |ay%).,....,...,.|
00006790  2b dd 20 f2 62 69 72 74  68 64 61 79 28 70 65 72  |+. .birthday(per|
000067a0  73 6f 6e 25 2c 64 61 74  65 25 2c 6d 6f 6e 74 68  |son%,date%,month|
000067b0  25 2c 64 61 79 73 25 29  0d 2c b0 4e f2 73 65 74  |%,days%).,.N.set|
000067c0  69 63 6f 6e 74 65 78 74  28 77 25 28 62 69 72 74  |icontext(w%(birt|
000067d0  68 64 61 79 25 29 2c 32  2c a4 64 61 74 65 28 64  |hday%),2,.date(d|
000067e0  61 74 65 25 2c 6d 6f 6e  74 68 25 2b 74 68 69 73  |ate%,month%+this|
000067f0  5f 6d 6f 6e 74 68 25 2d  31 2c 74 68 69 73 5f 79  |_month%-1,this_y|
00006800  65 61 72 25 29 29 0d 2c  ba 32 f2 73 65 74 69 63  |ear%)).,.2.setic|
00006810  6f 6e 74 65 78 74 28 77  25 28 62 69 72 74 68 64  |ontext(w%(birthd|
00006820  61 79 25 29 2c 33 2c 61  24 28 70 65 72 73 6f 6e  |ay%),3,a$(person|
00006830  25 2c 6e 61 6d 65 29 29  0d 2c c4 20 f2 6f 70 65  |%,name)).,. .ope|
00006840  6e 69 6e 63 65 6e 74 72  65 28 77 25 28 62 69 72  |nincentre(w%(bir|
00006850  74 68 64 61 79 25 29 29  0d 2c ce 05 e1 0d 2c d8  |thday%)).,....,.|
00006860  04 0d 2c e2 19 dd 20 a4  6e 65 78 74 5f 6e 75 6d  |..,... .next_num|
00006870  62 65 72 28 f8 20 73 74  24 29 0d 2c ec 0a ea 20  |ber(. st$).,... |
00006880  6e 75 6d 25 0d 2c f6 0a  6e 75 6d 25 3d 30 0d 2d  |num%.,..num%=0.-|
00006890  00 22 c8 95 20 c0 73 74  24 2c 31 29 3e 3d 22 30  |.".. .st$,1)>="0|
000068a0  22 20 80 20 c0 73 74 24  2c 31 29 3c 3d 22 39 22  |" . .st$,1)<="9"|
000068b0  0d 2d 0a 1d 20 20 6e 75  6d 25 3d bb 28 c0 73 74  |.-..  num%=.(.st|
000068c0  24 2c 31 29 29 2b 6e 75  6d 25 2a 31 30 0d 2d 14  |$,1))+num%*10.-.|
000068d0  11 20 20 73 74 24 3d c1  73 74 24 2c 32 29 0d 2d  |.  st$=.st$,2).-|
000068e0  1e 05 ce 0d 2d 28 0f 73  74 24 3d c1 73 74 24 2c  |....-(.st$=.st$,|
000068f0  32 29 0d 2d 32 09 3d 6e  75 6d 25 0d 2d 3c 04 0d  |2).-2.=num%.-<..|
00006900  2d 46 10 dd 20 f2 63 5f  61 6c 61 72 6d 73 32 0d  |-F.. .c_alarms2.|
00006910  2d 50 22 61 5f 6e 65 78  74 25 3d 63 5f 66 69 72  |-P"a_next%=c_fir|
00006920  73 74 25 28 31 2c 74 68  69 73 5f 64 61 74 65 25  |st%(1,this_date%|
00006930  29 0d 2d 5a 10 61 6c 61  72 6d 5f 73 65 74 25 3d  |).-Z.alarm_set%=|
00006940  30 0d 2d 64 12 c8 95 20  61 5f 6e 65 78 74 25 3c  |0.-d... a_next%<|
00006950  3e 2d 31 0d 2d 6e 6d 20  20 e7 20 28 63 5f 74 79  |>-1.-nm  . (c_ty|
00006960  70 65 25 28 61 5f 6e 65  78 74 25 29 80 32 35 35  |pe%(a_next%).255|
00006970  29 3d 33 20 80 20 28 61  6c 61 72 6d 5f 73 65 74  |)=3 . (alarm_set|
00006980  25 3d 30 20 84 20 63 5f  74 69 6d 65 25 28 61 5f  |%=0 . c_time%(a_|
00006990  6e 65 78 74 25 29 3c 63  5f 74 69 6d 65 25 28 61  |next%)<c_time%(a|
000069a0  6c 61 72 6d 5f 73 65 74  25 29 29 20 8c 20 61 6c  |larm_set%)) . al|
000069b0  61 72 6d 5f 73 65 74 25  3d 61 5f 6e 65 78 74 25  |arm_set%=a_next%|
000069c0  0d 2d 78 1e 20 20 61 5f  6e 65 78 74 25 3d 63 5f  |.-x.  a_next%=c_|
000069d0  6e 65 78 74 25 28 61 5f  6e 65 78 74 25 29 0d 2d  |next%(a_next%).-|
000069e0  82 05 ce 0d 2d 8c 05 e1  0d 2d 96 04 0d 2d a0 0f  |....-....-...-..|
000069f0  dd 20 f2 63 5f 61 6c 61  72 6d 73 0d 2d aa 11 61  |. .c_alarms.-..a|
00006a00  5f 63 68 65 63 6b 69 6e  67 25 3d b9 0d 2d b4 05  |_checking%=..-..|
00006a10  f5 0d 2d be 51 20 20 e7  20 61 5f 6e 65 78 74 25  |..-.Q  . a_next%|
00006a20  3d 30 20 8c 20 61 5f 6e  65 78 74 25 3d 63 5f 66  |=0 . a_next%=c_f|
00006a30  69 72 73 74 25 28 61 5f  6d 6f 6e 74 68 25 2c 61  |irst%(a_month%,a|
00006a40  5f 64 61 74 65 25 29 20  8b 20 61 5f 6e 65 78 74  |_date%) . a_next|
00006a50  25 3d 63 5f 6e 65 78 74  25 28 61 5f 6e 65 78 74  |%=c_next%(a_next|
00006a60  25 29 0d 2d c8 14 20 20  e7 20 61 5f 6e 65 78 74  |%).-..  . a_next|
00006a70  25 3d 2d 31 20 8c 0d 2d  d2 12 20 20 20 20 61 5f  |%=-1 ..-..    a_|
00006a80  64 61 74 65 25 2b 3d 31  0d 2d dc 22 20 20 20 20  |date%+=1.-."    |
00006a90  e7 20 61 5f 64 61 74 65  25 3e 6d 6d 6c 25 28 61  |. a_date%>mml%(a|
00006aa0  5f 6d 6f 6e 74 68 25 29  20 8c 0d 2d e6 13 20 20  |_month%) ..-..  |
00006ab0  20 20 20 20 61 5f 64 61  74 65 25 3d 31 0d 2d f0  |    a_date%=1.-.|
00006ac0  15 20 20 20 20 20 20 61  5f 6d 6f 6e 74 68 25 2b  |.      a_month%+|
00006ad0  3d 31 0d 2d fa 09 20 20  20 20 cd 0d 2e 04 11 20  |=1.-..    ..... |
00006ae0  20 20 20 61 5f 6e 65 78  74 25 3d 30 0d 2e 0e 07  |   a_next%=0....|
00006af0  20 20 cc 0d 2e 18 45 20  20 20 20 e7 20 28 63 5f  |  ....E    . (c_|
00006b00  74 79 70 65 25 28 61 5f  6e 65 78 74 25 29 80 32  |type%(a_next%).2|
00006b10  35 35 29 3d 33 20 8c 20  f2 61 6c 61 72 6d 28 61  |55)=3 . .alarm(a|
00006b20  5f 6e 65 78 74 25 2c 61  5f 64 61 74 65 25 2c 61  |_next%,a_date%,a|
00006b30  5f 6d 6f 6e 74 68 25 29  0d 2e 22 07 20 20 cd 0d  |_month%)..".  ..|
00006b40  2e 2c 39 fd 20 61 63 74  69 76 65 25 28 61 6c 61  |.,9. active%(ala|
00006b50  72 6d 25 29 20 84 20 28  61 5f 64 61 74 65 25 3d  |rm%) . (a_date%=|
00006b60  74 68 69 73 5f 64 61 74  65 25 20 80 20 61 5f 6d  |this_date% . a_m|
00006b70  6f 6e 74 68 25 3d 31 29  0d 2e 36 1f 61 5f 63 68  |onth%=1)..6.a_ch|
00006b80  65 63 6b 69 6e 67 25 3d  61 63 74 69 76 65 25 28  |ecking%=active%(|
00006b90  61 6c 61 72 6d 25 29 0d  2e 40 15 e7 20 61 5f 63  |alarm%)..@.. a_c|
00006ba0  68 65 63 6b 69 6e 67 25  3d a3 20 8c 0d 2e 4a 10  |hecking%=. ...J.|
00006bb0  20 20 f2 63 5f 61 6c 61  72 6d 73 32 0d 2e 54 11  |  .c_alarms2..T.|
00006bc0  20 20 62 5f 70 65 72 73  6f 6e 25 3d 30 0d 2e 5e  |  b_person%=0..^|
00006bd0  0f 20 20 62 5f 64 61 79  73 25 3d 30 0d 2e 68 12  |.  b_days%=0..h.|
00006be0  20 20 f2 63 5f 62 69 72  74 68 64 61 79 73 0d 2e  |  .c_birthdays..|
00006bf0  72 05 cd 0d 2e 7c 05 e1  0d 2e 86 04 0d 2e 90 1f  |r....|..........|
00006c00  dd 20 f2 61 6c 61 72 6d  28 70 6f 73 25 2c 64 61  |. .alarm(pos%,da|
00006c10  74 65 25 2c 6d 6f 6e 74  68 25 29 0d 2e 9a 13 f2  |te%,month%).....|
00006c20  64 69 61 6c 28 22 39 39  39 39 39 39 22 29 0d 2e  |dial("999999")..|
00006c30  a4 23 63 5f 74 79 70 65  25 28 70 6f 73 25 29 3d  |.#c_type%(pos%)=|
00006c40  63 5f 74 79 70 65 25 28  70 6f 73 25 29 80 32 35  |c_type%(pos%).25|
00006c50  36 0d 2e ae 36 74 69 6d  65 24 3d a4 64 61 74 65  |6...6time$=.date|
00006c60  28 64 61 74 65 25 2c 6d  6f 6e 74 68 25 2b 74 68  |(date%,month%+th|
00006c70  69 73 5f 6d 6f 6e 74 68  25 2d 31 2c 74 68 69 73  |is_month%-1,this|
00006c80  5f 79 65 61 72 25 29 0d  2e b8 1a 74 69 6d 65 24  |_year%)....time$|
00006c90  3d c0 74 69 6d 65 24 2c  a9 74 69 6d 65 24 2d 33  |=.time$,.time$-3|
00006ca0  29 0d 2e c2 3f e7 20 63  5f 74 79 70 65 25 28 70  |)...?. c_type%(p|
00006cb0  6f 73 25 29 80 32 35 36  20 8c 20 74 69 6d 65 24  |os%).256 . time$|
00006cc0  3d a4 74 69 6d 65 28 63  5f 74 69 6d 65 25 28 70  |=.time(c_time%(p|
00006cd0  6f 73 25 29 29 2b 22 2c  20 22 2b 74 69 6d 65 24  |os%))+", "+time$|
00006ce0  0d 2e cc 24 f2 73 65 74  69 63 6f 6e 74 65 78 74  |...$.seticontext|
00006cf0  28 77 25 28 61 6c 61 72  6d 25 29 2c 32 2c 74 69  |(w%(alarm%),2,ti|
00006d00  6d 65 24 29 0d 2e d6 2d  f2 73 65 74 69 63 6f 6e  |me$)...-.seticon|
00006d10  74 65 78 74 28 77 25 28  61 6c 61 72 6d 25 29 2c  |text(w%(alarm%),|
00006d20  33 2c 63 5f 65 6e 74 72  79 24 28 70 6f 73 25 29  |3,c_entry$(pos%)|
00006d30  29 0d 2e e0 1d f2 6f 70  65 6e 69 6e 63 65 6e 74  |).....openincent|
00006d40  72 65 28 77 25 28 61 6c  61 72 6d 25 29 29 0d 2e  |re(w%(alarm%))..|
00006d50  ea 20 e7 20 61 5f 63 68  65 63 6b 69 6e 67 25 3d  |. . a_checking%=|
00006d60  a3 20 8c 20 f2 63 5f 61  6c 61 72 6d 73 32 0d 2e  |. . .c_alarms2..|
00006d70  f4 05 e1 0d 2e fe 04 0d  2f 08 19 dd 20 f2 6f 70  |......../... .op|
00006d80  65 6e 5f 73 65 61 72 63  68 28 74 79 70 65 25 29  |en_search(type%)|
00006d90  0d 2f 12 16 73 65 61 72  63 68 5f 74 79 70 65 25  |./..search_type%|
00006da0  3d 74 79 70 65 25 0d 2f  1c 22 f2 73 65 74 69 63  |=type%./.".setic|
00006db0  6f 6e 74 65 78 74 28 77  25 28 73 65 61 72 63 68  |ontext(w%(search|
00006dc0  25 29 2c 30 2c 22 22 29  0d 2f 26 22 f2 6f 70 65  |%),0,"")./&".ope|
00006dd0  6e 77 69 6e 64 6f 77 61  73 6d 65 6e 75 28 77 25  |nwindowasmenu(w%|
00006de0  28 73 65 61 72 63 68 25  29 29 0d 2f 30 05 e1 0d  |(search%))./0...|
00006df0  2f 3a 04 0d 2f 44 18 dd  20 f2 73 65 61 72 63 68  |/:../D.. .search|
00006e00  28 72 65 63 25 2c 69 6e  63 25 29 0d 2f 4e 20 73  |(rec%,inc%)./N s|
00006e10  74 24 3d a4 69 63 6f 6e  74 65 78 74 28 77 25 28  |t$=.icontext(w%(|
00006e20  73 65 61 72 63 68 25 29  2c 30 29 0d 2f 58 15 c8  |search%),0)./X..|
00006e30  8e 20 73 65 61 72 63 68  5f 74 79 70 65 25 20 ca  |. search_type% .|
00006e40  0d 2f 62 09 20 20 c9 20  31 0d 2f 6c 13 20 20 20  |./b.  . 1./l.   |
00006e50  20 f2 67 65 74 5f 6e 5f  64 61 74 61 0d 2f 76 13  | .get_n_data./v.|
00006e60  20 20 20 20 6d 61 78 25  3d 6e 6f 74 65 73 25 0d  |    max%=notes%.|
00006e70  2f 80 09 20 20 c9 20 32  0d 2f 8a 13 20 20 20 20  |/..  . 2./..    |
00006e80  f2 67 65 74 5f 61 5f 64  61 74 61 0d 2f 94 13 20  |.get_a_data./.. |
00006e90  20 20 20 6d 61 78 25 3d  6e 61 6d 65 73 25 0d 2f  |   max%=names%./|
00006ea0  9e 05 cb 0d 2f a8 0c 6d  61 74 63 68 25 3d a3 0d  |..../..match%=..|
00006eb0  2f b2 0e 72 65 63 25 2b  3d 69 6e 63 25 0d 2f bc  |/..rec%+=inc%./.|
00006ec0  26 c8 95 20 6d 61 74 63  68 25 3d a3 20 80 20 72  |&.. match%=. . r|
00006ed0  65 63 25 3e 3d 31 20 80  20 72 65 63 25 3c 3d 6d  |ec%>=1 . rec%<=m|
00006ee0  61 78 25 0d 2f c6 17 20  20 c8 8e 20 73 65 61 72  |ax%./..  .. sear|
00006ef0  63 68 5f 74 79 70 65 25  20 ca 0d 2f d0 0b 20 20  |ch_type% ../..  |
00006f00  20 20 c9 20 31 0d 2f da  14 20 20 20 20 20 20 e3  |  . 1./..      .|
00006f10  20 6e 25 3d 30 20 b8 20  35 0d 2f e4 33 20 20 20  | n%=0 . 5./.3   |
00006f20  20 20 20 20 20 e7 20 a4  6d 61 74 63 68 28 6e 6f  |     . .match(no|
00006f30  74 65 24 28 72 65 63 25  2c 6e 25 29 2c 73 74 24  |te$(rec%,n%),st$|
00006f40  29 20 8c 20 6d 61 74 63  68 25 3d b9 0d 2f ee 0e  |) . match%=../..|
00006f50  20 20 20 20 20 20 ed 20  6e 25 0d 2f f8 0b 20 20  |      . n%./..  |
00006f60  20 20 c9 20 32 0d 30 02  1b 20 20 20 20 20 20 e3  |  . 2.0..      .|
00006f70  20 74 79 70 65 3d 6e 61  6d 65 20 b8 20 64 6f 62  | type=name . dob|
00006f80  0d 30 0c 32 20 20 20 20  20 20 20 20 e7 20 a4 6d  |.0.2        . .m|
00006f90  61 74 63 68 28 61 24 28  72 65 63 25 2c 74 79 70  |atch(a$(rec%,typ|
00006fa0  65 29 2c 73 74 24 29 20  8c 20 6d 61 74 63 68 25  |e),st$) . match%|
00006fb0  3d b9 0d 30 16 10 20 20  20 20 20 20 ed 20 74 79  |=..0..      . ty|
00006fc0  70 65 0d 30 20 07 20 20  cb 0d 30 2a 1d 20 20 e7  |pe.0 .  ..0*.  .|
00006fd0  20 6d 61 74 63 68 25 3d  a3 20 8c 20 72 65 63 25  | match%=. . rec%|
00006fe0  2b 3d 69 6e 63 25 0d 30  34 05 ce 0d 30 3e 0e e7  |+=inc%.04...0>..|
00006ff0  20 6d 61 74 63 68 25 20  8c 0d 30 48 17 20 20 c8  | match% ..0H.  .|
00007000  8e 20 73 65 61 72 63 68  5f 74 79 70 65 25 20 ca  |. search_type% .|
00007010  0d 30 52 1a 20 20 20 20  c9 20 31 20 3a 20 f2 73  |.0R.    . 1 : .s|
00007020  65 74 5f 6e 28 72 65 63  25 29 0d 30 5c 1a 20 20  |et_n(rec%).0\.  |
00007030  20 20 c9 20 32 20 3a 20  f2 73 65 74 5f 61 28 72  |  . 2 : .set_a(r|
00007040  65 63 25 29 0d 30 66 07  20 20 cb 0d 30 70 05 cc  |ec%).0f.  ..0p..|
00007050  0d 30 7a 1f 20 20 f2 63  6c 6f 73 65 77 69 6e 64  |.0z.  .closewind|
00007060  6f 77 28 77 25 28 73 65  61 72 63 68 25 29 29 0d  |ow(w%(search%)).|
00007070  30 84 05 cd 0d 30 8e 05  e1 0d 30 98 04 0d 30 a2  |0....0....0...0.|
00007080  19 dd 20 a4 6d 61 74 63  68 28 73 74 24 2c 73 65  |.. .match(st$,se|
00007090  61 72 63 68 24 29 0d 30  ac 13 ea 20 6d 61 74 63  |arch$).0... matc|
000070a0  68 25 2c 69 25 2c 69 32  25 0d 30 b6 0c 6d 61 74  |h%,i%,i2%.0..mat|
000070b0  63 68 25 3d a3 0d 30 c0  14 69 25 3d a7 73 65 61  |ch%=..0..i%=.sea|
000070c0  72 63 68 24 2c 22 2a 22  29 0d 30 ca 0c e7 20 69  |rch$,"*").0... i|
000070d0  25 3e 30 20 8c 0d 30 d4  1e 20 20 69 32 25 3d a7  |%>0 ..0..  i2%=.|
000070e0  73 74 24 2c c0 73 65 61  72 63 68 24 2c 69 25 2d  |st$,.search$,i%-|
000070f0  31 29 29 0d 30 de 3a 20  20 e7 20 69 32 25 3e 30  |1)).0.:  . i2%>0|
00007100  20 8c 20 6d 61 74 63 68  25 3d a4 6d 61 74 63 68  | . match%=.match|
00007110  28 c1 73 74 24 2c 69 32  25 2b 69 25 29 2c c1 73  |(.st$,i2%+i%),.s|
00007120  65 61 72 63 68 24 2c 69  25 2b 31 29 29 0d 30 e8  |earch$,i%+1)).0.|
00007130  05 cc 0d 30 f2 20 20 20  e7 20 a7 73 74 24 2c 73  |...0.   . .st$,s|
00007140  65 61 72 63 68 24 29 20  8c 20 6d 61 74 63 68 25  |earch$) . match%|
00007150  3d b9 0d 30 fc 05 cd 0d  31 06 0b 3d 6d 61 74 63  |=..0....1..=matc|
00007160  68 25 0d 31 10 04 0d 31  1a 12 dd 20 f2 73 65 74  |h%.1...1... .set|
00007170  5f 6e 28 6e 65 77 25 29  0d 31 24 35 e7 20 61 63  |_n(new%).1$5. ac|
00007180  74 69 76 65 25 28 6e 6f  74 65 70 61 64 25 29 20  |tive%(notepad%) |
00007190  80 20 74 68 69 73 5f 6e  6f 74 65 25 3e 2d 31 20  |. this_note%>-1 |
000071a0  8c 20 f2 67 65 74 5f 6e  5f 64 61 74 61 0d 31 2e  |. .get_n_data.1.|
000071b0  3b e7 20 28 6e 65 77 25  3c 3e 74 68 69 73 5f 6e  |;. (new%<>this_n|
000071c0  6f 74 65 25 20 84 20 61  63 74 69 76 65 25 28 6e  |ote% . active%(n|
000071d0  6f 74 65 70 61 64 25 29  3d a3 29 20 80 20 6e 65  |otepad%)=.) . ne|
000071e0  77 25 3c 3e 2d 31 20 8c  0d 31 38 15 20 20 74 68  |w%<>-1 ..18.  th|
000071f0  69 73 5f 6e 6f 74 65 25  3d 6e 65 77 25 0d 31 42  |is_note%=new%.1B|
00007200  10 20 20 e3 20 69 25 3d  30 20 b8 20 35 0d 31 4c  |.  . i%=0 . 5.1L|
00007210  3c 20 20 20 20 f2 73 65  74 69 63 6f 6e 74 65 78  |<    .seticontex|
00007220  74 28 77 25 28 6e 6f 74  65 70 61 64 25 29 2c 69  |t(w%(notepad%),i|
00007230  25 2b 31 2c 6e 6f 74 65  24 28 74 68 69 73 5f 6e  |%+1,note$(this_n|
00007240  6f 74 65 25 2c 69 25 29  29 0d 31 56 0a 20 20 ed  |ote%,i%)).1V.  .|
00007250  20 69 25 0d 31 60 22 20  20 f2 72 65 73 65 74 63  | i%.1`"  .resetc|
00007260  61 72 65 74 28 77 25 28  6e 6f 74 65 70 61 64 25  |aret(w%(notepad%|
00007270  29 2c 2d 31 29 0d 31 6a  33 20 20 e7 20 61 63 74  |),-1).1j3  . act|
00007280  69 76 65 25 28 6e 6f 74  65 70 61 64 25 29 3d a3  |ive%(notepad%)=.|
00007290  20 8c 20 f2 6f 70 65 6e  75 70 28 77 25 28 6e 6f  | . .openup(w%(no|
000072a0  74 65 70 61 64 25 29 29  0d 31 74 13 20 20 f2 73  |tepad%)).1t.  .s|
000072b0  65 74 5f 6e 5f 73 63 72  6f 6c 6c 0d 31 7e 05 cd  |et_n_scroll.1~..|
000072c0  0d 31 88 2a e7 20 6e 65  77 25 3d 2d 31 20 8c 20  |.1.*. new%=-1 . |
000072d0  f2 63 6c 6f 73 65 77 69  6e 64 6f 77 28 77 25 28  |.closewindow(w%(|
000072e0  6e 6f 74 65 70 61 64 25  29 29 0d 31 92 05 e1 0d  |notepad%)).1....|
000072f0  31 9c 04 0d 31 a6 11 dd  20 f2 67 65 74 5f 6e 5f  |1...1... .get_n_|
00007300  64 61 74 61 0d 31 b0 0e  e3 20 69 25 3d 30 20 b8  |data.1... i%=0 .|
00007310  20 35 0d 31 ba 27 20 20  6e 65 77 24 3d a4 69 63  | 5.1.'  new$=.ic|
00007320  6f 6e 74 65 78 74 28 77  25 28 6e 6f 74 65 70 61  |ontext(w%(notepa|
00007330  64 25 29 2c 69 25 2b 31  29 0d 31 c4 24 20 20 e7  |d%),i%+1).1.$  .|
00007340  20 6e 65 77 24 3c 3e 6e  6f 74 65 24 28 74 68 69  | new$<>note$(thi|
00007350  73 5f 6e 6f 74 65 25 2c  69 25 29 20 8c 0d 31 ce  |s_note%,i%) ..1.|
00007360  21 20 20 20 20 6e 6f 74  65 24 28 74 68 69 73 5f  |!    note$(this_|
00007370  6e 6f 74 65 25 2c 69 25  29 3d 6e 65 77 24 0d 31  |note%,i%)=new$.1|
00007380  d8 14 20 20 20 20 6e 5f  63 68 61 6e 67 65 64 25  |..    n_changed%|
00007390  3d b9 0d 31 e2 07 20 20  cd 0d 31 ec 08 ed 20 69  |=..1..  ..1... i|
000073a0  25 0d 31 f6 05 e1 0d 32  00 04 0d 32 0a 0e dd 20  |%.1....2...2... |
000073b0  f2 62 6c 61 6e 6b 5f 6e  0d 32 14 0e e3 20 69 25  |.blank_n.2... i%|
000073c0  3d 30 20 b8 20 35 0d 32  1e 1d 20 20 6e 6f 74 65  |=0 . 5.2..  note|
000073d0  24 28 74 68 69 73 5f 6e  6f 74 65 25 2c 69 25 29  |$(this_note%,i%)|
000073e0  3d 22 22 0d 32 28 08 ed  20 69 25 0d 32 32 05 e1  |="".2(.. i%.22..|
000073f0  0d 32 3c 04 0d 32 46 12  dd 20 f2 69 6e 63 5f 6e  |.2<..2F.. .inc_n|
00007400  28 69 6e 63 25 29 0d 32  50 4c e7 20 74 68 69 73  |(inc%).2PL. this|
00007410  5f 6e 6f 74 65 25 2b 69  6e 63 25 3e 3d 31 20 80  |_note%+inc%>=1 .|
00007420  20 74 68 69 73 5f 6e 6f  74 65 25 2b 69 6e 63 25  | this_note%+inc%|
00007430  3c 3d 6e 6f 74 65 73 25  20 8c 20 f2 73 65 74 5f  |<=notes% . .set_|
00007440  6e 28 74 68 69 73 5f 6e  6f 74 65 25 2b 69 6e 63  |n(this_note%+inc|
00007450  25 29 0d 32 5a 05 e1 0d  32 64 04 0d 32 6e 0d dd  |%).2Z...2d..2n..|
00007460  20 f2 64 72 61 67 5f 6e  0d 32 78 14 6e 5f 6f 66  | .drag_n.2x.n_of|
00007470  66 25 3d 6d 78 25 2d 6e  5f 73 35 25 0d 32 82 50  |f%=mx%-n_s5%.2.P|
00007480  f2 73 74 61 72 74 75 73  65 72 64 72 61 67 28 6e  |.startuserdrag(n|
00007490  6f 74 65 70 61 64 25 2c  30 2c 6e 5f 73 30 25 2b  |otepad%,0,n_s0%+|
000074a0  6e 5f 6f 66 66 25 2c 6d  79 25 2c 6e 5f 73 34 2a  |n_off%,my%,n_s4*|
000074b0  28 6e 6f 74 65 73 25 2d  31 29 2b 6e 5f 73 30 25  |(notes%-1)+n_s0%|
000074c0  2b 6e 5f 6f 66 66 25 2c  6d 79 25 29 0d 32 8c 05  |+n_off%,my%).2..|
000074d0  e1 0d 32 96 04 0d 32 a0  13 dd 20 f2 73 65 74 5f  |..2...2... .set_|
000074e0  6e 5f 73 63 72 6f 6c 6c  0d 32 aa 23 f2 64 65 6c  |n_scroll.2.#.del|
000074f0  65 74 65 69 63 6f 6e 28  77 25 28 6e 6f 74 65 70  |eteicon(w%(notep|
00007500  61 64 25 29 2c 6e 5f 73  69 25 29 0d 32 b4 17 6e  |ad%),n_si%).2..n|
00007510  5f 73 34 3d 28 6e 5f 73  31 25 2f 6e 6f 74 65 73  |_s4=(n_s1%/notes|
00007520  25 29 0d 32 be 23 6e 5f  73 35 25 3d 6e 5f 73 30  |%).2.#n_s5%=n_s0|
00007530  25 2b 6e 5f 73 34 2a 28  74 68 69 73 5f 6e 6f 74  |%+n_s4*(this_not|
00007540  65 25 2d 31 29 0d 32 c8  14 21 71 25 3d 77 25 28  |e%-1).2..!q%=w%(|
00007550  6e 6f 74 65 70 61 64 25  29 0d 32 d2 0e 71 25 21  |notepad%).2..q%!|
00007560  34 3d 6e 5f 73 35 25 0d  32 dc 0e 71 25 21 38 3d  |4=n_s5%.2..q%!8=|
00007570  6e 5f 73 32 25 0d 32 e6  13 71 25 21 31 32 3d 71  |n_s2%.2..q%!12=q|
00007580  25 21 34 2b 6e 5f 73 34  0d 32 f0 0f 71 25 21 31  |%!4+n_s4.2..q%!1|
00007590  36 3d 6e 5f 73 33 25 0d  32 fa 0f 71 25 21 32 30  |6=n_s3%.2..q%!20|
000075a0  3d 6e 5f 73 66 25 0d 33  04 23 c8 99 22 57 69 6d  |=n_sf%.3.#.."Wim|
000075b0  70 5f 43 72 65 61 74 65  49 63 6f 6e 22 2c 2c 71  |p_CreateIcon",,q|
000075c0  25 20 b8 20 6e 5f 73 69  25 0d 33 0e 1d f2 72 65  |% . n_si%.3...re|
000075d0  64 6f 69 63 6f 6e 28 77  25 28 6e 6f 74 65 70 61  |doicon(w%(notepa|
000075e0  64 25 29 2c 39 29 0d 33  18 05 e1 0d 33 22 04 0d  |d%),9).3....3"..|
000075f0  33 2c 0c dd 20 f2 61 64  64 5f 6e 0d 33 36 15 e7  |3,.. .add_n.36..|
00007600  20 6e 6f 74 65 73 25 3c  6d 61 78 5f 6e 25 20 8c  | notes%<max_n% .|
00007610  0d 33 40 0f 20 20 6e 6f  74 65 73 25 2b 3d 31 0d  |.3@.  notes%+=1.|
00007620  33 4a 14 20 20 f2 73 65  74 5f 6e 28 6e 6f 74 65  |3J.  .set_n(note|
00007630  73 25 29 0d 33 54 10 20  20 6c 61 73 74 5f 6e 25  |s%).3T.  last_n%|
00007640  2b 3d 31 0d 33 5e 1c 20  20 6e 5f 6e 75 6d 25 28  |+=1.3^.  n_num%(|
00007650  6e 6f 74 65 73 25 29 3d  6c 61 73 74 5f 6e 25 0d  |notes%)=last_n%.|
00007660  33 68 21 20 20 f2 70 75  74 63 61 72 65 74 28 77  |3h!  .putcaret(w|
00007670  25 28 6e 6f 74 65 70 61  64 25 29 2c 31 2c 30 29  |%(notepad%),1,0)|
00007680  0d 33 72 05 cc 0d 33 7c  20 20 20 f2 72 65 70 6f  |.3r...3|   .repo|
00007690  72 74 28 22 54 6f 6f 20  6d 61 6e 79 20 6e 6f 74  |rt("Too many not|
000076a0  65 73 2e 22 29 0d 33 86  05 cd 0d 33 90 05 e1 0d  |es.").3....3....|
000076b0  33 9a 04 0d 33 a4 0f dd  20 f2 64 65 6c 65 74 65  |3...3... .delete|
000076c0  5f 6e 0d 33 ae 0c f2 62  6c 61 6e 6b 5f 6e 0d 33  |_n.3...blank_n.3|
000076d0  b8 14 74 65 6d 70 25 3d  74 68 69 73 5f 6e 6f 74  |..temp%=this_not|
000076e0  65 25 0d 33 c2 13 c8 95  20 74 65 6d 70 25 3c 6e  |e%.3.... temp%<n|
000076f0  6f 74 65 73 25 0d 33 cc  10 20 20 e3 20 69 25 3d  |otes%.3..  . i%=|
00007700  30 20 b8 20 35 0d 33 d6  29 20 20 20 20 6e 6f 74  |0 . 5.3.)    not|
00007710  65 24 28 74 65 6d 70 25  2c 69 25 29 3d 6e 6f 74  |e$(temp%,i%)=not|
00007720  65 24 28 74 65 6d 70 25  2b 31 2c 69 25 29 0d 33  |e$(temp%+1,i%).3|
00007730  e0 0a 20 20 ed 20 69 25  0d 33 ea 23 20 20 6e 5f  |..  . i%.3.#  n_|
00007740  6e 75 6d 25 28 74 65 6d  70 25 29 3d 6e 5f 6e 75  |num%(temp%)=n_nu|
00007750  6d 25 28 74 65 6d 70 25  2b 31 29 0d 33 f4 0e 20  |m%(temp%+1).3.. |
00007760  20 74 65 6d 70 25 2b 3d  31 0d 33 fe 05 ce 0d 34  | temp%+=1.3....4|
00007770  08 16 74 65 6d 70 25 3d  74 68 69 73 5f 6e 6f 74  |..temp%=this_not|
00007780  65 25 2d 31 0d 34 12 17  e7 20 74 65 6d 70 25 3d  |e%-1.4... temp%=|
00007790  30 20 8c 20 74 65 6d 70  25 3d 31 0d 34 1c 11 74  |0 . temp%=1.4..t|
000077a0  68 69 73 5f 6e 6f 74 65  25 3d 2d 31 0d 34 26 1a  |his_note%=-1.4&.|
000077b0  e7 20 6e 6f 74 65 73 25  3e 31 20 8c 20 6e 6f 74  |. notes%>1 . not|
000077c0  65 73 25 2d 3d 31 0d 34  30 11 f2 73 65 74 5f 6e  |es%-=1.40..set_n|
000077d0  28 74 65 6d 70 25 29 0d  34 3a 05 e1 0d 34 44 04  |(temp%).4:...4D.|
000077e0  0d 34 4e 19 dd 20 f2 72  65 6d 6f 76 65 5f 65 28  |.4N.. .remove_e(|
000077f0  6d 25 2c 64 25 2c 65 25  29 0d 34 58 19 6e 65 78  |m%,d%,e%).4X.nex|
00007800  74 25 3d 63 5f 66 69 72  73 74 25 28 6d 25 2c 64  |t%=c_first%(m%,d|
00007810  25 29 0d 34 62 10 e7 20  6e 65 78 74 25 3d 65 25  |%).4b.. next%=e%|
00007820  20 8c 0d 34 6c 21 20 20  63 5f 66 69 72 73 74 25  | ..4l!  c_first%|
00007830  28 6d 25 2c 64 25 29 3d  63 5f 6e 65 78 74 25 28  |(m%,d%)=c_next%(|
00007840  65 25 29 0d 34 76 05 cc  0d 34 80 1b 20 20 c8 95  |e%).4v...4..  ..|
00007850  20 63 5f 6e 65 78 74 25  28 6e 65 78 74 25 29 3c  | c_next%(next%)<|
00007860  3e 65 25 0d 34 8a 1c 20  20 20 20 6e 65 78 74 25  |>e%.4..    next%|
00007870  3d 63 5f 6e 65 78 74 25  28 6e 65 78 74 25 29 0d  |=c_next%(next%).|
00007880  34 94 07 20 20 ce 0d 34  9e 20 20 20 63 5f 6e 65  |4..  ..4.   c_ne|
00007890  78 74 25 28 6e 65 78 74  25 29 3d 63 5f 6e 65 78  |xt%(next%)=c_nex|
000078a0  74 25 28 65 25 29 0d 34  a8 05 cd 0d 34 b2 05 e1  |t%(e%).4....4...|
000078b0  0d 34 bc 04 0d 34 c6 19  dd 20 f2 69 6e 73 65 72  |.4...4... .inser|
000078c0  74 5f 65 28 6d 25 2c 64  25 2c 65 25 29 0d 34 d0  |t_e(m%,d%,e%).4.|
000078d0  0d 61 66 74 65 72 25 3d  2d 31 0d 34 da 19 6e 65  |.after%=-1.4..ne|
000078e0  78 74 25 3d 63 5f 66 69  72 73 74 25 28 6d 25 2c  |xt%=c_first%(m%,|
000078f0  64 25 29 0d 34 e4 12 63  5f 6e 65 78 74 25 28 65  |d%).4..c_next%(e|
00007900  25 29 3d 65 25 0d 34 ee  17 e7 20 63 5f 74 79 70  |%)=e%.4... c_typ|
00007910  65 25 28 65 25 29 80 32  35 36 20 8c 0d 34 f8 11  |e%(e%).256 ..4..|
00007920  20 20 c8 95 20 6e 65 78  74 25 3e 2d 31 0d 35 02  |  .. next%>-1.5.|
00007930  49 20 20 20 20 e7 20 63  5f 74 69 6d 65 25 28 65  |I    . c_time%(e|
00007940  25 29 3e 63 5f 74 69 6d  65 25 28 6e 65 78 74 25  |%)>c_time%(next%|
00007950  29 20 80 20 63 5f 74 79  70 65 25 28 6e 65 78 74  |) . c_type%(next|
00007960  25 29 3e 3d 32 35 36 20  8c 20 61 66 74 65 72 25  |%)>=256 . after%|
00007970  3d 6e 65 78 74 25 0d 35  0c 1c 20 20 20 20 6e 65  |=next%.5..    ne|
00007980  78 74 25 3d 63 5f 6e 65  78 74 25 28 6e 65 78 74  |xt%=c_next%(next|
00007990  25 29 0d 35 16 07 20 20  ce 0d 35 20 05 cc 0d 35  |%).5..  ..5 ...5|
000079a0  2a 11 20 20 c8 95 20 6e  65 78 74 25 3e 2d 31 0d  |*.  .. next%>-1.|
000079b0  35 34 33 20 20 20 20 e7  20 63 5f 74 79 70 65 25  |543    . c_type%|
000079c0  28 6e 65 78 74 25 29 3e  63 5f 74 79 70 65 25 28  |(next%)>c_type%(|
000079d0  65 25 29 20 8c 20 61 66  74 65 72 25 3d 6e 65 78  |e%) . after%=nex|
000079e0  74 25 0d 35 3e 1c 20 20  20 20 6e 65 78 74 25 3d  |t%.5>.    next%=|
000079f0  63 5f 6e 65 78 74 25 28  6e 65 78 74 25 29 0d 35  |c_next%(next%).5|
00007a00  48 07 20 20 ce 0d 35 52  05 cd 0d 35 5c 11 e7 20  |H.  ..5R...5\.. |
00007a10  61 66 74 65 72 25 3d 2d  31 20 8c 0d 35 66 24 20  |after%=-1 ..5f$ |
00007a20  20 c8 94 20 63 5f 66 69  72 73 74 25 28 6d 25 2c  | .. c_first%(m%,|
00007a30  64 25 29 2c 63 5f 6e 65  78 74 25 28 65 25 29 0d  |d%),c_next%(e%).|
00007a40  35 70 05 cc 0d 35 7a 24  20 20 c8 94 20 63 5f 6e  |5p...5z$  .. c_n|
00007a50  65 78 74 25 28 65 25 29  2c 63 5f 6e 65 78 74 25  |ext%(e%),c_next%|
00007a60  28 61 66 74 65 72 25 29  0d 35 84 05 cd 0d 35 8e  |(after%).5....5.|
00007a70  10 65 5f 63 68 61 6e 67  65 64 25 3d b9 0d 35 98  |.e_changed%=..5.|
00007a80  05 e1 0d 35 a2 04 0d 35  ac 14 dd 20 f2 6d 61 72  |...5...5... .mar|
00007a90  6b 5f 62 69 72 74 68 64  61 79 0d 35 b6 1e 73 74  |k_birthday.5..st|
00007aa0  24 3d 61 24 28 74 68 69  73 5f 6e 61 6d 65 25 2c  |$=a$(this_name%,|
00007ab0  64 6f 62 29 2b 22 2e 22  0d 35 c0 18 64 25 3d a4  |dob)+".".5..d%=.|
00007ac0  6e 65 78 74 5f 6e 75 6d  62 65 72 28 73 74 24 29  |next_number(st$)|
00007ad0  0d 35 ca 18 6d 25 3d a4  6e 65 78 74 5f 6e 75 6d  |.5..m%=.next_num|
00007ae0  62 65 72 28 73 74 24 29  0d 35 d4 25 e7 20 64 25  |ber(st$).5.%. d%|
00007af0  3e 3d 31 20 80 20 64 25  3c 3d 33 31 20 80 20 6d  |>=1 . d%<=31 . m|
00007b00  25 3e 3d 31 20 80 20 6d  25 3c 3d 31 32 0d 35 de  |%>=1 . m%<=12.5.|
00007b10  21 6d 25 3d 28 28 31 32  2b 6d 25 2d 74 68 69 73  |!m%=((12+m%-this|
00007b20  5f 6d 6f 6e 74 68 25 29  83 31 32 29 2b 31 0d 35  |_month%).12)+1.5|
00007b30  e8 16 e7 20 63 5f 6c 61  73 74 25 3c 63 5f 6d 61  |... c_last%<c_ma|
00007b40  78 25 20 8c 0d 35 f2 10  20 20 63 5f 6c 61 73 74  |x% ..5..  c_last|
00007b50  25 2b 3d 31 0d 35 fc 57  20 20 63 5f 65 6e 74 72  |%+=1.5.W  c_entr|
00007b60  79 24 28 63 5f 6c 61 73  74 25 29 3d c0 61 24 28  |y$(c_last%)=.a$(|
00007b70  74 68 69 73 5f 6e 61 6d  65 25 2c 6e 61 6d 65 29  |this_name%,name)|
00007b80  2c a7 61 24 28 74 68 69  73 5f 6e 61 6d 65 25 2c  |,.a$(this_name%,|
00007b90  6e 61 6d 65 29 2c 22 20  22 29 2d 31 29 2b 22 27  |name)," ")-1)+"'|
00007ba0  73 20 62 69 72 74 68 64  61 79 22 0d 36 06 18 20  |s birthday".6.. |
00007bb0  20 63 5f 74 79 70 65 25  28 63 5f 6c 61 73 74 25  | c_type%(c_last%|
00007bc0  29 3d 31 0d 36 10 18 20  20 63 5f 74 69 6d 65 25  |)=1.6..  c_time%|
00007bd0  28 63 5f 6c 61 73 74 25  29 3d 30 0d 36 1a 2b 20  |(c_last%)=0.6.+ |
00007be0  20 63 5f 6c 69 6e 6b 25  28 30 2c 63 5f 6c 61 73  | c_link%(0,c_las|
00007bf0  74 25 29 3d 61 5f 6e 75  6d 25 28 74 68 69 73 5f  |t%)=a_num%(this_|
00007c00  6e 61 6d 65 25 29 0d 36  24 1a 20 20 63 5f 6c 69  |name%).6$.  c_li|
00007c10  6e 6b 25 28 31 2c 63 5f  6c 61 73 74 25 29 3d 30  |nk%(1,c_last%)=0|
00007c20  0d 36 2e 1e 20 20 f2 69  6e 73 65 72 74 5f 65 28  |.6..  .insert_e(|
00007c30  6d 25 2c 64 25 2c 63 5f  6c 61 73 74 25 29 0d 36  |m%,d%,c_last%).6|
00007c40  38 49 20 20 e7 20 64 5f  6d 6f 6e 74 68 25 3d 6d  |8I  . d_month%=m|
00007c50  25 20 80 20 64 5f 64 61  74 65 25 3d 64 25 20 80  |% . d_date%=d% .|
00007c60  20 61 63 74 69 76 65 25  28 64 61 79 25 29 20 8c  | active%(day%) .|
00007c70  20 f2 66 6f 72 63 65 72  65 64 72 61 77 28 77 25  | .forceredraw(w%|
00007c80  28 64 61 79 25 29 29 0d  36 42 12 20 20 63 5f 63  |(day%)).6B.  c_c|
00007c90  68 61 6e 67 65 64 25 3d  b9 0d 36 4c 14 20 20 f2  |hanged%=..6L.  .|
00007ca0  72 65 64 6f 5f 63 28 6d  25 2c 64 25 29 0d 36 56  |redo_c(m%,d%).6V|
00007cb0  05 cc 0d 36 60 26 20 20  f2 72 65 70 6f 72 74 28  |...6`&  .report(|
00007cc0  22 42 6f 6f 6b 20 6f 66  20 64 61 79 73 20 69 73  |"Book of days is|
00007cd0  20 66 75 6c 6c 2e 22 29  0d 36 6a 05 cd 0d 36 74  | full.").6j...6t|
00007ce0  05 e1 0d 36 7e 04 0d 36  88 0c dd 20 f2 61 64 64  |...6~..6... .add|
00007cf0  5f 65 0d 36 92 16 e7 20  63 5f 6c 61 73 74 25 3c  |_e.6... c_last%<|
00007d00  63 5f 6d 61 78 25 20 8c  0d 36 9c 10 20 20 63 5f  |c_max% ..6..  c_|
00007d10  6c 61 73 74 25 2b 3d 31  0d 36 a6 14 20 20 e7 20  |last%+=1.6..  . |
00007d20  64 5f 69 74 65 6d 73 25  3d 30 20 8c 0d 36 b0 2a  |d_items%=0 ..6.*|
00007d30  20 20 20 20 63 5f 66 69  72 73 74 25 28 64 5f 6d  |    c_first%(d_m|
00007d40  6f 6e 74 68 25 2c 64 5f  64 61 74 65 25 29 3d 63  |onth%,d_date%)=c|
00007d50  5f 6c 61 73 74 25 0d 36  ba 07 20 20 cc 0d 36 c4  |_last%.6..  ..6.|
00007d60  28 20 20 20 20 6c 61 73  74 25 3d 63 5f 66 69 72  |(    last%=c_fir|
00007d70  73 74 25 28 64 5f 6d 6f  6e 74 68 25 2c 64 5f 64  |st%(d_month%,d_d|
00007d80  61 74 65 25 29 0d 36 ce  1d 20 20 20 20 c8 95 20  |ate%).6..    .. |
00007d90  63 5f 6e 65 78 74 25 28  6c 61 73 74 25 29 3c 3e  |c_next%(last%)<>|
00007da0  2d 31 0d 36 d8 1e 20 20  20 20 20 20 6c 61 73 74  |-1.6..      last|
00007db0  25 3d 63 5f 6e 65 78 74  25 28 6c 61 73 74 25 29  |%=c_next%(last%)|
00007dc0  0d 36 e2 09 20 20 20 20  ce 0d 36 ec 1e 20 20 20  |.6..    ..6..   |
00007dd0  20 63 5f 6e 65 78 74 25  28 6c 61 73 74 25 29 3d  | c_next%(last%)=|
00007de0  63 5f 6c 61 73 74 25 0d  36 f6 07 20 20 cd 0d 37  |c_last%.6..  ..7|
00007df0  00 1a 20 20 63 5f 65 6e  74 72 79 24 28 63 5f 6c  |..  c_entry$(c_l|
00007e00  61 73 74 25 29 3d 22 22  0d 37 0a 18 20 20 63 5f  |ast%)="".7..  c_|
00007e10  74 79 70 65 25 28 63 5f  6c 61 73 74 25 29 3d 30  |type%(c_last%)=0|
00007e20  0d 37 14 18 20 20 63 5f  74 69 6d 65 25 28 63 5f  |.7..  c_time%(c_|
00007e30  6c 61 73 74 25 29 3d 30  0d 37 1e 19 20 20 63 5f  |last%)=0.7..  c_|
00007e40  6e 65 78 74 25 28 63 5f  6c 61 73 74 25 29 3d 2d  |next%(c_last%)=-|
00007e50  31 0d 37 28 1a 20 20 63  5f 6c 69 6e 6b 25 28 30  |1.7(.  c_link%(0|
00007e60  2c 63 5f 6c 61 73 74 25  29 3d 30 0d 37 32 1a 20  |,c_last%)=0.72. |
00007e70  20 63 5f 6c 69 6e 6b 25  28 31 2c 63 5f 6c 61 73  | c_link%(1,c_las|
00007e80  74 25 29 3d 30 0d 37 3c  15 20 20 f2 73 65 74 5f  |t%)=0.7<.  .set_|
00007e90  65 28 63 5f 6c 61 73 74  25 29 0d 37 46 0d 20 20  |e(c_last%).7F.  |
00007ea0  f2 63 61 6c 63 5f 64 0d  37 50 05 cc 0d 37 5a 26  |.calc_d.7P...7Z&|
00007eb0  20 20 f2 72 65 70 6f 72  74 28 22 42 6f 6f 6b 20  |  .report("Book |
00007ec0  6f 66 20 64 61 79 73 20  69 73 20 66 75 6c 6c 2e  |of days is full.|
00007ed0  22 29 0d 37 64 05 cd 0d  37 6e 05 e1 0d 37 78 04  |").7d...7n...7x.|
00007ee0  0d 37 82 0c dd 20 f2 67  65 74 5f 65 0d 37 8c 10  |.7... .get_e.7..|
00007ef0  65 5f 63 68 61 6e 67 65  64 25 3d a3 0d 37 96 22  |e_changed%=..7."|
00007f00  6f 5f 65 6e 74 72 79 24  3d 63 5f 65 6e 74 72 79  |o_entry$=c_entry|
00007f10  24 28 74 68 69 73 5f 65  6e 74 72 79 25 29 0d 37  |$(this_entry%).7|
00007f20  a0 20 6f 5f 74 69 6d 65  25 3d 63 5f 74 69 6d 65  |. o_time%=c_time|
00007f30  25 28 74 68 69 73 5f 65  6e 74 72 79 25 29 0d 37  |%(this_entry%).7|
00007f40  aa 20 6f 5f 74 79 70 65  25 3d 63 5f 74 79 70 65  |. o_type%=c_type|
00007f50  25 28 74 68 69 73 5f 65  6e 74 72 79 25 29 0d 37  |%(this_entry%).7|
00007f60  b4 31 63 5f 65 6e 74 72  79 24 28 74 68 69 73 5f  |.1c_entry$(this_|
00007f70  65 6e 74 72 79 25 29 3d  a4 69 63 6f 6e 74 65 78  |entry%)=.icontex|
00007f80  74 28 77 25 28 65 6e 74  72 79 25 29 2c 30 29 0d  |t(w%(entry%),0).|
00007f90  37 be 0e e3 20 69 25 3d  30 20 b8 20 37 0d 37 c8  |7... i%=0 . 7.7.|
00007fa0  43 20 20 e7 20 a4 73 65  6c 65 63 74 65 64 28 77  |C  . .selected(w|
00007fb0  25 28 65 6e 74 72 79 25  29 2c 65 5f 69 63 6f 6e  |%(entry%),e_icon|
00007fc0  25 28 69 25 29 29 20 8c  20 63 5f 74 79 70 65 25  |%(i%)) . c_type%|
00007fd0  28 74 68 69 73 5f 65 6e  74 72 79 25 29 3d 69 25  |(this_entry%)=i%|
00007fe0  0d 37 d2 08 ed 20 69 25  0d 37 dc 5a e7 20 a4 73  |.7... i%.7.Z. .s|
00007ff0  65 6c 65 63 74 65 64 28  77 25 28 65 6e 74 72 79  |elected(w%(entry|
00008000  25 29 2c 31 34 29 20 8c  20 63 5f 74 79 70 65 25  |%),14) . c_type%|
00008010  28 74 68 69 73 5f 65 6e  74 72 79 25 29 3d 63 5f  |(this_entry%)=c_|
00008020  74 79 70 65 25 28 74 68  69 73 5f 65 6e 74 72 79  |type%(this_entry|
00008030  25 29 84 32 35 36 20 8b  20 65 5f 74 69 6d 65 25  |%).256 . e_time%|
00008040  3d 30 0d 37 e6 20 63 5f  74 69 6d 65 25 28 74 68  |=0.7. c_time%(th|
00008050  69 73 5f 65 6e 74 72 79  25 29 3d 65 5f 74 69 6d  |is_entry%)=e_tim|
00008060  65 25 0d 37 f0 45 e7 20  6f 5f 74 69 6d 65 25 3c  |e%.7.E. o_time%<|
00008070  3e 63 5f 74 69 6d 65 25  28 74 68 69 73 5f 65 6e  |>c_time%(this_en|
00008080  74 72 79 25 29 20 84 20  6f 5f 74 79 70 65 25 3c  |try%) . o_type%<|
00008090  3e 63 5f 74 79 70 65 25  28 74 68 69 73 5f 65 6e  |>c_type%(this_en|
000080a0  74 72 79 25 29 20 8c 0d  37 fa 2d 20 20 f2 72 65  |try%) ..7.-  .re|
000080b0  6d 6f 76 65 5f 65 28 64  5f 6d 6f 6e 74 68 25 2c  |move_e(d_month%,|
000080c0  64 5f 64 61 74 65 25 2c  74 68 69 73 5f 65 6e 74  |d_date%,this_ent|
000080d0  72 79 25 29 0d 38 04 2d  20 20 f2 69 6e 73 65 72  |ry%).8.-  .inser|
000080e0  74 5f 65 28 64 5f 6d 6f  6e 74 68 25 2c 64 5f 64  |t_e(d_month%,d_d|
000080f0  61 74 65 25 2c 74 68 69  73 5f 65 6e 74 72 79 25  |ate%,this_entry%|
00008100  29 0d 38 0e 05 cc 0d 38  18 36 20 20 e7 20 6f 5f  |).8....8.6  . o_|
00008110  65 6e 74 72 79 24 3c 3e  63 5f 65 6e 74 72 79 24  |entry$<>c_entry$|
00008120  28 74 68 69 73 5f 65 6e  74 72 79 25 29 20 8c 20  |(this_entry%) . |
00008130  65 5f 63 68 61 6e 67 65  64 25 3d b9 0d 38 22 05  |e_changed%=..8".|
00008140  cd 0d 38 2c 12 e7 20 65  5f 63 68 61 6e 67 65 64  |..8,.. e_changed|
00008150  25 20 8c 0d 38 36 1c 20  20 f2 66 6f 72 63 65 72  |% ..86.  .forcer|
00008160  65 64 72 61 77 28 77 25  28 64 61 79 25 29 29 0d  |edraw(w%(day%)).|
00008170  38 40 1f 20 20 f2 72 65  64 6f 5f 63 28 64 5f 6d  |8@.  .redo_c(d_m|
00008180  6f 6e 74 68 25 2c 64 5f  64 61 74 65 25 29 0d 38  |onth%,d_date%).8|
00008190  4a 12 20 20 63 5f 63 68  61 6e 67 65 64 25 3d b9  |J.  c_changed%=.|
000081a0  0d 38 54 05 cd 0d 38 5e  32 e7 20 64 5f 6d 6f 6e  |.8T...8^2. d_mon|
000081b0  74 68 25 3d 31 20 80 20  64 5f 64 61 74 65 25 3d  |th%=1 . d_date%=|
000081c0  74 68 69 73 5f 64 61 74  65 25 20 8c 20 f2 63 5f  |this_date% . .c_|
000081d0  61 6c 61 72 6d 73 32 0d  38 68 05 e1 0d 38 72 04  |alarms2.8h...8r.|
000081e0  0d 38 7c 12 dd 20 f2 73  65 74 5f 65 28 6e 65 77  |.8|.. .set_e(new|
000081f0  25 29 0d 38 86 10 e7 20  6e 65 77 25 3c 3e 2d 31  |%).8... new%<>-1|
00008200  20 8c 0d 38 90 2f 20 20  e7 20 61 63 74 69 76 65  | ..8./  . active|
00008210  25 28 65 6e 74 72 79 25  29 3d a3 20 8c 20 f2 6f  |%(entry%)=. . .o|
00008220  70 65 6e 75 70 28 77 25  28 65 6e 74 72 79 25 29  |penup(w%(entry%)|
00008230  29 0d 38 9a 2f 20 20 f2  73 65 74 69 63 6f 6e 74  |).8./  .seticont|
00008240  65 78 74 28 77 25 28 65  6e 74 72 79 25 29 2c 30  |ext(w%(entry%),0|
00008250  2c 63 5f 65 6e 74 72 79  24 28 6e 65 77 25 29 29  |,c_entry$(new%))|
00008260  0d 38 a4 2d 20 20 f2 70  75 74 63 61 72 65 74 28  |.8.-  .putcaret(|
00008270  77 25 28 65 6e 74 72 79  25 29 2c 30 2c a9 63 5f  |w%(entry%),0,.c_|
00008280  65 6e 74 72 79 24 28 6e  65 77 25 29 29 0d 38 ae  |entry$(new%)).8.|
00008290  20 20 20 f2 73 65 74 5f  65 5f 74 69 6d 65 28 63  |   .set_e_time(c|
000082a0  5f 74 69 6d 65 25 28 6e  65 77 25 29 29 0d 38 b8  |_time%(new%)).8.|
000082b0  10 20 20 e3 20 69 25 3d  30 20 b8 20 37 0d 38 c2  |.  . i%=0 . 7.8.|
000082c0  44 20 20 20 20 f2 73 65  6c 65 63 74 69 63 6f 6e  |D    .selecticon|
000082d0  28 77 25 28 65 6e 74 72  79 25 29 2c 65 5f 69 63  |(w%(entry%),e_ic|
000082e0  6f 6e 25 28 69 25 29 2c  28 69 25 3d 28 63 5f 74  |on%(i%),(i%=(c_t|
000082f0  79 70 65 25 28 6e 65 77  25 29 80 32 35 35 29 29  |ype%(new%).255))|
00008300  29 0d 38 cc 0a 20 20 ed  20 69 25 0d 38 d6 32 20  |).8..  . i%.8.2 |
00008310  20 f2 73 65 6c 65 63 74  69 63 6f 6e 28 77 25 28  | .selecticon(w%(|
00008320  65 6e 74 72 79 25 29 2c  31 34 2c 63 5f 74 79 70  |entry%),14,c_typ|
00008330  65 25 28 6e 65 77 25 29  80 32 35 36 29 0d 38 e0  |e%(new%).256).8.|
00008340  05 cc 0d 38 ea 1e 20 20  f2 63 6c 6f 73 65 77 69  |...8..  .closewi|
00008350  6e 64 6f 77 28 77 25 28  65 6e 74 72 79 25 29 29  |ndow(w%(entry%))|
00008360  0d 38 f4 05 cd 0d 38 fe  14 74 68 69 73 5f 65 6e  |.8....8..this_en|
00008370  74 72 79 25 3d 6e 65 77  25 0d 39 08 05 e1 0d 39  |try%=new%.9....9|
00008380  12 04 0d 39 1c 15 dd 20  f2 73 65 74 5f 65 5f 74  |...9... .set_e_t|
00008390  69 6d 65 28 65 25 29 0d  39 26 28 f2 73 65 74 69  |ime(e%).9&(.seti|
000083a0  63 6f 6e 74 65 78 74 28  77 25 28 65 6e 74 72 79  |context(w%(entry|
000083b0  25 29 2c 37 2c a4 74 69  6d 65 28 65 25 29 29 0d  |%),7,.time(e%)).|
000083c0  39 30 0e 65 5f 74 69 6d  65 25 3d 65 25 0d 39 3a  |90.e_time%=e%.9:|
000083d0  05 e1 0d 39 44 04 0d 39  4e 12 dd 20 a4 74 69 6d  |...9D..9N.. .tim|
000083e0  65 28 74 69 6d 65 25 29  0d 39 58 30 3d c2 22 30  |e(time%).9X0=."0|
000083f0  22 2b c3 28 74 69 6d 65  25 81 36 30 29 2c 32 29  |"+.(time%.60),2)|
00008400  2b 22 3a 22 2b c2 22 30  22 2b c3 28 74 69 6d 65  |+":"+."0"+.(time|
00008410  25 83 36 30 29 2c 32 29  0d 39 62 04 0d 39 6c 1e  |%.60),2).9b..9l.|
00008420  dd 20 a4 64 61 79 28 64  61 74 65 25 2c 6d 6f 6e  |. .day(date%,mon|
00008430  74 68 25 2c 79 65 61 72  25 29 0d 39 76 42 3d 28  |th%,year%).9vB=(|
00008440  64 61 74 65 25 2b 79 65  61 72 25 2b 28 79 65 61  |date%+year%+(yea|
00008450  72 25 81 34 29 2b 6d 6f  25 28 6d 6f 6e 74 68 25  |r%.4)+mo%(month%|
00008460  29 2b 28 79 65 61 72 25  83 34 3d 30 20 80 20 6d  |)+(year%.4=0 . m|
00008470  6f 6e 74 68 25 3c 3d 32  29 29 83 37 0d 39 80 04  |onth%<=2)).7.9..|
00008480  0d 39 8a 1f dd 20 a4 64  61 74 65 28 64 61 74 65  |.9... .date(date|
00008490  25 2c 6d 6f 6e 74 68 25  2c 79 65 61 72 25 29 0d  |%,month%,year%).|
000084a0  39 94 1b e7 20 79 65 61  72 25 83 34 3d 30 20 8c  |9... year%.4=0 .|
000084b0  20 6d 6c 25 28 32 29 3d  32 39 0d 39 9e 19 e7 20  | ml%(2)=29.9... |
000084c0  64 61 74 65 25 3c 31 20  8c 20 6d 6f 6e 74 68 25  |date%<1 . month%|
000084d0  2d 3d 31 0d 39 a8 11 e7  20 6d 6f 6e 74 68 25 3e  |-=1.9... month%>|
000084e0  31 32 20 8c 0d 39 b2 10  20 20 6d 6f 6e 74 68 25  |12 ..9..  month%|
000084f0  2d 3d 31 32 0d 39 bc 0e  20 20 79 65 61 72 25 2b  |-=12.9..  year%+|
00008500  3d 31 0d 39 c6 05 cd 0d  39 d0 10 e7 20 6d 6f 6e  |=1.9....9... mon|
00008510  74 68 25 3c 31 20 8c 0d  39 da 10 20 20 6d 6f 6e  |th%<1 ..9..  mon|
00008520  74 68 25 2b 3d 31 32 0d  39 e4 0e 20 20 79 65 61  |th%+=12.9..  yea|
00008530  72 25 2d 3d 31 0d 39 ee  05 cd 0d 39 f8 21 e7 20  |r%-=1.9....9.!. |
00008540  64 61 74 65 25 3c 31 20  8c 20 64 61 74 65 25 3d  |date%<1 . date%=|
00008550  6d 6c 25 28 6d 6f 6e 74  68 25 29 0d 3a 02 54 3d  |ml%(month%).:.T=|
00008560  64 61 79 24 28 a4 64 61  79 28 64 61 74 65 25 2c  |day$(.day(date%,|
00008570  6d 6f 6e 74 68 25 2c 79  65 61 72 25 29 29 2b 22  |month%,year%))+"|
00008580  20 22 2b c3 28 64 61 74  65 25 29 2b 22 20 22 2b  | "+.(date%)+" "+|
00008590  c0 6d 6f 6e 74 68 24 28  6d 6f 6e 74 68 25 29 2c  |.month$(month%),|
000085a0  33 29 2b 22 20 22 2b c3  28 79 65 61 72 25 29 0d  |3)+" "+.(year%).|
000085b0  3a 0c 04 0d 3a 16 15 dd  20 f2 6e 65 77 5f 64 61  |:...:... .new_da|
000085c0  79 28 64 25 2c 6d 25 29  0d 3a 20 22 e7 20 64 25  |y(d%,m%).: ". d%|
000085d0  3c 3e 64 5f 64 61 74 65  25 20 84 20 6d 25 3c 3e  |<>d_date% . m%<>|
000085e0  64 5f 6d 6f 6e 74 68 25  20 8c 0d 3a 2a 11 20 20  |d_month% ..:*.  |
000085f0  64 5f 6d 6f 6e 74 68 25  3d 6d 25 0d 3a 34 10 20  |d_month%=m%.:4. |
00008600  20 64 5f 64 61 74 65 25  3d 64 25 0d 3a 3e 0d 20  | d_date%=d%.:>. |
00008610  20 f2 63 61 6c 63 5f 64  0d 3a 48 3e 20 20 74 5f  | .calc_d.:H>  t_|
00008620  64 61 74 65 24 3d a4 64  61 74 65 28 64 5f 64 61  |date$=.date(d_da|
00008630  74 65 25 2c 64 5f 6d 6f  6e 74 68 25 2b 74 68 69  |te%,d_month%+thi|
00008640  73 5f 6d 6f 6e 74 68 25  2d 31 2c 74 68 69 73 5f  |s_month%-1,this_|
00008650  79 65 61 72 25 29 0d 3a  52 21 20 20 f2 6e 65 77  |year%).:R!  .new|
00008660  74 69 74 6c 65 28 77 25  28 64 61 79 25 29 2c 74  |title(w%(day%),t|
00008670  5f 64 61 74 65 24 29 0d  3a 5c 32 20 20 e7 20 61  |_date$).:\2  . a|
00008680  63 74 69 76 65 25 28 65  6e 74 72 79 25 29 20 8c  |ctive%(entry%) .|
00008690  20 f2 63 6c 6f 73 65 77  69 6e 64 6f 77 28 77 25  | .closewindow(w%|
000086a0  28 65 6e 74 72 79 25 29  29 0d 3a 66 23 20 20 f2  |(entry%)).:f#  .|
000086b0  6e 65 77 74 69 74 6c 65  28 77 25 28 65 6e 74 72  |newtitle(w%(entr|
000086c0  79 25 29 2c 74 5f 64 61  74 65 24 29 0d 3a 70 05  |y%),t_date$).:p.|
000086d0  cd 0d 3a 7a 15 f2 6f 70  65 6e 75 70 28 77 25 28  |..:z..openup(w%(|
000086e0  64 61 79 25 29 29 0d 3a  84 05 e1 0d 3a 8e 04 0d  |day%)).:....:...|
000086f0  3a 98 14 dd 20 f2 72 65  64 6f 5f 63 28 6d 25 2c  |:... .redo_c(m%,|
00008700  64 25 29 0d 3a a2 13 64  25 3d 64 25 2d 31 2b 73  |d%).:..d%=d%-1+s|
00008710  64 25 28 6d 25 29 0d 3a  ac 60 f2 72 65 64 6f 62  |d%(m%).:.`.redob|
00008720  6f 78 28 77 25 28 79 65  61 72 25 29 2c 6d 25 2a  |ox(w%(year%),m%*|
00008730  63 5f 77 69 64 74 68 25  2c 2d 28 64 25 2a 63 5f  |c_width%,-(d%*c_|
00008740  68 65 69 67 68 74 25 2b  63 5f 68 65 69 67 68 74  |height%+c_height|
00008750  25 29 2c 6d 25 2a 63 5f  77 69 64 74 68 25 2b 63  |%),m%*c_width%+c|
00008760  5f 77 69 64 74 68 25 2c  2d 64 25 2a 63 5f 68 65  |_width%,-d%*c_he|
00008770  69 67 68 74 25 29 0d 3a  b6 05 e1 0d 3a c0 04 0d  |ight%).:....:...|
00008780  3a ca 0d dd 20 f2 63 61  6c 63 5f 64 0d 3a d4 0e  |:... .calc_d.:..|
00008790  64 5f 69 74 65 6d 73 25  3d 30 0d 3a de 24 6e 65  |d_items%=0.:.$ne|
000087a0  78 74 25 3d 63 5f 66 69  72 73 74 25 28 64 5f 6d  |xt%=c_first%(d_m|
000087b0  6f 6e 74 68 25 2c 64 5f  64 61 74 65 25 29 0d 3a  |onth%,d_date%).:|
000087c0  e8 10 c8 95 20 6e 65 78  74 25 3c 3e 2d 31 0d 3a  |.... next%<>-1.:|
000087d0  f2 11 20 20 64 5f 69 74  65 6d 73 25 2b 3d 31 0d  |..  d_items%+=1.|
000087e0  3a fc 1a 20 20 6e 65 78  74 25 3d 63 5f 6e 65 78  |:..  next%=c_nex|
000087f0  74 25 28 6e 65 78 74 25  29 0d 3b 06 05 ce 0d 3b  |t%(next%).;....;|
00008800  10 4b f2 73 65 74 77 69  6e 64 6f 77 65 78 74 65  |.K.setwindowexte|
00008810  6e 74 28 77 25 28 64 61  79 25 29 2c 21 64 5f 69  |nt(w%(day%),!d_i|
00008820  63 6f 6e 25 2d 38 2c 2d  64 5f 68 65 69 67 68 74  |con%-8,-d_height|
00008830  25 2a 64 5f 69 74 65 6d  73 25 2c 64 5f 69 63 6f  |%*d_items%,d_ico|
00008840  6e 25 21 38 2b 38 2c 30  29 0d 3b 1a 15 f2 72 65  |n%!8+8,0).;...re|
00008850  6f 70 65 6e 28 77 25 28  64 61 79 25 29 29 0d 3b  |open(w%(day%)).;|
00008860  24 05 e1 0d 3b 2e 04 0d  3b 38 16 dd 20 f2 63 61  |$...;...;8.. .ca|
00008870  6c 63 5f 64 5f 6f 72 64  73 28 65 25 29 0d 3b 42  |lc_d_ords(e%).;B|
00008880  1f 64 5f 69 63 6f 6e 25  21 34 3d 2d 28 65 25 2b  |.d_icon%!4=-(e%+|
00008890  31 29 2a 64 5f 68 65 69  67 68 74 25 0d 3b 4c 22  |1)*d_height%.;L"|
000088a0  64 5f 69 63 6f 6e 25 21  31 32 3d 64 5f 69 63 6f  |d_icon%!12=d_ico|
000088b0  6e 25 21 34 2b 64 5f 68  65 69 67 68 74 25 0d 3b  |n%!4+d_height%.;|
000088c0  56 05 e1 0d 3b 60 04 0d  3b 6a 0d dd 20 f2 6c 6f  |V...;`..;j.. .lo|
000088d0  61 64 5f 63 0d 3b 74 18  63 5f 66 69 6c 65 24 3d  |ad_c.;t.c_file$=|
000088e0  64 69 72 24 2b 22 2e 44  61 79 73 22 0d 3b 7e 1b  |dir$+".Days".;~.|
000088f0  e7 20 a4 66 69 6c 65 65  78 69 73 74 28 63 5f 66  |. .fileexist(c_f|
00008900  69 6c 65 24 29 20 8c 0d  3b 88 18 20 20 69 6e 5f  |ile$) ..;..  in_|
00008910  66 69 6c 65 3d 8e 28 63  5f 66 69 6c 65 24 29 0d  |file=.(c_file$).|
00008920  3b 92 25 20 20 6d 66 25  3d 74 68 69 73 5f 6d 6f  |;.%  mf%=this_mo|
00008930  6e 74 68 25 2b 74 68 69  73 5f 79 65 61 72 25 2a  |nth%+this_year%*|
00008940  31 32 2d 31 0d 3b 9c 13  20 20 c8 95 20 ac c5 23  |12-1.;..  .. ..#|
00008950  69 6e 5f 66 69 6c 65 0d  3b a6 14 20 20 20 20 e8  |in_file.;..    .|
00008960  23 69 6e 5f 66 69 6c 65  2c 6d 25 0d 3b b0 14 20  |#in_file,m%.;.. |
00008970  20 20 20 e8 23 69 6e 5f  66 69 6c 65 2c 64 25 0d  |   .#in_file,d%.|
00008980  3b ba 19 20 20 20 20 e8  23 69 6e 5f 66 69 6c 65  |;..    .#in_file|
00008990  2c 63 6f 6c 6f 75 72 25  0d 3b c4 16 20 20 20 20  |,colour%.;..    |
000089a0  e8 23 69 6e 5f 66 69 6c  65 2c 65 6e 64 25 0d 3b  |.#in_file,end%.;|
000089b0  ce 0f 20 20 20 20 6d 25  2d 3d 6d 66 25 0d 3b d8  |..    m%-=mf%.;.|
000089c0  1a 20 20 20 20 e7 20 6d  25 3e 3d 30 20 80 20 6d  |.    . m%>=0 . m|
000089d0  25 3c 3d 31 32 20 8c 0d  3b e2 22 20 20 20 20 20  |%<=12 ..;."     |
000089e0  20 63 5f 63 6f 6c 6f 75  72 25 28 6d 25 2c 64 25  | c_colour%(m%,d%|
000089f0  29 3d 63 6f 6c 6f 75 72  25 0d 3b ec 12 20 20 20  |)=colour%.;..   |
00008a00  20 20 20 70 72 65 76 25  3d 2d 31 0d 3b f6 1c 20  |   prev%=-1.;.. |
00008a10  20 20 20 20 20 c8 95 20  8f 23 69 6e 5f 66 69 6c  |     .. .#in_fil|
00008a20  65 3c 3e 65 6e 64 25 0d  3c 00 16 20 20 20 20 20  |e<>end%.<..     |
00008a30  20 20 20 63 5f 6c 61 73  74 25 2b 3d 31 0d 3c 0a  |   c_last%+=1.<.|
00008a40  27 20 20 20 20 20 20 20  20 e8 23 69 6e 5f 66 69  |'        .#in_fi|
00008a50  6c 65 2c 63 5f 65 6e 74  72 79 24 28 63 5f 6c 61  |le,c_entry$(c_la|
00008a60  73 74 25 29 0d 3c 14 26  20 20 20 20 20 20 20 20  |st%).<.&        |
00008a70  e8 23 69 6e 5f 66 69 6c  65 2c 63 5f 74 79 70 65  |.#in_file,c_type|
00008a80  25 28 63 5f 6c 61 73 74  25 29 0d 3c 1e 26 20 20  |%(c_last%).<.&  |
00008a90  20 20 20 20 20 20 e8 23  69 6e 5f 66 69 6c 65 2c  |      .#in_file,|
00008aa0  63 5f 74 69 6d 65 25 28  63 5f 6c 61 73 74 25 29  |c_time%(c_last%)|
00008ab0  0d 3c 28 28 20 20 20 20  20 20 20 20 e8 23 69 6e  |.<((        .#in|
00008ac0  5f 66 69 6c 65 2c 63 5f  6c 69 6e 6b 25 28 30 2c  |_file,c_link%(0,|
00008ad0  63 5f 6c 61 73 74 25 29  0d 3c 32 28 20 20 20 20  |c_last%).<2(    |
00008ae0  20 20 20 20 e8 23 69 6e  5f 66 69 6c 65 2c 63 5f  |    .#in_file,c_|
00008af0  6c 69 6e 6b 25 28 31 2c  63 5f 6c 61 73 74 25 29  |link%(1,c_last%)|
00008b00  0d 3c 3c 1f 20 20 20 20  20 20 20 20 63 5f 6e 65  |.<<.        c_ne|
00008b10  78 74 25 28 63 5f 6c 61  73 74 25 29 3d 2d 31 0d  |xt%(c_last%)=-1.|
00008b20  3c 46 49 20 20 20 20 20  20 20 20 e7 20 70 72 65  |<FI        . pre|
00008b30  76 25 3d 2d 31 20 8c 20  63 5f 66 69 72 73 74 25  |v%=-1 . c_first%|
00008b40  28 6d 25 2c 64 25 29 3d  63 5f 6c 61 73 74 25 20  |(m%,d%)=c_last% |
00008b50  8b 20 63 5f 6e 65 78 74  25 28 70 72 65 76 25 29  |. c_next%(prev%)|
00008b60  3d 63 5f 6c 61 73 74 25  0d 3c 50 19 20 20 20 20  |=c_last%.<P.    |
00008b70  20 20 20 20 70 72 65 76  25 3d 63 5f 6c 61 73 74  |    prev%=c_last|
00008b80  25 0d 3c 5a 0b 20 20 20  20 20 20 ce 0d 3c 64 09  |%.<Z.      ..<d.|
00008b90  20 20 20 20 cc 0d 3c 6e  18 20 20 20 20 20 20 cf  |    ..<n.      .|
00008ba0  23 69 6e 5f 66 69 6c 65  3d 65 6e 64 25 0d 3c 78  |#in_file=end%.<x|
00008bb0  09 20 20 20 20 cd 0d 3c  82 07 20 20 ce 0d 3c 8c  |.    ..<..  ..<.|
00008bc0  0f 20 20 d9 23 69 6e 5f  66 69 6c 65 0d 3c 96 05  |.  .#in_file.<..|
00008bd0  cd 0d 3c a0 10 63 5f 63  68 61 6e 67 65 64 25 3d  |..<..c_changed%=|
00008be0  a3 0d 3c aa 05 e1 0d 3c  b4 04 0d 3c be 0d dd 20  |..<....<...<... |
00008bf0  f2 73 61 76 65 5f 63 0d  3c c8 17 6f 75 74 5f 66  |.save_c.<..out_f|
00008c00  69 6c 65 3d ae 28 63 5f  66 69 6c 65 24 29 0d 3c  |ile=.(c_file$).<|
00008c10  d2 23 6d 66 25 3d 74 68  69 73 5f 6d 6f 6e 74 68  |.#mf%=this_month|
00008c20  25 2b 74 68 69 73 5f 79  65 61 72 25 2a 31 32 2d  |%+this_year%*12-|
00008c30  31 0d 3c dc 0f e3 20 6d  25 3d 30 20 b8 20 31 32  |1.<... m%=0 . 12|
00008c40  0d 3c e6 17 20 20 e3 20  64 25 3d 31 20 b8 20 6d  |.<..  . d%=1 . m|
00008c50  6d 6c 25 28 6d 25 29 0d  3c f0 33 20 20 20 20 e7  |ml%(m%).<.3    .|
00008c60  20 63 5f 63 6f 6c 6f 75  72 25 28 6d 25 2c 64 25  | c_colour%(m%,d%|
00008c70  29 3e 30 20 84 20 63 5f  66 69 72 73 74 25 28 6d  |)>0 . c_first%(m|
00008c80  25 2c 64 25 29 3e 2d 31  20 8c 0d 3c fa 1b 20 20  |%,d%)>-1 ..<..  |
00008c90  20 20 20 20 f1 23 6f 75  74 5f 66 69 6c 65 2c 6d  |    .#out_file,m|
00008ca0  25 2b 6d 66 25 0d 3d 04  17 20 20 20 20 20 20 f1  |%+mf%.=..      .|
00008cb0  23 6f 75 74 5f 66 69 6c  65 2c 64 25 0d 3d 0e 25  |#out_file,d%.=.%|
00008cc0  20 20 20 20 20 20 f1 23  6f 75 74 5f 66 69 6c 65  |      .#out_file|
00008cd0  2c 63 5f 63 6f 6c 6f 75  72 25 28 6d 25 2c 64 25  |,c_colour%(m%,d%|
00008ce0  29 0d 3d 18 1b 20 20 20  20 20 20 73 74 61 72 74  |).=..      start|
00008cf0  25 3d 8f 23 6f 75 74 5f  66 69 6c 65 0d 3d 22 16  |%=.#out_file.=".|
00008d00  20 20 20 20 20 20 f1 23  6f 75 74 5f 66 69 6c 65  |      .#out_file|
00008d10  2c 30 0d 3d 2c 1f 20 20  20 20 20 20 6e 65 78 74  |,0.=,.      next|
00008d20  25 3d 63 5f 66 69 72 73  74 25 28 6d 25 2c 64 25  |%=c_first%(m%,d%|
00008d30  29 0d 3d 36 15 20 20 20  20 20 20 c8 95 20 6e 65  |).=6.      .. ne|
00008d40  78 74 25 3e 2d 31 0d 3d  40 26 20 20 20 20 20 20  |xt%>-1.=@&      |
00008d50  20 20 f1 23 6f 75 74 5f  66 69 6c 65 2c 63 5f 65  |  .#out_file,c_e|
00008d60  6e 74 72 79 24 28 6e 65  78 74 25 29 0d 3d 4a 25  |ntry$(next%).=J%|
00008d70  20 20 20 20 20 20 20 20  f1 23 6f 75 74 5f 66 69  |        .#out_fi|
00008d80  6c 65 2c 63 5f 74 79 70  65 25 28 6e 65 78 74 25  |le,c_type%(next%|
00008d90  29 0d 3d 54 25 20 20 20  20 20 20 20 20 f1 23 6f  |).=T%        .#o|
00008da0  75 74 5f 66 69 6c 65 2c  63 5f 74 69 6d 65 25 28  |ut_file,c_time%(|
00008db0  6e 65 78 74 25 29 0d 3d  5e 27 20 20 20 20 20 20  |next%).=^'      |
00008dc0  20 20 f1 23 6f 75 74 5f  66 69 6c 65 2c 63 5f 6c  |  .#out_file,c_l|
00008dd0  69 6e 6b 25 28 30 2c 6e  65 78 74 25 29 0d 3d 68  |ink%(0,next%).=h|
00008de0  27 20 20 20 20 20 20 20  20 f1 23 6f 75 74 5f 66  |'        .#out_f|
00008df0  69 6c 65 2c 63 5f 6c 69  6e 6b 25 28 31 2c 6e 65  |ile,c_link%(1,ne|
00008e00  78 74 25 29 0d 3d 72 20  20 20 20 20 20 20 20 20  |xt%).=r         |
00008e10  6e 65 78 74 25 3d 63 5f  6e 65 78 74 25 28 6e 65  |next%=c_next%(ne|
00008e20  78 74 25 29 0d 3d 7c 0b  20 20 20 20 20 20 ce 0d  |xt%).=|.      ..|
00008e30  3d 86 19 20 20 20 20 20  20 65 6e 64 25 3d 8f 23  |=..      end%=.#|
00008e40  6f 75 74 5f 66 69 6c 65  0d 3d 90 1b 20 20 20 20  |out_file.=..    |
00008e50  20 20 cf 23 6f 75 74 5f  66 69 6c 65 3d 73 74 61  |  .#out_file=sta|
00008e60  72 74 25 0d 3d 9a 19 20  20 20 20 20 20 f1 23 6f  |rt%.=..      .#o|
00008e70  75 74 5f 66 69 6c 65 2c  65 6e 64 25 0d 3d a4 19  |ut_file,end%.=..|
00008e80  20 20 20 20 20 20 cf 23  6f 75 74 5f 66 69 6c 65  |      .#out_file|
00008e90  3d 65 6e 64 25 0d 3d ae  09 20 20 20 20 cd 0d 3d  |=end%.=..    ..=|
00008ea0  b8 0a 20 20 ed 20 64 25  0d 3d c2 08 ed 20 6d 25  |..  . d%.=... m%|
00008eb0  0d 3d cc 0e d9 23 6f 75  74 5f 66 69 6c 65 0d 3d  |.=...#out_file.=|
00008ec0  d6 10 63 5f 63 68 61 6e  67 65 64 25 3d a3 0d 3d  |..c_changed%=..=|
00008ed0  e0 05 e1 0d 3d ea 04 0d  3d f4 15 dd 20 f2 6c 5f  |....=...=... .l_|
00008ee0  73 65 6c 65 63 74 28 6e  65 77 25 29 0d 3d fe 14  |select(new%).=..|
00008ef0  6c 5f 73 65 6c 65 63 74  65 64 25 3d 6e 65 77 25  |l_selected%=new%|
00008f00  0d 3e 08 42 e7 20 6c 5f  73 65 6c 65 63 74 65 64  |.>.B. l_selected|
00008f10  25 3d 30 20 80 20 61 63  74 69 76 65 25 28 72 65  |%=0 . active%(re|
00008f20  63 6f 72 64 25 29 20 8c  20 f2 63 6c 6f 73 65 77  |cord%) . .closew|
00008f30  69 6e 64 6f 77 28 77 25  28 72 65 63 6f 72 64 25  |indow(w%(record%|
00008f40  29 29 0d 3e 12 13 e7 20  6c 5f 73 65 6c 65 63 74  |)).>... l_select|
00008f50  65 64 25 20 8c 0d 3e 1c  1a 20 20 f2 6f 70 65 6e  |ed% ..>..  .open|
00008f60  75 70 28 77 25 28 72 65  63 6f 72 64 25 29 29 0d  |up(w%(record%)).|
00008f70  3e 26 11 20 20 f2 73 65  74 5f 6c 5f 64 61 74 61  |>&.  .set_l_data|
00008f80  0d 3e 30 05 cd 0d 3e 3a  05 e1 0d 3e 44 04 0d 3e  |.>0...>:...>D..>|
00008f90  4e 11 dd 20 f2 73 65 74  5f 6c 5f 64 61 74 61 0d  |N.. .set_l_data.|
00008fa0  3e 58 34 f2 73 65 74 69  63 6f 6e 74 65 78 74 28  |>X4.seticontext(|
00008fb0  77 25 28 72 65 63 6f 72  64 25 29 2c 32 2c 61 24  |w%(record%),2,a$|
00008fc0  28 6c 5f 73 65 6c 65 63  74 65 64 25 2c 73 65 6e  |(l_selected%,sen|
00008fd0  74 29 29 0d 3e 62 33 f2  73 65 74 69 63 6f 6e 74  |t)).>b3.seticont|
00008fe0  65 78 74 28 77 25 28 72  65 63 6f 72 64 25 29 2c  |ext(w%(record%),|
00008ff0  33 2c 61 24 28 6c 5f 73  65 6c 65 63 74 65 64 25  |3,a$(l_selected%|
00009000  2c 72 65 63 29 29 0d 3e  6c 1d e7 20 74 79 70 65  |,rec)).>l.. type|
00009010  25 28 6c 5f 73 65 6c 65  63 74 65 64 25 29 3e 2d  |%(l_selected%)>-|
00009020  31 20 8c 0d 3e 76 21 20  20 f2 73 68 61 64 65 69  |1 ..>v!  .shadei|
00009030  63 6f 6e 28 77 25 28 72  65 63 6f 72 64 25 29 2c  |con(w%(record%),|
00009040  34 2c a3 29 0d 3e 80 40  20 20 f2 73 65 74 69 63  |4,.).>.@  .setic|
00009050  6f 6e 74 65 78 74 28 77  25 28 72 65 63 6f 72 64  |ontext(w%(record|
00009060  25 29 2c 34 2c a4 6c 61  73 74 62 69 74 28 61 24  |%),4,.lastbit(a$|
00009070  28 6c 5f 73 65 6c 65 63  74 65 64 25 2c 66 69 6c  |(l_selected%,fil|
00009080  65 29 29 29 0d 3e 8a 34  20 20 f2 73 65 74 66 69  |e))).>.4  .setfi|
00009090  6c 65 69 63 6f 6e 28 77  25 28 72 65 63 6f 72 64  |leicon(w%(record|
000090a0  25 29 2c 34 2c 74 79 70  65 25 28 6c 5f 73 65 6c  |%),4,type%(l_sel|
000090b0  65 63 74 65 64 25 29 29  0d 3e 94 05 cc 0d 3e 9e  |ected%)).>....>.|
000090c0  2d 20 20 f2 73 65 74 69  63 6f 6e 74 65 78 74 28  |-  .seticontext(|
000090d0  77 25 28 72 65 63 6f 72  64 25 29 2c 34 2c 22 3c  |w%(record%),4,"<|
000090e0  6e 6f 20 6c 69 6e 6b 3e  22 29 0d 3e a8 2e 20 20  |no link>").>..  |
000090f0  f2 73 65 74 69 63 6f 6e  76 61 6c 69 64 28 77 25  |.seticonvalid(w%|
00009100  28 72 65 63 6f 72 64 25  29 2c 34 2c 22 53 66 69  |(record%),4,"Sfi|
00009110  6c 65 5f 78 78 78 22 29  0d 3e b2 21 20 20 f2 73  |le_xxx").>.!  .s|
00009120  68 61 64 65 69 63 6f 6e  28 77 25 28 72 65 63 6f  |hadeicon(w%(reco|
00009130  72 64 25 29 2c 34 2c b9  29 0d 3e bc 05 cd 0d 3e  |rd%),4,.).>....>|
00009140  c6 2f f2 6e 65 77 74 69  74 6c 65 28 77 25 28 72  |./.newtitle(w%(r|
00009150  65 63 6f 72 64 25 29 2c  61 24 28 6c 5f 73 65 6c  |ecord%),a$(l_sel|
00009160  65 63 74 65 64 25 2c 6e  61 6d 65 29 29 0d 3e d0  |ected%,name)).>.|
00009170  05 e1 0d 3e da 04 0d 3e  e4 16 dd 20 f2 63 61 6c  |...>...>... .cal|
00009180  63 5f 6c 5f 6f 72 64 73  28 6c 25 29 0d 3e ee 20  |c_l_ords(l%).>. |
00009190  6c 5f 69 63 6f 6e 25 21  34 3d 6c 5f 79 30 25 2d  |l_icon%!4=l_y0%-|
000091a0  28 6c 25 2d 31 29 2a 6c  5f 79 31 25 0d 3e f8 1e  |(l%-1)*l_y1%.>..|
000091b0  6c 5f 69 63 6f 6e 25 21  31 32 3d 6c 5f 69 63 6f  |l_icon%!12=l_ico|
000091c0  6e 25 21 34 2b 6c 5f 79  31 25 0d 3f 02 05 e1 0d  |n%!4+l_y1%.?....|
000091d0  3f 0c 04 0d 3f 16 0d dd  20 f2 63 61 6c 63 5f 6c  |?...?... .calc_l|
000091e0  0d 3f 20 11 6f 6c 64 25  3d 6c 65 74 74 65 72 73  |.? .old%=letters|
000091f0  25 0d 3f 2a 0f 6c 5f 63  68 61 6e 67 65 25 3d a3  |%.?*.l_change%=.|
00009200  0d 3f 34 0e 6c 65 74 74  65 72 73 25 3d 30 0d 3f  |.?4.letters%=0.?|
00009210  3e 16 e3 20 6e 61 6d 65  25 3d 31 20 b8 20 6e 61  |>.. name%=1 . na|
00009220  6d 65 73 25 0d 3f 48 18  20 20 e7 20 66 6c 61 67  |mes%.?H.  . flag|
00009230  25 28 6e 61 6d 65 25 29  80 31 20 8c 0d 3f 52 13  |%(name%).1 ..?R.|
00009240  20 20 20 20 6c 65 74 74  65 72 73 25 2b 3d 31 0d  |    letters%+=1.|
00009250  3f 5c 3c 20 20 20 20 e7  20 6c 5f 6c 69 73 74 25  |?\<    . l_list%|
00009260  28 6c 65 74 74 65 72 73  25 29 3c 3e 6e 61 6d 65  |(letters%)<>name|
00009270  25 20 8c 20 6c 5f 6c 69  73 74 25 28 6c 65 74 74  |% . l_list%(lett|
00009280  65 72 73 25 29 3d 6e 61  6d 65 25 0d 3f 66 07 20  |ers%)=name%.?f. |
00009290  20 cd 0d 3f 70 0b ed 20  6e 61 6d 65 25 0d 3f 7a  | ..?p.. name%.?z|
000092a0  22 e7 20 6c 65 74 74 65  72 73 25 3c 3e 6f 6c 64  |". letters%<>old|
000092b0  25 20 8c 20 6c 5f 63 68  61 6e 67 65 25 3d b9 0d  |% . l_change%=..|
000092c0  3f 84 5d e7 20 6c 5f 63  68 61 6e 67 65 25 20 8c  |?.]. l_change% .|
000092d0  20 f2 73 65 74 77 69 6e  64 6f 77 65 78 74 65 6e  | .setwindowexten|
000092e0  74 28 77 25 28 6c 65 74  74 65 72 25 29 2c 21 6c  |t(w%(letter%),!l|
000092f0  5f 69 63 6f 6e 25 2c 6c  5f 79 30 25 2d 28 6c 65  |_icon%,l_y0%-(le|
00009300  74 74 65 72 73 25 2d 31  29 2a 6c 5f 79 31 25 2c  |tters%-1)*l_y1%,|
00009310  6c 5f 69 63 6f 6e 25 21  38 2c 30 29 0d 3f 8e 2d  |l_icon%!8,0).?.-|
00009320  e7 20 61 63 74 69 76 65  25 28 6c 65 74 74 65 72  |. active%(letter|
00009330  25 29 20 8c 20 f2 72 65  6f 70 65 6e 28 77 25 28  |%) . .reopen(w%(|
00009340  6c 65 74 74 65 72 25 29  29 0d 3f 98 05 e1 0d 3f  |letter%)).?....?|
00009350  a2 04 0d 3f ac 11 dd 20  f2 64 69 61 6c 28 6e 75  |...?... .dial(nu|
00009360  6d 24 29 0d 3f b6 1c c8  99 22 53 6f 75 6e 64 5f  |m$).?...."Sound_|
00009370  43 6f 6e 66 69 67 75 72  65 22 20 b8 20 69 25 0d  |Configure" . i%.|
00009380  3f c0 11 e7 20 69 25 3c  32 20 8c 20 c8 a0 20 32  |?... i%<2 . .. 2|
00009390  0d 3f ca 15 2a 63 68 61  6e 6e 65 6c 76 6f 69 63  |.?..*channelvoic|
000093a0  65 20 31 20 31 0d 3f d4  15 2a 63 68 61 6e 6e 65  |e 1 1.?..*channe|
000093b0  6c 76 6f 69 63 65 20 32  20 31 0d 3f de 16 c8 99  |lvoice 2 1.?....|
000093c0  22 53 6f 75 6e 64 5f 51  42 65 61 74 22 2c 2d 32  |"Sound_QBeat",-2|
000093d0  0d 3f e8 0f c8 95 20 6e  75 6d 24 3c 3e 22 22 0d  |.?.... num$<>"".|
000093e0  3f f2 27 64 69 67 69 74  25 3d a7 22 20 31 32 33  |?.'digit%=." 123|
000093f0  34 35 36 37 38 39 2a 30  23 22 2c c0 6e 75 6d 24  |456789*0#",.num$|
00009400  2c 31 29 29 2d 32 0d 3f  fc 11 e7 20 64 69 67 69  |,1))-2.?... digi|
00009410  74 25 3e 2d 31 20 8c 0d  40 06 11 63 6f 6c 25 3d  |t%>-1 ..@..col%=|
00009420  64 69 67 69 74 25 83 33  0d 40 10 11 72 6f 77 25  |digit%.3.@..row%|
00009430  3d 64 69 67 69 74 25 81  33 0d 40 1a 43 c8 99 22  |=digit%.3.@.C.."|
00009440  53 6f 75 6e 64 5f 51 53  63 68 65 64 75 6c 65 22  |Sound_QSchedule"|
00009450  2c 69 25 2a 33 30 2b 35  2c 2c 26 46 46 46 38 30  |,i%*30+5,,&FFF80|
00009460  30 30 31 2c 26 34 30 30  30 30 20 84 20 63 6f 6c  |001,&40000 . col|
00009470  5f 74 6f 6e 65 25 28 63  6f 6c 25 29 0d 40 24 3e  |_tone%(col%).@$>|
00009480  c8 99 22 53 6f 75 6e 64  5f 51 53 63 68 65 64 75  |.."Sound_QSchedu|
00009490  6c 65 22 2c 2d 31 2c 2c  26 46 46 46 38 30 30 30  |le",-1,,&FFF8000|
000094a0  32 2c 26 34 30 30 30 30  20 84 20 72 6f 77 5f 74  |2,&40000 . row_t|
000094b0  6f 6e 65 25 28 72 6f 77  25 29 0d 40 2e 09 69 25  |one%(row%).@..i%|
000094c0  2b 3d 31 0d 40 38 05 cd  0d 40 42 11 6e 75 6d 24  |+=1.@8...@B.num$|
000094d0  3d c1 6e 75 6d 24 2c 32  29 0d 40 4c 05 ce 0d 40  |=.num$,2).@L...@|
000094e0  56 05 e1 0d 40 60 04 0d  40 6a 0d dd 20 f2 73 61  |V...@`..@j.. .sa|
000094f0  76 65 5f 61 0d 40 74 0f  f2 67 65 74 5f 61 5f 64  |ve_a.@t..get_a_d|
00009500  61 74 61 0d 40 7e 17 6f  75 74 5f 66 69 6c 65 3d  |ata.@~.out_file=|
00009510  ae 28 61 5f 66 69 6c 65  24 29 0d 40 88 16 f1 23  |.(a_file$).@...#|
00009520  6f 75 74 5f 66 69 6c 65  2c 6c 61 73 74 5f 61 25  |out_file,last_a%|
00009530  0d 40 92 15 f1 23 6f 75  74 5f 66 69 6c 65 2c 6e  |.@...#out_file,n|
00009540  61 6d 65 73 25 0d 40 9c  16 e3 20 6e 61 6d 65 25  |ames%.@... name%|
00009550  3d 31 20 b8 20 6e 61 6d  65 73 25 0d 40 a6 18 20  |=1 . names%.@.. |
00009560  20 e3 20 74 79 70 65 3d  6e 61 6d 65 20 b8 20 66  | . type=name . f|
00009570  69 6c 65 0d 40 b0 21 20  20 20 20 f1 23 6f 75 74  |ile.@.!    .#out|
00009580  5f 66 69 6c 65 2c 61 24  28 6e 61 6d 65 25 2c 74  |_file,a$(name%,t|
00009590  79 70 65 29 0d 40 ba 0c  20 20 ed 20 74 79 70 65  |ype).@..  . type|
000095a0  0d 40 c4 1d 20 20 f1 23  6f 75 74 5f 66 69 6c 65  |.@..  .#out_file|
000095b0  2c 66 6c 61 67 25 28 6e  61 6d 65 25 29 0d 40 ce  |,flag%(name%).@.|
000095c0  1d 20 20 f1 23 6f 75 74  5f 66 69 6c 65 2c 74 79  |.  .#out_file,ty|
000095d0  70 65 25 28 6e 61 6d 65  25 29 0d 40 d8 1e 20 20  |pe%(name%).@..  |
000095e0  f1 23 6f 75 74 5f 66 69  6c 65 2c 61 5f 6e 75 6d  |.#out_file,a_num|
000095f0  25 28 6e 61 6d 65 25 29  0d 40 e2 0b ed 20 6e 61  |%(name%).@... na|
00009600  6d 65 25 0d 40 ec 0e d9  23 6f 75 74 5f 66 69 6c  |me%.@...#out_fil|
00009610  65 0d 40 f6 10 61 5f 63  68 61 6e 67 65 64 25 3d  |e.@..a_changed%=|
00009620  a3 0d 41 00 05 e1 0d 41  0a 04 0d 41 14 0d dd 20  |..A....A...A... |
00009630  f2 6c 6f 61 64 5f 61 0d  41 1e 1b 61 5f 66 69 6c  |.load_a.A..a_fil|
00009640  65 24 3d 64 69 72 24 2b  22 2e 41 64 64 72 65 73  |e$=dir$+".Addres|
00009650  73 22 0d 41 28 1b e7 20  a4 66 69 6c 65 65 78 69  |s".A(.. .fileexi|
00009660  73 74 28 61 5f 66 69 6c  65 24 29 20 8c 0d 41 32  |st(a_file$) ..A2|
00009670  18 20 20 69 6e 5f 66 69  6c 65 3d 8e 28 61 5f 66  |.  in_file=.(a_f|
00009680  69 6c 65 24 29 0d 41 3c  17 20 20 e8 23 69 6e 5f  |ile$).A<.  .#in_|
00009690  66 69 6c 65 2c 6c 61 73  74 5f 61 25 0d 41 46 16  |file,last_a%.AF.|
000096a0  20 20 e8 23 69 6e 5f 66  69 6c 65 2c 6e 61 6d 65  |  .#in_file,name|
000096b0  73 25 0d 41 50 18 20 20  e3 20 6e 61 6d 65 25 3d  |s%.AP.  . name%=|
000096c0  31 20 b8 20 6e 61 6d 65  73 25 0d 41 5a 1a 20 20  |1 . names%.AZ.  |
000096d0  20 20 e3 20 74 79 70 65  3d 6e 61 6d 65 20 b8 20  |  . type=name . |
000096e0  66 69 6c 65 0d 41 64 22  20 20 20 20 20 20 e8 23  |file.Ad"      .#|
000096f0  69 6e 5f 66 69 6c 65 2c  61 24 28 6e 61 6d 65 25  |in_file,a$(name%|
00009700  2c 74 79 70 65 29 0d 41  6e 0e 20 20 20 20 ed 20  |,type).An.    . |
00009710  74 79 70 65 0d 41 78 1e  20 20 20 20 e8 23 69 6e  |type.Ax.    .#in|
00009720  5f 66 69 6c 65 2c 66 6c  61 67 25 28 6e 61 6d 65  |_file,flag%(name|
00009730  25 29 0d 41 82 1e 20 20  20 20 e8 23 69 6e 5f 66  |%).A..    .#in_f|
00009740  69 6c 65 2c 74 79 70 65  25 28 6e 61 6d 65 25 29  |ile,type%(name%)|
00009750  0d 41 8c 1f 20 20 20 20  e8 23 69 6e 5f 66 69 6c  |.A..    .#in_fil|
00009760  65 2c 61 5f 6e 75 6d 25  28 6e 61 6d 65 25 29 0d  |e,a_num%(name%).|
00009770  41 96 0d 20 20 ed 20 6e  61 6d 65 25 0d 41 a0 0f  |A..  . name%.A..|
00009780  20 20 d9 23 69 6e 5f 66  69 6c 65 0d 41 aa 05 cc  |  .#in_file.A...|
00009790  0d 41 b4 0f 20 20 6c 61  73 74 5f 61 25 3d 31 0d  |.A..  last_a%=1.|
000097a0  41 be 0e 20 20 6e 61 6d  65 73 25 3d 31 0d 41 c8  |A..  names%=1.A.|
000097b0  12 20 20 74 68 69 73 5f  6e 61 6d 65 25 3d 31 0d  |.  this_name%=1.|
000097c0  41 d2 20 20 20 61 5f 6e  75 6d 25 28 74 68 69 73  |A.   a_num%(this|
000097d0  5f 6e 61 6d 65 25 29 3d  6c 61 73 74 5f 61 25 0d  |_name%)=last_a%.|
000097e0  41 dc 11 20 20 f2 67 65  74 5f 61 5f 64 61 74 61  |A..  .get_a_data|
000097f0  0d 41 e6 05 cd 0d 41 f0  10 61 5f 63 68 61 6e 67  |.A....A..a_chang|
00009800  65 64 25 3d a3 0d 41 fa  05 e1 0d 42 04 04 0d 42  |ed%=..A....B...B|
00009810  0e 0d dd 20 f2 73 6f 72  74 5f 61 0d 42 18 0f f2  |... .sort_a.B...|
00009820  67 65 74 5f 61 5f 64 61  74 61 0d 42 22 14 c8 99  |get_a_data.B"...|
00009830  22 48 6f 75 72 67 6c 61  73 73 5f 4f 6e 22 0d 42  |"Hourglass_On".B|
00009840  2c 13 e3 20 6e 25 3d 31  20 b8 20 6e 61 6d 65 73  |,.. n%=1 . names|
00009850  25 0d 42 36 11 20 20 69  6e 64 25 28 6e 25 29 3d  |%.B6.  ind%(n%)=|
00009860  6e 25 0d 42 40 1e 20 20  74 65 6d 70 24 28 6e 25  |n%.B@.  temp$(n%|
00009870  29 3d a4 6c 61 73 74 5f  6e 61 6d 65 28 6e 25 29  |)=.last_name(n%)|
00009880  0d 42 4a 36 20 20 74 65  6d 70 24 28 6e 25 29 2b  |.BJ6  temp$(n%)+|
00009890  3d c0 61 24 28 6e 25 2c  6e 61 6d 65 29 2c a9 61  |=.a$(n%,name),.a|
000098a0  24 28 6e 25 2c 6e 61 6d  65 29 2d a9 74 65 6d 70  |$(n%,name)-.temp|
000098b0  24 28 6e 25 29 29 0d 42  54 08 ed 20 6e 25 0d 42  |$(n%)).BT.. n%.B|
000098c0  5e 05 f5 0d 42 68 0d 20  20 73 77 61 70 25 3d a3  |^...Bh.  swap%=.|
000098d0  0d 42 72 17 20 20 e3 20  6e 25 3d 31 20 b8 20 6e  |.Br.  . n%=1 . n|
000098e0  61 6d 65 73 25 2d 31 0d  42 7c 45 20 20 20 20 e7  |ames%-1.B|E    .|
000098f0  20 74 65 6d 70 24 28 69  6e 64 25 28 6e 25 29 29  | temp$(ind%(n%))|
00009900  3e 74 65 6d 70 24 28 69  6e 64 25 28 6e 25 2b 31  |>temp$(ind%(n%+1|
00009910  29 29 20 80 20 74 65 6d  70 24 28 69 6e 64 25 28  |)) . temp$(ind%(|
00009920  6e 25 2b 31 29 29 3c 3e  22 22 20 8c 0d 42 86 20  |n%+1))<>"" ..B. |
00009930  20 20 20 20 20 20 c8 94  20 69 6e 64 25 28 6e 25  |      .. ind%(n%|
00009940  29 2c 69 6e 64 25 28 6e  25 2b 31 29 0d 42 90 11  |),ind%(n%+1).B..|
00009950  20 20 20 20 20 20 73 77  61 70 25 3d b9 0d 42 9a  |      swap%=..B.|
00009960  09 20 20 20 20 cd 0d 42  a4 0a 20 20 ed 20 6e 25  |.    ..B..  . n%|
00009970  0d 42 ae 0d fd 20 73 77  61 70 25 3d a3 0d 42 b8  |.B... swap%=..B.|
00009980  14 e3 20 69 25 3d 6e 61  6d 65 20 b8 20 66 69 6c  |.. i%=name . fil|
00009990  65 0d 42 c2 15 20 20 e3  20 6e 25 3d 31 20 b8 20  |e.B..  . n%=1 . |
000099a0  6e 61 6d 65 73 25 0d 42  cc 1b 20 20 20 20 74 65  |names%.B..    te|
000099b0  6d 70 24 28 6e 25 29 3d  61 24 28 6e 25 2c 69 25  |mp$(n%)=a$(n%,i%|
000099c0  29 0d 42 d6 0a 20 20 ed  20 6e 25 0d 42 e0 15 20  |).B..  . n%.B.. |
000099d0  20 e3 20 6e 25 3d 31 20  b8 20 6e 61 6d 65 73 25  | . n%=1 . names%|
000099e0  0d 42 ea 21 20 20 20 20  61 24 28 6e 25 2c 69 25  |.B.!    a$(n%,i%|
000099f0  29 3d 74 65 6d 70 24 28  69 6e 64 25 28 6e 25 29  |)=temp$(ind%(n%)|
00009a00  29 0d 42 f4 0a 20 20 ed  20 6e 25 0d 42 fe 08 ed  |).B..  . n%.B...|
00009a10  20 69 25 0d 43 08 13 e3  20 6e 25 3d 31 20 b8 20  | i%.C... n%=1 . |
00009a20  6e 61 6d 65 73 25 0d 43  12 16 20 20 67 25 28 6e  |names%.C..  g%(n|
00009a30  25 29 3d 66 6c 61 67 25  28 6e 25 29 0d 43 1c 08  |%)=flag%(n%).C..|
00009a40  ed 20 6e 25 0d 43 26 13  e3 20 6e 25 3d 31 20 b8  |. n%.C&.. n%=1 .|
00009a50  20 6e 61 6d 65 73 25 0d  43 30 1c 20 20 66 6c 61  | names%.C0.  fla|
00009a60  67 25 28 6e 25 29 3d 67  25 28 69 6e 64 25 28 6e  |g%(n%)=g%(ind%(n|
00009a70  25 29 29 0d 43 3a 08 ed  20 6e 25 0d 43 44 13 e3  |%)).C:.. n%.CD..|
00009a80  20 6e 25 3d 31 20 b8 20  6e 61 6d 65 73 25 0d 43  | n%=1 . names%.C|
00009a90  4e 16 20 20 67 25 28 6e  25 29 3d 74 79 70 65 25  |N.  g%(n%)=type%|
00009aa0  28 6e 25 29 0d 43 58 08  ed 20 6e 25 0d 43 62 13  |(n%).CX.. n%.Cb.|
00009ab0  e3 20 6e 25 3d 31 20 b8  20 6e 61 6d 65 73 25 0d  |. n%=1 . names%.|
00009ac0  43 6c 1c 20 20 74 79 70  65 25 28 6e 25 29 3d 67  |Cl.  type%(n%)=g|
00009ad0  25 28 69 6e 64 25 28 6e  25 29 29 0d 43 76 08 ed  |%(ind%(n%)).Cv..|
00009ae0  20 6e 25 0d 43 80 13 e3  20 6e 25 3d 31 20 b8 20  | n%.C... n%=1 . |
00009af0  6e 61 6d 65 73 25 0d 43  8a 17 20 20 67 25 28 6e  |names%.C..  g%(n|
00009b00  25 29 3d 61 5f 6e 75 6d  25 28 6e 25 29 0d 43 94  |%)=a_num%(n%).C.|
00009b10  08 ed 20 6e 25 0d 43 9e  13 e3 20 6e 25 3d 31 20  |.. n%.C... n%=1 |
00009b20  b8 20 6e 61 6d 65 73 25  0d 43 a8 1d 20 20 61 5f  |. names%.C..  a_|
00009b30  6e 75 6d 25 28 6e 25 29  3d 67 25 28 69 6e 64 25  |num%(n%)=g%(ind%|
00009b40  28 6e 25 29 29 0d 43 b2  08 ed 20 6e 25 0d 43 bc  |(n%)).C... n%.C.|
00009b50  15 c8 99 22 48 6f 75 72  67 6c 61 73 73 5f 4f 66  |..."Hourglass_Of|
00009b60  66 22 0d 43 c6 13 6e 65  77 25 3d 74 68 69 73 5f  |f".C..new%=this_|
00009b70  6e 61 6d 65 25 0d 43 d0  11 74 68 69 73 5f 6e 61  |name%.C..this_na|
00009b80  6d 65 25 3d 2d 31 0d 43  da 10 f2 73 65 74 5f 61  |me%=-1.C...set_a|
00009b90  28 6e 65 77 25 29 0d 43  e4 32 e7 20 61 63 74 69  |(new%).C.2. acti|
00009ba0  76 65 25 28 72 65 63 6f  72 64 25 29 20 8c 20 f2  |ve%(record%) . .|
00009bb0  63 6c 6f 73 65 77 69 6e  64 6f 77 28 77 25 28 72  |closewindow(w%(r|
00009bc0  65 63 6f 72 64 25 29 29  0d 43 ee 18 e7 20 61 63  |ecord%)).C... ac|
00009bd0  74 69 76 65 25 28 6c 65  74 74 65 72 25 29 20 8c  |tive%(letter%) .|
00009be0  0d 43 f8 0d 20 20 f2 63  61 6c 63 5f 6c 0d 44 02  |.C..  .calc_l.D.|
00009bf0  1f 20 20 f2 66 6f 72 63  65 72 65 64 72 61 77 28  |.  .forceredraw(|
00009c00  77 25 28 6c 65 74 74 65  72 25 29 29 0d 44 0c 05  |w%(letter%)).D..|
00009c10  cd 0d 44 16 05 e1 0d 44  20 04 0d 44 2a 0f dd 20  |..D....D ..D*.. |
00009c20  f2 6c 65 74 74 65 72 5f  61 0d 44 34 3c f2 73 68  |.letter_a.D4<.sh|
00009c30  61 64 65 69 63 6f 6e 28  77 25 28 61 64 64 72 65  |adeicon(w%(addre|
00009c40  73 73 25 29 2c 32 35 2c  ac 20 a4 73 65 6c 65 63  |ss%),25,. .selec|
00009c50  74 65 64 28 77 25 28 61  64 64 72 65 73 73 25 29  |ted(w%(address%)|
00009c60  2c 32 34 29 29 0d 44 3e  0f f2 67 65 74 5f 61 5f  |,24)).D>..get_a_|
00009c70  64 61 74 61 0d 44 48 4b  e7 20 6c 5f 73 65 6c 65  |data.DHK. l_sele|
00009c80  63 74 65 64 25 3d 74 68  69 73 5f 6e 61 6d 65 25  |cted%=this_name%|
00009c90  20 80 20 61 63 74 69 76  65 25 28 72 65 63 6f 72  | . active%(recor|
00009ca0  64 25 29 20 8c 20 f2 63  6c 6f 73 65 77 69 6e 64  |d%) . .closewind|
00009cb0  6f 77 28 77 25 28 72 65  63 6f 72 64 25 29 29 0d  |ow(w%(record%)).|
00009cc0  44 52 20 e7 20 61 63 74  69 76 65 25 28 6c 65 74  |DR . active%(let|
00009cd0  74 65 72 25 29 20 8c 20  f2 63 61 6c 63 5f 6c 0d  |ter%) . .calc_l.|
00009ce0  44 5c 05 e1 0d 44 66 04  0d 44 70 0e dd 20 f2 61  |D\...Df..Dp.. .a|
00009cf0  5f 69 6e 64 65 78 0d 44  7a 0a 61 25 28 29 3d 30  |_index.Dz.a%()=0|
00009d00  0d 44 84 14 70 74 72 25  3d 69 6e 64 65 78 5f 6d  |.D..ptr%=index_m|
00009d10  65 6e 75 25 0d 44 8e 16  e3 20 6e 61 6d 65 25 3d  |enu%.D... name%=|
00009d20  31 20 b8 20 6e 61 6d 65  73 25 0d 44 98 20 20 20  |1 . names%.D.   |
00009d30  63 25 3d 97 28 a4 6c 61  73 74 5f 6e 61 6d 65 28  |c%=.(.last_name(|
00009d40  6e 61 6d 65 25 29 29 2d  36 34 0d 44 a2 20 20 20  |name%))-64.D.   |
00009d50  e7 20 63 25 3e 3d 33 33  20 80 20 63 25 3c 3d 35  |. c%>=33 . c%<=5|
00009d60  38 20 8c 20 63 25 2d 3d  33 32 0d 44 ac 18 20 20  |8 . c%-=32.D..  |
00009d70  e7 20 63 25 3e 3d 31 20  80 20 63 25 3c 3d 32 36  |. c%>=1 . c%<=26|
00009d80  20 8c 0d 44 b6 11 20 20  20 20 61 25 28 63 25 29  | ..D..    a%(c%)|
00009d90  2b 3d 31 0d 44 c0 14 20  20 20 20 67 25 28 6e 61  |+=1.D..    g%(na|
00009da0  6d 65 25 29 3d 63 25 0d  44 ca 07 20 20 cd 0d 44  |me%)=c%.D..  ..D|
00009db0  d4 0b ed 20 6e 61 6d 65  25 0d 44 de 1c f2 6d 65  |... name%.D...me|
00009dc0  6e 75 74 69 74 6c 65 28  22 49 6e 64 65 78 22 2c  |nutitle("Index",|
00009dd0  70 74 72 25 29 0d 44 e8  0f e3 20 61 25 3d 31 20  |ptr%).D... a%=1 |
00009de0  b8 20 32 36 0d 44 f2 23  20 20 73 74 24 3d bd 28  |. 26.D.#  st$=.(|
00009df0  61 25 2b 36 34 29 2b 22  3e 2b 2c 73 75 62 5f 69  |a%+64)+">+,sub_i|
00009e00  6e 64 65 78 25 2c 22 0d  44 fc 24 20 20 e7 20 61  |ndex%,".D.$  . a|
00009e10  25 28 61 25 29 20 8c 20  f2 6d 65 6e 75 69 74 65  |%(a%) . .menuite|
00009e20  6d 28 73 74 24 2c 70 74  72 25 29 0d 45 06 08 ed  |m(st$,ptr%).E...|
00009e30  20 61 25 0d 45 10 12 f2  65 6e 64 6d 65 6e 75 28  | a%.E...endmenu(|
00009e40  70 74 72 25 29 0d 45 1a  2e f2 6f 70 65 6e 69 63  |ptr%).E...openic|
00009e50  6f 6e 6d 65 6e 75 28 77  25 28 61 64 64 72 65 73  |onmenu(w%(addres|
00009e60  73 25 29 2c 32 30 2c 69  6e 64 65 78 5f 6d 65 6e  |s%),20,index_men|
00009e70  75 25 29 0d 45 24 05 e1  0d 45 2e 04 0d 45 38 0d  |u%).E$...E...E8.|
00009e80  dd 20 f2 64 72 61 67 5f  61 0d 45 42 14 61 5f 6f  |. .drag_a.EB.a_o|
00009e90  66 66 25 3d 6d 78 25 2d  61 5f 73 35 25 0d 45 4c  |ff%=mx%-a_s5%.EL|
00009ea0  50 f2 73 74 61 72 74 75  73 65 72 64 72 61 67 28  |P.startuserdrag(|
00009eb0  61 64 64 72 65 73 73 25  2c 30 2c 61 5f 6f 66 66  |address%,0,a_off|
00009ec0  25 2b 61 5f 73 30 25 2c  6d 79 25 2c 61 5f 73 34  |%+a_s0%,my%,a_s4|
00009ed0  2a 28 6e 61 6d 65 73 25  2d 31 29 2b 61 5f 6f 66  |*(names%-1)+a_of|
00009ee0  66 25 2b 61 5f 73 30 25  2c 6d 79 25 29 0d 45 56  |f%+a_s0%,my%).EV|
00009ef0  05 e1 0d 45 60 04 0d 45  6a 0b dd 20 f2 6e 75 6c  |...E`..Ej.. .nul|
00009f00  6c 0d 45 74 0e f2 6d 6f  75 73 65 69 6e 66 6f 0d  |l.Et..mouseinfo.|
00009f10  45 7e 10 c8 8e 20 64 72  61 67 69 64 25 20 ca 0d  |E~... dragid% ..|
00009f20  45 88 10 20 20 c9 20 61  64 64 72 65 73 73 25 0d  |E..  . address%.|
00009f30  45 92 2c 20 20 20 20 6e  65 77 25 3d 28 28 6d 78  |E.,    new%=((mx|
00009f40  25 2d 28 61 5f 6f 66 66  25 2b 61 5f 73 30 25 29  |%-(a_off%+a_s0%)|
00009f50  29 2f 61 5f 73 34 29 2b  31 2e 35 0d 45 9c 37 20  |)/a_s4)+1.5.E.7 |
00009f60  20 20 20 e7 20 6e 65 77  25 3c 31 20 8c 20 6e 65  |   . new%<1 . ne|
00009f70  77 25 3d 31 20 8b 20 e7  20 6e 65 77 25 3e 6e 61  |w%=1 . . new%>na|
00009f80  6d 65 73 25 20 8c 20 6e  65 77 25 3d 6e 61 6d 65  |mes% . new%=name|
00009f90  73 25 0d 45 a6 14 20 20  20 20 f2 73 65 74 5f 61  |s%.E..    .set_a|
00009fa0  28 6e 65 77 25 29 0d 45  b0 10 20 20 c9 20 6e 6f  |(new%).E..  . no|
00009fb0  74 65 70 61 64 25 0d 45  ba 2c 20 20 20 20 6e 65  |tepad%.E.,    ne|
00009fc0  77 25 3d 28 28 6d 78 25  2d 28 6e 5f 6f 66 66 25  |w%=((mx%-(n_off%|
00009fd0  2b 6e 5f 73 30 25 29 29  2f 6e 5f 73 34 29 2b 31  |+n_s0%))/n_s4)+1|
00009fe0  2e 35 0d 45 c4 37 20 20  20 20 e7 20 6e 65 77 25  |.5.E.7    . new%|
00009ff0  3c 31 20 8c 20 6e 65 77  25 3d 31 20 8b 20 e7 20  |<1 . new%=1 . . |
0000a000  6e 65 77 25 3e 6e 6f 74  65 73 25 20 8c 20 6e 65  |new%>notes% . ne|
0000a010  77 25 3d 6e 6f 74 65 73  25 0d 45 ce 14 20 20 20  |w%=notes%.E..   |
0000a020  20 f2 73 65 74 5f 6e 28  6e 65 77 25 29 0d 45 d8  | .set_n(new%).E.|
0000a030  05 cb 0d 45 e2 23 e7 20  62 75 74 25 3d 30 20 80  |...E.#. but%=0 .|
0000a040  20 64 72 61 67 69 64 25  3e 30 20 8c 20 f2 65 6e  | dragid%>0 . .en|
0000a050  64 64 72 61 67 0d 45 ec  17 e7 20 69 6e 73 70 74  |ddrag.E... inspt|
0000a060  72 25 3c 69 6e 73 6c 65  6e 25 20 8c 0d 45 f6 0f  |r%<inslen% ..E..|
0000a070  20 20 f2 67 65 74 63 61  72 65 74 0d 46 00 1e 20  |  .getcaret.F.. |
0000a080  20 e7 20 63 77 69 6e 64  25 3c 3e 77 25 28 61 64  | . cwind%<>w%(ad|
0000a090  64 72 65 73 73 25 29 20  8c 0d 46 0a 24 20 20 20  |dress%) ..F.$   |
0000a0a0  20 c8 99 22 57 69 6d 70  5f 50 72 6f 63 65 73 73  | .."Wimp_Process|
0000a0b0  4b 65 79 22 2c 3f 69 6e  73 70 74 72 25 0d 46 14  |Key",?insptr%.F.|
0000a0c0  12 20 20 20 20 69 6e 73  70 74 72 25 2b 3d 31 0d  |.    insptr%+=1.|
0000a0d0  46 1e 07 20 20 cd 0d 46  28 05 cd 0d 46 32 05 e1  |F..  ..F(...F2..|
0000a0e0  0d 46 3c 04 0d 46 46 10  dd 20 a4 74 68 69 73 5f  |.F<..FF.. .this_|
0000a0f0  74 69 6d 65 0d 46 50 09  21 71 25 3d 31 0d 46 5a  |time.FP.!q%=1.FZ|
0000a100  15 c8 99 22 4f 53 5f 57  6f 72 64 22 2c 31 34 2c  |..."OS_Word",14,|
0000a110  71 25 0d 46 64 1f 3d bb  28 c3 7e 28 71 25 3f 34  |q%.Fd.=.(.~(q%?4|
0000a120  29 29 2a 36 30 2b bb 28  c3 7e 28 71 25 3f 35 29  |))*60+.(.~(q%?5)|
0000a130  29 0d 46 6e 04 0d 46 78  12 dd 20 f2 69 6e 63 5f  |).Fn..Fx.. .inc_|
0000a140  61 28 69 6e 63 25 29 0d  46 82 4c e7 20 74 68 69  |a(inc%).F.L. thi|
0000a150  73 5f 6e 61 6d 65 25 2b  69 6e 63 25 3e 3d 31 20  |s_name%+inc%>=1 |
0000a160  80 20 74 68 69 73 5f 6e  61 6d 65 25 2b 69 6e 63  |. this_name%+inc|
0000a170  25 3c 3d 6e 61 6d 65 73  25 20 8c 20 f2 73 65 74  |%<=names% . .set|
0000a180  5f 61 28 74 68 69 73 5f  6e 61 6d 65 25 2b 69 6e  |_a(this_name%+in|
0000a190  63 25 29 0d 46 8c 05 e1  0d 46 96 04 0d 46 a0 12  |c%).F....F...F..|
0000a1a0  dd 20 f2 73 65 74 5f 61  28 6e 65 77 25 29 0d 46  |. .set_a(new%).F|
0000a1b0  aa 35 e7 20 61 63 74 69  76 65 25 28 61 64 64 72  |.5. active%(addr|
0000a1c0  65 73 73 25 29 20 80 20  74 68 69 73 5f 6e 61 6d  |ess%) . this_nam|
0000a1d0  65 25 3e 2d 31 20 8c 20  f2 67 65 74 5f 61 5f 64  |e%>-1 . .get_a_d|
0000a1e0  61 74 61 0d 46 b4 3b e7  20 28 74 68 69 73 5f 6e  |ata.F.;. (this_n|
0000a1f0  61 6d 65 25 3c 3e 6e 65  77 25 20 84 20 61 63 74  |ame%<>new% . act|
0000a200  69 76 65 25 28 61 64 64  72 65 73 73 25 29 3d a3  |ive%(address%)=.|
0000a210  29 20 80 20 6e 65 77 25  3c 3e 2d 31 20 8c 0d 46  |) . new%<>-1 ..F|
0000a220  be 15 20 20 74 68 69 73  5f 6e 61 6d 65 25 3d 6e  |..  this_name%=n|
0000a230  65 77 25 0d 46 c8 17 20  20 e3 20 74 79 70 65 3d  |ew%.F..  . type=|
0000a240  6e 61 6d 65 20 b8 20 64  6f 62 0d 46 d2 42 20 20  |name . dob.F.B  |
0000a250  20 20 f2 73 65 74 69 63  6f 6e 74 65 78 74 28 77  |  .seticontext(w|
0000a260  25 28 61 64 64 72 65 73  73 25 29 2c 69 63 6f 6e  |%(address%),icon|
0000a270  25 28 74 79 70 65 29 2c  61 24 28 74 68 69 73 5f  |%(type),a$(this_|
0000a280  6e 61 6d 65 25 2c 74 79  70 65 29 29 0d 46 dc 0c  |name%,type)).F..|
0000a290  20 20 ed 20 74 79 70 65  0d 46 e6 36 20 20 f2 73  |  . type.F.6  .s|
0000a2a0  65 6c 65 63 74 69 63 6f  6e 28 77 25 28 61 64 64  |electicon(w%(add|
0000a2b0  72 65 73 73 25 29 2c 32  34 2c 66 6c 61 67 25 28  |ress%),24,flag%(|
0000a2c0  74 68 69 73 5f 6e 61 6d  65 25 29 80 31 29 0d 46  |this_name%).1).F|
0000a2d0  f0 36 20 20 f2 73 65 6c  65 63 74 69 63 6f 6e 28  |.6  .selecticon(|
0000a2e0  77 25 28 61 64 64 72 65  73 73 25 29 2c 31 35 2c  |w%(address%),15,|
0000a2f0  66 6c 61 67 25 28 74 68  69 73 5f 6e 61 6d 65 25  |flag%(this_name%|
0000a300  29 80 32 29 0d 46 fa 38  20 20 f2 73 68 61 64 65  |).2).F.8  .shade|
0000a310  69 63 6f 6e 28 77 25 28  61 64 64 72 65 73 73 25  |icon(w%(address%|
0000a320  29 2c 32 35 2c 28 ac 66  6c 61 67 25 28 74 68 69  |),25,(.flag%(thi|
0000a330  73 5f 6e 61 6d 65 25 29  29 80 31 29 0d 47 04 22  |s_name%)).1).G."|
0000a340  20 20 f2 72 65 73 65 74  63 61 72 65 74 28 77 25  |  .resetcaret(w%|
0000a350  28 61 64 64 72 65 73 73  25 29 2c 2d 31 29 0d 47  |(address%),-1).G|
0000a360  0e 13 20 20 f2 73 65 74  5f 61 5f 73 63 72 6f 6c  |..  .set_a_scrol|
0000a370  6c 0d 47 18 33 20 20 e7  20 61 63 74 69 76 65 25  |l.G.3  . active%|
0000a380  28 61 64 64 72 65 73 73  25 29 3d a3 20 8c 20 f2  |(address%)=. . .|
0000a390  6f 70 65 6e 75 70 28 77  25 28 61 64 64 72 65 73  |openup(w%(addres|
0000a3a0  73 25 29 29 0d 47 22 05  cd 0d 47 2c 2a e7 20 6e  |s%)).G"...G,*. n|
0000a3b0  65 77 25 3d 2d 31 20 8c  20 f2 63 6c 6f 73 65 77  |ew%=-1 . .closew|
0000a3c0  69 6e 64 6f 77 28 77 25  28 61 64 64 72 65 73 73  |indow(w%(address|
0000a3d0  25 29 29 0d 47 36 05 e1  0d 47 40 04 0d 47 4a 11  |%)).G6...G@..GJ.|
0000a3e0  dd 20 f2 67 65 74 5f 61  5f 64 61 74 61 0d 47 54  |. .get_a_data.GT|
0000a3f0  0a ea 20 6e 65 77 25 0d  47 5e 15 e3 20 74 79 70  |.. new%.G^.. typ|
0000a400  65 3d 6e 61 6d 65 20 b8  20 64 6f 62 0d 47 68 2e  |e=name . dob.Gh.|
0000a410  20 20 6e 65 77 24 3d a4  69 63 6f 6e 74 65 78 74  |  new$=.icontext|
0000a420  28 77 25 28 61 64 64 72  65 73 73 25 29 2c 69 63  |(w%(address%),ic|
0000a430  6f 6e 25 28 74 79 70 65  29 29 0d 47 72 23 20 20  |on%(type)).Gr#  |
0000a440  e7 20 6e 65 77 24 3c 3e  61 24 28 74 68 69 73 5f  |. new$<>a$(this_|
0000a450  6e 61 6d 65 25 2c 74 79  70 65 29 20 8c 0d 47 7c  |name%,type) ..G||
0000a460  14 20 20 20 20 61 5f 63  68 61 6e 67 65 64 25 3d  |.    a_changed%=|
0000a470  b9 0d 47 86 20 20 20 20  20 61 24 28 74 68 69 73  |..G.     a$(this|
0000a480  5f 6e 61 6d 65 25 2c 74  79 70 65 29 3d 6e 65 77  |_name%,type)=new|
0000a490  24 0d 47 90 07 20 20 cd  0d 47 9a 0a ed 20 74 79  |$.G..  ..G... ty|
0000a4a0  70 65 0d 47 a4 0a 6e 65  77 25 3d 30 0d 47 ae 2e  |pe.G..new%=0.G..|
0000a4b0  e7 20 a4 73 65 6c 65 63  74 65 64 28 77 25 28 61  |. .selected(w%(a|
0000a4c0  64 64 72 65 73 73 25 29  2c 32 34 29 20 8c 20 6e  |ddress%),24) . n|
0000a4d0  65 77 25 3d 6e 65 77 25  84 31 0d 47 b8 2e e7 20  |ew%=new%.1.G... |
0000a4e0  a4 73 65 6c 65 63 74 65  64 28 77 25 28 61 64 64  |.selected(w%(add|
0000a4f0  72 65 73 73 25 29 2c 31  35 29 20 8c 20 6e 65 77  |ress%),15) . new|
0000a500  25 3d 6e 65 77 25 84 32  0d 47 c2 1f e7 20 6e 65  |%=new%.2.G... ne|
0000a510  77 25 3c 3e 66 6c 61 67  25 28 74 68 69 73 5f 6e  |w%<>flag%(this_n|
0000a520  61 6d 65 25 29 20 8c 0d  47 cc 12 20 20 61 5f 63  |ame%) ..G..  a_c|
0000a530  68 61 6e 67 65 64 25 3d  b9 0d 47 d6 1c 20 20 66  |hanged%=..G..  f|
0000a540  6c 61 67 25 28 74 68 69  73 5f 6e 61 6d 65 25 29  |lag%(this_name%)|
0000a550  3d 6e 65 77 25 0d 47 e0  05 cd 0d 47 ea 05 e1 0d  |=new%.G....G....|
0000a560  47 f4 04 0d 47 fe 13 dd  20 f2 73 65 74 5f 61 5f  |G...G... .set_a_|
0000a570  73 63 72 6f 6c 6c 0d 48  08 2b f2 73 65 74 69 63  |scroll.H.+.setic|
0000a580  6f 6e 76 61 6c 28 77 25  28 61 64 64 72 65 73 73  |onval(w%(address|
0000a590  25 29 2c 32 31 2c 74 68  69 73 5f 6e 61 6d 65 25  |%),21,this_name%|
0000a5a0  29 0d 48 12 27 f2 73 65  74 69 63 6f 6e 76 61 6c  |).H.'.seticonval|
0000a5b0  28 77 25 28 61 64 64 72  65 73 73 25 29 2c 32 33  |(w%(address%),23|
0000a5c0  2c 6e 61 6d 65 73 25 29  0d 48 1c 23 f2 64 65 6c  |,names%).H.#.del|
0000a5d0  65 74 65 69 63 6f 6e 28  77 25 28 61 64 64 72 65  |eteicon(w%(addre|
0000a5e0  73 73 25 29 2c 61 5f 73  69 25 29 0d 48 26 17 61  |ss%),a_si%).H&.a|
0000a5f0  5f 73 34 3d 28 61 5f 73  31 25 2f 6e 61 6d 65 73  |_s4=(a_s1%/names|
0000a600  25 29 0d 48 30 23 61 5f  73 35 25 3d 61 5f 73 30  |%).H0#a_s5%=a_s0|
0000a610  25 2b 61 5f 73 34 2a 28  74 68 69 73 5f 6e 61 6d  |%+a_s4*(this_nam|
0000a620  65 25 2d 31 29 0d 48 3a  14 21 71 25 3d 77 25 28  |e%-1).H:.!q%=w%(|
0000a630  61 64 64 72 65 73 73 25  29 0d 48 44 0e 71 25 21  |address%).HD.q%!|
0000a640  34 3d 61 5f 73 35 25 0d  48 4e 0e 71 25 21 38 3d  |4=a_s5%.HN.q%!8=|
0000a650  61 5f 73 32 25 0d 48 58  13 71 25 21 31 32 3d 71  |a_s2%.HX.q%!12=q|
0000a660  25 21 34 2b 61 5f 73 34  0d 48 62 0f 71 25 21 31  |%!4+a_s4.Hb.q%!1|
0000a670  36 3d 61 5f 73 33 25 0d  48 6c 0f 71 25 21 32 30  |6=a_s3%.Hl.q%!20|
0000a680  3d 61 5f 73 66 25 0d 48  76 23 c8 99 22 57 69 6d  |=a_sf%.Hv#.."Wim|
0000a690  70 5f 43 72 65 61 74 65  49 63 6f 6e 22 2c 2c 71  |p_CreateIcon",,q|
0000a6a0  25 20 b8 20 61 5f 73 69  25 0d 48 80 1e f2 72 65  |% . a_si%.H...re|
0000a6b0  64 6f 69 63 6f 6e 28 77  25 28 61 64 64 72 65 73  |doicon(w%(addres|
0000a6c0  73 25 29 2c 31 37 29 0d  48 8a 05 e1 0d 48 94 04  |s%),17).H....H..|
0000a6d0  0d 48 9e 0e dd 20 f2 62  6c 61 6e 6b 5f 61 0d 48  |.H... .blank_a.H|
0000a6e0  a8 16 e3 20 74 79 70 65  3d 6e 61 6d 65 20 b8 20  |... type=name . |
0000a6f0  66 69 6c 65 0d 48 b2 1c  20 20 61 24 28 74 68 69  |file.H..  a$(thi|
0000a700  73 5f 6e 61 6d 65 25 2c  74 79 70 65 29 3d 22 22  |s_name%,type)=""|
0000a710  0d 48 bc 0a ed 20 74 79  70 65 0d 48 c6 17 66 6c  |.H... type.H..fl|
0000a720  61 67 25 28 74 68 69 73  5f 6e 61 6d 65 25 29 3d  |ag%(this_name%)=|
0000a730  30 0d 48 d0 18 74 79 70  65 25 28 74 68 69 73 5f  |0.H..type%(this_|
0000a740  6e 61 6d 65 25 29 3d 2d  31 0d 48 da 05 e1 0d 48  |name%)=-1.H....H|
0000a750  e4 04 0d 48 ee 0c dd 20  f2 61 64 64 5f 61 0d 48  |...H... .add_a.H|
0000a760  f8 15 e7 20 6e 61 6d 65  73 25 3d 6d 61 78 5f 61  |... names%=max_a|
0000a770  25 20 8c 0d 49 02 2a 20  20 f2 72 65 70 6f 72 74  |% ..I.*  .report|
0000a780  28 22 32 35 36 20 6e 61  6d 65 73 20 69 73 20 74  |("256 names is t|
0000a790  68 65 20 6d 61 78 69 6d  75 6d 2e 22 29 0d 49 0c  |he maximum.").I.|
0000a7a0  05 cc 0d 49 16 0f 20 20  6e 61 6d 65 73 25 2b 3d  |...I..  names%+=|
0000a7b0  31 0d 49 20 16 20 20 74  79 70 65 25 28 6e 61 6d  |1.I .  type%(nam|
0000a7c0  65 73 25 29 3d 2d 31 0d  49 2a 10 20 20 6c 61 73  |es%)=-1.I*.  las|
0000a7d0  74 5f 61 25 2b 3d 31 0d  49 34 1c 20 20 61 5f 6e  |t_a%+=1.I4.  a_n|
0000a7e0  75 6d 25 28 6e 61 6d 65  73 25 29 3d 6c 61 73 74  |um%(names%)=last|
0000a7f0  5f 61 25 0d 49 3e 14 20  20 f2 73 65 74 5f 61 28  |_a%.I>.  .set_a(|
0000a800  6e 61 6d 65 73 25 29 0d  49 48 28 20 20 f2 70 75  |names%).IH(  .pu|
0000a810  74 63 61 72 65 74 28 77  25 28 61 64 64 72 65 73  |tcaret(w%(addres|
0000a820  73 25 29 2c 69 63 6f 6e  25 28 30 29 2c 30 29 0d  |s%),icon%(0),0).|
0000a830  49 52 05 cd 0d 49 5c 05  e1 0d 49 66 04 0d 49 70  |IR...I\...If..Ip|
0000a840  0f dd 20 f2 64 65 6c 65  74 65 5f 61 0d 49 7a 0c  |.. .delete_a.Iz.|
0000a850  f2 62 6c 61 6e 6b 5f 61  0d 49 84 19 e7 20 74 68  |.blank_a.I... th|
0000a860  69 73 5f 6e 61 6d 65 25  3c 6e 61 6d 65 73 25 20  |is_name%<names% |
0000a870  8c 0d 49 8e 20 20 20 e3  20 61 25 3d 74 68 69 73  |..I.   . a%=this|
0000a880  5f 6e 61 6d 65 25 20 b8  20 6e 61 6d 65 73 25 2d  |_name% . names%-|
0000a890  31 0d 49 98 1a 20 20 20  20 e3 20 74 79 70 65 3d  |1.I..    . type=|
0000a8a0  6e 61 6d 65 20 b8 20 66  69 6c 65 0d 49 a2 23 20  |name . file.I.# |
0000a8b0  20 20 20 20 20 61 24 28  61 25 2c 74 79 70 65 29  |     a$(a%,type)|
0000a8c0  3d 61 24 28 61 25 2b 31  2c 74 79 70 65 29 0d 49  |=a$(a%+1,type).I|
0000a8d0  ac 0e 20 20 20 20 ed 20  74 79 70 65 0d 49 b6 1d  |..    . type.I..|
0000a8e0  20 20 20 20 66 6c 61 67  25 28 61 25 29 3d 66 6c  |    flag%(a%)=fl|
0000a8f0  61 67 25 28 61 25 2b 31  29 0d 49 c0 1d 20 20 20  |ag%(a%+1).I..   |
0000a900  20 74 79 70 65 25 28 61  25 29 3d 74 79 70 65 25  | type%(a%)=type%|
0000a910  28 61 25 2b 31 29 0d 49  ca 1f 20 20 20 20 61 5f  |(a%+1).I..    a_|
0000a920  6e 75 6d 25 28 61 25 29  3d 61 5f 6e 75 6d 25 28  |num%(a%)=a_num%(|
0000a930  61 25 2b 31 29 0d 49 d4  0a 20 20 ed 20 61 25 0d  |a%+1).I..  . a%.|
0000a940  49 de 05 cd 0d 49 e8 1a  e7 20 6e 61 6d 65 73 25  |I....I... names%|
0000a950  3e 31 20 8c 20 6e 61 6d  65 73 25 2d 3d 31 0d 49  |>1 . names%-=1.I|
0000a960  f2 2b e7 20 74 68 69 73  5f 6e 61 6d 65 25 3e 6e  |.+. this_name%>n|
0000a970  61 6d 65 73 25 20 8c 20  74 68 69 73 5f 6e 61 6d  |ames% . this_nam|
0000a980  65 25 3d 6e 61 6d 65 73  25 0d 49 fc 13 6e 65 77  |e%=names%.I..new|
0000a990  25 3d 74 68 69 73 5f 6e  61 6d 65 25 0d 4a 06 11  |%=this_name%.J..|
0000a9a0  74 68 69 73 5f 6e 61 6d  65 25 3d 2d 31 0d 4a 10  |this_name%=-1.J.|
0000a9b0  10 f2 73 65 74 5f 61 28  6e 65 77 25 29 0d 4a 1a  |..set_a(new%).J.|
0000a9c0  10 61 5f 63 68 61 6e 67  65 64 25 3d b9 0d 4a 24  |.a_changed%=..J$|
0000a9d0  05 e1 0d 4a 2e 04 0d 4a  38 17 dd 20 a4 6c 61 73  |...J...J8.. .las|
0000a9e0  74 5f 6e 61 6d 65 28 6e  61 6d 65 25 29 0d 4a 42  |t_name(name%).JB|
0000a9f0  09 ea 20 73 74 24 0d 4a  4c 16 73 74 24 3d 61 24  |.. st$.JL.st$=a$|
0000aa00  28 6e 61 6d 65 25 2c 6e  61 6d 65 29 0d 4a 56 10  |(name%,name).JV.|
0000aa10  c8 95 20 a7 73 74 24 2c  22 20 22 29 0d 4a 60 1b  |.. .st$," ").J`.|
0000aa20  20 20 73 74 24 3d c1 73  74 24 2c a7 73 74 24 2c  |  st$=.st$,.st$,|
0000aa30  22 20 22 29 2b 31 29 0d  4a 6a 05 ce 0d 4a 74 08  |" ")+1).Jj...Jt.|
0000aa40  3d 73 74 24 0d 4a 7e 04  0d 4a 88 1a dd 20 a4 66  |=st$.J~..J... .f|
0000aa50  69 6c 65 6f 6b 61 79 28  66 69 6c 65 74 79 70 65  |ileokay(filetype|
0000aa60  25 29 0d 4a 92 09 6f 6b  25 3d a3 0d 4a 9c 0e f2  |%).J..ok%=..J...|
0000aa70  6d 6f 75 73 65 69 6e 66  6f 0d 4a a6 0e c8 8e 20  |mouseinfo.J.... |
0000aa80  77 69 6e 64 25 20 ca 0d  4a b0 1b 20 20 c9 20 77  |wind% ..J..  . w|
0000aa90  25 28 72 65 63 6f 72 64  25 29 20 3a 20 6f 6b 25  |%(record%) : ok%|
0000aaa0  3d b9 0d 4a ba 05 cb 0d  4a c4 08 3d 6f 6b 25 0d  |=..J....J..=ok%.|
0000aab0  4a ce 04 0d 4a d8 0e dd  20 f2 64 6f 5f 6c 6f 61  |J...J... .do_loa|
0000aac0  64 0d 4a e2 0e c8 8e 20  77 69 6e 64 25 20 ca 0d  |d.J.... wind% ..|
0000aad0  4a ec 13 20 20 c9 20 77  25 28 72 65 63 6f 72 64  |J..  . w%(record|
0000aae0  25 29 0d 4a f6 24 20 20  20 20 74 79 70 65 25 28  |%).J.$    type%(|
0000aaf0  6c 5f 73 65 6c 65 63 74  65 64 25 29 3d 66 69 6c  |l_selected%)=fil|
0000ab00  65 74 79 70 65 25 0d 4b  00 22 20 20 20 20 61 24  |etype%.K."    a$|
0000ab10  28 6c 5f 73 65 6c 65 63  74 65 64 25 2c 66 69 6c  |(l_selected%,fil|
0000ab20  65 29 3d 66 69 6c 65 24  0d 4b 0a 13 20 20 20 20  |e)=file$.K..    |
0000ab30  f2 73 65 74 5f 6c 5f 64  61 74 61 0d 4b 14 05 cb  |.set_l_data.K...|
0000ab40  0d 4b 1e 05 e1 0d 4b 28  04 0d 4b 32 23 f4 20 2d  |.K....K(..K2#. -|
0000ab50  2d 2d 2d 57 49 4d 50 20  4c 69 62 72 61 72 79 20  |---WIMP Library |
0000ab60  72 6f 75 74 69 6e 65 73  2d 2d 2d 2d 0d 4b 3c 04  |routines----.K<.|
0000ab70  0d 4b 46 25 dd 20 f2 6e  65 77 73 70 72 69 74 65  |.KF%. .newsprite|
0000ab80  61 72 65 61 28 f8 20 73  70 72 69 74 65 25 2c 73  |area(. sprite%,s|
0000ab90  69 7a 65 25 29 0d 4b 50  26 e7 20 73 70 72 69 74  |ize%).KP&. sprit|
0000aba0  65 25 3e 2d 31 20 8c 20  f2 6c 6f 73 65 62 6c 6f  |e%>-1 . .loseblo|
0000abb0  63 6b 28 73 70 72 69 74  65 25 29 0d 4b 5a 1f 73  |ck(sprite%).KZ.s|
0000abc0  70 72 69 74 65 25 3d a4  67 65 74 62 6c 6f 63 6b  |prite%=.getblock|
0000abd0  28 73 69 7a 65 25 2b 31  36 29 0d 4b 64 12 e7 20  |(size%+16).Kd.. |
0000abe0  73 70 72 69 74 65 25 3e  2d 31 20 8c 0d 4b 6e 15  |sprite%>-1 ..Kn.|
0000abf0  21 73 70 72 69 74 65 25  3d 73 69 7a 65 25 2b 31  |!sprite%=size%+1|
0000ac00  36 0d 4b 78 0f 73 70 72  69 74 65 25 21 34 3d 30  |6.Kx.sprite%!4=0|
0000ac10  0d 4b 82 10 73 70 72 69  74 65 25 21 38 3d 31 36  |.K..sprite%!8=16|
0000ac20  0d 4b 8c 11 73 70 72 69  74 65 25 21 31 32 3d 31  |.K..sprite%!12=1|
0000ac30  36 0d 4b 96 05 cd 0d 4b  a0 05 e1 0d 4b aa 04 0d  |6.K....K....K...|
0000ac40  4b b4 20 f4 20 3d 3d 3d  3d 20 6d 65 73 73 61 67  |K. . ==== messag|
0000ac50  65 20 72 6f 75 74 69 6e  65 73 20 3d 3d 3d 3d 0d  |e routines ====.|
0000ac60  4b be 04 0d 4b c8 18 dd  20 f2 70 6f 6c 6c 28 70  |K...K... .poll(p|
0000ac70  6f 6c 6c 5f 66 6c 61 67  73 25 29 0d 4b d2 2c c8  |oll_flags%).K.,.|
0000ac80  99 22 57 69 6d 70 5f 50  6f 6c 6c 22 2c 70 6f 6c  |."Wimp_Poll",pol|
0000ac90  6c 5f 66 6c 61 67 73 25  2c 62 6c 6b 25 20 b8 20  |l_flags%,blk% . |
0000aca0  72 65 61 73 6f 6e 25 0d  4b dc 10 f2 73 6f 72 74  |reason%.K...sort|
0000acb0  5f 72 65 61 73 6f 6e 0d  4b e6 05 e1 0d 4b f0 04  |_reason.K....K..|
0000acc0  0d 4b fa 22 dd 20 f2 70  6f 6c 6c 69 64 6c 65 28  |.K.". .pollidle(|
0000acd0  70 6f 6c 6c 5f 66 6c 61  67 73 25 2c 74 69 6d 65  |poll_flags%,time|
0000ace0  25 29 0d 4c 04 36 c8 99  22 57 69 6d 70 5f 50 6f  |%).L.6.."Wimp_Po|
0000acf0  6c 6c 49 64 6c 65 22 2c  70 6f 6c 6c 5f 66 6c 61  |llIdle",poll_fla|
0000ad00  67 73 25 2c 62 6c 6b 25  2c 74 69 6d 65 25 20 b8  |gs%,blk%,time% .|
0000ad10  20 72 65 61 73 6f 6e 25  0d 4c 0e 10 f2 73 6f 72  | reason%.L...sor|
0000ad20  74 5f 72 65 61 73 6f 6e  0d 4c 18 05 e1 0d 4c 22  |t_reason.L....L"|
0000ad30  04 0d 4c 2c 12 dd 20 f2  73 6f 72 74 5f 72 65 61  |..L,.. .sort_rea|
0000ad40  73 6f 6e 0d 4c 36 10 c8  8e 20 72 65 61 73 6f 6e  |son.L6... reason|
0000ad50  25 20 ca 0d 4c 40 19 20  20 c9 20 30 3a e7 20 6e  |% ..L@.  . 0:. n|
0000ad60  75 6c 6c 25 20 8c 20 f2  6e 75 6c 6c 0d 4c 4a 11  |ull% . .null.LJ.|
0000ad70  20 20 c9 20 31 3a f2 72  65 64 72 61 77 0d 4c 54  |  . 1:.redraw.LT|
0000ad80  15 20 20 c9 20 32 3a f2  6f 70 65 6e 77 69 6e 64  |.  . 2:.openwind|
0000ad90  6f 77 0d 4c 5e 1d 20 20  c9 20 33 3a f2 63 6c 6f  |ow.L^.  . 3:.clo|
0000ada0  73 65 77 69 6e 64 6f 77  28 21 62 6c 6b 25 29 0d  |sewindow(!blk%).|
0000adb0  4c 68 46 20 20 c9 20 34  3a e7 20 73 79 73 66 6c  |LhF  . 4:. sysfl|
0000adc0  61 67 73 25 28 a4 69 64  28 21 62 6c 6b 25 29 29  |ags%(.id(!blk%))|
0000add0  80 38 20 8c 20 64 25 3d  a0 28 22 46 4e 6c 65 61  |.8 . d%=.("FNlea|
0000ade0  76 65 5f 22 2b 69 64 24  28 a4 69 64 28 21 62 6c  |ve_"+id$(.id(!bl|
0000adf0  6b 25 29 29 29 0d 4c 72  46 20 20 c9 20 35 3a e7  |k%))).LrF  . 5:.|
0000ae00  20 73 79 73 66 6c 61 67  73 25 28 a4 69 64 28 21  | sysflags%(.id(!|
0000ae10  62 6c 6b 25 29 29 80 38  20 8c 20 64 25 3d a0 28  |blk%)).8 . d%=.(|
0000ae20  22 46 4e 65 6e 74 65 72  5f 22 2b 69 64 24 28 a4  |"FNenter_"+id$(.|
0000ae30  69 64 28 21 62 6c 6b 25  29 29 29 0d 4c 7c 35 20  |id(!blk%))).L|5 |
0000ae40  20 c9 20 36 3a f2 63 6c  69 63 6b 28 21 62 6c 6b  | . 6:.click(!blk|
0000ae50  25 2c 62 6c 6b 25 21 34  2c 62 6c 6b 25 21 38 2c  |%,blk%!4,blk%!8,|
0000ae60  62 6c 6b 25 21 31 32 2c  62 6c 6b 25 21 31 36 29  |blk%!12,blk%!16)|
0000ae70  0d 4c 86 12 20 20 c9 20  37 3a f2 65 6e 64 64 72  |.L..  . 7:.enddr|
0000ae80  61 67 0d 4c 90 2c 20 20  c9 20 38 3a f2 6b 65 79  |ag.L.,  . 8:.key|
0000ae90  28 21 62 6c 6b 25 2c 62  6c 6b 25 21 34 2c 62 6c  |(!blk%,blk%!4,bl|
0000aea0  6b 25 21 32 30 2c 62 6c  6b 25 21 32 34 29 0d 4c  |k%!20,blk%!24).L|
0000aeb0  9a 15 20 20 c9 20 39 3a  f2 6d 65 6e 75 73 65 6c  |..  . 9:.menusel|
0000aec0  65 63 74 0d 4c a4 1b 20  20 c9 20 31 30 3a f4 20  |ect.L..  . 10:. |
0000aed0  73 63 72 6f 6c 6c 20 72  65 71 75 65 73 74 0d 4c  |scroll request.L|
0000aee0  ae 15 20 20 c9 20 31 31  3a 6d 79 63 61 72 65 74  |..  . 11:mycaret|
0000aef0  25 3d a3 0d 4c b8 15 20  20 c9 20 31 32 3a 6d 79  |%=..L..  . 12:my|
0000af00  63 61 72 65 74 25 3d b9  0d 4c c2 2d 20 20 c9 20  |caret%=..L.-  . |
0000af10  31 37 2c 31 38 3a f2 6d  65 73 73 61 67 65 28 62  |17,18:.message(b|
0000af20  6c 6b 25 21 34 2c 62 6c  6b 25 21 38 2c 62 6c 6b  |lk%!4,blk%!8,blk|
0000af30  25 21 31 36 29 0d 4c cc  25 20 20 c9 20 31 39 3a  |%!16).L.%  . 19:|
0000af40  f2 6d 65 73 73 61 67 65  5f 72 65 74 75 72 6e 65  |.message_returne|
0000af50  64 28 62 6c 6b 25 21 31  36 29 0d 4c d6 05 cb 0d  |d(blk%!16).L....|
0000af60  4c e0 05 e1 0d 4c ea 04  0d 4c f4 21 dd 20 f2 6d  |L....L...L.!. .m|
0000af70  65 73 73 61 67 65 5f 72  65 74 75 72 6e 65 64 28  |essage_returned(|
0000af80  6d 65 73 73 61 67 65 25  29 0d 4c fe 11 c8 8e 20  |message%).L.... |
0000af90  6d 65 73 73 61 67 65 25  20 ca 0d 4d 08 36 20 20  |message% ..M.6  |
0000afa0  c9 20 35 20 3a 20 c8 99  22 57 69 6d 70 5f 53 74  |. 5 : .."Wimp_St|
0000afb0  61 72 74 54 61 73 6b 22  2c 22 52 75 6e 20 22 2b  |artTask","Run "+|
0000afc0  a4 73 74 72 69 6e 67 28  62 6c 6b 25 2b 34 34 29  |.string(blk%+44)|
0000afd0  0d 4d 12 05 cb 0d 4d 1c  05 e1 0d 4d 26 04 0d 4d  |.M....M....M&..M|
0000afe0  30 23 dd 20 f2 6d 65 73  73 61 67 65 28 74 61 73  |0#. .message(tas|
0000aff0  6b 25 2c 72 65 66 25 2c  6d 65 73 73 61 67 65 25  |k%,ref%,message%|
0000b000  29 0d 4d 3a 4b e7 20 28  73 74 61 74 75 73 25 3e  |).M:K. (status%>|
0000b010  30 20 80 20 6d 65 73 73  61 67 65 25 3e 3d 31 20  |0 . message%>=1 |
0000b020  80 20 6d 65 73 73 61 67  65 25 3c 3d 37 29 20 84  |. message%<=7) .|
0000b030  20 74 61 73 6b 25 3d 6d  79 74 61 73 6b 25 20 8c  | task%=mytask% .|
0000b040  20 6d 65 73 73 61 67 65  25 3d 2d 31 0d 4d 44 11  | message%=-1.MD.|
0000b050  c8 8e 20 6d 65 73 73 61  67 65 25 20 ca 0d 4d 4e  |.. message% ..MN|
0000b060  12 20 20 c9 20 30 20 3a  20 65 78 69 74 3d b9 0d  |.  . 0 : exit=..|
0000b070  4d 58 09 20 20 c9 20 31  0d 4d 62 15 20 20 20 20  |MX.  . 1.Mb.    |
0000b080  77 69 6e 64 25 3d 62 6c  6b 25 21 32 30 0d 4d 6c  |wind%=blk%!20.Ml|
0000b090  15 20 20 20 20 69 63 6f  6e 25 3d 62 6c 6b 25 21  |.    icon%=blk%!|
0000b0a0  32 34 0d 4d 76 19 20 20  20 20 66 69 6c 65 74 79  |24.Mv.    filety|
0000b0b0  70 65 25 3d 62 6c 6b 25  21 34 30 0d 4d 80 20 20  |pe%=blk%!40.M.  |
0000b0c0  20 20 20 e7 20 a4 66 69  6c 65 6f 6b 61 79 28 66  |   . .fileokay(f|
0000b0d0  69 6c 65 74 79 70 65 25  29 20 8c 0d 4d 8a 13 20  |iletype%) ..M.. |
0000b0e0  20 20 20 20 20 69 74 72  61 6e 73 25 3d 30 0d 4d  |     itrans%=0.M|
0000b0f0  94 1b 20 20 20 20 20 20  66 69 6c 65 73 69 7a 65  |..      filesize|
0000b100  25 3d 62 6c 6b 25 21 33  36 0d 4d 9e 20 20 20 20  |%=blk%!36.M.    |
0000b110  20 20 20 66 69 6c 65 24  3d a4 73 74 72 69 6e 67  |   file$=.string|
0000b120  28 62 6c 6b 25 2b 34 34  29 0d 4d a8 16 20 20 20  |(blk%+44).M..   |
0000b130  20 20 20 68 65 61 70 66  69 6c 65 25 3d 2d 31 0d  |   heapfile%=-1.|
0000b140  4d b2 2c 20 20 20 20 20  20 66 69 6c 65 25 3d a0  |M.,      file%=.|
0000b150  28 22 46 4e 74 72 61 6e  73 62 6c 6f 63 6b 28 66  |("FNtransblock(f|
0000b160  69 6c 65 74 79 70 65 25  29 22 29 0d 4d bc 2a 20  |iletype%)").M.* |
0000b170  20 20 20 20 20 e7 20 68  65 61 70 66 69 6c 65 25  |     . heapfile%|
0000b180  3d 2d 31 20 8c 20 68 65  61 70 66 69 6c 65 25 3d  |=-1 . heapfile%=|
0000b190  66 69 6c 65 25 0d 4d c6  17 20 20 20 20 20 20 62  |file%.M..      b|
0000b1a0  6c 6b 25 21 32 30 3d 66  69 6c 65 25 0d 4d d0 1b  |lk%!20=file%.M..|
0000b1b0  20 20 20 20 20 20 62 6c  6b 25 21 32 34 3d 66 69  |      blk%!24=fi|
0000b1c0  6c 65 73 69 7a 65 25 0d  4d da 25 20 20 20 20 20  |lesize%.M.%     |
0000b1d0  20 e7 20 62 6c 6b 25 21  32 30 3e 2d 31 20 8c 20  | . blk%!20>-1 . |
0000b1e0  f2 72 65 70 6c 79 28 31  38 2c 36 29 0d 4d e4 09  |.reply(18,6).M..|
0000b1f0  20 20 20 20 cd 0d 4d ee  09 20 20 c9 20 32 0d 4d  |    ..M..  . 2.M|
0000b200  f8 31 20 20 20 20 f2 73  61 76 65 28 64 72 61 67  |.1    .save(drag|
0000b210  69 64 25 2c a4 73 74 72  69 6e 67 28 62 6c 6b 25  |id%,.string(blk%|
0000b220  2b 34 34 29 2c 70 72 65  70 61 72 65 64 25 29 0d  |+44),prepared%).|
0000b230  4e 02 3f 20 20 20 20 e7  20 73 61 76 65 64 25 20  |N.?    . saved% |
0000b240  8c 20 f2 74 65 6c 6c 74  6f 6c 6f 61 64 20 8b 20  |. .telltoload . |
0000b250  f2 72 65 70 6f 72 74 28  22 43 6f 75 6c 64 20 6e  |.report("Could n|
0000b260  6f 74 20 73 61 76 65 20  66 69 6c 65 22 29 0d 4e  |ot save file").N|
0000b270  0c 2b 20 20 c9 20 33 20  3a 20 f2 6c 6f 61 64 28  |.+  . 3 : .load(|
0000b280  a4 73 74 72 69 6e 67 28  62 6c 6b 25 2b 34 34 29  |.string(blk%+44)|
0000b290  2c 62 6c 6b 25 21 34 30  29 0d 4e 16 2b 20 20 c9  |,blk%!40).N.+  .|
0000b2a0  20 35 20 3a 20 f2 6c 6f  61 64 28 a4 73 74 72 69  | 5 : .load(.stri|
0000b2b0  6e 67 28 62 6c 6b 25 2b  34 34 29 2c 62 6c 6b 25  |ng(blk%+44),blk%|
0000b2c0  21 34 30 29 0d 4e 20 09  20 20 c9 20 36 0d 4e 2a  |!40).N .  . 6.N*|
0000b2d0  1f 20 20 20 20 74 6f 67  6f 25 3d 66 69 6c 65 73  |.    togo%=files|
0000b2e0  69 7a 65 25 2d 6f 74 72  61 6e 73 25 0d 4e 34 27  |ize%-otrans%.N4'|
0000b2f0  20 20 20 20 e7 20 74 6f  67 6f 25 3e 62 6c 6b 25  |    . togo%>blk%|
0000b300  21 32 34 20 8c 20 74 6f  67 6f 25 3d 62 6c 6b 25  |!24 . togo%=blk%|
0000b310  21 32 34 0d 4e 3e 3b 20  20 20 20 e7 20 74 6f 67  |!24.N>;    . tog|
0000b320  6f 25 2b 6f 74 72 61 6e  73 25 3e 66 69 6c 65 73  |o%+otrans%>files|
0000b330  69 7a 65 25 20 8c 20 74  6f 67 6f 25 3d 66 69 6c  |ize% . togo%=fil|
0000b340  65 73 69 7a 65 25 2d 6f  74 72 61 6e 73 25 0d 4e  |esize%-otrans%.N|
0000b350  48 4c 20 20 20 20 c8 99  22 57 69 6d 70 5f 54 72  |HL    .."Wimp_Tr|
0000b360  61 6e 73 66 65 72 42 6c  6f 63 6b 22 2c 6d 79 74  |ansferBlock",myt|
0000b370  61 73 6b 25 2c 73 61 76  65 62 75 66 66 25 2b 6f  |ask%,savebuff%+o|
0000b380  74 72 61 6e 73 25 2c 74  61 73 6b 25 2c 62 6c 6b  |trans%,task%,blk|
0000b390  25 21 32 30 2c 74 6f 67  6f 25 0d 4e 52 15 20 20  |%!20,togo%.NR.  |
0000b3a0  20 20 62 6c 6b 25 21 32  34 3d 74 6f 67 6f 25 0d  |  blk%!24=togo%.|
0000b3b0  4e 5c 14 20 20 20 20 f2  72 65 70 6c 79 28 31 38  |N\.    .reply(18|
0000b3c0  2c 37 29 0d 4e 66 16 20  20 20 20 6f 74 72 61 6e  |,7).Nf.    otran|
0000b3d0  73 25 2b 3d 74 6f 67 6f  25 0d 4e 70 48 20 20 20  |s%+=togo%.NpH   |
0000b3e0  20 e7 20 6f 74 72 61 6e  73 25 3d 66 69 6c 65 73  | . otrans%=files|
0000b3f0  69 7a 65 25 20 8c 20 64  25 3d a0 28 22 46 4e 66  |ize% . d%=.("FNf|
0000b400  69 6e 69 73 68 65 64 74  72 61 6e 73 22 2b c3 7e  |inishedtrans"+.~|
0000b410  28 6d 69 73 63 25 28 64  72 61 67 69 64 25 29 29  |(misc%(dragid%))|
0000b420  29 0d 4e 7a 09 20 20 c9  20 37 0d 4e 84 18 20 20  |).Nz.  . 7.N..  |
0000b430  20 20 69 74 72 61 6e 73  25 2b 3d 62 6c 6b 25 21  |  itrans%+=blk%!|
0000b440  32 34 0d 4e 8e 1d 20 20  20 20 e7 20 69 74 72 61  |24.N..    . itra|
0000b450  6e 73 25 3c 66 69 6c 65  73 69 7a 65 25 20 8c 0d  |ns%<filesize% ..|
0000b460  4e 98 1b 20 20 20 20 20  20 66 69 6c 65 73 69 7a  |N..      filesiz|
0000b470  65 25 3d 69 74 72 61 6e  73 25 0d 4e a2 28 20 20  |e%=itrans%.N.(  |
0000b480  20 20 20 20 64 25 3d a0  28 22 46 4e 6c 6f 61 64  |    d%=.("FNload|
0000b490  65 64 22 2b c3 7e 28 66  69 6c 65 74 79 70 65 25  |ed"+.~(filetype%|
0000b4a0  29 29 0d 4e ac 09 20 20  20 20 cc 0d 4e b6 2a 20  |)).N..    ..N.* |
0000b4b0  20 20 20 20 20 e7 20 a4  65 78 74 65 6e 64 62 6c  |     . .extendbl|
0000b4c0  6f 63 6b 28 68 65 61 70  66 69 6c 65 25 2c 31 30  |ock(heapfile%,10|
0000b4d0  32 34 29 20 8c 0d 4e c0  1b 20 20 20 20 20 20 20  |24) ..N..       |
0000b4e0  20 66 69 6c 65 73 69 7a  65 25 2b 3d 31 30 32 34  | filesize%+=1024|
0000b4f0  0d 4e ca 21 20 20 20 20  20 20 20 20 62 6c 6b 25  |.N.!        blk%|
0000b500  21 32 30 3d 66 69 6c 65  25 2b 69 74 72 61 6e 73  |!20=file%+itrans|
0000b510  25 0d 4e d4 25 20 20 20  20 20 20 20 20 62 6c 6b  |%.N.%        blk|
0000b520  25 21 32 34 3d 66 69 6c  65 73 69 7a 65 25 2d 69  |%!24=filesize%-i|
0000b530  74 72 61 6e 73 25 0d 4e  de 18 20 20 20 20 20 20  |trans%.N..      |
0000b540  20 20 f2 72 65 70 6c 79  28 31 38 2c 36 29 0d 4e  |  .reply(18,6).N|
0000b550  e8 0b 20 20 20 20 20 20  cc 0d 4e f2 1d 20 20 20  |..      ..N..   |
0000b560  20 20 20 20 20 f2 6c 6f  73 65 62 6c 6f 63 6b 28  |     .loseblock(|
0000b570  66 69 6c 65 25 29 0d 4e  fc 23 20 20 20 20 20 20  |file%).N.#      |
0000b580  20 20 f2 72 65 70 6f 72  74 28 22 4f 75 74 20 6f  |  .report("Out o|
0000b590  66 20 72 6f 6f 6d 2e 22  29 0d 4f 06 0b 20 20 20  |f room.").O..   |
0000b5a0  20 20 20 cd 0d 4f 10 09  20 20 20 20 cd 0d 4f 1a  |   ..O..    ..O.|
0000b5b0  14 20 20 c9 20 38 20 3a  20 f2 70 72 65 71 75 69  |.  . 8 : .prequi|
0000b5c0  74 0d 4f 24 23 20 20 c9  20 31 30 3a 20 f2 61 64  |t.O$#  . 10: .ad|
0000b5d0  64 74 6f 62 6f 6f 74 66  69 6c 65 28 62 6c 6b 25  |dtobootfile(blk%|
0000b5e0  21 32 30 29 0d 4f 2e 1b  20 20 c9 20 39 2c 26 34  |!20).O..  . 9,&4|
0000b5f0  30 30 43 31 20 3a 20 f2  6e 65 77 6d 6f 64 65 0d  |00C1 : .newmode.|
0000b600  4f 38 10 20 20 c9 20 26  34 30 30 43 39 20 3a 0d  |O8.  . &400C9 :.|
0000b610  4f 42 18 20 20 20 20 69  64 25 3d a4 69 64 28 62  |OB.    id%=.id(b|
0000b620  6c 6b 25 21 32 30 29 0d  4f 4c 12 20 20 20 20 e7  |lk%!20).OL.    .|
0000b630  20 69 64 25 3e 2d 31 20  8c 0d 4f 56 38 20 20 20  | id%>-1 ..OV8   |
0000b640  20 20 20 e7 20 73 79 73  66 6c 61 67 73 25 28 69  |   . sysflags%(i|
0000b650  64 25 29 80 32 20 8c 20  64 25 3d a0 28 22 46 4e  |d%).2 . d%=.("FN|
0000b660  63 6c 6f 73 65 5f 22 2b  69 64 24 28 69 64 25 29  |close_"+id$(id%)|
0000b670  29 0d 4f 60 09 20 20 20  20 cd 0d 4f 6a 3f 20 20  |).O`.    ..Oj?  |
0000b680  c9 20 26 34 30 30 43 30  20 3a 20 f2 6d 65 6e 75  |. &400C0 : .menu|
0000b690  5f 77 61 72 6e 69 6e 67  28 62 6c 6b 25 21 32 30  |_warning(blk%!20|
0000b6a0  2c 62 6c 6b 25 21 32 34  2c 62 6c 6b 25 21 32 38  |,blk%!24,blk%!28|
0000b6b0  2c 62 6c 6b 25 21 33 32  29 0d 4f 74 05 cb 0d 4f  |,blk%!32).Ot...O|
0000b6c0  7e 05 e1 0d 4f 88 04 0d  4f 92 1b dd 20 f2 72 65  |~...O...O... .re|
0000b6d0  70 6c 79 28 74 79 70 65  25 2c 62 6c 6b 25 21 31  |ply(type%,blk%!1|
0000b6e0  36 29 0d 4f 9c 10 62 6c  6b 25 21 31 32 3d 72 65  |6).O..blk%!12=re|
0000b6f0  66 25 0d 4f a6 29 c8 99  22 57 69 6d 70 5f 53 65  |f%.O.).."Wimp_Se|
0000b700  6e 64 4d 65 73 73 61 67  65 22 2c 74 79 70 65 25  |ndMessage",type%|
0000b710  2c 62 6c 6b 25 2c 74 61  73 6b 25 0d 4f b0 05 e1  |,blk%,task%.O...|
0000b720  0d 4f ba 04 0d 4f c4 0e  dd 20 f2 6e 65 77 6d 6f  |.O...O... .newmo|
0000b730  64 65 0d 4f ce 32 21 71  25 3d 31 31 3a 71 25 21  |de.O.2!q%=11:q%!|
0000b740  34 3d 31 32 3a 71 25 21  38 3d 34 3a 71 25 21 31  |4=12:q%!8=4:q%!1|
0000b750  32 3d 35 3a 71 25 21 31  36 3d 33 3a 71 25 21 32  |2=5:q%!16=3:q%!2|
0000b760  30 3d 2d 31 0d 4f d8 21  c8 99 22 4f 53 5f 52 65  |0=-1.O.!.."OS_Re|
0000b770  61 64 56 64 75 56 61 72  69 61 62 6c 65 73 22 2c  |adVduVariables",|
0000b780  71 25 2c 71 25 0d 4f e2  18 73 63 78 25 3d 28 21  |q%,q%.O..scx%=(!|
0000b790  71 25 2b 31 29 3c 3c 28  71 25 21 38 29 0d 4f ec  |q%+1)<<(q%!8).O.|
0000b7a0  1a 73 63 79 25 3d 28 71  25 21 34 2b 31 29 3c 3c  |.scy%=(q%!4+1)<<|
0000b7b0  28 71 25 21 31 32 29 0d  4f f6 24 70 69 78 65 6c  |(q%!12).O.$pixel|
0000b7c0  77 25 3d 31 3c 3c 71 25  21 38 3a 70 69 78 65 6c  |w%=1<<q%!8:pixel|
0000b7d0  68 25 3d 31 3c 3c 71 25  21 31 32 0d 50 00 10 64  |h%=1<<q%!12.P..d|
0000b7e0  63 6f 6c 73 25 3d 71 25  21 31 36 0d 50 0a 22 c8  |cols%=q%!16.P.".|
0000b7f0  99 22 57 69 6d 70 5f 52  65 61 64 50 61 6c 65 74  |."Wimp_ReadPalet|
0000b800  74 65 22 2c 2c 64 65 73  6b 70 61 6c 25 0d 50 14  |te",,deskpal%.P.|
0000b810  05 e1 0d 50 1e 04 0d 50  28 0e dd 20 f2 70 72 65  |...P...P(.. .pre|
0000b820  71 75 69 74 0d 50 32 39  e7 20 61 5f 63 68 61 6e  |quit.P29. a_chan|
0000b830  67 65 64 25 20 84 20 73  5f 63 68 61 6e 67 65 64  |ged% . s_changed|
0000b840  25 20 84 20 6e 5f 63 68  61 6e 67 65 64 25 20 84  |% . n_changed% .|
0000b850  20 63 5f 63 68 61 6e 67  65 64 25 20 8c 0d 50 3c  | c_changed% ..P<|
0000b860  55 20 20 e7 20 a4 63 68  65 63 6b 28 22 54 68 65  |U  . .check("The|
0000b870  72 65 20 69 73 20 75 6e  73 61 76 65 64 20 64 61  |re is unsaved da|
0000b880  74 61 2c 20 63 6c 69 63  6b 20 43 61 6e 63 65 6c  |ta, click Cancel|
0000b890  20 74 6f 20 61 62 6f 72  74 20 65 78 69 74 2e 22  | to abort exit."|
0000b8a0  29 3d a3 20 8c 20 f2 72  65 70 6c 79 28 31 37 2c  |)=. . .reply(17,|
0000b8b0  38 29 0d 50 46 05 cd 0d  50 50 05 e1 0d 50 5a 04  |8).PF...PP...PZ.|
0000b8c0  0d 50 64 1d dd 20 f2 61  64 64 74 6f 62 6f 6f 74  |.Pd.. .addtoboot|
0000b8d0  66 69 6c 65 28 68 61 6e  64 6c 65 25 29 0d 50 6e  |file(handle%).Pn|
0000b8e0  16 d5 23 66 69 6c 65 2c  22 52 75 6e 20 22 2b 64  |..#file,"Run "+d|
0000b8f0  69 72 24 0d 50 78 05 e1  0d 50 82 04 0d 50 8c 11  |ir$.Px...P...P..|
0000b900  dd 20 f2 74 65 6c 6c 74  6f 6c 6f 61 64 0d 50 96  |. .telltoload.P.|
0000b910  0e f2 6d 6f 75 73 65 69  6e 66 6f 0d 50 a0 11 62  |..mouseinfo.P..b|
0000b920  6c 6b 25 21 32 30 3d 77  69 6e 64 25 0d 50 aa 11  |lk%!20=wind%.P..|
0000b930  62 6c 6b 25 21 32 34 3d  69 63 6f 6e 25 0d 50 b4  |blk%!24=icon%.P.|
0000b940  0f 62 6c 6b 25 21 32 38  3d 6d 78 25 0d 50 be 0f  |.blk%!28=mx%.P..|
0000b950  62 6c 6b 25 21 33 32 3d  6d 79 25 0d 50 c8 15 62  |blk%!32=my%.P..b|
0000b960  6c 6b 25 21 33 36 3d 66  69 6c 65 73 69 7a 65 25  |lk%!36=filesize%|
0000b970  0d 50 d2 15 62 6c 6b 25  21 34 30 3d 66 69 6c 65  |.P..blk%!40=file|
0000b980  74 79 70 65 25 0d 50 dc  10 f2 72 65 70 6c 79 28  |type%.P...reply(|
0000b990  31 37 2c 33 29 0d 50 e6  05 e1 0d 50 f0 04 0d 50  |17,3).P....P...P|
0000b9a0  fa 2e dd 20 f2 64 72 6f  70 66 69 6c 65 28 66 69  |... .dropfile(fi|
0000b9b0  6c 65 6e 61 6d 65 24 2c  66 69 6c 65 74 79 70 65  |lename$,filetype|
0000b9c0  25 2c 66 69 6c 65 73 69  7a 65 25 29 0d 51 04 0e  |%,filesize%).Q..|
0000b9d0  f2 6d 6f 75 73 65 69 6e  66 6f 0d 51 0e 0d 62 6c  |.mouseinfo.Q..bl|
0000b9e0  6b 25 21 31 32 3d 30 0d  51 18 0d 62 6c 6b 25 21  |k%!12=0.Q..blk%!|
0000b9f0  31 36 3d 31 0d 51 22 11  62 6c 6b 25 21 32 30 3d  |16=1.Q".blk%!20=|
0000ba00  77 69 6e 64 25 0d 51 2c  11 62 6c 6b 25 21 32 34  |wind%.Q,.blk%!24|
0000ba10  3d 69 63 6f 6e 25 0d 51  36 0f 62 6c 6b 25 21 32  |=icon%.Q6.blk%!2|
0000ba20  38 3d 6d 78 25 0d 51 40  0f 62 6c 6b 25 21 33 32  |8=mx%.Q@.blk%!32|
0000ba30  3d 6d 79 25 0d 51 4a 15  62 6c 6b 25 21 33 36 3d  |=my%.QJ.blk%!36=|
0000ba40  66 69 6c 65 73 69 7a 65  25 0d 51 54 15 62 6c 6b  |filesize%.QT.blk|
0000ba50  25 21 34 30 3d 66 69 6c  65 74 79 70 65 25 0d 51  |%!40=filetype%.Q|
0000ba60  5e 25 24 28 62 6c 6b 25  2b 34 34 29 3d a4 6c 61  |^%$(blk%+44)=.la|
0000ba70  73 74 62 69 74 28 66 69  6c 65 6e 61 6d 65 24 29  |stbit(filename$)|
0000ba80  2b bd 30 0d 51 68 1d 21  62 6c 6b 25 3d 28 a9 24  |+.0.Qh.!blk%=(.$|
0000ba90  28 62 6c 6b 25 2b 34 34  29 2b 34 38 29 80 ac 33  |(blk%+44)+48)..3|
0000baa0  0d 51 72 30 c8 99 22 57  69 6d 70 5f 53 65 6e 64  |.Qr0.."Wimp_Send|
0000bab0  4d 65 73 73 61 67 65 22  2c 31 37 2c 62 6c 6b 25  |Message",17,blk%|
0000bac0  2c 62 6c 6b 25 21 32 30  2c 62 6c 6b 25 21 32 34  |,blk%!20,blk%!24|
0000bad0  0d 51 7c 0d 6f 74 72 61  6e 73 25 3d 30 0d 51 86  |.Q|.otrans%=0.Q.|
0000bae0  05 e1 0d 51 90 04 0d 51  9a 19 f4 20 2d 20 53 70  |...Q...Q... - Sp|
0000baf0  72 69 74 65 20 72 6f 75  74 69 6e 65 73 20 2d 0d  |rite routines -.|
0000bb00  51 a4 04 0d 51 ae 12 dd  20 f2 6c 6f 61 64 73 70  |Q...Q... .loadsp|
0000bb10  72 69 74 65 73 0d 51 b8  1f 73 70 72 69 74 65 66  |rites.Q..spritef|
0000bb20  69 6c 65 24 3d 64 69 72  24 2b 22 2e 53 70 72 69  |ile$=dir$+".Spri|
0000bb30  74 65 73 22 0d 51 c2 1a  f2 66 69 6c 65 69 6e 66  |tes".Q...fileinf|
0000bb40  6f 28 73 70 72 69 74 65  66 69 6c 65 24 29 0d 51  |o(spritefile$).Q|
0000bb50  cc 10 e7 20 65 78 69 73  74 25 3d 31 20 8c 0d 51  |... exist%=1 ..Q|
0000bb60  d6 17 73 73 69 7a 65 25  3d 66 69 6c 65 73 69 7a  |..ssize%=filesiz|
0000bb70  65 25 2b 31 36 0d 51 e0  15 de 20 73 70 72 69 74  |e%+16.Q... sprit|
0000bb80  65 73 25 20 73 73 69 7a  65 25 0d 51 ea 14 21 73  |es% ssize%.Q..!s|
0000bb90  70 72 69 74 65 73 25 3d  73 73 69 7a 65 25 0d 51  |prites%=ssize%.Q|
0000bba0  f4 10 73 70 72 69 74 65  73 25 21 34 3d 30 0d 51  |..sprites%!4=0.Q|
0000bbb0  fe 11 73 70 72 69 74 65  73 25 21 38 3d 31 36 0d  |..sprites%!8=16.|
0000bbc0  52 08 12 73 70 72 69 74  65 73 25 21 31 32 3d 31  |R..sprites%!12=1|
0000bbd0  36 0d 52 12 2f c8 99 22  4f 53 5f 53 70 72 69 74  |6.R./.."OS_Sprit|
0000bbe0  65 4f 70 22 2c 31 30 2b  32 35 36 2c 73 70 72 69  |eOp",10+256,spri|
0000bbf0  74 65 73 25 2c 73 70 72  69 74 65 66 69 6c 65 24  |tes%,spritefile$|
0000bc00  0d 52 1c 05 cc 0d 52 26  0f 73 70 72 69 74 65 73  |.R....R&.sprites|
0000bc10  25 3d 2d 31 0d 52 30 05  cd 0d 52 3a 05 e1 0d 52  |%=-1.R0...R:...R|
0000bc20  44 04 0d 52 4e 2f dd 20  f2 70 75 74 73 70 72 69  |D..RN/. .putspri|
0000bc30  74 65 28 73 70 72 69 74  65 25 2c 73 70 72 69 74  |te(sprite%,sprit|
0000bc40  65 24 2c 78 25 2c 79 25  2c 7a 31 25 2c 7a 32 25  |e$,x%,y%,z1%,z2%|
0000bc50  29 0d 52 58 34 c8 99 22  4f 53 5f 53 70 72 69 74  |).RX4.."OS_Sprit|
0000bc60  65 4f 70 22 2c 32 34 2b  32 35 36 2c 73 70 72 69  |eOp",24+256,spri|
0000bc70  74 65 25 2c 73 70 72 69  74 65 24 20 b8 20 2c 2c  |te%,sprite$ . ,,|
0000bc80  61 64 64 72 25 0d 52 62  38 c8 99 22 4f 53 5f 53  |addr%.Rb8.."OS_S|
0000bc90  70 72 69 74 65 4f 70 22  2c 34 30 2b 32 35 36 2c  |priteOp",40+256,|
0000bca0  73 70 72 69 74 65 25 2c  73 70 72 69 74 65 24 20  |sprite%,sprite$ |
0000bcb0  b8 20 2c 2c 2c 2c 2c 2c  6d 6f 64 65 25 0d 52 6c  |. ,,,,,,mode%.Rl|
0000bcc0  3c 73 25 3d a4 74 61 62  6c 65 73 28 61 64 64 72  |<s%=.tables(addr|
0000bcd0  25 2c 6d 6f 64 65 25 2c  73 70 6d 6f 64 65 25 2c  |%,mode%,spmode%,|
0000bce0  73 70 61 6c 25 2c 31 2c  31 2c 64 67 63 6f 6c 25  |spal%,1,1,dgcol%|
0000bcf0  2c 64 73 63 61 6c 65 25  29 0d 52 76 3f c8 99 22  |,dscale%).Rv?.."|
0000bd00  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 35 32 2b  |OS_SpriteOp",52+|
0000bd10  35 31 32 2c 73 70 72 69  74 65 25 2c 61 64 64 72  |512,sprite%,addr|
0000bd20  25 2c 78 25 2c 79 25 2c  38 2c 64 73 63 61 6c 65  |%,x%,y%,8,dscale|
0000bd30  25 2c 64 67 63 6f 6c 25  0d 52 80 05 e1 0d 52 8a  |%,dgcol%.R....R.|
0000bd40  04 0d 52 94 3e dd 20 a4  74 61 62 6c 65 73 28 73  |..R.>. .tables(s|
0000bd50  61 64 64 72 25 2c 73 70  6d 6f 64 65 25 2c 64 6d  |addr%,spmode%,dm|
0000bd60  6f 64 65 25 2c 70 61 6c  25 2c 7a 31 25 2c 7a 32  |ode%,pal%,z1%,z2|
0000bd70  25 2c 67 63 6f 6c 25 2c  73 63 61 6c 65 25 29 0d  |%,gcol%,scale%).|
0000bd80  52 9e 15 ea 20 73 70 61  6c 25 2c 70 61 6c 62 6c  |R... spal%,palbl|
0000bd90  6f 63 6b 25 0d 52 a8 18  70 61 6c 62 6c 6f 63 6b  |ock%.R..palblock|
0000bda0  25 3d 70 61 6c 62 6c 6f  63 6b 32 25 0d 52 b2 28  |%=palblock2%.R.(|
0000bdb0  21 73 63 61 6c 65 25 3d  28 31 3c 3c a4 6d 6f 64  |!scale%=(1<<.mod|
0000bdc0  65 76 61 72 28 73 70 6d  6f 64 65 25 2c 34 29 29  |evar(spmode%,4))|
0000bdd0  2a 7a 31 25 0d 52 bc 29  73 63 61 6c 65 25 21 34  |*z1%.R.)scale%!4|
0000bde0  3d 28 31 3c 3c a4 6d 6f  64 65 76 61 72 28 73 70  |=(1<<.modevar(sp|
0000bdf0  6d 6f 64 65 25 2c 35 29  29 2a 7a 31 25 0d 52 c6  |mode%,5))*z1%.R.|
0000be00  28 73 63 61 6c 65 25 21  38 3d 28 31 3c 3c a4 6d  |(scale%!8=(1<<.m|
0000be10  6f 64 65 76 61 72 28 64  6d 6f 64 65 25 2c 34 29  |odevar(dmode%,4)|
0000be20  29 2a 7a 32 25 0d 52 d0  29 73 63 61 6c 65 25 21  |)*z2%.R.)scale%!|
0000be30  31 32 3d 28 31 3c 3c a4  6d 6f 64 65 76 61 72 28  |12=(1<<.modevar(|
0000be40  64 6d 6f 64 65 25 2c 35  29 29 2a 7a 32 25 0d 52  |dmode%,5))*z2%.R|
0000be50  da 1e 73 70 72 69 74 65  70 61 6c 25 3d 28 73 61  |..spritepal%=(sa|
0000be60  64 64 72 25 21 33 32 3c  3e 34 34 29 0d 52 e4 1e  |ddr%!32<>44).R..|
0000be70  73 63 6f 6c 73 25 3d a4  6d 6f 64 65 76 61 72 28  |scols%=.modevar(|
0000be80  73 70 6d 6f 64 65 25 2c  33 29 0d 52 ee 49 e7 20  |spmode%,3).R.I. |
0000be90  73 61 64 64 72 25 21 33  32 3c 3e 34 34 20 8c 20  |saddr%!32<>44 . |
0000bea0  73 70 61 6c 25 3d a4 73  70 72 69 74 65 70 61 6c  |spal%=.spritepal|
0000beb0  65 74 74 65 28 73 61 64  64 72 25 29 20 8b 20 73  |ette(saddr%) . s|
0000bec0  70 61 6c 25 3d a4 77 70  61 6c 28 73 70 6d 6f 64  |pal%=.wpal(spmod|
0000bed0  65 25 29 0d 52 f8 08 73  25 3d a3 0d 53 02 3f c8  |e%).R..s%=..S.?.|
0000bee0  99 22 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 53 65  |."ColourTrans_Se|
0000bef0  6c 65 63 74 54 61 62 6c  65 22 2c 73 70 6d 6f 64  |lectTable",spmod|
0000bf00  65 25 2c 73 70 61 6c 25  2c 64 6d 6f 64 65 25 2c  |e%,spal%,dmode%,|
0000bf10  70 61 6c 25 2c 67 63 6f  6c 25 0d 53 0c 56 e7 20  |pal%,gcol%.S.V. |
0000bf20  21 73 63 61 6c 65 25 3d  73 63 61 6c 65 25 21 38  |!scale%=scale%!8|
0000bf30  20 80 20 73 63 61 6c 65  25 21 34 3d 73 63 61 6c  | . scale%!4=scal|
0000bf40  65 25 21 31 32 20 80 20  a4 6d 6f 64 65 76 61 72  |e%!12 . .modevar|
0000bf50  28 73 70 6d 6f 64 65 25  2c 33 29 3d a4 6d 6f 64  |(spmode%,3)=.mod|
0000bf60  65 76 61 72 28 64 6d 6f  64 65 25 2c 33 29 20 8c  |evar(dmode%,3) .|
0000bf70  0d 53 16 1e 20 20 63 6f  6c 73 25 3d a4 6d 6f 64  |.S..  cols%=.mod|
0000bf80  65 76 61 72 28 64 6d 6f  64 65 25 2c 33 29 0d 53  |evar(dmode%,3).S|
0000bf90  20 1c 20 20 e7 20 63 6f  6c 73 25 3d 36 33 20 8c  | .  . cols%=63 .|
0000bfa0  20 63 6f 6c 73 25 3d 32  35 35 0d 53 2a 0a 20 20  | cols%=255.S*.  |
0000bfb0  73 25 3d b9 0d 53 34 14  20 20 e3 20 63 25 3d 30  |s%=..S4.  . c%=0|
0000bfc0  20 b8 20 63 6f 6c 73 25  0d 53 3e 1d 20 20 20 20  | . cols%.S>.    |
0000bfd0  e7 20 67 63 6f 6c 25 3f  63 25 3c 3e 63 25 20 8c  |. gcol%?c%<>c% .|
0000bfe0  20 73 25 3d a3 0d 53 48  0a 20 20 ed 20 63 25 0d  | s%=..SH.  . c%.|
0000bff0  53 52 05 cd 0d 53 5c 07  3d 73 25 0d 53 66 04 0d  |SR...S\.=s%.Sf..|
0000c000  53 70 1c dd 20 a4 73 70  72 69 74 65 70 61 6c 65  |Sp.. .spritepale|
0000c010  74 74 65 28 73 61 64 64  72 25 29 0d 53 7a 1d 63  |tte(saddr%).Sz.c|
0000c020  6f 6c 73 25 3d a4 6d 6f  64 65 76 61 72 28 73 70  |ols%=.modevar(sp|
0000c030  6d 6f 64 65 25 2c 33 29  0d 53 84 19 e7 20 63 6f  |mode%,3).S... co|
0000c040  6c 73 25 3e 31 35 20 8c  20 63 6f 6c 73 25 3d 31  |ls%>15 . cols%=1|
0000c050  35 0d 53 8e 12 e3 20 63  25 3d 30 20 b8 20 63 6f  |5.S... c%=0 . co|
0000c060  6c 73 25 0d 53 98 29 70  61 6c 62 6c 6f 63 6b 25  |ls%.S.)palblock%|
0000c070  21 28 63 25 3c 3c 32 29  3d 73 61 64 64 72 25 21  |!(c%<<2)=saddr%!|
0000c080  28 34 34 2b 28 63 25 3c  3c 33 29 29 0d 53 a2 08  |(44+(c%<<3)).S..|
0000c090  ed 20 63 25 0d 53 ac 0e  3d 70 61 6c 62 6c 6f 63  |. c%.S..=palbloc|
0000c0a0  6b 25 0d 53 b6 04 0d 53  c0 21 dd 20 f2 63 6f 70  |k%.S...S.!. .cop|
0000c0b0  79 70 61 6c 65 74 74 65  28 66 61 64 64 72 25 2c  |ypalette(faddr%,|
0000c0c0  74 61 64 64 72 25 29 0d  53 ca 1d e3 20 61 25 3d  |taddr%).S... a%=|
0000c0d0  34 34 20 b8 20 66 61 64  64 72 25 21 33 32 2d 34  |44 . faddr%!32-4|
0000c0e0  20 88 20 34 0d 53 d4 19  20 20 74 61 64 64 72 25  | . 4.S..  taddr%|
0000c0f0  21 61 25 3d 66 61 64 64  72 25 21 61 25 0d 53 de  |!a%=faddr%!a%.S.|
0000c100  08 ed 20 61 25 0d 53 e8  05 e1 0d 53 f2 04 0d 53  |.. a%.S....S...S|
0000c110  fc 17 f4 20 2d 20 66 69  6c 65 20 68 61 6e 64 6c  |... - file handl|
0000c120  69 6e 67 20 2d 0d 54 06  04 0d 54 10 16 dd 20 f2  |ing -.T...T... .|
0000c130  66 69 6c 65 69 6e 66 6f  28 66 69 6c 65 24 29 0d  |fileinfo(file$).|
0000c140  54 1a 2d c8 99 22 4f 53  5f 46 69 6c 65 22 2c 35  |T.-.."OS_File",5|
0000c150  2c 66 69 6c 65 24 20 b8  20 65 78 69 73 74 25 2c  |,file$ . exist%,|
0000c160  2c 2c 2c 66 69 6c 65 73  69 7a 65 25 0d 54 24 05  |,,,filesize%.T$.|
0000c170  e1 0d 54 2e 04 0d 54 38  16 dd 20 a4 66 69 6c 65  |..T...T8.. .file|
0000c180  73 69 7a 65 28 66 69 6c  65 24 29 0d 54 42 16 ea  |size(file$).TB..|
0000c190  20 65 78 69 73 74 25 2c  66 69 6c 65 73 69 7a 65  | exist%,filesize|
0000c1a0  25 0d 54 4c 14 f2 66 69  6c 65 69 6e 66 6f 28 66  |%.TL..fileinfo(f|
0000c1b0  69 6c 65 24 29 0d 54 56  0e 3d 66 69 6c 65 73 69  |ile$).TV.=filesi|
0000c1c0  7a 65 25 0d 54 60 04 0d  54 6a 17 dd 20 a4 66 69  |ze%.T`..Tj.. .fi|
0000c1d0  6c 65 65 78 69 73 74 28  66 69 6c 65 24 29 0d 54  |leexist(file$).T|
0000c1e0  74 16 ea 20 65 78 69 73  74 25 2c 66 69 6c 65 73  |t.. exist%,files|
0000c1f0  69 7a 65 25 0d 54 7e 14  f2 66 69 6c 65 69 6e 66  |ize%.T~..fileinf|
0000c200  6f 28 66 69 6c 65 24 29  0d 54 88 0b 3d 65 78 69  |o(file$).T..=exi|
0000c210  73 74 25 0d 54 92 04 0d  54 9c 1b dd 20 a4 6c 6f  |st%.T...T... .lo|
0000c220  61 64 74 65 6d 70 6c 61  74 65 28 74 69 74 6c 65  |adtemplate(title|
0000c230  24 29 0d 54 a6 51 c8 99  22 57 69 6d 70 5f 4c 6f  |$).T.Q.."Wimp_Lo|
0000c240  61 64 54 65 6d 70 6c 61  74 65 22 2c 2c 62 6c 6b  |adTemplate",,blk|
0000c250  25 2c 69 6e 64 25 2c 69  6e 64 65 6e 64 25 2c 66  |%,ind%,indend%,f|
0000c260  6f 6e 74 74 61 62 6c 65  25 2c 74 69 74 6c 65 24  |onttable%,title$|
0000c270  20 b8 20 2c 2c 69 6e 64  25 2c 2c 2c 2c 66 6f 75  | . ,,ind%,,,,fou|
0000c280  6e 64 25 0d 54 b0 10 e7  20 66 6f 75 6e 64 25 3d  |nd%.T... found%=|
0000c290  30 20 8c 0d 54 ba 2d 20  20 f2 72 65 70 6f 72 74  |0 ..T.-  .report|
0000c2a0  28 22 57 69 6e 64 6f 77  20 22 2b 74 69 74 6c 65  |("Window "+title|
0000c2b0  24 2b 22 20 6e 6f 74 20  66 6f 75 6e 64 2e 22 29  |$+" not found.")|
0000c2c0  0d 54 c4 0d 20 20 77 69  6e 64 25 3d 30 0d 54 ce  |.T..  wind%=0.T.|
0000c2d0  05 cc 0d 54 d8 27 20 20  e7 20 73 70 72 69 74 65  |...T.'  . sprite|
0000c2e0  73 25 3c 3e 2d 31 20 8c  20 62 6c 6b 25 21 36 34  |s%<>-1 . blk%!64|
0000c2f0  3d 73 70 72 69 74 65 73  25 0d 54 e2 29 20 20 c8  |=sprites%.T.)  .|
0000c300  99 22 57 69 6d 70 5f 43  72 65 61 74 65 57 69 6e  |."Wimp_CreateWin|
0000c310  64 6f 77 22 2c 2c 62 6c  6b 25 20 b8 20 77 69 6e  |dow",,blk% . win|
0000c320  64 25 0d 54 ec 05 cd 0d  54 f6 0a 3d 77 69 6e 64  |d%.T....T..=wind|
0000c330  25 0d 55 00 04 0d 55 0a  14 dd 20 a4 6e 61 6d 65  |%.U...U... .name|
0000c340  6f 6b 28 66 69 6c 65 24  29 0d 55 14 0d 72 65 73  |ok(file$).U..res|
0000c350  75 6c 74 25 3d b9 0d 55  1e 39 e7 20 a7 66 69 6c  |ult%=..U.9. .fil|
0000c360  65 24 2c 22 3a 22 29 2b  a7 66 69 6c 65 24 2c 22  |e$,":")+.file$,"|
0000c370  2e 22 29 3d 30 20 80 20  66 69 6c 65 24 3c 3e 22  |.")=0 . file$<>"|
0000c380  3c 57 69 6d 70 24 53 63  72 61 70 3e 22 20 8c 0d  |<Wimp$Scrap>" ..|
0000c390  55 28 38 f2 72 65 70 6f  72 74 28 22 54 6f 20 73  |U(8.report("To s|
0000c3a0  61 76 65 2c 20 64 72 61  67 20 69 63 6f 6e 20 74  |ave, drag icon t|
0000c3b0  6f 20 61 20 64 69 72 65  63 74 6f 72 79 20 76 69  |o a directory vi|
0000c3c0  65 77 65 72 2e 22 29 0d  55 32 0d 72 65 73 75 6c  |ewer.").U2.resul|
0000c3d0  74 25 3d a3 0d 55 3c 05  cd 0d 55 46 0c 3d 72 65  |t%=..U<...UF.=re|
0000c3e0  73 75 6c 74 25 0d 55 50  04 0d 55 5a 0f f4 20 2d  |sult%.UP..UZ.. -|
0000c3f0  20 6d 65 6e 75 73 20 2d  0d 55 64 04 0d 55 6e 3d  | menus -.Ud..Un=|
0000c400  dd 20 a4 63 68 61 6e 67  65 5f 6d 65 6e 75 5f 6f  |. .change_menu_o|
0000c410  70 74 69 6f 6e 28 6d 65  6e 75 25 2c 69 74 65 6d  |ption(menu%,item|
0000c420  25 2c f8 20 6f 6c 64 69  74 65 6d 25 2c 77 69 6e  |%,. olditem%,win|
0000c430  64 25 2c 69 63 6f 6e 25  29 0d 55 78 08 64 25 3d  |d%,icon%).Ux.d%=|
0000c440  a3 0d 55 82 22 e7 20 69  74 65 6d 25 3e 2d 31 20  |..U.". item%>-1 |
0000c450  80 20 69 74 65 6d 25 3c  3e 6f 6c 64 69 74 65 6d  |. item%<>olditem|
0000c460  25 20 8c 0d 55 8c 0a 20  20 64 25 3d b9 0d 55 96  |% ..U..  d%=..U.|
0000c470  21 20 20 f2 74 69 63 6b  6d 65 6e 75 28 6d 65 6e  |!  .tickmenu(men|
0000c480  75 25 2c 6f 6c 64 69 74  65 6d 25 2c a3 29 0d 55  |u%,olditem%,.).U|
0000c490  a0 1e 20 20 f2 74 69 63  6b 6d 65 6e 75 28 6d 65  |..  .tickmenu(me|
0000c4a0  6e 75 25 2c 69 74 65 6d  25 2c b9 29 0d 55 aa 14  |nu%,item%,.).U..|
0000c4b0  20 20 6f 6c 64 69 74 65  6d 25 3d 69 74 65 6d 25  |  olditem%=item%|
0000c4c0  0d 55 b4 12 20 20 e7 20  77 69 6e 64 25 3c 3e 30  |.U..  . wind%<>0|
0000c4d0  20 8c 0d 55 be 1c 20 20  20 20 70 25 3d 6d 65 6e  | ..U..    p%=men|
0000c4e0  75 25 2b 32 38 2b 69 74  65 6d 25 2a 32 34 0d 55  |u%+28+item%*24.U|
0000c4f0  c8 31 20 20 20 20 e7 20  70 25 21 38 20 80 20 31  |.1    . p%!8 . 1|
0000c500  3c 3c 38 20 8c 20 61 24  3d 24 28 70 25 21 31 32  |<<8 . a$=$(p%!12|
0000c510  29 20 8b 20 61 24 3d 24  28 70 25 2b 31 32 29 0d  |) . a$=$(p%+12).|
0000c520  55 d2 24 20 20 20 20 f2  73 65 74 69 63 6f 6e 74  |U.$    .seticont|
0000c530  65 78 74 28 77 69 6e 64  25 2c 69 63 6f 6e 25 2c  |ext(wind%,icon%,|
0000c540  61 24 29 0d 55 dc 07 20  20 cd 0d 55 e6 05 cd 0d  |a$).U..  ..U....|
0000c550  55 f0 07 3d 64 25 0d 55  fa 04 0d 56 04 22 dd 20  |U..=d%.U...V.". |
0000c560  f2 74 69 63 6b 6d 65 6e  75 28 6d 65 6e 75 25 2c  |.tickmenu(menu%,|
0000c570  69 74 65 6d 25 2c 74 69  63 6b 25 29 0d 56 0e 18  |item%,tick%).V..|
0000c580  70 25 3d 6d 65 6e 75 25  2b 32 38 2b 69 74 65 6d  |p%=menu%+28+item|
0000c590  25 2a 32 34 0d 56 18 26  e7 20 74 69 63 6b 25 20  |%*24.V.&. tick% |
0000c5a0  8c 20 21 70 25 3d 21 70  25 20 84 31 20 8b 20 21  |. !p%=!p% .1 . !|
0000c5b0  70 25 3d 21 70 25 20 80  ac 31 0d 56 22 05 e1 0d  |p%=!p% ..1.V"...|
0000c5c0  56 2c 04 0d 56 36 23 dd  20 f2 6d 65 6e 75 74 69  |V,..V6#. .menuti|
0000c5d0  74 6c 65 28 74 69 74 6c  65 24 2c f8 20 6d 65 6e  |tle(title$,. men|
0000c5e0  75 70 74 72 25 29 0d 56  40 14 6f 6c 64 70 74 72  |uptr%).V@.oldptr|
0000c5f0  25 3d 6d 65 6e 75 70 74  72 25 0d 56 4a 14 24 6d  |%=menuptr%.VJ.$m|
0000c600  65 6e 75 70 74 72 25 3d  74 69 74 6c 65 24 0d 56  |enuptr%=title$.V|
0000c610  54 10 6d 61 78 25 3d a9  74 69 74 6c 65 24 0d 56  |T.max%=.title$.V|
0000c620  5e 16 6d 65 6e 75 70 74  72 25 21 31 32 3d 26 37  |^.menuptr%!12=&7|
0000c630  30 32 30 37 0d 56 68 12  6d 65 6e 75 70 74 72 25  |0207.Vh.menuptr%|
0000c640  21 32 30 3d 34 34 0d 56  72 11 6d 65 6e 75 70 74  |!20=44.Vr.menupt|
0000c650  72 25 21 32 34 3d 30 0d  56 7c 0f 6d 65 6e 75 70  |r%!24=0.V|.menup|
0000c660  74 72 25 2b 3d 34 0d 56  86 05 e1 0d 56 90 04 0d  |tr%+=4.V....V...|
0000c670  56 9a 23 dd 20 f2 6d 65  6e 75 69 74 65 6d 28 f8  |V.#. .menuitem(.|
0000c680  20 74 65 78 74 24 2c f8  20 6d 65 6e 75 70 74 72  | text$,. menuptr|
0000c690  25 29 0d 56 a4 10 6d 65  6e 75 70 74 72 25 2b 3d  |%).V..menuptr%+=|
0000c6a0  32 34 0d 56 ae 0f 21 6d  65 6e 75 70 74 72 25 3d  |24.V..!menuptr%=|
0000c6b0  30 0d 56 b8 10 6d 65 6e  75 70 74 72 25 21 34 3d  |0.V..menuptr%!4=|
0000c6c0  30 0d 56 c2 1a 77 6f 72  64 24 3d a4 6e 65 78 74  |0.V..word$=.next|
0000c6d0  77 6f 72 64 28 74 65 78  74 24 29 0d 56 cc 18 74  |word(text$).V..t|
0000c6e0  6f 6b 65 6e 24 3d a4 74  6f 6b 65 6e 28 77 6f 72  |oken$=.token(wor|
0000c6f0  64 24 29 0d 56 d6 0a 69  31 25 3d 2d 31 0d 56 e0  |d$).V..i1%=-1.V.|
0000c700  11 c8 95 20 74 6f 6b 65  6e 24 3c 3e 22 22 0d 56  |... token$<>"".V|
0000c710  ea 0f c8 8e 20 74 6f 6b  65 6e 24 20 ca 0d 56 f4  |.... token$ ..V.|
0000c720  2a c9 20 22 3e 22 20 3a  20 6d 65 6e 75 70 74 72  |*. ">" : menuptr|
0000c730  25 21 34 3d a0 28 a4 6e  65 78 74 77 6f 72 64 28  |%!4=.(.nextword(|
0000c740  74 65 78 74 24 29 29 0d  56 fe 23 c9 20 22 2f 22  |text$)).V.#. "/"|
0000c750  20 3a 20 21 6d 65 6e 75  70 74 72 25 3d 21 6d 65  | : !menuptr%=!me|
0000c760  6e 75 70 74 72 25 20 84  20 31 0d 57 08 23 c9 20  |nuptr% . 1.W.#. |
0000c770  22 2d 22 20 3a 20 21 6d  65 6e 75 70 74 72 25 3d  |"-" : !menuptr%=|
0000c780  21 6d 65 6e 75 70 74 72  25 20 84 20 32 0d 57 12  |!menuptr% . 2.W.|
0000c790  23 c9 20 22 2b 22 20 3a  20 21 6d 65 6e 75 70 74  |#. "+" : !menupt|
0000c7a0  72 25 3d 21 6d 65 6e 75  70 74 72 25 20 84 20 38  |r%=!menuptr% . 8|
0000c7b0  0d 57 1c 09 c9 20 22 21  22 0d 57 26 1d 20 20 21  |.W... "!".W&.  !|
0000c7c0  6d 65 6e 75 70 74 72 25  3d 21 6d 65 6e 75 70 74  |menuptr%=!menupt|
0000c7d0  72 25 20 84 20 34 0d 57  30 1d 20 20 76 61 6c 69  |r% . 4.W0.  vali|
0000c7e0  64 24 3d a4 6e 65 78 74  77 6f 72 64 28 74 65 78  |d$=.nextword(tex|
0000c7f0  74 24 29 0d 57 3a 11 20  20 e7 20 a9 76 61 6c 69  |t$).W:.  . .vali|
0000c800  64 24 20 8c 0d 57 44 15  20 20 de 20 69 31 25 20  |d$ ..WD.  . i1% |
0000c810  a9 76 61 6c 69 64 24 2b  31 0d 57 4e 11 20 20 24  |.valid$+1.WN.  $|
0000c820  69 31 25 3d 76 61 6c 69  64 24 0d 57 58 07 20 20  |i1%=valid$.WX.  |
0000c830  cd 0d 57 62 05 cb 0d 57  6c 18 74 6f 6b 65 6e 24  |..Wb...Wl.token$|
0000c840  3d a4 74 6f 6b 65 6e 28  77 6f 72 64 24 29 0d 57  |=.token(word$).W|
0000c850  76 05 ce 0d 57 80 1f 6d  65 6e 75 70 74 72 25 21  |v...W..menuptr%!|
0000c860  38 3d 28 37 3c 3c 32 34  29 20 84 20 25 31 30 30  |8=(7<<24) . %100|
0000c870  30 31 0d 57 8a 22 e7 20  21 6d 65 6e 75 70 74 72  |01.W.". !menuptr|
0000c880  25 20 80 20 34 20 84 20  74 6f 6b 65 6e 24 3d 22  |% . 4 . token$="|
0000c890  23 22 20 8c 0d 57 94 2e  f2 69 6e 64 69 74 65 6d  |#" ..W...inditem|
0000c8a0  28 a0 28 a4 6e 65 78 74  77 6f 72 64 28 74 65 78  |(.(.nextword(tex|
0000c8b0  74 24 29 29 2c 69 31 25  2c a0 28 77 6f 72 64 24  |t$)),i1%,.(word$|
0000c8c0  29 29 0d 57 9e 05 cc 0d  57 a8 12 e7 20 a9 77 6f  |)).W....W... .wo|
0000c8d0  72 64 24 3c 3d 31 32 20  8c 0d 57 b2 18 24 28 6d  |rd$<=12 ..W..$(m|
0000c8e0  65 6e 75 70 74 72 25 2b  31 32 29 3d 77 6f 72 64  |enuptr%+12)=word|
0000c8f0  24 0d 57 bc 05 cc 0d 57  c6 12 de 20 69 30 25 20  |$.W....W... i0% |
0000c900  a9 77 6f 72 64 24 2b 31  0d 57 d0 0e 24 69 30 25  |.word$+1.W..$i0%|
0000c910  3d 77 6f 72 64 24 0d 57  da 1d f2 69 6e 64 69 74  |=word$.W...indit|
0000c920  65 6d 28 69 30 25 2c 2d  31 2c a9 77 6f 72 64 24  |em(i0%,-1,.word$|
0000c930  2b 31 29 0d 57 e4 05 cd  0d 57 ee 1f e7 20 a9 77  |+1).W....W... .w|
0000c940  6f 72 64 24 3e 6d 61 78  25 20 8c 20 6d 61 78 25  |ord$>max% . max%|
0000c950  3d a9 77 6f 72 64 24 0d  57 f8 05 cd 0d 58 02 05  |=.word$.W....X..|
0000c960  e1 0d 58 0c 04 0d 58 16  1a dd 20 f2 65 6e 64 6d  |..X...X... .endm|
0000c970  65 6e 75 28 f8 20 6d 65  6e 75 70 74 72 25 29 0d  |enu(. menuptr%).|
0000c980  58 20 1d 21 6d 65 6e 75  70 74 72 25 3d 21 6d 65  |X .!menuptr%=!me|
0000c990  6e 75 70 74 72 25 20 84  20 26 38 30 0d 58 2a 10  |nuptr% . &80.X*.|
0000c9a0  6d 65 6e 75 70 74 72 25  2b 3d 32 34 0d 58 34 19  |menuptr%+=24.X4.|
0000c9b0  6f 6c 64 70 74 72 25 21  31 36 3d 6d 61 78 25 2a  |oldptr%!16=max%*|
0000c9c0  31 36 2b 31 32 0d 58 3e  05 e1 0d 58 48 04 0d 58  |16+12.X>...XH..X|
0000c9d0  52 12 dd 20 a4 6d 65 6e  75 28 74 65 78 74 24 29  |R.. .menu(text$)|
0000c9e0  0d 58 5c 10 73 74 65 78  74 24 3d 74 65 78 74 24  |.X\.stext$=text$|
0000c9f0  0d 58 66 0c 69 74 65 6d  73 25 3d 30 0d 58 70 0e  |.Xf.items%=0.Xp.|
0000ca00  74 65 78 74 24 2b 3d 22  2c 22 0d 58 7a 1b 74 69  |text$+=",".Xz.ti|
0000ca10  74 6c 65 24 3d a4 6e 65  78 74 77 6f 72 64 28 74  |tle$=.nextword(t|
0000ca20  65 78 74 24 29 0d 58 84  1f f2 6d 65 6e 75 74 69  |ext$).X...menuti|
0000ca30  74 6c 65 28 74 69 74 6c  65 24 2c 6d 65 6e 75 70  |tle(title$,menup|
0000ca40  74 72 25 29 0d 58 8e 10  c8 95 20 74 65 78 74 24  |tr%).X.... text$|
0000ca50  3c 3e 22 22 0d 58 98 0d  69 74 65 6d 73 25 2b 3d  |<>"".X..items%+=|
0000ca60  31 0d 58 a2 1d f2 6d 65  6e 75 69 74 65 6d 28 74  |1.X...menuitem(t|
0000ca70  65 78 74 24 2c 6d 65 6e  75 70 74 72 25 29 0d 58  |ext$,menuptr%).X|
0000ca80  ac 05 ce 0d 58 b6 16 f2  65 6e 64 6d 65 6e 75 28  |....X...endmenu(|
0000ca90  6d 65 6e 75 70 74 72 25  29 0d 58 c0 0c 3d 6f 6c  |menuptr%).X..=ol|
0000caa0  64 70 74 72 25 0d 58 ca  04 0d 58 d4 1b dd 20 f2  |dptr%.X...X... .|
0000cab0  69 6e 64 69 74 65 6d 28  69 30 25 2c 69 31 25 2c  |inditem(i0%,i1%,|
0000cac0  69 32 25 29 0d 58 de 20  6d 65 6e 75 70 74 72 25  |i2%).X. menuptr%|
0000cad0  21 38 3d 6d 65 6e 75 70  74 72 25 21 38 20 84 20  |!8=menuptr%!8 . |
0000cae0  31 3c 3c 38 0d 58 e8 13  6d 65 6e 75 70 74 72 25  |1<<8.X..menuptr%|
0000caf0  21 31 32 3d 69 30 25 0d  58 f2 13 6d 65 6e 75 70  |!12=i0%.X..menup|
0000cb00  74 72 25 21 31 36 3d 69  31 25 0d 58 fc 13 6d 65  |tr%!16=i1%.X..me|
0000cb10  6e 75 70 74 72 25 21 32  30 3d 69 32 25 0d 59 06  |nuptr%!20=i2%.Y.|
0000cb20  31 e7 20 69 32 25 2d 31  3e 6d 61 78 25 20 80 20  |1. i2%-1>max% . |
0000cb30  28 21 6d 65 6e 75 70 74  72 25 20 80 20 34 29 3d  |(!menuptr% . 4)=|
0000cb40  30 20 8c 20 6d 61 78 25  3d 69 32 25 2d 31 0d 59  |0 . max%=i2%-1.Y|
0000cb50  10 05 e1 0d 59 1a 04 0d  59 24 15 dd 20 a4 74 6f  |....Y...Y$.. .to|
0000cb60  6b 65 6e 28 f8 20 77 6f  72 64 24 29 0d 59 2e 0d  |ken(. word$).Y..|
0000cb70  74 6f 6b 65 6e 24 3d 22  22 0d 59 38 1a e7 20 a7  |token$="".Y8.. .|
0000cb80  22 3e 2f 21 23 2d 2b 22  2c c2 77 6f 72 64 24 29  |">/!#-+",.word$)|
0000cb90  29 20 8c 0d 59 42 14 74  6f 6b 65 6e 24 3d c2 77  |) ..YB.token$=.w|
0000cba0  6f 72 64 24 2c 31 29 0d  59 4c 1a 77 6f 72 64 24  |ord$,1).YL.word$|
0000cbb0  3d c0 77 6f 72 64 24 2c  a9 77 6f 72 64 24 2d 31  |=.word$,.word$-1|
0000cbc0  29 0d 59 56 05 cd 0d 59  60 0b 3d 74 6f 6b 65 6e  |).YV...Y`.=token|
0000cbd0  24 0d 59 6a 04 0d 59 74  18 dd 20 a4 6e 65 78 74  |$.Yj..Yt.. .next|
0000cbe0  77 6f 72 64 28 f8 20 74  65 78 74 24 29 0d 59 7e  |word(. text$).Y~|
0000cbf0  10 ea 20 77 6f 72 64 24  2c 70 6f 73 25 0d 59 88  |.. word$,pos%.Y.|
0000cc00  14 70 6f 73 25 3d a7 74  65 78 74 24 2c 22 2c 22  |.pos%=.text$,","|
0000cc10  29 0d 59 92 18 77 6f 72  64 24 3d c0 74 65 78 74  |).Y..word$=.text|
0000cc20  24 2c 70 6f 73 25 2d 31  29 0d 59 9c 18 74 65 78  |$,pos%-1).Y..tex|
0000cc30  74 24 3d c1 74 65 78 74  24 2c 70 6f 73 25 2b 31  |t$=.text$,pos%+1|
0000cc40  29 0d 59 a6 0a 3d 77 6f  72 64 24 0d 59 b0 04 0d  |).Y..=word$.Y...|
0000cc50  59 ba 10 dd 20 f2 63 6c  6f 73 65 6d 65 6e 75 0d  |Y... .closemenu.|
0000cc60  59 c4 1b c8 99 22 57 69  6d 70 5f 43 72 65 61 74  |Y...."Wimp_Creat|
0000cc70  65 4d 65 6e 75 22 2c 2c  2d 31 0d 59 ce 05 e1 0d  |eMenu",,-1.Y....|
0000cc80  59 d8 04 0d 59 e2 0f f4  20 2d 20 69 63 6f 6e 73  |Y...Y... - icons|
0000cc90  20 2d 0d 59 ec 04 0d 59  f6 21 dd 20 f2 73 68 61  | -.Y...Y.!. .sha|
0000cca0  64 65 69 63 6f 6e 28 21  71 25 2c 71 25 21 34 2c  |deicon(!q%,q%!4,|
0000ccb0  73 68 61 64 65 25 29 0d  5a 00 1d c8 99 22 57 69  |shade%).Z...."Wi|
0000ccc0  6d 70 5f 47 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_GetIconState"|
0000ccd0  2c 2c 71 25 0d 5a 0a 22  e7 20 73 68 61 64 65 25  |,,q%.Z.". shade%|
0000cce0  20 8c 20 71 25 21 38 3d  31 3c 3c 32 32 20 8b 20  | . q%!8=1<<22 . |
0000ccf0  71 25 21 38 3d 30 0d 5a  14 0f 71 25 21 31 32 3d  |q%!8=0.Z..q%!12=|
0000cd00  31 3c 3c 32 32 0d 5a 1e  37 e7 20 28 71 25 21 32  |1<<22.Z.7. (q%!2|
0000cd10  34 20 80 20 71 25 21 31  32 29 3c 3e 71 25 21 38  |4 . q%!12)<>q%!8|
0000cd20  20 8c 20 c8 99 22 57 69  6d 70 5f 53 65 74 49 63  | . .."Wimp_SetIc|
0000cd30  6f 6e 53 74 61 74 65 22  2c 2c 71 25 0d 5a 28 05  |onState",,q%.Z(.|
0000cd40  e1 0d 5a 32 04 0d 5a 3c  19 dd 20 a4 69 63 6f 6e  |..Z2..Z<.. .icon|
0000cd50  74 65 78 74 28 21 71 25  2c 71 25 21 34 29 0d 5a  |text(!q%,q%!4).Z|
0000cd60  46 1d c8 99 22 57 69 6d  70 5f 47 65 74 49 63 6f  |F..."Wimp_GetIco|
0000cd70  6e 53 74 61 74 65 22 2c  2c 71 25 0d 5a 50 34 e7  |nState",,q%.ZP4.|
0000cd80  20 71 25 21 32 34 80 28  31 3c 3c 38 29 20 8c 20  | q%!24.(1<<8) . |
0000cd90  74 65 78 74 24 3d 24 28  71 25 21 32 38 29 20 8b  |text$=$(q%!28) .|
0000cda0  20 74 65 78 74 24 3d 24  28 71 25 2b 32 38 29 0d  | text$=$(q%+28).|
0000cdb0  5a 5a 0a 3d 74 65 78 74  24 0d 5a 64 04 0d 5a 6e  |ZZ.=text$.Zd..Zn|
0000cdc0  18 dd 20 a4 69 63 6f 6e  76 61 6c 28 21 71 25 2c  |.. .iconval(!q%,|
0000cdd0  71 25 21 34 29 0d 5a 78  1b 3d bb 28 a4 69 63 6f  |q%!4).Zx.=.(.ico|
0000cde0  6e 74 65 78 74 28 21 71  25 2c 71 25 21 34 29 29  |ntext(!q%,q%!4))|
0000cdf0  0d 5a 82 04 0d 5a 8c 19  dd 20 f2 72 65 64 6f 69  |.Z...Z... .redoi|
0000ce00  63 6f 6e 28 21 71 25 2c  71 25 21 34 29 0d 5a 96  |con(!q%,q%!4).Z.|
0000ce10  1d c8 99 22 57 69 6d 70  5f 47 65 74 49 63 6f 6e  |..."Wimp_GetIcon|
0000ce20  53 74 61 74 65 22 2c 2c  71 25 0d 5a a0 33 c8 99  |State",,q%.Z.3..|
0000ce30  22 57 69 6d 70 5f 46 6f  72 63 65 52 65 64 72 61  |"Wimp_ForceRedra|
0000ce40  77 22 2c 21 71 25 2c 71  25 21 38 2c 71 25 21 31  |w",!q%,q%!8,q%!1|
0000ce50  32 2c 71 25 21 31 36 2c  71 25 21 32 30 0d 5a aa  |2,q%!16,q%!20.Z.|
0000ce60  05 e1 0d 5a b4 04 0d 5a  be 1b dd 20 f2 64 65 6c  |...Z...Z... .del|
0000ce70  65 74 65 69 63 6f 6e 28  21 71 25 2c 71 25 21 34  |eteicon(!q%,q%!4|
0000ce80  29 0d 5a c8 1b c8 99 22  57 69 6d 70 5f 44 65 6c  |).Z...."Wimp_Del|
0000ce90  65 74 65 49 63 6f 6e 22  2c 2c 71 25 0d 5a d2 05  |eteIcon",,q%.Z..|
0000cea0  e1 0d 5a dc 04 0d 5a e6  22 dd 20 f2 69 63 6f 6e  |..Z...Z.". .icon|
0000ceb0  69 6e 66 6f 28 77 69 6e  64 25 2c 69 63 6f 6e 25  |info(wind%,icon%|
0000cec0  2c 64 61 74 61 25 29 0d  5a f0 10 21 64 61 74 61  |,data%).Z..!data|
0000ced0  25 3d 77 69 6e 64 25 0d  5a fa 11 64 61 74 61 25  |%=wind%.Z..data%|
0000cee0  21 34 3d 69 63 6f 6e 25  0d 5b 04 20 c8 99 22 57  |!4=icon%.[. .."W|
0000cef0  69 6d 70 5f 47 65 74 49  63 6f 6e 53 74 61 74 65  |imp_GetIconState|
0000cf00  22 2c 2c 64 61 74 61 25  0d 5b 0e 05 e1 0d 5b 18  |",,data%.[....[.|
0000cf10  04 0d 5b 22 19 dd 20 a4  73 65 6c 65 63 74 65 64  |..[".. .selected|
0000cf20  28 21 71 25 2c 71 25 21  34 29 0d 5b 2c 1d c8 99  |(!q%,q%!4).[,...|
0000cf30  22 57 69 6d 70 5f 47 65  74 49 63 6f 6e 53 74 61  |"Wimp_GetIconSta|
0000cf40  74 65 22 2c 2c 71 25 0d  5b 36 1a 3d 28 28 28 71  |te",,q%.[6.=(((q|
0000cf50  25 21 32 34 29 80 28 31  3c 3c 32 31 29 29 3e 30  |%!24).(1<<21))>0|
0000cf60  29 0d 5b 40 04 0d 5b 4a  37 dd 20 a4 63 72 69 63  |).[@..[J7. .cric|
0000cf70  6f 6e 28 21 71 25 2c 71  25 21 34 2c 71 25 21 38  |on(!q%,q%!4,q%!8|
0000cf80  2c 71 25 21 31 32 2c 71  25 21 31 36 2c 71 25 21  |,q%!12,q%!16,q%!|
0000cf90  32 30 2c 24 28 71 25 2b  32 34 29 29 0d 5b 54 23  |20,$(q%+24)).[T#|
0000cfa0  c8 99 22 57 69 6d 70 5f  43 72 65 61 74 65 49 63  |.."Wimp_CreateIc|
0000cfb0  6f 6e 22 2c 2c 71 25 20  b8 20 69 63 6f 6e 25 0d  |on",,q% . icon%.|
0000cfc0  5b 5e 0a 3d 69 63 6f 6e  25 0d 5b 68 04 0d 5b 72  |[^.=icon%.[h..[r|
0000cfd0  18 dd 20 a4 62 75 74 74  79 70 65 28 21 71 25 2c  |.. .buttype(!q%,|
0000cfe0  71 25 21 34 29 0d 5b 7c  33 e7 20 71 25 21 34 3e  |q%!4).[|3. q%!4>|
0000cff0  3d 30 20 8c 20 c8 99 22  57 69 6d 70 5f 47 65 74  |=0 . .."Wimp_Get|
0000d000  49 63 6f 6e 53 74 61 74  65 22 2c 2c 71 25 20 8b  |IconState",,q% .|
0000d010  20 71 25 21 32 34 3d 30  0d 5b 86 15 3d 28 28 71  | q%!24=0.[..=((q|
0000d020  25 21 32 34 29 3e 3e 31  32 29 80 31 35 0d 5b 90  |%!24)>>12).15.[.|
0000d030  04 0d 5b 9a 23 dd 20 f2  73 65 6c 65 63 74 69 63  |..[.#. .selectic|
0000d040  6f 6e 28 21 71 25 2c 71  25 21 34 2c 73 65 6c 65  |on(!q%,q%!4,sele|
0000d050  63 74 25 29 0d 5b a4 1d  c8 99 22 57 69 6d 70 5f  |ct%).[...."Wimp_|
0000d060  47 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 71  |GetIconState",,q|
0000d070  25 0d 5b ae 23 e7 20 73  65 6c 65 63 74 25 20 8c  |%.[.#. select% .|
0000d080  20 71 25 21 38 3d 31 3c  3c 32 31 20 8b 20 71 25  | q%!8=1<<21 . q%|
0000d090  21 38 3d 30 0d 5b b8 0f  71 25 21 31 32 3d 31 3c  |!8=0.[..q%!12=1<|
0000d0a0  3c 32 31 0d 5b c2 37 e7  20 28 71 25 21 32 34 20  |<21.[.7. (q%!24 |
0000d0b0  80 20 71 25 21 31 32 29  3c 3e 71 25 21 38 20 8c  |. q%!12)<>q%!8 .|
0000d0c0  20 c8 99 22 57 69 6d 70  5f 53 65 74 49 63 6f 6e  | .."Wimp_SetIcon|
0000d0d0  53 74 61 74 65 22 2c 2c  71 25 0d 5b cc 05 e1 0d  |State",,q%.[....|
0000d0e0  5b d6 04 0d 5b e0 17 dd  20 a4 69 63 6f 6e 66 63  |[...[... .iconfc|
0000d0f0  28 21 71 25 2c 71 25 21  34 29 0d 5b ea 1d c8 99  |(!q%,q%!4).[....|
0000d100  22 57 69 6d 70 5f 47 65  74 49 63 6f 6e 53 74 61  |"Wimp_GetIconSta|
0000d110  74 65 22 2c 2c 71 25 0d  5b f4 15 3d 28 28 71 25  |te",,q%.[..=((q%|
0000d120  21 32 34 29 3e 3e 32 34  29 80 31 35 0d 5b fe 04  |!24)>>24).15.[..|
0000d130  0d 5c 08 1f dd 20 f2 73  65 74 69 63 6f 6e 66 63  |.\... .seticonfc|
0000d140  28 21 71 25 2c 71 25 21  34 2c 63 6f 6c 25 29 0d  |(!q%,q%!4,col%).|
0000d150  5c 12 1d c8 99 22 57 69  6d 70 5f 47 65 74 49 63  |\...."Wimp_GetIc|
0000d160  6f 6e 53 74 61 74 65 22  2c 2c 71 25 0d 5c 1c 11  |onState",,q%.\..|
0000d170  71 25 21 38 3d 63 6f 6c  25 3c 3c 32 34 0d 5c 26  |q%!8=col%<<24.\&|
0000d180  10 71 25 21 31 32 3d 31  35 3c 3c 32 34 0d 5c 30  |.q%!12=15<<24.\0|
0000d190  37 e7 20 28 71 25 21 32  34 20 80 20 71 25 21 31  |7. (q%!24 . q%!1|
0000d1a0  32 29 3c 3e 71 25 21 38  20 8c 20 c8 99 22 57 69  |2)<>q%!8 . .."Wi|
0000d1b0  6d 70 5f 53 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_SetIconState"|
0000d1c0  2c 2c 71 25 0d 5c 3a 05  e1 0d 5c 44 04 0d 5c 4e  |,,q%.\:...\D..\N|
0000d1d0  20 dd 20 f2 73 65 74 69  63 6f 6e 76 61 6c 28 21  | . .seticonval(!|
0000d1e0  71 25 2c 71 25 21 34 2c  76 61 6c 25 29 0d 5c 58  |q%,q%!4,val%).\X|
0000d1f0  22 f2 73 65 74 69 63 6f  6e 74 65 78 74 28 21 71  |".seticontext(!q|
0000d200  25 2c 71 25 21 34 2c c3  28 76 61 6c 25 29 29 0d  |%,q%!4,.(val%)).|
0000d210  5c 62 05 e1 0d 5c 6c 04  0d 5c 76 22 dd 20 f2 73  |\b...\l..\v". .s|
0000d220  65 74 69 63 6f 6e 74 65  78 74 28 21 71 25 2c 71  |eticontext(!q%,q|
0000d230  25 21 34 2c 74 65 78 74  24 29 0d 5c 80 1d c8 99  |%!4,text$).\....|
0000d240  22 57 69 6d 70 5f 47 65  74 49 63 6f 6e 53 74 61  |"Wimp_GetIconSta|
0000d250  74 65 22 2c 2c 71 25 0d  5c 8a 19 74 65 78 74 24  |te",,q%.\..text$|
0000d260  3d c0 74 65 78 74 24 2c  71 25 21 33 36 2d 31 29  |=.text$,q%!36-1)|
0000d270  0d 5c 94 17 e7 20 24 28  71 25 21 32 38 29 3c 3e  |.\... $(q%!28)<>|
0000d280  74 65 78 74 24 20 8c 0d  5c 9e 12 24 28 71 25 21  |text$ ..\..$(q%!|
0000d290  32 38 29 3d 74 65 78 74  24 0d 5c a8 0a 71 25 21  |28)=text$.\..q%!|
0000d2a0  38 3d 30 0d 5c b2 0b 71  25 21 31 32 3d 30 0d 5c  |8=0.\..q%!12=0.\|
0000d2b0  bc 1d c8 99 22 57 69 6d  70 5f 53 65 74 49 63 6f  |...."Wimp_SetIco|
0000d2c0  6e 53 74 61 74 65 22 2c  2c 71 25 0d 5c c6 05 cd  |nState",,q%.\...|
0000d2d0  0d 5c d0 05 e1 0d 5c da  04 0d 5c e4 23 dd 20 f2  |.\....\...\.#. .|
0000d2e0  73 65 74 69 63 6f 6e 76  61 6c 69 64 28 21 71 25  |seticonvalid(!q%|
0000d2f0  2c 71 25 21 34 2c 74 65  78 74 24 29 0d 5c ee 1d  |,q%!4,text$).\..|
0000d300  c8 99 22 57 69 6d 70 5f  47 65 74 49 63 6f 6e 53  |.."Wimp_GetIconS|
0000d310  74 61 74 65 22 2c 2c 71  25 0d 5c f8 17 e7 20 24  |tate",,q%.\... $|
0000d320  28 71 25 21 33 32 29 3c  3e 74 65 78 74 24 20 8c  |(q%!32)<>text$ .|
0000d330  0d 5d 02 12 24 28 71 25  21 33 32 29 3d 74 65 78  |.]..$(q%!32)=tex|
0000d340  74 24 0d 5d 0c 0a 71 25  21 38 3d 30 0d 5d 16 0b  |t$.]..q%!8=0.]..|
0000d350  71 25 21 31 32 3d 30 0d  5d 20 1d c8 99 22 57 69  |q%!12=0.] ..."Wi|
0000d360  6d 70 5f 53 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_SetIconState"|
0000d370  2c 2c 71 25 0d 5d 2a 05  cd 0d 5d 34 05 e1 0d 5d  |,,q%.]*...]4...]|
0000d380  3e 04 0d 5d 48 29 dd 20  f2 73 65 74 66 69 6c 65  |>..]H). .setfile|
0000d390  69 63 6f 6e 28 77 69 6e  64 25 2c 69 63 6f 6e 25  |icon(wind%,icon%|
0000d3a0  2c 66 69 6c 65 74 79 70  65 25 29 0d 5d 52 1c ea  |,filetype%).]R..|
0000d3b0  20 72 6f 6d 25 2c 72 61  6d 25 2c 73 70 72 69 74  | rom%,ram%,sprit|
0000d3c0  65 24 2c 6e 6f 74 25 0d  5d 5c 17 e7 20 66 69 6c  |e$,not%.]\.. fil|
0000d3d0  65 74 79 70 65 25 3c 26  31 30 30 30 20 8c 0d 5d  |etype%<&1000 ..]|
0000d3e0  66 2a 73 70 72 69 74 65  24 3d 22 66 69 6c 65 5f  |f*sprite$="file_|
0000d3f0  22 2b c2 22 30 30 22 2b  c3 7e 28 66 69 6c 65 74  |"+."00"+.~(filet|
0000d400  79 70 65 25 29 2c 33 29  0d 5d 70 26 c8 99 22 57  |ype%),3).]p&.."W|
0000d410  69 6d 70 5f 42 61 73 65  4f 66 53 70 72 69 74 65  |imp_BaseOfSprite|
0000d420  73 22 20 b8 20 72 6f 6d  25 2c 72 61 6d 25 0d 5d  |s" . rom%,ram%.]|
0000d430  7a 30 c8 99 22 58 4f 53  5f 53 70 72 69 74 65 4f  |z0.."XOS_SpriteO|
0000d440  70 22 2c 32 34 2b 32 35  36 2c 72 6f 6d 25 2c 73  |p",24+256,rom%,s|
0000d450  70 72 69 74 65 24 20 b8  20 3b 6e 6f 74 25 0d 5d  |prite$ . ;not%.]|
0000d460  84 0f 6e 6f 74 25 3d 6e  6f 74 25 80 31 0d 5d 8e  |..not%=not%.1.].|
0000d470  39 e7 20 6e 6f 74 25 20  8c 20 c8 99 22 58 4f 53  |9. not% . .."XOS|
0000d480  5f 53 70 72 69 74 65 4f  70 22 2c 32 34 2b 32 35  |_SpriteOp",24+25|
0000d490  36 2c 72 61 6d 25 2c 73  70 72 69 74 65 24 20 b8  |6,ram%,sprite$ .|
0000d4a0  20 3b 6e 6f 74 25 0d 5d  98 0f 6e 6f 74 25 3d 6e  | ;not%.]..not%=n|
0000d4b0  6f 74 25 80 31 0d 5d a2  05 cc 0d 5d ac 12 c8 8e  |ot%.1.]....]....|
0000d4c0  20 66 69 6c 65 74 79 70  65 25 20 ca 0d 5d b6 23  | filetype% ..].#|
0000d4d0  20 20 c9 20 26 31 30 30  30 20 3a 20 73 70 72 69  |  . &1000 : spri|
0000d4e0  74 65 24 3d 22 64 69 72  65 63 74 6f 72 79 22 0d  |te$="directory".|
0000d4f0  5d c0 25 20 20 c9 20 26  32 30 30 30 20 3a 20 73  |].%  . &2000 : s|
0000d500  70 72 69 74 65 24 3d 22  61 70 70 6c 69 63 61 74  |prite$="applicat|
0000d510  69 6f 6e 22 0d 5d ca 05  7f 0d 5d d4 0c 20 20 6e  |ion".]....]..  n|
0000d520  6f 74 25 3d b9 0d 5d de  05 cb 0d 5d e8 05 cd 0d  |ot%=..]....]....|
0000d530  5d f2 1f e7 20 6e 6f 74  25 20 8c 20 73 70 72 69  |]... not% . spri|
0000d540  74 65 24 3d 22 66 69 6c  65 5f 78 78 78 22 0d 5d  |te$="file_xxx".]|
0000d550  fc 2a f2 73 65 74 69 63  6f 6e 76 61 6c 69 64 28  |.*.seticonvalid(|
0000d560  77 69 6e 64 25 2c 69 63  6f 6e 25 2c 22 53 22 2b  |wind%,icon%,"S"+|
0000d570  73 70 72 69 74 65 24 29  0d 5e 06 05 e1 0d 5e 10  |sprite$).^....^.|
0000d580  04 0d 5e 1a 17 dd 20 a4  69 63 6f 6e 74 70 28 21  |..^... .icontp(!|
0000d590  71 25 2c 71 25 21 34 29  0d 5e 24 1d c8 99 22 57  |q%,q%!4).^$..."W|
0000d5a0  69 6d 70 5f 47 65 74 49  63 6f 6e 53 74 61 74 65  |imp_GetIconState|
0000d5b0  22 2c 2c 71 25 0d 5e 2e  0a 3d 71 25 21 32 38 0d  |",,q%.^..=q%!28.|
0000d5c0  5e 38 04 0d 5e 42 3f dd  20 f2 73 74 61 72 74 75  |^8..^B?. .startu|
0000d5d0  73 65 72 64 72 61 67 28  69 64 25 2c 74 79 70 65  |serdrag(id%,type|
0000d5e0  25 2c 62 6c 6b 25 21 32  34 2c 62 6c 6b 25 21 32  |%,blk%!24,blk%!2|
0000d5f0  38 2c 62 6c 6b 25 21 33  32 2c 62 6c 6b 25 21 33  |8,blk%!32,blk%!3|
0000d600  36 29 0d 5e 4c 11 e7 20  74 79 70 65 25 3e 32 35  |6).^L.. type%>25|
0000d610  36 20 8c 0d 5e 56 1a 20  20 f2 77 69 6e 64 6f 77  |6 ..^V.  .window|
0000d620  69 6e 66 6f 28 77 25 28  69 64 25 29 29 0d 5e 60  |info(w%(id%)).^`|
0000d630  14 20 20 62 6c 6b 25 21  32 34 3d 62 6c 6b 25 21  |.  blk%!24=blk%!|
0000d640  34 0d 5e 6a 14 20 20 62  6c 6b 25 21 32 38 3d 62  |4.^j.  blk%!28=b|
0000d650  6c 6b 25 21 38 0d 5e 74  15 20 20 62 6c 6b 25 21  |lk%!8.^t.  blk%!|
0000d660  33 32 3d 62 6c 6b 25 21  31 32 0d 5e 7e 15 20 20  |32=blk%!12.^~.  |
0000d670  62 6c 6b 25 21 33 36 3d  62 6c 6b 25 21 31 36 0d  |blk%!36=blk%!16.|
0000d680  5e 88 10 20 20 74 79 70  65 25 2d 3d 32 35 36 0d  |^..  type%-=256.|
0000d690  5e 92 05 cd 0d 5e 9c 0b  21 62 6c 6b 25 3d 30 0d  |^....^..!blk%=0.|
0000d6a0  5e a6 0c 62 6c 6b 25 21  34 3d 37 0d 5e b0 0f 64  |^..blk%!4=7.^..d|
0000d6b0  72 61 67 67 69 6e 67 25  3d b9 0d 5e ba 0f 64 72  |ragging%=..^..dr|
0000d6c0  61 67 69 64 25 3d 69 64  25 0d 5e c4 14 64 72 61  |agid%=id%.^..dra|
0000d6d0  67 5f 74 79 70 65 25 3d  74 79 70 65 25 0d 5e ce  |g_type%=type%.^.|
0000d6e0  1a c8 99 22 57 69 6d 70  5f 44 72 61 67 42 6f 78  |..."Wimp_DragBox|
0000d6f0  22 2c 2c 62 6c 6b 25 0d  5e d8 05 e1 0d 5e e2 04  |",,blk%.^....^..|
0000d700  0d 5e ec 1b dd 20 f2 73  74 61 72 74 64 72 61 67  |.^... .startdrag|
0000d710  28 69 64 25 2c 69 63 6f  6e 25 29 0d 5e f6 0f 64  |(id%,icon%).^..d|
0000d720  72 61 67 69 64 25 3d 69  64 25 0d 5f 00 13 64 72  |ragid%=id%._..dr|
0000d730  61 67 69 63 6f 6e 25 3d  69 63 6f 6e 25 0d 5f 0a  |agicon%=icon%._.|
0000d740  15 77 69 6e 64 25 3d 77  25 28 64 72 61 67 69 64  |.wind%=w%(dragid|
0000d750  25 29 0d 5f 14 16 f2 77  69 6e 64 6f 77 69 6e 66  |%)._...windowinf|
0000d760  6f 28 77 69 6e 64 25 29  0d 5f 1e 1f f2 69 63 6f  |o(wind%)._...ico|
0000d770  6e 69 6e 66 6f 28 77 69  6e 64 25 2c 69 63 6f 6e  |ninfo(wind%,icon|
0000d780  25 2c 62 6c 6b 25 29 0d  5f 28 0b 21 62 6c 6b 25  |%,blk%)._(.!blk%|
0000d790  3d 30 0d 5f 32 0c 62 6c  6b 25 21 34 3d 35 0d 5f  |=0._2.blk%!4=5._|
0000d7a0  3c 0f 62 6c 6b 25 21 38  2b 3d 77 78 25 0d 5f 46  |<.blk%!8+=wx%._F|
0000d7b0  10 62 6c 6b 25 21 31 32  2b 3d 77 79 25 0d 5f 50  |.blk%!12+=wy%._P|
0000d7c0  10 62 6c 6b 25 21 31 36  2b 3d 77 78 25 0d 5f 5a  |.blk%!16+=wx%._Z|
0000d7d0  10 62 6c 6b 25 21 32 30  2b 3d 77 79 25 0d 5f 64  |.blk%!20+=wy%._d|
0000d7e0  0d 62 6c 6b 25 21 32 34  3d 30 0d 5f 6e 0d 62 6c  |.blk%!24=0._n.bl|
0000d7f0  6b 25 21 32 38 3d 30 0d  5f 78 10 62 6c 6b 25 21  |k%!28=0._x.blk%!|
0000d800  33 32 3d 73 63 78 25 0d  5f 82 10 62 6c 6b 25 21  |32=scx%._..blk%!|
0000d810  33 36 3d 73 63 79 25 0d  5f 8c 0d e7 20 64 72 61  |36=scy%._... dra|
0000d820  67 25 20 8c 0d 5f 96 1d  f2 69 63 6f 6e 69 6e 66  |g% .._...iconinf|
0000d830  6f 28 77 69 6e 64 25 2c  69 63 6f 6e 25 2c 71 25  |o(wind%,icon%,q%|
0000d840  29 0d 5f 97 0d 73 70 72  69 74 65 25 3d 31 0d 5f  |)._..sprite%=1._|
0000d850  98 22 73 70 72 69 74 65  24 3d a4 69 63 6f 6e 74  |."sprite$=.icont|
0000d860  65 78 74 28 77 69 6e 64  25 2c 69 63 6f 6e 25 29  |ext(wind%,icon%)|
0000d870  0d 5f a0 39 e7 20 28 71  25 21 32 34 29 80 33 3d  |._.9. (q%!24).3=|
0000d880  33 20 8c 20 73 70 72 69  74 65 24 3d 24 28 28 71  |3 . sprite$=$((q|
0000d890  25 21 33 32 29 2b 31 29  3a 73 70 72 69 74 65 25  |%!32)+1):sprite%|
0000d8a0  3d 73 70 72 69 74 65 73  25 0d 5f aa 3c c8 99 22  |=sprites%._.<.."|
0000d8b0  44 72 61 67 41 53 70 72  69 74 65 5f 53 74 61 72  |DragASprite_Star|
0000d8c0  74 22 2c 31 39 37 2c 73  70 72 69 74 65 25 2c 73  |t",197,sprite%,s|
0000d8d0  70 72 69 74 65 24 2c 62  6c 6b 25 2b 38 2c 62 6c  |prite$,blk%+8,bl|
0000d8e0  6b 25 2b 32 34 0d 5f b4  05 cc 0d 5f be 1a c8 99  |k%+24._...._....|
0000d8f0  22 57 69 6d 70 5f 44 72  61 67 42 6f 78 22 2c 2c  |"Wimp_DragBox",,|
0000d900  62 6c 6b 25 0d 5f c8 05  cd 0d 5f d2 05 e1 0d 5f  |blk%._...._...._|
0000d910  dc 04 0d 5f e6 1b f4 20  2d 20 75 73 65 72 20 69  |..._... - user i|
0000d920  6e 74 65 72 6f 67 61 74  69 6f 6e 20 2d 0d 5f f0  |nterogation -._.|
0000d930  04 0d 5f fa 16 dd 20 a4  63 68 65 63 6b 28 6d 65  |.._... .check(me|
0000d940  73 73 61 67 65 24 29 0d  60 04 18 c8 99 22 57 69  |ssage$).`...."Wi|
0000d950  6d 70 5f 44 72 61 67 42  6f 78 22 2c 2c 2d 31 0d  |mp_DragBox",,-1.|
0000d960  60 0e 09 21 71 25 3d 30  0d 60 18 14 24 28 71 25  |`..!q%=0.`..$(q%|
0000d970  2b 34 29 3d 6d 65 73 73  61 67 65 24 0d 60 22 42  |+4)=message$.`"B|
0000d980  c8 99 22 57 69 6d 70 5f  52 65 70 6f 72 74 45 72  |.."Wimp_ReportEr|
0000d990  72 6f 72 22 2c 71 25 2c  31 39 2c 22 4d 65 73 73  |ror",q%,19,"Mess|
0000d9a0  61 67 65 20 66 72 6f 6d  20 22 2b 70 72 6f 67 72  |age from "+progr|
0000d9b0  61 6d 24 20 b8 20 2c 61  6e 73 77 65 72 25 0d 60  |am$ . ,answer%.`|
0000d9c0  2c 19 e7 20 61 6e 73 77  65 72 25 3d 31 20 8c 20  |,.. answer%=1 . |
0000d9d0  3d b9 20 8b 20 3d a3 0d  60 36 04 0d 60 40 17 dd  |=. . =..`6..`@..|
0000d9e0  20 f2 72 65 70 6f 72 74  28 6d 65 73 73 61 67 65  | .report(message|
0000d9f0  24 29 0d 60 4a 25 64 25  3d a4 71 75 65 73 74 69  |$).`J%d%=.questi|
0000da00  6f 6e 28 6d 65 73 73 61  67 65 24 2c 22 4f 4b 22  |on(message$,"OK"|
0000da10  2c 22 22 2c 22 22 29 0d  60 54 05 e1 0d 60 5e 04  |,"","").`T...`^.|
0000da20  0d 60 68 30 dd 20 a4 71  75 65 73 74 69 6f 6e 28  |.`h0. .question(|
0000da30  61 6e 73 24 28 30 29 2c  61 6e 73 24 28 31 29 2c  |ans$(0),ans$(1),|
0000da40  61 6e 73 24 28 32 29 2c  61 6e 73 24 28 33 29 29  |ans$(2),ans$(3))|
0000da50  0d 60 72 0d ea 20 73 74  61 74 75 73 25 0d 60 7c  |.`r.. status%.`||
0000da60  0d 73 74 61 74 75 73 25  3d 32 0d 60 86 0e f2 63  |.status%=2.`...c|
0000da70  6c 6f 73 65 6d 65 6e 75  0d 60 90 0e e3 20 69 25  |losemenu.`... i%|
0000da80  3d 30 20 b8 20 33 0d 60  9a 15 20 20 e7 20 61 6e  |=0 . 3.`..  . an|
0000da90  73 24 28 69 25 29 3d 22  22 20 8c 0d 60 a4 23 20  |s$(i%)="" ..`.# |
0000daa0  20 20 20 f2 72 65 6d 6f  76 65 69 63 6f 6e 28 77  |   .removeicon(w|
0000dab0  25 28 72 65 70 6f 72 74  25 29 2c 69 25 29 0d 60  |%(report%),i%).`|
0000dac0  ae 07 20 20 cc 0d 60 b8  23 20 20 20 20 f2 72 65  |..  ..`.#    .re|
0000dad0  69 6e 69 74 69 63 6f 6e  28 77 25 28 72 65 70 6f  |initicon(w%(repo|
0000dae0  72 74 25 29 2c 69 25 29  0d 60 c2 2d 20 20 20 20  |rt%),i%).`.-    |
0000daf0  f2 73 65 74 69 63 6f 6e  74 65 78 74 28 77 25 28  |.seticontext(w%(|
0000db00  72 65 70 6f 72 74 25 29  2c 69 25 2c 61 6e 73 24  |report%),i%,ans$|
0000db10  28 69 25 29 29 0d 60 cc  07 20 20 cd 0d 60 d6 08  |(i%)).`..  ..`..|
0000db20  ed 20 69 25 0d 60 e0 0e  f2 6c 6f 73 65 63 61 72  |. i%.`...losecar|
0000db30  65 74 0d 60 ea 1e f2 6f  70 65 6e 69 6e 63 65 6e  |et.`...openincen|
0000db40  74 72 65 28 77 25 28 72  65 70 6f 72 74 25 29 29  |tre(w%(report%))|
0000db50  0d 60 f4 11 e7 20 62 65  65 70 25 20 8c 20 ef 20  |.`... beep% . . |
0000db60  37 0d 60 fe 0d 61 6e 73  77 65 72 25 3d 30 0d 61  |7.`..answer%=0.a|
0000db70  08 05 f5 0d 61 12 0e 20  20 f2 70 6f 6c 6c 28 31  |....a..  .poll(1|
0000db80  29 0d 61 1c 0d fd 20 61  6e 73 77 65 72 25 0d 61  |).a... answer%.a|
0000db90  26 1d f2 63 6c 6f 73 65  77 69 6e 64 6f 77 28 77  |&..closewindow(w|
0000dba0  25 28 72 65 70 6f 72 74  25 29 29 0d 61 30 0c 3d  |%(report%)).a0.=|
0000dbb0  61 6e 73 77 65 72 25 0d  61 3a 04 0d 61 44 13 dd  |answer%.a:..aD..|
0000dbc0  20 a4 63 6c 69 63 6b 5f  72 65 70 6f 72 74 0d 61  | .click_report.a|
0000dbd0  4e 1d e7 20 69 63 6f 6e  25 3e 30 20 8c 20 61 6e  |N.. icon%>0 . an|
0000dbe0  73 77 65 72 25 3d 69 63  6f 6e 25 0d 61 58 06 3d  |swer%=icon%.aX.=|
0000dbf0  30 0d 61 62 04 0d 61 6c  0e f4 20 2d 20 6d 69 73  |0.ab..al.. - mis|
0000dc00  63 20 2d 0d 61 76 04 0d  61 80 0b dd 20 f2 71 75  |c -.av..a... .qu|
0000dc10  69 74 0d 61 8a 1e f2 63  6c 6f 73 65 5f 69 66 5f  |it.a...close_if_|
0000dc20  61 63 74 69 76 65 28 61  64 64 72 65 73 73 25 29  |active(address%)|
0000dc30  0d 61 94 1c f2 63 6c 6f  73 65 5f 69 66 5f 61 63  |.a...close_if_ac|
0000dc40  74 69 76 65 28 65 6e 74  72 79 25 29 0d 61 9e 1d  |tive(entry%).a..|
0000dc50  f2 63 6c 6f 73 65 5f 69  66 5f 61 63 74 69 76 65  |.close_if_active|
0000dc60  28 6c 65 74 74 65 72 25  29 0d 61 a8 1a f2 63 6c  |(letter%).a...cl|
0000dc70  6f 73 65 5f 69 66 5f 61  63 74 69 76 65 28 64 61  |ose_if_active(da|
0000dc80  79 25 29 0d 61 b2 1b f2  63 6c 6f 73 65 5f 69 66  |y%).a...close_if|
0000dc90  5f 61 63 74 69 76 65 28  79 65 61 72 25 29 0d 61  |_active(year%).a|
0000dca0  bc 1e f2 63 6c 6f 73 65  5f 69 66 5f 61 63 74 69  |...close_if_acti|
0000dcb0  76 65 28 6e 6f 74 65 70  61 64 25 29 0d 61 c6 39  |ve(notepad%).a.9|
0000dcc0  e7 20 61 5f 63 68 61 6e  67 65 64 25 20 84 20 73  |. a_changed% . s|
0000dcd0  5f 63 68 61 6e 67 65 64  25 20 84 20 6e 5f 63 68  |_changed% . n_ch|
0000dce0  61 6e 67 65 64 25 20 84  20 63 5f 63 68 61 6e 67  |anged% . c_chang|
0000dcf0  65 64 25 20 8c 0d 61 d0  45 20 20 c8 8e 20 a4 71  |ed% ..a.E  .. .q|
0000dd00  75 65 73 74 69 6f 6e 28  22 54 68 65 72 65 20 69  |uestion("There i|
0000dd10  73 20 75 6e 73 61 76 65  64 20 64 61 74 61 2e 22  |s unsaved data."|
0000dd20  2c 22 53 61 76 65 22 2c  22 51 75 69 74 22 2c 22  |,"Save","Quit","|
0000dd30  43 61 6e 63 65 6c 22 29  20 ca 0d 61 da 0b 20 20  |Cancel") ..a..  |
0000dd40  20 20 c9 20 31 0d 61 e4  17 20 20 20 20 20 20 f2  |  . 1.a..      .|
0000dd50  73 61 76 65 5f 63 68 61  6e 67 65 64 0d 61 ee 10  |save_changed.a..|
0000dd60  20 20 20 20 20 20 65 78  69 74 3d b9 0d 61 f8 14  |      exit=..a..|
0000dd70  20 20 20 20 c9 20 32 20  3a 20 65 78 69 74 3d b9  |    . 2 : exit=.|
0000dd80  0d 62 02 07 20 20 cb 0d  62 0c 05 cc 0d 62 16 0c  |.b..  ..b....b..|
0000dd90  20 20 65 78 69 74 3d b9  0d 62 20 05 cd 0d 62 2a  |  exit=..b ...b*|
0000dda0  17 e7 20 65 78 69 74 3d  b9 20 8c 20 f2 70 6f 6c  |.. exit=. . .pol|
0000ddb0  6c 28 30 29 0d 62 34 05  e1 0d 62 3e 04 0d 62 48  |l(0).b4...b>..bH|
0000ddc0  10 dd 20 f2 63 6c 6f 73  65 64 6f 77 6e 0d 62 52  |.. .closedown.bR|
0000ddd0  0e f2 72 65 73 65 74 73  6c 6f 74 0d 62 5c 10 e3  |..resetslot.b\..|
0000dde0  20 69 25 3d 31 20 b8 20  32 35 35 0d 62 66 14 c8  | i%=1 . 255.bf..|
0000ddf0  95 20 66 6f 6e 74 74 61  62 6c 65 25 3f 69 25 0d  |. fonttable%?i%.|
0000de00  62 70 18 c8 99 22 46 6f  6e 74 5f 4c 6f 73 65 46  |bp..."Font_LoseF|
0000de10  6f 6e 74 22 2c 69 25 0d  62 7a 14 66 6f 6e 74 74  |ont",i%.bz.fontt|
0000de20  61 62 6c 65 25 3f 69 25  2d 3d 31 0d 62 84 05 ce  |able%?i%-=1.b...|
0000de30  0d 62 8e 08 ed 20 69 25  0d 62 98 1e c8 99 22 57  |.b... i%.b...."W|
0000de40  69 6d 70 5f 43 6c 6f 73  65 44 6f 77 6e 22 2c 6d  |imp_CloseDown",m|
0000de50  79 74 61 73 6b 25 0d 62  a2 05 e0 0d 62 ac 05 e1  |ytask%.b....b...|
0000de60  0d 62 b6 04 0d 62 c0 1a  dd 20 a4 6d 6f 64 65 76  |.b...b... .modev|
0000de70  61 72 28 6d 6f 64 65 25  2c 76 61 72 25 29 0d 62  |ar(mode%,var%).b|
0000de80  ca 2f c8 99 22 4f 53 5f  52 65 61 64 4d 6f 64 65  |./.."OS_ReadMode|
0000de90  56 61 72 69 61 62 6c 65  22 2c 6d 6f 64 65 25 2c  |Variable",mode%,|
0000dea0  76 61 72 25 20 b8 20 2c  2c 76 61 6c 25 0d 62 d4  |var% . ,,val%.b.|
0000deb0  09 3d 76 61 6c 25 0d 62  de 04 0d 62 e8 11 dd 20  |.=val%.b...b... |
0000dec0  a4 73 74 72 69 6e 67 28  62 25 29 0d 62 f2 08 ea  |.string(b%).b...|
0000ded0  20 73 24 0d 62 fc 09 73  24 3d 22 22 0d 63 06 0d  | s$.b..s$="".c..|
0000dee0  c8 95 20 3f 62 25 3e 33  31 0d 63 10 0e 73 24 2b  |.. ?b%>31.c..s$+|
0000def0  3d bd 28 3f 62 25 29 0d  63 1a 09 62 25 2b 3d 31  |=.(?b%).c..b%+=1|
0000df00  0d 63 24 05 ce 0d 63 2e  07 3d 73 24 0d 63 38 04  |.c$...c..=s$.c8.|
0000df10  0d 63 42 11 f4 20 2d 20  77 69 6e 64 6f 77 73 20  |.cB.. - windows |
0000df20  2d 0d 63 4c 04 0d 63 56  31 dd 20 f2 73 65 74 77  |-.cL..cV1. .setw|
0000df30  69 6e 64 6f 77 65 78 74  65 6e 74 28 77 69 6e 64  |indowextent(wind|
0000df40  25 2c 21 71 25 2c 71 25  21 34 2c 71 25 21 38 2c  |%,!q%,q%!4,q%!8,|
0000df50  71 25 21 31 32 29 0d 63  60 1f c8 99 22 57 69 6d  |q%!12).c`..."Wim|
0000df60  70 5f 53 65 74 45 78 74  65 6e 74 22 2c 77 69 6e  |p_SetExtent",win|
0000df70  64 25 2c 71 25 0d 63 6a  05 e1 0d 63 74 04 0d 63  |d%,q%.cj...ct..c|
0000df80  7e 1a dd 20 f2 6f 70 65  6e 69 6e 63 65 6e 74 72  |~.. .openincentr|
0000df90  65 28 21 62 6c 6b 25 29  0d 63 88 21 c8 99 22 57  |e(!blk%).c.!.."W|
0000dfa0  69 6d 70 5f 47 65 74 57  69 6e 64 6f 77 53 74 61  |imp_GetWindowSta|
0000dfb0  74 65 22 2c 2c 62 6c 6b  25 0d 63 92 16 6d 31 25  |te",,blk%.c..m1%|
0000dfc0  3d 62 6c 6b 25 21 31 32  2d 62 6c 6b 25 21 34 0d  |=blk%!12-blk%!4.|
0000dfd0  63 9c 16 6d 32 25 3d 62  6c 6b 25 21 31 36 2d 62  |c..m2%=blk%!16-b|
0000dfe0  6c 6b 25 21 38 0d 63 a6  18 62 6c 6b 25 21 34 3d  |lk%!8.c..blk%!4=|
0000dff0  28 73 63 78 25 2d 6d 31  25 29 3e 3e 31 0d 63 b0  |(scx%-m1%)>>1.c.|
0000e000  18 62 6c 6b 25 21 38 3d  28 73 63 79 25 2d 6d 32  |.blk%!8=(scy%-m2|
0000e010  25 29 3e 3e 31 0d 63 ba  19 62 6c 6b 25 21 31 32  |%)>>1.c..blk%!12|
0000e020  3d 28 73 63 78 25 2b 6d  31 25 29 3e 3e 31 0d 63  |=(scx%+m1%)>>1.c|
0000e030  c4 19 62 6c 6b 25 21 31  36 3d 28 73 63 79 25 2b  |..blk%!16=(scy%+|
0000e040  6d 32 25 29 3e 3e 31 0d  63 ce 0e 62 6c 6b 25 21  |m2%)>>1.c..blk%!|
0000e050  32 38 3d 2d 31 0d 63 d8  0f f2 6f 70 65 6e 77 69  |28=-1.c...openwi|
0000e060  6e 64 6f 77 0d 63 e2 05  e1 0d 63 ec 04 0d 63 f6  |ndow.c....c...c.|
0000e070  1d dd 20 f2 6e 65 77 74  69 74 6c 65 28 21 62 6c  |.. .newtitle(!bl|
0000e080  6b 25 2c 74 69 74 6c 65  24 29 0d 64 00 20 c8 99  |k%,title$).d. ..|
0000e090  22 57 69 6d 70 5f 47 65  74 57 69 6e 64 6f 77 49  |"Wimp_GetWindowI|
0000e0a0  6e 66 6f 22 2c 2c 62 6c  6b 25 0d 64 0a 1a e7 20  |nfo",,blk%.d... |
0000e0b0  24 28 62 6c 6b 25 21 37  36 29 3c 3e 74 69 74 6c  |$(blk%!76)<>titl|
0000e0c0  65 24 20 8c 0d 64 14 15  24 28 62 6c 6b 25 21 37  |e$ ..d..$(blk%!7|
0000e0d0  36 29 3d 74 69 74 6c 65  24 0d 64 1e 1b e7 20 61  |6)=title$.d... a|
0000e0e0  63 74 69 76 65 25 28 a4  69 64 28 21 62 6c 6b 25  |ctive%(.id(!blk%|
0000e0f0  29 29 20 8c 0d 64 28 25  20 20 c8 99 22 57 69 6d  |)) ..d(%  .."Wim|
0000e100  70 5f 47 65 74 57 69 6e  64 6f 77 4f 75 74 6c 69  |p_GetWindowOutli|
0000e110  6e 65 22 2c 2c 62 6c 6b  25 0d 64 32 3f 20 20 c8  |ne",,blk%.d2?  .|
0000e120  99 22 57 69 6d 70 5f 46  6f 72 63 65 52 65 64 72  |."Wimp_ForceRedr|
0000e130  61 77 22 2c 2d 31 2c 62  6c 6b 25 21 34 2c 62 6c  |aw",-1,blk%!4,bl|
0000e140  6b 25 21 31 36 2d 34 34  2c 62 6c 6b 25 21 31 32  |k%!16-44,blk%!12|
0000e150  2c 62 6c 6b 25 21 31 36  0d 64 3c 05 cd 0d 64 46  |,blk%!16.d<...dF|
0000e160  05 cd 0d 64 50 05 e1 0d  64 5a 04 0d 64 64 19 dd  |...dP...dZ..dd..|
0000e170  20 f2 66 6f 72 63 65 72  65 64 72 61 77 28 21 62  | .forceredraw(!b|
0000e180  6c 6b 25 29 0d 64 6e 20  c8 99 22 57 69 6d 70 5f  |lk%).dn .."Wimp_|
0000e190  47 65 74 57 69 6e 64 6f  77 49 6e 66 6f 22 2c 2c  |GetWindowInfo",,|
0000e1a0  62 6c 6b 25 0d 64 78 3e  c8 99 22 57 69 6d 70 5f  |blk%.dx>.."Wimp_|
0000e1b0  46 6f 72 63 65 52 65 64  72 61 77 22 2c 21 62 6c  |ForceRedraw",!bl|
0000e1c0  6b 25 2c 62 6c 6b 25 21  34 34 2c 62 6c 6b 25 21  |k%,blk%!44,blk%!|
0000e1d0  34 38 2c 62 6c 6b 25 21  35 32 2c 62 6c 6b 25 21  |48,blk%!52,blk%!|
0000e1e0  35 36 0d 64 82 05 e1 0d  64 8c 04 0d 64 96 1a dd  |56.d....d...d...|
0000e1f0  20 f2 75 70 64 61 74 65  77 69 6e 64 6f 77 28 21  | .updatewindow(!|
0000e200  62 6c 6b 25 29 0d 64 a0  20 c8 99 22 57 69 6d 70  |blk%).d. .."Wimp|
0000e210  5f 47 65 74 57 69 6e 64  6f 77 49 6e 66 6f 22 2c  |_GetWindowInfo",|
0000e220  2c 62 6c 6b 25 0d 64 aa  12 62 6c 6b 25 21 34 3d  |,blk%.d..blk%!4=|
0000e230  62 6c 6b 25 21 34 34 0d  64 b4 12 62 6c 6b 25 21  |blk%!44.d..blk%!|
0000e240  38 3d 62 6c 6b 25 21 34  38 0d 64 be 13 62 6c 6b  |8=blk%!48.d..blk|
0000e250  25 21 31 32 3d 62 6c 6b  25 21 35 32 0d 64 c8 13  |%!12=blk%!52.d..|
0000e260  62 6c 6b 25 21 31 36 3d  62 6c 6b 25 21 35 36 0d  |blk%!16=blk%!56.|
0000e270  64 d2 27 c8 99 22 57 69  6d 70 5f 55 70 64 61 74  |d.'.."Wimp_Updat|
0000e280  65 57 69 6e 64 6f 77 22  2c 2c 62 6c 6b 25 20 b8  |eWindow",,blk% .|
0000e290  20 6d 6f 72 65 25 0d 64  dc 05 e1 0d 64 e6 04 0d  | more%.d....d...|
0000e2a0  64 f0 1c dd 20 f2 6f 70  65 6e 66 75 6c 6c 79 28  |d... .openfully(|
0000e2b0  21 62 6c 6b 25 2c 74 6f  70 25 29 0d 64 fa 20 c8  |!blk%,top%).d. .|
0000e2c0  99 22 57 69 6d 70 5f 47  65 74 57 69 6e 64 6f 77  |."Wimp_GetWindow|
0000e2d0  49 6e 66 6f 22 2c 2c 62  6c 6b 25 0d 65 04 24 62  |Info",,blk%.e.$b|
0000e2e0  6c 6b 25 21 31 32 3d 62  6c 6b 25 21 34 2b 28 62  |lk%!12=blk%!4+(b|
0000e2f0  6c 6b 25 21 35 32 2d 62  6c 6b 25 21 34 34 29 0d  |lk%!52-blk%!44).|
0000e300  65 0e 24 62 6c 6b 25 21  38 3d 62 6c 6b 25 21 31  |e.$blk%!8=blk%!1|
0000e310  36 2d 28 62 6c 6b 25 21  35 36 2d 62 6c 6b 25 21  |6-(blk%!56-blk%!|
0000e320  34 38 29 0d 65 18 17 e7  20 74 6f 70 25 20 8c 20  |48).e... top% . |
0000e330  62 6c 6b 25 21 32 38 3d  2d 31 0d 65 22 0f f2 6f  |blk%!28=-1.e"..o|
0000e340  70 65 6e 77 69 6e 64 6f  77 0d 65 2c 05 e1 0d 65  |penwindow.e,...e|
0000e350  36 04 0d 65 40 19 dd 20  f2 63 6c 6f 73 65 77 69  |6..e@.. .closewi|
0000e360  6e 64 6f 77 28 77 69 6e  64 25 29 0d 65 4a 11 ea  |ndow(wind%).eJ..|
0000e370  20 63 69 64 25 2c 63 6c  6f 73 65 25 0d 65 54 13  | cid%,close%.eT.|
0000e380  63 69 64 25 3d a4 69 64  28 77 69 6e 64 25 29 0d  |cid%=.id(wind%).|
0000e390  65 5e 43 e7 20 73 79 73  66 6c 61 67 73 25 28 63  |e^C. sysflags%(c|
0000e3a0  69 64 25 29 80 32 20 8c  20 63 6c 6f 73 65 25 3d  |id%).2 . close%=|
0000e3b0  a0 28 22 46 4e 63 6c 6f  73 65 5f 22 2b 69 64 24  |.("FNclose_"+id$|
0000e3c0  28 63 69 64 25 29 29 20  8b 20 63 6c 6f 73 65 25  |(cid%)) . close%|
0000e3d0  3d b9 0d 65 68 0e e7 20  63 6c 6f 73 65 25 20 8c  |=..eh.. close% .|
0000e3e0  0d 65 72 15 20 20 61 63  74 69 76 65 25 28 63 69  |.er.  active%(ci|
0000e3f0  64 25 29 3d a3 0d 65 7c  21 20 20 f2 71 75 69 63  |d%)=..e|!  .quic|
0000e400  6b 63 6c 6f 73 65 77 69  6e 64 6f 77 28 77 25 28  |kclosewindow(w%(|
0000e410  63 69 64 25 29 29 0d 65  86 05 cd 0d 65 90 05 e1  |cid%)).e....e...|
0000e420  0d 65 9a 04 0d 65 a4 1b  dd 20 f2 63 6c 6f 73 65  |.e...e... .close|
0000e430  5f 69 66 5f 61 63 74 69  76 65 28 69 64 25 29 0d  |_if_active(id%).|
0000e440  65 ae 2a e7 20 61 63 74  69 76 65 25 28 69 64 25  |e.*. active%(id%|
0000e450  29 20 8c 20 f2 63 6c 6f  73 65 77 69 6e 64 6f 77  |) . .closewindow|
0000e460  28 77 25 28 69 64 25 29  29 0d 65 b8 05 e1 0d 65  |(w%(id%)).e....e|
0000e470  c2 04 0d 65 cc 1c dd 20  f2 71 75 69 63 6b 63 6c  |...e... .quickcl|
0000e480  6f 73 65 77 69 6e 64 6f  77 28 21 71 25 29 0d 65  |osewindow(!q%).e|
0000e490  d6 1c c8 99 22 57 69 6d  70 5f 43 6c 6f 73 65 57  |...."Wimp_CloseW|
0000e4a0  69 6e 64 6f 77 22 2c 2c  71 25 0d 65 e0 05 e1 0d  |indow",,q%.e....|
0000e4b0  65 ea 04 0d 65 f4 14 dd  20 f2 72 65 6f 70 65 6e  |e...e... .reopen|
0000e4c0  28 77 69 6e 64 25 29 0d  65 fe 12 69 64 25 3d a4  |(wind%).e..id%=.|
0000e4d0  69 64 28 77 69 6e 64 25  29 0d 66 08 14 e7 20 61  |id(wind%).f... a|
0000e4e0  63 74 69 76 65 25 28 69  64 25 29 20 8c 0d 66 12  |ctive%(id%) ..f.|
0000e4f0  11 20 20 21 62 6c 6b 25  3d 77 69 6e 64 25 0d 66  |.  !blk%=wind%.f|
0000e500  1c 23 20 20 c8 99 22 57  69 6d 70 5f 47 65 74 57  |.#  .."Wimp_GetW|
0000e510  69 6e 64 6f 77 53 74 61  74 65 22 2c 2c 62 6c 6b  |indowState",,blk|
0000e520  25 0d 66 26 11 20 20 f2  6f 70 65 6e 77 69 6e 64  |%.f&.  .openwind|
0000e530  6f 77 0d 66 30 19 20 20  f2 66 6f 72 63 65 72 65  |ow.f0.  .forcere|
0000e540  64 72 61 77 28 77 69 6e  64 25 29 0d 66 3a 05 cc  |draw(wind%).f:..|
0000e550  0d 66 44 14 20 20 f2 6f  70 65 6e 75 70 28 77 69  |.fD.  .openup(wi|
0000e560  6e 64 25 29 0d 66 4e 05  cd 0d 66 58 05 e1 0d 66  |nd%).fN...fX...f|
0000e570  62 04 0d 66 6c 18 dd 20  f2 77 69 6e 64 6f 77 69  |b..fl.. .windowi|
0000e580  6e 66 6f 28 77 69 6e 64  25 29 0d 66 76 0f 21 62  |nfo(wind%).fv.!b|
0000e590  6c 6b 25 3d 77 69 6e 64  25 0d 66 80 20 c8 99 22  |lk%=wind%.f. .."|
0000e5a0  57 69 6d 70 5f 47 65 74  57 69 6e 64 6f 77 49 6e  |Wimp_GetWindowIn|
0000e5b0  66 6f 22 2c 2c 62 6c 6b  25 0d 66 8a 16 77 78 25  |fo",,blk%.f..wx%|
0000e5c0  3d 62 6c 6b 25 21 34 2d  62 6c 6b 25 21 32 30 0d  |=blk%!4-blk%!20.|
0000e5d0  66 94 17 77 79 25 3d 62  6c 6b 25 21 31 36 2d 62  |f..wy%=blk%!16-b|
0000e5e0  6c 6b 25 21 32 34 0d 66  9e 16 77 77 25 3d 62 6c  |lk%!24.f..ww%=bl|
0000e5f0  6b 25 21 31 32 2d 62 6c  6b 25 21 34 0d 66 a8 16  |k%!12-blk%!4.f..|
0000e600  77 68 25 3d 62 6c 6b 25  21 31 36 2d 62 6c 6b 25  |wh%=blk%!16-blk%|
0000e610  21 38 0d 66 b2 05 e1 0d  66 bc 04 0d 66 c6 18 dd  |!8.f....f...f...|
0000e620  20 f2 69 6e 69 74 77 69  6e 64 6f 72 64 73 28 69  | .initwindords(i|
0000e630  64 25 29 0d 66 d0 18 f2  77 69 6e 64 6f 77 69 6e  |d%).f...windowin|
0000e640  66 6f 28 77 25 28 69 64  25 29 29 0d 66 da 10 77  |fo(w%(id%)).f..w|
0000e650  78 25 28 69 64 25 29 3d  77 78 25 0d 66 e4 10 77  |x%(id%)=wx%.f..w|
0000e660  79 25 28 69 64 25 29 3d  77 79 25 0d 66 ee 10 77  |y%(id%)=wy%.f..w|
0000e670  77 25 28 69 64 25 29 3d  77 77 25 0d 66 f8 10 77  |w%(id%)=ww%.f..w|
0000e680  68 25 28 69 64 25 29 3d  77 68 25 0d 67 02 05 e1  |h%(id%)=wh%.g...|
0000e690  0d 67 0c 04 0d 67 16 2a  dd 20 a4 73 61 76 65 62  |.g...g.*. .saveb|
0000e6a0  6f 78 28 66 69 6c 65 74  79 70 65 25 2c 73 74 61  |ox(filetype%,sta|
0000e6b0  6e 64 61 72 64 24 2c 66  6c 61 67 73 25 29 0d 67  |ndard$,flags%).g|
0000e6c0  20 24 77 69 6e 64 25 3d  a4 77 69 6e 64 6f 77 28  | $wind%=.window(|
0000e6d0  22 73 61 76 65 22 2c 22  73 61 76 65 22 2c 30 2c  |"save","save",0,|
0000e6e0  30 29 0d 67 2a 3c f2 73  65 74 69 63 6f 6e 74 65  |0).g*<.seticonte|
0000e6f0  78 74 28 77 25 28 77 69  6e 64 25 29 2c 33 2c 22  |xt(w%(wind%),3,"|
0000e700  66 69 6c 65 5f 22 2b c2  22 30 30 22 2b c3 7e 28  |file_"+."00"+.~(|
0000e710  66 69 6c 65 74 79 70 65  25 29 2c 33 29 29 0d 67  |filetype%),3)).g|
0000e720  34 27 f2 73 65 74 69 63  6f 6e 74 65 78 74 28 77  |4'.seticontext(w|
0000e730  25 28 77 69 6e 64 25 29  2c 31 2c 73 74 61 6e 64  |%(wind%),1,stand|
0000e740  61 72 64 24 29 0d 67 3e  27 f2 73 65 74 69 63 6f  |ard$).g>'.setico|
0000e750  6e 74 65 78 74 28 77 25  28 77 69 6e 64 25 29 2c  |ntext(w%(wind%),|
0000e760  32 2c 73 74 61 6e 64 61  72 64 24 29 0d 67 48 1a  |2,standard$).gH.|
0000e770  6d 69 73 63 25 28 77 69  6e 64 25 29 3d 66 69 6c  |misc%(wind%)=fil|
0000e780  65 74 79 70 65 25 0d 67  52 1b 73 79 73 66 6c 61  |etype%.gR.sysfla|
0000e790  67 73 25 28 77 69 6e 64  25 29 3d 66 6c 61 67 73  |gs%(wind%)=flags|
0000e7a0  25 0d 67 5c 0a 3d 77 69  6e 64 25 0d 67 66 04 0d  |%.g\.=wind%.gf..|
0000e7b0  67 70 15 dd 20 a4 6c 61  73 74 62 69 74 28 66 69  |gp.. .lastbit(fi|
0000e7c0  6c 65 24 29 0d 67 7a 12  c8 95 20 a7 66 69 6c 65  |le$).gz... .file|
0000e7d0  24 2c 22 2e 22 29 0d 67  84 1f 66 69 6c 65 24 3d  |$,".").g..file$=|
0000e7e0  c1 66 69 6c 65 24 2c a7  66 69 6c 65 24 2c 22 2e  |.file$,.file$,".|
0000e7f0  22 29 2b 31 29 0d 67 8e  05 ce 0d 67 98 0a 3d 66  |")+1).g....g..=f|
0000e800  69 6c 65 24 0d 67 a2 04  0d 67 ac 10 dd 20 f2 6d  |ile$.g...g... .m|
0000e810  6f 75 73 65 69 6e 66 6f  0d 67 b6 1f c8 99 22 57  |ouseinfo.g...."W|
0000e820  69 6d 70 5f 47 65 74 50  6f 69 6e 74 65 72 49 6e  |imp_GetPointerIn|
0000e830  66 6f 22 2c 2c 71 25 0d  67 c0 0b 6d 78 25 3d 21  |fo",,q%.g..mx%=!|
0000e840  71 25 0d 67 ca 0c 6d 79  25 3d 71 25 21 34 0d 67  |q%.g..my%=q%!4.g|
0000e850  d4 0d 62 75 74 25 3d 71  25 21 38 0d 67 de 0f 77  |..but%=q%!8.g..w|
0000e860  69 6e 64 25 3d 71 25 21  31 32 0d 67 e8 0f 69 63  |ind%=q%!12.g..ic|
0000e870  6f 6e 25 3d 71 25 21 31  36 0d 67 f2 05 e1 0d 67  |on%=q%!16.g....g|
0000e880  fc 04 0d 68 06 23 dd 20  f2 73 65 74 66 69 6c 65  |...h.#. .setfile|
0000e890  74 79 70 65 28 66 69 6c  65 24 2c 66 69 6c 65 74  |type(file$,filet|
0000e8a0  79 70 65 25 29 0d 68 10  23 c8 99 22 4f 53 5f 46  |ype%).h.#.."OS_F|
0000e8b0  69 6c 65 22 2c 26 31 32  2c 66 69 6c 65 24 2c 66  |ile",&12,file$,f|
0000e8c0  69 6c 65 74 79 70 65 25  0d 68 1a 05 e1 0d 68 24  |iletype%.h....h$|
0000e8d0  04 0d 68 2e 24 dd 20 f2  73 68 61 64 65 6d 65 6e  |..h.$. .shademen|
0000e8e0  75 28 6d 65 6e 75 25 2c  69 74 65 6d 25 2c 73 68  |u(menu%,item%,sh|
0000e8f0  61 64 65 25 29 0d 68 38  18 70 25 3d 6d 65 6e 75  |ade%).h8.p%=menu|
0000e900  25 2b 33 36 2b 69 74 65  6d 25 2a 32 34 0d 68 42  |%+36+item%*24.hB|
0000e910  15 21 70 25 3d 21 70 25  20 80 ac 28 31 3c 3c 32  |.!p%=!p% ..(1<<2|
0000e920  32 29 0d 68 4c 1f e7 20  73 68 61 64 65 25 20 8c  |2).hL.. shade% .|
0000e930  20 21 70 25 3d 21 70 25  20 84 28 31 3c 3c 32 32  | !p%=!p% .(1<<22|
0000e940  29 0d 68 56 05 e1 0d 68  60 04 0d 68 6a 0f dd 20  |).hV...h`..hj.. |
0000e950  f2 67 65 74 63 61 72 65  74 0d 68 74 21 c8 99 22  |.getcaret.ht!.."|
0000e960  57 69 6d 70 5f 47 65 74  43 61 72 65 74 50 6f 73  |Wimp_GetCaretPos|
0000e970  69 74 69 6f 6e 22 2c 2c  71 25 0d 68 7e 0e 63 77  |ition",,q%.h~.cw|
0000e980  69 6e 64 25 3d 21 71 25  0d 68 88 0f 63 69 63 6f  |ind%=!q%.h..cico|
0000e990  6e 25 3d 71 25 21 34 0d  68 92 0f 63 78 6f 66 66  |n%=q%!4.h..cxoff|
0000e9a0  25 3d 71 25 21 38 0d 68  9c 10 63 79 6f 66 66 25  |%=q%!8.h..cyoff%|
0000e9b0  3d 71 25 21 31 32 0d 68  a6 12 63 68 65 69 67 68  |=q%!12.h..cheigh|
0000e9c0  74 25 3d 71 25 21 31 36  0d 68 b0 11 63 69 6e 64  |t%=q%!16.h..cind|
0000e9d0  65 78 25 3d 71 25 21 32  30 0d 68 ba 05 e1 0d 68  |ex%=q%!20.h....h|
0000e9e0  c4 04 0d 68 ce 23 dd 20  f2 70 75 74 63 61 72 65  |...h.#. .putcare|
0000e9f0  74 28 77 69 6e 64 25 2c  69 63 6f 6e 25 2c 69 6e  |t(wind%,icon%,in|
0000ea00  64 65 78 25 29 0d 68 d8  20 6c 65 6e 25 3d a9 a4  |dex%).h. len%=..|
0000ea10  69 63 6f 6e 74 65 78 74  28 77 69 6e 64 25 2c 69  |icontext(wind%,i|
0000ea20  63 6f 6e 25 29 0d 68 e2  1f e7 20 69 6e 64 65 78  |con%).h... index|
0000ea30  25 3e 6c 65 6e 25 20 8c  20 69 6e 64 65 78 25 3d  |%>len% . index%=|
0000ea40  6c 65 6e 25 0d 68 ec 35  c8 99 22 57 69 6d 70 5f  |len%.h.5.."Wimp_|
0000ea50  53 65 74 43 61 72 65 74  50 6f 73 69 74 69 6f 6e  |SetCaretPosition|
0000ea60  22 2c 77 69 6e 64 25 2c  69 63 6f 6e 25 2c 2c 2c  |",wind%,icon%,,,|
0000ea70  2d 31 2c 69 6e 64 65 78  25 0d 68 f6 05 e1 0d 69  |-1,index%.h....i|
0000ea80  00 04 0d 69 0a 1e dd 20  f2 72 65 73 65 74 63 61  |...i... .resetca|
0000ea90  72 65 74 28 77 69 6e 64  25 2c 69 63 6f 6e 25 29  |ret(wind%,icon%)|
0000eaa0  0d 69 14 21 c8 99 22 57  69 6d 70 5f 47 65 74 43  |.i.!.."Wimp_GetC|
0000eab0  61 72 65 74 50 6f 73 69  74 69 6f 6e 22 2c 2c 71  |aretPosition",,q|
0000eac0  25 0d 69 1e 2d e7 20 28  21 71 25 3d 77 69 6e 64  |%.i.-. (!q%=wind|
0000ead0  25 20 80 20 28 71 25 21  34 3d 69 63 6f 6e 25 20  |% . (q%!4=icon% |
0000eae0  84 20 69 63 6f 6e 25 3d  2d 31 29 29 20 8c 0d 69  |. icon%=-1)) ..i|
0000eaf0  28 10 20 20 69 63 6f 6e  25 3d 71 25 21 34 0d 69  |(.  icon%=q%!4.i|
0000eb00  32 12 20 20 69 6e 64 65  78 25 3d 71 25 21 32 30  |2.  index%=q%!20|
0000eb10  0d 69 3c 22 20 20 6c 65  6e 25 3d a9 a4 69 63 6f  |.i<"  len%=..ico|
0000eb20  6e 74 65 78 74 28 77 69  6e 64 25 2c 69 63 6f 6e  |ntext(wind%,icon|
0000eb30  25 29 0d 69 46 21 20 20  e7 20 69 6e 64 65 78 25  |%).iF!  . index%|
0000eb40  3e 6c 65 6e 25 20 8c 20  69 6e 64 65 78 25 3d 6c  |>len% . index%=l|
0000eb50  65 6e 25 0d 69 50 37 20  20 c8 99 22 57 69 6d 70  |en%.iP7  .."Wimp|
0000eb60  5f 53 65 74 43 61 72 65  74 50 6f 73 69 74 69 6f  |_SetCaretPositio|
0000eb70  6e 22 2c 77 69 6e 64 25  2c 69 63 6f 6e 25 2c 2c  |n",wind%,icon%,,|
0000eb80  2c 2d 31 2c 69 6e 64 65  78 25 0d 69 5a 05 cd 0d  |,-1,index%.iZ...|
0000eb90  69 64 49 e7 20 77 69 6e  64 25 3d 30 20 8c 20 c8  |idI. wind%=0 . .|
0000eba0  99 22 57 69 6d 70 5f 53  65 74 43 61 72 65 74 50  |."Wimp_SetCaretP|
0000ebb0  6f 73 69 74 69 6f 6e 22  2c 21 71 25 2c 71 25 21  |osition",!q%,q%!|
0000ebc0  34 2c 71 25 21 38 2c 71  25 21 31 32 2c 71 25 21  |4,q%!8,q%!12,q%!|
0000ebd0  31 36 2c 71 25 21 32 30  0d 69 6e 05 e1 0d 69 78  |16,q%!20.in...ix|
0000ebe0  04 0d 69 82 10 dd 20 f2  6c 6f 73 65 63 61 72 65  |..i... .losecare|
0000ebf0  74 0d 69 8c 2d e7 20 6d  79 63 61 72 65 74 25 20  |t.i.-. mycaret% |
0000ec00  8c 20 c8 99 22 57 69 6d  70 5f 53 65 74 43 61 72  |. .."Wimp_SetCar|
0000ec10  65 74 50 6f 73 69 74 69  6f 6e 22 2c 2d 31 0d 69  |etPosition",-1.i|
0000ec20  96 05 e1 0d 69 a0 04 0d  69 aa 1a dd 20 f2 66 6c  |....i...i... .fl|
0000ec30  61 73 68 69 63 6f 6e 28  21 71 25 2c 71 25 21 34  |ashicon(!q%,q%!4|
0000ec40  29 0d 69 b4 0e e3 20 66  25 3d 31 20 b8 20 33 0d  |).i... f%=1 . 3.|
0000ec50  69 be 09 c8 96 3a c8 96  0d 69 c8 1b f2 73 65 6c  |i....:...i...sel|
0000ec60  65 63 74 69 63 6f 6e 28  21 71 25 2c 71 25 21 34  |ecticon(!q%,q%!4|
0000ec70  2c a3 29 0d 69 d2 09 c8  96 3a c8 96 0d 69 dc 1b  |,.).i....:...i..|
0000ec80  f2 73 65 6c 65 63 74 69  63 6f 6e 28 21 71 25 2c  |.selecticon(!q%,|
0000ec90  71 25 21 34 2c b9 29 0d  69 e6 08 ed 20 66 25 0d  |q%!4,.).i... f%.|
0000eca0  69 f0 05 e1 0d 69 fa 04  0d 6a 04 23 dd 20 f2 6f  |i....i...j.#. .o|
0000ecb0  70 65 6e 69 63 6f 6e 6d  65 6e 75 28 21 71 25 2c  |peniconmenu(!q%,|
0000ecc0  71 25 21 34 2c 77 69 6e  64 25 29 0d 6a 0e 13 6f  |q%!4,wind%).j..o|
0000ecd0  70 65 6e 6d 65 6e 75 25  3d 77 69 6e 64 25 0d 6a  |penmenu%=wind%.j|
0000ece0  18 1d c8 99 22 57 69 6d  70 5f 47 65 74 49 63 6f  |...."Wimp_GetIco|
0000ecf0  6e 53 74 61 74 65 22 2c  2c 71 25 0d 6a 22 10 6d  |nState",,q%.j".m|
0000ed00  65 6e 75 78 25 3d 71 25  21 31 36 0d 6a 2c 10 6d  |enux%=q%!16.j,.m|
0000ed10  65 6e 75 79 25 3d 71 25  21 32 30 0d 6a 36 14 f2  |enuy%=q%!20.j6..|
0000ed20  77 69 6e 64 6f 77 69 6e  66 6f 28 21 71 25 29 0d  |windowinfo(!q%).|
0000ed30  6a 40 0f 6d 65 6e 75 78  25 2b 3d 77 78 25 0d 6a  |j@.menux%+=wx%.j|
0000ed40  4a 0f 6d 65 6e 75 79 25  2b 3d 77 79 25 0d 6a 54  |J.menuy%+=wy%.jT|
0000ed50  30 c8 99 22 57 69 6d 70  5f 43 72 65 61 74 65 4d  |0.."Wimp_CreateM|
0000ed60  65 6e 75 22 2c 2c 6f 70  65 6e 6d 65 6e 75 25 2c  |enu",,openmenu%,|
0000ed70  6d 65 6e 75 78 25 2c 6d  65 6e 75 79 25 0d 6a 5e  |menux%,menuy%.j^|
0000ed80  16 6d 65 6e 75 69 64 25  3d 77 69 6e 64 6f 77 73  |.menuid%=windows|
0000ed90  25 2b 31 0d 6a 68 05 e1  0d 6a 72 04 0d 6a 7c 22  |%+1.jh...jr..j|"|
0000eda0  dd 20 a4 69 6e 66 6f 77  69 6e 64 6f 77 28 69 31  |. .infowindow(i1|
0000edb0  24 2c 69 32 24 2c 69 33  24 2c 69 34 24 29 0d 6a  |$,i2$,i3$,i4$).j|
0000edc0  86 20 77 69 6e 64 25 3d  a4 77 69 6e 64 6f 77 28  |. wind%=.window(|
0000edd0  22 69 6e 66 6f 22 2c 22  22 2c 30 2c 30 29 0d 6a  |"info","",0,0).j|
0000ede0  90 21 f2 73 65 74 69 63  6f 6e 74 65 78 74 28 77  |.!.seticontext(w|
0000edf0  25 28 77 69 6e 64 25 29  2c 31 2c 69 31 24 29 0d  |%(wind%),1,i1$).|
0000ee00  6a 9a 21 f2 73 65 74 69  63 6f 6e 74 65 78 74 28  |j.!.seticontext(|
0000ee10  77 25 28 77 69 6e 64 25  29 2c 32 2c 69 32 24 29  |w%(wind%),2,i2$)|
0000ee20  0d 6a a4 21 f2 73 65 74  69 63 6f 6e 74 65 78 74  |.j.!.seticontext|
0000ee30  28 77 25 28 77 69 6e 64  25 29 2c 33 2c 69 33 24  |(w%(wind%),3,i3$|
0000ee40  29 0d 6a ae 21 f2 73 65  74 69 63 6f 6e 74 65 78  |).j.!.seticontex|
0000ee50  74 28 77 25 28 77 69 6e  64 25 29 2c 34 2c 69 34  |t(w%(wind%),4,i4|
0000ee60  24 29 0d 6a b8 0a 3d 77  69 6e 64 25 0d 6a c2 04  |$).j..=wind%.j..|
0000ee70  0d 6a cc 2f dd 20 f2 77  69 6d 70 69 6e 69 74 28  |.j./. .wimpinit(|
0000ee80  6e 61 6d 65 24 2c 73 70  72 69 74 65 24 2c 77 6f  |name$,sprite$,wo|
0000ee90  72 6b 24 2c 6e 6f 25 2c  69 73 69 7a 65 25 29 0d  |rk$,no%,isize%).|
0000eea0  6a d6 12 70 6f 69 6e 74  65 72 6d 69 6e 65 25 3d  |j..pointermine%=|
0000eeb0  a3 0d 6a e0 1d c8 99 22  4f 53 5f 47 65 74 45 6e  |..j...."OS_GetEn|
0000eec0  76 22 20 b8 20 61 75 74  6f 6c 6f 61 64 24 0d 6a  |v" . autoload$.j|
0000eed0  ea 3d 61 75 74 6f 6c 6f  61 64 24 3d c1 61 75 74  |.=autoload$=.aut|
0000eee0  6f 6c 6f 61 64 24 2c a7  61 75 74 6f 6c 6f 61 64  |oload$,.autoload|
0000eef0  24 2c bd 33 34 2c a7 61  75 74 6f 6c 6f 61 64 24  |$,.34,.autoload$|
0000ef00  2c bd 33 34 29 2b 31 29  2b 32 29 0d 6a f4 26 64  |,.34)+1)+2).j.&d|
0000ef10  72 61 67 67 69 6e 67 25  3d 30 3a 64 72 61 67 5f  |ragging%=0:drag_|
0000ef20  74 79 70 65 25 3d 30 3a  64 72 61 67 69 64 25 3d  |type%=0:dragid%=|
0000ef30  30 0d 6a fe 18 73 74 61  74 75 73 25 3d 30 3a 6d  |0.j..status%=0:m|
0000ef40  79 63 61 72 65 74 25 3d  a3 0d 6b 08 12 77 69 6e  |ycaret%=..k..win|
0000ef50  64 6f 77 73 25 3d 6e 6f  25 2b 31 0d 6b 12 12 70  |dows%=no%+1.k..p|
0000ef60  72 6f 67 72 61 6d 24 3d  6e 61 6d 65 24 0d 6b 1c  |rogram$=name$.k.|
0000ef70  63 de 20 62 6c 6b 25 20  31 30 30 30 30 2c 71 25  |c. blk% 10000,q%|
0000ef80  20 32 35 36 2c 69 6e 64  25 20 69 73 69 7a 65 25  | 256,ind% isize%|
0000ef90  2c 64 65 73 6b 70 61 6c  25 20 32 35 36 2c 64 67  |,deskpal% 256,dg|
0000efa0  63 6f 6c 25 20 32 35 36  2c 64 73 63 61 6c 65 25  |col% 256,dscale%|
0000efb0  20 31 36 2c 70 61 6c 62  6c 6f 63 6b 25 20 32 35  | 16,palblock% 25|
0000efc0  36 2c 70 61 6c 62 6c 6f  63 6b 32 25 20 32 35 36  |6,palblock2% 256|
0000efd0  0d 6b 26 17 69 6e 64 65  6e 64 25 3d 69 6e 64 25  |.k&.indend%=ind%|
0000efe0  2b 69 73 69 7a 65 25 0d  6b 30 16 de 20 6d 65 73  |+isize%.k0.. mes|
0000eff0  73 61 67 65 6c 69 73 74  25 20 31 30 30 0d 6b 3a  |sagelist% 100.k:|
0000f000  08 70 25 3d 30 0d 6b 44  05 f5 0d 6b 4e 10 20 20  |.p%=0.kD...kN.  |
0000f010  f3 20 6d 65 73 73 61 67  65 25 0d 6b 58 1e 20 20  |. message%.kX.  |
0000f020  6d 65 73 73 61 67 65 6c  69 73 74 25 21 70 25 3d  |messagelist%!p%=|
0000f030  6d 65 73 73 61 67 65 25  0d 6b 62 0b 20 20 70 25  |message%.kb.  p%|
0000f040  2b 3d 34 0d 6b 6c 10 fd  20 6d 65 73 73 61 67 65  |+=4.kl.. message|
0000f050  25 3d 30 0d 6b 76 2f dc  20 31 2c 32 2c 33 2c 35  |%=0.kv/. 1,2,3,5|
0000f060  2c 36 2c 37 2c 38 2c 39  2c 31 30 2c 26 34 30 30  |,6,7,8,9,10,&400|
0000f070  43 30 2c 26 34 30 30 43  31 2c 26 34 30 30 43 39  |C0,&400C1,&400C9|
0000f080  2c 30 0d 6b 80 10 24 62  6c 6b 25 3d 22 54 41 53  |,0.k..$blk%="TAS|
0000f090  4b 22 0d 6b 8a 42 c8 99  22 57 69 6d 70 5f 49 6e  |K".k.B.."Wimp_In|
0000f0a0  69 74 69 61 6c 69 73 65  22 2c 33 31 30 2c 21 62  |itialise",310,!b|
0000f0b0  6c 6b 25 2c 70 72 6f 67  72 61 6d 24 2c 6d 65 73  |lk%,program$,mes|
0000f0c0  73 61 67 65 6c 69 73 74  25 20 b8 20 2c 6d 79 74  |sagelist% . ,myt|
0000f0d0  61 73 6b 25 0d 6b 94 30  69 63 6f 6e 62 61 72 25  |ask%.k.0iconbar%|
0000f0e0  3d a4 63 72 69 63 6f 6e  28 2d 31 2c 30 2c 30 2c  |=.cricon(-1,0,0,|
0000f0f0  36 38 2c 36 38 2c 26 32  30 30 32 2c 73 70 72 69  |68,68,&2002,spri|
0000f100  74 65 24 29 0d 6b 9e 1f  64 69 72 24 3d a4 72 65  |te$).k..dir$=.re|
0000f110  61 64 76 61 72 28 77 6f  72 6b 24 2b 22 24 44 69  |advar(work$+"$Di|
0000f120  72 22 29 0d 6b a8 3d c8  99 22 58 4f 53 5f 53 57  |r").k.=.."XOS_SW|
0000f130  49 4e 75 6d 62 65 72 46  72 6f 6d 53 74 72 69 6e  |INumberFromStrin|
0000f140  67 22 2c 2c 22 44 72 61  67 41 53 70 72 69 74 65  |g",,"DragASprite|
0000f150  5f 53 74 61 72 74 22 20  b8 20 3b 64 72 61 67 25  |_Start" . ;drag%|
0000f160  0d 6b b2 17 64 72 61 67  25 3d 28 64 72 61 67 25  |.k..drag%=(drag%|
0000f170  20 80 20 31 29 3d 30 0d  6b bc 1f c8 99 22 4f 53  | . 1)=0.k...."OS|
0000f180  5f 42 79 74 65 22 2c 31  36 31 2c 32 38 20 b8 20  |_Byte",161,28 . |
0000f190  2c 2c 62 69 74 25 0d 6b  c6 1c e7 20 28 62 69 74  |,,bit%.k... (bit|
0000f1a0  25 20 80 20 32 29 3d 30  20 8c 20 64 72 61 67 25  |% . 2)=0 . drag%|
0000f1b0  3d a3 0d 6b d0 26 c8 99  22 57 69 6d 70 5f 53 6c  |=..k.&.."Wimp_Sl|
0000f1c0  6f 74 53 69 7a 65 22 2c  2d 31 2c 2d 31 20 b8 20  |otSize",-1,-1 . |
0000f1d0  61 70 70 73 69 7a 65 25  0d 6b da 10 f2 6c 6f 61  |appsize%.k...loa|
0000f1e0  64 73 70 72 69 74 65 73  0d 6b e4 0d 74 66 74 25  |dsprites.k..tft%|
0000f1f0  3d 26 46 46 46 0d 6b ee  0d 64 66 74 25 3d 26 41  |=&FFF.k..dft%=&A|
0000f200  46 46 0d 6b f8 0d 73 66  74 25 3d 26 46 46 39 0d  |FF.k..sft%=&FF9.|
0000f210  6c 02 0a 65 78 69 74 3d  a3 0d 6c 0c 2b de 20 67  |l..exit=..l.+. g|
0000f220  63 6f 6c 25 20 32 35 36  2c 70 61 6c 32 25 20 38  |col% 256,pal2% 8|
0000f230  30 2c 70 61 6c 34 25 20  38 30 2c 73 63 61 6c 65  |0,pal4% 80,scale|
0000f240  25 20 31 36 0d 6c 16 0e  e3 20 69 25 3d 30 20 b8  |% 16.l... i%=0 .|
0000f250  20 31 0d 6c 20 26 20 20  70 61 6c 32 25 21 28 34  | 1.l &  pal2%!(4|
0000f260  2a 28 31 2d 69 25 29 29  3d 28 26 46 46 46 46 46  |*(1-i%))=(&FFFFF|
0000f270  46 2a 69 25 29 3c 3c 38  0d 6c 2a 08 ed 20 69 25  |F*i%)<<8.l*.. i%|
0000f280  0d 6c 34 0e e3 20 69 25  3d 30 20 b8 20 33 0d 6c  |.l4.. i%=0 . 3.l|
0000f290  3e 26 20 20 70 61 6c 34  25 21 28 34 2a 28 33 2d  |>&  pal4%!(4*(3-|
0000f2a0  69 25 29 29 3d 28 26 35  35 35 35 35 35 2a 69 25  |i%))=(&555555*i%|
0000f2b0  29 3c 3c 38 0d 6c 48 08  ed 20 69 25 0d 6c 52 0c  |)<<8.lH.. i%.lR.|
0000f2c0  f2 6e 65 77 6d 6f 64 65  0d 6c 5c 25 de 20 6d 65  |.newmode.l\%. me|
0000f2d0  6e 75 62 75 66 66 65 72  25 20 34 30 30 30 2c 66  |nubuffer% 4000,f|
0000f2e0  6f 6e 74 74 61 62 6c 65  25 20 32 35 36 0d 6c 66  |onttable% 256.lf|
0000f2f0  0c 74 77 69 6e 64 25 3d  30 0d 6c 70 b5 de 20 77  |.twind%=0.lp.. w|
0000f300  25 28 77 69 6e 64 6f 77  73 25 29 2c 6d 65 6e 75  |%(windows%),menu|
0000f310  25 28 77 69 6e 64 6f 77  73 25 29 2c 69 64 24 28  |%(windows%),id$(|
0000f320  77 69 6e 64 6f 77 73 25  2b 31 29 2c 6d 69 73 63  |windows%+1),misc|
0000f330  25 28 77 69 6e 64 6f 77  73 25 29 2c 61 63 74 69  |%(windows%),acti|
0000f340  76 65 25 28 77 69 6e 64  6f 77 73 25 29 2c 64 65  |ve%(windows%),de|
0000f350  66 61 75 6c 74 25 28 35  2c 77 69 6e 64 6f 77 73  |fault%(5,windows|
0000f360  25 29 2c 73 79 73 66 6c  61 67 73 25 28 77 69 6e  |%),sysflags%(win|
0000f370  64 6f 77 73 25 29 2c 77  78 25 28 77 69 6e 64 6f  |dows%),wx%(windo|
0000f380  77 73 25 29 2c 77 79 25  28 77 69 6e 64 6f 77 73  |ws%),wy%(windows|
0000f390  25 29 2c 77 77 25 28 77  69 6e 64 6f 77 73 25 29  |%),ww%(windows%)|
0000f3a0  2c 77 68 25 28 77 69 6e  64 6f 77 73 25 29 0d 6c  |,wh%(windows%).l|
0000f3b0  7a 1d 69 64 24 28 77 69  6e 64 6f 77 73 25 2b 31  |z.id$(windows%+1|
0000f3c0  29 3d 22 75 6e 6b 6e 6f  77 6e 22 0d 6c 84 0d de  |)="unknown".l...|
0000f3d0  20 61 6e 73 24 28 33 29  0d 6c 8e 18 6d 65 6e 75  | ans$(3).l..menu|
0000f3e0  70 74 72 25 3d 6d 65 6e  75 62 75 66 66 65 72 25  |ptr%=menubuffer%|
0000f3f0  0d 6c 98 10 e3 20 69 25  3d 31 20 b8 20 32 35 35  |.l... i%=1 . 255|
0000f400  0d 6c a2 13 66 6f 6e 74  74 61 62 6c 65 25 3f 69  |.l..fonttable%?i|
0000f410  25 3d 30 0d 6c ac 08 ed  20 69 25 0d 6c b6 1d 77  |%=0.l... i%.l..w|
0000f420  25 28 30 29 3d 2d 32 3a  69 64 24 28 30 29 3d 22  |%(0)=-2:id$(0)="|
0000f430  69 63 6f 6e 62 61 72 22  0d 6c c0 2c c8 99 22 57  |iconbar".l.,.."W|
0000f440  69 6d 70 5f 4f 70 65 6e  54 65 6d 70 6c 61 74 65  |imp_OpenTemplate|
0000f450  22 2c 2c 64 69 72 24 2b  22 2e 54 65 6d 70 6c 61  |",,dir$+".Templa|
0000f460  74 65 73 22 0d 6c ca 10  f2 69 6e 69 74 77 69 6e  |tes".l...initwin|
0000f470  64 6f 77 73 0d 6c d4 2a  72 65 70 6f 72 74 25 3d  |dows.l.*report%=|
0000f480  a4 77 69 6e 64 6f 77 28  22 72 65 70 6f 72 74 22  |.window("report"|
0000f490  2c 22 72 65 70 6f 72 74  22 2c 30 2c 30 29 0d 6c  |,"report",0,0).l|
0000f4a0  de 1a c8 99 22 57 69 6d  70 5f 43 6c 6f 73 65 54  |...."Wimp_CloseT|
0000f4b0  65 6d 70 6c 61 74 65 22  0d 6c e8 0b 62 65 65 70  |emplate".l..beep|
0000f4c0  25 3d b9 0d 6c f2 0e 69  6e 73 74 61 6e 74 25 3d  |%=..l..instant%=|
0000f4d0  a3 0d 6c fc 05 e1 0d 6d  06 04 0d 6d 10 21 f4 20  |..l....m...m.!. |
0000f4e0  3d 3d 3d 3d 20 6d 65 6d  6f 72 79 20 6d 61 6e 61  |==== memory mana|
0000f4f0  67 65 6d 65 6e 74 20 3d  3d 3d 3d 0d 6d 1a 04 0d  |gement ====.m...|
0000f500  6d 24 13 dd 20 a4 73 70  61 63 65 28 73 69 7a 65  |m$.. .space(size|
0000f510  25 29 0d 6d 2e 18 ea 20  72 6f 6f 6d 25 2c 6e 6f  |%).m... room%,no|
0000f520  72 6f 6f 6d 25 2c 6e 65  77 25 0d 6d 38 37 c8 99  |room%,new%.m87..|
0000f530  22 58 57 69 6d 70 5f 53  6c 6f 74 53 69 7a 65 22  |"XWimp_SlotSize"|
0000f540  2c 61 70 70 73 69 7a 65  25 2b 73 69 7a 65 25 2c  |,appsize%+size%,|
0000f550  2d 31 20 b8 20 6e 65 77  25 3b 6e 6f 72 6f 6f 6d  |-1 . new%;noroom|
0000f560  25 0d 6d 42 19 72 6f 6f  6d 25 3d 28 28 6e 6f 72  |%.mB.room%=((nor|
0000f570  6f 6f 6d 25 80 31 29 3d  30 29 0d 6d 4c 23 e7 20  |oom%.1)=0).mL#. |
0000f580  6e 65 77 25 3c 61 70 70  73 69 7a 65 25 2b 73 69  |new%<appsize%+si|
0000f590  7a 65 25 20 8c 20 72 6f  6f 6d 25 3d a3 0d 6d 56  |ze% . room%=..mV|
0000f5a0  23 e7 20 72 6f 6f 6d 25  20 8c 20 61 70 70 69 6e  |#. room% . appin|
0000f5b0  63 25 3d 6e 65 77 25 2d  61 70 70 73 69 7a 65 25  |c%=new%-appsize%|
0000f5c0  0d 6d 60 0a 3d 72 6f 6f  6d 25 0d 6d 6a 04 0d 6d  |.m`.=room%.mj..m|
0000f5d0  74 0f dd 20 f2 69 6e 69  74 68 65 61 70 0d 6d 7e  |t.. .initheap.m~|
0000f5e0  0b 68 65 61 70 25 3d 93  0d 6d 88 14 68 65 61 70  |.heap%=..m..heap|
0000f5f0  73 69 7a 65 25 3d 38 2a  31 30 32 34 0d 6d 92 19  |size%=8*1024.m..|
0000f600  e7 20 a4 73 70 61 63 65  28 68 65 61 70 73 69 7a  |. .space(heapsiz|
0000f610  65 25 29 20 8c 0d 6d 9c  24 20 20 c8 99 22 4f 53  |e%) ..m.$  .."OS|
0000f620  5f 48 65 61 70 22 2c 30  2c 68 65 61 70 25 2c 2c  |_Heap",0,heap%,,|
0000f630  68 65 61 70 73 69 7a 65  25 0d 6d a6 05 cc 0d 6d  |heapsize%.m....m|
0000f640  b0 1c 20 20 f2 65 72 72  6f 72 28 22 4f 75 74 20  |..  .error("Out |
0000f650  6f 66 20 72 6f 6f 6d 2e  22 29 0d 6d ba 05 cd 0d  |of room.").m....|
0000f660  6d c4 05 e1 0d 6d ce 04  0d 6d d8 13 dd 20 a4 6c  |m....m...m... .l|
0000f670  61 72 67 65 73 74 62 6c  6f 63 6b 0d 6d e2 24 c8  |argestblock.m.$.|
0000f680  99 22 4f 53 5f 48 65 61  70 22 2c 31 2c 68 65 61  |."OS_Heap",1,hea|
0000f690  70 25 20 b8 20 2c 2c 6c  61 72 67 65 73 74 25 0d  |p% . ,,largest%.|
0000f6a0  6d ec 0d 3d 6c 61 72 67  65 73 74 25 0d 6d f6 04  |m..=largest%.m..|
0000f6b0  0d 6e 00 16 dd 20 a4 67  65 74 62 6c 6f 63 6b 28  |.n... .getblock(|
0000f6c0  73 69 7a 65 25 29 0d 6e  0a 09 ea 20 6f 6b 25 0d  |size%).n... ok%.|
0000f6d0  6e 14 09 6f 6b 25 3d b9  0d 6e 1e 20 c8 95 20 6f  |n..ok%=..n. .. o|
0000f6e0  6b 25 20 80 20 a4 6c 61  72 67 65 73 74 62 6c 6f  |k% . .largestblo|
0000f6f0  63 6b 3c 73 69 7a 65 25  0d 6e 28 1d 20 20 6f 6b  |ck<size%.n(.  ok|
0000f700  25 3d a4 65 78 74 65 6e  64 68 65 61 70 28 38 2a  |%=.extendheap(8*|
0000f710  31 30 32 34 29 0d 6e 32  05 ce 0d 6e 3c 0b e7 20  |1024).n2...n<.. |
0000f720  6f 6b 25 20 8c 0d 6e 46  2b 20 20 c8 99 22 4f 53  |ok% ..nF+  .."OS|
0000f730  5f 48 65 61 70 22 2c 32  2c 68 65 61 70 25 2c 2c  |_Heap",2,heap%,,|
0000f740  73 69 7a 65 25 20 b8 20  2c 2c 62 6c 6f 63 6b 25  |size% . ,,block%|
0000f750  0d 6e 50 05 cc 0d 6e 5a  0f 20 20 62 6c 6f 63 6b  |.nP...nZ.  block|
0000f760  25 3d 2d 31 0d 6e 64 27  20 20 f2 72 65 70 6f 72  |%=-1.nd'  .repor|
0000f770  74 28 22 4e 6f 20 72 6f  6f 6d 20 66 6f 72 20 6f  |t("No room for o|
0000f780  70 65 72 61 74 69 6f 6e  2e 22 29 0d 6e 6e 05 cd  |peration.").nn..|
0000f790  0d 6e 78 0b 3d 62 6c 6f  63 6b 25 0d 6e 82 04 0d  |.nx.=block%.n...|
0000f7a0  6e 8c 1a dd 20 f2 6c 6f  73 65 62 6c 6f 63 6b 28  |n... .loseblock(|
0000f7b0  f8 20 62 6c 6f 63 6b 25  29 0d 6e 96 2c e7 20 62  |. block%).n.,. b|
0000f7c0  6c 6f 63 6b 25 3e 2d 31  20 8c 20 c8 99 22 4f 53  |lock%>-1 . .."OS|
0000f7d0  5f 48 65 61 70 22 2c 33  2c 68 65 61 70 25 2c 62  |_Heap",3,heap%,b|
0000f7e0  6c 6f 63 6b 25 0d 6e a0  0d 62 6c 6f 63 6b 25 3d  |lock%.n..block%=|
0000f7f0  2d 31 0d 6e aa 0f f2 73  68 72 69 6e 6b 68 65 61  |-1.n...shrinkhea|
0000f800  70 0d 6e b4 05 e1 0d 6e  be 04 0d 6e c8 11 dd 20  |p.n....n...n... |
0000f810  f2 73 68 72 69 6e 6b 68  65 61 70 0d 6e d2 0f ea  |.shrinkheap.n...|
0000f820  20 6f 6b 25 2c 73 69 7a  65 25 0d 6e dc 09 6f 6b  | ok%,size%.n..ok|
0000f830  25 3d b9 0d 6e e6 11 73  69 7a 65 25 3d 2d 31 30  |%=..n..size%=-10|
0000f840  32 34 2a 38 0d 6e f0 0a  c8 95 20 6f 6b 25 0d 6e  |24*8.n.... ok%.n|
0000f850  fa 28 20 20 c8 99 22 58  4f 53 5f 48 65 61 70 22  |.(  .."XOS_Heap"|
0000f860  2c 35 2c 68 65 61 70 25  2c 2c 73 69 7a 65 25 20  |,5,heap%,,size% |
0000f870  b8 20 3b 6f 6b 25 0d 6f  04 15 20 20 6f 6b 25 3d  |. ;ok%.o..  ok%=|
0000f880  28 28 6f 6b 25 80 31 29  3d 30 29 0d 6f 0e 0d 20  |((ok%.1)=0).o.. |
0000f890  20 e7 20 6f 6b 25 20 8c  0d 6f 18 1a 20 20 20 20  | . ok% ..o..    |
0000f8a0  68 65 61 70 73 69 7a 65  25 3d 68 65 61 70 25 21  |heapsize%=heap%!|
0000f8b0  31 32 0d 6f 22 1d 20 20  20 20 6f 6b 25 3d a4 73  |12.o".    ok%=.s|
0000f8c0  70 61 63 65 28 68 65 61  70 73 69 7a 65 25 29 0d  |pace(heapsize%).|
0000f8d0  6f 2c 07 20 20 cd 0d 6f  36 05 ce 0d 6f 40 05 e1  |o,.  ..o6...o@..|
0000f8e0  0d 6f 4a 04 0d 6f 54 18  dd 20 a4 65 78 74 65 6e  |.oJ..oT.. .exten|
0000f8f0  64 68 65 61 70 28 73 69  7a 65 25 29 0d 6f 5e 09  |dheap(size%).o^.|
0000f900  ea 20 6f 6b 25 0d 6f 68  1f 6f 6b 25 3d a4 73 70  |. ok%.oh.ok%=.sp|
0000f910  61 63 65 28 68 65 61 70  73 69 7a 65 25 2b 73 69  |ace(heapsize%+si|
0000f920  7a 65 25 29 0d 6f 72 0b  e7 20 6f 6b 25 20 8c 0d  |ze%).or.. ok% ..|
0000f930  6f 7c 20 20 20 c8 99 22  4f 53 5f 48 65 61 70 22  |o|   .."OS_Heap"|
0000f940  2c 35 2c 68 65 61 70 25  2c 2c 73 69 7a 65 25 0d  |,5,heap%,,size%.|
0000f950  6f 86 18 20 20 68 65 61  70 73 69 7a 65 25 3d 68  |o..  heapsize%=h|
0000f960  65 61 70 25 21 31 32 0d  6f 90 05 cc 0d 6f 9a 2c  |eap%!12.o....o.,|
0000f970  20 20 f2 72 65 70 6f 72  74 28 22 4e 6f 20 72 6f  |  .report("No ro|
0000f980  6f 6d 20 66 6f 72 20 74  68 69 73 20 6f 70 65 72  |om for this oper|
0000f990  61 74 69 6f 6e 2e 22 29  0d 6f a4 05 cd 0d 6f ae  |ation.").o....o.|
0000f9a0  08 3d 6f 6b 25 0d 6f b8  04 0d 6f c2 21 dd 20 a4  |.=ok%.o...o.!. .|
0000f9b0  65 78 74 65 6e 64 62 6c  6f 63 6b 28 f8 20 62 6c  |extendblock(. bl|
0000f9c0  6f 63 6b 25 2c 69 6e 63  25 29 0d 6f cc 14 ea 20  |ock%,inc%).o... |
0000f9d0  6f 6b 25 2c 20 68 65 61  70 66 75 6c 6c 25 0d 6f  |ok%, heapfull%.o|
0000f9e0  d6 0f 68 65 61 70 66 75  6c 6c 25 3d a3 0d 6f e0  |..heapfull%=..o.|
0000f9f0  05 f5 0d 6f ea 35 20 20  c8 99 22 58 4f 53 5f 48  |...o.5  .."XOS_H|
0000fa00  65 61 70 22 2c 34 2c 68  65 61 70 25 2c 62 6c 6f  |eap",4,heap%,blo|
0000fa10  63 6b 25 2c 69 6e 63 25  20 b8 20 2c 2c 62 6c 6f  |ck%,inc% . ,,blo|
0000fa20  63 6b 25 3b 6f 6b 25 0d  6f f4 15 20 20 6f 6b 25  |ck%;ok%.o..  ok%|
0000fa30  3d 28 28 6f 6b 25 80 31  29 3d 30 29 0d 6f fe 2d  |=((ok%.1)=0).o.-|
0000fa40  20 20 e7 20 ac 6f 6b 25  20 8c 20 68 65 61 70 66  |  . .ok% . heapf|
0000fa50  75 6c 6c 25 3d ac a4 65  78 74 65 6e 64 68 65 61  |ull%=..extendhea|
0000fa60  70 28 38 2a 31 30 32 34  29 0d 70 08 15 fd 20 6f  |p(8*1024).p... o|
0000fa70  6b 25 20 84 20 68 65 61  70 66 75 6c 6c 25 0d 70  |k% . heapfull%.p|
0000fa80  12 08 3d 6f 6b 25 0d 70  1c 04 0d 70 26 10 dd 20  |..=ok%.p...p&.. |
0000fa90  f2 72 65 73 65 74 73 6c  6f 74 0d 70 30 21 c8 99  |.resetslot.p0!..|
0000faa0  22 57 69 6d 70 5f 53 6c  6f 74 53 69 7a 65 22 2c  |"Wimp_SlotSize",|
0000fab0  61 70 70 73 69 7a 65 25  2c 2d 31 0d 70 3a 0d 61  |appsize%,-1.p:.a|
0000fac0  70 70 69 6e 63 25 3d 30  0d 70 44 05 e1 0d 70 4e  |ppinc%=0.pD...pN|
0000fad0  04 0d 70 58 26 f4 20 3d  3d 3d 3d 20 66 69 6c 69  |..pX&. ==== fili|
0000fae0  6e 67 20 73 79 73 74 65  6d 20 72 6f 75 74 69 6e  |ng system routin|
0000faf0  65 73 20 3d 3d 3d 3d 0d  70 62 04 0d 70 6c 1e dd  |es ====.pb..pl..|
0000fb00  20 a4 73 74 61 6e 64 61  72 64 66 69 6c 65 6e 61  | .standardfilena|
0000fb10  6d 65 28 77 69 6e 64 25  29 0d 70 76 17 3d a4 69  |me(wind%).pv.=.i|
0000fb20  63 6f 6e 74 65 78 74 28  77 69 6e 64 25 2c 31 29  |context(wind%,1)|
0000fb30  0d 70 80 04 0d 70 8a 1b  dd 20 f2 72 65 73 65 74  |.p...p... .reset|
0000fb40  66 69 6c 65 6e 61 6d 65  28 77 69 6e 64 25 29 0d  |filename(wind%).|
0000fb50  70 94 32 f2 73 65 74 69  63 6f 6e 74 65 78 74 28  |p.2.seticontext(|
0000fb60  77 69 6e 64 25 2c 32 2c  a4 73 74 61 6e 64 61 72  |wind%,2,.standar|
0000fb70  64 66 69 6c 65 6e 61 6d  65 28 77 69 6e 64 25 29  |dfilename(wind%)|
0000fb80  29 0d 70 9e 05 e1 0d 70  a8 04 0d 70 b2 20 dd 20  |).p....p...p. . |
0000fb90  f2 73 61 76 65 28 69 64  25 2c 66 69 6c 65 24 2c  |.save(id%,file$,|
0000fba0  70 72 65 70 61 72 65 64  25 29 0d 70 bc 0c 73 61  |prepared%).p..sa|
0000fbb0  76 65 64 25 3d a3 0d 70  c6 16 e7 20 a4 6e 61 6d  |ved%=..p... .nam|
0000fbc0  65 6f 6b 28 66 69 6c 65  24 29 20 8c 0d 70 d0 3b  |eok(file$) ..p.;|
0000fbd0  e7 20 70 72 65 70 61 72  65 64 25 3d a3 20 8c 20  |. prepared%=. . |
0000fbe0  70 72 65 70 61 72 65 64  25 3d a0 28 22 46 4e 70  |prepared%=.("FNp|
0000fbf0  72 65 70 61 72 65 22 2b  c3 7e 28 6d 69 73 63 25  |repare"+.~(misc%|
0000fc00  28 69 64 25 29 29 29 0d  70 da 12 c8 8e 20 70 72  |(id%))).p.... pr|
0000fc10  65 70 61 72 65 64 25 20  ca 0d 70 e4 0a 20 20 c9  |epared% ..p..  .|
0000fc20  20 2d 31 0d 70 ee 46 20  20 20 20 c8 99 22 4f 53  | -1.p.F    .."OS|
0000fc30  5f 46 69 6c 65 22 2c 31  30 2c 66 69 6c 65 24 2c  |_File",10,file$,|
0000fc40  6d 69 73 63 25 28 69 64  25 29 2c 2c 73 61 76 65  |misc%(id%),,save|
0000fc50  62 75 66 66 25 2c 73 61  76 65 62 75 66 66 25 2b  |buff%,savebuff%+|
0000fc60  66 69 6c 65 73 69 7a 65  25 0d 70 f8 26 20 20 20  |filesize%.p.&   |
0000fc70  20 64 25 3d a0 28 22 46  4e 73 61 76 65 64 22 2b  | d%=.("FNsaved"+|
0000fc80  c3 7e 28 6d 69 73 63 25  28 69 64 25 29 29 29 0d  |.~(misc%(id%))).|
0000fc90  71 02 0a 20 20 c9 20 2d  32 0d 71 0c 25 20 20 20  |q..  . -2.q.%   |
0000fca0  20 64 25 3d a0 28 22 46  4e 73 61 76 65 22 2b c3  | d%=.("FNsave"+.|
0000fcb0  7e 28 6d 69 73 63 25 28  69 64 25 29 29 29 0d 71  |~(misc%(id%))).q|
0000fcc0  16 05 cb 0d 71 20 0e f2  63 6c 6f 73 65 6d 65 6e  |....q ..closemen|
0000fcd0  75 0d 71 2a 25 f2 73 65  74 69 63 6f 6e 74 65 78  |u.q*%.seticontex|
0000fce0  74 28 77 25 28 69 64 25  29 2c 32 2c 66 69 6c 65  |t(w%(id%),2,file|
0000fcf0  6e 61 6d 65 24 29 0d 71  34 0c 73 61 76 65 64 25  |name$).q4.saved%|
0000fd00  3d b9 0d 71 3e 05 cd 0d  71 48 05 cd 0d 71 52 05  |=..q>...qH...qR.|
0000fd10  e1 0d 71 5c 04 0d 71 66  1d f4 20 3d 3d 3d 3d 20  |..q\..qf.. ==== |
0000fd20  6d 65 6e 75 20 72 6f 75  74 69 6e 65 73 20 3d 3d  |menu routines ==|
0000fd30  3d 3d 0d 71 70 04 0d 71  7a 20 dd 20 f2 6f 70 65  |==.qp..qz . .ope|
0000fd40  6e 77 69 6e 64 6f 77 61  73 6d 65 6e 75 28 77 69  |nwindowasmenu(wi|
0000fd50  6e 64 6f 77 25 29 0d 71  84 18 f2 77 69 6e 64 6f  |ndow%).q...windo|
0000fd60  77 69 6e 66 6f 28 77 69  6e 64 6f 77 25 29 0d 71  |winfo(window%).q|
0000fd70  8e 0e f2 6d 6f 75 73 65  69 6e 66 6f 0d 71 98 21  |...mouseinfo.q.!|
0000fd80  e7 20 6d 79 25 2d 77 68  25 2f 32 3c 39 36 20 8c  |. my%-wh%/2<96 .|
0000fd90  20 6d 79 25 3d 39 36 2b  77 68 25 2f 32 0d 71 a2  | my%=96+wh%/2.q.|
0000fda0  14 6d 65 6e 75 78 25 3d  6d 78 25 2d 77 77 25 2f  |.menux%=mx%-ww%/|
0000fdb0  32 0d 71 ac 14 6d 65 6e  75 79 25 3d 6d 79 25 2b  |2.q..menuy%=my%+|
0000fdc0  77 68 25 2f 32 0d 71 b6  15 6f 70 65 6e 6d 65 6e  |wh%/2.q..openmen|
0000fdd0  75 25 3d 77 69 6e 64 6f  77 25 0d 71 c0 14 69 64  |u%=window%.q..id|
0000fde0  25 3d a4 69 64 28 77 69  6e 64 6f 77 25 29 0d 71  |%=.id(window%).q|
0000fdf0  ca 0f f2 72 65 6f 70 65  6e 6d 65 6e 75 0d 71 d4  |...reopenmenu.q.|
0000fe00  31 e7 20 73 79 73 66 6c  61 67 73 25 28 69 64 25  |1. sysflags%(id%|
0000fe10  29 80 31 20 8c 20 64 25  3d a0 28 22 46 4e 6f 70  |).1 . d%=.("FNop|
0000fe20  65 6e 5f 22 2b 69 64 24  28 69 64 25 29 29 0d 71  |en_"+id$(id%)).q|
0000fe30  de 05 e1 0d 71 e8 04 0d  71 f2 19 dd 20 f2 69 63  |....q...q... .ic|
0000fe40  6f 6e 62 61 72 6d 65 6e  75 28 74 65 78 74 24 29  |onbarmenu(text$)|
0000fe50  0d 71 fc 19 6d 65 6e 75  25 28 30 29 3d a4 6d 65  |.q..menu%(0)=.me|
0000fe60  6e 75 28 74 65 78 74 24  29 0d 72 06 1b 62 61 72  |nu(text$).r..bar|
0000fe70  68 65 69 67 68 74 25 3d  69 74 65 6d 73 25 2a 34  |height%=items%*4|
0000fe80  34 2b 39 36 0d 72 10 05  e1 0d 72 1a 04 0d 72 24  |4+96.r....r...r$|
0000fe90  11 dd 20 f2 6d 65 6e 75  73 65 6c 65 63 74 0d 72  |.. .menuselect.r|
0000fea0  2e 20 64 25 3d a0 28 22  46 4e 6d 65 6e 75 5f 22  |. d%=.("FNmenu_"|
0000feb0  2b 69 64 24 28 6d 65 6e  75 69 64 25 29 29 0d 72  |+id$(menuid%)).r|
0000fec0  38 0e f2 6d 6f 75 73 65  69 6e 66 6f 0d 72 42 1a  |8..mouseinfo.rB.|
0000fed0  e7 20 62 75 74 25 3d 31  20 8c 20 f2 72 65 6f 70  |. but%=1 . .reop|
0000fee0  65 6e 6d 65 6e 75 0d 72  4c 05 e1 0d 72 56 04 0d  |enmenu.rL...rV..|
0000fef0  72 60 11 dd 20 f2 72 65  6f 70 65 6e 6d 65 6e 75  |r`.. .reopenmenu|
0000ff00  0d 72 6a 34 e7 20 73 79  73 66 6c 61 67 73 25 28  |.rj4. sysflags%(|
0000ff10  69 64 25 29 80 34 20 8c  20 64 25 3d a0 28 22 46  |id%).4 . d%=.("F|
0000ff20  4e 70 72 65 6d 65 6e 75  5f 22 2b 69 64 24 28 69  |Npremenu_"+id$(i|
0000ff30  64 25 29 29 0d 72 74 30  c8 99 22 57 69 6d 70 5f  |d%)).rt0.."Wimp_|
0000ff40  43 72 65 61 74 65 4d 65  6e 75 22 2c 2c 6f 70 65  |CreateMenu",,ope|
0000ff50  6e 6d 65 6e 75 25 2c 6d  65 6e 75 78 25 2c 6d 65  |nmenu%,menux%,me|
0000ff60  6e 75 79 25 0d 72 7e 05  e1 0d 72 88 04 0d 72 92  |nuy%.r~...r...r.|
0000ff70  14 dd 20 f2 6f 70 65 6e  6d 65 6e 75 28 69 64 25  |.. .openmenu(id%|
0000ff80  29 0d 72 9c 12 e7 20 6d  65 6e 75 25 28 69 64 25  |).r... menu%(id%|
0000ff90  29 20 8c 0d 72 a6 0f 6d  65 6e 75 69 64 25 3d 69  |) ..r..menuid%=i|
0000ffa0  64 25 0d 72 b0 18 6f 70  65 6e 6d 65 6e 75 25 3d  |d%.r..openmenu%=|
0000ffb0  6d 65 6e 75 25 28 69 64  25 29 0d 72 ba 2c e7 20  |menu%(id%).r.,. |
0000ffc0  69 64 25 3d 30 20 8c 20  6d 65 6e 75 79 25 3d 62  |id%=0 . menuy%=b|
0000ffd0  61 72 68 65 69 67 68 74  25 20 8b 20 6d 65 6e 75  |arheight% . menu|
0000ffe0  79 25 3d 6d 79 25 0d 72  c4 22 6d 65 6e 75 78 25  |y%=my%.r."menux%|
0000fff0  3d 6d 78 25 2d 28 6f 70  65 6e 6d 65 6e 75 25 21  |=mx%-(openmenu%!|
00010000  31 36 29 2f 32 2d 31 36  0d 72 ce 0f f2 72 65 6f  |16)/2-16.r...reo|
00010010  70 65 6e 6d 65 6e 75 0d  72 d8 05 cd 0d 72 e2 05  |penmenu.r....r..|
00010020  e1 0d 72 ec 04 0d 72 f6  1f f4 20 3d 3d 3d 3d 20  |..r...r... ==== |
00010030  77 69 6e 64 6f 77 20 72  6f 75 74 69 6e 65 73 20  |window routines |
00010040  3d 3d 3d 3d 0d 73 00 04  0d 73 0a 27 dd 20 a4 77  |====.s...s.'. .w|
00010050  69 6e 64 6f 77 28 77 69  6e 64 24 2c 6e 61 6d 65  |indow(wind$,name|
00010060  24 2c 6d 65 6e 75 25 2c  66 6c 61 67 73 25 29 0d  |$,menu%,flags%).|
00010070  73 14 0d 74 77 69 6e 64  25 2b 3d 31 0d 73 1e 3b  |s..twind%+=1.s.;|
00010080  e7 20 74 77 69 6e 64 25  3e 77 69 6e 64 6f 77 73  |. twind%>windows|
00010090  25 20 8c 20 85 20 32 35  35 2c 22 4d 6f 72 65 20  |% . . 255,"More |
000100a0  77 69 6e 64 6f 77 73 20  74 68 61 6e 20 64 65 63  |windows than dec|
000100b0  6c 61 72 65 64 2e 22 0d  73 28 23 77 25 28 74 77  |lared.".s(#w%(tw|
000100c0  69 6e 64 25 29 3d a4 6c  6f 61 64 74 65 6d 70 6c  |ind%)=.loadtempl|
000100d0  61 74 65 28 77 69 6e 64  24 29 0d 73 32 1b f2 77  |ate(wind$).s2..w|
000100e0  69 6e 64 6f 77 69 6e 66  6f 28 77 25 28 74 77 69  |indowinfo(w%(twi|
000100f0  6e 64 25 29 29 0d 73 3c  0e e3 20 64 25 3d 30 20  |nd%)).s<.. d%=0 |
00010100  b8 20 35 0d 73 46 29 64  65 66 61 75 6c 74 25 28  |. 5.sF)default%(|
00010110  64 25 2c 74 77 69 6e 64  25 29 3d 21 28 62 6c 6b  |d%,twind%)=!(blk|
00010120  25 2b 28 64 25 3c 3c 32  29 2b 34 29 0d 73 50 08  |%+(d%<<2)+4).sP.|
00010130  ed 20 64 25 0d 73 5a 15  69 64 24 28 74 77 69 6e  |. d%.sZ.id$(twin|
00010140  64 25 29 3d 6e 61 6d 65  24 0d 73 64 17 6d 65 6e  |d%)=name$.sd.men|
00010150  75 25 28 74 77 69 6e 64  25 29 3d 6d 65 6e 75 25  |u%(twind%)=menu%|
00010160  0d 73 6e 1c 73 79 73 66  6c 61 67 73 25 28 74 77  |.sn.sysflags%(tw|
00010170  69 6e 64 25 29 3d 66 6c  61 67 73 25 0d 73 78 0b  |ind%)=flags%.sx.|
00010180  3d 74 77 69 6e 64 25 0d  73 82 04 0d 73 8c 0d dd  |=twind%.s...s...|
00010190  20 f2 72 65 64 72 61 77  0d 73 96 12 69 64 25 3d  | .redraw.s..id%=|
000101a0  a4 69 64 28 21 62 6c 6b  25 29 0d 73 a0 27 c8 99  |.id(!blk%).s.'..|
000101b0  22 57 69 6d 70 5f 52 65  64 72 61 77 57 69 6e 64  |"Wimp_RedrawWind|
000101c0  6f 77 22 2c 2c 62 6c 6b  25 20 b8 20 6d 6f 72 65  |ow",,blk% . more|
000101d0  25 0d 73 aa 12 f2 72 65  63 74 61 6e 67 6c 65 6c  |%.s...rectanglel|
000101e0  6f 6f 70 0d 73 b4 05 e1  0d 73 be 04 0d 73 c8 14  |oop.s....s...s..|
000101f0  dd 20 f2 72 65 63 74 61  6e 67 6c 65 6c 6f 6f 70  |. .rectangleloop|
00010200  0d 73 d2 2d 77 78 25 3d  77 78 25 28 69 64 25 29  |.s.-wx%=wx%(id%)|
00010210  3a 77 79 25 3d 77 79 25  28 69 64 25 29 3a 6f 70  |:wy%=wy%(id%):op|
00010220  74 30 25 3d a3 3a 6f 70  74 31 25 3d a3 0d 73 dc  |t0%=.:opt1%=..s.|
00010230  0c c8 95 20 6d 6f 72 65  25 0d 73 e6 13 78 30 25  |... more%.s..x0%|
00010240  3d 62 6c 6b 25 21 32 38  2d 77 78 25 0d 73 f0 13  |=blk%!28-wx%.s..|
00010250  79 30 25 3d 62 6c 6b 25  21 33 32 2d 77 79 25 0d  |y0%=blk%!32-wy%.|
00010260  73 fa 13 78 31 25 3d 62  6c 6b 25 21 33 36 2d 77  |s..x1%=blk%!36-w|
00010270  78 25 0d 74 04 13 79 31  25 3d 62 6c 6b 25 21 34  |x%.t..y1%=blk%!4|
00010280  30 2d 77 79 25 0d 74 0e  1e 64 25 3d a0 28 22 46  |0-wy%.t..d%=.("F|
00010290  4e 72 65 64 72 61 77 5f  22 2b 69 64 24 28 69 64  |Nredraw_"+id$(id|
000102a0  25 29 29 0d 74 18 27 c8  99 22 57 69 6d 70 5f 47  |%)).t.'.."Wimp_G|
000102b0  65 74 52 65 63 74 61 6e  67 6c 65 22 2c 2c 62 6c  |etRectangle",,bl|
000102c0  6b 25 20 b8 20 6d 6f 72  65 25 0d 74 22 05 ce 0d  |k% . more%.t"...|
000102d0  74 2c 05 e1 0d 74 36 04  0d 74 40 10 dd 20 a4 69  |t,...t6..t@.. .i|
000102e0  64 28 66 69 6e 64 25 29  0d 74 4a 0c 66 6f 75 6e  |d(find%).tJ.foun|
000102f0  64 25 3d 30 0d 74 54 15  e3 20 69 25 3d 31 20 b8  |d%=0.tT.. i%=1 .|
00010300  20 77 69 6e 64 6f 77 73  25 0d 74 5e 1e e7 20 77  | windows%.t^.. w|
00010310  25 28 69 25 29 3d 66 69  6e 64 25 20 8c 20 66 6f  |%(i%)=find% . fo|
00010320  75 6e 64 25 3d 69 25 0d  74 68 08 ed 20 69 25 0d  |und%=i%.th.. i%.|
00010330  74 72 0b 3d 66 6f 75 6e  64 25 0d 74 7c 04 0d 74  |tr.=found%.t|..t|
00010340  86 14 dd 20 f2 6f 70 65  6e 75 70 28 77 69 6e 64  |... .openup(wind|
00010350  25 29 0d 74 90 0f 21 62  6c 6b 25 3d 77 69 6e 64  |%).t..!blk%=wind|
00010360  25 0d 74 9a 12 69 64 25  3d a4 69 64 28 77 69 6e  |%.t..id%=.id(win|
00010370  64 25 29 0d 74 a4 15 e7  20 ac 61 63 74 69 76 65  |d%).t... .active|
00010380  25 28 69 64 25 29 20 8c  0d 74 ae 0e e3 20 64 25  |%(id%) ..t... d%|
00010390  3d 30 20 b8 20 35 0d 74  b8 26 21 28 62 6c 6b 25  |=0 . 5.t.&!(blk%|
000103a0  2b 28 64 25 3c 3c 32 29  2b 34 29 3d 64 65 66 61  |+(d%<<2)+4)=defa|
000103b0  75 6c 74 25 28 64 25 2c  69 64 25 29 0d 74 c2 08  |ult%(d%,id%).t..|
000103c0  ed 20 64 25 0d 74 cc 05  cc 0d 74 d6 21 c8 99 22  |. d%.t....t.!.."|
000103d0  57 69 6d 70 5f 47 65 74  57 69 6e 64 6f 77 53 74  |Wimp_GetWindowSt|
000103e0  61 74 65 22 2c 2c 62 6c  6b 25 0d 74 e0 05 cd 0d  |ate",,blk%.t....|
000103f0  74 ea 0e 62 6c 6b 25 21  32 38 3d 2d 31 0d 74 f4  |t..blk%!28=-1.t.|
00010400  0f f2 6f 70 65 6e 77 69  6e 64 6f 77 0d 74 fe 05  |..openwindow.t..|
00010410  e1 0d 75 08 04 0d 75 12  11 dd 20 f2 6f 70 65 6e  |..u...u... .open|
00010420  77 69 6e 64 6f 77 0d 75  1c 0e ea 20 6f 70 65 6e  |window.u... open|
00010430  5f 69 64 25 0d 75 26 17  6f 70 65 6e 5f 69 64 25  |_id%.u&.open_id%|
00010440  3d a4 69 64 28 21 62 6c  6b 25 29 0d 75 30 3f e7  |=.id(!blk%).u0?.|
00010450  20 73 79 73 66 6c 61 67  73 25 28 6f 70 65 6e 5f  | sysflags%(open_|
00010460  69 64 25 29 80 31 36 20  8c 20 64 25 3d a0 28 22  |id%).16 . d%=.("|
00010470  46 4e 70 72 65 6f 70 65  6e 5f 22 2b 69 64 24 28  |FNpreopen_"+id$(|
00010480  6f 70 65 6e 5f 69 64 25  29 29 0d 75 3a 1d c8 99  |open_id%)).u:...|
00010490  22 57 69 6d 70 5f 4f 70  65 6e 57 69 6e 64 6f 77  |"Wimp_OpenWindow|
000104a0  22 2c 2c 62 6c 6b 25 0d  75 44 20 77 78 25 28 6f  |",,blk%.uD wx%(o|
000104b0  70 65 6e 5f 69 64 25 29  3d 62 6c 6b 25 21 34 2d  |pen_id%)=blk%!4-|
000104c0  62 6c 6b 25 21 32 30 0d  75 4e 21 77 79 25 28 6f  |blk%!20.uN!wy%(o|
000104d0  70 65 6e 5f 69 64 25 29  3d 62 6c 6b 25 21 31 36  |pen_id%)=blk%!16|
000104e0  2d 62 6c 6b 25 21 32 34  0d 75 58 20 77 77 25 28  |-blk%!24.uX ww%(|
000104f0  6f 70 65 6e 5f 69 64 25  29 3d 62 6c 6b 25 21 31  |open_id%)=blk%!1|
00010500  32 2d 62 6c 6b 25 21 34  0d 75 62 20 77 68 25 28  |2-blk%!4.ub wh%(|
00010510  6f 70 65 6e 5f 69 64 25  29 3d 62 6c 6b 25 21 31  |open_id%)=blk%!1|
00010520  36 2d 62 6c 6b 25 21 38  0d 75 6c 3b e7 20 73 79  |6-blk%!8.ul;. sy|
00010530  73 66 6c 61 67 73 25 28  6f 70 65 6e 5f 69 64 25  |sflags%(open_id%|
00010540  29 80 31 20 8c 20 64 25  3d a0 28 22 46 4e 6f 70  |).1 . d%=.("FNop|
00010550  65 6e 5f 22 2b 69 64 24  28 6f 70 65 6e 5f 69 64  |en_"+id$(open_id|
00010560  25 29 29 0d 75 76 17 61  63 74 69 76 65 25 28 6f  |%)).uv.active%(o|
00010570  70 65 6e 5f 69 64 25 29  3d b9 0d 75 80 05 e1 0d  |pen_id%)=..u....|
00010580  75 8a 04 0d 75 94 10 dd  20 a4 6f 70 65 6e 28 21  |u...u... .open(!|
00010590  71 25 29 0d 75 9e 0b ea  20 6f 70 65 6e 25 0d 75  |q%).u... open%.u|
000105a0  a8 0b 6f 70 65 6e 25 3d  a3 0d 75 b2 1f c8 99 22  |..open%=..u...."|
000105b0  57 69 6d 70 5f 47 65 74  57 69 6e 64 6f 77 53 74  |Wimp_GetWindowSt|
000105c0  61 74 65 22 2c 2c 71 25  0d 75 bc 1d e7 20 71 25  |ate",,q%.u... q%|
000105d0  21 33 32 80 28 31 3c 3c  31 36 29 20 8c 20 6f 70  |!32.(1<<16) . op|
000105e0  65 6e 25 3d b9 0d 75 c6  0a 3d 6f 70 65 6e 25 0d  |en%=..u..=open%.|
000105f0  75 d0 04 0d 75 da 1a dd  20 f2 77 69 6e 64 6f 77  |u...u... .window|
00010600  5f 73 74 61 74 65 28 21  62 6c 6b 25 29 0d 75 e4  |_state(!blk%).u.|
00010610  21 c8 99 22 57 69 6d 70  5f 47 65 74 57 69 6e 64  |!.."Wimp_GetWind|
00010620  6f 77 53 74 61 74 65 22  2c 2c 62 6c 6b 25 0d 75  |owState",,blk%.u|
00010630  ee 05 e1 0d 75 f8 04 0d  76 02 25 dd 20 f2 72 65  |....u...v.%. .re|
00010640  64 6f 62 6f 78 28 77 69  6e 64 25 2c 78 30 25 2c  |dobox(wind%,x0%,|
00010650  79 30 25 2c 78 31 25 2c  79 31 25 29 0d 76 0c 1a  |y0%,x1%,y1%).v..|
00010660  e7 20 78 31 25 3c 78 30  25 20 8c 20 c8 94 20 78  |. x1%<x0% . .. x|
00010670  30 25 2c 78 31 25 0d 76  16 1a e7 20 79 31 25 3c  |0%,x1%.v... y1%<|
00010680  79 30 25 20 8c 20 c8 94  20 79 30 25 2c 79 31 25  |y0% . .. y0%,y1%|
00010690  0d 76 20 2e c8 99 22 57  69 6d 70 5f 46 6f 72 63  |.v ..."Wimp_Forc|
000106a0  65 52 65 64 72 61 77 22  2c 77 69 6e 64 25 2c 78  |eRedraw",wind%,x|
000106b0  30 25 2c 79 30 25 2c 78  31 25 2c 79 31 25 0d 76  |0%,y0%,x1%,y1%.v|
000106c0  2a 05 e1 0d 76 34 04 0d  76 3e 2c dd 20 f2 69 6e  |*...v4..v>,. .in|
000106d0  73 74 61 6e 74 72 65 64  6f 62 6f 78 28 77 69 6e  |stantredobox(win|
000106e0  64 25 2c 78 30 25 2c 79  30 25 2c 78 31 25 2c 79  |d%,x0%,y0%,x1%,y|
000106f0  31 25 29 0d 76 48 1a e7  20 78 31 25 3c 78 30 25  |1%).vH.. x1%<x0%|
00010700  20 8c 20 c8 94 20 78 30  25 2c 78 31 25 0d 76 52  | . .. x0%,x1%.vR|
00010710  1a e7 20 79 31 25 3c 79  30 25 20 8c 20 c8 94 20  |.. y1%<y0% . .. |
00010720  79 30 25 2c 79 31 25 0d  76 5c 12 69 64 25 3d a4  |y0%,y1%.v\.id%=.|
00010730  69 64 28 77 69 6e 64 25  29 0d 76 66 11 21 62 6c  |id(wind%).vf.!bl|
00010740  6b 25 3d 77 25 28 69 64  25 29 0d 76 70 0e 62 6c  |k%=w%(id%).vp.bl|
00010750  6b 25 21 34 3d 78 30 25  0d 76 7a 0e 62 6c 6b 25  |k%!4=x0%.vz.blk%|
00010760  21 38 3d 79 30 25 0d 76  84 0f 62 6c 6b 25 21 31  |!8=y0%.v..blk%!1|
00010770  32 3d 78 31 25 0d 76 8e  0f 62 6c 6b 25 21 31 36  |2=x1%.v..blk%!16|
00010780  3d 79 31 25 0d 76 98 27  c8 99 22 57 69 6d 70 5f  |=y1%.v.'.."Wimp_|
00010790  55 70 64 61 74 65 57 69  6e 64 6f 77 22 2c 2c 62  |UpdateWindow",,b|
000107a0  6c 6b 25 20 b8 20 6d 6f  72 65 25 0d 76 a2 0e 69  |lk% . more%.v..i|
000107b0  6e 73 74 61 6e 74 25 3d  b9 0d 76 ac 12 f2 72 65  |nstant%=..v...re|
000107c0  63 74 61 6e 67 6c 65 6c  6f 6f 70 0d 76 b6 0e 69  |ctangleloop.v..i|
000107d0  6e 73 74 61 6e 74 25 3d  a3 0d 76 c0 05 e1 0d 76  |nstant%=..v....v|
000107e0  ca 04 0d 76 d4 2f dd 20  f2 73 74 61 72 74 75 70  |...v./. .startup|
000107f0  64 61 74 65 77 69 6e 64  6f 77 28 77 69 6e 64 25  |datewindow(wind%|
00010800  2c 78 30 25 2c 79 30 25  2c 78 31 25 2c 79 31 25  |,x0%,y0%,x1%,y1%|
00010810  29 0d 76 de 0f 21 62 6c  6b 25 3d 77 69 6e 64 25  |).v..!blk%=wind%|
00010820  0d 76 e8 0e 62 6c 6b 25  21 34 3d 78 30 25 0d 76  |.v..blk%!4=x0%.v|
00010830  f2 0e 62 6c 6b 25 21 38  3d 79 30 25 0d 76 fc 0f  |..blk%!8=y0%.v..|
00010840  62 6c 6b 25 21 31 32 3d  78 31 25 0d 77 06 0f 62  |blk%!12=x1%.w..b|
00010850  6c 6b 25 21 31 36 3d 79  31 25 0d 77 10 27 c8 99  |lk%!16=y1%.w.'..|
00010860  22 57 69 6d 70 5f 55 70  64 61 74 65 57 69 6e 64  |"Wimp_UpdateWind|
00010870  6f 77 22 2c 2c 62 6c 6b  25 20 b8 20 6d 6f 72 65  |ow",,blk% . more|
00010880  25 0d 77 1a 05 e1 0d 77  24 04 0d 77 2e 34 dd 20  |%.w....w$..w.4. |
00010890  f2 73 74 61 72 74 75 70  64 61 74 65 77 69 6e 64  |.startupdatewind|
000108a0  6f 77 62 6c 6f 63 6b 28  77 69 6e 64 25 2c 78 30  |owblock(wind%,x0|
000108b0  25 2c 79 30 25 2c 78 31  25 2c 79 31 25 29 0d 77  |%,y0%,x1%,y1%).w|
000108c0  38 0f 21 62 6c 6b 25 3d  77 69 6e 64 25 0d 77 42  |8.!blk%=wind%.wB|
000108d0  1a e7 20 78 30 25 3e 78  31 25 20 8c 20 c8 94 20  |.. x0%>x1% . .. |
000108e0  78 30 25 2c 78 31 25 0d  77 4c 1a e7 20 79 30 25  |x0%,x1%.wL.. y0%|
000108f0  3e 79 31 25 20 8c 20 c8  94 20 79 30 25 2c 79 31  |>y1% . .. y0%,y1|
00010900  25 0d 77 56 10 62 6c 6b  25 21 34 3d 78 30 25 2d  |%.wV.blk%!4=x0%-|
00010910  34 0d 77 60 10 62 6c 6b  25 21 38 3d 79 30 25 2d  |4.w`.blk%!8=y0%-|
00010920  34 0d 77 6a 11 62 6c 6b  25 21 31 32 3d 78 31 25  |4.wj.blk%!12=x1%|
00010930  2b 34 0d 77 74 11 62 6c  6b 25 21 31 36 3d 79 31  |+4.wt.blk%!16=y1|
00010940  25 2b 34 0d 77 7e 27 c8  99 22 57 69 6d 70 5f 55  |%+4.w~'.."Wimp_U|
00010950  70 64 61 74 65 57 69 6e  64 6f 77 22 2c 2c 62 6c  |pdateWindow",,bl|
00010960  6b 25 20 b8 20 6d 6f 72  65 25 0d 77 88 05 e1 0d  |k% . more%.w....|
00010970  77 92 04 0d 77 9c 1a dd  20 f2 64 65 6c 65 74 65  |w...w... .delete|
00010980  77 69 6e 64 6f 77 28 f8  20 21 71 25 29 0d 77 a6  |window(. !q%).w.|
00010990  1d c8 99 22 57 69 6d 70  5f 44 65 6c 65 74 65 57  |..."Wimp_DeleteW|
000109a0  69 6e 64 6f 77 22 2c 2c  71 25 0d 77 b0 09 21 71  |indow",,q%.w..!q|
000109b0  25 3d 30 0d 77 ba 05 e1  0d 77 c4 04 0d 77 ce 1d  |%=0.w....w...w..|
000109c0  f4 20 3d 3d 3d 3d 20 69  63 6f 6e 20 72 6f 75 74  |. ==== icon rout|
000109d0  69 6e 65 73 20 3d 3d 3d  3d 0d 77 d8 04 0d 77 e2  |ines ====.w...w.|
000109e0  26 dd 20 f2 63 6c 69 63  6b 28 6d 78 25 2c 6d 79  |&. .click(mx%,my|
000109f0  25 2c 62 75 74 25 2c 77  69 6e 64 25 2c 69 63 6f  |%,but%,wind%,ico|
00010a00  6e 25 29 0d 77 ec 37 e7  20 a4 62 75 74 74 79 70  |n%).w.7. .buttyp|
00010a10  65 28 77 69 6e 64 25 2c  69 63 6f 6e 25 29 3d 39  |e(wind%,icon%)=9|
00010a20  20 8c 20 f2 66 6c 61 73  68 69 63 6f 6e 28 77 69  | . .flashicon(wi|
00010a30  6e 64 25 2c 69 63 6f 6e  25 29 0d 77 f6 12 69 64  |nd%,icon%).w..id|
00010a40  25 3d a4 69 64 28 77 69  6e 64 25 29 0d 78 00 0d  |%=.id(wind%).x..|
00010a50  c8 8e 20 62 75 74 25 20  ca 0d 78 0a 08 c9 20 36  |.. but% ..x... 6|
00010a60  34 0d 78 14 22 20 20 c8  8e 20 a4 62 75 74 74 79  |4.x."  .. .butty|
00010a70  70 65 28 77 25 28 69 64  25 29 2c 69 63 6f 6e 25  |pe(w%(id%),icon%|
00010a80  29 20 ca 0d 78 1e 2d 20  20 20 20 c9 20 36 2c 37  |) ..x.-    . 6,7|
00010a90  2c 38 2c 31 30 2c 31 34  20 3a 20 f2 73 74 61 72  |,8,10,14 : .star|
00010aa0  74 64 72 61 67 28 69 64  25 2c 69 63 6f 6e 25 29  |tdrag(id%,icon%)|
00010ab0  0d 78 28 07 20 20 cb 0d  78 32 18 c9 20 32 20 3a  |.x(.  ..x2.. 2 :|
00010ac0  20 f2 6f 70 65 6e 6d 65  6e 75 28 69 64 25 29 0d  | .openmenu(id%).|
00010ad0  78 3c 05 7f 0d 78 46 1d  64 25 3d a0 28 22 46 4e  |x<...xF.d%=.("FN|
00010ae0  63 6c 69 63 6b 5f 22 2b  69 64 24 28 69 64 25 29  |click_"+id$(id%)|
00010af0  29 0d 78 50 05 cb 0d 78  5a 05 e1 0d 78 64 04 0d  |).xP...xZ...xd..|
00010b00  78 6e 0e dd 20 f2 65 6e  64 64 72 61 67 0d 78 78  |xn.. .enddrag.xx|
00010b10  0f 64 72 61 67 67 69 6e  67 25 3d a3 0d 78 82 10  |.dragging%=..x..|
00010b20  64 72 61 67 5f 74 79 70  65 25 3d 30 0d 78 8c 18  |drag_type%=0.x..|
00010b30  c8 99 22 57 69 6d 70 5f  44 72 61 67 42 6f 78 22  |.."Wimp_DragBox"|
00010b40  2c 2c 2d 31 0d 78 96 0e  f2 6d 6f 75 73 65 69 6e  |,,-1.x...mousein|
00010b50  66 6f 0d 78 a0 22 e7 20  64 72 61 67 25 20 8c 20  |fo.x.". drag% . |
00010b60  c8 99 22 44 72 61 67 41  53 70 72 69 74 65 5f 53  |.."DragASprite_S|
00010b70  74 6f 70 22 0d 78 aa 20  64 25 3d a0 28 22 46 4e  |top".x. d%=.("FN|
00010b80  64 72 6f 70 5f 22 2b 69  64 24 28 64 72 61 67 69  |drop_"+id$(dragi|
00010b90  64 25 29 29 0d 78 b4 0d  64 72 61 67 69 64 25 3d  |d%)).x..dragid%=|
00010ba0  30 0d 78 be 05 e1 0d 78  c8 04 0d 78 d2 4c dd 20  |0.x....x...x.L. |
00010bb0  f2 73 74 61 72 74 64 72  61 67 62 6f 78 28 21 71  |.startdragbox(!q|
00010bc0  25 2c 71 25 21 34 2c 71  25 21 38 2c 71 25 21 31  |%,q%!4,q%!8,q%!1|
00010bd0  32 2c 71 25 21 31 36 2c  71 25 21 32 30 2c 71 25  |2,q%!16,q%!20,q%|
00010be0  21 32 34 2c 71 25 21 32  38 2c 71 25 21 33 32 2c  |!24,q%!28,q%!32,|
00010bf0  71 25 21 33 36 29 0d 78  dc 18 c8 99 22 57 69 6d  |q%!36).x...."Wim|
00010c00  70 5f 44 72 61 67 42 6f  78 22 2c 2c 71 25 0d 78  |p_DragBox",,q%.x|
00010c10  e6 05 e1 0d 78 f0 04 0d  78 fa 1f dd 20 f2 73 65  |....x...x... .se|
00010c20  74 70 6f 69 6e 74 65 72  28 70 74 72 24 2c 6f 78  |tpointer(ptr$,ox|
00010c30  25 2c 6f 79 25 29 0d 79  04 2d c8 99 22 57 69 6d  |%,oy%).y.-.."Wim|
00010c40  70 5f 53 70 72 69 74 65  4f 70 22 2c 33 36 2c 31  |p_SpriteOp",36,1|
00010c50  2c 70 74 72 24 2c 32 2c  6f 78 25 2c 6f 79 25 2c  |,ptr$,2,ox%,oy%,|
00010c60  30 2c 30 0d 79 0e 3b e7  20 70 74 72 24 3c 3e 22  |0,0.y.;. ptr$<>"|
00010c70  70 74 72 5f 64 65 66 61  75 6c 74 22 20 8c 20 70  |ptr_default" . p|
00010c80  6f 69 6e 74 65 72 6d 69  6e 65 25 3d b9 20 8b 20  |ointermine%=. . |
00010c90  70 6f 69 6e 74 65 72 6d  69 6e 65 25 3d a3 0d 79  |pointermine%=..y|
00010ca0  18 05 e1 0d 79 22 04 0d  79 2c 23 dd 20 f2 6b 65  |....y"..y,#. .ke|
00010cb0  79 28 77 69 6e 64 25 2c  69 63 6f 6e 25 2c 69 6e  |y(wind%,icon%,in|
00010cc0  64 65 78 25 2c 6b 65 79  25 29 0d 79 36 25 74 61  |dex%,key%).y6%ta|
00010cd0  6b 65 6e 3d a0 28 22 46  4e 6b 65 79 5f 22 2b 69  |ken=.("FNkey_"+i|
00010ce0  64 24 28 a4 69 64 28 77  69 6e 64 25 29 29 29 0d  |d$(.id(wind%))).|
00010cf0  79 40 28 e7 20 74 61 6b  65 6e 3d a3 20 8c 20 c8  |y@(. taken=. . .|
00010d00  99 22 57 69 6d 70 5f 50  72 6f 63 65 73 73 4b 65  |."Wimp_ProcessKe|
00010d10  79 22 2c 6b 65 79 25 0d  79 4a 05 e1 0d 79 54 04  |y",key%.yJ...yT.|
00010d20  0d 79 5e 28 dd 20 a4 69  6e 63 69 63 6f 6e 28 69  |.y^(. .incicon(i|
00010d30  69 63 6f 6e 25 2c 64 65  63 25 2c 69 6e 63 25 2c  |icon%,dec%,inc%,|
00010d40  6c 62 25 2c 75 62 25 29  0d 79 68 0d 63 68 61 6e  |lb%,ub%).yh.chan|
00010d50  67 65 25 3d a3 0d 79 72  1f e7 20 69 63 6f 6e 25  |ge%=..yr.. icon%|
00010d60  3d 64 65 63 25 20 84 20  69 63 6f 6e 25 3d 69 6e  |=dec% . icon%=in|
00010d70  63 25 20 8c 0d 79 7c 21  76 61 6c 25 3d bb a4 69  |c% ..y|!val%=..i|
00010d80  63 6f 6e 74 65 78 74 28  77 69 6e 64 25 2c 69 69  |context(wind%,ii|
00010d90  63 6f 6e 25 29 0d 79 86  1a 76 61 6c 25 2b 3d 28  |con%).y..val%+=(|
00010da0  69 63 6f 6e 25 3d 64 65  63 25 29 2a 32 2b 31 0d  |icon%=dec%)*2+1.|
00010db0  79 90 31 e7 20 76 61 6c  25 3e 75 62 25 20 8c 20  |y.1. val%>ub% . |
00010dc0  76 61 6c 25 3d 75 62 25  20 8b 20 e7 20 76 61 6c  |val%=ub% . . val|
00010dd0  25 3c 6c 62 25 20 8c 20  76 61 6c 25 3d 6c 62 25  |%<lb% . val%=lb%|
00010de0  0d 79 9a 26 f2 73 65 74  69 63 6f 6e 74 65 78 74  |.y.&.seticontext|
00010df0  28 77 69 6e 64 25 2c 69  69 63 6f 6e 25 2c c3 28  |(wind%,iicon%,.(|
00010e00  76 61 6c 25 29 29 0d 79  a4 1d f2 72 65 73 65 74  |val%)).y...reset|
00010e10  63 61 72 65 74 28 77 69  6e 64 25 2c 69 69 63 6f  |caret(wind%,iico|
00010e20  6e 25 29 0d 79 ae 0d 63  68 61 6e 67 65 25 3d b9  |n%).y..change%=.|
00010e30  0d 79 b8 05 cd 0d 79 c2  05 cd 0d 79 cc 0c 3d 63  |.y....y....y..=c|
00010e40  68 61 6e 67 65 25 0d 79  d6 04 0d 79 e0 1b dd 20  |hange%.y...y... |
00010e50  f2 72 65 6d 6f 76 65 69  63 6f 6e 28 21 71 25 2c  |.removeicon(!q%,|
00010e60  71 25 21 34 29 0d 79 ea  10 71 25 21 38 3d 28 31  |q%!4).y..q%!8=(1|
00010e70  3c 3c 32 34 29 0d 79 f4  29 71 25 21 31 32 3d 28  |<<24).y.)q%!12=(|
00010e80  31 3c 3c 32 29 84 28 31  3c 3c 35 29 84 28 31 35  |1<<2).(1<<5).(15|
00010e90  3c 3c 32 34 29 84 28 31  35 3c 3c 31 32 29 0d 79  |<<24).(15<<12).y|
00010ea0  fe 1d c8 99 22 57 69 6d  70 5f 53 65 74 49 63 6f  |...."Wimp_SetIco|
00010eb0  6e 53 74 61 74 65 22 2c  2c 71 25 0d 7a 08 05 e1  |nState",,q%.z...|
00010ec0  0d 7a 12 04 0d 7a 1c 1b  dd 20 f2 72 65 69 6e 69  |.z...z... .reini|
00010ed0  74 69 63 6f 6e 28 21 71  25 2c 71 25 21 34 29 0d  |ticon(!q%,q%!4).|
00010ee0  7a 26 26 71 25 21 38 3d  28 31 3c 3c 32 29 84 28  |z&&q%!8=(1<<2).(|
00010ef0  31 3c 3c 35 29 84 28 37  3c 3c 32 34 29 84 28 33  |1<<5).(7<<24).(3|
00010f00  3c 3c 31 32 29 0d 7a 30  29 71 25 21 31 32 3d 28  |<<12).z0)q%!12=(|
00010f10  31 3c 3c 32 29 84 28 31  3c 3c 35 29 84 28 31 35  |1<<2).(1<<5).(15|
00010f20  3c 3c 31 32 29 84 28 31  35 3c 3c 32 34 29 0d 7a  |<<12).(15<<24).z|
00010f30  3a 1d c8 99 22 57 69 6d  70 5f 53 65 74 49 63 6f  |:..."Wimp_SetIco|
00010f40  6e 53 74 61 74 65 22 2c  2c 71 25 0d 7a 44 05 e1  |nState",,q%.zD..|
00010f50  0d 7a 4e 04 0d 7a 58 16  dd 20 a4 69 63 6f 6e 6b  |.zN..zX.. .iconk|
00010f60  65 79 73 28 64 61 74 61  25 29 0d 7a 62 0b 74 61  |eys(data%).zb.ta|
00010f70  6b 65 6e 3d b9 0d 7a 6c  0c 69 63 6f 6e 73 25 3d  |ken=..zl.icons%=|
00010f80  30 0d 7a 76 17 c8 95 20  64 61 74 61 25 3f 69 63  |0.zv... data%?ic|
00010f90  6f 6e 73 25 3c 32 35 35  0d 7a 80 0f 20 20 69 63  |ons%<255.z..  ic|
00010fa0  6f 6e 73 25 2b 3d 31 0d  7a 8a 05 ce 0d 7a 94 0d  |ons%+=1.z....z..|
00010fb0  69 63 6f 6e 73 25 2d 3d  31 0d 7a 9e 0d 66 6f 75  |icons%-=1.z..fou|
00010fc0  6e 64 25 3d 2d 31 0d 7a  a8 13 e3 20 70 25 3d 30  |nd%=-1.z... p%=0|
00010fd0  20 b8 20 69 63 6f 6e 73  25 0d 7a b2 22 20 20 e7  | . icons%.z."  .|
00010fe0  20 64 61 74 61 25 3f 70  25 3d 69 63 6f 6e 25 20  | data%?p%=icon% |
00010ff0  8c 20 66 6f 75 6e 64 25  3d 70 25 0d 7a bc 08 ed  |. found%=p%.z...|
00011000  20 70 25 0d 7a c6 0f 6e  65 77 69 63 6f 6e 25 3d  | p%.z..newicon%=|
00011010  2d 31 0d 7a d0 11 e7 20  66 6f 75 6e 64 25 3e 3d  |-1.z... found%>=|
00011020  30 20 8c 0d 7a da 0f 20  20 c8 8e 20 6b 65 79 25  |0 ..z..  .. key%|
00011030  20 ca 0d 7a e4 20 20 20  20 20 c9 20 31 33 20 3a  | ..z.     . 13 :|
00011040  20 6e 65 77 69 63 6f 6e  25 3d 66 6f 75 6e 64 25  | newicon%=found%|
00011050  2b 31 0d 7a ee 34 20 20  20 20 c9 20 26 31 38 45  |+1.z.4    . &18E|
00011060  20 3a 20 e7 20 66 6f 75  6e 64 25 3c 69 63 6f 6e  | : . found%<icon|
00011070  73 25 20 8c 20 6e 65 77  69 63 6f 6e 25 3d 66 6f  |s% . newicon%=fo|
00011080  75 6e 64 25 2b 31 0d 7a  f8 2f 20 20 20 20 c9 20  |und%+1.z./    . |
00011090  26 31 38 46 20 3a 20 e7  20 66 6f 75 6e 64 25 3e  |&18F : . found%>|
000110a0  30 20 8c 20 6e 65 77 69  63 6f 6e 25 3d 66 6f 75  |0 . newicon%=fou|
000110b0  6e 64 25 2d 31 0d 7b 02  2a 20 20 20 20 c9 20 26  |nd%-1.{.*    . &|
000110c0  31 39 45 2c 26 31 41 45  2c 26 31 42 45 20 3a 20  |19E,&1AE,&1BE : |
000110d0  6e 65 77 69 63 6f 6e 25  3d 69 63 6f 6e 73 25 0d  |newicon%=icons%.|
000110e0  7b 0c 25 20 20 20 20 c9  20 26 31 39 46 2c 26 31  |{.%    . &19F,&1|
000110f0  41 46 2c 26 31 42 46 20  3a 20 6e 65 77 69 63 6f  |AF,&1BF : newico|
00011100  6e 25 3d 30 0d 7b 16 07  20 20 7f 0d 7b 20 0f 20  |n%=0.{..  ..{ . |
00011110  20 20 20 74 61 6b 65 6e  3d a3 0d 7b 2a 07 20 20  |   taken=..{*.  |
00011120  cb 0d 7b 34 05 cd 0d 7b  3e 2c e7 20 6e 65 77 69  |..{4...{>,. newi|
00011130  63 6f 6e 25 3e 69 63 6f  6e 73 25 20 8c 20 74 61  |con%>icons% . ta|
00011140  6b 65 6e 3d 2d 32 3a 6e  65 77 69 63 6f 6e 25 3d  |ken=-2:newicon%=|
00011150  2d 31 0d 7b 48 13 e7 20  6e 65 77 69 63 6f 6e 25  |-1.{H.. newicon%|
00011160  3e 3d 30 20 8c 0d 7b 52  0f 20 20 f2 67 65 74 63  |>=0 ..{R.  .getc|
00011170  61 72 65 74 0d 7b 5c 2d  20 20 f2 70 75 74 63 61  |aret.{\-  .putca|
00011180  72 65 74 28 77 69 6e 64  25 2c 64 61 74 61 25 3f  |ret(wind%,data%?|
00011190  6e 65 77 69 63 6f 6e 25  2c 63 69 6e 64 65 78 25  |newicon%,cindex%|
000111a0  29 0d 7b 66 05 cd 0d 7b  70 0a 3d 74 61 6b 65 6e  |).{f...{p.=taken|
000111b0  0d 7b 7a 04 0d 7b 84 1c  f4 20 3d 3d 3d 3d 20 61  |.{z..{... ==== a|
000111c0  6e 64 20 74 68 65 20 72  65 73 74 20 3d 3d 3d 3d  |nd the rest ====|
000111d0  0d 7b 8e 04 0d 7b 98 0f  dd 20 a4 63 6c 69 63 6b  |.{...{... .click|
000111e0  5f 3d 30 0d 7b a2 04 0d  7b ac 10 dd 20 a4 72 65  |_=0.{...{... .re|
000111f0  64 72 61 77 5f 3d 30 0d  7b b6 04 0d 7b c0 0d dd  |draw_=0.{...{...|
00011200  20 a4 6b 65 79 5f 3d 30  0d 7b ca 04 0d 7b d4 0e  | .key_=0.{...{..|
00011210  dd 20 a4 64 72 6f 70 5f  3d 30 0d 7b de 04 0d 7b  |. .drop_=0.{...{|
00011220  e8 14 dd 20 f2 65 72 72  6f 72 28 65 72 72 6f 72  |... .error(error|
00011230  24 29 0d 7b f2 17 c8 99  22 48 6f 75 72 67 6c 61  |$).{...."Hourgla|
00011240  73 73 5f 53 6d 61 73 68  22 0d 7b fc 10 c8 8e 20  |ss_Smash".{.... |
00011250  73 74 61 74 75 73 25 20  ca 0d 7c 06 09 20 20 c9  |status% ..|..  .|
00011260  20 31 0d 7c 10 19 20 20  20 20 e7 20 70 72 69 6e  | 1.|..    . prin|
00011270  74 20 8c 20 d9 23 70 72  69 6e 74 0d 7c 1a 2e 20  |t . .#print.|.. |
00011280  20 20 20 72 65 70 6f 72  74 24 3d 22 50 72 69 6e  |   report$="Prin|
00011290  74 20 65 72 72 6f 72 2c  20 70 72 69 6e 74 20 63  |t error, print c|
000112a0  61 6e 63 65 6c 6c 65 64  22 0d 7c 24 05 7f 0d 7c  |ancelled".|$...||
000112b0  2e 53 20 20 72 65 70 6f  72 74 24 3d 22 41 6e 20  |.S  report$="An |
000112c0  75 6e 63 6f 6e 74 72 6f  6c 61 62 6c 65 20 65 72  |uncontrolable er|
000112d0  72 6f 72 20 68 61 73 20  6f 63 63 75 72 65 64 20  |ror has occured |
000112e0  28 22 2b 65 72 72 6f 72  24 2b c3 28 9e 29 2b 22  |("+error$+.(.)+"|
000112f0  29 2c 20 73 68 61 6c 6c  20 49 20 65 78 69 74 3f  |), shall I exit?|
00011300  22 0d 7c 38 05 cb 0d 7c  42 18 65 78 69 74 3d a4  |".|8...|B.exit=.|
00011310  63 68 65 63 6b 28 72 65  70 6f 72 74 24 29 0d 7c  |check(report$).||
00011320  4c 0d 73 74 61 74 75 73  25 3d 30 0d 7c 56 05 e1  |L.status%=0.|V..|
00011330  0d 7c 60 04 0d 7c 6a 12  dd 20 a4 77 70 61 6c 28  |.|`..|j.. .wpal(|
00011340  6d 6f 64 65 25 29 0d 7c  74 1a c8 8e 20 a4 6d 6f  |mode%).|t... .mo|
00011350  64 65 76 61 72 28 6d 6f  64 65 25 2c 33 29 20 ca  |devar(mode%,3) .|
00011360  0d 7c 7e 0f 20 20 c9 20  36 33 3a 70 25 3d 30 0d  |.|~.  . 63:p%=0.|
00011370  7c 88 16 20 20 c9 20 31  35 3a 70 25 3d 64 65 73  ||..  . 15:p%=des|
00011380  6b 70 61 6c 25 0d 7c 92  12 20 20 c9 20 33 3a 70  |kpal%.|..  . 3:p|
00011390  25 3d 70 61 6c 34 25 0d  7c 9c 12 20 20 c9 20 31  |%=pal4%.|..  . 1|
000113a0  3a 70 25 3d 70 61 6c 32  25 0d 7c a6 05 cb 0d 7c  |:p%=pal2%.|....||
000113b0  b0 07 3d 70 25 0d 7c ba  04 0d 7c c4 10 dd 20 a4  |..=p%.|...|... .|
000113c0  64 72 6f 70 5f 73 61 76  65 0d 7c ce 1c 66 69 6c  |drop_save.|..fil|
000113d0  65 74 79 70 65 25 3d 6d  69 73 63 25 28 64 72 61  |etype%=misc%(dra|
000113e0  67 69 64 25 29 0d 7c d8  0f 69 64 25 3d 64 72 61  |gid%).|..id%=dra|
000113f0  67 69 64 25 0d 7c e2 2a  70 72 65 70 61 72 65 64  |gid%.|.*prepared|
00011400  25 3d a0 28 22 46 4e 70  72 65 70 61 72 65 22 2b  |%=.("FNprepare"+|
00011410  c3 7e 28 66 69 6c 65 74  79 70 65 25 29 29 0d 7c  |.~(filetype%)).||
00011420  ec 49 e7 20 70 72 65 70  61 72 65 64 25 20 8c 20  |.I. prepared% . |
00011430  f2 64 72 6f 70 66 69 6c  65 28 a4 69 63 6f 6e 74  |.dropfile(.icont|
00011440  65 78 74 28 77 25 28 64  72 61 67 69 64 25 29 2c  |ext(w%(dragid%),|
00011450  32 29 2c 66 69 6c 65 74  79 70 65 25 2c 66 69 6c  |2),filetype%,fil|
00011460  65 73 69 7a 65 25 29 0d  7c f6 06 3d 30 0d 7d 00  |esize%).|..=0.}.|
00011470  04 0d 7d 0a 11 dd 20 a4  63 6c 69 63 6b 5f 73 61  |..}... .click_sa|
00011480  76 65 0d 7d 14 2f e7 20  69 63 6f 6e 25 3d 30 20  |ve.}./. icon%=0 |
00011490  8c 20 f2 73 61 76 65 28  69 64 25 2c a4 69 63 6f  |. .save(id%,.ico|
000114a0  6e 74 65 78 74 28 77 69  6e 64 25 2c 32 29 2c a3  |ntext(wind%,2),.|
000114b0  29 0d 7d 1e 06 3d 30 0d  7d 28 04 0d 7d 32 0f dd  |).}..=0.}(..}2..|
000114c0  20 a4 6b 65 79 5f 73 61  76 65 0d 7d 3c 32 e7 20  | .key_save.}<2. |
000114d0  6b 65 79 25 3d 31 33 20  8c 20 f2 73 61 76 65 28  |key%=13 . .save(|
000114e0  69 64 25 2c a4 69 63 6f  6e 74 65 78 74 28 77 69  |id%,.icontext(wi|
000114f0  6e 64 25 2c 32 29 2c a3  29 3a 3d b9 0d 7d 46 06  |nd%,2),.):=..}F.|
00011500  3d 30 0d 7d 50 04 0d 7d  5a 22 dd 20 a4 73 70 72  |=0.}P..}Z". .spr|
00011510  69 74 65 6e 61 6d 65 28  73 70 72 69 74 65 25 2c  |itename(sprite%,|
00011520  6e 75 6d 62 65 72 25 29  0d 7d 64 3b c8 99 22 4f  |number%).}d;.."O|
00011530  53 5f 53 70 72 69 74 65  4f 70 22 2c 31 33 2b 32  |S_SpriteOp",13+2|
00011540  35 36 2c 73 70 72 69 74  65 25 2c 71 25 2c 32 35  |56,sprite%,q%,25|
00011550  36 2c 6e 75 6d 62 65 72  25 20 b8 20 2c 2c 2c 6c  |6,number% . ,,,l|
00011560  65 6e 25 0d 7d 6e 0e 71  25 3f 6c 65 6e 25 3d 31  |en%.}n.q%?len%=1|
00011570  33 0d 7d 78 08 3d 24 71  25 0d 7d 82 04 0d 7d 8c  |3.}x.=$q%.}...}.|
00011580  1c dd 20 f2 6c 6f 61 64  28 66 69 6c 65 24 2c 66  |.. .load(file$,f|
00011590  69 6c 65 74 79 70 65 25  29 0d 7d 96 1c 6f 6b 25  |iletype%).}..ok%|
000115a0  3d a4 66 69 6c 65 6f 6b  61 79 28 66 69 6c 65 74  |=.fileokay(filet|
000115b0  79 70 65 25 29 0d 7d a0  21 e7 20 6f 6b 25 20 8c  |ype%).}.!. ok% .|
000115c0  20 6f 6b 25 3d a4 66 69  6c 65 65 78 69 73 74 28  | ok%=.fileexist(|
000115d0  66 69 6c 65 24 29 0d 7d  aa 0b e7 20 6f 6b 25 20  |file$).}... ok% |
000115e0  8c 0d 7d b4 12 20 20 f2  72 65 70 6c 79 28 31 38  |..}..  .reply(18|
000115f0  2c 34 29 0d 7d be 0e 20  20 f2 64 6f 5f 6c 6f 61  |,4).}..  .do_loa|
00011600  64 0d 7d c8 05 cd 0d 7d  d2 05 e1 0d 7d dc 04 0d  |d.}....}....}...|
00011610  7d e6 13 dd 20 a4 72 65  61 64 76 61 72 28 24 71  |}... .readvar($q|
00011620  25 29 0d 7d f0 2e c8 99  22 4f 53 5f 52 65 61 64  |%).}...."OS_Read|
00011630  56 61 72 56 61 6c 22 2c  71 25 2c 62 6c 6b 25 2c  |VarVal",q%,blk%,|
00011640  32 35 36 2c 30 2c 33 20  b8 20 2c 2c 6c 65 6e 25  |256,0,3 . ,,len%|
00011650  0d 7d fa 10 62 6c 6b 25  3f 6c 65 6e 25 3d 31 33  |.}..blk%?len%=13|
00011660  0d 7e 04 0a 3d 24 62 6c  6b 25 0d ff              |.~..=$blk%..|
0001166c