xref: /freebsd/contrib/file/magic/Magdir/xenix (revision c7d813a93eeb447470734c9bc0c140d90a54c271)
1
2#------------------------------------------------------------------------------
3# $File: xenix,v 1.10 2016/04/19 18:14:19 christos Exp $
4# xenix:  file(1) magic for Microsoft Xenix
5#
6# "Middle model" stuff, and "Xenix 8086 relocatable or 80286 small
7# model" lifted from "magic.xenix", with comment "derived empirically;
8# treat as folklore until proven"
9#
10# "small model", "large model", "huge model" stuff lifted from XXX
11#
12# XXX - "x.out" collides with PDP-11 archives
13#
140	string		core		core file (Xenix)
15# URL: http://www.polarhome.com/service/man/?qf=86rel&tf=2&of=Xenix
16# Reference: http://www.azillionmonkeys.com/qed/Omfg.pdf
17# Update: Joerg Jenderek
18# recordtype~TranslatorHEADerRecord
190	byte		0x80
20# GRR: line above is too general as it catches also Extensible storage engine DataBase
21# skip examples like GENA.SND Switch.Snd by looking for record length maximal 1024-3
22>1	uleshort	<1022
23# skip examples like GAME.PICTURE Strange.Pic by looking for positiv record length
24>>1	uleshort	>0
25# skip examples like Xtable.Data FRACTAL.GEN SHR.VIEW by looking for positiv string length
26>>>3	ubyte		>0
27# skip examples like OMBRE.6 with "UUUUUU" by looking for filename like "hello.c"
28>>>>4	regex	[a-zA-Z_/]{1,8}[.]	8086 relocatable (Microsoft)
29#!:mime	application/octet-stream
30!:mime	application/x-object
31!:ext	o/a
32>>>>>3	pstring		x		\b, "%s"
33# checksum
34#>>>>>(3.b+4)	ubyte	x		\b, checksum 0x%2.2x
350	leshort		0xff65		x.out
36>2	string		__.SYMDEF	 randomized
37>0	byte		x		archive
380	leshort		0x206		Microsoft a.out
39>8	leshort		1		Middle model
40>0x1e	leshort		&0x10		overlay
41>0x1e	leshort		&0x2		separate
42>0x1e	leshort		&0x4		pure
43>0x1e	leshort		&0x800		segmented
44>0x1e	leshort		&0x400		standalone
45>0x1e	leshort		&0x8		fixed-stack
46>0x1c	byte		&0x80		byte-swapped
47>0x1c	byte		&0x40		word-swapped
48>0x10	lelong		>0		not-stripped
49>0x1e	leshort		^0xc000		pre-SysV
50>0x1e	leshort		&0x4000		V2.3
51>0x1e	leshort		&0x8000		V3.0
52>0x1c	byte		&0x4		86
53>0x1c	byte		&0xb		186
54>0x1c	byte		&0x9		286
55>0x1c	byte		&0xa		386
56>0x1f	byte		<0x040		small model
57>0x1f	byte		=0x048		large model
58>0x1f	byte		=0x049		huge model
59>0x1e	leshort		&0x1		executable
60>0x1e	leshort		^0x1		object file
61>0x1e	leshort		&0x40		Large Text
62>0x1e	leshort		&0x20		Large Data
63>0x1e	leshort		&0x120		Huge Objects Enabled
64>0x10	lelong		>0		not stripped
65
660	leshort		0x140		old Microsoft 8086 x.out
67>0x3	byte		&0x4		separate
68>0x3	byte		&0x2		pure
69>0	byte		&0x1		executable
70>0	byte		^0x1		relocatable
71>0x14	lelong		>0		not stripped
72
730	lelong		0x206		b.out
74>0x1e	leshort		&0x10		overlay
75>0x1e	leshort		&0x2		separate
76>0x1e	leshort		&0x4		pure
77>0x1e	leshort		&0x800		segmented
78>0x1e	leshort		&0x400		standalone
79>0x1e	leshort		&0x1		executable
80>0x1e	leshort		^0x1		object file
81>0x1e	leshort		&0x4000		V2.3
82>0x1e	leshort		&0x8000		V3.0
83>0x1c	byte		&0x4		86
84>0x1c	byte		&0xb		186
85>0x1c	byte		&0x9		286
86>0x1c	byte		&0x29		286
87>0x1c	byte		&0xa		386
88>0x1e	leshort		&0x4		Large Text
89>0x1e	leshort		&0x2		Large Data
90>0x1e	leshort		&0x102		Huge Objects Enabled
91
920	leshort		0x580		XENIX 8086 relocatable or 80286 small model
93