An Interview with David Benn, author of ACE Basic

By Paul Morabito.

Back to Amiga Central FeaturesBack to Amiga CentralAmiga Web Directory

1. When did you first come into contact with the Amiga?

In 1987, around September. In February 1987 I moved from South Australia to Tasmania to work at the Launceston General Hospital's Intensive Care Unit after a two year break from nursing studying Theology and Psychology at Uni. In September I went for a short holiday to SA and brought with me my trusty C64 - yep, I was still using a C64 then. No PC had yet graced my desk.

I had seen an Amiga 1000 in action in 1985 or 1986, I forget which, along with the Atari ST. My feeling at the time was that I wanted an Amiga.

So, since by late 1987 the A500 was available, I was able to afford an Amiga at that time. I was dazzled by it, but missed the simple mode of interaction one had with the C64, the melding of BASIC with command-line. After a brief novelty period, I stopped using Workbench, using CLI almost exclusively until about 1991 when I bought a hard disk and suddenly I had enough icons and drawers to drag around. Seriously, for me, the compelling reason for using a graphical user interface initially was ease of arranging my filesystem.

Anyway, if I couldn't have a BASIC CLI, at least there was AmigaBASIC. Up until then, I had been a line-numbered BASIC hacker. I also wrote some machine code subroutines to be called from BASIC, and on some occasions, complete machine code programs, but I have always preferred HLLs (high level languages) while at the same time being lured by the purity of machine code.

I liked what I saw in AmigaBASIC and quickly adopted a no-line-number attitude, first labeled routines, later SUBs, although the latter not until after taking Pascal at Uni in 1989 and becoming a structured programming convert. However, I was taken aback by the "no-fixed-address" (dynamic relocation) aspect of the Amiga, and the way it jealously guarded hardware resources such as the mouse port. On the C64 I had done a lot of I/O experimentation (parallel and game ports) and wanted to do the same on the Amiga.

So, what did I do? Buy the RKM: Libraries and Devices? Nope, not right away at least. I bought the RKM: Hardware Reference Manual and found out how to access the joystick port registers (not so jealously guarded by the OS). I was able to (again) use the joystick port to read switches (e.g. from passive infrared sensors), and eventually analogue devices like thermisters and cadmium sulphide photoresistors to read temperature and light levels respectively. I was even able to strobe the two analogue lines as outputs. For kicks, I built a latch-decoder/relay-driver circuit and used these outputs (ignoring 00) to drive 3 reed relays. Call me a fanatic. :)

When I _did_ eventually get the RKM: Libraries and Devices (only one volume at that time) I found it less than useful in doing game port I/O without hitting the hardware, for a couple of reasons: (i) I didn't know C; (ii) There didn't seem to be much support for the game ports in the OS.

I did a lot of other AmigaBASIC programming ranging from astronomy programs to games, and the AmigaBASIC environment's and language's shortcomings were becoming apparent to me by 1989. During that year, I learned Pascal, Fortran, and C at Uni. I'd decided in 1988 that I should go to Uni again (part-time at first, full-time by 1990) - I'm a restless kind of guy. I figured I should turn my hobby into something I was paid for. I've had mixed feelings about that ever since, but I have learned so much in the process.

So, the next Big Thing for me on the Amiga was C. I started programming my Ami in C in 1990 and I immediately appreciated the power: independence from the AmigaBASIC environment, speed, a lean mean (but unforgiving) language.

This leads nicely into question 2...

2. What inspired you to write ACE Basic, Why Basic?

In 1990, I took an undergraduate course in compiler writing and was hooked. I wanted to design my own language, one I would want to use every day, with the features I thought were desirable, the speed of C and the ease of use of BASIC.

There were features missing from AmigaBASIC (structs, recursion, SUBs as functions to name a few), but I believed it was a reasonable starting point and a language based upon this would mean that people could use existing source code with only minor revision, if any.

My involvement with computing had been so intertwined with BASIC (TRS-80, ZX81, PET, Vic-20, C64), modern BASIC dialects such as AmigaBASIC were a big improvement over older dialects, BASIC interpreters were still commonplace, and there was a lot of legacy code lying around that could be adapted for use. When I finally added line numbers to ACE (they were left out initially) it was to take advantage of old BASIC code.

3. Tell us a bit about ACE Basic, it's background, current features etc.?

I guess my answers to questions 1 & 2 say something about ACE's background, but I did leave out one thing. ACE really started out as a straight AmigaBASIC compiler, and ended up as an experiment in language design.

ACE doesn't have all of AmigaBASIC's features even now, for example:

- sprites, bobs
- double-precision floating point

It has most of AmigaBASIC's core features however, and then some. The extras include:

- Structures (structs in C; records in Pascal)
- Recursion
- Subprograms with return values
- Turtle Graphics
- Standard requesters
- Gadget commands and functions
- Serial I/O support
- Interprocess communication
- Command-line arguments
- External reference (variables, functions) support
- Separate compilation support (SUBmods)
- Menu key commands
- IFF image support
- Better WAVE sound support
- Improved Random Files (using structures)

4. What kind of support/feedback have you received from the Amiga community?

Overwhelming. One of the reasons I've kept developing ACE is because of the enthusiasm, compliments, thanks, and suggestions for improvement I've received from so many Amiga-oids. A number of people have also worked on documentation, utilities and so on. The support and feedback I've had is also a contributing factor to ACE always having been free.

For me, a big honour has been having ACE mentioned and reviewed with mostly positive comments in magazines like Amiga World, Amiga Shopper, and in Dec 96 on the Amiga Format cover disk.

The Amiga Community has always struck me as representing an openness and goodness of spirit which is sadly lacking in the rest of the money-and- power-hungry computer industry today. The technology may be better now, but the vision is lacking in many ways.

5. What kind of Amiga(s) do you develop ACE on?

Two machines:

a. A500 with 5M RAM, 52M GVP HDD, Kickstart 1.3 and 2.04 ROMs.

b. A1200 with Mongoose 68030/68881 accelerator board and Ferret SCSI interface, 6M RAM, 800M Seagate HDD, Kickstart 3.0, Microvitec multisync monitor.

The fact is that 90% of all ACE development was done between 1991 and 1994 on my unaccelerated A500. Comparatively little was done in 1995 and 1996 on my A1200.

Sadly, due to lack of space and lack of use, my A500 is now packed away.

6. It's been quite a while since the last ACE revision. Have you any future plans for ACE or any other developments on the Amiga, i.e. AGA support for ACE?

Sigh. Yes, it has been awhile. September 1996 was when I released v2.4. To be honest, I am uncertain about ACE's future.

I have a LOT of plans for ACE, including AGA support. I'm just not sure whether I want to direct my energies down this path. This is in part because of the current state of the Amiga, in part because of other interests (computing and otherwise), and in part because of other more personal things which have happened in my life to change my motivations and general outlook.

The future of ACE is something which is weighing heavily on my mind right now. I have said in recent times that I need to move on from ACE. I'm not so sure about that actually, but I certainly don't wish to spend all my time on ACE either. Possibilities include:

a. Handing ACE over to someone else completely. I'm hesitant to do this though. I've given away a lot of source code, but I'm reticent to part with ACE's.

b. Getting others to write more of the code and taking on a coordinating role, still writing some of the code myself.

Languages that have grabbed my interest in the last couple of years are:

a. Scheme and other Lisp dialects, e.g. Common Lisp
b. J, a dialect of APL
c. NewtonScript - for programming the Apple Newton PDA
d. Perl - Practically Eclectic Rubbish Lister
e. Java - me and every other programmer on the planet
f. VB/Delphi/C++Builder (environments rather than just languages)

Along with some others. These have changed my ideas about what constitutes good programming language design. What will come of this, I don't know, but for now, I feel that I need to spend time soaking up other people's work and ideas before I attempt to create another language. I want to learn from history.

As to other developments on the Amiga: unlikely. Apart from ACE, I'm using my Amiga for running The Digital Universe (an excellent astronomy program), and generally fooling with languages. I may do some more language development on my A1200, but it is not likely to be an Amiga-only language. You never know though.

7. Do you plan on supporting Phase5's PowerUP or any other future Amiga-like developments including a pOS native version of ACE?

Unlikely. One of the problems here is that ACE's code generator is not sufficiently differentiated from its parser and would best be rewritten to accomodate another target. The rework would be non-trivial.

I learned a lesson from this and in my latest compiler (a message-passing concurrent language based upon C) I used C++ to break the compiler up into objects: lexical analyser, parser, code generator, symbol table manager, such that while it now generates SPARC assembly code, the member functions of just one object would need to be modified in order to generate code for another target. Of course, the same thing could be done in C, but not as cleanly.

I like the idea of a PowerPC Amiga, but I don't believe it will amount to much in today's market (more below).

8. You say you work as a Software Engineer for Motorola Australia, did your Amiga background help in you securing this position?

I mentioned ACE in my CV. ACE isn't perfect by any means, but it's a substantial project for one person's spare time, around 50,000 lines of C and assembly code.

My exposure to 68000 assembly is a bonus I'm sure, since many people don't have assembly experience these days. I'm no assembly guru, but I am fairly comfortable in that environment. I've tried to be honest about my abilities and failings with Motorola. And they _still_ wanted me!

I also spent close to two years working for an ISP writing Internet accounting software and doing system administration which made it possible for the business to make money. Prior to that was time spent in academia, tutoring, lecturing. I imagine all this helped Motorola make a decision.

9. What are your thoughts on Gateway and the Amiga's future?

I think it's great that Gateway 2000 has acquired the Amiga and plans to develop new products. As far as I know nothing has come of this yet though. Will these new products resemble anything like what we've been used to in terms of desktop Amiga machines, or are we talking about consumer electronic devices of some sort, more like the CD32? I'm pretty unclear about this.

Also, while the Amiga is reported to still be BIG in Europe, that has little effect upon mainstream computing in the US or Australia.

I believe the Amiga's future is pretty dim. The issues today are less about hardware and operating systems than about platforms. I'm thinking here of the Java platform. Despite the efforts of certain people, the Amiga has missed the Java boat. As a language, Java is probably a long way from the last word, but it is changing the computing world in ways that the Amiga is not currently prepared for. Are there any Java-capable Amiga Web browsers for instance? Not last time I looked. What about Java development tools? I know there has been an effort by a small group to produce these for the Amiga, but this requires a focus from Gateway.

Although the machine/OS is becoming less important, the fact is that for the end user it's been primarily a three OS world for some years now: Windows, Mac, Unix. Of these three, Unix is predominant on the server side of the Internet (ISPs for instance) and has a big role to play in universities and many computing companies. PCs with some form of Windows (3.x, 95, NT) have most of what's left, with Apple still hanging in there with the Mac, but for how much longer I wouldn't like to say, especially in light of the confusion Apple has been generating in recent times.

I can't help but feel that whatever Gateway or anyone else does with the Amiga is going to be too little, too late. This says nothing about what I want, just what seems to me to be the case.

In 1991, I was an Amiga and Unix bigot. I declared my contempt for what I perceived as the technological inferiority of the PC and Mac. I _may_ have been justified in some ways in having that attitude then, when the Amiga still had the best capabilities of most machines around, but I wouldn't be today. I also hear this kind of thing from Macintosh people who say that Win95 = Mac89 and from PC people many of whom have probably never spent any time with the Mac. But then, bigotry is borne of ignorance.

Which machine/OS is best depends upon your perspective. Here are my current rankings from best to worst of Mac, PC, Amiga, and Unix based upon different criteria (A/B means equal preference):

GUI: Mac, Win, Amiga, Unix (various X-Windows GUIs)
Programming: Unix/Amiga, Mac, Win
Using Applications: Win/Mac, Amiga, Unix
Games: Win, Amiga, Unix, Mac

I'm not as much of a game player as I used to be, so I'm willing to be corrected here on the Games front. The Amiga may be a better all-round games machine, but what about Doom and its ilk? By the way, when I say Win here, I mean DOS/Win3.x/Win95/WinNT.

So, while I love to program the Amiga, if I want to do word processing, or browse the web, I'll probably use a PC. Since most people use applications rather than write programs (in stark contrast to the early 1980s), guess which platforms are likely to be chosen?

When you hear Joe Bloggs talking to Fred Nerk about which computer to buy, they will mention PCs and Macs, but not Amigas. In fact, they're more likely to mention Unix than the Amiga in my experience. It didn't have to be that way, but that's how things are *now*.

In my opinion, short of a miracle the Amiga is on its way to becoming the C64 of the 90s and beyond, and that's a great shame.

You asked. :)

On the bright side, there are still niche uses for the Amiga: TV and film work, general hacking. There are also a lot of loyal fans and a lot of great programs. I'll be programming my Amiga for some years, and I would say, so will many others. If the Amiga _does_ make a big comeback, I'll be the first to cheer. In the meantime, I'll try to give ACErs as much support as I feel able to.

Thankyou for your time and good luck in the future.

This interview is ©Copyright 1997 Paul Morabito. Due to the authors request this interview is not freely distributable or reprintable in any magazine without the written permission of myself (Paul Morabito) and

Back to Amiga Central FeaturesBack to Amiga CentralAmiga Web Directory