mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 00:14:25 +00:00
82 lines
4.1 KiB
Groff
82 lines
4.1 KiB
Groff
|
||
|
||
|
||
|
||
|
||
These are notes made while altering the Alcyon compiler for CP/M.
|
||
|
||
1. It would really be nice if you confined your filenames to
|
||
8 letters, all lower case, with a 2 letter extension.
|
||
This will enable you to put them on any O/S without
|
||
translating them. (More of a convenience than anything
|
||
else).
|
||
|
||
2. I corrected a number of "#if... MC68000" which should have
|
||
been "#if... REGULUS". CP/M also requires MC68000, and
|
||
you could conceivably run the compiler on someone else's
|
||
(obviously inferior) 68000 UNIX system. Similarly, you
|
||
have a number of "VAX11" conditionals which really should
|
||
be "DECC".
|
||
|
||
3. How can you not allow nested include files on some O/S's
|
||
when your own software requires this feature? Including
|
||
multiple input buffers in the "filestack" structure fixes
|
||
this problem (at the expense of extra memory). There is
|
||
no signifigant performance penalty, since the memory is in
|
||
BSS.
|
||
|
||
4. Command line switches MUST be case-insensitive.
|
||
|
||
5. In the preprocessor, you have a lot of "versaxxxx" func-
|
||
tions. Why not define a run-time library (similar to our
|
||
"klib") which will enable you to take out most of the
|
||
conditional compilation? This would have a positive
|
||
effect on your reliability and testing time.
|
||
|
||
6. I changed the name for the Whitesmith's compiler to
|
||
WHITESM, to eliminate conflicts.
|
||
|
||
7. Under CP/M or with our cross tools, users have been
|
||
accustomed to having the preprocessor "-i" switch take the
|
||
next argument as the drive / directory for
|
||
"#include <file>" constructs. I conditionally compiled
|
||
this. In any event, your standard include logic in
|
||
"macro.c" was faulty for systems with a colon (":") as
|
||
device name delimiter.
|
||
|
||
8. Jeez, why the "printf((char *)STDERR" stuff? Couldn't you
|
||
write a function "fprintf" for V6 and not make the rest of
|
||
the world suffer?
|
||
|
||
9. The "C268" pass of the compiler produced a file that the
|
||
assembler wouldn't assemble (using a very large ".c"
|
||
file). There were more than 20 labels which needed to be
|
||
grouped together. Increasing the size of the structures
|
||
in "optim.h" fixed the problem. You really ought to range
|
||
|
||
|
||
Page 2
|
||
|
||
|
||
|
||
check your index variables, and print a message if there
|
||
are too many labels for you to handle.
|
||
|
||
10. The assembler will definitely NOT work under the
|
||
Whitesmith's compiler, since you rely on being able to
|
||
open a file twice (pass1a) and on being able to rewind a
|
||
text file with "lseek" (pass2).
|
||
|
||
11. There is some dependency in the assembler on getting
|
||
storage from sbrk() which is initialized to zeros. I took
|
||
out the code from our C runtime which zeros the area
|
||
between the BSS and the stack, and the assembler wouldn't
|
||
initialize.
|
||
|
||
12. The assembler had a bug where assembling an odd length
|
||
byte string into the text segment caused alignment
|
||
problems. We fixed this problem over a year ago. Why
|
||
wasn't the fix incorporated??
|
||
|
||
We have not encountered any further bugs since the two for which
|
||
we gave you source code.
|