Home » Archimedes archive » Zipped Apps » Atelier » !Atelier/Atelier

!Atelier/Atelier

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 » Zipped Apps » Atelier
Filename: !Atelier/Atelier
Read OK:
File size: F03F bytes
Load address: 0000
Exec address: 0000
File contents
   10REM> <Atelier$Dir>.Atelier
   20REM  By Simon Clay Copyright (c) Simon Clay, 1989
   30:    version$="1.01"
   40
   50
   60ONERROR:PROCerror(ERR,REPORT$,ERL,TRUE)
   70PROCinit
   80ONERROR:PROCerror(ERR,REPORT$,ERL,FALSE):PROCreport
   90PROCnormpoint
  100IF FNokfile_at(start_file$,-1,start_t%) THEN t%=start_t%:start_t%=-1:PROCloadfile(start_file$,-1,t%)
  110
  120REPEAT
  130SYS "Wimp_PollIdle",,q%,1E9 TO reason%
  140PROCrespond(reason%)
  150UNTILquit%
  160PROCquit
  170END
  180
  190DEFPROCrespond(reason%)
  200PROCwaitpoint
  210CASEreason%OF
  220WHEN0:
  230WHEN1:
  240WHEN2:PROCopen(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28)
  250WHEN3:PROCclosew(!q%)
  260WHEN4:
  270WHEN5:
  280WHEN6:PROCmouse(!q%,q%!4,q%!8,q%!12,q%!16,q%!20)
  290WHEN7:PROCenddrag
  300WHEN8:
  310WHEN9:PROCmenuselect
  320WHEN10
  330WHEN11
  340WHEN12
  350WHEN17,18:PROCumess1
  360WHEN19:PROCumess2
  370ENDCASE
  380PROCnormpoint
  390ENDPROC
  400
  410DEFPROCquit:PROCnormpoint
  420IFFNdebug:PROCtidy:END
  430$q%="TASK":SYS "Wimp_CloseDown",taskhandle%,!q%
  440QUIT
  450
  460DEFPROCinit
  470DIM q% 2500, workbuf% 100
  480appl$="Atelier"
  490PROCfindmos
  500waiter%=0:PROCwaitpoint
  510SYS "OS_GetEnv" TO SA$:IF MID$(SA$,7,5)="-quit" THEN testing=FALSE ELSE testing=TRUE
  520PROCinit_at
  530PROCcheckmos
  540*fx229,1
  550wimpsaved%=FALSE
  560v%=FNinitwimp:IFv%<180:MODE12:PROCerr(2)
  570quit%=FALSE:dialogue%=-1E9:stopreason%=-1
  580ackpending%=FALSE:ackref%=-1
  590dragreason%=-1:help$=""
  600savereason%=-1
  610PROCdefws:PROCdefmenus:PROCversion
  620checkref%=-1
  630as$="Are you sure ?"
  640PROCbaricon
  650REM find start bit
  660start_file$="":start_t%=-1
  670LOCAL ERROR
  680ON ERROR LOCAL start_file$="":start_t%=-1:GOTO 820
  690SYS "OS_GetEnv" TO r0,r1,r2
  700A$=""
  710IF ?r0<>0 THEN A$+=CHR$(?r0):r0+=1:GOTO 710
  720IF INSTR(A$," ")<>0 THEN A$=MID$(A$,INSTR(A$," ")+1):GOTO 720
  730IF A$<>"" THEN
  740SYS "OS_File",5,A$ TO r0,r1,r2
  750IF r0=1 THEN
  760IF ((r2 AND &FFF00000)=&FFF00000) THEN start_t%=(r2 AND &FFF00)>>8
  770start_file$=A$
  780ENDIF
  790ENDIF
  800ENDIF
  810REM end start bit
  820ENDPROC
  830
  840DEFPROCversion
  850LOCALT$:T$=version$:IFNOTFNprod:T$+=" *UNFINISHED*"
  860PROCseti(w_pinfo%,4,"v"+T$)
  870ENDPROC
  880
  890DEFFNprod=MID$(version$,INSTR(version$,".")+1,1)="0"
  900DEFFNdebug=NOTFNprod ANDINKEY-1ANDINKEY-2
  910
  920DEFFNinitwimp
  930$q%="TASK":SYS "Wimp_Initialise",200,!q%,"Atelier"TO!q%,taskhandle%
  940=!q%
  950
  960DEFPROCtidy
  970PROCnormpoint
  980VDU4:PRINTTAB(0,2);:*fx4
  990*fx225,1
 1000*fx229
 1010ONERROR:REPORT:PRINT" ";ERL:END
 1020ENDPROC
 1030
 1040DEFPROCbaricon
 1050!q%=-1:q%!4=0:q%!8=0:q%!12=64:q%!16=68
 1060q%!20=%11000000000010:$(q%+24)="!Atelier"
 1070SYS"Wimp_CreateIcon",,q%TObaricon%
 1080ENDPROC
 1090
 1100DEFPROCerror(err%,err$,erl%,quit%)
 1110PROCnormpoint:dragreason%=-1:@%=&90A:*fx229,1
 1120LOCALi%,e%,t$,T$
 1130IFFNdebug:err$+=" ("+STR$ERL+")"
 1140LOCALERROR
 1150ONERRORLOCAL:PROCerror(ERR,REPORT$,ERL,TRUE)
 1160!q%=err%:$(q%+4)=err$:SYS"Wimp_ReportError",q%,1,appl$
 1170IFquit%:PROCquit
 1180ENDPROC
 1190
 1200DEFPROCreport:IFFNdebug:VDU4:REPORT:PRINT" @ ";ERL:PROCtidy:END
 1210ENDPROC
 1220
 1230DEFFNdir
 1240LOCALT$:T$=FNArfVar(appl$+"$Dir")
 1250IFT$="":T$="&.!"+appl$+"."
 1260IFRIGHT$(T$)<>".":T$+="."
 1270=T$
 1280
 1290DEFFNArfVar(A$)
 1300LOCALERROR
 1310ONERRORLOCALIFERR=292:="":ELSERESTOREERROR:PROCerr(0)
 1320SYS&23,A$,workbuf%,200,0,3TO,,L%
 1330workbuf%?L%=13:=$workbuf%
 1340
 1350DEFPROCumess1
 1360ref%=q%!8:task%=q%!4:IFtask%=taskhandle%:ENDPROC
 1370mess%=q%!16
 1380CASEmess%OF
 1390WHEN0:PROCquit
 1400WHEN1:PROCdatasaved
 1410WHEN2:PROCsavedata
 1420WHEN3:PROCdataload
 1430WHEN4:ackpending%=FALSE
 1440WHEN5:PROCdataopen
 1450WHEN6:
 1460WHEN7:
 1470WHEN8:PROCprequit
 1480WHEN9:
 1490WHEN&502:
 1500WHEN&400C0:PROCsubmenu(q%!20,q%!24,q%!28,q%+32)
 1510ENDCASE
 1520ENDPROC
 1530
 1540DEFPROCdataopen
 1550LOCALs%,t%
 1560file$=FNzts(q%+44):s%=q%!36:t%=q%!40
 1570IFFNokfile_at(file$,s%,t%)PROCdataloadack:PROCloadfile(file$,s%,t%)
 1580ENDPROC
 1590
 1600DEFPROCdataload
 1610LOCALs%,t%
 1620file$=FNzts(q%+44):s%=q%!36:t%=q%!40
 1630IFFNokfile_at(file$,s%,t%)PROCdataloadack:PROCloadfile(file$,s%,t%)
 1640ENDPROC
 1650
 1660DEFPROCdatasaved
 1670LOCALs%,t%
 1680file$=FNzts(q%+44):s%=q%!36:t%=q%!40
 1690IFFNokfile_at(file$,s%,t%)PROCdatasaveack
 1700ENDPROC
 1710
 1720DEFPROCtemplate(T$)
 1730PROCtemplate1(T$,q%)
 1740ENDPROC
 1750
 1760DEFPROCtemplate1(T$,q%)
 1770LOCAL c%:$workbuf%=T$
 1780SYS "Wimp_LoadTemplate",,q%,curbuf%,endbuf%,-1,workbuf%TO,,curbuf%,,,,c%
 1790IF c%=0 THEN ERROR 1,"Template '"+T$+"' not found"
 1800ENDPROC
 1810
 1820DEFPROCdefws
 1830LOCALI%
 1840bufsz%=&1000
 1850DIM buffer% bufsz%:curbuf%=buffer%:endbuf%=buffer%+bufsz%
 1860SYS"Wimp_OpenTemplate",,FNdir+"AtFrm"
 1870PROCtemplate("stopbox"):q%!64=1:SYS"Wimp_CreateWindow",,q%TOw_stop%
 1880PROCtemplate("save"):q%!64=1:SYS"Wimp_CreateWindow",,q%TOw_save%
 1890PROCtemplate("ProgInfo"):SYS"Wimp_CreateWindow",,q%TOw_pinfo%
 1900SYS"Wimp_CloseTemplate"
 1910free%=endbuf%-curbuf%
 1920ENDPROC
 1930
 1940DEFPROCdefmenus
 1950LOCALt$
 1960DIM mlist% 32,function% 51
 1970bufsz%=&200
 1980DIM menufree% bufsz%:menuptr%=menufree%:menuend%=menufree%+bufsz%
 1990menustart%=menufree%:RESTORE+2
 2000READt$:m_save%=FNcrmenu(t$)
 2010DATA"#Save,Compressed Screen}w_save%,System Screen}w_save%,Super Compacted Screen}w_save%,Super Compacted Sprite}w_save%,System Sprite(s)}w_save%,Brush Shapes}w_save%,Patterns}w_save%"
 2020READt$:m_main%=FNcrmenu(t$)
 2030DATA"#Atelier,Info>w_pinfo%,Save>m_save%,Quit"
 2040ENDPROC
 2050
 2060DEFPROCfront(h%,X%,Y%)
 2070PROCgetw(h%)
 2080IFX%>=0x1%+=X%-x0%:x0%=X%
 2090IFY%>=0y1%+=Y%-y0%:y0%=Y%
 2100PROCopen(h%,x0%,y0%,x1%,y1%,scx%,scy%,-1)
 2110ENDPROC
 2120
 2130DEFPROCtop(h%)
 2140PROCgetw(h%):PROCopen(h%,x0%,y0%,x1%,y1%,scx%,scy%,-1):ENDPROC
 2150
 2160DEFPROCopen(oh%,ox0%,oy0%,ox1%,oy1%,oscx%,oscy%,obh%)
 2170LOCALO%
 2180!q%=oh%:SYS"Wimp_GetWindowState",,q%
 2190PROCwimpopen
 2200ENDPROC
 2210
 2220DEFPROCwimpopen
 2230!q%=oh%:q%!4=ox0%:q%!8=oy0%:q%!12=ox1%:q%!16=oy1%
 2240q%!20=oscx%:q%!24=oscy%:q%!28=obh%:SYS"Wimp_OpenWindow",,q%
 2250ENDPROC
 2260
 2270DEFPROCclosew(!q%)
 2280LOCALI%
 2290SYS"Wimp_CloseWindow",,q%
 2300IF!q%=dialogue%:dialreason%=-1:dialogue%=-1
 2310IFdialogue%>=0:PROCclosew(dialogue%)
 2320CASE!q%OF
 2330WHENw_stop%:stopreason%=-1
 2340ENDCASE
 2350ENDPROC
 2360
 2370DEFFNia(h%,i%):PROCgeti(h%,i%):PROCchkii:=q%!28
 2380DEFFNva(h%,i%):PROCgeti(h%,i%):PROCchkii:=q%!32
 2390DEFFNil(h%,i%):PROCgeti(h%,i%):PROCchkii:=q%!36
 2400
 2410DEFPROCchkii:IF(q%!24AND&100)=0ERROR1,"Icon not indirected"
 2420ENDPROC
 2430
 2440DEFPROCgeti(h%,i%):!q%=h%:q%!4=i%:SYS"Wimp_GetIconState",,q%:ENDPROC
 2450
 2460DEFPROCstop(r%,T$,U$,T%)
 2470dialreason%=r%
 2480IFINKEY-3mi%=3:PROCmstop:ENDPROC
 2490PROCseti(w_stop%,0,T$):PROCseti(w_stop%,1,U$)
 2500PROCunselall(w_stop%):PROCdialogue(w_stop%)
 2510dialreason%=r%
 2520ENDPROC
 2530
 2540DEFPROCdialogue(h%)
 2550LOCALX%,Y%
 2560IFdialogue%>=0:PROCclosew(dialogue%)
 2570PROCnomenu:PROCreadpointer:X%=mx%-200:Y%=my%-85
 2580IFX%<0X%=0
 2590IFY%<96Y%=96
 2600dialogue%=h%:PROCfront(h%,X%,Y%):PROCsetct(h%,-1,-1)
 2610ENDPROC
 2620
 2630DEFPROCreadpointer:LOCALq%:q%=workbuf%
 2640SYS"Wimp_GetPointerInfo",,q%
 2650mx%=!q%:my%=q%!4:mb%=q%!8:mh%=q%!12:mi%=q%!16
 2660ENDPROC
 2670
 2680DEFFNdialogue
 2690IFdialogue%>=0ANDmh%<>dialogue%THEN
 2700PROCclosew(dialogue%)
 2710ENDIF
 2720=FALSE
 2730
 2740DEFPROCmouse(mx%,my%,mb%,mh%,mi%,mo%)
 2750IFdragreason%>=0ORmb%>255:ENDPROC
 2760IFFNdialogue:ENDPROC
 2770CASEmb%OF
 2780WHEN2:PROCmenu
 2790WHEN1,4:PROCselect
 2800WHEN16,64:PROCstartdrag
 2810ENDCASE
 2820ENDPROC
 2830
 2840DEFPROCseti(h%,i%,T$):T$=LEFT$(T$,FNil(h%,i%)):$FNia(h%,i%)=T$
 2850PROCiconupd(h%,i%):PROCgetct:IF!q%=h%ANDq%!4=i%:PROCsetct(h%,i%,LENT$)
 2860ENDPROC
 2870
 2880DEFPROCiset(h%,i%,B%,E%):LOCALq%:q%=workbuf%
 2890!q%=h%:q%!4=i%:q%!12=B%:q%!8=E%:SYS"Wimp_SetIconState",,q%:ENDPROC
 2900
 2910DEFPROCiconupd(h%,i%):PROCiset(h%,i%,0,0):ENDPROC
 2920
 2930DEFPROCreadblock(p%)
 2940x0%=!p%:y0%=p%!4:x1%=p%!8:y1%=p%!12:REM physical area
 2950scx%=p%!16:scy%=p%!20:bhandle%=p%!24:REM scroll offsets, stack depth
 2960bx%=x0%-scx%:by%=y1%-scy%:REM calculate physical co-ords of logical area
 2970ex0%=p%!40:ey0%=p%!44:ex1%=p%!48:ey1%=p%!52:REM logical area
 2980gx0%=p%!24:gy0%=p%!28:gx1%=p%!32:gy1%=p%!36:REM graphics window
 2990open%=(p%!28AND&10000)<>0:REM window open flag
 3000ENDPROC
 3010
 3020DEFPROCgetw(h%)
 3030!q%=h%:SYS "Wimp_GetWindowInfo",,q%
 3040PROCreadblock(q%+4)
 3050ENDPROC
 3060
 3070DEFPROCselect
 3080CASEmh%OF
 3090WHEN-2:enter%=0:PROCenter_atelier
 3100WHENw_stop%:PROCmstop
 3110WHENw_save%:PROCmsave
 3120ENDCASE
 3130ENDPROC
 3140
 3150DEFPROCmstop
 3160IFmi%<3ORmi%>4ENDPROC
 3170LOCALT%:T%=dialreason%:dialreason%=-1
 3180IFmi%=3THEN
 3190CASET%OF
 3200WHEN1:PROCquit
 3210ENDCASE
 3220ENDIF
 3230PROCclosew(w_stop%):ENDPROC
 3240
 3250DEFPROCmsave
 3260IFmi%<>0ENDPROC
 3270LOCALT$:T$=$FNia(w_save%,2):IFT$=FNleaf(T$):ERROR99,"To save, please drag the file icon to a directory viewer"
 3280file$=T$:PROCsavedata1
 3290ENDPROC
 3300
 3310DEFPROCstartdrag
 3320dragreason%=-1:dragbutton%=mb%
 3330CASEmh%OF
 3340WHENw_save%:IFmi%=3:dragreason%=1:PROCdragicon(w_save%,3)
 3350ENDCASE
 3360ENDPROC
 3370
 3380DEFPROCenddrag
 3390PROCreadpointer
 3400IFmh%<>-1THEN
 3410CASEdragreason%OF
 3420WHEN1:file$=FNleaf($FNia(w_save%,2))
 3430PROCsavereq(file$,savet%,saves%,savereason%)
 3440ENDCASE
 3450ENDIF
 3460dragreason%=-1
 3470ENDPROC
 3480
 3490DEFPROCunseli(h%,i%):PROCiset(h%,i%,&200000,0):ENDPROC
 3500
 3510DEFPROCseli(h%,i%):PROCiset(h%,i%,&200000,&200000):ENDPROC
 3520
 3530DEFPROCunselall(h%)
 3540LOCALI%,i%:PROCwchi(h%)
 3550I%=q%:REPEAT:i%=!I%:IFi%>=0:PROCunseli(h%,i%)
 3560I%+=4:UNTILi%<0:ENDPROC
 3570
 3580DEFPROCwchi(h%):SYS "Wimp_WhichIcon",h%,q%,&200000,&200000
 3590ENDPROC
 3600
 3610DEFPROCmenu
 3620CASEmh%OF
 3630WHEN-2:my%=64+3*40:PROCpop(m_main%,-1)
 3640ENDCASE
 3650ENDPROC
 3660
 3670DEFFNpar(t$,s$,RETURN i%):LOCALi1%
 3680i1%=i%+1:i%=INSTR(t$+s$,s$,i1%)
 3690=MID$(t$,i1%,i%-i1%)
 3700
 3710DEFFNcrmenu(menu$)
 3720IFmenufree%+28>menuend%ERROR99,"Menu area full"
 3730LOCAL m%
 3740menuptr%=menufree%
 3750i%=0
 3760IF LEFT$(menu$,1)="#"i%=1:menutitle$=FNpar(menu$,",",i%)ELSEmenutitle$=""
 3770$menuptr%=menutitle$
 3780menuptr%?12=7:menuptr%?13=2:menuptr%?14=7:menuptr%?15=0
 3790menuptr%!16=196-24:menuptr%!20=40:menuptr%!24=0
 3800menuptr%+=28:maxx%=LENmenutitle$
 3810REPEATitem$=FNpar(menu$,",",i%)
 3820PROCmenuitem(item$)
 3830UNTIL item$=""
 3840m%=menufree%:m%!16=(maxx%*8+6)*2
 3850menufree%=menuptr%
 3860=m%
 3870
 3880DEFPROCmenuitem(text$)
 3890IFtext$=""menuptr%!-24=(menuptr%!-24)OR&80:ENDPROC
 3900IFmenuptr%+24>menuend%THENERROR99,"Menu area full"
 3910LOCALi%,flg%
 3920flg%=&00
 3930i%=INSTR(text$,">")
 3940IFi%>0subptr%=EVALMID$(text$,i%+1):text$=LEFT$(text$,i%-1)ELSEsubptr%=-1
 3950i%=INSTR(text$,"}")
 3960IFi%>0subptr%=EVALMID$(text$,i%+1):text$=LEFT$(text$,i%-1):flg%+=&08
 3970IFRIGHT$(text$,1)="#"text$=LEFT$(text$):flg%+=&02
 3980menuptr%!0=flg%:menuptr%!4=subptr%:menuptr%!8=&07000021
 3990IFLEFT$(text$,1)="$"THEN
 4000!menuptr%+=&04:menuptr%!8+=&100:i%=INSTR(text$,"(")
 4010IFi%>0THENL%=VALMID$(text$,i%+1):text$=LEFT$(text$,i%-1)ELSEL%=12
 4020menuptr%!12=EVALMID$(text$,2):menuptr%!16=-1:menuptr%!20=L%
 4030text$=STRING$(L%," ")
 4040ELSE
 4050IFLENtext$<=12THEN
 4060$(menuptr%+12)=text$
 4070ELSE
 4080I%=FNworkspace(LENtext$+1):$I%=text$
 4090menuptr%!12=I%:menuptr%!16=-1:menuptr%!20=LENtext$+1
 4100menuptr%!8=menuptr%!8 OR &100
 4110ENDIF
 4120IFLENtext$>maxx%maxx%=LENtext$
 4130ENDIF
 4140menuptr%+=24
 4150ENDPROC
 4160
 4170DEFFNworkspace(L%)
 4180IF curbuf%+L%>endbuf%ERROR99,"No more buffer space"
 4190curbuf%+=L%:=curbuf%-L%
 4200
 4210DEFPROCprep(menu%,tree%)
 4220LOCALI%,T$
 4230PROCclearts(menu%)
 4240CASEmenu%OF
 4250WHENm_main%:PROCmp_main
 4260ENDCASE
 4270ENDPROC
 4280
 4290DEFPROCmp_main
 4300LOCALn%,f$,s%,t%
 4310IFtree%>0THEN
 4320IF!mlist%=1THEN
 4330n%=mlist%!4:PROCsetfile_at(n%,f$,s%,t%):PROCsaveset(f$,t%,n%,s%)
 4340ENDIF
 4350ENDIF
 4360ENDPROC
 4370
 4380DEFPROCpop(menu%,tree%)
 4390IFmenu%<0:ENDPROC
 4400PROCprep(menu%,tree%)
 4410SYS "Wimp_CreateMenu",,menu%,mx%-50,my%+32
 4420openmenu%=menu%
 4430ENDPROC
 4440
 4450DEFPROCnomenu
 4460SYS"Wimp_CreateMenu",,-1:openmenu%=-1
 4470ENDPROC
 4480
 4490DEFPROCmenuselect
 4500LOCALI%
 4510I%=0:REPEATmlist%!I%=q%!I%:I%+=4:UNTILq%!(I%-4)=-1
 4520PROCreadpointer
 4530CASEopenmenu%OF
 4540WHENm_main%:PROCm_main
 4550ENDCASE
 4560IFmb%=1THEN
 4570PROCpop(openmenu%,mlist%):ELSEPROCnomenu
 4580ENDIF
 4590ENDPROC
 4600
 4610DEFPROCm_main
 4620CASE!mlist%OF
 4630WHEN0:PROCdialogue(w_pinfo%)
 4640WHEN2:IFFNaltered_at:PROCqquit:ELSEPROCquit
 4650ENDCASE
 4660ENDPROC
 4670
 4680DEFPROCsubmenu(menu%,X%,Y%,q%)
 4690REM ;{{{{{{
 4700LOCALI%
 4710I%=0:REPEATmlist%!I%=q%!I%:I%+=4:UNTILq%!(I%-4)=-1
 4720PROCprep(openmenu%,mlist%)
 4730SYS"Wimp_CreateSubMenu",,menu%,X%,Y%
 4740ENDPROC
 4750
 4760DEFPROCclearts(mh%):LOCALI%:I%=mh%+28
 4770IFmh%<menustart%ORmh%>menuend%:ENDPROC
 4780REPEAT
 4790!I%=!I%ANDNOT1:I%!8=I%!8ANDNOT&400000:
 4800I%+=24:UNTILI%!-24AND&80
 4810ENDPROC
 4820
 4830DEFPROCshade(mh%,I%)
 4840mh%!(28+8+24*I%)=mh%!(28+8+24*I%)OR&400000:ENDPROC
 4850
 4860DEFPROCtick(mh%,I%)
 4870mh%!(28+24*I%)=mh%!(28+24*I%)OR&01:ENDPROC
 4880
 4890DEFFNcommand
 4900LOCALT%,I%,T$
 4910SYS"OS_GetEnv" TO T$
 4920PROCstrip(T$)
 4930=T$
 4940
 4950DEFFNparam
 4960LOCALI%,T$:T$=FNcommand
 4970I%=INSTR(T$," -quit "):IFI%=0:=""
 4980T$=MID$(T$,I%+7):PROCstrip(T$)
 4990I%=INSTR(T$," "):IFI%>0T$=MID$(T$,I%+1):PROCstrip(T$):ELSE=""
 5000I%=INSTR(T$," "):IFI%>0T$=LEFT$(T$,I%-1):PROCstrip(T$)
 5010=T$
 5020
 5030DEFFNfiletype(T$)
 5040LOCALT%,U%:SYS "OS_File",5,T$ TOU%,,T%
 5050IFT%=0:=-1
 5060=(T%AND&FFF00)>>8
 5070 
 5080DEFPROCwaitpoint
 5090IF os%<>2 ENDPROC
 5100waiter%+=1
 5110SYS"Hourglass_On"
 5120ENDPROC
 5130
 5140DEFPROCnormpoint
 5150IF os%<>2 ENDPROC
 5160WHILEwaiter%>0:SYS"Hourglass_Off":waiter%-=1:ENDWHILE:waiter%=0
 5170ENDPROC
 5180
 5190DEFPROChelp
 5200ENDPROC
 5210
 5220DEFPROCdataloadack
 5230q%!0=20:q%!12=ref%:q%!16=4
 5240SYS"Wimp_SendMessage",17,q%,task%
 5250ENDPROC
 5260
 5270DEFPROCdatasaveack
 5280IFFNArfVar("Wimp$Scrap")="":ERROR99,"<Wimp$Scrap> not defined"
 5290!q%=60:q%!12=ref%:q%!16=2:q%!36=-1:$(q%+44)="<Wimp$Scrap>"+CHR$0
 5300SYS"Wimp_SendMessage",17,q%,task%:ackref%=q%!8
 5310ENDPROC
 5320
 5330DEFPROCsavereq(T$,t%,s%,r%)
 5340savereason%=r%
 5350q%!32=my%:q%!28=mx%:q%!24=mi%:q%!20=mh%
 5360q%!16=1:q%!12=0:q%!36=s%:q%!40=t%:!q%=60
 5370$(q%+44)=T$+CHR$0:SYS"Wimp_SendMessage",17,q%,q%!20,q%!24
 5380saveref%=q%!8:ENDPROC
 5390
 5400DEFPROCloadmess
 5410$(q%+44)=file$+CHR$0:!q%=60
 5420q%!12=ref%:q%!16=3:SYS"Wimp_SendMessage",17,q%,task%
 5430ackpending%=TRUE:ENDPROC
 5440 
 5450DEFFNzts(T%):LOCALT$:T$=""
 5460WHILE?T%<>0:T$+=CHR$?T%:T%+=1:ENDWHILE
 5470=T$
 5480
 5490DEFPROCgetct:SYS"Wimp_GetCaretPosition",,q%:ENDPROC
 5500
 5510DEFPROCsetct(h%,i%,o%):SYS "Wimp_SetCaretPosition",h%,i%,,,-1,o%
 5520ENDPROC
 5530
 5540DEFFNleaf(T$)
 5550LOCALI%,C%
 5560IF((INSTR(T$,".")=0)AND(INSTR(T$,":")=0))THEN=T$
 5570I%=LEN(T$)
 5580REPEAT
 5590C%=ASCMID$(T$,I%,1)
 5600I%-=1
 5610UNTIL(I%<=0ORC%=ASC"."ORC%=ASC":")
 5620IFI%>0THEN=RIGHT$(T$,LEN(T$)-I%-1)
 5630=T$
 5640
 5650DEFPROCscrsz
 5660!workbuf%=4:workbuf%!4=5:workbuf%!8=11:workbuf%!12=12:workbuf%!16=-1
 5670SYS "OS_ReadVduVariables",workbuf%,workbuf%+24
 5680q%!32=(workbuf%!32)<<(workbuf%!24):q%!36=(workbuf%!36)<<(workbuf%!28)
 5690ENDPROC
 5700
 5710DEFPROCsaveset(f$,T%,r%,s%)
 5720savereason%=r%:savef$=f$:savet%=T%:saves%=s%
 5730PROCseti(w_save%,2,f$):$FNva(w_save%,3)="sfile_"+RIGHT$("00"+STR$~T%,3)
 5740ENDPROC
 5750
 5760DEFPROCdragicon(h%,i%)
 5770LOCALx%,y%,ys%
 5780PROCgetw(h%):ys%=y1%-y0%:x%=bx%:y%=y0%-scy%
 5790PROCgeti(h%,i%):q%!8+=x%:q%!12+=y%+ys%:q%!16+=x%
 5800q%!20+=y%+ys%:q%!24=0:q%!28=0:!q%=0:PROCdrag5:ENDPROC
 5810
 5820DEFPROCdrag5:PROCreadpointer:PROCscrsz
 5830q%!24-=mx%-q%!8:q%!28-=my%-q%!12:q%!32+=q%!16-mx%:q%!36+=q%!20-my%
 5840q%!4=5:SYS"Wimp_DragBox",,q%:ENDPROC
 5850
 5860DEFPROCsavedata
 5870IFq%!12<>saveref%:ENDPROC
 5880file$=FNzts(q%+44)
 5890PROCsavedata1
 5900ENDPROC
 5910
 5920DEFPROCsavedata1:PROCclosew(w_save%)
 5930PROCsavefile(savereason%,file$)
 5940savereason%=-1:PROCloadmess
 5950ENDPROC
 5960
 5970DEFPROCprequit
 5980IFFNaltered_at:PROCackrec:PROCqquit
 5990ENDPROC
 6000
 6010DEFPROCackrec:q%!12=ref%:SYS "Wimp_SendMessage",19,q%,task%
 6020DEFPROCqquit:PROCstop(1,"Lose screen and quit Atelier",as$,-1)
 6030ENDPROC
 6040 
 6050DEFPROCenter_atelier
 6060LOCALERROR:ONERRORLOCAL:RESTOREERROR:PROCrestorewimp:ERRORERR,REPORT$
 6070enter%=0:PROCrun_at:PROCrestorewimp:ENDPROC
 6080
 6090DEFPROCsavefile(n%,f$)
 6100LOCALERROR:ONERRORLOCAL:RESTOREERROR:PROCrestorewimp:ERRORERR,REPORT$
 6110PROCsave_at(n%,f$):PROCrestorewimp:ENDPROC
 6120
 6130DEFPROCsavewimp:IFos%=1:ENDPROC
 6140IF wimpsaved% THEN ENDPROC
 6150wimpsaved%=TRUE
 6160LOCALI%,J%:REM SYS"Wimp_CommandWindow",1
 6170PROCnormpoint:mode%=MODE:PROCmode15
 6180*fx229
 6190ENDPROC
 6200
 6210DEFPROCrestorewimp:IFos%=1:ENDPROC
 6220IF NOT wimpsaved% THEN ENDPROC
 6230wimpsaved%=FALSE
 6240*fx229,1
 6250SYS "Wimp_CommandWindow",-1
 6260SYS "Wimp_SetMode",mode%:OFF:SYS"Wimp_ForceRedraw",-1,-1E9,-1E9,1E9,1E9
 6270ENDPROC
 6280
 6290DEFPROCmode15
 6300LOCALERROR
 6310ONERRORLOCAL:RESTOREERROR:ERROR99,"Atelier needs to use MODE 15 and there is not enough RAM! You must use the task manager to make at least 160k of screen available"
 6320MODE15:ENDPROC
 6330
 6340DEFPROCfindmos:os%=1
 6350LOCALERROR:ONERRORLOCAL:RESTOREERROR:ENDPROC
 6360RESTORE+1
 6370os%=2:ENDPROC
 6380
 6390DEFPROCcheckmos:os%=1
 6400LOCALERROR:ONERRORLOCAL:RESTOREERROR:PROCmos12:END
 6410RESTORE+1
 6420os%=2:ENDPROC
 6430
 6440DEFPROCmos12
 6450MODE15:OFF
 6460SYS &400C0
 6470enter%=0
 6480PROCrun_at
 6490MODE12:*desktop
 6500END
 6510
 6520DEFPROCstore(RETURN A$,f$)
 6530LOCALI%,C%,T$:T$=f$:IFT$>""THEN
 6540FORI%=1TOLENT$:C%=ASCMID$(T$,I%)
 6550IFC%>64ANDC%<91MID$(T$,I%,1)=CHR$(C%+32)
 6560NEXT
 6561ENDIF
 6570IFINSTR(T$,"$scrap>")=0A$=f$
 6571ENDPROC
 6580
 6590
 6600REM ----ATELIER BITS-------------------------------------------------
 6610DEFPROCrun_at
 6620REM ;{{ here, copy the background screen to the foreground
 6630REM ;{{ and do the biz. NB all ERROR traps etc MUST be LOCAL
 6640PROCsavewimp
 6650PROCnormpoint
 6660VDU 23,255,255,255,255,255,255,255,255,255
 6670cat%!0=148
 6680cat%!4=-1
 6690SYS "OS_ReadVduVariables",cat%,cat%
 6700!topscreen%=!cat%
 6710PROCunsetsoftkeys
 6720SYS "OS_RemoveCursors"
 6730PROCsetvectors
 6740CALL undorestore%
 6750PROCenter_action
 6760CALL colour%
 6770CALL mousecolour%
 6780CALL liftdown%
 6790VDU5:CALL helptext%
 6800PROCupdate
 6810PROCatelier
 6820CALL liftup%
 6830CALL undosave%
 6840PROCunsetvectors
 6850REM PROCsetsoftkeys
 6860PROCrestorewimp
 6870ENDPROC
 6880
 6890DEFPROCsetvectors
 6900IF vectors_set% THEN ENDPROC
 6910SYS "OS_Claim",&1D,duff_call%,0
 6920PROCset_abort_traps
 6930vectors_set%=TRUE
 6940ENDPROC
 6950
 6960DEFPROCunsetvectors
 6970IF NOT vectors_set% THEN ENDPROC
 6980SYS "OS_Release",&1D,duff_call%,0
 6990PROCunset_abort_traps
 7000vectors_set%=FALSE
 7010ENDPROC
 7020
 7030DEFPROCenter_action
 7040ON ERROR LOCAL:PROCerror_at:ENDPROC
 7050CASE enter% OF
 7060WHEN0:REM no action,just enter
 7070WHEN1:REM compacted load
 7080*UnDefine
 7090*SetPosition 0 1023
 7100G%=cat%:$cat%=f$:CALL com_update_info%
 7110OSCLI"PlotFile "+f$
 7120enter%=0:PROCstore($screen_str%,f$)
 7130WHEN2:$file_str%=f$  :REM sprites - handled by atelier
 7140WHEN3:$cat%=f$
 7150G%=cat%
 7160CALL compactedload%
 7170CALL undosave%
 7180enter%=0
 7190ENDCASE
 7200ENDPROC
 7210
 7220DEFFNaltered_at
 7230REM ;{{ return TRUE if you would lose any data if they quit just
 7240REM ;{{ now (ie they have altered screen/sprites/brushes etc
 7250REM ;{{ since last save/load. Just return FALSE if you don't care
 7260=TRUE
 7270
 7280DEFFNokfile_at(f$,s%,t%)
 7290IF t%=&D7E OR t%=&D3A OR t%=&D7F OR t%=&D39 OR t%=&FF9 OR t%=&DE2 THEN =TRUE ELSE =FALSE
 7300
 7310DEFPROCloadfile(f$,s%,t%)
 7320LOCALERROR:ONERRORLOCAL:RESTOREERROR:PROCrestorewimp:ERRORERR,REPORT$
 7330PROCload_at(f$,s%,t%):PROCrestorewimp:ENDPROC
 7340
 7350DEFPROCload_at(f$,s%,t%)
 7360CASE t% OF
 7370WHEN&D7F,&FF9,&DE2
 7380SYS "OS_Find",&40,f$ TO hdl%
 7390SYS "OS_GBPB",4,hdl%,cat%,1
 7400SYS "OS_Find",&00,hdl%
 7410ENDCASE
 7420CASE t% OF
 7430WHEN&D7E:OSCLI"LOAD "+f$+" "+STR$~(brush%):PROCstore($brush_str%,f$)
 7440WHEN&D3A:OSCLI"LOAD "+f$+" "+STR$~(brpatt%):PROCstore($pattern_str%,f$):!pm%=1
 7450WHEN&D7F:enter%=1:PROCrun_at
 7460WHEN&D39:PROCformula_load(f$)
 7470WHEN&FF9:enter%=2:PROCstore($sprite_str%,f$):PROCrun_at
 7480WHEN&DE2:enter%=3:PROCstore($screen_str%,f$):PROCrun_at
 7490ENDCASE
 7500ENDPROC
 7510
 7520DEFPROCsave_at(n%,f$)
 7530CALL savecheck%
 7540CASE n% OF
 7550WHEN0,1,2,3
 7560SYS "OS_File",&0A,f$,&FFF,,cat%,cat%   :REM saves dummy file
 7570PROCsavewimp
 7580cat%!0=148:cat%!4=-1
 7590SYS "OS_ReadVduVariables",cat%,cat%
 7600!topscreen%=!cat%:SYS "OS_RemoveCursors"
 7610CALL undorestore%
 7620CASE n% OF
 7630WHEN0:PROCcompressedsave(f$):PROCstore($screen_str%,f$)
 7640WHEN1:OSCLI"SCREENSAVE "+f$:PROCstore($screen_str%,f$)
 7650WHEN2:PROCcompactedsave(0,f$):PROCstore($screen_str%,f$)
 7660WHEN3:PROCcompactedsave(1,f$):PROCstore($screen_str%,f$)
 7670ENDCASE
 7680PROCrestorewimp
 7690WHEN4:OSCLI"SSAVE "+f$:PROCstore($sprite_str%,f$)
 7700WHEN5:OSCLI"SAVE "+f$+" "+STR$~(brush%)+" +2000":PROCstore($brush_str%,f$)
 7710OSCLI"SETTYPE "+f$+" D7E"
 7720WHEN6:OSCLI"SAVE "+f$+" "+STR$~(brpatt%)+" +2000":PROCstore($brush_str%,f$)
 7730OSCLI"SETTYPE "+f$+" D3A"
 7740ENDCASE
 7750ENDPROC
 7760
 7770DEFPROCsetfile_at(n%,RETURN f$,RETURN s%,RETURN t%)
 7780REM ;{{ setup up f$ to be filename, s% to estimated size and t%
 7790REM ;{{ to filetype for file of internal type n%
 7800REM ;{{ NB s%<0 means unknown size, try it anyway
 7810CASE n% OF
 7820WHEN0:t%=&DE2:f$=$screen_str% :s%=&28000
 7830WHEN1:t%=&FF9:f$=$screen_str% :s%=&28000
 7840WHEN2:t%=&D7F:f$=$screen_str% :s%=-1
 7850WHEN3:t%=&D7F:f$=$screen_str% :s%=-1
 7860WHEN4:t%=&FF9:f$=$sprite_str% :SYS "OS_SpriteOp",8TO,,,,,s%
 7870WHEN5:t%=&D7E:f$=$brush_str%  :s%=&2000
 7880WHEN6:t%=&D3A:f$=$pattern_str%:s%=&2000
 7890ENDCASE
 7900ENDPROC
 7910
 7920DEFPROCanimate
 7930FOR count=0 TO 359 STEP 18
 7940MX=640:MY=512:GCOL128+(!pc%AND63) TINT (!pc%AND192):CLS
 7950step%=happenstep%:PROCscreen_select
 7960PROCcompactedsave(1,"Frame"+STR$(count DIV 18))
 7970NEXT
 7980ENDPROC
 7990
 8000DEFPROCatelier
 8010angle=0
 8020*FX 15,0
 8030REM                    ---------MAIN LOOP-----------
 8040ON ERROR LOCAL PROCerror_at
 8050REPEAT
 8060REPEAT
 8070mrctx1%=0
 8080mrcty1%=0
 8090mrctx2%=1279
 8100mrcty2%=1023
 8110CASE !Ac% OF
 8120WHEN35,36:mrctx1%=32:mrcty1%=32:mrctx2%=1216:mrcty2%=960
 8130WHEN24:IF step%>2 THEN PROCsetlimits(xs%,-ys%)
 8140WHEN71:IF step%>2 THEN mrctx1%=x1%:mrcty1%=y2%:mrctx2%=xs%:mrcty2%=-ys%
 8150WHEN75:IF step%>2 THEN mrctx2%-=xs%DIV2:mrcty2%+=ys%
 8160WHEN37,40:IF FNsprites>0 THEN CALL locatesprite%:SYS &2E,40,,!sprstr TO ,,,xs%,ys%:PROCsetlimits(xs%*2,ys%*4)
 8170ENDCASE
 8180MOUSE RECTANGLE mrctx1%,mrcty1%,mrctx2%,mrcty2%
 8190PROCmouse_handle
 8200IF MB=2 OR enter% THEN PROCmenucalled
 8210AcCODE%=?(!step_codes)
 8220happenstep%=(AcCODE% AND 15)
 8230stepcode%=?(!step_codes+step%)
 8240IF (!pm%=2) AND (stepcode% AND 64) THEN step%+=1:PROCcopysort:F%=step%:CALL helpstep%:GOTO 8230
 8250CASE !Ac% OF
 8260WHEN60,61,62,63,64,65
 8270CASE !rect_brush_mode OF
 8280WHEN0:AcCODE%=AcCODE% AND 191
 8290WHEN1:happenstep%+=1:AcCODE%=AcCODE% OR 64
 8300IF step%=2 THEN stepcode%=stepcode% OR 16
 8310WHEN2:happenstep%+=1:AcCODE%=AcCODE% AND 191
 8320IF step%=1 THEN stepcode%=stepcode% OR 16+32
 8330ENDCASE
 8340ENDCASE
 8350IF (AcCODE% AND 64) AND step%=happenstep% THEN step%=1:PROCBUTOFF(4):F%=step%:CALL helpstep%
 8360IF NOT (AcCODE% AND 64) AND step%=happenstep% THEN step%=step%-1:F%=step%:CALL helpstep%
 8370CASE TRUE OF
 8380WHEN(NOT (AcCODE% AND 64)) AND (step%=happenstep%-1):
 8390IF (MB AND 4)=4 THEN step%=step%+1:F%=step%:CALL helpstep%
 8400OTHERWISE
 8410IF NOT select THEN IF (MB AND 4)=(step% AND 1)*4 THEN step%=step%+1:F%=step%:CALL helpstep%
 8420IF select THEN IF (MB AND 4) THEN step%=step%+1:F%=step%:CALL helpstep%:PROCBUTOFF(4)
 8430ENDCASE
 8440*FX 229,1
 8450IF step%=happenstep% THEN *FX 229,0
 8460inaction=!Ac%
 8470IF (MB AND 1)=1 THEN PROCadjustpressed
 8480E%=-1
 8490IF stepcode% AND 16 THEN
 8500CASE step% OF
 8510WHEN0,1:C%=MX-x0%:D%=MY-y0%
 8520WHEN2,3:C%=MX-x1%:D%=MY-y1%
 8530WHEN4,5:C%=MX-x3%:D%=MY-y3%
 8540ENDCASE
 8550IF stepcode% AND 32 THEN B%=C%*2:C%=D%:CALL calc_radius%:C%=!RESULTX/2:E%=2 ELSE E%=0
 8560ENDIF
 8570A%=MX:B%=MY:CALL help%
 8580IF step%=happenstep% AND (AcCODE% AND 128) THEN
 8590WAIT
 8600CALL liftup%
 8610CALL colour%
 8620IF !pm%>0 AND (AcCODE% AND &20) THEN CALL bit_map_scan_A%
 8630PROCscreen_select
 8640IF !pm%>0 AND (AcCODE% AND &20) THEN CALL bit_map_pattern%
 8650IF (AcCODE% AND 16) THEN CALL show_thru%
 8660CALL liftdown%
 8670ELSE
 8680GCOL 3,63 TINT 192
 8690PROCscreen_select
 8700ENDIF
 8710keypress%=INKEY(0):IF keypress%>0 THEN PROCkeypressed
 8720IF inaction<>!Ac% THEN PROCprocess_new_action
 8730IF step%<>oldstep% THEN F%=step%:CALL helpstep%
 8740oldstep%=step%
 8750UNTIL !Ac%=20
 8760PROCreset_action
 8770IF os%=1 THEN
 8780IF testing THEN
 8790PROCerrorhandle(3,"Where to Boss","Basic Program|Source Code|Don't Exit",selected)
 8800ELSE
 8810PROCerrorhandle(2,"Do you really wish to exit from ATELIER","CONFIRM",selected)
 8820ENDIF
 8830ELSE selected=1
 8840ENDIF
 8850IF testing THEN UNTIL selected=1 OR selected=2
 8860IF NOT testing THEN UNTIL selected=1
 8870REM          -------------END OF MAIN LOOP ----------
 8880IF NOT testing OR os%=2 THEN ENDPROC
 8890PROCtidy_at
 8900*FX 15,0
 8910CASE selected OF
 8920WHEN1:
 8930*KEY 4 SAVE|MRUN|M
 8940*FX 138,0,69
 8950*FX 138,0,68
 8960*FX 138,0,46
 8970*FX 138,0,46
 8980*FX 138,0,13
 8990END
 9000WHEN2:
 9010*KEY 4 RUN|M
 9020PROCstring_to_buffer("LO. ""<Ateli*$Dir>.Sour*.Sou*"""+CHR$(13)+"ED.."+CHR$(13))
 9030END
 9040ENDCASE
 9050ENDPROC
 9060
 9070DEFPROCadjustpressed
 9080IF !Ac%=82 OR !Ac%=59 THEN
 9090PROCreset_action
 9100ELSE
 9110IF (MB AND 1)=1 AND step%>1 THEN step%=step%-1:PROCBUTOFF(1):PROCupdate:F%=step%:CALL helpstep%
 9120ENDIF
 9130ENDPROC
 9140
 9150DEFPROCreset_action
 9160!Ac%=!oldaction%
 9170ENDPROC
 9180
 9190DEFPROCmouse_handle
 9200MOUSE MX,MY,MB:IF mgs THEN PROCmousegrid
 9210IF !left_handed THEN CASE MB OF
 9220WHEN%001:MB=%100
 9230WHEN%011:MB=%110
 9240WHEN%100:MB=%001
 9250WHEN%110:MB=%011
 9260ENDCASE
 9270IF NOT INKEY(-97) THEN ENDPROC
 9280IF INKEY(-1) THEN xrst%=MX:yrst%=MY ELSE MOUSE TO xrst%,yrst%
 9290ENDPROC
 9300
 9310DEF PROCmousegrid
 9320MX=((MX+mousegrid DIV 2) DIV mousegrid)*mousegrid
 9330MY=((MY+mousegrid DIV 2) DIV mousegrid)*mousegrid
 9340IF MX<mrctx1% THEN MX=mrctx1%
 9350IF MY<mrcty1% THEN MY=mrcty1%
 9360IF MX>mrctx2% THEN MX=mrctx2%
 9370IF MY>mrcty2% THEN MY=mrcty2%
 9380POINT TO MX,MY
 9390ENDPROC
 9400
 9410DEFPROCset_action
 9420CASE !Ac% OF
 9430WHEN57,59,82,43
 9440OTHERWISE
 9450!oldaction%=!Ac%
 9460ENDCASE
 9470ENDPROC
 9480
 9490DEFPROCBUTOFF(M)
 9500REPEAT
 9510MOUSE DX,DY,MB
 9520IF !left_handed THEN CASE MB OF
 9530WHEN%001:MB=%100
 9540WHEN%011:MB=%110
 9550WHEN%100:MB=%001
 9560WHEN%110:MB=%011
 9570ENDCASE
 9580UNTIL (MB AND M)=0
 9590ENDPROC
 9600
 9610DEFPROCkeypressed
 9620*FX 15,0
 9630CASE CHR$(keypress%) OF
 9640WHEN"*":enter%=5
 9650ENDCASE
 9660IF (keypress% AND 128)=0 THEN ENDPROC
 9670CASE keypress% OF
 9680WHEN&80,&90,&A0,&B0        :REM f0-print key
 9690CALL liftup%
 9700CALL undosave%
 9710PROCpoint(0,0)
 9720OSCLI(funcprint$)
 9730IF MODE<>15 THEN MODE 15:CALL undorestore%
 9740PROCupdate
 9750CALL liftdown%
 9760WHEN&B1
 9770CALL undosave%
 9780*FX229
 9790MODE 0
 9800VDU2
 9810FOR !Ac%=0 TO 82
 9820!rect_brush_mode=(!Ac% MOD 3)
 9830PRINT"Function ";!Ac%
 9840PRINT
 9850CALL helptext%
 9860PRINT
 9870NEXT
 9880VDU3
 9890MODE 15
 9900CALL undorestore%
 9910WHEN&81,&91,&A1,&B1:CALL liftup%:CALL undorestore%:CALL liftdown%
 9920WHEN&82,&92,&A2,&B2:step%=1:PROCset_action:!Ac%=57
 9930WHEN&83,&93,&A3,&B3:IF !Ac%<>82 THEN step%=1:PROCset_action:!Ac%=82 ELSE !brushsel%=((!brushsel%+1) AND 15)
 9940WHEN&84,&94,&A4,&B4:!pm%=0:!pc%=POINT(MX,MY)+TINT(MX,MY):PROCupdate
 9950WHEN&85,&95,&A5,&B5
 9960IF !helpstatus% THEN CALL helpon%:VDU5:CALL helptext%:F%=step%:CALL helpstep% ELSE CALL helpoff%
 9970WHEN&86,&96,&A6,&B6
 9980mgs=1-mgs:PROCupdate
 9990WHEN&87,&97,&A7,&B7
10000IF testing AND keypress%=&A7 THEN
10010*FX229
10020CALL liftup%:PROCanimate:CALL liftdown%
10030ELSE
10040CALL liftup%
10050CALL undosave%
10060CALL liftdown%
10070ENDIF
10080WHEN&88,&98,&A8,&B8
10090IF (testing AND keypress%=&88) OR (NOT testing) THEN PROCset_action:!Ac%=20
10100IF testing AND keypress%=&98 THEN os%=1:!Ac%=20
10110IF testing AND keypress%=&A8 THEN CALL liftup%:A%=!presentmenu%:G%=MX:H%=MY:CALL drawmenu%:CALL liftdown%
10120ENDCASE
10130keyin%=(keypress%AND&F)-9
10140IF keyin%>4 THEN keyin%=-1
10150IF keyin%>-1 THEN
10160keylevel%=(((keypress%AND&F0)>>4)MOD4)
10170IF INKEY(-3) THEN function%(keyin%,keylevel%)=!Ac% ELSE !Ac%=function%(keyin%,keylevel%):PROCupdate
10180ENDIF
10190ENDPROC
10200
10210DEFPROCprocess_new_action
10220IF !Ac%=33 THEN PROCreset_action
10230VDU5:CALL helptext%:F%=1:CALL helpstep%:step%=1:PROCupdate
10240ENDPROC
10250
10260DEFPROCmenucalled
10270PROCset_action
10280MOUSE RECTANGLE 0,0,1279,1023
10290CALL liftup%
10300!mousebuts=0
10310IF ?(!actionsave)<255 THEN ?(!actionsave)=!Ac%
10320GCOL 128+(BACKCOL% AND 63) TINT (BACKCOL% AND 192)
10330CASE enter% OF
10340WHEN2:A%=7:CALL downtree%:REM sprites
10350WHEN5:A%=28:CALL downtree%:REM oscli
10360ENDCASE
10370IF enter%=4 AND !Ac%=12 THEN A%=9 ELSE A%=0
10380G%=MX:H%=MY:CALL menusystem%
10390IF !Ac%=33 THEN PROCreset_action
10400step%=1:PROCupdate:PROCBUTOFF(7)
10410IF !Ac%<>43 THEN
10420CALL liftdown%
10430VDU5:CALL helptext%
10440F%=step%:CALL helpstep%
10450ENDIF
10460IF ?(!actionsave)<255 THEN !oldaction%=?(!actionsave)
10470enter%=0
10480ENDPROC
10490
10500DEFPROCiniterror
10510IF MODE=15 THEN MODE 0
10520VDU 7
10530IF ERR=17 THEN PRINT"Escaped!":END
10540PRINTREPORT$;" at line ";ERL
10550IF NOT testing THEN END
10560*FX 15,0
10570A=GET
10580PROCstring_to_buffer("ED. "+STR$(ERL)+CHR$(13))
10590END
10600ENDPROC
10610
10620DEFPROCstring_to_buffer(tran$)
10630REPEAT
10640OSCLI"FX 138,0,"+STR$(ASC(LEFT$(tran$,1)))
10650tran$=MID$(tran$,2)
10660UNTIL tran$=""
10670ENDPROC
10680
10690DEFPROCtidy_at
10700PROCsetsoftkeys
10710PROCunsetvectors
10720ENDPROC
10730
10740DEFPROCunsetsoftkeys
10750FOR R=221 TO 228:OSCLI"FX "+STR$(R)+",2":NEXT
10760*FX 219,9
10770ENDPROC
10780
10790DEFPROCsetsoftkeys
10800FOR R=221 TO 228:OSCLI"FX "+STR$(R)+",1":NEXT
10810*FX 219,9
10820ENDPROC
10830
10840DEFPROCinit_at
10850IF testing THEN ON ERROR LOCAL PROCiniterror
10860RESTORE10840
10870PNglass=2:PNbrush=3:PNflood=4:PNpencil=5:PNspray=6
10880PNnormal=7:PNspriteop=8:PNcalculator=14:PNkeyboard=15:PNA=16:PNstopped=17
10890PNquestion=18:PNhand=19
10900com_gx1%=0:com_gy1%=0:com_gx2%=1278:com_gy2%=1020
10910REM *FX 229,1
10920PROCunsetsoftkeys
10930K=1024
10940DIM BLOW% 1*K,cat% 1*K,STORE% 160*K,brush% 8*K,brpatt% 8*K,cycle% 128,file_icons% 3*K,log_table% 256,log_scale% 1040,formnames% 1*K,fontlist% 1*K
10950DIM skel% 1764*10,sqr% &5201,sin% 360*4,tan% 90*4,numbers% &720,screen_str% 256,pattern_str% 256,brush_str% 256,sprite_str% 256,file_str% 256
10960DIM behind% 256,flags% 4,PO% &14DC,sprstr% 30,fontstr% 45,presentfont% 80,xget% 800,yget% 800,BUFF% 1*K,BUFFER% 35328,freetable% 256,abts% 16
10970DIM L(640),A%(641,1),B%(256,1),function%(4,3),formulas$(10)
10980OSCLI"LOAD "+FNdir+"POINTER "+STR$~(PO%)
10990IF os%=1 THEN PROCpoint(0,1)
11000s%=OPENIN(FNdir+"code*"):sz%=EXT#s%:CLOSE#s%
11010DIM code% sz%:OSCLI"LOAD "+FNdir+"code* "+STR$~(code%)
11020pl$="LOAD "+FNdir
11030OSCLIpl$+"!Brushes "+STR$~(brush%)
11040OSCLIpl$+"!Patterns "+STR$~(brpatt%)
11050*Com_Open <Atelier$Dir>.Sprites
11060PROCin(file_icons%,"40 8")
11070PROCin(numbers%,"12 8")
11080PROCin(BUFFER%,"384 92")
11090*Com_Close
11100PROCcodevars
11110IF os%=1 THEN PROCpoint(0,0)
11120$screen_str%="Screen"
11130$pattern_str%="Patterns"
11140$brush_str%="Brushes"
11150$sprite_str%="SpriteFile"
11160$sprstr%="new_sprite"
11170g_sprite$="new_sprite"
11180cycle%!0=16
11190FOR R=0 TO 3
11200READ o%
11210FOR R1=0 TO 3
11220!(cycle%+R*16+R1*4+4)=o%+R1
11230NEXT:NEXT
11240FOR R=0 TO 255:?(behind%+R)=255:NEXT
11250FOR R=1 TO 256:?(log_table%+R-1)=20+(R^2)/300:NEXT:FOR R=0 TO 5248:!(sqr%+R*4)=SQR(R*1024):NEXT
11260FOR R=0 TO 359:!(sin%+R*4)=SINRAD(R)*65536:NEXT
11270FOR R=0 TO 89:!(tan%+R*4)=TANRAD(R)*65536:NEXT
11280DATA 0,44,208,252
11290DATA 4,364,408,584,224,584,72,456,72
11300READ numlist
11310!bolpoint%=numlist
11320FOR R=0 TO !bolpoint%-1
11330READ X,Y
11340!(xget%+R*4)=X:!(yget%+R*4)=Y+4
11350NEXT
11360?(flags%)=255
11370?(flags%+1)=255
11380?(flags%+2)=255
11390?(flags%+3)=255
11400!sprstr=sprstr%
11410!brpatt=brpatt%
11420!flags=flags%
11430!cat=cat%
11440!behind=behind%
11450!brushshapes=brush%
11460!BUFF=BUFF%
11470!FLOB=PO%
11480!bolx=xget%
11490!boly=yget%
11500!fontstr=fontstr%
11510!presentfont=presentfont%
11520!STORE=STORE%
11530!freetable=freetable%
11540!put=BUFFER%
11550!cycle=cycle%
11560!screen_str=screen_str%
11570!pattern_str=pattern_str%
11580!brush_str=brush_str%
11590!sprite_str=sprite_str%
11600!file_icons=file_icons%
11610!log_table=log_table%
11620!log_scale=log_scale%
11630!numbers=numbers%
11640!sqr=sqr%
11650!sin=sin%
11660!tan=tan%
11670!file_str=file_str%
11680!formnames=formnames%
11690!skel=skel%
11700!fontlist=fontlist%
11710LOCAL ERROR
11720ON ERROR LOCAL $fontlist%="Font Disk Not Present"+CHR$(0):GOTO 11740
11730CALL initialisation%
11740RESTORE ERROR
11750PROCcheckdumper
11760xrst%=640:yrst%=512
11770x0%=0:y0%=0:x1%=0:y1%=0
11780x2%=0:y2%=0:x3%=0:y3%=0
11790x4%=0:y4%=0:x5%=0:y5%=0
11800actionflags%=8:actionstep%=3
11810xs%=0:ys%=0:oldstep%=0
11820step%=1:vectors_set%=FALSE
11830wedge%=0:col%=0
11840psizex%=292:psizey%=309
11850xpsize%=-1:ypsize%=-1
11860mgs=FALSE:mcs=FALSE
11870mousegrid=32:select=TRUE
11880P%=formnames%
11890[OPT 0
11900EQUB 1
11910EQUB 10
11920EQUS "Defineable"
11930]
11940formula$="SIN(YR)*50"
11950dummy=FNbuild_formula(formula$,0)
11960botrad$="1"
11970atext$="Atelier (C) Simon Clay 1989"
11980PROCremovekeymod
11990funcprint$="BYE"
12000eval$=""
12010!oldaction%=60
12020ENDPROC
12030
12040
12050DEFPROCin(b%,s$)
12060OSCLI"Com_Sprites $ "+STR$(b%)+" "+s$
12070ENDPROC
12080
12090DEFPROCremovekeymod
12100LOCAL ERROR
12110ON ERROR LOCAL ENDPROC
12120*Unplug InternationalKeyboard
12130ENDPROC
12140
12150DEFPROCset_abort_traps
12160abts%!0=!&C
12170abts%!4=!&10
12180abts%!8=!&14
12190FOR PASS=0 TO 2 STEP 2
12200P%=&C
12210[OPT PASS
12220B abt1%       ;sets abort on instuction fetch error trap
12230B abt2%       ;sets abort on data transfer error trap
12240B abt3%       ;sets address exception error trap
12250]NEXT
12260ENDPROC
12270
12280DEFPROCunset_abort_traps
12290!&0C=abts%!0
12300!&10=abts%!4
12310!&14=abts%!8
12320ENDPROC
12330
12340DEFPROCcodevars
12350
12360variablelocate%=code%+4*1
12370com_put%=code%+4*2
12380locatesprite%=code%+4*3
12390help%=code%+4*4
12400helpon%=code%+4*5
12410helpoff%=code%+4*6
12420helpstep%=code%+4*7
12430helptext%=code%+4*8
12440liftup%=code%+4*9
12450liftdown%=code%+4*10
12460colour%=code%+4*11
12470undorestore%=code%+4*12
12480undosave%=code%+4*13
12490drawmenu%=code%+4*14
12500menusystem%=code%+4*15
12510mousecolour%=code%+4*16
12520screen_select%=code%+4*17
12530spriteinit%=code%+4*18
12540magnify%=code%+4*19
12550uptree%=code%+4*20
12560putbackground%=code%+4*21
12570com_get%=code%+4*22
12580putscreenrectangle%=code%+4*23
12590brusheor%=code%+4*24
12600brushdraw%=code%+4*25
12610brushundo%=code%+4*26
12620spritepix%=code%+4*27
12630brushget%=code%+4*28
12640shapeget%=code%+4*29
12650spriteputerror%=code%+4*30
12660getspritefromscreen%=code%+4*31
12670priorityin%=code%+4*32
12680undochar%=code%+4*33
12690undobox%=code%+4*34
12700scanscreen%=code%+4*35
12710colourbyte%=code%+4*36
12720calc_intensity%=code%+4*37
12730splodgeread%=code%+4*38
12740setbord%=code%+4*39
12750abt1%=code%+4*40
12760FINDMENU%=code%+4*41
12770SKIPWORD%=code%+4*42
12780drawword%=code%+4*43
12790abt2%=code%+4*44
12800abt3%=code%+4*45
12810COLaverage%=code%+4*46
12820COLgcol%=code%+4*47
12830COLmode15_13resize%=code%+4*48
12840show_thru%=code%+4*49
12850swap_pixels%=code%+4*50
12860COLsmooth_rectangle%=code%+4*51
12870compactedsave%=code%+4*52
12880screensave%=code%+4*53
12890bit_map_scan_A%=code%+4*54
12900bit_map_scan_B%=code%+4*55
12910bit_map_pattern%=code%+4*56
12920vertical_fill%=code%+4*57
12930copy_fill%=code%+4*58
12940calc_radius%=code%+4*59
12950framedraw%=code%+4*60
12960spin_bottle%=code%+4*61
12970translate_point%=code%+4*62
12980anti_aliased_squash%=code%+4*63
12990screenload%=code%+4*64
13000initialisation%=code%+4*65
13010formframedraw%=code%+4*66
13020form_translate%=code%+4*67
13030convertmode%=code%+4*68
13040bytecolour%=code%+4*69
13050downtree%=code%+4*70
13060checksprites%=code%+4*71
13070compactedload%=code%+4*72
13080savecheck%=code%+4*73
13090fontlistinit%=code%+4*74
13100duff_call%=code%+4*75
13110draw_error_box%=code%+4*76
13120com_update_info%=code%+4*77
13130
13140CALLvariablelocate%
13150
13160c=!code%
13170
13180Ac%=c+4*0
13190printmenu%=c+4*1
13200pc%=c+4*2
13210brushsel%=c+4*3
13220helpstatus%=c+4*4
13230presentmenu%=c+4*5
13240bolpoint%=c+4*6
13250topscreen%=c+4*7
13260blowcol%=c+4*8
13270YES%=c+4*9
13280putit%=c+4*10
13290sprsel%=c+4*11
13300startx%=c+4*12
13310starty%=c+4*13
13320compaction%=c+4*14
13330sprpos=c+4*15
13340freecol=c+4*16
13350OUT=c+4*17
13360limtop=c+4*18
13370limbot=c+4*19
13380start=c+4*20
13390hlength=c+4*21
13400RESULTX=c+4*22
13410RESULTY=c+4*23
13420lastmenu=c+4*24
13430r1store=c+4*25
13440r0store=c+4*26
13450left_handed=c+4*27
13460compact3x4=c+4*28
13470inlaysed=c+4*29
13480sprstr=c+4*30
13490brpatt=c+4*31
13500flags=c+4*32
13510cat=c+4*33
13520behind=c+4*34
13530brushshapes=c+4*35
13540BUFF=c+4*36
13550FLOB=c+4*37
13560bolx=c+4*38
13570boly=c+4*39
13580fontstr=c+4*40
13590presentfont=c+4*41
13600STORE=c+4*42
13610freetable=c+4*43
13620put=c+4*44
13630cycle=c+4*45
13640rect_brush=c+4*46
13650screen_str=c+4*47
13660pattern_str=c+4*48
13670brush_str=c+4*49
13680sprite_str=c+4*50
13690help_text_data=c+4*51
13700file_icons=c+4*52
13710bit_map=c+4*53
13720fillstylepic=c+4*54
13730log_table=c+4*55
13740log_scale=c+4*56
13750
13760numbers=c+4*58
13770magnify_xpos=c+4*59
13780magnify_ypos=c+4*60
13790putpos=c+4*61
13800magputpos=c+4*62
13810sizex=c+4*63
13820sizey=c+4*64
13830sprsize=c+4*65
13840spritex=c+4*66
13850spritey=c+4*67
13860gtspritex=c+4*68
13870gtspritey=c+4*69
13880diskfontlistposition=c+4*70
13890catpos=c+4*71
13900fontsel=c+4*72
13910pattsel=c+4*73
13920treepos=c+4*74
13930matrixput=c+4*75
13940barval_red=c+4*76
13950barval_grn=c+4*77
13960barval_blu=c+4*78
13970scaleval_left=c+4*79
13980scaleval_right=c+4*80
13990cycleplace=c+4*81
14000cycledirection=c+4*82
14010cyclemode=c+4*83
14020pm%=c+4*84
14030mixval_red=c+4*85
14040mixval_grn=c+4*86
14050mixval_blu=c+4*87
14060mousex=c+4*88
14070mousey=c+4*89
14080mousebuts=c+4*90
14090magnification=c+4*91
14100magnify_xget=c+4*92
14110magnify_yget=c+4*93
14120magnify_status=c+4*94
14130HANG=c+4*95
14140rect_brush_mode=c+4*96
14150vacant=c+4*97
14160com_x1=c+4*98
14170com_y1=c+4*99
14180com_x2=c+4*100
14190com_y2=c+4*101
14200sprint_xsize=c+4*102
14210sprint_ysize=c+4*103
14220spritemask=c+4*104
14230fill_style=c+4*105
14240fill_prop=c+4*106
14250fill_logr=c+4*107
14260fill_dith=c+4*108
14270step_codes=c+4*109
14280border=c+4*110
14290sqr=c+4*111
14300actionsave=c+4*112
14310bottle=c+4*113
14320bot_tilt=c+4*114
14330bot_lean=c+4*115
14340bot_xout=c+4*116
14350bot_yout=c+4*117
14360line_selected=c+4*118
14370bot_finish=c+4*119
14380bot_xscale=c+4*120
14390bot_yscale=c+4*121
14400hangdelay=c+4*122
14410sin=c+4*123
14420tan=c+4*124
14430file_str=c+4*125
14440form=c+4*126
14450tilt=c+4*127
14460lean=c+4*128
14470rotation=c+4*129
14480xscale=c+4*130
14490yscale=c+4*131
14500hscale=c+4*132
14510form_list_pos=c+4*133
14520formnames=c+4*134
14530formula=c+4*135
14540skel=c+4*136
14550shade_range=c+4*137
14560min_shade=c+4*138
14570fontlist=c+4*139
14580oldaction%=c+4*140
14590
14600
14610BORDSIZE=28
14620WEDGESIZE=16
14630textcol%=0
14640BACKCOL%=202
14650TITLECOL%=0
14660BORDERCOL%=74
14670BORD1%=207
14680BORD2%=15
14690BORD3%=138
14700BORD4%=197
14710DIRECTORYCOL%=224
14720
14730ENDPROC
14740
14750DEFPROCscreen_select
14760
14770IF (!Ac%=1 OR !Ac%=2) AND step%=3 THEN
14780REPEAT
14790PROCmouse_handle
14800D%=!Ac%:E%=step%:F%=MB:G%=MX:H%=MY:CALL screen_select%
14810UNTIL MB=0
14820IF !Ac%=1 THEN x1%=MX:y1%=MY
14830ELSE
14840D%=!Ac%:E%=step%:F%=MB:G%=MX:H%=MY:CALL screen_select%
14850ENDIF
14860IF !YES% THEN
14870CASE step% OF
14880WHEN1:x1%=MX:y1%=MY
14890WHEN2:x2%=MX:y2%=MY
14900WHEN3:x3%=MX:y3%=MY
14910WHEN4:x4%=MX:y4%=MY
14920WHEN5:x5%=MX:y5%=MY
14930ENDCASE
14940ENDIF
14950IF !YES% THEN ENDPROC
14960
14970
14980CASE (!Ac%) OF
14990
15000REM Magnify
15010WHEN12:CASE step% OF
15020WHEN2:enter%=4
15030!magnify_xpos=MX DIV 2
15040!magnify_ypos=255-(MY DIV 4)
15050ENDCASE
15060
15070REM Fill
15080WHEN13:CASE step% OF
15090WHEN2:PROCpoint(0,0)
15100GCOL 128+POINT(MX,MY) TINT TINT(MX,MY)
15110CASE !fill_style OF
15120WHEN0:
15130IF !pm%>0 THEN CALL bit_map_scan_A%
15140PLOT&85,MX,MY
15150IF !pm%>0 THEN CALL bit_map_pattern%
15160WHEN1,2,3:
15170CALL bit_map_scan_A%
15180PLOT&85,MX,MY
15190CASE !fill_style OF
15200WHEN1,2:CALL vertical_fill%
15210WHEN3:A%=MX DIV2:B%=255-MY DIV4
15220CALL vertical_fill%
15230ENDCASE
15240ENDCASE
15250PROCupdate
15260ENDCASE
15270
15280REM Sprite Handling
15290WHEN14,16
15300GCOL 0,(textcol% AND 63) TINT (textcol% AND 192)
15310GCOL 0,128+(BACKCOL% AND 63) TINT (BACKCOL% AND 192)
15320SYS &2E,8 TO ,,,r3
15330SYS &2E,13,,sprstr%,30,!sprsel% TO ,,,leng
15340?(sprstr%+leng+1)=13
15350errorcheat=!Ac%
15360!putit%=1:PROCpoint(0,PNkeyboard)
15370PROCreset_action:CALL uptree%
15380A%=-128:B%=!starty%+56:E%=-1:CALL help%
15390A%=-128:B%=!starty%-!sizey-96:E%=-1:CALL help%
15400XP=!startx%+6:YP=!starty%-48:MOVE XP,YP:VDU 5:PRINT" ";
15410step%=1:PRINT$sprstr%:!starty%=!starty%-32
15420old$=$sprstr%:old$=LEFT$(old$,LEN(old$)-1)
15430go=FNinstring(33,126,"",out$,12)
15440CALL liftup%:CALL putbackground%
15450IF go THEN
15460CASE errorcheat OF
15470WHEN16:OSCLI "SCOPY "+old$+" "+out$:!sprsel%=r3+1:!sprpos=r3-5
15480WHEN14:OSCLI "SRENAME "+old$+" "+out$
15490ENDCASE
15500ENDIF
15510PROCreset_entry
15520
15530REM Save Compressed Screen
15540WHEN15:IF FNtext_entry(33,$screen_str%,255) THEN
15550PROCpoint(0,1):PROCcompressedsave(out$):$screen_str%=out$
15560ENDIF
15570PROCreset_entry
15580
15590REM Save Brushes
15600WHEN17:IF FNtext_entry(33,$brush_str%,255) THEN
15610PROCpoint(0,1):OSCLI "SAVE "+out$+" "+STR$~(brush%)+" +2000"
15620OSCLI("SETTYPE "+out$+" &D7E"):$brush_str%=out$
15630ENDIF
15640PROCreset_entry
15650
15660REM Name Sprite
15670WHEN18:IF FNtext_entry(33,g_sprite$,12) THEN g_sprite$=out$
15680!Ac%=38:PROCreset_entry
15690
15700REM Save Patterns
15710WHEN19:IF FNtext_entry(33,$pattern_str%,255) THEN
15720PROCpoint(0,1):OSCLI "SAVE "+out$+" "+STR$~(brpatt%)+" +2000"
15730OSCLI("SETTYPE "+out$+" &D3A"):$pattern_str%=out$
15740ENDIF
15750PROCreset_entry
15760
15770REM function 20 -- FINISH -- !
15780
15790REM Set Border Colour
15800WHEN21:PROCreset_action
15810CALL setbord%
15820
15830REM Ellipse
15840WHEN22:CASE step% OF
15850WHEN1:x1%=MX:y1%=MY
15860WHEN2:rd%=SQR((MX-x1%)^2+(MY-y1%)^2)
15870CIRCLE x1%,y1%,rd%
15880WAIT:WAIT:CIRCLE x1%,y1%,rd%
15890WHEN3:MOVE x1%,y1%:MOVE x1%+rd%,y1%:PLOT &C5,MX,MY
15900WAIT:WAIT:MOVE x1%,y1%:MOVE x1%+rd%,y1%:PLOT &C5,MX,MY
15910WHEN4:MOVE x1%,y1%:MOVE x1%+rd%,y1%:PLOT &C5,MX,MY
15920ENDCASE
15930
15940REM EllipseFill
15950WHEN23:CASE step% OF
15960WHEN1:x1%=MX:y1%=MY
15970WHEN2:rd%=SQR((MX-x1%)^2+(MY-y1%)^2)
15980CIRCLE x1%,y1%,rd%
15990WAIT:WAIT:CIRCLE x1%,y1%,rd%
16000WHEN3:MOVE x1%,y1%:MOVE x1%+rd%,y1%:PLOT &C5,MX,MY
16010WAIT:WAIT:MOVE x1%,y1%:MOVE x1%+rd%,y1%:PLOT &C5,MX,MY
16020WHEN4:MOVE x1%,y1%:MOVE x1%+rd%,y1%:PLOT &CD,MX,MY
16030ENDCASE
16040
16050REM fastcopy
16060WHEN24:CASE step% OF
16070WHEN1,2:PROCgetrectangle
16080WHEN3:MX=(MX DIV 2)*2:MY=(MY DIV 4)*4:PROCcopysort
16090RECTANGLE MX,MY,xs%-2,-(ys%+4)
16100WAIT:WAIT:RECTANGLE MX,MY,xs%-2,-(ys%+4)
16110WHEN4:
16120A%=x1%DIV2
16130B%=255-(y1%DIV4)
16140C%=xs%DIV2
16150D%=-ys%DIV4
16160E%=MX DIV2
16170F%=255-(MY DIV4)+(ys%+4)DIV4
16180G%=!pm%
16190CALL putscreenrectangle%
16200ENDCASE
16210
16220REM smearcopy
16230WHEN25:CASE step% OF
16240WHEN1,2:PROCgetrectangle
16250WHEN3:px1%=MX:py1%=MY
16260WHEN4:LINE px1%,py1%,MX,MY
16270WAIT:WAIT:LINE px1%,py1%,MX,MY
16280px2%=MX:py2%=MY
16290WHEN5:LINE px1%,py1%,px2%,py2%:DRAW MX,MY:DRAW px1%,py1%
16300WAIT:WAIT:LINE px1%,py1%,px2%,py2%:DRAW MX,MY:DRAW px1%,py1%
16310px3%=MX:py3%=MY
16320WHEN6:LINE px1%,py1%,px2%,py2%:DRAW px3%,py3%:DRAW MX,MY:DRAW px1%,py1%
16330WAIT:WAIT:LINE px1%,py1%,px2%,py2%:DRAW px3%,py3%:DRAW MX,MY:DRAW px1%,py1%
16340px4%=MX:py4%=MY
16350WHEN7:
16360PROCsmearscreen(x1%,y1%,xs%,ys%)
16370ENDCASE
16380
16390REM Parrallogram
16400WHEN26:CASE step% OF
16410WHEN1:px1%=MX:py1%=MY
16420WHEN2:LINE px1%,py1%,MX,MY
16430WAIT:WAIT:LINE px1%,py1%,MX,MY
16440px2%=MX:py2%=MY
16450WHEN3:LINE px1%,py1%,px2%,py2%:DRAW MX,MY:DRAW px1%-(px2%-MX),py1%-(py2%-MY):DRAW px1%,py1%
16460WAIT:WAIT:LINE px1%,py1%,px2%,py2%:DRAW MX,MY:DRAW px1%-(px2%-MX),py1%-(py2%-MY):DRAW px1%,py1%
16470WHEN4:LINE px1%,py1%,px2%,py2%:DRAW MX,MY:DRAW px1%-(px2%-MX),py1%-(py2%-MY):DRAW px1%,py1%
16480ENDCASE
16490
16500REM Parralogram fill
16510WHEN27:CASE step% OF
16520WHEN1:px1%=MX:py1%=MY
16530WHEN2:LINE px1%,py1%,MX,MY
16540WAIT:WAIT:LINE px1%,py1%,MX,MY
16550px2%=MX:py2%=MY
16560WHEN3:LINE px1%,py1%,px2%,py2%:DRAW MX,MY:DRAW px1%-(px2%-MX),py1%-(py2%-MY):DRAW px1%,py1%
16570WAIT:WAIT:LINE px1%,py1%,px2%,py2%:DRAW MX,MY:DRAW px1%-(px2%-MX),py1%-(py2%-MY):DRAW px1%,py1%
16580WHEN4:MOVE px1%,py1%:MOVE px2%,py2%:PLOT &75,MX,MY
16590ENDCASE
16600
16610REM Cls
16620WHEN28:
16630PROCerrorhandle(2,"Do you really wish to clear the screen to the current colour (NOTE You can UNDO afterwards)","CONFIRM",selected)
16640IF selected=1 THEN
16650CALL liftup%
16660CALL colour%:RECTANGLE FILL 0,0,1279,1023
16670CALL liftdown%
16680ENDIF
16690PROCreset_action
16700PROCupdate
16710
16720REM Filing (Believe it or not!)
16730WHEN29,30,31,32
16740PROCpoint(0,1)
16750errorcheat=!Ac%:filename$=$file_str%
16760PROCreset_action:CALL uptree%
16770CASE errorcheat OF
16780WHEN29:OSCLI "SLOAD "+filename$:$sprite_str%=filename$:!pm%=2
16790WHEN30:OSCLI "SMERGE "+filename$:$sprite_str%=filename$:!pm%=2
16800WHEN31
16810CALL liftup%:CALL undosave%
16820$screen_str%=filename$
16830CASE os% OF
16840WHEN1:B%=file_str%:CALL screenload%
16850OTHERWISE:OSCLI "SCREENLOAD "+$file_str%
16860ENDCASE
16870IF MODE<>15 THEN
16880SYS "OS_RemoveCursors"
16890CASE INKEY$(0) OF
16900WHEN"D","d"
16910FOR R=0 TO 15:COLOUR R,R<<4,R<<4,R<<4:NEXT
16920WHEN"I","i"
16930FOR R=0 TO 15:COLOUR 15-R,R<<4,R<<4,R<<4:NEXT
16940ENDCASE
16950LOCAL ERROR:err%=FALSE
16960ON ERROR LOCAL err%=TRUE:GOTO 16990
16970CALL convertmode%
16980$screen_str%=filename$
16990MODE15
17000RESTORE ERROR
17010SYS "OS_RemoveCursors"
17020CALL undorestore%
17030IF err% THEN ERROR ERR,REPORT$
17040ENDIF
17050CALL liftdown%
17060WHEN32:PROCformula_load(filename$)
17070ENDCASE
17080PROCupdate
17090
17100REM Function 33 = dummy
17110
17120REM Eval Expression
17130WHEN34:!putit%=1:PROCpoint(0,PNkeyboard)
17140PROCreset_action:CALL uptree%
17150A%=-128:B%=!starty%+56:E%=-1:CALL help%
17160A%=-128:B%=!starty%-!sizey-96:E%=-1:CALL help%
17170step%=1
17180REPEAT
17190dummy=FNinstring(32,126,eval$,out$,255):IF dummy THEN
17200!starty%-=32:PROCBUTOFF(7):eval$=out$
17210PROCeval_error_cheat:dummy=FNinstring(32,126,t$,t$,1)
17220ENDIF
17230!starty%+=32:PROCBUTOFF(7)
17240UNTIL NOT dummy
17250CALL liftup%:CALL putbackground%
17260PROCreset_entry
17270
17280REM Pattern & Brush get
17290WHEN35,36:CASE step% OF
17300WHEN1:RECTANGLE MX-32,MY-32,62,60
17310WAIT:WAIT:RECTANGLE MX-32,MY-32,62,60
17320WHEN2:A%=(MX DIV 2)-16:B%=255-((MY DIV 4)+7)
17330CASE !Ac% OF
17340WHEN35:CALL brushget%
17350WHEN36:CALL shapeget%
17360ENDCASE
17370ENDCASE
17380
17390REM Sprite put
17400WHEN37:IF FNput_check THEN
17410CASE step% OF
17420WHEN1:MX=(MX DIV 2)*2:MY=(MY DIV 4)*4:PROCspritesort
17430RECTANGLE MX,MY,xs%-2,-(ys%+4)
17440WAIT:WAIT:RECTANGLE MX,MY,xs%-2,-(ys%+4)
17450WHEN2:PROCspritesort
17460A%=x1%DIV2
17470B%=255-(y1%DIV4)
17480C%=xs%DIV2
17490D%=-ys%DIV4
17500E%=MX DIV2
17510F%=255-(MY DIV4)+(ys%+4)DIV4
17520G%=2
17530CALL putscreenrectangle%
17540ENDCASE
17550ENDIF
17560
17570REM Get Sprite
17580WHEN38:CASE step% OF
17590WHEN1,2:PROCgetrectangle
17600WHEN3:PROCsortcord
17610A%=x1%:B%=y1%:C%=x2%:D%=y2%
17620PROCpoint(0,0)
17630$sprstr%=g_sprite$
17640CALL getspritefromscreen%
17650PROCupdate
17660ENDCASE
17670
17680REM Save Sprites
17690WHEN39:IF FNtext_entry(33,$sprite_str%,255) THEN
17700PROCpoint(0,1):OSCLI "SSAVE "+out$:$sprite_str%=out$
17710ENDIF
17720PROCreset_entry
17730
17740REM Sprite smear
17750WHEN40:IF FNput_check THEN
17760CASE step% OF
17770WHEN1:MX=(MX DIV 2)*2:MY=(MY DIV 4)*4:PROCspritesort
17780RECTANGLE MX,MY,xs%-2,-(ys%+4)
17790WAIT:WAIT:RECTANGLE MX,MY,xs%-2,-(ys%+4)
17800WHEN2:PROCspritesort
17810OSCLI "SCHOOSE "+$sprstr%
17820GCOL 8,0
17830REPEAT
17840PROCmouse_handle
17850PLOT &ED,MX,MY
17860UNTIL MB=0
17870ENDCASE
17880ENDIF
17890
17900REM Printer Dumps
17910WHEN41
17920PROCreset_action
17930*FX 229
17940CALL liftup%
17950A$="SCREENDUMP 0 "+STR$~(!line_selected-1)
17960OSCLI A$
17970CALL liftdown%
17980PROCupdate
17990
18000REM Delete Sprite
18010WHEN42
18020IF FNsprites THEN
18030SYS &2E,13,,sprstr%,30,!sprsel% TO ,,,leng
18040?(sprstr%+leng+1)=13
18050PROCerrorhandle(2,"Do you really wish to delete the sprite "+$sprstr%,"Confirm",selected)
18060IF selected=1 THEN
18070OSCLI"SDELETE "+$sprstr%
18080IF !sprsel%>FNsprites THEN !sprsel%=FNsprites
18090IF !sprsel%<1 THEN !sprsel%=1
18100ENDIF
18110ELSE
18120VDU 7
18130ENDIF
18140PROCreset_action:PROCupdate
18150
18160REM oscli
18170WHEN43:
18180PROCoscliaction
18190PROCcheckdumper
18200
18210REM Anti aliased text to screen
18220WHEN44:CASE step% OF
18230WHEN1:PROCgetrectangle
18240WHEN2:PROCgetrectangle
18250WHEN3:PROCsortcord
18260tint%=((!pc% AND 192) >> 2)
18270red%=tint%+((!pc% AND 3) << 6)
18280grn%=tint%+((!pc% AND 12) << 4)
18290blu%=tint%+((!pc% AND 48) << 2)
18300tint2%=TINT(MX,MY) >> 2
18310back%=POINT(MX,MY)
18320red2%=tint2%+((back% AND 3) << 6)
18330grn2%=tint2%+((back% AND 12) << 4)
18340blu2%=tint2%+((back% AND 48) << 2)
18350FONT$=$presentfont%+CHR$(13)
18360VDU 23,25,&FF,15,red2%,grn2%,blu2%,red%,grn%,blu%
18370SYS "Font_FindFont",,FONT$,320,320,0,0 TO roman%  :REM ;scrapsizes
18380SYS "Font_StringBBox",,atext$ TO ,xmin%,ymin%,xmax%,ymax%
18390xsize%=ABS(xmax%-xmin%):ysize%=ABS(ymax%-ymin%)
18400SYS "Font_ReadScaleFactor" TO ,xscale%,yscale%
18410psizex%=(x2%-x1%)*320/(xsize%/xscale%)
18420psizey%=(y1%-y2%)*320/(ysize%/yscale%)
18430xo%=(xmin%/xscale%)*psizex%/320
18440yo%=(ymin%/yscale%)*psizey%/320
18450SYS "Font_FindFont",,FONT$,psizex%,psizey%,0,0 TO roman%
18460SYS "Font_Paint",,atext$,%10000,x1%-xo%,y2%-yo%
18470COLOUR 63 TINT 192
18480ENDCASE
18490
18500REM Anti box text to screen
18510WHEN45:CASE step% OF
18520WHEN1:
18530FONT$=$presentfont%+CHR$(13)
18540SYS "Font_FindFont",,FONT$,320,320,0,0 TO roman%   :REM ;scrapsizes
18550SYS "Font_StringBBox",,atext$ TO ,xmin%,ymin%,xmax%,ymax%
18560xsize%=ABS(xmax%-xmin%):ysize%=ABS(ymax%-ymin%)
18570SYS "Font_ReadScaleFactor" TO ,xscale%,yscale%
18580xs%=(xsize%/xscale%)*psizex%/320
18590ys%=(ysize%/yscale%)*psizey%/320
18600xo%=(xmin%/xscale%)*psizex%/320
18610yo%=(ymin%/yscale%)*psizey%/320
18620RECTANGLE MX+xo%,MY+yo%,xs%,ys%
18630WAIT:WAIT
18640RECTANGLE MX+xo%,MY+yo%,xs%,ys%
18650WHEN2:
18660tint%=((!pc% AND 192) >> 2)
18670red%=tint%+((!pc% AND 3) << 6)
18680grn%=tint%+((!pc% AND 12) << 4)
18690blu%=tint%+((!pc% AND 48) << 2)
18700tint2%=TINT(MX,MY) >> 2
18710back%=POINT(MX,MY)
18720red2%=tint2%+((back% AND 3) << 6)
18730grn2%=tint2%+((back% AND 12) << 4)
18740blu2%=tint2%+((back% AND 48) << 2)
18750VDU 23,25,&FF,15,red2%,grn2%,blu2%,red%,grn%,blu%
18760SYS "Font_FindFont",,FONT$,psizex%,psizey%,0,0 TO roman%
18770SYS "Font_Paint",,atext$,%10000,MX,MY
18780COLOUR 63 TINT 192
18790ENDCASE
18800
18810REM demo function
18820WHEN46
18830PROCreset_action
18840PROCerrorhandle(1,"This is a demonstration version of ATELIER so this function has been disabled,|CALL 0392 437756 to order a proper version of ATELIER, the ultimate art package.","||Continue",selected)
18850
18860REM Bottle draw
18870WHEN47:CASE step% OF
18880WHEN1,2:PROCgetrectangle
18890WHEN3
18900VDU 29,MX;MY;
18910F%=-1:CALL framedraw%
18920WAIT:WAIT
18930VDU 29,MX;MY;
18940F%=-1:CALL framedraw%
18950CALL spin_bottle%
18960WHEN4:PROCpoint(0,0)
18970PROCcopysort
18980steps%=ABS(ys%)/4-1
18990PT%=(!bolpoint%)-1
19000TL=0:FOR R%=1 TO PT%
19010L(R%)=SQR(((FNboltx(R%)-FNboltx(R%-1))^2+(FNbolty(R%)-FNbolty(R%-1))^2))
19020TL=TL+L(R%)
19030NEXT R%
19040TLP=TL/(steps%-1)
19050TLP=(TL+TLP-1)/(steps%)
19060FOR YP%=0 TO steps%
19070FL=YP%*TLP:GP%=0:FLB=0
19080IF FL<TL THEN
19090REPEAT
19100FLB=FLB+L(GP%)
19110GP%=GP%+1
19120UNTIL FLB>FL
19130ELSE
19140GP%=PT%-1
19150ENDIF
19160GP%=GP%-1
19170IF GP%>PT% THEN GP%=PT%-1
19180IF GP%<1 THEN GP%=1
19190LL=FLB-L(GP%)
19200PL=FL-LL
19210PM=PL/L(GP%)
19220B%(YP%,0)=(((FNboltx(GP%))-(FNboltx(GP%-1)))*PM)+(FNboltx(GP%-1))
19230B%(YP%,1)=((FNbolty(GP%)-FNbolty(GP%-1))*PM)+FNbolty(GP%-1)
19240NEXT YP%
19250PT%=ABS(y1%-y2%)
19260ST%=ABS(xs%)
19270STCM=360/ST%
19280SB%=0
19290T1%=0:T2%=steps%-1:TS%=1:y1%+=1
19300IF !bot_lean<=90 THEN T1%=steps%-1:T2%=0:TS%=-1:y1%-=2
19310IF !bot_lean>270 THEN T1%=steps%-1:T2%=0:TS%=-1:y1%-=2
19320FOR BT%=T1% TO T2% STEP TS%
19330wedge%=0
19340X%=B%(BT%,0):Y%=B%(BT%,1)
19350SC%=0
19360CT%=-1
19370IF !bot_lean<=180 THEN
19380deg1=-STCM:deg2=360:degs=STCM
19390ELSE
19400deg1=359+STCM:deg2=0:degs=-STCM
19410ENDIF
19420FOR Cd=deg1 TO deg2 STEP degs*2
19430CT%=CT%+1
19440VDU 26
19450CASE !pm% OF
19460WHEN0,1:plt%=FNgcol(x2%-(Cd+1)/STCM+2,y1%-BT%*4+4)
19470WHEN2:plt%=FNgcol(x2%-Cd/STCM-1,y1%-BT%*4)
19480ENDCASE
19490angle=Cd
19500A%=632-((632-X%)*EVAL(botrad$)):B%=Y%:C%=Cd:CALL translate_point%
19510XD%=!bot_xout:YD%=!bot_yout
19520VDU 29,MX;MY;     :REM origin
19530IF SB%>0 AND SC%>0 AND plt% THEN
19540MOVE LXD2%,LYD2%
19550MOVE LXD%,LYD%:PLOT &55,XD%,YD%
19560PLOT&55,A%(CT%,0),A%(CT%,1)
19570ENDIF
19580SC%=1
19590LXD%=A%(CT%,0):LYD%=A%(CT%,1)
19600LXD2%=XD%:LYD2%=YD%
19610A%(CT%,0)=XD%:A%(CT%,1)=YD%
19620NEXT Cd
19630REM UNTIL C%*STCM>360
19640SB%=1
19650NEXT BT%
19660PROCupdate
19670VDU 26
19680ENDCASE
19690
19700REM Set Mouse Grid
19710WHEN48:IF FNtext_entry(33,STR$(mousegrid),15)
19720mousegrid=EVAL(out$)
19730IF mousegrid<1 THEN mousegrid=1
19740mgs=1
19750ENDIF
19760PROCreset_entry
19770
19780REM Formula Entry
19790WHEN49:oldform$=formula$:test=FALSE
19800!putit%=1:PROCpoint(0,PNkeyboard)
19810PROCreset_action:CALL uptree%
19820A%=-128:B%=!starty%+56:E%=-1:CALL help%
19830A%=-128:B%=!starty%-!sizey-96:E%=-1:CALL help%
19840REPEAT
19850go=FNinstring(32,126,formula$,formula$,255)
19860P%=formnames%
19870num%=?P%:P%+=1
19880F=0
19890test$=""
19900num2%=?P%:P%+=1
19910FOR R=1 TO num2%
19920test$=test$+CHR$(?P%)
19930P%+=1:NEXT
19940IF formula$=test$ THEN formula$=formulas$(F-1):GOTO 19850
19950F+=1
19960IF F<num% THEN GOTO 19890
19970IF go THEN PROCpoint(0,0):test=FNbuild_formula(formula$,0)
19980UNTIL test OR NOT go
19990IF NOT go THEN formula$=oldform$
20000!formula=0
20010CALL liftup%:CALL putbackground%
20020PROCreset_entry
20030
20040WHEN50,54,53:CASE step% OF
20050REM FORMULA COPY
20060WHEN1,2:PROCgetrectangle
20070WHEN3:
20080VDU 29,MX;MY;
20090F%=-1:CALL formframedraw%
20100WAIT:WAIT
20110VDU 29,MX;MY;
20120F%=-1:CALL formframedraw%
20130WHEN4:PROCcopysort
20140xsteps=720/(xs%/2):ysteps=720/(ys%/4)
20150IF !Ac%=53 THEN
20160PROCpoint(0,PNcalculator)
20170max=-65536
20180min=65536
20190ofm=0
20200FOR XD=-360 TO 360 STEP xsteps
20210wedge%=0
20220FOR YD=360 TO -360 STEP ysteps
20230XR=RAD(XD)
20240YR=RAD(YD)
20250IF !formula=0 THEN FM=EVAL(formula$) ELSE FM=EVAL(formulas$(!formula-1))
20260FD=ofm-FM
20270IF YD<360 THEN IF FD>max THEN max=FD
20280IF YD<360 THEN IF FD<min THEN min=FD
20290ofm=FM
20300NEXT YD,XD
20310ENDIF
20320YF%=0
20330PROCpoint(0,0)
20340FOR YD=360 TO -360 STEP ysteps
20350wedge%=0
20360FOR XD=-360 TO 360 STEP xsteps
20370XR=RAD(XD)
20380YR=RAD(YD)
20390IF !formula=0 THEN FM=EVAL(formula$) ELSE FM=EVAL(formulas$(!formula-1))
20400A%=XD:B%=YD:C%=FM:CALL form_translate%
20410npx%=!bot_xout
20420npy%=!bot_yout
20430PX%=((360+XD)/xsteps):PY%=((360+YD)/-ysteps)
20440VDU 4
20450VDU 26
20460xp%=x1%+PX%*2-2:yp%=y2%+PY%*4+3
20470plt%=FNgcol(xp%,yp%)
20480IF XD>-360 AND YD<360 AND plt% THEN
20490IF !Ac%=53 THEN
20500num%=4+(((L(PX%)-FM)-min)/((max-min)/11))
20510IF num%<4 THEN num%=4:IF testing THEN VDU 7
20520IF num%>15 THEN num%=15:IF testing THEN VDU 7
20530A%=col%:B%=15-num%:CALL calc_intensity%
20540ENDIF
20550VDU 29,MX;MY;
20560MOVE nlpx%,nlpy%
20570MOVE A%((ABS(PX%))-1,0),A%((ABS(PX%))-1,1)
20580PLOT &55,A%(ABS(PX%),0),A%(ABS(PX%),1)
20590PLOT &55,npx%,npy%
20600IF !Ac%=54 THEN
20610CALL colour%
20620MOVE nlpx%,nlpy%
20630DRAW A%((ABS(PX%))-1,0),A%((ABS(PX%))-1,1)
20640DRAW npx%,npy%
20650DRAW A%(ABS(PX%),0),A%(ABS(PX%),1)
20660DRAW nlpx%,nlpy%
20670ENDIF
20680ENDIF
20690L(PX%)=FM
20700nlpx%=A%(ABS(PX%),0)
20710nlpy%=A%(ABS(PX%),1)
20720A%(ABS(PX%),0)=npx%
20730A%(ABS(PX%),1)=npy%
20740ENDIF
20750NEXT XD
20760YF%=1
20770NEXT YD
20780PROCupdate
20790VDU 26
20800ENDCASE
20810
20820REM Rotate copy
20830WHEN51:CASE step% OF
20840WHEN1,2:PROCgetrectangle
20850WHEN3:x3%=MX:y3%=MY
20860WHEN4:PROCshape
20870WAIT:WAIT:PROCshape
20880WHEN5:PROCsmearscreen(x1%,y1%,xs%,ys%)
20890ENDCASE
20900
20910REM AA text input
20920WHEN52:IF FNtext_entry(32,atext$,255) THEN atext$=out$
20930PROCreset_entry
20940
20950REM Save Compacted Screen
20960WHEN55:IF FNtext_entry(33,$screen_str%,255) THEN
20970PROCpoint(0,1):PROCcompactedsave(0,out$):$screen_str%=out$
20980ENDIF
20990PROCreset_entry
21000
21010REM Set Print Key Command
21020WHEN56:IF FNtext_entry(32,funcprint$,255) THEN funcprint$=out$
21030PROCreset_entry
21040
21050REM undo box
21060WHEN57:CASE step% OF
21070WHEN1,2:PROCgetrectangle
21080WHEN3:PROCsortcord
21090A%=x1%:B%=y1%:C%=xs%:D%=-ys%
21100CALL undobox%
21110ENDIF
21120step%=1:PROCreset_action:PROCupdate
21130ENDCASE
21140
21150REM Save System Screen
21160WHEN58:IF FNtext_entry(33,$screen_str%,255) THEN
21170PROCpoint(0,1):OSCLI "SCREENSAVE "+out$:$screen_str%=out$
21180ENDIF
21190PROCreset_entry
21200
21210REM Title Screen
21220WHEN59:CASE step% OF
21230WHEN1:IF FNsprites=0 THEN PROCtitlesprite
21240WHEN2:PROCreset_action
21250ENDCASE
21260
21270REM Brushes
21280WHEN60,61,62,63,64,65
21290A%=!Ac%-60
21300CASE !rect_brush_mode OF
21310WHEN0:CASE step% OF
21320WHEN1:A%=(MX DIV 2)-16:B%=255-((MY DIV 4)+8)
21330CALL brusheor%
21340WAIT:WAIT:CALL brusheor%
21350WHEN2:REPEAT
21360PROCmouse_handle
21370B%=MX-32:C%=MY+32:CALL brushdraw%
21380UNTIL MB=0
21390ENDCASE
21400WHEN1:CASE step% OF
21410WHEN1,2:PROCgetrectangle
21420WHEN3:PROCpoint(0,0)
21430PROCsortcord
21440B%=x1%:C%=y1%:D%=xs%DIV2:E%=-ys%DIV4
21450CALL brushdraw%
21460PROCupdate
21470ENDCASE
21480WHEN2:CASE step% OF
21490WHEN1:x0%=640:y0%=512
21500CIRCLE x0%,y0%,SQR((MX-x0%)^2+(MY-y0%)^2)
21510WAIT:WAIT
21520CIRCLE x0%,y0%,SQR((MX-x0%)^2+(MY-y0%)^2)
21530R%=SQR((MX-x0%)^2+(MY-y0%)^2)
21540WHEN3:REPEAT
21550PROCmouse_handle
21560AN=RAD(RND(360)):RO%=TAN(RAD(RND(80)))*(R%/10)
21570B%=MX+SIN(AN)*RO%
21580C%=MY+COS(AN)*RO%
21590CALL brushdraw%
21600UNTIL MB=0
21610ENDCASE
21620ENDCASE
21630
21640REM Anti aliased squash
21650WHEN67:CASE step% OF
21660WHEN1,2:PROCgetrectangle
21670WHEN3:x3%=MX:y3%=MY
21680WHEN4:RECTANGLE x3%,y3%,MX-x3%,MY-y3%
21690WAIT:WAIT:RECTANGLE x3%,y3%,MX-x3%,MY-y3%
21700x4%=MX:y4%=MY
21710WHEN5:PROCcopysort
21720x3%=(x3%DIV2)*2
21730x4%=(x4%DIV2)*2
21740y3%=(y3%DIV4)*4
21750y4%=(y4%DIV4)*4
21760IF x3%>x4% THEN temp%=x3%:x3%=x4%:x4%=temp%
21770IF y4%>y3% THEN temp%=y4%:y4%=y3%:y3%=temp%
21780xps%=x4%-x3%+3:yps%=y4%-y3%-7
21790A%=x1%
21800B%=y1%
21810C%=xs%DIV2
21820D%=-ys%DIV4
21830E%=x3%
21840F%=y3%
21850G%=xps%DIV2
21860H%=-yps%DIV4
21870CALL anti_aliased_squash%
21880ENDCASE
21890
21900REM Fuzz
21910WHEN68:CASE step% OF
21920WHEN1:x0%=640:y0%=512
21930CIRCLE x0%,y0%,SQR((MX-x0%)^2+(MY-y0%)^2)
21940WAIT:WAIT
21950CIRCLE x0%,y0%,SQR((MX-x0%)^2+(MY-y0%)^2)
21960R%=SQR((MX-x0%)^2+(MY-y0%)^2)
21970WHEN3
21980REPEAT
21990PROCmouse_handle
22000AN1=RAD(RND(360)):RO1%=TAN(RAD(RND(80)))*(R%/10)
22010AN2=RAD(RND(360)):RO2%=TAN(RAD(RND(80)))*(R%/10)
22020A%=MX+SIN(AN1)*RO1%
22030B%=MY+COS(AN1)*RO1%
22040C%=MX+SIN(AN2)*RO2%
22050D%=MY+COS(AN2)*RO2%
22060CALL swap_pixels%
22070UNTIL MB=0
22080ENDCASE
22090
22100REM Options
22110WHEN69,70,78,79
22120CASE !Ac% OF
22130WHEN69:select=TRUE
22140WHEN70:select=FALSE
22150WHEN78:!left_handed=0
22160WHEN79:!left_handed=1
22170ENDCASE
22180PROCreset_action
22190
22200REM Pixellate
22210WHEN71:CASE step% OF
22220WHEN1,2:PROCgetrectangle
22230WHEN3:PROCsortcord
22240gsx%=ABS(x1%-MX):gsy%=ABS(y1%-MY)
22250gsx%=(gsx% DIV 2)*2
22260gsy%=(gsy% DIV 4)*4
22270IF gsx%<4 THEN gsx%=4
22280IF gsy%<8 THEN gsy%=8
22290PROCpixgrid
22300WAIT:WAIT
22310PROCpixgrid
22320WHEN4:PROCpoint(0,0)
22330FOR gy%=y1% TO y2% STEP -gsy%
22340FOR gx%=x1% TO x2% STEP gsx%
22350sx%=gsx%:sy%=gsy%
22360IF gx%+sx%>x2% THEN sx%-=gx%+sx%-x2%-2
22370IF gy%-sy%<y2% THEN sy%-=y2%-(gy%-sy%)-4
22380A%=gx%:B%=gy%:C%=sx%DIV2:D%=sy%DIV4
22390CALL COLaverage%
22400NEXT
22410NEXT
22420MOUSE RECTANGLE 0,0,1279,1023
22430PROCupdate
22440ENDCASE
22450
22460REM Copy Fill
22470WHEN72:CASE step% OF
22480WHEN1,2:PROCgetrectangle
22490WHEN3:px%=MX:py%=MY
22500WHEN4:PROCcopysort:PROCpoint(0,0)
22510GCOL 128+POINT(MX,MY) TINT TINT(MX,MY)
22520IF !fill_style=0 OR !fill_style=3 THEN !fill_style=2
22530CASE !fill_style OF
22540WHEN1,2,3:
22550CALL bit_map_scan_A%
22560PLOT&85,MX,MY
22570A%=x1%DIV2:B%=y1%DIV4:C%=xs%DIV2:D%=-ys%DIV4
22580CASE !fill_style OF
22590WHEN1,2:CALL copy_fill%
22600WHEN3:REM Should be full mapping.
22610ENDCASE
22620ENDCASE
22630PROCupdate
22640ENDCASE
22650
22660REM Save Compacted Sprite
22670WHEN73:IF FNtext_entry(33,$screen_str%,255) THEN
22680PROCpoint(0,1):PROCcompactedsave(1,out$)
22690area$=STR$(xs%*ys%)
22700per$=LEFT$(STR$(cs%/(xs%*ys%)*100),4)
22710IF INKEY(-1) THEN PROCerrorhandle(1,"Compaction Report|Size: "+STR$(xs%)+"x"+STR$(ys%)+"|Area in bytes: "+area$+"|Bytes used: "+STR$(cs%)+"|Percentage: "+per$," ",selected)
22720$screen_str%=out$
22730ENDIF
22740PROCreset_entry
22750
22760REM Compacted Get
22770WHEN74:CASE step% OF
22780WHEN1,2:PROCgetrectangle
22790WHEN3:PROCsortcord
22800!com_x1=x1%
22810!com_y1=y1%
22820!com_x2=x2%
22830!com_y2=y2%
22840ENDCASE
22850
22860REM Mode 15 to 13 convert
22870WHEN75:CASE step% OF
22880WHEN1,2:PROCgetrectangle
22890WHEN3:PROCsortcord:xs%-=2:ys%+=4:px%=MX:py%=MY
22900RECTANGLE px%,py%,xs%/2,-ys%
22910WAIT:WAIT
22920RECTANGLE px%,py%,xs%/2,-ys%
22930WHEN4:PROCsortcord
22940A%=x1%:B%=y1%:C%=xs%DIV4:D%=-ys%DIV4:E%=px%:F%=py%-ys%-4
22950CALL COLmode15_13resize%
22960ENDCASE
22970
22980REM Colour Average Area
22990WHEN76:CASE step% OF
23000WHEN1,2:PROCgetrectangle
23010WHEN3:PROCsortcord
23020A%=x1%:B%=y1%:C%=xs%DIV2:D%=-ys%DIV4
23030CALL COLaverage%
23040ENDCASE
23050
23060REM Update Font List
23070WHEN77
23080CALL fontlistinit%
23090PROCreset_action
23100
23110REM 3 point curve
23120WHEN80:CASE step% OF
23130WHEN1:x1%=MX:y1%=MY
23140WHEN2:x2%=MX:y2%=MY
23150MOVE x1%,y1%:DRAW x2%,y2%
23160WAIT:WAIT
23170MOVE x1%,y1%:DRAW x2%,y2%
23180WHEN3:x3%=MX:y3%=MY
23190PROCcurve(20):WAIT:WAIT:PROCcurve(20)
23200WHEN4:PROCcurve(1)
23210ENDCASE
23220
23230REM Bottle Wall Formula
23240WHEN81:IF FNtext_entry(32,botrad$,255) THEN botrad$=out$
23250PROCreset_entry
23260
23270REM Undo Brush
23280WHEN82:CASE step% OF
23290WHEN1:A%=(MX DIV 2)-16:B%=255-((MY DIV 4)+8)
23300CALL brusheor%
23310WAIT:WAIT:CALL brusheor%
23320WHEN2:REPEAT
23330PROCmouse_handle
23340A%=(MX DIV 2)-16:B%=255-((MY DIV 4)+8)
23350CALL brushundo%
23360UNTIL MB=0
23370ENDCASE
23380
23390ENDCASE
23400ENDPROC
23410
23420DEFPROCcurve(r%)
23430PLOT &45,x1%,y1%
23440xs%=x1%-x2%:ys%=y1%-y2%
23450xs2%=(x1%-xs%/2)-x3%:ys2%=(y1%-ys%/2)-y3%
23460IF r%<>1 THEN
23470s%=r%
23480ELSE
23490IF ABSxs%>ABSys% THEN s%=ABSxs% ELSE s%=ABSys%
23500ENDIF
23510FOR st=1/s% TO 1-1/s% STEP 1/s%
23520x%=x1%-(xs%*st)-(xs2%*SINRAD(st*180))
23530y%=y1%-(ys%*st)-(ys2%*SINRAD(st*180))
23540PLOT &25,x%,y%
23550NEXT
23560PLOT &25,x2%,y2%
23570ENDPROC
23580
23590DEFFNtext_entry(sl%,in$,len%)
23600!putit%=1
23610PROCpoint(0,PNkeyboard)
23620PROCreset_action:CALL uptree%
23630A%=-128:B%=!starty%+56:E%=-1:CALL help%
23640A%=-128:B%=!starty%-!sizey-96:E%=-1:CALL help%
23650step%=1
23660go=FNinstring(sl%,126,in$,out$,len%)
23670CALL liftup%:CALL putbackground%
23680=go
23690
23700DEFPROCreset_entry
23710CALL liftdown%:VDU5:CALL helptext%:PROCupdate
23720ENDPROC
23730
23740DEFPROCeval_error_cheat
23750LOCAL ERROR
23760ON ERROR LOCAL eval$="":VDU7:t$=REPORT$:RESTORE ERROR:ENDPROC
23770IF ASC(eval$)=126 THEN t$=STR$~(EVAL(MID$(eval$,2))) ELSE t$=STR$(EVAL(eval$))
23780RESTORE ERROR
23790ENDPROC
23800
23810DEFPROCcompactedsave(t%,fn$)
23820LOCAL ERROR
23830ON ERROR LOCAL CALL undosave%:RESTORE ERROR:ERROR 99,REPORT$:ENDPROC
23840OSCLI"DefineBuffer "+STR$(STORE%)+" &28000"
23850CASE t% OF
23860WHEN0:OSCLI"Com_Save "+fn$+" 0 0 1279 1023 0"
23870WHEN1:IF ?(flags%+1)=0 THEN tl%=behind% ELSE tl%=0
23880OSCLI"Com_Save "+fn$+" "+STR$(!com_x1)+" "+STR$(!com_y1)+" "+STR$(!com_x2)+" "+STR$(!com_y2)+" "+STR$(tl%)
23890ENDCASE
23900cs%=10
23910xs%=10
23920ys%=10
23930CALL undosave%
23940RESTORE ERROR
23950ENDPROC
23960
23970DEFPROCcompressedsave(fn$)
23980LOCAL ERROR
23990ON ERROR LOCAL CALL undosave%:RESTORE ERROR:ERROR 99,REPORT$:ENDPROC
24000$cat%=fn$
24010CALL compactedsave%
24020CALL undosave%
24030RESTORE ERROR
24040ENDPROC
24050
24060DEFPROCpixgrid
24070RECTANGLE x1%,y1%,xs%,ys%
24080FOR X%=x1%+gsx% TO x2% STEP gsx%
24090LINE X%,y1%,X%,y2%
24100NEXT
24110FOR Y%=y1%-gsy% TO y2% STEP -gsy%
24120LINE x1%,Y%,x2%,Y%
24130NEXT
24140ENDPROC
24150
24160DEFFNsprites
24170CALL checksprites%
24180=!OUT
24190
24200DEFFNput_check
24210IF FNsprites>0 THEN =TRUE
24220PROCreset_action
24230IF !Ac%=37 OR !Ac%=40 THEN !Ac%=38:ERROR 99,"No Sprites Present. Unable to Restore Action, Setting Action to Sprite Get."
24240=FALSE
24250
24260DEFPROCtitlesprite
24270LOCAL ERROR
24280ON ERROR LOCAL RESTORE ERROR:ENDPROC
24290MOVE 52,711:MOVE 274,932:*SGET Diamond
24300RESTORE ERROR:ENDPROC
24310
24320REM formula functions
24330
24340DEF FNradiusR
24350=SQR(XR^2+YR^2)
24360
24370DEF FNradiusD
24380=SQR(XD^2+YD^2)
24390
24400DEF FNdepth
24410LOCAL r%,g%,b%,t%
24420t%=(col% AND 192)>> 6
24430r%=t%+(col% AND 3)<<2
24440g%=t%+(col% AND 12)
24450b%=t%+(col% AND 48)>>2
24460t%=r%
24470IF g%>t% THEN t%=g%
24480IF b%>t% THEN t%=b%
24490=t%/15
24500
24510DEF FNwedge(up%,down%)
24520IF col%=up% THEN wedge%+=1
24530IF col%=down% THEN wedge%-=1
24540=wedge%
24550
24560DEFPROCsmearscreen(x1%,y1%,xs%,ys%)
24570PROCcopysort
24580c1%=(px1%-px4%)
24590c2%=(py1%-py4%)
24600c3%=(ys%)
24610c4%=(xs%)
24620c5%=(px2%-px1%)
24630c6%=(py2%-py1%)
24640c7%=(px3%-px4%)-c5%
24650c8%=(py3%-py4%)-c6%
24660PROCpoint(0,0)
24670FOR yp%=y1% TO y1%+ys% STEP SGN(ys%)*4
24680arx%=0
24690FOR xp%=x1% TO x1%+xs% STEP SGN(xs%)*2
24700IF yp%=y1% THEN A%(arx%,0)=FNnpx(xp%,yp%):A%(arx%,1)=FNnpy(xp%,yp%):GOTO 24800
24710IF arx%=0 THEN nplx%=FNnpx(xp%,yp%):nply%=FNnpy(xp%,yp%):GOTO 24780
24720plt%=FNgcol(xp%-2,yp%+4)
24730MOVE tx%,ty%
24740MOVE A%(arx%,0),A%(arx%,1)
24750IF plt% THEN PLOT &55,nplx%,nply%
24760nplx%=FNnpx(xp%,yp%):nply%=FNnpy(xp%,yp%)
24770IF plt% THEN PLOT &55,nplx%,nply%
24780tx%=A%(arx%,0):ty%=A%(arx%,1)
24790A%(arx%,0)=nplx%:A%(arx%,1)=nply%
24800arx%=arx%+1
24810NEXT xp%,yp%
24820step%=1
24830ENDCASE
24840PROCupdate
24850ENDPROC
24860
24870DEF FNnpx(PX,PY)
24880w1=((PY-y1%)/c3%)
24890w2=((PX-x1%)/c4%)
24900=px1%-(c1%*w1)+(c5%+c7%*w1)*w2
24910
24920DEF FNnpy(PX,PY)
24930=py1%-(c2%*w1)+(c6%+c8%*w1)*w2
24940
24950DEF FNatn(X,Y)
24960IF ABS(Y)>0 THEN A=DEG(ATN(X/Y)) ELSE A=90+180*(X<0)
24970IF Y<0 THEN A=A+180
24980=A
24990
25000DEF FNradius(X,Y)
25010=SQR(X^2+Y^2)
25020
25030DEFPROCshape
25040A=FNatn(MX-x3%,MY-y3%)
25050D=FNradius(MX-x3%,MY-y3%)
25060OA1=2*(DEG(ATN(ABS(xs%)/ABS(ys%))))
25070OA2=180-OA1
25080px1%=x3%+D*SIN(RAD(A))
25090py1%=y3%+D*COS(RAD(A))
25100px2%=x3%+D*SIN(RAD(A+OA1))
25110py2%=y3%+D*COS(RAD(A+OA1))
25120px3%=x3%+D*SIN(RAD(A+OA1+OA2))
25130py3%=y3%+D*COS(RAD(A+OA1+OA2))
25140px4%=x3%+D*SIN(RAD(A-OA2))
25150py4%=y3%+D*COS(RAD(A-OA2))
25160MOVE px1%,py1%
25170GCOL 3,3
25180DRAW px2%,py2%
25190GCOL 3,63
25200DRAW px3%,py3%
25210DRAW px4%,py4%
25220DRAW px1%,py1%
25230ENDPROC
25240
25250DEF FNformx(xpos,ypos,upval)
25260rd=FNradius(xpos,ypos)
25270an=RAD(FNatn(xpos,ypos))
25280an=an+offset
25290=mx%+SIN(an)*rd*(xs2%/720)
25300
25310DEF FNformy(xpos,ypos,upval)
25320=my%+COS(an)*rd*(ys2%/720)*COS(lean)+upval*SIN(lean)
25330
25340DEF FNboltx(A)
25350=!(xget%+A*4)
25360DEF FNbolty(A)
25370=!(yget%+A*4)
25380
25390DEFPROCoscliaction
25400LOCAL ERROR
25410*POINTER 0
25420*FX 4,0
25430*FX 229,0
25440SYS "OS_RestoreCursors"
25450PROCreset_action
25460PROCsetsoftkeys
25470CALL uptree%
25480PRINT
25490ON ERROR LOCAL PRINT:PRINT REPORT$
25500REPEAT
25510INPUT "*"out$
25520IF LEFT$(out$,8)<>"MENU OFF" THEN OSCLI out$
25530UNTIL LEFT$(out$,8)="MENU OFF" OR MODE<>15 OR out$=""
25540IF MODE<>15 THEN MODE 15
25550*FX 229,1
25560SYS "OS_RemoveCursors"
25570!putit%=1:CALL putbackground%
25580RESTORE ERROR
25590REM VDU 21
25600*FX 4,1
25610PROCunsetsoftkeys
25620PROCpoint(0,0)
25630IF LEFT$(out$,8)="MENU OFF" THEN OSCLI MID$(out$,9)
25640IF MODE<>15 THEN MODE 15:!putit%=1:CALL putbackground%
25650CALL liftdown%
25660PROCupdate
25670ENDPROC
25680
25690DEFPROCdumpererror
25700P%=!printmenu%
25710[OPT0
25720EQUS"< Printer Dumps"
25730EQUB1:EQUB255
25740EQUS"Not Installed":EQUB 0:EQUB 33
25750]
25760ENDPROC
25770
25780DEFPROCcheckdumper
25790LOCAL ERROR
25800ON ERROR LOCAL PROCdumpererror:RESTORE ERROR:ENDPROC
25810P%=!printmenu%
25820OSCLI ("SCREENDUMPIDS &"+STR$~(P%))
25830RESTORE ERROR
25840ENDPROC
25850
25860DEFPROCgetrectangle
25870CASE step% OF
25880WHEN1:x1%=MX:y1%=MY
25890WHEN2:RECTANGLE x1%,y1%,MX-x1%,MY-y1%
25900WAIT:WAIT:RECTANGLE x1%,y1%,MX-x1%,MY-y1%
25910xs%=MX-x1%:ys%=MY-y1%
25920x2%=MX:y2%=MY
25930ENDCASE
25940ENDPROC
25950
25960DEFPROCsortcord
25970x1%=(x1%DIV2)*2
25980x2%=(x2%DIV2)*2
25990y1%=(y1%DIV4)*4
26000y2%=(y2%DIV4)*4
26010IF x1%>x2% THEN temp%=x1%:x1%=x2%:x2%=temp%
26020IF y2%>y1% THEN temp%=y2%:y2%=y1%:y1%=temp%
26030xs%=x2%-x1%+3:ys%=y2%-y1%-7
26040ENDPROC
26050
26060DEF FNgcol(xp%,yp%)
26070IF !pm%<>2 THEN
26080GCOL POINT(xp%,yp%) TINT TINT(xp%,yp%)
26090col%=POINT(xp%,yp%)+TINT(xp%,yp%)
26100=TRUE
26110ELSE
26120A%=xp%DIV2:B%=(-ys%-yp%)DIV4
26130CALL spritepix%
26140col%=!RESULTX
26150=!spritemask
26160ENDIF
26170
26180DEFPROCspritesort
26190CALL spriteinit%
26200x1%=0:y1%=4*!sprint_ysize
26210xs%=2*!sprint_xsize
26220ys%=-4*!sprint_ysize
26230x2%=xs%
26240y2%=0
26250ENDPROC
26260
26270DEFPROCcopysort
26280wedge%=0
26290CASE !pm% OF
26300WHEN0,1:REM solid,pattern
26310PROCsortcord
26320WHEN2:REM sprite
26330PROCspritesort
26340ENDCASE
26350ENDPROC
26360
26370DEFFNinstring(min,max,in$,RETURN out$,length)
26380l%=!sizex/8-2
26390*FX 4,1
26400*FX 229,1
26410OMX=-1:OMY=-1
26420XP=!startx%+6:YP=!starty%-48
26430MOVE XP,YP:VDU 5
26440out$=in$:posit%=LEN(out$)+1:of%=posit%-l%+1:IF of%<1 THEN of%=1
26450GCOL 0,5 TINT 64:PRINT">";
26460REPEAT
26470MOVE XP+16,YP:
26480GCOL 0,(BACKCOL% AND 63) TINT (BACKCOL% AND 192)
26490PRINTSTRING$(l%,CHR$(255))
26500GCOL 0,(textcol% AND 63) TINT (textcol% AND 192)
26510MOVE XP+16,YP:PRINTMID$(out$,of%,l%)
26520GCOL 3,63 TINT 192
26530RECTANGLE FILL XP+(posit%-of%+1)*16,YP,16,-28
26540REPEAT
26550MOUSE DX,DY,MB
26560IF DX<>OMX OR DY<>OMY THEN PROCpoint(0,PNkeyboard)
26570A$=INKEY$(0)
26580IF A$<>"" THEN *POINTER 0
26590UNTIL A$<>"" OR MB>0
26600OMX=DX:OMY=DY
26610RECTANGLE FILL XP+(posit%-of%+1)*16,YP,16,-28
26620MOVE XP+16,YP
26630i$="":IF ASC(A$)>min-1 AND ASC(A$)<max+1 THEN i$=A$
26640IF ASC(A$)=163 THEN i$=A$
26650IF ASC(A$)=21 THEN out$="":of%=1:posit%=1
26660IF LEN(out$)=length AND i$<>"" THEN VDU 7
26670IF i$<>"" AND LEN(out$)<length THEN out$=LEFT$(out$,posit%-1)+A$+MID$(out$,posit%):posit%=posit%+1
26680IF ASC(A$)=127 THEN
26690IF posit%>1 THEN out$=LEFT$(out$,posit%-2)+MID$(out$,posit%):posit%=posit%-1 ELSE VDU 7
26700ENDIF
26710IF ASC(A$)=136 THEN posit%=posit%-1
26720IF ASC(A$)=137 THEN posit%=posit%+1
26730IF (posit%-of%+1)>l% THEN of%+=1
26740IF (posit%-of%)<4 THEN of%=posit%-4
26750IF of%<1 THEN of%=1
26760IF posit%<1 THEN posit%=1
26770IF posit%>LEN(out$)+1 THEN posit%=LEN(out$)+1
26780IF ASC(A$)=27 THEN =FALSE
26790IF MB=1 THEN =FALSE
26800UNTIL ASC(A$)=13 OR MB=4
26810VDU 4:*FX 4,0
26820=NOT (LEN(out$)=0)
26830
26840DEFPROCsetcol
26850GCOL 0,(textcol% AND 63) TINT (textcol% AND 192)
26860GCOL 0,128+(BACKCOL% AND 63) TINT (BACKCOL% AND 192)
26870ENDPROC
26880
26890DEFPROCpoint(L,N)
26900P%=PO%+N*267
26910SYS &400D8,2,P%+11,32,32,P%?9,P%?10
26920MOUSE COLOUR 1,P%?0,P%?1,P%?2
26930MOUSE COLOUR 2,P%?3,P%?4,P%?5
26940MOUSE COLOUR 3,P%?6,P%?7,P%?8
26950OSCLI "FX 106,"+STR$(2 OR L<<7)
26960ENDPROC
26970
26980DEF FNbuild_formula(A$,pos%)
26990REM A$=eval of the formula,pos=formula number
27000LOCAL ERROR
27010ON ERROR LOCAL RESTORE ERROR:=FALSE
27020FOR Y%=0 TO 20
27030FOR X%=0 TO 20
27040XD=X%*36-360
27050YD=Y%*36-360
27060XR=RAD(XD):YR=RAD(YD)
27070A=(EVAL(A$)<<8)
27080!(skel%+pos%*1764+(X%+21*Y%)*4)=A
27090NEXT
27100NEXT
27110RESTORE ERROR
27120=TRUE
27130
27140DEFPROCformula_load(filename$)
27150REM reads and descifers a formula list
27160SYS "OS_Find",&40,filename$ TO handle%
27170formulas%=1
27180P%=formnames%
27190[OPT 0
27200EQUB 7
27210EQUB 10
27220EQUS "Defineable"
27230]
27240name$="":formulas$(formulas%-1)="":past%=FALSE
27250REPEAT
27260SYS "OS_GBPB",4,handle%,log_scale%,1 TO ,,,finish%
27270b%=?log_scale%:cr%=(b%=10 OR b%=13)
27280IF cr% THEN
27290IF past% THEN
27300IF FNbuild_formula(formulas$(formulas%-1),formulas%) THEN ?P%=LEN(name$):P%+=1:$P%=name$:P%+=LEN(name$):formulas%+=1
27310ENDIF
27320name$="":formulas$(formulas%-1)="":past%=FALSE
27330ELSE
27340IF past% THEN formulas$(formulas%-1)+=CHR$(b%)
27350IF b%=ASC("$") THEN past%=TRUE
27360IF NOT past% THEN name$+=CHR$(b%)
27370ENDIF
27380UNTIL finish%=1
27390?formnames%=formulas%
27400SYS "OS_Find",&00,handle%
27410ENDPROC
27420
27430DEFPROCupdate
27440IF (mgs AND mousegrid>2) OR mcs THEN l=1 ELSE l=0
27450CASE !Ac% OF
27460WHEN12:PROCpoint(l,PNglass)
27470WHEN13:PROCpoint(l,PNflood):CALL mousecolour%
27480WHEN21,33,34:PROCpoint(l,PNspray):CALL mousecolour%
27490WHEN37,38:PROCpoint(l,PNspriteop)
27500WHEN31,32,35:PROCpoint(l,PNbrush)
27510WHEN41:PROCpoint(0,PNspray)
27520WHEN59:PROCpoint(l,PNA)
27530OTHERWISE:PROCpoint(l,PNnormal):CALL mousecolour%
27540ENDCASE
27550ENDPROC
27560
27570DEFPROCerror_at
27580VDU 26
27590IF ERR=17 THEN
27600step%=1:PROCpoint(0,PNstopped)
27610CALL liftdown%
27620FOR R%=0 TO 20000:NEXT
27630PROCupdate
27640ENDPROC
27650ENDIF
27660IF !lastmenu=12 OR !lastmenu=30 THEN CALL uptree%
27670VDU 7
27680CASE testing OF
27690WHENFALSE:PROCerrorhandle(1,"An Error Has Occured,|"+REPORT$,"Continue",selected)
27700WHENTRUE:PROCerrorhandle(3,"An Error Has Occured,|"+REPORT$+"|At line "+STR$(ERL),"Edit This Line|Edit Last Line|Continue",selected)
27710*FX 15,0
27720IF selected=1 THEN PROCstring_to_buffer("ED. "+STR$(ERL)+CHR$(13))
27730IF selected=2 THEN PROCstring_to_buffer("ED.."+CHR$(13))
27740IF selected=1 OR selected=2 THEN END
27750ENDCASE
27760step%=1
27770IF !lastmenu<>1 AND !lastmenu<>9 THEN !presentmenu%=!lastmenu
27780ENDPROC
27790
27800DEFPROCerrorhandle(N,message$,question$,RETURN selected)
27810IF MODE<>15 THEN MODE 15:SYS "OS_RemoveCursors"
27820*FX229,1
27830PROCpoint(0,PNquestion)
27840MOUSE RECTANGLE 256,331,768,372
27850A%=N:CALL draw_error_box%
27860VDU 28,32,19,59,12
27870COLOUR 128+(BACKCOL% AND 63) TINT (BACKCOL% AND 192)
27880COLOUR (textcol% AND 63) TINT (textcol% AND 192)
27890PROCstrhandle(message$)
27900SYS "OS_PrettyPrint",BUFF%
27910COLOUR 63 TINT 192
27920PRINTTAB(0,5);
27930PROCstrhandle(question$+" ?")
27940SYS "OS_PrettyPrint",BUFF%
27950PROCBUTOFF(7)
27960REPEAT
27970MOUSE DX,DY,ChB
27980IF ChB>0 AND DX>308 AND DX<463 AND DY<653 AND DY>516 AND ChB<>2 THEN !presentmenu%=0:!lastmenu=0:ChB=2:!treepos=0:!Ac%=0
27990UNTIL ChB=2 OR (ChB>0 AND DX>300 AND DX<474 AND DY<484 AND DY>368)
28000PROCBUTOFF(7)
28010CALL undorestore%
28020PROCupdate
28030CALL liftdown%
28040VDU5:CALL helptext%
28050F%=step%:CALL helpstep%
28060selected=INT((484-DY)/120*N)+1
28070IF ChB=2 THEN enter%=10:selected=-1
28080ENDPROC
28090
28100DEFPROCstrhandle(string$)
28110out$=""
28120FOR R=1 TO LEN(string$)
28130ch$=MID$(string$,R,1)
28140IF ch$="|" THEN ch$=CHR$(13)
28150out$=out$+ch$
28160NEXT
28170$BUFF%=out$+CHR$(0)
28180ENDPROC
28190
28200DEFPROCsetlimits(LMX,LMY)
28210mrctx1%=-LMX+2
28220mrcty1%=-LMY+4
28230mrctx2%=1277+LMX
28240mrcty2%=1019+LMY
28250ENDPROC

�> <Atelier$Dir>.Atelier
3�  By Simon Clay Copyright (c) Simon Clay, 1989
:    version$="1.01"
(
2
<�:�error(�,�$,�,�)
F	�init
P�:�error(�,�$,�,�):�report
Z�normpoint
d`� �okfile_at(start_file$,-1,start_t%) � t%=start_t%:start_t%=-1:�loadfile(start_file$,-1,t%)
n
x�
�(ș "Wimp_PollIdle",,q%,1E9 � reason%
��respond(reason%)
�
�quit%
�	�quit
��
�
���respond(reason%)
��waitpoint
�Ȏreason%�
��0:
��1:
�9�2:�open(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28)
��3:�closew(!q%)
�4:
�5:
.�6:�mouse(!q%,q%!4,q%!8,q%!12,q%!16,q%!20)
"�7:�enddrag
,�8:
6�9:�menuselect
@�10
J�11
T�12
^�17,18:�umess1
h�19:�umess2
r�
|�normpoint
��
�
���quit:�normpoint
��debug:�tidy:�
�2$q%="TASK":ș "Wimp_CloseDown",taskhandle%,!q%
�Ș
�
�
��init
�� q% 2500, workbuf% 100
�appl$="Atelier"
��findmos
�waiter%=0:�waitpoint
�Dș "OS_GetEnv" � SA$:� �SA$,7,5)="-quit" � testing=� � testing=�
�init_at

�checkmos
*fx229,1
&wimpsaved%=�
0$v%=�initwimp:�v%<180:�12:�err(2)
:)quit%=�:dialogue%=-1E9:stopreason%=-1
Dackpending%=�:ackref%=-1
Ndragreason%=-1:help$=""
Xsavereason%=-1
b�defws:�defmenus:�version
lcheckref%=-1
vas$="Are you sure ?"
��baricon
�� find start bit
�start_file$="":start_t%=-1
�� �
�+� � � start_file$="":start_t%=-1:� �TtC
�ș "OS_GetEnv" � r0,r1,r2
�	A$=""
�&� ?r0<>0 � A$+=�(?r0):r0+=1:� �dFB
�-� �A$," ")<>0 � A$=�A$,�A$," ")+1):� �dPB
�� A$<>"" �
� ș "OS_File",5,A$ � r0,r1,r2
�� r0=1 �
�>� ((r2 � &FFF00000)=&FFF00000) � start_t%=(r2 � &FFF00)>>8
start_file$=A$
�
�
 �
*� end start bit
4�
>
H
��version
R/�T$:T$=version$:笤prod:T$+=" *UNFINISHED*"
\�seti(w_pinfo%,4,"v"+T$)
f�
p
z,ݤprod=�version$,�version$,".")+1,1)="0"
�ݤdebug=��prod ��-1��-2
�
�ݤinitwimp
�E$q%="TASK":ș "Wimp_Initialise",200,!q%,"Atelier"�!q%,taskhandle%
�=!q%
�
�
��tidy
��normpoint
��4:�0,2);:*fx4
�*fx225,1
�
*fx229
��:�:�" ";�:�
��


��baricon
*!q%=-1:q%!4=0:q%!8=0:q%!12=64:q%!16=68
$-q%!20=%11000000000010:$(q%+24)="!Atelier"
.$ș"Wimp_CreateIcon",,q%�baricon%
8�
B
L!��error(err%,err$,erl%,quit%)
V.�normpoint:dragreason%=-1:@%=&90A:*fx229,1
`�i%,e%,t$,T$
j�debug:err$+=" ("+Þ+")"
t�
~��:�error(�,�$,�,�)
�9!q%=err%:$(q%+4)=err$:ș"Wimp_ReportError",q%,1,appl$
��quit%:�quit
��
�
�*��report:�debug:�4:�:�" @ ";�:�tidy:�
��
�
�	ݤdir
� �T$:T$=�ArfVar(appl$+"$Dir")
��T$="":T$="&.!"+appl$+"."
���T$)<>".":T$+="."
�=T$


ݤArfVar(A$)
�
���=292:="":���:�err(0)
("ș&23,A$,workbuf%,200,0,3�,,L%
2workbuf%?L%=13:=$workbuf%
<
F��umess1
P-ref%=q%!8:task%=q%!4:�task%=taskhandle%:�
Zmess%=q%!16
dȎmess%�
n�0:�quit
x�1:�datasaved
��2:�savedata
��3:�dataload
��4:ackpending%=�
��5:�dataopen
��6:
��7:
��8:�prequit
��9:
�
�&502:
�-�&400C0:�submenu(q%!20,q%!24,q%!28,q%+32)
��
��
�
��dataopen

�s%,t%
'file$=�zts(q%+44):s%=q%!36:t%=q%!40
"?�okfile_at(file$,s%,t%)�dataloadack:�loadfile(file$,s%,t%)
,�
6
@��dataload
J
�s%,t%
T'file$=�zts(q%+44):s%=q%!36:t%=q%!40
^?�okfile_at(file$,s%,t%)�dataloadack:�loadfile(file$,s%,t%)
h�
r
|��datasaved
�
�s%,t%
�'file$=�zts(q%+44):s%=q%!36:t%=q%!40
�(�okfile_at(file$,s%,t%)�datasaveack
��
�
���template(T$)
��template1(T$,q%)
��
�
���template1(T$,q%)
�� c%:$workbuf%=T$
�Jș "Wimp_LoadTemplate",,q%,curbuf%,endbuf%,-1,workbuf%�,,curbuf%,,,,c%
�.� c%=0 � � 1,"Template '"+T$+"' not found"
�

��defws
&�I%
0bufsz%=&1000
:;� buffer% bufsz%:curbuf%=buffer%:endbuf%=buffer%+bufsz%
D'ș"Wimp_OpenTemplate",,�dir+"AtFrm"
NB�template("stopbox"):q%!64=1:ș"Wimp_CreateWindow",,q%�w_stop%
X?�template("save"):q%!64=1:ș"Wimp_CreateWindow",,q%�w_save%
b<�template("ProgInfo"):ș"Wimp_CreateWindow",,q%�w_pinfo%
lș"Wimp_CloseTemplate"
vfree%=endbuf%-curbuf%
��
�
���defmenus
��t$
�� mlist% 32,function% 51
�bufsz%=&200
�C� menufree% bufsz%:menuptr%=menufree%:menuend%=menufree%+bufsz%
�menustart%=menufree%:�+2
��t$:m_save%=�crmenu(t$)
ڹ�"#Save,Compressed Screen}w_save%,System Screen}w_save%,Super Compacted Screen}w_save%,Super Compacted Sprite}w_save%,System Sprite(s)}w_save%,Brush Shapes}w_save%,Patterns}w_save%"
��t$:m_main%=�crmenu(t$)
�/�"#Atelier,Info>w_pinfo%,Save>m_save%,Quit"
��

��front(h%,X%,Y%)

�getw(h%)
 �X%>=0x1%+=X%-x0%:x0%=X%
*�Y%>=0y1%+=Y%-y0%:y0%=Y%
4*�open(h%,x0%,y0%,x1%,y1%,scx%,scy%,-1)
>�
H
R
��top(h%)
\6�getw(h%):�open(h%,x0%,y0%,x1%,y1%,scx%,scy%,-1):�
f
p4��open(oh%,ox0%,oy0%,ox1%,oy1%,oscx%,oscy%,obh%)
z�O%
�'!q%=oh%:ș"Wimp_GetWindowState",,q%
�
�wimpopen
��
�
���wimpopen
�5!q%=oh%:q%!4=ox0%:q%!8=oy0%:q%!12=ox1%:q%!16=oy1%
�>q%!20=oscx%:q%!24=oscy%:q%!28=obh%:ș"Wimp_OpenWindow",,q%
��
�
���closew(!q%)
��I%
�ș"Wimp_CloseWindow",,q%
�.�!q%=dialogue%:dialreason%=-1:dialogue%=-1
	$�dialogue%>=0:�closew(dialogue%)
	
Ȏ!q%�
	�w_stop%:stopreason%=-1
	$�
	.�
	8
	B*ݤia(h%,i%):�geti(h%,i%):�chkii:=q%!28
	L*ݤva(h%,i%):�geti(h%,i%):�chkii:=q%!32
	V*ݤil(h%,i%):�geti(h%,i%):�chkii:=q%!36
	`
	j3��chkii:�(q%!24�&100)=0�1,"Icon not indirected"
	t�
	~
	�<��geti(h%,i%):!q%=h%:q%!4=i%:ș"Wimp_GetIconState",,q%:�
	�
	���stop(r%,T$,U$,T%)
	�dialreason%=r%
	��-3mi%=3:�mstop:�
	�+�seti(w_stop%,0,T$):�seti(w_stop%,1,U$)
	�)�unselall(w_stop%):�dialogue(w_stop%)
	�dialreason%=r%
	��
	�
	���dialogue(h%)
	�
�X%,Y%
$�dialogue%>=0:�closew(dialogue%)

-�nomenu:�readpointer:X%=mx%-200:Y%=my%-85

�X%<0X%=0
�Y%<96Y%=96
(2dialogue%=h%:�front(h%,X%,Y%):�setct(h%,-1,-1)
2�
<
F!��readpointer:�q%:q%=workbuf%
Pș"Wimp_GetPointerInfo",,q%
Z1mx%=!q%:my%=q%!4:mb%=q%!8:mh%=q%!12:mi%=q%!16
d�
n
xݤdialogue
�!�dialogue%>=0�mh%<>dialogue%�
��closew(dialogue%)
��
�=�
�
�$��mouse(mx%,my%,mb%,mh%,mi%,mo%)
��dragreason%>=0�mb%>255:�
��dialogue:�
�
Ȏmb%�
��2:�menu
��1,4:�select
��16,64:�startdrag
��
�

6��seti(h%,i%,T$):T$=�T$,�il(h%,i%)):$�ia(h%,i%)=T$
"<�iconupd(h%,i%):�getct:�!q%=h%�q%!4=i%:�setct(h%,i%,�T$)
,�
6
@'��iset(h%,i%,B%,E%):�q%:q%=workbuf%
J?!q%=h%:q%!4=i%:q%!12=B%:q%!8=E%:ș"Wimp_SetIconState",,q%:�
T
^'��iconupd(h%,i%):�iset(h%,i%,0,0):�
h
r��readblock(p%)
|7x0%=!p%:y0%=p%!4:x1%=p%!8:y1%=p%!12:� physical area
�Fscx%=p%!16:scy%=p%!20:bhandle%=p%!24:� scroll offsets, stack depth
�Jbx%=x0%-scx%:by%=y1%-scy%:� calculate physical co-ords of logical area
�>ex0%=p%!40:ey0%=p%!44:ex1%=p%!48:ey1%=p%!52:� logical area
�Agx0%=p%!24:gy0%=p%!28:gx1%=p%!32:gy1%=p%!36:� graphics window
�.open%=(p%!28�&10000)<>0:� window open flag
��
�
���getw(h%)
�&!q%=h%:ș "Wimp_GetWindowInfo",,q%
��readblock(q%+4)
��
�
���select

Ȏmh%�
�-2:enter%=0:�enter_atelier
�w_stop%:�mstop
&�w_save%:�msave
0�
:�
D
N��mstop
X�mi%<3�mi%>4�
b%�T%:T%=dialreason%:dialreason%=-1
l�mi%=3�
v	ȎT%�
��1:�quit
��
��
��closew(w_stop%):�
�
���msave
��mi%<>0�
�g�T$:T$=$�ia(w_save%,2):�T$=�leaf(T$):�99,"To save, please drag the file icon to a directory viewer"
�file$=T$:�savedata1
��
�
���startdrag
�"dragreason%=-1:dragbutton%=mb%


Ȏmh%�

6�w_save%:�mi%=3:dragreason%=1:�dragicon(w_save%,3)

�

 �

*

4
��enddrag

>�readpointer

H
�mh%<>-1�

RȎdragreason%�

\#�1:file$=�leaf($�ia(w_save%,2))

f-�savereq(file$,savet%,saves%,savereason%)

p�

z�

�dragreason%=-1

��

�

�,��unseli(h%,i%):�iset(h%,i%,&200000,0):�

�

�0��seli(h%,i%):�iset(h%,i%,&200000,&200000):�

�

���unselall(h%)

��I%,i%:�wchi(h%)

�(I%=q%:�:i%=!I%:�i%>=0:�unseli(h%,i%)

�I%+=4:�i%<0:�

�

�8��wchi(h%):ș "Wimp_WhichIcon",h%,q%,&200000,&200000
�


��menu
$
Ȏmh%�
.$�-2:my%=64+3*40:�pop(m_main%,-1)
8�
B�
L
Vݤpar(t$,s$,� i%):�i1%
`i1%=i%+1:i%=�t$+s$,s$,i1%)
j=�t$,i1%,i%-i1%)
t
~ݤcrmenu(menu$)
�.�menufree%+28>menuend%�99,"Menu area full"
�� m%
�menuptr%=menufree%
�i%=0
�C� �menu$,1)="#"i%=1:menutitle$=�par(menu$,",",i%)�menutitle$=""
�$menuptr%=menutitle$
�;menuptr%?12=7:menuptr%?13=2:menuptr%?14=7:menuptr%?15=0
�3menuptr%!16=196-24:menuptr%!20=40:menuptr%!24=0
�"menuptr%+=28:maxx%=�menutitle$
��item$=�par(menu$,",",i%)
��menuitem(item$)
�� item$=""
$m%=menufree%:m%!16=(maxx%*8+6)*2

menufree%=menuptr%
=m%

(��menuitem(text$)
2.�text$=""menuptr%!-24=(menuptr%!-24)�&80:�
<.�menuptr%+24>menuend%��99,"Menu area full"
F�i%,flg%
Pflg%=&00
Zi%=�text$,">")
d<�i%>0subptr%=��text$,i%+1):text$=�text$,i%-1)�subptr%=-1
ni%=�text$,"}")
x;�i%>0subptr%=��text$,i%+1):text$=�text$,i%-1):flg%+=&08
�)��text$,1)="#"text$=�text$):flg%+=&02
�;menuptr%!0=flg%:menuptr%!4=subptr%:menuptr%!8=&07000021
��text$,1)="$"�
�2!menuptr%+=&04:menuptr%!8+=&100:i%=�text$,"(")
�3�i%>0�L%=��text$,i%+1):text$=�text$,i%-1)�L%=12
�8menuptr%!12=��text$,2):menuptr%!16=-1:menuptr%!20=L%
�text$=�L%," ")
��
��text$<=12�
�$(menuptr%+12)=text$
��
�%I%=�workspace(�text$+1):$I%=text$
�6menuptr%!12=I%:menuptr%!16=-1:menuptr%!20=�text$+1
 menuptr%!8=menuptr%!8 � &100
�
�text$>maxx%maxx%=�text$
"�
,menuptr%+=24
6�
@
Jݤworkspace(L%)
T2� curbuf%+L%>endbuf%�99,"No more buffer space"
^curbuf%+=L%:=curbuf%-L%
h
r��prep(menu%,tree%)
|
�I%,T$
��clearts(menu%)
�Ȏmenu%�
��m_main%:�mp_main
��
��
�
�
��mp_main
��n%,f$,s%,t%
�
�tree%>0�
��!mlist%=1�
�>n%=mlist%!4:�setfile_at(n%,f$,s%,t%):�saveset(f$,t%,n%,s%)
��
��
�

��pop(menu%,tree%)
&�menu%<0:�
0�prep(menu%,tree%)
:-ș "Wimp_CreateMenu",,menu%,mx%-50,my%+32
Dopenmenu%=menu%
N�
X
b��nomenu
l(ș"Wimp_CreateMenu",,-1:openmenu%=-1
v�
�
���menuselect
��I%
�-I%=0:�mlist%!I%=q%!I%:I%+=4:�q%!(I%-4)=-1
��readpointer
�Ȏopenmenu%�
��m_main%:�m_main
��
��mb%=1�
�#�pop(openmenu%,mlist%):��nomenu
��
��
�
��m_main
Ȏ!mlist%�
�0:�dialogue(w_pinfo%)
 !�2:�altered_at:�qquit:��quit
*�
4�
>
H��submenu(menu%,X%,Y%,q%)
R
� ;{{{{{{
\�I%
f-I%=0:�mlist%!I%=q%!I%:I%+=4:�q%!(I%-4)=-1
p�prep(openmenu%,mlist%)
z'ș"Wimp_CreateSubMenu",,menu%,X%,Y%
��
�
� ��clearts(mh%):�I%:I%=mh%+28
�"�mh%<menustart%�mh%>menuend%:�
��
�"!I%=!I%��1:I%!8=I%!8��&400000:
�I%+=24:�I%!-24�&80
��
�
���shade(mh%,I%)
�/mh%!(28+8+24*I%)=mh%!(28+8+24*I%)�&400000:�
�
���tick(mh%,I%)
'mh%!(28+24*I%)=mh%!(28+24*I%)�&01:�


ݤcommand
$
�T%,I%,T$
.ș"OS_GetEnv" � T$
8�strip(T$)
B=T$
L
Vݤparam
`�I%,T$:T$=�command
jI%=�T$," -quit "):�I%=0:=""
tT$=�T$,I%+7):�strip(T$)
~1I%=�T$," "):�I%>0T$=�T$,I%+1):�strip(T$):�=""
�,I%=�T$," "):�I%>0T$=�T$,I%-1):�strip(T$)
�=T$
�
�ݤfiletype(T$)
�$�T%,U%:ș "OS_File",5,T$ �U%,,T%
�
�T%=0:=-1
�=(T%�&FFF00)>>8
� 
���waitpoint
�� os%<>2 �
�waiter%+=1
�ș"Hourglass_On"
�


��normpoint
� os%<>2 �
(8ȕwaiter%>0:ș"Hourglass_Off":waiter%-=1:�:waiter%=0
2�
<
F
��help
P�
Z
d��dataloadack
nq%!0=20:q%!12=ref%:q%!16=4
x$ș"Wimp_SendMessage",17,q%,task%
��
�
���datasaveack
�<�ArfVar("Wimp$Scrap")="":�99,"<Wimp$Scrap> not defined"
�A!q%=60:q%!12=ref%:q%!16=2:q%!36=-1:$(q%+44)="<Wimp$Scrap>"+�0
�1ș"Wimp_SendMessage",17,q%,task%:ackref%=q%!8
��
�
���savereq(T$,t%,s%,r%)
�savereason%=r%
�+q%!32=my%:q%!28=mx%:q%!24=mi%:q%!20=mh%
�,q%!16=1:q%!12=0:q%!36=s%:q%!40=t%:!q%=60
�9$(q%+44)=T$+�0:ș"Wimp_SendMessage",17,q%,q%!20,q%!24
saveref%=q%!8:�

��loadmess
"$(q%+44)=file$+�0:!q%=60
,7q%!12=ref%:q%!16=3:ș"Wimp_SendMessage",17,q%,task%
6ackpending%=�:�
@ 
Jݤzts(T%):�T$:T$=""
Tȕ?T%<>0:T$+=�?T%:T%+=1:�
^=T$
h
r+��getct:ș"Wimp_GetCaretPosition",,q%:�
|
�>��setct(h%,i%,o%):ș "Wimp_SetCaretPosition",h%,i%,,,-1,o%
��
�
�ݤleaf(T$)
�
�I%,C%
�$�((�T$,".")=0)�(�T$,":")=0))�=T$
�I%=�(T$)
��
�C%=��T$,I%,1)
�	I%-=1
��(I%<=0�C%=�"."�C%=�":")
��I%>0�=�T$,�(T$)-I%-1)
�=T$

��scrsz
H!workbuf%=4:workbuf%!4=5:workbuf%!8=11:workbuf%!12=12:workbuf%!16=-1
&1ș "OS_ReadVduVariables",workbuf%,workbuf%+24
0Iq%!32=(workbuf%!32)<<(workbuf%!24):q%!36=(workbuf%!36)<<(workbuf%!28)
:�
D
N��saveset(f$,T%,r%,s%)
X0savereason%=r%:savef$=f$:savet%=T%:saves%=s%
b>�seti(w_save%,2,f$):$�va(w_save%,3)="sfile_"+�"00"+�~T%,3)
l�
v
���dragicon(h%,i%)
��x%,y%,ys%
�,�getw(h%):ys%=y1%-y0%:x%=bx%:y%=y0%-scy%
�1�geti(h%,i%):q%!8+=x%:q%!12+=y%+ys%:q%!16+=x%
�0q%!20+=y%+ys%:q%!24=0:q%!28=0:!q%=0:�drag5:�
�
���drag5:�readpointer:�scrsz
�Fq%!24-=mx%-q%!8:q%!28-=my%-q%!12:q%!32+=q%!16-mx%:q%!36+=q%!20-my%
�!q%!4=5:ș"Wimp_DragBox",,q%:�
�
���savedata
��q%!12<>saveref%:�
�file$=�zts(q%+44)
�savedata1
�

  ��savedata1:�closew(w_save%)
* �savefile(savereason%,file$)
4savereason%=-1:�loadmess
>�
H
R
��prequit
\�altered_at:�ackrec:�qquit
f�
p
z9��ackrec:q%!12=ref%:ș "Wimp_SendMessage",19,q%,task%
�:��qquit:�stop(1,"Lose screen and quit Atelier",as$,-1)
��
� 
���enter_atelier
� �:��:��:�restorewimp:��,�$
�#enter%=0:�run_at:�restorewimp:�
�
���savefile(n%,f$)
� �:��:��:�restorewimp:��,�$
�"�save_at(n%,f$):�restorewimp:�
�
���savewimp:�os%=1:�
�� wimpsaved% � �
wimpsaved%=�
&�I%,J%:� SYS"Wimp_CommandWindow",1
�normpoint:mode%=�:�mode15
$
*fx229
.�
8
B��restorewimp:�os%=1:�
L� � wimpsaved% � �
Vwimpsaved%=�
`*fx229,1
jș "Wimp_CommandWindow",-1
tGș "Wimp_SetMode",mode%:�:ș"Wimp_ForceRedraw",-1,-1E9,-1E9,1E9,1E9
~�
�
���mode15
��
����:��:�99,"Atelier needs to use MODE 15 and there is not enough RAM! You must use the task manager to make at least 160k of screen available"
�	�15:�
�
���findmos:os%=1
��:��:��:�
��+1
�os%=2:�
�
���checkmos:os%=1
�:��:��:�mos12:�

�+1
os%=2:�

(��mos12
2	�15:�
<
ș &400C0
Fenter%=0
P�run_at
Z�12:*desktop
d�
n
x��store(� A$,f$)
��I%,C%,T$:T$=f$:�T$>""�
��I%=1��T$:C%=��T$,I%)
�"�C%>64�C%<91�T$,I%,1)=�(C%+32)
��
��
��T$,"$scrap>")=0A$=f$
��
�
�
�G� ----ATELIER BITS-------------------------------------------------
���run_at
�<� ;{{ here, copy the background screen to the foreground
�>� ;{{ and do the biz. NB all ERROR traps etc MUST be LOCAL
�
�savewimp
��normpoint
,� 23,255,255,255,255,255,255,255,255,255
cat%!0=148

cat%!4=-1
"&ș "OS_ReadVduVariables",cat%,cat%
,!topscreen%=!cat%
6�unsetsoftkeys
@ș "OS_RemoveCursors"
J�setvectors
T� undorestore%
^�enter_action
h
� colour%
r� mousecolour%
|� liftdown%
��5:� helptext%
��update
��atelier
�
� liftup%
�� undosave%
��unsetvectors
�� PROCsetsoftkeys
��restorewimp
��
�
���setvectors
�� vectors_set% � �
�"ș "OS_Claim",&1D,duff_call%,0
�set_abort_traps
vectors_set%=�
�
&
0��unsetvectors
:� � vectors_set% � �
D$ș "OS_Release",&1D,duff_call%,0
N�unset_abort_traps
Xvectors_set%=�
b�
l
v��enter_action
�� � �:�error_at:�
�Ȏ enter% �
��0:� no action,just enter
��1:� compacted load
�
*UnDefine
�*SetPosition 0 1023
�'G%=cat%:$cat%=f$:� com_update_info%
��"PlotFile "+f$
�$enter%=0:�store($screen_str%,f$)
�5�2:$file_str%=f$  :� sprites - handled by atelier
��3:$cat%=f$
�G%=cat%
�� compactedload%
� undosave%
enter%=0
�
 �
*
4ݤaltered_at
>B� ;{{ return TRUE if you would lose any data if they quit just
H>� ;{{ now (ie they have altered screen/sprites/brushes etc
RC� ;{{ since last save/load. Just return FALSE if you don't care
\=�
f
pݤokfile_at(f$,s%,t%)
zI� t%=&D7E � t%=&D3A � t%=&D7F � t%=&D39 � t%=&FF9 � t%=&DE2 � =� � =�
�
���loadfile(f$,s%,t%)
� �:��:��:�restorewimp:��,�$
�%�load_at(f$,s%,t%):�restorewimp:�
�
���load_at(f$,s%,t%)
�Ȏ t% �
��&D7F,&FF9,&DE2
�ș "OS_Find",&40,f$ � hdl%
�ș "OS_GBPB",4,hdl%,cat%,1
�ș "OS_Find",&00,hdl%
��
�Ȏ t% �
;�&D7E:�"LOAD "+f$+" "+�~(brush%):�store($brush_str%,f$)
E�&D3A:�"LOAD "+f$+" "+�~(brpatt%):�store($pattern_str%,f$):!pm%=1
�&D7F:enter%=1:�run_at
$�&D39:�formula_load(f$)
.2�&FF9:enter%=2:�store($sprite_str%,f$):�run_at
82�&DE2:enter%=3:�store($screen_str%,f$):�run_at
B�
L�
V
`��save_at(n%,f$)
j� savecheck%
tȎ n% �
~�0,1,2,3
�=ș "OS_File",&0A,f$,&FFF,,cat%,cat%   :� saves dummy file
�
�savewimp
�cat%!0=148:cat%!4=-1
�&ș "OS_ReadVduVariables",cat%,cat%
�+!topscreen%=!cat%:ș "OS_RemoveCursors"
�� undorestore%
�Ȏ n% �
�2�0:�compressedsave(f$):�store($screen_str%,f$)
�0�1:�"SCREENSAVE "+f$:�store($screen_str%,f$)
�3�2:�compactedsave(0,f$):�store($screen_str%,f$)
�3�3:�compactedsave(1,f$):�store($screen_str%,f$)
��
�restorewimp

+�4:�"SSAVE "+f$:�store($sprite_str%,f$)
A�5:�"SAVE "+f$+" "+�~(brush%)+" +2000":�store($brush_str%,f$)
�"SETTYPE "+f$+" D7E"
(B�6:�"SAVE "+f$+" "+�~(brpatt%)+" +2000":�store($brush_str%,f$)
2�"SETTYPE "+f$+" D3A"
<�
F�
P
Z#��setfile_at(n%,� f$,� s%,� t%)
dA� ;{{ setup up f$ to be filename, s% to estimated size and t%
n2� ;{{ to filetype for file of internal type n%
x3� ;{{ NB s%<0 means unknown size, try it anyway
�Ȏ n% �
�)�0:t%=&DE2:f$=$screen_str% :s%=&28000
�)�1:t%=&FF9:f$=$screen_str% :s%=&28000
�%�2:t%=&D7F:f$=$screen_str% :s%=-1
�%�3:t%=&D7F:f$=$screen_str% :s%=-1
�:�4:t%=&FF9:f$=$sprite_str% :ș "OS_SpriteOp",8�,,,,,s%
�(�5:t%=&D7E:f$=$brush_str%  :s%=&2000
�(�6:t%=&D3A:f$=$pattern_str%:s%=&2000
��
��
�
�
��animate
�� count=0 � 359 � 18
0MX=640:MY=512:�128+(!pc%�63) Ȝ (!pc%�192):�
$step%=happenstep%:�screen_select
+�compactedsave(1,"Frame"+�(count � 18))
"�
,�
6
@
��atelier
Jangle=0
T*FX 15,0
^6�                    ---------MAIN LOOP-----------
h� � � �error_at
r�
|�
�
mrctx1%=0
�
mrcty1%=0
�mrctx2%=1279
�mrcty2%=1023
�
Ȏ !Ac% �
�9�35,36:mrctx1%=32:mrcty1%=32:mrctx2%=1216:mrcty2%=960
�(�24:� step%>2 � �setlimits(xs%,-ys%)
�D�71:� step%>2 � mrctx1%=x1%:mrcty1%=y2%:mrctx2%=xs%:mrcty2%=-ys%
�/�75:� step%>2 � mrctx2%-=xs%�2:mrcty2%+=ys%
�a�37,40:� �sprites>0 � � locatesprite%:ș &2E,40,,!sprstr � ,,,xs%,ys%:�setlimits(xs%*2,ys%*4)
��
�)ȗ ȓ mrctx1%,mrcty1%,mrctx2%,mrcty2%
��mouse_handle
 !� MB=2 � enter% � �menucalled
 AcCODE%=?(!step_codes)
 happenstep%=(AcCODE% � 15)
 &"stepcode%=?(!step_codes+step%)
 0R� (!pm%=2) � (stepcode% � 64) � step%+=1:�copysort:F%=step%:� helpstep%:� �Tf`
 :
Ȏ !Ac% �
 D�60,61,62,63,64,65
 NȎ !rect_brush_mode �
 X�0:AcCODE%=AcCODE% � 191
 b*�1:happenstep%+=1:AcCODE%=AcCODE% � 64
 l(� step%=2 � stepcode%=stepcode% � 16
 v+�2:happenstep%+=1:AcCODE%=AcCODE% � 191
 �+� step%=1 � stepcode%=stepcode% � 16+32
 ��
 ��
 �R� (AcCODE% � 64) � step%=happenstep% � step%=1:�BUTOFF(4):F%=step%:� helpstep%
 �O� � (AcCODE% � 64) � step%=happenstep% � step%=step%-1:F%=step%:� helpstep%
 �
Ȏ � �
 �0�(� (AcCODE% � 64)) � (step%=happenstep%-1):
 �5� (MB � 4)=4 � step%=step%+1:F%=step%:� helpstep%
 �
 �N� � select � � (MB � 4)=(step% � 1)*4 � step%=step%+1:F%=step%:� helpstep%
 �I� select � � (MB � 4) � step%=step%+1:F%=step%:� helpstep%:�BUTOFF(4)
 ��
 �
*FX 229,1
!#� step%=happenstep% � *FX 229,0
!inaction=!Ac%
!!� (MB � 1)=1 � �adjustpressed
! 	E%=-1
!*� stepcode% � 16 �
!4Ȏ step% �
!>�0,1:C%=MX-x0%:D%=MY-y0%
!H�2,3:C%=MX-x1%:D%=MY-y1%
!R�4,5:C%=MX-x3%:D%=MY-y3%
!\�
!fM� stepcode% � 32 � B%=C%*2:C%=D%:� calc_radius%:C%=!RESULTX/2:E%=2 � E%=0
!p�
!zA%=MX:B%=MY:� help%
!�+� step%=happenstep% � (AcCODE% � 128) �
!�Ȗ
!�
� liftup%
!�
� colour%
!�2� !pm%>0 � (AcCODE% � &20) � � bit_map_scan_A%
!��screen_select
!�3� !pm%>0 � (AcCODE% � &20) � � bit_map_pattern%
!�#� (AcCODE% � 16) � � show_thru%
!�� liftdown%
!��
!�� 3,63 Ȝ 192
!��screen_select
!��
".keypress%=�(0):� keypress%>0 � �keypressed
"*� inaction<>!Ac% � �process_new_action
",� step%<>oldstep% � F%=step%:� helpstep%
"$oldstep%=step%
".
� !Ac%=20
"8�reset_action
"B
� os%=1 �
"L� testing �
"VS�errorhandle(3,"Where to Boss","Basic Program|Source Code|Don't Exit",selected)
"`�
"jP�errorhandle(2,"Do you really wish to exit from ATELIER","CONFIRM",selected)
"t�
"~� selected=1
"��
"�)� testing � � selected=1 � selected=2
"�� � testing � � selected=1
"�7�          -------------END OF MAIN LOOP ----------
"�� � testing � os%=2 � �
"��tidy_at
"�*FX 15,0
"�Ȏ selected �
"��1:
"�*KEY 4 SAVE|MRUN|M
"�*FX 138,0,69
"�*FX 138,0,68
#*FX 138,0,46
#
*FX 138,0,46
#*FX 138,0,13
#�
#(�2:
#2*KEY 4 RUN|M
#<K�string_to_buffer("LO. ""<Ateli*$Dir>.Sour*.Sou*"""+�(13)+"ED.."+�(13))
#F�
#P�
#Z�
#d
#n��adjustpressed
#x� !Ac%=82 � !Ac%=59 �
#��reset_action
#��
#�R� (MB � 1)=1 � step%>1 � step%=step%-1:�BUTOFF(1):�update:F%=step%:� helpstep%
#��
#��
#�
#���reset_action
#�!Ac%=!oldaction%
#��
#�
#���mouse_handle
#�"ȗ MX,MY,MB:� mgs � �mousegrid
#�� !left_handed � Ȏ MB �
$�%001:MB=%100
$�%011:MB=%110
$�%100:MB=%001
$"�%110:MB=%011
$,�
$6� � �(-97) � �
$@2� �(-1) � xrst%=MX:yrst%=MY � ȗ � xrst%,yrst%
$J�
$T
$^� �mousegrid
$h1MX=((MX+mousegrid � 2) � mousegrid)*mousegrid
$r1MY=((MY+mousegrid � 2) � mousegrid)*mousegrid
$|� MX<mrctx1% � MX=mrctx1%
$�� MY<mrcty1% � MY=mrcty1%
$�� MX>mrctx2% � MX=mrctx2%
$�� MY>mrcty2% � MY=mrcty2%
$�Ȓ � MX,MY
$��
$�
$���set_action
$�
Ȏ !Ac% �
$��57,59,82,43
$�
$�!oldaction%=!Ac%
$��
$��
%
%��BUTOFF(M)
%�
%&ȗ DX,DY,MB
%0� !left_handed � Ȏ MB �
%:�%001:MB=%100
%D�%011:MB=%110
%N�%100:MB=%001
%X�%110:MB=%011
%b�
%l� (MB � M)=0
%v�
%�
%���keypressed
%�*FX 15,0
%�Ȏ �(keypress%) �
%��"*":enter%=5
%��
%�� (keypress% � 128)=0 � �
%�Ȏ keypress% �
%�+�&80,&90,&A0,&B0        :� f0-print key
%�
� liftup%
%�� undosave%
%��point(0,0)
%��(funcprint$)
&!� �<>15 � � 15:� undorestore%
&�update
&� liftdown%
& �&B1
&*� undosave%
&4
*FX229
&>� 0
&H�2
&R� !Ac%=0 � 82
&\!rect_brush_mode=(!Ac% � 3)
&f�"Function ";!Ac%
&p�
&z� helptext%
&��
&��
&��3
&�� 15
&�� undorestore%
&�9�&81,&91,&A1,&B1:� liftup%:� undorestore%:� liftdown%
&�0�&82,&92,&A2,&B2:step%=1:�set_action:!Ac%=57
&�`�&83,&93,&A3,&B3:� !Ac%<>82 � step%=1:�set_action:!Ac%=82 � !brushsel%=((!brushsel%+1) � 15)
&�:�&84,&94,&A4,&B4:!pm%=0:!pc%=�MX,MY)+Ȝ(MX,MY):�update
&��&85,&95,&A5,&B5
&�O� !helpstatus% � � helpon%:�5:� helptext%:F%=step%:� helpstep% � � helpoff%
&��&86,&96,&A6,&B6
&�mgs=1-mgs:�update
'�&87,&97,&A7,&B7
'� testing � keypress%=&A7 �
'
*FX229
'$"� liftup%:�animate:� liftdown%
'.�
'8
� liftup%
'B� undosave%
'L� liftdown%
'V�
'`�&88,&98,&A8,&B8
'jC� (testing � keypress%=&88) � (� testing) � �set_action:!Ac%=20
't-� testing � keypress%=&98 � os%=1:!Ac%=20
'~^� testing � keypress%=&A8 � � liftup%:A%=!presentmenu%:G%=MX:H%=MY:� drawmenu%:� liftdown%
'��
'�keyin%=(keypress%�&F)-9
'�� keyin%>4 � keyin%=-1
'�� keyin%>-1 �
'�&keylevel%=(((keypress%�&F0)>>4)�4)
'�Y� �(-3) � function%(keyin%,keylevel%)=!Ac% � !Ac%=function%(keyin%,keylevel%):�update
'��
'��
'�
'���process_new_action
'�� !Ac%=33 � �reset_action
'�3�5:� helptext%:F%=1:� helpstep%:step%=1:�update
(�
(

(��menucalled
(�set_action
((ȗ ȓ 0,0,1279,1023
(2
� liftup%
(<!mousebuts=0
(F.� ?(!actionsave)<255 � ?(!actionsave)=!Ac%
(P-� 128+(BACKCOL% � 63) Ȝ (BACKCOL% � 192)
(ZȎ enter% �
(d!�2:A%=7:� downtree%:� sprites
(n �5:A%=28:� downtree%:� oscli
(x�
(�&� enter%=4 � !Ac%=12 � A%=9 � A%=0
(�G%=MX:H%=MY:� menusystem%
(�� !Ac%=33 � �reset_action
(�step%=1:�update:�BUTOFF(7)
(�� !Ac%<>43 �
(�� liftdown%
(��5:� helptext%
(�F%=step%:� helpstep%
(��
(�5� ?(!actionsave)<255 � !oldaction%=?(!actionsave)
(�enter%=0
(��
(�
)��initerror
)� �=15 � � 0
)� 7
)"� �=17 � �"Escaped!":�
),�$;" at line ";�
)6� � testing � �
)@*FX 15,0
)JA=�
)T(�string_to_buffer("ED. "+�(�)+�(13))
)^�
)h�
)r
)|��string_to_buffer(tran$)
)��
)� �"FX 138,0,"+�(�(�tran$,1)))
)�tran$=�tran$,2)
)�� tran$=""
)��
)�
)�
��tidy_at
)��setsoftkeys
)��unsetvectors
)��
)�
)���unsetsoftkeys
)�$� R=221 � 228:�"FX "+�(R)+",2":�
*
*FX 219,9
*�
*
*&��setsoftkeys
*0$� R=221 � 228:�"FX "+�(R)+",1":�
*:
*FX 219,9
*D�
*N
*X
��init_at
*b � testing � � � � �initerror
*l	��DXj
*v6PNglass=2:PNbrush=3:PNflood=4:PNpencil=5:PNspray=6
*�MPNnormal=7:PNspriteop=8:PNcalculator=14:PNkeyboard=15:PNA=16:PNstopped=17
*�PNquestion=18:PNhand=19
*�5com_gx1%=0:com_gy1%=0:com_gx2%=1278:com_gy2%=1020
*�� *FX 229,1
*��unsetsoftkeys
*�
K=1024
*��� BLOW% 1*K,cat% 1*K,STORE% 160*K,brush% 8*K,brpatt% 8*K,cycle% 128,file_icons% 3*K,log_table% 256,log_scale% 1040,formnames% 1*K,fontlist% 1*K
*Ə� skel% 1764*10,sqr% &5201,sin% 360*4,tan% 90*4,numbers% &720,screen_str% 256,pattern_str% 256,brush_str% 256,sprite_str% 256,file_str% 256
*Џ� behind% 256,flags% 4,PO% &14DC,sprstr% 30,fontstr% 45,presentfont% 80,xget% 800,yget% 800,BUFF% 1*K,BUFFER% 35328,freetable% 256,abts% 16
*�=� L(640),A%(641,1),B%(256,1),function%(4,3),formulas$(10)
*�$�"LOAD "+�dir+"POINTER "+�~(PO%)
*�� os%=1 � �point(0,1)
*�$s%=�(�dir+"code*"):sz%=�#s%:�#s%
+0� code% sz%:�"LOAD "+�dir+"code* "+�~(code%)
+pl$="LOAD "+�dir
+�pl$+"!Brushes "+�~(brush%)
+ !�pl$+"!Patterns "+�~(brpatt%)
+*#*Com_Open <Atelier$Dir>.Sprites
+4�in(file_icons%,"40 8")
+>�in(numbers%,"12 8")
+H�in(BUFFER%,"384 92")
+R*Com_Close
+\
�codevars
+f� os%=1 � �point(0,0)
+p$screen_str%="Screen"
+z$pattern_str%="Patterns"
+�$brush_str%="Brushes"
+�$sprite_str%="SpriteFile"
+�$sprstr%="new_sprite"
+�g_sprite$="new_sprite"
+�cycle%!0=16
+�
� R=0 � 3
+�� o%
+�� R1=0 � 3
+�!(cycle%+R*16+R1*4+4)=o%+R1
+��:�
+�"� R=0 � 255:?(behind%+R)=255:�
+�U� R=1 � 256:?(log_table%+R-1)=20+(R^2)/300:�:� R=0 � 5248:!(sqr%+R*4)=�(R*1024):�
+�)� R=0 � 359:!(sin%+R*4)=��(R)*65536:�
,(� R=0 � 89:!(tan%+R*4)=��(R)*65536:�
,� 0,44,208,252
,%� 4,364,408,584,224,584,72,456,72
,$
� numlist
,.!bolpoint%=numlist
,8� R=0 � !bolpoint%-1
,B	� X,Y
,L#!(xget%+R*4)=X:!(yget%+R*4)=Y+4
,V�
,`?(flags%)=255
,j?(flags%+1)=255
,t?(flags%+2)=255
,~?(flags%+3)=255
,�!sprstr=sprstr%
,�!brpatt=brpatt%
,�!flags=flags%
,�
!cat=cat%
,�!behind=behind%
,�!brushshapes=brush%
,�!BUFF=BUFF%
,�
!FLOB=PO%
,�!bolx=xget%
,�!boly=yget%
,�!fontstr=fontstr%
,�!presentfont=presentfont%
-!STORE=STORE%
-
!freetable=freetable%
-!put=BUFFER%
-!cycle=cycle%
-(!screen_str=screen_str%
-2!pattern_str=pattern_str%
-<!brush_str=brush_str%
-F!sprite_str=sprite_str%
-P!file_icons=file_icons%
-Z!log_table=log_table%
-d!log_scale=log_scale%
-n!numbers=numbers%
-x
!sqr=sqr%
-�
!sin=sin%
-�
!tan=tan%
-�!file_str=file_str%
-�!formnames=formnames%
-�!skel=skel%
-�!fontlist=fontlist%
-�� �
-�8� � � $fontlist%="Font Disk Not Present"+�(0):� �d\m
-�� initialisation%
-�� �
-��checkdumper
-�xrst%=640:yrst%=512
-�x0%=0:y0%=0:x1%=0:y1%=0
.x2%=0:y2%=0:x3%=0:y3%=0
.x4%=0:y4%=0:x5%=0:y5%=0
. actionflags%=8:actionstep%=3
."xs%=0:ys%=0:oldstep%=0
.,step%=1:vectors_set%=�
.6wedge%=0:col%=0
.@psizex%=292:psizey%=309
.Jxpsize%=-1:ypsize%=-1
.Tmgs=�:mcs=�
.^mousegrid=32:select=�
.hP%=formnames%
.r
[OPT 0
.|
EQUB 1
.�EQUB 10
.�EQUS "Defineable"
.�]
.�formula$="SIN(YR)*50"
.�$dummy=�build_formula(formula$,0)
.�botrad$="1"
.�(atext$="Atelier (C) Simon Clay 1989"
.��removekeymod
.�funcprint$="BYE"
.�eval$=""
.�!oldaction%=60
.��
.�
/
/��in(b%,s$)
/"�"Com_Sprites $ "+�(b%)+" "+s$
/&�
/0
/:��removekeymod
/D� �
/N� � � �
/X!*Unplug InternationalKeyboard
/b�
/l
/v��set_abort_traps
/�abts%!0=!&C
/�abts%!4=!&10
/�abts%!8=!&14
/�� PASS=0 � 2 � 2
/�	P%=&C
/�
[OPT PASS
/�<B abt1%       ;sets abort on instuction fetch error trap
/�9B abt2%       ;sets abort on data transfer error trap
/�4B abt3%       ;sets address exception error trap
/�]�
/��
/�
/���unset_abort_traps
0!&0C=abts%!0
0!&10=abts%!4
0!&14=abts%!8
0 �
0*
04��codevars
0>
0Hvariablelocate%=code%+4*1
0Rcom_put%=code%+4*2
0\locatesprite%=code%+4*3
0fhelp%=code%+4*4
0phelpon%=code%+4*5
0zhelpoff%=code%+4*6
0�helpstep%=code%+4*7
0�helptext%=code%+4*8
0�liftup%=code%+4*9
0�liftdown%=code%+4*10
0�colour%=code%+4*11
0�undorestore%=code%+4*12
0�undosave%=code%+4*13
0�drawmenu%=code%+4*14
0�menusystem%=code%+4*15
0�mousecolour%=code%+4*16
0�screen_select%=code%+4*17
0�spriteinit%=code%+4*18
0�magnify%=code%+4*19
1uptree%=code%+4*20
1putbackground%=code%+4*21
1com_get%=code%+4*22
1$"putscreenrectangle%=code%+4*23
1.brusheor%=code%+4*24
18brushdraw%=code%+4*25
1Bbrushundo%=code%+4*26
1Lspritepix%=code%+4*27
1Vbrushget%=code%+4*28
1`shapeget%=code%+4*29
1jspriteputerror%=code%+4*30
1t#getspritefromscreen%=code%+4*31
1~priorityin%=code%+4*32
1�undochar%=code%+4*33
1�undobox%=code%+4*34
1�scanscreen%=code%+4*35
1�colourbyte%=code%+4*36
1�calc_intensity%=code%+4*37
1�splodgeread%=code%+4*38
1�setbord%=code%+4*39
1�abt1%=code%+4*40
1�FINDMENU%=code%+4*41
1�SKIPWORD%=code%+4*42
1�drawword%=code%+4*43
1�abt2%=code%+4*44
2abt3%=code%+4*45
2
COLaverage%=code%+4*46
2COLgcol%=code%+4*47
2"COLmode15_13resize%=code%+4*48
2(show_thru%=code%+4*49
22swap_pixels%=code%+4*50
2<#COLsmooth_rectangle%=code%+4*51
2Fcompactedsave%=code%+4*52
2Pscreensave%=code%+4*53
2Zbit_map_scan_A%=code%+4*54
2dbit_map_scan_B%=code%+4*55
2nbit_map_pattern%=code%+4*56
2xvertical_fill%=code%+4*57
2�copy_fill%=code%+4*58
2�calc_radius%=code%+4*59
2�framedraw%=code%+4*60
2�spin_bottle%=code%+4*61
2�translate_point%=code%+4*62
2�#anti_aliased_squash%=code%+4*63
2�screenload%=code%+4*64
2�initialisation%=code%+4*65
2�formframedraw%=code%+4*66
2�form_translate%=code%+4*67
2�convertmode%=code%+4*68
2�bytecolour%=code%+4*69
2�downtree%=code%+4*70
3checksprites%=code%+4*71
3compactedload%=code%+4*72
3savecheck%=code%+4*73
3"fontlistinit%=code%+4*74
3,duff_call%=code%+4*75
36draw_error_box%=code%+4*76
3@com_update_info%=code%+4*77
3J
3T�variablelocate%
3^
3hc=!code%
3r
3|
Ac%=c+4*0
3�printmenu%=c+4*1
3�
pc%=c+4*2
3�brushsel%=c+4*3
3�helpstatus%=c+4*4
3�presentmenu%=c+4*5
3�bolpoint%=c+4*6
3�topscreen%=c+4*7
3�blowcol%=c+4*8
3�YES%=c+4*9
3�putit%=c+4*10
3�sprsel%=c+4*11
3�startx%=c+4*12
3�starty%=c+4*13
4compaction%=c+4*14
4sprpos=c+4*15
4freecol=c+4*16
4&OUT=c+4*17
40limtop=c+4*18
4:limbot=c+4*19
4Dstart=c+4*20
4Nhlength=c+4*21
4XRESULTX=c+4*22
4bRESULTY=c+4*23
4llastmenu=c+4*24
4vr1store=c+4*25
4�r0store=c+4*26
4�left_handed=c+4*27
4�compact3x4=c+4*28
4�inlaysed=c+4*29
4�sprstr=c+4*30
4�brpatt=c+4*31
4�flags=c+4*32
4�cat=c+4*33
4�behind=c+4*34
4�brushshapes=c+4*35
4�BUFF=c+4*36
4�FLOB=c+4*37
4�bolx=c+4*38
5boly=c+4*39
5fontstr=c+4*40
5presentfont=c+4*41
5 STORE=c+4*42
5*freetable=c+4*43
54put=c+4*44
5>cycle=c+4*45
5Hrect_brush=c+4*46
5Rscreen_str=c+4*47
5\pattern_str=c+4*48
5fbrush_str=c+4*49
5psprite_str=c+4*50
5zhelp_text_data=c+4*51
5�file_icons=c+4*52
5�bit_map=c+4*53
5�fillstylepic=c+4*54
5�log_table=c+4*55
5�log_scale=c+4*56
5�
5�numbers=c+4*58
5�magnify_xpos=c+4*59
5�magnify_ypos=c+4*60
5�putpos=c+4*61
5�magputpos=c+4*62
5�sizex=c+4*63
5�sizey=c+4*64
6sprsize=c+4*65
6spritex=c+4*66
6spritey=c+4*67
6$gtspritex=c+4*68
6.gtspritey=c+4*69
68diskfontlistposition=c+4*70
6Bcatpos=c+4*71
6Lfontsel=c+4*72
6Vpattsel=c+4*73
6`treepos=c+4*74
6jmatrixput=c+4*75
6tbarval_red=c+4*76
6~barval_grn=c+4*77
6�barval_blu=c+4*78
6�scaleval_left=c+4*79
6�scaleval_right=c+4*80
6�cycleplace=c+4*81
6�cycledirection=c+4*82
6�cyclemode=c+4*83
6�pm%=c+4*84
6�mixval_red=c+4*85
6�mixval_grn=c+4*86
6�mixval_blu=c+4*87
6�mousex=c+4*88
6�mousey=c+4*89
7mousebuts=c+4*90
7
magnification=c+4*91
7magnify_xget=c+4*92
7magnify_yget=c+4*93
7(magnify_status=c+4*94
72HANG=c+4*95
7<rect_brush_mode=c+4*96
7Fvacant=c+4*97
7Pcom_x1=c+4*98
7Zcom_y1=c+4*99
7dcom_x2=c+4*100
7ncom_y2=c+4*101
7xsprint_xsize=c+4*102
7�sprint_ysize=c+4*103
7�spritemask=c+4*104
7�fill_style=c+4*105
7�fill_prop=c+4*106
7�fill_logr=c+4*107
7�fill_dith=c+4*108
7�step_codes=c+4*109
7�border=c+4*110
7�sqr=c+4*111
7�actionsave=c+4*112
7�bottle=c+4*113
7�bot_tilt=c+4*114
7�bot_lean=c+4*115
8bot_xout=c+4*116
8bot_yout=c+4*117
8line_selected=c+4*118
8"bot_finish=c+4*119
8,bot_xscale=c+4*120
86bot_yscale=c+4*121
8@hangdelay=c+4*122
8Jsin=c+4*123
8Ttan=c+4*124
8^file_str=c+4*125
8hform=c+4*126
8rtilt=c+4*127
8|lean=c+4*128
8�rotation=c+4*129
8�xscale=c+4*130
8�yscale=c+4*131
8�hscale=c+4*132
8�form_list_pos=c+4*133
8�formnames=c+4*134
8�formula=c+4*135
8�skel=c+4*136
8�shade_range=c+4*137
8�min_shade=c+4*138
8�fontlist=c+4*139
8�oldaction%=c+4*140
8�
9
9BORDSIZE=28
9WEDGESIZE=16
9&textcol%=0
90BACKCOL%=202
9:TITLECOL%=0
9DBORDERCOL%=74
9NBORD1%=207
9X
BORD2%=15
9bBORD3%=138
9lBORD4%=197
9vDIRECTORYCOL%=224
9�
9��
9�
9���screen_select
9�
9�#� (!Ac%=1 � !Ac%=2) � step%=3 �
9��
9��mouse_handle
9�7D%=!Ac%:E%=step%:F%=MB:G%=MX:H%=MY:� screen_select%
9�
� MB=0
9�� !Ac%=1 � x1%=MX:y1%=MY
9��
9�7D%=!Ac%:E%=step%:F%=MB:G%=MX:H%=MY:� screen_select%
:�
:
� !YES% �
:Ȏ step% �
: �1:x1%=MX:y1%=MY
:*�2:x2%=MX:y2%=MY
:4�3:x3%=MX:y3%=MY
:>�4:x4%=MX:y4%=MY
:H�5:x5%=MX:y5%=MY
:R�
:\�
:f� !YES% � �
:p
:z
:�Ȏ (!Ac%) �
:�
:�
� Magnify
:��12:Ȏ step% �
:��2:enter%=4
:�!magnify_xpos=MX � 2
:�!magnify_ypos=255-(MY � 4)
:��
:�
:�
� Fill
:��13:Ȏ step% �
:��2:�point(0,0)
:�� 128+�MX,MY) Ȝ Ȝ(MX,MY)
;Ȏ !fill_style �
;�0:
; � !pm%>0 � � bit_map_scan_A%
;$�&85,MX,MY
;.!� !pm%>0 � � bit_map_pattern%
;8�1,2,3:
;B� bit_map_scan_A%
;L�&85,MX,MY
;VȎ !fill_style �
;`�1,2:� vertical_fill%
;j�3:A%=MX �2:B%=255-MY �4
;t� vertical_fill%
;~�
;��
;��update
;��
;�
;�� Sprite Handling
;�
�14,16
;�+� 0,(textcol% � 63) Ȝ (textcol% � 192)
;�/� 0,128+(BACKCOL% � 63) Ȝ (BACKCOL% � 192)
;�ș &2E,8 � ,,,r3
;�,ș &2E,13,,sprstr%,30,!sprsel% � ,,,leng
;�?(sprstr%+leng+1)=13
;�errorcheat=!Ac%
<"!putit%=1:�point(0,PNkeyboard)
<
�reset_action:� uptree%
<(A%=-128:B%=!starty%+56:E%=-1:� help%
</A%=-128:B%=!starty%-!sizey-96:E%=-1:� help%
<(2XP=!startx%+6:YP=!starty%-48:� XP,YP:� 5:�" ";
<2*step%=1:�$sprstr%:!starty%=!starty%-32
<<'old$=$sprstr%:old$=�old$,�(old$)-1)
<F#go=�instring(33,126,"",out$,12)
<P� liftup%:� putbackground%
<Z
� go �
<dȎ errorcheat �
<n;�16:� "SCOPY "+old$+" "+out$:!sprsel%=r3+1:!sprpos=r3-5
<x"�14:� "SRENAME "+old$+" "+out$
<��
<��
<��reset_entry
<�
<�� Save Compressed Screen
<�,�15:� �text_entry(33,$screen_str%,255) �
<�7�point(0,1):�compressedsave(out$):$screen_str%=out$
<��
<��reset_entry
<�
<�� Save Brushes
<�+�17:� �text_entry(33,$brush_str%,255) �
<�6�point(0,1):� "SAVE "+out$+" "+�~(brush%)+" +2000"
=/�("SETTYPE "+out$+" &D7E"):$brush_str%=out$
=�
=�reset_entry
="
=,� Name Sprite
=67�18:� �text_entry(33,g_sprite$,12) � g_sprite$=out$
=@!Ac%=38:�reset_entry
=J
=T� Save Patterns
=^-�19:� �text_entry(33,$pattern_str%,255) �
=h7�point(0,1):� "SAVE "+out$+" "+�~(brpatt%)+" +2000"
=r1�("SETTYPE "+out$+" &D3A"):$pattern_str%=out$
=|�
=��reset_entry
=�
=� � function 20 -- FINISH -- !
=�
=�� Set Border Colour
=��21:�reset_action
=�� setbord%
=�
=�
� Ellipse
=��22:Ȏ step% �
=��1:x1%=MX:y1%=MY
=�#�2:rd%=�((MX-x1%)^2+(MY-y1%)^2)
=�ȏ x1%,y1%,rd%
>Ȗ:Ȗ:ȏ x1%,y1%,rd%
>*�3:� x1%,y1%:� x1%+rd%,y1%:� &C5,MX,MY
>-Ȗ:Ȗ:� x1%,y1%:� x1%+rd%,y1%:� &C5,MX,MY
>&*�4:� x1%,y1%:� x1%+rd%,y1%:� &C5,MX,MY
>0�
>:
>D� EllipseFill
>N�23:Ȏ step% �
>X�1:x1%=MX:y1%=MY
>b#�2:rd%=�((MX-x1%)^2+(MY-y1%)^2)
>lȏ x1%,y1%,rd%
>vȖ:Ȗ:ȏ x1%,y1%,rd%
>�*�3:� x1%,y1%:� x1%+rd%,y1%:� &C5,MX,MY
>�-Ȗ:Ȗ:� x1%,y1%:� x1%+rd%,y1%:� &C5,MX,MY
>�*�4:� x1%,y1%:� x1%+rd%,y1%:� &CD,MX,MY
>��
>�
>�� fastcopy
>��24:Ȏ step% �
>��1,2:�getrectangle
>�,�3:MX=(MX � 2)*2:MY=(MY � 4)*4:�copysort
>�ȓ MX,MY,xs%-2,-(ys%+4)
>�!Ȗ:Ȗ:ȓ MX,MY,xs%-2,-(ys%+4)
>��4:
>�A%=x1%�2
?B%=255-(y1%�4)
?C%=xs%�2
?
D%=-ys%�4
? E%=MX �2
?*F%=255-(MY �4)+(ys%+4)�4
?4G%=!pm%
?>� putscreenrectangle%
?H�
?R
?\� smearcopy
?f�25:Ȏ step% �
?p�1,2:�getrectangle
?z�3:px1%=MX:py1%=MY
?��4:� px1%,py1%,MX,MY
?�Ȗ:Ȗ:� px1%,py1%,MX,MY
?�px2%=MX:py2%=MY
?�0�5:� px1%,py1%,px2%,py2%:� MX,MY:� px1%,py1%
?�3Ȗ:Ȗ:� px1%,py1%,px2%,py2%:� MX,MY:� px1%,py1%
?�px3%=MX:py3%=MY
?�<�6:� px1%,py1%,px2%,py2%:� px3%,py3%:� MX,MY:� px1%,py1%
?�?Ȗ:Ȗ:� px1%,py1%,px2%,py2%:� px3%,py3%:� MX,MY:� px1%,py1%
?�px4%=MX:py4%=MY
?��7:
?�!�smearscreen(x1%,y1%,xs%,ys%)
?��
?�
@� Parrallogram
@�26:Ȏ step% �
@�1:px1%=MX:py1%=MY
@$�2:� px1%,py1%,MX,MY
@.Ȗ:Ȗ:� px1%,py1%,MX,MY
@8px2%=MX:py2%=MY
@BP�3:� px1%,py1%,px2%,py2%:� MX,MY:� px1%-(px2%-MX),py1%-(py2%-MY):� px1%,py1%
@LSȖ:Ȗ:� px1%,py1%,px2%,py2%:� MX,MY:� px1%-(px2%-MX),py1%-(py2%-MY):� px1%,py1%
@VP�4:� px1%,py1%,px2%,py2%:� MX,MY:� px1%-(px2%-MX),py1%-(py2%-MY):� px1%,py1%
@`�
@j
@t� Parralogram fill
@~�27:Ȏ step% �
@��1:px1%=MX:py1%=MY
@��2:� px1%,py1%,MX,MY
@�Ȗ:Ȗ:� px1%,py1%,MX,MY
@�px2%=MX:py2%=MY
@�P�3:� px1%,py1%,px2%,py2%:� MX,MY:� px1%-(px2%-MX),py1%-(py2%-MY):� px1%,py1%
@�SȖ:Ȗ:� px1%,py1%,px2%,py2%:� MX,MY:� px1%-(px2%-MX),py1%-(py2%-MY):� px1%,py1%
@�*�4:� px1%,py1%:� px2%,py2%:� &75,MX,MY
@��
@�
@�	� Cls
@��28:
@���errorhandle(2,"Do you really wish to clear the screen to the current colour (NOTE You can UNDO afterwards)","CONFIRM",selected)
A� selected=1 �
A

� liftup%
A!� colour%:ȓ Ȑ 0,0,1279,1023
A� liftdown%
A(�
A2�reset_action
A<�update
AF
AP!� Filing (Believe it or not!)
AZ�29,30,31,32
Ad�point(0,1)
An(errorcheat=!Ac%:filename$=$file_str%
Ax�reset_action:� uptree%
A�Ȏ errorcheat �
A�:�29:� "SLOAD "+filename$:$sprite_str%=filename$:!pm%=2
A�;�30:� "SMERGE "+filename$:$sprite_str%=filename$:!pm%=2
A��31
A�� liftup%:� undosave%
A�$screen_str%=filename$
A�Ȏ os% �
A�!�1:B%=file_str%:� screenload%
A� :� "SCREENLOAD "+$file_str%
A��
A�
� �<>15 �
A�ș "OS_RemoveCursors"
A�
Ȏ �(0) �
B�"D","d"
B#� R=0 � 15:� R,R<<4,R<<4,R<<4:�
B�"I","i"
B"&� R=0 � 15:� 15-R,R<<4,R<<4,R<<4:�
B,�
B6� �:err%=�
B@� � � err%=�:� �@^B
BJ� convertmode%
BT$screen_str%=filename$
B^�15
Bh� �
Brș "OS_RemoveCursors"
B|� undorestore%
B�� err% � � �,�$
B��
B�� liftdown%
B� �32:�formula_load(filename$)
B��
B��update
B�
B�� Function 33 = dummy
B�
B�� Eval Expression
B�&�34:!putit%=1:�point(0,PNkeyboard)
B��reset_action:� uptree%
B�(A%=-128:B%=!starty%+56:E%=-1:� help%
C/A%=-128:B%=!starty%-!sizey-96:E%=-1:� help%
Cstep%=1
C�
C&4dummy=�instring(32,126,eval$,out$,255):� dummy �
C0&!starty%-=32:�BUTOFF(7):eval$=out$
C:5�eval_error_cheat:dummy=�instring(32,126,t$,t$,1)
CD�
CN!starty%+=32:�BUTOFF(7)
CX
� � dummy
Cb� liftup%:� putbackground%
Cl�reset_entry
Cv
C�� Pattern & Brush get
C��35,36:Ȏ step% �
C��1:ȓ MX-32,MY-32,62,60
C�Ȗ:Ȗ:ȓ MX-32,MY-32,62,60
C�)�2:A%=(MX � 2)-16:B%=255-((MY � 4)+7)
C�
Ȏ !Ac% �
C��35:� brushget%
C��36:� shapeget%
C��
C��
C�
C�� Sprite put
C��37:� �put_check �
DȎ step% �
D.�1:MX=(MX � 2)*2:MY=(MY � 4)*4:�spritesort
Dȓ MX,MY,xs%-2,-(ys%+4)
D !Ȗ:Ȗ:ȓ MX,MY,xs%-2,-(ys%+4)
D*�2:�spritesort
D4A%=x1%�2
D>B%=255-(y1%�4)
DHC%=xs%�2
DR
D%=-ys%�4
D\E%=MX �2
DfF%=255-(MY �4)+(ys%+4)�4
DpG%=2
Dz� putscreenrectangle%
D��
D��
D�
D�� Get Sprite
D��38:Ȏ step% �
D��1,2:�getrectangle
D��3:�sortcord
D�A%=x1%:B%=y1%:C%=x2%:D%=y2%
D��point(0,0)
D�$sprstr%=g_sprite$
D�� getspritefromscreen%
D��update
D��
E
E� Save Sprites
E,�39:� �text_entry(33,$sprite_str%,255) �
E$1�point(0,1):� "SSAVE "+out$:$sprite_str%=out$
E.�
E8�reset_entry
EB
EL� Sprite smear
EV�40:� �put_check �
E`Ȏ step% �
Ej.�1:MX=(MX � 2)*2:MY=(MY � 4)*4:�spritesort
Etȓ MX,MY,xs%-2,-(ys%+4)
E~!Ȗ:Ȗ:ȓ MX,MY,xs%-2,-(ys%+4)
E��2:�spritesort
E�� "SCHOOSE "+$sprstr%
E�	� 8,0
E��
E��mouse_handle
E�� &ED,MX,MY
E�
� MB=0
E��
E��
E�
E�� Printer Dumps
E��41
F�reset_action
F
*FX 229
F
� liftup%
F+A$="SCREENDUMP 0 "+�~(!line_selected-1)
F(� A$
F2� liftdown%
F<�update
FF
FP� Delete Sprite
FZ�42
Fd� �sprites �
Fn,ș &2E,13,,sprstr%,30,!sprsel% � ,,,leng
Fx?(sprstr%+leng+1)=13
F�Z�errorhandle(2,"Do you really wish to delete the sprite "+$sprstr%,"Confirm",selected)
F�� selected=1 �
F��"SDELETE "+$sprstr%
F�+� !sprsel%>�sprites � !sprsel%=�sprites
F�� !sprsel%<1 � !sprsel%=1
F��
F��
F�� 7
F��
F��reset_action:�update
F�
F�� oscli
F��43:
G�oscliaction
G�checkdumper
G
G"!� Anti aliased text to screen
G,�44:Ȏ step% �
G6�1:�getrectangle
G@�2:�getrectangle
GJ�3:�sortcord
GTtint%=((!pc% � 192) >> 2)
G^ red%=tint%+((!pc% � 3) << 6)
Gh!grn%=tint%+((!pc% � 12) << 4)
Gr!blu%=tint%+((!pc% � 48) << 2)
G|tint2%=Ȝ(MX,MY) >> 2
G�back%=�MX,MY)
G�#red2%=tint2%+((back% � 3) << 6)
G�$grn2%=tint2%+((back% � 12) << 4)
G�$blu2%=tint2%+((back% � 48) << 2)
G�FONT$=$presentfont%+�(13)
G�3� 23,25,&FF,15,red2%,grn2%,blu2%,red%,grn%,blu%
G�Bș "Font_FindFont",,FONT$,320,320,0,0 � roman%  :� ;scrapsizes
G�;ș "Font_StringBBox",,atext$ � ,xmin%,ymin%,xmax%,ymax%
G�/xsize%=�(xmax%-xmin%):ysize%=�(ymax%-ymin%)
G�0ș "Font_ReadScaleFactor" � ,xscale%,yscale%
G�*psizex%=(x2%-x1%)*320/(xsize%/xscale%)
G�*psizey%=(y1%-y2%)*320/(ysize%/yscale%)
G�#xo%=(xmin%/xscale%)*psizex%/320
H#yo%=(ymin%/yscale%)*psizey%/320
H:ș "Font_FindFont",,FONT$,psizex%,psizey%,0,0 � roman%
H2ș "Font_Paint",,atext$,%10000,x1%-xo%,y2%-yo%
H&� 63 Ȝ 192
H0�
H:
HD� Anti box text to screen
HN�45:Ȏ step% �
HX�1:
HbFONT$=$presentfont%+�(13)
HlCș "Font_FindFont",,FONT$,320,320,0,0 � roman%   :� ;scrapsizes
Hv;ș "Font_StringBBox",,atext$ � ,xmin%,ymin%,xmax%,ymax%
H�/xsize%=�(xmax%-xmin%):ysize%=�(ymax%-ymin%)
H�0ș "Font_ReadScaleFactor" � ,xscale%,yscale%
H�$xs%=(xsize%/xscale%)*psizex%/320
H�$ys%=(ysize%/yscale%)*psizey%/320
H�#xo%=(xmin%/xscale%)*psizex%/320
H�#yo%=(ymin%/yscale%)*psizey%/320
H�ȓ MX+xo%,MY+yo%,xs%,ys%
H�	Ȗ:Ȗ
H�ȓ MX+xo%,MY+yo%,xs%,ys%
H��2:
H�tint%=((!pc% � 192) >> 2)
H� red%=tint%+((!pc% � 3) << 6)
H�!grn%=tint%+((!pc% � 12) << 4)
I!blu%=tint%+((!pc% � 48) << 2)
Itint2%=Ȝ(MX,MY) >> 2
Iback%=�MX,MY)
I #red2%=tint2%+((back% � 3) << 6)
I*$grn2%=tint2%+((back% � 12) << 4)
I4$blu2%=tint2%+((back% � 48) << 2)
I>3� 23,25,&FF,15,red2%,grn2%,blu2%,red%,grn%,blu%
IH:ș "Font_FindFont",,FONT$,psizex%,psizey%,0,0 � roman%
IR(ș "Font_Paint",,atext$,%10000,MX,MY
I\� 63 Ȝ 192
If�
Ip
Iz� demo function
I��46
I��reset_action
I���errorhandle(1,"This is a demonstration version of ATELIER so this function has been disabled,|CALL 0392 437756 to order a proper version of ATELIER, the ultimate art package.","||Continue",selected)
I�
I�� Bottle draw
I��47:Ȏ step% �
I��1,2:�getrectangle
I��3
I�� 29,MX;MY;
I�F%=-1:� framedraw%
I�	Ȗ:Ȗ
I�� 29,MX;MY;
I�F%=-1:� framedraw%
J� spin_bottle%
J�4:�point(0,0)
J
�copysort
J$steps%=�(ys%)/4-1
J.PT%=(!bolpoint%)-1
J8TL=0:� R%=1 � PT%
JBFL(R%)=�(((�boltx(R%)-�boltx(R%-1))^2+(�bolty(R%)-�bolty(R%-1))^2))
JLTL=TL+L(R%)
JV� R%
J`TLP=TL/(steps%-1)
JjTLP=(TL+TLP-1)/(steps%)
Jt� YP%=0 � steps%
J~FL=YP%*TLP:GP%=0:FLB=0
J�
� FL<TL �
J��
J�FLB=FLB+L(GP%)
J�
GP%=GP%+1
J�� FLB>FL
J��
J�
GP%=PT%-1
J��
J�
GP%=GP%-1
J�� GP%>PT% � GP%=PT%-1
J�� GP%<1 � GP%=1
J�LL=FLB-L(GP%)
KPL=FL-LL
K
PM=PL/L(GP%)
KBB%(YP%,0)=(((�boltx(GP%))-(�boltx(GP%-1)))*PM)+(�boltx(GP%-1))
K<B%(YP%,1)=((�bolty(GP%)-�bolty(GP%-1))*PM)+�bolty(GP%-1)
K(	� YP%
K2PT%=�(y1%-y2%)
K<ST%=�(xs%)
KFSTCM=360/ST%
KP	SB%=0
KZ#T1%=0:T2%=steps%-1:TS%=1:y1%+=1
Kd6� !bot_lean<=90 � T1%=steps%-1:T2%=0:TS%=-1:y1%-=2
Kn6� !bot_lean>270 � T1%=steps%-1:T2%=0:TS%=-1:y1%-=2
Kx� BT%=T1% � T2% � TS%
K�wedge%=0
K�X%=B%(BT%,0):Y%=B%(BT%,1)
K�	SC%=0
K�
CT%=-1
K�� !bot_lean<=180 �
K�!deg1=-STCM:deg2=360:degs=STCM
K��
K�#deg1=359+STCM:deg2=0:degs=-STCM
K��
K�� Cd=deg1 � deg2 � degs*2
K�
CT%=CT%+1
K�� 26
K�
Ȏ !pm% �
L2�0,1:plt%=�gcol(x2%-(Cd+1)/STCM+2,y1%-BT%*4+4)
L*�2:plt%=�gcol(x2%-Cd/STCM-1,y1%-BT%*4)
L�
L"angle=Cd
L,?A%=632-((632-X%)*�(botrad$)):B%=Y%:C%=Cd:� translate_point%
L6XD%=!bot_xout:YD%=!bot_yout
L@� 29,MX;MY;     :� origin
LJ� SB%>0 � SC%>0 � plt% �
LT� LXD2%,LYD2%
L^� LXD%,LYD%:� &55,XD%,YD%
Lh�&55,A%(CT%,0),A%(CT%,1)
Lr�
L|	SC%=1
L�!LXD%=A%(CT%,0):LYD%=A%(CT%,1)
L�LXD2%=XD%:LYD2%=YD%
L�A%(CT%,0)=XD%:A%(CT%,1)=YD%
L�� Cd
L�� UNTIL C%*STCM>360
L�	SB%=1
L�	� BT%
L��update
L�� 26
L��
L�
L�� Set Mouse Grid
L�)�48:� �text_entry(33,�(mousegrid),15)
Mmousegrid=�(out$)
M� mousegrid<1 � mousegrid=1
M	mgs=1
M&�
M0�reset_entry
M:
MD� Formula Entry
MN �49:oldform$=formula$:test=�
MX"!putit%=1:�point(0,PNkeyboard)
Mb�reset_action:� uptree%
Ml(A%=-128:B%=!starty%+56:E%=-1:� help%
Mv/A%=-128:B%=!starty%-!sizey-96:E%=-1:� help%
M��
M�.go=�instring(32,126,formula$,formula$,255)
M�P%=formnames%
M�num%=?P%:P%+=1
M�F=0
M�test$=""
M�num2%=?P%:P%+=1
M�� R=1 � num2%
M�test$=test$+�(?P%)
M�P%+=1:�
M�5� formula$=test$ � formula$=formulas$(F-1):� �pJM
M�F+=1
M�� F<num% � � �prM
N6� go � �point(0,0):test=�build_formula(formula$,0)
N� test � � go
N� � go � formula$=oldform$
N !formula=0
N*� liftup%:� putbackground%
N4�reset_entry
N>
NH�50,54,53:Ȏ step% �
NR� FORMULA COPY
N\�1,2:�getrectangle
Nf�3:
Np� 29,MX;MY;
NzF%=-1:� formframedraw%
N�	Ȗ:Ȗ
N�� 29,MX;MY;
N�F%=-1:� formframedraw%
N��4:�copysort
N�)xsteps=720/(xs%/2):ysteps=720/(ys%/4)
N�� !Ac%=53 �
N��point(0,PNcalculator)
N�max=-65536
N�
min=65536
N�	ofm=0
N�� XD=-360 � 360 � xsteps
N�wedge%=0
N�� YD=360 � -360 � ysteps
OXR=�(XD)
OYR=�(YD)
O?� !formula=0 � FM=�(formula$) � FM=�(formulas$(!formula-1))
O$
FD=ofm-FM
O. � YD<360 � � FD>max � max=FD
O8 � YD<360 � � FD<min � min=FD
OB
ofm=FM
OL� YD,XD
OV�
O`	YF%=0
Oj�point(0,0)
Ot� YD=360 � -360 � ysteps
O~wedge%=0
O�� XD=-360 � 360 � xsteps
O�XR=�(XD)
O�YR=�(YD)
O�?� !formula=0 � FM=�(formula$) � FM=�(formulas$(!formula-1))
O�'A%=XD:B%=YD:C%=FM:� form_translate%
O�npx%=!bot_xout
O�npy%=!bot_yout
O�0PX%=((360+XD)/xsteps):PY%=((360+YD)/-ysteps)
O�� 4
O�� 26
O�#xp%=x1%+PX%*2-2:yp%=y2%+PY%*4+3
O�plt%=�gcol(xp%,yp%)
P� XD>-360 � YD<360 � plt% �
P
� !Ac%=53 �
P-num%=4+(((L(PX%)-FM)-min)/((max-min)/11))
P%� num%<4 � num%=4:� testing � � 7
P('� num%>15 � num%=15:� testing � � 7
P2(A%=col%:B%=15-num%:� calc_intensity%
P<�
PF� 29,MX;MY;
PP� nlpx%,nlpy%
PZ'� A%((�(PX%))-1,0),A%((�(PX%))-1,1)
Pd#� &55,A%(�(PX%),0),A%(�(PX%),1)
Pn� &55,npx%,npy%
Px� !Ac%=54 �
P�
� colour%
P�� nlpx%,nlpy%
P�'� A%((�(PX%))-1,0),A%((�(PX%))-1,1)
P�� npx%,npy%
P�� A%(�(PX%),0),A%(�(PX%),1)
P�� nlpx%,nlpy%
P��
P��
P�
L(PX%)=FM
P�nlpx%=A%(�(PX%),0)
P�nlpy%=A%(�(PX%),1)
P�A%(�(PX%),0)=npx%
P�A%(�(PX%),1)=npy%
Q�
Q� XD
Q	YF%=1
Q"� YD
Q,�update
Q6� 26
Q@�
QJ
QT� Rotate copy
Q^�51:Ȏ step% �
Qh�1,2:�getrectangle
Qr�3:x3%=MX:y3%=MY
Q|
�4:�shape
Q�Ȗ:Ȗ:�shape
Q�$�5:�smearscreen(x1%,y1%,xs%,ys%)
Q��
Q�
Q�� AA text input
Q�2�52:� �text_entry(32,atext$,255) � atext$=out$
Q��reset_entry
Q�
Q�� Save Compacted Screen
Q�,�55:� �text_entry(33,$screen_str%,255) �
Q�8�point(0,1):�compactedsave(0,out$):$screen_str%=out$
Q��
Q��reset_entry
R
R� Set Print Key Command
R:�56:� �text_entry(32,funcprint$,255) � funcprint$=out$
R&�reset_entry
R0
R:� undo box
RD�57:Ȏ step% �
RN�1,2:�getrectangle
RX�3:�sortcord
Rb A%=x1%:B%=y1%:C%=xs%:D%=-ys%
Rl� undobox%
Rv�
R�!step%=1:�reset_action:�update
R��
R�
R�� Save System Screen
R�,�58:� �text_entry(33,$screen_str%,255) �
R�6�point(0,1):� "SCREENSAVE "+out$:$screen_str%=out$
R��
R��reset_entry
R�
R�� Title Screen
R��59:Ȏ step% �
R�"�1:� �sprites=0 � �titlesprite
R��2:�reset_action
S�
S
S
� Brushes
S �60,61,62,63,64,65
S*A%=!Ac%-60
S4Ȏ !rect_brush_mode �
S>�0:Ȏ step% �
SH)�1:A%=(MX � 2)-16:B%=255-((MY � 4)+8)
SR� brusheor%
S\Ȗ:Ȗ:� brusheor%
Sf�2:�
Sp�mouse_handle
Sz"B%=MX-32:C%=MY+32:� brushdraw%
S�
� MB=0
S��
S��1:Ȏ step% �
S��1,2:�getrectangle
S��3:�point(0,0)
S�
�sortcord
S�$B%=x1%:C%=y1%:D%=xs%�2:E%=-ys%�4
S�� brushdraw%
S��update
S��
S��2:Ȏ step% �
S��1:x0%=640:y0%=512
S�'ȏ x0%,y0%,�((MX-x0%)^2+(MY-y0%)^2)
T	Ȗ:Ȗ
T'ȏ x0%,y0%,�((MX-x0%)^2+(MY-y0%)^2)
TR%=�((MX-x0%)^2+(MY-y0%)^2)
T$�3:�
T.�mouse_handle
T8(AN=�(�(360)):RO%=�(�(�(80)))*(R%/10)
TBB%=MX+�(AN)*RO%
TLC%=MY+�(AN)*RO%
TV� brushdraw%
T`
� MB=0
Tj�
Tt�
T~
T�� Anti aliased squash
T��67:Ȏ step% �
T��1,2:�getrectangle
T��3:x3%=MX:y3%=MY
T��4:ȓ x3%,y3%,MX-x3%,MY-y3%
T�"Ȗ:Ȗ:ȓ x3%,y3%,MX-x3%,MY-y3%
T�x4%=MX:y4%=MY
T��5:�copysort
T�x3%=(x3%�2)*2
T�x4%=(x4%�2)*2
T�y3%=(y3%�4)*4
T�y4%=(y4%�4)*4
U+� x3%>x4% � temp%=x3%:x3%=x4%:x4%=temp%
U
+� y4%>y3% � temp%=y4%:y4%=y3%:y3%=temp%
U!xps%=x4%-x3%+3:yps%=y4%-y3%-7
U
A%=x1%
U(
B%=y1%
U2C%=xs%�2
U<
D%=-ys%�4
UF
E%=x3%
UP
F%=y3%
UZ
G%=xps%�2
UdH%=-yps%�4
Un� anti_aliased_squash%
Ux�
U�
U�
� Fuzz
U��68:Ȏ step% �
U��1:x0%=640:y0%=512
U�'ȏ x0%,y0%,�((MX-x0%)^2+(MY-y0%)^2)
U�	Ȗ:Ȗ
U�'ȏ x0%,y0%,�((MX-x0%)^2+(MY-y0%)^2)
U�R%=�((MX-x0%)^2+(MY-y0%)^2)
U��3
U��
U��mouse_handle
U�*AN1=�(�(360)):RO1%=�(�(�(80)))*(R%/10)
U�*AN2=�(�(360)):RO2%=�(�(�(80)))*(R%/10)
VA%=MX+�(AN1)*RO1%
VB%=MY+�(AN1)*RO1%
VC%=MX+�(AN2)*RO2%
V"D%=MY+�(AN2)*RO2%
V,� swap_pixels%
V6
� MB=0
V@�
VJ
VT
� Options
V^�69,70,78,79
Vh
Ȏ !Ac% �
Vr�69:select=�
V|�70:select=�
V��78:!left_handed=0
V��79:!left_handed=1
V��
V��reset_action
V�
V�� Pixellate
V��71:Ȏ step% �
V��1,2:�getrectangle
V��3:�sortcord
V�!gsx%=�(x1%-MX):gsy%=�(y1%-MY)
V�gsx%=(gsx% � 2)*2
V�gsy%=(gsy% � 4)*4
V�� gsx%<4 � gsx%=4
W� gsy%<8 � gsy%=8
W�pixgrid
W	Ȗ:Ȗ
W&�pixgrid
W0�4:�point(0,0)
W:� gy%=y1% � y2% � -gsy%
WD� gx%=x1% � x2% � gsx%
WNsx%=gsx%:sy%=gsy%
WX&� gx%+sx%>x2% � sx%-=gx%+sx%-x2%-2
Wb(� gy%-sy%<y2% � sy%-=y2%-(gy%-sy%)-4
Wl#A%=gx%:B%=gy%:C%=sx%�2:D%=sy%�4
Wv� COLaverage%
W��
W��
W�ȗ ȓ 0,0,1279,1023
W��update
W��
W�
W�� Copy Fill
W��72:Ȏ step% �
W��1,2:�getrectangle
W��3:px%=MX:py%=MY
W��4:�copysort:�point(0,0)
W�� 128+�MX,MY) Ȝ Ȝ(MX,MY)
W�3� !fill_style=0 � !fill_style=3 � !fill_style=2
XȎ !fill_style �
X�1,2,3:
X� bit_map_scan_A%
X �&85,MX,MY
X*(A%=x1%�2:B%=y1%�4:C%=xs%�2:D%=-ys%�4
X4Ȏ !fill_style �
X>�1,2:� copy_fill%
XH �3:� Should be full mapping.
XR�
X\�
Xf�update
Xp�
Xz
X�� Save Compacted Sprite
X�,�73:� �text_entry(33,$screen_str%,255) �
X�&�point(0,1):�compactedsave(1,out$)
X�area$=�(xs%*ys%)
X�!per$=��(cs%/(xs%*ys%)*100),4)
X��� �(-1) � �errorhandle(1,"Compaction Report|Size: "+�(xs%)+"x"+�(ys%)+"|Area in bytes: "+area$+"|Bytes used: "+�(cs%)+"|Percentage: "+per$," ",selected)
X�$screen_str%=out$
X��
X��reset_entry
X�
X�� Compacted Get
X��74:Ȏ step% �
X��1,2:�getrectangle
Y�3:�sortcord
Y!com_x1=x1%
Y!com_y1=y1%
Y$!com_x2=x2%
Y.!com_y2=y2%
Y8�
YB
YL� Mode 15 to 13 convert
YV�75:Ȏ step% �
Y`�1,2:�getrectangle
Yj,�3:�sortcord:xs%-=2:ys%+=4:px%=MX:py%=MY
Ytȓ px%,py%,xs%/2,-ys%
Y~	Ȗ:Ȗ
Y�ȓ px%,py%,xs%/2,-ys%
Y��4:�sortcord
Y�8A%=x1%:B%=y1%:C%=xs%�4:D%=-ys%�4:E%=px%:F%=py%-ys%-4
Y�� COLmode15_13resize%
Y��
Y�
Y�� Colour Average Area
Y��76:Ȏ step% �
Y��1,2:�getrectangle
Y��3:�sortcord
Y�$A%=x1%:B%=y1%:C%=xs%�2:D%=-ys%�4
Y�� COLaverage%
Z�
Z

Z� Update Font List
Z�77
Z(� fontlistinit%
Z2�reset_action
Z<
ZF� 3 point curve
ZP�80:Ȏ step% �
ZZ�1:x1%=MX:y1%=MY
Zd�2:x2%=MX:y2%=MY
Zn� x1%,y1%:� x2%,y2%
Zx	Ȗ:Ȗ
Z�� x1%,y1%:� x2%,y2%
Z��3:x3%=MX:y3%=MY
Z��curve(20):Ȗ:Ȗ:�curve(20)
Z��4:�curve(1)
Z��
Z�
Z�� Bottle Wall Formula
Z�4�81:� �text_entry(32,botrad$,255) � botrad$=out$
Z��reset_entry
Z�
Z�� Undo Brush
Z��82:Ȏ step% �
Z�)�1:A%=(MX � 2)-16:B%=255-((MY � 4)+8)
[� brusheor%
[Ȗ:Ȗ:� brusheor%
[�2:�
["�mouse_handle
[,&A%=(MX � 2)-16:B%=255-((MY � 4)+8)
[6� brushundo%
[@
� MB=0
[J�
[T
[^�
[h�
[r
[|��curve(r%)
[�� &45,x1%,y1%
[�xs%=x1%-x2%:ys%=y1%-y2%
[�-xs2%=(x1%-xs%/2)-x3%:ys2%=(y1%-ys%/2)-y3%
[�
� r%<>1 �
[�	s%=r%
[��
[�#� �xs%>�ys% � s%=�xs% � s%=�ys%
[��
[�� st=1/s% � 1-1/s% � 1/s%
[�%x%=x1%-(xs%*st)-(xs2%*��(st*180))
[�%y%=y1%-(ys%*st)-(ys2%*��(st*180))
[�� &25,x%,y%
[��
\� &25,x2%,y2%
\�
\
\&ݤtext_entry(sl%,in$,len%)
\0
!putit%=1
\:�point(0,PNkeyboard)
\D�reset_action:� uptree%
\N(A%=-128:B%=!starty%+56:E%=-1:� help%
\X/A%=-128:B%=!starty%-!sizey-96:E%=-1:� help%
\bstep%=1
\l'go=�instring(sl%,126,in$,out$,len%)
\v� liftup%:� putbackground%
\�=go
\�
\���reset_entry
\�&� liftdown%:�5:� helptext%:�update
\��
\�
\���eval_error_cheat
\�� �
\�!� � � eval$="":�7:t$=�$:� �:�
\�9� �(eval$)=126 � t$=�~(�(�eval$,2))) � t$=�(�(eval$))
\�� �
\��
\�
]��compactedsave(t%,fn$)
]� �
]#� � � � undosave%:� �:� 99,�$:�
] (�"DefineBuffer "+�(STORE%)+" &28000"
]*Ȏ t% �
]4*�0:�"Com_Save "+fn$+" 0 0 1279 1023 0"
]>,�1:� ?(flags%+1)=0 � tl%=behind% � tl%=0
]H[�"Com_Save "+fn$+" "+�(!com_x1)+" "+�(!com_y1)+" "+�(!com_x2)+" "+�(!com_y2)+" "+�(tl%)
]R�
]\
cs%=10
]f
xs%=10
]p
ys%=10
]z� undosave%
]�� �
]��
]�
]���compressedsave(fn$)
]�� �
]�#� � � � undosave%:� �:� 99,�$:�
]�
$cat%=fn$
]�� compactedsave%
]�� undosave%
]�� �
]��
]�
]�
��pixgrid
^ȓ x1%,y1%,xs%,ys%
^� X%=x1%+gsx% � x2% � gsx%
^� X%,y1%,X%,y2%
^$�
^.� Y%=y1%-gsy% � y2% � -gsy%
^8� x1%,Y%,x2%,Y%
^B�
^L�
^V
^`
ݤsprites
^j� checksprites%
^t	=!OUT
^~
^�ݤput_check
^�� �sprites>0 � =�
^��reset_action
^�t� !Ac%=37 � !Ac%=40 � !Ac%=38:� 99,"No Sprites Present. Unable to Restore Action, Setting Action to Sprite Get."
^�=�
^�
^���titlesprite
^�� �
^�� � � � �:�
^�$� 52,711:� 274,932:*SGET Diamond
^�	� �:�
^�
_� formula functions
_

_� �radiusR
_=�(XR^2+YR^2)
_(
_2� �radiusD
_<=�(XD^2+YD^2)
_F
_P� �depth
_Z� r%,g%,b%,t%
_dt%=(col% � 192)>> 6
_nr%=t%+(col% � 3)<<2
_xg%=t%+(col% � 12)
_�b%=t%+(col% � 48)>>2
_�	t%=r%
_�� g%>t% � t%=g%
_�� b%>t% � t%=b%
_�
=t%/15
_�
_�� �wedge(up%,down%)
_�� col%=up% � wedge%+=1
_�� col%=down% � wedge%-=1
_�=wedge%
_�
_�"��smearscreen(x1%,y1%,xs%,ys%)
_�
�copysort
`c1%=(px1%-px4%)
`c2%=(py1%-py4%)
`
c3%=(ys%)
`"
c4%=(xs%)
`,c5%=(px2%-px1%)
`6c6%=(py2%-py1%)
`@c7%=(px3%-px4%)-c5%
`Jc8%=(py3%-py4%)-c6%
`T�point(0,0)
`^"� yp%=y1% � y1%+ys% � �(ys%)*4
`h
arx%=0
`r"� xp%=x1% � x1%+xs% � �(xs%)*2
`|H� yp%=y1% � A%(arx%,0)=�npx(xp%,yp%):A%(arx%,1)=�npy(xp%,yp%):� �```
`�=� arx%=0 � nplx%=�npx(xp%,yp%):nply%=�npy(xp%,yp%):� �`L`
`�plt%=�gcol(xp%-2,yp%+4)
`�
� tx%,ty%
`�� A%(arx%,0),A%(arx%,1)
`�� plt% � � &55,nplx%,nply%
`�+nplx%=�npx(xp%,yp%):nply%=�npy(xp%,yp%)
`�� plt% � � &55,nplx%,nply%
`�!tx%=A%(arx%,0):ty%=A%(arx%,1)
`�%A%(arx%,0)=nplx%:A%(arx%,1)=nply%
`�arx%=arx%+1
`�
� xp%,yp%
`�step%=1
`��
a�update
a�
a
a&� �npx(PX,PY)
a0w1=((PY-y1%)/c3%)
a:w2=((PX-x1%)/c4%)
aD"=px1%-(c1%*w1)+(c5%+c7%*w1)*w2
aN
aX� �npy(PX,PY)
ab"=py1%-(c2%*w1)+(c6%+c8%*w1)*w2
al
av� �atn(X,Y)
a�+� �(Y)>0 � A=�(�(X/Y)) � A=90+180*(X<0)
a�� Y<0 � A=A+180
a�=A
a�
a�� �radius(X,Y)
a�=�(X^2+Y^2)
a�
a���shape
a�A=�atn(MX-x3%,MY-y3%)
a�D=�radius(MX-x3%,MY-y3%)
a�OA1=2*(�(�(�(xs%)/�(ys%))))
a�OA2=180-OA1
a�px1%=x3%+D*�(�(A))
bpy1%=y3%+D*�(�(A))
bpx2%=x3%+D*�(�(A+OA1))
bpy2%=y3%+D*�(�(A+OA1))
b px3%=x3%+D*�(�(A+OA1+OA2))
b*py3%=y3%+D*�(�(A+OA1+OA2))
b4px4%=x3%+D*�(�(A-OA2))
b>py4%=y3%+D*�(�(A-OA2))
bH� px1%,py1%
bR	� 3,3
b\� px2%,py2%
bf
� 3,63
bp� px3%,py3%
bz� px4%,py4%
b�� px1%,py1%
b��
b�
b�� �formx(xpos,ypos,upval)
b�rd=�radius(xpos,ypos)
b�an=�(�atn(xpos,ypos))
b�an=an+offset
b�=mx%+�(an)*rd*(xs2%/720)
b�
b�� �formy(xpos,ypos,upval)
b�2=my%+�(an)*rd*(ys2%/720)*�(lean)+upval*�(lean)
b�
b�� �boltx(A)
c=!(xget%+A*4)
c� �bolty(A)
c=!(yget%+A*4)
c$
c.��oscliaction
c8� �
cB*POINTER 0
cL*FX 4,0
cV
*FX 229,0
c`ș "OS_RestoreCursors"
cj�reset_action
ct�setsoftkeys
c~
� uptree%
c��
c�� � � �:� �$
c��
c�
� "*"out$
c�#� �out$,8)<>"MENU OFF" � � out$
c�+� �out$,8)="MENU OFF" � �<>15 � out$=""
c�� �<>15 � � 15
c�
*FX 229,1
c�ș "OS_RemoveCursors"
c�!putit%=1:� putbackground%
c�� �
c�� VDU 21
d*FX 4,1
d
�unsetsoftkeys
d�point(0,0)
d&� �out$,8)="MENU OFF" � � �out$,9)
d(-� �<>15 � � 15:!putit%=1:� putbackground%
d2� liftdown%
d<�update
dF�
dP
dZ��dumpererror
ddP%=!printmenu%
dn	[OPT0
dxEQUS"< Printer Dumps"
d�EQUB1:EQUB255
d�&EQUS"Not Installed":EQUB 0:EQUB 33
d�]
d��
d�
d���checkdumper
d�� �
d�� � � �dumpererror:� �:�
d�P%=!printmenu%
d� � ("SCREENDUMPIDS &"+�~(P%))
d�� �
d��
d�
e��getrectangle
eȎ step% �
e�1:x1%=MX:y1%=MY
e"�2:ȓ x1%,y1%,MX-x1%,MY-y1%
e,"Ȗ:Ȗ:ȓ x1%,y1%,MX-x1%,MY-y1%
e6xs%=MX-x1%:ys%=MY-y1%
e@x2%=MX:y2%=MY
eJ�
eT�
e^
eh��sortcord
erx1%=(x1%�2)*2
e|x2%=(x2%�2)*2
e�y1%=(y1%�4)*4
e�y2%=(y2%�4)*4
e�+� x1%>x2% � temp%=x1%:x1%=x2%:x2%=temp%
e�+� y2%>y1% � temp%=y2%:y2%=y1%:y1%=temp%
e�xs%=x2%-x1%+3:ys%=y2%-y1%-7
e��
e�
e�� �gcol(xp%,yp%)
e�� !pm%<>2 �
e�� �xp%,yp%) Ȝ Ȝ(xp%,yp%)
e�col%=�xp%,yp%)+Ȝ(xp%,yp%)
e�=�
e��
fA%=xp%�2:B%=(-ys%-yp%)�4
f� spritepix%
fcol%=!RESULTX
f&=!spritemask
f0�
f:
fD��spritesort
fN� spriteinit%
fXx1%=0:y1%=4*!sprint_ysize
fbxs%=2*!sprint_xsize
flys%=-4*!sprint_ysize
fvx2%=xs%
f�	y2%=0
f��
f�
f���copysort
f�wedge%=0
f�
Ȏ !pm% �
f��0,1:� solid,pattern
f�
�sortcord
f��2:� sprite
f��spritesort
f��
f��
f�
g)ݤinstring(min,max,in$,� out$,length)
gl%=!sizex/8-2
g*FX 4,1
g 
*FX 229,1
g*OMX=-1:OMY=-1
g4 XP=!startx%+6:YP=!starty%-48
g>� XP,YP:� 5
gH=out$=in$:posit%=�(out$)+1:of%=posit%-l%+1:� of%<1 � of%=1
gR� 0,5 Ȝ 64:�">";
g\�
gf� XP+16,YP:
gp+� 0,(BACKCOL% � 63) Ȝ (BACKCOL% � 192)
gz��l%,�(255))
g�+� 0,(textcol% � 63) Ȝ (textcol% � 192)
g�� XP+16,YP:�out$,of%,l%)
g�� 3,63 Ȝ 192
g�(ȓ Ȑ XP+(posit%-of%+1)*16,YP,16,-28
g��
g�ȗ DX,DY,MB
g�.� DX<>OMX � DY<>OMY � �point(0,PNkeyboard)
g�A$=�(0)
g�� A$<>"" � *POINTER 0
g�� A$<>"" � MB>0
g�OMX=DX:OMY=DY
g�(ȓ Ȑ XP+(posit%-of%+1)*16,YP,16,-28
g�� XP+16,YP
h-i$="":� �(A$)>min-1 � �(A$)<max+1 � i$=A$
h� �(A$)=163 � i$=A$
h'� �(A$)=21 � out$="":of%=1:posit%=1
h$#� �(out$)=length � i$<>"" � � 7
h.U� i$<>"" � �(out$)<length � out$=�out$,posit%-1)+A$+�out$,posit%):posit%=posit%+1
h8� �(A$)=127 �
hBI� posit%>1 � out$=�out$,posit%-2)+�out$,posit%):posit%=posit%-1 � � 7
hL�
hV!� �(A$)=136 � posit%=posit%-1
h`!� �(A$)=137 � posit%=posit%+1
hj � (posit%-of%+1)>l% � of%+=1
ht#� (posit%-of%)<4 � of%=posit%-4
h~� of%<1 � of%=1
h�� posit%<1 � posit%=1
h�)� posit%>�(out$)+1 � posit%=�(out$)+1
h�� �(A$)=27 � =�
h�� MB=1 � =�
h�� �(A$)=13 � MB=4
h�� 4:*FX 4,0
h�=� (�(out$)=0)
h�
h���setcol
h�+� 0,(textcol% � 63) Ȝ (textcol% � 192)
h�/� 0,128+(BACKCOL% � 63) Ȝ (BACKCOL% � 192)
h��
i
i
��point(L,N)
iP%=PO%+N*267
i&ș &400D8,2,P%+11,32,32,P%?9,P%?10
i(ȗ � 1,P%?0,P%?1,P%?2
i2ȗ � 2,P%?3,P%?4,P%?5
i<ȗ � 3,P%?6,P%?7,P%?8
iF� "FX 106,"+�(2 � L<<7)
iP�
iZ
id� �build_formula(A$,pos%)
in/� A$=eval of the formula,pos=formula number
ix� �
i�� � � � �:=�
i�� Y%=0 � 20
i�� X%=0 � 20
i�XD=X%*36-360
i�YD=Y%*36-360
i�XR=�(XD):YR=�(YD)
i�A=(�(A$)<<8)
i�%!(skel%+pos%*1764+(X%+21*Y%)*4)=A
i��
i��
i�� �
i�=�
i�
j��formula_load(filename$)
j(� reads and descifers a formula list
j(ș "OS_Find",&40,filename$ � handle%
j"formulas%=1
j,P%=formnames%
j6
[OPT 0
j@
EQUB 7
jJEQUB 10
jTEQUS "Defineable"
j^]
jh.name$="":formulas$(formulas%-1)="":past%=�
jr�
j|4ș "OS_GBPB",4,handle%,log_scale%,1 � ,,,finish%
j�&b%=?log_scale%:cr%=(b%=10 � b%=13)
j�� cr% �
j�
� past% �
j�o� �build_formula(formulas$(formulas%-1),formulas%) � ?P%=�(name$):P%+=1:$P%=name$:P%+=�(name$):formulas%+=1
j��
j�.name$="":formulas$(formulas%-1)="":past%=�
j��
j�+� past% � formulas$(formulas%-1)+=�(b%)
j�� b%=�("$") � past%=�
j�� � past% � name$+=�(b%)
j��
j�� finish%=1
j�?formnames%=formulas%
kș "OS_Find",&00,handle%
k�
k
k&��update
k0+� (mgs � mousegrid>2) � mcs � l=1 � l=0
k:
Ȏ !Ac% �
kD�12:�point(l,PNglass)
kN(�13:�point(l,PNflood):� mousecolour%
kX.�21,33,34:�point(l,PNspray):� mousecolour%
kb�37,38:�point(l,PNspriteop)
kl�31,32,35:�point(l,PNbrush)
kv�41:�point(0,PNspray)
k��59:�point(l,PNA)
k�':�point(l,PNnormal):� mousecolour%
k��
k��
k�
k���error_at
k�� 26
k�� �=17 �
k�step%=1:�point(0,PNstopped)
k�� liftdown%
k�� R%=0 � 20000:�
k��update
k��
l�
l-� !lastmenu=12 � !lastmenu=30 � � uptree%
l� 7
l Ȏ testing �
l*Fɣ:�errorhandle(1,"An Error Has Occured,|"+�$,"Continue",selected)
l4uɹ:�errorhandle(3,"An Error Has Occured,|"+�$+"|At line "+�(�),"Edit This Line|Edit Last Line|Continue",selected)
l>*FX 15,0
lH7� selected=1 � �string_to_buffer("ED. "+�(�)+�(13))
lR2� selected=2 � �string_to_buffer("ED.."+�(13))
l\!� selected=1 � selected=2 � �
lf�
lpstep%=1
lz;� !lastmenu<>1 � !lastmenu<>9 � !presentmenu%=!lastmenu
l��
l�
l�2��errorhandle(N,message$,question$,� selected)
l�(� �<>15 � � 15:ș "OS_RemoveCursors"
l�*FX229,1
l��point(0,PNquestion)
l�ȗ ȓ 256,331,768,372
l�A%=N:� draw_error_box%
l�� 28,32,19,59,12
l�-� 128+(BACKCOL% � 63) Ȝ (BACKCOL% � 192)
l�)� (textcol% � 63) Ȝ (textcol% � 192)
l��strhandle(message$)
l�ș "OS_PrettyPrint",BUFF%
m� 63 Ȝ 192
m�0,5);
m�strhandle(question$+" ?")
m$ș "OS_PrettyPrint",BUFF%
m.�BUTOFF(7)
m8�
mBȗ DX,DY,ChB
mLn� ChB>0 � DX>308 � DX<463 � DY<653 � DY>516 � ChB<>2 � !presentmenu%=0:!lastmenu=0:ChB=2:!treepos=0:!Ac%=0
mV9� ChB=2 � (ChB>0 � DX>300 � DX<474 � DY<484 � DY>368)
m`�BUTOFF(7)
mj� undorestore%
mt�update
m~� liftdown%
m��5:� helptext%
m�F%=step%:� helpstep%
m� selected=�((484-DY)/120*N)+1
m�#� ChB=2 � enter%=10:selected=-1
m��
m�
m���strhandle(string$)
m�out$=""
m�� R=1 � �(string$)
m�ch$=�string$,R,1)
m�� ch$="|" � ch$=�(13)
m�out$=out$+ch$
n�
n
$BUFF%=out$+�(0)
n�
n
n(��setlimits(LMX,LMY)
n2mrctx1%=-LMX+2
n<mrcty1%=-LMY+4
nFmrctx2%=1277+LMX
nPmrcty2%=1019+LMY
nZ�
�
00000000  0d 00 0a 1c f4 3e 20 3c  41 74 65 6c 69 65 72 24  |.....> <Atelier$|
00000010  44 69 72 3e 2e 41 74 65  6c 69 65 72 0d 00 14 33  |Dir>.Atelier...3|
00000020  f4 20 20 42 79 20 53 69  6d 6f 6e 20 43 6c 61 79  |.  By Simon Clay|
00000030  20 43 6f 70 79 72 69 67  68 74 20 28 63 29 20 53  | Copyright (c) S|
00000040  69 6d 6f 6e 20 43 6c 61  79 2c 20 31 39 38 39 0d  |imon Clay, 1989.|
00000050  00 1e 18 3a 20 20 20 20  76 65 72 73 69 6f 6e 24  |...:    version$|
00000060  3d 22 31 2e 30 31 22 0d  00 28 04 0d 00 32 04 0d  |="1.01"..(...2..|
00000070  00 3c 17 ee 85 3a f2 65  72 72 6f 72 28 9f 2c f6  |.<...:.error(.,.|
00000080  24 2c 9e 2c b9 29 0d 00  46 09 f2 69 6e 69 74 0d  |$,.,.)..F..init.|
00000090  00 50 1f ee 85 3a f2 65  72 72 6f 72 28 9f 2c f6  |.P...:.error(.,.|
000000a0  24 2c 9e 2c a3 29 3a f2  72 65 70 6f 72 74 0d 00  |$,.,.):.report..|
000000b0  5a 0e f2 6e 6f 72 6d 70  6f 69 6e 74 0d 00 64 60  |Z..normpoint..d`|
000000c0  e7 20 a4 6f 6b 66 69 6c  65 5f 61 74 28 73 74 61  |. .okfile_at(sta|
000000d0  72 74 5f 66 69 6c 65 24  2c 2d 31 2c 73 74 61 72  |rt_file$,-1,star|
000000e0  74 5f 74 25 29 20 8c 20  74 25 3d 73 74 61 72 74  |t_t%) . t%=start|
000000f0  5f 74 25 3a 73 74 61 72  74 5f 74 25 3d 2d 31 3a  |_t%:start_t%=-1:|
00000100  f2 6c 6f 61 64 66 69 6c  65 28 73 74 61 72 74 5f  |.loadfile(start_|
00000110  66 69 6c 65 24 2c 2d 31  2c 74 25 29 0d 00 6e 04  |file$,-1,t%)..n.|
00000120  0d 00 78 05 f5 0d 00 82  28 c8 99 20 22 57 69 6d  |..x.....(.. "Wim|
00000130  70 5f 50 6f 6c 6c 49 64  6c 65 22 2c 2c 71 25 2c  |p_PollIdle",,q%,|
00000140  31 45 39 20 b8 20 72 65  61 73 6f 6e 25 0d 00 8c  |1E9 . reason%...|
00000150  15 f2 72 65 73 70 6f 6e  64 28 72 65 61 73 6f 6e  |..respond(reason|
00000160  25 29 0d 00 96 0a fd 71  75 69 74 25 0d 00 a0 09  |%).....quit%....|
00000170  f2 71 75 69 74 0d 00 aa  05 e0 0d 00 b4 04 0d 00  |.quit...........|
00000180  be 16 dd f2 72 65 73 70  6f 6e 64 28 72 65 61 73  |....respond(reas|
00000190  6f 6e 25 29 0d 00 c8 0e  f2 77 61 69 74 70 6f 69  |on%).....waitpoi|
000001a0  6e 74 0d 00 d2 0e c8 8e  72 65 61 73 6f 6e 25 ca  |nt......reason%.|
000001b0  0d 00 dc 07 c9 30 3a 0d  00 e6 07 c9 31 3a 0d 00  |.....0:.....1:..|
000001c0  f0 39 c9 32 3a f2 6f 70  65 6e 28 21 71 25 2c 71  |.9.2:.open(!q%,q|
000001d0  25 21 34 2c 71 25 21 38  2c 71 25 21 31 32 2c 71  |%!4,q%!8,q%!12,q|
000001e0  25 21 31 36 2c 71 25 21  32 30 2c 71 25 21 32 34  |%!16,q%!20,q%!24|
000001f0  2c 71 25 21 32 38 29 0d  00 fa 13 c9 33 3a f2 63  |,q%!28).....3:.c|
00000200  6c 6f 73 65 77 28 21 71  25 29 0d 01 04 07 c9 34  |losew(!q%).....4|
00000210  3a 0d 01 0e 07 c9 35 3a  0d 01 18 2e c9 36 3a f2  |:.....5:.....6:.|
00000220  6d 6f 75 73 65 28 21 71  25 2c 71 25 21 34 2c 71  |mouse(!q%,q%!4,q|
00000230  25 21 38 2c 71 25 21 31  32 2c 71 25 21 31 36 2c  |%!8,q%!12,q%!16,|
00000240  71 25 21 32 30 29 0d 01  22 0f c9 37 3a f2 65 6e  |q%!20).."..7:.en|
00000250  64 64 72 61 67 0d 01 2c  07 c9 38 3a 0d 01 36 12  |ddrag..,..8:..6.|
00000260  c9 39 3a f2 6d 65 6e 75  73 65 6c 65 63 74 0d 01  |.9:.menuselect..|
00000270  40 07 c9 31 30 0d 01 4a  07 c9 31 31 0d 01 54 07  |@..10..J..11..T.|
00000280  c9 31 32 0d 01 5e 12 c9  31 37 2c 31 38 3a f2 75  |.12..^..17,18:.u|
00000290  6d 65 73 73 31 0d 01 68  0f c9 31 39 3a f2 75 6d  |mess1..h..19:.um|
000002a0  65 73 73 32 0d 01 72 05  cb 0d 01 7c 0e f2 6e 6f  |ess2..r....|..no|
000002b0  72 6d 70 6f 69 6e 74 0d  01 86 05 e1 0d 01 90 04  |rmpoint.........|
000002c0  0d 01 9a 15 dd f2 71 75  69 74 3a f2 6e 6f 72 6d  |......quit:.norm|
000002d0  70 6f 69 6e 74 0d 01 a4  13 e7 a4 64 65 62 75 67  |point......debug|
000002e0  3a f2 74 69 64 79 3a e0  0d 01 ae 32 24 71 25 3d  |:.tidy:....2$q%=|
000002f0  22 54 41 53 4b 22 3a c8  99 20 22 57 69 6d 70 5f  |"TASK":.. "Wimp_|
00000300  43 6c 6f 73 65 44 6f 77  6e 22 2c 74 61 73 6b 68  |CloseDown",taskh|
00000310  61 6e 64 6c 65 25 2c 21  71 25 0d 01 b8 06 c8 98  |andle%,!q%......|
00000320  0d 01 c2 04 0d 01 cc 0a  dd f2 69 6e 69 74 0d 01  |..........init..|
00000330  d6 1b de 20 71 25 20 32  35 30 30 2c 20 77 6f 72  |... q% 2500, wor|
00000340  6b 62 75 66 25 20 31 30  30 0d 01 e0 13 61 70 70  |kbuf% 100....app|
00000350  6c 24 3d 22 41 74 65 6c  69 65 72 22 0d 01 ea 0c  |l$="Atelier"....|
00000360  f2 66 69 6e 64 6d 6f 73  0d 01 f4 18 77 61 69 74  |.findmos....wait|
00000370  65 72 25 3d 30 3a f2 77  61 69 74 70 6f 69 6e 74  |er%=0:.waitpoint|
00000380  0d 01 fe 44 c8 99 20 22  4f 53 5f 47 65 74 45 6e  |...D.. "OS_GetEn|
00000390  76 22 20 b8 20 53 41 24  3a e7 20 c1 53 41 24 2c  |v" . SA$:. .SA$,|
000003a0  37 2c 35 29 3d 22 2d 71  75 69 74 22 20 8c 20 74  |7,5)="-quit" . t|
000003b0  65 73 74 69 6e 67 3d a3  20 8b 20 74 65 73 74 69  |esting=. . testi|
000003c0  6e 67 3d b9 0d 02 08 0c  f2 69 6e 69 74 5f 61 74  |ng=......init_at|
000003d0  0d 02 12 0d f2 63 68 65  63 6b 6d 6f 73 0d 02 1c  |.....checkmos...|
000003e0  0c 2a 66 78 32 32 39 2c  31 0d 02 26 10 77 69 6d  |.*fx229,1..&.wim|
000003f0  70 73 61 76 65 64 25 3d  a3 0d 02 30 24 76 25 3d  |psaved%=...0$v%=|
00000400  a4 69 6e 69 74 77 69 6d  70 3a e7 76 25 3c 31 38  |.initwimp:.v%<18|
00000410  30 3a eb 31 32 3a f2 65  72 72 28 32 29 0d 02 3a  |0:.12:.err(2)..:|
00000420  29 71 75 69 74 25 3d a3  3a 64 69 61 6c 6f 67 75  |)quit%=.:dialogu|
00000430  65 25 3d 2d 31 45 39 3a  73 74 6f 70 72 65 61 73  |e%=-1E9:stopreas|
00000440  6f 6e 25 3d 2d 31 0d 02  44 1c 61 63 6b 70 65 6e  |on%=-1..D.ackpen|
00000450  64 69 6e 67 25 3d a3 3a  61 63 6b 72 65 66 25 3d  |ding%=.:ackref%=|
00000460  2d 31 0d 02 4e 1b 64 72  61 67 72 65 61 73 6f 6e  |-1..N.dragreason|
00000470  25 3d 2d 31 3a 68 65 6c  70 24 3d 22 22 0d 02 58  |%=-1:help$=""..X|
00000480  12 73 61 76 65 72 65 61  73 6f 6e 25 3d 2d 31 0d  |.savereason%=-1.|
00000490  02 62 1d f2 64 65 66 77  73 3a f2 64 65 66 6d 65  |.b..defws:.defme|
000004a0  6e 75 73 3a f2 76 65 72  73 69 6f 6e 0d 02 6c 10  |nus:.version..l.|
000004b0  63 68 65 63 6b 72 65 66  25 3d 2d 31 0d 02 76 18  |checkref%=-1..v.|
000004c0  61 73 24 3d 22 41 72 65  20 79 6f 75 20 73 75 72  |as$="Are you sur|
000004d0  65 20 3f 22 0d 02 80 0c  f2 62 61 72 69 63 6f 6e  |e ?".....baricon|
000004e0  0d 02 8a 14 f4 20 66 69  6e 64 20 73 74 61 72 74  |..... find start|
000004f0  20 62 69 74 0d 02 94 1e  73 74 61 72 74 5f 66 69  | bit....start_fi|
00000500  6c 65 24 3d 22 22 3a 73  74 61 72 74 5f 74 25 3d  |le$="":start_t%=|
00000510  2d 31 0d 02 9e 07 ea 20  85 0d 02 a8 2b ee 20 85  |-1..... ....+. .|
00000520  20 ea 20 73 74 61 72 74  5f 66 69 6c 65 24 3d 22  | . start_file$="|
00000530  22 3a 73 74 61 72 74 5f  74 25 3d 2d 31 3a e5 20  |":start_t%=-1:. |
00000540  8d 54 74 43 0d 02 b2 1d  c8 99 20 22 4f 53 5f 47  |.TtC...... "OS_G|
00000550  65 74 45 6e 76 22 20 b8  20 72 30 2c 72 31 2c 72  |etEnv" . r0,r1,r|
00000560  32 0d 02 bc 09 41 24 3d  22 22 0d 02 c6 26 e7 20  |2....A$=""...&. |
00000570  3f 72 30 3c 3e 30 20 8c  20 41 24 2b 3d bd 28 3f  |?r0<>0 . A$+=.(?|
00000580  72 30 29 3a 72 30 2b 3d  31 3a e5 20 8d 64 46 42  |r0):r0+=1:. .dFB|
00000590  0d 02 d0 2d e7 20 a7 41  24 2c 22 20 22 29 3c 3e  |...-. .A$," ")<>|
000005a0  30 20 8c 20 41 24 3d c1  41 24 2c a7 41 24 2c 22  |0 . A$=.A$,.A$,"|
000005b0  20 22 29 2b 31 29 3a e5  20 8d 64 50 42 0d 02 da  | ")+1):. .dPB...|
000005c0  0e e7 20 41 24 3c 3e 22  22 20 8c 0d 02 e4 20 c8  |.. A$<>"" .... .|
000005d0  99 20 22 4f 53 5f 46 69  6c 65 22 2c 35 2c 41 24  |. "OS_File",5,A$|
000005e0  20 b8 20 72 30 2c 72 31  2c 72 32 0d 02 ee 0c e7  | . r0,r1,r2.....|
000005f0  20 72 30 3d 31 20 8c 0d  02 f8 3e e7 20 28 28 72  | r0=1 ....>. ((r|
00000600  32 20 80 20 26 46 46 46  30 30 30 30 30 29 3d 26  |2 . &FFF00000)=&|
00000610  46 46 46 30 30 30 30 30  29 20 8c 20 73 74 61 72  |FFF00000) . star|
00000620  74 5f 74 25 3d 28 72 32  20 80 20 26 46 46 46 30  |t_t%=(r2 . &FFF0|
00000630  30 29 3e 3e 38 0d 03 02  12 73 74 61 72 74 5f 66  |0)>>8....start_f|
00000640  69 6c 65 24 3d 41 24 0d  03 0c 05 cd 0d 03 16 05  |ile$=A$.........|
00000650  cd 0d 03 20 05 cd 0d 03  2a 13 f4 20 65 6e 64 20  |... ....*.. end |
00000660  73 74 61 72 74 20 62 69  74 0d 03 34 05 e1 0d 03  |start bit..4....|
00000670  3e 04 0d 03 48 0d dd f2  76 65 72 73 69 6f 6e 0d  |>...H...version.|
00000680  03 52 2f ea 54 24 3a 54  24 3d 76 65 72 73 69 6f  |.R/.T$:T$=versio|
00000690  6e 24 3a e7 ac a4 70 72  6f 64 3a 54 24 2b 3d 22  |n$:...prod:T$+="|
000006a0  20 2a 55 4e 46 49 4e 49  53 48 45 44 2a 22 0d 03  | *UNFINISHED*"..|
000006b0  5c 1c f2 73 65 74 69 28  77 5f 70 69 6e 66 6f 25  |\..seti(w_pinfo%|
000006c0  2c 34 2c 22 76 22 2b 54  24 29 0d 03 66 05 e1 0d  |,4,"v"+T$)..f...|
000006d0  03 70 04 0d 03 7a 2c dd  a4 70 72 6f 64 3d c1 76  |.p...z,..prod=.v|
000006e0  65 72 73 69 6f 6e 24 2c  a7 76 65 72 73 69 6f 6e  |ersion$,.version|
000006f0  24 2c 22 2e 22 29 2b 31  2c 31 29 3d 22 30 22 0d  |$,".")+1,1)="0".|
00000700  03 84 1b dd a4 64 65 62  75 67 3d ac a4 70 72 6f  |.....debug=..pro|
00000710  64 20 80 a6 2d 31 80 a6  2d 32 0d 03 8e 04 0d 03  |d ..-1..-2......|
00000720  98 0e dd a4 69 6e 69 74  77 69 6d 70 0d 03 a2 45  |....initwimp...E|
00000730  24 71 25 3d 22 54 41 53  4b 22 3a c8 99 20 22 57  |$q%="TASK":.. "W|
00000740  69 6d 70 5f 49 6e 69 74  69 61 6c 69 73 65 22 2c  |imp_Initialise",|
00000750  32 30 30 2c 21 71 25 2c  22 41 74 65 6c 69 65 72  |200,!q%,"Atelier|
00000760  22 b8 21 71 25 2c 74 61  73 6b 68 61 6e 64 6c 65  |".!q%,taskhandle|
00000770  25 0d 03 ac 08 3d 21 71  25 0d 03 b6 04 0d 03 c0  |%....=!q%.......|
00000780  0a dd f2 74 69 64 79 0d  03 ca 0e f2 6e 6f 72 6d  |...tidy.....norm|
00000790  70 6f 69 6e 74 0d 03 d4  13 ef 34 3a f1 8a 30 2c  |point.....4:..0,|
000007a0  32 29 3b 3a 2a 66 78 34  0d 03 de 0c 2a 66 78 32  |2);:*fx4....*fx2|
000007b0  32 35 2c 31 0d 03 e8 0a  2a 66 78 32 32 39 0d 03  |25,1....*fx229..|
000007c0  f2 11 ee 85 3a f6 3a f1  22 20 22 3b 9e 3a e0 0d  |....:.:." ";.:..|
000007d0  03 fc 05 e1 0d 04 06 04  0d 04 10 0d dd f2 62 61  |..............ba|
000007e0  72 69 63 6f 6e 0d 04 1a  2a 21 71 25 3d 2d 31 3a  |ricon...*!q%=-1:|
000007f0  71 25 21 34 3d 30 3a 71  25 21 38 3d 30 3a 71 25  |q%!4=0:q%!8=0:q%|
00000800  21 31 32 3d 36 34 3a 71  25 21 31 36 3d 36 38 0d  |!12=64:q%!16=68.|
00000810  04 24 2d 71 25 21 32 30  3d 25 31 31 30 30 30 30  |.$-q%!20=%110000|
00000820  30 30 30 30 30 30 31 30  3a 24 28 71 25 2b 32 34  |00000010:$(q%+24|
00000830  29 3d 22 21 41 74 65 6c  69 65 72 22 0d 04 2e 24  |)="!Atelier"...$|
00000840  c8 99 22 57 69 6d 70 5f  43 72 65 61 74 65 49 63  |.."Wimp_CreateIc|
00000850  6f 6e 22 2c 2c 71 25 b8  62 61 72 69 63 6f 6e 25  |on",,q%.baricon%|
00000860  0d 04 38 05 e1 0d 04 42  04 0d 04 4c 21 dd f2 65  |..8....B...L!..e|
00000870  72 72 6f 72 28 65 72 72  25 2c 65 72 72 24 2c 65  |rror(err%,err$,e|
00000880  72 6c 25 2c 71 75 69 74  25 29 0d 04 56 2e f2 6e  |rl%,quit%)..V..n|
00000890  6f 72 6d 70 6f 69 6e 74  3a 64 72 61 67 72 65 61  |ormpoint:dragrea|
000008a0  73 6f 6e 25 3d 2d 31 3a  40 25 3d 26 39 30 41 3a  |son%=-1:@%=&90A:|
000008b0  2a 66 78 32 32 39 2c 31  0d 04 60 10 ea 69 25 2c  |*fx229,1..`..i%,|
000008c0  65 25 2c 74 24 2c 54 24  0d 04 6a 1d e7 a4 64 65  |e%,t$,T$..j...de|
000008d0  62 75 67 3a 65 72 72 24  2b 3d 22 20 28 22 2b c3  |bug:err$+=" ("+.|
000008e0  9e 2b 22 29 22 0d 04 74  06 ea 85 0d 04 7e 18 ee  |.+")"..t.....~..|
000008f0  85 ea 3a f2 65 72 72 6f  72 28 9f 2c f6 24 2c 9e  |..:.error(.,.$,.|
00000900  2c b9 29 0d 04 88 39 21  71 25 3d 65 72 72 25 3a  |,.)...9!q%=err%:|
00000910  24 28 71 25 2b 34 29 3d  65 72 72 24 3a c8 99 22  |$(q%+4)=err$:.."|
00000920  57 69 6d 70 5f 52 65 70  6f 72 74 45 72 72 6f 72  |Wimp_ReportError|
00000930  22 2c 71 25 2c 31 2c 61  70 70 6c 24 0d 04 92 10  |",q%,1,appl$....|
00000940  e7 71 75 69 74 25 3a f2  71 75 69 74 0d 04 9c 05  |.quit%:.quit....|
00000950  e1 0d 04 a6 04 0d 04 b0  2a dd f2 72 65 70 6f 72  |........*..repor|
00000960  74 3a e7 a4 64 65 62 75  67 3a ef 34 3a f6 3a f1  |t:..debug:.4:.:.|
00000970  22 20 40 20 22 3b 9e 3a  f2 74 69 64 79 3a e0 0d  |" @ ";.:.tidy:..|
00000980  04 ba 05 e1 0d 04 c4 04  0d 04 ce 09 dd a4 64 69  |..............di|
00000990  72 0d 04 d8 20 ea 54 24  3a 54 24 3d a4 41 72 66  |r... .T$:T$=.Arf|
000009a0  56 61 72 28 61 70 70 6c  24 2b 22 24 44 69 72 22  |Var(appl$+"$Dir"|
000009b0  29 0d 04 e2 1d e7 54 24  3d 22 22 3a 54 24 3d 22  |).....T$="":T$="|
000009c0  26 2e 21 22 2b 61 70 70  6c 24 2b 22 2e 22 0d 04  |&.!"+appl$+"."..|
000009d0  ec 16 e7 c2 54 24 29 3c  3e 22 2e 22 3a 54 24 2b  |....T$)<>".":T$+|
000009e0  3d 22 2e 22 0d 04 f6 07  3d 54 24 0d 05 00 04 0d  |="."....=T$.....|
000009f0  05 0a 10 dd a4 41 72 66  56 61 72 28 41 24 29 0d  |.....ArfVar(A$).|
00000a00  05 14 06 ea 85 0d 05 1e  1d ee 85 ea e7 9f 3d 32  |..............=2|
00000a10  39 32 3a 3d 22 22 3a 8b  f7 85 3a f2 65 72 72 28  |92:="":...:.err(|
00000a20  30 29 0d 05 28 22 c8 99  26 32 33 2c 41 24 2c 77  |0)..("..&23,A$,w|
00000a30  6f 72 6b 62 75 66 25 2c  32 30 30 2c 30 2c 33 b8  |orkbuf%,200,0,3.|
00000a40  2c 2c 4c 25 0d 05 32 1d  77 6f 72 6b 62 75 66 25  |,,L%..2.workbuf%|
00000a50  3f 4c 25 3d 31 33 3a 3d  24 77 6f 72 6b 62 75 66  |?L%=13:=$workbuf|
00000a60  25 0d 05 3c 04 0d 05 46  0c dd f2 75 6d 65 73 73  |%..<...F...umess|
00000a70  31 0d 05 50 2d 72 65 66  25 3d 71 25 21 38 3a 74  |1..P-ref%=q%!8:t|
00000a80  61 73 6b 25 3d 71 25 21  34 3a e7 74 61 73 6b 25  |ask%=q%!4:.task%|
00000a90  3d 74 61 73 6b 68 61 6e  64 6c 65 25 3a e1 0d 05  |=taskhandle%:...|
00000aa0  5a 0f 6d 65 73 73 25 3d  71 25 21 31 36 0d 05 64  |Z.mess%=q%!16..d|
00000ab0  0c c8 8e 6d 65 73 73 25  ca 0d 05 6e 0c c9 30 3a  |...mess%...n..0:|
00000ac0  f2 71 75 69 74 0d 05 78  11 c9 31 3a f2 64 61 74  |.quit..x..1:.dat|
00000ad0  61 73 61 76 65 64 0d 05  82 10 c9 32 3a f2 73 61  |asaved.....2:.sa|
00000ae0  76 65 64 61 74 61 0d 05  8c 10 c9 33 3a f2 64 61  |vedata.....3:.da|
00000af0  74 61 6c 6f 61 64 0d 05  96 14 c9 34 3a 61 63 6b  |taload.....4:ack|
00000b00  70 65 6e 64 69 6e 67 25  3d a3 0d 05 a0 10 c9 35  |pending%=......5|
00000b10  3a f2 64 61 74 61 6f 70  65 6e 0d 05 aa 07 c9 36  |:.dataopen.....6|
00000b20  3a 0d 05 b4 07 c9 37 3a  0d 05 be 0f c9 38 3a f2  |:.....7:.....8:.|
00000b30  70 72 65 71 75 69 74 0d  05 c8 07 c9 39 3a 0d 05  |prequit.....9:..|
00000b40  d2 0a c9 26 35 30 32 3a  0d 05 dc 2d c9 26 34 30  |...&502:...-.&40|
00000b50  30 43 30 3a f2 73 75 62  6d 65 6e 75 28 71 25 21  |0C0:.submenu(q%!|
00000b60  32 30 2c 71 25 21 32 34  2c 71 25 21 32 38 2c 71  |20,q%!24,q%!28,q|
00000b70  25 2b 33 32 29 0d 05 e6  05 cb 0d 05 f0 05 e1 0d  |%+32)...........|
00000b80  05 fa 04 0d 06 04 0e dd  f2 64 61 74 61 6f 70 65  |.........dataope|
00000b90  6e 0d 06 0e 0a ea 73 25  2c 74 25 0d 06 18 27 66  |n.....s%,t%...'f|
00000ba0  69 6c 65 24 3d a4 7a 74  73 28 71 25 2b 34 34 29  |ile$=.zts(q%+44)|
00000bb0  3a 73 25 3d 71 25 21 33  36 3a 74 25 3d 71 25 21  |:s%=q%!36:t%=q%!|
00000bc0  34 30 0d 06 22 3f e7 a4  6f 6b 66 69 6c 65 5f 61  |40.."?..okfile_a|
00000bd0  74 28 66 69 6c 65 24 2c  73 25 2c 74 25 29 f2 64  |t(file$,s%,t%).d|
00000be0  61 74 61 6c 6f 61 64 61  63 6b 3a f2 6c 6f 61 64  |ataloadack:.load|
00000bf0  66 69 6c 65 28 66 69 6c  65 24 2c 73 25 2c 74 25  |file(file$,s%,t%|
00000c00  29 0d 06 2c 05 e1 0d 06  36 04 0d 06 40 0e dd f2  |)..,....6...@...|
00000c10  64 61 74 61 6c 6f 61 64  0d 06 4a 0a ea 73 25 2c  |dataload..J..s%,|
00000c20  74 25 0d 06 54 27 66 69  6c 65 24 3d a4 7a 74 73  |t%..T'file$=.zts|
00000c30  28 71 25 2b 34 34 29 3a  73 25 3d 71 25 21 33 36  |(q%+44):s%=q%!36|
00000c40  3a 74 25 3d 71 25 21 34  30 0d 06 5e 3f e7 a4 6f  |:t%=q%!40..^?..o|
00000c50  6b 66 69 6c 65 5f 61 74  28 66 69 6c 65 24 2c 73  |kfile_at(file$,s|
00000c60  25 2c 74 25 29 f2 64 61  74 61 6c 6f 61 64 61 63  |%,t%).dataloadac|
00000c70  6b 3a f2 6c 6f 61 64 66  69 6c 65 28 66 69 6c 65  |k:.loadfile(file|
00000c80  24 2c 73 25 2c 74 25 29  0d 06 68 05 e1 0d 06 72  |$,s%,t%)..h....r|
00000c90  04 0d 06 7c 0f dd f2 64  61 74 61 73 61 76 65 64  |...|...datasaved|
00000ca0  0d 06 86 0a ea 73 25 2c  74 25 0d 06 90 27 66 69  |.....s%,t%...'fi|
00000cb0  6c 65 24 3d a4 7a 74 73  28 71 25 2b 34 34 29 3a  |le$=.zts(q%+44):|
00000cc0  73 25 3d 71 25 21 33 36  3a 74 25 3d 71 25 21 34  |s%=q%!36:t%=q%!4|
00000cd0  30 0d 06 9a 28 e7 a4 6f  6b 66 69 6c 65 5f 61 74  |0...(..okfile_at|
00000ce0  28 66 69 6c 65 24 2c 73  25 2c 74 25 29 f2 64 61  |(file$,s%,t%).da|
00000cf0  74 61 73 61 76 65 61 63  6b 0d 06 a4 05 e1 0d 06  |tasaveack.......|
00000d00  ae 04 0d 06 b8 12 dd f2  74 65 6d 70 6c 61 74 65  |........template|
00000d10  28 54 24 29 0d 06 c2 15  f2 74 65 6d 70 6c 61 74  |(T$).....templat|
00000d20  65 31 28 54 24 2c 71 25  29 0d 06 cc 05 e1 0d 06  |e1(T$,q%).......|
00000d30  d6 04 0d 06 e0 16 dd f2  74 65 6d 70 6c 61 74 65  |........template|
00000d40  31 28 54 24 2c 71 25 29  0d 06 ea 15 ea 20 63 25  |1(T$,q%)..... c%|
00000d50  3a 24 77 6f 72 6b 62 75  66 25 3d 54 24 0d 06 f4  |:$workbuf%=T$...|
00000d60  4a c8 99 20 22 57 69 6d  70 5f 4c 6f 61 64 54 65  |J.. "Wimp_LoadTe|
00000d70  6d 70 6c 61 74 65 22 2c  2c 71 25 2c 63 75 72 62  |mplate",,q%,curb|
00000d80  75 66 25 2c 65 6e 64 62  75 66 25 2c 2d 31 2c 77  |uf%,endbuf%,-1,w|
00000d90  6f 72 6b 62 75 66 25 b8  2c 2c 63 75 72 62 75 66  |orkbuf%.,,curbuf|
00000da0  25 2c 2c 2c 2c 63 25 0d  06 fe 2e e7 20 63 25 3d  |%,,,,c%..... c%=|
00000db0  30 20 8c 20 85 20 31 2c  22 54 65 6d 70 6c 61 74  |0 . . 1,"Templat|
00000dc0  65 20 27 22 2b 54 24 2b  22 27 20 6e 6f 74 20 66  |e '"+T$+"' not f|
00000dd0  6f 75 6e 64 22 0d 07 08  05 e1 0d 07 12 04 0d 07  |ound"...........|
00000de0  1c 0b dd f2 64 65 66 77  73 0d 07 26 07 ea 49 25  |....defws..&..I%|
00000df0  0d 07 30 10 62 75 66 73  7a 25 3d 26 31 30 30 30  |..0.bufsz%=&1000|
00000e00  0d 07 3a 3b de 20 62 75  66 66 65 72 25 20 62 75  |..:;. buffer% bu|
00000e10  66 73 7a 25 3a 63 75 72  62 75 66 25 3d 62 75 66  |fsz%:curbuf%=buf|
00000e20  66 65 72 25 3a 65 6e 64  62 75 66 25 3d 62 75 66  |fer%:endbuf%=buf|
00000e30  66 65 72 25 2b 62 75 66  73 7a 25 0d 07 44 27 c8  |fer%+bufsz%..D'.|
00000e40  99 22 57 69 6d 70 5f 4f  70 65 6e 54 65 6d 70 6c  |."Wimp_OpenTempl|
00000e50  61 74 65 22 2c 2c a4 64  69 72 2b 22 41 74 46 72  |ate",,.dir+"AtFr|
00000e60  6d 22 0d 07 4e 42 f2 74  65 6d 70 6c 61 74 65 28  |m"..NB.template(|
00000e70  22 73 74 6f 70 62 6f 78  22 29 3a 71 25 21 36 34  |"stopbox"):q%!64|
00000e80  3d 31 3a c8 99 22 57 69  6d 70 5f 43 72 65 61 74  |=1:.."Wimp_Creat|
00000e90  65 57 69 6e 64 6f 77 22  2c 2c 71 25 b8 77 5f 73  |eWindow",,q%.w_s|
00000ea0  74 6f 70 25 0d 07 58 3f  f2 74 65 6d 70 6c 61 74  |top%..X?.templat|
00000eb0  65 28 22 73 61 76 65 22  29 3a 71 25 21 36 34 3d  |e("save"):q%!64=|
00000ec0  31 3a c8 99 22 57 69 6d  70 5f 43 72 65 61 74 65  |1:.."Wimp_Create|
00000ed0  57 69 6e 64 6f 77 22 2c  2c 71 25 b8 77 5f 73 61  |Window",,q%.w_sa|
00000ee0  76 65 25 0d 07 62 3c f2  74 65 6d 70 6c 61 74 65  |ve%..b<.template|
00000ef0  28 22 50 72 6f 67 49 6e  66 6f 22 29 3a c8 99 22  |("ProgInfo"):.."|
00000f00  57 69 6d 70 5f 43 72 65  61 74 65 57 69 6e 64 6f  |Wimp_CreateWindo|
00000f10  77 22 2c 2c 71 25 b8 77  5f 70 69 6e 66 6f 25 0d  |w",,q%.w_pinfo%.|
00000f20  07 6c 1a c8 99 22 57 69  6d 70 5f 43 6c 6f 73 65  |.l..."Wimp_Close|
00000f30  54 65 6d 70 6c 61 74 65  22 0d 07 76 19 66 72 65  |Template"..v.fre|
00000f40  65 25 3d 65 6e 64 62 75  66 25 2d 63 75 72 62 75  |e%=endbuf%-curbu|
00000f50  66 25 0d 07 80 05 e1 0d  07 8a 04 0d 07 94 0e dd  |f%..............|
00000f60  f2 64 65 66 6d 65 6e 75  73 0d 07 9e 07 ea 74 24  |.defmenus.....t$|
00000f70  0d 07 a8 1c de 20 6d 6c  69 73 74 25 20 33 32 2c  |..... mlist% 32,|
00000f80  66 75 6e 63 74 69 6f 6e  25 20 35 31 0d 07 b2 0f  |function% 51....|
00000f90  62 75 66 73 7a 25 3d 26  32 30 30 0d 07 bc 43 de  |bufsz%=&200...C.|
00000fa0  20 6d 65 6e 75 66 72 65  65 25 20 62 75 66 73 7a  | menufree% bufsz|
00000fb0  25 3a 6d 65 6e 75 70 74  72 25 3d 6d 65 6e 75 66  |%:menuptr%=menuf|
00000fc0  72 65 65 25 3a 6d 65 6e  75 65 6e 64 25 3d 6d 65  |ree%:menuend%=me|
00000fd0  6e 75 66 72 65 65 25 2b  62 75 66 73 7a 25 0d 07  |nufree%+bufsz%..|
00000fe0  c6 1c 6d 65 6e 75 73 74  61 72 74 25 3d 6d 65 6e  |..menustart%=men|
00000ff0  75 66 72 65 65 25 3a f7  2b 32 0d 07 d0 1b f3 74  |ufree%:.+2.....t|
00001000  24 3a 6d 5f 73 61 76 65  25 3d a4 63 72 6d 65 6e  |$:m_save%=.crmen|
00001010  75 28 74 24 29 0d 07 da  b9 dc 22 23 53 61 76 65  |u(t$)....."#Save|
00001020  2c 43 6f 6d 70 72 65 73  73 65 64 20 53 63 72 65  |,Compressed Scre|
00001030  65 6e 7d 77 5f 73 61 76  65 25 2c 53 79 73 74 65  |en}w_save%,Syste|
00001040  6d 20 53 63 72 65 65 6e  7d 77 5f 73 61 76 65 25  |m Screen}w_save%|
00001050  2c 53 75 70 65 72 20 43  6f 6d 70 61 63 74 65 64  |,Super Compacted|
00001060  20 53 63 72 65 65 6e 7d  77 5f 73 61 76 65 25 2c  | Screen}w_save%,|
00001070  53 75 70 65 72 20 43 6f  6d 70 61 63 74 65 64 20  |Super Compacted |
00001080  53 70 72 69 74 65 7d 77  5f 73 61 76 65 25 2c 53  |Sprite}w_save%,S|
00001090  79 73 74 65 6d 20 53 70  72 69 74 65 28 73 29 7d  |ystem Sprite(s)}|
000010a0  77 5f 73 61 76 65 25 2c  42 72 75 73 68 20 53 68  |w_save%,Brush Sh|
000010b0  61 70 65 73 7d 77 5f 73  61 76 65 25 2c 50 61 74  |apes}w_save%,Pat|
000010c0  74 65 72 6e 73 7d 77 5f  73 61 76 65 25 22 0d 07  |terns}w_save%"..|
000010d0  e4 1b f3 74 24 3a 6d 5f  6d 61 69 6e 25 3d a4 63  |...t$:m_main%=.c|
000010e0  72 6d 65 6e 75 28 74 24  29 0d 07 ee 2f dc 22 23  |rmenu(t$).../."#|
000010f0  41 74 65 6c 69 65 72 2c  49 6e 66 6f 3e 77 5f 70  |Atelier,Info>w_p|
00001100  69 6e 66 6f 25 2c 53 61  76 65 3e 6d 5f 73 61 76  |info%,Save>m_sav|
00001110  65 25 2c 51 75 69 74 22  0d 07 f8 05 e1 0d 08 02  |e%,Quit"........|
00001120  04 0d 08 0c 15 dd f2 66  72 6f 6e 74 28 68 25 2c  |.......front(h%,|
00001130  58 25 2c 59 25 29 0d 08  16 0d f2 67 65 74 77 28  |X%,Y%).....getw(|
00001140  68 25 29 0d 08 20 1c e7  58 25 3e 3d 30 78 31 25  |h%).. ..X%>=0x1%|
00001150  2b 3d 58 25 2d 78 30 25  3a 78 30 25 3d 58 25 0d  |+=X%-x0%:x0%=X%.|
00001160  08 2a 1c e7 59 25 3e 3d  30 79 31 25 2b 3d 59 25  |.*..Y%>=0y1%+=Y%|
00001170  2d 79 30 25 3a 79 30 25  3d 59 25 0d 08 34 2a f2  |-y0%:y0%=Y%..4*.|
00001180  6f 70 65 6e 28 68 25 2c  78 30 25 2c 79 30 25 2c  |open(h%,x0%,y0%,|
00001190  78 31 25 2c 79 31 25 2c  73 63 78 25 2c 73 63 79  |x1%,y1%,scx%,scy|
000011a0  25 2c 2d 31 29 0d 08 3e  05 e1 0d 08 48 04 0d 08  |%,-1)..>....H...|
000011b0  52 0d dd f2 74 6f 70 28  68 25 29 0d 08 5c 36 f2  |R...top(h%)..\6.|
000011c0  67 65 74 77 28 68 25 29  3a f2 6f 70 65 6e 28 68  |getw(h%):.open(h|
000011d0  25 2c 78 30 25 2c 79 30  25 2c 78 31 25 2c 79 31  |%,x0%,y0%,x1%,y1|
000011e0  25 2c 73 63 78 25 2c 73  63 79 25 2c 2d 31 29 3a  |%,scx%,scy%,-1):|
000011f0  e1 0d 08 66 04 0d 08 70  34 dd f2 6f 70 65 6e 28  |...f...p4..open(|
00001200  6f 68 25 2c 6f 78 30 25  2c 6f 79 30 25 2c 6f 78  |oh%,ox0%,oy0%,ox|
00001210  31 25 2c 6f 79 31 25 2c  6f 73 63 78 25 2c 6f 73  |1%,oy1%,oscx%,os|
00001220  63 79 25 2c 6f 62 68 25  29 0d 08 7a 07 ea 4f 25  |cy%,obh%)..z..O%|
00001230  0d 08 84 27 21 71 25 3d  6f 68 25 3a c8 99 22 57  |...'!q%=oh%:.."W|
00001240  69 6d 70 5f 47 65 74 57  69 6e 64 6f 77 53 74 61  |imp_GetWindowSta|
00001250  74 65 22 2c 2c 71 25 0d  08 8e 0d f2 77 69 6d 70  |te",,q%.....wimp|
00001260  6f 70 65 6e 0d 08 98 05  e1 0d 08 a2 04 0d 08 ac  |open............|
00001270  0e dd f2 77 69 6d 70 6f  70 65 6e 0d 08 b6 35 21  |...wimpopen...5!|
00001280  71 25 3d 6f 68 25 3a 71  25 21 34 3d 6f 78 30 25  |q%=oh%:q%!4=ox0%|
00001290  3a 71 25 21 38 3d 6f 79  30 25 3a 71 25 21 31 32  |:q%!8=oy0%:q%!12|
000012a0  3d 6f 78 31 25 3a 71 25  21 31 36 3d 6f 79 31 25  |=ox1%:q%!16=oy1%|
000012b0  0d 08 c0 3e 71 25 21 32  30 3d 6f 73 63 78 25 3a  |...>q%!20=oscx%:|
000012c0  71 25 21 32 34 3d 6f 73  63 79 25 3a 71 25 21 32  |q%!24=oscy%:q%!2|
000012d0  38 3d 6f 62 68 25 3a c8  99 22 57 69 6d 70 5f 4f  |8=obh%:.."Wimp_O|
000012e0  70 65 6e 57 69 6e 64 6f  77 22 2c 2c 71 25 0d 08  |penWindow",,q%..|
000012f0  ca 05 e1 0d 08 d4 04 0d  08 de 11 dd f2 63 6c 6f  |.............clo|
00001300  73 65 77 28 21 71 25 29  0d 08 e8 07 ea 49 25 0d  |sew(!q%).....I%.|
00001310  08 f2 1c c8 99 22 57 69  6d 70 5f 43 6c 6f 73 65  |....."Wimp_Close|
00001320  57 69 6e 64 6f 77 22 2c  2c 71 25 0d 08 fc 2e e7  |Window",,q%.....|
00001330  21 71 25 3d 64 69 61 6c  6f 67 75 65 25 3a 64 69  |!q%=dialogue%:di|
00001340  61 6c 72 65 61 73 6f 6e  25 3d 2d 31 3a 64 69 61  |alreason%=-1:dia|
00001350  6c 6f 67 75 65 25 3d 2d  31 0d 09 06 24 e7 64 69  |logue%=-1...$.di|
00001360  61 6c 6f 67 75 65 25 3e  3d 30 3a f2 63 6c 6f 73  |alogue%>=0:.clos|
00001370  65 77 28 64 69 61 6c 6f  67 75 65 25 29 0d 09 10  |ew(dialogue%)...|
00001380  0a c8 8e 21 71 25 ca 0d  09 1a 1b c9 77 5f 73 74  |...!q%......w_st|
00001390  6f 70 25 3a 73 74 6f 70  72 65 61 73 6f 6e 25 3d  |op%:stopreason%=|
000013a0  2d 31 0d 09 24 05 cb 0d  09 2e 05 e1 0d 09 38 04  |-1..$.........8.|
000013b0  0d 09 42 2a dd a4 69 61  28 68 25 2c 69 25 29 3a  |..B*..ia(h%,i%):|
000013c0  f2 67 65 74 69 28 68 25  2c 69 25 29 3a f2 63 68  |.geti(h%,i%):.ch|
000013d0  6b 69 69 3a 3d 71 25 21  32 38 0d 09 4c 2a dd a4  |kii:=q%!28..L*..|
000013e0  76 61 28 68 25 2c 69 25  29 3a f2 67 65 74 69 28  |va(h%,i%):.geti(|
000013f0  68 25 2c 69 25 29 3a f2  63 68 6b 69 69 3a 3d 71  |h%,i%):.chkii:=q|
00001400  25 21 33 32 0d 09 56 2a  dd a4 69 6c 28 68 25 2c  |%!32..V*..il(h%,|
00001410  69 25 29 3a f2 67 65 74  69 28 68 25 2c 69 25 29  |i%):.geti(h%,i%)|
00001420  3a f2 63 68 6b 69 69 3a  3d 71 25 21 33 36 0d 09  |:.chkii:=q%!36..|
00001430  60 04 0d 09 6a 33 dd f2  63 68 6b 69 69 3a e7 28  |`...j3..chkii:.(|
00001440  71 25 21 32 34 80 26 31  30 30 29 3d 30 85 31 2c  |q%!24.&100)=0.1,|
00001450  22 49 63 6f 6e 20 6e 6f  74 20 69 6e 64 69 72 65  |"Icon not indire|
00001460  63 74 65 64 22 0d 09 74  05 e1 0d 09 7e 04 0d 09  |cted"..t....~...|
00001470  88 3c dd f2 67 65 74 69  28 68 25 2c 69 25 29 3a  |.<..geti(h%,i%):|
00001480  21 71 25 3d 68 25 3a 71  25 21 34 3d 69 25 3a c8  |!q%=h%:q%!4=i%:.|
00001490  99 22 57 69 6d 70 5f 47  65 74 49 63 6f 6e 53 74  |."Wimp_GetIconSt|
000014a0  61 74 65 22 2c 2c 71 25  3a e1 0d 09 92 04 0d 09  |ate",,q%:.......|
000014b0  9c 17 dd f2 73 74 6f 70  28 72 25 2c 54 24 2c 55  |....stop(r%,T$,U|
000014c0  24 2c 54 25 29 0d 09 a6  12 64 69 61 6c 72 65 61  |$,T%)....dialrea|
000014d0  73 6f 6e 25 3d 72 25 0d  09 b0 16 e7 a6 2d 33 6d  |son%=r%......-3m|
000014e0  69 25 3d 33 3a f2 6d 73  74 6f 70 3a e1 0d 09 ba  |i%=3:.mstop:....|
000014f0  2b f2 73 65 74 69 28 77  5f 73 74 6f 70 25 2c 30  |+.seti(w_stop%,0|
00001500  2c 54 24 29 3a f2 73 65  74 69 28 77 5f 73 74 6f  |,T$):.seti(w_sto|
00001510  70 25 2c 31 2c 55 24 29  0d 09 c4 29 f2 75 6e 73  |p%,1,U$)...).uns|
00001520  65 6c 61 6c 6c 28 77 5f  73 74 6f 70 25 29 3a f2  |elall(w_stop%):.|
00001530  64 69 61 6c 6f 67 75 65  28 77 5f 73 74 6f 70 25  |dialogue(w_stop%|
00001540  29 0d 09 ce 12 64 69 61  6c 72 65 61 73 6f 6e 25  |)....dialreason%|
00001550  3d 72 25 0d 09 d8 05 e1  0d 09 e2 04 0d 09 ec 12  |=r%.............|
00001560  dd f2 64 69 61 6c 6f 67  75 65 28 68 25 29 0d 09  |..dialogue(h%)..|
00001570  f6 0a ea 58 25 2c 59 25  0d 0a 00 24 e7 64 69 61  |...X%,Y%...$.dia|
00001580  6c 6f 67 75 65 25 3e 3d  30 3a f2 63 6c 6f 73 65  |logue%>=0:.close|
00001590  77 28 64 69 61 6c 6f 67  75 65 25 29 0d 0a 0a 2d  |w(dialogue%)...-|
000015a0  f2 6e 6f 6d 65 6e 75 3a  f2 72 65 61 64 70 6f 69  |.nomenu:.readpoi|
000015b0  6e 74 65 72 3a 58 25 3d  6d 78 25 2d 32 30 30 3a  |nter:X%=mx%-200:|
000015c0  59 25 3d 6d 79 25 2d 38  35 0d 0a 14 0d e7 58 25  |Y%=my%-85.....X%|
000015d0  3c 30 58 25 3d 30 0d 0a  1e 0f e7 59 25 3c 39 36  |<0X%=0.....Y%<96|
000015e0  59 25 3d 39 36 0d 0a 28  32 64 69 61 6c 6f 67 75  |Y%=96..(2dialogu|
000015f0  65 25 3d 68 25 3a f2 66  72 6f 6e 74 28 68 25 2c  |e%=h%:.front(h%,|
00001600  58 25 2c 59 25 29 3a f2  73 65 74 63 74 28 68 25  |X%,Y%):.setct(h%|
00001610  2c 2d 31 2c 2d 31 29 0d  0a 32 05 e1 0d 0a 3c 04  |,-1,-1)..2....<.|
00001620  0d 0a 46 21 dd f2 72 65  61 64 70 6f 69 6e 74 65  |..F!..readpointe|
00001630  72 3a ea 71 25 3a 71 25  3d 77 6f 72 6b 62 75 66  |r:.q%:q%=workbuf|
00001640  25 0d 0a 50 1f c8 99 22  57 69 6d 70 5f 47 65 74  |%..P..."Wimp_Get|
00001650  50 6f 69 6e 74 65 72 49  6e 66 6f 22 2c 2c 71 25  |PointerInfo",,q%|
00001660  0d 0a 5a 31 6d 78 25 3d  21 71 25 3a 6d 79 25 3d  |..Z1mx%=!q%:my%=|
00001670  71 25 21 34 3a 6d 62 25  3d 71 25 21 38 3a 6d 68  |q%!4:mb%=q%!8:mh|
00001680  25 3d 71 25 21 31 32 3a  6d 69 25 3d 71 25 21 31  |%=q%!12:mi%=q%!1|
00001690  36 0d 0a 64 05 e1 0d 0a  6e 04 0d 0a 78 0e dd a4  |6..d....n...x...|
000016a0  64 69 61 6c 6f 67 75 65  0d 0a 82 21 e7 64 69 61  |dialogue...!.dia|
000016b0  6c 6f 67 75 65 25 3e 3d  30 80 6d 68 25 3c 3e 64  |logue%>=0.mh%<>d|
000016c0  69 61 6c 6f 67 75 65 25  8c 0d 0a 8c 16 f2 63 6c  |ialogue%......cl|
000016d0  6f 73 65 77 28 64 69 61  6c 6f 67 75 65 25 29 0d  |osew(dialogue%).|
000016e0  0a 96 05 cd 0d 0a a0 06  3d a3 0d 0a aa 04 0d 0a  |........=.......|
000016f0  b4 24 dd f2 6d 6f 75 73  65 28 6d 78 25 2c 6d 79  |.$..mouse(mx%,my|
00001700  25 2c 6d 62 25 2c 6d 68  25 2c 6d 69 25 2c 6d 6f  |%,mb%,mh%,mi%,mo|
00001710  25 29 0d 0a be 1d e7 64  72 61 67 72 65 61 73 6f  |%).....dragreaso|
00001720  6e 25 3e 3d 30 84 6d 62  25 3e 32 35 35 3a e1 0d  |n%>=0.mb%>255:..|
00001730  0a c8 10 e7 a4 64 69 61  6c 6f 67 75 65 3a e1 0d  |.....dialogue:..|
00001740  0a d2 0a c8 8e 6d 62 25  ca 0d 0a dc 0c c9 32 3a  |.....mb%......2:|
00001750  f2 6d 65 6e 75 0d 0a e6  10 c9 31 2c 34 3a f2 73  |.menu.....1,4:.s|
00001760  65 6c 65 63 74 0d 0a f0  15 c9 31 36 2c 36 34 3a  |elect.....16,64:|
00001770  f2 73 74 61 72 74 64 72  61 67 0d 0a fa 05 cb 0d  |.startdrag......|
00001780  0b 04 05 e1 0d 0b 0e 04  0d 0b 18 36 dd f2 73 65  |...........6..se|
00001790  74 69 28 68 25 2c 69 25  2c 54 24 29 3a 54 24 3d  |ti(h%,i%,T$):T$=|
000017a0  c0 54 24 2c a4 69 6c 28  68 25 2c 69 25 29 29 3a  |.T$,.il(h%,i%)):|
000017b0  24 a4 69 61 28 68 25 2c  69 25 29 3d 54 24 0d 0b  |$.ia(h%,i%)=T$..|
000017c0  22 3c f2 69 63 6f 6e 75  70 64 28 68 25 2c 69 25  |"<.iconupd(h%,i%|
000017d0  29 3a f2 67 65 74 63 74  3a e7 21 71 25 3d 68 25  |):.getct:.!q%=h%|
000017e0  80 71 25 21 34 3d 69 25  3a f2 73 65 74 63 74 28  |.q%!4=i%:.setct(|
000017f0  68 25 2c 69 25 2c a9 54  24 29 0d 0b 2c 05 e1 0d  |h%,i%,.T$)..,...|
00001800  0b 36 04 0d 0b 40 27 dd  f2 69 73 65 74 28 68 25  |.6...@'..iset(h%|
00001810  2c 69 25 2c 42 25 2c 45  25 29 3a ea 71 25 3a 71  |,i%,B%,E%):.q%:q|
00001820  25 3d 77 6f 72 6b 62 75  66 25 0d 0b 4a 3f 21 71  |%=workbuf%..J?!q|
00001830  25 3d 68 25 3a 71 25 21  34 3d 69 25 3a 71 25 21  |%=h%:q%!4=i%:q%!|
00001840  31 32 3d 42 25 3a 71 25  21 38 3d 45 25 3a c8 99  |12=B%:q%!8=E%:..|
00001850  22 57 69 6d 70 5f 53 65  74 49 63 6f 6e 53 74 61  |"Wimp_SetIconSta|
00001860  74 65 22 2c 2c 71 25 3a  e1 0d 0b 54 04 0d 0b 5e  |te",,q%:...T...^|
00001870  27 dd f2 69 63 6f 6e 75  70 64 28 68 25 2c 69 25  |'..iconupd(h%,i%|
00001880  29 3a f2 69 73 65 74 28  68 25 2c 69 25 2c 30 2c  |):.iset(h%,i%,0,|
00001890  30 29 3a e1 0d 0b 68 04  0d 0b 72 13 dd f2 72 65  |0):...h...r...re|
000018a0  61 64 62 6c 6f 63 6b 28  70 25 29 0d 0b 7c 37 78  |adblock(p%)..|7x|
000018b0  30 25 3d 21 70 25 3a 79  30 25 3d 70 25 21 34 3a  |0%=!p%:y0%=p%!4:|
000018c0  78 31 25 3d 70 25 21 38  3a 79 31 25 3d 70 25 21  |x1%=p%!8:y1%=p%!|
000018d0  31 32 3a f4 20 70 68 79  73 69 63 61 6c 20 61 72  |12:. physical ar|
000018e0  65 61 0d 0b 86 46 73 63  78 25 3d 70 25 21 31 36  |ea...Fscx%=p%!16|
000018f0  3a 73 63 79 25 3d 70 25  21 32 30 3a 62 68 61 6e  |:scy%=p%!20:bhan|
00001900  64 6c 65 25 3d 70 25 21  32 34 3a f4 20 73 63 72  |dle%=p%!24:. scr|
00001910  6f 6c 6c 20 6f 66 66 73  65 74 73 2c 20 73 74 61  |oll offsets, sta|
00001920  63 6b 20 64 65 70 74 68  0d 0b 90 4a 62 78 25 3d  |ck depth...Jbx%=|
00001930  78 30 25 2d 73 63 78 25  3a 62 79 25 3d 79 31 25  |x0%-scx%:by%=y1%|
00001940  2d 73 63 79 25 3a f4 20  63 61 6c 63 75 6c 61 74  |-scy%:. calculat|
00001950  65 20 70 68 79 73 69 63  61 6c 20 63 6f 2d 6f 72  |e physical co-or|
00001960  64 73 20 6f 66 20 6c 6f  67 69 63 61 6c 20 61 72  |ds of logical ar|
00001970  65 61 0d 0b 9a 3e 65 78  30 25 3d 70 25 21 34 30  |ea...>ex0%=p%!40|
00001980  3a 65 79 30 25 3d 70 25  21 34 34 3a 65 78 31 25  |:ey0%=p%!44:ex1%|
00001990  3d 70 25 21 34 38 3a 65  79 31 25 3d 70 25 21 35  |=p%!48:ey1%=p%!5|
000019a0  32 3a f4 20 6c 6f 67 69  63 61 6c 20 61 72 65 61  |2:. logical area|
000019b0  0d 0b a4 41 67 78 30 25  3d 70 25 21 32 34 3a 67  |...Agx0%=p%!24:g|
000019c0  79 30 25 3d 70 25 21 32  38 3a 67 78 31 25 3d 70  |y0%=p%!28:gx1%=p|
000019d0  25 21 33 32 3a 67 79 31  25 3d 70 25 21 33 36 3a  |%!32:gy1%=p%!36:|
000019e0  f4 20 67 72 61 70 68 69  63 73 20 77 69 6e 64 6f  |. graphics windo|
000019f0  77 0d 0b ae 2e 6f 70 65  6e 25 3d 28 70 25 21 32  |w....open%=(p%!2|
00001a00  38 80 26 31 30 30 30 30  29 3c 3e 30 3a f4 20 77  |8.&10000)<>0:. w|
00001a10  69 6e 64 6f 77 20 6f 70  65 6e 20 66 6c 61 67 0d  |indow open flag.|
00001a20  0b b8 05 e1 0d 0b c2 04  0d 0b cc 0e dd f2 67 65  |..............ge|
00001a30  74 77 28 68 25 29 0d 0b  d6 26 21 71 25 3d 68 25  |tw(h%)...&!q%=h%|
00001a40  3a c8 99 20 22 57 69 6d  70 5f 47 65 74 57 69 6e  |:.. "Wimp_GetWin|
00001a50  64 6f 77 49 6e 66 6f 22  2c 2c 71 25 0d 0b e0 14  |dowInfo",,q%....|
00001a60  f2 72 65 61 64 62 6c 6f  63 6b 28 71 25 2b 34 29  |.readblock(q%+4)|
00001a70  0d 0b ea 05 e1 0d 0b f4  04 0d 0b fe 0c dd f2 73  |...............s|
00001a80  65 6c 65 63 74 0d 0c 08  0a c8 8e 6d 68 25 ca 0d  |elect......mh%..|
00001a90  0c 12 1f c9 2d 32 3a 65  6e 74 65 72 25 3d 30 3a  |....-2:enter%=0:|
00001aa0  f2 65 6e 74 65 72 5f 61  74 65 6c 69 65 72 0d 0c  |.enter_atelier..|
00001ab0  1c 13 c9 77 5f 73 74 6f  70 25 3a f2 6d 73 74 6f  |...w_stop%:.msto|
00001ac0  70 0d 0c 26 13 c9 77 5f  73 61 76 65 25 3a f2 6d  |p..&..w_save%:.m|
00001ad0  73 61 76 65 0d 0c 30 05  cb 0d 0c 3a 05 e1 0d 0c  |save..0....:....|
00001ae0  44 04 0d 0c 4e 0b dd f2  6d 73 74 6f 70 0d 0c 58  |D...N...mstop..X|
00001af0  11 e7 6d 69 25 3c 33 84  6d 69 25 3e 34 e1 0d 0c  |..mi%<3.mi%>4...|
00001b00  62 25 ea 54 25 3a 54 25  3d 64 69 61 6c 72 65 61  |b%.T%:T%=dialrea|
00001b10  73 6f 6e 25 3a 64 69 61  6c 72 65 61 73 6f 6e 25  |son%:dialreason%|
00001b20  3d 2d 31 0d 0c 6c 0b e7  6d 69 25 3d 33 8c 0d 0c  |=-1..l..mi%=3...|
00001b30  76 09 c8 8e 54 25 ca 0d  0c 80 0c c9 31 3a f2 71  |v...T%......1:.q|
00001b40  75 69 74 0d 0c 8a 05 cb  0d 0c 94 05 cd 0d 0c 9e  |uit.............|
00001b50  16 f2 63 6c 6f 73 65 77  28 77 5f 73 74 6f 70 25  |..closew(w_stop%|
00001b60  29 3a e1 0d 0c a8 04 0d  0c b2 0b dd f2 6d 73 61  |):...........msa|
00001b70  76 65 0d 0c bc 0c e7 6d  69 25 3c 3e 30 e1 0d 0c  |ve.....mi%<>0...|
00001b80  c6 67 ea 54 24 3a 54 24  3d 24 a4 69 61 28 77 5f  |.g.T$:T$=$.ia(w_|
00001b90  73 61 76 65 25 2c 32 29  3a e7 54 24 3d a4 6c 65  |save%,2):.T$=.le|
00001ba0  61 66 28 54 24 29 3a 85  39 39 2c 22 54 6f 20 73  |af(T$):.99,"To s|
00001bb0  61 76 65 2c 20 70 6c 65  61 73 65 20 64 72 61 67  |ave, please drag|
00001bc0  20 74 68 65 20 66 69 6c  65 20 69 63 6f 6e 20 74  | the file icon t|
00001bd0  6f 20 61 20 64 69 72 65  63 74 6f 72 79 20 76 69  |o a directory vi|
00001be0  65 77 65 72 22 0d 0c d0  17 66 69 6c 65 24 3d 54  |ewer"....file$=T|
00001bf0  24 3a f2 73 61 76 65 64  61 74 61 31 0d 0c da 05  |$:.savedata1....|
00001c00  e1 0d 0c e4 04 0d 0c ee  0f dd f2 73 74 61 72 74  |...........start|
00001c10  64 72 61 67 0d 0c f8 22  64 72 61 67 72 65 61 73  |drag..."dragreas|
00001c20  6f 6e 25 3d 2d 31 3a 64  72 61 67 62 75 74 74 6f  |on%=-1:dragbutto|
00001c30  6e 25 3d 6d 62 25 0d 0d  02 0a c8 8e 6d 68 25 ca  |n%=mb%......mh%.|
00001c40  0d 0d 0c 36 c9 77 5f 73  61 76 65 25 3a e7 6d 69  |...6.w_save%:.mi|
00001c50  25 3d 33 3a 64 72 61 67  72 65 61 73 6f 6e 25 3d  |%=3:dragreason%=|
00001c60  31 3a f2 64 72 61 67 69  63 6f 6e 28 77 5f 73 61  |1:.dragicon(w_sa|
00001c70  76 65 25 2c 33 29 0d 0d  16 05 cb 0d 0d 20 05 e1  |ve%,3)....... ..|
00001c80  0d 0d 2a 04 0d 0d 34 0d  dd f2 65 6e 64 64 72 61  |..*...4...enddra|
00001c90  67 0d 0d 3e 10 f2 72 65  61 64 70 6f 69 6e 74 65  |g..>..readpointe|
00001ca0  72 0d 0d 48 0d e7 6d 68  25 3c 3e 2d 31 8c 0d 0d  |r..H..mh%<>-1...|
00001cb0  52 12 c8 8e 64 72 61 67  72 65 61 73 6f 6e 25 ca  |R...dragreason%.|
00001cc0  0d 0d 5c 23 c9 31 3a 66  69 6c 65 24 3d a4 6c 65  |..\#.1:file$=.le|
00001cd0  61 66 28 24 a4 69 61 28  77 5f 73 61 76 65 25 2c  |af($.ia(w_save%,|
00001ce0  32 29 29 0d 0d 66 2d f2  73 61 76 65 72 65 71 28  |2))..f-.savereq(|
00001cf0  66 69 6c 65 24 2c 73 61  76 65 74 25 2c 73 61 76  |file$,savet%,sav|
00001d00  65 73 25 2c 73 61 76 65  72 65 61 73 6f 6e 25 29  |es%,savereason%)|
00001d10  0d 0d 70 05 cb 0d 0d 7a  05 cd 0d 0d 84 12 64 72  |..p....z......dr|
00001d20  61 67 72 65 61 73 6f 6e  25 3d 2d 31 0d 0d 8e 05  |agreason%=-1....|
00001d30  e1 0d 0d 98 04 0d 0d a2  2c dd f2 75 6e 73 65 6c  |........,..unsel|
00001d40  69 28 68 25 2c 69 25 29  3a f2 69 73 65 74 28 68  |i(h%,i%):.iset(h|
00001d50  25 2c 69 25 2c 26 32 30  30 30 30 30 2c 30 29 3a  |%,i%,&200000,0):|
00001d60  e1 0d 0d ac 04 0d 0d b6  30 dd f2 73 65 6c 69 28  |........0..seli(|
00001d70  68 25 2c 69 25 29 3a f2  69 73 65 74 28 68 25 2c  |h%,i%):.iset(h%,|
00001d80  69 25 2c 26 32 30 30 30  30 30 2c 26 32 30 30 30  |i%,&200000,&2000|
00001d90  30 30 29 3a e1 0d 0d c0  04 0d 0d ca 12 dd f2 75  |00):...........u|
00001da0  6e 73 65 6c 61 6c 6c 28  68 25 29 0d 0d d4 14 ea  |nselall(h%).....|
00001db0  49 25 2c 69 25 3a f2 77  63 68 69 28 68 25 29 0d  |I%,i%:.wchi(h%).|
00001dc0  0d de 28 49 25 3d 71 25  3a f5 3a 69 25 3d 21 49  |..(I%=q%:.:i%=!I|
00001dd0  25 3a e7 69 25 3e 3d 30  3a f2 75 6e 73 65 6c 69  |%:.i%>=0:.unseli|
00001de0  28 68 25 2c 69 25 29 0d  0d e8 11 49 25 2b 3d 34  |(h%,i%)....I%+=4|
00001df0  3a fd 69 25 3c 30 3a e1  0d 0d f2 04 0d 0d fc 38  |:.i%<0:........8|
00001e00  dd f2 77 63 68 69 28 68  25 29 3a c8 99 20 22 57  |..wchi(h%):.. "W|
00001e10  69 6d 70 5f 57 68 69 63  68 49 63 6f 6e 22 2c 68  |imp_WhichIcon",h|
00001e20  25 2c 71 25 2c 26 32 30  30 30 30 30 2c 26 32 30  |%,q%,&200000,&20|
00001e30  30 30 30 30 0d 0e 06 05  e1 0d 0e 10 04 0d 0e 1a  |0000............|
00001e40  0a dd f2 6d 65 6e 75 0d  0e 24 0a c8 8e 6d 68 25  |...menu..$...mh%|
00001e50  ca 0d 0e 2e 24 c9 2d 32  3a 6d 79 25 3d 36 34 2b  |....$.-2:my%=64+|
00001e60  33 2a 34 30 3a f2 70 6f  70 28 6d 5f 6d 61 69 6e  |3*40:.pop(m_main|
00001e70  25 2c 2d 31 29 0d 0e 38  05 cb 0d 0e 42 05 e1 0d  |%,-1)..8....B...|
00001e80  0e 4c 04 0d 0e 56 1a dd  a4 70 61 72 28 74 24 2c  |.L...V...par(t$,|
00001e90  73 24 2c f8 20 69 25 29  3a ea 69 31 25 0d 0e 60  |s$,. i%):.i1%..`|
00001ea0  1e 69 31 25 3d 69 25 2b  31 3a 69 25 3d a7 74 24  |.i1%=i%+1:i%=.t$|
00001eb0  2b 73 24 2c 73 24 2c 69  31 25 29 0d 0e 6a 14 3d  |+s$,s$,i1%)..j.=|
00001ec0  c1 74 24 2c 69 31 25 2c  69 25 2d 69 31 25 29 0d  |.t$,i1%,i%-i1%).|
00001ed0  0e 74 04 0d 0e 7e 13 dd  a4 63 72 6d 65 6e 75 28  |.t...~...crmenu(|
00001ee0  6d 65 6e 75 24 29 0d 0e  88 2e e7 6d 65 6e 75 66  |menu$).....menuf|
00001ef0  72 65 65 25 2b 32 38 3e  6d 65 6e 75 65 6e 64 25  |ree%+28>menuend%|
00001f00  85 39 39 2c 22 4d 65 6e  75 20 61 72 65 61 20 66  |.99,"Menu area f|
00001f10  75 6c 6c 22 0d 0e 92 08  ea 20 6d 25 0d 0e 9c 16  |ull"..... m%....|
00001f20  6d 65 6e 75 70 74 72 25  3d 6d 65 6e 75 66 72 65  |menuptr%=menufre|
00001f30  65 25 0d 0e a6 08 69 25  3d 30 0d 0e b0 43 e7 20  |e%....i%=0...C. |
00001f40  c0 6d 65 6e 75 24 2c 31  29 3d 22 23 22 69 25 3d  |.menu$,1)="#"i%=|
00001f50  31 3a 6d 65 6e 75 74 69  74 6c 65 24 3d a4 70 61  |1:menutitle$=.pa|
00001f60  72 28 6d 65 6e 75 24 2c  22 2c 22 2c 69 25 29 8b  |r(menu$,",",i%).|
00001f70  6d 65 6e 75 74 69 74 6c  65 24 3d 22 22 0d 0e ba  |menutitle$=""...|
00001f80  18 24 6d 65 6e 75 70 74  72 25 3d 6d 65 6e 75 74  |.$menuptr%=menut|
00001f90  69 74 6c 65 24 0d 0e c4  3b 6d 65 6e 75 70 74 72  |itle$...;menuptr|
00001fa0  25 3f 31 32 3d 37 3a 6d  65 6e 75 70 74 72 25 3f  |%?12=7:menuptr%?|
00001fb0  31 33 3d 32 3a 6d 65 6e  75 70 74 72 25 3f 31 34  |13=2:menuptr%?14|
00001fc0  3d 37 3a 6d 65 6e 75 70  74 72 25 3f 31 35 3d 30  |=7:menuptr%?15=0|
00001fd0  0d 0e ce 33 6d 65 6e 75  70 74 72 25 21 31 36 3d  |...3menuptr%!16=|
00001fe0  31 39 36 2d 32 34 3a 6d  65 6e 75 70 74 72 25 21  |196-24:menuptr%!|
00001ff0  32 30 3d 34 30 3a 6d 65  6e 75 70 74 72 25 21 32  |20=40:menuptr%!2|
00002000  34 3d 30 0d 0e d8 22 6d  65 6e 75 70 74 72 25 2b  |4=0..."menuptr%+|
00002010  3d 32 38 3a 6d 61 78 78  25 3d a9 6d 65 6e 75 74  |=28:maxx%=.menut|
00002020  69 74 6c 65 24 0d 0e e2  1d f5 69 74 65 6d 24 3d  |itle$.....item$=|
00002030  a4 70 61 72 28 6d 65 6e  75 24 2c 22 2c 22 2c 69  |.par(menu$,",",i|
00002040  25 29 0d 0e ec 14 f2 6d  65 6e 75 69 74 65 6d 28  |%).....menuitem(|
00002050  69 74 65 6d 24 29 0d 0e  f6 0e fd 20 69 74 65 6d  |item$)..... item|
00002060  24 3d 22 22 0d 0f 00 24  6d 25 3d 6d 65 6e 75 66  |$=""...$m%=menuf|
00002070  72 65 65 25 3a 6d 25 21  31 36 3d 28 6d 61 78 78  |ree%:m%!16=(maxx|
00002080  25 2a 38 2b 36 29 2a 32  0d 0f 0a 16 6d 65 6e 75  |%*8+6)*2....menu|
00002090  66 72 65 65 25 3d 6d 65  6e 75 70 74 72 25 0d 0f  |free%=menuptr%..|
000020a0  14 07 3d 6d 25 0d 0f 1e  04 0d 0f 28 15 dd f2 6d  |..=m%......(...m|
000020b0  65 6e 75 69 74 65 6d 28  74 65 78 74 24 29 0d 0f  |enuitem(text$)..|
000020c0  32 2e e7 74 65 78 74 24  3d 22 22 6d 65 6e 75 70  |2..text$=""menup|
000020d0  74 72 25 21 2d 32 34 3d  28 6d 65 6e 75 70 74 72  |tr%!-24=(menuptr|
000020e0  25 21 2d 32 34 29 84 26  38 30 3a e1 0d 0f 3c 2e  |%!-24).&80:...<.|
000020f0  e7 6d 65 6e 75 70 74 72  25 2b 32 34 3e 6d 65 6e  |.menuptr%+24>men|
00002100  75 65 6e 64 25 8c 85 39  39 2c 22 4d 65 6e 75 20  |uend%..99,"Menu |
00002110  61 72 65 61 20 66 75 6c  6c 22 0d 0f 46 0c ea 69  |area full"..F..i|
00002120  25 2c 66 6c 67 25 0d 0f  50 0c 66 6c 67 25 3d 26  |%,flg%..P.flg%=&|
00002130  30 30 0d 0f 5a 12 69 25  3d a7 74 65 78 74 24 2c  |00..Z.i%=.text$,|
00002140  22 3e 22 29 0d 0f 64 3c  e7 69 25 3e 30 73 75 62  |">")..d<.i%>0sub|
00002150  70 74 72 25 3d a0 c1 74  65 78 74 24 2c 69 25 2b  |ptr%=..text$,i%+|
00002160  31 29 3a 74 65 78 74 24  3d c0 74 65 78 74 24 2c  |1):text$=.text$,|
00002170  69 25 2d 31 29 8b 73 75  62 70 74 72 25 3d 2d 31  |i%-1).subptr%=-1|
00002180  0d 0f 6e 12 69 25 3d a7  74 65 78 74 24 2c 22 7d  |..n.i%=.text$,"}|
00002190  22 29 0d 0f 78 3b e7 69  25 3e 30 73 75 62 70 74  |")..x;.i%>0subpt|
000021a0  72 25 3d a0 c1 74 65 78  74 24 2c 69 25 2b 31 29  |r%=..text$,i%+1)|
000021b0  3a 74 65 78 74 24 3d c0  74 65 78 74 24 2c 69 25  |:text$=.text$,i%|
000021c0  2d 31 29 3a 66 6c 67 25  2b 3d 26 30 38 0d 0f 82  |-1):flg%+=&08...|
000021d0  29 e7 c2 74 65 78 74 24  2c 31 29 3d 22 23 22 74  |)..text$,1)="#"t|
000021e0  65 78 74 24 3d c0 74 65  78 74 24 29 3a 66 6c 67  |ext$=.text$):flg|
000021f0  25 2b 3d 26 30 32 0d 0f  8c 3b 6d 65 6e 75 70 74  |%+=&02...;menupt|
00002200  72 25 21 30 3d 66 6c 67  25 3a 6d 65 6e 75 70 74  |r%!0=flg%:menupt|
00002210  72 25 21 34 3d 73 75 62  70 74 72 25 3a 6d 65 6e  |r%!4=subptr%:men|
00002220  75 70 74 72 25 21 38 3d  26 30 37 30 30 30 30 32  |uptr%!8=&0700002|
00002230  31 0d 0f 96 13 e7 c0 74  65 78 74 24 2c 31 29 3d  |1......text$,1)=|
00002240  22 24 22 8c 0d 0f a0 32  21 6d 65 6e 75 70 74 72  |"$"....2!menuptr|
00002250  25 2b 3d 26 30 34 3a 6d  65 6e 75 70 74 72 25 21  |%+=&04:menuptr%!|
00002260  38 2b 3d 26 31 30 30 3a  69 25 3d a7 74 65 78 74  |8+=&100:i%=.text|
00002270  24 2c 22 28 22 29 0d 0f  aa 33 e7 69 25 3e 30 8c  |$,"(")...3.i%>0.|
00002280  4c 25 3d bb c1 74 65 78  74 24 2c 69 25 2b 31 29  |L%=..text$,i%+1)|
00002290  3a 74 65 78 74 24 3d c0  74 65 78 74 24 2c 69 25  |:text$=.text$,i%|
000022a0  2d 31 29 8b 4c 25 3d 31  32 0d 0f b4 38 6d 65 6e  |-1).L%=12...8men|
000022b0  75 70 74 72 25 21 31 32  3d a0 c1 74 65 78 74 24  |uptr%!12=..text$|
000022c0  2c 32 29 3a 6d 65 6e 75  70 74 72 25 21 31 36 3d  |,2):menuptr%!16=|
000022d0  2d 31 3a 6d 65 6e 75 70  74 72 25 21 32 30 3d 4c  |-1:menuptr%!20=L|
000022e0  25 0d 0f be 12 74 65 78  74 24 3d c4 4c 25 2c 22  |%....text$=.L%,"|
000022f0  20 22 29 0d 0f c8 05 cc  0d 0f d2 10 e7 a9 74 65  | ")...........te|
00002300  78 74 24 3c 3d 31 32 8c  0d 0f dc 18 24 28 6d 65  |xt$<=12.....$(me|
00002310  6e 75 70 74 72 25 2b 31  32 29 3d 74 65 78 74 24  |nuptr%+12)=text$|
00002320  0d 0f e6 05 cc 0d 0f f0  25 49 25 3d a4 77 6f 72  |........%I%=.wor|
00002330  6b 73 70 61 63 65 28 a9  74 65 78 74 24 2b 31 29  |kspace(.text$+1)|
00002340  3a 24 49 25 3d 74 65 78  74 24 0d 0f fa 36 6d 65  |:$I%=text$...6me|
00002350  6e 75 70 74 72 25 21 31  32 3d 49 25 3a 6d 65 6e  |nuptr%!12=I%:men|
00002360  75 70 74 72 25 21 31 36  3d 2d 31 3a 6d 65 6e 75  |uptr%!16=-1:menu|
00002370  70 74 72 25 21 32 30 3d  a9 74 65 78 74 24 2b 31  |ptr%!20=.text$+1|
00002380  0d 10 04 20 6d 65 6e 75  70 74 72 25 21 38 3d 6d  |... menuptr%!8=m|
00002390  65 6e 75 70 74 72 25 21  38 20 84 20 26 31 30 30  |enuptr%!8 . &100|
000023a0  0d 10 0e 05 cd 0d 10 18  1d e7 a9 74 65 78 74 24  |...........text$|
000023b0  3e 6d 61 78 78 25 6d 61  78 78 25 3d a9 74 65 78  |>maxx%maxx%=.tex|
000023c0  74 24 0d 10 22 05 cd 0d  10 2c 10 6d 65 6e 75 70  |t$.."....,.menup|
000023d0  74 72 25 2b 3d 32 34 0d  10 36 05 e1 0d 10 40 04  |tr%+=24..6....@.|
000023e0  0d 10 4a 13 dd a4 77 6f  72 6b 73 70 61 63 65 28  |..J...workspace(|
000023f0  4c 25 29 0d 10 54 32 e7  20 63 75 72 62 75 66 25  |L%)..T2. curbuf%|
00002400  2b 4c 25 3e 65 6e 64 62  75 66 25 85 39 39 2c 22  |+L%>endbuf%.99,"|
00002410  4e 6f 20 6d 6f 72 65 20  62 75 66 66 65 72 20 73  |No more buffer s|
00002420  70 61 63 65 22 0d 10 5e  1b 63 75 72 62 75 66 25  |pace"..^.curbuf%|
00002430  2b 3d 4c 25 3a 3d 63 75  72 62 75 66 25 2d 4c 25  |+=L%:=curbuf%-L%|
00002440  0d 10 68 04 0d 10 72 17  dd f2 70 72 65 70 28 6d  |..h...r...prep(m|
00002450  65 6e 75 25 2c 74 72 65  65 25 29 0d 10 7c 0a ea  |enu%,tree%)..|..|
00002460  49 25 2c 54 24 0d 10 86  13 f2 63 6c 65 61 72 74  |I%,T$.....cleart|
00002470  73 28 6d 65 6e 75 25 29  0d 10 90 0c c8 8e 6d 65  |s(menu%)......me|
00002480  6e 75 25 ca 0d 10 9a 15  c9 6d 5f 6d 61 69 6e 25  |nu%......m_main%|
00002490  3a f2 6d 70 5f 6d 61 69  6e 0d 10 a4 05 cb 0d 10  |:.mp_main.......|
000024a0  ae 05 e1 0d 10 b8 04 0d  10 c2 0d dd f2 6d 70 5f  |.............mp_|
000024b0  6d 61 69 6e 0d 10 cc 10  ea 6e 25 2c 66 24 2c 73  |main.....n%,f$,s|
000024c0  25 2c 74 25 0d 10 d6 0d  e7 74 72 65 65 25 3e 30  |%,t%.....tree%>0|
000024d0  8c 0d 10 e0 0f e7 21 6d  6c 69 73 74 25 3d 31 8c  |......!mlist%=1.|
000024e0  0d 10 ea 3e 6e 25 3d 6d  6c 69 73 74 25 21 34 3a  |...>n%=mlist%!4:|
000024f0  f2 73 65 74 66 69 6c 65  5f 61 74 28 6e 25 2c 66  |.setfile_at(n%,f|
00002500  24 2c 73 25 2c 74 25 29  3a f2 73 61 76 65 73 65  |$,s%,t%):.savese|
00002510  74 28 66 24 2c 74 25 2c  6e 25 2c 73 25 29 0d 10  |t(f$,t%,n%,s%)..|
00002520  f4 05 cd 0d 10 fe 05 cd  0d 11 08 05 e1 0d 11 12  |................|
00002530  04 0d 11 1c 16 dd f2 70  6f 70 28 6d 65 6e 75 25  |.......pop(menu%|
00002540  2c 74 72 65 65 25 29 0d  11 26 0e e7 6d 65 6e 75  |,tree%)..&..menu|
00002550  25 3c 30 3a e1 0d 11 30  16 f2 70 72 65 70 28 6d  |%<0:...0..prep(m|
00002560  65 6e 75 25 2c 74 72 65  65 25 29 0d 11 3a 2d c8  |enu%,tree%)..:-.|
00002570  99 20 22 57 69 6d 70 5f  43 72 65 61 74 65 4d 65  |. "Wimp_CreateMe|
00002580  6e 75 22 2c 2c 6d 65 6e  75 25 2c 6d 78 25 2d 35  |nu",,menu%,mx%-5|
00002590  30 2c 6d 79 25 2b 33 32  0d 11 44 13 6f 70 65 6e  |0,my%+32..D.open|
000025a0  6d 65 6e 75 25 3d 6d 65  6e 75 25 0d 11 4e 05 e1  |menu%=menu%..N..|
000025b0  0d 11 58 04 0d 11 62 0c  dd f2 6e 6f 6d 65 6e 75  |..X...b...nomenu|
000025c0  0d 11 6c 28 c8 99 22 57  69 6d 70 5f 43 72 65 61  |..l(.."Wimp_Crea|
000025d0  74 65 4d 65 6e 75 22 2c  2c 2d 31 3a 6f 70 65 6e  |teMenu",,-1:open|
000025e0  6d 65 6e 75 25 3d 2d 31  0d 11 76 05 e1 0d 11 80  |menu%=-1..v.....|
000025f0  04 0d 11 8a 10 dd f2 6d  65 6e 75 73 65 6c 65 63  |.......menuselec|
00002600  74 0d 11 94 07 ea 49 25  0d 11 9e 2d 49 25 3d 30  |t.....I%...-I%=0|
00002610  3a f5 6d 6c 69 73 74 25  21 49 25 3d 71 25 21 49  |:.mlist%!I%=q%!I|
00002620  25 3a 49 25 2b 3d 34 3a  fd 71 25 21 28 49 25 2d  |%:I%+=4:.q%!(I%-|
00002630  34 29 3d 2d 31 0d 11 a8  10 f2 72 65 61 64 70 6f  |4)=-1.....readpo|
00002640  69 6e 74 65 72 0d 11 b2  10 c8 8e 6f 70 65 6e 6d  |inter......openm|
00002650  65 6e 75 25 ca 0d 11 bc  14 c9 6d 5f 6d 61 69 6e  |enu%......m_main|
00002660  25 3a f2 6d 5f 6d 61 69  6e 0d 11 c6 05 cb 0d 11  |%:.m_main.......|
00002670  d0 0b e7 6d 62 25 3d 31  8c 0d 11 da 23 f2 70 6f  |...mb%=1....#.po|
00002680  70 28 6f 70 65 6e 6d 65  6e 75 25 2c 6d 6c 69 73  |p(openmenu%,mlis|
00002690  74 25 29 3a 8b f2 6e 6f  6d 65 6e 75 0d 11 e4 05  |t%):..nomenu....|
000026a0  cd 0d 11 ee 05 e1 0d 11  f8 04 0d 12 02 0c dd f2  |................|
000026b0  6d 5f 6d 61 69 6e 0d 12  0c 0e c8 8e 21 6d 6c 69  |m_main......!mli|
000026c0  73 74 25 ca 0d 12 16 1a  c9 30 3a f2 64 69 61 6c  |st%......0:.dial|
000026d0  6f 67 75 65 28 77 5f 70  69 6e 66 6f 25 29 0d 12  |ogue(w_pinfo%)..|
000026e0  20 21 c9 32 3a e7 a4 61  6c 74 65 72 65 64 5f 61  | !.2:..altered_a|
000026f0  74 3a f2 71 71 75 69 74  3a 8b f2 71 75 69 74 0d  |t:.qquit:..quit.|
00002700  12 2a 05 cb 0d 12 34 05  e1 0d 12 3e 04 0d 12 48  |.*....4....>...H|
00002710  1d dd f2 73 75 62 6d 65  6e 75 28 6d 65 6e 75 25  |...submenu(menu%|
00002720  2c 58 25 2c 59 25 2c 71  25 29 0d 12 52 0d f4 20  |,X%,Y%,q%)..R.. |
00002730  3b 7b 7b 7b 7b 7b 7b 0d  12 5c 07 ea 49 25 0d 12  |;{{{{{{..\..I%..|
00002740  66 2d 49 25 3d 30 3a f5  6d 6c 69 73 74 25 21 49  |f-I%=0:.mlist%!I|
00002750  25 3d 71 25 21 49 25 3a  49 25 2b 3d 34 3a fd 71  |%=q%!I%:I%+=4:.q|
00002760  25 21 28 49 25 2d 34 29  3d 2d 31 0d 12 70 1b f2  |%!(I%-4)=-1..p..|
00002770  70 72 65 70 28 6f 70 65  6e 6d 65 6e 75 25 2c 6d  |prep(openmenu%,m|
00002780  6c 69 73 74 25 29 0d 12  7a 27 c8 99 22 57 69 6d  |list%)..z'.."Wim|
00002790  70 5f 43 72 65 61 74 65  53 75 62 4d 65 6e 75 22  |p_CreateSubMenu"|
000027a0  2c 2c 6d 65 6e 75 25 2c  58 25 2c 59 25 0d 12 84  |,,menu%,X%,Y%...|
000027b0  05 e1 0d 12 8e 04 0d 12  98 20 dd f2 63 6c 65 61  |......... ..clea|
000027c0  72 74 73 28 6d 68 25 29  3a ea 49 25 3a 49 25 3d  |rts(mh%):.I%:I%=|
000027d0  6d 68 25 2b 32 38 0d 12  a2 22 e7 6d 68 25 3c 6d  |mh%+28...".mh%<m|
000027e0  65 6e 75 73 74 61 72 74  25 84 6d 68 25 3e 6d 65  |enustart%.mh%>me|
000027f0  6e 75 65 6e 64 25 3a e1  0d 12 ac 05 f5 0d 12 b6  |nuend%:.........|
00002800  22 21 49 25 3d 21 49 25  80 ac 31 3a 49 25 21 38  |"!I%=!I%..1:I%!8|
00002810  3d 49 25 21 38 80 ac 26  34 30 30 30 30 30 3a 0d  |=I%!8..&400000:.|
00002820  12 c0 16 49 25 2b 3d 32  34 3a fd 49 25 21 2d 32  |...I%+=24:.I%!-2|
00002830  34 80 26 38 30 0d 12 ca  05 e1 0d 12 d4 04 0d 12  |4.&80...........|
00002840  de 13 dd f2 73 68 61 64  65 28 6d 68 25 2c 49 25  |....shade(mh%,I%|
00002850  29 0d 12 e8 2f 6d 68 25  21 28 32 38 2b 38 2b 32  |).../mh%!(28+8+2|
00002860  34 2a 49 25 29 3d 6d 68  25 21 28 32 38 2b 38 2b  |4*I%)=mh%!(28+8+|
00002870  32 34 2a 49 25 29 84 26  34 30 30 30 30 30 3a e1  |24*I%).&400000:.|
00002880  0d 12 f2 04 0d 12 fc 12  dd f2 74 69 63 6b 28 6d  |..........tick(m|
00002890  68 25 2c 49 25 29 0d 13  06 27 6d 68 25 21 28 32  |h%,I%)...'mh%!(2|
000028a0  38 2b 32 34 2a 49 25 29  3d 6d 68 25 21 28 32 38  |8+24*I%)=mh%!(28|
000028b0  2b 32 34 2a 49 25 29 84  26 30 31 3a e1 0d 13 10  |+24*I%).&01:....|
000028c0  04 0d 13 1a 0d dd a4 63  6f 6d 6d 61 6e 64 0d 13  |.......command..|
000028d0  24 0d ea 54 25 2c 49 25  2c 54 24 0d 13 2e 16 c8  |$..T%,I%,T$.....|
000028e0  99 22 4f 53 5f 47 65 74  45 6e 76 22 20 b8 20 54  |."OS_GetEnv" . T|
000028f0  24 0d 13 38 0e f2 73 74  72 69 70 28 54 24 29 0d  |$..8..strip(T$).|
00002900  13 42 07 3d 54 24 0d 13  4c 04 0d 13 56 0b dd a4  |.B.=T$..L...V...|
00002910  70 61 72 61 6d 0d 13 60  16 ea 49 25 2c 54 24 3a  |param..`..I%,T$:|
00002920  54 24 3d a4 63 6f 6d 6d  61 6e 64 0d 13 6a 1f 49  |T$=.command..j.I|
00002930  25 3d a7 54 24 2c 22 20  2d 71 75 69 74 20 22 29  |%=.T$," -quit ")|
00002940  3a e7 49 25 3d 30 3a 3d  22 22 0d 13 74 1b 54 24  |:.I%=0:=""..t.T$|
00002950  3d c1 54 24 2c 49 25 2b  37 29 3a f2 73 74 72 69  |=.T$,I%+7):.stri|
00002960  70 28 54 24 29 0d 13 7e  31 49 25 3d a7 54 24 2c  |p(T$)..~1I%=.T$,|
00002970  22 20 22 29 3a e7 49 25  3e 30 54 24 3d c1 54 24  |" "):.I%>0T$=.T$|
00002980  2c 49 25 2b 31 29 3a f2  73 74 72 69 70 28 54 24  |,I%+1):.strip(T$|
00002990  29 3a 8b 3d 22 22 0d 13  88 2c 49 25 3d a7 54 24  |):.=""...,I%=.T$|
000029a0  2c 22 20 22 29 3a e7 49  25 3e 30 54 24 3d c0 54  |," "):.I%>0T$=.T|
000029b0  24 2c 49 25 2d 31 29 3a  f2 73 74 72 69 70 28 54  |$,I%-1):.strip(T|
000029c0  24 29 0d 13 92 07 3d 54  24 0d 13 9c 04 0d 13 a6  |$)....=T$.......|
000029d0  12 dd a4 66 69 6c 65 74  79 70 65 28 54 24 29 0d  |...filetype(T$).|
000029e0  13 b0 24 ea 54 25 2c 55  25 3a c8 99 20 22 4f 53  |..$.T%,U%:.. "OS|
000029f0  5f 46 69 6c 65 22 2c 35  2c 54 24 20 b8 55 25 2c  |_File",5,T$ .U%,|
00002a00  2c 54 25 0d 13 ba 0d e7  54 25 3d 30 3a 3d 2d 31  |,T%.....T%=0:=-1|
00002a10  0d 13 c4 13 3d 28 54 25  80 26 46 46 46 30 30 29  |....=(T%.&FFF00)|
00002a20  3e 3e 38 0d 13 ce 05 20  0d 13 d8 0f dd f2 77 61  |>>8.... ......wa|
00002a30  69 74 70 6f 69 6e 74 0d  13 e2 0e e7 20 6f 73 25  |itpoint..... os%|
00002a40  3c 3e 32 20 e1 0d 13 ec  0e 77 61 69 74 65 72 25  |<>2 .....waiter%|
00002a50  2b 3d 31 0d 13 f6 14 c8  99 22 48 6f 75 72 67 6c  |+=1......"Hourgl|
00002a60  61 73 73 5f 4f 6e 22 0d  14 00 05 e1 0d 14 0a 04  |ass_On".........|
00002a70  0d 14 14 0f dd f2 6e 6f  72 6d 70 6f 69 6e 74 0d  |......normpoint.|
00002a80  14 1e 0e e7 20 6f 73 25  3c 3e 32 20 e1 0d 14 28  |.... os%<>2 ...(|
00002a90  38 c8 95 77 61 69 74 65  72 25 3e 30 3a c8 99 22  |8..waiter%>0:.."|
00002aa0  48 6f 75 72 67 6c 61 73  73 5f 4f 66 66 22 3a 77  |Hourglass_Off":w|
00002ab0  61 69 74 65 72 25 2d 3d  31 3a ce 3a 77 61 69 74  |aiter%-=1:.:wait|
00002ac0  65 72 25 3d 30 0d 14 32  05 e1 0d 14 3c 04 0d 14  |er%=0..2....<...|
00002ad0  46 0a dd f2 68 65 6c 70  0d 14 50 05 e1 0d 14 5a  |F...help..P....Z|
00002ae0  04 0d 14 64 11 dd f2 64  61 74 61 6c 6f 61 64 61  |...d...dataloada|
00002af0  63 6b 0d 14 6e 1e 71 25  21 30 3d 32 30 3a 71 25  |ck..n.q%!0=20:q%|
00002b00  21 31 32 3d 72 65 66 25  3a 71 25 21 31 36 3d 34  |!12=ref%:q%!16=4|
00002b10  0d 14 78 24 c8 99 22 57  69 6d 70 5f 53 65 6e 64  |..x$.."Wimp_Send|
00002b20  4d 65 73 73 61 67 65 22  2c 31 37 2c 71 25 2c 74  |Message",17,q%,t|
00002b30  61 73 6b 25 0d 14 82 05  e1 0d 14 8c 04 0d 14 96  |ask%............|
00002b40  11 dd f2 64 61 74 61 73  61 76 65 61 63 6b 0d 14  |...datasaveack..|
00002b50  a0 3c e7 a4 41 72 66 56  61 72 28 22 57 69 6d 70  |.<..ArfVar("Wimp|
00002b60  24 53 63 72 61 70 22 29  3d 22 22 3a 85 39 39 2c  |$Scrap")="":.99,|
00002b70  22 3c 57 69 6d 70 24 53  63 72 61 70 3e 20 6e 6f  |"<Wimp$Scrap> no|
00002b80  74 20 64 65 66 69 6e 65  64 22 0d 14 aa 41 21 71  |t defined"...A!q|
00002b90  25 3d 36 30 3a 71 25 21  31 32 3d 72 65 66 25 3a  |%=60:q%!12=ref%:|
00002ba0  71 25 21 31 36 3d 32 3a  71 25 21 33 36 3d 2d 31  |q%!16=2:q%!36=-1|
00002bb0  3a 24 28 71 25 2b 34 34  29 3d 22 3c 57 69 6d 70  |:$(q%+44)="<Wimp|
00002bc0  24 53 63 72 61 70 3e 22  2b bd 30 0d 14 b4 31 c8  |$Scrap>"+.0...1.|
00002bd0  99 22 57 69 6d 70 5f 53  65 6e 64 4d 65 73 73 61  |."Wimp_SendMessa|
00002be0  67 65 22 2c 31 37 2c 71  25 2c 74 61 73 6b 25 3a  |ge",17,q%,task%:|
00002bf0  61 63 6b 72 65 66 25 3d  71 25 21 38 0d 14 be 05  |ackref%=q%!8....|
00002c00  e1 0d 14 c8 04 0d 14 d2  1a dd f2 73 61 76 65 72  |...........saver|
00002c10  65 71 28 54 24 2c 74 25  2c 73 25 2c 72 25 29 0d  |eq(T$,t%,s%,r%).|
00002c20  14 dc 12 73 61 76 65 72  65 61 73 6f 6e 25 3d 72  |...savereason%=r|
00002c30  25 0d 14 e6 2b 71 25 21  33 32 3d 6d 79 25 3a 71  |%...+q%!32=my%:q|
00002c40  25 21 32 38 3d 6d 78 25  3a 71 25 21 32 34 3d 6d  |%!28=mx%:q%!24=m|
00002c50  69 25 3a 71 25 21 32 30  3d 6d 68 25 0d 14 f0 2c  |i%:q%!20=mh%...,|
00002c60  71 25 21 31 36 3d 31 3a  71 25 21 31 32 3d 30 3a  |q%!16=1:q%!12=0:|
00002c70  71 25 21 33 36 3d 73 25  3a 71 25 21 34 30 3d 74  |q%!36=s%:q%!40=t|
00002c80  25 3a 21 71 25 3d 36 30  0d 14 fa 39 24 28 71 25  |%:!q%=60...9$(q%|
00002c90  2b 34 34 29 3d 54 24 2b  bd 30 3a c8 99 22 57 69  |+44)=T$+.0:.."Wi|
00002ca0  6d 70 5f 53 65 6e 64 4d  65 73 73 61 67 65 22 2c  |mp_SendMessage",|
00002cb0  31 37 2c 71 25 2c 71 25  21 32 30 2c 71 25 21 32  |17,q%,q%!20,q%!2|
00002cc0  34 0d 15 04 13 73 61 76  65 72 65 66 25 3d 71 25  |4....saveref%=q%|
00002cd0  21 38 3a e1 0d 15 0e 04  0d 15 18 0e dd f2 6c 6f  |!8:...........lo|
00002ce0  61 64 6d 65 73 73 0d 15  22 1c 24 28 71 25 2b 34  |admess..".$(q%+4|
00002cf0  34 29 3d 66 69 6c 65 24  2b bd 30 3a 21 71 25 3d  |4)=file$+.0:!q%=|
00002d00  36 30 0d 15 2c 37 71 25  21 31 32 3d 72 65 66 25  |60..,7q%!12=ref%|
00002d10  3a 71 25 21 31 36 3d 33  3a c8 99 22 57 69 6d 70  |:q%!16=3:.."Wimp|
00002d20  5f 53 65 6e 64 4d 65 73  73 61 67 65 22 2c 31 37  |_SendMessage",17|
00002d30  2c 71 25 2c 74 61 73 6b  25 0d 15 36 13 61 63 6b  |,q%,task%..6.ack|
00002d40  70 65 6e 64 69 6e 67 25  3d b9 3a e1 0d 15 40 05  |pending%=.:...@.|
00002d50  20 0d 15 4a 17 dd a4 7a  74 73 28 54 25 29 3a ea  | ..J...zts(T%):.|
00002d60  54 24 3a 54 24 3d 22 22  0d 15 54 1d c8 95 3f 54  |T$:T$=""..T...?T|
00002d70  25 3c 3e 30 3a 54 24 2b  3d bd 3f 54 25 3a 54 25  |%<>0:T$+=.?T%:T%|
00002d80  2b 3d 31 3a ce 0d 15 5e  07 3d 54 24 0d 15 68 04  |+=1:...^.=T$..h.|
00002d90  0d 15 72 2b dd f2 67 65  74 63 74 3a c8 99 22 57  |..r+..getct:.."W|
00002da0  69 6d 70 5f 47 65 74 43  61 72 65 74 50 6f 73 69  |imp_GetCaretPosi|
00002db0  74 69 6f 6e 22 2c 2c 71  25 3a e1 0d 15 7c 04 0d  |tion",,q%:...|..|
00002dc0  15 86 3e dd f2 73 65 74  63 74 28 68 25 2c 69 25  |..>..setct(h%,i%|
00002dd0  2c 6f 25 29 3a c8 99 20  22 57 69 6d 70 5f 53 65  |,o%):.. "Wimp_Se|
00002de0  74 43 61 72 65 74 50 6f  73 69 74 69 6f 6e 22 2c  |tCaretPosition",|
00002df0  68 25 2c 69 25 2c 2c 2c  2d 31 2c 6f 25 0d 15 90  |h%,i%,,,-1,o%...|
00002e00  05 e1 0d 15 9a 04 0d 15  a4 0e dd a4 6c 65 61 66  |............leaf|
00002e10  28 54 24 29 0d 15 ae 0a  ea 49 25 2c 43 25 0d 15  |(T$).....I%,C%..|
00002e20  b8 24 e7 28 28 a7 54 24  2c 22 2e 22 29 3d 30 29  |.$.((.T$,".")=0)|
00002e30  80 28 a7 54 24 2c 22 3a  22 29 3d 30 29 29 8c 3d  |.(.T$,":")=0)).=|
00002e40  54 24 0d 15 c2 0c 49 25  3d a9 28 54 24 29 0d 15  |T$....I%=.(T$)..|
00002e50  cc 05 f5 0d 15 d6 11 43  25 3d 97 c1 54 24 2c 49  |.......C%=..T$,I|
00002e60  25 2c 31 29 0d 15 e0 09  49 25 2d 3d 31 0d 15 ea  |%,1)....I%-=1...|
00002e70  1c fd 28 49 25 3c 3d 30  84 43 25 3d 97 22 2e 22  |..(I%<=0.C%=."."|
00002e80  84 43 25 3d 97 22 3a 22  29 0d 15 f4 1a e7 49 25  |.C%=.":").....I%|
00002e90  3e 30 8c 3d c2 54 24 2c  a9 28 54 24 29 2d 49 25  |>0.=.T$,.(T$)-I%|
00002ea0  2d 31 29 0d 15 fe 07 3d  54 24 0d 16 08 04 0d 16  |-1)....=T$......|
00002eb0  12 0b dd f2 73 63 72 73  7a 0d 16 1c 48 21 77 6f  |....scrsz...H!wo|
00002ec0  72 6b 62 75 66 25 3d 34  3a 77 6f 72 6b 62 75 66  |rkbuf%=4:workbuf|
00002ed0  25 21 34 3d 35 3a 77 6f  72 6b 62 75 66 25 21 38  |%!4=5:workbuf%!8|
00002ee0  3d 31 31 3a 77 6f 72 6b  62 75 66 25 21 31 32 3d  |=11:workbuf%!12=|
00002ef0  31 32 3a 77 6f 72 6b 62  75 66 25 21 31 36 3d 2d  |12:workbuf%!16=-|
00002f00  31 0d 16 26 31 c8 99 20  22 4f 53 5f 52 65 61 64  |1..&1.. "OS_Read|
00002f10  56 64 75 56 61 72 69 61  62 6c 65 73 22 2c 77 6f  |VduVariables",wo|
00002f20  72 6b 62 75 66 25 2c 77  6f 72 6b 62 75 66 25 2b  |rkbuf%,workbuf%+|
00002f30  32 34 0d 16 30 49 71 25  21 33 32 3d 28 77 6f 72  |24..0Iq%!32=(wor|
00002f40  6b 62 75 66 25 21 33 32  29 3c 3c 28 77 6f 72 6b  |kbuf%!32)<<(work|
00002f50  62 75 66 25 21 32 34 29  3a 71 25 21 33 36 3d 28  |buf%!24):q%!36=(|
00002f60  77 6f 72 6b 62 75 66 25  21 33 36 29 3c 3c 28 77  |workbuf%!36)<<(w|
00002f70  6f 72 6b 62 75 66 25 21  32 38 29 0d 16 3a 05 e1  |orkbuf%!28)..:..|
00002f80  0d 16 44 04 0d 16 4e 1a  dd f2 73 61 76 65 73 65  |..D...N...savese|
00002f90  74 28 66 24 2c 54 25 2c  72 25 2c 73 25 29 0d 16  |t(f$,T%,r%,s%)..|
00002fa0  58 30 73 61 76 65 72 65  61 73 6f 6e 25 3d 72 25  |X0savereason%=r%|
00002fb0  3a 73 61 76 65 66 24 3d  66 24 3a 73 61 76 65 74  |:savef$=f$:savet|
00002fc0  25 3d 54 25 3a 73 61 76  65 73 25 3d 73 25 0d 16  |%=T%:saves%=s%..|
00002fd0  62 3e f2 73 65 74 69 28  77 5f 73 61 76 65 25 2c  |b>.seti(w_save%,|
00002fe0  32 2c 66 24 29 3a 24 a4  76 61 28 77 5f 73 61 76  |2,f$):$.va(w_sav|
00002ff0  65 25 2c 33 29 3d 22 73  66 69 6c 65 5f 22 2b c2  |e%,3)="sfile_"+.|
00003000  22 30 30 22 2b c3 7e 54  25 2c 33 29 0d 16 6c 05  |"00"+.~T%,3)..l.|
00003010  e1 0d 16 76 04 0d 16 80  15 dd f2 64 72 61 67 69  |...v.......dragi|
00003020  63 6f 6e 28 68 25 2c 69  25 29 0d 16 8a 0e ea 78  |con(h%,i%).....x|
00003030  25 2c 79 25 2c 79 73 25  0d 16 94 2c f2 67 65 74  |%,y%,ys%...,.get|
00003040  77 28 68 25 29 3a 79 73  25 3d 79 31 25 2d 79 30  |w(h%):ys%=y1%-y0|
00003050  25 3a 78 25 3d 62 78 25  3a 79 25 3d 79 30 25 2d  |%:x%=bx%:y%=y0%-|
00003060  73 63 79 25 0d 16 9e 31  f2 67 65 74 69 28 68 25  |scy%...1.geti(h%|
00003070  2c 69 25 29 3a 71 25 21  38 2b 3d 78 25 3a 71 25  |,i%):q%!8+=x%:q%|
00003080  21 31 32 2b 3d 79 25 2b  79 73 25 3a 71 25 21 31  |!12+=y%+ys%:q%!1|
00003090  36 2b 3d 78 25 0d 16 a8  30 71 25 21 32 30 2b 3d  |6+=x%...0q%!20+=|
000030a0  79 25 2b 79 73 25 3a 71  25 21 32 34 3d 30 3a 71  |y%+ys%:q%!24=0:q|
000030b0  25 21 32 38 3d 30 3a 21  71 25 3d 30 3a f2 64 72  |%!28=0:!q%=0:.dr|
000030c0  61 67 35 3a e1 0d 16 b2  04 0d 16 bc 1f dd f2 64  |ag5:...........d|
000030d0  72 61 67 35 3a f2 72 65  61 64 70 6f 69 6e 74 65  |rag5:.readpointe|
000030e0  72 3a f2 73 63 72 73 7a  0d 16 c6 46 71 25 21 32  |r:.scrsz...Fq%!2|
000030f0  34 2d 3d 6d 78 25 2d 71  25 21 38 3a 71 25 21 32  |4-=mx%-q%!8:q%!2|
00003100  38 2d 3d 6d 79 25 2d 71  25 21 31 32 3a 71 25 21  |8-=my%-q%!12:q%!|
00003110  33 32 2b 3d 71 25 21 31  36 2d 6d 78 25 3a 71 25  |32+=q%!16-mx%:q%|
00003120  21 33 36 2b 3d 71 25 21  32 30 2d 6d 79 25 0d 16  |!36+=q%!20-my%..|
00003130  d0 21 71 25 21 34 3d 35  3a c8 99 22 57 69 6d 70  |.!q%!4=5:.."Wimp|
00003140  5f 44 72 61 67 42 6f 78  22 2c 2c 71 25 3a e1 0d  |_DragBox",,q%:..|
00003150  16 da 04 0d 16 e4 0e dd  f2 73 61 76 65 64 61 74  |.........savedat|
00003160  61 0d 16 ee 16 e7 71 25  21 31 32 3c 3e 73 61 76  |a.....q%!12<>sav|
00003170  65 72 65 66 25 3a e1 0d  16 f8 15 66 69 6c 65 24  |eref%:.....file$|
00003180  3d a4 7a 74 73 28 71 25  2b 34 34 29 0d 17 02 0e  |=.zts(q%+44)....|
00003190  f2 73 61 76 65 64 61 74  61 31 0d 17 0c 05 e1 0d  |.savedata1......|
000031a0  17 16 04 0d 17 20 20 dd  f2 73 61 76 65 64 61 74  |.....  ..savedat|
000031b0  61 31 3a f2 63 6c 6f 73  65 77 28 77 5f 73 61 76  |a1:.closew(w_sav|
000031c0  65 25 29 0d 17 2a 20 f2  73 61 76 65 66 69 6c 65  |e%)..* .savefile|
000031d0  28 73 61 76 65 72 65 61  73 6f 6e 25 2c 66 69 6c  |(savereason%,fil|
000031e0  65 24 29 0d 17 34 1c 73  61 76 65 72 65 61 73 6f  |e$)..4.savereaso|
000031f0  6e 25 3d 2d 31 3a f2 6c  6f 61 64 6d 65 73 73 0d  |n%=-1:.loadmess.|
00003200  17 3e 05 e1 0d 17 48 04  0d 17 52 0d dd f2 70 72  |.>....H...R...pr|
00003210  65 71 75 69 74 0d 17 5c  1f e7 a4 61 6c 74 65 72  |equit..\...alter|
00003220  65 64 5f 61 74 3a f2 61  63 6b 72 65 63 3a f2 71  |ed_at:.ackrec:.q|
00003230  71 75 69 74 0d 17 66 05  e1 0d 17 70 04 0d 17 7a  |quit..f....p...z|
00003240  39 dd f2 61 63 6b 72 65  63 3a 71 25 21 31 32 3d  |9..ackrec:q%!12=|
00003250  72 65 66 25 3a c8 99 20  22 57 69 6d 70 5f 53 65  |ref%:.. "Wimp_Se|
00003260  6e 64 4d 65 73 73 61 67  65 22 2c 31 39 2c 71 25  |ndMessage",19,q%|
00003270  2c 74 61 73 6b 25 0d 17  84 3a dd f2 71 71 75 69  |,task%...:..qqui|
00003280  74 3a f2 73 74 6f 70 28  31 2c 22 4c 6f 73 65 20  |t:.stop(1,"Lose |
00003290  73 63 72 65 65 6e 20 61  6e 64 20 71 75 69 74 20  |screen and quit |
000032a0  41 74 65 6c 69 65 72 22  2c 61 73 24 2c 2d 31 29  |Atelier",as$,-1)|
000032b0  0d 17 8e 05 e1 0d 17 98  05 20 0d 17 a2 13 dd f2  |......... ......|
000032c0  65 6e 74 65 72 5f 61 74  65 6c 69 65 72 0d 17 ac  |enter_atelier...|
000032d0  20 ea 85 3a ee 85 ea 3a  f7 85 3a f2 72 65 73 74  | ..:...:..:.rest|
000032e0  6f 72 65 77 69 6d 70 3a  85 9f 2c f6 24 0d 17 b6  |orewimp:..,.$...|
000032f0  23 65 6e 74 65 72 25 3d  30 3a f2 72 75 6e 5f 61  |#enter%=0:.run_a|
00003300  74 3a f2 72 65 73 74 6f  72 65 77 69 6d 70 3a e1  |t:.restorewimp:.|
00003310  0d 17 c0 04 0d 17 ca 15  dd f2 73 61 76 65 66 69  |..........savefi|
00003320  6c 65 28 6e 25 2c 66 24  29 0d 17 d4 20 ea 85 3a  |le(n%,f$)... ..:|
00003330  ee 85 ea 3a f7 85 3a f2  72 65 73 74 6f 72 65 77  |...:..:.restorew|
00003340  69 6d 70 3a 85 9f 2c f6  24 0d 17 de 22 f2 73 61  |imp:..,.$...".sa|
00003350  76 65 5f 61 74 28 6e 25  2c 66 24 29 3a f2 72 65  |ve_at(n%,f$):.re|
00003360  73 74 6f 72 65 77 69 6d  70 3a e1 0d 17 e8 04 0d  |storewimp:......|
00003370  17 f2 17 dd f2 73 61 76  65 77 69 6d 70 3a e7 6f  |.....savewimp:.o|
00003380  73 25 3d 31 3a e1 0d 17  fc 14 e7 20 77 69 6d 70  |s%=1:...... wimp|
00003390  73 61 76 65 64 25 20 8c  20 e1 0d 18 06 10 77 69  |saved% . .....wi|
000033a0  6d 70 73 61 76 65 64 25  3d b9 0d 18 10 26 ea 49  |mpsaved%=....&.I|
000033b0  25 2c 4a 25 3a f4 20 53  59 53 22 57 69 6d 70 5f  |%,J%:. SYS"Wimp_|
000033c0  43 6f 6d 6d 61 6e 64 57  69 6e 64 6f 77 22 2c 31  |CommandWindow",1|
000033d0  0d 18 1a 1e f2 6e 6f 72  6d 70 6f 69 6e 74 3a 6d  |.....normpoint:m|
000033e0  6f 64 65 25 3d eb 3a f2  6d 6f 64 65 31 35 0d 18  |ode%=.:.mode15..|
000033f0  24 0a 2a 66 78 32 32 39  0d 18 2e 05 e1 0d 18 38  |$.*fx229.......8|
00003400  04 0d 18 42 1a dd f2 72  65 73 74 6f 72 65 77 69  |...B...restorewi|
00003410  6d 70 3a e7 6f 73 25 3d  31 3a e1 0d 18 4c 16 e7  |mp:.os%=1:...L..|
00003420  20 ac 20 77 69 6d 70 73  61 76 65 64 25 20 8c 20  | . wimpsaved% . |
00003430  e1 0d 18 56 10 77 69 6d  70 73 61 76 65 64 25 3d  |...V.wimpsaved%=|
00003440  a3 0d 18 60 0c 2a 66 78  32 32 39 2c 31 0d 18 6a  |...`.*fx229,1..j|
00003450  1e c8 99 20 22 57 69 6d  70 5f 43 6f 6d 6d 61 6e  |... "Wimp_Comman|
00003460  64 57 69 6e 64 6f 77 22  2c 2d 31 0d 18 74 47 c8  |dWindow",-1..tG.|
00003470  99 20 22 57 69 6d 70 5f  53 65 74 4d 6f 64 65 22  |. "Wimp_SetMode"|
00003480  2c 6d 6f 64 65 25 3a 87  3a c8 99 22 57 69 6d 70  |,mode%:.:.."Wimp|
00003490  5f 46 6f 72 63 65 52 65  64 72 61 77 22 2c 2d 31  |_ForceRedraw",-1|
000034a0  2c 2d 31 45 39 2c 2d 31  45 39 2c 31 45 39 2c 31  |,-1E9,-1E9,1E9,1|
000034b0  45 39 0d 18 7e 05 e1 0d  18 88 04 0d 18 92 0c dd  |E9..~...........|
000034c0  f2 6d 6f 64 65 31 35 0d  18 9c 06 ea 85 0d 18 a6  |.mode15.........|
000034d0  92 ee 85 ea 3a f7 85 3a  85 39 39 2c 22 41 74 65  |....:..:.99,"Ate|
000034e0  6c 69 65 72 20 6e 65 65  64 73 20 74 6f 20 75 73  |lier needs to us|
000034f0  65 20 4d 4f 44 45 20 31  35 20 61 6e 64 20 74 68  |e MODE 15 and th|
00003500  65 72 65 20 69 73 20 6e  6f 74 20 65 6e 6f 75 67  |ere is not enoug|
00003510  68 20 52 41 4d 21 20 59  6f 75 20 6d 75 73 74 20  |h RAM! You must |
00003520  75 73 65 20 74 68 65 20  74 61 73 6b 20 6d 61 6e  |use the task man|
00003530  61 67 65 72 20 74 6f 20  6d 61 6b 65 20 61 74 20  |ager to make at |
00003540  6c 65 61 73 74 20 31 36  30 6b 20 6f 66 20 73 63  |least 160k of sc|
00003550  72 65 65 6e 20 61 76 61  69 6c 61 62 6c 65 22 0d  |reen available".|
00003560  18 b0 09 eb 31 35 3a e1  0d 18 ba 04 0d 18 c4 13  |....15:.........|
00003570  dd f2 66 69 6e 64 6d 6f  73 3a 6f 73 25 3d 31 0d  |..findmos:os%=1.|
00003580  18 ce 0f ea 85 3a ee 85  ea 3a f7 85 3a e1 0d 18  |.....:...:..:...|
00003590  d8 07 f7 2b 31 0d 18 e2  0b 6f 73 25 3d 32 3a e1  |...+1....os%=2:.|
000035a0  0d 18 ec 04 0d 18 f6 14  dd f2 63 68 65 63 6b 6d  |..........checkm|
000035b0  6f 73 3a 6f 73 25 3d 31  0d 19 00 16 ea 85 3a ee  |os:os%=1......:.|
000035c0  85 ea 3a f7 85 3a f2 6d  6f 73 31 32 3a e0 0d 19  |..:..:.mos12:...|
000035d0  0a 07 f7 2b 31 0d 19 14  0b 6f 73 25 3d 32 3a e1  |...+1....os%=2:.|
000035e0  0d 19 1e 04 0d 19 28 0b  dd f2 6d 6f 73 31 32 0d  |......(...mos12.|
000035f0  19 32 09 eb 31 35 3a 87  0d 19 3c 0d c8 99 20 26  |.2..15:...<... &|
00003600  34 30 30 43 30 0d 19 46  0c 65 6e 74 65 72 25 3d  |400C0..F.enter%=|
00003610  30 0d 19 50 0b f2 72 75  6e 5f 61 74 0d 19 5a 10  |0..P..run_at..Z.|
00003620  eb 31 32 3a 2a 64 65 73  6b 74 6f 70 0d 19 64 05  |.12:*desktop..d.|
00003630  e0 0d 19 6e 04 0d 19 78  14 dd f2 73 74 6f 72 65  |...n...x...store|
00003640  28 f8 20 41 24 2c 66 24  29 0d 19 82 1b ea 49 25  |(. A$,f$).....I%|
00003650  2c 43 25 2c 54 24 3a 54  24 3d 66 24 3a e7 54 24  |,C%,T$:T$=f$:.T$|
00003660  3e 22 22 8c 0d 19 8c 19  e3 49 25 3d 31 b8 a9 54  |>""......I%=1..T|
00003670  24 3a 43 25 3d 97 c1 54  24 2c 49 25 29 0d 19 96  |$:C%=..T$,I%)...|
00003680  22 e7 43 25 3e 36 34 80  43 25 3c 39 31 c1 54 24  |".C%>64.C%<91.T$|
00003690  2c 49 25 2c 31 29 3d bd  28 43 25 2b 33 32 29 0d  |,I%,1)=.(C%+32).|
000036a0  19 a0 05 ed 0d 19 a1 05  cd 0d 19 aa 1a e7 a7 54  |...............T|
000036b0  24 2c 22 24 73 63 72 61  70 3e 22 29 3d 30 41 24  |$,"$scrap>")=0A$|
000036c0  3d 66 24 0d 19 ab 05 e1  0d 19 b4 04 0d 19 be 04  |=f$.............|
000036d0  0d 19 c8 47 f4 20 2d 2d  2d 2d 41 54 45 4c 49 45  |...G. ----ATELIE|
000036e0  52 20 42 49 54 53 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |R BITS----------|
000036f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00003710  2d 2d 2d 2d 2d 2d 2d 0d  19 d2 0c dd f2 72 75 6e  |-------......run|
00003720  5f 61 74 0d 19 dc 3c f4  20 3b 7b 7b 20 68 65 72  |_at...<. ;{{ her|
00003730  65 2c 20 63 6f 70 79 20  74 68 65 20 62 61 63 6b  |e, copy the back|
00003740  67 72 6f 75 6e 64 20 73  63 72 65 65 6e 20 74 6f  |ground screen to|
00003750  20 74 68 65 20 66 6f 72  65 67 72 6f 75 6e 64 0d  | the foreground.|
00003760  19 e6 3e f4 20 3b 7b 7b  20 61 6e 64 20 64 6f 20  |..>. ;{{ and do |
00003770  74 68 65 20 62 69 7a 2e  20 4e 42 20 61 6c 6c 20  |the biz. NB all |
00003780  45 52 52 4f 52 20 74 72  61 70 73 20 65 74 63 20  |ERROR traps etc |
00003790  4d 55 53 54 20 62 65 20  4c 4f 43 41 4c 0d 19 f0  |MUST be LOCAL...|
000037a0  0d f2 73 61 76 65 77 69  6d 70 0d 19 fa 0e f2 6e  |..savewimp.....n|
000037b0  6f 72 6d 70 6f 69 6e 74  0d 1a 04 2c ef 20 32 33  |ormpoint...,. 23|
000037c0  2c 32 35 35 2c 32 35 35  2c 32 35 35 2c 32 35 35  |,255,255,255,255|
*
000037e0  2c 32 35 35 0d 1a 0e 0e  63 61 74 25 21 30 3d 31  |,255....cat%!0=1|
000037f0  34 38 0d 1a 18 0d 63 61  74 25 21 34 3d 2d 31 0d  |48....cat%!4=-1.|
00003800  1a 22 26 c8 99 20 22 4f  53 5f 52 65 61 64 56 64  |."&.. "OS_ReadVd|
00003810  75 56 61 72 69 61 62 6c  65 73 22 2c 63 61 74 25  |uVariables",cat%|
00003820  2c 63 61 74 25 0d 1a 2c  15 21 74 6f 70 73 63 72  |,cat%..,.!topscr|
00003830  65 65 6e 25 3d 21 63 61  74 25 0d 1a 36 12 f2 75  |een%=!cat%..6..u|
00003840  6e 73 65 74 73 6f 66 74  6b 65 79 73 0d 1a 40 19  |nsetsoftkeys..@.|
00003850  c8 99 20 22 4f 53 5f 52  65 6d 6f 76 65 43 75 72  |.. "OS_RemoveCur|
00003860  73 6f 72 73 22 0d 1a 4a  0f f2 73 65 74 76 65 63  |sors"..J..setvec|
00003870  74 6f 72 73 0d 1a 54 12  d6 20 75 6e 64 6f 72 65  |tors..T.. undore|
00003880  73 74 6f 72 65 25 0d 1a  5e 11 f2 65 6e 74 65 72  |store%..^..enter|
00003890  5f 61 63 74 69 6f 6e 0d  1a 68 0d d6 20 63 6f 6c  |_action..h.. col|
000038a0  6f 75 72 25 0d 1a 72 12  d6 20 6d 6f 75 73 65 63  |our%..r.. mousec|
000038b0  6f 6c 6f 75 72 25 0d 1a  7c 0f d6 20 6c 69 66 74  |olour%..|.. lift|
000038c0  64 6f 77 6e 25 0d 1a 86  12 ef 35 3a d6 20 68 65  |down%.....5:. he|
000038d0  6c 70 74 65 78 74 25 0d  1a 90 0b f2 75 70 64 61  |lptext%.....upda|
000038e0  74 65 0d 1a 9a 0c f2 61  74 65 6c 69 65 72 0d 1a  |te.....atelier..|
000038f0  a4 0d d6 20 6c 69 66 74  75 70 25 0d 1a ae 0f d6  |... liftup%.....|
00003900  20 75 6e 64 6f 73 61 76  65 25 0d 1a b8 11 f2 75  | undosave%.....u|
00003910  6e 73 65 74 76 65 63 74  6f 72 73 0d 1a c2 15 f4  |nsetvectors.....|
00003920  20 50 52 4f 43 73 65 74  73 6f 66 74 6b 65 79 73  | PROCsetsoftkeys|
00003930  0d 1a cc 10 f2 72 65 73  74 6f 72 65 77 69 6d 70  |.....restorewimp|
00003940  0d 1a d6 05 e1 0d 1a e0  04 0d 1a ea 10 dd f2 73  |...............s|
00003950  65 74 76 65 63 74 6f 72  73 0d 1a f4 16 e7 20 76  |etvectors..... v|
00003960  65 63 74 6f 72 73 5f 73  65 74 25 20 8c 20 e1 0d  |ectors_set% . ..|
00003970  1a fe 22 c8 99 20 22 4f  53 5f 43 6c 61 69 6d 22  |..".. "OS_Claim"|
00003980  2c 26 31 44 2c 64 75 66  66 5f 63 61 6c 6c 25 2c  |,&1D,duff_call%,|
00003990  30 0d 1b 08 14 f2 73 65  74 5f 61 62 6f 72 74 5f  |0.....set_abort_|
000039a0  74 72 61 70 73 0d 1b 12  12 76 65 63 74 6f 72 73  |traps....vectors|
000039b0  5f 73 65 74 25 3d b9 0d  1b 1c 05 e1 0d 1b 26 04  |_set%=........&.|
000039c0  0d 1b 30 12 dd f2 75 6e  73 65 74 76 65 63 74 6f  |..0...unsetvecto|
000039d0  72 73 0d 1b 3a 18 e7 20  ac 20 76 65 63 74 6f 72  |rs..:.. . vector|
000039e0  73 5f 73 65 74 25 20 8c  20 e1 0d 1b 44 24 c8 99  |s_set% . ...D$..|
000039f0  20 22 4f 53 5f 52 65 6c  65 61 73 65 22 2c 26 31  | "OS_Release",&1|
00003a00  44 2c 64 75 66 66 5f 63  61 6c 6c 25 2c 30 0d 1b  |D,duff_call%,0..|
00003a10  4e 16 f2 75 6e 73 65 74  5f 61 62 6f 72 74 5f 74  |N..unset_abort_t|
00003a20  72 61 70 73 0d 1b 58 12  76 65 63 74 6f 72 73 5f  |raps..X.vectors_|
00003a30  73 65 74 25 3d a3 0d 1b  62 05 e1 0d 1b 6c 04 0d  |set%=...b....l..|
00003a40  1b 76 12 dd f2 65 6e 74  65 72 5f 61 63 74 69 6f  |.v...enter_actio|
00003a50  6e 0d 1b 80 15 ee 20 85  20 ea 3a f2 65 72 72 6f  |n..... . .:.erro|
00003a60  72 5f 61 74 3a e1 0d 1b  8a 0f c8 8e 20 65 6e 74  |r_at:....... ent|
00003a70  65 72 25 20 ca 0d 1b 94  1d c9 30 3a f4 20 6e 6f  |er% ......0:. no|
00003a80  20 61 63 74 69 6f 6e 2c  6a 75 73 74 20 65 6e 74  | action,just ent|
00003a90  65 72 0d 1b 9e 17 c9 31  3a f4 20 63 6f 6d 70 61  |er.....1:. compa|
00003aa0  63 74 65 64 20 6c 6f 61  64 0d 1b a8 0d 2a 55 6e  |cted load....*Un|
00003ab0  44 65 66 69 6e 65 0d 1b  b2 17 2a 53 65 74 50 6f  |Define....*SetPo|
00003ac0  73 69 74 69 6f 6e 20 30  20 31 30 32 33 0d 1b bc  |sition 0 1023...|
00003ad0  27 47 25 3d 63 61 74 25  3a 24 63 61 74 25 3d 66  |'G%=cat%:$cat%=f|
00003ae0  24 3a d6 20 63 6f 6d 5f  75 70 64 61 74 65 5f 69  |$:. com_update_i|
00003af0  6e 66 6f 25 0d 1b c6 13  ff 22 50 6c 6f 74 46 69  |nfo%....."PlotFi|
00003b00  6c 65 20 22 2b 66 24 0d  1b d0 24 65 6e 74 65 72  |le "+f$...$enter|
00003b10  25 3d 30 3a f2 73 74 6f  72 65 28 24 73 63 72 65  |%=0:.store($scre|
00003b20  65 6e 5f 73 74 72 25 2c  66 24 29 0d 1b da 35 c9  |en_str%,f$)...5.|
00003b30  32 3a 24 66 69 6c 65 5f  73 74 72 25 3d 66 24 20  |2:$file_str%=f$ |
00003b40  20 3a f4 20 73 70 72 69  74 65 73 20 2d 20 68 61  | :. sprites - ha|
00003b50  6e 64 6c 65 64 20 62 79  20 61 74 65 6c 69 65 72  |ndled by atelier|
00003b60  0d 1b e4 0f c9 33 3a 24  63 61 74 25 3d 66 24 0d  |.....3:$cat%=f$.|
00003b70  1b ee 0b 47 25 3d 63 61  74 25 0d 1b f8 14 d6 20  |...G%=cat%..... |
00003b80  63 6f 6d 70 61 63 74 65  64 6c 6f 61 64 25 0d 1c  |compactedload%..|
00003b90  02 0f d6 20 75 6e 64 6f  73 61 76 65 25 0d 1c 0c  |... undosave%...|
00003ba0  0c 65 6e 74 65 72 25 3d  30 0d 1c 16 05 cb 0d 1c  |.enter%=0.......|
00003bb0  20 05 e1 0d 1c 2a 04 0d  1c 34 10 dd a4 61 6c 74  | ....*...4...alt|
00003bc0  65 72 65 64 5f 61 74 0d  1c 3e 42 f4 20 3b 7b 7b  |ered_at..>B. ;{{|
00003bd0  20 72 65 74 75 72 6e 20  54 52 55 45 20 69 66 20  | return TRUE if |
00003be0  79 6f 75 20 77 6f 75 6c  64 20 6c 6f 73 65 20 61  |you would lose a|
00003bf0  6e 79 20 64 61 74 61 20  69 66 20 74 68 65 79 20  |ny data if they |
00003c00  71 75 69 74 20 6a 75 73  74 0d 1c 48 3e f4 20 3b  |quit just..H>. ;|
00003c10  7b 7b 20 6e 6f 77 20 28  69 65 20 74 68 65 79 20  |{{ now (ie they |
00003c20  68 61 76 65 20 61 6c 74  65 72 65 64 20 73 63 72  |have altered scr|
00003c30  65 65 6e 2f 73 70 72 69  74 65 73 2f 62 72 75 73  |een/sprites/brus|
00003c40  68 65 73 20 65 74 63 0d  1c 52 43 f4 20 3b 7b 7b  |hes etc..RC. ;{{|
00003c50  20 73 69 6e 63 65 20 6c  61 73 74 20 73 61 76 65  | since last save|
00003c60  2f 6c 6f 61 64 2e 20 4a  75 73 74 20 72 65 74 75  |/load. Just retu|
00003c70  72 6e 20 46 41 4c 53 45  20 69 66 20 79 6f 75 20  |rn FALSE if you |
00003c80  64 6f 6e 27 74 20 63 61  72 65 0d 1c 5c 06 3d b9  |don't care..\.=.|
00003c90  0d 1c 66 04 0d 1c 70 19  dd a4 6f 6b 66 69 6c 65  |..f...p...okfile|
00003ca0  5f 61 74 28 66 24 2c 73  25 2c 74 25 29 0d 1c 7a  |_at(f$,s%,t%)..z|
00003cb0  49 e7 20 74 25 3d 26 44  37 45 20 84 20 74 25 3d  |I. t%=&D7E . t%=|
00003cc0  26 44 33 41 20 84 20 74  25 3d 26 44 37 46 20 84  |&D3A . t%=&D7F .|
00003cd0  20 74 25 3d 26 44 33 39  20 84 20 74 25 3d 26 46  | t%=&D39 . t%=&F|
00003ce0  46 39 20 84 20 74 25 3d  26 44 45 32 20 8c 20 3d  |F9 . t%=&DE2 . =|
00003cf0  b9 20 8b 20 3d a3 0d 1c  84 04 0d 1c 8e 18 dd f2  |. . =...........|
00003d00  6c 6f 61 64 66 69 6c 65  28 66 24 2c 73 25 2c 74  |loadfile(f$,s%,t|
00003d10  25 29 0d 1c 98 20 ea 85  3a ee 85 ea 3a f7 85 3a  |%)... ..:...:..:|
00003d20  f2 72 65 73 74 6f 72 65  77 69 6d 70 3a 85 9f 2c  |.restorewimp:..,|
00003d30  f6 24 0d 1c a2 25 f2 6c  6f 61 64 5f 61 74 28 66  |.$...%.load_at(f|
00003d40  24 2c 73 25 2c 74 25 29  3a f2 72 65 73 74 6f 72  |$,s%,t%):.restor|
00003d50  65 77 69 6d 70 3a e1 0d  1c ac 04 0d 1c b6 17 dd  |ewimp:..........|
00003d60  f2 6c 6f 61 64 5f 61 74  28 66 24 2c 73 25 2c 74  |.load_at(f$,s%,t|
00003d70  25 29 0d 1c c0 0b c8 8e  20 74 25 20 ca 0d 1c ca  |%)...... t% ....|
00003d80  13 c9 26 44 37 46 2c 26  46 46 39 2c 26 44 45 32  |..&D7F,&FF9,&DE2|
00003d90  0d 1c d4 1e c8 99 20 22  4f 53 5f 46 69 6e 64 22  |...... "OS_Find"|
00003da0  2c 26 34 30 2c 66 24 20  b8 20 68 64 6c 25 0d 1c  |,&40,f$ . hdl%..|
00003db0  de 1e c8 99 20 22 4f 53  5f 47 42 50 42 22 2c 34  |.... "OS_GBPB",4|
00003dc0  2c 68 64 6c 25 2c 63 61  74 25 2c 31 0d 1c e8 19  |,hdl%,cat%,1....|
00003dd0  c8 99 20 22 4f 53 5f 46  69 6e 64 22 2c 26 30 30  |.. "OS_Find",&00|
00003de0  2c 68 64 6c 25 0d 1c f2  05 cb 0d 1c fc 0b c8 8e  |,hdl%...........|
00003df0  20 74 25 20 ca 0d 1d 06  3b c9 26 44 37 45 3a ff  | t% ....;.&D7E:.|
00003e00  22 4c 4f 41 44 20 22 2b  66 24 2b 22 20 22 2b c3  |"LOAD "+f$+" "+.|
00003e10  7e 28 62 72 75 73 68 25  29 3a f2 73 74 6f 72 65  |~(brush%):.store|
00003e20  28 24 62 72 75 73 68 5f  73 74 72 25 2c 66 24 29  |($brush_str%,f$)|
00003e30  0d 1d 10 45 c9 26 44 33  41 3a ff 22 4c 4f 41 44  |...E.&D3A:."LOAD|
00003e40  20 22 2b 66 24 2b 22 20  22 2b c3 7e 28 62 72 70  | "+f$+" "+.~(brp|
00003e50  61 74 74 25 29 3a f2 73  74 6f 72 65 28 24 70 61  |att%):.store($pa|
00003e60  74 74 65 72 6e 5f 73 74  72 25 2c 66 24 29 3a 21  |ttern_str%,f$):!|
00003e70  70 6d 25 3d 31 0d 1d 1a  1a c9 26 44 37 46 3a 65  |pm%=1.....&D7F:e|
00003e80  6e 74 65 72 25 3d 31 3a  f2 72 75 6e 5f 61 74 0d  |nter%=1:.run_at.|
00003e90  1d 24 1b c9 26 44 33 39  3a f2 66 6f 72 6d 75 6c  |.$..&D39:.formul|
00003ea0  61 5f 6c 6f 61 64 28 66  24 29 0d 1d 2e 32 c9 26  |a_load(f$)...2.&|
00003eb0  46 46 39 3a 65 6e 74 65  72 25 3d 32 3a f2 73 74  |FF9:enter%=2:.st|
00003ec0  6f 72 65 28 24 73 70 72  69 74 65 5f 73 74 72 25  |ore($sprite_str%|
00003ed0  2c 66 24 29 3a f2 72 75  6e 5f 61 74 0d 1d 38 32  |,f$):.run_at..82|
00003ee0  c9 26 44 45 32 3a 65 6e  74 65 72 25 3d 33 3a f2  |.&DE2:enter%=3:.|
00003ef0  73 74 6f 72 65 28 24 73  63 72 65 65 6e 5f 73 74  |store($screen_st|
00003f00  72 25 2c 66 24 29 3a f2  72 75 6e 5f 61 74 0d 1d  |r%,f$):.run_at..|
00003f10  42 05 cb 0d 1d 4c 05 e1  0d 1d 56 04 0d 1d 60 14  |B....L....V...`.|
00003f20  dd f2 73 61 76 65 5f 61  74 28 6e 25 2c 66 24 29  |..save_at(n%,f$)|
00003f30  0d 1d 6a 10 d6 20 73 61  76 65 63 68 65 63 6b 25  |..j.. savecheck%|
00003f40  0d 1d 74 0b c8 8e 20 6e  25 20 ca 0d 1d 7e 0c c9  |..t... n% ...~..|
00003f50  30 2c 31 2c 32 2c 33 0d  1d 88 3d c8 99 20 22 4f  |0,1,2,3...=.. "O|
00003f60  53 5f 46 69 6c 65 22 2c  26 30 41 2c 66 24 2c 26  |S_File",&0A,f$,&|
00003f70  46 46 46 2c 2c 63 61 74  25 2c 63 61 74 25 20 20  |FFF,,cat%,cat%  |
00003f80  20 3a f4 20 73 61 76 65  73 20 64 75 6d 6d 79 20  | :. saves dummy |
00003f90  66 69 6c 65 0d 1d 92 0d  f2 73 61 76 65 77 69 6d  |file.....savewim|
00003fa0  70 0d 1d 9c 18 63 61 74  25 21 30 3d 31 34 38 3a  |p....cat%!0=148:|
00003fb0  63 61 74 25 21 34 3d 2d  31 0d 1d a6 26 c8 99 20  |cat%!4=-1...&.. |
00003fc0  22 4f 53 5f 52 65 61 64  56 64 75 56 61 72 69 61  |"OS_ReadVduVaria|
00003fd0  62 6c 65 73 22 2c 63 61  74 25 2c 63 61 74 25 0d  |bles",cat%,cat%.|
00003fe0  1d b0 2b 21 74 6f 70 73  63 72 65 65 6e 25 3d 21  |..+!topscreen%=!|
00003ff0  63 61 74 25 3a c8 99 20  22 4f 53 5f 52 65 6d 6f  |cat%:.. "OS_Remo|
00004000  76 65 43 75 72 73 6f 72  73 22 0d 1d ba 12 d6 20  |veCursors"..... |
00004010  75 6e 64 6f 72 65 73 74  6f 72 65 25 0d 1d c4 0b  |undorestore%....|
00004020  c8 8e 20 6e 25 20 ca 0d  1d ce 32 c9 30 3a f2 63  |.. n% ....2.0:.c|
00004030  6f 6d 70 72 65 73 73 65  64 73 61 76 65 28 66 24  |ompressedsave(f$|
00004040  29 3a f2 73 74 6f 72 65  28 24 73 63 72 65 65 6e  |):.store($screen|
00004050  5f 73 74 72 25 2c 66 24  29 0d 1d d8 30 c9 31 3a  |_str%,f$)...0.1:|
00004060  ff 22 53 43 52 45 45 4e  53 41 56 45 20 22 2b 66  |."SCREENSAVE "+f|
00004070  24 3a f2 73 74 6f 72 65  28 24 73 63 72 65 65 6e  |$:.store($screen|
00004080  5f 73 74 72 25 2c 66 24  29 0d 1d e2 33 c9 32 3a  |_str%,f$)...3.2:|
00004090  f2 63 6f 6d 70 61 63 74  65 64 73 61 76 65 28 30  |.compactedsave(0|
000040a0  2c 66 24 29 3a f2 73 74  6f 72 65 28 24 73 63 72  |,f$):.store($scr|
000040b0  65 65 6e 5f 73 74 72 25  2c 66 24 29 0d 1d ec 33  |een_str%,f$)...3|
000040c0  c9 33 3a f2 63 6f 6d 70  61 63 74 65 64 73 61 76  |.3:.compactedsav|
000040d0  65 28 31 2c 66 24 29 3a  f2 73 74 6f 72 65 28 24  |e(1,f$):.store($|
000040e0  73 63 72 65 65 6e 5f 73  74 72 25 2c 66 24 29 0d  |screen_str%,f$).|
000040f0  1d f6 05 cb 0d 1e 00 10  f2 72 65 73 74 6f 72 65  |.........restore|
00004100  77 69 6d 70 0d 1e 0a 2b  c9 34 3a ff 22 53 53 41  |wimp...+.4:."SSA|
00004110  56 45 20 22 2b 66 24 3a  f2 73 74 6f 72 65 28 24  |VE "+f$:.store($|
00004120  73 70 72 69 74 65 5f 73  74 72 25 2c 66 24 29 0d  |sprite_str%,f$).|
00004130  1e 14 41 c9 35 3a ff 22  53 41 56 45 20 22 2b 66  |..A.5:."SAVE "+f|
00004140  24 2b 22 20 22 2b c3 7e  28 62 72 75 73 68 25 29  |$+" "+.~(brush%)|
00004150  2b 22 20 2b 32 30 30 30  22 3a f2 73 74 6f 72 65  |+" +2000":.store|
00004160  28 24 62 72 75 73 68 5f  73 74 72 25 2c 66 24 29  |($brush_str%,f$)|
00004170  0d 1e 1e 19 ff 22 53 45  54 54 59 50 45 20 22 2b  |....."SETTYPE "+|
00004180  66 24 2b 22 20 44 37 45  22 0d 1e 28 42 c9 36 3a  |f$+" D7E"..(B.6:|
00004190  ff 22 53 41 56 45 20 22  2b 66 24 2b 22 20 22 2b  |."SAVE "+f$+" "+|
000041a0  c3 7e 28 62 72 70 61 74  74 25 29 2b 22 20 2b 32  |.~(brpatt%)+" +2|
000041b0  30 30 30 22 3a f2 73 74  6f 72 65 28 24 62 72 75  |000":.store($bru|
000041c0  73 68 5f 73 74 72 25 2c  66 24 29 0d 1e 32 19 ff  |sh_str%,f$)..2..|
000041d0  22 53 45 54 54 59 50 45  20 22 2b 66 24 2b 22 20  |"SETTYPE "+f$+" |
000041e0  44 33 41 22 0d 1e 3c 05  cb 0d 1e 46 05 e1 0d 1e  |D3A"..<....F....|
000041f0  50 04 0d 1e 5a 23 dd f2  73 65 74 66 69 6c 65 5f  |P...Z#..setfile_|
00004200  61 74 28 6e 25 2c f8 20  66 24 2c f8 20 73 25 2c  |at(n%,. f$,. s%,|
00004210  f8 20 74 25 29 0d 1e 64  41 f4 20 3b 7b 7b 20 73  |. t%)..dA. ;{{ s|
00004220  65 74 75 70 20 75 70 20  66 24 20 74 6f 20 62 65  |etup up f$ to be|
00004230  20 66 69 6c 65 6e 61 6d  65 2c 20 73 25 20 74 6f  | filename, s% to|
00004240  20 65 73 74 69 6d 61 74  65 64 20 73 69 7a 65 20  | estimated size |
00004250  61 6e 64 20 74 25 0d 1e  6e 32 f4 20 3b 7b 7b 20  |and t%..n2. ;{{ |
00004260  74 6f 20 66 69 6c 65 74  79 70 65 20 66 6f 72 20  |to filetype for |
00004270  66 69 6c 65 20 6f 66 20  69 6e 74 65 72 6e 61 6c  |file of internal|
00004280  20 74 79 70 65 20 6e 25  0d 1e 78 33 f4 20 3b 7b  | type n%..x3. ;{|
00004290  7b 20 4e 42 20 73 25 3c  30 20 6d 65 61 6e 73 20  |{ NB s%<0 means |
000042a0  75 6e 6b 6e 6f 77 6e 20  73 69 7a 65 2c 20 74 72  |unknown size, tr|
000042b0  79 20 69 74 20 61 6e 79  77 61 79 0d 1e 82 0b c8  |y it anyway.....|
000042c0  8e 20 6e 25 20 ca 0d 1e  8c 29 c9 30 3a 74 25 3d  |. n% ....).0:t%=|
000042d0  26 44 45 32 3a 66 24 3d  24 73 63 72 65 65 6e 5f  |&DE2:f$=$screen_|
000042e0  73 74 72 25 20 3a 73 25  3d 26 32 38 30 30 30 0d  |str% :s%=&28000.|
000042f0  1e 96 29 c9 31 3a 74 25  3d 26 46 46 39 3a 66 24  |..).1:t%=&FF9:f$|
00004300  3d 24 73 63 72 65 65 6e  5f 73 74 72 25 20 3a 73  |=$screen_str% :s|
00004310  25 3d 26 32 38 30 30 30  0d 1e a0 25 c9 32 3a 74  |%=&28000...%.2:t|
00004320  25 3d 26 44 37 46 3a 66  24 3d 24 73 63 72 65 65  |%=&D7F:f$=$scree|
00004330  6e 5f 73 74 72 25 20 3a  73 25 3d 2d 31 0d 1e aa  |n_str% :s%=-1...|
00004340  25 c9 33 3a 74 25 3d 26  44 37 46 3a 66 24 3d 24  |%.3:t%=&D7F:f$=$|
00004350  73 63 72 65 65 6e 5f 73  74 72 25 20 3a 73 25 3d  |screen_str% :s%=|
00004360  2d 31 0d 1e b4 3a c9 34  3a 74 25 3d 26 46 46 39  |-1...:.4:t%=&FF9|
00004370  3a 66 24 3d 24 73 70 72  69 74 65 5f 73 74 72 25  |:f$=$sprite_str%|
00004380  20 3a c8 99 20 22 4f 53  5f 53 70 72 69 74 65 4f  | :.. "OS_SpriteO|
00004390  70 22 2c 38 b8 2c 2c 2c  2c 2c 73 25 0d 1e be 28  |p",8.,,,,,s%...(|
000043a0  c9 35 3a 74 25 3d 26 44  37 45 3a 66 24 3d 24 62  |.5:t%=&D7E:f$=$b|
000043b0  72 75 73 68 5f 73 74 72  25 20 20 3a 73 25 3d 26  |rush_str%  :s%=&|
000043c0  32 30 30 30 0d 1e c8 28  c9 36 3a 74 25 3d 26 44  |2000...(.6:t%=&D|
000043d0  33 41 3a 66 24 3d 24 70  61 74 74 65 72 6e 5f 73  |3A:f$=$pattern_s|
000043e0  74 72 25 3a 73 25 3d 26  32 30 30 30 0d 1e d2 05  |tr%:s%=&2000....|
000043f0  cb 0d 1e dc 05 e1 0d 1e  e6 04 0d 1e f0 0d dd f2  |................|
00004400  61 6e 69 6d 61 74 65 0d  1e fa 18 e3 20 63 6f 75  |animate..... cou|
00004410  6e 74 3d 30 20 b8 20 33  35 39 20 88 20 31 38 0d  |nt=0 . 359 . 18.|
00004420  1f 04 30 4d 58 3d 36 34  30 3a 4d 59 3d 35 31 32  |..0MX=640:MY=512|
00004430  3a e6 31 32 38 2b 28 21  70 63 25 80 36 33 29 20  |:.128+(!pc%.63) |
00004440  c8 9c 20 28 21 70 63 25  80 31 39 32 29 3a db 0d  |.. (!pc%.192):..|
00004450  1f 0e 24 73 74 65 70 25  3d 68 61 70 70 65 6e 73  |..$step%=happens|
00004460  74 65 70 25 3a f2 73 63  72 65 65 6e 5f 73 65 6c  |tep%:.screen_sel|
00004470  65 63 74 0d 1f 18 2b f2  63 6f 6d 70 61 63 74 65  |ect...+.compacte|
00004480  64 73 61 76 65 28 31 2c  22 46 72 61 6d 65 22 2b  |dsave(1,"Frame"+|
00004490  c3 28 63 6f 75 6e 74 20  81 20 31 38 29 29 0d 1f  |.(count . 18))..|
000044a0  22 05 ed 0d 1f 2c 05 e1  0d 1f 36 04 0d 1f 40 0d  |"....,....6...@.|
000044b0  dd f2 61 74 65 6c 69 65  72 0d 1f 4a 0b 61 6e 67  |..atelier..J.ang|
000044c0  6c 65 3d 30 0d 1f 54 0c  2a 46 58 20 31 35 2c 30  |le=0..T.*FX 15,0|
000044d0  0d 1f 5e 36 f4 20 20 20  20 20 20 20 20 20 20 20  |..^6.           |
000044e0  20 20 20 20 20 20 20 20  20 2d 2d 2d 2d 2d 2d 2d  |         -------|
000044f0  2d 2d 4d 41 49 4e 20 4c  4f 4f 50 2d 2d 2d 2d 2d  |--MAIN LOOP-----|
00004500  2d 2d 2d 2d 2d 2d 0d 1f  68 13 ee 20 85 20 ea 20  |------..h.. . . |
00004510  f2 65 72 72 6f 72 5f 61  74 0d 1f 72 05 f5 0d 1f  |.error_at..r....|
00004520  7c 05 f5 0d 1f 86 0d 6d  72 63 74 78 31 25 3d 30  ||......mrctx1%=0|
00004530  0d 1f 90 0d 6d 72 63 74  79 31 25 3d 30 0d 1f 9a  |....mrcty1%=0...|
00004540  10 6d 72 63 74 78 32 25  3d 31 32 37 39 0d 1f a4  |.mrctx2%=1279...|
00004550  10 6d 72 63 74 79 32 25  3d 31 30 32 33 0d 1f ae  |.mrcty2%=1023...|
00004560  0d c8 8e 20 21 41 63 25  20 ca 0d 1f b8 39 c9 33  |... !Ac% ....9.3|
00004570  35 2c 33 36 3a 6d 72 63  74 78 31 25 3d 33 32 3a  |5,36:mrctx1%=32:|
00004580  6d 72 63 74 79 31 25 3d  33 32 3a 6d 72 63 74 78  |mrcty1%=32:mrctx|
00004590  32 25 3d 31 32 31 36 3a  6d 72 63 74 79 32 25 3d  |2%=1216:mrcty2%=|
000045a0  39 36 30 0d 1f c2 28 c9  32 34 3a e7 20 73 74 65  |960...(.24:. ste|
000045b0  70 25 3e 32 20 8c 20 f2  73 65 74 6c 69 6d 69 74  |p%>2 . .setlimit|
000045c0  73 28 78 73 25 2c 2d 79  73 25 29 0d 1f cc 44 c9  |s(xs%,-ys%)...D.|
000045d0  37 31 3a e7 20 73 74 65  70 25 3e 32 20 8c 20 6d  |71:. step%>2 . m|
000045e0  72 63 74 78 31 25 3d 78  31 25 3a 6d 72 63 74 79  |rctx1%=x1%:mrcty|
000045f0  31 25 3d 79 32 25 3a 6d  72 63 74 78 32 25 3d 78  |1%=y2%:mrctx2%=x|
00004600  73 25 3a 6d 72 63 74 79  32 25 3d 2d 79 73 25 0d  |s%:mrcty2%=-ys%.|
00004610  1f d6 2f c9 37 35 3a e7  20 73 74 65 70 25 3e 32  |../.75:. step%>2|
00004620  20 8c 20 6d 72 63 74 78  32 25 2d 3d 78 73 25 81  | . mrctx2%-=xs%.|
00004630  32 3a 6d 72 63 74 79 32  25 2b 3d 79 73 25 0d 1f  |2:mrcty2%+=ys%..|
00004640  e0 61 c9 33 37 2c 34 30  3a e7 20 a4 73 70 72 69  |.a.37,40:. .spri|
00004650  74 65 73 3e 30 20 8c 20  d6 20 6c 6f 63 61 74 65  |tes>0 . . locate|
00004660  73 70 72 69 74 65 25 3a  c8 99 20 26 32 45 2c 34  |sprite%:.. &2E,4|
00004670  30 2c 2c 21 73 70 72 73  74 72 20 b8 20 2c 2c 2c  |0,,!sprstr . ,,,|
00004680  78 73 25 2c 79 73 25 3a  f2 73 65 74 6c 69 6d 69  |xs%,ys%:.setlimi|
00004690  74 73 28 78 73 25 2a 32  2c 79 73 25 2a 34 29 0d  |ts(xs%*2,ys%*4).|
000046a0  1f ea 05 cb 0d 1f f4 29  c8 97 20 c8 93 20 6d 72  |.......).. .. mr|
000046b0  63 74 78 31 25 2c 6d 72  63 74 79 31 25 2c 6d 72  |ctx1%,mrcty1%,mr|
000046c0  63 74 78 32 25 2c 6d 72  63 74 79 32 25 0d 1f fe  |ctx2%,mrcty2%...|
000046d0  11 f2 6d 6f 75 73 65 5f  68 61 6e 64 6c 65 0d 20  |..mouse_handle. |
000046e0  08 21 e7 20 4d 42 3d 32  20 84 20 65 6e 74 65 72  |.!. MB=2 . enter|
000046f0  25 20 8c 20 f2 6d 65 6e  75 63 61 6c 6c 65 64 0d  |% . .menucalled.|
00004700  20 12 1a 41 63 43 4f 44  45 25 3d 3f 28 21 73 74  | ..AcCODE%=?(!st|
00004710  65 70 5f 63 6f 64 65 73  29 0d 20 1c 1e 68 61 70  |ep_codes). ..hap|
00004720  70 65 6e 73 74 65 70 25  3d 28 41 63 43 4f 44 45  |penstep%=(AcCODE|
00004730  25 20 80 20 31 35 29 0d  20 26 22 73 74 65 70 63  |% . 15). &"stepc|
00004740  6f 64 65 25 3d 3f 28 21  73 74 65 70 5f 63 6f 64  |ode%=?(!step_cod|
00004750  65 73 2b 73 74 65 70 25  29 0d 20 30 52 e7 20 28  |es+step%). 0R. (|
00004760  21 70 6d 25 3d 32 29 20  80 20 28 73 74 65 70 63  |!pm%=2) . (stepc|
00004770  6f 64 65 25 20 80 20 36  34 29 20 8c 20 73 74 65  |ode% . 64) . ste|
00004780  70 25 2b 3d 31 3a f2 63  6f 70 79 73 6f 72 74 3a  |p%+=1:.copysort:|
00004790  46 25 3d 73 74 65 70 25  3a d6 20 68 65 6c 70 73  |F%=step%:. helps|
000047a0  74 65 70 25 3a e5 20 8d  54 66 60 0d 20 3a 0d c8  |tep%:. .Tf`. :..|
000047b0  8e 20 21 41 63 25 20 ca  0d 20 44 16 c9 36 30 2c  |. !Ac% .. D..60,|
000047c0  36 31 2c 36 32 2c 36 33  2c 36 34 2c 36 35 0d 20  |61,62,63,64,65. |
000047d0  4e 19 c8 8e 20 21 72 65  63 74 5f 62 72 75 73 68  |N... !rect_brush|
000047e0  5f 6d 6f 64 65 20 ca 0d  20 58 1c c9 30 3a 41 63  |_mode .. X..0:Ac|
000047f0  43 4f 44 45 25 3d 41 63  43 4f 44 45 25 20 80 20  |CODE%=AcCODE% . |
00004800  31 39 31 0d 20 62 2a c9  31 3a 68 61 70 70 65 6e  |191. b*.1:happen|
00004810  73 74 65 70 25 2b 3d 31  3a 41 63 43 4f 44 45 25  |step%+=1:AcCODE%|
00004820  3d 41 63 43 4f 44 45 25  20 84 20 36 34 0d 20 6c  |=AcCODE% . 64. l|
00004830  28 e7 20 73 74 65 70 25  3d 32 20 8c 20 73 74 65  |(. step%=2 . ste|
00004840  70 63 6f 64 65 25 3d 73  74 65 70 63 6f 64 65 25  |pcode%=stepcode%|
00004850  20 84 20 31 36 0d 20 76  2b c9 32 3a 68 61 70 70  | . 16. v+.2:happ|
00004860  65 6e 73 74 65 70 25 2b  3d 31 3a 41 63 43 4f 44  |enstep%+=1:AcCOD|
00004870  45 25 3d 41 63 43 4f 44  45 25 20 80 20 31 39 31  |E%=AcCODE% . 191|
00004880  0d 20 80 2b e7 20 73 74  65 70 25 3d 31 20 8c 20  |. .+. step%=1 . |
00004890  73 74 65 70 63 6f 64 65  25 3d 73 74 65 70 63 6f  |stepcode%=stepco|
000048a0  64 65 25 20 84 20 31 36  2b 33 32 0d 20 8a 05 cb  |de% . 16+32. ...|
000048b0  0d 20 94 05 cb 0d 20 9e  52 e7 20 28 41 63 43 4f  |. .... .R. (AcCO|
000048c0  44 45 25 20 80 20 36 34  29 20 80 20 73 74 65 70  |DE% . 64) . step|
000048d0  25 3d 68 61 70 70 65 6e  73 74 65 70 25 20 8c 20  |%=happenstep% . |
000048e0  73 74 65 70 25 3d 31 3a  f2 42 55 54 4f 46 46 28  |step%=1:.BUTOFF(|
000048f0  34 29 3a 46 25 3d 73 74  65 70 25 3a d6 20 68 65  |4):F%=step%:. he|
00004900  6c 70 73 74 65 70 25 0d  20 a8 4f e7 20 ac 20 28  |lpstep%. .O. . (|
00004910  41 63 43 4f 44 45 25 20  80 20 36 34 29 20 80 20  |AcCODE% . 64) . |
00004920  73 74 65 70 25 3d 68 61  70 70 65 6e 73 74 65 70  |step%=happenstep|
00004930  25 20 8c 20 73 74 65 70  25 3d 73 74 65 70 25 2d  |% . step%=step%-|
00004940  31 3a 46 25 3d 73 74 65  70 25 3a d6 20 68 65 6c  |1:F%=step%:. hel|
00004950  70 73 74 65 70 25 0d 20  b2 0a c8 8e 20 b9 20 ca  |pstep%. .... . .|
00004960  0d 20 bc 30 c9 28 ac 20  28 41 63 43 4f 44 45 25  |. .0.(. (AcCODE%|
00004970  20 80 20 36 34 29 29 20  80 20 28 73 74 65 70 25  | . 64)) . (step%|
00004980  3d 68 61 70 70 65 6e 73  74 65 70 25 2d 31 29 3a  |=happenstep%-1):|
00004990  0d 20 c6 35 e7 20 28 4d  42 20 80 20 34 29 3d 34  |. .5. (MB . 4)=4|
000049a0  20 8c 20 73 74 65 70 25  3d 73 74 65 70 25 2b 31  | . step%=step%+1|
000049b0  3a 46 25 3d 73 74 65 70  25 3a d6 20 68 65 6c 70  |:F%=step%:. help|
000049c0  73 74 65 70 25 0d 20 d0  05 7f 0d 20 da 4e e7 20  |step%. .... .N. |
000049d0  ac 20 73 65 6c 65 63 74  20 8c 20 e7 20 28 4d 42  |. select . . (MB|
000049e0  20 80 20 34 29 3d 28 73  74 65 70 25 20 80 20 31  | . 4)=(step% . 1|
000049f0  29 2a 34 20 8c 20 73 74  65 70 25 3d 73 74 65 70  |)*4 . step%=step|
00004a00  25 2b 31 3a 46 25 3d 73  74 65 70 25 3a d6 20 68  |%+1:F%=step%:. h|
00004a10  65 6c 70 73 74 65 70 25  0d 20 e4 49 e7 20 73 65  |elpstep%. .I. se|
00004a20  6c 65 63 74 20 8c 20 e7  20 28 4d 42 20 80 20 34  |lect . . (MB . 4|
00004a30  29 20 8c 20 73 74 65 70  25 3d 73 74 65 70 25 2b  |) . step%=step%+|
00004a40  31 3a 46 25 3d 73 74 65  70 25 3a d6 20 68 65 6c  |1:F%=step%:. hel|
00004a50  70 73 74 65 70 25 3a f2  42 55 54 4f 46 46 28 34  |pstep%:.BUTOFF(4|
00004a60  29 0d 20 ee 05 cb 0d 20  f8 0d 2a 46 58 20 32 32  |). .... ..*FX 22|
00004a70  39 2c 31 0d 21 02 23 e7  20 73 74 65 70 25 3d 68  |9,1.!.#. step%=h|
00004a80  61 70 70 65 6e 73 74 65  70 25 20 8c 20 2a 46 58  |appenstep% . *FX|
00004a90  20 32 32 39 2c 30 0d 21  0c 11 69 6e 61 63 74 69  | 229,0.!..inacti|
00004aa0  6f 6e 3d 21 41 63 25 0d  21 16 21 e7 20 28 4d 42  |on=!Ac%.!.!. (MB|
00004ab0  20 80 20 31 29 3d 31 20  8c 20 f2 61 64 6a 75 73  | . 1)=1 . .adjus|
00004ac0  74 70 72 65 73 73 65 64  0d 21 20 09 45 25 3d 2d  |tpressed.! .E%=-|
00004ad0  31 0d 21 2a 16 e7 20 73  74 65 70 63 6f 64 65 25  |1.!*.. stepcode%|
00004ae0  20 80 20 31 36 20 8c 0d  21 34 0e c8 8e 20 73 74  | . 16 ..!4... st|
00004af0  65 70 25 20 ca 0d 21 3e  1c c9 30 2c 31 3a 43 25  |ep% ..!>..0,1:C%|
00004b00  3d 4d 58 2d 78 30 25 3a  44 25 3d 4d 59 2d 79 30  |=MX-x0%:D%=MY-y0|
00004b10  25 0d 21 48 1c c9 32 2c  33 3a 43 25 3d 4d 58 2d  |%.!H..2,3:C%=MX-|
00004b20  78 31 25 3a 44 25 3d 4d  59 2d 79 31 25 0d 21 52  |x1%:D%=MY-y1%.!R|
00004b30  1c c9 34 2c 35 3a 43 25  3d 4d 58 2d 78 33 25 3a  |..4,5:C%=MX-x3%:|
00004b40  44 25 3d 4d 59 2d 79 33  25 0d 21 5c 05 cb 0d 21  |D%=MY-y3%.!\...!|
00004b50  66 4d e7 20 73 74 65 70  63 6f 64 65 25 20 80 20  |fM. stepcode% . |
00004b60  33 32 20 8c 20 42 25 3d  43 25 2a 32 3a 43 25 3d  |32 . B%=C%*2:C%=|
00004b70  44 25 3a d6 20 63 61 6c  63 5f 72 61 64 69 75 73  |D%:. calc_radius|
00004b80  25 3a 43 25 3d 21 52 45  53 55 4c 54 58 2f 32 3a  |%:C%=!RESULTX/2:|
00004b90  45 25 3d 32 20 8b 20 45  25 3d 30 0d 21 70 05 cd  |E%=2 . E%=0.!p..|
00004ba0  0d 21 7a 17 41 25 3d 4d  58 3a 42 25 3d 4d 59 3a  |.!z.A%=MX:B%=MY:|
00004bb0  d6 20 68 65 6c 70 25 0d  21 84 2b e7 20 73 74 65  |. help%.!.+. ste|
00004bc0  70 25 3d 68 61 70 70 65  6e 73 74 65 70 25 20 80  |p%=happenstep% .|
00004bd0  20 28 41 63 43 4f 44 45  25 20 80 20 31 32 38 29  | (AcCODE% . 128)|
00004be0  20 8c 0d 21 8e 06 c8 96  0d 21 98 0d d6 20 6c 69  | ..!.....!... li|
00004bf0  66 74 75 70 25 0d 21 a2  0d d6 20 63 6f 6c 6f 75  |ftup%.!... colou|
00004c00  72 25 0d 21 ac 32 e7 20  21 70 6d 25 3e 30 20 80  |r%.!.2. !pm%>0 .|
00004c10  20 28 41 63 43 4f 44 45  25 20 80 20 26 32 30 29  | (AcCODE% . &20)|
00004c20  20 8c 20 d6 20 62 69 74  5f 6d 61 70 5f 73 63 61  | . . bit_map_sca|
00004c30  6e 5f 41 25 0d 21 b6 12  f2 73 63 72 65 65 6e 5f  |n_A%.!...screen_|
00004c40  73 65 6c 65 63 74 0d 21  c0 33 e7 20 21 70 6d 25  |select.!.3. !pm%|
00004c50  3e 30 20 80 20 28 41 63  43 4f 44 45 25 20 80 20  |>0 . (AcCODE% . |
00004c60  26 32 30 29 20 8c 20 d6  20 62 69 74 5f 6d 61 70  |&20) . . bit_map|
00004c70  5f 70 61 74 74 65 72 6e  25 0d 21 ca 23 e7 20 28  |_pattern%.!.#. (|
00004c80  41 63 43 4f 44 45 25 20  80 20 31 36 29 20 8c 20  |AcCODE% . 16) . |
00004c90  d6 20 73 68 6f 77 5f 74  68 72 75 25 0d 21 d4 0f  |. show_thru%.!..|
00004ca0  d6 20 6c 69 66 74 64 6f  77 6e 25 0d 21 de 05 cc  |. liftdown%.!...|
00004cb0  0d 21 e8 11 e6 20 33 2c  36 33 20 c8 9c 20 31 39  |.!... 3,63 .. 19|
00004cc0  32 0d 21 f2 12 f2 73 63  72 65 65 6e 5f 73 65 6c  |2.!...screen_sel|
00004cd0  65 63 74 0d 21 fc 05 cd  0d 22 06 2e 6b 65 79 70  |ect.!...."..keyp|
00004ce0  72 65 73 73 25 3d a6 28  30 29 3a e7 20 6b 65 79  |ress%=.(0):. key|
00004cf0  70 72 65 73 73 25 3e 30  20 8c 20 f2 6b 65 79 70  |press%>0 . .keyp|
00004d00  72 65 73 73 65 64 0d 22  10 2a e7 20 69 6e 61 63  |ressed.".*. inac|
00004d10  74 69 6f 6e 3c 3e 21 41  63 25 20 8c 20 f2 70 72  |tion<>!Ac% . .pr|
00004d20  6f 63 65 73 73 5f 6e 65  77 5f 61 63 74 69 6f 6e  |ocess_new_action|
00004d30  0d 22 1a 2c e7 20 73 74  65 70 25 3c 3e 6f 6c 64  |.".,. step%<>old|
00004d40  73 74 65 70 25 20 8c 20  46 25 3d 73 74 65 70 25  |step% . F%=step%|
00004d50  3a d6 20 68 65 6c 70 73  74 65 70 25 0d 22 24 12  |:. helpstep%."$.|
00004d60  6f 6c 64 73 74 65 70 25  3d 73 74 65 70 25 0d 22  |oldstep%=step%."|
00004d70  2e 0d fd 20 21 41 63 25  3d 32 30 0d 22 38 11 f2  |... !Ac%=20."8..|
00004d80  72 65 73 65 74 5f 61 63  74 69 6f 6e 0d 22 42 0d  |reset_action."B.|
00004d90  e7 20 6f 73 25 3d 31 20  8c 0d 22 4c 0f e7 20 74  |. os%=1 .."L.. t|
00004da0  65 73 74 69 6e 67 20 8c  0d 22 56 53 f2 65 72 72  |esting .."VS.err|
00004db0  6f 72 68 61 6e 64 6c 65  28 33 2c 22 57 68 65 72  |orhandle(3,"Wher|
00004dc0  65 20 74 6f 20 42 6f 73  73 22 2c 22 42 61 73 69  |e to Boss","Basi|
00004dd0  63 20 50 72 6f 67 72 61  6d 7c 53 6f 75 72 63 65  |c Program|Source|
00004de0  20 43 6f 64 65 7c 44 6f  6e 27 74 20 45 78 69 74  | Code|Don't Exit|
00004df0  22 2c 73 65 6c 65 63 74  65 64 29 0d 22 60 05 cc  |",selected)."`..|
00004e00  0d 22 6a 50 f2 65 72 72  6f 72 68 61 6e 64 6c 65  |."jP.errorhandle|
00004e10  28 32 2c 22 44 6f 20 79  6f 75 20 72 65 61 6c 6c  |(2,"Do you reall|
00004e20  79 20 77 69 73 68 20 74  6f 20 65 78 69 74 20 66  |y wish to exit f|
00004e30  72 6f 6d 20 41 54 45 4c  49 45 52 22 2c 22 43 4f  |rom ATELIER","CO|
00004e40  4e 46 49 52 4d 22 2c 73  65 6c 65 63 74 65 64 29  |NFIRM",selected)|
00004e50  0d 22 74 05 cd 0d 22 7e  10 cc 20 73 65 6c 65 63  |."t..."~.. selec|
00004e60  74 65 64 3d 31 0d 22 88  05 cd 0d 22 92 29 e7 20  |ted=1."....".). |
00004e70  74 65 73 74 69 6e 67 20  8c 20 fd 20 73 65 6c 65  |testing . . sele|
00004e80  63 74 65 64 3d 31 20 84  20 73 65 6c 65 63 74 65  |cted=1 . selecte|
00004e90  64 3d 32 0d 22 9c 1e e7  20 ac 20 74 65 73 74 69  |d=2."... . testi|
00004ea0  6e 67 20 8c 20 fd 20 73  65 6c 65 63 74 65 64 3d  |ng . . selected=|
00004eb0  31 0d 22 a6 37 f4 20 20  20 20 20 20 20 20 20 20  |1.".7.          |
00004ec0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 45 4e 44  |-------------END|
00004ed0  20 4f 46 20 4d 41 49 4e  20 4c 4f 4f 50 20 2d 2d  | OF MAIN LOOP --|
00004ee0  2d 2d 2d 2d 2d 2d 2d 2d  0d 22 b0 1b e7 20 ac 20  |--------."... . |
00004ef0  74 65 73 74 69 6e 67 20  84 20 6f 73 25 3d 32 20  |testing . os%=2 |
00004f00  8c 20 e1 0d 22 ba 0c f2  74 69 64 79 5f 61 74 0d  |. .."...tidy_at.|
00004f10  22 c4 0c 2a 46 58 20 31  35 2c 30 0d 22 ce 11 c8  |"..*FX 15,0."...|
00004f20  8e 20 73 65 6c 65 63 74  65 64 20 ca 0d 22 d8 07  |. selected .."..|
00004f30  c9 31 3a 0d 22 e2 16 2a  4b 45 59 20 34 20 53 41  |.1:."..*KEY 4 SA|
00004f40  56 45 7c 4d 52 55 4e 7c  4d 0d 22 ec 10 2a 46 58  |VE|MRUN|M."..*FX|
00004f50  20 31 33 38 2c 30 2c 36  39 0d 22 f6 10 2a 46 58  | 138,0,69."..*FX|
00004f60  20 31 33 38 2c 30 2c 36  38 0d 23 00 10 2a 46 58  | 138,0,68.#..*FX|
00004f70  20 31 33 38 2c 30 2c 34  36 0d 23 0a 10 2a 46 58  | 138,0,46.#..*FX|
00004f80  20 31 33 38 2c 30 2c 34  36 0d 23 14 10 2a 46 58  | 138,0,46.#..*FX|
00004f90  20 31 33 38 2c 30 2c 31  33 0d 23 1e 05 e0 0d 23  | 138,0,13.#....#|
00004fa0  28 07 c9 32 3a 0d 23 32  10 2a 4b 45 59 20 34 20  |(..2:.#2.*KEY 4 |
00004fb0  52 55 4e 7c 4d 0d 23 3c  4b f2 73 74 72 69 6e 67  |RUN|M.#<K.string|
00004fc0  5f 74 6f 5f 62 75 66 66  65 72 28 22 4c 4f 2e 20  |_to_buffer("LO. |
00004fd0  22 22 3c 41 74 65 6c 69  2a 24 44 69 72 3e 2e 53  |""<Ateli*$Dir>.S|
00004fe0  6f 75 72 2a 2e 53 6f 75  2a 22 22 22 2b bd 28 31  |our*.Sou*"""+.(1|
00004ff0  33 29 2b 22 45 44 2e 2e  22 2b bd 28 31 33 29 29  |3)+"ED.."+.(13))|
00005000  0d 23 46 05 e0 0d 23 50  05 cb 0d 23 5a 05 e1 0d  |.#F...#P...#Z...|
00005010  23 64 04 0d 23 6e 13 dd  f2 61 64 6a 75 73 74 70  |#d..#n...adjustp|
00005020  72 65 73 73 65 64 0d 23  78 19 e7 20 21 41 63 25  |ressed.#x.. !Ac%|
00005030  3d 38 32 20 84 20 21 41  63 25 3d 35 39 20 8c 0d  |=82 . !Ac%=59 ..|
00005040  23 82 11 f2 72 65 73 65  74 5f 61 63 74 69 6f 6e  |#...reset_action|
00005050  0d 23 8c 05 cc 0d 23 96  52 e7 20 28 4d 42 20 80  |.#....#.R. (MB .|
00005060  20 31 29 3d 31 20 80 20  73 74 65 70 25 3e 31 20  | 1)=1 . step%>1 |
00005070  8c 20 73 74 65 70 25 3d  73 74 65 70 25 2d 31 3a  |. step%=step%-1:|
00005080  f2 42 55 54 4f 46 46 28  31 29 3a f2 75 70 64 61  |.BUTOFF(1):.upda|
00005090  74 65 3a 46 25 3d 73 74  65 70 25 3a d6 20 68 65  |te:F%=step%:. he|
000050a0  6c 70 73 74 65 70 25 0d  23 a0 05 cd 0d 23 aa 05  |lpstep%.#....#..|
000050b0  e1 0d 23 b4 04 0d 23 be  12 dd f2 72 65 73 65 74  |..#...#....reset|
000050c0  5f 61 63 74 69 6f 6e 0d  23 c8 14 21 41 63 25 3d  |_action.#..!Ac%=|
000050d0  21 6f 6c 64 61 63 74 69  6f 6e 25 0d 23 d2 05 e1  |!oldaction%.#...|
000050e0  0d 23 dc 04 0d 23 e6 12  dd f2 6d 6f 75 73 65 5f  |.#...#....mouse_|
000050f0  68 61 6e 64 6c 65 0d 23  f0 22 c8 97 20 4d 58 2c  |handle.#.".. MX,|
00005100  4d 59 2c 4d 42 3a e7 20  6d 67 73 20 8c 20 f2 6d  |MY,MB:. mgs . .m|
00005110  6f 75 73 65 67 72 69 64  0d 23 fa 1c e7 20 21 6c  |ousegrid.#... !l|
00005120  65 66 74 5f 68 61 6e 64  65 64 20 8c 20 c8 8e 20  |eft_handed . .. |
00005130  4d 42 20 ca 0d 24 04 11  c9 25 30 30 31 3a 4d 42  |MB ..$...%001:MB|
00005140  3d 25 31 30 30 0d 24 0e  11 c9 25 30 31 31 3a 4d  |=%100.$...%011:M|
00005150  42 3d 25 31 31 30 0d 24  18 11 c9 25 31 30 30 3a  |B=%110.$...%100:|
00005160  4d 42 3d 25 30 30 31 0d  24 22 11 c9 25 31 31 30  |MB=%001.$"..%110|
00005170  3a 4d 42 3d 25 30 31 31  0d 24 2c 05 cb 0d 24 36  |:MB=%011.$,...$6|
00005180  12 e7 20 ac 20 a6 28 2d  39 37 29 20 8c 20 e1 0d  |.. . .(-97) . ..|
00005190  24 40 32 e7 20 a6 28 2d  31 29 20 8c 20 78 72 73  |$@2. .(-1) . xrs|
000051a0  74 25 3d 4d 58 3a 79 72  73 74 25 3d 4d 59 20 8b  |t%=MX:yrst%=MY .|
000051b0  20 c8 97 20 b8 20 78 72  73 74 25 2c 79 72 73 74  | .. . xrst%,yrst|
000051c0  25 0d 24 4a 05 e1 0d 24  54 04 0d 24 5e 10 dd 20  |%.$J...$T..$^.. |
000051d0  f2 6d 6f 75 73 65 67 72  69 64 0d 24 68 31 4d 58  |.mousegrid.$h1MX|
000051e0  3d 28 28 4d 58 2b 6d 6f  75 73 65 67 72 69 64 20  |=((MX+mousegrid |
000051f0  81 20 32 29 20 81 20 6d  6f 75 73 65 67 72 69 64  |. 2) . mousegrid|
00005200  29 2a 6d 6f 75 73 65 67  72 69 64 0d 24 72 31 4d  |)*mousegrid.$r1M|
00005210  59 3d 28 28 4d 59 2b 6d  6f 75 73 65 67 72 69 64  |Y=((MY+mousegrid|
00005220  20 81 20 32 29 20 81 20  6d 6f 75 73 65 67 72 69  | . 2) . mousegri|
00005230  64 29 2a 6d 6f 75 73 65  67 72 69 64 0d 24 7c 1d  |d)*mousegrid.$|.|
00005240  e7 20 4d 58 3c 6d 72 63  74 78 31 25 20 8c 20 4d  |. MX<mrctx1% . M|
00005250  58 3d 6d 72 63 74 78 31  25 0d 24 86 1d e7 20 4d  |X=mrctx1%.$... M|
00005260  59 3c 6d 72 63 74 79 31  25 20 8c 20 4d 59 3d 6d  |Y<mrcty1% . MY=m|
00005270  72 63 74 79 31 25 0d 24  90 1d e7 20 4d 58 3e 6d  |rcty1%.$... MX>m|
00005280  72 63 74 78 32 25 20 8c  20 4d 58 3d 6d 72 63 74  |rctx2% . MX=mrct|
00005290  78 32 25 0d 24 9a 1d e7  20 4d 59 3e 6d 72 63 74  |x2%.$... MY>mrct|
000052a0  79 32 25 20 8c 20 4d 59  3d 6d 72 63 74 79 32 25  |y2% . MY=mrcty2%|
000052b0  0d 24 a4 0e c8 92 20 b8  20 4d 58 2c 4d 59 0d 24  |.$.... . MX,MY.$|
000052c0  ae 05 e1 0d 24 b8 04 0d  24 c2 10 dd f2 73 65 74  |....$...$....set|
000052d0  5f 61 63 74 69 6f 6e 0d  24 cc 0d c8 8e 20 21 41  |_action.$.... !A|
000052e0  63 25 20 ca 0d 24 d6 10  c9 35 37 2c 35 39 2c 38  |c% ..$...57,59,8|
000052f0  32 2c 34 33 0d 24 e0 05  7f 0d 24 ea 14 21 6f 6c  |2,43.$....$..!ol|
00005300  64 61 63 74 69 6f 6e 25  3d 21 41 63 25 0d 24 f4  |daction%=!Ac%.$.|
00005310  05 cb 0d 24 fe 05 e1 0d  25 08 04 0d 25 12 0f dd  |...$....%...%...|
00005320  f2 42 55 54 4f 46 46 28  4d 29 0d 25 1c 05 f5 0d  |.BUTOFF(M).%....|
00005330  25 26 0f c8 97 20 44 58  2c 44 59 2c 4d 42 0d 25  |%&... DX,DY,MB.%|
00005340  30 1c e7 20 21 6c 65 66  74 5f 68 61 6e 64 65 64  |0.. !left_handed|
00005350  20 8c 20 c8 8e 20 4d 42  20 ca 0d 25 3a 11 c9 25  | . .. MB ..%:..%|
00005360  30 30 31 3a 4d 42 3d 25  31 30 30 0d 25 44 11 c9  |001:MB=%100.%D..|
00005370  25 30 31 31 3a 4d 42 3d  25 31 31 30 0d 25 4e 11  |%011:MB=%110.%N.|
00005380  c9 25 31 30 30 3a 4d 42  3d 25 30 30 31 0d 25 58  |.%100:MB=%001.%X|
00005390  11 c9 25 31 31 30 3a 4d  42 3d 25 30 31 31 0d 25  |..%110:MB=%011.%|
000053a0  62 05 cb 0d 25 6c 10 fd  20 28 4d 42 20 80 20 4d  |b...%l.. (MB . M|
000053b0  29 3d 30 0d 25 76 05 e1  0d 25 80 04 0d 25 8a 10  |)=0.%v...%...%..|
000053c0  dd f2 6b 65 79 70 72 65  73 73 65 64 0d 25 94 0c  |..keypressed.%..|
000053d0  2a 46 58 20 31 35 2c 30  0d 25 9e 15 c8 8e 20 bd  |*FX 15,0.%.... .|
000053e0  28 6b 65 79 70 72 65 73  73 25 29 20 ca 0d 25 a8  |(keypress%) ..%.|
000053f0  11 c9 22 2a 22 3a 65 6e  74 65 72 25 3d 35 0d 25  |.."*":enter%=5.%|
00005400  b2 05 cb 0d 25 bc 1d e7  20 28 6b 65 79 70 72 65  |....%... (keypre|
00005410  73 73 25 20 80 20 31 32  38 29 3d 30 20 8c 20 e1  |ss% . 128)=0 . .|
00005420  0d 25 c6 12 c8 8e 20 6b  65 79 70 72 65 73 73 25  |.%.... keypress%|
00005430  20 ca 0d 25 d0 2b c9 26  38 30 2c 26 39 30 2c 26  | ..%.+.&80,&90,&|
00005440  41 30 2c 26 42 30 20 20  20 20 20 20 20 20 3a f4  |A0,&B0        :.|
00005450  20 66 30 2d 70 72 69 6e  74 20 6b 65 79 0d 25 da  | f0-print key.%.|
00005460  0d d6 20 6c 69 66 74 75  70 25 0d 25 e4 0f d6 20  |.. liftup%.%... |
00005470  75 6e 64 6f 73 61 76 65  25 0d 25 ee 0f f2 70 6f  |undosave%.%...po|
00005480  69 6e 74 28 30 2c 30 29  0d 25 f8 11 ff 28 66 75  |int(0,0).%...(fu|
00005490  6e 63 70 72 69 6e 74 24  29 0d 26 02 21 e7 20 eb  |ncprint$).&.!. .|
000054a0  3c 3e 31 35 20 8c 20 eb  20 31 35 3a d6 20 75 6e  |<>15 . . 15:. un|
000054b0  64 6f 72 65 73 74 6f 72  65 25 0d 26 0c 0b f2 75  |dorestore%.&...u|
000054c0  70 64 61 74 65 0d 26 16  0f d6 20 6c 69 66 74 64  |pdate.&... liftd|
000054d0  6f 77 6e 25 0d 26 20 08  c9 26 42 31 0d 26 2a 0f  |own%.& ..&B1.&*.|
000054e0  d6 20 75 6e 64 6f 73 61  76 65 25 0d 26 34 0a 2a  |. undosave%.&4.*|
000054f0  46 58 32 32 39 0d 26 3e  07 eb 20 30 0d 26 48 06  |FX229.&>.. 0.&H.|
00005500  ef 32 0d 26 52 11 e3 20  21 41 63 25 3d 30 20 b8  |.2.&R.. !Ac%=0 .|
00005510  20 38 32 0d 26 5c 1f 21  72 65 63 74 5f 62 72 75  | 82.&\.!rect_bru|
00005520  73 68 5f 6d 6f 64 65 3d  28 21 41 63 25 20 83 20  |sh_mode=(!Ac% . |
00005530  33 29 0d 26 66 15 f1 22  46 75 6e 63 74 69 6f 6e  |3).&f.."Function|
00005540  20 22 3b 21 41 63 25 0d  26 70 05 f1 0d 26 7a 0f  | ";!Ac%.&p...&z.|
00005550  d6 20 68 65 6c 70 74 65  78 74 25 0d 26 84 05 f1  |. helptext%.&...|
00005560  0d 26 8e 05 ed 0d 26 98  06 ef 33 0d 26 a2 08 eb  |.&....&...3.&...|
00005570  20 31 35 0d 26 ac 12 d6  20 75 6e 64 6f 72 65 73  | 15.&... undores|
00005580  74 6f 72 65 25 0d 26 b6  39 c9 26 38 31 2c 26 39  |tore%.&.9.&81,&9|
00005590  31 2c 26 41 31 2c 26 42  31 3a d6 20 6c 69 66 74  |1,&A1,&B1:. lift|
000055a0  75 70 25 3a d6 20 75 6e  64 6f 72 65 73 74 6f 72  |up%:. undorestor|
000055b0  65 25 3a d6 20 6c 69 66  74 64 6f 77 6e 25 0d 26  |e%:. liftdown%.&|
000055c0  c0 30 c9 26 38 32 2c 26  39 32 2c 26 41 32 2c 26  |.0.&82,&92,&A2,&|
000055d0  42 32 3a 73 74 65 70 25  3d 31 3a f2 73 65 74 5f  |B2:step%=1:.set_|
000055e0  61 63 74 69 6f 6e 3a 21  41 63 25 3d 35 37 0d 26  |action:!Ac%=57.&|
000055f0  ca 60 c9 26 38 33 2c 26  39 33 2c 26 41 33 2c 26  |.`.&83,&93,&A3,&|
00005600  42 33 3a e7 20 21 41 63  25 3c 3e 38 32 20 8c 20  |B3:. !Ac%<>82 . |
00005610  73 74 65 70 25 3d 31 3a  f2 73 65 74 5f 61 63 74  |step%=1:.set_act|
00005620  69 6f 6e 3a 21 41 63 25  3d 38 32 20 8b 20 21 62  |ion:!Ac%=82 . !b|
00005630  72 75 73 68 73 65 6c 25  3d 28 28 21 62 72 75 73  |rushsel%=((!brus|
00005640  68 73 65 6c 25 2b 31 29  20 80 20 31 35 29 0d 26  |hsel%+1) . 15).&|
00005650  d4 3a c9 26 38 34 2c 26  39 34 2c 26 41 34 2c 26  |.:.&84,&94,&A4,&|
00005660  42 34 3a 21 70 6d 25 3d  30 3a 21 70 63 25 3d b0  |B4:!pm%=0:!pc%=.|
00005670  4d 58 2c 4d 59 29 2b c8  9c 28 4d 58 2c 4d 59 29  |MX,MY)+..(MX,MY)|
00005680  3a f2 75 70 64 61 74 65  0d 26 de 14 c9 26 38 35  |:.update.&...&85|
00005690  2c 26 39 35 2c 26 41 35  2c 26 42 35 0d 26 e8 4f  |,&95,&A5,&B5.&.O|
000056a0  e7 20 21 68 65 6c 70 73  74 61 74 75 73 25 20 8c  |. !helpstatus% .|
000056b0  20 d6 20 68 65 6c 70 6f  6e 25 3a ef 35 3a d6 20  | . helpon%:.5:. |
000056c0  68 65 6c 70 74 65 78 74  25 3a 46 25 3d 73 74 65  |helptext%:F%=ste|
000056d0  70 25 3a d6 20 68 65 6c  70 73 74 65 70 25 20 8b  |p%:. helpstep% .|
000056e0  20 d6 20 68 65 6c 70 6f  66 66 25 0d 26 f2 14 c9  | . helpoff%.&...|
000056f0  26 38 36 2c 26 39 36 2c  26 41 36 2c 26 42 36 0d  |&86,&96,&A6,&B6.|
00005700  26 fc 15 6d 67 73 3d 31  2d 6d 67 73 3a f2 75 70  |&..mgs=1-mgs:.up|
00005710  64 61 74 65 0d 27 06 14  c9 26 38 37 2c 26 39 37  |date.'...&87,&97|
00005720  2c 26 41 37 2c 26 42 37  0d 27 10 1f e7 20 74 65  |,&A7,&B7.'... te|
00005730  73 74 69 6e 67 20 80 20  6b 65 79 70 72 65 73 73  |sting . keypress|
00005740  25 3d 26 41 37 20 8c 0d  27 1a 0a 2a 46 58 32 32  |%=&A7 ..'..*FX22|
00005750  39 0d 27 24 22 d6 20 6c  69 66 74 75 70 25 3a f2  |9.'$". liftup%:.|
00005760  61 6e 69 6d 61 74 65 3a  d6 20 6c 69 66 74 64 6f  |animate:. liftdo|
00005770  77 6e 25 0d 27 2e 05 cc  0d 27 38 0d d6 20 6c 69  |wn%.'....'8.. li|
00005780  66 74 75 70 25 0d 27 42  0f d6 20 75 6e 64 6f 73  |ftup%.'B.. undos|
00005790  61 76 65 25 0d 27 4c 0f  d6 20 6c 69 66 74 64 6f  |ave%.'L.. liftdo|
000057a0  77 6e 25 0d 27 56 05 cd  0d 27 60 14 c9 26 38 38  |wn%.'V...'`..&88|
000057b0  2c 26 39 38 2c 26 41 38  2c 26 42 38 0d 27 6a 43  |,&98,&A8,&B8.'jC|
000057c0  e7 20 28 74 65 73 74 69  6e 67 20 80 20 6b 65 79  |. (testing . key|
000057d0  70 72 65 73 73 25 3d 26  38 38 29 20 84 20 28 ac  |press%=&88) . (.|
000057e0  20 74 65 73 74 69 6e 67  29 20 8c 20 f2 73 65 74  | testing) . .set|
000057f0  5f 61 63 74 69 6f 6e 3a  21 41 63 25 3d 32 30 0d  |_action:!Ac%=20.|
00005800  27 74 2d e7 20 74 65 73  74 69 6e 67 20 80 20 6b  |'t-. testing . k|
00005810  65 79 70 72 65 73 73 25  3d 26 39 38 20 8c 20 6f  |eypress%=&98 . o|
00005820  73 25 3d 31 3a 21 41 63  25 3d 32 30 0d 27 7e 5e  |s%=1:!Ac%=20.'~^|
00005830  e7 20 74 65 73 74 69 6e  67 20 80 20 6b 65 79 70  |. testing . keyp|
00005840  72 65 73 73 25 3d 26 41  38 20 8c 20 d6 20 6c 69  |ress%=&A8 . . li|
00005850  66 74 75 70 25 3a 41 25  3d 21 70 72 65 73 65 6e  |ftup%:A%=!presen|
00005860  74 6d 65 6e 75 25 3a 47  25 3d 4d 58 3a 48 25 3d  |tmenu%:G%=MX:H%=|
00005870  4d 59 3a d6 20 64 72 61  77 6d 65 6e 75 25 3a d6  |MY:. drawmenu%:.|
00005880  20 6c 69 66 74 64 6f 77  6e 25 0d 27 88 05 cb 0d  | liftdown%.'....|
00005890  27 92 1b 6b 65 79 69 6e  25 3d 28 6b 65 79 70 72  |'..keyin%=(keypr|
000058a0  65 73 73 25 80 26 46 29  2d 39 0d 27 9c 1a e7 20  |ess%.&F)-9.'... |
000058b0  6b 65 79 69 6e 25 3e 34  20 8c 20 6b 65 79 69 6e  |keyin%>4 . keyin|
000058c0  25 3d 2d 31 0d 27 a6 11  e7 20 6b 65 79 69 6e 25  |%=-1.'... keyin%|
000058d0  3e 2d 31 20 8c 0d 27 b0  26 6b 65 79 6c 65 76 65  |>-1 ..'.&keyleve|
000058e0  6c 25 3d 28 28 28 6b 65  79 70 72 65 73 73 25 80  |l%=(((keypress%.|
000058f0  26 46 30 29 3e 3e 34 29  83 34 29 0d 27 ba 59 e7  |&F0)>>4).4).'.Y.|
00005900  20 a6 28 2d 33 29 20 8c  20 66 75 6e 63 74 69 6f  | .(-3) . functio|
00005910  6e 25 28 6b 65 79 69 6e  25 2c 6b 65 79 6c 65 76  |n%(keyin%,keylev|
00005920  65 6c 25 29 3d 21 41 63  25 20 8b 20 21 41 63 25  |el%)=!Ac% . !Ac%|
00005930  3d 66 75 6e 63 74 69 6f  6e 25 28 6b 65 79 69 6e  |=function%(keyin|
00005940  25 2c 6b 65 79 6c 65 76  65 6c 25 29 3a f2 75 70  |%,keylevel%):.up|
00005950  64 61 74 65 0d 27 c4 05  cd 0d 27 ce 05 e1 0d 27  |date.'....'....'|
00005960  d8 04 0d 27 e2 18 dd f2  70 72 6f 63 65 73 73 5f  |...'....process_|
00005970  6e 65 77 5f 61 63 74 69  6f 6e 0d 27 ec 1d e7 20  |new_action.'... |
00005980  21 41 63 25 3d 33 33 20  8c 20 f2 72 65 73 65 74  |!Ac%=33 . .reset|
00005990  5f 61 63 74 69 6f 6e 0d  27 f6 33 ef 35 3a d6 20  |_action.'.3.5:. |
000059a0  68 65 6c 70 74 65 78 74  25 3a 46 25 3d 31 3a d6  |helptext%:F%=1:.|
000059b0  20 68 65 6c 70 73 74 65  70 25 3a 73 74 65 70 25  | helpstep%:step%|
000059c0  3d 31 3a f2 75 70 64 61  74 65 0d 28 00 05 e1 0d  |=1:.update.(....|
000059d0  28 0a 04 0d 28 14 10 dd  f2 6d 65 6e 75 63 61 6c  |(...(....menucal|
000059e0  6c 65 64 0d 28 1e 0f f2  73 65 74 5f 61 63 74 69  |led.(...set_acti|
000059f0  6f 6e 0d 28 28 17 c8 97  20 c8 93 20 30 2c 30 2c  |on.((... .. 0,0,|
00005a00  31 32 37 39 2c 31 30 32  33 0d 28 32 0d d6 20 6c  |1279,1023.(2.. l|
00005a10  69 66 74 75 70 25 0d 28  3c 10 21 6d 6f 75 73 65  |iftup%.(<.!mouse|
00005a20  62 75 74 73 3d 30 0d 28  46 2e e7 20 3f 28 21 61  |buts=0.(F.. ?(!a|
00005a30  63 74 69 6f 6e 73 61 76  65 29 3c 32 35 35 20 8c  |ctionsave)<255 .|
00005a40  20 3f 28 21 61 63 74 69  6f 6e 73 61 76 65 29 3d  | ?(!actionsave)=|
00005a50  21 41 63 25 0d 28 50 2d  e6 20 31 32 38 2b 28 42  |!Ac%.(P-. 128+(B|
00005a60  41 43 4b 43 4f 4c 25 20  80 20 36 33 29 20 c8 9c  |ACKCOL% . 63) ..|
00005a70  20 28 42 41 43 4b 43 4f  4c 25 20 80 20 31 39 32  | (BACKCOL% . 192|
00005a80  29 0d 28 5a 0f c8 8e 20  65 6e 74 65 72 25 20 ca  |).(Z... enter% .|
00005a90  0d 28 64 21 c9 32 3a 41  25 3d 37 3a d6 20 64 6f  |.(d!.2:A%=7:. do|
00005aa0  77 6e 74 72 65 65 25 3a  f4 20 73 70 72 69 74 65  |wntree%:. sprite|
00005ab0  73 0d 28 6e 20 c9 35 3a  41 25 3d 32 38 3a d6 20  |s.(n .5:A%=28:. |
00005ac0  64 6f 77 6e 74 72 65 65  25 3a f4 20 6f 73 63 6c  |downtree%:. oscl|
00005ad0  69 0d 28 78 05 cb 0d 28  82 26 e7 20 65 6e 74 65  |i.(x...(.&. ente|
00005ae0  72 25 3d 34 20 80 20 21  41 63 25 3d 31 32 20 8c  |r%=4 . !Ac%=12 .|
00005af0  20 41 25 3d 39 20 8b 20  41 25 3d 30 0d 28 8c 1d  | A%=9 . A%=0.(..|
00005b00  47 25 3d 4d 58 3a 48 25  3d 4d 59 3a d6 20 6d 65  |G%=MX:H%=MY:. me|
00005b10  6e 75 73 79 73 74 65 6d  25 0d 28 96 1d e7 20 21  |nusystem%.(... !|
00005b20  41 63 25 3d 33 33 20 8c  20 f2 72 65 73 65 74 5f  |Ac%=33 . .reset_|
00005b30  61 63 74 69 6f 6e 0d 28  a0 1e 73 74 65 70 25 3d  |action.(..step%=|
00005b40  31 3a f2 75 70 64 61 74  65 3a f2 42 55 54 4f 46  |1:.update:.BUTOF|
00005b50  46 28 37 29 0d 28 aa 10  e7 20 21 41 63 25 3c 3e  |F(7).(... !Ac%<>|
00005b60  34 33 20 8c 0d 28 b4 0f  d6 20 6c 69 66 74 64 6f  |43 ..(... liftdo|
00005b70  77 6e 25 0d 28 be 12 ef  35 3a d6 20 68 65 6c 70  |wn%.(...5:. help|
00005b80  74 65 78 74 25 0d 28 c8  18 46 25 3d 73 74 65 70  |text%.(..F%=step|
00005b90  25 3a d6 20 68 65 6c 70  73 74 65 70 25 0d 28 d2  |%:. helpstep%.(.|
00005ba0  05 cd 0d 28 dc 35 e7 20  3f 28 21 61 63 74 69 6f  |...(.5. ?(!actio|
00005bb0  6e 73 61 76 65 29 3c 32  35 35 20 8c 20 21 6f 6c  |nsave)<255 . !ol|
00005bc0  64 61 63 74 69 6f 6e 25  3d 3f 28 21 61 63 74 69  |daction%=?(!acti|
00005bd0  6f 6e 73 61 76 65 29 0d  28 e6 0c 65 6e 74 65 72  |onsave).(..enter|
00005be0  25 3d 30 0d 28 f0 05 e1  0d 28 fa 04 0d 29 04 0f  |%=0.(....(...)..|
00005bf0  dd f2 69 6e 69 74 65 72  72 6f 72 0d 29 0e 10 e7  |..initerror.)...|
00005c00  20 eb 3d 31 35 20 8c 20  eb 20 30 0d 29 18 07 ef  | .=15 . . 0.)...|
00005c10  20 37 0d 29 22 1a e7 20  9f 3d 31 37 20 8c 20 f1  | 7.)".. .=17 . .|
00005c20  22 45 73 63 61 70 65 64  21 22 3a e0 0d 29 2c 15  |"Escaped!":..),.|
00005c30  f1 f6 24 3b 22 20 61 74  20 6c 69 6e 65 20 22 3b  |..$;" at line ";|
00005c40  9e 0d 29 36 13 e7 20 ac  20 74 65 73 74 69 6e 67  |..)6.. . testing|
00005c50  20 8c 20 e0 0d 29 40 0c  2a 46 58 20 31 35 2c 30  | . ..)@.*FX 15,0|
00005c60  0d 29 4a 07 41 3d a5 0d  29 54 28 f2 73 74 72 69  |.)J.A=..)T(.stri|
00005c70  6e 67 5f 74 6f 5f 62 75  66 66 65 72 28 22 45 44  |ng_to_buffer("ED|
00005c80  2e 20 22 2b c3 28 9e 29  2b bd 28 31 33 29 29 0d  |. "+.(.)+.(13)).|
00005c90  29 5e 05 e0 0d 29 68 05  e1 0d 29 72 04 0d 29 7c  |)^...)h...)r..)||
00005ca0  1d dd f2 73 74 72 69 6e  67 5f 74 6f 5f 62 75 66  |...string_to_buf|
00005cb0  66 65 72 28 74 72 61 6e  24 29 0d 29 86 05 f5 0d  |fer(tran$).)....|
00005cc0  29 90 20 ff 22 46 58 20  31 33 38 2c 30 2c 22 2b  |). ."FX 138,0,"+|
00005cd0  c3 28 97 28 c0 74 72 61  6e 24 2c 31 29 29 29 0d  |.(.(.tran$,1))).|
00005ce0  29 9a 13 74 72 61 6e 24  3d c1 74 72 61 6e 24 2c  |)..tran$=.tran$,|
00005cf0  32 29 0d 29 a4 0e fd 20  74 72 61 6e 24 3d 22 22  |2).)... tran$=""|
00005d00  0d 29 ae 05 e1 0d 29 b8  04 0d 29 c2 0d dd f2 74  |.)....)...)....t|
00005d10  69 64 79 5f 61 74 0d 29  cc 10 f2 73 65 74 73 6f  |idy_at.)...setso|
00005d20  66 74 6b 65 79 73 0d 29  d6 11 f2 75 6e 73 65 74  |ftkeys.)...unset|
00005d30  76 65 63 74 6f 72 73 0d  29 e0 05 e1 0d 29 ea 04  |vectors.)....)..|
00005d40  0d 29 f4 13 dd f2 75 6e  73 65 74 73 6f 66 74 6b  |.)....unsetsoftk|
00005d50  65 79 73 0d 29 fe 24 e3  20 52 3d 32 32 31 20 b8  |eys.).$. R=221 .|
00005d60  20 32 32 38 3a ff 22 46  58 20 22 2b c3 28 52 29  | 228:."FX "+.(R)|
00005d70  2b 22 2c 32 22 3a ed 0d  2a 08 0d 2a 46 58 20 32  |+",2":..*..*FX 2|
00005d80  31 39 2c 39 0d 2a 12 05  e1 0d 2a 1c 04 0d 2a 26  |19,9.*....*...*&|
00005d90  11 dd f2 73 65 74 73 6f  66 74 6b 65 79 73 0d 2a  |...setsoftkeys.*|
00005da0  30 24 e3 20 52 3d 32 32  31 20 b8 20 32 32 38 3a  |0$. R=221 . 228:|
00005db0  ff 22 46 58 20 22 2b c3  28 52 29 2b 22 2c 31 22  |."FX "+.(R)+",1"|
00005dc0  3a ed 0d 2a 3a 0d 2a 46  58 20 32 31 39 2c 39 0d  |:..*:.*FX 219,9.|
00005dd0  2a 44 05 e1 0d 2a 4e 04  0d 2a 58 0d dd f2 69 6e  |*D...*N..*X...in|
00005de0  69 74 5f 61 74 0d 2a 62  20 e7 20 74 65 73 74 69  |it_at.*b . testi|
00005df0  6e 67 20 8c 20 ee 20 85  20 ea 20 f2 69 6e 69 74  |ng . . . . .init|
00005e00  65 72 72 6f 72 0d 2a 6c  09 f7 8d 44 58 6a 0d 2a  |error.*l...DXj.*|
00005e10  76 36 50 4e 67 6c 61 73  73 3d 32 3a 50 4e 62 72  |v6PNglass=2:PNbr|
00005e20  75 73 68 3d 33 3a 50 4e  66 6c 6f 6f 64 3d 34 3a  |ush=3:PNflood=4:|
00005e30  50 4e 70 65 6e 63 69 6c  3d 35 3a 50 4e 73 70 72  |PNpencil=5:PNspr|
00005e40  61 79 3d 36 0d 2a 80 4d  50 4e 6e 6f 72 6d 61 6c  |ay=6.*.MPNnormal|
00005e50  3d 37 3a 50 4e 73 70 72  69 74 65 6f 70 3d 38 3a  |=7:PNspriteop=8:|
00005e60  50 4e 63 61 6c 63 75 6c  61 74 6f 72 3d 31 34 3a  |PNcalculator=14:|
00005e70  50 4e 6b 65 79 62 6f 61  72 64 3d 31 35 3a 50 4e  |PNkeyboard=15:PN|
00005e80  41 3d 31 36 3a 50 4e 73  74 6f 70 70 65 64 3d 31  |A=16:PNstopped=1|
00005e90  37 0d 2a 8a 1b 50 4e 71  75 65 73 74 69 6f 6e 3d  |7.*..PNquestion=|
00005ea0  31 38 3a 50 4e 68 61 6e  64 3d 31 39 0d 2a 94 35  |18:PNhand=19.*.5|
00005eb0  63 6f 6d 5f 67 78 31 25  3d 30 3a 63 6f 6d 5f 67  |com_gx1%=0:com_g|
00005ec0  79 31 25 3d 30 3a 63 6f  6d 5f 67 78 32 25 3d 31  |y1%=0:com_gx2%=1|
00005ed0  32 37 38 3a 63 6f 6d 5f  67 79 32 25 3d 31 30 32  |278:com_gy2%=102|
00005ee0  30 0d 2a 9e 0f f4 20 2a  46 58 20 32 32 39 2c 31  |0.*... *FX 229,1|
00005ef0  0d 2a a8 12 f2 75 6e 73  65 74 73 6f 66 74 6b 65  |.*...unsetsoftke|
00005f00  79 73 0d 2a b2 0a 4b 3d  31 30 32 34 0d 2a bc 93  |ys.*..K=1024.*..|
00005f10  de 20 42 4c 4f 57 25 20  31 2a 4b 2c 63 61 74 25  |. BLOW% 1*K,cat%|
00005f20  20 31 2a 4b 2c 53 54 4f  52 45 25 20 31 36 30 2a  | 1*K,STORE% 160*|
00005f30  4b 2c 62 72 75 73 68 25  20 38 2a 4b 2c 62 72 70  |K,brush% 8*K,brp|
00005f40  61 74 74 25 20 38 2a 4b  2c 63 79 63 6c 65 25 20  |att% 8*K,cycle% |
00005f50  31 32 38 2c 66 69 6c 65  5f 69 63 6f 6e 73 25 20  |128,file_icons% |
00005f60  33 2a 4b 2c 6c 6f 67 5f  74 61 62 6c 65 25 20 32  |3*K,log_table% 2|
00005f70  35 36 2c 6c 6f 67 5f 73  63 61 6c 65 25 20 31 30  |56,log_scale% 10|
00005f80  34 30 2c 66 6f 72 6d 6e  61 6d 65 73 25 20 31 2a  |40,formnames% 1*|
00005f90  4b 2c 66 6f 6e 74 6c 69  73 74 25 20 31 2a 4b 0d  |K,fontlist% 1*K.|
00005fa0  2a c6 8f de 20 73 6b 65  6c 25 20 31 37 36 34 2a  |*... skel% 1764*|
00005fb0  31 30 2c 73 71 72 25 20  26 35 32 30 31 2c 73 69  |10,sqr% &5201,si|
00005fc0  6e 25 20 33 36 30 2a 34  2c 74 61 6e 25 20 39 30  |n% 360*4,tan% 90|
00005fd0  2a 34 2c 6e 75 6d 62 65  72 73 25 20 26 37 32 30  |*4,numbers% &720|
00005fe0  2c 73 63 72 65 65 6e 5f  73 74 72 25 20 32 35 36  |,screen_str% 256|
00005ff0  2c 70 61 74 74 65 72 6e  5f 73 74 72 25 20 32 35  |,pattern_str% 25|
00006000  36 2c 62 72 75 73 68 5f  73 74 72 25 20 32 35 36  |6,brush_str% 256|
00006010  2c 73 70 72 69 74 65 5f  73 74 72 25 20 32 35 36  |,sprite_str% 256|
00006020  2c 66 69 6c 65 5f 73 74  72 25 20 32 35 36 0d 2a  |,file_str% 256.*|
00006030  d0 8f de 20 62 65 68 69  6e 64 25 20 32 35 36 2c  |... behind% 256,|
00006040  66 6c 61 67 73 25 20 34  2c 50 4f 25 20 26 31 34  |flags% 4,PO% &14|
00006050  44 43 2c 73 70 72 73 74  72 25 20 33 30 2c 66 6f  |DC,sprstr% 30,fo|
00006060  6e 74 73 74 72 25 20 34  35 2c 70 72 65 73 65 6e  |ntstr% 45,presen|
00006070  74 66 6f 6e 74 25 20 38  30 2c 78 67 65 74 25 20  |tfont% 80,xget% |
00006080  38 30 30 2c 79 67 65 74  25 20 38 30 30 2c 42 55  |800,yget% 800,BU|
00006090  46 46 25 20 31 2a 4b 2c  42 55 46 46 45 52 25 20  |FF% 1*K,BUFFER% |
000060a0  33 35 33 32 38 2c 66 72  65 65 74 61 62 6c 65 25  |35328,freetable%|
000060b0  20 32 35 36 2c 61 62 74  73 25 20 31 36 0d 2a da  | 256,abts% 16.*.|
000060c0  3d de 20 4c 28 36 34 30  29 2c 41 25 28 36 34 31  |=. L(640),A%(641|
000060d0  2c 31 29 2c 42 25 28 32  35 36 2c 31 29 2c 66 75  |,1),B%(256,1),fu|
000060e0  6e 63 74 69 6f 6e 25 28  34 2c 33 29 2c 66 6f 72  |nction%(4,3),for|
000060f0  6d 75 6c 61 73 24 28 31  30 29 0d 2a e4 24 ff 22  |mulas$(10).*.$."|
00006100  4c 4f 41 44 20 22 2b a4  64 69 72 2b 22 50 4f 49  |LOAD "+.dir+"POI|
00006110  4e 54 45 52 20 22 2b c3  7e 28 50 4f 25 29 0d 2a  |NTER "+.~(PO%).*|
00006120  ee 19 e7 20 6f 73 25 3d  31 20 8c 20 f2 70 6f 69  |... os%=1 . .poi|
00006130  6e 74 28 30 2c 31 29 0d  2a f8 24 73 25 3d 8e 28  |nt(0,1).*.$s%=.(|
00006140  a4 64 69 72 2b 22 63 6f  64 65 2a 22 29 3a 73 7a  |.dir+"code*"):sz|
00006150  25 3d a2 23 73 25 3a d9  23 73 25 0d 2b 02 30 de  |%=.#s%:.#s%.+.0.|
00006160  20 63 6f 64 65 25 20 73  7a 25 3a ff 22 4c 4f 41  | code% sz%:."LOA|
00006170  44 20 22 2b a4 64 69 72  2b 22 63 6f 64 65 2a 20  |D "+.dir+"code* |
00006180  22 2b c3 7e 28 63 6f 64  65 25 29 0d 2b 0c 14 70  |"+.~(code%).+..p|
00006190  6c 24 3d 22 4c 4f 41 44  20 22 2b a4 64 69 72 0d  |l$="LOAD "+.dir.|
000061a0  2b 16 1f ff 70 6c 24 2b  22 21 42 72 75 73 68 65  |+...pl$+"!Brushe|
000061b0  73 20 22 2b c3 7e 28 62  72 75 73 68 25 29 0d 2b  |s "+.~(brush%).+|
000061c0  20 21 ff 70 6c 24 2b 22  21 50 61 74 74 65 72 6e  | !.pl$+"!Pattern|
000061d0  73 20 22 2b c3 7e 28 62  72 70 61 74 74 25 29 0d  |s "+.~(brpatt%).|
000061e0  2b 2a 23 2a 43 6f 6d 5f  4f 70 65 6e 20 3c 41 74  |+*#*Com_Open <At|
000061f0  65 6c 69 65 72 24 44 69  72 3e 2e 53 70 72 69 74  |elier$Dir>.Sprit|
00006200  65 73 0d 2b 34 1b f2 69  6e 28 66 69 6c 65 5f 69  |es.+4..in(file_i|
00006210  63 6f 6e 73 25 2c 22 34  30 20 38 22 29 0d 2b 3e  |cons%,"40 8").+>|
00006220  18 f2 69 6e 28 6e 75 6d  62 65 72 73 25 2c 22 31  |..in(numbers%,"1|
00006230  32 20 38 22 29 0d 2b 48  19 f2 69 6e 28 42 55 46  |2 8").+H..in(BUF|
00006240  46 45 52 25 2c 22 33 38  34 20 39 32 22 29 0d 2b  |FER%,"384 92").+|
00006250  52 0e 2a 43 6f 6d 5f 43  6c 6f 73 65 0d 2b 5c 0d  |R.*Com_Close.+\.|
00006260  f2 63 6f 64 65 76 61 72  73 0d 2b 66 19 e7 20 6f  |.codevars.+f.. o|
00006270  73 25 3d 31 20 8c 20 f2  70 6f 69 6e 74 28 30 2c  |s%=1 . .point(0,|
00006280  30 29 0d 2b 70 19 24 73  63 72 65 65 6e 5f 73 74  |0).+p.$screen_st|
00006290  72 25 3d 22 53 63 72 65  65 6e 22 0d 2b 7a 1c 24  |r%="Screen".+z.$|
000062a0  70 61 74 74 65 72 6e 5f  73 74 72 25 3d 22 50 61  |pattern_str%="Pa|
000062b0  74 74 65 72 6e 73 22 0d  2b 84 19 24 62 72 75 73  |tterns".+..$brus|
000062c0  68 5f 73 74 72 25 3d 22  42 72 75 73 68 65 73 22  |h_str%="Brushes"|
000062d0  0d 2b 8e 1d 24 73 70 72  69 74 65 5f 73 74 72 25  |.+..$sprite_str%|
000062e0  3d 22 53 70 72 69 74 65  46 69 6c 65 22 0d 2b 98  |="SpriteFile".+.|
000062f0  19 24 73 70 72 73 74 72  25 3d 22 6e 65 77 5f 73  |.$sprstr%="new_s|
00006300  70 72 69 74 65 22 0d 2b  a2 1a 67 5f 73 70 72 69  |prite".+..g_spri|
00006310  74 65 24 3d 22 6e 65 77  5f 73 70 72 69 74 65 22  |te$="new_sprite"|
00006320  0d 2b ac 0f 63 79 63 6c  65 25 21 30 3d 31 36 0d  |.+..cycle%!0=16.|
00006330  2b b6 0d e3 20 52 3d 30  20 b8 20 33 0d 2b c0 08  |+... R=0 . 3.+..|
00006340  f3 20 6f 25 0d 2b ca 0e  e3 20 52 31 3d 30 20 b8  |. o%.+... R1=0 .|
00006350  20 33 0d 2b d4 1f 21 28  63 79 63 6c 65 25 2b 52  | 3.+..!(cycle%+R|
00006360  2a 31 36 2b 52 31 2a 34  2b 34 29 3d 6f 25 2b 52  |*16+R1*4+4)=o%+R|
00006370  31 0d 2b de 07 ed 3a ed  0d 2b e8 22 e3 20 52 3d  |1.+...:..+.". R=|
00006380  30 20 b8 20 32 35 35 3a  3f 28 62 65 68 69 6e 64  |0 . 255:?(behind|
00006390  25 2b 52 29 3d 32 35 35  3a ed 0d 2b f2 55 e3 20  |%+R)=255:..+.U. |
000063a0  52 3d 31 20 b8 20 32 35  36 3a 3f 28 6c 6f 67 5f  |R=1 . 256:?(log_|
000063b0  74 61 62 6c 65 25 2b 52  2d 31 29 3d 32 30 2b 28  |table%+R-1)=20+(|
000063c0  52 5e 32 29 2f 33 30 30  3a ed 3a e3 20 52 3d 30  |R^2)/300:.:. R=0|
000063d0  20 b8 20 35 32 34 38 3a  21 28 73 71 72 25 2b 52  | . 5248:!(sqr%+R|
000063e0  2a 34 29 3d b6 28 52 2a  31 30 32 34 29 3a ed 0d  |*4)=.(R*1024):..|
000063f0  2b fc 29 e3 20 52 3d 30  20 b8 20 33 35 39 3a 21  |+.). R=0 . 359:!|
00006400  28 73 69 6e 25 2b 52 2a  34 29 3d b5 b2 28 52 29  |(sin%+R*4)=..(R)|
00006410  2a 36 35 35 33 36 3a ed  0d 2c 06 28 e3 20 52 3d  |*65536:..,.(. R=|
00006420  30 20 b8 20 38 39 3a 21  28 74 61 6e 25 2b 52 2a  |0 . 89:!(tan%+R*|
00006430  34 29 3d b7 b2 28 52 29  2a 36 35 35 33 36 3a ed  |4)=..(R)*65536:.|
00006440  0d 2c 10 12 dc 20 30 2c  34 34 2c 32 30 38 2c 32  |.,... 0,44,208,2|
00006450  35 32 0d 2c 1a 25 dc 20  34 2c 33 36 34 2c 34 30  |52.,.%. 4,364,40|
00006460  38 2c 35 38 34 2c 32 32  34 2c 35 38 34 2c 37 32  |8,584,224,584,72|
00006470  2c 34 35 36 2c 37 32 0d  2c 24 0d f3 20 6e 75 6d  |,456,72.,$.. num|
00006480  6c 69 73 74 0d 2c 2e 16  21 62 6f 6c 70 6f 69 6e  |list.,..!bolpoin|
00006490  74 25 3d 6e 75 6d 6c 69  73 74 0d 2c 38 18 e3 20  |t%=numlist.,8.. |
000064a0  52 3d 30 20 b8 20 21 62  6f 6c 70 6f 69 6e 74 25  |R=0 . !bolpoint%|
000064b0  2d 31 0d 2c 42 09 f3 20  58 2c 59 0d 2c 4c 23 21  |-1.,B.. X,Y.,L#!|
000064c0  28 78 67 65 74 25 2b 52  2a 34 29 3d 58 3a 21 28  |(xget%+R*4)=X:!(|
000064d0  79 67 65 74 25 2b 52 2a  34 29 3d 59 2b 34 0d 2c  |yget%+R*4)=Y+4.,|
000064e0  56 05 ed 0d 2c 60 11 3f  28 66 6c 61 67 73 25 29  |V...,`.?(flags%)|
000064f0  3d 32 35 35 0d 2c 6a 13  3f 28 66 6c 61 67 73 25  |=255.,j.?(flags%|
00006500  2b 31 29 3d 32 35 35 0d  2c 74 13 3f 28 66 6c 61  |+1)=255.,t.?(fla|
00006510  67 73 25 2b 32 29 3d 32  35 35 0d 2c 7e 13 3f 28  |gs%+2)=255.,~.?(|
00006520  66 6c 61 67 73 25 2b 33  29 3d 32 35 35 0d 2c 88  |flags%+3)=255.,.|
00006530  13 21 73 70 72 73 74 72  3d 73 70 72 73 74 72 25  |.!sprstr=sprstr%|
00006540  0d 2c 92 13 21 62 72 70  61 74 74 3d 62 72 70 61  |.,..!brpatt=brpa|
00006550  74 74 25 0d 2c 9c 11 21  66 6c 61 67 73 3d 66 6c  |tt%.,..!flags=fl|
00006560  61 67 73 25 0d 2c a6 0d  21 63 61 74 3d 63 61 74  |ags%.,..!cat=cat|
00006570  25 0d 2c b0 13 21 62 65  68 69 6e 64 3d 62 65 68  |%.,..!behind=beh|
00006580  69 6e 64 25 0d 2c ba 17  21 62 72 75 73 68 73 68  |ind%.,..!brushsh|
00006590  61 70 65 73 3d 62 72 75  73 68 25 0d 2c c4 0f 21  |apes=brush%.,..!|
000065a0  42 55 46 46 3d 42 55 46  46 25 0d 2c ce 0d 21 46  |BUFF=BUFF%.,..!F|
000065b0  4c 4f 42 3d 50 4f 25 0d  2c d8 0f 21 62 6f 6c 78  |LOB=PO%.,..!bolx|
000065c0  3d 78 67 65 74 25 0d 2c  e2 0f 21 62 6f 6c 79 3d  |=xget%.,..!boly=|
000065d0  79 67 65 74 25 0d 2c ec  15 21 66 6f 6e 74 73 74  |yget%.,..!fontst|
000065e0  72 3d 66 6f 6e 74 73 74  72 25 0d 2c f6 1d 21 70  |r=fontstr%.,..!p|
000065f0  72 65 73 65 6e 74 66 6f  6e 74 3d 70 72 65 73 65  |resentfont=prese|
00006600  6e 74 66 6f 6e 74 25 0d  2d 00 11 21 53 54 4f 52  |ntfont%.-..!STOR|
00006610  45 3d 53 54 4f 52 45 25  0d 2d 0a 19 21 66 72 65  |E=STORE%.-..!fre|
00006620  65 74 61 62 6c 65 3d 66  72 65 65 74 61 62 6c 65  |etable=freetable|
00006630  25 0d 2d 14 10 21 70 75  74 3d 42 55 46 46 45 52  |%.-..!put=BUFFER|
00006640  25 0d 2d 1e 11 21 63 79  63 6c 65 3d 63 79 63 6c  |%.-..!cycle=cycl|
00006650  65 25 0d 2d 28 1b 21 73  63 72 65 65 6e 5f 73 74  |e%.-(.!screen_st|
00006660  72 3d 73 63 72 65 65 6e  5f 73 74 72 25 0d 2d 32  |r=screen_str%.-2|
00006670  1d 21 70 61 74 74 65 72  6e 5f 73 74 72 3d 70 61  |.!pattern_str=pa|
00006680  74 74 65 72 6e 5f 73 74  72 25 0d 2d 3c 19 21 62  |ttern_str%.-<.!b|
00006690  72 75 73 68 5f 73 74 72  3d 62 72 75 73 68 5f 73  |rush_str=brush_s|
000066a0  74 72 25 0d 2d 46 1b 21  73 70 72 69 74 65 5f 73  |tr%.-F.!sprite_s|
000066b0  74 72 3d 73 70 72 69 74  65 5f 73 74 72 25 0d 2d  |tr=sprite_str%.-|
000066c0  50 1b 21 66 69 6c 65 5f  69 63 6f 6e 73 3d 66 69  |P.!file_icons=fi|
000066d0  6c 65 5f 69 63 6f 6e 73  25 0d 2d 5a 19 21 6c 6f  |le_icons%.-Z.!lo|
000066e0  67 5f 74 61 62 6c 65 3d  6c 6f 67 5f 74 61 62 6c  |g_table=log_tabl|
000066f0  65 25 0d 2d 64 19 21 6c  6f 67 5f 73 63 61 6c 65  |e%.-d.!log_scale|
00006700  3d 6c 6f 67 5f 73 63 61  6c 65 25 0d 2d 6e 15 21  |=log_scale%.-n.!|
00006710  6e 75 6d 62 65 72 73 3d  6e 75 6d 62 65 72 73 25  |numbers=numbers%|
00006720  0d 2d 78 0d 21 73 71 72  3d 73 71 72 25 0d 2d 82  |.-x.!sqr=sqr%.-.|
00006730  0d 21 73 69 6e 3d 73 69  6e 25 0d 2d 8c 0d 21 74  |.!sin=sin%.-..!t|
00006740  61 6e 3d 74 61 6e 25 0d  2d 96 17 21 66 69 6c 65  |an=tan%.-..!file|
00006750  5f 73 74 72 3d 66 69 6c  65 5f 73 74 72 25 0d 2d  |_str=file_str%.-|
00006760  a0 19 21 66 6f 72 6d 6e  61 6d 65 73 3d 66 6f 72  |..!formnames=for|
00006770  6d 6e 61 6d 65 73 25 0d  2d aa 0f 21 73 6b 65 6c  |mnames%.-..!skel|
00006780  3d 73 6b 65 6c 25 0d 2d  b4 17 21 66 6f 6e 74 6c  |=skel%.-..!fontl|
00006790  69 73 74 3d 66 6f 6e 74  6c 69 73 74 25 0d 2d be  |ist=fontlist%.-.|
000067a0  07 ea 20 85 0d 2d c8 38  ee 20 85 20 ea 20 24 66  |.. ..-.8. . . $f|
000067b0  6f 6e 74 6c 69 73 74 25  3d 22 46 6f 6e 74 20 44  |ontlist%="Font D|
000067c0  69 73 6b 20 4e 6f 74 20  50 72 65 73 65 6e 74 22  |isk Not Present"|
000067d0  2b bd 28 30 29 3a e5 20  8d 64 5c 6d 0d 2d d2 15  |+.(0):. .d\m.-..|
000067e0  d6 20 69 6e 69 74 69 61  6c 69 73 61 74 69 6f 6e  |. initialisation|
000067f0  25 0d 2d dc 07 f7 20 85  0d 2d e6 10 f2 63 68 65  |%.-... ..-...che|
00006800  63 6b 64 75 6d 70 65 72  0d 2d f0 17 78 72 73 74  |ckdumper.-..xrst|
00006810  25 3d 36 34 30 3a 79 72  73 74 25 3d 35 31 32 0d  |%=640:yrst%=512.|
00006820  2d fa 1b 78 30 25 3d 30  3a 79 30 25 3d 30 3a 78  |-..x0%=0:y0%=0:x|
00006830  31 25 3d 30 3a 79 31 25  3d 30 0d 2e 04 1b 78 32  |1%=0:y1%=0....x2|
00006840  25 3d 30 3a 79 32 25 3d  30 3a 78 33 25 3d 30 3a  |%=0:y2%=0:x3%=0:|
00006850  79 33 25 3d 30 0d 2e 0e  1b 78 34 25 3d 30 3a 79  |y3%=0....x4%=0:y|
00006860  34 25 3d 30 3a 78 35 25  3d 30 3a 79 35 25 3d 30  |4%=0:x5%=0:y5%=0|
00006870  0d 2e 18 20 61 63 74 69  6f 6e 66 6c 61 67 73 25  |... actionflags%|
00006880  3d 38 3a 61 63 74 69 6f  6e 73 74 65 70 25 3d 33  |=8:actionstep%=3|
00006890  0d 2e 22 1a 78 73 25 3d  30 3a 79 73 25 3d 30 3a  |..".xs%=0:ys%=0:|
000068a0  6f 6c 64 73 74 65 70 25  3d 30 0d 2e 2c 1a 73 74  |oldstep%=0..,.st|
000068b0  65 70 25 3d 31 3a 76 65  63 74 6f 72 73 5f 73 65  |ep%=1:vectors_se|
000068c0  74 25 3d a3 0d 2e 36 13  77 65 64 67 65 25 3d 30  |t%=...6.wedge%=0|
000068d0  3a 63 6f 6c 25 3d 30 0d  2e 40 1b 70 73 69 7a 65  |:col%=0..@.psize|
000068e0  78 25 3d 32 39 32 3a 70  73 69 7a 65 79 25 3d 33  |x%=292:psizey%=3|
000068f0  30 39 0d 2e 4a 19 78 70  73 69 7a 65 25 3d 2d 31  |09..J.xpsize%=-1|
00006900  3a 79 70 73 69 7a 65 25  3d 2d 31 0d 2e 54 0f 6d  |:ypsize%=-1..T.m|
00006910  67 73 3d a3 3a 6d 63 73  3d a3 0d 2e 5e 19 6d 6f  |gs=.:mcs=...^.mo|
00006920  75 73 65 67 72 69 64 3d  33 32 3a 73 65 6c 65 63  |usegrid=32:selec|
00006930  74 3d b9 0d 2e 68 11 50  25 3d 66 6f 72 6d 6e 61  |t=...h.P%=formna|
00006940  6d 65 73 25 0d 2e 72 0a  5b 4f 50 54 20 30 0d 2e  |mes%..r.[OPT 0..|
00006950  7c 0a 45 51 55 42 20 31  0d 2e 86 0b 45 51 55 42  ||.EQUB 1....EQUB|
00006960  20 31 30 0d 2e 90 15 45  51 55 53 20 22 44 65 66  | 10....EQUS "Def|
00006970  69 6e 65 61 62 6c 65 22  0d 2e 9a 05 5d 0d 2e a4  |ineable"....]...|
00006980  19 66 6f 72 6d 75 6c 61  24 3d 22 53 49 4e 28 59  |.formula$="SIN(Y|
00006990  52 29 2a 35 30 22 0d 2e  ae 24 64 75 6d 6d 79 3d  |R)*50"...$dummy=|
000069a0  a4 62 75 69 6c 64 5f 66  6f 72 6d 75 6c 61 28 66  |.build_formula(f|
000069b0  6f 72 6d 75 6c 61 24 2c  30 29 0d 2e b8 0f 62 6f  |ormula$,0)....bo|
000069c0  74 72 61 64 24 3d 22 31  22 0d 2e c2 28 61 74 65  |trad$="1"...(ate|
000069d0  78 74 24 3d 22 41 74 65  6c 69 65 72 20 28 43 29  |xt$="Atelier (C)|
000069e0  20 53 69 6d 6f 6e 20 43  6c 61 79 20 31 39 38 39  | Simon Clay 1989|
000069f0  22 0d 2e cc 11 f2 72 65  6d 6f 76 65 6b 65 79 6d  |".....removekeym|
00006a00  6f 64 0d 2e d6 14 66 75  6e 63 70 72 69 6e 74 24  |od....funcprint$|
00006a10  3d 22 42 59 45 22 0d 2e  e0 0c 65 76 61 6c 24 3d  |="BYE"....eval$=|
00006a20  22 22 0d 2e ea 12 21 6f  6c 64 61 63 74 69 6f 6e  |""....!oldaction|
00006a30  25 3d 36 30 0d 2e f4 05  e1 0d 2e fe 04 0d 2f 08  |%=60........../.|
00006a40  04 0d 2f 12 0f dd f2 69  6e 28 62 25 2c 73 24 29  |../....in(b%,s$)|
00006a50  0d 2f 1c 22 ff 22 43 6f  6d 5f 53 70 72 69 74 65  |./."."Com_Sprite|
00006a60  73 20 24 20 22 2b c3 28  62 25 29 2b 22 20 22 2b  |s $ "+.(b%)+" "+|
00006a70  73 24 0d 2f 26 05 e1 0d  2f 30 04 0d 2f 3a 12 dd  |s$./&.../0../:..|
00006a80  f2 72 65 6d 6f 76 65 6b  65 79 6d 6f 64 0d 2f 44  |.removekeymod./D|
00006a90  07 ea 20 85 0d 2f 4e 0b  ee 20 85 20 ea 20 e1 0d  |.. ../N.. . . ..|
00006aa0  2f 58 21 2a 55 6e 70 6c  75 67 20 49 6e 74 65 72  |/X!*Unplug Inter|
00006ab0  6e 61 74 69 6f 6e 61 6c  4b 65 79 62 6f 61 72 64  |nationalKeyboard|
00006ac0  0d 2f 62 05 e1 0d 2f 6c  04 0d 2f 76 15 dd f2 73  |./b.../l../v...s|
00006ad0  65 74 5f 61 62 6f 72 74  5f 74 72 61 70 73 0d 2f  |et_abort_traps./|
00006ae0  80 0f 61 62 74 73 25 21  30 3d 21 26 43 0d 2f 8a  |..abts%!0=!&C./.|
00006af0  10 61 62 74 73 25 21 34  3d 21 26 31 30 0d 2f 94  |.abts%!4=!&10./.|
00006b00  10 61 62 74 73 25 21 38  3d 21 26 31 34 0d 2f 9e  |.abts%!8=!&14./.|
00006b10  14 e3 20 50 41 53 53 3d  30 20 b8 20 32 20 88 20  |.. PASS=0 . 2 . |
00006b20  32 0d 2f a8 09 50 25 3d  26 43 0d 2f b2 0d 5b 4f  |2./..P%=&C./..[O|
00006b30  50 54 20 50 41 53 53 0d  2f bc 3c 42 20 61 62 74  |PT PASS./.<B abt|
00006b40  31 25 20 20 20 20 20 20  20 3b 73 65 74 73 20 61  |1%       ;sets a|
00006b50  62 6f 72 74 20 6f 6e 20  69 6e 73 74 75 63 74 69  |bort on instucti|
00006b60  6f 6e 20 66 65 74 63 68  20 65 72 72 6f 72 20 74  |on fetch error t|
00006b70  72 61 70 0d 2f c6 39 42  20 61 62 74 32 25 20 20  |rap./.9B abt2%  |
00006b80  20 20 20 20 20 3b 73 65  74 73 20 61 62 6f 72 74  |     ;sets abort|
00006b90  20 6f 6e 20 64 61 74 61  20 74 72 61 6e 73 66 65  | on data transfe|
00006ba0  72 20 65 72 72 6f 72 20  74 72 61 70 0d 2f d0 34  |r error trap./.4|
00006bb0  42 20 61 62 74 33 25 20  20 20 20 20 20 20 3b 73  |B abt3%       ;s|
00006bc0  65 74 73 20 61 64 64 72  65 73 73 20 65 78 63 65  |ets address exce|
00006bd0  70 74 69 6f 6e 20 65 72  72 6f 72 20 74 72 61 70  |ption error trap|
00006be0  0d 2f da 06 5d ed 0d 2f  e4 05 e1 0d 2f ee 04 0d  |./..]../..../...|
00006bf0  2f f8 17 dd f2 75 6e 73  65 74 5f 61 62 6f 72 74  |/....unset_abort|
00006c00  5f 74 72 61 70 73 0d 30  02 10 21 26 30 43 3d 61  |_traps.0..!&0C=a|
00006c10  62 74 73 25 21 30 0d 30  0c 10 21 26 31 30 3d 61  |bts%!0.0..!&10=a|
00006c20  62 74 73 25 21 34 0d 30  16 10 21 26 31 34 3d 61  |bts%!4.0..!&14=a|
00006c30  62 74 73 25 21 38 0d 30  20 05 e1 0d 30 2a 04 0d  |bts%!8.0 ...0*..|
00006c40  30 34 0e dd f2 63 6f 64  65 76 61 72 73 0d 30 3e  |04...codevars.0>|
00006c50  04 0d 30 48 1d 76 61 72  69 61 62 6c 65 6c 6f 63  |..0H.variableloc|
00006c60  61 74 65 25 3d 63 6f 64  65 25 2b 34 2a 31 0d 30  |ate%=code%+4*1.0|
00006c70  52 16 63 6f 6d 5f 70 75  74 25 3d 63 6f 64 65 25  |R.com_put%=code%|
00006c80  2b 34 2a 32 0d 30 5c 1b  6c 6f 63 61 74 65 73 70  |+4*2.0\.locatesp|
00006c90  72 69 74 65 25 3d 63 6f  64 65 25 2b 34 2a 33 0d  |rite%=code%+4*3.|
00006ca0  30 66 13 68 65 6c 70 25  3d 63 6f 64 65 25 2b 34  |0f.help%=code%+4|
00006cb0  2a 34 0d 30 70 15 68 65  6c 70 6f 6e 25 3d 63 6f  |*4.0p.helpon%=co|
00006cc0  64 65 25 2b 34 2a 35 0d  30 7a 16 68 65 6c 70 6f  |de%+4*5.0z.helpo|
00006cd0  66 66 25 3d 63 6f 64 65  25 2b 34 2a 36 0d 30 84  |ff%=code%+4*6.0.|
00006ce0  17 68 65 6c 70 73 74 65  70 25 3d 63 6f 64 65 25  |.helpstep%=code%|
00006cf0  2b 34 2a 37 0d 30 8e 17  68 65 6c 70 74 65 78 74  |+4*7.0..helptext|
00006d00  25 3d 63 6f 64 65 25 2b  34 2a 38 0d 30 98 15 6c  |%=code%+4*8.0..l|
00006d10  69 66 74 75 70 25 3d 63  6f 64 65 25 2b 34 2a 39  |iftup%=code%+4*9|
00006d20  0d 30 a2 18 6c 69 66 74  64 6f 77 6e 25 3d 63 6f  |.0..liftdown%=co|
00006d30  64 65 25 2b 34 2a 31 30  0d 30 ac 16 63 6f 6c 6f  |de%+4*10.0..colo|
00006d40  75 72 25 3d 63 6f 64 65  25 2b 34 2a 31 31 0d 30  |ur%=code%+4*11.0|
00006d50  b6 1b 75 6e 64 6f 72 65  73 74 6f 72 65 25 3d 63  |..undorestore%=c|
00006d60  6f 64 65 25 2b 34 2a 31  32 0d 30 c0 18 75 6e 64  |ode%+4*12.0..und|
00006d70  6f 73 61 76 65 25 3d 63  6f 64 65 25 2b 34 2a 31  |osave%=code%+4*1|
00006d80  33 0d 30 ca 18 64 72 61  77 6d 65 6e 75 25 3d 63  |3.0..drawmenu%=c|
00006d90  6f 64 65 25 2b 34 2a 31  34 0d 30 d4 1a 6d 65 6e  |ode%+4*14.0..men|
00006da0  75 73 79 73 74 65 6d 25  3d 63 6f 64 65 25 2b 34  |usystem%=code%+4|
00006db0  2a 31 35 0d 30 de 1b 6d  6f 75 73 65 63 6f 6c 6f  |*15.0..mousecolo|
00006dc0  75 72 25 3d 63 6f 64 65  25 2b 34 2a 31 36 0d 30  |ur%=code%+4*16.0|
00006dd0  e8 1d 73 63 72 65 65 6e  5f 73 65 6c 65 63 74 25  |..screen_select%|
00006de0  3d 63 6f 64 65 25 2b 34  2a 31 37 0d 30 f2 1a 73  |=code%+4*17.0..s|
00006df0  70 72 69 74 65 69 6e 69  74 25 3d 63 6f 64 65 25  |priteinit%=code%|
00006e00  2b 34 2a 31 38 0d 30 fc  17 6d 61 67 6e 69 66 79  |+4*18.0..magnify|
00006e10  25 3d 63 6f 64 65 25 2b  34 2a 31 39 0d 31 06 16  |%=code%+4*19.1..|
00006e20  75 70 74 72 65 65 25 3d  63 6f 64 65 25 2b 34 2a  |uptree%=code%+4*|
00006e30  32 30 0d 31 10 1d 70 75  74 62 61 63 6b 67 72 6f  |20.1..putbackgro|
00006e40  75 6e 64 25 3d 63 6f 64  65 25 2b 34 2a 32 31 0d  |und%=code%+4*21.|
00006e50  31 1a 17 63 6f 6d 5f 67  65 74 25 3d 63 6f 64 65  |1..com_get%=code|
00006e60  25 2b 34 2a 32 32 0d 31  24 22 70 75 74 73 63 72  |%+4*22.1$"putscr|
00006e70  65 65 6e 72 65 63 74 61  6e 67 6c 65 25 3d 63 6f  |eenrectangle%=co|
00006e80  64 65 25 2b 34 2a 32 33  0d 31 2e 18 62 72 75 73  |de%+4*23.1..brus|
00006e90  68 65 6f 72 25 3d 63 6f  64 65 25 2b 34 2a 32 34  |heor%=code%+4*24|
00006ea0  0d 31 38 19 62 72 75 73  68 64 72 61 77 25 3d 63  |.18.brushdraw%=c|
00006eb0  6f 64 65 25 2b 34 2a 32  35 0d 31 42 19 62 72 75  |ode%+4*25.1B.bru|
00006ec0  73 68 75 6e 64 6f 25 3d  63 6f 64 65 25 2b 34 2a  |shundo%=code%+4*|
00006ed0  32 36 0d 31 4c 19 73 70  72 69 74 65 70 69 78 25  |26.1L.spritepix%|
00006ee0  3d 63 6f 64 65 25 2b 34  2a 32 37 0d 31 56 18 62  |=code%+4*27.1V.b|
00006ef0  72 75 73 68 67 65 74 25  3d 63 6f 64 65 25 2b 34  |rushget%=code%+4|
00006f00  2a 32 38 0d 31 60 18 73  68 61 70 65 67 65 74 25  |*28.1`.shapeget%|
00006f10  3d 63 6f 64 65 25 2b 34  2a 32 39 0d 31 6a 1e 73  |=code%+4*29.1j.s|
00006f20  70 72 69 74 65 70 75 74  65 72 72 6f 72 25 3d 63  |priteputerror%=c|
00006f30  6f 64 65 25 2b 34 2a 33  30 0d 31 74 23 67 65 74  |ode%+4*30.1t#get|
00006f40  73 70 72 69 74 65 66 72  6f 6d 73 63 72 65 65 6e  |spritefromscreen|
00006f50  25 3d 63 6f 64 65 25 2b  34 2a 33 31 0d 31 7e 1a  |%=code%+4*31.1~.|
00006f60  70 72 69 6f 72 69 74 79  69 6e 25 3d 63 6f 64 65  |priorityin%=code|
00006f70  25 2b 34 2a 33 32 0d 31  88 18 75 6e 64 6f 63 68  |%+4*32.1..undoch|
00006f80  61 72 25 3d 63 6f 64 65  25 2b 34 2a 33 33 0d 31  |ar%=code%+4*33.1|
00006f90  92 17 75 6e 64 6f 62 6f  78 25 3d 63 6f 64 65 25  |..undobox%=code%|
00006fa0  2b 34 2a 33 34 0d 31 9c  1a 73 63 61 6e 73 63 72  |+4*34.1..scanscr|
00006fb0  65 65 6e 25 3d 63 6f 64  65 25 2b 34 2a 33 35 0d  |een%=code%+4*35.|
00006fc0  31 a6 1a 63 6f 6c 6f 75  72 62 79 74 65 25 3d 63  |1..colourbyte%=c|
00006fd0  6f 64 65 25 2b 34 2a 33  36 0d 31 b0 1e 63 61 6c  |ode%+4*36.1..cal|
00006fe0  63 5f 69 6e 74 65 6e 73  69 74 79 25 3d 63 6f 64  |c_intensity%=cod|
00006ff0  65 25 2b 34 2a 33 37 0d  31 ba 1b 73 70 6c 6f 64  |e%+4*37.1..splod|
00007000  67 65 72 65 61 64 25 3d  63 6f 64 65 25 2b 34 2a  |geread%=code%+4*|
00007010  33 38 0d 31 c4 17 73 65  74 62 6f 72 64 25 3d 63  |38.1..setbord%=c|
00007020  6f 64 65 25 2b 34 2a 33  39 0d 31 ce 14 61 62 74  |ode%+4*39.1..abt|
00007030  31 25 3d 63 6f 64 65 25  2b 34 2a 34 30 0d 31 d8  |1%=code%+4*40.1.|
00007040  18 46 49 4e 44 4d 45 4e  55 25 3d 63 6f 64 65 25  |.FINDMENU%=code%|
00007050  2b 34 2a 34 31 0d 31 e2  18 53 4b 49 50 57 4f 52  |+4*41.1..SKIPWOR|
00007060  44 25 3d 63 6f 64 65 25  2b 34 2a 34 32 0d 31 ec  |D%=code%+4*42.1.|
00007070  18 64 72 61 77 77 6f 72  64 25 3d 63 6f 64 65 25  |.drawword%=code%|
00007080  2b 34 2a 34 33 0d 31 f6  14 61 62 74 32 25 3d 63  |+4*43.1..abt2%=c|
00007090  6f 64 65 25 2b 34 2a 34  34 0d 32 00 14 61 62 74  |ode%+4*44.2..abt|
000070a0  33 25 3d 63 6f 64 65 25  2b 34 2a 34 35 0d 32 0a  |3%=code%+4*45.2.|
000070b0  1a 43 4f 4c 61 76 65 72  61 67 65 25 3d 63 6f 64  |.COLaverage%=cod|
000070c0  65 25 2b 34 2a 34 36 0d  32 14 17 43 4f 4c 67 63  |e%+4*46.2..COLgc|
000070d0  6f 6c 25 3d 63 6f 64 65  25 2b 34 2a 34 37 0d 32  |ol%=code%+4*47.2|
000070e0  1e 22 43 4f 4c 6d 6f 64  65 31 35 5f 31 33 72 65  |."COLmode15_13re|
000070f0  73 69 7a 65 25 3d 63 6f  64 65 25 2b 34 2a 34 38  |size%=code%+4*48|
00007100  0d 32 28 19 73 68 6f 77  5f 74 68 72 75 25 3d 63  |.2(.show_thru%=c|
00007110  6f 64 65 25 2b 34 2a 34  39 0d 32 32 1b 73 77 61  |ode%+4*49.22.swa|
00007120  70 5f 70 69 78 65 6c 73  25 3d 63 6f 64 65 25 2b  |p_pixels%=code%+|
00007130  34 2a 35 30 0d 32 3c 23  43 4f 4c 73 6d 6f 6f 74  |4*50.2<#COLsmoot|
00007140  68 5f 72 65 63 74 61 6e  67 6c 65 25 3d 63 6f 64  |h_rectangle%=cod|
00007150  65 25 2b 34 2a 35 31 0d  32 46 1d 63 6f 6d 70 61  |e%+4*51.2F.compa|
00007160  63 74 65 64 73 61 76 65  25 3d 63 6f 64 65 25 2b  |ctedsave%=code%+|
00007170  34 2a 35 32 0d 32 50 1a  73 63 72 65 65 6e 73 61  |4*52.2P.screensa|
00007180  76 65 25 3d 63 6f 64 65  25 2b 34 2a 35 33 0d 32  |ve%=code%+4*53.2|
00007190  5a 1e 62 69 74 5f 6d 61  70 5f 73 63 61 6e 5f 41  |Z.bit_map_scan_A|
000071a0  25 3d 63 6f 64 65 25 2b  34 2a 35 34 0d 32 64 1e  |%=code%+4*54.2d.|
000071b0  62 69 74 5f 6d 61 70 5f  73 63 61 6e 5f 42 25 3d  |bit_map_scan_B%=|
000071c0  63 6f 64 65 25 2b 34 2a  35 35 0d 32 6e 1f 62 69  |code%+4*55.2n.bi|
000071d0  74 5f 6d 61 70 5f 70 61  74 74 65 72 6e 25 3d 63  |t_map_pattern%=c|
000071e0  6f 64 65 25 2b 34 2a 35  36 0d 32 78 1d 76 65 72  |ode%+4*56.2x.ver|
000071f0  74 69 63 61 6c 5f 66 69  6c 6c 25 3d 63 6f 64 65  |tical_fill%=code|
00007200  25 2b 34 2a 35 37 0d 32  82 19 63 6f 70 79 5f 66  |%+4*57.2..copy_f|
00007210  69 6c 6c 25 3d 63 6f 64  65 25 2b 34 2a 35 38 0d  |ill%=code%+4*58.|
00007220  32 8c 1b 63 61 6c 63 5f  72 61 64 69 75 73 25 3d  |2..calc_radius%=|
00007230  63 6f 64 65 25 2b 34 2a  35 39 0d 32 96 19 66 72  |code%+4*59.2..fr|
00007240  61 6d 65 64 72 61 77 25  3d 63 6f 64 65 25 2b 34  |amedraw%=code%+4|
00007250  2a 36 30 0d 32 a0 1b 73  70 69 6e 5f 62 6f 74 74  |*60.2..spin_bott|
00007260  6c 65 25 3d 63 6f 64 65  25 2b 34 2a 36 31 0d 32  |le%=code%+4*61.2|
00007270  aa 1f 74 72 61 6e 73 6c  61 74 65 5f 70 6f 69 6e  |..translate_poin|
00007280  74 25 3d 63 6f 64 65 25  2b 34 2a 36 32 0d 32 b4  |t%=code%+4*62.2.|
00007290  23 61 6e 74 69 5f 61 6c  69 61 73 65 64 5f 73 71  |#anti_aliased_sq|
000072a0  75 61 73 68 25 3d 63 6f  64 65 25 2b 34 2a 36 33  |uash%=code%+4*63|
000072b0  0d 32 be 1a 73 63 72 65  65 6e 6c 6f 61 64 25 3d  |.2..screenload%=|
000072c0  63 6f 64 65 25 2b 34 2a  36 34 0d 32 c8 1e 69 6e  |code%+4*64.2..in|
000072d0  69 74 69 61 6c 69 73 61  74 69 6f 6e 25 3d 63 6f  |itialisation%=co|
000072e0  64 65 25 2b 34 2a 36 35  0d 32 d2 1d 66 6f 72 6d  |de%+4*65.2..form|
000072f0  66 72 61 6d 65 64 72 61  77 25 3d 63 6f 64 65 25  |framedraw%=code%|
00007300  2b 34 2a 36 36 0d 32 dc  1e 66 6f 72 6d 5f 74 72  |+4*66.2..form_tr|
00007310  61 6e 73 6c 61 74 65 25  3d 63 6f 64 65 25 2b 34  |anslate%=code%+4|
00007320  2a 36 37 0d 32 e6 1b 63  6f 6e 76 65 72 74 6d 6f  |*67.2..convertmo|
00007330  64 65 25 3d 63 6f 64 65  25 2b 34 2a 36 38 0d 32  |de%=code%+4*68.2|
00007340  f0 1a 62 79 74 65 63 6f  6c 6f 75 72 25 3d 63 6f  |..bytecolour%=co|
00007350  64 65 25 2b 34 2a 36 39  0d 32 fa 18 64 6f 77 6e  |de%+4*69.2..down|
00007360  74 72 65 65 25 3d 63 6f  64 65 25 2b 34 2a 37 30  |tree%=code%+4*70|
00007370  0d 33 04 1c 63 68 65 63  6b 73 70 72 69 74 65 73  |.3..checksprites|
00007380  25 3d 63 6f 64 65 25 2b  34 2a 37 31 0d 33 0e 1d  |%=code%+4*71.3..|
00007390  63 6f 6d 70 61 63 74 65  64 6c 6f 61 64 25 3d 63  |compactedload%=c|
000073a0  6f 64 65 25 2b 34 2a 37  32 0d 33 18 19 73 61 76  |ode%+4*72.3..sav|
000073b0  65 63 68 65 63 6b 25 3d  63 6f 64 65 25 2b 34 2a  |echeck%=code%+4*|
000073c0  37 33 0d 33 22 1c 66 6f  6e 74 6c 69 73 74 69 6e  |73.3".fontlistin|
000073d0  69 74 25 3d 63 6f 64 65  25 2b 34 2a 37 34 0d 33  |it%=code%+4*74.3|
000073e0  2c 19 64 75 66 66 5f 63  61 6c 6c 25 3d 63 6f 64  |,.duff_call%=cod|
000073f0  65 25 2b 34 2a 37 35 0d  33 36 1e 64 72 61 77 5f  |e%+4*75.36.draw_|
00007400  65 72 72 6f 72 5f 62 6f  78 25 3d 63 6f 64 65 25  |error_box%=code%|
00007410  2b 34 2a 37 36 0d 33 40  1f 63 6f 6d 5f 75 70 64  |+4*76.3@.com_upd|
00007420  61 74 65 5f 69 6e 66 6f  25 3d 63 6f 64 65 25 2b  |ate_info%=code%+|
00007430  34 2a 37 37 0d 33 4a 04  0d 33 54 14 d6 76 61 72  |4*77.3J..3T..var|
00007440  69 61 62 6c 65 6c 6f 63  61 74 65 25 0d 33 5e 04  |iablelocate%.3^.|
00007450  0d 33 68 0c 63 3d 21 63  6f 64 65 25 0d 33 72 04  |.3h.c=!code%.3r.|
00007460  0d 33 7c 0d 41 63 25 3d  63 2b 34 2a 30 0d 33 86  |.3|.Ac%=c+4*0.3.|
00007470  14 70 72 69 6e 74 6d 65  6e 75 25 3d 63 2b 34 2a  |.printmenu%=c+4*|
00007480  31 0d 33 90 0d 70 63 25  3d 63 2b 34 2a 32 0d 33  |1.3..pc%=c+4*2.3|
00007490  9a 13 62 72 75 73 68 73  65 6c 25 3d 63 2b 34 2a  |..brushsel%=c+4*|
000074a0  33 0d 33 a4 15 68 65 6c  70 73 74 61 74 75 73 25  |3.3..helpstatus%|
000074b0  3d 63 2b 34 2a 34 0d 33  ae 16 70 72 65 73 65 6e  |=c+4*4.3..presen|
000074c0  74 6d 65 6e 75 25 3d 63  2b 34 2a 35 0d 33 b8 13  |tmenu%=c+4*5.3..|
000074d0  62 6f 6c 70 6f 69 6e 74  25 3d 63 2b 34 2a 36 0d  |bolpoint%=c+4*6.|
000074e0  33 c2 14 74 6f 70 73 63  72 65 65 6e 25 3d 63 2b  |3..topscreen%=c+|
000074f0  34 2a 37 0d 33 cc 12 62  6c 6f 77 63 6f 6c 25 3d  |4*7.3..blowcol%=|
00007500  63 2b 34 2a 38 0d 33 d6  0e 59 45 53 25 3d 63 2b  |c+4*8.3..YES%=c+|
00007510  34 2a 39 0d 33 e0 11 70  75 74 69 74 25 3d 63 2b  |4*9.3..putit%=c+|
00007520  34 2a 31 30 0d 33 ea 12  73 70 72 73 65 6c 25 3d  |4*10.3..sprsel%=|
00007530  63 2b 34 2a 31 31 0d 33  f4 12 73 74 61 72 74 78  |c+4*11.3..startx|
00007540  25 3d 63 2b 34 2a 31 32  0d 33 fe 12 73 74 61 72  |%=c+4*12.3..star|
00007550  74 79 25 3d 63 2b 34 2a  31 33 0d 34 08 16 63 6f  |ty%=c+4*13.4..co|
00007560  6d 70 61 63 74 69 6f 6e  25 3d 63 2b 34 2a 31 34  |mpaction%=c+4*14|
00007570  0d 34 12 11 73 70 72 70  6f 73 3d 63 2b 34 2a 31  |.4..sprpos=c+4*1|
00007580  35 0d 34 1c 12 66 72 65  65 63 6f 6c 3d 63 2b 34  |5.4..freecol=c+4|
00007590  2a 31 36 0d 34 26 0e 4f  55 54 3d 63 2b 34 2a 31  |*16.4&.OUT=c+4*1|
000075a0  37 0d 34 30 11 6c 69 6d  74 6f 70 3d 63 2b 34 2a  |7.40.limtop=c+4*|
000075b0  31 38 0d 34 3a 11 6c 69  6d 62 6f 74 3d 63 2b 34  |18.4:.limbot=c+4|
000075c0  2a 31 39 0d 34 44 10 73  74 61 72 74 3d 63 2b 34  |*19.4D.start=c+4|
000075d0  2a 32 30 0d 34 4e 12 68  6c 65 6e 67 74 68 3d 63  |*20.4N.hlength=c|
000075e0  2b 34 2a 32 31 0d 34 58  12 52 45 53 55 4c 54 58  |+4*21.4X.RESULTX|
000075f0  3d 63 2b 34 2a 32 32 0d  34 62 12 52 45 53 55 4c  |=c+4*22.4b.RESUL|
00007600  54 59 3d 63 2b 34 2a 32  33 0d 34 6c 13 6c 61 73  |TY=c+4*23.4l.las|
00007610  74 6d 65 6e 75 3d 63 2b  34 2a 32 34 0d 34 76 12  |tmenu=c+4*24.4v.|
00007620  72 31 73 74 6f 72 65 3d  63 2b 34 2a 32 35 0d 34  |r1store=c+4*25.4|
00007630  80 12 72 30 73 74 6f 72  65 3d 63 2b 34 2a 32 36  |..r0store=c+4*26|
00007640  0d 34 8a 16 6c 65 66 74  5f 68 61 6e 64 65 64 3d  |.4..left_handed=|
00007650  63 2b 34 2a 32 37 0d 34  94 15 63 6f 6d 70 61 63  |c+4*27.4..compac|
00007660  74 33 78 34 3d 63 2b 34  2a 32 38 0d 34 9e 13 69  |t3x4=c+4*28.4..i|
00007670  6e 6c 61 79 73 65 64 3d  63 2b 34 2a 32 39 0d 34  |nlaysed=c+4*29.4|
00007680  a8 11 73 70 72 73 74 72  3d 63 2b 34 2a 33 30 0d  |..sprstr=c+4*30.|
00007690  34 b2 11 62 72 70 61 74  74 3d 63 2b 34 2a 33 31  |4..brpatt=c+4*31|
000076a0  0d 34 bc 10 66 6c 61 67  73 3d 63 2b 34 2a 33 32  |.4..flags=c+4*32|
000076b0  0d 34 c6 0e 63 61 74 3d  63 2b 34 2a 33 33 0d 34  |.4..cat=c+4*33.4|
000076c0  d0 11 62 65 68 69 6e 64  3d 63 2b 34 2a 33 34 0d  |..behind=c+4*34.|
000076d0  34 da 16 62 72 75 73 68  73 68 61 70 65 73 3d 63  |4..brushshapes=c|
000076e0  2b 34 2a 33 35 0d 34 e4  0f 42 55 46 46 3d 63 2b  |+4*35.4..BUFF=c+|
000076f0  34 2a 33 36 0d 34 ee 0f  46 4c 4f 42 3d 63 2b 34  |4*36.4..FLOB=c+4|
00007700  2a 33 37 0d 34 f8 0f 62  6f 6c 78 3d 63 2b 34 2a  |*37.4..bolx=c+4*|
00007710  33 38 0d 35 02 0f 62 6f  6c 79 3d 63 2b 34 2a 33  |38.5..boly=c+4*3|
00007720  39 0d 35 0c 12 66 6f 6e  74 73 74 72 3d 63 2b 34  |9.5..fontstr=c+4|
00007730  2a 34 30 0d 35 16 16 70  72 65 73 65 6e 74 66 6f  |*40.5..presentfo|
00007740  6e 74 3d 63 2b 34 2a 34  31 0d 35 20 10 53 54 4f  |nt=c+4*41.5 .STO|
00007750  52 45 3d 63 2b 34 2a 34  32 0d 35 2a 14 66 72 65  |RE=c+4*42.5*.fre|
00007760  65 74 61 62 6c 65 3d 63  2b 34 2a 34 33 0d 35 34  |etable=c+4*43.54|
00007770  0e 70 75 74 3d 63 2b 34  2a 34 34 0d 35 3e 10 63  |.put=c+4*44.5>.c|
00007780  79 63 6c 65 3d 63 2b 34  2a 34 35 0d 35 48 15 72  |ycle=c+4*45.5H.r|
00007790  65 63 74 5f 62 72 75 73  68 3d 63 2b 34 2a 34 36  |ect_brush=c+4*46|
000077a0  0d 35 52 15 73 63 72 65  65 6e 5f 73 74 72 3d 63  |.5R.screen_str=c|
000077b0  2b 34 2a 34 37 0d 35 5c  16 70 61 74 74 65 72 6e  |+4*47.5\.pattern|
000077c0  5f 73 74 72 3d 63 2b 34  2a 34 38 0d 35 66 14 62  |_str=c+4*48.5f.b|
000077d0  72 75 73 68 5f 73 74 72  3d 63 2b 34 2a 34 39 0d  |rush_str=c+4*49.|
000077e0  35 70 15 73 70 72 69 74  65 5f 73 74 72 3d 63 2b  |5p.sprite_str=c+|
000077f0  34 2a 35 30 0d 35 7a 19  68 65 6c 70 5f 74 65 78  |4*50.5z.help_tex|
00007800  74 5f 64 61 74 61 3d 63  2b 34 2a 35 31 0d 35 84  |t_data=c+4*51.5.|
00007810  15 66 69 6c 65 5f 69 63  6f 6e 73 3d 63 2b 34 2a  |.file_icons=c+4*|
00007820  35 32 0d 35 8e 12 62 69  74 5f 6d 61 70 3d 63 2b  |52.5..bit_map=c+|
00007830  34 2a 35 33 0d 35 98 17  66 69 6c 6c 73 74 79 6c  |4*53.5..fillstyl|
00007840  65 70 69 63 3d 63 2b 34  2a 35 34 0d 35 a2 14 6c  |epic=c+4*54.5..l|
00007850  6f 67 5f 74 61 62 6c 65  3d 63 2b 34 2a 35 35 0d  |og_table=c+4*55.|
00007860  35 ac 14 6c 6f 67 5f 73  63 61 6c 65 3d 63 2b 34  |5..log_scale=c+4|
00007870  2a 35 36 0d 35 b6 04 0d  35 c0 12 6e 75 6d 62 65  |*56.5...5..numbe|
00007880  72 73 3d 63 2b 34 2a 35  38 0d 35 ca 17 6d 61 67  |rs=c+4*58.5..mag|
00007890  6e 69 66 79 5f 78 70 6f  73 3d 63 2b 34 2a 35 39  |nify_xpos=c+4*59|
000078a0  0d 35 d4 17 6d 61 67 6e  69 66 79 5f 79 70 6f 73  |.5..magnify_ypos|
000078b0  3d 63 2b 34 2a 36 30 0d  35 de 11 70 75 74 70 6f  |=c+4*60.5..putpo|
000078c0  73 3d 63 2b 34 2a 36 31  0d 35 e8 14 6d 61 67 70  |s=c+4*61.5..magp|
000078d0  75 74 70 6f 73 3d 63 2b  34 2a 36 32 0d 35 f2 10  |utpos=c+4*62.5..|
000078e0  73 69 7a 65 78 3d 63 2b  34 2a 36 33 0d 35 fc 10  |sizex=c+4*63.5..|
000078f0  73 69 7a 65 79 3d 63 2b  34 2a 36 34 0d 36 06 12  |sizey=c+4*64.6..|
00007900  73 70 72 73 69 7a 65 3d  63 2b 34 2a 36 35 0d 36  |sprsize=c+4*65.6|
00007910  10 12 73 70 72 69 74 65  78 3d 63 2b 34 2a 36 36  |..spritex=c+4*66|
00007920  0d 36 1a 12 73 70 72 69  74 65 79 3d 63 2b 34 2a  |.6..spritey=c+4*|
00007930  36 37 0d 36 24 14 67 74  73 70 72 69 74 65 78 3d  |67.6$.gtspritex=|
00007940  63 2b 34 2a 36 38 0d 36  2e 14 67 74 73 70 72 69  |c+4*68.6..gtspri|
00007950  74 65 79 3d 63 2b 34 2a  36 39 0d 36 38 1f 64 69  |tey=c+4*69.68.di|
00007960  73 6b 66 6f 6e 74 6c 69  73 74 70 6f 73 69 74 69  |skfontlistpositi|
00007970  6f 6e 3d 63 2b 34 2a 37  30 0d 36 42 11 63 61 74  |on=c+4*70.6B.cat|
00007980  70 6f 73 3d 63 2b 34 2a  37 31 0d 36 4c 12 66 6f  |pos=c+4*71.6L.fo|
00007990  6e 74 73 65 6c 3d 63 2b  34 2a 37 32 0d 36 56 12  |ntsel=c+4*72.6V.|
000079a0  70 61 74 74 73 65 6c 3d  63 2b 34 2a 37 33 0d 36  |pattsel=c+4*73.6|
000079b0  60 12 74 72 65 65 70 6f  73 3d 63 2b 34 2a 37 34  |`.treepos=c+4*74|
000079c0  0d 36 6a 14 6d 61 74 72  69 78 70 75 74 3d 63 2b  |.6j.matrixput=c+|
000079d0  34 2a 37 35 0d 36 74 15  62 61 72 76 61 6c 5f 72  |4*75.6t.barval_r|
000079e0  65 64 3d 63 2b 34 2a 37  36 0d 36 7e 15 62 61 72  |ed=c+4*76.6~.bar|
000079f0  76 61 6c 5f 67 72 6e 3d  63 2b 34 2a 37 37 0d 36  |val_grn=c+4*77.6|
00007a00  88 15 62 61 72 76 61 6c  5f 62 6c 75 3d 63 2b 34  |..barval_blu=c+4|
00007a10  2a 37 38 0d 36 92 18 73  63 61 6c 65 76 61 6c 5f  |*78.6..scaleval_|
00007a20  6c 65 66 74 3d 63 2b 34  2a 37 39 0d 36 9c 19 73  |left=c+4*79.6..s|
00007a30  63 61 6c 65 76 61 6c 5f  72 69 67 68 74 3d 63 2b  |caleval_right=c+|
00007a40  34 2a 38 30 0d 36 a6 15  63 79 63 6c 65 70 6c 61  |4*80.6..cyclepla|
00007a50  63 65 3d 63 2b 34 2a 38  31 0d 36 b0 19 63 79 63  |ce=c+4*81.6..cyc|
00007a60  6c 65 64 69 72 65 63 74  69 6f 6e 3d 63 2b 34 2a  |ledirection=c+4*|
00007a70  38 32 0d 36 ba 14 63 79  63 6c 65 6d 6f 64 65 3d  |82.6..cyclemode=|
00007a80  63 2b 34 2a 38 33 0d 36  c4 0e 70 6d 25 3d 63 2b  |c+4*83.6..pm%=c+|
00007a90  34 2a 38 34 0d 36 ce 15  6d 69 78 76 61 6c 5f 72  |4*84.6..mixval_r|
00007aa0  65 64 3d 63 2b 34 2a 38  35 0d 36 d8 15 6d 69 78  |ed=c+4*85.6..mix|
00007ab0  76 61 6c 5f 67 72 6e 3d  63 2b 34 2a 38 36 0d 36  |val_grn=c+4*86.6|
00007ac0  e2 15 6d 69 78 76 61 6c  5f 62 6c 75 3d 63 2b 34  |..mixval_blu=c+4|
00007ad0  2a 38 37 0d 36 ec 11 6d  6f 75 73 65 78 3d 63 2b  |*87.6..mousex=c+|
00007ae0  34 2a 38 38 0d 36 f6 11  6d 6f 75 73 65 79 3d 63  |4*88.6..mousey=c|
00007af0  2b 34 2a 38 39 0d 37 00  14 6d 6f 75 73 65 62 75  |+4*89.7..mousebu|
00007b00  74 73 3d 63 2b 34 2a 39  30 0d 37 0a 18 6d 61 67  |ts=c+4*90.7..mag|
00007b10  6e 69 66 69 63 61 74 69  6f 6e 3d 63 2b 34 2a 39  |nification=c+4*9|
00007b20  31 0d 37 14 17 6d 61 67  6e 69 66 79 5f 78 67 65  |1.7..magnify_xge|
00007b30  74 3d 63 2b 34 2a 39 32  0d 37 1e 17 6d 61 67 6e  |t=c+4*92.7..magn|
00007b40  69 66 79 5f 79 67 65 74  3d 63 2b 34 2a 39 33 0d  |ify_yget=c+4*93.|
00007b50  37 28 19 6d 61 67 6e 69  66 79 5f 73 74 61 74 75  |7(.magnify_statu|
00007b60  73 3d 63 2b 34 2a 39 34  0d 37 32 0f 48 41 4e 47  |s=c+4*94.72.HANG|
00007b70  3d 63 2b 34 2a 39 35 0d  37 3c 1a 72 65 63 74 5f  |=c+4*95.7<.rect_|
00007b80  62 72 75 73 68 5f 6d 6f  64 65 3d 63 2b 34 2a 39  |brush_mode=c+4*9|
00007b90  36 0d 37 46 11 76 61 63  61 6e 74 3d 63 2b 34 2a  |6.7F.vacant=c+4*|
00007ba0  39 37 0d 37 50 11 63 6f  6d 5f 78 31 3d 63 2b 34  |97.7P.com_x1=c+4|
00007bb0  2a 39 38 0d 37 5a 11 63  6f 6d 5f 79 31 3d 63 2b  |*98.7Z.com_y1=c+|
00007bc0  34 2a 39 39 0d 37 64 12  63 6f 6d 5f 78 32 3d 63  |4*99.7d.com_x2=c|
00007bd0  2b 34 2a 31 30 30 0d 37  6e 12 63 6f 6d 5f 79 32  |+4*100.7n.com_y2|
00007be0  3d 63 2b 34 2a 31 30 31  0d 37 78 18 73 70 72 69  |=c+4*101.7x.spri|
00007bf0  6e 74 5f 78 73 69 7a 65  3d 63 2b 34 2a 31 30 32  |nt_xsize=c+4*102|
00007c00  0d 37 82 18 73 70 72 69  6e 74 5f 79 73 69 7a 65  |.7..sprint_ysize|
00007c10  3d 63 2b 34 2a 31 30 33  0d 37 8c 16 73 70 72 69  |=c+4*103.7..spri|
00007c20  74 65 6d 61 73 6b 3d 63  2b 34 2a 31 30 34 0d 37  |temask=c+4*104.7|
00007c30  96 16 66 69 6c 6c 5f 73  74 79 6c 65 3d 63 2b 34  |..fill_style=c+4|
00007c40  2a 31 30 35 0d 37 a0 15  66 69 6c 6c 5f 70 72 6f  |*105.7..fill_pro|
00007c50  70 3d 63 2b 34 2a 31 30  36 0d 37 aa 15 66 69 6c  |p=c+4*106.7..fil|
00007c60  6c 5f 6c 6f 67 72 3d 63  2b 34 2a 31 30 37 0d 37  |l_logr=c+4*107.7|
00007c70  b4 15 66 69 6c 6c 5f 64  69 74 68 3d 63 2b 34 2a  |..fill_dith=c+4*|
00007c80  31 30 38 0d 37 be 16 73  74 65 70 5f 63 6f 64 65  |108.7..step_code|
00007c90  73 3d 63 2b 34 2a 31 30  39 0d 37 c8 12 62 6f 72  |s=c+4*109.7..bor|
00007ca0  64 65 72 3d 63 2b 34 2a  31 31 30 0d 37 d2 0f 73  |der=c+4*110.7..s|
00007cb0  71 72 3d 63 2b 34 2a 31  31 31 0d 37 dc 16 61 63  |qr=c+4*111.7..ac|
00007cc0  74 69 6f 6e 73 61 76 65  3d 63 2b 34 2a 31 31 32  |tionsave=c+4*112|
00007cd0  0d 37 e6 12 62 6f 74 74  6c 65 3d 63 2b 34 2a 31  |.7..bottle=c+4*1|
00007ce0  31 33 0d 37 f0 14 62 6f  74 5f 74 69 6c 74 3d 63  |13.7..bot_tilt=c|
00007cf0  2b 34 2a 31 31 34 0d 37  fa 14 62 6f 74 5f 6c 65  |+4*114.7..bot_le|
00007d00  61 6e 3d 63 2b 34 2a 31  31 35 0d 38 04 14 62 6f  |an=c+4*115.8..bo|
00007d10  74 5f 78 6f 75 74 3d 63  2b 34 2a 31 31 36 0d 38  |t_xout=c+4*116.8|
00007d20  0e 14 62 6f 74 5f 79 6f  75 74 3d 63 2b 34 2a 31  |..bot_yout=c+4*1|
00007d30  31 37 0d 38 18 19 6c 69  6e 65 5f 73 65 6c 65 63  |17.8..line_selec|
00007d40  74 65 64 3d 63 2b 34 2a  31 31 38 0d 38 22 16 62  |ted=c+4*118.8".b|
00007d50  6f 74 5f 66 69 6e 69 73  68 3d 63 2b 34 2a 31 31  |ot_finish=c+4*11|
00007d60  39 0d 38 2c 16 62 6f 74  5f 78 73 63 61 6c 65 3d  |9.8,.bot_xscale=|
00007d70  63 2b 34 2a 31 32 30 0d  38 36 16 62 6f 74 5f 79  |c+4*120.86.bot_y|
00007d80  73 63 61 6c 65 3d 63 2b  34 2a 31 32 31 0d 38 40  |scale=c+4*121.8@|
00007d90  15 68 61 6e 67 64 65 6c  61 79 3d 63 2b 34 2a 31  |.hangdelay=c+4*1|
00007da0  32 32 0d 38 4a 0f 73 69  6e 3d 63 2b 34 2a 31 32  |22.8J.sin=c+4*12|
00007db0  33 0d 38 54 0f 74 61 6e  3d 63 2b 34 2a 31 32 34  |3.8T.tan=c+4*124|
00007dc0  0d 38 5e 14 66 69 6c 65  5f 73 74 72 3d 63 2b 34  |.8^.file_str=c+4|
00007dd0  2a 31 32 35 0d 38 68 10  66 6f 72 6d 3d 63 2b 34  |*125.8h.form=c+4|
00007de0  2a 31 32 36 0d 38 72 10  74 69 6c 74 3d 63 2b 34  |*126.8r.tilt=c+4|
00007df0  2a 31 32 37 0d 38 7c 10  6c 65 61 6e 3d 63 2b 34  |*127.8|.lean=c+4|
00007e00  2a 31 32 38 0d 38 86 14  72 6f 74 61 74 69 6f 6e  |*128.8..rotation|
00007e10  3d 63 2b 34 2a 31 32 39  0d 38 90 12 78 73 63 61  |=c+4*129.8..xsca|
00007e20  6c 65 3d 63 2b 34 2a 31  33 30 0d 38 9a 12 79 73  |le=c+4*130.8..ys|
00007e30  63 61 6c 65 3d 63 2b 34  2a 31 33 31 0d 38 a4 12  |cale=c+4*131.8..|
00007e40  68 73 63 61 6c 65 3d 63  2b 34 2a 31 33 32 0d 38  |hscale=c+4*132.8|
00007e50  ae 19 66 6f 72 6d 5f 6c  69 73 74 5f 70 6f 73 3d  |..form_list_pos=|
00007e60  63 2b 34 2a 31 33 33 0d  38 b8 15 66 6f 72 6d 6e  |c+4*133.8..formn|
00007e70  61 6d 65 73 3d 63 2b 34  2a 31 33 34 0d 38 c2 13  |ames=c+4*134.8..|
00007e80  66 6f 72 6d 75 6c 61 3d  63 2b 34 2a 31 33 35 0d  |formula=c+4*135.|
00007e90  38 cc 10 73 6b 65 6c 3d  63 2b 34 2a 31 33 36 0d  |8..skel=c+4*136.|
00007ea0  38 d6 17 73 68 61 64 65  5f 72 61 6e 67 65 3d 63  |8..shade_range=c|
00007eb0  2b 34 2a 31 33 37 0d 38  e0 15 6d 69 6e 5f 73 68  |+4*137.8..min_sh|
00007ec0  61 64 65 3d 63 2b 34 2a  31 33 38 0d 38 ea 14 66  |ade=c+4*138.8..f|
00007ed0  6f 6e 74 6c 69 73 74 3d  63 2b 34 2a 31 33 39 0d  |ontlist=c+4*139.|
00007ee0  38 f4 16 6f 6c 64 61 63  74 69 6f 6e 25 3d 63 2b  |8..oldaction%=c+|
00007ef0  34 2a 31 34 30 0d 38 fe  04 0d 39 08 04 0d 39 12  |4*140.8...9...9.|
00007f00  0f 42 4f 52 44 53 49 5a  45 3d 32 38 0d 39 1c 10  |.BORDSIZE=28.9..|
00007f10  57 45 44 47 45 53 49 5a  45 3d 31 36 0d 39 26 0e  |WEDGESIZE=16.9&.|
00007f20  74 65 78 74 63 6f 6c 25  3d 30 0d 39 30 10 42 41  |textcol%=0.90.BA|
00007f30  43 4b 43 4f 4c 25 3d 32  30 32 0d 39 3a 0f 54 49  |CKCOL%=202.9:.TI|
00007f40  54 4c 45 43 4f 4c 25 3d  30 0d 39 44 11 42 4f 52  |TLECOL%=0.9D.BOR|
00007f50  44 45 52 43 4f 4c 25 3d  37 34 0d 39 4e 0e 42 4f  |DERCOL%=74.9N.BO|
00007f60  52 44 31 25 3d 32 30 37  0d 39 58 0d 42 4f 52 44  |RD1%=207.9X.BORD|
00007f70  32 25 3d 31 35 0d 39 62  0e 42 4f 52 44 33 25 3d  |2%=15.9b.BORD3%=|
00007f80  31 33 38 0d 39 6c 0e 42  4f 52 44 34 25 3d 31 39  |138.9l.BORD4%=19|
00007f90  37 0d 39 76 15 44 49 52  45 43 54 4f 52 59 43 4f  |7.9v.DIRECTORYCO|
00007fa0  4c 25 3d 32 32 34 0d 39  80 04 0d 39 8a 05 e1 0d  |L%=224.9...9....|
00007fb0  39 94 04 0d 39 9e 13 dd  f2 73 63 72 65 65 6e 5f  |9...9....screen_|
00007fc0  73 65 6c 65 63 74 0d 39  a8 04 0d 39 b2 23 e7 20  |select.9...9.#. |
00007fd0  28 21 41 63 25 3d 31 20  84 20 21 41 63 25 3d 32  |(!Ac%=1 . !Ac%=2|
00007fe0  29 20 80 20 73 74 65 70  25 3d 33 20 8c 0d 39 bc  |) . step%=3 ..9.|
00007ff0  05 f5 0d 39 c6 11 f2 6d  6f 75 73 65 5f 68 61 6e  |...9...mouse_han|
00008000  64 6c 65 0d 39 d0 37 44  25 3d 21 41 63 25 3a 45  |dle.9.7D%=!Ac%:E|
00008010  25 3d 73 74 65 70 25 3a  46 25 3d 4d 42 3a 47 25  |%=step%:F%=MB:G%|
00008020  3d 4d 58 3a 48 25 3d 4d  59 3a d6 20 73 63 72 65  |=MX:H%=MY:. scre|
00008030  65 6e 5f 73 65 6c 65 63  74 25 0d 39 da 0a fd 20  |en_select%.9... |
00008040  4d 42 3d 30 0d 39 e4 1c  e7 20 21 41 63 25 3d 31  |MB=0.9... !Ac%=1|
00008050  20 8c 20 78 31 25 3d 4d  58 3a 79 31 25 3d 4d 59  | . x1%=MX:y1%=MY|
00008060  0d 39 ee 05 cc 0d 39 f8  37 44 25 3d 21 41 63 25  |.9....9.7D%=!Ac%|
00008070  3a 45 25 3d 73 74 65 70  25 3a 46 25 3d 4d 42 3a  |:E%=step%:F%=MB:|
00008080  47 25 3d 4d 58 3a 48 25  3d 4d 59 3a d6 20 73 63  |G%=MX:H%=MY:. sc|
00008090  72 65 65 6e 5f 73 65 6c  65 63 74 25 0d 3a 02 05  |reen_select%.:..|
000080a0  cd 0d 3a 0c 0d e7 20 21  59 45 53 25 20 8c 0d 3a  |..:... !YES% ..:|
000080b0  16 0e c8 8e 20 73 74 65  70 25 20 ca 0d 3a 20 14  |.... step% ..: .|
000080c0  c9 31 3a 78 31 25 3d 4d  58 3a 79 31 25 3d 4d 59  |.1:x1%=MX:y1%=MY|
000080d0  0d 3a 2a 14 c9 32 3a 78  32 25 3d 4d 58 3a 79 32  |.:*..2:x2%=MX:y2|
000080e0  25 3d 4d 59 0d 3a 34 14  c9 33 3a 78 33 25 3d 4d  |%=MY.:4..3:x3%=M|
000080f0  58 3a 79 33 25 3d 4d 59  0d 3a 3e 14 c9 34 3a 78  |X:y3%=MY.:>..4:x|
00008100  34 25 3d 4d 58 3a 79 34  25 3d 4d 59 0d 3a 48 14  |4%=MX:y4%=MY.:H.|
00008110  c9 35 3a 78 35 25 3d 4d  58 3a 79 35 25 3d 4d 59  |.5:x5%=MX:y5%=MY|
00008120  0d 3a 52 05 cb 0d 3a 5c  05 cd 0d 3a 66 0f e7 20  |.:R...:\...:f.. |
00008130  21 59 45 53 25 20 8c 20  e1 0d 3a 70 04 0d 3a 7a  |!YES% . ..:p..:z|
00008140  04 0d 3a 84 0f c8 8e 20  28 21 41 63 25 29 20 ca  |..:.... (!Ac%) .|
00008150  0d 3a 8e 04 0d 3a 98 0d  f4 20 4d 61 67 6e 69 66  |.:...:... Magnif|
00008160  79 0d 3a a2 12 c9 31 32  3a c8 8e 20 73 74 65 70  |y.:...12:.. step|
00008170  25 20 ca 0d 3a ac 0f c9  32 3a 65 6e 74 65 72 25  |% ..:...2:enter%|
00008180  3d 34 0d 3a b6 18 21 6d  61 67 6e 69 66 79 5f 78  |=4.:..!magnify_x|
00008190  70 6f 73 3d 4d 58 20 81  20 32 0d 3a c0 1e 21 6d  |pos=MX . 2.:..!m|
000081a0  61 67 6e 69 66 79 5f 79  70 6f 73 3d 32 35 35 2d  |agnify_ypos=255-|
000081b0  28 4d 59 20 81 20 34 29  0d 3a ca 05 cb 0d 3a d4  |(MY . 4).:....:.|
000081c0  04 0d 3a de 0a f4 20 46  69 6c 6c 0d 3a e8 12 c9  |..:... Fill.:...|
000081d0  31 33 3a c8 8e 20 73 74  65 70 25 20 ca 0d 3a f2  |13:.. step% ..:.|
000081e0  12 c9 32 3a f2 70 6f 69  6e 74 28 30 2c 30 29 0d  |..2:.point(0,0).|
000081f0  3a fc 1e e6 20 31 32 38  2b b0 4d 58 2c 4d 59 29  |:... 128+.MX,MY)|
00008200  20 c8 9c 20 c8 9c 28 4d  58 2c 4d 59 29 0d 3b 06  | .. ..(MX,MY).;.|
00008210  14 c8 8e 20 21 66 69 6c  6c 5f 73 74 79 6c 65 20  |... !fill_style |
00008220  ca 0d 3b 10 07 c9 30 3a  0d 3b 1a 20 e7 20 21 70  |..;...0:.;. . !p|
00008230  6d 25 3e 30 20 8c 20 d6  20 62 69 74 5f 6d 61 70  |m%>0 . . bit_map|
00008240  5f 73 63 61 6e 5f 41 25  0d 3b 24 0e f0 26 38 35  |_scan_A%.;$..&85|
00008250  2c 4d 58 2c 4d 59 0d 3b  2e 21 e7 20 21 70 6d 25  |,MX,MY.;.!. !pm%|
00008260  3e 30 20 8c 20 d6 20 62  69 74 5f 6d 61 70 5f 70  |>0 . . bit_map_p|
00008270  61 74 74 65 72 6e 25 0d  3b 38 0b c9 31 2c 32 2c  |attern%.;8..1,2,|
00008280  33 3a 0d 3b 42 15 d6 20  62 69 74 5f 6d 61 70 5f  |3:.;B.. bit_map_|
00008290  73 63 61 6e 5f 41 25 0d  3b 4c 0e f0 26 38 35 2c  |scan_A%.;L..&85,|
000082a0  4d 58 2c 4d 59 0d 3b 56  14 c8 8e 20 21 66 69 6c  |MX,MY.;V... !fil|
000082b0  6c 5f 73 74 79 6c 65 20  ca 0d 3b 60 19 c9 31 2c  |l_style ..;`..1,|
000082c0  32 3a d6 20 76 65 72 74  69 63 61 6c 5f 66 69 6c  |2:. vertical_fil|
000082d0  6c 25 0d 3b 6a 1c c9 33  3a 41 25 3d 4d 58 20 81  |l%.;j..3:A%=MX .|
000082e0  32 3a 42 25 3d 32 35 35  2d 4d 59 20 81 34 0d 3b  |2:B%=255-MY .4.;|
000082f0  74 14 d6 20 76 65 72 74  69 63 61 6c 5f 66 69 6c  |t.. vertical_fil|
00008300  6c 25 0d 3b 7e 05 cb 0d  3b 88 05 cb 0d 3b 92 0b  |l%.;~...;....;..|
00008310  f2 75 70 64 61 74 65 0d  3b 9c 05 cb 0d 3b a6 04  |.update.;....;..|
00008320  0d 3b b0 15 f4 20 53 70  72 69 74 65 20 48 61 6e  |.;... Sprite Han|
00008330  64 6c 69 6e 67 0d 3b ba  0a c9 31 34 2c 31 36 0d  |dling.;...14,16.|
00008340  3b c4 2b e6 20 30 2c 28  74 65 78 74 63 6f 6c 25  |;.+. 0,(textcol%|
00008350  20 80 20 36 33 29 20 c8  9c 20 28 74 65 78 74 63  | . 63) .. (textc|
00008360  6f 6c 25 20 80 20 31 39  32 29 0d 3b ce 2f e6 20  |ol% . 192).;./. |
00008370  30 2c 31 32 38 2b 28 42  41 43 4b 43 4f 4c 25 20  |0,128+(BACKCOL% |
00008380  80 20 36 33 29 20 c8 9c  20 28 42 41 43 4b 43 4f  |. 63) .. (BACKCO|
00008390  4c 25 20 80 20 31 39 32  29 0d 3b d8 14 c8 99 20  |L% . 192).;.... |
000083a0  26 32 45 2c 38 20 b8 20  2c 2c 2c 72 33 0d 3b e2  |&2E,8 . ,,,r3.;.|
000083b0  2c c8 99 20 26 32 45 2c  31 33 2c 2c 73 70 72 73  |,.. &2E,13,,sprs|
000083c0  74 72 25 2c 33 30 2c 21  73 70 72 73 65 6c 25 20  |tr%,30,!sprsel% |
000083d0  b8 20 2c 2c 2c 6c 65 6e  67 0d 3b ec 18 3f 28 73  |. ,,,leng.;..?(s|
000083e0  70 72 73 74 72 25 2b 6c  65 6e 67 2b 31 29 3d 31  |prstr%+leng+1)=1|
000083f0  33 0d 3b f6 13 65 72 72  6f 72 63 68 65 61 74 3d  |3.;..errorcheat=|
00008400  21 41 63 25 0d 3c 00 22  21 70 75 74 69 74 25 3d  |!Ac%.<."!putit%=|
00008410  31 3a f2 70 6f 69 6e 74  28 30 2c 50 4e 6b 65 79  |1:.point(0,PNkey|
00008420  62 6f 61 72 64 29 0d 3c  0a 1b f2 72 65 73 65 74  |board).<...reset|
00008430  5f 61 63 74 69 6f 6e 3a  d6 20 75 70 74 72 65 65  |_action:. uptree|
00008440  25 0d 3c 14 28 41 25 3d  2d 31 32 38 3a 42 25 3d  |%.<.(A%=-128:B%=|
00008450  21 73 74 61 72 74 79 25  2b 35 36 3a 45 25 3d 2d  |!starty%+56:E%=-|
00008460  31 3a d6 20 68 65 6c 70  25 0d 3c 1e 2f 41 25 3d  |1:. help%.<./A%=|
00008470  2d 31 32 38 3a 42 25 3d  21 73 74 61 72 74 79 25  |-128:B%=!starty%|
00008480  2d 21 73 69 7a 65 79 2d  39 36 3a 45 25 3d 2d 31  |-!sizey-96:E%=-1|
00008490  3a d6 20 68 65 6c 70 25  0d 3c 28 32 58 50 3d 21  |:. help%.<(2XP=!|
000084a0  73 74 61 72 74 78 25 2b  36 3a 59 50 3d 21 73 74  |startx%+6:YP=!st|
000084b0  61 72 74 79 25 2d 34 38  3a ec 20 58 50 2c 59 50  |arty%-48:. XP,YP|
000084c0  3a ef 20 35 3a f1 22 20  22 3b 0d 3c 32 2a 73 74  |:. 5:." ";.<2*st|
000084d0  65 70 25 3d 31 3a f1 24  73 70 72 73 74 72 25 3a  |ep%=1:.$sprstr%:|
000084e0  21 73 74 61 72 74 79 25  3d 21 73 74 61 72 74 79  |!starty%=!starty|
000084f0  25 2d 33 32 0d 3c 3c 27  6f 6c 64 24 3d 24 73 70  |%-32.<<'old$=$sp|
00008500  72 73 74 72 25 3a 6f 6c  64 24 3d c0 6f 6c 64 24  |rstr%:old$=.old$|
00008510  2c a9 28 6f 6c 64 24 29  2d 31 29 0d 3c 46 23 67  |,.(old$)-1).<F#g|
00008520  6f 3d a4 69 6e 73 74 72  69 6e 67 28 33 33 2c 31  |o=.instring(33,1|
00008530  32 36 2c 22 22 2c 6f 75  74 24 2c 31 32 29 0d 3c  |26,"",out$,12).<|
00008540  50 1e d6 20 6c 69 66 74  75 70 25 3a d6 20 70 75  |P.. liftup%:. pu|
00008550  74 62 61 63 6b 67 72 6f  75 6e 64 25 0d 3c 5a 0a  |tbackground%.<Z.|
00008560  e7 20 67 6f 20 8c 0d 3c  64 13 c8 8e 20 65 72 72  |. go ..<d... err|
00008570  6f 72 63 68 65 61 74 20  ca 0d 3c 6e 3b c9 31 36  |orcheat ..<n;.16|
00008580  3a ff 20 22 53 43 4f 50  59 20 22 2b 6f 6c 64 24  |:. "SCOPY "+old$|
00008590  2b 22 20 22 2b 6f 75 74  24 3a 21 73 70 72 73 65  |+" "+out$:!sprse|
000085a0  6c 25 3d 72 33 2b 31 3a  21 73 70 72 70 6f 73 3d  |l%=r3+1:!sprpos=|
000085b0  72 33 2d 35 0d 3c 78 22  c9 31 34 3a ff 20 22 53  |r3-5.<x".14:. "S|
000085c0  52 45 4e 41 4d 45 20 22  2b 6f 6c 64 24 2b 22 20  |RENAME "+old$+" |
000085d0  22 2b 6f 75 74 24 0d 3c  82 05 cb 0d 3c 8c 05 cd  |"+out$.<....<...|
000085e0  0d 3c 96 10 f2 72 65 73  65 74 5f 65 6e 74 72 79  |.<...reset_entry|
000085f0  0d 3c a0 04 0d 3c aa 1c  f4 20 53 61 76 65 20 43  |.<...<... Save C|
00008600  6f 6d 70 72 65 73 73 65  64 20 53 63 72 65 65 6e  |ompressed Screen|
00008610  0d 3c b4 2c c9 31 35 3a  e7 20 a4 74 65 78 74 5f  |.<.,.15:. .text_|
00008620  65 6e 74 72 79 28 33 33  2c 24 73 63 72 65 65 6e  |entry(33,$screen|
00008630  5f 73 74 72 25 2c 32 35  35 29 20 8c 0d 3c be 37  |_str%,255) ..<.7|
00008640  f2 70 6f 69 6e 74 28 30  2c 31 29 3a f2 63 6f 6d  |.point(0,1):.com|
00008650  70 72 65 73 73 65 64 73  61 76 65 28 6f 75 74 24  |pressedsave(out$|
00008660  29 3a 24 73 63 72 65 65  6e 5f 73 74 72 25 3d 6f  |):$screen_str%=o|
00008670  75 74 24 0d 3c c8 05 cd  0d 3c d2 10 f2 72 65 73  |ut$.<....<...res|
00008680  65 74 5f 65 6e 74 72 79  0d 3c dc 04 0d 3c e6 12  |et_entry.<...<..|
00008690  f4 20 53 61 76 65 20 42  72 75 73 68 65 73 0d 3c  |. Save Brushes.<|
000086a0  f0 2b c9 31 37 3a e7 20  a4 74 65 78 74 5f 65 6e  |.+.17:. .text_en|
000086b0  74 72 79 28 33 33 2c 24  62 72 75 73 68 5f 73 74  |try(33,$brush_st|
000086c0  72 25 2c 32 35 35 29 20  8c 0d 3c fa 36 f2 70 6f  |r%,255) ..<.6.po|
000086d0  69 6e 74 28 30 2c 31 29  3a ff 20 22 53 41 56 45  |int(0,1):. "SAVE|
000086e0  20 22 2b 6f 75 74 24 2b  22 20 22 2b c3 7e 28 62  | "+out$+" "+.~(b|
000086f0  72 75 73 68 25 29 2b 22  20 2b 32 30 30 30 22 0d  |rush%)+" +2000".|
00008700  3d 04 2f ff 28 22 53 45  54 54 59 50 45 20 22 2b  |=./.("SETTYPE "+|
00008710  6f 75 74 24 2b 22 20 26  44 37 45 22 29 3a 24 62  |out$+" &D7E"):$b|
00008720  72 75 73 68 5f 73 74 72  25 3d 6f 75 74 24 0d 3d  |rush_str%=out$.=|
00008730  0e 05 cd 0d 3d 18 10 f2  72 65 73 65 74 5f 65 6e  |....=...reset_en|
00008740  74 72 79 0d 3d 22 04 0d  3d 2c 11 f4 20 4e 61 6d  |try.="..=,.. Nam|
00008750  65 20 53 70 72 69 74 65  0d 3d 36 37 c9 31 38 3a  |e Sprite.=67.18:|
00008760  e7 20 a4 74 65 78 74 5f  65 6e 74 72 79 28 33 33  |. .text_entry(33|
00008770  2c 67 5f 73 70 72 69 74  65 24 2c 31 32 29 20 8c  |,g_sprite$,12) .|
00008780  20 67 5f 73 70 72 69 74  65 24 3d 6f 75 74 24 0d  | g_sprite$=out$.|
00008790  3d 40 18 21 41 63 25 3d  33 38 3a f2 72 65 73 65  |=@.!Ac%=38:.rese|
000087a0  74 5f 65 6e 74 72 79 0d  3d 4a 04 0d 3d 54 13 f4  |t_entry.=J..=T..|
000087b0  20 53 61 76 65 20 50 61  74 74 65 72 6e 73 0d 3d  | Save Patterns.=|
000087c0  5e 2d c9 31 39 3a e7 20  a4 74 65 78 74 5f 65 6e  |^-.19:. .text_en|
000087d0  74 72 79 28 33 33 2c 24  70 61 74 74 65 72 6e 5f  |try(33,$pattern_|
000087e0  73 74 72 25 2c 32 35 35  29 20 8c 0d 3d 68 37 f2  |str%,255) ..=h7.|
000087f0  70 6f 69 6e 74 28 30 2c  31 29 3a ff 20 22 53 41  |point(0,1):. "SA|
00008800  56 45 20 22 2b 6f 75 74  24 2b 22 20 22 2b c3 7e  |VE "+out$+" "+.~|
00008810  28 62 72 70 61 74 74 25  29 2b 22 20 2b 32 30 30  |(brpatt%)+" +200|
00008820  30 22 0d 3d 72 31 ff 28  22 53 45 54 54 59 50 45  |0".=r1.("SETTYPE|
00008830  20 22 2b 6f 75 74 24 2b  22 20 26 44 33 41 22 29  | "+out$+" &D3A")|
00008840  3a 24 70 61 74 74 65 72  6e 5f 73 74 72 25 3d 6f  |:$pattern_str%=o|
00008850  75 74 24 0d 3d 7c 05 cd  0d 3d 86 10 f2 72 65 73  |ut$.=|...=...res|
00008860  65 74 5f 65 6e 74 72 79  0d 3d 90 04 0d 3d 9a 20  |et_entry.=...=. |
00008870  f4 20 66 75 6e 63 74 69  6f 6e 20 32 30 20 2d 2d  |. function 20 --|
00008880  20 46 49 4e 49 53 48 20  2d 2d 20 21 0d 3d a4 04  | FINISH -- !.=..|
00008890  0d 3d ae 17 f4 20 53 65  74 20 42 6f 72 64 65 72  |.=... Set Border|
000088a0  20 43 6f 6c 6f 75 72 0d  3d b8 15 c9 32 31 3a f2  | Colour.=...21:.|
000088b0  72 65 73 65 74 5f 61 63  74 69 6f 6e 0d 3d c2 0e  |reset_action.=..|
000088c0  d6 20 73 65 74 62 6f 72  64 25 0d 3d cc 04 0d 3d  |. setbord%.=...=|
000088d0  d6 0d f4 20 45 6c 6c 69  70 73 65 0d 3d e0 12 c9  |... Ellipse.=...|
000088e0  32 32 3a c8 8e 20 73 74  65 70 25 20 ca 0d 3d ea  |22:.. step% ..=.|
000088f0  14 c9 31 3a 78 31 25 3d  4d 58 3a 79 31 25 3d 4d  |..1:x1%=MX:y1%=M|
00008900  59 0d 3d f4 23 c9 32 3a  72 64 25 3d b6 28 28 4d  |Y.=.#.2:rd%=.((M|
00008910  58 2d 78 31 25 29 5e 32  2b 28 4d 59 2d 79 31 25  |X-x1%)^2+(MY-y1%|
00008920  29 5e 32 29 0d 3d fe 12  c8 8f 20 78 31 25 2c 79  |)^2).=.... x1%,y|
00008930  31 25 2c 72 64 25 0d 3e  08 18 c8 96 3a c8 96 3a  |1%,rd%.>....:..:|
00008940  c8 8f 20 78 31 25 2c 79  31 25 2c 72 64 25 0d 3e  |.. x1%,y1%,rd%.>|
00008950  12 2a c9 33 3a ec 20 78  31 25 2c 79 31 25 3a ec  |.*.3:. x1%,y1%:.|
00008960  20 78 31 25 2b 72 64 25  2c 79 31 25 3a f0 20 26  | x1%+rd%,y1%:. &|
00008970  43 35 2c 4d 58 2c 4d 59  0d 3e 1c 2d c8 96 3a c8  |C5,MX,MY.>.-..:.|
00008980  96 3a ec 20 78 31 25 2c  79 31 25 3a ec 20 78 31  |.:. x1%,y1%:. x1|
00008990  25 2b 72 64 25 2c 79 31  25 3a f0 20 26 43 35 2c  |%+rd%,y1%:. &C5,|
000089a0  4d 58 2c 4d 59 0d 3e 26  2a c9 34 3a ec 20 78 31  |MX,MY.>&*.4:. x1|
000089b0  25 2c 79 31 25 3a ec 20  78 31 25 2b 72 64 25 2c  |%,y1%:. x1%+rd%,|
000089c0  79 31 25 3a f0 20 26 43  35 2c 4d 58 2c 4d 59 0d  |y1%:. &C5,MX,MY.|
000089d0  3e 30 05 cb 0d 3e 3a 04  0d 3e 44 11 f4 20 45 6c  |>0...>:..>D.. El|
000089e0  6c 69 70 73 65 46 69 6c  6c 0d 3e 4e 12 c9 32 33  |lipseFill.>N..23|
000089f0  3a c8 8e 20 73 74 65 70  25 20 ca 0d 3e 58 14 c9  |:.. step% ..>X..|
00008a00  31 3a 78 31 25 3d 4d 58  3a 79 31 25 3d 4d 59 0d  |1:x1%=MX:y1%=MY.|
00008a10  3e 62 23 c9 32 3a 72 64  25 3d b6 28 28 4d 58 2d  |>b#.2:rd%=.((MX-|
00008a20  78 31 25 29 5e 32 2b 28  4d 59 2d 79 31 25 29 5e  |x1%)^2+(MY-y1%)^|
00008a30  32 29 0d 3e 6c 12 c8 8f  20 78 31 25 2c 79 31 25  |2).>l... x1%,y1%|
00008a40  2c 72 64 25 0d 3e 76 18  c8 96 3a c8 96 3a c8 8f  |,rd%.>v...:..:..|
00008a50  20 78 31 25 2c 79 31 25  2c 72 64 25 0d 3e 80 2a  | x1%,y1%,rd%.>.*|
00008a60  c9 33 3a ec 20 78 31 25  2c 79 31 25 3a ec 20 78  |.3:. x1%,y1%:. x|
00008a70  31 25 2b 72 64 25 2c 79  31 25 3a f0 20 26 43 35  |1%+rd%,y1%:. &C5|
00008a80  2c 4d 58 2c 4d 59 0d 3e  8a 2d c8 96 3a c8 96 3a  |,MX,MY.>.-..:..:|
00008a90  ec 20 78 31 25 2c 79 31  25 3a ec 20 78 31 25 2b  |. x1%,y1%:. x1%+|
00008aa0  72 64 25 2c 79 31 25 3a  f0 20 26 43 35 2c 4d 58  |rd%,y1%:. &C5,MX|
00008ab0  2c 4d 59 0d 3e 94 2a c9  34 3a ec 20 78 31 25 2c  |,MY.>.*.4:. x1%,|
00008ac0  79 31 25 3a ec 20 78 31  25 2b 72 64 25 2c 79 31  |y1%:. x1%+rd%,y1|
00008ad0  25 3a f0 20 26 43 44 2c  4d 58 2c 4d 59 0d 3e 9e  |%:. &CD,MX,MY.>.|
00008ae0  05 cb 0d 3e a8 04 0d 3e  b2 0e f4 20 66 61 73 74  |...>...>... fast|
00008af0  63 6f 70 79 0d 3e bc 12  c9 32 34 3a c8 8e 20 73  |copy.>...24:.. s|
00008b00  74 65 70 25 20 ca 0d 3e  c6 16 c9 31 2c 32 3a f2  |tep% ..>...1,2:.|
00008b10  67 65 74 72 65 63 74 61  6e 67 6c 65 0d 3e d0 2c  |getrectangle.>.,|
00008b20  c9 33 3a 4d 58 3d 28 4d  58 20 81 20 32 29 2a 32  |.3:MX=(MX . 2)*2|
00008b30  3a 4d 59 3d 28 4d 59 20  81 20 34 29 2a 34 3a f2  |:MY=(MY . 4)*4:.|
00008b40  63 6f 70 79 73 6f 72 74  0d 3e da 1b c8 93 20 4d  |copysort.>.... M|
00008b50  58 2c 4d 59 2c 78 73 25  2d 32 2c 2d 28 79 73 25  |X,MY,xs%-2,-(ys%|
00008b60  2b 34 29 0d 3e e4 21 c8  96 3a c8 96 3a c8 93 20  |+4).>.!..:..:.. |
00008b70  4d 58 2c 4d 59 2c 78 73  25 2d 32 2c 2d 28 79 73  |MX,MY,xs%-2,-(ys|
00008b80  25 2b 34 29 0d 3e ee 07  c9 34 3a 0d 3e f8 0c 41  |%+4).>...4:.>..A|
00008b90  25 3d 78 31 25 81 32 0d  3f 02 12 42 25 3d 32 35  |%=x1%.2.?..B%=25|
00008ba0  35 2d 28 79 31 25 81 34  29 0d 3f 0c 0c 43 25 3d  |5-(y1%.4).?..C%=|
00008bb0  78 73 25 81 32 0d 3f 16  0d 44 25 3d 2d 79 73 25  |xs%.2.?..D%=-ys%|
00008bc0  81 34 0d 3f 20 0c 45 25  3d 4d 58 20 81 32 0d 3f  |.4.? .E%=MX .2.?|
00008bd0  2a 1c 46 25 3d 32 35 35  2d 28 4d 59 20 81 34 29  |*.F%=255-(MY .4)|
00008be0  2b 28 79 73 25 2b 34 29  81 34 0d 3f 34 0b 47 25  |+(ys%+4).4.?4.G%|
00008bf0  3d 21 70 6d 25 0d 3f 3e  19 d6 20 70 75 74 73 63  |=!pm%.?>.. putsc|
00008c00  72 65 65 6e 72 65 63 74  61 6e 67 6c 65 25 0d 3f  |reenrectangle%.?|
00008c10  48 05 cb 0d 3f 52 04 0d  3f 5c 0f f4 20 73 6d 65  |H...?R..?\.. sme|
00008c20  61 72 63 6f 70 79 0d 3f  66 12 c9 32 35 3a c8 8e  |arcopy.?f..25:..|
00008c30  20 73 74 65 70 25 20 ca  0d 3f 70 16 c9 31 2c 32  | step% ..?p..1,2|
00008c40  3a f2 67 65 74 72 65 63  74 61 6e 67 6c 65 0d 3f  |:.getrectangle.?|
00008c50  7a 16 c9 33 3a 70 78 31  25 3d 4d 58 3a 70 79 31  |z..3:px1%=MX:py1|
00008c60  25 3d 4d 59 0d 3f 84 18  c9 34 3a 86 20 70 78 31  |%=MY.?...4:. px1|
00008c70  25 2c 70 79 31 25 2c 4d  58 2c 4d 59 0d 3f 8e 1b  |%,py1%,MX,MY.?..|
00008c80  c8 96 3a c8 96 3a 86 20  70 78 31 25 2c 70 79 31  |..:..:. px1%,py1|
00008c90  25 2c 4d 58 2c 4d 59 0d  3f 98 13 70 78 32 25 3d  |%,MX,MY.?..px2%=|
00008ca0  4d 58 3a 70 79 32 25 3d  4d 59 0d 3f a2 30 c9 35  |MX:py2%=MY.?.0.5|
00008cb0  3a 86 20 70 78 31 25 2c  70 79 31 25 2c 70 78 32  |:. px1%,py1%,px2|
00008cc0  25 2c 70 79 32 25 3a df  20 4d 58 2c 4d 59 3a df  |%,py2%:. MX,MY:.|
00008cd0  20 70 78 31 25 2c 70 79  31 25 0d 3f ac 33 c8 96  | px1%,py1%.?.3..|
00008ce0  3a c8 96 3a 86 20 70 78  31 25 2c 70 79 31 25 2c  |:..:. px1%,py1%,|
00008cf0  70 78 32 25 2c 70 79 32  25 3a df 20 4d 58 2c 4d  |px2%,py2%:. MX,M|
00008d00  59 3a df 20 70 78 31 25  2c 70 79 31 25 0d 3f b6  |Y:. px1%,py1%.?.|
00008d10  13 70 78 33 25 3d 4d 58  3a 70 79 33 25 3d 4d 59  |.px3%=MX:py3%=MY|
00008d20  0d 3f c0 3c c9 36 3a 86  20 70 78 31 25 2c 70 79  |.?.<.6:. px1%,py|
00008d30  31 25 2c 70 78 32 25 2c  70 79 32 25 3a df 20 70  |1%,px2%,py2%:. p|
00008d40  78 33 25 2c 70 79 33 25  3a df 20 4d 58 2c 4d 59  |x3%,py3%:. MX,MY|
00008d50  3a df 20 70 78 31 25 2c  70 79 31 25 0d 3f ca 3f  |:. px1%,py1%.?.?|
00008d60  c8 96 3a c8 96 3a 86 20  70 78 31 25 2c 70 79 31  |..:..:. px1%,py1|
00008d70  25 2c 70 78 32 25 2c 70  79 32 25 3a df 20 70 78  |%,px2%,py2%:. px|
00008d80  33 25 2c 70 79 33 25 3a  df 20 4d 58 2c 4d 59 3a  |3%,py3%:. MX,MY:|
00008d90  df 20 70 78 31 25 2c 70  79 31 25 0d 3f d4 13 70  |. px1%,py1%.?..p|
00008da0  78 34 25 3d 4d 58 3a 70  79 34 25 3d 4d 59 0d 3f  |x4%=MX:py4%=MY.?|
00008db0  de 07 c9 37 3a 0d 3f e8  21 f2 73 6d 65 61 72 73  |...7:.?.!.smears|
00008dc0  63 72 65 65 6e 28 78 31  25 2c 79 31 25 2c 78 73  |creen(x1%,y1%,xs|
00008dd0  25 2c 79 73 25 29 0d 3f  f2 05 cb 0d 3f fc 04 0d  |%,ys%).?....?...|
00008de0  40 06 12 f4 20 50 61 72  72 61 6c 6c 6f 67 72 61  |@... Parrallogra|
00008df0  6d 0d 40 10 12 c9 32 36  3a c8 8e 20 73 74 65 70  |m.@...26:.. step|
00008e00  25 20 ca 0d 40 1a 16 c9  31 3a 70 78 31 25 3d 4d  |% ..@...1:px1%=M|
00008e10  58 3a 70 79 31 25 3d 4d  59 0d 40 24 18 c9 32 3a  |X:py1%=MY.@$..2:|
00008e20  86 20 70 78 31 25 2c 70  79 31 25 2c 4d 58 2c 4d  |. px1%,py1%,MX,M|
00008e30  59 0d 40 2e 1b c8 96 3a  c8 96 3a 86 20 70 78 31  |Y.@....:..:. px1|
00008e40  25 2c 70 79 31 25 2c 4d  58 2c 4d 59 0d 40 38 13  |%,py1%,MX,MY.@8.|
00008e50  70 78 32 25 3d 4d 58 3a  70 79 32 25 3d 4d 59 0d  |px2%=MX:py2%=MY.|
00008e60  40 42 50 c9 33 3a 86 20  70 78 31 25 2c 70 79 31  |@BP.3:. px1%,py1|
00008e70  25 2c 70 78 32 25 2c 70  79 32 25 3a df 20 4d 58  |%,px2%,py2%:. MX|
00008e80  2c 4d 59 3a df 20 70 78  31 25 2d 28 70 78 32 25  |,MY:. px1%-(px2%|
00008e90  2d 4d 58 29 2c 70 79 31  25 2d 28 70 79 32 25 2d  |-MX),py1%-(py2%-|
00008ea0  4d 59 29 3a df 20 70 78  31 25 2c 70 79 31 25 0d  |MY):. px1%,py1%.|
00008eb0  40 4c 53 c8 96 3a c8 96  3a 86 20 70 78 31 25 2c  |@LS..:..:. px1%,|
00008ec0  70 79 31 25 2c 70 78 32  25 2c 70 79 32 25 3a df  |py1%,px2%,py2%:.|
00008ed0  20 4d 58 2c 4d 59 3a df  20 70 78 31 25 2d 28 70  | MX,MY:. px1%-(p|
00008ee0  78 32 25 2d 4d 58 29 2c  70 79 31 25 2d 28 70 79  |x2%-MX),py1%-(py|
00008ef0  32 25 2d 4d 59 29 3a df  20 70 78 31 25 2c 70 79  |2%-MY):. px1%,py|
00008f00  31 25 0d 40 56 50 c9 34  3a 86 20 70 78 31 25 2c  |1%.@VP.4:. px1%,|
00008f10  70 79 31 25 2c 70 78 32  25 2c 70 79 32 25 3a df  |py1%,px2%,py2%:.|
00008f20  20 4d 58 2c 4d 59 3a df  20 70 78 31 25 2d 28 70  | MX,MY:. px1%-(p|
00008f30  78 32 25 2d 4d 58 29 2c  70 79 31 25 2d 28 70 79  |x2%-MX),py1%-(py|
00008f40  32 25 2d 4d 59 29 3a df  20 70 78 31 25 2c 70 79  |2%-MY):. px1%,py|
00008f50  31 25 0d 40 60 05 cb 0d  40 6a 04 0d 40 74 16 f4  |1%.@`...@j..@t..|
00008f60  20 50 61 72 72 61 6c 6f  67 72 61 6d 20 66 69 6c  | Parralogram fil|
00008f70  6c 0d 40 7e 12 c9 32 37  3a c8 8e 20 73 74 65 70  |l.@~..27:.. step|
00008f80  25 20 ca 0d 40 88 16 c9  31 3a 70 78 31 25 3d 4d  |% ..@...1:px1%=M|
00008f90  58 3a 70 79 31 25 3d 4d  59 0d 40 92 18 c9 32 3a  |X:py1%=MY.@...2:|
00008fa0  86 20 70 78 31 25 2c 70  79 31 25 2c 4d 58 2c 4d  |. px1%,py1%,MX,M|
00008fb0  59 0d 40 9c 1b c8 96 3a  c8 96 3a 86 20 70 78 31  |Y.@....:..:. px1|
00008fc0  25 2c 70 79 31 25 2c 4d  58 2c 4d 59 0d 40 a6 13  |%,py1%,MX,MY.@..|
00008fd0  70 78 32 25 3d 4d 58 3a  70 79 32 25 3d 4d 59 0d  |px2%=MX:py2%=MY.|
00008fe0  40 b0 50 c9 33 3a 86 20  70 78 31 25 2c 70 79 31  |@.P.3:. px1%,py1|
00008ff0  25 2c 70 78 32 25 2c 70  79 32 25 3a df 20 4d 58  |%,px2%,py2%:. MX|
00009000  2c 4d 59 3a df 20 70 78  31 25 2d 28 70 78 32 25  |,MY:. px1%-(px2%|
00009010  2d 4d 58 29 2c 70 79 31  25 2d 28 70 79 32 25 2d  |-MX),py1%-(py2%-|
00009020  4d 59 29 3a df 20 70 78  31 25 2c 70 79 31 25 0d  |MY):. px1%,py1%.|
00009030  40 ba 53 c8 96 3a c8 96  3a 86 20 70 78 31 25 2c  |@.S..:..:. px1%,|
00009040  70 79 31 25 2c 70 78 32  25 2c 70 79 32 25 3a df  |py1%,px2%,py2%:.|
00009050  20 4d 58 2c 4d 59 3a df  20 70 78 31 25 2d 28 70  | MX,MY:. px1%-(p|
00009060  78 32 25 2d 4d 58 29 2c  70 79 31 25 2d 28 70 79  |x2%-MX),py1%-(py|
00009070  32 25 2d 4d 59 29 3a df  20 70 78 31 25 2c 70 79  |2%-MY):. px1%,py|
00009080  31 25 0d 40 c4 2a c9 34  3a ec 20 70 78 31 25 2c  |1%.@.*.4:. px1%,|
00009090  70 79 31 25 3a ec 20 70  78 32 25 2c 70 79 32 25  |py1%:. px2%,py2%|
000090a0  3a f0 20 26 37 35 2c 4d  58 2c 4d 59 0d 40 ce 05  |:. &75,MX,MY.@..|
000090b0  cb 0d 40 d8 04 0d 40 e2  09 f4 20 43 6c 73 0d 40  |..@...@... Cls.@|
000090c0  ec 08 c9 32 38 3a 0d 40  f6 84 f2 65 72 72 6f 72  |...28:.@...error|
000090d0  68 61 6e 64 6c 65 28 32  2c 22 44 6f 20 79 6f 75  |handle(2,"Do you|
000090e0  20 72 65 61 6c 6c 79 20  77 69 73 68 20 74 6f 20  | really wish to |
000090f0  63 6c 65 61 72 20 74 68  65 20 73 63 72 65 65 6e  |clear the screen|
00009100  20 74 6f 20 74 68 65 20  63 75 72 72 65 6e 74 20  | to the current |
00009110  63 6f 6c 6f 75 72 20 28  4e 4f 54 45 20 59 6f 75  |colour (NOTE You|
00009120  20 63 61 6e 20 55 4e 44  4f 20 61 66 74 65 72 77  | can UNDO afterw|
00009130  61 72 64 73 29 22 2c 22  43 4f 4e 46 49 52 4d 22  |ards)","CONFIRM"|
00009140  2c 73 65 6c 65 63 74 65  64 29 0d 41 00 12 e7 20  |,selected).A... |
00009150  73 65 6c 65 63 74 65 64  3d 31 20 8c 0d 41 0a 0d  |selected=1 ..A..|
00009160  d6 20 6c 69 66 74 75 70  25 0d 41 14 21 d6 20 63  |. liftup%.A.!. c|
00009170  6f 6c 6f 75 72 25 3a c8  93 20 c8 90 20 30 2c 30  |olour%:.. .. 0,0|
00009180  2c 31 32 37 39 2c 31 30  32 33 0d 41 1e 0f d6 20  |,1279,1023.A... |
00009190  6c 69 66 74 64 6f 77 6e  25 0d 41 28 05 cd 0d 41  |liftdown%.A(...A|
000091a0  32 11 f2 72 65 73 65 74  5f 61 63 74 69 6f 6e 0d  |2..reset_action.|
000091b0  41 3c 0b f2 75 70 64 61  74 65 0d 41 46 04 0d 41  |A<..update.AF..A|
000091c0  50 21 f4 20 46 69 6c 69  6e 67 20 28 42 65 6c 69  |P!. Filing (Beli|
000091d0  65 76 65 20 69 74 20 6f  72 20 6e 6f 74 21 29 0d  |eve it or not!).|
000091e0  41 5a 10 c9 32 39 2c 33  30 2c 33 31 2c 33 32 0d  |AZ..29,30,31,32.|
000091f0  41 64 0f f2 70 6f 69 6e  74 28 30 2c 31 29 0d 41  |Ad..point(0,1).A|
00009200  6e 28 65 72 72 6f 72 63  68 65 61 74 3d 21 41 63  |n(errorcheat=!Ac|
00009210  25 3a 66 69 6c 65 6e 61  6d 65 24 3d 24 66 69 6c  |%:filename$=$fil|
00009220  65 5f 73 74 72 25 0d 41  78 1b f2 72 65 73 65 74  |e_str%.Ax..reset|
00009230  5f 61 63 74 69 6f 6e 3a  d6 20 75 70 74 72 65 65  |_action:. uptree|
00009240  25 0d 41 82 13 c8 8e 20  65 72 72 6f 72 63 68 65  |%.A.... errorche|
00009250  61 74 20 ca 0d 41 8c 3a  c9 32 39 3a ff 20 22 53  |at ..A.:.29:. "S|
00009260  4c 4f 41 44 20 22 2b 66  69 6c 65 6e 61 6d 65 24  |LOAD "+filename$|
00009270  3a 24 73 70 72 69 74 65  5f 73 74 72 25 3d 66 69  |:$sprite_str%=fi|
00009280  6c 65 6e 61 6d 65 24 3a  21 70 6d 25 3d 32 0d 41  |lename$:!pm%=2.A|
00009290  96 3b c9 33 30 3a ff 20  22 53 4d 45 52 47 45 20  |.;.30:. "SMERGE |
000092a0  22 2b 66 69 6c 65 6e 61  6d 65 24 3a 24 73 70 72  |"+filename$:$spr|
000092b0  69 74 65 5f 73 74 72 25  3d 66 69 6c 65 6e 61 6d  |ite_str%=filenam|
000092c0  65 24 3a 21 70 6d 25 3d  32 0d 41 a0 07 c9 33 31  |e$:!pm%=2.A...31|
000092d0  0d 41 aa 19 d6 20 6c 69  66 74 75 70 25 3a d6 20  |.A... liftup%:. |
000092e0  75 6e 64 6f 73 61 76 65  25 0d 41 b4 1a 24 73 63  |undosave%.A..$sc|
000092f0  72 65 65 6e 5f 73 74 72  25 3d 66 69 6c 65 6e 61  |reen_str%=filena|
00009300  6d 65 24 0d 41 be 0c c8  8e 20 6f 73 25 20 ca 0d  |me$.A.... os% ..|
00009310  41 c8 21 c9 31 3a 42 25  3d 66 69 6c 65 5f 73 74  |A.!.1:B%=file_st|
00009320  72 25 3a d6 20 73 63 72  65 65 6e 6c 6f 61 64 25  |r%:. screenload%|
00009330  0d 41 d2 20 7f 3a ff 20  22 53 43 52 45 45 4e 4c  |.A. .:. "SCREENL|
00009340  4f 41 44 20 22 2b 24 66  69 6c 65 5f 73 74 72 25  |OAD "+$file_str%|
00009350  0d 41 dc 05 cb 0d 41 e6  0d e7 20 eb 3c 3e 31 35  |.A....A... .<>15|
00009360  20 8c 0d 41 f0 19 c8 99  20 22 4f 53 5f 52 65 6d  | ..A.... "OS_Rem|
00009370  6f 76 65 43 75 72 73 6f  72 73 22 0d 41 fa 0d c8  |oveCursors".A...|
00009380  8e 20 bf 28 30 29 20 ca  0d 42 04 0c c9 22 44 22  |. .(0) ..B..."D"|
00009390  2c 22 64 22 0d 42 0e 23  e3 20 52 3d 30 20 b8 20  |,"d".B.#. R=0 . |
000093a0  31 35 3a fb 20 52 2c 52  3c 3c 34 2c 52 3c 3c 34  |15:. R,R<<4,R<<4|
000093b0  2c 52 3c 3c 34 3a ed 0d  42 18 0c c9 22 49 22 2c  |,R<<4:..B..."I",|
000093c0  22 69 22 0d 42 22 26 e3  20 52 3d 30 20 b8 20 31  |"i".B"&. R=0 . 1|
000093d0  35 3a fb 20 31 35 2d 52  2c 52 3c 3c 34 2c 52 3c  |5:. 15-R,R<<4,R<|
000093e0  3c 34 2c 52 3c 3c 34 3a  ed 0d 42 2c 05 cb 0d 42  |<4,R<<4:..B,...B|
000093f0  36 0e ea 20 85 3a 65 72  72 25 3d a3 0d 42 40 17  |6.. .:err%=..B@.|
00009400  ee 20 85 20 ea 20 65 72  72 25 3d b9 3a e5 20 8d  |. . . err%=.:. .|
00009410  40 5e 42 0d 42 4a 12 d6  20 63 6f 6e 76 65 72 74  |@^B.BJ.. convert|
00009420  6d 6f 64 65 25 0d 42 54  1a 24 73 63 72 65 65 6e  |mode%.BT.$screen|
00009430  5f 73 74 72 25 3d 66 69  6c 65 6e 61 6d 65 24 0d  |_str%=filename$.|
00009440  42 5e 07 eb 31 35 0d 42  68 07 f7 20 85 0d 42 72  |B^..15.Bh.. ..Br|
00009450  19 c8 99 20 22 4f 53 5f  52 65 6d 6f 76 65 43 75  |... "OS_RemoveCu|
00009460  72 73 6f 72 73 22 0d 42  7c 12 d6 20 75 6e 64 6f  |rsors".B|.. undo|
00009470  72 65 73 74 6f 72 65 25  0d 42 86 13 e7 20 65 72  |restore%.B... er|
00009480  72 25 20 8c 20 85 20 9f  2c f6 24 0d 42 90 05 cd  |r% . . .,.$.B...|
00009490  0d 42 9a 0f d6 20 6c 69  66 74 64 6f 77 6e 25 0d  |.B... liftdown%.|
000094a0  42 a4 20 c9 33 32 3a f2  66 6f 72 6d 75 6c 61 5f  |B. .32:.formula_|
000094b0  6c 6f 61 64 28 66 69 6c  65 6e 61 6d 65 24 29 0d  |load(filename$).|
000094c0  42 ae 05 cb 0d 42 b8 0b  f2 75 70 64 61 74 65 0d  |B....B...update.|
000094d0  42 c2 04 0d 42 cc 19 f4  20 46 75 6e 63 74 69 6f  |B...B... Functio|
000094e0  6e 20 33 33 20 3d 20 64  75 6d 6d 79 0d 42 d6 04  |n 33 = dummy.B..|
000094f0  0d 42 e0 15 f4 20 45 76  61 6c 20 45 78 70 72 65  |.B... Eval Expre|
00009500  73 73 69 6f 6e 0d 42 ea  26 c9 33 34 3a 21 70 75  |ssion.B.&.34:!pu|
00009510  74 69 74 25 3d 31 3a f2  70 6f 69 6e 74 28 30 2c  |tit%=1:.point(0,|
00009520  50 4e 6b 65 79 62 6f 61  72 64 29 0d 42 f4 1b f2  |PNkeyboard).B...|
00009530  72 65 73 65 74 5f 61 63  74 69 6f 6e 3a d6 20 75  |reset_action:. u|
00009540  70 74 72 65 65 25 0d 42  fe 28 41 25 3d 2d 31 32  |ptree%.B.(A%=-12|
00009550  38 3a 42 25 3d 21 73 74  61 72 74 79 25 2b 35 36  |8:B%=!starty%+56|
00009560  3a 45 25 3d 2d 31 3a d6  20 68 65 6c 70 25 0d 43  |:E%=-1:. help%.C|
00009570  08 2f 41 25 3d 2d 31 32  38 3a 42 25 3d 21 73 74  |./A%=-128:B%=!st|
00009580  61 72 74 79 25 2d 21 73  69 7a 65 79 2d 39 36 3a  |arty%-!sizey-96:|
00009590  45 25 3d 2d 31 3a d6 20  68 65 6c 70 25 0d 43 12  |E%=-1:. help%.C.|
000095a0  0b 73 74 65 70 25 3d 31  0d 43 1c 05 f5 0d 43 26  |.step%=1.C....C&|
000095b0  34 64 75 6d 6d 79 3d a4  69 6e 73 74 72 69 6e 67  |4dummy=.instring|
000095c0  28 33 32 2c 31 32 36 2c  65 76 61 6c 24 2c 6f 75  |(32,126,eval$,ou|
000095d0  74 24 2c 32 35 35 29 3a  e7 20 64 75 6d 6d 79 20  |t$,255):. dummy |
000095e0  8c 0d 43 30 26 21 73 74  61 72 74 79 25 2d 3d 33  |..C0&!starty%-=3|
000095f0  32 3a f2 42 55 54 4f 46  46 28 37 29 3a 65 76 61  |2:.BUTOFF(7):eva|
00009600  6c 24 3d 6f 75 74 24 0d  43 3a 35 f2 65 76 61 6c  |l$=out$.C:5.eval|
00009610  5f 65 72 72 6f 72 5f 63  68 65 61 74 3a 64 75 6d  |_error_cheat:dum|
00009620  6d 79 3d a4 69 6e 73 74  72 69 6e 67 28 33 32 2c  |my=.instring(32,|
00009630  31 32 36 2c 74 24 2c 74  24 2c 31 29 0d 43 44 05  |126,t$,t$,1).CD.|
00009640  cd 0d 43 4e 1b 21 73 74  61 72 74 79 25 2b 3d 33  |..CN.!starty%+=3|
00009650  32 3a f2 42 55 54 4f 46  46 28 37 29 0d 43 58 0d  |2:.BUTOFF(7).CX.|
00009660  fd 20 ac 20 64 75 6d 6d  79 0d 43 62 1e d6 20 6c  |. . dummy.Cb.. l|
00009670  69 66 74 75 70 25 3a d6  20 70 75 74 62 61 63 6b  |iftup%:. putback|
00009680  67 72 6f 75 6e 64 25 0d  43 6c 10 f2 72 65 73 65  |ground%.Cl..rese|
00009690  74 5f 65 6e 74 72 79 0d  43 76 04 0d 43 80 19 f4  |t_entry.Cv..C...|
000096a0  20 50 61 74 74 65 72 6e  20 26 20 42 72 75 73 68  | Pattern & Brush|
000096b0  20 67 65 74 0d 43 8a 15  c9 33 35 2c 33 36 3a c8  | get.C...35,36:.|
000096c0  8e 20 73 74 65 70 25 20  ca 0d 43 94 1b c9 31 3a  |. step% ..C...1:|
000096d0  c8 93 20 4d 58 2d 33 32  2c 4d 59 2d 33 32 2c 36  |.. MX-32,MY-32,6|
000096e0  32 2c 36 30 0d 43 9e 1e  c8 96 3a c8 96 3a c8 93  |2,60.C....:..:..|
000096f0  20 4d 58 2d 33 32 2c 4d  59 2d 33 32 2c 36 32 2c  | MX-32,MY-32,62,|
00009700  36 30 0d 43 a8 29 c9 32  3a 41 25 3d 28 4d 58 20  |60.C.).2:A%=(MX |
00009710  81 20 32 29 2d 31 36 3a  42 25 3d 32 35 35 2d 28  |. 2)-16:B%=255-(|
00009720  28 4d 59 20 81 20 34 29  2b 37 29 0d 43 b2 0d c8  |(MY . 4)+7).C...|
00009730  8e 20 21 41 63 25 20 ca  0d 43 bc 13 c9 33 35 3a  |. !Ac% ..C...35:|
00009740  d6 20 62 72 75 73 68 67  65 74 25 0d 43 c6 13 c9  |. brushget%.C...|
00009750  33 36 3a d6 20 73 68 61  70 65 67 65 74 25 0d 43  |36:. shapeget%.C|
00009760  d0 05 cb 0d 43 da 05 cb  0d 43 e4 04 0d 43 ee 10  |....C....C...C..|
00009770  f4 20 53 70 72 69 74 65  20 70 75 74 0d 43 f8 16  |. Sprite put.C..|
00009780  c9 33 37 3a e7 20 a4 70  75 74 5f 63 68 65 63 6b  |.37:. .put_check|
00009790  20 8c 0d 44 02 0e c8 8e  20 73 74 65 70 25 20 ca  | ..D.... step% .|
000097a0  0d 44 0c 2e c9 31 3a 4d  58 3d 28 4d 58 20 81 20  |.D...1:MX=(MX . |
000097b0  32 29 2a 32 3a 4d 59 3d  28 4d 59 20 81 20 34 29  |2)*2:MY=(MY . 4)|
000097c0  2a 34 3a f2 73 70 72 69  74 65 73 6f 72 74 0d 44  |*4:.spritesort.D|
000097d0  16 1b c8 93 20 4d 58 2c  4d 59 2c 78 73 25 2d 32  |.... MX,MY,xs%-2|
000097e0  2c 2d 28 79 73 25 2b 34  29 0d 44 20 21 c8 96 3a  |,-(ys%+4).D !..:|
000097f0  c8 96 3a c8 93 20 4d 58  2c 4d 59 2c 78 73 25 2d  |..:.. MX,MY,xs%-|
00009800  32 2c 2d 28 79 73 25 2b  34 29 0d 44 2a 12 c9 32  |2,-(ys%+4).D*..2|
00009810  3a f2 73 70 72 69 74 65  73 6f 72 74 0d 44 34 0c  |:.spritesort.D4.|
00009820  41 25 3d 78 31 25 81 32  0d 44 3e 12 42 25 3d 32  |A%=x1%.2.D>.B%=2|
00009830  35 35 2d 28 79 31 25 81  34 29 0d 44 48 0c 43 25  |55-(y1%.4).DH.C%|
00009840  3d 78 73 25 81 32 0d 44  52 0d 44 25 3d 2d 79 73  |=xs%.2.DR.D%=-ys|
00009850  25 81 34 0d 44 5c 0c 45  25 3d 4d 58 20 81 32 0d  |%.4.D\.E%=MX .2.|
00009860  44 66 1c 46 25 3d 32 35  35 2d 28 4d 59 20 81 34  |Df.F%=255-(MY .4|
00009870  29 2b 28 79 73 25 2b 34  29 81 34 0d 44 70 08 47  |)+(ys%+4).4.Dp.G|
00009880  25 3d 32 0d 44 7a 19 d6  20 70 75 74 73 63 72 65  |%=2.Dz.. putscre|
00009890  65 6e 72 65 63 74 61 6e  67 6c 65 25 0d 44 84 05  |enrectangle%.D..|
000098a0  cb 0d 44 8e 05 cd 0d 44  98 04 0d 44 a2 10 f4 20  |..D....D...D... |
000098b0  47 65 74 20 53 70 72 69  74 65 0d 44 ac 12 c9 33  |Get Sprite.D...3|
000098c0  38 3a c8 8e 20 73 74 65  70 25 20 ca 0d 44 b6 16  |8:.. step% ..D..|
000098d0  c9 31 2c 32 3a f2 67 65  74 72 65 63 74 61 6e 67  |.1,2:.getrectang|
000098e0  6c 65 0d 44 c0 10 c9 33  3a f2 73 6f 72 74 63 6f  |le.D...3:.sortco|
000098f0  72 64 0d 44 ca 1f 41 25  3d 78 31 25 3a 42 25 3d  |rd.D..A%=x1%:B%=|
00009900  79 31 25 3a 43 25 3d 78  32 25 3a 44 25 3d 79 32  |y1%:C%=x2%:D%=y2|
00009910  25 0d 44 d4 0f f2 70 6f  69 6e 74 28 30 2c 30 29  |%.D...point(0,0)|
00009920  0d 44 de 16 24 73 70 72  73 74 72 25 3d 67 5f 73  |.D..$sprstr%=g_s|
00009930  70 72 69 74 65 24 0d 44  e8 1a d6 20 67 65 74 73  |prite$.D... gets|
00009940  70 72 69 74 65 66 72 6f  6d 73 63 72 65 65 6e 25  |pritefromscreen%|
00009950  0d 44 f2 0b f2 75 70 64  61 74 65 0d 44 fc 05 cb  |.D...update.D...|
00009960  0d 45 06 04 0d 45 10 12  f4 20 53 61 76 65 20 53  |.E...E... Save S|
00009970  70 72 69 74 65 73 0d 45  1a 2c c9 33 39 3a e7 20  |prites.E.,.39:. |
00009980  a4 74 65 78 74 5f 65 6e  74 72 79 28 33 33 2c 24  |.text_entry(33,$|
00009990  73 70 72 69 74 65 5f 73  74 72 25 2c 32 35 35 29  |sprite_str%,255)|
000099a0  20 8c 0d 45 24 31 f2 70  6f 69 6e 74 28 30 2c 31  | ..E$1.point(0,1|
000099b0  29 3a ff 20 22 53 53 41  56 45 20 22 2b 6f 75 74  |):. "SSAVE "+out|
000099c0  24 3a 24 73 70 72 69 74  65 5f 73 74 72 25 3d 6f  |$:$sprite_str%=o|
000099d0  75 74 24 0d 45 2e 05 cd  0d 45 38 10 f2 72 65 73  |ut$.E....E8..res|
000099e0  65 74 5f 65 6e 74 72 79  0d 45 42 04 0d 45 4c 12  |et_entry.EB..EL.|
000099f0  f4 20 53 70 72 69 74 65  20 73 6d 65 61 72 0d 45  |. Sprite smear.E|
00009a00  56 16 c9 34 30 3a e7 20  a4 70 75 74 5f 63 68 65  |V..40:. .put_che|
00009a10  63 6b 20 8c 0d 45 60 0e  c8 8e 20 73 74 65 70 25  |ck ..E`... step%|
00009a20  20 ca 0d 45 6a 2e c9 31  3a 4d 58 3d 28 4d 58 20  | ..Ej..1:MX=(MX |
00009a30  81 20 32 29 2a 32 3a 4d  59 3d 28 4d 59 20 81 20  |. 2)*2:MY=(MY . |
00009a40  34 29 2a 34 3a f2 73 70  72 69 74 65 73 6f 72 74  |4)*4:.spritesort|
00009a50  0d 45 74 1b c8 93 20 4d  58 2c 4d 59 2c 78 73 25  |.Et... MX,MY,xs%|
00009a60  2d 32 2c 2d 28 79 73 25  2b 34 29 0d 45 7e 21 c8  |-2,-(ys%+4).E~!.|
00009a70  96 3a c8 96 3a c8 93 20  4d 58 2c 4d 59 2c 78 73  |.:..:.. MX,MY,xs|
00009a80  25 2d 32 2c 2d 28 79 73  25 2b 34 29 0d 45 88 12  |%-2,-(ys%+4).E..|
00009a90  c9 32 3a f2 73 70 72 69  74 65 73 6f 72 74 0d 45  |.2:.spritesort.E|
00009aa0  92 19 ff 20 22 53 43 48  4f 4f 53 45 20 22 2b 24  |... "SCHOOSE "+$|
00009ab0  73 70 72 73 74 72 25 0d  45 9c 09 e6 20 38 2c 30  |sprstr%.E... 8,0|
00009ac0  0d 45 a6 05 f5 0d 45 b0  11 f2 6d 6f 75 73 65 5f  |.E....E...mouse_|
00009ad0  68 61 6e 64 6c 65 0d 45  ba 0f f0 20 26 45 44 2c  |handle.E... &ED,|
00009ae0  4d 58 2c 4d 59 0d 45 c4  0a fd 20 4d 42 3d 30 0d  |MX,MY.E... MB=0.|
00009af0  45 ce 05 cb 0d 45 d8 05  cd 0d 45 e2 04 0d 45 ec  |E....E....E...E.|
00009b00  13 f4 20 50 72 69 6e 74  65 72 20 44 75 6d 70 73  |.. Printer Dumps|
00009b10  0d 45 f6 07 c9 34 31 0d  46 00 11 f2 72 65 73 65  |.E...41.F...rese|
00009b20  74 5f 61 63 74 69 6f 6e  0d 46 0a 0b 2a 46 58 20  |t_action.F..*FX |
00009b30  32 32 39 0d 46 14 0d d6  20 6c 69 66 74 75 70 25  |229.F... liftup%|
00009b40  0d 46 1e 2b 41 24 3d 22  53 43 52 45 45 4e 44 55  |.F.+A$="SCREENDU|
00009b50  4d 50 20 30 20 22 2b c3  7e 28 21 6c 69 6e 65 5f  |MP 0 "+.~(!line_|
00009b60  73 65 6c 65 63 74 65 64  2d 31 29 0d 46 28 08 ff  |selected-1).F(..|
00009b70  20 41 24 0d 46 32 0f d6  20 6c 69 66 74 64 6f 77  | A$.F2.. liftdow|
00009b80  6e 25 0d 46 3c 0b f2 75  70 64 61 74 65 0d 46 46  |n%.F<..update.FF|
00009b90  04 0d 46 50 13 f4 20 44  65 6c 65 74 65 20 53 70  |..FP.. Delete Sp|
00009ba0  72 69 74 65 0d 46 5a 07  c9 34 32 0d 46 64 10 e7  |rite.FZ..42.Fd..|
00009bb0  20 a4 73 70 72 69 74 65  73 20 8c 0d 46 6e 2c c8  | .sprites ..Fn,.|
00009bc0  99 20 26 32 45 2c 31 33  2c 2c 73 70 72 73 74 72  |. &2E,13,,sprstr|
00009bd0  25 2c 33 30 2c 21 73 70  72 73 65 6c 25 20 b8 20  |%,30,!sprsel% . |
00009be0  2c 2c 2c 6c 65 6e 67 0d  46 78 18 3f 28 73 70 72  |,,,leng.Fx.?(spr|
00009bf0  73 74 72 25 2b 6c 65 6e  67 2b 31 29 3d 31 33 0d  |str%+leng+1)=13.|
00009c00  46 82 5a f2 65 72 72 6f  72 68 61 6e 64 6c 65 28  |F.Z.errorhandle(|
00009c10  32 2c 22 44 6f 20 79 6f  75 20 72 65 61 6c 6c 79  |2,"Do you really|
00009c20  20 77 69 73 68 20 74 6f  20 64 65 6c 65 74 65 20  | wish to delete |
00009c30  74 68 65 20 73 70 72 69  74 65 20 22 2b 24 73 70  |the sprite "+$sp|
00009c40  72 73 74 72 25 2c 22 43  6f 6e 66 69 72 6d 22 2c  |rstr%,"Confirm",|
00009c50  73 65 6c 65 63 74 65 64  29 0d 46 8c 12 e7 20 73  |selected).F... s|
00009c60  65 6c 65 63 74 65 64 3d  31 20 8c 0d 46 96 18 ff  |elected=1 ..F...|
00009c70  22 53 44 45 4c 45 54 45  20 22 2b 24 73 70 72 73  |"SDELETE "+$sprs|
00009c80  74 72 25 0d 46 a0 2b e7  20 21 73 70 72 73 65 6c  |tr%.F.+. !sprsel|
00009c90  25 3e a4 73 70 72 69 74  65 73 20 8c 20 21 73 70  |%>.sprites . !sp|
00009ca0  72 73 65 6c 25 3d a4 73  70 72 69 74 65 73 0d 46  |rsel%=.sprites.F|
00009cb0  aa 1d e7 20 21 73 70 72  73 65 6c 25 3c 31 20 8c  |... !sprsel%<1 .|
00009cc0  20 21 73 70 72 73 65 6c  25 3d 31 0d 46 b4 05 cd  | !sprsel%=1.F...|
00009cd0  0d 46 be 05 cc 0d 46 c8  07 ef 20 37 0d 46 d2 05  |.F....F... 7.F..|
00009ce0  cd 0d 46 dc 19 f2 72 65  73 65 74 5f 61 63 74 69  |..F...reset_acti|
00009cf0  6f 6e 3a f2 75 70 64 61  74 65 0d 46 e6 04 0d 46  |on:.update.F...F|
00009d00  f0 0b f4 20 6f 73 63 6c  69 0d 46 fa 08 c9 34 33  |... oscli.F...43|
00009d10  3a 0d 47 04 10 f2 6f 73  63 6c 69 61 63 74 69 6f  |:.G...oscliactio|
00009d20  6e 0d 47 0e 10 f2 63 68  65 63 6b 64 75 6d 70 65  |n.G...checkdumpe|
00009d30  72 0d 47 18 04 0d 47 22  21 f4 20 41 6e 74 69 20  |r.G...G"!. Anti |
00009d40  61 6c 69 61 73 65 64 20  74 65 78 74 20 74 6f 20  |aliased text to |
00009d50  73 63 72 65 65 6e 0d 47  2c 12 c9 34 34 3a c8 8e  |screen.G,..44:..|
00009d60  20 73 74 65 70 25 20 ca  0d 47 36 14 c9 31 3a f2  | step% ..G6..1:.|
00009d70  67 65 74 72 65 63 74 61  6e 67 6c 65 0d 47 40 14  |getrectangle.G@.|
00009d80  c9 32 3a f2 67 65 74 72  65 63 74 61 6e 67 6c 65  |.2:.getrectangle|
00009d90  0d 47 4a 10 c9 33 3a f2  73 6f 72 74 63 6f 72 64  |.GJ..3:.sortcord|
00009da0  0d 47 54 1d 74 69 6e 74  25 3d 28 28 21 70 63 25  |.GT.tint%=((!pc%|
00009db0  20 80 20 31 39 32 29 20  3e 3e 20 32 29 0d 47 5e  | . 192) >> 2).G^|
00009dc0  20 72 65 64 25 3d 74 69  6e 74 25 2b 28 28 21 70  | red%=tint%+((!p|
00009dd0  63 25 20 80 20 33 29 20  3c 3c 20 36 29 0d 47 68  |c% . 3) << 6).Gh|
00009de0  21 67 72 6e 25 3d 74 69  6e 74 25 2b 28 28 21 70  |!grn%=tint%+((!p|
00009df0  63 25 20 80 20 31 32 29  20 3c 3c 20 34 29 0d 47  |c% . 12) << 4).G|
00009e00  72 21 62 6c 75 25 3d 74  69 6e 74 25 2b 28 28 21  |r!blu%=tint%+((!|
00009e10  70 63 25 20 80 20 34 38  29 20 3c 3c 20 32 29 0d  |pc% . 48) << 2).|
00009e20  47 7c 19 74 69 6e 74 32  25 3d c8 9c 28 4d 58 2c  |G|.tint2%=..(MX,|
00009e30  4d 59 29 20 3e 3e 20 32  0d 47 86 11 62 61 63 6b  |MY) >> 2.G..back|
00009e40  25 3d b0 4d 58 2c 4d 59  29 0d 47 90 23 72 65 64  |%=.MX,MY).G.#red|
00009e50  32 25 3d 74 69 6e 74 32  25 2b 28 28 62 61 63 6b  |2%=tint2%+((back|
00009e60  25 20 80 20 33 29 20 3c  3c 20 36 29 0d 47 9a 24  |% . 3) << 6).G.$|
00009e70  67 72 6e 32 25 3d 74 69  6e 74 32 25 2b 28 28 62  |grn2%=tint2%+((b|
00009e80  61 63 6b 25 20 80 20 31  32 29 20 3c 3c 20 34 29  |ack% . 12) << 4)|
00009e90  0d 47 a4 24 62 6c 75 32  25 3d 74 69 6e 74 32 25  |.G.$blu2%=tint2%|
00009ea0  2b 28 28 62 61 63 6b 25  20 80 20 34 38 29 20 3c  |+((back% . 48) <|
00009eb0  3c 20 32 29 0d 47 ae 1d  46 4f 4e 54 24 3d 24 70  |< 2).G..FONT$=$p|
00009ec0  72 65 73 65 6e 74 66 6f  6e 74 25 2b bd 28 31 33  |resentfont%+.(13|
00009ed0  29 0d 47 b8 33 ef 20 32  33 2c 32 35 2c 26 46 46  |).G.3. 23,25,&FF|
00009ee0  2c 31 35 2c 72 65 64 32  25 2c 67 72 6e 32 25 2c  |,15,red2%,grn2%,|
00009ef0  62 6c 75 32 25 2c 72 65  64 25 2c 67 72 6e 25 2c  |blu2%,red%,grn%,|
00009f00  62 6c 75 25 0d 47 c2 42  c8 99 20 22 46 6f 6e 74  |blu%.G.B.. "Font|
00009f10  5f 46 69 6e 64 46 6f 6e  74 22 2c 2c 46 4f 4e 54  |_FindFont",,FONT|
00009f20  24 2c 33 32 30 2c 33 32  30 2c 30 2c 30 20 b8 20  |$,320,320,0,0 . |
00009f30  72 6f 6d 61 6e 25 20 20  3a f4 20 3b 73 63 72 61  |roman%  :. ;scra|
00009f40  70 73 69 7a 65 73 0d 47  cc 3b c8 99 20 22 46 6f  |psizes.G.;.. "Fo|
00009f50  6e 74 5f 53 74 72 69 6e  67 42 42 6f 78 22 2c 2c  |nt_StringBBox",,|
00009f60  61 74 65 78 74 24 20 b8  20 2c 78 6d 69 6e 25 2c  |atext$ . ,xmin%,|
00009f70  79 6d 69 6e 25 2c 78 6d  61 78 25 2c 79 6d 61 78  |ymin%,xmax%,ymax|
00009f80  25 0d 47 d6 2f 78 73 69  7a 65 25 3d 94 28 78 6d  |%.G./xsize%=.(xm|
00009f90  61 78 25 2d 78 6d 69 6e  25 29 3a 79 73 69 7a 65  |ax%-xmin%):ysize|
00009fa0  25 3d 94 28 79 6d 61 78  25 2d 79 6d 69 6e 25 29  |%=.(ymax%-ymin%)|
00009fb0  0d 47 e0 30 c8 99 20 22  46 6f 6e 74 5f 52 65 61  |.G.0.. "Font_Rea|
00009fc0  64 53 63 61 6c 65 46 61  63 74 6f 72 22 20 b8 20  |dScaleFactor" . |
00009fd0  2c 78 73 63 61 6c 65 25  2c 79 73 63 61 6c 65 25  |,xscale%,yscale%|
00009fe0  0d 47 ea 2a 70 73 69 7a  65 78 25 3d 28 78 32 25  |.G.*psizex%=(x2%|
00009ff0  2d 78 31 25 29 2a 33 32  30 2f 28 78 73 69 7a 65  |-x1%)*320/(xsize|
0000a000  25 2f 78 73 63 61 6c 65  25 29 0d 47 f4 2a 70 73  |%/xscale%).G.*ps|
0000a010  69 7a 65 79 25 3d 28 79  31 25 2d 79 32 25 29 2a  |izey%=(y1%-y2%)*|
0000a020  33 32 30 2f 28 79 73 69  7a 65 25 2f 79 73 63 61  |320/(ysize%/ysca|
0000a030  6c 65 25 29 0d 47 fe 23  78 6f 25 3d 28 78 6d 69  |le%).G.#xo%=(xmi|
0000a040  6e 25 2f 78 73 63 61 6c  65 25 29 2a 70 73 69 7a  |n%/xscale%)*psiz|
0000a050  65 78 25 2f 33 32 30 0d  48 08 23 79 6f 25 3d 28  |ex%/320.H.#yo%=(|
0000a060  79 6d 69 6e 25 2f 79 73  63 61 6c 65 25 29 2a 70  |ymin%/yscale%)*p|
0000a070  73 69 7a 65 79 25 2f 33  32 30 0d 48 12 3a c8 99  |sizey%/320.H.:..|
0000a080  20 22 46 6f 6e 74 5f 46  69 6e 64 46 6f 6e 74 22  | "Font_FindFont"|
0000a090  2c 2c 46 4f 4e 54 24 2c  70 73 69 7a 65 78 25 2c  |,,FONT$,psizex%,|
0000a0a0  70 73 69 7a 65 79 25 2c  30 2c 30 20 b8 20 72 6f  |psizey%,0,0 . ro|
0000a0b0  6d 61 6e 25 0d 48 1c 32  c8 99 20 22 46 6f 6e 74  |man%.H.2.. "Font|
0000a0c0  5f 50 61 69 6e 74 22 2c  2c 61 74 65 78 74 24 2c  |_Paint",,atext$,|
0000a0d0  25 31 30 30 30 30 2c 78  31 25 2d 78 6f 25 2c 79  |%10000,x1%-xo%,y|
0000a0e0  32 25 2d 79 6f 25 0d 48  26 0f fb 20 36 33 20 c8  |2%-yo%.H&.. 63 .|
0000a0f0  9c 20 31 39 32 0d 48 30  05 cb 0d 48 3a 04 0d 48  |. 192.H0...H:..H|
0000a100  44 1d f4 20 41 6e 74 69  20 62 6f 78 20 74 65 78  |D.. Anti box tex|
0000a110  74 20 74 6f 20 73 63 72  65 65 6e 0d 48 4e 12 c9  |t to screen.HN..|
0000a120  34 35 3a c8 8e 20 73 74  65 70 25 20 ca 0d 48 58  |45:.. step% ..HX|
0000a130  07 c9 31 3a 0d 48 62 1d  46 4f 4e 54 24 3d 24 70  |..1:.Hb.FONT$=$p|
0000a140  72 65 73 65 6e 74 66 6f  6e 74 25 2b bd 28 31 33  |resentfont%+.(13|
0000a150  29 0d 48 6c 43 c8 99 20  22 46 6f 6e 74 5f 46 69  |).HlC.. "Font_Fi|
0000a160  6e 64 46 6f 6e 74 22 2c  2c 46 4f 4e 54 24 2c 33  |ndFont",,FONT$,3|
0000a170  32 30 2c 33 32 30 2c 30  2c 30 20 b8 20 72 6f 6d  |20,320,0,0 . rom|
0000a180  61 6e 25 20 20 20 3a f4  20 3b 73 63 72 61 70 73  |an%   :. ;scraps|
0000a190  69 7a 65 73 0d 48 76 3b  c8 99 20 22 46 6f 6e 74  |izes.Hv;.. "Font|
0000a1a0  5f 53 74 72 69 6e 67 42  42 6f 78 22 2c 2c 61 74  |_StringBBox",,at|
0000a1b0  65 78 74 24 20 b8 20 2c  78 6d 69 6e 25 2c 79 6d  |ext$ . ,xmin%,ym|
0000a1c0  69 6e 25 2c 78 6d 61 78  25 2c 79 6d 61 78 25 0d  |in%,xmax%,ymax%.|
0000a1d0  48 80 2f 78 73 69 7a 65  25 3d 94 28 78 6d 61 78  |H./xsize%=.(xmax|
0000a1e0  25 2d 78 6d 69 6e 25 29  3a 79 73 69 7a 65 25 3d  |%-xmin%):ysize%=|
0000a1f0  94 28 79 6d 61 78 25 2d  79 6d 69 6e 25 29 0d 48  |.(ymax%-ymin%).H|
0000a200  8a 30 c8 99 20 22 46 6f  6e 74 5f 52 65 61 64 53  |.0.. "Font_ReadS|
0000a210  63 61 6c 65 46 61 63 74  6f 72 22 20 b8 20 2c 78  |caleFactor" . ,x|
0000a220  73 63 61 6c 65 25 2c 79  73 63 61 6c 65 25 0d 48  |scale%,yscale%.H|
0000a230  94 24 78 73 25 3d 28 78  73 69 7a 65 25 2f 78 73  |.$xs%=(xsize%/xs|
0000a240  63 61 6c 65 25 29 2a 70  73 69 7a 65 78 25 2f 33  |cale%)*psizex%/3|
0000a250  32 30 0d 48 9e 24 79 73  25 3d 28 79 73 69 7a 65  |20.H.$ys%=(ysize|
0000a260  25 2f 79 73 63 61 6c 65  25 29 2a 70 73 69 7a 65  |%/yscale%)*psize|
0000a270  79 25 2f 33 32 30 0d 48  a8 23 78 6f 25 3d 28 78  |y%/320.H.#xo%=(x|
0000a280  6d 69 6e 25 2f 78 73 63  61 6c 65 25 29 2a 70 73  |min%/xscale%)*ps|
0000a290  69 7a 65 78 25 2f 33 32  30 0d 48 b2 23 79 6f 25  |izex%/320.H.#yo%|
0000a2a0  3d 28 79 6d 69 6e 25 2f  79 73 63 61 6c 65 25 29  |=(ymin%/yscale%)|
0000a2b0  2a 70 73 69 7a 65 79 25  2f 33 32 30 0d 48 bc 1c  |*psizey%/320.H..|
0000a2c0  c8 93 20 4d 58 2b 78 6f  25 2c 4d 59 2b 79 6f 25  |.. MX+xo%,MY+yo%|
0000a2d0  2c 78 73 25 2c 79 73 25  0d 48 c6 09 c8 96 3a c8  |,xs%,ys%.H....:.|
0000a2e0  96 0d 48 d0 1c c8 93 20  4d 58 2b 78 6f 25 2c 4d  |..H.... MX+xo%,M|
0000a2f0  59 2b 79 6f 25 2c 78 73  25 2c 79 73 25 0d 48 da  |Y+yo%,xs%,ys%.H.|
0000a300  07 c9 32 3a 0d 48 e4 1d  74 69 6e 74 25 3d 28 28  |..2:.H..tint%=((|
0000a310  21 70 63 25 20 80 20 31  39 32 29 20 3e 3e 20 32  |!pc% . 192) >> 2|
0000a320  29 0d 48 ee 20 72 65 64  25 3d 74 69 6e 74 25 2b  |).H. red%=tint%+|
0000a330  28 28 21 70 63 25 20 80  20 33 29 20 3c 3c 20 36  |((!pc% . 3) << 6|
0000a340  29 0d 48 f8 21 67 72 6e  25 3d 74 69 6e 74 25 2b  |).H.!grn%=tint%+|
0000a350  28 28 21 70 63 25 20 80  20 31 32 29 20 3c 3c 20  |((!pc% . 12) << |
0000a360  34 29 0d 49 02 21 62 6c  75 25 3d 74 69 6e 74 25  |4).I.!blu%=tint%|
0000a370  2b 28 28 21 70 63 25 20  80 20 34 38 29 20 3c 3c  |+((!pc% . 48) <<|
0000a380  20 32 29 0d 49 0c 19 74  69 6e 74 32 25 3d c8 9c  | 2).I..tint2%=..|
0000a390  28 4d 58 2c 4d 59 29 20  3e 3e 20 32 0d 49 16 11  |(MX,MY) >> 2.I..|
0000a3a0  62 61 63 6b 25 3d b0 4d  58 2c 4d 59 29 0d 49 20  |back%=.MX,MY).I |
0000a3b0  23 72 65 64 32 25 3d 74  69 6e 74 32 25 2b 28 28  |#red2%=tint2%+((|
0000a3c0  62 61 63 6b 25 20 80 20  33 29 20 3c 3c 20 36 29  |back% . 3) << 6)|
0000a3d0  0d 49 2a 24 67 72 6e 32  25 3d 74 69 6e 74 32 25  |.I*$grn2%=tint2%|
0000a3e0  2b 28 28 62 61 63 6b 25  20 80 20 31 32 29 20 3c  |+((back% . 12) <|
0000a3f0  3c 20 34 29 0d 49 34 24  62 6c 75 32 25 3d 74 69  |< 4).I4$blu2%=ti|
0000a400  6e 74 32 25 2b 28 28 62  61 63 6b 25 20 80 20 34  |nt2%+((back% . 4|
0000a410  38 29 20 3c 3c 20 32 29  0d 49 3e 33 ef 20 32 33  |8) << 2).I>3. 23|
0000a420  2c 32 35 2c 26 46 46 2c  31 35 2c 72 65 64 32 25  |,25,&FF,15,red2%|
0000a430  2c 67 72 6e 32 25 2c 62  6c 75 32 25 2c 72 65 64  |,grn2%,blu2%,red|
0000a440  25 2c 67 72 6e 25 2c 62  6c 75 25 0d 49 48 3a c8  |%,grn%,blu%.IH:.|
0000a450  99 20 22 46 6f 6e 74 5f  46 69 6e 64 46 6f 6e 74  |. "Font_FindFont|
0000a460  22 2c 2c 46 4f 4e 54 24  2c 70 73 69 7a 65 78 25  |",,FONT$,psizex%|
0000a470  2c 70 73 69 7a 65 79 25  2c 30 2c 30 20 b8 20 72  |,psizey%,0,0 . r|
0000a480  6f 6d 61 6e 25 0d 49 52  28 c8 99 20 22 46 6f 6e  |oman%.IR(.. "Fon|
0000a490  74 5f 50 61 69 6e 74 22  2c 2c 61 74 65 78 74 24  |t_Paint",,atext$|
0000a4a0  2c 25 31 30 30 30 30 2c  4d 58 2c 4d 59 0d 49 5c  |,%10000,MX,MY.I\|
0000a4b0  0f fb 20 36 33 20 c8 9c  20 31 39 32 0d 49 66 05  |.. 63 .. 192.If.|
0000a4c0  cb 0d 49 70 04 0d 49 7a  13 f4 20 64 65 6d 6f 20  |..Ip..Iz.. demo |
0000a4d0  66 75 6e 63 74 69 6f 6e  0d 49 84 07 c9 34 36 0d  |function.I...46.|
0000a4e0  49 8e 11 f2 72 65 73 65  74 5f 61 63 74 69 6f 6e  |I...reset_action|
0000a4f0  0d 49 98 cb f2 65 72 72  6f 72 68 61 6e 64 6c 65  |.I...errorhandle|
0000a500  28 31 2c 22 54 68 69 73  20 69 73 20 61 20 64 65  |(1,"This is a de|
0000a510  6d 6f 6e 73 74 72 61 74  69 6f 6e 20 76 65 72 73  |monstration vers|
0000a520  69 6f 6e 20 6f 66 20 41  54 45 4c 49 45 52 20 73  |ion of ATELIER s|
0000a530  6f 20 74 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |o this function |
0000a540  68 61 73 20 62 65 65 6e  20 64 69 73 61 62 6c 65  |has been disable|
0000a550  64 2c 7c 43 41 4c 4c 20  30 33 39 32 20 34 33 37  |d,|CALL 0392 437|
0000a560  37 35 36 20 74 6f 20 6f  72 64 65 72 20 61 20 70  |756 to order a p|
0000a570  72 6f 70 65 72 20 76 65  72 73 69 6f 6e 20 6f 66  |roper version of|
0000a580  20 41 54 45 4c 49 45 52  2c 20 74 68 65 20 75 6c  | ATELIER, the ul|
0000a590  74 69 6d 61 74 65 20 61  72 74 20 70 61 63 6b 61  |timate art packa|
0000a5a0  67 65 2e 22 2c 22 7c 7c  43 6f 6e 74 69 6e 75 65  |ge.","||Continue|
0000a5b0  22 2c 73 65 6c 65 63 74  65 64 29 0d 49 a2 04 0d  |",selected).I...|
0000a5c0  49 ac 11 f4 20 42 6f 74  74 6c 65 20 64 72 61 77  |I... Bottle draw|
0000a5d0  0d 49 b6 12 c9 34 37 3a  c8 8e 20 73 74 65 70 25  |.I...47:.. step%|
0000a5e0  20 ca 0d 49 c0 16 c9 31  2c 32 3a f2 67 65 74 72  | ..I...1,2:.getr|
0000a5f0  65 63 74 61 6e 67 6c 65  0d 49 ca 06 c9 33 0d 49  |ectangle.I...3.I|
0000a600  d4 0f ef 20 32 39 2c 4d  58 3b 4d 59 3b 0d 49 de  |... 29,MX;MY;.I.|
0000a610  16 46 25 3d 2d 31 3a d6  20 66 72 61 6d 65 64 72  |.F%=-1:. framedr|
0000a620  61 77 25 0d 49 e8 09 c8  96 3a c8 96 0d 49 f2 0f  |aw%.I....:...I..|
0000a630  ef 20 32 39 2c 4d 58 3b  4d 59 3b 0d 49 fc 16 46  |. 29,MX;MY;.I..F|
0000a640  25 3d 2d 31 3a d6 20 66  72 61 6d 65 64 72 61 77  |%=-1:. framedraw|
0000a650  25 0d 4a 06 12 d6 20 73  70 69 6e 5f 62 6f 74 74  |%.J... spin_bott|
0000a660  6c 65 25 0d 4a 10 12 c9  34 3a f2 70 6f 69 6e 74  |le%.J...4:.point|
0000a670  28 30 2c 30 29 0d 4a 1a  0d f2 63 6f 70 79 73 6f  |(0,0).J...copyso|
0000a680  72 74 0d 4a 24 15 73 74  65 70 73 25 3d 94 28 79  |rt.J$.steps%=.(y|
0000a690  73 25 29 2f 34 2d 31 0d  4a 2e 16 50 54 25 3d 28  |s%)/4-1.J..PT%=(|
0000a6a0  21 62 6f 6c 70 6f 69 6e  74 25 29 2d 31 0d 4a 38  |!bolpoint%)-1.J8|
0000a6b0  15 54 4c 3d 30 3a e3 20  52 25 3d 31 20 b8 20 50  |.TL=0:. R%=1 . P|
0000a6c0  54 25 0d 4a 42 46 4c 28  52 25 29 3d b6 28 28 28  |T%.JBFL(R%)=.(((|
0000a6d0  a4 62 6f 6c 74 78 28 52  25 29 2d a4 62 6f 6c 74  |.boltx(R%)-.bolt|
0000a6e0  78 28 52 25 2d 31 29 29  5e 32 2b 28 a4 62 6f 6c  |x(R%-1))^2+(.bol|
0000a6f0  74 79 28 52 25 29 2d a4  62 6f 6c 74 79 28 52 25  |ty(R%)-.bolty(R%|
0000a700  2d 31 29 29 5e 32 29 29  0d 4a 4c 0f 54 4c 3d 54  |-1))^2)).JL.TL=T|
0000a710  4c 2b 4c 28 52 25 29 0d  4a 56 08 ed 20 52 25 0d  |L+L(R%).JV.. R%.|
0000a720  4a 60 15 54 4c 50 3d 54  4c 2f 28 73 74 65 70 73  |J`.TLP=TL/(steps|
0000a730  25 2d 31 29 0d 4a 6a 1b  54 4c 50 3d 28 54 4c 2b  |%-1).Jj.TLP=(TL+|
0000a740  54 4c 50 2d 31 29 2f 28  73 74 65 70 73 25 29 0d  |TLP-1)/(steps%).|
0000a750  4a 74 14 e3 20 59 50 25  3d 30 20 b8 20 73 74 65  |Jt.. YP%=0 . ste|
0000a760  70 73 25 0d 4a 7e 1a 46  4c 3d 59 50 25 2a 54 4c  |ps%.J~.FL=YP%*TL|
0000a770  50 3a 47 50 25 3d 30 3a  46 4c 42 3d 30 0d 4a 88  |P:GP%=0:FLB=0.J.|
0000a780  0d e7 20 46 4c 3c 54 4c  20 8c 0d 4a 92 05 f5 0d  |.. FL<TL ..J....|
0000a790  4a 9c 12 46 4c 42 3d 46  4c 42 2b 4c 28 47 50 25  |J..FLB=FLB+L(GP%|
0000a7a0  29 0d 4a a6 0d 47 50 25  3d 47 50 25 2b 31 0d 4a  |).J..GP%=GP%+1.J|
0000a7b0  b0 0c fd 20 46 4c 42 3e  46 4c 0d 4a ba 05 cc 0d  |... FLB>FL.J....|
0000a7c0  4a c4 0d 47 50 25 3d 50  54 25 2d 31 0d 4a ce 05  |J..GP%=PT%-1.J..|
0000a7d0  cd 0d 4a d8 0d 47 50 25  3d 47 50 25 2d 31 0d 4a  |..J..GP%=GP%-1.J|
0000a7e0  e2 19 e7 20 47 50 25 3e  50 54 25 20 8c 20 47 50  |... GP%>PT% . GP|
0000a7f0  25 3d 50 54 25 2d 31 0d  4a ec 13 e7 20 47 50 25  |%=PT%-1.J... GP%|
0000a800  3c 31 20 8c 20 47 50 25  3d 31 0d 4a f6 11 4c 4c  |<1 . GP%=1.J..LL|
0000a810  3d 46 4c 42 2d 4c 28 47  50 25 29 0d 4b 00 0c 50  |=FLB-L(GP%).K..P|
0000a820  4c 3d 46 4c 2d 4c 4c 0d  4b 0a 10 50 4d 3d 50 4c  |L=FL-LL.K..PM=PL|
0000a830  2f 4c 28 47 50 25 29 0d  4b 14 42 42 25 28 59 50  |/L(GP%).K.BB%(YP|
0000a840  25 2c 30 29 3d 28 28 28  a4 62 6f 6c 74 78 28 47  |%,0)=(((.boltx(G|
0000a850  50 25 29 29 2d 28 a4 62  6f 6c 74 78 28 47 50 25  |P%))-(.boltx(GP%|
0000a860  2d 31 29 29 29 2a 50 4d  29 2b 28 a4 62 6f 6c 74  |-1)))*PM)+(.bolt|
0000a870  78 28 47 50 25 2d 31 29  29 0d 4b 1e 3c 42 25 28  |x(GP%-1)).K.<B%(|
0000a880  59 50 25 2c 31 29 3d 28  28 a4 62 6f 6c 74 79 28  |YP%,1)=((.bolty(|
0000a890  47 50 25 29 2d a4 62 6f  6c 74 79 28 47 50 25 2d  |GP%)-.bolty(GP%-|
0000a8a0  31 29 29 2a 50 4d 29 2b  a4 62 6f 6c 74 79 28 47  |1))*PM)+.bolty(G|
0000a8b0  50 25 2d 31 29 0d 4b 28  09 ed 20 59 50 25 0d 4b  |P%-1).K(.. YP%.K|
0000a8c0  32 12 50 54 25 3d 94 28  79 31 25 2d 79 32 25 29  |2.PT%=.(y1%-y2%)|
0000a8d0  0d 4b 3c 0e 53 54 25 3d  94 28 78 73 25 29 0d 4b  |.K<.ST%=.(xs%).K|
0000a8e0  46 10 53 54 43 4d 3d 33  36 30 2f 53 54 25 0d 4b  |F.STCM=360/ST%.K|
0000a8f0  50 09 53 42 25 3d 30 0d  4b 5a 23 54 31 25 3d 30  |P.SB%=0.KZ#T1%=0|
0000a900  3a 54 32 25 3d 73 74 65  70 73 25 2d 31 3a 54 53  |:T2%=steps%-1:TS|
0000a910  25 3d 31 3a 79 31 25 2b  3d 31 0d 4b 64 36 e7 20  |%=1:y1%+=1.Kd6. |
0000a920  21 62 6f 74 5f 6c 65 61  6e 3c 3d 39 30 20 8c 20  |!bot_lean<=90 . |
0000a930  54 31 25 3d 73 74 65 70  73 25 2d 31 3a 54 32 25  |T1%=steps%-1:T2%|
0000a940  3d 30 3a 54 53 25 3d 2d  31 3a 79 31 25 2d 3d 32  |=0:TS%=-1:y1%-=2|
0000a950  0d 4b 6e 36 e7 20 21 62  6f 74 5f 6c 65 61 6e 3e  |.Kn6. !bot_lean>|
0000a960  32 37 30 20 8c 20 54 31  25 3d 73 74 65 70 73 25  |270 . T1%=steps%|
0000a970  2d 31 3a 54 32 25 3d 30  3a 54 53 25 3d 2d 31 3a  |-1:T2%=0:TS%=-1:|
0000a980  79 31 25 2d 3d 32 0d 4b  78 19 e3 20 42 54 25 3d  |y1%-=2.Kx.. BT%=|
0000a990  54 31 25 20 b8 20 54 32  25 20 88 20 54 53 25 0d  |T1% . T2% . TS%.|
0000a9a0  4b 82 0c 77 65 64 67 65  25 3d 30 0d 4b 8c 1d 58  |K..wedge%=0.K..X|
0000a9b0  25 3d 42 25 28 42 54 25  2c 30 29 3a 59 25 3d 42  |%=B%(BT%,0):Y%=B|
0000a9c0  25 28 42 54 25 2c 31 29  0d 4b 96 09 53 43 25 3d  |%(BT%,1).K..SC%=|
0000a9d0  30 0d 4b a0 0a 43 54 25  3d 2d 31 0d 4b aa 16 e7  |0.K..CT%=-1.K...|
0000a9e0  20 21 62 6f 74 5f 6c 65  61 6e 3c 3d 31 38 30 20  | !bot_lean<=180 |
0000a9f0  8c 0d 4b b4 21 64 65 67  31 3d 2d 53 54 43 4d 3a  |..K.!deg1=-STCM:|
0000aa00  64 65 67 32 3d 33 36 30  3a 64 65 67 73 3d 53 54  |deg2=360:degs=ST|
0000aa10  43 4d 0d 4b be 05 cc 0d  4b c8 23 64 65 67 31 3d  |CM.K....K.#deg1=|
0000aa20  33 35 39 2b 53 54 43 4d  3a 64 65 67 32 3d 30 3a  |359+STCM:deg2=0:|
0000aa30  64 65 67 73 3d 2d 53 54  43 4d 0d 4b d2 05 cd 0d  |degs=-STCM.K....|
0000aa40  4b dc 1d e3 20 43 64 3d  64 65 67 31 20 b8 20 64  |K... Cd=deg1 . d|
0000aa50  65 67 32 20 88 20 64 65  67 73 2a 32 0d 4b e6 0d  |eg2 . degs*2.K..|
0000aa60  43 54 25 3d 43 54 25 2b  31 0d 4b f0 08 ef 20 32  |CT%=CT%+1.K... 2|
0000aa70  36 0d 4b fa 0d c8 8e 20  21 70 6d 25 20 ca 0d 4c  |6.K.... !pm% ..L|
0000aa80  04 32 c9 30 2c 31 3a 70  6c 74 25 3d a4 67 63 6f  |.2.0,1:plt%=.gco|
0000aa90  6c 28 78 32 25 2d 28 43  64 2b 31 29 2f 53 54 43  |l(x2%-(Cd+1)/STC|
0000aaa0  4d 2b 32 2c 79 31 25 2d  42 54 25 2a 34 2b 34 29  |M+2,y1%-BT%*4+4)|
0000aab0  0d 4c 0e 2a c9 32 3a 70  6c 74 25 3d a4 67 63 6f  |.L.*.2:plt%=.gco|
0000aac0  6c 28 78 32 25 2d 43 64  2f 53 54 43 4d 2d 31 2c  |l(x2%-Cd/STCM-1,|
0000aad0  79 31 25 2d 42 54 25 2a  34 29 0d 4c 18 05 cb 0d  |y1%-BT%*4).L....|
0000aae0  4c 22 0c 61 6e 67 6c 65  3d 43 64 0d 4c 2c 3f 41  |L".angle=Cd.L,?A|
0000aaf0  25 3d 36 33 32 2d 28 28  36 33 32 2d 58 25 29 2a  |%=632-((632-X%)*|
0000ab00  a0 28 62 6f 74 72 61 64  24 29 29 3a 42 25 3d 59  |.(botrad$)):B%=Y|
0000ab10  25 3a 43 25 3d 43 64 3a  d6 20 74 72 61 6e 73 6c  |%:C%=Cd:. transl|
0000ab20  61 74 65 5f 70 6f 69 6e  74 25 0d 4c 36 1f 58 44  |ate_point%.L6.XD|
0000ab30  25 3d 21 62 6f 74 5f 78  6f 75 74 3a 59 44 25 3d  |%=!bot_xout:YD%=|
0000ab40  21 62 6f 74 5f 79 6f 75  74 0d 4c 40 1d ef 20 32  |!bot_yout.L@.. 2|
0000ab50  39 2c 4d 58 3b 4d 59 3b  20 20 20 20 20 3a f4 20  |9,MX;MY;     :. |
0000ab60  6f 72 69 67 69 6e 0d 4c  4a 1c e7 20 53 42 25 3e  |origin.LJ.. SB%>|
0000ab70  30 20 80 20 53 43 25 3e  30 20 80 20 70 6c 74 25  |0 . SC%>0 . plt%|
0000ab80  20 8c 0d 4c 54 11 ec 20  4c 58 44 32 25 2c 4c 59  | ..LT.. LXD2%,LY|
0000ab90  44 32 25 0d 4c 5e 1d ec  20 4c 58 44 25 2c 4c 59  |D2%.L^.. LXD%,LY|
0000aba0  44 25 3a f0 20 26 35 35  2c 58 44 25 2c 59 44 25  |D%:. &55,XD%,YD%|
0000abb0  0d 4c 68 1c f0 26 35 35  2c 41 25 28 43 54 25 2c  |.Lh..&55,A%(CT%,|
0000abc0  30 29 2c 41 25 28 43 54  25 2c 31 29 0d 4c 72 05  |0),A%(CT%,1).Lr.|
0000abd0  cd 0d 4c 7c 09 53 43 25  3d 31 0d 4c 86 21 4c 58  |..L|.SC%=1.L.!LX|
0000abe0  44 25 3d 41 25 28 43 54  25 2c 30 29 3a 4c 59 44  |D%=A%(CT%,0):LYD|
0000abf0  25 3d 41 25 28 43 54 25  2c 31 29 0d 4c 90 17 4c  |%=A%(CT%,1).L..L|
0000ac00  58 44 32 25 3d 58 44 25  3a 4c 59 44 32 25 3d 59  |XD2%=XD%:LYD2%=Y|
0000ac10  44 25 0d 4c 9a 1f 41 25  28 43 54 25 2c 30 29 3d  |D%.L..A%(CT%,0)=|
0000ac20  58 44 25 3a 41 25 28 43  54 25 2c 31 29 3d 59 44  |XD%:A%(CT%,1)=YD|
0000ac30  25 0d 4c a4 08 ed 20 43  64 0d 4c ae 17 f4 20 55  |%.L... Cd.L... U|
0000ac40  4e 54 49 4c 20 43 25 2a  53 54 43 4d 3e 33 36 30  |NTIL C%*STCM>360|
0000ac50  0d 4c b8 09 53 42 25 3d  31 0d 4c c2 09 ed 20 42  |.L..SB%=1.L... B|
0000ac60  54 25 0d 4c cc 0b f2 75  70 64 61 74 65 0d 4c d6  |T%.L...update.L.|
0000ac70  08 ef 20 32 36 0d 4c e0  05 cb 0d 4c ea 04 0d 4c  |.. 26.L....L...L|
0000ac80  f4 14 f4 20 53 65 74 20  4d 6f 75 73 65 20 47 72  |... Set Mouse Gr|
0000ac90  69 64 0d 4c fe 29 c9 34  38 3a e7 20 a4 74 65 78  |id.L.).48:. .tex|
0000aca0  74 5f 65 6e 74 72 79 28  33 33 2c c3 28 6d 6f 75  |t_entry(33,.(mou|
0000acb0  73 65 67 72 69 64 29 2c  31 35 29 0d 4d 08 15 6d  |segrid),15).M..m|
0000acc0  6f 75 73 65 67 72 69 64  3d a0 28 6f 75 74 24 29  |ousegrid=.(out$)|
0000acd0  0d 4d 12 1f e7 20 6d 6f  75 73 65 67 72 69 64 3c  |.M... mousegrid<|
0000ace0  31 20 8c 20 6d 6f 75 73  65 67 72 69 64 3d 31 0d  |1 . mousegrid=1.|
0000acf0  4d 1c 09 6d 67 73 3d 31  0d 4d 26 05 cd 0d 4d 30  |M..mgs=1.M&...M0|
0000ad00  10 f2 72 65 73 65 74 5f  65 6e 74 72 79 0d 4d 3a  |..reset_entry.M:|
0000ad10  04 0d 4d 44 13 f4 20 46  6f 72 6d 75 6c 61 20 45  |..MD.. Formula E|
0000ad20  6e 74 72 79 0d 4d 4e 20  c9 34 39 3a 6f 6c 64 66  |ntry.MN .49:oldf|
0000ad30  6f 72 6d 24 3d 66 6f 72  6d 75 6c 61 24 3a 74 65  |orm$=formula$:te|
0000ad40  73 74 3d a3 0d 4d 58 22  21 70 75 74 69 74 25 3d  |st=..MX"!putit%=|
0000ad50  31 3a f2 70 6f 69 6e 74  28 30 2c 50 4e 6b 65 79  |1:.point(0,PNkey|
0000ad60  62 6f 61 72 64 29 0d 4d  62 1b f2 72 65 73 65 74  |board).Mb..reset|
0000ad70  5f 61 63 74 69 6f 6e 3a  d6 20 75 70 74 72 65 65  |_action:. uptree|
0000ad80  25 0d 4d 6c 28 41 25 3d  2d 31 32 38 3a 42 25 3d  |%.Ml(A%=-128:B%=|
0000ad90  21 73 74 61 72 74 79 25  2b 35 36 3a 45 25 3d 2d  |!starty%+56:E%=-|
0000ada0  31 3a d6 20 68 65 6c 70  25 0d 4d 76 2f 41 25 3d  |1:. help%.Mv/A%=|
0000adb0  2d 31 32 38 3a 42 25 3d  21 73 74 61 72 74 79 25  |-128:B%=!starty%|
0000adc0  2d 21 73 69 7a 65 79 2d  39 36 3a 45 25 3d 2d 31  |-!sizey-96:E%=-1|
0000add0  3a d6 20 68 65 6c 70 25  0d 4d 80 05 f5 0d 4d 8a  |:. help%.M....M.|
0000ade0  2e 67 6f 3d a4 69 6e 73  74 72 69 6e 67 28 33 32  |.go=.instring(32|
0000adf0  2c 31 32 36 2c 66 6f 72  6d 75 6c 61 24 2c 66 6f  |,126,formula$,fo|
0000ae00  72 6d 75 6c 61 24 2c 32  35 35 29 0d 4d 94 11 50  |rmula$,255).M..P|
0000ae10  25 3d 66 6f 72 6d 6e 61  6d 65 73 25 0d 4d 9e 12  |%=formnames%.M..|
0000ae20  6e 75 6d 25 3d 3f 50 25  3a 50 25 2b 3d 31 0d 4d  |num%=?P%:P%+=1.M|
0000ae30  a8 07 46 3d 30 0d 4d b2  0c 74 65 73 74 24 3d 22  |..F=0.M..test$="|
0000ae40  22 0d 4d bc 13 6e 75 6d  32 25 3d 3f 50 25 3a 50  |".M..num2%=?P%:P|
0000ae50  25 2b 3d 31 0d 4d c6 11  e3 20 52 3d 31 20 b8 20  |%+=1.M... R=1 . |
0000ae60  6e 75 6d 32 25 0d 4d d0  16 74 65 73 74 24 3d 74  |num2%.M..test$=t|
0000ae70  65 73 74 24 2b bd 28 3f  50 25 29 0d 4d da 0b 50  |est$+.(?P%).M..P|
0000ae80  25 2b 3d 31 3a ed 0d 4d  e4 35 e7 20 66 6f 72 6d  |%+=1:..M.5. form|
0000ae90  75 6c 61 24 3d 74 65 73  74 24 20 8c 20 66 6f 72  |ula$=test$ . for|
0000aea0  6d 75 6c 61 24 3d 66 6f  72 6d 75 6c 61 73 24 28  |mula$=formulas$(|
0000aeb0  46 2d 31 29 3a e5 20 8d  70 4a 4d 0d 4d ee 08 46  |F-1):. .pJM.M..F|
0000aec0  2b 3d 31 0d 4d f8 15 e7  20 46 3c 6e 75 6d 25 20  |+=1.M... F<num% |
0000aed0  8c 20 e5 20 8d 70 72 4d  0d 4e 02 36 e7 20 67 6f  |. . .prM.N.6. go|
0000aee0  20 8c 20 f2 70 6f 69 6e  74 28 30 2c 30 29 3a 74  | . .point(0,0):t|
0000aef0  65 73 74 3d a4 62 75 69  6c 64 5f 66 6f 72 6d 75  |est=.build_formu|
0000af00  6c 61 28 66 6f 72 6d 75  6c 61 24 2c 30 29 0d 4e  |la(formula$,0).N|
0000af10  0c 11 fd 20 74 65 73 74  20 84 20 ac 20 67 6f 0d  |... test . . go.|
0000af20  4e 16 1e e7 20 ac 20 67  6f 20 8c 20 66 6f 72 6d  |N... . go . form|
0000af30  75 6c 61 24 3d 6f 6c 64  66 6f 72 6d 24 0d 4e 20  |ula$=oldform$.N |
0000af40  0e 21 66 6f 72 6d 75 6c  61 3d 30 0d 4e 2a 1e d6  |.!formula=0.N*..|
0000af50  20 6c 69 66 74 75 70 25  3a d6 20 70 75 74 62 61  | liftup%:. putba|
0000af60  63 6b 67 72 6f 75 6e 64  25 0d 4e 34 10 f2 72 65  |ckground%.N4..re|
0000af70  73 65 74 5f 65 6e 74 72  79 0d 4e 3e 04 0d 4e 48  |set_entry.N>..NH|
0000af80  18 c9 35 30 2c 35 34 2c  35 33 3a c8 8e 20 73 74  |..50,54,53:.. st|
0000af90  65 70 25 20 ca 0d 4e 52  12 f4 20 46 4f 52 4d 55  |ep% ..NR.. FORMU|
0000afa0  4c 41 20 43 4f 50 59 0d  4e 5c 16 c9 31 2c 32 3a  |LA COPY.N\..1,2:|
0000afb0  f2 67 65 74 72 65 63 74  61 6e 67 6c 65 0d 4e 66  |.getrectangle.Nf|
0000afc0  07 c9 33 3a 0d 4e 70 0f  ef 20 32 39 2c 4d 58 3b  |..3:.Np.. 29,MX;|
0000afd0  4d 59 3b 0d 4e 7a 1a 46  25 3d 2d 31 3a d6 20 66  |MY;.Nz.F%=-1:. f|
0000afe0  6f 72 6d 66 72 61 6d 65  64 72 61 77 25 0d 4e 84  |ormframedraw%.N.|
0000aff0  09 c8 96 3a c8 96 0d 4e  8e 0f ef 20 32 39 2c 4d  |...:...N... 29,M|
0000b000  58 3b 4d 59 3b 0d 4e 98  1a 46 25 3d 2d 31 3a d6  |X;MY;.N..F%=-1:.|
0000b010  20 66 6f 72 6d 66 72 61  6d 65 64 72 61 77 25 0d  | formframedraw%.|
0000b020  4e a2 10 c9 34 3a f2 63  6f 70 79 73 6f 72 74 0d  |N...4:.copysort.|
0000b030  4e ac 29 78 73 74 65 70  73 3d 37 32 30 2f 28 78  |N.)xsteps=720/(x|
0000b040  73 25 2f 32 29 3a 79 73  74 65 70 73 3d 37 32 30  |s%/2):ysteps=720|
0000b050  2f 28 79 73 25 2f 34 29  0d 4e b6 0f e7 20 21 41  |/(ys%/4).N... !A|
0000b060  63 25 3d 35 33 20 8c 0d  4e c0 1a f2 70 6f 69 6e  |c%=53 ..N...poin|
0000b070  74 28 30 2c 50 4e 63 61  6c 63 75 6c 61 74 6f 72  |t(0,PNcalculator|
0000b080  29 0d 4e ca 0e 6d 61 78  3d 2d 36 35 35 33 36 0d  |).N..max=-65536.|
0000b090  4e d4 0d 6d 69 6e 3d 36  35 35 33 36 0d 4e de 09  |N..min=65536.N..|
0000b0a0  6f 66 6d 3d 30 0d 4e e8  1c e3 20 58 44 3d 2d 33  |ofm=0.N... XD=-3|
0000b0b0  36 30 20 b8 20 33 36 30  20 88 20 78 73 74 65 70  |60 . 360 . xstep|
0000b0c0  73 0d 4e f2 0c 77 65 64  67 65 25 3d 30 0d 4e fc  |s.N..wedge%=0.N.|
0000b0d0  1c e3 20 59 44 3d 33 36  30 20 b8 20 2d 33 36 30  |.. YD=360 . -360|
0000b0e0  20 88 20 79 73 74 65 70  73 0d 4f 06 0c 58 52 3d  | . ysteps.O..XR=|
0000b0f0  b2 28 58 44 29 0d 4f 10  0c 59 52 3d b2 28 59 44  |.(XD).O..YR=.(YD|
0000b100  29 0d 4f 1a 3f e7 20 21  66 6f 72 6d 75 6c 61 3d  |).O.?. !formula=|
0000b110  30 20 8c 20 46 4d 3d a0  28 66 6f 72 6d 75 6c 61  |0 . FM=.(formula|
0000b120  24 29 20 8b 20 46 4d 3d  a0 28 66 6f 72 6d 75 6c  |$) . FM=.(formul|
0000b130  61 73 24 28 21 66 6f 72  6d 75 6c 61 2d 31 29 29  |as$(!formula-1))|
0000b140  0d 4f 24 0d 46 44 3d 6f  66 6d 2d 46 4d 0d 4f 2e  |.O$.FD=ofm-FM.O.|
0000b150  20 e7 20 59 44 3c 33 36  30 20 8c 20 e7 20 46 44  | . YD<360 . . FD|
0000b160  3e 6d 61 78 20 8c 20 6d  61 78 3d 46 44 0d 4f 38  |>max . max=FD.O8|
0000b170  20 e7 20 59 44 3c 33 36  30 20 8c 20 e7 20 46 44  | . YD<360 . . FD|
0000b180  3c 6d 69 6e 20 8c 20 6d  69 6e 3d 46 44 0d 4f 42  |<min . min=FD.OB|
0000b190  0a 6f 66 6d 3d 46 4d 0d  4f 4c 0b ed 20 59 44 2c  |.ofm=FM.OL.. YD,|
0000b1a0  58 44 0d 4f 56 05 cd 0d  4f 60 09 59 46 25 3d 30  |XD.OV...O`.YF%=0|
0000b1b0  0d 4f 6a 0f f2 70 6f 69  6e 74 28 30 2c 30 29 0d  |.Oj..point(0,0).|
0000b1c0  4f 74 1c e3 20 59 44 3d  33 36 30 20 b8 20 2d 33  |Ot.. YD=360 . -3|
0000b1d0  36 30 20 88 20 79 73 74  65 70 73 0d 4f 7e 0c 77  |60 . ysteps.O~.w|
0000b1e0  65 64 67 65 25 3d 30 0d  4f 88 1c e3 20 58 44 3d  |edge%=0.O... XD=|
0000b1f0  2d 33 36 30 20 b8 20 33  36 30 20 88 20 78 73 74  |-360 . 360 . xst|
0000b200  65 70 73 0d 4f 92 0c 58  52 3d b2 28 58 44 29 0d  |eps.O..XR=.(XD).|
0000b210  4f 9c 0c 59 52 3d b2 28  59 44 29 0d 4f a6 3f e7  |O..YR=.(YD).O.?.|
0000b220  20 21 66 6f 72 6d 75 6c  61 3d 30 20 8c 20 46 4d  | !formula=0 . FM|
0000b230  3d a0 28 66 6f 72 6d 75  6c 61 24 29 20 8b 20 46  |=.(formula$) . F|
0000b240  4d 3d a0 28 66 6f 72 6d  75 6c 61 73 24 28 21 66  |M=.(formulas$(!f|
0000b250  6f 72 6d 75 6c 61 2d 31  29 29 0d 4f b0 27 41 25  |ormula-1)).O.'A%|
0000b260  3d 58 44 3a 42 25 3d 59  44 3a 43 25 3d 46 4d 3a  |=XD:B%=YD:C%=FM:|
0000b270  d6 20 66 6f 72 6d 5f 74  72 61 6e 73 6c 61 74 65  |. form_translate|
0000b280  25 0d 4f ba 12 6e 70 78  25 3d 21 62 6f 74 5f 78  |%.O..npx%=!bot_x|
0000b290  6f 75 74 0d 4f c4 12 6e  70 79 25 3d 21 62 6f 74  |out.O..npy%=!bot|
0000b2a0  5f 79 6f 75 74 0d 4f ce  30 50 58 25 3d 28 28 33  |_yout.O.0PX%=((3|
0000b2b0  36 30 2b 58 44 29 2f 78  73 74 65 70 73 29 3a 50  |60+XD)/xsteps):P|
0000b2c0  59 25 3d 28 28 33 36 30  2b 59 44 29 2f 2d 79 73  |Y%=((360+YD)/-ys|
0000b2d0  74 65 70 73 29 0d 4f d8  07 ef 20 34 0d 4f e2 08  |teps).O... 4.O..|
0000b2e0  ef 20 32 36 0d 4f ec 23  78 70 25 3d 78 31 25 2b  |. 26.O.#xp%=x1%+|
0000b2f0  50 58 25 2a 32 2d 32 3a  79 70 25 3d 79 32 25 2b  |PX%*2-2:yp%=y2%+|
0000b300  50 59 25 2a 34 2b 33 0d  4f f6 17 70 6c 74 25 3d  |PY%*4+3.O..plt%=|
0000b310  a4 67 63 6f 6c 28 78 70  25 2c 79 70 25 29 0d 50  |.gcol(xp%,yp%).P|
0000b320  00 1f e7 20 58 44 3e 2d  33 36 30 20 80 20 59 44  |... XD>-360 . YD|
0000b330  3c 33 36 30 20 80 20 70  6c 74 25 20 8c 0d 50 0a  |<360 . plt% ..P.|
0000b340  0f e7 20 21 41 63 25 3d  35 33 20 8c 0d 50 14 2d  |.. !Ac%=53 ..P.-|
0000b350  6e 75 6d 25 3d 34 2b 28  28 28 4c 28 50 58 25 29  |num%=4+(((L(PX%)|
0000b360  2d 46 4d 29 2d 6d 69 6e  29 2f 28 28 6d 61 78 2d  |-FM)-min)/((max-|
0000b370  6d 69 6e 29 2f 31 31 29  29 0d 50 1e 25 e7 20 6e  |min)/11)).P.%. n|
0000b380  75 6d 25 3c 34 20 8c 20  6e 75 6d 25 3d 34 3a e7  |um%<4 . num%=4:.|
0000b390  20 74 65 73 74 69 6e 67  20 8c 20 ef 20 37 0d 50  | testing . . 7.P|
0000b3a0  28 27 e7 20 6e 75 6d 25  3e 31 35 20 8c 20 6e 75  |('. num%>15 . nu|
0000b3b0  6d 25 3d 31 35 3a e7 20  74 65 73 74 69 6e 67 20  |m%=15:. testing |
0000b3c0  8c 20 ef 20 37 0d 50 32  28 41 25 3d 63 6f 6c 25  |. . 7.P2(A%=col%|
0000b3d0  3a 42 25 3d 31 35 2d 6e  75 6d 25 3a d6 20 63 61  |:B%=15-num%:. ca|
0000b3e0  6c 63 5f 69 6e 74 65 6e  73 69 74 79 25 0d 50 3c  |lc_intensity%.P<|
0000b3f0  05 cd 0d 50 46 0f ef 20  32 39 2c 4d 58 3b 4d 59  |...PF.. 29,MX;MY|
0000b400  3b 0d 50 50 11 ec 20 6e  6c 70 78 25 2c 6e 6c 70  |;.PP.. nlpx%,nlp|
0000b410  79 25 0d 50 5a 27 ec 20  41 25 28 28 94 28 50 58  |y%.PZ'. A%((.(PX|
0000b420  25 29 29 2d 31 2c 30 29  2c 41 25 28 28 94 28 50  |%))-1,0),A%((.(P|
0000b430  58 25 29 29 2d 31 2c 31  29 0d 50 64 23 f0 20 26  |X%))-1,1).Pd#. &|
0000b440  35 35 2c 41 25 28 94 28  50 58 25 29 2c 30 29 2c  |55,A%(.(PX%),0),|
0000b450  41 25 28 94 28 50 58 25  29 2c 31 29 0d 50 6e 13  |A%(.(PX%),1).Pn.|
0000b460  f0 20 26 35 35 2c 6e 70  78 25 2c 6e 70 79 25 0d  |. &55,npx%,npy%.|
0000b470  50 78 0f e7 20 21 41 63  25 3d 35 34 20 8c 0d 50  |Px.. !Ac%=54 ..P|
0000b480  82 0d d6 20 63 6f 6c 6f  75 72 25 0d 50 8c 11 ec  |... colour%.P...|
0000b490  20 6e 6c 70 78 25 2c 6e  6c 70 79 25 0d 50 96 27  | nlpx%,nlpy%.P.'|
0000b4a0  df 20 41 25 28 28 94 28  50 58 25 29 29 2d 31 2c  |. A%((.(PX%))-1,|
0000b4b0  30 29 2c 41 25 28 28 94  28 50 58 25 29 29 2d 31  |0),A%((.(PX%))-1|
0000b4c0  2c 31 29 0d 50 a0 0f df  20 6e 70 78 25 2c 6e 70  |,1).P... npx%,np|
0000b4d0  79 25 0d 50 aa 1f df 20  41 25 28 94 28 50 58 25  |y%.P... A%(.(PX%|
0000b4e0  29 2c 30 29 2c 41 25 28  94 28 50 58 25 29 2c 31  |),0),A%(.(PX%),1|
0000b4f0  29 0d 50 b4 11 df 20 6e  6c 70 78 25 2c 6e 6c 70  |).P... nlpx%,nlp|
0000b500  79 25 0d 50 be 05 cd 0d  50 c8 05 cd 0d 50 d2 0d  |y%.P....P....P..|
0000b510  4c 28 50 58 25 29 3d 46  4d 0d 50 dc 16 6e 6c 70  |L(PX%)=FM.P..nlp|
0000b520  78 25 3d 41 25 28 94 28  50 58 25 29 2c 30 29 0d  |x%=A%(.(PX%),0).|
0000b530  50 e6 16 6e 6c 70 79 25  3d 41 25 28 94 28 50 58  |P..nlpy%=A%(.(PX|
0000b540  25 29 2c 31 29 0d 50 f0  15 41 25 28 94 28 50 58  |%),1).P..A%(.(PX|
0000b550  25 29 2c 30 29 3d 6e 70  78 25 0d 50 fa 15 41 25  |%),0)=npx%.P..A%|
0000b560  28 94 28 50 58 25 29 2c  31 29 3d 6e 70 79 25 0d  |(.(PX%),1)=npy%.|
0000b570  51 04 05 cd 0d 51 0e 08  ed 20 58 44 0d 51 18 09  |Q....Q... XD.Q..|
0000b580  59 46 25 3d 31 0d 51 22  08 ed 20 59 44 0d 51 2c  |YF%=1.Q".. YD.Q,|
0000b590  0b f2 75 70 64 61 74 65  0d 51 36 08 ef 20 32 36  |..update.Q6.. 26|
0000b5a0  0d 51 40 05 cb 0d 51 4a  04 0d 51 54 11 f4 20 52  |.Q@...QJ..QT.. R|
0000b5b0  6f 74 61 74 65 20 63 6f  70 79 0d 51 5e 12 c9 35  |otate copy.Q^..5|
0000b5c0  31 3a c8 8e 20 73 74 65  70 25 20 ca 0d 51 68 16  |1:.. step% ..Qh.|
0000b5d0  c9 31 2c 32 3a f2 67 65  74 72 65 63 74 61 6e 67  |.1,2:.getrectang|
0000b5e0  6c 65 0d 51 72 14 c9 33  3a 78 33 25 3d 4d 58 3a  |le.Qr..3:x3%=MX:|
0000b5f0  79 33 25 3d 4d 59 0d 51  7c 0d c9 34 3a f2 73 68  |y3%=MY.Q|..4:.sh|
0000b600  61 70 65 0d 51 86 10 c8  96 3a c8 96 3a f2 73 68  |ape.Q....:..:.sh|
0000b610  61 70 65 0d 51 90 24 c9  35 3a f2 73 6d 65 61 72  |ape.Q.$.5:.smear|
0000b620  73 63 72 65 65 6e 28 78  31 25 2c 79 31 25 2c 78  |screen(x1%,y1%,x|
0000b630  73 25 2c 79 73 25 29 0d  51 9a 05 cb 0d 51 a4 04  |s%,ys%).Q....Q..|
0000b640  0d 51 ae 13 f4 20 41 41  20 74 65 78 74 20 69 6e  |.Q... AA text in|
0000b650  70 75 74 0d 51 b8 32 c9  35 32 3a e7 20 a4 74 65  |put.Q.2.52:. .te|
0000b660  78 74 5f 65 6e 74 72 79  28 33 32 2c 61 74 65 78  |xt_entry(32,atex|
0000b670  74 24 2c 32 35 35 29 20  8c 20 61 74 65 78 74 24  |t$,255) . atext$|
0000b680  3d 6f 75 74 24 0d 51 c2  10 f2 72 65 73 65 74 5f  |=out$.Q...reset_|
0000b690  65 6e 74 72 79 0d 51 cc  04 0d 51 d6 1b f4 20 53  |entry.Q...Q... S|
0000b6a0  61 76 65 20 43 6f 6d 70  61 63 74 65 64 20 53 63  |ave Compacted Sc|
0000b6b0  72 65 65 6e 0d 51 e0 2c  c9 35 35 3a e7 20 a4 74  |reen.Q.,.55:. .t|
0000b6c0  65 78 74 5f 65 6e 74 72  79 28 33 33 2c 24 73 63  |ext_entry(33,$sc|
0000b6d0  72 65 65 6e 5f 73 74 72  25 2c 32 35 35 29 20 8c  |reen_str%,255) .|
0000b6e0  0d 51 ea 38 f2 70 6f 69  6e 74 28 30 2c 31 29 3a  |.Q.8.point(0,1):|
0000b6f0  f2 63 6f 6d 70 61 63 74  65 64 73 61 76 65 28 30  |.compactedsave(0|
0000b700  2c 6f 75 74 24 29 3a 24  73 63 72 65 65 6e 5f 73  |,out$):$screen_s|
0000b710  74 72 25 3d 6f 75 74 24  0d 51 f4 05 cd 0d 51 fe  |tr%=out$.Q....Q.|
0000b720  10 f2 72 65 73 65 74 5f  65 6e 74 72 79 0d 52 08  |..reset_entry.R.|
0000b730  04 0d 52 12 1b f4 20 53  65 74 20 50 72 69 6e 74  |..R... Set Print|
0000b740  20 4b 65 79 20 43 6f 6d  6d 61 6e 64 0d 52 1c 3a  | Key Command.R.:|
0000b750  c9 35 36 3a e7 20 a4 74  65 78 74 5f 65 6e 74 72  |.56:. .text_entr|
0000b760  79 28 33 32 2c 66 75 6e  63 70 72 69 6e 74 24 2c  |y(32,funcprint$,|
0000b770  32 35 35 29 20 8c 20 66  75 6e 63 70 72 69 6e 74  |255) . funcprint|
0000b780  24 3d 6f 75 74 24 0d 52  26 10 f2 72 65 73 65 74  |$=out$.R&..reset|
0000b790  5f 65 6e 74 72 79 0d 52  30 04 0d 52 3a 0e f4 20  |_entry.R0..R:.. |
0000b7a0  75 6e 64 6f 20 62 6f 78  0d 52 44 12 c9 35 37 3a  |undo box.RD..57:|
0000b7b0  c8 8e 20 73 74 65 70 25  20 ca 0d 52 4e 16 c9 31  |.. step% ..RN..1|
0000b7c0  2c 32 3a f2 67 65 74 72  65 63 74 61 6e 67 6c 65  |,2:.getrectangle|
0000b7d0  0d 52 58 10 c9 33 3a f2  73 6f 72 74 63 6f 72 64  |.RX..3:.sortcord|
0000b7e0  0d 52 62 20 41 25 3d 78  31 25 3a 42 25 3d 79 31  |.Rb A%=x1%:B%=y1|
0000b7f0  25 3a 43 25 3d 78 73 25  3a 44 25 3d 2d 79 73 25  |%:C%=xs%:D%=-ys%|
0000b800  0d 52 6c 0e d6 20 75 6e  64 6f 62 6f 78 25 0d 52  |.Rl.. undobox%.R|
0000b810  76 05 cd 0d 52 80 21 73  74 65 70 25 3d 31 3a f2  |v...R.!step%=1:.|
0000b820  72 65 73 65 74 5f 61 63  74 69 6f 6e 3a f2 75 70  |reset_action:.up|
0000b830  64 61 74 65 0d 52 8a 05  cb 0d 52 94 04 0d 52 9e  |date.R....R...R.|
0000b840  18 f4 20 53 61 76 65 20  53 79 73 74 65 6d 20 53  |.. Save System S|
0000b850  63 72 65 65 6e 0d 52 a8  2c c9 35 38 3a e7 20 a4  |creen.R.,.58:. .|
0000b860  74 65 78 74 5f 65 6e 74  72 79 28 33 33 2c 24 73  |text_entry(33,$s|
0000b870  63 72 65 65 6e 5f 73 74  72 25 2c 32 35 35 29 20  |creen_str%,255) |
0000b880  8c 0d 52 b2 36 f2 70 6f  69 6e 74 28 30 2c 31 29  |..R.6.point(0,1)|
0000b890  3a ff 20 22 53 43 52 45  45 4e 53 41 56 45 20 22  |:. "SCREENSAVE "|
0000b8a0  2b 6f 75 74 24 3a 24 73  63 72 65 65 6e 5f 73 74  |+out$:$screen_st|
0000b8b0  72 25 3d 6f 75 74 24 0d  52 bc 05 cd 0d 52 c6 10  |r%=out$.R....R..|
0000b8c0  f2 72 65 73 65 74 5f 65  6e 74 72 79 0d 52 d0 04  |.reset_entry.R..|
0000b8d0  0d 52 da 12 f4 20 54 69  74 6c 65 20 53 63 72 65  |.R... Title Scre|
0000b8e0  65 6e 0d 52 e4 12 c9 35  39 3a c8 8e 20 73 74 65  |en.R...59:.. ste|
0000b8f0  70 25 20 ca 0d 52 ee 22  c9 31 3a e7 20 a4 73 70  |p% ..R.".1:. .sp|
0000b900  72 69 74 65 73 3d 30 20  8c 20 f2 74 69 74 6c 65  |rites=0 . .title|
0000b910  73 70 72 69 74 65 0d 52  f8 14 c9 32 3a f2 72 65  |sprite.R...2:.re|
0000b920  73 65 74 5f 61 63 74 69  6f 6e 0d 53 02 05 cb 0d  |set_action.S....|
0000b930  53 0c 04 0d 53 16 0d f4  20 42 72 75 73 68 65 73  |S...S... Brushes|
0000b940  0d 53 20 16 c9 36 30 2c  36 31 2c 36 32 2c 36 33  |.S ..60,61,62,63|
0000b950  2c 36 34 2c 36 35 0d 53  2a 0e 41 25 3d 21 41 63  |,64,65.S*.A%=!Ac|
0000b960  25 2d 36 30 0d 53 34 19  c8 8e 20 21 72 65 63 74  |%-60.S4... !rect|
0000b970  5f 62 72 75 73 68 5f 6d  6f 64 65 20 ca 0d 53 3e  |_brush_mode ..S>|
0000b980  11 c9 30 3a c8 8e 20 73  74 65 70 25 20 ca 0d 53  |..0:.. step% ..S|
0000b990  48 29 c9 31 3a 41 25 3d  28 4d 58 20 81 20 32 29  |H).1:A%=(MX . 2)|
0000b9a0  2d 31 36 3a 42 25 3d 32  35 35 2d 28 28 4d 59 20  |-16:B%=255-((MY |
0000b9b0  81 20 34 29 2b 38 29 0d  53 52 0f d6 20 62 72 75  |. 4)+8).SR.. bru|
0000b9c0  73 68 65 6f 72 25 0d 53  5c 15 c8 96 3a c8 96 3a  |sheor%.S\...:..:|
0000b9d0  d6 20 62 72 75 73 68 65  6f 72 25 0d 53 66 08 c9  |. brusheor%.Sf..|
0000b9e0  32 3a f5 0d 53 70 11 f2  6d 6f 75 73 65 5f 68 61  |2:..Sp..mouse_ha|
0000b9f0  6e 64 6c 65 0d 53 7a 22  42 25 3d 4d 58 2d 33 32  |ndle.Sz"B%=MX-32|
0000ba00  3a 43 25 3d 4d 59 2b 33  32 3a d6 20 62 72 75 73  |:C%=MY+32:. brus|
0000ba10  68 64 72 61 77 25 0d 53  84 0a fd 20 4d 42 3d 30  |hdraw%.S... MB=0|
0000ba20  0d 53 8e 05 cb 0d 53 98  11 c9 31 3a c8 8e 20 73  |.S....S...1:.. s|
0000ba30  74 65 70 25 20 ca 0d 53  a2 16 c9 31 2c 32 3a f2  |tep% ..S...1,2:.|
0000ba40  67 65 74 72 65 63 74 61  6e 67 6c 65 0d 53 ac 12  |getrectangle.S..|
0000ba50  c9 33 3a f2 70 6f 69 6e  74 28 30 2c 30 29 0d 53  |.3:.point(0,0).S|
0000ba60  b6 0d f2 73 6f 72 74 63  6f 72 64 0d 53 c0 24 42  |...sortcord.S.$B|
0000ba70  25 3d 78 31 25 3a 43 25  3d 79 31 25 3a 44 25 3d  |%=x1%:C%=y1%:D%=|
0000ba80  78 73 25 81 32 3a 45 25  3d 2d 79 73 25 81 34 0d  |xs%.2:E%=-ys%.4.|
0000ba90  53 ca 10 d6 20 62 72 75  73 68 64 72 61 77 25 0d  |S... brushdraw%.|
0000baa0  53 d4 0b f2 75 70 64 61  74 65 0d 53 de 05 cb 0d  |S...update.S....|
0000bab0  53 e8 11 c9 32 3a c8 8e  20 73 74 65 70 25 20 ca  |S...2:.. step% .|
0000bac0  0d 53 f2 16 c9 31 3a 78  30 25 3d 36 34 30 3a 79  |.S...1:x0%=640:y|
0000bad0  30 25 3d 35 31 32 0d 53  fc 27 c8 8f 20 78 30 25  |0%=512.S.'.. x0%|
0000bae0  2c 79 30 25 2c b6 28 28  4d 58 2d 78 30 25 29 5e  |,y0%,.((MX-x0%)^|
0000baf0  32 2b 28 4d 59 2d 79 30  25 29 5e 32 29 0d 54 06  |2+(MY-y0%)^2).T.|
0000bb00  09 c8 96 3a c8 96 0d 54  10 27 c8 8f 20 78 30 25  |...:...T.'.. x0%|
0000bb10  2c 79 30 25 2c b6 28 28  4d 58 2d 78 30 25 29 5e  |,y0%,.((MX-x0%)^|
0000bb20  32 2b 28 4d 59 2d 79 30  25 29 5e 32 29 0d 54 1a  |2+(MY-y0%)^2).T.|
0000bb30  1f 52 25 3d b6 28 28 4d  58 2d 78 30 25 29 5e 32  |.R%=.((MX-x0%)^2|
0000bb40  2b 28 4d 59 2d 79 30 25  29 5e 32 29 0d 54 24 08  |+(MY-y0%)^2).T$.|
0000bb50  c9 33 3a f5 0d 54 2e 11  f2 6d 6f 75 73 65 5f 68  |.3:..T...mouse_h|
0000bb60  61 6e 64 6c 65 0d 54 38  28 41 4e 3d b2 28 b3 28  |andle.T8(AN=.(.(|
0000bb70  33 36 30 29 29 3a 52 4f  25 3d b7 28 b2 28 b3 28  |360)):RO%=.(.(.(|
0000bb80  38 30 29 29 29 2a 28 52  25 2f 31 30 29 0d 54 42  |80)))*(R%/10).TB|
0000bb90  13 42 25 3d 4d 58 2b b5  28 41 4e 29 2a 52 4f 25  |.B%=MX+.(AN)*RO%|
0000bba0  0d 54 4c 13 43 25 3d 4d  59 2b 9b 28 41 4e 29 2a  |.TL.C%=MY+.(AN)*|
0000bbb0  52 4f 25 0d 54 56 10 d6  20 62 72 75 73 68 64 72  |RO%.TV.. brushdr|
0000bbc0  61 77 25 0d 54 60 0a fd  20 4d 42 3d 30 0d 54 6a  |aw%.T`.. MB=0.Tj|
0000bbd0  05 cb 0d 54 74 05 cb 0d  54 7e 04 0d 54 88 19 f4  |...Tt...T~..T...|
0000bbe0  20 41 6e 74 69 20 61 6c  69 61 73 65 64 20 73 71  | Anti aliased sq|
0000bbf0  75 61 73 68 0d 54 92 12  c9 36 37 3a c8 8e 20 73  |uash.T...67:.. s|
0000bc00  74 65 70 25 20 ca 0d 54  9c 16 c9 31 2c 32 3a f2  |tep% ..T...1,2:.|
0000bc10  67 65 74 72 65 63 74 61  6e 67 6c 65 0d 54 a6 14  |getrectangle.T..|
0000bc20  c9 33 3a 78 33 25 3d 4d  58 3a 79 33 25 3d 4d 59  |.3:x3%=MX:y3%=MY|
0000bc30  0d 54 b0 1f c9 34 3a c8  93 20 78 33 25 2c 79 33  |.T...4:.. x3%,y3|
0000bc40  25 2c 4d 58 2d 78 33 25  2c 4d 59 2d 79 33 25 0d  |%,MX-x3%,MY-y3%.|
0000bc50  54 ba 22 c8 96 3a c8 96  3a c8 93 20 78 33 25 2c  |T."..:..:.. x3%,|
0000bc60  79 33 25 2c 4d 58 2d 78  33 25 2c 4d 59 2d 79 33  |y3%,MX-x3%,MY-y3|
0000bc70  25 0d 54 c4 11 78 34 25  3d 4d 58 3a 79 34 25 3d  |%.T..x4%=MX:y4%=|
0000bc80  4d 59 0d 54 ce 10 c9 35  3a f2 63 6f 70 79 73 6f  |MY.T...5:.copyso|
0000bc90  72 74 0d 54 d8 11 78 33  25 3d 28 78 33 25 81 32  |rt.T..x3%=(x3%.2|
0000bca0  29 2a 32 0d 54 e2 11 78  34 25 3d 28 78 34 25 81  |)*2.T..x4%=(x4%.|
0000bcb0  32 29 2a 32 0d 54 ec 11  79 33 25 3d 28 79 33 25  |2)*2.T..y3%=(y3%|
0000bcc0  81 34 29 2a 34 0d 54 f6  11 79 34 25 3d 28 79 34  |.4)*4.T..y4%=(y4|
0000bcd0  25 81 34 29 2a 34 0d 55  00 2b e7 20 78 33 25 3e  |%.4)*4.U.+. x3%>|
0000bce0  78 34 25 20 8c 20 74 65  6d 70 25 3d 78 33 25 3a  |x4% . temp%=x3%:|
0000bcf0  78 33 25 3d 78 34 25 3a  78 34 25 3d 74 65 6d 70  |x3%=x4%:x4%=temp|
0000bd00  25 0d 55 0a 2b e7 20 79  34 25 3e 79 33 25 20 8c  |%.U.+. y4%>y3% .|
0000bd10  20 74 65 6d 70 25 3d 79  34 25 3a 79 34 25 3d 79  | temp%=y4%:y4%=y|
0000bd20  33 25 3a 79 33 25 3d 74  65 6d 70 25 0d 55 14 21  |3%:y3%=temp%.U.!|
0000bd30  78 70 73 25 3d 78 34 25  2d 78 33 25 2b 33 3a 79  |xps%=x4%-x3%+3:y|
0000bd40  70 73 25 3d 79 34 25 2d  79 33 25 2d 37 0d 55 1e  |ps%=y4%-y3%-7.U.|
0000bd50  0a 41 25 3d 78 31 25 0d  55 28 0a 42 25 3d 79 31  |.A%=x1%.U(.B%=y1|
0000bd60  25 0d 55 32 0c 43 25 3d  78 73 25 81 32 0d 55 3c  |%.U2.C%=xs%.2.U<|
0000bd70  0d 44 25 3d 2d 79 73 25  81 34 0d 55 46 0a 45 25  |.D%=-ys%.4.UF.E%|
0000bd80  3d 78 33 25 0d 55 50 0a  46 25 3d 79 33 25 0d 55  |=x3%.UP.F%=y3%.U|
0000bd90  5a 0d 47 25 3d 78 70 73  25 81 32 0d 55 64 0e 48  |Z.G%=xps%.2.Ud.H|
0000bda0  25 3d 2d 79 70 73 25 81  34 0d 55 6e 1a d6 20 61  |%=-yps%.4.Un.. a|
0000bdb0  6e 74 69 5f 61 6c 69 61  73 65 64 5f 73 71 75 61  |nti_aliased_squa|
0000bdc0  73 68 25 0d 55 78 05 cb  0d 55 82 04 0d 55 8c 0a  |sh%.Ux...U...U..|
0000bdd0  f4 20 46 75 7a 7a 0d 55  96 12 c9 36 38 3a c8 8e  |. Fuzz.U...68:..|
0000bde0  20 73 74 65 70 25 20 ca  0d 55 a0 16 c9 31 3a 78  | step% ..U...1:x|
0000bdf0  30 25 3d 36 34 30 3a 79  30 25 3d 35 31 32 0d 55  |0%=640:y0%=512.U|
0000be00  aa 27 c8 8f 20 78 30 25  2c 79 30 25 2c b6 28 28  |.'.. x0%,y0%,.((|
0000be10  4d 58 2d 78 30 25 29 5e  32 2b 28 4d 59 2d 79 30  |MX-x0%)^2+(MY-y0|
0000be20  25 29 5e 32 29 0d 55 b4  09 c8 96 3a c8 96 0d 55  |%)^2).U....:...U|
0000be30  be 27 c8 8f 20 78 30 25  2c 79 30 25 2c b6 28 28  |.'.. x0%,y0%,.((|
0000be40  4d 58 2d 78 30 25 29 5e  32 2b 28 4d 59 2d 79 30  |MX-x0%)^2+(MY-y0|
0000be50  25 29 5e 32 29 0d 55 c8  1f 52 25 3d b6 28 28 4d  |%)^2).U..R%=.((M|
0000be60  58 2d 78 30 25 29 5e 32  2b 28 4d 59 2d 79 30 25  |X-x0%)^2+(MY-y0%|
0000be70  29 5e 32 29 0d 55 d2 06  c9 33 0d 55 dc 05 f5 0d  |)^2).U...3.U....|
0000be80  55 e6 11 f2 6d 6f 75 73  65 5f 68 61 6e 64 6c 65  |U...mouse_handle|
0000be90  0d 55 f0 2a 41 4e 31 3d  b2 28 b3 28 33 36 30 29  |.U.*AN1=.(.(360)|
0000bea0  29 3a 52 4f 31 25 3d b7  28 b2 28 b3 28 38 30 29  |):RO1%=.(.(.(80)|
0000beb0  29 29 2a 28 52 25 2f 31  30 29 0d 55 fa 2a 41 4e  |))*(R%/10).U.*AN|
0000bec0  32 3d b2 28 b3 28 33 36  30 29 29 3a 52 4f 32 25  |2=.(.(360)):RO2%|
0000bed0  3d b7 28 b2 28 b3 28 38  30 29 29 29 2a 28 52 25  |=.(.(.(80)))*(R%|
0000bee0  2f 31 30 29 0d 56 04 15  41 25 3d 4d 58 2b b5 28  |/10).V..A%=MX+.(|
0000bef0  41 4e 31 29 2a 52 4f 31  25 0d 56 0e 15 42 25 3d  |AN1)*RO1%.V..B%=|
0000bf00  4d 59 2b 9b 28 41 4e 31  29 2a 52 4f 31 25 0d 56  |MY+.(AN1)*RO1%.V|
0000bf10  18 15 43 25 3d 4d 58 2b  b5 28 41 4e 32 29 2a 52  |..C%=MX+.(AN2)*R|
0000bf20  4f 32 25 0d 56 22 15 44  25 3d 4d 59 2b 9b 28 41  |O2%.V".D%=MY+.(A|
0000bf30  4e 32 29 2a 52 4f 32 25  0d 56 2c 12 d6 20 73 77  |N2)*RO2%.V,.. sw|
0000bf40  61 70 5f 70 69 78 65 6c  73 25 0d 56 36 0a fd 20  |ap_pixels%.V6.. |
0000bf50  4d 42 3d 30 0d 56 40 05  cb 0d 56 4a 04 0d 56 54  |MB=0.V@...VJ..VT|
0000bf60  0d f4 20 4f 70 74 69 6f  6e 73 0d 56 5e 10 c9 36  |.. Options.V^..6|
0000bf70  39 2c 37 30 2c 37 38 2c  37 39 0d 56 68 0d c8 8e  |9,70,78,79.Vh...|
0000bf80  20 21 41 63 25 20 ca 0d  56 72 10 c9 36 39 3a 73  | !Ac% ..Vr..69:s|
0000bf90  65 6c 65 63 74 3d b9 0d  56 7c 10 c9 37 30 3a 73  |elect=..V|..70:s|
0000bfa0  65 6c 65 63 74 3d a3 0d  56 86 16 c9 37 38 3a 21  |elect=..V...78:!|
0000bfb0  6c 65 66 74 5f 68 61 6e  64 65 64 3d 30 0d 56 90  |left_handed=0.V.|
0000bfc0  16 c9 37 39 3a 21 6c 65  66 74 5f 68 61 6e 64 65  |..79:!left_hande|
0000bfd0  64 3d 31 0d 56 9a 05 cb  0d 56 a4 11 f2 72 65 73  |d=1.V....V...res|
0000bfe0  65 74 5f 61 63 74 69 6f  6e 0d 56 ae 04 0d 56 b8  |et_action.V...V.|
0000bff0  0f f4 20 50 69 78 65 6c  6c 61 74 65 0d 56 c2 12  |.. Pixellate.V..|
0000c000  c9 37 31 3a c8 8e 20 73  74 65 70 25 20 ca 0d 56  |.71:.. step% ..V|
0000c010  cc 16 c9 31 2c 32 3a f2  67 65 74 72 65 63 74 61  |...1,2:.getrecta|
0000c020  6e 67 6c 65 0d 56 d6 10  c9 33 3a f2 73 6f 72 74  |ngle.V...3:.sort|
0000c030  63 6f 72 64 0d 56 e0 21  67 73 78 25 3d 94 28 78  |cord.V.!gsx%=.(x|
0000c040  31 25 2d 4d 58 29 3a 67  73 79 25 3d 94 28 79 31  |1%-MX):gsy%=.(y1|
0000c050  25 2d 4d 59 29 0d 56 ea  15 67 73 78 25 3d 28 67  |%-MY).V..gsx%=(g|
0000c060  73 78 25 20 81 20 32 29  2a 32 0d 56 f4 15 67 73  |sx% . 2)*2.V..gs|
0000c070  79 25 3d 28 67 73 79 25  20 81 20 34 29 2a 34 0d  |y%=(gsy% . 4)*4.|
0000c080  56 fe 15 e7 20 67 73 78  25 3c 34 20 8c 20 67 73  |V... gsx%<4 . gs|
0000c090  78 25 3d 34 0d 57 08 15  e7 20 67 73 79 25 3c 38  |x%=4.W... gsy%<8|
0000c0a0  20 8c 20 67 73 79 25 3d  38 0d 57 12 0c f2 70 69  | . gsy%=8.W...pi|
0000c0b0  78 67 72 69 64 0d 57 1c  09 c8 96 3a c8 96 0d 57  |xgrid.W....:...W|
0000c0c0  26 0c f2 70 69 78 67 72  69 64 0d 57 30 12 c9 34  |&..pixgrid.W0..4|
0000c0d0  3a f2 70 6f 69 6e 74 28  30 2c 30 29 0d 57 3a 1b  |:.point(0,0).W:.|
0000c0e0  e3 20 67 79 25 3d 79 31  25 20 b8 20 79 32 25 20  |. gy%=y1% . y2% |
0000c0f0  88 20 2d 67 73 79 25 0d  57 44 1a e3 20 67 78 25  |. -gsy%.WD.. gx%|
0000c100  3d 78 31 25 20 b8 20 78  32 25 20 88 20 67 73 78  |=x1% . x2% . gsx|
0000c110  25 0d 57 4e 15 73 78 25  3d 67 73 78 25 3a 73 79  |%.WN.sx%=gsx%:sy|
0000c120  25 3d 67 73 79 25 0d 57  58 26 e7 20 67 78 25 2b  |%=gsy%.WX&. gx%+|
0000c130  73 78 25 3e 78 32 25 20  8c 20 73 78 25 2d 3d 67  |sx%>x2% . sx%-=g|
0000c140  78 25 2b 73 78 25 2d 78  32 25 2d 32 0d 57 62 28  |x%+sx%-x2%-2.Wb(|
0000c150  e7 20 67 79 25 2d 73 79  25 3c 79 32 25 20 8c 20  |. gy%-sy%<y2% . |
0000c160  73 79 25 2d 3d 79 32 25  2d 28 67 79 25 2d 73 79  |sy%-=y2%-(gy%-sy|
0000c170  25 29 2d 34 0d 57 6c 23  41 25 3d 67 78 25 3a 42  |%)-4.Wl#A%=gx%:B|
0000c180  25 3d 67 79 25 3a 43 25  3d 73 78 25 81 32 3a 44  |%=gy%:C%=sx%.2:D|
0000c190  25 3d 73 79 25 81 34 0d  57 76 11 d6 20 43 4f 4c  |%=sy%.4.Wv.. COL|
0000c1a0  61 76 65 72 61 67 65 25  0d 57 80 05 ed 0d 57 8a  |average%.W....W.|
0000c1b0  05 ed 0d 57 94 17 c8 97  20 c8 93 20 30 2c 30 2c  |...W.... .. 0,0,|
0000c1c0  31 32 37 39 2c 31 30 32  33 0d 57 9e 0b f2 75 70  |1279,1023.W...up|
0000c1d0  64 61 74 65 0d 57 a8 05  cb 0d 57 b2 04 0d 57 bc  |date.W....W...W.|
0000c1e0  0f f4 20 43 6f 70 79 20  46 69 6c 6c 0d 57 c6 12  |.. Copy Fill.W..|
0000c1f0  c9 37 32 3a c8 8e 20 73  74 65 70 25 20 ca 0d 57  |.72:.. step% ..W|
0000c200  d0 16 c9 31 2c 32 3a f2  67 65 74 72 65 63 74 61  |...1,2:.getrecta|
0000c210  6e 67 6c 65 0d 57 da 14  c9 33 3a 70 78 25 3d 4d  |ngle.W...3:px%=M|
0000c220  58 3a 70 79 25 3d 4d 59  0d 57 e4 1c c9 34 3a f2  |X:py%=MY.W...4:.|
0000c230  63 6f 70 79 73 6f 72 74  3a f2 70 6f 69 6e 74 28  |copysort:.point(|
0000c240  30 2c 30 29 0d 57 ee 1e  e6 20 31 32 38 2b b0 4d  |0,0).W... 128+.M|
0000c250  58 2c 4d 59 29 20 c8 9c  20 c8 9c 28 4d 58 2c 4d  |X,MY) .. ..(MX,M|
0000c260  59 29 0d 57 f8 33 e7 20  21 66 69 6c 6c 5f 73 74  |Y).W.3. !fill_st|
0000c270  79 6c 65 3d 30 20 84 20  21 66 69 6c 6c 5f 73 74  |yle=0 . !fill_st|
0000c280  79 6c 65 3d 33 20 8c 20  21 66 69 6c 6c 5f 73 74  |yle=3 . !fill_st|
0000c290  79 6c 65 3d 32 0d 58 02  14 c8 8e 20 21 66 69 6c  |yle=2.X.... !fil|
0000c2a0  6c 5f 73 74 79 6c 65 20  ca 0d 58 0c 0b c9 31 2c  |l_style ..X...1,|
0000c2b0  32 2c 33 3a 0d 58 16 15  d6 20 62 69 74 5f 6d 61  |2,3:.X... bit_ma|
0000c2c0  70 5f 73 63 61 6e 5f 41  25 0d 58 20 0e f0 26 38  |p_scan_A%.X ..&8|
0000c2d0  35 2c 4d 58 2c 4d 59 0d  58 2a 28 41 25 3d 78 31  |5,MX,MY.X*(A%=x1|
0000c2e0  25 81 32 3a 42 25 3d 79  31 25 81 34 3a 43 25 3d  |%.2:B%=y1%.4:C%=|
0000c2f0  78 73 25 81 32 3a 44 25  3d 2d 79 73 25 81 34 0d  |xs%.2:D%=-ys%.4.|
0000c300  58 34 14 c8 8e 20 21 66  69 6c 6c 5f 73 74 79 6c  |X4... !fill_styl|
0000c310  65 20 ca 0d 58 3e 15 c9  31 2c 32 3a d6 20 63 6f  |e ..X>..1,2:. co|
0000c320  70 79 5f 66 69 6c 6c 25  0d 58 48 20 c9 33 3a f4  |py_fill%.XH .3:.|
0000c330  20 53 68 6f 75 6c 64 20  62 65 20 66 75 6c 6c 20  | Should be full |
0000c340  6d 61 70 70 69 6e 67 2e  0d 58 52 05 cb 0d 58 5c  |mapping..XR...X\|
0000c350  05 cb 0d 58 66 0b f2 75  70 64 61 74 65 0d 58 70  |...Xf..update.Xp|
0000c360  05 cb 0d 58 7a 04 0d 58  84 1b f4 20 53 61 76 65  |...Xz..X... Save|
0000c370  20 43 6f 6d 70 61 63 74  65 64 20 53 70 72 69 74  | Compacted Sprit|
0000c380  65 0d 58 8e 2c c9 37 33  3a e7 20 a4 74 65 78 74  |e.X.,.73:. .text|
0000c390  5f 65 6e 74 72 79 28 33  33 2c 24 73 63 72 65 65  |_entry(33,$scree|
0000c3a0  6e 5f 73 74 72 25 2c 32  35 35 29 20 8c 0d 58 98  |n_str%,255) ..X.|
0000c3b0  26 f2 70 6f 69 6e 74 28  30 2c 31 29 3a f2 63 6f  |&.point(0,1):.co|
0000c3c0  6d 70 61 63 74 65 64 73  61 76 65 28 31 2c 6f 75  |mpactedsave(1,ou|
0000c3d0  74 24 29 0d 58 a2 14 61  72 65 61 24 3d c3 28 78  |t$).X..area$=.(x|
0000c3e0  73 25 2a 79 73 25 29 0d  58 ac 21 70 65 72 24 3d  |s%*ys%).X.!per$=|
0000c3f0  c0 c3 28 63 73 25 2f 28  78 73 25 2a 79 73 25 29  |..(cs%/(xs%*ys%)|
0000c400  2a 31 30 30 29 2c 34 29  0d 58 b6 9c e7 20 a6 28  |*100),4).X... .(|
0000c410  2d 31 29 20 8c 20 f2 65  72 72 6f 72 68 61 6e 64  |-1) . .errorhand|
0000c420  6c 65 28 31 2c 22 43 6f  6d 70 61 63 74 69 6f 6e  |le(1,"Compaction|
0000c430  20 52 65 70 6f 72 74 7c  53 69 7a 65 3a 20 22 2b  | Report|Size: "+|
0000c440  c3 28 78 73 25 29 2b 22  78 22 2b c3 28 79 73 25  |.(xs%)+"x"+.(ys%|
0000c450  29 2b 22 7c 41 72 65 61  20 69 6e 20 62 79 74 65  |)+"|Area in byte|
0000c460  73 3a 20 22 2b 61 72 65  61 24 2b 22 7c 42 79 74  |s: "+area$+"|Byt|
0000c470  65 73 20 75 73 65 64 3a  20 22 2b c3 28 63 73 25  |es used: "+.(cs%|
0000c480  29 2b 22 7c 50 65 72 63  65 6e 74 61 67 65 3a 20  |)+"|Percentage: |
0000c490  22 2b 70 65 72 24 2c 22  20 22 2c 73 65 6c 65 63  |"+per$," ",selec|
0000c4a0  74 65 64 29 0d 58 c0 15  24 73 63 72 65 65 6e 5f  |ted).X..$screen_|
0000c4b0  73 74 72 25 3d 6f 75 74  24 0d 58 ca 05 cd 0d 58  |str%=out$.X....X|
0000c4c0  d4 10 f2 72 65 73 65 74  5f 65 6e 74 72 79 0d 58  |...reset_entry.X|
0000c4d0  de 04 0d 58 e8 13 f4 20  43 6f 6d 70 61 63 74 65  |...X... Compacte|
0000c4e0  64 20 47 65 74 0d 58 f2  12 c9 37 34 3a c8 8e 20  |d Get.X...74:.. |
0000c4f0  73 74 65 70 25 20 ca 0d  58 fc 16 c9 31 2c 32 3a  |step% ..X...1,2:|
0000c500  f2 67 65 74 72 65 63 74  61 6e 67 6c 65 0d 59 06  |.getrectangle.Y.|
0000c510  10 c9 33 3a f2 73 6f 72  74 63 6f 72 64 0d 59 10  |..3:.sortcord.Y.|
0000c520  0f 21 63 6f 6d 5f 78 31  3d 78 31 25 0d 59 1a 0f  |.!com_x1=x1%.Y..|
0000c530  21 63 6f 6d 5f 79 31 3d  79 31 25 0d 59 24 0f 21  |!com_y1=y1%.Y$.!|
0000c540  63 6f 6d 5f 78 32 3d 78  32 25 0d 59 2e 0f 21 63  |com_x2=x2%.Y..!c|
0000c550  6f 6d 5f 79 32 3d 79 32  25 0d 59 38 05 cb 0d 59  |om_y2=y2%.Y8...Y|
0000c560  42 04 0d 59 4c 1b f4 20  4d 6f 64 65 20 31 35 20  |B..YL.. Mode 15 |
0000c570  74 6f 20 31 33 20 63 6f  6e 76 65 72 74 0d 59 56  |to 13 convert.YV|
0000c580  12 c9 37 35 3a c8 8e 20  73 74 65 70 25 20 ca 0d  |..75:.. step% ..|
0000c590  59 60 16 c9 31 2c 32 3a  f2 67 65 74 72 65 63 74  |Y`..1,2:.getrect|
0000c5a0  61 6e 67 6c 65 0d 59 6a  2c c9 33 3a f2 73 6f 72  |angle.Yj,.3:.sor|
0000c5b0  74 63 6f 72 64 3a 78 73  25 2d 3d 32 3a 79 73 25  |tcord:xs%-=2:ys%|
0000c5c0  2b 3d 34 3a 70 78 25 3d  4d 58 3a 70 79 25 3d 4d  |+=4:px%=MX:py%=M|
0000c5d0  59 0d 59 74 19 c8 93 20  70 78 25 2c 70 79 25 2c  |Y.Yt... px%,py%,|
0000c5e0  78 73 25 2f 32 2c 2d 79  73 25 0d 59 7e 09 c8 96  |xs%/2,-ys%.Y~...|
0000c5f0  3a c8 96 0d 59 88 19 c8  93 20 70 78 25 2c 70 79  |:...Y.... px%,py|
0000c600  25 2c 78 73 25 2f 32 2c  2d 79 73 25 0d 59 92 10  |%,xs%/2,-ys%.Y..|
0000c610  c9 34 3a f2 73 6f 72 74  63 6f 72 64 0d 59 9c 38  |.4:.sortcord.Y.8|
0000c620  41 25 3d 78 31 25 3a 42  25 3d 79 31 25 3a 43 25  |A%=x1%:B%=y1%:C%|
0000c630  3d 78 73 25 81 34 3a 44  25 3d 2d 79 73 25 81 34  |=xs%.4:D%=-ys%.4|
0000c640  3a 45 25 3d 70 78 25 3a  46 25 3d 70 79 25 2d 79  |:E%=px%:F%=py%-y|
0000c650  73 25 2d 34 0d 59 a6 19  d6 20 43 4f 4c 6d 6f 64  |s%-4.Y... COLmod|
0000c660  65 31 35 5f 31 33 72 65  73 69 7a 65 25 0d 59 b0  |e15_13resize%.Y.|
0000c670  05 cb 0d 59 ba 04 0d 59  c4 19 f4 20 43 6f 6c 6f  |...Y...Y... Colo|
0000c680  75 72 20 41 76 65 72 61  67 65 20 41 72 65 61 0d  |ur Average Area.|
0000c690  59 ce 12 c9 37 36 3a c8  8e 20 73 74 65 70 25 20  |Y...76:.. step% |
0000c6a0  ca 0d 59 d8 16 c9 31 2c  32 3a f2 67 65 74 72 65  |..Y...1,2:.getre|
0000c6b0  63 74 61 6e 67 6c 65 0d  59 e2 10 c9 33 3a f2 73  |ctangle.Y...3:.s|
0000c6c0  6f 72 74 63 6f 72 64 0d  59 ec 24 41 25 3d 78 31  |ortcord.Y.$A%=x1|
0000c6d0  25 3a 42 25 3d 79 31 25  3a 43 25 3d 78 73 25 81  |%:B%=y1%:C%=xs%.|
0000c6e0  32 3a 44 25 3d 2d 79 73  25 81 34 0d 59 f6 11 d6  |2:D%=-ys%.4.Y...|
0000c6f0  20 43 4f 4c 61 76 65 72  61 67 65 25 0d 5a 00 05  | COLaverage%.Z..|
0000c700  cb 0d 5a 0a 04 0d 5a 14  16 f4 20 55 70 64 61 74  |..Z...Z... Updat|
0000c710  65 20 46 6f 6e 74 20 4c  69 73 74 0d 5a 1e 07 c9  |e Font List.Z...|
0000c720  37 37 0d 5a 28 13 d6 20  66 6f 6e 74 6c 69 73 74  |77.Z(.. fontlist|
0000c730  69 6e 69 74 25 0d 5a 32  11 f2 72 65 73 65 74 5f  |init%.Z2..reset_|
0000c740  61 63 74 69 6f 6e 0d 5a  3c 04 0d 5a 46 13 f4 20  |action.Z<..ZF.. |
0000c750  33 20 70 6f 69 6e 74 20  63 75 72 76 65 0d 5a 50  |3 point curve.ZP|
0000c760  12 c9 38 30 3a c8 8e 20  73 74 65 70 25 20 ca 0d  |..80:.. step% ..|
0000c770  5a 5a 14 c9 31 3a 78 31  25 3d 4d 58 3a 79 31 25  |ZZ..1:x1%=MX:y1%|
0000c780  3d 4d 59 0d 5a 64 14 c9  32 3a 78 32 25 3d 4d 58  |=MY.Zd..2:x2%=MX|
0000c790  3a 79 32 25 3d 4d 59 0d  5a 6e 17 ec 20 78 31 25  |:y2%=MY.Zn.. x1%|
0000c7a0  2c 79 31 25 3a df 20 78  32 25 2c 79 32 25 0d 5a  |,y1%:. x2%,y2%.Z|
0000c7b0  78 09 c8 96 3a c8 96 0d  5a 82 17 ec 20 78 31 25  |x...:...Z... x1%|
0000c7c0  2c 79 31 25 3a df 20 78  32 25 2c 79 32 25 0d 5a  |,y1%:. x2%,y2%.Z|
0000c7d0  8c 14 c9 33 3a 78 33 25  3d 4d 58 3a 79 33 25 3d  |...3:x3%=MX:y3%=|
0000c7e0  4d 59 0d 5a 96 1f f2 63  75 72 76 65 28 32 30 29  |MY.Z...curve(20)|
0000c7f0  3a c8 96 3a c8 96 3a f2  63 75 72 76 65 28 32 30  |:..:..:.curve(20|
0000c800  29 0d 5a a0 10 c9 34 3a  f2 63 75 72 76 65 28 31  |).Z...4:.curve(1|
0000c810  29 0d 5a aa 05 cb 0d 5a  b4 04 0d 5a be 19 f4 20  |).Z....Z...Z... |
0000c820  42 6f 74 74 6c 65 20 57  61 6c 6c 20 46 6f 72 6d  |Bottle Wall Form|
0000c830  75 6c 61 0d 5a c8 34 c9  38 31 3a e7 20 a4 74 65  |ula.Z.4.81:. .te|
0000c840  78 74 5f 65 6e 74 72 79  28 33 32 2c 62 6f 74 72  |xt_entry(32,botr|
0000c850  61 64 24 2c 32 35 35 29  20 8c 20 62 6f 74 72 61  |ad$,255) . botra|
0000c860  64 24 3d 6f 75 74 24 0d  5a d2 10 f2 72 65 73 65  |d$=out$.Z...rese|
0000c870  74 5f 65 6e 74 72 79 0d  5a dc 04 0d 5a e6 10 f4  |t_entry.Z...Z...|
0000c880  20 55 6e 64 6f 20 42 72  75 73 68 0d 5a f0 12 c9  | Undo Brush.Z...|
0000c890  38 32 3a c8 8e 20 73 74  65 70 25 20 ca 0d 5a fa  |82:.. step% ..Z.|
0000c8a0  29 c9 31 3a 41 25 3d 28  4d 58 20 81 20 32 29 2d  |).1:A%=(MX . 2)-|
0000c8b0  31 36 3a 42 25 3d 32 35  35 2d 28 28 4d 59 20 81  |16:B%=255-((MY .|
0000c8c0  20 34 29 2b 38 29 0d 5b  04 0f d6 20 62 72 75 73  | 4)+8).[... brus|
0000c8d0  68 65 6f 72 25 0d 5b 0e  15 c8 96 3a c8 96 3a d6  |heor%.[....:..:.|
0000c8e0  20 62 72 75 73 68 65 6f  72 25 0d 5b 18 08 c9 32  | brusheor%.[...2|
0000c8f0  3a f5 0d 5b 22 11 f2 6d  6f 75 73 65 5f 68 61 6e  |:..["..mouse_han|
0000c900  64 6c 65 0d 5b 2c 26 41  25 3d 28 4d 58 20 81 20  |dle.[,&A%=(MX . |
0000c910  32 29 2d 31 36 3a 42 25  3d 32 35 35 2d 28 28 4d  |2)-16:B%=255-((M|
0000c920  59 20 81 20 34 29 2b 38  29 0d 5b 36 10 d6 20 62  |Y . 4)+8).[6.. b|
0000c930  72 75 73 68 75 6e 64 6f  25 0d 5b 40 0a fd 20 4d  |rushundo%.[@.. M|
0000c940  42 3d 30 0d 5b 4a 05 cb  0d 5b 54 04 0d 5b 5e 05  |B=0.[J...[T..[^.|
0000c950  cb 0d 5b 68 05 e1 0d 5b  72 04 0d 5b 7c 0f dd f2  |..[h...[r..[|...|
0000c960  63 75 72 76 65 28 72 25  29 0d 5b 86 11 f0 20 26  |curve(r%).[... &|
0000c970  34 35 2c 78 31 25 2c 79  31 25 0d 5b 90 1b 78 73  |45,x1%,y1%.[..xs|
0000c980  25 3d 78 31 25 2d 78 32  25 3a 79 73 25 3d 79 31  |%=x1%-x2%:ys%=y1|
0000c990  25 2d 79 32 25 0d 5b 9a  2d 78 73 32 25 3d 28 78  |%-y2%.[.-xs2%=(x|
0000c9a0  31 25 2d 78 73 25 2f 32  29 2d 78 33 25 3a 79 73  |1%-xs%/2)-x3%:ys|
0000c9b0  32 25 3d 28 79 31 25 2d  79 73 25 2f 32 29 2d 79  |2%=(y1%-ys%/2)-y|
0000c9c0  33 25 0d 5b a4 0d e7 20  72 25 3c 3e 31 20 8c 0d  |3%.[... r%<>1 ..|
0000c9d0  5b ae 09 73 25 3d 72 25  0d 5b b8 05 cc 0d 5b c2  |[..s%=r%.[....[.|
0000c9e0  23 e7 20 94 78 73 25 3e  94 79 73 25 20 8c 20 73  |#. .xs%>.ys% . s|
0000c9f0  25 3d 94 78 73 25 20 8b  20 73 25 3d 94 79 73 25  |%=.xs% . s%=.ys%|
0000ca00  0d 5b cc 05 cd 0d 5b d6  1d e3 20 73 74 3d 31 2f  |.[....[... st=1/|
0000ca10  73 25 20 b8 20 31 2d 31  2f 73 25 20 88 20 31 2f  |s% . 1-1/s% . 1/|
0000ca20  73 25 0d 5b e0 25 78 25  3d 78 31 25 2d 28 78 73  |s%.[.%x%=x1%-(xs|
0000ca30  25 2a 73 74 29 2d 28 78  73 32 25 2a b5 b2 28 73  |%*st)-(xs2%*..(s|
0000ca40  74 2a 31 38 30 29 29 0d  5b ea 25 79 25 3d 79 31  |t*180)).[.%y%=y1|
0000ca50  25 2d 28 79 73 25 2a 73  74 29 2d 28 79 73 32 25  |%-(ys%*st)-(ys2%|
0000ca60  2a b5 b2 28 73 74 2a 31  38 30 29 29 0d 5b f4 0f  |*..(st*180)).[..|
0000ca70  f0 20 26 32 35 2c 78 25  2c 79 25 0d 5b fe 05 ed  |. &25,x%,y%.[...|
0000ca80  0d 5c 08 11 f0 20 26 32  35 2c 78 32 25 2c 79 32  |.\... &25,x2%,y2|
0000ca90  25 0d 5c 12 05 e1 0d 5c  1c 04 0d 5c 26 1e dd a4  |%.\....\...\&...|
0000caa0  74 65 78 74 5f 65 6e 74  72 79 28 73 6c 25 2c 69  |text_entry(sl%,i|
0000cab0  6e 24 2c 6c 65 6e 25 29  0d 5c 30 0d 21 70 75 74  |n$,len%).\0.!put|
0000cac0  69 74 25 3d 31 0d 5c 3a  18 f2 70 6f 69 6e 74 28  |it%=1.\:..point(|
0000cad0  30 2c 50 4e 6b 65 79 62  6f 61 72 64 29 0d 5c 44  |0,PNkeyboard).\D|
0000cae0  1b f2 72 65 73 65 74 5f  61 63 74 69 6f 6e 3a d6  |..reset_action:.|
0000caf0  20 75 70 74 72 65 65 25  0d 5c 4e 28 41 25 3d 2d  | uptree%.\N(A%=-|
0000cb00  31 32 38 3a 42 25 3d 21  73 74 61 72 74 79 25 2b  |128:B%=!starty%+|
0000cb10  35 36 3a 45 25 3d 2d 31  3a d6 20 68 65 6c 70 25  |56:E%=-1:. help%|
0000cb20  0d 5c 58 2f 41 25 3d 2d  31 32 38 3a 42 25 3d 21  |.\X/A%=-128:B%=!|
0000cb30  73 74 61 72 74 79 25 2d  21 73 69 7a 65 79 2d 39  |starty%-!sizey-9|
0000cb40  36 3a 45 25 3d 2d 31 3a  d6 20 68 65 6c 70 25 0d  |6:E%=-1:. help%.|
0000cb50  5c 62 0b 73 74 65 70 25  3d 31 0d 5c 6c 27 67 6f  |\b.step%=1.\l'go|
0000cb60  3d a4 69 6e 73 74 72 69  6e 67 28 73 6c 25 2c 31  |=.instring(sl%,1|
0000cb70  32 36 2c 69 6e 24 2c 6f  75 74 24 2c 6c 65 6e 25  |26,in$,out$,len%|
0000cb80  29 0d 5c 76 1e d6 20 6c  69 66 74 75 70 25 3a d6  |).\v.. liftup%:.|
0000cb90  20 70 75 74 62 61 63 6b  67 72 6f 75 6e 64 25 0d  | putbackground%.|
0000cba0  5c 80 07 3d 67 6f 0d 5c  8a 04 0d 5c 94 11 dd f2  |\..=go.\...\....|
0000cbb0  72 65 73 65 74 5f 65 6e  74 72 79 0d 5c 9e 26 d6  |reset_entry.\.&.|
0000cbc0  20 6c 69 66 74 64 6f 77  6e 25 3a ef 35 3a d6 20  | liftdown%:.5:. |
0000cbd0  68 65 6c 70 74 65 78 74  25 3a f2 75 70 64 61 74  |helptext%:.updat|
0000cbe0  65 0d 5c a8 05 e1 0d 5c  b2 04 0d 5c bc 16 dd f2  |e.\....\...\....|
0000cbf0  65 76 61 6c 5f 65 72 72  6f 72 5f 63 68 65 61 74  |eval_error_cheat|
0000cc00  0d 5c c6 07 ea 20 85 0d  5c d0 21 ee 20 85 20 ea  |.\... ..\.!. . .|
0000cc10  20 65 76 61 6c 24 3d 22  22 3a ef 37 3a 74 24 3d  | eval$="":.7:t$=|
0000cc20  f6 24 3a f7 20 85 3a e1  0d 5c da 39 e7 20 97 28  |.$:. .:..\.9. .(|
0000cc30  65 76 61 6c 24 29 3d 31  32 36 20 8c 20 74 24 3d  |eval$)=126 . t$=|
0000cc40  c3 7e 28 a0 28 c1 65 76  61 6c 24 2c 32 29 29 29  |.~(.(.eval$,2)))|
0000cc50  20 8b 20 74 24 3d c3 28  a0 28 65 76 61 6c 24 29  | . t$=.(.(eval$)|
0000cc60  29 0d 5c e4 07 f7 20 85  0d 5c ee 05 e1 0d 5c f8  |).\... ..\....\.|
0000cc70  04 0d 5d 02 1b dd f2 63  6f 6d 70 61 63 74 65 64  |..]....compacted|
0000cc80  73 61 76 65 28 74 25 2c  66 6e 24 29 0d 5d 0c 07  |save(t%,fn$).]..|
0000cc90  ea 20 85 0d 5d 16 23 ee  20 85 20 ea 20 d6 20 75  |. ..].#. . . . u|
0000cca0  6e 64 6f 73 61 76 65 25  3a f7 20 85 3a 85 20 39  |ndosave%:. .:. 9|
0000ccb0  39 2c f6 24 3a e1 0d 5d  20 28 ff 22 44 65 66 69  |9,.$:..] (."Defi|
0000ccc0  6e 65 42 75 66 66 65 72  20 22 2b c3 28 53 54 4f  |neBuffer "+.(STO|
0000ccd0  52 45 25 29 2b 22 20 26  32 38 30 30 30 22 0d 5d  |RE%)+" &28000".]|
0000cce0  2a 0b c8 8e 20 74 25 20  ca 0d 5d 34 2a c9 30 3a  |*... t% ..]4*.0:|
0000ccf0  ff 22 43 6f 6d 5f 53 61  76 65 20 22 2b 66 6e 24  |."Com_Save "+fn$|
0000cd00  2b 22 20 30 20 30 20 31  32 37 39 20 31 30 32 33  |+" 0 0 1279 1023|
0000cd10  20 30 22 0d 5d 3e 2c c9  31 3a e7 20 3f 28 66 6c  | 0".]>,.1:. ?(fl|
0000cd20  61 67 73 25 2b 31 29 3d  30 20 8c 20 74 6c 25 3d  |ags%+1)=0 . tl%=|
0000cd30  62 65 68 69 6e 64 25 20  8b 20 74 6c 25 3d 30 0d  |behind% . tl%=0.|
0000cd40  5d 48 5b ff 22 43 6f 6d  5f 53 61 76 65 20 22 2b  |]H[."Com_Save "+|
0000cd50  66 6e 24 2b 22 20 22 2b  c3 28 21 63 6f 6d 5f 78  |fn$+" "+.(!com_x|
0000cd60  31 29 2b 22 20 22 2b c3  28 21 63 6f 6d 5f 79 31  |1)+" "+.(!com_y1|
0000cd70  29 2b 22 20 22 2b c3 28  21 63 6f 6d 5f 78 32 29  |)+" "+.(!com_x2)|
0000cd80  2b 22 20 22 2b c3 28 21  63 6f 6d 5f 79 32 29 2b  |+" "+.(!com_y2)+|
0000cd90  22 20 22 2b c3 28 74 6c  25 29 0d 5d 52 05 cb 0d  |" "+.(tl%).]R...|
0000cda0  5d 5c 0a 63 73 25 3d 31  30 0d 5d 66 0a 78 73 25  |]\.cs%=10.]f.xs%|
0000cdb0  3d 31 30 0d 5d 70 0a 79  73 25 3d 31 30 0d 5d 7a  |=10.]p.ys%=10.]z|
0000cdc0  0f d6 20 75 6e 64 6f 73  61 76 65 25 0d 5d 84 07  |.. undosave%.]..|
0000cdd0  f7 20 85 0d 5d 8e 05 e1  0d 5d 98 04 0d 5d a2 19  |. ..]....]...]..|
0000cde0  dd f2 63 6f 6d 70 72 65  73 73 65 64 73 61 76 65  |..compressedsave|
0000cdf0  28 66 6e 24 29 0d 5d ac  07 ea 20 85 0d 5d b6 23  |(fn$).]... ..].#|
0000ce00  ee 20 85 20 ea 20 d6 20  75 6e 64 6f 73 61 76 65  |. . . . undosave|
0000ce10  25 3a f7 20 85 3a 85 20  39 39 2c f6 24 3a e1 0d  |%:. .:. 99,.$:..|
0000ce20  5d c0 0d 24 63 61 74 25  3d 66 6e 24 0d 5d ca 14  |]..$cat%=fn$.]..|
0000ce30  d6 20 63 6f 6d 70 61 63  74 65 64 73 61 76 65 25  |. compactedsave%|
0000ce40  0d 5d d4 0f d6 20 75 6e  64 6f 73 61 76 65 25 0d  |.]... undosave%.|
0000ce50  5d de 07 f7 20 85 0d 5d  e8 05 e1 0d 5d f2 04 0d  |]... ..]....]...|
0000ce60  5d fc 0d dd f2 70 69 78  67 72 69 64 0d 5e 06 16  |]....pixgrid.^..|
0000ce70  c8 93 20 78 31 25 2c 79  31 25 2c 78 73 25 2c 79  |.. x1%,y1%,xs%,y|
0000ce80  73 25 0d 5e 10 1e e3 20  58 25 3d 78 31 25 2b 67  |s%.^... X%=x1%+g|
0000ce90  73 78 25 20 b8 20 78 32  25 20 88 20 67 73 78 25  |sx% . x2% . gsx%|
0000cea0  0d 5e 1a 13 86 20 58 25  2c 79 31 25 2c 58 25 2c  |.^... X%,y1%,X%,|
0000ceb0  79 32 25 0d 5e 24 05 ed  0d 5e 2e 1f e3 20 59 25  |y2%.^$...^... Y%|
0000cec0  3d 79 31 25 2d 67 73 79  25 20 b8 20 79 32 25 20  |=y1%-gsy% . y2% |
0000ced0  88 20 2d 67 73 79 25 0d  5e 38 13 86 20 78 31 25  |. -gsy%.^8.. x1%|
0000cee0  2c 59 25 2c 78 32 25 2c  59 25 0d 5e 42 05 ed 0d  |,Y%,x2%,Y%.^B...|
0000cef0  5e 4c 05 e1 0d 5e 56 04  0d 5e 60 0d dd a4 73 70  |^L...^V..^`...sp|
0000cf00  72 69 74 65 73 0d 5e 6a  13 d6 20 63 68 65 63 6b  |rites.^j.. check|
0000cf10  73 70 72 69 74 65 73 25  0d 5e 74 09 3d 21 4f 55  |sprites%.^t.=!OU|
0000cf20  54 0d 5e 7e 04 0d 5e 88  0f dd a4 70 75 74 5f 63  |T.^~..^....put_c|
0000cf30  68 65 63 6b 0d 5e 92 15  e7 20 a4 73 70 72 69 74  |heck.^... .sprit|
0000cf40  65 73 3e 30 20 8c 20 3d  b9 0d 5e 9c 11 f2 72 65  |es>0 . =..^...re|
0000cf50  73 65 74 5f 61 63 74 69  6f 6e 0d 5e a6 74 e7 20  |set_action.^.t. |
0000cf60  21 41 63 25 3d 33 37 20  84 20 21 41 63 25 3d 34  |!Ac%=37 . !Ac%=4|
0000cf70  30 20 8c 20 21 41 63 25  3d 33 38 3a 85 20 39 39  |0 . !Ac%=38:. 99|
0000cf80  2c 22 4e 6f 20 53 70 72  69 74 65 73 20 50 72 65  |,"No Sprites Pre|
0000cf90  73 65 6e 74 2e 20 55 6e  61 62 6c 65 20 74 6f 20  |sent. Unable to |
0000cfa0  52 65 73 74 6f 72 65 20  41 63 74 69 6f 6e 2c 20  |Restore Action, |
0000cfb0  53 65 74 74 69 6e 67 20  41 63 74 69 6f 6e 20 74  |Setting Action t|
0000cfc0  6f 20 53 70 72 69 74 65  20 47 65 74 2e 22 0d 5e  |o Sprite Get.".^|
0000cfd0  b0 06 3d a3 0d 5e ba 04  0d 5e c4 11 dd f2 74 69  |..=..^...^....ti|
0000cfe0  74 6c 65 73 70 72 69 74  65 0d 5e ce 07 ea 20 85  |tlesprite.^... .|
0000cff0  0d 5e d8 0f ee 20 85 20  ea 20 f7 20 85 3a e1 0d  |.^... . . . .:..|
0000d000  5e e2 24 ec 20 35 32 2c  37 31 31 3a ec 20 32 37  |^.$. 52,711:. 27|
0000d010  34 2c 39 33 32 3a 2a 53  47 45 54 20 44 69 61 6d  |4,932:*SGET Diam|
0000d020  6f 6e 64 0d 5e ec 09 f7  20 85 3a e1 0d 5e f6 04  |ond.^... .:..^..|
0000d030  0d 5f 00 17 f4 20 66 6f  72 6d 75 6c 61 20 66 75  |._... formula fu|
0000d040  6e 63 74 69 6f 6e 73 0d  5f 0a 04 0d 5f 14 0e dd  |nctions._..._...|
0000d050  20 a4 72 61 64 69 75 73  52 0d 5f 1e 11 3d b6 28  | .radiusR._..=.(|
0000d060  58 52 5e 32 2b 59 52 5e  32 29 0d 5f 28 04 0d 5f  |XR^2+YR^2)._(.._|
0000d070  32 0e dd 20 a4 72 61 64  69 75 73 44 0d 5f 3c 11  |2.. .radiusD._<.|
0000d080  3d b6 28 58 44 5e 32 2b  59 44 5e 32 29 0d 5f 46  |=.(XD^2+YD^2)._F|
0000d090  04 0d 5f 50 0c dd 20 a4  64 65 70 74 68 0d 5f 5a  |.._P.. .depth._Z|
0000d0a0  11 ea 20 72 25 2c 67 25  2c 62 25 2c 74 25 0d 5f  |.. r%,g%,b%,t%._|
0000d0b0  64 17 74 25 3d 28 63 6f  6c 25 20 80 20 31 39 32  |d.t%=(col% . 192|
0000d0c0  29 3e 3e 20 36 0d 5f 6e  17 72 25 3d 74 25 2b 28  |)>> 6._n.r%=t%+(|
0000d0d0  63 6f 6c 25 20 80 20 33  29 3c 3c 32 0d 5f 78 15  |col% . 3)<<2._x.|
0000d0e0  67 25 3d 74 25 2b 28 63  6f 6c 25 20 80 20 31 32  |g%=t%+(col% . 12|
0000d0f0  29 0d 5f 82 18 62 25 3d  74 25 2b 28 63 6f 6c 25  |)._..b%=t%+(col%|
0000d100  20 80 20 34 38 29 3e 3e  32 0d 5f 8c 09 74 25 3d  | . 48)>>2._..t%=|
0000d110  72 25 0d 5f 96 13 e7 20  67 25 3e 74 25 20 8c 20  |r%._... g%>t% . |
0000d120  74 25 3d 67 25 0d 5f a0  13 e7 20 62 25 3e 74 25  |t%=g%._... b%>t%|
0000d130  20 8c 20 74 25 3d 62 25  0d 5f aa 0a 3d 74 25 2f  | . t%=b%._..=t%/|
0000d140  31 35 0d 5f b4 04 0d 5f  be 17 dd 20 a4 77 65 64  |15._..._... .wed|
0000d150  67 65 28 75 70 25 2c 64  6f 77 6e 25 29 0d 5f c8  |ge(up%,down%)._.|
0000d160  1a e7 20 63 6f 6c 25 3d  75 70 25 20 8c 20 77 65  |.. col%=up% . we|
0000d170  64 67 65 25 2b 3d 31 0d  5f d2 1c e7 20 63 6f 6c  |dge%+=1._... col|
0000d180  25 3d 64 6f 77 6e 25 20  8c 20 77 65 64 67 65 25  |%=down% . wedge%|
0000d190  2d 3d 31 0d 5f dc 0b 3d  77 65 64 67 65 25 0d 5f  |-=1._..=wedge%._|
0000d1a0  e6 04 0d 5f f0 22 dd f2  73 6d 65 61 72 73 63 72  |..._."..smearscr|
0000d1b0  65 65 6e 28 78 31 25 2c  79 31 25 2c 78 73 25 2c  |een(x1%,y1%,xs%,|
0000d1c0  79 73 25 29 0d 5f fa 0d  f2 63 6f 70 79 73 6f 72  |ys%)._...copysor|
0000d1d0  74 0d 60 04 13 63 31 25  3d 28 70 78 31 25 2d 70  |t.`..c1%=(px1%-p|
0000d1e0  78 34 25 29 0d 60 0e 13  63 32 25 3d 28 70 79 31  |x4%).`..c2%=(py1|
0000d1f0  25 2d 70 79 34 25 29 0d  60 18 0d 63 33 25 3d 28  |%-py4%).`..c3%=(|
0000d200  79 73 25 29 0d 60 22 0d  63 34 25 3d 28 78 73 25  |ys%).`".c4%=(xs%|
0000d210  29 0d 60 2c 13 63 35 25  3d 28 70 78 32 25 2d 70  |).`,.c5%=(px2%-p|
0000d220  78 31 25 29 0d 60 36 13  63 36 25 3d 28 70 79 32  |x1%).`6.c6%=(py2|
0000d230  25 2d 70 79 31 25 29 0d  60 40 17 63 37 25 3d 28  |%-py1%).`@.c7%=(|
0000d240  70 78 33 25 2d 70 78 34  25 29 2d 63 35 25 0d 60  |px3%-px4%)-c5%.`|
0000d250  4a 17 63 38 25 3d 28 70  79 33 25 2d 70 79 34 25  |J.c8%=(py3%-py4%|
0000d260  29 2d 63 36 25 0d 60 54  0f f2 70 6f 69 6e 74 28  |)-c6%.`T..point(|
0000d270  30 2c 30 29 0d 60 5e 22  e3 20 79 70 25 3d 79 31  |0,0).`^". yp%=y1|
0000d280  25 20 b8 20 79 31 25 2b  79 73 25 20 88 20 b4 28  |% . y1%+ys% . .(|
0000d290  79 73 25 29 2a 34 0d 60  68 0a 61 72 78 25 3d 30  |ys%)*4.`h.arx%=0|
0000d2a0  0d 60 72 22 e3 20 78 70  25 3d 78 31 25 20 b8 20  |.`r". xp%=x1% . |
0000d2b0  78 31 25 2b 78 73 25 20  88 20 b4 28 78 73 25 29  |x1%+xs% . .(xs%)|
0000d2c0  2a 32 0d 60 7c 48 e7 20  79 70 25 3d 79 31 25 20  |*2.`|H. yp%=y1% |
0000d2d0  8c 20 41 25 28 61 72 78  25 2c 30 29 3d a4 6e 70  |. A%(arx%,0)=.np|
0000d2e0  78 28 78 70 25 2c 79 70  25 29 3a 41 25 28 61 72  |x(xp%,yp%):A%(ar|
0000d2f0  78 25 2c 31 29 3d a4 6e  70 79 28 78 70 25 2c 79  |x%,1)=.npy(xp%,y|
0000d300  70 25 29 3a e5 20 8d 60  60 60 0d 60 86 3d e7 20  |p%):. .```.`.=. |
0000d310  61 72 78 25 3d 30 20 8c  20 6e 70 6c 78 25 3d a4  |arx%=0 . nplx%=.|
0000d320  6e 70 78 28 78 70 25 2c  79 70 25 29 3a 6e 70 6c  |npx(xp%,yp%):npl|
0000d330  79 25 3d a4 6e 70 79 28  78 70 25 2c 79 70 25 29  |y%=.npy(xp%,yp%)|
0000d340  3a e5 20 8d 60 4c 60 0d  60 90 1b 70 6c 74 25 3d  |:. .`L`.`..plt%=|
0000d350  a4 67 63 6f 6c 28 78 70  25 2d 32 2c 79 70 25 2b  |.gcol(xp%-2,yp%+|
0000d360  34 29 0d 60 9a 0d ec 20  74 78 25 2c 74 79 25 0d  |4).`... tx%,ty%.|
0000d370  60 a4 1b ec 20 41 25 28  61 72 78 25 2c 30 29 2c  |`... A%(arx%,0),|
0000d380  41 25 28 61 72 78 25 2c  31 29 0d 60 ae 1e e7 20  |A%(arx%,1).`... |
0000d390  70 6c 74 25 20 8c 20 f0  20 26 35 35 2c 6e 70 6c  |plt% . . &55,npl|
0000d3a0  78 25 2c 6e 70 6c 79 25  0d 60 b8 2b 6e 70 6c 78  |x%,nply%.`.+nplx|
0000d3b0  25 3d a4 6e 70 78 28 78  70 25 2c 79 70 25 29 3a  |%=.npx(xp%,yp%):|
0000d3c0  6e 70 6c 79 25 3d a4 6e  70 79 28 78 70 25 2c 79  |nply%=.npy(xp%,y|
0000d3d0  70 25 29 0d 60 c2 1e e7  20 70 6c 74 25 20 8c 20  |p%).`... plt% . |
0000d3e0  f0 20 26 35 35 2c 6e 70  6c 78 25 2c 6e 70 6c 79  |. &55,nplx%,nply|
0000d3f0  25 0d 60 cc 21 74 78 25  3d 41 25 28 61 72 78 25  |%.`.!tx%=A%(arx%|
0000d400  2c 30 29 3a 74 79 25 3d  41 25 28 61 72 78 25 2c  |,0):ty%=A%(arx%,|
0000d410  31 29 0d 60 d6 25 41 25  28 61 72 78 25 2c 30 29  |1).`.%A%(arx%,0)|
0000d420  3d 6e 70 6c 78 25 3a 41  25 28 61 72 78 25 2c 31  |=nplx%:A%(arx%,1|
0000d430  29 3d 6e 70 6c 79 25 0d  60 e0 0f 61 72 78 25 3d  |)=nply%.`..arx%=|
0000d440  61 72 78 25 2b 31 0d 60  ea 0d ed 20 78 70 25 2c  |arx%+1.`... xp%,|
0000d450  79 70 25 0d 60 f4 0b 73  74 65 70 25 3d 31 0d 60  |yp%.`..step%=1.`|
0000d460  fe 05 cb 0d 61 08 0b f2  75 70 64 61 74 65 0d 61  |....a...update.a|
0000d470  12 05 e1 0d 61 1c 04 0d  61 26 11 dd 20 a4 6e 70  |....a...a&.. .np|
0000d480  78 28 50 58 2c 50 59 29  0d 61 30 15 77 31 3d 28  |x(PX,PY).a0.w1=(|
0000d490  28 50 59 2d 79 31 25 29  2f 63 33 25 29 0d 61 3a  |(PY-y1%)/c3%).a:|
0000d4a0  15 77 32 3d 28 28 50 58  2d 78 31 25 29 2f 63 34  |.w2=((PX-x1%)/c4|
0000d4b0  25 29 0d 61 44 22 3d 70  78 31 25 2d 28 63 31 25  |%).aD"=px1%-(c1%|
0000d4c0  2a 77 31 29 2b 28 63 35  25 2b 63 37 25 2a 77 31  |*w1)+(c5%+c7%*w1|
0000d4d0  29 2a 77 32 0d 61 4e 04  0d 61 58 11 dd 20 a4 6e  |)*w2.aN..aX.. .n|
0000d4e0  70 79 28 50 58 2c 50 59  29 0d 61 62 22 3d 70 79  |py(PX,PY).ab"=py|
0000d4f0  31 25 2d 28 63 32 25 2a  77 31 29 2b 28 63 36 25  |1%-(c2%*w1)+(c6%|
0000d500  2b 63 38 25 2a 77 31 29  2a 77 32 0d 61 6c 04 0d  |+c8%*w1)*w2.al..|
0000d510  61 76 0f dd 20 a4 61 74  6e 28 58 2c 59 29 0d 61  |av.. .atn(X,Y).a|
0000d520  80 2b e7 20 94 28 59 29  3e 30 20 8c 20 41 3d 9d  |.+. .(Y)>0 . A=.|
0000d530  28 99 28 58 2f 59 29 29  20 8b 20 41 3d 39 30 2b  |(.(X/Y)) . A=90+|
0000d540  31 38 30 2a 28 58 3c 30  29 0d 61 8a 13 e7 20 59  |180*(X<0).a... Y|
0000d550  3c 30 20 8c 20 41 3d 41  2b 31 38 30 0d 61 94 06  |<0 . A=A+180.a..|
0000d560  3d 41 0d 61 9e 04 0d 61  a8 12 dd 20 a4 72 61 64  |=A.a...a... .rad|
0000d570  69 75 73 28 58 2c 59 29  0d 61 b2 0f 3d b6 28 58  |ius(X,Y).a..=.(X|
0000d580  5e 32 2b 59 5e 32 29 0d  61 bc 04 0d 61 c6 0b dd  |^2+Y^2).a...a...|
0000d590  f2 73 68 61 70 65 0d 61  d0 19 41 3d a4 61 74 6e  |.shape.a..A=.atn|
0000d5a0  28 4d 58 2d 78 33 25 2c  4d 59 2d 79 33 25 29 0d  |(MX-x3%,MY-y3%).|
0000d5b0  61 da 1c 44 3d a4 72 61  64 69 75 73 28 4d 58 2d  |a..D=.radius(MX-|
0000d5c0  78 33 25 2c 4d 59 2d 79  33 25 29 0d 61 e4 1f 4f  |x3%,MY-y3%).a..O|
0000d5d0  41 31 3d 32 2a 28 9d 28  99 28 94 28 78 73 25 29  |A1=2*(.(.(.(xs%)|
0000d5e0  2f 94 28 79 73 25 29 29  29 29 0d 61 ee 0f 4f 41  |/.(ys%)))).a..OA|
0000d5f0  32 3d 31 38 30 2d 4f 41  31 0d 61 f8 16 70 78 31  |2=180-OA1.a..px1|
0000d600  25 3d 78 33 25 2b 44 2a  b5 28 b2 28 41 29 29 0d  |%=x3%+D*.(.(A)).|
0000d610  62 02 16 70 79 31 25 3d  79 33 25 2b 44 2a 9b 28  |b..py1%=y3%+D*.(|
0000d620  b2 28 41 29 29 0d 62 0c  1a 70 78 32 25 3d 78 33  |.(A)).b..px2%=x3|
0000d630  25 2b 44 2a b5 28 b2 28  41 2b 4f 41 31 29 29 0d  |%+D*.(.(A+OA1)).|
0000d640  62 16 1a 70 79 32 25 3d  79 33 25 2b 44 2a 9b 28  |b..py2%=y3%+D*.(|
0000d650  b2 28 41 2b 4f 41 31 29  29 0d 62 20 1e 70 78 33  |.(A+OA1)).b .px3|
0000d660  25 3d 78 33 25 2b 44 2a  b5 28 b2 28 41 2b 4f 41  |%=x3%+D*.(.(A+OA|
0000d670  31 2b 4f 41 32 29 29 0d  62 2a 1e 70 79 33 25 3d  |1+OA2)).b*.py3%=|
0000d680  79 33 25 2b 44 2a 9b 28  b2 28 41 2b 4f 41 31 2b  |y3%+D*.(.(A+OA1+|
0000d690  4f 41 32 29 29 0d 62 34  1a 70 78 34 25 3d 78 33  |OA2)).b4.px4%=x3|
0000d6a0  25 2b 44 2a b5 28 b2 28  41 2d 4f 41 32 29 29 0d  |%+D*.(.(A-OA2)).|
0000d6b0  62 3e 1a 70 79 34 25 3d  79 33 25 2b 44 2a 9b 28  |b>.py4%=y3%+D*.(|
0000d6c0  b2 28 41 2d 4f 41 32 29  29 0d 62 48 0f ec 20 70  |.(A-OA2)).bH.. p|
0000d6d0  78 31 25 2c 70 79 31 25  0d 62 52 09 e6 20 33 2c  |x1%,py1%.bR.. 3,|
0000d6e0  33 0d 62 5c 0f df 20 70  78 32 25 2c 70 79 32 25  |3.b\.. px2%,py2%|
0000d6f0  0d 62 66 0a e6 20 33 2c  36 33 0d 62 70 0f df 20  |.bf.. 3,63.bp.. |
0000d700  70 78 33 25 2c 70 79 33  25 0d 62 7a 0f df 20 70  |px3%,py3%.bz.. p|
0000d710  78 34 25 2c 70 79 34 25  0d 62 84 0f df 20 70 78  |x4%,py4%.b... px|
0000d720  31 25 2c 70 79 31 25 0d  62 8e 05 e1 0d 62 98 04  |1%,py1%.b....b..|
0000d730  0d 62 a2 1d dd 20 a4 66  6f 72 6d 78 28 78 70 6f  |.b... .formx(xpo|
0000d740  73 2c 79 70 6f 73 2c 75  70 76 61 6c 29 0d 62 ac  |s,ypos,upval).b.|
0000d750  19 72 64 3d a4 72 61 64  69 75 73 28 78 70 6f 73  |.rd=.radius(xpos|
0000d760  2c 79 70 6f 73 29 0d 62  b6 19 61 6e 3d b2 28 a4  |,ypos).b..an=.(.|
0000d770  61 74 6e 28 78 70 6f 73  2c 79 70 6f 73 29 29 0d  |atn(xpos,ypos)).|
0000d780  62 c0 10 61 6e 3d 61 6e  2b 6f 66 66 73 65 74 0d  |b..an=an+offset.|
0000d790  62 ca 1c 3d 6d 78 25 2b  b5 28 61 6e 29 2a 72 64  |b..=mx%+.(an)*rd|
0000d7a0  2a 28 78 73 32 25 2f 37  32 30 29 0d 62 d4 04 0d  |*(xs2%/720).b...|
0000d7b0  62 de 1d dd 20 a4 66 6f  72 6d 79 28 78 70 6f 73  |b... .formy(xpos|
0000d7c0  2c 79 70 6f 73 2c 75 70  76 61 6c 29 0d 62 e8 32  |,ypos,upval).b.2|
0000d7d0  3d 6d 79 25 2b 9b 28 61  6e 29 2a 72 64 2a 28 79  |=my%+.(an)*rd*(y|
0000d7e0  73 32 25 2f 37 32 30 29  2a 9b 28 6c 65 61 6e 29  |s2%/720)*.(lean)|
0000d7f0  2b 75 70 76 61 6c 2a b5  28 6c 65 61 6e 29 0d 62  |+upval*.(lean).b|
0000d800  f2 04 0d 62 fc 0f dd 20  a4 62 6f 6c 74 78 28 41  |...b... .boltx(A|
0000d810  29 0d 63 06 11 3d 21 28  78 67 65 74 25 2b 41 2a  |).c..=!(xget%+A*|
0000d820  34 29 0d 63 10 0f dd 20  a4 62 6f 6c 74 79 28 41  |4).c... .bolty(A|
0000d830  29 0d 63 1a 11 3d 21 28  79 67 65 74 25 2b 41 2a  |).c..=!(yget%+A*|
0000d840  34 29 0d 63 24 04 0d 63  2e 11 dd f2 6f 73 63 6c  |4).c$..c....oscl|
0000d850  69 61 63 74 69 6f 6e 0d  63 38 07 ea 20 85 0d 63  |iaction.c8.. ..c|
0000d860  42 0e 2a 50 4f 49 4e 54  45 52 20 30 0d 63 4c 0b  |B.*POINTER 0.cL.|
0000d870  2a 46 58 20 34 2c 30 0d  63 56 0d 2a 46 58 20 32  |*FX 4,0.cV.*FX 2|
0000d880  32 39 2c 30 0d 63 60 1a  c8 99 20 22 4f 53 5f 52  |29,0.c`... "OS_R|
0000d890  65 73 74 6f 72 65 43 75  72 73 6f 72 73 22 0d 63  |estoreCursors".c|
0000d8a0  6a 11 f2 72 65 73 65 74  5f 61 63 74 69 6f 6e 0d  |j..reset_action.|
0000d8b0  63 74 10 f2 73 65 74 73  6f 66 74 6b 65 79 73 0d  |ct..setsoftkeys.|
0000d8c0  63 7e 0d d6 20 75 70 74  72 65 65 25 0d 63 88 05  |c~.. uptree%.c..|
0000d8d0  f1 0d 63 92 10 ee 20 85  20 ea 20 f1 3a f1 20 f6  |..c... . . .:. .|
0000d8e0  24 0d 63 9c 05 f5 0d 63  a6 0d e8 20 22 2a 22 6f  |$.c....c... "*"o|
0000d8f0  75 74 24 0d 63 b0 23 e7  20 c0 6f 75 74 24 2c 38  |ut$.c.#. .out$,8|
0000d900  29 3c 3e 22 4d 45 4e 55  20 4f 46 46 22 20 8c 20  |)<>"MENU OFF" . |
0000d910  ff 20 6f 75 74 24 0d 63  ba 2b fd 20 c0 6f 75 74  |. out$.c.+. .out|
0000d920  24 2c 38 29 3d 22 4d 45  4e 55 20 4f 46 46 22 20  |$,8)="MENU OFF" |
0000d930  84 20 eb 3c 3e 31 35 20  84 20 6f 75 74 24 3d 22  |. .<>15 . out$="|
0000d940  22 0d 63 c4 12 e7 20 eb  3c 3e 31 35 20 8c 20 eb  |".c... .<>15 . .|
0000d950  20 31 35 0d 63 ce 0d 2a  46 58 20 32 32 39 2c 31  | 15.c..*FX 229,1|
0000d960  0d 63 d8 19 c8 99 20 22  4f 53 5f 52 65 6d 6f 76  |.c.... "OS_Remov|
0000d970  65 43 75 72 73 6f 72 73  22 0d 63 e2 1e 21 70 75  |eCursors".c..!pu|
0000d980  74 69 74 25 3d 31 3a d6  20 70 75 74 62 61 63 6b  |tit%=1:. putback|
0000d990  67 72 6f 75 6e 64 25 0d  63 ec 07 f7 20 85 0d 63  |ground%.c... ..c|
0000d9a0  f6 0c f4 20 56 44 55 20  32 31 0d 64 00 0b 2a 46  |... VDU 21.d..*F|
0000d9b0  58 20 34 2c 31 0d 64 0a  12 f2 75 6e 73 65 74 73  |X 4,1.d...unsets|
0000d9c0  6f 66 74 6b 65 79 73 0d  64 14 0f f2 70 6f 69 6e  |oftkeys.d...poin|
0000d9d0  74 28 30 2c 30 29 0d 64  1e 26 e7 20 c0 6f 75 74  |t(0,0).d.&. .out|
0000d9e0  24 2c 38 29 3d 22 4d 45  4e 55 20 4f 46 46 22 20  |$,8)="MENU OFF" |
0000d9f0  8c 20 ff 20 c1 6f 75 74  24 2c 39 29 0d 64 28 2d  |. . .out$,9).d(-|
0000da00  e7 20 eb 3c 3e 31 35 20  8c 20 eb 20 31 35 3a 21  |. .<>15 . . 15:!|
0000da10  70 75 74 69 74 25 3d 31  3a d6 20 70 75 74 62 61  |putit%=1:. putba|
0000da20  63 6b 67 72 6f 75 6e 64  25 0d 64 32 0f d6 20 6c  |ckground%.d2.. l|
0000da30  69 66 74 64 6f 77 6e 25  0d 64 3c 0b f2 75 70 64  |iftdown%.d<..upd|
0000da40  61 74 65 0d 64 46 05 e1  0d 64 50 04 0d 64 5a 11  |ate.dF...dP..dZ.|
0000da50  dd f2 64 75 6d 70 65 72  65 72 72 6f 72 0d 64 64  |..dumpererror.dd|
0000da60  12 50 25 3d 21 70 72 69  6e 74 6d 65 6e 75 25 0d  |.P%=!printmenu%.|
0000da70  64 6e 09 5b 4f 50 54 30  0d 64 78 19 45 51 55 53  |dn.[OPT0.dx.EQUS|
0000da80  22 3c 20 50 72 69 6e 74  65 72 20 44 75 6d 70 73  |"< Printer Dumps|
0000da90  22 0d 64 82 11 45 51 55  42 31 3a 45 51 55 42 32  |".d..EQUB1:EQUB2|
0000daa0  35 35 0d 64 8c 26 45 51  55 53 22 4e 6f 74 20 49  |55.d.&EQUS"Not I|
0000dab0  6e 73 74 61 6c 6c 65 64  22 3a 45 51 55 42 20 30  |nstalled":EQUB 0|
0000dac0  3a 45 51 55 42 20 33 33  0d 64 96 05 5d 0d 64 a0  |:EQUB 33.d..].d.|
0000dad0  05 e1 0d 64 aa 04 0d 64  b4 11 dd f2 63 68 65 63  |...d...d....chec|
0000dae0  6b 64 75 6d 70 65 72 0d  64 be 07 ea 20 85 0d 64  |kdumper.d... ..d|
0000daf0  c8 1c ee 20 85 20 ea 20  f2 64 75 6d 70 65 72 65  |... . . .dumpere|
0000db00  72 72 6f 72 3a f7 20 85  3a e1 0d 64 d2 12 50 25  |rror:. .:..d..P%|
0000db10  3d 21 70 72 69 6e 74 6d  65 6e 75 25 0d 64 dc 20  |=!printmenu%.d. |
0000db20  ff 20 28 22 53 43 52 45  45 4e 44 55 4d 50 49 44  |. ("SCREENDUMPID|
0000db30  53 20 26 22 2b c3 7e 28  50 25 29 29 0d 64 e6 07  |S &"+.~(P%)).d..|
0000db40  f7 20 85 0d 64 f0 05 e1  0d 64 fa 04 0d 65 04 12  |. ..d....d...e..|
0000db50  dd f2 67 65 74 72 65 63  74 61 6e 67 6c 65 0d 65  |..getrectangle.e|
0000db60  0e 0e c8 8e 20 73 74 65  70 25 20 ca 0d 65 18 14  |.... step% ..e..|
0000db70  c9 31 3a 78 31 25 3d 4d  58 3a 79 31 25 3d 4d 59  |.1:x1%=MX:y1%=MY|
0000db80  0d 65 22 1f c9 32 3a c8  93 20 78 31 25 2c 79 31  |.e"..2:.. x1%,y1|
0000db90  25 2c 4d 58 2d 78 31 25  2c 4d 59 2d 79 31 25 0d  |%,MX-x1%,MY-y1%.|
0000dba0  65 2c 22 c8 96 3a c8 96  3a c8 93 20 78 31 25 2c  |e,"..:..:.. x1%,|
0000dbb0  79 31 25 2c 4d 58 2d 78  31 25 2c 4d 59 2d 79 31  |y1%,MX-x1%,MY-y1|
0000dbc0  25 0d 65 36 19 78 73 25  3d 4d 58 2d 78 31 25 3a  |%.e6.xs%=MX-x1%:|
0000dbd0  79 73 25 3d 4d 59 2d 79  31 25 0d 65 40 11 78 32  |ys%=MY-y1%.e@.x2|
0000dbe0  25 3d 4d 58 3a 79 32 25  3d 4d 59 0d 65 4a 05 cb  |%=MX:y2%=MY.eJ..|
0000dbf0  0d 65 54 05 e1 0d 65 5e  04 0d 65 68 0e dd f2 73  |.eT...e^..eh...s|
0000dc00  6f 72 74 63 6f 72 64 0d  65 72 11 78 31 25 3d 28  |ortcord.er.x1%=(|
0000dc10  78 31 25 81 32 29 2a 32  0d 65 7c 11 78 32 25 3d  |x1%.2)*2.e|.x2%=|
0000dc20  28 78 32 25 81 32 29 2a  32 0d 65 86 11 79 31 25  |(x2%.2)*2.e..y1%|
0000dc30  3d 28 79 31 25 81 34 29  2a 34 0d 65 90 11 79 32  |=(y1%.4)*4.e..y2|
0000dc40  25 3d 28 79 32 25 81 34  29 2a 34 0d 65 9a 2b e7  |%=(y2%.4)*4.e.+.|
0000dc50  20 78 31 25 3e 78 32 25  20 8c 20 74 65 6d 70 25  | x1%>x2% . temp%|
0000dc60  3d 78 31 25 3a 78 31 25  3d 78 32 25 3a 78 32 25  |=x1%:x1%=x2%:x2%|
0000dc70  3d 74 65 6d 70 25 0d 65  a4 2b e7 20 79 32 25 3e  |=temp%.e.+. y2%>|
0000dc80  79 31 25 20 8c 20 74 65  6d 70 25 3d 79 32 25 3a  |y1% . temp%=y2%:|
0000dc90  79 32 25 3d 79 31 25 3a  79 31 25 3d 74 65 6d 70  |y2%=y1%:y1%=temp|
0000dca0  25 0d 65 ae 1f 78 73 25  3d 78 32 25 2d 78 31 25  |%.e..xs%=x2%-x1%|
0000dcb0  2b 33 3a 79 73 25 3d 79  32 25 2d 79 31 25 2d 37  |+3:ys%=y2%-y1%-7|
0000dcc0  0d 65 b8 05 e1 0d 65 c2  04 0d 65 cc 14 dd 20 a4  |.e....e...e... .|
0000dcd0  67 63 6f 6c 28 78 70 25  2c 79 70 25 29 0d 65 d6  |gcol(xp%,yp%).e.|
0000dce0  0f e7 20 21 70 6d 25 3c  3e 32 20 8c 0d 65 e0 1e  |.. !pm%<>2 ..e..|
0000dcf0  e6 20 b0 78 70 25 2c 79  70 25 29 20 c8 9c 20 c8  |. .xp%,yp%) .. .|
0000dd00  9c 28 78 70 25 2c 79 70  25 29 0d 65 ea 1e 63 6f  |.(xp%,yp%).e..co|
0000dd10  6c 25 3d b0 78 70 25 2c  79 70 25 29 2b c8 9c 28  |l%=.xp%,yp%)+..(|
0000dd20  78 70 25 2c 79 70 25 29  0d 65 f4 06 3d b9 0d 65  |xp%,yp%).e..=..e|
0000dd30  fe 05 cc 0d 66 08 1c 41  25 3d 78 70 25 81 32 3a  |....f..A%=xp%.2:|
0000dd40  42 25 3d 28 2d 79 73 25  2d 79 70 25 29 81 34 0d  |B%=(-ys%-yp%).4.|
0000dd50  66 12 10 d6 20 73 70 72  69 74 65 70 69 78 25 0d  |f... spritepix%.|
0000dd60  66 1c 11 63 6f 6c 25 3d  21 52 45 53 55 4c 54 58  |f..col%=!RESULTX|
0000dd70  0d 66 26 10 3d 21 73 70  72 69 74 65 6d 61 73 6b  |.f&.=!spritemask|
0000dd80  0d 66 30 05 cd 0d 66 3a  04 0d 66 44 10 dd f2 73  |.f0...f:..fD...s|
0000dd90  70 72 69 74 65 73 6f 72  74 0d 66 4e 11 d6 20 73  |pritesort.fN.. s|
0000dda0  70 72 69 74 65 69 6e 69  74 25 0d 66 58 1d 78 31  |priteinit%.fX.x1|
0000ddb0  25 3d 30 3a 79 31 25 3d  34 2a 21 73 70 72 69 6e  |%=0:y1%=4*!sprin|
0000ddc0  74 5f 79 73 69 7a 65 0d  66 62 17 78 73 25 3d 32  |t_ysize.fb.xs%=2|
0000ddd0  2a 21 73 70 72 69 6e 74  5f 78 73 69 7a 65 0d 66  |*!sprint_xsize.f|
0000dde0  6c 18 79 73 25 3d 2d 34  2a 21 73 70 72 69 6e 74  |l.ys%=-4*!sprint|
0000ddf0  5f 79 73 69 7a 65 0d 66  76 0b 78 32 25 3d 78 73  |_ysize.fv.x2%=xs|
0000de00  25 0d 66 80 09 79 32 25  3d 30 0d 66 8a 05 e1 0d  |%.f..y2%=0.f....|
0000de10  66 94 04 0d 66 9e 0e dd  f2 63 6f 70 79 73 6f 72  |f...f....copysor|
0000de20  74 0d 66 a8 0c 77 65 64  67 65 25 3d 30 0d 66 b2  |t.f..wedge%=0.f.|
0000de30  0d c8 8e 20 21 70 6d 25  20 ca 0d 66 bc 18 c9 30  |... !pm% ..f...0|
0000de40  2c 31 3a f4 20 73 6f 6c  69 64 2c 70 61 74 74 65  |,1:. solid,patte|
0000de50  72 6e 0d 66 c6 0d f2 73  6f 72 74 63 6f 72 64 0d  |rn.f...sortcord.|
0000de60  66 d0 0f c9 32 3a f4 20  73 70 72 69 74 65 0d 66  |f...2:. sprite.f|
0000de70  da 0f f2 73 70 72 69 74  65 73 6f 72 74 0d 66 e4  |...spritesort.f.|
0000de80  05 cb 0d 66 ee 05 e1 0d  66 f8 04 0d 67 02 29 dd  |...f....f...g.).|
0000de90  a4 69 6e 73 74 72 69 6e  67 28 6d 69 6e 2c 6d 61  |.instring(min,ma|
0000dea0  78 2c 69 6e 24 2c f8 20  6f 75 74 24 2c 6c 65 6e  |x,in$,. out$,len|
0000deb0  67 74 68 29 0d 67 0c 11  6c 25 3d 21 73 69 7a 65  |gth).g..l%=!size|
0000dec0  78 2f 38 2d 32 0d 67 16  0b 2a 46 58 20 34 2c 31  |x/8-2.g..*FX 4,1|
0000ded0  0d 67 20 0d 2a 46 58 20  32 32 39 2c 31 0d 67 2a  |.g .*FX 229,1.g*|
0000dee0  11 4f 4d 58 3d 2d 31 3a  4f 4d 59 3d 2d 31 0d 67  |.OMX=-1:OMY=-1.g|
0000def0  34 20 58 50 3d 21 73 74  61 72 74 78 25 2b 36 3a  |4 XP=!startx%+6:|
0000df00  59 50 3d 21 73 74 61 72  74 79 25 2d 34 38 0d 67  |YP=!starty%-48.g|
0000df10  3e 0f ec 20 58 50 2c 59  50 3a ef 20 35 0d 67 48  |>.. XP,YP:. 5.gH|
0000df20  3d 6f 75 74 24 3d 69 6e  24 3a 70 6f 73 69 74 25  |=out$=in$:posit%|
0000df30  3d a9 28 6f 75 74 24 29  2b 31 3a 6f 66 25 3d 70  |=.(out$)+1:of%=p|
0000df40  6f 73 69 74 25 2d 6c 25  2b 31 3a e7 20 6f 66 25  |osit%-l%+1:. of%|
0000df50  3c 31 20 8c 20 6f 66 25  3d 31 0d 67 52 15 e6 20  |<1 . of%=1.gR.. |
0000df60  30 2c 35 20 c8 9c 20 36  34 3a f1 22 3e 22 3b 0d  |0,5 .. 64:.">";.|
0000df70  67 5c 05 f5 0d 67 66 0f  ec 20 58 50 2b 31 36 2c  |g\...gf.. XP+16,|
0000df80  59 50 3a 0d 67 70 2b e6  20 30 2c 28 42 41 43 4b  |YP:.gp+. 0,(BACK|
0000df90  43 4f 4c 25 20 80 20 36  33 29 20 c8 9c 20 28 42  |COL% . 63) .. (B|
0000dfa0  41 43 4b 43 4f 4c 25 20  80 20 31 39 32 29 0d 67  |ACKCOL% . 192).g|
0000dfb0  7a 10 f1 c4 6c 25 2c bd  28 32 35 35 29 29 0d 67  |z...l%,.(255)).g|
0000dfc0  84 2b e6 20 30 2c 28 74  65 78 74 63 6f 6c 25 20  |.+. 0,(textcol% |
0000dfd0  80 20 36 33 29 20 c8 9c  20 28 74 65 78 74 63 6f  |. 63) .. (textco|
0000dfe0  6c 25 20 80 20 31 39 32  29 0d 67 8e 1d ec 20 58  |l% . 192).g... X|
0000dff0  50 2b 31 36 2c 59 50 3a  f1 c1 6f 75 74 24 2c 6f  |P+16,YP:..out$,o|
0000e000  66 25 2c 6c 25 29 0d 67  98 11 e6 20 33 2c 36 33  |f%,l%).g... 3,63|
0000e010  20 c8 9c 20 31 39 32 0d  67 a2 28 c8 93 20 c8 90  | .. 192.g.(.. ..|
0000e020  20 58 50 2b 28 70 6f 73  69 74 25 2d 6f 66 25 2b  | XP+(posit%-of%+|
0000e030  31 29 2a 31 36 2c 59 50  2c 31 36 2c 2d 32 38 0d  |1)*16,YP,16,-28.|
0000e040  67 ac 05 f5 0d 67 b6 0f  c8 97 20 44 58 2c 44 59  |g....g.... DX,DY|
0000e050  2c 4d 42 0d 67 c0 2e e7  20 44 58 3c 3e 4f 4d 58  |,MB.g... DX<>OMX|
0000e060  20 84 20 44 59 3c 3e 4f  4d 59 20 8c 20 f2 70 6f  | . DY<>OMY . .po|
0000e070  69 6e 74 28 30 2c 50 4e  6b 65 79 62 6f 61 72 64  |int(0,PNkeyboard|
0000e080  29 0d 67 ca 0b 41 24 3d  bf 28 30 29 0d 67 d4 19  |).g..A$=.(0).g..|
0000e090  e7 20 41 24 3c 3e 22 22  20 8c 20 2a 50 4f 49 4e  |. A$<>"" . *POIN|
0000e0a0  54 45 52 20 30 0d 67 de  13 fd 20 41 24 3c 3e 22  |TER 0.g... A$<>"|
0000e0b0  22 20 84 20 4d 42 3e 30  0d 67 e8 11 4f 4d 58 3d  |" . MB>0.g..OMX=|
0000e0c0  44 58 3a 4f 4d 59 3d 44  59 0d 67 f2 28 c8 93 20  |DX:OMY=DY.g.(.. |
0000e0d0  c8 90 20 58 50 2b 28 70  6f 73 69 74 25 2d 6f 66  |.. XP+(posit%-of|
0000e0e0  25 2b 31 29 2a 31 36 2c  59 50 2c 31 36 2c 2d 32  |%+1)*16,YP,16,-2|
0000e0f0  38 0d 67 fc 0e ec 20 58  50 2b 31 36 2c 59 50 0d  |8.g... XP+16,YP.|
0000e100  68 06 2d 69 24 3d 22 22  3a e7 20 97 28 41 24 29  |h.-i$="":. .(A$)|
0000e110  3e 6d 69 6e 2d 31 20 80  20 97 28 41 24 29 3c 6d  |>min-1 . .(A$)<m|
0000e120  61 78 2b 31 20 8c 20 69  24 3d 41 24 0d 68 10 17  |ax+1 . i$=A$.h..|
0000e130  e7 20 97 28 41 24 29 3d  31 36 33 20 8c 20 69 24  |. .(A$)=163 . i$|
0000e140  3d 41 24 0d 68 1a 27 e7  20 97 28 41 24 29 3d 32  |=A$.h.'. .(A$)=2|
0000e150  31 20 8c 20 6f 75 74 24  3d 22 22 3a 6f 66 25 3d  |1 . out$="":of%=|
0000e160  31 3a 70 6f 73 69 74 25  3d 31 0d 68 24 23 e7 20  |1:posit%=1.h$#. |
0000e170  a9 28 6f 75 74 24 29 3d  6c 65 6e 67 74 68 20 80  |.(out$)=length .|
0000e180  20 69 24 3c 3e 22 22 20  8c 20 ef 20 37 0d 68 2e  | i$<>"" . . 7.h.|
0000e190  55 e7 20 69 24 3c 3e 22  22 20 80 20 a9 28 6f 75  |U. i$<>"" . .(ou|
0000e1a0  74 24 29 3c 6c 65 6e 67  74 68 20 8c 20 6f 75 74  |t$)<length . out|
0000e1b0  24 3d c0 6f 75 74 24 2c  70 6f 73 69 74 25 2d 31  |$=.out$,posit%-1|
0000e1c0  29 2b 41 24 2b c1 6f 75  74 24 2c 70 6f 73 69 74  |)+A$+.out$,posit|
0000e1d0  25 29 3a 70 6f 73 69 74  25 3d 70 6f 73 69 74 25  |%):posit%=posit%|
0000e1e0  2b 31 0d 68 38 11 e7 20  97 28 41 24 29 3d 31 32  |+1.h8.. .(A$)=12|
0000e1f0  37 20 8c 0d 68 42 49 e7  20 70 6f 73 69 74 25 3e  |7 ..hBI. posit%>|
0000e200  31 20 8c 20 6f 75 74 24  3d c0 6f 75 74 24 2c 70  |1 . out$=.out$,p|
0000e210  6f 73 69 74 25 2d 32 29  2b c1 6f 75 74 24 2c 70  |osit%-2)+.out$,p|
0000e220  6f 73 69 74 25 29 3a 70  6f 73 69 74 25 3d 70 6f  |osit%):posit%=po|
0000e230  73 69 74 25 2d 31 20 8b  20 ef 20 37 0d 68 4c 05  |sit%-1 . . 7.hL.|
0000e240  cd 0d 68 56 21 e7 20 97  28 41 24 29 3d 31 33 36  |..hV!. .(A$)=136|
0000e250  20 8c 20 70 6f 73 69 74  25 3d 70 6f 73 69 74 25  | . posit%=posit%|
0000e260  2d 31 0d 68 60 21 e7 20  97 28 41 24 29 3d 31 33  |-1.h`!. .(A$)=13|
0000e270  37 20 8c 20 70 6f 73 69  74 25 3d 70 6f 73 69 74  |7 . posit%=posit|
0000e280  25 2b 31 0d 68 6a 20 e7  20 28 70 6f 73 69 74 25  |%+1.hj . (posit%|
0000e290  2d 6f 66 25 2b 31 29 3e  6c 25 20 8c 20 6f 66 25  |-of%+1)>l% . of%|
0000e2a0  2b 3d 31 0d 68 74 23 e7  20 28 70 6f 73 69 74 25  |+=1.ht#. (posit%|
0000e2b0  2d 6f 66 25 29 3c 34 20  8c 20 6f 66 25 3d 70 6f  |-of%)<4 . of%=po|
0000e2c0  73 69 74 25 2d 34 0d 68  7e 13 e7 20 6f 66 25 3c  |sit%-4.h~.. of%<|
0000e2d0  31 20 8c 20 6f 66 25 3d  31 0d 68 88 19 e7 20 70  |1 . of%=1.h... p|
0000e2e0  6f 73 69 74 25 3c 31 20  8c 20 70 6f 73 69 74 25  |osit%<1 . posit%|
0000e2f0  3d 31 0d 68 92 29 e7 20  70 6f 73 69 74 25 3e a9  |=1.h.). posit%>.|
0000e300  28 6f 75 74 24 29 2b 31  20 8c 20 70 6f 73 69 74  |(out$)+1 . posit|
0000e310  25 3d a9 28 6f 75 74 24  29 2b 31 0d 68 9c 13 e7  |%=.(out$)+1.h...|
0000e320  20 97 28 41 24 29 3d 32  37 20 8c 20 3d a3 0d 68  | .(A$)=27 . =..h|
0000e330  a6 0f e7 20 4d 42 3d 31  20 8c 20 3d a3 0d 68 b0  |... MB=1 . =..h.|
0000e340  15 fd 20 97 28 41 24 29  3d 31 33 20 84 20 4d 42  |.. .(A$)=13 . MB|
0000e350  3d 34 0d 68 ba 0f ef 20  34 3a 2a 46 58 20 34 2c  |=4.h... 4:*FX 4,|
0000e360  30 0d 68 c4 12 3d ac 20  28 a9 28 6f 75 74 24 29  |0.h..=. (.(out$)|
0000e370  3d 30 29 0d 68 ce 04 0d  68 d8 0c dd f2 73 65 74  |=0).h...h....set|
0000e380  63 6f 6c 0d 68 e2 2b e6  20 30 2c 28 74 65 78 74  |col.h.+. 0,(text|
0000e390  63 6f 6c 25 20 80 20 36  33 29 20 c8 9c 20 28 74  |col% . 63) .. (t|
0000e3a0  65 78 74 63 6f 6c 25 20  80 20 31 39 32 29 0d 68  |extcol% . 192).h|
0000e3b0  ec 2f e6 20 30 2c 31 32  38 2b 28 42 41 43 4b 43  |./. 0,128+(BACKC|
0000e3c0  4f 4c 25 20 80 20 36 33  29 20 c8 9c 20 28 42 41  |OL% . 63) .. (BA|
0000e3d0  43 4b 43 4f 4c 25 20 80  20 31 39 32 29 0d 68 f6  |CKCOL% . 192).h.|
0000e3e0  05 e1 0d 69 00 04 0d 69  0a 10 dd f2 70 6f 69 6e  |...i...i....poin|
0000e3f0  74 28 4c 2c 4e 29 0d 69  14 10 50 25 3d 50 4f 25  |t(L,N).i..P%=PO%|
0000e400  2b 4e 2a 32 36 37 0d 69  1e 26 c8 99 20 26 34 30  |+N*267.i.&.. &40|
0000e410  30 44 38 2c 32 2c 50 25  2b 31 31 2c 33 32 2c 33  |0D8,2,P%+11,32,3|
0000e420  32 2c 50 25 3f 39 2c 50  25 3f 31 30 0d 69 28 19  |2,P%?9,P%?10.i(.|
0000e430  c8 97 20 fb 20 31 2c 50  25 3f 30 2c 50 25 3f 31  |.. . 1,P%?0,P%?1|
0000e440  2c 50 25 3f 32 0d 69 32  19 c8 97 20 fb 20 32 2c  |,P%?2.i2... . 2,|
0000e450  50 25 3f 33 2c 50 25 3f  34 2c 50 25 3f 35 0d 69  |P%?3,P%?4,P%?5.i|
0000e460  3c 19 c8 97 20 fb 20 33  2c 50 25 3f 36 2c 50 25  |<... . 3,P%?6,P%|
0000e470  3f 37 2c 50 25 3f 38 0d  69 46 1b ff 20 22 46 58  |?7,P%?8.iF.. "FX|
0000e480  20 31 30 36 2c 22 2b c3  28 32 20 84 20 4c 3c 3c  | 106,"+.(2 . L<<|
0000e490  37 29 0d 69 50 05 e1 0d  69 5a 04 0d 69 64 1d dd  |7).iP...iZ..id..|
0000e4a0  20 a4 62 75 69 6c 64 5f  66 6f 72 6d 75 6c 61 28  | .build_formula(|
0000e4b0  41 24 2c 70 6f 73 25 29  0d 69 6e 2f f4 20 41 24  |A$,pos%).in/. A$|
0000e4c0  3d 65 76 61 6c 20 6f 66  20 74 68 65 20 66 6f 72  |=eval of the for|
0000e4d0  6d 75 6c 61 2c 70 6f 73  3d 66 6f 72 6d 75 6c 61  |mula,pos=formula|
0000e4e0  20 6e 75 6d 62 65 72 0d  69 78 07 ea 20 85 0d 69  | number.ix.. ..i|
0000e4f0  82 10 ee 20 85 20 ea 20  f7 20 85 3a 3d a3 0d 69  |... . . . .:=..i|
0000e500  8c 0f e3 20 59 25 3d 30  20 b8 20 32 30 0d 69 96  |... Y%=0 . 20.i.|
0000e510  0f e3 20 58 25 3d 30 20  b8 20 32 30 0d 69 a0 10  |.. X%=0 . 20.i..|
0000e520  58 44 3d 58 25 2a 33 36  2d 33 36 30 0d 69 aa 10  |XD=X%*36-360.i..|
0000e530  59 44 3d 59 25 2a 33 36  2d 33 36 30 0d 69 b4 15  |YD=Y%*36-360.i..|
0000e540  58 52 3d b2 28 58 44 29  3a 59 52 3d b2 28 59 44  |XR=.(XD):YR=.(YD|
0000e550  29 0d 69 be 10 41 3d 28  a0 28 41 24 29 3c 3c 38  |).i..A=(.(A$)<<8|
0000e560  29 0d 69 c8 25 21 28 73  6b 65 6c 25 2b 70 6f 73  |).i.%!(skel%+pos|
0000e570  25 2a 31 37 36 34 2b 28  58 25 2b 32 31 2a 59 25  |%*1764+(X%+21*Y%|
0000e580  29 2a 34 29 3d 41 0d 69  d2 05 ed 0d 69 dc 05 ed  |)*4)=A.i....i...|
0000e590  0d 69 e6 07 f7 20 85 0d  69 f0 06 3d b9 0d 69 fa  |.i... ..i..=..i.|
0000e5a0  04 0d 6a 04 1d dd f2 66  6f 72 6d 75 6c 61 5f 6c  |..j....formula_l|
0000e5b0  6f 61 64 28 66 69 6c 65  6e 61 6d 65 24 29 0d 6a  |oad(filename$).j|
0000e5c0  0e 28 f4 20 72 65 61 64  73 20 61 6e 64 20 64 65  |.(. reads and de|
0000e5d0  73 63 69 66 65 72 73 20  61 20 66 6f 72 6d 75 6c  |scifers a formul|
0000e5e0  61 20 6c 69 73 74 0d 6a  18 28 c8 99 20 22 4f 53  |a list.j.(.. "OS|
0000e5f0  5f 46 69 6e 64 22 2c 26  34 30 2c 66 69 6c 65 6e  |_Find",&40,filen|
0000e600  61 6d 65 24 20 b8 20 68  61 6e 64 6c 65 25 0d 6a  |ame$ . handle%.j|
0000e610  22 0f 66 6f 72 6d 75 6c  61 73 25 3d 31 0d 6a 2c  |".formulas%=1.j,|
0000e620  11 50 25 3d 66 6f 72 6d  6e 61 6d 65 73 25 0d 6a  |.P%=formnames%.j|
0000e630  36 0a 5b 4f 50 54 20 30  0d 6a 40 0a 45 51 55 42  |6.[OPT 0.j@.EQUB|
0000e640  20 37 0d 6a 4a 0b 45 51  55 42 20 31 30 0d 6a 54  | 7.jJ.EQUB 10.jT|
0000e650  15 45 51 55 53 20 22 44  65 66 69 6e 65 61 62 6c  |.EQUS "Defineabl|
0000e660  65 22 0d 6a 5e 05 5d 0d  6a 68 2e 6e 61 6d 65 24  |e".j^.].jh.name$|
0000e670  3d 22 22 3a 66 6f 72 6d  75 6c 61 73 24 28 66 6f  |="":formulas$(fo|
0000e680  72 6d 75 6c 61 73 25 2d  31 29 3d 22 22 3a 70 61  |rmulas%-1)="":pa|
0000e690  73 74 25 3d a3 0d 6a 72  05 f5 0d 6a 7c 34 c8 99  |st%=..jr...j|4..|
0000e6a0  20 22 4f 53 5f 47 42 50  42 22 2c 34 2c 68 61 6e  | "OS_GBPB",4,han|
0000e6b0  64 6c 65 25 2c 6c 6f 67  5f 73 63 61 6c 65 25 2c  |dle%,log_scale%,|
0000e6c0  31 20 b8 20 2c 2c 2c 66  69 6e 69 73 68 25 0d 6a  |1 . ,,,finish%.j|
0000e6d0  86 26 62 25 3d 3f 6c 6f  67 5f 73 63 61 6c 65 25  |.&b%=?log_scale%|
0000e6e0  3a 63 72 25 3d 28 62 25  3d 31 30 20 84 20 62 25  |:cr%=(b%=10 . b%|
0000e6f0  3d 31 33 29 0d 6a 90 0b  e7 20 63 72 25 20 8c 0d  |=13).j... cr% ..|
0000e700  6a 9a 0d e7 20 70 61 73  74 25 20 8c 0d 6a a4 6f  |j... past% ..j.o|
0000e710  e7 20 a4 62 75 69 6c 64  5f 66 6f 72 6d 75 6c 61  |. .build_formula|
0000e720  28 66 6f 72 6d 75 6c 61  73 24 28 66 6f 72 6d 75  |(formulas$(formu|
0000e730  6c 61 73 25 2d 31 29 2c  66 6f 72 6d 75 6c 61 73  |las%-1),formulas|
0000e740  25 29 20 8c 20 3f 50 25  3d a9 28 6e 61 6d 65 24  |%) . ?P%=.(name$|
0000e750  29 3a 50 25 2b 3d 31 3a  24 50 25 3d 6e 61 6d 65  |):P%+=1:$P%=name|
0000e760  24 3a 50 25 2b 3d a9 28  6e 61 6d 65 24 29 3a 66  |$:P%+=.(name$):f|
0000e770  6f 72 6d 75 6c 61 73 25  2b 3d 31 0d 6a ae 05 cd  |ormulas%+=1.j...|
0000e780  0d 6a b8 2e 6e 61 6d 65  24 3d 22 22 3a 66 6f 72  |.j..name$="":for|
0000e790  6d 75 6c 61 73 24 28 66  6f 72 6d 75 6c 61 73 25  |mulas$(formulas%|
0000e7a0  2d 31 29 3d 22 22 3a 70  61 73 74 25 3d a3 0d 6a  |-1)="":past%=..j|
0000e7b0  c2 05 cc 0d 6a cc 2b e7  20 70 61 73 74 25 20 8c  |....j.+. past% .|
0000e7c0  20 66 6f 72 6d 75 6c 61  73 24 28 66 6f 72 6d 75  | formulas$(formu|
0000e7d0  6c 61 73 25 2d 31 29 2b  3d bd 28 62 25 29 0d 6a  |las%-1)+=.(b%).j|
0000e7e0  d6 19 e7 20 62 25 3d 97  28 22 24 22 29 20 8c 20  |... b%=.("$") . |
0000e7f0  70 61 73 74 25 3d b9 0d  6a e0 1c e7 20 ac 20 70  |past%=..j... . p|
0000e800  61 73 74 25 20 8c 20 6e  61 6d 65 24 2b 3d bd 28  |ast% . name$+=.(|
0000e810  62 25 29 0d 6a ea 05 cd  0d 6a f4 0f fd 20 66 69  |b%).j....j... fi|
0000e820  6e 69 73 68 25 3d 31 0d  6a fe 19 3f 66 6f 72 6d  |nish%=1.j..?form|
0000e830  6e 61 6d 65 73 25 3d 66  6f 72 6d 75 6c 61 73 25  |names%=formulas%|
0000e840  0d 6b 08 1c c8 99 20 22  4f 53 5f 46 69 6e 64 22  |.k.... "OS_Find"|
0000e850  2c 26 30 30 2c 68 61 6e  64 6c 65 25 0d 6b 12 05  |,&00,handle%.k..|
0000e860  e1 0d 6b 1c 04 0d 6b 26  0c dd f2 75 70 64 61 74  |..k...k&...updat|
0000e870  65 0d 6b 30 2b e7 20 28  6d 67 73 20 80 20 6d 6f  |e.k0+. (mgs . mo|
0000e880  75 73 65 67 72 69 64 3e  32 29 20 84 20 6d 63 73  |usegrid>2) . mcs|
0000e890  20 8c 20 6c 3d 31 20 8b  20 6c 3d 30 0d 6b 3a 0d  | . l=1 . l=0.k:.|
0000e8a0  c8 8e 20 21 41 63 25 20  ca 0d 6b 44 19 c9 31 32  |.. !Ac% ..kD..12|
0000e8b0  3a f2 70 6f 69 6e 74 28  6c 2c 50 4e 67 6c 61 73  |:.point(l,PNglas|
0000e8c0  73 29 0d 6b 4e 28 c9 31  33 3a f2 70 6f 69 6e 74  |s).kN(.13:.point|
0000e8d0  28 6c 2c 50 4e 66 6c 6f  6f 64 29 3a d6 20 6d 6f  |(l,PNflood):. mo|
0000e8e0  75 73 65 63 6f 6c 6f 75  72 25 0d 6b 58 2e c9 32  |usecolour%.kX..2|
0000e8f0  31 2c 33 33 2c 33 34 3a  f2 70 6f 69 6e 74 28 6c  |1,33,34:.point(l|
0000e900  2c 50 4e 73 70 72 61 79  29 3a d6 20 6d 6f 75 73  |,PNspray):. mous|
0000e910  65 63 6f 6c 6f 75 72 25  0d 6b 62 1f c9 33 37 2c  |ecolour%.kb..37,|
0000e920  33 38 3a f2 70 6f 69 6e  74 28 6c 2c 50 4e 73 70  |38:.point(l,PNsp|
0000e930  72 69 74 65 6f 70 29 0d  6b 6c 1f c9 33 31 2c 33  |riteop).kl..31,3|
0000e940  32 2c 33 35 3a f2 70 6f  69 6e 74 28 6c 2c 50 4e  |2,35:.point(l,PN|
0000e950  62 72 75 73 68 29 0d 6b  76 19 c9 34 31 3a f2 70  |brush).kv..41:.p|
0000e960  6f 69 6e 74 28 30 2c 50  4e 73 70 72 61 79 29 0d  |oint(0,PNspray).|
0000e970  6b 80 15 c9 35 39 3a f2  70 6f 69 6e 74 28 6c 2c  |k...59:.point(l,|
0000e980  50 4e 41 29 0d 6b 8a 27  7f 3a f2 70 6f 69 6e 74  |PNA).k.'.:.point|
0000e990  28 6c 2c 50 4e 6e 6f 72  6d 61 6c 29 3a d6 20 6d  |(l,PNnormal):. m|
0000e9a0  6f 75 73 65 63 6f 6c 6f  75 72 25 0d 6b 94 05 cb  |ousecolour%.k...|
0000e9b0  0d 6b 9e 05 e1 0d 6b a8  04 0d 6b b2 0e dd f2 65  |.k....k...k....e|
0000e9c0  72 72 6f 72 5f 61 74 0d  6b bc 08 ef 20 32 36 0d  |rror_at.k... 26.|
0000e9d0  6b c6 0c e7 20 9f 3d 31  37 20 8c 0d 6b d0 1f 73  |k... .=17 ..k..s|
0000e9e0  74 65 70 25 3d 31 3a f2  70 6f 69 6e 74 28 30 2c  |tep%=1:.point(0,|
0000e9f0  50 4e 73 74 6f 70 70 65  64 29 0d 6b da 0f d6 20  |PNstopped).k... |
0000ea00  6c 69 66 74 64 6f 77 6e  25 0d 6b e4 14 e3 20 52  |liftdown%.k... R|
0000ea10  25 3d 30 20 b8 20 32 30  30 30 30 3a ed 0d 6b ee  |%=0 . 20000:..k.|
0000ea20  0b f2 75 70 64 61 74 65  0d 6b f8 05 e1 0d 6c 02  |..update.k....l.|
0000ea30  05 cd 0d 6c 0c 2d e7 20  21 6c 61 73 74 6d 65 6e  |...l.-. !lastmen|
0000ea40  75 3d 31 32 20 84 20 21  6c 61 73 74 6d 65 6e 75  |u=12 . !lastmenu|
0000ea50  3d 33 30 20 8c 20 d6 20  75 70 74 72 65 65 25 0d  |=30 . . uptree%.|
0000ea60  6c 16 07 ef 20 37 0d 6c  20 10 c8 8e 20 74 65 73  |l... 7.l ... tes|
0000ea70  74 69 6e 67 20 ca 0d 6c  2a 46 c9 a3 3a f2 65 72  |ting ..l*F..:.er|
0000ea80  72 6f 72 68 61 6e 64 6c  65 28 31 2c 22 41 6e 20  |rorhandle(1,"An |
0000ea90  45 72 72 6f 72 20 48 61  73 20 4f 63 63 75 72 65  |Error Has Occure|
0000eaa0  64 2c 7c 22 2b f6 24 2c  22 43 6f 6e 74 69 6e 75  |d,|"+.$,"Continu|
0000eab0  65 22 2c 73 65 6c 65 63  74 65 64 29 0d 6c 34 75  |e",selected).l4u|
0000eac0  c9 b9 3a f2 65 72 72 6f  72 68 61 6e 64 6c 65 28  |..:.errorhandle(|
0000ead0  33 2c 22 41 6e 20 45 72  72 6f 72 20 48 61 73 20  |3,"An Error Has |
0000eae0  4f 63 63 75 72 65 64 2c  7c 22 2b f6 24 2b 22 7c  |Occured,|"+.$+"||
0000eaf0  41 74 20 6c 69 6e 65 20  22 2b c3 28 9e 29 2c 22  |At line "+.(.),"|
0000eb00  45 64 69 74 20 54 68 69  73 20 4c 69 6e 65 7c 45  |Edit This Line|E|
0000eb10  64 69 74 20 4c 61 73 74  20 4c 69 6e 65 7c 43 6f  |dit Last Line|Co|
0000eb20  6e 74 69 6e 75 65 22 2c  73 65 6c 65 63 74 65 64  |ntinue",selected|
0000eb30  29 0d 6c 3e 0c 2a 46 58  20 31 35 2c 30 0d 6c 48  |).l>.*FX 15,0.lH|
0000eb40  37 e7 20 73 65 6c 65 63  74 65 64 3d 31 20 8c 20  |7. selected=1 . |
0000eb50  f2 73 74 72 69 6e 67 5f  74 6f 5f 62 75 66 66 65  |.string_to_buffe|
0000eb60  72 28 22 45 44 2e 20 22  2b c3 28 9e 29 2b bd 28  |r("ED. "+.(.)+.(|
0000eb70  31 33 29 29 0d 6c 52 32  e7 20 73 65 6c 65 63 74  |13)).lR2. select|
0000eb80  65 64 3d 32 20 8c 20 f2  73 74 72 69 6e 67 5f 74  |ed=2 . .string_t|
0000eb90  6f 5f 62 75 66 66 65 72  28 22 45 44 2e 2e 22 2b  |o_buffer("ED.."+|
0000eba0  bd 28 31 33 29 29 0d 6c  5c 21 e7 20 73 65 6c 65  |.(13)).l\!. sele|
0000ebb0  63 74 65 64 3d 31 20 84  20 73 65 6c 65 63 74 65  |cted=1 . selecte|
0000ebc0  64 3d 32 20 8c 20 e0 0d  6c 66 05 cb 0d 6c 70 0b  |d=2 . ..lf...lp.|
0000ebd0  73 74 65 70 25 3d 31 0d  6c 7a 3b e7 20 21 6c 61  |step%=1.lz;. !la|
0000ebe0  73 74 6d 65 6e 75 3c 3e  31 20 80 20 21 6c 61 73  |stmenu<>1 . !las|
0000ebf0  74 6d 65 6e 75 3c 3e 39  20 8c 20 21 70 72 65 73  |tmenu<>9 . !pres|
0000ec00  65 6e 74 6d 65 6e 75 25  3d 21 6c 61 73 74 6d 65  |entmenu%=!lastme|
0000ec10  6e 75 0d 6c 84 05 e1 0d  6c 8e 04 0d 6c 98 32 dd  |nu.l....l...l.2.|
0000ec20  f2 65 72 72 6f 72 68 61  6e 64 6c 65 28 4e 2c 6d  |.errorhandle(N,m|
0000ec30  65 73 73 61 67 65 24 2c  71 75 65 73 74 69 6f 6e  |essage$,question|
0000ec40  24 2c f8 20 73 65 6c 65  63 74 65 64 29 0d 6c a2  |$,. selected).l.|
0000ec50  28 e7 20 eb 3c 3e 31 35  20 8c 20 eb 20 31 35 3a  |(. .<>15 . . 15:|
0000ec60  c8 99 20 22 4f 53 5f 52  65 6d 6f 76 65 43 75 72  |.. "OS_RemoveCur|
0000ec70  73 6f 72 73 22 0d 6c ac  0c 2a 46 58 32 32 39 2c  |sors".l..*FX229,|
0000ec80  31 0d 6c b6 18 f2 70 6f  69 6e 74 28 30 2c 50 4e  |1.l...point(0,PN|
0000ec90  71 75 65 73 74 69 6f 6e  29 0d 6c c0 19 c8 97 20  |question).l.... |
0000eca0  c8 93 20 32 35 36 2c 33  33 31 2c 37 36 38 2c 33  |.. 256,331,768,3|
0000ecb0  37 32 0d 6c ca 1a 41 25  3d 4e 3a d6 20 64 72 61  |72.l..A%=N:. dra|
0000ecc0  77 5f 65 72 72 6f 72 5f  62 6f 78 25 0d 6c d4 14  |w_error_box%.l..|
0000ecd0  ef 20 32 38 2c 33 32 2c  31 39 2c 35 39 2c 31 32  |. 28,32,19,59,12|
0000ece0  0d 6c de 2d fb 20 31 32  38 2b 28 42 41 43 4b 43  |.l.-. 128+(BACKC|
0000ecf0  4f 4c 25 20 80 20 36 33  29 20 c8 9c 20 28 42 41  |OL% . 63) .. (BA|
0000ed00  43 4b 43 4f 4c 25 20 80  20 31 39 32 29 0d 6c e8  |CKCOL% . 192).l.|
0000ed10  29 fb 20 28 74 65 78 74  63 6f 6c 25 20 80 20 36  |). (textcol% . 6|
0000ed20  33 29 20 c8 9c 20 28 74  65 78 74 63 6f 6c 25 20  |3) .. (textcol% |
0000ed30  80 20 31 39 32 29 0d 6c  f2 18 f2 73 74 72 68 61  |. 192).l...strha|
0000ed40  6e 64 6c 65 28 6d 65 73  73 61 67 65 24 29 0d 6c  |ndle(message$).l|
0000ed50  fc 1d c8 99 20 22 4f 53  5f 50 72 65 74 74 79 50  |.... "OS_PrettyP|
0000ed60  72 69 6e 74 22 2c 42 55  46 46 25 0d 6d 06 0f fb  |rint",BUFF%.m...|
0000ed70  20 36 33 20 c8 9c 20 31  39 32 0d 6d 10 0b f1 8a  | 63 .. 192.m....|
0000ed80  30 2c 35 29 3b 0d 6d 1a  1e f2 73 74 72 68 61 6e  |0,5);.m...strhan|
0000ed90  64 6c 65 28 71 75 65 73  74 69 6f 6e 24 2b 22 20  |dle(question$+" |
0000eda0  3f 22 29 0d 6d 24 1d c8  99 20 22 4f 53 5f 50 72  |?").m$... "OS_Pr|
0000edb0  65 74 74 79 50 72 69 6e  74 22 2c 42 55 46 46 25  |ettyPrint",BUFF%|
0000edc0  0d 6d 2e 0e f2 42 55 54  4f 46 46 28 37 29 0d 6d  |.m...BUTOFF(7).m|
0000edd0  38 05 f5 0d 6d 42 10 c8  97 20 44 58 2c 44 59 2c  |8...mB... DX,DY,|
0000ede0  43 68 42 0d 6d 4c 6e e7  20 43 68 42 3e 30 20 80  |ChB.mLn. ChB>0 .|
0000edf0  20 44 58 3e 33 30 38 20  80 20 44 58 3c 34 36 33  | DX>308 . DX<463|
0000ee00  20 80 20 44 59 3c 36 35  33 20 80 20 44 59 3e 35  | . DY<653 . DY>5|
0000ee10  31 36 20 80 20 43 68 42  3c 3e 32 20 8c 20 21 70  |16 . ChB<>2 . !p|
0000ee20  72 65 73 65 6e 74 6d 65  6e 75 25 3d 30 3a 21 6c  |resentmenu%=0:!l|
0000ee30  61 73 74 6d 65 6e 75 3d  30 3a 43 68 42 3d 32 3a  |astmenu=0:ChB=2:|
0000ee40  21 74 72 65 65 70 6f 73  3d 30 3a 21 41 63 25 3d  |!treepos=0:!Ac%=|
0000ee50  30 0d 6d 56 39 fd 20 43  68 42 3d 32 20 84 20 28  |0.mV9. ChB=2 . (|
0000ee60  43 68 42 3e 30 20 80 20  44 58 3e 33 30 30 20 80  |ChB>0 . DX>300 .|
0000ee70  20 44 58 3c 34 37 34 20  80 20 44 59 3c 34 38 34  | DX<474 . DY<484|
0000ee80  20 80 20 44 59 3e 33 36  38 29 0d 6d 60 0e f2 42  | . DY>368).m`..B|
0000ee90  55 54 4f 46 46 28 37 29  0d 6d 6a 12 d6 20 75 6e  |UTOFF(7).mj.. un|
0000eea0  64 6f 72 65 73 74 6f 72  65 25 0d 6d 74 0b f2 75  |dorestore%.mt..u|
0000eeb0  70 64 61 74 65 0d 6d 7e  0f d6 20 6c 69 66 74 64  |pdate.m~.. liftd|
0000eec0  6f 77 6e 25 0d 6d 88 12  ef 35 3a d6 20 68 65 6c  |own%.m...5:. hel|
0000eed0  70 74 65 78 74 25 0d 6d  92 18 46 25 3d 73 74 65  |ptext%.m..F%=ste|
0000eee0  70 25 3a d6 20 68 65 6c  70 73 74 65 70 25 0d 6d  |p%:. helpstep%.m|
0000eef0  9c 20 73 65 6c 65 63 74  65 64 3d a8 28 28 34 38  |. selected=.((48|
0000ef00  34 2d 44 59 29 2f 31 32  30 2a 4e 29 2b 31 0d 6d  |4-DY)/120*N)+1.m|
0000ef10  a6 23 e7 20 43 68 42 3d  32 20 8c 20 65 6e 74 65  |.#. ChB=2 . ente|
0000ef20  72 25 3d 31 30 3a 73 65  6c 65 63 74 65 64 3d 2d  |r%=10:selected=-|
0000ef30  31 0d 6d b0 05 e1 0d 6d  ba 04 0d 6d c4 18 dd f2  |1.m....m...m....|
0000ef40  73 74 72 68 61 6e 64 6c  65 28 73 74 72 69 6e 67  |strhandle(string|
0000ef50  24 29 0d 6d ce 0b 6f 75  74 24 3d 22 22 0d 6d d8  |$).m..out$="".m.|
0000ef60  16 e3 20 52 3d 31 20 b8  20 a9 28 73 74 72 69 6e  |.. R=1 . .(strin|
0000ef70  67 24 29 0d 6d e2 15 63  68 24 3d c1 73 74 72 69  |g$).m..ch$=.stri|
0000ef80  6e 67 24 2c 52 2c 31 29  0d 6d ec 19 e7 20 63 68  |ng$,R,1).m... ch|
0000ef90  24 3d 22 7c 22 20 8c 20  63 68 24 3d bd 28 31 33  |$="|" . ch$=.(13|
0000efa0  29 0d 6d f6 11 6f 75 74  24 3d 6f 75 74 24 2b 63  |).m..out$=out$+c|
0000efb0  68 24 0d 6e 00 05 ed 0d  6e 0a 14 24 42 55 46 46  |h$.n....n..$BUFF|
0000efc0  25 3d 6f 75 74 24 2b bd  28 30 29 0d 6e 14 05 e1  |%=out$+.(0).n...|
0000efd0  0d 6e 1e 04 0d 6e 28 18  dd f2 73 65 74 6c 69 6d  |.n...n(...setlim|
0000efe0  69 74 73 28 4c 4d 58 2c  4c 4d 59 29 0d 6e 32 12  |its(LMX,LMY).n2.|
0000eff0  6d 72 63 74 78 31 25 3d  2d 4c 4d 58 2b 32 0d 6e  |mrctx1%=-LMX+2.n|
0000f000  3c 12 6d 72 63 74 79 31  25 3d 2d 4c 4d 59 2b 34  |<.mrcty1%=-LMY+4|
0000f010  0d 6e 46 14 6d 72 63 74  78 32 25 3d 31 32 37 37  |.nF.mrctx2%=1277|
0000f020  2b 4c 4d 58 0d 6e 50 14  6d 72 63 74 79 32 25 3d  |+LMX.nP.mrcty2%=|
0000f030  31 30 31 39 2b 4c 4d 59  0d 6e 5a 05 e1 0d ff     |1019+LMY.nZ....|
0000f03f