home *** CD-ROM | disk | FTP | other *** search
- © HAAGE & PARTNER Computer GmbH
-
- Mainzer Straße 10A
- D-61191 Rosbach.
- Germany
-
- Tel: ++49 60 07 / 93 00 50
- Fax: ++49 60 07 / 75 43
-
- Compuserve: 100654,3133
- Internet: 100654.3133@compuserve.com
- Homepage: http://ourworld.compuserve.com/homepages/haage_partner
-
- First of all we want to thank you for purchasing StormC. So you told
- us that we did the right thing by developing StormC.
-
- These are the changes of Version 1.1:
- ======================================================================
-
- StormShell
- - new smaller GUI
- - new options
- - code dependent object-file storage
- - prevent of INLINE functions
- - ignoring of exceptions
- - replacement of non-existing functions by own Stub-functions
- (rapid prototyping)
- - code-folding (optimisation at linking)
- - binding of binaries
- - linker support for StormWIZARD
- - new debug controls
- - GoldED can be used as and alternative editor
-
- Project Manager
- - sorting of sections
- - sorting within sections
- - new section for StormWIZARD
- - extended keyboard functionality
-
- StormEd
- - bracket-check
- - block indent
- - new colour controls
- - new project template
-
- StormRun
- - history and breakpoint window
-
- StormC
- - new optimisation levels
- - new keyword "__saveds"
-
- StormLibrarian
- - simple creation of linker libraries
-
- StormShell
- New GUI and much more compact!
-
- The GUI of StormC 1.1 is completely done with StormWIZARD, our new
- GUI editor. The layout of the GUI is completely reworked. It is now
- much smaller and faster.
-
- An example: the old StormShell was 500 KByte of size. Now it is only
- 300 KByte and it is even more comfortable.
-
- Sorting in the Project Manager
-
- Single entries of sections or whole sections can be rearranged very
- quickly. Your preferred sorting method will be stored and used auto-
- matically at your next project.
-
- New Project Sections
-
- The integration of StormWIZARD into the StormC environment is as good
- as the other parts of the development system. By adding files, created
- by StormWIZARD (.wizard) a new section will be don, called "StormWIZARD
- Interface". A double click on an entry will start StormWIZARD and load
- the selected file.
-
- The integration of all components grants an optimal structure and
- organisation of your project.
-
- Extended Keyboard Functionality
-
- Now there are more qualifiers in the Project Manager. A double click
- on the program name in the project while pressing <ALT> key will start
- the program in debug mode automatically.
-
- New Datatypes support. A double click on an entry in the project
- manager while pressing <ALT> key will start Multiview. If there is
- a corresponding Dataype in your system it will be used for displaying
- the file.
-
- An example will show you this: You are working on a project and you
- want to add an AmigaGuide documentation. So you make a new entry in
- the AmigaGuide section. A double click will open the editor. But when
- you want to view it with AmigaGuide you must look for this program,
- start it manually and load the file.
-
- Now you must only use the <ALT> key while double clicking the entry
- and Multiview will show your AmigaGuide file. It is so easy and many
- of our customers wanted us to implement it.
-
- New Requesters And More Options
-
- The new option requester is much more tided up and easier to use. We
- used the StormWIZARD paging possibilities to make it that good.
-
- Code-Dependant Object-File Storage
-
- Many of the customers of version 1.0 are fascinated of our Project
- Management and the possibilities to structure and manage a project
- and all its parts. But this could even be improved.
-
- Now you can manage different version of your project, e.g. for
- different processors. Until now you had to compile the complete
- project. Now only the affected parts will be compiled which will
- speed up this process.
-
- Every project can have its own drawer for the object files. So there
- can be drawers like "68K-Code", "020-Code", "060-Code" and so on.
- Since there are the object files with the according options only
- modules with changed source will be compiled again.
-
- Pretend of Inline Functions
-
- Inline functions are placed directly at the place of their call in
- the source, just like macros. The compiler must not call the function
- and so it can optimise extremely good.
-
- Inline functions will make the program faster and even smaller in
- some cases (when using small inline functions, e.g. reading the value
- of an attribute of a class).
-
- During program development inline functions might be very disturbing,
- cause it is impossible for the debugger to show the source of it.
-
- With this switch the compiler is told, to use inline functions like
- normal functions. So the debugger can show the source of these
- inline functions and trace them in single step mode. (There it does
- not matter that the inline function are often in the header files of
- the modules.
-
- Ignoring of Exception Specifiers
-
- During testing or for security fanatics C++ offer the possibility to
- do functions (also member functions of a class) with exception
- specifies: To use it there is the keyword <throw> after a function
- prototype and a list of exceptions that can be output at the most.
- All other exceptions, not mentioned in that list will be threaded
- as unexpected exceptions.
-
- The compiler must set a "try block" around every function with
- exception specifiers, that catches and outputs every allowed
- exception, but intercepts all other exceptions and calls the
- function unexpected(). This additional "try block" makes the
- program longer and slower.
-
- After the program has been tested for a while you should instruct
- the compiler to ignore these exception specifiers. This might
- shorten the program drastic and makes it faster.
-
- Code Folding (Fold Common Code)
-
- StormLINK is able to do some optimisations, normally done by a
- compiler, on the compiled program. So it can remove multiple
- existing code segments.
-
- When StormLINK detects two routines that are identical it will
- replace the second one by a call of the first one. Normally this
- will be done by the programmer as well, but while using templates
- the compiler generates a lot of identical code and the program gets
- longer and longer.
-
- This linker option costs a lot of time so it is recommended to use it
- on high compiler optimisation levels only.
-
- Replacing Non-Existing Functions
-
- This option was implemented to support the so called rapid prototyping.
- The function "_stub" is called when the linker can not find a specified
- function. For that reason one can define a function "_stub" which
- includes a debug output or a dialogue like "Function not jet implemented".
-
- Linking of Binaries
-
- Normally only assembler systems offer the possibility to link binaries.
- We implemented this feature to support the co-operation with our GUI
- editor StormWIZARD, but it can be used for other purposes as well.
-
- When the option "Link WIZARD File" is activated the WIZARD file will be
- linked to the program if there is such and entry the project manager. To
- initialise the data correctly a symbol name must be given for the data
- hunk. The initialisation routing for WIZARD data can then initialise
- the data attached to the program.
-
- New Debug Controls
-
- The option to use Resource Tracking or not can now be stored with the
- project. On some projects it is not advisable to use Resource Tracking,
- because it interferes with patches doing the same thing. Or maybe the
- reservation and freeing of resources is don by some independent tasks.
-
- Now the behaviour of the debugger at start can be selected by a cycle
- gadget in the option area. With the option "Start Debugger in Single-
- Step-Mode" the Startup-Code can be examined.
-
- GoldED as Editor for StormC!
-
- One of the most popular editor in these times is GoldED from Dietmar
- Eilert. It offers all imaginable features, so we decided to use it as
- an alternative to our wonderful StormED. As we know from our customers
- the editor is one of the most important parts of a programming system
- and every one has its own habit to do his programming job. So the
- editor is one big point at the decision for a compiler system. Now
- this is no question any more :)
-
- Colour Adjustment in StormEd
-
- The colours for the syntax highlightning can be easily changed with
- the mouse.
-
- Bracket Check and Indent
-
- The automatic checking of the structure of the used brackets is a very
- useful option, especially if there are many nested ones. In this case
- one bracket will be forgotten very often and a warning is given that
- does not help very much at that time. When programming an installer
- script this option is also very useful.
-
- New - Project Template
-
- As on adding a new text to a project the storage place will be asked
- when doing a new one. With the given file ending the corresponding
- template for the new text can be loaded and used.
-
- StormRun
-
- History and Breakpoint Window
-
- StormRUN, the source-level debugger will record every debug step in
- the history window.
-
- The new breakpoint window will display all set breakpoints. A double
- click leads to the corresponding position in the source. Of course it
- is possible to remove single or all breakpoints.
-
- StormC
-
- New Keyword "__saveds"
-
- Before this had to be done manually converted with the function
- "geta4". Now it is integrated to get a better compatibility to SAS/C.
-
- StormLibrarian
-
- Easy Creation of Linker Libraries
-
- Not only the creation of shared libraries is an important condition
- for a real development system, but also the possibility to summarise
- groups of functions in a linker library. At creation of libraries like
- Amiga.Lib or Storm.Lib one must pay attention to place every function
- in an own hunk at compilation of a module. The compiler offers the
- option "Own Hung For Every Function" for this. After compilation these
- modules must be joint to a library. What means a lot of typing work.
-
- Our new StormLibrarian support this procedure and offers the
- possibility to join object modules to a library project. If there
- is a project, only a simple click on "Create" is needed to create
- the library with the given name. If there are changes on the object
- modules the project must just be loaded into StormLibrarian and the
- library will be recreated - that is all!
-
- Editor Key Map:
- ************************
-
- 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.
-
-
- Advices to PhxAssembler
- ************************
-
- 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
-
-
- Some Frequently asked Questions and Answers !
- *****************************************
- Q 1:
- ********
-
- Why has StormC no Global Optimiser" ?
-
- 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:
- ********
-
- Why does a small "Hello World" gets so long (some Kbytes) ?
-
- 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:
- ********
-
- How can I get a short "Hello World" using Storm.Lib ?
-
- 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:
- ********
-
- Why is the library "storm.lib" such a big one and why is there
- only a single one (in contrast to SAS/C) ?
-
- 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:
- ********
-
- Why does the linker displays the error message "Symbol _exit
- not defined", when linking as Shared Library ?
-
- 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 PowerUp the AMIGA
-
-