Frank Wille interview - June 2006

Do you remember what made you buy an Amiga ? How did you come to coding ? What was your first program ?

I saw a real Amiga for the first time in 1986, after only having read about the new dream computer in magazines. Some friends got it and I visited them a lot to play and experiment with their A1000s.

It was the time of Defender of the Crown, Winter Games, Faery Tale and Test Drive. I was absolutely stunned and fascinated by this machine. I knew I must own one. And in the beginning of 1987 I bought an Amiga 1000, together with my brother.

Maybe it doesn't surprise you that my brother didn't have an easy time to use the Amiga, because I was blocking it the whole day. ;) So about a year later he got his own A500, while I was expanding the A1000 with 2 MB Fast RAM, a 30 MB hard disk, 68010 CPU, flicker fixer, etc..

The fascination for Amiga never disappeared, it was even increasing, the more I learned about the hardware and its great operating system. I had never so much fun in computing as during those 7 years until Commodore's demise, and probably never will again.

I was coding on it from day one, because this is what I always did. I was writing assembler programs since 1983 on the VIC-20 and C-64, so I immediately started learning 68000 and bought the Aztec-C compiler. But for many years my focus remained on pure assembler programming.

My first program on the Amiga might have been some sort of console based input/output test, or just a check for the left mouse button, by reading the hardware register $bfe001. I don't really remember. :)
 

What is VBCC ? Where does it come from ? How did you find it ?

VBCC, usually written in lower-case letters, vbcc, is "Volker Barthelmann's C Compiler". A portable and retargetable ISO-C compiler, supporting ISO/IEC 9899:1989 and a subset of the new ISO/IEC 9899:1999 (C99) standard.

Its big advantage is that it is very compact and easy to port to any platform with an ANSI-C compiler taking only a few minutes. And it supports cross-compiling for 8, 16, 32 and 64 bit architectures.

But vbcc is more than just the compiler - it has grown into a full development environment including a portable assembler for six different CPUs (vasm), a portable linker for eight different output file formats (vlink), a profiler, an instruction scheduler, a library tool, a message browser, etc..

It was approximately 10 years ago (1995 or 1996) when I got email from an unknown guy called Volker Barthelmann, who was interrested in my M68k assembler "PhxAss". Some mails later he asked me if I wanted to test his C compiler, which he had just written. I couldn't believe that a single person could write a usable compiler in his spare time, but I was curious and had a look.

The compiler was not perfect at this early stage, but it was at least on the same level as DICE-C, for example. Over the following months I started to use vbcc for my own projects, as I didn't have SAS/C, my Aztec-C was too old and no longer supported and I never liked GNU-C, which was too Unixish in my opinion and behaved like an alien under AmigaOS.

In the following years I got more and more involved in the vbcc project, after my 68k assembler PhxAss and linker PhxLnk became part of it. In 1997 I started to write the portable PowerPC assembler "pasm" and the portable multi target linker "vlink" for vbcc, which was the basis for adding PowerUp and WarpOS support to vbcc a short time after.

From there on we were a two-man team. Volker concentrated on the vbcc compiler core, while I was working on the assemblers, linker, startup-codes and libraries.

Volker left the Amiga long ago and is working under Linux. I never left my "great love" and I'm still doing all the development work on Amigas. We have a contract so I can release vbcc versions on all Amiga-like operating systems whenever I want, while Volker has the right to publish or sell the compiler outside the Amiga market including my tools (e.g. in the embedded chipset market).
 

GCC is a wordwide used compiler. What about vbcc ? Do you have an idea about its popularity ?

I have no exact numbers. It is normal for a freeware product that you will only get feedback when the user is intensively working with it and has run into a serious bug, which he would like to have fixed.

There is quite some feedback of this kind but we can only estimate that the number of users may be some factors higher.

The userbase for vbcc is worldwide and used in many different environments. The major part consists of Amiga users, I guess, but we also get contacted by people using vbcc in an embedded chipset environment (especially with C16x, HC12, PPC or Coldfire backends) or as a cross-compiler under Windows. Some are even writing new backends for it, supporting their own CPUs, or are using it for educational purposes. Some time ago, we were contacted by a Professor from Vietnam who used vbcc in his lessons with C16x CPUs.
 

Do you compare vbcc with GCC (or other compilers) in order to compare the generated code, the compilation speed ? Which one is best ? :-)

Of course we do comparisons, from time to time and typically gcc is the compiler to compare with as there are many similarities. By making these comparisons, we have the chance to make better in vbcc what we don't like in gcc.

Generally a comparision between gcc and vbcc is not fair. There are hordes of, mostly payed, programmers behind gcc, where we are only two. So in many situations you will end with gcc generating the slightly better code. It would be a shame for them if it wouldn't be the case.

But still there are situations where vbcc is better. Especially compared with the older gcc2, vbcc's PPC-backend often produces much faster code. You can see some benchmarks on our benchmarking pages.

The main advantage of vbcc is the simplicity. It is very easy to port to any platform and use it as a cross-compiler where ever you want. The interface is well documented and you can add new backends in almost no time. It is a very lightweight compiler which doesn't clutter your harddisk with dozends of Megabytes, spread over many directories. For example, the complete OS4 version with binaries, libraries and header files is only about 1.8 MB. 
 

Do you work on other projects than vbcc ? Tell us more.

No major projects, but from time to time I like to port software to the Amiga. Mostly games, but also emulators (STonAmiga) or development tools (cvs). Maybe most know my Quake and QuakeWorld ports, which reach an acceptable speed due to massive assembler optimizations. It is by far the game port I spent the most time on.

I'm also interested in NetBSD. All my machines which are not running AmigaOS or MorphOS are running NetBSD but besides contributing support for a new network interface chip, I didn't have much time to go deep into kernel hacking.

I started to port NetBSD to the Pegasos together with programmers from Spain, USA and Denmark, but unfortunately we didn't seem to have enough time and/or experience to finish it.
 

As vbcc is used by some OS4 components, it leads to another famous question: what do you think about OS4 and what do you miss the most in it?

A dangerous question. No matter what I say, I will get trouble from the red and the blue fraction. :)

Therefore, I have to say in advance that I make no difference between MorphOS and OS4 and that I will continue to port all my software to both operating systems, when possible. 

As I know more or less the current state of OS4 I would say that the big advantage of MorphOS has disappeared over the years. I'm not up to date with remaining problems with A1 device drivers so I won't comment on that, but on my CSPPC board it looks very stable to me and there is not much I would miss. I like the RoadShow TCP/IP stack of OS4, which is a weak point of MOS. I'm using MOSNet there, which is not really comparable. 

Then there is the sad hardware problem. Even the best OS has no value without hardware to run it. I've had a Pegasos2 for three years, which would make a very good OS4 hardware too. But we all know the difficulties.

On the software side OS4 is missing the same as all Amiga-like operating systems do: an up to date browser, GIMP, Java and perhaps an office suite. Although I could live without the last two, but others won't.
 

You still produce PUP/WUP binaries. Do you plan to support these for long ? With MOS and one day OS4, one could wonder why you do such an extra work.

That's right. I won't support them forever. But as long as there are more BPPC and CSPPC owners than Pegasos and AOne owners, it makes sense. I would prefer to drop support for PowerUp-boards soon, as it takes a lot of extra effort to produce those versions. Maybe I will start supporting AROS instead. The first experimental vbcc compiler for AROS/x86 is already in testing.
 

As a developer, what do you like/dislike in OS4/MOS ? (tools, debugging, API...)

The new interface API of OS4 is a nice idea, but the disadvantage is the increased incompatibility to OS3.x and MorphOS APIs. Generally it is always much more work to port something to OS4 because of several modications and fixes in the header files. Also, it's more difficult to keep software portable to all platforms.

The SDK and the debugging tools are a strong advantage of OS4. The SDK is constantly updated and having tools like the gdb debugger is extremely important (although the last gdb versions I tested didn't accept vbcc's DWARF2 output).

Developer documentation for OS4 is also ok and this is someting I really hate in MorphOS! There hasn't been a new SDK in years and the autodocs I have only describe MUI, CyberGfx and some Exec and Intuition extensions. A lot of functions and parameters are not even mentioned, and when you're lucky you find some defines in the header files to experiment with.

I also like it that OS4 uses real ELF executables, which looks a bit cleaner than treating relocatable objects as executables.
 

Questions to Volker Barthelmann:

Do you have anything to say about vbcc, any updates in the future ? Either for C++ or for other features ?

Generally, there will likely be continuous work on vbcc in the future just as it has been in the past. While Frank is the driving force behind the Amiga-related features, I mostly work on (apart from modifications on the compiler core) improvements regarding embedded systems and some research with vbcc. For example, I am currently co-advising a university student who is writing a thesis involving vbcc.

There are plans (and actual work has been done) to add EC++ (Embedded C++, a subset of C++ for embedded systems) to vbcc. However, there are no plans at the moment for full C++. Due to the amount of work necessary, this is probably not going to happen unless someone is prepared to pay for it.

So, to everybody using vbcc: Have fun!

Tags