-
Notifications
You must be signed in to change notification settings - Fork 0
Updates for the v11 release #14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Owner
markdryan
commented
Feb 22, 2025
- 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>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.