1 REM ****** SCHACH FUR DEN C-64 ****** 2 REM ** (C) BY BERND BETTERMANN ** 3 REM ** AMELITHER STR.21 ** 4 REM ** 3417 BODENFELDE ** 5 REM ** TEL:05572/330 AB 18'00 ** 6 REM ********************************* 7 : 10 IFPEEK(49408)<>162THENSYS5517 20 GOTO1000 70 : 80 REM ------ STELLUNGSBEWERTUNG ------ 90 : 100 WZ=PEEK(ZF):POKEZF,PEEK(X):POKEX,0 110 AA=USR(128):IFAA=128THEN520 120 : 200 AA=AA+WZ 210 IFPEEK(X-9)=1ORPEEK(X-11)=1THENAA=AA+PEEK(ZF)-128 220 IFPEEK(ZF-9)=1ORPEEK(ZF-11)=1THENAA=AA-PEEK(ZF)-128 400 : 500 IFAA>BWTHENBW=AA:BA=X:BZ=ZF:GOTO520 510 IFAA=BWANDRND(1)>.7THENBA=X:BZ=ZF 520 POKEX,PEEK(ZF):POKEZF,WZ:RETURN 1000 : 1010 REM ----- VARIABLENDEFINITION ---- 1020 : 1030 FORX=49152TO49171:POKEX,128:POKEX+100,128:NEXTX 1040 FORX=49172TO49251:POKEX,0:NEXTX 1050 FORX=49172TO49242STEP10:POKEX,128:POKEX+9,128:NEXTX 1060 FORX=49183TO49190:POKEX,1:POKEX+50,129:NEXTX 1070 RESTORE:FORX=49173TO49180:READA:POKEX,A:POKEX+70,A+128:NEXTX 1080 DATA 4,2,3,5,6,3,2,4 1090 POKE785,0:POKE786,193 2000 : 2010 REM ----- SPIELFELD AUSGEBEN ----- 2020 : 2030 POKE53280,0:POKE53281,0:PRINT"[147] [164][164][164][164][164][164][164][164]" 2040 FORY=8TO1STEP-1:PRINTCHR$(48+Y);"[167]";:FORX=1TO8 2050 W=PEEK(49162+Y*10+X) 2060 IFW=0THENPRINT"[186]";:GOTO2090 2070 IFW>128THENPRINT"";MID$("BSLTDK",W-128,1);"[146]"; 2080 IFW<128THENPRINTMID$("BSLTDK",W,1); 2090 NEXTX:PRINT 2100 NEXTY:PRINT" [163][163][163][163][163][163][163][163]":PRINT" ABCDEFGH":BW=-50 3000 : 3010 REM ------ ZUGEINGABE WEISS ------ 3020 : 3030 INPUT"IHR ZUG ";Z$ 3040 IFLEN(Z$)<>4THENPRINT"[145]":GOTO3030 3050 IFMID$(Z$,1,1)<"A"ORMID$(Z$,1,1)>"H"THEN3030 3060 IFMID$(Z$,3,1)<"A"ORMID$(Z$,3,1)>"H"THEN3030 3070 IFMID$(Z$,2,1)<"1"ORMID$(Z$,2,1)>"8"THEN3030 3080 IFMID$(Z$,4,1)<"1"ORMID$(Z$,4,1)>"8"THEN3030 3090 AF=ASC(LEFT$(Z$,1))-64+10*VAL(MID$(Z$,2,1))+49162 3100 ZF=ASC(MID$(Z$,3,1))-64+10*VAL(RIGHT$(Z$,1))+49162 3110 IFPEEK(AF)=0ORPEEK(AF)>6THEN3030 3120 IFPEEK(ZF)>0ANDPEEK(ZF)<129THEN3030 3130 POKEZF,PEEK(AF):POKEAF,0 4000 : 4010 REM --- SCHW. FIGURENPOS. HOLEN -- 4020 : 4030 FORX=49173TO49250:IFPEEK(X)>128THENGOSUB6000 4040 NEXTX 5000 : 5010 REM ---- SCHW. ZUG AUSFUEHREN ---- 5020 : 5030 POKEBZ,PEEK(BA):POKEBA,0:PRINT"WERT:";BW 5040 PRINT"ZUG: "; 5050 BB=BA-49172 5055 IFBB>10THENBB=BB-10:GOTO5055 5057 PRINTCHR$(BB+64); 5060 PRINTCHR$(INT((BA-49172)/10)+49);"-"; 5070 BB=BZ-49172 5075 IFBB>10THENBB=BB-10:GOTO5075 5077 PRINTCHR$(BB+64); 5080 PRINTCHR$(INT((BZ-49172)/10)+49) 5085 IFBW=-50THENPRINT"ICH GEBE AUF":END 5090 FORX=1TO1000:NEXTX:GOTO2000 5100 : 5110 END 5120 : 6000 IFPEEK(X)<>129THEN6100 6010 : 6020 REM -------- BAUERNZUEGE --------- 6030 : 6040 IFX>49233ANDPEEK(X-10)=0ANDPEEK(X-20)=0THENZF=X-20:GOSUB100 6050 IFPEEK(X-10)=0THENZF=X-10:GOSUB100 6060 IFPEEK(X-9)>0ANDPEEK(X-9)<7THENZF=X-9:GOSUB100 6070 IFPEEK(X-11)>0ANDPEEK(X-11)<7THENZF=X-11:GOSUB100 6080 RETURN 6100 IFPEEK(X)<>130THEN6200 6110 : 6120 REM ------- SPRINGERZUEGE -------- 6130 : 6140 Z$="08121921":FORZ=1TO7STEP2 6150 ZZ=VAL(MID$(Z$,Z,2)) 6160 IFPEEK(X+ZZ)<128THENZF=X+ZZ:GOSUB100 6170 IFPEEK(X-ZZ)<128THENZF=X-ZZ:GOSUB100 6180 NEXTZ:RETURN 6200 IFPEEK(X)<>131THEN6400 6210 : 6220 REM -------- LAEUFERZUEGE -------- 6230 : 6240 FF=0:FORZ=X+11TOX+77STEP11:IFPEEK(Z)>6THENFF=1 6250 IFFF=0THENZF=Z:GOSUB100:IFPEEK(Z)<>0THENFF=1 6260 NEXTZ 6270 FF=0:FORZ=X-11TOX-77STEP-11:IFPEEK(Z)>6THENFF=1 6280 IFFF=0THENZF=Z:GOSUB100:IFPEEK(Z)<>0THENFF=1 6290 NEXTZ 6300 FF=0:FORZ=X+9TOX+63STEP+9:IFPEEK(Z)>6THENFF=1 6310 IFFF=0THENZF=Z:GOSUB100:IFPEEK(Z)<>0THENFF=1 6320 NEXTZ 6330 FF=0:FORZ=X-9TOX-63STEP-9:IFPEEK(Z)>6THENFF=1 6340 IFFF=0THENZF=Z:GOSUB100:IFPEEK(Z)<>0THENFF=1 6350 NEXTZ 6360 RETURN 6400 IFPEEK(X)<>132THEN6600 6410 : 6420 REM --------- TURMZUEGE ---------- 6430 : 6440 FF=0:FORZ=X+10TOX+70STEP10:IFPEEK(Z)>6THENFF=1 6450 IFFF=0THENZF=Z:GOSUB100:IFPEEK(Z)<>0THENFF=1 6460 NEXTZ 6470 FF=0:FORZ=X-10TOX-70STEP-10:IFPEEK(Z)>6THENFF=1 6480 IFFF=0THENZF=Z:GOSUB100:IFPEEK(Z)<>0THENFF=1 6490 NEXTZ 6500 FF=0:FORZ=X+1TOX+7STEP1:IFPEEK(Z)>6THENFF=1 6510 IFFF=0THENZF=Z:GOSUB100:IFPEEK(Z)<>0THENFF=1 6520 NEXTZ 6530 FF=0:FORZ=X-1TOX-7STEP-1:IFPEEK(Z)>6THENFF=1 6540 IFFF=0THENZF=Z:GOSUB100:IFPEEK(Z)<>0THENFF=1 6550 NEXTZ 6560 RETURN 6600 IFPEEK(X)<>5THEN6700 6610 : 6620 REM ---------- DAMENZUEGE -------- 6630 : 6640 GOSUB6210:GOSUB6410:RETURN 6700 : 6710 REM -------- KOENIGSZUEGE -------- 6720 : 6730 Z$="01091011":FORZ=1TO7STEP2 6740 ZZ=VAL(MID$(Z$,Z,2)) 6750 IFPEEK(X+ZZ)<7THENZF=X+ZZ:GOSUB100 6760 IFPEEK(X-ZZ)<7THENZF=X-ZZ:GOSUB100 6770 NEXTZ:RETURN 6780 : 6790 REM ----------- ENDE ------------- 6800 :