Brass - 1.0.5.3 update [06/02/2014]

One suite to code them all. An complete IDE and assembler for all your z80 projects!

Moderators: benryves, kv83

Post Reply
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Post by benryves »

Fair enough ;)

http://benryves.com/bin/brass/

In any case, the new version adds proper array indexing, supports floating-point labels on the for loops, and a manual that's hopefully easier to find your way around (note: looks rubbish in IE, and the webring banner turned grey and went in the wrong spot again so I've temporarily removed it - I'm going to go back to a table-based layout for it now :P)
threefingeredguy
Calc King
Posts: 2195
Joined: Sun 27 Mar, 2005 4:06 am
Location: sleeping
Contact:

Post by threefingeredguy »

Dan e compliments this on being the only tasm-compatible assembler he was able to use for one of his usb8x projects. He was using ZDS previously and when he converted it, this was the only thing that was able to do it.
Image
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Post by benryves »

:)

In any case, there was a major bug in the previous versions - for some reason I can't quite gather, there was a line of code to the effect of

Code: Select all

if (ExpandedOutput[i] != 0) { 
    BR.Data.Add(ExpandedOutput[i]);
}
...the result of which being that all zeroes were stripped out of the hex file output formats. The new version fixes this and some other output WTF-ery.
Ignore everything it says about apps - it will output a .hex file for an 83+/73 app with a header which runs fine in Flash debugger, but if you sign it the 8xk is useless (doesn't work in Flash debugger) and if you use 2 pages or more the header appears to be invalid (lots of guesswork going on here) and so it won't sign or run in Flash debugger.
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Post by benryves »

Now signs apps, though the header is wrong so the 8xk doesn't really work in anything beyond PTI :(

EDIT: Fixed 8xp->8xk
Last edited by benryves on Wed 07 Jun, 2006 11:39 am, edited 1 time in total.
Andy_J
Calc Master
Posts: 1110
Joined: Mon 20 Dec, 2004 10:01 pm
Location: In the state of Roo Fearing
Contact:

Post by Andy_J »

Nevermind.
ImageImage
Image
User avatar
NanoWar
Extreme Poster
Posts: 365
Joined: Fri 17 Dec, 2004 6:39 pm
Location: #$&"%§!
Contact:

Post by NanoWar »

Ben, I love your new Brass Manual design :).
Revolution Software
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Post by benryves »

Thanks... it's ugly, but much easier to browse. :)
I need to get around to adding the webring banner again, though...
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Post by benryves »

http://benryves.com/bin/brass/ - multipage apps now sign.
http://benryves.com/bin/brass/labels/ - new 83+ and 73 .lbl files
User avatar
Timendus
Calc King
Posts: 1729
Joined: Sun 23 Jan, 2005 12:37 am
Location: Netherlands
Contact:

Post by Timendus »

You da man :)

What are .lbl files..?
http://clap.timendus.com/ - The Calculator Link Alternative Protocol
http://api.timendus.com/ - Make your life easier, leave the coding to the API
http://vera.timendus.com/ - The calc lover's OS
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Post by benryves »

An ugly hack around the awful speed of the assembler - basically, just a binary file containing label names and values. Seeing as they don't have to be run through the macro preprocessor*, they load much much faster than the original .inc file.

One thing I neglected to mention is that the macro system has been changed slightly - for example:

Code: Select all

; Old style
.define x(y) .echoln "Generic"
.define x({0}) .echoln "0"

x(0) ; "0"
x(1-1); "0"
x(727) ; "Generic"

; New style

x(1-1); "Generic" <- doesn't match {0} any more
To fix this, you need to specify a pattern of {(0)} - parentheses around a value means "try and evaluate it before checking for a match". The idea was to allow this:

Code: Select all

.deflong icall(label)
    .if :label == #
        call label
    .else
        bcall(_label)
    .endif
.enddeflong
; (Something like that, any way)
Problem is that you can't tell which page a label is on until you hit that label, and so I'd need to add an extra pass grouping labels into pages first.

*The macro preprocessor is one of the places that the assembler is incredibly slow thanks to my awful text parsing routines. :(

EDIT: Damn, would put the webring thing back up but Firefox is being a bloody nuisance. How do you declare a table, first column width 200, second column width rest of page, in Firefox?
User avatar
Timendus
Calc King
Posts: 1729
Joined: Sun 23 Jan, 2005 12:37 am
Location: Netherlands
Contact:

Post by Timendus »

Code: Select all

<table width="100%">
   <tr>
      <td width="200">
         Cell one
      </td>
   </tr><tr>
      <td width="*">  (or don't define it)
         Cell two
      </td>
   </tr>
</table>
You need to make the parent element of this table the full screen width too of course. And if that doesn't work (it's not according to the official standards), use CSS to define the table as 100% width.
http://clap.timendus.com/ - The Calculator Link Alternative Protocol
http://api.timendus.com/ - Make your life easier, leave the coding to the API
http://vera.timendus.com/ - The calc lover's OS
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Post by benryves »

http://benryves.com/bin/brass/index2.htm <- sadly not :| (Compare to IE/Opera)
User avatar
Timendus
Calc King
Posts: 1729
Joined: Sun 23 Jan, 2005 12:37 am
Location: Netherlands
Contact:

Post by Timendus »

Remove "display: block;" from #banner in style.css and it's fixed :)
http://clap.timendus.com/ - The Calculator Link Alternative Protocol
http://api.timendus.com/ - Make your life easier, leave the coding to the API
http://vera.timendus.com/ - The calc lover's OS
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Post by benryves »

Important: 1.0.4.2 fixes some rather evil bugs, mainly relating to variable sizes being incorrectly calculated (and so having variables that overlap eachother).
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Post by benryves »

http://benryves.com/bin/brass/maxim/ - download Brass.exe if you are using an existing version (numbered 1.0.4.3).

There was a fairly substantial list of weird bugs that have been identified through the help of Maxim of SMS Power!, which I am hoping to resolve.

Some substantial differences include:
  • String parsing bugs fixed in a lot of places.
  • C-style /* */ multiline comments.
  • Expression-parsing bugs fixed.
  • No difference between '' and "" (ld hl,"hi" is possible!)
  • .org works inside .relocated blocks
There are still some bugs - .align doesn't work inside .relocated blocks, and using operators inside string constants (such as "*") tends to confuse matters. These are known and will be addressed.
Post Reply