Home » Archimedes archive » Acorn User » AU 1996-03 B.adf » Others » Shareware/Stationer/!Stationer/!RunImage
Shareware/Stationer/!Stationer/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1996-03 B.adf » Others |
Filename: | Shareware/Stationer/!Stationer/!RunImage |
Read OK: | ✔ |
File size: | EE14 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10ON ERROR PROCmess(REPORT$+" : at line "+STR$ERL):END 20REM ***>$.!Stationer.!RunImage 30REM ***Main Program for !Stationer - Business communications media creator 40REM Version 1.11U (21 Jan 96) 50REM LEN J. Robbins 60REM 70DIM block 10*1024, mblock 1024, menu% 6*1024, curbuf% 9*1024, icond 5*1024, text% &1000 80DIM defpal% 255, fontblk% 256, scale% 20,PixTrans% 256,temp% 100,palette% 1024 90DIM winpal(15),cardpos(2,16),drawfont$(18) 100DIM matrix 100, origin 100, box 100, box2 100 110DIM workblk 8*1024 120maxlev%=32 130DIM start%(maxlev%),box%(maxlev%) 140DIM l%(maxlev%),b%(maxlev%),r%(maxlev%),t%(maxlev%) 150detptr=2304:deslen=60:desblk=1848:style=298 160FOR c=1 TO 16 : READ a :cardpos(0,c)=a:NEXT 170FOR c=1 TO 6 : READ a :cardpos(1,c)=a:NEXT 180cardpos(2,1)=25:cardpos(2,2)=670 190FOR I=0 TO 15 200 READ hexa 210 winpal(I)=hexa 220 defpal%!(I*4)=hexa 230NEXT 240DATA 25,625,290,625,25,445,290,445,25,265,290,265,25,85,290,85 250DATA 25,561,25,312,25,62 260DATA &FFFFFF10,&DDDDDD10,&BBBBBB10,&99999910,&77777710,&55555510,&33333310,&010 270DATA &99440010,&EEEE10,&CC0010,&DD10,&BBEEEE10,&885510,&BBFF10,&FFBB0010 280end%=-1:textc=FALSE:cardb=FALSE:hex=0:RED=(hex>>8)AND&FF:BLUE=RED:GREEN=RED 290endbuf%=curbuf%+&6000 300j=0:FMopen=0:in=FALSE:close=0 310savef=TRUE:noprint=FALSE:printing=FALSE:full=FALSE 320prequitwait=FALSE:quiting=FALSE:quitsave=FALSE:shutdown=FALSE 330fmcreated%=FALSE:fcount%=0 340end%=FALSE:drag%=0:drive%=0 350curspr$="":drawing=FALSE:sprites=FALSE:drawk=0 360font%=-1:noofcards=8:dfont=FALSE 370itemdrag=FALSE:itempull=FALSE 380sx1=-1:sy1=-1:sx2=-1:sy2=-1:select=-1:curdes=-1:seldes=-1:olddes=-1 390osx1=-2:osy1=-2:osx2=-2:osxy=-2:oldselect=-2 400backgrnd=-1 410task=&4B534154 420SYS "Wimp_Initialise",200,task,"!Stationer" TO version%,mytask% 430PROCtemplate 440SYS "OS_GetEnv" TO env$ 450IF INSTR(env$,"-quit") THEN 460I%=INSTR(env$,"""") 470I%=INSTR(env$,"""",I%+1) 480REPEAT 490I%+=1 500UNTIL MID$(env$,I%,1)<>" " 510env$=MID$(env$,I%) 520print$=RIGHT$(env$,7) 530ENDIF 540noic=0 550SYS"Wimp_SlotSize",-1,-1 TO orig 560max=HIMEM-END:max=INT(max/1024)*1024 570max-=&4000 580SYS"Wimp_SlotSize",-1,-1 TO current 590HIMEM=HIMEM-max:hsizeb=max:heap%=HIMEM 600IF hsizeb<1024 THEN END 610SYS"OS_Heap",0,heap%,,hsizeb 620origheap=hsizeb:origappsize=current 630SYS"OS_Byte",161,28 TO ,,cmos 640IF (cmos AND (1<<1))>0 THEN daspr=TRUE ELSE daspr=FALSE 650IF print$=" -print" THEN env$=LEFT$(env$,LENenv$-7):noic=1 660IF print$=" -print" THEN PROCpresent:PROCload(env$):PROCopenwin(print%) 670IF print$<>" -print" AND env$<>"" PROCload(env$) 680IF print$<>" -print" AND env$="" PROCload("<Stat$Dir>.DefaultDt"):PROCinfo(save%,2,"StatData") 690IF noic=0 THEN initic=FNicon 700SYS"Hourglass_On" 710PROCfmenucr 720SYS"Hourglass_Off" 730PROCtitlewin 740ON ERROR PROCerror(REPORT$+" : at line "+STR$ERL) 750REPEAT 760SYS"Wimp_Poll",0,block TO eventcode 770SYS"OS_Mouse" TO ,,button 780UNTIL button>0 790PROCclose(title%) 800PROCmess("This program is SHAREWARE and is currently UNREGISTERED. You are authorised to use it for 2 weeks, after which you must register or delete it. Please refer to Help file for further information") 810REPEAT 820SYS"Wimp_Poll",0,block TO eventcode 830CASE eventcode OF 840WHEN 0:IF savef AND prequitwait SYS"Wimp_ProcessKey",&1FC 850WHEN 1:PROCredraw(block!0) 860WHEN 2:SYS "Wimp_OpenWindow",,block 870WHEN 3:SYS "Wimp_CloseWindow",,block 880WHEN 6:PROCclick(block) 890WHEN 7:PROCdragin 900WHEN 8:PROCprocess 910WHEN 9:PROCselect 920WHEN 17,18:PROCmessagein 930ENDCASE 940UNTIL FALSE 950PROCend 960END 970 980DEFPROCend 990SYS"Wimp_CloseDown",mytask%,task 1000END 1010ENDPROC 1020 1030DEFPROCtitlewin 1040PROCinfo(title%,1,"Business stationary designer. Comprising Compliment slip, Letter head and Business card creators.") 1050$FNinfo(title%,3)="Version 1.11U (21 Jan 1996)" 1060PROCopencen(title%) 1070titleopen=TRUE 1080ENDPROC 1090 1100DEFFNicon 1110!icond=-1 1120icond!4=0 1130icond!8=0:icond!12=68:icond!16=68 1140icond!20=%11010+((2^12)*3):icond?23=112 1150$(icond+24)="!Stationer"+CHR$13 1160SYS "Wimp_CreateIcon",,icond TO icon 1170=icon 1180 1190DEFFNinf(handle,icon) 1200PROCgee(handle,icon) 1210=icond!28 1220 DEFFNbit(a$) 1230WHILE INSTR(a$,":")>0 1240a$=MID$(a$,INSTR(a$,":")+1) 1250ENDWHILE 1260WHILE INSTR(a$,".")>0 1270a$=MID$(a$,INSTR(a$,".")+1) 1280ENDWHILE 1290=a$ 1300 1310DEFFNwool(wool%) 1320LOCAL cot$ 1330 WHILE ?wool%>=32 1340cot$+=CHR$(?wool%) 1350wool%+=1 1360ENDWHILE 1370=cot$ 1380 1390DEFPROCtemplate 1400SYS"Wimp_OpenTemplate",,"<Stat$Dir>.Templates" 1410indir=curbuf% 1420info%=FNtemplate("ProgInfo") 1430save%=FNtemplate("SaveData") 1440savedraw%=FNtemplate("SaveDraw") 1450savepic%=FNtemplate("SavePic") 1460card%=FNtemplate("Card") 1470letter%=FNtemplate("LetterHead") 1480comp%=FNtemplate("CompSlip") 1490picture%=FNtemplate("Picture") 1500details%=FNtemplate("details") 1510type%=FNtemplate("Type") 1520back%=FNtemplate("Back") 1530colour%=FNtemplate("colours") 1540print%=FNtemplate("print") 1550query%=FNtemplate("query") 1560quit%=FNtemplate("quitbox") 1570title%=FNtemplate("title") 1580SYS "Wimp_CloseTemplate" 1590stex=FNinfo(save%,2) 1600stexd=FNinfo(savedraw%,2) 1610stextpic=FNinfo(savepic%,2) 1620ENDPROC 1630 1640DEFFNtemplate(a$) 1650SYS"Wimp_LoadTemplate",,block,indir,endbuf%,-1,a$,0 TO ,,indir,,,,c% 1660IF c%=0 THEN PROCmess("Template "+a$+" not found."):END 1670block!64=1 1680SYS"Wimp_CreateWindow",,block TO handle 1690=handle 1700 1710DEFFNinfo(handle,icon) 1720PROCgee(handle,icon) 1730=icond!28 1740 1750DEFFNtoOS(in) 1760SYS"Font_ConverttoOS",,in*1000 TO,out 1770=out 1780 1790DEFPROCinfo(handle,icon,text$) 1800!block=handle:block!4=icon:SYS"Wimp_GetIconState",,block 1810$(block!28)=text$:block!36=LEN(text$)+1 1820block!8=0:block!12=0 1830SYS"Wimp_SetIconState",,block 1840ENDPROC 1850 1860DEFPROCgee(handle,icon) 1870!icond=handle:icond!4=icon 1880SYS"Wimp_GetIconState",,icond 1890ENDPROC 1900 1910DEFPROCseticstate(handle%,ic%,clear,eor):REM as in PRM (CE) 1920!block=handle%:block!4=ic%:block!8=eor:block!12=clear 1930SYS"Wimp_SetIconState",,block 1940ENDPROC 1950 1960DEFPROCpresent 1970a$="" 1980LOCAL ERROR 1990ON ERROR LOCAL a$="Not Present":RESTORE ERROR:ENDPROC 2000SYS"PDriver_Info" TO a,,,,name 2010WHILE ?name 2020a$=a$+CHR$(?name) 2030name+=1 2040ENDWHILE 2050$FNinfo(print%,0)=a$ 2060RESTORE ERROR 2070ENDPROC 2080 2090DEFPROCcmenus 2100PROCpresent 2110nogo=FALSE 2120FMopen=0 2130menuptr=menu% 2140MOUSE x,y,b 2150IF block!16=27 AND sprites THEN piccy=TRUE ELSE piccy=FALSE 2160IF sprites sprmen%=FNmenu("Sprite List",(largest*14)+40,men$) 2170picmenu%=FNmenu("Picture",174,"Delete,{b|savepic%}Save") 2180IF (sprites OR drawing) iconmenu$="{b|picmenu%}Picture" ELSE iconmenu$="{-|picmenu%}Picture" 2190IF (sprites OR drawing) AND block!12=-2 picmenu%=FNmenu("Picture",190,"Del Pic,{b|savepic%}Save Pic") 2200IF (sprites OR drawing) AND block!12<>-2 picmenu%=FNmenu("Picture",190,"Insert,Remove,{b|savepic%}Save Pic") 2210view%=FNmenu("View",200,"Bus. Cards,Comp Slips,LetterHeads") 2220savemenu%=FNmenu("Save",100,"{b|savedraw%}Draw,{b|save%}Data") 2230iconmenu%=FNmenu("!Stationer",174,"{b|info%}Info,{b|savemenu%}Save,{b|print%}Print,Details,{b|view%}View,"+iconmenu$+",Quit") 2240detmenu%=FNmenu("!Stationer",174,"{b|info%}Info,{b|savemenu%}Save,{b|print%}Print,{b|view%}View,"+iconmenu$+",Quit") 2250viewmenu%=FNmenu("!Stationer",174,"{b|info%}Info,{b|savemenu%}Save,{b|print%}Print,Details,{b|view%}View,"+iconmenu$+",Show All,Quit") 2260menuwin=block!12 2270CASE menuwin OF 2280WHEN -2:IF block!8=2 THEN openmenu%=iconmenu%:a=x-75:b=(7+2)*48 2290WHEN details%:openmenu%=detmenu%:a=x:b=y 2300WHEN picture%:IF block!16=4 THEN openmenu%=sprmen%:a=x:b=y:FMopen=2:ELSE ENDPROC 2310WHEN card%,comp%,letter%:IF block!8=2 THEN openmenu%=viewmenu%:a=x:b=y 2320OTHERWISE:ENDPROC 2330ENDCASE 2340IF sprites PROCseticstate(savepic%,4,1<<22,0<<22) ELSE PROCseticstate(savepic%,4,1<<22,1<<22) 2350IF drawing PROCseticstate(savepic%,5,1<<22,0<<22) ELSE PROCseticstate(savepic%,5,1<<22,1<<22) 2360PROCseticstate(savepic%,4,1<<21,0<<21):PROCseticstate(savepic%,5,1<<21,0<<21) 2370IF sprites PROCseticstate(savepic%,4,1<<21,1<<21) ELSE PROCseticstate(savepic%,5,1<<21,1<<21) 2380PROCopenmenu(a,b) 2390ENDPROC 2400 2410DEFPROCopenmenu(x,y) 2420SYS"Wimp_CreateMenu",,openmenu%,x,y 2430ENDPROC 2440DEFFNmenu(tit$,wid,menu$) 2450menu$+="," 2460oldmenu=menuptr 2470$menuptr=tit$ 2480menuptr?12=7 2490menuptr?13=2 2500menuptr?14=7 2510menuptr?15=0 2520menuptr!16=wid 2530menuptr!20=48 2540menuptr!24=0 2550menuptr+=28 2560REPEAT 2570PROCthing(menu$) 2580menu$=MID$(menu$,INSTR(menu$,",")+1) 2590menuptr+=24 2600UNTIL menu$="" 2610menuptr!-24=(menuptr!-24) OR %10000000 2620=oldmenu 2630DEFPROCthing(m$) 2640m$=LEFT$(m$,INSTR(m$,",")-1) 2650i$="":j$="" 2660IF INSTR(m$,"{")>0 THEN 2670i$=LEFT$(m$,INSTR(m$,"}")-1) 2680m$=MID$(m$,INSTR(m$,"}")+1) 2690j$=LEFT$(i$,INSTR(i$,"|")-1) 2700i$=MID$(i$,INSTR(i$,"|")+1) 2710ENDIF 2720ijack=&07000021 2730mjack=0 2740submenu=-1 2750IF INSTR(j$,"b")>0 THEN submenu=EVAL(i$) 2760IF INSTR(j$,"_")>0 THEN mjack=mjack OR 2 2770IF INSTR(j$,"�")>0 THEN mjack=mjack OR 1 2780IF INSTR(j$,"u")>0 THEN mjack=mjack OR 2:submenu=EVAL(i$) 2790IF INSTR(j$,"-")>0 THEN ijack=ijack OR &400000:submenu=EVAL(i$) 2800IF INSTR(j$,"s")>0 THEN ijack=ijack OR &400000 2810!menuptr=mjack 2820menuptr!4=submenu 2830menuptr!8=ijack 2840$(menuptr+12)=m$ 2850ENDPROC 2860 2870DEFPROCclick(block) 2880IF quitsave AND block!12<>save% THEN quiting=FALSE:quitsave=FALSE:PROCclose(save%) 2890IF prequitwait AND block!12<>save% THEN prequitwait=FALSE:shutdown=FALSE:PROCclose(save%) 2900IF block!12=card% OR block!12=comp% OR block!12=letter% savef=FALSE:PROCtitles("*") 2910IF block!12<>type% AND (block!12<>colour% AND backgrnd<>0) THEN PROCclose(type%) 2920IF block!12<>back% AND (block!12<>colour% AND backgrnd<>1) THEN PROCclose(back%) 2930IF block!12<>colour% THEN PROCclose(colour%) 2940IF block!12<>picture% THEN PROCclose(picture%) 2950IF block!8=1024 AND (block!12=card% OR block!12=comp% OR block!12=letter%) THEN PROCselectitem 2960IF block!8=4 AND (block!12=card% OR block!12=comp% OR block!12=letter%) THEN PROCgetstyle 2970IF block!8=&40 AND (block!12=card% OR block!12=comp% OR block!12=letter%) THEN PROCdragitem 2980IF block!8=&10 AND (block!12=card% OR block!12=comp% OR block!12=letter%) THEN PROCpullitem 2990IF block!12=-2 AND block!8=4 PROCopendet 3000IF block!12=-2 AND block!8=1 PROCopenwin(card%) 3010IF block!12=type% AND block!16=1 THEN MOUSE x,y,b:FMopen=1:SYS"Wimp_CreateMenu",,fmenu%,x-75,y:ENDPROC 3020IF block!8=2 THEN PROCcmenus:ENDPROC 3030IF block!12=save% AND block!16=1 winsave%=block!12:PROCdefsave 3040IF block!12=savedraw% AND block!16=1 winsave%=block!12:PROCdefsave 3050IF block!12=savepic% AND block!16=1 winsave%=block!12:PROCdefsave 3060IF block!12=save% AND block!16=3 winsave%=block!12:PROCsave($FNinfo(winsave%,2)) 3070IF block!12=savedraw% AND block!16=3 winsave%=block!12:PROCsave($FNinfo(winsave%,2)) 3080IF block!12=savepic% AND block!16=3 winsave%=block!12:PROCsave($FNinfo(winsave%,2)) 3090IF block!12=details% AND block!16=16 PROCsetdet:savef=FALSE:PROCtitles("*"):PROCclose(details%) 3100IF block!12=details% AND block!16=15 PROCclose(details%) 3110IF block!12=details% AND block!16=17 PROCresetdet 3120IF block!12=back% AND block!16=14 THEN PROCclose(back%) 3130IF block!12=back% AND block!16=15 THEN PROCapplystyle:PROCclose(back%) 3140IF block!12=back% AND block!16=13 THEN PROCsetper(0) 3150IF block!12=type% THEN 3160 CASE block!16 OF 3170 WHEN 4 : PROCincrement(1,7,999,type%,3) 3180 WHEN 5 : PROCincrement(-1,7,999,type%,3) 3190 WHEN 7 : PROCincrement(5,30,995,type%,8) 3200 WHEN 9 : PROCincrement(-5,30,995,type%,8) 3210 WHEN 16 : PROCclose(type%) 3220 WHEN 17 : PROCapplystyle:PROCclose(type%) 3230 WHEN 15 : PROCsetper(1) 3240 ENDCASE 3250ENDIF 3260IF block!12=picture% THEN 3270 CASE block!16 OF 3280 WHEN 7 : PROCclose(picture%) 3290 WHEN 8 : PROCapplystyle:PROCclose(picture%) 3300 WHEN 1,2,3 : PROCredopic 3310 WHEN 4 : PROCcmenus 3320 WHEN 5,6 : PROCswappic 3330 ENDCASE 3340ENDIF 3350IF block!12=colour% AND block!16>=14 AND block!16<=29 PROCselectcol(block!16) 3360IF block!12=colour% AND block!16=13 THEN PROCaddcol 3370IF block!12=colour% AND block!16=12 THEN PROCclose(colour%) 3380IF block!12=colour% AND block!16=-1 THEN PROCdragcol 3390IF block!12=colour% AND block!16>0 AND block!16<11 THEN PROCupanddown(block!16) 3400IF block!12=print% AND block!16=3 THEN PROCmorecopies 3410IF block!12=print% AND block!16=5 THEN PROClesscopies 3420IF shutdown THEN 3430 IF block!12=quit% AND block!16=0 THEN SYS"Wimp_ProcessKey",&1FC:PROCend 3440 IF block!12=quit% AND block!16=2 THEN PROCclose(quit%):shutdown=FALSE 3450 IF block!12=quit% AND block!16=3 THEN PROCclose(quit%):PROCopenwin(save%):prequitwait=TRUE 3460ENDIF 3470IF quiting THEN 3480 IF block!12=quit% AND block!16=0 THEN PROCend 3490 IF block!12=quit% AND block!16=2 THEN PROCclose(quit%):quiting=FALSE 3500 IF block!12=quit% AND block!16=3 THEN PROCclose(quit%):PROCopenwin(save%):quitsave=TRUE 3510ENDIF 3520IF block!12=query% AND block!16=0 THEN PROCclose(query%):PROCendq 3530IF block!12=print% AND block!16=1 THEN 3540 PROCprint 3550 IF noic=1 THEN PROCend 3560ENDIF 3570ENDPROC 3580 3590DEFFNcheckflag(handle,icon,flag) 3600bit=FALSE 3610!icond=handle:icond!4=icon 3620SYS"Wimp_GetIconState",,icond 3630IF (icond!24AND(1<<flag))>0 bit=TRUE 3640=bit 3650 3660DEFPROCsetshear(on) 3670!icond=details%:icond!4=29:SYS"Wimp_GetIconState",,icond 3680IF on=1 THEN 3690C=(1<<21):E=(1<<21) 3700ELSE 3710C=(0<<21):E=(1<<21) 3720ENDIF 3730icond!8=C:icond!12=E 3740SYS"Wimp_SetIconState",,icond 3750: 3760!icond=details%:icond!4=30:SYS"Wimp_GetIconState",,icond 3770IF on=0 THEN 3780C=(1<<21):E=(1<<21) 3790ELSE 3800C=(0<<21):E=(1<<21) 3810ENDIF 3820icond!8=C:icond!12=E 3830SYS"Wimp_SetIconState",,icond 3840ENDPROC 3850 3860DEFPROCprocess 3870IF !block=details% AND block!24=13 THEN PROCcaret:ENDPROC 3880IF !block=save% AND block!24=13 THEN winsave%=!block:PROCsave($FNinfo(!block,2)) 3890IF !block=savedraw% AND block!24=13 THEN winsave%=!block:PROCsave($FNinfo(!block,2)) 3900IF !block=savepic% AND block!24=13 THEN winsave%=!block:PROCsave($FNinfo(!block,2)) 3910SYS"Wimp_ProcessKey",block!24 3920ENDPROC 3930 3940DEFPROCcaret 3950SYS"Wimp_GetCaretPosition",,block 3960IF block!0=details% THEN 3970 IF block!4>=0 AND block!4<=7 THEN np=block!4+1 3980 IF block!4=8 THEN np=0 3990 SYS "Wimp_SetCaretPosition",details%,np,0,0,-1,LEN($FNinfo(details%,np)) 4000ENDIF 4010ENDPROC 4020 4030DEFPROCselect 4040IF FMopen=1 THEN 4050SYS"Font_DecodeMenu",0,fmenu%,block,fontblk%,256 TO,,,,size 4060$fontblk%=LEFT$($fontblk%,size-1):$fontblk%=RIGHT$($fontblk%,LEN($fontblk%)-2):$fontblk%=LEFT$($fontblk%,LEN$fontblk%-(LEN$fontblk%-INSTR($fontblk%,"\"))-1) 4070family$=$fontblk% 4080PROCinfo(type%,0,family$) 4090FMopen=0 4100ENDPROC 4110ENDIF 4120IF FMopen=2 THEN 4130SYS"Wimp_DecodeMenu",,sprmen%,block,icond 4140curspr$=$icond 4150PROCredopic 4160FMopen=0 4170ENDPROC 4180ENDIF 4190SYS"Wimp_DecodeMenu",,openmenu%,block,icond 4200IF $icond="Quit" THEN PROCareyousure:quiting=TRUE 4210IF $icond="Details" THEN PROCopendet 4220IF $icond="View.LetterHeads" THEN PROCopenwin(letter%):PROCredraw(letter%) 4230IF $icond="View.Comp Slips" THEN PROCopenwin(comp%):PROCredraw(comp%) 4240IF $icond="View.Bus. Cards" THEN PROCopenwin(card%):PROCredraw(card%) 4250IF $icond="Picture.Insert" THEN PROCinsert(menuwin) 4260IF $icond="Picture.Remove" THEN PROCremove(menuwin) 4270IF $icond="Picture.Del Pic" THEN PROCdeleteall 4280IF $icond="Show All" THEN PROCshowall(menuwin) 4290IF $icond="Save.Draw" PROCopenwin(save%) 4300IF $icond="Save.Data" PROCopenwin(saved%) 4310SYS"Wimp_GetPointerInfo",,block 4320IF block!8=1 THEN 4330block!12=menuwin 4340PROCcmenus 4350SYS"Wimp_CreateMenu",,openmenu% 4360ELSE 4370SYS"Wimp_CreateMenu",,-1 4380ENDIF 4390ENDPROC 4400 4410DEFPROCmess(mess$) 4420!icond=0:$(icond+4)=mess$+CHR$0 4430SYS"Wimp_ReportError",icond,1,"!Stationer" 4440ENDPROC 4450 4460DEFPROCerror(err$) 4470IF ERR=523 THEN 4480PROCmess("Font "+font$+" not found") 4490PROCclose(card%):PROCclose(comp%):PROCclose(letter%) 4500ELSE 4510!icond=0:$(icond+4)=err$+"."+" Press OK to continue or Cancel to quit"+CHR$0 4520SYS"Wimp_ReportError",icond,3,"!Stationer" TO ,but 4530IF but=2 THEN PROCend 4540ENDIF 4550ENDPROC 4560 4570DEFPROCout 4580SYS"DragASprite_Stop" 4590IF winsave%=savedraw% THEN stext=stexd:ft=&AFF 4600IF winsave%=savedraw% THEN stext=stexd:ft=&00C 4610IF winsave%=savepic% AND FNcheckflag(savepic%,4,21) stext=stextpic:ft=&FF9 ELSE stext=stextpic:ft=&AFF 4620IF drive%=1 THEN 4630SYS "Wimp_GetPointerInfo",,mblock 4640win=mblock!12:icon=mblock!16:xout=!mblock:yout=mblock!4: 4650mblock!20=mblock!12:mblock!24=mblock!16:mblock!28=!mblock:mblock!32=mblock!4 4660mblock!12=0:mblock!16=1:mblock!36=1024:mblock!40=ft 4670$stext=$FNinfo(winsave%,2) 4680$stext=FNgetleaf($stext) 4690FOR I=0 TO 255:IF I?stext<32 THEN I?stext=13 4700NEXT 4710!mblock=44+4*(1+(LEN$stext)DIV4) 4720$(mblock+44)=FNbit($stext)+CHR$0:!mblock=60 4730SYS "Wimp_SendMessage",17,mblock,mblock!20,mblock!24:REM DataSave 4740drag%=FALSE 4750ENDIF 4760ENDPROC 4770 4780DEFPROCdefsave 4790PROCMode 4800IF winsave%=savedraw% THEN ft$="file_AFF" 4810IF winsave%=save% THEN ft$="file_00C" 4820IF winsave%=savepic% AND FNcheckflag(savepic%,4,21) ft$="file_FF9" ELSE ft$="file_AFF" 4830!block=winsave% 4840SYS "Wimp_GetWindowState",,block 4850ysize%=block!16-block!8 4860x%=block!4:y%=block!8:block!4=1 4870SYS"Wimp_GetIconState",,block 4880block!8+=x%:block!12+=y%+ysize% 4890block!16+=x%:block!20+=y%+ysize% 4900block!24=0:block!28=0:block!32=xmax:block!36=ymax 4910!block=0:block!4=5:drag%=TRUE:drive%=1 4920IF daspr THEN SYS"DragASprite_Start",%10000101,1,ft$,block+8 ELSE SYS"Wimp_DragBox",,block 4930ENDPROC 4940 4950DEFPROCMode 4960!block=130:block!4=131:block!8=-1:SYS"OS_ReadVduVariables",block,block+128 4970SYS"OS_ReadModeVariable",MODE,4 TO ,,Xeig% 4980SYS"OS_ReadModeVariable",MODE,5 TO ,,Yeig% 4990xmax=((block!128)+1)*2^Xeig%:ymax=((block!132)+1)*2^Yeig% 5000ENDPROC 5010 5020DEFFNgetleaf(leaf$) 5030WHILE INSTR(leaf$,".") 5040leaf$=MID$(leaf$,INSTR(leaf$,".")+1) 5050ENDWHILE:=leaf$ 5060 5070DEFPROCsave(save$) 5080IF INSTR(save$,".")<1 AND INSTR(save$,":")<1 AND save$<>"<Wimp$Scrap>" THEN PROCquery("To save, drag the save icon to a directory viewer"):nosave=TRUE:ENDPROC 5090IF winsave%=save% THEN PROCmess("Sorry, this version is unable to save. Register for full version. See Help file for further details") 5100IF winsave%=savedraw% THEN PROCmess("Sorry, this version is unable to save. Register for full version. See Help file for further details") 5110IF winsave%=savepic% THEN PROCsavepic 5120ENDPROC 5130 5140DEFPROCsavepic 5150LOCAL ERROR 5160ON ERROR LOCAL IF ERR=71622:PROCquery("Disc Full"):full=TRUE:RESTORE ERROR:ENDPROC:ELSE RESTORE ERROR:PROCerror(REPORT$+" : at line "+STR$ERL):CLOSE#ile:END 5170SSpr=FNcheckflag(savepic%,4,21) 5180IF SSpr THEN 5190SYS"OS_File",0,save$,0,0,spr%+4,spr%+(sprlen+4) 5200SYS"OS_File",&12,save$,&ff9 5210ENDIF 5220IF NOT SSpr THEN 5230SYS"OS_File",0,save$,0,0,drawptr%,drawptr%+drawk 5240SYS"OS_File",&12,save$,&AFF 5250ENDIF 5260IF save$<>"<Wimp$Scrap>" PROCinfo(savepic%,2,save$) 5270ENDPROC 5280 5290DEFPROCdragin 5300IF itempull THEN PROCresizeitem 5310IF itemdrag THEN PROCdropitem 5320IF drag% THEN PROCout 5330ENDPROC 5340 5350DEFPROCmessagein 5360mblock=block 5370ref=mblock!8:task=mblock!4 5380CASE mblock!16 OF 5390WHEN 8: 5400IF NOT savef THEN 5410IF (mblock!20 AND (1<<0))>0 THEN quiting=TRUE ELSE shutdown=TRUE 5420IF quiting THEN PRINTTAB(0,0)"Quit" 5430IF shutdown THEN PRINTTAB(1,1)"Shutdown" 5440mblock!12=mblock!8:SYS"Wimp_SendMessage",19,mblock:PROCareyousure 5450ENDIF 5460WHEN 0:PROCend 5470WHEN 2: 5480IF drive%=1 THEN 5490PROCsave(FNwool(mblock+44)) 5500mblock!12=ref 5510mblock!16=3 5520mblock!36=-1 5530!mblock=256 5540sendm=&400E7 5550SYS sendm,18,mblock,task:REM DataLoad 5560ENDIF 5570WHEN 3: 5580IF mblock!40<>&0CD AND mblock!40<>&FF9 AND mblock!40<>&AFF THEN PROCmess("Only Stationer Data files or Sprites can be dropped into here"):ENDPROC 5590in=TRUE 5600PROCclose(colour%):PROCclose(type%):PROCclose(back%):PROCclose(picture%) 5610IF mblock!40=&FF9 THEN PROCinsprites 5620IF mblock!40=&AFF THEN PROCindraw 5630IF mblock!40=&0CD THEN PROCload(FNwool(block+44)) 5640WHEN 5: 5650IF block!40=&0CD THEN 5660block!12=block!8:block!16=4 5670sendm=&400E7 5680SYS sendm,18,block,block!4:REM DataLoadAck 5690PROCload(FNwool(block+44)) 5700ENDIF 5710ENDCASE 5720ENDPROC 5730 5740DEFPROCload(load$) 5750SYS"OS_Find",&40,load$ TO file% 5760t$="" 5770t$=FNreadfile 5780IF t$<>"Stationer Data File" THEN PROCmess("This is not a Stationer data file"):SYS"OS_Find",0,file%:ENDPROC 5790PROCdeleteall 5800IF FNreadfile="Sprites" THEN sprites=TRUE:sprlen=VAL(FNreadfile) 5810IF FNreadfile="Drawing" THEN drawing=TRUE:drawk=VAL(FNreadfile) 5820SYS"OS_GBPB",4,file%,workblk,8*1024 5830IF sprites THEN spr%=(FNclaim(sprlen+256)):SYS"OS_GBPB",4,file%,spr%+4,sprlen:PROCsprmen 5840IF drawing THEN drawptr%=(FNclaim(drawk+256)):SYS"OS_GBPB",4,file%,drawptr%,drawk 5850SYS"OS_Find",0,file% 5860$FNinfo(save%,2)=load$ 5870IF noic=0 savef=TRUE:PROCtitles("") 5880PROCredraw(card%):PROCredraw(comp%):PROCredraw(letter%) 5890IF load$<>"<Stat$Dir>.DefaultDt" PROCopendet 5900ENDPROC 5910 5920DEFFNreadfile 5930 t$="" 5940 REPEAT 5950 SYS"OS_BGet",,file% TO byte% 5960 IF byte%=254 SYS"OS_Find",0,file%:PROCopenwin(details%): 5970 t$=t$+CHR$(byte%) 5980 UNTIL byte%=13 OR byte%=10 5990 =LEFT$(t$,LEN(t$)-1) 6000DEFPROCinsprites 6010 load$=FNwool(block+44) 6020IF sprites THEN PROCdelete(1) 6030SYS "OS_File",5,load$ TO ,,,,sprlen 6040spr%=FNclaim(sprlen+256) 6050SYS "OS_File",&FF,load$,spr%+4 6060PROCsprmen 6070sprites=TRUE 6080FOR i=0 TO 2 6090ptr=detptr+(desblk*i) 6100IF workblk?(ptr+5)=1 THEN $(workblk+(ptr+6))=curspr$ 6110NEXT 6120PROCredraw(card%) 6130PROCredraw(letter%) 6140PROCredraw(comp%) 6150ENDPROC 6160 6170DEFPROCsprmen 6180men$="":largest=0 6190SYS "OS_SpriteOp",&108,spr% TO ,,,sprites% 6200FOR i%=0 TO sprites%-1 6210 SYS "OS_SpriteOp",256+13,spr%,temp%,&100,i%+1 TO ,,,j% 6220 temp%?j%=13 6230 IF INSTR($temp%,",")>0 THEN SYS"OS_SpriteOp",256+26,spr%,$temp%,"No"+STR$(i%+1):$temp%="No"+STR$(i%+1) 6240 IF LEN(men$)<243 THEN men$=men$+$temp%+"," 6250 IF i%=0 THEN defspr$=$temp% 6260 IF LEN($temp%)>largest largest=LEN($temp%) 6270NEXT 6280men$=LEFT$(men$,LEN(men$)-1) 6290curspr$=LEFT$(men$,INSTR(men$,",")-1) 6300ENDPROC 6310 6320DEFPROCindraw 6330load$=FNwool(block+44) 6340IF drawing THEN PROCdelete(2) 6350SYS"OS_File",5,load$ TO ,,,,drawk 6360drawptr%=FNclaim(drawk+256) 6370SYS"OS_File",&FF,load$,drawptr% 6380drawing=TRUE 6390ENDPROC 6400 6410DEFPROCopenwin(handle%) 6420!block=handle% 6430SYS"Wimp_GetWindowState",,block 6440open=block!32 AND (1<<16) 6450IF block!28<>-1 OR open=0 OR (handle%=card% OR handle%=comp% OR handle%=letter%) THEN 6460block!28=-1 6470SYS"Wimp_OpenWindow",,block 6480ENDIF 6490ENDPROC 6500 6510DEFPROCopencen(handle%) 6520PROCMode 6530!block=handle% 6540SYS"Wimp_GetWindowInfo",,block 6550workx%=block!12-block!4 6560worky%=block!16-block!8 6570block!4=(xmax-workx%)/2 6580block!12=workx%+block!4 6590block!8=(ymax-worky%)/2 6600block!16=worky%+block!8 6610block!28=-1 6620SYS"Wimp_OpenWindow",,block 6630ENDPROC 6640 6650DEFPROCfmenucr 6660SYS"Font_ListFonts",,temp%,0,&100 6670deffont$=$temp% 6680fflag%=0 6690fflag%+=1<<19 6700fflag%+=0<<20 6710SYS"Font_ListFonts",,0,fflag%,,0 TO r,s,t,A,u,B 6720DIM fmenu% A,fbuf% B 6730SYS"Font_ListFonts",,fmenu%,fflag%,A,fbuf%,B,1 6740ENDPROC 6750 6760DEFFNMax(a%,b%) 6770IF a%>b% THEN =a% 6780=b% 6790 6800DEFFNInfo(p%) 6810LOCAL a$ 6820a$="" 6830WHILE (?p%<>0 AND ?p%<>13) 6840 a$+=CHR$(?p%) 6850 p%+=1 6860ENDWHILE 6870=a$ 6880 6890DEFPROCopendet 6900!block=details% 6910SYS"Wimp_GetWindowState",,block 6920open=block!32 AND (1<<16) 6930IF open=0 THEN 6940$FNinfo(details%,0)=$(workblk+0) 6950$FNinfo(details%,1)=$(workblk+256) 6960$FNinfo(details%,6)=$(workblk+512) 6970$FNinfo(details%,7)=$(workblk+768) 6980$FNinfo(details%,8)=$(workblk+1024) 6990$FNinfo(details%,2)=$(workblk+1280) 7000$FNinfo(details%,3)=$(workblk+1536) 7010$FNinfo(details%,4)=$(workblk+1792) 7020$FNinfo(details%,5)=$(workblk+2048) 7030ENDIF 7040PROCopenwin(details%) 7050ENDPROC 7060 7070DEFPROCsetdet 7080$(workblk+0)=$FNinfo(details%,0) 7090$(workblk+256)=$FNinfo(details%,1) 7100$(workblk+512)=$FNinfo(details%,6) 7110$(workblk+768)=$FNinfo(details%,7) 7120$(workblk+1024)=$FNinfo(details%,8) 7130$(workblk+1280)=$FNinfo(details%,2) 7140$(workblk+1536)=$FNinfo(details%,3) 7150$(workblk+1792)=$FNinfo(details%,4) 7160$(workblk+2048)=$FNinfo(details%,5) 7170FOR design=0 TO 2 7180aptr=detptr+(desblk*design)+deslen 7190FOR i=0 TO 4 7200ptr=aptr+(style*i) 7210font$=$(workblk+ptr) 7220pt=workblk!(ptr+256) 7230width=workblk!(ptr+260) 7240PROCbbox($(workblk+(i*256)),font$,pt,width) 7250workblk!(ptr+278)=workblk!(ptr+270)+bbx1 7260workblk!(ptr+282)=workblk!(ptr+274)-bby1 7270workblk!(ptr+286)=bbx 7280workblk!(ptr+290)=bby 7290NEXT i 7300ptr=aptr+(style*5) 7310font$=$(workblk+ptr) 7320pt=workblk!(ptr+256) 7330width=workblk!(ptr+260) 7340PROCbbox($(workblk+(5*256)),font$,pt,width) 7350bbxm=bbx 7360PROCbbox($(workblk+(6*256)),font$,pt,width) 7370IF bbx>bbxm THEN bbxm=bbx 7380PROCbbox($(workblk+(7*256)),font$,pt,width) 7390IF bbx>bbxm THEN bbxm=bbx 7400PROCbbox($(workblk+(8*256)),font$,pt,width) 7410IF bbx>bbxm THEN bbxm=bbx 7420PROCbbox("WFMgjq",font$,pt,width) 7430workblk!(ptr+278)=workblk!(ptr+270)+bbx1 7440workblk!(ptr+282)=workblk!(ptr+274)-bby1 7450workblk!(ptr+286)=bbxm 7460workblk!(ptr+290)=bby 7470NEXT design 7480select=-1 7490PROCredraw(card%) 7500PROCredraw(comp%) 7510PROCredraw(letter%) 7520ENDPROC 7530 7540DEFPROCresetdet 7550FOR i=0 TO 8 7560PROCinfo(details%,i,"") 7570NEXT 7580ENDPROC 7590 7600DEFPROCredraw(handle) 7610 block!0=handle 7620LOCALmore% 7630SYS "Wimp_RedrawWindow",,block TO more% 7640WHILE more% 7650 CASE handle OF 7660 WHEN card% : PROCredrawcard 7670 WHEN comp% : PROCredrawcomp 7680 WHEN letter% : PROCredrawlett 7690 WHEN colour% : PROCredrawcol 7700 WHEN picture% : PROCredrawpic 7710 WHEN type% : PROCredrawtype 7720 WHEN back% : PROCredrawback 7730 ENDCASE 7740 SYS "Wimp_GetRectangle",,block TO more% 7750ENDWHILE 7760IF close=1 THEN PROCclose(card%):close=0 7770ENDPROC 7780 7790DEFPROCredrawcard 7800SYS"OS_Byte",113,2 7810SYS"OS_Byte",112,1 7820workx%=block!4-block!20 7830worky%=block!16-block!24 7840xmin=block!28-workx% 7850xmax=block!36-workx% 7860ymin=block!32-worky% 7870ymax=block!40-worky% 7880PROCdrawdesign(workx%,worky%,0,card%) 7890ENDPROC 7900 7910DEFPROCredrawcomp 7920workx%=block!4-block!20 7930worky%=block!16-block!24 7940xmin=block!28-workx% 7950xmax=block!36-workx% 7960ymin=block!32-worky% 7970ymax=block!40-worky% 7980PROCdrawdesign(workx%,worky%,1,comp%) 7990ENDPROC 8000 8010DEFPROCredrawlett 8020workx%=block!4-block!20 8030worky%=block!16-block!24 8040xmin=block!28-workx% 8050xmax=block!36-workx% 8060ymin=block!32-worky% 8070ymax=block!40-worky% 8080PROCdrawdesign(workx%,worky%,2,letter%) 8090ENDPROC 8100 8110DEFPROCredrawtype 8120workx%=block!4-block!20 8130worky%=block!16-block!24 8140SYS "ColourTrans_SetGCOL",InterHex,,,&100,0 8150RECTANGLE FILL workx%+406,worky%-204,140,50 8160SYS "ColourTrans_SetGCOL",0,,,&100,0 8170RECTANGLE workx%+406,worky%-204,140,50 8180ENDPROC 8190 8200DEFPROCredrawback 8210workx%=block!4-block!20 8220worky%=block!16-block!24 8230SYS "ColourTrans_SetGCOL",InterHex,,,&100,0 8240RECTANGLE FILL workx%+342,worky%-110,260,48 8250SYS "ColourTrans_SetGCOL",0,,,&100,0 8260RECTANGLE workx%+342,worky%-110,260,48 8270ENDPROC 8280 8290DEFPROCredrawcol 8300RED=(hex>>8)AND&FF 8310GREEN=(hex>>16)AND&FF 8320BLUE=(hex>>24)AND&FF 8330workx%=block!4-block!20 8340worky%=block!16-block!24 8350SYS "ColourTrans_SetGCOL",hex,,,&100,0 8360RECTANGLE FILL workx%+234,worky%-247,175,48 8370SYS "Wimp_SetColour",1,1 8380RECTANGLE FILL workx%+270,worky%-170,344,147 8390SYS "ColourTrans_SetGCOL",&0000FF00,,,&100,0 8400RECTANGLE FILL workx%+271,worky%-55,(RED/255)*344,32 8410SYS "ColourTrans_SetGCOL",&00FF0000,,,&100,0 8420RECTANGLE FILL workx%+271,worky%-111,(GREEN/255)*344,32 8430SYS "ColourTrans_SetGCOL",&FF000000,,,&100,0 8440RECTANGLE FILL workx%+271,worky%-167,(BLUE/255)*344,32 8450SYS "ColourTrans_SetGCOL",0,,,&100,0 8460RECTANGLE workx%+233,worky%-248,176,49 8470RECTANGLE workx%+270,worky%-58,344,34 8480RECTANGLE workx%+270,worky%-114,344,34 8490RECTANGLE workx%+270,worky%-170,344,34 8500ENDPROC 8510 8520DEFPROCredrawpic 8530 workx%=block!4-block!20 8540 worky%=block!16-block!24 8550redraw=FALSE 8560xmin=block!28-workx% 8570xmax=block!36-workx% 8580ymin=block!32-worky% 8590ymax=block!40-worky% 8600redraw=FNoverlaps(16,-218,216,-18,xmin,ymin,xmax,ymax) 8610IF redraw THEN 8620ptr=detptr+(desblk*design) 8630Red=workblk?(ptr+1) 8640Green=workblk?(ptr+2) 8650Blue=workblk?(ptr+3) 8660InterHex=(Blue<<24)+(Green<<16)+(Red<<8) 8670SYS "ColourTrans_SetGCOL",InterHex,,,&100,0 8680RECTANGLE FILL workx%+16,worky%-218,200,200 8690IF FNcheckflag(picture%,5,21) THEN picpic=1 ELSE picpic=2 8700IF picpic=1 THEN 8710SYS"Wimp_ReadPixTrans",&100,1,"sizeing",,,,scale% 8720hpix=scale%!4:vpix=scale%!12 8730boxw=100/hpix:boxh=100/vpix 8740PROCscale(100,100,curspr$) 8750SYS &2E,256+40,spr%,curspr$ TO A,B,C,w%,h%,D,mode% 8760realx=w%*(scale%!0/scale%!8):realy=h%*(scale%!4/scale%!12) 8770xmul=(boxw/realx)*100:ymul=(boxh/realy)*100 8780Lock=FNcheckflag(picture%,1,21) 8790Centred=FNcheckflag(picture%,2,21) 8800Front=FNcheckflag(picture%,3,21) 8810IF Lock AND xmul<ymul THEN ymul=xmul 8820IF Lock AND xmul>ymul THEN xmul=ymul 8830PROCgetpal(curspr$) 8840xoff=0:yoff=0 8850newx=realx*xmul/100:newy=realy*ymul/100 8860IF Centred THEN xoff=(boxw-newx)*hpix:yoff=(boxh-newy)*vpix 8870xdiv=100:ydiv=100 8880scale%!0=scale%!0*xmul:scale%!4=scale%!4*ymul:scale%!8=scale%!8*xdiv:scale%!12=scale%!12*ydiv 8890SYS &2E,256+52,spr%,curspr$,workx%+16+xoff,worky%-218+ yoff,8,scale%,PixTrans% 8900ENDIF 8910IF picpic=2 THEN 8920Lock=FNcheckflag(picture%,1,21) 8930Centred=FNcheckflag(picture%,2,21) 8940Front=FNcheckflag(picture%,3,21) 8950icond!0=65536:icond!4=0:icond!8=0:icond!12=65536:icond!16=0*256:icond!20=0*256 8960SYS"DrawFile_BBox",0,drawptr%,drawk,icond,matrix 8970width=(matrix!8-matrix!0)/256:height=(matrix!12-matrix!4)/256 8980xmul=200/width:ymul=200/height 8990IF Lock AND xmul<ymul THEN ymul=xmul 9000IF Lock AND xmul>ymul THEN xmul=ymul 9010neww=width*xmul:newh=height*ymul 9020cxoff=0:cyoff=0 9030IF Centred THEN cxoff=(200-neww)/2:cyoff=(200-newh)/2 9040icond!0=xmul*65536:icond!12=ymul*65536 9050SYS"DrawFile_BBox",0,drawptr%,drawk,icond,matrix 9060width=(matrix!8-matrix!0)/256:height=(matrix!12-matrix!4)/256 9070xoff=(0-matrix!0/256):yoff=(0-matrix!4/256) 9080icond!0=xmul*65536:icond!4=0:icond!8=0:icond!12=ymul*65536:icond!16=(workx%+16+xoff+cxoff)*256:icond!20=(worky%-218+yoff+cyoff)*256 9090SYS"DrawFile_Render",%00,drawptr%,drawk,icond,0 9100GCOL 2 9110ENDIF 9120ENDIF 9130ENDPROC 9140 9150DEFPROCdrawdesign(pxco,pyco,design,handle) 9160ptr=detptr+(desblk*design) 9170border=workblk?(ptr+0) 9180BRed=workblk?(ptr+1) 9190BGreen=workblk?(ptr+2) 9200BBlue=workblk?(ptr+3) 9210BTran=workblk?(ptr+4) 9220pictype=workblk?(ptr+5) 9230Front=workblk?(ptr+24) 9240bx1=workblk!(ptr+28) 9250by1=workblk!(ptr+32) 9260bx2=workblk!(ptr+36) 9270by2=workblk!(ptr+40) 9280BCol=(BBlue<<24)+(BGreen<<16)+(BRed<<8) 9290CASE border OF 9300WHEN 1: 9310SYS "ColourTrans_SetGCOL",BCol,,,&100,0 9320RECTANGLE FILL pxco+bx1,pyco-by1,bx2,by2 9330SYS "ColourTrans_SetGCOL",&00000000,,,&100,0 9340RECTANGLE pxco+bx1,pyco-by1,bx2,by2 9350WHEN 2: 9360SYS "ColourTrans_SetGCOL",BCol,,,&100,0 9370RECTANGLE FILL pxco+bx1,pyco-by1,bx2,by2 9380SYS "ColourTrans_SetGCOL",&00000000,,,&100,0 9390RECTANGLE pxco+bx1,pyco-by1,bx2,by2 9400RECTANGLE pxco+bx1+2,pyco-by1+2,bx2-4,by2-4 9410WHEN 3: 9420SYS "ColourTrans_SetGCOL",BCol,,,&100,0 9430RECTANGLE FILL pxco+bx1,pyco-by1,bx2,by2 9440SYS "ColourTrans_SetGCOL",&00000000,,,&100,0 9450RECTANGLE pxco+bx1,pyco-by1,bx2,by2 9460RECTANGLE pxco+bx1+2,pyco-by1+2,bx2-4,by2-4 9470RECTANGLE pxco+bx1+4,pyco-by1+4,bx2-8,by2-8 9480WHEN 4: 9490SYS "ColourTrans_SetGCOL",BCol,,,&100,0 9500RECTANGLE FILL pxco+bx1,pyco-by1,bx2,by2 9510SYS "ColourTrans_SetGCOL",&00000000,,,&100,0 9520RECTANGLE pxco+bx1,pyco-by1,bx2,by2 9530RECTANGLE pxco+bx1+4,pyco-by1+4,bx2-8,by2-8 9540RECTANGLE pxco+bx1+6,pyco-by1+6,bx2-12,by2-12 9550WHEN 5: 9560SYS "ColourTrans_SetGCOL",BCol,,,&100,0 9570RECTANGLE FILL pxco+bx1,pyco-by1,bx2,by2 9580SYS "ColourTrans_SetGCOL",&00000000,,,&100,0 9590RECTANGLE pxco+bx1,pyco-by1,bx2,by2 9600RECTANGLE pxco+bx1+2,pyco-by1+2,bx2-4,by2-4 9610RECTANGLE pxco+bx1+6,pyco-by1+6,bx2-12,by2-12 9620ENDCASE 9630IF Front=0 AND pictype=1 THEN PROCdessprite(pxco,pyco,design) 9640IF Front=0 AND pictype=2 THEN PROCdesdraw(pxco,pyco,design) 9650 FOR item=0 TO 5 9660 PROCdrawitem(design,item,pxco,pyco) 9670 NEXT 9680IF Front=1 AND pictype=1 THEN PROCdessprite(pxco,pyco,design) 9690IF Front=1 AND pictype=2 THEN PROCdesdraw(pxco,pyco,design) 9700IF select<>-1 AND handle=curdes THEN 9710 x1=sx1:y1=0-sy1:x2=sx1+sx2:y2=0-sy1+sy2:a1=xmin:b1=ymin:a2=xmax:b2=ymax 9720 redraw=FNoverlaps(x1,y1,x2,y2,a1,b1,a2,b2) 9730 IF redraw THEN 9740 SYS"ColourTrans_SetGCOL",&0000FF00,,,&100,0 9750 MOVE workx%+sx1,worky%-sy1 9760 VDU 23,6,&CC| 9770 PLOT 17,sx2,0 9780 PLOT 17,0,sy2 9790 PLOT 17,0-sx2,0 9800 PLOT 17,0,0-sy2 9810 ENDIF 9820ENDIF 9830ENDPROC 9840 9850DEFPROCdrawitem(design,item,pxco,pyco) 9860ptr=detptr+(desblk*design)+deslen+(style*item) 9870hide=workblk?(ptr+294) 9880IF hide=0 THEN ENDPROC 9890redraw=FALSE 9900FxPos=workblk!(ptr+270) 9910FyPos=workblk!(ptr+274) 9920Fx1=workblk!(ptr+278) 9930Fy1=workblk!(ptr+282) 9940Fx2=workblk!(ptr+286) 9950Fy2=workblk!(ptr+290) 9960u=workblk?(ptr+265) 9970IF u=1 THEN line=4+4 ELSE line=0 9980x1=Fx1:y1=0-Fy1-line:x2=Fx1+Fx2:y2=0-Fy1+Fy2:a1=xmin:b1=ymin:a2=xmax:b2=ymax 9990IF item=5 THEN y2=Fy2*4+6*3 10000redraw=FNoverlaps(x1,y1,x2,y2,a1,b1,a2,b2) 10010IF redraw THEN 10020text$=$(workblk+item*256) 10030IF item=5 THEN 10040text2$=$(workblk+(item+1)*256) 10050text3$=$(workblk+(item+2)*256) 10060text4$=$(workblk+(item+3)*256) 10070ENDIF 10080font$=$(workblk+ptr) 10090SYS"XFont_FindFont",,font$,16,16,0,0 TO fhnd% 10100IF fhnd%!0=523 THEN 10110SYS"XFont_FindFont",,"Trinity.Medium",16,16,0,0 TO fhnd% 10120IF fhnd%!0=523 THEN font$=deffont$ ELSE font$="Trinity.Medium" 10130ENDIF 10140pt=workblk!(ptr+256) 10150w=workblk!(ptr+260) 10160j=workblk?(ptr+264) 10170FRed=workblk?(ptr+266) 10180FGreen=workblk?(ptr+267) 10190FBlue=workblk?(ptr+268) 10200FTran=workblk?(ptr+269) 10210FCol=(FBlue<<24)+(FGreen<<16)+(FRed<<8) 10220x=FNwidth(text$,font$,pt,w) 10230SYS "ColourTrans_SetFontColours",font%,BCol,FCol,14 10240IF item=5 THEN 10250jus=%10010 10260nFx=FxPos 10270IF j=3 THEN jus=%10001:MOVE pxco+FxPos+Fx2,pyco-FyPos 10280width=FNwidth(text4$,font$,pt,w) 10290IF j=2 nFx=FxPos+(Fx2-width) 10300IF j=1 nFx=FxPos+(Fx2-width)/2 10310SYS"Font_Paint",,text4$,jus,pxco+nFx,pyco-FyPos 10320width=FNwidth(text3$,font$,pt,w) 10330IF j=2 nFx=FxPos+(Fx2-width) 10340IF j=1 nFx=FxPos+(Fx2-width)/2 10350SYS"Font_Paint",,text3$,jus,pxco+nFx,pyco-FyPos+((Fy2+6)*1) 10360width=FNwidth(text2$,font$,pt,w) 10370IF j=2 nFx=FxPos+(Fx2-width) 10380IF j=1 nFx=FxPos+(Fx2-width)/2 10390SYS"Font_Paint",,text2$,jus,pxco+nFx,pyco-FyPos+((Fy2+6)*2) 10400width=FNwidth(text$,font$,pt,w) 10410IF j=2 nFx=FxPos+(Fx2-width) 10420IF j=1 nFx=FxPos+(Fx2-width)/2 10430SYS"Font_Paint",,text$,jus,pxco+nFx,pyco-FyPos+((Fy2+6)*3) 10440ELSE 10450SYS"Font_Paint",,text$,%10010,pxco+FxPos,pyco-FyPos 10460ENDIF 10470IF u=1 THEN 10480SYS "ColourTrans_SetGCOL",FCol,,,&100,0 10490RECTANGLE FILL pxco+Fx1,pyco-Fy1-4,x,-4 10500ENDIF 10510ENDIF 10520ENDPROC 10530 10540DEFFNoverlaps(x1,y1,x2,y2,a1,b1,a2,b2) 10550interx=FALSE:intery=FALSE 10560IF (x1>=a1 AND x1<=a2) THEN interx=TRUE 10570IF (x2>=a1 AND x2<=a2) THEN interx=TRUE 10580IF (a1>=x1 AND a1<=x2) THEN interx=TRUE 10590IF (a2>=x1 AND a2<=x2) THEN interx=TRUE 10600IF (y1>=b1 AND y1<=b2) THEN intery=TRUE 10610IF (y2>=b1 AND y2<=b2) THEN intery=TRUE 10620IF (b1>=y1 AND b1<=y2) THEN intery=TRUE 10630IF (b2>=y1 AND b2<=y2) THEN intery=TRUE 10640IF interx AND intery THEN =TRUE 10650=FALSE 10660 10670DEFPROCdessprite(cxco,cyco,design) 10680redraw=FALSE 10690ptr=detptr+(desblk*design) 10700Spx1=workblk!(ptr+44) 10710Spy1=workblk!(ptr+48) 10720Spx2=workblk!(ptr+52) 10730Spy2=workblk!(ptr+56) 10740x1=Spx1:y1=0-Spy1:x2=Spx1+Spx2:y2=0-Spy1+Spy2:a1=xmin:b1=ymin:a2=xmax:b2=ymax 10750redraw=FNoverlaps(x1,y1,x2,y2,a1,b1,a2,b2) 10760IF sprites AND redraw THEN 10770curspr$=$(workblk+(ptr+6)) 10780Lock=workblk?(ptr+22) 10790Centred=workblk?(ptr+23) 10800Front=workblk?(ptr+24) 10810SYS"Wimp_ReadPixTrans",&100,1,"sizeing",,,,scale% 10820hpix=scale%!4:vpix=scale%!12 10830Spx2=Spx2/hpix:Spy2=Spy2/vpix 10840SYS &2E,256+40,spr%,curspr$ TO ,,,w%,h%,D,mode% 10850PROCscale(Spx2,Spy2,curspr$) 10860PROCgetpal(curspr$) 10870newx=w%*(scale%!0/scale%!8):newy=h%*(scale%!4/scale%!12) 10880xmul=((Spx2/2)/newx)*100:ymul=((Spy2/2)/newy)*100 10890xoff=0:yoff=0 10900xoff1=(w%*xmul*scale%!0*2)/100:yoff1=(h%*ymul*scale%!4*2)/100 10910IF Lock=1 AND xmul<ymul THEN ymul=xmul 10920IF Lock=1 AND xmul>ymul THEN xmul=ymul 10930IF Centred=1 THEN 10940xoff2=(w%*xmul*scale%!0*2)/100:yoff2=(h%*ymul*scale%!4*2)/100 10950xoff=(xoff1-xoff2)/2*hpix:yoff=(yoff1-yoff2)/2*vpix 10960ENDIF 10970xdiv=100:ydiv=100 10980scale%!0=scale%!0*xmul:scale%!4=scale%!4*ymul:scale%!8=scale%!8*xdiv:scale%!12=scale%!12*ydiv 10990SYS &2E,256+52,spr%,curspr$,cxco+Spx1+xoff,cyco-Spy1+yoff,8,scale%,PixTrans% 11000ENDIF 11010ENDPROC 11020 11030DEFPROCdesdraw(cxco,cyco,design) 11040redraw=FALSE 11050ptr=detptr+(desblk*design) 11060Spx1=workblk!(ptr+44) 11070Spy1=workblk!(ptr+48) 11080Spx2=workblk!(ptr+52) 11090Spy2=workblk!(ptr+56) 11100x1=Spx1:y1=0-Spy1:x2=Spx1+Spx2:y2=0-Spy1+Spy2:a1=xmin:b1=ymin:a2=xmax:b2=ymax 11110redraw=FNoverlaps(x1,y1,x2,y2,a1,b1,a2,b2) 11120IF drawing AND redraw THEN 11130Lock=workblk?(ptr+22) 11140Centred=workblk?(ptr+23) 11150Front=workblk?(ptr+24) 11160icond!0=65536:icond!4=0:icond!8=0:icond!12=65536:icond!16=0*256:icond!20=0*256 11170SYS"DrawFile_BBox",0,drawptr%,drawk,icond,matrix 11180width=(matrix!8-matrix!0)/256:height=(matrix!12-matrix!4)/256 11190xmul=Spx2/width:ymul=Spy2/height 11200xoff=0:yoff=0 11210xoff1=xmul*width:yoff1=ymul*height 11220IF Lock AND xmul<ymul THEN ymul=xmul 11230IF Lock AND xmul>ymul THEN xmul=ymul 11240IF Centred=1 THEN 11250xoff2=xmul*width:yoff2=ymul*height 11260xoff=(xoff1-xoff2)/2:yoff=(yoff1-yoff2)/2 11270ENDIF 11280icond!0=xmul*65536:icond!12=ymul*65536 11290SYS"DrawFile_BBox",0,drawptr%,drawk,icond,matrix 11300width=(matrix!8-matrix!0)/256:height=(matrix!12-matrix!4)/256 11310bbxoff=(0-matrix!0/256):bbyoff=(0-matrix!4/256) 11320icond!0=xmul*65536:icond!4=0:icond!8=0:icond!12=ymul*65536:icond!16=(cxco+Spx1+bbxoff+xoff)*256:icond!20=(cyco-Spy1+bbyoff+yoff)*256 11330SYS"DrawFile_Render",%00,drawptr%,drawk,icond,0 11340ENDIF 11350ENDPROC 11360 11370DEFPROCscale(spw,sph,workspr$) 11380SYS"Wimp_ReadPixTrans",&100,spr%,workspr$,,,,scale%,palette% 11390ENDPROC 11400 11410DEFPROCgetpal(workspr$) 11420SYS "OS_SpriteOp",256+24,spr%,workspr$ TO ,,sptr% 11430SYS "OS_SpriteOp",256+40,spr%,workspr$ TO ,,,,,,mode% 11440SYS "OS_SpriteOp",256+37,spr%,workspr$,-1 TO ,,,palsize 11450SYS "OS_ReadModeVariable",mode%,9 TO ,,BitsPP 11460BitsPP=2^BitsPP 11470IF sptr%!32<>44 THEN 11480 FOR I%=0 TO sptr%!32-52 STEP 8 11490 palette%!(I%/2)=sptr%!(I%+44) 11500 NEXT 11510ENDIF 11520IF sptr%!32<>44 THEN 11530 IF sptr%!32<>44+2048 THEN 11540 SYS "ColourTrans_SelectTable",mode%,palette%,-1,-1,PixTrans% 11550 ELSE 11560 FOR Q%=0TO255 11570 SYS "ColourTrans_ReturnColourNumberForMode",palette%!(Q%<<2),-1,-1 TO PixTrans%?Q% 11580 NEXT 11590 ENDIF 11600ELSE 11610 IF BitsPP<8 THEN 11620 SYS "ColourTrans_SelectTable",mode%,defpal%,-1,-1,PixTrans% 11630 ELSE 11640 SYS "ColourTrans_SelectTable",mode%,-1,-1,-1,PixTrans% 11650 ENDIF 11660ENDIF 11670ENDPROC 11680 11690DEFPROCbbox(text$,font$,xs,ys) 11700SYS "Font_FindFont",,font$,(xs*(ys/100))*16,xs*16,0,0 TO font% 11710SYS "Font_SetFont",font% 11720SYS "Font_StringBBox",,text$ TO ,bbx1,bby1,bbx2,bby2 11730SYS "Font_StringWidth",,text$,&FFFFFF,&FFFFFFFF,-1,LEN(text$) TO ,,x,y 11740SYS "Font_ConverttoOS",,bbx1,bby1 TO ,bbx1,bby1 11750SYS "Font_ConverttoOS",,bbx2,bby2 TO ,bbx2,bby2 11760bbx=bbx2-bbx1:bby=bby2-bby1 11770ENDPROC 11780 11790DEFFNwidth(text$,font$,xs,ys) 11800SYS "Font_FindFont",,font$,(xs*(ys/100))*16,xs*16,0,0 TO font% 11810SYS "Font_SetFont",font% 11820SYS "Font_StringWidth",,text$,&FFFFFF,&FFFFFF,31,LEN(text$) TO ,,x%,y% 11830SYS "Font_ConverttoOS",,x%,y% TO ,x,y 11840=x 11850 11860DEFPROCclose(!block) 11870SYS"Wimp_CloseWindow",,block 11880ENDPROC 11890 11900DEFFNcheckit(hnd%,ic%) 11910!icond=hnd%:icond!4=ic% 11920SYS"Wimp_GetIconState",,icond 11930flags%=icond!24 11940=flags%AND&F0000 11950 11960DEFPROCgetstyle 11970changedes=block!12 11980mx=block!0:my=block!4 11990CASE changedes OF 12000WHEN card% : design=0 12010WHEN comp% : design=1 12020WHEN letter% : design=2 12030ENDCASE 12040change=select 12050IF change>-1 THEN 12060IF change>=0 AND change<=5 THEN 12070ptr=detptr+(desblk*design)+deslen+(style*change) 12080font$=$(workblk+ptr) 12090pt=workblk!(ptr+256) 12100width=workblk!(ptr+260) 12110j=workblk?(ptr+264) 12120u=workblk?(ptr+265) 12130ColR=workblk?(ptr+266) 12140ColG=workblk?(ptr+267) 12150ColB=workblk?(ptr+268) 12160ColT=workblk?(ptr+269) 12170hide=workblk?(ptr+294) 12180InterHex=(ColB<<24)+(ColG<<16)+(ColR<<8) 12190$FNinfo(type%,0)=font$ 12200$FNinfo(type%,3)=STR$pt 12210$FNinfo(type%,8)=STR$width 12220PROCseticstate(type%,18,1<<21,1<<21) 12230IF hide=0 THEN PROCseticstate(type%,18,1<<21,0<<21) 12240IF change>=0 AND change<=4 THEN a=1<<22:b=1<<22:c=1<<21:d=0<<21:e=1<<22:f=0<<22 12250IF change=5 THEN a=1<<22:b=0<<22:c=1<<21:d=0<<21:e=1<<22:f=1<<22 12260PROCseticstate(type%,10,a,b) 12270PROCseticstate(type%,11,a,b) 12280PROCseticstate(type%,12,a,b) 12290PROCseticstate(type%,13,a,b) 12300PROCseticstate(type%,10,c,d) 12310PROCseticstate(type%,11,c,d) 12320PROCseticstate(type%,12,c,d) 12330PROCseticstate(type%,13,c,d) 12340PROCseticstate(type%,14,1<<21,0<<21) 12350PROCseticstate(type%,14,e,f) 12360PROCopenwin(type%) 12370IF change=5 THEN PROCseticstate(type%,10+j,1<<21,1<<21) 12380IF u=1 THEN PROCseticstate(type%,14,1<<21,1<<21) 12390ENDIF 12400IF change=6 THEN 12410ptr=detptr+(desblk*design) 12420pic=workblk?(ptr+5) 12430PROCseticstate(picture%,1,1<<21,0<<21) 12440PROCseticstate(picture%,2,1<<21,0<<21) 12450PROCseticstate(picture%,3,1<<21,0<<21) 12460Lock=workblk?(ptr+22) 12470Centre=workblk?(ptr+23) 12480Front=workblk?(ptr+24) 12490IF pic=1 THEN curspr$=$(workblk+(ptr+6)) 12500IF Lock PROCseticstate(picture%,1,1<<21,1<<21) 12510IF Centre PROCseticstate(picture%,2,1<<21,1<<21) 12520IF Front PROCseticstate(picture%,3,1<<21,1<<21) 12530PROCseticstate(picture%,5,1<<22,0<<22) 12540PROCseticstate(picture%,4,1<<22,0<<22) 12550PROCseticstate(picture%,6,1<<22,0<<22) 12560IF pic=1 THEN PROCseticstate(picture%,5,1<<21,1<<21):PROCseticstate(picture%,6,1<<21,0<<21) 12570IF pic=2 THEN PROCseticstate(picture%,6,1<<21,1<<21):PROCseticstate(picture%,5,1<<21,0<<21) 12580IF NOT sprites THEN PROCseticstate(picture%,5,1<<22,1<<22):PROCseticstate(picture%,4,1<<22,1<<22) 12590IF NOT drawing THEN PROCseticstate(picture%,6,1<<22,1<<22) 12600PROCopenwin(picture%) 12610ENDIF 12620ENDIF 12630IF change=-1 THEN 12640ptr=detptr+(desblk*design) 12650border=workblk?(ptr) 12660ColR=workblk?(ptr+1) 12670ColG=workblk?(ptr+2) 12680ColB=workblk?(ptr+3) 12690ColT=workblk?(ptr+4) 12700InterHex=(ColB<<24)+(ColG<<16)+(ColR<<8) 12710FOR i=2 TO 10 STEP 2 12720IF border=i/2 THEN PROCseticstate(back%,i,1<<21,1<<21):ELSE PROCseticstate(back%,i,1<<21,0<<21) 12730NEXT 12740IF border=0 THEN PROCseticstate(back%,11,1<<21,1<<21):ELSE PROCseticstate(back%,11,1<<21,0<<21) 12750PROCopenwin(back%) 12760ENDIF 12770ENDPROC 12780 12790DEFPROCapplystyle 12800IF change>-1 THEN 12810IF change>=0 AND change<=5 THEN 12820ptr=detptr+(desblk*design)+deslen+(style*change) 12830font$=$FNinfo(type%,0) 12840pt=VAL($FNinfo(type%,3)) 12850width=VAL($FNinfo(type%,8)) 12860$(workblk+ptr)=font$ 12870workblk!(ptr+256)=pt 12880workblk!(ptr+260)=width 12890workblk?(ptr+266)=(InterHex>>8) AND &FF 12900workblk?(ptr+267)=(InterHex>>16) AND &FF 12910workblk?(ptr+268)=(InterHex>>24) AND &FF 12920j=0:u=0 12930IF FNcheckflag(type%,10,21) THEN j=0 12940IF FNcheckflag(type%,11,21) THEN j=1 12950IF FNcheckflag(type%,12,21) THEN j=2 12960IF FNcheckflag(type%,13,21) THEN j=3 12970IF FNcheckflag(type%,14,21) THEN u=1 12980IF FNcheckflag(type%,18,21) THEN hide=1 ELSE hide=0:select=-1 12990workblk?(ptr+264)=j 13000workblk?(ptr+265)=u 13010workblk?(ptr+294)=hide 13020 IF change>=0 AND change<=4 THEN 13030 PROCbbox($(workblk+(change*256)),font$,pt,width) 13040 workblk!(ptr+278)=workblk!(ptr+270)+bbx1 13050 workblk!(ptr+282)=workblk!(ptr+274)-bby1 13060 workblk!(ptr+286)=bbx 13070 workblk!(ptr+290)=bby 13080 ax=sx2:by=sy2 13090 sx2=bbx:sy2=bby 13100 ENDIF 13110 IF change=5 THEN 13120 PROCbbox($(workblk+(5*256)),font$,pt,width) 13130 bbxm=bbx 13140 PROCbbox($(workblk+(6*256)),font$,pt,width) 13150 IF bbx>bbxm THEN bbxm=bbx 13160 PROCbbox($(workblk+(7*256)),font$,pt,width) 13170 IF bbx>bbxm THEN bbxm=bbx 13180 PROCbbox($(workblk+(8*256)),font$,pt,width) 13190 IF bbx>bbxm THEN bbxm=bbx 13200 PROCbbox("WFMgjq",font$,pt,width) 13210 workblk!(ptr+278)=workblk!(ptr+270)+bbx1 13220 workblk!(ptr+282)=workblk!(ptr+274)-bby1 13230 workblk!(ptr+286)=bbxm 13240 workblk!(ptr+290)=bby 13250 ax=sx2:by=sy2 13260 sx2=bbxm:sy2=bby*4+6*3 13270 ENDIF 13280IF ax>sx2 THEN ax=ax ELSE ax=sx2 13290IF by>sy2 THEN by=by ELSE by=sy2 13300SYS"Wimp_ForceRedraw",changedes,sx1,0-sy1-8,sx1+ax+2,0-sy1+by+2 13310ENDIF 13320IF change=6 THEN 13330ptr=detptr+(desblk*design) 13340sord=FNcheckflag(picture%,5,21) 13350Lock=FNcheckflag(picture%,1,21) 13360Centred=FNcheckflag(picture%,2,21) 13370Front=FNcheckflag(picture%,3,21) 13380IF sord THEN workblk?(ptr+5)=1 ELSE workblk?(ptr+5)=2 13390IF Lock workblk?(ptr+22)=1 ELSE workblk?(ptr+22)=0 13400IF Centred workblk?(ptr+23)=1 ELSE workblk?(ptr+23)=0 13410IF Front workblk?(ptr+24)=1 ELSE workblk?(ptr+24)=0 13420$(workblk+(ptr+6))=curspr$ 13430SYS"Wimp_ForceRedraw",changedes,sx1,0-sy1,sx1+sx2+2,0-sy1+sy2+2 13440ENDIF 13450ENDIF 13460IF change=-1 THEN 13470ptr=detptr+(desblk*design) 13480workblk?(ptr+1)=(InterHex>>8)AND&FF 13490workblk?(ptr+2)=(InterHex>>16)AND&FF 13500workblk?(ptr+3)=(InterHex>>24)AND&FF 13510FOR i=2 TO 10 STEP 2 13520IF FNcheckflag(back%,i,21) THEN workblk?(ptr)=i/2 13530NEXT 13540IF FNcheckflag(back%,11,21) THEN workblk?(ptr)=0 13550PROCredraw(changedes) 13560ENDIF 13570IF change=-2 THEN 13580ptr=detptr+(desblk*design) 13590sord=FNcheckflag(picture%,5,21) 13600Lock=FNcheckflag(picture%,1,21) 13610Centred=FNcheckflag(picture%,2,21) 13620Front=FNcheckflag(picture%,3,21) 13630oldsord=workblk?(ptr+5) 13640IF sord THEN workblk?(ptr+5)=1 ELSE workblk?(ptr+5)=2 13650IF Lock workblk?(ptr+22)=1 ELSE workblk?(ptr+22)=0 13660IF Centred workblk?(ptr+23)=1 ELSE workblk?(ptr+23)=0 13670IF Front workblk?(ptr+24)=1 ELSE workblk?(ptr+24)=0 13680workblk!(ptr+44)=350 13690workblk!(ptr+48)=300 13700workblk!(ptr+52)=200 13710workblk!(ptr+56)=200 13720IF sord THEN $(workblk+(ptr+6))=curspr$ 13730IF select=6 THEN select=-1 13740IF oldsord>0 THEN PROCredraw(curdes) 13750SYS"Wimp_ForceRedraw",curdes,350,-300,350+200,-300+200 13760ENDIF 13770ENDPROC 13780 13790DEFPROCshowall(handle) 13800CASE handle OF 13810WHEN card% : design=0 13820WHEN comp% : design=1 13830WHEN letter% : design=2 13840ENDCASE 13850FOR i=0 TO 5 13860ptr=detptr+(desblk*design)+deslen+(style*i) 13870workblk?(ptr+294)=1 13880NEXT 13890PROCredraw(handle) 13900ENDPROC 13910 13920DEFPROCremove(handle) 13930curdes=handle 13940CASE curdes OF 13950WHEN card% : design=0 13960WHEN comp% : design=1 13970WHEN letter% : design=2 13980ENDCASE 13990ptr=detptr+(desblk*design) 14000oldsord=workblk?(ptr+5) 14010workblk?(ptr+5)=0 14020$(workblk+(ptr+6))="" 14030IF select=6 THEN select=-1 14040IF oldsord>0 THEN PROCredraw(curdes) 14050ENDPROC 14060 14070DEFPROCinsert(handle) 14080curdes=handle 14090CASE curdes OF 14100WHEN card% : design=0 14110WHEN comp% : design=1 14120WHEN letter% : design=2 14130ENDCASE 14140PROCseticstate(picture%,1,1<<21,0<<21) 14150PROCseticstate(picture%,2,1<<21,0<<21) 14160PROCseticstate(picture%,3,1<<21,0<<21) 14170PROCseticstate(picture%,5,1<<21,0<<21) 14180PROCseticstate(picture%,6,1<<21,0<<21) 14190PROCseticstate(picture%,4,1<<22,0<<22) 14200PROCseticstate(picture%,5,1<<22,0<<22) 14210PROCseticstate(picture%,6,1<<22,0<<22) 14220IF NOT sprites THEN PROCseticstate(picture%,5,1<<22,1<<22):PROCseticstate(picture%,4,1<<22,1<<22) 14230IF NOT drawing THEN PROCseticstate(picture%,6,1<<22,1<<22) 14240IF sprites THEN 14250curspr$=defspr$ 14260picpic=1 14270PROCseticstate(picture%,5,1<<21,1<<21) 14280ELSE 14290picpic=2 14300PROCseticstate(picture%,6,1<<21,1<<21) 14310ENDIF 14320PROCopenwin(picture%) 14330change=-2 14340ENDPROC 14350 14360DEFPROCswappic 14370button=block!16 14380IF button=5 THEN picpic=1:IF curspr$="" THEN curspr$=defspr$ 14390IF button=6 THEN picpic=2 14400PROCredopic 14410ENDPROC 14420 14430DEFPROCredopic 14440SYS"Wimp_ForceRedraw",picture%,12,-222,222,12 14450ENDPROC 14460 14470DEFPROCselectitem 14480curdes=block!12 14490mx=block!0:my=block!4 14500CASE curdes OF 14510WHEN card% : design=0 14520WHEN comp% : design=1 14530WHEN letter% : design=2 14540ENDCASE 14550!block=curdes 14560SYS"Wimp_GetWindowInfo",,block 14570workx%=block!4-block!20 14580worky%=block!16-block!24 14590xcoord=mx-workx% 14600ycoord=my-worky% 14610oldselect=select 14620osx1=sx1:osy1=sy1:osx2=sx2:osy2=sy2:olddes=seldes 14630sx1=-1:sy1=-1:sx2=-1:sxy=-1:select=-1 14640I=0 14650REPEAT 14660 ptr=detptr+(desblk*design)+deslen+(style*I) 14670 hide=workblk?(ptr+294) 14680 IF hide=1 THEN 14690 x1=workblk!(ptr+278):a1=x1 14700 y1=workblk!(ptr+282):b1=y1 14710 x2=workblk!(ptr+286):a2=x2 14720 y2=workblk!(ptr+290):b2=y2 14730 y1=0-y1:x2=x1+x2:y2=y1+y2 14740 IF I=5 THEN y2=b2*4+6*3:b2=y2:y2=y1+y2 14750 IF xcoord>x1 AND ycoord>y1 AND xcoord<x2 AND ycoord<y2 THEN select=I:seldes=curdes:sx1=a1:sy1=b1:sx2=a2:sy2=b2 14760 ENDIF 14770 I+=1 14780UNTIL I=6 OR select>-1 14790ptr=detptr+(desblk*design) 14800pictype=workblk?(ptr+5) 14810IF select=-1 AND pictype>0 THEN 14820 x1=workblk!(ptr+44):a1=x1 14830 y1=workblk!(ptr+48):b1=y1 14840 x2=workblk!(ptr+52):a2=x2 14850 y2=workblk!(ptr+56):b2=y2 14860 y1=0-y1:x2=x1+x2:y2=y1+y2 14870 IF xcoord>x1 AND ycoord>y1 AND xcoord<x2 AND ycoord<y2 THEN select=6:seldes=curdes:sx1=a1:sy1=b1:sx2=a2:sy2=b2 14880ENDIF 14890IF (select<>-1 AND select<>oldselect) OR (seldes<>-1 AND seldes<>olddes) THEN 14900block!0=seldes:block!4=sx1:block!8=0-sy1:block!12=sx1+sx2+4:block!16=0-sy1+sy2+4 14910SYS"Wimp_UpdateWindow",,block TO more 14920WHILE more 14930 SYS"ColourTrans_SetGCOL",&0000FF00,,,&100,0 14940 MOVE workx%+sx1,worky%-sy1 14950 VDU 23,6,&CC| 14960 PLOT 17,sx2,0 14970 PLOT 17,0,sy2 14980 PLOT 17,0-sx2,0 14990 PLOT 17,0,0-sy2 15000 SYS"Wimp_GetRectangle",,block TO more 15010ENDWHILE 15020ENDIF 15030IF (oldselect<>-1 AND select<>oldselect) OR (olddes<>-1 AND olddes<>seldes) THEN 15040block!0=olddes:block!4=osx1:block!8=0-osy1:block!12=osx1+osx2+4:block!16=0-osy1+osy2+4 15050SYS"Wimp_UpdateWindow",,block TO more 15060WHILE more 15070 aptr=detptr+(desblk*design) 15080 ColR=workblk?(aptr+1):ColG=workblk?(aptr+2):ColB=workblk?(aptr+3) 15090 backcol=(ColB<<24)+(ColG<<16)+(ColR<<8) 15100 SYS"ColourTrans_SetGCOL",backcol,,,&100,0 15110 RECTANGLE workx%+osx1,worky%-osy1,osx2,osy2 15120 SYS"Wimp_GetRectangle",,block TO more 15130ENDWHILE 15140 IF oldselect=6 THEN 15150 SYS"Wimp_ForceRedraw",olddes,osx1,0-osy1,osx1+osx2+4,0-osy1+4 15160 SYS"Wimp_ForceRedraw",olddes,osx1,0-osy1,osx1+4,0-osy1+osy2+4 15170 SYS"Wimp_ForceRedraw",olddes,osx1,0-osy1+osy2,osx1+osx2+4,0-osy1+osy2+4 15180 SYS"Wimp_ForceRedraw",olddes,osx1+osx2,0-osy1,osx1+osx2+4,0-osy1+osy2+4 15190 ELSE 15200 SYS"Wimp_ForceRedraw",olddes,osx1,0-osy1,osx1+osx2+4,0-osy1+osy2+4 15210 ENDIF 15220ENDIF 15230ENDPROC 15240 15250DEFPROCdragitem 15260IF select=-1 THEN ENDPROC 15270mx=block!0:my=block!4 15280!block=seldes 15290CASE seldes OF 15300WHEN card% : design=0 15310WHEN comp% : design=1 15320WHEN letter% : design=2 15330ENDCASE 15340SYS"Wimp_GetWindowInfo",,block 15350a=block!4:b=block!8:c=block!12:d=block!16 15360workx%=block!4-block!20 15370worky%=block!16-block!24 15380xcoord=mx-workx% 15390ycoord=my-worky% 15400IF xcoord>sx1 AND ycoord>0-sy1 AND xcoord<sx1+sx2 AND ycoord<0-sy1+sy2 THEN 15410block!0=0:block!4=5 15420block!8=workx%+sx1:block!12=worky%-sy1:block!16=workx%+sx1+sx2+2:block!20=worky%-sy1+sy2+2 15430block!24=a-sx2+10:block!28=b-sy2+10:block!32=c+sx2-10:block!36=d+sy2-10 15440itemdrag=TRUE 15450SYS"Wimp_DragBox",,block 15460ENDIF 15470ENDPROC 15480 15490DEFPROCpullitem 15500IF select<6 THEN ENDPROC 15510mx=block!0:my=block!4 15520!block=seldes 15530CASE seldes OF 15540WHEN card% : design=0 15550WHEN comp% : design=1 15560WHEN letter% : design=2 15570ENDCASE 15580SYS"Wimp_GetWindowInfo",,block 15590a=block!4:b=block!8:c=block!12:d=block!16 15600workx%=block!4-block!20 15610worky%=block!16-block!24 15620xcoord=mx-workx% 15630ycoord=my-worky% 15640IF xcoord>sx1 AND ycoord>0-sy1 AND xcoord<sx1+sx2 AND ycoord<0-sy1+sy2 THEN 15650block!0=0:block!4=6 15660block!8=workx%+sx1:block!12=worky%-sy1:block!16=workx%+sx1+sx2+2:block!20=worky%-sy1+sy2+2 15670block!24=a-sx2:block!28=b:block!32=c:block!36=d+sy2 15680itempull=TRUE 15690SYS"Wimp_DragBox",,block 15700ENDIF 15710ENDPROC 15720 15730DEFPROCdropitem 15740mx=block!0:my=block!4 15750!block=seldes 15760SYS"Wimp_GetWindowInfo",,block 15770workx%=block!4-block!20 15780worky%=block!16-block!24 15790xcoord=mx-workx% 15800ycoord=0-(my-worky%) 15810IF select>=0 AND select<=4 THEN 15820ptr=detptr+(desblk*design)+deslen+(style*select) 15830workblk!(ptr+270)=xcoord-(workblk!(ptr+278)-workblk!(ptr+270)) 15840workblk!(ptr+274)=ycoord-(workblk!(ptr+282)-workblk!(ptr+274)) 15850workblk!(ptr+278)=xcoord 15860workblk!(ptr+282)=ycoord 15870xcoord=workblk!(ptr+278):ycoord=workblk!(ptr+282) 15880ENDIF 15890IF select=5 THEN 15900ptr=detptr+(desblk*design)+deslen+(style*select) 15910workblk!(ptr+270)=xcoord+(workblk!(ptr+278)-workblk!(ptr+270)) 15920workblk!(ptr+274)=ycoord-(workblk!(ptr+282)-workblk!(ptr+274)) 15930workblk!(ptr+278)=xcoord 15940workblk!(ptr+282)=ycoord 15950REM xcoord=!(ptr+270):ycoord=!(ptr+274) 15960ENDIF 15970IF select=6 THEN 15980ptr=detptr+(desblk*design) 15990workblk!(ptr+44)=xcoord 16000workblk!(ptr+48)=ycoord 16010ENDIF 16020SYS"Wimp_ForceRedraw",curdes,sx1-2,0-sy1-8-2,sx1+sx2+4,0-sy1+sy2+4 16030SYS"Wimp_ForceRedraw",curdes,xcoord,0-ycoord-8,xcoord+sx2+2,0-ycoord+sy2+2 16040sx1=xcoord:sy1=ycoord 16050itemdrag=FALSE 16060ENDPROC 16070 16080DEFPROCresizeitem 16090mx1=block!0:my1=block!4:mx2=block!8:my2=block!12 16100!block=curdes 16110SYS"Wimp_GetWindowInfo",,block 16120workx%=block!4-block!20 16130worky%=block!16-block!24 16140xcoord1=mx1-workx% 16150ycoord1=0-(my1-worky%) 16160xcoord2=mx2-workx% 16170ycoord2=0-(my2-worky%) 16180width=xcoord2-xcoord1 16190height=ycoord2-ycoord1 16200IF xcoord2>xcoord1 THEN xcoord=xcoord1:width=xcoord2-xcoord1 16210IF ycoord2<ycoord1 THEN ycoord=ycoord1:height=ycoord2-ycoord1 16220IF xcoord2<xcoord1 THEN xcoord=xcoord2:width=xcoord1-xcoord2 16230IF ycoord2>ycoord1 THEN ycoord=ycoord2:height=ycoord1-ycoord2 16240ptr=detptr+(desblk*design) 16250workblk!(ptr+44)=xcoord 16260workblk!(ptr+48)=ycoord 16270workblk!(ptr+52)=width 16280workblk!(ptr+56)=0-height 16290SYS"Wimp_ForceRedraw",curdes,sx1,0-sy1,sx1+sx2+2,0-sy1+sy2+2 16300sx1=xcoord:sy1=ycoord:sx2=width:sy2=0-height 16310SYS"Wimp_ForceRedraw",curdes,sx1,0-sy1,sx1+sx2+2,0-sy1+sy2+2 16320itempull=FALSE 16330ENDPROC 16340 16350DEFPROCselectcol(colno) 16360hex=winpal(colno-14) 16370RED=(hex>>8)AND&FF 16380GREEN=(hex>>16)AND&FF 16390BLUE=(hex>>24)AND&FF 16400!block=colour% 16410SYS"Wimp_GetWindowInfo",,block 16420workx%=block!4-block!20 16430worky%=block!16-block!24 16440SYS "ColourTrans_SetGCOL",hex,,,&100,0 16450RECTANGLE FILL workx%+234,worky%-247,175,48 16460 SYS "Wimp_SetColour",1,1 16470 RECTANGLE FILL workx%+270,worky%-170,344,147 16480 SYS "ColourTrans_SetGCOL",&0000FF00,,,&100,0 16490 RECTANGLE FILL workx%+271,worky%-55,(RED/255)*344,32 16500 SYS "ColourTrans_SetGCOL",&00FF0000,,,&100,0 16510 RECTANGLE FILL workx%+271,worky%-111,(GREEN/255)*344,32 16520 SYS "ColourTrans_SetGCOL",&FF000000,,,&100,0 16530 RECTANGLE FILL workx%+271,worky%-167,(BLUE/255)*344,32 16540 SYS "ColourTrans_SetGCOL",0,,,&100,0:RECTANGLE workx%+233,worky%-248,176,49 16550 RECTANGLE workx%+270,worky%-58,344,34 16560 RECTANGLE workx%+270,worky%-114,344,34 16570 RECTANGLE workx%+270,worky%-170,344,34 16580 PROCinfo(colour%,3,STR$RED) 16590 PROCinfo(colour%,7,STR$GREEN) 16600 PROCinfo(colour%,11,STR$BLUE) 16610ENDPROC 16620 16630DEFPROCdragcol 16640!block=colour% 16650SYS"Wimp_GetWindowInfo",,block 16660workx%=block!4-block!20 16670worky%=block!16-block!24 16680stopdrag=FALSE 16690REPEAT 16700MOUSE r,s,t 16710IF t<>1 AND t<>4 stopdrag=TRUE 16720IF r>workx%+268 AND r<workx%+268+348 AND s>worky%-58 AND s<worky%-(58-35) THEN 16730 MOUSE RECTANGLE workx%+270,worky%-57,344,30 16740 nred=INT(((r-(workx%+270))/344)*255) 16750 IF nred=-1 nred=0 16760 PROCupdateic(colour%,3,STR$nred,4,32) 16770 RED=nred 16780 PROCredrawbar(RED,&0000FF00,workx%,worky%,272,55) 16790ENDIF 16800IF r>workx%+268 AND r<workx%+268+348 AND s>worky%-114 AND s<worky%-(114-35) THEN 16810 MOUSE RECTANGLE workx%+270,worky%-112,344,30 16820 ngreen=INT(((r-(workx%+270))/344)*255) 16830 IF ngreen=-1 ngreen=0 16840 PROCupdateic(colour%,7,STR$ngreen,4,32) 16850 GREEN=ngreen 16860 PROCredrawbar(GREEN,&00FF0000,workx%,worky%,272,111) 16870ENDIF 16880IF r>workx%+268 AND r<workx%+268+348 AND s>worky%-170 AND s<worky%-(170-35) THEN 16890 MOUSE RECTANGLE workx%+270,worky%-168,344,30 16900 nblue=INT(((r-(workx%+270))/344)*255) 16910 IF nblue=-1 nblue=0 16920 PROCupdateic(colour%,11,STR$nblue,3,32) 16930 BLUE=nblue 16940 PROCredrawbar(BLUE,&FF000000,workx%,worky%,272,167) 16950ENDIF 16960UNTIL stopdrag 16970PROCMode 16980 MOUSE RECTANGLE 0,0,xmax-1,ymax-1 16990ENDPROC 17000 17010DEFPROCredrawbar(COL,RGB,workx%,worky%,xco,yco) 17020block!0=colour%:block!4=xco:block!8=0-yco-2:block!12=xco+344:block!16=0-yco+34 17030SYS"Wimp_UpdateWindow",,block TO more 17040WHILE more 17050SYS "Wimp_SetColour",1,1 17060RECTANGLE FILL workx%+xco+(COL/255)*344,worky%-yco,342-(COL/255)*344,30 17070SYS "ColourTrans_SetGCOL",RGB,,,&100,0 17080RECTANGLE FILL workx%+(xco-2),worky%-yco,(COL/255)*344,30 17090SYS "ColourTrans_SetGCOL",0,,,&100,0 17100RECTANGLE workx%+(xco-2),worky%-(yco+3),344,34 17110hex=(BLUE<<24)+(GREEN<<16)+(RED<<8) 17120SYS"Wimp_GetRectangle",,block TO more 17130ENDWHILE 17140block!0=colour%:block!4=232:block!8=-247:block!12=232+176:block!16=-247+50 17150SYS"Wimp_UpdateWindow",,block TO more 17160WHILE more 17170SYS "ColourTrans_SetGCOL",hex,,,&100,0 17180RECTANGLE FILL workx%+234,worky%-247,175,48 17190SYS "ColourTrans_SetGCOL",0,,,&100,0:RECTANGLE workx%+233,worky%-248,176,49 17200SYS"Wimp_GetRectangle",,block TO more 17210ENDWHILE 17220ENDPROC 17230 17240DEFPROCaddcol 17250IF backgrnd=0 THEN 17260InterHex=hex 17270PROCclose(colour%) 17280SYS"Wimp_ForceRedraw",back%,342,-110,642,-58 17290ENDIF 17300IF backgrnd=1 THEN 17310InterHex=hex 17320PROCclose(colour%) 17330SYS"Wimp_ForceRedraw",type%,406,-204,548,-152 17340ENDIF 17350ENDPROC 17360 17370DEFFNclaim(amount%) 17380SYS"OS_Heap",1,heap% TO ,,largest,free 17390IF amount%<largest THEN 17400SYS"OS_Heap",2,heap%,,amount%+8 TO ,,picpool% 17410ENDIF 17420IF amount%>largest THEN 17430SYS"Wimp_SlotSize",-1,-1 TO current 17440SYS"Wimp_SlotSize",current+(amount%-largest)+1024,-1 17450SYS"Wimp_SlotSize",-1,-1 TO newcur 17460increase=newcur-current 17470SYS"OS_Heap",5,heap%,,increase 17480hsizeb+=increase 17490SYS"OS_Heap",2,heap%,,amount%+8 TO ,,picpool% 17500ENDIF 17510=picpool% 17520 17530DEFPROCdeleteall 17540IF sprites THEN PROCdelete(1) 17550IF drawing THEN PROCdelete(2) 17560IF select=6 THEN select=-1 17570FOR i=0 TO 2 17580ptr=detptr+(desblk*i) 17590workblk?(ptr+5)=0 17600$(workblk+(ptr+6))="" 17610PROCredraw(card%):PROCredraw(comp%):PROCredraw(letter%) 17620ENDPROC 17630 17640DEFPROCdelete(type) 17650IF type=1 THEN 17660SYS"OS_Heap",3,heap%,spr% 17670sprites=FALSE 17680IF drawing THEN 17690SYS"OS_Heap",6,heap%,drawptr% TO ,,,blksize 17700SYS"OS_Heap",3,heap%,drawptr% 17710SYS"OS_Heap",2,heap%,,blksize-8 TO ,,scrap 17720 FOR i=0 TO blksize-8 STEP 4 17730 scrap!i=drawptr%!i 17740 NEXT 17750drawptr%=scrap 17760ENDIF 17770ENDIF 17780IF type=2 THEN 17790SYS"OS_Heap",3,heap%,drawptr% 17800drawing=FALSE 17810IF sprites THEN 17820SYS"OS_Heap",6,heap%,spr% TO ,,,blksize 17830SYS"OS_Heap",3,heap%,spr% 17840SYS"OS_Heap",2,heap%,,blksize-8 TO ,,scrap 17850 FOR i=0 TO blksize-8 STEP 4 17860 scrap!i=spr%!i 17870 NEXT 17880spr%=scrap 17890ENDIF 17900ENDIF 17910SYS"OS_Heap",1,heap% TO ,,largest,tfree 17920SYS"OS_ReadMemMapInfo" TO page 17930SYS"Wimp_SlotSize",-1,-1 TO current 17940IF largest>page THEN 17950amount=INT(largest/page)*page 17960newcur=current-amount 17970IF newcur<=origappsize THEN newcur=origappsize 17980decrease=current-newcur 17990IF decrease<>0 THEN SYS"OS_Heap",5,heap%,,0-decrease 18000SYS"Wimp_SlotSize",newcur,-1 18010hsizeb-=decrease 18020ENDIF 18030ENDPROC 18040 18050DEFFNvga(mod) 18060SYS"OS_ReadModeVariable",mod,11 TO,,c 18070SYS"OS_ReadModeVariable",mod,12 TO,,b 18080c+=1:b+=1 18090CASE b/c OF 18100WHEN 0.8:g=TRUE 18110WHEN .75:g=TRUE 18120OTHERWISE: g=FALSE 18130ENDCASE 18140=g 18150 18160DEFPROCareyousure 18170IF NOT savef THEN 18180PROCopencen(quit%) 18190VDU 7 18200PROCinfo(quit%,1,"Your file has been modified.") 18210PROCMode 18220MOUSE RECTANGLE 0,0,xmax,ymax 18230ENDIF 18240IF savef PROCend 18250ENDPROC 18260 18270DEFPROCquery(qu$) 18280PROCopencen(query%) 18290VDU 7 18300!block=query% 18310SYS"Wimp_GetWindowInfo",,block 18320workx%=block!12-block!4 18330worky%=block!16-block!8 18340MOUSE RECTANGLE block!4,block!8,workx%,worky% 18350PROCinfo(query%,1,qu$) 18360ENDPROC 18370 18380DEFPROCendq 18390PROCclose(query%) 18400PROCMode 18410MOUSE RECTANGLE 0,0,xmax,ymax 18420ENDPROC 18430 18440DEFPROCtitles(ext$) 18450PROCtitle(details%,ext$) 18460PROCtitle(card%,ext$) 18470PROCtitle(comp%,ext$) 18480PROCtitle(letter%,ext$) 18490ENDPROC 18500 18510DEFPROCtitle(handle,new$) 18520!icond=handle 18530SYS"Wimp_GetWindowInfo",,icond 18540title$=$(icond!76) 18550IF new$<>"" THEN 18560IF RIGHT$(title$,LEN(title$)-LEN(title$)+1)<>new$ THEN 18570new$=title$+" "+new$ 18580$(!(icond+76))=new$:SYS"Wimp_ForceRedraw",-1,icond!4,(icond!16),icond!12,(icond!16)+36 18590ENDIF 18600ELSE 18610IF RIGHT$(title$,LEN(title$)-LEN(title$)+1)="*" THEN 18620new$=LEFT$(title$,LEN(title$)-2) 18630$(!(icond+76))=new$:SYS"Wimp_ForceRedraw",-1,icond!4,(icond!16),icond!12,(icond!16)+36 18640ENDIF 18650ENDIF 18660ENDPROC 18670 18680DEFPROCprint 18690noofpages=VAL($FNinfo(print%,4)) 18700IF $FNinfo(print%,0)="Not Present" THEN PROCquery("Can not print, no printer driver present."):noprint=TRUE:ENDPROC 18710des$="" 18720IF FNcheckflag(print%,7,21) THEN des$+=" bus. card," 18730IF FNcheckflag(print%,8,21) THEN des$+=" comp. slip," 18740IF FNcheckflag(print%,9,21) THEN des$+=" letter head," 18750IF FNcheckflag(print%,6,21) THEN copies$="single.":fullsheet=0:ELSE copies$="full sheet.":fullsheet=1 18760SYS "ColourTrans_SetGCOL",&DDDDDD00,,,&100,0 18770RECTANGLE FILL 288,466,738,194 18780SYS "ColourTrans_SetGCOL",0,,,&100,0 18790RECTANGLE 286,464,740,196 18800SYS"Wimp_CreateMenu",,-1 18810SYS"PDriver_PageSize" TO,,,l%,b%,r%,t% 18820VDU 5 18830MOVE 410,640 18840PRINT "Printing in progress..." 18850MOVE 380,600 18860PRINT "Prining ";noofpages;" copies, ";copies$ 18870MOVE 380,560 18880PRINT "of ";des$ 18890MOVE 400,520 18900PRINT "Press Escape to cancel" 18910VDU 4 18920printing=TRUE 18930fh%=-1 18940LOCAL ERROR 18950ON ERROR LOCAL:RESTORE ERROR:PROCprinterr:ENDPROC 18960SYS"Hourglass_On" 18970fh%=OPENOUT("printer:") 18980SYS"PDriver_SelectJob",fh% TO job 18990SYS"PDriver_PageSize" TO,,,l%,b%,r%,t% 19000IF FNcheckflag(print%,7,21) PROCprintdes(0) 19010IF FNcheckflag(print%,8,21) PROCprintdes(1) 19020IF FNcheckflag(print%,9,21) PROCprintdes(2) 19030SYS"PDriver_EndJob",fh% 19040CLOSE#fh% 19050SYS"PDriver_SelectJob",job 19060SYS"Hourglass_Smash" 19070SYS"Wimp_ForceRedraw",-1,286,464,740+288,196+466 19080ENDPROC 19090 19100DEFPROCprintdes(design) 19110IF fullsheet=0 THEN 19120 IF design=0 up=623-6:box1=-10:boxx=584+2:boxy=388+2 19130 IF design=1 up=561-6:box1=-10:boxx=(565+6)*2.5:boxy=622+2 19140 IF design=2 up=670-6:box1=-10:boxx=(565+6)*2.5:boxy=340+2 19150ENDIF 19160IF fullsheet=1 THEN 19170 IF design=0 up=85-6:box1=-200:boxx=(518+6)*2.5:boxy=(777+6)*2.5 19180 IF design=1 up=62-6:box1=-460:boxx=(565+6)*2.5:boxy=(802+6)*2.5 19190 IF design=2 up=670-6:box1=-10:boxx=(565+6)*2.5:boxy=340+2 19200ENDIF 19210matrix!0=66000:matrix!4=0:matrix!8=0:matrix!12=66000:REM 66000,0,0,66000 19220origin!0=l%:origin!4=up*1000 19230box!0=-10:box!4=box1:box!8=boxx:box!12=boxy 19240SYS"PDriver_GiveRectangle",0,box,matrix,origin,&FFFFFF00 19250SYS"PDriver_DrawPage",noofpages,box2,0,0 TO more 19260WHILE more<>0 19270PROCdraw(boxy,design) 19280SYS"PDriver_GetRectangle",0,box2 TO more 19290ENDWHILE 19300ENDPROC 19310 19320DEFPROCdraw(height,design) 19330xmin=0:xmax=1400:ymin=-800:ymax=0 19340IF fullsheet=1 THEN 19350 IF design=0 THEN 19360 FOR cardco=1 TO 16 STEP 2 19370 PROCdrawdesign(cardpos(0,cardco)*2.5,cardpos(0,cardco+1)*2.5,0,-1) 19380 NEXT cardco 19390 ENDIF 19400 IF design=1 THEN 19410 FOR cardco=1 TO 6 STEP 2 19420 PROCdrawdesign(cardpos(1,cardco)*2.5-50,cardpos(1,cardco+1)*2.5,1,-1) 19430 NEXT cardco 19440 ENDIF 19450 IF design=2 THEN PROCdrawdesign(10,height-4,design,-1) 19460ELSE 19470PROCdrawdesign(10,height-4,design,-1) 19480ENDIF 19490ENDPROC 19500 19510DEFPROCprinterr 19520IF ERR=17 THEN 19530SYS"PDriver_AbortJob",fh%: 19540REM SYS"PDriver_SelectJob",job: 19550CLOSE#fh% 19560PROCmess("Escape: Print Canceled") 19570SYS"OS_ReadModeVariable",MODE,4 TO ,,x 19580SYS"OS_ReadModeVariable",MODE,5 TO ,,y 19590MOUSE RECTANGLE 0,0,(((block!128)+1)*2^x)-1,((block!132)+1)*2^y 19600SYS"Hourglass_Smash" 19610SYS"Wimp_ForceRedraw",-1,286,464,740+288,196+466 19620ENDPROC 19630ENDIF 19640IF fh%<>-1 THEN SYS"PDriver_AbortJob",fh%:SYS"PDriver_SelectJob",job:CLOSE#fh% 19650SYS"Hourglass_Smash" 19660SYS"OS_ReadModeVariable",MODE,4 TO ,,x 19670SYS"OS_ReadModeVariable",MODE,5 TO ,,y 19680MOUSE RECTANGLE 0,0,(((block!128)+1)*2^x)-1,((block!132)+1)*2^y 19690SYS"Wimp_ForceRedraw",-1,286,464,740+288,196+466 19700PROCerror(REPORT$+": at line "+STR$ERL+" whilst printing"):ENDPROC 19710ENDPROC 19720 19730DEFPROCmorecopies 19740IF VAL($FNinfo(print%,4))=99 THEN ENDPROC 19750PROCinfo(print%,4,STR$(VAL$FNinfo(print%,4)+1)) 19760ENDPROC 19770 19780DEFPROClesscopies 19790IF VAL($FNinfo(print%,4))=1 THEN ENDPROC 19800PROCinfo(print%,4,STR$(VAL$FNinfo(print%,4)-1)) 19810ENDPROC 19820 19830DEFPROCupanddown(icn) 19840!block=colour%:SYS"Wimp_GetWindowInfo",,block 19850workx%=block!4-block!20 19860worky%=block!16-block!24 19870valuer=VAL$FNinfo(colour%,3) 19880valueg=VAL$FNinfo(colour%,7) 19890valueb=VAL$FNinfo(colour%,11) 19900CASE icn OF 19910WHEN 1: 19920IF valuer>0 PROCupdateic(colour%,3,STR$(valuer-1),4,32):hex=(valueb<<24)+(valueg<<16)+(valuer<<8):SYS"Wimp_ForceRedraw",-1,workx%+270,worky%-58,workx%+614,worky%-24:SYS"Wimp_ForceRedraw",-1,workx%+234,worky%-247,workx%+410,worky%-199:ELSE ENDPROC 19930WHEN 2: 19940IF valuer<255 PROCupdateic(colour%,3,STR$(valuer+1),4,32):hex=(valueb<<24)+(valueg<<16)+(valuer<<8):SYS"Wimp_ForceRedraw",-1,workx%+270,worky%-58,workx%+614,worky%-24:SYS"Wimp_ForceRedraw",-1,workx%+234,worky%-247,workx%+410,worky%-199:ELSE ENDPROC 19950WHEN 5: 19960IF valueg>0 PROCupdateic(colour%,7,STR$(valueg-1),4,32):hex=(valueb<<24)+(valueg<<16)+(valuer<<8):SYS"Wimp_ForceRedraw",-1,workx%+270,worky%-114,workx%+614,worky%-80:SYS"Wimp_ForceRedraw",-1,workx%+234,worky%-247,workx%+410,worky%-199:ELSE ENDPROC 19970WHEN 6: 19980IF valueg<255 PROCupdateic(colour%,7,STR$(valueg+1),4,32):hex=(valueb<<24)+(valueg<<16)+(valuer<<8):SYS"Wimp_ForceRedraw",-1,workx%+270,worky%-114,workx%+614,worky%-80:SYS"Wimp_ForceRedraw",-1,workx%+234,worky%-247,workx%+410,worky%-199:ELSE ENDPROC 19990WHEN 9: 20000IF valueb>0 PROCupdateic(colour%,11,STR$(valueb-1),4,32):hex=(valueb<<24)+(valueg<<16)+(valuer<<8):SYS"Wimp_ForceRedraw",-1,workx%+270,worky%-170,workx%+614,worky%-136:SYS"Wimp_ForceRedraw",-1,workx%+234,worky%-247,workx%+410,worky%-199:ELSE ENDPROC 20010WHEN 10: 20020IF valueb<255 PROCupdateic(colour%,11,STR$(valueb+1),4,32):hex=(valueb<<24)+(valueg<<16)+(valuer<<8):SYS"Wimp_ForceRedraw",-1,workx%+270,worky%-170,workx%+614,worky%-136:SYS"Wimp_ForceRedraw",-1,workx%+234,worky%-247,workx%+410,worky%-199:ELSE ENDPROC 20030ENDCASE 20040ENDPROC 20050 20060DEFPROCsetper(a) 20070backgrnd=a 20080IF backgrnd=0 THEN 20090coldes=coldes 20100ptr=detptr+(desblk*design) 20110RED=workblk?(ptr+1) 20120GREEN=workblk?(ptr+2) 20130BLUE=workblk?(ptr+3) 20140hex=(BLUE<<24)+(GREEN<<16)+(RED<<8) 20150InterHex=hex 20160PROCinfo(colour%,3,STR$RED) 20170PROCinfo(colour%,7,STR$GREEN) 20180PROCinfo(colour%,11,STR$BLUE) 20190ENDIF 20200IF backgrnd=1 THEN 20210coldes=changedes 20220hex=InterHex 20230RED=(hex>>8)AND&FF:GREEN=(hex>>16)AND&FF:BLUE=(hex>>24)AND&FF 20240PROCinfo(colour%,3,STR$RED) 20250PROCinfo(colour%,7,STR$GREEN) 20260PROCinfo(colour%,11,STR$BLUE) 20270ENDIF 20280PROCopenwin(colour%) 20290!block=colour%:SYS"Wimp_GetWindowInfo",,block 20300workx%=block!4-block!20 20310worky%=block!16-block!24 20320SYS"Wimp_ForceRedraw",-1,workx%+270,worky%-170,workx%+614,worky%-24 20330SYS"Wimp_ForceRedraw",-1,workx%+234,worky%-247,workx%+410,worky%-199 20340ENDPROC 20350 20360DEFPROCincrement(amount,min,max,handle,icon) 20370curval=VAL($FNinfo(handle,icon)) 20380newval=curval+amount 20390IF newval>=min AND newval<=max THEN 20400PROCupdateic(handle,icon,STR$newval,14,32) 20410ENDIF 20420ENDPROC 20430 20440DEFPROCupdateic(handle,icon,data$,x,y) 20450$FNinfo(handle,icon)=data$ 20460!block=handle:block!4=icon 20470SYS"Wimp_GetIconState",,block 20480x1=block!8:y1=block!12:x2=block!16:y2=block!20 20490rx1=x1+x:ry1=(y1+y2)/2-(y/2):rx2=x2-x:ry2=ry1+y 20500!block=handle:block!4=rx1:block!8=ry1:block!12=rx2:block!16=ry2 20510SYS"Wimp_UpdateWindow",,block TO more 20520WHILE more 20530SYS"Wimp_GetRectangle",,block TO more 20540ENDWHILE 20550ENDPROC
$� � �mess(�$+" : at line "+Þ):� � ***>$.!Stationer.!RunImage L� ***Main Program for !Stationer - Business communications media creator (� Version 1.11U (21 Jan 96) 2� � J. Robbins <� FZ� block 10*1024, mblock 1024, menu% 6*1024, curbuf% 9*1024, icond 5*1024, text% &1000 PP� defpal% 255, fontblk% 256, scale% 20,PixTrans% 256,temp% 100,palette% 1024 Z,� winpal(15),cardpos(2,16),drawfont$(18) d/� matrix 100, origin 100, box 100, box2 100 n� workblk 8*1024 xmaxlev%=32 �#� start%(maxlev%),box%(maxlev%) �5� l%(maxlev%),b%(maxlev%),r%(maxlev%),t%(maxlev%) �/detptr=2304:deslen=60:desblk=1848:style=298 �&� c=1 � 16 : � a :cardpos(0,c)=a:� �%� c=1 � 6 : � a :cardpos(1,c)=a:� �$cardpos(2,1)=25:cardpos(2,2)=670 �� I=0 � 15 � � hexa � winpal(I)=hexa � defpal%!(I*4)=hexa �� �?� 25,625,290,625,25,445,290,445,25,265,290,265,25,85,290,85 �� 25,561,25,312,25,62 P� &FFFFFF10,&DDDDDD10,&BBBBBB10,&99999910,&77777710,&55555510,&33333310,&010 I� &99440010,&EEEE10,&CC0010,&DD10,&BBEEEE10,&885510,&BBFF10,&FFBB0010 Eend%=-1:textc=�:cardb=�:hex=0:RED=(hex>>8)�&FF:BLUE=RED:GREEN=RED "endbuf%=curbuf%+&6000 ,j=0:FMopen=0:in=�:close=0 6'savef=�:noprint=�:printing=�:full=� @1prequitwait=�:quiting=�:quitsave=�:shutdown=� Jfmcreated%=�:fcount%=0 Tend%=�:drag%=0:drive%=0 ^*curspr$="":drawing=�:sprites=�:drawk=0 h font%=-1:noofcards=8:dfont=� ritemdrag=�:itempull=� |Gsx1=-1:sy1=-1:sx2=-1:sy2=-1:select=-1:curdes=-1:seldes=-1:olddes=-1 �0osx1=-2:osy1=-2:osx2=-2:osxy=-2:oldselect=-2 �backgrnd=-1 �task=&4B534154 �Aș "Wimp_Initialise",200,task,"!Stationer" � version%,mytask% � �template �ș "OS_GetEnv" � env$ �� �env$,"-quit") � �I%=�env$,"""") �I%=�env$,"""",I%+1) �� � I%+=1 �� �env$,I%,1)<>" " �env$=�env$,I%) print$=�env$,7) � noic=0 &"ș"Wimp_SlotSize",-1,-1 � orig 0 max=�-�:max=�(max/1024)*1024 :max-=&4000 D%ș"Wimp_SlotSize",-1,-1 � current N�=�-max:hsizeb=max:heap%=� X� hsizeb<1024 � � bș"OS_Heap",0,heap%,,hsizeb l'origheap=hsizeb:origappsize=current vș"OS_Byte",161,28 � ,,cmos �+� (cmos � (1<<1))>0 � daspr=� � daspr=� �3� print$=" -print" � env$=�env$,�env$-7):noic=1 �>� print$=" -print" � �present:�load(env$):�openwin(print%) �.� print$<>" -print" � env$<>"" �load(env$) �Y� print$<>" -print" � env$="" �load("<Stat$Dir>.DefaultDt"):�info(save%,2,"StatData") �� noic=0 � initic=�icon �ș"Hourglass_On" ��fmenucr �ș"Hourglass_Off" � �titlewin �#� � �error(�$+" : at line "+Þ) �� �%ș"Wimp_Poll",0,block � eventcode ș"OS_Mouse" � ,,button � button>0 �close(title%) ��mess("This program is SHAREWARE and is currently UNREGISTERED. You are authorised to use it for 2 weeks, after which you must register or delete it. Please refer to Help file for further information") *� 4%ș"Wimp_Poll",0,block � eventcode >Ȏ eventcode � H6� 0:� savef � prequitwait ș"Wimp_ProcessKey",&1FC R� 1:�redraw(block!0) \#� 2:ș "Wimp_OpenWindow",,block f$� 3:ș "Wimp_CloseWindow",,block p� 6:�click(block) z� 7:�dragin �� 8:�process �� 9:�select �� 17,18:�messagein �� �� � ��end �� � � ��end �#ș"Wimp_CloseDown",mytask%,task �� �� � ��titlewin w�info(title%,1,"Business stationary designer. Comprising Compliment slip, Letter head and Business card creators.") 2$�info(title%,3)="Version 1.11U (21 Jan 1996)" $�opencen(title%) .titleopen=� 8� B L ݤicon V !icond=-1 ` icond!4=0 j%icond!8=0:icond!12=68:icond!16=68 t+icond!20=%11010+((2^12)*3):icond?23=112 ~ $(icond+24)="!Stationer"+�13 �&ș "Wimp_CreateIcon",,icond � icon � =icon � �ݤinf(handle,icon) ��gee(handle,icon) � =icond!28 � ݤbit(a$) �ȕ �a$,":")>0 �a$=�a$,�a$,":")+1) �� �ȕ �a$,".")>0 �a$=�a$,�a$,".")+1) � =a$ ݤwool(wool%) ( � cot$ 2 ȕ ?wool%>=32 <cot$+=�(?wool%) Fwool%+=1 P� Z =cot$ d n��template x1ș"Wimp_OpenTemplate",,"<Stat$Dir>.Templates" �indir=curbuf% �info%=�template("ProgInfo") �save%=�template("SaveData") �#savedraw%=�template("SaveDraw") �!savepic%=�template("SavePic") �card%=�template("Card") �#letter%=�template("LetterHead") �comp%=�template("CompSlip") �!picture%=�template("Picture") �!details%=�template("details") �type%=�template("Type") �back%=�template("Back") � colour%=�template("colours") print%=�template("print") query%=�template("query") quit%=�template("quitbox") "title%=�template("title") ,ș "Wimp_CloseTemplate" 6stex=�info(save%,2) @stexd=�info(savedraw%,2) Jstextpic=�info(savepic%,2) T� ^ hݤtemplate(a$) rFș"Wimp_LoadTemplate",,block,indir,endbuf%,-1,a$,0 � ,,indir,,,,c% |2� c%=0 � �mess("Template "+a$+" not found."):� �block!64=1 �)ș"Wimp_CreateWindow",,block � handle �=handle � �ݤinfo(handle,icon) ��gee(handle,icon) � =icond!28 � �ݤtoOS(in) �'ș"Font_ConverttoOS",,in*1000 �,out �=out � ���info(handle,icon,text$) ;!block=handle:block!4=icon:ș"Wimp_GetIconState",,block )$(block!28)=text$:block!36=�(text$)+1 block!8=0:block!12=0 & ș"Wimp_SetIconState",,block 0� : D��gee(handle,icon) N!icond=handle:icond!4=icon X ș"Wimp_GetIconState",,icond b� l v8��seticstate(handle%,ic%,clear,eor):� as in PRM (CE) �9!block=handle%:block!4=ic%:block!8=eor:block!12=clear � ș"Wimp_SetIconState",,block �� � � ��present � a$="" �� � � � � � a$="Not Present":� �:� � ș"PDriver_Info" � a,,,,name �ȕ ?name �a$=a$+�(?name) �name+=1 �� $�info(print%,0)=a$ � � � *��cmenus 4�present > nogo=� HFMopen=0 Rmenuptr=menu% \ȗ x,y,b f/� block!16=27 � sprites � piccy=� � piccy=� p?� sprites sprmen%=�menu("Sprite List",(largest*14)+40,men$) z;picmenu%=�menu("Picture",174,"Delete,{b|savepic%}Save") �[� (sprites � drawing) iconmenu$="{b|picmenu%}Picture" � iconmenu$="{-|picmenu%}Picture" �d� (sprites � drawing) � block!12=-2 picmenu%=�menu("Picture",190,"Del Pic,{b|savepic%}Save Pic") �k� (sprites � drawing) � block!12<>-2 picmenu%=�menu("Picture",190,"Insert,Remove,{b|savepic%}Save Pic") �?view%=�menu("View",200,"Bus. Cards,Comp Slips,LetterHeads") �Asavemenu%=�menu("Save",100,"{b|savedraw%}Draw,{b|save%}Data") ��iconmenu%=�menu("!Stationer",174,"{b|info%}Info,{b|savemenu%}Save,{b|print%}Print,Details,{b|view%}View,"+iconmenu$+",Quit") �wdetmenu%=�menu("!Stationer",174,"{b|info%}Info,{b|savemenu%}Save,{b|print%}Print,{b|view%}View,"+iconmenu$+",Quit") ʉviewmenu%=�menu("!Stationer",174,"{b|info%}Info,{b|savemenu%}Save,{b|print%}Print,Details,{b|view%}View,"+iconmenu$+",Show All,Quit") �menuwin=block!12 �Ȏ menuwin � �<� -2:� block!8=2 � openmenu%=iconmenu%:a=x-75:b=(7+2)*48 �)� details%:openmenu%=detmenu%:a=x:b=y �D� picture%:� block!16=4 � openmenu%=sprmen%:a=x:b=y:FMopen=2:� � C� card%,comp%,letter%:� block!8=2 � openmenu%=viewmenu%:a=x:b=y :� � $W� sprites �seticstate(savepic%,4,1<<22,0<<22) � �seticstate(savepic%,4,1<<22,1<<22) .W� drawing �seticstate(savepic%,5,1<<22,0<<22) � �seticstate(savepic%,5,1<<22,1<<22) 8K�seticstate(savepic%,4,1<<21,0<<21):�seticstate(savepic%,5,1<<21,0<<21) BW� sprites �seticstate(savepic%,4,1<<21,1<<21) � �seticstate(savepic%,5,1<<21,1<<21) L�openmenu(a,b) V� ` j��openmenu(x,y) t&ș"Wimp_CreateMenu",,openmenu%,x,y ~� �ݤmenu(tit$,wid,menu$) �menu$+="," �oldmenu=menuptr �$menuptr=tit$ �menuptr?12=7 �menuptr?13=2 �menuptr?14=7 �menuptr?15=0 �menuptr!16=wid �menuptr!20=48 �menuptr!24=0 �menuptr+=28 � �thing(menu$) menu$=�menu$,�menu$,",")+1) menuptr+=24 (� menu$="" 2)menuptr!-24=(menuptr!-24) � %10000000 <=oldmenu F��thing(m$) Pm$=�m$,�m$,",")-1) Zi$="":j$="" d� �m$,"{")>0 � ni$=�m$,�m$,"}")-1) xm$=�m$,�m$,"}")+1) �j$=�i$,�i$,"|")-1) �i$=�i$,�i$,"|")+1) �� �ijack=&07000021 �mjack=0 �submenu=-1 � � �j$,"b")>0 � submenu=�(i$) �"� �j$,"_")>0 � mjack=mjack � 2 �"� �j$,"�")>0 � mjack=mjack � 1 �0� �j$,"u")>0 � mjack=mjack � 2:submenu=�(i$) �6� �j$,"-")>0 � ijack=ijack � &400000:submenu=�(i$) �(� �j$,"s")>0 � ijack=ijack � &400000 �!menuptr=mjack menuptr!4=submenu menuptr!8=ijack $(menuptr+12)=m$ "� , 6��click(block) @E� quitsave � block!12<>save% � quiting=�:quitsave=�:�close(save%) JL� prequitwait � block!12<>save% � prequitwait=�:shutdown=�:�close(save%) TM� block!12=card% � block!12=comp% � block!12=letter% savef=�:�titles("*") ^I� block!12<>type% � (block!12<>colour% � backgrnd<>0) � �close(type%) hI� block!12<>back% � (block!12<>colour% � backgrnd<>1) � �close(back%) r)� block!12<>colour% � �close(colour%) |+� block!12<>picture% � �close(picture%) �W� block!8=1024 � (block!12=card% � block!12=comp% � block!12=letter%) � �selectitem �R� block!8=4 � (block!12=card% � block!12=comp% � block!12=letter%) � �getstyle �T� block!8=&40 � (block!12=card% � block!12=comp% � block!12=letter%) � �dragitem �T� block!8=&10 � (block!12=card% � block!12=comp% � block!12=letter%) � �pullitem �&� block!12=-2 � block!8=4 �opendet �-� block!12=-2 � block!8=1 �openwin(card%) �Z� block!12=type% � block!16=1 � ȗ x,y,b:FMopen=1:ș"Wimp_CreateMenu",,fmenu%,x-75,y:� �� block!8=2 � �cmenus:� �<� block!12=save% � block!16=1 winsave%=block!12:�defsave �@� block!12=savedraw% � block!16=1 winsave%=block!12:�defsave �?� block!12=savepic% � block!16=1 winsave%=block!12:�defsave �M� block!12=save% � block!16=3 winsave%=block!12:�save($�info(winsave%,2)) �Q� block!12=savedraw% � block!16=3 winsave%=block!12:�save($�info(winsave%,2)) P� block!12=savepic% � block!16=3 winsave%=block!12:�save($�info(winsave%,2)) S� block!12=details% � block!16=16 �setdet:savef=�:�titles("*"):�close(details%) 6� block!12=details% � block!16=15 �close(details%) &/� block!12=details% � block!16=17 �resetdet 02� block!12=back% � block!16=14 � �close(back%) :>� block!12=back% � block!16=15 � �applystyle:�close(back%) D/� block!12=back% � block!16=13 � �setper(0) N� block!12=type% � X Ȏ block!16 � b& � 4 : �increment(1,7,999,type%,3) l' � 5 : �increment(-1,7,999,type%,3) v' � 7 : �increment(5,30,995,type%,8) �( � 9 : �increment(-5,30,995,type%,8) � � 16 : �close(type%) �% � 17 : �applystyle:�close(type%) � � 15 : �setper(1) � � �� �� block!12=picture% � � Ȏ block!16 � � � 7 : �close(picture%) �' � 8 : �applystyle:�close(picture%) � � 1,2,3 : �redopic � � 4 : �cmenus � � 5,6 : �swappic � � I� block!12=colour% � block!16>=14 � block!16<=29 �selectcol(block!16) .� block!12=colour% � block!16=13 � �addcol *6� block!12=colour% � block!16=12 � �close(colour%) 4/� block!12=colour% � block!16=-1 � �dragcol >H� block!12=colour% � block!16>0 � block!16<11 � �upanddown(block!16) H0� block!12=print% � block!16=3 � �morecopies R0� block!12=print% � block!16=5 � �lesscopies \� shutdown � fB � block!12=quit% � block!16=0 � ș"Wimp_ProcessKey",&1FC:�end p= � block!12=quit% � block!16=2 � �close(quit%):shutdown=� zP � block!12=quit% � block!16=3 � �close(quit%):�openwin(save%):prequitwait=� �� �� quiting � �) � block!12=quit% � block!16=0 � �end �< � block!12=quit% � block!16=2 � �close(quit%):quiting=� �M � block!12=quit% � block!16=3 � �close(quit%):�openwin(save%):quitsave=� �� �9� block!12=query% � block!16=0 � �close(query%):�endq �$� block!12=print% � block!16=1 � � �print � � noic=1 � �end �� �� � !ݤcheckflag(handle,icon,flag) bit=� !icond=handle:icond!4=icon $ ș"Wimp_GetIconState",,icond ."� (icond!24�(1<<flag))>0 bit=� 8=bit B L��setshear(on) V;!icond=details%:icond!4=29:ș"Wimp_GetIconState",,icond `� on=1 � jC=(1<<21):E=(1<<21) t� ~C=(0<<21):E=(1<<21) �� �icond!8=C:icond!12=E � ș"Wimp_SetIconState",,icond �: �;!icond=details%:icond!4=30:ș"Wimp_GetIconState",,icond �� on=0 � �C=(1<<21):E=(1<<21) �� �C=(0<<21):E=(1<<21) �� �icond!8=C:icond!12=E � ș"Wimp_SetIconState",,icond � ��process .� !block=details% � block!24=13 � �caret:� (J� !block=save% � block!24=13 � winsave%=!block:�save($�info(!block,2)) 2N� !block=savedraw% � block!24=13 � winsave%=!block:�save($�info(!block,2)) <M� !block=savepic% � block!24=13 � winsave%=!block:�save($�info(!block,2)) F ș"Wimp_ProcessKey",block!24 P� Z d��caret n$ș"Wimp_GetCaretPosition",,block x� block!0=details% � �- � block!4>=0 � block!4<=7 � np=block!4+1 � � block!4=8 � np=0 �I ș "Wimp_SetCaretPosition",details%,np,0,0,-1,�($�info(details%,np)) �� �� � ���select �� FMopen=1 � �=ș"Font_DecodeMenu",0,fmenu%,block,fontblk%,256 �,,,,size ܅$fontblk%=�$fontblk%,size-1):$fontblk%=�$fontblk%,�($fontblk%)-2):$fontblk%=�$fontblk%,�$fontblk%-(�$fontblk%-�$fontblk%,"\"))-1) �family$=$fontblk% ��info(type%,0,family$) �FMopen=0 � � � FMopen=2 � ",ș"Wimp_DecodeMenu",,sprmen%,block,icond ,curspr$=$icond 6�redopic @FMopen=0 J� T� ^.ș"Wimp_DecodeMenu",,openmenu%,block,icond h+� $icond="Quit" � �areyousure:quiting=� r!� $icond="Details" � �opendet |D� $icond="View.LetterHeads" � �openwin(letter%):�redraw(letter%) �?� $icond="View.Comp Slips" � �openwin(comp%):�redraw(comp%) �?� $icond="View.Bus. Cards" � �openwin(card%):�redraw(card%) �0� $icond="Picture.Insert" � �insert(menuwin) �0� $icond="Picture.Remove" � �remove(menuwin) �+� $icond="Picture.Del Pic" � �deleteall �+� $icond="Show All" � �showall(menuwin) �(� $icond="Save.Draw" �openwin(save%) �)� $icond="Save.Data" �openwin(saved%) �"ș"Wimp_GetPointerInfo",,block �� block!8=1 � �block!12=menuwin ��cmenus �"ș"Wimp_CreateMenu",,openmenu% � ș"Wimp_CreateMenu",,-1 � &� 0 :��mess(mess$) D !icond=0:$(icond+4)=mess$+�0 N-ș"Wimp_ReportError",icond,1,"!Stationer" X� b l��error(err$) v � �=523 � �%�mess("Font "+font$+" not found") �/�close(card%):�close(comp%):�close(letter%) �� �M!icond=0:$(icond+4)=err$+"."+" Press OK to continue or Cancel to quit"+�0 �4ș"Wimp_ReportError",icond,3,"!Stationer" � ,but �� but=2 � �end �� �� � � ��out �ș"DragASprite_Stop" �.� winsave%=savedraw% � stext=stexd:ft=&AFF �.� winsave%=savedraw% � stext=stexd:ft=&00C c� winsave%=savepic% � �checkflag(savepic%,4,21) stext=stextpic:ft=&FF9 � stext=stextpic:ft=&AFF � drive%=1 � $ș "Wimp_GetPointerInfo",,mblock <win=mblock!12:icon=mblock!16:xout=!mblock:yout=mblock!4: *Pmblock!20=mblock!12:mblock!24=mblock!16:mblock!28=!mblock:mblock!32=mblock!4 47mblock!12=0:mblock!16=1:mblock!36=1024:mblock!40=ft >$stext=$�info(winsave%,2) H$stext=�getleaf($stext) R)� I=0 � 255:� I?stext<32 � I?stext=13 \� f !mblock=44+4*(1+(�$stext)�4) p+$(mblock+44)=�bit($stext)+�0:!mblock=60 zBș "Wimp_SendMessage",17,mblock,mblock!20,mblock!24:� DataSave �drag%=� �� �� � � ��defsave � �Mode �)� winsave%=savedraw% � ft$="file_AFF" �%� winsave%=save% � ft$="file_00C" �S� winsave%=savepic% � �checkflag(savepic%,4,21) ft$="file_FF9" � ft$="file_AFF" �!block=winsave% �#ș "Wimp_GetWindowState",,block �ysize%=block!16-block!8 �#x%=block!4:y%=block!8:block!4=1 ș"Wimp_GetIconState",,block #block!8+=x%:block!12+=y%+ysize% $block!16+=x%:block!20+=y%+ysize% $5block!24=0:block!28=0:block!32=xmax:block!36=ymax .'!block=0:block!4=5:drag%=�:drive%=1 8U� daspr � ș"DragASprite_Start",%10000101,1,ft$,block+8 � ș"Wimp_DragBox",,block B� L V ��Mode `M!block=130:block!4=131:block!8=-1:ș"OS_ReadVduVariables",block,block+128 j)ș"OS_ReadModeVariable",�,4 � ,,Xeig% t)ș"OS_ReadModeVariable",�,5 � ,,Yeig% ~=xmax=((block!128)+1)*2^Xeig%:ymax=((block!132)+1)*2^Yeig% �� � �ݤgetleaf(leaf$) �ȕ �leaf$,".") �leaf$=�leaf$,�leaf$,".")+1) ��:=leaf$ � ���save(save$) � �save$,".")<1 � �save$,":")<1 � save$<>"<Wimp$Scrap>" � �query("To save, drag the save icon to a directory viewer"):nosave=�:� �� winsave%=save% � �mess("Sorry, this version is unable to save. Register for full version. See Help file for further details") �� winsave%=savedraw% � �mess("Sorry, this version is unable to save. Register for full version. See Help file for further details") �"� winsave%=savepic% � �savepic � ��savepic � � (^� � � � �=71622:�query("Disc Full"):full=�:� �:�:� � �:�error(�$+" : at line "+Þ):�#ile:� 2"SSpr=�checkflag(savepic%,4,21) <� SSpr � F2ș"OS_File",0,save$,0,0,spr%+4,spr%+(sprlen+4) Pș"OS_File",&12,save$,&ff9 Z� d� � SSpr � n3ș"OS_File",0,save$,0,0,drawptr%,drawptr%+drawk xș"OS_File",&12,save$,&AFF �� �3� save$<>"<Wimp$Scrap>" �info(savepic%,2,save$) �� � ���dragin �� itempull � �resizeitem �� itemdrag � �dropitem �� drag% � �out �� � ���messagein �mblock=block �ref=mblock!8:task=mblock!4 Ȏ mblock!16 � � 8: � � savef � "5� (mblock!20 � (1<<0))>0 � quiting=� � shutdown=� ,� quiting � �0,0)"Quit" 6!� shutdown � �1,1)"Shutdown" @Amblock!12=mblock!8:ș"Wimp_SendMessage",19,mblock:�areyousure J� T� 0:�end ^� 2: h� drive%=1 � r�save(�wool(mblock+44)) |mblock!12=ref �mblock!16=3 �mblock!36=-1 �!mblock=256 �sendm=&400E7 �&ș sendm,18,mblock,task:� DataLoad �� �� 3: ̄� mblock!40<>&0CD � mblock!40<>&FF9 � mblock!40<>&AFF � �mess("Only Stationer Data files or Sprites can be dropped into here"):� �in=� �@�close(colour%):�close(type%):�close(back%):�close(picture%) �!� mblock!40=&FF9 � �insprites �� mblock!40=&AFF � �indraw �-� mblock!40=&0CD � �load(�wool(block+44)) � 5: � block!40=&0CD � block!12=block!8:block!16=4 &sendm=&400E7 0+ș sendm,18,block,block!4:� DataLoadAck :�load(�wool(block+44)) D� N� X� b l��load(load$) v!ș"OS_Find",&40,load$ � file% � t$="" �t$=�readfile �b� t$<>"Stationer Data File" � �mess("This is not a Stationer data file"):ș"OS_Find",0,file%:� ��deleteall �9� �readfile="Sprites" � sprites=�:sprlen=�(�readfile) �8� �readfile="Drawing" � drawing=�:drawk=�(�readfile) �&ș"OS_GBPB",4,file%,workblk,8*1024 �S� sprites � spr%=(�claim(sprlen+256)):ș"OS_GBPB",4,file%,spr%+4,sprlen:�sprmen �O� drawing � drawptr%=(�claim(drawk+256)):ș"OS_GBPB",4,file%,drawptr%,drawk �ș"OS_Find",0,file% �$�info(save%,2)=load$ � � noic=0 savef=�:�titles("") �2�redraw(card%):�redraw(comp%):�redraw(letter%) ,� load$<>"<Stat$Dir>.DefaultDt" �opendet � ݤreadfile * t$="" 4 � > ș"OS_BGet",,file% � byte% H8 � byte%=254 ș"OS_Find",0,file%:�openwin(details%): R t$=t$+�(byte%) \ � byte%=13 � byte%=10 f =�t$,�(t$)-1) p��insprites z load$=�wool(block+44) �� sprites � �delete(1) �%ș "OS_File",5,load$ � ,,,,sprlen �spr%=�claim(sprlen+256) �!ș "OS_File",&FF,load$,spr%+4 ��sprmen � sprites=� � � i=0 � 2 �ptr=detptr+(desblk*i) �4� workblk?(ptr+5)=1 � $(workblk+(ptr+6))=curspr$ �� ��redraw(card%) ��redraw(letter%) ��redraw(comp%) � ��sprmen $men$="":largest=0 .,ș "OS_SpriteOp",&108,spr% � ,,,sprites% 8� i%=0 � sprites%-1 B9 ș "OS_SpriteOp",256+13,spr%,temp%,&100,i%+1 � ,,,j% L temp%?j%=13 V[ � �$temp%,",")>0 � ș"OS_SpriteOp",256+26,spr%,$temp%,"No"+�(i%+1):$temp%="No"+�(i%+1) `) � �(men$)<243 � men$=men$+$temp%+"," j � i%=0 � defspr$=$temp% t* � �($temp%)>largest largest=�($temp%) ~� �men$=�men$,�(men$)-1) �curspr$=�men$,�men$,",")-1) �� � ���indraw �load$=�wool(block+44) �� drawing � �delete(2) �#ș"OS_File",5,load$ � ,,,,drawk �drawptr%=�claim(drawk+256) �"ș"OS_File",&FF,load$,drawptr% � drawing=� �� ��openwin(handle%) !block=handle% "ș"Wimp_GetWindowState",,block (open=block!32 � (1<<16) 2Q� block!28<>-1 � open=0 � (handle%=card% � handle%=comp% � handle%=letter%) � <block!28=-1 Fș"Wimp_OpenWindow",,block P� Z� d n��opencen(handle%) x �Mode �!block=handle% �!ș"Wimp_GetWindowInfo",,block �workx%=block!12-block!4 �worky%=block!16-block!8 �block!4=(xmax-workx%)/2 �block!12=workx%+block!4 �block!8=(ymax-worky%)/2 �block!16=worky%+block!8 �block!28=-1 �ș"Wimp_OpenWindow",,block �� � � ��fmenucr $ș"Font_ListFonts",,temp%,0,&100 deffont$=$temp% fflag%=0 "fflag%+=1<<19 ,fflag%+=0<<20 61ș"Font_ListFonts",,0,fflag%,,0 � r,s,t,A,u,B @� fmenu% A,fbuf% B J1ș"Font_ListFonts",,fmenu%,fflag%,A,fbuf%,B,1 T� ^ hݤMax(a%,b%) r� a%>b% � =a% |=b% � �ݤInfo(p%) �� a$ � a$="" �ȕ (?p%<>0 � ?p%<>13) � a$+=�(?p%) � p%+=1 �� �=a$ � � ��opendet �!block=details% �"ș"Wimp_GetWindowState",,block open=block!32 � (1<<16) � open=0 � #$�info(details%,0)=$(workblk+0) &%$�info(details%,1)=$(workblk+256) 0%$�info(details%,6)=$(workblk+512) :%$�info(details%,7)=$(workblk+768) D&$�info(details%,8)=$(workblk+1024) N&$�info(details%,2)=$(workblk+1280) X&$�info(details%,3)=$(workblk+1536) b&$�info(details%,4)=$(workblk+1792) l&$�info(details%,5)=$(workblk+2048) v� ��openwin(details%) �� � ���setdet �#$(workblk+0)=$�info(details%,0) �%$(workblk+256)=$�info(details%,1) �%$(workblk+512)=$�info(details%,6) �%$(workblk+768)=$�info(details%,7) �&$(workblk+1024)=$�info(details%,8) �&$(workblk+1280)=$�info(details%,2) �&$(workblk+1536)=$�info(details%,3) �&$(workblk+1792)=$�info(details%,4) �&$(workblk+2048)=$�info(details%,5) � design=0 � 2 &aptr=detptr+(desblk*design)+deslen � i=0 � 4 ptr=aptr+(style*i) *font$=$(workblk+ptr) 4pt=workblk!(ptr+256) >width=workblk!(ptr+260) H,�bbox($(workblk+(i*256)),font$,pt,width) R,workblk!(ptr+278)=workblk!(ptr+270)+bbx1 \,workblk!(ptr+282)=workblk!(ptr+274)-bby1 fworkblk!(ptr+286)=bbx pworkblk!(ptr+290)=bby z� i �ptr=aptr+(style*5) �font$=$(workblk+ptr) �pt=workblk!(ptr+256) �width=workblk!(ptr+260) �,�bbox($(workblk+(5*256)),font$,pt,width) �bbxm=bbx �,�bbox($(workblk+(6*256)),font$,pt,width) �� bbx>bbxm � bbxm=bbx �,�bbox($(workblk+(7*256)),font$,pt,width) �� bbx>bbxm � bbxm=bbx �,�bbox($(workblk+(8*256)),font$,pt,width) �� bbx>bbxm � bbxm=bbx �"�bbox("WFMgjq",font$,pt,width) ,workblk!(ptr+278)=workblk!(ptr+270)+bbx1 ,workblk!(ptr+282)=workblk!(ptr+274)-bby1 workblk!(ptr+286)=bbxm $workblk!(ptr+290)=bby .� design 8 select=-1 B�redraw(card%) L�redraw(comp%) V�redraw(letter%) `� j t��resetdet ~ � i=0 � 8 ��info(details%,i,"") �� �� � ���redraw(handle) � block!0=handle � �more% �)ș "Wimp_RedrawWindow",,block � more% �ȕ more% � Ȏ handle � � � card% : �redrawcard � � comp% : �redrawcomp � letter% : �redrawlett � colour% : �redrawcol � picture% : �redrawpic � type% : �redrawtype ( � back% : �redrawback 2 � <* ș "Wimp_GetRectangle",,block � more% F� P%� close=1 � �close(card%):close=0 Z� d n��redrawcard xș"OS_Byte",113,2 �ș"OS_Byte",112,1 �workx%=block!4-block!20 �worky%=block!16-block!24 �xmin=block!28-workx% �xmax=block!36-workx% �ymin=block!32-worky% �ymax=block!40-worky% �&�drawdesign(workx%,worky%,0,card%) �� � ���redrawcomp �workx%=block!4-block!20 �worky%=block!16-block!24 xmin=block!28-workx% xmax=block!36-workx% ymin=block!32-worky% "ymax=block!40-worky% ,&�drawdesign(workx%,worky%,1,comp%) 6� @ J��redrawlett Tworkx%=block!4-block!20 ^worky%=block!16-block!24 hxmin=block!28-workx% rxmax=block!36-workx% |ymin=block!32-worky% �ymax=block!40-worky% �(�drawdesign(workx%,worky%,2,letter%) �� � ���redrawtype �workx%=block!4-block!20 �worky%=block!16-block!24 �.ș "ColourTrans_SetGCOL",InterHex,,,&100,0 �&ȓ Ȑ workx%+406,worky%-204,140,50 �'ș "ColourTrans_SetGCOL",0,,,&100,0 �#ȓ workx%+406,worky%-204,140,50 �� � ��redrawback workx%=block!4-block!20 worky%=block!16-block!24 &.ș "ColourTrans_SetGCOL",InterHex,,,&100,0 0&ȓ Ȑ workx%+342,worky%-110,260,48 :'ș "ColourTrans_SetGCOL",0,,,&100,0 D#ȓ workx%+342,worky%-110,260,48 N� X b��redrawcol lRED=(hex>>8)�&FF vGREEN=(hex>>16)�&FF �BLUE=(hex>>24)�&FF �workx%=block!4-block!20 �worky%=block!16-block!24 �)ș "ColourTrans_SetGCOL",hex,,,&100,0 �&ȓ Ȑ workx%+234,worky%-247,175,48 �ș "Wimp_SetColour",1,1 �'ȓ Ȑ workx%+270,worky%-170,344,147 �/ș "ColourTrans_SetGCOL",&0000FF00,,,&100,0 �/ȓ Ȑ workx%+271,worky%-55,(RED/255)*344,32 �/ș "ColourTrans_SetGCOL",&00FF0000,,,&100,0 �2ȓ Ȑ workx%+271,worky%-111,(GREEN/255)*344,32 �/ș "ColourTrans_SetGCOL",&FF000000,,,&100,0 �1ȓ Ȑ workx%+271,worky%-167,(BLUE/255)*344,32 !'ș "ColourTrans_SetGCOL",0,,,&100,0 !#ȓ workx%+233,worky%-248,176,49 !"ȓ workx%+270,worky%-58,344,34 ! #ȓ workx%+270,worky%-114,344,34 !*#ȓ workx%+270,worky%-170,344,34 !4� !> !H��redrawpic !R workx%=block!4-block!20 !\ worky%=block!16-block!24 !fredraw=� !pxmin=block!28-workx% !zxmax=block!36-workx% !�ymin=block!32-worky% !�ymax=block!40-worky% !�9redraw=�overlaps(16,-218,216,-18,xmin,ymin,xmax,ymax) !�� redraw � !�ptr=detptr+(desblk*design) !�Red=workblk?(ptr+1) !�Green=workblk?(ptr+2) !�Blue=workblk?(ptr+3) !�,InterHex=(Blue<<24)+(Green<<16)+(Red<<8) !�.ș "ColourTrans_SetGCOL",InterHex,,,&100,0 !�&ȓ Ȑ workx%+16,worky%-218,200,200 !�5� �checkflag(picture%,5,21) � picpic=1 � picpic=2 !�� picpic=1 � "4ș"Wimp_ReadPixTrans",&100,1,"sizeing",,,,scale% " hpix=scale%!4:vpix=scale%!12 "boxw=100/hpix:boxh=100/vpix "$�scale(100,100,curspr$) ".4ș &2E,256+40,spr%,curspr$ � A,B,C,w%,h%,D,mode% "8>realx=w%*(scale%!0/scale%!8):realy=h%*(scale%!4/scale%!12) "B/xmul=(boxw/realx)*100:ymul=(boxh/realy)*100 "L"Lock=�checkflag(picture%,1,21) "V%Centred=�checkflag(picture%,2,21) "`#Front=�checkflag(picture%,3,21) "j"� Lock � xmul<ymul � ymul=xmul "t"� Lock � xmul>ymul � xmul=ymul "~�getpal(curspr$) "�xoff=0:yoff=0 "�+newx=realx*xmul/100:newy=realy*ymul/100 "�;� Centred � xoff=(boxw-newx)*hpix:yoff=(boxh-newy)*vpix "�xdiv=100:ydiv=100 "�ascale%!0=scale%!0*xmul:scale%!4=scale%!4*ymul:scale%!8=scale%!8*xdiv:scale%!12=scale%!12*ydiv "�Qș &2E,256+52,spr%,curspr$,workx%+16+xoff,worky%-218+ yoff,8,scale%,PixTrans% "�� "�� picpic=2 � "�"Lock=�checkflag(picture%,1,21) "�%Centred=�checkflag(picture%,2,21) "�#Front=�checkflag(picture%,3,21) "�Ricond!0=65536:icond!4=0:icond!8=0:icond!12=65536:icond!16=0*256:icond!20=0*256 # 3ș"DrawFile_BBox",0,drawptr%,drawk,icond,matrix # Awidth=(matrix!8-matrix!0)/256:height=(matrix!12-matrix!4)/256 #"xmul=200/width:ymul=200/height #"� Lock � xmul<ymul � ymul=xmul #("� Lock � xmul>ymul � xmul=ymul #2$neww=width*xmul:newh=height*ymul #<cxoff=0:cyoff=0 #F5� Centred � cxoff=(200-neww)/2:cyoff=(200-newh)/2 #P*icond!0=xmul*65536:icond!12=ymul*65536 #Z3ș"DrawFile_BBox",0,drawptr%,drawk,icond,matrix #dAwidth=(matrix!8-matrix!0)/256:height=(matrix!12-matrix!4)/256 #n/xoff=(0-matrix!0/256):yoff=(0-matrix!4/256) #x�icond!0=xmul*65536:icond!4=0:icond!8=0:icond!12=ymul*65536:icond!16=(workx%+16+xoff+cxoff)*256:icond!20=(worky%-218+yoff+cyoff)*256 #�2ș"DrawFile_Render",%00,drawptr%,drawk,icond,0 #�� 2 #�� #�� #�� #� #�)��drawdesign(pxco,pyco,design,handle) #�ptr=detptr+(desblk*design) #�border=workblk?(ptr+0) #�BRed=workblk?(ptr+1) #�BGreen=workblk?(ptr+2) #�BBlue=workblk?(ptr+3) #�BTran=workblk?(ptr+4) $pictype=workblk?(ptr+5) $Front=workblk?(ptr+24) $bx1=workblk!(ptr+28) $"by1=workblk!(ptr+32) $,bx2=workblk!(ptr+36) $6by2=workblk!(ptr+40) $@+BCol=(BBlue<<24)+(BGreen<<16)+(BRed<<8) $JȎ border � $T� 1: $^*ș "ColourTrans_SetGCOL",BCol,,,&100,0 $h#ȓ Ȑ pxco+bx1,pyco-by1,bx2,by2 $r/ș "ColourTrans_SetGCOL",&00000000,,,&100,0 $| ȓ pxco+bx1,pyco-by1,bx2,by2 $�� 2: $�*ș "ColourTrans_SetGCOL",BCol,,,&100,0 $�#ȓ Ȑ pxco+bx1,pyco-by1,bx2,by2 $�/ș "ColourTrans_SetGCOL",&00000000,,,&100,0 $� ȓ pxco+bx1,pyco-by1,bx2,by2 $�(ȓ pxco+bx1+2,pyco-by1+2,bx2-4,by2-4 $�� 3: $�*ș "ColourTrans_SetGCOL",BCol,,,&100,0 $�#ȓ Ȑ pxco+bx1,pyco-by1,bx2,by2 $�/ș "ColourTrans_SetGCOL",&00000000,,,&100,0 $� ȓ pxco+bx1,pyco-by1,bx2,by2 $�(ȓ pxco+bx1+2,pyco-by1+2,bx2-4,by2-4 $�(ȓ pxco+bx1+4,pyco-by1+4,bx2-8,by2-8 %� 4: %*ș "ColourTrans_SetGCOL",BCol,,,&100,0 %#ȓ Ȑ pxco+bx1,pyco-by1,bx2,by2 %&/ș "ColourTrans_SetGCOL",&00000000,,,&100,0 %0 ȓ pxco+bx1,pyco-by1,bx2,by2 %:(ȓ pxco+bx1+4,pyco-by1+4,bx2-8,by2-8 %D*ȓ pxco+bx1+6,pyco-by1+6,bx2-12,by2-12 %N� 5: %X*ș "ColourTrans_SetGCOL",BCol,,,&100,0 %b#ȓ Ȑ pxco+bx1,pyco-by1,bx2,by2 %l/ș "ColourTrans_SetGCOL",&00000000,,,&100,0 %v ȓ pxco+bx1,pyco-by1,bx2,by2 %�(ȓ pxco+bx1+2,pyco-by1+2,bx2-4,by2-4 %�*ȓ pxco+bx1+6,pyco-by1+6,bx2-12,by2-12 %�� %�8� Front=0 � pictype=1 � �dessprite(pxco,pyco,design) %�6� Front=0 � pictype=2 � �desdraw(pxco,pyco,design) %� � item=0 � 5 %�& �drawitem(design,item,pxco,pyco) %� � %�8� Front=1 � pictype=1 � �dessprite(pxco,pyco,design) %�6� Front=1 � pictype=2 � �desdraw(pxco,pyco,design) %�"� select<>-1 � handle=curdes � %�L x1=sx1:y1=0-sy1:x2=sx1+sx2:y2=0-sy1+sy2:a1=xmin:b1=ymin:a2=xmax:b2=ymax %�. redraw=�overlaps(x1,y1,x2,y2,a1,b1,a2,b2) & � redraw � &/ ș"ColourTrans_SetGCOL",&0000FF00,,,&100,0 & � workx%+sx1,worky%-sy1 & � 23,6,&CC| &* � 17,sx2,0 &4 � 17,0,sy2 &> � 17,0-sx2,0 &H � 17,0,0-sy2 &R � &\� &f� &p &z%��drawitem(design,item,pxco,pyco) &�2ptr=detptr+(desblk*design)+deslen+(style*item) &�hide=workblk?(ptr+294) &�� hide=0 � � &�redraw=� &�FxPos=workblk!(ptr+270) &�FyPos=workblk!(ptr+274) &�Fx1=workblk!(ptr+278) &�Fy1=workblk!(ptr+282) &�Fx2=workblk!(ptr+286) &�Fy2=workblk!(ptr+290) &�u=workblk?(ptr+265) &�� u=1 � line=4+4 � line=0 &�Px1=Fx1:y1=0-Fy1-line:x2=Fx1+Fx2:y2=0-Fy1+Fy2:a1=xmin:b1=ymin:a2=xmax:b2=ymax '� item=5 � y2=Fy2*4+6*3 '-redraw=�overlaps(x1,y1,x2,y2,a1,b1,a2,b2) '� redraw � '$text$=$(workblk+item*256) '.� item=5 � '8"text2$=$(workblk+(item+1)*256) 'B"text3$=$(workblk+(item+2)*256) 'L"text4$=$(workblk+(item+3)*256) 'V� '`font$=$(workblk+ptr) 'j/ș"XFont_FindFont",,font$,16,16,0,0 � fhnd% 't� fhnd%!0=523 � '~:ș"XFont_FindFont",,"Trinity.Medium",16,16,0,0 � fhnd% '�;� fhnd%!0=523 � font$=deffont$ � font$="Trinity.Medium" '�� '�pt=workblk!(ptr+256) '�w=workblk!(ptr+260) '�j=workblk?(ptr+264) '�FRed=workblk?(ptr+266) '�FGreen=workblk?(ptr+267) '�FBlue=workblk?(ptr+268) '�FTran=workblk?(ptr+269) '�+FCol=(FBlue<<24)+(FGreen<<16)+(FRed<<8) '�x=�width(text$,font$,pt,w) '�6ș "ColourTrans_SetFontColours",font%,BCol,FCol,14 ( � item=5 � ( jus=%10010 ( nFx=FxPos (2� j=3 � jus=%10001:� pxco+FxPos+Fx2,pyco-FyPos ((#width=�width(text4$,font$,pt,w) (2� j=2 nFx=FxPos+(Fx2-width) (<!� j=1 nFx=FxPos+(Fx2-width)/2 (F2ș"Font_Paint",,text4$,jus,pxco+nFx,pyco-FyPos (P#width=�width(text3$,font$,pt,w) (Z� j=2 nFx=FxPos+(Fx2-width) (d!� j=1 nFx=FxPos+(Fx2-width)/2 (n>ș"Font_Paint",,text3$,jus,pxco+nFx,pyco-FyPos+((Fy2+6)*1) (x#width=�width(text2$,font$,pt,w) (�� j=2 nFx=FxPos+(Fx2-width) (�!� j=1 nFx=FxPos+(Fx2-width)/2 (�>ș"Font_Paint",,text2$,jus,pxco+nFx,pyco-FyPos+((Fy2+6)*2) (�"width=�width(text$,font$,pt,w) (�� j=2 nFx=FxPos+(Fx2-width) (�!� j=1 nFx=FxPos+(Fx2-width)/2 (�=ș"Font_Paint",,text$,jus,pxco+nFx,pyco-FyPos+((Fy2+6)*3) (�� (�6ș"Font_Paint",,text$,%10010,pxco+FxPos,pyco-FyPos (�� (�� u=1 � (�*ș "ColourTrans_SetGCOL",FCol,,,&100,0 (�"ȓ Ȑ pxco+Fx1,pyco-Fy1-4,x,-4 )� )� )� )" ),'ݤoverlaps(x1,y1,x2,y2,a1,b1,a2,b2) )6interx=�:intery=� )@"� (x1>=a1 � x1<=a2) � interx=� )J"� (x2>=a1 � x2<=a2) � interx=� )T"� (a1>=x1 � a1<=x2) � interx=� )^"� (a2>=x1 � a2<=x2) � interx=� )h"� (y1>=b1 � y1<=b2) � intery=� )r"� (y2>=b1 � y2<=b2) � intery=� )|"� (b1>=y1 � b1<=y2) � intery=� )�"� (b2>=y1 � b2<=y2) � intery=� )�� interx � intery � =� )�=� )� )�!��dessprite(cxco,cyco,design) )�redraw=� )�ptr=detptr+(desblk*design) )�Spx1=workblk!(ptr+44) )�Spy1=workblk!(ptr+48) )�Spx2=workblk!(ptr+52) )�Spy2=workblk!(ptr+56) )�Qx1=Spx1:y1=0-Spy1:x2=Spx1+Spx2:y2=0-Spy1+Spy2:a1=xmin:b1=ymin:a2=xmax:b2=ymax )�-redraw=�overlaps(x1,y1,x2,y2,a1,b1,a2,b2) *� sprites � redraw � *curspr$=$(workblk+(ptr+6)) *Lock=workblk?(ptr+22) *&Centred=workblk?(ptr+23) *0Front=workblk?(ptr+24) *:4ș"Wimp_ReadPixTrans",&100,1,"sizeing",,,,scale% *D hpix=scale%!4:vpix=scale%!12 *N!Spx2=Spx2/hpix:Spy2=Spy2/vpix *X1ș &2E,256+40,spr%,curspr$ � ,,,w%,h%,D,mode% *b�scale(Spx2,Spy2,curspr$) *l�getpal(curspr$) *v<newx=w%*(scale%!0/scale%!8):newy=h%*(scale%!4/scale%!12) *�5xmul=((Spx2/2)/newx)*100:ymul=((Spy2/2)/newy)*100 *�xoff=0:yoff=0 *�Axoff1=(w%*xmul*scale%!0*2)/100:yoff1=(h%*ymul*scale%!4*2)/100 *�$� Lock=1 � xmul<ymul � ymul=xmul *�$� Lock=1 � xmul>ymul � xmul=ymul *�� Centred=1 � *�Axoff2=(w%*xmul*scale%!0*2)/100:yoff2=(h%*ymul*scale%!4*2)/100 *�7xoff=(xoff1-xoff2)/2*hpix:yoff=(yoff1-yoff2)/2*vpix *�� *�xdiv=100:ydiv=100 *�ascale%!0=scale%!0*xmul:scale%!4=scale%!4*ymul:scale%!8=scale%!8*xdiv:scale%!12=scale%!12*ydiv *�Oș &2E,256+52,spr%,curspr$,cxco+Spx1+xoff,cyco-Spy1+yoff,8,scale%,PixTrans% *�� +� + +��desdraw(cxco,cyco,design) + redraw=� +*ptr=detptr+(desblk*design) +4Spx1=workblk!(ptr+44) +>Spy1=workblk!(ptr+48) +HSpx2=workblk!(ptr+52) +RSpy2=workblk!(ptr+56) +\Qx1=Spx1:y1=0-Spy1:x2=Spx1+Spx2:y2=0-Spy1+Spy2:a1=xmin:b1=ymin:a2=xmax:b2=ymax +f-redraw=�overlaps(x1,y1,x2,y2,a1,b1,a2,b2) +p� drawing � redraw � +zLock=workblk?(ptr+22) +�Centred=workblk?(ptr+23) +�Front=workblk?(ptr+24) +�Ricond!0=65536:icond!4=0:icond!8=0:icond!12=65536:icond!16=0*256:icond!20=0*256 +�3ș"DrawFile_BBox",0,drawptr%,drawk,icond,matrix +�Awidth=(matrix!8-matrix!0)/256:height=(matrix!12-matrix!4)/256 +�$xmul=Spx2/width:ymul=Spy2/height +�xoff=0:yoff=0 +�&xoff1=xmul*width:yoff1=ymul*height +�"� Lock � xmul<ymul � ymul=xmul +�"� Lock � xmul>ymul � xmul=ymul +�� Centred=1 � +�&xoff2=xmul*width:yoff2=ymul*height +�-xoff=(xoff1-xoff2)/2:yoff=(yoff1-yoff2)/2 ,� ,*icond!0=xmul*65536:icond!12=ymul*65536 ,3ș"DrawFile_BBox",0,drawptr%,drawk,icond,matrix ,$Awidth=(matrix!8-matrix!0)/256:height=(matrix!12-matrix!4)/256 ,.3bbxoff=(0-matrix!0/256):bbyoff=(0-matrix!4/256) ,8�icond!0=xmul*65536:icond!4=0:icond!8=0:icond!12=ymul*65536:icond!16=(cxco+Spx1+bbxoff+xoff)*256:icond!20=(cyco-Spy1+bbyoff+yoff)*256 ,B2ș"DrawFile_Render",%00,drawptr%,drawk,icond,0 ,L� ,V� ,` ,j��scale(spw,sph,workspr$) ,t?ș"Wimp_ReadPixTrans",&100,spr%,workspr$,,,,scale%,palette% ,~� ,� ,���getpal(workspr$) ,�3ș "OS_SpriteOp",256+24,spr%,workspr$ � ,,sptr% ,�7ș "OS_SpriteOp",256+40,spr%,workspr$ � ,,,,,,mode% ,�9ș "OS_SpriteOp",256+37,spr%,workspr$,-1 � ,,,palsize ,�/ș "OS_ReadModeVariable",mode%,9 � ,,BitsPP ,�BitsPP=2^BitsPP ,�� sptr%!32<>44 � ,� � I%=0 � sptr%!32-52 � 8 ,�" palette%!(I%/2)=sptr%!(I%+44) ,� � ,�� - � sptr%!32<>44 � - � sptr%!32<>44+2048 � -@ ș "ColourTrans_SelectTable",mode%,palette%,-1,-1,PixTrans% - � -( � Q%=0�255 -2U ș "ColourTrans_ReturnColourNumberForMode",palette%!(Q%<<2),-1,-1 � PixTrans%?Q% -< � -F � -P� -Z � BitsPP<8 � -d? ș "ColourTrans_SelectTable",mode%,defpal%,-1,-1,PixTrans% -n � -x: ș "ColourTrans_SelectTable",mode%,-1,-1,-1,PixTrans% -� � -�� -�� -� -���bbox(text$,font$,xs,ys) -�@ș "Font_FindFont",,font$,(xs*(ys/100))*16,xs*16,0,0 � font% -�ș "Font_SetFont",font% -�6ș "Font_StringBBox",,text$ � ,bbx1,bby1,bbx2,bby2 -�Fș "Font_StringWidth",,text$,&FFFFFF,&FFFFFFFF,-1,�(text$) � ,,x,y -�1ș "Font_ConverttoOS",,bbx1,bby1 � ,bbx1,bby1 -�1ș "Font_ConverttoOS",,bbx2,bby2 � ,bbx2,bby2 -�bbx=bbx2-bbx1:bby=bby2-bby1 -�� . .ݤwidth(text$,font$,xs,ys) .@ș "Font_FindFont",,font$,(xs*(ys/100))*16,xs*16,0,0 � font% ."ș "Font_SetFont",font% .,Fș "Font_StringWidth",,text$,&FFFFFF,&FFFFFF,31,�(text$) � ,,x%,y% .6'ș "Font_ConverttoOS",,x%,y% � ,x,y .@=x .J .T��close(!block) .^ș"Wimp_CloseWindow",,block .h� .r .|ݤcheckit(hnd%,ic%) .�!icond=hnd%:icond!4=ic% .� ș"Wimp_GetIconState",,icond .�flags%=icond!24 .�=flags%�&F0000 .� .���getstyle .�changedes=block!12 .�mx=block!0:my=block!4 .�Ȏ changedes � .�� card% : design=0 .�� comp% : design=1 .�� letter% : design=2 .�� /change=select /� change>-1 � /� change>=0 � change<=5 � /&4ptr=detptr+(desblk*design)+deslen+(style*change) /0font$=$(workblk+ptr) /:pt=workblk!(ptr+256) /Dwidth=workblk!(ptr+260) /Nj=workblk?(ptr+264) /Xu=workblk?(ptr+265) /bColR=workblk?(ptr+266) /lColG=workblk?(ptr+267) /vColB=workblk?(ptr+268) /�ColT=workblk?(ptr+269) /�hide=workblk?(ptr+294) /�,InterHex=(ColB<<24)+(ColG<<16)+(ColR<<8) /�$�info(type%,0)=font$ /�$�info(type%,3)=�pt /�$�info(type%,8)=�width /�%�seticstate(type%,18,1<<21,1<<21) /�0� hide=0 � �seticstate(type%,18,1<<21,0<<21) /�M� change>=0 � change<=4 � a=1<<22:b=1<<22:c=1<<21:d=0<<21:e=1<<22:f=0<<22 /�@� change=5 � a=1<<22:b=0<<22:c=1<<21:d=0<<21:e=1<<22:f=1<<22 /��seticstate(type%,10,a,b) /��seticstate(type%,11,a,b) /��seticstate(type%,12,a,b) 0�seticstate(type%,13,a,b) 0�seticstate(type%,10,c,d) 0�seticstate(type%,11,c,d) 0 �seticstate(type%,12,c,d) 0*�seticstate(type%,13,c,d) 04%�seticstate(type%,14,1<<21,0<<21) 0>�seticstate(type%,14,e,f) 0H�openwin(type%) 0R4� change=5 � �seticstate(type%,10+j,1<<21,1<<21) 0\-� u=1 � �seticstate(type%,14,1<<21,1<<21) 0f� 0p� change=6 � 0zptr=detptr+(desblk*design) 0�pic=workblk?(ptr+5) 0�'�seticstate(picture%,1,1<<21,0<<21) 0�'�seticstate(picture%,2,1<<21,0<<21) 0�'�seticstate(picture%,3,1<<21,0<<21) 0�Lock=workblk?(ptr+22) 0�Centre=workblk?(ptr+23) 0�Front=workblk?(ptr+24) 0�(� pic=1 � curspr$=$(workblk+(ptr+6)) 0�.� Lock �seticstate(picture%,1,1<<21,1<<21) 0�0� Centre �seticstate(picture%,2,1<<21,1<<21) 0�/� Front �seticstate(picture%,3,1<<21,1<<21) 0�'�seticstate(picture%,5,1<<22,0<<22) 0�'�seticstate(picture%,4,1<<22,0<<22) 1'�seticstate(picture%,6,1<<22,0<<22) 1U� pic=1 � �seticstate(picture%,5,1<<21,1<<21):�seticstate(picture%,6,1<<21,0<<21) 1U� pic=2 � �seticstate(picture%,6,1<<21,1<<21):�seticstate(picture%,5,1<<21,0<<21) 1$Y� � sprites � �seticstate(picture%,5,1<<22,1<<22):�seticstate(picture%,4,1<<22,1<<22) 1.5� � drawing � �seticstate(picture%,6,1<<22,1<<22) 18�openwin(picture%) 1B� 1L� 1V� change=-1 � 1`ptr=detptr+(desblk*design) 1jborder=workblk?(ptr) 1tColR=workblk?(ptr+1) 1~ColG=workblk?(ptr+2) 1�ColB=workblk?(ptr+3) 1�ColT=workblk?(ptr+4) 1�,InterHex=(ColB<<24)+(ColG<<16)+(ColR<<8) 1�� i=2 � 10 � 2 1�V� border=i/2 � �seticstate(back%,i,1<<21,1<<21):� �seticstate(back%,i,1<<21,0<<21) 1�� 1�V� border=0 � �seticstate(back%,11,1<<21,1<<21):� �seticstate(back%,11,1<<21,0<<21) 1��openwin(back%) 1�� 1�� 1� 1���applystyle 2 � change>-1 � 2 � change>=0 � change<=5 � 24ptr=detptr+(desblk*design)+deslen+(style*change) 2font$=$�info(type%,0) 2(pt=�($�info(type%,3)) 22width=�($�info(type%,8)) 2<$(workblk+ptr)=font$ 2Fworkblk!(ptr+256)=pt 2Pworkblk!(ptr+260)=width 2Z)workblk?(ptr+266)=(InterHex>>8) � &FF 2d*workblk?(ptr+267)=(InterHex>>16) � &FF 2n*workblk?(ptr+268)=(InterHex>>24) � &FF 2xj=0:u=0 2�#� �checkflag(type%,10,21) � j=0 2�#� �checkflag(type%,11,21) � j=1 2�#� �checkflag(type%,12,21) � j=2 2�#� �checkflag(type%,13,21) � j=3 2�#� �checkflag(type%,14,21) � u=1 2�9� �checkflag(type%,18,21) � hide=1 � hide=0:select=-1 2�workblk?(ptr+264)=j 2�workblk?(ptr+265)=u 2�workblk?(ptr+294)=hide 2� � change>=0 � change<=4 � 2�2 �bbox($(workblk+(change*256)),font$,pt,width) 2�- workblk!(ptr+278)=workblk!(ptr+270)+bbx1 2�- workblk!(ptr+282)=workblk!(ptr+274)-bby1 3 workblk!(ptr+286)=bbx 3 workblk!(ptr+290)=bby 3 ax=sx2:by=sy2 3" sx2=bbx:sy2=bby 3, � 36 � change=5 � 3@- �bbox($(workblk+(5*256)),font$,pt,width) 3J bbxm=bbx 3T- �bbox($(workblk+(6*256)),font$,pt,width) 3^ � bbx>bbxm � bbxm=bbx 3h- �bbox($(workblk+(7*256)),font$,pt,width) 3r � bbx>bbxm � bbxm=bbx 3|- �bbox($(workblk+(8*256)),font$,pt,width) 3� � bbx>bbxm � bbxm=bbx 3�# �bbox("WFMgjq",font$,pt,width) 3�- workblk!(ptr+278)=workblk!(ptr+270)+bbx1 3�- workblk!(ptr+282)=workblk!(ptr+274)-bby1 3� workblk!(ptr+286)=bbxm 3� workblk!(ptr+290)=bby 3� ax=sx2:by=sy2 3� sx2=bbxm:sy2=bby*4+6*3 3� � 3�� ax>sx2 � ax=ax � ax=sx2 3�� by>sy2 � by=by � by=sy2 3�Bș"Wimp_ForceRedraw",changedes,sx1,0-sy1-8,sx1+ax+2,0-sy1+by+2 3�� 4� change=6 � 4ptr=detptr+(desblk*design) 4"sord=�checkflag(picture%,5,21) 4&"Lock=�checkflag(picture%,1,21) 40%Centred=�checkflag(picture%,2,21) 4:#Front=�checkflag(picture%,3,21) 4D2� sord � workblk?(ptr+5)=1 � workblk?(ptr+5)=2 4N2� Lock workblk?(ptr+22)=1 � workblk?(ptr+22)=0 4X5� Centred workblk?(ptr+23)=1 � workblk?(ptr+23)=0 4b3� Front workblk?(ptr+24)=1 � workblk?(ptr+24)=0 4l$(workblk+(ptr+6))=curspr$ 4vBș"Wimp_ForceRedraw",changedes,sx1,0-sy1,sx1+sx2+2,0-sy1+sy2+2 4�� 4�� 4�� change=-1 � 4�ptr=detptr+(desblk*design) 4�%workblk?(ptr+1)=(InterHex>>8)�&FF 4�&workblk?(ptr+2)=(InterHex>>16)�&FF 4�&workblk?(ptr+3)=(InterHex>>24)�&FF 4�� i=2 � 10 � 2 4�0� �checkflag(back%,i,21) � workblk?(ptr)=i/2 4�� 4�/� �checkflag(back%,11,21) � workblk?(ptr)=0 4��redraw(changedes) 4�� 5� change=-2 � 5ptr=detptr+(desblk*design) 5"sord=�checkflag(picture%,5,21) 5 "Lock=�checkflag(picture%,1,21) 5*%Centred=�checkflag(picture%,2,21) 54#Front=�checkflag(picture%,3,21) 5>oldsord=workblk?(ptr+5) 5H2� sord � workblk?(ptr+5)=1 � workblk?(ptr+5)=2 5R2� Lock workblk?(ptr+22)=1 � workblk?(ptr+22)=0 5\5� Centred workblk?(ptr+23)=1 � workblk?(ptr+23)=0 5f3� Front workblk?(ptr+24)=1 � workblk?(ptr+24)=0 5pworkblk!(ptr+44)=350 5zworkblk!(ptr+48)=300 5�workblk!(ptr+52)=200 5�workblk!(ptr+56)=200 5�'� sord � $(workblk+(ptr+6))=curspr$ 5�� select=6 � select=-1 5�!� oldsord>0 � �redraw(curdes) 5�9ș"Wimp_ForceRedraw",curdes,350,-300,350+200,-300+200 5�� 5�� 5� 5���showall(handle) 5�Ȏ handle � 5�� card% : design=0 5�� comp% : design=1 6� letter% : design=2 6� 6 � i=0 � 5 6$/ptr=detptr+(desblk*design)+deslen+(style*i) 6.workblk?(ptr+294)=1 68� 6B�redraw(handle) 6L� 6V 6`��remove(handle) 6jcurdes=handle 6tȎ curdes � 6~� card% : design=0 6�� comp% : design=1 6�� letter% : design=2 6�� 6�ptr=detptr+(desblk*design) 6�oldsord=workblk?(ptr+5) 6�workblk?(ptr+5)=0 6�$(workblk+(ptr+6))="" 6�� select=6 � select=-1 6�!� oldsord>0 � �redraw(curdes) 6�� 6� 6���insert(handle) 7 curdes=handle 7 Ȏ curdes � 7� card% : design=0 7� comp% : design=1 7(� letter% : design=2 72� 7<'�seticstate(picture%,1,1<<21,0<<21) 7F'�seticstate(picture%,2,1<<21,0<<21) 7P'�seticstate(picture%,3,1<<21,0<<21) 7Z'�seticstate(picture%,5,1<<21,0<<21) 7d'�seticstate(picture%,6,1<<21,0<<21) 7n'�seticstate(picture%,4,1<<22,0<<22) 7x'�seticstate(picture%,5,1<<22,0<<22) 7�'�seticstate(picture%,6,1<<22,0<<22) 7�Y� � sprites � �seticstate(picture%,5,1<<22,1<<22):�seticstate(picture%,4,1<<22,1<<22) 7�5� � drawing � �seticstate(picture%,6,1<<22,1<<22) 7�� sprites � 7�curspr$=defspr$ 7�picpic=1 7�'�seticstate(picture%,5,1<<21,1<<21) 7�� 7�picpic=2 7�'�seticstate(picture%,6,1<<21,1<<21) 7�� 7��openwin(picture%) 7� change=-2 8� 8 8 ��swappic 8"button=block!16 8,8� button=5 � picpic=1:� curspr$="" � curspr$=defspr$ 86� button=6 � picpic=2 8@�redopic 8J� 8T 8^ ��redopic 8h0ș"Wimp_ForceRedraw",picture%,12,-222,222,12 8r� 8| 8���selectitem 8�curdes=block!12 8�mx=block!0:my=block!4 8�Ȏ curdes � 8�� card% : design=0 8�� comp% : design=1 8�� letter% : design=2 8�� 8�!block=curdes 8�!ș"Wimp_GetWindowInfo",,block 8�workx%=block!4-block!20 8�worky%=block!16-block!24 8�xcoord=mx-workx% 9ycoord=my-worky% 9oldselect=select 95osx1=sx1:osy1=sy1:osx2=sx2:osy2=sy2:olddes=seldes 9&)sx1=-1:sy1=-1:sx2=-1:sxy=-1:select=-1 90I=0 9:� 9D0 ptr=detptr+(desblk*design)+deslen+(style*I) 9N hide=workblk?(ptr+294) 9X � hide=1 � 9b x1=workblk!(ptr+278):a1=x1 9l y1=workblk!(ptr+282):b1=y1 9v x2=workblk!(ptr+286):a2=x2 9� y2=workblk!(ptr+290):b2=y2 9� y1=0-y1:x2=x1+x2:y2=y1+y2 9�' � I=5 � y2=b2*4+6*3:b2=y2:y2=y1+y2 9�i � xcoord>x1 � ycoord>y1 � xcoord<x2 � ycoord<y2 � select=I:seldes=curdes:sx1=a1:sy1=b1:sx2=a2:sy2=b2 9� � 9� I+=1 9�� I=6 � select>-1 9�ptr=detptr+(desblk*design) 9�pictype=workblk?(ptr+5) 9�� select=-1 � pictype>0 � 9� x1=workblk!(ptr+44):a1=x1 9� y1=workblk!(ptr+48):b1=y1 9� x2=workblk!(ptr+52):a2=x2 : y2=workblk!(ptr+56):b2=y2 : y1=0-y1:x2=x1+x2:y2=y1+y2 :i � xcoord>x1 � ycoord>y1 � xcoord<x2 � ycoord<y2 � select=6:seldes=curdes:sx1=a1:sy1=b1:sx2=a2:sy2=b2 : � :*H� (select<>-1 � select<>oldselect) � (seldes<>-1 � seldes<>olddes) � :4Tblock!0=seldes:block!4=sx1:block!8=0-sy1:block!12=sx1+sx2+4:block!16=0-sy1+sy2+4 :>'ș"Wimp_UpdateWindow",,block � more :Hȕ more :R/ ș"ColourTrans_SetGCOL",&0000FF00,,,&100,0 :\ � workx%+sx1,worky%-sy1 :f � 23,6,&CC| :p � 17,sx2,0 :z � 17,0,sy2 :� � 17,0-sx2,0 :� � 17,0,0-sy2 :�( ș"Wimp_GetRectangle",,block � more :�� :�� :�K� (oldselect<>-1 � select<>oldselect) � (olddes<>-1 � olddes<>seldes) � :�Zblock!0=olddes:block!4=osx1:block!8=0-osy1:block!12=osx1+osx2+4:block!16=0-osy1+osy2+4 :�'ș"Wimp_UpdateWindow",,block � more :�ȕ more :� aptr=detptr+(desblk*design) :�F ColR=workblk?(aptr+1):ColG=workblk?(aptr+2):ColB=workblk?(aptr+3) :�, backcol=(ColB<<24)+(ColG<<16)+(ColR<<8) :�- ș"ColourTrans_SetGCOL",backcol,,,&100,0 ;) ȓ workx%+osx1,worky%-osy1,osx2,osy2 ;( ș"Wimp_GetRectangle",,block � more ;� ;$ � oldselect=6 � ;.A ș"Wimp_ForceRedraw",olddes,osx1,0-osy1,osx1+osx2+4,0-osy1+4 ;8A ș"Wimp_ForceRedraw",olddes,osx1,0-osy1,osx1+4,0-osy1+osy2+4 ;BK ș"Wimp_ForceRedraw",olddes,osx1,0-osy1+osy2,osx1+osx2+4,0-osy1+osy2+4 ;LK ș"Wimp_ForceRedraw",olddes,osx1+osx2,0-osy1,osx1+osx2+4,0-osy1+osy2+4 ;V � ;`F ș"Wimp_ForceRedraw",olddes,osx1,0-osy1,osx1+osx2+4,0-osy1+osy2+4 ;j � ;t� ;~� ;� ;���dragitem ;�� select=-1 � � ;�mx=block!0:my=block!4 ;�!block=seldes ;�Ȏ seldes � ;�� card% : design=0 ;�� comp% : design=1 ;�� letter% : design=2 ;�� ;�!ș"Wimp_GetWindowInfo",,block ;�-a=block!4:b=block!8:c=block!12:d=block!16 <