Sunday, November 22, 2020

#CSpect V2.13.00

#CSpect V2.13.00 changes

Note: I am aware most virus scanners are rejecting this. Apparently it's because I open files in "shared" read/write mode. This is so that SD cards can still be written to while the emulator is running. You'll need to add an exception if you wish to use it.

This is a special 'experimental' release so that everyone can try out the new "rewind" feature in the debugger. Specifying -rewind on the command line, or typing 'REWIND' in the debugger will enable/disable it.
This will then let you step 'backwards' using SHIFT+F7, undoing whatever the CPU has just exectued. Memory and CPU state should be solid (along with MMU and ROM usage), and I've started to add in sprite access as well - but this is more untested.
It's good fun, and super handy for debugging when you need to just roll back a little bit....
  • Fixed physical breakpoints in the plugins
  • (Highly) Experiminetal "rewind" debugger feature. Simply press SHIFT+F7 to step back. Currently tracks all RAM access and Sprite port access.There's bound to be HEAPs of issues and bugs with this, but for simple debugging, it should be fine.
  • Added UnStep in plugin system
  • Added "REWIND" debugger command, to allow you to switch the CPU history on/off dynamically
  • Added Debugger message display. Now reports errors when you use a non-existant label etc.
  • Fixed a bug in the rewind of MMUs
  • Swapped to 2.13 coz I was bored of 12.??





Thursday, November 19, 2020

#CSpect V2.12.38

#CSpect V2.12.38 changes

Minor changes and fixes...
  • Added NextRegs $2C and $2E (DAC mirrors)
  • DMA read flags (Bit 5 and Bit 1) added and fixed.
  • Added "_" to BASIC key detection
  • I "think" I've fixed the stuck BASIC mode keys (where : just gets stuck and repeats....)
  • Added OpenAL32.dll to the zip.... turns out that's allowed.
  • on loading of a NEX file, NextRegs are set to what the OS NexLoad sets
  • 32bit mode should work this time....in theory





Wednesday, November 11, 2020

#CSpect V2.12.37

#CSpect V2.12.36/35 changes
  • RAM is now filled with random bytes on power up to help simulate the real machine
  • -fill=$XXXXX allows you top specify a specific byte sequence to fill RAM with
  • Debugger: general layout adjustment.
  • Debugger: text colour changes when user bar over the top for easier reading
  • Debugger: $ added to all hex numbers
  • Debugger: Hex numbers are now coloured for easier spotting
  • Debugger: Added "peek()" of all memory access to the left of the disassembly line
  • Debugger: Added 16bit "peek()" of all 16bit register load/store locations
  • Debugger: Added a small permanent memory dump using 16bit registers as the base address
  • Debugger: ` now displays the current screen in the debugger (Keypad-Enter also works)
  • Debugger: Memory window bookmarks added. CTRL+SHIFT+[0-9] to set, CTRL+[0-9] to jump to.
  • CSpect should now run on 32bit and 64bit machines
  • Now detects if the shader fails to compile, and switches off the shader mode
  • Fixed port $123b 16k bank offset mode
  • Fixed unified attached sprites

#SNasm V3.0.3
Brand new C# version, which will now run on Linux and macOS. I'm sure there are still bugs in here, so released for community testing. It assembles everything I've got, so should be fine.



Tuesday, August 25, 2020

#CSpect V2.12.36

#CSpect V2.12.36/35 changes
  • Fixed F_RENAME to use IX instead of HL (now working)
  • Fixed sprite clipping (I think)
  • First pass at Tiles and Tilemaps in bank 7
  • Faked esxDOS loading now returns an "access denied" error, if it tried to open a file that is write protected
  • Transparent border now working (ULA off)
  • Added F_RENAME (untested)


Saturday, July 11, 2020

#CSpect V2.12.34

Quickly added in the last missing screen mode...

Edit: Fixed a minor issue where hex editing was case sensitive... so you needed to press SHIFT+letter... doh.

Edit: Updated for a couple of new dev features

#CSpect V2.12.34 changes
  • Fixed HEX editing in the memory window so that it's case insensitive. (don't have to press SHIFT)
  • ReadMe.txt now holds the "manual" part of this text file, and this is now "just" the version info.


#CSpect V2.12.33 changes
  • You can now click on the memory window to edit bytes directly by typing HEX values into it ENTER or click off to stop
  • You can now press KEYPAD_ENTER to display the game screen while in the debugger

#CSpect V2.12.32 changes
  • Fixed reg $8E bit 3 usage - don't change RAM mapping
  • Fixed Layer 2 palette colour offsets (NextReg $70)
  • NextRegs $6E and $6F now return top 2 bits as 0


Wednesday, July 01, 2020

#CSpect V2.12.31

Quickly added in the last missing screen mode...

#CSpect V2.12.31 changes
  • Added DAC's B,C and D
  • Added SAVE to the debugger: SAVE "NAME",add,len, SAVE "NAME",BANK:OFFSET,length, SAVE "NAME",BANK:OFFSET,BANK:OFFSET
  • You can now read DMA Registers
  • CTRL+F7 now executes to cursor in the debugger
  • Added the demo "mod_player.nex" added to #CSpect package


Tuesday, June 09, 2020

#CSpect V2.12.30

Quickly added in the last missing screen mode...

#CSpect V2.12.30 changes
  • Layer 2 palette offset added to 256,320 and 640 modes.
  • Fixed a crash when a write to E3 happens, and the roms haven't been loaded.
  • Fixed a crash in the debugger when you entered a bank:offset and the offset was an invalid symbol
  • Tilereg $6E set to $2C on power up - same as hardware. (don't assume though, set it)
  • Tilereg $6F set to $0C on power up - same as hardware. (don't assume though, set it)

SNasm V2.0.23 changes
  • Fixed a crash when an expression has a divide by 0


Sunday, May 17, 2020

#CSpect V2.12.29

Quickly added in the last missing screen mode...

#CSpect V2.12.29 changes
  • 640x256x4 Layer 2 mode added


#CSpect V2.12.28

Fixed DMA Audio playback using the pre-scaler

#CSpect V2.12.28 changes
  • Fixed DMA prescaler (usually used for digial audio)


Friday, May 15, 2020

#CSpect V2.12.27

Fixed a crash in AY Audio due to the extra wait states added to memory read/write when using faked esxDOS.
I've also updated the link in the side banner on the right - keep forgetting to do that.....

#CSpect V2.12.27 changes
  • Fixed a crash in AY Audio when loading in large files via fake esxDOS.


Wednesday, May 13, 2020

#CSpect V2.12.26

Fix for a crash in the debugger

#CSpect V2.12.26 changes
  • Fixed a crash inside the debugger
  • Added a new eDebugCommand.ClearAllBreakpoints to the iCSpect plugin interface


Tuesday, May 12, 2020

#CSpect V2.12.25

Another quickie...

#CSpect V2.12.25 changes
  • Tiles over a transparent border now fixed


Sunday, May 10, 2020

#CSpect V2.12.24

Another quick addition/fix for some devs.

#CSpect V2.12.24 changes
  • Lower border colour fixed (I think)
  • Added some wait states to slow down 28Mhz mode to more closely match the real machine


Wednesday, April 29, 2020

#CSpect V2.12.23

Quick addition for some devs.

#CSpect V2.12.23 changes
  • CTRL+F3 will now save a screenshot into the current folder (without shader effects)


Monday, April 20, 2020

#CSpect V2.12.22

A few more fixes, mainly while I've been doing some wifi work, but some other dev finds.

#CSpect V2.12.22 changes
  • Fixed a stupid typo on iCSpect interface to get sprites.
  • NextReg 0x1c can now be read
  • NextRegs 0x61 and 0x62 can now be read correctly
  • Reading/Setting NextReg 255 (which isn't a real one) was crashing the emulator due to plugins
  • Fixed the fallback colour, was only 8 bit instead of 9
  • Fixed reading of the raster line for lower in the screen (upper 64 pixels usually)
  • Fixed some threading issues in the serial coms (on USB hardware)
  • Fixed and changed baud rates, and added in all normal ones (HDMI timing = 27000000/baud )
    • 2000000 = 13
    • 1152000 = 23
    • 921600 = 29
    • 576000 = 46
    • 460800 = 58
    • 256000 = 105
    • 230400 = 117
    • 128000 = 210
    • 115200 = 234
    • 57600 = 468
    • 38400 = 703
    • 31250 = 864
    • 19200 = 1406
    • 9600 = 2812
    • 2400 = 11250
    • 1200 = 22500

SNASM V2.0.22
  • Fixed “align” for use with segments
  • Fixed “org” so it works with segments
  • You can now use _ in binary (ie. %11_00_1111 )

Tuesday, April 14, 2020

#CSpect V2.12.20

Another couple of dev fixes.

#CSpect V2.12.20 changes
  • Fixed a bug in 48k Layer 2 offset mapping for 320 and 640 modes(untested)
  • Changed set/clear breakpoints to be a proper set/clear
  • Port FF is now readable if bit 2 of nextreg 8 is set
  • Removed some debug code that could cause a crash, or a random file appearing


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.