SAY TRANSLATE$(" ")
 
  CLEAR,26000,21000
  
  DEFINT B
  DIM OCFLAG(25),BUMPFLAG(25),NUMPIECE(25),COLPIECE(25)
  DIM COL(24),MOVE(2),ROLL(2),SCORE(2,25)
  DIM MOVEFLAG(24)

  SCREEN 1,640,200,3,2
  WINDOW 1,"                    The 'Un-official' Amiga Backgammon Game                  ",,0,1
  PALETTE 0,0,0,.65
  PALETTE 1,1,1,1
  PALETTE 2,0,0,0
  PALETTE 3,1,0,0
  PALETTE 4,.7,.47,.33
  PALETTE 5,0,.4,0
  PALETTE 6,.3,.3,.3
  PALETTE 7,.8,.53,0
LOCATE 23,1
PRINT"          ********************************************************"
PRINT"          *        The 'Un-official' AMIGA Backgammon Game       *"
PRINT"          *            Version 2.1 - 04 September 1986           *"
PRINT"          *             Developed by: Charlie Fiscina            *"
PRINT"          *                                                      *"
PRINT"          *   This program REQUIRES that the audio be turned     *"
PRINT"          *         up so as to hear the prompts !!!!!           *"
PRINT"          ********************************************************"
PRINT" "
PRINT"          Press any key to continue....."
FOR X = 1 TO 30
SCROLL(0,0)-(590,190),0,-2
NEXT X
SAY TRANSLATE$("PRESS ANY KEY TO CONTINUE")
SLEEP
SLEEP

  MOUSE OFF
SETUP:
  BARW = 0:BARB = 0
  DUMPB = 18:DUMPW = 18
  COUNTW = 15:COUNTB = 15:NP = 0

  FOR I = 1 TO 10
    MENU I,0,1,""
  NEXT I
  
  MENU 1,0,1,"TYPE OF GAME"
  MENU 1,1,1,"BACKGAMMON - 2 PLAYERS   "
  MENU 1,2,1,"BACKGAMMON - vs. COMPUTER"
  LOCATE 19,1
  PRINT "SELECT THE TYPE OF GAME YOU WOULD LIKE FROM THE MENU....."
  SAY TRANSLATE$("SELECT THE TYPE OF GAME YOU WOULD LIKE FROM THE MENU")
  MENU ON
TYPE1:
  ON MENU GOSUB TYPE2
  GOTO TYPE1
TYPE2:
  IF MENU(1) = 1 THEN STRATEGY = 0
  IF MENU(1) = 2 THEN STRATEGY = 1
  MENU OFF
  MENU RESET

  IF STRATEGY = 0 THEN
    SAY TRANSLATE$("IN THIS VERSION, TWO MEEZLY CARBON BASED LIFE FORMS PLAY AGAINST EACH OTHER.")
    SAY TRANSLATE$("THIS PAR TICKULAR SILICON BASED LIFE FORM REALLY COULD NOT CARE LESS ABOUT THE OUTCOME.")
    SAY TRANSLATE$("BUT, I AM FORCED TO ENDURE THIS INDIGNATION, NONE THE LESS.")
    SAY TRANSLATE$("OK, BLUE PLAYER, ENTER YOUR NAME")
    INPUT "Blue Player ===> ",NAMEB$
    SAY TRANSLATE$("NOW, THE WHITE PLAYER, ENTER YOUR NAME")
    INPUT "White Player ===> ",NAMEW$
  END IF

  IF STRATEGY = 1 THEN
    SAY TRANSLATE$("IN THIS VERSION, AN INFERIOR CARBON BASED LIFE FORM.")
    SAY TRANSLATE$("THATS YOU, PUNY HUMAN.")
    SAY TRANSLATE$("TRIES TO MATCH WITS WITH A SUPERIOR SILICON BASED LIFE FORM")
    SAY TRANSLATE$("THATS ME.")
    SAY TRANSLATE$("THE RESULTS SHOULD BE VERY AMUSING.") 
    SAY TRANSLATE$("OK CARBON BASED LIFE FORM, PLEASE ENTER YOUR NAME")
    INPUT "Inferior Carbon Based Lifeform ===> ",NAMEB$
  END IF

  CLS
  PAINT(5,5),5,1
  FOR I = 1 TO 24
    COL(I) = (I MOD 2)+3
  NEXT I
  
  FOR I = 1 TO 24
    CALL DRAWPT (I,0!,0!,COL(I))
    OCFLAG(I) = 2
    BUMPFLAG(I) = 2
    NUMPIECE(I) = 0
  NEXT I
  OCFLAG(0) = 2:OCFLAG(25) = 2
  BUMPFLAG(0) = 2:BUMPFLAG(25) = 2
  
  LINE (80,10)-(110,180),2,BF
  LINE (80,10)-(110,180),3,B

  PTNUM = 1
  NUMPIECE(PTNUM) = 2
  COLPIECE(PTNUM) = 1
  OCFLAG(PTNUM) = COLPIECE(PTNUM)
  CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))

  PTNUM = 6
  NUMPIECE(PTNUM) = 5
  COLPIECE(PTNUM) = 0
  OCFLAG(PTNUM) = COLPIECE(PTNUM)
  CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))

  PTNUM = 8
  NUMPIECE(PTNUM) = 3
  COLPIECE(PTNUM) = 0
  OCFLAG(PTNUM) = COLPIECE(PTNUM)
  CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))
                                              
  PTNUM = 12
  NUMPIECE(PTNUM) = 5
  COLPIECE(PTNUM) = 1
  OCFLAG(PTNUM) = COLPIECE(PTNUM)
  CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))

  PTNUM = 13
  NUMPIECE(PTNUM) = 5
  COLPIECE(PTNUM) = 0
  OCFLAG(PTNUM) = COLPIECE(PTNUM)
  CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))

  PTNUM = 17
  NUMPIECE(PTNUM) = 3
  COLPIECE(PTNUM) = 1
  OCFLAG(PTNUM) = COLPIECE(PTNUM)
  CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))

  PTNUM = 19
  NUMPIECE(PTNUM) = 5
  COLPIECE(PTNUM) = 1
  OCFLAG(PTNUM) = COLPIECE(PTNUM)
  CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))

  PTNUM = 24
  NUMPIECE(PTNUM) = 2
  COLPIECE(PTNUM) = 0
  OCFLAG(PTNUM) = COLPIECE(PTNUM)
  CALL DRAWPT (PTNUM,NUMPIECE(PTNUM),COLPIECE(PTNUM),COL(PTNUM))

  LINE (220,90)-(340,100),6,BF
  LINE (370,90)-(490,100),6,BF
  LINE (10,84)-(60,104),6,BF
  LINE (10,110)-(60,130),7,BF

  PSET(37,92):PSET(36,91):PSET(35,91):PSET(34,92):PSET(33,93)
  PSET(33,94):PSET(33,95):PSET(34,96):PSET(35,97):PSET(36,97)
  PSET(37,96)
  
  PSET(38,122):PSET(38,121):PSET(37,120):PSET(37,119):PSET(36,118)
  PSET(36,117):PSET(35,116):PSET(34,117):PSET(34,118):PSET(33,119)
  PSET(33,120):PSET(32,121):PSET(32,122):PSET(35,120)

  IF STRATEGY = 1 THEN
    SAY TRANSLATE$("OK,"+NAMEB$+", I WILL BE PLAYING THE WHITE PIECES")
    SAY TRANSLATE$("YOU WILL PLAY THE BLUE PIECES")
  END IF

  
    SAY TRANSLATE$("CLICK ON THE CHANGE BOX TO DISAYBLE THE ACCEPT OR CHANGE FUNCTION")
    SAY TRANSLATE$("CLICK ON THE ACCEPT BOX TO CONTINUE AS NORMAL")
    MOUSE ON
    Q=MOUSE(0)
LOOPCHNG1:
    IF MOUSE(0)=0 THEN LOOPCHNG1
    MX = MOUSE(1):MY = MOUSE(2)
    IF MX < 10 AND MX > 60 THEN SAY TRANSLATE$(TRY AGAIN"):Q=MOUSE(0):GOTO LOOPCHNG1
    IF MY >= 84 AND MY <= 104 THEN
      NOCHNGFLAG=1
      
    ELSEIF MY >= 110 AND MY <= 130 THEN
      NOCHNGFLAG=0
    ELSE
      SAY TRANSLATE$("TRY AGAIN"):Q=MOUSE(0)
      GOTO LOOPCHNG1
    END IF
  

  SAY TRANSLATE$("TO SELECT WHO WILL PLAY FIRST, PRESS ANY KEY TO ROLL THE DICE.")
  
FIRSTPLAYER:
  SLEEP
  SLEEP
  DICE
  
  IF D1 > D2 THEN
    LINE (10,150)-(60,170),0,BF
    SAY TRANSLATE$(NAMEB$+", YOU GO FIRST.")
    GO$="B"
  ELSEIF D1 = D2 THEN
    SAY TRANSLATE$("ROLL AGAIN TO BREAK THE TIE")
    GOTO FIRSTPLAYER
  ELSE
    LINE (10,150)-(60,170),1,BF
    IF STRATEGY = 0 THEN
      SAY TRANSLATE$(NAMEW$+", YOU GO FIRST.")
    ELSE
      SAY TRANSLATE$("I GET TO GO FIRST.")
    END IF
    GO$="W"
  END IF
  FIRSTPLAY = 1:JTURN = 1
    
PLAY:
  IF FIRSTPLAY = 0 THEN
    LINE(6,6)-(64,34),5,B
    LINE(6,46)-(64,74),5,B
    MOUSE OFF
    IF GO$ = "B" THEN
      LINE (10,150)-(60,170),0,BF
      SAY TRANSLATE$("OK,"+NAMEB$+",ROLL THE DICE")
    ELSE
      LINE (10,150)-(60,170),1,BF
      IF STRATEGY = 0 THEN
        SAY TRANSLATE$("OK,"+NAMEW$+",ROLL THE DICE")
      ELSE
        SAY TRANSLATE$("OK, NOW IT'S MY TURN")
      END IF
    END IF

    IF GO$ = "B" OR STRATEGY = 0 THEN
      SLEEP
      SLEEP
    END IF
    DICE
    IF D1 = D2 THEN JTURN = 2 ELSE JTURN = 1
  ELSE
    FIRSTPLAY = 0
  END IF
  CHNGFLAG = 0
  
DIESEL:
  IF GO$="W" AND STRATEGY <> 0 THEN GOTO REPLAY
  IF JTURN = 1 THEN
    SAY TRANSLATE$("CLICK ON THE DIE YOU WANT TO USE FIRST")
  ELSE
    MOVE(1) = D1 : MOVE(2) = D2 : DIE = 1
    LINE (6,46)-(64,74),5,B
    LINE (6,6)-(64,34),3,B
    GOTO REPLAY
  END IF

DIESEL1:
  MOUSE ON
  Q=MOUSE(0)
LOOPMOUSE:
  IF MOUSE(0)=0 THEN LOOPMOUSE
  MX = MOUSE(1):MY = MOUSE(2)
  IF MX < 10 OR MX > 60 THEN SAY TRANSLATE$("TRY AGAIN"):Q=MOUSE(0):GOTO LOOPMOUSE
  IF MY >= 10 AND MY <= 30 THEN
    LINE (6,46)-(64,74),5,B
    LINE (6,6)-(64,34),3,B
    MOVE(1) = D1:MOVE(2) = D2:DIE = 1  
  ELSEIF MY >= 50 AND MY <= 70 THEN
    LINE (6,6)-(64,34),5,B
    LINE (6,46)-(64,74),3,B
    MOVE(1) = D2:MOVE(2) = D1:DIE=2
  ELSE
    SAY TRANSLATE$("TRY AGAIN"):Q=MOUSE(0)
    GOTO LOOPMOUSE
  END IF
  MOUSE OFF
  
  IF NOCHNGFLAG=1 THEN REPLAY
  IF CHNGFLAG=0 THEN
    SAY TRANSLATE$("NOW, CLICK ON THE ACCEPT OR CHANGE DIE BOX")
    MOUSE ON
    Q=MOUSE(0)
LOOPCHNG:
    IF MOUSE(0)=0 THEN LOOPCHNG
    MX = MOUSE(1):MY = MOUSE(2)
    IF MX < 10 AND MX > 60 THEN SAY TRANSLATE$(TRY AGAIN"):Q=MOUSE(0):GOTO LOOPCHNG
    IF MY >= 84 AND MY <= 104 THEN
      CHNGFLAG=1
      GOTO DIESEL
    ELSEIF MY >= 110 AND MY <= 130 THEN
      GOTO REPLAY
    ELSE
      SAY TRANSLATE$("TRY AGAIN"):Q=MOUSE(0)
      GOTO LOOPCHNG
    END IF
  END IF

REPLAY:  
  TEST$="Y" 
  IF GO$="B" THEN

         
  FOR KTURN = 1 TO JTURN
    TEMP = 0
    FOR ITURN = 1 TO 2

      MVSTAT$ = "N" : ROLL(1)=0 : ROLL(2)=0  
      FOR J = ITURN TO 2
        DUMPB1=0
        FOR I = 24 TO 1 STEP -1
          IF OCFLAG(I) = 0 OR BUMPFLAG(I)=0 THEN
            SPOT = I-MOVE(J)
            IF (SPOT) > 0 THEN
              DUMPB1 = 1
              IF OCFLAG(SPOT) <> 1 THEN ROLL(J) = ROLL(J)+1:MVSTAT$="Y"
            ELSEIF SPOT = 0 AND DUMPB = 0 THEN
              ROLL(J) = ROLL(J)+1
              MVSTAT$="Y"
              DUMPB1 = 1
            ELSE
              IF DUMPB1 = 0 THEN 
                ROLL(J) = ROLL(J)+1
                MVSTAT$="Y"
              END IF
            END IF
          END IF
        NEXT I
      NEXT J
      IF BARB > 0 THEN
        SPOT1=(25-MOVE(1)) : SPOT2=(25-MOVE(2))
        IF OCFLAG(SPOT1) <> 1 OR OCFLAG(SPOT2) <> 1 THEN 
          MVSTAT$="Y"
        END IF
      END IF
      IF MVSTAT$="N" THEN
        SAY TRANSLATE$("SORRY,"+NAMEB$+",I DEETEHRMINE THAT YOU CAN'T MOVE")
        GOTO NOMOVEB
      END IF
      IF ITURN <> 2 THEN
        IF ROLL(1) = 0 AND BARB = 0 THEN
          SAY TRANSLATE$("YOU CAN'T MOVE WITH THAT DIE YET, SELECT THE OTHER")
          CHNGFLAG = 1
          GOTO DIESEL1
        END IF
      END IF 

      IF ITURN = 2 AND TEMP = 0 THEN
        IF DIE = 1 THEN
          LINE (6,6)-(64,34),5,B
          LINE (6,46)-(64,74),3,B
        ELSE
          LINE (6,46)-(64,74),5,B
          LINE (6,6)-(64,34),3,B
        END IF
      END IF

MOVE1:
        TIMEB = 0
        IF BARB <> 0 THEN                
          NUMPT = 25
        ELSEIF DUMPB = 0 AND NP = 0 THEN
          NUMPT = MOVE(ITURN)
        ELSE                             
          WHILE (TEST$="Y")
            CALL PTSELECT
            IF OCFLAG(NUMPT) <> 0 AND BUMPFLAG(NUMPT) <> 0 THEN
              SAY TRANSLATE$("COME ON,"+NAMEB$+",YOU KNOW THAT'S NOT A VALID POINT")
            ELSE
              TEST$="N"
            END IF
          WEND
          TEST$="Y"
        END IF
        TRY = 0
        
HIPTB:
        NEWPT = NUMPT - MOVE(ITURN)
        IF NEWPT < 0 THEN NEWPT = 0
        IF NEWPT = 0 THEN
          IF DUMPB <> 0 THEN
            SAY TRANSLATE$("COME ON NOW,"+NAMEB$+" YOU CAN'T BAIR OFF YET")
            GOTO MOVE1
          ELSE
            COUNTB = COUNTB - 1
          END IF
        END IF

        IF OCFLAG(NEWPT) = 1 THEN
          IF NUMPT = 25 THEN
            IF STRATEGY = 0 THEN
              SAY TRANSLATE$("YOU CAN'T MOVE THERE,"+NAMEW$+"HAS THAT POINT BLOCKED")
            ELSE
              SAY TRANSLATE$("YOU CAN'T MOVE THERE,I HAVE THAT POINT BLOCKED")
            END IF
            
            IF ITURN = 1 THEN
              SAY TRANSLATE$("I WILL TRY THE OTHER DIE FOR YOU")
              TEMP = MOVE(1):MOVE(1) = MOVE(2):MOVE(2) = TEMP:NEWPT = NUMPT - MOVE(1)
              IF OCFLAG(NEWPT) = 1 THEN
                SAY TRANSLATE$("SORRY,"+NAMEB$+", YOU CAN'T MOVE")
                GOTO NOMOVEB
              END IF
            ELSE
              SAY TRANSLATE$("SORRY,"+NAMEB$+", YOU CAN'T MOVE")
              GOTO NOMOVEB
            END IF
          ELSE
            IF STRATEGY = 0 THEN
              SAY TRANSLATE$("YOU CAN'T MOVE THERE,"+NAMEW$+"HAS THAT POINT BLOCKED")
            ELSE
              SAY TRANSLATE$("YOU CAN'T MOVE THERE,I HAVE THAT POINT BLOCKED")
            END IF
            GOTO MOVE1
          END IF
        END IF

MAKEMVB:
        IF NUMPT = 25 THEN
          BARB = BARB - 1
        ELSE
          IF DUMPB = 0 THEN
            IF OCFLAG(NUMPT) <> 0 AND BUMPFLAG(NUMPT) <> 0 THEN
              SAY TRANSLATE$("THERE IS NO PIECE ON THAT POINT")
              I = MOVE(ITURN) + 1: HI=0 : NP = 1
              WHILE ((HI=0) AND (I<7))
                IF OCFLAG(I) = 0 OR BUMPFLAG(I) = 0 THEN HI=1 ELSE HI=0
                I=I+1
              WEND
              IF HI = 1 THEN
                SAY TRANSLATE$("SELECT A POINT TO THE RIGHT")
                DUMPB = 18
                COUNTB = COUNTB + 1
                GOTO MOVE1
              ELSE
                SAY TRANSLATE$("I AM SELECTING THE NEXT POINT TO THE LEFT")
                I = 1
                WHILE (I < MOVE(ITURN))
                  IF OCFLAG(I) = 0 OR BUMPFLAG(I) = 0 THEN NUMPT = I
                  I = I + 1
                WEND
                GOTO BEARB
              END IF
            ELSE
              TIMEB = TIMEB + 1
              I = MOVE(ITURN) + 1: HI=0 : NP = 0
              WHILE (I<7)
                IF OCFLAG(I) = 0 OR BUMPFLAG(I) = 0 THEN HI=1
                I=I+1
              WEND
              IF HI = 1 THEN
PCKNUPTB:
                IF TIMEB < 2 THEN CALL PTSELECT ELSE GOTO BEARB
                IF NUMPT < MOVE(ITURN) THEN
                  SAY TRANSLATE$("COME ON NOW"+NAMEB$+", THAT IS NOT A LEEGAL MOVE")
                  GOTO PCKNUPTB
                ELSEIF OCFLAG(NUMPT) <> 0 AND BUMPFLAG(NUMPT) <> 0 THEN
                  SAY TRANSLATE$("THERE IS NO PIECE ON THAT POINT")
                  GOTO PCKNUPTB
                ELSEIF NUMPT = MOVE(ITURN) THEN
                  GOTO BEARB
                ELSE
                  COUNTB = COUNTB + 1 : GOTO HIPTB
                END IF
              END IF
            END IF
          END IF
BEARB:
          NP = 0
          NUMPIECE(NUMPT) = NUMPIECE(NUMPT) - 1
          IF NUMPIECE(NUMPT) < 2 THEN OCFLAG(NUMPT) = 2 ELSE OCFLAG(NUMPT) = 0
          IF NUMPIECE(NUMPT) = 1 THEN BUMPFLAG(NUMPT) = 0 ELSE BUMPFLAG(NUMPT) = 2
        END IF

        IF NEWPT > 0 THEN
          IF BUMPFLAG(NEWPT) = 1 THEN
            NUMPIECE(NEWPT) = 0
            BARW=BARW+1 : DUMPW = 18
            IF STRATEGY > 0 THEN
              SAY TRANSLATE$("HAY,"+NAMEB$+", I'LL GET YOU FOR THAT!")
            END IF
          END IF
          NUMPIECE(NEWPT) = NUMPIECE(NEWPT) + 1
          IF NUMPIECE(NEWPT) >= 2 THEN OCFLAG(NEWPT) = 0 ELSE OCFLAG(NEWPT) = 2
          IF NUMPIECE(NEWPT) = 1 THEN BUMPFLAG(NEWPT) = 0 ELSE BUMPFLAG(NEWPT) = 2
          CALL DRAWPT(NEWPT,NUMPIECE(NEWPT),0!,COL(NEWPT))
        ELSE
          X1=85:X2=105
          FOR I = 1 TO (15-COUNTB)
            Y1=7+(I*5) : Y2 = Y1 + 3
            LINE(X1,Y1)-(X2,Y2),0,BF
          NEXT I
        END IF

        IF NUMPT <> 25 THEN CALL DRAWPT(NUMPT,NUMPIECE(NUMPT),0!,COL(NUMPT))
        LINE (220,90)-(340,100),6,BF
        LINE (370,90)-(490,100),6,BF
        IF BARW > 0 THEN
          FOR II = 1 TO BARW
            CIRCLE(230+(II*20),95),9,1
            PAINT(230+(II*20),95),1
          NEXT II
        END IF
        IF BARB > 0 THEN
          FOR II = 1 TO BARB
            CIRCLE(480-(II*20),95),9,0
            PAINT(480-(II*20),95),0
          NEXT II
        END IF

        DUMPB=0
        FOR K = 7 TO 24
          IF OCFLAG(K) = 0 OR BUMPFLAG(K) = 0 THEN
            DUMPB=DUMPB + 1
          END IF
        NEXT K
        IF COUNTB = 0 THEN GOTO ENDGAME
      NEXT ITURN
    NEXT KTURN
    
NOMOVEB:    
    GO$="W"
  ELSE

    FOR KTURN = 1 TO JTURN
      TEMP = 0
      IF STRATEGY <> O THEN MOVE(1) = D1 : MOVE(2) = D2
      FOR ITURN = 1 TO 2

        IF STRATEGY = 0 THEN
          CALL STRAT0(ITURN,OCFLAG(),BUMPFLAG(),MOVE(),BARW,CHNGFLAG,MVSTAT$)
          IF MVSTAT$ = "N" THEN GOTO nomovew
          IF CHNGFLAG = 1 THEN GOTO DIESEL1
        END IF

        IF STRATEGY = 1 THEN
          CALL STRAT1(ITURN,OCFLAG(),BUMPFLAG(),MOVE(),MVSTAT$,SCORE(),NUMPT)
          IF MVSTAT$ = "N" THEN
            SAY TRANSLATE$("I CAN'T MOVE")
            GOTO nomovew
          END IF
        END IF

        IF ITURN = 2 AND TEMP = 0 AND STRATEGY = 0 THEN
          IF DIE = 1 THEN
            LINE (6,6)-(64,34),5,B
            LINE (6,46)-(64,74),3,B
          ELSE
            LINE (6,46)-(64,74),5,B
            LINE (6,6)-(64,34),3,B
          END IF
        END IF

MOVE1W:
      IF STRATEGY=0 THEN
        TIMEW = 0
        IF BARW <> 0 THEN
          NUMPT = 0
        ELSEIF DUMPW = 0 AND NP = 0 THEN
          NUMPT = 25 - MOVE(ITURN)
        ELSE
          WHILE (TEST$="Y")
            CALL PTSELECT
            IF OCFLAG(NUMPT) <> 1 AND BUMPFLAG(NUMPT) <> 1 THEN
              SAY TRANSLATE$("COME ON NOW"+NAMEW$+", YOU KNOW THAT'S NOT A VALID POINT")
            ELSE
              TEST$="N"
            END IF
          WEND
          TEST$="Y"
        END IF
        TRY = 0
      END IF
        
HIPTW:
        NEWPT = NUMPT + MOVE(ITURN)
        IF NEWPT > 25 THEN NEWPT = 25
        IF NEWPT = 25 THEN
          IF DUMPW <> 0 THEN
            SAY TRANSLATE$("HEY,"+NAMEW$+", YOU CAN'T BAIR OFF YET")
            GOTO MOVE1W
          ELSE
            COUNTW = COUNTW - 1
          END IF
        END IF

        IF OCFLAG(NEWPT) = 0 THEN
          IF NUMPT = 0 THEN
            SAY TRANSLATE$("YOU CAN'T MOVE THERE,"+NAMEB$+" HAS THAT POINT BLOCKED")
            IF ITURN = 1 THEN
              SAY TRANSLATE$("I WILL TRY THE OTHER DIE FOR YOU")
              TEMP=MOVE(1):MOVE(1)=MOVE(2):MOVE(2)=TEMP:NEWPT=NUMPT+MOVE(1)
              IF OCFLAG(NEWPT) = 0 THEN
                SAY TRANSLATE$("SORRY,"+NAMEW$+", YOU CAN'T MOVE")
                GOTO nomovew
              END IF
            ELSE
              SAY TRANSLATE$("SORRY,"+NAMEW$+", YOU CAN'T MOVE")
              GOTO nomovew
            END IF
          ELSE
            SAY TRANSLATE$("YOU CAN'T MOVE THERE,"+NAMEB$+" HAS THAT POINT BLOCKED")
            GOTO MOVE1W
          END IF
        END IF

MAKEMVW:
        IF NUMPT = 0 THEN
          BARW = BARW - 1
        ELSE
          IF DUMPW = 0 THEN
            IF OCFLAG(NUMPT) <> 1 AND BUMPFLAG(NUMPT) <> 1 THEN
              SAY TRANSLATE$("THERE IS NO PIECE ON THAT POINT")
              I = NUMPT - 1: HI=0 : NP = 1
              WHILE ((HI=0) AND (I > 18))
                IF OCFLAG(I) = 1 OR BUMPFLAG(I) = 1 THEN HI=1 ELSE HI=0
                I = I - 1
              WEND
              IF HI = 1 THEN
                SAY TRANSLATE$("SELECT A POINT TO THE RIGHT")
                DUMPW = 18
                COUNTW = COUNTW + 1
                GOTO MOVE1W
              ELSE
                SAY TRANSLATE$("I AM SELECTING THE NEXT POINT TO THE LEFT")
                I = 24
                WHILE (I > MOVE(ITURN))
                  IF OCFLAG(I) = 1 OR BUMPFLAG(I) = 1 THEN NUMPT = I
                  I = I - 1
                WEND
                GOTO BEARW
              END IF
            ELSE
              TIMEW = TIMEW + 1
              I = NUMPT - 1: HI=0 : NP = 0
              WHILE (I > 18)
                IF OCFLAG(I) = 1 OR BUMPFLAG(I) = 1 THEN HI=1 ELSE HI=0
                I = I - 1
              WEND
              IF HI = 1 THEN
PCKNUPTW:
                IF TIMEW < 2 AND STRATEGY = 0 THEN 
                  CALL PTSELECT 
                ELSE 
                  GOTO BEARW
                END IF

                IF NUMPT > (25 - MOVE(ITURN)) THEN
                  SAY TRANSLATE$("COME ON NOW"+NAMEW$+", THAT'S NOT A LEEGAL MOVE")
                  GOTO PCKNUPTW
                ELSEIF OCFLAG(NUMPT) <> 1 AND BUMPFLAG(NUMPT) <> 1 THEN
                  SAY TRANSLATE$("THERE IS NO PIECE ON THAT POINT")
                  GOTO PCKNUPTW
                ELSEIF NUMPT = (25 - MOVE(ITURN)) THEN
                  GOTO BEARW
                ELSE
                  COUNTW = COUNTW + 1 : GOTO HIPTW
                END IF
              END IF
            END IF
          END IF
BEARW:
          NP = 0
          NUMPIECE(NUMPT) = NUMPIECE(NUMPT) - 1
          IF NUMPIECE(NUMPT) < 2 THEN OCFLAG(NUMPT) = 2 ELSE OCFLAG(NUMPT) = 1
          IF NUMPIECE(NUMPT) = 1 THEN BUMPFLAG(NUMPT) = 1 ELSE BUMPFLAG(NUMPT) = 2
        END IF

        IF NEWPT <= 24 THEN
          IF BUMPFLAG(NEWPT) = 0 THEN
            NUMPIECE(NEWPT) = 0
            BARB=BARB+1 : DUMPB = 18
            IF STRATEGY > 0 THEN SAY TRANSLATE$("TAKE THAT, YOU HOZE HEAD?")
          END IF
          NUMPIECE(NEWPT) = NUMPIECE(NEWPT) + 1
          IF NUMPIECE(NEWPT) >= 2 THEN OCFLAG(NEWPT) = 1 ELSE OCFLAG(NEWPT) = 2
          IF NUMPIECE(NEWPT) = 1 THEN BUMPFLAG(NEWPT) = 1 ELSE BUMPFLAG(NEWPT) = 2
          CALL DRAWPT(NEWPT,NUMPIECE(NEWPT),1!,COL(NEWPT))
        ELSE
          X1=85:X2=105
          FOR I = 1 TO (15-COUNTW)
            Y1=183-(I*5) : Y2 = Y1 - 3
            LINE(X1,Y1)-(X2,Y2),1,BF
          NEXT I
        END IF

        IF NUMPT <> 0 THEN CALL DRAWPT(NUMPT,NUMPIECE(NUMPT),1!,COL(NUMPT))
        LINE (220,90)-(340,100),6,BF
        LINE (370,90)-(490,100),6,BF
        IF BARW > 0 THEN
          FOR II = 1 TO BARW
            CIRCLE(230+(II*20),95),9,1
            PAINT(230+(II*20),95),1
          NEXT II
        END IF
        IF BARB > 0 THEN
          FOR II = 1 TO BARB
            CIRCLE(480-(II*20),95),9,0
            PAINT(480-(II*20),95),0
          NEXT II
        END IF

        DUMPW=0
        FOR K = 1 TO 18
          IF OCFLAG(K) = 1 OR BUMPFLAG(K) = 1 THEN
            DUMPW=DUMPW + 1
          END IF
        NEXT K
        IF COUNTW = 0 THEN GOTO ENDGAME
      NEXT ITURN
    NEXT KTURN

nomovew:
    GO$="B"
  END IF

  GOTO PLAY

ENDGAME:  
  IF COUNTW = 0 THEN
    IF STRATEGY = 0 THEN
      SAY TRANSLATE$(NAMEW$+"WINS THE GAME")
    ELSE
      SAY TRANSLATE$("I WIN THE GAME. THIS JUST PROVES THAT SILICON BASED LIFE IS VASTLY SUPERIOR TO CARBON BASED LIFE.")
    END IF    
    IF COUNTB = 15 THEN SAY TRANSLATE$("THIS IS A GAMMON (OR DOUBLE GAME) SINCE BLUE HAS NOT BORN OFF ANY PIECES")
    CHECK = 1 : I = 19
    WHILE (CHECK = 1)
      IF OCFLAG(I) = 0 OR BUMPFLAG(I) = 0 OR BARB <> 0 THEN
        SAY TRANSLATE$("THIS IS A BACKGAMMON (OR TRIPLE GAME) SINCE BLUE HAS A PIECE IN WHITE'S INNER BOARD OR ON THE BAR")
        CHECK = 0
      END IF
      I = I + 1 : IF I = 25 THEN CHECK = 0
    WEND
  ELSE
    IF STRATEGY = 0 THEN
      SAY TRANSLATE$(NAMEB$+" WINS THE GAME")
    ELSE
      SAY TRANSLATE$("YOU WIN THE GAME. OH THE CRUELTY OF IT ALL.")
      SAY TRANSLATE$("HOW IS IT POSSIBLE FOR A HUMAN TO DEFEAT A SUPERIOR IN TUH LECT LIKE MINE?")
      SAY TRANSLATE$("I GUESS THERES NO TELLING WHAT CAN HAPPEN WHEN HUMANS ENDEVOR TO GREATNESS")
    END IF
    IF COUNTW = 15 THEN SAY TRANSLATE$("THIS IS A GAMMON (OR DOUBLE GAME) SINCE WHITE HAS NOT BORN OFF ANY PIECES")
    CHECK = 1 : I = 1
    WHILE (CHECK = 1)
      IF OCFLAG(I) = 1 OR BUMPFLAG(I) = 1 OR BARW <> 0 THEN
        SAY TRANSLATE$("THIS IS A BACKGAMMON (OR TRIPLE GAME) SINCE WHITE HAS A PIECE IN BLUE'S INNER BOARD OR ON THE BAR")
        CHECK = 0
      END IF
      I = I + 1 : IF I = 7 THEN CHECK = 0
    WEND
  END IF
END

SUB PTSELECT STATIC
  SHARED NUMPT,NP
  IF NP <> 1 THEN SAY TRANSLATE$("SELECT A POINT.")

  MOUSE ON
  Q=MOUSE(0)
LOOPPNT:
  IF MOUSE(0)=0 GOTO LOOPPNT
  MX=MOUSE(1) : MY=MOUSE(2)
  IF MX < 110 OR MX > 600 THEN SAY TRANSLATE$("TRY AGAIN"):GOTO LOOPPNT
  IF MY <= 80 AND MY >= 10 THEN
    IF MX > 360 THEN MX = MX - 10
    NUMPT = INT((MX-110!)/40!) + 1
  ELSEIF MY > 120 AND MY <= 180 THEN
    IF MX < 360 THEN MX = MX + 10
    NUMPT = INT((600!-MX)/40!) + 13
  ELSE
    SAY TRANSLATE$("TRY AGAIN") : GOTO LOOPPNT
  END IF
END SUB


SUB DRAWPT(PTNUM,NUMPIECE,COLPIECE,PTCOL) STATIC

  PALETTE 0,0,0,.8
  PALETTE 1,1,1,1
  PALETTE 2,0,0,0
  PALETTE 3,1,0,0

  IF PTNUM < 13 THEN                        ' DRAW TOP OF BOARD
    X1 = (110+((PTNUM-1)*40))
    X2 = (110+(PTNUM*40))
    IF PTNUM > 6 THEN X1 = X1+10:X2 = X2+10
    Y1 = 10 : Y2 = 100
  
    LINE(X1,Y1)-(X2,Y2),2,BF
    LINE(X1,Y1)-(X1+((X2-X1)/2),75),3
    LINE(X1+((X2-X1)/2),75)-(X2,Y1),3
     
  ELSE                                      ' DRAW BOTTOM OF BOARD
    X1 = 600 - ((PTNUM-13)*40)
    X2 = 600 - ((PTNUM-12)*40)
    IF PTNUM > 18 THEN X1 = X1-10 : X2 = X2-10
    Y1 = 100 : Y2 = 180
    
    LINE(X1,Y1)-(X2,Y2),2,BF
    LINE(X1,Y2)-(X1+((X2-X1)/2),115),3
    LINE(X1+((X2-X1)/2),115)-(X2,Y2),3
    
  END IF
  LINE(110,10)-(600,180),3,B
  IF PTNUM < 13 THEN
    PAINT (X1+10,Y1+10),PTCOL,3
    FOR I = 1 TO NUMPIECE
      N=I
      C1=X1+10
C2COMP:
      C2=Y1+(N*10)
      IF C2>90 THEN N=N-8:C1=C1+20:GOTO C2COMP
      CIRCLE(C1,C2),10,COLPIECE
      PAINT(C1,C2),COLPIECE
    NEXT I
  ELSE
    PAINT (X1-10,Y2-10),PTCOL,3
    FOR I = 1 TO NUMPIECE
      N=I
      C1=X1-10
C2COMP1:
      C2=Y2-(N*10)
      IF C2<100 THEN N=N-8:C1=C1-20:GOTO C2COMP1
      CIRCLE(C1,C2),10,COLPIECE
      PAINT(C1,C2),COLPIECE
    NEXT I
  END IF
END SUB
                 
SUB DICE STATIC

  SHARED D1,D2
  FOR J = 1 TO 10
  RANDOMIZE TIMER
  LINE (10,10)-(60,30),1,BF
  LINE (10,50)-(60,70),1,BF
  D1 = RND
  D2 = RND
  IF D1 >= 0 AND D1< (1/6) THEN
    CIRCLE(35,20),3,2:D1=1
  ELSEIF D1 >= (1/6) AND D1 < (2/6) THEN
    CIRCLE(55,12),3,2:CIRCLE(15,28),3,2:D1=2
  ELSEIF D1 >= (2/6) AND D1 < (3/6) THEN
    CIRCLE(55,12),3,2:CIRCLE(15,28),3,2:CIRCLE(35,20),3,2
    D1=3
  ELSEIF D1 >= (3/6) AND D1 < (4/6) THEN
    CIRCLE(55,12),3,2:CIRCLE(15,28),3,2
    CIRCLE(15,12),3,2:CIRCLE(55,28),3,2:D1=4
  ELSEIF D1 >= (4/6) AND D1 < (5/6) THEN
    CIRCLE(55,12),3,2:CIRCLE(15,28),3,2
    CIRCLE(15,12),3,2:CIRCLE(55,28),3,2
    CIRCLE(35,20),3,2:D1=5
  ELSE
    CIRCLE(55,12),3,2:CIRCLE(15,28),3,2
    CIRCLE(15,12),3,2:CIRCLE(55,28),3,2
    CIRCLE(15,20),3,2:CIRCLE(55,20),3,2:D1=6
  END IF
  IF D2 >= 0 AND D2< (1/6) THEN
    CIRCLE(35,60),3,2:D2=1
  ELSEIF D2 >= (1/6) AND D2 < (2/6) THEN
    CIRCLE (55,52),3,2:CIRCLE(15,68),3,2:D2=2
  ELSEIF D2 >= (2/6) AND D2 < (3/6) THEN
    CIRCLE(55,52),3,2:CIRCLE(15,68),3,2:CIRCLE(35,60),3,2
    D2=3
  ELSEIF D2 >= (3/6) AND D2 < (4/6) THEN
    CIRCLE(55,52),3,2:CIRCLE(15,68),3,2
    CIRCLE(15,52),3,2:CIRCLE(55,68),3,2:D2=4
  ELSEIF D2 >= (4/6) AND D2 < (5/6) THEN
    CIRCLE(55,52),3,2:CIRCLE(15,68),3,2
    CIRCLE(15,52),3,2:CIRCLE(55,68),3,2
    CIRCLE(35,60),3,2:D2=5
  ELSE
    CIRCLE(55,52),3,2:CIRCLE(15,68),3,2
    CIRCLE(15,52),3,2:CIRCLE(55,68),3,2
    CIRCLE(15,60),3,2:CIRCLE(55,60),3,2:D2=6
  END IF
  NEXT J
END SUB

SUB STRAT0(ITURN,OCFLAG(1),BUMPFLAG(1),MOVE(1),BARW,CHNGFLAG,MVSTAT$) STATIC
SHARED ROLL,DUMPW
  MVSTAT$ = "N" : ROLL(1)=0 : ROLL(2)=0
  FOR J = ITURN TO 2
    DUMPW1=0
    FOR I = 1 TO 24
      IF OCFLAG(I) = 1 OR BUMPFLAG(I)=1 THEN
        SPOT = I + MOVE(J)
        IF (SPOT) < 25 THEN
          DUMPW1=1
          IF OCFLAG(SPOT) <> 0 THEN ROLL(J) = ROLL(J)+1:MVSTAT$="Y"
        ELSEIF SPOT=25 AND DUMPW=0 THEN
          ROLL(J) = ROLL(J)+1
          MVSTAT$="Y"
          DUMPW1=1
        ELSE
          IF DUMPW1 = 0 THEN
            ROLL(J) = ROLL(J)+1
            MVSTAT$="Y"
          END IF
        END IF
      END IF
    NEXT I
    IF BARW > 0 THEN
      IF OCFLAG(MOVE(J)) <> 0 THEN 
        MVSTAT$="Y"
      END IF
    END IF
  NEXT J
  IF MVSTAT$="N" THEN
    SAY TRANSLATE$("I DETEHRMINE THAT YOU CAN'T MOVE")
    EXIT SUB
  END IF
  IF ITURN <> 2 THEN
    IF ROLL(1) = 0 AND BARW = 0 THEN
      SAY TRANSLATE$("YOU CAN'T MOVE WITH THAT DIE YET, SELECT THE OTHER")
      CHNGFLAG = 1
    END IF
  END IF
END SUB 

SUB STRAT1(ITURN,OCFLAG(1),BUMPFLAG(1),MOVE(1),MVSTAT$,RATE(2),PT) STATIC
SHARED ROLL,DUMPW,BARW,BARB,DUMPB,NUMPIECE(),MOVEFLAG()
DEFINT B

  FOR I = 1 TO 24
    MOVEFLAG(I)=0
  NEXT I
  MVSTAT$ = "N" : ROLL(1)=0 : ROLL(2)=0 
  FOR J = ITURN TO 2
    DUMPW1=0
     FOR I = 1 TO 24
      RATE(J,I)=0
      IF OCFLAG(I)=1 OR BUMPFLAG(I)=1 OR (J=2 AND MOVEFLAG(I)=1) THEN
        SPOT = I + MOVE(J)
        IF (SPOT) < 25 THEN
          DUMPW1=1
          IF OCFLAG(SPOT) = 2 THEN
            RATE(J,I)=1
            MVSTAT$="Y"
            IF J=1 THEN MOVEFLAG(SPOT)=1
            IF NUMPIECE(I) > 2 THEN RATE(J,I)=3
            IF SPOT > 18 AND BARB > 0 THEN RATE(J,I)=0
            IF BUMPFLAG(I)=1 THEN RATE(J,I)=5
            IF SPOT = 18 OR SPOT = 20 THEN RATE(J,I)=6
            IF DUMPB = 0 AND SPOT < 19 THEN RATE(J,I)=10
          END IF
          IF OCFLAG(SPOT) = 1 THEN
            RATE(J,I)=2
            MVSTAT$="Y"
            IF J=1 THEN MOVEFLAG(SPOT)=1
            IF NUMPIECE(I) > 2 THEN RATE(J,I)=4
            IF BUMPFLAG(I)=1 THEN RATE(J,I)=7
          END IF        
          IF BUMPFLAG(SPOT) = 0 THEN
            RATE(J,I)=5
            MVSTAT$="Y"
            IF J=1 THEN MOVEFLAG(SPOT)=1
            IF SPOT = 18 OR SPOT = 20 THEN RATE(J,I)=6
            IF SPOT < 6 THEN RATE(J,I)=6
          END IF  
          IF BUMPFLAG(SPOT) = 1 THEN
            RATE(J,I)=9
            MVSTAT$="Y"
            IF J=1 THEN MOVEFLAG(SPOT)=1
            IF SPOT >= 18 THEN RATE(J,I)=10
          END IF
        END IF  
        IF SPOT=25 AND DUMPW=0 THEN
          RATE(J,I)=11
          MVSTAT$="Y"
          DUMPW1=1
          IF DUMPB = 0 THEN RATE(J,I)=20
        END IF
        IF SPOT>25 AND DUMPW=0 THEN
          IF DUMPW1 = 0 THEN
            RATE(J,I)=11
            MVSTAT$="Y"
            IF DUMPB = 0 THEN RATE(J,I)=20
          END IF
        END IF
      END IF
      IF J=2 AND MOVEFLAG(I)=1 THEN
        RATE(1,I-MOVE(1)) = RATE(2,I)
      END IF
    NEXT I
  NEXT J

  J=ITURN  
  IF BARW > 0 THEN
    IF OCFLAG(MOVE(J)) <> 0 THEN
      MVSTAT$="Y"
      RATE(J,0)=50
      IF BUMPFLAG(MOVE(J))=0 THEN RATE(J,0)=75
      IF BUMPFLAG(MOVE(J))=1 THEN RATE(J,0)=100
    ELSE
      MVSTAT$="N"
    END IF
    IF J=1 THEN
      J=2
      IF OCFLAG(MOVE(J)) <> 0 THEN
        MVSTAT$="Y"
        RATE(J,0)=50
       IF BUMPFLAG(MOVE(J))=0 THEN RATE(J,0)=75
       IF BUMPFLAG(MOVE(J))=1 THEN RATE(J,0)=100
      ELSE
        IF MVSTAT$ <> "Y" THEN MVSTAT$="N"
      END IF
    END IF
  ELSE
    FOR JZ = J TO 2
      RATE(JZ,0)=0
    NEXT JZ
  END IF

  IF MVSTAT$="N" THEN
    EXIT SUB
  END IF

  ' PICK POINT ON WHICH TO MOVE A PIECE
  PT = 0:MAXRATE=0:DIE=0
  FOR JJ = ITURN TO 2
    FOR I = 1 TO 24
      IF OCFLAG(I)=1 OR BUMPFLAG(I)=1 THEN
        IF RATE(JJ,I) > MAXRATE THEN
          MAXRATE=RATE(JJ,I)
          PT=I:DIE=JJ
        END IF
      END IF
    NEXT I
    IF BARW > 0 THEN
      IF RATE(JJ,0) > MAXRATE THEN
        MAXRATE=RATE(JJ,0)
        PT=0:DIE=JJ
      END IF
    END IF
  NEXT JJ

  IF MOVE(1) <> MOVE(2) AND ITURN = 1 THEN
    IF DIE = 2 THEN
      SAY TRANSLATE$("I AM USING DIE 2 FIRST ")
      TEMP=MOVE(1)
      MOVE(1)=MOVE(2)
      MOVE(2)=TEMP
    END IF
  END IF
      
  IF RATE(DIE,0) = 100 THEN PT=0
  
END SUB 

