[net.micro.cbm] overlaying compiler

jpdres10@usl-pc.UUCP (Green Eric Lee) (06/04/86)

Needed: A Pascal or "C" compiler for the C-64 that will do overlays.

Requirements:
 a) have provisions for overlays, so that I can fit the program into
40K of RAM. Hopefully, similar to UCSD "SEGMENT" procedures.
 b) It must include an adequate ML interface, so that I can use my
interrupt code and various other necessary routines. They total about
4K, so adequate space is necessary to place them in.
 c) reasonably compact object (probably means p-code). Speed is no
problem, due to the ML. Interpreted BASIC would be fast enough.
 d) If possible, not use the area from $c600 to $d000, where Mike J
Henry's fastloader resides, and use the LOAD routine to load overlays.
Or at least have it so that I can easily tie in my own 1541 speedup.

  Post any followups here. usl-pc isn't in the sendmail database...
this is eventually going to be usl-pc.usl.edu or something similarly
arcane, but it's not implemented yet. Or send mail the old fashioned
way.
-- 
Computing from the Bayous,
       Eric Green akgua!usl!usl-pc!jpdres10
            (Snail Mail P.O. Box 92191, Lafayette, LA 70509)

daveh@cbmvax.cbm.UUCP (Dave Haynie) (06/04/86)

> 
> Needed: A Pascal or "C" compiler for the C-64 that will do overlays.
> 
> Requirements:
>  a) have provisions for overlays, so that I can fit the program into
> 40K of RAM. Hopefully, similar to UCSD "SEGMENT" procedures.
>  b) It must include an adequate ML interface, so that I can use my
> interrupt code and various other necessary routines. They total about
> 4K, so adequate space is necessary to place them in.
>  c) reasonably compact object (probably means p-code). Speed is no
> problem, due to the ML. Interpreted BASIC would be fast enough.
>  d) If possible, not use the area from $c600 to $d000, where Mike J
> Henry's fastloader resides, and use the LOAD routine to load overlays.
> Or at least have it so that I can easily tie in my own 1541 speedup.
> 
>   Post any followups here. usl-pc isn't in the sendmail database...
> this is eventually going to be usl-pc.usl.edu or something similarly
> arcane, but it's not implemented yet. Or send mail the old fashioned
> way.
> -- 
> Computing from the Bayous,
>        Eric Green akgua!usl!usl-pc!jpdres10
>             (Snail Mail P.O. Box 92191, Lafayette, LA 70509)

I think the latest version of PROMAL has provision for overlays, and its
own fast loader.  If you're not familiar with PROMAL, its kind of like C in
that it allows access to machine level stuff, has no "built-in" functions,
and handles arrays much like C does.  There are several ways to interface
to machine code with PROMAL.  It currently supports separate compilation of
modules.  The PROMAL system loads its own CLI into the C64, and most of the
CLI utilities are written in PROMAL.  The compiled PROMAL routines seem to be
somthing like address-independent P-CODE, as you can load several PROMAL
programs at one time.  The developer's version includes a run-time module
that loads and executes your PROMAL program; the only problem here is that 
this module is kind of large.

Another thing to look at might be Pro-Line's C-Power C compiler.  I'm not
completely familiar with it, though I've used an older version.  It allows
separate compilation of programs, and produces real machine code that can
be linked and located anywhere in memory (its ROM-able).  I don't know if 
there's any support for overlays, though machine language shouldn't be a
problem.  Its also the fastest compiler I've seen for the C64.

-- 
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Dave Haynie    {caip,inhp4,allegra,seismo}!cbmvax!daveh

	"I read dozens of books, 'bout heros and crooks,
	 and I learned much, of both of their style.."
						-Jimmy Buffet

	These opinions are my own, though for a small fee they be yours too.
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/

jmg@cernvax.UUCP (jmg) (06/07/86)

In article <333@cbmvax.cbmvax.cbm.UUCP> daveh@cbmvax.UUCP writes:
>> 
>> Needed: A Pascal or "C" compiler for the C-64 that will do overlays.

I have managed to frig the C-Power compiler to do an overlay. The
hard part was that all of the global variables had to be initialised,
so that they were in a fixed place: otherwise they are tacked on after
the linked code, which allows more code.
If anyone has a proper way to do it with C-Power I should like to know.

jamesv@hplsla.UUCP (jamesv) (06/09/86)

I have a copy of "Oxford Pascal" which seems to meet some of your
requirements.  Please note that my responses come straight from their
manual and I have not tried any of these operations.  If anyone else
has used this compiler, your comments would be appreciated.  

> Needed: A Pascal or "C" compiler for the C-64 that will do overlays.
> 
> Requirements:
>  a) have provisions for overlays, so that I can fit the program into
> 40K of RAM. Hopefully, similar to UCSD "SEGMENT" procedures.

Oxford Pascal has the ability to "chain" programs.  While this is
not the same as overlays, it may satisify your requirements.  You can
pass global variables between the old and new programs.

>  b) It must include an adequate ML interface, so that I can use my
> interrupt code and various other necessary routines. They total about
> 4K, so adequate space is necessary to place them in.

Section 3.10.1 of the Oxford Pascal manual describes the assembly
language interface.  From the description, it looks like interfacing
to your routines would be straight forward.  No mention is make of
interrupts.

>  c) reasonably compact object (probably means p-code). Speed is no
> problem, due to the ML. Interpreted BASIC would be fast enough.

I don't have any info on this but it does appear that Oxford Pascal
compiles to true machine code, not p-code.

>  d) If possible, not use the area from $c600 to $d000, where Mike J
> Henry's fastloader resides, and use the LOAD routine to load overlays.
> Or at least have it so that I can easily tie in my own 1541 speedup.

The manual says that the top of memory pointer can be set to $c000
to "prevent Pascal from overwriting these locations."

James Vasil
hplabs!hplsla!jamesv