Next comes sources for the Draco compiler, runtime system libraries, etc:
Draco.zip is the source for the compiler itself.
IOLib.zip is the Draco source for the I/O libraries, etc.
AsmLib.zip is assembler source for parts of the
runtime system.
CRT-Form.zip is Draco source for CRT and input form
libraries.
Includes.zip is the Draco versions of the system
include files. Also included is the Draco source for "fdCompile", the tool I
wrote to create interface stubs for Draco code calling resident libraries.
It also is needed when writing a new shared library.
Note that this is only needed if you want to modify things - the actual Draco
include files are in the above Binaries.zip file.
DRLink.zip is the Draco source to my linker (replaces
the "BLink" linker).
More information on the Draco compiler, etc. can be seen on my CP/M archives page. The Amiga version generates code for the Motorola MC68000 processor instead of the Intel 8080 processor, of course. The included version also adds the "register" keyword, so that programmers can direct the compiler to put some proc parameters or local variables into machine registers. The peephole optimizer is also greatly expanded. This version of the compiler is also able to do branch shortening on forward branches, and can minimize the proc entry/exit sequence.
There are new sources for it on my system, but it looks like that is an incomplete version I was working on. If anyone wants it, let me know. Archive Explore.zip contains the Draco source to the Explore program and the ExpCre program, along with the source and data for the Amelon world. These compile and run with the above-distributed Draco compiler, etc. under UAE on my Linux system. A note in those new sources says the following about the Amelon world:
Amelon scenario - about 100 monsters types, 2 large, 2 medium and half a dozen small grids; 50 or so mazes; a dozen or three objects, including a map, keys, magic weapons, armour, etc. Magic, strength, hit-points, are built up with experience as usual. I've set stuff up so that you don't even know some features exist until you first see them. Takes about 50 hours to play through.More information on Explore can be seen on my CP/M archives page. I have produced a UAE floppy image from which Explore can be played. See the "Playing" file on that disk or in the above archive for some information and hints on playing the Amelon scenario. This works fine on my Linux system, and I spent far too much time re-playing Amelon.
If you look at the Amelon sources, the way they are written will seem a little bit strange, e.g. sharing a file-level variable instead of using proc locals. This was done on the original CP/M version to conserve code space, and was not changed on the port to the Amiga. You will also see not many comments, lots of game artifacts that are referenced by number instead of named constant, short proc names, etc. All of that was done to conserve memory space, during editing, during compilation, or at runtime. On CP/M, there was only a 64K address space, and that had to hold the operating system (4K), the memory-mapped graphics card (8K), the Explore common code and the Amelon code and data structures.
As of 2014-11-05 I have two Android versions of UAE: "UAEDroid" and "Uae4all2". Both will run Explore, but it is not playable on either one due to other issues, mostly having to do with input. Explore wants keyboard input and must be run from a shell prompt. Those versions of UAE are designed for use with games using mostly joystick input, and which boot up automatically from the floppy disk.
UAEDroid will run in portrait mode, so you can have the full Amiga screen visible as well as its keyboard. However, there is no numeric keypad on their keyboard, so movement is awkward. Even more important, there is no ":" on their keyboard, which makes it impossible to start Explore. If you connect a Bluetooth keyboard, you can type the needed ":" and start Explore. However, on a Bluetooth keyboard, the "L", "R" and "O" keys (at least) are disabled, so you have to use *both* keyboards to get it going. (I'm guessing they are taking Bluetooth keyboard input as if the Amiga key were held down.)
Uae4all2 only runs in landscape mode, so you have to constantly toggle the keyboard on and off. You can configure their onscreen control things (which it took me a *long* time to realize the nature of), but configuration is extremely difficult because the scrolling key-lists only work one time out of 10. Also, this emulator does not allow writing to disk images, so you cannot save your state from Explore. That is crucial, given the size and difficulty of the game. I expect this has something to do with their concept of "Saves", which I did not try to figure out.
The second was my Pattern library, which worked with the patterns that are used on the Amiga. These differ from "standard" regular expressions and from Unix shell patterns. They are used as shell patterns by many Amiga commands. An interesting difference between Amiga commands and Unix commands is that on the Amiga, it is the command program itself which does the pattern matching, whereas with Unix shells like "bash", it is the shell that does the matching.
The third library was yet another programming language project. The idea was to create a group of shared libraries which could be used to create a variety of programming languages for various purposes. The individual libraries created so far are: Lex, Symbol, Parse and Print. "Lex" of course is for lexical scanners (tokenizers). It doesn't work at all like the Unix "lex" program does. The "Symbol" library is for symbol tables. The "Parse" library is for parsing. This library is oriented towards languages looking a lot like Draco - I didn't view that as a problem! The last library, "Print", is part of a pretty-printing system. This project was never completed.
I modified my Ded editor for use on the Amiga. Part of the modification was to take out the ability for configuration for a specific terminal type - it was hard coded for the Amiga console windows. I also took out the ability to configure the keystrokes used for the various commands - the pre-configured set is shown in the "commandList" file in the "Doc" directory. Here is the sources, etc. for the Amiga version of Ded. The CRT library has new and old sources, and the new ones do not compile. So, the Ded sources are only for amusement.
I wrote Draco versions of some tools for dealing with Amiga IFF files. Sources, etc. are here.
The sources and articles for my "Toy" compiler have been online on my website here for some time. Toy compiles and runs fine under UAE, although the "hanoi.t" example should ask you for the number of disks, not the number of pegs.
Here is a ZIP of various tools I wrote. The main one in there is the source to my "Dis" disassembler, which uses my "disassemble.library" to create a very nice object file disassembler. Included are a bunch of simple UNIX-like utilities, along with my "system" routine, and the beginnings of a debugger.