DSP Snapshot file format (a.k.a. .DSP) is bassed in Z80 v2.X format. In fact
they have the same header, but instead using a simple compress metod DSP format
uses ZIP compresion. Header description is:
Offset Length Description
---------------------------
0 1 Z80 A register
1 1 Z80 Flag registers
2 2 Z80 BC register pair
4 2 Z80 HL register pair
6 2 Allways 0
8 2 Z80 SP (Stack pointer)
10 1 Z80 Interrupt register
11 1 Z80 R (Refresh register)
12 1 Bit 0 : Bit 7 of the R register
Bit 1-3: Border colour
Bit 4 : No meaning
Bit 5 : All ways 1
Bit 6-7: No meaning
13 2 Z80 DE register pair
15 2 Z80 BC' register pair
17 2 Z80 DE' register pair
19 2 Z80 HL' register pair
21 1 Z80 A' register
22 1 Z80 Alt Flag register
23 2 Z80 IY register
25 2 Z80 IX register
27 1 Z80 IFF1:
0: Disable interrupts
1: Enable interrupts
28 1 Z80 IFF2
29 1 Bit 0-1: Z80 IM (Interrupt mode 0, 1 or 2)
Bit 2 : 1=Issue 2 emulation
Bit 3-7: No meaning
30 2 Allways 23
32 2 Z80 PC (Program counter)
34 1 Hardware mode:
0 - Spectrum 48k
3 - Spectrum 128k
35 1 Last OUT to 7ffd (Spectrum 128K)
36 1 Unused 0
37 1 Unused 0
38 1 Last OUT to fffd (Spectrum 128K)
39 16 AY-8912 contents (Spectrum 128K)
As you can see the header is a simplistic version of Z80 v2.X format. DSP format uses
also the 3 bytes header before data section as follows:
Byte Length Description
---------------------------
0 2 Length of compressed data (without this 3-byte header)
2 1 Page number of block (see below)
3 -- ZIPed Data
Page Spectrum 48K Spectrum 128K
------------------------------------------
0 48K rom Rom 1 (basic)
1 - -
2 - Rom 0 (reset)
3 - Memory page 0
4 Memory 8000-bfff Memory page 1
5 Memory c000-ffff Memory page 2
6 - Memory page 3
7 - Memory page 4
8 Memory 4000-7fff Memory page 5
9 - Memory page 6
10 - Memory page 7
With this format you can save about 25%-50% of space, it's fast and compatible.
If you want more information, please revise the emulator code.
|