Brass 3.0.0.0 Beta 13
- benryves
- Maxcoderz Staff
- Posts: 3089
- Joined: Thu 16 Dec, 2004 10:06 pm
- Location: Croydon, England
- Contact:
Brass 3.0.0.0 Beta 13
Brass 3 Website.
I've released a beta for Brass 3. I'm sure it is full of bugs and incomplete features, but it mostly works and can output working binaries.
I strongly recommend you use the Windows installer (it doesn't do anything evil, honest); failing that there's a zip archive of the files included in the installer.
Source code and information for developers wishing to extend the assembler will be forthcoming.
Once installed, you can test Brass with this crude demo. It relies on environment variables being set (Brass.Include) so you might need to kill all Explorer instances first (or just log out then in again). EDIT: Do not use this demo, there's a better one in Beta 2.
Click "Build" on the toolbar (or right-click, "Build" in previous Windows versions).
If there are any messages, warnings, or errors the following dialog will appear:
There are some more tools to write (graphical project editor) as well as compiler features (importing project templates and multiple build configurations) but I hope this is a good start.
I've released a beta for Brass 3. I'm sure it is full of bugs and incomplete features, but it mostly works and can output working binaries.
I strongly recommend you use the Windows installer (it doesn't do anything evil, honest); failing that there's a zip archive of the files included in the installer.
Source code and information for developers wishing to extend the assembler will be forthcoming.
Once installed, you can test Brass with this crude demo. It relies on environment variables being set (Brass.Include) so you might need to kill all Explorer instances first (or just log out then in again). EDIT: Do not use this demo, there's a better one in Beta 2.
Click "Build" on the toolbar (or right-click, "Build" in previous Windows versions).
If there are any messages, warnings, or errors the following dialog will appear:
There are some more tools to write (graphical project editor) as well as compiler features (importing project templates and multiple build configurations) but I hope this is a good start.
Last edited by benryves on Thu 07 Feb, 2008 11:01 am, edited 12 times in total.
OMG, Ben is going crazy with this one
Explorer integration, oh my
How's the Nautilus/Konquerer integration coming along?
Explorer integration, oh my
How's the Nautilus/Konquerer integration coming along?
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
http://api.timendus.com/ - Make your life easier, leave the coding to the API
http://vera.timendus.com/ - The calc lover's OS
- benryves
- Maxcoderz Staff
- Posts: 3089
- Joined: Thu 16 Dec, 2004 10:06 pm
- Location: Croydon, England
- Contact:
It's just registering a file association, but Vista displays these in a rather nicer fashion than older Windows ever did (ie, a nifty button with a dropdown arrow).Timendus wrote:OMG, Ben is going crazy with this one
Explorer integration, oh my
Hm, you get a zip file. I don't know if any of the graphical tools (the help viewer, the GUI builder) even work at all under Linux as they both use WinForms and IE.How's the Nautilus/Konquerer integration coming along?
It shouldn't be too much trouble to get something equally nifty working under Nautilus and Konquerer now I come to think of it... They both know file associations just as well, and I believe one of them also allows you to add arbitrary scripts to the context menu. All you'd need to do it remake the feedback window with GTK or something. But then again, how often do you want to compile something that way..?
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
http://api.timendus.com/ - Make your life easier, leave the coding to the API
http://vera.timendus.com/ - The calc lover's OS
- benryves
- Maxcoderz Staff
- Posts: 3089
- Joined: Thu 16 Dec, 2004 10:06 pm
- Location: Croydon, England
- Contact:
Probably. It's hassle enough creating a zip file, to be honest, and I don't really want to start trying to support installers for environments I am ignorant of.
I don't know what the best solution for Linux users would be; some sort of shell script that automates associations?
Anyhow; I've released beta 2 that makes a few improvements, including better build support. I'll try to add support for other shells as soon as possible, but currently 83 (no shell), 83 Ion, 83 Venus, 83+ (no shell), 83+ Ion and 83+ MirageOS are supported.
I don't know what the best solution for Linux users would be; some sort of shell script that automates associations?
Anyhow; I've released beta 2 that makes a few improvements, including better build support. I'll try to add support for other shells as soon as possible, but currently 83 (no shell), 83 Ion, 83 Venus, 83+ (no shell), 83+ Ion and 83+ MirageOS are supported.
- driesguldolf
- Extreme Poster
- Posts: 395
- Joined: Thu 17 May, 2007 4:49 pm
- Location: $4080
- Contact:
- benryves
- Maxcoderz Staff
- Posts: 3089
- Joined: Thu 16 Dec, 2004 10:06 pm
- Location: Croydon, England
- Contact:
There is no manual at the moment, sorry, you'll pretty much have to look at the sample code (and plugin examples) or just ask me here.
Both packages (Windows installer and zip package) come with a help viewer; if you prefer HTML you can export HTML files directly from it (that's how I created the online version).
If the sample project complains about missing files, close all Explorer instances then try again; if that still doesn't work log out then in again (or reboot). This only needs to be done the first time you install the software!
The sample code is just this assembly source:
The project file is just this (I would like to make a GUI editor for these):
No header/include noise, no macro defines for ROM calls (bcall is a function plugin) and templates are stored in a simple, standardised location that hopefully makes upgrading them easier.
I know some will complain that this hides implementation details, but I'm not too fussed about that myself.
One thing I haven't mentioned (or really decided) is how to handle shell/OS differences. Here's a rough idea of what you can currently do:
(I obviously need to provide better functions to establish which plugins are in use rather than that strlower() hack).
Both packages (Windows installer and zip package) come with a help viewer; if you prefer HTML you can export HTML files directly from it (that's how I created the online version).
If the sample project complains about missing files, close all Explorer instances then try again; if that still doesn't work log out then in again (or reboot). This only needs to be done the first time you install the software!
The sample code is just this assembly source:
Code: Select all
; Clear the screen.
bcall(_clrLcdFull)
; Move cursor to (0,0).
xor a
ld (curCol),a
ld (curRow),a
; Display the message.
ld hl,Message
bcall(_putS)
bcall(_newLine)
; Poll the keyboard until we receive a key.
-
bcall(_getCSC)
or a
jr z,-
; Exit.
ret
; Message to be displayed.
Message .byte "Brass 3 Demo", 0
Code: Select all
<?xml version="1.0" encoding="utf-8" ?>
<brassproject version="3">
<template source="TI/Program.brassproj" />
<input source="Demo.asm">
<label name="Program.Description" type="string" value="Demo Project" />
<label name="Program.Name" type="string" value="DEMOPROJ" />
</input>
</brassproject>
I know some will complain that this hides implementation details, but I'm not too fussed about that myself.
One thing I haven't mentioned (or really decided) is how to handle shell/OS differences. Here's a rough idea of what you can currently do:
Code: Select all
#if !defined(ionFastCopy)
ionFastCopy:
.if strlower(outputwriter()) == "ti8x"
bcall(_grBufCpy)
.else
; ... do something else on the 83 ...
.endif
ret
#endif
- driesguldolf
- Extreme Poster
- Posts: 395
- Joined: Thu 17 May, 2007 4:49 pm
- Location: $4080
- Contact:
Ah, didn't saw the help.exe...
Ok, the demo doesn't want to work (maybe because you said "EDIT: Do not use this demo, there's a better one in Beta 2."?)
Neither am I seeing any explorer integration? I use Windows XP SP2
EDIT: ah, of course:
Ok, the demo doesn't want to work (maybe because you said "EDIT: Do not use this demo, there's a better one in Beta 2."?)
Ok, what are the .brassproj xml files for? Do I need one?Brass 3 builder wrote:Invalid data before the the header.
.ionheader "Brass Demo"
Source: Demo.asm, line 3.
Neither am I seeing any explorer integration? I use Windows XP SP2
EDIT: ah, of course:
Aaaw, these questions sound dumb...benryves wrote:Click "Build" on the toolbar (or right-click, "Build" in previous Windows versions).
- benryves
- Maxcoderz Staff
- Posts: 3089
- Joined: Thu 16 Dec, 2004 10:06 pm
- Location: Croydon, England
- Contact:
I changed the way the plugin worked slightly (it used to insert the AsmPrgm header for you, it doesn't anymore).driesguldolf wrote:Brass 3 builder wrote:Invalid data before the the header.
.ionheader "Brass Demo"
Source: Demo.asm, line 3.
Brass works entirely with project files, you can't just run it with command-line arguments. A project file tells Brass which plugins to load and use, defines multiple build configurations or points at other project files to use as base templates. They can also create labels as well as insert headers and footers for you.Ok, what are the .brassproj xml files for? Do I need one?
Take a look at "C:\Program Files\Brass\Templates\TI\Program.brassproj" for an example of a fairly complete one.
You can also get away with double-clicking the project file.Neither am I seeing any explorer integration? I use Windows XP SP2
I'm sure there are loads of bugs, including sample code in the plugin documentation that no longer works due to a bugfix or changed feature made yonks ago! A buggy Brass in the wild is better than a buggy Brass that only exists on my hard disk drive, really.
A bjump function needs to be added, and I'll probably add ".bcall nz,_label" style directives to complement "bcallnz(_label)". Wider shell support is also needed, as is TI-82 stuff. Apps need supporting too... Lots of work for me to get busy on.
- driesguldolf
- Extreme Poster
- Posts: 395
- Joined: Thu 17 May, 2007 4:49 pm
- Location: $4080
- Contact:
- benryves
- Maxcoderz Staff
- Posts: 3089
- Joined: Thu 16 Dec, 2004 10:06 pm
- Location: Croydon, England
- Contact:
Aye, I use Vista. I should probably install an older copy of Windows in a VM for testing purposes, really. A few days ago Timendus tried a cruder beta on Linux and said it worked there too, hopefully I haven't broken anything since.
3.0.0.0 Beta 3 wrote:New Texas Instruments functions and directives for ROM calls and error handlers.
The Help Viewer's code to convert newlines to HTML paragraphs has been fixed, and it shows the DisplayName for plugins rather than the default name (which appears to be randomly selected).
Projects no longer raise warnings if no string encoder is set.
I've added a Sega Master System / Game Gear 32KB ROM template and sample program. The SDSC tag directive has been fixed to work with strings passed in labels.
The .echochar directive has been removed.
The project file format and GUI builder have been extended to support display name attributes on build configurations (you get "Sega Master System" instead of "SMS" and "TI-83 Plus, MirageOS" instead of "TI8X.MirageOS").
- benryves
- Maxcoderz Staff
- Posts: 3089
- Joined: Thu 16 Dec, 2004 10:06 pm
- Location: Croydon, England
- Contact:
3.0.0.0 Beta 4 wrote:Major bug fixed where directives calling an internal method to leave temporary modules wouldn't actually leave the module, resulting in bizarre label name resolution bugs.
Internal functionality to easily retrieve tokens between parentheses added, resulting in easier and more reliable plugin development - and fixing bugs in .define in the process.
#macro/#endmacro added to complement #function/#endfunction. Performs exactly the same job, except that arguments are passed as macro replacements by default rather than by value.
Ability to break code into sections that can be linked together in a particular order via the .section/.endsection and .incsection directives (see the bug note in Known Issues).
Added basic DoorsCS 6 support with a header writer and template.
Improved flexibility in the Help Viewer, including support for "documentation-only" plugins (and hiding plugins that aren't end-user accessible).
- driesguldolf
- Extreme Poster
- Posts: 395
- Joined: Thu 17 May, 2007 4:49 pm
- Location: $4080
- Contact:
W00t, finally have some time to test
Is it normal that the same error is shown twice?
It doubles every error I've thrown at it
If you could remove the 'red arrowed' enters or just all of them (I'm sure you'll find a nice layout) I'd be very happy
Also, I cannot use Ctrl-c to copy the error messages... Though I was able to drag&drop them, neither can you right-click or Ctrl-a.
Idea: would it be possible to leave out the brackets in functions/macros? like:
Is it normal that the same error is shown twice?
It doubles every error I've thrown at it
Now that is crypticBrass 3 Builder wrote: Invalid directive '.rst'.
.rst 28h
Source: Demo.asm, line 12.
Invalid directive '.rst'.
.rst 28h
Source: Demo.asm, line 12
Code: Select all
ld exit, duke
Also, brass builder gives a lot of whitespace, and if you have a lot of errors things get very large (9 errors, all but the .include were doubled):Brass 3 Builder wrote:Value does not fall within the expected range.
Source: Demo.asm, line 20.
If you could remove the 'red arrowed' enters or just all of them (I'm sure you'll find a nice layout) I'd be very happy
Also, I cannot use Ctrl-c to copy the error messages... Though I was able to drag&drop them, neither can you right-click or Ctrl-a.
Idea: would it be possible to leave out the brackets in functions/macros? like:
Code: Select all
load de, hl
; instead of
load(de, hl)
- benryves
- Maxcoderz Staff
- Posts: 3089
- Joined: Thu 16 Dec, 2004 10:06 pm
- Location: Croydon, England
- Contact:
It doesn't stop if it hits any errors, and it runs through your code twice (two passes) and so yes, errors are shown twice.driesguldolf wrote:Is it normal that the same error is shown twice?
I'll stop it doing that.
You're only allowed to use the Z80 plugin if you're a qualified .NET programmer who would have easily spotted a mile off that that's the default message for an ArgumentException.Now that is crypticCode: Select all
ld exit, duke
Brass 3 Builder wrote:Value does not fall within the expected range.
Source: Demo.asm, line 20.
I kid, of course, and will update it to display something rather more meaningful.
I'll attack the stylesheet (that's a web page displayed in IE) and restore the shortcut keys.Also, brass builder gives a lot of whitespace, and if you have a lot of errors things get very large (9 errors, all but the .include were doubled)
...
Also, I cannot use Ctrl-c to copy the error messages... Though I was able to drag&drop them, neither can you right-click or Ctrl-a.
I'd thought about this, but also thought about some potential problems.Idea: would it be possible to leave out the brackets in functions/macros? like:Code: Select all
load de, hl ; instead of load(de, hl)
Code: Select all
#function something(x)
; ...
#endfunction
something = 1
.echoln something +1 ; Is that something(+1) or the label something+1?
Code: Select all
#macro b_call(label)
rst $28
eval(".dw _" + strtoken(label))
#endmacro
b_call puts ; Like in the official ti83plus.inc