Commit graph

40 commits

Author SHA1 Message Date
steve
8ddaec1233 o debugger
- scripts now pass through input loop, allowing commands that
    control the emulation (like RUN or STEP) to be effective
    - reworked ONSTEP and ONHALT commands
    - added STICK0 and STICK1 commands

o memory / pia
    - improved RAM debugging output
2020-01-05 18:58:32 +00:00
steve
7da83ecade o debugger / breakpoints
- fixed duplicate detection
    - fixed parsing of breakpoint values >16bit (I misread the
      ParseInt() documentation)

o disassembly / commands
    - GREP results now provide context

o gopher2600
    - initscript now definable on the command line

o tia / playfield
    - implemented "scoremode"
    * I'd totally forgotten about this 2600 feature and was trying to
    understand why the "28c3 intro" demo wasn't showing the atari logo
    at the top of the screen. at the same time I had stumbled across
    SvOlli's Revision 2013 lecture where he mentions it. lucky. I would
    have spent a couple of hours probably, scratching my noggin.
2020-01-05 18:58:32 +00:00
steve
6d597c5035 o errors
- renamed GopherError to FormattedError
    - reading files now handled by ioutil.ReadAll(), rather than
    os.Read()
2020-01-05 18:58:32 +00:00
steve
5a223794d4 o gui
- separated gui specific elements from television package
    - sdl implementation moved to gui package
2020-01-05 18:58:32 +00:00
steve
0725530e1c o colorterm / easyterm
- UserRead() fixed such that inputting of certain characters (% and $)
    is reflected correctly

o debugger
    - improved commentary surrounding ctrl-c handling

o system monitor
    - added monitor package to debugger
    - this replaces the call to TV.MetaSignal in the TIA
    - it is thought that this approach will be more flexible
    - plus, it removes debugging specific code from the core emulation

o television
    - renamed a few things so that they better describe new concepts
    introduced with the system monitor package
2020-01-05 18:58:32 +00:00
steve
c1a1d3ef5d o television
- improved debugging output
    - introduced meta-signals - can now show when HMOVE, RSYNC and WSYNC
	are activated
    - flipping between regular and debugging colors can now happen at
	any time
2020-01-05 18:58:32 +00:00
steve
00873d6308 o debugger
- DISPLAY command only opens the display if it is called without
	additional arguments.
    - for example, calling "DISPLAY DEBUGCOLORS" does not cause the
	display to appear.
2020-01-05 18:58:32 +00:00
steve
8ebc46cc6f o sdltv
- keyboard events now selectively handled by callback function, rather than the in the guiLoop
    - benefits to this approach:
	* more flexible - debugger can react differently to keyboard
	    events than, for example, the run mode frontend
	* because the guiLoop is running in a different goroutine there
	    are limits to what it can do to the SDL window. using a
	    callback is the first step in synchronising the goroutines
2020-01-05 18:58:31 +00:00
steve
736cd5bb0b o tia
- debug colours (just the players for now)
    - hmove type now uses a latch to keep track of when hmove event is
	over, rather than the rather clumsy and prone to error method we
	had previously. this goes someway to fixing a bug in the
	emulation caused by late HMOVEs
    o polycounter
	- modified MachineInfo() output
	- updated test routines to reflect changes to MachineInfo output

o debugger
    - added DEBUGCOLORS toggle to DISPLAY command
    - PLAYER command in verbose mode now prints player 0 and player 1
	side by side for easier comparison
    - similarly for MISSILE command
    - verbose PLAYER output now includes commentary of the sprite size
	setting
    - similarly for MISSILE command
    - corrected initialisation script error output
    - removed tab completion time limit - can now cycle through options
	until another key is pressed

o television
    - improved screen size detection and stability routines
    - this currently breaks the fix we had in place for Plaque Attack
	but I think we can probably fix that some other way
2020-01-05 18:58:31 +00:00
steve
2358423ace o debugger
- reworked PEEK and POKE commands
    - reworked watch parsing
    - added HEXLOAD command
2020-01-05 18:58:31 +00:00
steve
297391c488 o disassembly
- added support for multibank cartridges

o breakpoints/traps
    - bank changes are now a valid target
2020-01-05 18:58:31 +00:00
steve
6edf4bbb09 o debugger
- added CARTRIDGE command

o cpu
    - redid/clarified test for post-indexed-indirect addressing

o tia
    - sketched in audio package
    - altered video package and tia to make sure it fitted in correctly
2020-01-05 18:58:31 +00:00
steve
52e847a51b o gopher/vcs
- simplified run and stepping frontend to vcs hardware
    - improved fps mode

o television
    - removed extraneous members in headless class
    - corrected setting of visible screen size
2020-01-05 18:58:31 +00:00
steve
dcf31a379a o debugger
- added the concept of MachineInfoInternal - which is meant to be
    provide deeper and probably inaccessible insight into the emulation
    - added to accomodate new "TIA HMOVE" command
    - retrofitted "TIA FUTURE" in the same way
2020-01-05 18:58:31 +00:00
steve
520bfb9b56 o debugger
- color terminal input loop now responds to gui events correctly
    - fixed debugger/memory layer
    - debugger/memory layer also now searches cartridge specific symbols

o television
    - altered semantics of status requests (for clarity)
    - added Reset() to television interface
    - HeadlessTV implements Reset()

o regression testing
    - now shows complete paths to cartridge file
    - fixes confusion in regression output when cartridges with the same
    name appear in different folders

o video/future
    - rerolled future group Tick() function
2020-01-05 18:58:30 +00:00
steve
37aeb96bfe o tia
- reverted motion clock timings from 480ff22670eb8898b0d15d5f884257232db584bf
    - this visually breaks Keystone Kapers ROM again but this was
    definitely not the right solution because the fix broke both Yar's
    Revenge and the stress-test-cards.

* I really now need to implement automatic regression tests

o debugger
    - implemented grepping of disassembly
2020-01-05 18:58:30 +00:00
steve
ce1b15108a o debugger/memory
- moved memory debugging functions (peek & poke) from memory
	package to debugging package
    - implemented memory watches
2020-01-05 18:58:30 +00:00
steve
9644eb59f0 o memory
- (re)implemented POKE command
    - reworked PEEK a little bit
2020-01-05 18:58:30 +00:00
steve
372743b567 o video
- motion clock now works correctly
    - sprite ticks now called correctly on motion clock
    - vertical delay is now
    - parallel future write buffers
	- one for writes that tick off of the color clock
	- and another one off of the motion clock
	- additionally, each future instance has a ring buffer of length 3
	- 3 seems sufficiently long
    - ball sprite fixed (satisfies stress tests)
    - missile sprite fixed (satisfies stress tests)
    - player sprite fixed (satisfies stress tests)
    - horizontal position of sprite now reflected correctly when HMOVED
    - tidied up MachineInfo() and MachineInfoTerse() of all video elements

o television
    - mask now only drawn if top and bottom are correct
    - this fixes those roms that do not call vsync correctly
    - still not perfect but at least we can now see the screen
    - improved verbose machine info output

o cpu
    - instructions with a WRITE side-effect tweaked

o gopher2600
    - tv not displayed until it can be reasonably assured there will be
    no errors
2020-01-05 18:58:30 +00:00
steve
cb49bf2afb o disassembly
- dump() now uses a io.Writer interface rather than returning a
     string

o debugger
    - ansi code building now uses strings.Builder
2020-01-05 18:58:29 +00:00
steve
ba8e767ad8 o debugger
- implemented step-traps
2020-01-05 18:58:29 +00:00
steve
e7ed5fde34 o debugger
- added TIA FUTURE command
2020-01-05 18:58:28 +00:00
steve
ba8e03ab7d o television
- reworked television module(s)
	- SetVisibility()/SetPause() replaced with RequestSetAttr()

o debugger
	- "DISPLAY SCALE n" now works
	- tightening up of command template parsing - more error
	conditions/messages
2020-01-05 18:58:28 +00:00
steve
0da75cc3ef o television
- setVisibility() now takes showOverscan argument
2020-01-05 18:58:28 +00:00
steve
9179c79ac2 o symbols
- 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
2020-01-05 18:58:28 +00:00
steve
786fb5b254 o 6502 instructions
- 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
2020-01-05 18:58:28 +00:00
steve
74d8f6e297 o debugger
- implemented DROP command
2020-01-05 18:58:28 +00:00
steve
bdd330bc2f o television
- tv breakpoints now set with right mouse button, not left
	button

o debugger
	- moved top-level command parser into commands file
2020-01-05 18:58:28 +00:00
steve
3a20e6d394 o breakpoints
- 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
2020-01-05 18:58:28 +00:00
steve
0a8267d7d6 o television
- 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
2020-01-05 18:58:28 +00:00
steve
e96f052c1f o debugger/input
- parser package renamed to input
	- tokeniser moved to input
	- command templates are now specified using a simple markup
	language
2020-01-05 18:58:28 +00:00
steve
d744e6229a o debugger
- 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)
2020-01-05 18:58:28 +00:00
steve
404430fe08 o debugger
- implemented DISASSEMBLE command
2020-01-05 18:58:28 +00:00
steve
913727407a o symbols
- 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
2020-01-05 18:58:27 +00:00
steve
0d1d4a0f97 o debugger
- 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)
2020-01-05 18:58:27 +00:00
steve
63fa147a16 o debugger
- ONHALT now performs the new command sequence straight away
	- added RAM command
	- HEX output alongside disassembly
2020-01-05 18:58:27 +00:00
steve
4e9f48630b o debugger
- 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
2020-01-05 18:58:27 +00:00
steve
9df59c9aea o player sprite
- 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)
2020-01-05 18:58:27 +00:00
steve
a16ca04b12 o video
- implemented trigger lists for missile/players
	- implemented player sprite
2020-01-05 18:58:27 +00:00
steve
21dbb029f4 o debugger
- improved command parsing, although still lacking in required
	features
	- clear/listing of breaks/traps now handled by CLEAR and LIST
	commands
2020-01-05 18:58:27 +00:00