Author Topic: Rasm Z80 assembler v0.99 [update 2018.08.16]  (Read 13798 times)

0 Members and 1 Guest are viewing this topic.

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Rasm Z80 assembler v0.99 [update 2018.08.16]
« on: 09:58, 22 February 17 »
update v0.99
- new directive UNDEF
- bugfix memory leaks
- bugfix calculations with a function followed by two or more opened parenthesis


Documentation FR http://www.roudoudou.com/rasm/rasm_fr.html
Documentation EN http://www.roudoudou.com/rasm/rasm_en.html

Yes! Another assembler!

    - DAMN fast assembling
    - integrated crunched sections (LZ48/LZ49/LZ4/ZX7/Exomizer) + load&crunch on the fly
    - cartridge, snapshot, binaries with or without amsdos header, multiple EDSK generation
    - symbols import/export, breakpoint 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 compatibility option
    - English & French documentation
    - Uninterrupted support

Keep in mind that msdos version will work ONLY on true msdos with dos4gw.exe extender or Windows 95,98,Millenium (that graphical manager on msdos) without long filenames. Will work with DOS-box too
« Last Edit: 16:11, 16 August 18 by roudoudou »
use RASM, the best assembler ever made :p

I will survive

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler in beta
« Reply #1 on: 10:13, 22 February 17 »

Thanks to all the people
supporting me
advising me for new functionnalities, ergonomics
reporting bugs
and of course using the tool!

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 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


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


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


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 v052
- 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.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  ;)
- 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


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
- INCBIN


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
« Last Edit: 16:12, 16 August 18 by roudoudou »
use RASM, the best assembler ever made :p

I will survive

Offline AMSDOS

  • Supporter
  • 6128 Plus
  • *
  • Posts: 3.412
  • Country: au
    • index.php?action=treasury
    • Programs for Turbo Pascal 3
  • Liked: 682
Re: Rasm Z80 assembler in beta
« Reply #2 on: 10:58, 22 February 17 »
Yes! Another assembler!  ;D 



Looks interesting. Looking at some of that code I need to brush up on my assembly, but at least my Assembly is better than my C and was wondering if Translate back to C was an option for this Assembler?  8)

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler in beta
« Reply #3 on: 11:32, 22 February 17 »

Looks interesting. Looking at some of that code I need to brush up on my assembly, but at least my Assembly is better than my C and was wondering if Translate back to C was an option for this Assembler?  8)


I think this is a disassembler job, i can modify my old dizasm to do that
use RASM, the best assembler ever made :p

I will survive

Offline AMSDOS

  • Supporter
  • 6128 Plus
  • *
  • Posts: 3.412
  • Country: au
    • index.php?action=treasury
    • Programs for Turbo Pascal 3
  • Liked: 682
Re: Rasm Z80 assembler in beta
« Reply #4 on: 11:46, 22 February 17 »
Sorry my suggestion is ridiculous (I think) :-[ I haven't seen an Assembler translate Assembly back to C, it's unusual I think cause it would only be done to write low-level code into an high-level form. Some early Assembly tutorials for the Amstrad used BASIC and then show equivalent Assembly code which was a good approach, in my case I'm perhaps better at Assembly than C.

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler
« Reply #5 on: 19:20, 04 March 17 »
first official release of Rasm in the first post (only sources today, stand alone executables monday since i do not have a windows dev machine at home)


the license is MIT "expat"


« Last Edit: 21:08, 04 March 17 by roudoudou »
use RASM, the best assembler ever made :p

I will survive

Offline cpcuser

  • CPC664
  • ***
  • Posts: 73
  • Country: de
  • Liked: 15
Re: Rasm Z80 assembler
« Reply #6 on: 23:04, 04 March 17 »

Why do you have to compile the thing itself?
greeting

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler
« Reply #7 on: 23:26, 04 March 17 »

Why do you have to compile the thing itself?
greeting




first official release of Rasm in the first post (only sources today, stand alone executables monday since i do not have a windows dev machine at home)


the license is MIT "expat"


wait monday for executables
« Last Edit: 23:28, 04 March 17 by roudoudou »
use RASM, the best assembler ever made :p

I will survive

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler [update 2017.03.06]
« Reply #8 on: 09:18, 06 March 17 »

update 2017.03.06:
- new release v032, a few fixes, new directives incl48, incl49 to include a binary file and crunch it on the fly
- Windows executables

use RASM, the best assembler ever made :p

I will survive

Offline Golem13

  • CPC464
  • **
  • Posts: 21
  • Country: fr
  • Liked: 44
Re: Rasm Z80 assembler [update 2017.03.06]
« Reply #9 on: 13:05, 06 March 17 »
It's a very great job roudoudou. Thanks.
The maxam compability will be a very good point, coz if it's possible to convert a source to your syntax, it's no more possible to assemble the converted source in a maxam assembler.
Do you believe it will be possible to manage the maxam syntax in your assembler ?

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler [update 2017.03.06]
« Reply #10 on: 14:17, 06 March 17 »
It's a very great job roudoudou. Thanks.
The maxam compability will be a very good point, coz if it's possible to convert a source to your syntax, it's no more possible to assemble the converted source in a maxam assembler.
Do you believe it will be possible to manage the maxam syntax in your assembler ?


Thanks to you.


I'm afraid by maxam you mean Winape


Making a maxam compatibility is supposed to be easy to do at short term -> there is only to destroy operator priority


Some of winape directive may be translated on the fly like "Write direct -1,-1,<n>" -> "bank <n>"



I'v already made a winape local label style with '@'  ;)


Rasm do not have yet macro support (it's planned)


Rasm does not support elseif (and i have not think about it)


Rasm does not support "AND" "OR" "XOR" operator but it should not be a great difficulty to integrate them




At this very moment i made Rasm to save time for my future production (november 2017) so i cannot promise to work on it before  :-X
use RASM, the best assembler ever made :p

I will survive

Offline Golem13

  • CPC464
  • **
  • Posts: 21
  • Country: fr
  • Liked: 44
Re: Rasm Z80 assembler [update 2017.03.06]
« Reply #11 on: 14:51, 06 March 17 »
You will need to include also, and at least the few instructions below (not a exhaustive list):

READ
filename
INCBIN filename[,offset[,size[,offset_high]]]
LET symbol = value
IFNOT condtion
RUN address
ORG code_address[,output_address]
CHARSET [string,value|byte,value|start,end,value]

From memory, and it's the commands list I use in maxam/winape syntax :-)

Thanks a lot for your skill !  :-*

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler [update 2017.03.06]
« Reply #12 on: 16:17, 08 March 17 »
You will need to include also, and at least the few instructions below (not a exhaustive list):

READ
filename
INCBIN filename[,offset[,size[,offset_high]]]
LET symbol = value
IFNOT condtion
RUN address
ORG code_address[,output_address]
CHARSET [string,value|byte,value|start,end,value]

From memory, and it's the commands list I use in maxam/winape syntax :-)

Thanks a lot for your skill !  :-*


I've been working hard on new directives to improve winape/maxam compatibility and facilitate the transfert to Rasm


I added to your list the SAVE, BRK and WRITE DIRECT command


There is a command line switch to avoid operator priority and mimic parenthesis with brackets


The assembler can also import symbols (pasmo/winape/rasm) and work on multiple memory set


For example, if your software is supposed to use expansion bank to run code, you may write a code like this


Each write direct create a new memory set of 64K


In this example there is 3 independent memory set BUT labels are shared


Code: [Select]
org #2000
mystart
; main code with menu from #2000
dec a
jr z,submenu1
dec a
jr z,submenu2
myend


save "main.bin",mystart,myend-mystart


write direct -1,-1,#C4
org #4000
submenu1
; code code
submenu1end
save "menu1.bin",submenu1,submenu1end-submenu1



write direct -1,-1,#C4
org #4000
submenu2


; code code


submenu2end
save "menu2.bin",submenu2,submenu2end-submenu2


Note: If you use the WRITE DIRECT -1,-1,n syntax


The assembler will write to specifics CPR memory sets


If no SAVE command is used, a CPR will be automatically created, the assembler will write 16K from the first adress written in the bank


You may force CPR writing






Moar testing then release soon ;)




Thanks Golem for suggestions












« Last Edit: 14:05, 30 March 17 by roudoudou »
use RASM, the best assembler ever made :p

I will survive

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler [update 2017.03.06]
« Reply #13 on: 10:54, 13 March 17 »
new release v035 in the first post, many bugfixes and new directives


RASM is still in beta  ;)



specific winape directive compatibility:

write direct -1,-1,<n>   same as
bank <n> directive
let             this useless keyword is ignored like in locomotive Basic
read            same as include directive
brk             ignored
run <nn>        ignored
print         print var, text or expression
stop         stop assembling
charset [p1,p2[,p3]]   same as Winape charset directive
incbin extended parameters

save "file",adr,size  save memory region in a file
« Last Edit: 11:12, 13 March 17 by roudoudou »
use RASM, the best assembler ever made :p

I will survive

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler [update 2017.03.13]
« Reply #14 on: 12:21, 15 March 17 »

updated the first post with 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)

use RASM, the best assembler ever made :p

I will survive

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler [update 2017.03.16]
« Reply #15 on: 15:11, 16 March 17 »

Updated the first post

A quick update today cause v037 was crap...


Rasm is now going into stabilisation phase since all requested functionnalities are implemented
use RASM, the best assembler ever made :p

I will survive

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler [update 2017.03.16]
« Reply #16 on: 11:46, 18 March 17 »
Rasm is now going into stabilisation phase since all requested functionnalities are implemented


I worked a lot this night  ;D


change pas d'main, j'sens que ├ža vient!


updated the first post with v0.40
- huge bugfix session (local labels, macro, label tree, alias, ...)
- documentation FR/EN!
use RASM, the best assembler ever made :p

I will survive

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler [update 2017.03.20]
« Reply #17 on: 20:03, 20 March 17 »

(first post modified)
update 2017.03.20 - 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
- documentation FR/EN updated


still some adjustments to do (local labels are buggy)
« Last Edit: 14:10, 22 March 17 by roudoudou »
use RASM, the best assembler ever made :p

I will survive

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler [update 2017.03.28]
« Reply #18 on: 09:20, 28 March 17 »
First release candidate!


Thanks to Golem for intensive testing, now his project compilation is a LOT faster


Manuals will be released soon in a separate ZIP




update 2017.03.28 - v0.46RC

- 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

« Last Edit: 09:24, 30 March 17 by roudoudou »
use RASM, the best assembler ever made :p

I will survive

Offline cpcuser

  • CPC664
  • ***
  • Posts: 73
  • Country: de
  • Liked: 15
Re: Rasm Z80 assembler [update 2017.03.28] Release Candidate!
« Reply #19 on: 11:55, 30 March 17 »



error......  jr nz,vbl

Code: [Select]

buildcpr
bank 0
di
res 5,(ix+0),b ; store in B the result of the RES
jr $


; generate a sinus table
align 256
sinustable
ang=0
repeat 256
defb 127*sin(ang)
ang=ang+360/256
rend


nop:nop:nop:nop:nop:call vbl;just for fun


tic=0
repeat
if tic<32
defb tic
else
defw tic
endif
tic=tic+0.7
until tic<64


LZ48


repeat 50
dec a
jr z,$+3
inc b
rend


LZCLOSE


vbl
ld b,#f5
in a,(c)
rra
jr nz,vbl
ret
« Last Edit: 12:01, 30 March 17 by cpcuser »

Offline cpcuser

  • CPC664
  • ***
  • Posts: 73
  • Country: de
  • Liked: 15
Re: Rasm Z80 assembler [update 2017.03.28] Release Candidate!
« Reply #20 on: 12:11, 30 March 17 »
error...


Code: [Select]

org #2000
mystart
; main code with menu from #2000
dec a
jr z,submenu1
dec a
jr z,submenu2
myend




save "main.bin",mystart,myend-mystart




write direct #C4
org #4000
submenu1
; code code
submenu1end
save "menu1.bin",submenu1,submenu1end-submenu1






write direct #C4
org #4000
submenu2




; code code




submenu2end
save "menu2.bin",submenu2,submenu2end-submenu2


Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler [update 2017.03.28] Release Candidate!
« Reply #21 on: 12:15, 30 March 17 »

error......  jr nz,vbl
yep, i have to fix the LZ48 dynamic block since i made a lot of modifications with labels  ;)




error...
Code: [Select]
write direct #C4



Error in the code (that was a wrong example), the correct syntax is describe in manual or winape directive page -> write direct -1,-1,#C4



use RASM, the best assembler ever made :p

I will survive

Offline cpcuser

  • CPC664
  • ***
  • Posts: 73
  • Country: de
  • Liked: 15
Re: Rasm Z80 assembler [update 2017.03.28] Release Candidate!
« Reply #22 on: 13:12, 30 March 17 »

What are these bad examples?
Can not offer functional?


greeting

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler [update 2017.03.28] Release Candidate!
« Reply #23 on: 14:02, 30 March 17 »
What are these bad examples?
Can not offer functional?


greeting


i will remove them. Did you test on your sources?
use RASM, the best assembler ever made :p

I will survive

Offline roudoudou

  • 6128 Plus
  • ******
  • Posts: 504
  • Country: fr
    • urban exploration
  • Liked: 663
Re: Rasm Z80 assembler [update 2017.03.28] Release Candidate!
« Reply #24 on: 09:07, 31 March 17 »
updated first post with v0.48
- bugfix of label calculations when placed after a LZ48/LZ49 block (there is a buf left with more than one LZ section in the same ORG)
- directives SWITCH/CASE/DEFAULT/ENDSWITCH added
« Last Edit: 10:42, 31 March 17 by roudoudou »
use RASM, the best assembler ever made :p

I will survive