[Coco] OS-9 / NitOS-9 C programmers, lend me your makefiles

Jeff Teunissen deek at d2dc.net
Sun Nov 15 02:23:38 EST 2020


I've actually stopped using c_prep entirely here, and have switched to
a different C preprocessor.

I think the 'cpp' in CoCoC is a descendent of the original c.prep. It
may be found in the directory Source/Compiler/CPP. It's pretty
excellent and mostly ANSI-compatible. I've added a few features, like
#error, #file, #warning, stringification using #, token pasting using
##, and optionally restricting macro expansion to only happen outside
of string/character literals.

Most importantly for me at least, it seems to be faster and consume
less memory than c_prep, which is important for future enhancements.
Rather than using a static array for definitions, cpp uses a linked
list, so it's not wasting as much memory and can thus handle many more
definitions.

I do have a copy of the (C and assembly) Kreider library. It's also in
CoCoC, and can be found in the directory Source/Libs/KLibc; once I've
got the whole toolchain (C compiler, assembler, linker) building,
maintainable, etc. I do plan to start really fixing up the bugs in the
C library. I have noticed the Y2K bug in ctime(), but I discovered
that it's missing the source code to scanf/fscanf/sscanf so I've been
disassembling it.

On Sun, Nov 15, 2020 at 1:11 AM William Carlin <whcarlinjr at gmail.com> wrote:
>
> Jeff,
>
> Here is the link to the folder on my Google Drive.  The files are under the
> "Microware C Projects" folder.  I have uploaded the two .lzh archives and
> the same files are also on a DriveWire disk, "Make91SRC.os9"  The source
> code to MROFF is also there if you did not grab that when I previously
> shared it with you. That is in the "CLib_Kreider_91_doc.lzh" archive.
>
> https://drive.google.com/drive/folders/1IZ89kvYU04sfVYufnyqBuvOFZDs59CLv?usp=sharing
>
> To compile you are going to need:
> cc252 (cc v2.5.2)  This should already be on the EOU beta 5 disk.
> Otherwise you can find it on the Climax C Compiler release on the Color
> Computer Archive
> The Kreider clib.l  This should also be on the EOU 5 beta disk.
> I also use Kreider's fixed version of cstart.r but that should not prevent
> compilation.  This should also be on the EOU beta 5 disk.
> You will also need my updated version of c_prep v1.9  I am unofficially
> bumping the version up to 1.10.
>
> I have allowed/fixed source line concatenation of more than one line of
> code.  If more than one line of consecutive code ends with a backslash '\'
> the lines will be concatenated into a single line of code.  Leading spaces
> are removed so you can make your source look "pretty".
>
> I have also fixed the __FILE__, __DATE__, and __TIME__ built in macros to
> be enclosed in double quotes when expanded.  Previously these macros were
> not enclosed in double quotes when expanded and could not be displayed with
> the %s printf format argument.  This also allows for easy inclusion in the
> format text as the preprocessor correctly concatenates consecutive double
> quotes.  If there is a way to make the preprocessor enclose an expanded
> macro with double quotes around it, I have not been able to find it.  In
> GNU you can prepend a '#' in front of the macro to stringify it.  However,
> C-prep 1.9 does not include this feature.
>
> #__FILE__ will expand to "filename.c" (GNU)
> __FILE__ will expand to filename.c (OS-9, both MWC c.prep and c_prep v1.9)
>
> BTW, the __DATE__ macro is not Y2K compatible.  This has more to do with
> the implementation of ctime() in the Kreider clib.l
>
> BTW if you have a copy of the assembly source code for the Kreider CLib,
> please drop that in the Incoming folder on my Google Drive.  The Y2K fix
> should be as simple as adding 1900 to the D register before moving it off
> to be included in the returned date string.
>
> William Carlin, Jr.
>
>
> On Sat, Nov 14, 2020 at 11:37 PM Jeff Teunissen <deek at d2dc.net> wrote:
>
> > I noticed there's a bug in the OS-9 port in that when Neil changed the
> > code to work with spaces, he actually changed it to work _only_ with
> > spaces and not tabs. Unfortunately, this means that the OS9 version
> > _cannot_ use Makefiles that are compatible with every other Make in
> > the world, and vice versa. This is an oversight that needs correcting;
> > if you get to it before I do, awesome, otherwise I'll do it. :)
> >
> > On Sat, Nov 14, 2020 at 11:17 PM William Carlin <whcarlinjr at gmail.com>
> > wrote:
> > >
> > > Jeff,
> > >
> > > I saw all the references to EON in the source but I couldn't find any
> > > reference to it on Google.  There is a modern OS called EON but I do not
> > > think it has any relation to the EON referenced in PD Make.
> > >
> > > I'll LHArc my source code, copy it up to my Google Drive, and then share
> > > the link here.  The reason I wanted to know how to add empty directories
> > to
> > > the LZH archives was to archive this source code when the time to share
> > it
> > > out was appropriate.
> > >
> > > William Carlin, Jr.
> > >
> > >
> > > On Sat, Nov 14, 2020 at 7:25 AM Jeff Teunissen <deek at d2dc.net> wrote:
> > >
> > > > More information discovered about our favorite Make:
> > > >
> > > > It was originally written for an OS I have never heard of, called
> > > > "eon", by someone named Neil Russell. I surmise Neil had been either
> > > > working or studying at an Australian university when he wrote it, from
> > > > his ACSNet email address.
> > > >
> > > > A later version Neil posted in December 1986, though, suggested he was
> > > > by then working at Fairlight (makers of the Fairlight CMI digital
> > > > music workstation) and had ported it to OS-9 (whether 6809 or OSK, I
> > > > do not know). This is still not the same program we know on the CoCo,
> > > > because it doesn't read a /DD/Sys/Make.default data file for its
> > > > defaults -- they're compiled in.
> > > >
> > > > Still, some interesting history there that I will have to integrate
> > into
> > > > CoCoC.
> > > >
> > > > --
> > > > 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 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


More information about the Coco mailing list