curated package predated the standard errors package introduced in
go1.13
the standard package does a better job of what curated attempted to do
the change of package also gave me a opportunity to clean up the error
messages a little bit
SearchBySymbol() does not normalise addresses for read/write symbol
tables
updated HELP text for POKE and PEEK. made clear that neither command
changed the address or data buses
change symbols/file.go to symbols/dasm.go
labels continue to be mapped but other symbols are not mapped unless
they are a "System" label
this fits better with how symbols are used in practice. however, mapping
labels means that errant labels will sometimes appear in multibank
cartridges
labels/symbols that have a numeric prefix have the number removed
most cartridge formats will always have non-nil results but formats
like ACE or ELF that feed the 6507 program on demand will result in the
disassembly to have gaps - and that's why we need the nil check
the reset can be done automatically but as an optional operation. it has
been discovered that in some situations more preparation is required
before the cartridge is reset. particularly, ACE/ELF type cartridges
where the ARM may executed before the coprocessor disasm/developer
packages are initialised and attached
this check isn't required for standard ROMs but for the ACE format and
similar, where the disassembly can't happen to completion, the nil check
is required
fixed display of instructions in disasm window when they are partially
executed (during video cycling). previously, the partially decoded
instruction was shown which was confusing
CPU shows partially decoded instructions correctly
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
slight change in how disasm window focuses on an address. the previous
belt-and-braces method would cause the scroller to "bounce" if the
scroller was at the bottom of its limit. removed the call to
SetScrollHereY() and will now rely on the calculated offset method
"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.
simplified how the disasm window tracks the current execution. this
should improve the accuracy of when the focus is shifted, particularly
on startup
removed context menu and editing of address label. menu is not needed
now that clicking to toggle the breakpoint is more reliable (that was
fixed a long time ago but the menu remained). inline address label
editing will be replaced with a symbols menu
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)
addresses and bus interface removed and split into cpubus and chipbus
packages.
ReadZeroPage() no longer has any distinction from normal Read()
function.
set defaults for revisions, rewind and ARM tabs of the prefs window (in
addition to the CRT tab). set defaults button labelled appropriately
fixes some race conditions caused by pre/post hooks on prefs values -
prefs values are generally goroutine safe, except when pre/post hook is
defined
*.windowSize and *.windowPos preference values replaced with single *.windowGeometry value
prefs package type now have a pre-hook (called before new value is set).
existing hook/callback clarified to be a post-hook (called after new
value is set).
prefs generic type now handles prefs.GenericGetValueUndefined to
indicate that the value cannot be ascertained at this time (the prefs
package should use the most recent previous value instead)
halting check performance efficiency
less string manipulation in disassembly package. disassembly entry.Label
performance efficiency
reflection gatherer performance efficiency
overlay plotting efficiency. small performance improvement in overlay
plotting. color lookup table is now a straight array not a map
SDL polling efficiency for debug mode
Instruction boundaries can be inferred by the debugging input loop,
which is the only place it is requred. reworked GetAdjustedCoords() in
the televsion package (now called AdjCoords()) to cope with this.
ReqState() is totally replaced by GetCoords()
makes it more convenient/clearer when working with all three coordinate
values (frame, scanline and clock)
changed all packages to GetCoords() where appropriate
renamed "last execution" window to "coprocessor disassembly" where
the actual name of the coprocessor is used
coproc disassembly window now shows an enable and a disable button. if
the emulation is paused the previous two frames of the emulation will be
rerun in order to generate a disassembly
coprocessor disassembly and last execution are shown in tabs. if
disassembly is disabled then the last execution tab will show nothing
but the disassembly tab will show what we have, with a note that it is
not bing udpated
legitimate errors include reading cartridge address with no cartridge
inserted. rewind will now check for CPU/Result state before logging and
returning before any recording has taken place
BRK instruction consumes two bytes but records only one. when
video-stepping over a BRK instruction this caused an error because the
adjustment to the number of bytes read value was done too late
stepping by video does not now check for halting conditions. in some
cases halting on a target is confusing. for example break PC will break
too early if checked every video cycle. we could perhaps reintroduce it
but only when targets are aware of the current state of the machine
(ie. mid-CPU instruction or not)
similarly, halt on video-step will no longer decode the next instruction
at the current PC. the current PC will be in a misleading state between
CPU instruction boundaries
STEP OVER button. not finished yet just a placeholder really