1 CALL CLEAR :: FOR F=1 TO 26 :: CALL CHARPAT(F+64,A$) :: CALL CHAR(96+F,A$) :: NEXT F
2 CALL CHAR(123,"00183C7E7E3C18") :: CALL SCREEN(12)
3 CALL CHAR(143,"0003000300030003")
4 CALL CHAR(125,"7E81BDA1A1BD817E")
5 DIM W(4),G(4),EV(1),PO(1),CD(2),DI(2),N$(1)
10 DEF RP$=RPT$("0",5-LEN(STR$(INT(PO(M1)))))&STR$(INT(PO(M1)))&"`@@@@"
11 DEF SG(F)=VAL(SEG$(RA$,F,2))
13 SK$="@@@@"
20 RESTORE 30000 :: GOSUB 23500
30 GOSUB 9000 :: CALL CLEAR
40 RESTORE 30100 :: READ A$ :: CALL CHAR(68,A$) :: FOR F=9 TO 12 :: CALL COLOR(F,2,12) :: NEXT F :: CALL COLOR(3,2,12) :: CALL COLOR(4,2,12)
50 N$(1)="" :: GOSUB 9100
51 PO(0)=0 :: PO(1)=0
55 D$="welcome`to`the`intrigue`pentathlon``intrigue`hall`of`fame``atlantis``quasimodo``snout`of`spout``shuttle`attack``man"
56 D$=D$&"ia``lionel`and`the`ladders``beneath`the`stars``santa`and`the`goblins``adventuremania`is`in`the`top`100`games`of`1984``mania`"
100 LG$="00.000" :: FOR M1=0 TO MX1 :: GOSUB 9129 :: NEXT M1 :: PQ=0 :: FOR F=0 TO 1
101 IF EV(F)<>6 THEN 102 :: EV(0)=1 :: PA=1 :: EV(1)=1
102 NEXT F
120 CALL DELSPRITE(ALL) :: CALL CLEAR :: FOR F=2 TO 14 :: CALL COLOR(F,7,16) :: NEXT F :: RESTORE 30500 :: GOSUB 23500
700 CALL HCHAR(23,16,96,7) :: CALL HCHAR(24,16,96,7)
701 FOR M1=0 TO MX1 :: CALL DELSPRITE(ALL) :: LLG$="00.00" :: HT=124
705 RESTORE 29000 :: FOR F=1 TO EV(M1) :: READ WR$,ED$,NA :: NEXT F
799 DISPLAY AT(1,1):RPT$("@",140)
800 CALL HCHAR(6,3,59,28) :: DISPLAY AT(7,1):RPT$("A",56)
810 DISPLAY AT(21,2):"`competitor``attempt``best``" :: DISPLAY AT(2,5):"intrigue``pentathlon";SK$ :: DISPLAY AT(3,5):"`event```";ED$;RPT$("`",11-LEN(ED$));SK$
820 DISPLAY AT(4,5):"`world`record`";WR$;"`";SK$ :: DISPLAY AT(5,5):"`points```````";RP$
825 FOR F=0 TO 1 :: DISPLAY AT(23+F,1):"`";N$(F);RPT$("`",27-LEN(N$(F))) :: NEXT F
840 CALL VCHAR(23,3,96,2) :: CALL HCHAR(23+M1,3,62) :: DISPLAY AT(23+M1,23):"00.00`"
850 FOR Z=1 TO NA
900 ON EV(M1)GOTO 1190,2000,3000,4000,5000,5999
910 DISPLAY AT(23+M1,23):SEG$(LLG$,1,5);"`" :: DISPLAY AT(5,19):RP$ :: CALL HCHAR(23+M1,16+(Z*2)-1,123)
950 CALL PAUSE :: CALL DELSPRITE(ALL) :: NEXT Z
1100 EV(M1)=EV(M1)+1 :: NEXT M1 :: CALL PAUSE
1110 IF PA=1 THEN 700 :: CALL DELSPRITE(ALL)
1120 GOTO 40
1190 T1=7 :: T=7 :: RC=9.6 :: MP=200
1200 DISPLAY AT(11,1):RPT$("!",56) :: DISPLAY AT(19,1):RPT$("!",56) :: DISPLAY AT(13,1):RPT$(" ",168)
1210 G(1)=72 :: G(2)=68 :: G(3)=72 :: G(4)=76 :: W(1)=2 :: W(2)=3 :: W(3)=4 :: W(4)=1
1215 RESTORE 30100 :: FOR F=68 TO 88 STEP 4 :: READ A$ :: CALL CHAR(F,A$) :: NEXT F :: 
1217 CALL MAGNIFY(3)
1220 CALL SPRITE(#2,68,2,98,56,#1,68,C(M1),124,56,#4,80,16,106,256,#3,80,16,130,256)
1221 AD=0 :: DI(0)=0 :: CD(1)=0 :: CD(2)=1 :: DI(0)=-1 :: DI(1)=-2 :: DI(2)=3 :: R=1 :: TY1=0
1222 CALL HCHAR(9,1,32,32)
1230 A$=N$(M1)&"`on`your`marks" :: DISPLAY AT(9,3):A$ :: CALL PATTERN(#1,84,#2,84) :: CALL PAUSE :: DISPLAY AT(9,3):"get`set" :: CALL PATTERN(#1,88,#2,88)
1231 CALL PAUSE :: DISPLAY AT(9,5):"go"
1245 CALL MOTION(#2,0,INT((3-1+1)*RND)+1)
1250 FOR F=1 TO 212
1255 CALL MOTION(#4,0,(T1-((T1-1)+SGN(T1)))*-2,#3,0,(T-((T-1)+SGN(T)))*-2) :: R=W(R) :: T1=T1-1 :: CALL PATTERN(#2,G(R))
1257 CALL KEY(0,K,U) :: CALL MOTION(#1,0,DI(U+1)) :: T=T-CD(U+1) :: CALL PATTERN(#1,G(R)) :: CALL COINC(ALL,CO)
1260 IF CO=0 THEN 1270 :: CALL COINC(#1,#3,8,CO) :: IF CO=-1 THEN 1280 :: TY1=F+AD :: T1=90000 :: CALL MOTION(#2,0,21,#4,0,-21) :: CALL MOTION(#4,0,0,#2,0,0)
1270 DISPLAY AT(9,1):SEG$(D$,F,28) :: NEXT F :: AD=AD+212 :: GOTO 1250
1280 CALL MOTION(#1,0,0,#2,0,0,#3,0,0,#4,0,0) :: LLG$=STR$(((F+AD)/3.1)+.0001) :: PO(M1)=PO(M1)+INT((RC+(RC-VAL(LLG$)))*MP)
1281 IF PO(M1)<0 THEN PO(M1)=0
1282 GOTO 910
2000 T1=250 :: T=250 :: RC=98.8 :: MP=10 :: GOTO 1200
3000 HT=0 :: DISPLAY AT(11,1):RPT$("!",252) :: RESTORE 30150 :: FOR F=68 TO 84 STEP 4 :: READ A$ :: CALL CHAR(F,A$) :: NEXT F
3005 W(1)=2 :: W(2)=3 :: W(3)=1 :: G(1)=68 :: G(2)=72 :: G(3)=76
3050 CALL MAGNIFY(4) :: CALL SPRITE(#1,68,C(M1),94,35,#3,80,16,102,64) :: DISPLAY AT(9,1):SEG$(D$,1,28)
3060 ER=10 :: ET=ER :: ACC=90 :: R=1
3065 FOR Q=35 TO 64 STEP .5 :: R=W(R) :: CALL SPRITE(#1,G(R),C(M1),94,Q) :: CALL KEY(0,K,S)
3070 IF S=1 THEN 3100
3071 FOR E=1 TO ACC :: NEXT E :: ACC=ACC-2 :: ER=ER+.2 :: NEXT Q :: DISPLAY AT(18,6):"`foul`";RPT$("!",17) :: GOTO 910
3100 FOR F=15 TO 85 :: DISPLAY AT(18,7):STR$(F);RPT$("!",20) :: CALL KEY(0,K,S) :: IF S=1 THEN 3140
3110 NEXT F :: GOTO 3100
3140 CALL HCHAR(18,9,33,22)
3150 ER=ER+((5-(-5)+1)*RND)+(-5) :: GR=.8/(ER/10) :: ET=ER :: AX=(F/200)*-1 :: AY=.03 :: CALL MAGNIFY(3) :: CALL SPRITE(#5,84,16,80,Q,#6,84,2,102,Q)
3155 SG1=1 :: FOR F=Q TO 7 STEP-6 :: CALL SPRITE(#1,G(R),C(M1),94,F,#3,80,16,102,F) :: CALL MOVE(D$,ER,ET,AX,AY,GR,HT,SG1) :: SG1=SG1+1 :: IF HT=1 THEN 3500
3156 NEXT F :: CALL DELSPRITE(#1,#3)
3160 FOR SG1=SG1 TO 255 :: CALL MOVE(D$,ER,ET,AX,AY,GR,HT,SG1) :: IF HT=1 THEN 3500
3161 NEXT SG1 :: GOTO 3160
3500 LG$=SEG$(STR$((SG1/1.5)+(YD/23.5)+.001),1,5) :: IF VAL(LG$)>VAL(LLG$)THEN LLG$=LG$
3510 IF Z=3 THEN PO(M1)=PO(M1)+VAL(LLG$)*14.5
3520 GOTO 910
4000 DISPLAY AT(11,1):RPT$("!",84) :: DISPLAY AT(14,1):RPT$(" ",84) :: DISPLAY AT(17,1):RPT$("!",112)
4005 RESTORE 30100 :: FOR F=68 TO 80 STEP 4 :: READ A$ :: CALL CHAR(F,A$) :: NEXT F :: RESTORE 30400 :: FOR F=84 TO 88 STEP 4 :: READ A$ :: CALL CHAR(F,A$) :: NEXT F
4010 G(1)=72 :: G(2)=68 :: G(3)=72 :: G(4)=76 :: W(1)=2 :: W(2)=3 :: W(3)=4 :: W(4)=1
4020 CALL MAGNIFY(3) :: R=1 :: ST=1 :: T=6 :: ER=3 :: CALL SPRITE(#1,72,C(M1),109,32,#3,80,16,111,255)
4021 CALL PAUSE :: DISPLAY AT(9,1):SEG$(D$,1,28)
4030 U=1 :: CALL MOTION(#1,0,3)
4035 FOR F=1 TO 255
4040 CALL MOTION(#3,0,(T-((T-1)+SGN(T)))*-6) :: R=W(R) :: T=T-1 :: ER=ER+.35 :: CALL PATTERN(#1,G(R)) :: CALL KEY(0,K,S) :: CALL POSITION(#1,XD,YD) :: IF S=1 AND YD>76 THEN 4100
4050 DISPLAY AT(9,1):SEG$(D$,F,28) :: CALL COINC(#1,#3,8,CO) :: IF CO=-1 THEN 4900
4060 NEXT F :: GOTO 4035
4100 A$=RPT$("!",13) :: X=14 :: CALL MOTION(#1,0,0,#3,0,0) :: CALL COUNT(J,X,A$) :: IF S=1 THEN 4200 ELSE GOTO 4100
4200 F=J*2 :: IF F>50 THEN PL=72 ELSE PL=84
4201 DISPLAY AT(18,1):RPT$("!",28)
4210 CALL PATTERN(#1,PL) :: ER=ER+((0-(-2)+1)*RND)+(-2) :: GR=.8/(ER/10) :: AX=(F/170)*-1 :: AY=(90-F)/100 :: ET=ER
4211 CALL POSITION(#1,XD,YD) :: CALL SPRITE(#2,88,10,XD+3,YD)
4220 CALL MOTION(#1,AX*ET,ER*AY,#2,AX*ET/8,AY*ER) :: ET=ET-GR :: CALL COINC(#1,#2,3,CO) :: IF CO=0 THEN 4220
4230 CALL MOTION(#1,0,0,#2,0,0) :: CALL DISTANCE(#2,#3,DI2) :: LG$=STR$((SQR(DI2)*10)/100) :: IF VAL(LG$)>VAL(LLG$)THEN LLG$=LG$
4240 IF Z=3 THEN PO(M1)=PO(M1)+INT(VAL(LLG$)*100)
4250 CALL PATTERN(#1,72) :: CALL PAUSE :: CALL PAUSE :: GOTO 910
4900 CALL MOTION(#1,0,0,#3,0,0) :: DISPLAY AT(18,12):"foul";RPT$("!",13) :: GOTO 910
5000 DISPLAY AT(10,1):RPT$(" ",252) :: DISPLAY AT(18,1):RPT$(" ",84) :: FOR N=0 TO-1.3 STEP-(PI/24) :: CALL HCHAR(6+10*COS(N),28+23*SIN(N),34,31-(28+23*SIN(N))) :: NEXT N
5001 CALL COLOR(14,2,12) :: CALL MAGNIFY(3)
5010 RESTORE 30100 :: FOR F=68 TO 76 STEP 4 :: READ A$ :: CALL CHAR(F,A$) :: NEXT F :: RESTORE 30600 :: FOR F=80 TO 92 STEP 4 :: READ A$ :: CALL CHAR(F,A$) :: NEXT F
5050 CALL VCHAR(14,21,143,5) :: CALL VCHAR(16,23,143,5)
5070 RESTORE 30401 :: READ A$ :: CALL CHAR(136,A$)
5090 FOR H=HT TO 108 STEP-2 ::  :: CALL SPRITE(#2,92,16,H,168) :: ER=1 :: R=1 :: CALL SPRITE(#3,92,16,H+12,168)
5091 G(1)=72 :: G(2)=68 :: G(3)=72 :: G(4)=76 :: W(1)=2 :: W(2)=3 :: W(3)=4 :: W(4)=1
5092 DISPLAY AT(9,1):SEG$(D$,1,28)
5100 FOR N=-1.3 TO-.14 STEP(PI/96) :: R=W(R) :: CALL SPRITE(#1,G(R),C(M1),56+80*COS(N),192+184*SIN(N))
5110 CALL KEY(0,K,S) :: IF S=1 THEN 5150
5120 ER=ER+.32 :: NEXT N :: GOTO 5200
5150 A$="" :: X=27 :: CALL COUNT(J,X,A$) :: IF S=1 THEN 5151 ELSE 5150
5151 DISPLAY AT(18,27):"  "
5160 F=J*2 :: ET=ER :: GR=1.2/(ER/10) :: AX=(F/145)*-1 :: AY=(90-F)/155 :: CALL POSITION(#1,XD,YD) :: CALL SPRITE(#4,136,7,XD+8,YD-3)
5161 W(0)=1 :: W(4)=4 :: G(1)=88 :: G(2)=80 :: G(3)=84 :: G(4)=72 :: R=0
5162 CALL MOTION(#1,3,3)
5170 CALL MOTION(#1,AX*ET,AY*ER,#4,AX,AY*ER) :: CALL COINC(#1,#2,2,CO) :: IF CO=-1 THEN 5200 :: CALL COINC(#1,#4,5,CO) :: IF CO=-1 THEN 5299
5171 CALL COINC(#3,#1,6,CO) :: IF CO=-1 THEN 5200 :: ET=ET-GR :: CALL KEY(0,K,S) :: IF S=0 THEN 5170 :: R=W(R) :: CALL PATTERN(#1,G(R)) :: GOTO 5170
5200 HT=H :: CALL MOTION(#1,0,0,#4,0,0) :: CALL DELSPRITE(#4)
5201 CALL POSITION(#1,XD,YD) :: FOR F=HT TO 146 :: CALL LOCATE(#2,F,168,#1,F,YD) :: NEXT F :: CALL PAUSE
5203 IF Z=3 THEN PO(M1)=PO(M1)+((124-HT)*100)
5204 GOTO 910
5299 CALL MOTION(#1,0,0,#4,0,0) :: CALL POSITION(#1,XD,YD) :: IF YD<170 THEN 5203
5300 CALL PAUSE :: CALL PAUSE :: CALL DELSPRITE(ALL) :: LLG$=STR$(1.7+((124-H)*.05)+.00001)
5301 DISPLAY AT(23+M1,23):SEG$(LLG$,1,5);"`" :: NEXT H
5999 CALL CLEAR :: CALL MAGNIFY(4) :: CALL SCREEN(16) :: CALL COLOR(1,7,16)
6000 CALL SPRITE(#1,68,C(0),32,40,#2,68,C(1),32,168) :: DISPLAY AT(11,4):N$(0) :: DISPLAY AT(11,20):N$(1) :: DISPLAY AT(2,4):INT(PO(0))
6005 DISPLAY AT(2,20):INT(PO(1)) :: FOR F=1 TO 900 :: NEXT F :: CALL DELSPRITE(ALL) :: CALL COLOR(1,2,12) :: CALL CLEAR :: CALL SCREEN(12) :: GOTO 40
9000 RA$="1208036415120372121603801520038812240340"
9001 FOR F=1 TO 40 STEP 8 :: XD=SG(F) :: XY=SG(F+2) :: RA=SG(F+4) :: CR=SG(F+6) :: GOSUB 20000 :: NEXT F
9010 DISPLAY AT(3,10):"welcome  to" :: DISPLAY AT(5,11):"the  1984" :: DISPLAY AT(7,5):"intrigue pentathlon" :: DISPLAY AT(20,3):"}1984 intrigue software"
9020 DISPLAY AT(22,10):"enter now" :: FOR F=1 TO 40 :: CALL KEY(0,K,S) :: 
9030 IF S=1 THEN 9040
9035 NEXT F :: DISPLAY AT(22,10):RPT$(" ",10) :: FOR F=1 TO 50 :: NEXT F :: GOTO 9020
9040 RETURN
9100 CALL MAGNIFY(4) :: CALL CLEAR :: DISPLAY AT(2,10):"enrol here"
9110 CALL SPRITE(#1,68,7,32,40,#2,68,5,32,168) :: M1=0 :: XD=2 :: GOSUB 23100 :: M1=1 :: XD=18 :: GOSUB 23100 :: DISPLAY AT(18,7):"go to your event"
9120 CALL PAUSE :: CALL DELSPRITE(ALL) :: CALL CLEAR
9125 RETURN
9129 CALL CLEAR :: DISPLAY AT(1,(29-LEN(N$(M1)))/2):N$(M1)
9130 DISPLAY AT(8,12):"select" :: DISPLAY AT(10,7):"1  2  3  4  5  p" :: CALL SPRITE(#1,68,C(M1),16,112)
9140 L=1 :: FOR F=9 TO 25 STEP 3 :: CALL HCHAR(12,7,32,20) :: CALL HCHAR(12,F,58) :: FOR P=1 TO 25 :: CALL KEY(0,K,S)
9145 IF S=1 THEN 9170
9150 NEXT P :: L=L+1 :: NEXT F :: GOTO 9140
9170 EV(M1)=L :: RETURN
20000 FOR N=0 TO-6.0 STEP-(PI)/10 :: CALL HCHAR(XD+RA*COS(N),XY+RA*SIN(N),CR) :: NEXT N :: RETURN
23100 DISPLAY AT(9,XD):"name" :: ACCEPT AT(11,XD)SIZE(8)BEEPVALIDATE("abcdefghijklmnopqrstuvwxyz"):N$(M1)
23101 MX1=1 :: IF N$(1)<>"ti" THEN 23105 :: MX1=0 :: C(1)=2 :: RETURN
23105 DISPLAY AT(14,7):"choose your gear" :: FOR F=1 TO 16 :: CALL POSITION(#M1+1,XD,YX)
23110 CALL SPRITE(#M1+1,68,F,XD,YX) :: FOR P=1 TO 30 :: CALL KEY(0,K,S)
23111 IF S=1 THEN 23120
23115 NEXT P :: NEXT F :: GOTO 23105
23120 C(M1)=F :: DISPLAY AT(14,7):RPT$(" ",21) :: RETURN
23500 READ N :: FOR F=1 TO N :: READ RA$ :: CALL CHAR(SG(1),SEG$(RA$,9,16)) :: CALL COLOR(SG(3),SG(5),SG(7)) :: NEXT F
23501 RETURN
29000 DATA "09.50","100`metres",1,"87.70","1500`metres",1,"92.00","discus",3,"09.10","long`jump",3,"02.10","high`jump",3,"00.00","",1
30000 DATA 7,"640506127EFFFFFFFFFFFF7E","720602127EFFFFFFFFFFFF7E","800716127EFFFFFFFFFFFF7E","880813127EFFFFFFFFFFFF7E"
30001 DATA "400207127EFFFFFFFFFFFF7E","58040212183C7E1818181818 ","34010301282200900440109"
30100 DATA "030705040B132018070F0F29314E0060F020704020D8D4D860F0D02A160C0100"
30101 DATA "030707060306060606070706070E0D0EF0207040204060602020E02040C0C0E0"
30102 DATA "03070707060E0E0E070F0F2F364E0060F0207040A040502810E0F010CA360C01"
30103 DATA "080804040202010100000000000000000000000000000000808040402020"
30104 DATA "0000000000000000030719284EFC87C300000000003F7277EEF2CCE4728E0683"
30105 DATA "00000000000000000F1F192C76C586C300000000003F727764F2B488748C0606"
30150 DATA "03060602070B090C070C0F09090E1C01C080E040C0B08EFDE0E0F01020C0C0C","03010702030D113E66670F0805060607C0606040E090C810E030F088C4360C00"
30151 DATA "00070F0F0F07070F1D2D4DFF261938190000808080000080C0C0C0C04040C0C000","0000000000000000000000000000000000C03008040201010101010102020CF0"
30152 DATA "0000000000000000000000000060F060000000000000000000000000000"
30400 DATA "0F1C1D090C1310191F3CC8110E000000C080C000987810E0F008D50B060"
30401 DATA "00000000000000000000030F1F030000000000000000000000C0F0FEE60"
30500 DATA 5,"33010312FFFFFFFFFFFFFFFF","6505061607E7E7E0000E0E0E","59040716007E7E7E7E7E7E","64050616FFFFFFFFFFFFFFFF"
30501 DATA "960907160000000000000000"
30600 DATA "03070F1323272931313070E000000000C5F7FD91833F4E8080"
30601 DATA "0080C37C300F000000000000000000000006E6FCF4E4E4E87C1C343B3A1F0"
30602 DATA "00000000000001030007081017F870207E2777131E66860EFEFEFC7080"
30603 DATA "C06030180C06030100000000000000000000000000000080C06030180C060301"
31000 SUB PAUSE
31001 FOR F=1 TO 250 :: NEXT F :: CALL HCHAR(9,1,22,33)
31002 SUBEND
31100 SUB MOVE(D$,ER,ET,AX,AY,GR,HT,SG1)
31110 DISPLAY AT(9,1):SEG$(D$,SG1,28) :: CALL MOTION(#5,AX*ET,AY*ER,#6,((AX*-1)*ET)/3,AY*ER) :: ET=ET-GR :: CALL COINC(#5,#6,5,S) :: IF S=-1 THEN 31150
31115 CALL POSITION(#5,XD,YD) :: IF XD<20 AND SGN(ET)<>-1 THEN 31120 ELSE 31130
31120 ET=-ET
31130 SUBEXIT
31150 CALL DELSPRITE(#6) :: CALL MOTION(#5,0,0) :: FOR F=1 TO 500 :: NEXT F :: CALL DELSPRITE(#5) :: CALL MAGNIFY(4) :: HT=1 :: SUBEND
31999 SUB COUNT(J,X,A$)
32000 FOR F=1 TO 20 :: J=INT((30-10+1)*RND)+10 :: DISPLAY AT(18,X):STR$(J*2);A$
32001 CALL KEY(0,K,S) :: IF S=1 THEN 32003
32002 NEXT F :: GOTO 32000
32003 SUBEND
