     '   MAXIT  FROM PET
     '   ADAPTED TO IPM PC BY Richard Copeland
     '   6-14-92              E-town Kentucky
     '
     SCREEN 0: COLOR 7, 0: WIDTH 80: KEY OFF
     DEFINT A-Z: DATA 49,51,53,54,56,58,60,61
     RANDOMIZE VAL(RIGHT$(TIME$, 2))
     FOR N = 0 TO 7: READ NT(N): NEXT
     DIM BD(7, 7), AV(64)
     CLS : LOCATE 3, 11: PRINT "THE GAME OF MAXIT"
     PRINT "DO YOU WANT INSTRUCTIONS ? "; : GOSUB 3000: PRINT
     IF KS$ = "Y" OR KS$ = "y" THEN GOSUB 2210
1180 PRINT : PRINT "1 OR 2 PLAYERS ?"; : GOSUB 3000
     PRINT KS$: NP = VAL(KS$): PRINT
     IF NP = 1 THEN 1240
     IF NP <> 2 THEN 1180
     INPUT "WHAT IS YOUR NAME #1"; P1$: P1$ = LEFT$(P1$, 7): BEEP: PRINT
     PRINT : INPUT "WHAT IS YOUR NAME #2"; P2$: P2$ = LEFT$(P2$, 7): BEEP: PRINT : GOTO 1250
1240 P2$ = "IBM PC": INPUT "WHAT IS YOUR NAME "; P1$: BEEP: PRINT : P1$ = LEFT$(P1$, 7)
1250 CLS : LOCATE 2, 16: PRINT "M A X I T": GOSUB 2360
     RANDOMIZE VAL(RIGHT$(TIME$, 2)): MD = 1
     FOR K = 1 TO 64: AV(K) = K: NEXT
     FOR K = 64 TO 1 STEP -1: READ PC
     P1 = 1 + INT(K * RND(1))
     J = AV(P1) - 1
     IF P1 < K THEN FOR I = P1 TO K - 1: AV(I) = AV(I + 1): NEXT
     I = INT(J / 8): J = J - 8 * I
     BD(I, J) = PC: GOSUB 1540: NT = J: GOSUB 1980
     NEXT K: RESTORE 1350: NT = 7: GOSUB 1980: GOSUB 1980: GOSUB 1980
1350 DATA 15,10,9,9,8,8,7,7,7,6,6,6
     DATA 5,5,5,5,4,4,4,4,3,3,3,3,3
     DATA 2,2,2,2,2,2,1,1,1,1,1
     DATA 0,0,0,0,0,0,-1,-1,-1,-1,-1
     DATA -2,-2,-2,-2,-3,-3,-3
     DATA -4,-4,-4,-5,-5,-6,-6
     DATA -7,-9,100
     S1 = 0: S2 = 0: GOSUB 2000
1430 REM  PLAYER 1
     PL = 1: GOSUB 1630: IF FL = 0 THEN 1470
     REM  PLAYER 2
     PL = 2: GOSUB 1630: IF FL <> 0 THEN 1430
1470 LOCATE 22, 1: PRINT STRING$(39, " "); : LOCATE 22, 1: ON 2 + SGN(S2 - S1) GOSUB 1510, 1520, 1530
     POKE 106, 0: LOCATE 23, 1: PRINT STRING$(39, " "); : LOCATE 23, 1: PRINT "DO YOU WANT TO PLAY AGAIN ?"; : C$ = "": WHILE C$ = "": C$ = INKEY$: WEND: PRINT C$
     IF "Y" = C$ OR "y" = C$ THEN 1250
     IF "N" = C$ OR "y" = C$ THEN CLS : PRINT "Please Wait...": CHAIN "moneycga"
1510 PRINT P1$; " WON BY "; STR$(S1 - S2); " POINTS": CLS : PRINT "Please Wait...": CHAIN "moneycga"
1520 PRINT "IT'S A TIE !!                   ": RETURN
1530 PRINT P2$; " WON BY "; STR$(S2 - S1); " POINTS ": PRINT : RETURN
1540 REM  DRAW BOARD POSITION I,J IN MODE MD (1=RED,2=BLACK)
     PC = BD(I, J)
     LOCATE I * 2 + 5, J * 4 + 5
     IF MD = 2 THEN COLOR 0, 7: GOTO 1590
     COLOR 7, 0
1590 IF PC = 100 THEN PRINT "**": C1 = I: C2 = J: GOTO 1620
     IF PC = -100 THEN PRINT "  ": GOTO 1620
     PRINT RIGHT$("  " + STR$(PC), 2)
1620 COLOR 7, 0: RETURN
1630 IF PL = 2 THEN 1670
     FL = 600: FOR J = 0 TO 7: FL = FL + BD(C1, J): NEXT
     IF FL = 0 THEN RETURN
     NM$ = P1$: DX = 1: DY = 0: GOSUB 1700: RETURN
1670 FL = 600: FOR I = 0 TO 7: FL = FL + BD(I, C2): NEXT
     IF FL = 0 THEN RETURN
     NM$ = P2$: DX = 0: DY = 1: GOSUB 1700: RETURN
1700 Y = C1: X = C2: FX = 1
     IF PL = 2 THEN COLOR 0, 7
     IF NP = 2 OR PL = 1 THEN 1730
     PRINT : GOSUB 1970: PRINT NM$; "'S TURN.         ": GOSUB 2060: GOTO 1880
1730 GOSUB 1970: ON FX GOTO 1740, 1750
1740 PRINT : GOSUB 1970: PRINT NM$; ", YOUR TURN.     ": PRINT : GOTO 1760
1750 PRINT "                    ": PRINT
1760 PLAY "L64T200N70"
1770 C$ = INKEY$: IF C$ = "" THEN 1770
IF C$ = "q" THEN GOTO stoping ELSE KS = ASC(C$)
     IF C$ <> " " THEN 1860
     OX = X: OY = Y
1800 Y = Y + DY: IF Y > 7 THEN Y = 0
     X = X + DX: IF X > 7 THEN X = 0
     PT = BD(Y, X): IF ABS(PT) = 100 THEN 1800
     MD = 1: I = OY: J = OX: GOSUB 1540
     MD = 2: I = Y: J = X: GOSUB 1540
     GOTO 1770
1860 IF C$ <> CHR$(13) THEN 1770
     IF ABS(BD(Y, X)) = 100 THEN 1770
1880 REM SCORE IT
     '
     IF NP = 1 AND PL = 2 THEN MD = 2: I = Y: J = X: GOSUB 1540: FOR DL = 1 TO 1500: NEXT
     GOSUB 1990: MD = 1: I = C1: J = C2: BD(I, J) = -100: GOSUB 1540
     I = Y: J = X: PT = BD(I, J): BD(I, J) = 100: GOSUB 1540
     IF PL = 1 THEN S1 = S1 + PT
     IF PL = 2 THEN S2 = S2 + PT
     GOSUB 1970
     LOCATE 22, 25: PRINT "LAST TAKEN:"; PT; " ";
     GOSUB 2000: RETURN
1970 LOCATE 22, 1: RETURN
1980 PLAY "MNMFL64": RETURN
1990 FOR N = 49 TO 70: PLAY "MBT255MLO3L64": NEXT: RETURN
2000 GOSUB 1970
     LOCATE 21, 1: ME$ = P1$ + "'S SCORE=" + STR$(S1) + "  " + P2$ + "'S SCORE=" + STR$(S2) + "       ": ME$ = LEFT$(ME$, 40): PRINT ME$: RETURN
2020 REM  SCREEN INSTRUCTIONS
     RETURN
     '      COMPUTER PLAYER ALGORITHM
2060 MT = -100: GG = -1: FOR A1 = 0 TO 7: PC = BD(A1, C2): IF ABS(PC) = 100 THEN 2200
     MX = -100: FOR A2 = 0 TO 7
     IF A2 <> C2 THEN PK = BD(A1, A2): IF PK <> -100 AND PK > MX THEN MX = PK: SV = A
     NEXT A2
     IF MX <> -100 THEN 2120
     IF PC > MT THEN MT = PC: GG = A1: GOTO 2200
2120 IF GG < 0 THEN GG = A1
     FOR A2 = 0 TO 7: PQ = BD(A2, SV): IF PQ = -100 OR A2 = A1 THEN 2190
     MY = -100: FOR A3 = 0 TO 7: PW = BD(A2, A3): IF A3 = SV THEN 2160
     IF ABS(PW) <> 100 AND PW > MY THEN MY = PW
2160 NEXT A3
     IF MY = -100 THEN MY = 0
     DT = PC - MX + PQ - MY: IF DT > MT THEN MT = DT: GG = A1
2190 NEXT A2
2200 NEXT A1: Y = GG: RETURN
2210 LOCATE 1, 16: PRINT "M A X I T": PRINT
     PRINT "THE OBJECT OF MAXIT IS TO GET AS MANY"
     PRINT "POINTS AS POSSIBLE. TWO PLAYERS CAN"
     PRINT "PLAY AGAINST EACH OTHER, OR ONE AGAINST"
     PRINT "THE COMPUTER.": PRINT : PRINT
     PRINT "YOU GET POINTS BY MOVING A MARKER "
     PRINT "            **"
     PRINT "TO A SPACE WITH A NUMBER IN IT. THE"
     PRINT "FIRST PLAYER ALWAYS MOVES HORIZONTALLY"
     PRINT "AND THE SECOND MOVES VERTICALLY.  YOU"
     PRINT "INDICATE THE PLACE YOU WANT TO MOVE TO"
     PRINT "BY USING THE SPACE BAR TO POSITION"
     PRINT "YOURSELF, AND THEN PUSH RETURN TO TAKE"
     PRINT "THAT PIECE.": RETURN
2360 REM  OTHER OTHELLO BOARD
     '
     TOP$ = "ΥΝΝΝΡΝΝΝΡΝΝΝΡΝΝΝΡΝΝΝΡΝΝΝΡΝΝΝΡΝΝΝΈ"
     MD1$ = "³   ³   ³   ³   ³   ³   ³   ³   ³"
     MD2$ = "ΖΝΝΝΨΝΝΝΨΝΝΝΨΝΝΝΨΝΝΝΨΝΝΝΨΝΝΝΨΝΝΝ΅"
     BOT$ = "ΤΝΝΝΟΝΝΝΟΝΝΝΟΝΝΝΟΝΝΝΟΝΝΝΟΝΝΝΟΝΝΝΎ"
     LOCATE 4, 4: PRINT TOP$
     FOR Y = 5 TO 17 STEP 2: LOCATE Y, 4: PRINT MD1$: LOCATE Y + 1, 4: PRINT MD2$: NEXT
     LOCATE 19, 4: PRINT MD1$: LOCATE 20, 4: PRINT BOT$
     GOSUB 2020
     RETURN
3000 KS$ = "": WHILE KS$ = "": KS$ = INKEY$: WEND: KS = ASC(KS$): RETURN
stoping:
PRINT "Please Wait... ": CHAIN "moneycga"

