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
King Harold
Calc King
Posts: 1513
Joined: Sat 05 Aug, 2006 7:22 am

Post by King Harold »

well i didnt see a hex file in the bin, i didnt look in too many other places but it should be in /Projects/[%projectname%]/bin right? only the 8xk file ends up there..
(using .binarymode ti8xapp )
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Post by benryves »

Depends on how you set up the build script (.cmd). If you haven't modified them, it's probably trying to sign an .8xp...
King Harold
Calc King
Posts: 1513
Joined: Sat 05 Aug, 2006 7:22 am

Post by King Harold »

well i set the extension to hex if that's what you mean..

edit: So how do I make it work then? It makes an app that works on PindurTI but my real calc rejects it because it doesnt have a valid signature.

edit2: nevermind, it all works now, you can't guess how stupid I were..
User avatar
Timendus
Calc King
Posts: 1729
Joined: Sun 23 Jan, 2005 12:37 am
Location: Netherlands
Contact:

Post by Timendus »

I'm not sure if this has been reported yet, but Brass seems to run just fine under Linux with Mono. Took me a minute to remember I had to use the 2.0 libraries and not the 1.0 ones, but after that it runs like a charm. Which is nice because now I can code on my laptop too 8) if I ever have time in the weekends...

Latenite however gives a nice error:

Code: Select all

** (./Latenite.exe:10203): WARNING **: Missing member set_DoubleBuffered in type Control, assembly /usr/lib/mono/gac/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for Latenite.Program ---> System.MissingMethodException: Method not found: 'System.Windows.Forms.Control.set_DoubleBuffered'.
in <0x00000> <unknown method>
in (wrapper remoting-invoke-with-check) FlickerFreeForm:.ctor ()
in <0x00084> Latenite.Program:.cctor ()--- End of inner exception stack trace ---
On to trying to get PTI running... :)
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
kv83
Maxcoderz Staff
Posts: 2735
Joined: Wed 15 Dec, 2004 7:26 pm
Location: The Hague, Netherlands
Contact:

Post by kv83 »

We are also developing a complete Windows.Forms implementation.
With other words: someday even LateNite might work on Linux
Image
User avatar
Timendus
Calc King
Posts: 1729
Joined: Sun 23 Jan, 2005 12:37 am
Location: Netherlands
Contact:

Post by Timendus »

Hmm... Brass runs, it outputs sane information and errors to the command line, but the output file is two bytes big and only contains "#"... Am I running it incorrectly? Am I missing something?

$ ./Brass.exe test.asm test.83p
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
CoBB
MCF Legend
Posts: 1601
Joined: Mon 20 Dec, 2004 8:45 am
Location: Budapest, Absurdistan
Contact:

Post by CoBB »

Timendus wrote:On to trying to get PTI running... :)
You can always try using the Linux build, perhaps renamed to .exe. ;) It supports the scripting mode after all.
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 »

Timendus wrote:I'm not sure if this has been reported yet, but Brass seems to run just fine under Linux with Mono.
http://kvince83.tengun.net/maxboard/vie ... 9304#49304

He went and fixed that, and it at least ran without errors then. I never tried assembling something with it, though.
ImageImage
Image
User avatar
Timendus
Calc King
Posts: 1729
Joined: Sun 23 Jan, 2005 12:37 am
Location: Netherlands
Contact:

Post by Timendus »

CoBB wrote:
Timendus wrote:On to trying to get PTI running... :)
You can always try using the Linux build, perhaps renamed to .exe. ;) It supports the scripting mode after all.
The windows version works perfectly with Wine. The Linux version only supports the scripted mode..? Shouldn't this ouput 96*64 bytes to the console?

Code: Select all

send-file TI-83.rom
OK
activate-slot 0
OK
run 5000
OK
draw-screen-bw
OK
11
I'm not getting anything... But then again I guess I'm not supposed to interface with it manually on the console :) Would be nice if someone would write a graphical front-end for it for Linux. I'd give it a try if I had ever done such a thing before :)

@Andy: I'm sorry, I guess I hadn't seen that :) It does indeed run, but it writes only one "#" to the output file, so I guess there's still some error in it. Maybe Ben can add an option to output the file output to the command line when it compiles properly, so we can just pipe it in a file..? :P
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
Timendus
Calc King
Posts: 1729
Joined: Sun 23 Jan, 2005 12:37 am
Location: Netherlands
Contact:

Post by Timendus »

Ah, I think I found the problem :oops:

Code: Select all

.binarymode TI83
.variablename "TEST"
It gives a nice crash though if you try to include a file that is in DOS format :) And now it doesn't seem to include my headers at all anymore... but seeing that it was my screwup last time I guess I'll keep trying :)

Edit: It still doesn't compile those headers, so I dumped them and adapted the Latenite headers to work with my script. Runs fine now. See Programming Help forum for a download.
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 »

Glad you got it working :)

System.Windows.Forms isn't the issue with Latenite; it uses a lot of P/Invoke to the Win32 API to shoehorn the text hightlighting functionality into the RichTextBox.

Anyway, I hope this doens't break Linux support (it shouldn't):

Brass 1.0.4.8 - ASCII mapping now works once more.
User avatar
Timendus
Calc King
Posts: 1729
Joined: Sun 23 Jan, 2005 12:37 am
Location: Netherlands
Contact:

Post by Timendus »

So if you'd release a version without syntax highlighting (:cry:) we should be able to use that under Linux without any trouble?

I'll test the new Brass version when I boot my laptop again... hopefully some time this week. Too much to do... :(
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
King Harold
Calc King
Posts: 1513
Joined: Sat 05 Aug, 2006 7:22 am

Post by King Harold »

I tested the new Brass a bit, I saw no bugs so far, although it still doesn't want to make a listfile (which used to be quite neat, 1.0.4.6 was the last version which made it)
Anyway, I had hoped for the syntax highlighing trick, does this version allready have it but hidden? (ie: Latenite doesnt use it yet so it gets lost)
Or is that going to be version 2, the one without TASM compatibility?
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Post by benryves »

Timendus wrote:So if you'd release a version without syntax highlighting (:cry:) we should be able to use that under Linux without any trouble?
Probably not even then, as it's very strongly tied to System.Windows.Forms (not part of the CLI spec, as far as I'm aware, so the Mono bods have to work it out themselves rather than work it out from the reference).

The bug was this:
  • Trim first/last characters on string (remove the quotes).
  • Check if it starts with ", if so apply ASCII-mapping.
...which obviously won't work as it strips off the quotes beforehand, so it can't tell if it's a 'string' or a "string". It shouldn't have broken anything under Mono.

Latenite 2 will hopefully use no Win32 P/Invoke, seeing as the text editor is written in 100% .NET-wrapped GDI+.

Speaking of "things with a 2", developing Latenite 2 and Brass 2 at the same time was silly (as Brass 2 kept having the basic syntax parsing changed, meaning that Latenite 2 had to also keep getting updated). I'll probably get Brass working sensibly, then move onto the Latenite 2 side of things.

That said, Brass 2 will now actually assemble some primitive code. By primitive, that's anything without labels and without expressions. I wish I had a decent amount of time to work on it :(

The command-line interface is rather cumbersome; as opposed to this:

Code: Select all

X:\>Brass.exe source.asm output.asm
...you now have:

Code: Select all

X:\>Brass.exe -Plugin asm_z80.dll -Plugin out_ti.dll -Assembler Z80 -Output TI8X -Source source.asm -Destination source.8xp
(A plugin assembly (.dll, .exe, .so, ...) can contain multiple plugins, hence the need to also specify the identifier of the assembler and output plugins).

I'd been thinking of a simple INI-file solution that could be used to store profiles. For example, you could have TI.ini:

Code: Select all

[All]
Plugin = asm_z80.dll
Plugin = out_ti.dll

[TI8X]
Output = TI8X
Destination = $(Source).8xp

[TI83]
Output = TI83
Destination = $(Source).83p

[TI82]
Output = TI82
Destination = $(Source).82p
Anything in the [All] section is applied, the other options are added as requested after a 'dot' - for example:

Code: Select all

X:\>Brass.exe -Profile TI.TI8X -Source source.asm
For those using Latenite, life will be easier - tick the boxes for which plugin assemblies you wish to load, and pick the assembler or output plugin from an automatically populated dropdown box.

What really needs doing at the moment is sorting out the Brass 2 syntax parser. At the atomic level you have tokens ("xor" or "+"), one level up these can be grouped into expressions (if possible - so "ld" or {"1", "+", "1"}), one level up from that they can be grouped into a command ({".include", "file.asm"} or {"ld", "a", ",", {"1", "+", "1"}}) - yet another level up and you have a source line (made up of multiple commands) and finally a source file. By working this out as I went along it's a bit of a mess and the grouping is far from perfect, so it rather needs addressing.

Seeing as these various levels of broken-down-syntax need to be passed to third-party programs (custom plugins, or even Latenite itself) I can't get away with the kludgy mess that's in the original Brass (see: how awfully slow it is).
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Post by benryves »

King Harold wrote:Anyway, I had hoped for the syntax highlighing trick, does this version allready have it but hidden?
What syntax highlighting trick? Brass 2 will expose methods to let programmers (well, just me, probably) work out what each character of the source corresponds to. Brass 1 will never provide that functionality.
Post Reply