| 
                                                        
                                                         This section, which you may want to read in
                                                               conjunction with
                                                               the Timex
                                                                      TS2068 Technical Manual,
                                                               discusses the three (official) Timex
                                                               machines that
                                                               closely resemble the ZX Spectrum; the
                                                               TS2068,
                                                               TC2068
                                                               and TC2048. Timex produced a number of
                                                               other
                                                               machines
                                                               (the TS1000,
                                                               TS1500,
                                                               etc.)
                                                               which are
                                                               closely related to the
                                                               ZX81 -
                                                               additional
                                                               information about these can found in
                                                               various sites
                                                               listed
                                                               in the 'links'
                                                               and
                                                               'hardware'
                                                               sections of
                                                               this
                                                               document. In addition, several variants or
                                                               clones
                                                               of
                                                               these machines were produced (often
                                                               unofficially)
                                                               -
                                                               unless particularly noteworthy, these
                                                               machines are
                                                               not
                                                               covered in
                                                               detail here. A
                                                               Timex
                                                                      Basic
                                                               reference is also available. 
                                                        The Timex Machines: 
                                                               The TS2068, the TC2068 and the TC2048 each
                                                               share
                                                               the same
                                                               basic internal design, described
                                                               immediately
                                                               below: 
                                                        
                                                               - The TS2068 is an American machine
                                                                      operating at
                                                                      60Hz
                                                                      on a 110v power supply and generates
                                                                      an
                                                                      NTSC
                                                                      television picture
                                                                      (just like the Spectrums sold by
                                                                      mail order
                                                                      in the
                                                                      US by Sinclair) but with a TS1000
                                                                      (ZX81)
                                                                      compatible expansion
                                                                      bus.
 
  
                                                               - The TC2068 is the European version
                                                                      operating
                                                                      at 50Hz
                                                                      on a 230-240v power supply and
                                                                      generates a
                                                                      PAL
                                                                      television signal (used throughout
                                                                      Europe,
                                                                      except
                                                                      in France where SECAM is used
                                                                      instead) with
                                                                      a
                                                                      normal expansion bus.
                                                                      Both machines feature an AY-3-8912
                                                                      sound
                                                                      chip (not 128 compatible), an
                                                                      extended version of BASIC in 24K of
                                                                      ROM
                                                                      (semi-compatible), two non-standard
                                                                      joystick
                                                                      ports, a cartridge dock
                                                                      (not IF2 compatible), and a new ULA
                                                                      with
                                                                      extra
                                                                      video modes, but some
                                                                      incompatiblities.
                                                                      There is
                                                                      also a Polish clone of the
                                                                      TC2068, called the UK2086, which
                                                                      substitutes an
                                                                      RS232 port for one of the joystick
                                                                      ports.
 
  
                                                               - The TC2048 is a TC2068 with all the
                                                                      extra
                                                                      hardware
                                                                      removed, except the new ULA, but a
                                                                      normal
                                                                      BASIC
                                                                      ROM (only slightly
                                                                      modified), a BNC composite out (but
                                                                      no RGB
                                                                      signals
                                                                      on the bus), and a Kempston joystick
                                                                      port
                                                                      (but no
                                                                      +5v as needed by
                                                                      autofire joysticks).
 
                                                         
                                                        There are also two modified versions of the
                                                        TC2048; the
                                                        TC2128
                                                        (Rebuiltion or similar) and the TC2144
                                                        (by Jarek
                                                               Adamski).
                                                        The
                                                        TC2128 extends the TC2048 to 128K using the
                                                        Spectrum 128 memory scheme. The TC2144 does the
                                                        same but
                                                        provides an extra 16K of memory between 0x8000 and
                                                        0xc000. Both
                                                        upgrades allow the ULA to use the shadow screen in
                                                        Bank 7
                                                        giving
                                                        the machine a total of four screen
                                                        areas.
  
                                                        Although the Timex machines are similar to the 48K
                                                        machine there
                                                        are some timing differences:
                                                        
                                                               - The main processor runs at 3.52800 MHz,
                                                                      as
                                                                      opposed to
                                                                      3.50000 MHz on the 48K Spectrum.
                                                               
 
                                                               - The AY-3-8912
                                                                      sound chip
                                                                      runs at 1.76475 Mhz.
 
                                                               - The American machines have a 60 Hz
                                                                      interrupt
                                                                      as
                                                                      opposed to 50 Hz on the European
                                                                      machines.
                                                               
 
                                                               - The scanline timings are probably
                                                                      different.
                                                               
 
                                                         
                                                        There are 224 T-states on a normal 48K Spectrum,
                                                        312
                                                        scanlines
                                                        per frame and 64 scanlines before the television
                                                        picture.
                                                        Theoretically, on the European models there should
                                                        be 226
                                                        T-states per scanline. There are either 311 or 312
                                                        scanlines per
                                                        frame and 63
                                                        or 64 scanlines before the television picture, but
                                                        this
                                                        has not
                                                        been accurately tested. This means that there are
                                                        probably
                                                        somewhere between
                                                        70286 and 70512 T states per frame. At a guess, on
                                                        European
                                                        models the '50 Hz' interrupt occurs at 50.04 Hz.
                                                        It is
                                                        not known
                                                        at precisely what
                                                        point the '60 Hz' interrupt occurs on American
                                                        models.
                                                        The
                                                        Spectrum's ULA bug which causes snow when I is set
                                                        to
                                                        point to
                                                        conteded
                                                               memory
                                                        is not
                                                        present as the Timex machines use a different ULA.
                                                        
                                                               - Screen
                                                                                    Modes
 
                                                                      The ULA used by the Timex machines
                                                                      provides
                                                                      a
                                                                      number of additional screen modes.
                                                                      These are controlled using Port
                                                                      0xff. An
                                                                      unfortunate side effect of this is
                                                                      that a
                                                                      few
                                                                      games, like Arkanoid, which expect
                                                                      reading
                                                                      0xff to
                                                                      produce screen and ATTR data bytes
                                                                      when the
                                                                      ULA is
                                                                      reading the screen memory, will not
                                                                      work,
                                                                      since
                                                                      reading 0xff on the Timex returns
                                                                      the last byte sent to the port. It
                                                                      is not
                                                                      known if
                                                                      this port is fully decoded but it
                                                                      seems
                                                                      likely
                                                                      that it is partially decoded, as on
                                                                      the
                                                                      Spectrum.
                                                                      Port 0xff is also used to
                                                                      enable/disable
                                                                      the timer
                                                                      interrupt and select which bank of
                                                                      memory
                                                                      to use
                                                                      for the horizontal MMU. The byte to
                                                                      output will be interpreted thus:
                                                                        Bits 0-2: Screen mode. 000=screen 0, 001=screen 1, 010=hi-colour, 110=hi-res
  Bits 3-5: Sets the screen colour in hi-res mode.
              000 - Black on White     100 - Green on Magenta
              001 - Blue on Yellow     101 - Cyan on Red
              010 - Red on Cyan        110 - Yellow on Blue
              011 - Magenta on Green   111 - White on Black
  Bit 6:    If set disables the generation of the timer interrupt.
  Bit 7:    Selects which bank the horizontal MMU should use. 0=DOCK, 1=EX-ROM.
                                                                      Screen 0 is the normal screen at
                                                                      0x4000.
                                                                      Screen 1
                                                                      uses the same format but at
                                                                      0x6000.
  
                                                                      The hi-colour screen uses the data
                                                                      area of
                                                                      screen
                                                                      0 and screen 1 to create a 512x192
                                                                      pixel
                                                                      screen.
                                                                      Columns are taken alternately from
                                                                      screen 0 and screen 1. The attribute
                                                                      area
                                                                      is not
                                                                      used. In this mode all colurs,
                                                                      including
                                                                      the
                                                                      BORDER, are BRIGHT, and the BORDER
                                                                      colour
                                                                      is the same as the PAPER
                                                                      colour.
  
                                                                      The multi-colour screen uses the
                                                                      data area
                                                                      of
                                                                      screen 0 for its data and the data
                                                                      area of
                                                                      screen
                                                                      1 for its attributes, giving 2
                                                                      colours per
                                                                      8x1
                                                                      pixel block. The attribute area is
                                                                      in the
                                                                      same
                                                                      byte order as the data area, which
                                                                      means
                                                                      MLT
                                                                      files, which have the attribute are
                                                                      in
                                                                      series,
                                                                      must
                                                                      be converted to be
                                                                      displayed.
  
                                                                      Bit 6 is the hardware equivalent of
                                                                      issuing
                                                                      a DI
                                                                      (disable interrupts) instruction in
                                                                      machine
                                                                      code,
                                                                      and is unaffected by the instruction
                                                                      EI
                                                                      (enable interrupts), so should be
                                                                      used with
                                                                      caution. Bit 6 can be useful for
                                                                      getting
                                                                      ROM
                                                                      routines which normally enable
                                                                      interrupts
                                                                      to
                                                                      run slightly faster.
  
                                                                      With careful timing it is possible
                                                                      to mix
                                                                      screen
                                                                      modes so you could have a screen
                                                                      where the
                                                                      top
                                                                      half is hi-colour and the bottom
                                                                      half is
                                                                      hi-res - perfect for text adventures
                                                                      with
                                                                      graphics. Using a similar technique
                                                                      it is
                                                                      also
                                                                      possible to have more than two
                                                                      colours on a
                                                                      hi-res
                                                                      screen. However, it is believed that
                                                                      no
                                                                      commercial
                                                                      software ever actually did this.
                                                                
                                                         
                                                        
                                                        
                                                               - Sound
                                                                                    Chip
 The
                                                                      AY-3-8912
                                                                      used in the TS2068 and TC2068 is
                                                                      controlled
                                                                      by two
                                                                      I/O ports:
                                                                        OUT (0xf5) - Select a register 0-14
  IN  (0xf6) - Read the value of the selected register
  OUT (0xf6) - Write to the selected register 
                                                                      IN 0xf5 always returns
                                                                      255.
  
                                                                      Most Spectrum software written to
                                                                      use the
                                                                      AY chip
                                                                      expects to find it at the addresses
                                                                      used by
                                                                      the
                                                                      Spectrum 128.
  
                                                                      Typically, the AY
                                                                      chip is written to inside 128K games
                                                                      using:
                                                                        LD BC,0xfffd     01 FD FF
  OUT (C),D        ED 51
  LD B,0xbf        06 BF
  OUT (C),E        ED 59 
                                                                      To convert to a TS2068 or TC2068
                                                                      poke a few
                                                                      values
                                                                      as follows:
                                                                        LD BC,0xfff5     01 F5 FF
  OUT (C),D        ED 51
  LD C,0xf6        0E F6
  OUT (C),E        ED 59 
                                                                      If you've got a Fuller box, you can
                                                                      do the
                                                                      same
                                                                      mod, replacing F5 with 3F and F6
                                                                      with 5F.
                                                                
                                                         
                                                        
                                                               - 
                                                                      
Joysticks
                                                                       
                                                                      On the 128K ZX Spectrum 128, AY
                                                                             chip is
                                                                             used
                                                                             to control MIDI and RS232 but
                                                                             on the
                                                                             TS2068
                                                                             and TC2068 it is used to read
                                                                             the
                                                                             Timex
                                                                             joysticks instead, using
                                                                             register
                                                                             R14. See
                                                                             the Joystick
                                                                                    Interfaces section
                                                                             for
                                                                             technical
                                                                             details. 
                                                                
                                                         
                                                        
                                                        
                                                        
        |