Mouse/Trackpad drag across the screen emulates paddles
Click on the screen emulates button 0
Ignore reads from C020 (tape out)
Add BRA instruction for 65C02 (maybe not necessary)
Disable audio in FAST mode
Throttle a little better when audio is enabled - stopped stutter
GLFW doesn't pass through Mac CAPS lock key for some reason.
CAPS button in GUI works, though.
Implement more instructions, mostly for ChopLifter
DEC abs, X
INC abs, X
AND (ind), Y
AND abs, X
ROR abs
Now ChopLifter needs unimplemented SED! Probably uses decimal mode while printing score.
Set "then" at end of CPU loop to try to throttle better. Not sure it helps.
Fix ADC abs (was accidentally adding Y to address)
Also handle bank switch registers on write
Initialize CPU6502 registers to 0 to match fake6502
Avoid spurious differences
Implement more instructions
ADC (ind), Y
ADC abs, X
ORA zpg, X
Floppy disks partially work:
apple2e -noaudio -fast -diskII disk2romfile {floppy1name,"none"} {floppy2name,"none"} apple2e.rom
Import nybblizer from Shamus but only DOS
Support floppy hardware
track motor stepper
enable
read
Add -noaudio (otherwise execution is throttled by waits once audio buffer is filled)
Only read ROM at D000 and E000 if C08X_read_RAM isn't turned on
RAMRD, RAMWRT, and ALTZP are implemented, note them as such in constructor
Correctly decode C08X soft switches
Implement a bunch more instructions
INC abs
LDY abs, X
SBC abs, Y
ADC abs
ASL abs
LSR abs, X
ORA abs
ORA abs, X
AND abs, Y
STA (ind, X)
LDX abs
CPX abs
EOR (ind, X)
EOR abs
EOR abs, X
STX abs
Throttle to actual number of clocks per instruction
Temporarily enable "Fake6502" instead of my CPU because there's an obvious difference
Better blink speed in interface.cpp
Fix up clock timing on absolute-indexed, indirect-indexed, and branch instructions
Emitted clock ticks now match up with emulated and video recorded beep sound
(code to save off and postprocess ticks not checked in)
Add button class to interface
Check for press/drag/release of RESET button
Add FG and BG color for textport shader (for active button)
Handle RESET and REBOOT events in main loop
-fast command-line option and "fast" debugger command enable 6502 to essentially run as fast as possible.
In "fast mode", execute approximately 10 seconds worth of instructions
before UI update.
Since UI update is probably locked to 60Hz max, upper limit will be 600x normal speed
But my guess is (on my Macbook Pro 13 Retina 2013) it's running about 70x,
so there's enough overhead to limit execution to ~70MHz.
Move to GL 3.2
Draw a quad with shaders depending on the mode in that part of the screen
HIRES shader reads from hires texture
TEXTPORT shader reads from textpor texture and indirects through a font
to get pixel values
MIXED now supported
Still to do: BLINK text, INVERSE text, LORES, gang up HGR memory updates
Why doesn't cursor flash the checkerboard?
Only output the textport every 16ms, and only if it's changed.
Be more consistent with throttling to ~1.023MHz by using a constant.
Fix bug where timeslice wasn't reduce when # of instructions was reduced
Merge lots of instruction improvements and fixes
Lift keyboard processing out of MAINboard
Make disassembler return a string - could be inserted into a queue for
later printing if desired
Add "banking" debugger command to exit the next time a bank is switched
Add abort_on_memory_fallthrough flag to force exit if memory access unhandled
Consolidate flag changes for SBC and ADC to "set_flags" command
Change "sw" member of SoftSwitch to "enabled" for readability
Change name of c{1,3}00_rom to rom_C{1,3}00 for consistency with rom_{D,E}000
Mark HIRES and MIXED flags as implemented; let them be caught in display
Add DEBUG_WARN flag
SZP is a RAM, not a ROM
Improve backed_region by using a RAM/ROM enum instead of a readonly boolean
irom is now i1rom (backing 0xC100)
Add i3rom backing 0xC300 and implement C3ROM switch
Add -debugger flag to start in the debugger
Don't step CPU when "debug" command processed
Remove "go_verbose" function
Allow a lambda to enable or disable the region
pass a name
Put them in a vector on initialization so they can be probed in a for loop
Currently has a bug - regresses
"clean" Makefile target
Rearrange DEBUG constants so least bits trigger output with most impact
New "implemented" bool SoftSwitch
Add page2 handling to textport (untested)
Separate out "region" encapsulating address start and end for convenience
Factor out "set_flags()" for most common "flag_change()" sequences
Move comment with instruction opcode onto case for compactness
Remove old disassembly in favor of open source disassembly
Run about as many 6502 instructions as can run in .1 seconds running at 1MHz, measure the duration, and then sleep the difference between the duration and .1 seconds of wall clock time.