Super Slot-O

This file is part of Timex Sinclair Public Domain Library Tape 1001 . Download the collection to get this file.
Date: 198x
Type: Program
Platform(s): TS 1000
Tags: Game

This program simulates a one-armed bandit (slot machine) game called “Super Slot-O.” Each spin generates three random characters drawn from one of two pools: printable ASCII characters (codes 2–7, block graphics) or Spectrum-style graphic characters (codes 128–132), selected by a 50/50 RND branch at line 500. The three results are compared pairwise using flags P, Q, and R to detect matching pairs, and the combination of those flags determines whether the player wins $5 (two of a kind), $10 (three of a kind), or nothing. The game loops indefinitely with no bankroll tracking, initialising all flags via a GOSUB 900 subroutine before each spin.


Program Analysis

Program Structure

The program is organised into a main loop and several subroutines:

  • Lines 10–90: Title display, instruction prompt (GOSUB 800), variable initialisation (GOSUB 900), and wait for a keypress.
  • Lines 100–390: Main game logic — three spins via GOSUB 500, pairwise comparison, result display, then loop back to line 20.
  • Lines 500–720: Random character generation subroutine with two branches.
  • Lines 800–820: Instruction text subroutine.
  • Lines 900–960: Variable reset subroutine.

Character Generation Algorithm

The subroutine at line 500 uses a binary RND branch to choose between two character pools:

BranchLinesCharacter rangeDescription
Lower (RND < 0.5)600–620CHR$ 2 – CHR$ 7Low block/graphic characters
Upper (RND ≥ 0.5)700–720CHR$ 128 – CHR$ 132UDG / block graphic characters

The lower branch loops until INT(8*RND) yields a value ≥ 2 (giving codes 2–7). The upper branch loops until INT(133*RND) yields a value ≥ 128 (giving codes 128–132). Both branches use rejection sampling to avoid unwanted character codes.

Win Condition Logic

Three Boolean flags P, Q, and R record pairwise matches: P for A=B, Q for B=C, R for C=A. Their sum is then used to classify the result:

  • P+Q+R = 1 → exactly one pair matches → “Two of a Kind” → $5
  • P+Q+R > 1 → two or three pairs match (i.e. all three equal) → “Three of a Kind” → $10
  • P+Q+R < 1 → no matches → no win

Note that if all three values are equal, all three flags are set and their sum is 3, correctly triggering the three-of-a-kind branch. Two of a kind (exactly two symbols the same) sets exactly one or two flags depending on which pair matches; however since the three comparisons are not mutually exclusive, two matching symbols always set exactly one flag, making the logic sound in practice.

Variable Initialisation

The subroutine at lines 900–960 resets all six flags (P, Q, R, S, T, U) to zero before each spin. It is called once at startup (line 70) but the main loop at line 390 returns to line 20, skipping the GOSUB 900 call. This means the flags are not reset between rounds, which is a bug: a win on one round can carry its flag state into the next, causing incorrect win announcements.

Key BASIC Idioms

  • Using IF INKEY$="" THEN GOTO 90 (line 90) as a busy-wait keypress loop.
  • Using IF flag THEN ... directly as a Boolean test (lines 320–370), relying on non-zero being truthy.
  • PAUSE 60 (line 310) inserts a one-second delay before displaying results.
  • RAND at line 6 seeds the random number generator for variety between runs.

Bugs and Anomalies

  • Missing flag reset in main loop: GOSUB 900 is only called once before the first game. From line 390 the program jumps back to line 20, bypassing the reset. All six flags retain their previous values, corrupting subsequent win detection.
  • No bankroll tracking: Dollar amounts are printed but never accumulated or deducted; there is no concept of a starting stake or game-over condition.
  • Cosmetic loop: The star banner (lines 20–50) reprints on every loop iteration including mid-game redraws, which may cause screen clutter since CLS at line 100 only runs once after the initial keypress.

Content

Appears On

Assembled by Tim Ward from many sources. Contains programs 10001 – 10050.

Related Products

Related Articles

Related Content

Image Gallery

Super Slot-O

Source Code

   5 REM SUPER SLOT-O
   6 RAND 
  10 PRINT "PLAY SUPER SLOT-O"
  20 FOR L=1 TO 17
  30 PRINT "*";
  40 NEXT L
  50 PRINT 
  60 GOSUB 800
  70 GOSUB 900
  90 IF INKEY$="" THEN GOTO 90
 100 CLS 
 110 GOSUB 500
 120 LET A=X
 130 GOSUB 500
 140 LET B=X
 150 GOSUB 500
 160 LET C=X
 170 IF A=B THEN LET P=1
 180 IF B=C THEN LET Q=1
 190 IF C=A THEN LET R=1
 200 PRINT 
 210 PRINT CHR$ A;"  ";CHR$ B;"  ";CHR$ C
 220 IF P+Q+R=1 THEN LET S=1
 230 IF P+Q+R>1 THEN LET T=1
 240 IF P+Q+R<1 THEN LET U=1
 300 PRINT 
 310 PAUSE 60
 320 IF S THEN PRINT "TWO OF A KIND"
 330 IF S THEN PRINT "YOU WIN $5"
 340 IF T THEN PRINT "THREE OF A KIND"
 350 IF T THEN PRINT "YOU WIN $10"
 360 IF U THEN PRINT "SORRY, THERE IS NO MATCH"
 370 IF U THEN PRINT "YOU DO NOT WIN ANY MONEY"
 380 PRINT 
 390 GOTO 20
 500 LET X=2*RND
 510 IF X<1 THEN GOTO 600
 520 GOTO 700
 600 LET X=INT (8*RND)
 610 IF X<2 THEN GOTO 600
 620 RETURN 
 700 LET X=INT (133*RND)
 710 IF X<128 THEN GOTO 700
 720 RETURN 
 800 PRINT "PRESS ANY KEY TO"
 810 PRINT "PULL THE SLOT MACHINE HANDLE"
 820 RETURN 
 900 LET P=0
 910 LET Q=0
 920 LET R=0
 930 LET S=0
 940 LET T=0
 950 LET U=0
 960 RETURN 
\n1000 SAVE "1002%6"
\n1010 RUN 

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

People

No people associated with this content.

Scroll to Top