Monday, April 13, 2020

#CSpect V2.12.18

Couple of bug fixes for devs....

#CSpect V2.12.18 changes
  • Fixed Layer 2,320x256 clip window
  • Fixed a crash in Layer 2, 320x256 rendering
  • Fixed NextReg0 (machine type) initialisation bug


Saturday, April 11, 2020

#CSpect 2.12.17

Another day, another version. This one for some devs who are trying to use the 1bit tilemaps, and another minor update for plugin writers.

#CSpect V2.12.17 changes
  • 1Bit tilemaps now use Global Transparency for it's transparency, not the tile index
  • Have added GetSprite() and SetSprite() to iCSpect interface for plugin writers


Friday, April 10, 2020

#CSpect V2.12.16

Another very minor update for plugin writers. This gives access to sprite image memory, and undoes a "fix" that wasn't right....

#CSpect V2.12.16 changes
  • Reverted .NEX border colour palette change, was just wrong.
  • Added PeekSprite(address) and PokeSprite(address,value) to iCSpect interface for plugins


Tuesday, April 07, 2020

#CSpect V2.12.15

This release is specifically to add to the plugin API, allowing plugin devs to control the debugger including single stepping and break points.

#CSpect V2.12.15 changes
  • Plugin API TICK() now called while in debugger mode
  • Plugin API can now control the debugger using the new extended eDebugCommand enum
  • -remote command line switch added, to disable the "visible" part of the debugger

public enum eDebugCommand
    {
        none = 0,
        ///Set remote mode - enables/disables debugger screen (0 for enable, 1 for disable)
        SetRemote,
        /// Get the debug state (in debugger or not - returns 0 or 1)
        GetState,
        /// Enter debugger
        Enter,
        /// Exit debugger and run (only in debug mode)
        Run,
        /// Single step (only in debug mode)
        Step,
        /// Step over (only in debug mode)
        StepOver,
        /// Set a breakpoint [0 to 65535]
        SetBreakpoint,
        /// Clear a breakpoint [0 to 65535]
        ClearBreakpoint,
        /// Get a breakpoint [0 to 65535], returns 0 or 1 for being set
        GetBreakpoint,
        /// Set a breakpoint in physical memory[0 to 0x1FFFFF]
        SetPhysicalBreakpoint,
        /// Clear a breakpoint in physical memory[0 to 0x1FFFFF]
        ClearPhysicalBreakpoint,
        /// Get a breakpoint in physical memory[0 to 0x1FFFFF], returns 0 or 1 for being set
        GetPhysicalBreakpoint,
        /// Set a breakpoint on CPU READING of a memory location[0 to 65535]
        SetReadBreakpoint,
        /// Clear a READ breakpoint [0 to 65535]
        ClearReadBreakpoint,
        /// Get a READ breakpoint [0 to 65535], returns 0 or 1 for being set
        GetReadBreakpoint,
        /// Set a breakpoint on CPU WRITING of a memory location[0 to 65535]
        SetWriteBreakpoint,
        /// Clear a WRITE breakpoint [0 to 65535]
        ClearWriteBreakpoint,
        /// Get a WRITE breakpoint [0 to 65535], returns 0 or 1 for being set
        GetWriteBreakpoint,
    };


Sunday, April 05, 2020

#CSpect V2.12.13

So this includes a few fixes users have found in the last version, including an important OS one - hence the quick release.

#CSpect V2.12.13 changes
  • Fixed GetRegister() callback
  • Fixed NextReg 0x05 reading
  • Setup some of the Nextreg on reset (also helps reset a bit better)
  • Fixed bit 3 of new NextReg 0x8E, which fixes dot commands (and sprite editor exiting)
  • Changed number of scanlines to 262 (HDMI) for 60Hz
  • Fixed a crash in plugin creation
  • Added pluging "eAccess.NextReg_Read" type (untested)


Friday, April 03, 2020

#CSpect V2.12.9

Been a while since the last update. This one adds the 2 new Next Registers that are required for the very latest NextOS - which is the main reason for doing this. There are a lot of other fixes as well....


#CSpect V2.12.9 changes
  • 50hz/60hz bit now set in NextReg 5
  • -debug added to the command line. You can now "start" in the debugger.
  • Minor Fix to 60Hz audio
  • Fixed AY partial port decoding
  • Fixed a minor reset stall when it was waiting on a HALT before the reset
  • NextReg 0x8c added
  • NextReg 0x8e added
  • Added AltRom1 support
  • Fixed a serial port "send" bug. Now sends the whole byte
  • Fixed tile attribute byte bit 7 - top bit of palette offset was being ignored
  • Fixed esxDOS date/time function (M_GETDATE $8E)
  • NEX file 1.3 now parsed... should load more things
  • NEX files get IRQs switched off when loaded (as per machine)
  • Fixed esxDOS date is wrong
  • Fixed Border colour now sets the palette entry as well
  • Fixed GetRegister() in plugins not working
  • Fixed Copper run then loop not working
  • Fixed Top line (in 256 pixel high view) is missing
  • Fixed DI followed by HALT should stop the CPU
  • Fixed Hires tilemap has clipping on far right
  • F8 not steps over conditional jumps and branches that go backwards. Branches forwards are taken
  • Fixed ADD HL/DE/BC,A no longer affects flags
  • Fixed OUTI so that B is decemented first. (OTIR was already like that)
  • Minor change to 60hz audio
  • NextReg 0x69 can now be read
  • DMA Continue mode added
  • Fixed a timing issue with DMA, so timing much better


Monday, January 06, 2020

#CSpect V2.12.5

Fixed plugin loading. This was due to the new loading/reset system that was nuking loaded plugin mappings.
I've also added a "Tick" to the plugin interface which gets called once per emulated frame, along with a debugger call which allows you to tell CSpect to enter the debugger. This is handy if you need to debug the operation that "just" happened.
Lastly... I've included a very simple plugin example, along with the interface .CS files to look at.


#CSpect V2.12.4 changes
  • Border now comes from fallback colour if paper/ink mode is 255 (as per hardware)
  • Fixed Plugin loading. Was broken due to new system loading+resetting.
  • Added new "Tick" to iPlugin interface, called once per emulated frame
  • Added Debugger() call to CSpect interface, allowing you to enter the debugger from the emulator
  • Added Plugin example (and current interface)


Friday, January 03, 2020

#CSpect V2.12.4

Another minor fix to fix a memory access bug, and a new MMC folder issue that appeared in the last couple of versions.


SNasm 2.0.21
  • Added “SLL” instruction


#CSpect V2.12.4 changes
  • Fixed memory reading of Layer2 mapping in $2000-$3fff
  • Fixed MMC path, it was being reset when loading SNA/NEX from the command line.


Wednesday, December 25, 2019

#CSpect V2.12.3

This is a minor update to fix Lowres and ULA scrolling. ULA X scrolling now uses the 2 new NextRegs - $26+$27.
It also fixes an annoying startup issue where if you didn't start in the EXE path, it just wouldn't start properly. This was due to the new plugin system, but should now be fixed. (fingers crossed). I've also added the missing LDWS instruction to SNASM


SNasm 2.0.20
  • Added “LDWS” instruction


#CSpect V2.12.3 changes
  • Lowres scrolling fixed.
  • Added ULA Scrolling registers $26 and $27.
  • Fixed HL being set to $10000 after reading a file at the end of memory...
  • Fixed a command line startup issue when not started in the EXE path


Sunday, December 22, 2019

#CSpect V2.12.2

This update is a little different, as it add's the ability for users to write their own "plugins". These plugins can take over memory read/write actions, port in/out's and Next Register access - or all of the above!
They can also query the Next's memory, ports, Next registers and Z80 registers, making it pretty useful for folk to add new toys, or add things like logging or profiling etc.

#CSpect V2.12.2 changes
  • Changed 320x256 mode to use Y/X orientation (0,0)=$0000, (1,0)=$0100, (2,0)=$0200. (0,1)=$0001,(0,2)=$0002 etc...
  • Plugin system can now get/set Z80 registers
  • A better reset on load of an SNA/Nex file. Should be a complete system reset now...
  • 320x256 Layer 2 screen mode added
  • NextReg $70 added ($10=320x256 mode)
  • NextReg $71 added. MSB of Layer 2 XScroll added
  • Added Port 0x123B extended memory mapping mode added - using bit 4 to select (untested)
  • A new plugin system added, so that folk can add their own toys or support custom hardware. See CSpectReadme.txt