Changes

Snapshot

4,446 bytes added, 12:03, 9 September 2024
/* BRKS */
The following chunks are currently defined:
== DSCA,DSCB CPC+ ==
This chunk is supported by Arnold, WinAPE , No$CPC and ACE; it is saved only when . Arnold, WinAPE and ACE will save the related option is block when Plus configuration enabled. No$CPC will save the block if the Plus features have been unlocked.
The DSCA block contains the filename of the disc image inserted into drive A. The filename is stored as 8-bit ASCII (any Unicode characters with codes 0x100 or above will be translated to ? and therefore filenames with these characters can't be stored in Snapshots). The length of the block is the length of the filename in bytes. DSCB is similar to DSCA but stores the filename of the disc image inserted into drive B. == TAPE == This chunk is supported by ACE; it is saved only when the related option is enabled. The TAPE block contains the filename of the tape image inserted. The filename is stored as 8-bit ASCII (any Unicode characters with codes 0x100 or above will be translated to ? and therefore filenames with these characters can't be stored in Snapshots). The length of the block is the length of the filename in bytes. == ROMS == This chunk is supported by WinAPE and ACE; it is saved only when the related option is enabled. This block contains When creating a list of filenames for each ROM (and cartridge) that is defined. The length of the block is the length for all strings. If a ROM is not defined, a single NUL (0) byte is present, otherwise there is a null terminated 8-bit ASCII string. First in the list is the filename (or internal name) for the cartridge (prefixed with a 'A' character), followed by lower rom and then upper roms 0-31 (WinAPE) or 0-255 (ACE). WinAPE lists internal ROMs by their internal name (the name listed in the drop down when you configure the roms, e.g. OS464).ACE always put the actual file name, even for internal ROMs (e.g. System/Firmware_v3.rom). After the list of the upper ROMs, ACE also put the names of the internal Basic and AMSDOS ROMs.Then, the presence of the "CartridgeKeepExtROM" let ACE know if the cartridge ROMs should disable installed external upper ROMs or not (depending on user preferences). NOTE: The selected Multiface ROM is not saved in the snapshot. == INFO == This chunk is written by No$CPC. It contains an 8-bit ASCII string with the version information for No$CPC. == MEM0-8 == The MEM0-8 several chunks contain at most 64KB of data. The data may be compressed or stored uncompressed. If the size is exactly 65536 bytes the data is uncompressed, otherwise it is compressed. Up usually a good idea to 512KB additional RAM can be stored in a snapshot.  The compression scheme is RLE with 0x0e5 as place the control byte. Data is encoded as: * <byte> for a single occurrence of a byte (not 0x0e5) (e.g. 0x013)* 0x0e5,<count>,<byte> for multiple occurances of a byte (e. 0x0e5,0x04,0x013 for 0x013 repeated 4 times)* 0x0e5,0 for a single 0x0e5 byte (e.g. 0x0e5) The blocks are: * MEM0 - main 64KB ram* MEM1 - c4,c5,c6,c7 configurations (extra 64KB ram CPC+ one in 128KB machines) (256KB Dk'Tronics RAMfirst position, X-MEM)* MEM2 - cc,cd,ce,cf configurations because some (256KB Dk'Tronics RAM, X-MEMold)* MEM3 - d4,d5,d6,d7 configurations (256KB Dk'Tronics RAM, X-MEM)* MEM4 - dc,dd,de,df configurations (256KB Dk'Tronics RAM, X-MEM)* MEM5 - e4,e5,e6,e7 configurations (256KB Dk'Tronics Silicon Disk, X-MEM)* MEM6 - ec,ed,ee,ef configurations (256KB Dk'Tronics Silicon Disk, X-MEM)* MEM7 - f4,f5,f6,f7 configurations (256KB Dk'Tronics Silicon Disk, X-MEM)* MEM8 - fc,fd,fe,ff configurations (256KB Dk'Tronics Silicon Disk, X-MEM) === Notes === 1. A snapshot may contain a mix of "standard" memory data (e.g. the data follows the header tools and is uncompressed) and additional MEM blocks as required. 2. If the snapshot is not compressed, then up to 128KB will be stored as "standard" memory data, the additional RAM stored in MEM2-MEM8 blocks. 3. If the snapshot is compressed, then the "standard" memory data will have 0 size and there will be a MEM0 in addition to the additional memory blocks. 4. Version 3 doesn't require memory to be continuous. A Dk'tronics silicon disk emulators are relying on it's own can be described with this version. 5. WinAPE allows a 4MB RAM expansion to be enabled but doesn't save the additional RAM in the snapshot. 6. ACE can save additional memory in snapshots (up to 4MB) using the MX?? chunks. == MX09-40 == This chunk is supported by ACE. MX?? chunks allow snapshots to store up to 4160KB ram. MX?? chunks are following MEM0-8 chunks. They are numbered from 09 to 40 (hexadecimal numbering).Information are stored compressed like in MEM0-8 chunks. == CPC+ == This chunk is supported by Arnold, Winape, No$CPC and ACE. Arnold, Winape and ACE will save the block when Plus configuration enabled. No$CPC will save the block fail if it is not the Plus features have been unlockedcase.
{|
| ASIC is waiting for byte from unlock sequence. e.g. if "2", ASIC is waiting for &amp;FF, the first byte of the unlock sequence. if "3" ASIC is waiting for &amp;77, the second byte of the unlock sequence.
|}
 
== DSCA,DSCB ==
 
This chunk is supported by WinAPE and ACE; it is saved only when the related option is enabled.
 
The DSCA block contains the filename of the disc image inserted into drive A. The filename is stored as 8-bit ASCII (any Unicode characters with codes 0x100 or above will be translated to ? and therefore filenames with these characters can't be stored in Snapshots). The length of the block is the length of the filename in bytes.
 
DSCB is similar to DSCA but stores the filename of the disc image inserted into drive B.
 
== TAPE ==
 
This chunk is supported by ACE; it is saved only when the related option is enabled.
 
The TAPE block contains the filename of the tape image inserted. The filename is stored as 8-bit ASCII (any Unicode characters with codes 0x100 or above will be translated to ? and therefore filenames with these characters can't be stored in Snapshots). The length of the block is the length of the filename in bytes.
 
== ROMS ==
 
This chunk is supported by WinAPE and ACE; it is saved only when the related option is enabled.
 
This block contains a list of filenames for each ROM (and cartridge) that is defined. The length of the block is the length for all strings.
 
If a ROM is not defined, a single NUL (0) byte is present, otherwise there is a null terminated 8-bit ASCII string.
 
First in the list is the filename (or internal name) for the cartridge (prefixed with a 'A' character), followed by lower rom and then upper roms 0-31 (WinAPE) or 0-255 (ACE).
 
WinAPE lists internal ROMs by their internal name (the name listed in the drop down when you configure the roms, e.g. OS464).
ACE always put the actual file name, even for internal ROMs (e.g. System/Firmware_v3.rom).
 
After the list of the upper ROMs, ACE also put the names of the internal Basic and AMSDOS ROMs.
Then, the presence of the "CartridgeKeepExtROM" let ACE know if the cartridge ROMs should disable installed external upper ROMs or not (depending on user preferences).
 
NOTE: The selected Multiface ROM is not saved in the snapshot.
 
== INFO ==
 
This chunk is written by No$CPC. It contains an 8-bit ASCII string with the version information for No$CPC.
 
== MEM0-8 ==
 
The MEM0-8 chunks contain at most 64KB of data. The data may be compressed or stored uncompressed. If the size is exactly 65536 bytes the data is uncompressed, otherwise it is compressed. Up to 512KB additional RAM can be stored in a snapshot.
 
The compression scheme is RLE with 0x0e5 as the control byte.
 
Data is encoded as:
 
* <byte> for a single occurrence of a byte (not 0x0e5) (e.g. 0x013)
* 0x0e5,<count>,<byte> for multiple occurances of a byte (e. 0x0e5,0x04,0x013 for 0x013 repeated 4 times)
* 0x0e5,0 for a single 0x0e5 byte (e.g. 0x0e5)
 
The blocks are:
 
* MEM0 - main 64KB ram
* MEM1 - c4,c5,c6,c7 configurations (extra 64KB ram in 128KB machines) (256KB Dk'Tronics RAM, X-MEM)
* MEM2 - cc,cd,ce,cf configurations (256KB Dk'Tronics RAM, X-MEM)
* MEM3 - d4,d5,d6,d7 configurations (256KB Dk'Tronics RAM, X-MEM)
* MEM4 - dc,dd,de,df configurations (256KB Dk'Tronics RAM, X-MEM)
* MEM5 - e4,e5,e6,e7 configurations (256KB Dk'Tronics Silicon Disk, X-MEM)
* MEM6 - ec,ed,ee,ef configurations (256KB Dk'Tronics Silicon Disk, X-MEM)
* MEM7 - f4,f5,f6,f7 configurations (256KB Dk'Tronics Silicon Disk, X-MEM)
* MEM8 - fc,fd,fe,ff configurations (256KB Dk'Tronics Silicon Disk, X-MEM)
 
=== Notes ===
 
1. A snapshot may contain a mix of "standard" memory data (e.g. the data follows the header and is uncompressed) and additional MEM blocks as required.
 
2. If the snapshot is not compressed, then up to 128KB will be stored as "standard" memory data, the additional RAM stored in MEM2-MEM8 blocks.
 
3. If the snapshot is compressed, then the "standard" memory data will have 0 size and there will be a MEM0 in addition to the additional memory blocks.
 
4. Version 3 doesn't require memory to be continuous. A Dk'tronics silicon disk on it's own can be described with this version.
 
5. WinAPE allows a 4MB RAM expansion to be enabled but doesn't save the additional RAM in the snapshot.
 
6. ACE can save additional memory in snapshots (up to 4MB) using the MX?? chunks.
 
== MX09-40 ==
 
This chunk is supported by ACE.
 
MX?? chunks allow snapshots to store up to 4160KB ram.
 
MX?? chunks are following MEM0-8 chunks. They are numbered from 09 to 40 (hexadecimal numbering).
Information are stored compressed like in MEM0-8 chunks.
== BRKC ==
This chunk is written by ACE when some breakpoints are set. When loading a snapshot, the breakpoints found in this chunk are added to the one already installed.
The number of stored breakpoints in the chunk is given by the chunk size divided by 216 (the size on of one breakpoint data structure).
{|
===Notes===
1. Symbol are (obviously) limited to 255 characters, cannot begin with a number (0-9), and only a limited set of ASCII char is allowed (a-z, A-Z, 0-9, _, .). 
2. The map type determines the memory layout for which the symbol is valid. The meaning of the values for map bank and map page depends on the map type value.
Possible values fir map type are:
== BRKS ==
This chunk is written by older versions of WinAPE when some breakpoints are set. Newer versions of Winape write WABP chunk.
ACE can import breakpoints from this chunk but won't create it (BRKC is used instead).
The chunk contains 1 0 or more breakpoints. Each breakpoint's data has the same size so you can determine the number of breakpoints from the chunk's size.
Each breakpoint has the form:
== WABP ==
This chunk is written by WinAPE when some one or more breakpoints are set. The exact details are begin worked out.
It seems to beThe chunk contains in this order:
4 bytes - number of user * code breakpoints(program counter)* memory breakpoints (read, write, read/write)* i/o breakpoints (read, write, read/write)
Each user breakpoint:section begins with a 4 byte little endian count of the number of items in that section.This is followed by each item.
type,4 byte address=== Code breakpoints ===
Then, 4 bytes 32-bit count - number of code breakpoints (will be 0 if there are no code breakpoints) Each code breakpoint:  1 byte origin (see note 1) 4 bytes 32-bit winape memory address (see note 2) if count is present (see note 2):  4 bytes - maximum count 4 bytes - count so far if condition is present (see note 2):  4 byte - length of condition in characters/bytes (note 3) n bytes - characters/bytes of condition (note 4) NOTES:* 1. the origin of the breakpoint: 1 - 'user'. Added by the user clicking in the left margin of the disassembly view in the debugger. 4 - 'assembler'. Added by the user clicking in the left margin in the assembler window. * 2. Winape's addressing scheme is 4 bytes. The upper 16-bits effectively define the internal 64KB pages it uses. Bit 31 will be set if the 'count' is used and present in the file. Bit 30 will be set if the 'condition' is used and present in the file. === Memory breakpoints ===  4 bytes 32-bit count - number of memory breakpoints (will be 0 if there are no memory breakpoints)
Each memory breakpoint:
Then 1 byte access (see note 1) 4 bytes 32-bit winape memory address (see note 2) Following this will be the count and condition in that order if each is present. if count is present (see note 2):  4 bytes - maximum count 4 bytes - count so far if condition is present (see note 2):  4 byte - length of condition in characters/bytes (note 3) n bytes - characters/bytes of condition (note 4) always: 2 bytes - unknown. NOTES:* 1. bit 7 will be set for write and bit 6 will be set for read. This can therefore represent read only, write only, and read-write* 2. Winape's addressing scheme is 4 bytes . The upper 16- bits effectively define the internal 64KB pages it uses. Bit 31 will be set if the 'count' is used and present in the file. Bit 30 will be set if the 'condition' is used and present in the file.* 3. the condition is a string of ascii characters. This value is the number of characters/bytes.* 4. there is 1 byte per character in the condition. The condition string is not null terminated. === I/O breakpoints ===  4 bytes 32-bit count - number of I/O breakpoints (will be 0 if there are no i/o breakpoints:)
Each i/o breakpoint:
2 bytes 1 byte type (see note 1) 1 byte flags? (6000 readsee note 2) if type is 0, a400 writethen the following is present:  2 byte i/o address mask 2 byte i/o address if count is present (see note 2):  4 byte max count 4 byte current count if condition is present (see note 2 ):  4 byte - length of condition in characters/bytes (note 3) n bytes - characters/bytes of condition (note 4) NOTES:* 1. The type is a value which represents the I/O port addr : 0 = user (address and address maskare stored in the file) 1 = gate array 2 bytes port addr= palette register select 4 bytes counter3 = palette write 4 bytes = interrupt rom and mode 5 = secondary ram mapping 6 = pal 7 = crtc 8 = crtc register select 9 = crtc register write 10 = crtc register read 11 = crtc status read 12 = upper rom 13 = printer 14 = ppi 15 = ppi port a 16 = ppi port b 17 = ppi port b (tape read) 18 = ?? 19 = ppi port b (vsync) 20 = ppi - port c 21 = ppi - tape write 22 = ppi - tape motor 23 = ppi - keyboard 24 = ppi control 25 = psg 26 = psg register select 27 = psg read 28 = psg write 29 = keyboard Where type is not 0, the address mask and address are not stored but can be found in Winape's debugger and they may have a built in condition string lengthwhere specific data or i/o configuration is required. * 2. This byte represents access type and if there is count and condition data stored. Where type is 0, followed the access bits are set by the user, otherwise they are set defined by the type and can be seen in the winape debugger. bit 7,6 = access where bit 7 = write and bit 6 = read. This allows read only, write only and read/write to be specified. bit 5 = unknown. Always set to 1? bit 4 = unknown. Always set to 0? bit 3 = condition data is stored. bit 2 = count data is stored. bit 1 = unknown. bit 0 = unknown. * 3. the condition is a string (of ascii characters. This value is the number of characters/bytes.* 4. there is 1 byte per character in the condition. The condition string is not null terminated).
== DARS ==
2,630
edits