Home » Archimedes archive » Archimedes World » AW-1994-05-Disc1.adf » Disk1May94 » !AWMay94/Goodies/Card2/!Card2/!RunImage
!AWMay94/Goodies/Card2/!Card2/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Archimedes World » AW-1994-05-Disc1.adf » Disk1May94 |
Filename: | !AWMay94/Goodies/Card2/!Card2/!RunImage |
Read OK: | ✔ |
File size: | C5AC bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10LOMEM=TOP+&1000 20ON ERROR PROCerror(REPORT$+" : at line "+STR$ERL):END 30REM ***>$.!Card2.!RunImage 40REM ***Main Program for !Card2 - Business Card creator 50REM Version 2.03 (26 Sept '93) 60REM LEN J. Robbins 70DIM block 10240, mblock 1024, menu% 6144, curbuf% 5120, icond 3072, q% 1024, text% &1000 80maxlev%=32 90DIM start%(maxlev%),box%(maxlev%) 100DIM l%(maxlev%),b%(maxlev%),r%(maxlev%),t%(maxlev%) 110DIM hexc(4),defpal% 255 120DIM scal% 20,scalblok% 255,temp% 100,palette% 255,winpal(15),cardpos(16) 130DIM matrix 100, origin 100, box 100, box2 100 140FOR c=1 TO 16 150READ a 160cardpos(c)=a 170NEXT 180 hexc(0)=&FFFFFF00 190FOR I=0 TO 15 200READ hexa 210winpal(I)=hexa 220defpal%!(I*4)=hexa 230NEXT 240DATA 25,625,290,625,25,445,290,445,25,265,290,265,25,85,290,85 250DATA &FFFFFF10,&DDDDDD10,&BBBBBB10,&99999910,&77777710,&55555510,&33333310,&010 260DATA &99440010,&EEEE10,&CC0010,&DD10,&BBEEEE10,&885510,&BBFF10,&FFBB0010 270 end%=-1:textc=FALSE:cardb=FALSE:hex=0:RED=(hex>>8)AND&FF:BLUE=RED:GREEN=RED 280endbuf%=curbuf%+&6000 290picmenu3$="":picmenu2$="":picmenu$="":picmenu4$="" 300j=0:gee=0:geecus=0:family$="Trinity.Medium":fsize=12:in=FALSE:close=0:nono=0:ns=0:ni=0 310savef=TRUE:noprint=FALSE:printing=FALSE:quiting=FALSE:full=FALSE:prequit=FALSE:prequitwait=FALSE 320fmcreated%=FALSE:fcount%=0 330reinter=&81683 340SYS "Wimp_Initialise",200,&4B534154,"!Card2" TO version%,mytask% 350SYS "Wimp_ClaimInterface",mytask% 360end%=FALSE:drag%=0:drive%=0:sfile$="":Shear=TRUE:curspr$="":progneed=112*1024 370size%=48:font%=-1:family%=0:style%=-1:n_font%=1:noofcards=8:force=FALSE:centred=FALSE:boxit=TRUE:tile=FALSE 380PROCtemplate 390SYS "OS_GetEnv" TO env$ 400IF INSTR(env$,"-quit") THEN 410I%=INSTR(env$,"""") 420I%=INSTR(env$,"""",I%+1) 430REPEAT 440I%+=1 450UNTIL MID$(env$,I%,1)<>" " 460env$=MID$(env$,I%) 470print$=RIGHT$(env$,7) 480noic=0 490IF print$=" -print" THEN env$=LEFT$(env$,LENenv$-7):noic=1 500IF print$=" -print" THEN PROCpresent:PROCload(env$):PROCopenwin(print%) 510IF print$<>" -print" AND env$<>"" PROCload(env$) 520IF noic=0 THEN initic=FNicon 530SYS"Hourglass_On" 540PROCfmenucr 550SYS"Hourglass_Off" 560PROCpollit 570DEFPROCpollit 580REPEAT 590 SYS"Wimp_Poll",0,block TO eventcode 600 SYS "Wimp_PollPointer",eventcode,,version% 610CASE eventcode OF 620WHEN 0:IF savef AND prequit SYS"Wimp_ProcessKey",&1FC 630WHEN 1:PROCredraw(block!0) 640WHEN 2:SYS "Wimp_OpenWindow",,block 650WHEN 3:SYS "Wimp_CloseWindow",,block 660IF noic=1 THEN SYSreinter,mytask%:SYS"Wimp_CloseDown" 670IF block!0=saved% AND prequit THEN prequit=FALSE 680WHEN 6:PROCclick(block) 690WHEN 7:PROCout 700WHEN 8:PROCprocess 710WHEN 9:PROCselect 720WHEN 17,18:PROCmessagein 730ENDCASE 740UNTIL FALSE 750ENDPROC 760END 770DEFFNicon 780!icond=-1 790icond!4=0 800icond!8=0:icond!12=68:icond!16=68 810icond!20=%11010+((2^12)*3):icond?23=112 820$(icond+24)="!Card2"+CHR$13 830SYS "Wimp_CreateIcon",,icond TO icon 840=icon 850DEFFNinf(handle,icon) 860PROCgee(handle,icon) 870=icond!28 880 DEFFNbit(a$) 890WHILE INSTR(a$,":")>0 900a$=MID$(a$,INSTR(a$,":")+1) 910ENDWHILE 920WHILE INSTR(a$,".")>0 930a$=MID$(a$,INSTR(a$,".")+1) 940ENDWHILE 950=a$ 960DEFFNwool(wool%) 970LOCAL cot$ 980 WHILE ?wool%>=32 990cot$+=CHR$(?wool%) 1000wool%+=1 1010ENDWHILE 1020=cot$ 1030DEFPROCtemplate 1040SYS"Wimp_OpenTemplate",,"<Card$Dir>.Templates" 1050indir=curbuf% 1060info%=FNtemplate("ProgInfo") 1070save%=FNtemplate("save") 1080card%=FNtemplate("Card") 1090details%=FNtemplate("details") 1100saved%=FNtemplate("savetext") 1110print%=FNtemplate("print") 1120colour%=FNtemplate("colours") 1130savepic%=FNtemplate("SavePIC") 1140query%=FNtemplate("query") 1150quit%=FNtemplate("quitbox") 1160SYS "Wimp_CloseTemplate" 1170stex=FNinfo(save%,1) 1180stexd=FNinfo(saved%,1) 1190stextpic=FNinfo(savepic%,1) 1200ENDPROC 1210DEFFNtemplate(a$) 1220SYS"Wimp_LoadTemplate",,block,indir,endbuf%,-1,a$,0 TO ,,indir,,,,c% 1230IF c%=0 THEN PROCmess("Template "+a$+" not found."):END 1240block!64=1 1250SYS"Wimp_CreateWindow",,block TO handle 1260=handle 1270DEFFNinfo(handle,icon) 1280PROCgee(handle,icon) 1290=icond!28 1300DEFPROCinfo(handle,icon,text$) 1310!block=handle:block!4=icon:SYS"Wimp_GetIconState",,block 1320$(block!28)=text$:block!36=LEN(text$)+1 1330block!8=0:block!12=0 1340SYS"Wimp_SetIconState",,block 1350ENDPROC 1360DEFPROCgee(handle,icon) 1370!icond=handle:icond!4=icon 1380SYS"Wimp_GetIconState",,icond 1390ENDPROC 1400DEFPROCpresent 1410a$="" 1420LOCAL ERROR 1430ON ERROR LOCAL a$="Not Present":RESTORE ERROR:ENDPROC 1440SYS"PDriver_Info" TO a,,,,name 1450WHILE ?name 1460a$=a$+CHR$(?name) 1470name+=1 1480ENDWHILE 1490$FNinfo(print%,0)=a$ 1500RESTORE ERROR 1510ENDPROC 1520DEFPROCcmenus 1530PROCpresent 1540nogo=FALSE 1550gee=0 1560menuopen=-44 1570menuptr=menu% 1580MOUSE x,y,b 1590IF block!16=27 AND sfile$<>"" THEN HJK=TRUE ELSE HJK=FALSE 1600IF HJK sprmen%=FNmenu("Sprite List",(largest*14)+40,men$):gee=2 1610picmenu$="Force Scale,Centred" 1620IF centred AND picmenu$<>"{�}Centred" centred=TRUE 1630IF force picmenu4$="{�}Force Scale," 1640IF NOT force picmenu4$="Force Scale," 1650IF centred picmenu$="{�}Centred" 1660IF NOT centred picmenu$="Centred" 1670IF curspr$<>"" iconmenu$="{b|picmenu%}Picture" ELSE iconmenu$="{-|picmenu%}Picture" 1680picmenu%=FNmenu("Picture",190,"{_}Del Pic,{u|savepic%}Save Pic,"+picmenu4$+picmenu$) 1690savemenu%=FNmenu("Save",174,"{b|save%}Draw,{b|saved%}Data") 1700iconmenu%=FNmenu("!Card",174,"{b|info%}Info,{b|savemenu%}Save,{b|print%}Print,Details,View,"+iconmenu$+",Quit") 1710detmenu%=FNmenu("!Card",174,"{b|info%}Info,{b|savemenu%}Save,{b|print%}Print,View,"+iconmenu$+",Quit") 1720viewmenu%=FNmenu("!Card",174,"{b|info%}Info,{b|savemenu%}Save,{b|print%}Print,Details,Back Col,"+iconmenu$+",Quit") 1730CASE block!12 OF 1740WHEN -2:IF block!8=2 THEN openmenu%=iconmenu%:a=x-75:b=(7+2)*48 1750WHEN details%:IF HJK THEN openmenu%=sprmen%:a=x:b=y:ELSE openmenu%=detmenu%:a=x:b=y 1760WHEN card%:IF block!8=2 THEN openmenu%=viewmenu%:a=x:b=y 1770OTHERWISE:ENDPROC 1780ENDCASE 1790PROCopenmenu(a,b) 1800ENDPROC 1810DEFPROCopenmenu(x,y) 1820SYS"Wimp_CreateMenu",,openmenu%,x,y 1830ENDPROC 1840DEFFNmenu(tit$,wid,menu$) 1850menu$+="," 1860oldmenu=menuptr 1870$menuptr=tit$ 1880menuptr?12=7 1890menuptr?13=2 1900menuptr?14=7 1910menuptr?15=0 1920menuptr!16=wid 1930menuptr!20=48 1940menuptr!24=0 1950menuptr+=28 1960REPEAT 1970PROCthing(menu$) 1980menu$=MID$(menu$,INSTR(menu$,",")+1) 1990menuptr+=24 2000UNTIL menu$="" 2010menuptr!-24=(menuptr!-24) OR %10000000 2020=oldmenu 2030DEFPROCthing(m$) 2040m$=LEFT$(m$,INSTR(m$,",")-1) 2050i$="":j$="" 2060IF INSTR(m$,"{")>0 THEN 2070i$=LEFT$(m$,INSTR(m$,"}")-1) 2080m$=MID$(m$,INSTR(m$,"}")+1) 2090j$=LEFT$(i$,INSTR(i$,"|")-1) 2100i$=MID$(i$,INSTR(i$,"|")+1) 2110ENDIF 2120ijack=&07000021 2130mjack=0 2140submenu=-1 2150IF INSTR(j$,"b")>0 THEN submenu=EVAL(i$) 2160IF INSTR(j$,"_")>0 THEN mjack=mjack OR 2 2170IF INSTR(j$,"�")>0 THEN mjack=mjack OR 1 2180IF INSTR(j$,"u")>0 THEN mjack=mjack OR 2:submenu=EVAL(i$) 2190IF INSTR(j$,"-")>0 THEN ijack=ijack OR &400000:submenu=EVAL(i$) 2200IF INSTR(j$,"s")>0 THEN ijack=ijack OR &400000 2210!menuptr=mjack 2220menuptr!4=submenu 2230menuptr!8=ijack 2240$(menuptr+12)=m$ 2250ENDIF 2260ENDPROC 2270DEFPROCclick(block) 2280keepb%=block!12 2290IF FNcheckit(block!12,block!16)=983040 THEN 2300PROCslabin(keepb%):PROCslabout(keepb%) 2310ENDIF 2320IF quiting THEN quiting=FALSE:PROCclose(quit%) 2330IF block!12=card% AND block!8=4 io=0:hex=hexc(0):PROCsetper 2340IF block!12=-2 AND block!8=4 PROCopenwin(details%) 2350IF block!12=-2 AND block!8=1 PROCopenwin(card%) 2360IF block!12=details% AND block!8=2 THEN 2370IF block!16=3 OR block!16=2 OR block!16=4 OR block!16=19 THEN MOUSE x,y,b:gee=1:icy=block!16:SYS"Wimp_CreateMenu",,fmenu%,x-75,y:ENDPROC 2380ENDIF 2390IF block!8=2 THEN PROCcmenus:ENDPROC 2400IF block!12=details% THEN savef=FALSE:PROCtitle(details%,"") 2410IF block!12=save% AND block!16=2 winsave%=block!12:PROCdefsave 2420IF block!12=saved% AND block!16=2 winsave%=block!12:PROCdefsave 2430IF block!12=savepic% AND block!16=2 winsave%=block!12:PROCdefsave 2440IF block!12=save% AND block!16=0 winsave%=block!12:PROCsave($FNinfo(winsave%,1)) 2450IF block!12=saved% AND block!16=0 winsave%=block!12:PROCsave($FNinfo(winsave%,1)) 2460IF block!12=savepic% AND block!16=0 winsave%=block!12:PROCsave($FNinfo(winsave%,1)) 2470IF block!12=details% AND block!16=22 io=1:hex=hexc(io):textc=TRUE:cardb=FALSE:PROCsetper 2480IF block!12=details% AND block!16=23 io=2:hex=hexc(io):textc=TRUE:cardb=FALSE:PROCsetper 2490IF block!12=details% AND block!16=24 io=3:hex=hexc(io):textc=TRUE:cardb=FALSE:PROCsetper 2500IF block!12=details% AND block!16=25 io=4:hex=hexc(io):textc=TRUE:cardb=FALSE:PROCsetper 2510IF block!12=details% AND block!16>28 AND block!16<31 PROCdrawsprite 2520IF block!12=colour% AND block!16>=14 AND block!16<=29 PROCselectcol(block!16) 2530IF block!12=colour% AND block!16=13 THEN PROCaddcol 2540IF block!12=colour% AND block!16=12 THEN PROCclose(colour%) 2550IF block!12=colour% AND block!16=-1 THEN PROCdragcol 2560IF block!12=colour% AND block!16>0 AND block!16<11 THEN PROCupanddown(block!16) 2570IF prequit THEN 2580IF block!12=quit% AND block!16=0 THEN SYS"Wimp_ProcessKey",&1FC:SYSreinter,mytask%:SYS"Wimp_CloseDown" 2590IF block!12=quit% AND block!16=2 THEN PROCclose(quit%):prequit=FALSE 2600IF block!12=quit% AND block!16=3 THEN PROCclose(quit%):PROCopenwin(saved%):prequitwait=TRUE 2610IF prequit AND NOT prequitwait prequit=FALSE 2620ELSE 2630IF block!12=quit% AND block!16=0 THEN SYSreinter,mytask%:SYS"Wimp_CloseDown":END 2640IF block!12=quit% AND block!16=2 THEN PROCclose(quit%) 2650IF block!12=quit% AND block!16=3 THEN PROCclose(quit%):PROCopenwin(saved%) 2660ENDIF 2670IF block!12=query% AND block!16=0 THEN PROCclose(query%):PROCendq 2680IF block!12=print% AND block!16=1 THEN 2690PROCprint 2700IF noic=1 THEN SYSreinter,mytask%:SYS"Wimp_CloseDown":END 2710ENDIF 2720IF block!12=print% AND block!16=5 THEN PROCmorecopies 2730IF block!12=print% AND block!16=3 THEN PROClesscopies 2740ENDPROC 2750DEFFNcheckflag(handle,icon,flag) 2760bit=FALSE 2770!icond=handle:icond!4=icon 2780SYS"Wimp_GetIconState",,icond 2790IF (icond!24AND(1<<flag))>0 bit=TRUE 2800=bit 2810DEFPROCsetshear(on) 2820!icond=details%:icond!4=29:SYS"Wimp_GetIconState",,icond 2830IF on=1 THEN 2840C=(1<<21):E=(1<<21) 2850ELSE 2860C=(0<<21):E=(1<<21) 2870ENDIF 2880icond!8=C:icond!12=E 2890SYS"Wimp_SetIconState",,icond 2900: 2910!icond=details%:icond!4=30:SYS"Wimp_GetIconState",,icond 2920IF on=0 THEN 2930C=(1<<21):E=(1<<21) 2940ELSE 2950C=(0<<21):E=(1<<21) 2960ENDIF 2970icond!8=C:icond!12=E 2980SYS"Wimp_SetIconState",,icond 2990ENDPROC 3000DEFPROCprocess 3010IF !block=details% AND block!24=13 THEN PROCcaret:ENDPROC 3020IF !block=save% AND block!24=13 THEN winsave%=!block:PROCsave($FNinfo(!block,1)) 3030IF !block=saved% AND block!24=13 THEN winsave%=!block:PROCsave($FNinfo(!block,1)) 3040IF !block=savepic% AND block!24=13 THEN winsave%=!block:PROCsave($FNinfo(!block,1)) 3050SYS"Wimp_ProcessKey",block!24 3060ENDPROC 3070DEFPROCcaret 3080SYS"Wimp_GetCaretPosition",,block 3090IF block!0=details% THEN 3100CASE block!4 OF 3110 WHEN 0:np=5 3120 WHEN 5:np=6 3130 WHEN 6:np=7 3140 WHEN 7:np=18 3150 WHEN 18:np=10 3160 WHEN 10:np=21 3170 WHEN 21:np=0 3180 WHEN 13:np=14 3190 WHEN 14:np=17 3200 WHEN 17:np=15 3210 WHEN 15:np=0 3220 WHEN 31:np=32:PROCinfo(details%,13,$FNinfo(details%,block!4)) 3230 WHEN 32:np=33:PROCinfo(details%,14,$FNinfo(details%,block!4)) 3240 WHEN 33:np=34:PROCinfo(details%,17,$FNinfo(details%,block!4)) 3250 WHEN 34:np=13:PROCinfo(details%,15,$FNinfo(details%,block!4)) 3260 ENDCASE 3270 SYS "Wimp_SetCaretPosition",details%,np,0,0,-1,LEN($FNinfo(details%,np)) 3280 ENDIF 3290 ENDPROC 3300DEFPROCselect 3310IF gee=1 THEN 3320IF version%>300 THEN SYS"Font_DecodeMenu",0,fmenu%,block,icond,255TO,,,,size:$icond=LEFT$($icond,size-1):$icond=RIGHT$($icond,LEN($icond)-2):$icond=LEFT$($icond,LEN$icond-(LEN$icond-INSTR($icond,"\"))-1):ELSE SYS"Wimp_DecodeMenu",,fmenu%,block,icond 3330family$=$icond 3340PROCinfo(details%,icy,family$) 3350PROCredraw(card%) 3360gee=0 3370ENDPROC 3380ENDIF 3390IF gee=2 THEN 3400SYS"Wimp_DecodeMenu",,sprmen%,block,icond 3410curspr$=$icond 3420PROCdrawsprite 3430gee=0 3440ENDPROC 3450ENDIF 3460SYS"Wimp_DecodeMenu",,openmenu%,block,icond 3470iffy=TRUE 3480IF $icond="Quit" THEN PROCareyousure:quiting%=TRUE 3490IF $icond="Details" THEN PROCopenwin(details%) 3500IF $icond="View" THEN PROCopenwin(card%):PROCredraw(card%) 3510IF $icond="Picture.Del Pic" THEN PROCkillspr 3520IF $icond="Back Col" THEN io=0:hex=hexc(io):PROCsetper 3530IF $icond="Picture.Force Scale" AND iffy AND force force=FALSE:iffy=FALSE:PROCdrawsprite 3540IF $icond="Picture.Force Scale" AND iffy AND NOT force force=TRUE:iffy=FALSE:PROCdrawsprite 3550IF $icond="Picture.Centred" AND iffy AND centred centred=FALSE:iffy=FALSE:PROCdrawsprite 3560IF $icond="Picture.Centred" AND iffy AND NOT centred centred=TRUE:iffy=FALSE:PROCdrawsprite 3570IF $icond="Save.Draw" PROCopenwin(save%) 3580IF $icond="Save.Data" PROCopenwin(saved%) 3590SYS"Wimp_GetPointerInfo",,block 3600IF block!8=1 THEN 3610IF menuopen=-44 THEN PROCcmenus 3620SYS"Wimp_CreateMenu",,openmenu% 3630ELSE 3640SYS"Wimp_CreateMenu",,-1 3650ENDIF 3660ENDPROC 3670DEFPROCkillspr 3680sfile$="":curspr$="":spr%=0:SYS"Wimp_SlotSize",progneed,-1 3690ENDPROC 3700DEFPROCmess(mess$) 3710!icond=0:$(icond+4)=mess$+CHR$0 3720SYS"Wimp_ReportError",icond,1,"!Card" 3730ENDPROC 3740DEFPROCerror(err$) 3750IF ERR=523 THEN 3760PROCmess("Font "+font$+" not found") 3770CASE font$ OF 3780WHEN fontname$:PROCinfo(details%,3,"Trinity.Medium") 3790WHEN fontextra$:PROCinfo(details%,2,"Trinity.Medium") 3800WHEN fontad1$:PROCinfo(details%,19,"Trinity.Medium") 3810WHEN fonttel$:PROCinfo(details%,4,"Trinity.Medium") 3820ENDCASE 3830PROCredraw(card%):PROCpollit 3840ENDIF 3850!icond=0:$(icond+4)=err$+"."+" Press OK to continue or Cancel to quit"+CHR$0 3860SYS"Wimp_ReportError",icond,3,"!Card" TO ,but 3870IF but=2 THEN SYSreinter,mytask%:SYS"Wimp_CloseDown":END 3880ENDPROC 3890DEFPROCout 3900IF winsave%=save% THEN stext=stex:ft=&AFF 3910IF winsave%=saved% THEN stext=stexd:ft=&00C 3920IF winsave%=savepic% THEN stext=stextpic:ft=&FF9 3930IF drive%=1 THEN 3940SYS "Wimp_GetPointerInfo",,mblock 3950win=mblock!12:icon=mblock!16:xout=!mblock:yout=mblock!4: 3960mblock!20=mblock!12:mblock!24=mblock!16:mblock!28=!mblock:mblock!32=mblock!4 3970mblock!12=0:mblock!16=1:mblock!36=1024:mblock!40=ft 3980$stext=$FNinfo(winsave%,1) 3990$stext=FNgetleaf($stext) 4000FOR I=0 TO 255:IF I?stext<32 THEN I?stext=13 4010NEXT 4020!mblock=44+4*(1+(LEN$stext)DIV4) 4030$(mblock+44)=FNbit($stext)+CHR$0:!mblock=60 4040SYS "Wimp_SendMessage",17,mblock,mblock!20,mblock!24:REM DataSave 4050drag%=0 4060ENDIF 4070ENDPROC 4080DEFPROCdefsave 4090PROCMode 4100!block=winsave% 4110SYS "Wimp_GetWindowState",,block 4120ysize%=block!16-block!8 4130x%=block!4:y%=block!8:block!4=2 4140SYS"Wimp_GetIconState",,block 4150block!8+=x%:block!12+=y%+ysize% 4160block!16+=x%:block!20+=y%+ysize% 4170block!24=0:block!28=0:block!32=xmax:block!36=ymax 4180!block=0:block!4=5:drag%=TRUE:drive%=1 4190SYS"Wimp_DragBox",,block 4200ENDPROC 4210DEFPROCMode 4220!block=130:block!4=131:block!8=-1:SYS"OS_ReadVduVariables",block,block+128 4230SYS"OS_ReadModeVariable",MODE,4 TO ,,Xeig% 4240SYS"OS_ReadModeVariable",MODE,5 TO ,,Yeig% 4250xmax=((block!128)+1)*2^Xeig%:ymax=((block!132)+1)*2^Yeig% 4260ENDPROC 4270DEFFNgetleaf(leaf$) 4280WHILE INSTR(leaf$,".") 4290leaf$=MID$(leaf$,INSTR(leaf$,".")+1) 4300ENDWHILE:=leaf$ 4310DEFPROCsave(save$) 4320IF 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 4330IF winsave%=saved% 4340LOCAL ERROR 4350ON ERROR LOCAL IF ERR=71622:PROCquery("Disc Full"):full=TRUE:RESTORE ERROR:ENDPROC:ELSE RESTORE ERROR:PROCerror(REPORT$+" : at line "+STR$ERL):END 4360 endtext%=text% 4370$endtext%="Card2 Data File"+CHR$10 4380 endtext%+=16 4390IF curspr$<>"" THEN 4400$endtext%="Sprites"+CHR$10 4410endtext%+=8 4420$endtext%=curspr$+CHR$10:endtext%+=LEN(curspr$)+1:$endtext%=STR$spr_len%+CHR$(10):endtext%+=LEN(STR$spr_len%)+1 4430IF centred c$="centred" ELSE c$="origin" 4440IF force f$="forced" ELSE f$="s/s" 4450IF Shear g$="1" ELSE g$="0" 4460$endtext%=g$+CHR$10 4470endtext%+=2 4480$endtext%=c$+CHR$10 4490endtext%+=LENc$+1 4500$endtext%=f$+CHR$10 4510endtext%+=LENf$+1 4520ELSE 4530$endtext%="NoSprites"+CHR$10:endtext%+=10 4540ENDIF 4550 $endtext%=$FNinfo(details%,3)+CHR$10 4560 endtext%+=LEN($FNinfo(details%,3))+1 4570 $endtext%=$FNinfo(details%,0)+CHR$(10) 4580 endtext%+=LEN($FNinfo(details%,0))+1 4590 $endtext%=$FNinfo(details%,13)+CHR$(10) 4600endtext%+=LEN($FNinfo(details%,13))+1 4610$endtext%=$FNinfo(details%,31)+CHR$(10) 4620endtext%+=LEN($FNinfo(details%,31))+1 4630 $endtext%=$FNinfo(details%,2)+CHR$10 4640 endtext%+=LEN($FNinfo(details%,2))+1 4650 $endtext%=$FNinfo(details%,5)+CHR$(10) 4660 endtext%+=LEN($FNinfo(details%,5))+1 4670 $endtext%=$FNinfo(details%,14)+CHR$(10) 4680endtext%+=LEN($FNinfo(details%,14))+1 4690 $endtext%=$FNinfo(details%,32)+CHR$(10) 4700endtext%+=LEN($FNinfo(details%,32))+1 4710$endtext%=$FNinfo(details%,19)+CHR$10 4720 endtext%+=LEN($FNinfo(details%,19))+1 4730 $endtext%=$FNinfo(details%,6)+CHR$(10) 4740 endtext%+=LEN($FNinfo(details%,6))+1 4750 $endtext%=$FNinfo(details%,17)+CHR$(10) 4760endtext%+=LEN($FNinfo(details%,17))+1 4770 $endtext%=$FNinfo(details%,33)+CHR$(10) 4780endtext%+=LEN($FNinfo(details%,33))+1 4790$endtext%=$FNinfo(details%,7)+CHR$(10) 4800endtext%+=LEN($FNinfo(details%,7))+1 4810$endtext%=$FNinfo(details%,18)+CHR$(10) 4820endtext%+=LEN($FNinfo(details%,18))+1 4830$endtext%=$FNinfo(details%,10)+CHR$(10) 4840endtext%+=LEN($FNinfo(details%,10))+1 4850$endtext%=$FNinfo(details%,4)+CHR$(10) 4860endtext%+=LEN($FNinfo(details%,4))+1 4870$endtext%=$FNinfo(details%,21)+CHR$(10) 4880endtext%+=LEN($FNinfo(details%,21))+1 4890$endtext%=$FNinfo(details%,15)+CHR$(10) 4900endtext%+=LEN($FNinfo(details%,15))+1 4910$endtext%=$FNinfo(details%,34)+CHR$(10) 4920endtext%+=LEN($FNinfo(details%,34))+1 4930$endtext%=STR$hexc(0)+CHR$(10) 4940 endtext%+=LEN(STR$hexc(0))+1 4950 $endtext%=STR$hexc(1)+CHR$(10) 4960 endtext%+=LEN(STR$hexc(1))+1 4970$endtext%=STR$hexc(2)+CHR$(10) 4980 endtext%+=LEN(STR$hexc(2))+1 4990$endtext%=STR$hexc(3)+CHR$(10) 5000 endtext%+=LEN(STR$hexc(3))+1 5010$endtext%=STR$hexc(4)+CHR$(10) 5020 endtext%+=LEN(STR$hexc(4))+1 5030 SYS"OS_File",0,save$,0,0,text%,endtext% 5040 OSCLI("Settype "+save$+" &0cc") 5050IF curspr$<>""THEN 5060SYS"OS_File",5,save$ TO,,,,length 5070SYS"OS_Find",&C0,save$ TO fs 5080SYS"OS_GBPB",1,fs,spr%+4,spr_len%,length 5090CLOSE#fs 5100ENDIF 5110RESTORE ERROR 5120IF save$<>"<Wimp$Scrap>" THEN savef=TRUE:PROCtitle(details%,save$) 5130ENDIF 5140IF winsave%=save% THEN PROCmakefile 5150IF winsave%=savepic% THEN 5160LOCAL ERROR 5170ON 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 5180Current=FNcheckflag(savepic%,3,21) 5190CASE Current OF 5200WHEN TRUE: 5210SYS 46,&118,spr%,curspr$ TO ,,sptr% 5220SYS"OS_Find",&80,save$ TO ile% 5230BPUT#ile%,&01 5240BPUT#ile%,0 5250BPUT#ile%,0 5260BPUT#ile%,0 5270BPUT#ile%,&10 5280BPUT#ile%,0 5290BPUT#ile%,0 5300BPUT#ile%,0 5310BPUT#ile%,!sptr%+16 AND &FF 5320BPUT#ile%,(!sptr%+16>>>8) AND &FF 5330BPUT#ile%,(!sptr%+16>>>16) AND &FF 5340BPUT#ile%,(!sptr%+16>>>24) AND &FF 5350SYS"OS_GBPB",&02,ile%,sptr%,!sptr% 5360SYS"OS_Find",0,ile% 5370SYS"OS_File",&12,save$,&ff9 5380WHEN FALSE: 5390SYS"OS_File",0,save$,0,0,spr%+4,spr%+(spr_len%+4) 5400SYS"OS_File",&12,save$,&ff9 5410ENDCASE 5420ENDIF 5430IF save$<>"<Wimp$Scrap>" PROCinfo(winsave%,1,save$) 5440ENDPROC 5450DEFPROCmessagein 5460mblock=block 5470ref=mblock!8:task=mblock!4 5480CASE mblock!16 OF 5490WHEN 8:IF NOT prequit mblock!12=mblock!8:SYS"Wimp_SendMessage",19,mblock:prequit=TRUE:PROCareyousure 5500WHEN 0:SYSreinter,mytask%:SYS"Wimp_CloseDown":END 5510WHEN 2: 5520IF drive%=1 THEN 5530PROCsave(FNwool(mblock+44)) 5540mblock!12=ref 5550mblock!16=3 5560mblock!36=-1 5570!mblock=256 5580sendm=&400E7 5590SYS sendm,18,mblock,task:REM DataLoad 5600ENDIF 5610WHEN 3: 5620IF mblock!40<>&0CC AND mblock!40<>&FF9 THEN PROCmess("Only CardData files or Sprites can be dropped into here"):ENDPROC 5630in=TRUE 5640IF mblock!40=&FF9 THEN PROCinsprites:ENDPROC 5650PROCload(FNwool(block+44)) 5660WHEN 5: 5670IF block!40=&0CC THEN 5680block!12=block!8:block!16=4 5690sendm=&400E7 5700SYS sendm,18,block,block!4:REM DataLoadAck 5710PROCload(FNwool(block+44)) 5720ENDIF 5730ENDCASE 5740ENDPROC 5750DEFPROCload(load$) 5760SYS"OS_Find",&40,load$ TO file% 5770t$="" 5780t$=FNreadfile 5790 first$=t$ 5800 IF t$<>"Card Data File" AND t$<>"Card2 Data File" THEN PROCmess("This is not a Card data file"):SYS"OS_Find",0,file%:ENDPROC 5810IF first$="Card Data File" new=FLASE:PROCloadold:PROCkillspr 5820IF first$="Card2 Data File" new=TRUE:PROCloadnew 5830SYS"OS_Find",0,file% 5840$FNinfo(saved%,1)=load$ 5850IF noic=0 PROCopenwin(details%) 5860IF noic=0 savef=TRUE:PROCtitle(details%,load$) 5870IF noic=0 AND curspr$<>"" THEN PROCdrawsprite 5880ENDPROC 5890DEFPROCloadnew 5900IF FNreadfile="Sprites" THEN PROCloadspr:ENDPROC 5910PROCkillspr 5920PROCloadindet 5930FOR I=0 TO 4 5940hexc(I)=VAL(FNreadfile) 5950NEXT I 5960ENDPROC 5970DEFPROCloadspr 5980IF curspr$<>"" THEN PROCkillspr 5990curspr$=FNreadfile 6000sfile$="Internal" 6010spr_len%=VAL(FNreadfile) 6020IF VAL(FNreadfile)=1 THEN PROCsetshear(1) ELSE PROCsetshear(0) 6030IF FNreadfile="centred" THEN centred=TRUE 6040IF FNreadfile="forced" THEN force=TRUE 6050PROCloadindet 6060FOR I=0 TO 4 6070hexc(I)=VAL(FNreadfile) 6080NEXT I 6090men$="":largest=0 6100spr%=FNclaim(spr_len%+64) 6110SYS"OS_File",5,load$ TO ,,,,length 6120SYS"OS_GBPB",3,file%,spr%+4,spr_len%,length-spr_len% 6130SYS "OS_SpriteOp",&108,spr% TO ,,,sprites% 6140FOR i%=0 TO sprites%-1 6150 SYS "OS_SpriteOp",&10D,spr%,temp%,&100,i%+1 TO ,,,j% 6160 temp%?j%=13 6170 IF LEN(men$)<243 THEN men$=men$+$temp%+"," 6180 IF LEN($temp%)>largest largest=LEN($temp%) 6190NEXT 6200men$=LEFT$(men$,LEN(men$)-1) 6210ENDPROC 6220DEFPROCloadold 6230PROCloadindet 6240FOR I=1 TO 4 6250hexc(I)=0 6260NEXT 6270hexc(0)=&FFFFFF00 6280ENDPROC 6290DEFPROCloadindet 6300PROCinfo(details%,3,FNreadfile) 6310PROCinfo(details%,0,FNreadfile) 6320PROCinfo(details%,13,FNreadfile) 6330IF new PROCinfo(details%,31,FNreadfile) 6340PROCinfo(details%,2,FNreadfile) 6350PROCinfo(details%,5,FNreadfile) 6360PROCinfo(details%,14,FNreadfile) 6370IF new PROCinfo(details%,32,FNreadfile) 6380PROCinfo(details%,19,FNreadfile) 6390PROCinfo(details%,6,FNreadfile) 6400PROCinfo(details%,17,FNreadfile) 6410IF new PROCinfo(details%,33,FNreadfile) 6420PROCinfo(details%,7,FNreadfile) 6430PROCinfo(details%,18,FNreadfile) 6440PROCinfo(details%,10,FNreadfile) 6450PROCinfo(details%,4,FNreadfile) 6460PROCinfo(details%,21,FNreadfile) 6470PROCinfo(details%,15,FNreadfile) 6480IF new PROCinfo(details%,34,FNreadfile) 6490ENDPROC 6500DEFFNreadfile 6510 t$="" 6520 REPEAT 6530 SYS"OS_BGet",,file% TO byte% 6540 IF byte%=254 SYS"OS_Find",0,file%:PROCopenwin(details%): 6550 t$=t$+CHR$(byte%) 6560 UNTIL byte%=13 OR byte%=10 6570 =LEFT$(t$,LEN(t$)-1) 6580DEFPROCinsprites 6590 men$="":largest=0 6600 load$=FNwool(block+44) 6610 sfile$=load$ 6620SYS "OS_File",5,load$ TO ,,,,spr_len% 6630spr%=FNclaim(spr_len%+256) 6640SYS "OS_File",&FF,load$,spr%+4 6650SYS "OS_SpriteOp",&108,spr% TO ,,,sprites% 6660FOR i%=0 TO sprites%-1 6670 SYS "OS_SpriteOp",&10D,spr%,temp%,&100,i%+1 TO ,,,j% 6680 temp%?j%=13 6690 IF LEN(men$)<243 THEN men$=men$+$temp%+"," 6700 IF LEN($temp%)>largest largest=LEN($temp%) 6710NEXT 6720men$=LEFT$(men$,LEN(men$)-1) 6730curspr$=LEFT$(men$,INSTR(men$,",")-1) 6740PROCopenwin(details%):PROCdrawsprite 6750 ENDPROC 6760DEFPROCopenwin(handle%) 6770!block=handle% 6780SYS"Wimp_GetWindowState",,block 6790open=block!32 AND (1<<16) 6800IF block!28<>-1 OR open=0 OR handle%=card% THEN 6810block!28=-1 6820SYS"Wimp_OpenWindow",,block 6830ENDIF 6840ENDPROC 6850DEFPROCfmenucr 6860IF version%>300 THEN 6870fflag%=0 6880fflag%+=1<<19 6890fflag%+=1<<20 6900SYS"Font_ListFonts",,0,fflag%,,0 TO r,s,t,A,u,B 6910DIM fmenu% A,fbuf% B 6920SYS"Font_ListFonts",,fmenu%,fflag%,A,fbuf%,B,1 6930ELSE 6940PROCfmenucrRO2 6950ENDIF 6960ENDPROC 6970DEFPROCfmenucrRO2 6980NULL=0 6990DIM f_p% 900 7000!f_p%=NULL 7010c%=0 7020REPEAT 7030 SYS "Font_ListFonts",,q%,c%,-1 TO ,,c% 7040 IF c%<>-1 THEN PROCFamily(FNInfo(q%)) 7050UNTIL c%=-1 7060 7070DIM fmenu% 28+24*n_font% 7080$fmenu%="Fonts list":fmenu%!12=&0207:fmenu%!20=40:fmenu%!24=0 7090fmenu%!28=1:fmenu%!32=-1:fmenu%!36=&07000021:$(fmenu%+40)="System" 7100 7110width%=8:p%=fmenu%+28:r%=f_p%:n%=2 7120WHILE n%<=n_font% 7130 p%+=24 7140 f$=FNInfo(!r%+12) 7150 width%=FNMax(width%,LEN(f$)+1) 7160 !p%=0:p%!8=&07000121 7170 p%!12=!r%+12 7180 p%!16=-1:p%!20=LEN(f$) 7190 v%=!r%+4 7200 IF (!(!r%+8) = 1) AND FNInfo(!v%+4) = "" THEN 7210 p%!4 = -1 7220 ELSE 7230 DIM p%!4 28+24*!(!r%+8) 7240 t%=p%!4 7250 $t%=f$:t%!12=&0207:t%!20=40:t%!24=0 7260 u%=t%+4 7270 width2%=LEN(f$)-2 7280 FOR s%=1 TO !(!r%+8) 7290 u%+=24 7300 f$=FNInfo(!v%+4) 7310 width2%=FNMax(width2%,LEN(f$)+1) 7320 !u%=0:u%!4=-1:u%!8=&07000121 7330 u%!12=!v%+4 7340 u%!16=-1:u%!20=LEN(f$) 7350 v%=!v% 7360 NEXT 7370 !u%= !u% OR &80:t%!16=16*width2% 7380 ENDIF 7390 r%=!r% 7400 n%+=1 7410ENDWHILE 7420!p%= !p% OR &80:fmenu%!16=16*width% 7430ENDPROC 7440DEF PROCFamily(font$) 7450LOCAL family$,style$,p%,flag%,pos% 7460 7470pos%=INSTR(font$,".") 7480family$=LEFT$(font$,pos%-1) 7490IF pos% = 0 THEN 7500 style$="" 7510ELSE 7520 style$=MID$(font$,pos%+1) 7530ENDIF 7540p%=f_p%:flag%=FALSE 7550WHILE (!p% <> NULL AND flag%=FALSE) 7560 IF family$ = FNInfo(!p%+12) THEN flag%= TRUE 7570 p% =!p% 7580ENDWHILE 7590IF flag%=FALSE THEN 7600 DIM p%!0 LEN(family$)+13 7610 p%=!p% 7620 !p%=NULL 7630 p%!8=1 7640 $(p%+12)=family$ 7650 DIM p%!4 LEN(style$)+5 7660 p%=p%!4 7670 !p%=NULL 7680 $(p%+4)=style$ 7690 n_font%+=1 7700ELSE 7710 p%!8=p%!8+1 7720 p%=p%+4 7730 WHILE (!p% <> NULL) 7740 p%=!p% 7750 ENDWHILE 7760 DIM p%!0 LEN(style$)+5 7770 p%=!p% 7780 !p%=NULL 7790 $(p%+4)=style$ 7800ENDIF 7810ENDPROC 7820DEFFNMax(a%,b%) 7830IF a%>b% THEN =a% ELSE =b% 7840DEFFNInfo(p%) 7850LOCAL a$ 7860a$="" 7870WHILE (?p%<>0 AND ?p%<>13) 7880 a$+=CHR$(?p%) 7890 p%+=1 7900ENDWHILE 7910=a$ 7920DEFPROCredraw(handle) 7930 block!0=handle 7940LOCALmore% 7950SYS "Wimp_RedrawWindow",,block TO more% 7960WHILE more% 7970 CASE handle OF 7980 WHEN card% 7990 PROCapplication_redraw 8000 WHEN colour% 8010 PROCapplication_redraw2 8020 SYS "Wimp_BorderWindow",,block 8030 WHEN details% 8040 PROCapp_re3 8050 SYS "Wimp_BorderWindow",,block 8060 OTHERWISE 8070 SYS "Wimp_BorderWindow",,block 8080 ENDCASE 8090 SYS "Wimp_GetRectangle",,block TO more% 8100ENDWHILE 8110IF close=1 THEN PROCclose(card%):close=0 8120IF nono=1 THEN PROCinfo(details%,ni,STR$ns) 8130ENDPROC 8140DEFPROCapplication_redraw 8150!block=card% 8160SYS"Wimp_GetWindowInfo",,block 8170workx%=block!4-block!20 8180worky%=block!16-block!24 8190PROCdrawcard(workx%,worky%) 8200PROCcardsprite(workx%,worky%) 8210ENDPROC 8220DEFPROCcardsprite(cxco,cyco) 8230 IF sfile$<>"" THEN 8240SYS &2E,256+40,spr%,curspr$ TO A,B,C,w%,h%,D,mode% 8250SYS"OS_ReadModeVariable",mode%,3 TOc,cl,cols 8260SYS"OS_ReadModeVariable",mode%,4 TO,,xeig% 8270SYS"OS_ReadModeVariable",mode%,5 TO,,yeig% 8280wi%=w%<<xeig% 8290he%=h%<<yeig% 8300IF !(4+spr%)>0 THEN 8310IF !(48+spr%)>44 THEN 8320FOR col%=0 TO 15 8330palette%!(col%*4)=!(60+col%*8+spr%) 8340NEXT col% 8350SYS "ColourTrans_SelectTable",!(56+spr%),palette%,-1,-1,scalblok% 8360ELSE 8370SYS "ColourTrans_SelectTable",!(56+spr%),defpal%,-1,-1,scalblok% 8380ENDIF 8390ENDIF 8400xoff=0:yoff=0 8410IF h%>w% shear=72 ELSE shear=82 8420SYS"OS_ReadModeVariable",MODE,11 TO,,C 8430SYS"OS_ReadModeVariable",MODE,12 TO,,B 8440C+=1:B+=1 8450IF B/C=.75 AND FNvga(mode%) THEN hscale=1 8460IF B/C<>.8 AND B/C<>.75 AND FNvga(mode%) hscale=2 8470IF B/C=.8 OR B/C=.75 THEN modsc=1 ELSE modsc=2 8480Shear=FNcheckflag(details%,29,21) 8490CASE Shear OF 8500WHEN FALSE 8510IF B/C=.8 AND NOT FNvga(mode%) THEN hscale=1 8520IF B/C=.75 AND NOT FNvga(mode%) THEN hscale=1 8530IF B/C<>.8 AND B/C<>.75 AND NOT FNvga(mode%) hscale=2 8540IF w%>82 AND h%>72 AND h%<w% THEN SCw=w%/shear:SCh=w%/(shear/hscale) 8550IF w%>82 AND h%>72 AND h%>w% THEN SCw=h%/shear:SCh=h%/(shear/hscale) 8560IF w%>82 AND h%<72 THEN SCw=w%/shear:SCh=1 8570IF force THEN 8580IF w%<82 AND h%<72 AND (h%*2)<w% THEN SCw=w%/shear:SCh=w%/(shear/hscale):SCw=SCw*1.10:SCh=SCh*1.10:PRINT TAB(0,0) 8590IF w%<82 AND h%<72 AND (h%*2)>w% THEN SCw=h%/shear:SCh=h%/(shear/hscale):SCw=SCw*1.1:SCh=SCh*1.1 8600IF w%<82 AND h%<72 AND (h%*2)=w% THEN SCw=w%/shear:SCh=h%/(shear/2):SCw=SCw*1.1:SCh=SCh*1.1:PRINT TAB(0,0)SCh,SCw 8610ELSE 8620IF w%<82 AND h%<72 THEN SCw=1:SCh=modsc 8630ENDIF 8640CASE centred OF 8650 WHEN TRUE 8660IF FNvga(mode%) AND NOT force THEN yoff=(72-h%) 8670IF FNvga(mode%) AND force THEN yoff=(72-((1/SCh)*h%)) 8680IF NOT FNvga(mode%) AND force yoff=(72-((1/SCh)*h%))/2 8690IF NOT FNvga(mode%) AND NOT force THEN yoff=(72-(2*h%)) 8700xoff=(82-((1/SCw)*w%)) 8710IF force AND h%<w% AND FNvga(mode%) THEN xoff=0 8720IF force AND h%>w% AND FNvga(mode%) THEN yoff=0 8730IF force AND (h%*2)<w% AND NOT FNvga(mode%) THEN xoff=0 8740IF force AND (h%*2)>w% AND NOT FNvga(mode%) THEN yoff=0 8750 ENDCASE 8760WHEN TRUE 8770IF B/C=.8 AND NOT FNvga(mode%) THEN hscale=2 8780IF B/C=.75 AND NOT FNvga(mode%) THEN hscale=2 8790IF B/C<>.8 AND B/C<>.75 AND NOT FNvga(mode%) hscale=4 8800SCw=w%/82:SCh=h%/(72/hscale) 8810ENDCASE 8820!scal%=wi%:scal%!4=he%:scal%!8=INT((w%/((1/SCw)/2))+0.5):scal%!12=INT((h%/((1/SCh)/2))+0.5) 8830SYS 46,&134,spr%,curspr$,cxco+390+xoff,cyco-300+yoff,8,scal%,scalblok% 8840ENDIF 8850ENDPROC 8860DEFFNwidth(text$,font$,xs,ys) 8870SYS "Font_FindFont",,font$,xs*16,ys*16 TO font% 8880SYS "Font_SetFont",font% 8890SYS "Font_StringWidth",,text$,228000,228000,31,LEN(text$) TO ,,x%,y% 8900SYS "Font_ConverttoOS",,x%,y% TO ,x,y 8910=x 8920DEFPROCmakefile 8930SYS"Hourglass_On" 8940LOCAL ERROR 8950ON ERROR LOCAL IF ERR=71622:PROCquery("Disc Full"):full=TRUE:CLOSE#c%:OSCLI("Delete "+save$):RESTORE ERROR:ENDPROC:ELSE RESTORE ERROR:PROCerror(REPORT$+" : at line "+STR$ERL):CLOSE#c%:ENDPROC 8960IF FNcheckflag(save%,3,21) noofcards=1 ELSE noofcards=8 8970big%=&7FFFFFFF 8980EF=0.552256944 8990i%=0:c%=0 9000inch=&B400 9010point=640 9020cm=18140 9030black%=0 9040white%=&FFFFFF00 9050none%=-1 9060name$=$FNinfo(details%,0):fontname$=$FNinfo(details%,3) 9070sizename=VAL($FNinfo(details%,31)):hname=VAL($FNinfo(details%,13)) 9080extra$=$FNinfo(details%,5):fontextra$=$FNinfo(details%,2) 9090sizeextra=VAL($FNinfo(details%,32)):hextra=VAL($FNinfo(details%,14)) 9100ad1$=$FNinfo(details%,6):fontad1$=$FNinfo(details%,19) 9110sizead1=VAL($FNinfo(details%,33)):had1=VAL($FNinfo(details%,17)) 9120ad2$=$FNinfo(details%,7) 9130ad3$=$FNinfo(details%,18) 9140ad4$=$FNinfo(details%,10) 9150tel$=$FNinfo(details%,21):fonttel$=$FNinfo(details%,4) 9160sizetel=VAL($FNinfo(details%,34)):htel=VAL($FNinfo(details%,15)) 9170PROCdrawfile_start(save$) 9180PROCputw(0) 9190PROChead_here(FALSE) 9200PROCputs(CHR$(1)+fontname$) 9210PROCputs(CHR$(2)+fontextra$) 9220PROCputs(CHR$(3)+fontad1$) 9230PROCputs(CHR$(4)+fonttel$) 9240PROCalign 9250PROChead_now 9260RESTORE 9270IF noofcards=8 THEN PROCgroup_start 9280FOR carddraw=1 TO noofcards*2 STEP 2 9290ax=cardpos(carddraw):by=cardpos(carddraw+1) 9300xpos=ax:ypos=by 9310PROCgroup_start 9320PROCpath_start(0,0,1*point,&0,hexc(0)) 9330PROCpath_draw(0,152) 9340PROCpath_draw(228,152) 9350PROCpath_draw(228,0) 9360PROCpath_draw(0,0) 9370PROCpath_close 9380PROCpath_end 9390xco=(2/5)*FNwidth(name$,fontname$,sizename,hname) 9400IF x/(2/5)=0 AND name$<>"" THEN PROCmess("The name text is too long or the font is too large"):PROCdrawfile_end:OSCLI"Delete "+save$:ENDPROC 9410xco=228-xco 9420xco=xco/2 9430PROCgroup_start 9440PROCtext(xco,126,name$,sizename*&280,hname*&280,1,hexc(1),hexc(1)) 9450start=xco-2:finish=xco+((2/5)*x)+2 9460PROCpath_start(start,123,1.5*&280,hexc(1),&FFFFFFFF) 9470PROCpath_draw(finish,123) 9480PROCpath_close 9490PROCpath_end 9500PROCgroup_end 9510PROCgroup_start 9520x=FNwidth(ad1$,fontad1$,sizead1,had1) 9530IF ad1$>"" AND x=0 OR x>560 THEN PROCmess("The 1st address text is too long or the font is too large"):PROCdrawfile_end:OSCLI"Delete "+save$:ENDPROC 9540PROCtext(13,81,ad1$,sizead1*&280,had1*&280,3,hexc(3),hexc(3)) 9550x=FNwidth(ad2$,fontad1$,sizead1,had1) 9560IF ad2$>"" AND x=0 OR x>560 THEN PROCmess("The 2nd address text is too long or the font is too large"):PROCdrawfile_end:OSCLI"Delete "+save$:ENDPROC 9570PROCtext(13,65,ad2$,sizead1*&280,had1*&280,3,hexc(3),hexc(3)) 9580x=FNwidth(ad3$,fontad1$,sizead1,had1) 9590IF ad3$>"" AND x=0 OR x>560 THEN PROCmess("The 3rd address text is too long or the font is too large"):PROCdrawfile_end:OSCLI"Delete "+save$:ENDPROC 9600PROCtext(13,49,ad3$,sizead1*&280,had1*&280,3,hexc(3),hexc(3)) 9610x=FNwidth(ad4$,fontad1$,sizead1,had1) 9620IF ad4$>"" AND x=0 OR x>560 THEN PROCmess("The 4th address text is too long or the font is too large"):PROCdrawfile_end:OSCLI"Delete "+save$:ENDPROC 9630PROCtext(13,33,ad4$,sizead1*&280,had1*&280,3,hexc(3),hexc(3)) 9640PROCgroup_end 9650xco=(2/5)*FNwidth(extra$,fontextra$,sizeextra,hextra) 9660IF x/(2/5)=0 AND extra$<>"" THEN PROCmess("The trade text is too long or the font is too large"):PROCdrawfile_end:OSCLI"Delete "+save$:ENDPROC 9670xco=228-xco:xco=xco/2: 9680PROCtext(xco,102,extra$,sizeextra*&280,hextra*&280,2,hexc(2),hexc(2)) 9690xco=(2/5)*FNwidth("Tel :- "+tel$,fonttel$,sizetel,htel) 9700IF x/(2/5)=0 AND tel$<>"" THEN PROCmess("The telephone text is too long or the font is too large"):PROCdrawfile_end:OSCLI"Delete "+save$:ENDPROC 9710xco=218-xco 9720PROCtext(xco,10,"Tel :- "+tel$,sizetel*&280,htel*&280,4,hexc(4),hexc(4)) 9730IF curspr$<>"" THEN PROCsprite 9740PROCgroup_end 9750IF noofcards=8 SYS"Hourglass_Percentage",(carddraw/(noofcards*2))*100 9760NEXT 9770PROCdrawfile_end 9780SYS"Hourglass_Smash" 9790RESTORE ERROR 9800ENDPROC 9810DEF PROCdrawfile_start(D$) 9820c%=OPENOUT(D$) 9830IF c%=0 THEN ERROR 1234,"Can't open output file" 9840drawfile$=D$ 9850PROCputw(&77617244):PROCputw(201):PROCputw(0) 9860PROCputs12("!Card") 9870lev%=-1 9880PROChead_here(TRUE) 9890ENDPROC 9900DEF PROCputw(A%) 9910BPUT#c%,A% AND &FF 9920BPUT#c%,(A%>>>8) AND &FF 9930BPUT#c%,(A%>>>16) AND &FF 9940BPUT#c%,(A%>>>24) AND &FF 9950ENDPROC 9960DEF PROCputs12(A$) 9970LOCAL A% 9980A$=A$+STRING$(12," ") 9990FOR A%=1 TO 12:BPUT#c%,ASC(MID$(A$,A%,1)):NEXT 10000ENDPROC 10010: 10020DEF PROCputs(A$) 10030LOCAL A% 10040FOR A%=1 TO LEN(A$):BPUT#c%,ASC(MID$(A$,A%,1)):NEXT 10050BPUT#c%,0 10060ENDPROC 10070: 10080DEF PROChead_here(box%) 10090IF lev%=maxlev% THEN ERROR 1234,"Too many nested groups. Edit program to increase limit." 10100lev%+=1 10110box%(lev%)=box% 10120start%(lev%)=PTR#c% 10130IF lev%>0 THEN PROCputw(0) 10140IF box% THEN 10150 PROCputw(0):PROCputw(0) 10160 PROCputw(0):PROCputw(0) 10170ENDIF 10180l%(lev%)=big%:b%(lev%)=big% 10190r%(lev%)=-big%:t%(lev%)=-big% 10200ENDPROC 10210: 10220DEF PROChead_now 10230LOCAL end% 10240end%=PTR#c% 10250PTR#c%=start%(lev%) 10260IF lev%>0 THEN PROCputw(end%-start%(lev%)+4) 10270IF box%(lev%) THEN 10280 PROCputw(l%(lev%)):PROCputw(b%(lev%)) 10290 PROCputw(r%(lev%)+1):PROCputw(t%(lev%)+1) 10300ENDIF 10310IF lev%>0 THEN 10320 lev%-=1 10330 IF l%(lev%+1)<l%(lev%) THEN l%(lev%)=l%(lev%+1) 10340 IF b%(lev%+1)<b%(lev%) THEN b%(lev%)=b%(lev%+1) 10350 IF r%(lev%+1)>r%(lev%) THEN r%(lev%)=r%(lev%+1) 10360 IF t%(lev%+1)>t%(lev%) THEN t%(lev%)=t%(lev%+1) 10370ENDIF 10380PTR#c%=end% 10390ENDPROC 10400DEF PROCalign 10410WHILE PTR#c% AND 3:BPUT#c%,0:ENDWHILE 10420ENDPROC 10430DEF PROCgroup_start 10440REM groups cannot be nested in this version 10450PROCputw(6) 10460PROChead_here(TRUE) 10470PROCputs12("group") 10480ENDPROC 10490: 10500DEF PROCgroup_end 10510PROChead_now 10520ENDPROC 10530DEF PROCtext(x%,y%,text$,xsize%,ysize%,font%,col%,bcol%) 10540x%=(x%+xpos)*point:y%=(y%+ypos)*point 10550PROCputw(1) 10560PROChead_here(FALSE) 10570PROCputxy(x%,y%-ysize%*.5) 10580PROCputxy(x%+LEN(text$)*xsize%,y%+ysize%) 10590PROCputw(col%) 10600PROCputw(bcol%) 10610PROCputw(font%) 10620PROCputw(xsize%):PROCputw(ysize%) 10630PROCputxy(x%,y%) 10640PROCputs(text$):PROCalign 10650PROChead_now 10660ENDPROC 10670DEF PROCputxy(x%,y%) 10680PROCputw(x%):PROCputw(y%) 10690IF x%<l%(lev%) THEN l%(lev%)=x% 10700IF y%<b%(lev%) THEN b%(lev%)=y% 10710IF x%>r%(lev%) THEN r%(lev%)=x% 10720IF y%>t%(lev%) THEN t%(lev%)=y% 10730ENDPROC 10740DEF PROCpath_start(x%,y%,width%,lcol%,fcol%) 10750PROCputw(2) 10760PROChead_here(TRUE) 10770PROCputw(fcol%):REM fill 10780PROCputw(lcol%):REM colour 10790PROCputw(width%):REM width 10800PROCputw(0):REM path style 10810PROCpath_move(x%,y%) 10820ENDPROC 10830: 10840DEF PROCpath_move(x%,y%) 10850x%=(x%+xpos)*point:y%=(y%+ypos)*point 10860PROCputw(2) 10870PROCputxy(x%,y%) 10880ENDPROC 10890: 10900DEF PROCpath_draw(xx%,yy%) 10910xx%=(xx%+xpos)*point:yy%=(yy%+ypos)*point 10920PROCputw(8) 10930PROCputxy(xx%,yy%) 10940ENDPROC 10950DEF PROCpath_close 10960PROCputw(5) 10970ENDPROC 10980: 10990DEF PROCpath_end 11000PROCputw(0) 11010PROChead_now 11020ENDPROC 11030DEF PROCdrawfile_end 11040REM draw unfinished IF lev%>0 THEN 11050PROChead_now 11060CLOSE#c%:c%=0 11070OSCLI("SetType "+drawfile$+" AFF") 11080ENDPROC 11090DEFPROCsprite 11100SYS 46,&118,spr%,curspr$ TO ,,sptr% 11110SYS &2E,256+40,spr%,curspr$ TO A,B,C,w%,h%,D,mode% 11120IF h%>w% shear=72 ELSE shear=82 11130IF FNvga(mode%) THEN hscale=1:ELSE hscale=2 11140Shear=FNcheckflag(details%,29,21) 11150xoff=0:yoff=0 11160CASE Shear OF 11170WHEN FALSE 11180IF w%>82 AND h%>72 AND h%<w% THEN SCw=82/w%:SCh=SCw 11190IF w%>82 AND h%>72 AND h%>w% THEN SCh=82/h%:SCw=SCh 11200IF w%>82 AND h%<72 THEN SCw=82/w%:SCh=SCw 11210IF w%<82 AND h%>72 THEN SCh=82/h%:SCw=SCh 11220IF force THEN 11230IF w%<82 AND h%<72 AND h%<w% THEN SCw=82/w%:SCh=SCw 11240IF w%<82 AND h%<72 AND h%>w% THEN SCh=72/h%:SCw=SCh 11250ELSE 11260IF w%<82 AND h%<72 THEN SCw=1:SCh=1 11270ENDIF 11280CASE centred OF 11290 WHEN TRUE 11300IF FNvga(mode%) AND NOT force THEN yoff=(72-h%) 11310IF FNvga(mode%) AND force THEN yoff=(72-((1/SCh)*h%)) 11320IF NOT FNvga(mode%) AND force yoff=(72-((1/SCh)*h%)) 11330IF NOT FNvga(mode%) AND NOT force THEN yoff=(72-(2*h%)) 11340xoff=(82-((1/SCw)*w%)) 11350IF force AND h%<w% AND FNvga(mode%) THEN xoff=0 11360IF force AND h%>w% AND FNvga(mode%) THEN yoff=0 11370IF force AND (h%*2)<w% AND NOT FNvga(mode%) THEN xoff=0 11380IF force AND (h%*2)>w% AND NOT FNvga(mode%) THEN yoff=0 11390 ENDCASE 11400WHEN TRUE 11410SCw=82/w%:SCh=72/h%:hscale=1 11420ENDCASE 11430x%=155:y%=33 11440x%=(x%+xpos+(xoff/5))*point:y%=(y%+ypos+(yoff/5))*point 11450width%=((w%*SCw)/1.25)*point:height%=((h%*SCh)*hscale/1.25)*point 11460PROCputw(5) 11470PROChead_here(FALSE) 11480PROCputxy(x%,y%) 11490PROCputxy(x%+width%+1,y%+height%+1) 11500SYS"OS_GBPB",&02,c%,sptr%,!sptr% 11510PROCalign 11520PROChead_now 11530ENDPROC 11540DEFPROCclose(!block) 11550SYS"Wimp_CloseWindow",,block 11560ENDPROC 11570DEFFNcheckit(hnd%,ic%) 11580!icond=hnd%:icond!4=ic% 11590SYS"Wimp_GetIconState",,icond 11600flags%=icond!24 11610=flags%AND&F0000 11620DEFPROCslabicn(handle,icn) 11630icond!12=handle 11640icond!16=2 11650SYS "Wimp_BorderIcon",,icond 11660icond!8=0 11670SYS "Wimp_BorderIcon",,icond 11680ENDPROC 11690DEF PROCslabin(handle) 11700!icond=handle 11710SYS "Wimp_GetPointerInfo",,icond 11720SYS "Wimp_BorderIcon",,icond 11730ENDPROC 11740DEF PROCslabout(handle) 11750!icond=handle 11760SYS "Wimp_GetPointerInfo",,icond 11770icond!8 = 0 11780SYS "Wimp_BorderIcon",,icond 11790ENDPROC 11800DEFPROCselectcol(colno) 11810hex=winpal(colno-14) 11820RED=(hex>>8)AND&FF 11830GREEN=(hex>>16)AND&FF 11840BLUE=(hex>>24)AND&FF 11850!block=colour% 11860SYS"Wimp_GetWindowInfo",,block 11870workx%=block!4-block!20 11880worky%=block!16-block!24 11890SYS "ColourTrans_SetGCOL",hex,,,&100,0 11900RECTANGLE FILL workx%+234,worky%-247,175,48 11910 SYS "Wimp_SetColour",1,1 11920 RECTANGLE FILL workx%+270,worky%-170,344,147 11930 SYS "ColourTrans_SetGCOL",&0000FF00,,,&100,0 11940 RECTANGLE FILL workx%+271,worky%-55,(RED/255)*344,32 11950 SYS "ColourTrans_SetGCOL",&00FF0000,,,&100,0 11960 RECTANGLE FILL workx%+271,worky%-111,(GREEN/255)*344,32 11970 SYS "ColourTrans_SetGCOL",&FF000000,,,&100,0 11980 RECTANGLE FILL workx%+271,worky%-167,(BLUE/255)*344,32 11990 SYS "ColourTrans_SetGCOL",0,,,&100,0:RECTANGLE workx%+233,worky%-248,176,49 12000 RECTANGLE workx%+270,worky%-58,344,34 12010 RECTANGLE workx%+270,worky%-114,344,34 12020 RECTANGLE workx%+270,worky%-170,344,34 12030geecol=hex 12040 PROCinfo(colour%,3,STR$RED) 12050 PROCinfo(colour%,7,STR$GREEN) 12060 PROCinfo(colour%,11,STR$BLUE) 12070ENDPROC 12080DEFPROCapplication_redraw2 12090RED=(hex>>8)AND&FF 12100GREEN=(hex>>16)AND&FF 12110BLUE=(hex>>24)AND&FF 12120workx%=block!4-block!20 12130worky%=block!16-block!24 12140SYS "ColourTrans_SetGCOL",hex,,,&100,0 12150RECTANGLE FILL workx%+234,worky%-247,175,48 12160SYS "Wimp_SetColour",1,1 12170 RECTANGLE FILL workx%+270,worky%-170,344,147 12180 SYS "ColourTrans_SetGCOL",&0000FF00,,,&100,0 12190 RECTANGLE FILL workx%+271,worky%-55,(RED/255)*344,32 12200 SYS "ColourTrans_SetGCOL",&00FF0000,,,&100,0 12210 RECTANGLE FILL workx%+271,worky%-111,(GREEN/255)*344,32 12220 SYS "ColourTrans_SetGCOL",&FF000000,,,&100,0 12230 RECTANGLE FILL workx%+271,worky%-167,(BLUE/255)*344,32 12240SYS "ColourTrans_SetGCOL",0,,,&100,0:RECTANGLE workx%+233,worky%-248,176,49 12250RECTANGLE workx%+270,worky%-58,344,34 12260RECTANGLE workx%+270,worky%-114,344,34 12270RECTANGLE workx%+270,worky%-170,344,34 12280geecol=hex 12290ENDPROC 12300 DEFPROCdragcol 12310 !block=colour% 12320SYS"Wimp_GetWindowInfo",,block 12330workx%=block!4-block!20 12340worky%=block!16-block!24 12350 MOUSE r,s,t 12360 IF r>workx%+268 AND r<workx%+268+348 AND s>worky%-58 AND s<worky%-(58-35) THEN 12370 MOUSE RECTANGLE workx%+270,worky%-57,344,30 12380nred=INT(((r-(workx%+270))/344)*255) 12390IF nred=-1 nred=0 12400PROCinfo(colour%,3,STR$nred) 12410RED=nred 12420SYS "Wimp_SetColour",1,1 12430RECTANGLE FILL workx%+272+(RED/255)*344,worky%-55,342-(RED/255)*344,30 12440SYS "ColourTrans_SetGCOL",&0000FF00,,,&100,0 12450RECTANGLE FILL workx%+270,worky%-55,(RED/255)*344,30 12460SYS "ColourTrans_SetGCOL",0,,,&100,0 12470RECTANGLE workx%+270,worky%-58,344,34 12480hex=(BLUE<<24)+(GREEN<<16)+(RED<<8) 12490SYS "ColourTrans_SetGCOL",hex,,,&100,0 12500RECTANGLE FILL workx%+234,worky%-247,175,48 12510SYS "ColourTrans_SetGCOL",0,,,&100,0:RECTANGLE workx%+233,worky%-248,176,49 12520MOUSE r,s,t:IF t=1 OR t=4 PROCdragcol 12530PROCMode 12540MOUSE RECTANGLE 0,0,xmax-1,ymax-1 12550 ENDPROC 12560ENDIF 12570IF r>workx%+268 AND r<workx%+268+348 AND s>worky%-114 AND s<worky%-(114-35) THEN 12580MOUSE RECTANGLE workx%+270,worky%-112,344,30 12590ngreen=INT(((r-(workx%+270))/344)*255) 12600IF ngreen=-1 ngreen=0 12610PROCinfo(colour%,7,STR$ngreen) 12620GREEN=ngreen 12630SYS "Wimp_SetColour",1,1 12640RECTANGLE FILL workx%+272+(GREEN/255)*344,worky%-111,342-(GREEN/255)*344,30 12650SYS "ColourTrans_SetGCOL",&00FF0000,,,&100,0 12660RECTANGLE FILL workx%+271,worky%-111,(GREEN/255)*344,30 12670SYS "ColourTrans_SetGCOL",0,,,&100,0 12680RECTANGLE workx%+270,worky%-114,344,34 12690hex=(BLUE<<24)+(GREEN<<16)+(RED<<8) 12700SYS "ColourTrans_SetGCOL",hex,,,&100,0 12710RECTANGLE FILL workx%+234,worky%-247,175,48 12720SYS "ColourTrans_SetGCOL",0,,,&100,0:RECTANGLE workx%+233,worky%-248,176,49 12730MOUSE r,s,t:IF t=1 OR t=4 PROCdragcol 12740PROCMode 12750MOUSE RECTANGLE 0,0,xmax-1,ymax-1 12760ENDPROC 12770ENDIF 12780IF r>workx%+268 AND r<workx%+268+348 AND s>worky%-170 AND s<worky%-(170-35) THEN 12790MOUSE RECTANGLE workx%+270,worky%-168,344,30 12800nblue=INT(((r-(workx%+270))/344)*255) 12810IF nblue=-1 nblue=0 12820BLUE=nblue 12830PROCinfo(colour%,11,STR$nblue) 12840SYS "Wimp_SetColour",1,1 12850RECTANGLE FILL workx%+272+(BLUE/255)*344,worky%-167,342-((BLUE/255)*344),30 12860SYS "ColourTrans_SetGCOL",&FF000000,,,&100,0 12870RECTANGLE FILL workx%+270,worky%-167,(BLUE/255)*344,30 12880SYS "ColourTrans_SetGCOL",0,,,&100,0 12890RECTANGLE workx%+270,worky%-170,344,34 12900hex=(BLUE<<24)+(GREEN<<16)+(RED<<8) 12910SYS "ColourTrans_SetGCOL",hex,,,&100,0 12920RECTANGLE FILL workx%+234,worky%-247,175,48 12930SYS "ColourTrans_SetGCOL",0,,,&100,0:RECTANGLE workx%+233,worky%-248,176,49 12940REM Blue 12950MOUSE r,s,t:IF t=1 OR t=4 PROCdragcol 12960PROCMode 12970MOUSE RECTANGLE 0,0,xmax-1,ymax-1 12980ENDPROC 12990ENDIF 13000ENDPROC 13010DEFPROCapp_re3 13020 workx%=block!4-block!20 13030 worky%=block!16-block!24 13040SYS "ColourTrans_SetGCOL",hexc(1),,,&100,0 13050RECTANGLE FILL workx%+1122,worky%-58,50,42 13060SYS "ColourTrans_SetGCOL",hexc(2),,,&100,0 13070RECTANGLE FILL workx%+1122,worky%-116,50,42 13080SYS "ColourTrans_SetGCOL",hexc(3),,,&100,0 13090RECTANGLE FILL workx%+1122,worky%-180,50,42 13100SYS "ColourTrans_SetGCOL",hexc(4),,,&100,0 13110RECTANGLE FILL workx%+1122,worky%-430,50,42 13120IF curspr$<>"" THEN 13130SYS "ColourTrans_SetGCOL",hexc(0),,,&100,0 13140RECTANGLE FILL workx%+400,worky%-352,163,144 13150SYS &2E,256+40,spr%,curspr$ TO A,B,C,w%,h%,D,mode% 13160SYS"OS_ReadModeVariable",mode%,3 TOc,cl,cols 13170SYS"OS_ReadModeVariable",mode%,4 TO,,xeig% 13180SYS"OS_ReadModeVariable",mode%,5 TO,,yeig% 13190wi%=w%<<xeig% 13200he%=h%<<yeig% 13210IF !(4+spr%)>0 THEN 13220IF !(48+spr%)>44 THEN 13230FOR col%=0 TO 15 13240palette%!(col%*4)=!(60+col%*8+spr%) 13250NEXT col% 13260SYS "ColourTrans_SelectTable",!(56+spr%),palette%,-1,-1,scalblok% 13270ELSE 13280SYS "ColourTrans_SelectTable",!(56+spr%),defpal%,-1,-1,scalblok% 13290ENDIF 13300ENDIF 13310xoff=0:yoff=0 13320IF FNvga(mode%) THEN 13330IF h%>w% shear=72 ELSE shear=82 13340ELSE 13350IF (h%*2)>w% shear=36 ELSE shear=82 13360ENDIF 13370SYS"OS_ReadModeVariable",MODE,11 TO,,C 13380SYS"OS_ReadModeVariable",MODE,12 TO,,B 13390C+=1:B+=1 13400IF B/C=.8 AND FNvga(mode%) THEN hscale=1: REM 1 means VGA, square pixels 13410IF B/C=.75 AND FNvga(mode%) THEN hscale=1 13420IF B/C<>.8 AND B/C<>.75 AND FNvga(mode%) hscale=2 13430IF B/C=.8 OR B/C=.75 THEN modsc=1 ELSE modsc=2 13440Shear=FNcheckflag(details%,29,21) 13450CASE Shear OF 13460WHEN FALSE 13470IF B/C=.8 AND NOT FNvga(mode%) THEN hscale=1 13480IF B/C=.75 AND NOT FNvga(mode%) THEN hscale=1 13490IF B/C<>.8 AND B/C<>.75 AND NOT FNvga(mode%) hscale=2 13500IF w%>82 AND h%>72 AND h%<w% THEN SCw=w%/shear:SCh=w%/(shear/hscale) 13510IF w%>82 AND h%>72 AND h%>w% THEN SCw=h%/shear:SCh=h%/(shear/hscale) 13520IF w%>82 AND h%<72 THEN SCw=w%/shear:SCh=1 13530IF w%<82 AND h%>72 THEN SCw=1:SCh=h%/(shear/hscale) 13540IF force THEN 13550IF w%<82 AND h%<72 AND h%<w% AND FNvga(mode%) THEN SCw=w%/shear:SCh=w%/(shear/hscale) 13560IF w%<82 AND h%<72 AND h%>w% AND FNvga(mode%) THEN SCw=h%/shear:SCh=h%/(shear/hscale) 13570IF w%<82 AND h%<36 AND (h%*2)<w% AND NOT FNvga(mode%) THEN SCw=w%/shear:SCh=w%/(shear/hscale) 13580IF w%<82 AND h%<36 AND (h%*2)>w% AND NOT FNvga(mode%) THEN SCw=h%/shear:SCh=h%/(shear/hscale) 13590ELSE 13600IF w%<82 AND h%<72 THEN SCw=1:SCh=modsc 13610ENDIF 13620CASE centred OF 13630 WHEN TRUE 13640IF FNvga(mode%) AND NOT force THEN yoff=(72-h%) 13650IF FNvga(mode%) AND force THEN yoff=(72-((1/SCh)*h%)) 13660IF NOT FNvga(mode%) AND force yoff=(72-((1/SCh)*h%))/2 13670IF NOT FNvga(mode%) AND NOT force THEN yoff=(72-(2*h%)) 13680xoff=(82-((1/SCw)*w%)) 13690IF force AND h%<w% AND FNvga(mode%) THEN xoff=0 13700IF force AND h%>w% AND FNvga(mode%) THEN yoff=0 13710IF force AND (h%*2)<w% AND NOT FNvga(mode%) THEN xoff=0 13720IF force AND (h%*2)>w% AND NOT FNvga(mode%) THEN yoff=0 13730 ENDCASE 13740WHEN TRUE 13750IF B/C=.8 AND NOT FNvga(mode%) THEN hscale=2 13760IF B/C=.75 AND NOT FNvga(mode%) THEN hscale=2 13770IF B/C<>.8 AND B/C<>.75 AND NOT FNvga(mode%) hscale=4 13780SCw=w%/82:SCh=h%/(72/hscale) 13790ENDCASE 13800!scal%=wi%:scal%!4=he%:scal%!8=INT((w%/((1/SCw)/2))+0.5):scal%!12=INT((h%/((1/SCh)/2))+0.5) 13810SYS 46,&134,spr%,curspr$,workx%+400+xoff,worky%-352+yoff,8,scal%,scalblok% 13820ENDIF 13830ENDPROC 13840DEFPROCaddcol 13850hexc(io)=hex 13860PROCclose(colour%) 13870 !block=details% 13880 SYS"Wimp_GetWindowInfo",,block 13890 workx%=block!4-block!20 13900 worky%=block!16-block!24 13910 CASE io OF 13920 WHEN 1: 13930 SYS"Wimp_ForceRedraw",-1,workx%+1120,worky%-58,workx%+1180,worky%-10 13940 PROCredraw(card%) 13950 WHEN 2: 13960 SYS"Wimp_ForceRedraw",-1,workx%+1120,worky%-120,workx%+1180,worky%-72 13970 PROCredraw(card%) 13980 WHEN 3: 13990 SYS"Wimp_ForceRedraw",-1,workx%+1120,worky%-182,workx%+1180,worky%-134 14000 PROCredraw(card%) 14010 WHEN 4: 14020 SYS"Wimp_ForceRedraw",-1,workx%+1120,worky%-430,workx%+1180,worky%-382 14030 PROCredraw(card%) 14040 WHEN 0: 14050 SYS"Wimp_ForceRedraw",-1,workx%+400,worky%-352,workx%+564,worky%-210 14060 PROCredraw(card%) 14070 ENDCASE 14080ENDPROC 14090DEFPROCdrawsprite 14100IF curspr$="" ENDPROC 14110!block=details% 14120SYS"Wimp_GetWindowInfo",,block 14130workx%=block!4-block!20 14140worky%=block!16-block!24 14150SYS"Wimp_ForceRedraw",-1,workx%+400,worky%-352,workx%+564,worky%-208 14160!block=card% 14170SYS"Wimp_GetWindowState",,block 14180open=block!32 AND (1<<16) 14190IF open<>0 THEN 14200!block=card% 14210SYS"Wimp_GetWindowInfo",,block 14220workx%=block!4-block!20 14230worky%=block!16-block!24 14240SYS"Wimp_ForceRedraw",-1,workx%+390,worky%-300,workx%+564,worky%-156 14250ENDIF 14260ENDPROC 14270DEFFNclaim(amount%) 14280LOCAL mem% 14290SYS"Wimp_SlotSize",-1,-1 TO Current,,mem% 14300SYS"Wimp_SlotSize",progneed+amount%,1 TO mem% 14310ptr%=HIMEM 14320amount%=mem%-ptr% 14330=ptr% 14340DEFFNvga(mod) 14350SYS"OS_ReadModeVariable",mod,11 TO,,c 14360SYS"OS_ReadModeVariable",mod,12 TO,,b 14370c+=1:b+=1 14380CASE b/c OF 14390WHEN 0.8:g=TRUE 14400WHEN .75:g=TRUE 14410OTHERWISE: g=FALSE 14420ENDCASE 14430=g 14440DEFPROCareyousure 14450IF NOT savef THEN 14460PROCopenwin(quit%) 14470VDU 7 14480PROCinfo(quit%,1,"Your file has been modified.") 14490!block=130:block!4=131:block!8=-1:SYS"OS_ReadVduVariables",block,block+128 14500SYS"OS_ReadModeVariable",MODE,4 TO ,,x 14510SYS"OS_ReadModeVariable",MODE,5 TO ,,y 14520MOUSE RECTANGLE 0,0,(((block!128)+1)*2^x)-1,((block!132)+1)*2^y 14530ENDIF 14540IF savef SYSreinter,mytask%:SYS"Wimp_CloseDown":END 14550ENDPROC 14560DEFPROCquery(qu$) 14570PROCopenwin(query%) 14580VDU 7 14590!block=query% 14600SYS"Wimp_GetWindowInfo",,block 14610workx%=block!12-block!4 14620worky%=block!16-block!8 14630MOUSE RECTANGLE block!4,block!8,workx%,worky% 14640PROCinfo(query%,1,qu$) 14650ENDPROC 14660DEFPROCendq 14670PROCclose(query%) 14680!block=130:block!4=131:block!8=-1:SYS"OS_ReadVduVariables",block,block+128 14690SYS"OS_ReadModeVariable",MODE,4 TO ,,x 14700SYS"OS_ReadModeVariable",MODE,5 TO ,,y 14710MOUSE RECTANGLE 0,0,(((block!128)+1)*2^x)-1,((block!132)+1)*2^y 14720ENDPROC 14730DEFPROCtitle(handle,new$) 14740!icond=handle 14750SYS"Wimp_GetWindowInfo",,icond 14760title$=$(icond!76) 14770IF new$="" THEN 14780IF RIGHT$(title$,LEN(title$)-LEN(title$)+1)<>"*" THEN new$=title$+" *":ELSE ENDPROC 14790ENDIF 14800_p% = !(icond+76):$_p%=new$:SYS"Wimp_ForceRedraw",-1,icond!4,(icond!16),icond!12,(icond!16)+36 14810ENDPROC 14820DEFPROCprint 14830noofpages=VAL($FNinfo(print%,4)) 14840IF $FNinfo(print%,0)="Not Present" THEN PROCquery("Can not print, no printer driver present."):noprint=TRUE:ENDPROC 14850IF FNcheckflag(print%,6,21) THEN copies$="single card.":fullsheet=0:ELSE copies$="full sheet.":fullsheet=1 14860SYS "ColourTrans_SetGCOL",&DDDDDD00,,,&100,0 14870RECTANGLE FILL 288,466,738,194 14880SYS "ColourTrans_SetGCOL",0,,,&100,0 14890RECTANGLE 286,464,740,196 14900SYS"Wimp_CreateMenu",,-1 14910VDU 5 14920MOVE 410,630 14930PRINT "Printing in progress..." 14940MOVE 380,580 14950PRINT "Prining ";noofpages;" copies, ";copies$ 14960MOVE 400,530 14970PRINT "Press Escape to cancel" 14980VDU 4 14990printing=TRUE 15000fh%=-1 15010LOCAL ERROR 15020ON ERROR LOCAL:RESTORE ERROR:PROCprinterr:ENDPROC 15030SYS"Hourglass_On" 15040fh%=OPENOUT("printer:") 15050SYS"PDriver_SelectJob",fh% TO job 15060SYS"PDriver_PageSize" TO,,,l%,b%,r%,t% 15070box!0=-10 15080matrix!0=66000:matrix!4=0:matrix!8=0:matrix!12=66000:REM 66000,0,0,66000 15090IF fullsheet=1 origin!0=l%:origin!4=75000:box!8=(290*2.5)+580:box!12=(625*2.5)+400:box!4=-200 15100IF fullsheet=0 origin!0=l%:origin!4=623000:box!8=590:box!12=390:box!4=-10 15110SYS"PDriver_GiveRectangle",0,box,matrix,origin,&FFFFFF00 15120SYS"PDriver_DrawPage",noofpages,box2,0,0 TO more 15130WHILE more<>0 15140PROCdraw 15150SYS"PDriver_GetRectangle",0,box2 TO more 15160ENDWHILE 15170SYS"PDriver_EndJob",fh% 15180CLOSE#fh% 15190SYS"PDriver_SelectJob",job 15200SYS"Hourglass_Smash" 15210SYS"Wimp_ForceRedraw",-1,286,464,740+288,196+466 15220ENDPROC 15230DEFPROCdraw 15240IF fullsheet=1 THEN 15250FOR cardco=1 TO 16 STEP 2 15260PROCdrawcard(cardpos(cardco)*2.5,cardpos(cardco+1)*2.5) 15270PROCcardsprite(cardpos(cardco)*2.5,cardpos(cardco+1)*2.5) 15280NEXT cardco 15290ELSE 15300PROCdrawcard(10,380) 15310PROCcardsprite(10,380) 15320ENDIF 15330ENDPROC 15340DEFPROCdrawcard(pxco,pyco) 15350SYS "ColourTrans_SetGCOL",hexc(0),,,&100,0 15360RECTANGLE FILL pxco+8,pyco-386,566,378 15370SYS "ColourTrans_SetGCOL",0,,,&100,0 15380RECTANGLE pxco+6,pyco-386,568,380 15390RECTANGLE pxco+4,pyco-388,568,380 15400name$=$FNinfo(details%,0):fontname$=$FNinfo(details%,3) 15410sizename=VAL($FNinfo(details%,31)):hname=VAL($FNinfo(details%,13)) 15420extra$=$FNinfo(details%,5):fontextra$=$FNinfo(details%,2) 15430sizeextra=VAL($FNinfo(details%,32)):hextra=VAL($FNinfo(details%,14)) 15440ad1$=$FNinfo(details%,6):fontad1$=$FNinfo(details%,19) 15450sizead1=VAL($FNinfo(details%,33)):had1=VAL($FNinfo(details%,17)) 15460ad2$=$FNinfo(details%,7) 15470ad3$=$FNinfo(details%,18) 15480ad4$=$FNinfo(details%,10) 15490tel$=$FNinfo(details%,21):fonttel$=$FNinfo(details%,4) 15500sizetel=VAL($FNinfo(details%,34)):htel=VAL($FNinfo(details%,15)) 15510IF sizename=0 THEN sizename=20:PROCmess("Font sizes can not be 0"):nono=1:ns=20:ni=13 15520IF sizeextra=0 THEN sizeextra=16:PROCmess("Font sizes can not be 0"):nono=1:ns=16:ni=14 15530IF sizead1=0 THEN sizead1=14:PROCmess("Font sizes can not be 0"):nono=1:ns=14:ni=17 15540IF sizetel=0 THEN sizetel=16:PROCmess("Font sizes can not be 0"):nono=1:ns=16:ni=15 15550font$=fontname$ 15560x=FNwidth(name$,fontname$,sizename,hname) 15570IF x=0 AND name$<>"" THEN PROCmess("The name text is too long or the font is too large"):close=1:ENDPROC 15580 xco=566-x:xco=xco/2: 15590 SYS "ColourTrans_SetFontColours",font%,hexc(1),hexc(1) 15600 SYS"Font_Paint",,name$,%10010,pxco+xco+8,pyco-70 15610SYS "ColourTrans_SetGCOL",hexc(1),,,&100,0 15620RECTANGLE FILLpxco+xco+5,pyco-74,566-xco-xco+3,-4 15630font$=fontextra$ 15640x=FNwidth(extra$,fontextra$,sizeextra,hextra) 15650IF x=0 AND extra$<>"" THEN PROCmess("The trade text is too long or the font is too large"):close=1:ENDPROC 15660xco=566-x:xco=xco/2 15670 SYS "ColourTrans_SetFontColours",font%,hexc(2),hexc(2) 15680SYS"Font_Paint",,extra$,%10010,pxco+xco+8,pyco-130 15690font$=fontad1$ 15700x=FNwidth(ad1$,fontad1$,sizead1,had1) 15710IF ad1$>"" AND x=0 OR x>530 THEN PROCmess("The 1st address text is too long or the font is too large"):close=1:ENDPROC 15720 SYS "ColourTrans_SetFontColours",font%,hexc(3),hexc(3) 15730SYS"Font_Paint",,ad1$,%10010,pxco+38,pyco-185 15740x=FNwidth(ad2$,fontad1$,sizead1,had1) 15750IF ad2$>"" AND x=0 OR x>560 THEN PROCmess("The 2nd address text is too long or the font is too large"):close=1:ENDPROC 15760SYS"Font_Paint",,ad2$,%10010,pxco+38,pyco-225 15770x=FNwidth(ad3$,fontad1$,sizead1,had1) 15780IF ad3$>"" AND x=0 OR x>560 THEN PROCmess("The 3rd address text is too long or the font is too large"):close=1:ENDPROC 15790SYS"Font_Paint",,ad3$,%10010,pxco+38,pyco-265 15800x=FNwidth(ad4$,fontad1$,sizead1,had1) 15810IF ad4$>"" AND x=0 OR x>560 THEN PROCmess("The 4th address text is too long or the font is too large"):close=1:ENDPROC 15820SYS"Font_Paint",,ad4$,%10010,pxco+38,pyco-305 15830font$=fonttel$ 15840x=FNwidth("Tel :- "+tel$,fonttel$,sizetel,htel) 15850IF x=0 AND tel$<>"" THEN PROCmess("The telephone text is too long or the font is too large"):close=1:ENDPROC 15860xco=566-x:xco-=16 15870 SYS "ColourTrans_SetFontColours",font%,hexc(4),hexc(4) 15880SYS"Font_Paint",,"Tel :- "+tel$,%10010,pxco+xco,pyco-360 15890ENDPROC 15900DEFPROCprinterr 15910IF ERR=17 THEN 15920SYS"PDriver_AbortJob",fh%: 15930REM SYS"PDriver_SelectJob",job: 15940CLOSE#fh% 15950PROCmess("Escape: Print Canceled") 15960SYS"OS_ReadModeVariable",MODE,4 TO ,,x 15970SYS"OS_ReadModeVariable",MODE,5 TO ,,y 15980MOUSE RECTANGLE 0,0,(((block!128)+1)*2^x)-1,((block!132)+1)*2^y 15990SYS"Hourglass_Smash" 16000SYS"Wimp_ForceRedraw",-1,286,464,740+288,196+466 16010ENDPROC 16020ENDIF 16030IF fh%<>-1 THEN SYS"PDriver_AbortJob",fh%:SYS"PDriver_SelectJob",job:CLOSE#fh% 16040SYS"Hourglass_Smash" 16050SYS"OS_ReadModeVariable",MODE,4 TO ,,x 16060SYS"OS_ReadModeVariable",MODE,5 TO ,,y 16070MOUSE RECTANGLE 0,0,(((block!128)+1)*2^x)-1,((block!132)+1)*2^y 16080SYS"Wimp_ForceRedraw",-1,286,464,740+288,196+466 16090PROCerror(REPORT$+": at line "+STR$ERL+" whilst printing"):ENDPROC 16100ENDPROC 16110DEFPROCmorecopies 16120IF VAL($FNinfo(print%,4))=99 THEN ENDPROC 16130PROCinfo(print%,4,STR$(VAL$FNinfo(print%,4)+1)) 16140ENDPROC 16150DEFPROClesscopies 16160IF VAL($FNinfo(print%,4))=1 THEN ENDPROC 16170PROCinfo(print%,4,STR$(VAL$FNinfo(print%,4)-1)) 16180ENDPROC 16190DEFPROCupanddown(icn) 16200!block=colour%:SYS"Wimp_GetWindowInfo",,block 16210workx%=block!4-block!20 16220worky%=block!16-block!24 16230valuer=VAL$FNinfo(colour%,3) 16240valueg=VAL$FNinfo(colour%,7) 16250valueb=VAL$FNinfo(colour%,11) 16260CASE icn OF 16270WHEN 1: 16280IF valuer>0 PROCinfo(colour%,3,STR$(valuer-1)):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 16290WHEN 2: 16300IF valuer<255 PROCinfo(colour%,3,STR$(valuer+1)):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 16310WHEN 5: 16320IF valueg>0 PROCinfo(colour%,7,STR$(valueg-1)):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 16330WHEN 6: 16340IF valueg<255 PROCinfo(colour%,7,STR$(valueg+1)):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 16350WHEN 9: 16360IF valueb>0 PROCinfo(colour%,11,STR$(valueb-1)):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 16370WHEN 10: 16380IF valueb<255 PROCinfo(colour%,11,STR$(valueb+1)):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 16390ENDCASE 16400ENDPROC 16410DEFPROCsetper 16420RED=(hex>>8)AND&FF 16430GREEN=(hex>>16)AND&FF 16440BLUE=(hex>>24)AND&FF 16450PROCinfo(colour%,3,STR$RED) 16460PROCinfo(colour%,7,STR$GREEN) 16470PROCinfo(colour%,11,STR$BLUE) 16480PROCopenwin(colour%) 16490!block=colour%:SYS"Wimp_GetWindowInfo",,block 16500workx%=block!4-block!20 16510worky%=block!16-block!24 16520SYS"Wimp_ForceRedraw",-1,workx%+270,worky%-170,workx%+614,worky%-24 16530SYS"Wimp_ForceRedraw",-1,workx%+234,worky%-247,workx%+410,worky%-199 16540ENDPROC 16550 16560
�=�P+&1000 %� � �error(�$+" : at line "+Þ):� � ***>$.!Card2.!RunImage (8� ***Main Program for !Card2 - Business Card creator 2 � Version 2.03 (26 Sept '93) <� � J. Robbins F[� block 10240, mblock 1024, menu% 6144, curbuf% 5120, icond 3072, q% 1024, text% &1000 Pmaxlev%=32 Z#� start%(maxlev%),box%(maxlev%) d5� l%(maxlev%),b%(maxlev%),r%(maxlev%),t%(maxlev%) n� hexc(4),defpal% 255 xJ� scal% 20,scalblok% 255,temp% 100,palette% 255,winpal(15),cardpos(16) �/� matrix 100, origin 100, box 100, box2 100 �� c=1 � 16 �� a �cardpos(c)=a �� � hexc(0)=&FFFFFF00 �� 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 �P� &FFFFFF10,&DDDDDD10,&BBBBBB10,&99999910,&77777710,&55555510,&33333310,&010 I� &99440010,&EEEE10,&CC0010,&DD10,&BBEEEE10,&885510,&BBFF10,&FFBB0010 F end%=-1:textc=�:cardb=�:hex=0:RED=(hex>>8)�&FF:BLUE=RED:GREEN=RED endbuf%=curbuf%+&6000 "6picmenu3$="":picmenu2$="":picmenu$="":picmenu4$="" ,Vj=0:gee=0:geecus=0:family$="Trinity.Medium":fsize=12:in=�:close=0:nono=0:ns=0:ni=0 6Isavef=�:noprint=�:printing=�:quiting=�:full=�:prequit=�:prequitwait=� @fmcreated%=�:fcount%=0 Jreinter=&81683 TBș "Wimp_Initialise",200,&4B534154,"!Card2" � version%,mytask% ^$ș "Wimp_ClaimInterface",mytask% hJend%=�:drag%=0:drive%=0:sfile$="":Shear=�:curspr$="":progneed=112*1024 r`size%=48:font%=-1:family%=0:style%=-1:n_font%=1:noofcards=8:force=�:centred=�:boxit=�:tile=� | �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 �3� print$=" -print" � env$=�env$,�env$-7):noic=1 �>� print$=" -print" � �present:�load(env$):�openwin(print%) �.� print$<>" -print" � env$<>"" �load(env$) � noic=0 � initic=�icon ș"Hourglass_On" �fmenucr &ș"Hourglass_Off" 0�pollit :��pollit D� N& ș"Wimp_Poll",0,block � eventcode X. ș "Wimp_PollPointer",eventcode,,version% bȎ eventcode � l2� 0:� savef � prequit ș"Wimp_ProcessKey",&1FC v� 1:�redraw(block!0) �#� 2:ș "Wimp_OpenWindow",,block �$� 3:ș "Wimp_CloseWindow",,block �3� noic=1 � șreinter,mytask%:ș"Wimp_CloseDown" �*� block!0=saved% � prequit � prequit=� �� 6:�click(block) �� 7:�out �� 8:�process �� 9:�select �� 17,18:�messagein �� �� � �� �� ݤicon !icond=-1 icond!4=0 %icond!8=0:icond!12=68:icond!16=68 *+icond!20=%11010+((2^12)*3):icond?23=112 4$(icond+24)="!Card2"+�13 >&ș "Wimp_CreateIcon",,icond � icon H =icon Rݤinf(handle,icon) \�gee(handle,icon) f =icond!28 p ݤbit(a$) zȕ �a$,":")>0 �a$=�a$,�a$,":")+1) �� �ȕ �a$,".")>0 �a$=�a$,�a$,".")+1) �� �=a$ �ݤwool(wool%) � � cot$ � ȕ ?wool%>=32 �cot$+=�(?wool%) �wool%+=1 �� � =cot$ ��template 1ș"Wimp_OpenTemplate",,"<Card$Dir>.Templates" indir=curbuf% $info%=�template("ProgInfo") .save%=�template("save") 8card%=�template("Card") B!details%=�template("details") L saved%=�template("savetext") Vprint%=�template("print") ` colour%=�template("colours") j!savepic%=�template("SavePIC") tquery%=�template("query") ~quit%=�template("quitbox") �ș "Wimp_CloseTemplate" �stex=�info(save%,1) �stexd=�info(saved%,1) �stextpic=�info(savepic%,1) �� �ݤtemplate(a$) �Fș"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 ��info(handle,icon,text$) ;!block=handle:block!4=icon:ș"Wimp_GetIconState",,block ()$(block!28)=text$:block!36=�(text$)+1 2block!8=0:block!12=0 < ș"Wimp_SetIconState",,block F� P��gee(handle,icon) Z!icond=handle:icond!4=icon d ș"Wimp_GetIconState",,icond n� x ��present � a$="" �� � � � � � a$="Not Present":� �:� � ș"PDriver_Info" � a,,,,name �ȕ ?name �a$=a$+�(?name) �name+=1 �� �$�info(print%,0)=a$ �� � �� ���cmenus ��present nogo=� gee=0 menuopen=-44 "menuptr=menu% ,ȗ x,y,b 6.� block!16=27 � sfile$<>"" � HJK=� � HJK=� @A� HJK sprmen%=�menu("Sprite List",(largest*14)+40,men$):gee=2 J"picmenu$="Force Scale,Centred" T0� centred � picmenu$<>"{�}Centred" centred=� ^'� force picmenu4$="{�}Force Scale," h&� � force picmenu4$="Force Scale," r#� centred picmenu$="{�}Centred" |"� � centred picmenu$="Centred" �S� curspr$<>"" iconmenu$="{b|picmenu%}Picture" � iconmenu$="{-|picmenu%}Picture" �Wpicmenu%=�menu("Picture",190,"{_}Del Pic,{u|savepic%}Save Pic,"+picmenu4$+picmenu$) �>savemenu%=�menu("Save",174,"{b|save%}Draw,{b|saved%}Data") �riconmenu%=�menu("!Card",174,"{b|info%}Info,{b|savemenu%}Save,{b|print%}Print,Details,View,"+iconmenu$+",Quit") �idetmenu%=�menu("!Card",174,"{b|info%}Info,{b|savemenu%}Save,{b|print%}Print,View,"+iconmenu$+",Quit") �vviewmenu%=�menu("!Card",174,"{b|info%}Info,{b|savemenu%}Save,{b|print%}Print,Details,Back Col,"+iconmenu$+",Quit") �Ȏ block!12 � �<� -2:� block!8=2 � openmenu%=iconmenu%:a=x-75:b=(7+2)*48 �M� details%:� HJK � openmenu%=sprmen%:a=x:b=y:� openmenu%=detmenu%:a=x:b=y �5� card%:� block!8=2 � openmenu%=viewmenu%:a=x:b=y �:� �� ��openmenu(a,b) � ��openmenu(x,y) &ș"Wimp_CreateMenu",,openmenu%,x,y &� 0ݤmenu(tit$,wid,menu$) :menu$+="," Doldmenu=menuptr N$menuptr=tit$ Xmenuptr?12=7 bmenuptr?13=2 lmenuptr?14=7 vmenuptr?15=0 �menuptr!16=wid �menuptr!20=48 �menuptr!24=0 �menuptr+=28 �� ��thing(menu$) �menu$=�menu$,�menu$,",")+1) �menuptr+=24 �� menu$="" �)menuptr!-24=(menuptr!-24) � %10000000 �=oldmenu ���thing(m$) �m$=�m$,�m$,",")-1) i$="":j$="" � �m$,"{")>0 � i$=�m$,�m$,"}")-1) m$=�m$,�m$,"}")+1) *j$=�i$,�i$,"|")-1) 4i$=�i$,�i$,"|")+1) >� Hijack=&07000021 Rmjack=0 \submenu=-1 f � �j$,"b")>0 � submenu=�(i$) p"� �j$,"_")>0 � mjack=mjack � 2 z"� �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$ �� �� ���click(block) �keepb%=block!12 �*� �checkit(block!12,block!16)=983040 � �$�slabin(keepb%):�slabout(keepb%) � '� quiting � quiting=�:�close(quit%) 9� block!12=card% � block!8=4 io=0:hex=hexc(0):�setper $0� block!12=-2 � block!8=4 �openwin(details%) .-� block!12=-2 � block!8=1 �openwin(card%) 8%� block!12=details% � block!8=2 � B{� block!16=3 � block!16=2 � block!16=4 � block!16=19 � ȗ x,y,b:gee=1:icy=block!16:ș"Wimp_CreateMenu",,fmenu%,x-75,y:� L� V� block!8=2 � �cmenus:� `5� block!12=details% � savef=�:�title(details%,"") j<� block!12=save% � block!16=2 winsave%=block!12:�defsave t=� block!12=saved% � block!16=2 winsave%=block!12:�defsave ~?� block!12=savepic% � block!16=2 winsave%=block!12:�defsave �M� block!12=save% � block!16=0 winsave%=block!12:�save($�info(winsave%,1)) �N� block!12=saved% � block!16=0 winsave%=block!12:�save($�info(winsave%,1)) �P� block!12=savepic% � block!16=0 winsave%=block!12:�save($�info(winsave%,1)) �O� block!12=details% � block!16=22 io=1:hex=hexc(io):textc=�:cardb=�:�setper �O� block!12=details% � block!16=23 io=2:hex=hexc(io):textc=�:cardb=�:�setper �O� block!12=details% � block!16=24 io=3:hex=hexc(io):textc=�:cardb=�:�setper �O� block!12=details% � block!16=25 io=4:hex=hexc(io):textc=�:cardb=�:�setper �?� block!12=details% � block!16>28 � block!16<31 �drawsprite �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%) �/� block!12=colour% � block!16=-1 � �dragcol H� block!12=colour% � block!16>0 � block!16<11 � �upanddown(block!16) � prequit � a� block!12=quit% � block!16=0 � ș"Wimp_ProcessKey",&1FC:șreinter,mytask%:ș"Wimp_CloseDown" ;� block!12=quit% � block!16=2 � �close(quit%):prequit=� (P� block!12=quit% � block!16=3 � �close(quit%):�openwin(saved%):prequitwait=� 2'� prequit � � prequitwait prequit=� <� FJ� block!12=quit% � block!16=0 � șreinter,mytask%:ș"Wimp_CloseDown":� P1� block!12=quit% � block!16=2 � �close(quit%) ZB� block!12=quit% � block!16=3 � �close(quit%):�openwin(saved%) d� n9� block!12=query% � block!16=0 � �close(query%):�endq x$� block!12=print% � block!16=1 � � �print �5� noic=1 � șreinter,mytask%:ș"Wimp_CloseDown":� �� �0� block!12=print% � block!16=5 � �morecopies �0� block!12=print% � block!16=3 � �lesscopies �� �!ݤcheckflag(handle,icon,flag) � bit=� �!icond=handle:icond!4=icon � ș"Wimp_GetIconState",,icond �"� (icond!24�(1<<flag))>0 bit=� �=bit ���setshear(on) ;!icond=details%:icond!4=29:ș"Wimp_GetIconState",,icond � on=1 � C=(1<<21):E=(1<<21) "� ,C=(0<<21):E=(1<<21) 6� @icond!8=C:icond!12=E J ș"Wimp_SetIconState",,icond T: ^;!icond=details%:icond!4=30:ș"Wimp_GetIconState",,icond h� on=0 � rC=(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,1)) �K� !block=saved% � block!24=13 � winsave%=!block:�save($�info(!block,1)) �M� !block=savepic% � block!24=13 � winsave%=!block:�save($�info(!block,1)) � ș"Wimp_ProcessKey",block!24 �� ���caret $ș"Wimp_GetCaretPosition",,block � block!0=details% � Ȏ block!4 � & � 0:np=5 0 � 5:np=6 : � 6:np=7 D � 7:np=18 N � 18:np=10 X � 10:np=21 b � 21:np=0 l � 13:np=14 v � 14:np=17 � � 17:np=15 � � 15:np=0 �; � 31:np=32:�info(details%,13,$�info(details%,block!4)) �; � 32:np=33:�info(details%,14,$�info(details%,block!4)) �; � 33:np=34:�info(details%,17,$�info(details%,block!4)) �; � 34:np=13:�info(details%,15,$�info(details%,block!4)) � � �I ș "Wimp_SetCaretPosition",details%,np,0,0,-1,�($�info(details%,np)) � � � � ���select � � gee=1 � ��� version%>300 � ș"Font_DecodeMenu",0,fmenu%,block,icond,255�,,,,size:$icond=�$icond,size-1):$icond=�$icond,�($icond)-2):$icond=�$icond,�$icond-(�$icond-�$icond,"\"))-1):� ș"Wimp_DecodeMenu",,fmenu%,block,icond family$=$icond �info(details%,icy,family$) �redraw(card%) gee=0 *� 4� > � gee=2 � H,ș"Wimp_DecodeMenu",,sprmen%,block,icond Rcurspr$=$icond \�drawsprite f gee=0 p� z� �.ș"Wimp_DecodeMenu",,openmenu%,block,icond � iffy=� �,� $icond="Quit" � �areyousure:quiting%=� �+� $icond="Details" � �openwin(details%) �4� $icond="View" � �openwin(card%):�redraw(card%) �)� $icond="Picture.Del Pic" � �killspr �3� $icond="Back Col" � io=0:hex=hexc(io):�setper �L� $icond="Picture.Force Scale" � iffy � force force=�:iffy=�:�drawsprite �N� $icond="Picture.Force Scale" � iffy � � force force=�:iffy=�:�drawsprite �L� $icond="Picture.Centred" � iffy � centred centred=�:iffy=�:�drawsprite �N� $icond="Picture.Centred" � iffy � � centred centred=�:iffy=�:�drawsprite �(� $icond="Save.Draw" �openwin(save%) �)� $icond="Save.Data" �openwin(saved%) "ș"Wimp_GetPointerInfo",,block � block!8=1 � � menuopen=-44 � �cmenus $"ș"Wimp_CreateMenu",,openmenu% .� 8ș"Wimp_CreateMenu",,-1 B� L� V ��killspr `=sfile$="":curspr$="":spr%=0:ș"Wimp_SlotSize",progneed,-1 j� t��mess(mess$) ~ !icond=0:$(icond+4)=mess$+�0 �(ș"Wimp_ReportError",icond,1,"!Card" �� ���error(err$) � � �=523 � �%�mess("Font "+font$+" not found") �Ȏ font$ � �2� fontname$:�info(details%,3,"Trinity.Medium") �3� fontextra$:�info(details%,2,"Trinity.Medium") �2� fontad1$:�info(details%,19,"Trinity.Medium") �1� fonttel$:�info(details%,4,"Trinity.Medium") �� ��redraw(card%):�pollit � M!icond=0:$(icond+4)=err$+"."+" Press OK to continue or Cancel to quit"+�0 /ș"Wimp_ReportError",icond,3,"!Card" � ,but 4� but=2 � șreinter,mytask%:ș"Wimp_CloseDown":� (� 2 ��out <)� winsave%=save% � stext=stex:ft=&AFF F+� winsave%=saved% � stext=stexd:ft=&00C P0� winsave%=savepic% � stext=stextpic:ft=&FF9 Z� drive%=1 � d$ș "Wimp_GetPointerInfo",,mblock n<win=mblock!12:icon=mblock!16:xout=!mblock:yout=mblock!4: xPmblock!20=mblock!12:mblock!24=mblock!16:mblock!28=!mblock:mblock!32=mblock!4 �7mblock!12=0:mblock!16=1:mblock!36=1024:mblock!40=ft �$stext=$�info(winsave%,1) �$stext=�getleaf($stext) �)� I=0 � 255:� I?stext<32 � I?stext=13 �� � !mblock=44+4*(1+(�$stext)�4) �+$(mblock+44)=�bit($stext)+�0:!mblock=60 �Bș "Wimp_SendMessage",17,mblock,mblock!20,mblock!24:� DataSave �drag%=0 �� �� � ��defsave � �Mode !block=winsave% #ș "Wimp_GetWindowState",,block ysize%=block!16-block!8 "#x%=block!4:y%=block!8:block!4=2 , ș"Wimp_GetIconState",,block 6#block!8+=x%:block!12+=y%+ysize% @$block!16+=x%:block!20+=y%+ysize% J5block!24=0:block!28=0:block!32=xmax:block!36=ymax T'!block=0:block!4=5:drag%=�:drive%=1 ^ș"Wimp_DragBox",,block h� r ��Mode |M!block=130:block!4=131:block!8=-1:ș"OS_ReadVduVariables",block,block+128 �)ș"OS_ReadModeVariable",�,4 � ,,Xeig% �)ș"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%=saved% �� � �X� � � � �=71622:�query("Disc Full"):full=�:� �:�:� � �:�error(�$+" : at line "+Þ):� endtext%=text% #$endtext%="Card2 Data File"+�10 endtext%+=16 &� curspr$<>"" � 0$endtext%="Sprites"+�10 :endtext%+=8 Dc$endtext%=curspr$+�10:endtext%+=�(curspr$)+1:$endtext%=�spr_len%+�(10):endtext%+=�(�spr_len%)+1 N(� centred c$="centred" � c$="origin" X"� force f$="forced" � f$="s/s" b� Shear g$="1" � g$="0" l$endtext%=g$+�10 vendtext%+=2 �$endtext%=c$+�10 �endtext%+=�c$+1 �$endtext%=f$+�10 �endtext%+=�f$+1 �� �*$endtext%="NoSprites"+�10:endtext%+=10 �� �% $endtext%=$�info(details%,3)+�10 �& endtext%+=�($�info(details%,3))+1 �' $endtext%=$�info(details%,0)+�(10) �& endtext%+=�($�info(details%,0))+1 �( $endtext%=$�info(details%,13)+�(10) �&endtext%+=�($�info(details%,13))+1 '$endtext%=$�info(details%,31)+�(10) &endtext%+=�($�info(details%,31))+1 % $endtext%=$�info(details%,2)+�10 & endtext%+=�($�info(details%,2))+1 *' $endtext%=$�info(details%,5)+�(10) 4& endtext%+=�($�info(details%,5))+1 >( $endtext%=$�info(details%,14)+�(10) H&endtext%+=�($�info(details%,14))+1 R( $endtext%=$�info(details%,32)+�(10) \&endtext%+=�($�info(details%,32))+1 f%$endtext%=$�info(details%,19)+�10 p' endtext%+=�($�info(details%,19))+1 z' $endtext%=$�info(details%,6)+�(10) �& endtext%+=�($�info(details%,6))+1 �( $endtext%=$�info(details%,17)+�(10) �&endtext%+=�($�info(details%,17))+1 �( $endtext%=$�info(details%,33)+�(10) �&endtext%+=�($�info(details%,33))+1 �&$endtext%=$�info(details%,7)+�(10) �%endtext%+=�($�info(details%,7))+1 �'$endtext%=$�info(details%,18)+�(10) �&endtext%+=�($�info(details%,18))+1 �'$endtext%=$�info(details%,10)+�(10) �&endtext%+=�($�info(details%,10))+1 �&$endtext%=$�info(details%,4)+�(10) �%endtext%+=�($�info(details%,4))+1 '$endtext%=$�info(details%,21)+�(10) &endtext%+=�($�info(details%,21))+1 '$endtext%=$�info(details%,15)+�(10) $&endtext%+=�($�info(details%,15))+1 .'$endtext%=$�info(details%,34)+�(10) 8&endtext%+=�($�info(details%,34))+1 B$endtext%=�hexc(0)+�(10) L endtext%+=�(�hexc(0))+1 V $endtext%=�hexc(1)+�(10) ` endtext%+=�(�hexc(1))+1 j$endtext%=�hexc(2)+�(10) t endtext%+=�(�hexc(2))+1 ~$endtext%=�hexc(3)+�(10) � endtext%+=�(�hexc(3))+1 �$endtext%=�hexc(4)+�(10) � endtext%+=�(�hexc(4))+1 �+ ș"OS_File",0,save$,0,0,text%,endtext% � �("Settype "+save$+" &0cc") �� curspr$<>""� �#ș"OS_File",5,save$ �,,,,length �ș"OS_Find",&C0,save$ � fs �+ș"OS_GBPB",1,fs,spr%+4,spr_len%,length ��#fs �� �� � <� save$<>"<Wimp$Scrap>" � savef=�:�title(details%,save$) � � winsave%=save% � �makefile � winsave%=savepic% � (� � 2^� � � � �=71622:�query("Disc Full"):full=�:� �:�:� � �:�error(�$+" : at line "+Þ):�#ile:� <%Current=�checkflag(savepic%,3,21) FȎ Current � P� �: Z%ș 46,&118,spr%,curspr$ � ,,sptr% d ș"OS_Find",&80,save$ � ile% n�#ile%,&01 x�#ile%,0 ��#ile%,0 ��#ile%,0 ��#ile%,&10 ��#ile%,0 ��#ile%,0 ��#ile%,0 ��#ile%,!sptr%+16 � &FF � �#ile%,(!sptr%+16>>>8) � &FF �!�#ile%,(!sptr%+16>>>16) � &FF �!�#ile%,(!sptr%+16>>>24) � &FF �%ș"OS_GBPB",&02,ile%,sptr%,!sptr% �ș"OS_Find",0,ile% �ș"OS_File",&12,save$,&ff9 � �: 4ș"OS_File",0,save$,0,0,spr%+4,spr%+(spr_len%+4) ș"OS_File",&12,save$,&ff9 "� ,� 63� save$<>"<Wimp$Scrap>" �info(winsave%,1,save$) @� J��messagein Tmblock=block ^ref=mblock!8:task=mblock!4 hȎ mblock!16 � r[� 8:� � prequit mblock!12=mblock!8:ș"Wimp_SendMessage",19,mblock:prequit=�:�areyousure |.� 0:șreinter,mytask%:ș"Wimp_CloseDown":� �� 2: �� drive%=1 � ��save(�wool(mblock+44)) �mblock!12=ref �mblock!16=3 �mblock!36=-1 �!mblock=256 �sendm=&400E7 �&ș sendm,18,mblock,task:� DataLoad �� �� 3: �l� mblock!40<>&0CC � mblock!40<>&FF9 � �mess("Only CardData files or Sprites can be dropped into here"):� �in=� #� mblock!40=&FF9 � �insprites:� �load(�wool(block+44)) � 5: &� block!40=&0CC � 0block!12=block!8:block!16=4 :sendm=&400E7 D+ș sendm,18,block,block!4:� DataLoadAck N�load(�wool(block+44)) X� b� l� v��load(load$) �!ș"OS_Find",&40,load$ � file% � t$="" �t$=�readfile � first$=t$ �q � t$<>"Card Data File" � t$<>"Card2 Data File" � �mess("This is not a Card data file"):ș"OS_Find",0,file%:� �9� first$="Card Data File" new=FLASE:�loadold:�killspr �-� first$="Card2 Data File" new=�:�loadnew �ș"OS_Find",0,file% �$�info(saved%,1)=load$ �� noic=0 �openwin(details%) �+� noic=0 savef=�:�title(details%,load$) �(� noic=0 � curspr$<>"" � �drawsprite �� ��loadnew &� �readfile="Sprites" � �loadspr:� �killspr �loadindet * � I=0 � 4 4hexc(I)=�(�readfile) >� I H� R ��loadspr \� curspr$<>"" � �killspr fcurspr$=�readfile psfile$="Internal" zspr_len%=�(�readfile) �2� �(�readfile)=1 � �setshear(1) � �setshear(0) �%� �readfile="centred" � centred=� �"� �readfile="forced" � force=� ��loadindet � � I=0 � 4 �hexc(I)=�(�readfile) �� I �men$="":largest=0 �spr%=�claim(spr_len%+64) �$ș"OS_File",5,load$ � ,,,,length �7ș"OS_GBPB",3,file%,spr%+4,spr_len%,length-spr_len% �,ș "OS_SpriteOp",&108,spr% � ,,,sprites% �� i%=0 � sprites%-1 7 ș "OS_SpriteOp",&10D,spr%,temp%,&100,i%+1 � ,,,j% temp%?j%=13 ) � �(men$)<243 � men$=men$+$temp%+"," $* � �($temp%)>largest largest=�($temp%) .� 8men$=�men$,�(men$)-1) B� L ��loadold V�loadindet ` � I=1 � 4 j hexc(I)=0 t� ~hexc(0)=&FFFFFF00 �� ���loadindet ��info(details%,3,�readfile) ��info(details%,0,�readfile) � �info(details%,13,�readfile) �&� new �info(details%,31,�readfile) ��info(details%,2,�readfile) ��info(details%,5,�readfile) � �info(details%,14,�readfile) �&� new �info(details%,32,�readfile) � �info(details%,19,�readfile) ��info(details%,6,�readfile) �info(details%,17,�readfile) &� new �info(details%,33,�readfile) �info(details%,7,�readfile) �info(details%,18,�readfile) ( �info(details%,10,�readfile) 2�info(details%,4,�readfile) < �info(details%,21,�readfile) F �info(details%,15,�readfile) P&� new �info(details%,34,�readfile) Z� dݤreadfile n t$="" x � � ș"OS_BGet",,file% � byte% �8 � byte%=254 ș"OS_Find",0,file%:�openwin(details%): � t$=t$+�(byte%) � � byte%=13 � byte%=10 � =�t$,�(t$)-1) ���insprites � men$="":largest=0 � load$=�wool(block+44) � sfile$=load$ �'ș "OS_File",5,load$ � ,,,,spr_len% �spr%=�claim(spr_len%+256) �!ș "OS_File",&FF,load$,spr%+4 �,ș "OS_SpriteOp",&108,spr% � ,,,sprites% � i%=0 � sprites%-1 7 ș "OS_SpriteOp",&10D,spr%,temp%,&100,i%+1 � ,,,j% temp%?j%=13 ") � �(men$)<243 � men$=men$+$temp%+"," ,* � �($temp%)>largest largest=�($temp%) 6� @men$=�men$,�(men$)-1) Jcurspr$=�men$,�men$,",")-1) T"�openwin(details%):�drawsprite ^ � h��openwin(handle%) r!block=handle% |"ș"Wimp_GetWindowState",,block �open=block!32 � (1<<16) �-� block!28<>-1 � open=0 � handle%=card% � �block!28=-1 �ș"Wimp_OpenWindow",,block �� �� � ��fmenucr �� version%>300 � �fflag%=0 �fflag%+=1<<19 �fflag%+=1<<20 �1ș"Font_ListFonts",,0,fflag%,,0 � r,s,t,A,u,B �� fmenu% A,fbuf% B 1ș"Font_ListFonts",,fmenu%,fflag%,A,fbuf%,B,1 � �fmenucrRO2 &� 0� :��fmenucrRO2 D NULL=0 N� f_p% 900 X!f_p%=NULL bc%=0 l� v) ș "Font_ListFonts",,q%,c%,-1 � ,,c% �" � c%<>-1 � �Family(�Info(q%)) �� c%=-1 � �� fmenu% 28+24*n_font% �A$fmenu%="Fonts list":fmenu%!12=&0207:fmenu%!20=40:fmenu%!24=0 �Ffmenu%!28=1:fmenu%!32=-1:fmenu%!36=&07000021:$(fmenu%+40)="System" � �&width%=8:p%=fmenu%+28:r%=f_p%:n%=2 �ȕ n%<=n_font% � p%+=24 � f$=�Info(!r%+12) � width%=�Max(width%,�(f$)+1) � !p%=0:p%!8=&07000121 p%!12=!r%+12 p%!16=-1:p%!20=�(f$) v%=!r%+4 + � (!(!r%+8) = 1) � �Info(!v%+4) = "" � * p%!4 = -1 4 � > � p%!4 28+24*!(!r%+8) H t%=p%!4 R) $t%=f$:t%!12=&0207:t%!20=40:t%!24=0 \ u%=t%+4 f width2%=�(f$)-2 p � s%=1 � !(!r%+8) z u%+=24 � f$=�Info(!v%+4) �$ width2%=�Max(width2%,�(f$)+1) �# !u%=0:u%!4=-1:u%!8=&07000121 � u%!12=!v%+4 � u%!16=-1:u%!20=�(f$) � v%=!v% � � �% !u%= !u% � &80:t%!16=16*width2% � � � r%=!r% � n%+=1 �� �&!p%= !p% � &80:fmenu%!16=16*width% � � �Family(font$) "� family$,style$,p%,flag%,pos% $ .pos%=�font$,".") 8family$=�font$,pos%-1) B� pos% = 0 � L style$="" V� ` style$=�font$,pos%+1) j� tp%=f_p%:flag%=� ~ȕ (!p% <> NULL � flag%=�) �) � family$ = �Info(!p%+12) � flag%= � � p% =!p% �� �� flag%=� � � � p%!0 �(family$)+13 � p%=!p% � !p%=NULL � p%!8=1 � $(p%+12)=family$ � � p%!4 �(style$)+5 � p%=p%!4 � !p%=NULL $(p%+4)=style$ n_font%+=1 � p%!8=p%!8+1 ( p%=p%+4 2 ȕ (!p% <> NULL) < p%=!p% F � P � p%!0 �(style$)+5 Z p%=!p% d !p%=NULL n $(p%+4)=style$ x� �� �ݤMax(a%,b%) �� a%>b% � =a% � =b% �ݤInfo(p%) �� a$ � a$="" �ȕ (?p%<>0 � ?p%<>13) � a$+=�(?p%) � p%+=1 �� �=a$ ���redraw(handle) � block!0=handle �more% )ș "Wimp_RedrawWindow",,block � more% ȕ more% " Ȏ handle � , � card% 6 �application_redraw @ � colour% J �application_redraw2 T" ș "Wimp_BorderWindow",,block ^ � details% h �app_re3 r" ș "Wimp_BorderWindow",,block | �" ș "Wimp_BorderWindow",,block � � �+ ș "Wimp_GetRectangle",,block � more% �� �%� close=1 � �close(card%):close=0 �%� nono=1 � �info(details%,ni,�ns) �� ���application_redraw �!block=card% �!ș"Wimp_GetWindowInfo",,block �workx%=block!4-block!20 �worky%=block!16-block!24 ��drawcard(workx%,worky%) �cardsprite(workx%,worky%) � ��cardsprite(cxco,cyco) & � sfile$<>"" � 04ș &2E,256+40,spr%,curspr$ � A,B,C,w%,h%,D,mode% :.ș"OS_ReadModeVariable",mode%,3 �c,cl,cols D,ș"OS_ReadModeVariable",mode%,4 �,,xeig% N,ș"OS_ReadModeVariable",mode%,5 �,,yeig% Xwi%=w%<<xeig% bhe%=h%<<yeig% l� !(4+spr%)>0 � v� !(48+spr%)>44 � �� col%=0 � 15 �'palette%!(col%*4)=!(60+col%*8+spr%) � � col% �Dș "ColourTrans_SelectTable",!(56+spr%),palette%,-1,-1,scalblok% �� �Cș "ColourTrans_SelectTable",!(56+spr%),defpal%,-1,-1,scalblok% �� �� �xoff=0:yoff=0 �� h%>w% shear=72 � shear=82 �%ș"OS_ReadModeVariable",�,11 �,,C �%ș"OS_ReadModeVariable",�,12 �,,B � C+=1:B+=1 !&� B/C=.75 � �vga(mode%) � hscale=1 !/� B/C<>.8 � B/C<>.75 � �vga(mode%) hscale=2 !*� B/C=.8 � B/C=.75 � modsc=1 � modsc=2 ! $Shear=�checkflag(details%,29,21) !*Ȏ Shear � !4� � !>'� B/C=.8 � � �vga(mode%) � hscale=1 !H(� B/C=.75 � � �vga(mode%) � hscale=1 !R1� B/C<>.8 � B/C<>.75 � � �vga(mode%) hscale=2 !\@� w%>82 � h%>72 � h%<w% � SCw=w%/shear:SCh=w%/(shear/hscale) !f@� w%>82 � h%>72 � h%>w% � SCw=h%/shear:SCh=h%/(shear/hscale) !p(� w%>82 � h%<72 � SCw=w%/shear:SCh=1 !z � force � !�f� w%<82 � h%<72 � (h%*2)<w% � SCw=w%/shear:SCh=w%/(shear/hscale):SCw=SCw*1.10:SCh=SCh*1.10:� �0,0) !�\� w%<82 � h%<72 � (h%*2)>w% � SCw=h%/shear:SCh=h%/(shear/hscale):SCw=SCw*1.1:SCh=SCh*1.1 !�f� w%<82 � h%<72 � (h%*2)=w% � SCw=w%/shear:SCh=h%/(shear/2):SCw=SCw*1.1:SCh=SCh*1.1:� �0,0)SCh,SCw !�� !�%� w%<82 � h%<72 � SCw=1:SCh=modsc !�� !�Ȏ centred � !� � � !�*� �vga(mode%) � � force � yoff=(72-h%) !�2� �vga(mode%) � force � yoff=(72-((1/SCh)*h%)) !�4� � �vga(mode%) � force yoff=(72-((1/SCh)*h%))/2 !�0� � �vga(mode%) � � force � yoff=(72-(2*h%)) !�xoff=(82-((1/SCw)*w%)) "*� force � h%<w% � �vga(mode%) � xoff=0 "*� force � h%>w% � �vga(mode%) � yoff=0 "0� force � (h%*2)<w% � � �vga(mode%) � xoff=0 "$0� force � (h%*2)>w% � � �vga(mode%) � yoff=0 ". � "8� � "B'� B/C=.8 � � �vga(mode%) � hscale=2 "L(� B/C=.75 � � �vga(mode%) � hscale=2 "V1� B/C<>.8 � B/C<>.75 � � �vga(mode%) hscale=4 "` SCw=w%/82:SCh=h%/(72/hscale) "j� "t[!scal%=wi%:scal%!4=he%:scal%!8=�((w%/((1/SCw)/2))+0.5):scal%!12=�((h%/((1/SCh)/2))+0.5) "~Iș 46,&134,spr%,curspr$,cxco+390+xoff,cyco-300+yoff,8,scal%,scalblok% "�� "�� "�ݤwidth(text$,font$,xs,ys) "�1ș "Font_FindFont",,font$,xs*16,ys*16 � font% "�ș "Font_SetFont",font% "�Dș "Font_StringWidth",,text$,228000,228000,31,�(text$) � ,,x%,y% "�'ș "Font_ConverttoOS",,x%,y% � ,x,y "�=x "���makefile "�ș"Hourglass_On" "�� � "�u� � � � �=71622:�query("Disc Full"):full=�:�#c%:�("Delete "+save$):� �:�:� � �:�error(�$+" : at line "+Þ):�#c%:� # 6� �checkflag(save%,3,21) noofcards=1 � noofcards=8 # big%=&7FFFFFFF #EF=0.552256944 # i%=0:c%=0 #(inch=&B400 #2 point=640 #<cm=18140 #Fblack%=0 #Pwhite%=&FFFFFF00 #Znone%=-1 #d9name$=$�info(details%,0):fontname$=$�info(details%,3) #n@sizename=�($�info(details%,31)):hname=�($�info(details%,13)) #x;extra$=$�info(details%,5):fontextra$=$�info(details%,2) #�Bsizeextra=�($�info(details%,32)):hextra=�($�info(details%,14)) #�8ad1$=$�info(details%,6):fontad1$=$�info(details%,19) #�>sizead1=�($�info(details%,33)):had1=�($�info(details%,17)) #�ad2$=$�info(details%,7) #�ad3$=$�info(details%,18) #�ad4$=$�info(details%,10) #�8tel$=$�info(details%,21):fonttel$=$�info(details%,4) #�>sizetel=�($�info(details%,34)):htel=�($�info(details%,15)) #��drawfile_start(save$) #��putw(0) #��head_here(�) #��puts(�(1)+fontname$) #��puts(�(2)+fontextra$) $�puts(�(3)+fontad1$) $�puts(�(4)+fonttel$) $ �align $" �head_now $,� $6 � noofcards=8 � �group_start $@"� carddraw=1 � noofcards*2 � 2 $J/ax=cardpos(carddraw):by=cardpos(carddraw+1) $Txpos=ax:ypos=by $^�group_start $h'�path_start(0,0,1*point,&0,hexc(0)) $r�path_draw(0,152) $|�path_draw(228,152) $��path_draw(228,0) $��path_draw(0,0) $��path_close $� �path_end $�4xco=(2/5)*�width(name$,fontname$,sizename,hname) $�z� x/(2/5)=0 � name$<>"" � �mess("The name text is too long or the font is too large"):�drawfile_end:�"Delete "+save$:� $�xco=228-xco $� xco=xco/2 $��group_start $�C�text(xco,126,name$,sizename*&280,hname*&280,1,hexc(1),hexc(1)) $�&start=xco-2:finish=xco+((2/5)*x)+2 $�5�path_start(start,123,1.5*&280,hexc(1),&FFFFFFFF) $��path_draw(finish,123) %�path_close % �path_end %�group_end %&�group_start %0(x=�width(ad1$,fontad1$,sizead1,had1) %:�� ad1$>"" � x=0 � x>560 � �mess("The 1st address text is too long or the font is too large"):�drawfile_end:�"Delete "+save$:� %D>�text(13,81,ad1$,sizead1*&280,had1*&280,3,hexc(3),hexc(3)) %N(x=�width(ad2$,fontad1$,sizead1,had1) %X�� ad2$>"" � x=0 � x>560 � �mess("The 2nd address text is too long or the font is too large"):�drawfile_end:�"Delete "+save$:� %b>�text(13,65,ad2$,sizead1*&280,had1*&280,3,hexc(3),hexc(3)) %l(x=�width(ad3$,fontad1$,sizead1,had1) %v�� ad3$>"" � x=0 � x>560 � �mess("The 3rd address text is too long or the font is too large"):�drawfile_end:�"Delete "+save$:� %�>�text(13,49,ad3$,sizead1*&280,had1*&280,3,hexc(3),hexc(3)) %�(x=�width(ad4$,fontad1$,sizead1,had1) %��� ad4$>"" � x=0 � x>560 � �mess("The 4th address text is too long or the font is too large"):�drawfile_end:�"Delete "+save$:� %�>�text(13,33,ad4$,sizead1*&280,had1*&280,3,hexc(3),hexc(3)) %��group_end %�8xco=(2/5)*�width(extra$,fontextra$,sizeextra,hextra) %�|� x/(2/5)=0 � extra$<>"" � �mess("The trade text is too long or the font is too large"):�drawfile_end:�"Delete "+save$:� %�xco=228-xco:xco=xco/2: %�F�text(xco,102,extra$,sizeextra*&280,hextra*&280,2,hexc(2),hexc(2)) %�:xco=(2/5)*�width("Tel :- "+tel$,fonttel$,sizetel,htel) %�~� x/(2/5)=0 � tel$<>"" � �mess("The telephone text is too long or the font is too large"):�drawfile_end:�"Delete "+save$:� %�xco=218-xco %�I�text(xco,10,"Tel :- "+tel$,sizetel*&280,htel*&280,4,hexc(4),hexc(4)) &� curspr$<>"" � �sprite &�group_end &G� noofcards=8 ș"Hourglass_Percentage",(carddraw/(noofcards*2))*100 & � &*�drawfile_end &4ș"Hourglass_Smash" &>� � &H� &R� �drawfile_start(D$) &\c%=�(D$) &f,� c%=0 � � 1234,"Can't open output file" &pdrawfile$=D$ &z(�putw(&77617244):�putw(201):�putw(0) &��puts12("!Card") &�lev%=-1 &��head_here(�) &�� &�� �putw(A%) &��#c%,A% � &FF &��#c%,(A%>>>8) � &FF &��#c%,(A%>>>16) � &FF &��#c%,(A%>>>24) � &FF &�� &�� �puts12(A$) &�� A% &�A$=A$+�12," ") '#� A%=1 � 12:�#c%,�(�A$,A%,1)):� '� ': '$� �puts(A$) '.� A% '8&� A%=1 � �(A$):�#c%,�(�A$,A%,1)):� 'B �#c%,0 'L� 'V: '`� �head_here(box%) 'jV� lev%=maxlev% � � 1234,"Too many nested groups. Edit program to increase limit." 'tlev%+=1 '~box%(lev%)=box% '�start%(lev%)=�#c% '�� lev%>0 � �putw(0) '�� box% � '� �putw(0):�putw(0) '� �putw(0):�putw(0) '�� '�l%(lev%)=big%:b%(lev%)=big% '�!r%(lev%)=-big%:t%(lev%)=-big% '�� '�: '�� �head_now '� � end% ( end%=�#c% ( �#c%=start%(lev%) ()� lev%>0 � �putw(end%-start%(lev%)+4) (� box%(lev%) � (($ �putw(l%(lev%)):�putw(b%(lev%)) (2( �putw(r%(lev%)+1):�putw(t%(lev%)+1) (<� (F� lev%>0 � (P lev%-=1 (Z0 � l%(lev%+1)<l%(lev%) � l%(lev%)=l%(lev%+1) (d0 � b%(lev%+1)<b%(lev%) � b%(lev%)=b%(lev%+1) (n0 � r%(lev%+1)>r%(lev%) � r%(lev%)=r%(lev%+1) (x0 � t%(lev%+1)>t%(lev%) � t%(lev%)=t%(lev%+1) (�� (� �#c%=end% (�� (�� �align (�ȕ �#c% � 3:�#c%,0:� (�� (�� �group_start (�-� groups cannot be nested in this version (��putw(6) (��head_here(�) (��puts12("group") (�� (�: )� �group_end ) �head_now )� )"7� �text(x%,y%,text$,xsize%,ysize%,font%,col%,bcol%) ),)x%=(x%+xpos)*point:y%=(y%+ypos)*point )6�putw(1) )@�head_here(�) )J�putxy(x%,y%-ysize%*.5) )T(�putxy(x%+�(text$)*xsize%,y%+ysize%) )^�putw(col%) )h�putw(bcol%) )r�putw(font%) )|�putw(xsize%):�putw(ysize%) )��putxy(x%,y%) )��puts(text$):�align )� �head_now )�� )�� �putxy(x%,y%) )��putw(x%):�putw(y%) )�� x%<l%(lev%) � l%(lev%)=x% )�� y%<b%(lev%) � b%(lev%)=y% )�� x%>r%(lev%) � r%(lev%)=x% )�� y%>t%(lev%) � t%(lev%)=y% )�� )�+� �path_start(x%,y%,width%,lcol%,fcol%) )��putw(2) *�head_here(�) *�putw(fcol%):� fill *�putw(lcol%):� colour *&�putw(width%):� width *0�putw(0):� path style *:�path_move(x%,y%) *D� *N: *X� �path_move(x%,y%) *b)x%=(x%+xpos)*point:y%=(y%+ypos)*point *l�putw(2) *v�putxy(x%,y%) *�� *�: *�� �path_draw(xx%,yy%) *�-xx%=(xx%+xpos)*point:yy%=(yy%+ypos)*point *��putw(8) *��putxy(xx%,yy%) *�� *�� �path_close *��putw(5) *�� *�: *�� �path_end *��putw(0) + �head_now +� +� �drawfile_end + $� draw unfinished IF lev%>0 THEN +* �head_now +4 �#c%:c%=0 +>"�("SetType "+drawfile$+" AFF") +H� +R��sprite +\%ș 46,&118,spr%,curspr$ � ,,sptr% +f4ș &2E,256+40,spr%,curspr$ � A,B,C,w%,h%,D,mode% +p� h%>w% shear=72 � shear=82 +z'� �vga(mode%) � hscale=1:� hscale=2 +�$Shear=�checkflag(details%,29,21) +�xoff=0:yoff=0 +�Ȏ Shear � +�� � +�/� w%>82 � h%>72 � h%<w% � SCw=82/w%:SCh=SCw +�/� w%>82 � h%>72 � h%>w% � SCh=82/h%:SCw=SCh +�'� w%>82 � h%<72 � SCw=82/w%:SCh=SCw +�'� w%<82 � h%>72 � SCh=82/h%:SCw=SCh +� � force � +�/� w%<82 � h%<72 � h%<w% � SCw=82/w%:SCh=SCw +�/� w%<82 � h%<72 � h%>w% � SCh=72/h%:SCw=SCh +�� +�!� w%<82 � h%<72 � SCw=1:SCh=1 ,� ,Ȏ centred � , � � ,$*� �vga(mode%) � � force � yoff=(72-h%) ,.2� �vga(mode%) � force � yoff=(72-((1/SCh)*h%)) ,82� � �vga(mode%) � force yoff=(72-((1/SCh)*h%)) ,B0� � �vga(mode%) � � force � yoff=(72-(2*h%)) ,Lxoff=(82-((1/SCw)*w%)) ,V*� force � h%<w% � �vga(mode%) � xoff=0 ,`*� force � h%>w% � �vga(mode%) � yoff=0 ,j0� force � (h%*2)<w% � � �vga(mode%) � xoff=0 ,t0� force � (h%*2)>w% � � �vga(mode%) � yoff=0 ,~ � ,�� � ,� SCw=82/w%:SCh=72/h%:hscale=1 ,�� ,�x%=155:y%=33 ,�;x%=(x%+xpos+(xoff/5))*point:y%=(y%+ypos+(yoff/5))*point ,�Ewidth%=((w%*SCw)/1.25)*point:height%=((h%*SCh)*hscale/1.25)*point ,��putw(5) ,��head_here(�) ,��putxy(x%,y%) ,�$�putxy(x%+width%+1,y%+height%+1) ,�#ș"OS_GBPB",&02,c%,sptr%,!sptr% ,� �align - �head_now - � -��close(!block) -ș"Wimp_CloseWindow",,block -(� -2ݤcheckit(hnd%,ic%) -<!icond=hnd%:icond!4=ic% -F ș"Wimp_GetIconState",,icond -Pflags%=icond!24 -Z=flags%�&F0000 -d��slabicn(handle,icn) -nicond!12=handle -xicond!16=2 -�ș "Wimp_BorderIcon",,icond -� icond!8=0 -�ș "Wimp_BorderIcon",,icond -�� -�� �slabin(handle) -�!icond=handle -�#ș "Wimp_GetPointerInfo",,icond -�ș "Wimp_BorderIcon",,icond -�� -�� �slabout(handle) -�!icond=handle -�#ș "Wimp_GetPointerInfo",,icond -�icond!8 = 0 .ș "Wimp_BorderIcon",,icond .� .��selectcol(colno) ."hex=winpal(colno-14) .,RED=(hex>>8)�&FF .6GREEN=(hex>>16)�&FF .@BLUE=(hex>>24)�&FF .J!block=colour% .T!ș"Wimp_GetWindowInfo",,block .^workx%=block!4-block!20 .hworky%=block!16-block!24 .r)ș "ColourTrans_SetGCOL",hex,,,&100,0 .|&ȓ Ȑ workx%+234,worky%-247,175,48 .� ș "Wimp_SetColour",1,1 .�( ȓ Ȑ workx%+270,worky%-170,344,147 .�0 ș "ColourTrans_SetGCOL",&0000FF00,,,&100,0 .�0 ȓ Ȑ workx%+271,worky%-55,(RED/255)*344,32 .�0 ș "ColourTrans_SetGCOL",&00FF0000,,,&100,0 .�3 ȓ Ȑ workx%+271,worky%-111,(GREEN/255)*344,32 .�0 ș "ColourTrans_SetGCOL",&FF000000,,,&100,0 .�2 ȓ Ȑ workx%+271,worky%-167,(BLUE/255)*344,32 .�H ș "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 .�geecol=hex / �info(colour%,3,�RED) / �info(colour%,7,�GREEN) / �info(colour%,11,�BLUE) /&� /0��application_redraw2 /:RED=(hex>>8)�&FF /DGREEN=(hex>>16)�&FF /NBLUE=(hex>>24)�&FF /Xworkx%=block!4-block!20 /bworky%=block!16-block!24 /l)ș "ColourTrans_SetGCOL",hex,,,&100,0 /v&ȓ Ȑ workx%+234,worky%-247,175,48 /�ș "Wimp_SetColour",1,1 /�( ȓ Ȑ workx%+270,worky%-170,344,147 /�0 ș "ColourTrans_SetGCOL",&0000FF00,,,&100,0 /�0 ȓ Ȑ workx%+271,worky%-55,(RED/255)*344,32 /�0 ș "ColourTrans_SetGCOL",&00FF0000,,,&100,0 /�3 ȓ Ȑ workx%+271,worky%-111,(GREEN/255)*344,32 /�0 ș "ColourTrans_SetGCOL",&FF000000,,,&100,0 /�2 ȓ Ȑ workx%+271,worky%-167,(BLUE/255)*344,32 /�Gș "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 /�geecol=hex 0� 0 ��dragcol 0 !block=colour% 0 !ș"Wimp_GetWindowInfo",,block 0*workx%=block!4-block!20 04worky%=block!16-block!24 0> ȗ r,s,t 0HI � r>workx%+268 � r<workx%+268+348 � s>worky%-58 � s<worky%-(58-35) � 0R& ȗ ȓ workx%+270,worky%-57,344,30 0\&nred=�(((r-(workx%+270))/344)*255) 0f� nred=-1 nred=0 0p�info(colour%,3,�nred) 0zRED=nred 0�ș "Wimp_SetColour",1,1 0�Aȓ Ȑ workx%+272+(RED/255)*344,worky%-55,342-(RED/255)*344,30 0�/ș "ColourTrans_SetGCOL",&0000FF00,,,&100,0 0�/ȓ Ȑ workx%+270,worky%-55,(RED/255)*344,30 0�'ș "ColourTrans_SetGCOL",0,,,&100,0 0�"ȓ workx%+270,worky%-58,344,34 0�'hex=(BLUE<<24)+(GREEN<<16)+(RED<<8) 0�)ș "ColourTrans_SetGCOL",hex,,,&100,0 0�&ȓ Ȑ workx%+234,worky%-247,175,48 0�Gș "ColourTrans_SetGCOL",0,,,&100,0:ȓ workx%+233,worky%-248,176,49 0�!ȗ r,s,t:� t=1 � t=4 �dragcol 0� �Mode 0�ȗ ȓ 0,0,xmax-1,ymax-1 1 � 1� 1J� r>workx%+268 � r<workx%+268+348 � s>worky%-114 � s<worky%-(114-35) � 1$&ȗ ȓ workx%+270,worky%-112,344,30 1.(ngreen=�(((r-(workx%+270))/344)*255) 18� ngreen=-1 ngreen=0 1B�info(colour%,7,�ngreen) 1LGREEN=ngreen 1Vș "Wimp_SetColour",1,1 1`Fȓ Ȑ workx%+272+(GREEN/255)*344,worky%-111,342-(GREEN/255)*344,30 1j/ș "ColourTrans_SetGCOL",&00FF0000,,,&100,0 1t2ȓ Ȑ workx%+271,worky%-111,(GREEN/255)*344,30 1~'ș "ColourTrans_SetGCOL",0,,,&100,0 1�#ȓ workx%+270,worky%-114,344,34 1�'hex=(BLUE<<24)+(GREEN<<16)+(RED<<8) 1�)ș "ColourTrans_SetGCOL",hex,,,&100,0 1�&ȓ Ȑ workx%+234,worky%-247,175,48 1�Gș "ColourTrans_SetGCOL",0,,,&100,0:ȓ workx%+233,worky%-248,176,49 1�!ȗ r,s,t:� t=1 � t=4 �dragcol 1� �Mode 1�ȗ ȓ 0,0,xmax-1,ymax-1 1�� 1�� 1�J� r>workx%+268 � r<workx%+268+348 � s>worky%-170 � s<worky%-(170-35) � 1�&ȗ ȓ workx%+270,worky%-168,344,30 2 'nblue=�(((r-(workx%+270))/344)*255) 2 � nblue=-1 nblue=0 2BLUE=nblue 2�info(colour%,11,�nblue) 2(ș "Wimp_SetColour",1,1 22Fȓ Ȑ workx%+272+(BLUE/255)*344,worky%-167,342-((BLUE/255)*344),30 2</ș "ColourTrans_SetGCOL",&FF000000,,,&100,0 2F1ȓ Ȑ workx%+270,worky%-167,(BLUE/255)*344,30 2P'ș "ColourTrans_SetGCOL",0,,,&100,0 2Z#ȓ workx%+270,worky%-170,344,34 2d'hex=(BLUE<<24)+(GREEN<<16)+(RED<<8) 2n)ș "ColourTrans_SetGCOL",hex,,,&100,0 2x&ȓ Ȑ workx%+234,worky%-247,175,48 2�Gș "ColourTrans_SetGCOL",0,,,&100,0:ȓ workx%+233,worky%-248,176,49 2� � Blue 2�!ȗ r,s,t:� t=1 � t=4 �dragcol 2� �Mode 2�ȗ ȓ 0,0,xmax-1,ymax-1 2�� 2�� 2�� 2� ��app_re3 2� workx%=block!4-block!20 2� worky%=block!16-block!24 2�-ș "ColourTrans_SetGCOL",hexc(1),,,&100,0 2�%ȓ Ȑ workx%+1122,worky%-58,50,42 3-ș "ColourTrans_SetGCOL",hexc(2),,,&100,0 3&ȓ Ȑ workx%+1122,worky%-116,50,42 3-ș "ColourTrans_SetGCOL",hexc(3),,,&100,0 3"&ȓ Ȑ workx%+1122,worky%-180,50,42 3,-ș "ColourTrans_SetGCOL",hexc(4),,,&100,0 36&ȓ Ȑ workx%+1122,worky%-430,50,42 3@� curspr$<>"" � 3J-ș "ColourTrans_SetGCOL",hexc(0),,,&100,0 3T'ȓ Ȑ workx%+400,worky%-352,163,144 3^4ș &2E,256+40,spr%,curspr$ � A,B,C,w%,h%,D,mode% 3h.ș"OS_ReadModeVariable",mode%,3 �c,cl,cols 3r,ș"OS_ReadModeVariable",mode%,4 �,,xeig% 3|,ș"OS_ReadModeVariable",mode%,5 �,,yeig% 3�wi%=w%<<xeig% 3�he%=h%<<yeig% 3�� !(4+spr%)>0 � 3�� !(48+spr%)>44 � 3�� col%=0 � 15 3�'palette%!(col%*4)=!(60+col%*8+spr%) 3� � col% 3�Dș "ColourTrans_SelectTable",!(56+spr%),palette%,-1,-1,scalblok% 3�� 3�Cș "ColourTrans_SelectTable",!(56+spr%),defpal%,-1,-1,scalblok% 3�� 3�� 3�xoff=0:yoff=0 4� �vga(mode%) � 4� h%>w% shear=72 � shear=82 4� 4&#� (h%*2)>w% shear=36 � shear=82 40� 4:%ș"OS_ReadModeVariable",�,11 �,,C 4D%ș"OS_ReadModeVariable",�,12 �,,B 4N C+=1:B+=1 4XC� B/C=.8 � �vga(mode%) � hscale=1: � 1 means VGA, square pixels 4b&� B/C=.75 � �vga(mode%) � hscale=1 4l/� B/C<>.8 � B/C<>.75 � �vga(mode%) hscale=2 4v*� B/C=.8 � B/C=.75 � modsc=1 � modsc=2 4�$Shear=�checkflag(details%,29,21) 4�Ȏ Shear � 4�� � 4�'� B/C=.8 � � �vga(mode%) � hscale=1 4�(� B/C=.75 � � �vga(mode%) � hscale=1 4�1� B/C<>.8 � B/C<>.75 � � �vga(mode%) hscale=2 4�@� w%>82 � h%>72 � h%<w% � SCw=w%/shear:SCh=w%/(shear/hscale) 4�@� w%>82 � h%>72 � h%>w% � SCw=h%/shear:SCh=h%/(shear/hscale) 4�(� w%>82 � h%<72 � SCw=w%/shear:SCh=1 4�1� w%<82 � h%>72 � SCw=1:SCh=h%/(shear/hscale) 4� � force � 4�N� w%<82 � h%<72 � h%<w% � �vga(mode%) � SCw=w%/shear:SCh=w%/(shear/hscale) 4�N� w%<82 � h%<72 � h%>w% � �vga(mode%) � SCw=h%/shear:SCh=h%/(shear/hscale) 5T� w%<82 � h%<36 � (h%*2)<w% � � �vga(mode%) � SCw=w%/shear:SCh=w%/(shear/hscale) 5T� w%<82 � h%<36 � (h%*2)>w% � � �vga(mode%) � SCw=h%/shear:SCh=h%/(shear/hscale) 5� 5 %� w%<82 � h%<72 � SCw=1:SCh=modsc 5*� 54Ȏ centred � 5> � � 5H*� �vga(mode%) � � force � yoff=(72-h%) 5R2� �vga(mode%) � force � yoff=(72-((1/SCh)*h%)) 5\4� � �vga(mode%) � force yoff=(72-((1/SCh)*h%))/2 5f0� � �vga(mode%) � � force � yoff=(72-(2*h%)) 5pxoff=(82-((1/SCw)*w%)) 5z*� force � h%<w% � �vga(mode%) � xoff=0 5�*� force � h%>w% � �vga(mode%) � yoff=0 5�0� force � (h%*2)<w% � � �vga(mode%) � xoff=0 5�0� force � (h%*2)>w% � � �vga(mode%) � yoff=0 5� � 5�� � 5�'� B/C=.8 � � �vga(mode%) � hscale=2 5�(� B/C=.75 � � �vga(mode%) � hscale=2 5�1� B/C<>.8 � B/C<>.75 � � �vga(mode%) hscale=4 5� SCw=w%/82:SCh=h%/(72/hscale) 5�� 5�[!scal%=wi%:scal%!4=he%:scal%!8=�((w%/((1/SCw)/2))+0.5):scal%!12=�((h%/((1/SCh)/2))+0.5) 5�Mș 46,&134,spr%,curspr$,workx%+400+xoff,worky%-352+yoff,8,scal%,scalblok% 5�� 6� 6��addcol 6hexc(io)=hex 6$�close(colour%) 6. !block=details% 68" ș"Wimp_GetWindowInfo",,block 6B workx%=block!4-block!20 6L worky%=block!16-block!24 6V Ȏ io � 6` � 1: 6jH ș"Wimp_ForceRedraw",-1,workx%+1120,worky%-58,workx%+1180,worky%-10 6t �redraw(card%) 6~ � 2: 6�I ș"Wimp_ForceRedraw",-1,workx%+1120,worky%-120,workx%+1180,worky%-72 6� �redraw(card%) 6� � 3: 6�J ș"Wimp_ForceRedraw",-1,workx%+1120,worky%-182,workx%+1180,worky%-134 6� �redraw(card%) 6� � 4: 6�J ș"Wimp_ForceRedraw",-1,workx%+1120,worky%-430,workx%+1180,worky%-382 6� �redraw(card%) 6� � 0: 6�H ș"Wimp_ForceRedraw",-1,workx%+400,worky%-352,workx%+564,worky%-210 6� �redraw(card%) 6� � 7 � 7 ��drawsprite 7� curspr$="" � 7!block=details% 7(!ș"Wimp_GetWindowInfo",,block 72workx%=block!4-block!20 7<worky%=block!16-block!24 7FGș"Wimp_ForceRedraw",-1,workx%+400,worky%-352,workx%+564,worky%-208 7P!block=card% 7Z"ș"Wimp_GetWindowState",,block 7dopen=block!32 � (1<<16) 7n� open<>0 � 7x!block=card% 7�!ș"Wimp_GetWindowInfo",,block 7�workx%=block!4-block!20 7�worky%=block!16-block!24 7�Gș"Wimp_ForceRedraw",-1,workx%+390,worky%-300,workx%+564,worky%-156 7�� 7�� 7�ݤclaim(amount%) 7� � mem% 7�+ș"Wimp_SlotSize",-1,-1 � Current,,mem% 7�/ș"Wimp_SlotSize",progneed+amount%,1 � mem% 7� ptr%=� 7�amount%=mem%-ptr% 7� =ptr% 8ݤvga(mod) 8'ș"OS_ReadModeVariable",mod,11 �,,c 8'ș"OS_ReadModeVariable",mod,12 �,,b 8" c+=1:b+=1 8,Ȏ b/c � 86 � 0.8:g=� 8@ � .75:g=� 8J : g=� 8T� 8^=g 8h��areyousure 8r� � savef � 8|�openwin(quit%) 8�� 7 8�1�info(quit%,1,"Your file has been modified.") 8�M!block=130:block!4=131:block!8=-1:ș"OS_ReadVduVariables",block,block+128 8�%ș"OS_ReadModeVariable",�,4 � ,,x 8�%ș"OS_ReadModeVariable",�,5 � ,,y 8�9ȗ ȓ 0,0,(((block!128)+1)*2^x)-1,((block!132)+1)*2^y 8�� 8�2� savef șreinter,mytask%:ș"Wimp_CloseDown":� 8�� 8���query(qu$) 8��openwin(query%) 8�� 7 8�!block=query% 9!ș"Wimp_GetWindowInfo",,block 9workx%=block!12-block!4 9worky%=block!16-block!8 9&'ȗ ȓ block!4,block!8,workx%,worky% 90�info(query%,1,qu$) 9:� 9D ��endq 9N�close(query%) 9XM!block=130:block!4=131:block!8=-1:ș"OS_ReadVduVariables",block,block+128 9b%ș"OS_ReadModeVariable",�,4 � ,,x 9l%ș"OS_ReadModeVariable",�,5 � ,,y 9v9ȗ ȓ 0,0,(((block!128)+1)*2^x)-1,((block!132)+1)*2^y 9�� 9���title(handle,new$) 9�!icond=handle 9�!ș"Wimp_GetWindowInfo",,icond 9�title$=$(icond!76) 9�� new$="" � 9�@� �title$,�(title$)-�(title$)+1)<>"*" � new$=title$+" *":� � 9�� 9�a_p% = !(icond+76):$_p%=new$:ș"Wimp_ForceRedraw",-1,icond!4,(icond!16),icond!12,(icond!16)+36 9�� 9���print 9�!noofpages=�($�info(print%,4)) 9�f� $�info(print%,0)="Not Present" � �query("Can not print, no printer driver present."):noprint=�:� :f� �checkflag(print%,6,21) � copies$="single card.":fullsheet=0:� copies$="full sheet.":fullsheet=1 :/ș "ColourTrans_SetGCOL",&DDDDDD00,,,&100,0 :ȓ Ȑ 288,466,738,194 : 'ș "ColourTrans_SetGCOL",0,,,&100,0 :*ȓ 286,464,740,196 :4ș"Wimp_CreateMenu",,-1 :>� 5 :H � 410,630 :R� "Printing in progress..." :\ � 380,580 :f.� "Prining ";noofpages;" copies, ";copies$ :p � 400,530 :z� "Press Escape to cancel" :�� 4 :�printing=� :� fh%=-1 :�� � :�� � �:� �:�printerr:� :�ș"Hourglass_On" :�fh%=�("printer:") :�#ș"PDriver_SelectJob",fh% � job :�(ș"PDriver_PageSize" �,,,l%,b%,r%,t% :� box!0=-10 :�Jmatrix!0=66000:matrix!4=0:matrix!8=0:matrix!12=66000:� 66000,0,0,66000 :�`� fullsheet=1 origin!0=l%:origin!4=75000:box!8=(290*2.5)+580:box!12=(625*2.5)+400:box!4=-200 :�L� fullsheet=0 origin!0=l%:origin!4=623000:box!8=590:box!12=390:box!4=-10 ;;ș"PDriver_GiveRectangle",0,box,matrix,origin,&FFFFFF00 ;2ș"PDriver_DrawPage",noofpages,box2,0,0 � more ;ȕ more<>0 ;$ �draw ;.*ș"PDriver_GetRectangle",0,box2 � more ;8� ;Bș"PDriver_EndJob",fh% ;L �#fh% ;Vș"PDriver_SelectJob",job ;`ș"Hourglass_Smash" ;j3ș"Wimp_ForceRedraw",-1,286,464,740+288,196+466 ;t� ;~ ��draw ;�� fullsheet=1 � ;�� cardco=1 � 16 � 2 ;�8�drawcard(cardpos(cardco)*2.5,cardpos(cardco+1)*2.5) ;�:�cardsprite(cardpos(cardco)*2.5,cardpos(cardco+1)*2.5) ;�� cardco ;�� ;��drawcard(10,380) ;��cardsprite(10,380) ;�� ;�� ;���drawcard(pxco,pyco) ;�-ș "ColourTrans_SetGCOL",hexc(0),,,&100,0 <