1327e51cbSPeter Avalos 2327e51cbSPeter Avalos#------------------------------------------------------------------------------ 3*614728caSSascha Wildner# $File: xenix,v 1.14 2021/04/26 15:56:00 christos Exp $ 4327e51cbSPeter Avalos# xenix: file(1) magic for Microsoft Xenix 5327e51cbSPeter Avalos# 6327e51cbSPeter Avalos# "Middle model" stuff, and "Xenix 8086 relocatable or 80286 small 7327e51cbSPeter Avalos# model" lifted from "magic.xenix", with comment "derived empirically; 8327e51cbSPeter Avalos# treat as folklore until proven" 9327e51cbSPeter Avalos# 10327e51cbSPeter Avalos# "small model", "large model", "huge model" stuff lifted from XXX 11327e51cbSPeter Avalos# 12327e51cbSPeter Avalos# XXX - "x.out" collides with PDP-11 archives 13327e51cbSPeter Avalos# 14327e51cbSPeter Avalos0 string core core file (Xenix) 15c30bd091SSascha Wildner# URL: http://www.polarhome.com/service/man/?qf=86rel&tf=2&of=Xenix 16*614728caSSascha Wildner# http://fileformats.archiveteam.org/wiki/OMF 17c30bd091SSascha Wildner# Reference: http://www.azillionmonkeys.com/qed/Omfg.pdf 18c30bd091SSascha Wildner# Update: Joerg Jenderek 19c30bd091SSascha Wildner# recordtype~TranslatorHEADerRecord 20c30bd091SSascha Wildner0 byte 0x80 21*614728caSSascha Wildner# GRR: line above is too general as it catches also Extensible storage engine DataBase, 22*614728caSSascha Wildner# all lif files like forth.lif hpcc88.lif lex90b.lif ( See ./lif) 23*614728caSSascha Wildner# and all compressed DEGAS low-res bitmaps like: MUNCHIE.PC1 PIDER1.PC1 24c30bd091SSascha Wildner# skip examples like GENA.SND Switch.Snd by looking for record length maximal 1024-3 25c30bd091SSascha Wildner>1 uleshort <1022 26970935fdSSascha Wildner# skip examples like GAME.PICTURE Strange.Pic by looking for positive record length 27c30bd091SSascha Wildner>>1 uleshort >0 28970935fdSSascha Wildner# skip examples like Xtable.Data FRACTAL.GEN SHR.VIEW by looking for positive string length 29c30bd091SSascha Wildner>>>3 ubyte >0 30*614728caSSascha Wildner# skip examples like OMBRE.6 with "UUUUUU" name by looking for valid high second record type 31*614728caSSascha Wildner>>>>(1.s+3) ubyte >0x6D 8086 relocatable (Microsoft) 32c30bd091SSascha Wildner#!:mime application/octet-stream 33c30bd091SSascha Wildner!:mime application/x-object 34*614728caSSascha Wildner!:ext obj/o/a 35*614728caSSascha Wildner# T-module name often source name like "hello.c" or "jmppm32.asm" in JMPPM32.OBJ or 36*614728caSSascha Wildner# "kbhit" in KBHITS.OBJ or "CAUSEWAY_KERNAL" in CWAPI.OBJ 37c30bd091SSascha Wildner>>>>>3 pstring x \b, "%s" 38*614728caSSascha Wildner# data length probably lower 256 according to TrID obj_omf.trid.xml 39*614728caSSascha Wildner>>>>>1 uleshort x \b, 1st record data length %u 40c30bd091SSascha Wildner# checksum 41*614728caSSascha Wildner#>>>>>(3.b+4) ubyte x \b, checksum %#2.2x 42*614728caSSascha Wildner# second recordtype: 96h~LNAMES 88h~COMENT 8CH~EXTDEF 43*614728caSSascha Wildner>>>>>(1.s+3) ubyte x \b, 2nd record type %#x 44*614728caSSascha Wildner>>>>>(1.s+4) uleshort x \b, 2nd record data length %u 45327e51cbSPeter Avalos0 leshort 0xff65 x.out 46327e51cbSPeter Avalos>2 string __.SYMDEF randomized 47327e51cbSPeter Avalos>0 byte x archive 48327e51cbSPeter Avalos0 leshort 0x206 Microsoft a.out 49327e51cbSPeter Avalos>8 leshort 1 Middle model 50327e51cbSPeter Avalos>0x1e leshort &0x10 overlay 51327e51cbSPeter Avalos>0x1e leshort &0x2 separate 52327e51cbSPeter Avalos>0x1e leshort &0x4 pure 53327e51cbSPeter Avalos>0x1e leshort &0x800 segmented 54327e51cbSPeter Avalos>0x1e leshort &0x400 standalone 55327e51cbSPeter Avalos>0x1e leshort &0x8 fixed-stack 56327e51cbSPeter Avalos>0x1c byte &0x80 byte-swapped 57327e51cbSPeter Avalos>0x1c byte &0x40 word-swapped 58327e51cbSPeter Avalos>0x10 lelong >0 not-stripped 59327e51cbSPeter Avalos>0x1e leshort ^0xc000 pre-SysV 60327e51cbSPeter Avalos>0x1e leshort &0x4000 V2.3 61327e51cbSPeter Avalos>0x1e leshort &0x8000 V3.0 62327e51cbSPeter Avalos>0x1c byte &0x4 86 63327e51cbSPeter Avalos>0x1c byte &0xb 186 64327e51cbSPeter Avalos>0x1c byte &0x9 286 65327e51cbSPeter Avalos>0x1c byte &0xa 386 66327e51cbSPeter Avalos>0x1f byte <0x040 small model 67327e51cbSPeter Avalos>0x1f byte =0x048 large model 68327e51cbSPeter Avalos>0x1f byte =0x049 huge model 69327e51cbSPeter Avalos>0x1e leshort &0x1 executable 70327e51cbSPeter Avalos>0x1e leshort ^0x1 object file 71327e51cbSPeter Avalos>0x1e leshort &0x40 Large Text 72327e51cbSPeter Avalos>0x1e leshort &0x20 Large Data 73327e51cbSPeter Avalos>0x1e leshort &0x120 Huge Objects Enabled 74327e51cbSPeter Avalos>0x10 lelong >0 not stripped 75327e51cbSPeter Avalos 76327e51cbSPeter Avalos0 leshort 0x140 old Microsoft 8086 x.out 77327e51cbSPeter Avalos>0x3 byte &0x4 separate 78327e51cbSPeter Avalos>0x3 byte &0x2 pure 79327e51cbSPeter Avalos>0 byte &0x1 executable 80327e51cbSPeter Avalos>0 byte ^0x1 relocatable 81327e51cbSPeter Avalos>0x14 lelong >0 not stripped 82327e51cbSPeter Avalos 83327e51cbSPeter Avalos0 lelong 0x206 b.out 84327e51cbSPeter Avalos>0x1e leshort &0x10 overlay 85327e51cbSPeter Avalos>0x1e leshort &0x2 separate 86327e51cbSPeter Avalos>0x1e leshort &0x4 pure 87327e51cbSPeter Avalos>0x1e leshort &0x800 segmented 88327e51cbSPeter Avalos>0x1e leshort &0x400 standalone 89327e51cbSPeter Avalos>0x1e leshort &0x1 executable 90327e51cbSPeter Avalos>0x1e leshort ^0x1 object file 91327e51cbSPeter Avalos>0x1e leshort &0x4000 V2.3 92327e51cbSPeter Avalos>0x1e leshort &0x8000 V3.0 93327e51cbSPeter Avalos>0x1c byte &0x4 86 94327e51cbSPeter Avalos>0x1c byte &0xb 186 95327e51cbSPeter Avalos>0x1c byte &0x9 286 96327e51cbSPeter Avalos>0x1c byte &0x29 286 97327e51cbSPeter Avalos>0x1c byte &0xa 386 98327e51cbSPeter Avalos>0x1e leshort &0x4 Large Text 99327e51cbSPeter Avalos>0x1e leshort &0x2 Large Data 100327e51cbSPeter Avalos>0x1e leshort &0x102 Huge Objects Enabled 101327e51cbSPeter Avalos 102327e51cbSPeter Avalos0 leshort 0x580 XENIX 8086 relocatable or 80286 small model 103