Commit graph

1523 commits

Author SHA1 Message Date
steve
ac3dd75b18 o debugger
- 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
2020-01-05 18:58:26 +00:00
steve
09f1e21149 o 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
2020-01-05 18:58:26 +00:00
steve
04ede0d08d o riot/timer
- implemented riot timer

o debugger
  - added CLEAR BREAKS command
2020-01-05 18:58:26 +00:00
steve
b18a329706 o SDL TV
- 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
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
b7e037a3b7 o debugger
- sketched in ctrl-c handling
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
0bf65a80f9 o headless
- sketched in command line argument parsing
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
0c19f03c08 o memory
- implemented mapping of addresses to the different VCS area
    - TIA, PIA RAM, cartridge

o cpu
  - MockMem altered so that it doesn't use VCS memory implementation
    anymore - the remapping confuses our tests and it's easier to
    simplify the memory model
  - old MockMem implementation renamed to MockVCSMem
    - not currently used but kept for reference
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