Home » Archimedes archive » Archimedes World » AW-1992-10.adf » AWOct92 » !AWOct92/Goodies/Logo/!LoGo/!RunImage
!AWOct92/Goodies/Logo/!LoGo/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Archimedes World » AW-1992-10.adf » AWOct92 |
Filename: | !AWOct92/Goodies/Logo/!LoGo/!RunImage |
Read OK: | ✔ |
File size: | 863F bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM > !RunImage 20: 30REM ************************************************** 40REM * -- LoGo -- * 50REM * Simple Turtle Graphics Generator * 60REM * By Duncan F. McPherson Version 1.0 * 70REM * (c) Archimedes World 1992 * 80REM ************************************************** 90: 100ON ERROR VDU4:PRINTTAB(0,0);REPORT$;" at line ";ERL;" ":END 110PROCvariables:PROCcreatespritearea:PROClogovars 120version=FNwimpinit(2.00,progname$) 130$iconsprite="Siconbar":$icontext="Waiting"+CHR$0 140iconbar=FNmakeicon(-1,0,-16,128,84,&1700310B,iconsprite,icontext) 150icpnt=FNtemplate(tempname$,"<"+progname$+"$Dir>.Templates",icpnt,&1200,han%) 160mainwin=FNcrwin(2,176,1238,980,&FF000002,1,iwd%,ihe%,3,icpnt,40):icpnt+=40 170PROCsetwindowtitletext(mainwin,progname$) 180PROCtemplatevars:PROCcreatesprite(spritename$,iwd%,ihe%,12) 190PROCinfo(progname$,"Drawing Pictures","Duncan F. McPherson","� 1992 V1.0") 200PROCreadcoords:PROCupdatecoords:PROCreadcommandicons 210status%=0:drawfl%=FALSE:PROCprogramfinished:PROCsetuphelp 220PROCunselectable(program,10):PROCdrawicon 230: 240quit%=FALSE:end%=TRUE 250ON ERROR PROCerror(progname$) 260REPEAT 270IF quit%<>TRUE PROCpoll(0) 280UNTIL quit% 290SYS "Wimp_CloseDown":END 300: 310REM ------------------------------------------- 320REM | Wimp Polling related procedures | 330REM ------------------------------------------- 340: 350DEFPROCpoll(mask%) 360SYS "Wimp_Poll",mask%,q% TO reasoncode% 370 CASE reasoncode% OF 380 WHEN 0:IF end%=FALSE PROCrunprogram 390 WHEN 1:PROCredraw_window_request 400 WHEN 2:PROCopen_window_request(q%!0) 410 WHEN 3:PROCclose_window_request(q%!0) 420 WHEN 6:PROCmouse_click(q%!0,q%!4,q%!8,q%!12,q%!16) 430 WHEN 7:PROCdragfinished 440 WHEN 8:PROCkey_pressed(q%!0,q%!4,q%!24) 450 WHEN 9:PROCmenu_selection(q%!0,q%!4,q%!8,q%!12) 460 WHEN 17,18:PROCrecieve 470 ENDCASE 480ENDPROC 490: 500DEFPROCredraw_window_request 510SYS "Wimp_RedrawWindow",,q% TO more% 520WHILE more% 530PROCredrawsprite(q%!4,q%!8,q%!12,q%!16,q%!20,q%!24) 540SYS "Wimp_GetRectangle",,q% TO more% 550ENDWHILE 560ENDPROC 570: 580DEFPROCopen_window_request(handle%) 590IF handle%=mainwin PROCopenmainwindow ELSE SYS "Wimp_OpenWindow",,q% 600ENDPROC 610: 620DEFPROCclose_window_request(handle%) 630 CASE handle% OF 640 WHEN mainwin,coords,command 650 q%!0=mainwin:SYS "Wimp_CloseWindow",,q% 660 q%!0=coords:SYS "Wimp_CloseWindow",,q% 670 q%!0=command:SYS "Wimp_CloseWindow",,q% 680 OTHERWISE:SYS "Wimp_CloseWindow",,q% 690 ENDCASE 700ENDPROC 710: 720DEFPROCmouse_click(x%,y%,b%,handle%,icon%) 730 CASE handle% OF 740 WHEN -2:CASE b% OF 750 WHEN 2:PROCiconbarmenu 760 WHEN 4:PROCfrontmainwin:PROCopentofront(command):IF end%=TRUE PROCputcaret(command,11) 770 ENDCASE 780 WHEN mainwin,command,coords:CASE b% OF 790 WHEN 2:PROCmainmenu 800 WHEN 4,1:PROCopentofront(command) 810 IF status%<2 PROCputcaret(command,11) 820 ENDCASE 830 WHEN save:CASE icon% OF 840 WHEN 3:savhandle%=save:PROCsavedrag 850 WHEN 0:savhandle%=save:PROCsaveok 860 ENDCASE 870 WHEN program:CASE icon% OF 880 WHEN 3:savhandle%=program:PROCsavedrag 890 WHEN 7:PROCdrawicon 900 WHEN 10:IF status%=1 PROCstartprogram 910 IF status%=2 PROCpauseprogram 920 WHEN 12:IF status%=2 PROCprogramfinished 930 IF status%=3 PROCunpauseprogram 940 WHEN 23:savhandle%=-1:PROCsavedrag 950 ENDCASE 960 WHEN help:PROChelp(icon%) 970 ENDCASE 980ENDPROC 990: 1000DEFPROCkey_pressed(window%,icon%,key%) 1010IF window%=save AND icon%=0 AND key%=13 savhandle%=save:PROCsaveok 1020IF window%=command AND key%=13 THEN 1030PROCscrollup:com$=FNreadicontext(command,11) 1040PROCseticontext(command,11,""):PROCseticontext(command,5,"LoGo:") 1050PROCputcaret(command,11):PROCcommandline(com$) 1060ELSE 1070SYS "Wimp_ProcessKey",key% 1080ENDIF:ENDPROC 1090: 1100DEFPROCmenu_selection(opt1%,opt2%,opt3%,opt4%) 1110 CASE menuhandle% OF 1120 WHEN 0:CASE opt1% OF 1130 WHEN 1:quit%=TRUE 1140 ENDCASE 1150 WHEN 1 :CASE opt1% OF 1160 WHEN 0:PROCopentofront(program) 1170 WHEN 2:PROCopentofront(help) 1180 ENDCASE 1190 ENDCASE 1200SYS "Wimp_GetPointerInfo",,workblock% 1210IF workblock%!8=1 SYS "Wimp_CreateMenu",,menutree% 1220ENDPROC 1230: 1240DEFPROCrecieve 1250IF q%!16=0 quit%=TRUE 1260IF q%!16=2 PROCdatasave:ENDPROC 1270IF q%!16=3 IF q%!40=&FFF PROCloadprogram($(q%+44)) 1280ENDPROC 1290: 1300REM -------------------------------------------------- 1310REM | Program Specific Functions & Procedures | 1320REM -------------------------------------------------- 1330: 1340DEFPROChelp(icon%) 1350IF icon%<13 ENDPROC 1360RESTORE 1510 1370FOR number%=13 TO icon%:READ com$,syntax$,abbrev$,purp$ 1380NEXT:PROCseticontext(help,10,syntax$) 1390PROCseticontext(help,11,abbrev$) 1400PROCseticontext(help,12,purp$) 1410ENDPROC 1420: 1430DEFPROCsetuphelp 1440RESTORE 1510 1450FOR icon%=13 TO 36 1460READ com$,syntax$,abbrev$,purp$ 1470PROCseticontext(help,icon%,com$) 1480NEXT 1490ENDPROC 1500: 1510DATA "FORWARD","Forward <Distance>","F.","This command moves the turtle forward a secified distance" 1520DATA "BACK","Back <Distance>","B.","This command moves the turtle backwards the specified distance" 1530DATA "LEFT","Left <Angle>","L.","Turns the turtle anti-clockwise through <angle> degrees" 1540DATA "RIGHT","Right <Angle>","R.","Turns the turtle clockwise through <angle> degrees" 1550DATA "ANGLE","Angle <angle>","A.","Sets the turtle angle to <angle> degrees" 1560DATA "PENCOLOUR","PenColour <colour>","PenC.","Sets the drawing colour to <colour" 1570DATA "PENDOWN","PenDown","PenD.","Tells the turtle to draw lines behind it" 1580DATA "PENUP","PenUp","PenU.","Stops the turtle drawing lines behind it" 1590DATA "CLEAR","Clear","Cl.","Clears the logo window to a white background" 1600DATA "HOME","Home","Ho.","Moves the turtle to the home position" 1610DATA "SETHOME","SetHome","SetH.","Makes the current position the home position" 1620DATA "RESTART","ReStart","ReS.","Resets the logo system completely" 1630DATA "HELP","Help <command>","H.","Gives help on <command>" 1640DATA "/","/","/","Allows comments to be inserted in textfile programs" 1650DATA "RUN","Run","Run","Tells logo to start the current program" 1660DATA "FINISH","Finish","Finish","Tells the turtle that the program is finished" 1670DATA "","","","" 1680DATA "","","","" 1690DATA "[","[ <number>","[","Creates a loop to be repeated <number> times" 1700DATA "]","]","]","Closes the current loop" 1710DATA "TO","To <name>","To","Tells the turtle how to draw <name> when it is asked to" 1720DATA "ENDTO","EndTo","EndTo","Finishes defining a TO subroutine" 1730DATA "","","","" 1740DATA "","","","" 1750: 1760DEFPROCiconbarmenu 1770menutree%=menublock%:menuhandle%=0 1780ptr%=FNcrmu("Info>info,Quit",progname$,menublock%) 1790SYS "Wimp_CreateMenu",,menublock%,x%-64,178 1800ENDPROC 1810: 1820DEFPROCmainmenu 1830ptr%=menublock%:menuhandle%=1 1840menu2=ptr%:ptr%=FNcrmu("Restart,Help>help","Misc",menu2) 1850menu1=ptr% 1860ptr%=FNcrmu("Program,-Save>save,Help,Info>info",progname$,menu1) 1870SYS "Wimp_CreateMenu",,menu1,x%,y% 1880menutree%=menu1:ENDPROC 1890: 1900DEFFNturtlemoved 1910IF oldturtlex<>turtlexpos OR oldturtley<>turtleypos OR oldturtleangle<>turtleangle THEN =TRUE ELSE =FALSE 1920: 1930DEFPROCmoveturtle 1940IF turtlexpos=oldturtlex AND turtleypos=oldturtley THEN 1950PROCupdateturtle(oldturtlex-42,-ihe%+oldturtley-44,84,88) 1960ELSE 1970PROCupdateturtle(oldturtlex-42,-ihe%+oldturtley-44,84,88) 1980PROCupdateturtle(turtlexpos-42,-ihe%+turtleypos-44,84,88) 1990IF turtlexpos>oldturtlex x%=oldturtlex:w%=turtlexpos-oldturtlex ELSE x%=turtlexpos:w%=oldturtlex-turtlexpos 2000IF turtleypos>oldturtley y%=oldturtley:h%=turtleypos-oldturtley ELSE y%=turtleypos:h%=oldturtley-turtleypos 2010IF pen=TRUE PROCupdateturtle(x%-2,-ihe%+y%-4,w%+4,h%+8) 2020ENDIF:ENDPROC 2030: 2040DEFPROCupdateturtle(x%,y%,w%,h%) 2050workblock%!0=mainwin:workblock%!4=x%:workblock%!8=y% 2060workblock%!12=x%+w%:workblock%!16=y%+h% 2070SYS "Wimp_UpdateWindow",,workblock% TO more% 2080WHILE more% 2090PROCredrawsprite(workblock%!4,workblock%!8,workblock%!12,workblock%!16,workblock%!20,workblock%!24) 2100SYS "Wimp_GetRectangle",,workblock% TO more% 2110ENDWHILE:ENDPROC 2120: 2130DEFPROCupdatecoords 2140$q%=STRING$(30,CHR$(0)):q%!0=coords 2150$xicon=STR$(INT(turtlexpos)):q%!4=0:SYS "Wimp_SetIconState",,q% 2160$yicon=STR$(INT(turtleypos)):q%!4=1:SYS "Wimp_SetIconState",,q% 2170ang%=turtleangle MOD 360:IF ang%<0 ang%=360+ang% 2180$angicon=STR$(ang%):q%!4=2:SYS "Wimp_SetIconState",,q% 2190IF pen=TRUE $penicon="Down" ELSE $penicon="Up" 2200q%!4=6:SYS "Wimp_SetIconState",,q% 2210q%!4=7:$colicon=STR$(pencolour):SYS "Wimp_SetIconState",,q% 2220PROCseticonbaccol(coords,7,pencolour) 2230ENDPROC 2240: 2250DEFPROCreadcoords 2260q%!0=coords:q%!4=0:SYS "Wimp_GetIconState",,q%:xicon=q%!28 2270q%!0=coords:q%!4=1:SYS "Wimp_GetIconState",,q%:yicon=q%!28 2280q%!0=coords:q%!4=2:SYS "Wimp_GetIconState",,q%:angicon=q%!28 2290q%!0=coords:q%!4=6:SYS "Wimp_GetIconState",,q%:penicon=q%!28 2300q%!0=coords:q%!4=7:SYS "Wimp_GetIconState",,q%:colicon=q%!28 2310q%!0=program:q%!4=16:SYS "Wimp_GetIconState",,q%:posicon=q%!28 2320ENDPROC 2330: 2340DEFPROCopenmainwindow 2350workblock%!0=coords:SYS "Wimp_GetWindowState",,workblock% 2360height%=workblock%!16-workblock%!8:workblock%!16=q%!8+height% 2370workblock%!4=q%!4:workblock%!8=q%!8:workblock%!12=q%!12 2380workblock%!16=q%!8+height% 2390workblock%!28=q%!28:SYS "Wimp_OpenWindow",,workblock% 2400q%!28=coords:SYS "Wimp_OpenWindow",,q% 2410ENDPROC 2420: 2430DEFPROCfrontmainwin 2440q%!0=mainwin:SYS "Wimp_GetWindowState",,q%:q%!28=-1 2450q%!4=2:q%!8=176:q%!12=1238:q%!16=980 2460PROCopenmainwindow:ENDPROC 2470: 2480DEFPROCtemplatevars 2490info=han%!0:save=han%!4:coords=han%!8:command=han%!12:help=han%!16 2500program=han%!20 2510ENDPROC 2520: 2530DEFPROCvariables 2540DIM q% &300,menublock% &200,workblock% &700,iconsblock% &1200 2550DIM han% 80,coltrans% 16,scalefac% 16,spritearea% 81*1024 2560progname$="LoGo":tempname$="info,save,coords,command,help,program" 2570icpnt=iconsblock%:DIM menuitem$(30),commandicon%(12) 2580spritename$="default":iwd%=1280:ihe%=1024 2590comstring$="":savhandle%=0:status%=0 2600DIM icontext 20,iconsprite 20 2610ENDPROC 2620: 2630DEFPROClogovars 2640homexpos=640:homeypos=512:homeangle=0 2650turtlexpos=homexpos:turtleypos=homeypos:turtleangle=homeangle 2660pen=TRUE:pencolour=13 2670oldturtlex=turtlexpos:oldturtley=turtleypos:oldturtleangle=turtleangle 2680to%=0:DIM tosub$(256),tosub%(256) 2690DIM substack%(200),loopstack%(200):stack%=0:lstack%=0 2700DIM logofile% 20*1024,commandline% 200 2710DIM drawfile% 60*1024:REM a 60k drawfile maximum 2720DIM cols% 80 2730ENDPROC 2740: 2750DEFPROCredrawsprite(minx%,miny%,maxx%,maxy%,scx%,scy%) 2760SYS "Wimp_ReadPixTrans",&100,spritearea%,spritename$,,,,scalefac%,coltrans% 2770xo%=minx%-scx%:x%=xo% 2780yo%=maxy%-scy%:y%=yo%-ihe% 2790SYS "OS_SpriteOp",308,spritearea%,spritename$,x%,y%,0,scalefac%,coltrans% 2800PROCdrawturtle(x%+turtlexpos,y%+turtleypos,11,40,turtleangle) 2810ENDPROC 2820: 2830DEFPROCcreatespritearea 2840spritearea%!0=81*1024:spritearea%!8=16 2850SYS "OS_SpriteOp",265,spritearea% 2860ENDPROC 2870: 2880DEFPROCinscommand(command$) 2890PROClogocommand(command$) 2900IF FNturtlemoved=TRUE PROCmoveturtle 2910oldturtlex=turtlexpos:oldturtley=turtleypos:oldturtleangle=turtleangle 2920PROCupdatecoords 2930ENDPROC 2940: 2950DEFPROCcreatesprite(name$,width%,height%,mode%) 2960SYS "OS_SpriteOp",271,spritearea%,name$,0,width%/2,height%/4,mode% 2970ENDPROC 2980: 2990DEFPROCreadcommandicons 3000workblock%!0=command:FOR icon%=0 TO 11 3010workblock%!4=icon%:SYS "Wimp_GetIconState",,workblock% 3020commandicon%(icon%)=workblock%!28:NEXT:ENDPROC 3030: 3040DEFPROCscrollup 3050workblock%!0=command:workblock%!4=0:workblock%!8=0:workblock%!12=0 3060FOR icon%=1 TO 5 3070$(commandicon%(icon%-1))=$(commandicon%(icon%)) 3080workblock%!4=icon%-1:SYS "Wimp_SetIconState",,workblock% 3090NEXT 3100FOR icon%=7 TO 11 3110$(commandicon%(icon%-1))=$(commandicon%(icon%)) 3120workblock%!4=icon%-1:SYS "Wimp_SetIconState",,workblock% 3130NEXT 3140ENDPROC 3150: 3160DEFPROClogoerror(message$) 3170SYS "Hourglass_Smash" 3180IF INKEY -113 ERROR 255,"You pressed ESCAPE" 3190PROCseticontext(command,5,"Error"):PROCseticontext(command,11,message$) 3200PROCscrollup 3210PROCseticontext(command,11,STRING$(30,CHR$0)) 3220PROCseticontext(command,5,"LoGo:") 3230SYS "Wimp_GetCaretPosition",,workblock% 3240IF workblock%!0=command AND workblock%!4=11 SYS "Wimp_SetCaretPosition",-1:PROCputcaret(command,11) 3250IF status%>1 status%=1:PROCprogramfinished 3260IF INKEY -113 ERROR 255,"You pressed ESCAPE" 3270endline%=TRUE 3280ENDPROC 3290: 3300DEFPROCdrawturtle(x%,y%,col%,size%,angle%) 3310SYS "Wimp_SetColour",col% 3320MOVE x%+(size%*SIN(RAD(angle%))),y%+(size%*COS(RAD(angle%))) 3330MOVE x%+(size%*SIN(RAD(angle%+135))),y%+(size%*COS(RAD(angle%+135))) 3340PLOT 85,x%,y% 3350MOVE x%+(size%*SIN(RAD(angle%-135))),y%+(size%*COS(RAD(angle%-135))) 3360PLOT 85,x%+(size%*SIN(RAD(angle%))),y%+(size%*COS(RAD(angle%))) 3370DRAW x%,y% 3380ENDPROC 3390: 3400REM ------------------------------------- 3410REM | Save & Load Procedures | 3420REM ------------------------------------- 3430: 3440DEF FNsavename 3450workblock%!0=savhandle%:workblock%!4=2 3460IF savhandle%=-1 workblock%!0=program:workblock%!4=21 3470SYS "Wimp_GetIconState",,workblock% 3480A$="":A%=workblock%!28:REPEAT:A$=A$+CHR$?A%:A%=A%+1:UNTIL ?A%=0 OR ?A%=13 3490=A$+CHR$0 3500: 3510DEFPROCsavename(A$) 3520workblock%!0=savhandle%:workblock%!4=2 3530IF savhandle%=-1 workblock%!0=program:workblock%!4=21 3540SYS "Wimp_GetIconState",,workblock% 3550$(workblock%!28)=A$ 3560ENDPROC 3570: 3580DEFPROCsavedrag 3590q%!0=savhandle%:IF savhandle%=-1 q%!0=program 3600SYS "Wimp_GetWindowState",,q% 3610xo%=q%!4-q%!20:yo%=q%!16-q%!24 3620IF savhandle%=-1 q%!4=23 ELSE q%!4=3 3630SYS "Wimp_GetIconState",,q% 3640q%!0=savhandle%:q%!4=5:q%!8=xo%+q%!8:q%!12=yo%+q%!12:q%!16=xo%+q%!16 3650q%!20=yo%+q%!20:q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF 3660SYS "Wimp_DragBox",,q% 3670ENDPROC 3680: 3690DEFPROCdragfinished 3700SYS "Wimp_GetPointerInfo",,q% 3710q%!20=q%!12:q%!24=q%!16:q%!28=q%!0:q%!32=q%!4 3720IF savhandle%=save q%!36=81*1024 3730IF savhandle%=program q%!36=10 3740IF savhandle%=-1 q%!36=10 3750q%!0=256:q%!12=0:q%!16=1 3760IF savhandle%=save q%!40=&FF9 3770IF savhandle%=program q%!40=&AFF 3780IF savhandle%=-1 q%!40=&FFF 3790$(q%+44)=FNgetleafname(FNsavename) 3800SYS "Wimp_SendMessage",17,q%,q%!20,q%!24 3810ENDPROC 3820: 3830DEFFNgetleafname(A$) 3840WHILE INSTR(A$,".") 3850A$=MID$(A$,INSTR(A$,".")+1) 3860ENDWHILE:=A$+CHR$0 3870: 3880DEFPROCdatasave 3890fullname$="":a%=0:b%=q%?(44+a%) 3900WHILE b%<>0 3910fullname$=fullname$+CHR$(b%):a%=a%+1:b%=q%?(44+a%) 3920ENDWHILE 3930IF savhandle%=save PROCsavesprite(fullname$) 3940IF savhandle%=program q%!36=0 3950IF savhandle%=-1 q%!36=0 3960IF q%!36<>-1 AND savhandle%<>-1 PROCseticontext(savhandle%,2,fullname$) 3970IF q%!36<>-1 AND savhandle%=-1 PROCseticontext(program,21,fullname$) 3980q%!12=q%!8:q%!16=3:q%!0=256:SYS "Wimp_SendMessage",18,q%,q%!20,q%!24 3990IF savhandle%<>program AND savhandle%<>-1 SYS "Wimp_CreateMenu",,-1 4000ENDPROC 4010: 4020DEFPROCsaveok 4030A$=FNsavename 4040IF INSTR(A$,".")=0 ERROR 1,"To save, drag the icon to a directory viewer" 4050IF savhandle%=save PROCsavesprite(A$) 4060SYS "Wimp_CreateMenu",,-1 4070ENDPROC 4080: 4090DEFPROCsavesprite(A$) 4100SYS "OS_SpriteOp",268,spritearea%,A$:ENDPROC 4110: 4120REM -------------------------------------------------- 4130REM | Universal Functions & Procedure | 4140REM -------------------------------------------------- 4150: 4160DEFPROCseticonbaccol(window%,icon%,col%) 4170A$="&"+STR$~col%+"0000000" 4180workblock%!0=window%:workblock%!4=icon%:workblock%!8=EVAL(A$) 4190workblock%!12=&F0000000:SYS "Wimp_SetIconState",,workblock% 4200ENDPROC 4210: 4220DEFPROCseticonforcol(window%,icon%,col%) 4230A$="&0"+STR$~col%+"000000" 4240workblock%!0=window%:workblock%!4=icon%:workblock%!8=EVAL(A$) 4250workblock%!12=&0F000000:SYS "Wimp_SetIconState",,workblock% 4260ENDPROC 4270: 4280DEFFNwindowopen(window%) 4290workblock%!0=window%:SYS "Wimp_GetWindowState",,workblock% 4300flags%=workblock%!32:open%=flags% AND 1<<16 4310IF open%>0 =TRUE ELSE =FALSE 4320: 4330DEFPROCsetbuttontype(window%,icon%,type%) 4340workblock%!0=window%:workblock%!4=icon% 4350workblock%!8=EVAL("&0000"+STR$~type%+"000") 4360workblock%!12=&0000F000:SYS "Wimp_SetIconState",,workblock% 4370ENDPROC 4380: 4390DEFPROCunselectable(window%,icon%) 4400PROCseticonforcol(window%,icon%,2) 4410workblock%!0=window%:workblock%!4=icon% 4420workblock%!8=&400000:workblock%!12=&400000 4430SYS "Wimp_SetIconState",,workblock%:ENDPROC 4440: 4450DEFPROCeoricon(window%,icon%) 4460q%!0=window%:q%!4=icon%:q%!8=1<<21:q%!12=1<<21 4470SYS "Wimp_SetIconState",,q%:ENDPROC 4480: 4490DEFPROCunicon(window%,icon%) 4500q%!0=window%:q%!4=icon%:q%!8=0:q%!12=1<<21 4510SYS "Wimp_SetIconState",,q%:ENDPROC 4520: 4530DEFFNiconeor(window%,icon%) 4540q%!0=window%:q%!4=icon%:SYS "Wimp_GetIconState",,q% 4550IF (q%!24 AND 1<<21)>0 THEN =TRUE ELSE =FALSE 4560: 4570DEFPROCselectable(window%,icon%) 4580PROCseticonforcol(window%,icon%,7) 4590workblock%!0=window%:workblock%!4=icon% 4600workblock%!8=0:workblock%!12=&400000 4610SYS "Wimp_SetIconState",,workblock%:ENDPROC 4620: 4630DEFFNreadicontext(window%,icon%) 4640workblock%!0=window%:workblock%!4=icon% 4650SYS "Wimp_GetIconState",,workblock% 4660=$(workblock%!28) 4670: 4680DEFPROCseticontext(window%,icon%,text$):LOCAL len% 4690workblock%!0=window%:workblock%!4=icon% 4700SYS "Wimp_GetIconState",,workblock% 4710len%=workblock%!36 4720$(workblock%!28)=LEFT$(text$,len%-1):workblock%!8=0:workblock%!12=0 4730SYS "Wimp_SetIconState",,workblock% 4740ENDPROC 4750: 4760DEFPROCopenwindow(handle%) 4770workblock%!0=handle%:SYS "Wimp_GetWindowState",,workblock% 4780SYS "Wimp_OpenWindow",,workblock% 4790ENDPROC 4800: 4810DEFPROCsetwindowtitletext(handle%,text$):LOCAL len% 4820workblock%!0=handle%:SYS "Wimp_GetWindowInfo",,workblock% 4830len%=workblock%!84:text$=LEFT$(text$,len%-1) 4840$(workblock%!76)=text$+CHR$(0):ENDPROC 4850: 4860DEFPROCopentofront(handle%) 4870workblock%!0=handle% 4880SYS "Wimp_GetWindowInfo",,workblock%:workblock%!28=-1 4890SYS "Wimp_OpenWindow",,workblock% 4900ENDPROC 4910: 4920DEFPROCputcaret(window%,icon%) 4930SYS "Wimp_SetCaretPosition",window%,icon%,,,-1,0 4940ENDPROC 4950: 4960DEFPROCdisowncaret 4970SYS "Wimp_SetCaretPosition",-1:ENDPROC 4980: 4990DEFFNmenu(text$,width%,height%,gap%) 5000$P%=LEFT$(text$,11)+CHR$0:P%+=12 5010[OPT 0 5020EQUB 7:EQUB 2:EQUB 7:EQUB 0 ;Four definable menu colours 5030EQUD width%*16 ;Width of menu (OS Units) 5040EQUD height% ;Height of one item (OS Units) 5050EQUD gap% ;Vertical gap between items (OS Units) 5060]:=0 5070: 5080DEFFNmenuitem(text$,flags%,submenu%,icon%,last%) 5090IF last%=TRUE flags%=flags% OR &80 5100[OPT 0 5110EQUD flags% ;Menu flags 5120EQUD submenu% ;Submenu pointer (-1 if none) 5130EQUD icon% ;Menu item icon flags (as for a normal icon) 5140]:$P%=LEFT$(text$,11)+CHR$0:P%+=12:=0 5150: 5160DEFFNpar(sep$) 5170i1%=i%+1:i%=INSTR(menustring$+sep$,sep$,i1%) 5180=MID$(menustring$,i1%,i%-i1%) 5190: 5200DEFFNcrmu(menustring$,mutitle$,address%) 5210number%=-1:i%=0:width%=LEN(mutitle$)-2:P%=address% 5220REPEAT:number%+=1:menuitem$(number%)=FNpar(",") 5230UNTIL menuitem$(number%)="":number%-=1 5240[OPT 0:FNmenu(mutitle$,width%,40,0):] 5250FOR menuitem%=0 TO number% 5260itemflags%=FNmenuitemflags(menuitem%) 5270iconflags%=&07000021 5280submenu%=FNsubmenupointer(menuitem%) 5290IF menuitem%=number% lastopt%=TRUE ELSE lastopt%=FALSE 5300IF LEN(menuitem$(menuitem%))>width% width%=LEN(menuitem$(menuitem%)) 5310[OPT 0 5320FNmenuitem(menuitem$(menuitem%),itemflags%,submenu%,iconflags%,lastopt%) 5330]:NEXT:width%+=1:addr%=P%:P%=address%:[OPT 0:FNmenu(mutitle$,width%,40,0) 5340]:=addr% 5350: 5360DEFFNsubmenupointer(A%) 5370A$=menuitem$(A%):i%=INSTR(A$,">"):IF i%=0 =-1 5380B$=RIGHT$(A$,LEN(A$)-i%):menuitem$(A%)=LEFT$(A$,i%-1) 5390IF LEFT$(B$,1)=">" THEN =EVAL(RIGHT$(B$,LEN(B$)-1)) 5400=EVAL(B$) 5410: 5420DEFFNmenuitemflags(A%) 5430A$=menuitem$(A%):flags%=0 5440IF INSTR(A$,"�")>0 A$=FNoutchar(A$,"�"):flags%+=1 5450IF INSTR(A$,"-")>0 A$=FNoutchar(A$,"-"):flags%+=2 5460menuitem$(A%)=A$:=flags% 5470: 5480DEFFNoutchar(C$,D$) 5490i%=INSTR(C$,D$):=LEFT$(C$,i%-1)+RIGHT$(C$,LEN(C$)-i%) 5500: 5510DEFFNtemplate(temp$,filename$,addr%,size%,handleaddr%):LOCAL number%,i% 5520SYS "Wimp_OpenTemplate",,filename$ 5530number%=-1:i%=0:size%+=addr% 5540REPEAT:number%+=1:name$=FNpartemp(","):IF name$<>"" THEN 5550SYS "Wimp_LoadTemplate",,workblock%,addr%,size%,-1,name$ TO ,,addr% 5560SYS "Wimp_CreateWindow",,workblock% TO !(handleaddr%+(4*number%)) 5570ENDIF:UNTIL name$="":SYS "Wimp_CloseTemplate":=addr% 5580: 5590DEFFNpartemp(sep$) 5600i1%=i%+1:i%=INSTR(temp$+sep$,sep$,i1%) 5610=MID$(temp$,i1%,i%-i1%) 5620: 5630DEFFNmakeicon(window%,minx%,miny%,maxx%,maxy%,flags%,sprite%,text%) 5640workblock%!0=window%:workblock%!4=minx%:workblock%!8=miny% 5650workblock%!12=maxx%:workblock%!16=maxy% 5660workblock%!20=flags%:workblock%!24=text%:workblock%!28=sprite% 5670workblock%!32=20 5680SYS "Wimp_CreateIcon",,workblock% TO iconhandle%:=iconhandle% 5690: 5700DEFPROCerror(name$) 5710IF ERR=26 PROClogoerror("Bad logo parameter"):ENDPROC 5720workblock%!0=ERR:LOCAL clicked_on% 5730$(workblock%+4)=REPORT$+" (internal error code "+STR$(ERL)+")"+CHR$(0) 5740IF ERR=255 $(workblock%+4)=REPORT$ 5750SYS "Wimp_ReportError",workblock%,3,name$ TO ,clicked_on% 5760IF clicked_on%=2 quit%=TRUE 5770ENDPROC 5780: 5790DEFFNwimpinit(knownversion,taskname$) 5800SYS "Wimp_Initialise",200*knownversion,&4B534154,taskname$ TO version 5810=version 5820: 5830DEFFNcrwin(x%,y%,w%,h%,flags%,bcol%,xe%,ye%,waf%,title%,length%) 5840$workblock%=STRING$(92,CHR$(0)):REM Fill the window block with zeros 5850workblock%!0=x%:workblock%!4=y%:workblock%!8=x%+w%:workblock%!12=y%+h% 5860workblock%!24=-1:workblock%!28=flags% 5870workblock%?32=7:workblock%?33=2:workblock%?34=7:workblock%?35=bcol% 5880workblock%?36=3:workblock%?37=1:workblock%?38=12 5890workblock%!44=-ye%:workblock%!48=xe% 5900workblock%!56=&13D:workblock%!60=waf%<<12 5910workblock%!72=title%:workblock%!76=-1:workblock%!80=length% 5920SYS "Wimp_CreateWindow",,workblock% TO handle% 5930=handle% 5940: 5950DEFPROCinfo(name$,purpose$,author$,version$) 5960PROCseticontext(info,12,name$) 5970PROCseticontext(info,13,purpose$) 5980PROCseticontext(info,14,author$) 5990PROCseticontext(info,15,version$) 6000ENDPROC 6010: 6020REM -------------------------------------------------- 6030REM | Logo Interpreter Procedures | 6040REM -------------------------------------------------- 6050: 6060DEFPROClogocommand(command$) 6070command$=FNnospcs(command$) 6080command$=FNletcase(command$) 6090command$=FNexpandcommand(command$) 6100IF LEFT$(command$,7)="FORWARD" PROCforward(EVAL(RIGHT$(command$,LEN(command$)-7))) 6110IF LEFT$(command$,4)="BACK" PROCback(EVAL(RIGHT$(command$,LEN(command$)-4))) 6120IF LEFT$(command$,4)="LEFT" PROCleft(EVAL(RIGHT$(command$,LEN(command$)-4))) 6130IF LEFT$(command$,5)="RIGHT" PROCright(EVAL(RIGHT$(command$,LEN(command$)-5))) 6140IF LEFT$(command$,5)="ANGLE" PROCangle(EVAL(RIGHT$(command$,LEN(command$)-5))) 6150IF LEFT$(command$,4)="HELP" PROChelpcom(RIGHT$(command$,LEN(command$)-4)) 6160IF LEFT$(command$,4)="HOME" PROChome 6170IF LEFT$(command$,5)="CLEAR" PROCclear 6180IF LEFT$(command$,5)="PENUP" PROCpenup 6190IF LEFT$(command$,7)="PENDOWN" PROCpendown 6200IF LEFT$(command$,9)="PENCOLOUR" PROCpencolour(EVAL(RIGHT$(command$,LEN(command$)-9))) 6210IF LEFT$(command$,3)="RUN" AND status%=1:PROCstartprogram 6220IF LEFT$(command$,7)="RESTART" PROCrestart 6230IF LEFT$(command$,7)="SETHOME" PROCsethome 6240ENDPROC 6250: 6260DEFPROCloadprogram(filename$) 6270SYS "OS_File",12,filename$,logofile%,0 TO ,,,,filesize% 6280PROCtosearch(logofile%,filesize%) 6290PROCopentofront(program) 6300PROCseticontext(program,13,STR$(filesize%)) 6310PROCseticontext(program,16,"0%") 6320PROCseticontext(program,8,filename$) 6330PROCseticontext(program,10,"Run"):PROCseticontext(program,12,"Abort") 6340PROCselectable(program,10):PROCunselectable(program,12) 6350PROCseticontext(command,5,"Info:"):PROCseticontext(command,11,"Program loaded. "+STR$(to%)+" routines. Type RUN to begin") 6360PROCscrollup 6370PROCseticontext(command,5,"LoGo:"):PROCseticontext(command,11,"") 6380status%=1:ENDPROC 6390: 6400DEFPROCstartprogram 6410end%=FALSE:PROCsetbuttontype(command,11,0):PROCdisowncaret 6420point%=logofile%:status%=2 6430PROCseticontext(program,16,"0%") 6440PROCselectable(program,10):PROCselectable(program,12) 6450PROCseticontext(program,10,"Pause"):PROCseticontext(program,12,"Abort") 6460PROCunselectable(program,2):PROCunselectable(program,21) 6470PROCunselectable(program,3):PROCunselectable(program,22) 6480PROCunselectable(program,7):PROCunselectable(program,23) 6490PROCseticontext(-2,iconbar,"Running") 6500PROCsetupdrawfile 6510ENDPROC 6520: 6530DEFPROCrunprogram 6540perscent%=(((point%-logofile%)/filesize%)*100) 6550$posicon=STR$(perscent%)+"%":q%!0=program:q%!4=16:q%!8=0:q%!12=0 6560SYS "Wimp_SetIconState",,q% 6570A$=FNcomstring(point%):point%=FNgetcommand(point%) 6580Error$="":comnum%=FNprogcom(A$) 6590IF comnum%<15 AND Error$="" PROCinscommand(A$) 6600IF Error$<>"" PROClogoerror(Error$):end%=TRUE 6610IF point%>=logofile%+filesize% end%=TRUE 6620IF end%=TRUE PROCprogramfinished 6630ENDPROC 6640: 6650DEFPROCprogramfinished 6660end%=TRUE:status%=1 6670PROCsetbuttontype(command,11,15) 6680IF FNwindowopen(command) PROCputcaret(command,11) 6690PROCselectable(program,2):PROCselectable(program,21) 6700PROCselectable(program,3):PROCselectable(program,22) 6710PROCselectable(program,7):PROCselectable(program,23) 6720PROCselectable(program,10):PROCunselectable(program,12) 6730PROCseticontext(program,10,"RUN"):PROCseticontext(program,12,"Abort") 6740PROCseticontext(-2,iconbar,"Waiting") 6750PROCsavedrawfile 6760IF FNiconeor(program,7) THEN 6770PROCselectable(program,3):PROCselectable(program,2) 6780ELSE 6790PROCunselectable(program,3):PROCunselectable(program,2) 6800ENDIF 6810ENDPROC 6820: 6830DEFPROCpauseprogram 6840IF point%=logofile% ENDPROC 6850end%=TRUE:status%=3:PROCseticontext(program,12,"Restart") 6860PROCunselectable(program,10):PROCseticontext(-2,iconbar," Paused "):ENDPROC 6870: 6880DEFPROCunpauseprogram 6890end%=FALSE:status%=2:PROCseticontext(program,12,"Abort") 6900PROCselectable(program,10):PROCseticontext(-2,iconbar,"Running"):ENDPROC 6910: 6920REM ---------------------------------------------------- 6930REM | Procedures for dealing with typed commands | 6940REM ---------------------------------------------------- 6950: 6960DEFPROCcommandline(A$) 6970IF status%<>1 OR end%=FALSE ENDPROC 6980lstack%=0:stack%=0:endline%=FALSE 6990$commandline%=A$+CHR$(0):commandlen%=LEN(A$):point%=commandline% 7000SYS "Hourglass_On" 7010REPEAT:A$=FNcomstring(point%):point%=FNgetcommand(point%) 7020Error$="":comnum%=FNprogcom(A$) 7030IF INKEY -113 ERROR 255,"You pressed ESCAPE" 7040IF comnum%<15 AND Error$="" PROCinscommand(A$) 7050IF Error$<>"" PROClogoerror(Error$):endline%=TRUE 7060IF point%>=commandline%+commandlen% endline%=TRUE 7070IF INKEY -113 ERROR 255,"You pressed ESCAPE" 7080UNTIL endline%=TRUE OR end%=FALSE 7090SYS "Hourglass_Off":ENDPROC 7100: 7110DEFFNgetcommand(addr%) 7120REPEAT:A%=?addr%:addr%+=1:UNTIL A%<32 OR A%=127 OR A%=ASC(":"):=addr% 7130: 7140DEFFNcomstring(addr%) 7150A$="":REPEAT 7160A%=?addr%:addr%+=1:IF A%>31 AND A%<>127 AND A%<> ASC(":") A$+=CHR$(A%) 7170UNTIL A%<32 OR A%=127 OR A%=ASC(":"):=A$ 7180: 7190DEF FNnormcmnd(A$) 7200n%=1:N%=0:RESTORE 7260:REPEAT 7210READ F$,C%:IF FNabbrev(A$,F$,C%)>0 THEN N%=n% 7220n%+=1:UNTIL F$="EEND" 7230IF N%=n%-1 N%=0 7240=N% 7250: 7260DATA FORWARD,1,BACK,1,LEFT,1,RIGHT,1 7270DATA ANGLE,1,CLEAR,2,HOME,2 7280DATA PENUP,4,PENDOWN,4,PENCOLOUR,4 7290DATA SETHOME,4,RESTART,3,HELP,1 7300DATA RUN,2,TO,0,ENDTO,0,[,0,],0 7310DATA FINISH,3,/,0,EEND,0 7320: 7330DEFFNexpandcommand(A$) 7340N%=FNnormcmnd(A$):IF N%=0 =A$ 7350RESTORE 7260:FOR X%=1 TO N% 7360READ com$,abb%:NEXT:abbre%=FNabbrev(A$,com$,abb%) 7370=com$+RIGHT$(A$,LEN(A$)-abbre%) 7380: 7390DEF FNletcase(A$):LOCAL n%,B$,A%,C$ 7400IF A$="" ="" 7410FOR n%=1 TO LEN(A$) 7420A%=ASC(MID$(A$,n%,1)) 7430IF A%>96 AND A%<123 THEN A%=A%-32 7440B$=LEFT$(A$,n%-1):C$=RIGHT$(A$,LEN(A$)-n%):A$=B$+CHR$A%+C$ 7450NEXT:=A$ 7460: 7470DEF FNnospcs(A$) 7480L%=1:R%=LEN(A$):N%=-1:REPEAT:N%=N%+1 7490IF MID$(A$,N%,1)=" " L%=N%+1 7500UNTIL N%=LEN(A$) OR MID$(A$,N%+1,1)<>" " 7510N%=LEN(A$)+1:REPEAT:N%=N%-1 7520IF MID$(A$,N%,1)=" " R%=N%-L% 7530UNTIL MID$(A$,N%,1)<>" " 7540=MID$(A$,L%,R%) 7550: 7560DEF FNalpha(A$) 7570N%=FALSE:FOR n%=1 TO LEN(A$) 7580IF ASC(MID$(A$,n%,1))<65 OR ASC(MID$(A$,n%,1))>90 N%=TRUE 7590NEXT:=N% 7600: 7610DEFFNabbrev(C$,B$,C%) 7620IF LEFT$(C$,LEN(B$))=B$ =LEN(B$) 7630E%=0:FOR D%=C% TO (LEN(B$)-1) 7640IF LEFT$(C$,D%+1)=(LEFT$(B$,D%)+".") THEN E%=D%+1 7650NEXT:=E% 7660: 7670DEF FNparams(A%,A$):LOCAL n%,B$,C% 7680RESTORE 7260:FOR n%=1 TO A% 7690READ B$,C%:NEXT:A%=FNabbrev(A$,B$,C%) 7700A$=RIGHT$(A$,LEN(A$)-A%):=FNnospcs(A$) 7710: 7720DEFFNprogcom(com$) 7730com$=FNnospcs(com$):com$=FNletcase(com$):com$=FNexpandcommand(com$) 7740comnum%=FNnormcmnd(com$):subnum%=FNsubno(com$) 7750B$=FNparams(comnum%,com$) 7760IF com$="" =255 7770IF subnum%>-1 AND comnum%=0 PROCtosub(subnum%):=255 7780IF comnum%=0 Error$="No such subroutine":=255 7790IF comnum%<15 =comnum% 7800ON (comnum%-14) PROCcomment,PROCendto,PROCnewloop(EVAL(B$)),PROCendloop,PROCprogramfinished,PROCcomment:=comnum% 7810: 7820REM ------------------------------------- 7830REM | Loop & To Subroutine Handlers | 7840REM ------------------------------------- 7850: 7860DEFPROCnewloop(number%) 7870loopstack%(lstack%)=point%:loopstack%(lstack%+1)=number%:lstack%+=2 7880ENDPROC 7890: 7900DEFPROCendloop 7910number%=loopstack%(lstack%-1) 7920IF number%-1>0 THEN 7930point%=loopstack%(lstack%-2):loopstack%(lstack%-1)-=1 7940ELSE 7950lstack%-=2 7960PROCclosepath 7970ENDIF:ENDPROC 7980: 7990DEFPROCtosub(subnum%) 8000substack%(stack%)=point%:stack%+=1:point%=tosub%(subnum%) 8010ENDPROC 8020: 8030DEFFNsubno(name$) 8040number%=-1:FOR num%=0 TO to%-1:IF tosub$(num%)=name$ AND name$<>"" number%=num% 8050NEXT:=number% 8060: 8070DEFPROCtosearch(address%,size%) 8080FOR X%=0 TO 99:tosub$(X%)="":NEXT 8090SYS "Hourglass_On" 8100point%=address%:stack%=0:lstack%=0:to%=0 8110REPEAT:A$=FNcomstring(point%):point%=FNgetcommand(point%) 8120A$=FNnospcs(A$):A$=FNletcase(A$) 8130IF LEFT$(A$,2)="TO" PROCto(FNparams(15,A$)) 8140UNTIL point%>=address%+size% 8150SYS "Hourglass_Off" 8160ENDPROC 8170: 8180DEFPROCto(B$) 8190IF to%=100 Error$="Too many TO subroutines defined":ENDPROC 8200IF FNalpha(B$) ENDPROC 8210IF FNsubno(B$)>-1 THEN no%=FNsubno(B$) ELSE no%=to%:to%+=1 8220tosub$(no%)=B$:tosub%(no%)=point%:ENDPROC 8230: 8240DEFPROCendto:to$="" 8250IF stack%=0 Error$="Not in a TO subroutine":ENDPROC 8260stack%-=1:point%=substack%(stack%):ENDPROC 8270: 8280DEFPROCcomment:ENDPROC 8290: 8300REM -------------------------------------------------- 8310REM | Turtle Movement Procedures | 8320REM -------------------------------------------------- 8330: 8340DEFPROCforward(distance) 8350turtlexpos+=distance*SIN(RAD(turtleangle)) 8360turtleypos+=distance*COS(RAD(turtleangle)) 8370PROCmessagecode(1,distance) 8380IF pen=FALSE ENDPROC 8390SYS "OS_SpriteOp",316,spritearea%,spritename$ TO R0,R1,R2,R3 8400GCOL 0,pencolour:MOVE oldturtlex,oldturtley:DRAW turtlexpos,turtleypos 8410SYS "OS_SpriteOp",R0,R1,R2,R3 8420PROCdrawline(oldturtlex,oldturtley,turtlexpos,turtleypos,pencolour) 8430ENDPROC 8440: 8450DEFPROCback(distance) 8460turtlexpos-=distance*SIN(RAD(turtleangle)) 8470turtleypos-=distance*COS(RAD(turtleangle)) 8480PROCmessagecode(2,distance) 8490IF pen=FALSE ENDPROC 8500SYS "OS_SpriteOp",316,spritearea%,spritename$ TO R0,R1,R2,R3 8510GCOL 0,pencolour:MOVE oldturtlex,oldturtley:DRAW turtlexpos,turtleypos 8520SYS "OS_SpriteOp",R0,R1,R2,R3 8530PROCdrawline(oldturtlex,oldturtley,turtlexpos,turtleypos,pencolour) 8540ENDPROC 8550: 8560DEFPROCleft(degrees) 8570PROCmessagecode(3,degrees) 8580turtleangle-=degrees 8590ENDPROC 8600: 8610DEFPROCright(degrees) 8620PROCmessagecode(4,degrees) 8630turtleangle+=degrees 8640ENDPROC 8650: 8660DEFPROCangle(angle) 8670ang%=turtleangle MOD 360:IF ang%<0 ang%=360+ang% 8680angl%=angle MOD 360:IF ang%<0 ang%=360+ang% 8690IF ang%>angl% left%=ang%-angl%:right%=360-left% ELSE right%=ang%-angl%:left%=360-right% 8700IF right%<0 left%=360+right%:right%=360-left% 8710IF left%<0 right%=360+right%:left%=360-right% 8720IF right%<left% PROCmessagecode(4,right%) ELSE PROCmessagecode(3,left%) 8730turtleangle=angle 8740ENDPROC 8750: 8760DEFPROCpenup 8770PROCmessagecode(5,0) 8780pen=FALSE:PROCclosepath 8790ENDPROC 8800: 8810DEFPROCpendown 8820PROCmessagecode(6,0) 8830pen=TRUE 8840ENDPROC 8850: 8860DEFPROCpencolour(colour) 8870PROCmessagecode(7,colour) 8880pencolour=colour:PROCclosepath 8890ENDPROC 8900: 8910DEFPROCclear 8920SYS "OS_SpriteOp",316,spritearea%,spritename$ TO R0,R1,R2,R3 8930GCOL 0,0:MOVE 0,0:PLOT 97,iwd%,ihe% 8940SYS "OS_SpriteOp",R0,R1,R2,R3 8950PROCupdateturtle(0,-ihe%,iwd%,ihe%) 8960ENDPROC 8970: 8980DEFPROCmoveto(xcoord,ycoord) 8990opposite=(turtlexpos-xcoord):adjacent=(turtleypos-ycoord) 9000IF adjacent=0 angle=0 ELSE angle=DEG(ATN(opposite/adjacent)) 9010IF opposite<0 AND adjacent<0 angle-=180 9020IF opposite>0 AND adjacent<0 angle+=180 9030distance=SQR((opposite*opposite)+(adjacent*adjacent)) 9040PROCangle(angle):PROCback(distance) 9050ENDPROC 9060: 9070DEFPROChome 9080IF pen=TRUE PROCpenup:T%=1 ELSE T%=0 9090PROCpenup:PROCmoveto(homexpos,homeypos):PROCangle(homeangle) 9100IF T%=1 PROCpendown 9110ENDPROC 9120: 9130DEFPROCsethome 9140ang%=turtleangle MOD 360:IF ang%<0 ang%=360+ang% 9150homexpos=turtlexpos:homeypos=turtleypos:homeangle=turtleangle 9160PROCseticontext(command,5,"Info:") 9170PROCseticontext(command,11,"Home set to "+STR$(INT(homexpos))+","+STR$(INT(homeypos))+","+STR$(ang%)+"�.") 9180PROCscrollup:PROCseticontext(command,5,"LoGo:"):PROCseticontext(command,11,"") 9190ENDPROC 9200: 9210DEFPROCrestart 9220homexpos=640:homeypos=512:homeangle=0 9230PROChome:PROCclear 9240PROCseticontext(command,5,"Info:") 9250PROCseticontext(command,11,"Logo reset at "+TIME$):PROCscrollup 9260PROCseticontext(command,5,"LoGo:"):PROCseticontext(command,11,"") 9270ENDPROC 9280: 9290DEFPROChelpcom(com$) 9300com$=FNnospcs(com$):com$=FNletcase(com$) 9310com$=FNexpandcommand(com$) 9320IF com$="" com$="HELP" 9330RESTORE 1510:N%=0:FOR X%=1 TO 24 9340READ A$,B$,C$,D$:IF A$=com$ AND A$<>"" syntax$=B$:abbrev$=C$:purp$=D$:N%=X% 9350NEXT:IF N%=0 syntax$="":abbrev$="":purp$="" 9360PROCseticontext(command,5,"") 9370PROCseticontext(command,11,"Syntax:"+syntax$):PROCscrollup 9380PROCseticontext(command,5,"") 9390PROCseticontext(command,11,purp$):PROCscrollup 9400PROCseticontext(command,5,"LoGo:"):PROCseticontext(command,11,"") 9410ENDPROC 9420: 9430REM -------------------------------------- 9440REM | Message passing routines | 9450REM -------------------------------------- 9460: 9470DEFPROCmessagecode(code%,parameter) 9480q%!0=100:q%!4=0:q%!8=0:q%!12=0:q%!16=&4C4F474F 9490q%!20=code%:$(q%+24)=STR$(parameter)+CHR$(0) 9500SYS "Wimp_SendMessage",17,q%,0 9510ENDPROC 9520: 9530REM -------------------------------------- 9540REM | Drawfile generation routine | 9550REM -------------------------------------- 9560: 9570DEFPROCsetupdrawfile 9580drpoint%=drawfile% 9590$drpoint%="Draw":drpoint%+=4 9600!drpoint%=201:drpoint%+=4:REM Major version stamp 9610!drpoint%=0:drpoint%+=4:REM Minor version stamp 9620$drpoint%=LEFT$("Logo"+STRING$(12," "),12):drpoint%+=12 9630drpoint%!0=FNxdraw(0):drpoint%!4=FNydraw(0) 9640drpoint%!8=FNxdraw(1280):drpoint%!12=FNydraw(1024):drpoint%+=16 9650path%=FALSE:drawfl%=FNiconeor(program,7) 9651SYS "Wimp_ReadPalette",,cols% 9660ENDPROC 9670: 9680DEFFNxdraw(x):=INT(x*256) 9690DEFFNydraw(y):=INT(y*256) 9700DEFFNcdraw(c%):c%=c% MOD 16 9710IF c%>=0 THEN =!(cols%+c%*4) AND &FFFFFF00 ELSE =-1 9720: 9730DEFPROCopenpath(x1,y1,x2,y2,col%) 9740IF path%=TRUE PROCclosepath 9750x1%=FNxdraw(x1):y1%=FNydraw(y1):x2%=FNxdraw(x2):y2%=FNydraw(y2) 9760objaddr%=drpoint%:path%=TRUE 9770bx%=x1%:by%=y1%:bx1%=x2%:by1%=y2%:IF bx%>bx1% SWAP bx%,bx1% 9780IF by%>by1% SWAP by%,by1% 9790drpoint%=FNobjecthead(drpoint%,2,0,bx%,by%,bx1%,by1%) 9800!drpoint%=-1:drpoint%+=4:REM Fill colour 9810!drpoint%=FNcdraw(col%):drpoint%+=4:REM Line colour 9820!drpoint%=0:drpoint%+=4:REM Line width (thin=0) 9830!drpoint%=&42:drpoint%+=4:REM Draw path object flags 9840drpoint%=FNtag(drpoint%,2,x1%,y1%) 9850drpoint%=FNtag(drpoint%,8,x2%,y2%) 9860ENDPROC 9870: 9880DEFFNtag(addr%,tag%,x%,y%) 9890!addr%=tag%:addr%+=4:REM Tag identifier 9900IF tag%=0 =addr% 9910!addr%=x%:addr%+=4:REM X draw coord 9920!addr%=y%:addr%+=4:REM Y draw coord 9930=addr% 9940: 9950DEFFNobjecthead(addr%,type%,size%,x1%,y1%,x2%,y2%) 9960!addr%=type%:addr%+=4:REM Object type 9970!addr%=size%:addr%+=4:REM Object size (bytes) 9980!addr%=x1%:addr%+=4:REM X low bounding box coord 9990!addr%=y1%:addr%+=4:REM Y low bounding box coord 10000!addr%=x2%:addr%+=4:REM X high bounding box coord 10010!addr%=y2%:addr%+=4:REM Y high bounding box coord 10020=addr% 10030: 10040DEFPROCsavedrawfile 10050IF drawfl%=FALSE ENDPROC 10060PROCclosepath 10070filename$=FNreadicontext(program,2) 10080SYS "OS_File",10,filename$,&AFF,,drawfile%,drpoint% 10090ENDPROC 10100: 10110DEFPROCaddtopath(x1,y1) 10120drpoint%=FNtag(drpoint%,8,FNxdraw(x1),FNydraw(y1)) 10130bx%=FNxdraw(x1):by%=FNydraw(y1) 10140IF bx%<objaddr%!8 objaddr%!8=bx% 10150IF bx%>objaddr%!16 objaddr%!16=bx% 10160IF by%<objaddr%!12 objaddr%!12=by% 10170IF by%>objaddr%!20 objaddr%!20=by% 10180ENDPROC 10190: 10200DEFPROCclosepath 10210IF drawfl%=FALSE ENDPROC 10220IF path%=FALSE ENDPROC 10230path%=FALSE:drpoint%=FNtag(drpoint%,0,0,0) 10240objaddr%!4=drpoint%-objaddr%:ENDPROC 10250: 10260DEFPROCdrawline(x1,y1,x2,y2,col%) 10270IF drawfl%=FALSE ENDPROC 10280IF path%=FALSE THEN 10290PROCopenpath(x1,y1,x2,y2,col%) 10300ELSE 10310PROCaddtopath(x2,y2) 10320ENDIF:ENDPROC 10330: 10340DEFPROCdrawicon 10350IF FNiconeor(program,7) THEN 10360PROCunicon(program,7) 10370PROCunselectable(program,3):PROCunselectable(program,2) 10380ELSE 10390PROCeoricon(program,7) 10400PROCselectable(program,3):PROCselectable(program,2) 10410ENDIF:ENDPROC 10420ENDPROC
� > !RunImage : 8� ************************************************** (8� * -- LoGo -- * 28� * Simple Turtle Graphics Generator * <8� * By Duncan F. McPherson Version 1.0 * F8� * (c) Archimedes World 1992 * P8� ************************************************** Z: d,� � �4:�0,0);�$;" at line ";�;" ":� n*�variables:�createspritearea:�logovars x%version=�wimpinit(2.00,progname$) �1$iconsprite="Siconbar":$icontext="Waiting"+�0 �Diconbar=�makeicon(-1,0,-16,128,84,&1700310B,iconsprite,icontext) �Oicpnt=�template(tempname$,"<"+progname$+"$Dir>.Templates",icpnt,&1200,han%) �Mmainwin=�crwin(2,176,1238,980,&FF000002,1,iwd%,ihe%,3,icpnt,40):icpnt+=40 �*�setwindowtitletext(mainwin,progname$) �9�templatevars:�createsprite(spritename$,iwd%,ihe%,12) �K�info(progname$,"Drawing Pictures","Duncan F. McPherson","� 1992 V1.0") �/�readcoords:�updatecoords:�readcommandicons �3status%=0:drawfl%=�:�programfinished:�setuphelp �'�unselectable(program,10):�drawicon �: �quit%=�:end%=� �� � �error(progname$) � � quit%<>� �poll(0) � quit% "ș "Wimp_CloseDown":� ,: 61� ------------------------------------------- @1� | Wimp Polling related procedures | J1� ------------------------------------------- T: ^��poll(mask%) h)ș "Wimp_Poll",mask%,q% � reasoncode% r Ȏ reasoncode% � | � 0:� end%=� �runprogram � � 1:�redraw_window_request �$ � 2:�open_window_request(q%!0) �% � 3:�close_window_request(q%!0) �2 � 6:�mouse_click(q%!0,q%!4,q%!8,q%!12,q%!16) � � 7:�dragfinished �' � 8:�key_pressed(q%!0,q%!4,q%!24) �/ � 9:�menu_selection(q%!0,q%!4,q%!8,q%!12) � � 17,18:�recieve � � �� �: ���redraw_window_request �&ș "Wimp_RedrawWindow",,q% � more% ȕ more% 4�redrawsprite(q%!4,q%!8,q%!12,q%!16,q%!20,q%!24) &ș "Wimp_GetRectangle",,q% � more% &� 0� :: D"��open_window_request(handle%) N@� handle%=mainwin �openmainwindow � ș "Wimp_OpenWindow",,q% X� b: l#��close_window_request(handle%) v Ȏ handle% � � � mainwin,coords,command �, q%!0=mainwin:ș "Wimp_CloseWindow",,q% �+ q%!0=coords:ș "Wimp_CloseWindow",,q% �, q%!0=command:ș "Wimp_CloseWindow",,q% �! :ș "Wimp_CloseWindow",,q% � � �� �: �)��mouse_click(x%,y%,b%,handle%,icon%) � Ȏ handle% � � � -2:Ȏ b% � � � 2:�iconbarmenu �T � 4:�frontmainwin:�opentofront(command):� end%=� �putcaret(command,11) � & � mainwin,command,coords:Ȏ b% � � 2:�mainmenu ) � 4,1:�opentofront(command) *8 � status%<2 �putcaret(command,11) 4 � > � save:Ȏ icon% � H+ � 3:savhandle%=save:�savedrag R) � 0:savhandle%=save:�saveok \ � f � program:Ȏ icon% � p. � 3:savhandle%=program:�savedrag z � 7:�drawicon �, � 10:� status%=1 �startprogram �/ � status%=2 �pauseprogram �/ � 12:� status%=2 �programfinished �1 � status%=3 �unpauseprogram �* � 23:savhandle%=-1:�savedrag � � � � help:�help(icon%) � � �� �: �%��key_pressed(window%,icon%,key%) �>� window%=save � icon%=0 � key%=13 savhandle%=save:�saveok �!� window%=command � key%=13 � ,�scrollup:com$=�readicontext(command,11) ?�seticontext(command,11,""):�seticontext(command,5,"LoGo:") ,�putcaret(command,11):�commandline(com$) $� .ș "Wimp_ProcessKey",key% 8�:� B: L-��menu_selection(opt1%,opt2%,opt3%,opt4%) V Ȏ menuhandle% � ` � 0:Ȏ opt1% � j � 1:quit%=� t � ~ � 1 :Ȏ opt1% � �' � 0:�opentofront(program) �$ � 2:�opentofront(help) � � � � �(ș "Wimp_GetPointerInfo",,workblock% �4� workblock%!8=1 ș "Wimp_CreateMenu",,menutree% �� �: � ��recieve �� q%!16=0 quit%=� �� q%!16=2 �datasave:� �1� q%!16=3 � q%!40=&FFF �loadprogram($(q%+44)) � : 8� -------------------------------------------------- 8� | Program Specific Functions & Procedures | (8� -------------------------------------------------- 2: <��help(icon%) F� icon%<13 � P � �dfE Z5� number%=13 � icon%:� com$,syntax$,abbrev$,purp$ d#�:�seticontext(help,10,syntax$) n!�seticontext(help,11,abbrev$) x�seticontext(help,12,purp$) �� �: ���setuphelp � � �dfE �� icon%=13 � 36 � � com$,syntax$,abbrev$,purp$ �!�seticontext(help,icon%,com$) �� �� �: �e� "FORWARD","Forward <Distance>","F.","This command moves the turtle forward a secified distance" �d� "BACK","Back <Distance>","B.","This command moves the turtle backwards the specified distance" �[� "LEFT","Left <Angle>","L.","Turns the turtle anti-clockwise through <angle> degrees" X� "RIGHT","Right <Angle>","R.","Turns the turtle clockwise through <angle> degrees" M� "ANGLE","Angle <angle>","A.","Sets the turtle angle to <angle> degrees" S� "PENCOLOUR","PenColour <colour>","PenC.","Sets the drawing colour to <colour" "L� "PENDOWN","PenDown","PenD.","Tells the turtle to draw lines behind it" ,H� "PENUP","PenUp","PenU.","Stops the turtle drawing lines behind it" 6J� "CLEAR","Clear","Cl.","Clears the logo window to a white background" @A� "HOME","Home","Ho.","Moves the turtle to the home position" JP� "SETHOME","SetHome","SetH.","Makes the current position the home position" TD� "RESTART","ReStart","ReS.","Resets the logo system completely" ^<� "HELP","Help <command>","H.","Gives help on <command>" hG� "/","/","/","Allows comments to be inserted in textfile programs" rA� "RUN","Run","Run","Tells logo to start the current program" |P� "FINISH","Finish","Finish","Tells the turtle that the program is finished" �� "","","","" �� "","","","" �I� "[","[ <number>","[","Creates a loop to be repeated <number> times" �+� "]","]","]","Closes the current loop" �U� "TO","To <name>","To","Tells the turtle how to draw <name> when it is asked to" �A� "ENDTO","EndTo","EndTo","Finishes defining a TO subroutine" �� "","","","" �� "","","","" �: ���iconbarmenu �&menutree%=menublock%:menuhandle%=0 �5ptr%=�crmu("Info>info,Quit",progname$,menublock%) �.ș "Wimp_CreateMenu",,menublock%,x%-64,178 � : ��mainmenu &!ptr%=menublock%:menuhandle%=1 0;menu2=ptr%:ptr%=�crmu("Restart,Help>help","Misc",menu2) :menu1=ptr% DCptr%=�crmu("Program,-Save>save,Help,Info>info",progname$,menu1) N%ș "Wimp_CreateMenu",,menu1,x%,y% Xmenutree%=menu1:� b: lݤturtlemoved v]� oldturtlex<>turtlexpos � oldturtley<>turtleypos � oldturtleangle<>turtleangle � =� � =� �: ���moveturtle �5� turtlexpos=oldturtlex � turtleypos=oldturtley � �:�updateturtle(oldturtlex-42,-ihe%+oldturtley-44,84,88) �� �:�updateturtle(oldturtlex-42,-ihe%+oldturtley-44,84,88) �:�updateturtle(turtlexpos-42,-ihe%+turtleypos-44,84,88) �k� turtlexpos>oldturtlex x%=oldturtlex:w%=turtlexpos-oldturtlex � x%=turtlexpos:w%=oldturtlex-turtlexpos �k� turtleypos>oldturtley y%=oldturtley:h%=turtleypos-oldturtley � y%=turtleypos:h%=oldturtley-turtleypos �4� pen=� �updateturtle(x%-2,-ihe%+y%-4,w%+4,h%+8) ��:� �: ���updateturtle(x%,y%,w%,h%) 8workblock%!0=mainwin:workblock%!4=x%:workblock%!8=y% +workblock%!12=x%+w%:workblock%!16=y%+h% .ș "Wimp_UpdateWindow",,workblock% � more% ȕ more% *d�redrawsprite(workblock%!4,workblock%!8,workblock%!12,workblock%!16,workblock%!20,workblock%!24) 4.ș "Wimp_GetRectangle",,workblock% � more% >�:� H: R��updatecoords \$q%=�30,�(0)):q%!0=coords f=$xicon=�(�(turtlexpos)):q%!4=0:ș "Wimp_SetIconState",,q% p=$yicon=�(�(turtleypos)):q%!4=1:ș "Wimp_SetIconState",,q% z1ang%=turtleangle � 360:� ang%<0 ang%=360+ang% �6$angicon=�(ang%):q%!4=2:ș "Wimp_SetIconState",,q% �+� pen=� $penicon="Down" � $penicon="Up" �%q%!4=6:ș "Wimp_SetIconState",,q% �;q%!4=7:$colicon=�(pencolour):ș "Wimp_SetIconState",,q% �&�seticonbaccol(coords,7,pencolour) �� �: ���readcoords �=q%!0=coords:q%!4=0:ș "Wimp_GetIconState",,q%:xicon=q%!28 �=q%!0=coords:q%!4=1:ș "Wimp_GetIconState",,q%:yicon=q%!28 �?q%!0=coords:q%!4=2:ș "Wimp_GetIconState",,q%:angicon=q%!28 �?q%!0=coords:q%!4=6:ș "Wimp_GetIconState",,q%:penicon=q%!28 �?q%!0=coords:q%!4=7:ș "Wimp_GetIconState",,q%:colicon=q%!28 Aq%!0=program:q%!4=16:ș "Wimp_GetIconState",,q%:posicon=q%!28 � : $��openmainwindow .<workblock%!0=coords:ș "Wimp_GetWindowState",,workblock% 8Aheight%=workblock%!16-workblock%!8:workblock%!16=q%!8+height% B;workblock%!4=q%!4:workblock%!8=q%!8:workblock%!12=q%!12 Lworkblock%!16=q%!8+height% V8workblock%!28=q%!28:ș "Wimp_OpenWindow",,workblock% `)q%!28=coords:ș "Wimp_OpenWindow",,q% j� t: ~��frontmainwin �6q%!0=mainwin:ș "Wimp_GetWindowState",,q%:q%!28=-1 �(q%!4=2:q%!8=176:q%!12=1238:q%!16=980 ��openmainwindow:� �: ���templatevars �Finfo=han%!0:save=han%!4:coords=han%!8:command=han%!12:help=han%!16 �program=han%!20 �� �: ���variables �?� q% &300,menublock% &200,workblock% &700,iconsblock% &1200 �;� han% 80,coltrans% 16,scalefac% 16,spritearea% 81*1024 Fprogname$="LoGo":tempname$="info,save,coords,command,help,program" 6icpnt=iconsblock%:� menuitem$(30),commandicon%(12) -spritename$="default":iwd%=1280:ihe%=1024 (comstring$="":savhandle%=0:status%=0 (� icontext 20,iconsprite 20 2� <: F��logovars P)homexpos=640:homeypos=512:homeangle=0 ZAturtlexpos=homexpos:turtleypos=homeypos:turtleangle=homeangle dpen=�:pencolour=13 nJoldturtlex=turtlexpos:oldturtley=turtleypos:oldturtleangle=turtleangle x#to%=0:� tosub$(256),tosub%(256) �7� substack%(200),loopstack%(200):stack%=0:lstack%=0 �(� logofile% 20*1024,commandline% 200 �0� drawfile% 60*1024:� a 60k drawfile maximum �� cols% 80 �� �: �5��redrawsprite(minx%,miny%,maxx%,maxy%,scx%,scy%) �Nș "Wimp_ReadPixTrans",&100,spritearea%,spritename$,,,,scalefac%,coltrans% �xo%=minx%-scx%:x%=xo% �yo%=maxy%-scy%:y%=yo%-ihe% �Lș "OS_SpriteOp",308,spritearea%,spritename$,x%,y%,0,scalefac%,coltrans% �>�drawturtle(x%+turtlexpos,y%+turtleypos,11,40,turtleangle) �� : ��createspritearea *spritearea%!0=81*1024:spritearea%!8=16 "$ș "OS_SpriteOp",265,spritearea% ,� 6: @��inscommand(command$) J�logocommand(command$) T � �turtlemoved=� �moveturtle ^Joldturtlex=turtlexpos:oldturtley=turtleypos:oldturtleangle=turtleangle h�updatecoords r� |: �.��createsprite(name$,width%,height%,mode%) �Eș "OS_SpriteOp",271,spritearea%,name$,0,width%/2,height%/4,mode% �� �: ���readcommandicons �'workblock%!0=command:� icon%=0 � 11 �9workblock%!4=icon%:ș "Wimp_GetIconState",,workblock% �)commandicon%(icon%)=workblock%!28:�:� �: ���scrollup �Fworkblock%!0=command:workblock%!4=0:workblock%!8=0:workblock%!12=0 �� icon%=1 � 5 �3$(commandicon%(icon%-1))=$(commandicon%(icon%)) ;workblock%!4=icon%-1:ș "Wimp_SetIconState",,workblock% � � icon%=7 � 11 &3$(commandicon%(icon%-1))=$(commandicon%(icon%)) 0;workblock%!4=icon%-1:ș "Wimp_SetIconState",,workblock% :� D� N: X��logoerror(message$) bș "Hourglass_Smash" l'� � -113 � 255,"You pressed ESCAPE" vE�seticontext(command,5,"Error"):�seticontext(command,11,message$) � �scrollup �$�seticontext(command,11,�30,�0)) �#�seticontext(command,5,"LoGo:") �*ș "Wimp_GetCaretPosition",,workblock% �`� workblock%!0=command � workblock%!4=11 ș "Wimp_SetCaretPosition",-1:�putcaret(command,11) �*� status%>1 status%=1:�programfinished �'� � -113 � 255,"You pressed ESCAPE" �endline%=� �� �: �)��drawturtle(x%,y%,col%,size%,angle%) �ș "Wimp_SetColour",col% �5� x%+(size%*�(�(angle%))),y%+(size%*�(�(angle%))) =� x%+(size%*�(�(angle%+135))),y%+(size%*�(�(angle%+135))) � 85,x%,y% =� x%+(size%*�(�(angle%-135))),y%+(size%*�(�(angle%-135))) 8� 85,x%+(size%*�(�(angle%))),y%+(size%*�(�(angle%))) *� x%,y% 4� >: H+� ------------------------------------- R+� | Save & Load Procedures | \+� ------------------------------------- f: p� �savename z*workblock%!0=savhandle%:workblock%!4=2 �8� savhandle%=-1 workblock%!0=program:workblock%!4=21 �&ș "Wimp_GetIconState",,workblock% �@A$="":A%=workblock%!28:�:A$=A$+�?A%:A%=A%+1:� ?A%=0 � ?A%=13 � =A$+�0 �: ���savename(A$) �*workblock%!0=savhandle%:workblock%!4=2 �8� savhandle%=-1 workblock%!0=program:workblock%!4=21 �&ș "Wimp_GetIconState",,workblock% �$(workblock%!28)=A$ �� �: ���savedrag 0q%!0=savhandle%:� savhandle%=-1 q%!0=program ș "Wimp_GetWindowState",,q% "xo%=q%!4-q%!20:yo%=q%!16-q%!24 $$� savhandle%=-1 q%!4=23 � q%!4=3 .ș "Wimp_GetIconState",,q% 8Hq%!0=savhandle%:q%!4=5:q%!8=xo%+q%!8:q%!12=yo%+q%!12:q%!16=xo%+q%!16 BCq%!20=yo%+q%!20:q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF Lș "Wimp_DragBox",,q% V� `: j��dragfinished t ș "Wimp_GetPointerInfo",,q% ~1q%!20=q%!12:q%!24=q%!16:q%!28=q%!0:q%!32=q%!4 �#� savhandle%=save q%!36=81*1024 �!� savhandle%=program q%!36=10 �� savhandle%=-1 q%!36=10 �q%!0=256:q%!12=0:q%!16=1 � � savhandle%=save q%!40=&FF9 �#� savhandle%=program q%!40=&AFF �� savhandle%=-1 q%!40=&FFF �$$(q%+44)=�getleafname(�savename) �+ș "Wimp_SendMessage",17,q%,q%!20,q%!24 �� �: �ݤgetleafname(A$) ȕ �A$,".") A$=�A$,�A$,".")+1) �:=A$+�0 : (��datasave 2#fullname$="":a%=0:b%=q%?(44+a%) <ȕ b%<>0 F3fullname$=fullname$+�(b%):a%=a%+1:b%=q%?(44+a%) P� Z,� savhandle%=save �savesprite(fullname$) d � savhandle%=program q%!36=0 n� savhandle%=-1 q%!36=0 xE� q%!36<>-1 � savhandle%<>-1 �seticontext(savhandle%,2,fullname$) �B� q%!36<>-1 � savhandle%=-1 �seticontext(program,21,fullname$) �Gq%!12=q%!8:q%!16=3:q%!0=256:ș "Wimp_SendMessage",18,q%,q%!20,q%!24 �C� savhandle%<>program � savhandle%<>-1 ș "Wimp_CreateMenu",,-1 �� �: ���saveok �A$=�savename �C� �A$,".")=0 � 1,"To save, drag the icon to a directory viewer" �%� savhandle%=save �savesprite(A$) �ș "Wimp_CreateMenu",,-1 �� �: ���savesprite(A$) )ș "OS_SpriteOp",268,spritearea%,A$:� : 8� -------------------------------------------------- "8� | Universal Functions & Procedure | ,8� -------------------------------------------------- 6: @'��seticonbaccol(window%,icon%,col%) JA$="&"+�~col%+"0000000" T>workblock%!0=window%:workblock%!4=icon%:workblock%!8=�(A$) ^>workblock%!12=&F0000000:ș "Wimp_SetIconState",,workblock% h� r: |'��seticonforcol(window%,icon%,col%) �A$="&0"+�~col%+"000000" �>workblock%!0=window%:workblock%!4=icon%:workblock%!8=�(A$) �>workblock%!12=&0F000000:ș "Wimp_SetIconState",,workblock% �� �: �ݤwindowopen(window%) �=workblock%!0=window%:ș "Wimp_GetWindowState",,workblock% �-flags%=workblock%!32:open%=flags% � 1<<16 �� open%>0 =� � =� �: �(��setbuttontype(window%,icon%,type%) �+workblock%!0=window%:workblock%!4=icon% �)workblock%!8=�("&0000"+�~type%+"000") >workblock%!12=&0000F000:ș "Wimp_SetIconState",,workblock% � : &!��unselectable(window%,icon%) 0#�seticonforcol(window%,icon%,2) :+workblock%!0=window%:workblock%!4=icon% D.workblock%!8=&400000:workblock%!12=&400000 N(ș "Wimp_SetIconState",,workblock%:� X: b��eoricon(window%,icon%) l2q%!0=window%:q%!4=icon%:q%!8=1<<21:q%!12=1<<21 v ș "Wimp_SetIconState",,q%:� �: ���unicon(window%,icon%) �.q%!0=window%:q%!4=icon%:q%!8=0:q%!12=1<<21 � ș "Wimp_SetIconState",,q%:� �: �ݤiconeor(window%,icon%) �6q%!0=window%:q%!4=icon%:ș "Wimp_GetIconState",,q% �!� (q%!24 � 1<<21)>0 � =� � =� �: ���selectable(window%,icon%) �#�seticonforcol(window%,icon%,7) �+workblock%!0=window%:workblock%!4=icon% �(workblock%!8=0:workblock%!12=&400000 (ș "Wimp_SetIconState",,workblock%:� : !ݤreadicontext(window%,icon%) +workblock%!0=window%:workblock%!4=icon% *&ș "Wimp_GetIconState",,workblock% 4=$(workblock%!28) >: H-��seticontext(window%,icon%,text$):� len% R+workblock%!0=window%:workblock%!4=icon% \&ș "Wimp_GetIconState",,workblock% flen%=workblock%!36 pB$(workblock%!28)=�text$,len%-1):workblock%!8=0:workblock%!12=0 z&ș "Wimp_SetIconState",,workblock% �� �: ���openwindow(handle%) �=workblock%!0=handle%:ș "Wimp_GetWindowState",,workblock% �$ș "Wimp_OpenWindow",,workblock% �� �: �.��setwindowtitletext(handle%,text$):� len% �<workblock%!0=handle%:ș "Wimp_GetWindowInfo",,workblock% �+len%=workblock%!84:text$=�text$,len%-1) �!$(workblock%!76)=text$+�(0):� �: ���opentofront(handle%) workblock%!0=handle% 8ș "Wimp_GetWindowInfo",,workblock%:workblock%!28=-1 $ș "Wimp_OpenWindow",,workblock% $� .: 8��putcaret(window%,icon%) B3ș "Wimp_SetCaretPosition",window%,icon%,,,-1,0 L� V: `��disowncaret j#ș "Wimp_SetCaretPosition",-1:� t: ~%ݤmenu(text$,width%,height%,gap%) �$P%=�text$,11)+�0:P%+=12 � [OPT 0 �?EQUB 7:EQUB 2:EQUB 7:EQUB 0 ;Four definable menu colours �<EQUD width%*16 ;Width of menu (OS Units) �AEQUD height% ;Height of one item (OS Units) �IEQUD gap% ;Vertical gap between items (OS Units) �]:=0 �: �1ݤmenuitem(text$,flags%,submenu%,icon%,last%) �!� last%=� flags%=flags% � &80 � [OPT 0 �.EQUD flags% ;Menu flags @EQUD submenu% ;Submenu pointer (-1 if none) OEQUD icon% ;Menu item icon flags (as for a normal icon) !]:$P%=�text$,11)+�0:P%+=12:=0 : (ݤpar(sep$) 2+i1%=i%+1:i%=�menustring$+sep$,sep$,i1%) <=�menustring$,i1%,i%-i1%) F: P)ݤcrmu(menustring$,mutitle$,address%) Z4number%=-1:i%=0:width%=�(mutitle$)-2:P%=address% d-�:number%+=1:menuitem$(number%)=�par(",") n&� menuitem$(number%)="":number%-=1 x([OPT 0:�menu(mutitle$,width%,40,0):] �� menuitem%=0 � number% �(itemflags%=�menuitemflags(menuitem%) �iconflags%=&07000021 �'submenu%=�submenupointer(menuitem%) �/� menuitem%=number% lastopt%=� � lastopt%=� �C� �(menuitem$(menuitem%))>width% width%=�(menuitem$(menuitem%)) � [OPT 0 �K�menuitem(menuitem$(menuitem%),itemflags%,submenu%,iconflags%,lastopt%) �I]:�:width%+=1:addr%=P%:P%=address%:[OPT 0:�menu(mutitle$,width%,40,0) �]:=addr% �: �ݤsubmenupointer(A%) �+A$=menuitem$(A%):i%=�A$,">"):� i%=0 =-1 ,B$=�A$,�(A$)-i%):menuitem$(A%)=�A$,i%-1) #� �B$,1)=">" � =�(�B$,�(B$)-1)) =�(B$) ": ,ݤmenuitemflags(A%) 6A$=menuitem$(A%):flags%=0 @.� �A$,"�")>0 A$=�outchar(A$,"�"):flags%+=1 J.� �A$,"-")>0 A$=�outchar(A$,"-"):flags%+=2 Tmenuitem$(A%)=A$:=flags% ^: hݤoutchar(C$,D$) r'i%=�C$,D$):=�C$,i%-1)+�C$,�(C$)-i%) |: �Dݤtemplate(temp$,filename$,addr%,size%,handleaddr%):� number%,i% �%ș "Wimp_OpenTemplate",,filename$ � number%=-1:i%=0:size%+=addr% �2�:number%+=1:name$=�partemp(","):� name$<>"" � �Eș "Wimp_LoadTemplate",,workblock%,addr%,size%,-1,name$ � ,,addr% �Cș "Wimp_CreateWindow",,workblock% � !(handleaddr%+(4*number%)) �/�:� name$="":ș "Wimp_CloseTemplate":=addr% �: �ݤpartemp(sep$) �%i1%=i%+1:i%=�temp$+sep$,sep$,i1%) �=�temp$,i1%,i%-i1%) �: �Dݤmakeicon(window%,minx%,miny%,maxx%,maxy%,flags%,sprite%,text%) >workblock%!0=window%:workblock%!4=minx%:workblock%!8=miny% +workblock%!12=maxx%:workblock%!16=maxy% Bworkblock%!20=flags%:workblock%!24=text%:workblock%!28=sprite% &workblock%!32=20 0?ș "Wimp_CreateIcon",,workblock% � iconhandle%:=iconhandle% :: D��error(name$) N-� �=26 �logoerror("Bad logo parameter"):� X workblock%!0=�:� clicked_on% b=$(workblock%+4)=�$+" (internal error code "+�(�)+")"+�(0) l� �=255 $(workblock%+4)=�$ v;ș "Wimp_ReportError",workblock%,3,name$ � ,clicked_on% �� clicked_on%=2 quit%=� �� �: �&ݤwimpinit(knownversion,taskname$) �Gș "Wimp_Initialise",200*knownversion,&4B534154,taskname$ � version �=version �: �Aݤcrwin(x%,y%,w%,h%,flags%,bcol%,xe%,ye%,waf%,title%,length%) �<$workblock%=�92,�(0)):� Fill the window block with zeros �Jworkblock%!0=x%:workblock%!4=y%:workblock%!8=x%+w%:workblock%!12=y%+h% �)workblock%!24=-1:workblock%!28=flags% �Gworkblock%?32=7:workblock%?33=2:workblock%?34=7:workblock%?35=bcol% �4workblock%?36=3:workblock%?37=1:workblock%?38=12 (workblock%!44=-ye%:workblock%!48=xe% -workblock%!56=&13D:workblock%!60=waf%<<12 ?workblock%!72=title%:workblock%!76=-1:workblock%!80=length% 0ș "Wimp_CreateWindow",,workblock% � handle% *=handle% 4: >+��info(name$,purpose$,author$,version$) H�seticontext(info,12,name$) R"�seticontext(info,13,purpose$) \!�seticontext(info,14,author$) f"�seticontext(info,15,version$) p� z: �8� -------------------------------------------------- �8� | Logo Interpreter Procedures | �8� -------------------------------------------------- �: ���logocommand(command$) �command$=�nospcs(command$) �command$=�letcase(command$) �%command$=�expandcommand(command$) �D� �command$,7)="FORWARD" �forward(�(�command$,�(command$)-7))) �A� �command$,4)="BACK" �back(�(�command$,�(command$)-4))) �A� �command$,4)="LEFT" �left(�(�command$,�(command$)-4))) �B� �command$,5)="RIGHT" �right(�(�command$,�(command$)-5))) �B� �command$,5)="ANGLE" �angle(�(�command$,�(command$)-5))) A� �command$,4)="HELP" �helpcom(�command$,�(command$)-4)) $� �command$,4)="HOME" �home %� �command$,5)="CLEAR" �clear $%� �command$,5)="PENUP" �penup .'� �command$,7)="PENDOWN" �pendown 8F� �command$,9)="PENCOLOUR" �pencolour(�(�command$,�(command$)-9))) B8� �command$,3)="RUN" � status%=1:�startprogram L'� �command$,7)="RESTART" �restart V'� �command$,7)="SETHOME" �sethome `� j: t��loadprogram(filename$) ~9ș "OS_File",12,filename$,logofile%,0 � ,,,,filesize% �"�tosearch(logofile%,filesize%) ��opentofront(program) �)�seticontext(program,13,�(filesize%)) �!�seticontext(program,16,"0%") �%�seticontext(program,8,filename$) �C�seticontext(program,10,"Run"):�seticontext(program,12,"Abort") �5�selectable(program,10):�unselectable(program,12) �u�seticontext(command,5,"Info:"):�seticontext(command,11,"Program loaded. "+�(to%)+" routines. Type RUN to begin") � �scrollup �?�seticontext(command,5,"LoGo:"):�seticontext(command,11,"") �status%=1:� �: ��startprogram 4end%=�:�setbuttontype(command,11,0):�disowncaret point%=logofile%:status%=2 !�seticontext(program,16,"0%") (3�selectable(program,10):�selectable(program,12) 2E�seticontext(program,10,"Pause"):�seticontext(program,12,"Abort") <6�unselectable(program,2):�unselectable(program,21) F6�unselectable(program,3):�unselectable(program,22) P6�unselectable(program,7):�unselectable(program,23) Z&�seticontext(-2,iconbar,"Running") d�setupdrawfile n� x: ���runprogram �2perscent%=(((point%-logofile%)/filesize%)*100) �A$posicon=�(perscent%)+"%":q%!0=program:q%!4=16:q%!8=0:q%!12=0 �ș "Wimp_SetIconState",,q% �4A$=�comstring(point%):point%=�getcommand(point%) �"Error$="":comnum%=�progcom(A$) �,� comnum%<15 � Error$="" �inscommand(A$) �8� Error$<>"" �logoerror(Error$):end%=� �;� point%>=logofile%+filesize% end%=� �,� end%=� �programfinished �� �: ���programfinished end%=�:status%=1 !�setbuttontype(command,11,15) 0� �windowopen(command) �putcaret(command,11) "2�selectable(program,2):�selectable(program,21) ,2�selectable(program,3):�selectable(program,22) 62�selectable(program,7):�selectable(program,23) @5�selectable(program,10):�unselectable(program,12) JC�seticontext(program,10,"RUN"):�seticontext(program,12,"Abort") T&�seticontext(-2,iconbar,"Waiting") ^�savedrawfile h� �iconeor(program,7) � r1�selectable(program,3):�selectable(program,2) |� �5�unselectable(program,3):�unselectable(program,2) �� �� �: ���pauseprogram �� point%=logofile% � �7end%=�:status%=3:�seticontext(program,12,"Restart") �C�unselectable(program,10):�seticontext(-2,iconbar," Paused "):� �: ���unpauseprogram �5end%=�:status%=2:�seticontext(program,12,"Abort") �@�selectable(program,10):�seticontext(-2,iconbar,"Running"):� �: :� ---------------------------------------------------- :� | Procedures for dealing with typed commands | :� ---------------------------------------------------- &: 0��commandline(A$) :� status%<>1 � end%=� � D!lstack%=0:stack%=0:endline%=� N?$commandline%=A$+�(0):commandlen%=�(A$):point%=commandline% Xș "Hourglass_On" b6�:A$=�comstring(point%):point%=�getcommand(point%) l"Error$="":comnum%=�progcom(A$) v'� � -113 � 255,"You pressed ESCAPE" �,� comnum%<15 � Error$="" �inscommand(A$) �<� Error$<>"" �logoerror(Error$):endline%=� �?� point%>=commandline%+commandlen% endline%=� �'� � -113 � 255,"You pressed ESCAPE" �� endline%=� � end%=� �ș "Hourglass_Off":� �: �ݤgetcommand(addr%) �<�:A%=?addr%:addr%+=1:� A%<32 � A%=127 � A%=�(":"):=addr% �: �ݤcomstring(addr%) �A$="":� �@A%=?addr%:addr%+=1:� A%>31 � A%<>127 � A%<> �(":") A$+=�(A%) $� A%<32 � A%=127 � A%=�(":"):=A$ : � �normcmnd(A$) n%=1:N%=0:� �D\\:� *)� F$,C%:� �abbrev(A$,F$,C%)>0 � N%=n% 4n%+=1:� F$="EEND" >� N%=n%-1 N%=0 H=N% R: \%� FORWARD,1,BACK,1,LEFT,1,RIGHT,1 f� ANGLE,1,CLEAR,2,HOME,2 p#� PENUP,4,PENDOWN,4,PENCOLOUR,4 z � SETHOME,4,RESTART,3,HELP,1 � � RUN,2,TO,0,ENDTO,0,[,0,],0 �� FINISH,3,/,0,EEND,0 �: �ݤexpandcommand(A$) �N%=�normcmnd(A$):� N%=0 =A$ �� �D\\:� X%=1 � N% �.� com$,abb%:�:abbre%=�abbrev(A$,com$,abb%) �=com$+�A$,�(A$)-abbre%) �: � � �letcase(A$):� n%,B$,A%,C$ �� A$="" ="" �� n%=1 � �(A$) �A%=�(�A$,n%,1)) � A%>96 � A%<123 � A%=A%-32 .B$=�A$,n%-1):C$=�A$,�(A$)-n%):A$=B$+�A%+C$ �:=A$ $: .� �nospcs(A$) 8!L%=1:R%=�(A$):N%=-1:�:N%=N%+1 B� �A$,N%,1)=" " L%=N%+1 L!� N%=�(A$) � �A$,N%+1,1)<>" " VN%=�(A$)+1:�:N%=N%-1 `� �A$,N%,1)=" " R%=N%-L% j� �A$,N%,1)<>" " t=�A$,L%,R%) ~: �� �alpha(A$) �N%=�:� n%=1 � �(A$) �,� �(�A$,n%,1))<65 � �(�A$,n%,1))>90 N%=� � �:=N% �: �ݤabbrev(C$,B$,C%) �� �C$,�(B$))=B$ =�(B$) �E%=0:� D%=C% � (�(B$)-1) �'� �C$,D%+1)=(�B$,D%)+".") � E%=D%+1 � �:=E% �: �� �params(A%,A$):� n%,B$,C% � �D\\:� n%=1 � A% "� B$,C%:�:A%=�abbrev(A$,B$,C%) !A$=�A$,�(A$)-A%):=�nospcs(A$) : (ݤprogcom(com$) 2Dcom$=�nospcs(com$):com$=�letcase(com$):com$=�expandcommand(com$) <0comnum%=�normcmnd(com$):subnum%=�subno(com$) FB$=�params(comnum%,com$) P6� com$="" =255 Z1� subnum%>-1 � comnum%=0 �tosub(subnum%):=255 d6� comnum%=0 Error$="No such subroutine":=255 n:� comnum%<15 =comnum% x^� (comnum%-14) �comment,�endto,�newloop(�(B$)),�endloop,�programfinished,�comment:=comnum% �: �+� ------------------------------------- �+� | Loop & To Subroutine Handlers | �+� ------------------------------------- �: ���newloop(number%) �Gloopstack%(lstack%)=point%:loopstack%(lstack%+1)=number%:lstack%+=2 �� �: � ��endloop �!number%=loopstack%(lstack%-1) �� number%-1>0 � �9point%=loopstack%(lstack%-2):loopstack%(lstack%-1)-=1 � lstack%-=2 �closepath "�:� ,: 6��tosub(subnum%) @=substack%(stack%)=point%:stack%+=1:point%=tosub%(subnum%) J� T: ^ݤsubno(name$) hMnumber%=-1:� num%=0 � to%-1:� tosub$(num%)=name$ � name$<>"" number%=num% r�:=number% |: ���tosearch(address%,size%) �� X%=0 � 99:tosub$(X%)="":� �ș "Hourglass_On" �,point%=address%:stack%=0:lstack%=0:to%=0 �6�:A$=�comstring(point%):point%=�getcommand(point%) �"A$=�nospcs(A$):A$=�letcase(A$) �%� �A$,2)="TO" �to(�params(15,A$)) �� point%>=address%+size% �ș "Hourglass_Off" �� �: ���to(B$) �8� to%=100 Error$="Too many TO subroutines defined":� � �alpha(B$) � 5� �subno(B$)>-1 � no%=�subno(B$) � no%=to%:to%+=1 'tosub$(no%)=B$:tosub%(no%)=point%:� &: 0��endto:to$="" :0� stack%=0 Error$="Not in a TO subroutine":� D(stack%-=1:point%=substack%(stack%):� N: X��comment:� b: l8� -------------------------------------------------- v8� | Turtle Movement Procedures | �8� -------------------------------------------------- �: ���forward(distance) �*turtlexpos+=distance*�(�(turtleangle)) �*turtleypos+=distance*�(�(turtleangle)) ��messagecode(1,distance) � � pen=� � �>ș "OS_SpriteOp",316,spritearea%,spritename$ � R0,R1,R2,R3 �A� 0,pencolour:� oldturtlex,oldturtley:� turtlexpos,turtleypos � ș "OS_SpriteOp",R0,R1,R2,R3 �D�drawline(oldturtlex,oldturtley,turtlexpos,turtleypos,pencolour) �� �: !��back(distance) !*turtlexpos-=distance*�(�(turtleangle)) !*turtleypos-=distance*�(�(turtleangle)) ! �messagecode(2,distance) !* � pen=� � !4>ș "OS_SpriteOp",316,spritearea%,spritename$ � R0,R1,R2,R3 !>A� 0,pencolour:� oldturtlex,oldturtley:� turtlexpos,turtleypos !H ș "OS_SpriteOp",R0,R1,R2,R3 !RD�drawline(oldturtlex,oldturtley,turtlexpos,turtleypos,pencolour) !\� !f: !p��left(degrees) !z�messagecode(3,degrees) !�turtleangle-=degrees !�� !�: !���right(degrees) !��messagecode(4,degrees) !�turtleangle+=degrees !�� !�: !���angle(angle) !�1ang%=turtleangle � 360:� ang%<0 ang%=360+ang% !�,angl%=angle � 360:� ang%<0 ang%=360+ang% !�W� ang%>angl% left%=ang%-angl%:right%=360-left% � right%=ang%-angl%:left%=360-right% !�0� right%<0 left%=360+right%:right%=360-left% "0� left%<0 right%=360+right%:left%=360-right% "A� right%<left% �messagecode(4,right%) � �messagecode(3,left%) "turtleangle=angle "$� ".: "8��penup "B�messagecode(5,0) "Lpen=�:�closepath "V� "`: "j ��pendown "t�messagecode(6,0) "~ pen=� "�� "�: "���pencolour(colour) "��messagecode(7,colour) "�pencolour=colour:�closepath "�� "�: "���clear "�>ș "OS_SpriteOp",316,spritearea%,spritename$ � R0,R1,R2,R3 "�� 0,0:� 0,0:� 97,iwd%,ihe% "� ș "OS_SpriteOp",R0,R1,R2,R3 "�$�updateturtle(0,-ihe%,iwd%,ihe%) # � # : #��moveto(xcoord,ycoord) #=opposite=(turtlexpos-xcoord):adjacent=(turtleypos-ycoord) #(8� adjacent=0 angle=0 � angle=�(�(opposite/adjacent)) #2(� opposite<0 � adjacent<0 angle-=180 #<(� opposite>0 � adjacent<0 angle+=180 #F7distance=�((opposite*opposite)+(adjacent*adjacent)) #P!�angle(angle):�back(distance) #Z� #d: #n ��home #x� pen=� �penup:T%=1 � T%=0 #�7�penup:�moveto(homexpos,homeypos):�angle(homeangle) #�� T%=1 �pendown #�� #�: #� ��sethome #�1ang%=turtleangle � 360:� ang%<0 ang%=360+ang% #�Ahomexpos=turtlexpos:homeypos=turtleypos:homeangle=turtleangle #�#�seticontext(command,5,"Info:") #�^�seticontext(command,11,"Home set to "+�(�(homexpos))+","+�(�(homeypos))+","+�(ang%)+"�.") #�I�scrollup:�seticontext(command,5,"LoGo:"):�seticontext(command,11,"") #�� #�: #� ��restart $)homexpos=640:homeypos=512:homeangle=0 $�home:�clear $#�seticontext(command,5,"Info:") $":�seticontext(command,11,"Logo reset at "+�$):�scrollup $,?�seticontext(command,5,"LoGo:"):�seticontext(command,11,"") $6� $@: $J��helpcom(com$) $T*com$=�nospcs(com$):com$=�letcase(com$) $^com$=�expandcommand(com$) $h� com$="" com$="HELP" $r� �dfE:N%=0:� X%=1 � 24 $|I� A$,B$,C$,D$:� A$=com$ � A$<>"" syntax$=B$:abbrev$=C$:purp$=D$:N%=X% $�+�:� N%=0 syntax$="":abbrev$="":purp$="" $��seticontext(command,5,"") $�8�seticontext(command,11,"Syntax:"+syntax$):�scrollup $��seticontext(command,5,"") $�,�seticontext(command,11,purp$):�scrollup $�?�seticontext(command,5,"LoGo:"):�seticontext(command,11,"") $�� $�: $�,� -------------------------------------- $�,� | Message passing routines | $�,� -------------------------------------- $�: $�"��messagecode(code%,parameter) %2q%!0=100:q%!4=0:q%!8=0:q%!12=0:q%!16=&4C4F474F %*q%!20=code%:$(q%+24)=�(parameter)+�(0) %!ș "Wimp_SendMessage",17,q%,0 %&� %0: %:,� -------------------------------------- %D,� | Drawfile generation routine | %N,� -------------------------------------- %X: %b��setupdrawfile %ldrpoint%=drawfile% %v $drpoint%="Draw":drpoint%+=4 %�:!drpoint%=201:drpoint%+=4:� Major version stamp %�:!drpoint%=0:drpoint%+=4:� Minor version stamp %�/$drpoint%=�"Logo"+�12," "),12):drpoint%+=12 %�-drpoint%!0=�xdraw(0):drpoint%!4=�ydraw(0) %�Adrpoint%!8=�xdraw(1280):drpoint%!12=�ydraw(1024):drpoint%+=16 %�'path%=�:drawfl%=�iconeor(program,7) %� ș "Wimp_ReadPalette",,cols% %�� %�: %�ݤxdraw(x):=�(x*256) %�ݤydraw(y):=�(y*256) %�ݤcdraw(c%):c%=c% � 16 %�.� c%>=0 � =!(cols%+c%*4) � &FFFFFF00 � =-1 %�: & ��openpath(x1,y1,x2,y2,col%) &� path%=� �closepath &?x1%=�xdraw(x1):y1%=�ydraw(y1):x2%=�xdraw(x2):y2%=�ydraw(y2) & objaddr%=drpoint%:path%=� &*<bx%=x1%:by%=y1%:bx1%=x2%:by1%=y2%:� bx%>bx1% Ȕ bx%,bx1% &4� by%>by1% Ȕ by%,by1% &>8drpoint%=�objecthead(drpoint%,2,0,bx%,by%,bx1%,by1%) &H8!drpoint%=-1:drpoint%+=4:� Fill colour &R7!drpoint%=�cdraw(col%):drpoint%+=4:� Line colour &\@!drpoint%=0:drpoint%+=4:� Line width (thin=0) &fC!drpoint%=&42:drpoint%+=4:� Draw path object flags &p%drpoint%=�tag(drpoint%,2,x1%,y1%) &z%drpoint%=�tag(drpoint%,8,x2%,y2%) &�� &�: &�ݤtag(addr%,tag%,x%,y%) &�;!addr%=tag%:addr%+=4:� Tag identifier &�� tag%=0 =addr% &�9!addr%=x%:addr%+=4:� X draw coord &�9!addr%=y%:addr%+=4:� Y draw coord &� =addr% &�: &�3ݤobjecthead(addr%,type%,size%,x1%,y1%,x2%,y2%) &�8!addr%=type%:addr%+=4:� Object type &�@!addr%=size%:addr%+=4:� Object size (bytes) &�E!addr%=x1%:addr%+=4:� X low bounding box coord 'E!addr%=y1%:addr%+=4:� Y low bounding box coord 'F!addr%=x2%:addr%+=4:� X high bounding box coord 'F!addr%=y2%:addr%+=4:� Y high bounding box coord '$ =addr% '.: '8��savedrawfile 'B� drawfl%=� � 'L�closepath 'V&filename$=�readicontext(program,2) '`6ș "OS_File",10,filename$,&AFF,,drawfile%,drpoint% 'j� 't: '~��addtopath(x1,y1) '�3drpoint%=�tag(drpoint%,8,�xdraw(x1),�ydraw(y1)) '�!bx%=�xdraw(x1):by%=�ydraw(y1) '�#� bx%<objaddr%!8 objaddr%!8=bx% '�%� bx%>objaddr%!16 objaddr%!16=bx% '�%� by%<objaddr%!12 objaddr%!12=by% '�%� by%>objaddr%!20 objaddr%!20=by% '�� '�: '���closepath '�� drawfl%=� � '�� path%=� � '�)path%=�:drpoint%=�tag(drpoint%,0,0,0) ( "objaddr%!4=drpoint%-objaddr%:� ( : ( ��drawline(x1,y1,x2,y2,col%) (� drawfl%=� � ((� path%=� � (2�openpath(x1,y1,x2,y2,col%) (<� (F�addtopath(x2,y2) (P�:� (Z: (d��drawicon (n� �iconeor(program,7) � (x�unicon(program,7) (�5�unselectable(program,3):�unselectable(program,2) (�� (��eoricon(program,7) (�1�selectable(program,3):�selectable(program,2) (��:� (�� �
00000000 0d 00 0a 11 f4 20 3e 20 21 52 75 6e 49 6d 61 67 |..... > !RunImag| 00000010 65 0d 00 14 05 3a 0d 00 1e 38 f4 20 2a 2a 2a 2a |e....:...8. ****| 00000020 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00000040 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 00 |**************..| 00000050 28 38 f4 20 2a 20 20 20 20 20 20 20 20 20 20 20 |(8. * | 00000060 20 20 20 20 20 2d 2d 20 20 20 4c 6f 47 6f 20 20 | -- LoGo | 00000070 20 20 2d 2d 20 20 20 20 20 20 20 20 20 20 20 20 | -- | 00000080 20 20 20 20 20 2a 0d 00 32 38 f4 20 2a 20 20 20 | *..28. * | 00000090 20 20 20 20 20 53 69 6d 70 6c 65 20 54 75 72 74 | Simple Turt| 000000a0 6c 65 20 47 72 61 70 68 69 63 73 20 47 65 6e 65 |le Graphics Gene| 000000b0 72 61 74 6f 72 20 20 20 20 20 20 20 20 2a 0d 00 |rator *..| 000000c0 3c 38 f4 20 2a 20 20 20 20 20 20 20 42 79 20 44 |<8. * By D| 000000d0 75 6e 63 61 6e 20 46 2e 20 4d 63 50 68 65 72 73 |uncan F. McPhers| 000000e0 6f 6e 20 56 65 72 73 69 6f 6e 20 31 2e 30 20 20 |on Version 1.0 | 000000f0 20 20 20 20 20 2a 0d 00 46 38 f4 20 2a 20 20 20 | *..F8. * | 00000100 20 20 20 20 28 63 29 20 41 72 63 68 69 6d 65 64 | (c) Archimed| 00000110 65 73 20 57 6f 72 6c 64 20 31 39 39 32 20 20 20 |es World 1992 | 00000120 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0d 00 | *..| 00000130 50 38 f4 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |P8. ************| 00000140 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00000160 2a 2a 2a 2a 2a 2a 0d 00 5a 05 3a 0d 00 64 2c ee |******..Z.:..d,.| 00000170 20 85 20 ef 34 3a f1 8a 30 2c 30 29 3b f6 24 3b | . .4:..0,0);.$;| 00000180 22 20 61 74 20 6c 69 6e 65 20 22 3b 9e 3b 22 20 |" at line ";.;" | 00000190 20 20 20 20 22 3a e0 0d 00 6e 2a f2 76 61 72 69 | ":...n*.vari| 000001a0 61 62 6c 65 73 3a f2 63 72 65 61 74 65 73 70 72 |ables:.createspr| 000001b0 69 74 65 61 72 65 61 3a f2 6c 6f 67 6f 76 61 72 |itearea:.logovar| 000001c0 73 0d 00 78 25 76 65 72 73 69 6f 6e 3d a4 77 69 |s..x%version=.wi| 000001d0 6d 70 69 6e 69 74 28 32 2e 30 30 2c 70 72 6f 67 |mpinit(2.00,prog| 000001e0 6e 61 6d 65 24 29 0d 00 82 31 24 69 63 6f 6e 73 |name$)...1$icons| 000001f0 70 72 69 74 65 3d 22 53 69 63 6f 6e 62 61 72 22 |prite="Siconbar"| 00000200 3a 24 69 63 6f 6e 74 65 78 74 3d 22 57 61 69 74 |:$icontext="Wait| 00000210 69 6e 67 22 2b bd 30 0d 00 8c 44 69 63 6f 6e 62 |ing"+.0...Diconb| 00000220 61 72 3d a4 6d 61 6b 65 69 63 6f 6e 28 2d 31 2c |ar=.makeicon(-1,| 00000230 30 2c 2d 31 36 2c 31 32 38 2c 38 34 2c 26 31 37 |0,-16,128,84,&17| 00000240 30 30 33 31 30 42 2c 69 63 6f 6e 73 70 72 69 74 |00310B,iconsprit| 00000250 65 2c 69 63 6f 6e 74 65 78 74 29 0d 00 96 4f 69 |e,icontext)...Oi| 00000260 63 70 6e 74 3d a4 74 65 6d 70 6c 61 74 65 28 74 |cpnt=.template(t| 00000270 65 6d 70 6e 61 6d 65 24 2c 22 3c 22 2b 70 72 6f |empname$,"<"+pro| 00000280 67 6e 61 6d 65 24 2b 22 24 44 69 72 3e 2e 54 65 |gname$+"$Dir>.Te| 00000290 6d 70 6c 61 74 65 73 22 2c 69 63 70 6e 74 2c 26 |mplates",icpnt,&| 000002a0 31 32 30 30 2c 68 61 6e 25 29 0d 00 a0 4d 6d 61 |1200,han%)...Mma| 000002b0 69 6e 77 69 6e 3d a4 63 72 77 69 6e 28 32 2c 31 |inwin=.crwin(2,1| 000002c0 37 36 2c 31 32 33 38 2c 39 38 30 2c 26 46 46 30 |76,1238,980,&FF0| 000002d0 30 30 30 30 32 2c 31 2c 69 77 64 25 2c 69 68 65 |00002,1,iwd%,ihe| 000002e0 25 2c 33 2c 69 63 70 6e 74 2c 34 30 29 3a 69 63 |%,3,icpnt,40):ic| 000002f0 70 6e 74 2b 3d 34 30 0d 00 aa 2a f2 73 65 74 77 |pnt+=40...*.setw| 00000300 69 6e 64 6f 77 74 69 74 6c 65 74 65 78 74 28 6d |indowtitletext(m| 00000310 61 69 6e 77 69 6e 2c 70 72 6f 67 6e 61 6d 65 24 |ainwin,progname$| 00000320 29 0d 00 b4 39 f2 74 65 6d 70 6c 61 74 65 76 61 |)...9.templateva| 00000330 72 73 3a f2 63 72 65 61 74 65 73 70 72 69 74 65 |rs:.createsprite| 00000340 28 73 70 72 69 74 65 6e 61 6d 65 24 2c 69 77 64 |(spritename$,iwd| 00000350 25 2c 69 68 65 25 2c 31 32 29 0d 00 be 4b f2 69 |%,ihe%,12)...K.i| 00000360 6e 66 6f 28 70 72 6f 67 6e 61 6d 65 24 2c 22 44 |nfo(progname$,"D| 00000370 72 61 77 69 6e 67 20 50 69 63 74 75 72 65 73 22 |rawing Pictures"| 00000380 2c 22 44 75 6e 63 61 6e 20 46 2e 20 4d 63 50 68 |,"Duncan F. McPh| 00000390 65 72 73 6f 6e 22 2c 22 a9 20 31 39 39 32 20 56 |erson",". 1992 V| 000003a0 31 2e 30 22 29 0d 00 c8 2f f2 72 65 61 64 63 6f |1.0").../.readco| 000003b0 6f 72 64 73 3a f2 75 70 64 61 74 65 63 6f 6f 72 |ords:.updatecoor| 000003c0 64 73 3a f2 72 65 61 64 63 6f 6d 6d 61 6e 64 69 |ds:.readcommandi| 000003d0 63 6f 6e 73 0d 00 d2 33 73 74 61 74 75 73 25 3d |cons...3status%=| 000003e0 30 3a 64 72 61 77 66 6c 25 3d a3 3a f2 70 72 6f |0:drawfl%=.:.pro| 000003f0 67 72 61 6d 66 69 6e 69 73 68 65 64 3a f2 73 65 |gramfinished:.se| 00000400 74 75 70 68 65 6c 70 0d 00 dc 27 f2 75 6e 73 65 |tuphelp...'.unse| 00000410 6c 65 63 74 61 62 6c 65 28 70 72 6f 67 72 61 6d |lectable(program| 00000420 2c 31 30 29 3a f2 64 72 61 77 69 63 6f 6e 0d 00 |,10):.drawicon..| 00000430 e6 05 3a 0d 00 f0 12 71 75 69 74 25 3d a3 3a 65 |..:....quit%=.:e| 00000440 6e 64 25 3d b9 0d 00 fa 19 ee 20 85 20 f2 65 72 |nd%=...... . .er| 00000450 72 6f 72 28 70 72 6f 67 6e 61 6d 65 24 29 0d 01 |ror(progname$)..| 00000460 04 05 f5 0d 01 0e 17 e7 20 71 75 69 74 25 3c 3e |........ quit%<>| 00000470 b9 20 f2 70 6f 6c 6c 28 30 29 0d 01 18 0b fd 20 |. .poll(0)..... | 00000480 71 75 69 74 25 0d 01 22 19 c8 99 20 22 57 69 6d |quit%.."... "Wim| 00000490 70 5f 43 6c 6f 73 65 44 6f 77 6e 22 3a e0 0d 01 |p_CloseDown":...| 000004a0 2c 05 3a 0d 01 36 31 f4 20 2d 2d 2d 2d 2d 2d 2d |,.:..61. -------| 000004b0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000004d0 2d 2d 2d 2d 0d 01 40 31 f4 20 7c 20 20 20 57 69 |----..@1. | Wi| 000004e0 6d 70 20 50 6f 6c 6c 69 6e 67 20 72 65 6c 61 74 |mp Polling relat| 000004f0 65 64 20 70 72 6f 63 65 64 75 72 65 73 20 20 20 |ed procedures | 00000500 20 20 20 20 7c 0d 01 4a 31 f4 20 2d 2d 2d 2d 2d | |..J1. -----| 00000510 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00000530 2d 2d 2d 2d 2d 2d 0d 01 54 05 3a 0d 01 5e 11 dd |------..T.:..^..| 00000540 f2 70 6f 6c 6c 28 6d 61 73 6b 25 29 0d 01 68 29 |.poll(mask%)..h)| 00000550 c8 99 20 22 57 69 6d 70 5f 50 6f 6c 6c 22 2c 6d |.. "Wimp_Poll",m| 00000560 61 73 6b 25 2c 71 25 20 b8 20 72 65 61 73 6f 6e |ask%,q% . reason| 00000570 63 6f 64 65 25 0d 01 72 16 20 20 c8 8e 20 72 65 |code%..r. .. re| 00000580 61 73 6f 6e 63 6f 64 65 25 20 ca 0d 01 7c 1e 20 |asoncode% ...|. | 00000590 20 c9 20 30 3a e7 20 65 6e 64 25 3d a3 20 f2 72 | . 0:. end%=. .r| 000005a0 75 6e 70 72 6f 67 72 61 6d 0d 01 86 20 20 20 c9 |unprogram... .| 000005b0 20 31 3a f2 72 65 64 72 61 77 5f 77 69 6e 64 6f | 1:.redraw_windo| 000005c0 77 5f 72 65 71 75 65 73 74 0d 01 90 24 20 20 c9 |w_request...$ .| 000005d0 20 32 3a f2 6f 70 65 6e 5f 77 69 6e 64 6f 77 5f | 2:.open_window_| 000005e0 72 65 71 75 65 73 74 28 71 25 21 30 29 0d 01 9a |request(q%!0)...| 000005f0 25 20 20 c9 20 33 3a f2 63 6c 6f 73 65 5f 77 69 |% . 3:.close_wi| 00000600 6e 64 6f 77 5f 72 65 71 75 65 73 74 28 71 25 21 |ndow_request(q%!| 00000610 30 29 0d 01 a4 32 20 20 c9 20 36 3a f2 6d 6f 75 |0)...2 . 6:.mou| 00000620 73 65 5f 63 6c 69 63 6b 28 71 25 21 30 2c 71 25 |se_click(q%!0,q%| 00000630 21 34 2c 71 25 21 38 2c 71 25 21 31 32 2c 71 25 |!4,q%!8,q%!12,q%| 00000640 21 31 36 29 0d 01 ae 17 20 20 c9 20 37 3a f2 64 |!16).... . 7:.d| 00000650 72 61 67 66 69 6e 69 73 68 65 64 0d 01 b8 27 20 |ragfinished...' | 00000660 20 c9 20 38 3a f2 6b 65 79 5f 70 72 65 73 73 65 | . 8:.key_presse| 00000670 64 28 71 25 21 30 2c 71 25 21 34 2c 71 25 21 32 |d(q%!0,q%!4,q%!2| 00000680 34 29 0d 01 c2 2f 20 20 c9 20 39 3a f2 6d 65 6e |4).../ . 9:.men| 00000690 75 5f 73 65 6c 65 63 74 69 6f 6e 28 71 25 21 30 |u_selection(q%!0| 000006a0 2c 71 25 21 34 2c 71 25 21 38 2c 71 25 21 31 32 |,q%!4,q%!8,q%!12| 000006b0 29 0d 01 cc 16 20 20 c9 20 31 37 2c 31 38 3a f2 |).... . 17,18:.| 000006c0 72 65 63 69 65 76 65 0d 01 d6 07 20 20 cb 0d 01 |recieve.... ...| 000006d0 e0 05 e1 0d 01 ea 05 3a 0d 01 f4 1b dd f2 72 65 |.......:......re| 000006e0 64 72 61 77 5f 77 69 6e 64 6f 77 5f 72 65 71 75 |draw_window_requ| 000006f0 65 73 74 0d 01 fe 26 c8 99 20 22 57 69 6d 70 5f |est...&.. "Wimp_| 00000700 52 65 64 72 61 77 57 69 6e 64 6f 77 22 2c 2c 71 |RedrawWindow",,q| 00000710 25 20 b8 20 6d 6f 72 65 25 0d 02 08 0c c8 95 20 |% . more%...... | 00000720 6d 6f 72 65 25 0d 02 12 34 f2 72 65 64 72 61 77 |more%...4.redraw| 00000730 73 70 72 69 74 65 28 71 25 21 34 2c 71 25 21 38 |sprite(q%!4,q%!8| 00000740 2c 71 25 21 31 32 2c 71 25 21 31 36 2c 71 25 21 |,q%!12,q%!16,q%!| 00000750 32 30 2c 71 25 21 32 34 29 0d 02 1c 26 c8 99 20 |20,q%!24)...&.. | 00000760 22 57 69 6d 70 5f 47 65 74 52 65 63 74 61 6e 67 |"Wimp_GetRectang| 00000770 6c 65 22 2c 2c 71 25 20 b8 20 6d 6f 72 65 25 0d |le",,q% . more%.| 00000780 02 26 05 ce 0d 02 30 05 e1 0d 02 3a 05 3a 0d 02 |.&....0....:.:..| 00000790 44 22 dd f2 6f 70 65 6e 5f 77 69 6e 64 6f 77 5f |D"..open_window_| 000007a0 72 65 71 75 65 73 74 28 68 61 6e 64 6c 65 25 29 |request(handle%)| 000007b0 0d 02 4e 40 e7 20 68 61 6e 64 6c 65 25 3d 6d 61 |..N@. handle%=ma| 000007c0 69 6e 77 69 6e 20 f2 6f 70 65 6e 6d 61 69 6e 77 |inwin .openmainw| 000007d0 69 6e 64 6f 77 20 8b 20 c8 99 20 22 57 69 6d 70 |indow . .. "Wimp| 000007e0 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 71 25 |_OpenWindow",,q%| 000007f0 0d 02 58 05 e1 0d 02 62 05 3a 0d 02 6c 23 dd f2 |..X....b.:..l#..| 00000800 63 6c 6f 73 65 5f 77 69 6e 64 6f 77 5f 72 65 71 |close_window_req| 00000810 75 65 73 74 28 68 61 6e 64 6c 65 25 29 0d 02 76 |uest(handle%)..v| 00000820 12 20 20 c8 8e 20 68 61 6e 64 6c 65 25 20 ca 0d |. .. handle% ..| 00000830 02 80 1e 20 20 c9 20 6d 61 69 6e 77 69 6e 2c 63 |... . mainwin,c| 00000840 6f 6f 72 64 73 2c 63 6f 6d 6d 61 6e 64 0d 02 8a |oords,command...| 00000850 2c 20 20 71 25 21 30 3d 6d 61 69 6e 77 69 6e 3a |, q%!0=mainwin:| 00000860 c8 99 20 22 57 69 6d 70 5f 43 6c 6f 73 65 57 69 |.. "Wimp_CloseWi| 00000870 6e 64 6f 77 22 2c 2c 71 25 0d 02 94 2b 20 20 71 |ndow",,q%...+ q| 00000880 25 21 30 3d 63 6f 6f 72 64 73 3a c8 99 20 22 57 |%!0=coords:.. "W| 00000890 69 6d 70 5f 43 6c 6f 73 65 57 69 6e 64 6f 77 22 |imp_CloseWindow"| 000008a0 2c 2c 71 25 0d 02 9e 2c 20 20 71 25 21 30 3d 63 |,,q%..., q%!0=c| 000008b0 6f 6d 6d 61 6e 64 3a c8 99 20 22 57 69 6d 70 5f |ommand:.. "Wimp_| 000008c0 43 6c 6f 73 65 57 69 6e 64 6f 77 22 2c 2c 71 25 |CloseWindow",,q%| 000008d0 0d 02 a8 21 20 20 7f 3a c8 99 20 22 57 69 6d 70 |...! .:.. "Wimp| 000008e0 5f 43 6c 6f 73 65 57 69 6e 64 6f 77 22 2c 2c 71 |_CloseWindow",,q| 000008f0 25 0d 02 b2 07 20 20 cb 0d 02 bc 05 e1 0d 02 c6 |%.... .........| 00000900 05 3a 0d 02 d0 29 dd f2 6d 6f 75 73 65 5f 63 6c |.:...)..mouse_cl| 00000910 69 63 6b 28 78 25 2c 79 25 2c 62 25 2c 68 61 6e |ick(x%,y%,b%,han| 00000920 64 6c 65 25 2c 69 63 6f 6e 25 29 0d 02 da 12 20 |dle%,icon%).... | 00000930 20 c8 8e 20 68 61 6e 64 6c 65 25 20 ca 0d 02 e4 | .. handle% ....| 00000940 12 20 20 c9 20 2d 32 3a c8 8e 20 62 25 20 ca 0d |. . -2:.. b% ..| 00000950 02 ee 1e 20 20 20 20 20 20 20 20 20 20 c9 20 32 |... . 2| 00000960 3a f2 69 63 6f 6e 62 61 72 6d 65 6e 75 0d 02 f8 |:.iconbarmenu...| 00000970 54 20 20 20 20 20 20 20 20 20 20 c9 20 34 3a f2 |T . 4:.| 00000980 66 72 6f 6e 74 6d 61 69 6e 77 69 6e 3a f2 6f 70 |frontmainwin:.op| 00000990 65 6e 74 6f 66 72 6f 6e 74 28 63 6f 6d 6d 61 6e |entofront(comman| 000009a0 64 29 3a e7 20 65 6e 64 25 3d b9 20 f2 70 75 74 |d):. end%=. .put| 000009b0 63 61 72 65 74 28 63 6f 6d 6d 61 6e 64 2c 31 31 |caret(command,11| 000009c0 29 0d 03 02 0f 20 20 20 20 20 20 20 20 20 20 cb |).... .| 000009d0 0d 03 0c 26 20 20 c9 20 6d 61 69 6e 77 69 6e 2c |...& . mainwin,| 000009e0 63 6f 6d 6d 61 6e 64 2c 63 6f 6f 72 64 73 3a c8 |command,coords:.| 000009f0 8e 20 62 25 20 ca 0d 03 16 1b 20 20 20 20 20 20 |. b% ..... | 00000a00 20 20 20 20 c9 20 32 3a f2 6d 61 69 6e 6d 65 6e | . 2:.mainmen| 00000a10 75 0d 03 20 29 20 20 20 20 20 20 20 20 20 20 c9 |u.. ) .| 00000a20 20 34 2c 31 3a f2 6f 70 65 6e 74 6f 66 72 6f 6e | 4,1:.opentofron| 00000a30 74 28 63 6f 6d 6d 61 6e 64 29 0d 03 2a 38 20 20 |t(command)..*8 | 00000a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000a50 20 e7 20 73 74 61 74 75 73 25 3c 32 20 f2 70 75 | . status%<2 .pu| 00000a60 74 63 61 72 65 74 28 63 6f 6d 6d 61 6e 64 2c 31 |tcaret(command,1| 00000a70 31 29 0d 03 34 0f 20 20 20 20 20 20 20 20 20 20 |1)..4. | 00000a80 cb 0d 03 3e 17 20 20 c9 20 73 61 76 65 3a c8 8e |...>. . save:..| 00000a90 20 69 63 6f 6e 25 20 ca 0d 03 48 2b 20 20 20 20 | icon% ...H+ | 00000aa0 20 20 20 20 20 20 c9 20 33 3a 73 61 76 68 61 6e | . 3:savhan| 00000ab0 64 6c 65 25 3d 73 61 76 65 3a f2 73 61 76 65 64 |dle%=save:.saved| 00000ac0 72 61 67 0d 03 52 29 20 20 20 20 20 20 20 20 20 |rag..R) | 00000ad0 20 c9 20 30 3a 73 61 76 68 61 6e 64 6c 65 25 3d | . 0:savhandle%=| 00000ae0 73 61 76 65 3a f2 73 61 76 65 6f 6b 0d 03 5c 0f |save:.saveok..\.| 00000af0 20 20 20 20 20 20 20 20 20 20 cb 0d 03 66 1a 20 | ...f. | 00000b00 20 c9 20 70 72 6f 67 72 61 6d 3a c8 8e 20 69 63 | . program:.. ic| 00000b10 6f 6e 25 20 ca 0d 03 70 2e 20 20 20 20 20 20 20 |on% ...p. | 00000b20 20 20 20 c9 20 33 3a 73 61 76 68 61 6e 64 6c 65 | . 3:savhandle| 00000b30 25 3d 70 72 6f 67 72 61 6d 3a f2 73 61 76 65 64 |%=program:.saved| 00000b40 72 61 67 0d 03 7a 1b 20 20 20 20 20 20 20 20 20 |rag..z. | 00000b50 20 c9 20 37 3a f2 64 72 61 77 69 63 6f 6e 0d 03 | . 7:.drawicon..| 00000b60 84 2c 20 20 20 20 20 20 20 20 20 20 c9 20 31 30 |., . 10| 00000b70 3a e7 20 73 74 61 74 75 73 25 3d 31 20 f2 73 74 |:. status%=1 .st| 00000b80 61 72 74 70 72 6f 67 72 61 6d 0d 03 8e 2f 20 20 |artprogram.../ | 00000b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000ba0 e7 20 73 74 61 74 75 73 25 3d 32 20 f2 70 61 75 |. status%=2 .pau| 00000bb0 73 65 70 72 6f 67 72 61 6d 0d 03 98 2f 20 20 20 |seprogram.../ | 00000bc0 20 20 20 20 20 20 20 c9 20 31 32 3a e7 20 73 74 | . 12:. st| 00000bd0 61 74 75 73 25 3d 32 20 f2 70 72 6f 67 72 61 6d |atus%=2 .program| 00000be0 66 69 6e 69 73 68 65 64 0d 03 a2 31 20 20 20 20 |finished...1 | 00000bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e7 20 | . | 00000c00 73 74 61 74 75 73 25 3d 33 20 f2 75 6e 70 61 75 |status%=3 .unpau| 00000c10 73 65 70 72 6f 67 72 61 6d 0d 03 ac 2a 20 20 20 |seprogram...* | 00000c20 20 20 20 20 20 20 20 c9 20 32 33 3a 73 61 76 68 | . 23:savh| 00000c30 61 6e 64 6c 65 25 3d 2d 31 3a f2 73 61 76 65 64 |andle%=-1:.saved| 00000c40 72 61 67 0d 03 b6 0f 20 20 20 20 20 20 20 20 20 |rag.... | 00000c50 20 cb 0d 03 c0 19 20 20 c9 20 68 65 6c 70 3a f2 | ..... . help:.| 00000c60 68 65 6c 70 28 69 63 6f 6e 25 29 0d 03 ca 07 20 |help(icon%).... | 00000c70 20 cb 0d 03 d4 05 e1 0d 03 de 05 3a 0d 03 e8 25 | ..........:...%| 00000c80 dd f2 6b 65 79 5f 70 72 65 73 73 65 64 28 77 69 |..key_pressed(wi| 00000c90 6e 64 6f 77 25 2c 69 63 6f 6e 25 2c 6b 65 79 25 |ndow%,icon%,key%| 00000ca0 29 0d 03 f2 3e e7 20 77 69 6e 64 6f 77 25 3d 73 |)...>. window%=s| 00000cb0 61 76 65 20 80 20 69 63 6f 6e 25 3d 30 20 80 20 |ave . icon%=0 . | 00000cc0 6b 65 79 25 3d 31 33 20 73 61 76 68 61 6e 64 6c |key%=13 savhandl| 00000cd0 65 25 3d 73 61 76 65 3a f2 73 61 76 65 6f 6b 0d |e%=save:.saveok.| 00000ce0 03 fc 21 e7 20 77 69 6e 64 6f 77 25 3d 63 6f 6d |..!. window%=com| 00000cf0 6d 61 6e 64 20 80 20 6b 65 79 25 3d 31 33 20 8c |mand . key%=13 .| 00000d00 0d 04 06 2c f2 73 63 72 6f 6c 6c 75 70 3a 63 6f |...,.scrollup:co| 00000d10 6d 24 3d a4 72 65 61 64 69 63 6f 6e 74 65 78 74 |m$=.readicontext| 00000d20 28 63 6f 6d 6d 61 6e 64 2c 31 31 29 0d 04 10 3f |(command,11)...?| 00000d30 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 63 6f 6d |.seticontext(com| 00000d40 6d 61 6e 64 2c 31 31 2c 22 22 29 3a f2 73 65 74 |mand,11,""):.set| 00000d50 69 63 6f 6e 74 65 78 74 28 63 6f 6d 6d 61 6e 64 |icontext(command| 00000d60 2c 35 2c 22 4c 6f 47 6f 3a 22 29 0d 04 1a 2c f2 |,5,"LoGo:")...,.| 00000d70 70 75 74 63 61 72 65 74 28 63 6f 6d 6d 61 6e 64 |putcaret(command| 00000d80 2c 31 31 29 3a f2 63 6f 6d 6d 61 6e 64 6c 69 6e |,11):.commandlin| 00000d90 65 28 63 6f 6d 24 29 0d 04 24 05 cc 0d 04 2e 1d |e(com$)..$......| 00000da0 c8 99 20 22 57 69 6d 70 5f 50 72 6f 63 65 73 73 |.. "Wimp_Process| 00000db0 4b 65 79 22 2c 6b 65 79 25 0d 04 38 07 cd 3a e1 |Key",key%..8..:.| 00000dc0 0d 04 42 05 3a 0d 04 4c 2d dd f2 6d 65 6e 75 5f |..B.:..L-..menu_| 00000dd0 73 65 6c 65 63 74 69 6f 6e 28 6f 70 74 31 25 2c |selection(opt1%,| 00000de0 6f 70 74 32 25 2c 6f 70 74 33 25 2c 6f 70 74 34 |opt2%,opt3%,opt4| 00000df0 25 29 0d 04 56 16 20 20 c8 8e 20 6d 65 6e 75 68 |%)..V. .. menuh| 00000e00 61 6e 64 6c 65 25 20 ca 0d 04 60 14 20 20 c9 20 |andle% ...`. . | 00000e10 30 3a c8 8e 20 6f 70 74 31 25 20 ca 0d 04 6a 18 |0:.. opt1% ...j.| 00000e20 20 20 20 20 20 20 20 20 20 c9 20 31 3a 71 75 69 | . 1:qui| 00000e30 74 25 3d b9 0d 04 74 0e 20 20 20 20 20 20 20 20 |t%=...t. | 00000e40 20 cb 0d 04 7e 15 20 20 c9 20 31 20 3a c8 8e 20 | ...~. . 1 :.. | 00000e50 6f 70 74 31 25 20 ca 0d 04 88 27 20 20 20 20 20 |opt1% ....' | 00000e60 20 20 20 20 20 c9 20 30 3a f2 6f 70 65 6e 74 6f | . 0:.opento| 00000e70 66 72 6f 6e 74 28 70 72 6f 67 72 61 6d 29 0d 04 |front(program)..| 00000e80 92 24 20 20 20 20 20 20 20 20 20 20 c9 20 32 3a |.$ . 2:| 00000e90 f2 6f 70 65 6e 74 6f 66 72 6f 6e 74 28 68 65 6c |.opentofront(hel| 00000ea0 70 29 0d 04 9c 0f 20 20 20 20 20 20 20 20 20 20 |p).... | 00000eb0 cb 0d 04 a6 07 20 20 cb 0d 04 b0 28 c8 99 20 22 |..... ....(.. "| 00000ec0 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 72 49 |Wimp_GetPointerI| 00000ed0 6e 66 6f 22 2c 2c 77 6f 72 6b 62 6c 6f 63 6b 25 |nfo",,workblock%| 00000ee0 0d 04 ba 34 e7 20 77 6f 72 6b 62 6c 6f 63 6b 25 |...4. workblock%| 00000ef0 21 38 3d 31 20 c8 99 20 22 57 69 6d 70 5f 43 72 |!8=1 .. "Wimp_Cr| 00000f00 65 61 74 65 4d 65 6e 75 22 2c 2c 6d 65 6e 75 74 |eateMenu",,menut| 00000f10 72 65 65 25 0d 04 c4 05 e1 0d 04 ce 05 3a 0d 04 |ree%.........:..| 00000f20 d8 0d dd f2 72 65 63 69 65 76 65 0d 04 e2 15 e7 |....recieve.....| 00000f30 20 71 25 21 31 36 3d 30 20 71 75 69 74 25 3d b9 | q%!16=0 quit%=.| 00000f40 0d 04 ec 19 e7 20 71 25 21 31 36 3d 32 20 f2 64 |..... q%!16=2 .d| 00000f50 61 74 61 73 61 76 65 3a e1 0d 04 f6 31 e7 20 71 |atasave:....1. q| 00000f60 25 21 31 36 3d 33 20 e7 20 71 25 21 34 30 3d 26 |%!16=3 . q%!40=&| 00000f70 46 46 46 20 f2 6c 6f 61 64 70 72 6f 67 72 61 6d |FFF .loadprogram| 00000f80 28 24 28 71 25 2b 34 34 29 29 0d 05 00 05 e1 0d |($(q%+44))......| 00000f90 05 0a 05 3a 0d 05 14 38 f4 20 2d 2d 2d 2d 2d 2d |...:...8. ------| 00000fa0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00000fc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 05 1e 38 |------------...8| 00000fd0 f4 20 7c 20 20 20 20 20 20 50 72 6f 67 72 61 6d |. | Program| 00000fe0 20 53 70 65 63 69 66 69 63 20 46 75 6e 63 74 69 | Specific Functi| 00000ff0 6f 6e 73 20 26 20 50 72 6f 63 65 64 75 72 65 73 |ons & Procedures| 00001000 20 20 20 7c 0d 05 28 38 f4 20 2d 2d 2d 2d 2d 2d | |..(8. ------| 00001010 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00001030 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 05 32 05 |------------..2.| 00001040 3a 0d 05 3c 11 dd f2 68 65 6c 70 28 69 63 6f 6e |:..<...help(icon| 00001050 25 29 0d 05 46 10 e7 20 69 63 6f 6e 25 3c 31 33 |%)..F.. icon%<13| 00001060 20 e1 0d 05 50 0a f7 20 8d 64 66 45 0d 05 5a 35 | ...P.. .dfE..Z5| 00001070 e3 20 6e 75 6d 62 65 72 25 3d 31 33 20 b8 20 69 |. number%=13 . i| 00001080 63 6f 6e 25 3a f3 20 63 6f 6d 24 2c 73 79 6e 74 |con%:. com$,synt| 00001090 61 78 24 2c 61 62 62 72 65 76 24 2c 70 75 72 70 |ax$,abbrev$,purp| 000010a0 24 0d 05 64 23 ed 3a f2 73 65 74 69 63 6f 6e 74 |$..d#.:.seticont| 000010b0 65 78 74 28 68 65 6c 70 2c 31 30 2c 73 79 6e 74 |ext(help,10,synt| 000010c0 61 78 24 29 0d 05 6e 21 f2 73 65 74 69 63 6f 6e |ax$)..n!.seticon| 000010d0 74 65 78 74 28 68 65 6c 70 2c 31 31 2c 61 62 62 |text(help,11,abb| 000010e0 72 65 76 24 29 0d 05 78 1f f2 73 65 74 69 63 6f |rev$)..x..setico| 000010f0 6e 74 65 78 74 28 68 65 6c 70 2c 31 32 2c 70 75 |ntext(help,12,pu| 00001100 72 70 24 29 0d 05 82 05 e1 0d 05 8c 05 3a 0d 05 |rp$).........:..| 00001110 96 0f dd f2 73 65 74 75 70 68 65 6c 70 0d 05 a0 |....setuphelp...| 00001120 0a f7 20 8d 64 66 45 0d 05 aa 13 e3 20 69 63 6f |.. .dfE..... ico| 00001130 6e 25 3d 31 33 20 b8 20 33 36 0d 05 b4 20 f3 20 |n%=13 . 36... . | 00001140 63 6f 6d 24 2c 73 79 6e 74 61 78 24 2c 61 62 62 |com$,syntax$,abb| 00001150 72 65 76 24 2c 70 75 72 70 24 0d 05 be 21 f2 73 |rev$,purp$...!.s| 00001160 65 74 69 63 6f 6e 74 65 78 74 28 68 65 6c 70 2c |eticontext(help,| 00001170 69 63 6f 6e 25 2c 63 6f 6d 24 29 0d 05 c8 05 ed |icon%,com$).....| 00001180 0d 05 d2 05 e1 0d 05 dc 05 3a 0d 05 e6 65 dc 20 |.........:...e. | 00001190 22 46 4f 52 57 41 52 44 22 2c 22 46 6f 72 77 61 |"FORWARD","Forwa| 000011a0 72 64 20 3c 44 69 73 74 61 6e 63 65 3e 22 2c 22 |rd <Distance>","| 000011b0 46 2e 22 2c 22 54 68 69 73 20 63 6f 6d 6d 61 6e |F.","This comman| 000011c0 64 20 6d 6f 76 65 73 20 74 68 65 20 74 75 72 74 |d moves the turt| 000011d0 6c 65 20 66 6f 72 77 61 72 64 20 61 20 73 65 63 |le forward a sec| 000011e0 69 66 69 65 64 20 64 69 73 74 61 6e 63 65 22 0d |ified distance".| 000011f0 05 f0 64 dc 20 22 42 41 43 4b 22 2c 22 42 61 63 |..d. "BACK","Bac| 00001200 6b 20 3c 44 69 73 74 61 6e 63 65 3e 22 2c 22 42 |k <Distance>","B| 00001210 2e 22 2c 22 54 68 69 73 20 63 6f 6d 6d 61 6e 64 |.","This command| 00001220 20 6d 6f 76 65 73 20 74 68 65 20 74 75 72 74 6c | moves the turtl| 00001230 65 20 62 61 63 6b 77 61 72 64 73 20 74 68 65 20 |e backwards the | 00001240 73 70 65 63 69 66 69 65 64 20 64 69 73 74 61 6e |specified distan| 00001250 63 65 22 0d 05 fa 5b dc 20 22 4c 45 46 54 22 2c |ce"...[. "LEFT",| 00001260 22 4c 65 66 74 20 3c 41 6e 67 6c 65 3e 22 2c 22 |"Left <Angle>","| 00001270 4c 2e 22 2c 22 54 75 72 6e 73 20 74 68 65 20 74 |L.","Turns the t| 00001280 75 72 74 6c 65 20 61 6e 74 69 2d 63 6c 6f 63 6b |urtle anti-clock| 00001290 77 69 73 65 20 74 68 72 6f 75 67 68 20 3c 61 6e |wise through <an| 000012a0 67 6c 65 3e 20 20 64 65 67 72 65 65 73 22 0d 06 |gle> degrees"..| 000012b0 04 58 dc 20 22 52 49 47 48 54 22 2c 22 52 69 67 |.X. "RIGHT","Rig| 000012c0 68 74 20 3c 41 6e 67 6c 65 3e 22 2c 22 52 2e 22 |ht <Angle>","R."| 000012d0 2c 22 54 75 72 6e 73 20 74 68 65 20 74 75 72 74 |,"Turns the turt| 000012e0 6c 65 20 63 6c 6f 63 6b 77 69 73 65 20 74 68 72 |le clockwise thr| 000012f0 6f 75 67 68 20 3c 61 6e 67 6c 65 3e 20 20 64 65 |ough <angle> de| 00001300 67 72 65 65 73 22 0d 06 0e 4d dc 20 22 41 4e 47 |grees"...M. "ANG| 00001310 4c 45 22 2c 22 41 6e 67 6c 65 20 3c 61 6e 67 6c |LE","Angle <angl| 00001320 65 3e 22 2c 22 41 2e 22 2c 22 53 65 74 73 20 74 |e>","A.","Sets t| 00001330 68 65 20 74 75 72 74 6c 65 20 61 6e 67 6c 65 20 |he turtle angle | 00001340 74 6f 20 3c 61 6e 67 6c 65 3e 20 64 65 67 72 65 |to <angle> degre| 00001350 65 73 22 0d 06 18 53 dc 20 22 50 45 4e 43 4f 4c |es"...S. "PENCOL| 00001360 4f 55 52 22 2c 22 50 65 6e 43 6f 6c 6f 75 72 20 |OUR","PenColour | 00001370 3c 63 6f 6c 6f 75 72 3e 22 2c 22 50 65 6e 43 2e |<colour>","PenC.| 00001380 22 2c 22 53 65 74 73 20 74 68 65 20 64 72 61 77 |","Sets the draw| 00001390 69 6e 67 20 63 6f 6c 6f 75 72 20 74 6f 20 3c 63 |ing colour to <c| 000013a0 6f 6c 6f 75 72 22 0d 06 22 4c dc 20 22 50 45 4e |olour".."L. "PEN| 000013b0 44 4f 57 4e 22 2c 22 50 65 6e 44 6f 77 6e 22 2c |DOWN","PenDown",| 000013c0 22 50 65 6e 44 2e 22 2c 22 54 65 6c 6c 73 20 74 |"PenD.","Tells t| 000013d0 68 65 20 74 75 72 74 6c 65 20 74 6f 20 64 72 61 |he turtle to dra| 000013e0 77 20 6c 69 6e 65 73 20 62 65 68 69 6e 64 20 69 |w lines behind i| 000013f0 74 22 0d 06 2c 48 dc 20 22 50 45 4e 55 50 22 2c |t"..,H. "PENUP",| 00001400 22 50 65 6e 55 70 22 2c 22 50 65 6e 55 2e 22 2c |"PenUp","PenU.",| 00001410 22 53 74 6f 70 73 20 74 68 65 20 74 75 72 74 6c |"Stops the turtl| 00001420 65 20 64 72 61 77 69 6e 67 20 6c 69 6e 65 73 20 |e drawing lines | 00001430 62 65 68 69 6e 64 20 69 74 22 0d 06 36 4a dc 20 |behind it"..6J. | 00001440 22 43 4c 45 41 52 22 2c 22 43 6c 65 61 72 22 2c |"CLEAR","Clear",| 00001450 22 43 6c 2e 22 2c 22 43 6c 65 61 72 73 20 74 68 |"Cl.","Clears th| 00001460 65 20 6c 6f 67 6f 20 77 69 6e 64 6f 77 20 74 6f |e logo window to| 00001470 20 61 20 77 68 69 74 65 20 62 61 63 6b 67 72 6f | a white backgro| 00001480 75 6e 64 22 0d 06 40 41 dc 20 22 48 4f 4d 45 22 |und"..@A. "HOME"| 00001490 2c 22 48 6f 6d 65 22 2c 22 48 6f 2e 22 2c 22 4d |,"Home","Ho.","M| 000014a0 6f 76 65 73 20 74 68 65 20 74 75 72 74 6c 65 20 |oves the turtle | 000014b0 74 6f 20 74 68 65 20 68 6f 6d 65 20 70 6f 73 69 |to the home posi| 000014c0 74 69 6f 6e 22 0d 06 4a 50 dc 20 22 53 45 54 48 |tion"..JP. "SETH| 000014d0 4f 4d 45 22 2c 22 53 65 74 48 6f 6d 65 22 2c 22 |OME","SetHome","| 000014e0 53 65 74 48 2e 22 2c 22 4d 61 6b 65 73 20 74 68 |SetH.","Makes th| 000014f0 65 20 63 75 72 72 65 6e 74 20 70 6f 73 69 74 69 |e current positi| 00001500 6f 6e 20 74 68 65 20 68 6f 6d 65 20 70 6f 73 69 |on the home posi| 00001510 74 69 6f 6e 22 0d 06 54 44 dc 20 22 52 45 53 54 |tion"..TD. "REST| 00001520 41 52 54 22 2c 22 52 65 53 74 61 72 74 22 2c 22 |ART","ReStart","| 00001530 52 65 53 2e 22 2c 22 52 65 73 65 74 73 20 74 68 |ReS.","Resets th| 00001540 65 20 6c 6f 67 6f 20 73 79 73 74 65 6d 20 63 6f |e logo system co| 00001550 6d 70 6c 65 74 65 6c 79 22 0d 06 5e 3c dc 20 22 |mpletely"..^<. "| 00001560 48 45 4c 50 22 2c 22 48 65 6c 70 20 3c 63 6f 6d |HELP","Help <com| 00001570 6d 61 6e 64 3e 22 2c 22 48 2e 22 2c 22 47 69 76 |mand>","H.","Giv| 00001580 65 73 20 68 65 6c 70 20 6f 6e 20 3c 63 6f 6d 6d |es help on <comm| 00001590 61 6e 64 3e 22 0d 06 68 47 dc 20 22 2f 22 2c 22 |and>"..hG. "/","| 000015a0 2f 22 2c 22 2f 22 2c 22 41 6c 6c 6f 77 73 20 63 |/","/","Allows c| 000015b0 6f 6d 6d 65 6e 74 73 20 74 6f 20 62 65 20 69 6e |omments to be in| 000015c0 73 65 72 74 65 64 20 69 6e 20 74 65 78 74 66 69 |serted in textfi| 000015d0 6c 65 20 70 72 6f 67 72 61 6d 73 22 0d 06 72 41 |le programs"..rA| 000015e0 dc 20 22 52 55 4e 22 2c 22 52 75 6e 22 2c 22 52 |. "RUN","Run","R| 000015f0 75 6e 22 2c 22 54 65 6c 6c 73 20 6c 6f 67 6f 20 |un","Tells logo | 00001600 74 6f 20 73 74 61 72 74 20 74 68 65 20 63 75 72 |to start the cur| 00001610 72 65 6e 74 20 70 72 6f 67 72 61 6d 22 0d 06 7c |rent program"..|| 00001620 50 dc 20 22 46 49 4e 49 53 48 22 2c 22 46 69 6e |P. "FINISH","Fin| 00001630 69 73 68 22 2c 22 46 69 6e 69 73 68 22 2c 22 54 |ish","Finish","T| 00001640 65 6c 6c 73 20 74 68 65 20 74 75 72 74 6c 65 20 |ells the turtle | 00001650 74 68 61 74 20 74 68 65 20 70 72 6f 67 72 61 6d |that the program| 00001660 20 69 73 20 66 69 6e 69 73 68 65 64 22 0d 06 86 | is finished"...| 00001670 11 dc 20 22 22 2c 22 22 2c 22 22 2c 22 22 0d 06 |.. "","","",""..| 00001680 90 11 dc 20 22 22 2c 22 22 2c 22 22 2c 22 22 0d |... "","","","".| 00001690 06 9a 49 dc 20 22 5b 22 2c 22 5b 20 3c 6e 75 6d |..I. "[","[ <num| 000016a0 62 65 72 3e 22 2c 22 5b 22 2c 22 43 72 65 61 74 |ber>","[","Creat| 000016b0 65 73 20 61 20 6c 6f 6f 70 20 74 6f 20 62 65 20 |es a loop to be | 000016c0 72 65 70 65 61 74 65 64 20 3c 6e 75 6d 62 65 72 |repeated <number| 000016d0 3e 20 74 69 6d 65 73 22 0d 06 a4 2b dc 20 22 5d |> times"...+. "]| 000016e0 22 2c 22 5d 22 2c 22 5d 22 2c 22 43 6c 6f 73 65 |","]","]","Close| 000016f0 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 6c 6f |s the current lo| 00001700 6f 70 22 0d 06 ae 55 dc 20 22 54 4f 22 2c 22 54 |op"...U. "TO","T| 00001710 6f 20 3c 6e 61 6d 65 3e 22 2c 22 54 6f 22 2c 22 |o <name>","To","| 00001720 54 65 6c 6c 73 20 74 68 65 20 74 75 72 74 6c 65 |Tells the turtle| 00001730 20 68 6f 77 20 74 6f 20 64 72 61 77 20 3c 6e 61 | how to draw <na| 00001740 6d 65 3e 20 77 68 65 6e 20 69 74 20 69 73 20 61 |me> when it is a| 00001750 73 6b 65 64 20 74 6f 22 0d 06 b8 41 dc 20 22 45 |sked to"...A. "E| 00001760 4e 44 54 4f 22 2c 22 45 6e 64 54 6f 22 2c 22 45 |NDTO","EndTo","E| 00001770 6e 64 54 6f 22 2c 22 46 69 6e 69 73 68 65 73 20 |ndTo","Finishes | 00001780 64 65 66 69 6e 69 6e 67 20 61 20 54 4f 20 73 75 |defining a TO su| 00001790 62 72 6f 75 74 69 6e 65 22 0d 06 c2 11 dc 20 22 |broutine"..... "| 000017a0 22 2c 22 22 2c 22 22 2c 22 22 0d 06 cc 11 dc 20 |","","",""..... | 000017b0 22 22 2c 22 22 2c 22 22 2c 22 22 0d 06 d6 05 3a |"","","",""....:| 000017c0 0d 06 e0 11 dd f2 69 63 6f 6e 62 61 72 6d 65 6e |......iconbarmen| 000017d0 75 0d 06 ea 26 6d 65 6e 75 74 72 65 65 25 3d 6d |u...&menutree%=m| 000017e0 65 6e 75 62 6c 6f 63 6b 25 3a 6d 65 6e 75 68 61 |enublock%:menuha| 000017f0 6e 64 6c 65 25 3d 30 0d 06 f4 35 70 74 72 25 3d |ndle%=0...5ptr%=| 00001800 a4 63 72 6d 75 28 22 49 6e 66 6f 3e 69 6e 66 6f |.crmu("Info>info| 00001810 2c 51 75 69 74 22 2c 70 72 6f 67 6e 61 6d 65 24 |,Quit",progname$| 00001820 2c 6d 65 6e 75 62 6c 6f 63 6b 25 29 0d 06 fe 2e |,menublock%)....| 00001830 c8 99 20 22 57 69 6d 70 5f 43 72 65 61 74 65 4d |.. "Wimp_CreateM| 00001840 65 6e 75 22 2c 2c 6d 65 6e 75 62 6c 6f 63 6b 25 |enu",,menublock%| 00001850 2c 78 25 2d 36 34 2c 31 37 38 0d 07 08 05 e1 0d |,x%-64,178......| 00001860 07 12 05 3a 0d 07 1c 0e dd f2 6d 61 69 6e 6d 65 |...:......mainme| 00001870 6e 75 0d 07 26 21 70 74 72 25 3d 6d 65 6e 75 62 |nu..&!ptr%=menub| 00001880 6c 6f 63 6b 25 3a 6d 65 6e 75 68 61 6e 64 6c 65 |lock%:menuhandle| 00001890 25 3d 31 0d 07 30 3b 6d 65 6e 75 32 3d 70 74 72 |%=1..0;menu2=ptr| 000018a0 25 3a 70 74 72 25 3d a4 63 72 6d 75 28 22 52 65 |%:ptr%=.crmu("Re| 000018b0 73 74 61 72 74 2c 48 65 6c 70 3e 68 65 6c 70 22 |start,Help>help"| 000018c0 2c 22 4d 69 73 63 22 2c 6d 65 6e 75 32 29 0d 07 |,"Misc",menu2)..| 000018d0 3a 0e 6d 65 6e 75 31 3d 70 74 72 25 0d 07 44 43 |:.menu1=ptr%..DC| 000018e0 70 74 72 25 3d a4 63 72 6d 75 28 22 50 72 6f 67 |ptr%=.crmu("Prog| 000018f0 72 61 6d 2c 2d 53 61 76 65 3e 73 61 76 65 2c 48 |ram,-Save>save,H| 00001900 65 6c 70 2c 49 6e 66 6f 3e 69 6e 66 6f 22 2c 70 |elp,Info>info",p| 00001910 72 6f 67 6e 61 6d 65 24 2c 6d 65 6e 75 31 29 0d |rogname$,menu1).| 00001920 07 4e 25 c8 99 20 22 57 69 6d 70 5f 43 72 65 61 |.N%.. "Wimp_Crea| 00001930 74 65 4d 65 6e 75 22 2c 2c 6d 65 6e 75 31 2c 78 |teMenu",,menu1,x| 00001940 25 2c 79 25 0d 07 58 15 6d 65 6e 75 74 72 65 65 |%,y%..X.menutree| 00001950 25 3d 6d 65 6e 75 31 3a e1 0d 07 62 05 3a 0d 07 |%=menu1:...b.:..| 00001960 6c 11 dd a4 74 75 72 74 6c 65 6d 6f 76 65 64 0d |l...turtlemoved.| 00001970 07 76 5d e7 20 6f 6c 64 74 75 72 74 6c 65 78 3c |.v]. oldturtlex<| 00001980 3e 74 75 72 74 6c 65 78 70 6f 73 20 84 20 6f 6c |>turtlexpos . ol| 00001990 64 74 75 72 74 6c 65 79 3c 3e 74 75 72 74 6c 65 |dturtley<>turtle| 000019a0 79 70 6f 73 20 84 20 6f 6c 64 74 75 72 74 6c 65 |ypos . oldturtle| 000019b0 61 6e 67 6c 65 3c 3e 74 75 72 74 6c 65 61 6e 67 |angle<>turtleang| 000019c0 6c 65 20 8c 20 3d b9 20 8b 20 3d a3 0d 07 80 05 |le . =. . =.....| 000019d0 3a 0d 07 8a 10 dd f2 6d 6f 76 65 74 75 72 74 6c |:......moveturtl| 000019e0 65 0d 07 94 35 e7 20 74 75 72 74 6c 65 78 70 6f |e...5. turtlexpo| 000019f0 73 3d 6f 6c 64 74 75 72 74 6c 65 78 20 80 20 74 |s=oldturtlex . t| 00001a00 75 72 74 6c 65 79 70 6f 73 3d 6f 6c 64 74 75 72 |urtleypos=oldtur| 00001a10 74 6c 65 79 20 8c 0d 07 9e 3a f2 75 70 64 61 74 |tley ....:.updat| 00001a20 65 74 75 72 74 6c 65 28 6f 6c 64 74 75 72 74 6c |eturtle(oldturtl| 00001a30 65 78 2d 34 32 2c 2d 69 68 65 25 2b 6f 6c 64 74 |ex-42,-ihe%+oldt| 00001a40 75 72 74 6c 65 79 2d 34 34 2c 38 34 2c 38 38 29 |urtley-44,84,88)| 00001a50 0d 07 a8 05 cc 0d 07 b2 3a f2 75 70 64 61 74 65 |........:.update| 00001a60 74 75 72 74 6c 65 28 6f 6c 64 74 75 72 74 6c 65 |turtle(oldturtle| 00001a70 78 2d 34 32 2c 2d 69 68 65 25 2b 6f 6c 64 74 75 |x-42,-ihe%+oldtu| 00001a80 72 74 6c 65 79 2d 34 34 2c 38 34 2c 38 38 29 0d |rtley-44,84,88).| 00001a90 07 bc 3a f2 75 70 64 61 74 65 74 75 72 74 6c 65 |..:.updateturtle| 00001aa0 28 74 75 72 74 6c 65 78 70 6f 73 2d 34 32 2c 2d |(turtlexpos-42,-| 00001ab0 69 68 65 25 2b 74 75 72 74 6c 65 79 70 6f 73 2d |ihe%+turtleypos-| 00001ac0 34 34 2c 38 34 2c 38 38 29 0d 07 c6 6b e7 20 74 |44,84,88)...k. t| 00001ad0 75 72 74 6c 65 78 70 6f 73 3e 6f 6c 64 74 75 72 |urtlexpos>oldtur| 00001ae0 74 6c 65 78 20 78 25 3d 6f 6c 64 74 75 72 74 6c |tlex x%=oldturtl| 00001af0 65 78 3a 77 25 3d 74 75 72 74 6c 65 78 70 6f 73 |ex:w%=turtlexpos| 00001b00 2d 6f 6c 64 74 75 72 74 6c 65 78 20 8b 20 78 25 |-oldturtlex . x%| 00001b10 3d 74 75 72 74 6c 65 78 70 6f 73 3a 77 25 3d 6f |=turtlexpos:w%=o| 00001b20 6c 64 74 75 72 74 6c 65 78 2d 74 75 72 74 6c 65 |ldturtlex-turtle| 00001b30 78 70 6f 73 0d 07 d0 6b e7 20 74 75 72 74 6c 65 |xpos...k. turtle| 00001b40 79 70 6f 73 3e 6f 6c 64 74 75 72 74 6c 65 79 20 |ypos>oldturtley | 00001b50 79 25 3d 6f 6c 64 74 75 72 74 6c 65 79 3a 68 25 |y%=oldturtley:h%| 00001b60 3d 74 75 72 74 6c 65 79 70 6f 73 2d 6f 6c 64 74 |=turtleypos-oldt| 00001b70 75 72 74 6c 65 79 20 8b 20 79 25 3d 74 75 72 74 |urtley . y%=turt| 00001b80 6c 65 79 70 6f 73 3a 68 25 3d 6f 6c 64 74 75 72 |leypos:h%=oldtur| 00001b90 74 6c 65 79 2d 74 75 72 74 6c 65 79 70 6f 73 0d |tley-turtleypos.| 00001ba0 07 da 34 e7 20 70 65 6e 3d b9 20 f2 75 70 64 61 |..4. pen=. .upda| 00001bb0 74 65 74 75 72 74 6c 65 28 78 25 2d 32 2c 2d 69 |teturtle(x%-2,-i| 00001bc0 68 65 25 2b 79 25 2d 34 2c 77 25 2b 34 2c 68 25 |he%+y%-4,w%+4,h%| 00001bd0 2b 38 29 0d 07 e4 07 cd 3a e1 0d 07 ee 05 3a 0d |+8).....:.....:.| 00001be0 07 f8 1f dd f2 75 70 64 61 74 65 74 75 72 74 6c |.....updateturtl| 00001bf0 65 28 78 25 2c 79 25 2c 77 25 2c 68 25 29 0d 08 |e(x%,y%,w%,h%)..| 00001c00 02 38 77 6f 72 6b 62 6c 6f 63 6b 25 21 30 3d 6d |.8workblock%!0=m| 00001c10 61 69 6e 77 69 6e 3a 77 6f 72 6b 62 6c 6f 63 6b |ainwin:workblock| 00001c20 25 21 34 3d 78 25 3a 77 6f 72 6b 62 6c 6f 63 6b |%!4=x%:workblock| 00001c30 25 21 38 3d 79 25 0d 08 0c 2b 77 6f 72 6b 62 6c |%!8=y%...+workbl| 00001c40 6f 63 6b 25 21 31 32 3d 78 25 2b 77 25 3a 77 6f |ock%!12=x%+w%:wo| 00001c50 72 6b 62 6c 6f 63 6b 25 21 31 36 3d 79 25 2b 68 |rkblock%!16=y%+h| 00001c60 25 0d 08 16 2e c8 99 20 22 57 69 6d 70 5f 55 70 |%...... "Wimp_Up| 00001c70 64 61 74 65 57 69 6e 64 6f 77 22 2c 2c 77 6f 72 |dateWindow",,wor| 00001c80 6b 62 6c 6f 63 6b 25 20 b8 20 6d 6f 72 65 25 0d |kblock% . more%.| 00001c90 08 20 0c c8 95 20 6d 6f 72 65 25 0d 08 2a 64 f2 |. ... more%..*d.| 00001ca0 72 65 64 72 61 77 73 70 72 69 74 65 28 77 6f 72 |redrawsprite(wor| 00001cb0 6b 62 6c 6f 63 6b 25 21 34 2c 77 6f 72 6b 62 6c |kblock%!4,workbl| 00001cc0 6f 63 6b 25 21 38 2c 77 6f 72 6b 62 6c 6f 63 6b |ock%!8,workblock| 00001cd0 25 21 31 32 2c 77 6f 72 6b 62 6c 6f 63 6b 25 21 |%!12,workblock%!| 00001ce0 31 36 2c 77 6f 72 6b 62 6c 6f 63 6b 25 21 32 30 |16,workblock%!20| 00001cf0 2c 77 6f 72 6b 62 6c 6f 63 6b 25 21 32 34 29 0d |,workblock%!24).| 00001d00 08 34 2e c8 99 20 22 57 69 6d 70 5f 47 65 74 52 |.4... "Wimp_GetR| 00001d10 65 63 74 61 6e 67 6c 65 22 2c 2c 77 6f 72 6b 62 |ectangle",,workb| 00001d20 6c 6f 63 6b 25 20 b8 20 6d 6f 72 65 25 0d 08 3e |lock% . more%..>| 00001d30 07 ce 3a e1 0d 08 48 05 3a 0d 08 52 12 dd f2 75 |..:...H.:..R...u| 00001d40 70 64 61 74 65 63 6f 6f 72 64 73 0d 08 5c 1d 24 |pdatecoords..\.$| 00001d50 71 25 3d c4 33 30 2c bd 28 30 29 29 3a 71 25 21 |q%=.30,.(0)):q%!| 00001d60 30 3d 63 6f 6f 72 64 73 0d 08 66 3d 24 78 69 63 |0=coords..f=$xic| 00001d70 6f 6e 3d c3 28 a8 28 74 75 72 74 6c 65 78 70 6f |on=.(.(turtlexpo| 00001d80 73 29 29 3a 71 25 21 34 3d 30 3a c8 99 20 22 57 |s)):q%!4=0:.. "W| 00001d90 69 6d 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 |imp_SetIconState| 00001da0 22 2c 2c 71 25 0d 08 70 3d 24 79 69 63 6f 6e 3d |",,q%..p=$yicon=| 00001db0 c3 28 a8 28 74 75 72 74 6c 65 79 70 6f 73 29 29 |.(.(turtleypos))| 00001dc0 3a 71 25 21 34 3d 31 3a c8 99 20 22 57 69 6d 70 |:q%!4=1:.. "Wimp| 00001dd0 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c |_SetIconState",,| 00001de0 71 25 0d 08 7a 31 61 6e 67 25 3d 74 75 72 74 6c |q%..z1ang%=turtl| 00001df0 65 61 6e 67 6c 65 20 83 20 33 36 30 3a e7 20 61 |eangle . 360:. a| 00001e00 6e 67 25 3c 30 20 61 6e 67 25 3d 33 36 30 2b 61 |ng%<0 ang%=360+a| 00001e10 6e 67 25 0d 08 84 36 24 61 6e 67 69 63 6f 6e 3d |ng%...6$angicon=| 00001e20 c3 28 61 6e 67 25 29 3a 71 25 21 34 3d 32 3a c8 |.(ang%):q%!4=2:.| 00001e30 99 20 22 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 |. "Wimp_SetIconS| 00001e40 74 61 74 65 22 2c 2c 71 25 0d 08 8e 2b e7 20 70 |tate",,q%...+. p| 00001e50 65 6e 3d b9 20 24 70 65 6e 69 63 6f 6e 3d 22 44 |en=. $penicon="D| 00001e60 6f 77 6e 22 20 8b 20 24 70 65 6e 69 63 6f 6e 3d |own" . $penicon=| 00001e70 22 55 70 22 0d 08 98 25 71 25 21 34 3d 36 3a c8 |"Up"...%q%!4=6:.| 00001e80 99 20 22 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 |. "Wimp_SetIconS| 00001e90 74 61 74 65 22 2c 2c 71 25 0d 08 a2 3b 71 25 21 |tate",,q%...;q%!| 00001ea0 34 3d 37 3a 24 63 6f 6c 69 63 6f 6e 3d c3 28 70 |4=7:$colicon=.(p| 00001eb0 65 6e 63 6f 6c 6f 75 72 29 3a c8 99 20 22 57 69 |encolour):.. "Wi| 00001ec0 6d 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 22 |mp_SetIconState"| 00001ed0 2c 2c 71 25 0d 08 ac 26 f2 73 65 74 69 63 6f 6e |,,q%...&.seticon| 00001ee0 62 61 63 63 6f 6c 28 63 6f 6f 72 64 73 2c 37 2c |baccol(coords,7,| 00001ef0 70 65 6e 63 6f 6c 6f 75 72 29 0d 08 b6 05 e1 0d |pencolour)......| 00001f00 08 c0 05 3a 0d 08 ca 10 dd f2 72 65 61 64 63 6f |...:......readco| 00001f10 6f 72 64 73 0d 08 d4 3d 71 25 21 30 3d 63 6f 6f |ords...=q%!0=coo| 00001f20 72 64 73 3a 71 25 21 34 3d 30 3a c8 99 20 22 57 |rds:q%!4=0:.. "W| 00001f30 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 |imp_GetIconState| 00001f40 22 2c 2c 71 25 3a 78 69 63 6f 6e 3d 71 25 21 32 |",,q%:xicon=q%!2| 00001f50 38 0d 08 de 3d 71 25 21 30 3d 63 6f 6f 72 64 73 |8...=q%!0=coords| 00001f60 3a 71 25 21 34 3d 31 3a c8 99 20 22 57 69 6d 70 |:q%!4=1:.. "Wimp| 00001f70 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c |_GetIconState",,| 00001f80 71 25 3a 79 69 63 6f 6e 3d 71 25 21 32 38 0d 08 |q%:yicon=q%!28..| 00001f90 e8 3f 71 25 21 30 3d 63 6f 6f 72 64 73 3a 71 25 |.?q%!0=coords:q%| 00001fa0 21 34 3d 32 3a c8 99 20 22 57 69 6d 70 5f 47 65 |!4=2:.. "Wimp_Ge| 00001fb0 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 71 25 3a |tIconState",,q%:| 00001fc0 61 6e 67 69 63 6f 6e 3d 71 25 21 32 38 0d 08 f2 |angicon=q%!28...| 00001fd0 3f 71 25 21 30 3d 63 6f 6f 72 64 73 3a 71 25 21 |?q%!0=coords:q%!| 00001fe0 34 3d 36 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 |4=6:.. "Wimp_Get| 00001ff0 49 63 6f 6e 53 74 61 74 65 22 2c 2c 71 25 3a 70 |IconState",,q%:p| 00002000 65 6e 69 63 6f 6e 3d 71 25 21 32 38 0d 08 fc 3f |enicon=q%!28...?| 00002010 71 25 21 30 3d 63 6f 6f 72 64 73 3a 71 25 21 34 |q%!0=coords:q%!4| 00002020 3d 37 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 49 |=7:.. "Wimp_GetI| 00002030 63 6f 6e 53 74 61 74 65 22 2c 2c 71 25 3a 63 6f |conState",,q%:co| 00002040 6c 69 63 6f 6e 3d 71 25 21 32 38 0d 09 06 41 71 |licon=q%!28...Aq| 00002050 25 21 30 3d 70 72 6f 67 72 61 6d 3a 71 25 21 34 |%!0=program:q%!4| 00002060 3d 31 36 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 |=16:.. "Wimp_Get| 00002070 49 63 6f 6e 53 74 61 74 65 22 2c 2c 71 25 3a 70 |IconState",,q%:p| 00002080 6f 73 69 63 6f 6e 3d 71 25 21 32 38 0d 09 10 05 |osicon=q%!28....| 00002090 e1 0d 09 1a 05 3a 0d 09 24 14 dd f2 6f 70 65 6e |.....:..$...open| 000020a0 6d 61 69 6e 77 69 6e 64 6f 77 0d 09 2e 3c 77 6f |mainwindow...<wo| 000020b0 72 6b 62 6c 6f 63 6b 25 21 30 3d 63 6f 6f 72 64 |rkblock%!0=coord| 000020c0 73 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 57 69 |s:.. "Wimp_GetWi| 000020d0 6e 64 6f 77 53 74 61 74 65 22 2c 2c 77 6f 72 6b |ndowState",,work| 000020e0 62 6c 6f 63 6b 25 0d 09 38 41 68 65 69 67 68 74 |block%..8Aheight| 000020f0 25 3d 77 6f 72 6b 62 6c 6f 63 6b 25 21 31 36 2d |%=workblock%!16-| 00002100 77 6f 72 6b 62 6c 6f 63 6b 25 21 38 3a 77 6f 72 |workblock%!8:wor| 00002110 6b 62 6c 6f 63 6b 25 21 31 36 3d 71 25 21 38 2b |kblock%!16=q%!8+| 00002120 68 65 69 67 68 74 25 0d 09 42 3b 77 6f 72 6b 62 |height%..B;workb| 00002130 6c 6f 63 6b 25 21 34 3d 71 25 21 34 3a 77 6f 72 |lock%!4=q%!4:wor| 00002140 6b 62 6c 6f 63 6b 25 21 38 3d 71 25 21 38 3a 77 |kblock%!8=q%!8:w| 00002150 6f 72 6b 62 6c 6f 63 6b 25 21 31 32 3d 71 25 21 |orkblock%!12=q%!| 00002160 31 32 0d 09 4c 1e 77 6f 72 6b 62 6c 6f 63 6b 25 |12..L.workblock%| 00002170 21 31 36 3d 71 25 21 38 2b 68 65 69 67 68 74 25 |!16=q%!8+height%| 00002180 0d 09 56 38 77 6f 72 6b 62 6c 6f 63 6b 25 21 32 |..V8workblock%!2| 00002190 38 3d 71 25 21 32 38 3a c8 99 20 22 57 69 6d 70 |8=q%!28:.. "Wimp| 000021a0 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 77 6f |_OpenWindow",,wo| 000021b0 72 6b 62 6c 6f 63 6b 25 0d 09 60 29 71 25 21 32 |rkblock%..`)q%!2| 000021c0 38 3d 63 6f 6f 72 64 73 3a c8 99 20 22 57 69 6d |8=coords:.. "Wim| 000021d0 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 71 |p_OpenWindow",,q| 000021e0 25 0d 09 6a 05 e1 0d 09 74 05 3a 0d 09 7e 12 dd |%..j....t.:..~..| 000021f0 f2 66 72 6f 6e 74 6d 61 69 6e 77 69 6e 0d 09 88 |.frontmainwin...| 00002200 36 71 25 21 30 3d 6d 61 69 6e 77 69 6e 3a c8 99 |6q%!0=mainwin:..| 00002210 20 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 | "Wimp_GetWindow| 00002220 53 74 61 74 65 22 2c 2c 71 25 3a 71 25 21 32 38 |State",,q%:q%!28| 00002230 3d 2d 31 0d 09 92 28 71 25 21 34 3d 32 3a 71 25 |=-1...(q%!4=2:q%| 00002240 21 38 3d 31 37 36 3a 71 25 21 31 32 3d 31 32 33 |!8=176:q%!12=123| 00002250 38 3a 71 25 21 31 36 3d 39 38 30 0d 09 9c 15 f2 |8:q%!16=980.....| 00002260 6f 70 65 6e 6d 61 69 6e 77 69 6e 64 6f 77 3a e1 |openmainwindow:.| 00002270 0d 09 a6 05 3a 0d 09 b0 12 dd f2 74 65 6d 70 6c |....:......templ| 00002280 61 74 65 76 61 72 73 0d 09 ba 46 69 6e 66 6f 3d |atevars...Finfo=| 00002290 68 61 6e 25 21 30 3a 73 61 76 65 3d 68 61 6e 25 |han%!0:save=han%| 000022a0 21 34 3a 63 6f 6f 72 64 73 3d 68 61 6e 25 21 38 |!4:coords=han%!8| 000022b0 3a 63 6f 6d 6d 61 6e 64 3d 68 61 6e 25 21 31 32 |:command=han%!12| 000022c0 3a 68 65 6c 70 3d 68 61 6e 25 21 31 36 0d 09 c4 |:help=han%!16...| 000022d0 13 70 72 6f 67 72 61 6d 3d 68 61 6e 25 21 32 30 |.program=han%!20| 000022e0 0d 09 ce 05 e1 0d 09 d8 05 3a 0d 09 e2 0f dd f2 |.........:......| 000022f0 76 61 72 69 61 62 6c 65 73 0d 09 ec 3f de 20 71 |variables...?. q| 00002300 25 20 26 33 30 30 2c 6d 65 6e 75 62 6c 6f 63 6b |% &300,menublock| 00002310 25 20 26 32 30 30 2c 77 6f 72 6b 62 6c 6f 63 6b |% &200,workblock| 00002320 25 20 26 37 30 30 2c 69 63 6f 6e 73 62 6c 6f 63 |% &700,iconsbloc| 00002330 6b 25 20 26 31 32 30 30 0d 09 f6 3b de 20 68 61 |k% &1200...;. ha| 00002340 6e 25 20 38 30 2c 63 6f 6c 74 72 61 6e 73 25 20 |n% 80,coltrans% | 00002350 31 36 2c 73 63 61 6c 65 66 61 63 25 20 31 36 2c |16,scalefac% 16,| 00002360 73 70 72 69 74 65 61 72 65 61 25 20 38 31 2a 31 |spritearea% 81*1| 00002370 30 32 34 0d 0a 00 46 70 72 6f 67 6e 61 6d 65 24 |024...Fprogname$| 00002380 3d 22 4c 6f 47 6f 22 3a 74 65 6d 70 6e 61 6d 65 |="LoGo":tempname| 00002390 24 3d 22 69 6e 66 6f 2c 73 61 76 65 2c 63 6f 6f |$="info,save,coo| 000023a0 72 64 73 2c 63 6f 6d 6d 61 6e 64 2c 68 65 6c 70 |rds,command,help| 000023b0 2c 70 72 6f 67 72 61 6d 22 0d 0a 0a 36 69 63 70 |,program"...6icp| 000023c0 6e 74 3d 69 63 6f 6e 73 62 6c 6f 63 6b 25 3a de |nt=iconsblock%:.| 000023d0 20 6d 65 6e 75 69 74 65 6d 24 28 33 30 29 2c 63 | menuitem$(30),c| 000023e0 6f 6d 6d 61 6e 64 69 63 6f 6e 25 28 31 32 29 0d |ommandicon%(12).| 000023f0 0a 14 2d 73 70 72 69 74 65 6e 61 6d 65 24 3d 22 |..-spritename$="| 00002400 64 65 66 61 75 6c 74 22 3a 69 77 64 25 3d 31 32 |default":iwd%=12| 00002410 38 30 3a 69 68 65 25 3d 31 30 32 34 0d 0a 1e 28 |80:ihe%=1024...(| 00002420 63 6f 6d 73 74 72 69 6e 67 24 3d 22 22 3a 73 61 |comstring$="":sa| 00002430 76 68 61 6e 64 6c 65 25 3d 30 3a 73 74 61 74 75 |vhandle%=0:statu| 00002440 73 25 3d 30 0d 0a 28 1f de 20 69 63 6f 6e 74 65 |s%=0..(.. iconte| 00002450 78 74 20 32 30 2c 69 63 6f 6e 73 70 72 69 74 65 |xt 20,iconsprite| 00002460 20 32 30 0d 0a 32 05 e1 0d 0a 3c 05 3a 0d 0a 46 | 20..2....<.:..F| 00002470 0e dd f2 6c 6f 67 6f 76 61 72 73 0d 0a 50 29 68 |...logovars..P)h| 00002480 6f 6d 65 78 70 6f 73 3d 36 34 30 3a 68 6f 6d 65 |omexpos=640:home| 00002490 79 70 6f 73 3d 35 31 32 3a 68 6f 6d 65 61 6e 67 |ypos=512:homeang| 000024a0 6c 65 3d 30 0d 0a 5a 41 74 75 72 74 6c 65 78 70 |le=0..ZAturtlexp| 000024b0 6f 73 3d 68 6f 6d 65 78 70 6f 73 3a 74 75 72 74 |os=homexpos:turt| 000024c0 6c 65 79 70 6f 73 3d 68 6f 6d 65 79 70 6f 73 3a |leypos=homeypos:| 000024d0 74 75 72 74 6c 65 61 6e 67 6c 65 3d 68 6f 6d 65 |turtleangle=home| 000024e0 61 6e 67 6c 65 0d 0a 64 16 70 65 6e 3d b9 3a 70 |angle..d.pen=.:p| 000024f0 65 6e 63 6f 6c 6f 75 72 3d 31 33 0d 0a 6e 4a 6f |encolour=13..nJo| 00002500 6c 64 74 75 72 74 6c 65 78 3d 74 75 72 74 6c 65 |ldturtlex=turtle| 00002510 78 70 6f 73 3a 6f 6c 64 74 75 72 74 6c 65 79 3d |xpos:oldturtley=| 00002520 74 75 72 74 6c 65 79 70 6f 73 3a 6f 6c 64 74 75 |turtleypos:oldtu| 00002530 72 74 6c 65 61 6e 67 6c 65 3d 74 75 72 74 6c 65 |rtleangle=turtle| 00002540 61 6e 67 6c 65 0d 0a 78 23 74 6f 25 3d 30 3a de |angle..x#to%=0:.| 00002550 20 74 6f 73 75 62 24 28 32 35 36 29 2c 74 6f 73 | tosub$(256),tos| 00002560 75 62 25 28 32 35 36 29 0d 0a 82 37 de 20 73 75 |ub%(256)...7. su| 00002570 62 73 74 61 63 6b 25 28 32 30 30 29 2c 6c 6f 6f |bstack%(200),loo| 00002580 70 73 74 61 63 6b 25 28 32 30 30 29 3a 73 74 61 |pstack%(200):sta| 00002590 63 6b 25 3d 30 3a 6c 73 74 61 63 6b 25 3d 30 0d |ck%=0:lstack%=0.| 000025a0 0a 8c 28 de 20 6c 6f 67 6f 66 69 6c 65 25 20 32 |..(. logofile% 2| 000025b0 30 2a 31 30 32 34 2c 63 6f 6d 6d 61 6e 64 6c 69 |0*1024,commandli| 000025c0 6e 65 25 20 32 30 30 0d 0a 96 30 de 20 64 72 61 |ne% 200...0. dra| 000025d0 77 66 69 6c 65 25 20 36 30 2a 31 30 32 34 3a f4 |wfile% 60*1024:.| 000025e0 20 61 20 36 30 6b 20 64 72 61 77 66 69 6c 65 20 | a 60k drawfile | 000025f0 6d 61 78 69 6d 75 6d 0d 0a a0 0e de 20 63 6f 6c |maximum..... col| 00002600 73 25 20 38 30 0d 0a aa 05 e1 0d 0a b4 05 3a 0d |s% 80.........:.| 00002610 0a be 35 dd f2 72 65 64 72 61 77 73 70 72 69 74 |..5..redrawsprit| 00002620 65 28 6d 69 6e 78 25 2c 6d 69 6e 79 25 2c 6d 61 |e(minx%,miny%,ma| 00002630 78 78 25 2c 6d 61 78 79 25 2c 73 63 78 25 2c 73 |xx%,maxy%,scx%,s| 00002640 63 79 25 29 0d 0a c8 4e c8 99 20 22 57 69 6d 70 |cy%)...N.. "Wimp| 00002650 5f 52 65 61 64 50 69 78 54 72 61 6e 73 22 2c 26 |_ReadPixTrans",&| 00002660 31 30 30 2c 73 70 72 69 74 65 61 72 65 61 25 2c |100,spritearea%,| 00002670 73 70 72 69 74 65 6e 61 6d 65 24 2c 2c 2c 2c 73 |spritename$,,,,s| 00002680 63 61 6c 65 66 61 63 25 2c 63 6f 6c 74 72 61 6e |calefac%,coltran| 00002690 73 25 0d 0a d2 19 78 6f 25 3d 6d 69 6e 78 25 2d |s%....xo%=minx%-| 000026a0 73 63 78 25 3a 78 25 3d 78 6f 25 0d 0a dc 1e 79 |scx%:x%=xo%....y| 000026b0 6f 25 3d 6d 61 78 79 25 2d 73 63 79 25 3a 79 25 |o%=maxy%-scy%:y%| 000026c0 3d 79 6f 25 2d 69 68 65 25 0d 0a e6 4c c8 99 20 |=yo%-ihe%...L.. | 000026d0 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 33 30 |"OS_SpriteOp",30| 000026e0 38 2c 73 70 72 69 74 65 61 72 65 61 25 2c 73 70 |8,spritearea%,sp| 000026f0 72 69 74 65 6e 61 6d 65 24 2c 78 25 2c 79 25 2c |ritename$,x%,y%,| 00002700 30 2c 73 63 61 6c 65 66 61 63 25 2c 63 6f 6c 74 |0,scalefac%,colt| 00002710 72 61 6e 73 25 0d 0a f0 3e f2 64 72 61 77 74 75 |rans%...>.drawtu| 00002720 72 74 6c 65 28 78 25 2b 74 75 72 74 6c 65 78 70 |rtle(x%+turtlexp| 00002730 6f 73 2c 79 25 2b 74 75 72 74 6c 65 79 70 6f 73 |os,y%+turtleypos| 00002740 2c 31 31 2c 34 30 2c 74 75 72 74 6c 65 61 6e 67 |,11,40,turtleang| 00002750 6c 65 29 0d 0a fa 05 e1 0d 0b 04 05 3a 0d 0b 0e |le).........:...| 00002760 16 dd f2 63 72 65 61 74 65 73 70 72 69 74 65 61 |...createspritea| 00002770 72 65 61 0d 0b 18 2a 73 70 72 69 74 65 61 72 65 |rea...*spriteare| 00002780 61 25 21 30 3d 38 31 2a 31 30 32 34 3a 73 70 72 |a%!0=81*1024:spr| 00002790 69 74 65 61 72 65 61 25 21 38 3d 31 36 0d 0b 22 |itearea%!8=16.."| 000027a0 24 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 |$.. "OS_SpriteOp| 000027b0 22 2c 32 36 35 2c 73 70 72 69 74 65 61 72 65 61 |",265,spritearea| 000027c0 25 0d 0b 2c 05 e1 0d 0b 36 05 3a 0d 0b 40 1a dd |%..,....6.:..@..| 000027d0 f2 69 6e 73 63 6f 6d 6d 61 6e 64 28 63 6f 6d 6d |.inscommand(comm| 000027e0 61 6e 64 24 29 0d 0b 4a 1a f2 6c 6f 67 6f 63 6f |and$)..J..logoco| 000027f0 6d 6d 61 6e 64 28 63 6f 6d 6d 61 6e 64 24 29 0d |mmand(command$).| 00002800 0b 54 20 e7 20 a4 74 75 72 74 6c 65 6d 6f 76 65 |.T . .turtlemove| 00002810 64 3d b9 20 f2 6d 6f 76 65 74 75 72 74 6c 65 0d |d=. .moveturtle.| 00002820 0b 5e 4a 6f 6c 64 74 75 72 74 6c 65 78 3d 74 75 |.^Joldturtlex=tu| 00002830 72 74 6c 65 78 70 6f 73 3a 6f 6c 64 74 75 72 74 |rtlexpos:oldturt| 00002840 6c 65 79 3d 74 75 72 74 6c 65 79 70 6f 73 3a 6f |ley=turtleypos:o| 00002850 6c 64 74 75 72 74 6c 65 61 6e 67 6c 65 3d 74 75 |ldturtleangle=tu| 00002860 72 74 6c 65 61 6e 67 6c 65 0d 0b 68 11 f2 75 70 |rtleangle..h..up| 00002870 64 61 74 65 63 6f 6f 72 64 73 0d 0b 72 05 e1 0d |datecoords..r...| 00002880 0b 7c 05 3a 0d 0b 86 2e dd f2 63 72 65 61 74 65 |.|.:......create| 00002890 73 70 72 69 74 65 28 6e 61 6d 65 24 2c 77 69 64 |sprite(name$,wid| 000028a0 74 68 25 2c 68 65 69 67 68 74 25 2c 6d 6f 64 65 |th%,height%,mode| 000028b0 25 29 0d 0b 90 45 c8 99 20 22 4f 53 5f 53 70 72 |%)...E.. "OS_Spr| 000028c0 69 74 65 4f 70 22 2c 32 37 31 2c 73 70 72 69 74 |iteOp",271,sprit| 000028d0 65 61 72 65 61 25 2c 6e 61 6d 65 24 2c 30 2c 77 |earea%,name$,0,w| 000028e0 69 64 74 68 25 2f 32 2c 68 65 69 67 68 74 25 2f |idth%/2,height%/| 000028f0 34 2c 6d 6f 64 65 25 0d 0b 9a 05 e1 0d 0b a4 05 |4,mode%.........| 00002900 3a 0d 0b ae 16 dd f2 72 65 61 64 63 6f 6d 6d 61 |:......readcomma| 00002910 6e 64 69 63 6f 6e 73 0d 0b b8 27 77 6f 72 6b 62 |ndicons...'workb| 00002920 6c 6f 63 6b 25 21 30 3d 63 6f 6d 6d 61 6e 64 3a |lock%!0=command:| 00002930 e3 20 69 63 6f 6e 25 3d 30 20 b8 20 31 31 0d 0b |. icon%=0 . 11..| 00002940 c2 39 77 6f 72 6b 62 6c 6f 63 6b 25 21 34 3d 69 |.9workblock%!4=i| 00002950 63 6f 6e 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 |con%:.. "Wimp_Ge| 00002960 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 77 6f 72 |tIconState",,wor| 00002970 6b 62 6c 6f 63 6b 25 0d 0b cc 29 63 6f 6d 6d 61 |kblock%...)comma| 00002980 6e 64 69 63 6f 6e 25 28 69 63 6f 6e 25 29 3d 77 |ndicon%(icon%)=w| 00002990 6f 72 6b 62 6c 6f 63 6b 25 21 32 38 3a ed 3a e1 |orkblock%!28:.:.| 000029a0 0d 0b d6 05 3a 0d 0b e0 0e dd f2 73 63 72 6f 6c |....:......scrol| 000029b0 6c 75 70 0d 0b ea 46 77 6f 72 6b 62 6c 6f 63 6b |lup...Fworkblock| 000029c0 25 21 30 3d 63 6f 6d 6d 61 6e 64 3a 77 6f 72 6b |%!0=command:work| 000029d0 62 6c 6f 63 6b 25 21 34 3d 30 3a 77 6f 72 6b 62 |block%!4=0:workb| 000029e0 6c 6f 63 6b 25 21 38 3d 30 3a 77 6f 72 6b 62 6c |lock%!8=0:workbl| 000029f0 6f 63 6b 25 21 31 32 3d 30 0d 0b f4 11 e3 20 69 |ock%!12=0..... i| 00002a00 63 6f 6e 25 3d 31 20 b8 20 35 0d 0b fe 33 24 28 |con%=1 . 5...3$(| 00002a10 63 6f 6d 6d 61 6e 64 69 63 6f 6e 25 28 69 63 6f |commandicon%(ico| 00002a20 6e 25 2d 31 29 29 3d 24 28 63 6f 6d 6d 61 6e 64 |n%-1))=$(command| 00002a30 69 63 6f 6e 25 28 69 63 6f 6e 25 29 29 0d 0c 08 |icon%(icon%))...| 00002a40 3b 77 6f 72 6b 62 6c 6f 63 6b 25 21 34 3d 69 63 |;workblock%!4=ic| 00002a50 6f 6e 25 2d 31 3a c8 99 20 22 57 69 6d 70 5f 53 |on%-1:.. "Wimp_S| 00002a60 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 77 6f |etIconState",,wo| 00002a70 72 6b 62 6c 6f 63 6b 25 0d 0c 12 05 ed 0d 0c 1c |rkblock%........| 00002a80 12 e3 20 69 63 6f 6e 25 3d 37 20 b8 20 31 31 0d |.. icon%=7 . 11.| 00002a90 0c 26 33 24 28 63 6f 6d 6d 61 6e 64 69 63 6f 6e |.&3$(commandicon| 00002aa0 25 28 69 63 6f 6e 25 2d 31 29 29 3d 24 28 63 6f |%(icon%-1))=$(co| 00002ab0 6d 6d 61 6e 64 69 63 6f 6e 25 28 69 63 6f 6e 25 |mmandicon%(icon%| 00002ac0 29 29 0d 0c 30 3b 77 6f 72 6b 62 6c 6f 63 6b 25 |))..0;workblock%| 00002ad0 21 34 3d 69 63 6f 6e 25 2d 31 3a c8 99 20 22 57 |!4=icon%-1:.. "W| 00002ae0 69 6d 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 |imp_SetIconState| 00002af0 22 2c 2c 77 6f 72 6b 62 6c 6f 63 6b 25 0d 0c 3a |",,workblock%..:| 00002b00 05 ed 0d 0c 44 05 e1 0d 0c 4e 05 3a 0d 0c 58 19 |....D....N.:..X.| 00002b10 dd f2 6c 6f 67 6f 65 72 72 6f 72 28 6d 65 73 73 |..logoerror(mess| 00002b20 61 67 65 24 29 0d 0c 62 18 c8 99 20 22 48 6f 75 |age$)..b... "Hou| 00002b30 72 67 6c 61 73 73 5f 53 6d 61 73 68 22 0d 0c 6c |rglass_Smash"..l| 00002b40 27 e7 20 a6 20 2d 31 31 33 20 85 20 32 35 35 2c |'. . -113 . 255,| 00002b50 22 59 6f 75 20 70 72 65 73 73 65 64 20 45 53 43 |"You pressed ESC| 00002b60 41 50 45 22 0d 0c 76 45 f2 73 65 74 69 63 6f 6e |APE"..vE.seticon| 00002b70 74 65 78 74 28 63 6f 6d 6d 61 6e 64 2c 35 2c 22 |text(command,5,"| 00002b80 45 72 72 6f 72 22 29 3a f2 73 65 74 69 63 6f 6e |Error"):.seticon| 00002b90 74 65 78 74 28 63 6f 6d 6d 61 6e 64 2c 31 31 2c |text(command,11,| 00002ba0 6d 65 73 73 61 67 65 24 29 0d 0c 80 0d f2 73 63 |message$).....sc| 00002bb0 72 6f 6c 6c 75 70 0d 0c 8a 24 f2 73 65 74 69 63 |rollup...$.setic| 00002bc0 6f 6e 74 65 78 74 28 63 6f 6d 6d 61 6e 64 2c 31 |ontext(command,1| 00002bd0 31 2c c4 33 30 2c bd 30 29 29 0d 0c 94 23 f2 73 |1,.30,.0))...#.s| 00002be0 65 74 69 63 6f 6e 74 65 78 74 28 63 6f 6d 6d 61 |eticontext(comma| 00002bf0 6e 64 2c 35 2c 22 4c 6f 47 6f 3a 22 29 0d 0c 9e |nd,5,"LoGo:")...| 00002c00 2a c8 99 20 22 57 69 6d 70 5f 47 65 74 43 61 72 |*.. "Wimp_GetCar| 00002c10 65 74 50 6f 73 69 74 69 6f 6e 22 2c 2c 77 6f 72 |etPosition",,wor| 00002c20 6b 62 6c 6f 63 6b 25 0d 0c a8 60 e7 20 77 6f 72 |kblock%...`. wor| 00002c30 6b 62 6c 6f 63 6b 25 21 30 3d 63 6f 6d 6d 61 6e |kblock%!0=comman| 00002c40 64 20 80 20 77 6f 72 6b 62 6c 6f 63 6b 25 21 34 |d . workblock%!4| 00002c50 3d 31 31 20 c8 99 20 22 57 69 6d 70 5f 53 65 74 |=11 .. "Wimp_Set| 00002c60 43 61 72 65 74 50 6f 73 69 74 69 6f 6e 22 2c 2d |CaretPosition",-| 00002c70 31 3a f2 70 75 74 63 61 72 65 74 28 63 6f 6d 6d |1:.putcaret(comm| 00002c80 61 6e 64 2c 31 31 29 0d 0c b2 2a e7 20 73 74 61 |and,11)...*. sta| 00002c90 74 75 73 25 3e 31 20 73 74 61 74 75 73 25 3d 31 |tus%>1 status%=1| 00002ca0 3a f2 70 72 6f 67 72 61 6d 66 69 6e 69 73 68 65 |:.programfinishe| 00002cb0 64 0d 0c bc 27 e7 20 a6 20 2d 31 31 33 20 85 20 |d...'. . -113 . | 00002cc0 32 35 35 2c 22 59 6f 75 20 70 72 65 73 73 65 64 |255,"You pressed| 00002cd0 20 45 53 43 41 50 45 22 0d 0c c6 0e 65 6e 64 6c | ESCAPE"....endl| 00002ce0 69 6e 65 25 3d b9 0d 0c d0 05 e1 0d 0c da 05 3a |ine%=..........:| 00002cf0 0d 0c e4 29 dd f2 64 72 61 77 74 75 72 74 6c 65 |...)..drawturtle| 00002d00 28 78 25 2c 79 25 2c 63 6f 6c 25 2c 73 69 7a 65 |(x%,y%,col%,size| 00002d10 25 2c 61 6e 67 6c 65 25 29 0d 0c ee 1c c8 99 20 |%,angle%)...... | 00002d20 22 57 69 6d 70 5f 53 65 74 43 6f 6c 6f 75 72 22 |"Wimp_SetColour"| 00002d30 2c 63 6f 6c 25 0d 0c f8 35 ec 20 78 25 2b 28 73 |,col%...5. x%+(s| 00002d40 69 7a 65 25 2a b5 28 b2 28 61 6e 67 6c 65 25 29 |ize%*.(.(angle%)| 00002d50 29 29 2c 79 25 2b 28 73 69 7a 65 25 2a 9b 28 b2 |)),y%+(size%*.(.| 00002d60 28 61 6e 67 6c 65 25 29 29 29 0d 0d 02 3d ec 20 |(angle%)))...=. | 00002d70 78 25 2b 28 73 69 7a 65 25 2a b5 28 b2 28 61 6e |x%+(size%*.(.(an| 00002d80 67 6c 65 25 2b 31 33 35 29 29 29 2c 79 25 2b 28 |gle%+135))),y%+(| 00002d90 73 69 7a 65 25 2a 9b 28 b2 28 61 6e 67 6c 65 25 |size%*.(.(angle%| 00002da0 2b 31 33 35 29 29 29 0d 0d 0c 0e f0 20 38 35 2c |+135)))..... 85,| 00002db0 78 25 2c 79 25 0d 0d 16 3d ec 20 78 25 2b 28 73 |x%,y%...=. x%+(s| 00002dc0 69 7a 65 25 2a b5 28 b2 28 61 6e 67 6c 65 25 2d |ize%*.(.(angle%-| 00002dd0 31 33 35 29 29 29 2c 79 25 2b 28 73 69 7a 65 25 |135))),y%+(size%| 00002de0 2a 9b 28 b2 28 61 6e 67 6c 65 25 2d 31 33 35 29 |*.(.(angle%-135)| 00002df0 29 29 0d 0d 20 38 f0 20 38 35 2c 78 25 2b 28 73 |)).. 8. 85,x%+(s| 00002e00 69 7a 65 25 2a b5 28 b2 28 61 6e 67 6c 65 25 29 |ize%*.(.(angle%)| 00002e10 29 29 2c 79 25 2b 28 73 69 7a 65 25 2a 9b 28 b2 |)),y%+(size%*.(.| 00002e20 28 61 6e 67 6c 65 25 29 29 29 0d 0d 2a 0b df 20 |(angle%)))..*.. | 00002e30 78 25 2c 79 25 0d 0d 34 05 e1 0d 0d 3e 05 3a 0d |x%,y%..4....>.:.| 00002e40 0d 48 2b f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |.H+. -----------| 00002e50 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00002e60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0d 52 2b f4 20 |----------..R+. | 00002e70 7c 20 20 20 20 53 61 76 65 20 26 20 4c 6f 61 64 || Save & Load| 00002e80 20 50 72 6f 63 65 64 75 72 65 73 20 20 20 20 20 | Procedures | 00002e90 20 20 20 20 7c 0d 0d 5c 2b f4 20 2d 2d 2d 2d 2d | |..\+. -----| 00002ea0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00002ec0 0d 0d 66 05 3a 0d 0d 70 0f dd 20 a4 73 61 76 65 |..f.:..p.. .save| 00002ed0 6e 61 6d 65 0d 0d 7a 2a 77 6f 72 6b 62 6c 6f 63 |name..z*workbloc| 00002ee0 6b 25 21 30 3d 73 61 76 68 61 6e 64 6c 65 25 3a |k%!0=savhandle%:| 00002ef0 77 6f 72 6b 62 6c 6f 63 6b 25 21 34 3d 32 0d 0d |workblock%!4=2..| 00002f00 84 38 e7 20 73 61 76 68 61 6e 64 6c 65 25 3d 2d |.8. savhandle%=-| 00002f10 31 20 77 6f 72 6b 62 6c 6f 63 6b 25 21 30 3d 70 |1 workblock%!0=p| 00002f20 72 6f 67 72 61 6d 3a 77 6f 72 6b 62 6c 6f 63 6b |rogram:workblock| 00002f30 25 21 34 3d 32 31 0d 0d 8e 26 c8 99 20 22 57 69 |%!4=21...&.. "Wi| 00002f40 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 |mp_GetIconState"| 00002f50 2c 2c 77 6f 72 6b 62 6c 6f 63 6b 25 0d 0d 98 40 |,,workblock%...@| 00002f60 41 24 3d 22 22 3a 41 25 3d 77 6f 72 6b 62 6c 6f |A$="":A%=workblo| 00002f70 63 6b 25 21 32 38 3a f5 3a 41 24 3d 41 24 2b bd |ck%!28:.:A$=A$+.| 00002f80 3f 41 25 3a 41 25 3d 41 25 2b 31 3a fd 20 3f 41 |?A%:A%=A%+1:. ?A| 00002f90 25 3d 30 20 84 20 3f 41 25 3d 31 33 0d 0d a2 0a |%=0 . ?A%=13....| 00002fa0 3d 41 24 2b bd 30 0d 0d ac 05 3a 0d 0d b6 12 dd |=A$+.0....:.....| 00002fb0 f2 73 61 76 65 6e 61 6d 65 28 41 24 29 0d 0d c0 |.savename(A$)...| 00002fc0 2a 77 6f 72 6b 62 6c 6f 63 6b 25 21 30 3d 73 61 |*workblock%!0=sa| 00002fd0 76 68 61 6e 64 6c 65 25 3a 77 6f 72 6b 62 6c 6f |vhandle%:workblo| 00002fe0 63 6b 25 21 34 3d 32 0d 0d ca 38 e7 20 73 61 76 |ck%!4=2...8. sav| 00002ff0 68 61 6e 64 6c 65 25 3d 2d 31 20 77 6f 72 6b 62 |handle%=-1 workb| 00003000 6c 6f 63 6b 25 21 30 3d 70 72 6f 67 72 61 6d 3a |lock%!0=program:| 00003010 77 6f 72 6b 62 6c 6f 63 6b 25 21 34 3d 32 31 0d |workblock%!4=21.| 00003020 0d d4 26 c8 99 20 22 57 69 6d 70 5f 47 65 74 49 |..&.. "Wimp_GetI| 00003030 63 6f 6e 53 74 61 74 65 22 2c 2c 77 6f 72 6b 62 |conState",,workb| 00003040 6c 6f 63 6b 25 0d 0d de 17 24 28 77 6f 72 6b 62 |lock%....$(workb| 00003050 6c 6f 63 6b 25 21 32 38 29 3d 41 24 0d 0d e8 05 |lock%!28)=A$....| 00003060 e1 0d 0d f2 05 3a 0d 0d fc 0e dd f2 73 61 76 65 |.....:......save| 00003070 64 72 61 67 0d 0e 06 30 71 25 21 30 3d 73 61 76 |drag...0q%!0=sav| 00003080 68 61 6e 64 6c 65 25 3a e7 20 73 61 76 68 61 6e |handle%:. savhan| 00003090 64 6c 65 25 3d 2d 31 20 71 25 21 30 3d 70 72 6f |dle%=-1 q%!0=pro| 000030a0 67 72 61 6d 0d 0e 10 20 c8 99 20 22 57 69 6d 70 |gram... .. "Wimp| 000030b0 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 |_GetWindowState"| 000030c0 2c 2c 71 25 0d 0e 1a 22 78 6f 25 3d 71 25 21 34 |,,q%..."xo%=q%!4| 000030d0 2d 71 25 21 32 30 3a 79 6f 25 3d 71 25 21 31 36 |-q%!20:yo%=q%!16| 000030e0 2d 71 25 21 32 34 0d 0e 24 24 e7 20 73 61 76 68 |-q%!24..$$. savh| 000030f0 61 6e 64 6c 65 25 3d 2d 31 20 71 25 21 34 3d 32 |andle%=-1 q%!4=2| 00003100 33 20 8b 20 71 25 21 34 3d 33 0d 0e 2e 1e c8 99 |3 . q%!4=3......| 00003110 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 | "Wimp_GetIconSt| 00003120 61 74 65 22 2c 2c 71 25 0d 0e 38 48 71 25 21 30 |ate",,q%..8Hq%!0| 00003130 3d 73 61 76 68 61 6e 64 6c 65 25 3a 71 25 21 34 |=savhandle%:q%!4| 00003140 3d 35 3a 71 25 21 38 3d 78 6f 25 2b 71 25 21 38 |=5:q%!8=xo%+q%!8| 00003150 3a 71 25 21 31 32 3d 79 6f 25 2b 71 25 21 31 32 |:q%!12=yo%+q%!12| 00003160 3a 71 25 21 31 36 3d 78 6f 25 2b 71 25 21 31 36 |:q%!16=xo%+q%!16| 00003170 0d 0e 42 43 71 25 21 32 30 3d 79 6f 25 2b 71 25 |..BCq%!20=yo%+q%| 00003180 21 32 30 3a 71 25 21 32 34 3d 30 3a 71 25 21 32 |!20:q%!24=0:q%!2| 00003190 38 3d 30 3a 71 25 21 33 32 3d 26 37 46 46 46 46 |8=0:q%!32=&7FFFF| 000031a0 46 46 46 3a 71 25 21 33 36 3d 26 37 46 46 46 46 |FFF:q%!36=&7FFFF| 000031b0 46 46 46 0d 0e 4c 19 c8 99 20 22 57 69 6d 70 5f |FFF..L... "Wimp_| 000031c0 44 72 61 67 42 6f 78 22 2c 2c 71 25 0d 0e 56 05 |DragBox",,q%..V.| 000031d0 e1 0d 0e 60 05 3a 0d 0e 6a 12 dd f2 64 72 61 67 |...`.:..j...drag| 000031e0 66 69 6e 69 73 68 65 64 0d 0e 74 20 c8 99 20 22 |finished..t .. "| 000031f0 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 72 49 |Wimp_GetPointerI| 00003200 6e 66 6f 22 2c 2c 71 25 0d 0e 7e 31 71 25 21 32 |nfo",,q%..~1q%!2| 00003210 30 3d 71 25 21 31 32 3a 71 25 21 32 34 3d 71 25 |0=q%!12:q%!24=q%| 00003220 21 31 36 3a 71 25 21 32 38 3d 71 25 21 30 3a 71 |!16:q%!28=q%!0:q| 00003230 25 21 33 32 3d 71 25 21 34 0d 0e 88 23 e7 20 73 |%!32=q%!4...#. s| 00003240 61 76 68 61 6e 64 6c 65 25 3d 73 61 76 65 20 71 |avhandle%=save q| 00003250 25 21 33 36 3d 38 31 2a 31 30 32 34 0d 0e 92 21 |%!36=81*1024...!| 00003260 e7 20 73 61 76 68 61 6e 64 6c 65 25 3d 70 72 6f |. savhandle%=pro| 00003270 67 72 61 6d 20 71 25 21 33 36 3d 31 30 0d 0e 9c |gram q%!36=10...| 00003280 1c e7 20 73 61 76 68 61 6e 64 6c 65 25 3d 2d 31 |.. savhandle%=-1| 00003290 20 71 25 21 33 36 3d 31 30 0d 0e a6 1c 71 25 21 | q%!36=10....q%!| 000032a0 30 3d 32 35 36 3a 71 25 21 31 32 3d 30 3a 71 25 |0=256:q%!12=0:q%| 000032b0 21 31 36 3d 31 0d 0e b0 20 e7 20 73 61 76 68 61 |!16=1... . savha| 000032c0 6e 64 6c 65 25 3d 73 61 76 65 20 71 25 21 34 30 |ndle%=save q%!40| 000032d0 3d 26 46 46 39 0d 0e ba 23 e7 20 73 61 76 68 61 |=&FF9...#. savha| 000032e0 6e 64 6c 65 25 3d 70 72 6f 67 72 61 6d 20 71 25 |ndle%=program q%| 000032f0 21 34 30 3d 26 41 46 46 0d 0e c4 1e e7 20 73 61 |!40=&AFF..... sa| 00003300 76 68 61 6e 64 6c 65 25 3d 2d 31 20 71 25 21 34 |vhandle%=-1 q%!4| 00003310 30 3d 26 46 46 46 0d 0e ce 24 24 28 71 25 2b 34 |0=&FFF...$$(q%+4| 00003320 34 29 3d a4 67 65 74 6c 65 61 66 6e 61 6d 65 28 |4)=.getleafname(| 00003330 a4 73 61 76 65 6e 61 6d 65 29 0d 0e d8 2b c8 99 |.savename)...+..| 00003340 20 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 | "Wimp_SendMessa| 00003350 67 65 22 2c 31 37 2c 71 25 2c 71 25 21 32 30 2c |ge",17,q%,q%!20,| 00003360 71 25 21 32 34 0d 0e e2 05 e1 0d 0e ec 05 3a 0d |q%!24.........:.| 00003370 0e f6 15 dd a4 67 65 74 6c 65 61 66 6e 61 6d 65 |.....getleafname| 00003380 28 41 24 29 0d 0f 00 0f c8 95 20 a7 41 24 2c 22 |(A$)...... .A$,"| 00003390 2e 22 29 0d 0f 0a 16 41 24 3d c1 41 24 2c a7 41 |.")....A$=.A$,.A| 000033a0 24 2c 22 2e 22 29 2b 31 29 0d 0f 14 0c ce 3a 3d |$,".")+1).....:=| 000033b0 41 24 2b bd 30 0d 0f 1e 05 3a 0d 0f 28 0e dd f2 |A$+.0....:..(...| 000033c0 64 61 74 61 73 61 76 65 0d 0f 32 23 66 75 6c 6c |datasave..2#full| 000033d0 6e 61 6d 65 24 3d 22 22 3a 61 25 3d 30 3a 62 25 |name$="":a%=0:b%| 000033e0 3d 71 25 3f 28 34 34 2b 61 25 29 0d 0f 3c 0c c8 |=q%?(44+a%)..<..| 000033f0 95 20 62 25 3c 3e 30 0d 0f 46 33 66 75 6c 6c 6e |. b%<>0..F3fulln| 00003400 61 6d 65 24 3d 66 75 6c 6c 6e 61 6d 65 24 2b bd |ame$=fullname$+.| 00003410 28 62 25 29 3a 61 25 3d 61 25 2b 31 3a 62 25 3d |(b%):a%=a%+1:b%=| 00003420 71 25 3f 28 34 34 2b 61 25 29 0d 0f 50 05 ce 0d |q%?(44+a%)..P...| 00003430 0f 5a 2c e7 20 73 61 76 68 61 6e 64 6c 65 25 3d |.Z,. savhandle%=| 00003440 73 61 76 65 20 f2 73 61 76 65 73 70 72 69 74 65 |save .savesprite| 00003450 28 66 75 6c 6c 6e 61 6d 65 24 29 0d 0f 64 20 e7 |(fullname$)..d .| 00003460 20 73 61 76 68 61 6e 64 6c 65 25 3d 70 72 6f 67 | savhandle%=prog| 00003470 72 61 6d 20 71 25 21 33 36 3d 30 0d 0f 6e 1b e7 |ram q%!36=0..n..| 00003480 20 73 61 76 68 61 6e 64 6c 65 25 3d 2d 31 20 71 | savhandle%=-1 q| 00003490 25 21 33 36 3d 30 0d 0f 78 45 e7 20 71 25 21 33 |%!36=0..xE. q%!3| 000034a0 36 3c 3e 2d 31 20 80 20 73 61 76 68 61 6e 64 6c |6<>-1 . savhandl| 000034b0 65 25 3c 3e 2d 31 20 f2 73 65 74 69 63 6f 6e 74 |e%<>-1 .seticont| 000034c0 65 78 74 28 73 61 76 68 61 6e 64 6c 65 25 2c 32 |ext(savhandle%,2| 000034d0 2c 66 75 6c 6c 6e 61 6d 65 24 29 0d 0f 82 42 e7 |,fullname$)...B.| 000034e0 20 71 25 21 33 36 3c 3e 2d 31 20 80 20 73 61 76 | q%!36<>-1 . sav| 000034f0 68 61 6e 64 6c 65 25 3d 2d 31 20 f2 73 65 74 69 |handle%=-1 .seti| 00003500 63 6f 6e 74 65 78 74 28 70 72 6f 67 72 61 6d 2c |context(program,| 00003510 32 31 2c 66 75 6c 6c 6e 61 6d 65 24 29 0d 0f 8c |21,fullname$)...| 00003520 47 71 25 21 31 32 3d 71 25 21 38 3a 71 25 21 31 |Gq%!12=q%!8:q%!1| 00003530 36 3d 33 3a 71 25 21 30 3d 32 35 36 3a c8 99 20 |6=3:q%!0=256:.. | 00003540 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 67 |"Wimp_SendMessag| 00003550 65 22 2c 31 38 2c 71 25 2c 71 25 21 32 30 2c 71 |e",18,q%,q%!20,q| 00003560 25 21 32 34 0d 0f 96 43 e7 20 73 61 76 68 61 6e |%!24...C. savhan| 00003570 64 6c 65 25 3c 3e 70 72 6f 67 72 61 6d 20 80 20 |dle%<>program . | 00003580 73 61 76 68 61 6e 64 6c 65 25 3c 3e 2d 31 20 c8 |savhandle%<>-1 .| 00003590 99 20 22 57 69 6d 70 5f 43 72 65 61 74 65 4d 65 |. "Wimp_CreateMe| 000035a0 6e 75 22 2c 2c 2d 31 0d 0f a0 05 e1 0d 0f aa 05 |nu",,-1.........| 000035b0 3a 0d 0f b4 0c dd f2 73 61 76 65 6f 6b 0d 0f be |:......saveok...| 000035c0 10 41 24 3d a4 73 61 76 65 6e 61 6d 65 0d 0f c8 |.A$=.savename...| 000035d0 43 e7 20 a7 41 24 2c 22 2e 22 29 3d 30 20 85 20 |C. .A$,".")=0 . | 000035e0 31 2c 22 54 6f 20 73 61 76 65 2c 20 64 72 61 67 |1,"To save, drag| 000035f0 20 74 68 65 20 69 63 6f 6e 20 74 6f 20 61 20 64 | the icon to a d| 00003600 69 72 65 63 74 6f 72 79 20 76 69 65 77 65 72 22 |irectory viewer"| 00003610 0d 0f d2 25 e7 20 73 61 76 68 61 6e 64 6c 65 25 |...%. savhandle%| 00003620 3d 73 61 76 65 20 f2 73 61 76 65 73 70 72 69 74 |=save .savesprit| 00003630 65 28 41 24 29 0d 0f dc 1c c8 99 20 22 57 69 6d |e(A$)...... "Wim| 00003640 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c 2d |p_CreateMenu",,-| 00003650 31 0d 0f e6 05 e1 0d 0f f0 05 3a 0d 0f fa 14 dd |1.........:.....| 00003660 f2 73 61 76 65 73 70 72 69 74 65 28 41 24 29 0d |.savesprite(A$).| 00003670 10 04 29 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 |..).. "OS_Sprite| 00003680 4f 70 22 2c 32 36 38 2c 73 70 72 69 74 65 61 72 |Op",268,spritear| 00003690 65 61 25 2c 41 24 3a e1 0d 10 0e 05 3a 0d 10 18 |ea%,A$:.....:...| 000036a0 38 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |8. -------------| 000036b0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000036d0 2d 2d 2d 2d 2d 0d 10 22 38 f4 20 7c 20 20 20 20 |-----.."8. | | 000036e0 20 20 20 20 55 6e 69 76 65 72 73 61 6c 20 46 75 | Universal Fu| 000036f0 6e 63 74 69 6f 6e 73 20 26 20 50 72 6f 63 65 64 |nctions & Proced| 00003700 75 72 65 20 20 20 20 20 20 20 20 20 7c 0d 10 2c |ure |..,| 00003710 38 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |8. -------------| 00003720 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00003740 2d 2d 2d 2d 2d 0d 10 36 05 3a 0d 10 40 27 dd f2 |-----..6.:..@'..| 00003750 73 65 74 69 63 6f 6e 62 61 63 63 6f 6c 28 77 69 |seticonbaccol(wi| 00003760 6e 64 6f 77 25 2c 69 63 6f 6e 25 2c 63 6f 6c 25 |ndow%,icon%,col%| 00003770 29 0d 10 4a 1b 41 24 3d 22 26 22 2b c3 7e 63 6f |)..J.A$="&"+.~co| 00003780 6c 25 2b 22 30 30 30 30 30 30 30 22 0d 10 54 3e |l%+"0000000"..T>| 00003790 77 6f 72 6b 62 6c 6f 63 6b 25 21 30 3d 77 69 6e |workblock%!0=win| 000037a0 64 6f 77 25 3a 77 6f 72 6b 62 6c 6f 63 6b 25 21 |dow%:workblock%!| 000037b0 34 3d 69 63 6f 6e 25 3a 77 6f 72 6b 62 6c 6f 63 |4=icon%:workbloc| 000037c0 6b 25 21 38 3d a0 28 41 24 29 0d 10 5e 3e 77 6f |k%!8=.(A$)..^>wo| 000037d0 72 6b 62 6c 6f 63 6b 25 21 31 32 3d 26 46 30 30 |rkblock%!12=&F00| 000037e0 30 30 30 30 30 3a c8 99 20 22 57 69 6d 70 5f 53 |00000:.. "Wimp_S| 000037f0 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 77 6f |etIconState",,wo| 00003800 72 6b 62 6c 6f 63 6b 25 0d 10 68 05 e1 0d 10 72 |rkblock%..h....r| 00003810 05 3a 0d 10 7c 27 dd f2 73 65 74 69 63 6f 6e 66 |.:..|'..seticonf| 00003820 6f 72 63 6f 6c 28 77 69 6e 64 6f 77 25 2c 69 63 |orcol(window%,ic| 00003830 6f 6e 25 2c 63 6f 6c 25 29 0d 10 86 1b 41 24 3d |on%,col%)....A$=| 00003840 22 26 30 22 2b c3 7e 63 6f 6c 25 2b 22 30 30 30 |"&0"+.~col%+"000| 00003850 30 30 30 22 0d 10 90 3e 77 6f 72 6b 62 6c 6f 63 |000"...>workbloc| 00003860 6b 25 21 30 3d 77 69 6e 64 6f 77 25 3a 77 6f 72 |k%!0=window%:wor| 00003870 6b 62 6c 6f 63 6b 25 21 34 3d 69 63 6f 6e 25 3a |kblock%!4=icon%:| 00003880 77 6f 72 6b 62 6c 6f 63 6b 25 21 38 3d a0 28 41 |workblock%!8=.(A| 00003890 24 29 0d 10 9a 3e 77 6f 72 6b 62 6c 6f 63 6b 25 |$)...>workblock%| 000038a0 21 31 32 3d 26 30 46 30 30 30 30 30 30 3a c8 99 |!12=&0F000000:..| 000038b0 20 22 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 74 | "Wimp_SetIconSt| 000038c0 61 74 65 22 2c 2c 77 6f 72 6b 62 6c 6f 63 6b 25 |ate",,workblock%| 000038d0 0d 10 a4 05 e1 0d 10 ae 05 3a 0d 10 b8 19 dd a4 |.........:......| 000038e0 77 69 6e 64 6f 77 6f 70 65 6e 28 77 69 6e 64 6f |windowopen(windo| 000038f0 77 25 29 0d 10 c2 3d 77 6f 72 6b 62 6c 6f 63 6b |w%)...=workblock| 00003900 25 21 30 3d 77 69 6e 64 6f 77 25 3a c8 99 20 22 |%!0=window%:.. "| 00003910 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 |Wimp_GetWindowSt| 00003920 61 74 65 22 2c 2c 77 6f 72 6b 62 6c 6f 63 6b 25 |ate",,workblock%| 00003930 0d 10 cc 2d 66 6c 61 67 73 25 3d 77 6f 72 6b 62 |...-flags%=workb| 00003940 6c 6f 63 6b 25 21 33 32 3a 6f 70 65 6e 25 3d 66 |lock%!32:open%=f| 00003950 6c 61 67 73 25 20 80 20 31 3c 3c 31 36 0d 10 d6 |lags% . 1<<16...| 00003960 15 e7 20 6f 70 65 6e 25 3e 30 20 3d b9 20 8b 20 |.. open%>0 =. . | 00003970 3d a3 0d 10 e0 05 3a 0d 10 ea 28 dd f2 73 65 74 |=.....:...(..set| 00003980 62 75 74 74 6f 6e 74 79 70 65 28 77 69 6e 64 6f |buttontype(windo| 00003990 77 25 2c 69 63 6f 6e 25 2c 74 79 70 65 25 29 0d |w%,icon%,type%).| 000039a0 10 f4 2b 77 6f 72 6b 62 6c 6f 63 6b 25 21 30 3d |..+workblock%!0=| 000039b0 77 69 6e 64 6f 77 25 3a 77 6f 72 6b 62 6c 6f 63 |window%:workbloc| 000039c0 6b 25 21 34 3d 69 63 6f 6e 25 0d 10 fe 29 77 6f |k%!4=icon%...)wo| 000039d0 72 6b 62 6c 6f 63 6b 25 21 38 3d a0 28 22 26 30 |rkblock%!8=.("&0| 000039e0 30 30 30 22 2b c3 7e 74 79 70 65 25 2b 22 30 30 |000"+.~type%+"00| 000039f0 30 22 29 0d 11 08 3e 77 6f 72 6b 62 6c 6f 63 6b |0")...>workblock| 00003a00 25 21 31 32 3d 26 30 30 30 30 46 30 30 30 3a c8 |%!12=&0000F000:.| 00003a10 99 20 22 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 |. "Wimp_SetIconS| 00003a20 74 61 74 65 22 2c 2c 77 6f 72 6b 62 6c 6f 63 6b |tate",,workblock| 00003a30 25 0d 11 12 05 e1 0d 11 1c 05 3a 0d 11 26 21 dd |%.........:..&!.| 00003a40 f2 75 6e 73 65 6c 65 63 74 61 62 6c 65 28 77 69 |.unselectable(wi| 00003a50 6e 64 6f 77 25 2c 69 63 6f 6e 25 29 0d 11 30 23 |ndow%,icon%)..0#| 00003a60 f2 73 65 74 69 63 6f 6e 66 6f 72 63 6f 6c 28 77 |.seticonforcol(w| 00003a70 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 2c 32 29 0d |indow%,icon%,2).| 00003a80 11 3a 2b 77 6f 72 6b 62 6c 6f 63 6b 25 21 30 3d |.:+workblock%!0=| 00003a90 77 69 6e 64 6f 77 25 3a 77 6f 72 6b 62 6c 6f 63 |window%:workbloc| 00003aa0 6b 25 21 34 3d 69 63 6f 6e 25 0d 11 44 2e 77 6f |k%!4=icon%..D.wo| 00003ab0 72 6b 62 6c 6f 63 6b 25 21 38 3d 26 34 30 30 30 |rkblock%!8=&4000| 00003ac0 30 30 3a 77 6f 72 6b 62 6c 6f 63 6b 25 21 31 32 |00:workblock%!12| 00003ad0 3d 26 34 30 30 30 30 30 0d 11 4e 28 c8 99 20 22 |=&400000..N(.. "| 00003ae0 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 |Wimp_SetIconStat| 00003af0 65 22 2c 2c 77 6f 72 6b 62 6c 6f 63 6b 25 3a e1 |e",,workblock%:.| 00003b00 0d 11 58 05 3a 0d 11 62 1c dd f2 65 6f 72 69 63 |..X.:..b...eoric| 00003b10 6f 6e 28 77 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 |on(window%,icon%| 00003b20 29 0d 11 6c 32 71 25 21 30 3d 77 69 6e 64 6f 77 |)..l2q%!0=window| 00003b30 25 3a 71 25 21 34 3d 69 63 6f 6e 25 3a 71 25 21 |%:q%!4=icon%:q%!| 00003b40 38 3d 31 3c 3c 32 31 3a 71 25 21 31 32 3d 31 3c |8=1<<21:q%!12=1<| 00003b50 3c 32 31 0d 11 76 20 c8 99 20 22 57 69 6d 70 5f |<21..v .. "Wimp_| 00003b60 53 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 71 |SetIconState",,q| 00003b70 25 3a e1 0d 11 80 05 3a 0d 11 8a 1b dd f2 75 6e |%:.....:......un| 00003b80 69 63 6f 6e 28 77 69 6e 64 6f 77 25 2c 69 63 6f |icon(window%,ico| 00003b90 6e 25 29 0d 11 94 2e 71 25 21 30 3d 77 69 6e 64 |n%)....q%!0=wind| 00003ba0 6f 77 25 3a 71 25 21 34 3d 69 63 6f 6e 25 3a 71 |ow%:q%!4=icon%:q| 00003bb0 25 21 38 3d 30 3a 71 25 21 31 32 3d 31 3c 3c 32 |%!8=0:q%!12=1<<2| 00003bc0 31 0d 11 9e 20 c8 99 20 22 57 69 6d 70 5f 53 65 |1... .. "Wimp_Se| 00003bd0 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 71 25 3a |tIconState",,q%:| 00003be0 e1 0d 11 a8 05 3a 0d 11 b2 1c dd a4 69 63 6f 6e |.....:......icon| 00003bf0 65 6f 72 28 77 69 6e 64 6f 77 25 2c 69 63 6f 6e |eor(window%,icon| 00003c00 25 29 0d 11 bc 36 71 25 21 30 3d 77 69 6e 64 6f |%)...6q%!0=windo| 00003c10 77 25 3a 71 25 21 34 3d 69 63 6f 6e 25 3a c8 99 |w%:q%!4=icon%:..| 00003c20 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 | "Wimp_GetIconSt| 00003c30 61 74 65 22 2c 2c 71 25 0d 11 c6 21 e7 20 28 71 |ate",,q%...!. (q| 00003c40 25 21 32 34 20 80 20 31 3c 3c 32 31 29 3e 30 20 |%!24 . 1<<21)>0 | 00003c50 8c 20 3d b9 20 8b 20 3d a3 0d 11 d0 05 3a 0d 11 |. =. . =.....:..| 00003c60 da 1f dd f2 73 65 6c 65 63 74 61 62 6c 65 28 77 |....selectable(w| 00003c70 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 29 0d 11 e4 |indow%,icon%)...| 00003c80 23 f2 73 65 74 69 63 6f 6e 66 6f 72 63 6f 6c 28 |#.seticonforcol(| 00003c90 77 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 2c 37 29 |window%,icon%,7)| 00003ca0 0d 11 ee 2b 77 6f 72 6b 62 6c 6f 63 6b 25 21 30 |...+workblock%!0| 00003cb0 3d 77 69 6e 64 6f 77 25 3a 77 6f 72 6b 62 6c 6f |=window%:workblo| 00003cc0 63 6b 25 21 34 3d 69 63 6f 6e 25 0d 11 f8 28 77 |ck%!4=icon%...(w| 00003cd0 6f 72 6b 62 6c 6f 63 6b 25 21 38 3d 30 3a 77 6f |orkblock%!8=0:wo| 00003ce0 72 6b 62 6c 6f 63 6b 25 21 31 32 3d 26 34 30 30 |rkblock%!12=&400| 00003cf0 30 30 30 0d 12 02 28 c8 99 20 22 57 69 6d 70 5f |000...(.. "Wimp_| 00003d00 53 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 77 |SetIconState",,w| 00003d10 6f 72 6b 62 6c 6f 63 6b 25 3a e1 0d 12 0c 05 3a |orkblock%:.....:| 00003d20 0d 12 16 21 dd a4 72 65 61 64 69 63 6f 6e 74 65 |...!..readiconte| 00003d30 78 74 28 77 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 |xt(window%,icon%| 00003d40 29 0d 12 20 2b 77 6f 72 6b 62 6c 6f 63 6b 25 21 |).. +workblock%!| 00003d50 30 3d 77 69 6e 64 6f 77 25 3a 77 6f 72 6b 62 6c |0=window%:workbl| 00003d60 6f 63 6b 25 21 34 3d 69 63 6f 6e 25 0d 12 2a 26 |ock%!4=icon%..*&| 00003d70 c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e |.. "Wimp_GetIcon| 00003d80 53 74 61 74 65 22 2c 2c 77 6f 72 6b 62 6c 6f 63 |State",,workbloc| 00003d90 6b 25 0d 12 34 15 3d 24 28 77 6f 72 6b 62 6c 6f |k%..4.=$(workblo| 00003da0 63 6b 25 21 32 38 29 0d 12 3e 05 3a 0d 12 48 2d |ck%!28)..>.:..H-| 00003db0 dd f2 73 65 74 69 63 6f 6e 74 65 78 74 28 77 69 |..seticontext(wi| 00003dc0 6e 64 6f 77 25 2c 69 63 6f 6e 25 2c 74 65 78 74 |ndow%,icon%,text| 00003dd0 24 29 3a ea 20 6c 65 6e 25 0d 12 52 2b 77 6f 72 |$):. len%..R+wor| 00003de0 6b 62 6c 6f 63 6b 25 21 30 3d 77 69 6e 64 6f 77 |kblock%!0=window| 00003df0 25 3a 77 6f 72 6b 62 6c 6f 63 6b 25 21 34 3d 69 |%:workblock%!4=i| 00003e00 63 6f 6e 25 0d 12 5c 26 c8 99 20 22 57 69 6d 70 |con%..\&.. "Wimp| 00003e10 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c |_GetIconState",,| 00003e20 77 6f 72 6b 62 6c 6f 63 6b 25 0d 12 66 16 6c 65 |workblock%..f.le| 00003e30 6e 25 3d 77 6f 72 6b 62 6c 6f 63 6b 25 21 33 36 |n%=workblock%!36| 00003e40 0d 12 70 42 24 28 77 6f 72 6b 62 6c 6f 63 6b 25 |..pB$(workblock%| 00003e50 21 32 38 29 3d c0 74 65 78 74 24 2c 6c 65 6e 25 |!28)=.text$,len%| 00003e60 2d 31 29 3a 77 6f 72 6b 62 6c 6f 63 6b 25 21 38 |-1):workblock%!8| 00003e70 3d 30 3a 77 6f 72 6b 62 6c 6f 63 6b 25 21 31 32 |=0:workblock%!12| 00003e80 3d 30 0d 12 7a 26 c8 99 20 22 57 69 6d 70 5f 53 |=0..z&.. "Wimp_S| 00003e90 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 77 6f |etIconState",,wo| 00003ea0 72 6b 62 6c 6f 63 6b 25 0d 12 84 05 e1 0d 12 8e |rkblock%........| 00003eb0 05 3a 0d 12 98 19 dd f2 6f 70 65 6e 77 69 6e 64 |.:......openwind| 00003ec0 6f 77 28 68 61 6e 64 6c 65 25 29 0d 12 a2 3d 77 |ow(handle%)...=w| 00003ed0 6f 72 6b 62 6c 6f 63 6b 25 21 30 3d 68 61 6e 64 |orkblock%!0=hand| 00003ee0 6c 65 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 |le%:.. "Wimp_Get| 00003ef0 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 77 6f |WindowState",,wo| 00003f00 72 6b 62 6c 6f 63 6b 25 0d 12 ac 24 c8 99 20 22 |rkblock%...$.. "| 00003f10 57 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 |Wimp_OpenWindow"| 00003f20 2c 2c 77 6f 72 6b 62 6c 6f 63 6b 25 0d 12 b6 05 |,,workblock%....| 00003f30 e1 0d 12 c0 05 3a 0d 12 ca 2e dd f2 73 65 74 77 |.....:......setw| 00003f40 69 6e 64 6f 77 74 69 74 6c 65 74 65 78 74 28 68 |indowtitletext(h| 00003f50 61 6e 64 6c 65 25 2c 74 65 78 74 24 29 3a ea 20 |andle%,text$):. | 00003f60 6c 65 6e 25 0d 12 d4 3c 77 6f 72 6b 62 6c 6f 63 |len%...<workbloc| 00003f70 6b 25 21 30 3d 68 61 6e 64 6c 65 25 3a c8 99 20 |k%!0=handle%:.. | 00003f80 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 49 |"Wimp_GetWindowI| 00003f90 6e 66 6f 22 2c 2c 77 6f 72 6b 62 6c 6f 63 6b 25 |nfo",,workblock%| 00003fa0 0d 12 de 2b 6c 65 6e 25 3d 77 6f 72 6b 62 6c 6f |...+len%=workblo| 00003fb0 63 6b 25 21 38 34 3a 74 65 78 74 24 3d c0 74 65 |ck%!84:text$=.te| 00003fc0 78 74 24 2c 6c 65 6e 25 2d 31 29 0d 12 e8 21 24 |xt$,len%-1)...!$| 00003fd0 28 77 6f 72 6b 62 6c 6f 63 6b 25 21 37 36 29 3d |(workblock%!76)=| 00003fe0 74 65 78 74 24 2b bd 28 30 29 3a e1 0d 12 f2 05 |text$+.(0):.....| 00003ff0 3a 0d 12 fc 1a dd f2 6f 70 65 6e 74 6f 66 72 6f |:......opentofro| 00004000 6e 74 28 68 61 6e 64 6c 65 25 29 0d 13 06 18 77 |nt(handle%)....w| 00004010 6f 72 6b 62 6c 6f 63 6b 25 21 30 3d 68 61 6e 64 |orkblock%!0=hand| 00004020 6c 65 25 0d 13 10 38 c8 99 20 22 57 69 6d 70 5f |le%...8.. "Wimp_| 00004030 47 65 74 57 69 6e 64 6f 77 49 6e 66 6f 22 2c 2c |GetWindowInfo",,| 00004040 77 6f 72 6b 62 6c 6f 63 6b 25 3a 77 6f 72 6b 62 |workblock%:workb| 00004050 6c 6f 63 6b 25 21 32 38 3d 2d 31 0d 13 1a 24 c8 |lock%!28=-1...$.| 00004060 99 20 22 57 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 |. "Wimp_OpenWind| 00004070 6f 77 22 2c 2c 77 6f 72 6b 62 6c 6f 63 6b 25 0d |ow",,workblock%.| 00004080 13 24 05 e1 0d 13 2e 05 3a 0d 13 38 1d dd f2 70 |.$......:..8...p| 00004090 75 74 63 61 72 65 74 28 77 69 6e 64 6f 77 25 2c |utcaret(window%,| 000040a0 69 63 6f 6e 25 29 0d 13 42 33 c8 99 20 22 57 69 |icon%)..B3.. "Wi| 000040b0 6d 70 5f 53 65 74 43 61 72 65 74 50 6f 73 69 74 |mp_SetCaretPosit| 000040c0 69 6f 6e 22 2c 77 69 6e 64 6f 77 25 2c 69 63 6f |ion",window%,ico| 000040d0 6e 25 2c 2c 2c 2d 31 2c 30 0d 13 4c 05 e1 0d 13 |n%,,,-1,0..L....| 000040e0 56 05 3a 0d 13 60 11 dd f2 64 69 73 6f 77 6e 63 |V.:..`...disownc| 000040f0 61 72 65 74 0d 13 6a 23 c8 99 20 22 57 69 6d 70 |aret..j#.. "Wimp| 00004100 5f 53 65 74 43 61 72 65 74 50 6f 73 69 74 69 6f |_SetCaretPositio| 00004110 6e 22 2c 2d 31 3a e1 0d 13 74 05 3a 0d 13 7e 25 |n",-1:...t.:..~%| 00004120 dd a4 6d 65 6e 75 28 74 65 78 74 24 2c 77 69 64 |..menu(text$,wid| 00004130 74 68 25 2c 68 65 69 67 68 74 25 2c 67 61 70 25 |th%,height%,gap%| 00004140 29 0d 13 88 1c 24 50 25 3d c0 74 65 78 74 24 2c |)....$P%=.text$,| 00004150 31 31 29 2b bd 30 3a 50 25 2b 3d 31 32 0d 13 92 |11)+.0:P%+=12...| 00004160 0a 5b 4f 50 54 20 30 0d 13 9c 3f 45 51 55 42 20 |.[OPT 0...?EQUB | 00004170 37 3a 45 51 55 42 20 32 3a 45 51 55 42 20 37 3a |7:EQUB 2:EQUB 7:| 00004180 45 51 55 42 20 30 20 20 20 20 3b 46 6f 75 72 20 |EQUB 0 ;Four | 00004190 64 65 66 69 6e 61 62 6c 65 20 6d 65 6e 75 20 63 |definable menu c| 000041a0 6f 6c 6f 75 72 73 0d 13 a6 3c 45 51 55 44 20 77 |olours...<EQUD w| 000041b0 69 64 74 68 25 2a 31 36 20 20 20 20 20 20 20 20 |idth%*16 | 000041c0 20 20 20 20 20 20 20 20 20 3b 57 69 64 74 68 20 | ;Width | 000041d0 6f 66 20 6d 65 6e 75 20 28 4f 53 20 55 6e 69 74 |of menu (OS Unit| 000041e0 73 29 0d 13 b0 41 45 51 55 44 20 68 65 69 67 68 |s)...AEQUD heigh| 000041f0 74 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |t% | 00004200 20 20 20 20 20 3b 48 65 69 67 68 74 20 6f 66 20 | ;Height of | 00004210 6f 6e 65 20 69 74 65 6d 20 28 4f 53 20 55 6e 69 |one item (OS Uni| 00004220 74 73 29 0d 13 ba 49 45 51 55 44 20 67 61 70 25 |ts)...IEQUD gap%| 00004230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004240 20 20 20 20 20 20 3b 56 65 72 74 69 63 61 6c 20 | ;Vertical | 00004250 67 61 70 20 62 65 74 77 65 65 6e 20 69 74 65 6d |gap between item| 00004260 73 20 28 4f 53 20 55 6e 69 74 73 29 0d 13 c4 08 |s (OS Units)....| 00004270 5d 3a 3d 30 0d 13 ce 05 3a 0d 13 d8 31 dd a4 6d |]:=0....:...1..m| 00004280 65 6e 75 69 74 65 6d 28 74 65 78 74 24 2c 66 6c |enuitem(text$,fl| 00004290 61 67 73 25 2c 73 75 62 6d 65 6e 75 25 2c 69 63 |ags%,submenu%,ic| 000042a0 6f 6e 25 2c 6c 61 73 74 25 29 0d 13 e2 21 e7 20 |on%,last%)...!. | 000042b0 6c 61 73 74 25 3d b9 20 66 6c 61 67 73 25 3d 66 |last%=. flags%=f| 000042c0 6c 61 67 73 25 20 84 20 26 38 30 0d 13 ec 0a 5b |lags% . &80....[| 000042d0 4f 50 54 20 30 0d 13 f6 2e 45 51 55 44 20 66 6c |OPT 0....EQUD fl| 000042e0 61 67 73 25 20 20 20 20 20 20 20 20 20 20 20 20 |ags% | 000042f0 20 20 20 20 20 20 20 20 3b 4d 65 6e 75 20 66 6c | ;Menu fl| 00004300 61 67 73 0d 14 00 40 45 51 55 44 20 73 75 62 6d |ags...@EQUD subm| 00004310 65 6e 75 25 20 20 20 20 20 20 20 20 20 20 20 20 |enu% | 00004320 20 20 20 20 20 20 3b 53 75 62 6d 65 6e 75 20 70 | ;Submenu p| 00004330 6f 69 6e 74 65 72 20 28 2d 31 20 69 66 20 6e 6f |ointer (-1 if no| 00004340 6e 65 29 0d 14 0a 4f 45 51 55 44 20 69 63 6f 6e |ne)...OEQUD icon| 00004350 25 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |% | 00004360 20 20 20 20 20 20 3b 4d 65 6e 75 20 69 74 65 6d | ;Menu item| 00004370 20 69 63 6f 6e 20 66 6c 61 67 73 20 28 61 73 20 | icon flags (as | 00004380 66 6f 72 20 61 20 6e 6f 72 6d 61 6c 20 69 63 6f |for a normal ico| 00004390 6e 29 0d 14 14 21 5d 3a 24 50 25 3d c0 74 65 78 |n)...!]:$P%=.tex| 000043a0 74 24 2c 31 31 29 2b bd 30 3a 50 25 2b 3d 31 32 |t$,11)+.0:P%+=12| 000043b0 3a 3d 30 0d 14 1e 05 3a 0d 14 28 0f dd a4 70 61 |:=0....:..(...pa| 000043c0 72 28 73 65 70 24 29 0d 14 32 2b 69 31 25 3d 69 |r(sep$)..2+i1%=i| 000043d0 25 2b 31 3a 69 25 3d a7 6d 65 6e 75 73 74 72 69 |%+1:i%=.menustri| 000043e0 6e 67 24 2b 73 65 70 24 2c 73 65 70 24 2c 69 31 |ng$+sep$,sep$,i1| 000043f0 25 29 0d 14 3c 1d 3d c1 6d 65 6e 75 73 74 72 69 |%)..<.=.menustri| 00004400 6e 67 24 2c 69 31 25 2c 69 25 2d 69 31 25 29 0d |ng$,i1%,i%-i1%).| 00004410 14 46 05 3a 0d 14 50 29 dd a4 63 72 6d 75 28 6d |.F.:..P)..crmu(m| 00004420 65 6e 75 73 74 72 69 6e 67 24 2c 6d 75 74 69 74 |enustring$,mutit| 00004430 6c 65 24 2c 61 64 64 72 65 73 73 25 29 0d 14 5a |le$,address%)..Z| 00004440 34 6e 75 6d 62 65 72 25 3d 2d 31 3a 69 25 3d 30 |4number%=-1:i%=0| 00004450 3a 77 69 64 74 68 25 3d a9 28 6d 75 74 69 74 6c |:width%=.(mutitl| 00004460 65 24 29 2d 32 3a 50 25 3d 61 64 64 72 65 73 73 |e$)-2:P%=address| 00004470 25 0d 14 64 2d f5 3a 6e 75 6d 62 65 72 25 2b 3d |%..d-.:number%+=| 00004480 31 3a 6d 65 6e 75 69 74 65 6d 24 28 6e 75 6d 62 |1:menuitem$(numb| 00004490 65 72 25 29 3d a4 70 61 72 28 22 2c 22 29 0d 14 |er%)=.par(",")..| 000044a0 6e 26 fd 20 6d 65 6e 75 69 74 65 6d 24 28 6e 75 |n&. menuitem$(nu| 000044b0 6d 62 65 72 25 29 3d 22 22 3a 6e 75 6d 62 65 72 |mber%)="":number| 000044c0 25 2d 3d 31 0d 14 78 28 5b 4f 50 54 20 30 3a a4 |%-=1..x([OPT 0:.| 000044d0 6d 65 6e 75 28 6d 75 74 69 74 6c 65 24 2c 77 69 |menu(mutitle$,wi| 000044e0 64 74 68 25 2c 34 30 2c 30 29 3a 5d 0d 14 82 1b |dth%,40,0):]....| 000044f0 e3 20 6d 65 6e 75 69 74 65 6d 25 3d 30 20 b8 20 |. menuitem%=0 . | 00004500 6e 75 6d 62 65 72 25 0d 14 8c 28 69 74 65 6d 66 |number%...(itemf| 00004510 6c 61 67 73 25 3d a4 6d 65 6e 75 69 74 65 6d 66 |lags%=.menuitemf| 00004520 6c 61 67 73 28 6d 65 6e 75 69 74 65 6d 25 29 0d |lags(menuitem%).| 00004530 14 96 18 69 63 6f 6e 66 6c 61 67 73 25 3d 26 30 |...iconflags%=&0| 00004540 37 30 30 30 30 32 31 0d 14 a0 27 73 75 62 6d 65 |7000021...'subme| 00004550 6e 75 25 3d a4 73 75 62 6d 65 6e 75 70 6f 69 6e |nu%=.submenupoin| 00004560 74 65 72 28 6d 65 6e 75 69 74 65 6d 25 29 0d 14 |ter(menuitem%)..| 00004570 aa 2f e7 20 6d 65 6e 75 69 74 65 6d 25 3d 6e 75 |./. menuitem%=nu| 00004580 6d 62 65 72 25 20 6c 61 73 74 6f 70 74 25 3d b9 |mber% lastopt%=.| 00004590 20 8b 20 6c 61 73 74 6f 70 74 25 3d a3 0d 14 b4 | . lastopt%=....| 000045a0 43 e7 20 a9 28 6d 65 6e 75 69 74 65 6d 24 28 6d |C. .(menuitem$(m| 000045b0 65 6e 75 69 74 65 6d 25 29 29 3e 77 69 64 74 68 |enuitem%))>width| 000045c0 25 20 77 69 64 74 68 25 3d a9 28 6d 65 6e 75 69 |% width%=.(menui| 000045d0 74 65 6d 24 28 6d 65 6e 75 69 74 65 6d 25 29 29 |tem$(menuitem%))| 000045e0 0d 14 be 0a 5b 4f 50 54 20 30 0d 14 c8 4b a4 6d |....[OPT 0...K.m| 000045f0 65 6e 75 69 74 65 6d 28 6d 65 6e 75 69 74 65 6d |enuitem(menuitem| 00004600 24 28 6d 65 6e 75 69 74 65 6d 25 29 2c 69 74 65 |$(menuitem%),ite| 00004610 6d 66 6c 61 67 73 25 2c 73 75 62 6d 65 6e 75 25 |mflags%,submenu%| 00004620 2c 69 63 6f 6e 66 6c 61 67 73 25 2c 6c 61 73 74 |,iconflags%,last| 00004630 6f 70 74 25 29 0d 14 d2 49 5d 3a ed 3a 77 69 64 |opt%)...I]:.:wid| 00004640 74 68 25 2b 3d 31 3a 61 64 64 72 25 3d 50 25 3a |th%+=1:addr%=P%:| 00004650 50 25 3d 61 64 64 72 65 73 73 25 3a 5b 4f 50 54 |P%=address%:[OPT| 00004660 20 30 3a a4 6d 65 6e 75 28 6d 75 74 69 74 6c 65 | 0:.menu(mutitle| 00004670 24 2c 77 69 64 74 68 25 2c 34 30 2c 30 29 0d 14 |$,width%,40,0)..| 00004680 dc 0c 5d 3a 3d 61 64 64 72 25 0d 14 e6 05 3a 0d |..]:=addr%....:.| 00004690 14 f0 18 dd a4 73 75 62 6d 65 6e 75 70 6f 69 6e |.....submenupoin| 000046a0 74 65 72 28 41 25 29 0d 14 fa 2b 41 24 3d 6d 65 |ter(A%)...+A$=me| 000046b0 6e 75 69 74 65 6d 24 28 41 25 29 3a 69 25 3d a7 |nuitem$(A%):i%=.| 000046c0 41 24 2c 22 3e 22 29 3a e7 20 69 25 3d 30 20 3d |A$,">"):. i%=0 =| 000046d0 2d 31 0d 15 04 2c 42 24 3d c2 41 24 2c a9 28 41 |-1...,B$=.A$,.(A| 000046e0 24 29 2d 69 25 29 3a 6d 65 6e 75 69 74 65 6d 24 |$)-i%):menuitem$| 000046f0 28 41 25 29 3d c0 41 24 2c 69 25 2d 31 29 0d 15 |(A%)=.A$,i%-1)..| 00004700 0e 23 e7 20 c0 42 24 2c 31 29 3d 22 3e 22 20 8c |.#. .B$,1)=">" .| 00004710 20 3d a0 28 c2 42 24 2c a9 28 42 24 29 2d 31 29 | =.(.B$,.(B$)-1)| 00004720 29 0d 15 18 0a 3d a0 28 42 24 29 0d 15 22 05 3a |)....=.(B$)..".:| 00004730 0d 15 2c 17 dd a4 6d 65 6e 75 69 74 65 6d 66 6c |..,...menuitemfl| 00004740 61 67 73 28 41 25 29 0d 15 36 1d 41 24 3d 6d 65 |ags(A%)..6.A$=me| 00004750 6e 75 69 74 65 6d 24 28 41 25 29 3a 66 6c 61 67 |nuitem$(A%):flag| 00004760 73 25 3d 30 0d 15 40 2e e7 20 a7 41 24 2c 22 80 |s%=0..@.. .A$,".| 00004770 22 29 3e 30 20 41 24 3d a4 6f 75 74 63 68 61 72 |")>0 A$=.outchar| 00004780 28 41 24 2c 22 80 22 29 3a 66 6c 61 67 73 25 2b |(A$,"."):flags%+| 00004790 3d 31 0d 15 4a 2e e7 20 a7 41 24 2c 22 2d 22 29 |=1..J.. .A$,"-")| 000047a0 3e 30 20 41 24 3d a4 6f 75 74 63 68 61 72 28 41 |>0 A$=.outchar(A| 000047b0 24 2c 22 2d 22 29 3a 66 6c 61 67 73 25 2b 3d 32 |$,"-"):flags%+=2| 000047c0 0d 15 54 1c 6d 65 6e 75 69 74 65 6d 24 28 41 25 |..T.menuitem$(A%| 000047d0 29 3d 41 24 3a 3d 66 6c 61 67 73 25 0d 15 5e 05 |)=A$:=flags%..^.| 000047e0 3a 0d 15 68 14 dd a4 6f 75 74 63 68 61 72 28 43 |:..h...outchar(C| 000047f0 24 2c 44 24 29 0d 15 72 27 69 25 3d a7 43 24 2c |$,D$)..r'i%=.C$,| 00004800 44 24 29 3a 3d c0 43 24 2c 69 25 2d 31 29 2b c2 |D$):=.C$,i%-1)+.| 00004810 43 24 2c a9 28 43 24 29 2d 69 25 29 0d 15 7c 05 |C$,.(C$)-i%)..|.| 00004820 3a 0d 15 86 44 dd a4 74 65 6d 70 6c 61 74 65 28 |:...D..template(| 00004830 74 65 6d 70 24 2c 66 69 6c 65 6e 61 6d 65 24 2c |temp$,filename$,| 00004840 61 64 64 72 25 2c 73 69 7a 65 25 2c 68 61 6e 64 |addr%,size%,hand| 00004850 6c 65 61 64 64 72 25 29 3a ea 20 6e 75 6d 62 65 |leaddr%):. numbe| 00004860 72 25 2c 69 25 0d 15 90 25 c8 99 20 22 57 69 6d |r%,i%...%.. "Wim| 00004870 70 5f 4f 70 65 6e 54 65 6d 70 6c 61 74 65 22 2c |p_OpenTemplate",| 00004880 2c 66 69 6c 65 6e 61 6d 65 24 0d 15 9a 20 6e 75 |,filename$... nu| 00004890 6d 62 65 72 25 3d 2d 31 3a 69 25 3d 30 3a 73 69 |mber%=-1:i%=0:si| 000048a0 7a 65 25 2b 3d 61 64 64 72 25 0d 15 a4 32 f5 3a |ze%+=addr%...2.:| 000048b0 6e 75 6d 62 65 72 25 2b 3d 31 3a 6e 61 6d 65 24 |number%+=1:name$| 000048c0 3d a4 70 61 72 74 65 6d 70 28 22 2c 22 29 3a e7 |=.partemp(","):.| 000048d0 20 6e 61 6d 65 24 3c 3e 22 22 20 8c 0d 15 ae 45 | name$<>"" ....E| 000048e0 c8 99 20 22 57 69 6d 70 5f 4c 6f 61 64 54 65 6d |.. "Wimp_LoadTem| 000048f0 70 6c 61 74 65 22 2c 2c 77 6f 72 6b 62 6c 6f 63 |plate",,workbloc| 00004900 6b 25 2c 61 64 64 72 25 2c 73 69 7a 65 25 2c 2d |k%,addr%,size%,-| 00004910 31 2c 6e 61 6d 65 24 20 b8 20 2c 2c 61 64 64 72 |1,name$ . ,,addr| 00004920 25 0d 15 b8 43 c8 99 20 22 57 69 6d 70 5f 43 72 |%...C.. "Wimp_Cr| 00004930 65 61 74 65 57 69 6e 64 6f 77 22 2c 2c 77 6f 72 |eateWindow",,wor| 00004940 6b 62 6c 6f 63 6b 25 20 b8 20 21 28 68 61 6e 64 |kblock% . !(hand| 00004950 6c 65 61 64 64 72 25 2b 28 34 2a 6e 75 6d 62 65 |leaddr%+(4*numbe| 00004960 72 25 29 29 0d 15 c2 2f cd 3a fd 20 6e 61 6d 65 |r%)).../.:. name| 00004970 24 3d 22 22 3a c8 99 20 22 57 69 6d 70 5f 43 6c |$="":.. "Wimp_Cl| 00004980 6f 73 65 54 65 6d 70 6c 61 74 65 22 3a 3d 61 64 |oseTemplate":=ad| 00004990 64 72 25 0d 15 cc 05 3a 0d 15 d6 13 dd a4 70 61 |dr%....:......pa| 000049a0 72 74 65 6d 70 28 73 65 70 24 29 0d 15 e0 25 69 |rtemp(sep$)...%i| 000049b0 31 25 3d 69 25 2b 31 3a 69 25 3d a7 74 65 6d 70 |1%=i%+1:i%=.temp| 000049c0 24 2b 73 65 70 24 2c 73 65 70 24 2c 69 31 25 29 |$+sep$,sep$,i1%)| 000049d0 0d 15 ea 17 3d c1 74 65 6d 70 24 2c 69 31 25 2c |....=.temp$,i1%,| 000049e0 69 25 2d 69 31 25 29 0d 15 f4 05 3a 0d 15 fe 44 |i%-i1%)....:...D| 000049f0 dd a4 6d 61 6b 65 69 63 6f 6e 28 77 69 6e 64 6f |..makeicon(windo| 00004a00 77 25 2c 6d 69 6e 78 25 2c 6d 69 6e 79 25 2c 6d |w%,minx%,miny%,m| 00004a10 61 78 78 25 2c 6d 61 78 79 25 2c 66 6c 61 67 73 |axx%,maxy%,flags| 00004a20 25 2c 73 70 72 69 74 65 25 2c 74 65 78 74 25 29 |%,sprite%,text%)| 00004a30 0d 16 08 3e 77 6f 72 6b 62 6c 6f 63 6b 25 21 30 |...>workblock%!0| 00004a40 3d 77 69 6e 64 6f 77 25 3a 77 6f 72 6b 62 6c 6f |=window%:workblo| 00004a50 63 6b 25 21 34 3d 6d 69 6e 78 25 3a 77 6f 72 6b |ck%!4=minx%:work| 00004a60 62 6c 6f 63 6b 25 21 38 3d 6d 69 6e 79 25 0d 16 |block%!8=miny%..| 00004a70 12 2b 77 6f 72 6b 62 6c 6f 63 6b 25 21 31 32 3d |.+workblock%!12=| 00004a80 6d 61 78 78 25 3a 77 6f 72 6b 62 6c 6f 63 6b 25 |maxx%:workblock%| 00004a90 21 31 36 3d 6d 61 78 79 25 0d 16 1c 42 77 6f 72 |!16=maxy%...Bwor| 00004aa0 6b 62 6c 6f 63 6b 25 21 32 30 3d 66 6c 61 67 73 |kblock%!20=flags| 00004ab0 25 3a 77 6f 72 6b 62 6c 6f 63 6b 25 21 32 34 3d |%:workblock%!24=| 00004ac0 74 65 78 74 25 3a 77 6f 72 6b 62 6c 6f 63 6b 25 |text%:workblock%| 00004ad0 21 32 38 3d 73 70 72 69 74 65 25 0d 16 26 14 77 |!28=sprite%..&.w| 00004ae0 6f 72 6b 62 6c 6f 63 6b 25 21 33 32 3d 32 30 0d |orkblock%!32=20.| 00004af0 16 30 3f c8 99 20 22 57 69 6d 70 5f 43 72 65 61 |.0?.. "Wimp_Crea| 00004b00 74 65 49 63 6f 6e 22 2c 2c 77 6f 72 6b 62 6c 6f |teIcon",,workblo| 00004b10 63 6b 25 20 b8 20 69 63 6f 6e 68 61 6e 64 6c 65 |ck% . iconhandle| 00004b20 25 3a 3d 69 63 6f 6e 68 61 6e 64 6c 65 25 0d 16 |%:=iconhandle%..| 00004b30 3a 05 3a 0d 16 44 12 dd f2 65 72 72 6f 72 28 6e |:.:..D...error(n| 00004b40 61 6d 65 24 29 0d 16 4e 2d e7 20 9f 3d 32 36 20 |ame$)..N-. .=26 | 00004b50 f2 6c 6f 67 6f 65 72 72 6f 72 28 22 42 61 64 20 |.logoerror("Bad | 00004b60 6c 6f 67 6f 20 70 61 72 61 6d 65 74 65 72 22 29 |logo parameter")| 00004b70 3a e1 0d 16 58 20 77 6f 72 6b 62 6c 6f 63 6b 25 |:...X workblock%| 00004b80 21 30 3d 9f 3a ea 20 63 6c 69 63 6b 65 64 5f 6f |!0=.:. clicked_o| 00004b90 6e 25 0d 16 62 3d 24 28 77 6f 72 6b 62 6c 6f 63 |n%..b=$(workbloc| 00004ba0 6b 25 2b 34 29 3d f6 24 2b 22 20 28 69 6e 74 65 |k%+4)=.$+" (inte| 00004bb0 72 6e 61 6c 20 65 72 72 6f 72 20 63 6f 64 65 20 |rnal error code | 00004bc0 22 2b c3 28 9e 29 2b 22 29 22 2b bd 28 30 29 0d |"+.(.)+")"+.(0).| 00004bd0 16 6c 1e e7 20 9f 3d 32 35 35 20 24 28 77 6f 72 |.l.. .=255 $(wor| 00004be0 6b 62 6c 6f 63 6b 25 2b 34 29 3d f6 24 0d 16 76 |kblock%+4)=.$..v| 00004bf0 3b c8 99 20 22 57 69 6d 70 5f 52 65 70 6f 72 74 |;.. "Wimp_Report| 00004c00 45 72 72 6f 72 22 2c 77 6f 72 6b 62 6c 6f 63 6b |Error",workblock| 00004c10 25 2c 33 2c 6e 61 6d 65 24 20 b8 20 2c 63 6c 69 |%,3,name$ . ,cli| 00004c20 63 6b 65 64 5f 6f 6e 25 0d 16 80 1b e7 20 63 6c |cked_on%..... cl| 00004c30 69 63 6b 65 64 5f 6f 6e 25 3d 32 20 71 75 69 74 |icked_on%=2 quit| 00004c40 25 3d b9 0d 16 8a 05 e1 0d 16 94 05 3a 0d 16 9e |%=..........:...| 00004c50 26 dd a4 77 69 6d 70 69 6e 69 74 28 6b 6e 6f 77 |&..wimpinit(know| 00004c60 6e 76 65 72 73 69 6f 6e 2c 74 61 73 6b 6e 61 6d |nversion,tasknam| 00004c70 65 24 29 0d 16 a8 47 c8 99 20 22 57 69 6d 70 5f |e$)...G.. "Wimp_| 00004c80 49 6e 69 74 69 61 6c 69 73 65 22 2c 32 30 30 2a |Initialise",200*| 00004c90 6b 6e 6f 77 6e 76 65 72 73 69 6f 6e 2c 26 34 42 |knownversion,&4B| 00004ca0 35 33 34 31 35 34 2c 74 61 73 6b 6e 61 6d 65 24 |534154,taskname$| 00004cb0 20 b8 20 76 65 72 73 69 6f 6e 0d 16 b2 0c 3d 76 | . version....=v| 00004cc0 65 72 73 69 6f 6e 0d 16 bc 05 3a 0d 16 c6 41 dd |ersion....:...A.| 00004cd0 a4 63 72 77 69 6e 28 78 25 2c 79 25 2c 77 25 2c |.crwin(x%,y%,w%,| 00004ce0 68 25 2c 66 6c 61 67 73 25 2c 62 63 6f 6c 25 2c |h%,flags%,bcol%,| 00004cf0 78 65 25 2c 79 65 25 2c 77 61 66 25 2c 74 69 74 |xe%,ye%,waf%,tit| 00004d00 6c 65 25 2c 6c 65 6e 67 74 68 25 29 0d 16 d0 3c |le%,length%)...<| 00004d10 24 77 6f 72 6b 62 6c 6f 63 6b 25 3d c4 39 32 2c |$workblock%=.92,| 00004d20 bd 28 30 29 29 3a f4 20 46 69 6c 6c 20 74 68 65 |.(0)):. Fill the| 00004d30 20 77 69 6e 64 6f 77 20 62 6c 6f 63 6b 20 77 69 | window block wi| 00004d40 74 68 20 7a 65 72 6f 73 0d 16 da 4a 77 6f 72 6b |th zeros...Jwork| 00004d50 62 6c 6f 63 6b 25 21 30 3d 78 25 3a 77 6f 72 6b |block%!0=x%:work| 00004d60 62 6c 6f 63 6b 25 21 34 3d 79 25 3a 77 6f 72 6b |block%!4=y%:work| 00004d70 62 6c 6f 63 6b 25 21 38 3d 78 25 2b 77 25 3a 77 |block%!8=x%+w%:w| 00004d80 6f 72 6b 62 6c 6f 63 6b 25 21 31 32 3d 79 25 2b |orkblock%!12=y%+| 00004d90 68 25 0d 16 e4 29 77 6f 72 6b 62 6c 6f 63 6b 25 |h%...)workblock%| 00004da0 21 32 34 3d 2d 31 3a 77 6f 72 6b 62 6c 6f 63 6b |!24=-1:workblock| 00004db0 25 21 32 38 3d 66 6c 61 67 73 25 0d 16 ee 47 77 |%!28=flags%...Gw| 00004dc0 6f 72 6b 62 6c 6f 63 6b 25 3f 33 32 3d 37 3a 77 |orkblock%?32=7:w| 00004dd0 6f 72 6b 62 6c 6f 63 6b 25 3f 33 33 3d 32 3a 77 |orkblock%?33=2:w| 00004de0 6f 72 6b 62 6c 6f 63 6b 25 3f 33 34 3d 37 3a 77 |orkblock%?34=7:w| 00004df0 6f 72 6b 62 6c 6f 63 6b 25 3f 33 35 3d 62 63 6f |orkblock%?35=bco| 00004e00 6c 25 0d 16 f8 34 77 6f 72 6b 62 6c 6f 63 6b 25 |l%...4workblock%| 00004e10 3f 33 36 3d 33 3a 77 6f 72 6b 62 6c 6f 63 6b 25 |?36=3:workblock%| 00004e20 3f 33 37 3d 31 3a 77 6f 72 6b 62 6c 6f 63 6b 25 |?37=1:workblock%| 00004e30 3f 33 38 3d 31 32 0d 17 02 28 77 6f 72 6b 62 6c |?38=12...(workbl| 00004e40 6f 63 6b 25 21 34 34 3d 2d 79 65 25 3a 77 6f 72 |ock%!44=-ye%:wor| 00004e50 6b 62 6c 6f 63 6b 25 21 34 38 3d 78 65 25 0d 17 |kblock%!48=xe%..| 00004e60 0c 2d 77 6f 72 6b 62 6c 6f 63 6b 25 21 35 36 3d |.-workblock%!56=| 00004e70 26 31 33 44 3a 77 6f 72 6b 62 6c 6f 63 6b 25 21 |&13D:workblock%!| 00004e80 36 30 3d 77 61 66 25 3c 3c 31 32 0d 17 16 3f 77 |60=waf%<<12...?w| 00004e90 6f 72 6b 62 6c 6f 63 6b 25 21 37 32 3d 74 69 74 |orkblock%!72=tit| 00004ea0 6c 65 25 3a 77 6f 72 6b 62 6c 6f 63 6b 25 21 37 |le%:workblock%!7| 00004eb0 36 3d 2d 31 3a 77 6f 72 6b 62 6c 6f 63 6b 25 21 |6=-1:workblock%!| 00004ec0 38 30 3d 6c 65 6e 67 74 68 25 0d 17 20 30 c8 99 |80=length%.. 0..| 00004ed0 20 22 57 69 6d 70 5f 43 72 65 61 74 65 57 69 6e | "Wimp_CreateWin| 00004ee0 64 6f 77 22 2c 2c 77 6f 72 6b 62 6c 6f 63 6b 25 |dow",,workblock%| 00004ef0 20 b8 20 68 61 6e 64 6c 65 25 0d 17 2a 0c 3d 68 | . handle%..*.=h| 00004f00 61 6e 64 6c 65 25 0d 17 34 05 3a 0d 17 3e 2b dd |andle%..4.:..>+.| 00004f10 f2 69 6e 66 6f 28 6e 61 6d 65 24 2c 70 75 72 70 |.info(name$,purp| 00004f20 6f 73 65 24 2c 61 75 74 68 6f 72 24 2c 76 65 72 |ose$,author$,ver| 00004f30 73 69 6f 6e 24 29 0d 17 48 1f f2 73 65 74 69 63 |sion$)..H..setic| 00004f40 6f 6e 74 65 78 74 28 69 6e 66 6f 2c 31 32 2c 6e |ontext(info,12,n| 00004f50 61 6d 65 24 29 0d 17 52 22 f2 73 65 74 69 63 6f |ame$)..R".setico| 00004f60 6e 74 65 78 74 28 69 6e 66 6f 2c 31 33 2c 70 75 |ntext(info,13,pu| 00004f70 72 70 6f 73 65 24 29 0d 17 5c 21 f2 73 65 74 69 |rpose$)..\!.seti| 00004f80 63 6f 6e 74 65 78 74 28 69 6e 66 6f 2c 31 34 2c |context(info,14,| 00004f90 61 75 74 68 6f 72 24 29 0d 17 66 22 f2 73 65 74 |author$)..f".set| 00004fa0 69 63 6f 6e 74 65 78 74 28 69 6e 66 6f 2c 31 35 |icontext(info,15| 00004fb0 2c 76 65 72 73 69 6f 6e 24 29 0d 17 70 05 e1 0d |,version$)..p...| 00004fc0 17 7a 05 3a 0d 17 84 38 f4 20 2d 2d 2d 2d 2d 2d |.z.:...8. ------| 00004fd0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00004ff0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 17 8e 38 |------------...8| 00005000 f4 20 7c 20 20 20 20 20 20 4c 6f 67 6f 20 49 6e |. | Logo In| 00005010 74 65 72 70 72 65 74 65 72 20 50 72 6f 63 65 64 |terpreter Proced| 00005020 75 72 65 73 20 20 20 20 20 20 20 20 20 20 20 20 |ures | 00005030 20 20 20 7c 0d 17 98 38 f4 20 2d 2d 2d 2d 2d 2d | |...8. ------| 00005040 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00005060 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 17 a2 05 |------------....| 00005070 3a 0d 17 ac 1b dd f2 6c 6f 67 6f 63 6f 6d 6d 61 |:......logocomma| 00005080 6e 64 28 63 6f 6d 6d 61 6e 64 24 29 0d 17 b6 1e |nd(command$)....| 00005090 63 6f 6d 6d 61 6e 64 24 3d a4 6e 6f 73 70 63 73 |command$=.nospcs| 000050a0 28 63 6f 6d 6d 61 6e 64 24 29 0d 17 c0 1f 63 6f |(command$)....co| 000050b0 6d 6d 61 6e 64 24 3d a4 6c 65 74 63 61 73 65 28 |mmand$=.letcase(| 000050c0 63 6f 6d 6d 61 6e 64 24 29 0d 17 ca 25 63 6f 6d |command$)...%com| 000050d0 6d 61 6e 64 24 3d a4 65 78 70 61 6e 64 63 6f 6d |mand$=.expandcom| 000050e0 6d 61 6e 64 28 63 6f 6d 6d 61 6e 64 24 29 0d 17 |mand(command$)..| 000050f0 d4 44 e7 20 c0 63 6f 6d 6d 61 6e 64 24 2c 37 29 |.D. .command$,7)| 00005100 3d 22 46 4f 52 57 41 52 44 22 20 20 20 f2 66 6f |="FORWARD" .fo| 00005110 72 77 61 72 64 28 a0 28 c2 63 6f 6d 6d 61 6e 64 |rward(.(.command| 00005120 24 2c a9 28 63 6f 6d 6d 61 6e 64 24 29 2d 37 29 |$,.(command$)-7)| 00005130 29 29 0d 17 de 41 e7 20 c0 63 6f 6d 6d 61 6e 64 |))...A. .command| 00005140 24 2c 34 29 3d 22 42 41 43 4b 22 20 20 20 20 20 |$,4)="BACK" | 00005150 20 f2 62 61 63 6b 28 a0 28 c2 63 6f 6d 6d 61 6e | .back(.(.comman| 00005160 64 24 2c a9 28 63 6f 6d 6d 61 6e 64 24 29 2d 34 |d$,.(command$)-4| 00005170 29 29 29 0d 17 e8 41 e7 20 c0 63 6f 6d 6d 61 6e |)))...A. .comman| 00005180 64 24 2c 34 29 3d 22 4c 45 46 54 22 20 20 20 20 |d$,4)="LEFT" | 00005190 20 20 f2 6c 65 66 74 28 a0 28 c2 63 6f 6d 6d 61 | .left(.(.comma| 000051a0 6e 64 24 2c a9 28 63 6f 6d 6d 61 6e 64 24 29 2d |nd$,.(command$)-| 000051b0 34 29 29 29 0d 17 f2 42 e7 20 c0 63 6f 6d 6d 61 |4)))...B. .comma| 000051c0 6e 64 24 2c 35 29 3d 22 52 49 47 48 54 22 20 20 |nd$,5)="RIGHT" | 000051d0 20 20 20 f2 72 69 67 68 74 28 a0 28 c2 63 6f 6d | .right(.(.com| 000051e0 6d 61 6e 64 24 2c a9 28 63 6f 6d 6d 61 6e 64 24 |mand$,.(command$| 000051f0 29 2d 35 29 29 29 0d 17 fc 42 e7 20 c0 63 6f 6d |)-5)))...B. .com| 00005200 6d 61 6e 64 24 2c 35 29 3d 22 41 4e 47 4c 45 22 |mand$,5)="ANGLE"| 00005210 20 20 20 20 20 f2 61 6e 67 6c 65 28 a0 28 c2 63 | .angle(.(.c| 00005220 6f 6d 6d 61 6e 64 24 2c a9 28 63 6f 6d 6d 61 6e |ommand$,.(comman| 00005230 64 24 29 2d 35 29 29 29 0d 18 06 41 e7 20 c0 63 |d$)-5)))...A. .c| 00005240 6f 6d 6d 61 6e 64 24 2c 34 29 3d 22 48 45 4c 50 |ommand$,4)="HELP| 00005250 22 20 20 20 20 20 20 f2 68 65 6c 70 63 6f 6d 28 |" .helpcom(| 00005260 c2 63 6f 6d 6d 61 6e 64 24 2c a9 28 63 6f 6d 6d |.command$,.(comm| 00005270 61 6e 64 24 29 2d 34 29 29 0d 18 10 24 e7 20 c0 |and$)-4))...$. .| 00005280 63 6f 6d 6d 61 6e 64 24 2c 34 29 3d 22 48 4f 4d |command$,4)="HOM| 00005290 45 22 20 20 20 20 20 20 f2 68 6f 6d 65 0d 18 1a |E" .home...| 000052a0 25 e7 20 c0 63 6f 6d 6d 61 6e 64 24 2c 35 29 3d |%. .command$,5)=| 000052b0 22 43 4c 45 41 52 22 20 20 20 20 20 f2 63 6c 65 |"CLEAR" .cle| 000052c0 61 72 0d 18 24 25 e7 20 c0 63 6f 6d 6d 61 6e 64 |ar..$%. .command| 000052d0 24 2c 35 29 3d 22 50 45 4e 55 50 22 20 20 20 20 |$,5)="PENUP" | 000052e0 20 f2 70 65 6e 75 70 0d 18 2e 27 e7 20 c0 63 6f | .penup...'. .co| 000052f0 6d 6d 61 6e 64 24 2c 37 29 3d 22 50 45 4e 44 4f |mmand$,7)="PENDO| 00005300 57 4e 22 20 20 20 f2 70 65 6e 64 6f 77 6e 0d 18 |WN" .pendown..| 00005310 38 46 e7 20 c0 63 6f 6d 6d 61 6e 64 24 2c 39 29 |8F. .command$,9)| 00005320 3d 22 50 45 4e 43 4f 4c 4f 55 52 22 20 f2 70 65 |="PENCOLOUR" .pe| 00005330 6e 63 6f 6c 6f 75 72 28 a0 28 c2 63 6f 6d 6d 61 |ncolour(.(.comma| 00005340 6e 64 24 2c a9 28 63 6f 6d 6d 61 6e 64 24 29 2d |nd$,.(command$)-| 00005350 39 29 29 29 0d 18 42 38 e7 20 c0 63 6f 6d 6d 61 |9)))..B8. .comma| 00005360 6e 64 24 2c 33 29 3d 22 52 55 4e 22 20 20 20 20 |nd$,3)="RUN" | 00005370 20 20 20 80 20 73 74 61 74 75 73 25 3d 31 3a f2 | . status%=1:.| 00005380 73 74 61 72 74 70 72 6f 67 72 61 6d 0d 18 4c 27 |startprogram..L'| 00005390 e7 20 c0 63 6f 6d 6d 61 6e 64 24 2c 37 29 3d 22 |. .command$,7)="| 000053a0 52 45 53 54 41 52 54 22 20 20 20 f2 72 65 73 74 |RESTART" .rest| 000053b0 61 72 74 0d 18 56 27 e7 20 c0 63 6f 6d 6d 61 6e |art..V'. .comman| 000053c0 64 24 2c 37 29 3d 22 53 45 54 48 4f 4d 45 22 20 |d$,7)="SETHOME" | 000053d0 20 20 f2 73 65 74 68 6f 6d 65 0d 18 60 05 e1 0d | .sethome..`...| 000053e0 18 6a 05 3a 0d 18 74 1c dd f2 6c 6f 61 64 70 72 |.j.:..t...loadpr| 000053f0 6f 67 72 61 6d 28 66 69 6c 65 6e 61 6d 65 24 29 |ogram(filename$)| 00005400 0d 18 7e 39 c8 99 20 22 4f 53 5f 46 69 6c 65 22 |..~9.. "OS_File"| 00005410 2c 31 32 2c 66 69 6c 65 6e 61 6d 65 24 2c 6c 6f |,12,filename$,lo| 00005420 67 6f 66 69 6c 65 25 2c 30 20 b8 20 2c 2c 2c 2c |gofile%,0 . ,,,,| 00005430 66 69 6c 65 73 69 7a 65 25 0d 18 88 22 f2 74 6f |filesize%...".to| 00005440 73 65 61 72 63 68 28 6c 6f 67 6f 66 69 6c 65 25 |search(logofile%| 00005450 2c 66 69 6c 65 73 69 7a 65 25 29 0d 18 92 19 f2 |,filesize%).....| 00005460 6f 70 65 6e 74 6f 66 72 6f 6e 74 28 70 72 6f 67 |opentofront(prog| 00005470 72 61 6d 29 0d 18 9c 29 f2 73 65 74 69 63 6f 6e |ram)...).seticon| 00005480 74 65 78 74 28 70 72 6f 67 72 61 6d 2c 31 33 2c |text(program,13,| 00005490 c3 28 66 69 6c 65 73 69 7a 65 25 29 29 0d 18 a6 |.(filesize%))...| 000054a0 21 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 70 72 |!.seticontext(pr| 000054b0 6f 67 72 61 6d 2c 31 36 2c 22 30 25 22 29 0d 18 |ogram,16,"0%")..| 000054c0 b0 25 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 70 |.%.seticontext(p| 000054d0 72 6f 67 72 61 6d 2c 38 2c 66 69 6c 65 6e 61 6d |rogram,8,filenam| 000054e0 65 24 29 0d 18 ba 43 f2 73 65 74 69 63 6f 6e 74 |e$)...C.seticont| 000054f0 65 78 74 28 70 72 6f 67 72 61 6d 2c 31 30 2c 22 |ext(program,10,"| 00005500 52 75 6e 22 29 3a f2 73 65 74 69 63 6f 6e 74 65 |Run"):.seticonte| 00005510 78 74 28 70 72 6f 67 72 61 6d 2c 31 32 2c 22 41 |xt(program,12,"A| 00005520 62 6f 72 74 22 29 0d 18 c4 35 f2 73 65 6c 65 63 |bort")...5.selec| 00005530 74 61 62 6c 65 28 70 72 6f 67 72 61 6d 2c 31 30 |table(program,10| 00005540 29 3a f2 75 6e 73 65 6c 65 63 74 61 62 6c 65 28 |):.unselectable(| 00005550 70 72 6f 67 72 61 6d 2c 31 32 29 0d 18 ce 75 f2 |program,12)...u.| 00005560 73 65 74 69 63 6f 6e 74 65 78 74 28 63 6f 6d 6d |seticontext(comm| 00005570 61 6e 64 2c 35 2c 22 49 6e 66 6f 3a 22 29 3a f2 |and,5,"Info:"):.| 00005580 73 65 74 69 63 6f 6e 74 65 78 74 28 63 6f 6d 6d |seticontext(comm| 00005590 61 6e 64 2c 31 31 2c 22 50 72 6f 67 72 61 6d 20 |and,11,"Program | 000055a0 6c 6f 61 64 65 64 2e 20 22 2b c3 28 74 6f 25 29 |loaded. "+.(to%)| 000055b0 2b 22 20 72 6f 75 74 69 6e 65 73 2e 20 54 79 70 |+" routines. Typ| 000055c0 65 20 52 55 4e 20 74 6f 20 62 65 67 69 6e 22 29 |e RUN to begin")| 000055d0 0d 18 d8 0d f2 73 63 72 6f 6c 6c 75 70 0d 18 e2 |.....scrollup...| 000055e0 3f f2 73 65 74 69 63 6f 6e 74 65 78 74 28 63 6f |?.seticontext(co| 000055f0 6d 6d 61 6e 64 2c 35 2c 22 4c 6f 47 6f 3a 22 29 |mmand,5,"LoGo:")| 00005600 3a f2 73 65 74 69 63 6f 6e 74 65 78 74 28 63 6f |:.seticontext(co| 00005610 6d 6d 61 6e 64 2c 31 31 2c 22 22 29 0d 18 ec 0f |mmand,11,"")....| 00005620 73 74 61 74 75 73 25 3d 31 3a e1 0d 18 f6 05 3a |status%=1:.....:| 00005630 0d 19 00 12 dd f2 73 74 61 72 74 70 72 6f 67 72 |......startprogr| 00005640 61 6d 0d 19 0a 34 65 6e 64 25 3d a3 3a f2 73 65 |am...4end%=.:.se| 00005650 74 62 75 74 74 6f 6e 74 79 70 65 28 63 6f 6d 6d |tbuttontype(comm| 00005660 61 6e 64 2c 31 31 2c 30 29 3a f2 64 69 73 6f 77 |and,11,0):.disow| 00005670 6e 63 61 72 65 74 0d 19 14 1e 70 6f 69 6e 74 25 |ncaret....point%| 00005680 3d 6c 6f 67 6f 66 69 6c 65 25 3a 73 74 61 74 75 |=logofile%:statu| 00005690 73 25 3d 32 0d 19 1e 21 f2 73 65 74 69 63 6f 6e |s%=2...!.seticon| 000056a0 74 65 78 74 28 70 72 6f 67 72 61 6d 2c 31 36 2c |text(program,16,| 000056b0 22 30 25 22 29 0d 19 28 33 f2 73 65 6c 65 63 74 |"0%")..(3.select| 000056c0 61 62 6c 65 28 70 72 6f 67 72 61 6d 2c 31 30 29 |able(program,10)| 000056d0 3a f2 73 65 6c 65 63 74 61 62 6c 65 28 70 72 6f |:.selectable(pro| 000056e0 67 72 61 6d 2c 31 32 29 0d 19 32 45 f2 73 65 74 |gram,12)..2E.set| 000056f0 69 63 6f 6e 74 65 78 74 28 70 72 6f 67 72 61 6d |icontext(program| 00005700 2c 31 30 2c 22 50 61 75 73 65 22 29 3a f2 73 65 |,10,"Pause"):.se| 00005710 74 69 63 6f 6e 74 65 78 74 28 70 72 6f 67 72 61 |ticontext(progra| 00005720 6d 2c 31 32 2c 22 41 62 6f 72 74 22 29 0d 19 3c |m,12,"Abort")..<| 00005730 36 f2 75 6e 73 65 6c 65 63 74 61 62 6c 65 28 70 |6.unselectable(p| 00005740 72 6f 67 72 61 6d 2c 32 29 3a f2 75 6e 73 65 6c |rogram,2):.unsel| 00005750 65 63 74 61 62 6c 65 28 70 72 6f 67 72 61 6d 2c |ectable(program,| 00005760 32 31 29 0d 19 46 36 f2 75 6e 73 65 6c 65 63 74 |21)..F6.unselect| 00005770 61 62 6c 65 28 70 72 6f 67 72 61 6d 2c 33 29 3a |able(program,3):| 00005780 f2 75 6e 73 65 6c 65 63 74 61 62 6c 65 28 70 72 |.unselectable(pr| 00005790 6f 67 72 61 6d 2c 32 32 29 0d 19 50 36 f2 75 6e |ogram,22)..P6.un| 000057a0 73 65 6c 65 63 74 61 62 6c 65 28 70 72 6f 67 72 |selectable(progr| 000057b0 61 6d 2c 37 29 3a f2 75 6e 73 65 6c 65 63 74 61 |am,7):.unselecta| 000057c0 62 6c 65 28 70 72 6f 67 72 61 6d 2c 32 33 29 0d |ble(program,23).| 000057d0 19 5a 26 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 |.Z&.seticontext(| 000057e0 2d 32 2c 69 63 6f 6e 62 61 72 2c 22 52 75 6e 6e |-2,iconbar,"Runn| 000057f0 69 6e 67 22 29 0d 19 64 12 f2 73 65 74 75 70 64 |ing")..d..setupd| 00005800 72 61 77 66 69 6c 65 0d 19 6e 05 e1 0d 19 78 05 |rawfile..n....x.| 00005810 3a 0d 19 82 10 dd f2 72 75 6e 70 72 6f 67 72 61 |:......runprogra| 00005820 6d 0d 19 8c 32 70 65 72 73 63 65 6e 74 25 3d 28 |m...2perscent%=(| 00005830 28 28 70 6f 69 6e 74 25 2d 6c 6f 67 6f 66 69 6c |((point%-logofil| 00005840 65 25 29 2f 66 69 6c 65 73 69 7a 65 25 29 2a 31 |e%)/filesize%)*1| 00005850 30 30 29 0d 19 96 41 24 70 6f 73 69 63 6f 6e 3d |00)...A$posicon=| 00005860 c3 28 70 65 72 73 63 65 6e 74 25 29 2b 22 25 22 |.(perscent%)+"%"| 00005870 3a 71 25 21 30 3d 70 72 6f 67 72 61 6d 3a 71 25 |:q%!0=program:q%| 00005880 21 34 3d 31 36 3a 71 25 21 38 3d 30 3a 71 25 21 |!4=16:q%!8=0:q%!| 00005890 31 32 3d 30 0d 19 a0 1e c8 99 20 22 57 69 6d 70 |12=0...... "Wimp| 000058a0 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c |_SetIconState",,| 000058b0 71 25 0d 19 aa 34 41 24 3d a4 63 6f 6d 73 74 72 |q%...4A$=.comstr| 000058c0 69 6e 67 28 70 6f 69 6e 74 25 29 3a 70 6f 69 6e |ing(point%):poin| 000058d0 74 25 3d a4 67 65 74 63 6f 6d 6d 61 6e 64 28 70 |t%=.getcommand(p| 000058e0 6f 69 6e 74 25 29 0d 19 b4 22 45 72 72 6f 72 24 |oint%)..."Error$| 000058f0 3d 22 22 3a 63 6f 6d 6e 75 6d 25 3d a4 70 72 6f |="":comnum%=.pro| 00005900 67 63 6f 6d 28 41 24 29 0d 19 be 2c e7 20 63 6f |gcom(A$)...,. co| 00005910 6d 6e 75 6d 25 3c 31 35 20 80 20 45 72 72 6f 72 |mnum%<15 . Error| 00005920 24 3d 22 22 20 f2 69 6e 73 63 6f 6d 6d 61 6e 64 |$="" .inscommand| 00005930 28 41 24 29 0d 19 c8 38 e7 20 45 72 72 6f 72 24 |(A$)...8. Error$| 00005940 3c 3e 22 22 20 20 20 20 20 20 20 20 20 20 20 20 |<>"" | 00005950 20 20 20 f2 6c 6f 67 6f 65 72 72 6f 72 28 45 72 | .logoerror(Er| 00005960 72 6f 72 24 29 3a 65 6e 64 25 3d b9 0d 19 d2 3b |ror$):end%=....;| 00005970 e7 20 70 6f 69 6e 74 25 3e 3d 6c 6f 67 6f 66 69 |. point%>=logofi| 00005980 6c 65 25 2b 66 69 6c 65 73 69 7a 65 25 20 20 20 |le%+filesize% | 00005990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000059a0 20 65 6e 64 25 3d b9 0d 19 dc 2c e7 20 65 6e 64 | end%=....,. end| 000059b0 25 3d b9 20 20 20 20 20 20 20 20 20 20 20 20 20 |%=. | 000059c0 20 20 20 f2 70 72 6f 67 72 61 6d 66 69 6e 69 73 | .programfinis| 000059d0 68 65 64 0d 19 e6 05 e1 0d 19 f0 05 3a 0d 19 fa |hed.........:...| 000059e0 15 dd f2 70 72 6f 67 72 61 6d 66 69 6e 69 73 68 |...programfinish| 000059f0 65 64 0d 1a 04 14 65 6e 64 25 3d b9 3a 73 74 61 |ed....end%=.:sta| 00005a00 74 75 73 25 3d 31 0d 1a 0e 21 f2 73 65 74 62 75 |tus%=1...!.setbu| 00005a10 74 74 6f 6e 74 79 70 65 28 63 6f 6d 6d 61 6e 64 |ttontype(command| 00005a20 2c 31 31 2c 31 35 29 0d 1a 18 30 e7 20 a4 77 69 |,11,15)...0. .wi| 00005a30 6e 64 6f 77 6f 70 65 6e 28 63 6f 6d 6d 61 6e 64 |ndowopen(command| 00005a40 29 20 f2 70 75 74 63 61 72 65 74 28 63 6f 6d 6d |) .putcaret(comm| 00005a50 61 6e 64 2c 31 31 29 0d 1a 22 32 f2 73 65 6c 65 |and,11).."2.sele| 00005a60 63 74 61 62 6c 65 28 70 72 6f 67 72 61 6d 2c 32 |ctable(program,2| 00005a70 29 3a f2 73 65 6c 65 63 74 61 62 6c 65 28 70 72 |):.selectable(pr| 00005a80 6f 67 72 61 6d 2c 32 31 29 0d 1a 2c 32 f2 73 65 |ogram,21)..,2.se| 00005a90 6c 65 63 74 61 62 6c 65 28 70 72 6f 67 72 61 6d |lectable(program| 00005aa0 2c 33 29 3a f2 73 65 6c 65 63 74 61 62 6c 65 28 |,3):.selectable(| 00005ab0 70 72 6f 67 72 61 6d 2c 32 32 29 0d 1a 36 32 f2 |program,22)..62.| 00005ac0 73 65 6c 65 63 74 61 62 6c 65 28 70 72 6f 67 72 |selectable(progr| 00005ad0 61 6d 2c 37 29 3a f2 73 65 6c 65 63 74 61 62 6c |am,7):.selectabl| 00005ae0 65 28 70 72 6f 67 72 61 6d 2c 32 33 29 0d 1a 40 |e(program,23)..@| 00005af0 35 f2 73 65 6c 65 63 74 61 62 6c 65 28 70 72 6f |5.selectable(pro| 00005b00 67 72 61 6d 2c 31 30 29 3a f2 75 6e 73 65 6c 65 |gram,10):.unsele| 00005b10 63 74 61 62 6c 65 28 70 72 6f 67 72 61 6d 2c 31 |ctable(program,1| 00005b20 32 29 0d 1a 4a 43 f2 73 65 74 69 63 6f 6e 74 65 |2)..JC.seticonte| 00005b30 78 74 28 70 72 6f 67 72 61 6d 2c 31 30 2c 22 52 |xt(program,10,"R| 00005b40 55 4e 22 29 3a f2 73 65 74 69 63 6f 6e 74 65 78 |UN"):.seticontex| 00005b50 74 28 70 72 6f 67 72 61 6d 2c 31 32 2c 22 41 62 |t(program,12,"Ab| 00005b60 6f 72 74 22 29 0d 1a 54 26 f2 73 65 74 69 63 6f |ort")..T&.setico| 00005b70 6e 74 65 78 74 28 2d 32 2c 69 63 6f 6e 62 61 72 |ntext(-2,iconbar| 00005b80 2c 22 57 61 69 74 69 6e 67 22 29 0d 1a 5e 11 f2 |,"Waiting")..^..| 00005b90 73 61 76 65 64 72 61 77 66 69 6c 65 0d 1a 68 1b |savedrawfile..h.| 00005ba0 e7 20 a4 69 63 6f 6e 65 6f 72 28 70 72 6f 67 72 |. .iconeor(progr| 00005bb0 61 6d 2c 37 29 20 8c 0d 1a 72 31 f2 73 65 6c 65 |am,7) ...r1.sele| 00005bc0 63 74 61 62 6c 65 28 70 72 6f 67 72 61 6d 2c 33 |ctable(program,3| 00005bd0 29 3a f2 73 65 6c 65 63 74 61 62 6c 65 28 70 72 |):.selectable(pr| 00005be0 6f 67 72 61 6d 2c 32 29 0d 1a 7c 05 cc 0d 1a 86 |ogram,2)..|.....| 00005bf0 35 f2 75 6e 73 65 6c 65 63 74 61 62 6c 65 28 70 |5.unselectable(p| 00005c00 72 6f 67 72 61 6d 2c 33 29 3a f2 75 6e 73 65 6c |rogram,3):.unsel| 00005c10 65 63 74 61 62 6c 65 28 70 72 6f 67 72 61 6d 2c |ectable(program,| 00005c20 32 29 0d 1a 90 05 cd 0d 1a 9a 05 e1 0d 1a a4 05 |2)..............| 00005c30 3a 0d 1a ae 12 dd f2 70 61 75 73 65 70 72 6f 67 |:......pauseprog| 00005c40 72 61 6d 0d 1a b8 18 e7 20 70 6f 69 6e 74 25 3d |ram..... point%=| 00005c50 6c 6f 67 6f 66 69 6c 65 25 20 e1 0d 1a c2 37 65 |logofile% ....7e| 00005c60 6e 64 25 3d b9 3a 73 74 61 74 75 73 25 3d 33 3a |nd%=.:status%=3:| 00005c70 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 70 72 6f |.seticontext(pro| 00005c80 67 72 61 6d 2c 31 32 2c 22 52 65 73 74 61 72 74 |gram,12,"Restart| 00005c90 22 29 0d 1a cc 43 f2 75 6e 73 65 6c 65 63 74 61 |")...C.unselecta| 00005ca0 62 6c 65 28 70 72 6f 67 72 61 6d 2c 31 30 29 3a |ble(program,10):| 00005cb0 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 2d 32 2c |.seticontext(-2,| 00005cc0 69 63 6f 6e 62 61 72 2c 22 20 50 61 75 73 65 64 |iconbar," Paused| 00005cd0 20 22 29 3a e1 0d 1a d6 05 3a 0d 1a e0 14 dd f2 | "):.....:......| 00005ce0 75 6e 70 61 75 73 65 70 72 6f 67 72 61 6d 0d 1a |unpauseprogram..| 00005cf0 ea 35 65 6e 64 25 3d a3 3a 73 74 61 74 75 73 25 |.5end%=.:status%| 00005d00 3d 32 3a f2 73 65 74 69 63 6f 6e 74 65 78 74 28 |=2:.seticontext(| 00005d10 70 72 6f 67 72 61 6d 2c 31 32 2c 22 41 62 6f 72 |program,12,"Abor| 00005d20 74 22 29 0d 1a f4 40 f2 73 65 6c 65 63 74 61 62 |t")...@.selectab| 00005d30 6c 65 28 70 72 6f 67 72 61 6d 2c 31 30 29 3a f2 |le(program,10):.| 00005d40 73 65 74 69 63 6f 6e 74 65 78 74 28 2d 32 2c 69 |seticontext(-2,i| 00005d50 63 6f 6e 62 61 72 2c 22 52 75 6e 6e 69 6e 67 22 |conbar,"Running"| 00005d60 29 3a e1 0d 1a fe 05 3a 0d 1b 08 3a f4 20 2d 2d |):.....:...:. --| 00005d70 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00005da0 2d 2d 0d 1b 12 3a f4 20 7c 20 20 20 20 50 72 6f |--...:. | Pro| 00005db0 63 65 64 75 72 65 73 20 66 6f 72 20 64 65 61 6c |cedures for deal| 00005dc0 69 6e 67 20 77 69 74 68 20 74 79 70 65 64 20 63 |ing with typed c| 00005dd0 6f 6d 6d 61 6e 64 73 20 20 20 20 7c 0d 1b 1c 3a |ommands |...:| 00005de0 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |. --------------| 00005df0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00005e10 2d 2d 2d 2d 2d 2d 0d 1b 26 05 3a 0d 1b 30 15 dd |------..&.:..0..| 00005e20 f2 63 6f 6d 6d 61 6e 64 6c 69 6e 65 28 41 24 29 |.commandline(A$)| 00005e30 0d 1b 3a 1b e7 20 73 74 61 74 75 73 25 3c 3e 31 |..:.. status%<>1| 00005e40 20 84 20 65 6e 64 25 3d a3 20 e1 0d 1b 44 21 6c | . end%=. ...D!l| 00005e50 73 74 61 63 6b 25 3d 30 3a 73 74 61 63 6b 25 3d |stack%=0:stack%=| 00005e60 30 3a 65 6e 64 6c 69 6e 65 25 3d a3 0d 1b 4e 3f |0:endline%=...N?| 00005e70 24 63 6f 6d 6d 61 6e 64 6c 69 6e 65 25 3d 41 24 |$commandline%=A$| 00005e80 2b bd 28 30 29 3a 63 6f 6d 6d 61 6e 64 6c 65 6e |+.(0):commandlen| 00005e90 25 3d a9 28 41 24 29 3a 70 6f 69 6e 74 25 3d 63 |%=.(A$):point%=c| 00005ea0 6f 6d 6d 61 6e 64 6c 69 6e 65 25 0d 1b 58 15 c8 |ommandline%..X..| 00005eb0 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 |. "Hourglass_On"| 00005ec0 0d 1b 62 36 f5 3a 41 24 3d a4 63 6f 6d 73 74 72 |..b6.:A$=.comstr| 00005ed0 69 6e 67 28 70 6f 69 6e 74 25 29 3a 70 6f 69 6e |ing(point%):poin| 00005ee0 74 25 3d a4 67 65 74 63 6f 6d 6d 61 6e 64 28 70 |t%=.getcommand(p| 00005ef0 6f 69 6e 74 25 29 0d 1b 6c 22 45 72 72 6f 72 24 |oint%)..l"Error$| 00005f00 3d 22 22 3a 63 6f 6d 6e 75 6d 25 3d a4 70 72 6f |="":comnum%=.pro| 00005f10 67 63 6f 6d 28 41 24 29 0d 1b 76 27 e7 20 a6 20 |gcom(A$)..v'. . | 00005f20 2d 31 31 33 20 85 20 32 35 35 2c 22 59 6f 75 20 |-113 . 255,"You | 00005f30 70 72 65 73 73 65 64 20 45 53 43 41 50 45 22 0d |pressed ESCAPE".| 00005f40 1b 80 2c e7 20 63 6f 6d 6e 75 6d 25 3c 31 35 20 |..,. comnum%<15 | 00005f50 80 20 45 72 72 6f 72 24 3d 22 22 20 f2 69 6e 73 |. Error$="" .ins| 00005f60 63 6f 6d 6d 61 6e 64 28 41 24 29 0d 1b 8a 3c e7 |command(A$)...<.| 00005f70 20 45 72 72 6f 72 24 3c 3e 22 22 20 20 20 20 20 | Error$<>"" | 00005f80 20 20 20 20 20 20 20 20 20 20 f2 6c 6f 67 6f 65 | .logoe| 00005f90 72 72 6f 72 28 45 72 72 6f 72 24 29 3a 65 6e 64 |rror(Error$):end| 00005fa0 6c 69 6e 65 25 3d b9 0d 1b 94 3f e7 20 70 6f 69 |line%=....?. poi| 00005fb0 6e 74 25 3e 3d 63 6f 6d 6d 61 6e 64 6c 69 6e 65 |nt%>=commandline| 00005fc0 25 2b 63 6f 6d 6d 61 6e 64 6c 65 6e 25 20 20 20 |%+commandlen% | 00005fd0 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 6c | endl| 00005fe0 69 6e 65 25 3d b9 0d 1b 9e 27 e7 20 a6 20 2d 31 |ine%=....'. . -1| 00005ff0 31 33 20 85 20 32 35 35 2c 22 59 6f 75 20 70 72 |13 . 255,"You pr| 00006000 65 73 73 65 64 20 45 53 43 41 50 45 22 0d 1b a8 |essed ESCAPE"...| 00006010 19 fd 20 65 6e 64 6c 69 6e 65 25 3d b9 20 84 20 |.. endline%=. . | 00006020 65 6e 64 25 3d a3 0d 1b b2 18 c8 99 20 22 48 6f |end%=....... "Ho| 00006030 75 72 67 6c 61 73 73 5f 4f 66 66 22 3a e1 0d 1b |urglass_Off":...| 00006040 bc 05 3a 0d 1b c6 17 dd a4 67 65 74 63 6f 6d 6d |..:......getcomm| 00006050 61 6e 64 28 61 64 64 72 25 29 0d 1b d0 3c f5 3a |and(addr%)...<.:| 00006060 41 25 3d 3f 61 64 64 72 25 3a 61 64 64 72 25 2b |A%=?addr%:addr%+| 00006070 3d 31 3a fd 20 41 25 3c 33 32 20 84 20 41 25 3d |=1:. A%<32 . A%=| 00006080 31 32 37 20 84 20 41 25 3d 97 28 22 3a 22 29 3a |127 . A%=.(":"):| 00006090 3d 61 64 64 72 25 0d 1b da 05 3a 0d 1b e4 16 dd |=addr%....:.....| 000060a0 a4 63 6f 6d 73 74 72 69 6e 67 28 61 64 64 72 25 |.comstring(addr%| 000060b0 29 0d 1b ee 0b 41 24 3d 22 22 3a f5 0d 1b f8 40 |)....A$="":....@| 000060c0 41 25 3d 3f 61 64 64 72 25 3a 61 64 64 72 25 2b |A%=?addr%:addr%+| 000060d0 3d 31 3a e7 20 41 25 3e 33 31 20 80 20 41 25 3c |=1:. A%>31 . A%<| 000060e0 3e 31 32 37 20 80 20 41 25 3c 3e 20 97 28 22 3a |>127 . A%<> .(":| 000060f0 22 29 20 41 24 2b 3d bd 28 41 25 29 0d 1c 02 24 |") A$+=.(A%)...$| 00006100 fd 20 41 25 3c 33 32 20 84 20 41 25 3d 31 32 37 |. A%<32 . A%=127| 00006110 20 84 20 41 25 3d 97 28 22 3a 22 29 3a 3d 41 24 | . A%=.(":"):=A$| 00006120 0d 1c 0c 05 3a 0d 1c 16 13 dd 20 a4 6e 6f 72 6d |....:..... .norm| 00006130 63 6d 6e 64 28 41 24 29 0d 1c 20 16 6e 25 3d 31 |cmnd(A$).. .n%=1| 00006140 3a 4e 25 3d 30 3a f7 20 8d 44 5c 5c 3a f5 0d 1c |:N%=0:. .D\\:...| 00006150 2a 29 f3 20 46 24 2c 43 25 3a e7 20 a4 61 62 62 |*). F$,C%:. .abb| 00006160 72 65 76 28 41 24 2c 46 24 2c 43 25 29 3e 30 20 |rev(A$,F$,C%)>0 | 00006170 8c 20 4e 25 3d 6e 25 0d 1c 34 15 6e 25 2b 3d 31 |. N%=n%..4.n%+=1| 00006180 3a fd 20 46 24 3d 22 45 45 4e 44 22 0d 1c 3e 12 |:. F$="EEND"..>.| 00006190 e7 20 4e 25 3d 6e 25 2d 31 20 4e 25 3d 30 0d 1c |. N%=n%-1 N%=0..| 000061a0 48 07 3d 4e 25 0d 1c 52 05 3a 0d 1c 5c 25 dc 20 |H.=N%..R.:..\%. | 000061b0 46 4f 52 57 41 52 44 2c 31 2c 42 41 43 4b 2c 31 |FORWARD,1,BACK,1| 000061c0 2c 4c 45 46 54 2c 31 2c 52 49 47 48 54 2c 31 0d |,LEFT,1,RIGHT,1.| 000061d0 1c 66 1c dc 20 41 4e 47 4c 45 2c 31 2c 43 4c 45 |.f.. ANGLE,1,CLE| 000061e0 41 52 2c 32 2c 48 4f 4d 45 2c 32 0d 1c 70 23 dc |AR,2,HOME,2..p#.| 000061f0 20 50 45 4e 55 50 2c 34 2c 50 45 4e 44 4f 57 4e | PENUP,4,PENDOWN| 00006200 2c 34 2c 50 45 4e 43 4f 4c 4f 55 52 2c 34 0d 1c |,4,PENCOLOUR,4..| 00006210 7a 20 dc 20 53 45 54 48 4f 4d 45 2c 34 2c 52 45 |z . SETHOME,4,RE| 00006220 53 54 41 52 54 2c 33 2c 48 45 4c 50 2c 31 0d 1c |START,3,HELP,1..| 00006230 84 20 dc 20 52 55 4e 2c 32 2c 54 4f 2c 30 2c 45 |. . RUN,2,TO,0,E| 00006240 4e 44 54 4f 2c 30 2c 5b 2c 30 2c 5d 2c 30 0d 1c |NDTO,0,[,0,],0..| 00006250 8e 19 dc 20 46 49 4e 49 53 48 2c 33 2c 2f 2c 30 |... FINISH,3,/,0| 00006260 2c 45 45 4e 44 2c 30 0d 1c 98 05 3a 0d 1c a2 17 |,EEND,0....:....| 00006270 dd a4 65 78 70 61 6e 64 63 6f 6d 6d 61 6e 64 28 |..expandcommand(| 00006280 41 24 29 0d 1c ac 1f 4e 25 3d a4 6e 6f 72 6d 63 |A$)....N%=.normc| 00006290 6d 6e 64 28 41 24 29 3a e7 20 4e 25 3d 30 20 3d |mnd(A$):. N%=0 =| 000062a0 41 24 0d 1c b6 16 f7 20 8d 44 5c 5c 3a e3 20 58 |A$..... .D\\:. X| 000062b0 25 3d 31 20 b8 20 4e 25 0d 1c c0 2e f3 20 63 6f |%=1 . N%..... co| 000062c0 6d 24 2c 61 62 62 25 3a ed 3a 61 62 62 72 65 25 |m$,abb%:.:abbre%| 000062d0 3d a4 61 62 62 72 65 76 28 41 24 2c 63 6f 6d 24 |=.abbrev(A$,com$| 000062e0 2c 61 62 62 25 29 0d 1c ca 1b 3d 63 6f 6d 24 2b |,abb%)....=com$+| 000062f0 c2 41 24 2c a9 28 41 24 29 2d 61 62 62 72 65 25 |.A$,.(A$)-abbre%| 00006300 29 0d 1c d4 05 3a 0d 1c de 20 dd 20 a4 6c 65 74 |)....:... . .let| 00006310 63 61 73 65 28 41 24 29 3a ea 20 6e 25 2c 42 24 |case(A$):. n%,B$| 00006320 2c 41 25 2c 43 24 0d 1c e8 0f e7 20 41 24 3d 22 |,A%,C$..... A$="| 00006330 22 20 3d 22 22 0d 1c f2 12 e3 20 6e 25 3d 31 20 |" =""..... n%=1 | 00006340 b8 20 a9 28 41 24 29 0d 1c fc 13 41 25 3d 97 28 |. .(A$)....A%=.(| 00006350 c1 41 24 2c 6e 25 2c 31 29 29 0d 1d 06 1f e7 20 |.A$,n%,1))..... | 00006360 41 25 3e 39 36 20 80 20 41 25 3c 31 32 33 20 8c |A%>96 . A%<123 .| 00006370 20 41 25 3d 41 25 2d 33 32 0d 1d 10 2e 42 24 3d | A%=A%-32....B$=| 00006380 c0 41 24 2c 6e 25 2d 31 29 3a 43 24 3d c2 41 24 |.A$,n%-1):C$=.A$| 00006390 2c a9 28 41 24 29 2d 6e 25 29 3a 41 24 3d 42 24 |,.(A$)-n%):A$=B$| 000063a0 2b bd 41 25 2b 43 24 0d 1d 1a 09 ed 3a 3d 41 24 |+.A%+C$.....:=A$| 000063b0 0d 1d 24 05 3a 0d 1d 2e 11 dd 20 a4 6e 6f 73 70 |..$.:..... .nosp| 000063c0 63 73 28 41 24 29 0d 1d 38 21 4c 25 3d 31 3a 52 |cs(A$)..8!L%=1:R| 000063d0 25 3d a9 28 41 24 29 3a 4e 25 3d 2d 31 3a f5 3a |%=.(A$):N%=-1:.:| 000063e0 4e 25 3d 4e 25 2b 31 0d 1d 42 1b e7 20 c1 41 24 |N%=N%+1..B.. .A$| 000063f0 2c 4e 25 2c 31 29 3d 22 20 22 20 4c 25 3d 4e 25 |,N%,1)=" " L%=N%| 00006400 2b 31 0d 1d 4c 21 fd 20 4e 25 3d a9 28 41 24 29 |+1..L!. N%=.(A$)| 00006410 20 84 20 c1 41 24 2c 4e 25 2b 31 2c 31 29 3c 3e | . .A$,N%+1,1)<>| 00006420 22 20 22 0d 1d 56 18 4e 25 3d a9 28 41 24 29 2b |" "..V.N%=.(A$)+| 00006430 31 3a f5 3a 4e 25 3d 4e 25 2d 31 0d 1d 60 1c e7 |1:.:N%=N%-1..`..| 00006440 20 c1 41 24 2c 4e 25 2c 31 29 3d 22 20 22 20 52 | .A$,N%,1)=" " R| 00006450 25 3d 4e 25 2d 4c 25 0d 1d 6a 14 fd 20 c1 41 24 |%=N%-L%..j.. .A$| 00006460 2c 4e 25 2c 31 29 3c 3e 22 20 22 0d 1d 74 0f 3d |,N%,1)<>" "..t.=| 00006470 c1 41 24 2c 4c 25 2c 52 25 29 0d 1d 7e 05 3a 0d |.A$,L%,R%)..~.:.| 00006480 1d 88 10 dd 20 a4 61 6c 70 68 61 28 41 24 29 0d |.... .alpha(A$).| 00006490 1d 92 17 4e 25 3d a3 3a e3 20 6e 25 3d 31 20 b8 |...N%=.:. n%=1 .| 000064a0 20 a9 28 41 24 29 0d 1d 9c 2c e7 20 97 28 c1 41 | .(A$)...,. .(.A| 000064b0 24 2c 6e 25 2c 31 29 29 3c 36 35 20 84 20 97 28 |$,n%,1))<65 . .(| 000064c0 c1 41 24 2c 6e 25 2c 31 29 29 3e 39 30 20 4e 25 |.A$,n%,1))>90 N%| 000064d0 3d b9 0d 1d a6 09 ed 3a 3d 4e 25 0d 1d b0 05 3a |=......:=N%....:| 000064e0 0d 1d ba 16 dd a4 61 62 62 72 65 76 28 43 24 2c |......abbrev(C$,| 000064f0 42 24 2c 43 25 29 0d 1d c4 1a e7 20 c0 43 24 2c |B$,C%)..... .C$,| 00006500 a9 28 42 24 29 29 3d 42 24 20 3d a9 28 42 24 29 |.(B$))=B$ =.(B$)| 00006510 0d 1d ce 1c 45 25 3d 30 3a e3 20 44 25 3d 43 25 |....E%=0:. D%=C%| 00006520 20 b8 20 28 a9 28 42 24 29 2d 31 29 0d 1d d8 27 | . (.(B$)-1)...'| 00006530 e7 20 c0 43 24 2c 44 25 2b 31 29 3d 28 c0 42 24 |. .C$,D%+1)=(.B$| 00006540 2c 44 25 29 2b 22 2e 22 29 20 8c 20 45 25 3d 44 |,D%)+".") . E%=D| 00006550 25 2b 31 0d 1d e2 09 ed 3a 3d 45 25 0d 1d ec 05 |%+1.....:=E%....| 00006560 3a 0d 1d f6 1f dd 20 a4 70 61 72 61 6d 73 28 41 |:..... .params(A| 00006570 25 2c 41 24 29 3a ea 20 6e 25 2c 42 24 2c 43 25 |%,A$):. n%,B$,C%| 00006580 0d 1e 00 16 f7 20 8d 44 5c 5c 3a e3 20 6e 25 3d |..... .D\\:. n%=| 00006590 31 20 b8 20 41 25 0d 1e 0a 22 f3 20 42 24 2c 43 |1 . A%...". B$,C| 000065a0 25 3a ed 3a 41 25 3d a4 61 62 62 72 65 76 28 41 |%:.:A%=.abbrev(A| 000065b0 24 2c 42 24 2c 43 25 29 0d 1e 14 21 41 24 3d c2 |$,B$,C%)...!A$=.| 000065c0 41 24 2c a9 28 41 24 29 2d 41 25 29 3a 3d a4 6e |A$,.(A$)-A%):=.n| 000065d0 6f 73 70 63 73 28 41 24 29 0d 1e 1e 05 3a 0d 1e |ospcs(A$)....:..| 000065e0 28 13 dd a4 70 72 6f 67 63 6f 6d 28 63 6f 6d 24 |(...progcom(com$| 000065f0 29 0d 1e 32 44 63 6f 6d 24 3d a4 6e 6f 73 70 63 |)..2Dcom$=.nospc| 00006600 73 28 63 6f 6d 24 29 3a 63 6f 6d 24 3d a4 6c 65 |s(com$):com$=.le| 00006610 74 63 61 73 65 28 63 6f 6d 24 29 3a 63 6f 6d 24 |tcase(com$):com$| 00006620 3d a4 65 78 70 61 6e 64 63 6f 6d 6d 61 6e 64 28 |=.expandcommand(| 00006630 63 6f 6d 24 29 0d 1e 3c 30 63 6f 6d 6e 75 6d 25 |com$)..<0comnum%| 00006640 3d a4 6e 6f 72 6d 63 6d 6e 64 28 63 6f 6d 24 29 |=.normcmnd(com$)| 00006650 3a 73 75 62 6e 75 6d 25 3d a4 73 75 62 6e 6f 28 |:subnum%=.subno(| 00006660 63 6f 6d 24 29 0d 1e 46 1c 42 24 3d a4 70 61 72 |com$)..F.B$=.par| 00006670 61 6d 73 28 63 6f 6d 6e 75 6d 25 2c 63 6f 6d 24 |ams(comnum%,com$| 00006680 29 0d 1e 50 36 e7 20 63 6f 6d 24 3d 22 22 20 20 |)..P6. com$="" | 00006690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | * 000066b0 20 20 20 3d 32 35 35 0d 1e 5a 31 e7 20 73 75 62 | =255..Z1. sub| 000066c0 6e 75 6d 25 3e 2d 31 20 80 20 63 6f 6d 6e 75 6d |num%>-1 . comnum| 000066d0 25 3d 30 20 f2 74 6f 73 75 62 28 73 75 62 6e 75 |%=0 .tosub(subnu| 000066e0 6d 25 29 3a 3d 32 35 35 0d 1e 64 36 e7 20 63 6f |m%):=255..d6. co| 000066f0 6d 6e 75 6d 25 3d 30 20 20 20 20 20 20 20 45 72 |mnum%=0 Er| 00006700 72 6f 72 24 3d 22 4e 6f 20 73 75 63 68 20 73 75 |ror$="No such su| 00006710 62 72 6f 75 74 69 6e 65 22 3a 3d 32 35 35 0d 1e |broutine":=255..| 00006720 6e 3a e7 20 63 6f 6d 6e 75 6d 25 3c 31 35 20 20 |n:. comnum%<15 | 00006730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | * 00006750 3d 63 6f 6d 6e 75 6d 25 0d 1e 78 5e ee 20 28 63 |=comnum%..x^. (c| 00006760 6f 6d 6e 75 6d 25 2d 31 34 29 20 f2 63 6f 6d 6d |omnum%-14) .comm| 00006770 65 6e 74 2c f2 65 6e 64 74 6f 2c f2 6e 65 77 6c |ent,.endto,.newl| 00006780 6f 6f 70 28 a0 28 42 24 29 29 2c f2 65 6e 64 6c |oop(.(B$)),.endl| 00006790 6f 6f 70 2c f2 70 72 6f 67 72 61 6d 66 69 6e 69 |oop,.programfini| 000067a0 73 68 65 64 2c f2 63 6f 6d 6d 65 6e 74 3a 3d 63 |shed,.comment:=c| 000067b0 6f 6d 6e 75 6d 25 0d 1e 82 05 3a 0d 1e 8c 2b f4 |omnum%....:...+.| 000067c0 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------| 000067d0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 000067e0 2d 2d 2d 2d 2d 2d 0d 1e 96 2b f4 20 7c 20 20 4c |------...+. | L| 000067f0 6f 6f 70 20 26 20 54 6f 20 53 75 62 72 6f 75 74 |oop & To Subrout| 00006800 69 6e 65 20 48 61 6e 64 6c 65 72 73 20 20 20 20 |ine Handlers | 00006810 7c 0d 1e a0 2b f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d ||...+. ---------| 00006820 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00006830 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 1e aa 05 |------------....| 00006840 3a 0d 1e b4 16 dd f2 6e 65 77 6c 6f 6f 70 28 6e |:......newloop(n| 00006850 75 6d 62 65 72 25 29 0d 1e be 47 6c 6f 6f 70 73 |umber%)...Gloops| 00006860 74 61 63 6b 25 28 6c 73 74 61 63 6b 25 29 3d 70 |tack%(lstack%)=p| 00006870 6f 69 6e 74 25 3a 6c 6f 6f 70 73 74 61 63 6b 25 |oint%:loopstack%| 00006880 28 6c 73 74 61 63 6b 25 2b 31 29 3d 6e 75 6d 62 |(lstack%+1)=numb| 00006890 65 72 25 3a 6c 73 74 61 63 6b 25 2b 3d 32 0d 1e |er%:lstack%+=2..| 000068a0 c8 05 e1 0d 1e d2 05 3a 0d 1e dc 0d dd f2 65 6e |.......:......en| 000068b0 64 6c 6f 6f 70 0d 1e e6 21 6e 75 6d 62 65 72 25 |dloop...!number%| 000068c0 3d 6c 6f 6f 70 73 74 61 63 6b 25 28 6c 73 74 61 |=loopstack%(lsta| 000068d0 63 6b 25 2d 31 29 0d 1e f0 13 e7 20 6e 75 6d 62 |ck%-1)..... numb| 000068e0 65 72 25 2d 31 3e 30 20 8c 0d 1e fa 39 70 6f 69 |er%-1>0 ....9poi| 000068f0 6e 74 25 3d 6c 6f 6f 70 73 74 61 63 6b 25 28 6c |nt%=loopstack%(l| 00006900 73 74 61 63 6b 25 2d 32 29 3a 6c 6f 6f 70 73 74 |stack%-2):loopst| 00006910 61 63 6b 25 28 6c 73 74 61 63 6b 25 2d 31 29 2d |ack%(lstack%-1)-| 00006920 3d 31 0d 1f 04 05 cc 0d 1f 0e 0e 6c 73 74 61 63 |=1.........lstac| 00006930 6b 25 2d 3d 32 0d 1f 18 0e f2 63 6c 6f 73 65 70 |k%-=2.....closep| 00006940 61 74 68 0d 1f 22 07 cd 3a e1 0d 1f 2c 05 3a 0d |ath.."..:...,.:.| 00006950 1f 36 14 dd f2 74 6f 73 75 62 28 73 75 62 6e 75 |.6...tosub(subnu| 00006960 6d 25 29 0d 1f 40 3d 73 75 62 73 74 61 63 6b 25 |m%)..@=substack%| 00006970 28 73 74 61 63 6b 25 29 3d 70 6f 69 6e 74 25 3a |(stack%)=point%:| 00006980 73 74 61 63 6b 25 2b 3d 31 3a 70 6f 69 6e 74 25 |stack%+=1:point%| 00006990 3d 74 6f 73 75 62 25 28 73 75 62 6e 75 6d 25 29 |=tosub%(subnum%)| 000069a0 0d 1f 4a 05 e1 0d 1f 54 05 3a 0d 1f 5e 12 dd a4 |..J....T.:..^...| 000069b0 73 75 62 6e 6f 28 6e 61 6d 65 24 29 0d 1f 68 4d |subno(name$)..hM| 000069c0 6e 75 6d 62 65 72 25 3d 2d 31 3a e3 20 6e 75 6d |number%=-1:. num| 000069d0 25 3d 30 20 b8 20 74 6f 25 2d 31 3a e7 20 74 6f |%=0 . to%-1:. to| 000069e0 73 75 62 24 28 6e 75 6d 25 29 3d 6e 61 6d 65 24 |sub$(num%)=name$| 000069f0 20 80 20 6e 61 6d 65 24 3c 3e 22 22 20 6e 75 6d | . name$<>"" num| 00006a00 62 65 72 25 3d 6e 75 6d 25 0d 1f 72 0e ed 3a 3d |ber%=num%..r..:=| 00006a10 6e 75 6d 62 65 72 25 0d 1f 7c 05 3a 0d 1f 86 1e |number%..|.:....| 00006a20 dd f2 74 6f 73 65 61 72 63 68 28 61 64 64 72 65 |..tosearch(addre| 00006a30 73 73 25 2c 73 69 7a 65 25 29 0d 1f 90 1f e3 20 |ss%,size%)..... | 00006a40 58 25 3d 30 20 b8 20 39 39 3a 74 6f 73 75 62 24 |X%=0 . 99:tosub$| 00006a50 28 58 25 29 3d 22 22 3a ed 0d 1f 9a 15 c8 99 20 |(X%)="":....... | 00006a60 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 1f |"Hourglass_On"..| 00006a70 a4 2c 70 6f 69 6e 74 25 3d 61 64 64 72 65 73 73 |.,point%=address| 00006a80 25 3a 73 74 61 63 6b 25 3d 30 3a 6c 73 74 61 63 |%:stack%=0:lstac| 00006a90 6b 25 3d 30 3a 74 6f 25 3d 30 0d 1f ae 36 f5 3a |k%=0:to%=0...6.:| 00006aa0 41 24 3d a4 63 6f 6d 73 74 72 69 6e 67 28 70 6f |A$=.comstring(po| 00006ab0 69 6e 74 25 29 3a 70 6f 69 6e 74 25 3d a4 67 65 |int%):point%=.ge| 00006ac0 74 63 6f 6d 6d 61 6e 64 28 70 6f 69 6e 74 25 29 |tcommand(point%)| 00006ad0 0d 1f b8 22 41 24 3d a4 6e 6f 73 70 63 73 28 41 |..."A$=.nospcs(A| 00006ae0 24 29 3a 41 24 3d a4 6c 65 74 63 61 73 65 28 41 |$):A$=.letcase(A| 00006af0 24 29 0d 1f c2 25 e7 20 c0 41 24 2c 32 29 3d 22 |$)...%. .A$,2)="| 00006b00 54 4f 22 20 f2 74 6f 28 a4 70 61 72 61 6d 73 28 |TO" .to(.params(| 00006b10 31 35 2c 41 24 29 29 0d 1f cc 1c fd 20 70 6f 69 |15,A$))..... poi| 00006b20 6e 74 25 3e 3d 61 64 64 72 65 73 73 25 2b 73 69 |nt%>=address%+si| 00006b30 7a 65 25 0d 1f d6 16 c8 99 20 22 48 6f 75 72 67 |ze%...... "Hourg| 00006b40 6c 61 73 73 5f 4f 66 66 22 0d 1f e0 05 e1 0d 1f |lass_Off".......| 00006b50 ea 05 3a 0d 1f f4 0c dd f2 74 6f 28 42 24 29 0d |..:......to(B$).| 00006b60 1f fe 38 e7 20 74 6f 25 3d 31 30 30 20 45 72 72 |..8. to%=100 Err| 00006b70 6f 72 24 3d 22 54 6f 6f 20 6d 61 6e 79 20 54 4f |or$="Too many TO| 00006b80 20 73 75 62 72 6f 75 74 69 6e 65 73 20 64 65 66 | subroutines def| 00006b90 69 6e 65 64 22 3a e1 0d 20 08 12 e7 20 a4 61 6c |ined":.. ... .al| 00006ba0 70 68 61 28 42 24 29 20 e1 0d 20 12 35 e7 20 a4 |pha(B$) .. .5. .| 00006bb0 73 75 62 6e 6f 28 42 24 29 3e 2d 31 20 8c 20 6e |subno(B$)>-1 . n| 00006bc0 6f 25 3d a4 73 75 62 6e 6f 28 42 24 29 20 8b 20 |o%=.subno(B$) . | 00006bd0 6e 6f 25 3d 74 6f 25 3a 74 6f 25 2b 3d 31 0d 20 |no%=to%:to%+=1. | 00006be0 1c 27 74 6f 73 75 62 24 28 6e 6f 25 29 3d 42 24 |.'tosub$(no%)=B$| 00006bf0 3a 74 6f 73 75 62 25 28 6e 6f 25 29 3d 70 6f 69 |:tosub%(no%)=poi| 00006c00 6e 74 25 3a e1 0d 20 26 05 3a 0d 20 30 12 dd f2 |nt%:.. &.:. 0...| 00006c10 65 6e 64 74 6f 3a 74 6f 24 3d 22 22 0d 20 3a 30 |endto:to$="". :0| 00006c20 e7 20 73 74 61 63 6b 25 3d 30 20 45 72 72 6f 72 |. stack%=0 Error| 00006c30 24 3d 22 4e 6f 74 20 69 6e 20 61 20 54 4f 20 73 |$="Not in a TO s| 00006c40 75 62 72 6f 75 74 69 6e 65 22 3a e1 0d 20 44 28 |ubroutine":.. D(| 00006c50 73 74 61 63 6b 25 2d 3d 31 3a 70 6f 69 6e 74 25 |stack%-=1:point%| 00006c60 3d 73 75 62 73 74 61 63 6b 25 28 73 74 61 63 6b |=substack%(stack| 00006c70 25 29 3a e1 0d 20 4e 05 3a 0d 20 58 0f dd f2 63 |%):.. N.:. X...c| 00006c80 6f 6d 6d 65 6e 74 3a e1 0d 20 62 05 3a 0d 20 6c |omment:.. b.:. l| 00006c90 38 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |8. -------------| 00006ca0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00006cc0 2d 2d 2d 2d 2d 0d 20 76 38 f4 20 7c 20 20 20 20 |-----. v8. | | 00006cd0 20 20 20 20 54 75 72 74 6c 65 20 4d 6f 76 65 6d | Turtle Movem| 00006ce0 65 6e 74 20 50 72 6f 63 65 64 75 72 65 73 20 20 |ent Procedures | 00006cf0 20 20 20 20 20 20 20 20 20 20 20 20 7c 0d 20 80 | |. .| 00006d00 38 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |8. -------------| 00006d10 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00006d30 2d 2d 2d 2d 2d 0d 20 8a 05 3a 0d 20 94 17 dd f2 |-----. ..:. ....| 00006d40 66 6f 72 77 61 72 64 28 64 69 73 74 61 6e 63 65 |forward(distance| 00006d50 29 0d 20 9e 2a 74 75 72 74 6c 65 78 70 6f 73 2b |). .*turtlexpos+| 00006d60 3d 64 69 73 74 61 6e 63 65 2a b5 28 b2 28 74 75 |=distance*.(.(tu| 00006d70 72 74 6c 65 61 6e 67 6c 65 29 29 0d 20 a8 2a 74 |rtleangle)). .*t| 00006d80 75 72 74 6c 65 79 70 6f 73 2b 3d 64 69 73 74 61 |urtleypos+=dista| 00006d90 6e 63 65 2a 9b 28 b2 28 74 75 72 74 6c 65 61 6e |nce*.(.(turtlean| 00006da0 67 6c 65 29 29 0d 20 b2 1c f2 6d 65 73 73 61 67 |gle)). ...messag| 00006db0 65 63 6f 64 65 28 31 2c 64 69 73 74 61 6e 63 65 |ecode(1,distance| 00006dc0 29 0d 20 bc 0d e7 20 70 65 6e 3d a3 20 e1 0d 20 |). ... pen=. .. | 00006dd0 c6 3e c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f |.>.. "OS_SpriteO| 00006de0 70 22 2c 33 31 36 2c 73 70 72 69 74 65 61 72 65 |p",316,spriteare| 00006df0 61 25 2c 73 70 72 69 74 65 6e 61 6d 65 24 20 b8 |a%,spritename$ .| 00006e00 20 52 30 2c 52 31 2c 52 32 2c 52 33 0d 20 d0 41 | R0,R1,R2,R3. .A| 00006e10 e6 20 30 2c 70 65 6e 63 6f 6c 6f 75 72 3a ec 20 |. 0,pencolour:. | 00006e20 6f 6c 64 74 75 72 74 6c 65 78 2c 6f 6c 64 74 75 |oldturtlex,oldtu| 00006e30 72 74 6c 65 79 3a df 20 74 75 72 74 6c 65 78 70 |rtley:. turtlexp| 00006e40 6f 73 2c 74 75 72 74 6c 65 79 70 6f 73 0d 20 da |os,turtleypos. .| 00006e50 20 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 | .. "OS_SpriteOp| 00006e60 22 2c 52 30 2c 52 31 2c 52 32 2c 52 33 0d 20 e4 |",R0,R1,R2,R3. .| 00006e70 44 f2 64 72 61 77 6c 69 6e 65 28 6f 6c 64 74 75 |D.drawline(oldtu| 00006e80 72 74 6c 65 78 2c 6f 6c 64 74 75 72 74 6c 65 79 |rtlex,oldturtley| 00006e90 2c 74 75 72 74 6c 65 78 70 6f 73 2c 74 75 72 74 |,turtlexpos,turt| 00006ea0 6c 65 79 70 6f 73 2c 70 65 6e 63 6f 6c 6f 75 72 |leypos,pencolour| 00006eb0 29 0d 20 ee 05 e1 0d 20 f8 05 3a 0d 21 02 14 dd |). .... ..:.!...| 00006ec0 f2 62 61 63 6b 28 64 69 73 74 61 6e 63 65 29 0d |.back(distance).| 00006ed0 21 0c 2a 74 75 72 74 6c 65 78 70 6f 73 2d 3d 64 |!.*turtlexpos-=d| 00006ee0 69 73 74 61 6e 63 65 2a b5 28 b2 28 74 75 72 74 |istance*.(.(turt| 00006ef0 6c 65 61 6e 67 6c 65 29 29 0d 21 16 2a 74 75 72 |leangle)).!.*tur| 00006f00 74 6c 65 79 70 6f 73 2d 3d 64 69 73 74 61 6e 63 |tleypos-=distanc| 00006f10 65 2a 9b 28 b2 28 74 75 72 74 6c 65 61 6e 67 6c |e*.(.(turtleangl| 00006f20 65 29 29 0d 21 20 1c f2 6d 65 73 73 61 67 65 63 |e)).! ..messagec| 00006f30 6f 64 65 28 32 2c 64 69 73 74 61 6e 63 65 29 0d |ode(2,distance).| 00006f40 21 2a 0d e7 20 70 65 6e 3d a3 20 e1 0d 21 34 3e |!*.. pen=. ..!4>| 00006f50 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 |.. "OS_SpriteOp"| 00006f60 2c 33 31 36 2c 73 70 72 69 74 65 61 72 65 61 25 |,316,spritearea%| 00006f70 2c 73 70 72 69 74 65 6e 61 6d 65 24 20 b8 20 52 |,spritename$ . R| 00006f80 30 2c 52 31 2c 52 32 2c 52 33 0d 21 3e 41 e6 20 |0,R1,R2,R3.!>A. | 00006f90 30 2c 70 65 6e 63 6f 6c 6f 75 72 3a ec 20 6f 6c |0,pencolour:. ol| 00006fa0 64 74 75 72 74 6c 65 78 2c 6f 6c 64 74 75 72 74 |dturtlex,oldturt| 00006fb0 6c 65 79 3a df 20 74 75 72 74 6c 65 78 70 6f 73 |ley:. turtlexpos| 00006fc0 2c 74 75 72 74 6c 65 79 70 6f 73 0d 21 48 20 c8 |,turtleypos.!H .| 00006fd0 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c |. "OS_SpriteOp",| 00006fe0 52 30 2c 52 31 2c 52 32 2c 52 33 0d 21 52 44 f2 |R0,R1,R2,R3.!RD.| 00006ff0 64 72 61 77 6c 69 6e 65 28 6f 6c 64 74 75 72 74 |drawline(oldturt| 00007000 6c 65 78 2c 6f 6c 64 74 75 72 74 6c 65 79 2c 74 |lex,oldturtley,t| 00007010 75 72 74 6c 65 78 70 6f 73 2c 74 75 72 74 6c 65 |urtlexpos,turtle| 00007020 79 70 6f 73 2c 70 65 6e 63 6f 6c 6f 75 72 29 0d |ypos,pencolour).| 00007030 21 5c 05 e1 0d 21 66 05 3a 0d 21 70 13 dd f2 6c |!\...!f.:.!p...l| 00007040 65 66 74 28 64 65 67 72 65 65 73 29 0d 21 7a 1b |eft(degrees).!z.| 00007050 f2 6d 65 73 73 61 67 65 63 6f 64 65 28 33 2c 64 |.messagecode(3,d| 00007060 65 67 72 65 65 73 29 0d 21 84 18 74 75 72 74 6c |egrees).!..turtl| 00007070 65 61 6e 67 6c 65 2d 3d 64 65 67 72 65 65 73 0d |eangle-=degrees.| 00007080 21 8e 05 e1 0d 21 98 05 3a 0d 21 a2 14 dd f2 72 |!....!..:.!....r| 00007090 69 67 68 74 28 64 65 67 72 65 65 73 29 0d 21 ac |ight(degrees).!.| 000070a0 1b f2 6d 65 73 73 61 67 65 63 6f 64 65 28 34 2c |..messagecode(4,| 000070b0 64 65 67 72 65 65 73 29 0d 21 b6 18 74 75 72 74 |degrees).!..turt| 000070c0 6c 65 61 6e 67 6c 65 2b 3d 64 65 67 72 65 65 73 |leangle+=degrees| 000070d0 0d 21 c0 05 e1 0d 21 ca 05 3a 0d 21 d4 12 dd f2 |.!....!..:.!....| 000070e0 61 6e 67 6c 65 28 61 6e 67 6c 65 29 0d 21 de 31 |angle(angle).!.1| 000070f0 61 6e 67 25 3d 74 75 72 74 6c 65 61 6e 67 6c 65 |ang%=turtleangle| 00007100 20 83 20 33 36 30 3a e7 20 61 6e 67 25 3c 30 20 | . 360:. ang%<0 | 00007110 61 6e 67 25 3d 33 36 30 2b 61 6e 67 25 0d 21 e8 |ang%=360+ang%.!.| 00007120 2c 61 6e 67 6c 25 3d 61 6e 67 6c 65 20 83 20 33 |,angl%=angle . 3| 00007130 36 30 3a e7 20 61 6e 67 25 3c 30 20 61 6e 67 25 |60:. ang%<0 ang%| 00007140 3d 33 36 30 2b 61 6e 67 25 0d 21 f2 57 e7 20 61 |=360+ang%.!.W. a| 00007150 6e 67 25 3e 61 6e 67 6c 25 20 6c 65 66 74 25 3d |ng%>angl% left%=| 00007160 61 6e 67 25 2d 61 6e 67 6c 25 3a 72 69 67 68 74 |ang%-angl%:right| 00007170 25 3d 33 36 30 2d 6c 65 66 74 25 20 8b 20 72 69 |%=360-left% . ri| 00007180 67 68 74 25 3d 61 6e 67 25 2d 61 6e 67 6c 25 3a |ght%=ang%-angl%:| 00007190 6c 65 66 74 25 3d 33 36 30 2d 72 69 67 68 74 25 |left%=360-right%| 000071a0 0d 21 fc 30 e7 20 72 69 67 68 74 25 3c 30 20 6c |.!.0. right%<0 l| 000071b0 65 66 74 25 3d 33 36 30 2b 72 69 67 68 74 25 3a |eft%=360+right%:| 000071c0 72 69 67 68 74 25 3d 33 36 30 2d 6c 65 66 74 25 |right%=360-left%| 000071d0 0d 22 06 30 e7 20 6c 65 66 74 25 3c 30 20 72 69 |.".0. left%<0 ri| 000071e0 67 68 74 25 3d 33 36 30 2b 72 69 67 68 74 25 3a |ght%=360+right%:| 000071f0 6c 65 66 74 25 3d 33 36 30 2d 72 69 67 68 74 25 |left%=360-right%| 00007200 0d 22 10 41 e7 20 72 69 67 68 74 25 3c 6c 65 66 |.".A. right%<lef| 00007210 74 25 20 f2 6d 65 73 73 61 67 65 63 6f 64 65 28 |t% .messagecode(| 00007220 34 2c 72 69 67 68 74 25 29 20 8b 20 f2 6d 65 73 |4,right%) . .mes| 00007230 73 61 67 65 63 6f 64 65 28 33 2c 6c 65 66 74 25 |sagecode(3,left%| 00007240 29 0d 22 1a 15 74 75 72 74 6c 65 61 6e 67 6c 65 |)."..turtleangle| 00007250 3d 61 6e 67 6c 65 0d 22 24 05 e1 0d 22 2e 05 3a |=angle."$..."..:| 00007260 0d 22 38 0b dd f2 70 65 6e 75 70 0d 22 42 15 f2 |."8...penup."B..| 00007270 6d 65 73 73 61 67 65 63 6f 64 65 28 35 2c 30 29 |messagecode(5,0)| 00007280 0d 22 4c 14 70 65 6e 3d a3 3a f2 63 6c 6f 73 65 |."L.pen=.:.close| 00007290 70 61 74 68 0d 22 56 05 e1 0d 22 60 05 3a 0d 22 |path."V..."`.:."| 000072a0 6a 0d dd f2 70 65 6e 64 6f 77 6e 0d 22 74 15 f2 |j...pendown."t..| 000072b0 6d 65 73 73 61 67 65 63 6f 64 65 28 36 2c 30 29 |messagecode(6,0)| 000072c0 0d 22 7e 09 70 65 6e 3d b9 0d 22 88 05 e1 0d 22 |."~.pen=.."...."| 000072d0 92 05 3a 0d 22 9c 17 dd f2 70 65 6e 63 6f 6c 6f |..:."....pencolo| 000072e0 75 72 28 63 6f 6c 6f 75 72 29 0d 22 a6 1a f2 6d |ur(colour)."...m| 000072f0 65 73 73 61 67 65 63 6f 64 65 28 37 2c 63 6f 6c |essagecode(7,col| 00007300 6f 75 72 29 0d 22 b0 1f 70 65 6e 63 6f 6c 6f 75 |our)."..pencolou| 00007310 72 3d 63 6f 6c 6f 75 72 3a f2 63 6c 6f 73 65 70 |r=colour:.closep| 00007320 61 74 68 0d 22 ba 05 e1 0d 22 c4 05 3a 0d 22 ce |ath."...."..:.".| 00007330 0b dd f2 63 6c 65 61 72 0d 22 d8 3e c8 99 20 22 |...clear.".>.. "| 00007340 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 33 31 36 |OS_SpriteOp",316| 00007350 2c 73 70 72 69 74 65 61 72 65 61 25 2c 73 70 72 |,spritearea%,spr| 00007360 69 74 65 6e 61 6d 65 24 20 b8 20 52 30 2c 52 31 |itename$ . R0,R1| 00007370 2c 52 32 2c 52 33 0d 22 e2 1e e6 20 30 2c 30 3a |,R2,R3."... 0,0:| 00007380 ec 20 30 2c 30 3a f0 20 39 37 2c 69 77 64 25 2c |. 0,0:. 97,iwd%,| 00007390 69 68 65 25 0d 22 ec 20 c8 99 20 22 4f 53 5f 53 |ihe%.". .. "OS_S| 000073a0 70 72 69 74 65 4f 70 22 2c 52 30 2c 52 31 2c 52 |priteOp",R0,R1,R| 000073b0 32 2c 52 33 0d 22 f6 24 f2 75 70 64 61 74 65 74 |2,R3.".$.updatet| 000073c0 75 72 74 6c 65 28 30 2c 2d 69 68 65 25 2c 69 77 |urtle(0,-ihe%,iw| 000073d0 64 25 2c 69 68 65 25 29 0d 23 00 05 e1 0d 23 0a |d%,ihe%).#....#.| 000073e0 05 3a 0d 23 14 1b dd f2 6d 6f 76 65 74 6f 28 78 |.:.#....moveto(x| 000073f0 63 6f 6f 72 64 2c 79 63 6f 6f 72 64 29 0d 23 1e |coord,ycoord).#.| 00007400 3d 6f 70 70 6f 73 69 74 65 3d 28 74 75 72 74 6c |=opposite=(turtl| 00007410 65 78 70 6f 73 2d 78 63 6f 6f 72 64 29 3a 61 64 |expos-xcoord):ad| 00007420 6a 61 63 65 6e 74 3d 28 74 75 72 74 6c 65 79 70 |jacent=(turtleyp| 00007430 6f 73 2d 79 63 6f 6f 72 64 29 0d 23 28 38 e7 20 |os-ycoord).#(8. | 00007440 61 64 6a 61 63 65 6e 74 3d 30 20 61 6e 67 6c 65 |adjacent=0 angle| 00007450 3d 30 20 8b 20 61 6e 67 6c 65 3d 9d 28 99 28 6f |=0 . angle=.(.(o| 00007460 70 70 6f 73 69 74 65 2f 61 64 6a 61 63 65 6e 74 |pposite/adjacent| 00007470 29 29 0d 23 32 28 e7 20 6f 70 70 6f 73 69 74 65 |)).#2(. opposite| 00007480 3c 30 20 80 20 61 64 6a 61 63 65 6e 74 3c 30 20 |<0 . adjacent<0 | 00007490 61 6e 67 6c 65 2d 3d 31 38 30 0d 23 3c 28 e7 20 |angle-=180.#<(. | 000074a0 6f 70 70 6f 73 69 74 65 3e 30 20 80 20 61 64 6a |opposite>0 . adj| 000074b0 61 63 65 6e 74 3c 30 20 61 6e 67 6c 65 2b 3d 31 |acent<0 angle+=1| 000074c0 38 30 0d 23 46 37 64 69 73 74 61 6e 63 65 3d b6 |80.#F7distance=.| 000074d0 28 28 6f 70 70 6f 73 69 74 65 2a 6f 70 70 6f 73 |((opposite*oppos| 000074e0 69 74 65 29 2b 28 61 64 6a 61 63 65 6e 74 2a 61 |ite)+(adjacent*a| 000074f0 64 6a 61 63 65 6e 74 29 29 0d 23 50 21 f2 61 6e |djacent)).#P!.an| 00007500 67 6c 65 28 61 6e 67 6c 65 29 3a f2 62 61 63 6b |gle(angle):.back| 00007510 28 64 69 73 74 61 6e 63 65 29 0d 23 5a 05 e1 0d |(distance).#Z...| 00007520 23 64 05 3a 0d 23 6e 0a dd f2 68 6f 6d 65 0d 23 |#d.:.#n...home.#| 00007530 78 1e e7 20 70 65 6e 3d b9 20 f2 70 65 6e 75 70 |x.. pen=. .penup| 00007540 3a 54 25 3d 31 20 8b 20 54 25 3d 30 0d 23 82 37 |:T%=1 . T%=0.#.7| 00007550 f2 70 65 6e 75 70 3a f2 6d 6f 76 65 74 6f 28 68 |.penup:.moveto(h| 00007560 6f 6d 65 78 70 6f 73 2c 68 6f 6d 65 79 70 6f 73 |omexpos,homeypos| 00007570 29 3a f2 61 6e 67 6c 65 28 68 6f 6d 65 61 6e 67 |):.angle(homeang| 00007580 6c 65 29 0d 23 8c 13 e7 20 54 25 3d 31 20 f2 70 |le).#... T%=1 .p| 00007590 65 6e 64 6f 77 6e 0d 23 96 05 e1 0d 23 a0 05 3a |endown.#....#..:| 000075a0 0d 23 aa 0d dd f2 73 65 74 68 6f 6d 65 0d 23 b4 |.#....sethome.#.| 000075b0 31 61 6e 67 25 3d 74 75 72 74 6c 65 61 6e 67 6c |1ang%=turtleangl| 000075c0 65 20 83 20 33 36 30 3a e7 20 61 6e 67 25 3c 30 |e . 360:. ang%<0| 000075d0 20 61 6e 67 25 3d 33 36 30 2b 61 6e 67 25 0d 23 | ang%=360+ang%.#| 000075e0 be 41 68 6f 6d 65 78 70 6f 73 3d 74 75 72 74 6c |.Ahomexpos=turtl| 000075f0 65 78 70 6f 73 3a 68 6f 6d 65 79 70 6f 73 3d 74 |expos:homeypos=t| 00007600 75 72 74 6c 65 79 70 6f 73 3a 68 6f 6d 65 61 6e |urtleypos:homean| 00007610 67 6c 65 3d 74 75 72 74 6c 65 61 6e 67 6c 65 0d |gle=turtleangle.| 00007620 23 c8 23 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 |#.#.seticontext(| 00007630 63 6f 6d 6d 61 6e 64 2c 35 2c 22 49 6e 66 6f 3a |command,5,"Info:| 00007640 22 29 0d 23 d2 5e f2 73 65 74 69 63 6f 6e 74 65 |").#.^.seticonte| 00007650 78 74 28 63 6f 6d 6d 61 6e 64 2c 31 31 2c 22 48 |xt(command,11,"H| 00007660 6f 6d 65 20 73 65 74 20 74 6f 20 22 2b c3 28 a8 |ome set to "+.(.| 00007670 28 68 6f 6d 65 78 70 6f 73 29 29 2b 22 2c 22 2b |(homexpos))+","+| 00007680 c3 28 a8 28 68 6f 6d 65 79 70 6f 73 29 29 2b 22 |.(.(homeypos))+"| 00007690 2c 22 2b c3 28 61 6e 67 25 29 2b 22 b0 2e 22 29 |,"+.(ang%)+"..")| 000076a0 0d 23 dc 49 f2 73 63 72 6f 6c 6c 75 70 3a f2 73 |.#.I.scrollup:.s| 000076b0 65 74 69 63 6f 6e 74 65 78 74 28 63 6f 6d 6d 61 |eticontext(comma| 000076c0 6e 64 2c 35 2c 22 4c 6f 47 6f 3a 22 29 3a f2 73 |nd,5,"LoGo:"):.s| 000076d0 65 74 69 63 6f 6e 74 65 78 74 28 63 6f 6d 6d 61 |eticontext(comma| 000076e0 6e 64 2c 31 31 2c 22 22 29 0d 23 e6 05 e1 0d 23 |nd,11,"").#....#| 000076f0 f0 05 3a 0d 23 fa 0d dd f2 72 65 73 74 61 72 74 |..:.#....restart| 00007700 0d 24 04 29 68 6f 6d 65 78 70 6f 73 3d 36 34 30 |.$.)homexpos=640| 00007710 3a 68 6f 6d 65 79 70 6f 73 3d 35 31 32 3a 68 6f |:homeypos=512:ho| 00007720 6d 65 61 6e 67 6c 65 3d 30 0d 24 0e 10 f2 68 6f |meangle=0.$...ho| 00007730 6d 65 3a f2 63 6c 65 61 72 0d 24 18 23 f2 73 65 |me:.clear.$.#.se| 00007740 74 69 63 6f 6e 74 65 78 74 28 63 6f 6d 6d 61 6e |ticontext(comman| 00007750 64 2c 35 2c 22 49 6e 66 6f 3a 22 29 0d 24 22 3a |d,5,"Info:").$":| 00007760 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 63 6f 6d |.seticontext(com| 00007770 6d 61 6e 64 2c 31 31 2c 22 4c 6f 67 6f 20 72 65 |mand,11,"Logo re| 00007780 73 65 74 20 61 74 20 22 2b 91 24 29 3a f2 73 63 |set at "+.$):.sc| 00007790 72 6f 6c 6c 75 70 0d 24 2c 3f f2 73 65 74 69 63 |rollup.$,?.setic| 000077a0 6f 6e 74 65 78 74 28 63 6f 6d 6d 61 6e 64 2c 35 |ontext(command,5| 000077b0 2c 22 4c 6f 47 6f 3a 22 29 3a f2 73 65 74 69 63 |,"LoGo:"):.setic| 000077c0 6f 6e 74 65 78 74 28 63 6f 6d 6d 61 6e 64 2c 31 |ontext(command,1| 000077d0 31 2c 22 22 29 0d 24 36 05 e1 0d 24 40 05 3a 0d |1,"").$6...$@.:.| 000077e0 24 4a 13 dd f2 68 65 6c 70 63 6f 6d 28 63 6f 6d |$J...helpcom(com| 000077f0 24 29 0d 24 54 2a 63 6f 6d 24 3d a4 6e 6f 73 70 |$).$T*com$=.nosp| 00007800 63 73 28 63 6f 6d 24 29 3a 63 6f 6d 24 3d a4 6c |cs(com$):com$=.l| 00007810 65 74 63 61 73 65 28 63 6f 6d 24 29 0d 24 5e 1d |etcase(com$).$^.| 00007820 63 6f 6d 24 3d a4 65 78 70 61 6e 64 63 6f 6d 6d |com$=.expandcomm| 00007830 61 6e 64 28 63 6f 6d 24 29 0d 24 68 19 e7 20 63 |and(com$).$h.. c| 00007840 6f 6d 24 3d 22 22 20 63 6f 6d 24 3d 22 48 45 4c |om$="" com$="HEL| 00007850 50 22 0d 24 72 1b f7 20 8d 64 66 45 3a 4e 25 3d |P".$r.. .dfE:N%=| 00007860 30 3a e3 20 58 25 3d 31 20 b8 20 32 34 0d 24 7c |0:. X%=1 . 24.$|| 00007870 49 f3 20 41 24 2c 42 24 2c 43 24 2c 44 24 3a e7 |I. A$,B$,C$,D$:.| 00007880 20 41 24 3d 63 6f 6d 24 20 80 20 41 24 3c 3e 22 | A$=com$ . A$<>"| 00007890 22 20 73 79 6e 74 61 78 24 3d 42 24 3a 61 62 62 |" syntax$=B$:abb| 000078a0 72 65 76 24 3d 43 24 3a 70 75 72 70 24 3d 44 24 |rev$=C$:purp$=D$| 000078b0 3a 4e 25 3d 58 25 0d 24 86 2b ed 3a e7 20 4e 25 |:N%=X%.$.+.:. N%| 000078c0 3d 30 20 73 79 6e 74 61 78 24 3d 22 22 3a 61 62 |=0 syntax$="":ab| 000078d0 62 72 65 76 24 3d 22 22 3a 70 75 72 70 24 3d 22 |brev$="":purp$="| 000078e0 22 0d 24 90 1e f2 73 65 74 69 63 6f 6e 74 65 78 |".$...seticontex| 000078f0 74 28 63 6f 6d 6d 61 6e 64 2c 35 2c 22 22 29 0d |t(command,5,"").| 00007900 24 9a 38 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 |$.8.seticontext(| 00007910 63 6f 6d 6d 61 6e 64 2c 31 31 2c 22 53 79 6e 74 |command,11,"Synt| 00007920 61 78 3a 22 2b 73 79 6e 74 61 78 24 29 3a f2 73 |ax:"+syntax$):.s| 00007930 63 72 6f 6c 6c 75 70 0d 24 a4 1e f2 73 65 74 69 |crollup.$...seti| 00007940 63 6f 6e 74 65 78 74 28 63 6f 6d 6d 61 6e 64 2c |context(command,| 00007950 35 2c 22 22 29 0d 24 ae 2c f2 73 65 74 69 63 6f |5,"").$.,.setico| 00007960 6e 74 65 78 74 28 63 6f 6d 6d 61 6e 64 2c 31 31 |ntext(command,11| 00007970 2c 70 75 72 70 24 29 3a f2 73 63 72 6f 6c 6c 75 |,purp$):.scrollu| 00007980 70 0d 24 b8 3f f2 73 65 74 69 63 6f 6e 74 65 78 |p.$.?.seticontex| 00007990 74 28 63 6f 6d 6d 61 6e 64 2c 35 2c 22 4c 6f 47 |t(command,5,"LoG| 000079a0 6f 3a 22 29 3a f2 73 65 74 69 63 6f 6e 74 65 78 |o:"):.seticontex| 000079b0 74 28 63 6f 6d 6d 61 6e 64 2c 31 31 2c 22 22 29 |t(command,11,"")| 000079c0 0d 24 c2 05 e1 0d 24 cc 05 3a 0d 24 d6 2c f4 20 |.$....$..:.$.,. | 000079d0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000079f0 2d 2d 2d 2d 2d 2d 0d 24 e0 2c f4 20 7c 20 20 20 |------.$.,. | | 00007a00 20 20 20 20 4d 65 73 73 61 67 65 20 70 61 73 73 | Message pass| 00007a10 69 6e 67 20 72 6f 75 74 69 6e 65 73 20 20 20 20 |ing routines | 00007a20 20 7c 0d 24 ea 2c f4 20 2d 2d 2d 2d 2d 2d 2d 2d | |.$.,. --------| 00007a30 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00007a40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 24 |--------------.$| 00007a50 f4 05 3a 0d 24 fe 22 dd f2 6d 65 73 73 61 67 65 |..:.$."..message| 00007a60 63 6f 64 65 28 63 6f 64 65 25 2c 70 61 72 61 6d |code(code%,param| 00007a70 65 74 65 72 29 0d 25 08 32 71 25 21 30 3d 31 30 |eter).%.2q%!0=10| 00007a80 30 3a 71 25 21 34 3d 30 3a 71 25 21 38 3d 30 3a |0:q%!4=0:q%!8=0:| 00007a90 71 25 21 31 32 3d 30 3a 71 25 21 31 36 3d 26 34 |q%!12=0:q%!16=&4| 00007aa0 43 34 46 34 37 34 46 0d 25 12 2a 71 25 21 32 30 |C4F474F.%.*q%!20| 00007ab0 3d 63 6f 64 65 25 3a 24 28 71 25 2b 32 34 29 3d |=code%:$(q%+24)=| 00007ac0 c3 28 70 61 72 61 6d 65 74 65 72 29 2b bd 28 30 |.(parameter)+.(0| 00007ad0 29 0d 25 1c 21 c8 99 20 22 57 69 6d 70 5f 53 65 |).%.!.. "Wimp_Se| 00007ae0 6e 64 4d 65 73 73 61 67 65 22 2c 31 37 2c 71 25 |ndMessage",17,q%| 00007af0 2c 30 0d 25 26 05 e1 0d 25 30 05 3a 0d 25 3a 2c |,0.%&...%0.:.%:,| 00007b00 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |. --------------| 00007b10 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00007b20 2d 2d 2d 2d 2d 2d 2d 2d 0d 25 44 2c f4 20 7c 20 |--------.%D,. | | 00007b30 20 20 20 44 72 61 77 66 69 6c 65 20 67 65 6e 65 | Drawfile gene| 00007b40 72 61 74 69 6f 6e 20 72 6f 75 74 69 6e 65 20 20 |ration routine | 00007b50 20 20 20 7c 0d 25 4e 2c f4 20 2d 2d 2d 2d 2d 2d | |.%N,. ------| 00007b60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00007b80 0d 25 58 05 3a 0d 25 62 13 dd f2 73 65 74 75 70 |.%X.:.%b...setup| 00007b90 64 72 61 77 66 69 6c 65 0d 25 6c 16 64 72 70 6f |drawfile.%l.drpo| 00007ba0 69 6e 74 25 3d 64 72 61 77 66 69 6c 65 25 0d 25 |int%=drawfile%.%| 00007bb0 76 20 24 64 72 70 6f 69 6e 74 25 3d 22 44 72 61 |v $drpoint%="Dra| 00007bc0 77 22 3a 64 72 70 6f 69 6e 74 25 2b 3d 34 0d 25 |w":drpoint%+=4.%| 00007bd0 80 3a 21 64 72 70 6f 69 6e 74 25 3d 32 30 31 3a |.:!drpoint%=201:| 00007be0 64 72 70 6f 69 6e 74 25 2b 3d 34 3a f4 20 20 20 |drpoint%+=4:. | 00007bf0 20 20 20 20 20 4d 61 6a 6f 72 20 76 65 72 73 69 | Major versi| 00007c00 6f 6e 20 73 74 61 6d 70 0d 25 8a 3a 21 64 72 70 |on stamp.%.:!drp| 00007c10 6f 69 6e 74 25 3d 30 3a 64 72 70 6f 69 6e 74 25 |oint%=0:drpoint%| 00007c20 2b 3d 34 3a f4 20 20 20 20 20 20 20 20 20 20 4d |+=4:. M| 00007c30 69 6e 6f 72 20 76 65 72 73 69 6f 6e 20 73 74 61 |inor version sta| 00007c40 6d 70 0d 25 94 2f 24 64 72 70 6f 69 6e 74 25 3d |mp.%./$drpoint%=| 00007c50 c0 22 4c 6f 67 6f 22 2b c4 31 32 2c 22 20 22 29 |."Logo"+.12," ")| 00007c60 2c 31 32 29 3a 64 72 70 6f 69 6e 74 25 2b 3d 31 |,12):drpoint%+=1| 00007c70 32 0d 25 9e 2d 64 72 70 6f 69 6e 74 25 21 30 3d |2.%.-drpoint%!0=| 00007c80 a4 78 64 72 61 77 28 30 29 3a 64 72 70 6f 69 6e |.xdraw(0):drpoin| 00007c90 74 25 21 34 3d a4 79 64 72 61 77 28 30 29 0d 25 |t%!4=.ydraw(0).%| 00007ca0 a8 41 64 72 70 6f 69 6e 74 25 21 38 3d a4 78 64 |.Adrpoint%!8=.xd| 00007cb0 72 61 77 28 31 32 38 30 29 3a 64 72 70 6f 69 6e |raw(1280):drpoin| 00007cc0 74 25 21 31 32 3d a4 79 64 72 61 77 28 31 30 32 |t%!12=.ydraw(102| 00007cd0 34 29 3a 64 72 70 6f 69 6e 74 25 2b 3d 31 36 0d |4):drpoint%+=16.| 00007ce0 25 b2 27 70 61 74 68 25 3d a3 3a 64 72 61 77 66 |%.'path%=.:drawf| 00007cf0 6c 25 3d a4 69 63 6f 6e 65 6f 72 28 70 72 6f 67 |l%=.iconeor(prog| 00007d00 72 61 6d 2c 37 29 0d 25 b3 20 c8 99 20 22 57 69 |ram,7).%. .. "Wi| 00007d10 6d 70 5f 52 65 61 64 50 61 6c 65 74 74 65 22 2c |mp_ReadPalette",| 00007d20 2c 63 6f 6c 73 25 0d 25 bc 05 e1 0d 25 c6 05 3a |,cols%.%....%..:| 00007d30 0d 25 d0 18 dd a4 78 64 72 61 77 28 78 29 3a 3d |.%....xdraw(x):=| 00007d40 a8 28 78 2a 32 35 36 29 0d 25 da 18 dd a4 79 64 |.(x*256).%....yd| 00007d50 72 61 77 28 79 29 3a 3d a8 28 79 2a 32 35 36 29 |raw(y):=.(y*256)| 00007d60 0d 25 e4 1a dd a4 63 64 72 61 77 28 63 25 29 3a |.%....cdraw(c%):| 00007d70 63 25 3d 63 25 20 83 20 31 36 0d 25 ee 2e e7 20 |c%=c% . 16.%... | 00007d80 63 25 3e 3d 30 20 8c 20 3d 21 28 63 6f 6c 73 25 |c%>=0 . =!(cols%| 00007d90 2b 63 25 2a 34 29 20 80 20 26 46 46 46 46 46 46 |+c%*4) . &FFFFFF| 00007da0 30 30 20 8b 20 3d 2d 31 0d 25 f8 05 3a 0d 26 02 |00 . =-1.%..:.&.| 00007db0 20 dd f2 6f 70 65 6e 70 61 74 68 28 78 31 2c 79 | ..openpath(x1,y| 00007dc0 31 2c 78 32 2c 79 32 2c 63 6f 6c 25 29 0d 26 0c |1,x2,y2,col%).&.| 00007dd0 18 e7 20 70 61 74 68 25 3d b9 20 f2 63 6c 6f 73 |.. path%=. .clos| 00007de0 65 70 61 74 68 0d 26 16 3f 78 31 25 3d a4 78 64 |epath.&.?x1%=.xd| 00007df0 72 61 77 28 78 31 29 3a 79 31 25 3d a4 79 64 72 |raw(x1):y1%=.ydr| 00007e00 61 77 28 79 31 29 3a 78 32 25 3d a4 78 64 72 61 |aw(y1):x2%=.xdra| 00007e10 77 28 78 32 29 3a 79 32 25 3d a4 79 64 72 61 77 |w(x2):y2%=.ydraw| 00007e20 28 79 32 29 0d 26 20 1d 6f 62 6a 61 64 64 72 25 |(y2).& .objaddr%| 00007e30 3d 64 72 70 6f 69 6e 74 25 3a 70 61 74 68 25 3d |=drpoint%:path%=| 00007e40 b9 0d 26 2a 3c 62 78 25 3d 78 31 25 3a 62 79 25 |..&*<bx%=x1%:by%| 00007e50 3d 79 31 25 3a 62 78 31 25 3d 78 32 25 3a 62 79 |=y1%:bx1%=x2%:by| 00007e60 31 25 3d 79 32 25 3a e7 20 62 78 25 3e 62 78 31 |1%=y2%:. bx%>bx1| 00007e70 25 20 c8 94 20 62 78 25 2c 62 78 31 25 0d 26 34 |% .. bx%,bx1%.&4| 00007e80 1a e7 20 62 79 25 3e 62 79 31 25 20 c8 94 20 62 |.. by%>by1% .. b| 00007e90 79 25 2c 62 79 31 25 0d 26 3e 38 64 72 70 6f 69 |y%,by1%.&>8drpoi| 00007ea0 6e 74 25 3d a4 6f 62 6a 65 63 74 68 65 61 64 28 |nt%=.objecthead(| 00007eb0 64 72 70 6f 69 6e 74 25 2c 32 2c 30 2c 62 78 25 |drpoint%,2,0,bx%| 00007ec0 2c 62 79 25 2c 62 78 31 25 2c 62 79 31 25 29 0d |,by%,bx1%,by1%).| 00007ed0 26 48 38 21 64 72 70 6f 69 6e 74 25 3d 2d 31 3a |&H8!drpoint%=-1:| 00007ee0 64 72 70 6f 69 6e 74 25 2b 3d 34 3a f4 20 20 20 |drpoint%+=4:. | 00007ef0 20 20 20 20 20 20 20 20 20 20 20 20 46 69 6c 6c | Fill| 00007f00 20 63 6f 6c 6f 75 72 0d 26 52 37 21 64 72 70 6f | colour.&R7!drpo| 00007f10 69 6e 74 25 3d a4 63 64 72 61 77 28 63 6f 6c 25 |int%=.cdraw(col%| 00007f20 29 3a 64 72 70 6f 69 6e 74 25 2b 3d 34 3a f4 20 |):drpoint%+=4:. | 00007f30 20 20 20 4c 69 6e 65 20 63 6f 6c 6f 75 72 0d 26 | Line colour.&| 00007f40 5c 40 21 64 72 70 6f 69 6e 74 25 3d 30 3a 64 72 |\@!drpoint%=0:dr| 00007f50 70 6f 69 6e 74 25 2b 3d 34 3a f4 20 20 20 20 20 |point%+=4:. | 00007f60 20 20 20 20 20 20 20 20 20 20 20 4c 69 6e 65 20 | Line | 00007f70 77 69 64 74 68 20 28 74 68 69 6e 3d 30 29 0d 26 |width (thin=0).&| 00007f80 66 43 21 64 72 70 6f 69 6e 74 25 3d 26 34 32 3a |fC!drpoint%=&42:| 00007f90 64 72 70 6f 69 6e 74 25 2b 3d 34 3a f4 20 20 20 |drpoint%+=4:. | 00007fa0 20 20 20 20 20 20 20 20 20 20 20 44 72 61 77 20 | Draw | 00007fb0 70 61 74 68 20 6f 62 6a 65 63 74 20 66 6c 61 67 |path object flag| 00007fc0 73 0d 26 70 25 64 72 70 6f 69 6e 74 25 3d a4 74 |s.&p%drpoint%=.t| 00007fd0 61 67 28 64 72 70 6f 69 6e 74 25 2c 32 2c 78 31 |ag(drpoint%,2,x1| 00007fe0 25 2c 79 31 25 29 0d 26 7a 25 64 72 70 6f 69 6e |%,y1%).&z%drpoin| 00007ff0 74 25 3d a4 74 61 67 28 64 72 70 6f 69 6e 74 25 |t%=.tag(drpoint%| 00008000 2c 38 2c 78 32 25 2c 79 32 25 29 0d 26 84 05 e1 |,8,x2%,y2%).&...| 00008010 0d 26 8e 05 3a 0d 26 98 1b dd a4 74 61 67 28 61 |.&..:.&....tag(a| 00008020 64 64 72 25 2c 74 61 67 25 2c 78 25 2c 79 25 29 |ddr%,tag%,x%,y%)| 00008030 0d 26 a2 3b 21 61 64 64 72 25 3d 74 61 67 25 3a |.&.;!addr%=tag%:| 00008040 61 64 64 72 25 2b 3d 34 3a f4 20 20 20 20 20 20 |addr%+=4:. | 00008050 20 20 20 20 20 20 20 20 20 20 20 20 20 54 61 67 | Tag| 00008060 20 69 64 65 6e 74 69 66 69 65 72 0d 26 ac 13 e7 | identifier.&...| 00008070 20 74 61 67 25 3d 30 20 3d 61 64 64 72 25 0d 26 | tag%=0 =addr%.&| 00008080 b6 39 21 61 64 64 72 25 3d 78 25 3a 61 64 64 72 |.9!addr%=x%:addr| 00008090 25 2b 3d 34 3a f4 20 20 20 20 20 20 20 20 20 20 |%+=4:. | 000080a0 20 20 20 20 20 20 20 20 20 20 20 58 20 64 72 61 | X dra| 000080b0 77 20 63 6f 6f 72 64 0d 26 c0 39 21 61 64 64 72 |w coord.&.9!addr| 000080c0 25 3d 79 25 3a 61 64 64 72 25 2b 3d 34 3a f4 20 |%=y%:addr%+=4:. | 000080d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000080e0 20 20 20 20 59 20 64 72 61 77 20 63 6f 6f 72 64 | Y draw coord| 000080f0 0d 26 ca 0a 3d 61 64 64 72 25 0d 26 d4 05 3a 0d |.&..=addr%.&..:.| 00008100 26 de 33 dd a4 6f 62 6a 65 63 74 68 65 61 64 28 |&.3..objecthead(| 00008110 61 64 64 72 25 2c 74 79 70 65 25 2c 73 69 7a 65 |addr%,type%,size| 00008120 25 2c 78 31 25 2c 79 31 25 2c 78 32 25 2c 79 32 |%,x1%,y1%,x2%,y2| 00008130 25 29 0d 26 e8 38 21 61 64 64 72 25 3d 74 79 70 |%).&.8!addr%=typ| 00008140 65 25 3a 61 64 64 72 25 2b 3d 34 3a f4 20 20 20 |e%:addr%+=4:. | 00008150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4f | O| 00008160 62 6a 65 63 74 20 74 79 70 65 0d 26 f2 40 21 61 |bject type.&.@!a| 00008170 64 64 72 25 3d 73 69 7a 65 25 3a 61 64 64 72 25 |ddr%=size%:addr%| 00008180 2b 3d 34 3a f4 20 20 20 20 20 20 20 20 20 20 20 |+=4:. | 00008190 20 20 20 20 20 20 20 4f 62 6a 65 63 74 20 73 69 | Object si| 000081a0 7a 65 20 28 62 79 74 65 73 29 0d 26 fc 45 21 61 |ze (bytes).&.E!a| 000081b0 64 64 72 25 3d 78 31 25 3a 61 64 64 72 25 2b 3d |ddr%=x1%:addr%+=| 000081c0 34 3a f4 20 20 20 20 20 20 20 20 20 20 20 20 20 |4:. | 000081d0 20 20 20 20 20 20 20 58 20 6c 6f 77 20 62 6f 75 | X low bou| 000081e0 6e 64 69 6e 67 20 62 6f 78 20 63 6f 6f 72 64 0d |nding box coord.| 000081f0 27 06 45 21 61 64 64 72 25 3d 79 31 25 3a 61 64 |'.E!addr%=y1%:ad| 00008200 64 72 25 2b 3d 34 3a f4 20 20 20 20 20 20 20 20 |dr%+=4:. | 00008210 20 20 20 20 20 20 20 20 20 20 20 20 59 20 6c 6f | Y lo| 00008220 77 20 62 6f 75 6e 64 69 6e 67 20 62 6f 78 20 63 |w bounding box c| 00008230 6f 6f 72 64 0d 27 10 46 21 61 64 64 72 25 3d 78 |oord.'.F!addr%=x| 00008240 32 25 3a 61 64 64 72 25 2b 3d 34 3a f4 20 20 20 |2%:addr%+=4:. | 00008250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00008260 20 58 20 68 69 67 68 20 62 6f 75 6e 64 69 6e 67 | X high bounding| 00008270 20 62 6f 78 20 63 6f 6f 72 64 0d 27 1a 46 21 61 | box coord.'.F!a| 00008280 64 64 72 25 3d 79 32 25 3a 61 64 64 72 25 2b 3d |ddr%=y2%:addr%+=| 00008290 34 3a f4 20 20 20 20 20 20 20 20 20 20 20 20 20 |4:. | 000082a0 20 20 20 20 20 20 20 59 20 68 69 67 68 20 62 6f | Y high bo| 000082b0 75 6e 64 69 6e 67 20 62 6f 78 20 63 6f 6f 72 64 |unding box coord| 000082c0 0d 27 24 0a 3d 61 64 64 72 25 0d 27 2e 05 3a 0d |.'$.=addr%.'..:.| 000082d0 27 38 12 dd f2 73 61 76 65 64 72 61 77 66 69 6c |'8...savedrawfil| 000082e0 65 0d 27 42 11 e7 20 64 72 61 77 66 6c 25 3d a3 |e.'B.. drawfl%=.| 000082f0 20 e1 0d 27 4c 0e f2 63 6c 6f 73 65 70 61 74 68 | ..'L..closepath| 00008300 0d 27 56 26 66 69 6c 65 6e 61 6d 65 24 3d a4 72 |.'V&filename$=.r| 00008310 65 61 64 69 63 6f 6e 74 65 78 74 28 70 72 6f 67 |eadicontext(prog| 00008320 72 61 6d 2c 32 29 0d 27 60 36 c8 99 20 22 4f 53 |ram,2).'`6.. "OS| 00008330 5f 46 69 6c 65 22 2c 31 30 2c 66 69 6c 65 6e 61 |_File",10,filena| 00008340 6d 65 24 2c 26 41 46 46 2c 2c 64 72 61 77 66 69 |me$,&AFF,,drawfi| 00008350 6c 65 25 2c 64 72 70 6f 69 6e 74 25 0d 27 6a 05 |le%,drpoint%.'j.| 00008360 e1 0d 27 74 05 3a 0d 27 7e 16 dd f2 61 64 64 74 |..'t.:.'~...addt| 00008370 6f 70 61 74 68 28 78 31 2c 79 31 29 0d 27 88 33 |opath(x1,y1).'.3| 00008380 64 72 70 6f 69 6e 74 25 3d a4 74 61 67 28 64 72 |drpoint%=.tag(dr| 00008390 70 6f 69 6e 74 25 2c 38 2c a4 78 64 72 61 77 28 |point%,8,.xdraw(| 000083a0 78 31 29 2c a4 79 64 72 61 77 28 79 31 29 29 0d |x1),.ydraw(y1)).| 000083b0 27 92 21 62 78 25 3d a4 78 64 72 61 77 28 78 31 |'.!bx%=.xdraw(x1| 000083c0 29 3a 62 79 25 3d a4 79 64 72 61 77 28 79 31 29 |):by%=.ydraw(y1)| 000083d0 0d 27 9c 23 e7 20 62 78 25 3c 6f 62 6a 61 64 64 |.'.#. bx%<objadd| 000083e0 72 25 21 38 20 6f 62 6a 61 64 64 72 25 21 38 3d |r%!8 objaddr%!8=| 000083f0 62 78 25 0d 27 a6 25 e7 20 62 78 25 3e 6f 62 6a |bx%.'.%. bx%>obj| 00008400 61 64 64 72 25 21 31 36 20 6f 62 6a 61 64 64 72 |addr%!16 objaddr| 00008410 25 21 31 36 3d 62 78 25 0d 27 b0 25 e7 20 62 79 |%!16=bx%.'.%. by| 00008420 25 3c 6f 62 6a 61 64 64 72 25 21 31 32 20 6f 62 |%<objaddr%!12 ob| 00008430 6a 61 64 64 72 25 21 31 32 3d 62 79 25 0d 27 ba |jaddr%!12=by%.'.| 00008440 25 e7 20 62 79 25 3e 6f 62 6a 61 64 64 72 25 21 |%. by%>objaddr%!| 00008450 32 30 20 6f 62 6a 61 64 64 72 25 21 32 30 3d 62 |20 objaddr%!20=b| 00008460 79 25 0d 27 c4 05 e1 0d 27 ce 05 3a 0d 27 d8 0f |y%.'....'..:.'..| 00008470 dd f2 63 6c 6f 73 65 70 61 74 68 0d 27 e2 11 e7 |..closepath.'...| 00008480 20 64 72 61 77 66 6c 25 3d a3 20 e1 0d 27 ec 0f | drawfl%=. ..'..| 00008490 e7 20 70 61 74 68 25 3d a3 20 e1 0d 27 f6 29 70 |. path%=. ..'.)p| 000084a0 61 74 68 25 3d a3 3a 64 72 70 6f 69 6e 74 25 3d |ath%=.:drpoint%=| 000084b0 a4 74 61 67 28 64 72 70 6f 69 6e 74 25 2c 30 2c |.tag(drpoint%,0,| 000084c0 30 2c 30 29 0d 28 00 22 6f 62 6a 61 64 64 72 25 |0,0).(."objaddr%| 000084d0 21 34 3d 64 72 70 6f 69 6e 74 25 2d 6f 62 6a 61 |!4=drpoint%-obja| 000084e0 64 64 72 25 3a e1 0d 28 0a 05 3a 0d 28 14 20 dd |ddr%:..(..:.(. .| 000084f0 f2 64 72 61 77 6c 69 6e 65 28 78 31 2c 79 31 2c |.drawline(x1,y1,| 00008500 78 32 2c 79 32 2c 63 6f 6c 25 29 0d 28 1e 11 e7 |x2,y2,col%).(...| 00008510 20 64 72 61 77 66 6c 25 3d a3 20 e1 0d 28 28 0f | drawfl%=. ..((.| 00008520 e7 20 70 61 74 68 25 3d a3 20 8c 0d 28 32 1f f2 |. path%=. ..(2..| 00008530 6f 70 65 6e 70 61 74 68 28 78 31 2c 79 31 2c 78 |openpath(x1,y1,x| 00008540 32 2c 79 32 2c 63 6f 6c 25 29 0d 28 3c 05 cc 0d |2,y2,col%).(<...| 00008550 28 46 15 f2 61 64 64 74 6f 70 61 74 68 28 78 32 |(F..addtopath(x2| 00008560 2c 79 32 29 0d 28 50 07 cd 3a e1 0d 28 5a 05 3a |,y2).(P..:..(Z.:| 00008570 0d 28 64 0e dd f2 64 72 61 77 69 63 6f 6e 0d 28 |.(d...drawicon.(| 00008580 6e 1b e7 20 a4 69 63 6f 6e 65 6f 72 28 70 72 6f |n.. .iconeor(pro| 00008590 67 72 61 6d 2c 37 29 20 8c 0d 28 78 16 f2 75 6e |gram,7) ..(x..un| 000085a0 69 63 6f 6e 28 70 72 6f 67 72 61 6d 2c 37 29 0d |icon(program,7).| 000085b0 28 82 35 f2 75 6e 73 65 6c 65 63 74 61 62 6c 65 |(.5.unselectable| 000085c0 28 70 72 6f 67 72 61 6d 2c 33 29 3a f2 75 6e 73 |(program,3):.uns| 000085d0 65 6c 65 63 74 61 62 6c 65 28 70 72 6f 67 72 61 |electable(progra| 000085e0 6d 2c 32 29 0d 28 8c 05 cc 0d 28 96 17 f2 65 6f |m,2).(....(...eo| 000085f0 72 69 63 6f 6e 28 70 72 6f 67 72 61 6d 2c 37 29 |ricon(program,7)| 00008600 0d 28 a0 31 f2 73 65 6c 65 63 74 61 62 6c 65 28 |.(.1.selectable(| 00008610 70 72 6f 67 72 61 6d 2c 33 29 3a f2 73 65 6c 65 |program,3):.sele| 00008620 63 74 61 62 6c 65 28 70 72 6f 67 72 61 6d 2c 32 |ctable(program,2| 00008630 29 0d 28 aa 07 cd 3a e1 0d 28 b4 05 e1 0d ff |).(...:..(.....| 0000863f