baron@transys.UUCP (03/31/87)
I recently ran across a shareware C compiler with assembler and limited libraries included. If there is any interest in this ( it may have passed through here before ) I will be happy to arc and post it. It is about 90k arced and could be cut down by leaving out a few things. Please e-mail to me if you are interested in this. I have used it and it works reasonably well. It was authored by a fellow in New Jersey, here is the REAME file: -----begin quote ------------ This disk contains a limited shareware C compiler for your use and enjoyment. You should find a number of directories on this disk which contain the following files: bin cc.ttp - translates C code to intermediate code as.ttp - translates intermediate code to machine code hd.ttp - hex dump utility cat.ttp - file concatenation utility grep.ttp - utility to search for a string in a file ss.ttp - simple spreadsheet program ue.ttp - public domain microEmacs editor mkt.bat - batch program to compile "x.c" into "x.ttp" mkp.bat - batch program to compile "x.c" into "x.prg" obj.bat - batch program to compile "x.c" into "x.s" lib prg.s - startup intermediate code for .PRG programs ttp.s - startup intermediate code for .TTP programs lib.a - library used to create .TTP programs gem.a - library used to create .PRG programs lib.c - c code for lib.a gem.c - c code for gem.a stdio.h - standard i/o header gem.h - header for GEM AES routines src ss.c - source for a simple spreadsheet program cat.c - source the file concatenation program grep.c - source for the string search program hd.c - source for the hex dump program You will also find the following files in the root directory: rmd209.acc - public domain ramdisk accessory command.tos - public domain command line interpreter boot.bat - copy tools into the ramdisk The compiler (cc.ttp) is preprocessor, parser, and code generator all rolled into a single program. Please refer to the "C Programming Language" by K&R. The compiler has the following features, limitations, and shortcomings: features - symbol names can be any length - built-in "trap" generator "trap(NUM, arg1, arg2, ...)" limitations - Only globals can be (very carefully) initialized. No type checking is done between the initializing value and the type of the global being initialized. This is crude but it works. Accepted initializer values are (long or short) constant expressions, strings, and symbols. what's missing - type specifiers: float double auto static - goto and labels - preprocessor: #undef and the #if family - structure assignments The output of the compiler is ascii text and each line maps into a single instruction. This intermediate code is as terse as I can make it (to save disk space) but is still readable (by me at least). (I have plans to improve this to make things easier for an optimizer). The output of the compiler is always placed in a file called "yc.out" in the current directory. Any error messages are displayed on the screen. The assembler (as.ttp) reads the intermediate code in a single pass and keeps everything in memory before generating the file "ya.out" in the current directory. The size limit of the program to be compiled is basically the size of the available memory. The "ya.out" file should be renamed to one of the standard extensions (.TTP, .PRG, .TOS) before executing it. The command line of the assembler should always list a startup file first (see ttp.s or prg.s) then the intermediate files of the program, then "-L" followed by any libraries. Any errors encountered by the assembler terminates assembly. A "-M" argument to the assembler will generate an address map of all global symbols in the file "ya.map". A library is simply intermediate code, but is handled differently by the assembler than regular intermediate code. Intermediate code (the files before "-L") are read and processed directly; all symbols and code are accepted without question. A library is read without processing until a symbol is found that is needed but not defined. From that point on, the library is read and processed until the next symbol is encountered. At the next symbol, the "needed but not defined" test is applied again and processing or scanning continues as necessary. The libraries include TOS, VDI, and AES routines taken from the Abacus books. I plan to document the library routines later. I have also included basic <stdio.h> routines. I have included the source for lib.a and gem.a (see lib.c and gem.c). A lot of library routines you would expect to see are missing, and for that I apologize. Creating .TTP programs is straightforward and better tested than .PRG (GEM) program creation. In a .TTP process, the main function is called with the standard arguments: main(argc, argv) int argc; char *argv[]; Redirection of input and output using >outfile, >>appendfile, or <infile on the command line is handled by a startup routine linked into the compiled program. Reads and writes to the screen are built to map '\n' to/from "\n\r". Support for GEM programs (.PRG) is not completely debugged. I have included the GEM.A library but must honestly admit it is not yet ready. Many of the routines found in the Abacus books are present in the library. The VDI routines are working. The window routines, form_alert, and evnt_multi of AES are working. My stumbling block right now is adequate documentation that would enable me to build a (working) Resource Construction Set. I'm working on it... Let me give you an example of how I use these tools. I normally place everything I need in the ramdisk before I start using boot.bat. I then start command.tos, use "path d:", and insert a new working disk. I use microEmacs (ue.ttp) to create or edit C programs. If I have a program contained in a single file, I use either mkt.bat or mkp.bat to compile and link a .TTP or .PRG program, respectively. For example, mkt grep will compile the program grep.c and create an executable called grep.ttp. If the C program is contained in a number of files, I use obj.bat to create intermediate files having the same names as the C programs except for a .s extension. I then write a link.bat that will combine all the intermediate files together along with the necessary libraries. For example, d:as d:ttp.s main.s io.s calc.s display.s -L d:lib.a would serve as a link.bat for a (mythical) spreadsheet program. I bought my 520ST in April 1986. Almost all the software I have is either public domain or shareware. I have supported the shareware idea in the past, but I'd like to see it happen for myself. If you like what you find here, please send a donation along with your name and address. I'd like to run a newsletter to discuss bugs, enhancements, and hints. There is a lot I would like to do with this in the future. Many of the limitations are easy to fix, and I really do need a Resource Construction Set (if I can only figure out how to make object trees that work!). I hope you enjoy this software. It is not for sale by anyone, and I reserve all rights to its ownership. Feel free to pass it on to other ST owners, but please pass on the whole disk, including this "readme" file. I welcome any comments you may have; send mail to: Mark A. Johnson 85 Coleman Ave Red Bank, NJ 07701
paone@topaz.UUCP (04/01/87)
Post it!! Please. I could use something other then Lattice for the small programs that I wirte. By the way, does anyone have a PD assembler out there? -- Phil Paone paone@topaz.rutgers.edu "Admiral...There be whales here"
akw@osupyr.UUCP (04/01/87)
In article <315@transys.UUCP> baron@transys.UUCP (Joe Portman) writes: > > >I recently ran across a shareware C compiler with assembler and limited >libraries included. > >If there is any interest in this ( it may have passed through here before ) >I will be happy to arc and post it. It is about 90k arced and could be cut down >by leaving out a few things. Dear Sir: Post, POST, *POST!* Andy Weaver / akw@osupyr.UUCP / 614.293.1195 or .292.1741 The Ohio State University / Columbus, OH / "Go Bucks." "Like cold water to the bones, so is good news from a distant land." Prov25.25 Disclaimer: If Ohio State knew I had UseNet access, they would probably have to ask what exactly UseNet is. And how much they should charge.
jcs@odyssey.UUCP (04/02/87)
RE: >I recently ran across a shareware C compiler with assembler and limited >libraries included. Please, pretty please, POST IT!!!!