[net.micro] Smallc V2

gbs (02/07/83)

To All Smallc Users,

	Like some of you, we have been trying to bring up V2 of the Smallc 
Compiler on Unix (version 2.8) here at the Computer Based Laboratory 
at Harvard University.  We have been successful, coming up with a
very unix-like mutant of Smallc.  However, we plan to use the compiler
specifically as a tool to run on our system.  It is not written with
the intention of being downloaded to a micro, therefore it is not written
to be run on itself. This made the debugging very advantageous.

	Changes:
	1.  There are certain places in the code where EOL is not being read.
       I suppose that on the original machine,  a NULL character 
		 terminated a line. In blanks, therefore, it is necessary 
       to check for EOL and not NULL to determine when to process 
		 another line.
	    I found this problem also in preprocessing.  When adding values
		 for a #define statement to the macro table, the EOL character
		 is ignored, and when the value of a symbol is replaced on a 
		 line, the EOL is written also. In addmac, simply doing a 
		 putmac until EOL is found, and then putmac'ing NULL will handle this.

   2.  If you are compiling the code on a Unix compiler rather than
		 version 1 of Smallc (like we are) then there are places in the
		 code where expressions are receiving warnings from the compiler.
		 Putting spaces between (val)=*(ptr) will alleviate this annoy-
		 ance.

Improvements (I hope):
    1  With this compiler, as with version1, I found undefined variables
		 in function calls to be ignored.  I have fixed this and while I
		 won't post it here, I would be glad to post it to anyone who
		 requests it.
	 2	 Also, I have totally restructured the receiving of command line
		 options.  I found version 2's method rather unexpandable for those who
		 wished to add many command line options (I had written it for
		 version1 and I was simply to lazy to write getarg). 
		 The new version parses the command line with the help of a 
		 case statement corresponding to each option, so adding options 
		 is a much more attractive endeavor.
	 3	 It was true what Mike Wagner said about the inability to do nested
		 includes.  I have fixed this also, implementing some stacks to
		 hold current file descriptors, names, and line numbers which 
		 are useful not only for #including, but also for diagnostic
		 messages.
	 4	 Speaking of diagnostic messages, I have made version 2's error
		 messages a command line option.  I felt that they were
		 impractical for programs with many errors (messages are scrolled
		 up the screen as they appear.  For those of us with dumb, no-
		 scroll terminals, this is useless) so I implemented very a unix
		 like diagnostic system which although doesn't supply a pointer
		 to the unparsable object, it does supply file-names ,
		 line numbers where error occurred, and also undefined variable names.
		 It works on includes as well.

In the Planning Stages:
		 We are working on adding structures to the smallc we are 
		 implementing. However, this is still in the development stages.

		 Adding a command line user library which only compiles those
		 functions who are unresolved in the inputs file(s) is also
		 being added. It will be able to compile 8085 functions as well
		 as smallc functions.  This should be up by next week.


As stated before, anyone who wishes to see these changes, let us know and
we will be glad to post you a copy. 
There are probably more changes that I made, but right now they are hard
to remember, so I will post important ones as I recall them.


														Gary B. Schermerhorn
														Computer Based Lab
														Harvard University