1 2#------------------------------------------------------------------------------ 3# $File: atari,v 1.2 2026/04/30 18:40:15 christos Exp $ 4# atari: file(1) magic for Atari formats: 5 6# Operating system ROMs for the Atari ST series of computers, including a 7# GPLv2+ implementation called EmuTOS. 8# Teemu Hukkanen <tjhukkan@iki.fi> 9# 10# OSHEADER https://freemint.github.io/tos.hyp/en/OSHEADER.html 11# The first byte is a bra.s instruction, an unconditional short jump 120 byte 0x60 13# The second byte is the offset for the jump target address, 14# jumping past the OS header 15# TOS 1.00 uses 0x1E 16>0x01 byte 0x1E 17>>0 use atari-tos-rom 18# TOS >1.00 and EmuTOS uses 0x2E 19>0x01 byte 0x2E 20>>0 use atari-tos-rom 21 22# EmuTOS for Amiga 230 beshort 0x1111 24>0x02 beshort 0x4EF9 25>>0xD2 beshort 0x602E 26>>>0xD2 use atari-tos-versions 27 280 name atari-tos-versions 29# Enumerate all known versions 30>0x02 beshort 0x0100 Atari TOS ROM 1.00 31>>0 use atari-tos-rom 32# EmuTOS uses 1.04 for 192kB ROMs, and 2.06 for >=256kB ROMs 33>0x02 beshort 0x0102 Atari TOS ROM 1.02 34>>0 use atari-tos-rom 35>0x02 beshort 0x0104 Atari TOS ROM 1.04 36>>0 use atari-tos-rom 37>0x02 beshort 0x0106 Atari TOS ROM 1.06 38>>0 use atari-tos-rom 39>0x02 beshort 0x0162 Atari TOS ROM 1.62 40>>0 use atari-tos-rom 41>0x02 beshort 0x0205 Atari TOS ROM 2.05 42>>0 use atari-tos-rom 43>0x02 beshort 0x0206 44# ST-Book TOS 2.08 header says 2.06, identify it by release date 45>>0x18 belong 0x03101992 Atari TOS ROM 2.08 46>>>0 use atari-tos-rom 47>>0x18 belong !0x03101992 Atari TOS ROM 2.06 48>>>0 use atari-tos-rom 49>0x02 beshort 0x0207 Atari TOS ROM 2.07 50>>0 use atari-tos-rom 51>0x02 beshort 0x0208 Atari TOS ROM 2.08 52>>0 use atari-tos-rom 53>0x02 beshort 0x0300 Atari TOS ROM 3.00 54>>0 use atari-tos-rom 55>0x02 beshort 0x0301 Atari TOS ROM 3.01 56>>0 use atari-tos-rom 57>0x02 beshort 0x0305 Atari TOS ROM 3.05 58>>0 use atari-tos-rom 59>0x02 beshort 0x0306 Atari TOS ROM 3.06 60>>0 use atari-tos-rom 61>0x02 beshort 0x0400 Atari TOS ROM 4.00 62>>0 use atari-tos-rom 63>0x02 beshort 0x0401 Atari TOS ROM 4.01 64>>0 use atari-tos-rom 65>0x02 beshort 0x0402 Atari TOS ROM 4.02 66>>0 use atari-tos-rom 67>0x02 beshort 0x0404 Atari TOS ROM 4.04 68>>0 use atari-tos-rom 69 700 name atari-tos-rom 71# Release date, display using ISO 8601 date 72# Year 73>0x1A beshort x %.4x 74# Month 75>0x18 byte x \b-%.2x 76# Day 77>0x19 byte x \b-%.2x 78# os_conf: Video sync mode and language/country 79#>0x1C beshort x (os_conf: %u) 80# Video mode is not relevant for multilingual variants 81>0x1C beshort !255 82>>0x1C beshort ^1 Video: NTSC 83>>0x1C beshort &1 Video: PAL 84# Language / Country 85# https://github.com/emutos/emutos/blob/master/include/ctrycodes.h 86# TOS uses a country to indicate locale, use IETF language tags instead. 87>0x1C beshort x Locale: 88>0x1C beshort 0 en-US 89# PAL 1.04 and 1.06 TEX variants 90>0x1C beshort 1 91>>0x2A85C string AUSWAHL: de-DE 92# NTSC with de-DE 93>0x1C beshort 2 94# NTSC Kaos TOS de-CH 95>>0x26806 string Auswahl: de-CH 96# NTSC Kaos TOS en-GB 97>>0x26806 string Select: en-GB 98# NTSC 1.06 TEX variant 99>>0x2A4FC string AUSWAHL: de-DE 100# NTSC 2.06 TEX variant 101>>0x32C3E string AUSWAHL: de-DE 102# PAL de-DE 103# Several translations are based on de-DE, detect all known variants. 104>0x1C beshort 3 105# 1.00 de-DE 106>>0x15097 string AUSWAHL de-DE 107# 1.00 fi-FI 108>>0x15092 string VALINTA fi-FI 109# 1.00 dk-DK 110>>0x15090 string FIL\ V dk-DK 111# 1.02 de-DE 112>>0x16691 string AUSWAHL de-DE 113# 1.04 de-DE 114>>0x2BAE2 string AUSWAHL: de-DE 115# 1.04 cs-CZ 116>>0x2BAE4 string Soubor: cs-CZ 117# 1.04 de-DE 118>>0x2BAEC string AUSWAHL: de-DE 119# 1.06 de-DE 120>>0x2DA56 string AUSWAHL: de-DE 121# 1.62 de-DE 122>>0x2DB4A string AUSWAHL: de-DE 123# 1.62 cs-CZ 124>>0x2DB4C string Soubor: cs-CZ 125# 2.05 is-IS 126>>0x34E80 string Drif: is-IS 127# 2.05 de-DE 128>>0x34E5A string AUSWAHL: de-DE 129# 2.06 de-DE 130>>0x36B68 string AUSWAHL: de-DE 131# 2.06 cs-CZ 132>>0x36B68 string Soubor: cs-CZ 133# 2.06 sr-Latn 134>>0x36B68 string IZBOR: sr-Latn 135# 2.06 sr-Cyrl 136>>0x36B68 belong 0xC8C7C1CE sr-Cyrl 137# 2.08 de-DE 138>>0x36B18 string AUSWAHL: de-DE 139# 3.01 de-DE 140>>0x395F0 string AUSWAHL: de-DE 141# 3.06 de-DE 142>>0x3EDD2 string AUSWAHL: de-DE 143# EmuTOS uses the de-DE language code correctly 144>>0x2C string ETOS de-DE 145>0x1C beshort 5 fr-FR 146>0x1C beshort 7 en-GB 147>0x1C beshort 9 es-ES 148>0x1C beshort 11 it-IT 149# PAL sv-SE 150>0x1C beshort 13 151# 1.02 sv-SE 152>>0x1979F string PAPPERSKORG sv-SE 153# 1.04 sv-SE 154>>0x2FC9F string PAPPERSKORG sv-SE 155# 1.04 no-NO 156>>0x2FCA0 string Papirkurv no-NO 157# 1.06 sv-SE 158>>0x31C13 string PAPPERSKORG sv-SE 159# 1.62 sv-SE 160>>0x31D07 string PAPPERSKORG sv-SE 161# 2.05 sv-SE 162>>0x3C309 string PAPPERSKORG sv-SE 163# 2.06 sv-SE 164>>0x3E00D string PAPPERSKORG sv-SE 165# 3.06 sv-SE 166>>0x46277 string PAPPERSKORG sv-SE 167# EmuTOS uses the sv-SE language code correctly 168>>0x2C string ETOS sv-SE 169# 2.06 NTSC ru-RU (2004) 170>0x1C beshort 14 ru-RU 171>0x1C beshort 15 fr-CH 172# Kaos TOS NTSC de-CH 173>0x1C beshort 16 de-CH 174>0x1C beshort 17 de-CH 175>0x1C beshort 19 tr-TR 176>0x1C beshort 21 fi-FI 177>0x1C beshort 23 no-NO 178>0x1C beshort 25 dk-DK 179# Dutch TOS 1.04 (1989-04-06) uses Saudi-Arabia as country code. 180>0x1C beshort 27 181>>0x2BAB0 string Selectie: nl-NL 182>0x1C beshort 29 nl-NL 183>0x1C beshort 31 cs-CZ 184>0x1C beshort 33 hu-HU 185>0x1C beshort 35 pl-PL 186>0x1C beshort 39 ru-RU 187>0x1C beshort 49 ro-RO 188>0x1C beshort 63 el-GR 189>0x1C beshort 109 cat 190# Multilingual TOS, either TOS 4.x, or 1024kB EmuTOS, which contain multiple 191# languages, and select the language and video mode based on settings in 192# NVRAM. 193>0x1C beshort 255 Multilingual 194# Kaos TOS, a modified version of TOS 1.04 195>0x5FFC string KAOS Kaos TOS 196>0x2CDB0 string 1.4.3 Kaos TOS 1.4.3 197# EmuTOS 198>0x2C string ETOS EmuTOS 199# Extended OS header, EmuTOS >= 1.0.0 200# https://github.com/emutos/emutos/blob/master/doc/version.txt 201>0x34 string OSXH 202# Length of extended OS header 203>>0x38 belong 25 204# Major version 205>>>0x3C byte x v%d 206# Minor version 207>>>0x3D byte x \b.%d 208# Fix version 209>>>0x3E byte x \b.%d 210# Zero means official release, Non-zero means snapshot 211>>>0x3F byte !0 Snapshot 212# Display version string for snapshots 213>>>>(0x40.L) string x (%s) 214>>>0x48 beshort x Machine: 215>>>0x48 beshort &1 ST 216>>>0x48 beshort &2 STe 217>>>0x48 beshort &4 TT 218>>>0x48 beshort &8 Falcon 219>>>0x48 beshort &16 FireBee 220>>>0x48 beshort &32 M548X 221>>>0x48 beshort &64 Amiga 222>>>0x48 beshort &256 ARAnyM 223>>>0x4A beshort x CPU: 224>>>0x4A beshort &1 68000 225>>>0x4A beshort &2 68010 226>>>0x4A beshort &4 68020 227>>>0x4A beshort &8 68030 228>>>0x4A beshort &16 68040 229>>>0x4A beshort &32 68060 230>>>0x4A beshort &64 68080 231>>>0x4A beshort &256 ColdFire-V4e 232# Adjustable cold boot delay in seconds when > 0. 233>>>0x4C byte >0 Boot-Delay: %is 234