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 INCBIN options: REMAP, REVERT, VTILES - 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.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.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.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 - bugfix var memory leak with data flow - bugfix preprocessing with data flow not using string endchar - bugfix var export - new directive ASSERT
updated v0.57 - more flexible preprocessor with macro parameters - new label prefix tag {BANK} to get the bank where is located a label
updated v0.56 - 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 - 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 - bugfix multiple LZ48/LZ49 block in the same ORG zone
updated first post with v0.48 - 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) - directives SWITCH/CASE/DEFAULT/ENDSWITCH added - PRINT enhancement
update v0.46 RELEASE CANDIDATE - 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.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 - new directives WRITE, BANK, LET, READ, BRK, RUN, PRINT, STOP, CHARSET, INCBIN, SAVE
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 - INCLUDE fix - error management
early stage v022 - conditionnal loops wip - symbol export
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
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 https://github.com/EdouardBERGE/rasm/releases/tag/v1.7 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
ludicrous speed enhancement new struct export for rasm embeded enforce LD r8,im8 usage (to avoid confusion when it's possible between memory reference and calculation using parenthesis) enforce AMSDOS name proper format may export files on DSK with another user new REMU chunk in snapshots for debug usage and precise breakpoints new RMxx chunks in snapshots for ROM usage new directives ROMBANK to manage ROM in snapshot output new directives SRL8 and shift aliases RLC/RRC for 16 bits registers new conditionnals RST #38 audio filtering for DMA conversion various prototypes in order to design relocatable code (still in progress but documented) changed DJNZ timing to "loop" bugfix some autotests and leaks with embeded Rasm up to date documentation each OS build of rasm is still tested with more than 1100 automatic tests
builds for windows XP, windows x64 builds for MacOS ARM and MacOS Intel
What? Less than a month since two releases? Yeah, sorry, but there was a huge rework and enhancement on dynamic LZ sections You can now overflow the 64K memory space allocated IF YOU SQUEEZE enough your data to fit the 64K at the end ^_^ You may jump on another crunched section from anywhere if the destination is not 'in place', i mean, with a relocated ORG like "ORG #A000,$" As usual, new features use the unlimited design, you may overflow as much as you want in the memory As usual, the feature is already documented Enjoy!
Note : There is also new AY conversion value, expect some audio changes
Windows binaries MacOS binaries for ARM and Intel/AMD (Merci Sid!)
Comment ça une nouvelle veersion au bout de 3 semaines? Héhé... Il se trouve qu'un beta-testeur en rapport avec le nom de cette version était embêté avec certaines limitations/cas d'usage qui ne fonctionnaient pas avec les segments crunchés Quelques aller/retours et séances de tests unitaires intensives plus tard, Rasm faisait à nouveau sauter les limitations! Jetez un petit coup d'oeil à la documentation en particulier ici http://rasm.wikidot.com/directives:segments-compresses sur le cas d'usage avancé Voili, voilouuuuu
Je ne sais pas si les quelques programmeurs dans le coin réalisent le petit bijoux que nous a lâché Roud'
Dans cette dernière version, il est possible n'importe où dans le code source de définir un bloc de code/data qui sera compressé par le meilleur compresseur du moment, ZX0
Mais ce qui est le plus fou, c'est que le code/data qui suivra cette zone compressée sera correctement calée juste après la zone compressée (pas de place laissée inutilisée en raison de la compression), et les labels qui étaient dans la zone compressée pointeront sur la version décompressée. Mieux encore, on peut multiplier les blocs compressés autant qu'on le veut, et donc avoir du code compressé qui pointe sur une autre zone compressée...
Ensuite, il suffit d'avoir la routine de unpack ZX0 (fournie avec RASM) et l'utiliser pour décompresser les blocs et voilà!
Bref, je ne sais pas si je me suis bien fait comprendre avec l'explication ci-dessus, mais c'est top
Alors en fait ça fonctionne comme ça depuis les toutes premières releases de Rasm mais il y avait beaucoup plus de restrictions (la relocation ne concernait qu'un seul ORG et pas les ORG contigus, ...) Comme je n'avais pas de retour je suis resté sur MON cas d'usage, jusqu'à ce que tu arrives avec une autre façon de faire et que je corrige/améliore la gestion de l'ensemble
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 8 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum