[an error occurred while processing this directive]

Amiga SDK


by Stefan Zivkovic July 2000

Preface

I got my Amiga SDK 10th of July 2000, right on my Birthday, I was probably the first in Sweden to get one, or at least the first that was sent from Sweden. I bought my copy from GGS-Data, and got it a few days later.

In this site I will post some of my and other people ideas and toughs about the newly released Amiga SDK, this page is a live document, and will probably change from now and then. All info of this page is considered "as it is", it can be false, but I try not to be.

If you have something special you wonder about the amiga SDK please let me know, so I kan test it for you, or if you have any benchmarking java/c programs that I can test.

Site History

2000-07-12 Page created.
2000-07-13 Added info under Shell and Java.
2000-07-15 Spelling correction.
2000-07-18 Added info under Shell and Java. Added amigasdk.zingo.org to the nameservers
2000-07-19 Java speed test
2000-07-20 More Java speed test
2000-07-26 More Java info again
2000-07-29 Java mp3 benchmark
2000-08-01 Added test from jdk 1.2.2 and IBM 1.1.8 jvm
2000-08-09 Added a Programming C section
2000-08-18 Added info about program porting
2000-08-23 Debuging info
2000-08-24 .lib problem solved, updated Bash progress

Amiga SDK First impression

The package comes in a standard "computer game" box. I contains a Book, a CD, a few notes and a car bumper sticker. The book has a simple and clean design, It has the "Constructing Boingball" on the front. The CD has the same picture on the box, and the CD itself has a white surface filled with boingballs. The bumper sticker is also with white boingballs.

The Book

My first impression was positive, I did not have my redhat installation quite up yet so I started to read the book. The book has a simple layout, chapters could be more clearly marked and most of the pictures looks like they needed some more work. But the context of the book seems well suited for developers with some experiences. The language is simple and easy to understand (for me that is anyway).

The installation

Installation was easy, just executing a setup program on the CD, it opens up a small window. During the installation you need web access, to get some Developer ID and a unlock code to install your copy.

The moment of truth

The intent shell is started with "intent_shell" from a linux shell prompt, this start the "Amiga 1.0" shell. The shell was easy to use and not in the way like DOS is. After a mater of minutes I manage to find the freeball example and start it. It opened up a new graphical window were a nice old boing ball bounced around. From this window I manage to start all the nice programs that you have seen on the other screen shots.

Shell

Shell is a zsh look alike. I found it very intuitive and easy to use. Some commands differ from the old amiga like
OperationNew AmigaClassicUnixMSDos
Benchmarkspeedn/an/an/a
Concatenate filescatjoin,typecattype
Copy text to stdioechoechoechoecho
display datedatedatedatedate,time
Exit shellexitendcliexitexit
List filesls,dirlist,dirlsdir
RebootshutdownCtrl+Am+Amshutdown,rebootCtrl+Alt+Del
Run javajcoden/ajavajava
Helphelp,htmln/aman,infohelp ?
There is a text/lynx-like html viewer for internal documents, named html. Speed is a small benchmark program, running it on my computer, a PII 128 MB running amiga hosted on a Redhat 6.1 outputs:

Amiga 1.0:/demo/example/j$ speed
VP MIOPS  = 678.730032
VP MLOPS  = 161.562613
VP MFOPS  =  71.482173
VP MDOPS  =  39.633851
Amiga 1.0:/demo/example/j$ 
And the manual explains: "The rows show how many millions of these fundamental integer, long, floating and double operations can be performed every second."

Running things in the same directoyr is done with a ./ before the command, this indicates that the current path "." should be searched for the command. The concept of searchpath does not seem to work, everything is almost done via the "root" entry in the filesystem, this I hope will change realy soon.

Programming C

In this section Ill try to explain some info as a port a linux program to elate/amiga.

The C compiler is a version of GCC that has been ported and changed to output VP Asm as its object format, this means that the .o files are readeble by an ordinay texteditor, I even manage resolve a an missing function error during linking, by looking into the .o file for the requested function. This should have been harder if the .o files were in the usual binnary format since the function was hidden in a macro. I miss som good document on the standard C function that are supported. You could do a "help " like "help printf" but thats only good if you alredy know what function you should use. I assume that this can be found somwere but I have not found it yet.

Another problem I discovered is that I had problem running the configure scripts, but since I have no big experience in shell scripts, I did a configure on the linux side of things for the moment. This gave me a lot of porblem since the configure script on the linux side generated a config.h file that was full of error. Man idea was to port gnome so that all gnome programs like gimp could bu ported easyly later, but since gnome is made of a few diffrent projects like glib, gtk+, gdk and everytime I had to generate new makefiles and change the config.h file this was not a very clean port, so I decided that I should start over from scrach using the lates sources from the CVS repository. To make the port as clean al posible I should have perl ported also since it is used to generate some stuff in the gnome sourcetree, so I downloaded perl and again I can not run the configure script. I decided that I had it with the elate-zsh lookalike and started to port bash to see if this helps. And again I can not run the configure script as bash needs a sh/bash shell as stated above. Why cant people make plain makescripts that are not generated. Well right now I have compiled bash but it crashes when I run it. To create arcives of .o files there is a version of the unix ar called vpar.

Debugging C Programs

Debuging is right now a pain in the ass, I have not found a good way to debug on sourcelevel, and the included ebug seems to debug on the x86 level which makes it a little to lo-level for me. right now I use printf() statements to debug, if anyone have a better method please let me know.

Java

Amiga Java supports the Personal Java 1.1 libraries, (1.1.6 API) java programs is started with the command jcode. Compiling java programs are done with javac and it works as the javac command from the JDK.

Big and nice differences from other Java technologys out there is that the Tao/Amiga java translate rather than interprets the Java byte code, and it does it at load time rather than run-time as other JIT/virtual machines does. The garbage collector is interruptable, which makes java more useful under real time operations. It should also use less memory since it uses the individual tools rather than classes. There is also a command call translate that seems to translate java byte code to VP byte code.

I have not got a list of differences in the class library of Personal Java compared to the Java 2 platform. But keep in mind that there probably are small differences, meaning that this version will not run all Java programs out there, but this is not confirmed yet.

I hade a problem to run the java compiler this seems not to be included in the package, to solve this I put a note on this at the Amiga FAQ-o-matic. and a while later I got this reply:

"I was also able to get this to work by installing the classes contained in the classes.zip, however, I only extracted those classes contained in the sun.tools package. The classes contained in the java.* packages were already in place and pre-translated into VP bytecode which presumably will perform better when used by other classes at runtime. I gather from the printed documentation that the included Java development environment is based on 1.1.6. So to be on the safe side I downloaded the JDK v1.1.6 from Blackdown (www.blackdown.com). Note that Sun is now distributing 1.3 (1.1.6 is over a year old now)."

Puting the sun/tools in your user cataloge will make then show up under the amiga environment. This worked for me. Now I manage to use the compiler to compile a simple Hello world kind of program. I alos used the translete tool to tranform the Hello.class file to VP code and the following showed up in a direcotory with the same name:

demo/example/j/Hello.java
demo/example/j/Hello.class
demo/example/j/Hello/class.00
demo/example/j/Hello/data.00
demo/example/j/Hello/fixup.00

To be sure that the transformed VP code was run I renamed Hello.class and typed

jcode demo/example/j/Hello
And it still worked.

Java Speed

I manage to run the CaffeineMark 3.0 thanks to Softmetal (Vesa Tuomiare) at http://www.devicetop.com for pointing this test out for me. My test result was 3354, but his was little better at 7259 points.
Linux Redhat 6.1Windows 98
TestAmiga SDK 16bitAmiga SDK 24bitJDK 1.2.2 RC4 24bitIBM 1.1.8 24 bitNetscapeIE
Sieve: 59745985 47707151 5033 5995
Loop: 1392215404 623821874 1492221859
Logic: 94409465 9366n/a 8760 149630
String: 1713316496 35588891 1059 4355
Float: 46695042 348617963 1241624268
Method: 96949731 715317220 7161 9794
Graphics: 1115 600 12162089 969 907
Image: 2052 1310 181 977 638 593
Dialog: 340 97 153 161 208 303
Total score:42713354 2111n/a 2713 5301
Comment:I did not manage to run the test under kaffe, and under netscape it crached halfways.
I have now redone the table adding test from JDK 1.2.2 RC4 and IBM 1.1.8 both using a JIT. The problem with the Logic test under IBM jvm is that it is to big, and the number are off screen, I did not for some reason get a total but I hve got little above 8100 in an earlier test. The IBM jvm uses the appletviewer from sun. Using this on my machine running Windows 98 gives another result, Netscape was a lot slower in the string test but faster in the floating test, faster graphica and dialog, but this was expected since I have an old X11 (3.?.? something) and not the latest driver for linux. Despite this the Image test was much slower then in the Amiga SDK, this is also true about IE.
IE is faster on all test exapt the string and the Image test. Especially notice the Logic test were IE have 2 more digits in its test result. This test was done to test optimization of redundant code by the JVM, this is not considered by the Java translator in Amiga SDK Java environment as this is a task for the compiler. This has been pointed out to me by both Rudi Chiarito and Fleecy Moss at Amiga Inc. Mr Chiarito also writes the folowing:


From: Rudi Chiarito
To: amigasdk@zingo.org

I read your review of the SDK. There's a couple of things that I would point out about CaffeineMark, which I learnt from Tao when I mailed them similar results a few months ago:

a) Loop/Logic. One of the tests (or both, I can't recall the details right now) is supposed to measure how good the JVM is at optimizing away some redundant operations. Tao's JVM scores poorly at it (or, again, at both) because in real life such optimizations are useless, as any decent Java compiler will have already performed them when generating the bytecode.

b) the x86 translator currently shipped is not optimized, as it's just a development version (other translators are more mature and thus perform better). In particular, the floating point code is sub-optimal and this shows in the "Float" test. A new generation of the translator is in the works and you should be able to get higher performance.

Furthermore, the difference between "SDK 16 bit" and "SDK 24bit" can be explained, I think, by the fact that the SDK as shipped works on a 16bit buffer (this is not a limitation, it's just the way it is configured by default). On a 24bit setup, of course, this introduces a further step when doing the final rendering to the X buffer. I suppose that you could get better results in 24 bits if intent itself were configured to run at the same colour depth (I haven't checked yet - too much work lately, even for such a simple thing).

As to Netscape, it has one of the buggiest JVMs around. It crashes on me at least four times a day. Sometimes I leave a window open on a page with a Java scrolling banner and it crashes by itself after 30 minutes or so. ;)

Thanks for listening. :)

Here is another test done by Denis Tumpic (dtumpic at devicetop.com) comparing Linux/Solaris and SUN/Elate and the JIT from IBM.
Linux 2.2.12 XFree86 4.0 16 bitSolaris 8 Xsun 8 bit
TestAmiga SDK 1.1.6SUN JVM 2.0IBM JIT 2.0SUN JIT 2.0
Sieve: 4463 589 5746 3654
Loop: 11526493 41197 7504
Logic: 6381 586 5018848084
String: 13531100117765 8591
Float: 3786 522 37979 4724
Method: 7297 548 20284 6046
Graphics: 858 951 1187 850
Image: 1644 128 170 97
Dialog: 273 141 113 163
Total score:3306 457 6934 2080
He runned the test on a PII 350 MHz with the amiga speed result:

Amiga 1.0:/$ speed 
VP MIOPS = 509.455904 
VP MLOPS = 124.948903 
VP MFOPS = 49.953047 
VP MDOPS = 30.583368 
Amiga 1.0:/$ 

I also decided to make a more numbercrunching test so I downloaded JavaLayer a MP3 decruncher from www.javazoom.net i used version 0.0.7.
MP3Amiga SDKKaffe 1.0b4 JDK 1.2.2 RC4 sunwjit IBM 1.1.8
frames 8472 8472 8472 8472
time (ms) 194485507670 632523 208635
ms per frame22 59 74 24
As you can se AmigaSDK preformes about 2.5 times faster than kaffe, 3.2 times faster then Sun 1.2.2 and a little faster than IBM jit 1.1.8.

Documentation

I liked the documentation, I have only read a few pages, but the level of the documentation is perfect, it seems to explain rather complex thinks easy, that will be good both for the advanced user and the beginner. Remember that I have only read a few pages. I have not yet checked the manuals on the CD.

Overall

I got everything install very late yesterday so had only a few minutes to play with it, but in a mater of minutes I manage to find the freeball example (Boingball) it started the gfx and therefrom I manage to start all stuff as seen in the other screen shots from a menu. All the window effects are cool, I cant wait for the mp3-player skins.

Future

I will start to test it more, like starting some java programs. Ill try to update this site soon. Right now I would like to test the same algorithm min both java and c and maybe in VP, on both linux native and inside the amiga environment. If you have any Idea for a small benchmark programs, please let me know. I you have some thing you like tested please let me know, but keep in mind that I does this on my free time and will only do things that I want and in my own speed.

Who is Stefan Zivkovic?

Im a Computer Consultant working at Enea Realtime AB, mostly working with OSE (an RTOS) for customers. I have a long background from Amiga, I bought my first A500 in 1987, and still turns on my A4000 now and then. My education a degree in "Master of Science in Computer Science and Engineering" at University of Lund and LTH. Some of my old work can be found on my web site http://www.zingo.org.

Comments

You can mail me about this site at amigasdk@zingo.org.

Links

http://www.amiga.com Amiga Inc
http://www.amiga.com/faq.html Amiga Inc Faq, with a lots of info on problems and solutions.
http://www.devicetop.com Nice page with some forums
http://www.amigactive.com Amiga Magazine
CaffeineMark 3.0 A Java test used.

[an error occurred while processing this directive]