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.
Enjoy!
Showing posts sorted by relevance for query snasm. Sort by date Show all posts
Showing posts sorted by relevance for query snasm. Sort by date Show all posts
Saturday, August 26, 2017
Wednesday, August 06, 2008
Almost there!
I've now got things almost working, single stepping is rock solid and I now have the RTS instruction being simulated fine. There appears to be a slight glitch where on a specific instruction in XeO3 it doesn't step properly but jumps off to $FFFF for some reason - no idea why as yet. While I'm trying to figure this out I'll start adding breakpoints to the interface and then get the symbol table loaded.
I suddenly realised that I shouldn't be passing the an interface top the symbol table to the CPU model, but an interface to an expression evaluation module. This means the CPU code could evaluate expressions if it needs to, and that leaves me to deal with symbol table lookups inside the expression evaluation without having to worry about it. You'll still be able to write your own symbol table so that you can load funny symbol file formats, and you'll still be able to query for symbols but this time it'll go through the evaluation system instead.
I'll pinch the expression stuff from SNasm and put an interface around it, this means it'll handle anything SNasm could (which was a lot!). It also means that watches (with their complex expressions) should be a breeze to process, all I need to do is add the new [..] context to get memory from the target. Should be fun when its all working! I'm still not sure how fast its all gonna run, as getting lots of memory over a parallel cable isn't quick, still emulators should be very fast and at least you'll be using a common interface then!
I also realised that each module (ICPU, ISymbolTable and IComms) needs to be able to change some options, so I'll add a new interface that means it can pop up an options box and allow you to change things. For example, the CPU module might allow you to enable undocumented opcodes which aren't on by default.
So there you go! Its going pretty well so far! Once I get it to a basic level, I'll need to see if I can get some other coders to try it out and give me some feedback. of course, having only SNasm labels might hinder things a little, but then again it would be a good opportunity to have someone else write a module and tell me how easy or hard it was!
I suddenly realised that I shouldn't be passing the an interface top the symbol table to the CPU model, but an interface to an expression evaluation module. This means the CPU code could evaluate expressions if it needs to, and that leaves me to deal with symbol table lookups inside the expression evaluation without having to worry about it. You'll still be able to write your own symbol table so that you can load funny symbol file formats, and you'll still be able to query for symbols but this time it'll go through the evaluation system instead.
I'll pinch the expression stuff from SNasm and put an interface around it, this means it'll handle anything SNasm could (which was a lot!). It also means that watches (with their complex expressions) should be a breeze to process, all I need to do is add the new [..] context to get memory from the target. Should be fun when its all working! I'm still not sure how fast its all gonna run, as getting lots of memory over a parallel cable isn't quick, still emulators should be very fast and at least you'll be using a common interface then!
I also realised that each module (ICPU, ISymbolTable and IComms) needs to be able to change some options, so I'll add a new interface that means it can pop up an options box and allow you to change things. For example, the CPU module might allow you to enable undocumented opcodes which aren't on by default.
So there you go! Its going pretty well so far! Once I get it to a basic level, I'll need to see if I can get some other coders to try it out and give me some feedback. of course, having only SNasm labels might hinder things a little, but then again it would be a good opportunity to have someone else write a module and tell me how easy or hard it was!
Wednesday, November 28, 2007
New Release!!!!
I have just done my first new release of Minus4 in about 2-3 years!! Yes all these new features I keep going on about are have now been released into the wild. So if you head on over to THE MINUS4 HOMEPAGE you'll be able to download new versions of Minus4w, Minus4wsrc and the new Snasm.
The new Snasm also has a lot of 65816 assmbler support in it, but mre importantly outputs symbols for Minus4's built in debugger.
If theres any cool features you can think of, let me know.... Minus4 has moved from being the best emulator (now easily beaten by YAPE) to being the best for development - by far!
XeO3 is being developed using SNASM as the assembler, and Minus4 as the debugger. Yape provides more realistic playback, and the uploader provides real hardware downloading! All I really need to do is finish the remote debugger and we'd have a full devkit!!
The new Snasm also has a lot of 65816 assmbler support in it, but mre importantly outputs symbols for Minus4's built in debugger.
If theres any cool features you can think of, let me know.... Minus4 has moved from being the best emulator (now easily beaten by YAPE) to being the best for development - by far!
XeO3 is being developed using SNASM as the assembler, and Minus4 as the debugger. Yape provides more realistic playback, and the uploader provides real hardware downloading! All I really need to do is finish the remote debugger and we'd have a full devkit!!
Saturday, July 22, 2023
#CSpect V2.19.4.4
SNasm V3.2.1.0 changes
Some updates and fixes to both CSpect and SNasm
- Equates can no longer start with a local label symbol
- Locals are no longer reset by Equates/Sets/Rb/Macro etc.
- Fixed LDDRX instruction byte codes
- Proper Version added to assembly EXE
- Change internal LEX processing and state saving/stacking
#CSpect V2.19.4.4 changes
Some updates and fixes to both CSpect and SNasm
- OUT ($ff),$40 will not disable ULA Vblanks, while OUT ($ff),$00 will now enable them (see NextReg $22)
- New debugger command "NEXTBRK" will stop in the debugger after a Next instruction has been executed
If you want to support my work...
Become a Patreon at: https://www.patreon.com/mikedailly
Or buy me a Ko-fi: http://ko-fi.com/mdf200
Main Website: https://lemmings.info
Instagram: https://www.instagram.com/_mikedailly
Discord: https://t.co/q9u0cmfBz6
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
SNasm changes
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
Monday, January 29, 2018
CSpect V1.08
Update to both CSpect and SNasm again.
CSpect changes
SNasm changes (V2.0.9)
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, June 30, 2007
XeO3: Colour....
Mmm... the more I look at the Plus4 version, the more I wish it had colour. If you followed the way spectrum games work - that is the background gets colour and ships dont, they just fly through it - then you might be able to pull it off. The biggest problem is moving the colour screen. Unlike the C64, you can't scroll a whole colour screen over 8 game cycles as I have to double buffer the software sprites (C64 doesn't need that due to hardware sprites), but...... if you could afford to lose another 4k (ouch!) then it might JUST be possible...
Basically you have 4 screens. 2 are active at any one time over 8 game cycles and the other 2 are hidden. Normal character rendering goes on as normal, but the hidden 2 screens get the colour slowly moved (or rather copied!) from screens 1&2 to 3&4 - but 1 character further on. It still requires you to shift around 5 lines per frame but thats a far cry from blitting a whole 21 line high screen each game cycle as I do now. However, if you did that (and you might have to drop a sprite to fit it in), you could get XeO3 - with colour!
Its way too late for me to add that now, but once the source is released, it be cool if someone else did it. 9 software sprites is still loads! So drop 1 sprite, and free 4K+space for colour tiles, and it should work!
Okay...More minor optimisations. I've removed a couple of functions and inline'd them whilst making them faster, and finally removed the old, slow PATH allocator. It was still using the simple loop rather than the stack method, so thats now changed. I got fed up writing that bloody thing, so I've macro-ized it even more, and here it is.
And this is how I use it - Its pretty simple although I do have to replicate a branch which technically speaking I could do without. However, if it comes down to the game not working because of 2 cycles wasted here....I'll kill myself!
These are obviously SNASM macros. SNASM has a really cool macro feature in that it lets you build new opcodes, labaels or anything! using the paramaters. This means I can decide later what register to use, and prepend a name and have a new label - cool eh!
Oh! And for the record....the micro-optimisations I've been doing are generally called peep-hole optimisations by compilers. That is were they look are a few instructions at a time and try and make them better - I'm pretty much doing the same.
Basically you have 4 screens. 2 are active at any one time over 8 game cycles and the other 2 are hidden. Normal character rendering goes on as normal, but the hidden 2 screens get the colour slowly moved (or rather copied!) from screens 1&2 to 3&4 - but 1 character further on. It still requires you to shift around 5 lines per frame but thats a far cry from blitting a whole 21 line high screen each game cycle as I do now. However, if you did that (and you might have to drop a sprite to fit it in), you could get XeO3 - with colour!
Its way too late for me to add that now, but once the source is released, it be cool if someone else did it. 9 software sprites is still loads! So drop 1 sprite, and free 4K+space for colour tiles, and it should work!
Okay...More minor optimisations. I've removed a couple of functions and inline'd them whilst making them faster, and finally removed the old, slow PATH allocator. It was still using the simple loop rather than the stack method, so thats now changed. I got fed up writing that bloody thing, so I've macro-ized it even more, and here it is.
;****************************************************************************************
;
; Allocate/Free a Turret.
; Out: X=spare slot or -1 for error
;
; Best 29 - OLD
; Worst 134 - OLD
;
; Alloc - BEST/WORST - 12/18
; Free - Best/Worst - 24 (constant)
;
;
; Usage:- FastAlloc [xy], ListAddress, ObjectOnOff
; X or Y = index register to use
; ListAddress = Base of pre-filled stack
; ObjectOnOff = Value to clear/set when allocated/free'd
;
;****************************************************************************************
FastAlloc macro
ld\0 \1FreeIndex ; 3 ldx FreeIndex
lda \1FreeList,\0 ; 4 lda FreeList
bmi !NoneFree ; 2 bmi !NoneFree
in\0 ; 2 inx
st\0 \1FreeIndex ; 3 stx FreeIndex
!NoneFree: ; tax
ta\0 ; 2 get next free bullet (or $ff for none left)
endm
;****************************************************************************************
;
; Usage:- FreeTurret [xy], ListAddress, ObjectOnOff
; X or Y = index register to use (and hold the object to free)
; ListAddress = Base of pre-filled stack
; ObjectOnOff = Value to clear/set when allocated/free'd
;
;****************************************************************************************
FastFree macro
t\0a ; 2 txa
ld\0 \1FreeIndex ; 3 ldx FreeIndex
de\0 ; 2 dex
st\0 \1FreeIndex ; 3 stx FreeIndex
sta \1FreeList,\0 ; 5 sta FreeList,x
ta\0 ; 2 tax - restore index
lda #0 ; 2 lda #0
sta \2,\0 ; 5 sta BullInUse,x
endm
And this is how I use it - Its pretty simple although I do have to replicate a branch which technically speaking I could do without. However, if it comes down to the game not working because of 2 cycles wasted here....I'll kill myself!
FastAlloc x,Path,PathsInUse
These are obviously SNASM macros. SNASM has a really cool macro feature in that it lets you build new opcodes, labaels or anything! using the paramaters. This means I can decide later what register to use, and prepend a name and have a new label - cool eh!
Oh! And for the record....the micro-optimisations I've been doing are generally called peep-hole optimisations by compilers. That is were they look are a few instructions at a time and try and make them better - I'm pretty much doing the same.
Saturday, January 20, 2018
CSpect 1.07
Update to both CSpect and SNasm this time.
CSpect changes
SNasm changes (V2.0.9)
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]
Friday, May 09, 2008
New release
Ive update Minus4 and SNASM. Minus4 had a crash I assume caused by a windows update - this is now fixed. SNasm had several opcodes in 65816 mode spelt wrongly, and this is also fixed. Both these programs can be found on my minus4 site.
Monday, May 27, 2019
#CSpect V2.8.0
EDIT: You can now download pre-created SD Card images http://www.zxspectrumnext.online/cspect/index.html
This version has the new ZX Spectrum ROM support, along with the SD Card image emulator. This allows you run the full ZX Spectrum Next ROM and all it's OS features. This allows you to write BASIC programs, DOT commands or just browse the SD card using the built in menus.
There are also a couple of bug fixes, and a couple of new SNasm commands added.
SNasm V2.0.17
#CSpect V2.8.0 changes
SDCARD setup
I'd also recommend downloading HDFMonkey, which lets you copy files to/from the SD image.
This tool can be used while CSpect is running, meaning you can just reset and remount the image
if you put new files on it - just like the real machine.
This tool also lets you rescue files saved onto the image by CSpect - like a BASIC program
you may have written, or a hiscore file from a game etc.
I found a copy of this tool here: http://uto.speccy.org/downloads/hdfmonkey_windows.zip
At some point, I'll allow mapping of the cursor keys to what BASIC would like to save using SHIFT all the time...
This version has the new ZX Spectrum ROM support, along with the SD Card image emulator. This allows you run the full ZX Spectrum Next ROM and all it's OS features. This allows you to write BASIC programs, DOT commands or just browse the SD card using the built in menus.
There are also a couple of bug fixes, and a couple of new SNasm commands added.
SNasm V2.0.17
- Fixed “PUSH $1234” opcode (push order wrong)
- Added “Bank” and “BankOffset” commands to get the physical address of a label.
#CSpect V2.8.0 changes
- Fixed -esc command line, hadn't been ported from 1.x version
- Swapped Right Shift for SYMSHIFT to Right Control. Both shifts map to CAPS SHIFT. "," still works as SYMSHIFT
- Fixed PUSH XXXX opcode in debugger. Was displaying low/high. Now fixed to display high/low.
- Added "-log_cpu" for tracing the CPU instruction stream
- Added back in Label "switch" to debugger
- Missing "LDWS" opcode added to disassembler
- Fixed bug in ULA off mode where the border was still being drawn
- Fixed bug in 512 tile mode, where it was always above the ULA screen
- Added +3 ROM emulation (without RAM only mode)
- Added divMMC ROM/RAM hardware support via port $E3
- Added divMMC SD card support via ports $E7 and $EB
- SD Card SPI commands supported:CMD0,CMD1,CMD8,CMD9,CMD12,CMD13,CMD16,CMD17,CMD24,CMD55,CMD58,ACMD41
SDCARD setup
- Download the latest SD card from https://www.specnext.com/category/downloads/
- Copy onto an SD card (preferably between 2GB and 16GB as it's your Next HD for all your work - I use a 16GB image)
- Copy the files "enNextZX.rom" and "enNxtmmc.rom" from this SD Card into the root of the CSpect folder
- Download Win32DiskImager ( https://sourceforge.net/projects/win32diskimager/ )
- make an image of the SD card
- start CSpect with the command line...
"CSpect.exe -w3 -zxnext -nextrom -mmc=[sd_card_path]\sdcard.img"
I'd also recommend downloading HDFMonkey, which lets you copy files to/from the SD image.
This tool can be used while CSpect is running, meaning you can just reset and remount the image
if you put new files on it - just like the real machine.
This tool also lets you rescue files saved onto the image by CSpect - like a BASIC program
you may have written, or a hiscore file from a game etc.
I found a copy of this tool here: http://uto.speccy.org/downloads/hdfmonkey_windows.zip
At some point, I'll allow mapping of the cursor keys to what BASIC would like to save using SHIFT all the time...
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
SNasm changes
- Fixed labels
- Fixed SNA saving
Saturday, November 24, 2007
Minus4: An old friend....
While getting a little bored of doing paths (MAN! I hate doing paths...) I decided to take a break from that and add some basic profiling under Minus4. This was suggested a while back by TNT in his Paradriod blog, so I'd thought I'd take the plung now and see if I can't save some zero page memory; or at least shuffle it around so I get better use out of it. I currently have around 50 bytes of zero page left but I'm fairly sure some of it really doesn't have to be there.
Anyway, while browsing the source I had a look at the last release of Minus4 and what's been added since, and theres actually quite a bit. I'm sure I posted this a while back, but here it is again.
With profiling being added I think its probably time to release this one so others can make use of it. I dont really use Minus4 for running games anymore, Yape has long since taken that crown, but I do use it for debugging as the built in debugger is much nicer to use (although I do now wish I'd opened up a new window for it so I could have a bigger area). Anyway... With the profiling about to be added, I think its now a nice enough release that others may like to use it for development, so once Im done with profiling, you can play with it for yourself.
My assembler (SNasm) outputs the symbol file format needed for Minus4 although I'll try to workout what the format was so you can use others and convert if you need to.
Anyway, while browsing the source I had a look at the last release of Minus4 and what's been added since, and theres actually quite a bit. I'm sure I posted this a while back, but here it is again.
V2.6
----
1) Debugger now loads symbols (-p "symbol.sym" on the command line). SNASM format.
2) Source now builds under VS2005
3) Updated Debugger to allow disassembly view movement.
Page up/down, line up/down now moves disassembly view
SHIFT+Page up/down, line up/down now moves memory dump view
4) Dump of most of the hardware registers
5) Added a menu switch for undocumented opcodes. They are now OFF by default....
6) Added a scrollable BAR to the disassembly view to allow the placement of breakpoints and nicer navigation
7) New debugger keys:
Cursor Up/Down Move user bar
Page Up/Down page disassembly up/down
Shift + Cursor Up/Down Move memory dump up/down a line
Shift + Page Up/Down page memory dump up/down
B Set Break point at current user bar address
Shift + B Set Break point at address/symbol
Enter Step a single instruction. If JSR/Branch then follow if need be.
Space Place a breakpoint after current instruction and RUN.
Cursor Right If user bar is on a JSR/JMP, then read address and set window address to that.
Cursor Left If CursorRight has been used, then pop last address off and reset window.
M Set Memory window address
G Set Disassembly window address
8) Basic Profiling
With profiling being added I think its probably time to release this one so others can make use of it. I dont really use Minus4 for running games anymore, Yape has long since taken that crown, but I do use it for debugging as the built in debugger is much nicer to use (although I do now wish I'd opened up a new window for it so I could have a bigger area). Anyway... With the profiling about to be added, I think its now a nice enough release that others may like to use it for development, so once Im done with profiling, you can play with it for yourself.
My assembler (SNasm) outputs the symbol file format needed for Minus4 although I'll try to workout what the format was so you can use others and convert if you need to.
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
#CSpect V2.12.3 changes
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, April 08, 2007
Minus4w

I've been updating minus4w to allow better debugging, so now I can scroll the disassembly view around and have the current PC update the window as needed. This makes it easier to follow code and debug. I should have done this ages ago, but as usual I couldn't be bothered. Still, its a good change and with the symbol table output by SNasm, it makes for a pretty good devkit. The only thing missing now is a watch window. Theres not a lot of space for that, so I may not add it... but I could toggle the watch window with the memory dump....
Im not sure who else would use this as most folk dont really use SNasm and Minus4 for development, so I dont know when I do a new relase....
Theres a couple of other changes I think I'll make later to allow a bit more ease of use, but these are minor compared to these, but it's all good!
Saturday, August 30, 2008
Status...
I've not done anything this past week as I've been fixing a friends machine (and been knackered to boot!), so I've made no progress from what I reported last time.
However I was thinking.... I got a question a while ago about my tools being runable on Mac/Linux and I said probably not, but that might not be true. You see the thing about C# and .NET is that you can just use it as a C/C++ compiler as C# will happily do whats called unsafe code; thats basically where you use pointers again. Now what this means is I can port SNASM and possibly Minus4 into a C#/.NET environment and get it compiling, and it would then magically work on other platforms!
You see the thing about .NET is that its a virtual state machine, so you compile your code for a mythical CPU. This is then JIT (Just In Time) compiled when the program runs - much like Java is. This means my plain ol' C++ program would run quite happily under Mono on Mac or Linux. If I get a chance, I'll give this a go and see how I get on. Once its in a C# project I can then slowly port it properly to C# without all the pain.
(And yes...I know theres a managed C++ for .NET, but C/C++ sucks and I'd rather use C# these days...)
However I was thinking.... I got a question a while ago about my tools being runable on Mac/Linux and I said probably not, but that might not be true. You see the thing about C# and .NET is that you can just use it as a C/C++ compiler as C# will happily do whats called unsafe code; thats basically where you use pointers again. Now what this means is I can port SNASM and possibly Minus4 into a C#/.NET environment and get it compiling, and it would then magically work on other platforms!
You see the thing about .NET is that its a virtual state machine, so you compile your code for a mythical CPU. This is then JIT (Just In Time) compiled when the program runs - much like Java is. This means my plain ol' C++ program would run quite happily under Mono on Mac or Linux. If I get a chance, I'll give this a go and see how I get on. Once its in a C# project I can then slowly port it properly to C# without all the pain.
(And yes...I know theres a managed C++ for .NET, but C/C++ sucks and I'd rather use C# these days...)
Sunday, April 24, 2022
#CSpect 2.16.2
#CSpect V2.16.2 changes
Minor update for SNASM V3.1.1 - I didn't realise it was so out of date.
- Fixed bug where it didn’t report undefined symbols
- Added SNA export back in (48k and 128k)
- Fixed a bug with Macro usage in the first ASM file
- Fixed 6502 assembling – and PRG export
- Added “SET” back in for 6502 (can also use DEF)
- Put in an error when defining a label called “Filesize”
- Added 45GS02 CPU core for mega65 (opt 45gs02)
- Added “ADCQ”, “ANDQ”, “ASLQ”.
- Added CLD after all 32Bit instructions as “work around” for HW bug
- Fixed “INC A” and “DEC A” instructions
- Fixed a crash trying to read a file from a non-existant directory
#CSpect V2.16.0 changes
Lots of fixes and a few new additions. Improved the new divMMC autopaging for directly loaded NEX files. Added the -mouse option to try and help MAC users a little, and also fixed up the copper when large DMA blocks were running. A nice new feature is being able to visualise both copper and Raster IRQ splits using CTRL+ALT+S (via the copper plugin). Even for non-devs, this is a funky little tool to show just how complex things can get!
- Added directory functions to RST$08 plugin
- Fixed screen rendering time a little.
- on .NEX load, regs $B8-$BB are set to $82,$00,$00,$F0 - same as the OS.
- Added reg $0A = bit 2, to be able to disable DivMMC auto mapping
- Fixed crash when typing "BR
: " in debugger - Added a "-mouse" command line option. This will disable the "grabbing" of the mouse.
- When specifying an SD card image, you no longer have to specify -zxnext and -nextrom on the command line as well
- Fixed Copper when the DMA is running and blocking CPU, now counts DMA "TStates" instead of CPU ones
- .NEX files will automatically disable DivMMC PC address memory mapping
- Added -divmap command line, so you can force memory mapping of the DIVMMC "on" when directly loading a .NEX file
- Fixed a raster interrupt issue
- Added -copwait command line so you can easily visualise where the copper splits are
- Added -irqwait command line so you can easily visualise where the raster irq splits are
- You can now toggle the copper and irq visualiser with CTRL+ALT+S via the copper disassembler plugin
- You can now "set" command line globals via the Plugin interface
Friday, May 20, 2022
#CSpect 2.16.3
SNASM V3.1.1
- Fixed bug where LD A,(IX-??) wasn't recognised
#CSpect V2.16.3 changes
Mainly some CTC timer fixes, and fixing the disassembler to display LD ?,(IX/IY-??).
- Fixed CTC timers, should now be correct
- CTC cascading timers added (I think)
- Fixed disassembler, "LD A,(IX-??)" should now be displayed correctly
- Interrupts are now disabled im start of IM2
Monday, April 09, 2007
Minus4w - debug
I've finished updating the debugger with everything I wanted (for now), and it feels pretty good now - kinda like the old debugggers we used to have in the old days when we used PDS (a remote PC to C64/Amiga/ST/etc. devkit). I've listed all the new changes below, and the only thing missing as I said yesterday is a watch window, which I could get by without for now.
1) Debugger now loads symbols (-p "symbol.sym" on the command line). SNASM format.
2) Source now builds under VS2005
3) Updated Debugger to allow disassembly view movement.
Page up/down, line up/down now moves disassembly view
SHIFT+Page up/down, line up/down now moves memory dump view
4) Dump of most of the hardware registers
5) Added a menu switch for undocumented opcodes. They are now OFF by default....
6) Added a scrollable BAR to the disassembly view to allow the placement of breakpoints and nicer navigation
7) New debugger keys:
Cursor Up/Down Move user bar
Page Up/Down page disassembly up/down
Shift + Cursor Up/Down Move memory dump up/down a line
Shift + Page Up/Down page memory dump up/down
B Set Break point at current user bar address
Shift + B Set Break point at address/symbol
Enter Step a single instruction. If JSR/Branch then follow if need be.
Space Place a breakpoint after current instruction and RUN.
Cursor Right If user bar is on a JSR/JMP, then read address and set window address to that.
Cursor Left If CursorRight has been used, then pop last address off and reset window.
M Set Memory window address
G Set Disassembly window address
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
Enjoy!
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
Enjoy!
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
#CSpect V2.12.4 changes
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.
Subscribe to:
Posts (Atom)