xref: /freebsd/contrib/file/magic/Magdir/atari (revision 7af41682a96bf7058b82665c33bb9b1bfa079c17)
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