| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | 
#------------------------------------------------------------------------------# $File: xenix,v 1.15 2022/10/19 20:15:16 christos Exp $# xenix:  file(1) magic for Microsoft Xenix## "Middle model" stuff, and "Xenix 8086 relocatable or 80286 small# model" lifted from "magic.xenix", with comment "derived empirically;# treat as folklore until proven"## "small model", "large model", "huge model" stuff lifted from XXX## XXX - "x.out" collides with PDP-11 archives#0	string		core		core file (Xenix)# URL: http://www.polarhome.com/service/man/?qf=86rel&tf=2&of=Xenix#      http://fileformats.archiveteam.org/wiki/OMF# Reference: http://www.azillionmonkeys.com/qed/Omfg.pdf# Update: Joerg Jenderek# recordtype~TranslatorHEADerRecord0	byte		0x80# GRR: line above is too general as it catches also Extensible storage engine DataBase,# all lif files like forth.lif hpcc88.lif lex90b.lif ( See ./lif)# and all compressed DEGAS low-res bitmaps like: MUNCHIE.PC1 PIDER1.PC1# skip examples like GENA.SND Switch.Snd by looking for record length maximal 1024-3>1	uleshort	<1022# skip examples like GAME.PICTURE Strange.Pic by looking for positive record length>>1	uleshort	>0# skip examples like Xtable.Data FRACTAL.GEN SHR.VIEW by looking for positive string length>>>3	ubyte		>0# skip examples like OMBRE.6 with "UUUUUU" name by looking for valid high second record type>>>>(1.s+3)	ubyte	>0x6D# skip few Atari DEGAS bitmap TPDEMO.PC2 RECIPE.PC2 with invalid "high" second record type FEh FFh>>>>>(1.s+3)	ubyte	<0xF2	8086 relocatable (Microsoft)#!:mime	application/octet-stream!:mime	application/x-object!:ext	obj/o/a# T-module name often source name like "hello.c" or "jmppm32.asm" in JMPPM32.OBJ or# "kbhit" in KBHITS.OBJ or "CAUSEWAY_KERNAL" in CWAPI.OBJ>>>>>>3	pstring		x		\b, "%s"# data length probably lower 256 according to TrID obj_omf.trid.xml>>>>>>1	uleshort	x		\b, 1st record data length %u# checksum#>>>>>>(3.b+4)	ubyte	x		\b, checksum %#2.2x# second recordtype: 96h~LNAMES 88h~COMENT 8CH~EXTDEF# highest F1h~Library End Record>>>>>>(1.s+3)	ubyte	x		\b, 2nd record type %#x>>>>>>(1.s+4)	uleshort x		\b, 2nd record data length %u0	leshort		0xff65		x.out>2	string		__.SYMDEF	 randomized>0	byte		x		archive0	leshort		0x206		Microsoft a.out>8	leshort		1		Middle model>0x1e	leshort		&0x10		overlay>0x1e	leshort		&0x2		separate>0x1e	leshort		&0x4		pure>0x1e	leshort		&0x800		segmented>0x1e	leshort		&0x400		standalone>0x1e	leshort		&0x8		fixed-stack>0x1c	byte		&0x80		byte-swapped>0x1c	byte		&0x40		word-swapped>0x10	lelong		>0		not-stripped>0x1e	leshort		^0xc000		pre-SysV>0x1e	leshort		&0x4000		V2.3>0x1e	leshort		&0x8000		V3.0>0x1c	byte		&0x4		86>0x1c	byte		&0xb		186>0x1c	byte		&0x9		286>0x1c	byte		&0xa		386>0x1f	byte		<0x040		small model>0x1f	byte		=0x048		large model>0x1f	byte		=0x049		huge model>0x1e	leshort		&0x1		executable>0x1e	leshort		^0x1		object file>0x1e	leshort		&0x40		Large Text>0x1e	leshort		&0x20		Large Data>0x1e	leshort		&0x120		Huge Objects Enabled>0x10	lelong		>0		not stripped0	leshort		0x140		old Microsoft 8086 x.out>0x3	byte		&0x4		separate>0x3	byte		&0x2		pure>0	byte		&0x1		executable>0	byte		^0x1		relocatable>0x14	lelong		>0		not stripped0	lelong		0x206		b.out>0x1e	leshort		&0x10		overlay>0x1e	leshort		&0x2		separate>0x1e	leshort		&0x4		pure>0x1e	leshort		&0x800		segmented>0x1e	leshort		&0x400		standalone>0x1e	leshort		&0x1		executable>0x1e	leshort		^0x1		object file>0x1e	leshort		&0x4000		V2.3>0x1e	leshort		&0x8000		V3.0>0x1c	byte		&0x4		86>0x1c	byte		&0xb		186>0x1c	byte		&0x9		286>0x1c	byte		&0x29		286>0x1c	byte		&0xa		386>0x1e	leshort		&0x4		Large Text>0x1e	leshort		&0x2		Large Data>0x1e	leshort		&0x102		Huge Objects Enabled0	leshort		0x580		XENIX 8086 relocatable or 80286 small model# GRR: line above is too general as it catches also all 8086 relocatable (Microsoft) with 1st record data length 5 C0M.OBJ C0T.OBJ C0S.OBJ
 |