Move all libao operation into interface.cpp
This should have the result of removing all AV and GUI code from apple2e.cpp
OS code remaining in apple2e.cpp should basically be only file I/O, console I/O, and chrono.
Catch ALTCHAR but do nothing about it
Catch VID80 (80VID)
Add aux pages to interface.cpp
Plumb aux pages through apple2e.cpp display_write functions
Implement 80-column text shader using aux page
On cold-start, force Button0/OpenApple on for a short period
This is how cold-start (disk boot) is differentiated from plain RESET
Add padding widget that pads another widget on all sides
Add drag-and-drop functionality to widgets and manage through GLFW
Honor current time through all widget methods
Fix character encoding in text_widget (especially for ' ')
Add floppy_icon widget that manages drag-and-drop and drive motor (activity) light
Later move to vector graphic or bitmap
Add floppy eject and insert notification from APPLE2Einterface
Add activity notification through APPLE2Einterface
Optimize with -O2
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