head	1.1;
branch	1.1.1;
access;
symbols
	netbsd-11-0-RC4:1.1.1.5
	netbsd-11-0-RC3:1.1.1.5
	netbsd-11-0-RC2:1.1.1.5
	netbsd-11-0-RC1:1.1.1.5
	perseant-exfatfs-base-20250801:1.1.1.5
	netbsd-11:1.1.1.5.0.4
	netbsd-11-base:1.1.1.5
	netbsd-10-1-RELEASE:1.1.1.4
	perseant-exfatfs-base-20240630:1.1.1.5
	perseant-exfatfs:1.1.1.5.0.2
	perseant-exfatfs-base:1.1.1.5
	netbsd-8-3-RELEASE:1.1.1.2
	netbsd-9-4-RELEASE:1.1.1.3
	netbsd-10-0-RELEASE:1.1.1.4
	netbsd-10-0-RC6:1.1.1.4
	netbsd-10-0-RC5:1.1.1.4
	netbsd-10-0-RC4:1.1.1.4
	netbsd-10-0-RC3:1.1.1.4
	netbsd-10-0-RC2:1.1.1.4
	netbsd-10-0-RC1:1.1.1.4
	FILE5_45:1.1.1.5
	netbsd-10:1.1.1.4.0.2
	netbsd-10-base:1.1.1.4
	FILE5_43:1.1.1.4
	netbsd-9-3-RELEASE:1.1.1.3
	cjep_sun2x-base1:1.1.1.3
	cjep_sun2x:1.1.1.3.0.10
	cjep_sun2x-base:1.1.1.3
	cjep_staticlib_x-base1:1.1.1.3
	netbsd-9-2-RELEASE:1.1.1.3
	cjep_staticlib_x:1.1.1.3.0.8
	cjep_staticlib_x-base:1.1.1.3
	FILE5_40:1.1.1.3
	netbsd-9-1-RELEASE:1.1.1.3
	FILE5_39:1.1.1.3
	phil-wifi-20200421:1.1.1.3
	phil-wifi-20200411:1.1.1.3
	is-mlppp:1.1.1.3.0.6
	is-mlppp-base:1.1.1.3
	phil-wifi-20200406:1.1.1.3
	netbsd-8-2-RELEASE:1.1.1.2
	netbsd-9-0-RELEASE:1.1.1.3
	netbsd-9-0-RC2:1.1.1.3
	FILE5_38:1.1.1.3
	netbsd-9-0-RC1:1.1.1.3
	phil-wifi-20191119:1.1.1.3
	netbsd-9:1.1.1.3.0.4
	netbsd-9-base:1.1.1.3
	phil-wifi-20190609:1.1.1.3
	netbsd-8-1-RELEASE:1.1.1.2
	FILE5_37:1.1.1.3
	netbsd-8-1-RC1:1.1.1.2
	pgoyette-compat-merge-20190127:1.1.1.2.44.1
	pgoyette-compat-20190127:1.1.1.3
	pgoyette-compat-20190118:1.1.1.3
	pgoyette-compat-1226:1.1.1.3
	pgoyette-compat-1126:1.1.1.3
	pgoyette-compat-1020:1.1.1.3
	FILE5_35:1.1.1.3
	pgoyette-compat-0930:1.1.1.3
	pgoyette-compat-0906:1.1.1.3
	netbsd-7-2-RELEASE:1.1.1.2
	pgoyette-compat-0728:1.1.1.3
	netbsd-8-0-RELEASE:1.1.1.2
	phil-wifi:1.1.1.3.0.2
	phil-wifi-base:1.1.1.3
	pgoyette-compat-0625:1.1.1.3
	netbsd-8-0-RC2:1.1.1.2
	pgoyette-compat-0521:1.1.1.3
	pgoyette-compat-0502:1.1.1.3
	pgoyette-compat-0422:1.1.1.3
	netbsd-8-0-RC1:1.1.1.2
	FILE5_33:1.1.1.3
	pgoyette-compat-0415:1.1.1.2
	pgoyette-compat-0407:1.1.1.2
	pgoyette-compat-0330:1.1.1.2
	pgoyette-compat-0322:1.1.1.2
	pgoyette-compat-0315:1.1.1.2
	netbsd-7-1-2-RELEASE:1.1.1.2
	pgoyette-compat:1.1.1.2.0.44
	pgoyette-compat-base:1.1.1.2
	netbsd-7-1-1-RELEASE:1.1.1.2
	matt-nb8-mediatek:1.1.1.2.0.42
	matt-nb8-mediatek-base:1.1.1.2
	FILE5_32:1.1.1.2
	perseant-stdc-iso10646:1.1.1.2.0.40
	perseant-stdc-iso10646-base:1.1.1.2
	netbsd-8:1.1.1.2.0.38
	netbsd-8-base:1.1.1.2
	FILE5_31:1.1.1.2
	prg-localcount2-base3:1.1.1.2
	prg-localcount2-base2:1.1.1.2
	prg-localcount2-base1:1.1.1.2
	prg-localcount2:1.1.1.2.0.36
	prg-localcount2-base:1.1.1.2
	pgoyette-localcount-20170426:1.1.1.2
	bouyer-socketcan-base1:1.1.1.2
	pgoyette-localcount-20170320:1.1.1.2
	netbsd-7-1:1.1.1.2.0.34
	netbsd-7-1-RELEASE:1.1.1.2
	netbsd-7-1-RC2:1.1.1.2
	FILE5_30:1.1.1.2
	netbsd-7-nhusb-base-20170116:1.1.1.2
	bouyer-socketcan:1.1.1.2.0.32
	bouyer-socketcan-base:1.1.1.2
	pgoyette-localcount-20170107:1.1.1.2
	netbsd-7-1-RC1:1.1.1.2
	pgoyette-localcount-20161104:1.1.1.2
	netbsd-7-0-2-RELEASE:1.1.1.2
	localcount-20160914:1.1.1.2
	netbsd-7-nhusb:1.1.1.2.0.30
	netbsd-7-nhusb-base:1.1.1.2
	pgoyette-localcount-20160806:1.1.1.2
	pgoyette-localcount-20160726:1.1.1.2
	pgoyette-localcount:1.1.1.2.0.28
	pgoyette-localcount-base:1.1.1.2
	netbsd-7-0-1-RELEASE:1.1.1.2
	netbsd-7-0:1.1.1.2.0.26
	netbsd-7-0-RELEASE:1.1.1.2
	netbsd-7-0-RC3:1.1.1.2
	netbsd-7-0-RC2:1.1.1.2
	netbsd-7-0-RC1:1.1.1.2
	FILE5_22:1.1.1.2
	FILE5_20:1.1.1.2
	netbsd-6-0-6-RELEASE:1.1.1.2
	netbsd-6-1-5-RELEASE:1.1.1.2
	netbsd-7:1.1.1.2.0.24
	netbsd-7-base:1.1.1.2
	FILE5_19:1.1.1.2
	yamt-pagecache-base9:1.1.1.2
	yamt-pagecache-tag8:1.1.1.2
	netbsd-6-1-4-RELEASE:1.1.1.2
	netbsd-6-0-5-RELEASE:1.1.1.2
	tls-earlyentropy:1.1.1.2.0.22
	tls-earlyentropy-base:1.1.1.2
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1.1.2
	riastradh-drm2-base3:1.1.1.2
	netbsd-6-1-3-RELEASE:1.1.1.2
	netbsd-6-0-4-RELEASE:1.1.1.2
	FILE5_16:1.1.1.2
	netbsd-6-1-2-RELEASE:1.1.1.2
	netbsd-6-0-3-RELEASE:1.1.1.2
	netbsd-6-1-1-RELEASE:1.1.1.2
	riastradh-drm2-base2:1.1.1.2
	riastradh-drm2-base1:1.1.1.2
	riastradh-drm2:1.1.1.2.0.14
	riastradh-drm2-base:1.1.1.2
	netbsd-6-1:1.1.1.2.0.20
	netbsd-6-0-2-RELEASE:1.1.1.2
	netbsd-6-1-RELEASE:1.1.1.2
	khorben-n900:1.1.1.2.0.18
	netbsd-6-1-RC4:1.1.1.2
	netbsd-6-1-RC3:1.1.1.2
	agc-symver:1.1.1.2.0.16
	agc-symver-base:1.1.1.2
	FILE5_14:1.1.1.2
	netbsd-6-1-RC2:1.1.1.2
	netbsd-6-1-RC1:1.1.1.2
	yamt-pagecache-base8:1.1.1.2
	FILE_5_12:1.1.1.2
	netbsd-6-0-1-RELEASE:1.1.1.2
	yamt-pagecache-base7:1.1.1.2
	matt-nb6-plus-nbase:1.1.1.2
	yamt-pagecache-base6:1.1.1.2
	netbsd-6-0:1.1.1.2.0.12
	netbsd-6-0-RELEASE:1.1.1.2
	netbsd-6-0-RC2:1.1.1.2
	tls-maxphys:1.1.1.2.0.10
	tls-maxphys-base:1.1.1.2
	matt-nb6-plus:1.1.1.2.0.8
	matt-nb6-plus-base:1.1.1.2
	netbsd-6-0-RC1:1.1.1.2
	yamt-pagecache-base5:1.1.1.2
	yamt-pagecache-base4:1.1.1.2
	FILE5_11:1.1.1.2
	netbsd-6:1.1.1.2.0.6
	netbsd-6-base:1.1.1.2
	yamt-pagecache-base3:1.1.1.2
	yamt-pagecache-base2:1.1.1.2
	yamt-pagecache:1.1.1.2.0.4
	yamt-pagecache-base:1.1.1.2
	FILE5_09:1.1.1.2
	cherry-xenmp:1.1.1.2.0.2
	cherry-xenmp-base:1.1.1.2
	FILE5_07:1.1.1.2
	bouyer-quota2-nbase:1.1.1.1
	bouyer-quota2:1.1.1.1.0.4
	bouyer-quota2-base:1.1.1.1
	matt-mips64-premerge-20101231:1.1.1.1
	matt-premerge-20091211:1.1.1.1
	jym-xensuspend-base:1.1.1.1
	jym-xensuspend:1.1.1.1.0.2
	jym-xensuspend-nbase:1.1.1.1
	FILE5_03:1.1.1.1
	CHRISTOS:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2009.05.08.16.35.09;	author christos;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2009.05.08.16.35.09;	author christos;	state Exp;
branches
	1.1.1.1.2.1;
next	1.1.1.2;

1.1.1.2
date	2011.05.12.20.47.05;	author christos;	state Exp;
branches
	1.1.1.2.44.1;
next	1.1.1.3;

1.1.1.3
date	2018.04.15.19.32.48;	author christos;	state Exp;
branches;
next	1.1.1.4;
commitid	unKSwpX2g9VqBzyA;

1.1.1.4
date	2022.09.24.20.07.54;	author christos;	state Exp;
branches;
next	1.1.1.5;
commitid	Nf6F9kcpc0EPC9VD;

1.1.1.5
date	2023.08.18.18.36.51;	author christos;	state Exp;
branches;
next	;
commitid	IX26ghc1E2S0AiBE;

1.1.1.1.2.1
date	2009.05.08.16.35.09;	author jym;	state dead;
branches;
next	1.1.1.1.2.2;

1.1.1.1.2.2
date	2009.05.13.18.52.00;	author jym;	state Exp;
branches;
next	;

1.1.1.2.44.1
date	2018.04.22.07.20.09;	author pgoyette;	state Exp;
branches;
next	;
commitid	W6xykws0Zbl4kpzA;


desc
@@


1.1
log
@Initial revision
@
text
@
#------------------------------------------------------------------------------
# spectrum:  file(1) magic for Spectrum emulator files.
#
# John Elliott <jce@@seasip.demon.co.uk>

#
# Spectrum +3DOS header
#
0       string          PLUS3DOS\032    Spectrum +3 data
>15     byte            0               - BASIC program
>15     byte            1               - number array
>15     byte            2               - character array
>15     byte            3               - memory block
>>16    belong          0x001B0040      (screen)
>15     byte            4               - Tasword document
>15     string          TAPEFILE        - ZXT tapefile
#
# Tape file. This assumes the .TAP starts with a Spectrum-format header,
# which nearly all will.
#
0       string          \023\000\000    Spectrum .TAP data
>4      string          x               "%-10.10s"
>3      byte            0               - BASIC program
>3      byte            1               - number array
>3      byte            2               - character array
>3      byte            3               - memory block
>>14    belong          0x001B0040      (screen)

# The following three blocks are from pak21-spectrum@@srcf.ucam.org
# TZX tape images
0      string          ZXTape!\x1a     Spectrum .TZX data
>8     byte            x               version %d
>9     byte            x               \b.%d

# RZX input recording files
0      string          RZX!            Spectrum .RZX data
>4     byte            x               version %d
>5     byte            x               \b.%d

# Floppy disk images
0      string          MV\ -\ CPCEMU\ Disk-Fil Amstrad/Spectrum .DSK data
0      string          MV\ -\ CPC\ format\ Dis Amstrad/Spectrum DU54 .DSK data
0      string          EXTENDED\ CPC\ DSK\ Fil Amstrad/Spectrum Extended .DSK data
0      string          SINCLAIR        Spectrum .SCL Betadisk image

# Hard disk images
0      string          RS-IDE\x1a      Spectrum .HDF hard disk image
>7     byte            x               \b, version 0x%02x
@


1.1.1.1
log
@from ftp.astron.com
@
text
@@


1.1.1.2
log
@from ftp.astron.com.
- many security related fixes
- no MAXPATHLEN limits
- fixed missing text specification on ascii magic
- new ``pascal'' style string formats
- whitespace comparison fix
- more magic
@
text
@a2 1
# $File: spectrum,v 1.7 2010/09/20 18:55:20 rrt Exp $
d22 7
a28 11
# Update: Sanity-check string contents to be printable.
#  -Adam Buchbinder <adam.buchbinder@@gmail.com>
#
0       string          \023\000\000
>4      string          >\0
>>4     string          <\177           Spectrum .TAP data "%-10.10s"
>>>3    byte            0               - BASIC program
>>>3    byte            1               - number array
>>>3    byte            2               - character array
>>>3    byte            3               - memory block
>>>>14  belong          0x001B0040      (screen)
@


1.1.1.2.44.1
log
@Sync with HEAD
@
text
@d3 1
a3 1
# $File: spectrum,v 1.8 2017/09/11 23:51:12 christos Exp $
a54 26

# SZX snapshots (fuse and spectaculator)
# Martin M. S. Pedersen <martin@@linux.com>
# http://www.spectaculator.com/docs/zx-state/header.shtml
#
0      string		ZXST	       zx-state snapshot
>4     byte		x	       version %d
>5     byte		x	       \b.%d
>>6    byte		0	       16k ZX Spectrum
>>6    byte		1	       48k ZX Spectrum/ZX Spectrum+
>>6    byte		2	       ZX Spectrum 128
>>6    byte		3	       ZX Spectrum +2
>>6    byte		4	       ZX Spectrum +2A/+2B
>>6    byte		5	       ZX Spectrum +3
>>6    byte		6	       ZX Spectrum +3e
>>6    byte		7	       Pentagon 128
>>6    byte		8	       Timex Sinclair TC2048
>>6    byte		9	       Timex Sinclair TC2068
>>6    byte	       10	       Scorpion ZS-256
>>6    byte	       11	       ZX Spectrum SE
>>6    byte	       12	       Timex Sinclair TS2068
>>6    byte	       13	       Pentagon 512
>>6    byte	       14	       Pentagon 1024
>>6    byte	       15	       48k ZX Spectrum (NTSC)
>>6    byte	       16	       ZX Spectrum 12Ke
>>>7   byte		1	       (alternate timings)
@


1.1.1.3
log
@2018-04-15  14:52  Christos Zoulas <christos@@zoulas.com>

	* release 5.33

2018-02-24  14:50  Christos Zoulas <christos@@zoulas.com>

	* extend the support for ${x?:} expansions for magic descriptions

2018-02-21  16:25  Christos Zoulas <christos@@zoulas.com>

	* add support for ${x?:} in mime types to handle
	  pie binaries.

2017-11-03   9:23  Christos Zoulas <christos@@zoulas.com>

	* add support for negative offsets (offsets from the end of file)

2017-09-26   8:22  Christos Zoulas <christos@@zoulas.com>

	* close the file on error when writing magic (Steve Grubb)

2017-09-24  12:02  Christos Zoulas <christos@@zoulas.com>

	* seccomp support (Paul Moore)

2017-09-02  11:53  Christos Zoulas <christos@@zoulas.com>

	* release 5.32

2017-08-28  16:37  Christos Zoulas <christos@@zoulas.com>

	* Always reset state in {file,buffer}_apprentice (Krzysztof Wilczynski)

2017-08-27  03:55  Christos Zoulas <christos@@zoulas.com>

	* Fix always true condition (Thomas Jarosch)

2017-05-24  17:30  Christos Zoulas <christos@@zoulas.com>

	* pickier parsing of numeric values in magic files.

2017-05-23  17:55  Christos Zoulas <christos@@zoulas.com>

	* PR/615 add magic_getflags()
@
text
@d3 1
a3 1
# $File: spectrum,v 1.8 2017/09/11 23:51:12 christos Exp $
a54 26

# SZX snapshots (fuse and spectaculator)
# Martin M. S. Pedersen <martin@@linux.com>
# http://www.spectaculator.com/docs/zx-state/header.shtml
#
0      string		ZXST	       zx-state snapshot
>4     byte		x	       version %d
>5     byte		x	       \b.%d
>>6    byte		0	       16k ZX Spectrum
>>6    byte		1	       48k ZX Spectrum/ZX Spectrum+
>>6    byte		2	       ZX Spectrum 128
>>6    byte		3	       ZX Spectrum +2
>>6    byte		4	       ZX Spectrum +2A/+2B
>>6    byte		5	       ZX Spectrum +3
>>6    byte		6	       ZX Spectrum +3e
>>6    byte		7	       Pentagon 128
>>6    byte		8	       Timex Sinclair TC2048
>>6    byte		9	       Timex Sinclair TC2068
>>6    byte	       10	       Scorpion ZS-256
>>6    byte	       11	       ZX Spectrum SE
>>6    byte	       12	       Timex Sinclair TS2068
>>6    byte	       13	       Pentagon 512
>>6    byte	       14	       Pentagon 1024
>>6    byte	       15	       48k ZX Spectrum (NTSC)
>>6    byte	       16	       ZX Spectrum 12Ke
>>>7   byte		1	       (alternate timings)
@


1.1.1.4
log
@Import file-5.43+; last was file-5.40

2022-09-20  17:12  Christos Zoulas <christos@@zoulas.com>

	* fixed various clustefuzz issues

2022-09-19  15:54  Christos Zoulas <christos@@zoulas.com>

	* Fix error detection for decompression code (Vincent Mihalkovic)

2022-09-15  13:50  Christos Zoulas <christos@@zoulas.com>

	* Add MAGIC_NO_COMPRESS_FORK and use it to produce a more
	  meaningful error message if we are sandboxing.

2022-09-15  10:45  Christos Zoulas <christos@@zoulas.com>

	* Add built-in lzip decompression support (Michal Gorny)

2022-09-14  10:35  Christos Zoulas <christos@@zoulas.com>

	* Add built-in zstd decompression support (Martin Rodriguez Reboredo)

2022-09-13  14:55  Christos Zoulas <christos@@zoulas.com>

	* release 5.43

2022-09-10   9:17  Christos Zoulas <christos@@zoulas.com>

	* Add octal indirect magic (Michal Gorny)

2022-08-17  11:43  Christos Zoulas <christos@@zoulas.com>

	* PR/374: avoid infinite loop in non-wide code (piru)
	* PR/373: Obey MAGIC_CONTINUE with multiple magic files (vismarli)

2022-07-26  11:10  Christos Zoulas <christos@@zoulas.com>

	* Fix bug with large flist (Florian Weimer)

2022-07-07  13:21  Christos Zoulas <christos@@zoulas.com>

        * PR/364: Detect non-nul-terminated core filenames from QEMU
	  (mam-ableton)

2022-07-04  15:45  Christos Zoulas <christos@@zoulas.com>

	* PR/359: Add support for http://ndjson.org/ (darose)
	* PR/362: Fix wide printing (ro-ee)
	* PR/358: Fix width for -f - (jpalus)
	* PR/356: Fix JSON constant parsing (davewhite)

2022-06-10   9:40  Christos Zoulas <christos@@zoulas.com>

	* release 5.42

2022-05-31  14:50   Christos Zoulas <christos@@zoulas.com>

	* PR/348: add missing cases to prevent file from aborting on
	  random magic files.

2022-05-27  21:05   Christos Zoulas <christos@@zoulas.com>

	* PR/351: octalify filenames when not raw before printing.

2022-04-18  17:51   Christos Zoulas <christos@@zoulas.com>

	* fix regex cacheing bug (Dirk Mueller)
	* merge file_regcomp and file_regerror() to simplify the code
	  and reduce memory requirements for storing regexes (Dirk Mueller)

2022-03-19  12:56   Christos Zoulas <christos@@zoulas.com>

	* cache regex (Dirk Mueller)
	* detect filesystem full by flushing output (Dirk Mueller)

2021-11-19  12:36   Christos Zoulas <christos@@zoulas.com>

	* implement running decompressor programs using
	  posix_spawnp(2) instead of vfork(2)

2021-10-24  11:51   Christos Zoulas <christos@@zoulas.com>

	* Add support for msdos dates and times

2021-10-20   9:55   Christos Zoulas <christos@@zoulas.com>

	* use the system byte swapping functions if available (Werner Fink)

2021-10-18  11:57  Christos Zoulas <christos@@zoulas.com>

	* release 5.41

2021-09-23  03:51  Christos Zoulas <christos@@zoulas.com>

	* Avinash Sonawane: Fix tzname detection

2021-09-03  09:17  Christos Zoulas <christos@@zoulas.com>

	* Fix relationship tests with "search" magic, don't short circuit
	  logic

2021-07-13  01:06  Christos Zoulas <christos@@zoulas.com>

	* Fix memory leak in compile mode

2021-07-01  03:51  Christos Zoulas <christos@@zoulas.com>

	* PR/272: kiefermat: Only set returnval = 1 when we printed something
	  (in all cases print or !print). This simplifies the logic and fixes
	  the issue in the PR with -k and --mime-type there was no continuation
	  printed before the default case.

2021-06-30  13:07  Christos Zoulas <christos@@zoulas.com>

	* PR/270: Don't translate unprintable characters in %s magic formats
	  when -r
	* PR/269: Avoid undefined behavior with clang (adding offset to NULL)

2021-05-09  18:38  Christos Zoulas <christos@@zoulas.com>

	* Add a new flag (f) that requires that the match is a full word,
	   not a partial word match.
	* Add varint types (unused)

2021-04-19  17:17  Christos Zoulas <christos@@zoulas.com>

	* PR/256: mutableVoid: If the file is less than 3 bytes, use the file
	  length to determine type
	* PR/259: aleksandr.v.novichkov: mime printing through indirect magic
	  is not taken into account, use match directly so that it does.

2021-04-04  17:02  Christos Zoulas <christos@@zoulas.com>

	* count the total bytes found not the total byte positions
	  in order to determine encoding (Anatol Belski)
@
text
@d3 1
a3 1
# $File: spectrum,v 1.9 2021/04/26 15:56:00 christos Exp $
d54 1
a54 1
>7     byte            x               \b, version %#02x
@


1.1.1.5
log
@Update to file-5.45 (Last was file-5.44)

2023-07-27  15:45  Christos Zoulas <christos@@zoulas.com>

	* release 5.45

2023-07-17  11:53  Christos Zoulas <christos@@zoulas.com>

	* PR/465: psrok1: Avoid muslc asctime_r crash

2023-05-21  13:05  Christos Zoulas <christos@@zoulas.com>

	* add SIMH tape format support

2023-02-09  12:50  Christos Zoulas <christos@@zoulas.com>

	* bump the max size of the elf section notes to be read to 128K
	  and make it configurable

2023-01-08   1:08  Christos Zoulas <christos@@zoulas.com>

	* PR/415: Fix decompression with program returning empty

2022-12-26   1:47  Christos Zoulas <christos@@zoulas.com>

	* PR/408: fix -p with seccomp
	* PR/412: fix MinGW compilation
@
text
@d3 1
a3 1
# $File: spectrum,v 1.10 2023/05/08 01:33:36 christos Exp $
a24 6
# Update:	Joerg Jenderek 2023 May
# URL:		http://fileformats.archiveteam.org/wiki/TAP_(ZX_Spectrum)
# Reference:	http://web.archive.org/web/20110711141601/http://www.zxmodules.de/fileformats/tapformat.html
#		http://mark0.net/download/triddefs_xml.7z/defs/t/tap-zx.trid.xml
# Note:		called "ZX Spectrum Tape image" by TrID and "TAP (ZX Spectrum)" by DROID via PUID fmt/801
#		verified by fuse-emulator-utils `tzxlist EXAMPLES.TAP`
a25 1
# headers length 19=023 and flag byte 0 indicating a standard ROM loading header 
d28 6
a33 26
# skip {85CEE8D6-0F90-4492-B484-98E38862B28D}.2.ver0x0000000000000004.db {DDF571F2-BE98-426D-8288-1A9A39C3FDA2}.2.ver0x0000000000000001.db
# inside c:\ProgramData\Microsoft\Windows\Caches according to TrID and DROID
>>23	ubyte		=0xFF
# skip DROID fmt-801-signature-id-1166.tap with invalid name \253\253\253\253\253\253\253\253\253\253
# which looks like: "TF COPY II" "screen    " "\023\001TF" "  1943    "
>>>4     string          <\177           Spectrum .TAP data "%-10.10s"
#!:mime	application/octet-stream
!:mime	application/x-spectrum-tap
!:ext	tap
>>>>3	byte		0	- BASIC program
# autostart line; 0..9999 are valid; 32768 means "no auto-loading"
>>>>>16	uleshort	x	\b, autostart line %u
# program length; length of BASIC program
>>>>>18	uleshort	x	\b, program length %u
>>>>3	byte		1	- number array
>>>>3	byte		2	- character array
>>>>3	byte		3	- memory block
# length of the following data 1B00h=6912 and start address 4000h=16384 in case of a SCREEN$ header
>>>>>14 belong          0x001B0040      (screen)
# unused 32768=8000h 
>>>>>18	uleshort	!32768	\b, unused %u
# zxlength; length of the following data after the header
>>>>14	uleshort	x	\b, data length %u
#>>14	uleshort	x	\b, data length %#x
# checksum byte; simply all bytes (including flag byte) XORed 
#>>>>20	ubyte		x	\b, checksum %#x
a36 5
# Update:	Joerg Jenderek 2023 May
# URL:		http://fileformats.archiveteam.org/wiki/TZX
# Reference:	https://worldofspectrum.net/TZXformat.html
#		http://mark0.net/download/triddefs_xml.7z/defs/t/tzx.trid.xml
# Note:		called "ZX Spectrum Tape image" by TrID and "TZX Format" by DROID via PUID fmt/1000
a37 4
#!:mime	application/octet-stream
!:mime	application/x-spectrum-tzx
# CDT is used for Amstrad tapes
!:ext	tzx/cdt
a39 68
# ID of first block
>10	ubyte		x		\b; ID %#x
# turbo speed data block
>10	ubyte		=0x11		(turbo)
# length of PILOT tone (number of pulses) 
>>21	uleshort	x		\b, %u pilot pulses
# length of PILOT pulse
>>11	uleshort	x		with %u tstates
# length of SYNC first pulse
>>13	uleshort	x		\b, %u and
# length of SYNC second pulse
>>15	uleshort	x		%u sync tstates
# length of ZERO bit pulse
>>17	uleshort	x		\b, %u zero tstates
# length of ONE bit pulse
>>19	uleshort	x		\b, %u one tstates
# used bits in the last byte
>>23	ubyte		x		\b, use %u bit
# plural s
>>23	ubyte		>1		\bs
# pause after this block in milliseconds
>>24	uleshort	x		\b, %u ms pause
# BYTE[3]; length of data that follow
>>26	ulelong&0x00FFffFF x		\b, %u data bytes 
>10	ubyte		=0x20		(pause)
# pause duration in milliseconds
>>11	uleshort	x		%u ms
# text description
>10	ubyte		=0x30		(text)
# length of the text description
#>>11	ubyte		x		L=%u
>>11	pstring		x		"%s"
# archive text description in ASCII format
>10	ubyte		=0x32		(archive info)
# length of archive text
>>11	uleshort	x		\b, %#x bytes
# number of text strings
>>13	ubyte		x		with %u (type) text parts
# text type identification byte: 0~title 1~publisher 2~author 3~year 4~language 5~type 6~price 7~protection 8~origin ff~comment
>>14	byte		<9		(%d)
>>>14	byte		>-2
# length of text string
#>>>>15	ubyte		x		L=%u
>>>>15	pstring		x		%s
# 2nd possible text description
>>>>>&0	byte		<9		(%d)
>>>>>>&-1	byte	>-2
>>>>>>>&0	pstring	x		%s
# 3rd possible text description
>>>>>>>>&0	byte	<9		(%d)
>>>>>>>>>&-1	byte	>-2
>>>>>>>>>>&0	pstring	x		%s
# 4th possible text description
>>>>>>>>>>>&0	byte	<9		(%d)
>>>>>>>>>>>>&-1	byte	>-2
>>>>>>>>>>>>>&0	pstring	x		%s
# 5th possible text description
>>>>>>>>>>>>>>&0	byte	<9	(%d)
>>>>>>>>>>>>>>>&-1	byte	>-2
>>>>>>>>>>>>>>>>&0	pstring	x	%s
# 6th possible text description
>>>>>>>>>>>>>>>>>&0	byte	<9	(%d)
>>>>>>>>>>>>>>>>>>&-1	byte	>-2
>>>>>>>>>>>>>>>>>>>&0	pstring	x	%s
# 7th possible text description
>>>>>>>>>>>>>>>>>>>>&0	byte	<9	(%d)
>>>>>>>>>>>>>>>>>>>>>&-1 byte	>-2
>>>>>>>>>>>>>>>>>>>>>>&0 pstring x	%s
@


1.1.1.1.2.1
log
@file spectrum was added on branch jym-xensuspend on 2009-05-13 18:52:00 +0000
@
text
@d1 49
@


1.1.1.1.2.2
log
@Sync with HEAD.

Second commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
@
text
@a0 49

#------------------------------------------------------------------------------
# spectrum:  file(1) magic for Spectrum emulator files.
#
# John Elliott <jce@@seasip.demon.co.uk>

#
# Spectrum +3DOS header
#
0       string          PLUS3DOS\032    Spectrum +3 data
>15     byte            0               - BASIC program
>15     byte            1               - number array
>15     byte            2               - character array
>15     byte            3               - memory block
>>16    belong          0x001B0040      (screen)
>15     byte            4               - Tasword document
>15     string          TAPEFILE        - ZXT tapefile
#
# Tape file. This assumes the .TAP starts with a Spectrum-format header,
# which nearly all will.
#
0       string          \023\000\000    Spectrum .TAP data
>4      string          x               "%-10.10s"
>3      byte            0               - BASIC program
>3      byte            1               - number array
>3      byte            2               - character array
>3      byte            3               - memory block
>>14    belong          0x001B0040      (screen)

# The following three blocks are from pak21-spectrum@@srcf.ucam.org
# TZX tape images
0      string          ZXTape!\x1a     Spectrum .TZX data
>8     byte            x               version %d
>9     byte            x               \b.%d

# RZX input recording files
0      string          RZX!            Spectrum .RZX data
>4     byte            x               version %d
>5     byte            x               \b.%d

# Floppy disk images
0      string          MV\ -\ CPCEMU\ Disk-Fil Amstrad/Spectrum .DSK data
0      string          MV\ -\ CPC\ format\ Dis Amstrad/Spectrum DU54 .DSK data
0      string          EXTENDED\ CPC\ DSK\ Fil Amstrad/Spectrum Extended .DSK data
0      string          SINCLAIR        Spectrum .SCL Betadisk image

# Hard disk images
0      string          RS-IDE\x1a      Spectrum .HDF hard disk image
>7     byte            x               \b, version 0x%02x
@


