Home | History | Annotate | Line # | Download | only in magdir
      1 
      2 #------------------------------------------------------------------------------
      3 # $File: acorn,v 1.8 2021/04/26 15:56:00 christos Exp $
      4 # acorn:  file(1) magic for files found on Acorn systems
      5 #
      6 
      7 # RISC OS Chunk File Format
      8 # From RISC OS Programmer's Reference Manual, Appendix D
      9 # We guess the file type from the type of the first chunk.
     10 0	lelong		0xc3cbc6c5	RISC OS Chunk data
     11 >12	string		OBJ_		\b, AOF object
     12 >12	string		LIB_		\b, ALF library
     13 
     14 # RISC OS AIF, contains "SWI OS_Exit" at offset 16.
     15 16	lelong		0xef000011	RISC OS AIF executable
     16 
     17 # RISC OS Draw files
     18 # From RISC OS Programmer's Reference Manual, Appendix E
     19 0	string 		Draw		RISC OS Draw file data
     20 
     21 # RISC OS new format font files
     22 # From RISC OS Programmer's Reference Manual, Appendix E
     23 0	string		FONT\0		RISC OS outline font data,
     24 >5	byte		x		version %d
     25 0	string		FONT\1		RISC OS 1bpp font data,
     26 >5	byte		x		version %d
     27 0	string		FONT\4		RISC OS 4bpp font data
     28 >5	byte		x		version %d
     29 
     30 # RISC OS Music files
     31 # From RISC OS Programmer's Reference Manual, Appendix E
     32 0	string		Maestro\r	RISC OS music file
     33 >8	byte		x		version %d
     34 
     35 >8	byte		x		type %d
     36 
     37 # Digital Symphony data files
     38 # From: Bernard Jungen (bern8817 (a] euphonynet.be)
     39 0		string	\x02\x01\x13\x13\x13\x01\x0d\x10	Digital Symphony sound sample (RISC OS),
     40 >8		byte	x	version %d,
     41 >9		pstring	x	named "%s",
     42 >(9.b+19)	byte	=0	8-bit logarithmic
     43 >(9.b+19)	byte	=1	LZW-compressed linear
     44 >(9.b+19)	byte	=2	8-bit linear signed
     45 >(9.b+19)	byte	=3	16-bit linear signed
     46 >(9.b+19)	byte	=4	SigmaDelta-compressed linear
     47 >(9.b+19)	byte	=5	SigmaDelta-compressed logarithmic
     48 >(9.b+19)	byte	>5	unknown format
     49 
     50 0	string	\x02\x01\x13\x13\x14\x12\x01\x0b	Digital Symphony song (RISC OS),
     51 >8	byte	x	version %d,
     52 >9	byte	=1	1 voice,
     53 >9	byte	!1	%d voices,
     54 >10	leshort	=1	1 track,
     55 >10	leshort	!1	%d tracks,
     56 >12	leshort	=1	1 pattern
     57 >12	leshort	!1	%d patterns
     58 
     59 0	string	\x02\x01\x13\x13\x10\x14\x12\x0e
     60 >9	byte	=0	Digital Symphony sequence (RISC OS),
     61 >>8	byte	x	version %d,
     62 >>10	byte	=1	1 line,
     63 >>10	byte	!1	%d lines,
     64 >>11	leshort	=1	1 position
     65 >>11	leshort	!1	%d positions
     66 >9	byte	=1	Digital Symphony pattern data (RISC OS),
     67 >>8	byte	x	version %d,
     68 >>10	leshort	=1	1 pattern
     69 >>10	leshort	!1	%d patterns
     70 
     71 # From: Joerg Jenderek
     72 # URL: https://www.kyzer.me.uk/pack/xad/#PackDir
     73 # reference: https://www.kyzer.me.uk/pack/xad/xad_PackDir.lha/PackDir.c
     74 # GRR: line below is too general as it matches also "Git pack" in ./revision
     75 0	string	PACK\0
     76 # check for valid compression method 0-4
     77 >5	ulelong	<5
     78 # https://www.riscosopen.org/wiki/documentation/show/Introduction%20To%20Filing%20Systems
     79 # To skip "Git pack" version 0 test for root directory object like
     80 # ADFS::RPC.$.websitezip.FONTFIX
     81 >>9	string	>ADFS\  PackDir archive (RISC OS)
     82 # TrID labels above as "Acorn PackDir compressed Archive"
     83 # compression mode y (0 - 4) for GIF LZW with a maximum n bits
     84 # (y~n,0~12,1~13,2~14,3~15,4~16)
     85 >>>5	ulelong+12 x	\b, LZW %u-bits compression
     86 # https://www.filebase.org.uk/filetypes
     87 # !Packdir compressed archive has three hexadecimal digits code 68E
     88 !:mime	application/x-acorn-68E
     89 !:ext	pkd/bin
     90 # null terminated root directory object like IDEFS::IDE-4.$.Apps.GRAPHICS.!XFMPdemo
     91 >>>9	string	x	\b, root "%s"
     92 # load address 0xFFFtttdd, ttt is the object filetype and dddddddddd is time
     93 >>>>&1	ulelong	x	\b, load address %#x
     94 # execution address 0xdddddddd dddddddddd is 40 bit unsigned centiseconds since 1.1.1900 UTC
     95 >>>>&5	ulelong	x	\b, exec address %#x
     96 # attributes (bits: 0~owner read,1~owner write,3~no delete,4~public read,5~public write)
     97 >>>>&9	ulelong	x	\b, attributes %#x 
     98 # number of entries in this directory. for root dir 0
     99 #>>>&13	ulelong	x	\b, entries %#x 
    100 # the entries start here with object name
    101 >>>>&17	string	x	\b, 1st object "%s"
    102 
    103