Project page: https://github.com/z00m128/sjasmplus
Spin off of SjAsm with many extensions and bug fixes. It is a cross-platform assembler for the Z80/R800/Z80N/i8080/LR35902 processors. An executable is available for Windows 32bit, build instructions for Linux/Mac/FreeBSD are included (GNU-make and CMake supported) (x86/x86_64/arm/arm64/... any modern little-endian platform with linux or BSD and C++14 compiler should work, and since v1.18.1 also big-endian platforms are supported, although the support is only "experimental" level).
Main features:
- Full source of assembler available under BSD license, modify and extend as you wish
- Z80/R800/Z80N/i8080/LR35902 documented and undocumented opcodes support
- 3-pass design
- Macro language, defines, array of defines
- Built-in Lua scripting engine
- Conditional assembly, block repeating
- Modules (namespaces), local and temporary labels
- Source and binary file inclusion, include paths
- Multi file output, file updating, various types of exports
- Structures to work easily with structured data in memory (STRUCT pseudo-op)
- Relocation data generator to support SymbOS-like relocation of executables
- Virtual device mode for common machines: ZX 128, ZX Next, … (pseudo op DEVICE)
- ZX Spectrum specific directives and pseudo ops (SAVESNA, SAVETAP, SAVEHOB, INCHOB, INCTRD…)
- ZX Spectrum Next specific features and directives (Z80N, 8ki memory paging, SAVENEX)
- Correctness is assured by Cirrus-CI with 380+ automated tests (that's also 380+ examples of usage!)
- Fake instructions as LD HL,DE (LD H,D:LD L,E) and more
- Code inlining through colon (LD A,C:INC A:PUSH AF:IFDEF FX:LD A,D:ENDIF…)
- Very fast compilation: 1 million lines by 2-3 seconds on modern computer
- Multiline block comments and user’s messages
Latest release available at: https://github.com/z00m128/sjasmplus/releases/latest
Original project old homepage: https://sourceforge.net/projects/sjasmplus/
There is also one more spin off of original project at: https://github.com/sjasmplus/sjasmplus