[Coco] Re: OS-9 as Replacement for DECB.
Boisy G. Pitre
boisy at boisypitre.com
Thu Sep 1 14:35:24 EDT 2005
Stephen,
I have analyzed this topic thoroughly over the years, and have come
to the following conclusion: the CoCo 3, as designed, cannot easily
accommodate internal expansion except through the cartridge port,
without vastly changing or extending the hardware. The only truly
"easy" way to expand the machine is through the cartridge port.
You are talking about changing the very essence of what the CoCo 3 is
when power is applied. This is certainly an interesting topic, and
there are a lot of possibilities to be explored. For instance,
instead of a BASIC interpreter, one could have the CoCo come up into
an interpreter for another programming language, take on the
personality of a terminal, become a debugger, etc.
Having NitrOS-9 as the basis of such a personality change can be done
(I allude to the NitrOS-9 ROM Kit that Cloud-9 sells). Given that
NitrOS-9, even in the barest of configurations, will take up at least
12K, that leaves only about 20K for applications. This isn't nearly
as bad as it sounds, because a LOT can be done with 20K if you write
in assembly. If you take out IOMan, SCF and all the other stuff
below and write your own I/O routines, then you can reap enormous
space savings. The obvious advantage to using NitrOS-9 is that it
provides services for memory allocation, process creation and
scheduling, and other services.
Thinking along those lines, there are two approaches that you can take:
1. INTERNAL STORAGE SOLUTION
The ideal solution in your case would be to perform such an
enhancement without modifying the CoCo 3. Currently, the only way to
store permanent code on the CoCo 3 is through the 32K ROM.
There are several approaches in place that could bust that barrier.
A. Software solution - The use of compression would allow more data
to fit into the 32K area, but you have to weigh that against the
decompression routine itself and the space it would save. A best
case estimate is that you could get 2:1 compression and house 64K
minus the decompression routine. Time would have to be invested in
researching the appropriate compression technology to use, and weigh
time/space costs.
B. Hardware solution - What would be necessary is a small board with
flash and appropriate logic to implement a "switching register".
This 8 bit register would be mapped into an appropriate memory
location in I/O space. Ideally, one would POKE a value into this
register and select a 32K bank. With an 8 bit register providing 256
possible unique values, that means a flash the size of 32768*256, or
8MB, could be supported. There would be some hardware modifications
needed to fit this into a CoCo 3. The ROM would not necessarily need
to be removed, but one or two pins would need to be clipped, and
additional wires would need to be soldered to address and data.
Actually, it might make sense to desolder the ROM and in its place,
put this plug-in board in place. There may still be additional wires
that need to be connected to other parts of the CoCo 3 motherboard.
Also, programming the flash in-circuit would present certain
challenges that may need to be met by having additional logic and
programming steps.
2. EXTERNAL STORAGE SOLUTION
Such an approach would eliminate the need for you to open the CoCo 3
or touch it with a soldering iron. Ideally, one could have a "flash
pak" cartridge that would plug into the side of the CoCo using the
footprint of a shortie pak for minimum visual obtrusiveness. This
could work much the same as the hardware solution above, except that
a smaller memory window might be mapped into the cartridge space at
$C000 (the SuperIDE currently uses this method for its 64K flash part
-- 16K at a time can be viewed at $C000-$DFFF).
The cartridge approach makes it seamless, since the ROM inside of the
CoCo 3 is already programmed to detect the presence of a cartridge
and jump to a predefined memory location if it exists. This "hook"
would allow you to totally change the personality of the CoCo 3 into
what you want.
In effect, the external storage solution is what the SuperIDE and HDB-
DOS are about. If you want a more transparent (i.e. invisible)
solution, then going for internal storage is the way to go.
CONCLUSION
If you want to intricately change the personality of a CoCo 3 and
your application can fit in a small footprint, then yank out the 32K
ROM and write custom software that will reside in that space to do
whatever you want, or use NitrOS-9 as a basis for your environment
and write software around that. I'm not sure how successful you
would be in implementing the Disk BASIC environment running under
NitrOS-9 and put all of that in ROM with the limitations in place --
that would certainly be a challenge. However, I cannot think of a
more fun way to experiment with your CoCo.
More information about the Coco
mailing list