Author Topic: Rasm Z80 assembler [update 2017.04.18]  (Read 1390 times)

0 Members and 1 Guest are viewing this topic.

Offline roudoudou

  • CPC6128
  • ****
  • Posts: 200
  • Country: fr
    • urban exploration
  • Liked: 178
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
Ready

Offline Golem13

  • CPC464
  • **
  • Posts: 7
  • Country: fr
  • Liked: 2
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

  • CPC6128
  • ****
  • Posts: 200
  • Country: fr
    • urban exploration
  • Liked: 178
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 »
Ready

Offline roudoudou

  • CPC6128
  • ****
  • Posts: 200
  • Country: fr
    • urban exploration
  • Liked: 178
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 »
Ready

Offline roudoudou

  • CPC6128
  • ****
  • Posts: 200
  • Country: fr
    • urban exploration
  • Liked: 178
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)

Ready

Offline roudoudou

  • CPC6128
  • ****
  • Posts: 200
  • Country: fr
    • urban exploration
  • Liked: 178
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
Ready

Offline roudoudou

  • CPC6128
  • ****
  • Posts: 200
  • Country: fr
    • urban exploration
  • Liked: 178
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!
Ready

Offline roudoudou

  • CPC6128
  • ****
  • Posts: 200
  • Country: fr
    • urban exploration
  • Liked: 178
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 »
Ready

Offline roudoudou

  • CPC6128
  • ****
  • Posts: 200
  • Country: fr
    • urban exploration
  • Liked: 178
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 »
Ready

Offline cpcuser

  • CPC664
  • ***
  • Posts: 73
  • Country: de
  • Liked: 13
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 »