BackDrops  Views  Lego  Megabloks  Puzz3D  Compilers  MUDs

Amiga Archives

This page contains .ZIP archives of much of my Amiga work done in Draco. This stuff can be run on many systems (e.g. Linux and Windows) using UAE, the Universal Amiga Emulator, available online. My Ubuntu-based Linux distribution includes it, ready for installation. To use it, you will need an Amiga ROM and system disk, which are available for a small fee at: amigaforever.com. I purchased their Android version, and copied the needed images from there to my Linux system.

The Draco Compiler, etc.

To make sure that everyone is starting in the same place, here is a .ZIP file containing the latest version of the Draco compiler, my DRLink linker, my FDCompile program, my Ded text editor, my Dis disassembler and Draco's libraries and include files (both including all system ones). To use the included version of Ded, you must be running in interlaced mode.

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.

Amiga Empire

This is version 2.1 of Amiga Empire, according to the library startup file.
 
EmpSrc.zip is Draco sources for Amiga Empire.
EmpDoc.zip contains the Docs and Help data, along with several .info files.
EmpMap.zip contains the source to Dave Wright's EmpMap program.
Executables, etc. for one of Dave Wright's runnable versions of Amiga Empire can be found on Fred Fish disk #357, available on Aminet.

Explore

This is a working version of Explore. Since this was never released in any form, it must be run from a shell command line. Also, as you can see, the graphics are those produced by a programmer, not an artist! I don't know the cause of the spurious data at the bottom of the screen - I'm guessing it is part of UAE not having a window resolution that matches the number of screen lines Explore is producing.

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.

Libraries

Asside from the shared libraries that are parts of Explore and AmigaMUD, I worked on 3 other shared libraries. Sources and notes on all 3 are here. The first of the libraries is my 68K disassembler library. I used it to make my "Dis" program, whose source is in the Tools ZIP, below.

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.

AmigaMUD

One of my biggest projects on the Amiga was my AmigaMUD system. It is described under my overal MUD page, here.
Up  Home