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)


Anonymous said...

Maybe a daft question, but when you load memory maps, can you set breakpoints based on local symbols generated from Snasm, e.g. "@LocalGotHere", I know you can set PC to say "GlobalGotHere" via PC GloablGotHere but it seems to ignore a PC @LocalGotHere

Anonymous said...

Are there any examples of using seg directives in snasm for 8k memory page alocation?

Anonymous said...

Found an odd bug using "M to select memory in CSPECT" If you use a longish lable name, then it a) fails to move the lower pannel, but then screws up the input character set as if there is some sort of buffer overflow corrupting keyboard input. Not a biggie, just an observation

Anonymous said...

Found an odd bug: in Spectrum Next emulation mode (-tv -zxnext -nextrom -mmc=.\cspect-next-2gb.img) if i use the Layer2 screen paged in at 0x0000 in write-only mode (xx000011 to port $123B), enabling interrupts (ei) causes a pixel with color 0x1f at position 0x0040 to appear on the currently selected Layer2 page. If i enable interrupts when the Layer2 image is visible but not in write-only mode, the pixel won't appear. I can overwrite this pixel writing any value at 0x0040 but selecting the same bank again will overwrite it again. Can it be a bug in CSpect or am i doing something wrong here?

David Powell said...

Are you using ESXDOS calls to load or save to the SD card? I had a similar problem when trying to load or save files to SD Card while Layer 2 ROM overlay writing was enabled. When you do that the DivIDE system bank switches in RAM over some of the ROM. If you have Layer 2 write enable over the ROM, any DivIDE RAM writes will change Layer 2, but reads will read the DivIDE RAM causing Layer 2 corruption and the ESXDOS call to fail. To fix the problem simply turn off Layer 2 writing before accessing the SD card and turn it back on afterwards.

Peter Botka said...

Hi David,
no, nothing fancy. This is enough to reproduce:

ld a, 000011
ld bc,$123B
out (c),a

It seems that enabling interrupts while Layer2 is paged in ROM corrupts it.

David Powell said...

As this only happens when interrupts are enabled, have you checked where the stack (SP) is pointing? The layer 2 corruption could be the return address put on the stack when the interrupt routine is called.

nitrofurano said...

please share to us a tutorial explaining how to install CSpect on GNU/Linux, using a native .deb amd64 package (i don't know where can we find it), or using Wine