Skip to content

Releases: markdryan/specasm

Specasm v10

24 Sep 19:53
adaaeff
Compare
Choose a tag to compare

Version v10 of Specasm includes the following enhancements and fixes:

  • There's a 128kb version of the Specasm editor that includes all the features from the Next version
  • The drawing code has been rewritten in assembler making the editor feel much more responsive
  • Three new commands are available on the Next and Specrtrum 128 versions of the editor; gc to garbage collect old strings, and t and fl to report the number of t-states and the flags modified by a selected block of code.
  • It's now possible to use Page Up/Page Down/File Start/File End commands in selection mode.
  • The size of the clipboard in the Next version of Specasm has been increased to 16kb
  • A numeric literal can now be passed to the jp instruction, e.g., jp 100.
  • Character literals can now be used in expressions, e.g., ld a, =‘a’+7
  • Fixed a bug which prevented labels of 12 characters from being used in an equ statement
  • Error handling for failed commands is improved. If a ‘l’ command fails, the Specasm editor stays in command mode and allows the command to be edited, rather than returning to editor mode.
  • Relative paths, containing .., can now be used when loading and saving files in the Specasm editor
  • Fixed an incorrect error message that was reported when an expression was used with the cp instruction
  • Fixed a bug in the linker which led to a ‘multiply defined org statement error’ when linking test programs if the project being tested contained an org statement in a .x file.
  • The editor now only accepts statements that are 32 characters or less when formatted. Previous version of Specasm accepted lines that could be longer than 32 characters after formatting and this lead to memory corruption.
  • Fixed a bug which prevented + includes, i.e., includes relative to the /specasm directory from working if they were not present in the main project folder, i.e., the one with the Main label.
  • Fixed a bug which prevented single letter .t files, e.g., s.t.
  • Fixed some nasty memory corruption bugs related to nested expressions, in which recursive functions in the expression parser were causing the stack to overwrite the linker’s data. This was particularly acute one the Next. More space has been made available for the stack and the limit on the number of nested expressions has been reduced to 4.
  • Worked around what appears to be a weird ESXDOS sdcard corruption issue when the linker encountered an error. It seems like creating, closing and removing a 0 length file prevents the sdcard from subsequently being mounted in MacOS. Still need to create stand alone reproducer for this.

Specasm v9

04 May 20:57
a7583b1
Compare
Choose a tag to compare

Specasm v9 contains numerous updates and improvements:

  • Specasm can now create zx81 binaries and .p files.
    • There's a new zx81 linker directive that instructs the linker to set the org address to 16514 (unless overridden) and to transliterate all strings and character constants from ASCII to the corresponding ZX81 encoding.
    • Samake can now generate .p files, containers for ZX81 programs.
  • Specasm v9 includes support for unit testing.
    • A new type of source file, a .t file, is supported that is designed to contain test code. When the linker encounters a .t file it will create a separate binary with a .tst extension containing both the normal program code, stored in the .x files, and the test code in the .t files.
    • Samake has been updated to generate test harnesses. When run with the "tst" parameter it will examine the .tst binary, identify all the unit tests it contains and generate a BASIC program to call the unit tests and print their results to the screen.
    • Some library code has been added which is designed for use in unit tests to verify that the code being tested only corrupts the registers it is expected to corrupt.
  • The max path size when including another file or directory has been increased.
  • A bug related to the parsing of ld (ix+1), =exp has been fixed.
  • A bug has been fixed in the editor which resulted in incorrect error messages being displayed when a ld instruction containing a label of expression was used. This occurred when the file being edited had no free strings available.
  • Label subtraction support has been removed from the linker, to save space. This feature was deprecated in Specasm v5 and removed from the editor in Specasm v7. If you still have old object files around that use this feature, the linker will invite you to load and save those files in the editor before re-linking.
  • The documentation is now included in the release.zip files.
  • The names of the installation and removal scripts have been changed from INSTALL and REMOVE to INSTALL.BAS and REMOVE.BAS

Specasm v8

10 Mar 21:00
f6bbb12
Compare
Choose a tag to compare

Specasm v8 contains numerous updates and improvements:

  • The keyboard handling is much improved. Phantom key strokes are no more and key repeat should feel more natural.
  • Binary files can now be included using the new '!' directive.
  • The existing '+' and '-' directives can now be used to include entire directories rather than individual files. This makes is easier to split programs up over multiple folders.
  • The order in which .x files are linked is now well defined. Previously, the file containing the .Main label was linked first with the remaining files being linked in an arbitrary order. In Specasm v8, the file containing the .Main label is still linked first but the remaining files are linked in ascending alphabetical order of their path names.
  • The existing contents of the editor are no longer deleted when opening a non-existent file.
  • Specasm now accepts one parameter on the command line, a .x file to open, e.g., .specasm sprite.x. (Next only)
  • There's now a proper clipboard, supporting proper cut, copy and paste. The clipboard is less clunky than the existing copy and move commands and allows code to be moved between files. (Next only)

Specasm v7

28 Jan 20:50
Compare
Choose a tag to compare

The following changes were introduced in v7:

  • There are now two separate versions of Specasm, one for the 48k and 128k machines and one for the Spectrum Next.
  • The Spectrum Next version of Specasm supports all the z80n opcodes.
  • A new tool called samake has been added which can be used to create loaders for programs built with Specasm.
  • A bug was fixed in Specasm in which lines containing equ statements were not highlighted when selected.
  • Support for label subtraction (deprecated in v5) has been removed from Specasm. It's still supported by salink so existing .x files will continue to work

v6

19 Mar 14:20
ee3bd26
Compare
Choose a tag to compare
v6

The v6 release of Specasm does nothing more than fix the installation script which only worked when re-installing Specasm. It failed on machines which had no previous installation of Specasm, or more specifically, no /BIN/EXTRA directory. The INSTALL script has been updated to create the /BIN/EXTRA directory if it does not already exist.

There are no changes to the assembler, editor or the linker and Specasm v6 is backwardly compatible with .x files from previous releases.

v5

25 Jan 21:12
5350a42
Compare
Choose a tag to compare
v5

Add support for expressions

  • Local and global constants can now be declared with the equ statement
  • Expressions can be used in most places immediate values can be used
  • Fixed a bug in the import of .s files in which newlines where not always imported

v4

20 Nov 14:15
095ffaa
Compare
Choose a tag to compare
v4

This release is mostly concerned with reducing the code size of the main Specasm binary and improving test coverage. The main changes are:

  • Fix a small bug in the find command
  • Change the optimisation level from -SO2 to -SO3
  • Move the calibration code out of Specasm's loader into a separate machine code file
  • Reorganise the unit tests so that most of them can be run on the Spectrum itself
  • The various optimisations reduce the size of the main Specasm binary by about 1.8Kb

There are no changes to the binary or source code compatibility with earlier versions of Specasm.

v3

18 Jun 20:10
446393a
Compare
Choose a tag to compare
v3
  • Fix a bug in the linker which results in the addresses of labels being incorrectly calculated that occur after an align statement that occurs at an address that is already aligned.

v2

18 Mar 19:46
7b317d7
Compare
Choose a tag to compare
v2

Version 2 of Specasm includes the following changes:

  • equb, equw, repb have been renamed db, dw, and ds respectively.
  • The order of arguments expected by ds is the reverse of what repb expected. Both parameters are mandatory.
  • Hexadecimal numbers are now denoted by '$' instead of '&'
  • The align directive has been implemented. You can now align code and data to a power of 2 up to 256 bytes.
  • Specasm now disables interrupts. It uses z80_ms_delay for its delay loop and relies on a calibration value passed in by its BASIC loader. This makes Specasm much more reliable.
  • Two new directives, '+' and '-' can be used to pull in .X files in other directories into the project. Files included with '+' are relative to the /specasm directory. Files included with '-' are relative to the directory of the including file or are absolute paths.
  • The filename passed to the 's' command is now optional. It is no longer required if Specasm knows the name of the file you're editing, either because it has loaded it or has previously saved it.
  • Auto repeat disabled for SYM SHIFT + w.
  • All Specasm binaries are now built with the same compile options and std library. This speeds up the builds a bit.

v1

20 Feb 14:59
Compare
Choose a tag to compare
v1

First release of Specasm, an ESXDOS based assembler for the ZX Spectrum.