Perceptions

See all articles from SYNC v3 n5

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.