trunk
Alona EM 2022-05-29 20:56:57 +01:00
commit 64fe6180a8
3 changed files with 171 additions and 0 deletions

25
amigae33a.readme Normal file
View File

@ -0,0 +1,25 @@
Short: The Amiga E v3.3a distribution
Type: dev/e
Author: wvo96r@ecs.soton.ac.uk
E is an object oriented / procedural / unpure functional higher programming
language, mainly influenced by languages such as C++, Ada, Lisp etc. It is a
general-purpose programming language, and the Amiga implementation is
specifically targeted at programming system applications. The number of
features of the language is really too great to sum up entirely, and include:
speed of >20000 lines/minute on a 7 Mhz amiga, inline assembler and linker
integrated into compiler, large set of integrated functions, great module
concept with v40 includes as modules, flexible type-system, quoted
expressions, immediate and typed lists, parametric and inclusion polymorphism,
exception handling, inheritance, data-hiding, methods, multiple return values,
default arguments, register allocation, fast memory management, unification,
LISP-Cells, gui-toolkit, (macro-) preprocessor, very intuitive and powerful
source-level debugger, easy .library linking, and much more...
update to v3.2a.
This _distribution_ is Freeware. It contains only a limited compiler,
a registered compiler is available separately.
Wouter van Oortmerssen, october 27th, 1997

19
ec33a.readme Normal file
View File

@ -0,0 +1,19 @@
Short: The Amiga E v3.3a compiler (ec)
Type: dev/e
Author: wvo96r@ecs.soton.ac.uk
This is the EC compiler, formerly shareware, now freeware. I've decided to
give away the E compiler for free. To read about the reasons why and other
details: http://www.ecs.soton.ac.uk/~wvo96r/e/efuture.txt
This archive contains only the compiler executable, and to do anything with
it, you need the distribution archive, dev/e/amigae33a.lha from any aminet
mirror. The source to the compiler is available as dev/e/ec33a_src.lha
EC is now freeware. You may distribute it in any way, i.e. via the internet
or on CDROMs. The only (obvious) exceptions are that you aren't allowed to
make money out of selling EC, and you're not allowed to change anything about
this archive. Thanks.
Wouter van Oortmerssen, march 1999

127
ec33a_src.readme Normal file
View File

@ -0,0 +1,127 @@
Short: The Amiga E v3.3a compiler source
Type: dev/e
Author: wvo96r@ecs.soton.ac.uk
This archive contains the source code (in assembly) to the E compiler EC.
WARNING: This archive is for highly skilled assembly programmers with an
intimate knowledge of E and compilers, who are curious about EC's internals.
If this doesn't apply to you there's no point in even downloading this
archive. EC's source code redefines the term "hairy" and will make even
the best hackers faint.
This source code release is an addon to the freeware release of the E
compiler, EC v3.3a, which you can get from where you got this or any aminet
mirror as dev/e/ec33a.lha. You also need the distribution which was already
available: dev/e/amigae33a.lha. To read all about why I released this all
for free, read http://www.ecs.soton.ac.uk/~wvo96r/e/efuture.txt
As far as distributing the _unmodified_ archive goes, it is freeware, you can
distribute it in any way you see fit, i.e. via the internet or on CDROMs. The
only (obvious) exceptions are that you aren't allowed to make money out of
selling EC, and you're not allowed to change anything about this archive. Thanks.
I discourage people to distribute modified versions of EC, but if you feel you
really have to, a different set of rules applies:
As long as the modified compiler & source don't leave your system, you
can obviously do anything you please with it.
If you wish to re-distribute a modified version of EC you made, you have to
comply with the following rules:
* besided the new executable, you also distribute the new modified source
that generated it. EC's source code adheres to a similar scheme as "Open
Source" or the "GNU public license" with the only difference that you
don't need to include their licenses.
* You make very clear in your executable name, archive name, program welcome
message and anywhere else that this is YOUR version of EC, not the original,
i.e. someone who downloads your EC shouldn't be confused as to who made this.
Make sure you give the whole project a different name (e.g. BobsEC), and a
version number higher than 3.3a.
* You clearly mention me as the original author, refer to the 3 original
archives mentioned in this text, and in general do your best to educate the
users of your version to understand how this software came to be.
Obviously if they want to modify/redistribute your version, they should
also have read the texts in the original archives.
* EC is unsupported, so don't come back to me to ask wether you can have
your changes incorporated in the next official release, because there
won't be any. Instead, look around on the internet (the E mailing list
is a good place) for other people interested in doing an extended EC, and
cooperate with them.
Now to the hard bit, modifying EC's source code. As mentioned above, think
long and hard wether this is a really a sensible thing to do, and when you
have decided yes, think long and hard again. In the later years of
development, modifying EC required a very concentrated effort to modify and
debug, especially doing it correctly to not introduce new problems. EC's
source code is terribly complicated, very badly programmed, and contains more
long distance dependancies than any bit of code I've ever seen. In short,
unless the modification you intend to make is absolutely trivial, writing
the compiler from scratch would be a lot quicker.
Given that you still want to modify it:
* the code was written using AsmOne, most recently with version v1.25. Don't
ask me to send it to you, because I don't think it's public domain.
* If you insist on converting it to another assembler, be prepared for a lot
of work. Realise that a lot of the code in the source plays a role in the
code generation process, and as such is more critical to change than any
other assembly program would be: for example occurrences of MOVE.L #1,D0
in the source might be there for me to grab its opcode, if your assembler
changes that to MOVEQ #1,D0, the code generator will generate illegal code
and all compiled E programs will crash, and it'll be very hard to find out
why it went wrong. So make sure you disable any flags/options of your
assembler that try to optimise or otherwise change the code.
* register usage is completely non transparant, i.e. if a certain register
isn't used for an entire subroutine, you can't assume it's free to use.
there are all sorts of weird conventions, and many registers span entire
sections of the compiler in their lifetime. Basically if you modification
is in need of registers (and it will be) your safest bet is to JSR
from the point where you want to insert the new code, safe all registers
that you will be using and in general make sure that you restore the
machine state to exactly how you found it. Failing to do this WILL
introduce new hairy bugs.
* the whole compiler (>80k) is written in small model, i.e. uses 16bit
signed branch offsets, so insert new code at the end or start, otherwise
you'll break a lot of branches.
* the source code contains hardly any comments :P
There are tons more pitfals, but these are the most obvious I could think of.
besides the actual source code, the following files have been supplied in
the extras/ dir with the sole purpose of helping people who intend to
modify/enhance EC. The files are supplied AS IS, please don't come and ask
me to explain to you what their contents means.
extras/TODO.TXT:
the most recent todo list I had for future releases. May give you an idea
as to what bugs havent been fixed should you get to the point of improving
EC a lot.
extras/EC.TXT
this is the text I used internally to keep track of data structures and
other data used in EC, as the source itself is rather unselfdocumenting.
This text could help you a bit in trying to understand EC's code, but
most of the data structures in this text contain no documentation, so
you're on your own as to what it all means. Still its better than nothing.
extras/utils/
E source code to utilities supplied in the distribution, i.e. showmodule
and others. One utility called ecdebug can dump some of the internal
data structures of EC while its running (run it as EC HOLD in another shell),
and can be easily extended.
Wouter van Oortmerssen, march 1999