Author Topic: Rasm Z80 assembler v0.88 [update 2018.06.24]  (Read 11133 times)

0 Members and 1 Guest are viewing this topic.

Offline roudoudou

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
Rasm Z80 assembler v0.88 [update 2018.06.24]
« on: 09:58, 22 February 17 »
update v0.88
- bugfix another case 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


NEW Documentation FR http://www.roudoudou.com/rasm/rasm_fr.html
-----------------


Yes! Another assembler!  :P


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

I will survive

Offline roudoudou

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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.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: Today at 10:36 by roudoudou »
use RASM, the best assembler ever made :p

I will survive

Offline AMSDOS

  • Supporter
  • 6128 Plus
  • *
  • Posts: 3.388
  • Country: au
    • index.php?action=treasury
    • Programs for Turbo Pascal 3
  • Liked: 667
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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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.388
  • Country: au
    • index.php?action=treasury
    • Programs for Turbo Pascal 3
  • Liked: 667
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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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: 13
Re: Rasm Z80 assembler
« Reply #6 on: 23:04, 04 March 17 »

Why do you have to compile the thing itself?
greeting

Offline roudoudou

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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: 43
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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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: 43
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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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: 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 »

Offline cpcuser

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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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: 13
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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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

  • 464 Plus
  • *****
  • Posts: 479
  • Country: fr
    • urban exploration
  • Liked: 530
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