Las Vegas

Date: 198x
Type: Cassette
Platform(s): TS 2068
Tags: Gambling

A collection of casino and puzzle games behind a single menu. A scrolling message asks you to press the number of the game you want. The menu has slots for nine games, but only five are filled and the last four read NOTHING.

  • 1 Las Vegas is a three-reel fruit machine. You INSERT a dollar for four credits, and each PLAY costs two. A table beside the machine shows the payouts for two and three of a kind. Four jokers can be collected, and holding all four doubles your wins for 15 turns. Three of certain symbols start a jackpot run. After a win you can HOLD reels, GAMBLE or COLLECT. The gamble cycles through double, nothing, one and a half and half until you press S. Choosing END shows what you put in and got back, your highest total, your gambling result and how many holds, gambles and turns you made.
  • 2 Squares (“Rainbow Square Dance” in the listing) is a five-by-five grid of coloured blocks that starts as five solid-coloured rows and is shuffled at the start. You choose a row (1–5) or a column (6–9 and 0) and shift it from −4 to 4 steps, and try to bring the rows back. Entering 999 returns to the menu.
  • 3 Qui Vive is a board game against the computer on a five-by-five board with squares A1 to E5. Each side places five checkers and then moves one checker at a time. The first player whose five checkers form one of 42 shapes, such as a row, column, diagonal, plus, X or “wing”, wins.
  • 4 Boule is a nine-number roulette-style game with a $100 stake. You can bet on pairs, impairs, manque, passe, black numbers or white numbers at even money, or on a single number at 7 to 1. Number 5 is the house number and loses every bet. A bet of 0 returns to the menu.
  • 5 One to Five is a three-by-three number puzzle. Pressing a key from 1 to 9 changes that square and the others in its row and column, with each value counting up from 0 to 5 and back to 0. The goal is to get every square back to zero, and the program counts your moves. Pressing the full stop gives up.

No author or publisher is named anywhere in the program. The menu also has hidden keys: 0 saves the collection to tape as GAME1 and verifies it, and SPACE erases the program with NEW.

This copy was found on a Larken disk labelled Poker. A cassette transfer of the program had already been made in 2023, but the TAP from that transfer was broken. The disk copy matches the cassette in 741 of its 743 lines, with only the disk save and load lines differing, and its TAP has replaced the broken one. The download still includes the 2023 cassette transfer files: a TZX, a WAV recording and a photo of the hand-labelled tape, which is marked “LAS VAGAS”.

Program Analysis

Menu

The program autostarts at line 33, where lines 33–41 define user-defined graphic e as a checkerboard pattern. That pattern makes the border of the menu screen and fills the scrolling prompt. Line 1 scrolls the prompt across the bottom line. Line 9 sends the key pressed to line VAL R$+10, a jump table at lines 10–19. Line 7 accepts only keys 0–5, so the entries for the four empty slots at lines 16–19 are never reached.

Las Vegas

Reel stops are weighted. Line 292 draws a number from 1 to 100, and line 293 turns it into a symbol index with a chain of comparisons such as (FI>7)+(FI>10). Values below 5 are jokers. The spinning reels at lines 300–306 step each reel through the 13 symbols in W$ and stop it when it reaches the drawn symbol. Each reel stops later than the one before. Payouts come from R(NS,K(2)), where NS counts the matching neighbouring reels, and a single % pays 1. Money is kept in quarters, which is why the end-of-game report divides by four.

Qui Vive

The 42 winning shapes are stored in DATA at lines 757–776 as five-letter strings of squares A–Y and decoded into S(42,5). Lines 784–792 pack 108 pairs of overlapping shapes into D(108,2) as two characters each, offset from CODE "0". The player’s checkers count 1 and the computer’s count 10, so the sum over a shape shows at once who owns it. For example, 4 means the player has four of the five squares and 40 means the computer does. The computer’s move search at lines 704–722 tries each empty square, uses those sums to block threats and to score the overlapping shapes, and picks the best one.

Boule and One to Five

Boule names its numbers with variables such as ONE, TWELVE and TWENTYONE, all set in line 1010, and draws the wheel with UDGs f–l printed over one another with OVER 1. One to Five keeps the board in A(3,3). Line 7420 subtracts 1 from the chosen square before the row and column loop adds 1 to it twice, so that square goes up by one like the rest. Line 7500 wraps 6 back to 0.

Notable Techniques

  • Computed GO TO and GO SUB with Boolean AND, as in line 403 GO SUB (250 AND CA=1)+(260 AND CA=2)+…, take the place of ON … GO TO.
  • Line 380 adds trailing zeros to money amounts by comparing LEN STR$ X with LEN STR$ INT X.
  • Qui Vive’s 1-and-10 weighting lets one sum describe the state of a whole shape.
  • The gamble pointer at line 347 slows down by raising its delay to the power 1.3 at each step, so it eases to a stop after you press S.

Potential Issues

  • Line 366 is meant to report a gambling loss but sets C instead of X, so the “LOST BY GAMBLING” figure repeats the previous line’s value.
  • In One to Five, line 7330 jumps to line 795 when a key is still held, which is Qui Vive’s play-again prompt. Answering Y there starts Qui Vive rather than another round of One to Five. Because the PAUSE 500 before it ends on a key press, this is the likely path.
  • Boule doesn’t check the bet for a negative value. A negative bet that loses increases the stake.
  • Boule compares the choice with upper-case letters only, and the program never turns on caps lock, so a lower-case a to f always loses.
  • Squares has no check for a solved grid. The game carries on until you enter 999.
  • Line 141 and lines 1480–1490 print an empty string and the same character twice, so the jackpot flash and the Boule ball animation appear to show nothing. A character may have been lost from these lines.

The TAP in the download was converted from the Larken disk copy. The PRINT #4 disk prefixes and the disk load line were removed, the autostart was corrected to line 33 and the disk’s variables marker was dropped. It was tested in ZEsarUX on the menu, the fruit machine and Boule.

Image Gallery

Source Code

    1 FOR I=1 TO LEN A$-20: PRINT AT 21,4;A$(I TO I+20): PAUSE 15: NEXT I
    2 IF INKEY$<>"" THEN GO TO 2
    3 IF INKEY$="" THEN GO TO 3
    4 LET R$=INKEY$
    5 IF R$=" " THEN NEW 
    7 IF R$<"0" OR R$>"5" THEN GO TO 2
    9 GO TO VAL R$+10
   10 GO TO 44
   11 GO TO 50: REM LAS VEGAS
   12 GO TO 501: REM SQUARES
   13 GO TO 555: REM QUI VIVE
   14 GO TO 1000: REM BOULE
   15 GO TO 7000: REM ONE TO FIVE
   16 GO TO 1: REM SIXTH GAME
   17 GO TO 1: REM SEVENTH GAME
   18 GO TO 1: REM EIGHTH GAME
   19 GO TO 1: REM NINTH GAME
   20 CLS : POKE 23659,0: PRINT "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
   21 FOR I=1 TO 22: PRINT "::eeeeeeeeeeeeeeeeeeeeeeeeeeeeee::": NEXT I
   22 PRINT "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::": POKE 23659,2: PRINT AT 2,13; FLASH 1;"MENU"; FLASH 0
   23 PRINT AT 5,2;"1 LAS VEGAS"
   24 PRINT AT 6,2;"2 SQUARES"
   25 PRINT AT 7,2;"3 QUI VIVE"
   26 PRINT AT 8,2;"4 BOULE"
   27 PRINT AT 9,2;"5 ONE TO FIVE"
   28 PRINT AT 10,2;"6 NOTHING"
   29 PRINT AT 11,2;"7 NOTHING"
   30 PRINT AT 12,2;"8 NOTHING"
   31 PRINT AT 13,2;"9 NOTHING"
   32 GO TO 1
   33 POKE USR "e",BIN 10101010
   34 POKE USR "e"+1,BIN 01010101
   35 POKE USR "e"+2,BIN 10101010
   36 POKE USR "e"+3,BIN 01010101
   37 POKE USR "e"+4,BIN 10101010
   38 POKE USR "e"+5,BIN 01010101
   39 POKE USR "e"+5,BIN 01010101
   40 POKE USR "e"+6,BIN 10101010
   41 POKE USR "e"+7,BIN 01010101
   42 LET A$="eeeeeehit number corresponding to program desiredeeeeeeeeeeeeeeeeeeeee"
   43 GO TO 20
   44 CLS : SAVE "GAME1" LINE 33
   45 PRINT AT 3,6;"REWIND TAPE";AT 5,5;" AND HIT ENTER";AT 7,6;"TO VERIFY";: PRINT : PRINT 
   46 VERIFY "GAME1"
   47 GO TO 33
   50 REM ***LAS VEGAS***
   51 CLS : DIM R(3,13): DIM J(13): LET J(5)=1: LET J(6)=1: LET J(7)=1: LET W$="AKQJ7*$0/=+#%"
   52 RESTORE 53: FOR I=5 TO 12: READ R(2,I),R(3,I): NEXT I
   53 DATA 8,40,8,40,7,30,5,25,3,20,3,20,2,10,2,10
   54 DIM H(3): DIM P(3): DIM C(4): DIM D(4): DIM K(3): DIM V(4): DIM O(3): DIM A(3): DIM F(3): DIM G(4): DIM E(4,2)
   55 FOR I=1 TO 3: READ P(I): NEXT I
   56 FOR I=1 TO 4: READ D(I): READ E(I,1): READ E(I,2): NEXT I
   57 DATA 12,14,16,12,1,14,13,2,20,15,3,14,16,2,9
   58 LET B$="             ": LET NT=-1: LET NJ=4: LET NI=0: LET WI=0: LET HB=0: LET DO=0: LET DC=0: LET JA=0: LET JC=0: LET MO=0: LET MM=0: LET R=0: LET GW=0: LET NH=0: LET NG=0
   60 FOR I=1 TO 3: LET V(I)=INT (RND*14): NEXT I
   62 GO TO 400
  100 REM ***FLASH S$ AND GET INKEY$***
  101 PRINT AT R,C; OVER 1; FLASH 1;S$;
  102 LET I$=INKEY$: IF I$="" THEN GO TO 102
  103 PRINT AT R,C; PAPER CL;T$;
  104 RETURN 
  110 REM ***ADD INCREMENT TO MONEY***
  111 FOR I=SGN (IN) TO IN STEP SGN (IN)
  112 PRINT AT 0,7;MO+I;" ";: BEEP .1,40: NEXT I
  113 LET MO=MO+IN: RETURN 
  120 REM ***REMOVE DOUBLE***
  121 LET DO=0: PRINT AT 6,11; PAPER 2;"       ";
  122 FOR I=1 TO 4: PRINT AT 7,D(I);W$(I);: LET C(I)=0: NEXT I: RETURN 
  130 REM ***CLEAR LAST LINE***
  131 PRINT AT 21,0;TAB 31;"";: RETURN 
  140 REM ***JACKPOT***
  141 FOR T=1 TO 4: FOR C=1 TO JC: PRINT AT 0,11+C;"";: NEXT C
  142 FOR C=1 TO JC: BEEP .1,10+2*C: PRINT AT 0,11+C;"J";: NEXT C
  143 NEXT T: RETURN 
  150 REM ***FLASH POSSIBLE HOLDS AND GET INKEYS$***
  151 FOR I=1 TO 3: IF H(I)=0 THEN PRINT AT 11,P(I); FLASH 1; PAPER 2; INK 7; OVER 1;"H";
  152 NEXT I: LET HO=0
  153 LET I$=INKEY$: IF I$="" THEN GO TO 153
  154 IF I$<>"1" AND I$<>"2" AND I$<>"3" THEN GO TO 157
  155 LET I=VAL I$: PRINT AT 11,P(I); PAPER 2; INK 7;"H";
  156 LET HO=1: LET H(I)=1: GO TO 153
  157 FOR I=1 TO 3: IF H(I)=0 THEN PRINT AT 11,P(I); PAPER 2;" ";
  158 NEXT I: LET NH=NH+HO: RETURN 
  200 REM ***DRAW SCREEN***
  201 PRINT AT 5,11; PAPER 3;"       ";
  202 FOR I=0 TO 4: PRINT AT 6+I,10; PAPER 3;" "; PAPER 2;"       "; PAPER 3;" "; PAPER 7;" "; PAPER 3;" ";: NEXT I
  203 PRINT AT 6,20; PAPER 2;" ";: PRINT AT 10,19; PAPER 3;" ";
  204 FOR I=0 TO 2: PRINT AT 9,12+2*I; PAPER 6;" ";: NEXT I
  205 PRINT AT 11,11; PAPER 5;"       ";
  206 FOR I=0 TO 2: PRINT AT 11,12+2*I; PAPER 2;" ";: NEXT I
  207 FOR I=0 TO 3: PRINT AT 12+I,12; PAPER 5;"     ";: NEXT I
  208 FOR I=0 TO 3: FOR K=0 TO 4+2*I: PRINT AT 16+I,12-I+K; PAPER 1;" ";: NEXT K: NEXT I
  209 PRINT AT 0,0;"TOTAL: 0";
  210 PRINT AT 8,0;"--%--= 1";
  211 FOR I=12 TO 5 STEP -1
  212 PRINT AT 21-I,0;"-";W$(I);W$(I);"- = ";R(2,I);
  213 PRINT AT 21-I,22;W$(I);W$(I);W$(I);" = ";R(3,I);
  214 IF J(I) THEN PRINT "+J";
  215 NEXT I: RETURN 
  230 REM ***ADAPT VARIABLES***
  231 LET NT=NT+1: IF WI>0 THEN LET HB=1: LET WI=0
  232 FOR I=1 TO 3: LET H(I)=0: PRINT AT 11,P(I); PAPER 2;" ";: NEXT I
  233 IF DO THEN GO TO 238
  234 FOR I=1 TO 4: IF C(I)=0 THEN GO TO 237
  235 LET C(I)=C(I)-1: IF C(I)>0 THEN GO TO 237
  236 LET NJ=NJ+1: PRINT AT 7,D(I);W$(I);
  237 NEXT I: GO TO 239
  238 LET DC=DC-1: IF DC=0 THEN GO SUB 120
  239 IF JA THEN PRINT AT 0,11+JC;" ";: LET JC=JC-1: IF JC=0 THEN LET JA=0
  240 IF MO>MM THEN LET MM=MO
  241 RETURN 
  250 REM ***NOT ENOUGH MONEY***
  251 LET HB=1: GO SUB 120
  252 LET JA=0: PRINT AT 0,10;TAB 31;"";
  253 GO SUB 130: PRINT AT 21,8; PAPER 5;"INSERT OR END";
  254 LET S$="INSERT (I)": LET T$=B$: LET CL=7: LET R=2: LET C=0: GO SUB 100
  255 IF I$="P" OR I$="p" THEN GO TO 254
  256 RETURN 
  260 REM ***HOLD POSSIBLE***
  261 GO SUB 130: PRINT AT 21,2; PAPER 5;"INSERT, HOLD, PLAY OR END";
  262 GO SUB 150: RETURN 
  270 REM ***NO HOLD POSSIBLE***
  271 GO SUB 130: PRINT AT 21,5; PAPER 5;"INSERT, PLAY OR END";
  272 LET S$="???": LET T$="   ": LET CL=1: LET R=18: LET C=13: GO SUB 100
  273 RETURN 
  280 REM ***WHAT TO DO WITH WINNINGS***
  281 GO SUB 130
  282 IF HB THEN PRINT AT 21,7;"";: GO TO 284
  283 PRINT AT 21,4; PAPER 5;"HOLD, ";
  284 PRINT ; PAPER 5;"GAMBLE OR COLLECT";
  285 LET S$="???": LET T$="   ": LET CL=1: LET R=18: LET C=13: GO SUB 100
  286 RETURN 
  290 REM ***PLAY***
  291 FOR I=1 TO 3: IF H(I) THEN GO TO 294
  292 LET O(I)=V(I): LET FI=INT (RND*100)+1: LET V(I)=FI: IF FI<5 THEN GO TO 294
  293 LET V(I)=5+(FI>7)+(FI>10)+(FI>13)+(FI>36)+(FI>49)+(FI>68)+(FI>87)
  294 NEXT I
  295 FOR C=6 TO 9: PRINT AT C,20;" ";: PRINT AT C+1,20; PAPER 2;" ";
  296 FOR I=1 TO 15: NEXT I: NEXT C
  297 FOR C=10 TO 7 STEP -1: PRINT AT C,20; PAPER 3;" ";: PRINT AT C-1,20; PAPER 2;" ";
  298 FOR I=1 TO 15: NEXT I: NEXT C
  299 FOR I=1 TO 3: LET F(I)=0: NEXT I
  300 FOR I=0 TO 70: FOR J=1 TO 3
  301 IF H(J)=1 THEN GO TO 306
  302 IF F(J)=1 THEN GO TO 305
  303 LET O(J)=O(J)+1: IF O(J)>13 THEN LET O(J)=1
  304 IF (I>10+13*J) AND O(J)=V(J) THEN LET F(J)=1: BEEP .02,8*J
  305 PRINT AT 9,P(J); PAPER 6;W$(O(J));
  306 NEXT J: NEXT I: RETURN 
  310 REM ***TAKE CARE OF JOKERS***
  311 LET JO=0: FOR I=1 TO 3: LET V=V(I)
  312 IF V>4 THEN LET FV=V: GO TO 315
  313 LET JW=I: LET JO=JO+1: IF C(V)>0 THEN GO TO 315
  314 PRINT AT 7,D(V); PAPER 3;" ";: LET C(V)=20: LET NJ=NJ-1
  315 NEXT I: LET DO=(NJ=0): IF DO THEN LET DC=15: PRINT AT 6,11; PAPER 6;"DOUBLE!";
  316 RETURN 
  320 REM ***COMPUTE WINNINGS***
  321 LET HV=5: GO TO (322 AND JO=0)+(325 AND JO=1)+(322 AND JO=2)+(327 AND JO=3)
  322 LET HV=FV
  323 GO TO 327
  325 LET V(4)=15: LET JR=JW+1: LET JL=JW-1: IF JL=0 THEN LET JL=4
  326 LET HV=V(JR): IF V(JR)>V(JL) THEN LET HV=V(JL)
  327 FOR I=1 TO 3: LET K(I)=V(I): IF V(I)<5 THEN LET K(I)=HV
  328 NEXT I: IF K(1)<>K(2) OR K(2)<>K(3) THEN GO TO 330
  329 IF J(K(1)) THEN LET JA=1: LET JC=15: GO SUB 140
  330 LET W1=0: LET W2=0
  331 FOR I=1 TO 3: IF K(I)=13 THEN LET W1=W1+1
  332 NEXT I: LET NS=1+(K(1)=K(2))+(K(2)=K(3)): LET W2=R(NS,K(2))
  333 LET WI=W2: IF W1>WI THEN LET WI=W1
  334 IF JA AND WI>0 AND WI<10 THEN LET WI=10
  335 IF DO THEN LET WI=2*WI
  336 RETURN 
  340 REM ***GAMBLE ROUTINE**
  341 LET DT=1: LET G(1)=2*WI: LET G(2)=0: LET G(3)=INT (3*WI/2): LET G(4)=INT (WI/2)
  342 LET NG=NG+1: GO SUB 130: PRINT AT 21,12; PAPER 5;"STOP";
  343 FOR I=1 TO 3: PRINT AT I,8; PAPER 6;"               ";: NEXT I: REM 15*
  344 LET R=R+1: IF R>4 THEN LET R=1
  345 PRINT AT E(R,1),E(R,2); PAPER 6;G(R);: BEEP .003,10+3*R
  346 IF I$<>"S" AND I$<>"s" THEN LET I$=INKEY$: GO TO 349
  347 LET DT=(2+RND)*0.5*DT^1.3: IF DT>250 THEN LET DT=250
  348 FOR I=1 TO DT: NEXT I: IF DT>200 THEN GO TO 350
  349 PRINT AT E(R,1),E(R,2); PAPER 6;"   ";: GO TO 344
  350 FOR I=1 TO 3: PRINT AT I,8;TAB 31;"";: NEXT I
  351 LET GW=GW+G(R)-WI: LET WI=G(R): RETURN 
  360 REM ***END OF GAME***
  361 CLS : PRINT : PRINT "AMOUNT OF MONEY": PRINT 
  362 PRINT " PUT IN:";TAB 18;"$";: LET X=NI: GO SUB 380
  363 PRINT " GOT BACK:";TAB 18;"$";: LET X=MO/4: GO SUB 380
  364 PRINT " MAX AT ONE TIME: $";: LET X=MM/4: GO SUB 380
  365 IF GW>=0 THEN PRINT " WON BY GAMBLING: $";: LET X=GW/4: GO SUB 380
  366 IF GW<0 THEN PRINT " LOST BY GAMBLING:$";: LET C=-GW/4: GO SUB 380
  367 PRINT : PRINT : PRINT "NUMBER OF HOLDS:";TAB 19;: LET X=NH: GO SUB 390
  368 PRINT "NUMBER OF GAMBLES:";TAB 19;: LET X=NG: GO SUB 390
  369 PRINT "NUMBER OF TURNS:";TAB 19;: LET X=NT: GO SUB 390
  370 RETURN 
  380 LET L=LEN STR$ X-LEN STR$ INT X
  381 LET X$=STR$ X+("0" AND L=2)+(".00" AND L=0)
  382 FOR I=LEN X$ TO 5: PRINT " ";: NEXT I: PRINT X$: RETURN 
  390 FOR I=LEN STR$ X TO 2: PRINT " ";: NEXT I: PRINT X: RETURN 
  400 REM ***MAIN PROGRAM***
  401 GO SUB 200: REM SCREEN
  402 GO SUB 230: REM ADAPT
  403 LET CA=2*HB+(MO>1)+1: GO SUB (250 AND CA=1)+(260 AND CA=2)+(250 AND CA=3)+(270 AND CA=4)
  404 PRINT AT 3,8;TAB 31;"";: LET CA=(I$="I" OR I$="i")+2*(I$="P" OR I$="p")+3*(I$="E" OR I$="e")
  405 GO TO (403 AND CA=0)+(410 AND CA=1)+(412 AND CA=2)+(470 AND CA=3)
  410 LET NI=NI+1: LET IN=4: GO SUB 110: IF MO>MM THEN LET MM=MO
  411 GO TO 403
  412 LET IN=-2: GO SUB 110
  421 GO SUB 290: REM PLAY
  422 GO SUB 310: REM JOKERS
  423 GO SUB 320: REM WINNINGS
  424 IF H(1)+H(2)+H(3)>0 THEN GO TO 426
  425 LET HB=0: LET LW=WI: GO TO (429 AND WI>0)+(402 AND WI<=0)
  426 LET HB=1: IF WI>LW THEN GO TO 429
  427 IF LW=0 THEN GO TO 402
  428 PRINT AT 3,10;TAB 31;"";: PRINT AT 3,11; PAPER 6;"YOU LOST";: BEEP 2,10: GO TO 402
  429 PRINT AT 3,10; PAPER 6;"YOU WON ";WI;: FOR I=1 TO WI: BEEP .1,20: NEXT I
  430 IF MO<2 THEN LET HB=1
  431 GO SUB 280: REM GET INSTRUCTION
  432 LET CA=((I$="H" OR I$="h") AND NOT HB)+2*(I$="G" OR I$="g")+3*(I$="C" OR I$="c")
  433 GO TO (431 AND CA=0)+(460 AND CA=1)+(450 AND CA=2)+(440 AND CA=3)
  440 LET IN=WI: GO SUB 110: GO TO 402
  450 LET HB=1: GO SUB 340: REM GAMBLE
  451 IF WI>0 THEN GO TO 429
  452 GO TO 428
  460 LET WI=0: GO TO 402
  470 GO SUB 360
  480 IF INKEY$<>"" THEN GO TO 480
  490 IF INKEY$="" THEN GO TO 490
  500 GO TO 33: REM EXIT PROGRAM
  501 REM RAINBOW SQUARE DANCE
  502 DIM A(6,6)
  503 FOR X=1 TO 5
  504 FOR Y=2 TO 6
  505 LET A(X,Y)=Y-1
  506 NEXT Y
  507 NEXT X
  508 FOR I=1 TO 20
  509 LET K=1+INT (10*RND)
  510 GO SUB 540
  511 NEXT I
  512 CLS 
  513 REM ***BEGIN GAME***
  514 FOR Y=2 TO 6
  515 LET P=(Y-2)*4-1
  516 PRINT AT (P+2),5;Y-1
  517 FOR I=1 TO 4
  518 PRINT AT (P+I),7; INK A(1,Y);"::::::::"; INK A(2,Y);"::::::::"; INK A(3,Y);"::::::::"; INK A(4,Y);;"::::::::"; INK A(5,Y);"::::::::"
  519 NEXT I
  520 NEXT Y
  521 PRINT AT 21,7;" 6   7   8   9   0"
  522 INPUT AT 0,0;"COLUMNNUMBER(0..9): ";K;AT 1,0;"NUMBER OF STEPS (-4..4): ";S
  524 IF K=999 OR S=999 THEN GO TO 33
  526 IF K=0 THEN LET K=10
  528 IF (K<1 OR K>10) OR (S<-4 OR S>4) THEN GO TO 522
  530 IF S<0 THEN LET S=S+5
  532 FOR I=1 TO S
  534 GO SUB 540
  536 NEXT I
  538 GO TO 513
  540 IF K>5 THEN GO TO 547
  542 FOR X=6 TO 2 STEP -1
  543 LET A(X,K+1)=A(X-1,K+1)
  544 NEXT X
  545 LET A(1,K+1)=A(6,K+1)
  546 RETURN 
  547 FOR Y=2 TO 6
  548 LET A(K-5,Y-1)=A(K-5,Y)
  549 NEXT Y
  550 LET A(K-5,6)=A(K-5,1)
  551 RETURN 
  554 REM **QUI VIVE**
  555 DIM S(42,5): DIM O(42)
  556 DIM D(108,2): DIM F(16,9)
  557 DIM E(5,2): DIM B(25): DIM C(25)
  558 GO TO 695
  560 REM **COMPUTE POINTS OF F(.,.)**
  561 LET P1=0: LET P2=0: LET C1=0: LET C2=0: LET D1=B(F(N,1)): LET D2=B(F(N,2))
  562 IF D1=1 OR D2=1 THEN LET P1=1
  563 IF D1=10 OR D2=10 THEN LET C1=10
  564 LET D1=B(F(N,3)): LET D2=B(F(N,4))
  565 IF D1=1 OR D2=1 THEN LET P2=1
  566 IF D1=10 OR D2=10 THEN LET C2=10
  567 LET GV=B(F(N,5))+B(F(N,6))+B(F(N,7))
  568 LET P=GV+P1+P2+C1+C2
  569 IF GV=30 AND (C1=0 OR C2=0) THEN LET P=P-10
  570 IF GV=3 AND (P1=0 OR P2=0) THEN LET P=P-1
  571 RETURN 
  575 REM **COMPUTE DOUBLE FIGURES FIELDS**
  576 LET TC=5: LET TN=1
  577 FOR I=1 TO 5: LET C(S(D(F,1),I))=1: NEXT I
  578 FOR I=1 TO 5: LET S=S(D(F,2),I)
  579 IF C(S)=1 THEN GO TO 581
  580 LET F(N,TN)=S: LET TN=TN+1: GO TO 582
  581 LET F(N,TC)=S: LET TC=TC+1: LET C(S)=0
  582 NEXT I
  583 FOR I=1 TO 5: LET S=S(D(F,1),I)
  584 IF C(S)=1 THEN LET F(N,TN)=S: LET TN=TN+1: LET C(S)=0
  585 NEXT I: RETURN 
  587 REM **DETERMINE OWNERS OF S(.,.)'S**
  588 LET OM=-1: LET WM=-1
  589 FOR S=1 TO 42
  590 LET P=B(S(S,1))+B(S(S,2))+B(S(S,3))+B(S(S,4))+B(S(S,5))
  591 IF P=0 OR P=10 OR P=20 OR P=30 THEN LET O(S)=10: GO TO 601
  592 IF P<>40 THEN GO TO 596
  593 GO SUB 603
  594 GO SUB 608
  595 LET WM=1: LET S=42: GO TO 601
  596 IF P>20 OR P<3 OR P=11 OR P=12 THEN LET O(S)=0: GO TO 601
  597 LET O(S)=1
  598 IF P=4 AND OM=-1 THEN GO SUB 603
  599 IF P=14 THEN GO SUB 608
  600 IF P=5 THEN LET S=42
  601 NEXT S: RETURN 
  603 REM **DETERMINE OBLIGATORY MOVE (OM)**
  604 FOR I=1 TO 5
  605 IF B(S(S,I))=0 THEN LET OM=S(S,I)
  606 NEXT I: RETURN 
  608 REM **DETERMINE PENDED CHECKER**
  609 FOR I=1 TO 5
  610 IF B(S(S,I))<>10 THEN GO TO 614
  611 FOR J=1 TO CC
  612 IF S(S,I)=E(J,1) THEN LET E(J,2)=1
  613 NEXT J
  614 NEXT I
  615 RETURN 
  617 REM **DETERMINE INTERESTING F(.,.)'S**
  618 LET NC=0: LET NP=0: LET N=1
  619 FOR I=1 TO 16
  620 LET F(I,9)=-1
  621 LET F(I,8)=0
  622 NEXT I
  623 FOR F=1 TO 108
  624 LET O1=O(D(F,1)): LET O2=O(D(F,2))
  625 IF O1<>O2 OR O1=0 OR O2=0 THEN GO TO 637
  626 GO SUB 575
  627 GO SUB 560
  628 IF P=4 OR P=14 THEN LET F(N,8)=1: GO TO 631
  629 IF O1=1 OR P<=F(N,9) THEN GO TO 637
  630 LET F(N,8)=10
  631 LET F(N,9)=P
  632 LET N=1
  633 FOR I=1 TO 16
  634 IF F(I,9)>=F(N,9) THEN GO TO 636
  635 IF F(I,8)=0 OR F(I,8)=10 THEN LET N=I
  636 NEXT I
  637 NEXT F
  638 RETURN 
  640 REM **TREAT MOVE**
  641 IF WM=1 THEN GO TO 657
  642 LET MC=0: LET N2=0
  643 FOR N=1 TO 16
  644 IF F(N,8)=0 THEN GO TO 651
  645 GO SUB 560
  646 IF F(N,8)=1 THEN GO TO 650
  647 IF P=MC THEN LET N2=N2+1
  648 IF P>MC THEN LET MC=P: LET N2=1
  650 IF P=4 THEN LET N=16
  651 NEXT N
  652 IF R=0 THEN GO TO 657
  653 IF P=4 THEN RETURN 
  654 IF MC<MP THEN RETURN 
  655 IF MC=MP AND N2<N1 THEN RETURN 
  656 IF MC=MP AND N2=N1 AND RND<.5 THEN RETURN 
  657 LET MP=MC: LET N1=N2
  658 LET R=D: LET T=B
  659 RETURN 
  661 REM **PLAYER MOVE**
  662 PRINT AT 17,6;"NOW IT'S YOUR TURN!": PRINT AT 19,0;TAB 31;"": PRINT AT 20,0;TAB 31;"";
  663 IF PC<5 THEN GO TO 667
  664 INPUT "WHICH CHECKER DO YOU TAKE?";TAB 32;"A1..E5: ";M$
  665 GO SUB 675: LET T=X: IF NP OR B(T)<>1 THEN BEEP 1,20: GO TO 664
  666 PRINT AT 19,3;"YOU TAKE CHECKER FROM: ";M$
  667 INPUT "WHERE DO YOU PLACE YOUR CHECKER?A1..E5: ";M$
  668 GO SUB 675: LET R=X: IF NP OR B(R)<>0 THEN BEEP 1,20: GO TO 667
  669 PRINT AT 20,3;"YOU PLACE CHECKER ON : ";M$
  670 IF PC=5 THEN LET B(T)=0
  671 IF PC<5 THEN LET PC=PC+1
  672 LET B(R)=1: GO SUB 731
  673 RETURN 
  675 REM ** INPUT **
  676 LET NP=0: LET X=1: IF LEN M$<>2 THEN GO TO 681
  677 LET CO=CODE M$(1): IF CO>96 THEN LET M$(1)=CHR$ (CO-32)
  678 LET L$=M$(1): LET D$=M$(2)
  679 IF L$<"A" OR L$>"E" OR D$<"1" OR D$>"5" THEN GO TO 681
  680 LET X=CODE L$-5*VAL D$-39: RETURN 
  681 LET NP=1: RETURN 
  683 REM **COMPUTER MOVE**
  684 BEEP 1,30: IF CC<5 THEN LET T=CC+1: LET CC=CC+1: GO TO 690
  685 PRINT AT 19,4;"I TAKE CHECKER FROM: ";CHR$ (64+T-INT ((T-1)/5)*5);5-INT ((T-1)/5)
  686 LET B(T)=0
  687 FOR C=1 TO 5
  688 IF E(C,1)=T THEN LET T=C: LET C=5
  689 NEXT C
  690 PRINT AT 20,4;"I PLACE CHECKER ON : ";CHR$ (64+R-INT ((R-1)/5)*5);5-INT ((R-1)/5)
  691 LET B(R)=10: LET E(T,1)=R
  692 GO SUB 731
  693 RETURN 
  695 REM **MAIN PROGRAM**
  696 LET D=1: LET B=1: LET WM=-1
  697 GO SUB 741: PRINT AT 17,11;"PLEASE WAIT"
  698 GO SUB 751: GO SUB 778
  699 LET CC=0: LET PC=0: PRINT AT 17,0;TAB 31;""
  700 INPUT "DO YOU WANT TO BEGIN?";TAB 32;"Y OR N: ";A$
  701 IF A$="N" OR A$="n" THEN LET R=13: GO TO 723
  702 IF A$="Y" OR A$="y" THEN GO TO 725
  703 GO TO 700
  704 FOR I=1 TO 5: LET E(I,2)=0: NEXT I
  705 GO SUB 587: IF P=5 THEN GO TO 727
  706 PRINT AT 17,6;" NOW IT'S MY TURN! ": PRINT AT 19,0;TAB 31;"": PRINT AT 20,0;TAB 10;"PLEASE WAIT";TAB 31;""
  707 IF WM<>1 THEN GO SUB 617
  708 LET MP=0: LET N1=0: LET R=0
  709 LET BF=1: LET EF=25
  710 IF OM<>-1 THEN LET BF=OM: LET EF=OM
  711 FOR D=BF TO EF
  712 IF B(D)<>0 THEN GO TO 722
  713 LET B(D)=10
  714 IF CC<5 THEN GO SUB 640: GO TO 721
  715 FOR C=1 TO 5
  716 IF E(C,2) THEN GO TO 720
  717 LET B=E(C,1): LET B(B)=0
  718 GO SUB 640
  719 LET B(B)=10
  720 NEXT C
  721 LET B(D)=0
  722 NEXT D
  723 GO SUB 683
  724 IF WM=1 THEN GO TO 728
  725 GO SUB 661
  726 GO TO 704
  727 PRINT AT 21,12; PAPER 6;"YOU WIN!": GO TO 729
  728 PRINT AT 21,13; PAPER 5;"I WIN!"
  729 BEEP 2,25: GO TO 794
  731 REM **DISPLAY CHECKERS**
  732 FOR I=0 TO 4: FOR J=1 TO 5
  733 LET H=5*I+J
  734 IF B(H)=0 THEN PRINT AT 4+2*I,9+2*J;" ";
  735 IF B(H)=1 THEN PRINT AT 4+2*I,9+2*J; PAPER 6;"P";
  736 IF B(H)=10 THEN PRINT AT 4+2*I,9+2*J; PAPER 5;"C";
  737 NEXT J: NEXT I: RETURN 
  738 PRINT AT 14,11;"A B C D E";
  739 RETURN 
  741 REM **DISPLAY BOARD**
  742 CLS : PRINT AT 1,9;"***QUI VIVE***"
  743 FOR I=0 TO 5
  744 PLOT 84,147-16*I: DRAW 80,0
  745 PLOT 84+16*I,147: DRAW 0,-80
  746 NEXT I
  747 FOR I=1 TO 5: PRINT AT 14-2*I,21;I: NEXT I
  748 PRINT AT 14,11;"A B C D E";: GO SUB 5000
  749 RETURN 
  750 REM **INIT SINGLE FEATURES**
  751 RESTORE 757
  752 FOR I=1 TO 42: READ M$
  753 FOR J=1 TO 5
  754 LET S(I,J)=CODE M$(J)-64
  755 NEXT J: NEXT I: RETURN 
  756 REM WINGS (AV><)
  757 DATA "UQMSY","PLMNT","KGCIO"
  758 DATA "AGMIE","FLRNJ","KQWSO"
  759 DATA "AGMQU","BHNRV","CIOSW"
  760 DATA "EIMSY","DHLRX","CGKQW"
  761 REM TIMES (X)
  762 DATA "ACGKM","BDHLN","CEIMO"
  763 DATA "FLHPR","GIMQS","HJNRT"
  764 DATA "KMQUW","LNRVX","MOSWY"
  765 REM PLUS(+)
  766 DATA "BFGHL","CGHIM","DHIJN"
  767 DATA "GKLMQ","HLMNR","IMNOS"
  768 DATA "LPQRV","MQRSW","NRSTX"
  769 REM DIAGONALS (/)
  770 DATA "AGMSY","EIMQU"
  771 REM COLUMNS(!)
  772 DATA "AFKPU","BGQLV","CHMRW"
  773 DATA "DINSX","EJOTY"
  774 REM ROWS (-)
  775 DATA "ABCDE","FGHIJ","KLMNO"
  776 DATA "PQRST","UVWXY"
  778 REM **INIT DOUBLE FIGURES**
  779 FOR I=0 TO 107 STEP 12: READ X$
  780 FOR J=1 TO 12
  781 LET D(I+J,1)=CODE X$(2*J-1)-48: LET D(I+J,2)=CODE X$(2*J)-48
  782 NEXT J: NEXT I
  783 RETURN 
  784 DATA "171:1A1C1E1M1O1P2>2@2B2J"
  785 DATA "393<3=3?3G474:4=4?4A4G4O"
  786 DATA "4P5@5B5D5J696<6C6E6M7=7A"
  787 DATA "7C7I7O7P8>8B8D8J9?9E9K:?"
  788 DATA ":A:E:K:O:P;>;@;D;J<=<C<I"
  789 DATA "=G=I=O>F>H>J?G?K?P@F@J@L"
  790 DATA "AGAIAKAMAOAPBHBJBNCICMCP"
  791 DATA "DJDLDNEKEMEOFRFWGSGWHTHW"
  792 DATA "IRIXJSJXKTKXLRLYMSMYNTNY"
  794 CLS : PRINT AT 5,3;"WANNA PLAY AGAIN?"
  795 IF INKEY$<>"" THEN GO TO 795
  796 IF INKEY$="" THEN GO TO 796
  797 IF INKEY$="Y" OR INKEY$="y" THEN GO TO 555
  798 GO TO 33
 1000 CLS 
 1010 LET ZERO=0: LET ONE=1: LET TWO=2: LET THREE=3: LET FOUR=4: LET FIVE=5: LET SIX=6: LET SEVEN=7: LET EIGHT=8: LET NINE=9: LET TEN=10: LET ELEVEN=11: LET TWELVE=12: LET THIRTN=13: LET FOURTN=14: LET FIFTN=15: LET SIXTN=16: LET SEVENTN=17: LET EIGHTN=18: LET NINETN=19: LET TWENTY=20: LET TWENTYONE=21
 1060 FOR I=ZERO TO TWENTYONE
 1070 PRINT "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
 1080 NEXT I
 1090 PRINT AT ONE,ONE;"1  2 MANQUE 3  4";AT ONE,TWENTY;"""BOULE"""
 1100 PRINT AT TWO,ONE;"................................"
 1110 PRINT AT THREE,ONE;"1::::::::PAIRS::::::::2"
 1120 PRINT AT FOUR,SEVEN;"2,4"
 1130 PRINT AT FIVE,ONE;"3";AT FIVE,SEVEN;"6,8";AT FIVE,FIFTN;"4"
 1140 PRINT AT SIX,EIGHT;"5"
 1150 PRINT AT SEVEN,ONE;"6   IMPAIRS   7"
 1160 PRINT AT EIGHT,SEVEN;"1,3"
 1170 PRINT AT NINE,ONE;"8";AT NINE,SEVEN;"7,9";AT NINE,FIFTN;"9"
 1180 PRINT AT TEN,ONE;".............................."
 1190 PRINT AT ELEVEN,ONE;"6  7 PASSE  8 9"
 1200 PRINT AT TWO,SEVENTN;"YOU CAN BET ON"
 1210 PRINT AT THREE,EIGHTN;"A) ""PAIRS"""
 1220 PRINT AT FOUR,EIGHTN;"B) ""IMPAIRS"""
 1230 PRINT AT FIVE,EIGHTN;"C) ""MANQUE"""
 1240 PRINT AT SIX,EIGHTN;"D) ""PASSE"""
 1250 PRINT AT SEVEN,EIGHTN;"E) BLACK NOS."
 1260 PRINT AT EIGHT,EIGHTN;"F) WHITE NOS."
 1270 PRINT AT NINE,EIGHTN;"*) ANY ONE NO.";AT NINE,TWENTYONE;"(7 TO 1)"
 1280 PRINT AT THIRTN,ONE;"ALL PAYOFFS ARE EVEN MONEY--    EXCEPT ""*"" WHICH PAYS 7 TO 1."
 1290 PRINT AT FIFTN,ONE;"NO. 5 IS THE HOUSE NO. YOU     LOSE IF  5  COMES UP."
 1300 PRINT AT TWENTY,ONE;"PRESS ENTER TO CONTINUE."
 1310 INPUT LINE Z$
 1320 GO SUB 4000
 1330 LET M=100
 1350 PRINT AT THIRTN,ONE;"YOUR STAKE IS $";M;" ";AT SIXTN,ONE;"ENTER YOUR BET:"
 1360 INPUT H
 1361 IF H=ZERO THEN GO TO 33
 1362 IF H>M THEN GO TO 1360
 1365 PRINT AT SIXTN,ONE;"                   "
 1366 PRINT AT SIXTN,TWELVE;"BET:  ";H;" "
 1370 PRINT AT THIRTN,ONE;"                   "
 1380 PRINT AT THIRTN,ONE;"ENTER YOUR CHOICE";AT FOURTN,ONE;"(A-F) OR A NUMBER"
 1390 INPUT LINE U$
 1400 PRINT AT THIRTN,ONE;"                 ";AT FOURTN,ONE;"                 "
 1405 PRINT AT FIFTN,TEN;"STAKE: ";M;" "
 1410 PRINT AT SEVENTN,NINE;"PICKED: ";U$;" "
 1420 PRINT AT TWENTY,ONE;"PRESS ""ENTER"" TO ROLL THE BALL"
 1430 IF INKEY$="" THEN GO TO 1430
 1440 PRINT AT TWENTY,ZERO;"                                "
 1450 RANDOMIZE 
 1460 LET K=INT (RND*NINE)+ONE
 1470 FOR N=ONE TO 50
 1480 PRINT AT SEVENTN,24;".'"
 1490 PRINT AT SEVENTN,24;".'"
 1500 NEXT N
 1510 PRINT AT NINETN,ONE;"THE NUMBER IS:  ";K;" "
 1520 IF K<>FIVE THEN GO TO 1580
 1540 IF K=FIVE THEN PRINT AT THIRTN,ONE;"SORRY ABOUT THAT HOUSE NUMBER"
 1550 LET M=M-H
 1560 IF M<=ZERO THEN GO TO 1800
 1570 GO TO 2300
 1580 IF U$>"0" AND U$<"A" THEN GO TO 1900
 1600 IF (K=ONE OR K=THREE) AND (U$="B" OR U$="C" OR U$="E") THEN GO TO 1750
 1610 IF (K=TWO OR K=FOUR) AND (U$="A" OR U$="C" OR U$="F") THEN GO TO 1750
 1620 IF (K=SIX OR K=EIGHT) AND (U$="A" OR U$="D" OR U$="E") THEN GO TO 1750
 1630 IF (K=SEVEN OR K=NINE) AND (U$="B" OR U$="D" OR U$="F") THEN GO TO 1750
 1675 PRINT AT TWENTY,ONE;" SORRY YOU LOSE  $";H;" "
 1680 LET M=M-H
 1690 IF M<=ZERO THEN GO TO 1800
 1700 GO TO 2300
 1750 PRINT AT TWENTY,ONE;"YOU PICKED A WINNER."
 1760 LET M=M+H
 1770 GO TO 2300
 1800 PRINT AT THIRTN,ONE;"SORRY, MY FRIEND, BUT IT SEEMS  YOU ARE OUT OF CASH. +++++++++ "
 1810 GO SUB 4050
 1830 GO TO 33
 1900 LET P=VAL U$
 1910 IF K<>P THEN GO TO 2000
 1920 IF K=P THEN PRINT AT TWENTY,ONE;"A BONANZA FOR YOU:  $";H*SEVEN;" "
 1930 LET M=M+(H*SEVEN)
 1940 GO TO 2300
 2000 PRINT AT TWENTY,ONE;"GOOD TRY..IT COST YOU  $";H;" "
 2010 LET M=M-H
 2020 IF M<=ZERO THEN GO TO 1800
 2300 GO SUB 4050
 2310 GO SUB 4000
 2320 GO TO 1350
 4000 PRINT AT THIRTN,ZERO;
 4010 FOR I=ONE TO EIGHT
 4020 PRINT "                                "
 4030 NEXT I
 4040 RETURN 
 4050 FOR I=ONE TO 75
 4060 NEXT I
 4070 RETURN 
 5000 POKE USR "f"+0,BIN 00000000
 5010 POKE USR "f"+1,BIN 00000000
 5020 POKE USR "f"+2,BIN 00000000
 5030 POKE USR "f"+3,BIN 00000000
 5040 POKE USR "f"+4,BIN 00000000
 5050 POKE USR "f"+5,BIN 00000100
 5060 POKE USR "f"+6,BIN 00000010
 5070 POKE USR "f"+7,BIN 00000001
 5100 POKE USR "g"+0,BIN 00000000
 5110 POKE USR "g"+1,BIN 00000000
 5120 POKE USR "g"+2,BIN 00000000
 5130 POKE USR "g"+3,BIN 00000000
 5140 POKE USR "g"+4,BIN 00000000
 5150 POKE USR "g"+5,BIN 00100000
 5160 POKE USR "g"+6,BIN 01000000
 5170 POKE USR "g"+7,BIN 10000000
 5200 POKE USR "h"+0,BIN 00000001
 5210 POKE USR "h"+1,BIN 00000010
 5220 POKE USR "h"+2,BIN 00000100
 5230 POKE USR "h"+3,BIN 00000000
 5240 POKE USR "h"+4,BIN 00000000
 5250 POKE USR "h"+5,BIN 00000000
 5260 POKE USR "h"+6,BIN 00000000
 5270 POKE USR "h"+7,BIN 00000000
 5300 POKE USR "i"+0,BIN 10000000
 5310 POKE USR "i"+1,BIN 01000000
 5320 POKE USR "i"+2,BIN 00100000
 5330 POKE USR "i"+3,BIN 00000000
 5340 POKE USR "i"+4,BIN 00000000
 5350 POKE USR "i"+5,BIN 00000000
 5360 POKE USR "i"+6,BIN 00000000
 5370 POKE USR "i"+7,BIN 00000000
 5400 POKE USR "j"+0,BIN 00010000
 5410 POKE USR "j"+1,BIN 00010000
 5420 POKE USR "j"+2,BIN 00010000
 5430 POKE USR "j"+3,BIN 00000000
 5440 POKE USR "j"+4,BIN 00000000
 5450 POKE USR "j"+5,BIN 00010000
 5460 POKE USR "j"+6,BIN 00010000
 5470 POKE USR "j"+7,BIN 00010000
 5500 POKE USR "k"+0,BIN 00000000
 5510 POKE USR "k"+1,BIN 00000000
 5520 POKE USR "k"+2,BIN 00000000
 5530 POKE USR "k"+3,BIN 11100111
 5540 POKE USR "k"+4,BIN 00000000
 5550 POKE USR "k"+5,BIN 00000000
 5560 POKE USR "k"+6,BIN 00000000
 5570 POKE USR "k"+7,BIN 00000000
 5600 POKE USR "l"+0,BIN 00000000
 5610 POKE USR "l"+1,BIN 00000000
 5620 POKE USR "l"+2,BIN 00000000
 5630 POKE USR "l"+3,BIN 00011000
 5640 POKE USR "l"+4,BIN 00011000
 5650 POKE USR "l"+5,BIN 00000000
 5660 POKE USR "l"+6,BIN 00000000
 5670 POKE USR "l"+7,BIN 00000000
 6000 OVER 1
 6010 PRINT AT 2,4;"h";AT 2,4;"g";AT 2,4;"l"
 6020 PRINT AT 3,3;"h";AT 3,3;"g";AT 3,3;"l"
 6030 PRINT AT 4,2;"h";AT 4,2;"g";AT 4,2;"l"
 6040 PRINT AT 5,1;"h";AT 5,1;"g";AT 5,1;"l"
 6050 PRINT AT 6,0;"h";AT 6,0;"g";AT 6,0;"l"
 6110 PRINT AT 3,5;"f";AT 3,5;"g";AT 3,5;"l"
 6120 PRINT AT 4,4;"h";AT 4,4;"g";AT 4,4;"l"
 6130 PRINT AT 5,3;"h";AT 5,3;"g";AT 5,3;"l"
 6140 PRINT AT 4,6;"i";AT 4,6;"f";AT 4,6;"l"
 6150 PRINT AT 5,7;"i";AT 5,7;"f";AT 5,7;"l"
 6210 PRINT AT 6,5;"j";AT 6,5;"l"
 6220 PRINT AT 7,5;"j";AT 7,5;"k";AT 7,5;"l"
 6230 PRINT AT 8,5;"j";AT 8,5;"l"
 6240 PRINT AT 7,4;"k";AT 7,4;"l"
 6250 PRINT AT 7,6;"k";AT 7,6;"l"
 6310 PRINT AT 8,0;"j";AT 8,0;"l"
 6320 PRINT AT 9,0;"j";AT 9,0;"l"
 6330 PRINT AT 10,0;"j";AT 10,0;"l"
 6340 PRINT AT 11,0;"j";AT 11,0;"l"
 6350 PRINT AT 12,0;"j";AT 12,0;"l"
 6410 PRINT AT 10,2;"i";AT 10,2;"f";AT 10,2;"l"
 6420 PRINT AT 11,3;"i";AT 11,3;"f";AT 11,3;"h";AT 11,3;"g";AT 11,3;"l"
 6430 PRINT AT 12,4;"i";AT 12,4;"f";AT 12,4;"l"
 6440 PRINT AT 10,4;"h";AT 10,4;"g";AT 10,4;"l"
 6450 PRINT AT 12,2;"h";AT 12,2;"g";AT 12,2;"l"
 6510 PRINT AT 9,6;"i";AT 9,6;"f";AT 9,6;"l"
 6520 PRINT AT 10,7;"i";AT 10,7;"f";AT 10,7;"l"
 6530 PRINT AT 11,8;"i";AT 11,8;"g";AT 11,8;"l"
 6540 PRINT AT 12,7;"h";AT 12,7;"g";AT 12,7;"l"
 6550 PRINT AT 13,6;"h";AT 13,6;"g";AT 13,6;"l"
 6610 PRINT AT 14,0;"k";AT 14,0;"l"
 6620 PRINT AT 14,1;"k";AT 14,1;"l"
 6630 PRINT AT 14,2;"k";AT 14,2;"l"
 6640 PRINT AT 14,3;"k";AT 14,3;"l"
 6650 PRINT AT 14,4;"k";AT 14,4;"l"
 6660 OVER 0
 6700 RETURN 
 7000 REM ONE TO FIVE
 7010 POKE USR "m"+0,BIN 00010000
 7020 POKE USR "m"+1,BIN 00010000
 7030 POKE USR "m"+2,BIN 00010000
 7040 POKE USR "m"+3,BIN 00010000
 7050 POKE USR "m"+4,BIN 00010000
 7060 POKE USR "m"+5,BIN 00010000
 7070 POKE USR "m"+6,BIN 00010000
 7080 POKE USR "m"+7,BIN 00010000
 7090 CLS 
 7100 DIM A(3,3)
 7105 LET C$="123456789"
 7108 PRINT AT 8,6;"SELECT";TAB 16;"BOARD"
 7110 PRINT AT 10,6;"-----";TAB 16;"-----"
 7120 FOR I=1 TO 3
 7125 LET I2=I*2: LET I3=(I-1)*3
 7130 PRINT AT i2+9,5;"m";i3+1;" ";i3+2;" ";i3+3;"m";TAB 15;"m     m"
 7135 PRINT AT i2+10,5;"m     m";TAB 15;"m     m"
 7140 NEXT I
 7150 PRINT AT 16,5;" ----- ";TAB 15;" ----- "
 7160 FOR A=1 TO 10
 7170 LET I=INT (RND*9)+1: GO SUB 7400
 7180 NEXT A
 7190 LET M=0: LET T=0
 7200 LET T$=INKEY$
 7210 IF T$="" THEN GO TO 7200
 7212 IF T$="." THEN GO TO 7310
 7220 FOR I=1 TO 9
 7230 IF T$=C$(I) THEN GO TO 7260
 7240 NEXT I
 7250 GO TO 7200
 7260 LET M=M+1
 7270 GO SUB 7400
 7280 IF T<9 THEN GO TO 7200
 7290 PRINT FLASH 1;"YOU DID IT"
 7300 PRINT : PRINT "IN";M;" MOVES": FLASH 0
 7310 PAUSE 500
 7320 CLS : PRINT AT 5,3;"WANNA PLAY AGAIN?"
 7330 IF INKEY$<>"" THEN GO TO 795
 7340 IF INKEY$="" THEN GO TO 7330
 7350 IF INKEY$="Y" OR INKEY$="y" THEN GO TO 7000
 7360 GO TO 33
 7400 LET X=INT ((I-1)/3)+1
 7410 LET Y=I-3*(X-1)
 7420 LET A(X,Y)=A(X,Y)-1
 7430 FOR I=1 TO 3
 7440 LET A(X,I)=A(X,I)+1
 7450 LET A(I,Y)=A(I,Y)+1
 7460 NEXT I
 7470 LET T=0
 7480 FOR I=1 TO 3
 7490 FOR J=1 TO 3
 7500 IF A(I,J)=6 THEN LET A(I,J)=0
 7510 IF A(I,J)=0 THEN LET T=T+1
 7520 PRINT AT 11+(I-1)*2,16+(J-1)*2;A(I,J)
 7530 NEXT J
 7540 NEXT I
 7550 RETURN 
 9996 PRINT #4: SAVE "LOSVEG.B1" LINE 33
 9999 PRINT #4: LOAD "L.B1"

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.