1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
|
#------------------------------------------------------------------------------
# $File: os2,v 1.14 2022/03/21 21:25:50 christos Exp $
# os2: file(1) magic for OS/2 files
#
# Provided 1998/08/22 by
# David Mediavilla <davidme.news@REMOVEIFNOTSPAMusa.net>
1 search/100 InternetShortcut MS Windows 95 Internet shortcut text
!:mime application/x-mswinurl
!:ext url
>17 search/100 URL= (URL=<
>>&0 string x \b%s>)
# OS/2 URL objects
# Provided 1998/08/22 by
# David Mediavilla <davidme.news@REMOVEIFNOTSPAMusa.net>
#0 string http: OS/2 URL object text
#>5 string >\ (WWW) <http:%s>
#0 string mailto: OS/2 URL object text
#>7 string >\ (email) <%s>
#0 string news: OS/2 URL object text
#>5 string >\ (Usenet) <%s>
#0 string ftp: OS/2 URL object text
#>4 string >\ (FTP) <ftp:%s>
#0 string file: OS/2 URL object text
#>5 string >\ (Local file) <%s>
# >>>>> OS/2 INF/HLP <<<<< (source: Daniel Dissett ddissett@netcom.com)
# URL: http://fileformats.archiveteam.org/wiki/INF/HLP_(OS/2)
# Reference: http://www.edm2.com/0308/inf.html
# Carl Hauser (chauser.parc@xerox.com) and
# Marcus Groeber (marcusg@ph-cip.uni-koeln.de)
# list the following header format in inf02a.doc:
#
# int16 ID; // ID magic word (5348h = "HS")
# int8 unknown1; // unknown purpose, could be third letter of ID
# int8 flags; // probably a flag word...
# // bit 0: set if INF style file
# // bit 4: set if HLP style file
# // patching this byte allows reading HLP files
# // using the VIEW command, while help files
# // seem to work with INF settings here as well.
# int16 hdrsize; // total size of header
# int16 unknown2; // unknown purpose
#
0 string HSP\x01\x9b\x00 OS/2 INF
!:mime application/x-os2-inf
!:ext inf
>107 string >0 (%s)
0 string HSP\x10\x9b\x00 OS/2 HLP
!:mime application/x-os2-hlp
!:ext hlp
>107 string >0 (%s)
# From: Joerg Jenderek
# URL: http://fileformats.archiveteam.org/wiki/MSG_(OS/2)
# Reference: https://github.com/OS2World/UTIL-SYSTEM-MKMSGF/blob/master/mkmsgf.h
# Note: created by MKMSGF.EXE. Text source can be recreated by E_MSGF
# example like OS001H.MSG
0 string \xffMKMSGF\0 OS/2 help message
!:mime application/x-os2-msg
!:ext msg
# identifier[3] like: DOS NET REX SYS ...
>8 string x '%.3s'
# msgnumber: number of messages
>11 uleshort x \b, %u messages
# firstmsgnumber; number of the first message like: some times 0 often 1 169 1000 3502
>13 uleshort >1 \b, 1st number %u
# offset16bit; 1~Index table has 16-bit offsets (files<64k) 0~Index table has 32-bit offsets
>15 ubyte =0 \b, 32-bit
#>15 ubyte =1 \b, 16-bit
# version; file version: 2~new 0~old
>16 uleshort !2 \b, version %u
# indextaboffset; offset of index table: 1F~after header 0~no index table for version 0?
>18 uleshort >0
>>18 uleshort !0x1f \b, at %#x index
# 32-bit offset
>>15 ubyte =0
# offset with message table
>>>(18.s) ulelong x \b, at %#x
# 1st message
# http://www.os2museum.com/files/docs/os210ptk/os2-1.0-ptk-tools-1988.pdf
# message type: E~Error H~Help I~Information P~Prompt W~Warning ?
>>>>(&-4.l) ubyte x %c-type
>>>>>&0 string x %s
# 16-bit offset
>>15 ubyte =1
# msgnum; message number
>>>(18.s) uleshort x \b, number %u
# msgindex; offset of message from begin of file
>>>(18.s+2) uleshort x at %#x
# message type E H I P W ?
>>>>(&-2.s) ubyte x %c-type
# skip newline carriage return
>>>>>&0 ubeshort =0x0D0a
>>>>>>&0 string x %s
>>>>>&0 ubeshort !0x0D0a
>>>>>>&-2 string x %s
# for version 0 index table apparently at offset 1F
>16 uleshort 0
>>15 ubyte 1
# 1st message 16-bit
>>>0x1F uleshort x \b, at %#x
# message type: E~Error H~Help I~Information P~Prompt W~Warning ?
>>>>(0x1F.s) ubyte x %c-type
>>>>>&0 string x %s
# 2nd message 16-bit
>>>0x21 uleshort x \b, at %#x
>>>>(0x21.s) ubyte x %c-type
>>>>>&0 string x %s
# 3rd message 16-bit
>>>0x23 uleshort x \b, at %#x
>>>>(0x23.s) ubyte x %c-type
>>>>>&0 string x %s
# version 0 32-bit
>>15 ubyte 0
# 1st message 32-bit
>>>0x1f ulelong x \b, at %#x
>>>>(0x1F.l) ubyte x %c-type
>>>>>&0 string x %s
# 2nd message 32-bit
>>>0x23 ulelong x \b, at %#x
>>>>(0x23.l) ubyte x %c-type
>>>>>&0 string x %s
# 3rd message 32-bit
>>>0x27 ulelong x \b, AT %#x
>>>>(0x27.l) ubyte x %c-type
>>>>>&0 string x %s
# countryinfo; offset of country info block: 0 for version 0
>20 uleshort !0 \b, at %#x countryinfo
# nextcoutryinfo
>>22 uleshort >0 \b, at %#x next
# reserved[5]; Must be 0
>>25 ulelong !0 \b, RESERVED %#x
>>(20.s) use os2-msg-info
# display country info block of MKMSGF message file
0 name os2-msg-info
# bytesperchar; bytes per char: 1~SBCS 2~DBCS
>0 ubyte >1 \b, %u bytes/char
# reserved; Not known
>1 uleshort !0 \b, reserved %#x
# langfamilyID; language family ID like: 0~? 1~Arabic ... 7~German ... 9~English ... 34~Slovene
>3 uleshort >0 \b, language %u
# langversionID; like: 7_1~German 7_2~Swiss German 12_1~French 12_3~Canadian French
>>5 uleshort x \b_%u
# langfamilyID too high. This should not happen
>3 uleshort >34 (invalid language)
# codepagesnumber; number of codepages like: 1 2 ... 16
>7 uleshort x \b, %u code page
# plural s
>7 uleshort >1 \bs
# too many number of codepages. This should not happen
>7 uleshort >16 (Too many)
# codepages[16]; codepages list like 437 850 ...
>7 uleshort <17
# 1st code page
>>9 uleshort >0 %u
# possible 2nd code page number
>>>7 uleshort >1
>>>>11 uleshort x %u
# filename[260]; name of file like: dbaseos2.msg dde4c01e.msg os2ldr.mgr xdfh.msg ...
>41 string x \b, %s
# OS/2 INI (this is a guess)
0 string \xff\xff\xff\xff\x14\0\0\0 OS/2 INI
!:mime application/x-os2-ini
!:ext ini
# From: Joerg Jenderek
# URL: http://warpin.netlabs.org/
# Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-wpi.trid.xml
# Note: called by TrID "WarpIN Installer"
# probably magic at the beginning
0 ubelong =0x770402BE WarpIN Installer
#>4 ubelong =0x03000000
#!:mime application/octet-stream
!:mime application/x-os2-wpi
!:ext wpi
# creator program name like: "reserved" or "WIC x.y.z"
>0x106 string x \b, created by %s
# name like: "reserved" or "OS/2 Netlabs"
>0x146 string x \b, '%s'
# name like: "N/A" "http://warpin.netlabs.org"
>0x186 string x \b, URL %s
|