go-wav, statsview and memviz all indirectly used gopkg.in/yaml.v3 which
I do not want to depend upon
WAV functionality is no longer available for wav writing or reading
(supercharger tapes). will try to reintroduce functionality in the
future
removed PCZERO target, which is too specific to be useful. NONEXE halts
execution when the PC reaches any address that isn't a Cartridge or RAM
address.
PERIPHERAL command now accepts AUTO parameter. this will (re)fingerprint
the cartridge and insert the "detected" peripheral
implementation temporary in lieu of an improved setup package
had previously changed template to accept LEFT and RIGHT instead of 0
and 1 to specify the peripheral port but had not updated the
implementation
STICK was sending true/false and not ports.DataStickTrue and
ports.DataStickFalse as data payload
checking of operators for a match were trying to match uppercase
mnemonics and not the lower case we've changed to. visible in incomplete
disassemblies - not see "jmp" or "jsr" correctly
no longer required to generate an obj file with objdump, or a map file
during compilation
ELF binary should contain DWARF data of course (using -g flag during
compilation)
execution is currently outside of cartridge address space. The NonCart
flag is set in addition to the cartridge information
improved how the disassembly window shows coproc/non-cart execution
information, particularly when both conditions are true at the same time
moved controllers and savekeys package to new peripherals package
removed auto controller
changed lazy.Controllers to lazy.Peripherals and Controllers window to
Peripherals window
changed CONTROLLER command to PERIPHERAL command. removed AUTO option
added savekey as an option to PERIPHERAL command and Peripheral window
this helps prevent the emulation running while the GUI is still starting
up. the delay is instead of a synchronisation channel. a channel would
be a better solution but adds a complexity that otherwise might not be
needed
"Follow CPU" will focus when option is set. disasm will not focus on PC
address on pause if "Follow CPU" is not set.
additional notification in disasm window to indicate when coprocessor is
active
moved DefnCycles from disassembly.Entry to instructions.Cycles type.
and now created during generation of instructions table. it makes more
sense to have the formatted string nearer the source of definition and
simplifies the disassembly.Entry type.
entries in new window open up the source window when clicked (if source
is available)
prettied up tooltips in top and source windows, to match tooltip in
illegal access window
source window shows bug icon instead of the chip icon to show that the
line caused an illegal access
"lifetime" does not interact well with the rewind system - it's the
lifetime included repeated frames when rewound
"previous frame" works well with the rewind system
added corresponding tabs to top window
removed LookupSource() from CartCoProcDeveloper interface - there is no
need to call it from a coprocessor implementation
added COPROC command. includes ID and LIST ILLEGAL and LIST SOURCEFILES options
implemented "borrow" mechanism instead of iteration mechanism which was
clumsy and confusing.
simplitied how breakpoints are queried by the lazy system, for the
benefit of the disassembly window
tweaked how emulation state is tracked by the disassembly window
removed linter package. unused and underdeveloped. will reimplement in
the future.
moved disassembly.coprocessor package to coprocessor.disassembly.
main disassembly package no longer cares are about the coprocessor
disassembly.
fixed caused by crash when switching carts (from ARM to nonARM) when the
CoProc Disasm window is open (there's a brief moment when the cartridge
reports having a CoProcessor bus but there is no coproc disassembly in
the debugger. the difference is caused because the coproc disasm is not
part of the lazy system so we see the results first)
a change in how frametriggers on mode change caused multiple reflection
counters to be added - meaning that every counter after the first simply
returned 0 counts of a NewFrame()
two solutions to prevent this from happening:
1: in Debugger.setMode() all debugging frame triggers are removed before
(re)adding the ones we want for the mode
2: AddFrameTrigger() checks the trigger list for the pointer and only
adds if that specific pointer is not present (also added this check
for pixel renderers and audio mixers)
addresses and bus interface removed and split into cpubus and chipbus
packages.
ReadZeroPage() no longer has any distinction from normal Read()
function.
although the words "read" and "write" might lead us to think that we
"peek" from "read" addresses and "poke" to "write" addresses, it is in
fact necessary to "poke" to "read" addresses.
on the surface this doesn't appear to be correct but on further thought
it is obviously true - we are in fact changing the value that is
subsequently read by the CPU, so that means poking to a read address.
playback/recorder and driven input systems moved out of the the ports
package and into a new input package. how the input systems interact has
been clarified and improved - for example, it is now posssible for a
playback file to be used to drive two emulations for comparison purposes
the debugger startup procedure has been clarified with two distinct
startup functions for playmode and debugger - each of which take
different arguments. the clarity has allowed the reintroduction of
recording and playback to the main play mode