CPC Rulez

[CROSSDEV] Rasm Z80 assembler by Roudoudou
Page 1 sur 1

Auteur :  Princesse Mariana [ 04 Sep 2019, 18:59 ]
Sujet du message :  [CROSSDEV] Rasm Z80 assembler by Roudoudou

Citer :
update v0.115
- bugfix preprocessing with multi-line comments
- bugfix unrecognized % for modulo
- new banking BUILDZX directive for ZX Spectrum usage

update v0114 (summer release!)
- new command line option "-oa" to mimic inputname for binary output
- try some file extensions if the input file is not found
- new alias EXA for EX AF,AF'

update v0.113
- trigger an error when dynamic LZ section cannot crunch
- bugfix when trying to crunch an empty section
- dynamic debug options removed
- snapshot & cartridge summary by default
- embedded rasm export all labels and EQU in the info struct
- new math function CEIL
- rasm may handle generated name with INCBIN directive

update v0.112
- bugfix single NOP wasn't increment nop counter ^_^
- bugfix NOP count with ADD/SUB/XOR/AND/CP (IX+n)/(IY+n)
- bugfix in WAV import

update v0.111
- error management code cleanup
- new options with directive INCBIN for wav import
- allow EDSK with invalid track sector size or supernumerary tracks if sectors are DATA compliant
- bugfix confusion between generated global labels and local labels for export
- bugfix EQU with generated names AND curly brackets formulas inside a loop
- bugfix invalid REPEAT values will increment the error counter

update v0.110
- allow numeric expression beginning with +
- bugfix uninitialized memory reads with embedded Rasm

update v0.109
- bugfix crash when trying to save with a negative size
- bugfix crash case with macro and wrong parameter number
- bugfix EDSK update
- IFDEF/IFNDEF now scans for macro names
- TZX/CDT output support (not working)
- RUN directive may use unknown var as parameter
- embedded Rasm may return info struct about errors and symbols

update v0.108
- allow var name beginning with '_'
- CODE directive may retrieve last outputed byte adress

update v0.107
- colored output with Unix terminal
- trigger error if a (VOID) arg is used with a macro which has parameter(s)
- added Vasm syntax ENDREP and ENDREPEAT to end a REPEAT block
- enforce zero result when there is an error in a calculation
- new directives NOEXPORT/ENOEXPORT to disable/enable on demand symbol export

update v0.106
- multi-line comments

update v0.105
- bugfix wrong error with operator+non decimal negative value
- do not allow CALL (IX) or CALL (IY) syntax
- added comments begining with //
- added SIZEOF support for fields of structures
- new directive TICKER to count instruction duration

update v0.104
- BANK again in the same slot keep memory tracking
- no more path simplification (until i solve it!)

update v0.103
- bugfix memory cleanup with embedded rasm

update v0.102
- bugfix 'BREAKPOINT <adress>' export
- bugfix default limit of 65535
- bugfix limit autotest
- bugfix path simplification for dependencies export
- bugfix memory leak when using (VOID) with macro
- new math function to get a random value

update v0.101
- warn if no byte is written to a snapshot
- warn if RUN directive was already used
- bugfix calculation error cases
- bugfix maxam AND/OR/XOR/MOD operator (regression of v0.89)
- UNDEF does not care anymore about variable existence
- better error management with macro and wrong number of parameters

update v0.100
- bugfix crash with zeroed output file
- bugfix moar memory leaks

update v0.99
- new directive UNDEF
- bugfix memory leaks
- bugfix calculations with a function followed by two or more opened parenthesis

update v0.98
- bugfix with snapshot v2 memory size detection
- new optional parameter to get file size when load and crunch on the fly
- new option to remove warnings
- new fake instructions RR,RL,SRL,SRA,SLL,SLA with 16 bits (BC,DE,HL) registers
- preprocessing does not allow empty parameter to avoid confusion
- extended error may suggest a name if a variable/label/alias looks similar to a 'not found' value

update v0.97
- bugfix conditionnal code inhibition with macro declaration
- better alias infinite recursivity detection

update v0.96
- bugfix memory leak in tag translation with PRINT directive
- bugfix negative offset with INCBIN
- bugfix autotests memory handling
- added include path in command line

update v0.95
- allow spaces in tags inside strings with PRINT directive
- display warning if you try to export symbols or breakpoints with snapshot version 2
- proximity label beginning with BRK will generate an exportable breakpoint
- new enhanced LD instructions (see online documentation)

update v0.94
- bugfix using macro parameter inside print quote
- bugfix multiple memory leak with tag replacement
- bugfix command line side effect with wrong option
- better hack in expression calculator for expression beginning with negative value
- better equality processing in expression calculator
- dependencies export do not display preprocessing message anymore

update v0.93
- bugfix RUN gate array configuration
- overriding an alias with a label will trigger an error
- PRINT directive may use escaped chars in strings
- tags BANK,PAGE,PAGESET may be used with current adress $

update v0.92
- bugfix PAGE tag when using BANK in snapshot mode

update v0.91
- bugfix school case with crunched block
- bugfix proximity labels when using loops or macros
- bugfix imbricated IFUSED/IFNUSED
- new directive FAIL will print a message before exiting with an error flag
- label usage may use formula
- escaped codes support in strings (disregarding the current charset)
- PRINT directive may compute formula in strings when using curly brackets
- RUN directive may set the gate array configuration for snapshots
- generated label with negative index will trigger an error
- overriding an alias with a variable will trigger an error
- overriding a variable with an alias will trigger an error
- missing ENDIF at the end of the source will trigger an error

update v0.90
- PROTECT directive does not increase automatic binary size anymore
- bugfix memory leak with proximity labels
- proximity label properties also for EQU aliases
- label declaration may use formula

update v0.89
- bugfix dependencies export
- multiple bugfix in preprocessor
- simplify path of dependencies when possible
- enhanced ASSERT may PRINT additional parameters

update v0.88
- bugfix another cases during preprocessing

update v0.87
- new proximity labels
- rasm is able to use variables inside label names
- INCBIN directive enhanced for WAV import as a CPC sample or DMA list
- REPEAT directive may export internal counter to a variable
- new directive IFUSED & IFNUSED
- new math operator ! for NOT
- new math function PSGVALUE
- rasm return 1 to shell when there is error(s)
- new options to export dependencies (makefile style)
- new option to define variable(s) from command line
- new option for extended error messages
- bugfix cases during preprocessing
- bugfix tags PAGE & PAGESET
- new autotests embedded in Rasm in order to reduce regressions

update v0.86
- fix many bugs in label import
- fix multi-nops
- fix automatic extension for primary source
- fix infinite loop when error on reserved keyword in an expression

update v0.85
- fix some regressions introduced by STRUCT code modifications

update v0.84
- new directives STRUCT and ENDSTRUCT, ENDS to create structures
- fix regression introduced with v0.75 and embedded usage (like Arkos Tracker II does)

update v0.83
- NOCODE output must increment current adress in all cases
- new directives DR & DEFR to define REAL values (Amstrad firmware compatible)

update v0.82
- better infinite loop detection
- bugfix while 0 loop (check and disable block)
- repeat until internal counter harmonisation
- alias SL1 for SLL instruction
- remove CLang warnings on Linux

update v0.81
- added special maxam priorities for parenthesis and boolean operators

update v0.80
- bugfix operator > and >=
- bugfix Maxam priorities

update v0.79
- != operator is back with new solver

update v0.78
- DEFS can handle multiple repetition schemas
- alias DM & DEFM for DEFB

update v0.77
- even faster expression calculation
- maxam & AS80 comparison operators are back

update v0.76
- fix solver when using % prefixed binary values and comparison operators or parenthesis

update v0.75
- newer and faster expression calculator without limitations of comparisons
- % may be used as modulo (still used for binary values)
- Intel hexa & binary style support
- Binary prefix 0b fixed
- does not export IX and IY anymore in symbol files
- better error messages when calculating expressions
- boolean operators && and ||
- PUSH & POP may have more than one register in parameters
- NOP may be multiplied specifying a number of repetition in parameter
- alias <> for != comparison operator
- filenames are forced to upper case when saved to EDSK
- Infinite loop detection won't go to infinite loop anymore ^_^

update v0.74
- usage of snapshot directives forces snapshot output
- try to load .asm or .Z80 file if filename given is not found and has no extension
- BREAKPOINT directive may have an additional parameter to set break adress anywhere
- declaring two MACRO with the same name will trigger an error
- bugfix regression of -m option handling
- each REPEAT or WHILE loop export a REPEAT_COUNTER or WHILE_COUNTER variable, locally

update v0.73
- bugfix in snapshot directive
- bugfix in snapshot when using distinct bank instead of banksets

update v0.72
- ability to generate v2 snapshot for M4Wifi

update v0.71
- math functions HI & LO to get high 8 bits or low 8 bits of a pseudo 16 bits value
- @ prefix for octal values
- AS80 assembler compatibility mode (enough to compile CNG player)

update v0.70
- shifting operator >> bugfix
- EDSK face selection bugfix

update v0.69
- added $ prefix for hex values
- added 0xb prefix for binary values
- added shifting operators << and >>
- EDSK update/generation improvements (make backups before use!)

update v0.68
- Morphos compatibility code
- better error messages
- includes or incbin in a disabled section won't warn anymore if file does not exists
- breakpoint in snapshot with BRKC chunk for ACE emulator
- shorter splash text
- unused var cleanup

[b]update v0.67

- bugfix buffer overflow with long filenames for export
- snapshot support unofficial Winape breakpoint chunk
- new directive BREAKPOINT
- labels begining by BRK or @BRK are exported as breakpoint in snapshots

update v0.66
- new conditionnal directives IFDEF and IFNDEF

update v0.65
- snapshot is initialised with standard CRTC values, all audio channels OFF, all inks to deep blue except ink 1 to bright yellow
- new directives SETCRTC and SETCPC to select the CRTC and CPC model with snapshots
- new tag {PAGE} before a label to get the gate array banking value for the bank of a label (ex: #C4 for a label in bank 4)
- new tag {PAGESET} before a label to get the gate array banking value for the bankset of a label (ex: #C2 for a label in bankset 1 or bank 4,5,6,7)
- new variable ASSEMBLER_RASM (set to 1) in order to have conditionnal code
- SAVE may be used to save file in a (new) DSK. I have to work on a update mode
- "checkmode" option to assemble without writing file(s)
- moar comprehensive error message when using illegal register combination
- moar compact splash screen
- documentation updated

update v0.64
- bugfix SYMB chunk size
- added optionnal var export in snapshot SYMB chunk
- improve bankset switch control (do not mix bank & bankset of the same pages)
- INCBIN handle negative offset to seek relative to the end of file
- INCBIN special option to disable overwrite control

update v0.63
- snapshot generation (with SYMB chunk support for ACE)
- new directive BANKSET to work with 4 consecutives pages (only in snapshot mode)
- MEND alias for ENDM (and vice versa)
- Added '0x' prefix for hexadecimal values
- Cartridge generation is supposed to work with Rasm on big-endian CPU (like PowerPC)
- INCBIN directive support negative value for "size to read" in order to read a size relative to fullsize
- BANK directive may be used without parameter to open a new memory space
- bugfix UNTIL condition test

updated v0.61[/b]
- bugfix var memory leak with data flow
- bugfix preprocessing with data flow not using string endchar
- bugfix var export
- new directive ASSERT

update v0.58
- fixed INC SP encoding (was DEC SP opcode)

updated v0.57[/b]
- more flexible preprocessor with macro parameters
- new label prefix tag {BANK} to get the bank where is located a label

updated v0.56[/b]
- bugfix contiguous ORG check
- bugfix when a macro is opened for declaration and never closed
- added while/wend check in pre-processing
- now you can call a macro with a local value using prefix tag {eval}

updated v0.55[/b]
- bugfix local label internal building
- new directive INCEXO to include and crunch a file with Exomizer 2 (it's not faster than the original cruncher...)
- new directive LZEXO to open a code section that will be crunched after assembly
- licenses of third parties softwares are included in the windows executable and their respective source files

update v0.53
- bugfix CHARSET <start>,<end>,<index>
- bugfix duplicate name check for alias
- new directives INCLZ4, INCZX7 to include and crunch a file with LZ4 or LZX7
- new directives LZX7, LZ4 to open a code section that will be crunched after assembly
- literal values syntax check

updated v0.52
- bugfix ADD (IY+n), SBC (IY+n) ADC (IY+n) CP (iy+n) were encoded like IX version
- label duplicate name check
- tree search for variables speed up +20%

update v0.51
- bugfix ORG analysis for cartridge generation
- bugfix LIMIT
- bugfix with local labels not found in imbricated macros

update v0.50
- bugfix ORG <adress>,$
- you may use unix relative paths using Windows so there is nothing to change when switching between both OS

update 2017.04.03 - v0.49[/b]
- bugfix multiple LZ48/LZ49 block in the same ORG zone

updated first post with v0.48[/b]
- bugfix of label calculations when placed after a LZ48/LZ49 block (there is a bug left with more than one LZ section in the same ORG)
- PRINT enhancement

- bugfix force binary mode when writing files with Windows to avoid extra-bytes
- bugfix with identical local labels when many repeat/while/macro are imbricated
- bugfix when macro parameters are bigger than parameter definitions (led to abnormal end)
- bugfix ADD,SUB,ADC,SBC with IX adressing
- bugfix with a few error messages that did not trigger an error
- bugfix truncate instead of rounding in MAXAM compatibility mode
- bugfix translate $ current adress once for all with EQU
- bugfix intempestive error message when writing symbol file
- EQU aliases may be declared after use (even it's NOT a recommended practice)
- Allow repeat 0 (zero) to disable a block. The block must be correct as there will be a partial decoding for loops
- Allow RES,SET,BIT,LIMIT first parameter to be a variable/EQU
- Added optionnal EQU and variable export
- Added FLOOR function for calculations
- Added STR winape directive
- Added LIST keyword to ignored winape directives
- Added check for REPEAT/WHILE opened but not closed
- Added automatic windows compiler detection for visual studio & Watcom C
- Improved a lot MAXAM compatibility (when using appropriate option)
- bugfix calculations when there is no operator inside a parenthesis block

update v0.42
- calculation chain reviewed
- allow old style label declaration with a starting dot
- allow useless A,register form with ADC,ADD,SBC,SUB
- extended syntax for 8bits index registers

update v0.40
- huge bugfix session (local labels, macro, label tree, alias, ...)
- documentation FR/EN!

update v0.37
- Macro support with curly brackets
- EQU is now managed as an alias
- Added a PROTECT function to prevent overwrite
- several bugfixes (memory issue, macro mixed with repeat, WRITE DIRECT)

update v035
- many bugfixes, RASM is still in beta ;)

update v032
- a few fixes, new directives incl48, incl49 to include a binary file and crunch it on the fly
- windows executable

early stage v027
- cleanup
- licence
- comment support
- c++ wrapper

early stage v026
- wip with conditionnal assembling
- verbose mode, debug mode

early stage v024
- local labels, duplicate labels
- AMSDOS header wip
- automatic save

early stage v023
- error management

early stage v022
- conditionnal loops wip
- symbol export

early stage v021
- conditionnal assembling
- instructions fix
- memory leak fix

early stage v019
- REPEAT wip

early stage v018
- relative adress fix
- CPR building wip
- Visual Studio compatibility

early stage v017
- mathematical functions premices
- current assembly adress management

early stage v016 (2017 february 16th)
- all Z80 instructions supported (thinking about a public beta)
- use CRC to speed up instruction

early stage v015
- cleanup
- a lot of instructions added
- undocumented instructions added
- (IX+n) management
- flexible limit for binary output

early stage v014
- state machine for parsing
- fast translation with expression for constants, etc.

early stage v013
- relative jumps
- RST assembling as an expression
- variables computed on the fly

early stage v012
- CPR building
- crunched zone relocation
- local labels premices
- single quote and double quotes

early stage v010
- wip crunchzone

early stage v009
- wip computeExpression

early stage v008
- memory dump
- wip push label, push expression

early stage v007
- label premices
- expression management

early stage v004
- preprocessor creates a word list

early stage v001
- preprocessor draft

src/url: http://www.cpcwiki.eu/forum/programming ... r-in-beta/
cpcrulez: https://cpcrulez.fr/coding-crossdev_coding-rasm.htm

Auteur :  marcel [ 18 Juin 2020, 12:44 ]
Sujet du message :  Re: [CROSSDEV] Rasm Z80 assembler by Roudoudou


Rasm est passé il y a quelques jours sur github, ça sera plus simple pour avoir la dernière dernière version et les releases avec une doc qui suit!


Auteur :  norecess464 [ 18 Juin 2020, 13:18 ]
Sujet du message :  Re: [CROSSDEV] Rasm Z80 assembler by Roudoudou

Oui, il était temps, bonne initiative :)

Auteur :  marcel [ 24 Nov 2020, 13:21 ]
Sujet du message :  Re: [CROSSDEV] Rasm Z80 assembler by Roudoudou

release 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

Auteur :  OffseT [ 24 Nov 2020, 15:07 ]
Sujet du message :  Re: [CROSSDEV] Rasm Z80 assembler by Roudoudou

Merci ! rasm est bien pratique pour le développement de l'AlbiDOS. :magic:

Auteur :  hERMOL [ 24 Nov 2020, 16:00 ]
Sujet du message :  Re: [CROSSDEV] Rasm Z80 assembler by Roudoudou

Pareil pour pour Rulez!Charge :biere:


Auteur :  marcel [ 24 Nov 2020, 16:06 ]
Sujet du message :  Re: [CROSSDEV] Rasm Z80 assembler by Roudoudou

ahah génial!

faut que je trouve du temps pour démarrer la M4 et tester ça

Auteur :  Princesse Mariana [ 29 Oct 2021, 19:58 ]
Sujet du message :  Re: [CROSSDEV] Rasm Z80 assembler by Roudoudou

Citer :
Release v1.6 - Halloween! Latest
  • ZX0 cruncher upgraded to v2 + new Z80 decrunchers
  • do not export command line define(s)
  • bugfix ZX0 backward compression
  • bugfix automatic filetype search for main source
  • bugfix autotests with 3rd parties disabled
  • bugfix include paths search
  • bugfix IFUSED, IFDEF, IFNDEF when used with MODULE directive
  • bugfix file output with HOBETA header
  • new option to export ROM description
  • new option to export label with original case

Release v1.5
  • new directive DELAYED_PRINT
  • new directive STARTINGINDEX + REPEAT options
  • new directives PROCEDURE, EXTERNAL, BUILDOBJ for kind of objects export
  • new shortcut ENDMODULE
  • new autotests + debug struct info RUN+START
  • new external function for emulators and assembling into RAM
  • ROM flat output for BUILDROM directive
  • use _setmode only with Visual Studio 14.0 and below
  • use custom strnlen with BorlandC
  • use only declarations from rasm.h
  • bugfix IX/IY invalid syntaxes
  • bugfix INCBIN wav preamp with DMA options
  • bugfix ZX snapshot output + RUN bugfix
  • bugfix TIMESTAMP and custom charset
  • bugfix Borland compatibility
  • bugfix segfault with wrong char in DEFB/DEFM string
  • bugfix segfault with quote not closed in the very last directive
  • bugfix INTn prefix behaviour
  • bugfix LD reg16,(IX/IY) alias
  • warn about ORG inside crunched section
  • compute alias values before crunching sections, this fix some side effects of EQU inside crunched sections
  • ZX0 firmware compatible decrunch routine
  • Linux version compiled with GCC v9.3.0
  • MS-DOS version compiled with Open-Watcom 1.9
  • Windows version compiled with Microsoft Compiler v19

Release v1.4
  • new TAPE output code from CNG in GPL2
  • new directive BUILDTAPE
  • new directives GETNOP to count Amstrad nops
  • new directives GETTICK to count Z80 ticks
  • new DMA options for Amstrad Plus WAV import
  • new LZSA directives for LZSA1 and LZSA2 compression
  • new ZX0 directives for ZX0 compression and backward compression
  • new CONFINE directive
  • new command line option for amper hex values usage
  • new command line option for quick ZX0 compression
  • new postfix .low and .high to split registers in macro definition
  • BANK tag may process proximity label
  • bugfix some warnings
  • bugfix IN A,(C) timing in rasm
  • bugfix moar timings in documentation
  • bugfix SRL reg16 alias
  • bugfix segfault when LZ section was not closed
  • bugfix compilation without third parties
  • UPX compression is used for binary releases
  • Linux version compiled with GCC v9.3.0
  • MS-DOS version compiled with Open-Watcom 1.9
  • Windows version compiled with Microsoft Compiler v19

url/src: https://github.com/EdouardBERGE/rasm/releases/

Auteur :  marcel [ 12 Avr 2022, 08:29 ]
Sujet du message :  Re: [CROSSDEV] Rasm Z80 assembler by Roudoudou

release de la 1.7 qui corrige un GROS bug (tout le monde n'est pas concerné, ça dépend si vous aimez déclarer vos EQU en fin de source au lieu de les mettre au début)
ce bug est présent sur la 1.5 et la 1.6 déclarées instables du coup, mettez à jour :)
Le changelog:
bugfix snapshot v3 first chunks when memory cannot be crunched in RLE
bugfix negative rounding for REAL conversion
bugfix segfault with UTF8 char usage in strings
bugfix quote starting with escaped char
bugfix macOS support, new target install
bugfix label import
bugfix GETNOP/GETTICK LD (HL),im8 + some missing instructions added
bugfix breakpoints missing when exporting for snap and breakpoint file
bugfix undefined behaviour with EQU usage before declaration
new Amstrad/Microsoft conversion to 5-bytes REAL with full precision
new math function FILESIZE to get file size on disk
new math function GETSIZE to get opcode size
new poker option with a few cipher methods
new directive SNAPINIT to initialize memory with a snapshot
new directive CIPHERMEM to cipher memory portion
new CONFINE option in order to enforce location
new UTF8 support to convert legacy french or spanish char to proper Locomotive Basic values + new command line option
more symbol exports with "ignore case" (and faster)
GTILES option for INCBIN to import tiles with gray encoding

documentation NOT updated since 1.6

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group