reversi_sss.tap
reversi_sss.z80
Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)

    2 A9=2
    8 A5$=""
   10 REM VERFASSER: ENGER / RED
   12 REM KITTELMANN/SCHROETER/MKD
   14 REM VERSION 1
   16 REM
   18 BORDER A9:INK 8:PAPER 1:WINDOW:CLS
   30 DIM BE(64):AN=-4916
   98! UP TITELBILD 
  118 GOSUB 120:GOTO 4000
  119 REM UP >ENTER< 
  120!
  122 WINDOW 22,23,24,39:CLS:PRINT INK 1;AT(22,24);" ":
  123 PRINT INK 4;AT(22,31);">ENTER<"
  124 IF INKEY$=""THEN 124
  126 RETURN
  149 REM UP J/N ABFRAGE 
  150 PRINT INK 4;AT(22,(34-LEN(KY$)));KY$," ? J"
  152 T$=INKEY$:IF T$=""THEN 152
  153 PRINT INK 2;AT(22,37);T$
  154 IF ASC(T$)=74 OR ASC(T$)=13 THEN T=1:PRINT AT(20,27);STRING$(11," "):RETURN
  156 IF ASC(T$)=78 THEN T=2:PRINT AT(20,27);STRING$(11," "):RETURN
  158 GOSUB 130:PAUSE 10:GOTO 150
  159 REM LOESCHSTRING
  160 PRINT AT(20,27);STRING$(11," "):RETURN
 1000 REM UP DREHVARIANTE SUCHEN 
 1010 D=AN:U=0:W=0
 1020 FF=1
 1030 FOR Y=0 TO 560 STEP 80
 1040 FOR X=D TO D+14 STEP 2
 1050 B=X+Y:V=PEEK(B):U=U+1
 1060 IF V<>46 GOTO 1090
 1070 C=BE(U)*10:SU=1
 1080 GOSUB 1380
 1090 NEXT X
 1100 WINDOW 5,10,26,36
 1110 FF=FF+1:FG=FF+1:IF FG>8 THEN FF=0:GOTO 1110<<TOKEN:1d>><<TOKEN:1d>>
 1120 INK FF:PAPER 5:IF FF=5 THEN INK 3
 1130 CLS
 1140 PRINT:PRINT:PRINT "   ICH":PRINT "   DENKE":PRINT
 1150 INK 4:PAPER 5
 1160 NEXT Y
 1170 WINDOW 1,23,23,39:CLS
 1180 Q=0:IF W=0 THEN Q=1:RETURN
 1190 X=N-(AN-1)
 1200 Y=M/80+2
 1210 RETURN
 1220 REM AUSWERTUNG
 1230 WINDOW 14,21,24,39:PRINT "AUSWERTUNG":PRINT
 1240 M=0:N=0
 1250 FOR I=0 TO 14 STEP 2
 1260 FOR J=0 TO 560 STEP 80
 1270 IF PEEK(J+I+AN)=42 THEN M=M+1
 1280 IF PEEK(J+I+AN)=48 THEN N=N+1
 1290 NEXT J
 1300 NEXT I
 1310 PRINT "* =";M
 1320 PRINT "0 =";N:PRINT
 1322 IF M<N THEN PRINT "GRATULIERE !"
 1324 IF M=N THEN PRINT "REMIS !"
 1326 IF M>N THEN PRINT "ICH HABE":PRINT "GEWONNEN !"
 1330 GOSUB 120:WINDOW 14,23,24,39
 1340 CLS:JN$="J":PRINT "NEUES":INPUT "SPIEL: (J)/N ";JN$
 1350 IF JN$<>"N"THEN 4000
 1360 WINDOW:CLS:PRINT PAPER 2;AT(8,8);"AUF WIEDERSEHEN":PAUSE 40
 1370 CLS:END
 1380 REM UP ZEICHEN VERDREHEN
 1390 F=0:G=42:A1=A
 1400 IF A=1 THEN G=48
 1410 FOR K=1 TO 8
 1420 R=0
 1430 FOR I=1 TO 8
 1440 Z=B+FE(K)*I
 1450 IF Z<AN GOTO 1540
 1460 IF Z>AN+656 GOTO 1540
 1470 V=PEEK(Z)
 1480 IF V=46 GOTO 1540
 1490 IF V=G THEN R=1
 1500 IF V=48-A*6 THEN R=(R+1)*R
 1510 IF R=2 GOTO 1580
 1520 IF R=0 GOTO 1540
 1530 NEXT I
 1540 NEXT K
 1550 IF SU=1 THEN RETURN
 1560 Q=0:IF F=0 THEN Q=1
 1570 RETURN
 1580 REM DREHEN
 1590 F=1
 1600 IF SU=1 GOTO 1670
 1610 IF A1=0 THEN A1=2:GOSUB 1730
 1620 FOR L=1 TO 8
 1630 C1=B+FE(K)*L
 1640 IF PEEK(C1)<>G GOTO 1540
 1650 POKE C1,48-6*A
 1660 NEXT L
 1670 REM BEWERTUNG
 1680 C=C+I
 1690 IF C<W THEN GOTO 1540
 1700 REM VARIANTE ANZEIGEN
 1710 N=X:M=Y:W=C:C=0
 1720 GOTO 1540
 1730 FOR I=1 TO 10:PAUSE 1:POKE B,46:PAUSE 1:POKE B,48:NEXT I:RETURN
 3999 REM OTHELLO-HAUPTPROGRAMM =======
 4000 DATA 80,-80,2,-2,82,-82,-78,78
 4010 RESTORE 4000:FOR I=1 TO 8:READ FE(I):NEXT I
 4020 DATA 9,1,8,4,4,8,1,9
 4030 DATA 1,1,2,2,2,2,1,1
 4040 DATA 8,2,7,6,6,7,2,8
 4050 DATA 4,2,6,0,0,6,2,4
 4060 DATA 4,2,6,0,0,6,2,4
 4070 DATA 8,2,7,6,6,7,2,8
 4080 DATA 1,1,2,2,2,2,1,1
 4090 DATA 9,1,8,4,4,8,1,9
 4100 RESTORE 4020:FOR I=1 TO 64:READ BE(I):NEXT I
 4110 BORDER 1:PAPER 1:PRINT SPC(40):WINDOW 1,23,1,39:PAPER 5:CLS:PAPER 2
 4120 PRINT "    O T H E L L O     "
 4130 PAPER 5:PRINT
 4140 INK 4:PAPER 1
 4150 WINDOW 3,21,2,20
 4160 CLS
 4170 PRINT "  1 2 3 4 5 6 7 8  "
 4180 PRINT "1 . . . . . . . . 1"
 4190 PRINT "2 . . . . . . . . 2"
 4200 PRINT "3 . . . . . . . . 3"
 4210 PRINT "4 . . . * * . . . 4"
 4220 PRINT "5 . . . 0 0 . . . 5"
 4230 PRINT "6 . . . . . . . . 6"
 4240 PRINT "7 . . . . . . . . 7"
 4250 PRINT "8 . . . . . . . . 8"
 4260 PRINT "  1 2 3 4 5 6 7 8";
 4270 WINDOW 23,23,1,23
 4280 INK 4:PAPER 2
 4290 PRINT "  Sie spielen mit 0   ";
 4300 WINDOW 1,23,22,22
 4310 CLS
 4320 PRINT " * * * * * * * * * * *";
 4330 FOR QQ=2 TO 23 STEP 2:PRINT AT(QQ,0);"*":PRINT AT(QQ-1,0);" ":NEXT
 4331 PRINT AT(23,0);" "
 4340 INK 8:PAPER 5:WINDOW 14,18,24,39:CLS:PRINT
 4350 PRINT "SCHWIERIGKEITS-":INPUT "STUFE: (1)/2 ";JN
 4360 IF JN=2 THEN JN$="J":ELSE JN$="N"
 4370 IF JN$="N"THEN FOR I=1 TO 64:BE(I)=1:NEXT I
 4380 CLS:PRINT "MOECHTEN SIE"
 4390 JN$="J":INPUT "BEGINNEN: (J)/N";JN$
 4410 IF JN$="J"GOTO 4540
 4420 REM DER RECHNER ZIEHT ------------
 4430 WINDOW 1,23,23,39
 4440 PAPER 4
 4450 CLS
 4460 A=1:GOSUB 1000:IF Q=1 THEN 1230
 4470 B=N+M
 4480 FOR I=1 TO 10:PAUSE 1:POKE B,46:PAUSE 1:POKE B,42:NEXT I
 4490 SU=0:GOSUB 1380
 4500 REM DER SPIELER ZIEHT ------------
 4510 WINDOW 1,23,23,39
 4520 PAPER 5:INK 8
 4530 CLS
 4540 A=0:SU=0
 4550 WINDOW 14,20,24,39
 4560 CLS
 4570 PRINT "KOENNEN SIE"
 4580 PRINT "SETZEN: (J)/N "
 4590 JN$=INKEY$:IF JN$=""THEN 4590
 4600 CLS
 4610 IF JN$="N"THEN 1230
 4620 PRINT "IHR ZUG BITTE":PRINT
 4630 PRINT "ZEILE : ";
 4640 Y$=INKEY$:IF Y$<" "THEN 4640
 4650 Y=ASC(Y$)-48
 4660 IF Y<1 OR Y>8 THEN 4640
 4670 PRINT Y$:PRINT "SPALTE: ";
 4680 X$=INKEY$:IF X$<" "THEN 4680
 4690 X=ASC(X$)-48
 4700 IF X<1 OR X>8 THEN 4680
 4710 PRINT X$:B=2*X+80*(Y-1)+AN-2
 4720 C=PEEK(B)
 4730 IF C<>46 THEN PRINT INK 2;AT(20,24);"BESETZT":PAUSE 50:GOTO 4510
 4740 POKE B,48-6*A
 4750 GOSUB 1380
 4760 IF Q=1 THEN PRINT INK 2;AT(20,24);"FEHLER":GOSUB 1730:GOSUB 1730:POKE B,46:GOTO 4510
 4770 GOTO 4420