JRC Catalog

Developer(s): John Richard Coffey
Date: 1984
Type: Cassette
Platform(s): TS 2068

This program is a software catalog and demonstration disk for JRC Software, distributed on cassette as shareware, combining a playable 3D Tic-Tac-Toe game with extensive commentary text, product listings, and a graphics demo.

The 3D Tic-Tac-Toe component implements a 3×3×3 board using a 27-element array A() and a 49-element scoring array B() that encodes every winning line across all three layers plus inter-layer diagonals. Cell selection is handled via STICK joystick input and O/P/Q/A keyboard navigation, with cursor position tracked using attribute memory POKEs at address 22528. The computer AI evaluates board positions through a heuristic scoring array C() summing line weights for each cell, then selects the highest-scoring available move.

The catalog section (line 3000 onward) contains extensive editorial text about the Sinclair, Timex, Commodore, Atari, and QL computers, dated February 16, 1986, and includes a SAVE command at line 8500 that preserves both the BASIC program and a machine code block to cassette.


Program Analysis

Program Structure

The program is organized into several distinct functional regions:

  1. Lines 1–171: 3D Tic-Tac-Toe game engine — initialization, AI scoring, move execution, and player input.
  2. Lines 300–475: Cursor movement subroutines (left/right/up/down) for joystick and keyboard navigation.
  3. Lines 1000–1200: Board drawing subroutine — PLOT/DRAW graphics for three board layers and cell coordinate table T$.
  4. Lines 2000–2130: End-of-game scoring and result display.
  5. Lines 3000–3900: Multi-screen editorial commentary and product catalog text.
  6. Lines 4000–5002: Shareware notice for 3D Tic-Tac-Toe and a graphics demo subroutine.
  7. Lines 8000–8500: Cassette duplication instructions and SAVE commands.
  8. Lines 9000–9900: Main menu and dispatcher.

3D Board Representation

The 3×3×3 board is stored in array A(27), with cells numbered 1–27 corresponding to positions across three 3×3 layers. Cells are initialized to 1 (available), set to 8 (computer move) or -4/-3 (player move) when claimed. The screen coordinates for each cell are stored in the 27×4 string array T$(27,4), where the first two characters are the row and the last two are the column, read back with VAL T$(F,1 TO 2) and VAL T$(F,3 TO 4).

Winning-Line Encoding

Array B(49) holds the product of the A() values for each of the 49 possible winning lines across the 3D board. These include rows, columns, and diagonals within each layer (lines B1–B24), vertical columns through all three layers (B25–B28), and various 3D space diagonals (B29–B49). Because each cell starts at value 1, an unclaimed winning line yields a product of 1. When a cell is marked with a non-unit value, the product changes, encoding both occupancy and ownership in the arithmetic.

AI Heuristic Scoring

Array C(27) assigns each cell a strategic score by summing the B() values of every winning line that passes through it. This is recalculated from scratch on each turn (lines 25–108). The computer then selects the cell with the maximum C(F) value where A(F)=1 (lines 122–124 or 130–135). When the human moves first (JEU=1), the code also tracks the minimum-score cell in KK, though this variable is not ultimately used for a different strategy — the same greedy maximum selection applies.

Cursor and Attribute Manipulation

The player’s cursor is highlighted by toggling the bright bit in the color attribute byte at address 22528 + (row-1)*32 + col. Adding 128 to the attribute sets the flash/bright bit; subtracting 128 clears it. The four movement subroutines (300, 350, 400, 450) update X (row) and Y (column), clear the old cursor highlight, and set the new one. Boundary checking prevents the cursor from leaving the screen area (rows 1–20, columns 1–30).

Input Handling

Line 151 reads both keyboard and joystick simultaneously. STICK(1,1) and STICK(2,1) are combined with joy = STICK(1,1) + 16*STICK(2,1). Keyboard codes are compared using CODE INKEY$ against CODE "O", CODE "P", etc., supporting both upper and lower case. Fire/confirm is detected by joystick value 16 or the M/m key.

Cell Placement Detection

When the player presses the confirm key, lines 157–160 scan all 27 cells to find which cell’s screen coordinate matches the current cursor position (X, Y). The check at line 158 tests whether the cell’s column coordinate equals Y, Y-1, or Y-2 (accommodating 3-character-wide tokens), and whether the row matches X-1. This off-by-one adjustment reflects that X tracks the 1-based screen row of the cursor highlight, while T$(F,1 TO 2) stores the 0-based PRINT AT row.

Notable Techniques and Idioms

  • TIC=1 is used as a flag so that the GO SUB 25 at line 2004 returns early after recalculating B() without running the full game loop — a re-entry guard embedded in the scoring routine via IF TIC=1 THEN RETURN at line 79.
  • The double-plus in line 83 (B(2)+B(4)++B(41)+B(45)) is a typographic artifact that evaluates correctly in BASIC as a positive unary operator on B(41).
  • UDGs \a\b\c (characters 144–146) are used at lines 1070–1080 to print each board cell symbol — their shapes would be defined by POKEs to USR "\a" elsewhere in the full tape load, but no such POKE appears in this listing, suggesting the UDG shapes are set by the machine code block loaded at line 9000.
  • Escape \d\e\g and \h at lines 142/145/166/168 are additional UDG characters used to render the X and O markers in the game.
  • The SAVE at line 8500 saves both the BASIC program with auto-start (LINE 9000) and a raw machine code block starting at address 57919, used by RANDOMIZE USR 61632 at line 9400 to run the Diamond Mike game.
  • Lines 3000–3900 contain a lengthy, opinionated historical commentary about the home computer industry dated February 16, 1986, discussing the ZX80, ZX81, TS1000, TS2068, Sinclair QL, Commodore 64, Atari ST, and Commodore Amiga — an unusual inclusion within an executable program file.

Anomalies

LineIssue
83Double unary plus ++B(41) — harmless but appears to be a typo.
104C(23)=B(18)+B(20)+B(23)+B(24)+B(49) uses B(20) again, same as line 103 — likely a copy-paste error; should probably be B(21) by symmetry with surrounding lines.
7000Line 9800 branches to GO TO 7000 for the “copy to cassette” option, but line 7000 does not exist in this listing — execution would halt with an error unless the full tape includes it.
1067A$="\a\b\c" reuses variable name A$ which is also used in the menu and catalog sections, creating potential conflicts if execution paths overlap.

Content

Appears On

Related Products

Tape-based product catalog with program demos.

Related Articles

Related Content

Image Gallery

JRC Catalog

Source Code

    1 OUT 245,14: OUT 246,255: OVER 0: INK 0: PAPER 7: CLS : PRINT AT 21,0;"****TIC*******TAC*******TOE****"
    4 LET TOT=0: LET TOO=0
    5 GO SUB 1000
    6 LET TIC=0
    7 LET PL=1: LET OR=1
    8 LET TO=15: LET TP=16
    9 LET X=10: LET Y=12: LET S=0
   10 DIM A(27): DIM B(49): DIM C(27): FOR F=1 TO 27: LET A(F)=1: NEXT F
   12 LET M=X: LET N=Y
   15 LET JEU=1
   20 INPUT "DO YOU BEGIN (Y OR N) ";R$: PRINT #1;"O, P, Q, A, m","or joystick": IF R$="Y" OR R$="y" THEN GO TO 148
   22 LET TO=16: LET TP=15
   23 LET JEU=0
   25 LET B(1)=A(1)*A(2)*A(3)
   26 LET B(2)=A(4)*A(5)*A(6)
   27 LET B(3)=A(7)*A(8)*A(9)
   28 LET B(4)=A(1)*A(4)*A(7)
   29 LET B(5)=A(2)*A(5)*A(8)
   30 LET B(6)=A(3)*A(6)*A(9)
   31 LET B(7)=A(1)*A(5)*A(9)
   32 LET B(8)=A(3)*A(5)*A(7)
   33 LET B(9)=A(10)*A(11)*A(12)
   34 LET B(10)=A(13)*A(14)*A(15)
   35 LET B(11)=A(16)*A(17)*A(18)
   36 LET B(12)=A(10)*A(13)*A(16)
   37 LET B(13)=A(11)*A(14)*A(17)
   38 LET B(14)=A(12)*A(15)*A(18)
   39 LET B(15)=A(10)*A(14)*A(18)
   40 LET B(16)=A(12)*A(14)*A(16)
   41 LET B(17)=A(19)*A(20)*A(21)
   42 LET B(18)=A(22)*A(23)*A(24)
   43 LET B(19)=A(25)*A(26)*A(27)
   44 LET B(20)=A(19)*A(22)*A(25)
   45 LET B(21)=A(20)*A(23)*A(26)
   46 LET B(22)=A(21)*A(24)*A(27)
   47 LET B(23)=A(19)*A(23)*A(27)
   48 LET B(24)=A(21)*A(23)*A(25)
   50 LET B(25)=A(1)*A(10)*A(19)
   51 LET B(26)=A(7)*A(16)*A(25)
   52 LET B(27)=A(9)*A(18)*A(27)
   53 LET B(28)=A(3)*A(12)*A(21)
   55 LET B(29)=A(1)*A(13)*A(23)
   56 LET B(30)=A(7)*A(17)*A(27)
   57 LET B(31)=A(9)*A(15)*A(21)
   58 LET B(32)=A(3)*A(11)*A(20)
   60 LET B(33)=A(1)*A(10)*A(21)
   61 LET B(34)=A(7)*A(13)*A(19)
   62 LET B(35)=A(9)*A(17)*A(25)
   63 LET B(36)=A(3)*A(15)*A(27)
   65 LET B(37)=A(1)*A(14)*A(27)
   66 LET B(38)=A(7)*A(14)*A(21)
   67 LET B(39)=A(9)*A(14)*A(19)
   68 LET B(40)=A(3)*A(14)*A(25)
   70 LET B(41)=A(4)*A(13)*A(22)
   71 LET B(42)=A(8)*A(17)*A(26)
   72 LET B(43)=A(6)*A(15)*A(24)
   73 LET B(44)=A(2)*A(11)*A(20)
   75 LET B(45)=A(4)*A(14)*A(24)
   76 LET B(46)=A(8)*A(14)*A(20)
   77 LET B(47)=A(6)*A(14)*A(22)
   78 LET B(48)=A(2)*A(14)*A(26)
   79 LET B(49)=A(5)*A(14)*A(23): IF TIC=1 THEN RETURN 
   80 LET C(1)=B(1)+B(4)+B(7)+B(25)+B(29)+B(33)+B(37)
   81 LET C(2)=B(2)+B(5)+B(44)+B(48)
   82 LET C(3)=B(1)+B(6)+B(8)+B(28)+B(32)+B(36)+B(40)
   83 LET C(4)=B(2)+B(4)++B(41)+B(45)
   84 LET C(5)=B(49)+B(2)+B(5)+B(7)+B(8)
   85 LET C(6)=B(2)+B(6)+B(43)+B(47)
   86 LET C(7)=B(3)+B(4)+B(8)+B(26)+B(34)+B(38)+B(30)
   87 LET C(8)=B(3)+B(5)+B(42)+B(46)
   88 LET C(9)=B(3)+B(6)+B(7)+B(27)+B(35)+B(39)+B(31)
   90 LET C(10)=B(9)+B(12)+B(15)+B(25)
   91 LET C(11)=B(13)+B(9)+B(44)+B(32)+B(33)
   92 LET C(12)=B(9)+B(14)+B(16)+B(28)
   93 LET C(13)=B(10)+B(12)+B(29)+B(34)+B(41)
   94 LET C(14)=B(10)+B(13)+B(15)+B(16)+B(37)+B(38)+B(39)+B(40)+B(45)+B(46)+B(47)+B(48)+B(49)
   95 LET C(15)=B(10)+B(14)+B(31)+B(36)+B(43)
   96 LET C(16)=B(11)+B(12)+B(16)+B(26)
   97 LET C(17)=B(11)+B(13)+B(30)+B(35)+B(42)
   98 LET C(18)=B(11)+B(14)+B(15)+B(27)
  100 LET C(19)=B(17)+B(20)+B(23)+B(25)+B(32)+B(34)+B(39)
  101 LET C(20)=B(17)+B(21)+B(44)+B(46)
  102 LET C(21)=B(17)+B(22)+B(24)+B(28)+B(31)+B(33)+B(38)
  103 LET C(22)=B(18)+B(20)+B(41)+B(47)
  104 LET C(23)=B(18)+B(20)+B(23)+B(24)+B(49)
  105 LET C(24)=B(18)+B(22)+B(43)+B(45)
  106 LET C(25)=B(19)+B(20)+B(24)+B(26)+B(29)+B(35)+B(40)
  107 LET C(26)=B(19)+B(22)+B(42)+B(48)
  108 LET C(27)=B(19)+B(22)+B(23)+B(27)+B(30)+B(36)+B(37)
  109 IF JEU=1 THEN GO TO 130
  110 LET OR=OR+1: IF OR=TO THEN GO TO 2000
  111 LET T=-999
  122 FOR F=1 TO 27
  123 IF C(F)>T AND A(F)=1 THEN LET T=C(F): LET K=F
  124 NEXT F
  125 GO TO 145
  130 LET T=-999
  131 LET TT=999: LET K=1: LET KK=1: LET SP=0
  132 FOR F=1 TO 27
  133 IF C(F)>T AND A(F)=1 THEN LET T=C(F): LET K=F
  134 IF C(F)<TT AND A(F)=1 THEN LET TT=C(F): LET KK=F
  135 NEXT F
  142 LET A(K)=8: PRINT AT VAL T$(K,1 TO 2),VAL T$(K,3 TO 4); INK 1;"\d\e\g": IF VAL T$(K,1 TO 2)>7 AND VAL T$(K,3 TO 4)=13 THEN PRINT AT VAL T$(K,1 TO 2),VAL T$(K,3 TO 4)+1; OVER 1; INK 1; PAPER 0;"\h": GO TO 148
  145 LET A(K)=8: PRINT AT VAL T$(K,1 TO 2),VAL T$(K,3 TO 4); INK 1;"\d\e\g": IF VAL T$(K,1 TO 2)>7 AND VAL T$(K,3 TO 4)=13 THEN PRINT AT VAL T$(K,1 TO 2),VAL T$(K,3 TO 4)+1; OVER 1; INK 1; PAPER 0;"\h"
  148 POKE 22528+((X-1)*32)+Y,(PEEK (22528+((X-1)*32)+Y))-128
  149 BEEP .01,1: BEEP .01,-3: BEEP .01,1: BEEP .01,-2
  150 LET PL=PL+1: IF PL=TP THEN GO TO 2000
  151 LET key=CODE INKEY$: LET joy= STICK (1,1)+16* STICK (2,1): IF joy=4 OR key=CODE "O" OR key=CODE "o" THEN GO SUB 300
  152 IF joy=8 OR key=CODE "p" OR key=CODE "P" THEN GO SUB 350
  153 IF joy=1 OR key=CODE "Q" OR key=CODE "q" THEN GO SUB 400
  154 IF joy=2 OR key=CODE "a" OR key=CODE "A" THEN GO SUB 450
  155 IF joy<>16 AND key<>CODE "M" AND key<>CODE "m" THEN GO TO 151
  156 POKE 22528+((X-1)*32)+Y,(PEEK (22528+((X-1)*32)+Y))-128
  157 FOR F=1 TO 27
  158 IF VAL T$(F,3 TO 4)=Y OR VAL T$(F,3 TO 4)+1=Y OR VAL T$(F,3 TO 4)+2=Y THEN IF VAL T$(F,1 TO 2)=X-1 THEN IF A(F)=1 THEN GO TO 165
  159 NEXT F
  160 GO TO 148
  162 BEEP .02,10: BEEP .02,7
  165 LET A(F)=-4
  166 PRINT AT VAL T$(F,1 TO 2),VAL T$(F,3 TO 4); INK 6;"\d\e\g"
  167 IF JEU=1 THEN LET A(F)=-3
  168 IF VAL T$(F,1 TO 2)>7 AND VAL T$(F,3 TO 4)=13 THEN PRINT AT VAL T$(F,1 TO 2),VAL T$(F,3 TO 4)+1; OVER 1; INK 6; PAPER 0;"\h"
  169 IF JEU=1 AND PL=15 THEN GO TO 2000
  170 BEEP .02,10: BEEP .02,17
  171 GO TO 25
  300 LET Y=Y-1
  305 IF Y=0 THEN LET Y=1: RETURN 
  310 POKE 22528+((M-1)*32)+N,(PEEK (22528+((M-1)*32)+N))-128
  311 LET M=X: LET N=Y
  315 LET Z$=SCREEN$ (M,N)
  320 POKE 22528+((X-1)*32)+Y,(PEEK (22528+((X-1)*32)+Y))+128
  325 RETURN 
  350 LET Y=Y+1
  355 IF Y=31 THEN LET Y=30: RETURN 
  360 POKE 22528+((M-1)*32)+N,(PEEK (22528+((M-1)*32)+N))-128
  362 LET M=X: LET N=Y
  365 LET Z$=SCREEN$ (M,N)
  370 POKE 22528+((X-1)*32)+Y,(PEEK (22528+((X-1)*32)+Y))+128
  380 RETURN 
  400 LET X=X-1
  405 IF X=0 THEN LET X=1: RETURN 
  410 POKE 22528+((M-1)*32)+N,(PEEK (22528+((M-1)*32)+N))-128
  412 LET M=X: LET N=Y
  415 LET Z$=SCREEN$ (M,N)
  420 POKE 22528+((X-1)*32)+Y,(PEEK (22528+((X-1)*32)+Y))+128
  425 RETURN 
  450 LET X=X+1
  455 IF X=21 THEN LET X=20: RETURN 
  460 POKE 22528+((M-1)*32)+N,(PEEK (22528+((M-1)*32)+N))-128
  462 LET M=X: LET N=Y
  465 LET Z$=SCREEN$ (M,N)
  470 POKE 22528+((X-1)*32)+Y,(PEEK (22528+((X-1)*32)+Y))+128
  475 RETURN 
 1000 PLOT 8,147: DRAW 111,-25: DRAW 105,25: DRAW -108,25: DRAW -108,-25
 1005 PLOT 8,90: DRAW 111,-25: DRAW 105,25: DRAW -108,25: DRAW -108,-25
 1010 PLOT 8,34: DRAW 111,-25: DRAW 105,25: DRAW -108,25: DRAW -108,-25
 1067 LET A$="\a\b\c"
 1070 PRINT AT 1,13;A$;AT 2,9;A$;AT 2,17;A$;AT 3,5;A$;AT 3,21;A$;AT 3,13;A$;AT 4,9;A$;AT 4,17;A$;AT 5,13;A$
 1075 PRINT AT 8,13;A$;AT 9,9;A$;AT 9,17;A$;AT 10,5;A$;AT 10,21;A$;AT 10,13;A$;AT 11,9;A$;AT 11,17;A$;AT 12,13;A$
 1080 PRINT AT 15,13;A$;AT 16,9;A$;AT 16,17;A$;AT 17,5;A$;AT 17,21;A$;AT 17,13;A$;AT 18,9;A$;AT 18,17;A$;AT 19,13;A$
 1085 PLOT 8,147: DRAW 0,-113:
 1086 PLOT 224,147: DRAW 0,-113
 1087 PLOT 119,122: DRAW 0,-112
 1088 PLOT 116,123: DRAW 0,-8
 1089 PLOT 116,65: DRAW 0,-6
 1090 PLOT 116,167: DRAW 0,-7
 1091 PLOT 116,151: DRAW 0,-7
 1092 PLOT 116,135: DRAW 0,-7
 1093 PLOT 116,111: DRAW 0,-7
 1094 PLOT 116,95: DRAW 0,-7
 1095 PLOT 116,79: DRAW 0,-7
 1100 DIM T$(27,4)
 1101 LET T$(1)="0513"
 1102 LET T$(2)="0417"
 1103 LET T$(3)="0321"
 1104 LET T$(4)="0409"
 1105 LET T$(5)="0313"
 1106 LET T$(6)="0217"
 1107 LET T$(7)="0305"
 1108 LET T$(8)="0209"
 1109 LET T$(9)="0113"
 1110 LET T$(10)="1213"
 1111 LET T$(11)="1117"
 1112 LET T$(12)="1021"
 1113 LET T$(13)="1109"
 1114 LET T$(14)="1013"
 1115 LET T$(15)="0917"
 1116 LET T$(16)="1005"
 1117 LET T$(17)="0909"
 1118 LET T$(18)="0813"
 1119 LET T$(19)="1913"
 1120 LET T$(20)="1817"
 1121 LET T$(21)="1721"
 1122 LET T$(22)="1809"
 1123 LET T$(23)="1713"
 1124 LET T$(24)="1617"
 1125 LET T$(25)="1705"
 1126 LET T$(26)="1609"
 1127 LET T$(27)="1513"
 1200 RETURN 
 2000 PRINT AT 21,0;"                                "
 2004 LET TIC=1: GO SUB 25
 2006 PRINT AT 8,25;"TS-2068"
 2007 PRINT AT 5,25;"PLAYER"
 2008 IF JEU=1 THEN GO TO 2100
 2010 FOR F=1 TO 49
 2020 IF B(F)=-64 THEN LET TOT=TOT+1: PRINT AT 6,27;" ";TOT;" "
 2025 IF B(F)=512 THEN LET TOO=TOO+1: PRINT AT 9,27;" ";TOO;" "
 2027 PAUSE 5
 2030 NEXT F
 2035 PRINT AT 21,0;"                                "
 2040 IF TOT=TOO THEN PRINT AT 21,7;"SAME SCORE"
 2045 IF TOT>TOO THEN PRINT AT 21,5;"YOU WON "
 2050 IF TOT<TOO THEN PRINT AT 21,4;"COMPUTER WON THE GAME "
 2097 PRINT AT 13,25;"PRESS";AT 14,25;"  A";AT 15,25;"  KEY."
 2098 PAUSE 0
 2099 GO TO 9100
 2100 FOR F=1 TO 49
 2105 PAUSE 5
 2110 IF B(F)=-27 THEN LET TOT=TOT+1: PRINT AT 6,27;" ";TOT;" "
 2115 IF B(F)=512 THEN LET TOO=TOO+1: PRINT AT 9,27;" ";TOO;" "
 2120 NEXT F
 2130 GO TO 2035
 3000 PAPER 7: INK 0: CLS : PRINT "PLEASE READ:";#1;"Commentary by John R. Coffey": PAUSE 100: CLS : PRINT "Welcome to the third and last   edition of JRC SOFTWARE catalog for the 2068 computer.  We call this our ""reality"" edition,     because it is now time to face  some hard facts."''
 3010 PRINT "Sinclair Research LTD has made  some pretty great computers.  Weall marveled at the power and   portability of the ZX80 that wasthe first computer under $200   released in late 1980.  Then    SYNC magazine started in Januaryof 1981 just for the ZX80       computer.  It was possibly the  first time that a magazine had  started for just a single brand.The future couldn't have looked better for Sinclair computers."''
 3020 PRINT '': CLS : PRINT "Keep in mind that in 1980 $200  was worth over twice of what it is worth now.  So even at the   price of $200, the Sinclair ZX80was a very expensive purchase.  But as inflation went up, the   price went down and the computergot much better.  Behold ZX81."''
 3030 PRINT "Again the future seemed good."''
 3040 PRINT "In those days the people who    bought computers didn't care toomuch about the quality of the   graphics, or how much memory themachine had, or how fast it was.They simply wanted to own a     computer.  Any computer."''
 3050 PRINT '''': CLS : PRINT "Almost everybody who wanted to  buy a computer and could afford to do so, did so.  Which machinepeople bought depended upon     how much money they had.  Since there was a world wide recessiongoing on then, Sinclair afford- ability was very appealing."''
 3060 PRINT "Even though the ZX81 was a good machine for it's time, it was   very primitive compared to the  Atari 400/800 or the Commodore  64.  So when Sinclair announced their Spectrum computer in 1982,I was thrilled.  This ""ZX82"" hadfeatures competitive with the   other computers at a lower cost."
 3065::: PRINT '"The low price of the Sinclair   ZX81 forced other manufacturers to lower their prices."
 3070 PRINT '': CLS : PRINT "There were early reports that   the ZX Spectrum would come to   the U.S. in January of 1983.    This would have been fine.  But instead Timex took over and did a very good job of making a     million TS1000's in 1983.  At   $100 apiece, they sold well, butthere wasn't a million people   who wanted to buy a low power   computer.  So Timex had to drop the price all the way to $25 andthey lost money."''
 3080 PRINT "These low priced TS1000's becameknown as ""toys"" or ""disposable  computers"".  Mostly kids bought them, played with them, and thenput them on the closet shelf."
 3090 PRINT '''''': CLS : PRINT "Timex also had a habit of using cheap components and using cheapPortugal labor.  This may have  kept the price down, but the    average life of a TS1000 was    about a year before it needed   repair.  It was, of course, moreexpensive to repair the things  than to buy new ones."''
 3100 PRINT "All during 1983 Timex tried to  redesign the Sinclair Spectrim  to their own liking.  They      failed to make the Christmas    market with the TS2068 and quit the computer business altogetherin Feburary of 1984.  Had they  produced the original Sinclair  Spectrum a year earlier, they   would have made very good money."'''': CLS : PRINT "Rather than delaying a year, it makes more sense for a          company to produce a computer   before coming out with the      improved version a year later. "
 3110 PRINT '"The 2068 sold initially for only$200.  But the Commodore 64 was only $100 higher, and even      though one could argue over     which is the better machine,    those of us who bought the 2068 ended up wishing we had bought  the Commodore 64 due to the     tremendous software and hardwaresupport for that machine."''
 3120 PRINT "Some people tried hard to remainloyal to Sinclair and support   their machines.  I was one of   them.  But for me this effort   was a waste of my talents."
 3125 PRINT ': CLS : PRINT "Very few people bought my       programs.  There weren't enough user groups out there to bring  enough people togethor to form adecent software market.  Had I  written some of my programs for other machines, I would have    made good money."
 3130 PRINT '"I had to ask myself recently whyI was still supporting a companyover two years after it had     given up on me? (As a customer.)"''
 3140 PRINT "I had mistakenly believed that  Sinclair Research LTD would cometo the rescue of the American   computer market.  I was         encouraged by early announcementof the QL computer.  But        Sinclair had almost as much     financial problems as I did.    "'': CLS : PRINT "The QL became stalled just like the 2068 did."
 3150 PRINT '"The QL is a very nice computer, but like the 2068, it is almost stillborn.  Too little too late.Sinclair has already anounced   their new ""Enigma"" which is     suppose to compete with the     Atari ST and Commodore Amiga.   Sinclair has announced a releasedate of May 1986."
 3160 PRINT '"Enough is enough.  Sinclair is  never again going to sell       millions of computers.  Everyonewho wanted a computer now owns  one.  Department stores have    taken away the computer sectionsand started selling VCR's.  The only computers that are selling now are the higher priced modelsthat can deliver preformance andsupport.  People want to know   ""what can I do with it"" and thatis where the future of computingis and will remain for awhile."
 3170 INPUT "Press enter to continue";a$
 3180 CLS 
 3190 DRAW 255,0: DRAW 0,175: DRAW -255,0: DRAW 0,-175
 3200 PLOT 5,5: DRAW 240,0: DRAW 0,160: DRAW -240,0: DRAW 0,-160
 3210 PRINT AT 11,3;"Where do we go from here?"
 3220 INPUT "Press enter to find out";a$
 3230 PRINT AT 11,3;"                          "; OVER 1;AT 3,0;"  First of all, I will be         very happy to sell you my       2068 products and will try      to induce you herein to         purchase them.    "
 3240 PRINT AT 9,0; OVER 1;      "  But you may wish to obtain      another computer, in            which case I would be           pleased to sell you a QL,       knowing that it is a            great way to learn about        32 bit computers.  There        is real good software           that comes with the QL          and I can instruct you          on where to get additional      software support."
 3250 INPUT "But I must tell you...";a$
 3255: CLS : DRAW 255,0: DRAW 0,175: DRAW -255,0: DRAW 0,-175
 3260: PLOT 5,5: DRAW 240,0: DRAW 0,160: DRAW -240,0: DRAW 0,-160
 3270 PRINT AT 3,0; OVER 1;     "  But I must tell you that I      as a serious software author    am not going to program for     the QL.  I say this because     I want to be honest with my     customers.  I do hope you       are one of my customers."''
 3280 PRINT OVER 1;             "  Commodore, Atari, and Apple     are the champions of the        American computer market.       But Atari and Commodore are     proably going to bury Apple     with their new machines."''
 3290 PRINT OVER 1;            "  So which machine will be the    computer of the future, the     Atari ST, or the Commodore?"
 3295 INPUT "Press ENTER to find out";a$
 3300: CLS : DRAW 255,0: DRAW 0,175: DRAW -255,0: DRAW 0,-175
 3310: PLOT 5,5: DRAW 240,0: DRAW 0,160: DRAW -240,0: DRAW 0,-160
 3320 PRINT AT 3,0; OVER 1;     "    Amiga              ST                                           Costs more      50% less                                        Better          Great           Graphics.       Graphics.                                       256k            512-1024k                                                                       Amiga's interlacing             mode flickers.                                                                                         Atari has a                     better reputation."
 3340 INPUT "Press ENTER please ...";a$
 3341: CLS : DRAW 255,0: DRAW 0,175: DRAW -255,0: DRAW 0,-175
 3342: PLOT 5,5: DRAW 240,0: DRAW 0,160: DRAW -240,0: DRAW 0,-160
 3350 PRINT AT 7,0; OVER 1;     "  In short I am purchasing for    myself a 520 ST because I       trust the company Atari to      deliver a low cost super-       computer to the American        market.  Atari plans to have    several versions we will        eventually see models           from under $500 to $1000."
 3360 PRINT AT 0,0;: INPUT a$;'"I am purchasing my Atari ST fromBlack Patch Systems             1-800-atari-02                  because they not only gave me   the best price, good service,   but they were also willing to   ship COD which is important if  you are going to send hundreds  of dollars in the mail.";'a$
 3363 INPUT "It may be of interest to you    that I will be adapting my      Diamond Mike game to the ST as  well as creating an original    chess program";a$
 3365 INPUT "This may seem like a very       unusual catalog.  Not only does it come on cassette, but it     seems to promote an entirely    different computer...........";a$
 3366 INPUT "The purpose of this catalog is  not to sell you on Atari, but tosell you 2068 software and      possibly a Sinclair QL .....";a$: INPUT "Not everyone has outgrown their 2068.  I don't think that there is a more fun to use            programmable 8-bit computer.";a$
 3367 INPUT "And not everyone wants to spend $1000 on a computer system.     Perhaps it is possible to get   some of the features of more    expensive machines on the QL.   Indeed!  The QL has a powerful  processor and custom chips.";a$
 3368 CLS : PRINT "QL","vs  ST"''"128k RAM","512k RAM","68008 processor","68000 processor","7.5 Mhz","8.0 Mhz","48k ROM","192k ROM","QL DOS","TOS and GEM","joystick ports","ports with mouse16k cartridges","128k cartridges","Two microdrives","3.5 inch drive","32k video","32k video","8 colors","16 out of 512","uses TV","RGB Monitor","$299","$763"
 3369 INPUT "Please press ENTER";a$: GO TO 9100
 3370: CLS : DRAW 255,0: DRAW 0,175: DRAW -255,0: DRAW 0,-175
 3375: PLOT 5,5: DRAW 240,0: DRAW 0,160: DRAW -240,0: DRAW 0,-160
 3380 PRINT AT 7,0; OVER 1;     "  For a comprehensive review      of the QL, see my second        tape catalog, available for     just $2.  The catalog           features a fantastic three      dimensional moving display      on your 2068 screen.  This      tape is a MUST HAVE!"      
 3385 INPUT a$: INPUT "The amazing QL is only $299, andif you order with a Money-Order,then you can have your choice ofQL CAVERN or QL CHESS free, as  well as your choice of DIAMOND  MIKE or GREAT GAME and GRAPHICS SHOW for the 2068 free.";a$
 3390 CLS : PLOT 128,0: DRAW 64,0: DRAW 63,63,PI/2: DRAW 0,64-24: DRAW -63,63,PI/2: DRAW -64,0:
 3400: DRAW -64,0: DRAW -63,-63,PI/2: DRAW 0,-64+24: DRAW 63,-63,PI/2: DRAW 64,0:
 3410 PRINT AT 5,0; OVER 1;     "  The Sinclair Pocket TV beats    the competition hands down!                                     Those other TV's that cost      more use hard to see LCD        displays.  (For one thing,      you can't view them in          the dark, or even dim           light.)                                                         But the Sinclair Flatscreen     TV is a true CRT and            special Sinclair chips give     good reception anywhere."
 3420 COPY : INPUT "only $99";a$
 3430: CLS : DRAW 255,0: DRAW 0,175: DRAW -255,0: DRAW 0,-175
 3450: PLOT 128,0: DRAW 64,0: DRAW 63,63,PI/2: DRAW 0,64-24: DRAW -63,63,PI/2: DRAW -64,0:
 3460: DRAW -64,0: DRAW -63,-63,PI/2: DRAW 0,-64+24: DRAW 63,-63,PI/2: DRAW 64,0:
 3480 INPUT a$';"COMPASS compiler-assembler givesyou the power to assemble z80   machine code and compile easy touse BASIC that will execute 100 times faster!  Includes 19 pagesof instructions!  Only $19.95!"'a$
 3490: CLS : DRAW 255,0: DRAW 0,175: DRAW -255,0: DRAW 0,-175
 3500: PLOT 5,5: DRAW 240,0: DRAW 0,160: DRAW -240,0: DRAW 0,-160
 3510 PRINT AT 3,0; OVER 1;    "  Catalog #1 comes free with      the game Diamond Mike"''    "  Catalog #2 with the QL info,    and the fantastic 3D display    is just $2."''              "  Catalog #3, this one, is        also available for just $2."''"  Diamond Mike","$17.95 (`12.95)","  GGG Show","$17.95 (`12.95)","  COMPASS","$19.95 (`14.95)","  Pocket TV","$99","  Sinclair QL","$299","  All prices include shipping."
 3600 COPY : INPUT "Please press ENTER";A$:
 3700 FOR L=3 TO 18: PRINT AT L,2;"                             ";: NEXT L
 3800 PRINT AT 7,0; OVER 1;     "          Order from"''        "         JRC Software                     PO Box 448                 Scottsburg, IN 47170"''   "      Phone 812-752-6071"
 3810 COPY : INPUT "Please press ENTER";A$:
 3820 FOR L=3 TO 18: PRINT AT L,2;"                             ";: NEXT L
 3830 PRINT AT 3,0; OVER 1;     "  As of this date, 2-16-1986,     the best magazine for your      TS1000 or TS2068 is"''"     Time Designs Magazine"''         "  36 pages of national Timex-     Sinclair coverage. Published    'On Time' six issues each       year.  Interesting articles     and information are to be       be found in every issue with    up to date coverage.  The       TD also has an exclusive        'TS Shopper' guide.             Subscribe today!  $15/yr"
 3840 PRINT OVER 1;"  29722 Hult Rd"'"  Colton, Oregon 97017"
 3900 COPY : INPUT "Please press ENTER";A$:: GO TO 9100
 4000 INPUT "Included with this catalog is a high quality game program called3D TIC TAC TOE.  This program isdistributed to you on a         SHAREWARE basis, which means    that we would like you to make  copies of this program and give it to friends who have a 2068   computer.  Please press ENTER.";a$
 5000 INPUT "If you use, however, the program3D TIC TAC TOE then you should  send $2 to the original author  listed below.  Please send two  $1 bills for use of the program.No checks.  Send to:                                             Charles Goyette                 835 Mercure Blvd                Drummondville, QE J2B 3K9       CANADA                                                          No special postage required to  send letters to Canada.";a$
 5001 RUN 
 5002 INPUT "The Great Game and Graphics Show";"comes with this sofware:"'"1.  Easy Editor (text editor)"'"2.  Touch Type Teacher"'"3.  HI-RES Lunar Lander"'"4.  Games such as 'Dodge',          'Timy the Trash Compactor',     and 'Easel'"'"5.  The Great Grapics Show          (includes oscilloscope)"'''''"choose!"''"1- long"'"0- short"'';c: LET Q=7/4: LET W=7/2:: DIM Y(15): CLS : PRINT #1;"            from the             GREAT GAME AND GRAPHICS SHOW": POKE 23659,2: FOR L=1 TO 15
 5010 IF L<=7 THEN LET Y(L)=Q+(L-1)/2
 5020 IF L=8 THEN LET Y(L)=Q+W
 5030 IF L>=9 THEN LET Y(L)=W+(16-L)/4
 5040 NEXT L
 5070 FOR b=120 TO 0 STEP -8:
 5080 REM LET Z=39*(c OR RND<.1)*(1+COS (2*PI*(B)/120))
 5090 FOR A=120 TO 0 STEP -8
 5100 LET Z=130*(ABS SGN c OR RND<.12)*((60-ABS (B-60))*(60-(ABS (A-60))))/3600
 5110 LET X=B-A+128
 5120 LET Y=B/2+A/4
 5130 IF Z>.5 THEN FOR L=-7 TO 7: PLOT INVERSE 1;X+L,Y+Z+Y(L+8): DRAW INVERSE 1;0,-Z: NEXT L
 5140 PLOT X,Y
 5145 IF Z<.5 THEN DRAW -7,Q:::: DRAW 7,W:: DRAW 7,-Q: DRAW -7,-W:
 5150 IF Z>.5 THEN DRAW -7,Q: DRAW 0,Z: DRAW 7,-Q: DRAW 0,-Z: DRAW 7,W: DRAW 0,Z: DRAW -7,Q: DRAW -7,-W: PLOT X,Y+Z: DRAW 7,W
 5160 NEXT A: NEXT B
 5170 INPUT "Please press ENTER";a$: RETURN 
 6000 RUN 
 8000 CLS : PRINT "Help!"''"There are tens of thousands of"'"people who have 2068 computers, but have no idea where to get   software support.  But you can  help!  By giving copies of this catalog to everyone you know whohas a 2068 or Spectrum computer."
 8100 PRINT '"Insert a good quality cassette  into your recorder and push the record button.  Be sure that thecable runs from MIC of the      computer to the MIC of the      recorder.  Press ENTER.  Wait   for the first save to finish andpress ENTER again.  Wait for thesecond save to finish.  Rewind  and  pass out that copy!"
 8500 SAVE "CATALOG" LINE 9000: SAVE "JRC SOFT"CODE 57919,65536-57919: GO TO 9100
 9000 CLEAR 57919-1: POKE VAL "23675",VAL "63": POKE VAL "23676",VAL "226": LOAD ""CODE 
 9100 INK 0: PAPER 7: BORDER 7: CLS : PRINT "Choose! desired key!"'''
 9200 PRINT "1","Play a short","","version of",,"Diamond Mike",,,"2","RUN a short",,"version of",,"the Great Game",,"and Graphics",,"Show",,,"3","Play 3D",,"Tic Tac Toe",,,"4","see commentary",,,"5","see catalog",,,"6","copy everything",,"to cassette"
 9300 LET a$=INKEY$: IF a$<"1" OR a$>"6" THEN GO TO 9300
 9400 PRINT AT 0,0: IF a$="1" THEN : INPUT "Diamond Mike is a breakthrough  in 2068/Spectrum games.  The    object is to collect enough     diamonds and find the exit      before time runs out, while     avoiding falling rocks,         ferocious amebas, and killer    butterflies.  There are 22      different screens, but  only 3  are included here so that you   may try the game before         purchasing it.  Use the keys O  P Q A and symbol shift to move, as well as the N key if you     give up!  Press ENTER to start  the game";a$: BORDER 0: RANDOMIZE USR 61632: GO TO 9100
 9410 IF a$="2" THEN GO SUB 5002
 9500 IF a$="3" THEN GO TO 4000
 9600 IF a$="4" THEN GO TO 3000
 9700 IF a$="5" THEN GO TO 3370
 9800 IF a$="6" THEN GO TO 7000
 9900 GO TO 9100

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

Scroll to Top