Home » Archimedes archive » Archimedes World » AW-1991-12.adf » December91 » !AWDec91/Goodies/Update/!RunImage
!AWDec91/Goodies/Update/!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-1991-12.adf » December91 |
Filename: | !AWDec91/Goodies/Update/!RunImage |
Read OK: | ✔ |
File size: | 1AB87 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM ><Archrome$Dir>.!RunImage 15REM Copyright Archimedes World 1991 20ON ERROR VDU4,7:REPORT:PRINT;" at line ";ERL:END 30SYS "OS_GetEnv" TO A$:IF RIGHT$(A$,1)<>" " THEN LF$=MID$(A$,INSTR(A$,""" ")+2) ELSE LF$="" 40PROCsetup 50ON ERROR PROCmakerr 60PROCaction 70PROCdie 80END 90DEFPROCsetup 100DIM POI% 256,TAS% 2000,BLK% 1000,MENU% 8*1024,MENUIND% 8*1024,SEL% 256,ICBLK% 256,VARS 128,MENAD%(300),MENALO% 16,CODE% 6*1024,IO% 256,TRANSTAB% 256 110MEOF%=0:MEIN%=0:MBUS%=FALSE 120$MENALO%="A -~" 130DIM PIC% 145*1024,SCALE% 32,PIXTAB% 256,PIXTAB2% 256,X%(8),Y%(8) 140SPBUF%=HIMEM:SPSIZ%=0:SYS "Wimp_SlotSize",-1,-1 TO CUSL% 150DIM PAL% 22600,OPAL% 22600,PALTAB% 512,BTC% 256,CTT% 256,TTB% 256,ROTTAB% 1800,RAND% 4096,PFILLS% 7000:!PAL%=22600:!OPAL%=22600:!PFILLS%=7000 160DIM BRUSH% 13000:!BRUSH%=13000 170SYS&2E,266,BRUSH%,"<Archrome$Dir>.Brushes" 180SYS&2E,266,PAL%,"<Archrome$Dir>.Palette" 190SYS&2E,266,OPAL%,"<Archrome$Dir>.Palette" 200SYS&2E,266,PFILLS%,"<Archrome$Dir>.PatFills" 210OSCLI("LOAD <Archrome$Dir>.PalTab "+STR$~PALTAB%) 220OSCLI("LOAD <Archrome$Dir>.BTC "+STR$~BTC%):REM byte -> pal 230OSCLI("LOAD <Archrome$Dir>.CTT "+STR$~CTT%):REM pal -> byte 240OSCLI("LOAD <Archrome$Dir>.TTB "+STR$~TTB%):REM (col*64)+tint -> pal 250OSCLI("LOAD <Archrome$Dir>.RotTab "+STR$~ROTTAB%) 260OSCLI("LOAD <Archrome$Dir>.Code "+STR$~CODE%) 270OSCLI("LOAD <Archrome$Dir>.RotTab "+STR$~ROTTAB%) 280COL%=255:FUSE%=-1:FUST%=-1:FUCO%=0:BUTDO%=FALSE 290$TAS%="TASK":SYS"Wimp_Initialise",200,!TAS%,"Archrome" TO HAND% 300PROCloadsprites 310PROCloadvars 320!BLK%=-1:BLK%!4=0:BLK%!8=0:BLK%!12=64:BLK%!16=64:BLK%!20=&2102 330DIM BLK%!24 10:$(BLK%!24)="!Archrome":BLK%!28=SPRITES%:BLK%!32=10 340SYS "Wimp_CreateIcon",,BLK% TO ICHAND% 350NOWIND%=24:NOMENS%=17 360DIM STORE% 15*1024,BUF% 4048,HAND%(NOWIND%) 370SOF%=STORE% 380DATA Save,Info,Main,Palette,Airbrush,Brushes,Grid,SpriteSave,Area,Help,Linepat,Fillpat,EdBrush,EdFill,Text,Tback,FontParams,FillCont,ColRep,Frame,Pfills,RGBcont,Greyscale,Pixelate,Rotate 390RESTORE 380 400SYS "Wimp_OpenTemplate",,"<Archrome$Dir>.Templates" 410FORK%=0 TO NOWIND% 420READ A$:$IO%=A$ 430SYS "Wimp_LoadTemplate",,BUF%,SOF%,STORE%+(15*1024),-1,IO%,0 TO ,,SOF% 440IF K%=2 THEN BUF%?35=&FF 450SYS "Wimp_CreateWindow",,BUF% TO HAND%(K%):NEXT 460SYS "Wimp_CloseTemplate" 470FORL%=15 TO 46:PROCshadeicon(10,L%):NEXT 480PROCseticon(13,44,"16") 490VDU23,6,0| 500PROCsystemvars 510PROCchars 520PROCloadfonts 530PROCbuildmainmenu:PROCbuildiconmenu 540ENDPROC 550 560DEFPROCsystemvars 570!PIC%=145*1024 580PIC%!4=0 590PIC%!8=24 600PIC%!12=24 610REM IF L%=0 THEN SYS&2E,266,PIC%,"<Archrome$Dir>.Test" 620SYS &2E,271,PIC%,"PIC",0,618,234,15 630PIC$="<Untitled>" 640REM IF LF$<>"" THEN OSCLI("LOAD "+LF$+" "+STR$~(PIC%+4)):PIC$=FNleaf(LF$):PROCseticon(0,1,LF$) ELSE PIC$="<Untitled>" 650ESM%=-1:EPM%=-1 660GRCO%=-1:GRTI%=-1:GRLO%=FALSE:GRWI%=1:GRHE%=1:GRBX%=0:GRBY%=0 670GRXM%=1:GRXD%=1:GRYM%=1:GRYD%=1:GRFX%=FALSE:GRFY%=FALSE 680ZOOM%=1 690USE%=0:LITY%=5:GRMA%=FALSE 700DIM PAT%(5):PAT%()=0:PALE%=8 710DIM ECF%(8,4):ECF%()=0:ROT%=0 720DIM GRFI%(15,1,4):GRFI%()=0 730FIFC%=63:FIFT%=192:FILC%=3:FILT%=192:FILR%=0 740IP%=FALSE 750SELBR%=1:BXM%=1:BXD%=1:BYM%=1:BYD%=1 760EDBR%=1:IDRAG%=FALSE:CPF%=1 770PROCopenmain 780PROCwindname(2,PIC$) 790DIM TRASP% 256, REPS% 256 800FORL%=0 TO 255:REPS%?L%=L%:NEXT 810FORL%=0 TO 252 STEP 4:TRASP%!L%=0:NEXT 820DIM FONT$(255),FONTT$(64) 830FONTB%=0:SREP%=255 840MMX%=1:MMY%=1:MOP%=FALSE:KUKE%=FALSE:KUKD%=0:KUKL%=-1 850ENDPROC 860 870DEFPROCloadvars 880F%=OPENIN("<Archrome$Dir>.Vars") 890INPUT#F%,backuppic,fillmask,getpicbyte,getbrushbyte,setpicbyte,pixaverage,tintarea,averagebrush,tintbrush,findchangebox,graduatedfill,colrep,patfill,rgbcont,greyscale,rotate,transarea 900CLOSE#F% 910backuppic+=CODE%:fillmask+=CODE%:getpicbyte+=CODE%:getbrushbyte+=CODE%:setpicbyte+=CODE%:pixaverage+=CODE%:tintarea+=CODE%:averagebrush+=CODE%:tintbrush+=CODE%:findchangebox+=CODE%:graduatedfill+=CODE%:colrep+=CODE% 920patfill+=CODE%:rgbcont+=CODE%:greyscale+=CODE%:rotate+=CODE%:transarea+=CODE% 930ENDPROC 940 950DEFPROCloadfonts 960N%=-1 970FONT$(0)="System Font" 980SYS "XOS_ReadVarVal","Font$Path",IO%,256,,3 TO ,,N% ;err% 990IF (err% AND 1) THEN FONTS%=0:ENDPROC 1000FP%=0:FONTS%=0 1010REPEAT 1020SYS "Font_ListFonts",,IO%,FP%,-1 TO ,,FP% 1030FONT$(FONTS%+1)=$IO%:FONTS%+=1 1040UNTIL FP%=-1 1050FONTS%-=1 1060SYS "Font_ReadFontMax" TO B%,C%,D%,E%,F%,G% 1070PROCseticon(16,12,STR$(B% DIV 1024)):PROCseticon(16,13,STR$(C% DIV 1152)):PROCseticon(16,14,STR$(D% DIV 1152)):PROCseticon(16,15,STR$(E% DIV 1152)):PROCseticon(16,16,STR$(F% DIV 1152)):PROCseticon(16,17,STR$(G% DIV 1152)) 1080ENDPROC 1090 1100DEFPROCloadsprites 1110DIM SPRITES% 2000 1120!SPRITES%=2000:SPRITES%!4=0:SPRITES%!8=16:SPRITES%!12=16:SYS &2E,266,SPRITES%,"<Archrome$Dir>.!Sprites" 1130ENDPROC 1140 1150DEFPROCaction 1160REPEAT 1170PROCpoll 1180UNTIL (REAS%=17 OR REAS%=18) AND BLK%!16=0 1190ENDPROC 1200 1210DEFPROCdie:OP%=0:PROCspbuf(0) 1220SYS "Wimp_CloseDown",HAND%,!TAS% 1230END 1240ENDPROC 1250 1260DEFPROCpoll 1270SYS "Wimp_GetPointerInfo",,BLK% 1280IF BLK%!12<>HAND%(2) THEN MBUS%=TRUE 1290!BLK%=%10011111110100110000 1300SYS "Wimp_Poll",0,BLK% TO REAS% 1310IF REAS%>-1 THEN PROCact 1320ENDPROC 1330DEFPROCact 1340CASE REAS% OF 1350WHEN 0:PROCkuke:PROCpicpoll 1360WHEN 1:PROCredraw 1370WHEN 2:PROCopmain 1380WHEN 3:PROCclmain 1390WHEN 6:PROCmouse 1400WHEN 9:PROCmenu 1410WHEN 7:PROCdragfin 1420WHEN 17,18:PROCinmessage(BLK%!16) 1430ENDCASE 1440ENDPROC 1450 1460DEFPROCkuke:IF NOT KUKE% THEN ENDPROC 1470KULI%=10 1480MOUSE MX%,MY%,MH%:KP%=FALSE 1490IF NOT INKEY(-58) THEN 1530 1500IF KUKL%<>-58 THEN KUKL%=-58:KUKD%=0:MY%+=4:KP%=TRUE:GOTO 1530 1510KUKD%+=1:IF KUKD%<KULI% THEN KP%=TRUE:GOTO 1530 1520KUKD%=KULI%:MY%+=4:KP%=TRUE 1530IF NOT INKEY(-42) THEN 1570 1540IF KUKL%<>-58 THEN KUKL%=-58:KUKD%=0:MY%-=4:KP%=TRUE:GOTO 1570 1550KUKD%+=1:IF KUKD%<KULI% THEN KP%=TRUE:GOTO 1570 1560KUKD%=KULI%:MY%-=4:KP%=TRUE 1570IF NOT INKEY(-26) THEN 1610 1580IF KUKL%<>-58 THEN KUKL%=-58:KUKD%=0:MX%-=2:KP%=TRUE:GOTO 1610 1590KUKD%+=1:IF KUKD%<KULI% THEN KP%=TRUE:GOTO 1610 1600KUKD%=KULI%:MX%-=2:KP%=TRUE 1610IF NOT INKEY(-122) THEN 1650 1620IF KUKL%<>-58 THEN KUKL%=-58:KUKD%=0:MX%+=2:KP%=TRUE:GOTO 1650 1630KUKD%+=1:IF KUKD%<KULI% THEN KP%=TRUE:GOTO 1650 1640KUKD%=KULI%:MX%+=2:KP%=TRUE 1650IF NOT KP% THEN KUKL%=-1:KUKD%=0 1660MOUSE TO MX%,MY% 1670ENDPROC 1680 1690DEFPROCredraw 1700CASE !BLK% OF 1710WHEN HAND%(2):PROCredrawmain 1720WHEN HAND%(3):PROCredrawpal 1730WHEN HAND%(5):PROCredrawbrush 1740WHEN HAND%(11):PROCredrawpat 1750WHEN HAND%(12):PROCredrawedbru 1760WHEN HAND%(13):PROCredrawfill 1770WHEN HAND%(15):PROCredrawtback 1780WHEN HAND%(18):PROCredrawcolrep 1790WHEN HAND%(20):PROCredrawpatfill 1800ENDCASE 1810ENDPROC 1820 1830DEFPROCredrawbrush 1840SYS "Wimp_RedrawWindow",,BLK% TO FIN% 1850PROCgetbrushor 1860WHILE FIN%:PROCplotbrushes:SYS "Wimp_GetRectangle",,BLK% TO FIN% 1870ENDWHILE 1880ENDPROC 1890 1900DEFPROCredrawedbru 1910SYS "Wimp_RedrawWindow",,BLK% TO FIN% 1920PROCgetedbruor 1930WHILE FIN%:PROCplotedbru:SYS "Wimp_GetRectangle",,BLK% TO FIN% 1940ENDWHILE 1950ENDPROC 1960 1970DEFPROCredrawpatfill 1980SYS "Wimp_RedrawWindow",,BLK% TO FIN% 1990PROCgetpatfillor 2000WHILE FIN%:PROCplotpatfill:SYS "Wimp_GetRectangle",,BLK% TO FIN% 2010ENDWHILE 2020ENDPROC 2030 2040DEFPROCforcedrawpatfill:SYS "Wimp_ForceRedraw",HAND%(20),0,-108,1100,0:ENDPROC 2050 2060DEFPROCforcedrawedbru(x1%,y1%,x2%,y2%) 2070!BLK%=HAND%(12) 2080BLK%!4=x1% 2090BLK%!8=y1% 2100BLK%!12=x2% 2110BLK%!16=y2% 2120SYS "Wimp_UpdateWindow",,BLK% TO FIN% 2130PROCgetedbruor 2140WHILE FIN% 2150PROCplotedbru 2160SYS "Wimp_GetRectangle",,BLK% TO FIN% 2170ENDWHILE 2180ENDPROC 2190 2200DEFPROCforcedrawbrush 2210!BLK%=HAND%(5) 2220BLK%!4=0 2230BLK%!8=-260 2240BLK%!12=384 2250BLK%!16=0 2260SYS "Wimp_UpdateWindow",,BLK% TO FIN% 2270PROCgetbrushor 2280WHILE FIN% 2290PROCplotbrushes 2300SYS "Wimp_GetRectangle",,BLK% TO FIN% 2310ENDWHILE 2320ENDPROC 2330 2340DEFPROCplot256sprite(SPA%,SPI$,POX%,POY%) 2350IF MODE<>15 THEN GOTO 2370 2360!SCALE%=1:SCALE%!4=1:SCALE%!8=1:SCALE%!12=1:SYS "OS_SpriteOp",290,SPA%,SPI$,POX%,POY%:ENDPROC 2370IF MODE<>ESM% THEN ESM%=MODE:EPM%=MODE:SYS&40740,15,0,-1,-1,PIXTAB% 2380SYS&35,-1,4 TO ,,E% 2390IF E%<1 THEN SX%=2^(1-E%):!SCALE%=SX%:SCALE%!8=1 ELSE SX%=2^(E%-1):!SCALE%=1:SCALE%!8=SX% 2400SCALE%!4=1:SCALE%!12=1 2410SYS "OS_SpriteOp",308,SPA%,SPI$,POX%,POY%,0,SCALE%,PIXTAB% 2420ENDPROC 2430 2440DEFPROCplotpatfill 2450FORL%=1 TO 12:PROCplot256sprite(PFILLS%,STR$L%,WOX%+((L%-1)*84)+24,WOY%+12):IF CPF%=L% THEN PROCcol(0,0,0):RECTANGLE WOX%+((CPF%-1)*84)+16,WOY%+4,78,76:RECTANGLE WOX%+((CPF%-1)*84)+18,WOY%+4,74,76 2460NEXT 2470ENDPROC 2480 2490DEFPROCplotbrushes 2500FORL%=1 TO 12 2510BLK%!400=HAND%(5):BLK%!404=L%-1:SYS "Wimp_GetIconState",,BLK%+400 2520PROCplot256sprite(BRUSH%,STR$L%,WOX%+(BLK%!408)+2,WOY%+(260+(BLK%!412))+4) 2530IF SELBR%=L% THEN PROCcol(48,192,3):RECTANGLE FILL WOX%+(BLK%!408)+2,WOY%+(260+(BLK%!412))+4,64,60 2540NEXT 2550ENDPROC 2560 2570DEFPROCplotedbru 2580FORL%=1 TO 12 2590BLK%!400=HAND%(12):BLK%!404=L%-1:SYS "Wimp_GetIconState",,BLK%+400 2600PROCplot256sprite(BRUSH%,STR$L%,WOX%+((L%-1)*64)+32,WOY%+20) 2610IF EDBR%=L% THEN PROCcol(48,192,3):RECTANGLE FILL WOX%+((L%-1)*64)+32,WOY%+20,64,60 2620NEXT 2630!SCALE%=(!SCALE%)*12:SCALE%!4=8 2640IF MODE<>15 THEN SYS "OS_SpriteOp",308,BRUSH%,STR$EDBR%,WOX%+28,WOY%+112,0,SCALE%,PIXTAB% ELSE SYS "OS_SpriteOp",308,BRUSH%,STR$EDBR%,WOX%+28,WOY%+112,0,SCALE% 2650EX%=WOX%+28:EY%=WOY%+112:PROCcol(21,192,0):FORL%=0 TO 32:LINE EX%+(L%*24),EY%,EX%+(L%*24),EY%+512:NEXT:FORL%=0 TO 16:LINE EX%,EY%+(L%*32),EX%+768,EY%+(L%*32):NEXT 2660ENDPROC 2670 2680DEFPROCforcedrawmain 2690!BLK%=HAND%(2) 2700BLK%!4=0 2710BLK%!8=-936*ZOOM% 2720BLK%!12=1236*ZOOM% 2730BLK%!16=0 2740SYS "Wimp_UpdateWindow",,BLK% TO FIN% 2750PROCgetor 2760WHILE FIN% 2770PROCplotpic 2780SYS "Wimp_GetRectangle",,BLK% TO FIN% 2790ENDWHILE 2800ENDPROC 2810 2820DEFPROCquickdrawmain:IF NOT VACB% THEN ENDPROC 2830!BLK%=HAND%(2) 2840BLK%!4=CBMINX% 2850BLK%!8=CBMINY% 2860BLK%!12=CBMAXX% 2870BLK%!16=CBMAXY% 2880SYS "Wimp_UpdateWindow",,BLK% TO FIN% 2890PROCgetor 2900WHILE FIN% 2910PROCplotpic 2920SYS "Wimp_GetRectangle",,BLK% TO FIN% 2930ENDWHILE 2940ENDPROC 2950 2960DEFPROCinpic:IF IP% THEN ENDPROC 2970IP%=TRUE 2980SYS "OS_SpriteOp",316,PIC%,"PIC" TO V1,V2,V3,V4 2990SYS "OS_ChangedBox",2 3000SYS "OS_ChangedBox",1 3010REM GCOL3,63:LINE 300,300,320,320:LINE 300,300,320,320 3020VDU23,6:FORL%=1 TO 5:VDU PAT%(L%):NEXT:VDU 0| 3030SYS6,163,242,PALE% 3040ENDPROC 3050 3060DEFPROCinbackup:SYS "OS_SpriteOp",316,SPBUF%,"PIC" TO B1,B2,B3,B4:ENDPROC 3070 3080DEFPROCinsprite(ma%,sa%,sn$):SYS &2E,316+ma%,sa%,sn$ TO IS1,IS2,IS3,IS4:ENDPROC 3090 3100DEFPROCoutsprite:SYS &2E,IS1,IS2,IS3,IS4:ENDPROC 3110 3120DEFPROCoutbackup:SYS "OS_SpriteOp",B1,B2,B3,B4:ENDPROC 3130 3140DEFPROCoutpic:IF NOT IP% THEN ENDPROC 3150IP%=FALSE 3160SYS "OS_ChangedBox",-1 TO ,CBA% 3170IF SGN(CBA%!4)=-1 OR SGN(CBA%!8)=-1 OR SGN(CBA%!12)=-1 OR SGN(CBA%!16)=-1 THEN VACB%=FALSE:SYS "OS_ChangedBox":SYS "OS_SpriteOp",V1,V2,V3,V4:ENDPROC ELSE VACB%=TRUE 3180CBMINX%=CBA%!4:CBMINX%=CBMINX%*ZOOM%*2 3190CBMINY%=CBA%!8:CBMINY%=(-936+(CBMINY%*4))*ZOOM% 3200CBMAXX%=CBA%!12:CBMAXX%=CBMAXX%*ZOOM%*2 3210CBMAXY%=CBA%!16:CBMAXY%=(-936+(CBMAXY%*4))*ZOOM% 3220CBMAXX%+=4*ZOOM% 3230CBMAXY%+=4*ZOOM% 3240SYS "OS_ChangedBox" 3250SYS "OS_SpriteOp",V1,V2,V3,V4 3260ENDPROC 3270 3280DEFPROCredrawmain 3290IF FUSE%=32 THEN 3300IF FONT%<>0 AND EFM%<>-1 THEN 3310IF MODE<>EFM% THEN PROCinpic:SYS "ColourTrans_SetFontColours",FHAND%,BPAL%,FPAL%,14:PROCoutpic:EFM%=MODE 3320ENDIF 3330ENDIF 3340SYS "Wimp_RedrawWindow",,BLK% TO FIN% 3350PROCgetor 3360WHILE FIN%:PROCplotpic:SYS "Wimp_GetRectangle",,BLK% TO FIN% 3370ENDWHILE 3380ENDPROC 3390 3400DEFPROCplotpic 3410IF MODE=15 AND ZOOM%=1 THEN SYS "OS_SpriteOp",290,PIC%,"PIC",WOX%,WOY%:PROCgrid:ENDPROC 3420IF MODE<>ESM% THEN ESM%=MODE:EPM%=MODE:SYS&40740,15,0,-1,-1,PIXTAB% 3430SYS&35,-1,4 TO ,,E% 3440IF E%<1 THEN SX%=2^(1-E%):!SCALE%=SX%:SCALE%!8=1 ELSE SX%=2^(E%-1):!SCALE%=1:SCALE%!8=SX% 3450!SCALE%=(!SCALE%)*ZOOM% 3460SCALE%!4=ZOOM% 3470SCALE%!12=1 3480IF MODE=15 THEN TPIXTAB%=0 ELSE TPIXTAB%=PIXTAB% 3490SYS "OS_SpriteOp",308,PIC%,"PIC",WOX%,WOY%,0,SCALE%,TPIXTAB%:PROCgrid:ENDPROC 3500 3510DEFPROCgrid:IF GRCO%=-1 OR (2*GRWI%*ZOOM%)<16 OR (4*GRHE%*ZOOM%)<16 THEN ENDPROC 3520PROCgridcol 3530LOCAL X%,Y% 3540X%=(((BLK%!28)-WOX%) DIV (ZOOM%*(2*GRWI%)))*(2*GRWI%*ZOOM%) 3550Y%=(((BLK%!32)-WOY%) DIV (ZOOM%*(4*GRHE%)))*(4*GRHE%*ZOOM%) 3560XOF%=(GRWI%-GRBX%)*2*ZOOM% 3570YOF%=(GRHE%-GRBY%)*4*ZOOM% 3580X%+=WOX%-XOF% 3590Y%+=WOY%-YOF% 3600REPEAT:LINE X%,(BLK%!32),X%,(BLK%!40):X%+=(2*GRWI%*ZOOM%):UNTIL X%>(BLK%!36) 3610REPEAT:LINE (BLK%!28),Y%,(BLK%!36),Y%:Y%+=(4*GRHE%*ZOOM%):UNTIL Y%>(BLK%!40) 3620ENDPROC 3630 3640DEFPROCplotpal(PTU%) 3650PROCcol(63,192,0) 3660REM VDU4:PRINT WOX%,WOY% 3670IF MODE<>15 THEN GOTO 3700 3680SYS "OS_SpriteOp",290,PTU%,"Palette",WOX%,WOY%:IF PTU%=PAL% THEN RECTANGLE WOX%+((COL% MOD 32)*24),WOY%+((COL% DIV 32)*28),24,28 3690ENDPROC 3700IF MODE<>EPM% THEN ESM%=MODE:EPM%=MODE:SYS&40740,15,0,-1,-1,PIXTAB% 3710SYS&35,-1,4 TO ,,E% 3720IF E%<1 THEN SX%=2^(1-E%):!SCALE%=SX%:SCALE%!8=1 ELSE SX%=2^(E%-1):!SCALE%=1:SCALE%!8=SX% 3730SCALE%!4=1 3740SCALE%!12=1 3750SYS "OS_SpriteOp",308,PTU%,"Palette",WOX%,WOY%,0,SCALE%,PIXTAB% 3760IF PTU%=PAL% THEN RECTANGLE WOX%+((COL% MOD 32)*24),WOY%+((COL% DIV 32)*28),24,28 3770ENDPROC 3780 3790DEFPROCtrasp(TC%) 3800TRASP%?TC%=(TRASP%?TC%) EOR 1 3810SYS "OS_SpriteOp",316,PAL%,"Palette" TO V1,V2,V3,V4 3820TX%=((TC% MOD 32)*24):TY%=((TC% DIV 32)*28) 3830IF (TRASP%?TC%)=0 THEN GCOL0,PALTAB%?(TC%*2) TINT PALTAB%?((TC%*2)+1) ELSE PROCanticol(PALTAB%?(TC%*2),PALTAB%?((TC%*2)+1),0) 3840LINE TX%+6,TY%+20,TX%+18,TY%+20:LINE TX%+12,TY%+8,TX%+12,TY%+20 3850SYS "OS_SpriteOp",V1,V2,V3,V4 3860ENDPROC 3870 3880DEFPROCredrawpal 3890SYS "Wimp_RedrawWindow",,BLK% TO FIN% 3900PROCgetpalor 3910WHILE FIN%:PROCplotpal(PAL%):SYS "Wimp_GetRectangle",,BLK% TO FIN% 3920ENDWHILE 3930ENDPROC 3940 3950DEFPROCredrawtback 3960SYS "Wimp_RedrawWindow",,BLK% TO FIN% 3970PROCgetpalor 3980WHILE FIN%:PROCplotpal(OPAL%) 3990PROCcol(63,192,0):RECTANGLE WOX%+((FONTB% MOD 32)*24),WOY%+((FONTB% DIV 32)*28),24,28 4000SYS "Wimp_GetRectangle",,BLK% TO FIN% 4010ENDWHILE 4020ENDPROC 4030 4040DEFPROCredrawcolrep 4050SYS "Wimp_RedrawWindow",,BLK% TO FIN% 4060PROCgetpalor:WOY%-=328 4070WHILE FIN%:WOY%+=290:PROCplotpal(OPAL%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224:WOY%-=290 4080PROCplotpal(SPBUF%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224 4090PROCcol(63,192,0):RECTANGLE WOX%+((SREP% MOD 32)*24),WOY%+((SREP% DIV 32)*28),24,28 4100SYS "Wimp_GetRectangle",,BLK% TO FIN% 4110ENDWHILE 4120ENDPROC 4130 4140DEFPROCforcedrawcolrep 4150!BLK%=HAND%(18) 4160BLK%!4=0 4170BLK%!8=-556 4180BLK%!12=770 4190BLK%!16=0 4200SYS "Wimp_UpdateWindow",,BLK% TO FIN% 4210PROCgetpalor:WOY%-=328 4220WHILE FIN% 4230WOY%+=290:PROCplotpal(OPAL%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224:WOY%-=290 4240PROCplotpal(SPBUF%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224 4250PROCcol(63,192,0):RECTANGLE WOX%+((SREP% MOD 32)*24),WOY%+((SREP% DIV 32)*28),24,28 4260SYS "Wimp_GetRectangle",,BLK% TO FIN% 4270ENDWHILE 4280ENDPROC 4290 4300DEFFNcecf 4310IF FNhigh(11,18) THEN =1 4320IF FNhigh(11,19) THEN =2 4330IF FNhigh(11,20) THEN =3 4340IF FNhigh(11,21) THEN =4 4350=0 4360 4370DEFPROCredrawpat 4380SYS "Wimp_RedrawWindow",,BLK% TO FIN% 4390PROCgetpator 4400WHILE FIN%:PROCplotpal(OPAL%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224 4410CECF%=FNcecf:FORK%=0 TO 7:L%=ECF%(K%+1,CECF%) 4420PE%=BTC%?L%:PROCcol(PALTAB%?(PE%*2),PALTAB%?((PE%*2)+1),0):RECTANGLE FILL WOX%-146,(WOY%+276)-(K%*40),38,36 4430NEXT 4440SYS "Wimp_GetRectangle",,BLK% TO FIN% 4450ENDWHILE 4460ENDPROC 4470 4480DEFFNgrafilno 4490IF FNhigh(13,17) THEN =0 4500IF FNhigh(13,18) THEN =1 4510IF FNhigh(13,19) THEN =2 4520IF FNhigh(13,20) THEN =3 4530IF FNhigh(13,21) THEN =4 4540=-1 4550 4560DEFPROCredrawfill 4570SYS "Wimp_RedrawWindow",,BLK% TO FIN% 4580PROCgetpator:WOY%-=140:WOX%-=140 4590WHILE FIN%:WOY%+=232:WOX%+=380:PROCplotpal(OPAL%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224:WOX%-=140:WOY%-=140 4600FIX%=WOX%+200:GRFIN%=FNgrafilno:FORL%=0 TO 15:IF GRFIN%<>-1 THEN PROCcol(GRFI%(L%,0,GRFIN%),GRFI%(L%,1,GRFIN%),0) ELSE PROCcol(0,0,0) 4610RECTANGLE FILL FIX%,WOY%-28,42,32:FIX%+=44:NEXT 4620SYS "Wimp_GetRectangle",,BLK% TO FIN% 4630ENDWHILE 4640ENDPROC 4650 4660DEFPROCforcedrawfill 4670!BLK%=HAND%(13) 4680BLK%!4=0 4690BLK%!8=-500 4700BLK%!12=1200 4710BLK%!16=-360 4720SYS "Wimp_UpdateWindow",,BLK% TO FIN% 4730PROCgetpator:WOY%-=48:WOX%+=100 4740FIX%=WOX%+200:GRFIN%=FNgrafilno:FORL%=0 TO 15:IF GRFIN%<>-1 THEN PROCcol(GRFI%(L%,0,GRFIN%),GRFI%(L%,1,GRFIN%),0) ELSE PROCcol(0,0,0) 4750RECTANGLE FILL FIX%,WOY%-28,42,32:FIX%+=44:NEXT 4760WHILE FIN% 4770SYS "Wimp_GetRectangle",,BLK% TO FIN% 4780ENDWHILE 4790ENDPROC 4800 4810DEFPROCforcedrawpat 4820!BLK%=HAND%(11) 4830BLK%!4=0 4840BLK%!8=-356 4850BLK%!12=100 4860BLK%!16=0 4870SYS "Wimp_UpdateWindow",,BLK% TO FIN% 4880PROCgetpator 4890WHILE FIN% 4900PROCplotpal(OPAL%):PROCcol(0,0,0):LINE WOX%,WOY%+224,WOX%+770,WOY%+224 4910CECF%=FNcecf 4920FOR RK%=0 TO 7 4930L%=ECF%(RK%+1,CECF%) 4940PE%=BTC%?L%:PROCcol(PALTAB%?(PE%*2),PALTAB%?((PE%*2)+1),0):RECTANGLE FILL WOX%-146,(WOY%+276)-(RK%*40),38,36 4950RECTANGLE FILL WOX%-146,(WOY%+276)-(RK%*40),38,36 4960NEXT 4970SYS "Wimp_GetRectangle",,BLK% TO FIN% 4980ENDWHILE 4990ENDPROC 5000 5010DEFFNctb(co%,ti%):by%=-1:FORL%=0 to 255 5020 5030DEFPROCdrawpicinit 5040!BLK%=HAND%(2) 5050BLK%!4=0 5060BLK%!8=-936 5070BLK%!12=1236 5080BLK%!16=0 5090SYS "Wimp_UpdateWindow",,BLK% TO FIN% 5100PROCgetor 5110ENDPROC 5120 5130DEFPROCforcedrawpal(PTU%) 5140!BLK%=HAND%(3) 5150BLK%!4=0 5160BLK%!8=-228 5170BLK%!12=770 5180BLK%!16=0 5190SYS "Wimp_UpdateWindow",,BLK% TO FIN% 5200PROCgetpalor 5210WHILE FIN% 5220PROCplotpal(PTU%) 5230SYS "Wimp_GetRectangle",,BLK% TO FIN% 5240ENDWHILE 5250ENDPROC 5260 5270DEFPROCforcedrawtback 5280!BLK%=HAND%(15) 5290BLK%!4=0 5300BLK%!8=-228 5310BLK%!12=770 5320BLK%!16=0 5330SYS "Wimp_UpdateWindow",,BLK% TO FIN% 5340PROCgetpalor 5350WHILE FIN% 5360PROCplotpal(OPAL%) 5370PROCcol(63,192,0):RECTANGLE WOX%+((FONTB% MOD 32)*24),WOY%+((FONTB% DIV 32)*28),24,28 5380SYS "Wimp_GetRectangle",,BLK% TO FIN% 5390ENDWHILE 5400ENDPROC 5410 5420DEFPROCgetpalor 5430WOX%=BLK%!4-BLK%!20 5440WOY%=(BLK%!16-BLK%!24)-228 5450ENDPROC 5460 5470DEFPROCgetpator 5480WOX%=(BLK%!4-BLK%!20)+180 5490WOY%=(BLK%!16-BLK%!24)-340 5500ENDPROC 5510 5520DEFPROCpicpoll 5530SYS "Wimp_GetPointerInfo",,BLK% 5540REM VDU4:PRINTTAB(0,0);MBUS%;",";BLK%!8;" ":VDU5 5550IF MBUS% AND BLK%!8<>0 THEN ENDPROC ELSE MBUS%=FALSE 5560IF BLK%!12<HAND%(0) OR BLK%!12>HAND%(NOWIND%) THEN IDRAG%=(BLK%!8<>0) 5570IF BLK%!8=0 THEN IDRAG%=FALSE 5580REM VDU4:PRINTTAB(0,0);BLK%!16;" " 5590IF BLK%!12<>HAND%(2) OR BLK%!16<>-1 THEN ENDPROC 5600IF BLK%!8<>0 AND IDRAG% THEN ENDPROC 5610X%=!BLK%:Y%=BLK%!4:BUT%=BLK%!8 5620IF BUT%=2 THEN ENDPROC 5630CASE FUSE% OF 5640WHEN 1:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:GOTO 8290 5650IF BUT%=0 OR FUST%=0 THEN FUST%=0:GOTO 8290 5660PROCpicpos:PROCinpic:PROCsetcol:PROCl(X%(0),Y%(0),X%,Y%):PROCoutpic 5670PROCquickdrawmain 5680X%(0)=X%:Y%(0)=Y% 5690WHEN 2:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:GCOL3,63 TINT 192:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:GOTO 8290 5700IF FUST%=0 THEN GOTO 8290 5710IF BUT%=1 THEN PROCinpic:GCOL3,63 TINT 192:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:X%(0)=X%:Y%(0)=Y%:OX%=X%:OY%=Y%:FUST%=1:GCOL3,63 TINT 192:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:GOTO 8290 5720IF BUT%=4 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:PROCsetcol:PROCl(X%(0),Y%(0),X%,Y%):X%(0)=X%:Y%(0)=Y%:OX%=X%:OY%=Y%:PROCeoc:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain:GOTO 8290 5730PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 5740PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain 5750WHEN 4:IF FUST%=0 THEN PROCpaintscale:PROCpicpos:PROCinpic:PROCeorback:PROCpaintbrush(X%,Y%):PROCoutpic:PROCquickdrawmain:OX%=X%:OY%=Y%:FUST%=1:GOTO 8290 5760PROCpicpos 5770IF X%<>OX% OR Y%<>OY% THEN PROCpaintscale:PROCinpic:PROCeorback:PROCpaintbrush(OX%,OY%):PROCpaintbrush(X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain 5780WHEN 5:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain:GOTO 8290 5790IF FUST%=0 THEN GOTO 8290 5800IF BUT%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 5810IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCpicpos:PROCsetcol:PROCr(X%(0),Y%(0),X%-X%(0),Y%-Y%(0)):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 8290 5820PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 5830PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):OX%=X%:OY%=Y%:RECTANGLE X%(0),Y%(0),X%-X%(0),Y%-Y%(0):PROCoutpic:PROCquickdrawmain 5840WHEN 6:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:RECTANGLE FILL X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain:GOTO 8290 5850IF FUST%=0 THEN GOTO 8290 5860IF BUT%=1 THEN PROCinpic:PROCeoc:RECTANGLE FILL X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 5870IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) THEN PROCinpic:PROCeoc:RECTANGLE FILL X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCpicpos:PROCsetcol:RECTANGLE FILL X%(0),Y%(0),X%-X%(0),Y%-Y%(0):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 8290 5880PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 5890PROCinpic:PROCeoc:RECTANGLE FILL X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):OX%=X%:OY%=Y%:RECTANGLE FILL X%(0),Y%(0),X%-X%(0),Y%-Y%(0):PROCoutpic:PROCquickdrawmain 5900WHEN 7:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:CIRCLE X%(0),Y%(0),FNdist(OX%,OY%):PROCoutpic:PROCquickdrawmain:GOTO 8290 5910IF FUST%=0 THEN GOTO 8290 5920IF BUT%=1 THEN PROCinpic:PROCeoc:CIRCLE X%(0),Y%(0),FNdist(OX%,OY%):PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 5930IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) THEN PROCinpic:PROCeoc:CIRCLE X%(0),Y%(0),FNdist(OX%,OY%):PROCpicpos:PROCsetcol:CIRCLE X%(0),Y%(0),FNdist(X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 8290 5940PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 5950PROCinpic:PROCeoc:CIRCLE X%(0),Y%(0),FNdist(OX%,OY%):OX%=X%:OY%=Y%:CIRCLE X%(0),Y%(0),FNdist(X%,Y%):PROCoutpic:PROCquickdrawmain 5960WHEN 8:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:CIRCLE FILL X%(0),Y%(0),FNdist(OX%,OY%):PROCoutpic:PROCquickdrawmain:GOTO 8290 5970IF FUST%=0 THEN GOTO 8290 5980IF BUT%=1 THEN PROCinpic:PROCeoc:CIRCLE FILL X%(0),Y%(0),FNdist(OX%,OY%):PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 5990IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) THEN PROCinpic:PROCeoc:CIRCLE FILL X%(0),Y%(0),FNdist(OX%,OY%):PROCpicpos:PROCsetcol:CIRCLE FILL X%(0),Y%(0),FNdist(X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 8290 6000PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 6010PROCinpic:PROCeoc:CIRCLE FILL X%(0),Y%(0),FNdist(OX%,OY%):OX%=X%:OY%=Y%:CIRCLE FILL X%(0),Y%(0),FNdist(X%,Y%):PROCoutpic:PROCquickdrawmain 6020WHEN 9:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:GOTO 8290 6030IF FUST%=0 THEN GOTO 8290 6040IF BUT%=1 AND FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6050IF BUT%=1 AND FUST%=2 THEN PROCinpic:PROCeoc:PROCtri(5,OX%,OY%):PROCpicpos:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6060IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) AND FUST%=1 THEN PROCinpic:PROCeoc:X%(1)=OX%:Y%(1)=OY%:PROCpicpos:OX%=X%:OY%=Y%:LINE X%(1),Y%(1),X%,Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:GOTO 8290 6070IF BUT%=4 AND (OX%<>X%(1) OR OY%<>Y%(1)) AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpicpos:PROCtri(5,OX%,OY%):PROCsetcol:PROCtri(0,X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 8290 6080PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 6090IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain 6100IF FUST%=2 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:LINE X%(1),Y%(1),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:LINE X%(1),Y%(1),X%,Y%:PROCoutpic:PROCquickdrawmain 6110WHEN 10:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:GOTO 8290 6120IF FUST%=0 THEN GOTO 8290 6130IF BUT%=1 AND FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6140IF BUT%=1 AND FUST%=2 THEN PROCinpic:PROCeoc:PROCtri(85,OX%,OY%):PROCpicpos:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6150IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) AND FUST%=1 THEN PROCinpic:PROCeoc:X%(1)=OX%:Y%(1)=OY%:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:PROCtri(85,X%,Y%):PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:GOTO 8290 6160IF BUT%=4 AND (OX%<>X%(1) OR OY%<>Y%(1)) AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpicpos:PROCtri(85,OX%,OY%):PROCsetcol:PROCtri(85,X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 8290 6170PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 6180IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain 6190IF FUST%=2 THEN PROCinpic:PROCeoc:PROCtri(85,OX%,OY%):OX%=X%:OY%=Y%:PROCtri(85,X%,Y%):PROCoutpic:PROCquickdrawmain 6200WHEN 11:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:GOTO 8290 6210IF FUST%=0 THEN GOTO 8290 6220IF BUT%=1 AND FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6230IF BUT%=1 AND FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&C5,OX%,OY%):PROCpicpos:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6240IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) AND FUST%=1 THEN PROCinpic:PROCeoc:X%(1)=OX%:Y%(1)=OY%:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:PROCelip(&C5,X%,Y%):PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:GOTO 8290 6250IF BUT%=4 AND (OX%<>X%(1) OR OY%<>Y%(1)) AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpicpos:PROCelip(&C5,OX%,OY%):PROCsetcol:PROCelip(&C5,X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 8290 6260PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 6270IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain 6280IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&C5,OX%,OY%):OX%=X%:OY%=Y%:PROCelip(&C5,X%,Y%):PROCoutpic:PROCquickdrawmain 6290WHEN 12:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:GOTO 8290 6300IF FUST%=0 THEN GOTO 8290 6310IF BUT%=1 AND FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6320IF BUT%=1 AND FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&CD,OX%,OY%):PROCpicpos:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6330IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) AND FUST%=1 THEN PROCinpic:PROCeoc:X%(1)=OX%:Y%(1)=OY%:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:PROCelip(&CD,X%,Y%):PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:GOTO 8290 6340IF BUT%=4 AND (OX%<>X%(1) OR OY%<>Y%(1)) AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpicpos:PROCelip(&CD,OX%,OY%):PROCsetcol:PROCelip(&CD,X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 8290 6350PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 6360IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain 6370IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&CD,OX%,OY%):OX%=X%:OY%=Y%:PROCelip(&CD,X%,Y%):PROCoutpic:PROCquickdrawmain 6380WHEN 13:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:GOTO 8290 6390IF FUST%=0 THEN GOTO 8290 6400IF BUT%=1 AND FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6410IF BUT%=1 AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpara(0,0,OX%,OY%):PROCpicpos:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6420IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) AND FUST%=1 THEN PROCinpic:PROCeoc:X%(1)=OX%:Y%(1)=OY%:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:PROCpara(0,0,X%,Y%):PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:GOTO 8290 6430IF BUT%=4 AND (OX%<>X%(1) OR OY%<>Y%(1)) AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpicpos:PROCpara(0,0,OX%,OY%):PROCsetcol:PROCpara(1,0,X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 8290 6440PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 6450IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain 6460IF FUST%=2 THEN PROCinpic:PROCeoc:PROCpara(0,0,OX%,OY%):OX%=X%:OY%=Y%:PROCpara(0,0,X%,Y%):PROCoutpic:PROCquickdrawmain 6470WHEN 14:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:GOTO 8290 6480IF FUST%=0 THEN GOTO 8290 6490IF BUT%=1 AND FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6500IF BUT%=1 AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpara(0,1,OX%,OY%):PROCpicpos:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6510IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) AND FUST%=1 THEN PROCinpic:PROCeoc:X%(1)=OX%:Y%(1)=OY%:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:PROCpara(0,1,X%,Y%):PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:GOTO 8290 6520IF BUT%=4 AND (OX%<>X%(1) OR OY%<>Y%(1)) AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpicpos:PROCpara(0,1,OX%,OY%):PROCsetcol:PROCpara(0,1,X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 8290 6530PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 6540IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain 6550IF FUST%=2 THEN PROCinpic:PROCeoc:PROCpara(0,1,OX%,OY%):OX%=X%:OY%=Y%:PROCpara(0,1,X%,Y%):PROCoutpic:PROCquickdrawmain 6560WHEN 15:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:GOTO 8290 6570IF FUST%=0 THEN GOTO 8290 6580IF BUT%=1 AND FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6590IF BUT%=1 AND FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&A5,OX%,OY%):PROCpicpos:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6600IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) AND FUST%=1 THEN PROCinpic:PROCeoc:X%(1)=OX%:Y%(1)=OY%:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:PROCelip(&A5,X%,Y%):PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:GOTO 8290 6610IF BUT%=4 AND (OX%<>X%(1) OR OY%<>Y%(1)) AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpicpos:PROCelip(&A5,OX%,OY%):PROCsetcol:PROCelip(&A5,X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 8290 6620PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 6630IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain 6640IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&A5,OX%,OY%):OX%=X%:OY%=Y%:PROCelip(&A5,X%,Y%):PROCoutpic:PROCquickdrawmain 6650WHEN 16:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:GOTO 8290 6660IF FUST%=0 THEN GOTO 8290 6670IF BUT%=1 AND FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6680IF BUT%=1 AND FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&B5,OX%,OY%):PROCpicpos:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6690IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) AND FUST%=1 THEN PROCinpic:PROCeoc:X%(1)=OX%:Y%(1)=OY%:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:PROCelip(&B5,X%,Y%):PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:GOTO 8290 6700IF BUT%=4 AND (OX%<>X%(1) OR OY%<>Y%(1)) AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpicpos:PROCelip(&B5,OX%,OY%):PROCsetcol:PROCelip(&B5,X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 8290 6710PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 6720IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain 6730IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&B5,OX%,OY%):OX%=X%:OY%=Y%:PROCelip(&B5,X%,Y%):PROCoutpic:PROCquickdrawmain 6740WHEN 17:IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain:GOTO 8290 6750IF FUST%=0 THEN GOTO 8290 6760IF BUT%=1 AND FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6770IF BUT%=1 AND FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&AD,OX%,OY%):PROCpicpos:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:GOTO 8290 6780IF BUT%=4 AND (OX%<>X%(0) OR OY%<>Y%(0)) AND FUST%=1 THEN PROCinpic:PROCeoc:X%(1)=OX%:Y%(1)=OY%:LINE X%(0),Y%(0),OX%,OY%:PROCpicpos:OX%=X%:OY%=Y%:PROCelip(&AD,X%,Y%):PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:GOTO 8290 6790IF BUT%=4 AND (OX%<>X%(1) OR OY%<>Y%(1)) AND FUST%=2 THEN PROCinpic:PROCeoc:PROCpicpos:PROCelip(&AD,OX%,OY%):PROCsetcol:PROCelip(&AD,X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=0:GOTO 8290 6800PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 6810IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(0),Y%(0),X%,Y%:PROCoutpic:PROCquickdrawmain 6820IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&AD,OX%,OY%):OX%=X%:OY%=Y%:PROCelip(&AD,X%,Y%):PROCoutpic:PROCquickdrawmain 6830WHEN 19:IF FUST%<2 THEN PROCgrabpoll(0):GOTO 8290 6840IF BUT%=1 THEN PROCinpic:PROCpicpos:PROCpgrab(OX%,OY%,3):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:FUST%=0:PROCspinit:GOTO 8290 6850IF BUT%=4 THEN PROCinpic:PROCpicpos:PROCpgrab(OX%,OY%,3):PROCpgrab(X%,Y%,0):OX%=X%:OY%=Y%:PROCpgrab(OX%,OY%,3):PROCoutpic:PROCquickdrawmain:GOTO 8290 6860PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 6870PROCinpic:PROCpgrab(OX%,OY%,3):OX%=X%:OY%=Y%:PROCpgrab(X%,Y%,3):PROCoutpic:PROCquickdrawmain 6880WHEN 18:IF FUST%<2 THEN PROCgrabpoll(1):GOTO 8290 6890IF BUT%=1 THEN PROCinpic:PROCpicpos:PROCpgrab(OX%,OY%,3):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:FUST%=0:PROCspinit:GOTO 8290 6900IF BUT%=4 THEN PROCinpic:PROCpicpos:PROCpgrab(OX%,OY%,3):PROCpgrab(X%,Y%,0):OX%=X%:OY%=Y%:PROCpgrab(OX%,OY%,3):PROCoutpic:PROCquickdrawmain:ENDPROC 6910PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 6920PROCinpic:PROCpgrab(OX%,OY%,3):OX%=X%:OY%=Y%:PROCpgrab(X%,Y%,3):PROCoutpic:PROCquickdrawmain 6930WHEN 20:IF FUST%<2 THEN PROCrectpoll:GOTO 8290 6940PROCspbuf(FNspritesize(OX%-X%(0),OY%-Y%(0),1)):IF Q% THEN PROCspinit:PROCspbuferr 6950PROCinpic:GRN$="GRAB":SYS&2E,272,SPBUF%,"GRAB",,X%(0),Y%(0),OX%,OY% 6960SYS&2E,285,SPBUF%,"GRAB":GRABM%=8:PROCfillmask 6970SYS&2E,290,SPBUF%,"GRAB",X%(0),Y%(0),3+GRABM% 6980SYS&2E,303,SPBUF%,"GRAB":SYS&2E,290,SPBUF%,"GRAB",X%(0),Y%(0),GRABM%:PROCoutpic:FUST%=0:PROCspinit:PROCquickdrawmain 6990WHEN 21:IF FUST%<2 THEN PROCrectpoll:GOTO 8290 7000PROCspbuf(FNspritesize(OX%-X%(0),OY%-Y%(0),1)):IF Q% THEN PROCspinit:PROCspbuferr 7010PROCinpic:GRN$="GRAB":SYS&2E,272,SPBUF%,"GRAB",,X%(0),Y%(0),OX%,OY% 7020SYS&2E,285,SPBUF%,"GRAB":GRABM%=8:PROCfillmask 7030SYS&2E,290,SPBUF%,"GRAB",X%(0),Y%(0),3+GRABM% 7040SYS&2E,289,SPBUF%,"GRAB":SYS&2E,290,SPBUF%,"GRAB",X%(0),Y%(0),GRABM%:PROCoutpic:FUST%=0:PROCspinit:PROCquickdrawmain 7050WHEN 22:IF FUST%<2 THEN PROCrectpoll:GOTO 8290 7060PROCinpic:PROCsetcol:FORL%=0 TO 932 STEP 4 7070IF L%<Y%(0) OR L%>OY% THEN LINE 0,L%,1232,L%:GOTO 7100 7080IF X%(0)>0 THEN LINE 0,L%,X%(0)-2,L% 7090IF OY%<1232 THEN LINE OX%+2,L%,1232,L% 7100NEXT:PROCoutpic:FUST%=0:PROCquickdrawmain 7110WHEN 23:IF FUST%<2 THEN PROCrectpoll:GOTO 8290 7120IF FUCO%=0 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain:X%(1)=X%(0):Y%(1)=Y%(0):X%(2)=OX%:Y%(2)=OY%:FUST%=0:FUCO%=1:GOTO 8290 7130PROCspbuf(FNspritesize(X%(2)-X%(1),Y%(2)-Y%(1),ABS(FNhigh(8,14)))):IF Q% THEN PROCspinit:PROCspbuferr 7140PROCinpic:PROCeoc:RECTANGLE X%(1),Y%(1),X%(2)-X%(1),Y%(2)-Y%(1):GRN$="GRAB":SYS&2E,272,SPBUF%,"GRAB",,X%(1),Y%(1),X%(2),Y%(2) 7150IF FNhigh(8,14) THEN SYS&2E,285,SPBUF%,"GRAB":GRABM%=8:PROCfillmask ELSE GRABM%=0 7160PROCgrabflip:SCALE%!8=X%(2)-X%(1):SCALE%!12=Y%(2)-Y%(1):!SCALE%=OX%-X%(0):SCALE%!4=OY%-Y%(0) 7170SYS&2E,308,SPBUF%,"GRAB",X%(0),Y%(0),GRABM%,SCALE%:PROCoutpic:FUST%=0:FUCO%=0:PROCspinit:PROCquickdrawmain 7180WHEN 25:PROCinpic:GCOL3,63:PLOT69,300,300:PLOT69,300,300:PROCpicpos 7190IF X%=OX% AND Y%=OY% THEN 7210 7200PROCmapline 7210IF BUT%<>1 AND BUT%<>4 THEN PROCoutpic:PROCquickdrawmain:GOTO 8290 7220IF BUT%=4 THEN 7340 7230PROCeoc 7240CASE FUCO% OF 7250WHEN 2:LINE X%(1),Y%(1),X%,Y% 7260WHEN 3:LINE X%(1),Y%(1),X%(2),Y%(2):LINE X%(2),Y%(2),X%,Y% 7270WHEN 4:LINE X%(1),Y%(1),X%(2),Y%(2):LINE X%(2),Y%(2),X%(3),Y%(3):LINE X%(3),Y%(3),X%,Y%:LINE X%,Y%,X%(1),Y%(1) 7280WHEN 5:LINE X%(1),Y%(1),X%(2),Y%(2):LINE X%(2),Y%(2),X%(3),Y%(3):LINE X%(3),Y%(3),X%(4),Y%(4):LINE X%(4),Y%(4),X%(1),Y%(1) 7290WHEN 6:LINE X%(1),Y%(1),X%(2),Y%(2):LINE X%(2),Y%(2),X%(3),Y%(3):LINE X%(3),Y%(3),X%(4),Y%(4):LINE X%(4),Y%(4),X%(1),Y%(1):LINE X%(5),Y%(5),X%,Y% 7300WHEN 7:LINE X%(1),Y%(1),X%(2),Y%(2):LINE X%(2),Y%(2),X%(3),Y%(3):LINE X%(3),Y%(3),X%(4),Y%(4):LINE X%(4),Y%(4),X%(1),Y%(1):LINE X%(5),Y%(5),X%(6),Y%(6):LINE X%(6),Y%(6),X%,Y% 7310WHEN 8:LINE X%(1),Y%(1),X%(2),Y%(2):LINE X%(2),Y%(2),X%(3),Y%(3):LINE X%(3),Y%(3),X%(4),Y%(4):LINE X%(4),Y%(4),X%(1),Y%(1):LINE X%(5),Y%(5),X%(6),Y%(6):LINE X%(6),Y%(6),X%(7),Y%(7):LINE X%(7),Y%(7),X%,Y%:LINE X%(5),Y%(5),X%,Y% 7320ENDCASE 7330FUCO%=1:PROCletgo:PROCoutpic:PROCquickdrawmain:GOTO 8290 7340PROCeoc 7350IF FUCO%=8 THEN GOTO 7390 7360X%(FUCO%)=X%:Y%(FUCO%)=Y%:IF FUCO%<>4 THEN LINE X%(FUCO%),Y%(FUCO%),X%,Y% 7370IF FUCO%=3 OR FUCO%=7 THEN LINE X%(FUCO%-2),Y%(FUCO%-2),X%,Y% 7380OX%=X%:OY%=Y%:FUCO%+=1:PROCletgo:GOTO 8290 7390X%(8)=X%:Y%(8)=Y%:FORL%=1 TO 3:LINE X%(L%),Y%(L%),X%(L%+1),Y%(L%+1):LINE X%(L%+4),Y%(L%+4),X%(L%+5),Y%(L%+5):NEXT:LINE X%(1),Y%(1),X%(4),Y%(4):LINE X%(5),Y%(5),X%(8),Y%(8):FUCO%=1 7400PROCoutpic:PROCquickdrawmain:PROCpixelmap:GOTO 8290 7410WHEN 27:IF FUST%<2 THEN PROCrectpoll:GOTO 8290 7420PROCspinit:PROCspbuf(145*1024):IF Q% THEN PROCspbuferr 7430PROCbackuppic:PROCswapcorns 7440VARS!20=BTC%:VARS!24=PALTAB% 7450VARS!28=PIC%:VARS!32=SPBUF% 7460VARS!36=X%(0):VARS!40=Y%(0) 7470VARS!44=OX%:VARS!48=OY% 7480A%=VARS:SYS "Hourglass_On":CALL pixaverage:SYS "Hourglass_Off":PROCspinit:PROCforcedrawmain:FUST%=0 7490WHEN 28:IF FUST%<2 THEN PROCrectpoll:GOTO 8290 7500PROCswapcorns 7510VARS!20=BTC%:VARS!24=PALTAB% 7520VARS!28=PIC% 7530VARS!36=X%(0):VARS!40=Y%(0) 7540VARS!44=OX%:VARS!48=OY% 7550VARS!84=PALTAB%?(COL%*2):VARS!88=PALTAB%?((COL%*2)+1) 7560A%=VARS:SYS "Hourglass_On":CALL tintarea:SYS "Hourglass_Off":PROCforcedrawmain:FUST%=0 7570WHEN 29:IF FUST%=0 THEN PROCpaintscale2:PROCpicpos:PROCinpic:PROCeorback:PROCpaintbrush(X%,Y%):PROCoutpic:PROCquickdrawmain:OX%=X%:OY%=Y%:FUST%=1:GOTO 8290 7580PROCpicpos 7590IF X%<>OX% OR Y%<>OY% THEN PROCpaintscale2:PROCinpic:PROCeorback:PROCpaintbrush(OX%,OY%):PROCpaintbrush(X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain 7600WHEN 30:IF FUST%=0 THEN PROCpaintscale2:PROCpicpos:PROCinpic:PROCeorback:PROCpaintbrush(X%,Y%):PROCoutpic:PROCquickdrawmain:OX%=X%:OY%=Y%:FUST%=1:GOTO 8290 7610PROCpicpos 7620IF X%<>OX% OR Y%<>OY% THEN PROCpaintscale2:PROCinpic:PROCeorback:PROCpaintbrush(OX%,OY%):PROCpaintbrush(X%,Y%):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain 7630WHEN 32:IF FONT%<>0 THEN 7640PROCpicpos:IF BUT%=4 AND FUST%<>0 THEN PROCinbackup:SYS "Font_SetFont",FHAND%:SYS "Font_Paint",,TEXT$,16,X%,Y%:PROCoutbackup 7650IF FUST%<>0 AND (X%<>OX% OR Y%<>OY%) THEN PROCrestpic:PROCinpic:SYS "Font_SetFont",FHAND%:SYS "Font_Paint",,TEXT$,16,X%,Y%:PROCoutpic:PROCforcedrawmain:OX%=X%:OY%=Y% 7660ELSE 7670PROCpicpos:IF BUT%=4 AND FUST%<>0 THEN PROCinbackup:PROCostext(X%,Y%):PROCoutbackup 7680IF FUST%<>0 AND (X%<>OX% OR Y%<>OY%) THEN PROCrestpic:PROCinpic:PROCostext(X%,Y%):PROCoutpic:PROCforcedrawmain:OX%=X%:OY%=Y% 7690ENDIF 7700WHEN 31:IF FUST%<2 THEN PROCrectpoll:GOTO 8290 7710PROCswapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% 7720SYS "Hourglass_On":PROCfill:SYS "Hourglass_Off":FUST%=0 7730WHEN 33:IF FUST%<2 THEN PROCrectpoll:GOTO 8290 7740PROCswapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% 7750SYS "Hourglass_On":!VARS=PIC%:VARS!4=PIC%:VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=BTC%:VARS!28=TTB%:VARS!32=REPS%:A%=VARS:CALL colrep:SYS "Hourglass_Off":FUST%=0:PROCforcedrawmain 7760WHEN 34:IF FUST%=0 THEN 7780 7770IF BUT%=4 THEN PROCinpic:PROCpicpos:PROCpimport(OX%,OY%,3):PROCpimport(X%,Y%,0):OX%=X%:OY%=Y%:PROCpimport(OX%,OY%,3):PROCoutpic:PROCquickdrawmain:GOTO 8290 7780IF FUST%=0 THEN FUST%=1:PROCpicpos:OX%=X%:OY%=Y%:PROCinpic:PROCpimport(X%,Y%,3):PROCoutpic:PROCquickdrawmain:GOTO 8290 7790PROCpicpos:IF X%=OX% AND Y%=OY% THEN GOTO 8290 7800PROCinpic:PROCpimport(OX%,OY%,3):OX%=X%:OY%=Y%:PROCpimport(X%,Y%,3):PROCoutpic:PROCquickdrawmain 7810WHEN 35:IF FUST%<2 THEN PROCgrabpoll(0):GOTO 8290 7820IF FUST%=2 THEN PROCclosewind(8):PROCinpic:PROCpicpos:PROCpgrab(OX%,OY%,3):OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:FUST%=3:PROCopenwind(7):GOTO 8290 7830WHEN 36:IF FUST%=0 THEN PROCpicpos:PROCinpic:PROCeoc:RECTANGLE X%,Y%,FRW%*2,FRH%*4:PROCoutpic:PROCquickdrawmain:OX%=X%:OY%=Y%:FUST%=1 7840PROCpicpos:IF X%<>OX% OR Y%<>OY% THEN PROCinpic:PROCeoc:RECTANGLE OX%,OY%,FRW%*2,FRH%*4:OX%=X%:OY%=Y%:RECTANGLE OX%,OY%,FRW%*2,FRH%*4:PROCoutpic:PROCquickdrawmain 7850IF BUT%<>4 THEN 8290 7860PROCinpic:PROCeoc:RECTANGLE OX%,OY%,FRW%*2,FRH%*4:PROCsetcol:RECTANGLE OX%,OY%,FRW%*2,FRH%*4:PROCeoc:RECTANGLE OX%,OY%,FRW%*2,FRH%*4:PROCoutpic:PROCquickdrawmain 7870WHEN 38:IF FUST%<2 THEN PROCrectpoll:GOTO 8290 7880PROCswapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% 7890SYS "Hourglass_On":!VARS=PIC%:VARS!4=PIC%:VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=TRASP%:VARS!28=BTC%:VARS!32=TRANSTAB% 7900RW%=VALFNgeticon(21,4):GW%=VALFNgeticon(21,7):BW%=VALFNgeticon(21,10) 7910FORL%=0 TO 255:SYS "ColourTrans_ColourNumberToGCOL",L% TO G% 7920RC%=((G%AND%1111)*RW%)DIV100:GC%=((((G%AND48)>>2)+(G%AND3))*GW%)DIV100:BC%=((((G%AND192)>>4)+(G%AND3))*BW%)DIV100 7930IF RC%>15 THEN RC%=15 7940IF GC%>15 THEN GC%=15 7950IF BC%>15 THEN BC%=15 7960TC%=(((RC%AND3)+(GC%AND3)+(BC%AND3))DIV3):TC%=TC%+(RC%AND12)+((GC%AND12)<<2)+((BC%AND12)<<4):SYS"ColourTrans_GCOLToColourNumber",TC% TO TC% 7970TRANSTAB%?L%=TC%:NEXT 7980A%=VARS:CALL transarea:SYS "Hourglass_Off":FUST%=0:PROCforcedrawmain 7990WHEN 39:IF FUST%<2 THEN PROCrectpoll:GOTO 8290 8000PROCswapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% 8010SYS "Hourglass_On":!VARS=PIC%:VARS!4=PIC%:VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=TRASP%:VARS!28=BTC%:VARS!32=TRANSTAB% 8020RW%=VALFNgeticon(22,4):GW%=VALFNgeticon(22,7):BW%=VALFNgeticon(22,10):FORL%=0 TO 255:SYS "ColourTrans_ColourNumberToGCOL",L% TO G% 8030RC%=(G%AND%1111)*RW%:GC%=(((G%AND48)>>2)+(G%AND3))*GW%:BC%=(((G%AND192)>>4)+(G%AND3))*BW% 8040TC%=((RC%+GC%+BC%)DIV3):IF TC%>15 THEN TC%=15 8050TC%=TC%+((TC%AND12)<<2)+((TC%AND12)<<4):SYS"ColourTrans_GCOLToColourNumber",TC% TO TC% 8060TRANSTAB%?L%=TC%:NEXT 8070A%=VARS:CALL transarea:SYS "Hourglass_Off":FUST%=0:PROCforcedrawmain 8080WHEN 40:IF FUST%<2 THEN PROCrectpoll:GOTO 8290 8090PROCswapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% 8100PW%=VALFNgeticon(23,3)*2:PH%=VALFNgeticon(23,6)*4:POX%=PW%DIV2:POY%=PH%DIV2 8110XP%=FMINX%:YP%=FMINY%:PROCinpic:VDU24,FMINX%;FMINY%;FMAXX%;FMAXY%; 8120SYS "Hourglass_On" 8130REPEAT:REPEAT:GCOL USE%,POINT(XP%+POX%,YP%+POY%) TINT TINT(XP%+POX%,YP%+POY%):RECTANGLE FILL XP%,YP%,PW%-2,PH%-4:XP%+=PW%:UNTIL XP%>FMAXX%:XP%=FMINX%:YP%+=PH%:UNTIL YP%>FMAXY%:VDU26:PROCoutpic:PROCforcedrawmain:FUST%=0 8140SYS "Hourglass_Off" 8150WHEN 41:IF FUST%<2 THEN PROCrectpoll:GOTO 8290 8160IF FUST%=2 THEN PROCswapcorns:ROTCX%=(X%(0)+OX%)DIV2:ROTCY%=(Y%(0)+OY%)DIV2:FMINX%=X%(0)-ROTCX%:FMINY%=Y%(0)-ROTCY%:FMAXX%=OX%-ROTCX%:FMAXY%=OY%-ROTCY%:PROCpicpos:PROCinpic:PROCprotbox(X%,Y%):PROCoutpic:OX%=X%:OY%=Y%:PROCquickdrawmain:FUST%=3:GOTO 8290 8170PROCpicpos:IF BUT%=1 OR BUT%=4 THEN GOTO 8190 8180IF X%<>OX% OR Y%<>OY% THEN PROCinpic:PROCprotbox(OX%,OY%):OX%=X%:OY%=Y%:PROCprotbox(X%,Y%):PROCoutpic:PROCquickdrawmain:GOTO 8290 ELSE GOTO 8290 8190IF BUT%=1 THEN PROCinpic:PROCprotbox(OX%,OY%):PROCoutpic:PROCquickdrawmain:FUST%=0:GOTO 8290 8200PROCinpic:PROCprotbox(OX%,OY%):PROCoutpic:X%=OX%:Y%=OY% 8210FUST%=4:PROCspinit:PROCspbuf(145*1024):IF Q% THEN PROCspbuferr 8220PROCbackuppic:PROCinbackup:R%=ROT%:PROCrotpoint(FMINX%,FMINY%,R%,X1%,Y1%):PROCrotpoint(FMAXX%,FMINY%,R%,X2%,Y2%):PROCrotpoint(FMAXX%,FMAXY%,R%,X3%,Y3%):PROCrotpoint(FMINX%,FMAXY%,R%,X4%,Y4%) 8230PROCrotpoint(0,(FMAXY%DIV3)*2,R%,MX1%,MY1%):PROCrotpoint(0,(FMAXY%DIV3)*4,R%,MX2%,MY2%) 8240X1%+=X%:X2%+=X%:X3%+=X%:X4%+=X% 8250Y1%+=Y%:Y2%+=Y%:Y3%+=Y%:Y4%+=Y% 8260PROCeoc:PLOT4,X1%,Y1%:PLOT4,X2%,Y2%:PLOT85,X3%,Y3%:GCOL3,60 TINT 192:PLOT4,X4%,Y4%:PLOT85,X1%,Y1%:PROCoutbackup 8270A%=VARS:VARS!4=PIC%:VARS!8=SPBUF%:VARS!12=ROTTAB%:VARS!16=(360-ROT%)MOD360:VARS!20=BTC%:VARS!24=TRASP%:VARS!28=X%:VARS!32=Y%:VARS!36=ROTCX%:VARS!40=ROTCY%:SYS "Hourglass_On":CALL rotate:SYS "Hourglass_Off" 8280PROCinpic:SYS&2E,290,SPBUF%,"PIC":PROCprotbox(X%,Y%):FUST%=3:OX%=X%:OY%=Y%:PROCoutpic:PROCforcedrawmain:PROCspinit 8290ENDCASE 8300ENDPROC 8310 8320DEFPROCprotbox(CX%,CY%):PROCeoc:R%=ROT%:PROCrotpoint(FMINX%,FMINY%,R%,X1%,Y1%):PROCrotpoint(FMAXX%,FMINY%,R%,X2%,Y2%):PROCrotpoint(FMAXX%,FMAXY%,R%,X3%,Y3%):PROCrotpoint(FMINX%,FMAXY%,R%,X4%,Y4%) 8330PROCrotpoint(0,(FMAXY%DIV3)*2,R%,MX1%,MY1%):PROCrotpoint(0,(FMAXY%DIV3)*4,R%,MX2%,MY2%) 8340X1%+=CX%:X2%+=CX%:X3%+=CX%:X4%+=CX% 8350Y1%+=CY%:Y2%+=CY%:Y3%+=CY%:Y4%+=CY% 8360PLOT4,X1%,Y1%:PLOT5,X2%,Y2%:PLOT5,X3%,Y3%:PLOT5,X4%,Y4%:PLOT5,X1%,Y1% 8370LINE MX1%+CX%,MY1%+CY%,MX2%+CX%,MY2%+CY% 8380ENDPROC 8390 8400DEFPROCrotpoint(R0%,R1%,R%,RETURN RPX%,RETURN RPY%) 8410R6%=(ROTTAB%!(R%*4))>>12:R7%=(!(ROTTAB%+(R%*4)+&168))>>12:R8%=R0%*R6%:R5%=R1%*R7%:R8%-=R5%:R5%=R1%*R6%:R1%=R0%*R7%:R1%+=R5%:RPX%=R1%>>18:RPY%=-(R8%>>18) 8420ENDPROC 8430 8440DEFFNperc(WH%,IH%) 8450I$=FNgeticon(WH%,IH%):=VAL(LEFT$(I$,LEN(I$)-1)) 8460 8470DEFPROCmapline 8480CASE FUCO% OF 8490WHEN 2:PROCeoc:LINE X%(1),Y%(1),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(1),Y%(1),X%,Y% 8500WHEN 3:PROCeoc:LINE X%(2),Y%(2),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(2),Y%(2),X%,Y% 8510WHEN 4:PROCeoc:LINE X%(1),Y%(1),OX%,OY%:LINE X%(3),Y%(3),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(1),Y%(1),X%,Y%:LINE X%(3),Y%(3),X%,Y% 8520WHEN 6:PROCeoc:LINE X%(5),Y%(5),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(5),Y%(5),X%,Y% 8530WHEN 7:PROCeoc:LINE X%(6),Y%(6),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(6),Y%(6),X%,Y% 8540WHEN 8:PROCeoc:LINE X%(5),Y%(5),OX%,OY%:LINE X%(7),Y%(7),OX%,OY%:OX%=X%:OY%=Y%:LINE X%(5),Y%(5),X%,Y%:LINE X%(7),Y%(7),X%,Y% 8550ENDCASE 8560ENDPROC 8570 8580DEFPROCpixelmap 8590PROCspinit:PROCspbuf(145*1024):IF Q% THEN PROCspbuferr 8600PROCbackuppic 8610SYS "Hourglass_On" 8620dsta=SQR((X%(6)-X%(5))^2+(Y%(5)-Y%(6))^2) 8630dstb=SQR((X%(8)-X%(7))^2+(Y%(7)-Y%(8))^2) 8640IF dsta>dstb THEN steps%=dsta DIV2 ELSE steps%=dstb DIV2 8650fxsa=(X%(2)-X%(1))/steps% 8660fxsb=(X%(3)-X%(4))/steps% 8670fysa=(Y%(2)-Y%(1))/steps% 8680fysb=(Y%(3)-Y%(4))/steps% 8690txsa=(X%(6)-X%(5))/steps% 8700txsb=(X%(7)-X%(8))/steps% 8710tysa=(Y%(6)-Y%(5))/steps% 8720tysb=(Y%(7)-Y%(8))/steps% 8730FOR cb%=0 TO steps% 8740fxa=X%(1)+cb%*fxsa 8750fxb=X%(4)+cb%*fxsb 8760fya=Y%(1)+cb%*fysa 8770fyb=Y%(4)+cb%*fysb 8780txa=X%(5)+cb%*txsa 8790txb=X%(8)+cb%*txsb 8800tya=Y%(5)+cb%*tysa 8810tyb=Y%(8)+cb%*tysb 8820PROCinpic:GCOL3,63:PLOT69,300,300:PLOT69,300,300:PROCmapln:PROCoutpic:PROCquickdrawmain 8830NEXT 8840PROCspinit 8850SYS "Hourglass_Off" 8860ENDPROC 8870 8880DEFPROCmapln 8890LOCAL ns%,fxs,fys,txs,tys,c% 8900ns%=1+SQR((txb-txa)^2+(tya-tyb)^2) DIV2 8910fxs=(fxb-fxa)/ns%:txs=(txb-txa)/ns% 8920fys=(fyb-fya)/ns%:tys=(tyb-tya)/ns% 8930FOR c%=0 TO ns% 8940SYS&2E,297,SPBUF%,"PIC",(fxa+c%*fxs)DIV2,(fya+c%*fys)DIV4 TO ,,,,,col%,tin%:GCOL USE%,col% TINT tin% 8950IF TRASP%?FNfindpalent(col%,tin%)=0 THEN PLOT69,txa+c%*txs,tya+c%*tys 8960NEXT 8970ENDPROC 8980 8990DEFPROCgrabpoll(FT%) 9000IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain:PROCletgo:ENDPROC 9010IF FUST%=0 THEN ENDPROC 9020IF BUT%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:ENDPROC 9030IF BUT%<>4 OR (OX%=X%(0) AND OY%=Y%(0)) THEN GOTO 9120 9040PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCpicpos:PROCspbuf(FNspritesize(X%-X%(0),Y%-Y%(0),ABS(FNhigh(8,14)))):IF Q% THEN RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCspinit:PROCspbuferr 9050GRN$="GRAB":SYS&2E,272,SPBUF%,"GRAB",,X%(0),Y%(0),X%,Y%:IF FNhigh(8,14) THEN SYS&2E,285,SPBUF%,"GRAB":GRABM%=8:PROCfillmask ELSE GRABM%=0 9060GRWI%=ABS(X%-X%(0)):GRHE%=ABS(Y%-Y%(0)) 9070IF X%<X%(0) THEN SWAP X%(0),X% 9080IF Y%<Y%(0) THEN SWAP Y%(0),Y% 9090IF FT%=1 THEN SYS&2E,290,SPBUF%,"GRAB",X%(0),Y%(0),3+GRABM% 9100PROCpgrab(X%,Y%,3) 9110OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:ENDPROC 9120PROCpicpos:IF X%=OX% AND Y%=OY% THEN ENDPROC 9130PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):OX%=X%:OY%=Y%:RECTANGLE X%(0),Y%(0),X%-X%(0),Y%-Y%(0):PROCoutpic:PROCquickdrawmain 9140ENDPROC 9150 9160DEFPROCrectpoll 9170IF FUST%=0 AND BUT%<>0 THEN PROCpicpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain:PROCletgo:ENDPROC 9180IF FUST%=0 THEN ENDPROC 9190IF BUT%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCpicpos:OX%=X%:OY%=Y%:FUST%=0:PROCoutpic:PROCquickdrawmain:PROCletgo:ENDPROC 9200IF BUT%<>4 OR (OX%=X%(0) AND OY%=Y%(0)) THEN GOTO 9250 9210PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCpicpos 9220IF X%<X%(0) THEN SWAP X%(0),X% 9230IF Y%<Y%(0) THEN SWAP Y%(0),Y% 9240OX%=X%:OY%=Y%:PROCoutpic:PROCquickdrawmain:PROCletgo:FUST%=2:ENDPROC 9250PROCpicpos:IF X%=OX% AND Y%=OY% THEN ENDPROC 9260PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):OX%=X%:OY%=Y%:RECTANGLE X%(0),Y%(0),X%-X%(0),Y%-Y%(0):PROCoutpic:PROCquickdrawmain 9270ENDPROC 9280 9290DEFPROCpgrab(DX%,DY%,PL%) 9300XR=GRXM%/GRXD% 9310YR=GRYM%/GRYD% 9320!SCALE%=GRXM% 9330SCALE%!4=GRYM% 9340SCALE%!8=GRXD% 9350SCALE%!12=GRYD% 9360SYS&2E,308,SPBUF%,"GRAB",DX%-((GRWI% DIV 2)*XR),DY%-((GRHE% DIV 2)*YR),PL%+GRABM%,SCALE% 9370ENDPROC 9380 9390DEFPROCpimport(DX%,DY%,PL%) 9400XR=GRXM%/GRXD%:YR=GRYM%/GRYD% 9410IO%!20=(!IO%)*GRXM% 9420IO%!24=(IO%!4)*GRYM% 9430IO%!28=(IO%!8)*GRXD% 9440IO%!32=(IO%!12)*GRYD% 9450IF NOT GRMA% THEN SYS&2E,308,SPBUF%,GRN$,DX%-((IMW% DIV 2)*XR),DY%-((IMH% DIV 2)*YR),PL%,IO%+20,IMPT% ELSE SYS&2E,308,SPBUF%,GRN$,DX%-((IMW% DIV 2)*XR),DY%-((IMH% DIV 2)*YR),PL%+8,IO%+20,IMPT% 9460ENDPROC 9470 9480DEFPROCpara(LT%,PL%,DX%,DY%) 9490IF PL%=1 THEN PROCelip(&75,DX%,DY%):ENDPROC 9500IF LT%=1 THEN 9510PROCl(X%(0),Y%(0),X%(1),Y%(1)) 9520PROCl(X%(1),Y%(1),DX%,DY%) 9530PLOT LITY%-4,X%(0)-X%(1),Y%(0)-Y%(1) 9540PLOT LITY%,X%(0),Y%(0) 9550ELSE 9560LINE X%(0),Y%(0),X%(1),Y%(1) 9570LINE X%(1),Y%(1),DX%,DY% 9580PLOT1,X%(0)-X%(1),Y%(0)-Y%(1) 9590PLOT5,X%(0),Y%(0) 9600ENDIF 9610ENDPROC 9620 9630DEFPROCelip(PL%,DX%,DY%) 9640MOVE X%(0),Y%(0) 9650MOVE X%(1),Y%(1) 9660PLOT PL%,DX%,DY% 9670ENDPROC 9680 9690DEFPROCtri(PL%,DX%,DY%) 9700IF PL%=5 OR PL%=85 THEN PLOT4,DX%,DY%:PLOT 5,X%(0),Y%(0):PLOT 5,X%(1),Y%(1):PLOT PL%,DX%,DY% ELSE PLOT4,DX%,DY%:PLOT LITY%,X%(0),Y%(0):PLOT LITY%,X%(1),Y%(1):PLOT LITY%,DX%,DY% 9710ENDPROC 9720 9730DEFFNdist(DX%,DY%):=SQR(((DX%-X%(0))^2)+((DY%-Y%(0))^2)) 9740 9750DEFPROCpaintbrush(BX%,BY%):SYS&2E,306,BRUSH%,STR$(SELBR%),BX%-(32*XR),BY%-(32*YR),,SCALE%:ENDPROC 9760 9770DEFPROCpaintbrush2(BX%,BY%):SYS&2E,305,BRUSH%,STR$(SELBR%),BX%-32,BY%-32:ENDPROC 9780 9790DEFPROCletgo:REPEAT:MOUSE X%,Y%,H%:UNTIL H%=0:ENDPROC 9800 9810DEFPROCkillf 9820CASE FUSE% OF 9830PROCspbuf(0) 9840WHEN 2:IF FUST%>0 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain 9850WHEN 3:PROCclosewind(4) 9860WHEN 4:PROCclosewind(5):IF FUST%>0 THEN PROCinpic:PROCpaintscale:PROCeorback:PROCpaintbrush(OX%,OY%):PROCoutpic:PROCquickdrawmain 9870WHEN 5:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 9880WHEN 6:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE FILL X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 9890WHEN 7:IF FUST%=1 THEN PROCinpic:PROCeoc:CIRCLE X%(0),Y%(0),FNdist(OX%,OY%):PROCoutpic:PROCquickdrawmain 9900WHEN 8:IF FUST%=1 THEN PROCinpic:PROCeoc:CIRCLE FILL X%(0),Y%(0),FNdist(OX%,OY%):PROCoutpic:PROCquickdrawmain 9910WHEN 9:IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain 9920IF FUST%=2 THEN PROCinpic:PROCeoc:PROCtri(5,OX%,OY%):PROCoutpic:PROCquickdrawmain 9930WHEN 10:IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain 9940IF FUST%=2 THEN PROCinpic:PROCeoc:PROCtri(85,OX%,OY%):PROCoutpic:PROCquickdrawmain 9950WHEN 11:IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain 9960IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&C5,OX%,OY%):PROCoutpic:PROCquickdrawmain 9970WHEN 12:IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain 9980IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&CD,OX%,OY%):PROCoutpic:PROCquickdrawmain 9990WHEN 13:IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain 10000IF FUST%=2 THEN PROCinpic:PROCeoc:PROCpara(0,0,OX%,OY%):PROCoutpic:PROCquickdrawmain 10010WHEN 14:IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain 10020IF FUST%=2 THEN PROCinpic:PROCeoc:PROCpara(0,1,OX%,OY%):PROCoutpic:PROCquickdrawmain 10030WHEN 15:IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain 10040IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&A5,OX%,OY%):PROCoutpic:PROCquickdrawmain 10050WHEN 16:IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain 10060IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&B5,OX%,OY%):PROCoutpic:PROCquickdrawmain 10070WHEN 17:IF FUST%=1 THEN PROCinpic:PROCeoc:LINE X%(0),Y%(0),OX%,OY%:PROCoutpic:PROCquickdrawmain 10080IF FUST%=2 THEN PROCinpic:PROCeoc:PROCelip(&AD,OX%,OY%):PROCoutpic:PROCquickdrawmain 10090WHEN 18:PROCclosewind(8):IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10100IF FUST%=2 THEN PROCinpic:PROCpgrab(OX%,OY%,3):PROCoutpic:PROCquickdrawmain:PROCspinit 10110WHEN 19:PROCclosewind(8):IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10120IF FUST%=2 THEN PROCinpic:PROCpgrab(OX%,OY%,3):PROCoutpic:PROCquickdrawmain:PROCspinit 10130WHEN 20:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10140WHEN 21:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10150WHEN 22:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10160WHEN 23:PROCclosewind(8):IF FUCO%=1 AND FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(1),Y%(1),X%(2)-X%(1),Y%(2)-Y%(1):RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain:GOTO 10520 10170IF FUCO%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(1),Y%(1),X%(2)-X%(1),Y%(2)-Y%(1):PROCoutpic:PROCquickdrawmain:GOTO 10520 10180IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10190WHEN 25:PROCinpic 10200PROCeoc 10210CASE FUCO% OF 10220WHEN 2:LINE X%(1),Y%(1),X%,Y% 10230WHEN 3:LINE X%(1),Y%(1),X%(2),Y%(2):LINE X%(2),Y%(2),X%,Y% 10240WHEN 4:LINE X%(1),Y%(1),X%(2),Y%(2):LINE X%(2),Y%(2),X%(3),Y%(3):LINE X%(3),Y%(3),X%,Y%:LINE X%,Y%,X%(1),Y%(1) 10250WHEN 5:LINE X%(1),Y%(1),X%(2),Y%(2):LINE X%(2),Y%(2),X%(3),Y%(3):LINE X%(3),Y%(3),X%(4),Y%(4):LINE X%(4),Y%(4),X%(1),Y%(1) 10260WHEN 6:LINE X%(1),Y%(1),X%(2),Y%(2):LINE X%(2),Y%(2),X%(3),Y%(3):LINE X%(3),Y%(3),X%(4),Y%(4):LINE X%(4),Y%(4),X%(1),Y%(1):LINE X%(5),Y%(5),X%,Y% 10270WHEN 7:LINE X%(1),Y%(1),X%(2),Y%(2):LINE X%(2),Y%(2),X%(3),Y%(3):LINE X%(3),Y%(3),X%(4),Y%(4):LINE X%(4),Y%(4),X%(1),Y%(1):LINE X%(5),Y%(5),X%(6),Y%(6):LINE X%(6),Y%(6),X%,Y% 10280WHEN 8:LINE X%(1),Y%(1),X%(2),Y%(2):LINE X%(2),Y%(2),X%(3),Y%(3):LINE X%(3),Y%(3),X%(4),Y%(4):LINE X%(4),Y%(4),X%(1),Y%(1):LINE X%(5),Y%(5),X%(6),Y%(6):LINE X%(6),Y%(6),X%(7),Y%(7):LINE X%(7),Y%(7),X%,Y%:LINE X%(5),Y%(5),X%,Y% 10290ENDCASE 10300FUCO%=1:PROCoutpic:PROCquickdrawmain:PROCletgo 10310WHEN 27:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10320WHEN 28:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10330WHEN 29:PROCclosewind(5):IF FUST%>0 THEN PROCinpic:PROCpaintscale2:PROCeorback:PROCpaintbrush(OX%,OY%):PROCoutpic:PROCquickdrawmain 10340WHEN 30:PROCclosewind(5):IF FUST%>0 THEN PROCinpic:PROCpaintscale2:PROCeorback:PROCpaintbrush(OX%,OY%):PROCoutpic:PROCquickdrawmain 10350WHEN 32:PROCrestpic:PROCforcedrawmain:PROCclosewind(14):PROCspinit:IF FONT%<>0 THEN PROClosefont 10360WHEN 31:IF GRTY%=1 THEN 10370IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10380ENDIF 10390WHEN 33:PROCclosewind(18):PROCspinit:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10400WHEN 34:IF FUST%=1 THEN PROCinpic:PROCpimport(OX%,OY%,3):PROCoutpic:PROCquickdrawmain 10410PROCclosewind(8):PROCspinit 10420WHEN 35:IF FUST%<2 THEN PROCclosewind(8) 10430IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10440IF FUST%=3 THEN PROCclosewind(7) 10450WHEN 36:IF FUST%<>0 THEN PROCinpic:PROCeoc:RECTANGLE OX%,OY%,FRW%*2,FRH%*4:PROCoutpic:PROCquickdrawmain 10460WHEN 37:PROCspinit:PROCclosewind(20) 10470WHEN 38:PROCclosewind(21):PROCspinit:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10480WHEN 39:PROCclosewind(22):PROCspinit:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10490WHEN 40:PROCclosewind(23):PROCspinit:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10500WHEN 41:PROCclosewind(24):PROCspinit:IF FUST%=1 THEN PROCinpic:PROCeoc:RECTANGLE X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):PROCoutpic:PROCquickdrawmain 10510IF FUST%=3 THEN PROCinpic:PROCprotbox(OX%,OY%):PROCoutpic:PROCquickdrawmain 10520ENDCASE 10530ENDPROC 10540 10550DEFPROCeoc:GCOL3,63 TINT 192:ENDPROC 10560 10570DEFPROCeorback:GCOL3,191 TINT 192:ENDPROC 10580 10590DEFPROCpickcol 10600BLK%!8=HAND%(3):SYS "Wimp_GetWindowState",,BLK%+8 10610XOF%=(!BLK%)-(BLK%!12):IF XOF%>766 THEN XOF%=766 10620YOF%=(BLK%!4)-(BLK%!16):IF YOF%>220 THEN YOF%=220 10630IF MOUB%=4 THEN COL%=(XOF% DIV 24)+((YOF% DIV 28)*32) ELSE IF MOUB%=1 THEN PROCtrasp((XOF% DIV 24)+((YOF% DIV 28)*32)) 10640PROCforcedrawpal(PAL%) 10650ENDPROC 10660 10670DEFPROCtbackclick 10680BLK%!8=HAND%(15):SYS "Wimp_GetWindowState",,BLK%+8 10690XOF%=(!BLK%)-(BLK%!12):IF XOF%>766 THEN XOF%=766 10700YOF%=(BLK%!4)-(BLK%!16):IF YOF%>220 THEN YOF%=220 10710FONTB%=(XOF% DIV 24)+((YOF% DIV 28)*32) 10720PROCforcedrawtback 10730ENDPROC 10740 10750DEFPROCpicpos 10760SCRX%=!BLK%:SCRY%=BLK%!4 10770BLK%!8=HAND%(2):SYS "Wimp_GetWindowState",,BLK%+8 10780X%=(((!BLK%)-(BLK%!12))+(BLK%!28)) DIV ZOOM% 10790Y%=936-((((BLK%!24)-(BLK%!4))-(BLK%!32)) DIV ZOOM%) 10800IF X%<0 THEN X%=0 10810IF X%>1232 THEN X%=1232 10820IF Y%<0 THEN Y%=0 10830IF Y%>934 THEN Y%=934 10840IF NOT GRLO% THEN ENDPROC 10850XOF%=(GRWI%-GRBX%)*2 10860YOF%=(GRHE%-GRBY%)*4 10870X%+=XOF%:Y%+=YOF% 10880X%=-XOF%+((X% DIV (2*GRWI%))*2*GRWI%) 10890Y%=-YOF%+((Y% DIV (4*GRHE%))*4*GRHE%) 10900REM VDU4:PRINTTAB(0,1);X%,Y%,XOF%,YOF% 10910ENDPROC 10920 10930DEFPROCgetor 10940WOX%=BLK%!4-BLK%!20 10950WOY%=(BLK%!16-BLK%!24)-(936*ZOOM%) 10960ENDPROC 10970 10980DEFPROCgetbrushor 10990WOX%=BLK%!4-BLK%!20 11000WOY%=(BLK%!16-BLK%!24)-260 11010ENDPROC 11020 11030DEFPROCgetpatfillor 11040WOX%=BLK%!4-BLK%!20 11050WOY%=(BLK%!16-BLK%!24)-108 11060ENDPROC 11070 11080DEFPROCgetedbruor 11090WOX%=BLK%!4-BLK%!20 11100WOY%=(BLK%!16-BLK%!24)-640 11110ENDPROC 11120 11130DEFPROCopenmain:MOP%=TRUE 11140!BLK%=HAND%(2):BLK%!4=0:BLK%!8=300:BLK%!12=1279:BLK%!16=1023:BLK%!20=0:BLK%!24=0:BLK%!28=-1:SYS "Wimp_OpenWindow",,BLK% 11150ENDPROC 11160 11170DEFPROCopenpal 11180!BLK%=HAND%(3):BLK%!4=100:BLK%!8=300:BLK%!12=1279:BLK%!16=600:BLK%!20=0:BLK%!24=0:BLK%!28=-1:SYS "Wimp_OpenWindow",,BLK% 11190ENDPROC 11200 11210DEFPROCopenwind(WH%) 11220!BLK%=HAND%(WH%):SYS "Wimp_GetWindowInfo",,BLK% 11230BLK%!28=-1:SYS "Wimp_OpenWindow",,BLK% 11240ENDPROC 11250 11260DEFPROCclosewind(WH%) 11270!BLK%=HAND%(WH%):SYS "Wimp_CloseWindow",,BLK% 11280ENDPROC 11290 11300DEFPROCopmain 11310SYS "Wimp_OpenWindow",,BLK% 11320ENDPROC 11330 11340DEFPROCclmain:MOP%=FALSE 11350SYS "Wimp_CloseWindow",,BLK% 11360ENDPROC 11370 11380DEFPROCairnoz 11390H%=-1:FORL%=9 TO 15:IF FNhigh(4,L%) THEN H%=L%:L%=15 11400NEXT 11410CASE H% OF 11420WHEN 9:XR=1:YR=.25 11430WHEN 10:XR=1:YR=.5 11440WHEN 11:XR=1:YR=.75 11450WHEN 12:XR=1:YR=1 11460WHEN 13:XR=.75:YR=1 11470WHEN 14:XR=.5:YR=1 11480WHEN 15:XR=.25:YR=1 11490ENDCASE 11500ENDPROC 11510 11520DEFPROCpaintscale 11530!SCALE%=BXM% 11540SCALE%!4=BYM% 11550SCALE%!8=BXD% 11560SCALE%!12=BYD% 11570XR=BXM%/BXD% 11580YR=BYM%/BYD% 11590ENDPROC 11600 11610DEFPROCpaintscale2 11620!SCALE%=1 11630SCALE%!4=1 11640SCALE%!8=1 11650SCALE%!12=1 11660XR=1 11670YR=1 11680ENDPROC 11690 11700DEFPROCpicclick 11710IF MBUS% AND MOUB%<>0 THEN ENDPROC ELSE MBUS%=FALSE 11720CASE FUSE% OF 11730WHEN -1:IF MOUB%=1 THEN PROCpicpos:PROCinpic:CO%=POINT(X%,Y%):TI%=TINT(X%,Y%):GCOL3,63 TINT 192:PLOT69,400,400:PLOT69,400,400:PROCoutpic:PROCtrasp(FNfindpalent(CO%,TI%)):PROCforcedrawpal(PAL%):GOTO 12330 11740IF MOUB%=4 THEN PROCpicpos:PROCinpic:CO%=POINT(X%,Y%):TI%=TINT(X%,Y%):GCOL3,63 TINT 192:PLOT69,400,400:PLOT69,400,400:PROCoutpic:COL%=FNfindpalent(CO%,TI%):PROCforcedrawpal(PAL%):GOTO 12330 11750WHEN 0:PROCpicpos:PROCinpic:PROCsetcol:PLOT69,X%,Y%:PROCoutpic:PROCquickdrawmain 11760WHEN 3:PROCairnoz:IF H%=-1 THEN GOTO 12330 11770PROCpicpos:PROCinpic:PROCsetcol:D%=VAL(FNgeticon(4,1)):R%=VAL(FNgeticon(4,3)):FORL%=1 TO D%:A=RND(3600)/10:PLOT69,COS(RAD(A))*RND((R%*XR))+X%,SIN(RAD(A))*RND((R%*YR))+Y%:NEXT:PROCoutpic:PROCquickdrawmain 11780WHEN 4:PROCpaintscale:PROCinpic:PROCpicpos 11790IF FUST%<>0 THEN PROCeorback:PROCpaintbrush(OX%,OY%) 11800PROCsetbackcol:PROCpaintbrush(X%,Y%):OX%=X%:OY%=Y%:FUST%=1 11810PROCeorback:PROCpaintbrush(OX%,OY%) 11820PROCoutpic:PROCquickdrawmain 11830WHEN 24:IF MOUB%<>4 THEN GOTO 12330 11840PROCpicpos:PROCinpic:GCOL3,63 TINT 192:PLOT69,400,400:PLOT69,400,400:PROCsetcol:TCO%=POINT(X%-2,Y%):TTI%=TINT(X%-2,Y%):TPE%=FNfindpalent(TCO%,TTI%):IF TPE%=COL% THEN PROCoutpic:PROCmessage(0,"Cannot trace the colour you are using.") 11850PROCtrace(X%,Y%,TCO%,TTI%):PROCoutpic:PROCquickdrawmain 11860WHEN 26:IF MOUB%<>4 THEN ENDPROC 11870PROCinpic:VDU23,17,4,1,0|:FORL%=1 TO 4:VDU23,L%+1:FORK%=1 TO 8:VDU ECF%(K%,L%):NEXT:NEXT 11880PROCpicpos:GCOL0,POINT(X%,Y%)+128 TINT TINT(X%,Y%):PROCsetcol:SYS "Hourglass_On":FILL X%,Y%:SYS "Hourglass_Off":PROCoutpic:PROCquickdrawmain 11890WHEN 29:PROCpaintscale2:PROCinpic:PROCpicpos 11900IF FUST%<>0 THEN PROCeorback:PROCpaintbrush2(OX%,OY%) 11910VARS!20=BTC%:VARS!24=PALTAB% 11920VARS!28=PIC%:VARS!32=SPBUF% 11930VARS!36=X%-32:VARS!40=Y%-32 11940VARS!44=SELBR%:VARS!48=BRUSH% 11950A%=VARS:CALL averagebrush 11960GCOL3,63:RECTANGLE X%-32,Y%-32,64,64:RECTANGLE X%-32,Y%-32,64,64 11970OX%=X%:OY%=Y%:FUST%=1:PROCeorback:PROCpaintbrush2(OX%,OY%) 11980PROCoutpic:PROCquickdrawmain 11990WHEN 30:PROCpaintscale2:PROCinpic:PROCpicpos 12000IF FUST%<>0 THEN PROCeorback:PROCpaintbrush2(OX%,OY%) 12010VARS!20=BTC%:VARS!24=PALTAB% 12020VARS!28=PIC%:VARS!32=SPBUF% 12030VARS!36=X%-32:VARS!40=Y%-32 12040VARS!44=SELBR%:VARS!48=BRUSH% 12050VARS!84=PALTAB%?(COL%*2):VARS!88=PALTAB%?((COL%*2)+1) 12060A%=VARS:CALL tintbrush 12070GCOL3,63:RECTANGLE X%-32,Y%-32,64,64:RECTANGLE X%-32,Y%-32,64,64 12080OX%=X%:OY%=Y%:FUST%=1:PROCeorback:PROCpaintbrush2(OX%,OY%) 12090PROCoutpic:PROCquickdrawmain 12100WHEN 31:IF MOUB%<>4 OR GRTY%=1 THEN ENDPROC 12110PROCspinit:PROCspbuf(145*1024):IF Q% THEN PROCspbuferr 12120PROCbackuppic 12130PROCinbackup:PROCpicpos:FBC%=POINT(X%,Y%):FBT%=TINT(X%,Y%):GCOL0,FBC%+128 TINT FBT%:FUT%=(FBC%+1) MOD 64 12140GCOL0,FUT% TINT FBT%:SYS "Hourglass_On":FILL X%,Y%:PROCoutbackup 12150A%=VARS:B%=PIC%:C%=SPBUF%:CALL findchangebox 12160FMINX%=(!VARS)*2 12170FMINY%=(VARS!4)*4 12180FMAXX%=(VARS!8)*2 12190FMAXY%=(VARS!12)*4 12200PROCfill 12210SYS "Hourglass_Off" 12220WHEN 37:IF MOUB%<>4 THEN ENDPROC 12230PROCspinit:PROCspbuf(145*1024):IF Q% THEN PROCspbuferr 12240PROCbackuppic 12250PROCinbackup:PROCpicpos:FBC%=POINT(X%,Y%):FBT%=TINT(X%,Y%):GCOL0,FBC%+128 TINT FBT%:FUT%=(FBC%+1) MOD 64 12260GCOL0,FUT% TINT FBT%:SYS "Hourglass_On":FILL X%,Y%:PROCoutbackup 12270A%=VARS:B%=PIC%:C%=SPBUF%:CALL findchangebox 12280FMINX%=(!VARS)*2:FMINY%=(VARS!4)*4:FMAXX%=(VARS!8)*2:FMAXY%=(VARS!12)*4 12290VARS!4=PIC%:VARS!8=SPBUF%:VARS!12=PFILLS%:VARS!16=CPF% 12300CALL patfill 12310SYS"Hourglass_Off" 12320PROCspinit:PROCforcedrawmain 12330ENDCASE 12340ENDPROC 12350 12360DEFPROCfill 12370NOS%=VALFNgeticon(13,44) 12380NOF%=GRFN% 12390ET%=0 12400IF FNhigh(13,55) THEN ET%=1 12410IF FNhigh(13,56) THEN ET%=2 12420IF FNhigh(13,57) THEN ET%=3 12430IF FNhigh(13,58) THEN ET%=4 12440FIT%=-1 12450IF FNhigh(13,22) THEN FIT%=1 12460IF FNhigh(13,23) THEN FIT%=2 12470IF FNhigh(13,64) THEN FIT%=3 12480IF FNhigh(13,65) THEN FIT%=4 12490IF FNhigh(13,24) THEN FIT%=5 12500IF FNhigh(13,25) THEN FIT%=6 12510IF ET%=1 OR ET%=2 THEN FIT%=1 12520IF ET%=3 OR ET%=4 THEN FIT%=4 12530IF FIT%=-1 THEN PROCspinit:PROCmessage(0,"You must choose a type of fill.") 12540CASE FIT% OF 12550WHEN 1:FIW%=FMAXX%-FMINX%:FIFC%=0:LAFC%=255:FID%=1 12560WHEN 2:FIW%=FMAXX%-FMINX%:FIFC%=255:LAFC%=0:FID%=-1 12570WHEN 4:FIW%=FMAXY%-FMINY%:FIFC%=0:LAFC%=255:FID%=1 12580WHEN 3:FIW%=FMAXY%-FMINY%:FIFC%=255:LAFC%=0:FID%=-1 12590WHEN 5:FIFC%=0:LAFC%=255:FID%=1 12600WHEN 6:FIFC%=255:LAFC%=0:FID%=-1 12610ENDCASE 12620IF FIT%=5 OR FIT%=6 THEN 12630IF (FMAXX%-X%)>(X%-FMINX%) THEN XOF%=FMAXX%-X% ELSE XOF%=X%-FMINX% 12640IF (FMAXY%-Y%)>(Y%-FMINY%) THEN YOF%=FMAXY%-Y% ELSE YOF%=Y%-FMINY% 12650FIW%=SQR((XOF%^2)+(YOF%^2)) 12660ENDIF 12670CPP%=(255<<8) DIV FIW%:CPS%=(255<<8) DIV (NOS%-1) 12680I%=IO%:FORL%=0 TO 15:?I%=GRFI%(L%,0,NOF%):I%?1=GRFI%(L%,1,NOF%):I%+=2:NEXT 12690!VARS=PIC%:IF GRTY%=0 THEN VARS!4=SPBUF% ELSE VARS!4=PIC% 12700VARS!8=IO%:VARS!12=NOS%:VARS!16=FIFC%:VARS!20=LAFC%:VARS!24=FID%:VARS!28=CPP%:VARS!32=CPS%:VARS!36=X%:VARS!40=Y%:VARS!44=ROTTAB%:VARS!48=FIT%:VARS!52=FMINX%:VARS!56=FMINY%:VARS!60=FMAXX%:VARS!64=FMAXY% 12710VARS!68=RAND%:VARS!72=0 12720VARS!76=VALFNgeticon(13,39) 12730IF FNhigh(13,54) THEN VARS!80=1 ELSE VARS!80=0 12740VARS!84=ET%:VARS!88=TRASP%:VARS!92=GRTY%:VARS!96=BTC% 12750FORL%=0 TO 4092 STEP 4:RAND%!L%=RND(CPS%):NEXT 12760A%=VARS 12770CALL graduatedfill 12780PROCspinit:PROCforcedrawmain 12790ENDPROC 12800 12810DEFPROChg:SYS "Hourglass_Smash":ENDPROC 12820 12830DEFPROCswapcorns 12840IF X%(0)>OX% THEN SWAP X%(0),OX% 12850IF Y%(0)>OY% THEN SWAP Y%(0),OY% 12860ENDPROC 12870 12880DEFFNsamecol(x1%,y1%,col%,tin%):=(POINT(x1%,y1%)=col% AND TINT(x1%,y1%)=tin%) 12890 12900DEFPROCl(x1%,y1%,x2%,y2%):PLOT4,x1%,y1%:PLOT LITY%,x2%,y2%:ENDPROC 12910 12920DEFPROCr(x1%,y1%,x2%,y2%):PLOT4,x1%,y1%:PLOT LITY%-4,x2%,0:PLOT LITY%-4,0,y2%:PLOT LITY%-4,-x2%,0:PLOT LITY%-4,0,-y2%:ENDPROC 12930 12940DEFPROCtrace(X%,Y%,TCO%,TTI%) 12950SYS "Hourglass_On" 12960LOCAL dir%,x%,px%,py% 12970IF FNsamecol(X%,Y%,TCO%,TTI%) THEN PROCmessage(0,"Cannot trace from an adjacent pixel of the same colour.") 12980px%=X%:py%=Y% 12990dir%=3 13000PROCincdir 13010REPEAT 13020IF NOT FNsamecol(x%,y%,TCO%,TTI%) THEN PLOT69,x%,y%:px%=x%:py%=y%:PROCdecdir 13030PROCincdir 13040UNTIL x%=X% AND y%=Y% 13050PLOT69,x%,y% 13060SYS "Hourglass_Off" 13070ENDPROC 13080 13090DEFPROCincdir 13100dir%=(dir%+1)MOD4 13110CASE dir% OF 13120WHEN 0:x%=px%-2:y%=py% 13130WHEN 1:x%=px%:y%=py%+4 13140WHEN 2:x%=px%+2:y%=py% 13150WHEN 3:x%=px%:y%=py%-4 13160ENDCASE 13170ENDPROC 13180 13190DEFPROCdecdir 13200dir%=(dir%+2)MOD4 13210ENDPROC 13220 13230DEFFNfindpalent(CO%,TI%) 13240=CTT%?((CO%*4)+(TI% DIV 64)) 13250 13260DEFPROCsetcol:GCOL USE%,PALTAB%?(COL%*2) TINT PALTAB%?((COL%*2)+1):ENDPROC 13270 13280DEFPROCsetbackcol:GCOL USE%,(PALTAB%?(COL%*2))+128 TINT PALTAB%?((COL%*2)+1):ENDPROC 13290 13300DEFPROCcol(C%,T%,U%) 13310SYS&35,-1,9 TO ,,BP% 13320IF BP%=3 THEN GCOLU%,C% TINT T%:ENDPROC 13330R%=((C% AND %11)*4)+(T% DIV 64):R%+=(R%<<4) 13340G%=(((C% AND %1100)>>2)*4)+(T% DIV 64):G%+=(G%<<4) 13350B%=(((C% AND %110000)>>4)*4)+(T% DIV 64):B%+=(B%<<4) 13360SYS "ColourTrans_SetGCOL",((B%<<24)+(G%<<16)+(R%<<8)),,,,U% 13370ENDPROC 13380 13390DEFPROCanticol(C%,T%,U%) 13400R%=((C% AND %11)*4)+(T% DIV 64):R%+=(R%<<4) 13410G%=(((C% AND %1100)>>2)*4)+(T% DIV 64):G%+=(G%<<4) 13420B%=(((C% AND %110000)>>4)*4)+(T% DIV 64):B%+=(B%<<4) 13430SYS "ColourTrans_ReturnOppGCOLForMode",((B%<<24)+(G%<<16)+(R%<<8)),15 TO GC% 13440GCOL U%,(GC%>>2) TINT (GC% AND %11)*64 13450ENDPROC 13460 13470DEFPROCgridcol 13480PROCcol(GRCO%,GRTI%,0) 13490ENDPROC 13500 13510DEFPROCmakerr 13520SYS "Wimp_DragBox",,0 13530!BLK%=ERR 13540ER=TRUE 13550CASE ERR OF 13560WHEN 222:$(BLK%+4)="File cannot be found"+CHR$(0):ER=FALSE 13570OTHERWISE 13580$(BLK%+4)="Archrome has suffered a serious internal error ("+STR$ERR+"/"+STR$ERL+") You should save your work and re-start as soon as possible."+CHR$(0) 13590ENDCASE 13600SYS "Wimp_ReportError",BLK%,1,"Archrome" 13610PROCaction:END 13620ENDPROC 13630 13640DEFPROCmessage(M%,M$):PROCoutpic 13650SYS "Wimp_DragBox",,0:!BLK%=M%:$(BLK%+4)=M$+CHR$(0):SYS "Wimp_ReportError",BLK%,1,"Archrome" 13660PROCforcedrawmain 13670PROCaction:END 13680ENDPROC 13690 13700DEFPROCmouse 13710MOUX%=!BLK%:MOUY%=BLK%!4:MOUB%=BLK%!8:MOUH%=BLK%!12:MOUIC%=BLK%!16 13720CASE MOUB% OF 13730WHEN 4,1:CASE MOUH% OF 13740WHEN -2:PROCopenmain 13750WHEN HAND%(0):IF BLK%!16=2 THEN PROCsaveok 13760WHEN HAND%(7):IF BLK%!16=2 THEN PROCspritesaveok 13770WHEN HAND%(2):PROCpicclick 13780WHEN HAND%(3):PROCpickcol 13790WHEN HAND%(4):PROCairbclick 13800WHEN HAND%(5):PROCbrushclick 13810WHEN HAND%(6):PROCgridclick 13820WHEN HAND%(8):PROCgrabclick 13830WHEN HAND%(10):PROClinepatclick 13840WHEN HAND%(11):PROCecfclick 13850WHEN HAND%(12):PROCedbruclick 13860WHEN HAND%(13):PROCfillclick 13870WHEN HAND%(14):PROCtextclick 13880WHEN HAND%(15):PROCtbackclick 13890WHEN HAND%(16):PROCtparclick 13900WHEN HAND%(17):PROCfillcontclick 13910WHEN HAND%(18):PROCcolrepclick 13920WHEN HAND%(19):PROCframeclick 13930WHEN HAND%(20):PROCpatfillclick 13940WHEN HAND%(21):PROCrgbcontclick 13950WHEN HAND%(22):PROCgreyscaleclick 13960WHEN HAND%(23):PROCpixelateclick 13970WHEN HAND%(24):PROCrotateclick 13980ENDCASE 13990WHEN 2:IF MOUH%=-2 THEN PROCiconmenu ELSE IF MOUH%=HAND%(2) THEN PROCwindmenu 14000WHEN 16,64:IF MOUH%=HAND%(0) THEN DRAG%=0:PROCstartdrag 14010IF MOUH%=HAND%(7) THEN DRAG%=7:PROCstartdrag 14020ENDCASE 14030ENDPROC 14040 14050DEFPROCrotateclick 14060IF MOUIC%<>1 AND MOUIC%<3 THEN ENDPROC 14070IF FUST%>=2 THEN PROCinpic:PROCprotbox(OX%,OY%) 14080IF MOUIC%=1 THEN ROT%-=1:IF ROT%<0 THEN ROT%+=360 14090IF MOUIC%=3 THEN ROT%=(ROT%+1)MOD360 14100IF MOUIC%=4 THEN ROT%-=10:IF ROT%<0 THEN ROT%+=360 14110IF MOUIC%=5 THEN ROT%=(ROT%+10)MOD360 14120IF FUST%>=2 THEN PROCprotbox(OX%,OY%):PROCoutpic:PROCquickdrawmain 14130PROCseticon(24,2,STR$ROT%) 14140ENDPROC 14150 14160DEFPROCrgbcontclick 14170RP%=FNperc(21,4):GP%=FNperc(21,7):BP%=FNperc(21,10) 14180IRP%=RP%:IGP%=GP%:IBP%=BP% 14190IF MOUIC%=3 THEN RP%-=1:IF RP%<0 THEN RP%=0 14200IF MOUIC%=5 THEN RP%+=1:IF RP%>200 THEN RP%=200 14210IF MOUIC%=6 THEN GP%-=1:IF GP%<0 THEN GP%=0 14220IF MOUIC%=8 THEN GP%+=1:IF GP%>200 THEN GP%=200 14230IF MOUIC%=9 THEN BP%-=1:IF BP%<0 THEN BP%=0 14240IF MOUIC%=11 THEN BP%+=1:IF BP%>200 THEN BP%=200 14250IF RP%<>IRP% THEN PROCseticon(21,4,STR$(RP%)+"%") 14260IF GP%<>IGP% THEN PROCseticon(21,7,STR$(GP%)+"%") 14270IF BP%<>IBP% THEN PROCseticon(21,10,STR$(BP%)+"%") 14280ENDPROC 14290 14300DEFPROCgreyscaleclick 14310PROCarrows(22,3,5,4,0,9,1):PROCarrows(22,6,8,7,0,9,1):PROCarrows(22,9,11,10,0,9,1) 14320ENDPROC 14330 14340DEFPROCpixelateclick 14350PROCarrows(23,2,4,3,1,100,1):PROCarrows(23,5,7,6,1,100,1) 14360ENDPROC 14370 14380DEFPROCframeclick 14390PROCarrows(19,5,7,3,1,618,1):PROCarrows(19,6,8,4,1,234,1) 14400IF MOUIC%<>2 THEN ENDPROC 14410PROCkillf 14420V%=VALFNgeticon(19,3):IF V%<1 THEN V%=1 14430IF V%>618 THEN V%=618 14440PROCseticon(19,3,STR$V%) 14450W%=VALFNgeticon(19,4):IF W%<1 THEN W%=1 14460IF W%>234 THEN W%=618 14470PROCseticon(19,4,STR$W%) 14480FRW%=V%+1:FRH%=W%+1:FUSE%=36:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [Set frame]") 14490IF MOUB%=4 THEN PROCmenoff 14500ENDPROC 14510 14520DEFPROCcolrepclick 14530IF MOUIC%=3 THEN SYS "Hourglass_On":FORL%=0 TO 22596 STEP 4:SPBUF%!L%=OPAL%!L%:NEXT:FORL%=0 TO 255:REPS%?L%=L%:NEXT:SYS "Hourglass_Off":PROCforcedrawcolrep:ENDPROC 14540BLK%!8=HAND%(18):SYS "Wimp_GetWindowState",,BLK%+8 14550XOF%=(!BLK%)-((BLK%!12)-(BLK%!28)):IF XOF%>766 THEN XOF%=766 14560YOF%=(BLK%!4)-(((BLK%!24)-(BLK%!32))-556):IF YOF%>550 THEN YOF%=550 14570REM VDU4:PRINT XOF%,YOF% 14580IF YOF%<=220 THEN SREP%=(XOF% DIV 24)+((YOF% DIV 28)*32):PROCforcedrawcolrep 14590IF YOF%>=290 AND YOF%<514 THEN 14600YOF%-=290:C%=(XOF% DIV 24)+((YOF% DIV 28)*32):PROCinsprite(0,SPBUF%,"Palette"):FX%=((SREP% MOD 32)*24)+2:FY%=((SREP% DIV 32)*28)+4:GCOL0,PALTAB%?(C%*2) TINT PALTAB%?((C%*2)+1) 14610RECTANGLE FILL FX%,FY%,20,20:PROCoutsprite:REPS%?SREP%=C%:PROCforcedrawcolrep 14620ENDIF 14630ENDPROC 14640 14650DEFPROCarrows(W%,DI%,UI%,TI%,LV%,UV%,I%) 14660V%=VALFNgeticon(W%,TI%):OV%=V% 14670IF MOUIC%=DI% THEN V%-=I%:IF V%<LV% THEN V%=LV% 14680IF MOUIC%=UI% THEN V%+=I%:IF V%>UV% THEN V%=UV% 14690IF V%<>OV% THEN PROCseticon(W%,TI%,STR$(V%)) 14700ENDPROC 14710 14720DEFPROCtparclick 14730PROCarrows(16,6,18,12,0,1024,8):PROCarrows(16,7,19,13,0,999,1):PROCarrows(16,8,20,14,0,999,1):PROCarrows(16,9,21,15,0,999,1):PROCarrows(16,10,22,16,0,999,1):PROCarrows(16,11,23,17,0,999,1) 14740IF MOUIC%=24 THEN SYS "Font_SetFontMax",(VALFNgeticon(16,12))*1024,(VALFNgeticon(16,13))*1152,(VALFNgeticon(16,14))*1152,(VALFNgeticon(16,15))*1152,(VALFNgeticon(16,16))*1152,(VALFNgeticon(16,17))*1152 14750IF MOUIC%=24 AND MOUB%=4 THEN PROCmenoff 14760IF MOUIC%=25 THEN 14770OSCLI("Configure FontMax "+FNgeticon(16,12)+"K"):OSCLI("Configure FontMax1 "+FNgeticon(16,13)):OSCLI("Configure FontMax2 "+FNgeticon(16,14)):OSCLI("Configure FontMax3 "+FNgeticon(16,15)):OSCLI("Configure FontMax4 "+FNgeticon(16,16)) 14780OSCLI("Configure FontMax5 "+FNgeticon(16,17)) 14790ENDIF 14800ENDPROC 14810 14820DEFPROClosefont 14830IF FONT%<>0 THEN PROCinpic:SYS "Font_LoseFont",FHAND%:PROCoutpic 14840ENDPROC 14850 14860DEFPROCgetfont 14870IF VALFNgeticon(14,4)<6 THEN PROCseticon(14,4,"6") 14880IF VALFNgeticon(14,5)<6 THEN PROCseticon(14,5,"6") 14890FONTX%=VALFNgeticon(14,4):FONTY%=VALFNgeticon(14,5) 14891REM VDU4:PRINT'FONT%,FO$,FONTX%,FONTY%," 14900" 14892REM END 14900IF FONT%<>0 THEN PROCinpic:SYS "Font_FindFont",,FO$,FONTX%*16,FONTY%*16 TO FHAND%:PROCoutpic 14910ENDPROC 14920 14930DEFPROCrestpic 14940PROCinpic 14950SYS&2E,290,SPBUF%,"PIC" 14960PROCoutpic 14970ENDPROC 14980 14990DEFPROCtextclick 15000IF MOUIC%<>6 THEN GOTO 15030 15010V%=VALFNgeticon(14,4):V%-=1:IF V%<6 THEN V%=6 15020PROCseticon(14,4,STR$V%) 15030IF MOUIC%<>7 THEN GOTO 15060 15040V%=VALFNgeticon(14,4):V%+=1:IF V%>999 THEN V%=999 15050PROCseticon(14,4,STR$V%) 15060IF MOUIC%<>8 THEN GOTO 15090 15070V%=VALFNgeticon(14,5):V%-=1:IF V%<6 THEN V%=6 15080PROCseticon(14,5,STR$V%) 15090IF MOUIC%<>9 THEN GOTO 15120 15100V%=VALFNgeticon(14,5):V%+=1:IF V%>999 THEN V%=999 15110PROCseticon(14,5,STR$V%) 15120IF MOUIC%<>12 THEN ENDPROC 15121REM VDU4:PRINT FONT%,FUST%,FO$ 15130IF FONT%<>0 THEN 15140IF FUST%<>0 THEN PROCrestpic:PROClosefont:PROCforcedrawmain 15150PROCgetfont 15151REM GOTO 15230 15160TEXT$=FNgeticon(14,11):IF TEXT$="" THEN TEXT$=" " 15170FCOL%=PALTAB%?(COL%*2):FTIN%=PALTAB%?((COL%*2)+1):FTIN%=FTIN%>>2 15180FPAL%=((((FCOL% AND %11)<<6)+FTIN%)<<8)+((((FCOL% AND %1100)<<4)+FTIN%)<<16)+((((FCOL% AND %110000)<<2)+FTIN%)<<24) 15190FCOL%=PALTAB%?(FONTB%*2):FTIN%=PALTAB%?((FONTB%*2)+1):FTIN%=FTIN%>>2 15200BPAL%=((((FCOL% AND %11)<<6)+FTIN%)<<8)+((((FCOL% AND %1100)<<4)+FTIN%)<<16)+((((FCOL% AND %110000)<<2)+FTIN%)<<24) 15201REM GOTO 15230 15210PROCinpic:SYS "ColourTrans_SetFontColours",FHAND%,BPAL%,FPAL%,14:PROCoutpic:EFM%=MODE 15220FUST%=1:OX%=-1:OY%=-1 15230ELSE 15240IF FUST%<>0 THEN PROCrestpic:PROCforcedrawmain 15250TEXT$=FNgeticon(14,11):IF TEXT$="" THEN TEXT$=" " 15260FUST%=1:OX%=-1:OY%=-1:TCOL%=COL%:TBAK%=FONTB% 15270IF VALFNgeticon(14,4)<1 THEN PROCseticon(14,4,"1") 15280IF VALFNgeticon(14,5)<1 THEN PROCseticon(14,5,"1") 15290FONTX%=VALFNgeticon(14,4):FONTY%=VALFNgeticon(14,5) 15300!IO%=FONTX%:IO%!4=FONTY% 15310IO%!8=8:IO%!12=8 15320ENDIF 15330ENDPROC 15340 15350DEFPROCostext(TX%,TY%) 15360LOCAL L% 15370TT%=0 15380IF FNhigh(14,14) THEN TT%=1 15390IF FNhigh(14,15) THEN TT%=2 15400IF FNhigh(14,16) THEN TT%=3 15410FCOL%=PALTAB%?(TCOL%*2):FTIN%=PALTAB%?((TCOL%*2)+1) 15420BCOL%=PALTAB%?(TBAK%*2):BTIN%=PALTAB%?((TBAK%*2)+1) 15430CASE TT% OF 15440WHEN 0:PROCcol(FCOL%,FTIN%,0):FORL%=1 TO LEN(TEXT$):SYS&2E,51,ASC(MID$(TEXT$,L%,1)),,TX%,TY%,,IO%:TX%+=FONTX%*2:NEXT 15450WHEN 2:PROCcol(BCOL%,BTIN%,0):OTX%=TX%:FORL%=1 TO LEN(TEXT$):SYS&2E,51,ASC(MID$(TEXT$,L%,1)),,TX%,TY%,,IO%:TX%+=FONTX%*2:NEXT:TX%=OTX%+2:TY%+=4 15460FORL%=1 TO LEN(TEXT$):SYS&2E,51,ASC(MID$(TEXT$,L%,1)),,TX%,TY%,,IO%:TX%+=FONTX%*2:NEXT:TX%=OTX%+4:TY%+=4 15470PROCcol(FCOL%,FTIN%,0):FORL%=1 TO LEN(TEXT$):SYS&2E,51,ASC(MID$(TEXT$,L%,1)),,TX%,TY%,,IO%:TX%+=FONTX%*2:NEXT 15480WHEN 1:PROCcol(BCOL%,BTIN%,0):OTX%=TX%:FORCX%=TX%-(FONTX% DIV4) TO TX%+(FONTX% DIV4) STEP (FONTX% DIV 4):FORCY%=TY%-(FONTY% DIV 2) TO TY%+(FONTY% DIV2) STEP (FONTY% DIV2):TX%=CX%:FORL%=1 TO LEN(TEXT$):SYS&2E,51,ASC(MID$(TEXT$,L%,1)),,TX%,CY%,,IO%:TX%+=FONTX%*2:NEXT:NEXT:NEXT 15490PROCcol(FCOL%,FTIN%,0):TX%=OTX%:FORL%=1 TO LEN(TEXT$):SYS&2E,51,ASC(MID$(TEXT$,L%,1)),,TX%,TY%,,IO%:TX%+=FONTX%*2:NEXT 15500WHEN 3:PROCcol(BCOL%,BTIN%,0):RECTANGLE FILL X%,Y%,(LEN(TEXT$))*(FONTX%*2),FONTY%*4:PROCcol(FCOL%,FTIN%,0) 15510FORL%=1 TO LEN(TEXT$):SYS&2E,51,ASC(MID$(TEXT$,L%,1)),,TX%,TY%,,IO%:TX%+=FONTX%*2:NEXT 15520ENDCASE 15530ENDPROC 15540 15550DEFPROCedbruclick 15560IF FUSE%=4 THEN PROCkillf:PROCwindname(2,PIC$):PROCspinit:FUSE%=-1 15570IF MOUIC%>=0 AND MOUIC%<=11 THEN EDBR%=MOUIC%+1:PROCforcedrawedbru(0,-640,1024,0):ENDPROC 15580IF MOUIC%=13 THEN SYS&2E,303,BRUSH%,STR$EDBR%:PROCforcedrawedbru(0,-640,1024,0):ENDPROC 15590IF MOUIC%=14 THEN SYS&2E,289,BRUSH%,STR$EDBR%:PROCforcedrawedbru(0,-640,1024,0):ENDPROC 15600IF MOUIC%<>15 THEN GOTO 15630 15610PROCinsprite(0,BRUSH%,STR$EDBR%):GCOL3,63 TINT 192:RECTANGLE FILL 0,0,62,60:PROCoutsprite:PROCinsprite(1,BRUSH%,STR$EDBR%):GCOL3,63 TINT 192:RECTANGLE FILL 0,0,62,60:PROCoutsprite 15620PROCforcedrawedbru(0,-640,1024,0):ENDPROC 15630IF MOUIC%<>16 THEN GOTO 15660 15640FORL%=0 TO 1:PROCinsprite(L%,BRUSH%,STR$EDBR%):PLOT4,0,0:PLOT4,60,60:PLOT189,2,0:PROCoutsprite:NEXT 15650PROCforcedrawedbru(0,-640,1024,0):ENDPROC 15660IF MOUIC%<>17 THEN GOTO 15690 15670FORL%=0 TO 1:PROCinsprite(L%,BRUSH%,STR$EDBR%):PLOT4,2,0:PLOT4,60,60:PLOT189,0,0:PROCoutsprite:NEXT 15680PROCforcedrawedbru(0,-640,1024,0):ENDPROC 15690IF MOUIC%<>18 THEN GOTO 15720 15700FORL%=0 TO 1:PROCinsprite(L%,BRUSH%,STR$EDBR%):PLOT4,0,0:PLOT4,62,56:PLOT189,0,4:PROCoutsprite:NEXT 15710PROCforcedrawedbru(0,-640,1024,0):ENDPROC 15720IF MOUIC%<>19 THEN GOTO 15750 15730FORL%=0 TO 1:PROCinsprite(L%,BRUSH%,STR$EDBR%):PLOT4,0,4:PLOT4,62,60:PLOT189,0,0:PROCoutsprite:NEXT 15740PROCforcedrawedbru(0,-640,1024,0):ENDPROC 15750IF MOUIC%<>12 THEN GOTO 15780 15760FORL%=0 TO 1:PROCinsprite(L%,BRUSH%,STR$EDBR%):GCOL0,0 TINT 0:RECTANGLE FILL 0,0,62,60:PROCoutsprite:NEXT 15770PROCforcedrawedbru(0,-640,1024,0):ENDPROC 15780IF MOUIC%=20 THEN SYS&2E,268,BRUSH%,"<Archrome$Dir>.Brushes":PROCmenoff:ENDPROC 15790IF MOUIC%=21 THEN SYS&2E,266,BRUSH%,"<Archrome$Dir>.Brushes":PROCforcedrawedbru(0,-640,1024,0):ENDPROC 15800BLK%!8=HAND%(12):SYS "Wimp_GetWindowState",,BLK%+8 15810XOF%=((!BLK%)-(BLK%!12))-28:IF XOF%>766 OR XOF%<0 THEN ENDPROC 15820YOF%=((BLK%!4)-(BLK%!16))-112:IF YOF%>508 OR YOF%<0 THEN ENDPROC 15830XOF%=XOF% DIV 24:YOF%=YOF% DIV 32 15840IF MOUB%=4 THEN SYS&2E,298,BRUSH%,STR$EDBR%,XOF%,YOF%,63,192:SYS&2E,300,BRUSH%,STR$EDBR%,XOF%,YOF%,1 15850IF MOUB%=1 THEN SYS&2E,298,BRUSH%,STR$EDBR%,XOF%,YOF%:SYS&2E,300,BRUSH%,STR$EDBR%,XOF%,YOF% 15860IF MOUB%<>1 AND MOUB%<>4 THEN ENDPROC 15870PROCforcedrawedbru((XOF%*24)+28,-(((15-YOF%)*32)+48),(XOF%*24)+52,-(((15-YOF%)*32)+16)) 15880PROCforcedrawedbru(((EDBR%-1)*64)+32,-620,((EDBR%-1)*64)+96,-560) 15890ENDPROC 15900 15910DEFPROCecfclick 15920IF MOUIC%>17 AND MOUIC%<22 THEN PROCforcedrawpat:ENDPROC 15930IF MOUIC%<>16 THEN ENDPROC 15940IF MOUB%<>1 AND MOUB%<>4 THEN ENDPROC 15950BLK%!8=HAND%(11):SYS "Wimp_GetWindowState",,BLK%+8 15960XOF%=((!BLK%)-(BLK%!12))-180:IF XOF%>766 THEN XOF%=766 15970YOF%=((BLK%!4)-(BLK%!16))-20:IF YOF%>220 THEN YOF%=220 15980col%=(XOF% DIV 24)+((YOF% DIV 28)*32) 15990cby%=TTB%?col% 16000CECF%=FNcecf:L%=0:FORK%=8 TO 15:IF FNhigh(11,K%) THEN L%=K%-7:NEXT ELSE NEXT 16010IF L%=0 THEN ENDPROC 16020ECF%(L%,CECF%)=cby% 16030PROCforcedrawpat 16040ENDPROC 16050 16060DEFPROCreloadpatfills 16070SYS&2E,266,PFILLS%,"<Archrome$Dir>.PatFills" 16080ENDPROC 16090 16100DEFPROCpatfillclick 16110IF MOUIC%=0 THEN PROCreloadpatfills:ENDPROC 16120BLK%!8=HAND%(20):SYS "Wimp_GetWindowState",,BLK%+8 16130XOF%=((!BLK%)-(BLK%!12)):YOF%=((BLK%!4)-(BLK%!16)) 16140K%=-1:FORL%=1 TO 12:BX%=((L%-1)*84)+24:BY%=52:IF XOF%>=BX% AND YOF%>=BY% AND XOF%<(BX%+64) AND YOF%<(BY%+64) THEN K%=L%:NEXT ELSE NEXT 16150IF K%=-1 THEN ENDPROC ELSE CPF%=K%:PROCforcedrawpatfill 16160ENDPROC 16170 16180DEFPROCsavegrfills 16190F%=OPENOUT("<Archrome$Dir>.GradFills") 16200FORL%=0 TO 15:FORK%=0 TO 1:FORI%=0 TO 4:PRINT#F%,GRFI%(L%,K%,I%):NEXT:NEXT:NEXT 16210CLOSE#F% 16220ENDPROC 16230 16240DEFPROCloadgrfills 16250F%=OPENIN("<Archrome$Dir>.GradFills") 16260FORL%=0 TO 15:FORK%=0 TO 1:FORI%=0 TO 4:INPUT#F%,GRFI%(L%,K%,I%):NEXT:NEXT:NEXT 16270CLOSE#F% 16280PROCforcedrawfill 16290ENDPROC 16300 16310DEFPROCfilluse 16320SNO%=FNgrafilno:IF SNO%=-1 THEN ENDPROC 16330PROCkillf:FUSE%=31:FUST%=0:GRFN%=SNO%:GRTY%=0:PROChelp:PROCwindname(2,PIC$+" [Graduated fill ("+FNfilldet(SNO%+1)+")]"):PROCspinit 16340IF MOUB%=4 THEN PROCmenoff 16350ENDPROC 16360 16370DEFFNfilldet(S%):IF GRTY%=0 THEN ="flood "+STR$S% ELSE ="area "+STR$S% 16380 16390DEFPROCinvertfill 16400NOS%=FNgrafilno 16410IA%=0:IB%=VALFNgeticon(13,44):IB%-=1 16420REPEAT:SWAP GRFI%(IA%,0,NOS%),GRFI%(IB%,0,NOS%):SWAP GRFI%(IA%,1,NOS%),GRFI%(IB%,1,NOS%):IA%+=1:IB%-=1:UNTIL IA%>IB% 16430PROCforcedrawfill 16440ENDPROC 16450 16460DEFPROCinterpfill 16470NOS%=FNgrafilno 16480IA%=0:REPEAT:IB%=IA%+1 16490IF IB%=16 THEN PROCforcedrawfill:ENDPROC 16500IF GRFI%(IB%,0,NOS%)=0 AND GRFI%(IB%,1,NOS%)=0 THEN IB%+=1:GOTO 16490 16510IF IB%=IA%+1 THEN IA%=IB%:IB%+=1:GOTO 16490 16520T1%=GRFI%(IA%,1,NOS%)>>6 16530R1%=((GRFI%(IA%,0,NOS%) AND %11)<<2)+T1% 16540G1%=(GRFI%(IA%,0,NOS%) AND %1100)+T1% 16550B1%=((GRFI%(IA%,0,NOS%) AND %110000)>>2)+T1% 16560T2%=GRFI%(IB%,1,NOS%)>>6 16570RD=((((GRFI%(IB%,0,NOS%) AND %11)<<2)+T2%)-R1%)/(IB%-IA%) 16580GD=(((GRFI%(IB%,0,NOS%) AND %1100)+T2%)-G1%)/(IB%-IA%) 16590BD=((((GRFI%(IB%,0,NOS%) AND %110000)>>2)+T2%)-B1%)/(IB%-IA%) 16600IA%+=1:FORL%=1 TO IB%-IA% 16610R%=R1%+(RD*L%):G%=G1%+(GD*L%):B%=B1%+(BD*L%) 16620SYS "ColourTrans_ReturnGCOLForMode",(B%<<28)+(G%<<20)+(R%<<12),15 TO G% 16630GRFI%(IA%,0,NOS%)=G%>>2:GRFI%(IA%,1,NOS%)=(G% AND %11)<<6 16640IA%+=1:NEXT 16650IB%=IA%+1:GOTO 16490 16660 16670DEFPROCwipefill 16680NOS%=FNgrafilno 16690FORL%=0 TO 15:FORK%=0 TO 1:GRFI%(L%,K%,NOS%)=0:NEXT:NEXT 16700PROCforcedrawfill:ENDPROC 16710 16720DEFPROCcompfill 16730NOS%=FNgrafilno 16740CA%=GRFI%(0,0,NOS%):TA%=GRFI%(0,1,NOS%):IA%=1:IB%=1 16750WHILE IB%<16 16760IF GRFI%(IB%,0,NOS%)<>CA% OR GRFI%(IB%,1,NOS%)<>TA% THEN GRFI%(IA%,0,NOS%)=GRFI%(IB%,0,NOS%):GRFI%(IA%,1,NOS%)=GRFI%(IB%,1,NOS%):CA%=GRFI%(IA%,0,NOS%):TA%=GRFI%(IA%,1,NOS%):IA%+=1 16770IB%+=1:ENDWHILE 16780WHILE IA%<16:GRFI%(IA%,0,NOS%)=0:GRFI%(IA%,1,NOS%)=0:IA%+=1:ENDWHILE 16790PROCforcedrawfill 16800ENDPROC 16810 16820DEFPROCfillclick 16830IF MOUIC%<0 THEN GOTO 17510 16840IF MOUIC%=51 THEN PROCsavegrfills 16850IF MOUIC%=50 THEN PROCloadgrfills 16860IF MOUIC%=52 THEN PROCfilluse:ENDPROC 16870IF MOUIC%=60 THEN PROCinvertfill:ENDPROC 16880IF MOUIC%=61 THEN PROCinterpfill:ENDPROC 16890IF MOUIC%=62 THEN PROCwipefill:ENDPROC 16900IF MOUIC%=63 THEN PROCcompfill:ENDPROC 16910IF MOUIC%>=0 AND MOUIC%<=15 THEN PROCsetgradfill:ENDPROC 16920IF MOUIC%>=17 AND MOUIC%<=21 THEN PROCforcedrawfill:ENDPROC 16930IF MOUIC%<>40 THEN GOTO 16960 16940FILR%=FILR%-1:IF FILR%<0 THEN FILR%=359 16950PROCseticon(13,39,STR$FILR%):ENDPROC 16960IF MOUIC%<>41 THEN GOTO 16990 16970FILR%=FILR%+1:IF FILR%>359 THEN FILR%=0 16980PROCseticon(13,39,STR$FILR%):ENDPROC 16990IF MOUIC%<>43 THEN GOTO 17020 17000NOS%=VALFNgeticon(13,44):IF NOS%=2 THEN ENDPROC 17010PROCshadeicon(13,FNfilic(NOS%-1)):NOS%-=1:PROCseticon(13,44,STR$(NOS%)):ENDPROC 17020IF MOUIC%<>45 THEN GOTO 17050 17030NOS%=VALFNgeticon(13,44):IF NOS%=16 THEN ENDPROC 17040PROCclearicon(13,FNfilic(NOS%)):NOS%+=1:PROCseticon(13,44,STR$(NOS%)):ENDPROC 17050 17060ENDPROC 17070 17080DEFPROCsetgradfill 17090SNO%=FNgrafilno 17100CASE MOUIC% OF 17110WHEN 0:RESTORE 17340 17120WHEN 1:RESTORE 17350 17130WHEN 2:RESTORE 17360 17140WHEN 3:RESTORE 17370 17150WHEN 4:RESTORE 17380 17160WHEN 5:RESTORE 17390 17170WHEN 6:RESTORE 17400 17180WHEN 7:RESTORE 17420 17190WHEN 8:RESTORE 17430 17200WHEN 9:RESTORE 17440 17210WHEN 10:RESTORE 17450 17220WHEN 11:RESTORE 17410 17230WHEN 12:RESTORE 17460 17240WHEN 13:RESTORE 17470 17250WHEN 14:RESTORE 17480 17260WHEN 15:RESTORE 17490 17270ENDCASE 17280FORL%=0 TO 15:PROCshadeicon(13,FNfilic(L%)):FORK%=0 TO 1:GRFI%(L%,K%,SNO%)=0:NEXT:NEXT 17290READ S%:FORL%=0 TO S%-1:PROCclearicon(13,FNfilic(L%)):FORK%=0 TO 1:READ GRFI%(L%,K%,SNO%):NEXT:NEXT 17300PROCseticon(13,44,STR$S%) 17310PROCforcedrawfill 17320ENDPROC 17330 17340DATA 12, 1,0,1,64,1,128,1,192,2,0,2,64,2,128,2,192,3,0,3,64,3,128,3,192 17350DATA 12, 4,0,4,64,4,128,4,192,8,0,8,64,8,128,8,192,12,0,12,64,12,128,12,192 17360DATA 12, 5,0,5,64,5,128,5,192,10,0,10,64,10,128,10,192,15,0,15,64,15,128,15,192 17370DATA 12, 16,0,16,64,16,128,16,192,32,0,32,64,32,128,32,192,48,0,48,64,48,128,48,192 17380DATA 12, 17,0,17,64,17,128,17,192,34,0,34,64,34,128,34,192,51,0,51,64,51,128,51,192 17390DATA 12, 20,0,20,64,20,128,20,192,40,0,40,64,40,128,40,192,60,0,60,64,60,128,60,192 17400DATA 15, 0,64,0,128,0,192,21,0,21,64,21,128,21,192,42,0,42,64,42,128,42,192,63,0,63,64,63,128,63,192 17410DATA 12, 1,0,1,64,1,128,1,192,6,0,6,64,6,128,6,192,27,0,27,64,27,128,27,192 17420DATA 8, 18,0,18,64,18,128,18,192,39,0,39,64,39,128,39,192 17430DATA 8, 2,0,2,64,2,128,2,192,7,0,7,64,7,128,7,192 17440DATA 12, 17,0,17,64,17,128,17,192,38,0,38,64,38,128,38,192,59,0,59,64,59,128,59,192 17450DATA 12, 5,0,5,64,5,128,5,192,10,0,26,64,26,128,26,192,47,0,47,64,47,128,47,192 17460DATA 12, 20,0,20,64,20,128,20,192,41,0,41,64,41,128,41,192,62,0,62,64,62,128,62,192 17470DATA 12, 1,0,1,64,1,128,1,192,22,0,22,64,22,128,22,192,43,0,43,64,43,128,43,192 17480DATA 8, 9,0,9,64,9,128,9,192,14,0,14,64,14,128,14,192,0 17490DATA 8, 21,0,21,64,21,128,21,192,42,0,42,64,42,128,42,192 17500 17510BLK%!8=HAND%(13):SYS "Wimp_GetWindowState",,BLK%+8 17520XOF%=((!BLK%)-(BLK%!12))-422:IF XOF%>766 OR XOF%<0 THEN ENDPROC 17530YOF%=((BLK%!4)-(BLK%!16))-236:IF YOF%>220 OR YOF%<0 THEN ENDPROC 17540col%=(XOF% DIV 24)+((YOF% DIV 28)*32) 17550tin%=PALTAB%?((col%*2)+1) 17560col%=PALTAB%?(col%*2) 17570FPE%=-1:FORL%=0 TO 15:IF FNhigh(13,FNfilic(L%)) THEN FPE%=L%:NEXT ELSE NEXT 17580SNO%=FNgrafilno 17590IF FPE%=-1 OR SNO%=-1 THEN ENDPROC 17600GRFI%(FPE%,0,SNO%)=col%:GRFI%(FPE%,1,SNO%)=tin%:PROCforcedrawfill 17610ENDPROC 17620 17630DEFFNfilic(FSN%):IF FSN%<=11 THEN =FSN%+26 ELSE =(FSN%-12)+46 17640 17650DEFPROClinepatclick 17660CASE MOUIC% OF 17670WHEN 3:PL%=VALFNgeticon(10,1):IF PL%>1 THEN PROCshadeicon(10,PL%+6):PL%-=1:PROCseticon(10,1,STR$PL%) 17680WHEN 2:PL%=VALFNgeticon(10,1):IF PL%<40 THEN PROCclearicon(10,PL%+7):PL%+=1:PROCseticon(10,1,STR$PL%) 17690WHEN 4:PALE%=VALFNgeticon(10,1):VDU23,6, 17700IN%=7:FORL%=1 TO 5:N%=0:I%=128:FORK%=1 TO 8:IF FNhigh(10,IN%) THEN N%+=I% 17710I%=I% DIV 2:IN%+=1:NEXT:VDU N%:PAT%(L%)=N%:NEXT:VDU 0| 17720IF MOUB%=4 THEN PROCmenoff 17730ENDCASE 17740ENDPROC 17750 17760DEFPROCgrabclick 17770IF MOUIC%<>12 OR (FUSE%<>34 AND FUST%<2) THEN ENDPROC 17780PROCinpic:IF FUSE%<>34 THEN PROCpgrab(OX%,OY%,3) ELSE PROCpimport(OX%,OY%,3) 17790GRXM%=VAL(FNgeticon(8,4)):IF GRXM%<1 THEN GRXM%=1:PROCseticon(8,4,STR$GRXM%) 17800GRYM%=VAL(FNgeticon(8,5)):IF GRYM%<1 THEN GRYM%=1:PROCseticon(8,5,STR$GRYM%) 17810GRXD%=VAL(FNgeticon(8,6)):IF GRXD%<1 THEN GRXD%=1:PROCseticon(8,6,STR$GRXD%) 17820GRYD%=VAL(FNgeticon(8,7)):IF GRYD%<1 THEN GRYD%=1:PROCseticon(8,6,STR$GRYD%) 17830PROCgrabflip 17840GRMA%=FNhigh(8,14) 17850IF FUSE%<>34 THEN PROCpgrab(OX%,OY%,3) ELSE PROCpimport(OX%,OY%,3) 17860PROCoutpic:PROCquickdrawmain 17870ENDPROC 17880 17890DEFPROCgrabflip 17900IF (FNhigh(8,10) AND NOT GRFX%) OR ((NOT FNhigh(8,10)) AND GRFX%) THEN SYS&2E,289,SPBUF%,GRN$:GRFX%=NOT GRFX% 17910IF (FNhigh(8,11) AND NOT GRFY%) OR ((NOT FNhigh(8,11)) AND GRFY%) THEN SYS&2E,303,SPBUF%,GRN$:GRFY%=NOT GRFY% 17920ENDPROC 17930 17940DEFPROCgridclick 17950D%=VAL(FNgeticon(6,4)) 17960IF MOUIC%=2 AND D%>1 THEN D%-=1:PROCseticon(6,4,STR$D%):ENDPROC 17970IF MOUIC%=6 AND D%<999 THEN D%+=1:PROCseticon(6,4,STR$D%):ENDPROC 17980D%=VAL(FNgeticon(6,5)) 17990IF MOUIC%=3 AND D%>1 THEN D%-=1:PROCseticon(6,5,STR$D%):ENDPROC 18000IF MOUIC%=7 AND D%<999 THEN D%+=1:PROCseticon(6,5,STR$D%):ENDPROC 18010D%=VAL(FNgeticon(6,12)) 18020IF MOUIC%=10 AND D%>0 THEN D%-=1:PROCseticon(6,12,STR$D%):ENDPROC 18030IF MOUIC%=14 AND D%<999 THEN D%+=1:PROCseticon(6,12,STR$D%):ENDPROC 18040D%=VAL(FNgeticon(6,13)) 18050IF MOUIC%=11 AND D%>0 THEN D%-=1:PROCseticon(6,13,STR$D%):ENDPROC 18060IF MOUIC%=15 AND D%<999 THEN D%+=1:PROCseticon(6,13,STR$D%):ENDPROC 18070IF MOUIC%=16 THEN PROCseticon(6,4,"1"):PROCseticon(6,5,"1"):PROCseticon(6,12,"0"):PROCseticon(6,13,"0"):ENDPROC 18080IF MOUIC%<>17 THEN ENDPROC 18090GRWI%=VAL(FNgeticon(6,4)):IF GRWI%<1 THEN GRWI%=1 18100GRHE%=VAL(FNgeticon(6,5)):IF GRHE%<1 THEN GRHE%=1 18110GRBX%=VAL(FNgeticon(6,12)):IF GRBX%>GRWI% THEN REPEAT:GRBX%-=GRWI%:UNTIL GRBX%<GRWI%:PROCseticon(6,12,STR$GRBX%) 18120GRBY%=VAL(FNgeticon(6,13)):IF GRBY%>GRHE% THEN REPEAT:GRBY%-=GRHE%:UNTIL GRBY%<GRHE%:PROCseticon(6,13,STR$GRBY%) 18130IF MOUB%=4 THEN PROCmenoff 18140PROCforcedrawmain 18150ENDPROC 18160 18170DEFPROCbrushclick 18180IF MOUIC%>=0 AND MOUIC%<=11 THEN 18190IF FUST%>0 THEN PROCinpic:PROCpaintscale:PROCeorback:PROCpaintbrush(OX%,OY%) 18200SELBR%=MOUIC%+1 18210IF FUST%>0 THEN PROCeorback:PROCpaintbrush(OX%,OY%):PROCoutpic:PROCquickdrawmain 18220PROCforcedrawbrush 18230ENDIF 18240IF MOUIC%<>20 OR FUSE%=29 OR FUSE%=30 THEN ENDPROC 18250IF FUST%>0 THEN PROCinpic:PROCpaintscale:PROCeorback:PROCpaintbrush(OX%,OY%) 18260BXM%=VAL(FNgeticon(5,16)):IF BXM%<1 THEN BXM%=1:PROCseticon(4,16,"1") 18270BYM%=VAL(FNgeticon(5,18)):IF BYM%<1 THEN BYM%=1:PROCseticon(4,18,"1") 18280BXD%=VAL(FNgeticon(5,17)):IF BXD%<1 THEN BXD%=1:PROCseticon(4,17,"1") 18290BYD%=VAL(FNgeticon(5,19)):IF BYD%<1 THEN BYD%=1:PROCseticon(4,19,"1") 18300IF FUST%>0 THEN PROCpaintscale:PROCeorback:PROCpaintbrush(OX%,OY%):PROCoutpic:PROCquickdrawmain 18310ENDPROC 18320 18330DEFPROCairbclick 18340D%=VAL(FNgeticon(4,1)) 18350IF MOUIC%=4 AND D%>1 THEN D%-=1:PROCseticon(4,1,STR$D%):ENDPROC 18360IF MOUIC%=6 AND D%<999 THEN D%+=1:PROCseticon(4,1,STR$D%):ENDPROC 18370D%=VAL(FNgeticon(4,3)) 18380IF MOUIC%=5 AND D%>4 THEN D%-=1:PROCseticon(4,3,STR$D%):ENDPROC 18390IF MOUIC%=7 AND D%<999 THEN D%+=1:PROCseticon(4,3,STR$D%):ENDPROC 18400ENDPROC 18410 18420DEFPROCmenoff:SYS "Wimp_CreateMenu",-1:ENDPROC 18430 18440DEFPROCbuildiconmenu 18450PROCbuildmenu(30,"Archrome") 18460PROCaddtomenu(30,"Info",1,"") 18470PROCaddtomenu(30,"Save",0,"L") 18480PROCaddtomenu(30,"Quit",-1,"F") 18490ENDPROC 18500 18510DEFPROCiconmenu:MENO%=30:SYS "Wimp_CreateMenu",,MENAD%(30),MOUX%-64,252:ENDPROC 18520 18530DEFPROCwindmenu:MENO%=0:MEBA%=MENU%:MEINBA%=MENUIND% 18540FORL%=0 TO NOMENS%:TAD%=MENAD%(L%)+28:REPEAT:!TAD%=(!TAD%) AND 130:TAD%!8=(TAD%!8) AND (&FFFFFFFF-(1<<22)):TAD%+=24:UNTIL !(TAD%-24)>127:NEXT 18550 18560IF LITY%=21 THEN PROCtickitem(12,1) 18570IF LITY%=53 THEN PROCtickitem(12,2) 18580IF LITY%=5 THEN PROCtickitem(11,1) 18590IF (USE% AND 15)=0 THEN PROCtickitem(11,3) 18600IF (USE% AND 15)=1 THEN PROCtickitem(11,4) 18610IF (USE% AND 15)=2 THEN PROCtickitem(11,5) 18620IF (USE% AND 15)=3 THEN PROCtickitem(11,6) 18630IF (USE% AND 15)=4 THEN PROCtickitem(11,7) 18640IF (USE% AND 15)=6 THEN PROCtickitem(11,8) 18650IF (USE% AND 15)=7 THEN PROCtickitem(11,9) 18660IF (USE% AND 112)=16 THEN PROCtickitem(11,10) 18670IF (USE% AND 112)=32 THEN PROCtickitem(11,11) 18680IF (USE% AND 112)=48 THEN PROCtickitem(11,12) 18690IF (USE% AND 112)=64 THEN PROCtickitem(11,13) 18700IF (USE% AND 112)=80 THEN PROCtickitem(11,14) 18710IF FONTS%=0 THEN PROCshadeitem(14,FONTS%+3) 18720MI%=1:FORL%=2 TO 16 18730IF ZOOM%=L% THEN PROCtickitem(3,MI%) 18740MI%+=1:NEXT 18750IF GRCO%=-1 THEN PROCshadeitem(5,2) ELSE PROCshadeitem(5,1) 18760IF GRLO% THEN PROCtickitem(5,3) 18770IF ZOOM%>1 THEN PROCtickitem(0,8) 18780IF KUKE% THEN PROCtickitem(10,2) 18790 18800SYS "Wimp_CreateMenu",,MENAD%(0),MOUX%-64,MOUY%+60 18810ENDPROC 18820 18830DEFPROCbuildmainmenu 18840MEOF%=0:MEIN%=0 18850 18860PROCbuildmenu(15,"Speed") 18870PROCaddtomenu(15,"Very fast",-1,"") 18880PROCaddtomenu(15,"Fast",-1,"") 18890PROCaddtomenu(15,"Medium",-1,"") 18900PROCaddtomenu(15,"Slow",-1,"F") 18910 18920PROCbuildmenu(16,"Mouse") 18930PROCaddtomenu(16,"X only",MENAD%(15),"") 18940PROCaddtomenu(16,"Y only",MENAD%(15),"") 18950PROCaddtomenu(16,"Both",MENAD%(15),"F") 18960 18970PROCbuildmenu(1,"File") 18980PROCaddtomenu(1,"Save",0,"") 18990PROCaddtomenu(1,"Save as sprite",7,"") 19000PROCaddtomenu(1,"Export",-1,"F") 19010 19020PROCbuildmenu(12,"Pattern") 19030PROCaddtomenu(12,"Restarted",-1,"") 19040PROCaddtomenu(12,"Continuous",-1,"F") 19050 19060PROCbuildmenu(11,"Styles") 19070PROCaddtomenu(11,"Solid line",-1,"") 19080PROCaddtomenu(11,"Line pattern",MENAD%(12),"L") 19090PROCaddtomenu(11,"Overwrite",-1,"") 19100PROCaddtomenu(11,"OR",-1,"") 19110PROCaddtomenu(11,"AND",-1,"") 19120PROCaddtomenu(11,"EOR",-1,"") 19130PROCaddtomenu(11,"Invert",-1,"") 19140PROCaddtomenu(11,"NAND",-1,"") 19150PROCaddtomenu(11,"NOR",-1,"L") 19160PROCaddtomenu(11,"ECF 1",-1,"") 19170PROCaddtomenu(11,"ECF 2",-1,"") 19180PROCaddtomenu(11,"ECF 3",-1,"") 19190PROCaddtomenu(11,"ECF 4",-1,"") 19200PROCaddtomenu(11,"Giant ECF",-1,"F") 19210 19220PROCbuildmenu(13,"Fill") 19230PROCaddtomenu(13,"Flood fill",-1,"") 19240PROCaddtomenu(13,"Pattern fill",-1,"L") 19250PROCaddtomenu(13,"Graduated fill",17,"F") 19260 19270PROCbuildmenu(2,"Paint") 19280PROCaddtomenu(2,"Show palette",-1,"") 19290PROCaddtomenu(2,"Unset transparents",-1,"") 19300PROCaddtomenu(2,"Set transparents",-1,"L") 19310PROCaddtomenu(2,"Pixels",-1,"") 19320PROCaddtomenu(2,"Sketch",-1,"") 19330PROCaddtomenu(2,"Rubber line",-1,"") 19340PROCaddtomenu(2,"Airbrush...",-1,"") 19350PROCaddtomenu(2,"Paintbrush...",-1,"L") 19360PROCaddtomenu(2,"Fill",MENAD%(13),"L") 19370PROCaddtomenu(2,"Line style",MENAD%(11),"F") 19380 19390L%=1:LFR$="":NOFM%=40:NOLF%=0 19400CFR$=FNfontroot(FONT$(L%)) 19410IF CFR$=LFR$ THEN FONTT$(NOLF%)=RIGHT$(FONT$(L%),(LEN(FONT$(L%))-(LEN(CFR$)+1))):NOLF%+=1:GOTO 19510 19420IF LFR$<>"" THEN 19430IF NOLF%>0 THEN 19440PROCbuildmenu(NOFM%,LFR$):FORK%=0 TO NOLF%-1:IF K%=NOLF%-1 THEN O$="F" ELSE O$="" 19450PROCaddtomenu(NOFM%,FONTT$(K%),-1,O$):NEXT:NOLF%=0:NOFM%+=1 19460ELSE 19470IF INSTR(FONT$(L%-1),".")<>0 THEN PROCbuildmenu(NOFM%,LFR$):PROCaddtomenu(NOFM%,RIGHT$(FONT$(L%-1),(LEN(FONT$(L%-1))-(LEN(LFR$)+1))),-1,"F"):NOLF%=0:NOFM%+=1 19480ENDIF 19490ENDIF 19500LFR$=CFR$:IF INSTR(FONT$(L%),".")<>0 THEN FONTT$(NOLF%)=RIGHT$(FONT$(L%),(LEN(FONT$(L%))-(LEN(CFR$)+1))):NOLF%+=1 19510L%+=1:IF L%<=FONTS% THEN GOTO 19400 19520IF LFR$<>"" THEN 19530IF NOLF%>0 THEN 19540PROCbuildmenu(NOFM%,LFR$):FORK%=0 TO NOLF%-1:IF K%=NOLF%-1 THEN O$="F" ELSE O$="" 19550PROCaddtomenu(NOFM%,FONTT$(K%),-1,O$):NEXT:NOLF%=0:NOFM%+=1 19560ELSE 19570IF INSTR(FONT$(L%-1),".")<>0 THEN PROCbuildmenu(NOFM%,LFR$):PROCaddtomenu(NOFM%,RIGHT$(FONT$(L%-1),(LEN(FONT$(L%-1))-(LEN(LFR$)+1))),-1,"F"):NOLF%=0:NOFM%+=1 19580ENDIF 19590ENDIF 19600 19610PROCbuildmenu(14,"Fonts") 19620L%=0:LFR$="":NOFM%=40:COTF%=1 19630IF L%=0 AND FONTS%=0 THEN PROCaddtomenu(14,FONT$(0),-1,"L"):GOTO 19750 19640IF L%=0 THEN PROCaddtomenu(14,FONT$(0),-1,""):LFR$="System font":GOTO 19720 19650CFR$=FNfontroot(FONT$(L%)) 19660IF CFR$=LFR$ THEN COTF%+=1:GOTO 19720 19670IF LFR$<>"System font" THEN 19680IF COTF%>1 OR INSTR(FONT$(L%-1),".")<>0 THEN PROCaddtomenu(14,LFR$,MENAD%(NOFM%),""):NOFM%+=1 ELSE PROCaddtomenu(14,LFR$,-1,"") 19690COTF%=1 19700ENDIF 19710LFR$=CFR$ 19720L%+=1:IF L%<=FONTS% THEN GOTO 19630 19730IF COTF%>1 OR INSTR(FONT$(L%-1),".")<>0 THEN PROCaddtomenu(14,LFR$,MENAD%(NOFM%),"L") ELSE PROCaddtomenu(14,LFR$,-1,"L") 19740 19750PROCaddtomenu(14,"Background",15,"") 19760IF FONTS%>0 THEN PROCaddtomenu(14,"Parameters",16,"F") ELSE PROCaddtomenu(14,"Parameters",16,"SF") 19770 19780PROCbuildmenu(3,"Zoom") 19790FORL%=2 TO 16 19800IF L%=16 THEN O$="F" ELSE O$="" 19810PROCaddtomenu(3,"Zoom x"+STR$L%,-1,O$) 19820NEXT 19830 19840PROCbuildmenu(4,"Shapes") 19850PROCaddtomenu(4,"Wire rectangle",-1,"") 19860PROCaddtomenu(4,"Wire triangle",-1,"") 19870PROCaddtomenu(4,"Wire circle",-1,"") 19880PROCaddtomenu(4,"Wire ellipse",-1,"") 19890PROCaddtomenu(4,"Wire parallelogram",-1,"") 19900PROCaddtomenu(4,"Wire arc",-1,"L") 19910PROCaddtomenu(4,"Solid rectangle",-1,"") 19920PROCaddtomenu(4,"Solid triangle",-1,"") 19930PROCaddtomenu(4,"Solid circle",-1,"") 19940PROCaddtomenu(4,"Solid ellipse",-1,"") 19950PROCaddtomenu(4,"Solid parallelogram",-1,"") 19960PROCaddtomenu(4,"Solid sector",-1,"") 19970PROCaddtomenu(4,"Solid segment",-1,"F") 19980 19990PROCbuildmenu(6,"Presets") 20000PROCaddtomenu(6,"2x2 grid",-1,"") 20010PROCaddtomenu(6,"3x3 grid",-1,"") 20020PROCaddtomenu(6,"4x4 grid",-1,"") 20030PROCaddtomenu(6,"6x6 grid",-1,"") 20040PROCaddtomenu(6,"8x8 grid",-1,"") 20050PROCaddtomenu(6,"16x16 grid",-1,"") 20060PROCaddtomenu(6,"32x32 grid",-1,"") 20070PROCaddtomenu(6,"32x16 grid",-1,"F") 20080 20090PROCbuildmenu(5,"Grid") 20100PROCaddtomenu(5,"Show grid",-1,"") 20110PROCaddtomenu(5,"Hide grid",-1,"") 20120PROCaddtomenu(5,"Grid lock",-1,"") 20130PROCaddtomenu(5,"Preset grids",MENAD%(6),"") 20140PROCaddtomenu(5,"Edit grid",6,"F") 20150 20160PROCbuildmenu(7,"Manipulate") 20170PROCaddtomenu(7,"Copy area...",-1,"") 20180PROCaddtomenu(7,"Move area...",-1,"") 20190PROCaddtomenu(7,"Mirror area",-1,"") 20200PROCaddtomenu(7,"Invert area",-1,"") 20210PROCaddtomenu(7,"Strip area",-1,"") 20220PROCaddtomenu(7,"Rotate...",-1,"") 20230PROCaddtomenu(7,"Scale to fit...",-1,"L") 20240PROCaddtomenu(7,"Pixel mapping",-1,"F") 20250 20260PROCbuildmenu(8,"Special") 20270PROCaddtomenu(8,"Trace",-1,"") 20280PROCaddtomenu(8,"Smudge area",-1,"") 20290PROCaddtomenu(8,"Wet brush...",-1,"") 20300PROCaddtomenu(8,"Tint area",-1,"") 20310PROCaddtomenu(8,"Tint brush...",-1,"") 20320PROCaddtomenu(8,"Set frame",19,"") 20330PROCaddtomenu(8,"RGB control...",-1,"") 20340PROCaddtomenu(8,"Grey scale...",-1,"") 20350PROCaddtomenu(8,"Pixelate...",-1,"") 20360PROCaddtomenu(8,"Colour replace...",-1,"F") 20370 20380PROCbuildmenu(9,"Edit") 20390PROCaddtomenu(9,"Line pattern",10,"") 20400PROCaddtomenu(9,"Fill patterns",11,"") 20410PROCaddtomenu(9,"Edit brushes",12,"") 20420PROCaddtomenu(9,"Graduated fills",13,"F") 20430 20440PROCbuildmenu(10,"Options") 20450PROCaddtomenu(10,"Mouse",MENAD%(16),"L") 20460PROCaddtomenu(10,"Cursor keys",-1,"") 20470PROCaddtomenu(10,"Wipe picture",-1,"L") 20480PROCaddtomenu(10,"Help",-1,"F") 20490 20500PROCbuildmenu(0,"Archrome") 20510PROCaddtomenu(0,"File",MENAD%(1),"") 20520PROCaddtomenu(0,"Paint",MENAD%(2),"") 20530PROCaddtomenu(0,"Text",MENAD%(14),"") 20540PROCaddtomenu(0,"Shapes",MENAD%(4),"L") 20550PROCaddtomenu(0,"Special",MENAD%(8),"") 20560PROCaddtomenu(0,"Edit",MENAD%(9),"") 20570PROCaddtomenu(0,"Manipulate",MENAD%(7),"L") 20580PROCaddtomenu(0,"Zoom",MENAD%(3),"") 20590PROCaddtomenu(0,"Grid",MENAD%(5),"") 20600PROCaddtomenu(0,"Options",MENAD%(10),"F") 20610 20620ENDPROC 20630 20640DEFFNfontroot(F$):IF INSTR(F$,".")=0 THEN =F$ 20650IPF%=1:IPF$="":WHILE MID$(F$,IPF%,1)<>".":IPF$=IPF$+MID$(F$,IPF%,1):IPF%+=1:ENDWHILE:=IPF$ 20660 20670REM ** Create a menu (Number, Title) 20680DEFPROCbuildmenu(MN%,MT$) 20690MENAD%(MN%)=MENU%+MEOF%:TAD%=MENU%+MEOF% 20700$TAD%=MT$:TAD%?12=7:TAD%?13=2:TAD%?14=7:TAD%?15=0:TAD%!16=0:TAD%!20=44:TAD%!24=0 20710MEOF%+=28 20720IF MEOF%>8*1024 THEN PROCmessage(0,"Menu tree has run out of room.") 20730ENDPROC 20740 20750REM ** Feature format : L = Follow by dotted line 20760REM ** : F = Last item 20770DEFPROCaddtomenu(MN%,IT$,HA%,FE$) 20780TAD%=MENU%+MEOF% 20790FE%=0 20800IF INSTR(FE$,"L") THEN FE%+=2 20810IF INSTR(FE$,"F") THEN FE%+=128 20820!TAD%=FE% 20830IF HA%>-1 AND HA%<&8000 THEN TAD%!4=HAND%(HA%) 20840IF HA%=-1 THEN TAD%!4=-1 20850IF HA%>&8000 THEN TAD%!4=HA% 20860TAD%!8=1 OR (7<<24) OR 256 20870$(MENUIND%+MEIN%)=IT$ 20880ILE%=LEN(IT$)+1 20890IF (ILE% MOD 4)>0 THEN ILE%=((ILE% DIV 4)+1)*4 20900TAD%!12=MENUIND%+MEIN% 20910TAD%!20=LEN(IT$) 20920TAD%!16=MENALO% 20930MEIN%+=ILE% 20940IF MEIN%>(8*1024) THEN PROCmessage(1,"Menu indirection buffer overflow.") 20950MEOF%+=24 20960IF MEOF%>(8*1024) THEN PROCmessage(0,"Menu tree has run out of room") 20970IF ((MENAD%(MN%)!16)-32)<(LEN(IT$)*16) THEN MENAD%(MN%)!16=(LEN(IT$)*16)+32 20980ENDPROC 20990 21000DEFPROCshadeitem(MN%,IN%):TAD%=MENAD%(MN%)+28+((IN%-1)*24):TAD%!8=(TAD%!8)+(1<<22):ENDPROC 21010 21020DEFPROCtickitem(MN%,IN%):TAD%=MENAD%(MN%)+28+((IN%-1)*24):!TAD%=(!TAD%)+1:ENDPROC 21030 21040DEFPROCmenu:SYS6,229 21050SYS "Wimp_GetPointerInfo",,BLK%+128:MBU%=BLK%!136 21060SYS "Wimp_DecodeMenu",,MENAD%(MENO%),BLK%,SEL% 21070DSI%=FALSE 21080REM VDU4:PRINT $SEL%:VDU5 21090SEL$=$SEL% 21100IF $SEL%="Quit" THEN PROCkillf:FUSE%=-1:PROCwindname(2,PIC$):PROCforcedrawmain:IF FNquityn THEN PROCdie 21110IF $SEL%="Paint" THEN DSI%=TRUE:PROCkillf:FUSE%=-1:PROChelp:PROCwindname(2,PIC$) 21120IF $SEL%="Paint.Show palette" THEN DSI%=TRUE:PROCopenpal 21130IF $SEL%="Paint.Pixels" THEN DSI%=TRUE:PROCkillf:FUSE%=0:PROChelp:PROCwindname(2,PIC$+" [pixels]") 21140IF $SEL%="Paint.Sketch" THEN DSI%=TRUE:PROCkillf:FUSE%=1:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [sketch]") 21150IF $SEL%="Paint.Rubber line" THEN DSI%=TRUE:PROCkillf:FUSE%=2:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [rubber line]") 21160IF $SEL%="Grid.Show grid" THEN DSI%=TRUE:GRCO%=PALTAB%?(COL%*2):GRTI%=PALTAB%?((COL%*2)+1):PROCforcedrawmain:GOTO 21180 21170IF $SEL%="Grid.Hide grid" THEN DSI%=TRUE:GRCO%=-1:PROCforcedrawmain:GOTO 21180 21180IF $SEL%="Zoom" THEN DSI%=TRUE:ZOOM%=1:PROCzoomsize 21190FORL%=2 TO 16 21200IF $SEL%="Zoom.Zoom x"+STR$L% THEN DSI%=TRUE:ZOOM%=L%:PROCzoomsize:PROCforcedrawmain 21210NEXT 21220IF $SEL%="Paint.Airbrush..." THEN PROCkillf:DSI%=TRUE:PROCopenwind(4):FUSE%=3:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [airbrush]") 21230IF $SEL%="Paint.Paintbrush..." THEN PROCkillf:DSI%=TRUE:PROCopenwind(5):FUSE%=4:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [paintbrush]") 21240IF $SEL%="Shapes.Wire rectangle" THEN DSI%=TRUE:PROCkillf:FUSE%=5:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [wire rectangle]") 21250IF $SEL%="Shapes.Solid rectangle" THEN DSI%=TRUE:PROCkillf:FUSE%=6:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [solid rectangle]") 21260IF $SEL%="Grid.Grid lock" THEN DSI%=TRUE:GRLO%=NOT GRLO% 21270IF $SEL%="Grid.Preset grids.2x2 grid" THEN DSI%=TRUE:GRWI%=2:GRHE%=2:PROCsetgric:PROCforcedrawmain 21280IF $SEL%="Grid.Preset grids.3x3 grid" THEN DSI%=TRUE:GRWI%=3:GRHE%=3:PROCsetgric:PROCforcedrawmain 21290IF $SEL%="Grid.Preset grids.4x4 grid" THEN DSI%=TRUE:GRWI%=4:GRHE%=4:PROCsetgric:PROCforcedrawmain 21300IF $SEL%="Grid.Preset grids.6x6 grid" THEN DSI%=TRUE:GRWI%=6:GRHE%=6:PROCsetgric:PROCforcedrawmain 21310IF $SEL%="Grid.Preset grids.8x8 grid" THEN DSI%=TRUE:GRWI%=8:GRHE%=8:PROCsetgric:PROCforcedrawmain 21320IF $SEL%="Grid.Preset grids.16x16 grid" THEN DSI%=TRUE:GRWI%=16:GRHE%=16:PROCsetgric:PROCforcedrawmain 21330IF $SEL%="Grid.Preset grids.32x32 grid" THEN DSI%=TRUE:GRWI%=32:GRHE%=32:PROCsetgric:PROCforcedrawmain 21340IF $SEL%="Grid.Preset grids.32x16 grid" THEN DSI%=TRUE:GRWI%=32:GRHE%=16:PROCsetgric:PROCforcedrawmain 21350IF $SEL%="Shapes.Wire circle" THEN DSI%=TRUE:PROCkillf:FUSE%=7:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [wire circle]") 21360IF $SEL%="Shapes.Solid circle" THEN DSI%=TRUE:PROCkillf:FUSE%=8:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [solid circle]") 21370IF $SEL%="Shapes.Wire triangle" THEN DSI%=TRUE:PROCkillf:FUSE%=9:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [wire triangle]") 21380IF $SEL%="Shapes.Solid triangle" THEN DSI%=TRUE:PROCkillf:FUSE%=10:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [solid triangle]") 21390IF $SEL%="Shapes.Wire ellipse" THEN DSI%=TRUE:PROCkillf:FUSE%=11:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [wire ellipse]") 21400IF $SEL%="Shapes.Solid ellipse" THEN DSI%=TRUE:PROCkillf:FUSE%=12:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [solid ellipse]") 21410IF $SEL%="Shapes.Wire parallelogram" THEN DSI%=TRUE:PROCkillf:FUSE%=13:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [wire parallelogram]") 21420IF $SEL%="Shapes.Solid parallelogram" THEN DSI%=TRUE:PROCkillf:FUSE%=14:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [solid parallelogram]") 21430IF $SEL%="Shapes.Wire arc" THEN DSI%=TRUE:PROCkillf:FUSE%=15:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [wire arc]") 21440IF $SEL%="Shapes.Solid sector" THEN DSI%=TRUE:PROCkillf:FUSE%=16:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [wire sector]") 21450IF $SEL%="Shapes.Solid segment" THEN DSI%=TRUE:PROCkillf:FUSE%=17:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [wire segment]") 21460IF $SEL%="Manipulate.Move area..." THEN DSI%=TRUE:PROCkillf:PROCspinit:FUSE%=18:FUST%=0:PROChelp:PROCopenwind(8):PROCwindname(2,PIC$+" [move area]") 21470IF $SEL%="Manipulate.Copy area..." THEN DSI%=TRUE:PROCkillf:PROCspinit:FUSE%=19:FUST%=0:PROChelp:PROCopenwind(8):PROCwindname(2,PIC$+" [copy area]") 21480IF $SEL%="Manipulate.Mirror area" THEN DSI%=TRUE:PROCkillf:PROCspinit:FUSE%=20:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [mirror area]") 21490IF $SEL%="Manipulate.Invert area" THEN DSI%=TRUE:PROCkillf:PROCspinit:FUSE%=21:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [invert area]") 21500IF $SEL%="Manipulate.Strip area" THEN DSI%=TRUE:PROCkillf:FUSE%=22:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [strip area]") 21510IF $SEL%="Manipulate.Scale to fit..." THEN DSI%=TRUE:PROCkillf:FUSE%=23:FUST%=0:FUCO%=0:PROChelp:PROCopenwind(8):PROCwindname(2,PIC$+" [scale to fit]") 21520IF $SEL%="Paint.Unset transparents" THEN DSI%=TRUE:PROCunsetrasp 21530IF $SEL%="Paint.Set transparents" THEN DSI%=TRUE:PROCsetrasp 21540IF $SEL%="Special.Trace" THEN DSI%=TRUE:PROCkillf:FUSE%=24:PROChelp:PROCwindname(2,PIC$+" [trace]") 21550IF $SEL%="Options.Help" THEN DSI%=TRUE:PROCopenwind(9) 21560IF $SEL%="Manipulate.Pixel mapping" THEN DSI%=TRUE:PROCkillf:FUSE%=25:FUST%=0:FUCO%=1:PROChelp:PROCwindname(2,PIC$+" [pixel mapping]"):OX%=-1:OY%=-1 21570REM --------------------------------------------------------------------- 21580IF SEL$="Paint.Line style.Solid line" THEN DSI%=TRUE:LITY%=5 21590IF SEL$="Paint.Line style.Line pattern.Restarted" THEN DSI%=TRUE:LITY%=21 21600IF SEL$="Paint.Line style.Line pattern.Continuous" THEN DSI%=TRUE:LITY%=53 21610IF SEL$="Paint.Line style.Overwrite" THEN DSI%=TRUE:USE%=(USE% AND 112) 21620IF SEL$="Paint.Line style.OR" THEN DSI%=TRUE:USE%=(USE% AND 112)+1 21630IF SEL$="Paint.Line style.AND" THEN DSI%=TRUE:USE%=(USE% AND 112)+2 21640IF SEL$="Paint.Line style.EOR" THEN DSI%=TRUE:USE%=(USE% AND 112)+3 21650IF SEL$="Paint.Line style.Invert" THEN DSI%=TRUE:USE%=(USE% AND 112)+4 21660IF SEL$="Paint.Line style.NAND" THEN DSI%=TRUE:USE%=(USE% AND 112)+6 21670IF SEL$="Paint.Line style.NOR" THEN DSI%=TRUE:USE%=(USE% AND 112)+7 21680IF SEL$="Paint.Line style.ECF 1" AND (USE% AND 112)=16 THEN DSI%=TRUE:USE%=(USE% AND 15) ELSE IF SEL$="Paint.Line style.ECF 1" THEN DSI%=TRUE:USE%=(USE% AND 15)+16 21690IF SEL$="Paint.Line style.ECF 2" AND (USE% AND 112)=32 THEN DSI%=TRUE:USE%=(USE% AND 15) ELSE IF SEL$="Paint.Line style.ECF 2" THEN DSI%=TRUE:USE%=(USE% AND 15)+32 21700IF SEL$="Paint.Line style.ECF 3" AND (USE% AND 112)=48 THEN DSI%=TRUE:USE%=(USE% AND 15) ELSE IF SEL$="Paint.Line style.ECF 3" THEN DSI%=TRUE:USE%=(USE% AND 15)+48 21710IF SEL$="Paint.Line style.ECF 4" AND (USE% AND 112)=64 THEN DSI%=TRUE:USE%=(USE% AND 15) ELSE IF SEL$="Paint.Line style.ECF 4" THEN DSI%=TRUE:USE%=(USE% AND 15)+64 21720IF SEL$="Paint.Line style.Giant ECF" AND (USE% AND 112)=80 THEN DSI%=TRUE:USE%=(USE% AND 15) ELSE IF SEL$="Paint.Line style.Giant ECF" THEN DSI%=TRUE:USE%=(USE% AND 15)+80 21730REM --------------------------------------------------------------------- 21740IF SEL$="Paint.Fill.Flood fill" THEN DSI%=TRUE:PROCkillf:FUSE%=26:PROChelp:PROCwindname(2,PIC$+" [Flood fill]") 21750IF SEL$="Special.Smudge area" THEN DSI%=TRUE:PROCkillf:FUSE%=27:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [Smudge area]") 21760IF SEL$="Special.Tint area" THEN DSI%=TRUE:PROCkillf:FUSE%=28:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [Tint area]") 21770IF $SEL%="Special.Wet brush..." THEN 21780PROCkillf:DSI%=TRUE:PROCopenwind(5):FUSE%=29:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [Wet brush]"):PROCspinit:PROCspbuf(145*1024):IF Q% THEN PROCspbuferr ELSE PROCbackuppic 21790ENDIF 21800IF $SEL%="Special.Tint brush..." THEN 21810PROCkillf:DSI%=TRUE:PROCopenwind(5):FUSE%=30:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [tint brush]"):PROCspinit:PROCspbuf(145*1024):IF Q% THEN PROCspbuferr ELSE PROCbackuppic 21820ENDIF 21830IF LEFT$(($SEL%),5)="Text." AND $SEL%<>"Text.Parameters" AND $SEL%<>"Text.Background" THEN 21840PROCkillf:PROCspinit:PROCspbuf(145*1024):IF Q% THEN PROCspbuferr 21850PROCbackuppic:OX%=-1:OY%=-1:EFM%=-1 21860DSI%=TRUE:FUSE%=32:FUST%=0:PROCopenwind(14):PROChelp:PROCwindname(2,PIC$+" [Text]"):FO$=RIGHT$($SEL%,LEN($SEL%)-5):PROCseticon(14,1,FO$) 21870FONT%=0:FORL%=0 TO FONTS%:IF FO$=FONT$(L%) THEN FONT%=L%:NEXT ELSE NEXT 21880ENDIF 21890IF $SEL%="Options.Mouse.X only.Very fast" THEN MMX%=4:MOUSE STEP MMX%,MMY% 21900IF $SEL%="Options.Mouse.X only.Fast" THEN MMX%=3:MOUSE STEP MMX%,MMY% 21910IF $SEL%="Options.Mouse.X only.Medium" THEN MMX%=2:MOUSE STEP MMX%,MMY% 21920IF $SEL%="Options.Mouse.X only.Slow" THEN MMX%=1:MOUSE STEP MMX%,MMY% 21930IF $SEL%="Options.Mouse.Y only.Very fast" THEN MMY%=4:MOUSE STEP MMX%,MMY% 21940IF $SEL%="Options.Mouse.Y only.Fast" THEN MMY%=3:MOUSE STEP MMX%,MMY% 21950IF $SEL%="Options.Mouse.Y only.Medium" THEN MMY%=2:MOUSE STEP MMX%,MMY% 21960IF $SEL%="Options.Mouse.Y only.Slow" THEN MMY%=1:MOUSE STEP MMX%,MMY% 21970IF $SEL%="Options.Mouse.Both.Very fast" THEN MMY%=4:MMX%=4:MOUSE STEP MMX%,MMY% 21980IF $SEL%="Options.Mouse.Both.Fast" THEN MMY%=3:MMX%=3:MOUSE STEP MMX%,MMY% 21990IF $SEL%="Options.Mouse.Both.Medium" THEN MMY%=2:MMX%=2:MOUSE STEP MMX%,MMY% 22000IF $SEL%="Options.Mouse.Both.Slow" THEN MMY%=1:MMX%=1:MOUSE STEP MMX%,MMY% 22010IF $SEL%="Special.Colour replace..." THEN 22020PROCkillf:DSI%=TRUE:PROCopenwind(18):FUSE%=33:FUST%=0:PROCspinit:PROCspbuf(24*1024):IF Q% THEN FUSE%=-1:PROCclosewind(18):PROCspinit:PROCspbuferr 22030SYS "Hourglass_On":FORL%=0 TO 22596 STEP 4:SPBUF%!L%=OPAL%!L%:NEXT:FORL%=0 TO 255:REPS%?L%=L%:NEXT:SYS "Hourglass_Off":PROCwindname(2,PIC$+" [Colour replace]"):PROChelp 22040ENDIF 22050IF $SEL%="File.Export" THEN PROCkillf:PROCseticon(7,1,"Export"):DSI%=TRUE:FUSE%=35:FUST%=0:PROChelp:PROCspinit:PROCwindname(2,PIC$+" [Export]"):PROCopenwind(8) 22060IF $SEL%="Paint.Fill.Pattern fill" THEN PROCkillf:PROCwindname(2,PIC$+" [Pattern fill]"):DSI%=TRUE:FUSE%=37:FUST%=0:PROChelp:PROCspinit:PROCopenwind(20) 22070IF $SEL%="Special.RGB control..." THEN PROCkillf:PROCwindname(2,PIC$+" [RGB control]"):DSI%=TRUE:FUSE%=38:FUST%=0:PROChelp:PROCspinit:PROCopenwind(21) 22080IF $SEL%="Special.Grey scale..." THEN PROCkillf:PROCwindname(2,PIC$+" [Grey scale]"):DSI%=TRUE:FUSE%=39:FUST%=0:PROChelp:PROCspinit:PROCopenwind(22) 22090IF $SEL%="Special.Pixelate..." THEN PROCkillf:PROCwindname(2,PIC$+" [Pixelate]"):DSI%=TRUE:FUSE%=40:FUST%=0:PROChelp:PROCspinit:PROCopenwind(23) 22100IF $SEL%="Manipulate.Rotate..." THEN PROCkillf:PROCwindname(2,PIC$+" [Rotate]"):DSI%=TRUE:FUSE%=41:FUST%=0:PROChelp:PROCspinit:PROCopenwind(24) 22110IF $SEL%="Options.Wipe picture" THEN PROCkillf:PROCwindname(2,PIC$):FUSE%=-1:PROChelp:PROCwipepic 22120IF $SEL%="Options.Cursor keys" THEN KUKE%=NOT KUKE%:DSI%=TRUE 22130IF DSI% AND MBU%=1 THEN PROCwindmenu 22140ENDPROC 22150 22160DEFPROCwipepic 22170!IO%=5:$(IO%+4)="Are you sure you want to wipe the picture?"+CHR$0 22180SYS "Wimp_ReportError",IO%,%11011,"!Archrome"+CHR$0 TO ,R% 22190IF R%=0 THEN GOTO 22180 22200IF R%=2 THEN ENDPROC 22210PROCinpic:VDU26:GCOL0,128 TINT 0:CLG:PROCoutpic:PROCforcedrawmain 22220ENDPROC 22230 22240DEFFNquityn 22250!IO%=5:$(IO%+4)="Are you sure you want to quit?"+CHR$0 22260SYS "Wimp_ReportError",IO%,%11011,"!Archrome"+CHR$0 TO ,R% 22270IF R%=0 THEN GOTO 22260 22280=(R%=1) 22290 22300DEFPROCimport 22310A$=FNgetname:BLK%!12=BLK%!8:BLK%!16=4:!BLK%=64:SYS "Wimp_SendMessage",17,BLK%,BLK%!4 22320PROCkillf:FUSE%=34:FUST%=0:PROCopenwind(8):PROChelp:PROCspinit 22330F%=OPENUP(A$):IMS%=EXT#F%:CLOSE#F% 22340PROCspbuf(IMS%+64):IF Q% THEN FUSE%=-1:PROCclosewind(8):PROCspinit:PROCspbuferr 22350SYS&2E,266,SPBUF%,A$:SYS&2E,269,SPBUF%,IO%,16,1 TO ,,,L%:IMP$="":FORK%=0 TO L%-1:IMP$=IMP$+CHR$(IO%?K%):NEXT 22360SYS&2E,296,SPBUF%,IMP$ TO ,,,IMW%,IMH%,,IMM% 22370SYS&35,IMM%,4 TO ,,E% 22380PWI%=2^E% 22390SX%=2^(E%-1):!IO%=SX%:IO%!8=1 22400IO%!4=1:IO%!12=1 22410L%=(SPBUF%+(SPBUF%!8)):IF L%!32=44 THEN 22420IMPA%=0 22430ELSE 22440IMPA%=L%+44:K%=48:I%=52:WHILE I%<(L%!32):L%!K%=L%!I%:I%+=8:K%+=4:ENDWHILE 22450ENDIF 22460IF IMM%<>15 OR IMPA%<>0 THEN SYS&40740,IMM%,IMPA%,15,0,PIXTAB2%:IMPT%=PIXTAB2% ELSE IMPT%=0 22470PROCwindname(2,PIC$+" [Import '"+IMP$+"']") 22480IMH%=IMH%*4:IMW%=IMW%*PWI% 22490GRN$=IMP$ 22500ENDPROC 22510 22520DEFPROCfillcontclick 22530IF MOUIC%<>8 THEN ENDPROC 22540GRFN%=-1 22550IF FNhigh(17,1) THEN GRFN%=0 22560IF FNhigh(17,2) THEN GRFN%=1 22570IF FNhigh(17,3) THEN GRFN%=2 22580IF FNhigh(17,4) THEN GRFN%=3 22590IF FNhigh(17,5) THEN GRFN%=4 22600IF GRFN%=-1 THEN PROCmessage(0,"You must select a fill sequence to use.") 22610IF FUSE%=31 THEN 22620IF GRTY%=1 THEN PROCkillf 22630ENDIF 22640GRTY%=-1 22650IF FNhigh(17,6) THEN GRTY%=0 22660IF FNhigh(17,7) THEN GRTY%=1:FUST%=0 22670IF GRTY%=-1 THEN PROCmessage(0,"You must select the type of fill to use.") 22680PROCkillf:FUSE%=31:FUST%=0:PROChelp:PROCwindname(2,PIC$+" [Graduated fill ("+FNfilldet(GRFN%+1)+")]"):PROCspinit 22690IF MOUB%=4 THEN PROCmenoff 22700ENDPROC 22710 22720DEFPROCunsetrasp:SYS "Hourglass_On" 22730FORL%=0 TO 255 22740IF TRASP%?L%=1 THEN PROCtrasp(L%) 22750NEXT 22760PROCforcedrawpal(PAL%):SYS "Hourglass_Off" 22770ENDPROC 22780 22790DEFPROCsetrasp:SYS "Hourglass_On" 22800FORL%=0 TO 255 22810IF TRASP%?L%=0 THEN PROCtrasp(L%) 22820NEXT 22830PROCforcedrawpal(PAL%):SYS "Hourglass_Off" 22840ENDPROC 22850 22860DEFPROCspinit 22870PROCspbuf(0) 22880ENDPROC 22890 22900DEFPROCsetgric 22910PROCseticon(6,4,STR$GRWI%) 22920PROCseticon(6,5,STR$GRHE%) 22930GRBX%=VAL(FNgeticon(6,12)):IF GRBX%>GRWI% THEN REPEAT:GRBX%-=GRWI%:UNTIL GRBX%<GRWI%:PROCseticon(6,12,STR$GRBX%) 22940GRBY%=VAL(FNgeticon(6,13)):IF GRBY%>GRHE% THEN REPEAT:GRBY%-=GRHE%:UNTIL GRBY%<GRHE%:PROCseticon(6,13,STR$GRBY%) 22950ENDPROC 22960 22970DEFPROCzoomsize 22980!BLK%=HAND%(2):SYS "Wimp_GetWindowState",,BLK%:WIF%=BLK%!28 22990!BLK%=HAND%(2):SYS "Wimp_CloseWindow",,BLK% 23000!BLK%=0:BLK%!4=-936*ZOOM%:BLK%!8=1236*ZOOM%:BLK%!12=0:SYS "Wimp_SetExtent",HAND%(2),BLK% 23010!BLK%=HAND%(2):SYS "Wimp_GetWindowInfo",,BLK% 23020BLK%!28=WIF%:SYS "Wimp_OpenWindow",,BLK%:ENDPROC 23030 23040DEFFNgstr(AD%):W$="":IF ?AD%<32 THEN =W$ ELSE REPEAT:W$=W$+CHR$(?AD%):AD%+=1:UNTIL ?AD%<32:=W$ 23050 23060DEFFNgeticon(WH%,IC%):!ICBLK%=HAND%(WH%):ICBLK%!4=IC%:SYS "Wimp_GetIconState",,ICBLK%:=FNgstr(!(ICBLK%+28)) 23070 23080DEFPROCseticon(WH%,IC%,SET$):!ICBLK%=HAND%(WH%):ICBLK%!4=IC%:SYS "Wimp_GetIconState",,ICBLK%:ICBLK%!8=0:ICBLK%!12=0:$(ICBLK%!28)=SET$:SYS "Wimp_SetIconState",,ICBLK%:ENDPROC 23090 23100DEFFNhigh(WH%,IC%):!ICBLK%=HAND%(WH%):ICBLK%!4=IC%:SYS "Wimp_GetIconState",,ICBLK%:=((?(ICBLK%+26)) AND %100000)=32 23110 23120DEFPROCshadeicon(WH%,IC%) 23130!ICBLK%=HAND%(WH%):ICBLK%!4=IC% 23140ICBLK%!8=%10000000000000000000000:ICBLK%!12=ICBLK%!8 23150SYS "Wimp_SetIconState",,ICBLK% 23160ENDPROC 23170 23180DEFPROCclearicon(WH%,IC%) 23190!ICBLK%=HAND%(WH%):ICBLK%!4=IC% 23200ICBLK%!8=0:ICBLK%!12=%10000000000000000000000 23210SYS "Wimp_SetIconState",,ICBLK% 23220ENDPROC 23230 23240DEFPROCpoint:SYS "Wimp_GetPointerInfo",,POI%:MOX%=!POI%:MOY%=POI%!4:MOB%=POI%!8:MOH%=POI%!12:ENDPROC 23250 23260DEFPROCwindname(WH%,SET$):!BLK%=HAND%(WH%):SYS "Wimp_GetWindowState",,BLK%:WIF%=BLK%!28:SYS "Wimp_GetWindowInfo",,BLK%:SYS"Wimp_CloseWindow",,BLK% 23270AD%=BLK%!76:BLK%!28=WIF%:$AD%=SET$:SYS "Wimp_OpenWindow",,BLK%:ENDPROC 23280 23290DEFPROCdragfin 23300F$=FNgeticon(DRAG%,1):T$="":IF INSTR(F$,".")=0 THEN T$=F$:GOTO 23330 23310IF RIGHT$(F$,1)="." THEN T$="":GOTO 23330 23320K%=LEN(F$):REPEAT:T$=MID$(F$,K%,1)+T$:K%-=1:UNTIL MID$(F$,K%,1)="." 23330SYS "Wimp_GetPointerInfo",,POI% 23340POI%!20=64:POI%!32=0:POI%!36=1:POI%!40=POI%!12:POI%!44=POI%!16:POI%!48=!POI%:POI%!52=POI%!4:POI%!56=2048:POI%!60=&556:$(POI%+64)=T$ 23350SYS "Wimp_SendMessage",17,POI%+20,POI%!12,POI%!16 23360ENDPROC 23370 23380DEFPROCstartdrag 23390SYS "Wimp_GetWindowState",,BLK%+12 23400X%=BLK%!16:Y%=BLK%!28:BLK%!16=0:SYS "Wimp_GetIconState",,BLK%+12 23410BLK%!16=5:BLK%!20+=X%-2:BLK%!24+=Y%-4 23420BLK%!28+=X%+2:BLK%!32+=Y% 23430BLK%!36=0:BLK%!40=0:BLK%!44=&7FFFFFFF:BLK%!48=&7FFFFFFF:SYS "Wimp_DragBox",,BLK%+12:ENDPROC 23440 23450DEFPROCinmessage(M%) 23460CASE M% OF 23470WHEN 0:PROCdie 23480WHEN 2:PROCdragsave 23490WHEN 5:IF BLK%!12=0 AND BLK%!40=&556 PROCload 23500WHEN 3:IF BLK%!12=0 AND BLK%!40=&556 PROCload ELSE IF BLK%!12=0 AND BLK%!40=&FF9 THEN PROCimport 23510ENDCASE:ENDPROC 23520 23530DEFPROCsaveok:A$=FNgeticon(0,1):IF INSTR(A$,".")=0 THEN PROCmessage(4,"To save, drag the icon to a directory viewer.") 23540REM ** SAVE ROUTINE HERE ** 23550GOTO 23630 23560ENDPROC 23570DEFPROCdragsave:A$=FNgetname:PROCkillf 23580IF DRAG%=7 THEN GOTO 23690 23590PROCseticon(0,1,A$) 23600SYS "Wimp_CreateMenu",-1 23610BLK%!12=BLK%!8:BLK%!16=3:!BLK%=64:SYS "Wimp_SendMessage",17,BLK%,BLK%!20,BLK%!24 23620REM ** SAVE ROUTINE HERE ** 23630PROCkillf:FUSE%=-1:SYS&2E,268,PIC%,A$ 23640OSCLI("SETTYPE "+A$+" 556") 23650PIC$=FNleaf(A$):PROCwindname(2,PIC$) 23660ENDPROC 23670 23680DEFPROCspritesaveok:A$=FNgeticon(7,1):IF INSTR(A$,".")=0 THEN PROCmessage(4,"To save, drag the icon to a directory viewer.") 23690PROCseticon(7,1,A$) 23700SYS "Wimp_CreateMenu",-1 23710BLK%!12=BLK%!8:BLK%!16=3:!BLK%=64:SYS "Wimp_SendMessage",17,BLK%,BLK%!20,BLK%!24 23720REM ** SAVE ROUTINE HERE ** 23730IF LEN(FNleaf(A$))>10 THEN PROCmessage(9,"Bad name") 23740IF FUSE%=35 THEN SYS&2E,282,SPBUF%,"GRAB",FNleaf(A$):SYS&2E,268,SPBUF%,A$:FUST%=0:PROCclosewind(7):PROCspinit ELSE SYS&2E,268,PIC%,A$ 23750ENDPROC 23760 23770DEFFNgetname:W$="":P%=BLK%+44:WHILE ?P%<>0 AND ?P%<>13:W$=W$+CHR$(?P%):P%+=1:ENDWHILE:=W$ 23780 23790DEFPROCload 23800A$=FNgetname:BLK%!12=BLK%!8:BLK%!16=4:!BLK%=64:SYS "Wimp_SendMessage",17,BLK%,BLK%!4 23810PROCseticon(0,1,A$) 23820REM ** LOAD ROUTINE HERE ** 23830PROCkillf:FUSE%=-1 23840OSCLI("LOAD "+A$+" "+STR$~(PIC%+4)) 23850PROCkillf 23860PIC$=FNleaf(A$):PROCwindname(2,PIC$) 23870PROCforcedrawmain 23880ENDPROC 23890 23900DEFPROCchars 23910VDU23,248,0,0,0,255,255,0,0,0 23920VDU23,249,0,0,126,255,255,126,0,0 23930VDU23,250,0,60,126,255,255,126,60,0 23940VDU23,251,60,126,255,255,255,255,126,60 23950VDU23,252,24,60,126,126,126,126,60,24 23960VDU23,253,24,60,60,60,60,60,60,24 23970VDU23,254,24,24,24,24,24,24,24,24 23980ENDPROC 23990 24000DEFPROCbackuppic 24010!VARS=PIC% 24020VARS!4=SPBUF% 24030A%=VARS 24040CALL backuppic 24050ENDPROC 24060 24070DEFPROCfillmask 24080VARS!8=SPBUF% 24090VARS!12=TRASP% 24100VARS!16=BTC% 24110A%=VARS 24120CALL fillmask 24130ENDPROC 24140 24150DEFFNleaf(F$) 24160IF INSTR(F$,".")=0 THEN =F$ 24170T$="" 24180LP%=LENF$ 24190WHILE MID$(F$,LP%,1)<>"." 24200T$=MID$(F$,LP%,1)+T$ 24210LP%-=1 24220ENDWHILE 24230=T$ 24240 24250DEFPROCspbuf(BS%) 24260IF BS%=0 THEN SYS "Wimp_SlotSize",CUSL%,-1:ENDPROC 24270SYS "Wimp_SlotSize",CUSL%+BS%,-1 24280SYS "Wimp_SlotSize",-1,-1 TO SPL% 24290IF SPL%<(CUSL%+BS%) THEN SYS "Wimp_SlotSize",CUSL%,-1:SPNE%=BS%:Q%=TRUE:ENDPROC ELSE Q%=FALSE 24300!SPBUF%=BS% 24310SPBUF%!8=16 24320SYS&2E,265,SPBUF% 24330SPSIZ%=BS% 24340ENDPROC 24350 24360DEFPROCspbuferr:PROCkillf:FUST%=-1:FUSE%=-1:PROCwindname(2,PIC$):PROCmessage(0,"No room to store sprite. ("+STR$(SPNE%)+" bytes needed)") 24370 24380DEFFNspritesize(DX%,DY%,PL%) 24390DX%=ABS(DX%) DIV 2:DY%=ABS(DY%) DIV 4 24400IF (DX% MOD 4)>0 THEN DX%=((DX% DIV 4)+1)*4 24410DX%+=16 24420=(DX%*DY%*(PL%+1))+1024 24430 24440DEFPROChelp 24450PROCseticon(9,0,""):PROCseticon(9,1,""):PROCseticon(9,2,"") 24460CASE FUSE% OF 24470WHEN 0: 24480PROCseticon(9,0,"Click SELECT over a pixel to change its colour to the currently selected") 24490PROCseticon(9,1,"one.") 24500WHEN 1: 24510PROCseticon(9,0,"Hold down SELECT while moving the mouse to draw freehand in the currently") 24520PROCseticon(9,1,"selected colour.") 24530WHEN 2: 24540PROCseticon(9,0,"Point to the start of the line and click SELECT, point to the end of the") 24550PROCseticon(9,1,"line and click SELECT again to fix. Clicking ADJUST will allow you to") 24560PROCseticon(9,2,"reposition the start of the line.") 24570WHEN 3: 24580PROCseticon(9,0,"Set the density and spread with the control window then click on the") 24590PROCseticon(9,1,"picture to spray with the current colour.") 24600WHEN 4: 24610PROCseticon(9,0,"Set the brush shape and scale with the control window then click on") 24620PROCseticon(9,1,"the picture to paint.") 24630WHEN 5: 24640PROCseticon(9,0,"Point to one corner of the rectangle and click. Move to the diagonally") 24650PROCseticon(9,1,"oposite corner and click again to fix. Clicking ADJUST will allow you") 24660PROCseticon(9,2,"to reposition the first corner.") 24670WHEN 6: 24680PROCseticon(9,0,"Point to one corner of the rectangle and click. Move to the diagonally") 24690PROCseticon(9,1,"oposite corner and click again to fix. Clicking ADJUST will allow you") 24700PROCseticon(9,2,"to reposition the first corner.") 24710WHEN 7: 24720PROCseticon(9,0,"Point to the centre of the circle and click. Move to any point on the") 24730PROCseticon(9,1,"circumfrence to set the size and click again to fix. Clicking ADJUST allows") 24740PROCseticon(9,2,"you to reposition the centre point.") 24750WHEN 8: 24760PROCseticon(9,0,"Point to the centre of the circle and click. Move to any point on the") 24770PROCseticon(9,1,"circumfrence to set the size and click again to fix. Clicking ADJUST allows") 24780PROCseticon(9,2,"you to reposition the centre point.") 24790WHEN 9: 24800PROCseticon(9,0,"Point to the first vertex and click. Move to the second vertex and click") 24810PROCseticon(9,1,"again. Move to the final one and click again to fix. ADJUST will let you") 24820PROCseticon(9,2,"start again.") 24830WHEN 10: 24840PROCseticon(9,0,"Point to the first vertex and click. Move to the second vertex and click") 24850PROCseticon(9,1,"again. Move to the final one and click again to fix. ADJUST will let you") 24860PROCseticon(9,2,"start again.") 24870WHEN 11: 24880PROCseticon(9,0,"Point to the centre and click. Move to a point along the major axis and") 24890PROCseticon(9,1,"click. Move to set the size and click again to fix. ADJUST allows you to") 24900PROCseticon(9,2,"start again.") 24910WHEN 12: 24920PROCseticon(9,0,"Point to the centre and click. Move to a point along the major axis and") 24930PROCseticon(9,1,"click. Move to set the size and click again to fix. ADJUST allows you to") 24940PROCseticon(9,2,"start again.") 24950WHEN 13: 24960PROCseticon(9,0,"Point to first corner and click. Move to second corner and click again.") 24970PROCseticon(9,1,"Move to third corner to set size and click to fix. ADJUST allows you to") 24980PROCseticon(9,2,"start again.") 24990WHEN 14: 25000PROCseticon(9,0,"Point to first corner and click. Move to second corner and click again.") 25010PROCseticon(9,1,"Move to third corner to set size and click to fix. ADJUST allows you to") 25020PROCseticon(9,2,"start again.") 25030WHEN 15: 25040PROCseticon(9,0,"Point to centre of arc and click. Move to a point on the arc and click again.") 25050PROCseticon(9,1,"Move to set the degree of the arc and click again to fix. ADJUST allows you") 25060PROCseticon(9,2,"to start again.") 25070WHEN 16: 25080PROCseticon(9,0,"Point to centre of sector and click. Move to start point on the circumfrence") 25090PROCseticon(9,1,"and click again. Move to set the degree and click again to fix. ADJUST allows") 25100PROCseticon(9,2,"you to start again.") 25110WHEN 17: 25120PROCseticon(9,0,"Point to centre of segment and click. Move to start point on circumfrence") 25130PROCseticon(9,1,"and click again. Move to set segment and click to fix. ADJUST allows you to") 25140PROCseticon(9,2,"start again.") 25150WHEN 18: 25160PROCseticon(9,0,"Point to lower-left corner of source area and click. Move to top-right corner") 25170PROCseticon(9,1,"and click to cut area. Move to position and click to paste. The transparency") 25180PROCseticon(9,2,"flags are used here.") 25190WHEN 19: 25200PROCseticon(9,0,"Point to lower-left corner of source area and click. Move to top-right corner") 25210PROCseticon(9,1,"and click to copy area. Move to position and click to paste. The transparency") 25220PROCseticon(9,2,"flags are used here.") 25230WHEN 20: 25240PROCseticon(9,0,"Point to lower-left corner of area and click. Move to top-right corner and") 25250PROCseticon(9,1,"click again to mirror. The transparency flags are used here.") 25260WHEN 21: 25270PROCseticon(9,0,"Point to lower-left corner of area and click. Move to top-right corner and") 25280PROCseticon(9,1,"click again to invert. The transparency flags are used here.") 25290WHEN 22: 25300PROCseticon(9,0,"Point to lower-left corner of area to preserve and click. Move to top-right") 25310PROCseticon(9,1,"corner and click again to strip surrounding area.") 25320WHEN 23: 25330PROCseticon(9,0,"Point to lower-left corner of source area and click. Move to top-right corner") 25340PROCseticon(9,1,"and click to fix. Do the same for destination area. The transparency flags") 25350PROCseticon(9,2,"are used here.") 25360WHEN 24: 25370PROCseticon(9,0,"Point to a pixel to the right of and adjacent to the colour to trace.") 25380PROCseticon(9,1,"Click to trace in the current colour.") 25390WHEN 25: 25400PROCseticon(9,0,"Point to the first vertex of the source area and click. Repeat for the other") 25410PROCseticon(9,1,"three vertices and for the four destination vertices. Clicking ADJUST at any") 25420PROCseticon(9,2,"point allows you to start again.") 25430WHEN 26: 25440PROCseticon(9,0,"Point inside the totally closed area to fill and click.") 25450WHEN 27: 25460PROCseticon(9,0,"Point to one corner of the area and click. Move to the diagonally oposite") 25470PROCseticon(9,1,"corner and click again to average.") 25480WHEN 28: 25490PROCseticon(9,0,"Point to one corner of the area and click. Move to the diagonally oposite") 25500PROCseticon(9,1,"corner and click again to tint with current colour.") 25510WHEN 29: 25520PROCseticon(9,0,"Set brush shape with control pannel. Move to position and click") 25530PROCseticon(9,1,"to use. The brush scale is ignored here.") 25540WHEN 30: 25550PROCseticon(9,0,"Set brush shape with control pannel. Move to position and click") 25560PROCseticon(9,1,"to use. The brush scale is ignored here.") 25570WHEN 31: 25580PROCseticon(9,0,"Set fill parameters with control box then click inside a totally bounded") 25590PROCseticon(9,1,"area to fill.") 25600WHEN 32: 25610PROCseticon(9,0,"Set point sizes and style from control window and click on OK.") 25620PROCseticon(9,1,"Move text to position and click to fix.") 25630WHEN 33: 25640PROCseticon(9,0,"Set up colour transformation with colour window then define rectangular") 25650PROCseticon(9,1,"area with last click to change colours.") 25660WHEN 34: 25670PROCseticon(9,0,"Set orientation and scale with control window and click to fix.") 25680WHEN 35: 25690PROCseticon(9,0,"Grab rectangle by lower-left and upper-right corners then use save window") 25700PROCseticon(9,1,"as usual to save.") 25710WHEN 36: 25720PROCseticon(9,0,"Position frame and click to fix.") 25730WHEN 37: 25740PROCseticon(9,0,"Select pattern from window and click in a totally enclosed area to fill.") 25750WHEN 38: 25760PROCseticon(9,0,"Set Red, Green and Blue percentages with the control window then define") 25770PROCseticon(9,1,"the rectangle to be changed by clicking bottom left then top right.") 25780PROCseticon(9,2,"Transparent colours will not be changed.") 25790WHEN 39: 25800PROCseticon(9,0,"Set weights for Red, Green and Blue components with the control window") 25810PROCseticon(9,1,"then define the rectangle to shade by clicking bottom left then top right.") 25820PROCseticon(9,2,"Transparent colours will not be changed.") 25830WHEN 40: 25840PROCseticon(9,0,"Set the X and Y resolutions for pixelation with the control window then") 25850PROCseticon(9,1,"define the rectangle to pixelate by clicking bottom left then top right.") 25860WHEN 41: 25870PROCseticon(9,0,"Define the rectangle to rotate by clicking bottom left then top right.") 25880PROCseticon(9,1,"Rotate area with the control window and click to rotate.") 25890PROCseticon(9,2,"Transparent colours will not be copied.") 25900ENDCASE 25910ENDPROC
� ><Archrome$Dir>.!RunImage %� Copyright Archimedes World 1991 � � �4,7:�:�;" at line ";�:� Fș "OS_GetEnv" � A$:� �A$,1)<>" " � LF$=�A$,�A$,""" ")+2) � LF$="" ( �setup 2� � �makerr <�action F�die P� Z��setup d�� POI% 256,TAS% 2000,BLK% 1000,MENU% 8*1024,MENUIND% 8*1024,SEL% 256,ICBLK% 256,VARS 128,MENAD%(300),MENALO% 16,CODE% 6*1024,IO% 256,TRANSTAB% 256 nMEOF%=0:MEIN%=0:MBUS%=� x$MENALO%="A -~" �B� PIC% 145*1024,SCALE% 32,PIXTAB% 256,PIXTAB2% 256,X%(8),Y%(8) �6SPBUF%=�:SPSIZ%=0:ș "Wimp_SlotSize",-1,-1 � CUSL% ��� PAL% 22600,OPAL% 22600,PALTAB% 512,BTC% 256,CTT% 256,TTB% 256,ROTTAB% 1800,RAND% 4096,PFILLS% 7000:!PAL%=22600:!OPAL%=22600:!PFILLS%=7000 � � BRUSH% 13000:!BRUSH%=13000 �-ș&2E,266,BRUSH%,"<Archrome$Dir>.Brushes" �+ș&2E,266,PAL%,"<Archrome$Dir>.Palette" �,ș&2E,266,OPAL%,"<Archrome$Dir>.Palette" �/ș&2E,266,PFILLS%,"<Archrome$Dir>.PatFills" �.�("LOAD <Archrome$Dir>.PalTab "+�~PALTAB%) �6�("LOAD <Archrome$Dir>.BTC "+�~BTC%):� byte -> pal �6�("LOAD <Archrome$Dir>.CTT "+�~CTT%):� pal -> byte �?�("LOAD <Archrome$Dir>.TTB "+�~TTB%):� (col*64)+tint -> pal �.�("LOAD <Archrome$Dir>.RotTab "+�~ROTTAB%) *�("LOAD <Archrome$Dir>.Code "+�~CODE%) .�("LOAD <Archrome$Dir>.RotTab "+�~ROTTAB%) /COL%=255:FUSE%=-1:FUST%=-1:FUCO%=0:BUTDO%=� "A$TAS%="TASK":ș"Wimp_Initialise",200,!TAS%,"Archrome" � HAND% ,�loadsprites 6 �loadvars @B!BLK%=-1:BLK%!4=0:BLK%!8=0:BLK%!12=64:BLK%!16=64:BLK%!20=&2102 JC� BLK%!24 10:$(BLK%!24)="!Archrome":BLK%!28=SPRITES%:BLK%!32=10 T(ș "Wimp_CreateIcon",,BLK% � ICHAND% ^NOWIND%=24:NOMENS%=17 h-� STORE% 15*1024,BUF% 4048,HAND%(NOWIND%) rSOF%=STORE% |�� Save,Info,Main,Palette,Airbrush,Brushes,Grid,SpriteSave,Area,Help,Linepat,Fillpat,EdBrush,EdFill,Text,Tback,FontParams,FillCont,ColRep,Frame,Pfills,RGBcont,Greyscale,Pixelate,Rotate � � �D|A �6ș "Wimp_OpenTemplate",,"<Archrome$Dir>.Templates" ��K%=0 � NOWIND% �� A$:$IO%=A$ �Hș "Wimp_LoadTemplate",,BUF%,SOF%,STORE%+(15*1024),-1,IO%,0 � ,,SOF% �� K%=2 � BUF%?35=&FF �.ș "Wimp_CreateWindow",,BUF% � HAND%(K%):� �ș "Wimp_CloseTemplate" �#�L%=15 � 46:�shadeicon(10,L%):� ��seticon(13,44,"16") ��23,6,0| ��systemvars � �chars �loadfonts !�buildmainmenu:�buildiconmenu � & 0��systemvars :!PIC%=145*1024 DPIC%!4=0 N PIC%!8=24 XPIC%!12=24 b8� IF L%=0 THEN SYS&2E,266,PIC%,"<Archrome$Dir>.Test" l&ș &2E,271,PIC%,"PIC",0,618,234,15 vPIC$="<Untitled>" �w� IF LF$<>"" THEN OSCLI("LOAD "+LF$+" "+STR$~(PIC%+4)):PIC$=FNleaf(LF$):PROCseticon(0,1,LF$) ELSE PIC$="<Untitled>" �ESM%=-1:EPM%=-1 �=GRCO%=-1:GRTI%=-1:GRLO%=�:GRWI%=1:GRHE%=1:GRBX%=0:GRBY%=0 �3GRXM%=1:GRXD%=1:GRYM%=1:GRYD%=1:GRFX%=�:GRFY%=� �ZOOM%=1 �USE%=0:LITY%=5:GRMA%=� �� PAT%(5):PAT%()=0:PALE%=8 �� ECF%(8,4):ECF%()=0:ROT%=0 �� GRFI%(15,1,4):GRFI%()=0 �0FIFC%=63:FIFT%=192:FILC%=3:FILT%=192:FILR%=0 � IP%=� �(SELBR%=1:BXM%=1:BXD%=1:BYM%=1:BYD%=1 �EDBR%=1:IDRAG%=�:CPF%=1 �openmain �windname(2,PIC$) � TRASP% 256, REPS% 256 �L%=0 � 255:REPS%?L%=L%:� *!�L%=0 � 252 � 4:TRASP%!L%=0:� 4� FONT$(255),FONTT$(64) >FONTB%=0:SREP%=255 H1MMX%=1:MMY%=1:MOP%=�:KUKE%=�:KUKD%=0:KUKL%=-1 R� \ f��loadvars pF%=�("<Archrome$Dir>.Vars") z��#F%,backuppic,fillmask,getpicbyte,getbrushbyte,setpicbyte,pixaverage,tintarea,averagebrush,tintbrush,findchangebox,graduatedfill,colrep,patfill,rgbcont,greyscale,rotate,transarea ��#F% ��backuppic+=CODE%:fillmask+=CODE%:getpicbyte+=CODE%:getbrushbyte+=CODE%:setpicbyte+=CODE%:pixaverage+=CODE%:tintarea+=CODE%:averagebrush+=CODE%:tintbrush+=CODE%:findchangebox+=CODE%:graduatedfill+=CODE%:colrep+=CODE% �Qpatfill+=CODE%:rgbcont+=CODE%:greyscale+=CODE%:rotate+=CODE%:transarea+=CODE% �� � ���loadfonts � N%=-1 �FONT$(0)="System Font" �;ș "XOS_ReadVarVal","Font$Path",IO%,256,,3 � ,,N% ;err% �� (err% � 1) � FONTS%=0:� �FP%=0:FONTS%=0 �� �+ș "Font_ListFonts",,IO%,FP%,-1 � ,,FP% "FONT$(FONTS%+1)=$IO%:FONTS%+=1 � FP%=-1 FONTS%-=1 $-ș "Font_ReadFontMax" � B%,C%,D%,E%,F%,G% .��seticon(16,12,�(B% � 1024)):�seticon(16,13,�(C% � 1152)):�seticon(16,14,�(D% � 1152)):�seticon(16,15,�(E% � 1152)):�seticon(16,16,�(F% � 1152)):�seticon(16,17,�(G% � 1152)) 8� B L��loadsprites V� SPRITES% 2000 `j!SPRITES%=2000:SPRITES%!4=0:SPRITES%!8=16:SPRITES%!12=16:ș &2E,266,SPRITES%,"<Archrome$Dir>.!Sprites" j� t ~��action �� � �poll �'� (REAS%=17 � REAS%=18) � BLK%!16=0 �� � ���die:OP%=0:�spbuf(0) �#ș "Wimp_CloseDown",HAND%,!TAS% �� �� � � ��poll �"ș "Wimp_GetPointerInfo",,BLK% !� BLK%!12<>HAND%(2) � MBUS%=� !BLK%=%10011111110100110000 !ș "Wimp_Poll",0,BLK% � REAS% � REAS%>-1 � �act (� 2 ��act <Ȏ REAS% � F� 0:�kuke:�picpoll P� 1:�redraw Z� 2:�opmain d� 3:�clmain n� 6:�mouse x � 9:�menu �� 7:�dragfin �� 17,18:�inmessage(BLK%!16) �� �� � ���kuke:� � KUKE% � � �KULI%=10 �ȗ MX%,MY%,MH%:KP%=� �� � �(-58) � �dzE �8� KUKL%<>-58 � KUKL%=-58:KUKD%=0:MY%+=4:KP%=�:� �dzE �)KUKD%+=1:� KUKD%<KULI% � KP%=�:� �dzE �KUKD%=KULI%:MY%+=4:KP%=� �� � �(-42) � �TbF 8� KUKL%<>-58 � KUKL%=-58:KUKD%=0:MY%-=4:KP%=�:� �TbF )KUKD%+=1:� KUKD%<KULI% � KP%=�:� �TbF KUKD%=KULI%:MY%-=4:KP%=� "� � �(-26) � �DJF ,8� KUKL%<>-58 � KUKL%=-58:KUKD%=0:MX%-=2:KP%=�:� �DJF 6)KUKD%+=1:� KUKD%<KULI% � KP%=�:� �DJF @KUKD%=KULI%:MX%-=2:KP%=� J� � �(-122) � �DrF T8� KUKL%<>-58 � KUKL%=-58:KUKD%=0:MX%+=2:KP%=�:� �DrF ^)KUKD%+=1:� KUKD%<KULI% � KP%=�:� �DrF hKUKD%=KULI%:MX%+=2:KP%=� r� � KP% � KUKL%=-1:KUKD%=0 |ȗ � MX%,MY% �� � ���redraw �Ȏ !BLK% � �� HAND%(2):�redrawmain �� HAND%(3):�redrawpal �� HAND%(5):�redrawbrush �� HAND%(11):�redrawpat �� HAND%(12):�redrawedbru �� HAND%(13):�redrawfill �� HAND%(15):�redrawtback �� HAND%(18):�redrawcolrep �� HAND%(20):�redrawpatfill � � &��redrawbrush 0'ș "Wimp_RedrawWindow",,BLK% � FIN% :�getbrushor D<ȕ FIN%:�plotbrushes:ș "Wimp_GetRectangle",,BLK% � FIN% N� X� b l��redrawedbru v'ș "Wimp_RedrawWindow",,BLK% � FIN% ��getedbruor �:ȕ FIN%:�plotedbru:ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � ���redrawpatfill �'ș "Wimp_RedrawWindow",,BLK% � FIN% ��getpatfillor �<ȕ FIN%:�plotpatfill:ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � �F��forcedrawpatfill:ș "Wimp_ForceRedraw",HAND%(20),0,-108,1100,0:� %��forcedrawedbru(x1%,y1%,x2%,y2%) !BLK%=HAND%(12) BLK%!4=x1% *BLK%!8=y1% 4BLK%!12=x2% >BLK%!16=y2% H'ș "Wimp_UpdateWindow",,BLK% � FIN% R�getedbruor \ȕ FIN% f�plotedbru p'ș "Wimp_GetRectangle",,BLK% � FIN% z� �� � ���forcedrawbrush �!BLK%=HAND%(5) �BLK%!4=0 �BLK%!8=-260 �BLK%!12=384 � BLK%!16=0 �'ș "Wimp_UpdateWindow",,BLK% � FIN% ��getbrushor �ȕ FIN% ��plotbrushes �'ș "Wimp_GetRectangle",,BLK% � FIN% � � $(��plot256sprite(SPA%,SPI$,POX%,POY%) .� �<>15 � � �DBI 8Z!SCALE%=1:SCALE%!4=1:SCALE%!8=1:SCALE%!12=1:ș "OS_SpriteOp",290,SPA%,SPI$,POX%,POY%:� B9� �<>ESM% � ESM%=�:EPM%=�:ș&40740,15,0,-1,-1,PIXTAB% Lș&35,-1,4 � ,,E% VV� E%<1 � SX%=2^(1-E%):!SCALE%=SX%:SCALE%!8=1 � SX%=2^(E%-1):!SCALE%=1:SCALE%!8=SX% `SCALE%!4=1:SCALE%!12=1 j=ș "OS_SpriteOp",308,SPA%,SPI$,POX%,POY%,0,SCALE%,PIXTAB% t� ~ ���plotpatfill ���L%=1 � 12:�plot256sprite(PFILLS%,�L%,WOX%+((L%-1)*84)+24,WOY%+12):� CPF%=L% � �col(0,0,0):ȓ WOX%+((CPF%-1)*84)+16,WOY%+4,78,76:ȓ WOX%+((CPF%-1)*84)+18,WOY%+4,74,76 �� �� � ���plotbrushes ��L%=1 � 12 �DBLK%!400=HAND%(5):BLK%!404=L%-1:ș "Wimp_GetIconState",,BLK%+400 �H�plot256sprite(BRUSH%,�L%,WOX%+(BLK%!408)+2,WOY%+(260+(BLK%!412))+4) �V� SELBR%=L% � �col(48,192,3):ȓ Ȑ WOX%+(BLK%!408)+2,WOY%+(260+(BLK%!412))+4,64,60 �� �� ��plotedbru �L%=1 � 12 EBLK%!400=HAND%(12):BLK%!404=L%-1:ș "Wimp_GetIconState",,BLK%+400 (:�plot256sprite(BRUSH%,�L%,WOX%+((L%-1)*64)+32,WOY%+20) 2G� EDBR%=L% � �col(48,192,3):ȓ Ȑ WOX%+((L%-1)*64)+32,WOY%+20,64,60 <� F#!SCALE%=(!SCALE%)*12:SCALE%!4=8 P�� �<>15 � ș "OS_SpriteOp",308,BRUSH%,�EDBR%,WOX%+28,WOY%+112,0,SCALE%,PIXTAB% � ș "OS_SpriteOp",308,BRUSH%,�EDBR%,WOX%+28,WOY%+112,0,SCALE% Z�EX%=WOX%+28:EY%=WOY%+112:�col(21,192,0):�L%=0 � 32:� EX%+(L%*24),EY%,EX%+(L%*24),EY%+512:�:�L%=0 � 16:� EX%,EY%+(L%*32),EX%+768,EY%+(L%*32):� d� n x��forcedrawmain �!BLK%=HAND%(2) �BLK%!4=0 �BLK%!8=-936*ZOOM% �BLK%!12=1236*ZOOM% � BLK%!16=0 �'ș "Wimp_UpdateWindow",,BLK% � FIN% � �getor �ȕ FIN% ��plotpic �'ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � !��quickdrawmain:� � VACB% � � !BLK%=HAND%(2) BLK%!4=CBMINX% "BLK%!8=CBMINY% ,BLK%!12=CBMAXX% 6BLK%!16=CBMAXY% @'ș "Wimp_UpdateWindow",,BLK% � FIN% J �getor Tȕ FIN% ^�plotpic h'ș "Wimp_GetRectangle",,BLK% � FIN% r� |� � ���inpic:� IP% � � � IP%=� �1ș "OS_SpriteOp",316,PIC%,"PIC" � V1,V2,V3,V4 �ș "OS_ChangedBox",2 �ș "OS_ChangedBox",1 �8� GCOL3,63:LINE 300,300,320,320:LINE 300,300,320,320 �%�23,6:�L%=1 � 5:� PAT%(L%):�:� 0| �ș6,163,242,PALE% �� � �@��inbackup:ș "OS_SpriteOp",316,SPBUF%,"PIC" � B1,B2,B3,B4:� � F��insprite(ma%,sa%,sn$):ș &2E,316+ma%,sa%,sn$ � IS1,IS2,IS3,IS4:� (��outsprite:ș &2E,IS1,IS2,IS3,IS4:� & 0.��outbackup:ș "OS_SpriteOp",B1,B2,B3,B4:� : D��outpic:� � IP% � � N IP%=� X!ș "OS_ChangedBox",-1 � ,CBA% b�� �(CBA%!4)=-1 � �(CBA%!8)=-1 � �(CBA%!12)=-1 � �(CBA%!16)=-1 � VACB%=�:ș "OS_ChangedBox":ș "OS_SpriteOp",V1,V2,V3,V4:� � VACB%=� l*CBMINX%=CBA%!4:CBMINX%=CBMINX%*ZOOM%*2 v3CBMINY%=CBA%!8:CBMINY%=(-936+(CBMINY%*4))*ZOOM% �+CBMAXX%=CBA%!12:CBMAXX%=CBMAXX%*ZOOM%*2 �4CBMAXY%=CBA%!16:CBMAXY%=(-936+(CBMAXY%*4))*ZOOM% �CBMAXX%+=4*ZOOM% �CBMAXY%+=4*ZOOM% �ș "OS_ChangedBox" � ș "OS_SpriteOp",V1,V2,V3,V4 �� � ���redrawmain �� FUSE%=32 � �� FONT%<>0 � EFM%<>-1 � �[� �<>EFM% � �inpic:ș "ColourTrans_SetFontColours",FHAND%,BPAL%,FPAL%,14:�outpic:EFM%=� �� � 'ș "Wimp_RedrawWindow",,BLK% � FIN% �getor 8ȕ FIN%:�plotpic:ș "Wimp_GetRectangle",,BLK% � FIN% *� 4� > H ��plotpic RH� �=15 � ZOOM%=1 � ș "OS_SpriteOp",290,PIC%,"PIC",WOX%,WOY%:�grid:� \9� �<>ESM% � ESM%=�:EPM%=�:ș&40740,15,0,-1,-1,PIXTAB% fș&35,-1,4 � ,,E% pV� E%<1 � SX%=2^(1-E%):!SCALE%=SX%:SCALE%!8=1 � SX%=2^(E%-1):!SCALE%=1:SCALE%!8=SX% z!SCALE%=(!SCALE%)*ZOOM% �SCALE%!4=ZOOM% �SCALE%!12=1 �*� �=15 � TPIXTAB%=0 � TPIXTAB%=PIXTAB% �Gș "OS_SpriteOp",308,PIC%,"PIC",WOX%,WOY%,0,SCALE%,TPIXTAB%:�grid:� � �C��grid:� GRCO%=-1 � (2*GRWI%*ZOOM%)<16 � (4*GRHE%*ZOOM%)<16 � � ��gridcol �� X%,Y% �=X%=(((BLK%!28)-WOX%) � (ZOOM%*(2*GRWI%)))*(2*GRWI%*ZOOM%) �=Y%=(((BLK%!32)-WOY%) � (ZOOM%*(4*GRHE%)))*(4*GRHE%*ZOOM%) �XOF%=(GRWI%-GRBX%)*2*ZOOM% �YOF%=(GRHE%-GRBY%)*4*ZOOM% �X%+=WOX%-XOF% Y%+=WOY%-YOF% D�:� X%,(BLK%!32),X%,(BLK%!40):X%+=(2*GRWI%*ZOOM%):� X%>(BLK%!36) D�:� (BLK%!28),Y%,(BLK%!36),Y%:Y%+=(4*GRHE%*ZOOM%):� Y%>(BLK%!40) $� . 8��plotpal(PTU%) B�col(63,192,0) L� VDU4:PRINT WOX%,WOY% V� �<>15 � � �DtN `tș "OS_SpriteOp",290,PTU%,"Palette",WOX%,WOY%:� PTU%=PAL% � ȓ WOX%+((COL% � 32)*24),WOY%+((COL% � 32)*28),24,28 j� t9� �<>EPM% � ESM%=�:EPM%=�:ș&40740,15,0,-1,-1,PIXTAB% ~ș&35,-1,4 � ,,E% �V� E%<1 � SX%=2^(1-E%):!SCALE%=SX%:SCALE%!8=1 � SX%=2^(E%-1):!SCALE%=1:SCALE%!8=SX% �SCALE%!4=1 �SCALE%!12=1 �Bș "OS_SpriteOp",308,PTU%,"Palette",WOX%,WOY%,0,SCALE%,PIXTAB% �F� PTU%=PAL% � ȓ WOX%+((COL% � 32)*24),WOY%+((COL% � 32)*28),24,28 �� � ���trasp(TC%) �TRASP%?TC%=(TRASP%?TC%) � 1 �5ș "OS_SpriteOp",316,PAL%,"Palette" � V1,V2,V3,V4 �+TX%=((TC% � 32)*24):TY%=((TC% � 32)*28) �r� (TRASP%?TC%)=0 � �0,PALTAB%?(TC%*2) Ȝ PALTAB%?((TC%*2)+1) � �anticol(PALTAB%?(TC%*2),PALTAB%?((TC%*2)+1),0) =� TX%+6,TY%+20,TX%+18,TY%+20:� TX%+12,TY%+8,TX%+12,TY%+20 ș "OS_SpriteOp",V1,V2,V3,V4 � (��redrawpal 2'ș "Wimp_RedrawWindow",,BLK% � FIN% < �getpalor F>ȕ FIN%:�plotpal(PAL%):ș "Wimp_GetRectangle",,BLK% � FIN% P� Z� d n��redrawtback x'ș "Wimp_RedrawWindow",,BLK% � FIN% � �getpalor �ȕ FIN%:�plotpal(OPAL%) �K�col(63,192,0):ȓ WOX%+((FONTB% � 32)*24),WOY%+((FONTB% � 32)*28),24,28 �'ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � ���redrawcolrep �'ș "Wimp_RedrawWindow",,BLK% � FIN% ��getpalor:WOY%-=328 �]ȕ FIN%:WOY%+=290:�plotpal(OPAL%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224:WOY%-=290 �B�plotpal(SPBUF%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224 �I�col(63,192,0):ȓ WOX%+((SREP% � 32)*24),WOY%+((SREP% � 32)*28),24,28 'ș "Wimp_GetRectangle",,BLK% � FIN% � � " ,��forcedrawcolrep 6!BLK%=HAND%(18) @BLK%!4=0 JBLK%!8=-556 TBLK%!12=770 ^ BLK%!16=0 h'ș "Wimp_UpdateWindow",,BLK% � FIN% r�getpalor:WOY%-=328 |ȕ FIN% �UWOY%+=290:�plotpal(OPAL%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224:WOY%-=290 �B�plotpal(SPBUF%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224 �I�col(63,192,0):ȓ WOX%+((SREP% � 32)*24),WOY%+((SREP% � 32)*28),24,28 �'ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � � ݤcecf �� �high(11,18) � =1 �� �high(11,19) � =2 �� �high(11,20) � =3 �� �high(11,21) � =4 �=0 ��redrawpat 'ș "Wimp_RedrawWindow",,BLK% � FIN% & �getpator 0Iȕ FIN%:�plotpal(OPAL%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224 :-CECF%=�cecf:�K%=0 � 7:L%=ECF%(K%+1,CECF%) DcPE%=BTC%?L%:�col(PALTAB%?(PE%*2),PALTAB%?((PE%*2)+1),0):ȓ Ȑ WOX%-146,(WOY%+276)-(K%*40),38,36 N� X'ș "Wimp_GetRectangle",,BLK% � FIN% b� l� v �ݤgrafilno �� �high(13,17) � =0 �� �high(13,18) � =1 �� �high(13,19) � =2 �� �high(13,20) � =3 �� �high(13,21) � =4 �=-1 � ���redrawfill �'ș "Wimp_RedrawWindow",,BLK% � FIN% �!�getpator:WOY%-=140:WOX%-=140 �qȕ FIN%:WOY%+=232:WOX%+=380:�plotpal(OPAL%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224:WOX%-=140:WOY%-=140 �xFIX%=WOX%+200:GRFIN%=�grafilno:�L%=0 � 15:� GRFIN%<>-1 � �col(GRFI%(L%,0,GRFIN%),GRFI%(L%,1,GRFIN%),0) � �col(0,0,0) 'ȓ Ȑ FIX%,WOY%-28,42,32:FIX%+=44:� 'ș "Wimp_GetRectangle",,BLK% � FIN% � � * 4��forcedrawfill >!BLK%=HAND%(13) HBLK%!4=0 RBLK%!8=-500 \BLK%!12=1200 fBLK%!16=-360 p'ș "Wimp_UpdateWindow",,BLK% � FIN% z �getpator:WOY%-=48:WOX%+=100 �xFIX%=WOX%+200:GRFIN%=�grafilno:�L%=0 � 15:� GRFIN%<>-1 � �col(GRFI%(L%,0,GRFIN%),GRFI%(L%,1,GRFIN%),0) � �col(0,0,0) �'ȓ Ȑ FIX%,WOY%-28,42,32:FIX%+=44:� �ȕ FIN% �'ș "Wimp_GetRectangle",,BLK% � FIN% �� �� � ���forcedrawpat �!BLK%=HAND%(11) �BLK%!4=0 �BLK%!8=-356 �BLK%!12=100 � BLK%!16=0 'ș "Wimp_UpdateWindow",,BLK% � FIN% �getpator ȕ FIN% $A�plotpal(OPAL%):�col(0,0,0):� WOX%,WOY%+224,WOX%+770,WOY%+224 .CECF%=�cecf 8� RK%=0 � 7 BL%=ECF%(RK%+1,CECF%) LdPE%=BTC%?L%:�col(PALTAB%?(PE%*2),PALTAB%?((PE%*2)+1),0):ȓ Ȑ WOX%-146,(WOY%+276)-(RK%*40),38,36 V,ȓ Ȑ WOX%-146,(WOY%+276)-(RK%*40),38,36 `� j'ș "Wimp_GetRectangle",,BLK% � FIN% t� ~� � �&ݤctb(co%,ti%):by%=-1:�L%=0 to 255 � ���drawpicinit �!BLK%=HAND%(2) �BLK%!4=0 �BLK%!8=-936 �BLK%!12=1236 � BLK%!16=0 �'ș "Wimp_UpdateWindow",,BLK% � FIN% � �getor �� ��forcedrawpal(PTU%) !BLK%=HAND%(3) BLK%!4=0 (BLK%!8=-228 2BLK%!12=770 < BLK%!16=0 F'ș "Wimp_UpdateWindow",,BLK% � FIN% P �getpalor Zȕ FIN% d�plotpal(PTU%) n'ș "Wimp_GetRectangle",,BLK% � FIN% x� �� � ���forcedrawtback �!BLK%=HAND%(15) �BLK%!4=0 �BLK%!8=-228 �BLK%!12=770 � BLK%!16=0 �'ș "Wimp_UpdateWindow",,BLK% � FIN% � �getpalor �ȕ FIN% ��plotpal(OPAL%) �K�col(63,192,0):ȓ WOX%+((FONTB% � 32)*24),WOY%+((FONTB% � 32)*28),24,28 'ș "Wimp_GetRectangle",,BLK% � FIN% � � " ,��getpalor 6WOX%=BLK%!4-BLK%!20 @WOY%=(BLK%!16-BLK%!24)-228 J� T ^��getpator hWOX%=(BLK%!4-BLK%!20)+180 rWOY%=(BLK%!16-BLK%!24)-340 |� � � ��picpoll �"ș "Wimp_GetPointerInfo",,BLK% �3� VDU4:PRINTTAB(0,0);MBUS%;",";BLK%!8;" ":VDU5 �%� MBUS% � BLK%!8<>0 � � � MBUS%=� �D� BLK%!12<HAND%(0) � BLK%!12>HAND%(NOWIND%) � IDRAG%=(BLK%!8<>0) �� BLK%!8=0 � IDRAG%=� �&� VDU4:PRINTTAB(0,0);BLK%!16;" " �)� BLK%!12<>HAND%(2) � BLK%!16<>-1 � � �� BLK%!8<>0 � IDRAG% � � �"X%=!BLK%:Y%=BLK%!4:BUT%=BLK%!8 �� BUT%=2 � � �Ȏ FUSE% � F� 1:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:� �Db` '� BUT%=0 � FUST%=0 � FUST%=0:� �Db` 8�picpos:�inpic:�setcol:�l(X%(0),Y%(0),X%,Y%):�outpic &�quickdrawmain 0X%(0)=X%:Y%(0)=Y% :�� 2:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�3,63 Ȝ 192:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:� �Db` D� FUST%=0 � � �Db` N�� BUT%=1 � �inpic:�3,63 Ȝ 192:� X%(0),Y%(0),OX%,OY%:�picpos:X%(0)=X%:Y%(0)=Y%:OX%=X%:OY%=Y%:FUST%=1:�3,63 Ȝ 192:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:� �Db` X�� BUT%=4 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�picpos:�setcol:�l(X%(0),Y%(0),X%,Y%):X%(0)=X%:Y%(0)=Y%:OX%=X%:OY%=Y%:�eoc:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain:� �Db` b&�picpos:� X%=OX% � Y%=OY% � � �Db` l^�inpic:�eoc:� X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain v~� 4:� FUST%=0 � �paintscale:�picpos:�inpic:�eorback:�paintbrush(X%,Y%):�outpic:�quickdrawmain:OX%=X%:OY%=Y%:FUST%=1:� �Db` ��picpos ��� X%<>OX% � Y%<>OY% � �paintscale:�inpic:�eorback:�paintbrush(OX%,OY%):�paintbrush(X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain ��� 5:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain:� �Db` �� FUST%=0 � � �Db` ��� BUT%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` ��� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�picpos:�setcol:�r(X%(0),Y%(0),X%-X%(0),Y%-Y%(0)):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �Db` �&�picpos:� X%=OX% � Y%=OY% � � �Db` �x�inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):OX%=X%:OY%=Y%:ȓ X%(0),Y%(0),X%-X%(0),Y%-Y%(0):�outpic:�quickdrawmain Н� 6:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:ȓ Ȑ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain:� �Db` �� FUST%=0 � � �Db` �� BUT%=1 � �inpic:�eoc:ȓ Ȑ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` ��� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � �inpic:�eoc:ȓ Ȑ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�picpos:�setcol:ȓ Ȑ X%(0),Y%(0),X%-X%(0),Y%-Y%(0):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �Db` �&�picpos:� X%=OX% � Y%=OY% � � �Db` ~�inpic:�eoc:ȓ Ȑ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):OX%=X%:OY%=Y%:ȓ Ȑ X%(0),Y%(0),X%-X%(0),Y%-Y%(0):�outpic:�quickdrawmain �� 7:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:ȏ X%(0),Y%(0),�dist(OX%,OY%):�outpic:�quickdrawmain:� �Db` � FUST%=0 � � �Db` {� BUT%=1 � �inpic:�eoc:ȏ X%(0),Y%(0),�dist(OX%,OY%):�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` *�� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � �inpic:�eoc:ȏ X%(0),Y%(0),�dist(OX%,OY%):�picpos:�setcol:ȏ X%(0),Y%(0),�dist(X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �Db` 4&�picpos:� X%=OX% � Y%=OY% � � �Db` >n�inpic:�eoc:ȏ X%(0),Y%(0),�dist(OX%,OY%):OX%=X%:OY%=Y%:ȏ X%(0),Y%(0),�dist(X%,Y%):�outpic:�quickdrawmain H�� 8:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:ȏ Ȑ X%(0),Y%(0),�dist(OX%,OY%):�outpic:�quickdrawmain:� �Db` R� FUST%=0 � � �Db` \~� BUT%=1 � �inpic:�eoc:ȏ Ȑ X%(0),Y%(0),�dist(OX%,OY%):�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` f�� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � �inpic:�eoc:ȏ Ȑ X%(0),Y%(0),�dist(OX%,OY%):�picpos:�setcol:ȏ Ȑ X%(0),Y%(0),�dist(X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �Db` p&�picpos:� X%=OX% � Y%=OY% � � �Db` zt�inpic:�eoc:ȏ Ȑ X%(0),Y%(0),�dist(OX%,OY%):OX%=X%:OY%=Y%:ȏ Ȑ X%(0),Y%(0),�dist(X%,Y%):�outpic:�quickdrawmain ��� 9:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:� �Db` �� FUST%=0 � � �Db` �}� BUT%=1 � FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` �i� BUT%=1 � FUST%=2 � �inpic:�eoc:�tri(5,OX%,OY%):�picpos:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` ��� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � FUST%=1 � �inpic:�eoc:X%(1)=OX%:Y%(1)=OY%:�picpos:OX%=X%:OY%=Y%:� X%(1),Y%(1),X%,Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain:�letgo:FUST%=2:� �Db` ��� BUT%=4 � (OX%<>X%(1) � OY%<>Y%(1)) � FUST%=2 � �inpic:�eoc:�picpos:�tri(5,OX%,OY%):�setcol:�tri(0,X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �Db` �&�picpos:� X%=OX% � Y%=OY% � � �Db` �j� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain Ԕ� FUST%=2 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:� X%(1),Y%(1),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:� X%(1),Y%(1),X%,Y%:�outpic:�quickdrawmain ގ� 10:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:� �Db` �� FUST%=0 � � �Db` �}� BUT%=1 � FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` �j� BUT%=1 � FUST%=2 � �inpic:�eoc:�tri(85,OX%,OY%):�picpos:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` �� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � FUST%=1 � �inpic:�eoc:X%(1)=OX%:Y%(1)=OY%:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:�tri(85,X%,Y%):�outpic:�quickdrawmain:�letgo:FUST%=2:� �Db` �� BUT%=4 � (OX%<>X%(1) � OY%<>Y%(1)) � FUST%=2 � �inpic:�eoc:�picpos:�tri(85,OX%,OY%):�setcol:�tri(85,X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �Db` &�picpos:� X%=OX% � Y%=OY% � � �Db` $j� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain .`� FUST%=2 � �inpic:�eoc:�tri(85,OX%,OY%):OX%=X%:OY%=Y%:�tri(85,X%,Y%):�outpic:�quickdrawmain 8�� 11:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:� �Db` B� FUST%=0 � � �Db` L}� BUT%=1 � FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` Vl� BUT%=1 � FUST%=2 � �inpic:�eoc:�elip(&C5,OX%,OY%):�picpos:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` `�� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � FUST%=1 � �inpic:�eoc:X%(1)=OX%:Y%(1)=OY%:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:�elip(&C5,X%,Y%):�outpic:�quickdrawmain:�letgo:FUST%=2:� �Db` j�� BUT%=4 � (OX%<>X%(1) � OY%<>Y%(1)) � FUST%=2 � �inpic:�eoc:�picpos:�elip(&C5,OX%,OY%):�setcol:�elip(&C5,X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �Db` t&�picpos:� X%=OX% � Y%=OY% � � �Db` ~j� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain �d� FUST%=2 � �inpic:�eoc:�elip(&C5,OX%,OY%):OX%=X%:OY%=Y%:�elip(&C5,X%,Y%):�outpic:�quickdrawmain ��� 12:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:� �Db` �� FUST%=0 � � �Db` �}� BUT%=1 � FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` �l� BUT%=1 � FUST%=2 � �inpic:�eoc:�elip(&CD,OX%,OY%):�picpos:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` ��� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � FUST%=1 � �inpic:�eoc:X%(1)=OX%:Y%(1)=OY%:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:�elip(&CD,X%,Y%):�outpic:�quickdrawmain:�letgo:FUST%=2:� �Db` į� BUT%=4 � (OX%<>X%(1) � OY%<>Y%(1)) � FUST%=2 � �inpic:�eoc:�picpos:�elip(&CD,OX%,OY%):�setcol:�elip(&CD,X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �Db` �&�picpos:� X%=OX% � Y%=OY% � � �Db` �j� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain �d� FUST%=2 � �inpic:�eoc:�elip(&CD,OX%,OY%):OX%=X%:OY%=Y%:�elip(&CD,X%,Y%):�outpic:�quickdrawmain �� 13:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:� �Db` �� FUST%=0 � � �Db` }� BUT%=1 � FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` l� BUT%=1 � FUST%=2 � �inpic:�eoc:�para(0,0,OX%,OY%):�picpos:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` �� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � FUST%=1 � �inpic:�eoc:X%(1)=OX%:Y%(1)=OY%:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:�para(0,0,X%,Y%):�outpic:�quickdrawmain:�letgo:FUST%=2:� �Db` �� BUT%=4 � (OX%<>X%(1) � OY%<>Y%(1)) � FUST%=2 � �inpic:�eoc:�picpos:�para(0,0,OX%,OY%):�setcol:�para(1,0,X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �Db` (&�picpos:� X%=OX% � Y%=OY% � � �Db` 2j� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain <d� FUST%=2 � �inpic:�eoc:�para(0,0,OX%,OY%):OX%=X%:OY%=Y%:�para(0,0,X%,Y%):�outpic:�quickdrawmain F�� 14:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:� �Db` P� FUST%=0 � � �Db` Z}� BUT%=1 � FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` dl� BUT%=1 � FUST%=2 � �inpic:�eoc:�para(0,1,OX%,OY%):�picpos:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` n�� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � FUST%=1 � �inpic:�eoc:X%(1)=OX%:Y%(1)=OY%:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:�para(0,1,X%,Y%):�outpic:�quickdrawmain:�letgo:FUST%=2:� �Db` x�� BUT%=4 � (OX%<>X%(1) � OY%<>Y%(1)) � FUST%=2 � �inpic:�eoc:�picpos:�para(0,1,OX%,OY%):�setcol:�para(0,1,X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �Db` �&�picpos:� X%=OX% � Y%=OY% � � �Db` �j� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain �d� FUST%=2 � �inpic:�eoc:�para(0,1,OX%,OY%):OX%=X%:OY%=Y%:�para(0,1,X%,Y%):�outpic:�quickdrawmain ��� 15:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:� �Db` �� FUST%=0 � � �Db` �}� BUT%=1 � FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` �l� BUT%=1 � FUST%=2 � �inpic:�eoc:�elip(&A5,OX%,OY%):�picpos:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` Ⱦ� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � FUST%=1 � �inpic:�eoc:X%(1)=OX%:Y%(1)=OY%:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:�elip(&A5,X%,Y%):�outpic:�quickdrawmain:�letgo:FUST%=2:� �Db` ү� BUT%=4 � (OX%<>X%(1) � OY%<>Y%(1)) � FUST%=2 � �inpic:�eoc:�picpos:�elip(&A5,OX%,OY%):�setcol:�elip(&A5,X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �Db` �&�picpos:� X%=OX% � Y%=OY% � � �Db` �j� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain �d� FUST%=2 � �inpic:�eoc:�elip(&A5,OX%,OY%):OX%=X%:OY%=Y%:�elip(&A5,X%,Y%):�outpic:�quickdrawmain ��� 16:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:� �Db` � FUST%=0 � � �Db` }� BUT%=1 � FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` l� BUT%=1 � FUST%=2 � �inpic:�eoc:�elip(&B5,OX%,OY%):�picpos:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` "�� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � FUST%=1 � �inpic:�eoc:X%(1)=OX%:Y%(1)=OY%:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:�elip(&B5,X%,Y%):�outpic:�quickdrawmain:�letgo:FUST%=2:� �Db` ,�� BUT%=4 � (OX%<>X%(1) � OY%<>Y%(1)) � FUST%=2 � �inpic:�eoc:�picpos:�elip(&B5,OX%,OY%):�setcol:�elip(&B5,X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �Db` 6&�picpos:� X%=OX% � Y%=OY% � � �Db` @j� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain Jd� FUST%=2 � �inpic:�eoc:�elip(&B5,OX%,OY%):OX%=X%:OY%=Y%:�elip(&B5,X%,Y%):�outpic:�quickdrawmain T�� 17:� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain:� �Db` ^� FUST%=0 � � �Db` h}� BUT%=1 � FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` rl� BUT%=1 � FUST%=2 � �inpic:�eoc:�elip(&AD,OX%,OY%):�picpos:FUST%=0:�outpic:�quickdrawmain:�letgo:� �Db` |�� BUT%=4 � (OX%<>X%(0) � OY%<>Y%(0)) � FUST%=1 � �inpic:�eoc:X%(1)=OX%:Y%(1)=OY%:� X%(0),Y%(0),OX%,OY%:�picpos:OX%=X%:OY%=Y%:�elip(&AD,X%,Y%):�outpic:�quickdrawmain:�letgo:FUST%=2:� �Db` ��� BUT%=4 � (OX%<>X%(1) � OY%<>Y%(1)) � FUST%=2 � �inpic:�eoc:�picpos:�elip(&AD,OX%,OY%):�setcol:�elip(&AD,X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=0:� �Db` �&�picpos:� X%=OX% � Y%=OY% � � �Db` �j� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:OX%=X%:OY%=Y%:� X%(0),Y%(0),X%,Y%:�outpic:�quickdrawmain �d� FUST%=2 � �inpic:�eoc:�elip(&AD,OX%,OY%):OX%=X%:OY%=Y%:�elip(&AD,X%,Y%):�outpic:�quickdrawmain �(� 19:� FUST%<2 � �grabpoll(0):� �Db` �k� BUT%=1 � �inpic:�picpos:�pgrab(OX%,OY%,3):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:FUST%=0:�spinit:� �Db` �}� BUT%=4 � �inpic:�picpos:�pgrab(OX%,OY%,3):�pgrab(X%,Y%,0):OX%=X%:OY%=Y%:�pgrab(OX%,OY%,3):�outpic:�quickdrawmain:� �Db` �&�picpos:� X%=OX% � Y%=OY% � � �Db` �Q�inpic:�pgrab(OX%,OY%,3):OX%=X%:OY%=Y%:�pgrab(X%,Y%,3):�outpic:�quickdrawmain �(� 18:� FUST%<2 � �grabpoll(1):� �Db` �k� BUT%=1 � �inpic:�picpos:�pgrab(OX%,OY%,3):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:FUST%=0:�spinit:� �Db` �x� BUT%=4 � �inpic:�picpos:�pgrab(OX%,OY%,3):�pgrab(X%,Y%,0):OX%=X%:OY%=Y%:�pgrab(OX%,OY%,3):�outpic:�quickdrawmain:� �&�picpos:� X%=OX% � Y%=OY% � � �Db` Q�inpic:�pgrab(OX%,OY%,3):OX%=X%:OY%=Y%:�pgrab(X%,Y%,3):�outpic:�quickdrawmain %� 20:� FUST%<2 � �rectpoll:� �Db` G�spbuf(�spritesize(OX%-X%(0),OY%-Y%(0),1)):� Q% � �spinit:�spbuferr &C�inpic:GRN$="GRAB":ș&2E,272,SPBUF%,"GRAB",,X%(0),Y%(0),OX%,OY% 0.ș&2E,285,SPBUF%,"GRAB":GRABM%=8:�fillmask :0ș&2E,290,SPBUF%,"GRAB",X%(0),Y%(0),3+GRABM% Dmș&2E,303,SPBUF%,"GRAB":ș&2E,290,SPBUF%,"GRAB",X%(0),Y%(0),GRABM%:�outpic:FUST%=0:�spinit:�quickdrawmain N%� 21:� FUST%<2 � �rectpoll:� �Db` XG�spbuf(�spritesize(OX%-X%(0),OY%-Y%(0),1)):� Q% � �spinit:�spbuferr bC�inpic:GRN$="GRAB":ș&2E,272,SPBUF%,"GRAB",,X%(0),Y%(0),OX%,OY% l.ș&2E,285,SPBUF%,"GRAB":GRABM%=8:�fillmask v0ș&2E,290,SPBUF%,"GRAB",X%(0),Y%(0),3+GRABM% �mș&2E,289,SPBUF%,"GRAB":ș&2E,290,SPBUF%,"GRAB",X%(0),Y%(0),GRABM%:�outpic:FUST%=0:�spinit:�quickdrawmain �%� 22:� FUST%<2 � �rectpoll:� �Db` �"�inpic:�setcol:�L%=0 � 932 � 4 �/� L%<Y%(0) � L%>OY% � � 0,L%,1232,L%:� �t|[ �!� X%(0)>0 � � 0,L%,X%(0)-2,L% �#� OY%<1232 � � OX%+2,L%,1232,L% �$�:�outpic:FUST%=0:�quickdrawmain �%� 23:� FUST%<2 � �rectpoll:� �Db` И� FUCO%=0 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain:X%(1)=X%(0):Y%(1)=Y%(0):X%(2)=OX%:Y%(2)=OY%:FUST%=0:FUCO%=1:� �Db` �X�spbuf(�spritesize(X%(2)-X%(1),Y%(2)-Y%(1),�(�high(8,14)))):� Q% � �spinit:�spbuferr �s�inpic:�eoc:ȓ X%(1),Y%(1),X%(2)-X%(1),Y%(2)-Y%(1):GRN$="GRAB":ș&2E,272,SPBUF%,"GRAB",,X%(1),Y%(1),X%(2),Y%(2) �I� �high(8,14) � ș&2E,285,SPBUF%,"GRAB":GRABM%=8:�fillmask � GRABM%=0 �]�grabflip:SCALE%!8=X%(2)-X%(1):SCALE%!12=Y%(2)-Y%(1):!SCALE%=OX%-X%(0):SCALE%!4=OY%-Y%(0) dș&2E,308,SPBUF%,"GRAB",X%(0),Y%(0),GRABM%,SCALE%:�outpic:FUST%=0:FUCO%=0:�spinit:�quickdrawmain 5� 25:�inpic:�3,63:�69,300,300:�69,300,300:�picpos � X%=OX% � Y%=OY% � �Tj\ �mapline *7� BUT%<>1 � BUT%<>4 � �outpic:�quickdrawmain:� �Db` 4� BUT%=4 � �tl\ >�eoc HȎ FUCO% � R� 2:� X%(1),Y%(1),X%,Y% \5� 3:� X%(1),Y%(1),X%(2),Y%(2):� X%(2),Y%(2),X%,Y% fc� 4:� X%(1),Y%(1),X%(2),Y%(2):� X%(2),Y%(2),X%(3),Y%(3):� X%(3),Y%(3),X%,Y%:� X%,Y%,X%(1),Y%(1) po� 5:� X%(1),Y%(1),X%(2),Y%(2):� X%(2),Y%(2),X%(3),Y%(3):� X%(3),Y%(3),X%(4),Y%(4):� X%(4),Y%(4),X%(1),Y%(1) z�� 6:� X%(1),Y%(1),X%(2),Y%(2):� X%(2),Y%(2),X%(3),Y%(3):� X%(3),Y%(3),X%(4),Y%(4):� X%(4),Y%(4),X%(1),Y%(1):� X%(5),Y%(5),X%,Y% ��� 7:� X%(1),Y%(1),X%(2),Y%(2):� X%(2),Y%(2),X%(3),Y%(3):� X%(3),Y%(3),X%(4),Y%(4):� X%(4),Y%(4),X%(1),Y%(1):� X%(5),Y%(5),X%(6),Y%(6):� X%(6),Y%(6),X%,Y% ��� 8:� X%(1),Y%(1),X%(2),Y%(2):� X%(2),Y%(2),X%(3),Y%(3):� X%(3),Y%(3),X%(4),Y%(4):� X%(4),Y%(4),X%(1),Y%(1):� X%(5),Y%(5),X%(6),Y%(6):� X%(6),Y%(6),X%(7),Y%(7):� X%(7),Y%(7),X%,Y%:� X%(5),Y%(5),X%,Y% �� �0FUCO%=1:�letgo:�outpic:�quickdrawmain:� �Db` ��eoc �� FUCO%=8 � � �d^\ �FX%(FUCO%)=X%:Y%(FUCO%)=Y%:� FUCO%<>4 � � X%(FUCO%),Y%(FUCO%),X%,Y% �9� FUCO%=3 � FUCO%=7 � � X%(FUCO%-2),Y%(FUCO%-2),X%,Y% �(OX%=X%:OY%=Y%:FUCO%+=1:�letgo:� �Db` ޥX%(8)=X%:Y%(8)=Y%:�L%=1 � 3:� X%(L%),Y%(L%),X%(L%+1),Y%(L%+1):� X%(L%+4),Y%(L%+4),X%(L%+5),Y%(L%+5):�:� X%(1),Y%(1),X%(4),Y%(4):� X%(5),Y%(5),X%(8),Y%(8):FUCO%=1 �+�outpic:�quickdrawmain:�pixelmap:� �Db` �%� 27:� FUST%<2 � �rectpoll:� �Db` �-�spinit:�spbuf(145*1024):� Q% � �spbuferr �backuppic:�swapcorns VARS!20=BTC%:VARS!24=PALTAB% VARS!28=PIC%:VARS!32=SPBUF% $VARS!36=X%(0):VARS!40=Y%(0) .VARS!44=OX%:VARS!48=OY% 8\A%=VARS:ș "Hourglass_On":� pixaverage:ș "Hourglass_Off":�spinit:�forcedrawmain:FUST%=0 B%� 28:� FUST%<2 � �rectpoll:� �Db` L�swapcorns V VARS!20=BTC%:VARS!24=PALTAB% `VARS!28=PIC% jVARS!36=X%(0):VARS!40=Y%(0) tVARS!44=OX%:VARS!48=OY% ~9VARS!84=PALTAB%?(COL%*2):VARS!88=PALTAB%?((COL%*2)+1) �RA%=VARS:ș "Hourglass_On":� tintarea:ș "Hourglass_Off":�forcedrawmain:FUST%=0 ��� 29:� FUST%=0 � �paintscale2:�picpos:�inpic:�eorback:�paintbrush(X%,Y%):�outpic:�quickdrawmain:OX%=X%:OY%=Y%:FUST%=1:� �Db` ��picpos ��� X%<>OX% � Y%<>OY% � �paintscale2:�inpic:�eorback:�paintbrush(OX%,OY%):�paintbrush(X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain ��� 30:� FUST%=0 � �paintscale2:�picpos:�inpic:�eorback:�paintbrush(X%,Y%):�outpic:�quickdrawmain:OX%=X%:OY%=Y%:FUST%=1:� �Db` ��picpos ă� X%<>OX% � Y%<>OY% � �paintscale2:�inpic:�eorback:�paintbrush(OX%,OY%):�paintbrush(X%,Y%):OX%=X%:OY%=Y%:�outpic:�quickdrawmain �� 32:� FONT%<>0 � �o�picpos:� BUT%=4 � FUST%<>0 � �inbackup:ș "Font_SetFont",FHAND%:ș "Font_Paint",,TEXT$,16,X%,Y%:�outbackup �� FUST%<>0 � (X%<>OX% � Y%<>OY%) � �restpic:�inpic:ș "Font_SetFont",FHAND%:ș "Font_Paint",,TEXT$,16,X%,Y%:�outpic:�forcedrawmain:OX%=X%:OY%=Y% �� �E�picpos:� BUT%=4 � FUST%<>0 � �inbackup:�ostext(X%,Y%):�outbackup j� FUST%<>0 � (X%<>OX% � Y%<>OY%) � �restpic:�inpic:�ostext(X%,Y%):�outpic:�forcedrawmain:OX%=X%:OY%=Y% � %� 31:� FUST%<2 � �rectpoll:� �Db` >�swapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% (6ș "Hourglass_On":�fill:ș "Hourglass_Off":FUST%=0 2%� 33:� FUST%<2 � �rectpoll:� �Db` <>�swapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% F�ș "Hourglass_On":!VARS=PIC%:VARS!4=PIC%:VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=BTC%:VARS!28=TTB%:VARS!32=REPS%:A%=VARS:� colrep:ș "Hourglass_Off":FUST%=0:�forcedrawmain P� 34:� FUST%=0 � �Dd^ Z�� BUT%=4 � �inpic:�picpos:�pimport(OX%,OY%,3):�pimport(X%,Y%,0):OX%=X%:OY%=Y%:�pimport(OX%,OY%,3):�outpic:�quickdrawmain:� �Db` dd� FUST%=0 � FUST%=1:�picpos:OX%=X%:OY%=Y%:�inpic:�pimport(X%,Y%,3):�outpic:�quickdrawmain:� �Db` n&�picpos:� X%=OX% � Y%=OY% � � �Db` xU�inpic:�pimport(OX%,OY%,3):OX%=X%:OY%=Y%:�pimport(X%,Y%,3):�outpic:�quickdrawmain �(� 35:� FUST%<2 � �grabpoll(0):� �Db` �� FUST%=2 � �closewind(8):�inpic:�picpos:�pgrab(OX%,OY%,3):OX%=X%:OY%=Y%:�outpic:�quickdrawmain:FUST%=3:�openwind(7):� �Db` �l� 36:� FUST%=0 � �picpos:�inpic:�eoc:ȓ X%,Y%,FRW%*2,FRH%*4:�outpic:�quickdrawmain:OX%=X%:OY%=Y%:FUST%=1 ���picpos:� X%<>OX% � Y%<>OY% � �inpic:�eoc:ȓ OX%,OY%,FRW%*2,FRH%*4:OX%=X%:OY%=Y%:ȓ OX%,OY%,FRW%*2,FRH%*4:�outpic:�quickdrawmain �� BUT%<>4 � �Db` �~�inpic:�eoc:ȓ OX%,OY%,FRW%*2,FRH%*4:�setcol:ȓ OX%,OY%,FRW%*2,FRH%*4:�eoc:ȓ OX%,OY%,FRW%*2,FRH%*4:�outpic:�quickdrawmain �%� 38:� FUST%<2 � �rectpoll:� �Db` �>�swapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% ҍș "Hourglass_On":!VARS=PIC%:VARS!4=PIC%:VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=TRASP%:VARS!28=BTC%:VARS!32=TRANSTAB% �@RW%=��geticon(21,4):GW%=��geticon(21,7):BW%=��geticon(21,10) �;�L%=0 � 255:ș "ColourTrans_ColourNumberToGCOL",L% � G% �eRC%=((G%�%1111)*RW%)�100:GC%=((((G%�48)>>2)+(G%�3))*GW%)�100:BC%=((((G%�192)>>4)+(G%�3))*BW%)�100 �� RC%>15 � RC%=15 � GC%>15 � GC%=15 � BC%>15 � BC%=15 TC%=(((RC%�3)+(GC%�3)+(BC%�3))�3):TC%=TC%+(RC%�12)+((GC%�12)<<2)+((BC%�12)<<4):ș"ColourTrans_GCOLToColourNumber",TC% � TC% "TRANSTAB%?L%=TC%:� ,AA%=VARS:� transarea:ș "Hourglass_Off":FUST%=0:�forcedrawmain 6%� 39:� FUST%<2 � �rectpoll:� �Db` @>�swapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% J�ș "Hourglass_On":!VARS=PIC%:VARS!4=PIC%:VARS!8=X%(0):VARS!12=Y%(0):VARS!16=OX%:VARS!20=OY%:VARS!24=TRASP%:VARS!28=BTC%:VARS!32=TRANSTAB% TxRW%=��geticon(22,4):GW%=��geticon(22,7):BW%=��geticon(22,10):�L%=0 � 255:ș "ColourTrans_ColourNumberToGCOL",L% � G% ^SRC%=(G%�%1111)*RW%:GC%=(((G%�48)>>2)+(G%�3))*GW%:BC%=(((G%�192)>>4)+(G%�3))*BW% h+TC%=((RC%+GC%+BC%)�3):� TC%>15 � TC%=15 rTTC%=TC%+((TC%�12)<<2)+((TC%�12)<<4):ș"ColourTrans_GCOLToColourNumber",TC% � TC% |TRANSTAB%?L%=TC%:� �AA%=VARS:� transarea:ș "Hourglass_Off":FUST%=0:�forcedrawmain �%� 40:� FUST%<2 � �rectpoll:� �Db` �>�swapcorns:FMINX%=X%(0):FMINY%=Y%(0):FMAXX%=OX%:FMAXY%=OY% �EPW%=��geticon(23,3)*2:PH%=��geticon(23,6)*4:POX%=PW%�2:POY%=PH%�2 �AXP%=FMINX%:YP%=FMINY%:�inpic:�24,FMINX%;FMINY%;FMAXX%;FMAXY%; �ș "Hourglass_On" ¯�:�:� USE%,�XP%+POX%,YP%+POY%) Ȝ Ȝ(XP%+POX%,YP%+POY%):ȓ Ȑ XP%,YP%,PW%-2,PH%-4:XP%+=PW%:� XP%>FMAXX%:XP%=FMINX%:YP%+=PH%:� YP%>FMAXY%:�26:�outpic:�forcedrawmain:FUST%=0 �ș "Hourglass_Off" �%� 41:� FUST%<2 � �rectpoll:� �Db` ��� FUST%=2 � �swapcorns:ROTCX%=(X%(0)+OX%)�2:ROTCY%=(Y%(0)+OY%)�2:FMINX%=X%(0)-ROTCX%:FMINY%=Y%(0)-ROTCY%:FMAXX%=OX%-ROTCX%:FMAXY%=OY%-ROTCY%:�picpos:�inpic:�protbox(X%,Y%):�outpic:OX%=X%:OY%=Y%:�quickdrawmain:FUST%=3:� �Db` �&�picpos:� BUT%=1 � BUT%=4 � � �d~_ �w� X%<>OX% � Y%<>OY% � �inpic:�protbox(OX%,OY%):OX%=X%:OY%=Y%:�protbox(X%,Y%):�outpic:�quickdrawmain:� �Db` � � �Db` �M� BUT%=1 � �inpic:�protbox(OX%,OY%):�outpic:�quickdrawmain:FUST%=0:� �Db` 2�inpic:�protbox(OX%,OY%):�outpic:X%=OX%:Y%=OY% 5FUST%=4:�spinit:�spbuf(145*1024):� Q% � �spbuferr ��backuppic:�inbackup:R%=ROT%:�rotpoint(FMINX%,FMINY%,R%,X1%,Y1%):�rotpoint(FMAXX%,FMINY%,R%,X2%,Y2%):�rotpoint(FMAXX%,FMAXY%,R%,X3%,Y3%):�rotpoint(FMINX%,FMAXY%,R%,X4%,Y4%) &Q�rotpoint(0,(FMAXY%�3)*2,R%,MX1%,MY1%):�rotpoint(0,(FMAXY%�3)*4,R%,MX2%,MY2%) 0#X1%+=X%:X2%+=X%:X3%+=X%:X4%+=X% :#Y1%+=Y%:Y2%+=Y%:Y3%+=Y%:Y4%+=Y% DY�eoc:�4,X1%,Y1%:�4,X2%,Y2%:�85,X3%,Y3%:�3,60 Ȝ 192:�4,X4%,Y4%:�85,X1%,Y1%:�outbackup N�A%=VARS:VARS!4=PIC%:VARS!8=SPBUF%:VARS!12=ROTTAB%:VARS!16=(360-ROT%)�360:VARS!20=BTC%:VARS!24=TRASP%:VARS!28=X%:VARS!32=Y%:VARS!36=ROTCX%:VARS!40=ROTCY%:ș "Hourglass_On":� rotate:ș "Hourglass_Off" Xf�inpic:ș&2E,290,SPBUF%,"PIC":�protbox(X%,Y%):FUST%=3:OX%=X%:OY%=Y%:�outpic:�forcedrawmain:�spinit b� l� v ����protbox(CX%,CY%):�eoc:R%=ROT%:�rotpoint(FMINX%,FMINY%,R%,X1%,Y1%):�rotpoint(FMAXX%,FMINY%,R%,X2%,Y2%):�rotpoint(FMAXX%,FMAXY%,R%,X3%,Y3%):�rotpoint(FMINX%,FMAXY%,R%,X4%,Y4%) �Q�rotpoint(0,(FMAXY%�3)*2,R%,MX1%,MY1%):�rotpoint(0,(FMAXY%�3)*4,R%,MX2%,MY2%) �'X1%+=CX%:X2%+=CX%:X3%+=CX%:X4%+=CX% �'Y1%+=CY%:Y2%+=CY%:Y3%+=CY%:Y4%+=CY% �:�4,X1%,Y1%:�5,X2%,Y2%:�5,X3%,Y3%:�5,X4%,Y4%:�5,X1%,Y1% �)� MX1%+CX%,MY1%+CY%,MX2%+CX%,MY2%+CY% �� � �(��rotpoint(R0%,R1%,R%,� RPX%,� RPY%) ڜR6%=(ROTTAB%!(R%*4))>>12:R7%=(!(ROTTAB%+(R%*4)+&168))>>12:R8%=R0%*R6%:R5%=R1%*R7%:R8%-=R5%:R5%=R1%*R6%:R1%=R0%*R7%:R1%+=R5%:RPX%=R1%>>18:RPY%=-(R8%>>18) �� � �ݤperc(WH%,IH%) !)I$=�geticon(WH%,IH%):=�(�I$,�(I$)-1)) ! ! ��mapline ! Ȏ FUCO% � !*D� 2:�eoc:� X%(1),Y%(1),OX%,OY%:OX%=X%:OY%=Y%:� X%(1),Y%(1),X%,Y% !4D� 3:�eoc:� X%(2),Y%(2),OX%,OY%:OX%=X%:OY%=Y%:� X%(2),Y%(2),X%,Y% !>n� 4:�eoc:� X%(1),Y%(1),OX%,OY%:� X%(3),Y%(3),OX%,OY%:OX%=X%:OY%=Y%:� X%(1),Y%(1),X%,Y%:� X%(3),Y%(3),X%,Y% !HD� 6:�eoc:� X%(5),Y%(5),OX%,OY%:OX%=X%:OY%=Y%:� X%(5),Y%(5),X%,Y% !RD� 7:�eoc:� X%(6),Y%(6),OX%,OY%:OX%=X%:OY%=Y%:� X%(6),Y%(6),X%,Y% !\n� 8:�eoc:� X%(5),Y%(5),OX%,OY%:� X%(7),Y%(7),OX%,OY%:OX%=X%:OY%=Y%:� X%(5),Y%(5),X%,Y%:� X%(7),Y%(7),X%,Y% !f� !p� !z !���pixelmap !�-�spinit:�spbuf(145*1024):� Q% � �spbuferr !��backuppic !�ș "Hourglass_On" !�+dsta=�((X%(6)-X%(5))^2+(Y%(5)-Y%(6))^2) !�+dstb=�((X%(8)-X%(7))^2+(Y%(7)-Y%(8))^2) !�1� dsta>dstb � steps%=dsta �2 � steps%=dstb �2 !�fxsa=(X%(2)-X%(1))/steps% !�fxsb=(X%(3)-X%(4))/steps% !�fysa=(Y%(2)-Y%(1))/steps% !�fysb=(Y%(3)-Y%(4))/steps% !�txsa=(X%(6)-X%(5))/steps% !�txsb=(X%(7)-X%(8))/steps% "tysa=(Y%(6)-Y%(5))/steps% "tysb=(Y%(7)-Y%(8))/steps% "� cb%=0 � steps% "$fxa=X%(1)+cb%*fxsa ".fxb=X%(4)+cb%*fxsb "8fya=Y%(1)+cb%*fysa "Bfyb=Y%(4)+cb%*fysb "Ltxa=X%(5)+cb%*txsa "Vtxb=X%(8)+cb%*txsb "`tya=Y%(5)+cb%*tysa "jtyb=Y%(8)+cb%*tysb "tF�inpic:�3,63:�69,300,300:�69,300,300:�mapln:�outpic:�quickdrawmain "~� "��spinit "�ș "Hourglass_Off" "�� "� "���mapln "�� ns%,fxs,fys,txs,tys,c% "�'ns%=1+�((txb-txa)^2+(tya-tyb)^2) �2 "�'fxs=(fxb-fxa)/ns%:txs=(txb-txa)/ns% "�'fys=(fyb-fya)/ns%:tys=(tyb-tya)/ns% "�� c%=0 � ns% "�]ș&2E,297,SPBUF%,"PIC",(fxa+c%*fxs)�2,(fya+c%*fys)�4 � ,,,,,col%,tin%:� USE%,col% Ȝ tin% "�A� TRASP%?�findpalent(col%,tin%)=0 � �69,txa+c%*txs,tya+c%*tys # � # � # #��grabpoll(FT%) #(�� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain:�letgo:� #2� FUST%=0 � � #<{� BUT%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� #F0� BUT%<>4 � (OX%=X%(0) � OY%=Y%(0)) � � �t`c #P��inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�picpos:�spbuf(�spritesize(X%-X%(0),Y%-Y%(0),�(�high(8,14)))):� Q% � ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�spinit:�spbuferr #Z�GRN$="GRAB":ș&2E,272,SPBUF%,"GRAB",,X%(0),Y%(0),X%,Y%:� �high(8,14) � ș&2E,285,SPBUF%,"GRAB":GRABM%=8:�fillmask � GRABM%=0 #d'GRWI%=�(X%-X%(0)):GRHE%=�(Y%-Y%(0)) #n� X%<X%(0) � Ȕ X%(0),X% #x� Y%<Y%(0) � Ȕ Y%(0),Y% #�:� FT%=1 � ș&2E,290,SPBUF%,"GRAB",X%(0),Y%(0),3+GRABM% #��pgrab(X%,Y%,3) #�9OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=2:� #�!�picpos:� X%=OX% � Y%=OY% � � #�x�inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):OX%=X%:OY%=Y%:ȓ X%(0),Y%(0),X%-X%(0),Y%-Y%(0):�outpic:�quickdrawmain #�� #� #���rectpoll #Ҙ� FUST%=0 � BUT%<>0 � �picpos:X%(0)=X%:Y%(0)=Y%:FUST%=1:OX%=X%:OY%=Y%:�inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain:�letgo:� #�� FUST%=0 � � #�{� BUT%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�picpos:OX%=X%:OY%=Y%:FUST%=0:�outpic:�quickdrawmain:�letgo:� #�0� BUT%<>4 � (OX%=X%(0) � OY%=Y%(0)) � � �Tbd #�:�inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�picpos $� X%<X%(0) � Ȕ X%(0),X% $� Y%<Y%(0) � Ȕ Y%(0),Y% $9OX%=X%:OY%=Y%:�outpic:�quickdrawmain:�letgo:FUST%=2:� $"!�picpos:� X%=OX% � Y%=OY% � � $,x�inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):OX%=X%:OY%=Y%:ȓ X%(0),Y%(0),X%-X%(0),Y%-Y%(0):�outpic:�quickdrawmain $6� $@ $J��pgrab(DX%,DY%,PL%) $TXR=GRXM%/GRXD% $^YR=GRYM%/GRYD% $h!SCALE%=GRXM% $rSCALE%!4=GRYM% $|SCALE%!8=GRXD% $�SCALE%!12=GRYD% $�Wș&2E,308,SPBUF%,"GRAB",DX%-((GRWI% � 2)*XR),DY%-((GRHE% � 2)*YR),PL%+GRABM%,SCALE% $�� $� $���pimport(DX%,DY%,PL%) $�!XR=GRXM%/GRXD%:YR=GRYM%/GRYD% $�IO%!20=(!IO%)*GRXM% $�IO%!24=(IO%!4)*GRYM% $�IO%!28=(IO%!8)*GRXD% $�IO%!32=(IO%!12)*GRYD% $�� � GRMA% � ș&2E,308,SPBUF%,GRN$,DX%-((IMW% � 2)*XR),DY%-((IMH% � 2)*YR),PL%,IO%+20,IMPT% � ș&2E,308,SPBUF%,GRN$,DX%-((IMW% � 2)*XR),DY%-((IMH% � 2)*YR),PL%+8,IO%+20,IMPT% $�� $� %��para(LT%,PL%,DX%,DY%) %"� PL%=1 � �elip(&75,DX%,DY%):� % � LT%=1 � %&�l(X%(0),Y%(0),X%(1),Y%(1)) %0�l(X%(1),Y%(1),DX%,DY%) %:%� LITY%-4,X%(0)-X%(1),Y%(0)-Y%(1) %D� LITY%,X%(0),Y%(0) %N� %X� X%(0),Y%(0),X%(1),Y%(1) %b� X%(1),Y%(1),DX%,DY% %l�1,X%(0)-X%(1),Y%(0)-Y%(1) %v�5,X%(0),Y%(0) %�� %�� %� %���elip(PL%,DX%,DY%) %�� X%(0),Y%(0) %�� X%(1),Y%(1) %�� PL%,DX%,DY% %�� %� %���tri(PL%,DX%,DY%) %�� PL%=5 � PL%=85 � �4,DX%,DY%:� 5,X%(0),Y%(0):� 5,X%(1),Y%(1):� PL%,DX%,DY% � �4,DX%,DY%:� LITY%,X%(0),Y%(0):� LITY%,X%(1),Y%(1):� LITY%,DX%,DY% %�� %� &7ݤdist(DX%,DY%):=�(((DX%-X%(0))^2)+((DY%-Y%(0))^2)) & &V��paintbrush(BX%,BY%):ș&2E,306,BRUSH%,�(SELBR%),BX%-(32*XR),BY%-(32*YR),,SCALE%:� & &*E��paintbrush2(BX%,BY%):ș&2E,305,BRUSH%,�(SELBR%),BX%-32,BY%-32:� &4 &>"��letgo:�:ȗ X%,Y%,H%:� H%=0:� &H &R��killf &\Ȏ FUSE% � &f �spbuf(0) &pL� 2:� FUST%>0 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain &z� 3:�closewind(4) &�i� 4:�closewind(5):� FUST%>0 � �inpic:�paintscale:�eorback:�paintbrush(OX%,OY%):�outpic:�quickdrawmain &�Y� 5:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain &�\� 6:� FUST%=1 � �inpic:�eoc:ȓ Ȑ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain &�T� 7:� FUST%=1 � �inpic:�eoc:ȏ X%(0),Y%(0),�dist(OX%,OY%):�outpic:�quickdrawmain &�W� 8:� FUST%=1 � �inpic:�eoc:ȏ Ȑ X%(0),Y%(0),�dist(OX%,OY%):�outpic:�quickdrawmain &�L� 9:� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain &�B� FUST%=2 � �inpic:�eoc:�tri(5,OX%,OY%):�outpic:�quickdrawmain &�M� 10:� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain &�C� FUST%=2 � �inpic:�eoc:�tri(85,OX%,OY%):�outpic:�quickdrawmain &�M� 11:� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain &�E� FUST%=2 � �inpic:�eoc:�elip(&C5,OX%,OY%):�outpic:�quickdrawmain &�M� 12:� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain &�E� FUST%=2 � �inpic:�eoc:�elip(&CD,OX%,OY%):�outpic:�quickdrawmain 'M� 13:� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain 'E� FUST%=2 � �inpic:�eoc:�para(0,0,OX%,OY%):�outpic:�quickdrawmain 'M� 14:� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain '$E� FUST%=2 � �inpic:�eoc:�para(0,1,OX%,OY%):�outpic:�quickdrawmain '.M� 15:� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain '8E� FUST%=2 � �inpic:�eoc:�elip(&A5,OX%,OY%):�outpic:�quickdrawmain 'BM� 16:� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain 'LE� FUST%=2 � �inpic:�eoc:�elip(&B5,OX%,OY%):�outpic:�quickdrawmain 'VM� 17:� FUST%=1 � �inpic:�eoc:� X%(0),Y%(0),OX%,OY%:�outpic:�quickdrawmain '`E� FUST%=2 � �inpic:�eoc:�elip(&AD,OX%,OY%):�outpic:�quickdrawmain 'jh� 18:�closewind(8):� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain 'tG� FUST%=2 � �inpic:�pgrab(OX%,OY%,3):�outpic:�quickdrawmain:�spinit '~h� 19:�closewind(8):� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain '�G� FUST%=2 � �inpic:�pgrab(OX%,OY%,3):�outpic:�quickdrawmain:�spinit '�Z� 20:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain '�Z� 21:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain '�Z� 22:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain '��� 23:�closewind(8):� FUCO%=1 � FUST%=1 � �inpic:�eoc:ȓ X%(1),Y%(1),X%(2)-X%(1),Y%(2)-Y%(1):ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain:� �TXi '�`� FUCO%=1 � �inpic:�eoc:ȓ X%(1),Y%(1),X%(2)-X%(1),Y%(2)-Y%(1):�outpic:�quickdrawmain:� �TXi '�U� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain '�� 25:�inpic '��eoc '�Ȏ FUCO% � '�� 2:� X%(1),Y%(1),X%,Y% '�5� 3:� X%(1),Y%(1),X%(2),Y%(2):� X%(2),Y%(2),X%,Y% ( c� 4:� X%(1),Y%(1),X%(2),Y%(2):� X%(2),Y%(2),X%(3),Y%(3):� X%(3),Y%(3),X%,Y%:� X%,Y%,X%(1),Y%(1) ( o� 5:� X%(1),Y%(1),X%(2),Y%(2):� X%(2),Y%(2),X%(3),Y%(3):� X%(3),Y%(3),X%(4),Y%(4):� X%(4),Y%(4),X%(1),Y%(1) (�� 6:� X%(1),Y%(1),X%(2),Y%(2):� X%(2),Y%(2),X%(3),Y%(3):� X%(3),Y%(3),X%(4),Y%(4):� X%(4),Y%(4),X%(1),Y%(1):� X%(5),Y%(5),X%,Y% (�� 7:� X%(1),Y%(1),X%(2),Y%(2):� X%(2),Y%(2),X%(3),Y%(3):� X%(3),Y%(3),X%(4),Y%(4):� X%(4),Y%(4),X%(1),Y%(1):� X%(5),Y%(5),X%(6),Y%(6):� X%(6),Y%(6),X%,Y% ((�� 8:� X%(1),Y%(1),X%(2),Y%(2):� X%(2),Y%(2),X%(3),Y%(3):� X%(3),Y%(3),X%(4),Y%(4):� X%(4),Y%(4),X%(1),Y%(1):� X%(5),Y%(5),X%(6),Y%(6):� X%(6),Y%(6),X%(7),Y%(7):� X%(7),Y%(7),X%,Y%:� X%(5),Y%(5),X%,Y% (2� (<)FUCO%=1:�outpic:�quickdrawmain:�letgo (FZ� 27:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain (PZ� 28:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain (Zk� 29:�closewind(5):� FUST%>0 � �inpic:�paintscale2:�eorback:�paintbrush(OX%,OY%):�outpic:�quickdrawmain (dk� 30:�closewind(5):� FUST%>0 � �inpic:�paintscale2:�eorback:�paintbrush(OX%,OY%):�outpic:�quickdrawmain (nN� 32:�restpic:�forcedrawmain:�closewind(14):�spinit:� FONT%<>0 � �losefont (x� 31:� GRTY%=1 � (�U� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain (�� (�q� 33:�closewind(18):�spinit:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain (�F� 34:� FUST%=1 � �inpic:�pimport(OX%,OY%,3):�outpic:�quickdrawmain (��closewind(8):�spinit (�"� 35:� FUST%<2 � �closewind(8) (�U� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain (�� FUST%=3 � �closewind(7) (�Q� 36:� FUST%<>0 � �inpic:�eoc:ȓ OX%,OY%,FRW%*2,FRH%*4:�outpic:�quickdrawmain (�� 37:�spinit:�closewind(20) (�q� 38:�closewind(21):�spinit:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain (�q� 39:�closewind(22):�spinit:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain (�q� 40:�closewind(23):�spinit:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain )q� 41:�closewind(24):�spinit:� FUST%=1 � �inpic:�eoc:ȓ X%(0),Y%(0),OX%-X%(0),OY%-Y%(0):�outpic:�quickdrawmain )?� FUST%=3 � �inpic:�protbox(OX%,OY%):�outpic:�quickdrawmain )� )"� ), )6��eoc:�3,63 Ȝ 192:� )@ )J��eorback:�3,191 Ȝ 192:� )T )^ ��pickcol )h4BLK%!8=HAND%(3):ș "Wimp_GetWindowState",,BLK%+8 )r0XOF%=(!BLK%)-(BLK%!12):� XOF%>766 � XOF%=766 )|1YOF%=(BLK%!4)-(BLK%!16):� YOF%>220 � YOF%=220 )�d� MOUB%=4 � COL%=(XOF% � 24)+((YOF% � 28)*32) � � MOUB%=1 � �trasp((XOF% � 24)+((YOF% � 28)*32)) )��forcedrawpal(PAL%) )�� )� )���tbackclick )�5BLK%!8=HAND%(15):ș "Wimp_GetWindowState",,BLK%+8 )�0XOF%=(!BLK%)-(BLK%!12):� XOF%>766 � XOF%=766 )�1YOF%=(BLK%!4)-(BLK%!16):� YOF%>220 � YOF%=220 )�'FONTB%=(XOF% � 24)+((YOF% � 28)*32) )��forcedrawtback )�� )� )���picpos *SCRX%=!BLK%:SCRY%=BLK%!4 *4BLK%!8=HAND%(2):ș "Wimp_GetWindowState",,BLK%+8 *.X%=(((!BLK%)-(BLK%!12))+(BLK%!28)) � ZOOM% *&5Y%=936-((((BLK%!24)-(BLK%!4))-(BLK%!32)) � ZOOM%) *0� X%<0 � X%=0 *:� X%>1232 � X%=1232 *D� Y%<0 � Y%=0 *N� Y%>934 � Y%=934 *X� � GRLO% � � *bXOF%=(GRWI%-GRBX%)*2 *lYOF%=(GRHE%-GRBY%)*4 *vX%+=XOF%:Y%+=YOF% *�'X%=-XOF%+((X% � (2*GRWI%))*2*GRWI%) *�'Y%=-YOF%+((Y% � (4*GRHE%))*4*GRHE%) *�(� VDU4:PRINTTAB(0,1);X%,Y%,XOF%,YOF% *�� *� *���getor *�WOX%=BLK%!4-BLK%!20 *�&WOY%=(BLK%!16-BLK%!24)-(936*ZOOM%) *�� *� *���getbrushor *�WOX%=BLK%!4-BLK%!20 *�WOY%=(BLK%!16-BLK%!24)-260 +� + +��getpatfillor + WOX%=BLK%!4-BLK%!20 +*WOY%=(BLK%!16-BLK%!24)-108 +4� +> +H��getedbruor +RWOX%=BLK%!4-BLK%!20 +\WOY%=(BLK%!16-BLK%!24)-640 +f� +p +z��openmain:MOP%=� +�z!BLK%=HAND%(2):BLK%!4=0:BLK%!8=300:BLK%!12=1279:BLK%!16=1023:BLK%!20=0:BLK%!24=0:BLK%!28=-1:ș "Wimp_OpenWindow",,BLK% +�� +� +� ��openpal +�{!BLK%=HAND%(3):BLK%!4=100:BLK%!8=300:BLK%!12=1279:BLK%!16=600:BLK%!20=0:BLK%!24=0:BLK%!28=-1:ș "Wimp_OpenWindow",,BLK% +�� +� +���openwind(WH%) +�2!BLK%=HAND%(WH%):ș "Wimp_GetWindowInfo",,BLK% +�)BLK%!28=-1:ș "Wimp_OpenWindow",,BLK% +�� +� +���closewind(WH%) ,0!BLK%=HAND%(WH%):ș "Wimp_CloseWindow",,BLK% ,� , ,$��opmain ,.ș "Wimp_OpenWindow",,BLK% ,8� ,B ,L��clmain:MOP%=� ,Vș "Wimp_CloseWindow",,BLK% ,`� ,j ,t��airnoz ,~0H%=-1:�L%=9 � 15:� �high(4,L%) � H%=L%:L%=15 ,�� ,�Ȏ H% � ,�� 9:XR=1:YR=.25 ,�� 10:XR=1:YR=.5 ,�� 11:XR=1:YR=.75 ,�� 12:XR=1:YR=1 ,�� 13:XR=.75:YR=1 ,�� 14:XR=.5:YR=1 ,�� 15:XR=.25:YR=1 ,�� ,�� ,� - ��paintscale - !SCALE%=BXM% -SCALE%!4=BYM% -SCALE%!8=BXD% -(SCALE%!12=BYD% -2XR=BXM%/BXD% -<YR=BYM%/BYD% -F� -P -Z��paintscale2 -d !SCALE%=1 -nSCALE%!4=1 -xSCALE%!8=1 -�SCALE%!12=1 -�XR=1 -�YR=1 -�� -� -���picclick -�$� MBUS% � MOUB%<>0 � � � MBUS%=� -�Ȏ FUSE% � -Ң� -1:� MOUB%=1 � �picpos:�inpic:CO%=�X%,Y%):TI%=Ȝ(X%,Y%):�3,63 Ȝ 192:�69,400,400:�69,400,400:�outpic:�trasp(�findpalent(CO%,TI%)):�forcedrawpal(PAL%):� �Tjp -ܚ� MOUB%=4 � �picpos:�inpic:CO%=�X%,Y%):TI%=Ȝ(X%,Y%):�3,63 Ȝ 192:�69,400,400:�69,400,400:�outpic:COL%=�findpalent(CO%,TI%):�forcedrawpal(PAL%):� �Tjp -�?� 0:�picpos:�inpic:�setcol:�69,X%,Y%:�outpic:�quickdrawmain -� � 3:�airnoz:� H%=-1 � � �Tjp -���picpos:�inpic:�setcol:D%=�(�geticon(4,1)):R%=�(�geticon(4,3)):�L%=1 � D%:A=�(3600)/10:�69,�(�(A))*�((R%*XR))+X%,�(�(A))*�((R%*YR))+Y%:�:�outpic:�quickdrawmain ."� 4:�paintscale:�inpic:�picpos ..� FUST%<>0 � �eorback:�paintbrush(OX%,OY%) .8�setbackcol:�paintbrush(X%,Y%):OX%=X%:OY%=Y%:FUST%=1 ."!�eorback:�paintbrush(OX%,OY%) .,�outpic:�quickdrawmain .6� 24:� MOUB%<>4 � � �Tjp .@��picpos:�inpic:�3,63 Ȝ 192:�69,400,400:�69,400,400:�setcol:TCO%=�X%-2,Y%):TTI%=Ȝ(X%-2,Y%):TPE%=�findpalent(TCO%,TTI%):� TPE%=COL% � �outpic:�message(0,"Cannot trace the colour you are using.") .J2�trace(X%,Y%,TCO%,TTI%):�outpic:�quickdrawmain .T� 26:� MOUB%<>4 � � .^G�inpic:�23,17,4,1,0|:�L%=1 � 4:�23,L%+1:�K%=1 � 8:� ECF%(K%,L%):�:� .ht�picpos:�0,�X%,Y%)+128 Ȝ Ȝ(X%,Y%):�setcol:ș "Hourglass_On":Ȑ X%,Y%:ș "Hourglass_Off":�outpic:�quickdrawmain .r$� 29:�paintscale2:�inpic:�picpos .|/� FUST%<>0 � �eorback:�paintbrush2(OX%,OY%) .� VARS!20=BTC%:VARS!24=PALTAB% .�VARS!28=PIC%:VARS!32=SPBUF% .�VARS!36=X%-32:VARS!40=Y%-32 .�!VARS!44=SELBR%:VARS!48=BRUSH% .�A%=VARS:� averagebrush .�3�3,63:ȓ X%-32,Y%-32,64,64:ȓ X%-32,Y%-32,64,64 .�8OX%=X%:OY%=Y%:FUST%=1:�eorback:�paintbrush2(OX%,OY%) .��outpic:�quickdrawmain .�$� 30:�paintscale2:�inpic:�picpos .�/� FUST%<>0 � �eorback:�paintbrush2(OX%,OY%) .� VARS!20=BTC%:VARS!24=PALTAB% .�VARS!28=PIC%:VARS!32=SPBUF% .�VARS!36=X%-32:VARS!40=Y%-32 /!VARS!44=SELBR%:VARS!48=BRUSH% /9VARS!84=PALTAB%?(COL%*2):VARS!88=PALTAB%?((COL%*2)+1) /A%=VARS:� tintbrush /&3�3,63:ȓ X%-32,Y%-32,64,64:ȓ X%-32,Y%-32,64,64 /08OX%=X%:OY%=Y%:FUST%=1:�eorback:�paintbrush2(OX%,OY%) /:�outpic:�quickdrawmain /D!� 31:� MOUB%<>4 � GRTY%=1 � � /N-�spinit:�spbuf(145*1024):� Q% � �spbuferr /X�backuppic /bX�inbackup:�picpos:FBC%=�X%,Y%):FBT%=Ȝ(X%,Y%):�0,FBC%+128 Ȝ FBT%:FUT%=(FBC%+1) � 64 /l9�0,FUT% Ȝ FBT%:ș "Hourglass_On":Ȑ X%,Y%:�outbackup /v-A%=VARS:B%=PIC%:C%=SPBUF%:� findchangebox /�FMINX%=(!VARS)*2 /�FMINY%=(VARS!4)*4 /�FMAXX%=(VARS!8)*2 /�FMAXY%=(VARS!12)*4 /� �fill /�ș "Hourglass_Off" /�� 37:� MOUB%<>4 � � /�-�spinit:�spbuf(145*1024):� Q% � �spbuferr /��backuppic /�X�inbackup:�picpos:FBC%=�X%,Y%):FBT%=Ȝ(X%,Y%):�0,FBC%+128 Ȝ FBT%:FUT%=(FBC%+1) � 64 /�9�0,FUT% Ȝ FBT%:ș "Hourglass_On":Ȑ X%,Y%:�outbackup /�-A%=VARS:B%=PIC%:C%=SPBUF%:� findchangebox /�KFMINX%=(!VARS)*2:FMINY%=(VARS!4)*4:FMAXX%=(VARS!8)*2:FMAXY%=(VARS!12)*4 0:VARS!4=PIC%:VARS!8=SPBUF%:VARS!12=PFILLS%:VARS!16=CPF% 0 � patfill 0ș"Hourglass_Off" 0 �spinit:�forcedrawmain 0*� 04� 0> 0H ��fill 0RNOS%=��geticon(13,44) 0\NOF%=GRFN% 0f ET%=0 0p� �high(13,55) � ET%=1 0z� �high(13,56) � ET%=2 0�� �high(13,57) � ET%=3 0�� �high(13,58) � ET%=4 0�FIT%=-1 0�� �high(13,22) � FIT%=1 0�� �high(13,23) � FIT%=2 0�� �high(13,64) � FIT%=3 0�� �high(13,65) � FIT%=4 0�� �high(13,24) � FIT%=5 0�� �high(13,25) � FIT%=6 0�� ET%=1 � ET%=2 � FIT%=1 0�� ET%=3 � ET%=4 � FIT%=4 0�E� FIT%=-1 � �spinit:�message(0,"You must choose a type of fill.") 0� Ȏ FIT% � 13� 1:FIW%=FMAXX%-FMINX%:FIFC%=0:LAFC%=255:FID%=1 14� 2:FIW%=FMAXX%-FMINX%:FIFC%=255:LAFC%=0:FID%=-1 13� 4:FIW%=FMAXY%-FMINY%:FIFC%=0:LAFC%=255:FID%=1 1$4� 3:FIW%=FMAXY%-FMINY%:FIFC%=255:LAFC%=0:FID%=-1 1. � 5:FIFC%=0:LAFC%=255:FID%=1 18!� 6:FIFC%=255:LAFC%=0:FID%=-1 1B� 1L� FIT%=5 � FIT%=6 � 1V?� (FMAXX%-X%)>(X%-FMINX%) � XOF%=FMAXX%-X% � XOF%=X%-FMINX% 1`?� (FMAXY%-Y%)>(Y%-FMINY%) � YOF%=FMAXY%-Y% � YOF%=Y%-FMINY% 1jFIW%=�((XOF%^2)+(YOF%^2)) 1t� 1~1CPP%=(255<<8) � FIW%:CPS%=(255<<8) � (NOS%-1) 1�HI%=IO%:�L%=0 � 15:?I%=GRFI%(L%,0,NOF%):I%?1=GRFI%(L%,1,NOF%):I%+=2:� 1�6!VARS=PIC%:� GRTY%=0 � VARS!4=SPBUF% � VARS!4=PIC% 1��VARS!8=IO%:VARS!12=NOS%:VARS!16=FIFC%:VARS!20=LAFC%:VARS!24=FID%:VARS!28=CPP%:VARS!32=CPS%:VARS!36=X%:VARS!40=Y%:VARS!44=ROTTAB%:VARS!48=FIT%:VARS!52=FMINX%:VARS!56=FMINY%:VARS!60=FMAXX%:VARS!64=FMAXY% 1�VARS!68=RAND%:VARS!72=0 1�VARS!76=��geticon(13,39) 1�*� �high(13,54) � VARS!80=1 � VARS!80=0 1�9VARS!84=ET%:VARS!88=TRASP%:VARS!92=GRTY%:VARS!96=BTC% 1�'�L%=0 � 4092 � 4:RAND%!L%=�(CPS%):� 1�A%=VARS 1�� graduatedfill 1��spinit:�forcedrawmain 1�� 2 2 ��hg:ș "Hourglass_Smash":� 2 2��swapcorns 2(� X%(0)>OX% � Ȕ X%(0),OX% 22� Y%(0)>OY% � Ȕ Y%(0),OY% 2<� 2F 2PEݤsamecol(x1%,y1%,col%,tin%):=(�x1%,y1%)=col% � Ȝ(x1%,y1%)=tin%) 2Z 2d5��l(x1%,y1%,x2%,y2%):�4,x1%,y1%:� LITY%,x2%,y2%:� 2n 2xg��r(x1%,y1%,x2%,y2%):�4,x1%,y1%:� LITY%-4,x2%,0:� LITY%-4,0,y2%:� LITY%-4,-x2%,0:� LITY%-4,0,-y2%:� 2� 2���trace(X%,Y%,TCO%,TTI%) 2�ș "Hourglass_On" 2�� dir%,x%,px%,py% 2�g� �samecol(X%,Y%,TCO%,TTI%) � �message(0,"Cannot trace from an adjacent pixel of the same colour.") 2�px%=X%:py%=Y% 2� dir%=3 2��incdir 2�� 2�C� � �samecol(x%,y%,TCO%,TTI%) � �69,x%,y%:px%=x%:py%=y%:�decdir 2��incdir 2�� x%=X% � y%=Y% 2� �69,x%,y% 3ș "Hourglass_Off" 3� 3 3"��incdir 3,dir%=(dir%+1)�4 36 Ȏ dir% � 3@� 0:x%=px%-2:y%=py% 3J� 1:x%=px%:y%=py%+4 3T� 2:x%=px%+2:y%=py% 3^� 3:x%=px%:y%=py%-4 3h� 3r� 3| 3���decdir 3�dir%=(dir%+2)�4 3�� 3� 3�ݤfindpalent(CO%,TI%) 3�=CTT%?((CO%*4)+(TI% � 64)) 3� 3�>��setcol:� USE%,PALTAB%?(COL%*2) Ȝ PALTAB%?((COL%*2)+1):� 3� 3�H��setbackcol:� USE%,(PALTAB%?(COL%*2))+128 Ȝ PALTAB%?((COL%*2)+1):� 3� 3���col(C%,T%,U%) 3�ș&35,-1,9 � ,,BP% 4� BP%=3 � �U%,C% Ȝ T%:� 4+R%=((C% � %11)*4)+(T% � 64):R%+=(R%<<4) 42G%=(((C% � %1100)>>2)*4)+(T% � 64):G%+=(G%<<4) 4&4B%=(((C% � %110000)>>4)*4)+(T% � 64):B%+=(B%<<4) 40>ș "ColourTrans_SetGCOL",((B%<<24)+(G%<<16)+(R%<<8)),,,,U% 4:� 4D 4N��anticol(C%,T%,U%) 4X+R%=((C% � %11)*4)+(T% � 64):R%+=(R%<<4) 4b2G%=(((C% � %1100)>>2)*4)+(T% � 64):G%+=(G%<<4) 4l4B%=(((C% � %110000)>>4)*4)+(T% � 64):B%+=(B%<<4) 4vNș "ColourTrans_ReturnOppGCOLForMode",((B%<<24)+(G%<<16)+(R%<<8)),15 � GC% 4�#� U%,(GC%>>2) Ȝ (GC% � %11)*64 4�� 4� 4� ��gridcol 4��col(GRCO%,GRTI%,0) 4�� 4� 4���makerr 4�ș "Wimp_DragBox",,0 4�!BLK%=� 4�ER=� 4� Ȏ � � 4�4� 222:$(BLK%+4)="File cannot be found"+�(0):ER=� 5 5�$(BLK%+4)="Archrome has suffered a serious internal error ("+ß+"/"+Þ+") You should save your work and re-start as soon as possible."+�(0) 5� 5 +ș "Wimp_ReportError",BLK%,1,"Archrome" 5* �action:� 54� 5> 5H��message(M%,M$):�outpic 5R[ș "Wimp_DragBox",,0:!BLK%=M%:$(BLK%+4)=M$+�(0):ș "Wimp_ReportError",BLK%,1,"Archrome" 5\�forcedrawmain 5f �action:� 5p� 5z 5���mouse 5�FMOUX%=!BLK%:MOUY%=BLK%!4:MOUB%=BLK%!8:MOUH%=BLK%!12:MOUIC%=BLK%!16 5�Ȏ MOUB% � 5�� 4,1:Ȏ MOUH% � 5�� -2:�openmain 5�$� HAND%(0):� BLK%!16=2 � �saveok 5�*� HAND%(7):� BLK%!16=2 � �spritesaveok 5�� HAND%(2):�picclick 5�� HAND%(3):�pickcol 5�� HAND%(4):�airbclick 5�� HAND%(5):�brushclick 5�� HAND%(6):�gridclick 5�� HAND%(8):�grabclick 6� HAND%(10):�linepatclick 6� HAND%(11):�ecfclick 6� HAND%(12):�edbruclick 6$� HAND%(13):�fillclick 6.� HAND%(14):�textclick 68� HAND%(15):�tbackclick 6B� HAND%(16):�tparclick 6L� HAND%(17):�fillcontclick 6V� HAND%(18):�colrepclick 6`� HAND%(19):�frameclick 6j� HAND%(20):�patfillclick 6t� HAND%(21):�rgbcontclick 6~� HAND%(22):�greyscaleclick 6�� HAND%(23):�pixelateclick 6�� HAND%(24):�rotateclick 6�� 6�=� 2:� MOUH%=-2 � �iconmenu � � MOUH%=HAND%(2) � �windmenu 6�1� 16,64:� MOUH%=HAND%(0) � DRAG%=0:�startdrag 6�)� MOUH%=HAND%(7) � DRAG%=7:�startdrag 6�� 6�� 6� 6���rotateclick 6�� MOUIC%<>1 � MOUIC%<3 � � 6�)� FUST%>=2 � �inpic:�protbox(OX%,OY%) 7 -� MOUIC%=1 � ROT%-=1:� ROT%<0 � ROT%+=360 7 "� MOUIC%=3 � ROT%=(ROT%+1)�360 7.� MOUIC%=4 � ROT%-=10:� ROT%<0 � ROT%+=360 7#� MOUIC%=5 � ROT%=(ROT%+10)�360 7(9� FUST%>=2 � �protbox(OX%,OY%):�outpic:�quickdrawmain 72�seticon(24,2,�ROT%) 7<� 7F 7P��rgbcontclick 7Z4RP%=�perc(21,4):GP%=�perc(21,7):BP%=�perc(21,10) 7dIRP%=RP%:IGP%=GP%:IBP%=BP% 7n'� MOUIC%=3 � RP%-=1:� RP%<0 � RP%=0 7x+� MOUIC%=5 � RP%+=1:� RP%>200 � RP%=200 7�'� MOUIC%=6 � GP%-=1:� GP%<0 � GP%=0 7�+� MOUIC%=8 � GP%+=1:� GP%>200 � GP%=200 7�'� MOUIC%=9 � BP%-=1:� BP%<0 � BP%=0 7�,� MOUIC%=11 � BP%+=1:� BP%>200 � BP%=200 7�+� RP%<>IRP% � �seticon(21,4,�(RP%)+"%") 7�+� GP%<>IGP% � �seticon(21,7,�(GP%)+"%") 7�,� BP%<>IBP% � �seticon(21,10,�(BP%)+"%") 7�� 7� 7���greyscaleclick 7�M�arrows(22,3,5,4,0,9,1):�arrows(22,6,8,7,0,9,1):�arrows(22,9,11,10,0,9,1) 7�� 7� 8��pixelateclick 87�arrows(23,2,4,3,1,100,1):�arrows(23,5,7,6,1,100,1) 8� 8" 8,��frameclick 867�arrows(19,5,7,3,1,618,1):�arrows(19,6,8,4,1,234,1) 8@� MOUIC%<>2 � � 8J �killf 8T$V%=��geticon(19,3):� V%<1 � V%=1 8^� V%>618 � V%=618 8h�seticon(19,3,�V%) 8r$W%=��geticon(19,4):� W%<1 � W%=1 8|� W%>234 � W%=618 8��seticon(19,4,�W%) 8�OFRW%=V%+1:FRH%=W%+1:FUSE%=36:FUST%=0:�help:�windname(2,PIC$+" [Set frame]") 8�� MOUB%=4 � �menoff 8�� 8� 8���colrepclick 8� MOUIC%=3 � ș "Hourglass_On":�L%=0 � 22596 � 4:SPBUF%!L%=OPAL%!L%:�:�L%=0 � 255:REPS%?L%=L%:�:ș "Hourglass_Off":�forcedrawcolrep:� 8�5BLK%!8=HAND%(18):ș "Wimp_GetWindowState",,BLK%+8 8�<XOF%=(!BLK%)-((BLK%!12)-(BLK%!28)):� XOF%>766 � XOF%=766 8�CYOF%=(BLK%!4)-(((BLK%!24)-(BLK%!32))-556):� YOF%>550 � YOF%=550 8�� VDU4:PRINT XOF%,YOF% 8�E� YOF%<=220 � SREP%=(XOF% � 24)+((YOF% � 28)*32):�forcedrawcolrep 8�� YOF%>=290 � YOF%<514 � 9�YOF%-=290:C%=(XOF% � 24)+((YOF% � 28)*32):�insprite(0,SPBUF%,"Palette"):FX%=((SREP% � 32)*24)+2:FY%=((SREP% � 32)*28)+4:�0,PALTAB%?(C%*2) Ȝ PALTAB%?((C%*2)+1) 9Bȓ Ȑ FX%,FY%,20,20:�outsprite:REPS%?SREP%=C%:�forcedrawcolrep 9� 9&� 90 9:'��arrows(W%,DI%,UI%,TI%,LV%,UV%,I%) 9DV%=��geticon(W%,TI%):OV%=V% 9N+� MOUIC%=DI% � V%-=I%:� V%<LV% � V%=LV% 9X+� MOUIC%=UI% � V%+=I%:� V%>UV% � V%=UV% 9b&� V%<>OV% � �seticon(W%,TI%,�(V%)) 9l� 9v 9���tparclick 9���arrows(16,6,18,12,0,1024,8):�arrows(16,7,19,13,0,999,1):�arrows(16,8,20,14,0,999,1):�arrows(16,9,21,15,0,999,1):�arrows(16,10,22,16,0,999,1):�arrows(16,11,23,17,0,999,1) 9��� MOUIC%=24 � ș "Font_SetFontMax",(��geticon(16,12))*1024,(��geticon(16,13))*1152,(��geticon(16,14))*1152,(��geticon(16,15))*1152,(��geticon(16,16))*1152,(��geticon(16,17))*1152 9�#� MOUIC%=24 � MOUB%=4 � �menoff 9�� MOUIC%=25 � 9��("Configure FontMax "+�geticon(16,12)+"K"):�("Configure FontMax1 "+�geticon(16,13)):�("Configure FontMax2 "+�geticon(16,14)):�("Configure FontMax3 "+�geticon(16,15)):�("Configure FontMax4 "+�geticon(16,16)) 9�,�("Configure FontMax5 "+�geticon(16,17)) 9�� 9�� 9� 9���losefont 9�9� FONT%<>0 � �inpic:ș "Font_LoseFont",FHAND%:�outpic 9�� : : ��getfont :,� ��geticon(14,4)<6 � �seticon(14,4,"6") : ,� ��geticon(14,5)<6 � �seticon(14,5,"6") :*1FONTX%=��geticon(14,4):FONTY%=��geticon(14,5) :+1� VDU4:PRINT'FONT%,FO$,FONTX%,FONTY%," 14900" :, � END :4T� FONT%<>0 � �inpic:ș "Font_FindFont",,FO$,FONTX%*16,FONTY%*16 � FHAND%:�outpic :>� :H :R ��restpic :\ �inpic :fș&2E,290,SPBUF%,"PIC" :p�outpic :z� :� :���textclick :�� MOUIC%<>6 � � �tvz :�*V%=��geticon(14,4):V%-=1:� V%<6 � V%=6 :��seticon(14,4,�V%) :�� MOUIC%<>7 � � �dTz :�.V%=��geticon(14,4):V%+=1:� V%>999 � V%=999 :��seticon(14,4,�V%) :�� MOUIC%<>8 � � �drz :�*V%=��geticon(14,5):V%-=1:� V%<6 � V%=6 :��seticon(14,5,�V%) :�� MOUIC%<>9 � � �TP{ :�.V%=��geticon(14,5):V%+=1:� V%>999 � V%=999 ;�seticon(14,5,�V%) ;� MOUIC%<>12 � � ; � VDU4:PRINT FONT%,FUST%,FO$ ;� FONT%<>0 � ;$2� FUST%<>0 � �restpic:�losefont:�forcedrawmain ;.�getfont ;/� GOTO 15230 ;80TEXT$=�geticon(14,11):� TEXT$="" � TEXT$=" " ;BDFCOL%=PALTAB%?(COL%*2):FTIN%=PALTAB%?((COL%*2)+1):FTIN%=FTIN%>>2 ;LqFPAL%=((((FCOL% � %11)<<6)+FTIN%)<<8)+((((FCOL% � %1100)<<4)+FTIN%)<<16)+((((FCOL% � %110000)<<2)+FTIN%)<<24) ;VHFCOL%=PALTAB%?(FONTB%*2):FTIN%=PALTAB%?((FONTB%*2)+1):FTIN%=FTIN%>>2 ;`qBPAL%=((((FCOL% � %11)<<6)+FTIN%)<<8)+((((FCOL% � %1100)<<4)+FTIN%)<<16)+((((FCOL% � %110000)<<2)+FTIN%)<<24) ;a� GOTO 15230 ;jO�inpic:ș "ColourTrans_SetFontColours",FHAND%,BPAL%,FPAL%,14:�outpic:EFM%=� ;tFUST%=1:OX%=-1:OY%=-1 ;~� ;�(� FUST%<>0 � �restpic:�forcedrawmain ;�0TEXT$=�geticon(14,11):� TEXT$="" � TEXT$=" " ;�1FUST%=1:OX%=-1:OY%=-1:TCOL%=COL%:TBAK%=FONTB% ;�,� ��geticon(14,4)<1 � �seticon(14,4,"1") ;�,� ��geticon(14,5)<1 � �seticon(14,5,"1") ;�1FONTX%=��geticon(14,4):FONTY%=��geticon(14,5) ;�!IO%=FONTX%:IO%!4=FONTY% ;�IO%!8=8:IO%!12=8 ;�� ;�� ;� ;���ostext(TX%,TY%) <