Subject: magic(5) updates
To: NetBSD 'tech-userlevel' mailing list <tech-userlevel@NetBSD.org>
From: Martin Moeller <marm.mm@t-online.de>
List: tech-userlevel
Date: 04/02/2007 03:00:01
Hi,

I added/changed some tests to/in the following magic files:

	--> magdir/atari	(new file)
		- includes all tests related directly to the Atari (and some to GEM)

	-> magdir/archive
		- deleted Atari MSA archive test, now in magdir/atari

	-> magdir/audio
		- deleted Atari ST audio files tests, now in magdir/atari

	-> magdir/console
		- deleted Atari Lynx cartridge dump tests, now in magdir/atari

	-> magdir/filesystems
		- deleted Minix-ST kernel floppy test, now in magdir/atari

	-> magdir/fonts
		- corrected Speedo Font data test:
			old message: X11 Speedo font data
			new message: Speedo font data
			
			Reason: The file format is not only X11-related

	-> magdir/images
		- correction/additions to OS/2 version 1.x Bitmap test
		- added support OS/2 2.x Bitmaps, Windows 4.x/5.x Bitmaps
		- corrections/additions to Windows 3.x Bitmap test
		- deleted test for Atari STAD compressed bitmaps, now in magdir/atari
	-> magdir/motorola
		- deleted tests for Atari ST/TT Executables, now in magdir/atari

	-> magdir/os2
		- added support for variations of the OS/2 Bitmap File Format / OS/2 Font File Formats

Please note that ONLY the following additions/corrections were tested:

	- OS/2 / Windows Bitmap File Formats (all version), only few tests
	- Atari ST PRG File Format, only one test

The atari(5) file includes informations about every test regarding its stability. I'm not sure whether this is a good idea or not.

Since this is my first contribution to the NetBSD community, I would like get some feedback regarding quality of the Changelog above, the patch itself. Thanks.

----------------
Martin Moeller

The patch:

--- magdir/archive.old	2007-03-04 16:22:09.000000000 +0100
+++ magdir/archive	2007-04-02 01:37:17.000000000 +0200
@@ -651,14 +651,6 @@
 # Felix von Leitner <felix-file@fefe.de>
 0	string	d8:announce	BitTorrent file
 
-# Atari MSA archive - Teemu Hukkanen <tjhukkan@iki.fi>
-0       beshort 0x0e0f          Atari MSA archive data
->2      beshort x       	\b, %d sectors per track
->4      beshort 0       	\b, 1 sided
->4      beshort 1       	\b, 2 sided
->6      beshort x       	\b, starting track: %d
->8      beshort x       	\b, ending track: %d
-
 # Alternate ZIP string (amc@arwen.cs.berkeley.edu)
 0	string	PK00PK\003\004	Zip archive data
 
--- magdir/atari	1970-01-01 01:00:00.000000000 +0100
+++ magdir/atari	2007-04-02 01:49:32.000000000 +0200
@@ -0,0 +1,233 @@
+
+#------------------------------------------------------------------------------
+# atari: file(1) magic for atari file formats
+#
+#	Possible States:
+#		untested	-	no tests were done
+#		experimental	-	few tests were done, no statement about the stability could be given
+#		unstable	-	many tests were done, SOME tests failed
+#		stable		-	many tests were done, ALL tests were successful
+
+#    No definition of few/many is given and is thus developer-dependent.
+
+#------------------------------------
+# Atari/GEM Image File Formats:
+#
+#	* Atari STAD compressed bitmap format (untested)
+#	* Animatic Film Format (untested)
+#	* ComputerEyes Raw Data Format (untested)
+#	* CyberPaint Sequence Format (untested)
+#	* Image Film/Picture Format (untested)
+#	* NEOchrome Animation Format (untested)
+#	* GEM IMG File Format variations (XIMG, STTT) (untested)
+#	* STOS *.MBK File Format (untested)
+
+# pM8x: ATARI STAD compressed bitmap format
+#
+# from Oskar Schirmer <schirmer@scara.com> Feb 2, 2001
+# p M 8 5/6 xx yy zz data...
+# Atari ST STAD bitmap is always 640x400, bytewise runlength compressed.
+# bytes either run horizontally (pM85) or vertically (pM86). yy is the
+# most frequent byte, xx and zz are runlength escape codes, where xx is
+# used for runs of yy.
+#
+0	string	pM85		Atari ST STAD bitmap image data (hor)
+>5	byte	0x00		(white background)
+>5	byte	0xFF		(black background)
+0	string	pM86		Atari ST STAD bitmap image data (vert)
+>5	byte	0x00		(white background)
+>5	byte	0xFF		(black background)
+
+# Martin Moeller (marm.mm@t-online.de, Sun Apr  1, 2007)
+#
+# Further Atari ST Graphics File Formats:
+#
+# References: http://www.fileformat.info/format/atari/
+# (untested -> experimental)
+
+# Animatic Film Format:
+18	belong	0x27182818	Animatic Film Format
+>0	beshort	x		\b, %d Frames,
+>4	beshort	x		%d VBlanks Delay Per Frame,
+>6	beshort	=0		forward play direction,
+>6	beshort =1		backward play direction,
+>10	beshort	x		%d x
+>12	beshort x		%d pixels per frame
+
+# ComputerEyes Raw Data Format
+# Magic Number is 0x45594553 ('EYES') @ Offset 0
+0	belong	0x45594553	ComputerEyes Raw Data Format,
+>4	beshort	=0		low-resolution data (320x200, 3 planes)
+>4	beshort =1		high-resolution data (640x400, 1 plane)
+
+# CyberPaint Sequence Format
+0	beshort 0xFEDB		CyberPaint Sequence Format,
+>2	beshort	x		Version %d,
+>4	belong	x		%d Frames,
+>8	beshort	x		%d VBlanks Delay Per Frame
+0	beshort	0xFEDC		CyberPaint Sequence Format,
+>2	beshort x		Version %d,
+>4	belong	x		%d Frames,
+>8	beshort	x		%d VBlanks Delay Per Frame
+
+# Image Film/Picture Format:
+0	string	IMDC		Image Film/Picture Format,
+>4	beshort	0		Low Resolution,
+>4	beshort 1		Medium Resolution,
+>4	beshort 2		High Resolution,
+>34	beshort	x		%d bytes Image Data,
+>48	byte	0		uncompressed
+>48	byte	1		compressed
+
+# NEOchrome Animation Format:
+0	belong	0xBABEEBEA	NEOchromeAnimation Format,
+>4	beshort	x		%d x
+>6	beshort	x		%d,
+>10	beshort	x		Image-Position %dX; 
+>12	beshort x		%dY,
+>14	beshort	x		%d Frames,
+>16	beshort	x		%d VBlanks Delay Per Frame
+
+# Atari/GEM IMG File Format variations
+#
+# Reference: http/www.atarimax.com/freenet/freenet_material/6.16and32-BitComputersSupportArea/8.OnlineMagazines/showarticle.php?306
+#
+#	All Integers are in Big Endian Byte Order.
+#
+#	typedef signed short word;
+#
+#	typedef struct {
+#		word version;
+#		word header_length;	/* SizeOf Header in Words */
+#		word num_planes;
+#		word pattern_length;	/* RLE Compression Pattern Size*/
+#		word pixel_width;	/* in microns */	
+#		word pixel_height;	/* in microns */
+#		word scanline_width;	/* in pixels */
+#		word num_scanlines;
+#	} IMGHeader;
+#
+
+0	beshort	0x0002
+>>20	beshort 0
+>>>16	string	XIMG		GEM XIMG Image
+
+0	beshort	0x0001
+>>20	beshort	0x0010
+>>>16	string	STTT		GEM STTT Image
+
+#0	beshort	0x0001
+#>>16	beshort 0x80		GEM IMG File Format, with HyperPaint Header Extension
+
+# STOS *.MBK File Format used in STOS Basic
+#
+# Reference: http://www.umich.edu/~archive/atari/Graphics/picfmts.doc
+18	belong	0x19861987	STOS .MBK File
+>34	beshort	x		%d Low Resolution Frames,
+>36	beshort	x		%d Medium Resolution Frames,
+>38	beshort	x		%d High Resolution Frames
+
+#-----------------------------------------
+# Atari/GEM Executable File Formats:
+#
+#	* ATARI ST relocatable PRG (experimental)
+
+# ATARI ST relocatable PRG
+#
+# from Oskar Schirmer <schirmer@scara.com> Feb 3, 2001
+# (according to Roland Waldi, Oct 21, 1987)
+# besides the magic 0x601a, the text segment size is checked to be
+# not larger than 1 MB (which is a lot on ST).
+# The additional 0x601b distinction I took from Doug Lee's magic.
+#
+# Martin Moeller (marm.mm@t-online, Sun Apr  1, 2007)
+#
+# References:	http://www.wotsit.org/getfile.asp?file=atariexe&sc=228743528
+#		http://www.fortunecity.com/skycraper/apple/308/html/chap2.htm
+#
+
+0	beshort			0x601A		Atari ST M68K contiguous executable/object file
+>2	belong			x		(txt=%ld,
+>6	belong			x		dat=%ld,
+>10	belong			x		bss=%ld,
+>14	belong			x		sym=%ld)
+>22	belong			&0x01		\b, PF_FASTLOAD
+>22	belong			&0x02		\b, PF_TTRAMLOAD
+>22	belong			&0x04		\b, PF_TTRAMMEM
+>22	belong&0x30		0		\b, PF_PRIVATE
+>22	belong&0x30		1		\b, PF_GLOBAL
+>22	belong&0x30		2		\b, PF_SUPERVISOR
+>22	belong&0x30		3		\b, PF_READABLE
+>26	beshort			!0		\b, no relocation needed
+>30	string		SFX			\b, [Self-Extracting LZH SFX archive]
+>38	string		SFX			\b, [Self-Extracting LZH SFX archive]
+>44	string		ZIP!			\b, [Self-Extracting LZH ZIP archive]
+
+0	beshort			0x601B		Atari ST M68K non-contig executable
+>2	belong			x		(txt=%ld,
+>6	belong			x		dat=%ld,
+>10	belong			x		bss=%ld,
+>14	belong			x		sym=%ld)
+>22	belong			&0x01		\b, PF_FASTLOAD
+>22	belong			&0x02		\b, PF_TTRAMLOAD
+>22	belong			&0x04		\b, PF_TTRAMMEM
+>22	belong&0x30		0		\b, PF_PRIVATE
+>22	belong&0x30		1		\b, PF_GLOBAL
+>22	belong&0x30		2		\b, PF_SUPERVISOR
+>22	belong&0x30		3		\b, PF_READABLE
+>26	beshort			!0		\b, no relocation needed
+# From NetBSD /src/dist/file/magic/magdir/motorola, MAIN, revision #1.1.1.2
+>30	string		SFX			\b, [Self-Extracting LZH SFX archive]
+>38	string		SFX			\b, [Self-Extracting LZH SFX archive]
+>44	string		ZIP!			\b, [Self-Extracting LZH ZIP archive]
+
+#0       beshort         0x0064          Atari 68xxx CPX file
+#>8      beshort         x               (version %04lx)
+
+#-------------------------------
+# Atari Audio File Formats:
+#
+#	* SNDH Atari ST music (untested)
+#	* sc68 Atari ST music (untested)
+
+# Atari ST audio files by Dirk Jagdmann <doj@cubic.org>
+0	string		ICE!		SNDH Atari ST music
+0	string		SC68\ Music-file\ /\ (c)\ (BeN)jami	sc68 Atari ST music
+
+#--------------------------------
+# Atari Achive File Formats:
+#
+#	* Atari MSA archive (untested)
+
+# Atari MSA archive - Teemu Hukkanen <tjhukkan@iki.fi>
+0       beshort 0x0e0f          Atari MSA archive data
+>2      beshort x       	\b, %d sectors per track
+>4      beshort 0       	\b, 1 sided
+>4      beshort 1       	\b, 2 sided
+>6      beshort x       	\b, starting track: %d
+>8      beshort x       	\b, ending track: %d
+
+#-------------------------------
+# Atari Filesystem Formats:
+#
+#	* Minix-ST kernel floppy (untested)
+
+# Minix-ST kernel floppy
+0x800	belong		0x46fc2700	Atari-ST Minix kernel image
+>19	string		\240\5\371\5\0\011\0\2\0	\b, 720k floppy
+>19	string		\320\2\370\5\0\011\0\1\0	\b, 360k floppy
+
+19	string		\320\2\370\5\0\011\0\1\0	Atari-ST floppy 360k
+19      string		\240\5\371\5\0\011\0\2\0	Atari-ST floppy 720k
+
+#---------------------------------------
+# Atari Video Console File Formats:
+#
+#	* Atari Lynx cartridge dump (EXE/BLL header) (untested)
+
+# Atari Lynx cartridge dump (EXE/BLL header)
+# From: "Stefan A. Haubenthal" <polluks@web.de>
+
+0	beshort		0x8008		Lynx cartridge,
+>2	beshort		x		RAM start $%04x
+>6	string		BS93
--- magdir/audio.old	2007-03-04 16:22:09.000000000 +0100
+++ magdir/audio	2007-04-02 01:37:47.000000000 +0200
@@ -508,10 +508,6 @@
 # licq.conf
 1	string	[licq]			LICQ configuration file
 
-# Atari ST audio files by Dirk Jagdmann <doj@cubic.org>
-0	string		ICE!		SNDH Atari ST music
-0	string		SC68\ Music-file\ /\ (c)\ (BeN)jami	sc68 Atari ST music
-
 # musepak support From: "Jiri Pejchal" <jiri.pejchal@gmail.com>
 0       string          MP+     Musepack audio
 >3      byte            255     \b, SV pre8
--- magdir/console.old	2007-03-04 15:54:57.000000000 +0100
+++ magdir/console	2007-04-02 01:36:26.000000000 +0200
@@ -154,13 +154,6 @@
 0       string          XIP0            XIP, Microsoft Xbox data
 0       string          XTF0            XTF, Microsoft Xbox data
 
-# Atari Lynx cartridge dump (EXE/BLL header)
-# From: "Stefan A. Haubenthal" <polluks@web.de>
-
-0	beshort		0x8008		Lynx cartridge,
->2	beshort		x		RAM start $%04x
->6	string		BS93
-
 # Opera file system that is used on the 3DO console
 # From: Serge van den Boom <svdb@stack.nl>
 0	string		\x01ZZZZZ\x01	3DO "Opera" file system
--- magdir/filesystems.old	2007-03-04 16:22:09.000000000 +0100
+++ magdir/filesystems	2007-04-02 01:42:19.000000000 +0200
@@ -1005,12 +1005,6 @@
 >0x64	beshort		&0x2004		v2 dirs)
 
 ############################################################################
-# Minix-ST kernel floppy
-0x800	belong		0x46fc2700	Atari-ST Minix kernel image
->19	string		\240\5\371\5\0\011\0\2\0	\b, 720k floppy
->19	string		\320\2\370\5\0\011\0\1\0	\b, 360k floppy
-
-############################################################################
 # Hmmm, is this a better way of detecting _standard_ floppy images ?
 19	string		\320\2\360\3\0\011\0\1\0	DOS floppy 360k
 >0x1FE	leshort		0xAA55		\b, x86 hard disk boot sector
@@ -1024,9 +1018,6 @@
 19	string		\100\013\371\5\0\011\0\2\0	DOS floppy 1440k, mkdosfs
 >0x1FE	leshort		0xAA55		\b, x86 hard disk boot sector
 
-19	string		\320\2\370\5\0\011\0\1\0	Atari-ST floppy 360k
-19	string		\240\5\371\5\0\011\0\2\0	Atari-ST floppy 720k
-
 #  Valid media descriptor bytes for MS-DOS:
 #
 #     Byte   Capacity   Media Size and Type
--- magdir/fonts.old	2003-09-25 19:59:22.000000000 +0200
+++ magdir/fonts	2007-04-02 01:45:09.000000000 +0200
@@ -23,7 +23,7 @@
 0	string		\001fcp			X11 Portable Compiled Font data
 >12	byte		0x02			\b, LSB first
 >12	byte		0x0a			\b, MSB first
-0	string		D1.0\015		X11 Speedo font data
+0	string		D1.0\015		Speedo font data
 
 #------------------------------------------------------------------------------
 # FIGlet fonts and controlfiles
--- magdir/images.old	2007-03-04 15:54:58.000000000 +0100
+++ magdir/images	2007-04-02 01:40:08.000000000 +0200
@@ -153,24 +153,101 @@
 
 
 # PC bitmaps (OS/2, Windoze BMP files)  (Greg Roelofs, newt@uchicago.edu)
-0	string		BM		PC bitmap data
->14	leshort		12		\b, OS/2 1.x format
->>18	leshort		x		\b, %d x
->>20	leshort		x		%d
->14	leshort		64		\b, OS/2 2.x format
+# (Martin Moeller, marm.mm@t-online.de, Sun Apr  1, 2007)
+#
+# Further Informations:
+#
+# http://www.fileformat.info/format/bmp/egff.htm: Windows Bitmap File Formats
+# http://www.fileformat.info/format/os2bmp/egff.htm: OS/2 Bitmap File Formats
+0	string		BM
+>14	lelong		12		Windows 2.x / OS/2 1.x Bitmap
 >>18	leshort		x		\b, %d x
->>20	leshort		x		%d
->14	leshort		40		\b, Windows 3.x format
+>>20	leshort		x		%d x
+>>24	leshort		x		%d
+>>10	lelong		>26		\b, Colormap Present
+
+>14	lelong		64		OS/2 2.x Bitmap
+>>18	lelong		x		\b, %d x
+>>22	lelong		x		%d x
+>>28	leshort		x		%d
+>>30	lelong		0		\b, uncompressed
+>>30	lelong		1		\b, 8-Bit RLE Compression
+>>30	lelong		2		\b, 4-Bit RLE Compression
+>>30	lelong		3		\b, Huffman 1D Compression
+>>30	lelong		4		\b, 24-Bit RLE Compression
+# InfoHeader.ClrUsed == 0 {
+>>46	lelong		0
+>>>10	lelong		>78
+>>>>28	leshort		x		\b, 2**%d Entries in Colormap
+# }; InfoHeader.ClrUsed >0
+>>46	lelong		>0		\b, %d Entries in Colormap
+>>66	lelong		0		\b, no halftoning used
+>>66	lelong		1		\b, error diffusion halftoning
+>>66	lelong		2		\b, PANDA halftoning
+>>66	lelong		3		\b, super-circle halftoning
+
+>14	lelong		40		Windows 3.x Bitmap
+>>18	lelong		x		\b, %d x
+>>22	lelong		x		%d x
+>>28	leshort		x		%d
+>>30	lelong		0		\b, uncompressed
+>>30	lelong		1		\b, 8-Bit RLE Compression
+>>30	lelong		2		\b, 4-Bit RLE Compression
+>>30	lelong		3		\b, uncompressed, Bitfield Encoding
+>>30	lelong		4		\b, JPEG Compression
+>>30	lelong		5		\b, PNG Compression
+# InfoHeader.ClrUsed == 0 {
+>>46	lelong		0
+>>>30	lelong		3
+# Bitfield Encoding is used, RGB Mask (12 Bytes) needs to be skipped
+>>>>10	lelong		>66
+>>>>>28	leshort		x		\b, 2**%d Entries in Colormap
+>>>30	lelong		^3
+# No Bitfield Encoding is used, Colormap follows after Info Header
+>>>>10	lelong		>54
+>>>>>28	leshort		x		\b, 2**%d Entries in Colormap
+# }; InfoHeader.ClrUsed >0
+>>46	lelong		>0		\b, %d Entries in Colormap
+
+>14	lelong		108		Windows 4.x Bitmap
 >>18	lelong		x		\b, %d x
 >>22	lelong		x		%d x
 >>28	leshort		x		%d
-# Too simple - MPi
-#0	string		IC		PC icon data
-#0	string		PI		PC pointer image data
-#0	string		CI		PC color icon data
-#0	string		CP		PC color pointer image data
-# Conflicts with other entries [BABYL]
-#0	string		BA		PC bitmap array data
+>>30	lelong		0		\b, uncompressed
+>>30	lelong		1		\b, 8-Bit RLE Compression
+>>30	lelong		2		\b, 4-Bit RLE Compression
+>>30	lelong		3		\b, uncompressed, Bitfield Encoding
+>>30	lelong		4		\b, JPEG Compression
+>>30	lelong		5		\b, PNG Compression
+# InfoHeader.ClrUsed == 0 {
+>>46	lelong		0
+>>>10	lelong		>122
+>>>>28	leshort		x		\b, 2**%d Entries in Colormap
+# }; InfoHeader.ClrUsed >0
+>>46	lelong		>0		\b, %d Entries in Colormap
+>>70	lelong		0		\b, Calibrated RGB Color Space
+
+>14	lelong		124		Windows 5.x Bitmap
+>>18	lelong		x		\b, %d x
+>>22	lelong		x		%d x
+>>28	leshort		x		%d
+>>30	lelong		0		\b, uncompressed
+>>30	lelong		1		\b, 8-Bit RLE Compression
+>>30	lelong		2		\b, 4-Bit RLE Compression
+>>30	lelong		3		\b, uncompressed, Bitfield Encoding
+>>30	lelong		4		\b, JPEG Compression
+>>30	lelong		5		\b, PNG Compression
+# InfoHeader.ClrUsed == 0 {
+>>46	lelong		0
+>>>10	lelong		>138
+>>>>28	leshort		x		\b, 2**%d Entries in Colormap
+# }; InfoHeader.ClrUsed >0 
+>>46	lelong		>0		\b, %d Entries in Colormap
+>>70	lelong		0		\b, Calibrated RGB Color Space
+>>70	lelong		1		\b, sRGB Color Space
+>>70	lelong		2		\b, Default Windows Color Space
+>>70	lelong		3		\b, Profile Linked
+>>70	lelong		4		\b, Profile Embedded
 
 # XPM icons (Greg Roelofs, newt@uchicago.edu)
 # note possible collision with C/REXX entry in c-lang; currently commented out
@@ -291,22 +368,6 @@
 0	string	PDS_			PDS image data
 0	string	LBLSIZE=		PDS (VICAR) image data
 
-# pM8x: ATARI STAD compressed bitmap format
-#
-# from Oskar Schirmer <schirmer@scara.com> Feb 2, 2001
-# p M 8 5/6 xx yy zz data...
-# Atari ST STAD bitmap is always 640x400, bytewise runlength compressed.
-# bytes either run horizontally (pM85) or vertically (pM86). yy is the
-# most frequent byte, xx and zz are runlength escape codes, where xx is
-# used for runs of yy.
-#
-0	string	pM85		Atari ST STAD bitmap image data (hor)
->5	byte	0x00		(white background)
->5	byte	0xFF		(black background)
-0	string	pM86		Atari ST STAD bitmap image data (vert)
->5	byte	0x00		(white background)
->5	byte	0xFF		(black background)
-
 # XXX:
 # This is bad magic 0x5249 == 'RI' conflicts with RIFF and other
 # magic.
--- magdir/motorola.old	2003-05-25 23:29:01.000000000 +0200
+++ magdir/motorola	2007-04-02 01:40:32.000000000 +0200
@@ -30,41 +30,3 @@
 #
 # Motorola S-Records, from Gerd Truschinski <gt@freebsd.first.gmd.de>
 0   string      S0          Motorola S-Record; binary data in text format
-
-# ATARI ST relocatable PRG
-#
-# from Oskar Schirmer <schirmer@scara.com> Feb 3, 2001
-# (according to Roland Waldi, Oct 21, 1987)
-# besides the magic 0x601a, the text segment size is checked to be
-# not larger than 1 MB (which is a lot on ST).
-# The additional 0x601b distinction I took from Doug Lee's magic.
-0	belong&0xFFFFFFF0	0x601A0000	Atari ST M68K contiguous executable
->2	belong			x		(txt=%ld,
->6	belong			x		dat=%ld,
->10	belong			x		bss=%ld,
->14	belong			x		sym=%ld)
-0	belong&0xFFFFFFF0	0x601B0000	Atari ST M68K non-contig executable
->2	belong			x		(txt=%ld,
->6	belong			x		dat=%ld,
->10	belong			x		bss=%ld,
->14	belong			x		sym=%ld)
-
-# Atari ST/TT... program format (sent by Wolfram Kleff <kleff@cs.uni-bonn.de>)
-0       beshort         0x601A          Atari 68xxx executable,
->2      belong          x               text len %lu,
->6      belong          x               data len %lu,
->10     belong          x               BSS len %lu,
->14     belong          x               symboltab len %lu,
->18     belong          0
->22     belong          &0x01           fastload flag,
->22     belong          &0x02           may be loaded to alternate RAM,
->22     belong          &0x04           malloc may be from alternate RAM,
->22     belong          x               flags: 0x%lX,
->26     beshort         0               no relocation tab
->26     beshort         !0              + relocation tab
->30     string          SFX             [Self-Extracting LZH SFX archive]
->38     string          SFX             [Self-Extracting LZH SFX archive]
->44     string          ZIP!            [Self-Extracting ZIP SFX archive]
-
-0       beshort         0x0064          Atari 68xxx CPX file
->8      beshort         x               (version %04lx)
--- magdir/os2.old	2007-03-04 15:55:01.000000000 +0100
+++ magdir/os2		2007-04-01 15:25:08.000000000 +0200
@@ -45,3 +45,40 @@
 
 # OS/2 INI (this is a guess)
 0  string   \xff\xff\xff\xff\x14\0\0\0  OS/2 INI
+
+# Martin Moeller (marm.mm@t-online.de, Sun Apr 1, 2007)
+# 
+# Further Types of OS/2 Bitmaps:
+
+# Bitmap Arrays contain multiple OS/2 Bitmap Files
+0	string	BA
+# Size == sizeof(BITMAPARRAYFILEHEADER) + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) == 40?
+>2	lelong	40	OS/2 Bitmap Array containing Version 1.x Bitmap Data
+# Size == sizeof(BITMAPARRAYFILEHEADER2) + sizeof(BITMAPFILEHEADER2) + sizeof(BITMAPINFOHEADER2) == 92?
+>2	lelong	92	OS/2 Bitmap Array, containing OS/2 Bitmap Version 2.x Bitmap Data
+
+# OS/2 (Color) Icon
+0	string	CI	OS/2 Color Icon
+# OS/2 (Color) Pointer
+0	string	CP	OS/2 Color Pointer
+# OS/2 (Monochrome) Icon
+0	string	IC	OS/2 Monochrome Icon
+# OS/2 (Monochrome) Pointer
+0	string	IP	OS/2 Monochrome Pointer
+
+# OS/2 Font File Formats
+#
+# Header:
+#	Offset	Size	Member Name	Explanation
+#	  0	 4	ulIdentify	Identification Number
+#	  4	 4	  ulSize	SizeOf(Header)
+#	  8	 12	achSignature	Identifies Format of the Font File
+
+0	lelong	0xFFFFFFFF
+>4	lelong	20
+>>8	string	OS/2\ FONT	OS/2 1.x Font
+>>>28	string	x		\b, family name: %s
+>>>349	string	x		\b, font name: %s
+>>8	string	OS/2\ FONT\ 2	OS/2 2.x Font
+>>>28	string	x		\b, family name: %s
+>>>349	string	x		\b, font name: %s