1 'PITMAN', a MBasic adaptation from a game I wrote for 2 ' the Sharp MZ 80K computer in march 1984 3 ' Sylvain BIZOIRRE 01-2001 4 '(FC: slightly debugged version: diamonds are now displayed correctly) 5 '------------------------------------------------------------- 6 ' *** Variables initialization *** 7 DIM ARR(100):INT:DIM A:INT:DIM Z:INT:DIM T:INT:DIM I:INT:DIM B:INT:DIM W:INT 8 DIM C:INT:DIM J:INT:DIM X:INT:DIM Y:INT:DIM L:INT:DIM U:INT:DIM K:INT:DIM Key:STRING 9 DIM V:INT:DIM Q:INT:DIM P:INT:DIM R:INT:DIM D:INT:DIM EB:INT:DIM F:INT:DIM M:INT:DIM N:INT:DIM O:INT 10 ' *** Number of stages availables. *** 11 ARR(98)=22 '*** This line number must not be modified *** 12 SETCONTITLE "PITMAN" 20 COLOR 1,0:WINDOW 80,25:CLS 30 GOSUB 9010 '*** Data's to cancel blue cube *** 40 GOSUB 2700 '*** Reset some variables *** 102 ' 103 ' *** Title *** 104 Z=0:A=0 105 GOSUB 2245 107 GOSUB 2285 108 ' *** Choice *** 109 ' (Also performs an ugly animation) 112 Z=Z+1:IF Z=15 Z=1 113 HWAIT 25 114 GOSUB 2246 115 A=INKEY 118 IF A=27 end 119 '*** Instructions *** 120 IF (A=73)+(A=105) GOSUB 3000 129 '*** Play *** 132 IF (A=80)+(A=112) T=1:ARR(94)=4:ARR(99)=0:GOTO 160 144 '*** Starting stage (1 to X) *** 145 IF (A=83)+(A=115) GOSUB 2550:ARR(94)=4:ARR(99)=0:GOTO 160 146 '*** Stage Editor *** 147 IF (A=69)+(A=101) GOTO 4000 149 '*** Error *** 156 GOTO 112 157 ' 158 '*** Display stage T *** 159 ' 160 COLOR 1,0:CLS 170 IF ARR(99)=0 GOSUB 9030+T*10:'*** Init. of stage T *** 200 IF T>ARR(98)-1 T=0 210 COLOR 12,0:LOCATE 70,1:PRINT "Stage ";#2;T 215 FOR I=1 TO 4 217 X=3:Y=64+I*3 220 IF I>ARR(94) GOSUB 8050:GOTO 225 222 GOSUB 8035 225 NEXT &I 228 LOCATE 68,7:COLOR 14,0:PRINT "You win :" 230 LOCATE 67,9 :PRINT #3;ARR(95);" Diamond";:IF ARR(95)>1 PRINT "s" 232 LOCATE 68,10:PRINT #2;ARR(96);" Stage";:IF ARR(96)>1 PRINT "s" 235 COLOR 13,0:LOCATE 67,12:PRINT #4;ARR(97);" Moves" 240 LOCATE 68,15:COLOR 6,0 241 IF ARR(99)=0 PRINT "[ ] Next":LOCATE 72,16:PRINT "stage" 242 IF ARR(99)=1 PRINT "[ ] Go back":LOCATE 68,16:PRINT "editor" 243 LOCATE 68,18:PRINT "[ ] Redo":LOCATE 72,19:PRINT "stage" 244 LOCATE 68,21:PRINT "[ ] Menu." 246 COLOR 12,0:LOCATE 69,15:PRINT "T":LOCATE 69,18:PRINT "R":LOCATE 69,21:PRINT "M" 262 COLOR 0,3:LOCATE 0,24:PRINT " "; 265 LOCATE 40,24:PRINT " "; 267 FOR I=0 TO 23:LOCATE 66,I:PRINT " ":NEXT &I 268 U=0 270 GOSUB 8910:'*** Display stage *** 287 P=0 300 '*** Pitman moves *** 310 ' 315 GET &A:IF A=0 GOTO 315 319 '*** Left *** 320 IF A=241 GOTO 400 329 '*** Up *** 330 IF A=238 GOTO 500 339 '*** Right *** 340 IF A=243 GOTO 600 349 '*** Down *** 350 IF A=246 GOTO 700 352 ' 353 '*** Next stage *** 354 ' 355 IF (ARR(99)=1) IF (A=84)+(A=116) GOTO 4000 360 IF (ARR(94)>0) IF (A=84)+(A=116) T=T+1:ARR(97)=0:ARR(94)=ARR(94)-1:GOTO 170 365 IF (ARR(94)=0) IF (A=84)+(A=116) GOTO 390 367 ' 368 '*** Redo stage *** 369 ' 370 IF (ARR(99)=1) IF (A=82)+(A=114) ARR(97)=0:GOTO 170 372 IF (ARR(94)>0) IF (A=82)+(A=114) ARR(94)=ARR(94)-1:ARR(97)=0:GOTO 170 375 IF (ARR(94)=0) IF (A=82)+(A=114) GOTO 390 380 IF (A=77)+(A=109) COLOR 1,0:CLS:GOTO 40 382 GOTO 310 390 COLOR 12,8:LOCATE 68,23:PRINT "IMPOSSIBLE !"; 392 LOCATE 68,24:PRINT "0 Pitman..."; 394 LOCATE 69,21:PRINT "M":GOTO 310 397 ' 398 '*** Pitman goes left *** 399 ' 400 IF B=0 GOTO 310 405 A=ARR((B-1)+C*11):R=-1 407 IF A>1 GOTO 410 408 K=B:L=C:J=6:GOSUB 8500:B=B-1:J=6 409 GOTO 310 410 IF A<>3 GOTO 430 411 '*** Cancel blue cube *** 412 X=C*3:Y=B*6:GOSUB 8040 '*** Pitman raises arm *** 413 B=B-1:GOSUB 8650:B=B+1:'*** Cancel blue cube *** 415 GOTO 405:'*** Pitman moves 1 cell forward *** 417 A=ARR((B-1)+C*11):R=-1 420 ARR(90)=ARR((B-1)+(C-1)*11) 422 K=B:L=C:J=6:GOSUB 8500:B=B-1 425 GOTO 310 429 '*** Pitman pushes a brown cube *** 430 IF A<>4 GOTO 450 435 X=C*3:Y=B*6:GOSUB 8040:WAIT 200 '*** Pitman raises arm *** 436 IF (B<2)+(ARR((B-2)+C*11)<>0) GOSUB 8035:GOTO 310 437 ARR(90)=B:ARR(91)=C:ARR(92)=P:P=0 440 B=B-1:J=4:V=1:GOSUB 8500:V=0:'*** Move pushed cube *** 443 B=ARR(90):C=ARR(91):P=ARR(92):R=-1 445 K=B:L=C:J=6:GOSUB 8500:B=B-1:'* Move Pitman *** 446 GOTO 310 449 '*** Cancel a diamond *** 450 IF A<>2 GOTO 310 455 X=C*3:Y=B*6:GOSUB 8040 '*** Pitman raises arm 457 B=B-1:GOSUB 8650:B=B+1:'*** Cancel diamond *** 460 A=ARR((B-1)+C*11):R=-1 464 K=B:L=C:J=6:GOSUB 8500:B=B-1:J=6 466 ARR(95)=ARR(95)+1:LOCATE 67,9:COLOR 14,0:PRINT #3;ARR(95) 468 U=U-1:IF U>0 GOTO 310 469 '*** Pitman wins a stage *** 470 FOR Q=1 TO 5 472 X=C*3:Y=B*6:GOSUB 8040 473 COLOR 12,0:LOCATE 69,15:PRINT " ":LOCATE 69,18:PRINT " ":LOCATE 69,21:PRINT " " 474 WAIT 150:GOSUB 8045:COLOR 12,0 476 LOCATE 69,15:PRINT "T":LOCATE 69,18:PRINT "R":LOCATE 69,21:PRINT "M" 478 WAIT 150:NEXT &Q:GOSUB 8035 479 GET &V:IF V=0 GOTO 479 480 IF (V=84)+(V=116) T=T+1:ARR(96)=ARR(96)+1:ARR(97)=0:GOTO 170 485 IF (V=82)+(V=114) ARR(96)=ARR(96)+1:ARR(97)=0:GOTO 170 490 IF (V=77)+(V=109) GOTO 40 492 GOTO 479 497 ' 498 '*** Pitman moves up *** 499 ' 500 IF (P<>1)+(C=0) GOTO 310 510 IF ARR(B+(C-1)*11)>1 GOTO 310 520 R=3:K=B:L=C:GOSUB 8600:C=C-1 530 GOTO 310 599 ' *** Pitman moves right *** 600 IF B=10 GOTO 310 605 A=ARR((B+1)+C*11):R=1 607 IF A>1 GOTO 610 608 K=B:L=C:J=6:GOSUB 8500:B=B+1:J=6 609 GOTO 310 610 IF A<>3 GOTO 630 611 ' *** Cancel a blue cube *** 612 X=C*3:Y=B*6:J=8:GOSUB 8045 '*** Pitman raises left arm *** 613 B=B+1:GOSUB 8650:B=B-1:'*** Cancel blue cube *** 615 GOTO 605:'*** Pitman moves to free cell *** 630 IF A<>4 GOTO 650 634 ' *** Pitman pushes a brown cube *** 635 X=C*3:Y=B*6:J=8:GOSUB 8045:WAIT 200 '*** Pitman raises left arm *** 636 IF (B>8)+(ARR((B+2)+C*11)<>0) GOSUB 8035:GOTO 310 637 ARR(90)=B:ARR(91)=C:ARR(92)=P:P=0 640 B=B+1:J=4:V=1:GOSUB 8500:V=0:'*** Move pushed cube *** 643 B=ARR(90):C=ARR(91):P=ARR(92):R=1 645 K=B:L=C:J=6:GOSUB 8500:B=B+1 '*** Move Pitman left *** 646 GOTO 310 649 '*** Cancel a diamond *** 650 IF A<>2 GOTO 310 655 X=C*3:Y=B*6:J=8:GOSUB 8045 '*** Pitman raises left arm *** 657 B=B+1:GOSUB 8650:B=B-1:'*** Cancel diamond *** 660 A=ARR((B+1)+C*11):R=1 664 K=B:L=C:J=6:GOSUB 8500:B=B+1:J=6 666 GOTO 466 700 IF C=7 GOTO 310 702 IF ARR(B+(C+1)*11)>1 GOTO 310 705 Q=P 710 R=4:K=B:L=C:J=6:GOSUB 8600:C=C+1 712 IF (Q=0)*(C>1) D=B:EB=C-2:GOSUB 8522 715 IF (P=0)*(C<7) D=B:EB=C:GOSUB 8522 720 GOTO 310 2220 ' 2230 ' *** Display Title *** 2240 ' 2245 COLOR 1,0:CLS:LOCATE 0,0,0 2246 COLOR 7,5:LOCATE 0,0 2247 J=11 2248 A=Z 2250 FOR I=0 TO 24 2260 J=J+2:A=A+1:IF A=15 A=1 2265 IF A=8 A=9 2270 LOCATE J,I:COLOR A,0:PRINT "PITMAN"; 2280 NEXT &I 2281 RETURN 2285 A=3:B=55:COLOR 7,4 2290 LOCATE B,A:PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" 2300 LOCATE B,A+1:PRINT "³ A special game ³" 2310 LOCATE B,A+2:PRINT "³ for ³" 2320 LOCATE B,A+3:PRINT "³ MBasic ³" 2330 LOCATE B,A+4:PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" 2340 A=17:B=7:COLOR 0,7 2350 LOCATE B,A:PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" 2360 LOCATE B,A+1:PRINT "³ [I] Instructions ³" 2370 LOCATE B,A+2:PRINT "³ [P] Play ³" 2380 LOCATE B,A+3:PRINT "³ [S] Starting stage ³" 2382 LOCATE B,A+4:PRINT "³ [E] Stage Editor ³" 2390 LOCATE B,A+5:PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" 2400 RETURN 2405 ' *** Editor messages *** 2410 A=6:B=12:COLOR 7,1 2420 LOCATE B,A:PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" 2423 LOCATE B,A+1:PRINT "³ E D I T 0 R ³" 2425 LOCATE B,A+2:PRINT "³ ÄÄÄÄÄÄÄÄÄÄÄ ³" 2430 LOCATE B,A+3:PRINT "³ [M] Modify an existing stage ³" 2435 LOCATE B,A+4:PRINT "³ ³" 2440 LOCATE B,A+5:PRINT "³ [C] Create a new stage ³" 2450 LOCATE B,A+6:PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" 2460 RETURN 2467 ' 2468 '*** Cancel messages windows *** 2469 ' 2470 FOR I=2 TO 5:FOR J=1 TO 10:X=I*3:Y=J*6:GOSUB 8005:NEXT &J:NEXT &I 2475 RETURN 2497 ' 2498 '*** Ask for stage number to modify *** 2499 ' 2500 A=14:B=30:COLOR 0,3 2505 LOCATE B,A:PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" 2515 LOCATE B,A+1:PRINT "³ Stage number to modify : ³" 2525 LOCATE B,A+2:PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" 2527 LOCATE B+27,A+1:COLOR 0,14:PRINT " " 2530 LOCATE B+27,A+1:COLOR 14,0:INPUT &T,2 2535 IF (T>0)*(T<=ARR(98)) RETURN 2545 BEEP:GOTO 2527 2547 ' 2548 '*** Ask for starting stage number *** 2549 ' 2550 A=21:B=17:COLOR 0,3 2553 LOCATE B,A:PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" 2555 LOCATE B,A+1:PRINT "³ Stage Nb. to start from : ³" 2560 LOCATE B,A+2:PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" 2563 LOCATE 45,22:COLOR 0,14:PRINT " " 2565 LOCATE 45,22:INPUT &T,2 2570 IF T "Y") & (Key <> "N")) GOTO 2660 2665 RETURN 2697 ' 2698 '*** Reset some variables *** 2699 ' 2700 U=0:ARR(97)=0:ARR(95)=0:ARR(96)=0:J=0 2710 RETURN 2997 ' 2998 ' *** Instructions *** 2999 ' 3000 ' 3080 COLOR 14,9 3090 LOCATE 35,12:PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" 3100 LOCATE 35,13:PRINT "³ Object of this game is to catch all ³" 3105 LOCATE 35,14:PRINT "³ diamonds in each availables stages. ³" 3108 LOCATE 35,15:PRINT "³ ³" 3110 LOCATE 35,16:PRINT "³ - You can push brown stones, ³" 3120 LOCATE 35,17:PRINT "³ - You can destroy blue stones ³" 3130 LOCATE 35,18:PRINT "³ - You can use ladders to move up and down³" 3135 LOCATE 35,19:PRINT "³ ³" 3140 LOCATE 35,20:PRINT "³ That's all! Have fun and nice headache. ³" 3145 LOCATE 35,21:PRINT "³ ³" 3150 LOCATE 35,22:PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"; 3160 GET &A:IF A<>32 GOTO 3160 3165 COLOR 1,0 3170 FOR I=12 TO 22 3180 LOCATE 35,I:PRINT " " 3190 NEXT &I 3200 GOSUB 2247 ' *** Rebuild title *** 3210 RETURN 3997 ' 3998 '*** Editor *** 3999 ' 4000 COLOR 0,0:CLS 4003 COLOR 0,3:LOCATE 0,24:PRINT " "; 4005 LOCATE 40,24:PRINT " "; 4010 FOR I=0 TO 23:LOCATE 66,I:PRINT " ":NEXT &I 4019 '*** Display availables objects *** 4020 FOR I=1 TO 7 4030 X=(I*3)-3:Y=68 4040 GOSUB 8000+I*5 4050 LOCATE 75,(I*3)-2 4055 COLOR 3,0:PRINT "[";#0; 4057 GOSUB 4057+I:GOTO 4065 4058 PRINT "A";:RETURN 4059 PRINT "B";:RETURN 4060 PRINT "C";:RETURN 4061 PRINT "D";:RETURN 4062 PRINT "E";:RETURN 4063 PRINT "F";:RETURN 4064 PRINT "G";:RETURN 4065 PRINT "]":NEXT &I 4066 IF ARR(99)=1 GOTO 4095 4069 '*** Windows with questions *** 4070 GOSUB 2410 ' *** Ask Create or Modify *** 4075 GET &V:IF (V=77)+(V=109) GOTO 4085 4077 IF (V=67)+(V=99) GOTO 4080 4078 GOTO 4075 4079 '*** New stage, reset all stage cells *** 4080 ARR(89)=1:FOR I=30000 TO 30088:POKE I,0:ARR(I-30000)=0:NEXT &I 4082 GOSUB 2470:GOTO 4100 4084 '*** Existing stage, ask for Nr., init and display *** 4085 GOSUB 2500 4087 GOSUB 2470:'*** Clean questions windows *** 4090 GOSUB 9030+T*10:'*** Data's init. *** 4095 GOSUB 8910:'*** Display stage *** 4100 X=68:Y=21:COLOR 6,0:LOCATE X,Y:PRINT "[ ] Menu":LOCATE X,Y+1 4101 PRINT "[ ] Test":LOCATE X,Y+2:PRINT "[ ] Data" 4102 LOCATE X+4,Y+3:PRINT "lines";:COLOR 12,0:LOCATE X+1,Y 4103 PRINT "M":LOCATE X+1,Y+1:PRINT "T":LOCATE X+1,Y+2:PRINT "L" 4105 B=0:C=0 4110 X=C*3:Y=B*6:GOSUB 8055 4120 GET &A:IF A=0 GOTO 4120 4130 IF A<>246 GOTO 4150:'*** Down *** 4135 IF C>6 GOTO 4120 4140 GOSUB 4450 4145 C=C+1:GOTO 4110 4150 IF A<>238 GOTO 4170 '*** Up *** 4155 IF C=0 GOTO 4120 4160 GOSUB 4450 4165 C=C-1:GOTO 4110 4170 IF A<>241 GOTO 4190 '*** Left *** 4175 IF B=0 GOTO 4120 4180 GOSUB 4450 4185 B=B-1:GOTO 4110 4190 IF A<>243 GOTO 4210:'*** Right *** 4195 IF B>9 GOTO 4110 4200 GOSUB 4450 4205 B=B+1:GOTO 4110 4210 IF (A=77)+(A=109) GOTO 40 '*** Menu *** 4215 IF (A=84)+(A=116) ARR(99)=1:GOTO 160:'*** Test stage *** 4230 IF (A<>76)*(A<>108) GOTO 4300 4234 '*** Print Basic lines *** 4235 GOSUB 2600:'*** Explanations window *** 4240 IF Key="N" GOTO 4000 4245 GOTO 5000 4300 IF (A>96)*(A<104) A=A-1 4301 IF (A>64)*(A<72) GOTO 4305:'*** Create objects *** 4303 GOTO 4120 '*** End of GET loop *** 4305 X=C*3:Y=B*6:GOSUB 8005+(A-65)*5:ARR(B+C*11)=A-65:POKE 30000+B+C*11,A-65 4310 GOTO 4110 4450 X=C*3:Y=B*6:GOSUB 8005+(ARR(B+C*11)*5):RETURN 4997 ' 4998 '*** Print new stage Basic lines *** 4999 ' 5000 COLOR 7,0:CLS 5010 IF ARR(89)=2 GOTO 5050 5020 A=9030+(ARR(98)+1)*10 5021 PRINT "Modify the following line located in pitman.bas file:"+chr(10)+chr(10) 5030 PRINT " 11 ARR(98)=";#0;ARR(98)+1;CHR(10);CHR(10) 5040 GOTO 5060 5050 A=9030+T*10 5060 PRINT "Then paste the following lines, into pitman.bas file, then save it:"+chr(10)+chr(10) 5061 PRINT #0;A;" POKE 30000"; 5070 FOR I=0 TO 87 5080 IF I=30 PRINT CHR(10):PRINT #0;A+2;" POKE 30030"; 5090 IF I=60 PRINT CHR(10):PRINT #0;A+4;" POKE 30060"; 5100 PRINT ",";:GOSUB 5101+ARR(I):GOTO 5110 5101 PRINT "0";:RETURN 5102 PRINT "1";:RETURN 5103 PRINT "2";:RETURN 5104 PRINT "3";:RETURN 5105 PRINT "4";:RETURN 5106 PRINT "5";:RETURN 5107 PRINT "6";:RETURN 5110 NEXT &I 5115 PRINT CHR(10) 5120 PRINT #0;A+6;" RETURN" 5121 PRINT CHR(10) 5900 end 6000 COLOR 6,4 6010 LOCATE 35,12:PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" 6020 RETURN 8000 ' 8001 '*** Routines to display objects *** 8002 ' 8005 COLOR 4,0:LOCATE Y,X:PRINT " " 8008 LOCATE Y,X+1:PRINT " ":LOCATE Y,X+2:PRINT " ":RETURN 8010 COLOR 7,0:LOCATE Y,X:PRINT "ºÄÄÄĺ" 8013 LOCATE Y,X+1:PRINT "ºÄÄÄĺ":LOCATE Y,X+2:PRINT "ºÄÄÄĺ":RETURN 8015 COLOR 14,0:LOCATE Y,X:PRINT " ÜÜ " 8017 COLOR 14,0:LOCATE Y,X+1:PRINT " ² ² " 8018 LOCATE Y,X+2:PRINT "ÛÛÛÛÛÛ":RETURN 8020 COLOR 9,0:LOCATE Y,X:PRINT "±±±±±±" 8022 LOCATE Y,X+1:PRINT "±±°°±±":LOCATE Y,X+2:PRINT "±±±±±±":RETURN 8025 COLOR 0,6:LOCATE Y,X:PRINT "ÎÎÎÎÎÎ" 8027 LOCATE Y,X+1:PRINT "ÎÎÎÎÎÎ":LOCATE Y,X+2:PRINT "ÎÎÎÎÎÎ":RETURN 8030 COLOR 6,7:LOCATE Y,X:PRINT "ÜßÜßÜß" 8032 LOCATE Y,X+1:PRINT "ÜßÜßÜß":LOCATE Y,X+2:PRINT "ÜßÜßÜß":RETURN 8035 COLOR 2,0:LOCATE Y+1,X:PRINT "  ":LOCATE Y+1,X+1:PRINT "(Û)" 8037 LOCATE Y+1,X+2:PRINT "ÚÄ¿":RETURN 8040 COLOR 2,0:LOCATE Y+1,X:PRINT "\n ":LOCATE Y+1,X+1:PRINT " Û)" 8042 LOCATE Y+1,X+2:PRINT "ÄÄ¿":RETURN 8045 COLOR 2,0:LOCATE Y+1,X:PRINT " n/":LOCATE Y+1,X+1:PRINT "(Û " 8047 LOCATE Y+1,X+2:PRINT "ÚÄÄ":RETURN 8050 COLOR 2,0:LOCATE Y+1,X:PRINT " ":LOCATE Y+1,X+1:PRINT " " 8052 LOCATE Y+1,X+2:PRINT " ":RETURN 8055 COLOR 15,0:LOCATE Y,X:PRINT "ÚÄ Ä¿" 8057 LOCATE Y,X+2:PRINT "ÀÄ ÄÙ":RETURN 8497 ' 8498 '*** Move a cube right or left *** 8499 ' 8500 D=B:EB=C-1:IF EB>-1 F=ARR(D+EB*11):'*** Case et objet au dessus depart *** 8510 M=B+R:N=C:O=ARR(M+(N+1)*11):'*** Case et objet sous arrivee *** 8515 K=B:L=C:GOSUB 8600:'*** Move the cube *** 8516 ARR(93)=P:P=0 8517 Q=J:'*** Save the number if the moved object. (restored in line 8545) *** 8518 IF V=1 GOTO 8520 8519 IF C>0 GOSUB 8522 8520 IF (ARR(93)<>1)*(C<7) D=M:EB=N:GOSUB 8522 8521 J=Q:P=ARR(93):RETURN 8522 Z=EB 8523 IF EB>-1 F=ARR(D+EB*11) 8524 IF ARR(D+(EB+1)*11)<>0 GOTO 8550 8525 IF (EB<0)+(F=0)+(F=1)+(F=5)+(F=3) GOTO 8540 8530 K=D:L=EB:R=4:J=F:GOSUB 8600:IF J=6 C=EB+1:'*** Chute dessus depart *** 8535 EB=EB-1:IF EB<0 GOTO 8540 8537 F=ARR(D+EB*11):GOTO 8525 8540 Z=Z+1:IF Z<7 EB=Z:GOTO 8522 8550 RETURN 8597 ' 8598 '*** Move a cube (1 slot) *** 8599 ' 8600 Y=K*6:X=L*3 8605 IF P=1 GOSUB 8010:ARR(K+L*11)=1:'*** Affiche echelle si PIT en sort *** 8610 IF P<>1 GOSUB 8005:ARR(K+L*11)=0:'*** Sinon vide la case *** 8615 IF R=-1 K=K-1 8620 IF R=1 K=K+1 8625 IF R=3 L=L-1 8630 IF R=4 L=L+1 8633 Y=K*6:X=L*3 8634 P=ARR(K+L*11) 8635 ARR(K+L*11)=J 8640 GOSUB 8005+J*5:'*** Display a new cube *** 8642 IF J=6 ARR(97)=ARR(97)+1:LOCATE 68,12:COLOR 13,0:PRINT #3;ARR(97) 8645 RETURN 8647 ' 8648 '*** Cancel blue cube *** 8649 ' 8650 Q=29950:COLOR 2,0 8655 W=PEEK(Q):Z=PEEK(Q+1):Q=Q+2:IF Q>29986 ARR(B+C*11)=0:RETURN 8660 LOCATE (B*6)+Z,(C*3)+W:PRINT " ":WAIT 10:GOTO 8655 8907 ' 8908 '*** Display a stage *** 8909 ' 8910 FOR V=0 TO 10:FOR W=0 TO 7:A=V+W*11:Q=PEEK(30000+A):ARR(A)=Q:IF Q=2 U=U+1 8915 X=W*3:Y=V*6:IF Q=6 B=V:C=W:GOSUB 8005 8920 GOSUB 8000+(Q+1)*5:NEXT &W:NEXT &V 8925 RETURN 8997 ' 8998 ' *** Donnees *** 8999 ' 9000 ' 9003 ' *** Data's for blue cube progressive cancel *** 9006 ' 9010 POKE 29950,1,3,2,0,1,5,0,1,2,3,0,5,1,1,2,5,0,0,2,2,0,3,0,4,2,1,2,4,1,0 9020 POKE 29980,1,4,0,2,1,2 9030 RETURN 9037 ' 9038 ' *** Stage 1 *** 9039 ' 9040 POKE 30000,0,0,0,4,0,0,0,0,0,0,0,1,5,5,4,5,0,5,5,5,5,1,1,0,0,4,0,5,0,0 9042 POKE 30030,0,0,1,1,0,6,3,0,0,0,0,0,0,1,5,5,5,5,0,5,0,0,0,0,1,0,0,0,0,5 9044 POKE 30060,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,4,1,5,5,5,0,5,5,5,0,5,5,5 9046 RETURN 9049 '*** Stage 2 *** 9050 POKE 30000,0,0,4,0,0,0,0,0,0,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,5,1,2,3,0,0 9052 POKE 30030,0,0,0,0,0,5,1,3,2,2,0,0,0,2,0,0,5,1,3,3,3,0,3,3,3,2,0,5,1,0 9054 POKE 30060,0,3,3,3,0,0,5,0,5,1,0,0,0,0,0,0,6,5,0,5,5,5,5,5,5,5,5,5 9056 RETURN 9059 '*** Tableau 3 *** 9060 POKE 30000,0,0,0,0,6,0,5,0,4,0,0,0,0,0,0,4,1,5,1,4,0,0,0,0,0,2,4,1,5,1 9062 POKE 30030,2,0,0,0,0,2,3,3,1,5,1,2,2,0,0,5,2,1,1,1,5,1,5,5,0,0,5,5,5,5 9064 POKE 30060,5,5,1,5,2,0,0,0,0,0,0,0,0,1,5,5,0,0,5,5,5,5,5,5,5,5,5,0 9066 RETURN 9069 '*** Tableau 4 *** 9070 POKE 30000,0,0,0,0,0,4,0,0,0,0,0,0,2,0,0,0,3,0,0,0,0,2,0,3,1,0,1,2,5,4 9072 POKE 30030,5,0,1,0,0,0,2,1,3,5,2,5,4,0,0,2,0,3,1,0,3,4,3,2,0,2,3,1,0,1 9074 POKE 30060,6,3,3,3,4,0,3,0,0,2,0,5,5,5,3,3,1,3,2,1,3,5,2,3,3,3,3,1 9076 RETURN 9079 '*** Tableau 5 *** 9080 POKE 30000,5,5,5,5,5,5,5,5,5,5,5,4,2,4,0,0,0,0,5,3,3,5,4,4,4,1,5,1,0,5 9082 POKE 30030,3,3,5,3,3,3,0,0,1,0,5,3,3,5,0,0,2,1,5,1,0,5,3,3,5,3,4,4,0,0 9084 POKE 30060,1,0,5,3,3,5,2,1,2,1,5,1,0,5,3,3,5,1,0,2,0,0,1,6,5,5,5,5 9086 RETURN 9089 '*** Tableau 6 *** 9090 POKE 30000,0,0,4,0,0,0,0,0,0,0,0,0,6,4,0,4,0,0,0,0,0,0,1,3,3,0,1,0,0,0 9092 POKE 30030,0,0,0,1,0,0,3,3,3,3,1,1,1,0,3,3,3,3,2,0,0,1,5,4,2,0,0,0,0,3 9094 POKE 30060,0,5,5,0,4,4,2,0,0,0,0,5,0,0,1,2,4,5,0,5,3,1,0,1,5,1,3,2 9096 RETURN 9099 '*** Tableau 7 *** 9100 POKE 30000,0,1,1,0,4,0,0,0,5,5,5,0,1,4,0,4,0,0,6,5,3,5,0,1,4,0,2,5,5,1 9102 POKE 30030,5,3,5,0,1,4,0,1,4,4,1,5,3,5,5,1,5,0,2,3,3,1,5,3,5,5,1,0,0,1 9104 POKE 30060,1,5,5,5,3,5,5,5,0,0,5,1,5,3,3,3,5,3,5,0,2,1,1,5,5,5,5,5 9106 RETURN 9109 '*** Tableau 8 *** 9110 POKE 30000,3,3,3,0,5,0,0,1,1,1,1,3,3,3,6,5,2,0,3,0,2,1,3,3,3,1,5,4,0,3 9112 POKE 30030,2,4,1,3,4,4,1,5,3,0,3,5,4,1,0,3,4,1,5,0,0,3,0,4,1,0,0,3,1,5 9114 POKE 30060,1,1,1,0,3,1,0,2,5,1,5,5,5,1,5,5,1,0,1,1,1,0,0,0,0,0,0,1 9116 RETURN 9119 '*** Tableau 9 *** 9120 POKE 30000,0,0,0,0,4,0,0,2,0,5,3,1,5,5,1,4,0,1,5,0,5,3,1,0,5,1,2,0,1,5 9122 POKE 30030,0,5,3,1,0,5,1,2,0,5,5,0,5,5,1,0,5,1,4,0,5,5,0,0,1,1,0,5,5,5 9124 POKE 30060,3,0,0,0,5,1,1,0,0,2,0,0,5,5,5,5,1,1,0,0,1,0,0,6,0,0,0,1 9126 RETURN 9129 '*** Tableau 10 *** 9130 POKE 30000,0,0,6,0,0,0,5,3,3,0,2,0,4,3,3,3,1,5,2,3,3,4,0,2,3,3,1,1,5,4 9132 POKE 30030,3,1,3,0,3,0,3,1,5,3,3,3,1,3,0,0,4,0,1,5,1,3,3,1,3,0,3,5,3,1 9134 POKE 30060,0,5,1,0,1,3,1,5,1,0,3,0,3,5,1,3,3,3,0,1,3,3,1,3,3,1,2,3 9136 RETURN 9139 '*** Tableau 11 *** 9140 POKE 30000,0,0,4,0,0,1,0,0,4,0,0,0,0,5,5,5,1,0,0,4,0,0,0,0,0,0,0,0,0,0 9142 POKE 30030,4,1,1,0,0,5,5,5,5,5,4,3,4,1,0,0,1,1,1,1,1,4,0,4,1,0,0,1,3,2 9144 POKE 30060,3,0,3,0,3,1,2,0,1,0,4,2,0,5,0,0,1,1,0,1,0,2,1,0,5,0,6,1 9146 RETURN 9149 '*** Tableau 12 *** 9150 POKE 30000,3,2,2,0,0,5,2,0,2,3,3,3,4,5,2,1,0,5,1,4,0,3,1,3,5,3,3,1,0,5 9152 POKE 30030,3,1,0,1,3,5,3,3,3,1,0,5,0,1,1,3,0,3,3,3,3,1,0,1,4,1,6,5,1,1 9154 POKE 30060,3,1,1,5,4,2,3,3,5,1,4,1,0,1,1,3,4,3,3,3,1,3,3,3,0,0,0,1 9156 RETURN 9159 '*** Tableau 13 *** 9160 POKE 30000,0,0,0,4,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,5,0,0,1,1,4,0,5,5,5 9162 POKE 30030,1,0,0,0,1,4,3,4,4,0,0,0,0,0,0,1,4,0,3,4,0,0,0,0,0,0,1,3,0,3 9164 POKE 30060,3,0,0,0,2,0,6,1,0,0,4,0,0,0,2,4,0,5,5,1,1,3,0,0,0,1,2,0 9166 RETURN 9169 '*** Tableau 14 *** 9170 POKE 30000,0,0,4,0,0,6,0,0,4,0,0,1,1,1,1,1,3,1,1,1,1,1,1,0,0,4,0,3,0,4 9172 POKE 30030,0,0,1,1,0,3,2,3,0,3,2,3,0,1,1,0,3,5,3,0,3,5,3,0,1,1,0,3,3,3 9174 POKE 30060,0,3,3,3,0,1,1,0,0,0,1,0,1,0,0,0,1,1,0,0,0,1,0,1,0,0,0,1 9176 RETURN 9179 '*** Tableau 15 *** 9180 POKE 30000,4,0,0,0,5,5,4,0,0,4,3,3,0,6,4,0,0,3,0,0,2,1,1,5,3,3,1,3,3,3 9182 POKE 30030,0,3,3,0,2,4,0,1,3,3,0,3,0,0,3,3,3,3,1,0,0,1,0,3,0,2,5,4,0,1 9184 POKE 30060,5,0,5,0,0,0,4,0,3,3,3,3,3,0,0,2,0,3,1,0,0,0,0,0,1,0,5,0 9186 RETURN 9189 '*** Tableau 16 *** 9190 POKE 30000,1,1,1,1,1,0,0,0,0,0,0,1,2,4,4,1,4,2,0,0,0,0,1,4,2,4,1,2,4,4 9192 POKE 30030,0,0,0,1,2,4,2,1,4,3,2,1,0,0,1,4,2,4,1,2,4,4,1,0,0,1,3,2,2,1 9194 POKE 30060,4,2,3,1,0,0,5,5,1,5,1,2,4,1,1,0,2,5,2,1,5,1,1,1,1,6,0,1 9196 RETURN 9199 '*** Tableau 17 *** 9200 POKE 30000,1,0,0,0,0,0,0,0,0,0,1,1,3,3,3,4,3,3,3,4,3,1,1,0,3,2,6,0,3,2 9202 POKE 30030,4,0,1,1,0,3,3,4,0,3,4,2,0,1,1,0,3,2,2,0,3,3,3,0,1,1,0,0,3,2 9204 POKE 30060,0,2,4,0,0,1,1,0,0,2,4,4,3,4,0,0,1,1,0,3,3,3,3,0,3,3,0,1 9206 RETURN 9209 '*** Tableau 18 *** 9210 POKE 30000,0,0,0,0,0,0,3,3,5,4,5,1,5,5,4,3,1,3,3,5,2,5,1,5,0,2,5,1,4,3 9212 POKE 30030,5,4,5,1,1,0,4,0,1,3,3,5,4,5,1,0,0,3,3,3,0,0,3,3,3,0,1,1,5,3 9214 POKE 30060,3,3,3,3,4,4,1,0,6,4,0,4,0,0,0,3,3,5,0,5,5,0,5,0,5,1,2,1 9216 RETURN 9219 '*** Tableau 19 *** 9220 POKE 30000,0,0,0,4,0,0,0,0,0,0,0,0,5,4,5,1,4,5,5,5,1,0,0,0,4,4,0,3,6,0 9222 POKE 30030,0,1,0,0,2,3,3,0,3,3,0,0,1,0,0,3,5,0,1,0,0,0,0,1,0,2,0,0,3,0 9224 POKE 30060,0,0,0,0,1,0,5,0,5,5,5,5,5,5,5,5,0,5,0,5,0,0,0,0,0,0,0,0 9226 RETURN 9229 '*** Tableau 20 *** 9230 POKE 30000,0,0,0,0,5,3,3,5,4,4,0,0,0,0,2,5,5,5,5,4,4,0,0,0,0,3,1,1,1,5 9232 POKE 30030,3,1,1,0,0,4,0,4,0,1,2,0,0,1,1,1,4,3,4,0,0,5,0,0,1,1,6,3,3,4 9234 POKE 30060,0,0,2,0,0,1,1,3,0,3,3,0,0,5,0,0,1,1,1,1,1,1,1,1,5,0,0,1 9236 RETURN 9239 '*** Tableau 21 *** 9240 POKE 30000,3,4,0,0,0,0,0,0,0,0,0,3,6,0,5,5,5,5,5,5,5,1,0,3,2,4,0,0,0,0 9242 POKE 30030,0,0,1,3,0,3,2,4,0,0,0,0,0,1,0,3,0,3,2,4,0,0,0,0,1,3,0,3,0,3 9246 POKE 30060,2,4,0,0,0,1,0,3,0,3,0,3,2,0,0,0,1,3,0,3,0,3,0,3,0,0,0,1 9248 RETURN 9249 '*** Tableau 22 *** 9250 POKE 30000,1,1,4,6,4,0,0,0,0,0,0,1,0,4,1,4,0,0,0,0,0,0,1,0,4,1,4,0,0,0 9252 POKE 30030,0,0,0,1,0,5,4,5,4,1,0,0,0,0,1,0,0,4,0,4,0,1,0,0,0,1,0,5,5,0 9254 POKE 30060,5,0,5,5,0,0,1,0,0,4,0,4,0,5,0,0,2,1,0,5,5,0,5,0,5,0,0,5 9256 RETURN