Commit graph

27 commits

Author SHA1 Message Date
steve
c59a4a2dde o debugger
- RAM command now has CART option. displays any additional RAM the
	cartridge may have

o cartridge
    - implemented RAM() command. returns copy of RAM array
    - save/restore banks functions are now save/restore state and deal
	with cartridge RAM in addition to bank information

o debugger/memory
    - better error messages for peek and poke
2020-01-05 18:58:36 +00:00
steve
e6d6d3f0f9 o tia/player
- reworking of timings
    - improved MachineInfo() text
    - work on NUSIZ * more to be done

o stella tv
    - error if no flyback signal has been sent

o metavideo
    - improved metavideo
    - now visualises delayed effects
2020-01-05 18:58:36 +00:00
steve
690c0c158a o disassembly
- corrected linear disassembly to work with non-atari bank switching
	cartridges

o cartridge
    - corrected bank initialisation
2020-01-05 18:58:35 +00:00
steve
730707735e o cartridge
- more general and more flexible handling different cartridge
mapping schemes
    - implemented parker bros cartridges

o disassembler/debugger
    - changes to bank detection to support changes to cartridge module
2020-01-05 18:58:35 +00:00
steve
dc076eac18 * tweaking of code in preparation for future changes
o tia
    - naming of HMOVE concepts - to help thinking

o memory
    - IRQ and Reset addressess moved to addresses package
2020-01-05 18:58:35 +00:00
steve
5393cc5325 o symbols
- reworked symbols package
2020-01-05 18:58:34 +00:00
steve
0e3aaec23a o disassembly
- readded call to flow disassembly
2020-01-05 18:58:33 +00:00
steve
6272b90892 o debugger/script
- renamed Recorder to Scribe
    - any references to script "recording" has been altered

o errors
    - some effort expended tidying up error messages display and
    construction
    - commandline package now uses errors package

o removed panics that would be better served with errors

o removed extraneous calls to fmt.Println and fmt.Printf
2020-01-05 18:58:33 +00:00
steve
e58e6b15eb o disassembly
- stores string representation of disassembly rather than instances
of result.Instruction
    - it was felt that the context of result.Instruction maybe
misleading if probed after the disassembly process (it may not be
obvious to a user of the disassembly package what the limitations are)

o commandline
    - in all instances, error messages containing placeholders now
contain descriptive messages rather than the placeholder itself

o debugger
    - added analysis option to CARTRIDGE command
    - lots more work required on this
2020-01-05 18:58:32 +00:00
steve
d06d49eae0 o disassembly
- added a "linear" disassembly that deciphers every address in the
cart as though it were a valid instruction. this solves the problem with
the original disassembly algorithm (now called flow) caused when the
debugger reaches an area of the code that cannot be found with the flow
mechanism.
2020-01-05 18:58:32 +00:00
steve
cf90552b0a o breaks/traps
- added witchspace as a target - purely to help me debug the
disassembly process but at the same time, it has improved how targets
are defined.
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
e1103db8db o televsion
- removed TVState construct
    - GetTVState now returns an interface{}
    - after second thoughts TVState was too clumsy. debugging targets
	can be constructed with the genericTarget struct
    - the only thing we've lost for now, is automatic consistency of
	labelling but I think that can be solved more elegantly

o debugger/targets
    - parse targets now wraps GetTVState results in genericTarget struct

o panics
    - all panics now follow the same pattern - no mixture of Sprinf()s
    and Errorf()s

o disassembler
    - parseMemory now reaches all areas of the ROM
2020-01-05 18:58:31 +00:00
steve
f53592df13 o disassembly
- reworked disassembly routines so that it works better with
	multi-bank cartridges.
    - unfinished

o cpu
    - reworked cpu testing routines
    - NoSideEffects has been changed to NoFlowControl
    * this means that memory is now written
    * it is intended that NoFlowControl CPU instances be supplied with a
    memory shim that can filter out write addresses as appropriate
    * this was done so that we can see switching of cartridge banks
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
cc137ab542 o cpu
- fixed number of cycles in definition for instruction b7 (lax)
    - fixed memory violation in instruction.GetString()
2020-01-05 18:58:31 +00:00
steve
208ee69977 o cpu
- fixed PLA instruction
    - if accumulator was loaded with a 0 from the stack, status flags
    were not altered [fixes Tennis]
2020-01-05 18:58:31 +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
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
9118ebd304 o cpu
- corrected initial state of break and interrupt disable flags on
	startup
    - result.InstructionData now set as soon as possible in all
	instances
    - corrected RTI implementation
    - corrected RTS implementation
    - implemented some undocumented instructions:
	0x0c skw
	0xb3 lax
	0xc7 dcp
	0x4b asr
    - a homebrew version of pacman (pac-man_4k.bin) now works (up to a
	point; not sure if bug is in the implementation of the new
	instructions or is a video issue)
    - new effect classification "Interrupt" for BRK and RTI
    - instructions_gen program is now more robust

o disassembly
    - added validity check to ParseMemory() function
    - Dump() now uses strings.Builder

o result.Instruction
    - corrected GetString() function
	- function would panic when in videostep mode
	- bug most probably introduced in 58f452cf52343eb27fb495b3b0f6e6675806203f
    - improved output of IsValid()
	- disassembly of problem line is now included as part of the
	    error string
2020-01-05 18:58:29 +00:00
steve
d569fb4bca o targets
- started to generalise targets a little. preparation for future
		changes

o register
	- split register operations into a separate file - for clarity
2020-01-05 18:58:28 +00:00
steve
35e31cccb7 o errors
- refined error package
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
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
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
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