Home » Archimedes archive » Acorn User » AU 1995-09.adf » !Plantwise » PlantWise/!Plantwise/!runimage
PlantWise/!Plantwise/!runimage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1995-09.adf » !Plantwise |
Filename: | PlantWise/!Plantwise/!runimage |
Read OK: | ✔ |
File size: | 1000A bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10*FX220,27 20*FX229,1 30 40REMminsizz1%=100000:minsizz2%=100000:minsizz3%=100000 50 60PROCsortmemory 70SYS "Wimp_Initialise",200,&4B534154,"Plantwise" TO wimpver%,taskh% 80IF NOT FNalreadyrunning THEN 90 OSCLI"Set PlantWise$isrunning 1" 100ELSE 110 PROCerror("Plantwise is already running",0):SYS "Wimp_CloseDown",,&4B534154:END 120ENDIF 130ONERROR PROCerror(REPORT$+" (Internal error code "+STR$ERL+")"+CHR$0,ERR):SYS "Wimp_CloseDown",taskh%,&4B534154:END 140OSCLI"LOAD <PlantWise$Dir>.code "+STR$~mc% 150PROCmc_starts 160PROCsortsprites 170*Set PlantWise$chaindir <PlantWise$Dir> 180PROCloadunsquash(menuarea%,33*1024,"spfiles.menu") 190PROCinitiallise 200PROCmodechange 210PROCbaricon 220ON ERROR PROCerror(REPORT$+" (Internal error code "+STR$ERL+")"+CHR$0,ERR) 230REPEAT PROCevent:UNTIL quit% 240SYS "Wimp_CloseDown",taskh%,&4B534154 250OSCLI"Set PlantWise$isrunning 0" 260 270*FX229,0 280REMPRINT QUIT 290*QUIT 300REMSYS"OS_Exit",errblk% 310END 320REMSTOP 330 340DEFPROCsortmemory 350indbase%=&9000:iptr%=indbase% 360totindsize%=11920:totwinsize%=13520 370winbase%=indbase%+totindsize%:wptr%=winbase% 380indstarts%=winbase%+totwinsize%:winstarts%=indstarts%+80 390mc%=&F400:animarea%=&FC00:menuarea%=&19000:sqbuffer%=&21400 400detfile%=&25800:detarea%=&2D000:bgarea%=&4B000:sparea%=&53400 410DIM blk% 256,errblk% 256 420ENDPROC 430 440DEFPROCloadunsquash(area%,areasiz%,file$) 450LOCAL len% 460OSCLI"LOAD <PlantWise$chaindir>."+file$+" "+STR$~detfile% 470SYS "OS_File",5,"<PlantWise$Dir>."+file$ TO ,,,,len% 480PROCunsquash(detfile%+20,len%-20,sqbuffer%,17*1024,area%+4,areasiz%-4) 490ENDPROC 500 510DEFPROCsortsprites 520!sparea%=6*1024:sparea%!8=16 530SYS "OS_SpriteOp",&109,sparea% 540SYS "OS_SpriteOp",&10A,sparea%,"<PlantWise$Dir>.sprites" 550!detarea%=120*1024:detarea%!8=16 560SYS "OS_SpriteOp",&109,detarea% 570!animarea%=37*1024:animarea%!8=16 580SYS "OS_SpriteOp",&109,animarea% 590SYS "OS_SpriteOp",&10F,animarea%,"anim",1,405,161,12 600!menuarea%=33*1024:menuarea%!8=16 610SYS "OS_SpriteOp",&109,menuarea% 620!bgarea%=33*1024:bgarea%!8=16 630SYS "OS_SpriteOp",&109,bgarea% 640DIM scale% 16:!scale%=1:scale%!4=1:scale%!8=1:scale%!12=1 650DIM coltrans% 16,sppalet% 128,sysbut$(15) 660RESTORE +0 670DATA &FFFFFF00,&FFFFFF00,&DDDDDD00,&DDDDDD00,&BBBBBB00,&BBBBBB00,&99999900,&99999900,&77777700,&77777700,&55555500,&55555500,&33333300,&33333300,&0,&0 680DATA &99440000,&99440000,&EEEE00,&EEEE00,&CC0000,&CC0000,&DD00,&DD00,&BBEEEE00,&BBEEEE00,&885500,&885500,&BBFF00,&BBFF00,&FFBB0000,&FFBB0000 690FORk%=0TO31:READ a%:sppalet%!(4*k%)=a%:NEXT 700PROCaddpalet(animarea%,"anim") 710ENDPROC 720 730DEFPROCaddpalet(area%,spn$) 740SYS"OS_SpriteOp",&118,area%,spn$ TO ,,r2% 750f%=(r2%+44):t%=sppalet%:FORs%=0TO31:!f%=!t%:t%+=4:f%+=4:NEXT 760ENDPROC 770 780DEFPROCinitiallise 790DIM ibname% 20,menu% 1024,blk2% 256,input_disk_name% 12,txtbuff% 1024 800DIM pdrect% 16,pdrect2% 16,pdtrans% 16,pdplot% 8 810DIM ctrans% 256,paltab% 64,SCALE% 16,inb% 20,outb% 20 820DIM wdefn%(48,6),anmewlines$(5),anmewtitle$(5),findaa%(28),bg%(48),animwtitle$(48) 830maxlabs%=11:maxstops%=13:maxsp%=28 840DIM lines$(1),nolabs%(48,1),words$(1,maxlabs%,3),animsp$(maxsp%-1),animsp%(maxsp%-1,1),nostops%(48),animwords$(1,maxstops%-1) 850totgloss%=26 860DIM gloss$(totgloss%-1,1) 870REM arrays specific to actanim% 880DIM photo$(51),carr%(3,1),root%(5,1),st1%(5,1),st2%(5,1),wood%(10,1),fert%(13,1),fru%(3,5,1),gra$(3),disp1%(9,1),disp2%(7,1),disp3%(2,1),se%(7),sland%(7),cbex%(2),lupex%(1),bean%(12,4,1),syc%(13,1),dand%(6),dse%(7,1),do%(15,2),mlxy%(2,1),coc%(4) 890DIM pea%(8),sunf%(8),whe%(8),ger$(8),corm%(6,1),bulb%(5,1),run%(4,1),rhi%(5,1) 900REMDIM menuwtitle%(3,1),menutype%(14),menuwords$(13,5),menuroute%(13,4) 910!inb%=4:inb%!4=5:inb%!8=11:inb%!12=12:inb%!16=-1 920RESTORE:quit%=FALSE:winctr%=1 930SYS "Wimp_OpenTemplate",,"<PlantWise$Dir>.Templates" 940PROCload_template("menu") 950PROCload_template("animate") 960PROCload_template("animmenu") 970PROCload_template("fastfind") 980PROCload_template("worddefn") 990PROCload_template("whatword") 1000PROCload_template("setup") 1010PROCload_template("proginfo") 1020PROCload_template("demosyst") 1030PROCload_template("demo1") 1040SYS "Wimp_CloseTemplate" 1050a$=FNconverttolower(FNreadsysvar("PlantWise$Dir")) 1060IFINSTR(a$,"adfs::plantwise")<>0 Y%=0 ELSEY%=1 1070SYS "Wimp_CreateWindow",,winstarts%!0 TO menuw% 1080SYS "Wimp_CreateWindow",,winstarts%!4 TO animw% 1090SYS "Wimp_CreateWindow",,winstarts%!8 TO anmew% 1100SYS "Wimp_CreateWindow",,winstarts%!12 TO findw% 1110SYS "Wimp_CreateWindow",,winstarts%!16 TO defnw% 1120SYS "Wimp_CreateWindow",,winstarts%!20 TO wordw% 1130SYS "Wimp_CreateWindow",,winstarts%!24 TO setupw% 1140SYS "Wimp_CreateWindow",,winstarts%!28 TO infow% 1150SYS "Wimp_CreateWindow",,winstarts%!32 TO demow% 1160SYS "Wimp_CreateWindow",,winstarts%!36 TO demo1w% 1170SYS"Sound_Configure",0,0,0,0,0 TO r0%,r1%,r2%,r3%,r4% 1180IFr0%=1:SYS"Sound_Configure",2,r1%,r2%,r3%,r4% 1190PROCloadunsquash(detarea%,100*1024,"spfiles.animmenu0") 1200PROCfill_arrays 1210actmenu%=0:actanim%=-1:wlev%=0:firsttime%=-1:shrunkanme%=0 1220doingmove%=0:firstmove%=0:acttxticn%=0:texton%=0:textnewoff%=0 1230PROChideicn(findw%,41,TRUE):PROChideicn(findw%,59,TRUE):PROChideicn(findw%,77,TRUE):PROChideicn(findw%,22,TRUE):PROChideicn(findw%,89,TRUE) 1240PROCinitwordw 1250simp%=0:PROCselecticn(setupw%,2,TRUE):PROCselecticn(setupw%,3,FALSE) 1260PROCmakeanim(0,-1,0):PROCsetextent(animw%,732) 1270ENDPROC 1280 1290DEFPROCinitwordw 1300glossicn%=-1:wide%=260+252 1310IF(totgloss%MOD2)=0:high%=(totgloss%/2)*56:ELSE:high%=56*(INT(totgloss%/2)+1) 1320!blk%=0:blk%!4=-high%:blk%!8=wide%:blk%!12=0:SYS"Wimp_SetExtent",wordw%,blk% 1330FORj%=0TOtotgloss%-1:PROCputicnstring(wordw%,j%,gloss$(j%,0)):PROCselecticn(wordw%,j%,FALSE):NEXT 1340ENDPROC 1350glossicn%=-1 1360!blk%=0:blk%!4=-(56*totgloss%):blk%!8=252:blk%!12=0:SYS"Wimp_SetExtent",wordw%,blk% 1370FORj%=0TOtotgloss%-1:PROCputicnstring(wordw%,j%,gloss$(j%,0)):PROCselecticn(wordw%,j%,FALSE):NEXT 1380 1390DEFPROCfill_arrays 1400LOCAL j%,k%,l% 1410RESTORE +0 1420DATA "Plant cells","","Types of flowers","The parts of a flower","Plant leaves" 1430DATA "Photosynthesis - making food","The leaf in close-up","Plant stems","Non-woody stems","Woody stems" 1440DATA "Plant roots","A root in close-up","Pollination","Pollination by insects","Pollination by the wind" 1450DATA "Pollination by animals","Pollination by water","Fertilization","Fruits","" 1460DATA "Seed dispersal","'Exploding' fruits","Seed dispersal by the wind","Seed dispersal by animals","Seed dispersal by water" 1470DATA "Seed germination","Seed structure","Seed dormancy","Corms and bulbs","Runners and rhizomes" 1480DATA "","","","","" 1490DATA "","","","","" 1500DATA "","","","","" 1510DATA "","","","" 1520FORj%=0TO48:READ animwtitle$(j%):NEXT 1530RESTORE +0 1540DATA 5,5,0,0,4,4,9,11,6,6,4,4,9,9,5,5,4,5,7,7 1550DATA 2,2,6,7,2,2,6,6,6,6,4,4,1,1,10,10,4,4,0,0 1560DATA 1,1,4,4,3,3,5,5,1,1,8,8,6,7,5,5,5,5,3,3 1570DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1580DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1590FORj%=0TO48:FORk%=0TO1:READ nolabs%(j%,k%):NEXT:NEXT 1600RESTORE +0 1610DATA 0,0,0,0,0,6,1,0,2,5 1620DATA 1,4,3,9,2,1,1,4,9,0 1630DATA 1,2,2,5,1,13,0,8,8,5 1640DATA 0,0,0,0,0,0,0,0,0,0 1650DATA 0,0,0,0,0,0,0,0,0 1660FORj%=0TO48:READ nostops%(j%):NEXT 1670RESTORE +0 1680DATA 0,0,4,0,8,0,0,7,0,0 1690DATA 4,0,8,3,7,0,4,0,0,0 1700DATA 8,6,1,7,0,3,0,0,0,3 1710DATA 0,0,0,0,0,0,0,0,0,0 1720DATA 0,0,0,0,0,0,0,0,0 1730FORj%=0TO48:READ bg%(j%):NEXT 1740RESTORE +0 1750DATA 0,2,4,7,10,12,17,20,25,28,29,30,31,32,33,34,35,36,38,39,40,41,42,43,44,45,46,47,48 1760FORj%=0TO28:READ findaa%(j%):NEXT 1770RESTORE +0 1780DATA "bracts","A modified leaf below or surrounding a flower." 1790DATA "bur","A spikey ball containing seeds." 1800DATA "cellulose","A tough fibrous substance that makes plant cell walls." 1810DATA "chlorophyll","The green pigment in plants which can trap the energy from sunlight for photosynthesis." 1820DATA "chloroplast","A tiny structure in plant cells which contains chlorophyll." 1830DATA "cotyledon","A modified leaf in a seed, often swollen with stored food for the seed to grow." 1840DATA "dehiscent","Fruits that throw out their seeds (explode)." 1850DATA "dicotyledon","Flowering plants with two cotyledons (also called dicot). A typical dicot has broad leaves with branching veins and petals and sepals in multiples of 4 or 5." 1860DATA "epidermis","An outer layer of cells (eg. of leaf or stem)." 1870DATA "fruit","The ovary or ovaries of a flowering plant after fertilization." 1880DATA "glucose","A simple sugar made by photosynthesis." 1890DATA "leaf veins","Tiny tubes in leaves." 1900DATA "mesophyll","Loosely packed cells in a leaf." 1910DATA "midrib","The strong central vein of a leaf." 1920DATA "mineral salts","Simple chemicals that plants take from the soil to help them live." 1930DATA "monocotyledon","Flowering plants with one cotyledon (also called monocot). A typical monocot has a fibrous root system, narrow leaves with parallel veins and petals and sepals in multiples of 3." 1940DATA "palisade cells","The layer of leaf cells which carries out most photosynthesis." 1950DATA "phloem","A network of tubes throughout the plant which carries food and water." 1960DATA "photosynthesis","The process by which green plants make food." 1970DATA "samara","A fruit with wings (eg. Sycamore)." 1980DATA "seed","The fertilized ovule of a flowering plant." 1990DATA "starch","Plants store sugars in long chains which makes starch." 2000DATA "stoma","A tiny hole in the leaf surface." 2010DATA "stomata","More than one stoma." 2020DATA "sucrose","A simple sugar." 2030DATA "xylem","A network of tubes throughout the plant which carries water and salts." 2040FORj%=0TOtotgloss%-1:FORk%=0TO1:READ gloss$(j%,k%):NEXT:NEXT 2050RESTORE +0 2060DATA "Plantwise" 2070DATA "The structure of flowering plants" 2080DATA "The reproduction of flowering plants" 2090DATA "What plants need to live and grow" 2100DATA "How plants survive" 2110DATA "The classification of plants" 2120FORj%=0TO5:READ anmewtitle$(j%):NEXT 2130RESTORE +0 2140DATA "04,07,440,640,368,604,07,548,448,494,340,07,424,232,360,248,07,460,092,394,092" 2150DATA "06,07,262,624,342,532,07,564,640,516,604,07,148,444,124,400,07,138,000,122,108,07,426,128,486,104,07,690,000,654,064" 2160DATA "00," 2170DATA "02,07,138,000,148,044,07,576,000,526,088" 2180DATA "06,07,426,624,462,448,07,462,448,608,392,07,462,448,386,344,07,462,448,484,344,07,080,596,104,492,00,082,376,184,332" 2190DATA "07,07,160,000,136,116,07,160,000,094,096,07,440,000,376,040,07,532,100,586,112,07,514,080,544,048,07,752,152,680,092,07,752,152,788,100" 2200FORj%=0TO5:READ anmewlines$(j%):NEXT 2210RESTORE +0 2220REM STRUCTURE 2230REM plant cells 2240DATA 0,0,0,0,0,0,0 2250DATA 0,0,0,0,0,0,0 2260REM flower 2270DATA 0,1,0,0,0,0,0 2280DATA 0,2,0,0,0,0,0 2290REM leaf 2300DATA 0,1,1,0,0,0,0 2310DATA 1,2,1,0,0,0,0 2320DATA 1,1,2,0,0,0,0 2330REM stem 2340DATA 0,1,1,0,0,0,0 2350DATA 1,2,1,0,0,0,0 2360DATA 1,1,2,0,0,0,0 2370REM root 2380DATA 1,1,0,0,0,0,0 2390DATA 1,2,0,0,0,0,0 2400 2410REM REPRODUCTION 2420REM pollination 2430DATA 1,0,0,1,1,1,1 2440DATA 1,0,0,2,1,1,1 2450DATA 1,0,0,1,2,1,1 2460DATA 1,0,0,1,1,2,1 2470DATA 1,0,0,1,1,1,2 2480REM fertilization 2490DATA 1,1,0,0,0,0,0 2500DATA 1,2,0,0,0,0,0 2510DATA 0,0,0,0,0,0,0 2520REM seed dispersal 2530DATA 1,0,0,1,1,1,1 2540DATA 1,0,0,2,1,1,1 2550DATA 1,0,0,1,2,1,1 2560DATA 1,0,0,1,1,2,1 2570DATA 1,0,0,1,1,1,2 2580REM seed germination 2590DATA 1,1,1,0,0,0,0 2600DATA 0,2,1,0,0,0,0 2610DATA 1,1,2,0,0,0,0 2620REM corms & bulbs 2630DATA 1,0,0,0,0,0,0 2640REM runners and rhizomes 2650DATA 1,0,0,0,0,0,0 2660 2670REM NEEDS 2680REM need water 2690DATA 0,0,0,0,0,0,0 2700REM need light 2710DATA 0,0,0,0,0,0,0 2720REM need air 2730DATA 0,0,0,0,0,0,0 2740REM need warmth 2750DATA 0,0,0,0,0,0,0 2760REM need soil minerals 2770DATA 0,0,0,0,0,0,0 2780 2790REM SURVIVAL 2800REM daily cycles 2810DATA 0,0,0,0,0,0,0 2820REM seasonal cycles 2830DATA 0,0,0,0,0,0,0 2840DATA 0,0,0,0,0,0,0 2850REM protection 2860DATA 0,0,0,0,0,0,0 2870REM competition 2880DATA 0,0,0,0,0,0,0 2890 2900REM CLASSIFICATION 2910REM evolution 2920DATA 0,0,0,0,0,0,0 2930REM flowering plants 2940DATA 0,0,0,0,0,0,0 2950REM conifers 2960DATA 0,0,0,0,0,0,0 2970REM ferns 2980DATA 0,0,0,0,0,0,0 2990REM clubmosses & horsetails 3000DATA 0,0,0,0,0,0,0 3010REM mosses & liverworts 3020DATA 0,0,0,0,0,0,0 3030REM fungi 3040DATA 0,0,0,0,0,0,0 3050REM algae 3060DATA 0,0,0,0,0,0,0 3070REM lichens 3080DATA 0,0,0,0,0,0,0 3090FORj%=0TO48:FORk%=0TO6:READ wdefn%(j%,k%):NEXT:NEXT 3100REM data specific to actanim% (usually animation data) 3110RESTORE +0 3120DATA "02,00,01" 3130DATA "01,04" 3140DATA "01,01" 3150DATA "01,04" 3160DATA "01,01" 3170DATA "01,04" 3180DATA "01,01" 3190REM stop 6 3200REM expand box for 10 so next line is 17 3210DATA "","","","","","","","","","" 3220DATA "02,05,06" 3230DATA "01,07" 3240DATA "01,08" 3250DATA "01,09" 3260DATA "01,10" 3270DATA "01,11" 3280DATA "01,12" 3290DATA "01,11" 3300DATA "01,12" 3310DATA "01,11" 3320DATA "01,12" 3330DATA "01,11" 3340DATA "01,12" 3350REM stop 29 3360DATA "03,05,10,13" 3370DATA "01,14" 3380DATA "01,13" 3390DATA "01,14" 3400DATA "01,13" 3410DATA "02,14,15" 3420DATA "02,13,16" 3430DATA "02,14,17" 3440DATA "02,13,17" 3450DATA "02,14,17" 3460DATA "02,13,17" 3470REM stop 40 3480DATA "02,00,03" 3490DATA "01,18" 3500DATA "01,19" 3510DATA "01,20" 3520REM stop 44 3530DATA "01,21" 3540DATA "01,22" 3550REM stop 46 3560DATA "01,23" 3570DATA "01,24" 3580DATA "01,25" 3590DATA "01,26" 3600DATA "01,27" 3610FORk%=0TO51:READ photo$(k%):NEXT 3620RESTORE +0 3630DATA 138,64,122,40,124,20,128,4 3640FORj%=0TO3:FORk%=0TO1:READ carr%(j%,k%):NEXT:NEXT 3650RESTORE +0 3660DATA 214,164,92,56,194,152,214,124,96,12,196,108 3670FORj%=0TO5:FORk%=0TO1:READ root%(j%,k%):NEXT:NEXT 3680RESTORE +0 3690DATA 118,116,220,116,568,116,674,116,598,128,646,128 3700FORj%=0TO5:FORk%=0TO1:READ st1%(j%,k%):NEXT:NEXT 3710RESTORE +0 3720DATA 106,112,234,112,558,112,686,112,590,124,654,124 3730FORj%=0TO5:FORk%=0TO1:READ st2%(j%,k%):NEXT:NEXT 3740RESTORE +0 3750DATA 232,148,280,192,280,192,280,192,272,180,258,168,244,160,206,150,176,92,148,64,120,36 3760FORj%=0TO10:FORk%=0TO1:READ wood%(j%,k%):NEXT:NEXT 3770RESTORE +0 3780DATA 470,464,456,412,444,364,432,308,426,248,416,196,374,160,314,144,284,144,284,144,284,144,284,144,284,144,284,144 3790FORj%=0TO13:FORk%=0TO1:READ fert%(j%,k%):NEXT:NEXT 3800RESTORE +0 3810DATA 54,432,50,500,50,432,36,384,24,352,24,352,582,512,588,512,506,444,418,384,394,348,0,0,134,156,130,168,136,84,134,48,132,28,130,28,680,160,692,180,642,144,570,108,504,80,0,0 3820FORj%=0TO3:FORk%=0TO5:FORl%=0TO1:READ fru%(j%,k%,l%):NEXT:NEXT:NEXT 3830RESTORE +0 3840DATA "4,350,3,700,1,590,4,600,3,520,0,480" 3850DATA "3,430,0,768,2,594,3,680,0,588,1,504" 3860DATA "0,498,1,792,2,594,0,748,1,612,2,508" 3870DATA "3,430,0,768,2,594,3,680,0,588,1,504" 3880FORj%=0TO3:READ gra$(j%):NEXT 3890RESTORE +0 3900DATA 216,528,274,632,164,572,44,532,40,552,116,632,268,616,98,616,26,536,206,512 3910FORj%=0TO9:FORk%=0TO1:READ disp1%(j%,k%):NEXT:NEXT 3920RESTORE +0 3930DATA 574,556,582,520,752,528,516,628,534,620,748,544,690,608,596,508 3940FORj%=0TO7:FORk%=0TO1:READ disp2%(j%,k%):NEXT:NEXT 3950RESTORE +0 3960DATA 436,628,456,616,442,612 3970FORj%=0TO2:FORk%=0TO1:READ disp3%(j%,k%):NEXT:NEXT 3980RESTORE +0 3990DATA 72,76,36,32,72,96,68,88 4000FORj%=0TO7:READ sland%(j%):NEXT 4010RESTORE +0 4020DATA 264,232,240 4030FORj%=0TO2:READ cbex%(j%):NEXT 4040RESTORE +0 4050DATA 460,376 4060FORj%=0TO1:READ lupex%(j%):NEXT 4070RESTORE +0 4080DATA 258,348,198,364,140,324,100,216,82,60 4090DATA 310,340,372,332,434,248,480,140,536,60 4100DATA 288,328,378,352,532,332,708,284,820,0 4110DATA 240,324,158,336,30,316,-100,0,-100,0 4120DATA 268,304,214,332,162,312,140,244,138,112 4130DATA 366,356,272,392,158,388,74,340,-100,0 4140DATA 358,320,264,340,146,304,74,216,32,88 4150DATA 434,312,406,356,346,340,288,248,254,96 4160DATA 474,284,466,336,442,352,416,276,404,140 4170DATA 574,288,662,336,784,348,820,0,820,0 4180DATA 518,268,562,248,596,196,632,92,820,0 4190DATA 614,252,734,292,820,0,820,0,820,0 4200DATA 594,220,648,228,710,192,764,112,820,0 4210FORj%=0TO12:FORk%=0TO4:FORl%=0TO1:READ bean%(j%,k%,l%):NEXT:NEXT:NEXT 4220RESTORE +0 4230DATA 84,444,126,436,218,396,356,376,490,356,628,324,530,288,418,256,308,232,202,212,80,184,150,156,224,120,318,72 4240FORj%=0TO13:FORk%=0TO1:READ syc%(j%,k%):NEXT:NEXT 4250RESTORE +0 4260DATA 538,490,446,338,258,148,80 4270FORj%=0TO6:READ dand%(j%):NEXT 4280RESTORE +0 4290DATA 508,332,462,312,408,284,352,256,300,232,218,184,142,136,62,80 4300FORj%=0TO7:FORk%=0TO1:READ dse%(j%,k%):NEXT:NEXT 4310RESTORE +0 4320DATA 0,164,596,1,162,560,1,172,524,1,182,484,1,196,436,2,210,420,3,226,432,3,242,480,3,254,536,3,268,596,3,0,650,4,222,560,4,222,456,4,222,336,4,222,188,5,172,4 4330FORj%=0TO15:FORk%=0TO2:READ do%(j%,k%):NEXT:NEXT 4340RESTORE +0 4350DATA 212,4,198,52,170,32 4360FORj%=0TO2:FORk%=0TO1:READ mlxy%(j%,k%):NEXT:NEXT 4370RESTORE +0 4380DATA 392,352,300,224,136 4390FORj%=0TO4:READ coc%(j%):NEXT 4400RESTORE +0 4410DATA 172,172,136,80,68,60,48,40,32 4420FORj%=0TO8:READ pea%(j%):NEXT 4430RESTORE +0 4440DATA 196,196,152,92,72,56,44,36,28 4450FORj%=0TO8:READ sunf%(j%):NEXT 4460RESTORE +0 4470DATA 192,188,156,140,112,88,76,72,64 4480FORj%=0TO8:READ whe%(j%):NEXT 4490RESTORE +0 4500DATA "110,pea","332,sun","634,whe" 4510DATA "070,hyp","348,epi","570,mon" 4520DATA "060,peb","284,sub","586,whb" 4530FORj%=0TO8:READ ger$(j%):NEXT 4540RESTORE +0 4550DATA 26,180,26,180,46,180,46,180,30,72,148,344,130,344 4560FORj%=0TO6:FORk%=0TO1:READ corm%(j%,k%):NEXT:NEXT 4570RESTORE +0 4580DATA 498,160,498,160,498,160,482,160,438,44,428,44 4590FORj%=0TO5:FORk%=0TO1:READ bulb%(j%,k%):NEXT:NEXT 4600RESTORE +0 4610DATA 148,244,234,288,392,212,392,160,372,136 4620FORj%=0TO4:FORk%=0TO1:READ run%(j%,k%):NEXT:NEXT 4630RESTORE +0 4640DATA 362,112,274,112,88,96,0,84,186,184,150,176 4650FORj%=0TO5:FORk%=0TO1:READ rhi%(j%,k%):NEXT:NEXT 4660ENDPROC 4670 4680DEFPROCmodechange 4690SYS"OS_ReadVduVariables",inb%,outb% 4700xmaxec%=(((outb%!8)+1)<<(outb%!0))-1:ymaxec%=(((outb%!12)+1)<<(outb%!4))-1 4710SYS"Wimp_ReadPixTrans",&100,animarea%,"anim",,,,scale%,coltrans% 4720ENDPROC 4730 4740DEFPROCerror(msg$,errno%) 4750!errblk%=99:$(errblk%+4)=msg$ 4760SYS "Wimp_ReportError",errblk%,0,"Plantwise" 4770ENDPROC 4780 4790DEFPROCdiscmess(msg$,errno%) 4800!errblk%=99:$(errblk%+4)=msg$ 4810SYS "Wimp_ReportError",errblk%,%10000,"Plantwise" 4820ENDPROC 4830 4840DEFPROCselecticn(w%,i%,f%) 4850!blk%=w%:blk%!4=i%:blk%!12=(1<<21):IFf%=0 blk%!8=0:ELSE blk%!8=blk%!12 4860SYS "Wimp_SetIconState",,blk% 4870ENDPROC 4880 4890DEFPROCgeticonstate(w%,i%) 4900!blk%=w%:blk%!4=i%:SYS "Wimp_GetIconState",,blk% 4910ENDPROC 4920 4930DEFFNisselected(w%,i%) 4940PROCgeticonstate(w%,i%) 4950=((blk%!24)AND(1<<21))=(1<<21) 4960 4970DEFFNisopen(w%) 4980!blk%=w%:SYS "Wimp_GetWindowState",,blk% 4990=((blk%!32)AND(1<<16))=(1<<16) 5000 5010DEFPROCwintoscrn(b%) 5020!blk2%=!b%:SYS "Wimp_GetWindowState",,blk2% 5030b%!8+=(blk2%!4)-(blk2%!20) 5040b%!12+=(blk2%!16)-(blk2%!24) 5050b%!16+=(blk2%!4)-(blk2%!20) 5060b%!20+=(blk2%!16)-(blk2%!24) 5070ENDPROC 5080 5090DEFFNleaf(f$) I%=LENf$:WHILEI%>1ANDMID$(f$,I%,1)<>"."I%-=1:ENDWHILE 5100IFMID$(f$,I%,1)="."I%+=1 5110=MID$(f$,I%) 5120 5130DEFFNconverttolower(a$) 5140LOCAL l%,b$,ch%:b$="" 5150IFLEN(a$)>0THEN 5160FORl%=1TOLENa$ 5170ch%=ASC(MID$(a$,l%,1)) 5180IF(ch%>&40)AND(ch%<&5B):ch%+=&20 5190b$+=CHR$ch% 5200NEXT 5210ENDIF 5220=b$ 5230 5240DEFFNgeticnstring(w%,i%) 5250!blk%=w%:blk%!4=i%:SYS "Wimp_GetIconState",,blk% 5260=FNreadstring(blk%!28) 5270 5280DEFPROCputicnstring(w%,i%,a$) 5290!blk%=w%:blk%!4=i%:SYS "Wimp_GetIconState",,blk% 5300$(blk%!28)=a$:?((blk%!28)+LENa$)=0 5310blk%!8=0:blk%!12=0:SYS "Wimp_SetIconState",,blk% 5320ENDPROC 5330 5340DEFFNreadstring(p%) 5350LOCALa$:a$="":WHILE (LEN(a$)<255)AND(?p%>31):a$+=CHR$(?p%):p%+=1:ENDWHILE 5360=a$ 5370 5380DEFPROCload_template(winname$) 5390LOCAL j% 5400winstarts%!((winctr%-1)*4)=wptr%:indstarts%!((winctr%-1)*4)=iptr% 5410SYS "Wimp_LoadTemplate",,wptr%,iptr%,indbase%+totindsize%,-1,winname$,0 TO ,,iptr% 5420IFwinname$="animate" animwtitle%=wptr%!72:animwtitlesiz%=wptr%+80 5430IFwinname$="animmenu" anmewtitle%=wptr%!72:anmewtitlesiz%=wptr%+80 5440noicns%=wptr%!84 5450FORj%=0TO(noicns%-1)*32STEP32 5460 PROCcheckicons 5470NEXT 5480IFwinname$="whatword":PROCcreatewordw 5490wptr%+=88+((wptr%!84)*32):winctr%+=1 5500ENDPROC 5510 5520DEFPROCcreatewordw 5530LOCAL ic%,wo%,ico%,row%,col% 5540ic%=0 5550FORcol%=0TO1 5560 FORrow%=0TO12 5570 IF(ic%<totgloss%)AND((col%<>0)OR(row%<>0)) THEN 5580 FORwo%=0TO7:wptr%!(88+(32*ic%)+(4*wo%))=wptr%!(88+(4*wo%)):NEXT 5590 ico%=wptr%+(88+(32*ic%)) 5600 !ico%=(wptr%!88)+(260*col%):ico%!8=(wptr%!(88+8))+(260*col%) 5610 IFrow%>0:ico%!4=!(ico%-32+4)-56:ico%!12=!(ico%-32+12)-56 5620 ico%!20=iptr%:$iptr%="123455678901234":iptr%+=15 5630 ico%!28=15 5640 ENDIF 5650 ic%+=1 5660 NEXT 5670NEXT 5680FORj%=32TO((totgloss%-1)*32)STEP32 5690 PROCcheckicons 5700NEXT 5710wptr%!84=totgloss% 5720ENDPROC 5730 5740DEFPROCcheckicons 5750 icnblk%=wptr%+88+j%:icnf%=(icnblk%!16) 5760 IF FNindirected(icnf%)ANDNOTFNsprite(icnf%)ANDFNtext(icnf%)AND(icnblk%!24<>-1) THEN:IFINSTR(FNreadstring(icnblk%!24),"b0")<>0 icnf%=icnf%AND&FFFF0FFF 5770 IF NOTFNindirected(icnf%)ANDNOTFNsprite(icnf%)ANDFNtext(icnf%) THEN:icnf%=icnf%AND&FFFF3FFF 5780 IF FNindirected(icnf%)ANDFNsprite(icnf%)ANDNOTFNtext(icnf%) THEN 5790 IFwinname$="menu"THEN 5800 icnblk%!24=menuarea%:icnf%=(icnf%AND&FFFF0FFF)OR&00003000 5810 ELSE 5820 IF(winname$="proginfo")OR(winname$="fastfind")THEN 5830 icnblk%!24=sparea%:icnf%=(icnf%AND&FFFF0FFF)OR&00003000 5840 ELSE 5850 icnblk%!24=detarea%:icnf%=(icnf%AND&FFFF0FFF)OR&00003000 5860 ENDIF 5870 ENDIF 5880 ENDIF 5890 IF FNindirected(icnf%)ANDFNsprite(icnf%)ANDFNtext(icnf%) THEN 5900 IF(winname$="animmenu")OR(winname$="animate"):icnf%=(icnf%AND&FFFF0FFF)OR&00003000 5910 IF(winname$="fastfind")OR(winname$="whatword"):icnf%=(icnf%AND&FFFF0FFF)OR&00003000 5920 ENDIF 5930REM IF NOTFNindirected(icnf%)ANDFNsprite(icnf%) THEN 5940REM sprn$=FNreadstring(icnblk%+20) 5950REM SYS "XWimp_SpriteOp",40,,sprn$ TO ,,,w%,h% 5960REM IF(w%ORh%)=0:icnf%=icnf%OR256:$iptr%=sprn$:?(iptr%+(LENsprn$))=0:icnblk%!20=iptr%:icnblk%!24=sparea%:icnblk%!28=LENsprn$:iptr%+=LEN(sprn$)+1 5970REM ENDIF 5980 icnblk%!16=icnf% 5990ENDPROC 6000 6010DEFFNindirected(f%) 6020=((f%AND256)=256) 6030 6040DEFFNsprite(f%) 6050=((f%AND2)=2) 6060 6070DEFFNtext(f%) 6080=((f%AND1)=1) 6090 6100DEFPROCbaricon 6110$ibname%="frame1" 6120!blk%=-1:blk%!4=0:blk%!8=0:blk%!12=84:blk%!16=72 6130blk%!20=&1000313A:blk%!24=ibname%:blk%!28=sparea%:blk%!32=LEN$ibname% 6140SYS "Wimp_CreateIcon",,blk% TO ibh% 6150ENDPROC 6160 6170DEFPROCmakemenusprites(m%) 6180SYS "OS_SpriteOp",&109,menuarea% 6190PROCunsquash(menufile%(m%,0),menufile%(m%,1),sqbuffer%,17*1024,menuarea%+4,(27*1024)-4) 6200ENDPROC 6210 6220DEFPROCunsquash(inptr%,insiz%,bufptr%,bufsiz%,outptr%,outsiz%) 6230REM first call with input size to see how big workspace should be 6240REMSYS "Squash_Decompress",%1000,insiz%,0,0,0,0 TO r0% 6250REMIFr0%<=bufsiz%:fast%=%100:ELSE:fast%=0 6260REMsomeleft%=insiz% 6270REM done%=0 6280REMr2%=inptr%:r4%=outptr%:r5%=outsiz% 6290REMWHILE someleft% 6300SYS "Squash_Decompress",%100,bufptr%,inptr%,insiz%,outptr%,outsiz% TO r0%,r1%,r2%,r3%,r4%,r5% 6310IFr0%=1:PROCerror("Squash_Decompress ran out of input data",0):SYS "Wimp_CloseDown",,&4B534154:END 6320IFr0%=2:PROCerror("Squash_Decompress ran out of output space",0):SYS "Wimp_CloseDown",,&4B534154:END 6330REMPROCerror(STR$~(r0%)+" "+STR$~(r1%)+" "+STR$~(r2%)+" "+STR$~(r3%)+" "+STR$~(r4%)+" "+STR$~(r5%),0) 6340REMENDWHILE 6350ENDPROC 6360 6370DEFPROCopen_menuw(am%,aa%) 6380LOCAL j% 6390IFFNisopen(menuw%):PROCclosewind(blk%) 6400IFam%>0THEN 6410 FORj%=6TO18STEP3 6420 IFam%=((j%/3)-1):PROCselecticn(menuw%,j%,TRUE):ELSE:PROCselecticn(menuw%,j%,FALSE) 6430 NEXT 6440ENDIF 6450!blk%=menuw%:SYS "Wimp_GetWindowState",,blk% 6460IFfirsttime%THEN 6470 IFxmaxec%>1280:blk%!4=INT((xmaxec%-1280)/2):ELSE:blk%!4=0 6480 IFymaxec%>1024:blk%!8=INT((ymaxec%-1024)/2):ELSE:blk%!8=0 6490 blk%!12=(blk%!4)+352:blk%!16=(blk%!8)+1024:blk%!20=0:blk%!24=0 6500ENDIF 6510!blk%=menuw%:blk%!28=-1 6520PROCopenwind(blk%) 6530PROCopen_animw(am%,aa%) 6540ENDPROC 6550 6560DEFPROCopen_findw 6570LOCAL j% 6580FORj%=35TO88:PROCselecticn(findw%,j%,FALSE):NEXT 6590findicn%=0 6600IF(actmenu%>0)AND(actanim%=-1):PROCselecticn(findw%,34+actmenu%,TRUE):findicn%=34+actmenu% 6610IFactanim%>=0:PROCselecticn(findw%,40+actanim%,TRUE):findicn%=40+actanim% 6620!blk%=findw%:SYS "Wimp_GetWindowState",,blk% 6630IFxmaxec%>1280:blk%!4=INT((xmaxec%-1280)/2):ELSE:blk%!4=0 6640IFymaxec%>960:blk%!8=INT((ymaxec%-960)/2):ELSE:blk%!8=0 6650blk%!12=(blk%!4)+1280:blk%!16=(blk%!8)+960:blk%!20=0:blk%!24=0 6660blk%!28=-1:PROCopenwind(blk%) 6670ENDPROC 6680 6690DEFPROCopen_mess(m$) 6700PROCputicnstring(demow%,0,m$) 6710!blk2%=anmew%:SYS "Wimp_GetWindowState",,blk2% 6720blk%!4=blk2%!4:blk%!12=(blk%!4)+882 6730IF(blk2%!8)<132:blk%!16=132:ELSE:blk%!16=blk2%!8-44 6740blk%!8=(blk%!16)-132 6750!blk%=demow%:blk%!20=0:blk%!24=0:blk%!28=-1 6760PROCopenwind(blk%) 6770ENDPROC 6780 6790DEFPROCopen_messff 6800PROCputicnstring(demow%,0,"Only topics with an orange background are available in this demonstration system.") 6810!blk2%=findw%:SYS "Wimp_GetWindowState",,blk2% 6820blk%!4=(blk2%!4)+200:blk%!12=(blk%!4)+882 6830IF(blk2%!8)<132:blk%!16=132:ELSE:blk%!16=(blk2%!8)-44 6840blk%!8=(blk%!16)-132 6850!blk%=demow%:blk%!20=0:blk%!24=0:blk%!28=-1 6860PROCopenwind(blk%) 6870ENDPROC 6880 6890DEFPROCopen_messww 6900PROCputicnstring(demow%,0,"This is only a part of the What Word facility.") 6910!blk2%=wordw%:SYS "Wimp_GetWindowState",,blk2% 6920REMblk%!4=(blk2%!4)+200:blk%!12=(blk%!4)+882 6930IFxmaxec%>882:blk%!4=INT((xmaxec%-882)/2):ELSE:blk%!4=0 6940blk%!12=(blk%!4)+882 6950IF(blk2%!8)<132:blk%!16=132:ELSE:blk%!16=(blk2%!8)-44 6960blk%!8=(blk%!16)-132 6970!blk%=demow%:blk%!20=0:blk%!24=0:blk%!28=-1 6980PROCopenwind(blk%) 6990ENDPROC 7000 7010DEFPROCopen_mess1 7020!blk%=demo1w%:SYS "Wimp_GetWindowState",,blk% 7030IFxmaxec%>1040:blk%!4=INT((xmaxec%-1040)/2):ELSE:blk%!4=0 7040IFymaxec%>740:blk%!8=INT((ymaxec%-740)/2):ELSE:blk%!8=0 7050blk%!12=(blk%!4)+1040:blk%!16=(blk%!8)+740:blk%!20=0:blk%!24=0 7060blk%!28=-1:PROCopenwind(blk%) 7070ENDPROC 7080 7090DEFPROCopen_wordw 7100LOCAL j% 7110FORj%=0TOtotgloss%-1:PROCselecticn(wordw%,j%,FALSE):NEXT 7120!blk%=wordw%:SYS "Wimp_GetWindowState",,blk% 7130IFxmaxec%>wide%:blk%!4=INT((xmaxec%-wide%)/2):ELSE:blk%!4=0 7140IFymaxec%>high%:blk%!8=INT((ymaxec%-high%)/2):ELSE:blk%!8=0 7150blk%!12=(blk%!4)+wide%:blk%!16=(blk%!8)+high%:blk%!20=0:blk%!24=0 7160blk%!28=-1:PROCopenwind(blk%) 7170ENDPROC 7180 7190DEFPROCopen_defnw(i%) 7200LOCAL j% 7210PROCputicnstring(defnw%,0,gloss$(i%,0)):PROCputicnstring(defnw%,1,gloss$(i%,1)) 7220IFNOTFNisopen(defnw%)THEN 7230 !blk%=defnw%:SYS "Wimp_GetWindowState",,blk% 7240 IFxmaxec%>842:blk%!4=INT((xmaxec%-842)/2):ELSE:blk%!4=0 7250 IFymaxec%>244:blk%!8=INT((ymaxec%-244)/2):ELSE:blk%!8=0 7260 blk%!12=(blk%!4)+842:blk%!16=(blk%!8)+244:blk%!20=0:blk%!24=0 7270 blk%!28=-1:PROCopenwind(blk%) 7280ENDIF 7290ENDPROC 7300 7310DEFPROCopen_animw(am%,aa%) 7320LOCAL j%,detsiz%,k% 7330IFfirsttime%THEN 7340 firsttime%=0 7350 !blk%=anmew%:SYS "Wimp_DeleteWindow",,blk% 7360 !((winstarts%!8)+52)=-56 7370 SYS "Wimp_CreateWindow",,winstarts%!8 TO anmew% 7380 PROCinitanmewlabs(0) 7390 !anmewtitlesiz%=LEN(anmewtitle$(0))+1:$anmewtitle%=anmewtitle$(0) 7400 !blk%=anmew%:SYS "Wimp_GetWindowState",,blk% 7410 IFxmaxec%>1280:blk%!4=INT((xmaxec%-1280)/2)+396:ELSE:blk%!4=396 7420 IFymaxec%>1024:blk%!8=INT((ymaxec%-1024)/2):ELSE:blk%!8=0 7430 blk%!12=(blk%!4)+842:blk%!16=(blk%!8)+1024:blk%!20=0:blk%!24=0 7440 blk%!28=-1:PROCopenwind(blk%) 7450 actmenu%=am%:actanim%=aa% 7460 ENDPROC 7470ENDIF 7480IFFNisopen(animw%):PROCclosewind(blk%) 7490IFFNisopen(anmew%):PROCclosewind(blk%) 7500IFam%<>0 THEN 7510 IFNOTshrunkanme%THEN 7520 IFam%>0:PROCresizeanmew:PROCsetextent(anmew%,800):shrunkanme%=-1 7530 ENDIF 7540ENDIF 7550IFaa%=-1THEN 7560 PROCinitanmewlabs(am%) 7570 !anmewtitlesiz%=LEN(anmewtitle$(am%))+1:$anmewtitle%=anmewtitle$(am%) 7580 *Set PlantWise$chaindir <PlantWise$Dir> 7590 IFY%=0:test%=0:REPEAT:PROCfloppy_disk("Plantwise","$.!Plantwise.spfiles.anim20"):UNTILerror%=0 7600 IF(actmenu%<>am%)OR(actanim%<>aa%):PROCloadunsquash(detarea%,100*1024,"spfiles.animmenu"+STR$(am%)) 7610 PROCmakeanim(am%,aa%,0):IFam%>0:PROCaddanmewlines(am%) 7620ELSE 7630 PROCinitanimw(aa%) 7640 !animwtitlesiz%=LEN(animwtitle$(aa%))+1:$animwtitle%=animwtitle$(aa%) 7650 IFactanim%<>aa%THEN 7660 *Set PlantWise$chaindir <PlantWise$Dir> 7670 IFY%=0:test%=0:REPEAT:PROCfloppy_disk("Plantwise","$.!Plantwise.spfiles.anim20"):UNTILerror%=0 7680 IFbg%(aa%)THEN 7690 !detarea%=120*1024:detarea%!8=16:SYS "OS_SpriteOp",&109,detarea% 7700 !bgarea%=33*1024:bgarea%!8=16:SYS "OS_SpriteOp",&109,bgarea% 7710 PROCgetbg(aa%):PROCloadunsquash(detarea%,120*1024,"spfiles.anim"+STR$(aa%)) 7720 PROCspecialbg(aa%) 7730 ELSE 7740 !detarea%=153*1024:detarea%!8=16:SYS "OS_SpriteOp",&109,detarea% 7750 PROCloadunsquash(detarea%,153*1024,"spfiles.anim"+STR$(aa%)) 7760 ENDIF 7770 PROCgetwordfile(aa%):PROCgetnumbfile(aa%) 7780 ENDIF 7790 PROCmakeanim(am%,aa%,bg%(aa%)) 7800 IFtexton%:PROCremovetext(aa%):acttxticn%=0:PROCselecticn(animw%,1,TRUE):PROCaddtext(aa%) 7810ENDIF 7820IFactanim%=-1:!blk%=anmew%:ELSE:!blk%=animw% 7830IF(actmenu%=0)AND(am%<>0) THEN 7840 FORj%=4TO20STEP4:blk%!j%=blk2%!j%:NEXT 7850 blk%!24=(blk2%!24)+56 7860 IF((blk2%!32)AND&40000)=&40000:blk%!12=(blk%!4)+842:blk%!8=(blk%!16)-1024 7870ELSE 7880 SYS "Wimp_GetWindowState",,blk% 7890 IF((blk%!32)AND&40000)=&40000:blk%!12=(blk%!4)+842:blk%!8=(blk%!16)-1024 7900ENDIF 7910IFaa%=-1:!blk%=anmew%:ELSE:!blk%=animw% 7920blk%!28=-1:PROCopenwind(blk%) 7930actmenu%=am%:actanim%=aa% 7940ENDPROC 7950 7960DEFPROCspecialbg(aa%) 7970CASE aa% OF 7980 WHEN 14: SYS"OS_SpriteOp",&13C,bgarea%,"bg7",0:SCALE%!0=12:SCALE%!4=12:SCALE%!8=16:SCALE%!12=16 7990 FORj%=0TO7:SYS"OS_SpriteOp",&134,detarea%,"gr"+STR$(j%MOD3),420+(j%*50),0,&08,SCALE%,0:PROCflip(2,"gr"+STR$(j%MOD3)):NEXT 8000 PROCflip(2,"gr0"):PROCflip(2,"gr1"):SCALE%!0=1:SCALE%!4=1:SCALE%!8=1:SCALE%!12=1:SYS"OS_SpriteOp",&13C,bgarea%,0,1 8010 WHEN 16:SYS"OS_SpriteOp",&13C,bgarea%,"bg4",0 8020 FOR j%=0TO3:SYS"OS_SpriteOp",&122,detarea%,"bg",0+(408*(j%MOD2)),0+(336*INT(j%/2)),8:NEXT 8030 SYS"OS_SpriteOp",&13C,bgarea%,0,1 8040ENDCASE 8050ENDPROC 8060 8070DEFPROCopen_setupw 8080LOCAL j% 8090!blk%=setupw% 8100IFxmaxec%>1104:blk%!4=INT((xmaxec%-1104)/2):ELSE:blk%!4=0 8110IFymaxec%>156:blk%!8=INT((ymaxec%-156)/2):ELSE:blk%!8=0 8120blk%!12=(blk%!4)+1104:blk%!16=(blk%!8)+156 8130blk%!20=0:blk%!24=0:blk%!28=-1 8140PROCopenwind(blk%) 8150ENDPROC 8160 8170DEFPROCgetbg(aa%) 8180CASE aa% OF 8190 WHEN 10:PROCmakebg(aa%,4,-1,332,-1,364,11,13) 8200 WHEN 12:PROCmakebg(aa%,8,-1,124,0,122,1,13) 8210 WHEN 14,23:PROCmakebg(aa%,7,-1,0,0,0,0,0) 8220 WHEN 20:PROCmakebg(aa%,8,0,80,0,78,1,13) 8230 WHEN 22:PROCloadunsquash(detarea%,120*1024,"spfiles.bgs.bg"+STR$(bg%(aa%))) 8240 SYS "OS_SpriteOp",&109,bgarea%:SYS "OS_SpriteOp",&10F,bgarea%,"bg1",1,405,161,12:PROCaddpalet(bgarea%,"bg1") 8250 SYS"OS_SpriteOp",&13C,bgarea%,"bg1",0 8260 VDU18,0,15:VDU25,4,0;0;:VDU25,101,810;644; 8270 SYS "OS_SpriteOp",&122,detarea%,"horiz",0,360,8 8280 VDU18,0,10:VDU25,4,0;200;:VDU25,101,810;360; 8290 VDU23,12,11,10,10,11,11,10,10,11:VDU18,16,0:VDU25,4,0;80;:VDU25,101,810;200; 8300 VDU23,12,11,13,13,11,11,13,13,11:VDU18,16,0:VDU25,4,0;0;:VDU25,101,810;80; 8310 VDU18,0,7:VDU25,4,0;80;:VDU25,101,810;80; 8320 SYS "OS_SpriteOp",&122,detarea%,"cow",186,220,8:SYS "OS_SpriteOp",&122,detarea%,"fence",0,220,8 8330 SYS "OS_SpriteOp",&122,detarea%,"verge",0,184,8:SYS "OS_SpriteOp",&122,detarea%,"verge",404,184,8 8340 SYS"OS_SpriteOp",&13C,bgarea%,0,1 8350 SYS "OS_SpriteOp",&119,detarea%,"horiz":SYS "OS_SpriteOp",&119,detarea%,"cow":SYS "OS_SpriteOp",&119,detarea%,"fence":SYS "OS_SpriteOp",&119,detarea%,"verge" 8360 WHEN 25:PROCmakebg(aa%,3,0,240,0,298,11,13) 8370 WHEN 29:PROCmakebg(aa%,3,-1,188,-1,208,11,13) 8380 OTHERWISE:PROCmakebg(aa%,0,0,0,0,0,0,0) 8390ENDCASE 8400ENDPROC 8410 8420DEFPROCmakebg(aa%,bgno%,flip%,up%,line%,ecfup%,ecf1%,ecf2%) 8430PROCloadunsquash(bgarea%,33*1024,"spfiles.bgs.bg"+STR$(bg%(aa%))) 8440IFbgno%>0 THEN 8450 IFflip%:SYS "OS_SpriteOp",&12F,bgarea%,"bg"+STR$(bgno%) 8460 SYS"OS_SpriteOp",&13C,animarea%,"anim",0 8470 SYS"OS_SpriteOp",&122,bgarea%,"bg"+STR$(bgno%),0,0,0 8480 SYS"OS_SpriteOp",&13C,animarea%,0,1 8490 SYS"OS_SpriteOp",&13C,bgarea%,"bg"+STR$(bgno%),0 8500 SYS"OS_SpriteOp",&122,animarea%,"anim",0,up%,0 8510 IFecfup%>0:VDU23,12,ecf1%,ecf2%,ecf2%,ecf1%,ecf1%,ecf2%,ecf2%,ecf1%:VDU18,16,0:VDU25,4,0;0;:VDU25,101,810;ecfup%; 8520 IFline%:SYS"Wimp_SetColour",7:VDU25,4,0;ecfup%;:VDU25,101,810;ecfup%+2; 8530 SYS"OS_SpriteOp",&13C,bgarea%,0,1 8540ENDIF 8550ENDPROC 8560 8570DEFPROCmakeanim(am%,aa%,bg%) 8580IFaa%=-1THEN 8590 PROCcopysp("men"+STR$(am%),"anim") 8600ELSE 8610 IFbg%ANDNOTtexton% THEN 8620 PROCcopysp("bg"+STR$(bg%),"anim") 8630 ELSE 8640 PROCcl_anim(15) 8650 CASE aa% OF 8660 WHEN 10,16:PROCcopysp("bg4","anim") 8670 WHEN 18:IFNOTtexton% THEN:SYS"OS_SpriteOp",&13C,animarea%,"anim",0:PROCfruitbg:SYS"OS_SpriteOp",&13C,animarea%,0,1 8680 ENDCASE 8690 ENDIF 8700 SYS"OS_SpriteOp",&13C,animarea%,"anim",0 8710 CASE aa% OF 8720 WHEN 4: PROCmakeleaf 8730 WHEN 5: PROCmakephoto 8740 WHEN 6: PROCmakeleafcl 8750 WHEN 20: se%()=0:PROCmakedisp(0,se%()) 8760 WHEN 21: PROCmakedispexp(0,0) 8770 WHEN 22: PROCmakedispwind(0,0,0,-1,0) 8780 WHEN 23: PROCmakedispani(0,-1,0,0,0) 8790 WHEN 24: PROCmakedispwat 8800 ENDCASE 8810 SYS"OS_SpriteOp",&13C,animarea%,0,1 8820ENDIF 8830ENDPROC 8840 8850DEFPROCmakeleaf 8860SYS"OS_SpriteOp",&122,detarea%,"hww",16,0,8:SYS"OS_SpriteOp",&122,detarea%,"ss",276,0,8:SYS"OS_SpriteOp",&122,detarea%,"sw",590,0,8 8870ENDPROC 8880 8890DEFPROCmakephoto 8900SYS"OS_SpriteOp",&122,detarea%,"phbg",0,0,8 8910SYS"OS_SpriteOp",&122,detarea%,"ar30",0,88,8:SYS"OS_SpriteOp",&122,detarea%,"ar20",180,316,8 8920IFsimp%=1:SYS"OS_SpriteOp",&122,detarea%,"equn",0,492,8 8930ENDPROC 8940 8950DEFPROCmakeleafcl 8960SYS"OS_SpriteOp",&122,detarea%,"lecl",58,52,8 8970ENDPROC 8980 8990 9000DEFPROCmakedisp(s%,se%()) 9010LOCAL j%,k% 9020SYS"OS_SpriteOp",&122,detarea%,"tree",336-(8*s%),536,8:SYS"OS_SpriteOp",&122,detarea%,"tree",470+(16*s%),448,8:PROCflip(2,"tree"):SYS"OS_SpriteOp",&122,detarea%,"tree",-16*s%,448,8:PROCflip(2,"tree") 9030IFtexton%:VDU23,12,1,13,13,1,1,13,13,1:VDU18,16,0:VDU25,4,0;0;:VDU25,101,810;160; 9040FORj%=0TO9 9050 IFj%>=6THEN 9060 IFse%(j%-6)=0:SYS"OS_SpriteOp",&122,detarea%,"seed",disp1%(j%,0)-(16*s%),disp1%(j%,1),8 9070 IFse%(j%-6)=1:SYS"OS_SpriteOp",&122,detarea%,"seed",disp1%(j%,0)-16,disp1%(j%,1)-52,8 9080 IFse%(j%-6)=2:SYS"OS_SpriteOp",&122,detarea%,"seed",disp1%(j%,0)-16,disp1%(j%,1)-156,8 9090 IFse%(j%-6)=3:SYS"OS_SpriteOp",&122,detarea%,"seed",disp1%(j%,0)-16,disp1%(j%,1)-312,8 9100 IFse%(j%-6)>=4:SYS"OS_SpriteOp",&122,detarea%,"seed2"+STR$(j%-5),disp1%(j%,0)-16-20,sland%(j%-6),8 9110 ELSE 9120 SYS"OS_SpriteOp",&122,detarea%,"seed",disp1%(j%,0)-(16*s%),disp1%(j%,1),8 9130 ENDIF 9140NEXT 9150FORj%=1TO4:PROCflip(2,"seed2"+STR$(j%)):NEXT 9160FORj%=0TO7 9170 IFj%>=5THEN 9180 IFse%(j%-1)=0:SYS"OS_SpriteOp",&122,detarea%,"seed",disp2%(j%,0)+(16*s%),disp2%(j%,1),8 9190 IFse%(j%-1)=1:SYS"OS_SpriteOp",&122,detarea%,"seed",disp2%(j%,0)+16,disp2%(j%,1)-52,8 9200 IFse%(j%-1)=2:SYS"OS_SpriteOp",&122,detarea%,"seed",disp2%(j%,0)+16,disp2%(j%,1)-156,8 9210 IFse%(j%-1)=3:SYS"OS_SpriteOp",&122,detarea%,"seed",disp2%(j%,0)+16,disp2%(j%,1)-312,8 9220 IFse%(j%-1)>=4:SYS"OS_SpriteOp",&122,detarea%,"seed2"+STR$(j%-4),disp2%(j%,0)+16-20,sland%(j%-1),8 9230 ELSE 9240 SYS"OS_SpriteOp",&122,detarea%,"seed",disp2%(j%,0)+(16*s%),disp2%(j%,1),8 9250 ENDIF 9260NEXT 9270FORj%=0TO2 9280 IFj%=2THEN 9290 IFse%(7)=0:SYS"OS_SpriteOp",&122,detarea%,"seed",disp3%(j%,0)-(8*s%),disp3%(j%,1),8 9300 IFse%(7)=1:SYS"OS_SpriteOp",&122,detarea%,"seed",disp3%(j%,0)-8,disp3%(j%,1)-52,8 9310 IFse%(7)=2:SYS"OS_SpriteOp",&122,detarea%,"seed",disp3%(j%,0)-8,disp3%(j%,1)-156,8 9320 IFse%(7)=3:SYS"OS_SpriteOp",&122,detarea%,"seed",disp3%(j%,0)-8,disp3%(j%,1)-312,8 9330 IFse%(7)>=4:SYS"OS_SpriteOp",&122,detarea%,"seed24",disp3%(j%,0)-8-20,sland%(7),8 9340 ELSE 9350 SYS"OS_SpriteOp",&122,detarea%,"seed",disp3%(j%,0)-(8*s%),disp3%(j%,1),8 9360 ENDIF 9370NEXT 9380FORj%=1TO4:PROCflip(2,"seed2"+STR$(j%)):NEXT 9390SYS"OS_SpriteOp",&122,detarea%,"seed21",520,24,8:SYS"OS_SpriteOp",&122,detarea%,"seed22",352,44,8 9400ENDPROC 9410 9420DEFPROCmakedispexp(cb%,lup%) 9430SYS"OS_SpriteOp",&122,detarea%,"cb",4,0,8:SYS"OS_SpriteOp",&122,detarea%,"lup",446,0,8 9440SYS"OS_SpriteOp",&122,detarea%,"cbex"+STR$(cb%),cbex%(cb%),140,8:SYS"OS_SpriteOp",&122,detarea%,"lupex"+STR$(lup%),lupex%(lup%),168,8 9450ENDPROC 9460 9470DEFPROCmakedispwind(fru%,dan%,dax%,ds%,ds2%) 9480IFtexton% THEN 9490 VDU23,12,11,10,10,11,11,10,10,11:VDU18,16,0:VDU25,4,0;80;:VDU25,101,810;200; 9500 VDU23,12,11,13,13,11,11,13,13,11:VDU18,16,0:VDU25,4,0;0;:VDU25,101,810;80; 9510 VDU18,0,7:VDU25,4,0;80;:VDU25,101,810;80; 9520ENDIF 9530SYS"OS_SpriteOp",&122,detarea%,"leaf",0,344,8:SYS"OS_SpriteOp",&122,detarea%,"fru",0,468,8:SYS"OS_SpriteOp",&122,detarea%,"dan",464,80,8 9540IFdan%>=0THEN 9550 IFdan%<=6:SYS"OS_SpriteOp",&122,detarea%,"dan"+STR$(dan%),dand%(dan%),292,8:ELSE:SYS"OS_SpriteOp",&122,detarea%,"dan6",dax%,292,8 9560ENDIF 9570IFfru%>=0THEN 9580 IFfru%<=4:SYS"OS_SpriteOp",&122,detarea%,"fru"+STR$(fru%),syc%(fru%,0),syc%(fru%,1),8:ELSE:SYS"OS_SpriteOp",&122,detarea%,"fru"+STR$(((fru%-5)MOD4)+1),syc%(fru%,0),syc%(fru%,1),8 9590ENDIF 9600IFds%>=0THEN 9610 SCALE%!0=ds%+1:SCALE%!4=ds%+1:SCALE%!8=8:SCALE%!12=8 9620 SYS"OS_SpriteOp",&134,detarea%,"ds",dse%(ds%,0),dse%(ds%,1),&08,SCALE%,0 9630 SCALE%!0=1:SCALE%!4=1:SCALE%!8=1:SCALE%!12=1 9640ENDIF 9650IFds2%:SYS"OS_SpriteOp",&122,detarea%,"ds2",32,80,8 9660ENDPROC 9670 9680DEFPROCmakedispani(dov%,mou%,mox%,ml%,bur%) 9690SYS"OS_SpriteOp",&122,detarea%,"bsw",0,0,8:SYS"OS_SpriteOp",&122,detarea%,"burd",452,0,8:SYS"OS_SpriteOp",&122,detarea%,"berry",0,544,8 9700IFmou%>=0 THEN 9710 SYS"OS_SpriteOp",&122,detarea%,"mrun"+STR$(mou%),mox%,12,8 9720 IFbur%=1:SYS"OS_SpriteOp",&122,detarea%,"bur",mox%+156+(14*(mou%MOD2)),88,8 9730 IFbur%=2:SYS"OS_SpriteOp",&122,detarea%,"bur",214,4,8 9740 IFmou%=2:SYS"OS_SpriteOp",&122,detarea%,"ml"+STR$(ml%),mox%+mlxy%(ml%,0),12+mlxy%(ml%,1),8 9750ENDIF 9760SYS"OS_SpriteOp",&122,detarea%,"bswl",328,12,8:SYS"OS_SpriteOp",&122,detarea%,"burdl",664,0,8 9770SYS"OS_SpriteOp",&122,detarea%,"dov"+STR$(do%(dov%,0)),do%(dov%,1),do%(dov%,2),8 9780ENDPROC 9790 9800DEFPROCmakedispwat 9810VDU23,12,15,0,0,15,15,0,0,15:VDU18,16,0:VDU25,4,0;0;:VDU25,101,810;644; 9820SYS"OS_SpriteOp",&122,detarea%,"land",0,0,8:SYS"OS_SpriteOp",&122,detarea%,"palm",40,68,8:SYS"OS_SpriteOp",&122,detarea%,"coc0",266,392,8 9830ENDPROC 9840 9850 9860DEFPROCcheckanimtext(noof%,lin$) 9870LOCAL j%,k%,stops%():DIM stops%(maxstops%) 9880stops%(0)=-1:FORj%=1TOnoof%:stops%(j%)=VAL(lin$):lin$=RIGHT$(lin$,LEN(lin$)-4):NEXT 9890IFtextnewon%THEN 9900 PROCputicnstring(animw%,9,"") 9910 FORj%=1TOnoof% 9920 IF(sub%>=stops%(j%-1)+1)AND(sub%<=stops%(j%)):PROCputicnstring(animw%,10,animwords$(simp%,j%-1)) 9930 NEXT 9940ENDIF 9950textnewon%=0 9960FORj%=1TOnoof% 9970 IFsub%=stops%(j%-1)+1:PROCputicnstring(animw%,10,animwords$(simp%,j%-1)):PROCputicnstring(animw%,9,""):ENDPROC 9980NEXT 9990ENDPROC 10000 10010DEFPROCmovephoto 10020LOCAL lin$,noa%,k% 10030IFfirstmove%THEN 10040sub%=0:firstmove%=FALSE:elaps%=0 10050ELSE 10060IF(sub%<=7)OR((sub%>=23)AND(sub%<=35))OR((sub%>=39)AND(sub%<=41))THEN:IFTIME<lasttime%+60-elaps%:ENDPROC 10070IF(sub%>=8)AND(sub%<=17)THEN:IFTIME<lasttime%+20-elaps%:ENDPROC 10080IF((sub%>=18)AND(sub%<=22))OR((sub%>=36)AND(sub%<=38))OR((sub%>=42)AND(sub%<=52))THEN:IFTIME<lasttime%+120-elaps%:ENDPROC 10090ENDIF 10100elaps%=TIME 10110IFtexton%:PROCcheckanimtext(6,"006,029,040,044,046,051") 10120IFsub%<52THEN 10130 SYS"OS_SpriteOp",&13C,animarea%,"anim",0 10140 IF(sub%>=7)AND(sub%<=17)THEN 10150 SYS"OS_SpriteOp",&122,detarea%,"phbg",0,0,8:SYS"OS_SpriteOp",&122,detarea%,"ar30",0,88,8 10160 PROCboxexp(sub%-7,10,188,292,-20,-16,40,32,40,32) 10170 ENDIF 10180 IF(sub%<=6)OR(sub%>=17)THEN 10190 lin$=photo$(sub%):noa%=VAL(lin$) 10200 lin$=RIGHT$(lin$,LEN(lin$)-3) 10210 FORk%=1TOnoa% 10220 SYS"OS_SpriteOp",&122,detarea%,animsp$(VAL(lin$)),animsp%(VAL(lin$),0),animsp%(VAL(lin$),1),8 10230 lin$=RIGHT$(lin$,LEN(lin$)-3) 10240 NEXT 10250 ENDIF 10260 PROCmoveendloop(6,"006,029,040,044,046,051",0,32,604,484) 10270ENDIF 10280sub%+=1 10290IFsub%=53:PROCmakeanim(actmenu%,actanim%,bg%(actanim%)):PROCanimateend:PROCplotanim(actanim%) 10300ENDPROC 10310 10320DEFPROCmoveleafcl 10330LOCAL lin$,noa%,k% 10340IFfirstmove%THEN 10350sub%=0:firstmove%=FALSE:elaps%=0 10360ELSE 10370IFsub%=1 THEN:IFTIME<lasttime%+120-elaps%:ENDPROC 10380IF(sub%>=2)AND(sub%<=9)THEN:IFTIME<lasttime%+20-elaps%:ENDPROC 10390IFsub%>=10 THEN:IFTIME<lasttime%+80-elaps%:ENDPROC 10400ENDIF 10410elaps%=TIME 10420IFtexton%:PROCcheckanimtext(1,"015") 10430IFsub%<16THEN 10440 IFsub%<=9:PROCcl_anim(15) 10450 SYS"OS_SpriteOp",&13C,animarea%,"anim",0 10460 IFsub%<=9:SYS"OS_SpriteOp",&122,detarea%,"lecl",58,52,8 10470 PROCboxexp(sub%,9,550,128,-20,-4,80,64,40,32) 10480 CASE sub% OF 10490 WHEN 9,15:SYS"OS_SpriteOp",&122,detarea%,"st00",402,108,8 10500 WHEN 10,14:SYS"OS_SpriteOp",&122,detarea%,"st01",442,144,8 10510 WHEN 11,13:SYS"OS_SpriteOp",&122,detarea%,"st02",442,144,8 10520 WHEN 12:SYS"OS_SpriteOp",&122,detarea%,"st03",442,144,8 10530 ENDCASE 10540 PROCmoveendloop(1,"015",390,96,792,420) 10550ENDIF 10560sub%+=1 10570IFsub%=17:PROCmakeanim(actmenu%,actanim%,bg%(actanim%)):PROCanimateend:PROCplotanim(actanim%) 10580ENDPROC 10590 10600DEFPROCmovedisp 10610IFfirstmove%THEN 10620 sub%=0:firstmove%=FALSE:elaps%=0:se%()=0 10630ELSE 10640 IFTIME<lasttime%+30-elaps%:ENDPROC 10650ENDIF 10660elaps%=TIME 10670IFtexton%:PROCcheckanimtext(1,"023") 10680IFsub%<24THEN 10690 IFtexton% THEN:PROCcl_anim(15):ELSE:PROCcopysp("bg8","anim") 10700 SYS"OS_SpriteOp",&13C,animarea%,"anim",0 10710 IFsub%>=5:se%(0)+=1 10720 IFsub%>=6:se%(1)+=1 10730 IFsub%>=8:se%(2)+=1 10740 IFsub%>=9:se%(3)+=1 10750 IFsub%>=10:se%(4)+=1 10760 IFsub%>=13:se%(5)+=1 10770 IFsub%>=15:se%(6)+=1 10780 IFsub%>=18:se%(7)+=1 10790 IF((sub%+1)MOD4)=3:PROCmakedisp(1,se%()):ELSE:PROCmakedisp((sub%+1)MOD4,se%()) 10800 PROCmoveendloop(1,"023",0,0,810,644) 10810ENDIF 10820sub%+=1 10830IFsub%=25:PROCmakeanim(actmenu%,actanim%,bg%(actanim%)):PROCanimateend:PROCplotanim(actanim%) 10840ENDPROC 10850 10860DEFPROCmovedispexp 10870LOCAL j%,cb%,lup% 10880IFfirstmove%THEN 10890 sub%=0:firstmove%=FALSE:elaps%=0 10900ELSE 10910 IF(sub%=8)OR(sub%=15) THEN 10920 IFTIME<lasttime%+100-elaps%:ENDPROC 10930 ELSE 10940 IFTIME<lasttime%+30-elaps%:ENDPROC 10950 ENDIF 10960ENDIF 10970elaps%=TIME 10980IFtexton%:PROCcheckanimtext(2,"007,014") 10990IFsub%<15THEN 11000 IFtexton% THEN:PROCcl_anim(15):ELSE:PROCcopysp("bg6","anim") 11010 SYS"OS_SpriteOp",&13C,animarea%,"anim",0 11020 IFsub%=0:cb%=0 11030 IFsub%=1:cb%=1 11040 IFsub%>=2:cb%=2 11050 IFsub%<=8:lup%=0:ELSE:lup%=1 11060 PROCmakedispexp(cb%,lup%) 11070 IF(sub%>=2)AND(sub%<=6) THEN:FORj%=0TO4:SYS"OS_SpriteOp",&122,detarea%,"bean"+STR$(RND(3)-1),bean%(j%,sub%-2,0),bean%(j%,sub%-2,1),8:NEXT 11080 IF(sub%>=9)AND(sub%<=13) THEN:FORj%=5TO12:SYS"OS_SpriteOp",&122,detarea%,"bean"+STR$(RND(3)-1),bean%(j%,sub%-9,0),bean%(j%,sub%-9,1),8:NEXT 11090 PROCmoveendloop(2,"004,011",0,60,810,440) 11100ENDIF 11110sub%+=1 11120IFsub%=16:PROCmakeanim(actmenu%,actanim%,bg%(actanim%)):PROCanimateend:PROCplotanim(actanim%) 11130ENDPROC 11140 11150DEFPROCmovedispwind 11160LOCAL fru%,dan%,dax%,ds%,ds2% 11170IFfirstmove%THEN 11180 sub%=0:firstmove%=FALSE:elaps%=0 11190ELSE 11200 IF(sub%=13)OR(sub%=31) THEN 11210 IFTIME<lasttime%+180-elaps%:ENDPROC 11220 ELSE 11230 IFTIME<lasttime%+30-elaps%:ENDPROC 11240 ENDIF 11250ENDIF 11260elaps%=TIME 11270IFtexton%:PROCcheckanimtext(2,"012,030") 11280IFsub%<31THEN 11290 IFtexton% THEN:PROCcl_anim(15):ELSE:PROCcopysp("bg1","anim") 11300 SYS"OS_SpriteOp",&13C,animarea%,"anim",0 11310 IFsub%<=12:fru%=sub%+1:ELSE:fru%=-1 11320 IFsub%>=14:dan%=sub%-14:ELSE:dan%=0 11330 IFsub%>=21:dax%=20-((sub%-21)*60):ELSE:dax%=0 11340 IF(sub%>=17)AND(sub%<=24):ds%=sub%-17:ELSE:ds%=-1 11350 IFsub%>=25:ds2%=-1:ELSE:ds2%=0 11360 PROCmakedispwind(fru%,dan%,dax%,ds%,ds2%) 11370 IFsub%<=12:PROCmoveendloop(2,"012,030",54,60,794,564):ELSE:PROCmoveendloop(2,"012,030",0,60,668,508) 11380ENDIF 11390sub%+=1 11400IFsub%=32:PROCmakeanim(actmenu%,actanim%,bg%(actanim%)):PROCanimateend:PROCplotanim(actanim%) 11410ENDPROC 11420 11430DEFPROCmovedispani 11440LOCAL dov%,mou%,mox%,ml%,bur% 11450IFfirstmove%THEN 11460 sub%=0:firstmove%=FALSE:elaps%=0 11470ELSE 11480 IF(sub%=13)OR(sub%=22)OR(sub%=34)OR(sub%=44)OR(sub%=49) THEN 11490 IFTIME<lasttime%+130-elaps%:ENDPROC 11500 ELSE 11510 IFTIME<lasttime%+30-elaps%:ENDPROC 11520 ENDIF 11530ENDIF 11540elaps%=TIME 11550IFtexton%:PROCcheckanimtext(5,"012,021,032,033,048") 11560IFsub%<49THEN 11570 IFtexton% THEN:PROCcl_anim(15):ELSE:PROCcopysp("bg7","anim") 11580 SYS"OS_SpriteOp",&13C,animarea%,"anim",0 11590 IFsub%<=11:mox%=776-(sub%*64):mou%=sub%MOD2:bur%=1 11600 IFsub%=12:mox%=72:mou%=2:ml%=0:bur%=1 11610 IF(sub%>=13)AND(sub%<=19):mox%=72:mou%=2:ml%=2-(sub%MOD2):bur%=1 11620 IFsub%=20:mox%=72:mou%=2:ml%=2:bur%=2 11630 IFsub%=21:mox%=72:mou%=2:ml%=0:bur%=2 11640 IF(sub%>=22)AND(sub%<=32):mox%=72-((sub%-21)*64):mou%=sub%MOD2:bur%=2 11650 IFsub%>=33:mou%=-1:dov%=sub%-33 11660 PROCmakedispani(dov%,mou%,mox%,ml%,bur%) 11670 IFsub%<=33:PROCmoveendloop(5,"012,021,032,033,048",0,0,810,176):ELSE:PROCmoveendloop(5,"012,021,032,033,048",140,4,330,644) 11680ENDIF 11690sub%+=1 11700IFsub%=50:PROCmakeanim(actmenu%,actanim%,bg%(actanim%)):PROCanimateend:PROCplotanim(actanim%) 11710ENDPROC 11720 11730DEFPROCmovedispwat 11740IFfirstmove%THEN 11750 sub%=0:firstmove%=FALSE:elaps%=0 11760ELSE 11770 IFsub%=65 THEN 11780 IFTIME<lasttime%+200-elaps%:ENDPROC 11790 ELSE 11800 IFTIME<lasttime%+40-elaps%:ENDPROC 11810 ENDIF 11820ENDIF 11830elaps%=TIME 11840IFtexton%:PROCcheckanimtext(1,"064") 11850IFsub%<65THEN 11860 SYS"OS_SpriteOp",&13C,animarea%,"anim",0 11870 VDU23,12,15,0,0,15,15,0,0,15:VDU18,16,0:VDU25,4,0;0;:VDU25,101,810;644; 11880 VDU18,0,15:VDU25,4,0;0;:VDU25,101,810;274; 11890 IFsub%>=33:PROCflip(2,"land") 11900 IF(sub%<=15)OR(sub%>=50):SYS"OS_SpriteOp",&122,detarea%,"land",0,0,8 11910 IF(sub%>=16)AND(sub%<=32):SYS"OS_SpriteOp",&122,detarea%,"land",-50*(sub%-15),0,8 11920 IF(sub%>=33)AND(sub%<=49):SYS"OS_SpriteOp",&122,detarea%,"land",800-(50*(sub%-33)),0,8 11930 IFsub%>=33:PROCflip(2,"land") 11940 IFsub%<=15:SYS"OS_SpriteOp",&122,detarea%,"palm",40,68,8 11950 IF(sub%>=16)AND(sub%<=25):SYS"OS_SpriteOp",&122,detarea%,"palm",40-(50*(sub%-15)),68,8 11960 IFsub%<=4:SYS"OS_SpriteOp",&122,detarea%,"coc0",266,coc%(sub%),8 11970 IF(sub%>=5)AND(sub%<=8):SYS"OS_SpriteOp",&122,detarea%,"coc"+STR$(sub%-4),224,80,8 11980 IF(sub%>=9)AND(sub%<=15):SYS"OS_SpriteOp",&122,detarea%,"coc"+STR$(5+(sub%MOD2)),266+(20*(sub%-9)),88,8 11990 IF(sub%>=16)AND(sub%<=49):SYS"OS_SpriteOp",&122,detarea%,"coc"+STR$(5+(sub%MOD2)),386,88,8 12000 IF(sub%>=50)AND(sub%<=60):SYS"OS_SpriteOp",&122,detarea%,"coc"+STR$(5+(sub%MOD2)),386+(20*(sub%-49)),88,8 12010 IF(sub%>=61)AND(sub%<=64):SYS"OS_SpriteOp",&122,detarea%,"coc7",626+(20*(sub%-61)),88,8 12020 IFsub%<=15:PROCmoveendloop(1,"064",224,80,440,480) 12030 IF(sub%>=16)AND(sub%<=49):PROCmoveendloop(1,"064",0,0,810,644) 12040 IFsub%>=50:PROCmoveendloop(1,"064",380,88,740,140) 12050ENDIF 12060sub%+=1 12070IFsub%=66:PROCmakeanim(actmenu%,actanim%,bg%(actanim%)):PROCanimateend:PROCplotanim(actanim%) 12080ENDPROC 12090 12100 12110DEFPROCboxexp(s%,noof%,x%,y%,dx%,dy%,sizx%,sizy%,dsizx%,dsizy%) 12120REM s% goes from 0 to noof%:x,y orig leftbot corner:dx,dy how leftbot corner moves 12130REM sizx,sizy ec size of orig box:dsizx,dsizy incr in box size 12140IFs%>noof%:ENDPROC 12150IFs%=noof%THEN 12160 s%-=1 12170 SYS"Wimp_SetColour",7 12180 VDU25,4,x%+(dx%*s%);y%+(dy%*s%);:VDU25,101,x%+(dx%*s%)+sizx%+(dsizx%*s%)-2;y%+(dy%*s%)+sizy%+(dsizy%*s%)-2; 12190 SYS"Wimp_SetColour",9 12200 VDU25,4,x%+(dx%*s%)+4;y%+(dy%*s%)+4;:VDU25,101,x%+(dx%*s%)+sizx%+(dsizx%*s%)-6;y%+(dy%*s%)+sizy%+(dsizy%*s%)-6; 12210 SYS"Wimp_SetColour",7 12220 VDU25,4,x%+(dx%*s%)+8;y%+(dy%*s%)+8;:VDU25,101,x%+(dx%*s%)+sizx%+(dsizx%*s%)-10;y%+(dy%*s%)+sizy%+(dsizy%*s%)-10; 12230 s%+=1 12240ENDIF 12250IFs%<noof%THEN 12260 SYS"Wimp_SetColour",9 12270 PROCbox(x%+(dx%*s%),y%+(dy%*s%),sizx%+(dsizx%*s%),sizy%+(dsizy%*s%)) 12280ENDIF 12290ENDPROC 12300 12310DEFPROCbox(x%,y%,sx%,sy%) 12320VDU25,4,x%;y%;:VDU25,101,x%+2;y%+sy%-2; 12330VDU25,4,x%;y%+sy%-4;:VDU25,101,x%+sx%-2;y%+sy%-2; 12340VDU25,4,x%+sx%-4;y%+sy%-2;:VDU25,101,x%+sx%-2;y%; 12350VDU25,4,x%+sx%-2;y%+2;:VDU25,101,x%;y%; 12360ENDPROC 12370 12380DEFPROCplotanim(aa%) 12390IFaa%=-1:!blk%=anmew%:ELSE:!blk%=animw% 12400SYS"Wimp_GetWindowState",,blk% 12410spx%=blk%!4-blk%!20+16:spy%=(blk%!16-blk%!24)-76-644 12420blk%!4=0:blk%!8=-720:blk%!12=830:blk%!16=-72 12430SYS "Wimp_UpdateWindow",,blk% TO more% 12440WHILE more% 12450SYS "OS_SpriteOp",&134,animarea%,"anim",spx%,spy%,0,scale%,coltrans% 12460SYS "Wimp_GetRectangle",,blk% TO more% 12470ENDWHILE 12480ENDPROC 12490 12500DEFPROCplotanimmove(le%,lo%,ri%,hi%) 12510!blk%=animw%:SYS"Wimp_GetWindowState",,blk% 12520spx%=blk%!4-blk%!20+16:spy%=(blk%!16-blk%!24)-76-644 12530!blk%=animw%:blk%!4=16+le%:blk%!8=lo%-720:blk%!12=16+ri%:blk%!16=hi%-720 12540SYS "Wimp_UpdateWindow",,blk% TO more% 12550WHILE more% 12560SYS "OS_SpriteOp",&134,animarea%,"anim",spx%,spy%,0,scale%,coltrans% 12570SYS "Wimp_GetRectangle",,blk% TO more% 12580ENDWHILE 12590ENDPROC 12600 12610DEFPROCcopysp(fromsp$,tosp$) 12620IFfromsp$="anim" THEN 12630 fromarea%=animarea%:toarea%=detarea% 12640ELSE 12650 IFLEFT$(fromsp$,2)="bg":fromarea%=bgarea%:toarea%=animarea%:ELSE:fromarea%=detarea%:toarea%=animarea% 12660ENDIF 12670SYS"OS_SpriteOp",&13C,toarea%,tosp$,0 12680SYS"OS_SpriteOp",&122,fromarea%,fromsp$,0,0,0 12690SYS"OS_SpriteOp",&13C,toarea%,0,1 12700ENDPROC 12710 12720DEFPROCinitanmewlabs(m%) 12730LOCAL j% 12740IFm%>0:PROChideicn(anmew%,0,TRUE):ELSE:PROChideicn(anmew%,0,FALSE) 12750CASE m% OF 12760 WHEN 0: FORj%=5TO33:PROChideicn(anmew%,j%,TRUE):NEXT 12770 WHEN 1: FORj%=5TO9:PROChideicn(anmew%,j%,FALSE):PROCselecticn(anmew%,j%,FALSE):NEXT 12780 FORj%=10TO33:PROChideicn(anmew%,j%,TRUE):NEXT 12790 WHEN 2: FORj%=5TO9:PROChideicn(anmew%,j%,TRUE):NEXT 12800 FORj%=10TO15:PROChideicn(anmew%,j%,FALSE):PROCselecticn(anmew%,j%,FALSE):NEXT 12810 FORj%=16TO33:PROChideicn(anmew%,j%,TRUE):NEXT 12820 WHEN 3: FORj%=5TO15:PROChideicn(anmew%,j%,TRUE):NEXT 12830 FORj%=16TO20:PROChideicn(anmew%,j%,FALSE):PROCselecticn(anmew%,j%,FALSE):NEXT 12840 FORj%=21TO33:PROChideicn(anmew%,j%,TRUE):NEXT 12850 WHEN 4: FORj%=5TO20:PROChideicn(anmew%,j%,TRUE):NEXT 12860 FORj%=21TO24:PROChideicn(anmew%,j%,FALSE):PROCselecticn(anmew%,j%,FALSE):NEXT 12870 FORj%=25TO33:PROChideicn(anmew%,j%,TRUE):NEXT 12880 WHEN 5: FORj%=5TO24:PROChideicn(anmew%,j%,TRUE):NEXT 12890 FORj%=25TO33:PROChideicn(anmew%,j%,FALSE):PROCselecticn(anmew%,j%,FALSE):NEXT 12900ENDCASE 12910ENDPROC 12920 12930DEFPROCsetextent(w%,siz%) 12940!blk%=0:blk%!4=-siz%:blk%!8=842:blk%!12=0 12950SYS"Wimp_SetExtent",w%,blk% 12960ENDPROC 12970 12980DEFPROCresizeanmew 12990!blk2%=anmew%:SYS "Wimp_GetWindowState",,blk2% 13000!blk%=anmew%:SYS "Wimp_DeleteWindow",,blk% 13010!((winstarts%!8)+52)=0 13020SYS "Wimp_CreateWindow",,winstarts%!8 TO anmew% 13030ENDPROC 13040 13050DEFPROCclosewind(b%) 13060SYS "Wimp_CloseWindow",,b% 13070ENDPROC 13080 13090DEFPROCopenwind(b%) 13100SYS "Wimp_OpenWindow",,b% 13110ENDPROC 13120 13130DEFPROCclick(mx%,my%,but%,w%,i%) 13140CASE w% OF 13150 WHEN -2: 13160 CASE but% OF 13170 WHEN 2: PROCmaster_menu("Plantwise","Info,Setup...,7Quit,",!eb%,216) 13180 WHEN 4: PROCstartgame:PROCopen_mess1 13190 ENDCASE 13200 WHEN menuw%: PROCmenuwclick(but%,w%,i%) 13210 WHEN anmew%: PROCanmewclick(but%,w%,i%) 13220 WHEN animw%: PROCanimwclick(mx%,my%,but%,i%) 13230 WHEN findw%: PROCfindwclick(mx%,my%,but%,i%) 13240 WHEN defnw%: PROCdefnwclick(mx%,my%,but%,i%) 13250 WHEN wordw%: PROCwordwclick(mx%,my%,but%,i%) 13260 WHEN setupw%: PROCsetupwclick(but%,i%) 13270ENDCASE 13280ENDPROC 13290 13300DEFPROCmenuwclick(b%,w%,i%) 13310LOCAL j%,k% 13320IFb%=2:ENDPROC 13330IFi%=-1:ENDPROC 13340!blk%=demow%:PROCclosewind(blk%) 13350IFi%<6:PROCcheckindex(i%):ENDPROC 13360j%=INT(i%/3)-1 13370FORk%=6TO18STEP3 13380 IFk%=3+(3*j%):PROCselecticn(w%,k%,TRUE):ELSE:PROCselecticn(w%,k%,FALSE) 13390NEXT 13400PROCopen_animw(j%,-1) 13410IFj%=1:PROCopen_mess("Only 'leaf' is available in the Structure section.") 13420IFj%=2:PROCopen_mess("Only 'seed dispersal' is available in the Reproduction section.") 13430IFj%=3:PROCopen_mess("None of the What Plants Need section is available in this demonstration.") 13440IFj%=4:PROCopen_mess("None of the Survival section is available in this demonstration.") 13450IFj%=5:PROCopen_mess("None of the Classification section is available in this demonstration.") 13460ENDPROC 13470 13480DEFPROCcheckindex(i%) 13490IFi%<3THEN 13500 PROCtoggleicnsel(menuw%,0) 13510 IFFNisselected(menuw%,0)THEN 13520 PROCopen_findw:PROCopen_messff 13530 ELSE 13540 !blk%=findw%:PROCclosewinds(blk%) 13550 ENDIF 13560ELSE 13570 PROCtoggleicnsel(menuw%,3) 13580 IFFNisselected(menuw%,3)THEN 13590 PROCopen_wordw:PROCopen_messww 13600 ELSE 13610 !blk%=defnw%:PROCclosewind(blk%):!blk%=wordw%:PROCclosewind(blk%) 13620 ENDIF 13630ENDIF 13640ENDPROC 13650 13660DEFPROCanmewclick(b%,w%,i%) 13670LOCAL j%,k% 13680REMIFb%=2:PROCanmew_menu(mx%,my%):ENDPROC 13690!blk%=demow%:PROCclosewind(blk%) 13700IF(i%=7)OR(i%=12) THEN 13710 PROCkilltext 13720 PROCtoggleicnsel(anmew%,i%) 13730 wlev%=0:PROCopen_animw(actmenu%,wlev%+findaa%(i%-5)) 13740ELSE 13750 IF(i%>=5)AND(i%<=9):PROCopen_mess("Only 'leaf' is available in the Structure section.") 13760 IF(i%>=10)AND(i%<=15):PROCopen_mess("Only 'seed dispersal' is available in the Reproduction section.") 13770 IF(i%>=16)AND(i%<=20):PROCopen_mess("None of the What Plants Need section is available in this demonstration.") 13780 IF(i%>=21)AND(i%<=24):PROCopen_mess("None of the Survival section is available in this demonstration.") 13790 IF(i%>=25)AND(i%<=33):PROCopen_mess("None of the Classification section is available in this demonstration.") 13800ENDIF 13810ENDPROC 13820 13830DEFPROCanimwclick(mx%,my%,b%,i%) 13840LOCAL j%,k% 13850REMIFb%=2:PROCanimw_menu(mx%,my%):ENDPROC 13860!blk%=demow%:PROCclosewind(blk%) 13870PROCtoggleicnsel(animw%,i%) 13880CASE i% OF 13890 WHEN 0: PROCkilltext 13900 IFwlev%=0:PROCopen_animw(actmenu%,-1):ELSE:j%=wlev%:wlev%=0:PROCopen_animw(actmenu%,actanim%-j%) 13910 WHEN 1: IFFNisselected(animw%,1)THEN 13920 texton%=-1:textnewon%=-1 13930 IFNOTdoingmove%:PROCmakeanim(actmenu%,actanim%,bg%(actanim%)) 13940 PROCaddtext(actanim%) 13950 ELSE 13960 texton%=0:textnewoff%=-1:acttxticn%=0:PROCremovetext(actanim%) 13970 ENDIF 13980 WHEN 2: IFFNisselected(animw%,2)THEN 13990 doingmove%=-1:firstmove%=-1:PROCanimate 14000 ELSE 14010 PROCanimateend:PROCmakeanim(actmenu%,actanim%,bg%(actanim%)) 14020 IFtexton%:PROCaddtext(actanim%):ELSE:PROCplotanim(actanim%) 14030 ENDIF 14040 WHEN 3,4: j%=wlev%:PROCkilltext 14050 IFFNisselected(animw%,i%):wlev%=i%-2:PROCselecticn(animw%,7-i%,FALSE):ELSE:wlev%=0 14060 PROCopen_animw(actmenu%,actanim%-j%+wlev%) 14070 WHEN 5,6,7,8: j%=wlev%:PROCkilltext 14080 IFFNisselected(animw%,i%) THEN 14090 wlev%=i%-4:FORk%=5TO8 14100 IFk%<>i%:PROCselecticn(animw%,k%,FALSE) 14110 NEXT 14120 ELSE 14130 wlev%=0 14140 ENDIF 14150 PROCopen_animw(actmenu%,actanim%-j%+wlev%) 14160 WHEN 12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56: 14170 IFacttxticn%>11 PROCselecticn(animw%,acttxticn%,FALSE) 14180 IFacttxticn%=i% acttxticn%=0:ELSE:acttxticn%=i% 14190 PROCaddwords(actanim%) 14200ENDCASE 14210ENDPROC 14220 14230DEFPROCkilltext 14240PROCselecticn(animw%,1,FALSE):texton%=0:textnewon%=0 14250!blk2%=0:blk2%!4=-732:blk2%!8=842:blk2%!12=0:SYS"Wimp_SetExtent",animw%,blk2% 14260ENDPROC 14270 14280DEFPROCfindwclick(mx%,my%,b%,i%) 14290LOCAL j%,am%,aa% 14300IFb%=2:ENDPROC 14310IF(i%<=34)OR((i%>=40)AND(i%<=43))OR((i%>=47)AND(i%<=59))OR(i%>=65):PROCopen_messff:ENDPROC 14320!blk%=demow%:PROCclosewind(blk%) 14330IF(i%>=35)AND(i%<=39):am%=i%-34:aa%=-1:wlev%=0 14340IF(i%>=44)AND(i%<=46):am%=1:aa%=i%-40:wlev%=i%-44 14350IF(i%>=60)AND(i%<=64):am%=2:aa%=i%-40:wlev%=i%-60 14360IF(actmenu%<>am%)OR(actanim%<>aa%):PROCselecticn(findw%,findicn%,FALSE) 14370findicn%=0 14380IF(am%>0)AND(aa%=-1):PROCselecticn(findw%,34+am%,TRUE):findicn%=34+am% 14390IFaa%>=0:PROCselecticn(findw%,40+aa%,TRUE):findicn%=40+aa% 14400!blk%=findw%:PROCclosewind(blk%):PROCselecticn(menuw%,0,FALSE) 14410PROCkilltext:PROCopen_menuw(am%,aa%) 14420ENDPROC 14430 14440DEFPROCwordwclick(mx%,my%,b%,i%) 14450LOCAL j% 14460IFb%=2:ENDPROC 14470!blk%=demow%:PROCclosewind(blk%) 14480IFglossicn%<>i%:PROCtoggleicnsel(wordw%,i%):PROCselecticn(wordw%,glossicn%,FALSE):glossicn%=i% 14490PROCopen_defnw(i%) 14500ENDPROC 14510 14520DEFPROCsetupwclick(b%,i%) 14530LOCAL j%,k% 14540CASE i% OF 14550 WHEN 2,3:IFFNisselected(setupw%,2):simp%=0:ELSE:simp%=1 14560 PROCstartgame 14570ENDCASE 14580ENDPROC 14590 14600DEFPROCinitanimw(aa%) 14610LOCAL j%,k% 14620PROCselecticn(animw%,0,FALSE) 14630FORk%=2TO56:PROChideicn(animw%,k%,TRUE):PROCselecticn(animw%,k%,FALSE):NEXT 14640FORj%=0TO6 14650 IFwdefn%(aa%,j%)>0:PROChideicn(animw%,j%+2,FALSE):ELSE:PROChideicn(animw%,j%+2,TRUE) 14660 IFwdefn%(aa%,j%)=2:PROCselecticn(animw%,j%+2,TRUE):ELSE:PROCselecticn(animw%,j%+2,FALSE) 14670NEXT 14680CASE aa% OF 14690 WHEN 0,1 : PROCputicnstring(animw%,3,"animal cells") 14700 WHEN 2,3 : PROCputicnstring(animw%,3,"flower parts") 14710 WHEN 10,11 : PROCputicnstring(animw%,3,"root close-up") 14720 WHEN 4,5,6 : PROCputicnstring(animw%,3,"photosynthesis"):PROCputicnstring(animw%,4,"leaf close-up") 14730 WHEN 7,8,9 : PROCputicnstring(animw%,3,"non-woody stem"):PROCputicnstring(animw%,4,"woody stem") 14740 WHEN 12,13,14,15,16 : PROCputicnstring(animw%,5,"insects") 14750 WHEN 17,18,19 : PROCputicnstring(animw%,3,"fruits & seeds"):PROCputicnstring(animw%,4,"fruit examples") 14760 WHEN 20,21,22,23,24 : PROCputicnstring(animw%,5,"explode") 14770 WHEN 25,26,27 : PROCputicnstring(animw%,3,"seed structure"):PROCputicnstring(animw%,4,"dormancy") 14780 WHEN 36,37 : PROCputicnstring(animw%,3,"extremes") 14790ENDCASE 14800doingmove%=0:firstmove%=0:acttxticn%=0:doingmove%=0:firstmove%=-1:textnewon%=0 14810ENDPROC 14820 14830DEFPROCevent 14840SYS "Wimp_Poll",0,blk% TO e%,eb% 14850CASE e% OF 14860 WHEN 0: IFdoingmove%:PROCanimate 14870REM IFdoingcloser% PROCcloser 14880REM IFdoingpinpart% PROCmovepinpart 14890REM sizz1%=(!detarea%)-(detarea%!12):IFsizz1%<minsizz1%:minsizz1%=sizz1% 14900REM sizz2%=HIMEM-END:IFsizz2%<minsizz2%:minsizz2%=sizz2% 14910REM sizz3%=END-LOMEM:IFsizz3%<minsizz3%:minsizz3%=sizz3% 14920 WHEN 1: PROCredraw(!eb%) 14930 WHEN 2: PROCopenwind(blk%) 14940 WHEN 3: PROCclosewinds(blk%) 14950 WHEN 6: PROCclick(eb%!0,eb%!4,eb%!8,eb%!12,eb%!16) 14960 WHEN 9: PROCmenuselect 14970 WHEN 17,18: PROCreceive 14980ENDCASE 14990ENDPROC 15000 15010DEFPROCreceive 15020CASE eb%!16 OF 15030 WHEN 0: quit% = TRUE 15040 WHEN 9: PROCmodechange:SYS"Wimp_ForceRedraw",-1,0,0,xmaxec%,ymaxec% 15050 WHEN &400C1: PROCmodechange 15060ENDCASE 15070ENDPROC 15080 15090DEFPROCredraw(w%) 15100CASE w% OF 15110REM WHEN systw%: PROCredrawsystw 15120REM WHEN bodyw%: PROCredrawbodyw 15130 WHEN animw%,anmew%: PROCredrawanimw 15140REM WHEN pinoutlw%: PROCredrawpinoutlw 15150 OTHERWISE : PROCredrawother 15160ENDCASE 15170ENDPROC 15180 15190DEFPROCredrawother 15200SYS "Wimp_RedrawWindow",,blk% TO more% 15210WHILE more% 15220SYS "Wimp_GetRectangle",,blk% TO more%: 15230ENDWHILE 15240ENDPROC 15250 15260DEFPROCredrawanimw 15270SYS "Wimp_RedrawWindow",,blk% TO more% 15280spx%=blk%!4-blk%!20+16:spy%=(blk%!16-blk%!24)-76-644 15290WHILE more% 15300SYS "OS_SpriteOp",&134,animarea%,"anim",spx%,spy%,0,scale%,coltrans% 15310SYS "Wimp_GetRectangle",,blk% TO more%: 15320ENDWHILE 15330ENDPROC 15340 15350DEFPROCaddanmewlines(am%) 15360LOCAL k% 15370SYS"OS_SpriteOp",&13C,animarea%,"anim",0 15380lin$=anmewlines$(am%-1):nolines%=VAL(lin$) 15390lin$=RIGHT$(lin$,LEN(lin$)-3) 15400IFnolines%>0THEN 15410 FORk%=1TOnolines% 15420 SYS"Wimp_SetColour",VAL(lin$) 15430 VDU25,4,VAL(MID$(lin$,4,3));VAL(MID$(lin$,8,3));:VDU25,5,VAL(MID$(lin$,12,3));VAL(MID$(lin$,16,3)); 15440 VDU25,4,VAL(MID$(lin$,4,3))+2;VAL(MID$(lin$,8,3));:VDU25,5,VAL(MID$(lin$,12,3))+2;VAL(MID$(lin$,16,3)); 15450 lin$=RIGHT$(lin$,LEN(lin$)-19) 15460 NEXT 15470 IFam%=5 THEN 15480 lin$=anmewlines$(5):nolines%=VAL(lin$) 15490 lin$=RIGHT$(lin$,LEN(lin$)-3) 15500 FORk%=1TOnolines% 15510 SYS"Wimp_SetColour",VAL(lin$) 15520 VDU25,4,VAL(MID$(lin$,4,3));VAL(MID$(lin$,8,3));:VDU25,5,VAL(MID$(lin$,12,3));VAL(MID$(lin$,16,3)); 15530 VDU25,4,VAL(MID$(lin$,4,3))+2;VAL(MID$(lin$,8,3));:VDU25,5,VAL(MID$(lin$,12,3))+2;VAL(MID$(lin$,16,3)); 15540 lin$=RIGHT$(lin$,LEN(lin$)-19) 15550 NEXT 15560 ENDIF 15570ENDIF 15580SYS"OS_SpriteOp",&13C,animarea%,0,1 15590ENDPROC 15600 15610DEFPROCcl_anim(D%) 15620SYS "OS_SpriteOp",&118,animarea%,"anim" TO ,,A%:A%+=A%!32 15630REMSYS "OS_SpriteOp",&128,animarea%,"anim" TO ,,,B%,C%:B%=B%/2 15640FORs%=2TO4:D%=D%OR(D%<<(2^s%)):NEXT 15650CALL animcl% 15660ENDPROC 15670 15680DEFPROCdullanim(D%) 15690SYS "OS_SpriteOp",&118,animarea%,"anim" TO ,,A%:A%+=A%!32 15700CALL animdull% 15710ENDPROC 15720 15730DEFPROCaddtext(aa%) 15740!blk2%=animw%:SYS"Wimp_GetWindowState",,blk2%:windpos%=blk2%!28 15750!blk2%=animw%:PROCclosewind(blk2%) 15760!blk2%=0:blk2%!4=-976:blk2%!8=842:blk2%!12=0:SYS"Wimp_SetExtent",animw%,blk2% 15770PROChideicn(animw%,9,FALSE):PROChideicn(animw%,10,FALSE) 15780IFNOTdoingmove%THEN 15790 CASE aa% OF 15800 WHEN 14:SYS"OS_SpriteOp",&13C,animarea%,"anim",0:SYS"OS_SpriteOp",&122,detarea%,"grfl",94,56,8:SYS"Wimp_SetColour",7:PROCbox(416,188,16,16):SYS"OS_SpriteOp",&13C,animarea%,0,1 15810 WHEN 22:SYS"OS_SpriteOp",&13C,animarea%,"anim",0:SYS"OS_SpriteOp",&122,detarea%,"dsbox",100,116,8:SYS"OS_SpriteOp",&122,detarea%,"ds2",144,168,8:SYS"Wimp_SetColour",7:PROCbox(668,276,16,16):SYS"OS_SpriteOp",&13C,animarea%,0,1 15820 WHEN 23:SYS"OS_SpriteOp",&13C,animarea%,"anim",0: 15830 SYS"OS_SpriteOp",&122,detarea%,"cherry",116,388,8:SYS"OS_SpriteOp",&122,detarea%,"hooks",500,204,8:SYS"Wimp_SetColour",7:PROCbox(216,576,16,16):PROCbox(626,444,16,16) 15840 SYS"OS_SpriteOp",&13C,animarea%,0,1 15850 ENDCASE 15860 PROCaddlines(aa%,0):PROCplotanim(aa%):PROCaddlabels(aa%):PROCaddwords(aa%) 15870ELSE 15880 PROCputicnstring(animw%,9,""):PROCputicnstring(animw%,10,"") 15890ENDIF 15900!blk%=animw%:SYS"Wimp_GetWindowState",,blk% 15910IFblk%!16<976 blk%!16=976:blk%!8=0:ELSE:blk%!8=blk%!16-976 15920blk%!24=0:blk%!28=windpos% 15930PROCopenwind(blk%) 15940ENDPROC 15950 15960DEFPROCaddlines(aa%,fromsaveprint%) 15970SYS"OS_SpriteOp",&13C,animarea%,"anim",0 15980CASE aa% OF 15990 WHEN 10:SYS"Wimp_SetColour",0 16000 OTHERWISE:SYS"Wimp_SetColour",7 16010ENDCASE 16020REMIFNOTfromsaveprint%THEN 16030REM IF((activeicn%=4)AND(activew%=1))OR((activeicn%=17)AND(activew%>0)):SYS"Wimp_SetColour",0 16040REM IF((activeicn%=6)AND(activew%=2))OR((activeicn%=17)AND(activew%=0))OR((activeicn%=19)AND(activew%=0))OR((activeicn%=20)AND(activew%=0))OR((activeicn%=20)AND(activew%=2)):SYS"Wimp_SetColour",11 16050REMENDIF 16060lin$=lines$(simp%):nolines%=VAL(lin$) 16070lin$=RIGHT$(lin$,LEN(lin$)-3) 16080IFnolines%>0THEN 16090 FORk%=1TOnolines% 16100 VDU25,4,VAL(MID$(lin$,1,3));VAL(MID$(lin$,5,3));:VDU25,5,VAL(MID$(lin$,9,3));VAL(MID$(lin$,13,3)); 16110 VDU25,4,VAL(MID$(lin$,1,3))+2;VAL(MID$(lin$,5,3));:VDU25,5,VAL(MID$(lin$,9,3))+2;VAL(MID$(lin$,13,3)); 16120 lin$=RIGHT$(lin$,LEN(lin$)-16) 16130 NEXT 16140ENDIF 16150CASE aa% OF 16160 WHEN 3: PROCbox(4,272,158,280) 16170 VDU25,4,550;272;:VDU25,101,552;346; 16180 VDU25,4,658;452;:VDU25,101,802;454; 16190 VDU25,4,800;454;:VDU25,101,802;272; 16200 VDU25,4,802;274;:VDU25,101,550;272; 16210 VDU25,4,550;344;:VDU25,5,658;452; 16220 VDU25,4,552;344;:VDU25,5,660;452; 16230 WHEN 26: PROCbox(550,268,256,288) 16240ENDCASE 16250SYS"OS_SpriteOp",&13C,animarea%,0,1 16260ENDPROC 16270 16280DEFPROCaddlabels(aa%) 16290LOCAL k% 16300IFnolabs%(aa%,simp%)>0THEN 16310 FORk%=1TOnolabs%(aa%,simp%) 16320 PROCputicnstring(animw%,VAL(words$(simp%,k%,0)),words$(simp%,k%,1)):PROChideicn(animw%,VAL(words$(simp%,k%,0)),FALSE) 16330 NEXT 16340ENDIF 16350ENDPROC 16360 16370DEFPROCaddwords(aa%) 16380IFacttxticn%=0THEN 16390 titl$=words$(simp%,0,1):IFwords$(simp%,0,2)<>"":titl$+=" ":titl$+=words$(simp%,0,2) 16400 PROCputicnstring(animw%,9,titl$):PROCputicnstring(animw%,10,words$(simp%,0,3)) 16410 ENDPROC 16420ENDIF 16430IFnolabs%(aa%,simp%)>0THEN 16440 FORk%=1TOnolabs%(aa%,simp%) 16450 IFVAL(words$(simp%,k%,0))=acttxticn% THEN 16460 titl$=words$(simp%,k%,1) 16470 IF(ASC(titl$)>&60)AND(ASC(titl$)<&7B):LEFT$(titl$,1)=CHR$(ASC(titl$)-&20) 16480 IF(ASC(titl$)>&30)AND(ASC(titl$)<&3A)AND(ASC(MID$(titl$,4,1))>&60)AND(ASC(MID$(titl$,4,1))<&7B):MID$(titl$,4)=CHR$(ASC(MID$(titl$,4,1))-&20) 16490 IF(acttxticn%<>18)OR(aa%<>25):titl$+=" " 16500 titl$+=words$(simp%,k%,2) 16510 PROCputicnstring(animw%,9,titl$):PROCputicnstring(animw%,10,words$(simp%,k%,3)) 16520 ENDIF 16530 NEXT 16540ENDIF 16550ENDPROC 16560 16570DEFPROCremovetext(aa%) 16580!blk2%=animw%:SYS"Wimp_GetWindowState",,blk2%:windpos%=blk2%!28 16590!blk2%=animw%:PROCclosewind(blk2%) 16600IFdoingmove%:blk2%!4=-784:ELSE:blk2%!4=-732 16610!blk2%=0:blk2%!8=842:blk2%!12=0:SYS"Wimp_SetExtent",animw%,blk2% 16620IFNOTdoingmove%THEN 16630 PROCremovelabels(aa%) 16640 PROCplotanim(aa%) 16650ENDIF 16660!blk%=animw%:SYS"Wimp_GetWindowState",,blk% 16670IFdoingmove%:blk%!8=blk%!16-784:ELSE:blk%!8=blk%!16-732 16680blk%!28=windpos% 16690PROCopenwind(blk%) 16700ENDPROC 16710 16720DEFPROCremovelabels(aa%) 16730IFnolabs%(aa%,simp%)>0THEN 16740 FORk%=1TOnolabs%(aa%,simp%):PROChideicn(animw%,VAL(words$(simp%,k%,0)),TRUE):PROCselecticn(animw%,VAL(words$(simp%,k%,0)),FALSE):NEXT 16750ENDIF 16760IFNOTdoingmove%:PROCmakeanim(actmenu%,aa%,bg%(aa%)) 16770ENDPROC 16780 16790DEFPROCgetwordfile(aa%) 16800LOCAL t%,s%,u%,a$,b$ 16810wfile$="<PlantWise$chaindir>.wordfiles.words"+STR$(aa%) 16820X=OPENIN wfile$ 16830FORs%=0TO1:FORt%=0TOnolabs%(aa%,s%):FORu%=0TO3 16840INPUT#X, words$(s%,t%,u%) 16850NEXT:NEXT:NEXT 16860IFnostops%(aa%)>0THEN 16870 FORs%=0TO1:FORt%=0TOnostops%(aa%)-1 16880 INPUT#X, animwords$(s%,t%) 16890 NEXT:NEXT 16900ENDIF 16910CASE aa% OF 16920 WHEN 5:FORs%=0TO27 16930 INPUT#X, animsp$(s%) 16940 INPUT#X, a$ 16950 INPUT#X, b$ 16960 animsp%(s%,0)=VAL(a$):animsp%(s%,1)=VAL(b$) 16970 NEXT 16980ENDCASE 16990CLOSE#X 17000ENDPROC 17010 17020DEFPROCgetnumbfile(aa%) 17030LOCAL t%,s% 17040nfile$="<PlantWise$chaindir>.numbfiles.numbs"+STR$(aa%) 17050X=OPENIN nfile$ 17060FORt%=0TO1 17070INPUT#X, lines$(t%) 17080NEXT 17090CLOSE#X 17100ENDPROC 17110 17120DEFPROCfloppy_disk(diskn$,sprpath$) 17130LOCAL g% 17140g%=0 17150REMh%=0:m%=0 17160LOCALERROR 17170ONERRORLOCAL:RESTORE ERROR:error%=1:test%=1:ENDPROC 17180REPEAT 17190 error%=0 17200REMno_h%=0:no_m%=0 17210 IFtest%=1 THEN 17220 PROCdiscmess("Please place the "+diskn$+" disc in drive 0",0) 17230 ENDIF 17240 *ADFS 17250 *MOUNT 0 17260 SYS"OS_GBPB",5,,input_disk_name% 17270 len_d_n%=?input_disk_name%:name$="" 17280 FORdn%=1TOlen_d_n% 17290 IF?(input_disk_name%+dn%)>31:name$=name$+CHR$(?(input_disk_name%+dn%)) 17300 NEXT 17310 IFname$<>diskn$:error%=1 17320 test%=1 17330 OSCLI"SET PlantWise$chaindir $.!Plantwise" 17340 SYS "XOS_Find",&40,sprpath$ TO g% 17350REM IFworpath$<>"":SYS "XOS_Find",&40,worpath$ TO h%:ELSE:no_h%=-1 17360REM IFnumpath$<>"":SYS "XOS_Find",&40,numpath$ TO m%:ELSE:no_m%=-1 17370UNTILg%AND(error%=0):CLOSE#g% 17380REMUNTILg%AND(h%ORno_h%)AND(m%ORno_m%)AND(error%=0):CLOSE#g% 17390REMIFNOTno_h%:CLOSE#h% 17400REMIFNOTno_m%:CLOSE#m% 17410RESTORE ERROR 17420ENDPROC 17430 17440DEFPROCanimate 17450IFfirstmove% THEN 17460 IFtexton% THEN 17470 PROCremovelabels(actanim%):PROCmakeanim(actmenu%,actanim%,0):PROCaddtext(actanim%) 17480 ELSE 17490 !blk2%=animw%:PROCclosewind(blk2%) 17500 !blk2%=0:blk2%!4=-784:blk2%!8=842:blk2%!12=0:SYS"Wimp_SetExtent",animw%,blk2% 17510 PROCputicnstring(animw%,9,"") 17520 !blk%=animw%:SYS"Wimp_GetWindowState",,blk% 17530 IFblk%!16<784 blk%!16=784:blk%!8=0:ELSE:blk%!8=blk%!16-784 17540 PROCopenwind(blk%) 17550 ENDIF 17560 PROChideicn(animw%,11,FALSE):PROCselecticn(animw%,11,FALSE) 17570ENDIF 17580IFNOTFNisselected(animw%,11):PROCmoveanim 17590ENDPROC 17600 17610DEFPROCmoveanim 17620newtext%=0 17630IFtextnewon%:newtext%=-1 17640CASE actanim% OF 17650 WHEN 5: PROCmovephoto 17660 WHEN 6: PROCmoveleafcl 17670 WHEN 8: PROCmovestemcl1 17680 WHEN 9: PROCmovestemcl2 17690 WHEN 10: PROCmoveroot 17700 WHEN 11: PROCmoverootcl 17710 WHEN 12: PROCmovepollin 17720 WHEN 13: PROCmovepollins 17730 WHEN 14: PROCmovepollwind 17740 WHEN 15: PROCmovepollanimal 17750 WHEN 16: PROCmovepollwater 17760 WHEN 17: PROCmovefertil 17770 WHEN 18: PROCmovefruit 17780 WHEN 20: PROCmovedisp 17790 WHEN 21: PROCmovedispexp 17800 WHEN 22: PROCmovedispwind 17810 WHEN 23: PROCmovedispani 17820 WHEN 24: PROCmovedispwat 17830 WHEN 25: PROCmovegerm 17840 WHEN 27: PROCmovedorm 17850 WHEN 28: PROCmovecorm 17860 WHEN 29: PROCmoverunner 17870ENDCASE 17880ENDPROC 17890 17900DEFPROCmoveendloop(nost%,st$,le%,lo%,ri%,hi%) 17910SYS"OS_SpriteOp",&13C,animarea%,0,1 17920elaps%=TIME-elaps% 17930IFtexton%THEN 17940 FORj%=1TOnost% 17950 IFsub%=VAL(st$):PROCselecticn(animw%,11,TRUE) 17960 st$=RIGHT$(st$,LEN(st$)-4) 17970 NEXT 17980ENDIF 17990IFnewtext%ORtextnewoff%:PROCplotanim(actanim%):textnewoff%=0:ELSE:PROCplotanimmove(le%,lo%,ri%,hi%) 18000lasttime%=TIME 18010ENDPROC 18020 18030DEFPROCanimateend 18040PROCselecticn(animw%,2,FALSE):doingmove%=FALSE:PROChideicn(animw%,11,TRUE) 18050IFtexton% THEN 18060 acttxticn%=0:PROCaddtext(actanim%) 18070ELSE 18080 !blk2%=animw%:PROCclosewind(blk2%) 18090 !blk2%=0:blk2%!4=-732:blk2%!8=842:blk2%!12=0:SYS"Wimp_SetExtent",animw%,blk2% 18100 !blk%=animw%:SYS"Wimp_GetWindowState",,blk% 18110 PROCopenwind(blk%) 18120ENDIF 18130ENDPROC 18140 18150DEFPROCclosewinds(b%) 18160SYS "Wimp_GetPointerInfo",,blk2% 18170currclosebut%=blk2%!8 18180PROCclosewind(b%) 18190CASE !b% OF 18200 WHEN menuw%:IFFNisopen(anmew%):PROCclosewind(blk%) 18210 IFFNisopen(animw%):PROCclosewind(blk%) 18220 WHEN anmew%,animw%:!blk%=menuw%:PROCclosewind(blk%) 18230 WHEN findw%:PROCselecticn(menuw%,0,FALSE) 18240 WHEN defnw%:PROCselecticn(wordw%,glossicn%,FALSE):glossicn%=-1:IFNOTFNisopen(wordw%):PROCselecticn(menuw%,3,FALSE) 18250 WHEN wordw%:IFNOTFNisopen(defnw%):PROCselecticn(menuw%,3,FALSE) 18260ENDCASE 18270!blk%=demow%:PROCclosewind(blk%) 18280ENDPROC 18290 18300DEFPROCmc_starts 18310animcl%=!mc% 18320animdull%=mc%!&04 18330ENDPROC 18340 18350DEFFNalreadyrunning 18360LOCAL ERROR 18370ONERRORLOCAL:RESTORE ERROR:=0 18380SYS "OS_ReadVarVal","PlantWise$isrunning",blk%,256,0,0 TO ,,a% 18390a$="":FORA%=0TOa%-1:a$+=CHR$(blk%?A%):NEXT 18400RESTORE ERROR 18410IFa$="1":=-1 18420=0 18430 18440 18450DEFPROChideicn(w%,i%,f%) 18460!blk%=w%:blk%!4=i%:blk%!12=1<<23 18470IFf% blk%!8=1<<23:ELSE:blk%!8=0 18480SYS "Wimp_SetIconState",,blk% 18490ENDPROC 18500 18510DEFPROCshadeicn(w%,i%,f%) 18520!blk%=w%:blk%!4=i%:blk%!12=1<<22 18530IFf% blk%!8=1<<22:ELSE:blk%!8=0 18540SYS "Wimp_SetIconState",,blk% 18550ENDPROC 18560 18570DEFPROCkeyevent 18580REM temp to stop anim bug loops hanging machine 18590REMIF(blk%!24)=13:quit%=-1 18600ENDPROC 18610 18620DEFFNreadsysvar(a$) 18630SYS "OS_ReadVarVal",a$,blk%,256,0,0 TO ,,a%:a$="":FORA%=0TOa%-1:a$+=CHR$(blk%?A%):NEXT 18640=a$ 18650 18660DEFFNfiletype(a$) 18670SYS "XOS_File",5,a$ TO a% 18680=a% 18690 18700DEFPROCstringtotxtbuff(s$) 18710$(txtbuff%+begtxt%)=s$ 18720begtxt%+=LEN(s$):txtbuff%?begtxt%=10:begtxt%+=1 18730ENDPROC 18740 18750 18760DEFPROCstartdrag(w%,i%,n$) 18770proposedfname$=n$ 18780!blk%=w%:blk%!4=i%:SYS "Wimp_GetIconState",,blk% 18790PROCwintoscrn(blk%):blk%!8-=4:blk%!12-=4:blk%!16+=4:blk%!20+=4 18800blk%!4=5:blk%!24=0:blk%!28=0:blk%!32=xmaxec%:blk%!36=ymaxec%:SYS "Wimp_DragBox",,blk% 18810ENDPROC 18820 18830 18840DEFPROCdefnwclick(mx%,my%,b%) 18850IFb%=2:PROCdefnw_menu(mx%,my%):ENDPROC 18860ENDPROC 18870 18880 18890DEFPROCtoggleicnsel(w%,i%) 18900IF FNisselected(w%,i%) PROCselecticn(w%,i%,FALSE):ELSE:PROCselecticn(w%,i%,TRUE) 18910ENDPROC 18920 18930 18940DEFPROCsubmenu(m%,i%,h%) 18950m%+=28+((i%-1)*24) 18960m%!4=h% 18970ENDPROC 18980 18990 19000DEFPROCanimw_menu(mx%,my%) 19010!blk%=saanimw%:SYS "Wimp_DeleteWindow",,blk% 19020SYS "Wimp_CreateWindow",,wptrlist%!52 TO saanimw% 19030!blk%=pranimw%:SYS "Wimp_DeleteWindow",,blk% 19040SYS "Wimp_CreateWindow",,wptrlist%!56 TO pranimw% 19050PROCgetprtitle(pranimwtitle%,pranimwtitlesiz%) 19060PROCsetanimsprname:PROCsetanimtxtname 19070IFNOTdoingmove%THEN 19080 IFFNisselected(animw%,0):PROCchangesaprextent(pranimw%,176):PROCchangesaprextent(saanimw%,292):ELSE:PROCchangesaprextent(pranimw%,124):PROCchangesaprextent(saanimw%,240) 19090ELSE 19100 PROCchangesaprextent(saanimw%,176):PROCchangesaprextent(pranimw%,72) 19110ENDIF 19120IFFNisselected(animw%,0):PROCcreate_menu(menu%,"Plantwise","Save,1Print,7Save text,"):ELSE:PROCcreate_menu(menu%,"Plantwise","Save,1Print,78Save text,") 19130PROCsubmenu(menu%,1,saanimw%):PROCsubmenu(menu%,3,edboxw%):PROCsubmenu(menu%,2,pranimw%) 19140SYS "Wimp_CreateMenu",,menu%,mx%-64,my% 19150currmenu%=-3 19160ENDPROC 19170 19180DEFPROCmaster_menu(title$,m$,x%,y%) 19190PROCcreate_menu(menu%,title$,m$) 19200PROCsubmenu(menu%,1,infow%) 19210SYS "Wimp_CreateMenu",,menu%,x%-menu%!16 / 2,y% 19220currmenu%=-1 19230ENDPROC 19240 19250DEFPROCcreate_menu(m%,title$,m$) 19260LOCAL i%,max% 19270$m%=title$ 19280m%?12=7:m%?13=2:m%?14=7:m%?15=0:m%!20=40:m%!24=0 19290i%=m%+28:max%=LEN(title$)-2 19300REPEAT 19310 a%=INSTR(m$,",") 19320 i$=LEFT$(m$,a%-1):!i%=0 19330 REPEAT:morecodes%=FALSE 19340 IFLEFT$(i$,1)="0" !i%=(!i%)OR%0001:morecodes%=TRUE 19350 IFLEFT$(i$,1)="1" !i%=(!i%)OR%0010:morecodes%=TRUE 19360 IFLEFT$(i$,1)="2" !i%=(!i%)OR%0100:morecodes%=TRUE 19370 IFLEFT$(i$,1)="3" !i%=(!i%)OR%1000:morecodes%=TRUE 19380 IFLEFT$(i$,1)="7" !i%=(!i%)OR%10000000:morecodes%=TRUE 19390 IFLEFT$(i$,1)="8" i%!8=&07400021:i$=RIGHT$(i$,LEN(i$)-1):ELSE:i%!8=&07000021 19400 IF morecodes% i$=RIGHT$(i$,LEN(i$)-1) 19410 UNTIL NOT morecodes%:$(i%+12)=i$ 19420 IF (LEN(i$)+1)>max% max%=LEN(i$)+1 19430 i%!4=-1 19440 m$ = MID$(m$,a%+1) 19450 i% = i% + 24 19460UNTIL m$ = "" 19470m%!16 = max%*16 19480ENDPROC 19490 19500DEFPROCmenuselect 19510SYS "Wimp_GetPointerInfo",,blk2% 19520currmenubut%=blk2%!8 19530CASE currmenu% OF 19540 WHEN -1: 19550 CASE !eb% OF 19560 WHEN 0: PROCcheckadjust 19570 WHEN 1: PROCopen_setupw:PROCcheckadjust 19580 WHEN 2: quit%=TRUE 19590 ENDCASE 19600 WHEN -2: 19610 CASE !eb% OF 19620 WHEN 0: PROCcheckadjust 19630 WHEN 1: PROCcheckadjust 19640 ENDCASE 19650 WHEN -3: 19660 CASE !eb% OF 19670 WHEN 0: PROCcheckadjust 19680 WHEN 1: PROCcheckadjust 19690 WHEN 2: PROCcheckadjust 19700 ENDCASE 19710 WHEN -4,-5: 19720 CASE !eb% OF 19730 WHEN 0: PROCcheckadjust 19740 ENDCASE 19750ENDCASE 19760ENDPROC 19770 19780DEFPROCcheckadjust 19790IFcurrmenubut%=1:SYS "Wimp_CreateMenu",,menu%,100,100 19800ENDPROC 19810 19820DEFFNreadvduvar(a%) 19830!blk%=a%:blk%!4=-1:SYS "OS_ReadVduVariables",blk%,blk% 19840=!blk% 19850 19860DEFPROCstartgame 19870PROCopen_menuw(actmenu%,actanim%) 19880ENDPROC 19890 19900DEFPROCflip(fliptype%,spn$) 19910IFfliptype%=1:SYS "OS_SpriteOp",&121,detarea%,spn$ 19920IFfliptype%=2:SYS "OS_SpriteOp",&12F,detarea%,spn$ 19930IFfliptype%=3:SYS "OS_SpriteOp",&121,detarea%,spn$:SYS "OS_SpriteOp",&12F,detarea%,spn$ 19940ENDPROC
*FX220,27 *FX229,1 (7�minsizz1%=100000:minsizz2%=100000:minsizz3%=100000 2 <�sortmemory FDÈ™ "Wimp_Initialise",200,&4B534154,"Plantwise" � wimpver%,taskh% P� � �alreadyrunning � Z! �"Set PlantWise$isrunning 1" d� nN �error("Plantwise is already running",0):È™ "Wimp_CloseDown",,&4B534154:� x� �]� �error(�$+" (Internal error code "+Þ+")"+�0,�):È™ "Wimp_CloseDown",taskh%,&4B534154:� �'�"LOAD <PlantWise$Dir>.code "+�~mc% ��mc_starts ��sortsprites �+*Set PlantWise$chaindir <PlantWise$Dir> �3�loadunsquash(menuarea%,33*1024,"spfiles.menu") ��initiallise ��modechange ��baricon �7� � �error(�$+" (Internal error code "+Þ+")"+�0,�) �� �event:� quit% �(È™ "Wimp_CloseDown",taskh%,&4B534154 � �"Set PlantWise$isrunning 0" *FX229,0 �PRINT QUIT " *QUIT ,�SYS"OS_Exit",errblk% 6� @ �STOP J T��sortmemory ^!indbase%=&9000:iptr%=indbase% h'totindsize%=11920:totwinsize%=13520 r0winbase%=indbase%+totindsize%:wptr%=winbase% |<indstarts%=winbase%+totwinsize%:winstarts%=indstarts%+80 �?mc%=&F400:animarea%=&FC00:menuarea%=&19000:sqbuffer%=&21400 �Adetfile%=&25800:detarea%=&2D000:bgarea%=&4B000:sparea%=&53400 �� blk% 256,errblk% 256 �� � �(��loadunsquash(area%,areasiz%,file$) � � len% �6�"LOAD <PlantWise$chaindir>."+file$+" "+�~detfile% �6È™ "OS_File",5,"<PlantWise$Dir>."+file$ � ,,,,len% �G�unsquash(detfile%+20,len%-20,sqbuffer%,17*1024,area%+4,areasiz%-4) �� � ���sortsprites !sparea%=6*1024:sparea%!8=16 !È™ "OS_SpriteOp",&109,sparea% ;È™ "OS_SpriteOp",&10A,sparea%,"<PlantWise$Dir>.sprites" &$!detarea%=120*1024:detarea%!8=16 0"È™ "OS_SpriteOp",&109,detarea% :%!animarea%=37*1024:animarea%!8=16 D#È™ "OS_SpriteOp",&109,animarea% N7È™ "OS_SpriteOp",&10F,animarea%,"anim",1,405,161,12 X%!menuarea%=33*1024:menuarea%!8=16 b#È™ "OS_SpriteOp",&109,menuarea% l!!bgarea%=33*1024:bgarea%!8=16 v!È™ "OS_SpriteOp",&109,bgarea% �;� scale% 16:!scale%=1:scale%!4=1:scale%!8=1:scale%!12=1 �+� coltrans% 16,sppalet% 128,sysbut$(15) �� +0 ��� &FFFFFF00,&FFFFFF00,&DDDDDD00,&DDDDDD00,&BBBBBB00,&BBBBBB00,&99999900,&99999900,&77777700,&77777700,&55555500,&55555500,&33333300,&33333300,&0,&0 ��� &99440000,&99440000,&EEEE00,&EEEE00,&CC0000,&CC0000,&DD00,&DD00,&BBEEEE00,&BBEEEE00,&885500,&885500,&BBFF00,&BBFF00,&FFBB0000,&FFBB0000 �&�k%=0�31:� a%:sppalet%!(4*k%)=a%:� ��addpalet(animarea%,"anim") �� � ���addpalet(area%,spn$) �+È™"OS_SpriteOp",&118,area%,spn$ � ,,r2% �:f%=(r2%+44):t%=sppalet%:�s%=0�31:!f%=!t%:t%+=4:f%+=4:� �� ��initiallise G� ibname% 20,menu% 1024,blk2% 256,input_disk_name% 12,txtbuff% 1024 2� pdrect% 16,pdrect2% 16,pdtrans% 16,pdplot% 8 *7� ctrans% 256,paltab% 64,SCALE% 16,inb% 20,outb% 20 4T� wdefn%(48,6),anmewlines$(5),anmewtitle$(5),findaa%(28),bg%(48),animwtitle$(48) >&maxlabs%=11:maxstops%=13:maxsp%=28 H� lines$(1),nolabs%(48,1),words$(1,maxlabs%,3),animsp$(maxsp%-1),animsp%(maxsp%-1,1),nostops%(48),animwords$(1,maxstops%-1) Rtotgloss%=26 \� gloss$(totgloss%-1,1) f!� arrays specific to actanim% p�� photo$(51),carr%(3,1),root%(5,1),st1%(5,1),st2%(5,1),wood%(10,1),fert%(13,1),fru%(3,5,1),gra$(3),disp1%(9,1),disp2%(7,1),disp3%(2,1),se%(7),sland%(7),cbex%(2),lupex%(1),bean%(12,4,1),syc%(13,1),dand%(6),dse%(7,1),do%(15,2),mlxy%(2,1),coc%(4) zP� pea%(8),sunf%(8),whe%(8),ger$(8),corm%(6,1),bulb%(5,1),run%(4,1),rhi%(5,1) �I�DIM menuwtitle%(3,1),menutype%(14),menuwords$(13,5),menuroute%(13,4) �4!inb%=4:inb%!4=5:inb%!8=11:inb%!12=12:inb%!16=-1 ��:quit%=�:winctr%=1 �7È™ "Wimp_OpenTemplate",,"<PlantWise$Dir>.Templates" ��load_template("menu") ��load_template("animate") ��load_template("animmenu") ��load_template("fastfind") ��load_template("worddefn") ��load_template("whatword") ��load_template("setup") ��load_template("proginfo") ��load_template("demosyst") �load_template("demo1") È™ "Wimp_CloseTemplate" 4a$=�converttolower(�readsysvar("PlantWise$Dir")) $)�a$,"adfs::plantwise")<>0 Y%=0 �Y%=1 .1È™ "Wimp_CreateWindow",,winstarts%!0 � menuw% 81È™ "Wimp_CreateWindow",,winstarts%!4 � animw% B1È™ "Wimp_CreateWindow",,winstarts%!8 � anmew% L2È™ "Wimp_CreateWindow",,winstarts%!12 � findw% V2È™ "Wimp_CreateWindow",,winstarts%!16 � defnw% `2È™ "Wimp_CreateWindow",,winstarts%!20 � wordw% j3È™ "Wimp_CreateWindow",,winstarts%!24 � setupw% t2È™ "Wimp_CreateWindow",,winstarts%!28 � infow% ~2È™ "Wimp_CreateWindow",,winstarts%!32 � demow% �3È™ "Wimp_CreateWindow",,winstarts%!36 � demo1w% �7È™"Sound_Configure",0,0,0,0,0 � r0%,r1%,r2%,r3%,r4% �0�r0%=1:È™"Sound_Configure",2,r1%,r2%,r3%,r4% �8�loadunsquash(detarea%,100*1024,"spfiles.animmenu0") ��fill_arrays �>actmenu%=0:actanim%=-1:wlev%=0:firsttime%=-1:shrunkanme%=0 �Bdoingmove%=0:firstmove%=0:acttxticn%=0:texton%=0:textnewoff%=0 �q�hideicn(findw%,41,�):�hideicn(findw%,59,�):�hideicn(findw%,77,�):�hideicn(findw%,22,�):�hideicn(findw%,89,�) ��initwordw �;simp%=0:�selecticn(setupw%,2,�):�selecticn(setupw%,3,�) �,�makeanim(0,-1,0):�setextent(animw%,732) �� ��initwordw glossicn%=-1:wide%=260+252 I�(totgloss%�2)=0:high%=(totgloss%/2)*56:�:high%=56*(�(totgloss%/2)+1) (O!blk%=0:blk%!4=-high%:blk%!8=wide%:blk%!12=0:È™"Wimp_SetExtent",wordw%,blk% 2U�j%=0�totgloss%-1:�puticnstring(wordw%,j%,gloss$(j%,0)):�selecticn(wordw%,j%,�):� <� Fglossicn%=-1 PV!blk%=0:blk%!4=-(56*totgloss%):blk%!8=252:blk%!12=0:È™"Wimp_SetExtent",wordw%,blk% ZU�j%=0�totgloss%-1:�puticnstring(wordw%,j%,gloss$(j%,0)):�selecticn(wordw%,j%,�):� d n��fill_arrays x� j%,k%,l% �� +0 �P� "Plant cells","","Types of flowers","The parts of a flower","Plant leaves" �i� "Photosynthesis - making food","The leaf in close-up","Plant stems","Non-woody stems","Woody stems" �i� "Plant roots","A root in close-up","Pollination","Pollination by insects","Pollination by the wind" �Q� "Pollination by animals","Pollination by water","Fertilization","Fruits","" �~� "Seed dispersal","'Exploding' fruits","Seed dispersal by the wind","Seed dispersal by animals","Seed dispersal by water" �b� "Seed germination","Seed structure","Seed dormancy","Corms and bulbs","Runners and rhizomes" �� "","","","","" �� "","","","","" �� "","","","","" �� "","","","" � �j%=0�48:� animwtitle$(j%):� �� +0 .� 5,5,0,0,4,4,9,11,6,6,4,4,9,9,5,5,4,5,7,7 /� 2,2,6,7,2,2,6,6,6,6,4,4,1,1,10,10,4,4,0,0 -� 1,1,4,4,3,3,5,5,1,1,8,8,6,7,5,5,5,5,3,3 "-� 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,)� 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 6)�j%=0�48:�k%=0�1:� nolabs%(j%,k%):�:� @� +0 J� 0,0,0,0,0,6,1,0,2,5 T� 1,4,3,9,2,1,1,4,9,0 ^� 1,2,2,5,1,13,0,8,8,5 h� 0,0,0,0,0,0,0,0,0,0 r� 0,0,0,0,0,0,0,0,0 |�j%=0�48:� nostops%(j%):� �� +0 �� 0,0,4,0,8,0,0,7,0,0 �� 4,0,8,3,7,0,4,0,0,0 �� 8,6,1,7,0,3,0,0,0,3 �� 0,0,0,0,0,0,0,0,0,0 �� 0,0,0,0,0,0,0,0,0 ��j%=0�48:� bg%(j%):� �� +0 �X� 0,2,4,7,10,12,17,20,25,28,29,30,31,32,33,34,35,36,38,39,40,41,42,43,44,45,46,47,48 ��j%=0�28:� findaa%(j%):� �� +0 �?� "bracts","A modified leaf below or surrounding a flower." �-� "bur","A spikey ball containing seeds." J� "cellulose","A tough fibrous substance that makes plant cell walls." m� "chlorophyll","The green pigment in plants which can trap the energy from sunlight for photosynthesis." Q� "chloroplast","A tiny structure in plant cells which contains chlorophyll." &c� "cotyledon","A modified leaf in a seed, often swollen with stored food for the seed to grow." 0@� "dehiscent","Fruits that throw out their seeds (explode)." :�� "dicotyledon","Flowering plants with two cotyledons (also called dicot). A typical dicot has broad leaves with branching veins and petals and sepals in multiples of 4 or 5." DB� "epidermis","An outer layer of cells (eg. of leaf or stem)." NN� "fruit","The ovary or ovaries of a flowering plant after fertilization." X8� "glucose","A simple sugar made by photosynthesis." b*� "leaf veins","Tiny tubes in leaves." l3� "mesophyll","Loosely packed cells in a leaf." v3� "midrib","The strong central vein of a leaf." �Z� "mineral salts","Simple chemicals that plants take from the soil to help them live." ��� "monocotyledon","Flowering plants with one cotyledon (also called monocot). A typical monocot has a fibrous root system, narrow leaves with parallel veins and petals and sepals in multiples of 3." �W� "palisade cells","The layer of leaf cells which carries out most photosynthesis." �V� "phloem","A network of tubes throughout the plant which carries food and water." �E� "photosynthesis","The process by which green plants make food." �3� "samara","A fruit with wings (eg. Sycamore)." �9� "seed","The fertilized ovule of a flowering plant." �G� "starch","Plants store sugars in long chains which makes starch." �0� "stoma","A tiny hole in the leaf surface." �&� "stomata","More than one stoma." �!� "sucrose","A simple sugar." �V� "xylem","A network of tubes throughout the plant which carries water and salts." �1�j%=0�totgloss%-1:�k%=0�1:� gloss$(j%,k%):�:� � +0 � "Plantwise" )� "The structure of flowering plants" ,� "The reproduction of flowering plants" *)� "What plants need to live and grow" 4� "How plants survive" >$� "The classification of plants" H�j%=0�5:� anmewtitle$(j%):� R� +0 \V� "04,07,440,640,368,604,07,548,448,494,340,07,424,232,360,248,07,460,092,394,092" f|� "06,07,262,624,342,532,07,564,640,516,604,07,148,444,124,400,07,138,000,122,108,07,426,128,486,104,07,690,000,654,064" p� "00," z0� "02,07,138,000,148,044,07,576,000,526,088" �|� "06,07,426,624,462,448,07,462,448,608,392,07,462,448,386,344,07,462,448,484,344,07,080,596,104,492,00,082,376,184,332" ��� "07,07,160,000,136,116,07,160,000,094,096,07,440,000,376,040,07,532,100,586,112,07,514,080,544,048,07,752,152,680,092,07,752,152,788,100" ��j%=0�5:� anmewlines$(j%):� �� +0 �� STRUCTURE �� plant cells �� 0,0,0,0,0,0,0 �� 0,0,0,0,0,0,0 �� flower �� 0,1,0,0,0,0,0 �� 0,2,0,0,0,0,0 � � leaf �� 0,1,1,0,0,0,0 � 1,2,1,0,0,0,0 � 1,1,2,0,0,0,0 � stem $� 0,1,1,0,0,0,0 .� 1,2,1,0,0,0,0 8� 1,1,2,0,0,0,0 B � root L� 1,1,0,0,0,0,0 V� 1,2,0,0,0,0,0 ` j� REPRODUCTION t� pollination ~� 1,0,0,1,1,1,1 �� 1,0,0,2,1,1,1 �� 1,0,0,1,2,1,1 �� 1,0,0,1,1,2,1 �� 1,0,0,1,1,1,2 �� fertilization �� 1,1,0,0,0,0,0 �� 1,2,0,0,0,0,0 �� 0,0,0,0,0,0,0 �� seed dispersal �� 1,0,0,1,1,1,1 �� 1,0,0,2,1,1,1 �� 1,0,0,1,2,1,1 � 1,0,0,1,1,2,1 � 1,0,0,1,1,1,2 � seed germination � 1,1,1,0,0,0,0 (� 0,2,1,0,0,0,0 2� 1,1,2,0,0,0,0 <� corms & bulbs F� 1,0,0,0,0,0,0 P� runners and rhizomes Z� 1,0,0,0,0,0,0 d n� NEEDS x� need water �� 0,0,0,0,0,0,0 �� need light �� 0,0,0,0,0,0,0 �� need air �� 0,0,0,0,0,0,0 �� need warmth �� 0,0,0,0,0,0,0 �� need soil minerals �� 0,0,0,0,0,0,0 � �� SURVIVAL �� daily cycles �� 0,0,0,0,0,0,0 � seasonal cycles � 0,0,0,0,0,0,0 � 0,0,0,0,0,0,0 "� protection ,� 0,0,0,0,0,0,0 6� competition @� 0,0,0,0,0,0,0 J T� CLASSIFICATION ^� evolution h� 0,0,0,0,0,0,0 r� flowering plants |� 0,0,0,0,0,0,0 �� conifers �� 0,0,0,0,0,0,0 �� ferns �� 0,0,0,0,0,0,0 �� clubmosses & horsetails �� 0,0,0,0,0,0,0 �� mosses & liverworts �� 0,0,0,0,0,0,0 �� fungi �� 0,0,0,0,0,0,0 �� algae �� 0,0,0,0,0,0,0 � � lichens � 0,0,0,0,0,0,0 (�j%=0�48:�k%=0�6:� wdefn%(j%,k%):�:� 8� data specific to actanim% (usually animation data) &� +0 0� "02,00,01" : � "01,04" D � "01,01" N � "01,04" X � "01,01" b � "01,04" l � "01,01" v� stop 6 �*� expand box for 10 so next line is 17 �#� "","","","","","","","","","" �� "02,05,06" � � "01,07" � � "01,08" � � "01,09" � � "01,10" � � "01,11" � � "01,12" � � "01,11" � � "01,12" � � "01,11" � � "01,12" � "01,11" � "01,12" � stop 29 � "03,05,10,13" * � "01,14" 4 � "01,13" > � "01,14" H � "01,13" R� "02,14,15" \� "02,13,16" f� "02,14,17" p� "02,13,17" z� "02,14,17" �� "02,13,17" � � stop 40 �� "02,00,03" � � "01,18" � � "01,19" � � "01,20" � � stop 44 � � "01,21" � � "01,22" � � stop 46 � � "01,23" � � "01,24" � � "01,25" � "01,26" � "01,27" �k%=0�51:� photo$(k%):� $� +0 . � 138,64,122,40,124,20,128,4 8&�j%=0�3:�k%=0�1:� carr%(j%,k%):�:� B� +0 L1� 214,164,92,56,194,152,214,124,96,12,196,108 V&�j%=0�5:�k%=0�1:� root%(j%,k%):�:� `� +0 j5� 118,116,220,116,568,116,674,116,598,128,646,128 t%�j%=0�5:�k%=0�1:� st1%(j%,k%):�:� ~� +0 �5� 106,112,234,112,558,112,686,112,590,124,654,124 �%�j%=0�5:�k%=0�1:� st2%(j%,k%):�:� �� +0 �Z� 232,148,280,192,280,192,280,192,272,180,258,168,244,160,206,150,176,92,148,64,120,36 �'�j%=0�10:�k%=0�1:� wood%(j%,k%):�:� �� +0 �u� 470,464,456,412,444,364,432,308,426,248,416,196,374,160,314,144,284,144,284,144,284,144,284,144,284,144,284,144 �'�j%=0�13:�k%=0�1:� fert%(j%,k%):�:� �� +0 �� 54,432,50,500,50,432,36,384,24,352,24,352,582,512,588,512,506,444,418,384,394,348,0,0,134,156,130,168,136,84,134,48,132,28,130,28,680,160,692,180,642,144,570,108,504,80,0,0 �2�j%=0�3:�k%=0�5:�l%=0�1:� fru%(j%,k%,l%):�:�:� �� +0 +� "4,350,3,700,1,590,4,600,3,520,0,480" +� "3,430,0,768,2,594,3,680,0,588,1,504" +� "0,498,1,792,2,594,0,748,1,612,2,508" +� "3,430,0,768,2,594,3,680,0,588,1,504" (�j%=0�3:� gra$(j%):� 2� +0 <Q� 216,528,274,632,164,572,44,532,40,552,116,632,268,616,98,616,26,536,206,512 F'�j%=0�9:�k%=0�1:� disp1%(j%,k%):�:� P� +0 ZE� 574,556,582,520,752,528,516,628,534,620,748,544,690,608,596,508 d'�j%=0�7:�k%=0�1:� disp2%(j%,k%):�:� n� +0 x� 436,628,456,616,442,612 �'�j%=0�2:�k%=0�1:� disp3%(j%,k%):�:� �� +0 �� 72,76,36,32,72,96,68,88 ��j%=0�7:� sland%(j%):� �� +0 �� 264,232,240 ��j%=0�2:� cbex%(j%):� �� +0 � � 460,376 ��j%=0�1:� lupex%(j%):� �� +0 �+� 258,348,198,364,140,324,100,216,82,60 �,� 310,340,372,332,434,248,480,140,536,60 +� 288,328,378,352,532,332,708,284,820,0 *� 240,324,158,336,30,316,-100,0,-100,0 -� 268,304,214,332,162,312,140,244,138,112 "+� 366,356,272,392,158,388,74,340,-100,0 ,*� 358,320,264,340,146,304,74,216,32,88 6,� 434,312,406,356,346,340,288,248,254,96 @-� 474,284,466,336,442,352,416,276,404,140 J)� 574,288,662,336,784,348,820,0,820,0 T*� 518,268,562,248,596,196,632,92,820,0 ^'� 614,252,734,292,820,0,820,0,820,0 h+� 594,220,648,228,710,192,764,112,820,0 r4�j%=0�12:�k%=0�4:�l%=0�1:� bean%(j%,k%,l%):�:�:� |� +0 �r� 84,444,126,436,218,396,356,376,490,356,628,324,530,288,418,256,308,232,202,212,80,184,150,156,224,120,318,72 �&�j%=0�13:�k%=0�1:� syc%(j%,k%):�:� �� +0 � � 538,490,446,338,258,148,80 ��j%=0�6:� dand%(j%):� �� +0 �C� 508,332,462,312,408,284,352,256,300,232,218,184,142,136,62,80 �%�j%=0�7:�k%=0�1:� dse%(j%,k%):�:� �� +0 �� 0,164,596,1,162,560,1,172,524,1,182,484,1,196,436,2,210,420,3,226,432,3,242,480,3,254,536,3,268,596,3,0,650,4,222,560,4,222,456,4,222,336,4,222,188,5,172,4 �%�j%=0�15:�k%=0�2:� do%(j%,k%):�:� �� +0 �� 212,4,198,52,170,32 &�j%=0�2:�k%=0�1:� mlxy%(j%,k%):�:� � +0 � 392,352,300,224,136 &�j%=0�4:� coc%(j%):� 0� +0 :#� 172,172,136,80,68,60,48,40,32 D�j%=0�8:� pea%(j%):� N� +0 X#� 196,196,152,92,72,56,44,36,28 b�j%=0�8:� sunf%(j%):� l� +0 v%� 192,188,156,140,112,88,76,72,64 ��j%=0�8:� whe%(j%):� �� +0 �#� "110,pea","332,sun","634,whe" �#� "070,hyp","348,epi","570,mon" �#� "060,peb","284,sub","586,whb" ��j%=0�8:� ger$(j%):� �� +0 �7� 26,180,26,180,46,180,46,180,30,72,148,344,130,344 �&�j%=0�6:�k%=0�1:� corm%(j%,k%):�:� �� +0 �3� 498,160,498,160,498,160,482,160,438,44,428,44 �&�j%=0�5:�k%=0�1:� bulb%(j%,k%):�:� �� +0 -� 148,244,234,288,392,212,392,160,372,136 %�j%=0�4:�k%=0�1:� run%(j%,k%):�:� � +0 0� 362,112,274,112,88,96,0,84,186,184,150,176 *%�j%=0�5:�k%=0�1:� rhi%(j%,k%):�:� 4� > H��modechange R&È™"OS_ReadVduVariables",inb%,outb% \Nxmaxec%=(((outb%!8)+1)<<(outb%!0))-1:ymaxec%=(((outb%!12)+1)<<(outb%!4))-1 fCÈ™"Wimp_ReadPixTrans",&100,animarea%,"anim",,,,scale%,coltrans% p� z ���error(msg$,errno%) �!!errblk%=99:$(errblk%+4)=msg$ �/È™ "Wimp_ReportError",errblk%,0,"Plantwise" �� � ���discmess(msg$,errno%) �!!errblk%=99:$(errblk%+4)=msg$ �4È™ "Wimp_ReportError",errblk%,%10000,"Plantwise" �� � ���selecticn(w%,i%,f%) �F!blk%=w%:blk%!4=i%:blk%!12=(1<<21):�f%=0 blk%!8=0:� blk%!8=blk%!12 � È™ "Wimp_SetIconState",,blk% � ��geticonstate(w%,i%) $3!blk%=w%:blk%!4=i%:È™ "Wimp_GetIconState",,blk% .� 8 Bݤisselected(w%,i%) L�geticonstate(w%,i%) V =((blk%!24)�(1<<21))=(1<<21) ` jݤisopen(w%) t+!blk%=w%:È™ "Wimp_GetWindowState",,blk% ~ =((blk%!32)�(1<<16))=(1<<16) � ���wintoscrn(b%) �.!blk2%=!b%:È™ "Wimp_GetWindowState",,blk2% �b%!8+=(blk2%!4)-(blk2%!20) � b%!12+=(blk2%!16)-(blk2%!24) �b%!16+=(blk2%!4)-(blk2%!20) � b%!20+=(blk2%!16)-(blk2%!24) �� � �2ݤleaf(f$) I%=�f$:È•I%>1��f$,I%,1)<>"."I%-=1:� ��f$,I%,1)="."I%+=1 �=�f$,I%) ݤconverttolower(a$) � l%,b$,ch%:b$="" �(a$)>0� ( �l%=1��a$ 2ch%=�(�a$,l%,1)) <!�(ch%>&40)�(ch%<&5B):ch%+=&20 Fb$+=�ch% P� Z� d=b$ n xݤgeticnstring(w%,i%) �3!blk%=w%:blk%!4=i%:È™ "Wimp_GetIconState",,blk% �=�readstring(blk%!28) � ���puticnstring(w%,i%,a$) �3!blk%=w%:blk%!4=i%:È™ "Wimp_GetIconState",,blk% �$$(blk%!28)=a$:?((blk%!28)+�a$)=0 �3blk%!8=0:blk%!12=0:È™ "Wimp_SetIconState",,blk% �� � �ݤreadstring(p%) �8�a$:a$="":È• (�(a$)<255)�(?p%>31):a$+=�(?p%):p%+=1:� �=a$ � ��load_template(winname$) � j% Ewinstarts%!((winctr%-1)*4)=wptr%:indstarts%!((winctr%-1)*4)=iptr% "TÈ™ "Wimp_LoadTemplate",,wptr%,iptr%,indbase%+totindsize%,-1,winname$,0 � ,,iptr% ,D�winname$="animate" animwtitle%=wptr%!72:animwtitlesiz%=wptr%+80 6E�winname$="animmenu" anmewtitle%=wptr%!72:anmewtitlesiz%=wptr%+80 @noicns%=wptr%!84 J�j%=0�(noicns%-1)*32�32 T �checkicons ^� h%�winname$="whatword":�createwordw r(wptr%+=88+((wptr%!84)*32):winctr%+=1 |� � ���createwordw �� ic%,wo%,ico%,row%,col% � ic%=0 � �col%=0�1 � �row%=0�12 �. �(ic%<totgloss%)�((col%<>0)�(row%<>0)) � �@ �wo%=0�7:wptr%!(88+(32*ic%)+(4*wo%))=wptr%!(88+(4*wo%)):� � ico%=wptr%+(88+(32*ic%)) �C !ico%=(wptr%!88)+(260*col%):ico%!8=(wptr%!(88+8))+(260*col%) �> �row%>0:ico%!4=!(ico%-32+4)-56:ico%!12=!(ico%-32+12)-56 �7 ico%!20=iptr%:$iptr%="123455678901234":iptr%+=15 � ico%!28=15 � ic%+=1 � &� 0 �j%=32�((totgloss%-1)*32)�32 : �checkicons D� Nwptr%!84=totgloss% X� b l��checkicons v+ icnblk%=wptr%+88+j%:icnf%=(icnblk%!16) �� � �indirected(icnf%)���sprite(icnf%)��text(icnf%)�(icnblk%!24<>-1) �:秤readstring(icnblk%!24),"b0")<>0 icnf%=icnf%�&FFFF0FFF �O � ��indirected(icnf%)���sprite(icnf%)��text(icnf%) �:icnf%=icnf%�&FFFF3FFF �8 � �indirected(icnf%)��sprite(icnf%)���text(icnf%) � � �winname$="menu"� �= icnblk%!24=menuarea%:icnf%=(icnf%�&FFFF0FFF)�&00003000 � � �4 �(winname$="proginfo")�(winname$="fastfind")� �< icnblk%!24=sparea%:icnf%=(icnf%�&FFFF0FFF)�&00003000 � � �= icnblk%!24=detarea%:icnf%=(icnf%�&FFFF0FFF)�&00003000 � � � � � � 7 � �indirected(icnf%)��sprite(icnf%)��text(icnf%) � S �(winname$="animmenu")�(winname$="animate"):icnf%=(icnf%�&FFFF0FFF)�&00003000 T �(winname$="fastfind")�(winname$="whatword"):icnf%=(icnf%�&FFFF0FFF)�&00003000 � *6� IF NOTFNindirected(icnf%)ANDFNsprite(icnf%) THEN 4%� sprn$=FNreadstring(icnblk%+20) >1� SYS "XWimp_SpriteOp",40,,sprn$ TO ,,,w%,h% H�� IF(w%ORh%)=0:icnf%=icnf%OR256:$iptr%=sprn$:?(iptr%+(LENsprn$))=0:icnblk%!20=iptr%:icnblk%!24=sparea%:icnblk%!28=LENsprn$:iptr%+=LEN(sprn$)+1 R� ENDIF \ icnblk%!16=icnf% f� p zݤindirected(f%) �=((f%�256)=256) � �ݤsprite(f%) �=((f%�2)=2) � �ݤtext(f%) �=((f%�1)=1) � � ��baricon �$ibname%="frame1" �4!blk%=-1:blk%!4=0:blk%!8=0:blk%!12=84:blk%!16=72 �Gblk%!20=&1000313A:blk%!24=ibname%:blk%!28=sparea%:blk%!32=�$ibname% �%È™ "Wimp_CreateIcon",,blk% � ibh% � ��makemenusprites(m%) $#È™ "OS_SpriteOp",&109,menuarea% .X�unsquash(menufile%(m%,0),menufile%(m%,1),sqbuffer%,17*1024,menuarea%+4,(27*1024)-4) 8� B L=��unsquash(inptr%,insiz%,bufptr%,bufsiz%,outptr%,outsiz%) VC� first call with input size to see how big workspace should be `8�SYS "Squash_Decompress",%1000,insiz%,0,0,0,0 TO r0% j+�IFr0%<=bufsiz%:fast%=%100:ELSE:fast%=0 t�someleft%=insiz% ~ � done%=0 �'�r2%=inptr%:r4%=outptr%:r5%=outsiz% ��WHILE someleft% �_È™ "Squash_Decompress",%100,bufptr%,inptr%,insiz%,outptr%,outsiz% � r0%,r1%,r2%,r3%,r4%,r5% �_�r0%=1:�error("Squash_Decompress ran out of input data",0):È™ "Wimp_CloseDown",,&4B534154:� �a�r0%=2:�error("Squash_Decompress ran out of output space",0):È™ "Wimp_CloseDown",,&4B534154:� �g�PROCerror(STR$~(r0%)+" "+STR$~(r1%)+" "+STR$~(r2%)+" "+STR$~(r3%)+" "+STR$~(r4%)+" "+STR$~(r5%),0) � �ENDWHILE �� � ���open_menuw(am%,aa%) �� j% �%�isopen(menuw%):�closewind(blk%) �am%>0� �j%=6�18�3 G �am%=((j%/3)-1):�selecticn(menuw%,j%,�):�:�selecticn(menuw%,j%,�) � (� 2/!blk%=menuw%:È™ "Wimp_GetWindowState",,blk% <�firsttime%� F8 �xmaxec%>1280:blk%!4=�((xmaxec%-1280)/2):�:blk%!4=0 P8 �ymaxec%>1024:blk%!8=�((ymaxec%-1024)/2):�:blk%!8=0 ZC blk%!12=(blk%!4)+352:blk%!16=(blk%!8)+1024:blk%!20=0:blk%!24=0 d� n!blk%=menuw%:blk%!28=-1 x�openwind(blk%) ��open_animw(am%,aa%) �� � ���open_findw �� j% �'�j%=35�88:�selecticn(findw%,j%,�):� �findicn%=0 �U�(actmenu%>0)�(actanim%=-1):�selecticn(findw%,34+actmenu%,�):findicn%=34+actmenu% �F�actanim%>=0:�selecticn(findw%,40+actanim%,�):findicn%=40+actanim% �/!blk%=findw%:È™ "Wimp_GetWindowState",,blk% �7�xmaxec%>1280:blk%!4=�((xmaxec%-1280)/2):�:blk%!4=0 �5�ymaxec%>960:blk%!8=�((ymaxec%-960)/2):�:blk%!8=0 �Bblk%!12=(blk%!4)+1280:blk%!16=(blk%!8)+960:blk%!20=0:blk%!24=0 blk%!28=-1:�openwind(blk%) � "��open_mess(m$) ,�puticnstring(demow%,0,m$) 61!blk2%=anmew%:È™ "Wimp_GetWindowState",,blk2% @'blk%!4=blk2%!4:blk%!12=(blk%!4)+882 J3�(blk2%!8)<132:blk%!16=132:�:blk%!16=blk2%!8-44 Tblk%!8=(blk%!16)-132 ^/!blk%=demow%:blk%!20=0:blk%!24=0:blk%!28=-1 h�openwind(blk%) r� | ���open_messff �o�puticnstring(demow%,0,"Only topics with an orange background are available in this demonstration system.") �1!blk2%=findw%:È™ "Wimp_GetWindowState",,blk2% �-blk%!4=(blk2%!4)+200:blk%!12=(blk%!4)+882 �5�(blk2%!8)<132:blk%!16=132:�:blk%!16=(blk2%!8)-44 �blk%!8=(blk%!16)-132 �/!blk%=demow%:blk%!20=0:blk%!24=0:blk%!28=-1 ��openwind(blk%) �� � ���open_messww �L�puticnstring(demow%,0,"This is only a part of the What Word facility.") �1!blk2%=wordw%:È™ "Wimp_GetWindowState",,blk2% .�blk%!4=(blk2%!4)+200:blk%!12=(blk%!4)+882 5�xmaxec%>882:blk%!4=�((xmaxec%-882)/2):�:blk%!4=0 blk%!12=(blk%!4)+882 &5�(blk2%!8)<132:blk%!16=132:�:blk%!16=(blk2%!8)-44 0blk%!8=(blk%!16)-132 :/!blk%=demow%:blk%!20=0:blk%!24=0:blk%!28=-1 D�openwind(blk%) N� X b��open_mess1 l0!blk%=demo1w%:È™ "Wimp_GetWindowState",,blk% v7�xmaxec%>1040:blk%!4=�((xmaxec%-1040)/2):�:blk%!4=0 �5�ymaxec%>740:blk%!8=�((ymaxec%-740)/2):�:blk%!8=0 �Bblk%!12=(blk%!4)+1040:blk%!16=(blk%!8)+740:blk%!20=0:blk%!24=0 �blk%!28=-1:�openwind(blk%) �� � ���open_wordw �� j% �/�j%=0�totgloss%-1:�selecticn(wordw%,j%,�):� �/!blk%=wordw%:È™ "Wimp_GetWindowState",,blk% �9�xmaxec%>wide%:blk%!4=�((xmaxec%-wide%)/2):�:blk%!4=0 �9�ymaxec%>high%:blk%!8=�((ymaxec%-high%)/2):�:blk%!8=0 �Eblk%!12=(blk%!4)+wide%:blk%!16=(blk%!8)+high%:blk%!20=0:blk%!24=0 �blk%!28=-1:�openwind(blk%) � ��open_defnw(i%) � j% *M�puticnstring(defnw%,0,gloss$(i%,0)):�puticnstring(defnw%,1,gloss$(i%,1)) 4笤isopen(defnw%)� >0 !blk%=defnw%:È™ "Wimp_GetWindowState",,blk% H6 �xmaxec%>842:blk%!4=�((xmaxec%-842)/2):�:blk%!4=0 R6 �ymaxec%>244:blk%!8=�((ymaxec%-244)/2):�:blk%!8=0 \B blk%!12=(blk%!4)+842:blk%!16=(blk%!8)+244:blk%!20=0:blk%!24=0 f blk%!28=-1:�openwind(blk%) p� z� � ���open_animw(am%,aa%) �� j%,detsiz%,k% ��firsttime%� � firsttime%=0 �. !blk%=anmew%:È™ "Wimp_DeleteWindow",,blk% � !((winstarts%!8)+52)=-56 �2 È™ "Wimp_CreateWindow",,winstarts%!8 � anmew% � �initanmewlabs(0) �D !anmewtitlesiz%=�(anmewtitle$(0))+1:$anmewtitle%=anmewtitle$(0) �0 !blk%=anmew%:È™ "Wimp_GetWindowState",,blk% �> �xmaxec%>1280:blk%!4=�((xmaxec%-1280)/2)+396:�:blk%!4=396 �8 �ymaxec%>1024:blk%!8=�((ymaxec%-1024)/2):�:blk%!8=0 C blk%!12=(blk%!4)+842:blk%!16=(blk%!8)+1024:blk%!20=0:blk%!24=0 blk%!28=-1:�openwind(blk%) actmenu%=am%:actanim%=aa% $ � .� 8%�isopen(animw%):�closewind(blk%) B%�isopen(anmew%):�closewind(blk%) L �am%<>0 � V �shrunkanme%� `? �am%>0:�resizeanmew:�setextent(anmew%,800):shrunkanme%=-1 j � t� ~�aa%=-1� � �initanmewlabs(am%) �H !anmewtitlesiz%=�(anmewtitle$(am%))+1:$anmewtitle%=anmewtitle$(am%) �, *Set PlantWise$chaindir <PlantWise$Dir> �V �Y%=0:test%=0:�:�floppy_disk("Plantwise","$.!Plantwise.spfiles.anim20"):�error%=0 �` �(actmenu%<>am%)�(actanim%<>aa%):�loadunsquash(detarea%,100*1024,"spfiles.animmenu"+�(am%)) �4 �makeanim(am%,aa%,0):�am%>0:�addanmewlines(am%) �� � �initanimw(aa%) �H !animwtitlesiz%=�(animwtitle$(aa%))+1:$animwtitle%=animwtitle$(aa%) � �actanim%<>aa%� �- *Set PlantWise$chaindir <PlantWise$Dir> �W �Y%=0:test%=0:�:�floppy_disk("Plantwise","$.!Plantwise.spfiles.anim20"):�error%=0 �bg%(aa%)� F !detarea%=120*1024:detarea%!8=16:È™ "OS_SpriteOp",&109,detarea% B !bgarea%=33*1024:bgarea%!8=16:È™ "OS_SpriteOp",&109,bgarea% I �getbg(aa%):�loadunsquash(detarea%,120*1024,"spfiles.anim"+�(aa%)) ( �specialbg(aa%) 2 � <F !detarea%=153*1024:detarea%!8=16:È™ "OS_SpriteOp",&109,detarea% F= �loadunsquash(detarea%,153*1024,"spfiles.anim"+�(aa%)) P � Z) �getwordfile(aa%):�getnumbfile(aa%) d � n �makeanim(am%,aa%,bg%(aa%)) xP �texton%:�removetext(aa%):acttxticn%=0:�selecticn(animw%,1,�):�addtext(aa%) �� �,�actanim%=-1:!blk%=anmew%:�:!blk%=animw% ��(actmenu%=0)�(am%<>0) � �" �j%=4�20�4:blk%!j%=blk2%!j%:� � blk%!24=(blk2%!24)+56 �K �((blk2%!32)�&40000)=&40000:blk%!12=(blk%!4)+842:blk%!8=(blk%!16)-1024 �� �# È™ "Wimp_GetWindowState",,blk% �J �((blk%!32)�&40000)=&40000:blk%!12=(blk%!4)+842:blk%!8=(blk%!16)-1024 �� �'�aa%=-1:!blk%=anmew%:�:!blk%=animw% �blk%!28=-1:�openwind(blk%) �actmenu%=am%:actanim%=aa% � ��specialbg(aa%) "ÈŽ aa% � ,` � 14: È™"OS_SpriteOp",&13C,bgarea%,"bg7",0:SCALE%!0=12:SCALE%!4=12:SCALE%!8=16:SCALE%!12=16 6o �j%=0�7:È™"OS_SpriteOp",&134,detarea%,"gr"+�(j%�3),420+(j%*50),0,&08,SCALE%,0:�flip(2,"gr"+�(j%�3)):� @u �flip(2,"gr0"):�flip(2,"gr1"):SCALE%!0=1:SCALE%!4=1:SCALE%!8=1:SCALE%!12=1:È™"OS_SpriteOp",&13C,bgarea%,0,1 J. � 16:È™"OS_SpriteOp",&13C,bgarea%,"bg4",0 TX � j%=0�3:È™"OS_SpriteOp",&122,detarea%,"bg",0+(408*(j%�2)),0+(336*�(j%/2)),8:� ^* È™"OS_SpriteOp",&13C,bgarea%,0,1 h� r� | ���open_setupw �� j% �!blk%=setupw% �7�xmaxec%>1104:blk%!4=�((xmaxec%-1104)/2):�:blk%!4=0 �5�ymaxec%>156:blk%!8=�((ymaxec%-156)/2):�:blk%!8=0 �.blk%!12=(blk%!4)+1104:blk%!16=(blk%!8)+156 �"blk%!20=0:blk%!24=0:blk%!28=-1 ��openwind(blk%) �� � ���getbg(aa%) �Ȏ aa% � �, � 10:�makebg(aa%,4,-1,332,-1,364,11,13) * � 12:�makebg(aa%,8,-1,124,0,122,1,13) ( � 14,23:�makebg(aa%,7,-1,0,0,0,0,0) ' � 20:�makebg(aa%,8,0,80,0,78,1,13) &G � 22:�loadunsquash(detarea%,120*1024,"spfiles.bgs.bg"+�(bg%(aa%))) 0t È™ "OS_SpriteOp",&109,bgarea%:È™ "OS_SpriteOp",&10F,bgarea%,"bg1",1,405,161,12:�addpalet(bgarea%,"bg1") :1 È™"OS_SpriteOp",&13C,bgarea%,"bg1",0 D1 �18,0,15:�25,4,0;0;:�25,101,810;644; N; È™ "OS_SpriteOp",&122,detarea%,"horiz",0,360,8 X3 �18,0,10:�25,4,0;200;:�25,101,810;360; bQ �23,12,11,10,10,11,11,10,10,11:�18,16,0:�25,4,0;80;:�25,101,810;200; lO �23,12,11,13,13,11,11,13,13,11:�18,16,0:�25,4,0;0;:�25,101,810;80; v0 �18,0,7:�25,4,0;80;:�25,101,810;80; �j È™ "OS_SpriteOp",&122,detarea%,"cow",186,220,8:È™ "OS_SpriteOp",&122,detarea%,"fence",0,220,8 �l È™ "OS_SpriteOp",&122,detarea%,"verge",0,184,8:È™ "OS_SpriteOp",&122,detarea%,"verge",404,184,8 �- È™"OS_SpriteOp",&13C,bgarea%,0,1 �� È™ "OS_SpriteOp",&119,detarea%,"horiz":È™ "OS_SpriteOp",&119,detarea%,"cow":È™ "OS_SpriteOp",&119,detarea%,"fence":È™ "OS_SpriteOp",&119,detarea%,"verge" �* � 25:�makebg(aa%,3,0,240,0,298,11,13) �, � 29:�makebg(aa%,3,-1,188,-1,208,11,13) �! :�makebg(aa%,0,0,0,0,0,0,0) �� �� � �:��makebg(aa%,bgno%,flip%,up%,line%,ecfup%,ecf1%,ecf2%) �?�loadunsquash(bgarea%,33*1024,"spfiles.bgs.bg"+�(bg%(aa%))) ��bgno%>0 � !7 �flip%:È™ "OS_SpriteOp",&12F,bgarea%,"bg"+�(bgno%) !, È™"OS_SpriteOp",&13C,animarea%,"anim",0 !5 È™"OS_SpriteOp",&122,bgarea%,"bg"+�(bgno%),0,0,0 ! ' È™"OS_SpriteOp",&13C,animarea%,0,1 !*1 È™"OS_SpriteOp",&13C,bgarea%,"bg"+�(bgno%),0 !42 È™"OS_SpriteOp",&122,animarea%,"anim",0,up%,0 !>m �ecfup%>0:�23,12,ecf1%,ecf2%,ecf2%,ecf1%,ecf1%,ecf2%,ecf2%,ecf1%:�18,16,0:�25,4,0;0;:�25,101,810;ecfup%; !HF �line%:È™"Wimp_SetColour",7:�25,4,0;ecfup%;:�25,101,810;ecfup%+2; !R% È™"OS_SpriteOp",&13C,bgarea%,0,1 !\� !f� !p !z��makeanim(am%,aa%,bg%) !��aa%=-1� !�! �copysp("men"+�(am%),"anim") !�� !� �bg%��texton% � !�! �copysp("bg"+�(bg%),"anim") !� � !� �cl_anim(15) !� ÈŽ aa% � !�$ � 10,16:�copysp("bg4","anim") !�k � 18:�texton% �:È™"OS_SpriteOp",&13C,animarea%,"anim",0:�fruitbg:È™"OS_SpriteOp",&13C,animarea%,0,1 !� � !� � !�, È™"OS_SpriteOp",&13C,animarea%,"anim",0 " ÈŽ aa% � " � 4: �makeleaf " � 5: �makephoto "$ � 6: �makeleafcl ".& � 20: se%()=0:�makedisp(0,se%()) "8 � 21: �makedispexp(0,0) "B% � 22: �makedispwind(0,0,0,-1,0) "L$ � 23: �makedispani(0,-1,0,0,0) "V � 24: �makedispwat "` � "j' È™"OS_SpriteOp",&13C,animarea%,0,1 "t� "~� "� "���makeleaf "��ș"OS_SpriteOp",&122,detarea%,"hww",16,0,8:È™"OS_SpriteOp",&122,detarea%,"ss",276,0,8:È™"OS_SpriteOp",&122,detarea%,"sw",590,0,8 "�� "� "���makephoto "�.È™"OS_SpriteOp",&122,detarea%,"phbg",0,0,8 "�^È™"OS_SpriteOp",&122,detarea%,"ar30",0,88,8:È™"OS_SpriteOp",&122,detarea%,"ar20",180,316,8 "�9�simp%=1:È™"OS_SpriteOp",&122,detarea%,"equn",0,492,8 "�� "� "���makeleafcl # 0È™"OS_SpriteOp",&122,detarea%,"lecl",58,52,8 # � # # #(��makedisp(s%,se%()) #2� j%,k% #<�ș"OS_SpriteOp",&122,detarea%,"tree",336-(8*s%),536,8:È™"OS_SpriteOp",&122,detarea%,"tree",470+(16*s%),448,8:�flip(2,"tree"):È™"OS_SpriteOp",&122,detarea%,"tree",-16*s%,448,8:�flip(2,"tree") #FL�texton%:�23,12,1,13,13,1,1,13,13,1:�18,16,0:�25,4,0;0;:�25,101,810;160; #P�j%=0�9 #Z �j%>=6� #d[ �se%(j%-6)=0:È™"OS_SpriteOp",&122,detarea%,"seed",disp1%(j%,0)-(16*s%),disp1%(j%,1),8 #nY �se%(j%-6)=1:È™"OS_SpriteOp",&122,detarea%,"seed",disp1%(j%,0)-16,disp1%(j%,1)-52,8 #xZ �se%(j%-6)=2:È™"OS_SpriteOp",&122,detarea%,"seed",disp1%(j%,0)-16,disp1%(j%,1)-156,8 #�Z �se%(j%-6)=3:È™"OS_SpriteOp",&122,detarea%,"seed",disp1%(j%,0)-16,disp1%(j%,1)-312,8 #�c �se%(j%-6)>=4:È™"OS_SpriteOp",&122,detarea%,"seed2"+�(j%-5),disp1%(j%,0)-16-20,sland%(j%-6),8 #� � #�N È™"OS_SpriteOp",&122,detarea%,"seed",disp1%(j%,0)-(16*s%),disp1%(j%,1),8 #� � #�� #�$�j%=1�4:�flip(2,"seed2"+�(j%)):� #��j%=0�7 #� �j%>=5� #�[ �se%(j%-1)=0:È™"OS_SpriteOp",&122,detarea%,"seed",disp2%(j%,0)+(16*s%),disp2%(j%,1),8 #�Y �se%(j%-1)=1:È™"OS_SpriteOp",&122,detarea%,"seed",disp2%(j%,0)+16,disp2%(j%,1)-52,8 #�Z �se%(j%-1)=2:È™"OS_SpriteOp",&122,detarea%,"seed",disp2%(j%,0)+16,disp2%(j%,1)-156,8 #�Z �se%(j%-1)=3:È™"OS_SpriteOp",&122,detarea%,"seed",disp2%(j%,0)+16,disp2%(j%,1)-312,8 $c �se%(j%-1)>=4:È™"OS_SpriteOp",&122,detarea%,"seed2"+�(j%-4),disp2%(j%,0)+16-20,sland%(j%-1),8 $ � $N È™"OS_SpriteOp",&122,detarea%,"seed",disp2%(j%,0)+(16*s%),disp2%(j%,1),8 $" � $,� $6�j%=0�2 $@ �j%=2� $JW �se%(7)=0:È™"OS_SpriteOp",&122,detarea%,"seed",disp3%(j%,0)-(8*s%),disp3%(j%,1),8 $TU �se%(7)=1:È™"OS_SpriteOp",&122,detarea%,"seed",disp3%(j%,0)-8,disp3%(j%,1)-52,8 $^V �se%(7)=2:È™"OS_SpriteOp",&122,detarea%,"seed",disp3%(j%,0)-8,disp3%(j%,1)-156,8 $hV �se%(7)=3:È™"OS_SpriteOp",&122,detarea%,"seed",disp3%(j%,0)-8,disp3%(j%,1)-312,8 $rU �se%(7)>=4:È™"OS_SpriteOp",&122,detarea%,"seed24",disp3%(j%,0)-8-20,sland%(7),8 $| � $�M È™"OS_SpriteOp",&122,detarea%,"seed",disp3%(j%,0)-(8*s%),disp3%(j%,1),8 $� � $�� $�$�j%=1�4:�flip(2,"seed2"+�(j%)):� $�cÈ™"OS_SpriteOp",&122,detarea%,"seed21",520,24,8:È™"OS_SpriteOp",&122,detarea%,"seed22",352,44,8 $�� $� $���makedispexp(cb%,lup%) $�XÈ™"OS_SpriteOp",&122,detarea%,"cb",4,0,8:È™"OS_SpriteOp",&122,detarea%,"lup",446,0,8 $�ș"OS_SpriteOp",&122,detarea%,"cbex"+�(cb%),cbex%(cb%),140,8:È™"OS_SpriteOp",&122,detarea%,"lupex"+�(lup%),lupex%(lup%),168,8 $�� $� $�+��makedispwind(fru%,dan%,dax%,ds%,ds2%) %�texton% � %I �23,12,11,10,10,11,11,10,10,11:�18,16,0:�25,4,0;80;:�25,101,810;200; %G �23,12,11,13,13,11,11,13,13,11:�18,16,0:�25,4,0;0;:�25,101,810;80; %&( �18,0,7:�25,4,0;80;:�25,101,810;80; %0� %:�ș"OS_SpriteOp",&122,detarea%,"leaf",0,344,8:È™"OS_SpriteOp",&122,detarea%,"fru",0,468,8:È™"OS_SpriteOp",&122,detarea%,"dan",464,80,8 %D �dan%>=0� %N} �dan%<=6:È™"OS_SpriteOp",&122,detarea%,"dan"+�(dan%),dand%(dan%),292,8:�:È™"OS_SpriteOp",&122,detarea%,"dan6",dax%,292,8 %X� %b �fru%>=0� %l� �fru%<=4:È™"OS_SpriteOp",&122,detarea%,"fru"+�(fru%),syc%(fru%,0),syc%(fru%,1),8:�:È™"OS_SpriteOp",&122,detarea%,"fru"+�(((fru%-5)�4)+1),syc%(fru%,0),syc%(fru%,1),8 %v� %��ds%>=0� %�9 SCALE%!0=ds%+1:SCALE%!4=ds%+1:SCALE%!8=8:SCALE%!12=8 %�L È™"OS_SpriteOp",&134,detarea%,"ds",dse%(ds%,0),dse%(ds%,1),&08,SCALE%,0 %�1 SCALE%!0=1:SCALE%!4=1:SCALE%!8=1:SCALE%!12=1 %�� %�5�ds2%:È™"OS_SpriteOp",&122,detarea%,"ds2",32,80,8 %�� %� %�*��makedispani(dov%,mou%,mox%,ml%,bur%) %ڈș"OS_SpriteOp",&122,detarea%,"bsw",0,0,8:È™"OS_SpriteOp",&122,detarea%,"burd",452,0,8:È™"OS_SpriteOp",&122,detarea%,"berry",0,544,8 %��mou%>=0 � %�; È™"OS_SpriteOp",&122,detarea%,"mrun"+�(mou%),mox%,12,8 %�L �bur%=1:È™"OS_SpriteOp",&122,detarea%,"bur",mox%+156+(14*(mou%�2)),88,8 &8 �bur%=2:È™"OS_SpriteOp",&122,detarea%,"bur",214,4,8 &Z �mou%=2:È™"OS_SpriteOp",&122,detarea%,"ml"+�(ml%),mox%+mlxy%(ml%,0),12+mlxy%(ml%,1),8 &� & _È™"OS_SpriteOp",&122,detarea%,"bswl",328,12,8:È™"OS_SpriteOp",&122,detarea%,"burdl",664,0,8 &*PÈ™"OS_SpriteOp",&122,detarea%,"dov"+�(do%(dov%,0)),do%(dov%,1),do%(dov%,2),8 &4� &> &H��makedispwat &RC�23,12,15,0,0,15,15,0,0,15:�18,16,0:�25,4,0;0;:�25,101,810;644; &\�ș"OS_SpriteOp",&122,detarea%,"land",0,0,8:È™"OS_SpriteOp",&122,detarea%,"palm",40,68,8:È™"OS_SpriteOp",&122,detarea%,"coc0",266,392,8 &f� &p &z &���checkanimtext(noof%,lin$) &�(� j%,k%,stops%():� stops%(maxstops%) &�Gstops%(0)=-1:�j%=1�noof%:stops%(j%)=�(lin$):lin$=�lin$,�(lin$)-4):� &��textnewon%� &� �puticnstring(animw%,9,"") &� �j%=1�noof% &�` �(sub%>=stops%(j%-1)+1)�(sub%<=stops%(j%)):�puticnstring(animw%,10,animwords$(simp%,j%-1)) &� � &�� &�textnewon%=0 &��j%=1�noof% &�f �sub%=stops%(j%-1)+1:�puticnstring(animw%,10,animwords$(simp%,j%-1)):�puticnstring(animw%,9,""):� &�� '� ' '��movephoto '$� lin$,noa%,k% '.�firstmove%� '8 sub%=0:firstmove%=�:elaps%=0 'B� 'LX�(sub%<=7)�((sub%>=23)�(sub%<=35))�((sub%>=39)�(sub%<=41))�:�<lasttime%+60-elaps%:� 'V3�(sub%>=8)�(sub%<=17)�:�<lasttime%+20-elaps%:� '`g�((sub%>=18)�(sub%<=22))�((sub%>=36)�(sub%<=38))�((sub%>=42)�(sub%<=52))�:�<lasttime%+120-elaps%:� 'j� 'telaps%=� '~8�texton%:�checkanimtext(6,"006,029,040,044,046,051") '� �sub%<52� '�, È™"OS_SpriteOp",&13C,animarea%,"anim",0 '� �(sub%>=7)�(sub%<=17)� '�\ È™"OS_SpriteOp",&122,detarea%,"phbg",0,0,8:È™"OS_SpriteOp",&122,detarea%,"ar30",0,88,8 '�4 �boxexp(sub%-7,10,188,292,-20,-16,40,32,40,32) '� � '� �(sub%<=6)�(sub%>=17)� '�$ lin$=photo$(sub%):noa%=�(lin$) '� lin$=�lin$,�(lin$)-3) '� �k%=1�noa% '�] È™"OS_SpriteOp",&122,detarea%,animsp$(�(lin$)),animsp%(�(lin$),0),animsp%(�(lin$),1),8 '� lin$=�lin$,�(lin$)-3) ( � ( � (; �moveendloop(6,"006,029,040,044,046,051",0,32,604,484) (� ((sub%+=1 (2W�sub%=53:�makeanim(actmenu%,actanim%,bg%(actanim%)):�animateend:�plotanim(actanim%) (<� (F (P��moveleafcl (Z� lin$,noa%,k% (d�firstmove%� (n sub%=0:firstmove%=�:elaps%=0 (x� (�'�sub%=1 �:�<lasttime%+120-elaps%:� (�2�(sub%>=2)�(sub%<=9)�:�<lasttime%+20-elaps%:� (�(�sub%>=10 �:�<lasttime%+80-elaps%:� (�� (�elaps%=� (�$�texton%:�checkanimtext(1,"015") (� �sub%<16� (� �sub%<=9:�cl_anim(15) (�, È™"OS_SpriteOp",&13C,animarea%,"anim",0 (�: �sub%<=9:È™"OS_SpriteOp",&122,detarea%,"lecl",58,52,8 (�/ �boxexp(sub%,9,550,128,-20,-4,80,64,40,32) (� ÈŽ sub% � (�; � 9,15:È™"OS_SpriteOp",&122,detarea%,"st00",402,108,8 )< � 10,14:È™"OS_SpriteOp",&122,detarea%,"st01",442,144,8 )< � 11,13:È™"OS_SpriteOp",&122,detarea%,"st02",442,144,8 )9 � 12:È™"OS_SpriteOp",&122,detarea%,"st03",442,144,8 )" � ),) �moveendloop(1,"015",390,96,792,420) )6� )@sub%+=1 )JW�sub%=17:�makeanim(actmenu%,actanim%,bg%(actanim%)):�animateend:�plotanim(actanim%) )T� )^ )h��movedisp )r�firstmove%� )|) sub%=0:firstmove%=�:elaps%=0:se%()=0 )�� )� �<lasttime%+30-elaps%:� )�� )�elaps%=� )�$�texton%:�checkanimtext(1,"023") )� �sub%<24� )�4 �texton% �:�cl_anim(15):�:�copysp("bg8","anim") )�, È™"OS_SpriteOp",&13C,animarea%,"anim",0 )� �sub%>=5:se%(0)+=1 )� �sub%>=6:se%(1)+=1 )� �sub%>=8:se%(2)+=1 )� �sub%>=9:se%(3)+=1 )� �sub%>=10:se%(4)+=1 * �sub%>=13:se%(5)+=1 * �sub%>=15:se%(6)+=1 * �sub%>=18:se%(7)+=1 *&E �((sub%+1)�4)=3:�makedisp(1,se%()):�:�makedisp((sub%+1)�4,se%()) *0& �moveendloop(1,"023",0,0,810,644) *:� *Dsub%+=1 *NW�sub%=25:�makeanim(actmenu%,actanim%,bg%(actanim%)):�animateend:�plotanim(actanim%) *X� *b *l��movedispexp *v� j%,cb%,lup% *��firstmove%� *�! sub%=0:firstmove%=�:elaps%=0 *�� *� �(sub%=8)�(sub%=15) � *� �<lasttime%+100-elaps%:� *� � *� �<lasttime%+30-elaps%:� *� � *�� *�elaps%=� *�(�texton%:�checkanimtext(2,"007,014") *� �sub%<15� *�4 �texton% �:�cl_anim(15):�:�copysp("bg6","anim") +, È™"OS_SpriteOp",&13C,animarea%,"anim",0 + �sub%=0:cb%=0 + �sub%=1:cb%=1 + �sub%>=2:cb%=2 +* �sub%<=8:lup%=0:�:lup%=1 +4 �makedispexp(cb%,lup%) +>| �(sub%>=2)�(sub%<=6) �:�j%=0�4:È™"OS_SpriteOp",&122,detarea%,"bean"+�(�(3)-1),bean%(j%,sub%-2,0),bean%(j%,sub%-2,1),8:� +H~ �(sub%>=9)�(sub%<=13) �:�j%=5�12:È™"OS_SpriteOp",&122,detarea%,"bean"+�(�(3)-1),bean%(j%,sub%-9,0),bean%(j%,sub%-9,1),8:� +R+ �moveendloop(2,"004,011",0,60,810,440) +\� +fsub%+=1 +pW�sub%=16:�makeanim(actmenu%,actanim%,bg%(actanim%)):�animateend:�plotanim(actanim%) +z� +� +���movedispwind +�� fru%,dan%,dax%,ds%,ds2% +��firstmove%� +�! sub%=0:firstmove%=�:elaps%=0 +�� +� �(sub%=13)�(sub%=31) � +� �<lasttime%+180-elaps%:� +� � +� �<lasttime%+30-elaps%:� +� � +�� +�elaps%=� ,(�texton%:�checkanimtext(2,"012,030") , �sub%<31� ,4 �texton% �:�cl_anim(15):�:�copysp("bg1","anim") ,$, È™"OS_SpriteOp",&13C,animarea%,"anim",0 ,.$ �sub%<=12:fru%=sub%+1:�:fru%=-1 ,8$ �sub%>=14:dan%=sub%-14:�:dan%=0 ,B. �sub%>=21:dax%=20-((sub%-21)*60):�:dax%=0 ,L0 �(sub%>=17)�(sub%<=24):ds%=sub%-17:�:ds%=-1 ,V �sub%>=25:ds2%=-1:�:ds2%=0 ,`+ �makedispwind(fru%,dan%,dax%,ds%,ds2%) ,j_ �sub%<=12:�moveendloop(2,"012,030",54,60,794,564):�:�moveendloop(2,"012,030",0,60,668,508) ,t� ,~sub%+=1 ,�W�sub%=32:�makeanim(actmenu%,actanim%,bg%(actanim%)):�animateend:�plotanim(actanim%) ,�� ,� ,���movedispani ,�� dov%,mou%,mox%,ml%,bur% ,��firstmove%� ,�! sub%=0:firstmove%=�:elaps%=0 ,�� ,�9 �(sub%=13)�(sub%=22)�(sub%=34)�(sub%=44)�(sub%=49) � ,� �<lasttime%+130-elaps%:� ,� � ,� �<lasttime%+30-elaps%:� - � - � -elaps%=� -4�texton%:�checkanimtext(5,"012,021,032,033,048") -( �sub%<49� -24 �texton% �:�cl_anim(15):�:�copysp("bg7","anim") -<, È™"OS_SpriteOp",&13C,animarea%,"anim",0 -F4 �sub%<=11:mox%=776-(sub%*64):mou%=sub%�2:bur%=1 -P) �sub%=12:mox%=72:mou%=2:ml%=0:bur%=1 -Z@ �(sub%>=13)�(sub%<=19):mox%=72:mou%=2:ml%=2-(sub%�2):bur%=1 -d) �sub%=20:mox%=72:mou%=2:ml%=2:bur%=2 -n) �sub%=21:mox%=72:mou%=2:ml%=0:bur%=2 -xE �(sub%>=22)�(sub%<=32):mox%=72-((sub%-21)*64):mou%=sub%�2:bur%=2 -�# �sub%>=33:mou%=-1:dov%=sub%-33 -�* �makedispani(dov%,mou%,mox%,ml%,bur%) -�v �sub%<=33:�moveendloop(5,"012,021,032,033,048",0,0,810,176):�:�moveendloop(5,"012,021,032,033,048",140,4,330,644) -�� -�sub%+=1 -�W�sub%=50:�makeanim(actmenu%,actanim%,bg%(actanim%)):�animateend:�plotanim(actanim%) -�� -� -���movedispwat -��firstmove%� -�! sub%=0:firstmove%=�:elaps%=0 -�� -� �sub%=65 � . �<lasttime%+200-elaps%:� . � . �<lasttime%+40-elaps%:� ." � .,� .6elaps%=� .@$�texton%:�checkanimtext(1,"064") .J �sub%<65� .T, È™"OS_SpriteOp",&13C,animarea%,"anim",0 .^D �23,12,15,0,0,15,15,0,0,15:�18,16,0:�25,4,0;0;:�25,101,810;644; .h) �18,0,15:�25,4,0;0;:�25,101,810;274; .r �sub%>=33:�flip(2,"land") .|F �(sub%<=15)�(sub%>=50):È™"OS_SpriteOp",&122,detarea%,"land",0,0,8 .�R �(sub%>=16)�(sub%<=32):È™"OS_SpriteOp",&122,detarea%,"land",-50*(sub%-15),0,8 .�W �(sub%>=33)�(sub%<=49):È™"OS_SpriteOp",&122,detarea%,"land",800-(50*(sub%-33)),0,8 .� �sub%>=33:�flip(2,"land") .�; �sub%<=15:È™"OS_SpriteOp",&122,detarea%,"palm",40,68,8 .�W �(sub%>=16)�(sub%<=25):È™"OS_SpriteOp",&122,detarea%,"palm",40-(50*(sub%-15)),68,8 .�C �sub%<=4:È™"OS_SpriteOp",&122,detarea%,"coc0",266,coc%(sub%),8 .�P �(sub%>=5)�(sub%<=8):È™"OS_SpriteOp",&122,detarea%,"coc"+�(sub%-4),224,80,8 .�c �(sub%>=9)�(sub%<=15):È™"OS_SpriteOp",&122,detarea%,"coc"+�(5+(sub%�2)),266+(20*(sub%-9)),88,8 .�V �(sub%>=16)�(sub%<=49):È™"OS_SpriteOp",&122,detarea%,"coc"+�(5+(sub%�2)),386,88,8 .�e �(sub%>=50)�(sub%<=60):È™"OS_SpriteOp",&122,detarea%,"coc"+�(5+(sub%�2)),386+(20*(sub%-49)),88,8 .�X �(sub%>=61)�(sub%<=64):È™"OS_SpriteOp",&122,detarea%,"coc7",626+(20*(sub%-61)),88,8 .�3 �sub%<=15:�moveendloop(1,"064",224,80,440,480) .�= �(sub%>=16)�(sub%<=49):�moveendloop(1,"064",0,0,810,644) /3 �sub%>=50:�moveendloop(1,"064",380,88,740,140) /� /sub%+=1 /&W�sub%=66:�makeanim(actmenu%,actanim%,bg%(actanim%)):�animateend:�plotanim(actanim%) /0� /: /D /N>��boxexp(s%,noof%,x%,y%,dx%,dy%,sizx%,sizy%,dsizx%,dsizy%) /XT� s% goes from 0 to noof%:x,y orig leftbot corner:dx,dy how leftbot corner moves /b@� sizx,sizy ec size of orig box:dsizx,dsizy incr in box size /l�s%>noof%:� /v�s%=noof%� /� s%-=1 /� È™"Wimp_SetColour",7 /�l �25,4,x%+(dx%*s%);y%+(dy%*s%);:�25,101,x%+(dx%*s%)+sizx%+(dsizx%*s%)-2;y%+(dy%*s%)+sizy%+(dsizy%*s%)-2; /� È™"Wimp_SetColour",9 /�p �25,4,x%+(dx%*s%)+4;y%+(dy%*s%)+4;:�25,101,x%+(dx%*s%)+sizx%+(dsizx%*s%)-6;y%+(dy%*s%)+sizy%+(dsizy%*s%)-6; /� È™"Wimp_SetColour",7 /�r �25,4,x%+(dx%*s%)+8;y%+(dy%*s%)+8;:�25,101,x%+(dx%*s%)+sizx%+(dsizx%*s%)-10;y%+(dy%*s%)+sizy%+(dsizy%*s%)-10; /� s%+=1 /�� /��s%<noof%� /� È™"Wimp_SetColour",9 /�F �box(x%+(dx%*s%),y%+(dy%*s%),sizx%+(dsizx%*s%),sizy%+(dsizy%*s%)) /�� 0� 0 0��box(x%,y%,sx%,sy%) 0 '�25,4,x%;y%;:�25,101,x%+2;y%+sy%-2; 0*1�25,4,x%;y%+sy%-4;:�25,101,x%+sx%-2;y%+sy%-2; 041�25,4,x%+sx%-4;y%+sy%-2;:�25,101,x%+sx%-2;y%; 0>'�25,4,x%+sx%-2;y%+2;:�25,101,x%;y%; 0H� 0R 0\��plotanim(aa%) 0f'�aa%=-1:!blk%=anmew%:�:!blk%=animw% 0p!È™"Wimp_GetWindowState",,blk% 0z8spx%=blk%!4-blk%!20+16:spy%=(blk%!16-blk%!24)-76-644 0�0blk%!4=0:blk%!8=-720:blk%!12=830:blk%!16=-72 0�(È™ "Wimp_UpdateWindow",,blk% � more% 0�ȕ more% 0�GÈ™ "OS_SpriteOp",&134,animarea%,"anim",spx%,spy%,0,scale%,coltrans% 0�(È™ "Wimp_GetRectangle",,blk% � more% 0�� 0�� 0� 0�#��plotanimmove(le%,lo%,ri%,hi%) 0�.!blk%=animw%:È™"Wimp_GetWindowState",,blk% 0�8spx%=blk%!4-blk%!20+16:spy%=(blk%!16-blk%!24)-76-644 0�L!blk%=animw%:blk%!4=16+le%:blk%!8=lo%-720:blk%!12=16+ri%:blk%!16=hi%-720 0�(È™ "Wimp_UpdateWindow",,blk% � more% 1È• more% 1GÈ™ "OS_SpriteOp",&134,animarea%,"anim",spx%,spy%,0,scale%,coltrans% 1(È™ "Wimp_GetRectangle",,blk% � more% 1$� 1.� 18 1B��copysp(fromsp$,tosp$) 1L�fromsp$="anim" � 1V) fromarea%=animarea%:toarea%=detarea% 1`� 1ja �fromsp$,2)="bg":fromarea%=bgarea%:toarea%=animarea%:�:fromarea%=detarea%:toarea%=animarea% 1t� 1~(È™"OS_SpriteOp",&13C,toarea%,tosp$,0 1�0È™"OS_SpriteOp",&122,fromarea%,fromsp$,0,0,0 1�$È™"OS_SpriteOp",&13C,toarea%,0,1 1�� 1� 1���initanmewlabs(m%) 1�� j% 1�5�m%>0:�hideicn(anmew%,0,�):�:�hideicn(anmew%,0,�) 1�Ȏ m% � 1�* � 0: �j%=5�33:�hideicn(anmew%,j%,�):� 1�A � 1: �j%=5�9:�hideicn(anmew%,j%,�):�selecticn(anmew%,j%,�):� 1�. �j%=10�33:�hideicn(anmew%,j%,�):� 1�) � 2: �j%=5�9:�hideicn(anmew%,j%,�):� 2 F �j%=10�15:�hideicn(anmew%,j%,�):�selecticn(anmew%,j%,�):� 2 . �j%=16�33:�hideicn(anmew%,j%,�):� 2* � 3: �j%=5�15:�hideicn(anmew%,j%,�):� 2F �j%=16�20:�hideicn(anmew%,j%,�):�selecticn(anmew%,j%,�):� 2(. �j%=21�33:�hideicn(anmew%,j%,�):� 22* � 4: �j%=5�20:�hideicn(anmew%,j%,�):� 2<F �j%=21�24:�hideicn(anmew%,j%,�):�selecticn(anmew%,j%,�):� 2F. �j%=25�33:�hideicn(anmew%,j%,�):� 2P* � 5: �j%=5�24:�hideicn(anmew%,j%,�):� 2ZF �j%=25�33:�hideicn(anmew%,j%,�):�selecticn(anmew%,j%,�):� 2d� 2n� 2x 2���setextent(w%,siz%) 2�-!blk%=0:blk%!4=-siz%:blk%!8=842:blk%!12=0 2�ș"Wimp_SetExtent",w%,blk% 2�� 2� 2���resizeanmew 2�1!blk2%=anmew%:È™ "Wimp_GetWindowState",,blk2% 2�-!blk%=anmew%:È™ "Wimp_DeleteWindow",,blk% 2�!((winstarts%!8)+52)=0 2�1È™ "Wimp_CreateWindow",,winstarts%!8 � anmew% 2�� 2� 2���closewind(b%) 3È™ "Wimp_CloseWindow",,b% 3� 3 3"��openwind(b%) 3,È™ "Wimp_OpenWindow",,b% 36� 3@ 3J��click(mx%,my%,but%,w%,i%) 3TÈŽ w% � 3^ � -2: 3h ÈŽ but% � 3rH � 2: �master_menu("Plantwise","Info,Setup...,7Quit,",!eb%,216) 3|% � 4: �startgame:�open_mess1 3� � 3�' � menuw%: �menuwclick(but%,w%,i%) 3�' � anmew%: �anmewclick(but%,w%,i%) 3�, � animw%: �animwclick(mx%,my%,but%,i%) 3�, � findw%: �findwclick(mx%,my%,but%,i%) 3�, � defnw%: �defnwclick(mx%,my%,but%,i%) 3�, � wordw%: �wordwclick(mx%,my%,but%,i%) 3�& � setupw%: �setupwclick(but%,i%) 3�� 3�� 3� 3���menuwclick(b%,w%,i%) 3�� j%,k% 4�b%=2:� 4�i%=-1:� 4!!blk%=demow%:�closewind(blk%) 4&�i%<6:�checkindex(i%):� 40j%=�(i%/3)-1 4:�k%=6�18�3 4D; �k%=3+(3*j%):�selecticn(w%,k%,�):�:�selecticn(w%,k%,�) 4N� 4X�open_animw(j%,-1) 4bJ�j%=1:�open_mess("Only 'leaf' is available in the Structure section.") 4lW�j%=2:�open_mess("Only 'seed dispersal' is available in the Reproduction section.") 4v`�j%=3:�open_mess("None of the What Plants Need section is available in this demonstration.") 4�X�j%=4:�open_mess("None of the Survival section is available in this demonstration.") 4�^�j%=5:�open_mess("None of the Classification section is available in this demonstration.") 4�� 4� 4���checkindex(i%) 4� �i%<3� 4� �toggleicnsel(menuw%,0) 4� �isselected(menuw%,0)� 4� �open_findw:�open_messff 4� � 4�$ !blk%=findw%:�closewinds(blk%) 4� � 4�� 5 �toggleicnsel(menuw%,3) 5 �isselected(menuw%,3)� 5 �open_wordw:�open_messww 5 � 5*A !blk%=defnw%:�closewind(blk%):!blk%=wordw%:�closewind(blk%) 54 � 5>� 5H� 5R 5\��anmewclick(b%,w%,i%) 5f� j%,k% 5p+�IFb%=2:PROCanmew_menu(mx%,my%):ENDPROC 5z!!blk%=demow%:�closewind(blk%) 5��(i%=7)�(i%=12) � 5� �killtext 5� �toggleicnsel(anmew%,i%) 5�6 wlev%=0:�open_animw(actmenu%,wlev%+findaa%(i%-5)) 5�� 5�V �(i%>=5)�(i%<=9):�open_mess("Only 'leaf' is available in the Structure section.") 5�e �(i%>=10)�(i%<=15):�open_mess("Only 'seed dispersal' is available in the Reproduction section.") 5�n �(i%>=16)�(i%<=20):�open_mess("None of the What Plants Need section is available in this demonstration.") 5�f �(i%>=21)�(i%<=24):�open_mess("None of the Survival section is available in this demonstration.") 5�l �(i%>=25)�(i%<=33):�open_mess("None of the Classification section is available in this demonstration.") 5�� 5�� 5� 6��animwclick(mx%,my%,b%,i%) 6� j%,k% 6+�IFb%=2:PROCanimw_menu(mx%,my%):ENDPROC 6$!!blk%=demow%:�closewind(blk%) 6.�toggleicnsel(animw%,i%) 68ÈŽ i% � 6B � 0: �killtext 6Ld �wlev%=0:�open_animw(actmenu%,-1):�:j%=wlev%:wlev%=0:�open_animw(actmenu%,actanim%-j%) 6V" � 1: �isselected(animw%,1)� 6`' texton%=-1:textnewon%=-1 6jF �doingmove%:�makeanim(actmenu%,actanim%,bg%(actanim%)) 6t! �addtext(actanim%) 6~ � 6�J texton%=0:textnewoff%=-1:acttxticn%=0:�removetext(actanim%) 6� � 6�" � 2: �isselected(animw%,2)� 6�3 doingmove%=-1:firstmove%=-1:�animate 6� � 6�E �animateend:�makeanim(actmenu%,actanim%,bg%(actanim%)) 6�@ �texton%:�addtext(actanim%):�:�plotanim(actanim%) 6� � 6� � 3,4: j%=wlev%:�killtext 6�V �isselected(animw%,i%):wlev%=i%-2:�selecticn(animw%,7-i%,�):�:wlev%=0 6�7 �open_animw(actmenu%,actanim%-j%+wlev%) 6�# � 5,6,7,8: j%=wlev%:�killtext 7 - �isselected(animw%,i%) � 7 ' wlev%=i%-4:�k%=5�8 75 �k%<>i%:�selecticn(animw%,k%,�) 7 � 7( � 72 wlev%=0 7< � 7F; �open_animw(actmenu%,actanim%-j%+wlev%) 7P� � 12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56: 7Z: �acttxticn%>11 �selecticn(animw%,acttxticn%,�) 7d7 �acttxticn%=i% acttxticn%=0:�:acttxticn%=i% 7n �addwords(actanim%) 7x� 7�� 7� 7���killtext 7�1�selecticn(animw%,1,�):texton%=0:textnewon%=0 7�P!blk2%=0:blk2%!4=-732:blk2%!8=842:blk2%!12=0:È™"Wimp_SetExtent",animw%,blk2% 7�� 7� 7���findwclick(mx%,my%,b%,i%) 7�� j%,am%,aa% 7��b%=2:� 7�M�(i%<=34)�((i%>=40)�(i%<=43))�((i%>=47)�(i%<=59))�(i%>=65):�open_messff:� 7�!!blk%=demow%:�closewind(blk%) 7�/�(i%>=35)�(i%<=39):am%=i%-34:aa%=-1:wlev%=0 82�(i%>=44)�(i%<=46):am%=1:aa%=i%-40:wlev%=i%-44 82�(i%>=60)�(i%<=64):am%=2:aa%=i%-40:wlev%=i%-60 8B�(actmenu%<>am%)�(actanim%<>aa%):�selecticn(findw%,findicn%,�) 8"findicn%=0 8,A�(am%>0)�(aa%=-1):�selecticn(findw%,34+am%,�):findicn%=34+am% 867�aa%>=0:�selecticn(findw%,40+aa%,�):findicn%=40+aa% 8@8!blk%=findw%:�closewind(blk%):�selecticn(menuw%,0,�) 8J"�killtext:�open_menuw(am%,aa%) 8T� 8^ 8h��wordwclick(mx%,my%,b%,i%) 8r� j% 8|�b%=2:� 8�!!blk%=demow%:�closewind(blk%) 8�W�glossicn%<>i%:�toggleicnsel(wordw%,i%):�selecticn(wordw%,glossicn%,�):glossicn%=i% 8��open_defnw(i%) 8�� 8� 8���setupwclick(b%,i%) 8�� j%,k% 8�Ȏ i% � 8�5 � 2,3:�isselected(setupw%,2):simp%=0:�:simp%=1 8� �startgame 8�� 8�� 8� 9��initanimw(aa%) 9� j%,k% 9�selecticn(animw%,0,�) 9&<�k%=2�56:�hideicn(animw%,k%,�):�selecticn(animw%,k%,�):� 90�j%=0�6 9:H �wdefn%(aa%,j%)>0:�hideicn(animw%,j%+2,�):�:�hideicn(animw%,j%+2,�) 9DL �wdefn%(aa%,j%)=2:�selecticn(animw%,j%+2,�):�:�selecticn(animw%,j%+2,�) 9N� 9XÈŽ aa% � 9b3 � 0,1 : �puticnstring(animw%,3,"animal cells") 9l3 � 2,3 : �puticnstring(animw%,3,"flower parts") 9v6 � 10,11 : �puticnstring(animw%,3,"root close-up") 9�_ � 4,5,6 : �puticnstring(animw%,3,"photosynthesis"):�puticnstring(animw%,4,"leaf close-up") 9�\ � 7,8,9 : �puticnstring(animw%,3,"non-woody stem"):�puticnstring(animw%,4,"woody stem") 9�9 � 12,13,14,15,16 : �puticnstring(animw%,5,"insects") 9�c � 17,18,19 : �puticnstring(animw%,3,"fruits & seeds"):�puticnstring(animw%,4,"fruit examples") 9�9 � 20,21,22,23,24 : �puticnstring(animw%,5,"explode") 9�] � 25,26,27 : �puticnstring(animw%,3,"seed structure"):�puticnstring(animw%,4,"dormancy") 9�1 � 36,37 : �puticnstring(animw%,3,"extremes") 9�� 9�Rdoingmove%=0:firstmove%=0:acttxticn%=0:doingmove%=0:firstmove%=-1:textnewon%=0 9�� 9� 9���event 9�"È™ "Wimp_Poll",0,blk% � e%,eb% :ÈŽ e% � : � 0: �doingmove%:�animate :(� IFdoingcloser% PROCcloser : .� IFdoingpinpart% PROCmovepinpart :*S� sizz1%=(!detarea%)-(detarea%!12):IFsizz1%<minsizz1%:minsizz1%=sizz1% :4C� sizz2%=HIMEM-END:IFsizz2%<minsizz2%:minsizz2%=sizz2% :>C� sizz3%=END-LOMEM:IFsizz3%<minsizz3%:minsizz3%=sizz3% :H � 1: �redraw(!eb%) :R � 2: �openwind(blk%) :\ � 3: �closewinds(blk%) :f2 � 6: �click(eb%!0,eb%!4,eb%!8,eb%!12,eb%!16) :p � 9: �menuselect :z � 17,18: �receive :�� :�� :� :� ��receive :�Ȏ eb%!16 � :� � 0: quit% = � :�B � 9: �modechange:È™"Wimp_ForceRedraw",-1,0,0,xmaxec%,ymaxec% :� � &400C1: �modechange :�� :�� :� :���redraw(w%) :�Ȏ w% � ;#� WHEN systw%: PROCredrawsystw ;#� WHEN bodyw%: PROCredrawbodyw ;# � animw%,anmew%: �redrawanimw ;$)� WHEN pinoutlw%: PROCredrawpinoutlw ;. : �redrawother ;8� ;B� ;L ;V��redrawother ;`(È™ "Wimp_RedrawWindow",,blk% � more% ;jÈ• more% ;t)È™ "Wimp_GetRectangle",,blk% � more%: ;~� ;�� ;� ;���redrawanimw ;�(È™ "Wimp_RedrawWindow",,blk% � more% ;�8spx%=blk%!4-blk%!20+16:spy%=(blk%!16-blk%!24)-76-644 ;�ȕ more% ;�GÈ™ "OS_SpriteOp",&134,animarea%,"anim",spx%,spy%,0,scale%,coltrans% ;�)È™ "Wimp_GetRectangle",,blk% � more%: ;�� ;�� ;� ;���addanmewlines(am%) <