1. Registry functions
The set of functions are changed to consistently use bool arguments.
The macros are changed to inline functions to improve type checking.
RegSaveValue() are overloaded with help of templates to reduce
typecasting at call sites. For instance, bool value would be converted
consistently instead of relying on call sites to convert bool to int values.
2. Memory functions
BOOL usages were unnecessary. Mostly internal usages which can simply be bool.
3. FrameBase
Some member variables are changed to bool.
BOOL was used because of those Registry functions.
Additional changes:
- Some expressions are forced to be bool when assigning to bool variables.
. power-cycle now resets the LastRamWrite flag
. if slot0 LC is enabled for RAM write, and a slotN Saturn is set to write protect, then writes still go to s0 LC's RAM
* Mem dump cmds without any args will now display the prefix address
* Support data sub-window (that reflects m1 dump)
* Breakpoint display: Right align R and W at end of line
* Help doc: Update Memory page to include prefix address examples
* Help doc: Update Breakpoint & Memory pages: add images showing address prefixes as shown in the UI
---------
Co-authored-by: michaelangel007 <michaelangel007@sharedcraft.com>
* Minor tidy
* Changes:
. semicolon now Comment EOL
. double fwd-slash now Divide floor
. (single fwd-slash unassigned)
* . fwd-slash now parsed in Range_GetPrefix()
. WIP: 'bp bank/addr'
* Add error msgs
* Extend Breakpoint_t struct
* Update cmd 'bpl' to support displaying prefixes
* Do prefix checks & output error msgs
* Add _CheckBreakpointValueWithPrefix()
. support bank, for BP_OP_EQUAL
Stop reason: include BP id
* WIP: fix BPs (non-BPM)
* Fix cmd 'bpr'
* Stop reason: don't show BP id for BP_HIT_REG (as it already includes it)
Add comment about nArgs from calling funcs
Refactor _CmdBreakpointAddCommonArg(): nArgs
* Stop reason for memory BP: show full prefixed address
* Stop reason: output BP id in consistenct way
* Support ROM prefix filter
* Complete addr prefix logic
* Improve logic
* BP: 'HDD DMA to/from memory' - use common hit id function
* Support rw bank 100
* Support double forward-slash at start of line as a comment
* Refactor: use debugger naming convention for vars
* Changed prefix errors from 'bad' to 'out-of-range'
* DebugInitialize(): Reset g_breakpointHitID
* Refactor: use debugger var naming convention & formatting style
* Switch divide-operator to the underscore char, and allow double-fslash as a comment anywhere on a line
* Update help for debugger calculator
* Update help for debugger breakpoints
* Update help for debugger breakpoints (conditional)
* Fix help:breakpoints.html & fix ArgsGetRegisterVlaue() to do case-insensitive compare
* Fix underscore to be treated as a alphanumeric in a few edge cases
* Revert to using '//' as divide operator
* Help: update debugger Breakpoints & Calculalor pages
* Help: update debugger Calculator (missed one)
* Detabify and align
* Display (1) or (2) prefix for LC1 or LC2 breakpoint
* #1419 Added Aux.1 and Aux.N indicators
* Display (1) or (2) suffix for LC1 or LC2 breakpoint
* Extend cmd 'bpl' to display BP's end addr
* Show both bank and slot together
* Fix spacing for BP with range
* Add: FG_INFO_BP_MEM, FG_INFO_MEM_WRITE, BG_INFO_MEM_BANK_LC, FG_INFO_MEM_BANK_LC colors
* Cleanup
* Add 3x5 mini hex numbers
* Mini hex font to have rounded 0,A,C glyphs
* Display 2 hex Bank now
* Support edge-case for bank 0x100
* Tidy up end red spacer
* Refactor & introduce new struct AddressPrefix_t
* Fix a few bugs:
. bpl: fix end addr
. fix for 'R' and 'W' not coloured for single-byte BPs (eg. bpmr 100)
---------
Co-authored-by: michaelangel007 <michaelangel007@sharedcraft.com>
Better support the IIe's aux slot when it's empty or has the 80-col(1KiB) card.
- any h/w using this alternate CPU emulation, (ie. aux=empty or 80-col(1KiB)), then the 'mem' cache is completely bypassed.
Debugger: change all the direct 'mem' accesses to go via ReadByteFromMemory().
TestCPU6502: test the alt CPU emulation code too.
. Command line config only, and only permitted in slot 3 for now.
. Save-state Unit v9: Extended: memory (added 'Last Slot to Set Main Mem LC', 'MMU LC Mode').
. Add LanguageCardManager class.
- Simplify common StrFormat(), especially in Debugger (changes upcoming)
- Add helpers StrAppendByteAsHex() and StrAppendWordAsHex()
- Add helpers StrBufferAppendByteAsHex() and StrBufferAppendWordAsHex() for plain string buffer
. Split AppleWin -> Core with the functionality really needed by the emulator.
. Split AppleWin -> Utilities for generic code not called by other emulator components.
. Split AppleWin -> CmdLine for the command line option parsing.
Support 2nd Disk][ in slot-5, via command line:
- -s5 diskii
- -s5d1 \<imagefile\>
- -s5d2 \<imagefile\>
NB. there's currently no Configuration UI support, except the Drive icons' tooltips show what's in slot-5 & slot-6 (for drive-n). So there's no way to eject the disks or insert new disks. The use-case I'm supporting it Wasteland which just has the 4 disks in the 4 drives.
Improved card management:
- Added `class Card` (in Card.h) which all other cards (that exist as classes) derive from (eg. LC,SSC,Mouse,Disk2).
- Added `class CardManager` (in CardManager.cpp\h) which now manages the 8 slots (and aux slot).
- Added `class Disk2CardManager` (in Disk2CardManager.cpp\h) which provides methods for operations that act on all Disk2 instances at the same time.
- Currently limited to just 1x SSC and 1x Mouse card (why would you need more?). This simplifies things, meaning there's no need to have dedicated SSCManager / MouseCardManager objects.
- Currently the 2nd Disk2 card can only be put into slot-5. This limitation is just due to the complexity of the Configuration UI. Having a more general drop-down per slot UI would remove this limitation.
* Refactor Language Card:
. MemSetPaging() now not used for $C080-C08F accesses.
- Instead LC registers its own I/O handler like all other slot 1-7 cards.
. Saturn uses base LC's 16K for bank0
* Move all 'modechanging = 0' to UpdatePaging()
Added support for #590:
* Changed Apple II original to default to no LC
* Added new cmd-line switch: -s0 <languagecard|lc>
* Changed so when LC is in slot-0, it now use Apple II+'s F8 (auto-start) ROM
Support for #408:
* added slot-0 LC and Saturn 128K for Apple II and II+
* added save-state support
- for slot-0 LC/Saturn, save the LC state in the slot-0 card, not the //e MMU; and switch to a new Apple2 unit ver2
* added g_Slot0, g_SlotAux
* added new LanguageCard.cpp/h to project and moved Saturn code into these new files.
* updated VS2013,2015,2017 projects