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
<