Changes

Snapshot

4,237 bytes added, 12:03, 9 September 2024
/* BRKS */
===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