Home | History | Annotate | Line # | Download | only in magdir
intel revision 1.1.1.13
      1       1.1  christos 
      2       1.1  christos #------------------------------------------------------------------------------
      3  1.1.1.13  christos # $File: intel,v 1.24 2025/01/30 19:02:08 christos Exp $
      4       1.1  christos # intel:  file(1) magic for x86 Unix
      5       1.1  christos #
      6       1.1  christos # Various flavors of x86 UNIX executable/object (other than Xenix, which
      7       1.1  christos # is in "microsoft").  DOS is in "msdos"; the ambitious soul can do
      8       1.1  christos # Windows as well.
      9       1.1  christos #
     10       1.1  christos # Windows NT belongs elsewhere, as you need x86 and MIPS and Alpha and
     11       1.1  christos # whatever comes next (HP-PA Hummingbird?).  OS/2 may also go elsewhere
     12       1.1  christos # as well, if, as, and when IBM makes it portable.
     13       1.1  christos #
     14       1.1  christos # The `versions' should be un-commented if they work for you.
     15       1.1  christos # (Was the problem just one of endianness?)
     16       1.1  christos #
     17       1.1  christos 0	leshort		0502		basic-16 executable
     18       1.1  christos >12	lelong		>0		not stripped
     19   1.1.1.4  christos #>22	leshort		>0		- version %d
     20       1.1  christos 0	leshort		0503		basic-16 executable (TV)
     21       1.1  christos >12	lelong		>0		not stripped
     22   1.1.1.4  christos #>22	leshort		>0		- version %d
     23       1.1  christos 0	leshort		0510		x86 executable
     24       1.1  christos >12	lelong		>0		not stripped
     25       1.1  christos 0	leshort		0511		x86 executable (TV)
     26       1.1  christos >12	lelong		>0		not stripped
     27       1.1  christos 0	leshort		=0512		iAPX 286 executable small model (COFF)
     28       1.1  christos >12	lelong		>0		not stripped
     29   1.1.1.4  christos #>22	leshort		>0		- version %d
     30       1.1  christos 0	leshort		=0522		iAPX 286 executable large model (COFF)
     31       1.1  christos >12	lelong		>0		not stripped
     32   1.1.1.4  christos #>22	leshort		>0		- version %d
     33   1.1.1.5  christos # updated by Joerg Jenderek at Oct 2015
     34   1.1.1.5  christos # https://de.wikipedia.org/wiki/Common_Object_File_Format
     35   1.1.1.5  christos # http://www.delorie.com/djgpp/doc/coff/filhdr.html
     36   1.1.1.5  christos # ./msdos (version 5.25) labeled the next entry as "MS Windows COFF Intel 80386 object file"
     37   1.1.1.5  christos # ./intel (version 5.25) label labeled the next entry as "80386 COFF executable"
     38       1.1  christos # SGI labeled the next entry as "iAPX 386 executable" --Dan Quinlan
     39   1.1.1.6  christos 0	leshort		=0514
     40  1.1.1.10  christos # use subroutine to display name+flags+variables for common object formatted files
     41   1.1.1.5  christos >0	use				display-coff
     42   1.1.1.5  christos #>12	lelong		>0		not stripped
     43   1.1.1.5  christos # no hint found, that at offset 22 is version
     44   1.1.1.5  christos #>22	leshort		>0		- version %d
     45   1.1.1.8  christos 0	leshort		0x0200
     46  1.1.1.11  christos # no F_EXEC flag bit implies Intel ia64 COFF object file without optional header
     47  1.1.1.11  christos >18	leshort		^0x0002
     48  1.1.1.11  christos # skip some DEGAS high-res uncompressed bitmap *.pi3 handled by ./images like
     49  1.1.1.11  christos # GEMINI03.PI3 MODEM2.PI3 POWERFIX.PI3 sigirl1.pi3 vanna5.pi3
     50  1.1.1.11  christos # by test for valid starting character (often point 0x2E) of 1st section name
     51  1.1.1.11  christos >>20	ubyte		>0x1F
     52  1.1.1.11  christos >>>0	use				display-coff
     53  1.1.1.11  christos # F_EXEC flag bit implies Intel ia64 COFF executable
     54  1.1.1.11  christos >18	leshort		&0x0002
     55  1.1.1.11  christos >>0	use				display-coff
     56   1.1.1.8  christos 0	leshort		0x8664
     57   1.1.1.8  christos >0	use				display-coff
     58       1.1  christos 
     59       1.1  christos # rom: file(1) magic for BIOS ROM Extensions found in intel machines
     60       1.1  christos #      mapped into memory between 0xC0000 and 0xFFFFF
     61   1.1.1.7  christos # From: Alex Myczko <alex (a] aiei.ch>
     62   1.1.1.5  christos # updated by Joerg Jenderek
     63   1.1.1.5  christos # https://en.wikipedia.org/wiki/Option_ROM
     64  1.1.1.11  christos # URL:		http://fileformats.archiveteam.org/wiki/BIOS
     65  1.1.1.11  christos # Reference:	http://www.lejabeach.com/sisubb/BIOS_Disassembly_Ninjutsu_Uncovered.pdf
     66  1.1.1.11  christos 0	beshort		0x55AA
     67  1.1.1.11  christos # skip misidentified raspberry pi pieeprom-*.bin by check for
     68  1.1.1.11  christos # unlikely high ROM size (0xF0*512=240*512) and not observed start instruction 0x0F 
     69  1.1.1.11  christos >2	ubeshort	!0xF00F
     70  1.1.1.11  christos # skip 2 byte sized eof.bin with start magic 
     71  1.1.1.11  christos >>0	use		rom-x86
     72  1.1.1.11  christos 0	name		rom-x86
     73  1.1.1.11  christos >0	beshort		x		BIOS (ia32) ROM Ext.
     74  1.1.1.11  christos #!:mime	application/octet-stream
     75  1.1.1.11  christos !:mime	application/x-ibm-rom
     76   1.1.1.5  christos !:ext	rom/bin
     77  1.1.1.11  christos ################################################################################
     78  1.1.1.11  christos # not Plug aNd Play ($PnP) like 00000000 (ide_xtp.bin kvmvapic.bin V7VGA.ROM) 000000fc (MCT-VGA.bin)
     79  1.1.1.11  christos # 55aaf00f (pieeprom-*.bin) 55aa40e9 (Trm3x5.bin) 24506f4f (sgabios-bin.rom)
     80  1.1.1.11  christos # 55aa4be9 (vgabios-stdvga.rom vgabios-cirrus-bin.rom vgabios-vmware-bin.rom)
     81  1.1.1.11  christos >(26.s)	ubelong		!0x24506e50
     82  1.1.1.11  christos #>(26.s)	ubelong		!0x24506e50	NOT PNP=%8.8x
     83  1.1.1.11  christos # also not PCI (PCIR) implies "old" ISA cards or foo like: 8a168404 (MCT-VGA.bin)
     84  1.1.1.11  christos # 55aaf00f (pieeprom*.bin)
     85  1.1.1.11  christos >>(24.s)	ubelong	!0x50434952
     86  1.1.1.11  christos #>>(24.s)	ubelong	!0x50434952	ISA CARD=%8.8x
     87  1.1.1.11  christos # "old" identification strings used in file version 5.41 and earlier
     88  1.1.1.11  christos # probably an USB controller
     89  1.1.1.11  christos >>>5	string		USB		USB
     90  1.1.1.11  christos # probably	https://en.wikipedia.org/wiki/Preboot_Execution_Environment
     91  1.1.1.11  christos >>>7	string		LDR		UNDI image
     92  1.1.1.11  christos # probably another Adaptec SCSI controller
     93  1.1.1.11  christos >>>26	string		Adaptec		Adaptec
     94  1.1.1.11  christos # http://minuszerodegrees.net/rom/bin/adaptec_aha1542cp_bios_908501-00.bin
     95  1.1.1.11  christos # already done by PNP variant
     96  1.1.1.11  christos #>>>28	string		Adaptec		Adaptec
     97  1.1.1.11  christos # probably Promise SCSI controller
     98  1.1.1.11  christos >>>42	string		PROMISE		Promise
     99  1.1.1.11  christos # old test for IBM compatible Video cards; INTERNAL FACTS WHY IS THIS WORKING?
    100       1.1  christos >30      string          IBM          IBM comp. Video
    101  1.1.1.11  christos # display exact text for IBM compatible Video cards with longer text
    102  1.1.1.11  christos >>33	ubyte		!0
    103  1.1.1.11  christos >>>30	string		x		"%s"
    104  1.1.1.11  christos # http://minuszerodegrees.net/rom/bin/unknown/MCT-VGA-16%20-%20TDVGA%203588%20BIOS%20Version%20V1.04A.zip
    105  1.1.1.11  christos # "IBM COMPATIBLETDVGA 3588 BIOS Version V1.04A2+"	"MCT-VGA-16 - TDVGA 3588 BIOS Version V1.04A.bin" 
    106  1.1.1.11  christos # "IBM VGA Compatible\001"				NVidia44.bin
    107  1.1.1.11  christos # "IBM EGA ROM Video Seven BIOS Code, Version 1.04"	V7VGA.ROM
    108  1.1.1.11  christos # "IBM"							vgabios-stdvga.rom
    109  1.1.1.11  christos # "IBM"							vgabios-vmware-bin.rom:
    110  1.1.1.11  christos # "IBM"							vgabios-cirrus-bin.rom
    111  1.1.1.11  christos # "IBM"							vgabios-virtio-bin.rom
    112  1.1.1.11  christos ################################################################################
    113  1.1.1.11  christos # ROM size in 512B blocks must be interpreted as unsigned for ROM of network cards
    114  1.1.1.11  christos # like: efi-eepro100.rom efi-rtl8139.rom pxe-e1000.rom
    115  1.1.1.11  christos >2       ubyte            x            (%u*512)
    116  1.1.1.11  christos # file name		file size	calculated size	remark
    117  1.1.1.11  christos # eof.bin		2		-		with start magic nothing is shown here
    118  1.1.1.11  christos # orchid.bin		188		0	=0*512	on window 95 CD in Drivers\audio\orchid3d
    119  1.1.1.11  christos # multiboot.bin		1024		1024	=2*512	QEMU emulator
    120  1.1.1.11  christos # loader1.bin		512		2048	=4*512
    121  1.1.1.11  christos # ide_xtp.bin		8192		8192	=16*512
    122  1.1.1.11  christos # kvmvapic.bin		9216		9216	=18*512
    123  1.1.1.11  christos # V7VGA.ROM		18832		16384	=32*512
    124  1.1.1.11  christos # adaptec1542.bin	32768		16384	=32*512
    125  1.1.1.11  christos # MCT-VGA.bin		32768		24576	=48*512
    126  1.1.1.11  christos # 2975BIOS.BIN		32768		32256	=63*512
    127  1.1.1.11  christos # efi-e1000.rom		196608		64000	=125*512
    128  1.1.1.11  christos # efi-rtl8139.rom	176640		66048	=129*512
    129  1.1.1.11  christos # pieeprom*.bin		524288		122880	=240*512
    130  1.1.1.11  christos ################################################################################
    131  1.1.1.11  christos # initialization vector with executable code; often near JuMP instruction E9 yy zz
    132  1.1.1.11  christos >3	ubyte			=0xE9	jmp
    133  1.1.1.11  christos # jmp offset like: 008fh 0093h 009fh 00afh 0143h 3ad7h 5417h 54ech 594dh 895fh 
    134  1.1.1.11  christos >>4	uleshort		x	%#4.4x
    135  1.1.1.11  christos # for initialization vector samples without 3 byte jump instruction
    136  1.1.1.11  christos >3	ubyte			!0xE9	instruction
    137  1.1.1.11  christos #	eb4b3734h	NVidia44.bin
    138  1.1.1.11  christos #	00003234h	V7VGA.ROM
    139  1.1.1.11  christos #	060e0731h	kvmvapic.bin
    140  1.1.1.11  christos #	cb000000h	linuxboot-bin.rom
    141  1.1.1.11  christos #	e80d0fcbh	PXE-Intel.rom
    142  1.1.1.11  christos #	b8004875h	orchid.bin
    143  1.1.1.11  christos >>3	ubelong			x	%#8.8x
    144  1.1.1.12  christos # For misidentified raspberry pi pieeprom-*.bin like: 0xf00f
    145  1.1.1.11  christos #>2	ubeshort		x	\b, AT 2 %#4.4x
    146  1.1.1.11  christos ################################################################################
    147  1.1.1.11  christos #		new sections for BIOS (ia32) ROM Extension
    148  1.1.1.11  christos # 4 bytes ASCII Signature "$PnP" for Plug aNd Play expansion header
    149  1.1.1.11  christos >(26.s)	string		=$PnP		\b;
    150  1.1.1.11  christos #>(26.s)	string		=$PnP		FOUND $PnP
    151  1.1.1.11  christos # at 1Ah possible offset to expansion header structure; new for Plug aNd Play
    152  1.1.1.11  christos >>26		uleshort	x	at %#x PNP
    153  1.1.1.11  christos # Plug and Play vendor+device ID like: 0 0x000f1000 (2975BIOS.BIN) 0x31121095 (4243.bin) 0x04904215 (adaptec1542.bin)
    154  1.1.1.11  christos #>>(26.s+0x0A)	ulelong		!0	NOT-nullID=%8.8x
    155  1.1.1.11  christos >>(26.s+0x0A)	uleshort	!0
    156  1.1.1.11  christos # show PnP Vendor identification in human readable text form instead of numeric
    157  1.1.1.11  christos # For adaptec_ava1515_bios_585201-00.bin reverted endian! BUT IS THIS ALWAYS TRUE?
    158  1.1.1.11  christos >>>(26.s+0x0C)	use		\^PCI-vendor
    159  1.1.1.11  christos >>>(26.s+0x0A)	ubeshort	x	device=%#4.4x
    160  1.1.1.11  christos # 3 byte Device type code; probably the same meaning as in PCI section?
    161  1.1.1.11  christos # OK for	storage controller SCSI		(2975BIOS.BIN adaptec1542.bin)
    162  1.1.1.11  christos # and		network controller ethernet	(efi-e1000.rom efi-rtl8139.rom)
    163  1.1.1.11  christos >>(26.s+0x12)	use		PCI-class
    164  1.1.1.11  christos # structure revision like: 01h
    165  1.1.1.11  christos >>(26.s+4)	ubyte		!1	\b, revision %u
    166  1.1.1.11  christos # PnP Header structure length in multiple of 16 bytes like: 2
    167  1.1.1.11  christos >>(26.s+5)	uleshort	!2	\b, length %u*16
    168  1.1.1.11  christos # offset to next header; 0 if none
    169  1.1.1.11  christos >>(26.s+7)	uleshort	!0	\b, at %#x next header
    170  1.1.1.11  christos # reserved byte; seems to be zero
    171  1.1.1.11  christos >>(26.s+8)	ubyte		!0	\b, reserved %#x
    172  1.1.1.11  christos # 8-bit checksum for this header; calculated and patched by patch2pnprom
    173  1.1.1.11  christos >>(26.s+9)	ubyte		!0	\b, CRC %#x
    174  1.1.1.11  christos # pointer to optional manufacturer string; like: 0 (4243.bin) 59h 5ch 60h c7h 14eh 27ch 296h 324h 3662h
    175  1.1.1.11  christos >>(26.s+0x0E)	uleshort	>0	\b, at %#x
    176  1.1.1.11  christos >>>(26.s+0x0C)	uleshort	x
    177  1.1.1.11  christos # manufacturer ASCII-Z string like "http://ipxe.org" "Plop - Elmar Hanlhofer www.plop.at" "QEMU"
    178  1.1.1.11  christos >>>>(&0.s)	string		x	"%s"
    179  1.1.1.11  christos # pointer to optional product string; like: 0 (2975BIOS.BIN) 6ch 70h 7ch d9h 160h 281h 29bh 329h
    180  1.1.1.11  christos >>(26.s+0x10)	uleshort	>0	\b, at %#x
    181  1.1.1.11  christos >>>(26.s+0x0E)	uleshort	x
    182  1.1.1.11  christos # often human readable product ASCII-Z string like "iPXE" "Plop Boot Manager" 
    183  1.1.1.11  christos # "multiboot loader" "Intel UNDI, PXE-2.0 (build 082)"
    184  1.1.1.11  christos >>>>(&0.s)	string		x	"%s"
    185  1.1.1.11  christos # PnP Device indicators; contains bits that identify the device as being capable of bootable
    186  1.1.1.11  christos #>>(26.s+0x15)	ubyte		x	\b, INDICATORS %#x
    187  1.1.1.11  christos # device is a display device
    188  1.1.1.11  christos >>(26.s+0x15)	ubyte		&0x01	\b, display
    189  1.1.1.11  christos # device is an input device
    190  1.1.1.11  christos >>(26.s+0x15)	ubyte		&0x02	\b, input
    191  1.1.1.11  christos # device is an IPL device
    192  1.1.1.11  christos >>(26.s+0x15)	ubyte		&0x04	\b, IPL
    193  1.1.1.11  christos #>>(26.s+0x15)	ubyte		&0x08	reserved
    194  1.1.1.11  christos # ROM is only required if this device is selected as a boot device
    195  1.1.1.11  christos >>(26.s+0x15)	ubyte		&0x10	\b, bootable
    196  1.1.1.11  christos # indicates ROM is read cacheable
    197  1.1.1.11  christos >>(26.s+0x15)	ubyte		&0x20	\b, cacheable
    198  1.1.1.11  christos # ROM may be shadowed in RAM
    199  1.1.1.11  christos >>(26.s+0x15)	ubyte		&0x40	\b, shadowable
    200  1.1.1.11  christos # ROM supports the device driver initialization model
    201  1.1.1.11  christos >>(26.s+0x15)	ubyte		&0x80	\b, InitialModel
    202  1.1.1.11  christos # boot connection vector; an offset to a routine that hook into INT 9h, INT 10h, or INT 13h
    203  1.1.1.11  christos # 0 means disabled 0x0429 (4650_sr5.bin) 0x0072 (adaptec1542.bin)
    204  1.1.1.11  christos >>(26.s+0x16)	uleshort	!0	\b, boot vector offset %#x
    205  1.1.1.11  christos # disconnect vector; offset to routine that do cleanup from an unsuccessful boot attempt
    206  1.1.1.11  christos >>(26.s+0x18)	uleshort	!0	\b, disconnect offset %#x
    207  1.1.1.11  christos # bootstrap entry point/vector (BEV); offset to a routine (like RPL) that hook into INT 19h
    208  1.1.1.11  christos # 0 means disabled 0x3c (multiboot.bin) 0x358 (efi-rtl8139.rom) 0xae7 (PXE-Intel.rom)
    209  1.1.1.11  christos >>(26.s+0x1A)	uleshort	!0	\b, bootstrap offset %#x
    210  1.1.1.11  christos # 2nd reserved area; seems to be zero
    211  1.1.1.11  christos >>(26.s+0x1C)	uleshort	!0	\b, 2nd reserved %#x
    212  1.1.1.11  christos # static resource information vector; 0 means disabled
    213  1.1.1.11  christos >>(26.s+0x1E)	uleshort	!0	\b, static offset %#4.4x
    214  1.1.1.11  christos ################################################################################
    215  1.1.1.11  christos # 4 bytes ASCII Signature "PCIR" for PCI Data Structure
    216  1.1.1.11  christos #>(24.s)	string			=PCIR	FOUND PCIR
    217  1.1.1.11  christos >(24.s)	string			=PCIR	\b;
    218  1.1.1.11  christos # pointer to PCI data structure like: 1Ch 38h 104h 8E44h 
    219  1.1.1.11  christos >>24	uleshort		x	at %#x PCI
    220  1.1.1.11  christos # Vendor identification (ID)		https://pci-ids.ucw.cz/v2.2/pci.ids
    221  1.1.1.11  christos #>>(24.s+4)	uleshort	x	ID=%4.4x
    222  1.1.1.11  christos # show Vendor identification in human readable text form instead of numeric
    223  1.1.1.11  christos >>(24.s+4)	use		PCI-vendor
    224  1.1.1.11  christos # device identification (ID)
    225  1.1.1.11  christos >>(24.s+6)	uleshort	x	device=%#4.4x
    226  1.1.1.11  christos # Base+sub class code			https://wiki.osdev.org/PCI
    227  1.1.1.11  christos >>(24.s+0x0D)	use		PCI-class
    228  1.1.1.11  christos # pointer to vital product data (VPD); 0 indicates no VPD; WHAT EXACTLY iS VPD?
    229  1.1.1.11  christos >>(24.s+8)	uleshort	!0	\b, at %#x VPD
    230  1.1.1.11  christos # PCI data structure length like: 24h 28h
    231  1.1.1.11  christos >>(24.s+0xA)	uleshort	>0x28	\b, length %u
    232  1.1.1.11  christos # PCI data structure revision like: 0 3
    233  1.1.1.12  christos >>(24.s+0xC)	ubyte		>0	\b, revision %u
    234  1.1.1.11  christos # image length (hexadecimal) in multiple of 512 bytes like: 54 56 68 6a 76 78 7c 7d 7e 7f 80 81 83
    235  1.1.1.11  christos # Apparently this gives the same information as given by byte at offset 2 but as 16-bit
    236  1.1.1.11  christos #>>(24.s+0x10)	uleshort	x	\b, length %u*512
    237  1.1.1.11  christos # revision level of code/data like: 0 1 201h 502h
    238  1.1.1.12  christos >>(24.s+0xC)	ubyte		>1	\b, code revision %#x
    239  1.1.1.11  christos # code type: 0~Intel x86/PC-AT compatible 1~Open firmware standard for PCI42 FF~Reserved
    240  1.1.1.11  christos >>(24.s+0x14)	ubyte		>0	\b, code type %#x
    241  1.1.1.11  christos # last image indicator; bit 7 indicates "last image"; bits 0-6 are reserved
    242  1.1.1.11  christos >>(24.s+0x15)	ubyte		>0
    243  1.1.1.11  christos >>>(24.s+0x15)	ubyte		=0x80	\b, last ROM
    244  1.1.1.11  christos # THIS SHOULD NOT HAPPEN!
    245  1.1.1.11  christos >>>(24.s+0x15)	ubyte		!0x80	\b, indicator %x
    246  1.1.1.11  christos # 3rd reserved area; seems to be zero in most cases but not for
    247  1.1.1.11  christos # efi-e1000.rom efi-rtl8139.rom
    248  1.1.1.11  christos >>(24.s+0x16)	ubeshort	!0	\b, 3rd reserved %#x
    249   1.1.1.2  christos 
    250   1.1.1.2  christos # Flash descriptors for Intel SPI flash roms.
    251   1.1.1.2  christos # From Dr. Jesus <j (a] hug.gs>
    252   1.1.1.2  christos 0	lelong		0x0ff0a55a	Intel serial flash for ICH/PCH ROM <= 5 or 3400 series A-step
    253   1.1.1.2  christos 16	lelong		0x0ff0a55a	Intel serial flash for PCH ROM
    254   1.1.1.9  christos 
    255   1.1.1.9  christos # From: 	Joerg Jenderek
    256   1.1.1.9  christos # URL:		https://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface
    257   1.1.1.9  christos # Reference:	https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
    258   1.1.1.9  christos # Note:		generated for example by `cat /sys/firmware/acpi/tables/DSDT MyDSDT.aml`
    259   1.1.1.9  christos 0	string		DSDT
    260   1.1.1.9  christos >0	use		acpi-table
    261   1.1.1.9  christos # not tested or other file format
    262   1.1.1.9  christos 0	string		APIC
    263   1.1.1.9  christos >0	use		acpi-table
    264   1.1.1.9  christos #0	string		ASF!
    265   1.1.1.9  christos #>0	use		acpi-table
    266   1.1.1.9  christos 0	string		FACP
    267   1.1.1.9  christos >0	use		acpi-table
    268   1.1.1.9  christos #0	string		FACS
    269   1.1.1.9  christos #>0	use		acpi-table
    270   1.1.1.9  christos 0	string		MCFG
    271   1.1.1.9  christos >0	use		acpi-table
    272   1.1.1.9  christos 0	string		SLIC
    273   1.1.1.9  christos >0	use		acpi-table
    274   1.1.1.9  christos 0	string		SSDT
    275   1.1.1.9  christos >0	use		acpi-table
    276   1.1.1.9  christos 0	name		acpi-table
    277   1.1.1.9  christos # skip ASCII text starting with DSDT by looking for valid "low" revision
    278   1.1.1.9  christos >8	ubyte		<17	ACPI Machine Language file
    279   1.1.1.9  christos # assume that ACPI tables size are lower than 16 MiB
    280   1.1.1.9  christos #>4	ulelong		<0x01000000
    281   1.1.1.9  christos # DSDT for Differentiated System Description Table
    282   1.1.1.9  christos >>0	string		x	'%.4s'
    283   1.1.1.9  christos #!:mime	application/octet-stream
    284   1.1.1.9  christos !:mime	application/x-intel-aml
    285   1.1.1.9  christos !:ext	aml
    286   1.1.1.9  christos # the manufacture model ID like: VBOXBIOS BXDSDT
    287   1.1.1.9  christos >>16	string		>\0	%.8s
    288   1.1.1.9  christos # OEM revision of DSDT for supplied OEM Table ID like: 0 1 2 20090511
    289   1.1.1.9  christos >>>24	ulelong		x	%x
    290   1.1.1.9  christos # OEM ID like: INTEL VBOX (VirtualBox) BXDSDT (qemu) MEDION or \030\001\0\0 for s3pt.aml
    291   1.1.1.9  christos >>10	ubyte		>040	by %c
    292   1.1.1.9  christos >>>11		ubyte	>040	\b%c
    293   1.1.1.9  christos >>>>12		ubyte	>040	\b%c
    294   1.1.1.9  christos >>>>>13		ubyte	>040	\b%c
    295   1.1.1.9  christos >>>>>>14	ubyte	>040	\b%c
    296   1.1.1.9  christos >>>>>>>15	ubyte	>040	\b%c
    297   1.1.1.9  christos # This field also sets the global integer width for the AML interpreter.
    298   1.1.1.9  christos # Values less than two will cause the interpreter to use 32-bit.
    299   1.1.1.9  christos # Values of two and greater will cause the interpreter to use full 64-bit.
    300   1.1.1.9  christos # 16 for asf!.aml, 67 fo rsdp.aml
    301   1.1.1.9  christos >>8	ubyte		x	\b, revision %u
    302   1.1.1.9  christos # length, in bytes, of the entire DSDT (including the header)
    303   1.1.1.9  christos >>4	ulelong		x	\b, %u bytes
    304   1.1.1.9  christos # entire table must sum to zero
    305  1.1.1.11  christos #>>9	ubyte		x	\b, checksum %#x
    306   1.1.1.9  christos # vendor ID for the ASL Compiler like: INTL MSFT ...
    307   1.1.1.9  christos >>28	string		>\0	\b, created by %.4s
    308   1.1.1.9  christos # revision number of the ASL Compiler like: 20051117 20140724 20190703 20200110 ...
    309   1.1.1.9  christos >>>32	ulelong		x	%x
    310   1.1.1.9  christos 
    311  1.1.1.13  christos # data that can be parsed by dmidecode(8) from a dump
    312  1.1.1.13  christos # or extracted from a bios image
    313  1.1.1.13  christos 0	string		_SM3_
    314  1.1.1.13  christos >0x5	byte		<0x3	SMBIOS 3.x file
    315