[1m© HAAGE & PARTNER Computer GmbH [0m

  Mainzer Straße 10A
  D-61191 Rosbach.
  Germany

  Tel: ++49  60 07 / 93 00 50
  Fax: ++49  60 07 / 75 43

  Internet: storm-support@haage-partner.com
  Homepage: http://www.haage-partner.com

First of all we want to thank you for purchasing StormC. So you told
us that we did the right thing by developing StormC.

[7mThese are the changes in comparison to Version 1.1:[0m
======================================================================

[1m[33mStormShell
[0m
- Expandet optiondialog
- GoldED 4.0 is includet in the package

[33mProject Manager
[0m
- Make of hierarchical projects
- Own ARexx-Makescripts
- New project section for StormLibrarian

[33mStormEd
[0m
- bracket-check
- block indent
- new colour controls
- new project template

[33mStormRun
[0m
- Stack and CPU register window
- Disassembler
- Profiler

[33mStormC
[0m
- new optimisation levels
- new keyword "__interrupt"

[33mStormLibrarian
[0m
- simple creation of linker libraries
- Sort function

[33mTools
[0m
- FD2Pragma


[7mEditor Key Map:
************************[0m

Shift-Cursor Up/Down
        Moves the cursor to the first/last line displayed in the window.

Shift-Cursor Left/Right
        Moves the cursor to the first/last column of the current line.

Alt-Cursor Up/Down
        Jumps to the start/end of the text.

Alt-Cursor Left/Right
        Moves the cursor to the next word in front of or behind the cursor.

Shift-Delete oder Shift-Backspace
        Deletes the line the cursor stands. It is stored in the clipboard.

Alt-Delete
        Deletes the line starting form the position of the cursor to the end.

Alt-Backspace
        Deletes the text from the start to the cursor position.

Help
  Opens the Online Help and displays an explanation to the word under the cursor.
  The word must be an ANSI-C or C++ standard function.


[7mAdvices to PhxAssembler
************************[0m

As a bonus the freeware assembler FreePhxAss is delivered with
StormC. It is mainly for useful for developers of PD compilers which
use it for translation of their compiler output. The function size
is *very* limited: There are no macros, no includes, no conditioned
assembling. Many directives are also not available. 

FreePhxAss can be used freely, but the name of the Author should
be mentioned in the project.

If you are interested in PhxAss, there is a registered version that
is available at a low price.

Please contact

SMail:                  Frank Wille
                        Auf dem Dreische 45
                        32049 Herford
                        Germany

EMail:                  frank@phoenix.owl.de


[7mSome Frequently asked Questions and Answers !
*****************************************[0m
Q 1:
********

[7m[33mWhy has StormC no Global Optimiser" ?[28m[[0m

Answer:
The compiler of StormC offers already a good optimisations. Some of
the used techniques are also part of a global optimiser. Especially
the optimised organisation of the global CPU and FPU registers is such
a one.

StormC is already prepared to do more of the global optimisations in
further versions. They can be implemented step by step. But as said
before the optimisation of StormC and StormLINK. 

Q 2:
********

[7m[33mWhy does a small "Hello World" gets so long (some Kbytes) ?[28m[0m

Answer:
"Storm.lib" is a highly compatible ANSI C library that offers buffered I/O.

The program "Hello World" uses "printf" of the "Storm.lib", but it
does not differ between the output of integer or floating point, so
there are unused parts of the library in your code that makes small
programs relatively large.

If only ANSI C is used the library "StormAmiga.lib" can be used. This
is a highly optimised assembler library that generates very small and
fast programs. It only supports "far code" and "far data" model.

Q 3:
********

[7m[33mHow can I get a short "Hello World" using Storm.Lib ?[28m[0m

Answer:
If floating point is needed and buffered I/O of AmigaDOS is enough
AmigaDOS functions can be used for this. "Vprintf" and "VFPrintf"
will directly output to AmigaDOS files, just like "printf". But these
functions are not 100% ANSI compatible.

Another possibility is to resign on automatically open and close of
libraries and its comfortable error handling which differs between
Workbench and CLI start while paying attention to OS 1.3 and older.
This comfort is not necessary for all programs.

So a minimal startup code, written in assembler can be used, that only
does the essential jobs, e.g. only supporting the small data model,
not supporting resident programs ...

Q 4:
********

[7m[33mWhy is the library "storm.lib" such a big one and why is there
only a single one (in contrast to SAS/C) ?[28m[0m

Answer:
StormC support a further developed object format that is used for
linker libraries as well. It is 100% compatible to the old one. Its
advantage is that the Linker and the Compiler of StormC can accommodate
more data models in one object file. So the programmer must not decide
which is the right library that fits the used data model (far data,
near data(a4), near data(a6)). This caused many errors. Now the linker
takes the needed parts out of "Storm.lib". For these reasons "Storm.lib"
is nearly as big as these three libraries of SAS/C.

In the future StormC will support even more code modells and CPU and
FPU models, so "Storm.lib" will allow the optimised program generation
automatically.

Q 5:
********

[7m[33mWhy does the linker displays the error message "Symbol _exit
not defined", when linking as Shared Library ?[28m[0m

Answer:
The Shared Library calls the ANSI function exit(). This can be done
directly by the programmer or indirectly by the linker library which
uses this function. "Storm.lib" uses this function to automatically
open the used Shared Library, e.g. the "utility.library".

Basically a Shared Library is not allowed to use exit(), cause it
can not be finished simply.

How to avoid this call ?

You should not use the automatic opening of used Shared Libraries.
Instead you must open and close the library as it is described in
the manual.

To get a list of all used libraries you should include

void exit() {}

into the Shared Library. Now you can link it.

You should use the linker option "Write Map File". The linker will
generate a file with the extension ".map". Now watch all INIT
functions which contain the basis name of the Shared Library, e.g.
INIT_1_UtilityBase.

Now open all these libraries with your own routines. Pay attention
to declare the corresponding basis variable (e.g. UtilityBase). Do not
forget to remove your own exit() function from the source. 

(c) HAAGE & PARTNER Computer GmbH - We develop to WarpUp the AMIGA

