110 REMark  +-----------------------+
120 REMark  |  I L L U M I N A T I  |
130 REMark  +-----------------------+
140 REMark  |   by J. R. Waterman   |
150 REMark  |    16K ZX81 - 2020    |
160 REMark  |  16K Spectrum - 2021  |
170 REMark  +-----------------------+
180 REMark  |    THIS QL EDITION    |
190 REMark  |   11-18 April  2022   |
200 REMark  +-----------------------+
210 REMark  |    Use the TV mode    |
220 REMark  |   for  best results   |
230 REMark  +-----------------------+
240 :
900 mcs=RESPR(1024)
910 LBYTES mdv1_ilv20_bin,mcs
1000 tv: WINDOW #1,448,202,32,14
1010 PAPER 0: INK 7: BORDER 1,7: SCALE 200,0,0: CLS
1014 :
1015 REMark ************ INITIAL JUNK
1016 :
1020 logo1: intro1: qcont: qclear
1030 logo2: intro2
1040 REPeat inqloop1
1050   inq$=INKEY$(-1)
1060   IF NOT (inq$="I" OR inq$="i") THEN ftone: EXIT inqloop1
1070   ftone: instructions: EXIT inqloop1
1080 END REPeat inqloop1
1084 :
1085 REMark **** BACKGROUND VARIABLES
1086 :
1090 z$="0123456789ABCDEF"
1100 DIM ca%(9,2): RESTORE 1120
1110 FOR n1=0 TO 9: FOR n2=0 TO 2: READ ca%(n1,n2): END FOR n2: END FOR n1
1120 DATA 0,1,5,1,2,6,2,3,7,3,4,8,5,6,9,6,7,10,7,8,11,9,10,12,10,11,13,12,13,14
1130 pyramid_windows
1140 REPeat hugeloop
1144 :
1145 REMark ************ DRAW PYRAMID
1146 :
1150 CLS: CLS #0: pyramid
1154 :
1155 REMark ****** LET'S GO, BRANDON!
1156 :
1160 sc%=16
1190 REPeat gameloop
1194 :
1195 REMark *** GAME CYCLES FROM HERE
1196 :
1200 PAUSE 25: clear_pyramid: score_fuse
1204 :
1205 REMark ** CHOOSE EVIL EYE TARGET
1206 :
1210 t1=RND(7)+9: t2=2+2*RND(7): t$=z$(t1)&z$(t2): PRINT #18,t$
1220 DIM p$(14,2): p$(0)="BC": p$(4)="AD"
1230 PAUSE 15: rtone: PRINT #3,p$(0): rtone: PRINT #7,p$(4)
1234 :
1235 REMark ******** INPUT HEX VALUES
1236 :
1240 FOR n=1 TO 3
1250   q$=""
1260   SELect ON n
1270     =1: q$="LEFT"
1280     =2: q$="MIDDLE"
1290     =3: q$="RIGHT"
1300   END SELect 
1310   REPeat inqloop2
1320     CLS #0: AT #0,1,6-(n=2): PRINT #0,"INPUT ";q$;" HEX VALUE: ";
1330     INPUT #0,inq$
1340     IF check_input=1 THEN EXIT inqloop2
1350     INK #0,2: CLS #0: crash: AT #0,1,11: PRINT #0,"YOU BRAINLET...": PAUSE 100
1360     CLS #0: crash: CURSOR #0,102,10: PRINT #0,"DO NOT MAKE MISTAKES": PAUSE 100
1370     CLS #0: crash: AT #0,1,10: PRINT #0,"THIS IS IMPORTANT": PAUSE 100: INK #0,7
1380   END REPeat inqloop2
1390   p$(n)=inq$: ftone: PRINT #(n+3),p$(n)
1400 END FOR n
1404 :
1405 REMark ******* BUILD THE PYRAMID
1406 :
1410 CLS #0: INK #0,4: CURSOR #0,138,10: PRINT #0,"CALCULATING...": INK #0,7
1420 FOR n=0 TO 9
1430   p$(ca%(n,2))=illuminati$(p$(ca%(n,0)),p$(ca%(n,1)))
1440   rtone: PRINT #(ca%(n,2)+3),p$(ca%(n,2))
1450 END FOR n
1460 CLS #0
1464 :
1465 REMark *********** DID THAT HIT?
1466 :
1470 PAUSE 15: sc%=sc%-1: BLOCK 12,5,432,185-10*sc%,7
1480 IF p$(14)=t$ THEN EXIT gameloop
1490 IF sc%=0 THEN EXIT gameloop
1500 CLS #0: crash: CURSOR #0,126,10: PRINT #0,"NOT THIS TIME...": PAUSE 100: qcont
1600 END REPeat gameloop
1610 IF p$(14)=t$ THEN a_winner_is_you
1620 IF sc%=0 THEN you_fail_it
1630 REPeat inqloop3
1640   CLS #0: AT #0,1,11: PRINT #0,"ANOTHER GAME? ";: INPUT #0,inq$
1650   inq$=inq$(1)
1660   IF inq$ INSTR "YyNn" THEN EXIT inqloop3
1670 END REPeat inqloop3
1680 rtone
1690 IF inq$ INSTR "Nn" THEN EXIT hugeloop
1700 END REPeat hugeloop
1710 FOR n=3 TO 18: CLOSE #n: END FOR n
1999 STOP
2000 REMark ========================
2001 DEFine PROCedure bk(wd%,ht%,xp%,yp%,i%)
2002 REMark ========================
2006 REMark q%=how many pixels to TAB right (multiple of 6, preferably 12)
2007 REMark imagine wd%,ht%,xp%,yp% as being on the ZX81 PLOT grid measured from top left
2010 q%=30
2020 BLOCK wd%*6,ht%*5,q%+xp%*6,yp%*5,i%
2030 END DEFine bk
2100 REMark ========================
2101 DEFine PROCedure qcont
2102 REMark ========================
2110 AT #0,1,6: PRINT #0,"PRESS ANY KEY TO CONTINUE"
2120 PAUSE: ftone: CLS #0
2130 END DEFine qcont
2150 REMark ========================
2151 DEFine PROCedure qclear
2152 REMark ========================
2155 LOCal n
2160 FOR n=9 TO 19
2170   AT n,0: PRINT FILL$(" ",37)
2180 END FOR n
2190 END DEFine qclear
2200 REMark ========================
2201 DEFine PROCedure score_fuse
2202 REMark ========================
2205 LOCal n
2210 BLOCK 12,180,432,20,7
2220 FOR n=1 TO sc%
2230   BEEP 1000,16-n
2240   BLOCK 12,5,432,195-10*n,211
2250 END FOR n
2290 END DEFine score_fuse
2300 REMark ========================
2301 DEFine FuNction check_input
2302 REMark ========================
2305 LOCal n,q%
2310 IF LEN(inq$)<>2 THEN RETurn 0
2320 FOR n=1 TO 2
2330   q%=CODE(inq$(n))
2340   IF q%>=97 AND q%<=102 THEN q%=q%-32: inq$(n)=CHR$(q%)
2350   IF q%<48 OR (q%>57 AND q%<65) OR q%>70 THEN RETurn 0
2360 END FOR n
2370 RETurn 1
2390 END DEFine check_input
2400 REMark ========================
2401 DEFine PROCedure rtone
2402 REMark ========================
2405 LOCal n
2410 FOR n=15 TO 3 STEP -1
2420   BEEP 600,n
2430 END FOR n
2490 END DEFine rtone
2500 REMark ========================
2501 DEFine PROCedure ftone
2502 REMark ========================
2505 LOCal n
2510 FOR n=0 TO 12
2520   BEEP 600,n
2530 END FOR n
2590 END DEFine ftone
2600 REMark ========================
2601 DEFine PROCedure crash
2602 REMark ========================
2610 BEEP 15000,6,4,1300,7,0,15,15
2690 END DEFine crash
2700 REMark ========================
2701 DEFine PROCedure zip
2702 REMark ========================
2710 BEEP 1200,6,4,1300,7,0,11,15
2790 END DEFine zip
3000 REMark ========================
3001 DEFine PROCedure pyramid
3002 REMark ========================
3005 LOCal n,r%,c%,x%,y%
3006 REMark r%,c% = row and column of the "B" in "BC" - can be changed if necessary
3010 INK 7
3020 FOR n=0 TO 9
3030   BLOCK 50,1,1.2*n,199-n,7
3040   BLOCK 60,1,384-1.2*n,199-n,7
3050   BLOCK 150,1,1.2*n,9-n,7
3060   BLOCK 160,1,284-1.2*n,9-n,7
3070 END FOR n
3080 BLOCK 12,200,0,0,7: BLOCK 12,200,432,0,7
3090 OVER 1: INK 1
3100 AT 0,30: PRINT "TRIES": AT 1,36: PRINT CHR$(191)
3110 BLOCK 16,1,424,4,1: BLOCK 2,7,438,5,1
3120 INK 7: OVER 0
3130 INK 6
3140 POINT 46,0: FILL 1: LINE TO 162,132 TO 162,0 TO 46,0: FILL 0
3150 POINT 276,0: FILL 1: LINE TO 162,131 TO 162,0 TO 276,0: FILL 0
3160 INK 0
3170 POINT 54,0: FILL 1: LINE TO 162,122 TO 162,0 TO 54,0: FILL 0
3180 POINT 268,0: FILL 1: LINE TO 162,121 TO 162,0 TO 268,0: FILL 0
3190 r%=18: c%=9: x%=12*c%: y%=10*r%
3200 BLOCK 288,4,x%-32,y%+13,6
3210 FOR n=-38 TO 250 STEP 48: BLOCK 6,7,x%+n,y%+13,6: END FOR n
3220 BLOCK 240,4,x%-8,y%-7,6
3230 FOR n=-14 TO 226 STEP 48: BLOCK 6,24,x%+n,y%-7,6: END FOR n
3240 BLOCK 192,4,x%+16,y%-27,6
3250 FOR n=10 TO 202 STEP 48: BLOCK 6,24,x%+n,y%-27,6: END FOR n
3260 BLOCK 144,4,x%+40,y%-47,6
3270 FOR n=34 TO 178 STEP 48: BLOCK 6,24,x%+n,y%-47,6: END FOR n
3280 BLOCK 96,4,x%+64,y%-67,6
3290 FOR n=58 TO 154 STEP 48: BLOCK 6,24,x%+n,y%-67,6: END FOR n
3300 BLOCK 48,4,x%+88,y%-87,6
3310 FOR n=82 TO 130 STEP 48: BLOCK 6,24,x%+n,y%-87,6: END FOR n
3320 INK 6
3330 POINT 110,141: FILL 1: ARC TO 210,141,-.66*PI: LINE TO 110,141: FILL 0
3340 POINT 110,140: FILL 1: ARC TO 210,140,.66*PI: LINE TO 110,140: FILL 0
3350 INK 7
3360 POINT 122,141: FILL 1: ARC TO 198,141,-.64*PI: LINE TO 122,141: FILL 0
3370 POINT 122,140: FILL 1: ARC TO 198,140,.64*PI: LINE TO 122,140: FILL 0
3380 INK 2: POINT 160,141: FILL 1: CIRCLE 160,141,21: FILL 0: POINT 165,120
3390 INK 0: POINT 160,141: FILL 1: CIRCLE 160,141,10: FILL 0
3400 POINT 122,141: ARC TO 198,141,-.64*PI: POINT 122,140: ARC TO 198,140,.64*PI: POINT 198,140
3410 INK 5
3420 zap_l 119,120,225: zap_l 106,135,202.5: zap_l 106,146,157.5: zap_l 119,161,135: zap_l 142,171,112.5
3430 zap_r 201,120,315: POINT 212,109
3440 zap_r 214,135,337.5: zap_r 214,146,22.5: zap_r 201,161,45: zap_r 178,171,67.5
3490 END DEFine pyramid
3500 REMark ========================
3501 DEFine PROCedure pyramid_windows
3502 REMark ========================
3505 LOCal n
3510 FOR n=3 TO 18: OPEN #n,scr: END FOR n
3520 FOR n=0 TO 4: WINDOW #(n+3),24,10,142+48*n,195: END FOR n
3530 FOR n=0 TO 3: WINDOW #(n+8),24,10,166+48*n,175: END FOR n
3540 FOR n=0 TO 2: WINDOW #(n+12),24,10,190+48*n,155: END FOR n
3550 FOR n=0 TO 1: WINDOW #(n+15),24,10,214+48*n,135: END FOR n
3560 WINDOW #17,24,10,238,115
3570 WINDOW #18,24,10,238,70
3590 END DEFine pyramid_windows
3600 REMark ========================
3601 DEFine PROCedure clear_pyramid
3602 REMark ========================
3605 LOCal n
3610 FOR n=3 TO 18: PAPER #n,0: INK #n,7: CLS #n: AT #n,0,0: END FOR n
3620 INK #3,2: INK #7,2: INK #17,4: INK #18,6
3690 END DEFine clear_pyramid
3700 REMark ========================
3701 DEFine PROCedure zap_l(x%,y%,DIR,i%)
3702 REMark ========================
3705 LOCal n
3710 zip
3720 FOR n=0 TO 4
3730   POINT x%,y%: TURNTO DIR: PENDOWN
3740   TURN 3*n: MOVE 19: PENUP
3750   POINT x%,y%: TURNTO DIR: MOVE 32
3760   TURN 180+3*n: PENDOWN: MOVE 18: PENUP
3770 END FOR n
3790 END DEFine zap_l
3800 REMark ========================
3801 DEFine PROCedure zap_r(x%,y%,DIR,i%)
3802 REMark ========================
3805 LOCal n
3810 zip
3820 FOR n=0 TO 4
3830   POINT x%,y%: TURNTO DIR: PENDOWN
3840   TURN -(3*n): MOVE 19: PENUP
3850   POINT x%,y%: TURNTO DIR: MOVE 32
3860   TURN -(180+3*n): PENDOWN: MOVE 18: PENUP
3870 END FOR n
3890 END DEFine zap_l
4000 REMark ========================
4001 DEFine FuNction illuminati$(l$,r$)
4002 REMark ========================
4010 POKE mcs,CODE(l$(1))
4020 POKE mcs+1,CODE(l$(2))
4030 POKE mcs+2,CODE(r$(1))
4040 POKE mcs+3,CODE(r$(2))
4050 CALL mcs+6
4060 RETurn CHR$(PEEK(mcs+4))&CHR$(PEEK(mcs+5))
4190 END DEFine illuminati$
4200 REMark ========================
4201 DEFine FuNction rot13$(x$)
4202 REMark ========================
4205 LOCal n,x%
4210 FOR n=1 TO LEN(x$)
4220   x%=CODE (x$(n))
4230   IF (x%>=65 AND x%<=77) OR (x%>=97 AND x%<=109) THEN x$(n)=CHR$(CODE(x$(n))+13)
4240   IF (x%>=78 AND x%<=90) OR (x%>=110 AND x%<=122) THEN x$(n)=CHR$(CODE(x$(n))-13)
4250 END FOR n
4260 RETurn x$
4290 END DEFine rot13$
4300 REMark ========================
4301 DEFine PROCedure rotprint(x$,ro%)
4302 REMark ========================
4305 LOCal co%
4310 co%=(37-LEN(x$))*6
4320 CURSOR co%,10*ro%: PRINT rot13$(x$)
4390 END DEFine rotprint
5000 REMark ========================
5001 DEFine PROCedure a_winner_is_you
5002 REMark ========================
5010 LOCal n,m,p%,d%
5020 PAPER #17,5: INK #17,3: AT #17,0,0: PRINT #17,p$(14)
5030 BEEP 0,1,1,13,13,13,13
5040 SCALE 100,-80,-70
5050 CURSOR 192,55: STRIP 2: INK 6: PRINT "BANG": INK 2
5060 POINT -0,-1: FILL 1: LINE_R TO -11,-24 TO -6,24: FILL 0
5070 POINT 2,2: FILL 1: LINE_R TO 27,26 TO -9,-26: FILL 0
5080 POINT -5,-1: FILL 1: LINE_R TO 36,-17 TO -10,17: FILL 0
5090 POINT 0,2: FILL 1: LINE_R TO -27,26 TO 8,-26: FILL 0
5100 POINT 9,8: FILL 1: LINE_R TO 30,-10 TO -30,-5 TO 0,15: FILL 0
5110 POINT -8,9: FILL 1: LINE_R TO -33,-9 TO 33,-6 TO 0,15: FILL 0
5120 POINT -7,-2: FILL 1: LINE_R TO 16,-22 TO 2,22: FILL 0
5130 POINT -9,2: FILL 1: LINE_R TO 11,29 TO 9,-29: FILL 0
5140 POINT -7,-2: FILL 1: LINE_R TO -22,-19 TO 9,19: FILL 0
5150 BEEP: SCALE 200,0,0: STRIP 0
5160 RESTORE 5220
5170 FOR n=1 TO 11
5180   READ d%,p%
5190   BEEP 0,p%
5200   FOR m=1 TO d%*20: NEXT m: BEEP
5210 NEXT n
5220 DATA 2,6,1,6,1,6,2,6,1,6,1,6,2,1,2,3,2,1,2,3,2,6
5230 INK 3: rotprint "PBATENGHENGVBA, LBH FHPFRFF!",10
5240 INK 2: rotprint "GUR VYYHZVANGV NER QRFGEBLRQ!",11
5250 INK 6: rotprint "QNIVQ VPXR JBHYQ OR CEBHQ.",12
5260 INK 4: rotprint "HASBEGHANGRYL LBH UNIR NYFB",13
5270 rotprint "QRFGEBLRQ GUR JBEYQ'F GVASBVY",14
5280 rotprint "VAQHFGEL, ORPNHFR VG ERYVRQ BA",15
5290 rotprint "PBAFCVENPL YBBAF ZNXVAT UNGF",16
5300 rotprint "BHG BS VG, NAQ GURER NER ZBER",17
5310 rotprint "BS GURZ GUNA LBH GUVAX...",18
5320 INK 7: sc%=99
5390 END DEFine a_winner_is_you
5400 REMark ========================
5401 DEFine PROCedure you_fail_it
5402 REMark ========================
5410 LOCal n,m,p%,d%
5420 RESTORE 5480
5430 FOR n=1 TO 4
5440   READ d%,p%
5450   BEEP 0,p%
5460   FOR m=1 TO d%*130: NEXT m: BEEP: PAUSE 15
5470 NEXT n
5480 DATA 1,21,1,23,1,25,4,27
5490 INK 2: rotprint "LBH SNVY VG,",12
5500 rotprint "NAQ GUNG ZNXRF ZR",13
5510 rotprint "N FNQ CNAQN.",14
5520 INK 3: rotprint "GUR VYYHZVANGV ENA ENZCNAG",15
5530 rotprint "GUEBHTUBHG GUR JBEYQ, NAQ LBH",16
5540 rotprint "ONERYL ABGVPR NAL QVSSRERAPR.",17
5550 INK 7
5590 END DEFine you_fail_it
9000 REMark ========================
9001 DEFine PROCedure logo1
9002 REMark ========================
9005 LOCal n,i1%,i2%,i3%
9007 REMark all horizontal measures are in multiples of 2 because MODE 8
9008 REMark BLOCK width,height,xpos,ypos,colour
9010 i1%=4: i2%=6: i3%=2
9020 BLOCK 444,10,0,0,229
9030 BLOCK 270,10,0,60,229: BLOCK 90,10,354,60,229
9040 BLOCK 258,10,0,80,229: BLOCK 78,10,366,80,229
9050 bk 2,1,1,4,i1%: bk 3,1,0,6,i1%: bk 2,3,1,7,i1%: bk 3,1,0,10,i1%
9060 bk 2,7,4,4,i1%: bk 2,1,6,10,i1%: bk 1,1,7,9,i1%
9070 bk 2,7,9,4,i1%: bk 2,1,11,10,i1%: bk 1,1,12,9,i1%
9080 bk 1,1,14,6,i1%: bk 2,2,15,6,i1%: bk 2,2,14,8,i1%: bk 3,1,15,10,i1%: bk 1,1,18,9,i1%: bk 2,5,19,6,i1%
9090 bk 1,1,22,6,i1%: bk 2,4,22,7,i1%: bk 1,1,24,6,i1%: bk 1,1,25,8,i1%: bk 5,1,24,7,i1%: bk 2,1,26,6,i1%: bk 2,2,27,8,i1%: bk 2,1,26,10,i1%
9100 bk 2,1,31,4,i1%: bk 3,1,30,6,i1%: bk 2,3,31,7,i1%: bk 3,1,30,10,i1%
9110 bk 2,5,34,6,i1%: bk 1,1,36,7,i1%: bk 3,1,37,6,i1%: bk 2,2,39,7,i1%: bk 2,1,38,9,i1%: bk 4,1,37,10,i1%
9120 FOR n=38 TO 54: bk 2,2,n,ABS(92-2*n),i2%: END FOR n: bk 12,2,41,14,i2%
9130 bk 1,1,43,11,i3%: bk 1,1,44,10,i3%: bk 4,1,45,9,i3%: bk 1,1,49,10,i3%: bk 1,1,50,11,i3%: bk 2,2,46,10,i3%: bk 6,1,44,12,i3%
9140 CURSOR 306,50: OVER 1: PRINT "O": OVER 0
9150 bk 2,1,56,4,i1%: bk 2,1,55,5,i1%: bk 7,1,53,6,i1%: bk 2,3,54,7,i1%: bk 4,1,55,10,i1%: bk 1,1,59,9,i1%
9160 bk 2,1,62,4,i1%: bk 3,1,61,6,i1%: bk 2,3,62,7,i1%: bk 3,1,61,10,i1%
9170 INK i3%: AT 7,5: PRINT "BY J.R. WATERMAN": INK 7
9190 END DEFine logo1
9200 REMark ========================
9201 DEFine PROCedure logo2
9202 REMark ========================
9205 LOCal n,nm%,i%
9210 FOR n=1 TO 4
9220   nm%=n MOD 2: i%=229*(nm%=0)+225*(nm%=1)
9230   zip: PAN 6: BLOCK 6,10,0,0,i%: BLOCK 6,10,0,60,i%: BLOCK 6,10,0,80,i%: PAUSE 10
9240 END FOR n
9250 bk 11,8,-4,3,0
9260 INK 7: FILL 1: CIRCLE 24,165,19.5: FILL 0
9270 INK 0: FILL 1: CIRCLE 24,165,11.5: FILL 0
9280 INK 7: POINT 28,165: FILL 1: LINE_R TO -7,-6 TO 16,-14 TO 7,6 TO -14,14: FILL 0
9290 bk 7,8,5,3,0: BLOCK 12,40,64,15,2: BLOCK 26,8,76,47,2
9295 END DEFine logo2
9300 REMark ========================
9301 DEFine PROCedure intro1
9302 REMark ========================
9310 AT 10,2: PRINT "In the beginning (i.e. 2020), the": INK 2: PRINT "   ZX81";: INK 7: PRINT " original hit the CSSCGC..."
9320 AT 13,0: PRINT "The winter of 2021 saw a ";: INK 2: PRINT "16K";: INK 6: PRINT " Sp";: INK 4: PRINT "ect";: INK 5: PRINT "rum": INK 7: PRINT "  version on ";
9330 INK 2: PRINT "W";: INK 6: PRINT "O";: INK 4: PRINT "O";: INK 5: PRINT "T";: INK 3: PRINT "!";: INK 7: PRINT " Tape Magazine..."
9350 CURSOR 78,160: PRINT "Every dog has its day..."
9360 AT 17,5: PRINT "Today in 2022 is the day..."\"   and the": sinclogo 18,11,2
9370 AT 18,20: STRIP 7: INK 2: PRINT "Q";: STRIP 2: INK 7: PRINT "L";: STRIP 0: PRINT " is the dog!"
9390 END DEFine intro1
9400 REMark ========================
9401 DEFine PROCedure intro2
9402 REMark ========================
9410 CURSOR 30,110: PRINT "A ludicrously over-polished game"\"  for an equally ludicrous concept,     conceived in the most ludicrous"
9420 CURSOR 30,140: PRINT "year... now on a computer with a"\TO 6;"ludicrous storage system!"
9430 CURSOR 42,170: STRIP 6: INK 0: PRINT "IS THE TRUTH REALLY OUT THERE?": STRIP 0: INK 7
9440 CURSOR #0,78,10: INK #0,7: PRINT #0,"PRESS ";: STRIP #0,2: PRINT #0,"I";: STRIP #0,0: PRINT #0," FOR INSTRUCTIONS"
9450 CURSOR #0,18,20: PRINT #0,"OR ANYTHING ELSE TO GET STARTED..."
9490 END DEFine intro2
9500 REMark ========================
9501 DEFine PROCedure instructions
9502 REMark ========================
9510 CLS #0: qclear: AT 12,2: PRINT "The ";: STRIP 6: INK 0: PRINT "ILLUMINATI";: STRIP 0: INK 7: PRINT " are trying to take"\"   control of the world, and it is": CURSOR 90,140: PRINT "your job to stop them.": AT 16,6: INK 2: PRINT "(Well, imagine my shock!)": INK 7: qcont
9520 qclear: CURSOR 30,110: PRINT "You will be asked to input ";: INK 3: PRINT "three"\"  hex codes";: INK 7: PRINT " which will be placed in": CURSOR 42,130: PRINT "the cells at the bottom of the": CURSOR 30,140: STRIP 6: INK 0: PRINT "ILLUMINATI";: STRIP 0: INK 7: PRINT "'s pyramid. These will": CURSOR 30,150: PRINT "propagate up the pyramid in line": CURSOR 30,160: PRINT "with the ";: STRIP 6: INK 0: PRINT "ILLUMINATI";: STRIP 0: INK 7: PRINT"'s top-secret": CURSOR 102,170: PRINT "calculation formula.": qcont
9530 qclear: AT 10,2: PRINT "If the ";: INK 3: PRINT "hex code";: INK 7: PRINT " at the top of the"\"  pyramid matches the one above the": CURSOR 54,120: INK 2: PRINT "Evil Eye";: INK 7: PRINT ", a big bomb will be ": CURSOR 18,130: PRINT "detonated (or something like that,"\"   anyway) and the ";: STRIP 6: INK 0: PRINT "ILLUMINATI";: STRIP 0: INK 7: PRINT " will"\TO 12;"be destroyed.": CURSOR 42,170: INK 2: PRINT "(I did say this was ludicrous,": CURSOR 162,180: PRINT "didn't I?)": INK 7: qcont
9540 qclear: AT 11,1: PRINT "There will appear to be no logic to"\" the ";: STRIP 6: INK 0: PRINT "ILLUMINATI";: STRIP 0: INK 7: PRINT "'s calculations - but": CURSOR 42,130: PRINT "there is, and I should know...": INK 5: PRINT TO 13;"I wrote it.": INK 7: AT 16,6: PRINT "To find out how it works,": INK 6: PRINT TO 4;"disassemble the machine code.": INK 7: qcont
9550 qclear: CURSOR 18,110: PRINT "There are ";: INK 4: PRINT "64 possible results";: INK 7: PRINT " from": CURSOR 30,120: PRINT "the calculations, and you get ";: INK 5: PRINT "16": CURSOR 18,130: PRINT "attempts";: INK 7: PRINT ", so you have a ";: INK 3: PRINT "25% chance": INK 7: CURSOR 30,140: PRINT "of stopping the ";: STRIP 6: INK 0: PRINT "ILLUMINATI";: STRIP 0: INK 7: PRINT "... in": CURSOR 102,150: PRINT "this game, at least.": INK 2: AT 17,8: PRINT "Less so in real life.": INK 7: qcont
9560 qclear: AT 0,0: CSIZE 2,1: AT 5,11: STRIP 1: INK 6: PRINT "IMPORTANT NOTE:": STRIP 0: AT 0,0: CSIZE 2,0: CURSOR 78,130: PRINT "NO ";: INK 4: PRINT "FROGS";: INK 6: PRINT " WERE TURNED ";: INK 3: PRINT "GAY": INK 6: PRINT "  BY PUTTING ";: INK 2: PRINT "CHEMICALS";: INK 6: PRINT " IN THE ";: INK 5: PRINT "WATER": INK 6: PRINT TO 9;"DURING PROGRAMMING.": INK 7: CURSOR 54,170: PRINT "You can pipe down now, Alex."
9570 AT #0,1,4: PRINT #0,"PRESS ANY KEY TO GET CRACKING": PAUSE: ftone: CLS #0
9590 END DEFine instructions
9800 REMark ========================
9801 DEFine PROCedure sinclogo(ro%,co%,i%)
9802 REMark ========================
9805 LOCal x%,y%
9810 y%=3+10*ro%: x%=12*co%
9815 REMark logo is 9 spaces wide but doesn't need a space afterwards
9820 BLOCK 16,1,x%,y%,i%: BLOCK 2,1,x%,y%+1,i%: BLOCK 16,1,x%,y%+2,i%: BLOCK 2,1,x%+14,y%+3,i%: BLOCK 16,1,x%,y%+4,i%
9830 BLOCK 2,5,x%+18,y%,i%: BLOCK 2,1,x%+18,y%-2,i%: BLOCK 2,5,x%+22,y%,i%: BLOCK 12,1,x%+24,y%,i%: BLOCK 2,5,x%+36,y%,i%
9840 BLOCK 16,1,x%+40,y%,i%: BLOCK 2,3,x%+40,y%+1,i%: BLOCK 16,1,x%+40,y%+4,i%: BLOCK 2,7,x%+58,y%-2,i%
9850 BLOCK 16,1,x%+62,y%,i%: BLOCK 2,1,x%+76,y%+1,i%: BLOCK 16,1,x%+62,y%+2,i%: BLOCK 2,1,x%+62,y%+3,i%: BLOCK 2,1,x%+76,y%+3,i%: BLOCK 16,1,x%+62,y%+4,i%
9860 BLOCK 2,5,x%+80,y%,i%: BLOCK 2,1,x%+80,y%-2,i%: BLOCK 16,1,x%+84,y%,i%: BLOCK 2,4,x%+84,y%+1,i%
9890 END DEFine sinclogo
10000 REMark ========================
10001 DEFine PROCedure mon
10002 REMark ========================
10003 REMark Standard monitor screen
10010 MODE 4
10020 WINDOW #2,256,202,0,0
10030 BORDER #2,1,255: PAPER #2,7: INK #2,2
10040 WINDOW #1,256,202,256,0
10050 BORDER #1,1,255: PAPER #1,2: INK #1,7
10060 WINDOW #0,512,54,0,202
10070 PAPER #0,0: INK #0,4
10080 CLS #0: CLS #1: CLS #2
10090 END DEFine mon
11000 REMark ========================
11001 DEFine PROCedure tv
11002 REMark ========================
11003 REMark Standard TV screen
11005 MODE 8
11010 WINDOW #0,512,256,0,0
11015 PAPER #0,0: CLS #0
11020 WINDOW #2,448,200,32,16
11030 PAPER #2,1: INK #2,7
11040 WINDOW #1,448,200,32,16
11050 PAPER #1,2: INK #1,7
11060 WINDOW #0,448,40,32,216
11070 PAPER #0,0: INK #0,7
11080 CLS #0: CLS #1: CLS #2
11090 END DEFine tv
