Monday, December 24, 2018

#CSpect 2.1.4

In this version of CSpect, I have the new sprite engine implemented. You can now have all 64 sprites in a line, except when expanded - which they can not be by 32,64 and 128 pixel sizes. You can also now have 16 colour shapes, allowing double the number of images a sprite can have.

On top of this, is the new L2 pixel priority engine and lighten/darken L2+ULA modes which you can get by setting the SLU order to %110 and %111 respectively.

CSpect V2.1.4 changes

  • Added logging debug command (see readme)
  • Added Layer 2 pixel priority mode - top bit of second colour palette byte (the single bit of blue) specifies over the top of everything.
  • Added Next OS streaming API ( see readme )
  • Added DMA reverse mode (R0 BASE, bit 2)
  • Added BSLA DE,B (ED 28) shift DE left by B places - uses bits 4..0 of B only
  • Added BSRA DE,B (ED 28) arithmetic shift right DE by B places - uses bits 4..0 of B only - bit 15 is replicated to keep sign
  • Added BSRL DE,B (ED 2A) logical shift right DE by B places - uses bits 4..0 of B only
  • Added BSRF DE,B (ED 2B) shift right DE by B places, filling from left with 1s - uses bits 4..0 of B only
  • Added BRLC DE,B (ED 2C) rotate DE left by B places - uses bits 3..0 of B only (to rotate right, use B=16-places)
  • Added JP (C) (ED 98) JP ( IN(C)*64 + PC&$c000 )
  • Added new sprite control byte
  • Added sprite expand on X (16,32,64 or 128)
  • Added sprite expand on Y (16,32,64 or 128)
  • Added 16 colour shape mode
  • Removed 12 sprite limit, limitations still apply when expanding on X (100 16x16s per line ma
  • Sprite pixel wrapping on X and Y (out one side, back in the other)
  • Added "lighten" mode. L2+ULA colours clamped. (selected using SLU layer order of 110)
  • Added "darken" mode. L2+ULA-555 colours clamped. (selected using SLU layer order of 111)

CSpect V2.2.0 updates
  • Fixed reg 0x43 bit 7- disable palette auto increment.
  • Fixed NextReg access for sprites. Was using the wrong index.

SNasm V2.0.15 changes
  • Removed MIRROR DE instruction
  • Added “JP(C)” instruction
  • Added “BSLA DE, B” instruction
  • Added “BSRA DE, B” instruction
  • Added “BSRL DE, B” instruction
  • Added “BSRF DE, B” instruction
  • Added “BRLC DE, B” instruction
  • Fixed error reporting on command like "and a" when a user gives "and a,7" etc.

Saturday, November 10, 2018

#CSpect 2.1.0

In this release I add back in Mouse and Gamepads. I've tested both on Windows, but not on OSX and Linux, so if someone can give that a go and let me know, I'd be grateful.

I've also fixed the bug when esxDOS is trying to save that was crashing things.
EDIT: Also fixed a bug in sprite palettes that was causing a crash

I'll leave the install and running in this post, but it'll vanish next post.

Windows - You will need the latest .NET, and openAL ( )
Linux - You will need the full MONO (on ubuntu do "apt-get install mono-devel" )
OSX - You will need the latest mono from

Windows - CSpect.exe [options] game.sna/game.nex
Linux - mono ./CSpect.exe [options] game.sna/game.nex
OSX - mono ./CSpect.exe [options] game.sna/game.nex

There are a few things not yet in/finished for this version.

  • Some esxDOS functions (F_FSTAT, F_STAT, M_GETDATE)
  • 128K SNA files are not currently loading
  • File dialog (F2) will not work on OSX due to windows Forms not working in x64 mode in mono.
  • Due to the way openAL appears to work, things aren't as smooth as i'd like. Disabling audio (using -sound) will smooth out movement for now...

Friday, November 02, 2018

#CSpect 2.0!!

So I'm very pleased to announce the release of #CSpect! A port of CSpect to C#!

This version runs under .NET and so is fully cross platform running under Windows, OSX and Linux using the Mono runtime. So finally Mac and Linux users can have access CSpect for developing ZX Spectrum Next games.

Windows - You will need the latest .NET, and openAL ( )
Linux - You will need the full MONO (on ubuntu do "apt-get install mono-devel" )
OSX - You will need the latest mono from

Windows - CSpect.exe [options] game.sna/game.nex
Linux - mono ./CSpect.exe [options] game.sna/game.nex
OSX - mono ./CSpect.exe [options] game.sna/game.nex

There are a few things not yet in/finished for this version.

  • Gamepads
  • Some esxDOS functions (F_FSTAT, F_STAT, M_GETDATE)
  • 128K SNA files are not currently loading
  • File dialog (F2) will not work on OSX due to windows Forms not working in x64 mode in mono.
  • Mouse is not currently implemented.
  • Due to the way openAL appears to work, things aren't as smooth as i'd like. Disabling audio (using -sound) will smooth out movement for now...
  • Probably a few more things....

Sunday, September 16, 2018

CSpect 1.18

Changes to the debugger. This allows you set breakpoints using the physical address, allowing you to set breakpoints in code not yet paged in. This allows for simpler debugging of proper overlay code.
Also, if your using another assembler, you can use the new -16bit command line to use logical addresses only.

CSpect changes
  • added -16bit to use only the logical address of the MAP file
  • Execution Breakpoints are now set in physical address space. A HEX number or SHIFT+F9 will set a logical address breakpoint. This means you can now set breakpoints on code that is not banked in yet.
  • Next mode enabled when loading a .NEX file

Monday, September 10, 2018

CSpect 1.17.1

Minor update to SNasm. 48K SNAs weren't saving out correctly, and labels under $8000 were whacky. This is now fixed.

SNasm changes
  • Fixed labels
  • Fixed SNA saving

Sunday, September 09, 2018

CSpect V1.17

New version  of CSpect and SNasm with some big changes for those using it to dev. You can now specify segments and save out NEX format packages, allowing you to build "large" packages all from within SNasm.
CSpect will now load the new symbol format and correctly display the proper symbol when that bank is paged in, allowing overlays to work more seamlessly.

CSpect changes
  • ULA colours updated to match new core colours. Bright Magenta no longer transparent by default. Now matches with $E7 (not $E3)
  • Fixed debugger bug where "0" is just left blank
  • New MAP format allowing overlays mapped in. Labels in the debugger are now based on physical addresses depending on the MMU
  • You can now specify a bank+offset in the debuggers memory view (M $00:$0000) to display physical addresses. 
  • Numeric Keypad added for debugger use.
  • EQUates are no longer displayed in the debugger, only addresses. This makes the view much cleaner

SNasm changes
  • SEG command added for Segment control on ZX Spectrum Next machines. Banks are 8K in size.
                                    SEG  NAME,BANK:OFFSET,TARGET_PC ; to create

                                    SEG  NAME              ;to use
  • SAVENEX "name",StartPC,[StackSP] added.
  • New MAP format exported for CSpect

Saturday, August 25, 2018

CSpect V1.16

Okay, so the last version was actually a debug version and so some folk had problems running it. This is a proper release build. There are a couple of additions...

CSpect changes
  • Fixed sprite transparency to use the index before the palette and colour conversion is done
  • -r on the command line will now allow CSpect to remember the window location, so if you move it somewhere, it'll start up there again next time. Just delete the cspect.dat file to reset.

Friday, August 24, 2018

CSpect V1.15

There's been a few folk requesting an updated version so even though it's not a huge change, here it is...

CSpect changes
  • Fixed sprite transparancy index. now reads transparancy colour from sprite palette.
  • Timex Hi-Colour mode fixed
  • M_GETDATE added to esxDOS emulation (MSDOS format)

Bits Description
0-4     Day of the month (1–31)
5-8     Month (1 = January, 2 = February, and so on)
9-15    Year offset from 1980 (add 1980 to get actual year)

Bits    Description
0-4     Second divided by 2
5-10    Minute (0–59)
11-15   Hour (0–23 on a 24-hour clock)

    Sunday, August 19, 2018

    Z80 shifts...

    Being a 6502 boy, I have to continually hunt for the shift opcode that I need. So after doing this for about a year now, I thought I'd knock up a little diagram to make it easy. So on the off chance someone else is in the same situation - here it is.

    Saturday, July 21, 2018

    CSpect 1.14

    CSpect changes

    • -joy to disable DirectInput gamepads
    • Re-added OUTINB instruction (16Ts)
    • Fixed a but with MMU1 mapping when reading, it was reading using MMU0 instead.
    • In ZXNext mode, if you have RAM paged in MMU0, then RST8 will be called, and esxDOS not simulated
    • Palette control registers are now readable (Hires Pawn demo now works)
    • Reg 0 now returns 10 as Machine ID
    • Reg 1 now returns 0x1A as core version (1.10)
    • Layer2 transparancy now checks the final colour, not the index
    • Fixed sprites in the right border area (the 320x192 picture demo)
    • Timex Hires colours now correct (Pawn demo)

    • Re-added OUTINB instruction

    Thursday, July 05, 2018

    CSpect 1.13

    CSpect changes
    • Kempston joystick emulation added using Direct Input. All controllers map to a single port, port $001F = 0FUDLR
    • Fixed CPU on WRITE and on READ breakpoints
    • -port1f command line removed
    • .NEX format now leaves IRQs enabled
    • Removed some of the old opcodes from the debugger
    • Removed MIRROR DE
    • Fixed memory contention disable (so now tested!)

    Sunday, June 24, 2018

    CSpect V12.1

    CSpect changes
    • Added .NEX format loading. (see format below)
    • Added nextreg 8, bit 6 - set to disable memory contention. (untested)
    • Added Specdrum Nextreg mirror ($2D)
    • Removed OUTINB
    • Removed MIRROR DE
    • Added sprite global transparancy register ($4B) - $e3 by default, same as global transparancy ($14).
    • NextReg reg,val timing changed to 20T
    • NextReg reg,a timing changed to 17T
    • Added LDWS instruction (might change)

    SNasm changes
    • Added LDWS opcode
    • Removed OUTINB instruction
    • Removed MIRROR DE instruction

    Wednesday, May 16, 2018

    CSpect V1.11

    Minor update to CSpect

    CSpect changes
    • Fixed Lowres window (right edge)
    • You can now use long filenames in RST $08 commands (as per NextOS), can be set back to 8.3 via command line
    • Layer 2 now defaults to banks 9 and 12 as per NextOS
    • Added command line option to retrun $FF from port $1f
    • Fixed a possible issue in loading 128K SNA files. Last entry in stack (SP) was being wiped - this may have been pointing to ROM....
    • Fixed mouse buttons return value (bit 0 for button 1, bit 1 for button 2)

    Wednesday, April 25, 2018

    Brexit.... Lying, cheating and stealing a nations future.

    With Brexit looming, and brexiteers continually telling remain voters to shut up and accept it, i thought I'd look back at what happened, and why I think we shouldn't shut up. I believe we were lied to, the broke election laws on spending, and data protection laws when targeting their ads. This doesn't leave much ground that they didn't act illegally in their bid to win the vote, yet for some reason, the vote is still valid. How can that be? This sends a clear message that you can do whatever you like to win, and there will be no repercussions.

    If vote leave broke the law, then those running it, should be charged, and the vote should be invalid and run again. I keep hearing more and more that is just suspect about the vote, so I wanted to list the main points - more for myself than anything, so I can see just how bad/wrong/illegal the vote was, to list what exactly I though was shady about the Brexit vote in general, and how those who now claim are looking out for the best interests of us, are lying through their teeth.

    • The Brexit bus.This is a well known one. The £350 million figure was a work of fiction. It was known at the time, yet they never removed it, it remained a key point in their campaign and many voters claimed it was one of the key things that swayed their vote.
      It should be asked... why is anyone allowed to blatantly lie in any vote, and yet the vote is allowed to stand? This is election fraud of the highest order - surely?
    • Immigrants.
      Another well known one. The claims that they are a constant drain, stealing peoples jobs is a myth - no matter what Nigel Farage and his band of merry racists claim. Not only are farmers now struggling to hire people to help farm, pick crops and pack produce, but the NHS is struggling to maintain and recruit enough doctors and nurses to help save lives. Ironic since making the NHS better was a key claim of the leave campaign. At the end of the day, for someone to steal a job, it has to be one someone from the UK is willing to do, and it seems they aren't.
      There are now many EU companies getting ready to leave the UK so they can remain in the EU and benefit from EU trade deals.
    • Parliamentary Sovereignty
      This claim that the UK can't make it's own rules is rabble-rousing-rubbish. The UK only takes a tiny fraction of laws from the EU, but it's a "vote winner", so it's front page for the vote.
      But lets be clear.... the Government only want Parliamentary Sovereignty when it works for them. They want to reduce workers rights, remove the human rights act and allow surveillance on anyone or anything, and without the EU to counter that, they'll be able to push through whatever they like.
      As proof of their contempt for Parliamentary Sovereignty, the latest strikes on Syria were done while Parliamentary was in recess, so there wouldn't be a vote on it. Now, why would you do that if you wanted Parliamentary to be Sovereign? it's not about Sovereignty, it's about power, plain and simple.
    • Politicians that don't believe in Brexit.
      This is one that really annoys me. Those attempting to make Brexit happen, don't even believe in it. The Prime Minister spent the EU Referendum saying it would be a disaster, that the economic and safety of the UK would suffer, and that the Norther Ireland border was an impossible problem if we left. She now tries to say the complete opposite. Has she changed her mind? Or is she just doing whatever she can to cling to power? After the £1 Billion deal with the DUP to stay in power, I'd argue for the latter.
      She's not the only one either. Boris Johnson was writing prior to the vote why we should stay in, then decided then running the leave campaign that he thought would lose, would be a great springboard for higher office - if he ran a good campaign. Then he won. Watching the press conferences afterwards, Johnson and Gove talk to the press like a pair of naughty schoolboys, clearly crapping themselves and what they had done. Johnson immediately launches a PM bid, with Gove stabbing him in the back the only reason he pulls out. Gove claiming that in the past couple of weeks he'd come to realise Johnson wasn't the person to leave. This from a man who had known Johnson for 30 years. The truth being Gove wanted the position, and decided to stab Johnson in the back to get it. These are just the kinds of people we want running Brexit, basically doing whatever they can for themselves, and no one else
    • Deal would be "Easiest in human history"
      This was another laughable claim. Liam Fox claimed a post-Brexit free trade deal with the EU should be the “easiest in human history”. This was picked up by many politicians, claiming the EU couldn't do without our trade, and that any deal with them would be the simplest ever.
      This is of course a lie. It was't simply them being mistaken either, but an our right falsehood. With so many member states, no deal can ever be that simple.The ALL have to agree. On top of this, the EU pretty much holds all the cards. The UK government insisted that a trade deal must be worked on along with other issues, but the EU insistence that the divorce bill and EU residents status be discussed first, meant the UK had no choice by to fold and give them pretty much whatever they wanted.
    • Having our cake and eating it.
      The UK prior to the vote was also claiming they could get pretty much what ever they wanted. Free trade without freedom of movement, being outside the EU but getting "special" deals for the motor and finance industries. All of this was never going to happen. Why would the Eu give away any of this? From their perspective, any business that wanted to maintain these things, would move from the UK to another member state, and the EU would benefit. Why give the UK a special deal to keep something they wanted for themselves? How could you possibly persuade 27 other member states to agree to a "give away" of epic proportions.
      You can't. Simple as that, and they never would have. The EU said from day one, this was never going to happen.
    • Northern Ireland. 
      Theresa May pre-Brexit claimed it would be impossible to have Brexit and any kind of free movement across the Irish border. Now that she's supposed to be running it all, it's really simple, and of course it could happen. This is all about her just clinging to power.
      The EU have said, if the UK leaves, then there will have to be some kind of border. Between 2 different types of rules and regulations, you have to have a border.
      The UK Government have flip-flopped back and forth from saying Northern Ireland can stay in the customs union, to they can simply maintain the same laws/rules on goods, to saying technology will solve all the worlds problems. All of these are fantasy.
      As a Scot, what's particularly annoying is that the UK government has refused point blank to Scotland remaining in the customs union, yet to save their own hides, suggest N.Ireland can. Surely of they can, then so could Scotland? But they refuse to even discuss it.
    • Vote Leave broke spending limits
      So here's another one which is just outright illegal, and should also have invalidated the vote.
      An ex-employee of vote leave has said it "broke spending limits on industrial scale". These rules/laws are there for a reason, and by breaking them - along with using companies like Cambridge Analytics who use stolen data to target more ads at voters, means they reached more people than Remain. This makes for an unbalanced contest, and sure if you have twice the money (say) you'll reach more people and you'll be able to get a better result.
      So surely because they did this, it means the vote is in itself, illegal? How can it not be?
    • Scottish Independence Referendum
      Another one which, as a Scot, really pisses me off.
      The No camp told voters continuously that it was safer to remain part of the UK, that Scotland would never be able to join the EU, and we would have to say No in order to remain in the EU.
      This promise has clearly been broken.
      We were also told if we left, we couldn't use the pound, and the value of our savings and pensions would suffer. Well, again, thanks to Brexit, the pound has been smashed, and savings and investments have suffered anyway. In fact, a study has placed UK pensions as the worst in the developed world.
      Told we'd have no oil soon, so we'd need the rest of the UK to prop us up. Lots of new oil fields are being discovered, so again....bollocks.
      We were also told if we left, there would be no friction-less trade with the UK. Yet, this is precisely the argument the Brexit camp are using with the EU. In fact, I heard on an interview a UK minister say "Why wouldn't they want free trade with their nearest neighbour?", yet this was exactly what we were told would never happen if Scotland went independent.
      Huge numbers of new powers. They've given a few new powers over, but have kept some of the most significant - like immigration. In fact, The Minister of State for Immigration compared the whole of Scotland to an English county - to quote "I wouldn't grant any powers to the Scottish Government that I wouldn't grant to Lincolnshire county council", that's how little Westminster thinks of Scotland.
    • Biased press
      All you need to do is look at the BBC, and the main stream media and see that they've all been backing Leave for some time. Nigel Farage is never off the BBC, despite having never won a UK election. Why is he on? He speaks for no one.
      Owners of papers (like the Sun, Mirror, Daily Express etc) have also been pushing hard on Brexit because they'll have more power. These owners are all multimillionaires, many of them not living in the UK, but using their powers to push their own agenda. Who can forget "The Enemies of the People" headline when a legal challenge on parliamentary sovereignty was questioned? These papers will have more chance to bend the laws to what they want, if they can more easily influence their creation, and that will only happen with Brexit.
    • People didn't understand what they were voting for
      This is a personal one. I've had discussions with some people I know who voted to leave, and a lot of the time, they've either listened to the lies and fictions they were sold, or just didn't understand. One person who voted Leave, didn't understand why everything now had to change, and why it couldn't just stay the same. I was speechless at this - "Well, because you voted to leave...perhaps?".
      I've also heard folk complain that they'll now have longer immigration queues, and why do we have to have this? Well again.... no freedom of movement means....
      I think a large number of folk simply don't understand the complexities involved, and the banner headlines of £350 million a week, immigrants stealing YOUR job! The EU making our laws! It'll be easy to get a great deal - we'll get everything we want. All this kind of thing makes it seem like nothing was going to be a problem, and we'd have everything we have now - and more. Which is all rubbish obviously.
    • Jacob Rees-Mogg and his millionaire friends
      Jacob Rees-Mogg is a hard Brexit fan, he wants to cut the ties and leave now. no looking back. But all you need to do is look as were his money is, and you see why. His investments are highly suspect, including some banned Russian banks, and if the UK were to have a hard brexit, he will personally make millions out of it.
      This is another thing to remember, most of these big players - politicians, news papers etc. Everyone of them stands to gain hugely from it, and they don't give a toss if the average person in the street suffers for it. If you doubt that, then just look at what Conservative policies are doing to the average person just now. Foodbank usage is soaring as people struggle to put food on the table, and all Jacob Rees-Mogg has to say is that it's "rather uplifting". For those of you wondering, the correct response is "That's horrible, what can we do to help and stop it". But it's very much a case of "I'm okay, so I don't care".
    • Even the Government says it'll be a disaster
      The Government had a study done - one it tried to hide, because it stated in every possible case, everyone will be worse off. It ranges from just "slightly worse", to monumentally worse.
      They tried hard to bury this, but it eventually got out, and it makes for some disturbing reading. The EU vote was advisory, and that means, they should have said "Oh okay, the public would like us to look into leaving" the study....."okay, we looked. Turns out the UK will be much worse off if we do - here's the study, have a look. So, we thanks for your input, but we've decided it's not in the UKs best interest".
      Instead we constantly get.... they people voted to leave, so we're leaving.
      I'm pretty sure the people didn't vote the make rich people richer, and everyone else poorer, while at the same time removing a whole heap of rights.
    • The witch-hunt of immigrants
      There seems to be a thing, that appears to be taking back control, means "hunting down" anyone not born in the UK. There are cases of people who have been living here for decades, paying taxes, doing jobs we want them to do, and immigration is trying to get them deported. Not only that, but people who came here as very young kids, have lived here all their lives, and they are trying to deport them back to a country they many not even speak the language of.
      This is just evil. Can I have my loving, compassionate country back please?

    One last interesting fact. The EU vote was "adversary", which means by definition many might have thought it didn't matter, and so may not have voted. This again calls into question how such a vote can be deemed to be "the peoples choice". In fact, only around 30-odd percent (can't remember  he exact number) of eligible voters, voted to leave. That's hardly the will of the people.
    Also, part of the law stated that if "significant" changes in status or rights occurred, then a second vote would be required. This kind of means that by definition, any "final deal" needs a second vote. It's in the EU vote bill, and it hasn't been withdrawn, so it's still valid.

    So.... I'm struggling to find something they said that IS true. Anyone?

    Friday, February 23, 2018

    CSpect 1.10

    New version of CSpect, complete with a new demo!!

    CSpect changes
    • -cur to map cursor keys to 6789 (l/r/d/u)
    • Fixed copper instruction order
    • Copper fixed - and confirmed working. (changes are only visible on next line)
    • Copper increased to 2K - 1024 instructions
    • Fixed a bug in the AY emulation (updated source included)
    • Fixed Lowres colour palette selection
    • Added new "Beast" demo+source to the package to show off the copper

    Monday, February 05, 2018

    CSpect 1.09

    Couple of minor changes/fixes to CSpect

    CSpect changes
    • Layer 2 is now disabled if "shadow" screen is active (bit 3 of port $7FFD)
    • Timex mode second ULA screen added (via port $FF bit 0 = 0 or 1). Second screen at $6000.
    • Fixed bit ?,(ix+*) type instructions in the disassembler. All $DD,$CB and $FD,$CB prefix instructions.

    SNasm changes (V2.0.11)
    • Changed SET (redefineable EQU) to DEF (as Z80 has a SET instruction!)
    • Number of bytes “lost” using the ALIGN command now reported

    Monday, January 29, 2018

    CSpect V1.08

    Update to both CSpect and SNasm again.

    CSpect changes
    • $123b is now readable
    • Fixed cursor disappearing

    SNasm changes (V2.0.9)
    • Changed newline detection from 0x0D to 0x0A (what it should be these days…)

    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