Skip to content

Conversation

@markdryan
Copy link
Owner

  • Specasm is now scriptable
  • Help for z80 and z80n instructions (for 128kb Spectrums and Nexts)
  • Samake support for creating Jupiter Ace tap files
  • Single zip file for 48 and 128kb Spectrums
  • Fixed a crash when pasting into a file that has no available strings (128 spectrum and Next)

A new command 'h' has been added that can be used to bring up
some information about the z80 instructions and assembler
directives.  'h' can be used with or without a parameter.
Without a parameter it displays the help for the first instruction
'adc'.  The parameter when specified is expected to by a z80
instruction or an assembler directive. The command will attempt
to display help on the specified parameter, e.g., 'h in'.  When
in the help screen the arrow keys can be used to move left and
right through the various help screens and any other key returns
to the editor.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
Signed-off-by: Mark Ryan <markusdryan@gmail.com>
We're redone the instruction encodings placing them all into one large
table, reducing wastage, and have reworded some of the instructions to
make them shorter, saving over 2Kb.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
Signed-off-by: Mark Ryan <markusdryan@gmail.com>
SAMAC is a new binary which when loaded extends the Spectrum's BASIC
interpreter with four new commands.  These commands allow the user
to construct a .x file using a BASIC program.  The commands are:

*new - starts a new specasm file, removing any existing statements.
       An implicit *new statement is executed when the SAMAC.bin
       file is first loaded and executed.
*asm - assembles a specasm statement (passed via a single string
       argument) and appends it to the current Specasm file.
*save - saves the current file to disk.  The name of the file is
        provided in a string argument.
*load - loads an existing .x file into memory.  Any new statements
        assembled with *asm will be appended to the in memory copy
        of the loaded file.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
samake mac will now generate a small BASIC file called mac.bas that
loads Specasm's scriptable BASIC extension that allows the user
to write Specasm macros in Sinclair BASIC.  An optional 2nd
parameter can be used to provide an alternative name for the macro
file.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
Specifying 'ace' now allows the user to create a Jupiter ace tap file
that loads the binary created by salink.  The binary is, however, not
auto run.  To load

0 0 CALL bin.tap
<org-address> CALL

This change allows Specasm users to cross compile for the Jupiter
Ace.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
autoace generates an autoload tap file for a salinked binary
for the Jupiter ace.  The org address needs to be set to
$3c5b.  The .tap file can be loaded and run on the ace with the
following command:

0 0 bload autorun

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
and directories.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
The invovles splitting up the documentation strings into separate
files so that they can be stored in separate pages in the Next.  On
the spectrum 128 the documentation code and all the instruction
data is stored in a single 16kb bank.  On the next the code and
all the instruction data apart from the descriptions are stored in
one 8kb bank.  The descriptions are split over 2 8kb banks which
are paged in as necessary.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
There are no tests for the docs (and they aren't really needed and
would be tricky to write) and docs.c currently contains spectrum
specific code.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
The help command with no argument was supposed to take the user
to the first instruction, adc.  This didn't work however as the
string passed to the specasm_help function was stored in the
editor bank and swapped out when the help function was called.
Now we store it on the stack.

A bit of code reformatting is done as well.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
Print a little zxn identifier in red at the top left of the
documentation for all Spectrum Next specific instructions.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
It happens when typing something like help m.  There's no
instruction called 'm', but there is one called map.  Up until now the
search algorithm would take you to the last instruction beginning with
'l', rather than the first beginning with m, which is what happens when
you press the m key from inside the help viewer.  This issue is fixed
in this commit.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
Mostly in the new Next instructions.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
It pulls in all the error strings which are not used in the 48/128
version of SAMAC.  We use the BASIC error strings instead.  We do
need the err_type though, so this is moved to state_base.c.  This
saves about 500 bytes from the binary.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
We could use an ORG address of 32768 for the SAMAC binary, but
this would be cutting it a bit fine, leaving only 500 or so bytes
free.  If the code grew in a subsequent release we'd end up having
to lower the ORG address and this would break users' existing macros.
So let's leave ourselves some room.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
These work in a different way from ZX Spectrum macros.  samake mac
generates a Next BASIC file that defines 4 procedures that can be
used to generate .x files programmatically.

PROCasm
PROCnewx
PROCloadx
PROCsavex

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
To prevent skipping two pages of help at a time when pressing the
cursor keys.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
Pasting a block of code containing long strings into a .x file that
has no long strings available crashes the spectrum on the latest
version of Specasm.  This is because the code mistakenly assumed
that an error could not occur and didn't handle the failure from
specasm_parse_line_e.  We do now trap, handle and report the error.
We stop inserting lines after the first error occurs.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
Document macros, help and jupiter ace support.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
We'll now only distribute the 128kb zip file, which contains the
install script and the Specasm binary for the 48kb machine as well
as for the 128kb Sectrum.  The user will need to run the appropriate
install script to install the version that best suits their machine,
INST48.BAS for the 48kb machine and INST128.BAS for the Spectrum
128.

We remove the release creation code for the 48kb Spectrum.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
For the long awaited v11 release.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
This has changed a bit since the last release.

Signed-off-by: Mark Ryan <markusdryan@gmail.com>
@markdryan markdryan merged commit 83f3cf4 into main Feb 22, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants