First low-cost ST C languageReviewed by Patrick Bass, Antic ST Program Editor
A lot of ST Owners have been waiting for this. At $59.95, Haba Hippo-C is one of the lowest-priced C packages in the computer industry. A quick survey of C languages for the IBM reveals prices ranging from $200 to $500. And currently the only ST competition is the C in the $300 Development Package from Atari. This makes Haba Hippo-C a pretty attractive buy.
And you get a lot in the package. Besides the compiler and linker, there's a text editor (seldom supplied with most C packages), an assembler, some example programs and an operating system!
Haba Hippo-C is a very good beginner's C. Everything is on one disk and the slim, TV Guide-sized documentation is far from the typical, overwhelming technical documentation found with most C's.
Beginners who pick up a C tutorial from the local computer bookstore will have few problems using Hippo-C to learn standard C. The compiling and linking is fairly straightforward. We only wish the ST development C was this easy!
NO FLOATING POINT
But Haba Hippo-C is a mixed bag. You get a lot for your money, but you also get what you pay for. For one thing, Haba Hippo-C has no floating point capabilities. Beginners might be able to live with this for awhile, but experienced C programmers will quickly throw up their hands.
The documentation, while clear and friendly, is mercilessly brief. The supported GEM VDI and AES calls are listed, but no explanation is made about how to use them. The same is true of the BIOS and BDOS routines.
Instead, the back of the manual suggests that you may obtain the ST Developer's Package from Atari for information on AES and VDI. But presumably Hippo-C is purchased for its low price. After buying the Developer's Package which includes a full implementation of C who is going to continue using a subset such as Hippo-C?
Most of the VDI calls are included in this implementation, but some AES calls appear to be missing. I say "appear" because some of the calls have been re-named. Then again, since there is no real documentation on the Hippo-C calls, we're not sure what they do. They may be brand new.
Again, we're in the same boat with the BIOS and BDOS routines. It's hard to tell which are missing or renamed since practically all of them have been altered.
Extended BIOS routines are missing altogether. If you really know your stuff, you can write your own routines. But those who can do this will probably want a more powerful implementation of C.
C was originally developed in the late 1960s by Brian Kernighan and Dennis Ritchie for use with the UNIX operating system a text-command, shell-oriented system with "tree-file" structures. The developers at Hippopotamus have decided to maintain this UNIX structure for Haba Hippo-C and have included a subset of UNIX with their package called HOS (Hippo Operating System).
The decision to stay with the UNIX structure was prompted, no doubt, by a desire to transfer Hippo-C to the ST as quickly as possible. But we think it is a major mistake. It's wonderful to get a completely new operating system thrown in with a $59.95 C package. But a UNIX-based C causes problems for a computer based on CP/M-68K, such as the 520ST.
The incompatibilities begin with the Haba Hippo editor. It will not properly accept straight ASCII files written by other ST editors. The problem seems to be that it uses line-feeds instead of carriage returns. And, of course, you cannot SHOW a text file from the Desktop if it has been written with this editor.
More importantly, end-programs written in Haba Hippo-C must be run from either the GEM desktop or from HOS, but they cannot be run from TOS.
GEM COLOR CASCADE
Let's look at what happened when we tried running Antic's first published C program, GEM Color Cascade (October 1985).
We figured this was a short and simple program that should cause no problems. Wrong. First, the editor would not accept our source code file, since it was written with the Mince editor. So we retyped the whole program only to have the compiler spit it back because we were using floating point and attempting to access XBIOS for random numbers.
The C compiler supplied with the package is a subset of standard Kernighan and Ritchie C. Data types include char, unsigned char, short int, unsigned short int, int, unsigned int and pointer. Hippo-C uses all standard unary, arithmetic, bitwise, assignment and logical operators.
As mentioned, Haba Hippo-C does not support floating point. Nor is it able to pass or receive structures from procedures.
The MC68000 assembler that comes with Haba Hippo-C is primarily included to assemble source code generated by the compiler. But it can be used for directly assembling code written by the editor.
The assembler supports full Motorola opcode mnemonics and all of the 68000's addressing modes. It will accept ten directives: .byte, .word, .long, .ascii, .even, .text, .data, .bss, .space(n), and .global. Only two expressions are legal: "label + n" and "label + -n". Seasoned assembly language programmers will find this limiting.
The linker has the job of combining object modules (the .o files) produced by the assembler into one executable object code file called "a.out". This again is UNIX standard. You can choose either to link your program to run from HOS, which is default, or from the GEM desktop.
A maximum of 50 files may be linked together and you may link to files on other disks by preceding the filename with the proper disk drive specification.
Batch files are supported by HOS. These files contain sequences of instructions that are commonly typed by the user to perform some task. By using batch files, the user can direct the computer from a series of instructions within a file and avoid typing the same instruction list over and over.
HOS batch files may be passed as many as ten arguments, labeled from $0 to $9. For example, If we had a batch file set up for compiling a program, we could pass the program name to the batch file by typing the batch function name, a space, and then the filename. In the batch file, wherever the $0 appears, it will be replaced by the filename.
Haba supplies eight sample programs on the disk. These are simple programs, but they do show the basics of getting a program up and running. User may edit these files as they like, and use them as the base for their own programs.
Unfortunately, no description or analysis of the programs is in the documentation, and the source code cornments are skimpy at best. While they are short and basic, beginners might like some explanations. And these are the only examples of GEM programming in Hippo-C.
When an actual comparison between Haba Hippo-C and Digital Research's Alcyon C is made, some things stand out. For example, Hippo-C can compile, assemble and link a given program in half the time of Alcyon C. But the fmal Alcyon program will run roughly twice as fast.
And Hippo-C is more convenient. When errors during compilation are encountered, the editor may be reentered quickly, rather than having to swap disks as with the Digital C.
Overall, Haba Hippo-C is a good package for a newcomer to C programming, but it may be weak for the seasoned C'er. For the price, an editor, a C compiler, a 68000 assembler and a linker are a very good buy. At this time, Hippo-C is one of only two available C languages for the ST. We expect this to change, but we do not expect a full implementation of C to reach the market at anywhere near $59.95.
The final verdict? It's up to you. If you would like to learn C, this could be the package for you. However, if you've tasted a full implementation of C elsewhere, you may feel constrained by Haba Hippo-C.
HABA HIPPO-C Haba Systems, Inc. 6711 Valjean Avenue Van Nuys, CA 91406 (800) HOT-HABA (USA) (800) FOR-HABA (Calif.) $59.95