1 Introduction1.1 What is AmiBlitz³?
AmiBlitz³ is a free, open-source programming language for AmigaOS3.x and
compatible. It comes with its own integrated development environment called
PED (Program EDitor). PED includes a texteditor, multi-source handling and
various browsers for functions and documentation. The compiler itself is
called AmiBlitz³ and generates 68K executables or shared libraries.
Executables can be debugged using a source code level runtime debugger.
There are two types of runtime libraries, the so called BlitzLibs
(68K static libraries) and the Includes (source code libraries).
1.2 Design Issues
AmiBlitz³ is the non-commercial follower of BlitzBasic2 on the Amiga,
published by AcidSoft. BlitzBasic was designed to develop games for Classic
Amigas, with direct support for the classic hardware, such as OCS/AGA
chipset or Paula for audio. Over the years, especially when BlitzBasic became
Amiblitz, the system conform parts were more and more developed, leading to
a programming language that can be used for other hardware too, such as x86
running Amithlon or WinUAE, PPCs running AmigaOS4 or MorphOS, as long as the
OS API is compatible and the OS is able to execute 68K code.
The runtime libraries of AmiBlitz³ are splitted up into:
AcidLibs (BlitzLibs)
AcidLibs are the original BlitzLibs (something like "linker" libs)
from AcidSoft. All the basic functionality can be found here, that AcidSoft
wanted to have in BlitzBasic.
The AcidLibs (like all other BlitzLibs) come as binary 68K code and are
automatically loaded during IDE startup. There is no need to link/include
them manually.
DefLibs (BlitzLibs)
DefLibs are BlitzLibs that extent the functionality on certain topics, most
of them are 3rd party developments and were intended to be configurable
via the "MakeDefLibs" tool.
However in reality, and to keep the source code cross-installation
compatible, they are part of the distribution and should not be changed
anymore, if there is no vital reason to do so. It is very likely that there
won't be any new DefLibs in the future.
AmigaLibs (BlitzLibs, aka FD-Converted Libs)
AmigaLibs are BlitzLibs too, but they do no contain real code, they are just
wrappers to integrate an Amiga Shared Library into AmiBlitz³.
The AmigaOS3.x API plus some other important Shared Libraries are
integrated that way. All AmigaLibs are part of the Deflibs.
Includes (Source Code)
Includes are NOT BlitzLibs. They are AmiBlitz³ source code files that are
included (usually at the beginning) in the source code of a program.
Unlike BlitzLibs, they are coded in AmiBlitz³ and not in 68K Assembler.
This makes them debugable, user-expandable and, in the future, maybe
CPU-retargetable.
BlitzLibs have the followig shortcommings:
- maximum 128 tokens (instructions/functions/directives/keywords) per library
- maximum 256 libraries installed at the same time
- fix IDs for libraries (most of them are already in use)
- coded 100% in Assembler, bad maintainability
- many BlitzLib source codes are not available and are not maintained anymore
This is why future projects should use Includes to expand the runtime of
AmiBlitz³.
Includes are always included on source code level and therefore maintainable.
There is no limit for the amount of includes or their tokens.
Amiga Shared Libraries can be made availabe in AmiBlitz³ programs as Includes,
like the SDL.library, bsdsocket.library or amissl.library.
1.3 Comparism AmiBlitz³, C and BASIC1.3.1 How does AmiBlitz³ compare to BASIC?
Pros:
- AmiBlitz³ compiler is insanely fast, the fastest compiler I have ever seen.
- AmiBlitz³ generates highly optimized 68K code, probably much faster than
any BASIC dialect does.
- AmiBlitz³ allows forced variable declaration.
- huge Runtime Library (BlitzLibs/Includes)
Cons:
- AmiBlitz³ does not conform to BASIC standards.
(your BASIC specific knowledge is pretty much useless).
- AmiBlitz³ is only available for AmigaOS3.x and compatible.
1.3.2 How does AmiBlitz³ compare to C/C++?
Pros:
- AmiBlitz³ compiler is much faster than e.g. GCC.
- AmiBlitz³ does not use ";" (semicolon) to seperate expressions.
Authors' opinion: Generally, the semicolon as an expression delimiter is
a good idea, but practically it creates unnecessary attention
the coder has to pay.
- An AmiBlitz³ project is much simplier set up than a C makefile.
(actually, you just compile the main file)
- Every source code file can have a build-in demo that is ignored if the
file is used as an include (#__include compiler constant).
- Strings are primitive types and as easy to handle as integers.
- AmiBlitz³ is less complex and higher leveled.
- Variables can be declared during usage, in 68K ASM style by using
a type extension (a.l = 0), no declaration monsters like
"unsigned static const char * myVar".
- Variables are initialized, no random bugs due to uninitialized variables.
Cons:
- C is widely spread and much more examples and documentation is out there.
- C is available for almost every OS/CPU.
- AmiBlitz³ does not support object oriented programming.
- AmiBlitz³ is not type safe.
- AmiBlitz³ does not allow forward declaration.