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]


Bagpuss said...

Looking good.
Found an interesting bug in Snasm which had me trying to crack a code defect for days :)

If the last instruction in your .asm file is "ret" with no carriage return or spaces after it, Snasm doesn't seem to parse the ret, i.e. ignores the statement. Other conditions such as spaces after detect the missing carriage return and give a syntax error.

Not a breaker just for awareness of others who may end up with unexpected code crashes as it will fall though into what ever memory it finds after the missing ret.

Anonymous said...

Mike this is really "1.7", not "1.07" as in the title right? ;)

Mike said...

It is 1.07 as in there will probably be a 1.10 :)

Yeah, there is a general issue with SNASM needing a newline (or a couple) at the end of the file...

chris kirby said...

Having trouble with snasm set command. Trying to use it so I can set a Bank label that changes per bank..

BNK: set 29
BNK: set 30

Gives me already defined errors.

Mike said...

Ah. This is because Z80 has an actual SET opcode, and it's overriding the setting of a label.

I'll look to change this for the next version.... LAB, DEF or something.....

chris kirby said...

cheers m8