1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
|
#------------------------------------------------------------------------------
# $File: spectrum,v 1.10 2023/05/08 01:33:36 christos Exp $
# 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.
#
# Update: Sanity-check string contents to be printable.
# -Adam Buchbinder <adam.buchbinder@gmail.com>
# 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`
#
# headers length 19=023 and flag byte 0 indicating a standard ROM loading header
0 string \023\000\000
>4 string >\0
# 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
# The following three blocks are from pak21-spectrum@srcf.ucam.org
# TZX tape images
# 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
0 string ZXTape!\x1a Spectrum .TZX data
#!:mime application/octet-stream
!:mime application/x-spectrum-tzx
# CDT is used for Amstrad tapes
!:ext tzx/cdt
>8 byte x version %d
>9 byte x \b.%d
# 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
# 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 %#02x
# 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)
|