============================== F E A T U R E S ==============================
RASM - Roudoudou's Z80 Assembler
Yes! Another Z80 assembler but this one has...
- DAMN fast assembling (millions of instructions in a blink of an eye)
- integrated crunched sections
(LZ48/LZ49/LZ4/ZX7/Exomizer/APlib/LZSA1/LZSA2) + load&crunch on the fly
- CPC cartridge, ZX snapshots, CPC snapshots up to 4M, TAPE output
- save unlimited binaries with or without AMSDOS/HOBETA header
- handle multiple EDSK update or generation simultaneously
- symbols import/export, breakpoint and dependencies export
- ORG checking, unlimited memory workspaces where labels are shared,
bank management, structures
- ALL undocumented instructions
- conditionnal macro, unlimited & embeded loops with
local labels, switch/case
- floating point engine, mathematical functions, ...
- MAXAM, AS80, UZ80, Pasmo compatibility option
- Amsdos real & Microsoft basic 40bits float support
- English & French documentation
The project was born a few years ago (2017) because i needed a really fast
assembler in order to finish my demo before the deadline of the Alchemy 2017.
The project was quite huge with approx 350.000 words to assemble but thanks
to rasm, the 512K cartridge compiled in a blink of an eye even on my slow
Atom CPU.
Now Rasm is the reference for huge projects and ultra-fast assembling.
============================ R E Q U I R E M E N T ==========================
RASM tested and worked fine on the following configurations:
- AmigaOS 4.1 Final Edition (Kickstart 53.70, Workbench 53.14)
================================= U S A G E =================================
ATTENTION! Use BIG stack before assembly! For example stack 700000!
SYNTAX: rasm <inputfile> [options]
FILENAMES:
-oa automatic radix from input filename
-o <outputfile radix> choose a common radix for all files
-or <ROM filename(s)> choose a radix filename for ROM output
-ob <binary filename> choose a full filename for binary output
-oc <cartridge filename> choose a full filename for cartridge output
-oi <snapshot filename> choose a full filename for snapshot output
-os <symbol filename> choose a full filename for symbol output
-ot <tape filename> choose a full filename for tape output
-ok <breakpoint filename>choose a full filename for breakpoint output
-I<path> set a path for files to read
-no disable all file output
DEPENDENCIES EXPORT:
-depend=make output dependencies on a single line
-depend=list output dependencies as a list
if 'binary filename' is set then it will be outputed first
SYMBOLS EXPORT:
-s export symbols %s #%X B%d (label,adr,cprbank)
-sz export symbols with ZX emulator convention
-sp export symbols with Pasmo convention
-sw export symbols with Winape convention
-ss export symbols in the snapshot (SYMB chunk for ACE)
-sc <format> export symbols with source code convention
-sm export symbol in multiple files (one per bank)
-l <labelfile> import symbol file (winape,pasmo,rasm)
-eb export breakpoints
-wu warn for unused symbols (alias, var or label)
SYMBOLS ADDITIONAL OPTIONS:
-sl export also local symbol
-sv export also variables symbol
-sq export also EQU symbol
-sa export all symbols (like -sl -sv -sq option)
-Dvariable=value import value for variable
COMPATIBILITY:
-m Maxam style calculations
-dams Dams 'dot' label convention
-ass AS80 behaviour mimic
-uz UZ80 behaviour mimic
-pasmo PASMO behaviour mimic
-amper use ampersand for hex values
-msep <separator> set separator for modules
EDSK generation/update:
-eo overwrite files on disk if it already exists
SNAPSHOT:
-sb export breakpoints in snapshot (BRKS & BRKC chunks)
-ss export symbols in the snapshot (SYMB chunk for ACE)
-v2 export snapshot version 2 instead of version 3
PARSING:
-me <value> set maximum number of error (0 means no limit)
-twe treat warnings as errors
-xr extended error display
-w disable warnings
-void force void usage with macro without parameter
============================= C H A N G E L O G =============================
New for version 1.3:
- extended cartridge support
- new directive LZSA1, LZSA2 for crunched code sections
- new directives INCLZSA1 and INCLZSA2 for binary import and LZSA crunching
- new directives XORMEM and SUMMEM to generate checksum of a memory area
- new directive TIMESTAMP to output date/time
- new TAPE option for SAVE directive
- new DMA import options with INCBIN directive (new checks & warnings)
- new enhanced instructions LD IX/IY,BC/DE & LD BC/DE,IX/IY
- new tag {SLOT} for extended cartridge management
- new option -msep to specify separator for labels inside modules
- new option -amper to use ampersand for hex values
- new escapes code maybe used in DEFB strings
- directive BRK now generates #ED,#FF opcode
- bugfix byte order for Microsoft real format
- bugfix DSK header with nightly build
- bugfix 16bits PCM wav import
- do not warn for missing file with INCLUDE in disabled condition
- do not export struct definition with symbols
- many warnings removed, cleanup, some draft for future functionalities
================================ S O U R C E ================================
Based on github version source
https://github.com/EdouardBERGE/rasm
______ ______ ______ ______
______|:: .__|:: .__|_____ ______|:: ___|:: ___|______ _____
|: , |: | |: | |: ,_|: ,__|:___ |:___ |: - |: ,_|
|__|___|______|______|___| _____|______|______|______|___|
home cross-compilation factory
|