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 ]

8. Important changes of the Operating System
This chaper concludes the essential part of this FAQ as it
describes the most important change of the operating system
of the STE with respect to the most recent one of the ST-series.

? What TOS version does the Atari STE-series feature ?
! The 1040STE was shipped with TOS 1.06 first, later with TOS 1.62.
  Both are basically just improved versions of TOS 1.04, the final
  Atari ST-TOS, and a few minor bugs made an update from 1.06 to
  1.62 necessary.
  It features the "Rainbow-colour"-effect in the DESKTOP INFO
  dialogue. The Mega STE has either TOS 2.05 or the final 68000-
  compatible TOS 2.06.

? What are the most important changes between 1.04 and 1.06 ?
! TOS 1.06 introduces the Cookie Jar as a standard feature of the
  operating system - not 1.04. Each TOS that followed 1.06 had
  the Cookie Jar as a permanent gadget to store informations about
  the installed software that might require sharing with other
  software. Please note that ANY TOS-version supports a Cookie Jar,
  but only TOS 1.06 and the later version automatically install a
  Cookie Jar on bootup.

? Tell me more about the Cookie Jar.
! The Cookie Jar is nothing but a compilation of Cookies. Each
  Cookie is a 2x32 bit record with the first 32 bit representing
  the identity of each cookie and the other 32 bit either
  - containing an address of where to find the full cookie
  - the Cookie itself
  The Cookie Jar "base" is at address $000005A0. This longword is
  a pointer of where in memory to find the real Cookie Jar which
  contains the cookies of the type described above.
  It is highly recommended to always follow the vector at $05A0
  to locate the Cookie Jar and not rely on other fixed addresses.

  If the longword at $05A0 is a "0", then there is no Cookie Jar
  installed and the machine executing this program is certainly
  no STE because each STE-compatible TOS features a Cookie Jar.

? I want to write demos and games, not applications. What do i
  need the Cookie Jar for ?
! For example to cleanly find out what type of machine your
  program is being run on. Also, you can find out what extra
  gadgets the machine offers. And it is really easy to do so.

  First, look for a Cookie Jar at address $05A0. If it returns
  a zero, there is no Cookie Jar installed - and the TOS version
  is < 1.06. However, finding a valid pointer to a Cookie Jar also
  does not mean automatically that you have an STE or better.
  Cookie Jars can also be software installed or it could be a
  simple ST equipped with TOS 2.06.

? So how can i use the Cookie Jar to learn more about the machine
  my program is being executed on ?
! That is a lot easier than it might sound.
  Once you found the base-pointer to the Cookie Jar, you just need
  to search the Cookies. Each Cookie has an ID which consists of
  4 bytes each. Usually, these are being used as 4 ASCII-characters
  so you have an acronym for most cookies. Atari only uses the
  3 right chars with the first char being a "_" to point out that
  this is an Atari "standard" cookie.
  To browse through the cookies you just need to read the first
  longword at the address $05A0 points to - This is the ID of the
  first cookie in the jar. If that is not the ID you are looking
  for, add 8 to the address (4 for the ID and 4 for the Cookie
  itself) and read the resulting address again. This is then the
  ID of the next cookie and so forth.
  The Cookie Jar is terminated by a 32-bit "0" as the ID, the so-
  called Null-cookie, which has the number of cookies installed
  as the cookie data. (So for example if you read
  $00000000 $00000004 whithin the Cookie Jar, this means you have
  just found the last entry and that 4 cookies are installed in

? Doesn't sound so hard. What Cookies are automatically created
  on boot-up ?
! There's a list of cookies TOS initializes directly on boot-up
  so you can take them for granted even on a clean machine:

      ID    Usage
     _CPU   Contains the CPU-type. Possible Cookie values are
              00 - 68000
              10 - 68010
              20 - 68020
              30 - 68030
              40 - 68040 in the lowest byte
     _FPU   Contains whether the machine has an FPU, and if so
            of which type this FPU is and how to access it. The
            bits of the Cookie itself mean:
             Bit 0   -  SFP-004 or compatible FPU-card present
                        (SFP was the standard 16MHz 68881 FPU card,
                         FPU is treated as a peripheral device then)
             Bit 1-2 -  These two bit encode the FPU-type:
                        Value 0  -  No coprocessor
                        Value 1  -  Either 68881 or 68882, unknown
                        Value 2  -  68881
                        Value 3  -  68882
             Bit 3   -  68040 internal FPU
            Please note that Bit 0 refers to an FPU as peripheral
            device (FPU-card on Megabus or similar) while Bit 1 and 2
            refer to an FPU as coprocessor for the CPU.
     _FRB   Contains the address to a Fast-RAM buffer. Only suitable
            for machines with FastRAM (meaning Atari TT).
     _MCH   Contains the machine type. The upper word reads as:
              0 - Any kind of ST (260, 520, 1040, Mega ST, STf, STfm)
              1 - STE (520, 1040, 2080, 4160, Mega STE)
              2 - TT
              3 - Falcon
            The low-word can contain additional data and Atari uses
            the low-word only to store STE-specific information:
              No Bit - 1040 STE
              Bit 1  - ST Book
              Bit 5  - Mega STE (anything unequal to zero)
     _SND   Stores information about the sound hardware present:
              Bit 0  -  YM2149 present
              Bit 1  -  8-bit Stereo DMA sound
              Bit 2  -  16-bit Stereo DMA sound
              Bit 3  -  DSP56001
              Bit 4  -  Connection Matrix
              Bit 5  -  CodeC present
     _SWI   Contains DIP-switch settings. Usually only needed in the
            Atari TT and MegaSTE
     _VDO   Encodes the video-hardware in the system. The values mean
              0  -  ST-Shifter
              1  -  STE-Shifter
              2  -  TT-Shifter
              3  -  Falcon VIDEL in the highword

? Are these cookies always present ?
! If the TOS features a Cookie Jar as default, yes, then these values
  are automatically written. Please note though that the Cookie Jar
  could have been installed per software though or altered by Auto-
  folder programs. It is therefore unwise to take a certain sequence
  of cookies for granted. Rather search the Cookie-Jar for a certain

? What additional cookies do exist ?
! There is a list of additional cookies that is being installed by
  software and is not necessarily featured in a "default" Cookie Jar.
  The set of rather common cookies is:

    _FDC   Floppy Disk Controller
           Usually used by software driving the Floppy Disk with
           respect to the options this Controller allows. Commonly
           the top byte of the 4 reads as
             0  means  standard Floppy Disk Drive (720 kb)
             1  means  HD 1.44 MB drive
             2  means  ED 2.88 MB drive
           Just for completeness the other 3 bytes of this Cookie:
            $000000    No information given
            $415443    "ATC" - original Atari Hardware or 100%
                       compatible hardware
            $445031    "DP1" DreamPark Development hardware.
                       The last byte might vary.
            other      Third-party manufacturer hardware
    _FLK   File Locking
           Installed GEMDOS(-replacement) support File-Locking.
           If present it contains the version number.
    _INF   DESKTOP.INF-bug patch
           Cookie of the program that patches a TOS 1.06 bug
    _NET   Network support
           Flag for the network support of the GEMDOS(-replacement).
           Contains a pointer to the full Cookie structure.
    _OOL   Poolfix
           GEMDOS Poolfix-patch. Contains the version number
    _SLM   SLM driver
           Contains the version number of the Diablo SLM804 driver.
    _AKP   Keyboard/Language configuration
           Bits 15 to 8 encode the keyboard, Bits 7 to 0 the
             1 - German         2 - French
             3 - English        4 - Spanish
             5 - Italian        6 - English
             7 - Swiss French   8 - Swiss German
           all others imply English, too
    _IDT   International Date/Time Format
           Bit 12 selects 12 hour format (0) or 24 hour format (1)
           Bits 9 and 8 select date format:
             00 - MMDDYY       01 - DDMMYY
             10 - YYMMDD       11 - YYDDMM
           Bit 7 to 0 contain an ASCII character for the separator
    MiNT   MiNT
           Is being initializes on MiNT/MultiTOS systems. The cookie
           contains the version of the kernel.

    Please note that MACCEL3 (Mouse-accelerator 3) also installs a
    cookie but the ID is not conform (unprintable ASCII).

? Can I also install a Cookie myself ?
! Sure. In most cases that's even pretty easy:
  All you need to do is find the "Null-Cookie" and store it. Then
  install your cookie(s) where the Null-Cookie has been. Then,
  write a new Null-Cookie right behind your cookies with the new
  number of installed cookies as its value.
  In the rare case that there is not enough memory behind the
  current Cookie Jar to install your Cookies, you will have to
  install a new Cookie Jar: First, copy all Cookie Jar entries
  to the new location with enough memory, then add your cookies,
  terminate this Cookie Jar with the new Null-Cookie and then
  write the pointer to your new Cookie-Jar to $05A0.

  This will also work if there is no Cookie Jar at all and you want
  to install one yourself. However, please note that on TOS-systems
  that do not feature a Cookie Jar, the vector at $05A0 will not be
  cleared on a reset.

? My program is being started on the first possible AUTO-Boot
  occassion. When in the ordinary boot-structure is the Cookie Jar
  initialized ?
! According to the documentation, the Cookie Jar is part of the Bios
  and is being initialized when the system vectors are being
  set, which is done very early and before the first disk-access.
  You should be able to access the Cookie Jar in any case - with two
  minor restrictions. First, on a machine with no Cookie Jar you will
  of course not be able to access it, second there is no warranty that
  all cookies have already been written. The "basic ones" like machine
  type, Videohardware and sound should already be present.

? So much for the Cookie Jar. What else is new in TOS 1.06 and 1.62
  with respect to 1.04 ?
! Not much, really.

? You mean there is not even an XBIOS-routine to replay DMA-sound or
  to read the extended joystick ports or something ?
! There don't seem to be.

? What is that TOS 1.06 DESKTOP.INF bug i read about ?
! TOS 1.06 didn't store the resolution (in colour) in the DESKTOP.INF.
  It always booted into lowres when connected to a colour monitor.

? Is TOS 1.06 or 1.62 the one people refer to as "STE-TOS" ?
! As funny as it sounds - none of them is. The list of nicknames is as
    TOS 1.00  -  No nickname
    TOS 1.02  -  BlitterTOS  (had Blitter routines)
    TOS 1.04  -  RainbowTOS  (considered final TOS for a ST computers)
    TOS 1.06  -  No nickname (STE only)
    TOS 1.62  -  No nickname (STE only, bugfixed from 1.06)
    TOS 2.05  -  STE-TOS     (name given by Atari, MegaSTE only)
    TOS 2.06  -  No nickname (general 68000-TOS for any ST and STE)

Besides the Cookie Jar there is really not much to mention about
TOS 1.06 or 1.62 with respect to 1.04. Please refer to a TOS 1.04
documentation for all the BIOS-, XBIOS- and GEMDOS-routines.
TOS 2.05 and 2.06 do not feature really new BIOS-, XBIOS- or GEMDOS-
routines but a much more advanced AES and Desktop.
They are not being covered here though. Please refer to a recent
TOS 2.0x documentation for more details.

[ Back to Main ]
[ Onto next Chapter ]

Alive 6