home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / s85xx / s8506a.d64 / schachmeister (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  9KB  |  341 lines

  1. 10 REM ********************************
  2. 20 REM *      >> SCHACHMEISTER <<     *
  3. 30 REM *                              *
  4. 40 REM * THOMAS BEHREND               *
  5. 50 REM * IN DER WANNE 16    7900 ULM  *
  6. 60 REM *     (8.1984)                 *
  7. 70 REM ********************************
  8. 80 REM
  9. 90 REM  -- ALLE REM-ZEILEN KOENNEN  --
  10. 100 REM -- WEGGELASSEN WERDEN       --
  11. 110 REM
  12. 120 REM -- NEUE ZEICHEN --
  13. 130 REM
  14. 140 POKE53281,6:POKE53280,1:PRINT"[147]"CHR$(5)
  15. 150 DATA120,169,51,133,1,169,0,133,95,133,90,133,88,169,208,133,96,169,240,133
  16. 160 DATA89,169,224,133,91,32,191,163,169,55,133,1,88,96
  17. 170 REM -- MC-PROGRAMM --
  18. 180 J=4097:FORI=832TO865:READA:J=J-A:POKEI,A:NEXT
  19. 190 IFJ<>0THENPRINT"DATA-FEHLER IN ZEILE 15-20":STOP
  20. 200 SYS832:POKE850,160:SYS832:POKE56576,PEEK(56576)AND252:POKE53272,8
  21. 210 POKE648,192:PRINT""TAB(5)"> SCHACHMEISTER <"
  22. 220 PRINT""TAB(5)"BITTE EINEN MOMENT WARTEN..."
  23. 230 AD=57344:FORI=64TO91:B=AD+I*8:FORJ=0TO7:READC:POKEB+J,C:NEXT:NEXT
  24. 240 FORI=192TO219:B=AD+I*8:FORJ=0TO7:READC:POKEB+J,C:NEXT:NEXT
  25. 250 I=175:B=AD+I*8:FORJ=0TO7:READC:POKEB+J,C:NEXT
  26. 260 POKE56,130
  27. 270 REM
  28. 280 REM -- DATA FUER SCHACHFIGUREN --
  29. 290 REM
  30. 300 DATA0,0,60,60,255,255,60,60
  31. 310 DATA0,0,0,0,0,0,0,0
  32. 320 DATA0,0,0,0,60,255,255,255
  33. 330 DATA255,255,60,60,60,60,60,60
  34. 340 DATA0,0,3,3,15,10,0,0
  35. 350 DATA60,255,255,255,255,170,0,0
  36. 360 DATA0,0,192,192,240,160,0,0
  37. 370 DATA0,0,3,3,3,3,3,3
  38. 380 DATA0,0,60,60,60,255,255,255
  39. 390 DATA0,0,192,192,192,192,192,192
  40. 400 DATA3,0,0,0,0,0,0,0
  41. 410 DATA255,60,60,60,60,60,60,60
  42. 420 DATA255,255,255,255,255,255,255,255
  43. 430 DATA192,0,0,0,0,0,0,0
  44. 440 DATA0,0,60,60,240,195,255,255
  45. 450 DATA255,255,255,255,255,170,0,0
  46. 460 DATA0,0,0,0,192,192,0,0
  47. 470 DATA0,0,0,0,0,3,3,15
  48. 480 DATA0,48,48,63,255,207,207,255
  49. 490 DATA0,0,0,0,192,192,192,192
  50. 500 DATA63,63,63,60,0,0,0,3
  51. 510 DATA255,207,15,63,63,255,255,255
  52. 520 DATA192,192,0,0,0,0,0,192
  53. 530 DATA3,3,3,3,15,10,0,0
  54. 540 DATA192,240,240,240,240,160,0,0
  55. 550 DATA0,0,12,15,3,3,3,3
  56. 560 DATA0,0,48,240,192,192,192,192
  57. 570 DATA0,0,0,0,3,3,0,0
  58. 580 DATA85,85,125,125,255,255,125,125
  59. 590 DATA85,85,85,85,85,85,85,85
  60. 600 DATA85,85,85,85,125,255,255,255
  61. 610 DATA255,255,125,125,125,125,125,125
  62. 620 DATA85,85,87,87,95,90,85,85
  63. 630 DATA125,255,255,255,255,170,85,85
  64. 640 DATA85,85,213,213,245,165,85,85
  65. 650 DATA85,85,87,87,87,87,87,87
  66. 660 DATA85,85,125,125,125,255,255,255
  67. 670 DATA85,85,213,213,213,213,213,213
  68. 680 DATA87,85,85,85,85,85,85,85
  69. 690 DATA255,125,125,125,125,125,125,125
  70. 700 DATA255,255,255,255,255,255,255,255
  71. 710 DATA213,85,85,85,85,85,85,85
  72. 720 DATA85,85,125,125,245,215,255,255
  73. 730 DATA255,255,255,255,255,170,85,85
  74. 740 DATA85,85,85,85,213,213,85,85
  75. 750 DATA85,85,85,85,85,87,87,95
  76. 760 DATA85,117,117,127,255,223,223,255
  77. 770 DATA85,85,85,85,213,213,213,213
  78. 780 DATA127,127,127,125,85,85,85,87
  79. 790 DATA255,223,95,127,127,255,255,255
  80. 800 DATA213,213,85,85,85,85,85,213
  81. 810 DATA87,87,87,87,95,90,85,85
  82. 820 DATA213,245,245,245,245,165,85,85
  83. 830 DATA85,85,93,95,87,87,87,87
  84. 840 DATA85,85,117,245,213,213,213,213
  85. 850 DATA85,85,85,85,87,87,85,85
  86. 860 DATA126,189,215,231,231,215,189,126
  87. 870 REM
  88. 880 REM -- VARIABLEN UND FELDER --
  89. 890 REM
  90. 895 DIMA$(12)
  91. 900 B$(1)="ABAACADEF":REM BAUER
  92. 910 B$(2)="GHIJLMDOF":REM TURM
  93. 920 B$(3)="ANAAKADEF":REM LAEUFER
  94. 930 B$(4)="QRSTUVWOX":REM PFERD
  95. 940 B$(5)="YHZACADEF":REM DAME
  96. 950 B$(6)="[@PJCMDEF":REM KOENIG
  97. 960 FORI=1TO6:FORJ=0TO2:FORK=1TO3
  98. 970 A$=MID$(B$(I),J*3+K,1):A$(I)=A$(I)+CHR$(ASC(A$)+128):NEXT
  99. 980 A$(I)=A$(I)+"[157][157][157]":NEXT:NEXT
  100. 990 DIMB(8,8)
  101. 1000 FORI=7TO1STEP-2:FORJ=1TO7STEP2:B(I,J)=1:NEXT:NEXT
  102. 1010 FORI=8TO2STEP-2:FORJ=2TO8STEP2:B(I,J)=1:NEXT:NEXT
  103. 1020 DIMA(8,8)
  104. 1030 GOSUB2760
  105. 1040 Z1$="[159]              "
  106. 1050 :
  107. 1060 REM
  108. 1070 REM -- MULTICOLOR-MODUS --
  109. 1080 REM -- EINSCHALTEN      --
  110. 1090 REM
  111. 1100 POKE53281,6:POKE53282,7:POKE53283,5
  112. 1110 POKE53270,PEEK(53270)OR16
  113. 1120 REM
  114. 1130 REM -- LISTE DER PARTIEN --
  115. 1140 REM -- AUFSTELLEN        --
  116. 1150 REM
  117. 1160 DATA-1
  118. 1170 RESTORE:DA=0
  119. 1180 DA=DA+1:READA:IFA=-1THEN1200
  120. 1190 GOTO1180
  121. 1200 DIMP(20),P$(20),P1$(20),JA$(20):P=0:D=0
  122. 1210 P=P+1:READP$(P),P1$(P),JA$(P):D=D+3
  123. 1220 READA$:D=D+1:IFA$="E"ORA$="X"THEN1240
  124. 1230 GOTO1220
  125. 1240 IFA$="X"THEN1290
  126. 1250 P(P)=D:GOTO1210
  127. 1260 REM
  128. 1270 REM -- AUSWAHLMENUE --
  129. 1280 REM
  130. 1290 RESTORE:FORI=1TODA:READA:NEXT
  131. 1300 PRINTCHR$(5)"[147]   - AUSWAHL -"
  132. 1310 PRINT:PRINT
  133. 1320 FORI=1TOP:PRINTI;TAB(5)P$(I)TAB(16)P1$(I),JA$(I):NEXT
  134. 1330 POKE198,0:INPUT"";W:IFW<1ORW>PTHEN1330
  135. 1340 PRINT"[147]":IFW=1THEN1390
  136. 1350 FORI=1TOP(W-1):READA$:NEXT
  137. 1360 REM
  138. 1370 REM -- SPIELBRETT --
  139. 1380 REM
  140. 1390 FORI=1TO24:PRINTCHR$(159)TAB(0)" "TAB(25)Z1$:NEXT
  141. 1400 PRINTCHR$(5)"";
  142. 1410 FORY=8TO1STEP-1:X=1:GOSUB2840:PRINT"[157][157]"Y:X=8:GOSUB2840
  143. 1420 PRINT""Y:NEXT
  144. 1430 FORY=8TO1STEP-1:FORX=1TO8
  145. 1440 GOSUB2470
  146. 1450 NEXT:NEXT
  147. 1460 PRINT""
  148. 1470 REM
  149. 1480 REM -- ANFANGSSTELLUNG --
  150. 1490 REM
  151. 1500 FORY=7TO8:FORX=1TO8
  152. 1510 GOSUB2530:NEXT:NEXT
  153. 1520 FORY=1TO2:FORX=1TO8:GOSUB2530:NEXT:NEXT
  154. 1530 PRINTCHR$(159)"":PRINTTAB(27)" SPIELER 1 "
  155. 1540 PRINTTAB(27)"           [146]"
  156. 1550 PRINTTAB(27)"[145]           "
  157. 1560 POKE214,18:PRINT:PRINTTAB(27)CHR$(30)" SPIELER 2 "
  158. 1570 PRINTTAB(27)"           [146]"
  159. 1580 PRINTTAB(27)"[145]           "
  160. 1590 POKE214,5:PRINT:PRINTTAB(27)CHR$(5)"ZUG:[146]  1"
  161. 1600 POKE214,7:PRINT:PRINTTAB(28)CHR$(158)"       [146]"
  162. 1610 POKE214,9:PRINT:PRINTTAB(27)CHR$(5)"          "
  163. 1620 PRINTTAB(27)"          "
  164. 1630 PRINTTAB(27)"[145]          "
  165. 1640 READA$:A$=LEFT$(A$,9):POKE214,20:PRINT:PRINTTAB(28)""A$
  166. 1650 READA$:A$=LEFT$(A$,9):POKE214,2:PRINT:PRINTTAB(28)""A$
  167. 1660 READA$:POKE214,15:PRINT:PRINTTAB(28)A$
  168. 1670 ZU=1:Z1=-1:AW=0
  169. 1680 REM
  170. 1690 REM ************************
  171. 1700 REM *  -- HAUPTPROGRAMM -- *
  172. 1710 REM ************************
  173. 1720 REM
  174. 1730 PRINT"":Z1=Z1+1:IFZ1=2THENZ1=0:ZU=ZU+1:POKE214,5:PRINT:PRINTTAB(32)CHR$(5)ZU
  175. 1740 READA$:IFLEN(A$)<>4THEN1950
  176. 1750 REM
  177. 1760 REM -- NORMALER ZUG --
  178. 1770 REM
  179. 1780 B$=LEFT$(A$,2):GOSUB2620:X=X2:Y=Y2
  180. 1790 B2$=B$
  181. 1800 B$=RIGHT$(A$,2):GOSUB2620
  182. 1810 O$="-":IFA(X2,Y2)<>0THENO$="/"
  183. 1820 A$=B2$+O$+B$
  184. 1830 POKE214,7:PRINT:PRINTTAB(29)CHR$(5)""A$
  185. 1840 FORI=1TO4:GOSUB2530:GOSUB2470:NEXT
  186. 1850 A1=A(X,Y):A(X,Y)=0:A(X2,Y2)=A1
  187. 1860 X=X2:Y=Y2:FORI=1TO4:GOSUB2470:GOSUB2530:NEXT
  188. 1865 IFAW=4THENGOSUB2304:AW=1
  189. 1870 IFAW=3THENAW=0:RETURN
  190. 1880 IFAW=2THEN2890:REM-MATT ODER REMIS-
  191. 1890 GOSUB2660
  192. 1900 IFAW=1THENAW=0:POKE214,11:PRINT:PRINTTAB(27)"          "
  193. 1910 GOTO1730
  194. 1920 REM
  195. 1930 REM -- BESONDERE SITUATIONEN --
  196. 1940 REM
  197. 1950 IFA$="E"THEN2890
  198. 1960 IFA$="SA"THEN2100
  199. 1970 IFA$="WA"THEN2120
  200. 1980 IFA$="KR"THEN2190
  201. 1990 IFA$="LR"THEN2250
  202. 2000 PRINTCHR$(5)
  203. 2010 B$=RIGHT$(A$,1):A$=LEFT$(A$,4)
  204. 2020 IFB$="S"THENAW=1:POKE214,11:PRINT:PRINTTAB(27)"SCHACH !":GOTO1780
  205. 2030 IFB$="M"THENAW=2:POKE214,11:PRINT:PRINTTAB(27)" MATT !":GOTO1780
  206. 2040 IFB$="R"THENAW=2:POKE214,11:PRINT:PRINTTAB(27)" REMIS !":GOTO1780
  207. 2041 IFB$="P"THENAW=2:POKE214,11:PRINT:PRINTTAB(27)" PATT !":GOTO1780
  208. 2042 IFB$="W"THENAW=2:POKE214,9:PRINT:PRINTTAB(27)"DRITTE MAL"
  209. 2043 IFB$="W"THENPRINTTAB(27)"GLEICHE",TAB(67)"STELLUNG !":GOTO1780
  210. 2044 IFB$="Z"THENAW=2:POKE214,9:PRINT:PRINTTAB(27)" 50 ZUEGE"
  211. 2045 IFB$="Z"THENPRINTTAB(27)"   OHNE",TAB(67)"  BAUER !":GOTO1780
  212. 2046 IFB$="V"THENAW=4:POKE214,11:PRINT:PRINTTAB(27)"EN-PASSANT":GOTO1780
  213. 2050 IFB$="D"ORB$="T"ORB$="H"ORB$="L"THENF$=B$:GOTO2340
  214. 2060 PRINT"[147]DATAFEHLER !!!":STOP
  215. 2070 REM
  216. 2080 REM -- AUFGEBEN --
  217. 2090 REM
  218. 2100 A$="SCHWARZ"
  219. 2110 GOTO2130
  220. 2120 A$="WEISS"
  221. 2130 POKE214,9:PRINT:PRINTTAB(29)A$
  222. 2140 PRINTTAB(27)"GIBT AUF !"
  223. 2150 GOTO2890
  224. 2160 REM
  225. 2170 REM -- KURZE ROCHADE --
  226. 2180 REM
  227. 2190 Y=1:T=0:IFZ1=1THENY=8:T=6
  228. 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
  229. 2210 X=6:GOSUB2530:X=7:GOSUB2530:GOTO2280
  230. 2220 REM
  231. 2230 REM -- LANGE ROCHADE --
  232. 2240 REM
  233. 2250 Y=1:T=0:IFZ1=1THENY=8:T=6
  234. 2260 A(1,Y)=0:A(5,Y)=0:A(3,Y)=12-T:A(4,Y)=8-T
  235. 2270 X=1:GOSUB2470:X=5:GOSUB2470:X=3:GOSUB2530:X=4:GOSUB2530
  236. 2280 POKE214,11:PRINT:PRINTTAB(29)CHR$(5)"ROCHADE"
  237. 2290 GOSUB2660
  238. 2300 POKE214,11:PRINT:PRINTTAB(29)"       ":GOTO1730
  239. 2301 REM
  240. 2302 REM -- EN-PASSANT --
  241. 2303 REM
  242. 2304 IFA1=7THENY=Y-1
  243. 2305 IFA1=1THENY=Y+1
  244. 2306 A(X,Y)=0:GOSUB2470:RETURN
  245. 2310 REM
  246. 2320 REM -- TAUSCH AUF DER GRUNDLINIE --
  247. 2330 REM
  248. 2340 AW=3:GOSUB1780
  249. 2350 IF(Y2=8)AND(F$="D")THENA(X2,8)=11
  250. 2351 IF(Y2=1)AND(F$="D")THENA(X2,1)=5
  251. 2352 IF(Y2=8)AND(F$="T")THENA(X2,8)=8
  252. 2353 IF(Y2=1)AND(F$="T")THENA(X2,1)=2
  253. 2354 IF(Y2=8)AND(F$="H")THENA(X2,8)=10
  254. 2355 IF(Y2=1)AND(F$="H")THENA(X2,1)=4
  255. 2356 IF(Y2=8)AND(F$="L")THENA(X2,8)=9
  256. 2357 IF(Y2=1)AND(F$="L")THENA(X2,1)=3
  257. 2370 X=X2:Y=Y2:GOSUB2530
  258. 2380 POKE214,10:PRINT:PRINTTAB(28)CHR$(5);
  259. 2381 IFF$="D"THENPRINT"DAME-"
  260. 2382 IFF$="T"THENPRINT"TURM-"
  261. 2383 IFF$="H"THENPRINT"SPRINGER-"
  262. 2384 IFF$="L"THENPRINT"LAEUFER-"
  263. 2390 PRINTTAB(28)"TAUSCH"
  264. 2400 GOSUB2660:POKE214,010:PRINT:PRINTTAB(28)"         ":GOTO1730
  265. 2410 PRINTTAB(28)"    ":GOTO1730
  266. 2420 REM ****** UNTERPROGRAMME ******
  267. 2430 REM
  268. 2440 REM -- EINZELNE FELDER --
  269. 2450 REM -- DRUCKEN         --
  270. 2460 REM
  271. 2470 IFB(X,Y)=1THEN2490
  272. 2480 GOSUB2840:POKE646,15:PRINT"[193][193][193][157][157][157][193][193][193][157][157][157][193][193][193]":RETURN
  273. 2490 GOSUB2840:PRINT"   [157][157][157]   [157][157][157]   ":RETURN
  274. 2500 REM
  275. 2510 REM -- FIGUR DRUCKEN --
  276. 2520 REM
  277. 2530 F=A(X,Y)
  278. 2540 GOSUB2840
  279. 2550 POKE646,9:IFF>6ANDB(X,Y)=0THEN:PRINT""A$(F-6)"[145]":RETURN
  280. 2560 IFF>6ANDB(X,Y)=1THEN:PRINT"[146]"A$(F-6)"[145]":RETURN
  281. 2570 POKE646,8:IFB(X,Y)=1THENPRINT"[146]"A$(F)"[145]":RETURN
  282. 2580 PRINT""A$(F)"[145]":RETURN
  283. 2590 REM
  284. 2600 REM -- UMRECHNEN --
  285. 2610 REM
  286. 2620 B1$=LEFT$(B$,1):X2=ASC(B1$)-64:Y2=VAL(RIGHT$(B$,1)):RETURN
  287. 2630 REM
  288. 2640 REM -- ZEITSCHLAUFE --
  289. 2650 REM
  290. 2660 POKE198,0:FORT=1TO250:IFPEEK(197)<>64THEN2680
  291. 2670 NEXT:RETURN
  292. 2680 IFPEEK(197)=3THEN2700
  293. 2690 RETURN
  294. 2700 IFPEEK(197)<>64THEN2700
  295. 2710 IFPEEK(197)=64THEN2710
  296. 2720 RETURN
  297. 2730 REM
  298. 2740 REM -- GRUNDSTELLUNG --
  299. 2750 REM
  300. 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
  301. 2770 A(7,1)=10:A(8,1)=8
  302. 2780 FORI=1TO8:A(I,8)=A(I,1)-6:NEXT
  303. 2790 FORX=1TO8:A(X,2)=7:A(X,7)=1:NEXT
  304. 2800 RETURN
  305. 2810 REM
  306. 2820 REM -- BILDSCHIRMPOSITION --
  307. 2830 REM
  308. 2840 IFY=8THENPRINT""TAB((X-1)*3+1);:RETURN
  309. 2850 X1=(X-1)*3+1:Y1=(8-Y)*3-1:POKE214,Y1:PRINT:PRINTTAB(X1);:RETURN
  310. 2860 REM
  311. 2870 REM -- SPIELENDE ---
  312. 2880 REM
  313. 2890 POKE198,0:FORI=1TO10000:IFPEEK(197)=64THENNEXT
  314. 2900 FORI=1TO8:FORJ=1TO8:A(I,J)=0:NEXT:NEXT
  315. 2910 GOSUB2760:GOTO1290
  316. 10000 REM
  317. 10010 REM -----  DATA FUER DIE   ------
  318. 10020 REM -----  PARTIEN         ------
  319. 10030 REM
  320. 10040 REM ** DEMO-PARTIE 1 **
  321. 10050 DATASIFF,KASHDAN,1948
  322. 10060 DATAD2D4,G8F6,C2C4,E7E6,B1C3,F8B4,D1C2,D7D5,A2A3,B4E7,C4D5,E6D5,C1F4,C7C6
  323. 10070 DATAH2H3,KR,E2E3,F8E8,F1D3,B8D7,G1F3,D7F8,F3E5,E7D6,KR,F8E6,F4H2,G7G6
  324. 10080 DATAE5F3,E6G7,H2D6,D8D6,F1C1,C8F5,F3D2,E8E7,B2B4,A8E8,A1B1,F5H3,G2H3,E7E3
  325. 10090 DATAD3F1,G7F5,F2E3,D6G3S,F1G2,G3E3S,G1H1,F5G3S,H1H2,E3F4,D2F3,E8E2,C3E2
  326. 10100 DATAG3E2S,H2H1,F6H5,C2D2,H5G3S,H1H2,G3F1S,H2H1,F4H2S,F3H2,F1G3M
  327. 10110 DATAE
  328. 10120 REM ** DEMO-PARTIE 2 **
  329. 10130 DATAGELLER,EUWE,1953
  330. 10140 DATAD2D4,G8F6,C2C4,E7E6,B1C3,F8B4,E2E3,C7C5,A2A3,B4C3,B2C3,B7B6,F1D3,C8B7
  331. 10150 DATAF2F3,B8C6,G1E2,KR,KR,C6A5,E3E4,F6E8,E2G3,C5D4,C3D4,A8C8,F3F4,A5C4
  332. 10160 DATAF4F5,F7F6,F1F4,B6B5,F4H4,D8B6,E4E5,C4E5,F5E6,E5D3,D1D3,B6E6,D3H7S
  333. 10170 DATAG8F7,C1H6,F8H8,H7H8,C8C2,A1C1,C2G2S,G1F1,E6B3,F1E1,B3F3,WA
  334. 10180 DATAE
  335. 10190 REM ** DEMO-PARTIE 3 **
  336. 10200 DATAROSSETTO,STAHLBERG,1947
  337. 10210 DATAE2E4,E7E6,D2D4,D7D5,B1C3,G8F6,C1G5,F8E7,E4E5,F6D7,H2H4,C7C5,C3B5,F7F6
  338. 10220 DATAF1D3,A7A6,D1H5S,E8F8,H1H3,A6B5,G5H6,D8A5S,H6D2,A5C7,H3G3,C5D4,G1F3
  339. 10230 DATAD7E5,G3G7,H7H6,D3H7,F8G7,H5H6S,G7F7,H6H5S,F7G7R
  340. 10240 DATAX
  341.