1
2#------------------------------------------------------------------------------
3# $File: lif,v 1.11 2022/10/19 20:15:16 christos Exp $
4# lif:  file(1) magic for lif
5#
6# (Daniel Quinlan <quinlan@yggdrasil.com>)
7#
8# Modified by:      Joerg Jenderek
9# URL:              https://www.hp9845.net/9845/projects/hpdir/
10#                   https://github.com/bug400/lifutils
11# Reference:        https://www.hp9845.net/9845/downloads/manuals/LIF_excerpt_64941-90906_flpRef_Jan84.pdf
12# Note:             called by TrID "HP Logical Interchange Format disk image"
130         beshort             0x8000
14# GRR: line above is too general as it catches also compressed DEGAS low-res bitmap *.pc1
15# skip many compressed DEGAS low-res bitmap *.pc1 by test for unused bytes
16>14       beshort             =0
17# skip MUNCHIE.PC1 BOARD.PC1 ENEMIES.PC1 by test for low version number
18>>20      ubeshort  <0x0100
19# skip DROID fmt-840-signature-id-1195.adx fmt-840-signature-id-1199.adx by test for ASCII like volume name
20>>>2      ubelong             >0x2020201F
21>>>>0     use                 lif-file
220         name                lif-file
23# LIF ID
24>0        beshort             x                   lif file
25!:mime    application/x-lif-disk
26# lif used by Tony Duell LIF utilities; enhanced version by Joachim Siebold use also dat; hpi used by hpdir
27!:ext     lif/hpi/dat
28# volume label; A-Z 0-9 _ ; default are 6 spaces
29>2        string              x                   "%.6s"
30#>2       ubelong             x                   LABEL=%8.8x
31# version number; 0 for systems without extensions or 1 for model 64000
32>20       ubeshort  x                   \b, version %u
33# LIF identifier; 010000 for system 3000
34>12       beshort             !0x1000             \b, LIF identifier %#x
35# directory start address in units like: 2
36>8        ubelong             x                   \b, directory
37>8        ubelong             !2                  start address %u
38# length of directory like: 2 4 7 10 12 14 (for model 64000) 16 18 20 24 30 50 57 77 80
39>16       ubelong             x                   length %u
40# level 1 extensions
41>20       beshort             =0
42>>24      ubequad             !0                  \b, for extensions %#llx...
43>20       beshort             >0
44>>24      ubequad             !0                  \b, extensions %#llx...
45# word 21-126 reserved for extensions and future use; set to nil
46>42       ubequad             !0                  \b, RESERVED %#llx
47# lif first file name for standard directory; 0xffff... means uninitialized
48>8        ubelong             2
49>>512     string              <\xff\xff \b, 1st file %-.10s
50
51