- fixed timer so that it updates INTIM on the first cycle
- fixed pixel ordering
o cpu definitions
- fixed definitions
- branch insructions now flagged as page sensitive
- store instructions flagged as page sensitive
o debugger
- added instruction result verification
- search symbols now searches all tables and returns table id of found table
o memory
- renamed some files in memory package
- MapAddress now takes additional argument, readAddress -
used to apply the additional readMask is necessary
- removed readMask application from chipbus.Read() functions
- more convenient for readMask to be in MapAddress only
o debugger
- fixed DEBUGGERSTATE command
- ONHALT and ONSTEP now has optional ECHO argument
- added 0x80 - immediate 3-byte nop
o vcs
- reset operation now resets TIA and RIOT in addition to CPU
o cpu
- reset attempt mid-instruction now returns suitable error
instead of panicking
o debugger
- fixed breakpoint/trap check when it occurs mid-instruction
- broken in 6045b9a9b65d623800b8e386e06fe0fdfb71998f
- fixed PEEK command
- fixed SYMBOL command
- SYMBOL command now takes optional ALL argument - prints every
mirror address of the resolved symbol
- reworked breakpoints so that we can AND conditions together
- breakpoints are now checked every video cycle regardless of
current step mode - this is required if we want to break on
attributes like Horiz Pos (HP) which may jump over values in CPU
step mode
- tidy up how state requests are made
- added info requests
- implemented MOUSE info request
o debugger
- implemented 'LAST DEFN'. prints the definition of the last
instruction executed
- STEP now takes optional CPU or VIDEO keywords
- removed critical sections and replaced with channel
communication
- better lexing/parsing of command input
- break/trap on instruction effect (read, write, etc.)
(we had to implement a more flexible way of satisfying the
target interface for this. it works but it's a bit ugly)
- there is now a way of operating the vcs with a "monolithic"
cpu; that is, for the vcs to cycle the TIA only when the CPU has
completed an instruction, rather than after a every cycle
- no purpose to this except to compare correct and incorrect
behaviour
- "mode PLAY" is now a synonym for "mode RUN"
o chip memory
- implemented PeriphBus interface
- controller now uses PeriphBus interface
- panel now uses PeriphBus interface
o hardware
- consolidated controller and panel packages into peripheral
package
o assert
- added GetGoRoutineID function to help with debugging/testing
- not for general use. it's too slow and in bad taste
- refactored SDL television
- implemented close window for SDL windows
- backquote key toggles screen-mode (debug guides on/off)
- window resizes to fit screen-mode
- sketched in mouse support for SDL implementation
- the intention here is to be able to select breakpoints
with the mouse
o concurrency
- made sure shared memory is locked for all go routines
o errors
- reworked gopher errors a little
- more reliable ctrl-c handling (increased size of signal
channel)
o player sprite
- fixed drawing of double/quadruple size sprites so that HMOVE
works correctly for them
- added universal symbols file
- chip memory definitions no longer include symbol definitions.
they use the new universal symbols file
o cpu
- moved instruction_result from cpu package to result package
o disassembly
- style parameters moved to new result package
o memory / debugger
- improved PEEK command implementation
- can now use symbolic addresses
- performance improvement: color definitions are now a plain
array not a map
- introduced SignalAttributes type. more convenient
o video
- tidied up collisions code
- removed chipWriteRegisters map. ChipWrite() now requires a
uint16 value, given by the "chip write registers" enumerations.
significant speed increase due to no longer having to access a
map multiple times every video cycle
- added ONSTEP command. similar to ONHALT but run every step
- implemented LAST command. debugger no longer runs the result
of the last instruction unless it is part of the ONSTEP
command sequence
- fixed printing of HEX. step mode video no longer crashes if
print style includes hex.
o video
- sketched in collisions support
o cpu
- BIT instruction fixed (zero flag is result of AND with
accumulator but sign and overflow flags are set with
reference to the value from memory)
- added SYMBOL command. searches for address label, returns
address
- fixed disassembly output for ROMs without a symbol file
- improved disassembly a little bit. now attempts to disassemble
entire of cartridge memory and doesn't bail out of loop
at first sign of an unimplemented instruction. cpu
package now returns a ProgramCounterCycled error when
program counter reads past end of memory
o video
- tweaked horizontal movement
- fixed player vertical delay (tested with Pitfall ROM)
- fixed ball enable detection (0x02 not 0x20. doh!)
o cpu
- implemented LAX command
- renamed 3 byte NOP to DOP
- added program counter information to unimplemented instruction
error
o gopher 2600
- error message now returned and displayed in run mode
o
- symbol loading
- printing of disassembly now uses symbols (if available)
- run mode disasm now works as expected
o errors
- added GopherError - started to replace calls to fmt.Errorf()
with instantiations of GopherError
o debugger
- prompt now shows (brief) disassembly of next instruction to be
executed
- fully implemented player sprite
o playfield
- fixed reflection indexing
o debugger
- tweaked command parsing
o corrected CPU instruction definitions
- 0x19 was missing (mistakenly specified to be 0x10)
- ball, missile and player sprite types added - tidy up of
sprite class
- properties moved from video type to the correct sprite type
- delayCounter now renamed and reworked as future. it was felt
that needlessly conflicted with the VCS concept of vertical
delay
- completed horizontal movement for all sprite types
o correction of assorted linting errors
- fixed bug caused by RMW version of instructions working on the
accumulator rather than the memory value via a temporary
register
o debugger / traps
- fixed segfault caused by attempting to set a trap for illegal target
o video / playfield
- fixed bug when writing value to playfield
- clarified names and comments
- fixed write delay for playfield registers
- debugger can be launched without specifying a cartridge
- tidied up commands package
- sketched in filename tab-completion
- corrected tab-completion comments
- panic when list of options is empty
o debugger
- debugger now initialises with plain terminal
- other terminals are still specified on debugger.Start()
- this fixes a bug caused when trying to print error messages
from a startup script
- conversion of user input to upper cause is now more selective
- SCRIPT command added