Carousel CP/m Tools

Post Reply
stefano
Well known member
Posts: 1695
Joined: Mon Jul 16, 2007 7:39 pm

Carousel CP/m Tools

Post by stefano »

https://github.com/zx70/Carousel-CP-M-Tools

I used a customization of "archx.c" and split the original archives into files, then I sorted them out in separate folders respecting the original file names and groups.
The tools were written in RATFOR, a preprocessor which permitted C like structures on a traditional FORTRAN compiler, so the source code is closer to C than FORTRAN.

The result was impressive, the tools (with a custom extension name of ".TOL") could run directly on CP/M by a minimalistic invoker (RUN.COM) or on a quite complex shell environment which permitted file redirection, command concatenation, environment variables, etc.

There very little bit of assembly code to support the core environment is here:
https://github.com/zx70/Carousel-CP-M-T ... ain/runsys
https://github.com/zx70/Carousel-CP-M-T ... ain/sh/rsh


I think this archive can be an interesting reference to compare our way to provide the fcntl support (create, seek, unlink..) on CP/M and the way it was done by Carousel Microtools:
https://github.com/zx70/Carousel-CP-M-T ... alsys7.rat
stefano
Well known member
Posts: 1695
Joined: Mon Jul 16, 2007 7:39 pm

Re: Carousel CP/m Tools

Post by stefano »

Loosely related to the current topic.
I spotted a C conversion of the RATFOR preprocessor (originally written in RATFOR, thus built with a FORTRAN compiler; a 'Carousel Microtools' version was also provided in the mentioned kit).
After adjusting the function headers and applying the build optimization flags I could get a quite compact executable, it is less than 24K in size (or less than 26K if built with SCCZ80), while the version available in the CPMUG archives was 32K.
Be aware that I'm not comparing 2 identical programs: the latter one was adjusted to be built with the old CP/M compilers (e.g. no support for file redirection), and its functionality is not identical to the version in C, nor to the Carousel one (which was 27.5 K big, plus the needed runtime support command.. and yet slightly different from the other implementations !).

https://github.com/z88dk/z88dk-ext/tree/master/ratfor77
Post Reply