Tuesday, March 29, 2022

#CSpect V2.15.2


#CSpect V2.15.2 changes


Updated so that the very latest OS now works by adding new Next Registers $B8-$BB, along with a few updates, changes and fixes.
Also please note, if you take over the "whole" machine to haved a full RAM machine, you will now need to set registers $B8-$BB to be able to jump to address $0000, or the DivMMC may well page in.
  • DeZogPlugin added to main distro so it remains upto date.
  • Added stackless NMI support
  • Reset register $02 added
  • Added NextRegs $B8 to $BB for DivMMC direct paging control
  • Current ROM and DivMMC registers added to rewind history
  • F6 now cycles through turbo speed settings
  • F5 Now takes a screen shot (was on CTRL+F3)
  • Fixed a rendering glitch when estimates for the right HBlank timing are "missed" and the line isn't drawn.
  • -log_cpu removed. Rewind probably replaces the need for this.
  • Updated RST$08 read/write to return values in BC,HL and DE as described in NextZXOS
  • Layer 2 banks can now be in the full 2Mb (regs $12 and $13)
  • Parallax demo updated to work with new $B8-$BA registers





Tuesday, December 07, 2021

#CSpect V2.15.1

#CSpect V2.15.1 changes

  • Fixed SD card access - SpecNext IMG files now boot again


#CSpect V2.15.0 changes


Some fixes and a couple of new open source extension.
  • Fixed a crash when trying to get file info on a file that can't be found (or opened)
  • Fixed ULA colour 3 (where colours are 0-15) on a loaded NEX file.
  • Fixed Border colour when ULA Palette scale set to 255, but ULANext mode is disabled
  • All RST $08 operations have been moved to a new open source extension esxDOS.dll - lightly tested
  • Added Copper Read/Write to extension system - allowing for a copper debugger/assembler etc
  • Added single byte peek/pokes to extension interface for simpler access
  • OpenTK upgraded to v3.3.2, any newer version won't install as it's incompatible with .NET frameworks
  • Added initial open source Copper disassembler/viewer - "ctrl+altc" to open
  • Open source extensions added to Github





Sunday, August 29, 2021

#CSpect V2.14.8

#CSpect V2.14.8 changes

  • Fixed a L2 scrolling issue - that I'd just added.... *sigh*

#CSpect V2.14.7 changes

  • Fixed a L2 clip scroll offset issue

#CSpect V2.14.6 changes

  • Forgot to switch on the new rendering again - now done.

#CSpect V2.14.5 changes

  • Fixed L2 left clip (I think)

#CSpect V2.14.4 changes


A few fixes have been requested by devs, so I've done a quick new version.
  • Fixed L2 320 and 640 clip window
  • Fixed LD_R_A in debugger to "LD R,A"
  • Fixed a bug when writing the copper control byte, where it would reset the lower byte of the copper write address
  • Added the raster offset register ($62) but mostly untested.
  • Screen rendering now starts in the HBlank, not at the end of the line, allowing changes for the next line to take place in the HBlank.





Wednesday, June 02, 2021

#CSpect V2.14.3

#CSpect V2.14.1 changes

A few fixes and some new features, and I've also added in a beta of my SD Card Editor, allowing you to easily copy files off the SD card using a nice explorer sty;e window.

I will also draw peoples attention to the new analytics that have been added. I've been wondering where I should direct my effort, so this is trying to get a feel for how people are using it. It's mainly startup counters, major function key presses, and command line options. There is a switch to disable if you feel uncomfortable, but please keep it enabled if you can, it'll help the future of the emulator. I may also share some stats in the future as I'm sure folk will be interested in usage numbers etc...

Minor update V2.14.3
  • Fixed BIS and Warhawk crash
  • Odd crash with last version, rebuilding zip to try and fix
  • Now alerts you to a new version
  • Did more sprite window fixes
  • Altered FLASH rendering

Minor update V2.14.1
  • Added a check for AY regs above 16, as a common music driver has a bug in it
  • Timers are now reset on F3
  • IRQ TStates are reset back to 30 Pre-Tstates. This isn't correct but helps some games work better.
  • Stopped a crash on exit from fullscreen

Changes V2.14.0
  • Fixed esxDOS Read/Write so it's now returning NEXT pointer IX instead of HL.
  • You no longer need to extract ROM files to run in full SD card mode, they will be copied out the SD card image directly.
  • Sprite right edge clip fixed - I think.
  • AY registers are now readable
  • Some very basic analytics are now collected. Each startup, command line options etc. "-analytics" to disable. Please leave it on if you can, as it'll help me direct developement effort.
  • I have added my new SDCardEditor into the archive. This is very much just a beta, but lets you easy copy files from the SD card. Full editing coming on this.
  • The latest windows update now causes some nasty stalling. To reduce (but not remove), go into "settings" and search for "game mode" and switch it off. This will help a little.





Wednesday, March 03, 2021

#CSpect V2.13.01

#CSpect V2.13.01 changes

A few fixes and some new Next hardware that's coming soon....
  • Put some guards around break point setting to check ranges a little.
  • Symbols are uppercased on load (they aren't case sensitive)
  • Fixed memory window. Any address < $10000 is not a physical address, its the 64k mapped. If you need this, use bank/offset
  • Fixed some BASIC key issues - holding down control keys etc
  • Fixed a ULA global transparancy issue
  • Fixed NEX loading and initialising of ULA colours
  • Rewrote the ULA colour system - was a mess.
  • Fixed some Timex rendering issues
  • Basic CTC timers (4) added. Timer mode only, no cascading. Timers can generate IRQs.
  • NextReg $CC and $CD - IRQ DMA suspend mode for timers, liner interrupts and ULA added
  • Z80 CTC Timer example source included in demo





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.


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