Home » Archimedes archive » Archimedes World » AW-1993-12.adf » AWDec93 » !AWDec93/Goodies/10out10/!10_10Alge/Menu
!AWDec93/Goodies/10out10/!10_10Alge/Menu
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
| Tape/disk: | Home » Archimedes archive » Archimedes World » AW-1993-12.adf » AWDec93 |
| Filename: | !AWDec93/Goodies/10out10/!10_10Alge/Menu |
| Read OK: | ✔ |
| File size: | 6C41 bytes |
| Load address: | 0000 |
| Exec address: | 0000 |
File contents
10REM >adfs::0.$.!10/10Alge.Menu
20ONERROR:PROCerror
30IFMODE<>12:MODE12:OFF
40PROCinitial
50PROCmenu
60REPEAT
70PROCmouseilluminate
80PROCselect
90PROCaccess
100PROCconfigure
110UNTIL FALSE
120DEFPROCinitial
130SYS"ABC_VideoAddress"
140SYS"Hourglass_On"
150MOUSE RECTANGLE 0,0,1280,1024
160DIM att%(6,10),new%(6,10),info$(6,10),filename$(64),status%(2),six$(6)
170DIM buf%(6,10),directory%(64),files%(64),cat% &400
180h%=OPENIN("ram:FactFile")
190FORJ%=1TO6
200FORK%=1TO10
210INPUT#h%,fact$
220info$(J%,K%)=fact$
230NEXT
240NEXT
250CLOSE#h%
260RESTORE 12340
270FORJ%=1TO6
280FORK%=1TO6
290READ X%
300buf%(J%,X%)=K%
310NEXT
320NEXT
330*FX212 128 0
340@% =0
350box%=0
360g% =16
370pre%=-1
380sun%=0
390wit%=20
400f$ ="<Disc2$Dir>.SixGames."
410b% =FNinitialsprites("Numbers|Buttons",0)
420z% =FNinitialcompressed("IntrosSpr")
430PROCloaddetails
440SYS"Hourglass_Smash"
450PROCpoint("Ten",1)
460VOICES 4
470VOICE 1,"StringLib-Pluck"
480PROCflush
490ENDPROC
500DEFPROCmouse1
510MOUSE COLOUR 1,255,255,0
520MOUSE COLOUR 2,255,0,0
530MOUSE COLOUR 3,192,192,192
540MOUSE ON 1
550ENDPROC
560DEFFNarea(x1%,y1%,x2%,y2%)
570IFmox%<x1% OR mox%>x2%:=FALSE
580IFmoy%<y1% OR moy%>y2%:=FALSE
590=TRUE
600DEFPROCmouseilluminate
610MOUSE mox%,moy%,but%
620box%=(moy%-100)>>6
630IFbox%<0:box%=0
640IFbox%>11:box%=11
650IFbox%<>sun%:WAIT:PROCsquare(sun%,11):PROCsquare(box%,15):sun%=box%
660IFNOTFNarea(704,104,864,868) THEN
670PROCsquare(box%,11)
680IFbox%<5 THEN
690box%=11:sun%=10
700ELSE
710box%=0:sun%=1
720ENDIF
730ENDIF
740IFbut%=0 OR NOTFNarea(704,104,864,868):ENDPROC
750VDU 7
760CASE box% OF
770WHEN 0 :PROCdesktop
780WHEN 1 :PROCprintcertificate
790WHEN 2 :PROCdelete
800WHEN 3 :PROCcreate
810WHEN 4 :PROCload
820WHEN 5 :PROCviewachieve
830WHEN 6 :PROCrun("RibTickler")
840WHEN 7 :PROCrun("TurboRaft")
850WHEN 8 :PROCrun("HookIt")
860WHEN 9 :PROCrun("ChainUp")
870WHEN 10:PROCrun("Processor")
880WHEN 11:PROCrun("Graphoid")
890ENDCASE
900IFsun%<11 sun%=11 ELSEsun%=0
910REPEAT
920MOUSE mox%,moy%,but%
930UNTIL but%=0
940PROCmenu
950ENDPROC
960DEFPROCrun(game$)
970MOUSE OFF
980SYS"Hourglass_On"
990SYS"ABC_Blank",15
1000SYS"ABC_Colour",15
1010h%=OPENOUT(f$+"Misc.Signal")
1020PRINT#h%,""
1030CLOSE#h%
1040CHAIN f$+game$
1050ENDPROC
1060DEFPROCsquare(wch%,col%)
1070GCOL 0,col%
1080RECTANGLEFILL 706,wch%*64+100,156,58
1090ENDPROC
1100DEFPROCmenu
1110MOUSE OFF
1120MOUSE TO 640,512
1130SYS"ABC_Blank",15
1140SYS"ABC_Colour",15
1150PROCcard("ALGEBRA MENU",24,6,2,12)
1160PROCfillmenu(13,10)
1170PROCcurrent
1180PROCrectangles
1190PROCcontents
1200SYS"ABC_Palette"
1210MOUSE RECTANGLE 0,0,1280,1024
1220MOUSE TO 640,512
1230PROCmouse1
1240ENDPROC
1250DEFPROCfillmenu(tax%,tay%)
1260VDU 5
1270GCOL 0,0
1280RESTORE 1430
1290FORJ%=0TO5
1300READ s$
1310MOVE tax%*32-g%,1024-(tay%*g%+J%*64+20)
1320PRINTs$
1330NEXT
1340GCOL 0,14
1350FORJ%=6TO11
1360READ s$
1370MOVE tax%*32-g%,1024-(tay%*g%+J%*64+20)
1380PRINTs$
1390NEXT
1400VDU 4
1410OFF
1420ENDPROC
1430DATA Graphoid,Processor,Chain Up,Hook It!,Turbo Raft,Rib Tickler
1440DATA Player information,Change player,New player,Remove player
1450DATA Print certificate,Quit
1460DEFPROCachievecard
1470MOUSE OFF
1480SYS"ABC_Blank",15
1490SYS"ABC_Colour",15
1500a$=FNstrip(attend$)
1510IFa$="":a$="Empty"
1520IFnig% THEN
1530PROCcard(a$+" : Achievement Record 10/10 Mathematics (Algebra - AT3)",0,12,8,11)
1540ELSE
1550PROCcard(a$+" : Achievement Record 10/10 Mathematics ",0,12,8,11)
1560ENDIF
1570PROCfillachieve(0,6)
1580m$="RETURN TO MENU"
1590PROCmess(m$,11)
1600MOUSE TO 640,512
1610SYS"ABC_Palette"
1620PROCmouse1
1630p$="X"
1640sta%=0
1650oxx%=0
1660oyy%=0
1670*FX21 0
1680ENDPROC
1690DEFPROCviewachieve
1700PROCachievecard
1710REPEAT
1720MOUSE mox%,moy%,but%
1730IFmoy%<72 AND sta%=0:sta%=1:PROCmess(m$,10)
1740IFmoy%>72 AND sta%=1:sta%=0:PROCmess(m$,11)
1750cxx%=(mox%-320)/160+1
1760IFmoy%>836 cyy%=0 ELSEcyy%=(ABS(moy%-836)DIV64)+1
1770IFcyy%>10:cyy%=0
1780IFcxx%<0 OR cxx%>6 cxx%=0
1790IFcxx%<>oxx% OR cyy%<>oyy% THEN
1800oxx%=cxx%
1810oyy%=cyy%
1820a$=info$(cxx%,cyy%)
1830IFa$>"" THEN
1840IFnig% PROCinformation("AT3 Level "+a$) ELSEPROCinformation(MID$(a$,INSTR(a$,")")+2))
1850ELSE
1860PROCinformation("")
1870ENDIF
1880ENDIF
1890PROCachievediscdump
1900PROCachieveprintdump
1910PROCallachieveprintdump
1920UNTIL FNleave
1930ENDPROC
1940DEFPROCinformation(t$)
1950IFp$=t$:ENDPROC
1960p$=t$
1970GCOL 0,11
1980VDU 5
1990WAIT
2000RECTANGLEFILL 0,96,1278,64
2010GCOL 0,0
2020RECTANGLE 0,96,1278,64
2030MOVE 640-LEN(t$)*8,140
2040PRINTt$
2050VDU 4
2060OFF
2070ENDPROC
2080DEFPROCcard(t$,tax%,tay%,sdx%,sdy%)
2090VDU 5
2100GCOL 0,8
2110RECTANGLEFILL tax%*g%,tay%*g%,sdx%*160+160,sdy%*64
2120GCOL 0,11
2130RECTANGLEFILL tax%*g%+320,tay%*g%,sdx%*160-162,sdy%*64
2140GCOL 0,0
2150IFsdx%*160+160>1279 sxe%=1278 ELSEsxe%=sdx%*160+160
2160RECTANGLE tax%*g%,tay%*g%,sxe%,sdy%*64
2170GCOL 0,13
2180MOVE tax%*g%+64,tay%*g%+sdy%*64+64
2190PLOT 0,LEN(t$)*g%,0
2200PLOT 85,tax%*g%,tay%*g%+sdy%*64
2210PLOT 81,128+LEN(t$)*g%,0
2220GCOL 0,0
2230MOVE tax%*g%,tay%*g%+sdy%*64
2240PLOT 1,64,64
2250PLOT 1,LEN(t$)*g%,0
2260PLOT 1,64,-64
2270MOVE tax%*g%+64,tay%*g%+sdy%*64+44
2280PRINTt$
2290FORJ%=1TO sdx%
2300MOVE tax%*g%+J%*160+160,tay%*g%
2310PLOT 1,0,sdy%*64
2320NEXT
2330FORJ%=1TO sdy%
2340MOVE tax%*g%,tay%*g%+J%*64
2350PLOT 1,sdx%*160+160,0
2360NEXT
2370VDU 4
2380OFF
2390ENDPROC
2400DEFPROCfillachieve(tax%,tay%)
2410VDU 5
2420RESTORE 2940
2430READ t$
2440MOVE tax%+32,1024-(tay%*g%+52)
2450PRINTt$
2460FORK%=1TO6
2470READ t$
2480MOVE (tax%+32+K%*160+208)-LEN(t$)*8,1024-(tay%*g%+52)
2490PRINTt$
2500NEXT
2510FORJ%=1TO10
2520GCOL 0,0
2530READ t$
2540MOVE tax%+32,1024-(tay%*g%+J%*64+52)
2550PRINTt$
2560FORK%=1TO6
2570fax%=tax%+32+K%*160
2580fay%=tay%*g%+J%*64
2590IFfax%+156>=1100 wid%=154 ELSEwid%=156
2600CASE att%(K%,J%) OF
2610WHEN 0
2620IFinfo$(K%,J%)="" GCOL 0,3 ELSEGCOL 0,7
2630IFstatus%(1)+status%(2)=36:GCOL 0,8
2640IFstatus%(1)=36:GCOL 0,10
2650IFstatus%(2)=36:GCOL 0,15
2660WHEN 1:GCOL 0,11
2670WHEN 2:GCOL 0,14
2680WHEN 3,4,5,6,7,8,9,10,11:GCOL 0,10
2690OTHERWISE:GCOL 0,15
2700ENDCASE
2710RECTANGLEFILL fax%+130,1024-(fay%+92),wid%,56
2720IFinfo$(K%,J%)>"" THEN
2730IFnig% THEN
2740GCOL 0,7
2750MOVE fax%+172,1020-(fay%+52)
2760PRINTLEFT$(info$(K%,J%),INSTR(info$(K%,J%),"(")-2)
2770GCOL 0,0
2780MOVE fax%+174,1024-(fay%+52)
2790PRINTLEFT$(info$(K%,J%),INSTR(info$(K%,J%),"(")-2)
2800ELSE
2810GCOL 0,7
2820MOVE fax%+202,1020-(fay%+52)
2830PRINTbuf%(K%,J%)
2840GCOL 0,0
2850MOVE fax%+204,1024-(fay%+52)
2860PRINTbuf%(K%,J%)
2870ENDIF
2880ENDIF
2890NEXT
2900NEXT
2910VDU 4
2920OFF
2930ENDPROC
2940DATA SUBJECT,Graphoid,Processor,Chain Up,Hook It!,Turbo Raft,Tickler
2950DATA Patterns and Seq,Symbols,Formulae and Equ,Co-ordinates,Graphs
2960DATA Operations,Mappings and Fns,Inequalities,Interpretation,Words
2970DEFPROCcent(t$,tay%)
2980PRINTTAB(41-LEN(t$)DIV2,tay%)t$;
2990ENDPROC
3000DEFPROCmess(t$,col%)
3010GCOL 0,col%
3020VDU 5
3030WAIT
3040RECTANGLEFILL 0,0,1278,64
3050GCOL 0,0
3060RECTANGLE 0,0,1278,64
3070MOVE 640-LEN(t$)*8,44
3080PRINTt$
3090VDU 4
3100OFF
3110ENDPROC
3120DEFPROCerror
3130LOCAL ERROR
3140VDU 3,26,7
3150*CLOSE
3160SYS"Hourglass_Smash"
3170MOUSE OFF
3180SYS"ABC_Colour",15
3190IFERR>&107FF AND ERR<&10900 THEN
3200PROCmess("FILING SYSTEM REPORTS ERROR : "+REPORT$,11)
3210PROCdelay(150)
3220VDU 7
3230PROCmess("PLEASE CHECK DISC IN DRIVE AND NOT WRITE PROTECTED THEN PRESS RETURN",11)
3240REPEAT
3250UNTIL INKEY-74
3260ENDIF
3270ON ERROR LOCAL GOTO 3140
3280h%=OPENOUT(f$+"Misc.Signal")
3290PRINT#h%,""
3300CLOSE#h%
3310*DIR <Disc2$Dir>.SixGames
3320RESTORE ERROR
3330SYS"ABC_Colour",15
3340RUN
3350ENDPROC
3360DEFPROCprintcertificate
3370SYS"ABC_Colour",15
3380MOUSE OFF
3390ach%=TRUE
3400FORJ%=1TO10
3410FORK%=1TO6
3420IFatt%(K%,J%)>2:ach%=FALSE
3430NEXT
3440NEXT
3450IFach% THEN
3460PROCmess("Nothing achieved at present - return to menu",11)
3470REPEAT
3480MOUSE mox%,moy%,but%
3490UNTIL but%=0
3500REPEAT
3510UNTIL FNleave
3520ELSE
3530PROCbusy
3540REPEAT
3550UNTIL FNleave
3560ENDIF
3570ENDPROC
3580DEFPROCbusy
3590PROCmess("Screen/Printer/Disc (S/P/D)",11)
3600*FX21 0
3610REPEAT
3620k%=INKEY(0)
3630IFk%>=ASC("a"):k%-=32
3640UNTIL k%=ASC("S") OR k%=ASC("P") OR k%=ASC("D") OR INKEY-113
3650IFINKEY-113:PROCflush:ENDPROC
3660VDU 7
3670IFk%<>ASC("P") THEN
3680PROCmess("Text/Graphics (T/G)",11)
3690REPEAT
3700t%=INKEY(0)
3710IFt%>=ASC("a"):t%-=32
3720UNTIL t%=ASC("T") OR t%=ASC("G") OR INKEY-113
3730ELSE
3740t%=ASC("T")
3750ENDIF
3760IFINKEY-113:PROCflush:ENDPROC
3770IFt%=ASC("T") PROCachieve_text ELSEPROCachieve_graphics
3780IFk%=ASC("D"):PROCdiscdump
3790IFk%=ASC("P"):PROCprinter_dump
3800ENDPROC
3810DEFPROCachieve_graphics
3820SYS"ABC_Blank",3
3830SYS"ABC_Colour",3
3840GCOL 0,12
3850RECTANGLEFILL 184,64,974,932
3860GCOL 0,7
3870RECTANGLE 184,64,976,932
3880COLOUR 0
3890COLOUR 140
3900SYS"ABC_Sprite",b%,"wax",444,70
3910SYS"ABC_Sprite",b%,"small",120,64
3920SYS"ABC_Sprite",b%,"small",420,214
3930PROCwords(TRUE)
3940SYS"ABC_Palette"
3950ENDPROC
3960DEFPROCachieve_text
3970SYS"ABC_Blank",12
3980SYS"ABC_Colour",12
3990COLOUR 7
4000COLOUR 140
4010PROCcent(STRING$(67,"*"),0)
4020FORJ%=1TO29
4030PRINTTAB(8,J%)"*"TAB(74,J%)"*"
4040NEXT
4050PROCcent(STRING$(67,"*"),30)
4060PROCwords(FALSE)
4070SYS"ABC_Palette"
4080ENDPROC
4090DEFPROCwords(fan%)
4100COLOUR 7
4110IFfan% THEN
4120SYS"ABC_Sprite",b%,"certify",118,248
4130COLOUR 137
4140a$=FNstrip(attend$)
4150PRINTTAB(42-LEN(attend$)DIV2,4)a$
4160ELSE
4170PROCcent("THIS IS TO CERTIFY THAT ",2)
4180COLOUR 140
4190a$=FNstrip(attend$)
4200PROCcent(a$,4)
4210ENDIF
4220COLOUR 140
4230PRINTTAB(18,7)"has played the"
4240PRINTTAB(18,8)"Ten out of Ten"
4250PRINTTAB(18,9)"Maths (Algebra)"
4260PRINTTAB(18,10)"games and has"
4270IFnig% THEN
4280PRINTTAB(18,11)"achieved 100% at the following AT3 Levels:"
4290ELSE
4300IFver% a$="grades" ELSEa$="levels"
4310PRINTTAB(18,11)"achieved 100% at the following "+a$
4320ENDIF
4330PROCcent(FNdate,25)
4340PROCcent("Certificate from",27)
4350PROCcent("10/10 Educational Systems",28)
4360tay%=0
4370FORJ%=1TO10
4380K%=1
4390fnd%=FALSE
4400WHILE K%<7 AND NOTfnd%
4410IFatt%(K%,J%)>2 AND LEFT$(info$(K%,J%),INSTR(info$(K%,J%),")")-2)<>"":tay%+=1:fnd%=TRUE
4420K%+=1
4430ENDWHILE
4440NEXT
4450RESTORE 2950
4460tay%=18-tay%DIV2
4470FORJ%=1TO10
4480READ b$
4490six$()=""
4500FORK%=1TO6
4510IFnig% y$=LEFT$(info$(K%,J%),INSTR(info$(K%,J%),"(")-2) ELSEy$=STR$(buf%(K%,J%))
4520IFatt%(K%,J%)>2 AND y$>"0":six$(K%)=y$
4530NEXT
4540REPEAT
4550srt%=TRUE
4560FORK%=1TO5
4570IFsix$(K%)<six$(K%+1):SWAP six$(K%),six$(K%+1):srt%=FALSE
4580NEXT
4590UNTIL srt%
4600a$=""
4610FORK%=1TO6
4620IFsix$(K%)<>"":a$+=six$(K%)+","
4630NEXT
4640IFRIGHT$(a$)=",":a$=LEFT$(a$)
4650IFa$<>"" THEN
4660PRINTTAB(18,tay%)b$TAB(36,tay%)"..."TAB(40,tay%)a$
4670tay%+=1
4680ENDIF
4690NEXT
4700ENDPROC
4710DEFPROCdiscdump
4720VDU 7
4730MOUSE OFF
4740LOCAL ERROR
4750SYS"ABC_Transfer",0,16,640,17
4760PROCinput(32,"adfs::0.$."+attend$,FALSE,TRUE)
4770SYS"ABC_Restore"
4780IFesc% OR i$="":ENDPROC
4790SYS"Hourglass_On"
4800OSCLI"SCREENSAVE "+i$
4810SYS"Hourglass_Smash"
4820ON ERROR LOCAL:VDU 7:PROCmess("PLEASE INSERT DISC INTO DRIVE AND PRESS RETURN",8):REPEAT:UNTIL INKEY-74
4830*DIR <Disc2$Dir>.SixGames
4840SYS"ABC_Restore"
4850MOUSE TO 640,512
4860PROCmouse1
4870ENDPROC
4880DEFPROCprinter_dump
4890VDU 2
4900FORJ%=0TO30
4910FORK%=0TO79
4920VDU 31,K%,J%
4930SYS"OS_Byte",135 TO ,res%
4940VDU res%
4950NEXT
4960IFJ%<30:VDU 13,10
4970NEXT
4980VDU 3
4990ENDPROC
5000DEFPROCload
5010PROClegal
5020IFbad% OR esc%:ENDPROC
5030PROCgridcheck
5040IFa$="" OR k%:ENDPROC
5050VDU 7
5060status%()=0
5070h%=OPENIN("<Disc2$Dir>.SixGames.Achieve.Achieve"+STR$(cla%)+"."+a$)
5080SYS"Hourglass_On"
5090FORJ%=1TO10
5100FORK%=1TO6
5110INPUT#h%,byt%
5120att%(K%,J%)=byt%
5130IFbyt%>2 AND byt%<12:status%(1)+=1
5140IFbyt%>11:status%(2)+=1
5150NEXT
5160NEXT
5170CLOSE#h%
5180attend$=a$
5190h%=OPENOUT(f$+"Name")
5200PRINT#h%,attend$
5210CLOSE#h%
5220SYS"Hourglass_Smash"
5230ENDPROC
5240DEFPROCsmall(wch%,col%)
5250GCOL 0,col%
5260RECTANGLEFILL (wch%>>4)*256+354,964-((wch%AND&F)<<6),26,32
5270ENDPROC
5280DEFPROCcreate
5290PROClegal
5300IFbad% OR esc%:ENDPROC
5310MOUSE OFF
5320SYS"ABC_Colour",15
5330PROCmess("New player name",11)
5340PROCdelay(50)
5350PROCinput(8,"",TRUE,FALSE)
5360WHILE INSTR(i$," ")>0
5370MID$(i$,INSTR(i$," "))="_"
5380ENDWHILE
5390IFesc%:ENDPROC
5400OSCLI"DIR <Disc2$Dir>.SixGames.Achieve.Achieve"+STR$(cla%)
5410SYS"OS_GBPB",8,,cat%,&40,0 TO ,,,d%
5420*DIR <Disc2$Dir>.SixGames
5430a%=0
5440c%=0
5450d%=64-d%
5460st%=cat%
5470dup%=FALSE
5480WHILE c%<d% AND NOTdup%
5490t%=st%?((?st%)+1)
5500st%?((?st%)+1)=&D
5510a$=$(st%+1)
5520st%+=1+(?st%)
5530?st%=t%
5540IFa$=i$:dup%=TRUE
5550a%+=1
5560c%+=1
5570ENDWHILE
5580k%=TRUE
5590IFdup% THEN
5600GCOL 0,10
5610VDU 5
5620RECTANGLEFILL 0,0,1278,64
5630GCOL 0,0
5640RECTANGLE 0,0,1278,64
5650t$="Player "+i$+" already exists - Erase?"
5660MOVE 860-LEN(t$)*g%,44
5670PRINTt$
5680VDU 4
5690OFF
5700k%=FNyesno(44)
5710ENDIF
5720IFNOTk%:PROCmouse1:ENDPROC
5730att%()=0
5740status%()=0
5750h%=OPENOUT("<Disc2$Dir>.SixGames.Achieve.Achieve"+STR$(cla%)+"."+i$)
5760FORJ%=1TO10
5770FORK%=1TO6
5780PRINT#h%,att%(K%,J%)
5790NEXT
5800NEXT
5810CLOSE#h%
5820attend$=i$
5830h%=OPENOUT(f$+"Name")
5840PRINT#h%,attend$
5850CLOSE#h%
5860SYS"ABC_Colour",15
5870PROCmouse1
5880ENDPROC
5890DEFPROCdelete
5900PROClegal
5910IFbad% OR esc%:ENDPROC
5920PROCgridcheck
5930IFa$="" OR k%:ENDPROC
5940SYS"ABC_Colour",15
5950GCOL 0,10
5960VDU 5
5970RECTANGLEFILL 0,0,1278,64
5980GCOL 0,0
5990RECTANGLE 0,0,1278,64
6000t$="Player "+a$+" - Erase?"
6010MOVE 860-LEN(t$)*g%,44
6020PRINTt$
6030VDU 4
6040OFF
6050k%=FNyesno(44)
6060IFNOTk%:PROCmouse1:ENDPROC
6070OSCLI"DELETE <Disc2$Dir>.SixGames.Achieve.Achieve"+STR$(cla%)+"."+a$
6080IFa$=attend$:PROCsetempty
6090ENDPROC
6100DEFPROCdelay(del%)
6110REPEAT
6120WAIT
6130del%-=1
6140UNTIL del%<0
6150ENDPROC
6160DEFPROCloadcurrent
6170h%=OPENIN(f$+"Name")
6180INPUT#h%,attend$
6190CLOSE#h%
6200IFattend$="" THEN
6210att%()=0
6220ELSE
6230h%=OPENIN("<Disc2$Dir>.SixGames.Achieve.Achieve"+STR$(cla%)+"."+attend$)
6240FORJ%=1TO10
6250FORK%=1TO6
6260INPUT#h%,att%(K%,J%)
6270NEXT
6280NEXT
6290CLOSE#h%
6300ENDIF
6310ENDPROC
6320DEFFNinitialsprites(s$,l%)
6330l%+=FNspritefilelength(s$)
6340DIM b% l%
6350!b%=l%
6360SYS"OS_SpriteOp",265,b%
6370PROCloadsprites(s$)
6380=b%
6390DEFFNspritefilelength(s$)
6400flo%=0
6410s$+="|"
6420WHILE s$>""
6430h%=OPENIN(f$+FNstringextract(s$))
6440flo%+=EXT#h%
6450CLOSE#h%
6460ENDWHILE
6470=flo%+64
6480DEFFNstringextract(RETURN s$)
6490w$=LEFT$(s$,(INSTR(s$,"|"))-1)
6500s$=MID$(s$,(INSTR(s$,"|"))+1)
6510=w$
6520DEFPROCloadsprites(s$)
6530s$+="|"
6540typ%=266
6550WHILE s$>""
6560SYS"OS_SpriteOp",typ%,b%,f$+FNstringextract(s$)
6570typ%-=(typ%=266)
6580ENDWHILE
6590ENDPROC
6600DEFPROCloaddetails
6610status%()=0
6620h%=OPENIN(f$+"Misc.Grab3")
6630INPUT#h%,cod%
6640CLOSE#h%
6650h%=OPENIN(f$+"Configure")
6660INPUT#h%,rat%,nig%,sds%,ver%,grd%,cla%,typ$,hed%,fut%,pap%,pix%
6670CLOSE#h%
6680IFsds% OSCLI"SPEAKER ON" ELSEOSCLI"SPEAKER OFF"
6690h%=OPENIN(f$+"Name")
6700INPUT#h%,attend$
6710CLOSE#h%
6720IFattend$="" THEN
6730att%()=0
6740ELSE
6750h%=OPENIN("<Disc2$Dir>.SixGames.Achieve.Achieve"+STR$(cla%)+"."+attend$)
6760FORJ%=1TO10
6770FORK%=1TO6
6780INPUT#h%,byt%
6790att%(K%,J%)=byt%
6800IFbyt%>2 AND byt%<12:status%(1)+=1
6810IFbyt%>11:status%(2)+=1
6820NEXT
6830NEXT
6840CLOSE#h%
6850ENDIF
6860ENDPROC
6870DEFFNyesno(tay%)
6880REPEAT
6890MOUSE mox%,moy%,but%
6900UNTIL but%=0
6910MOUSE RECTANGLE 959,12,240,46
6920PROCmouse1
6930MOUSE TO 1160,32
6940VDU 5
6950GCOL 0,0
6960MOVE 896,tay%
6970PRINT"Yes No"
6980REPEAT
6990MOUSE mox%,moy%,but%
7000IFmox%<1072 THEN
7010GCOL 0,11
7020RECTANGLEFILL 960,tay%-32,80,40
7030GCOL 0,7
7040RECTANGLEFILL 1120,tay%-32,80,40
7050ELSE
7060GCOL 0,7
7070RECTANGLEFILL 960,tay%-32,80,40
7080GCOL 0,11
7090RECTANGLEFILL 1120,tay%-32,80,40
7100ENDIF
7110UNTIL but%>0 AND POINT(mox%,moy%)=11
7120VDU 4
7130OFF
7140IFmox%<1072 =TRUE ELSE=FALSE
7150DEFPROCdisplaydirectory
7160SYS"ABC_Blank",15
7170SYS"ABC_Colour",15
7180OSCLI"DIR <Disc2$Dir>.SixGames.Achieve.Achieve"+STR$(cla%)
7190SYS"OS_GBPB",8,,cat%,&40,0 TO ,,,d%
7200*DIR <Disc2$Dir>.SixGames
7210VDU 5
7220FORa%=0TO63
7230x%=(a%>>4)*256+128
7240y%=(a%AND&F)<<6
7250GCOL 0,8
7260RECTANGLEFILL x%,y%,224,40
7270GCOL 0,11
7280RECTANGLEFILL x%+224,y%,30,40
7290GCOL 0,0
7300RECTANGLE x%+224,y%,30,40
7310NEXT
7320a%=0
7330c%=0
7340d%=64-d%
7350st%=cat%
7360filename$()=""
7370GCOL 0,0
7380WHILE c%<d%
7390t%=st%?((?st%)+1)
7400st%?((?st%)+1)=&D
7410a$=$(st%+1)
7420st%+=1+(?st%)
7430?st%=t%
7440MOVE (a%>>4)*256+144,992-((a%AND&F)<<6)
7450filename$(a%)=a$
7460a$=FNstrip(a$)
7470PRINT a$
7480a%+=1
7490c%+=1
7500ENDWHILE
7510VDU 4
7520OFF
7530SYS"ABC_Palette"
7540ENDPROC
7550DEFPROCgridcheck
7560PROCdisplaydirectory
7570lst%=0
7580REPEAT
7590MOUSE mox%,moy%,but%
7600sqx%=(mox%-128)>>8
7610IFsqx%>3:sqx%=3
7620IFsqx%<0:sqx%=0
7630sqy%=(1024-moy%)>>6
7640IFsqy%>15:sqy%=15
7650inx%=sqy%+sqx%*g%
7660IFinx%>63:inx%=63
7670IFinx%<>lst% THEN
7680WAIT
7690PROCsmall(lst%,11)
7700PROCsmall(inx%,15)
7710lst%=inx%
7720ENDIF
7730IFINKEY-113 k%=TRUE ELSEk%=FALSE
7740UNTIL but%>0 OR k%
7750a$=filename$(lst%)
7760ENDPROC
7770DEFPROCcurrent
7780VDU 5
7790GCOL 0,8
7800RECTANGLEFILL 384,16,480,64
7810GCOL 0,0
7820RECTANGLE 384,16,480,64
7830GCOL 0,14
7840MOVE 400,60
7850PRINT"Current player : ";
7860GCOL 0,0
7870a$=FNstrip(attend$)
7880IFa$="" PRINT"Empty" ELSEPRINTa$
7890VDU 4
7900OFF
7910ENDPROC
7920DEFPROCaccess
7930IFNOTINKEY-2 OR NOTINKEY-31:ENDPROC
7940MOUSE OFF
7950VDU 7
7960SYS"ABC_Colour",15
7970PROCmess("ENTER OLD ACCESS CODE NUMBER",8)
7980PROCinvis
7990IFesc%:PROCback:ENDPROC
8000J%=FNvalidatenumber(i$)
8010IFNOTJ%:PROCwrong("NUMBERS ONLY PLEASE"):ENDPROC
8020IFcod%<>VAL(i$):PROCwrong("INVALID ACCESS CODE"):ENDPROC
8030PROCmess("ENTER NEW ACCESS CODE NUMBER",8)
8040PROCinvis
8050IFesc%:PROCback:ENDPROC
8060J%=FNvalidatenumber(i$)
8070IFNOTJ%:PROCwrong("NUMBERS ONLY PLEASE"):ENDPROC
8080first%=VAL(i$)
8090PROCmess("ENTER AGAIN TO CONFIRM",8)
8100PROCinvis
8110IFesc%:PROCback:ENDPROC
8120J%=FNvalidatenumber(i$)
8130IFNOTJ%:PROCwrong("NUMBERS ONLY PLEASE"):ENDPROC
8140second%=VAL(i$)
8150IFfirst%<>second%:PROCwrong("DIFFERENT NUMBERS - TRY AGAIN"):ENDPROC
8160cod%=VALi$
8170PROCmess("NEW ACCESS CODE NUMBER ACCEPTED",8)
8180h%=OPENOUT(f$+"Misc.Grab3")
8190PRINT#h%,cod%
8200CLOSE#h%
8210PROCback
8220ENDPROC
8230DEFPROCback
8240IFsun%<11 sun%=11 ELSEsun%=0
8250PROCmenu
8260PROCmouse1
8270ENDPROC
8280DEFPROCwrong(a$)
8290VDU 7
8300PROCmess(a$,11)
8310PROCdelay(150)
8320PROCback
8330ENDPROC
8340DEFFNvalidatenumber(a$)
8350IFa$="":=FALSE
8360K%=TRUE
8370FORJ%=1TO LEN(a$)
8380IFMID$(a$,J%,1)<"0" OR MID$(a$,J%,1)>"9":K%=FALSE
8390NEXT
8400=K%
8410DEFPROCinvis
8420*FX21 0
8430esc%=FALSE
8440cnt%=0
8450i$=""
8460REPEAT
8470REPEAT
8480REPEAT
8490k%=INKEY(1)
8500IFINKEY-113:esc%=TRUE
8510UNTIL k%>0 AND k%<128 OR esc%
8520IFk%=127 AND cnt%>0 THEN
8530cnt%-=1
8540i$=LEFT$(i$,cnt%)
8550PROCmess(">"+STRING$(LEN(i$),"*")+"<",10)
8560ENDIF
8570UNTIL k%<>127 OR esc%
8580IFk%<>13 AND cnt%<>4 THEN
8590i$+=CHR$k%
8600PROCmess(">"+STRING$(LEN(i$),"*")+"<",10)
8610cnt%+=1
8620ENDIF
8630UNTIL k%=13 OR cnt%=4 OR esc%
8640ENDPROC
8650DEFPROClegal
8660IFcod%=0:bad%=FALSE:esc%=FALSE:ENDPROC
8670MOUSE OFF
8680SYS"ABC_Colour",15
8690PROCmess("ENTER ACCESS CODE NUMBER",11)
8700PROCfrput
8710IFcod%=VAL(i$) THEN
8720PROCmess("ACCESS CODE NUMBER ACCEPTED",8)
8730PROCdelay(100)
8740bad%=FALSE
8750ELSE
8760bad%=TRUE
8770ENDIF
8780PROCmouse1
8790ENDPROC
8800DEFPROCfrput
8810*FX21 0
8820esc%=FALSE
8830cnt%=0
8840tot%=4
8850i$=""
8860REPEAT
8870REPEAT
8880REPEAT
8890k%=INKEY(1)
8900IFINKEY-113:esc%=TRUE
8910UNTIL k%=13 OR k%>31 AND k%<128 OR esc%
8920IFk%=127 AND cnt%>0 THEN
8930cnt%-=1
8940i$=LEFT$(i$,cnt%)
8950PROCmess(">"+STRING$(LEN(i$),"*")+"<",8)
8960ENDIF
8970UNTIL k%<>127 OR esc%
8980IFk%<>13 AND cnt%<>tot% THEN
8990IFcnt%=0 THEN
9000IFCHR$(k%)>="a" AND CHR$(k%)<="z" i$=CHR$(k%-32) ELSEi$=CHR$(k%)
9010ELSE
9020IFCHR$(k%)>="A" AND CHR$(k%)<="Z" i$+=CHR$(k%+32) ELSEi$+=CHR$(k%)
9030ENDIF
9040PROCmess(">"+STRING$(LEN(i$),"*")+"<",8)
9050cnt%+=1
9060ENDIF
9070UNTIL k%=13 OR esc% OR cnt%=tot%
9080ENDPROC
9090DEFPROCpoint(a$,mos%)
9100LOCAL wir%,par%,dat%
9110DIM wir% 1088,par% 20,dat% 256
9120h%=OPENIN(f$+"Misc."+a$)
9130FORJ%=0TO32
9140FORK%=0TO32
9150wir%?(K%*32+J%)=BGET#h%
9160NEXT
9170NEXT
9180CLOSE#h%
9190!par%=&20080200
9200par%?1=mos%
9210par%!4=0
9220par%!6=dat%
9230mmo%=dat%
9240FORJ%=32TO1STEPTRUE
9250FORK%=0TO7
9260FORL%=3TO0STEPTRUE
9270val%=wir%?(J%*32+K%*4+L%)
9280IFval%=&FF:par%?4=K%*4+L%:par%?5=31-J%:val%=0
9290?mmo%=?mmo%<<2
9300?mmo%+=val%
9310NEXT
9320mmo%+=1
9330NEXT
9340NEXT
9350SYS"OS_Word",21,par%
9360ENDPROC
9370DEFPROCdesktop
9380MOUSE OFF
9390SYS"ABC_Blank",11
9400PROCexitmessage
9410PROCmess("Return to Desktop?",8)
9420SYS"ABC_Palette"
9430PROCmouse1
9440k%=FNyesno(44)
9450SYS"ABC_Colour",15
9460sun%=10
9470IFNOTk%:ENDPROC
9480*FX20
9490*CHANNELVOICE 1 WaveSynth-Beep
9500*CHANNELVOICE 2 WaveSynth-Beep
9510*CHANNELVOICE 3 WaveSynth-Beep
9520*CHANNELVOICE 4 WaveSynth-Beep
9530*WIPE ram:* ~C~V
9540*RMKILL ABC
9550*RMKILL Cymbal
9560*RMKILL Danger
9570*RMKILL Death
9580*RMKILL End
9590*RMKILL Hook
9600*RMKILL Laugh
9610*RMKILL Skid
9620*RMKILL Steam
9630*RMKILL Synsmajs
9640*RMKILL Timer
9650*RMKILL 10/10SoundGenerator
9660*POINTER 1
9670*SPEAKER ON
9680*FX200 0
9690VDU 20
9700*DESKTOP
9710DEFPROCwings(l$,x%,y%)
9720SYS"ABC_Sprite",b%,"wings",x%,y%
9730VDU 5
9740GCOL 0,11
9750MOVE (x%*2+298)-LEN(l$)*8,y%*4-40
9760PRINTl$
9770VDU 4
9780OFF
9790ENDPROC
9800DEFPROCselect
9810IFNOTFNarea(80,18,336,840) AND NOTFNarea(912,18,1168,840) THEN
9820pre%=-1
9830sly%=-1
9840PROCrectangles
9850ELSE
9860sly%=(moy%-18)DIV280
9870IFFNarea(912,18,1168,840):sly%+=3
9880IFsly%<>pre% THEN
9890PROCrectangles
9900pre%=sly%
9910GCOL 0,11
9920WAIT
9930IFsly%<3 RECTANGLE 80,sly%*280+16,256,256 ELSERECTANGLE 912,(sly%-3)*280+16,256,256
9940ENDIF
9950ENDIF
9960IFbut%=0:ENDPROC
9970CASE sly% OF
9980WHEN 0:PROCrun("ChainUp")
9990WHEN 1:PROCrun("Processor")
10000WHEN 2:PROCrun("Graphoid")
10010WHEN 3:PROCrun("RibTickler")
10020WHEN 4:PROCrun("TurboRaft")
10030WHEN 5:PROCrun("HookIt")
10040ENDCASE
10050REPEAT
10060MOUSE mox%,moy%,but%
10070UNTIL but%=0
10080IFsly%>-1:PROCmenu
10090PROCmouse1
10100ENDPROC
10110DEFPROCcontents
10120VDU 5
10130FORJ%=1TO3
10140SYS"ABC_UnpackSprite",J%-1,z%,48,274-J%*70
10150SYS"ABC_UnpackSprite",J%+2,z%,464,274-J%*70
10160NEXT
10170RESTORE 10340
10180FORJ%=1TO3
10190READ a$,b$
10200GCOL 0,7
10210MOVE 96,J%*280-232
10220PRINTa$
10230MOVE 928,J%*280-232
10240PRINTb$
10250GCOL 0,0
10260MOVE 102,J%*280-228
10270PRINTa$
10280MOVE 934,J%*280-228
10290PRINTb$
10300NEXT
10310VDU 4
10320OFF
10330ENDPROC
10340DATA Chain Up,Rib Tickler,Processor,Turbo Raft,Graphoid,Hook It!
10350DEFPROCrectangles
10360GCOL 0,0
10370FORJ%=1TO3
10380RECTANGLE 80,J%*280-264,256,256
10390RECTANGLE 912,J%*280-264,256,256
10400NEXT
10410ENDPROC
10420DEFPROCachievediscdump
10430IFNOTINKEY-2:ENDPROC
10440IFNOTINKEY-82:ENDPROC
10450VDU 7
10460MOUSE OFF
10470LOCAL ERROR
10480SYS"ABC_Transfer",0,16,640,17
10490PROCinput(32,"adfs::0.$.AchieveSpr",FALSE,TRUE)
10500SYS"ABC_Restore"
10510IFesc% OR i$="":ENDPROC
10520VDU 24,0;192;1278;960;
10530SYS"Hourglass_On"
10540OSCLI"SCREENSAVE "+i$
10550VDU 26
10560SYS"Hourglass_Smash"
10570ON ERROR LOCAL:VDU 7:PROCmess("PLEASE INSERT DISC INTO DRIVE AND PRESS RETURN",8):REPEAT:UNTIL INKEY-74
10580*DIR <Disc2$Dir>.SixGames
10590SYS"ABC_Restore"
10600MOUSE TO 640,512
10610PROCmouse1
10620ENDPROC
10630DEFPROCachieveprintdump
10640IFNOTINKEY-2:ENDPROC
10650IFNOTINKEY-56:ENDPROC
10660VDU7
10670SYS"Hourglass_On"
10680RESTORE 1430
10690new%()=att%()
10700PROCprintpage(attend$)
10710PROCflush
10720SYS"Hourglass_Smash"
10730PROCmouse1
10740ENDPROC
10750DEFPROCallachieveprintdump
10760IFNOTINKEY-2:ENDPROC
10770IFNOTINKEY-102:ENDPROC
10780VDU 7
10790SYS"Hourglass_On"
10800PROCdisplaydirectory
10810PROCflush
10820SYS"Hourglass_Smash"
10830PROCmouse1
10840files%()=FALSE
10850lst%=0
10860REPEAT
10870MOUSE mox%,moy%,but%
10880sqx%=(mox%-128)>>8
10890IFsqx%>3:sqx%=3
10900IFsqx%<0:sqx%=0
10910sqy%=(1024-moy%)>>6
10920IFsqy%>15:sqy%=15
10930inx%=sqy%+sqx%*g%
10940IFinx%>63:inx%=63
10950IFinx%<>lst% THEN
10960IFfiles%(lst%) PROCsmall(lst%,14) ELSEPROCsmall(lst%,11)
10970IFfiles%(inx%) PROCsmall(inx%,14) ELSEPROCsmall(inx%,15)
10980lst%=inx%
10990ENDIF
11000IFbut%=1 AND filename$(lst%)>"" THEN
11010files%(lst%)=NOTfiles%(lst%)
11020IFfiles%(lst%) PROCsmall(lst%,14) ELSEPROCsmall(lst%,11)
11030REPEAT
11040MOUSE mox%,moy%,but%
11050UNTIL but%=0
11060ENDIF
11070IFINKEY-113 k%=TRUE ELSEk%=FALSE
11080UNTIL but%=4 OR k%
11090a$=filename$(lst%)
11100IFNOTk% THEN
11110SYS"Hourglass_On"
11120SYS"ABC_Colour",15
11130X%=0
11140esc%=FALSE
11150WHILE X%<64 AND NOTesc%
11160IFfiles%(X%) THEN
11170h%=OPENIN("<Disc2$Dir>.SixGames.Achieve.Achieve"+STR$(cla%)+"."+filename$(X%))
11180FORJ%=1TO10
11190FORK%=1TO6
11200INPUT#h%,new%(K%,J%)
11210NEXT
11220NEXT
11230CLOSE#h%
11240PROCprintpage(filename$(X%))
11250ENDIF
11260X%+=1
11270ENDWHILE
11280SYS"Hourglass_Smash"
11290ENDIF
11300PROCachievecard
11310REPEAT
11320MOUSE mox%,moy%,but%
11330UNTIL but%=0
11340ENDPROC
11350DEFPROCprintpage(name$)
11360*FX200 0
11370LOCAL ERROR
11380ON ERROR LOCAL:VDU 6,3,7:OSCLI"FX200 1":esc%=TRUE:ENDPROC
11390VDU 2,21
11400PROCheader
11410a$=FNstrip(name$)
11420IFa$="":a$="Empty"
11430PROCprinter("The achievements of "+a$)
11440PROCprinter("playing the 10 out of 10 Mathematics (Algebra) games")
11450PROCprinter("")
11460PROCprinter(FNdate)
11470PROCprinter("")
11480RESTORE 12340
11490PROCprinter(typ$+" Covering"+STRING$(53," ")+"Achievement")
11500PROCprinter("")
11510PROCprinter("GRAPHOID")
11520PROCgamedetails(1)
11530PROCprinter("PROCESSOR")
11540PROCgamedetails(2)
11550PROCprinter("CHAIN UP")
11560PROCgamedetails(3)
11570PROCprinter("HOOK IT!")
11580PROCgamedetails(4)
11590PROCprinter("TURBO RAFT")
11600PROCgamedetails(5)
11610PROCprinter("RIB TICKLER")
11620PROCgamedetails(6)
11630PROCprinter("KEY TO ACHIEVEMENT COLOURS:")
11640PROCprinter("")
11650PROCprinter("BLUE = 100% (10 times GREEN)")
11660PROCprinter("GREEN = 100% (10 out of 10!)")
11670PROCprinter("YELLOW = 50% or over")
11680PROCprinter("RED = Under 50%")
11690PROCprinter("- = means the grade has not been tried")
11700WHILE pnt%<pap%
11710PRINT
11720pnt%+=1
11730ENDWHILE
11740PROCfooter
11750VDU 6,3
11760*FX200 1
11770ENDPROC
11780DEFPROCgamedetails(num%)
11790FORJ%=1TO6
11800READ K%
11810b$=info$(num%,K%)
11820IFnig% THEN
11830a$=b$
11840IFINSTR(a$,"�")>0:MID$(a$,INSTR(a$,"�"))="1"
11850IFINSTR(a$,"�")>0:MID$(a$,INSTR(a$,"�"))="2"
11860IFINSTR(a$,"�")>0:MID$(a$,INSTR(a$,"�"))="3"
11870ELSE
11880a$=MID$(b$,INSTR(b$,")")+2)
11890ENDIF
11900a$=STR$(J%)+" "+a$
11910a$+=STRING$(72-LEN(a$)," ")
11920CASE new%(num%,K%) OF
11930WHEN 0:a$+="-"
11940WHEN 1:a$+="RED"
11950WHEN 2:a$+="YELLOW"
11960WHEN 3,4,5,6,7,8,9,10,11:a$+="GREEN"
11970OTHERWISE:a$+="BLUE"
11980ENDCASE
11990PROCprinter(a$)
12000NEXT
12010PROCprinter("")
12020ENDPROC
12030DEFPROCheader
12040pnt%=0
12050IFhed%=0:ENDPROC
12060FORW%=1TO hed%
12070PRINT
12080NEXT
12090ENDPROC
12100DEFPROCfooter
12110IFfut%=0:ENDPROC
12120FORW%=1TO fut%
12130PRINT
12140NEXT
12150ENDPROC
12160DEFPROCprinter(j$)
12170PRINTj$
12180pnt%+=1
12190IFpnt%=pap% THEN
12200PROCfooter
12210PROCheader
12220ENDIF
12230ENDPROC
12240DEFFNdate
12250RESTORE 12320
12260fnd%=FALSE
12270WHILE NOTfnd%
12280READ ab$,n$
12290IFINSTR(TIME$,ab$):fnd%=TRUE
12300ENDWHILE
12310="Date: "+MID$(TIME$,5,3)+n$+MID$(TIME$,11,5)
12320DATA Jan,January,Feb,February,Mar,March,Apr,April,May,May,Jun,June,Jul
12330DATA July,Aug,August,Sep,September,Oct,October,Nov,November,Dec,December
12340DATA 10,4,5,7,8,9
12350DATA 1,10,6,3,7,8
12360DATA 10,6,4,3,9,5
12370DATA 2,1,10,6,3,9
12380DATA 1,6,10,9,3,2
12390DATA 1,10,9,2,8,7
12400DEFPROCflush
12410*FX21 9
12420ENDPROC
12430DEFFNstrip(str$)
12440WHILE INSTR(str$,"_")>0
12450MID$(str$,INSTR(str$,"_"))=" "
12460ENDWHILE
12470=str$
12480DEFPROCinput(tot%,x$,cap%,fil%)
12490*FX21 0
12500esc%=FALSE
12510cnt%=LEN(x$)
12520i$=x$
12530IFfil% y$="filename: >" ELSEy$=">"
12540PROCmess(y$+i$+"<",8)
12550REPEAT
12560REPEAT
12570REPEAT
12580k%=INKEY(1)
12590IFINKEY-113:esc%=TRUE
12600UNTIL k%=13 OR k%>31 AND k%<128 OR esc%
12610IFk%=127 AND cnt%>0 THEN
12620cnt%-=1
12630i$=LEFT$(i$,cnt%)
12640PROCmess(y$+i$+"<",8)
12650ENDIF
12660UNTIL k%<>127 OR esc%
12670IFk%<>13 AND cnt%<>tot% THEN
12680IFcap% THEN
12690IFcnt%=0 THEN
12700IFCHR$(k%)>="a" AND CHR$(k%)<="z" i$=CHR$(k%-32) ELSEi$=CHR$(k%)
12710ELSE
12720IFCHR$(k%)>="A" AND CHR$(k%)<="Z" i$+=CHR$(k%+32) ELSEi$+=CHR$(k%)
12730ENDIF
12740ELSE
12750i$+=CHR$(k%)
12760ENDIF
12770PROCmess(y$+i$+"<",8)
12780cnt%+=1
12790ENDIF
12800IFk%<>13 AND cnt%=tot%:VDU7
12810UNTIL k%=13 OR esc%
12820ENDPROC
12830DEFPROCexitmessage
12840SYS"ABC_Colour",11
12850RESTORE 12950
12860READ a$
12870Y%=240
12880WHILE a$<>"end"
12890SYS"ABC_PryntString",a$,34,Y%,1,7
12900SYS"ABC_PryntString",a$,32,Y%+1,1,0
12910IFa$>"" Y%-=18 ELSEY%-=12
12920READ a$
12930ENDWHILE
12940ENDPROC
12950DATA Also available or coming soon
12960DATA "for Acorn 32-bit, IBM PC/compatibles"
12970DATA and Commodore Amiga ...
12980DATA
12990DATA English French
13000DATA German Spanish
13010DATA Italian Science
13020DATA Maths (Number) Maths (Algebra)
13030DATA Early Essentials Junior Essentials
13040DATA
13050DATA Contact your dealer or
13060DATA ring (0742) 780370 for details
13070DATA end
13080DEFFNinitialcompressed(s$)
13090h%=OPENIN(f$+s$)
13100len%=EXT#h%
13110CLOSE#h%
13120DIM z% len%
13130OSCLI"LOAD "+f$+s$+" "+STR$~(z%)
13140=z%
13150DEFPROCconfigure
13160IFNOTINKEY-2 OR NOTINKEY-1 OR NOT INKEY-83:ENDPROC
13170MOUSE OFF
13180SYS"ABC_Blank",3
13190SYS"ABC_Colour",3
13200PROCvaliddirectories
13210SYS"ABC_Sprite",b%,"bar",180,242
13220SYS"ABC_Sprite",b%,"exit",454,18
13230COLOUR 11
13240COLOUR 130
13250PRINTTAB(25,2)"10 out of 10 CUSTOMISATION"
13260COLOUR 7
13270old%=cla%
13280RESTORE 15200
13290READ a$,K%
13300J%=0
13310WHILE a$<>"end"
13320SYS"ABC_Sprite",b%,"bar",180,210-J%*16
13330PRINTTAB(25,J%*2+6)a$
13340IFK%=-1 THEN
13350SYS"ABC_Sprite",b%,"arrow_up",482,210-J%*16
13360SYS"ABC_Sprite",b%,"arrow_down",510,210-J%*16
13370ENDIF
13380IFK%=-2 SYS"ABC_Sprite",b%,"default",454,210-J%*16 ELSEPROCbuttonstatus(J%,210-J%*16)
13390J%+=1
13400READ a$,K%
13410ENDWHILE
13420SYS"ABC_Palette"
13430MOUSE RECTANGLE 904,32,160,810
13440PROCmouse1
13450end%=FALSE
13460WHILE NOTend%
13470REPEAT
13480MOUSE mox%,moy%,but%
13490UNTIL but%>0
13500IFbut%=4 AND POINT(mox%,moy%)<>3:PROCaction
13510ENDWHILE
13520PROCsavenewconfigure
13530IFold%<>cla%:PROCsetempty
13540IFsun%<11 sun%=11 ELSEsun%=0
13550PROCmenu
13560ENDPROC
13570DEFPROCaction
13580noy%=(842-moy%)>>6
13590nox%=(mox%-906)DIV56
13600CASE noy% OF
13610WHEN 0
13620rat%=NOTrat%
13630PROCbuttonstatus(noy%,210-noy%*16)
13640VDU 7
13650WHEN 1
13660IFver% THEN
13670nig%=NOTnig%
13680PROCbuttonstatus(noy%,210-noy%*16)
13690VDU 7
13700ENDIF
13710WHEN 2
13720sds%=NOTsds%
13730PROCbuttonstatus(noy%,210-noy%*16)
13740IFsds% OSCLI"SPEAKER ON" ELSEOSCLI"SPEAKER OFF"
13750VDU 7
13760WHEN 3
13770IFver% THEN
13780ver%=FALSE
13790nig%=FALSE
13800PROCbuttonstatus(noy%-2,210-noy%*16+32)
13810PROCbuttonstatus(noy%,210-noy%*16)
13820PROCbuttonstatus(noy%+1,210-noy%*16-16)
13830VDU 7
13840ENDIF
13850WHEN 4
13860IFNOTver% THEN
13870ver%=TRUE
13880nig%=TRUE
13890PROCbuttonstatus(noy%-3,210-noy%*16+48)
13900PROCbuttonstatus(noy%,210-noy%*16)
13910PROCbuttonstatus(noy%-1,210-noy%*16+16)
13920VDU 7
13930ENDIF
13940WHEN 5
13950IFnox%=1 THEN
13960grd%+=1
13970IFgrd%=7:grd%=1
13980PROCbuttonstatus(noy%,210-noy%*16)
13990VDU 7
14000ENDIF
14010IFnox%=2 THEN
14020grd%-=1
14030IFgrd%=0:grd%=6
14040PROCbuttonstatus(noy%,210-noy%*16)
14050VDU 7
14060ENDIF
14070WHEN 6
14080IFnox%=1 THEN
14090cla%+=1
14100IFcla%=65:cla%=1
14110PROCbuttonstatus(noy%,210-noy%*16)
14120VDU 7
14130ENDIF
14140IFnox%=2 THEN
14150cla%-=1
14160IFcla%=0:cla%=64
14170PROCbuttonstatus(noy%,210-noy%*16)
14180VDU 7
14190ENDIF
14200WHEN 7
14210IFnox%=1 THEN
14220hed%+=1
14230IFhed%=8:hed%=0
14240PROCbuttonstatus(noy%,210-noy%*16)
14250VDU 7
14260ENDIF
14270IFnox%=2 THEN
14280hed%-=1
14290IFhed%<0:hed%=7
14300PROCbuttonstatus(noy%,210-noy%*16)
14310VDU 7
14320ENDIF
14330WHEN 8
14340IFnox%=1 THEN
14350fut%+=1
14360IFfut%=8:fut%=0
14370PROCbuttonstatus(noy%,210-noy%*16)
14380VDU 7
14390ENDIF
14400IFnox%=2 THEN
14410fut%-=1
14420IFfut%<0:fut%=7
14430PROCbuttonstatus(noy%,210-noy%*16)
14440VDU 7
14450ENDIF
14460WHEN 9
14470IFnox%=1 THEN
14480pap%+=1
14490IFpap%=81:pap%=16
14500PROCbuttonstatus(noy%,210-noy%*16)
14510VDU 7
14520ENDIF
14530IFnox%=2 THEN
14540pap%-=1
14550IFpap%=15:pap%=80
14560PROCbuttonstatus(noy%,210-noy%*16)
14570VDU 7
14580ENDIF
14590WHEN 10
14600pix%+=1
14610IFpix%=4:pix%=0
14620PROCbuttonstatus(noy%,210-noy%*16)
14630VDU 7
14640WHEN 11
14650SYS"ABC_Blank",3
14660*SPEAKER ON
14670VDU 7
14680rat%=FALSE
14690nig%=TRUE
14700sds%=TRUE
14710ver%=TRUE
14720grd%=1
14730cla%=1
14740hed%=1
14750fut%=1
14760pap%=64
14770pix%=0
14780FORJ%=0TO10
14790PROCbuttonstatus(J%,210-J%*16)
14800NEXT
14810SYS"ABC_Palette"
14820WHEN 12:end%=TRUE
14830ENDCASE
14840REPEAT
14850MOUSE mox%,moy%,but%
14860UNTIL but%=0
14870ENDPROC
14880DEFPROCsavenewconfigure
14890MOUSE OFF
14900SYS"ABC_Blank",3
14910SYS"ABC_Colour",3
14920IFNOTdirectory%(cla%):PROCcreatedirectory
14930OSCLI"DIR <Disc2$Dir>.SixGames.Achieve.Achieve"+STR$(cla%)
14940IFver% typ$="Grade" ELSEtyp$="Level"
14950h%=OPENOUT(f$+"Configure")
14960PRINT#h%,rat%,nig%,sds%,ver%,grd%,cla%,typ$,hed%,fut%,pap%,pix%
14970CLOSE#h%
14980*DIR <Disc2$Dir>.SixGames
14990ENDPROC
15000DEFPROCbuttonstatus(num%,ysc%)
15010yyy%=ysc%-2
15020WAIT
15030IFnum%=3 OR num%=4 SYS"ABC_Sprite",b%,"radiooff",454,ysc% ELSESYS"ABC_Sprite",b%,"optoff",454,ysc%
15040CASE num% OF
15050WHEN 0:IFrat%:SYS"ABC_Sprite",b%,"opton",454,ysc%
15060WHEN 1:IFnig%:SYS"ABC_Sprite",b%,"opton",454,ysc%
15070WHEN 2:IFsds%:SYS"ABC_Sprite",b%,"opton",454,ysc%
15080WHEN 3:IFNOTver%:SYS"ABC_Sprite",b%,"radioon",454,ysc%
15090WHEN 4:IFver%:SYS"ABC_Sprite",b%,"radioon",454,ysc%
15100WHEN 5:SYS"ABC_PryntString",STR$(grd%),462,yyy%,0,9
15110WHEN 6
15120IFdirectory%(cla%) cul%=13 ELSEcul%=11
15130IFcla%>9 SYS"ABC_PryntString",STR$(cla%),458,yyy%,0,cul% ELSESYS"ABC_PryntString",STR$(cla%),462,yyy%,0,cul%
15140WHEN 7:SYS"ABC_PryntString",STR$(hed%),462,yyy%,0,11
15150WHEN 8:SYS"ABC_PryntString",STR$(fut%),462,yyy%,0,11
15160WHEN 9:SYS"ABC_PryntString",STR$(pap%),458,yyy%,0,11
15170WHEN 10:IFpix%=0 SYS"ABC_PryntString","A",462,yyy%,0,11 ELSESYS"ABC_PryntString",STR$(pix%),462,yyy%,0,6
15180ENDCASE
15190ENDPROC
15200DATA Ratings suppressed,0,National curriculum numbers,0,Sound,0,Level,0
15210DATA Grade,0,Overall skill,-1,Class number,-1,Top space,-1
15220DATA Bottom space,-1,Paper length,-1,Graphics selection,0,Default,-2
15230DATA end,0
15240DEFPROCvaliddirectories
15250OSCLI"DIR <Disc2$Dir>.SixGames.Achieve"
15260SYS"OS_GBPB",8,,cat%,&40,0 TO ,,,d%
15270*DIR <Disc2$Dir>.SixGames
15280c%=0
15290d%=64-d%
15300st%=cat%
15310directory%()=FALSE
15320WHILE c%<d%
15330t%=st%?((?st%)+1)
15340st%?((?st%)+1)=&D
15350a$=$(st%+1)
15360st%+=1+(?st%)
15370?st%=t%
15380directory%(VAL(MID$(a$,8)))=TRUE
15390c%+=1
15400ENDWHILE
15410ENDPROC
15420DEFPROCcreatedirectory
15430OSCLI"CDIR <Disc2$Dir>.SixGames.Achieve.Achieve"+STR$(cla%)
15440PROCsetempty
15450ENDPROC
15460DEFPROCsetempty
15470attend$=""
15480h%=OPENOUT(f$+"Name")
15490PRINT#h%,""
15500CLOSE#h%
15510att%()=0
15520status%()=0
15530ENDPROC
15540DEFFNleave
15550MOUSE mox%,moy%,but%
15560IFINKEY-113 OR INKEY-99 OR INKEY-74 OR but%>0 ELSE=FALSE
15570REPEAT
15580MOUSE mox%,moy%,but%
15590UNTIL NOTINKEY-113 AND NOTINKEY-99 AND NOTINKEY-74 AND but%=0
15600*FX21 9
15610=TRUE
� >adfs::0.$.!10/10Alge.Menu
�:�error
��<>12:�12:�
(�initial
2 �menu
<�
F�mouseilluminate
P�select
Z�access
d�configure
n� �
x
��initial
�ș"ABC_VideoAddress"
�ș"Hourglass_On"
�ȗ ȓ 0,0,1280,1024
�H� att%(6,10),new%(6,10),info$(6,10),filename$(64),status%(2),six$(6)
�4� buf%(6,10),directory%(64),files%(64),cat% &400
�h%=�("ram:FactFile")
��J%=1�6
��K%=1�10
��#h%,fact$
�info$(J%,K%)=fact$
��
��
��#h%
� �Ttp
�J%=1�6
�K%=1�6
"� X%
,buf%(J%,X%)=K%
6�
@�
J*FX212 128 0
T
@% =0
^
box%=0
hg% =16
rpre%=-1
|
sun%=0
�wit%=20
� f$ ="<Disc2$Dir>.SixGames."
�-b% =�initialsprites("Numbers|Buttons",0)
�(z% =�initialcompressed("IntrosSpr")
��loaddetails
�ș"Hourglass_Smash"
��point("Ten",1)
�Ƞ 4
�ȡ 1,"StringLib-Pluck"
�
�flush
��
���mouse1
�ȗ � 1,255,255,0
ȗ � 2,255,0,0
ȗ � 3,192,192,192
ȗ � 1
&�
0ݤarea(x1%,y1%,x2%,y2%)
:�mox%<x1% � mox%>x2%:=�
D�moy%<y1% � moy%>y2%:=�
N=�
X��mouseilluminate
bȗ mox%,moy%,but%
lbox%=(moy%-100)>>6
v�box%<0:box%=0
��box%>11:box%=11
�>�box%<>sun%:Ȗ:�square(sun%,11):�square(box%,15):sun%=box%
�笤area(704,104,864,868) �
��square(box%,11)
�
�box%<5 �
�box%=11:sun%=10
��
�box%=0:sun%=1
��
��
�'�but%=0 � ��area(704,104,864,868):�
�� 7
�
Ȏ box% �
� 0 :�desktop
� 1 :�printcertificate
� 2 :�delete
� 3 :�create
*� 4 :�load
4� 5 :�viewachieve
>� 6 :�run("RibTickler")
H� 7 :�run("TurboRaft")
R� 8 :�run("HookIt")
\� 9 :�run("ChainUp")
f� 10:�run("Processor")
p� 11:�run("Graphoid")
z�
��sun%<11 sun%=11 �sun%=0
��
�ȗ mox%,moy%,but%
�� but%=0
� �menu
��
���run(game$)
�ȗ �
�ș"Hourglass_On"
�ș"ABC_Blank",15
�ș"ABC_Colour",15
�h%=�(f$+"Misc.Signal")
��#h%,""
�#h%
� f$+game$
�
$��square(wch%,col%)
.� 0,col%
8ȓȐ 706,wch%*64+100,156,58
B�
L
��menu
Vȗ �
`ȗ � 640,512
jș"ABC_Blank",15
tș"ABC_Colour",15
~#�card("ALGEBRA MENU",24,6,2,12)
��fillmenu(13,10)
��current
��rectangles
�
�contents
�ș"ABC_Palette"
�ȗ ȓ 0,0,1280,1024
�ȗ � 640,512
��mouse1
��
���fillmenu(tax%,tay%)
�� 5
� � 0,0
� �tVE
�J%=0�5
� s$
(� tax%*32-g%,1024-(tay%*g%+J%*64+20)
(�s$
2�
<
� 0,14
F�J%=6�11
P� s$
Z(� tax%*32-g%,1024-(tay%*g%+J%*64+20)
d�s$
n�
x� 4
��
��
�A� Graphoid,Processor,Chain Up,Hook It!,Turbo Raft,Rib Tickler
�?� Player information,Change player,New player,Remove player
�� Print certificate,Quit
���achievecard
�ȗ �
�ș"ABC_Blank",15
�ș"ABC_Colour",15
�a$=�strip(attend$)
��a$="":a$="Empty"
��nig% �
�Q�card(a$+" : Achievement Record 10/10 Mathematics (Algebra - AT3)",0,12,8,11)
�
B�card(a$+" : Achievement Record 10/10 Mathematics ",0,12,8,11)
�
"�fillachieve(0,6)
,m$="RETURN TO MENU"
6�mess(m$,11)
@ȗ � 640,512
Jș"ABC_Palette"
T�mouse1
^
p$="X"
h
sta%=0
r
oxx%=0
|
oyy%=0
�*FX21 0
��
���viewachieve
��achievecard
��
�ȗ mox%,moy%,but%
�)�moy%<72 � sta%=0:sta%=1:�mess(m$,10)
�)�moy%>72 � sta%=1:sta%=0:�mess(m$,11)
�cxx%=(mox%-320)/160+1
�-�moy%>836 cyy%=0 �cyy%=(�(moy%-836)�64)+1
��cyy%>10:cyy%=0
��cxx%<0 � cxx%>6 cxx%=0
��cxx%<>oxx% � cyy%<>oyy% �
oxx%=cxx%
oyy%=cyy%
a$=info$(cxx%,cyy%)
&�a$>"" �
0F�nig% �information("AT3 Level "+a$) ��information(�a$,�a$,")")+2))
:�
D�information("")
N�
X�
b�achievediscdump
l�achieveprintdump
v�allachieveprintdump
�� �leave
��
���information(t$)
��p$=t$:�
� p$=t$
�
� 0,11
�� 5
�Ȗ
�ȓȐ 0,96,1278,64
� � 0,0
�ȓ 0,96,1278,64
�� 640-�(t$)*8,140
��t$
� 4
�
�
"��card(t$,tax%,tay%,sdx%,sdy%)
*� 5
4 � 0,8
>-ȓȐ tax%*g%,tay%*g%,sdx%*160+160,sdy%*64
H
� 0,11
R1ȓȐ tax%*g%+320,tay%*g%,sdx%*160-162,sdy%*64
\ � 0,0
f3�sdx%*160+160>1279 sxe%=1278 �sxe%=sdx%*160+160
p#ȓ tax%*g%,tay%*g%,sxe%,sdy%*64
z
� 0,13
�#� tax%*g%+64,tay%*g%+sdy%*64+64
�� 0,�(t$)*g%,0
� � 85,tax%*g%,tay%*g%+sdy%*64
�� 81,128+�(t$)*g%,0
� � 0,0
�� tax%*g%,tay%*g%+sdy%*64
�
� 1,64,64
�� 1,�(t$)*g%,0
�� 1,64,-64
�#� tax%*g%+64,tay%*g%+sdy%*64+44
��t$
��J%=1� sdx%
� � tax%*g%+J%*160+160,tay%*g%
� 1,0,sdy%*64
�
�J%=1� sdy%
$� tax%*g%,tay%*g%+J%*64
.� 1,sdx%*160+160,0
8�
B� 4
L�
V�
`��fillachieve(tax%,tay%)
j� 5
t
� �D|K
~� t$
�� tax%+32,1024-(tay%*g%+52)
��t$
��K%=1�6
�� t$
�4� (tax%+32+K%*160+208)-�(t$)*8,1024-(tay%*g%+52)
��t$
��
��J%=1�10
� � 0,0
�� t$
�%� tax%+32,1024-(tay%*g%+J%*64+52)
��t$
�K%=1�6
fax%=tax%+32+K%*160
fay%=tay%*g%+J%*64
&�fax%+156>=1100 wid%=154 �wid%=156
(Ȏ att%(K%,J%) �
2� 0
<!�info$(K%,J%)="" � 0,3 �� 0,7
F#�status%(1)+status%(2)=36:� 0,8
P�status%(1)=36:� 0,10
Z�status%(2)=36:� 0,15
d� 1:� 0,11
n� 2:� 0,14
x � 3,4,5,6,7,8,9,10,11:� 0,10
�:� 0,15
��
�(ȓȐ fax%+130,1024-(fay%+92),wid%,56
��info$(K%,J%)>"" �
��nig% �
� � 0,7
�� fax%+172,1020-(fay%+52)
�(�info$(K%,J%),�info$(K%,J%),"(")-2)
� � 0,0
�� fax%+174,1024-(fay%+52)
�(�info$(K%,J%),�info$(K%,J%),"(")-2)
��
� � 0,7
� fax%+202,1020-(fay%+52)
�buf%(K%,J%)
� 0,0
"� fax%+204,1024-(fay%+52)
,�buf%(K%,J%)
6�
@�
J�
T�
^� 4
h�
r�
|E� SUBJECT,Graphoid,Processor,Chain Up,Hook It!,Turbo Raft,Tickler
�C� Patterns and Seq,Symbols,Formulae and Equ,Co-ordinates,Graphs
�C� Operations,Mappings and Fns,Inequalities,Interpretation,Words
���cent(t$,tay%)
��41-�(t$)�2,tay%)t$;
��
���mess(t$,col%)
�� 0,col%
�� 5
�Ȗ
�ȓȐ 0,0,1278,64
� � 0,0
�ȓ 0,0,1278,64
�� 640-�(t$)*8,44
�t$
� 4
�
&�
0��error
:� �
D� 3,26,7
N
*CLOSE
Xș"Hourglass_Smash"
bȗ �
lș"ABC_Colour",15
v�>&107FF � �<&10900 �
�1�mess("FILING SYSTEM REPORTS ERROR : "+�$,11)
��delay(150)
�� 7
�T�mess("PLEASE CHECK DISC IN DRIVE AND NOT WRITE PROTECTED THEN PRESS RETURN",11)
��
�
� �-74
��
�� � � � �DDL
�h%=�(f$+"Misc.Signal")
��#h%,""
��#h%
�*DIR <Disc2$Dir>.SixGames
�� �
ș"ABC_Colour",15
�
�
��printcertificate
*ș"ABC_Colour",15
4ȗ �
>
ach%=�
H�J%=1�10
R�K%=1�6
\�att%(K%,J%)>2:ach%=�
f�
p�
z�ach% �
�<�mess("Nothing achieved at present - return to menu",11)
��
�ȗ mox%,moy%,but%
�� but%=0
��
�� �leave
��
� �busy
��
�� �leave
��
��
�
��busy
+�mess("Screen/Printer/Disc (S/P/D)",11)
*FX21 0
�
$k%=�(0)
.�k%>=�("a"):k%-=32
8/� k%=�("S") � k%=�("P") � k%=�("D") � �-113
B�-113:�flush:�
L� 7
V�k%<>�("P") �
`#�mess("Text/Graphics (T/G)",11)
j�
tt%=�(0)
~�t%>=�("a"):t%-=32
�#� t%=�("T") � t%=�("G") � �-113
��
�
t%=�("T")
��
��-113:�flush:�
�/�t%=�("T") �achieve_text ��achieve_graphics
��k%=�("D"):�discdump
��k%=�("P"):�printer_dump
��
���achieve_graphics
�ș"ABC_Blank",3
�ș"ABC_Colour",3
� 0,12
ȓȐ 184,64,974,932
� 0,7
ȓ 184,64,976,932
(� 0
2 � 140
<"ș"ABC_Sprite",b%,"wax",444,70
F$ș"ABC_Sprite",b%,"small",120,64
P%ș"ABC_Sprite",b%,"small",420,214
Z
�words(�)
dș"ABC_Palette"
n�
x��achieve_text
�ș"ABC_Blank",12
�ș"ABC_Colour",12
�� 7
� � 140
��cent(�67,"*"),0)
��J%=1�29
��8,J%)"*"�74,J%)"*"
��
��cent(�67,"*"),30)
�
�words(�)
�ș"ABC_Palette"
��
���words(fan%)
� 7
�fan% �
'ș"ABC_Sprite",b%,"certify",118,248
" � 137
,a$=�strip(attend$)
6�42-�(attend$)�2,4)a$
@�
J'�cent("THIS IS TO CERTIFY THAT ",2)
T � 140
^a$=�strip(attend$)
h�cent(a$,4)
r�
| � 140
��18,7)"has played the"
��18,8)"Ten out of Ten"
��18,9)"Maths (Algebra)"
��18,10)"games and has"
��nig% �
�8�18,11)"achieved 100% at the following AT3 Levels:"
��
�"�ver% a$="grades" �a$="levels"
�0�18,11)"achieved 100% at the following "+a$
��
��cent(�date,25)
� �cent("Certificate from",27)
�)�cent("10/10 Educational Systems",28)
tay%=0
�J%=1�10
K%=1
&
fnd%=�
0ȕ K%<7 � �fnd%
:K�att%(K%,J%)>2 � �info$(K%,J%),�info$(K%,J%),")")-2)<>"":tay%+=1:fnd%=�
D K%+=1
N�
X�
b
� �tFK
ltay%=18-tay%�2
v�J%=1�10
�� b$
�
six$()=""
��K%=1�6
�C�nig% y$=�info$(K%,J%),�info$(K%,J%),"(")-2) �y$=�(buf%(K%,J%))
�'�att%(K%,J%)>2 � y$>"0":six$(K%)=y$
��
��
�
srt%=�
��K%=1�5
�6�six$(K%)<six$(K%+1):Ȕ six$(K%),six$(K%+1):srt%=�
��
�
� srt%
� a$=""
�K%=1�6
"�six$(K%)<>"":a$+=six$(K%)+","
�
��a$)=",":a$=�a$)
*
�a$<>"" �
4)�18,tay%)b$�36,tay%)"..."�40,tay%)a$
>tay%+=1
H�
R�
\�
f��discdump
p� 7
zȗ �
�� �
� ș"ABC_Transfer",0,16,640,17
�'�input(32,"adfs::0.$."+attend$,�,�)
�ș"ABC_Restore"
��esc% � i$="":�
�ș"Hourglass_On"
��"SCREENSAVE "+i$
�ș"Hourglass_Smash"
�P� � �:� 7:�mess("PLEASE INSERT DISC INTO DRIVE AND PRESS RETURN",8):�:� �-74
�*DIR <Disc2$Dir>.SixGames
�ș"ABC_Restore"
�ȗ � 640,512
��mouse1
�
��printer_dump
� 2
$�J%=0�30
.�K%=0�79
8� 31,K%,J%
Bș"OS_Byte",135 � ,res%
L
� res%
V�
`�J%<30:� 13,10
j�
t� 3
~�
�
��load
�
�legal
��bad% � esc%:�
��gridcheck
��a$="" � k%:�
�� 7
�status%()=0
�?h%=�("<Disc2$Dir>.SixGames.Achieve.Achieve"+�(cla%)+"."+a$)
�ș"Hourglass_On"
��J%=1�10
��K%=1�6
�
�#h%,byt%
att%(K%,J%)=byt%
#�byt%>2 � byt%<12:status%(1)+=1
�byt%>11:status%(2)+=1
�
(�
2�#h%
<attend$=a$
Fh%=�(f$+"Name")
P�#h%,attend$
Z�#h%
dș"Hourglass_Smash"
n�
x��small(wch%,col%)
�� 0,col%
�3ȓȐ (wch%>>4)*256+354,964-((wch%�&F)<<6),26,32
��
���create
�
�legal
��bad% � esc%:�
�ȗ �
�ș"ABC_Colour",15
��mess("New player name",11)
��delay(50)
��input(8,"",�,�)
�ȕ �i$," ")>0
��i$,�i$," "))="_"
�
�esc%:�
7�"DIR <Disc2$Dir>.SixGames.Achieve.Achieve"+�(cla%)
"%ș"OS_GBPB",8,,cat%,&40,0 � ,,,d%
,*DIR <Disc2$Dir>.SixGames
6a%=0
@c%=0
Jd%=64-d%
Tst%=cat%
^
dup%=�
hȕ c%<d% � �dup%
rt%=st%?((?st%)+1)
|st%?((?st%)+1)=&D
�a$=$(st%+1)
�st%+=1+(?st%)
�?st%=t%
��a$=i$:dup%=�
� a%+=1
� c%+=1
��
�k%=�
��dup% �
�
� 0,10
�� 5
�ȓȐ 0,0,1278,64
� � 0,0
ȓ 0,0,1278,64
.t$="Player "+i$+" already exists - Erase?"
� 860-�(t$)*g%,44
&�t$
0� 4
:�
Dk%=�yesno(44)
N�
X�k%:�mouse1:�
batt%()=0
lstatus%()=0
v?h%=�("<Disc2$Dir>.SixGames.Achieve.Achieve"+�(cla%)+"."+i$)
��J%=1�10
��K%=1�6
��#h%,att%(K%,J%)
��
��
��#h%
�attend$=i$
�h%=�(f$+"Name")
��#h%,attend$
��#h%
�ș"ABC_Colour",15
��mouse1
��
��delete
�legal
�bad% � esc%:�
�gridcheck
*�a$="" � k%:�
4ș"ABC_Colour",15
>
� 0,10
H� 5
RȓȐ 0,0,1278,64
\ � 0,0
fȓ 0,0,1278,64
pt$="Player "+a$+" - Erase?"
z� 860-�(t$)*g%,44
��t$
�� 4
��
�k%=�yesno(44)
��k%:�mouse1:�
�A�"DELETE <Disc2$Dir>.SixGames.Achieve.Achieve"+�(cla%)+"."+a$
��a$=attend$:�setempty
��
���delay(del%)
��
�Ȗ
�del%-=1
�� del%<0
�
��loadcurrent
h%=�(f$+"Name")
$�#h%,attend$
.�#h%
8�attend$="" �
Batt%()=0
L�
VDh%=�("<Disc2$Dir>.SixGames.Achieve.Achieve"+�(cla%)+"."+attend$)
`�J%=1�10
j�K%=1�6
t�#h%,att%(K%,J%)
~�
��
��#h%
��
��
�ݤinitialsprites(s$,l%)
�l%+=�spritefilelength(s$)
�� b% l%
�
!b%=l%
�ș"OS_SpriteOp",265,b%
��loadsprites(s$)
�=b%
�ݤspritefilelength(s$)
flo%=0
s$+="|"
ȕ s$>""
h%=�(f$+�stringextract(s$))
(flo%+=�#h%
2�#h%
<�
F=flo%+64
Pݤstringextract(� s$)
Zw$=�s$,(�s$,"|"))-1)
ds$=�s$,(�s$,"|"))+1)
n=w$
x��loadsprites(s$)
�s$+="|"
�typ%=266
�ȕ s$>""
�1ș"OS_SpriteOp",typ%,b%,f$+�stringextract(s$)
�typ%-=(typ%=266)
��
��
���loaddetails
�status%()=0
�h%=�(f$+"Misc.Grab3")
�
�#h%,cod%
��#h%
�h%=�(f$+"Configure")
?�#h%,rat%,nig%,sds%,ver%,grd%,cla%,typ$,hed%,fut%,pap%,pix%
�#h%
'�sds% �"SPEAKER ON" ��"SPEAKER OFF"
"h%=�(f$+"Name")
,�#h%,attend$
6�#h%
@�attend$="" �
Jatt%()=0
T�
^Dh%=�("<Disc2$Dir>.SixGames.Achieve.Achieve"+�(cla%)+"."+attend$)
h�J%=1�10
r�K%=1�6
|
�#h%,byt%
�att%(K%,J%)=byt%
�#�byt%>2 � byt%<12:status%(1)+=1
��byt%>11:status%(2)+=1
��
��
��#h%
��
��
�ݤyesno(tay%)
��
�ȗ mox%,moy%,but%
�� but%=0
�ȗ ȓ 959,12,240,46
�mouse1
ȗ � 1160,32
� 5
& � 0,0
0� 896,tay%
:�"Yes No"
D�
Nȗ mox%,moy%,but%
X�mox%<1072 �
b
� 0,11
lȓȐ 960,tay%-32,80,40
v � 0,7
�ȓȐ 1120,tay%-32,80,40
��
� � 0,7
�ȓȐ 960,tay%-32,80,40
�
� 0,11
�ȓȐ 1120,tay%-32,80,40
��
�� but%>0 � �mox%,moy%)=11
�� 4
��
��mox%<1072 =� �=�
���displaydirectory
�ș"ABC_Blank",15
ș"ABC_Colour",15
7�"DIR <Disc2$Dir>.SixGames.Achieve.Achieve"+�(cla%)
%ș"OS_GBPB",8,,cat%,&40,0 � ,,,d%
*DIR <Disc2$Dir>.SixGames
*� 5
4�a%=0�63
>x%=(a%>>4)*256+128
Hy%=(a%�&F)<<6
R � 0,8
\ȓȐ x%,y%,224,40
f
� 0,11
pȓȐ x%+224,y%,30,40
z � 0,0
�ȓ x%+224,y%,30,40
��
�a%=0
�c%=0
�d%=64-d%
�st%=cat%
�filename$()=""
� � 0,0
�ȕ c%<d%
�t%=st%?((?st%)+1)
�st%?((?st%)+1)=&D
�a$=$(st%+1)
�st%+=1+(?st%)
?st%=t%
&� (a%>>4)*256+144,992-((a%�&F)<<6)
filename$(a%)=a$
$a$=�strip(a$)
.� a$
8 a%+=1
B c%+=1
L�
V� 4
`�
jș"ABC_Palette"
t�
~��gridcheck
��displaydirectory
�
lst%=0
��
�ȗ mox%,moy%,but%
�sqx%=(mox%-128)>>8
��sqx%>3:sqx%=3
��sqx%<0:sqx%=0
�sqy%=(1024-moy%)>>6
��sqy%>15:sqy%=15
�inx%=sqy%+sqx%*g%
��inx%>63:inx%=63
��inx%<>lst% �
Ȗ
�small(lst%,11)
�small(inx%,15)
lst%=inx%
(�
2�-113 k%=� �k%=�
<� but%>0 � k%
Fa$=filename$(lst%)
P�
Z
��current
d� 5
n � 0,8
xȓȐ 384,16,480,64
� � 0,0
�ȓ 384,16,480,64
�
� 0,14
�� 400,60
��"Current player : ";
� � 0,0
�a$=�strip(attend$)
��a$="" �"Empty" ��a$
�� 4
��
��
���access
�符-2 � ��-31:�
ȗ �
� 7
ș"ABC_Colour",15
"+�mess("ENTER OLD ACCESS CODE NUMBER",8)
,
�invis
6�esc%:�back:�
@J%=�validatenumber(i$)
J(�J%:�wrong("NUMBERS ONLY PLEASE"):�
T0�cod%<>�(i$):�wrong("INVALID ACCESS CODE"):�
^+�mess("ENTER NEW ACCESS CODE NUMBER",8)
h
�invis
r�esc%:�back:�
|J%=�validatenumber(i$)
�(�J%:�wrong("NUMBERS ONLY PLEASE"):�
�first%=�(i$)
�%�mess("ENTER AGAIN TO CONFIRM",8)
�
�invis
��esc%:�back:�
�J%=�validatenumber(i$)
�(�J%:�wrong("NUMBERS ONLY PLEASE"):�
�second%=�(i$)
�>�first%<>second%:�wrong("DIFFERENT NUMBERS - TRY AGAIN"):�
�cod%=�i$
�.�mess("NEW ACCESS CODE NUMBER ACCEPTED",8)
�h%=�(f$+"Misc.Grab3")
�
�#h%,cod%
�#h%
�back
�
&
��back
0�sun%<11 sun%=11 �sun%=0
: �menu
D�mouse1
N�
X��wrong(a$)
b� 7
l�mess(a$,11)
v�delay(150)
� �back
��
�ݤvalidatenumber(a$)
�
�a$="":=�
�K%=�
��J%=1� �(a$)
�'�a$,J%,1)<"0" � �a$,J%,1)>"9":K%=�
��
�=K%
���invis
�*FX21 0
�
esc%=�
�
cnt%=0
! i$=""
!�
!�
! �
!*k%=�(1)
!4�-113:esc%=�
!>� k%>0 � k%<128 � esc%
!H�k%=127 � cnt%>0 �
!Rcnt%-=1
!\i$=�i$,cnt%)
!f!�mess(">"+ĩ(i$),"*")+"<",10)
!p�
!z� k%<>127 � esc%
!��k%<>13 � cnt%<>4 �
!�i$+=�k%
!�!�mess(">"+ĩ(i$),"*")+"<",10)
!�cnt%+=1
!��
!�� k%=13 � cnt%=4 � esc%
!��
!���legal
!��cod%=0:bad%=�:esc%=�:�
!�ȗ �
!�ș"ABC_Colour",15
!�(�mess("ENTER ACCESS CODE NUMBER",11)
!�
�frput
"�cod%=�(i$) �
"*�mess("ACCESS CODE NUMBER ACCEPTED",8)
"�delay(100)
"$
bad%=�
".�
"8
bad%=�
"B�
"L�mouse1
"V�
"`��frput
"j*FX21 0
"t
esc%=�
"~
cnt%=0
"�
tot%=4
"� i$=""
"��
"��
"��
"�k%=�(1)
"��-113:esc%=�
"�#� k%=13 � k%>31 � k%<128 � esc%
"��k%=127 � cnt%>0 �
"�cnt%-=1
"�i$=�i$,cnt%)
"� �mess(">"+ĩ(i$),"*")+"<",8)
# �
#
� k%<>127 � esc%
#�k%<>13 � cnt%<>tot% �
#
�cnt%=0 �
#(2�(k%)>="a" � �(k%)<="z" i$=�(k%-32) �i$=�(k%)
#2�
#<4�(k%)>="A" � �(k%)<="Z" i$+=�(k%+32) �i$+=�(k%)
#F�
#P �mess(">"+ĩ(i$),"*")+"<",8)
#Zcnt%+=1
#d�
#n� k%=13 � esc% � cnt%=tot%
#x�
#���point(a$,mos%)
#�� wir%,par%,dat%
#� � wir% 1088,par% 20,dat% 256
#�h%=�(f$+"Misc."+a$)
#��J%=0�32
#��K%=0�32
#�wir%?(K%*32+J%)=�#h%
#��
#��
#��#h%
#�!par%=&20080200
#�par%?1=mos%
#�par%!4=0
$par%!6=dat%
$
mmo%=dat%
$�J%=32�1��
$"�K%=0�7
$,
�L%=3�0��
$6val%=wir%?(J%*32+K%*4+L%)
$@0�val%=&FF:par%?4=K%*4+L%:par%?5=31-J%:val%=0
$J?mmo%=?mmo%<<2
$T?mmo%+=val%
$^�
$hmmo%+=1
$r�
$|�
$�ș"OS_Word",21,par%
$��
$�
��desktop
$�ȗ �
$�ș"ABC_Blank",11
$��exitmessage
$�!�mess("Return to Desktop?",8)
$�ș"ABC_Palette"
$��mouse1
$�k%=�yesno(44)
$�ș"ABC_Colour",15
$�sun%=10
$�
�k%:�
% *FX20
%"*CHANNELVOICE 1 WaveSynth-Beep
%"*CHANNELVOICE 2 WaveSynth-Beep
%&"*CHANNELVOICE 3 WaveSynth-Beep
%0"*CHANNELVOICE 4 WaveSynth-Beep
%:*WIPE ram:* ~C~V
%D*RMKILL ABC
%N*RMKILL Cymbal
%X*RMKILL Danger
%b*RMKILL Death
%l*RMKILL End
%v*RMKILL Hook
%�*RMKILL Laugh
%�*RMKILL Skid
%�*RMKILL Steam
%�*RMKILL Synsmajs
%�*RMKILL Timer
%�*RMKILL 10/10SoundGenerator
%�*POINTER 1
%�*SPEAKER ON
%�*FX200 0
%�� 20
%�*DESKTOP
%���wings(l$,x%,y%)
%�#ș"ABC_Sprite",b%,"wings",x%,y%
&� 5
&
� 0,11
& � (x%*2+298)-�(l$)*8,y%*4-40
& �l$
&*� 4
&4�
&>�
&H��select
&R6笤area(80,18,336,840) � ��area(912,18,1168,840) �
&\pre%=-1
&fsly%=-1
&p�rectangles
&z�
&�sly%=(moy%-18)�280
&�#�area(912,18,1168,840):sly%+=3
&��sly%<>pre% �
&��rectangles
&�
pre%=sly%
&�
� 0,11
&�Ȗ
&�E�sly%<3 ȓ 80,sly%*280+16,256,256 �ȓ 912,(sly%-3)*280+16,256,256
&��
&��
&�
�but%=0:�
&�
Ȏ sly% �
&�� 0:�run("ChainUp")
'� 1:�run("Processor")
'� 2:�run("Graphoid")
'� 3:�run("RibTickler")
'$� 4:�run("TurboRaft")
'.� 5:�run("HookIt")
'8�
'B�
'Lȗ mox%,moy%,but%
'V� but%=0
'`�sly%>-1:�menu
'j�mouse1
't�
'~��contents
'�� 5
'��J%=1�3
'�-ș"ABC_UnpackSprite",J%-1,z%,48,274-J%*70
'�.ș"ABC_UnpackSprite",J%+2,z%,464,274-J%*70
'��
'�
� �Ddh
'��J%=1�3
'�� a$,b$
'� � 0,7
'�� 96,J%*280-232
'��a$
'�� 928,J%*280-232
( �b$
(
� 0,0
(� 102,J%*280-228
(�a$
((� 934,J%*280-228
(2�b$
(<�
(F� 4
(P�
(Z�
(dA� Chain Up,Rib Tickler,Processor,Turbo Raft,Graphoid,Hook It!
(n��rectangles
(x � 0,0
(��J%=1�3
(�ȓ 80,J%*280-264,256,256
(�ȓ 912,J%*280-264,256,256
(��
(��
(���achievediscdump
(�符-2:�
(�符-82:�
(�� 7
(�ȗ �
(�� �
(� ș"ABC_Transfer",0,16,640,17
(�)�input(32,"adfs::0.$.AchieveSpr",�,�)
)ș"ABC_Restore"
)�esc% � i$="":�
)� 24,0;192;1278;960;
)"ș"Hourglass_On"
),�"SCREENSAVE "+i$
)6� 26
)@ș"Hourglass_Smash"
)JP� � �:� 7:�mess("PLEASE INSERT DISC INTO DRIVE AND PRESS RETURN",8):�:� �-74
)T*DIR <Disc2$Dir>.SixGames
)^ș"ABC_Restore"
)hȗ � 640,512
)r�mouse1
)|�
)���achieveprintdump
)�符-2:�
)�符-56:�
)��7
)�ș"Hourglass_On"
)�
� �tVE
)�new%()=att%()
)��printpage(attend$)
)�
�flush
)�ș"Hourglass_Smash"
)��mouse1
)��
)���allachieveprintdump
*符-2:�
*
符-102:�
*� 7
*&ș"Hourglass_On"
*0�displaydirectory
*:
�flush
*Dș"Hourglass_Smash"
*N�mouse1
*Xfiles%()=�
*b
lst%=0
*l�
*vȗ mox%,moy%,but%
*�sqx%=(mox%-128)>>8
*��sqx%>3:sqx%=3
*��sqx%<0:sqx%=0
*�sqy%=(1024-moy%)>>6
*��sqy%>15:sqy%=15
*�inx%=sqy%+sqx%*g%
*��inx%>63:inx%=63
*��inx%<>lst% �
*�2�files%(lst%) �small(lst%,14) ��small(lst%,11)
*�2�files%(inx%) �small(inx%,14) ��small(inx%,15)
*�
lst%=inx%
*��
*�"�but%=1 � filename$(lst%)>"" �
+files%(lst%)=�files%(lst%)
+2�files%(lst%) �small(lst%,14) ��small(lst%,11)
+�
+ ȗ mox%,moy%,but%
+*� but%=0
+4�
+>�-113 k%=� �k%=�
+H� but%=4 � k%
+Ra$=filename$(lst%)
+\
�k% �
+fș"Hourglass_On"
+pș"ABC_Colour",15
+zX%=0
+�
esc%=�
+�ȕ X%<64 � �esc%
+��files%(X%) �
+�Jh%=�("<Disc2$Dir>.SixGames.Achieve.Achieve"+�(cla%)+"."+filename$(X%))
+��J%=1�10
+��K%=1�6
+��#h%,new%(K%,J%)
+��
+��
+��#h%
+��printpage(filename$(X%))
+��
+� X%+=1
,�
,ș"Hourglass_Smash"
,�
,$�achievecard
,.�
,8ȗ mox%,moy%,but%
,B� but%=0
,L�
,V��printpage(name$)
,`*FX200 0
,j� �
,t%� � �:� 6,3,7:�"FX200 1":esc%=�:�
,~
� 2,21
,��header
,�a$=�strip(name$)
,��a$="":a$="Empty"
,�'�printer("The achievements of "+a$)
,�D�printer("playing the 10 out of 10 Mathematics (Algebra) games")
,��printer("")
,��printer(�date)
,��printer("")
,�
� �Ttp
,�:�printer(typ$+" Covering"+�53," ")+"Achievement")
,��printer("")
,��printer("GRAPHOID")
- �gamedetails(1)
-
�printer("PROCESSOR")
-�gamedetails(2)
-�printer("CHAIN UP")
-(�gamedetails(3)
-2�printer("HOOK IT!")
-<�gamedetails(4)
-F�printer("TURBO RAFT")
-P�gamedetails(5)
-Z�printer("RIB TICKLER")
-d�gamedetails(6)
-n+�printer("KEY TO ACHIEVEMENT COLOURS:")
-x�printer("")
-�.�printer("BLUE = 100% (10 times GREEN)")
-�-�printer("GREEN = 100% (10 out of 10!)")
-�$�printer("YELLOW = 50% or over")
-�"�printer("RED = Under 50%")
-�;�printer("- = means the grade has not been tried")
-�ȕ pnt%<pap%
-��
-�pnt%+=1
-��
-��footer
-� � 6,3
-�*FX200 1
-��
.��gamedetails(num%)
.�J%=1�6
.� K%
."b$=info$(num%,K%)
.,�nig% �
.6 a$=b$
.@!�a$,"�")>0:�a$,�a$,"�"))="1"
.J!�a$,"�")>0:�a$,�a$,"�"))="2"
.T!�a$,"�")>0:�a$,�a$,"�"))="3"
.^�
.ha$=�b$,�b$,")")+2)
.r�
.|a$=�(J%)+" "+a$
.�a$+=�72-�(a$)," ")
.�Ȏ new%(num%,K%) �
.�� 0:a$+="-"
.�� 1:a$+="RED"
.�� 2:a$+="YELLOW"
.�%� 3,4,5,6,7,8,9,10,11:a$+="GREEN"
.�:a$+="BLUE"
.��
.��printer(a$)
.��
.��printer("")
.��
.���header
/
pnt%=0
/
�hed%=0:�
/�W%=1� hed%
/&�
/0�
/:�
/D��footer
/N
�fut%=0:�
/X�W%=1� fut%
/b�
/l�
/v�
/���printer(j$)
/��j$
/�pnt%+=1
/��pnt%=pap% �
/��footer
/��header
/��
/��
/�
ݤdate
/�
� �T`p
/�
fnd%=�
/�ȕ �fnd%
/�� ab$,n$
0科$,ab$):fnd%=�
0�
0#="Date: "+��$,5,3)+n$+��$,11,5)
0 G� Jan,January,Feb,February,Mar,March,Apr,April,May,May,Jun,June,Jul
0*I� July,Aug,August,Sep,September,Oct,October,Nov,November,Dec,December
04� 10,4,5,7,8,9
0>� 1,10,6,3,7,8
0H� 10,6,4,3,9,5
0R� 2,1,10,6,3,9
0\� 1,6,10,9,3,2
0f� 1,10,9,2,8,7
0p��flush
0z*FX21 9
0��
0�ݤstrip(str$)
0�ȕ �str$,"_")>0
0��str$,�str$,"_"))=" "
0��
0� =str$
0���input(tot%,x$,cap%,fil%)
0�*FX21 0
0�
esc%=�
0�cnt%=�(x$)
0� i$=x$
0�"�fil% y$="filename: >" �y$=">"
0��mess(y$+i$+"<",8)
1�
1�
1�
1$k%=�(1)
1.�-113:esc%=�
18#� k%=13 � k%>31 � k%<128 � esc%
1B�k%=127 � cnt%>0 �
1Lcnt%-=1
1Vi$=�i$,cnt%)
1`�mess(y$+i$+"<",8)
1j�
1t� k%<>127 � esc%
1~�k%<>13 � cnt%<>tot% �
1��cap% �
1�
�cnt%=0 �
1�2�(k%)>="a" � �(k%)<="z" i$=�(k%-32) �i$=�(k%)
1��
1�4�(k%)>="A" � �(k%)<="Z" i$+=�(k%+32) �i$+=�(k%)
1��
1��
1�
i$+=�(k%)
1��
1��mess(y$+i$+"<",8)
1�cnt%+=1
1��
2 �k%<>13 � cnt%=tot%:�7
2
� k%=13 � esc%
2�
2��exitmessage
2(ș"ABC_Colour",11
22
� �tVr
2<� a$
2F
Y%=240
2Pȕ a$<>"end"
2Z$ș"ABC_PryntString",a$,34,Y%,1,7
2d&ș"ABC_PryntString",a$,32,Y%+1,1,0
2n�a$>"" Y%-=18 �Y%-=12
2x� a$
2��
2��
2�#� Also available or coming soon
2�,� "for Acorn 32-bit, IBM PC/compatibles"
2�� and Commodore Amiga ...
2��
2�� English French
2� � German Spanish
2� � Italian Science
2�(� Maths (Number) Maths (Algebra)
2�*� Early Essentials Junior Essentials
2��
2�� Contact your dealer or
3$� ring (0742) 780370 for details
3 � end
3ݤinitialcompressed(s$)
3"h%=�(f$+s$)
3,
len%=�#h%
36�#h%
3@
� z% len%
3J�"LOAD "+f$+s$+" "+�~(z%)
3T=z%
3^��configure
3h符-2 � ��-1 � � �-83:�
3rȗ �
3|ș"ABC_Blank",3
3�ș"ABC_Colour",3
3��validdirectories
3�#ș"ABC_Sprite",b%,"bar",180,242
3�#ș"ABC_Sprite",b%,"exit",454,18
3�� 11
3� � 130
3�'�25,2)"10 out of 10 CUSTOMISATION"
3�� 7
3�
old%=cla%
3�
� �D`{
3�� a$,K%
3�J%=0
3�ȕ a$<>"end"
4)ș"ABC_Sprite",b%,"bar",180,210-J%*16
4�25,J%*2+6)a$
4�K%=-1 �
4&.ș"ABC_Sprite",b%,"arrow_up",482,210-J%*16
400ș"ABC_Sprite",b%,"arrow_down",510,210-J%*16
4:�
4DQ�K%=-2 ș"ABC_Sprite",b%,"default",454,210-J%*16 ��buttonstatus(J%,210-J%*16)
4N J%+=1
4X� a$,K%
4b�
4lș"ABC_Palette"
4vȗ ȓ 904,32,160,810
4��mouse1
4�
end%=�
4�ȕ �end%
4��
4�ȗ mox%,moy%,but%
4�� but%>0
4�$�but%=4 � �mox%,moy%)<>3:�action
4��
4��savenewconfigure
4��old%<>cla%:�setempty
4��sun%<11 sun%=11 �sun%=0
4� �menu
4��
5��action
5noy%=(842-moy%)>>6
5nox%=(mox%-906)�56
5
Ȏ noy% �
5*� 0
54rat%=�rat%
5>#�buttonstatus(noy%,210-noy%*16)
5H� 7
5R� 1
5\�ver% �
5fnig%=�nig%
5p#�buttonstatus(noy%,210-noy%*16)
5z� 7
5��
5�� 2
5�sds%=�sds%
5�#�buttonstatus(noy%,210-noy%*16)
5�'�sds% �"SPEAKER ON" ��"SPEAKER OFF"
5�� 7
5�� 3
5��ver% �
5�
ver%=�
5�
nig%=�
5�(�buttonstatus(noy%-2,210-noy%*16+32)
5�#�buttonstatus(noy%,210-noy%*16)
5�(�buttonstatus(noy%+1,210-noy%*16-16)
6� 7
6�
6� 4
6$�ver% �
6.
ver%=�
68
nig%=�
6B(�buttonstatus(noy%-3,210-noy%*16+48)
6L#�buttonstatus(noy%,210-noy%*16)
6V(�buttonstatus(noy%-1,210-noy%*16+16)
6`� 7
6j�
6t� 5
6~
�nox%=1 �
6�grd%+=1
6��grd%=7:grd%=1
6�#�buttonstatus(noy%,210-noy%*16)
6�� 7
6��
6�
�nox%=2 �
6�grd%-=1
6��grd%=0:grd%=6
6�#�buttonstatus(noy%,210-noy%*16)
6�� 7
6��
6�� 6
7
�nox%=1 �
7
cla%+=1
7�cla%=65:cla%=1
7#�buttonstatus(noy%,210-noy%*16)
7(� 7
72�
7<
�nox%=2 �
7Fcla%-=1
7P�cla%=0:cla%=64
7Z#�buttonstatus(noy%,210-noy%*16)
7d� 7
7n�
7x� 7
7�
�nox%=1 �
7�hed%+=1
7��hed%=8:hed%=0
7�#�buttonstatus(noy%,210-noy%*16)
7�� 7
7��
7�
�nox%=2 �
7�hed%-=1
7��hed%<0:hed%=7
7�#�buttonstatus(noy%,210-noy%*16)
7�� 7
7��
7�� 8
8
�nox%=1 �
8fut%+=1
8�fut%=8:fut%=0
8"#�buttonstatus(noy%,210-noy%*16)
8,� 7
86�
8@
�nox%=2 �
8Jfut%-=1
8T�fut%<0:fut%=7
8^#�buttonstatus(noy%,210-noy%*16)
8h� 7
8r�
8|� 9
8�
�nox%=1 �
8�pap%+=1
8��pap%=81:pap%=16
8�#�buttonstatus(noy%,210-noy%*16)
8�� 7
8��
8�
�nox%=2 �
8�pap%-=1
8��pap%=15:pap%=80
8�#�buttonstatus(noy%,210-noy%*16)
8�� 7
8��
8�� 10
9pix%+=1
9�pix%=4:pix%=0
9#�buttonstatus(noy%,210-noy%*16)
9&� 7
90� 11
9:ș"ABC_Blank",3
9D*SPEAKER ON
9N� 7
9X
rat%=�
9b
nig%=�
9l
sds%=�
9v
ver%=�
9�
grd%=1
9�
cla%=1
9�
hed%=1
9�
fut%=1
9�pap%=64
9�
pix%=0
9��J%=0�10
9��buttonstatus(J%,210-J%*16)
9��
9�ș"ABC_Palette"
9�� 12:end%=�
9��
9��
:ȗ mox%,moy%,but%
:� but%=0
:�
: ��savenewconfigure
:*ȗ �
:4ș"ABC_Blank",3
:>ș"ABC_Colour",3
:H'�directory%(cla%):�createdirectory
:R7�"DIR <Disc2$Dir>.SixGames.Achieve.Achieve"+�(cla%)
:\$�ver% typ$="Grade" �typ$="Level"
:fh%=�(f$+"Configure")
:p?�#h%,rat%,nig%,sds%,ver%,grd%,cla%,typ$,hed%,fut%,pap%,pix%
:z�#h%
:�*DIR <Disc2$Dir>.SixGames
:��
:���buttonstatus(num%,ysc%)
:�yyy%=ysc%-2
:�Ȗ
:�_�num%=3 � num%=4 ș"ABC_Sprite",b%,"radiooff",454,ysc% �ș"ABC_Sprite",b%,"optoff",454,ysc%
:�
Ȏ num% �
:�0� 0:�rat%:ș"ABC_Sprite",b%,"opton",454,ysc%
:�0� 1:�nig%:ș"ABC_Sprite",b%,"opton",454,ysc%
:�0� 2:�sds%:ș"ABC_Sprite",b%,"opton",454,ysc%
:�3� 3:�ver%:ș"ABC_Sprite",b%,"radioon",454,ysc%
:�2� 4:�ver%:ș"ABC_Sprite",b%,"radioon",454,ysc%
:�0� 5:ș"ABC_PryntString",�(grd%),462,yyy%,0,9
;� 6
;&�directory%(cla%) cul%=13 �cul%=11
;d�cla%>9 ș"ABC_PryntString",�(cla%),458,yyy%,0,cul% �ș"ABC_PryntString",�(cla%),462,yyy%,0,cul%
;$1� 7:ș"ABC_PryntString",�(hed%),462,yyy%,0,11
;.1� 8:ș"ABC_PryntString",�(fut%),462,yyy%,0,11
;81� 9:ș"ABC_PryntString",�(pap%),458,yyy%,0,11
;B`� 10:�pix%=0 ș"ABC_PryntString","A",462,yyy%,0,11 �ș"ABC_PryntString",�(pix%),462,yyy%,0,6
;L�
;V�
;`H� Ratings suppressed,0,National curriculum numbers,0,Sound,0,Level,0
;j;� Grade,0,Overall skill,-1,Class number,-1,Top space,-1
;tE� Bottom space,-1,Paper length,-1,Graphics selection,0,Default,-2
;~� end,0
;���validdirectories
;�'�"DIR <Disc2$Dir>.SixGames.Achieve"
;�%ș"OS_GBPB",8,,cat%,&40,0 � ,,,d%
;�*DIR <Disc2$Dir>.SixGames
;�c%=0
;�d%=64-d%
;�st%=cat%
;�directory%()=�
;�ȕ c%<d%
;�t%=st%?((?st%)+1)
;�st%?((?st%)+1)=&D
;�a$=$(st%+1)
<