10 REM
20 REM        ******** * * * f r a n c i a s a k k * * * ********
30 CLS
50 DIM KIV(50)
60 DIM K(50)
70 DIM P1$(86): DIM Q1$(86)
80 DIM P2$(86): DIM Q2$(86)
90 DIM U$(50)
100 DIM UT$(50, 10)
110 DIM FOGL(8, 8)
120 DIM C$(10, 10)
130 N = 1
140 KIV(1) = 1
150 LEP$ = "(v)": ALD$ = "(s)"
160 DATA -1,1,0,1,1,1,-1,0,1,0,-1,-1,0,-1,1,-1
170 DATA -2,1,-2,-1,2,1,2,-1,-1,2,1,2,-1,-2,1,-2
180 DATA B,H,F,V,K,F,H,B
190 Y$(1) = "*": Y$(2) = "F": Y$(3) = "H": Y$(4) = "B": Y$(5) = "V": Y$(6) = "K"
200 C0$(0) = "     ": C0$(1) = ""
210 Q1$(42) = "/\": P1$(42) = " /\ "
220 Q1$(70) = "/+\": P1$(70) = " /\ "
230 Q1$(72) = "/\ ": P1$(72) = "/۳ "
240 Q1$(66) = "  ": P1$(66) = "ڿ_ڿ"
250 Q1$(86) = "": P1$(86) = "/\/\"
260 Q1$(75) = "\/": P1$(75) = "/\/\"
270 Q2$(42) = "/\": P2$(42) = " /\ "
280 Q2$(70) = "/+\": P2$(70) = " /\ "
290 Q2$(72) = "/\ ": P2$(72) = "/ "
300 Q2$(66) = "  ": P2$(66) = "ڿ_ڿ"
310 Q2$(86) = "߱": P2$(86) = "/\/\"
320 Q2$(75) = "\/": P2$(75) = "/\/\"
330 FOR S = 1 TO 8
340 A$(S) = CHR$(S + 96)
350 B$(S) = RIGHT$(STR$(S), 1)
360 Z(S) = S
370 NEXT S
380 FOR I = 1 TO 23
390 LOCATE I, 1: PRINT RIGHT$(STR$(I), 2); "."
400 NEXT I
410 LOCATE 2, 24: PRINT ""
420 FOR X1 = 25 TO 65
430 LOCATE 2, X1: PRINT "": LOCATE 1, 5 * INT(X1 / 5) + 2: PRINT A$(INT((X1 - 20) / 5))
440 NEXT X1
450 LOCATE 2, 66: PRINT ""
460 FOR X2 = 3 TO 18
470 LOCATE X2, 66: PRINT "": LOCATE X2, 68: PRINT B$(INT((18 - X2) / 2) + 1)
480 NEXT X2
490 LOCATE 19, 66: PRINT ""
500 FOR X3 = 65 TO 25 STEP -1
510 LOCATE 19, X3: PRINT "": LOCATE 20, 5 * INT(X3 / 5) + 2: PRINT A$(INT((X3 - 20) / 5))
520 NEXT X3
530 LOCATE 19, 24: PRINT ""
540 FOR X4 = 18 TO 3 STEP -1
550 LOCATE X4, 24: PRINT "": LOCATE X4, 22: PRINT B$(INT((18 - X4) / 2) + 1)
560 NEXT X4
570 FOR I = 1 TO 8: FOR J = 1 TO 8
580 BRE = I: SZRA = J: BROL = I: SZROL = J
590 GOSUB 2710
600 NEXT J: NEXT I
610 REM
620 REM ************* a kezdlls bevitele *******************
630 LOCATE 22, 40: PRINT "Szabvnytbla? (i)"
640 A$ = INKEY$: IF A$ = "" THEN 640
650 LOCATE 22, 40: PRINT "                  "
660 IF A$ <> "i" AND A$ <> "I" THEN 830
670 E = 1: F = 2: SZIN$ = "(v)"
680 RESTORE 180
690 BROL = 10: SZROL = 4
700 SZRA = E
710 FOR I = 1 TO 8
720 READ Z$
730 C$(I, E) = SZIN$ + Z$
740 BRE = I: GOSUB 2710
750 NEXT I
760 SZRA = F
770 FOR I = 1 TO 8
780 C$(I, F) = SZIN$ + "*"
790 BRE = I: GOSUB 2710
800 NEXT I
810 IF B = 7 THEN B = 0: GOTO 1070
820 SZIN$ = "(s)": E = 8: F = 7: B = 7: GOTO 680
830 IF SZIN$ = "(s)" THEN LOCATE 22, 40: PRINT "Stt?      ": SOUND 2000, .3: GOTO 850
840 LOCATE 22, 40: PRINT "Vilgos?": SZIN$ = "(v)"
850 FOR B = 1 TO 8
860 FOR A = 1 TO 8
870 IF FOGL(A, B) = 1 THEN 1020
880 LOCATE 23, 50: PRINT A$(A); B$(B); "?"
890 LOCATE 21, 30: PRINT "           "
900 T$ = INKEY$: IF T$ = "" THEN 900
910 IF T$ = CHR$(13) THEN 1030
920 IF T$ = " " THEN 1020
930 FOR I = 1 TO 6
940 IF T$ = Y$(I) THEN 970
950 NEXT I
960 SOUND 2000, .3: LOCATE 21, 30: PRINT "rossz bb!": GOTO 900
970 LOCATE 21, 30: PRINT "               "
980 FOGL(A, B) = 1
990 C$(A, B) = SZIN$ + T$
1000 BROL = 10: SZROL = 4
1010 BRE = A: SZRA = B: GOSUB 2710
1020 NEXT A
1030 NEXT B
1040 IF SZIN$ = "(s)" THEN 1070
1050 SZIN$ = "(s)": GOTO 830
1060 REM
1070 LOCATE 23, 50: PRINT "       "
1080 LOCATE 22, 40: PRINT "            "
1090 REM          ****** gyalogtvltozsok **********
1100 RESTORE 180
1110 BROL = 10: SZROL = 4: SZRA = 8
1120 FOR I = 1 TO 8
1130 READ TIS$
1140 IF C$(I, 8) = "(v)*" THEN C$(I, 8) = "(v)" + TIS$ ELSE 1160
1150 BRE = I: GOSUB 2710
1160 NEXT I
1170 RESTORE 180
1180 BROL = 10: SZROL = 4: SZRA = 1
1190 FOR J = 1 TO 8
1200 READ TIS$
1210 IF C$(J, 1) = "(s)*" THEN C$(J, 1) = "(s)" + TIS$ ELSE 1230
1220 BRE = J: GOSUB 2710
1230 NEXT J
1240 REM **************** van-e tsi lehetsg? ****************
1250 K(N) = 1
1260 FOR A = 1 TO 8
1270 FOR B = 1 TO 8
1280 IF MID$(C$(A, B), 1, 3) = ALD$ THEN 1360
1290 F$ = RIGHT$(C$(A, B), 1)
1300 IF F$ = "*" THEN GOSUB 1410
1310 IF F$ = "H" THEN GOSUB 1540
1320 IF F$ = "F" THEN GOSUB 1630
1330 IF F$ = "B" THEN GOSUB 1810
1340 IF F$ = "V" THEN GOSUB 1980
1350 IF F$ = "K" THEN GOSUB 2020
1360 NEXT B
1370 NEXT A
1380 GOTO 2110
1390 LOCATE 22, 30: PRINT "A(z)"; N; ".llsban elsikkasztok nhny tst.": GOTO 2110
1400 REM   *********** gyalog **************
1410 REM                     **** vilgos gyalog ****
1420 IF LEP$ = "(s)" THEN 1480
1430 IF MID$(C$(A + 1, B + 1), 1, 3) = "(s)" THEN UT$(N, K(N)) = A$(A) + B$(B) + ":" + A$(A + 1) + B$(B + 1): K(N) = K(N) + 1
1440 IF K(N) = 11 THEN 1390
1450 IF MID$(C$(A - 1, B + 1), 1, 3) = "(s)" THEN UT$(N, K(N)) = A$(A) + B$(B) + ":" + A$(A - 1) + B$(B + 1): K(N) = K(N) + 1
1460 IF K(N) = 11 THEN 1390
1470 RETURN
1480 REM                   **** stt gyalog ******
1490 IF MID$(C$(A + 1, B - 1), 1, 3) = "(v)" THEN UT$(N, K(N)) = A$(A) + B$(B) + ":" + A$(A + 1) + B$(B - 1): K(N) = K(N) + 1
1500 IF K(N) = 11 THEN 1390
1510 IF MID$(C$(A - 1, B - 1), 1, 3) = "(v)" THEN UT$(N, K(N)) = A$(A) + B$(B) + ":" + A$(A - 1) + B$(B - 1): K(N) = K(N) + 1
1520 IF K(N) = 11 THEN 1390
1530 RETURN
1540 REM                *********** huszr **************
1550 RESTORE 170
1560 FOR S = 1 TO 8
1570 READ X, Y
1580 IF A + X < 1 OR A + X > 8 OR B + Y < 1 OR B + Y > 8 THEN 1610
1590 IF MID$(C$(A + X, B + Y), 1, 3) = ALD$ THEN UT$(N, K(N)) = A$(A) + B$(B) + ":" + A$(A + X) + B$(B + Y): K(N) = K(N) + 1
1600 IF K(N) = 11 THEN 1390
1610 NEXT S
1620 RETURN
1630 REM          *********** fut (vagy vezr) **************
1640 IR$ = "jf"
1650 FOR S = 1 TO 7
1660 IF IR$ = "jf" THEN VA = A + S: VB = B + S
1670 IF IR$ = "bf" THEN VA = A - S: VB = B + S
1680 IF IR$ = "bl" THEN VA = A - S: VB = B - S
1690 IF IR$ = "jl" THEN VA = A + S: VB = B - S
1700 IF VA > 8 OR VA < 1 OR VB > 8 OR VB < 1 THEN 1770
1710 VIZS$ = MID$(C$(VA, VB), 1, 3)
1720 IF VIZS$ = LEP$ THEN 1770
1730 IF VIZS$ = ALD$ THEN UT$(N, K(N)) = A$(A) + B$(B) + ":" + A$(VA) + B$(VB): K(N) = K(N) + 1: GOTO 1760
1740 NEXT S
1750 GOTO 1800
1760 IF K(N) = 11 THEN 1390
1770 IF IR$ = "jf" THEN IR$ = "bf": GOTO 1650
1780 IF IR$ = "bf" THEN IR$ = "bl": GOTO 1650
1790 IF IR$ = "bl" THEN IR$ = "jl": GOTO 1650
1800 RETURN
1810 REM             *********** bstya (vagy vezr) **************
1820 IR$ = "f"
1830 FOR I = 1 TO 7
1840 IF IR$ = "f" THEN VA = A: VB = B + I
1850 IF IR$ = "l" THEN VA = A: VB = B - I
1860 IF IR$ = "b" THEN VA = A - I: VB = B
1870 IF IR$ = "j" THEN VA = A + I: VB = B
1880 IF VA > 8 OR VA < 1 OR VB > 8 OR VB < 1 THEN 1940
1890 VIZS$ = MID$(C$(VA, VB), 1, 3)
1900 IF VIZS$ = LEP$ THEN 1940
1910 IF VIZS$ = ALD$ THEN UT$(N, K(N)) = A$(A) + B$(B) + ":" + A$(VA) + B$(VB): K(N) = K(N) + 1: GOTO 1930
1920 NEXT I
1930 IF K(N) = 11 THEN 1390
1940 IF IR$ = "f" THEN IR$ = "l": GOTO 1830
1950 IF IR$ = "l" THEN IR$ = "b": GOTO 1830
1960 IF IR$ = "b" THEN IR$ = "j": GOTO 1830
1970 RETURN
1980 REM               *********** vezr  **************
1990 GOSUB 1630
2000 GOSUB 1810
2010 RETURN
2020 REM              *********** kirly **************
2030 RESTORE
2040 FOR I = 1 TO 8
2050 READ X, Y
2060 IF A + X > 8 OR A + X < 1 OR B + Y > 8 OR B + Y < 1 THEN 2090
2070 IF ALD$ = MID$(C$(A + X, B + Y), 1, 3) THEN UT$(N, K(N)) = A$(A) + B$(B) + ":" + A$(A + X) + B$(B + Y): K(N) = K(N) + 1
2080 IF K(N) = 11 THEN 1390
2090 NEXT I
2100 RETURN
2110 REM          ************* emberi rtkelfggvny ************
2120 LOCATE 21, 40: PRINT LEP$; "lp... Na,mi lesz mr?"
2130 B$ = INKEY$
2140 IF B$ = "" THEN 2130
2150 LOCATE 21, 40: PRINT "                            "
2160 LOCATE 22, 30: PRINT "                                              "
2170 IF B$ = "+" THEN J = 2: GOTO 2910
2180 IF B$ = "-" THEN 2910
2190 IF K(N) > 1 THEN 2560
2200 REM ************** lpst kr be ***********************
2210 LOCATE 21, 30: PRINT LEP$; " van soron. Mit lp? (csere:<x>)"
2220 CSE = 0: WC = 0
2230 IF WC = 3 THEN LOCATE 21, 40: PRINT "Csere,rd be a kt mezt!       "
2240 D$ = INKEY$
2250 IF D$ = "" THEN 2240
2260 LOCATE 21, 30: PRINT "                                        "
2270 IF WC = 3 THEN 2290
2280 IF D$ = "x" OR D$ = "X" THEN CSE = 5: WC = 3: GOTO 2230
2290 P = ASC(D$)
2300 IF P > 104 OR P < 96 THEN LOCATE 22, 40: PRINT "Rossz bet!": SOUND 2000, .3: GOTO 2240
2310 E = Z(ASC(D$) - 96)
2320 LOCATE 22, 40: PRINT "              "
2330 E$ = INKEY$
2340 IF E$ = "" THEN 2330
2350 FOR G = 1 TO 8
2360 IF E$ = RIGHT$(STR$(G), 1) THEN 2390
2370 NEXT G
2380 LOCATE 23, 40: PRINT "Rossz szm!": SOUND 2000, .3: GOTO 2330
2390 LOCATE 23, 40: PRINT "             "
2400 IF LEP = 1 THEN 2430
2410 BROL = E: SZROL = VAL(E$)
2420 LEP = 1: LOCATE 21, 40: PRINT "Hov?": GOTO 2240
2430 LOCATE 21, 40: PRINT "      "
2440 BRE = E: SZRA = VAL(E$)
2450 IF MID$(C$(BROL, SZROL), 1, 3) <> LEP$ THEN LOCATE 22, 30: PRINT "Sajt bbbal lpj!": LEP = 0: GOTO 2210
2460 LOCATE 22, 30: PRINT "                      "
2470 IF CSE = 5 THEN V$ = CHR$(18) ELSE V$ = "-"
2480 J$ = A$(BROL) + RIGHT$(STR$(SZROL), 1) + V$ + A$(BRE) + RIGHT$(STR$(SZRA), 1)
2490 LOCATE 22, 30: PRINT "A lps:  "; J$; "      "
2500 LOCATE 23, 40: PRINT "Javtasz(i)?"
2510 G$ = INKEY$: IF G$ = "" THEN 2510
2520 LOCATE 22, 30: PRINT "                      "
2530 LOCATE 23, 40: PRINT "              "
2540 IF G$ = "i" OR G$ = "I" THEN LEP = 0: GOTO 2210
2550 LEP = 0
2560 REM          ****** a lps (ts) beiktatsa ******
2570 REM
2580 IF K(N) > 1 THEN J$ = UT$(N, KIV(N))
2590 BROL = Z(ASC(MID$(J$, 1, 1)) - 96): SZROL = VAL(MID$(J$, 2, 1))
2600  BRE = Z(ASC(MID$(J$, 4, 1)) - 96): SZRA = VAL(MID$(J$, 5, 1))
2610 K$ = RIGHT$(C$(BROL, SZROL), 1) + J$
2620 U$(N) = C$(BROL, SZROL) + J$ + C$(BRE, SZRA)
2630 C$(BRE, SZRA) = LEFT$(U$(N), 4): C$(BROL, SZROL) = "    "
2640 U = INT(N / 2 - .4) + 1
2650 V = (INT(N / 2)) * 16 - N * 8 + 13
2660 IF N < 47 THEN LOCATE U, V: PRINT K$
2670 IF MID$(U$(N), 7, 1) = CHR$(18) THEN C$(BROL, SZROL) = RIGHT$(U$(N), 4): CSE = 0: M = 4
2680 S$ = ALD$: ALD$ = LEP$: LEP$ = S$: S$ = ""
2690 GOSUB 2710
2700 N = N + 1: K(N) = 1: KIV(N) = 1: GOTO 1070
2710 REM   ********************** egyszeri kirs ********************
2720 H = 2 * ((BROL + SZROL) / 2 - INT((BROL + SZROL) / 2))
2730 G = 2 * ((BRE + SZRA) / 2 - INT((BRE + SZRA) / 2))
2740 ROL1$ = C0$(H): ROL2$ = C0$(H)
2750 RA1$ = C0$(G): RA2$ = C0$(G)
2760 G$ = MID$(C$(BRE, SZRA), 4, 1)
2770 Z$ = MID$(C$(BRE, SZRA), 2, 1)
2780 IF Z$ = "v" THEN RA1$ = P1$(ASC(G$)): RA2$ = Q1$(ASC(G$))
2790 IF Z$ = "s" THEN RA1$ = P2$(ASC(G$)): RA2$ = Q2$(ASC(G$))
2800 IF M = 0 THEN 2860
2810 M = 0
2820 H$ = MID$(C$(BROL, SZROL), 4, 1)
2830 Y$ = MID$(C$(BROL, SZROL), 2, 1)
2840 IF Y$ = "v" THEN ROL1$ = P1$(ASC(H$)): ROL2$ = Q1$(ASC(H$))
2850 IF Y$ = "s" THEN ROL1$ = P2$(ASC(H$)): ROL2$ = Q2$(ASC(H$))
2860 LOCATE -2 * SZROL + 19, BROL * 5 + 20: PRINT ROL1$
2870 LOCATE -2 * SZROL + 20, BROL * 5 + 20: PRINT ROL2$
2880 LOCATE -2 * SZRA + 19, BRE * 5 + 20: PRINT RA1$
2890 LOCATE -2 * SZRA + 20, BRE * 5 + 20: PRINT RA2$
2900 RETURN
2910 REM ************** visszalps **********************
2920 IF N > 1 THEN 2950
2930 IF J = 2 THEN LOCATE 22, 60: PRINT "(s) elbukta!": END
2940 LOCATE 22, 60: PRINT "(v) elbukta!": END
2950 FOR I = 1 TO K(N) - 1
2960 UT$(N, I) = ""
2970 NEXT I
2980 N = N - 1
2990 BROL = Z(ASC(MID$(U$(N), 8, 1)) - 96): SZROL = VAL(MID$(U$(N), 9, 1))
3000  BRE = Z(ASC(MID$(U$(N), 5, 1)) - 96): SZRA = VAL(MID$(U$(N), 6, 1))
3010 I$ = MID$(U$(N), 7, 1)
3020 IF I$ = CHR$(18) OR I$ = ":" THEN M = 4
3030 C$(BROL, SZROL) = "    "
3040 IF M = 4 THEN C$(BROL, SZROL) = RIGHT$(U$(N), 4)
3050 C$(BRE, SZRA) = LEFT$(U$(N), 4)
3060 GOSUB 2710
3070 U$(N) = ""
3080 U = INT(N / 2 - .4) + 1
3090 V = (INT(N / 2)) * 16 - N * 8 + 13
3100 IF N <= 46 THEN LOCATE U, V: PRINT "      "
3110 S$ = ALD$: ALD$ = LEP$: LEP$ = S$
3120 IF J = 2 THEN J = 0: GOTO 3140
3130 J = 2: GOTO 2910
3140 IF KIV(N) = K(N) - 1 THEN 2910
3150 IF K(N) > 1 THEN KIV(N) = KIV(N) + 1: GOTO 2560
3160 GOTO 2110

