Commit graph

33 commits

Author SHA1 Message Date
steve
35e31cccb7 o errors
- refined error package
2020-01-05 18:58:28 +00:00
steve
d5895261bd o television
- 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
2020-01-05 18:58:28 +00:00
steve
10a768c863 o video
- more timing tweaking - still not correct
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
06cca94acd o disassembly
- if no cartridge file has no symbols file then the standard VCS
		symbols are used

o cpu
	- fixed "noSideEffects" version of JSR
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
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
b2a0c9b9ea o video sprites
- fixed sprite rendering

o cpu
	- fixed zero/negative detection for non-accumulator versions of
		INC and DEC
2020-01-05 18:58:27 +00:00
steve
ef47c46803 o cpu
- implemented decimal mode (for ADC and SBC)
	- overflow flag not affected (yet?)
	- fixed how binary mode SBC reacts to an operand of zero
2020-01-05 18:58:27 +00:00
steve
1a59db31d1 o implemented disassembly
- 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
2020-01-05 18:58:27 +00:00
steve
6f2ac8efd1 o cpu
- 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
2020-01-05 18:58:27 +00:00
steve
07c2c068b4 o debugger / vcs
- fixed crash caused by reset attempt when in the middle of an instruction
2020-01-05 18:58:26 +00:00
steve
9b645709b7 o colorterm / ansi
- tidied up ansi module

o breakpoints / traps
	- corrected comments
	- fixed multiple traps

o lint check
	- tidy up in response to lint check

o reverted String() to use MachineInfo() rather than MachineInfoTerse()
2020-01-05 18:58:26 +00:00
steve
480c60d4f9 o debugger
- implemented traps
	- tidied up breakpoint implementations

o tia / video
	- first pass at playfield rendering
2020-01-05 18:58:26 +00:00
steve
18e207400e o cpu
- fixed page fault detection in addressing modes: PreIndexedIndirect,
    AbsoluteIndexedX and AbsoluteIndexedY
2020-01-05 18:58:26 +00:00
steve
f06d958487 o vcs
- 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
2020-01-05 18:58:26 +00:00
steve
70e2352862 o every object that requires it now implemets MachineInfo and MacheinInfoTerse()
- this replaces the previous String() and StringTerse() functions
  - String() now calls MachineInfo() in every instance, for convenience
2020-01-05 18:58:26 +00:00
steve
bd1ca32c11 o tia/video
- 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
2020-01-05 18:58:26 +00:00
steve
5496f7277c o television
- 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()
2020-01-05 18:58:26 +00:00
steve
74c80421f3 o tia
- 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
2020-01-05 18:58:26 +00:00
steve
04f4d34ca7 o tia
- began implementation of tia
  - implemented polycounter more or less fully

o polished up error handling
2020-01-05 18:58:26 +00:00
steve
8105706f7c o debugger
- 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"
2020-01-05 18:58:26 +00:00
steve
eb17bc1f63 o registers
- replaced both register implementations with just one that uses
    32 bit integers as the underlying implementation. very smart and
    very quick by comparison to the bit array implementation.
2020-01-05 18:58:26 +00:00
steve
ac05b88ac9 o cpu
- registers must now be labelled, although the label can be the empty string
  - this means that we specify the name for the register once, at
    creation time, and not everywhere we print out information

o debugger
  - breakpoints now takes advantage of register labels
2020-01-05 18:58:26 +00:00
steve
b41fae1204 o breakpoints
- improved breakpoint parsing/processing
2020-01-05 18:58:26 +00:00
steve
72e647161e o cpu
- removed go routine implementation of cycle stepping; far too slow
  - replaced with a callback implementation. I'm thinking that it might
    not be as flexible but that in the long run that it doesn't matter.
    besides, the speed difference is definitely worth it.
2020-01-05 18:58:26 +00:00
steve
aead7e032d o registers
- reorganised register implementation
  - existing implementation now call rbits
  - added an implementation called r16bits, using uint16 intead of a
    bit array
  - only implemented Load(), Add() and the To*() methods
  - just enough to speed up programme counter operations
  - now sends a reference to InstructionResult over the result channel,
    rather than a copy

o cpu
  - adjusted register declarations to match changes in registers
    implementation

o mflib
  - consolidated assert() function into one package

o debugger
  - sketched in debugger
2020-01-05 18:58:25 +00:00
steve
50b23da4ec o registers
- moved registers from cpu pacakge into separate package
2020-01-05 18:58:25 +00:00
steve
72864b5cfd o cpu
- we now start one goroutine at cpu intialisaton and not one for each
    instruction
  - caching of all 8 bit and 16 bit patterns so we don't have to
    generate them every time
  - improved FPS between 70% to 100%
2020-01-05 18:58:25 +00:00
steve
dd4786c0f3 o debugger
- added basic input loop
  - primitive but effective FPS test
    - added cpu profiler generator

o vcs
  - cartridge attachment working properly
  - now read reset address when machine is reset

o cpu
  - fixed branching
    - backward jumps weren't working
    - cycle count sometimes wrong
  - fixed cycle counts for pre-index and post-index addressing

o
2020-01-05 18:58:25 +00:00
steve
9ad4aad566 o memory
- refinements
  - added white-box testing

o cpu
  - moved cpu definitions into its own package
  - no longer requires csv file at run time
    - csv parser moved into a code generator, embedding the data into
    the code
  - needs refinement
2020-01-05 18:58:25 +00:00
steve
8a031dec2f o cpu now yields after every cycle not every instruction
- StepCycle to be be used if cycle level of granularity is required
  - StepInstruction provided if coarser control is preferred
  - definitions.csv corrected
  - behaviour of status register ToUint8() corrected

o memory
  - MockMem now inherits from main memory implementation and adds
  functionality where required
2020-01-05 18:58:25 +00:00
steve
4c530bf7a7 o initial commit
- 6502 implementation is basically correct but does not handle
        - interrupts
        - pre-fetch cycle
        - anything less fine grained than instruction stepping
      - memory sub-system sketched in

    o retroactive adding of GPL copyright notice
2020-01-05 18:58:12 +00:00