1  REM ORIGIN-OTHEL FROM T000 ACCOUNT
2  REM MODIFIED FOR TSB-E... REMOVED SCREEN CODES,
3  REM ALTERED SCORE CODE (ORIG CODE FAILS UNDER E),
4  REM MODIFIED LINE 180 TO PERMIT PASSING BY 0,0
5  REM ADDED "FAKE" SCREEN CODES FOR MODIFIED HP2100 SIM
6  REM COMPENSATE FOR LACK OF FORMATTED PRINT...
7  DIM N$[8]
8  N$="12345678"
10  MAT  READ D
20  DATA 0,0,1,1,-1,-1,-1,1
30  DATA 1,-1,1,-1,0,1,-1,0
40  MAT A=CON
50  S9=10
60  PRINT "'27E"
70  REM MATRIX A IS GAME BOARD   A$ IS PIECE  COLOR
80  DIM A[8,8],A$[3],D[2,8]
90  REM SET UP
100  A[4,4]=A[5,5]=2
110  A[4,5]=A[5,4]=3
120  REM PLAYER 2 (*)
130  A$=".O@"
140  REM GOTO PRINT SUBROUTINE
150  GOSUB 980
160  PRINT "'27JYOUR TURN ";
170  INPUT X,Y
180  IF X=0 AND Y=0 THEN 270
190  IF A[X,Y]=1 THEN 210
200  GOSUB 950
210  A[X,Y]=2
220  GOSUB 980
230  T=2
240  GOSUB 770
250  IF K=0 THEN 170
260  GOSUB 980
270  X1=Y1=0
280  H=0
290  K=H=0
300  FOR X=1 TO 8
310  FOR Y=1 TO 8
320  IF A[X,Y]#1 THEN 500
330  K=0
340  FOR D=1 TO 8
350  Q=1
360  X2=X+Q*D[1,D]
370  Y2=Y+Q*D[2,D]
380  IF X2<1 OR Y2<1 OR X2>8 OR Y2>8 THEN 440
390  IF A[X2,Y2]=1 THEN 440
400  IF A[X2,Y2]=3 THEN 430
410  Q=Q+1
420  GOTO 360
430  K=Q-1+K
440  NEXT D
450  IF K <= H THEN 500
460  IF H>1 AND RND(0)>S9/10 THEN 500
470  X1=X
480  Y1=Y
490  H=K
500  REM
510  NEXT Y
520  REM
530  NEXT X
540  T=3
550  IF X1=Y1 AND Y1=0 THEN 620
560  X=X1
570  Y=Y1
580  A[X,Y]=3
590  GOSUB 980
600  GOSUB 770
610  GOTO 120
620  H9=C9=0
630  FOR X=1 TO 8
640  FOR Y=1 TO 8
650  IF A[X,Y]=1 THEN 670
662  IF A[X,Y]#2 THEN 664
663  H9=H9+1
664  IF A[X,Y]#3 THEN 670
665  C9=C9+1
670  NEXT Y
680  NEXT X
702  IF H9>C9 THEN 750
703  IF H9=C9 THEN 730
710  PRINT "I WIN   I WIN    I WIN BY";C9-H9
720  STOP
730  PRINT " -- TIE --"
740  STOP
750  PRINT "UWIN BY";H9-C9
760  STOP
770  REM ** CHECK AND FLIP PIECES
780  K=0
790  FOR D=1 TO 8
800  Q=1
810  X1=X+Q*D[1,D]
820  Y1=Y+Q*D[2,D]
830  IF X1<1 OR X1>8 OR Y1<1 OR Y1>8 THEN 920
840  IF A[X1,Y1]=1 THEN 920
850  IF A[X1,Y1]=T THEN 880
860  Q=Q+1
870  GOTO 810
880  FOR D1=Q TO 1 STEP -1
890  A[X+D1*D[1,D],Y+D1*D[2,D]]=T
900  K=K+1
910  NEXT D1
920  REM]
930  NEXT D
940  IF K>0 THEN 970
950  PRINT "ILLEGAL MOVE"
960  A[X,Y]=1
970  RETURN
980  REM *** PRINTING SECTION ***
990  PRINT "'27H  1 2 3 4 5 6 7 8"
1000  FOR Y4=1 TO 8
1010  PRINT N$[Y4,Y4];" ";
1020  FOR X4=1 TO 8
1030  PRINT A$[A[X4,Y4],A[X4,Y4]];" ";
1040  NEXT X4
1050  PRINT
1060  NEXT Y4
1070  RETURN
1080  END
