Alive
News Team Current issue History Online Support Download Forum @Pouet

01 - 02 - SE - 03 - 04 - 05 - 06 - 07 - 08 - 09 - 10 - 11 - 12 - 13 - 14

Alive 6
[ Back to main ]

1. The Atari TT hardware
   ---------------------

  The MC68030 CPU
  ===============
  The MC68030 in the Atari TT is a real 32-bit processor which is
  mainly 68000 compatible. The biggest advantage is the on-chip Data
  and Instruction caches of 256 byte length each.
  The caches can be manipulated by the Cache-Control-Register (CCAR)
  which is a part of the MC68030 itself (hiword is always zero!):

   15 .......................................................... 0
    0   0   WA  DBE CD  CED FD  ED  0   0   IBE CI  CEI FI  EI

   WA  = Write allocate                IBE = Instruction Burst enable
   DBE = Data Burst Enable             CI  = Clear Instruction Cache
   CD  = Clear Data Cache              CEI = Clear entry in Inst.cache
   CED = Clear Entry in Data cache
   FD  = Freeze Data cache             FI  = Freeze Instruction cache
   ED  = Enable Data cache             EI  = Enable Instruction cache

   To completely disable one of the caches, you have to set the
   "Enable cache" bit to zero. "Freezing" the cache makes it work
   almost as a ROM - All Reads will be applied to the cache, but its
   contents will not be overwritten. To clear one whole cache, use
   the CD- or CI-bits. To clear a certain cache-entry, you will have
   to use the CEI- or CED-bits in conjunction with the
   Cache-Address-Register (CAAR) - also on chip - which contains the
   address of the cache entry. However, only bits 7 to 2 are being
   used currently in the CAAR, so only these bits have to be set.
   Burst mode enables extremely quick update of the cache which allows
   128-bit to be read more or less at once.


   The MC68030 PMMU
   ================
   The "paged memory management unit" of the MC68030 inside the Atari
   TT is capable of converting "virtual" adresses used by programs
   into "physical" adresses used by the hardware. This easily allows
   memory protection, mostly used by multitasking systems like Unix
   and MiNT or virtual memory that is actually on a harddisk.
   This device is usually not being used by games- or demo-programmers
   so it will not be discussed here in any way.


   The MC68882 FPU
   ===============
   The MC68030 was designed to cooperate with an MC68882 without any
   additional hardware- or software modification. The duo MC68030 and
   MC68882 work almost like they were on one chip, which makes it
   extremely easy for the programmer to handle the duo.
   The FPU features 8 floating point registers (FP0 to FP7) of 80 bits
   length each, it has its own Control Register (FPCR) and Status
   Register (FPSR) as well as its own Instruction adress register
   (FPIAR).
   The MC68882 communitcates with the MC68030 over the so-called LineF
   emulation (all instructions of the MC68030 that adress the FPU have
   "F" as the first hexadecimal digit).
   The FPU itself bears 64 instructions and 5 new instruction-width
   indices (Integer, Single Real, Double Real, Extended Real and
   Packed Decimal Real Data Format).

   The details on FPU-programming will not be discussed in detail in
   this documentation. Please refer to an MC68882 Programmer's Manual
   by Motorola.


  Compatibilities and incompatibilities
  =====================================
  => In comparison to the Atari ST and Atari STE:
     These series only bear an MC68000 which has a few "disadvantages"
     in comparison to the MC68030 of the Atari TT.
     First, the external data bus is only 16-bits wide which makes
     reading and writing of a longword slower than of a word. In the
     Atari TT, reading or writing 16-bits at once makes absolutely no
     difference to reading or writing 32-bits.
     The 68000 does not have adress line 0, which makes it impossible
     for the MC68000 to read 16- or 32-bits from odd addresses
     (reading bytes is possible since the 68000 reads a 16-bit-word in
     fact and only leads through the required 8 bits) - The attempt to
     do this will lead to an error on the ST. The TT can read words
     and longwords from any given address.
     The 68000 has no cache. Attempting to set the caches will either
     crash the machine or have no affect at all (untested).
     The condition code register of the MC68030 and 68000 are
     identical. The other bits of the Status Register (8 to 31) are
     NOT identical. Handle with care.
     The 680x0-instructions MOVE from/to SR are allowed in USER-mode
     on the 68000, on the MC68030, they are NOT. The TOS of the TT has
     a patch for that by executing an exception, but in case the
     desired program shall not require or refer to TOS routines, this
     will have to be acknowledged.
     Furthermore, the MC68030 has additional ways of adressing and can
     multiply/divide longword operands. These instructions will
     generate an error on the MC68000.

  => In comparison to the Atari Falcon030:
     Both computers have an MC68030 with its caches and both have a
     PMMU. If equipped with an MC68882, the Falcon can also operate
     FPU-instructions just like the TT, if the FPU misses, they will
     generate an error.
     The bus-system of the Falcon does not allow burst-mode in
     memory-access. Setting this bit in the CCAR will not change
     anything.

  => What to look out for when writing ST-programs:
     The MC68030 is a 32-bit processor and has - basically - a 32 bit
     adress bus. The MC68030 will not work well if being fed 24-bit
     adresses only, which works on the ST.
     Also make sure to access the Condition Code Register instead of
     the whole Status Register if not in Supervisor mode. These
     instructions on the MC68030 are only allowed as Supervisor.
     Also, clockcycle-based effects will never work correctly on ST
     and TT. First, instruction timing on the 68030 is not only
     different to that on 68000, but also more flexible due to cache
     and RAM-usage. Besides that, the clockspeed of the TT is not
     controlable and always runs at 32 MHz - In contrast to the Falcon
     which is switchable to 8 MHz.

[ Back to main ]
[ Onto Next Chapter]

Alive 6