It lives..!
Wednesday, 25th October 2006
Thanks for the support, MrEvil, and thanks for noticing my rather dead tutorials section, linkofazeroth. ![]()
Sadly, I've been horribly busy recently - and so very little progress on any project. However, Brass 2 is starting to come together...

Can you guess which device the code is for?
Well, it'll never be an IOTD, but it's something. With the syntax fixed, it does actually work (and outputs a valid binary). I've been trying to work out the syntax used (with valuable input from CoBB over at MaxCoderz). Currently it operates by loading the entire document, trying to work out what each "command" is, before running it and executing the various commands. This has one big problem I can see - macros won't work, as they need to operate on the tokens before they're executed. This is fine, but to declare a macro you'd need to use, for example, a .define directive - which doesn't get executed until long after the source has been loaded and broken into tokens, expressions and commands.
Lack of macros and a horribly incomplete Z80 assembler plugin mean that so far I've been unable to test alongside old calculator Z80 source.
Latenite and Brass 2
Wednesday, 11th October 2006
Both Latenite and Brass are getting a significant upgrade - and both are being written from scratch.
Both will sport a plugin-based architecture. This is most obvious with Brass - where pretty much everything - be it an assembler plugin or output plugin - can be extended by writing your own custom plugins. All Brass does is parse the basic syntax and pass it to the various plugins to work out what to do with it!
Latenite will load Brass and use it to provide feedback - such as error reporting and syntax highlighting - directly to the user.
General discussion is handled here; for what I mean with regards to Brass plugins, there's this post.
The basic idea is that you can plug in your own assembler and use it alongside Brass and Latenite.
Internal PS/2 Port
Friday, 6th October 2006
What's that in the bottom left hand corner?
Kerm Martian has added a PS/2 port to his calculator (click the picture for better pictures and the original thread). He has been developing a shell, entitled DoorsCS (click for website) which sports an impressive set of GUI controls - hence the mouse!
Emerson Beta 2
Friday, 22nd September 2006
Sorry about the lack of updates, but I have been incredibly busy with work related programming.
One small project I've had a chance to update is Emerson - my keyboard and mouse library for the TI-83 series calculator.
I know, I can't type layout.
Download the library (and demo) here.
Stuff and nonsense
Tuesday, 22nd August 2006
Brass
Important: all versions ≤ 1.0.4.5 have a major bug with ZIDX instructions (eg rr (ix+1)) meaning that they are not output correctly. Please upgrade to 1.0.4.6 as soon as possible.
Other stuff
I haven't had much of a chance to do anything especially exciting of late. I found my PICAXE chips and also found out the reason that one of them never seemed to work was that I was using an old version of the programming software and the chip was an 18X, not a regular 18 (so lots of extra space - can only be a good thing). I'm not sure what to do with them, though. I had thought of using one of the PICAXE-08Ms as a super-cheap "greylink" replacement (cable for TI calculators that deals with the TI byte transfer protocol at one end and RS232 serial at the other - unlike the blacklink that implements the TI byte transfer protocol in software), but I can't read serial data in and output it fast enough and just end up dropping bytes.
Ideas on the back of a postcard, please.
I've been trying to help someone get started with FMOD Ex - they're using VB.NET, and FMOD Ex is only supplied with a C♯ wrapper. No matter, it gave me an opportunity to experiment with class libraries. It was a bit of an anticlimax... just create a new 'class library' project, add the C♯ wrapper files, hit build then add the output DLL as a reference to the VB.NET project. Couldn't be easier.
Just use the System.Runtime.Interop.Marshal class to dump data around rather than the unsafe pointers from the examples and it works like a champ.


