My project for this month was to adapt the Dunfield Micro-C compiler for building code to run on the CoCo. Initially I just wanted to make it relatively simple to use the tool for building simple CoCo programs. After some initial victories, I went further by supporting a variety of ways for loading and starting such programs. I also now support several options for passing data between C programs and the built-in Color BASIC on the CoCo. To prove the point, I implemented a couple of non-trivial CoCo programs in C -- an animated clock display and a solver for Sudoku puzzles. Although I have more in mind to do on this project, I am extremely happy with the results as they stand right now!
The CoCo community has a bit of a schism between users of OS-9 (or its descendant Nitros-9) and those that mostly stick to the Disk Extended Color BASIC (DECB) environment. For sure, most CoCoNuts have a foot in each camp. Yet, most prefer one or the other. Each option has its own merits, but those that prefer the DECB environment usually cite both simplicity and the direct control of the CoCo's hardware as important strengths.
Both camps have both BASIC (including BASIC09) programmers and assembly language programmers. The OS-9ers have also enjoyed a C compiler for decades, but the DECB-based C compilers are mostly the stuff of barely remembered advertisements in The Rainbow. Now, the DECB crowd has at least the beginnings of another option!
I have really enjoyed using C to program for the DECB environment. So, I am planning to continue this project in the hopes of enabling more CoCoNuts to have the same opportunity.
As I have pursued this project, I have generated a list of more TODO items than I have had a chance to pursue. These include a few more startup options, code libraries, hardware drivers, and the like. I expect to hit many of these over the next few weeks or months. If nothing else, then I should have something together by next year's CoCoFEST!
Normally I would like to have more code to release at this point. Unfortunately, I haven't had a chance to pull a release package together. Since this project depends on the Dunfield compiler distribution, I want to make sure that I can release something as clean as possible to make the distinction clear between my code and the Micro-C package. Also, I want to put together at least some minimal documentation on how to put everything together in order to start building CoCo programs!
So, for now you will have to make do with the bits and pieces that I have released along the way. I hope that whets your appetite for more. If you want to collaborate on advancing this project, then feel free to contact me and let me know so. And, in any case, be sure to stay tuned... :-)