Skip to content
Choose a tag to compare
  • parse decimal numeric constants with warning (for easier Lua 5.4 life)
  • added SAVEAMSDOS (like SAVEBIN with AMSDOS header)
  • added "smart" SMC offset syntax for self-modify-code labels: abc+*: or 123
  • added DEFDEVICE to define custom devices
  • Makefile cleanup
Choose a tag to compare

1.20.0 - 13.6.2022

  • Lua: upgrade to 5.4, replacing tolua++ bindings with LuaBridge2.6 library, extending some bindings
  • Lua: bindings slightly modified (required by upgrade), refreshed docs, added test coverage
  • Lua: the 3rd party extensions (BTW not working for many years) are obsolete in 5.4 and removed
  • Lua: more accurate errors/warning location reported even in complex cases
  • warnings: added -Wall, --help=warnings shows on/off status, rdlow off by default
  • Added HIGH mode to relocation data generator (MSB-only relocation mode)
  • many open-file "fatal" errors become "non-fatal", assembling will continue
  • deprecated features removed: --syntax=m, label abs in expressions
  • --color=auto will stay no-color when env.var. NO_COLOR is defined
  • refactorings, improving some error messages and parsing, small fixes in parsing logic
  • fix listing of Lua's sj.parse_code (eol-comments), minor memory leaks fixed
  • fix relocation of temporary labels in expressions
  • invalid CLI options are reported as regular errors (also changing exit code)
  • errors are colored similarly to gcc (only keyword has color), console input name is <stdin>
Choose a tag to compare
  • added Amstrad CPC devices (AMSTRADCPC464, AMSTRADCPC6128) - by Oli Wilkinson
  • added Amstrad CPC save snapshot and CDT (SAVECPCSNA, SAVECDT) - by Oli Wilkinson
  • added SAVE3DOS (like SAVEBIN with +3DOS header)
  • the deprecated "ok" warning suppression is removed, use "<warning-id>-ok" comment or -Wno-...
  • new temporary label suffix syntax _b and _f, enabling them for all expressions
  • fix --longptr mode to keep 32b address when DS 0 is used
  • added fake instructions adc|add|sbc|sub de,bc|de|hl|sp
  • dec|inc|pop|push will accept also single-comma multiarg in --syntax=a mode
  • DUP/REPT will now accept also zero count (skipping the block)
  • DEFL labels can be defined even as late as in last pass
  • bugfixes (macros, listing, file names in errors, SLD reversepop data)
Choose a tag to compare
  • added --color to enable/disable ANSI coloring of errors/warnings
  • added --syntax=s mode to disable sub-word substitutions of DEFINEs
  • added at-sign prefix for macro local labels to act as non-macro local label
  • SAVETRD accepts names containing dot ("z.x.B" is "z.x" with extension "B") - by Dart Alver
  • SAVETRD has optional argument to save BASIC with variables (length_minus_variables)
  • minor bugfixes (conditional block parser)
Choose a tag to compare
  • [may break old sources] new exist operator to check label existence
  • the --syntax=i mode makes now also register parsing case insensitive
  • minor bugfixes (predefined values, savenex BMP loader less strict about "colors used" content)
Choose a tag to compare
  • Big-Endian hosts support (experimental and not tested continuously)
  • added "listall", "listact" commands to OPT - to switch between listing types
  • WHILE has optional argument to set explicit guardian-counter
  • ASSERT has optional argument (to add description/notes for expression)
  • SLOT and MMU will now accept also starting address of slot instead of its number
  • fix: option --sym was not exporting labels starting with underscore
  • fix: SAVENEX BMP-loader bug when certain builds of sjasmplus were unable to open BMP files
  • fix: after STRUCT instance the "main" label is not polluted by last field of STRUCT
  • minor bugfixes in parser, windows cmake-builds have now icon
  • docs: adding "Index" section
  • docs: adding some missing information (__DATE__, __TIME__), fixing HTML anchor names
Choose a tag to compare

1.18.0 - 12.12.2020

  • [may break old sources] the colon between end of EQU/DEFL/= expression and instruction is mandatory
  • [may break old sources] new abs operator for absolute integer value
  • new system of warnings (and suppression), the "; ok" comments are now deprecated
  • DISPLAY has now also binary and char formatting
  • DEFINE+ added to [re]define identifier without error
  • ELSEIF added to conditional assembling arsenal
  • WHILE added for conditional loops
  • added "NOSLOT64K" device with 2MiB of virtual memory
  • LABELSLIST has new optional argument to dump 16bit "virtual labels"
  • CSPECTMAP exports STRUCT symbols with more detail (instance labels with physical address)
  • SMC offset syntax for self-modify-code labels for source brevity
  • added exclamation mark prefix for labels to not affect following local labels
  • added "listmc" command to OPT - to list only lines with machine code bytes
  • added --lstlab=sort variant to have symbols in listings in predictable order
  • minor bugfixes in parser and listing-line-numbering, refactored symbols/labels implementation
  • Added example (chargfx2asm) how to use sjasmplus as byte-processor for binary files
  • SLD data improvements based on Maziac's feedback and DeZog's needs
Choose a tag to compare
  • STRUCT has new TEXT pseudo-instruction to define "DB-like" data
  • STRUCT initializer block can be now multi-line (when correctly enclosed in curly braces)
  • EQU now allows for optional override of page number assigned to the new symbol
  • new $$$ and $$$$ operators to retrieve "physical" address/page inside DISP block
  • instruction out (c),0 now emits warning (can be suppressed by the "; ok" comment)
  • fixed listing of structures using long BLOCK fields (machine code was correct, but listing not)
  • fixed some memory leaks, undefined behaviour and unaligned memory access
Choose a tag to compare
  • LUA the new emit warning (v1.15.1) is now suppressible
  • Predefined defines extended and renamed (following gcc/clang ones)
  • Added relocation data generator, check also example
  • bugfixes/improvements in parser like: operators not, low, high can be followed also by (
Choose a tag to compare
  • EQU now assigns memory page to symbol based on the symbol value and current memory mapping
  • this does affect also results of LABELSLIST (Issue #111)
  • LUA emits warning when some machine code is emitted without "ALLPASS" modifier
  • SAVETRD refactored: fix couple of bugs and make TRD files conform the actual TR-DOS practice
  • SAVETRD: new "&" modifier to produce "mono-loaders" with extra files appended
  • SAVETRD: added support for the unofficial 3-letter extensions ("; ok" to suppress warnings)
  • INCTRD refactored and added support for unofficial 3-letter extensions
  • fix issue #108 to detect windows drive letters at beginning of file names with full windows paths
  • bugfixes: RAMTOP w/ global device, "r+w" file operations code review, memory buffer overrun in LUA