commit 64fe6180a89a8382a9fc4395622fc553f12a655e Author: Nixon Enraght-Moony Date: Sun May 29 20:56:57 2022 +0100 README's diff --git a/amigae33a.readme b/amigae33a.readme new file mode 100644 index 0000000..70fbe63 --- /dev/null +++ b/amigae33a.readme @@ -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 + diff --git a/ec33a.readme b/ec33a.readme new file mode 100644 index 0000000..76f45c6 --- /dev/null +++ b/ec33a.readme @@ -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 + diff --git a/ec33a_src.readme b/ec33a_src.readme new file mode 100644 index 0000000..6f240ad --- /dev/null +++ b/ec33a_src.readme @@ -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 +