Changes

Jump to: navigation, search

Snapshot

3,284 bytes added, 8 September
/* WABP */
== 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 type (see note 1)4 bytes 32-bit winape memory address (see note 2) NOTES:1. unknown what this is currently for2. uses winape internal memory addressing. === Memory breakpoints === 4 bytes 32-bit count - number of memory breakpoints(will be 0 if there are no memory breakpoints)
Each memory breakpoint:
Then1 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 count4 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-write2. uses winape internal memory addressing. 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 mask2 byte i/o address if count is present (see note 2): 4 byte max count4 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 = palette register select3 = palette write4 = interrupt rom and mode5 = secondary ram mapping6 = pal7 = crtc8 = crtc register select9 = crtc register write10 = crtc register read11 = crtc status read12 = upper rom13 = printer14 = ppi15 = ppi port addra 16 = ppi port b17 = ppi port b (tape read)18 = ??19 = ppi port b (vsync)20 = ppi - port c21 = ppi - tape write22 = ppi - tape motor23 = ppi - keyboard24 = ppi control25 = psg26 = psg register select27 = psg read28 = psg write29 = 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 counter. 4 bytes . there is 1 byte per character in the condition string length, followed by . The condition string (is not null terminated).
== DARS ==
2,564
edits