jim (01/14/83)
I noticed the missing tabs. Another thing which is a little less obvious is that a lot of the files have carriage returns at the ends of the lines in addition to newline. This probably won't hurt anything, but it is not standard Unix and if your favorite editor or downloader doesn't like the files that could be the reason.
rej (01/15/83)
The reason that there is no stdio is that the C compiler is not written for CP/M. It is written for SMALL-VM (something like that) which is a package that runs on top of the Northstar O.S., which seems to be even more primitive than CP/M. A stdio package that worked for an earlier small C will probably work with V2.0, but one should notice that the code is not produced for any usual assembler. In particular, the assembler requires labels to end with colon and does not require blanks or tabs before op codes. The compiler has a lot of #ifdef's in it, so by changing a few characters at the beginning of the program one can add tabs before op codes. It does not seem to be hard to change the compiler to CP/M, but it will take a little work. Would whoever does it first post the results so we lazy people can enjoy the benefits of your work? Also, for any ARPAnet people who do not get net.sources and wonder what the fuss is all about, I can send you the same stuff that we got. It will probably eventually be put in the CP/M archives at MIT-MC. Ralph Johnson (cornell!rej or rej@cornell)
schrein (01/24/83)
#R:cornell:-393400:uiucdcs:10400032:000:768 uiucdcs!schrein Jan 24 14:36:00 1983 I downloaded the source to an Osborne, and used Software Toolwork's C/80 Version 2 and their assembler on it. Juggling disks many times, I did manage to compile and (absolute!) assemble smallC and run it on top of C/80's runtime support. I am now looking at the 'missing file' problem -- if I make it, I'll post it here. I noticed a few problems: 'lout()' is once called with only one parameter. The second one should be stderr. 'upper()' should not be excluded by #undef UPPER -- it is needed in 'ask()'. #define HASH will eliminate 'nextsym()' -- but #define STGOTO needs it. Hmm?? A few more cosmetic problems (like smallC's include syntax) are easy to change. The output of smallC can easily be made to look acceptable to regular assemblers. Axel Schreiner
schrein (01/24/83)
#R:genradbo:-101300:uiucdcs:10400033:000:13 uiucdcs!schrein Jan 24 14:37:00 1983 see note 61.