Changes

Snapshot

931 bytes added, 12:03, 9 September 2024
/* BRKS */
== 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:
Each code breakpoint:
1 byte type 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. unknown what this is currently forthe 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. uses winape internal memory Winape's addressingscheme 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:
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. uses winape internal memory Winape's addressingscheme 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 ===
NOTES:
* 1. The type is a value which represents the I/O port: 0 = user (address and address mask are stored in the file) 1 = gate array 2 = palette register select 3 = palette write 4 = 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 where 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, the access bits are set by the user, otherwise they areset 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,571
edits