sjasmplus v1.14.2 released

Discuss ZX Spectrum Next Games, Tools and more.
Post Reply
Ped7g
Posts: 112
Joined: Mon Jul 16, 2018 7:11 pm

sjasmplus v1.14.2 released

Post by Ped7g » Sat Oct 05, 2019 11:14 am

https://github.com/z00m128/sjasmplus/re ... ag/v1.14.2
- windows exe package: https://github.com/z00m128/sjasmplus/re ... .2.win.zip
- full source (including also many tests/examples of usage): https://github.com/z00m128/sjasmplus/ar ... 1.14.2.zip

I was not advertising every release here on this forum, but for about a year I was working on this branch of sjasmplus to fix bugs and extend it with Next-related functionality. This effort is now done, at least in "v1.x" (I have many ideas and big backlog of issues on the github for "v2.x", where I would also like to slightly adjust syntax, so it will be not directly compatible with old sources => but I have no idea when/if the "v2.x" will happen, probably not any time soon, maybe in couple of years).

So rather than release changelog, I will list here the Next-related features:
* all Z80N opcodes supported (as of core 2.00.27 - 3.00.00 RTM)
* SAVENEX commands to prepare whole NEX file directly from the asm source
* virtual device "ZXSPECTRUMNEXT" which provides 1.75MiB of virtual memory, paged by 8kiB, and eight memory slots, so you can map/page the virtual memory in assembler in the same way as at runtime, and write assembly for current configuration, then remap it to another configuration as needed, and write more assembly for the new configuration... (there are operators like $$ and $$label to retrieve the page of the current address or label, and the virtual memory model is supported by SAVENEX commands too)
* CSPECTMAP directive to produce debug-symbols for #CSpect emulator (and also support for `break/exit` CSpect pseudo instructions)
* there is also binary of sjasmplus-1.14.1 in the NextPi distribution, waiting for tooling authors to unlock its potential, used directly from the Next machine with Pi Zero accelerator.

(full changelog: https://github.com/z00m128/sjasmplus/bl ... ANGELOG.md if you are curious how it evolved)

Besides that there are many regular features, now finally mostly working as originally documented, good support for classic ZX Spectrum machines (SAVESNA, SAVETAP, ...), medium-strong macro language, and for more complex code-generators you can always use the built-in integrated Lua scripting-support.
It has also some limited support for few other CPUs (relatives of Z80): R800, i8080, LR35902

And it's all open source under BSD 3-clause license, so nothing is stopping you from adjusting anything on it, or add new extra features tailored for your particular needs.

I'm still here to read any issues on github, fix newly discovered bugs, or to help to integrate new functionality written by other authors into main branch, to make it maintained and part of regular releases; I'm just not planning to actively develop new functionality in near future.

I'm here even to help with problems while writing assembly with sjasmplus, if you think it's getting into your way, let me know about the nature of your issue, maybe we will together tame the beast...

Have fun, and I'm looking forward for the brand new Next productions... :ugeek:

Tau Ceti
Posts: 11
Joined: Fri Jul 07, 2017 3:00 pm

Re: sjasmplus v1.14.2 released

Post by Tau Ceti » Sat Oct 05, 2019 2:28 pm

Interested to know if this will this work with Mac OS Catalina ? 32 bit applications will no longer work....

Ped7g
Posts: 112
Joined: Mon Jul 16, 2018 7:11 pm

Re: sjasmplus v1.14.2 released

Post by Ped7g » Sat Oct 05, 2019 6:19 pm

"if this will this work with Mac OS Catalina"
It should.
To build it you need GNU-make, and at least C++14 C compiler. I'm not mac user, so I'm not sure what is the easiest way to get these installed (on my linux I simply install build-essentials package and clang or gcc). I guess the clang comes with XCode? On the Cirrus CI the mac builds works out-of-the-box, or better to say, out of their default image, there's already everything installed.
To build it then the script just executes `make clean && make -j4 CC=cc CXX=c++` (you may want to install it somewhere after, again I'm not sure how to do that on mac, on linux I'm using `make install PREFIX=~/.local` to install it only in my user directory.

"32 bit applications will no longer work...." ... hm? Not sure how that is related? The sjasmplus can be still built also as 32b app, but that's for legacy OS like MS windows or for HW like Raspberry Pi0. By default 64b is used pretty much on every platform.

EDIT: if it will *not* work, please let me know, what is happening and how is it failing, so I can fix it. :)

Post Reply