- "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
- 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
- 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
- implemented cursor navigation
- implemented history
- ansi source file moved into it's own package
- created easyterm - wraps termios with additional functions
- cartridge file now required on command line when launching
*** versions prior to this used literal strings to specify the
cartridge, which may or may not exist if previous versions are checked
out of the repository
- video stepping doesn't callback to debugger when CPU isn't ready (like cpu
stepping)
- RIOT now only runs once per CPU cycle, instead of once per video cycle
timer now runs as expected
o tia/video
- tidied up sprite types for easier debugging/thinking
o television
- MachineInfo* now reports on whether tv is performing out-of-spec
o sdl tv
- added overlays
- cursor
- screen boundary
- pixel guide
o debugger
- replaced strings.Split(s, " ") and a small amount of post-processing,
with a single call to strings.Fields() - I've just discovered it.
- added STEPMODE command
- STEPMODE VIDEO will now print video step result (what it can of instruction
result)
- implemented script loading and running - no SCRIPT command just yet though
this is intended for initialisation for the time being
- added VERBOSITY and DEBUGGERSTATE commands
o cpu
- better, more complete, printing for instruction result
o sprite/drawSig
- counting drawSig the wrong way, causing pixels in sprites to be
flipped horizontally
- improved ansi color
- moved ui package to debugger/colorterm
o debugger
- replaced SHOW and HIDE commands with DISPLAY command
- DISPLAY command takes optional argument OFF
- replaced CLEAR BREAKS command with BREAK CLEAR
o sprites
- improved MachineInfo() messages
- ball sprite now ticks/pixels correctly
o debugger/breakpoints
- tidied up breakpoints implementation
- reworked print routines so that they are more easily replacable
- added print profiles, to allow formatting of output
o ui
- implemented basic color terminal
o tia
- reworked so that tia sub-components are accessible from outside of
tia package - useful for the debugger
- implemented video stepping
- STEP command now has optional argument CPU or VIDEO
- subsequent calls to STEP (or implied STEP) will default to previous
selection of STEP CPU or STEP VIDEO
o changed vcs.go and gopher.go to reflect changes required by video
stepping implementation
o debugger
- ONBREAK now called ONHALT
- ONHALT command sequence can now be specified
- first version - simply to get something onto the screen
- embeds headlessTV
o HeadlessTV
- implemented TVState type for frameNum, scanline and horizPos fields
- TVState satisfies BreakTarger interface in the debugger
o Breakpoints
- altered breakpoint to account for changes made for TVState
o Debugger
- implemented SHOW and HIDE
o clarified commentary
- implemented video in part
- implemented sprite framework - ball sprite completed
- reorganised existing tia code in repsonse to new code
o debugger
- tweaked existing commands and how they work
- implemented headless TV
o debugger
- VERBOSE is now called HALT - as in "auto command halt"
- no way of setting what command(s) to run on halt just yet
- a real verbose command that flips between verbose and terse printing
of machine state
o polycounter
- separated Reset() and SetResetPattern()
- filled in more of the TIA implementation
- RSYNC works correctly
- polycounter and other components altered as required
o television
- sketched in television interface
- implemented dummy television
o debugger
- syntax normalisation -- allowing variations in how we specify hex numbers
- added VERBOSE command
o renamed mflib package to assert
- Assert function renamed to CheckValueVCS
- added MEMMAP command
o tidy up
- changed pointer recievers to value receivers when the method does
not mutate the type instance
- I'm not sure about this but I like if for now - this way it is
clearer, to me at least, which methods mutate and which don't
o memory
- small reorganisation of memory package in preparation for
implementation of the video chips
o renamed project to "gopher2600"