[Coco] a not very important drivewire question
William Astle
lost at l-w.ca
Thu Jul 17 21:37:59 EDT 2014
I'm going to take Kip's points one by one for a detailed response.
EOF character to terminate printing:
Using an "EOF" character is generally not a good idea, especially since
nothing on the CoCo has the notion of an EOF character in the first
place. That would be introducing new semantics what nothing would be
expecting. Further, no existing software would know about it which would
be problematic. Better would be a button in the Drivewire GUI or a
simple timeout that dumps the buffer. That has the highest compatibility
with everything else and is probably the easiest to implement.
16K HDB-DOS ROM:
This is *technically* possible. It runs into an extreme hurdle with the
Coco3, however, because there is only 8K between the Color Basic ROM
area and the Coco3 enhancements. While it is trivial to use the
additional 8K on a Coco1/2 system, it is not on a Coco3. It would
require having different ROMs for the Coco1/2 and Coco3 because the
workarounds to make it work on a Coco3 are not compatible with a Coco1/2
system.
All that said, I agree it would be nice if it did work. It would allow
having multiple hardware drivers at once, among other things.
DECB and extra memory on the Coco3:
This is just not practical. The entire ROM is written with the
assumption of 16 bit pointers. It is just not possible to rework it to
work with a larger memory map than it already uses without completely
rewriting a nontrivial amount of it.
Paging schemes could work for some extensions. However, this, too, could
require some very significant rewrites to a massive amount of code in
the existing ROMs. If you don't care about binary compatibility of the
resulting ROM, then it is at least theoretically possible to have DECB
use the memory on the Coco3 more effectively, for buffers and the like
at the very least. It might also be possible to relocate the variable
table or split string space, the variable table, program space, and the
call stack into different memory chunks, removing the need for CLEARxxx
to get enough string space. But this starts getting complicated fast.
Combining ROMs:
Combining the ROMs (Color Basic, Extended Basic, HDB-DOS, and Super
Extended Basic) into a single 32K ROM is definitely possible. Leaving
off the SECB part for a Coco1/2 system makes it fairly trivial. Doing it
for the Coco3 requires redoing a fair chunk of the system initialization
code because the ROM space used by it is in the C000...DFFF range
(including the fancy picture, which would have to be eliminated).
Fortunately, there is wasted space at the top of the SECB ROM area that
can be co-opted for this initialization code. I have actually
successfully done this with a replacement ROM using Mess.
Removing redundant routines is certainly possible when doing this.
However, you have to be *very* careful what you do here. Far too many
things people use have detailed knowledge of various ROM routine
locations. Changing any of that will break a great many things. There
are some largish areas that could be regained, but whether they are
large enough to be truly useful depends on the specific enhancements.
If you were happy to throw away binary compatibility altogether (which
you would have to with your paging idea), there is a fair bit more space
that can be freed by virtue of having unified routines. Additionally,
there is a very significant amount of space that can be saved in the
SECB ROM area by simply doing basic optimization on the code. Without
trying, I think I was able to compact a few hundred bytes out of it.
When you eliminate the extra contortions with RAM hooks, you save a fair
chunk more.
The upside of doing it this way is that there is a large amount of space
that can be reclaimed and it should be plenty to implement multiple
device drivers for disks and so on.
The biggest issue with replacing the internal ROM on the Coco3 is that
it is not socketed.
On 14-07-17 06:06 PM, computerdoc at sc.rr.com wrote:
> Hi Guys!
> How about using the "End of File" character in the ASCII code which is <ctrl-z>, $1A, or 26 decimal to signal the end of all print outs from HDB-DOS ECB, OS-9, NitrOS-9 or anything else for that matter being sent from the Cocos to Drivewire to be printed. It seems like this character has already been defined for us ever since the ASCII Code was created. We just need to implement it, then Drivewire can be given the capability to send all text printouts from the Cocos straight to the PC's default printer instead of a text file.
> Printing Graphics of course is a horse of another color. May some type of "End of File" sequence of characters has already been created in one or more of the graphic file formats that we can use for this purpose - something that would never be used in the graphic format itself for picture information.
> I also feel it really is time to consider a 16KB HDB-DOS. We who have used the 8KB HDB-DOS have enjoyed many new features and additions it has provided to DECB. I also have enjoyed using Juan Castro's 16KB HDBDOS for the Coco 1 & 2 installed in my Eprom PCB for a short while now. Since all the Cocos have 16KB available to use for all versions of Disk Basic including HDB-DOS, then let's use some or all of the 16KB for more cool features.
> How about giving HDB-DOS some type for mechanism for initializing multiple virtual and real Hard Disk drivers for several different types of Hard Disk Controllers all functioning simultaneously. The presence of both virtual and real Hard Disks, Compact Flash and SanDisk Memory cards can be included in the default initialization startup code for HDB-DOS ECB. Of course some standard use guidelines that the initialization code expects to see may have to be officially agreed upon.
> I'm sure other people here have come up with other cool ideas to bring our Cocos further into the 21st century as well that could also be included. It seems to me that there are other people who would like to see more features put into HDB-DOS and maybe current features can have the improvements people keep taking about.
> How about giving HDB-DOS ECB the capability to load object code overlays into paged ram extending BASIC further into directions that were originally impossible due to the 64KB memory addressing limit of the 6809/6309. Since paged memory is implemented in the Coco 3, let's give BASIC the capability to load object modules into an area of paged memory giving the illusion that the 6809 microprocessor and therefore HDB-DOS ECB both have more ram then they were originally designed to use. Bill Pierce has been doing an excellent job using paged ram with his Mshell program for NitrOS-9. Let's bring the paged memory concept to the attention of HDB-DOS ECB as well.
> It's high time that many of the traditional limitations of DECB and HDB-DOS be at least soften a bit or even eliminated altogether if possible.
> Another feature could be the automatic detection of any extra ram the Coco 3 has available and initialize HDB-DOS ECB to automatically use it. Maybe even give the capability for the user to set or change how much memory HDB-DOS ECB is allowed to use freeing up the rest of the ram for the user's purposes.
> Heck, since Coco 3s (and some Coco 2s for that matter) have only one rom/eprom for ECB anyway, we could upgrade ECB itself and remove all unnecessary routines since both Extended Basic and Color Basic live together in one chip anyway. This would free up a little more precious eprom space for enhancements to correct anything that still needs attention.
> We have many 6x09 assembly language coders in the Color Computer Community with extremely high capabilities and understanding of both DECB and HDB-DOS. I'm sure a coordinated effort can be made in these directions. Let's officially create an upgrade to HDB-DOS that we all can use and be proud of so we don't end up with a zillion potentially incompatible HDB-DOS images/eproms floating around. We need a 21st century Color Computer! I'd like to see this put into place for all of us. Any thoughts or other ideas in these and other directions?
>
> Kip Koon
> computerdoc at sc.rr.com
> http://www.cocopedia.com/wiki/index.php/Kip_Koon
> http://computerpcdoc.com/
>
>
> -----Original Message-----
> From: Coco [mailto:coco-bounces at maltedmedia.com] On Behalf Of Bill Pierce via Coco
> Sent: Thursday, July 17, 2014 6:29 PM
> To: coco at maltedmedia.com
> Subject: Re: [Coco] a not very important drivewire question
>
>
> The "close character" method would probably be the best, then the flush code could be sent when say a CHR$(255) is seen. This would make graphics dumps impossible, but, can dw4 even handle graphics dumps with it's print feature?
> The user would just end each printing job with a CHR$(255) (or whatever).
>
>
> Bill Pierce
> "Today is a good day... I woke up" - Ritchie Havens
>
>
> My Music from the Tandy/Radio Shack Color Computer 2 & 3 https://sites.google.com/site/dabarnstudio/
> Co-Webmaster of The TRS-80 Color Computer Archive http://www.colorcomputerarchive.com/
> Co-Contributor, Co-Editor for CocoPedia
> http://www.cocopedia.com/wiki/index.php/Main_Page
> E-Mail: ooogalapasooo at aol.com
>
>
>
>
> -----Original Message-----
> From: Aaron Wolfe <aawolfe at gmail.com>
> To: CoCoList for Color Computer Enthusiasts <coco at maltedmedia.com>
> Sent: Thu, Jul 17, 2014 6:06 pm
> Subject: Re: [Coco] a not very important drivewire question
>
>> Overall, it's fairly trivial to hook the #-2 handler and redirect it
> through a routine supplied by drivewire. The flush handling bit is the most complex part. It would be fairly easy to trigger the flush based on character count or a specific character being sent. A time triggered flush would require an IRQ handler of some sort, but also not horribly difficult.
> The real problem is whether there is room in the ROM to actually do it.
>
> I wonder if this sort of thing could be patched in ram? And if so, would it make sense to have optional features such as #-2 printer support kept as patches rather than trying to squeeze too much into the 8k rom? It seems like the size limit is a constant challenge.
>
> For flushing, there is also the option to have the user push a button or something in the GUI rather than trying to implement on the coco side. I could make the buffer more accessible too. Or the server could assume that X seconds without new print data means flush anything in the buffer, that kind of thing. I prefer to always implement things on the coco side but when ROM space is precious maybe its better on the server end.
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco
>
>
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco
>
>
More information about the Coco
mailing list