Byte |
Length |
Description |
0 |
1 |
A register |
1 |
1 |
F register |
2 |
2 |
BC register pair (LSB, i.e. C, first) |
4 |
2 |
HL register pair |
6 |
2 |
Always 0 (the emulator creates snapshoot files like release
2.0 of Lunter's 'Z80' emulator) |
8 |
2 |
Stack pointer (SP) |
10 |
1 |
Interrupt register (I) |
11 |
1 |
Refresh register (R), bit 7 is not significant! |
12 |
1 |
Various flags:
Bit D0: bit 7 of the R-register
Bits D1-D3: border color
Bit D4: always 0
Bit D5: always 1 (e.g. blocks are always compressed)
Bits D6-D7: not used |
13 |
2 |
DE register pair |
15 |
2 |
BC' register pair |
17 |
2 |
DE' register pair |
19 |
2 |
HL' register pair |
21 |
1 |
A' register |
22 |
1 |
F' register |
23 |
2 |
IY register (Again LSB first) |
25 |
2 |
IX register |
27 |
1 |
Interrupt flip-flop IFF1 (0 = DI, otherwise EI) |
28 |
1 |
IFF2 (not particularly important...) |
29 |
1 |
Interrupt mode (0, 1 or 2) |
30 |
2 |
Length of additional header block (contains 23) |
32 |
2 |
Program counter (PC) |
34 |
1 |
Hardware mode: 0 = Spectrum 48K, 1 = Spectrum 48K with ZX
Interface 1, 3 = Spectrum 128K, 4 = Spectrum 128K with ZX
Interface 1, 128 = Timex Sinclair 2068 |
35 |
1 |
In version 128, contains last OUT to 32765; in Timex version
contains last OUT to port 244 |
36 |
1 |
Contains 255 if Interface 1 ROM paged in, except on Timex
version; on Timex version contains last OUT to port 255 |
37 |
1 |
Some flags:
Bit D0: Always 1 (e.g. active R register emulation)
Bit D1: Always 1 (e.g. always full LDIR emulation) |
38 |
1 |
Last OUT to port 65533 (AY register number, 128 version) or
to port 245 (Timex version) |
39 |
16 |
Contents of the AY chip registers (128 or Timex version) |
Page: |
In 48 or Timex version: |
In 128 version: |
0 |
Standard 48 ROM |
Standard 128 ROM |
1 |
Interface 1 shadow ROM |
Interface 1 shadow ROM |
2 |
- |
Derby 128 ROM |
3 |
- |
RAM, page 0 (49152-65535) |
4 |
RAM, 32768-49151 |
RAM, page 1 (49152-65535) |
5 |
RAM, 49152-65535 |
RAM, page 2 (49152-65535 or 32768-49151) |
6 |
- |
RAM, page 3 (49152-65535) |
7 |
- |
RAM, page 4 (49152-65535) |
8 |
RAM, 16384-32767 |
RAM, page 5 (49152-65535 or 16384-32767) |
9 |
- |
RAM, page 6 (49152-65535) |
10 |
- |
RAM, page 7 (49152-65535) |
Byte |
Length |
Name |
Description |
0 |
1 |
HDFLAG |
Header flag byte, bit D0 is 1 to mark header, other
bits are not used |
1 |
1 |
HDNUMB |
Logical number of the sector |
2 |
2 |
HDEMPTY |
Not used |
4 |
10 |
HDNAME |
Cartridge name (e.g. the name given by FORMAT) padded with blanks |
14 |
1 |
HDCHK |
Header checksum by modulo 255 (checksum of the first 14 bytes) |
15 |
1 |
RECFLG |
Data block flag byte:
Bit D0: Always 0, to mark data block
Bit D1: EOF bit, set if this sector is the last sector assigned to some file
Bit D2: Clear if block belongs to file created using PRINT#
Bits D3-D7: Not used (always 0) |
16 |
1 |
RECNUM |
Determines which part of file allocated in this sector lays in
this sector (counting starts from 0) |
17 |
2 |
RECLEN |
Actual data length into the block (ó512), if the
block is not a EOF block, RECLEN must be 512;
unallocated sector has RECLEN=0 with clear EOF bit,
and a bad sector has also RECLEN=0 with set EOF bit |
19 |
10 |
RECNAM |
Name of the file allocated into the sector (padded with blanks) |
29 |
1 |
DESCHK |
Checksum of the descriptor (e.g. of the last 14 bytes) by modulo 255 |
30 |
512 |
DATA |
Actual data |
542 |
1 |
DCHK |
Checksum of the actual data (of whole 512 bytes, even if RECLEN<512) by modulo 255
|