Saturday, January 20, 2018

CSpect 1.07

Update to both CSpect and SNasm this time.

CSpect changes
  • "Trace" text was still being drawn when window is too small.
  • "POKE" debugger command added
  • "New timings added to enhanced instructions
    • swapnib - 8Ts
    • mul - 8Ts
    • add hl,a - 8Ts
    • add de,a - 8Ts
    • add bc,a - 8Ts
    • add hl,$0000 - 16Ts
    • add de,$0000 - 16Ts
    • add bc,$0000 - 16Ts
    • outinb - 16Ts
    • ldix - 16Ts
    • ldirx - 21Ts
    • lddx - 16Ts
    • lddrx - 21Ts
    • ldpirx - 16Ts
    • ldirscale - 21Ts (still not on the hardware yet)
    • mirror a - 8Ts
    • mirror de - 8Ts
    • push $0000 - 19Ts
    • nextreg reg,val - 16Ts
    • nextreg reg,a - 12Ts
    • pixeldn - 8Ts
    • pixelad - 8Ts
    • setae - 8Ts
    • test $00 - 11Ts

SNasm changes (V2.0.9)
  • Updated error message format so Sublime text likes it more
  • DJNZ no longer throws errors on pass 1 (forward ref labels)
  • DJNZ and JR now report the correct line numbers on error
  • Fixed CP ‘a’ where character was being upper cased
  • Added “ALIGN <expression>” command for aligning tables and code to boundaries
  • Can now define a symbol on the command line (see manual) : -d SYM[=VALUE]

Saturday, January 06, 2018

CSpect V1.6

Very minor update to fix an issue with port $303b (the sprite select port). Turns out if you write a value 64 and above (sprites being in slots 0 to 63), the port forces the sprite index to be 0. It should really just take the lower 6 bits and "clock", but it currently doesn't. This "may" be addressed in a later firmware update, but for now I'm keeping the emulator as close as possible.
This fixes a 512 colour test cursor the devs have been using to test the hardware (and CSpect), it was a bug in the program but they're getting away with it due to this hardware check.

EDIT: Another minor change to fix the border colour.

  • Port $303B overflow detection added
  • Border colour should now work again. Paper palette offsets had shifted in line with the actual hardware

Friday, January 05, 2018

CSpect V1.4

Okay, colour palettes have been fixed and updated as per specs.

  • Palette formats - including lower blue bit
  • palette number register fixed
  • Support added for Reg 0x44

Wednesday, January 03, 2018

CSpect V1.03

DOH! Yeah... was bound to happen... quick update for ULA clipping. Stupid cut and paste error. To be honest...I'm expecting a couple more! :P
(another fix for missing AY.DLL)

  • Fixed ULA/LowRes clipping

Tuesday, January 02, 2018

CSpect V1.1 release

This one has been sitting in bits for a while, so I thought I'd finish it up and release it.
This version has cut down on the extended opcodes and is now using the (reduced) final list.

  • Fixed a bug in delete key in debugger not working
  • Fixed Raster line IRQ so they now match the hardware
  • Fixed a bug in 128K SNA file loading
  • Fixed a bug in moving the memory window around using SHIFT key(s)
  • Removed SID support :(
  • Added auto speed throttling. While rendering the screen, if the speed is over 7Mhz, it will drop to 7Mhz. (*approximated)
  • Removed extra CPU instructions which are now defuct. (final list below)
  • MUL is now D*E=DE (8x8 bit = 16bit)
  • Current Next reg (via port $243b is now shown) in debugger
  • Current 8K MMU banks are now shown in debugger
  • CPU TRACE added to debugger view (see keys below) ( only when in 4x screen size mode)
  • Copper support added. Note: unlike hardware, changes will happen NEXT scanline.
  • Layer 2 Clip Window support added (Reg 24)
  • Sprite Clip Window support added (Reg 25)
  • ULA Clip Window support added (Reg 26)
  • LOWRES Clip Window support added (Reg 26)
  • Layer 2 2x palettes added
  • Sprite 2x palettes added
  • ULA 2x palettes added
  • Register $243b is now readable
NOTE: SNASM now requires "opt ZXNEXTREG" to enable the "NextReg" opcode

Tuesday, September 26, 2017

CSpect V1.0!!

Okay, big update this one - so now declaring version 1.0! (coz why the hell not...)

  • Startup and shut down crash should be fixed
  • You can now use register names in the debugger evaluation ("M HL" instead of "M $1234", "BC HL" etc.)
  • G to disassemble from address
  • -sound to disable audio
  • Timing fixed when no sound active.
  • -resid to enable loading and using of the reSID DLL. Note: not working yet - feel free to try and fix it! :)
  • -exit to enable "EXIT" opcode of "DD 00"
  • -brk to enable "BREAK" opcode of "DD 01"
  • -esc to disable ESCAPE exit key (use exit opcode, close button or ALT+F4 to exit)
  • Fixed the Kempston Mouse interface, now works like the hardware.
  • Next registers are now readable (as per hardware)
  • local labels beginning with ! or . will now be stripped properly
  • Pressing CONTROL will release the mouse
  • Right shift is now also "Symbol shift"
  • 3xAY audio added - many thanks to Matt Westcott (gasman)
  • Timex Hicolour added
  • Timex Hires added
  • Lowest bit of BLUE can now be set
  • SHIFT+ENTER will set the PC to the current "user bar" address
  • Raster interrupts via Next registers $22 and $23
  • MMU memory mapping via NextReg $50 to $57
  • Source for ay.dll and resid.dll included (feel free to fix reSID.DLL!)
  • You can now specify the window size with -w1, -w2, -w3 and -w4(default). If winow is less than 3x then the debugger is not available
  • Cursor keys are now mapped to 5678 (ZX spectrum cursor)
  • Backspace now maps to LeftShift+0 (delete)
  • DMA now available! Simple block transfer (memory to memory, memory to port, port to memory)
  • SpecDrum sample interface included. Port $ffdf takes an 8 bit signed value and is output to audio. (not really tested)
  • Added the lowres demo (press 1+2 to switch demo)
  • Updated Mouse demo and added Raster Interrupts
  • Added DMA demo
  • Added 3xAY demo by Purple Motion.

Sunday, August 27, 2017

CSpect V0.9 released

Update to handle the new (updated) ULANext spec. Other changes listed below....

register 20 ($14) Global transparency colour added (defaults to $e3)
regisrer 7 Turbo mode selection implemented.
Fixed 28Mhz to 14,7,3.5 transition.
ULANext mode updated to new spec  (see
LDPIRX added

Saturday, August 26, 2017

Update to SNasm

A couple of important fixes for my SNasm assembler, so I thought I'd release an updated version..
Note: This is newer than the version in the CSpect bundle.

Fixed ld (ix+UNDEFINED),a  (and IY)
Fixed locals being defined after an equate
Fixed (IX+forward_label) issue
SNA saving now saves some default registers so you can call ROM stuff better
XOR A,REG/IMM now throws an error
SUB A,REG/IMM now throws an error

Please remember SNasm's Z80 mode is still very new, so there will still be issues with them. If you find any, please let me know.


Monday, August 21, 2017

CSpect V0.8 released

New Lowres layer support added (see readme for details)
ULANext palette support added (see readme for details)
TEST $XX opcode fixed


Saturday, August 19, 2017

CSpect V0.7 released

port $57 and $5B are now mapped as $xx57 and $xx5B
Fixed a couple of sprite flipping and rotation issues
Can now use RST $08 to save (see the layer 2 demo)
Some more additions to SNasm - see docs


Download: CSpect Emulator