1 REM ********************************* 2 REM * Q U A D R A T O * 3 REM * 1987 - C64 VERSION F. BRALL * 4 REM * EIN TAKTIK U. STRATEGIE SPIEL * 5 REM * FUER KASSETTE UND DISKETTE * 6 REM ********************************* 7 REM * HIGHSCORETABELLE NUR AUF DISK * 8 REM ********************************* 9 POKE 56,144 10 DIM BRETT (9,9):REM SPIELFELD 11 DIM FENSTER (3,3):REM FENSTER 12 DIM HN$(9):REM HIGHSCORE NAME 13 DIM HS (9):REM HIGHSCORE PUNKTE 20 FARBRAM=55296 25 POKE 53281,0:POKE 53280,2 27 GOSUB 30000: REM COPYRIGHT 30 GOSUB 22000: REM HIGHSCORE INIT 40 : 80 CX=1:CY=1:REM CURSORPOSITION 85 QUATRATE = 20 100 S=0:REM SCORE=0 103 P=1:REM PICTURE=1 104 BA=5:REM BONUSABZUG 105 GOSUB 17000:REM BILDSCHIRM INIT 107 GOSUB 24000:REM SORTIERE 108 GOSUB 23000:REM HIGHSCORETABELLE 110 B=2000:REM BONUS SCORE 111 N=0:REM FLAG FUER NEUES BILD 115 GOSUB 10000:REM ZEICHNE BRETT 120 GOSUB 11000:REM ZEICHNE FENSTER 150 GOSUB 14000:REM ZUFALLSFELD 160 GOSUB 15000:REM UEBERNEHME FENSTER 170 GOSUB 16000:REM JOYSTICK/CURSOR 450 B=B-BA:IF B<0 THEN B=0 455 POKE 54296,15:POKE 54276,0:POKE 54273,30:POKE 54277,5:POKE 54276,17 490 IF (J AND 16)=0 THEN GOSUB 19000 500 GOSUB 18000:REM ZEIGE BONUS 504 IF N=1THEN POKE54296,15:POKE 54276,0:POKE54273,40:POKE54277,10:POKE 54276,17 505 IF N=1 THEN P=P+1:QUATRATE=QUATRATE+1:BA=BA+1:GOTO 110 510 IF B>0 THEN 170 511 POKE 54276,0:FOR F=250 TO 30 STEP -8 512 FOR I=1 TO 10 :NEXT I 513 POKE54296,15:POKE54273,F :POKE54277,11:POKE 54276,17 514 NEXT F 515 GOSUB 24000:REM SORTIERE 520 GOSUB 23000:REM HIGHSCORETABELLE 600 PRINT"[159] ANOTHER GAME Y/N " 610 GET E$:IF E$="" THEN 610 620 IF E$="Y" THEN 80 630 IF E$="N" THEN 650 640 GOTO 610 650 PRINT"[147] DIESES TRONIC-PROGRAMM GIBT ES" 660 PRINT" AUCH FUER DEN ATARI,C16 UND IBM PC !" 670 PRINT"[159] C64/C16/IBM VERSION BEI F.BRALL" 680 END 10000 REM ZEIGE BRETT 10010 PRINT"[158][176][195][178][195][178][195][178][195][178][195][178][195][178][195][178][195][178][195][174]" 10015 FOR I= 1 TO 8 10020 PRINT"[194] [194] [194] [194] [194] [194] [194] [194] [194] [194]" 10030 PRINT"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][219][195][219][195][179]" 10035 NEXT I 10040 PRINT"[194] [194] [194] [194] [194] [194] [194] [194] [194] [194]" 10050 PRINT"[173][195][177][195][177][195][177][195][177][195][177][195][177][195][177][195][177][195][189]" 10051 PRINT"[159] PICTURE:"P 10052 FOR Y= 1 TO 9:FOR X=1 TO 9:BRETT(X,Y)=0:NEXT X,Y 10055 RETURN 10060 : 11000 REM ZEIGE FENSTER 11005 PRINT""; 11010 PRINTTAB(23)"[176][195][178][195][178][195][174]" 11015 FOR I= 1 TO 2 11020 PRINTTAB(23)"[194] [194] [194] [194]" 11030 PRINTTAB(23)"[171][195][219][195][219][195][179]" 11035 NEXT I 11040 PRINTTAB(23)"[194] [194] [194] [194]" 11050 PRINTTAB(23)"[173][195][177][195][177][195][189]" 11052 FOR Y= 1 TO 3:FOR X=1 TO 3:FENSTER(X,Y)=0:NEXT X,Y 11055 RETURN 11060 : 12000 REM SETZE STEIN (VARIABLE X,Y) 12010 PRINT""; 12012 BRETT(X,Y)=1 12015 IF Y=1 THEN 12030 12020 FOR I=1 TO Y-1:PRINT"";:NEXT I 12030 PRINT TAB((1+(X-1)*2))" [146]" 12040 RETURN 12050 : 13000 REM SETZE FENSTERSTEIN (VAR X,Y) 13010 PRINT""; 13012 FENSTER(X,Y)=1 13015 IF Y=1 THEN 13030 13020 FOR I=1 TO Y-1:PRINT"";:NEXT I 13030 PRINT TAB((24+(X-1)*2))" [146]" 13040 RETURN 13050 : 14000 REM ZUFALLSFELD 14010 FOR T= 1 TO QUATRATE 14020 X=INT(RND(1)*9)+1 14030 Y=INT(RND(1)*9)+1 14040 GOSUB 12000 14050 NEXT T 14060 RETURN 14070 : 15000 REM UEBERNEHME IN FENSTER 15020 XF=INT(RND(1)*7)+1 15030 YF=INT(RND(1)*7)+1 15040 FOR Y= 1 TO 3 15050 FOR X= 1 TO 3 15060 IF BRETT(XF+X-1,YF+Y-1)=1 THEN GOSUB 13000 15070 NEXT X:NEXT Y 15080 RETURN 15090 : 16000 REM BEWEGE CURSOR (JOYSTICK) 16020 POKE 56322,244 16025 J=PEEK(56320) 16028 IF (J AND 15)= 15 THEN 16140 16030 SYS 49152,CY,CX,7:REM CURSOR LOESCHEN 16040 IF (J AND 1)=0 THEN CY=CY-1 16050 IF (J AND 2)=0 THEN CY=CY+1 16060 IF (J AND 4)=0 THEN CX=CX-1 16070 IF (J AND 8)=0 THEN CX=CX+1 16100 IF CX>7 THEN CX=7 16110 IF CX<1 THEN CX=1 16120 IF CY>7 THEN CY=7 16130 IF CY<1 THEN CY=1 16140 SYS 49152,CY,CX,8 16150 POKE 56322,255:RETURN 16160 : 17000 REM BILDSCHIRM INITIALISIEREN 17005 PRINT"[147][158]QUADRATO" 17006 PRINT"[158]1987 BEI" 17007 PRINT"[158] F.BRALL" 17010 PRINT"[156]HIGHSCORE :[160]" 17020 PRINT"BONUSSCORE:[160]" 17030 PRINT"YOUR SCORE:[160]" 17100 GOSUB 20000 17300 RETURN 17310 : 18000 REM ZEIGE BONUS 18010 PRINT" [157][157][157][157][157]"B 18100 RETURN 18110 : 19000 REM FENSTER VERGLEICHEN 19005 U=0 19010 FOR Y=0 TO 2 19015 FOR X=0 TO 2 19020 IF BRETT(CX+X,CY+Y)<>FENSTER(X+1,Y+1) THEN U=1 19030 NEXT X:NEXT Y 19040 IF U=1 THEN S=S-B:N=0 19060 IF U=0 THEN S=S+B:N=1 19070 IF U=1THENPOKE54296,15:POKE54276,0:POKE54273,60:POKE54277,10:POKE54276,17 19080 GOSUB 20000 19100 RETURN 19110 : 20000 REM ZEIGE SCORE 20010 PRINT" [157][157][157][157][157]"S 20100 RETURN 20110 : 21000 REM ***************************** 21001 REM * DIESES UNTERPROGRAMM ER- * 21002 REM * STELLT DIE DISKETTEN HIGH-* 21003 REM * SCORETABELLE. * 21004 REM ***************************** 21010 OPEN 1,8,2,"@:QSCR,S,W" 21011 FOR I= 1 TO 9 21020 PRINT#1,"FRANK " 21024 PRINT#1,I*3500 21030 NEXT I 21040 CLOSE 1 21050 PRINT"HIGHSCORETABELLE WURDE ERSTELLT !" 21060 RETURN 21070 : 22000 REM HIGHSCORE INIT/LADEN 22010 IF PEEK(186)=8 THEN 22100 22015 FOR I= 1 TO 9 22020 HN$(I)="FRANK " 22024 HS(I)=I*3500 22030 NEXT I 22040 RETURN 22090 : 22100 OPEN 1,8,2,"QSCR,S,R" 22110 FOR I= 1 TO 9 22120 INPUT#1,HN$(I) 22130 INPUT#1,HS(I) 22140 NEXT I 22150 CLOSE 1 22160 RETURN 22170 : 23000 REM HIGHSCORETABELLE ANZEIGEN 23010 PRINT"":PRINT TAB(20)" HIGHSCORETABELLE [154]" 23050 FOR I=1 TO 8 23060 PRINT TAB(19)I"[157]. "LEFT$(HN$(I),9);""HS(I) 23070 NEXT I 23100 RETURN 23110 : 24000 REM SORTIERE HIGHSCORE 24010 HN$(9)="!" 24020 HS(9)=S 24030 FOR I=1 TO 9 24040 FOR T=1 TO 9 24050 IF HS(T)"!" THEN 24130 24120 PRINT"[158] NAME: "; 24122 INPUT HN$(I):HN$(I)=HN$(I)+" " 24125 GOSUB 26000:REM SAVE HIGHSCORE 24130 NEXT I 24300 RETURN 24310 : 24500 MS=HS(I):M$=HN$(I) 24510 HS(I)=HS(T):HN$(I)=HN$(T) 24520 HS(T)=MS:HN$(T)=M$ 24530 RETURN 24540 : 25000 REM ZEIGE HIGHSCORE 25010 PRINT" [157][157][157][157][157]"HS 25100 RETURN 25110 : 26000 REM SAVE HIGHSCORE 26005 IF PEEK(186)=1 THEN RETURN 26010 OPEN 1,8,2,"@:QSCR,S,W" 26020 FOR I=1 TO 9 26030 PRINT#1,HN$(I) 26040 PRINT#1,HS(I) 26050 NEXT I 26060 CLOSE 1 26070 RETURN 26080 : 30000 REM ANFANGSBILD INITIALISIERUNG 30010 PRINT"[147][158] Q U A D R A T O" 30020 PRINT" C64 VERSION F. BRALL" 30030 PRINT" (C) 1987" 30040 PRINT" BITTE WARTEN ICH POKE DATEN !" 30500 GOSUB 40000:REM MUSIC INIT 30510 GOSUB 60000:REM CURSOR MC-ROUTINE 30515 PRINT"[159] PRESS ANY KEY TO CONTINUE " 30516 POKE 198,0 30517 GET E$:IF E$="" THEN 30517 30518 SYS 40752 30520 RETURN 30530 : 40000 REM *** MUSIC INITIALISIEREN *** 40001 : 40002 DIMH(75):FORI=0TO9 40003 H(48+I)=I:H(65+I)=I+10:NEXT 40004 FORI= 40474 TO 40953 :READA$ 40005 H=ASC(LEFT$(A$,1)) 40006 L=ASC(RIGHT$(A$,1)) 40007 D=H(H)*16+H(L):S=S+D:POKEI,D 40008 A=A+1:IFA<20THENNEXT:A=-1 40009 READV:Z=Z+1:IFV=STHEN40011 40010 PRINT"DATAFEHLER IN ZEILE :";40013+Z:END 40011 IFA<0THEN40013 40012 S=0:A=0:NEXT 40013 SYS 40704 :RETURN 40014 DATA 00,00,00,00,08,00,0A,65,00,00,00,00,00,0B,50,00,00,00,00,00, 210 40015 DATA 00,F0,00,00,00,00,00,A2,0E,14,A2,0E,28,6D,10,14,67,11,28,ED, 1194 40016 DATA 15,14,89,13,14,A2,0E,28,67,11,28,45,1D,14,45,1D,28,45,1D,14, 967 40017 DATA 14,1A,1E,ED,15,0A,89,13,14,ED,15,64,45,1D,14,45,1D,28,45,1D, 1232 40018 DATA 14,14,1A,1E,ED,15,0A,89,13,1D,89,13,01,A2,0E,14,A2,0E,0A,A2, 1250 40019 DATA 0E,14,67,11,28,A2,0E,14,A2,0E,28,ED,15,14,ED,15,14,89,13,1E, 1348 40020 DATA 67,11,0A,A2,0E,64,00,F7,0A,50,0A,0D,3C,A2,0E,3C,67,11,3C,ED, 1479 40021 DATA 15,3C,CF,22,3C,6D,10,78,F7,0A,3C,0A,0D,3C,A2,0E,3C,67,11,3C, 1443 40022 DATA F7,0A,3C,6D,10,3C,F7,0A,78,00,00,B5,08,50,F8,0A,3C,4F,0C,3C, 1617 40023 DATA A3,0E,3C,D0,22,3C,EE,15,3C,C5,09,78,B5,08,3C,F8,0A,3C,4F,0C, 1842 40024 DATA 3C,A3,0E,3C,F8,0A,3C,6E,10,3C,F8,0A,32,F8,0A,0A,6E,10,0A,68, 1617 40025 DATA 11,0A,6E,10,0A,F8,0A,0A,00,00,A9,01,8D,15,9E,8D,10,9E,8D,11, 1394 40026 DATA 9E,A9,FD,8D,12,9E,8D,13,9E,8D,14,9E,A2,18,BD,1B,9E,9D,00,D4, 2463 40027 DATA CA,10,F7,78,A9,48,8D,14,03,A9,9F,8D,15,03,58,60,60,60,A2,18, 2045 40028 DATA A9,00,9D,00,D4,CA,10,FA,78,A9,31,8D,14,03,A9,EA,8D,15,03,58, 2164 40029 DATA 60,60,A9,0F,8D,18,D4,EA,CE,15,9E,D0,48,EE,12,9E,EE,12,9E,EE, 2718 40030 DATA 12,9E,AD,12,9E,C9,63,F0,20,AA,A9,40,8D,04,D4,BD,35,9E,8D,00, 2398 40031 DATA D4,BD,36,9E,8D,01,D4,BD,37,9E,8D,15,9E,A9,41,8D,04,D4,18,90, 2448 40032 DATA 18,A9,FD,8D,12,9E,8D,13,9E,8D,14,9E,A9,01,8D,15,9E,8D,10,9E, 2205 40033 DATA 8D,11,9E,D0,5A,CE,10,9E,D0,28,A9,20,8D,0B,D4,EE,13,9E,EE,13, 2479 40034 DATA 9E,EE,13,9E,AE,13,9E,BD,99,9E,8D,07,D4,BD,9A,9E,8D,08,D4,BD, 2835 40035 DATA 9B,9E,8D,10,9E,A9,21,8D,0B,D4,CE,11,9E,D0,28,A9,10,8D,12,D4, 2379 40036 DATA EE,14,9E,EE,14,9E,EE,14,9E,AE,14,9E,BD,C5,9E,8D,0E,D4,BD,C6, 2898 40037 DATA 9E,8D,0F,D4,BD,C7,9E,8D,11,9E,A9,11,8D,12,D4,4C,31,EA,00,7F, 2431 60000 REM CURSOR MC-ROUTINE INIT 60005 FORI=0TO9 60010 H(48+I)=I:H(65+I)=I+10:NEXT 60020 FORI= 49152 TO 49263 :READA$ 60030 H=ASC(LEFT$(A$,1)) 60040 L=ASC(RIGHT$(A$,1)) 60050 D=H(H)*16+H(L):S=S+D:POKEI,D 60060 A=A+1:IFA<20THENNEXT:A=-1 60070 READV:Z=Z+1:IFV=STHEN60085 60080 PRINT"DATAFEHLER IN ZEILE :";60200+Z:END 60085 IFA<0THEN60100 60090 S=0:A=0:NEXT 60100 RETURN 60201 DATA 20,FD,AE,20,9E,B7,A9,00,85,F9,A9,D8,85,FA,18,A5,F9,69,50,85, 2907 60202 DATA F9,A5,FA,69,00,85,FA,CA,D0,F0,20,FD,AE,20,9E,B7,18,A5,F9,69, 3177 60203 DATA 02,85,F9,A5,FA,69,00,85,FA,CA,D0,F0,38,A5,F9,E9,29,85,F9,A5, 3228 60204 DATA FA,E9,00,85,FA,20,FD,AE,20,9E,B7,86,FB,A2,05,A0,04,B1,F9,29, 2881 60205 DATA 0F,C9,06,F0,04,A5,FB,91,F9,88,10,F1,18,A5,F9,69,28,85,F9,A5, 2799 60206 DATA FA,69,00,85,FA,CA,D0,DF,60,CE,08,29, 1722