home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
s85xx
/
s8506a.d64
/
schachmeister
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
9KB
|
341 lines
10 REM ********************************
20 REM * >> SCHACHMEISTER << *
30 REM * *
40 REM * THOMAS BEHREND *
50 REM * IN DER WANNE 16 7900 ULM *
60 REM * (8.1984) *
70 REM ********************************
80 REM
90 REM -- ALLE REM-ZEILEN KOENNEN --
100 REM -- WEGGELASSEN WERDEN --
110 REM
120 REM -- NEUE ZEICHEN --
130 REM
140 POKE53281,6:POKE53280,1:PRINT"[147]"CHR$(5)
150 DATA120,169,51,133,1,169,0,133,95,133,90,133,88,169,208,133,96,169,240,133
160 DATA89,169,224,133,91,32,191,163,169,55,133,1,88,96
170 REM -- MC-PROGRAMM --
180 J=4097:FORI=832TO865:READA:J=J-A:POKEI,A:NEXT
190 IFJ<>0THENPRINT"DATA-FEHLER IN ZEILE 15-20":STOP
200 SYS832:POKE850,160:SYS832:POKE56576,PEEK(56576)AND252:POKE53272,8
210 POKE648,192:PRINT""TAB(5)"> SCHACHMEISTER <"
220 PRINT""TAB(5)"BITTE EINEN MOMENT WARTEN..."
230 AD=57344:FORI=64TO91:B=AD+I*8:FORJ=0TO7:READC:POKEB+J,C:NEXT:NEXT
240 FORI=192TO219:B=AD+I*8:FORJ=0TO7:READC:POKEB+J,C:NEXT:NEXT
250 I=175:B=AD+I*8:FORJ=0TO7:READC:POKEB+J,C:NEXT
260 POKE56,130
270 REM
280 REM -- DATA FUER SCHACHFIGUREN --
290 REM
300 DATA0,0,60,60,255,255,60,60
310 DATA0,0,0,0,0,0,0,0
320 DATA0,0,0,0,60,255,255,255
330 DATA255,255,60,60,60,60,60,60
340 DATA0,0,3,3,15,10,0,0
350 DATA60,255,255,255,255,170,0,0
360 DATA0,0,192,192,240,160,0,0
370 DATA0,0,3,3,3,3,3,3
380 DATA0,0,60,60,60,255,255,255
390 DATA0,0,192,192,192,192,192,192
400 DATA3,0,0,0,0,0,0,0
410 DATA255,60,60,60,60,60,60,60
420 DATA255,255,255,255,255,255,255,255
430 DATA192,0,0,0,0,0,0,0
440 DATA0,0,60,60,240,195,255,255
450 DATA255,255,255,255,255,170,0,0
460 DATA0,0,0,0,192,192,0,0
470 DATA0,0,0,0,0,3,3,15
480 DATA0,48,48,63,255,207,207,255
490 DATA0,0,0,0,192,192,192,192
500 DATA63,63,63,60,0,0,0,3
510 DATA255,207,15,63,63,255,255,255
520 DATA192,192,0,0,0,0,0,192
530 DATA3,3,3,3,15,10,0,0
540 DATA192,240,240,240,240,160,0,0
550 DATA0,0,12,15,3,3,3,3
560 DATA0,0,48,240,192,192,192,192
570 DATA0,0,0,0,3,3,0,0
580 DATA85,85,125,125,255,255,125,125
590 DATA85,85,85,85,85,85,85,85
600 DATA85,85,85,85,125,255,255,255
610 DATA255,255,125,125,125,125,125,125
620 DATA85,85,87,87,95,90,85,85
630 DATA125,255,255,255,255,170,85,85
640 DATA85,85,213,213,245,165,85,85
650 DATA85,85,87,87,87,87,87,87
660 DATA85,85,125,125,125,255,255,255
670 DATA85,85,213,213,213,213,213,213
680 DATA87,85,85,85,85,85,85,85
690 DATA255,125,125,125,125,125,125,125
700 DATA255,255,255,255,255,255,255,255
710 DATA213,85,85,85,85,85,85,85
720 DATA85,85,125,125,245,215,255,255
730 DATA255,255,255,255,255,170,85,85
740 DATA85,85,85,85,213,213,85,85
750 DATA85,85,85,85,85,87,87,95
760 DATA85,117,117,127,255,223,223,255
770 DATA85,85,85,85,213,213,213,213
780 DATA127,127,127,125,85,85,85,87
790 DATA255,223,95,127,127,255,255,255
800 DATA213,213,85,85,85,85,85,213
810 DATA87,87,87,87,95,90,85,85
820 DATA213,245,245,245,245,165,85,85
830 DATA85,85,93,95,87,87,87,87
840 DATA85,85,117,245,213,213,213,213
850 DATA85,85,85,85,87,87,85,85
860 DATA126,189,215,231,231,215,189,126
870 REM
880 REM -- VARIABLEN UND FELDER --
890 REM
895 DIMA$(12)
900 B$(1)="ABAACADEF":REM BAUER
910 B$(2)="GHIJLMDOF":REM TURM
920 B$(3)="ANAAKADEF":REM LAEUFER
930 B$(4)="QRSTUVWOX":REM PFERD
940 B$(5)="YHZACADEF":REM DAME
950 B$(6)="[@PJCMDEF":REM KOENIG
960 FORI=1TO6:FORJ=0TO2:FORK=1TO3
970 A$=MID$(B$(I),J*3+K,1):A$(I)=A$(I)+CHR$(ASC(A$)+128):NEXT
980 A$(I)=A$(I)+"[157][157][157]":NEXT:NEXT
990 DIMB(8,8)
1000 FORI=7TO1STEP-2:FORJ=1TO7STEP2:B(I,J)=1:NEXT:NEXT
1010 FORI=8TO2STEP-2:FORJ=2TO8STEP2:B(I,J)=1:NEXT:NEXT
1020 DIMA(8,8)
1030 GOSUB2760
1040 Z1$="[159] "
1050 :
1060 REM
1070 REM -- MULTICOLOR-MODUS --
1080 REM -- EINSCHALTEN --
1090 REM
1100 POKE53281,6:POKE53282,7:POKE53283,5
1110 POKE53270,PEEK(53270)OR16
1120 REM
1130 REM -- LISTE DER PARTIEN --
1140 REM -- AUFSTELLEN --
1150 REM
1160 DATA-1
1170 RESTORE:DA=0
1180 DA=DA+1:READA:IFA=-1THEN1200
1190 GOTO1180
1200 DIMP(20),P$(20),P1$(20),JA$(20):P=0:D=0
1210 P=P+1:READP$(P),P1$(P),JA$(P):D=D+3
1220 READA$:D=D+1:IFA$="E"ORA$="X"THEN1240
1230 GOTO1220
1240 IFA$="X"THEN1290
1250 P(P)=D:GOTO1210
1260 REM
1270 REM -- AUSWAHLMENUE --
1280 REM
1290 RESTORE:FORI=1TODA:READA:NEXT
1300 PRINTCHR$(5)"[147] - AUSWAHL -"
1310 PRINT:PRINT
1320 FORI=1TOP:PRINTI;TAB(5)P$(I)TAB(16)P1$(I),JA$(I):NEXT
1330 POKE198,0:INPUT"";W:IFW<1ORW>PTHEN1330
1340 PRINT"[147]":IFW=1THEN1390
1350 FORI=1TOP(W-1):READA$:NEXT
1360 REM
1370 REM -- SPIELBRETT --
1380 REM
1390 FORI=1TO24:PRINTCHR$(159)TAB(0)" "TAB(25)Z1$:NEXT
1400 PRINTCHR$(5)"";
1410 FORY=8TO1STEP-1:X=1:GOSUB2840:PRINT"[157][157]"Y:X=8:GOSUB2840
1420 PRINT""Y:NEXT
1430 FORY=8TO1STEP-1:FORX=1TO8
1440 GOSUB2470
1450 NEXT:NEXT
1460 PRINT""
1470 REM
1480 REM -- ANFANGSSTELLUNG --
1490 REM
1500 FORY=7TO8:FORX=1TO8
1510 GOSUB2530:NEXT:NEXT
1520 FORY=1TO2:FORX=1TO8:GOSUB2530:NEXT:NEXT
1530 PRINTCHR$(159)"":PRINTTAB(27)" SPIELER 1 "
1540 PRINTTAB(27)" [146]"
1550 PRINTTAB(27)"[145] "
1560 POKE214,18:PRINT:PRINTTAB(27)CHR$(30)" SPIELER 2 "
1570 PRINTTAB(27)" [146]"
1580 PRINTTAB(27)"[145] "
1590 POKE214,5:PRINT:PRINTTAB(27)CHR$(5)"ZUG:[146] 1"
1600 POKE214,7:PRINT:PRINTTAB(28)CHR$(158)" [146]"
1610 POKE214,9:PRINT:PRINTTAB(27)CHR$(5)" "
1620 PRINTTAB(27)" "
1630 PRINTTAB(27)"[145] "
1640 READA$:A$=LEFT$(A$,9):POKE214,20:PRINT:PRINTTAB(28)""A$
1650 READA$:A$=LEFT$(A$,9):POKE214,2:PRINT:PRINTTAB(28)""A$
1660 READA$:POKE214,15:PRINT:PRINTTAB(28)A$
1670 ZU=1:Z1=-1:AW=0
1680 REM
1690 REM ************************
1700 REM * -- HAUPTPROGRAMM -- *
1710 REM ************************
1720 REM
1730 PRINT"":Z1=Z1+1:IFZ1=2THENZ1=0:ZU=ZU+1:POKE214,5:PRINT:PRINTTAB(32)CHR$(5)ZU
1740 READA$:IFLEN(A$)<>4THEN1950
1750 REM
1760 REM -- NORMALER ZUG --
1770 REM
1780 B$=LEFT$(A$,2):GOSUB2620:X=X2:Y=Y2
1790 B2$=B$
1800 B$=RIGHT$(A$,2):GOSUB2620
1810 O$="-":IFA(X2,Y2)<>0THENO$="/"
1820 A$=B2$+O$+B$
1830 POKE214,7:PRINT:PRINTTAB(29)CHR$(5)""A$
1840 FORI=1TO4:GOSUB2530:GOSUB2470:NEXT
1850 A1=A(X,Y):A(X,Y)=0:A(X2,Y2)=A1
1860 X=X2:Y=Y2:FORI=1TO4:GOSUB2470:GOSUB2530:NEXT
1865 IFAW=4THENGOSUB2304:AW=1
1870 IFAW=3THENAW=0:RETURN
1880 IFAW=2THEN2890:REM-MATT ODER REMIS-
1890 GOSUB2660
1900 IFAW=1THENAW=0:POKE214,11:PRINT:PRINTTAB(27)" "
1910 GOTO1730
1920 REM
1930 REM -- BESONDERE SITUATIONEN --
1940 REM
1950 IFA$="E"THEN2890
1960 IFA$="SA"THEN2100
1970 IFA$="WA"THEN2120
1980 IFA$="KR"THEN2190
1990 IFA$="LR"THEN2250
2000 PRINTCHR$(5)
2010 B$=RIGHT$(A$,1):A$=LEFT$(A$,4)
2020 IFB$="S"THENAW=1:POKE214,11:PRINT:PRINTTAB(27)"SCHACH !":GOTO1780
2030 IFB$="M"THENAW=2:POKE214,11:PRINT:PRINTTAB(27)" MATT !":GOTO1780
2040 IFB$="R"THENAW=2:POKE214,11:PRINT:PRINTTAB(27)" REMIS !":GOTO1780
2041 IFB$="P"THENAW=2:POKE214,11:PRINT:PRINTTAB(27)" PATT !":GOTO1780
2042 IFB$="W"THENAW=2:POKE214,9:PRINT:PRINTTAB(27)"DRITTE MAL"
2043 IFB$="W"THENPRINTTAB(27)"GLEICHE",TAB(67)"STELLUNG !":GOTO1780
2044 IFB$="Z"THENAW=2:POKE214,9:PRINT:PRINTTAB(27)" 50 ZUEGE"
2045 IFB$="Z"THENPRINTTAB(27)" OHNE",TAB(67)" BAUER !":GOTO1780
2046 IFB$="V"THENAW=4:POKE214,11:PRINT:PRINTTAB(27)"EN-PASSANT":GOTO1780
2050 IFB$="D"ORB$="T"ORB$="H"ORB$="L"THENF$=B$:GOTO2340
2060 PRINT"[147]DATAFEHLER !!!":STOP
2070 REM
2080 REM -- AUFGEBEN --
2090 REM
2100 A$="SCHWARZ"
2110 GOTO2130
2120 A$="WEISS"
2130 POKE214,9:PRINT:PRINTTAB(29)A$
2140 PRINTTAB(27)"GIBT AUF !"
2150 GOTO2890
2160 REM
2170 REM -- KURZE ROCHADE --
2180 REM
2190 Y=1:T=0:IFZ1=1THENY=8:T=6
2200 A(5,Y)=0:A(8,Y)=0:A(6,Y)=8-T:A(7,Y)=12-T:X=5:GOSUB2470:X=8:GOSUB2470
2210 X=6:GOSUB2530:X=7:GOSUB2530:GOTO2280
2220 REM
2230 REM -- LANGE ROCHADE --
2240 REM
2250 Y=1:T=0:IFZ1=1THENY=8:T=6
2260 A(1,Y)=0:A(5,Y)=0:A(3,Y)=12-T:A(4,Y)=8-T
2270 X=1:GOSUB2470:X=5:GOSUB2470:X=3:GOSUB2530:X=4:GOSUB2530
2280 POKE214,11:PRINT:PRINTTAB(29)CHR$(5)"ROCHADE"
2290 GOSUB2660
2300 POKE214,11:PRINT:PRINTTAB(29)" ":GOTO1730
2301 REM
2302 REM -- EN-PASSANT --
2303 REM
2304 IFA1=7THENY=Y-1
2305 IFA1=1THENY=Y+1
2306 A(X,Y)=0:GOSUB2470:RETURN
2310 REM
2320 REM -- TAUSCH AUF DER GRUNDLINIE --
2330 REM
2340 AW=3:GOSUB1780
2350 IF(Y2=8)AND(F$="D")THENA(X2,8)=11
2351 IF(Y2=1)AND(F$="D")THENA(X2,1)=5
2352 IF(Y2=8)AND(F$="T")THENA(X2,8)=8
2353 IF(Y2=1)AND(F$="T")THENA(X2,1)=2
2354 IF(Y2=8)AND(F$="H")THENA(X2,8)=10
2355 IF(Y2=1)AND(F$="H")THENA(X2,1)=4
2356 IF(Y2=8)AND(F$="L")THENA(X2,8)=9
2357 IF(Y2=1)AND(F$="L")THENA(X2,1)=3
2370 X=X2:Y=Y2:GOSUB2530
2380 POKE214,10:PRINT:PRINTTAB(28)CHR$(5);
2381 IFF$="D"THENPRINT"DAME-"
2382 IFF$="T"THENPRINT"TURM-"
2383 IFF$="H"THENPRINT"SPRINGER-"
2384 IFF$="L"THENPRINT"LAEUFER-"
2390 PRINTTAB(28)"TAUSCH"
2400 GOSUB2660:POKE214,010:PRINT:PRINTTAB(28)" ":GOTO1730
2410 PRINTTAB(28)" ":GOTO1730
2420 REM ****** UNTERPROGRAMME ******
2430 REM
2440 REM -- EINZELNE FELDER --
2450 REM -- DRUCKEN --
2460 REM
2470 IFB(X,Y)=1THEN2490
2480 GOSUB2840:POKE646,15:PRINT"[193][193][193][157][157][157][193][193][193][157][157][157][193][193][193]":RETURN
2490 GOSUB2840:PRINT" [157][157][157] [157][157][157] ":RETURN
2500 REM
2510 REM -- FIGUR DRUCKEN --
2520 REM
2530 F=A(X,Y)
2540 GOSUB2840
2550 POKE646,9:IFF>6ANDB(X,Y)=0THEN:PRINT""A$(F-6)"[145]":RETURN
2560 IFF>6ANDB(X,Y)=1THEN:PRINT"[146]"A$(F-6)"[145]":RETURN
2570 POKE646,8:IFB(X,Y)=1THENPRINT"[146]"A$(F)"[145]":RETURN
2580 PRINT""A$(F)"[145]":RETURN
2590 REM
2600 REM -- UMRECHNEN --
2610 REM
2620 B1$=LEFT$(B$,1):X2=ASC(B1$)-64:Y2=VAL(RIGHT$(B$,1)):RETURN
2630 REM
2640 REM -- ZEITSCHLAUFE --
2650 REM
2660 POKE198,0:FORT=1TO250:IFPEEK(197)<>64THEN2680
2670 NEXT:RETURN
2680 IFPEEK(197)=3THEN2700
2690 RETURN
2700 IFPEEK(197)<>64THEN2700
2710 IFPEEK(197)=64THEN2710
2720 RETURN
2730 REM
2740 REM -- GRUNDSTELLUNG --
2750 REM
2760 A(1,1)=8:A(2,1)=10:A(3,1)=9:A(4,1)=11:A(5,1)=12:A(6,1)=9
2770 A(7,1)=10:A(8,1)=8
2780 FORI=1TO8:A(I,8)=A(I,1)-6:NEXT
2790 FORX=1TO8:A(X,2)=7:A(X,7)=1:NEXT
2800 RETURN
2810 REM
2820 REM -- BILDSCHIRMPOSITION --
2830 REM
2840 IFY=8THENPRINT""TAB((X-1)*3+1);:RETURN
2850 X1=(X-1)*3+1:Y1=(8-Y)*3-1:POKE214,Y1:PRINT:PRINTTAB(X1);:RETURN
2860 REM
2870 REM -- SPIELENDE ---
2880 REM
2890 POKE198,0:FORI=1TO10000:IFPEEK(197)=64THENNEXT
2900 FORI=1TO8:FORJ=1TO8:A(I,J)=0:NEXT:NEXT
2910 GOSUB2760:GOTO1290
10000 REM
10010 REM ----- DATA FUER DIE ------
10020 REM ----- PARTIEN ------
10030 REM
10040 REM ** DEMO-PARTIE 1 **
10050 DATASIFF,KASHDAN,1948
10060 DATAD2D4,G8F6,C2C4,E7E6,B1C3,F8B4,D1C2,D7D5,A2A3,B4E7,C4D5,E6D5,C1F4,C7C6
10070 DATAH2H3,KR,E2E3,F8E8,F1D3,B8D7,G1F3,D7F8,F3E5,E7D6,KR,F8E6,F4H2,G7G6
10080 DATAE5F3,E6G7,H2D6,D8D6,F1C1,C8F5,F3D2,E8E7,B2B4,A8E8,A1B1,F5H3,G2H3,E7E3
10090 DATAD3F1,G7F5,F2E3,D6G3S,F1G2,G3E3S,G1H1,F5G3S,H1H2,E3F4,D2F3,E8E2,C3E2
10100 DATAG3E2S,H2H1,F6H5,C2D2,H5G3S,H1H2,G3F1S,H2H1,F4H2S,F3H2,F1G3M
10110 DATAE
10120 REM ** DEMO-PARTIE 2 **
10130 DATAGELLER,EUWE,1953
10140 DATAD2D4,G8F6,C2C4,E7E6,B1C3,F8B4,E2E3,C7C5,A2A3,B4C3,B2C3,B7B6,F1D3,C8B7
10150 DATAF2F3,B8C6,G1E2,KR,KR,C6A5,E3E4,F6E8,E2G3,C5D4,C3D4,A8C8,F3F4,A5C4
10160 DATAF4F5,F7F6,F1F4,B6B5,F4H4,D8B6,E4E5,C4E5,F5E6,E5D3,D1D3,B6E6,D3H7S
10170 DATAG8F7,C1H6,F8H8,H7H8,C8C2,A1C1,C2G2S,G1F1,E6B3,F1E1,B3F3,WA
10180 DATAE
10190 REM ** DEMO-PARTIE 3 **
10200 DATAROSSETTO,STAHLBERG,1947
10210 DATAE2E4,E7E6,D2D4,D7D5,B1C3,G8F6,C1G5,F8E7,E4E5,F6D7,H2H4,C7C5,C3B5,F7F6
10220 DATAF1D3,A7A6,D1H5S,E8F8,H1H3,A6B5,G5H6,D8A5S,H6D2,A5C7,H3G3,C5D4,G1F3
10230 DATAD7E5,G3G7,H7H6,D3H7,F8G7,H5H6S,G7F7,H6H5S,F7G7R
10240 DATAX