[Coco] Rainbow IDE update (kinda lengthy, but interesting)

Roger Taylor operator at coco3.com
Wed May 23 22:35:11 EDT 2007


As of tonight,  You probably have already heard me talking about some 
of these options... but some are working better now and there's some 
new options:

Source filenames with spaces in them are legal now.  Quotes are added 
around the filename before calling the assembler, compiler, etc. for 
that file.  This was already done for some files in some of the tools 
used by the IDE, but CCASM lacked this feature in the past, like:

cm my game.bin

This was formerly perceived as:

"my" was seen as the source code file, and "game.bin" was seen as a 
command switch/option that was not recognized.  When quotes are added 
around the file, CCASM knows that it's one option, the first option, 
which is always the source file.  In addition, the output object 
switch like -o=destination object file (which is an illegal switch 
for the same reason I mentioned), will allow quotes now and work just 
fine:  -o="my game.bin".  Some people use spaces, but when the IDE or 
CCASM previously griped or aborted out without giving the reason or a 
fix, it was confusing and I got lots of bug reports.  I hope this 
cures a lot of filename and path issues.  So far, my tests are 
working pretty good when I use spaces in pathnames.

So, to sum this up, the following is possible now with CCASM:

cm "some source code with spaces in it.asm" -o="the output object.bin"

Other tools like decb.exe, os9.exe, imgtool.exe already handle quoted 
filenames well, but CCASM couldn't do this previously because the 
language that it's written in doesn't have that feature in the 
arg.v() function which parses the command-line string.  It took me 
all these years to discover this bug!

Rainbow's new "Builder" add-in support allows any kind of source code 
processor like an assembler, compiler, linker, etc. to be added to 
the IDE by copying the builder's folder to a subfolder in Rainbow 
IDE\Builders\.  When the IDE starts up, it catalogs the Builders 
folder and adds them all to the IDE panel, along with custom object 
types, modes/switches, etc. for those builders.  In other words, each 
builder can have it's own small or large list of options that appear 
in the panel when you change between builders for any source file in 
the project.

Several "psuedo objects" are also available that appear for all 
builders.  In the left sidebar, you'll see those object types in 
addition to the normal object types for each builder.  These object 
names begin with "+" to mean that the IDE doesn't really tell the 
builder to output the object type, but rather other tools are used to 
fake a build of the object.

+COPY :  On a build, the source file outputting the +COPY object type 
is just copied into the build folder as if the assembler did it, and 
possibly with ASCII CR/LF adjustments.  This can also be used for 
writing BASIC programs that you WANT to be written onto your virtual 
disk as ASCII BASIC.  This would be good for programs written that 
will run on a CoCo, Dragon, or other CoCo clone that doesn't use the 
same BASIC program compression.

+BASIC : On a build, the source file is copied into the build folder 
as-is, THEN the disk imager used for the project knows to attempt a 
copy onto the virtual disk using its built-in ASCII-to-BASIC 
tokenizer.  Since imgtool.exe doesn't do this yet, decb.exe must be 
used for those kinds of projects.  I tested this tonight and it works 
great.  DECB.EXE uses the -t option for this feature.  I didn't use 
+COCOBASIC because we want the IDE to eventually be able to tokenize 
BASIC programs for any vintage computer OS that imgtool.exe might 
support one day.  That is, if imgtool.exe ever supports this like 
decb.exe does, you'll be able to write binary BASIC programs for 
other computers than just the CoCo or Dragon, and the IDE will do a 
psuedo build to that object type.

Assemblers (a builder TYPE) can define their own target CPUs.  Since 
TASM can assemble for many 8-bit platforms, lots of CPUs will appear 
in the panel when you select that assembler.  Some of the CoCo 
assemblers that do 6809 and 6309 will show both of those CPUs.  This 
is useful for those who want to make absolutely sure their CoCo ML 
programs don't contain any 6309 code by mistake in the final 
build.  Ofcourse, the assembler used is in control of the actual 
enforcement.  CCASM currently doesn't deny 6309 codes, so it doesn't 
matter what CPU type you select for a given source file.  I'll do 
some work with CCASM eventually for handling this issue.

Switches and Modes are separately defined for any kind of 
builder.  For instance, CCASM's .ini file defines -l for Listing On, 
-d for Debug On, -s for Symbols Output, -sa for All Symbols Output, 
etc., so those options will appear in the panel when you select 
CCASM.  CASM and MAMOU or any other builder may not show the same 
switches or even the formal names for those switches.  For instance, 
CCASM allows ROM builds of a given size like 1K, 4K, 8K, and even 
256K for huge EPROM projects.  The resulting .ROM image will be 
padded to that size.  As far as I know, CASM and MAMOU just does a 
ROM-like build but you have to force the size from within your source 
code using FCB's or another way of padding.  So, CCASM is probably 
the preferred assembler for creating ROM images with less hassle.

What if you want that ROM image to not launch and run, but instead 
get copied onto a virtual disk in the project.  No problem!  Just add 
a virtual disk to the project by clicking the + buttom in the panel, 
then select one of the disks using the drop-down listbox.  That's 
it.  When M.E.S.S. launches, the ROM will not run, and you can type 
DIR from Disk BASIC and see that it's right there on the disk.  Now 
you can write that virtual disk to a real CoCo floppy and use the ROM 
file with one of the CoCo EPROM burning programs.

*** What's the best part of all the above to keep it from being 
confusing?  Rainbow handles all of the logic as if it knows what 
you're thinking by letting you select a few options in the left 
sidebar.  The listboxes all work in harmony to do all the work for 
you and create the commands for the tools used by the IDE, whether 
it's an assembler, compilers, disk imager, etc.  The seamless 
one-click build is still the goal, even though you originally do need 
to set up each source file in the project with a few parameters.  ***

I have received some suggestions for Rainbow and CCASM and will be 
acting on these the best I can in the coming days and I hope to get 
Rainbow IDE 2.0 released before the end of June.  A beta version will 
be available first for a few weeks to some key testers.

Now, we need compilers, linkers, BASIC compilers?, and other neat 
tools I can test out.  Any ideas???



-- 
Roger Taylor





More information about the Coco mailing list