The TS2000 Series
Overview
The TS2000 series of computers claims an extensive group of features1—oth hardware and software. The machines feature 24K ROM. The TS2048 has 16K RAM at its disposal while the TS2068 wields a well-utilized 48K RAM.
CPU and Operating System
The TS2000 uses a Z80A microprocessor running at 3.5MHz. It contains a few buffers, either 2 or 6 RAM chips, 2 ROMs, and the piece de resistance: a 64 pin custom chip designed by a few wizards at Timex.
The TS2000 features a full-sized 24K operating system (OS) which provides the Basic interpreter, full-channeled I/O facilities, and a function dispatcher that the user can call to have both simple and complex functions performed for him by the system, thus utilizing the system’s facilities, and not duplicating them.
The TS2000’s native language is Basic. It packs all the standard Basic statements including PRINT, INPUT, IF…THEN, FOR…NEXT, READ…DATA, etc. A full list of commands is given in Table 1. The functions are listed in Table 2.
The Display
The TS2000 supports several different display options. These include 32 column display, 64 column display, Hires screen of 256 x 192 pixels, Hires screen of 512 x 192 pixels, page switching, and an enhanced color-resolution mode. The machine provides connections for a B&W or color TV, an RGB monitor and composite video.
The Keyboard
The keyboard is a 42 hard-key keyboard, including a full-sized space bar and shift keys on both sides. The keyboard is full-sized and provides real tactile feedback (i.e., the button actually pushes down). The operating system provides for single key entry of all keywords.
Interface and Connectors
The cassette interface on the TS2000 is a step above the one on the TS1000, although the one provided with the TS1000 is sufficient for the type of jobs it performs. The TS2000, however, is designed to be able to handle some larger and more involved tasks. Its cassette interface scheme has been designed to meet, functionally, with the needs of the system and its user. The cassette runs at about 1500 bps (bits per second). This means that the user can save 16K in approximately 87 seconds1—bout five times faster than the speed of the interface on the TS1000.
Because of the difference in the actual hardware interface between the two machines, TS1000 cassettes cannot be read into a TS2000 and TS2000 cassettes cannot be read into a TS1000. The interface is very reliable. I have been using the machine for about 10 months by now, 8-15 hours a day, and I have had perhaps a half dozen errors while trying to LOAD a program into the TS2000.
The TS2000 has two connectors available for adding joysticks (one or two) to the system. The industry standard 8-position joysticks connect to the system via a 9-pin D-type connector. These are the same joysticks used by Atari and many other manufacturers.
Bank Switching
The most innovative feature of the TS2000 is bank switching. This is a means of expanding the computer’s address space. Through the flexible scheme that Timex has designed, the TS2000 has the ability to access up to 256 * 64K, or 16 million bytes of memory. Is anyone other than me waiting to see who develops the “16 megabyte RAM pack” first?
Conclusion
All in all, the TS2000 is a very powerful system. With the above described and below detailed features, plus a few extras, the system packs quite a load at a suggested retail price of $199.95 for the TS2068 and $149.95 for the TS2048.
In the next “Perceptions” I will discuss in detail the graphics capabilities and the memory-expanding bank switching technique used by Timex to enhance the functionality of the machine.
Table 1. List of Commands.
Beep x,y Sounds a note through the loud-
speaker whose duration is x seconds,
and is y semitones above middle C
(or below if y is negative).
Border x Sets the border color to color x.
Colors:
0 Black 4 Green
1 Blue 5 Cyan
2 Red 6 Yellow
3 Magenta 7 White
BRIGHT x Sets brightness level for subsequently
printed characters. If x=0 then nor-
mal brightness; x=1 for bright; x=8
for transparent.
CAT "m","volspec" Lists all files on the specified volume
on the screen.
CIRCLE, x,y,z Draws an arc of a circle whose cen-
ter is at (x,y), and whose radius is z.
CLEAR Deletes all variables, freeing the
space that they occupied. Does RE-
STORE and CLS, resets the PLOT
position to the bottom lefthand cor-
ner, and clears all pending GOSUBs.
CLEAR x Like CLEAR, but, if possible, the
RAMTOP pointer will be set to x,
leaving all memory beyond location
x out of the reach of BASIC.
CLOSE #c Closes the specified stream, after
flusing the appropriate buffers where
necessary.
CLS Clears the main screen.
CONTINUE Continues executing the currently in-
memory program where execution
left off.
COPY Sends a copy of the screen to the
printer.
DATA e1,e2, . . . en Part of the data list. Must be in a
program.
DEF FNv(v1,v2 . . . vn)=e User-defined function definition;
must be in a program. Each of
the v, v1 to vn must be either a
single letter or a single letter fol-
lowed by a dollar sign "$" for
numeric and string arguments,
respectively.
DELETE x,y Deletes lines from the program
whose line numbers range from x
to y. If the x is omitted, then
deletion starts at the beginning of
the program. If the y is omitted,
then deletion continues to the
end of the program.
DIM v(x1,x2, . . . xn) Creates an array with the name v
and sets it up as an array of
characters of n dimension, which
are: x1,x2, . . . xn.
DIM v$(x1,x2, . . . xn) Creates an array with the name
v$ and sets it up as an array of
characters of n dimension, which
are: x1,x2, . . . xn. This may be
considered as an array of strings
of fixed length xn with n-1
dimensions x1 . . . xn-1.
DRAW x,y Equivalent to DRAW x,y,0.
DRAW x,y,z Draws a line from the current
plot position moving x hori-
zontally and y vertically relative
to it, while turning it through an
angle of z radians.
ERASE "m","filespec" Removes specified file from the
specified volume.
FLASH x Defines whether subsequently
printed characters will be flash-
ing or steady. x=0 for steady,
x=1 for flash, x=8 for no
change.
FOR v=x TO y Equivalent to FOR v=x TO y
STEP 1.
FOR v=x TO y STEP Z Deletes any simple variable v
and sets up a control variable
with the value x, limit y, step z,
and looping address referring to
the statement after the FOR
statement.
FORMAT "m","volspec" Formats the media on the speci-
fied volume, and assigns to it the
specified volume name.
GOSUB x Calls the subroutine at line x.
Note that x may be an expression
like 200*z+1000.
GOTO x Jumps to line x, or, if there is no
line x, to the first line following.
IF x THEN s If x is true, (i.e., non-zero), then
s is executed. Note that s in-
cludes all the statements to the
end of the line.
INK x Sets the ink (foreground) color of
subsequently printed characters.
INPUT . . . The ". . ." is a sequence of IN-
PUT items, separated by com-
mas, semicolons, or apostrophes.
An INPUT item can be:
(1) Any print item not beginning
with a letter.
(2) A variable name.
(3) LINE, followed by a string-
type variable name.
The PRINT items and sepa-
rators in (1) are treated exactly
the same as in a PRINT state-
ment except that everything is
printed at the bottom of the
screen.
INVERSE x Controls inversion of sub-
sequently printed characters. If
x=0, then no inversion is se-
lected and all characters are
printed as ink color on paper
color. If x=1, then inversion is
selected and all subsequently
printed characters are printed as
paper color on ink color.
LET v=e Assigns the value e to the vari-
able v.
LIST LIST 0
LIST x Lists the program starting at line
x, making x the current line.
LLIST LLIST 0
LLIST x Like LIST, but listing comes out
on the printer instead of the
screen.
LOAD f Loads program and variables
LOAD f DATA () Loads a numerical array.
LOAD f DATA $() Loads a string array.
LOAD f CODE m,n Loads at most n bytes, starting at
address m.
LOAD f CODE m Loads bytes starting at address
m.
LOAD f SCREEN$ Loads a screen picture.
NOTE: For any of the above
forms of the LOAD command,
and also for the SAVE,
MERGE, and VERIFY com-
mands, if an* is inserted after the
command (e.g., LOAD*f), then
the operation will take place on a
disk-like device, and not on the
tape.
LPRINT Like PRINT, but uses printer in-
stead of screen.
MERGE f Like LOAD, but merges instead
of deleting memory first. All
forms as per LOAD.
MOVE "m","old Renames the old file to the name
filespec", new filespec.
new filespec"
NEW Clears memory including pro-
gram, variables, etc., up to
RAMTOP.
NEXT v Marks the end of a loop.
ON ERR CONTINUE Continues execution of program
where the last trapped error
occurred.
ON ERR GOTO x Sets up the system so that the
computer will jump to line x if
an error occurs. The pro-
grammer may then handle the
trapped error as he desires.
ON ERR RESET Turns off error trapping.
OPEN #c,"m","filespec" Opens a stream identified by c
and ties it to the device specified
or file on the device specified.
OUT x,y Outputs byte y to port x.
OVER x Controls overprinting of sub-
sequently printed characters.
PAPER x Like INK, but controls paper
(background) color.
PAUSE x Stops operations for x sixtieths of
a second, (i.e., PAUSE 120 waits
for 2 seconds) or until a key is
pressed. PAUSE 0 waits forever
until a key is pressed.
PLOT x,y Plots an ink spot at pixel (x,y);
moves plot position.
POKE x,y Places the value y in memory
location x.
PRINT . . . The ". . ." is a sequence of
PRINT items, separated by com-
mas, semicolons, or apostrophes.
A semicolon between two
items has no effect; it is used
only to separate the two items. A
comma outputs the comma con-
trol character, moving the print
position to either column 0 or
column 15. An apostrophe out-
puts an ENTER character.
At the end of a PRINT state-
ment, if it does not end with a
semicolon, a comma, or an apos-
trophe, then an ENTER charac-
ter is output.
A PRINT item can be:
(1) Empty (i.e., nothing).
(2) A numerical expression.
(3) A string expression.
(4) AT x,y: sets the print position
at line x, column y.
(5) TAB x: Outputs spaces until
column x is reached.
(6) A color item which takes the
form of a PAPER,INK,
FLASH, BRIGHT, INVERSE
or OVER statement.
(7) A stream specifier (e.g., #6).
RANDOMIZE RANDOMIZE 0
RANDOMIZE x Sets the seed for the random
number generator to x. If x=0,
then the seed is given the value q,
where q is the number of seconds
times 60 that the computer has
been on.
READ v1,v2, . . . vn Read values for the specified
variables from the DATA list.
REM . . . No effect. REMark or RE-
Minder. The ". . ." can be any
sequence of characters except
ENTER. This includes ":" so no
statements are possible after the
REM on the same line.
RESET (#c) (*) The arguments in parentheses
are optional. If no arguments are
given, then the RESET com-
mand initializes any new devices
it finds. If a stream number is
given, then the channel asso-
ciated with the specified stream
is reinitialized. The RESET *
command does the equivalent of
turning the machine off and then
on again.
RESTORE RESTORE 0
RESTORE x Restores the data pointer to the
first DATA statement in a line
with a number at least n: the
next READ will start reading
there.
RETURN Return from subroutine.
RUN RUN 0
RUN x CLEAR, then GOTO, x.
SAVE f Saves the program and variables
with their values.
SAVE f LINE x Saves the program and variables
so that, if they are loaded, there
is an automatic jump to line x.
SAVE f DATA () Saves a numerical array.
SAVE f DATA $() Saves a character array.
SAVE f CODE m,n Saves n bytes starting at address
m.
SAVE f SCREEN$ Saves a screen picture.
SOUND x,y;a,b,c,d . . . Sets register(s) to specified val-
ue(s) in sound generator.
STOP Stop the program.
VERIFY Like LOAD except that the in-
coming data is not loaded into
memory, but compared against
what is already there. An error is
given if any comparison shows a
difference. All forms as per
LOAD.
Table 2. List of Functions.
ABS x Absolute magnitude.
ACS x Arccosine in radians.
x AND y x if y< >0: 0 if y=0
x$ AND y x$ if y< >: "" if y=0
ASN x Arcsine in radians
ATTR (x,y) Attributes for character on screen at
position x,y
BIN x Yields the decimal of the binary
number x. (i.e., PRINT BIN
10101010 prints 170).
CHR$ x The character whose code is x.
CODE x$ The code of the first character in x$
COS x Cosine in radians
EXP x e^x
FN FN followed by a single letter calls
up a user-defined function.
FREE Returns the number of bytes of
memory available to the user.
IN x Reads the byte at I/O port x.
INKEY$ The character currently being
pressed key.
INT x Integer (in characters) of x$.
LN x Natural logarithm (to base e).
NOT x 0 if x< >0; 1 if x=0
x OR y 1 if b< >0; x if b=0
PEEK x The byte stored in memory location
x.
PI 3.14159265 . . .
POINT (x,y) 1 if the pixel at x,y is ink color; 0 if it
is paper color.
RND A random number x, such that
0<x<1
SCREEN$ (x,y) The character that appears at
character location x,y on the screen.
SGN x Signum: the sign -1 for negative, 0
for zero or +1 for positive) of x.
SIN x Sine x.
SQR x Square root.
STICK (x,y) Reads stick number y. Reads button
or joystick position according to y.
STR$ x The string of characters that would
be displayed if x were printed.
TAN x Tangent.
USR x Calls the machine language routine
at address x.
USR$ The address of the first of eight bytes
describing the bit pattern for a user
defined character.
VAL x$ Evaluates x$ as a numerical
expression.