[Coco] Machine Code
Bill Pierce
ooogalapasooo at aol.com
Wed May 31 20:13:29 EDT 2017
Curtis, no, rma doesn't use extended memory. In fact I don't know of any Microware stuff that did other than graphics. Others played around with it a bit but not to much extent (there were a few).
In developing MShell, I now have a portable virtual memory system which can be used in many projects, it's just a little complicated to set up (hence why no public release on the code until I make it easier). I'm working on an asm version by optimizing the rma code generated by the C compiler (it's in C), but to be honest, there's not much optimization that can be done on the generated code except for using static variable space instead of the stack (which C does), not sure which is faster, indexing from the stack or indexing from a memory table.
The only caveat is that you must reserve 8k in program space to map in the memory blocks.
So program/data (combined) length must remain under $DE00 (64k-(8k+$200) system stack). Just keep a running index into your data. The routines take the index and calculates which block it's in then maps that block, returning a pointer to the record. It will expand and contract as data grows/shrinks returning any unused blocks back to OS9 and using up to the 2 meg limit (minus used memory of course). All done legally with no tricks. It's a genius system developed by Mike Knudsen and tweaked to hell and back.
The really cool thing is that as long as the group# is publically known (the system uses the get/put buffers), all running programs can share the data... which opens quite a few new possibilities, some of which I use in MShell in forked/chained modules :-)
Bill Pierce
"Charlie stole the handle, and the train it won't stop going, no way to slow down!" - Ian Anderson - Jethro Tull
My Music from the Tandy/Radio Shack Color Computer 2 & 3
https://sites.google.com/site/dabarnstudio/
Co-Contributor, Co-Editor for CocoPedia
http://www.cocopedia.com/wiki/index.php/Main_Page
E-Mail: ooogalapasooo at aol.com
-----Original Message-----
From: L. Curtis Boyle <curtisboyle at sasktel.net>
To: CoCoList for Color Computer Enthusiasts <coco at maltedmedia.com>
Sent: Wed, May 31, 2017 6:49 pm
Subject: Re: [Coco] Machine Code
I can't remember if RMA/R63 does... ASM (being a level 1 assembler) is set up for a maximum 64k program and RAM. (I am currently doing a 22k assembled code project with it).Sent from my iPhone> On May 31, 2017, at 4:36 PM, Dave Philipsen <dave at davebiz.com> wrote:> > So now we need a way for the assembler to pull some Level 2 tricks and use 'extended' memory for the symbol table! A little more complicated I'm sure...> > Dave> > >> On 5/31/2017 5:31 PM, L. Curtis Boyle wrote:>> That might break some larger projects where the symbol table is getting full, however. 🙂>> >> Sent from my iPhone>> >> On May 31, 2017, at 3:44 PM, Barry Nelson <barry.nelson at amobiledevice.com> wrote:>> >>>> Bill Pierce ooogalapasooo at aol.com <mailto:coco%40maltedmedia.com?Subject=Re%3A%20%5BCoco%5D%20Machine%20Code&In-Reply-To=%3C15c606a7c48-4563-22c03%40webprd-m48.mail.aol.com%3E>>>>> Wed May 31 17:30:10 EDT 2017>>>> >>>> Dave, we're actually working on doing some of that in the Nitros9 code. The big thing is going to be labels over 8 chars in the defs files. These are used throughout the code base and are in hundreds of files. It would probably be easier to make the os9 assembler support 16 char names LMAO>>>> And BTW, tabs are supported in Ed 3.1. Use the <Shft><R Arrow> in the editor to create a tab. An unlike some os9 editors, it does not create a tab made of spaces, but a true tab char.>>> Increasing the label length in the asm command is an excellent idea! I like it!>>> >>> >>> -- >>> Coco mailing list>>> Coco at maltedmedia.com>>> https://pairlist5.pair.net/mailman/listinfo/coco>> > > > -- > Coco mailing list> Coco at maltedmedia.com> https://pairlist5.pair.net/mailman/listinfo/coco> -- Coco mailing listCoco at maltedmedia.comhttps://pairlist5.pair.net/mailman/listinfo/coco
More information about the Coco
mailing list