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