home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / BK-SC1_1.DMS / in.adf / Readme < prev    next >
Encoding:
Text File  |  1996-07-15  |  15.7 KB  |  447 lines

  1. © HAAGE & PARTNER Computer GmbH 
  2.  
  3.   Mainzer Straße 10A
  4.   D-61191 Rosbach.
  5.   Germany
  6.  
  7.   Tel: ++49  60 07 / 93 00 50
  8.   Fax: ++49  60 07 / 75 43
  9.  
  10.   Compuserve: 100654,3133
  11.   Internet: 100654.3133@compuserve.com
  12.   Homepage: http://ourworld.compuserve.com/homepages/haage_partner
  13.  
  14. First of all we want to thank you for purchasing StormC. So you told
  15. us that we did the right thing by developing StormC.
  16.  
  17. These are the changes of Version 1.1:
  18. ======================================================================
  19.  
  20. StormShell
  21. - new smaller GUI
  22. - new options
  23. - code dependent object-file storage
  24. - prevent of INLINE functions
  25. - ignoring of exceptions
  26. - replacement of non-existing functions by own Stub-functions
  27.   (rapid prototyping)
  28. - code-folding (optimisation at linking) 
  29. - binding of binaries
  30. - linker support for StormWIZARD
  31. - new debug controls
  32. - GoldED can be used as and alternative editor
  33.  
  34. Project Manager
  35. - sorting of sections
  36. - sorting within sections
  37. - new section for StormWIZARD
  38. - extended keyboard functionality
  39.  
  40. StormEd
  41. - bracket-check
  42. - block indent
  43. - new colour controls
  44. - new project template
  45.  
  46. StormRun
  47. - history and breakpoint window
  48.  
  49. StormC
  50. - new optimisation levels
  51. - new keyword "__saveds"
  52.  
  53. StormLibrarian
  54. - simple creation of linker libraries
  55.  
  56. StormShell
  57. New GUI and much more compact!
  58.  
  59. The GUI of StormC 1.1 is completely done with StormWIZARD, our new
  60. GUI editor. The layout of the GUI is completely reworked. It is now
  61. much smaller and faster.
  62.  
  63. An example: the old StormShell was 500 KByte of size. Now it is only
  64. 300 KByte and it is even more comfortable.
  65.  
  66. Sorting in the Project Manager
  67.  
  68. Single entries of sections or whole sections can be rearranged very
  69. quickly. Your preferred sorting method will be stored and used auto-
  70. matically at your next project.
  71.  
  72. New Project Sections
  73.  
  74. The integration of StormWIZARD into the StormC environment is as good
  75. as the other parts of the development system. By adding files, created
  76. by StormWIZARD (.wizard) a new section will be don, called "StormWIZARD
  77. Interface". A double click on an entry will start StormWIZARD and load
  78. the selected file. 
  79.  
  80. The integration of all components grants an optimal structure and
  81. organisation of your project.
  82.  
  83. Extended Keyboard Functionality
  84.  
  85. Now there are more qualifiers in the Project Manager. A double click
  86. on the program name in the project while pressing <ALT> key will start
  87. the program in debug mode automatically.
  88.  
  89. New Datatypes support. A double click on an entry in the project 
  90. manager while pressing <ALT> key will start Multiview. If there is
  91. a corresponding Dataype in your system it will be used for displaying
  92. the file.
  93.  
  94. An example will show you this: You are working on a project and you
  95. want to add an AmigaGuide documentation. So you make a new entry in
  96. the AmigaGuide section. A double click will open the editor. But when
  97. you want to view it with AmigaGuide you must look for this program,
  98. start it manually and load the file.
  99.  
  100. Now you must only use the <ALT> key while double clicking the entry
  101. and Multiview will show your AmigaGuide file. It is so easy and many
  102. of our customers wanted us to implement it.
  103.  
  104. New Requesters And More Options
  105.  
  106. The new option requester is much more tided up and easier to use. We
  107. used the StormWIZARD paging possibilities to make it that good.
  108.  
  109. Code-Dependant Object-File Storage
  110.  
  111. Many of the customers of version 1.0 are fascinated of our Project
  112. Management and the possibilities to structure and manage a project
  113. and all its parts. But this could even be improved.
  114.  
  115. Now you can manage different version of your project, e.g. for
  116. different processors. Until now you had to compile the complete
  117. project. Now only the affected parts will be compiled which will
  118. speed up this process.
  119.  
  120. Every project can have its own drawer for the object files. So there
  121. can be drawers like "68K-Code", "020-Code", "060-Code" and so on.
  122. Since there are the object files with the according options only
  123. modules with changed source will be compiled again.
  124.  
  125. Pretend of Inline Functions
  126.  
  127. Inline functions are placed directly at the place of their call in
  128. the source, just like macros. The compiler must not call the function
  129. and so it can optimise extremely good.
  130.  
  131. Inline functions will make the program faster and even smaller in
  132. some cases (when using small inline functions, e.g. reading the value
  133. of an attribute of a class).
  134.  
  135. During program development inline functions might be very disturbing,
  136. cause it is impossible for the debugger to show the source of it.
  137.  
  138. With this switch the compiler is told, to use inline functions like
  139. normal functions. So the debugger can show the source of these
  140. inline functions and trace them in single step mode. (There it does
  141. not matter that the inline function are often in the header files of
  142. the modules.
  143.  
  144. Ignoring of Exception Specifiers
  145.  
  146. During testing or for security fanatics C++ offer the possibility to
  147. do functions (also member functions of a class) with exception
  148. specifies: To use it there is the keyword <throw> after a function
  149. prototype and a list of exceptions that can be output at the most.
  150. All other exceptions, not mentioned in that list will be threaded
  151. as unexpected exceptions.
  152.  
  153. The compiler must set a "try block" around every function with
  154. exception specifiers, that catches and outputs every allowed
  155. exception, but intercepts all other exceptions and calls the
  156. function unexpected(). This additional "try block" makes the
  157. program longer and slower.
  158.  
  159. After the program has been tested for a while you should instruct
  160. the compiler to ignore these exception specifiers. This might
  161. shorten the program drastic and makes it faster.
  162.  
  163. Code Folding (Fold Common Code)
  164.  
  165. StormLINK is able to do some optimisations, normally done by a
  166. compiler, on the compiled program. So it can remove multiple
  167. existing code segments.
  168.  
  169. When StormLINK detects two routines that are identical it will
  170. replace the second one by a call of the first one. Normally this
  171. will be done by the programmer as well, but while using templates
  172. the compiler generates a lot of identical code and the program gets
  173. longer and longer.
  174.  
  175. This linker option costs a lot of time so it is recommended to use it
  176. on high compiler optimisation levels only.
  177.  
  178. Replacing Non-Existing Functions
  179.  
  180. This option was implemented to support the so called rapid prototyping.
  181. The function "_stub" is called when the linker can not find a specified
  182. function. For that reason one can define a function "_stub" which
  183. includes a debug output or a dialogue like "Function not jet implemented".
  184.  
  185. Linking of Binaries
  186.  
  187. Normally only assembler systems offer the possibility to link binaries.
  188. We implemented this feature to support the co-operation with our GUI
  189. editor StormWIZARD, but it can be used for other purposes as well.
  190.  
  191. When the option "Link WIZARD File" is activated the WIZARD file will be
  192. linked to the program if there is such and entry the project manager. To
  193. initialise the data correctly a symbol name must be given for the data
  194. hunk. The initialisation routing for WIZARD data can then initialise
  195. the data attached to the program.
  196.  
  197. New Debug Controls
  198.  
  199. The option to use Resource Tracking or not can now be stored with the
  200. project. On some projects it is not advisable to use Resource Tracking,
  201. because it interferes with patches doing the same thing. Or maybe the
  202. reservation and freeing of resources is don by some independent tasks.
  203.  
  204. Now the behaviour of the debugger at start can be selected by a cycle
  205. gadget in the option area. With the option "Start Debugger in Single-
  206. Step-Mode" the Startup-Code can be examined.
  207.  
  208. GoldED as Editor for StormC!
  209.  
  210. One of the most popular editor in these times is GoldED from Dietmar
  211. Eilert. It offers all imaginable features, so we decided to use it as
  212. an alternative to our wonderful StormED. As we know from our customers
  213. the editor is one of the most important parts of a programming system 
  214. and every one has its own habit to do his programming job. So the 
  215. editor is one big point at the decision for a compiler system. Now 
  216. this is no question any more :)
  217.  
  218. Colour Adjustment in StormEd
  219.  
  220. The colours for the syntax highlightning can be easily changed with 
  221. the mouse.
  222.  
  223. Bracket Check and Indent
  224.  
  225. The automatic checking of the structure of the used brackets is a very
  226. useful option, especially if there are many nested ones. In this case
  227. one bracket will be forgotten very often and a warning is given that
  228. does not help very much at that time. When programming an installer
  229. script this option is also very useful.
  230.  
  231. New - Project Template
  232.  
  233. As on adding a new text to a project the storage place will be asked
  234. when doing a new one. With the given file ending the corresponding
  235. template for the new text can be loaded and used.
  236.  
  237. StormRun
  238.  
  239. History and Breakpoint Window
  240.  
  241. StormRUN, the source-level debugger will record every debug step in
  242. the history window.
  243.  
  244. The new breakpoint window will display all set breakpoints. A double
  245. click leads to the corresponding position in the source. Of course it
  246. is possible to remove single or all breakpoints.
  247.  
  248. StormC
  249.  
  250. New Keyword "__saveds"
  251.  
  252. Before this had to be done manually converted with the function
  253. "geta4". Now it is integrated to get a better compatibility to SAS/C.
  254.  
  255. StormLibrarian
  256.  
  257. Easy Creation of Linker Libraries
  258.  
  259. Not only the creation of shared libraries is an important condition
  260. for a real development system, but also the possibility to summarise
  261. groups of functions in a linker library. At creation of libraries like
  262. Amiga.Lib or Storm.Lib one must pay attention to place every function
  263. in an own hunk at compilation of a module. The compiler offers the
  264. option "Own Hung For Every Function" for this. After compilation these
  265. modules must be joint to a library. What means a lot of typing work.
  266.  
  267. Our new StormLibrarian support this procedure and offers the
  268. possibility to join object modules to a library project. If there
  269. is a project, only a simple click on "Create" is needed to create
  270. the library with the given name. If there are changes on the object
  271. modules the project must just be loaded into StormLibrarian and the
  272. library will be recreated - that is all!
  273.  
  274. Editor Key Map:
  275. ************************
  276.  
  277. Shift-Cursor Up/Down
  278.         Moves the cursor to the first/last line displayed in the window.
  279.  
  280. Shift-Cursor Left/Right
  281.         Moves the cursor to the first/last column of the current line.
  282.  
  283. Alt-Cursor Up/Down
  284.         Jumps to the start/end of the text.
  285.  
  286. Alt-Cursor Left/Right
  287.         Moves the cursor to the next word in front of or behind the cursor.
  288.  
  289. Shift-Delete oder Shift-Backspace
  290.         Deletes the line the cursor stands. It is stored in the clipboard.
  291.  
  292. Alt-Delete
  293.         Deletes the line starting form the position of the cursor to the end.
  294.  
  295. Alt-Backspace
  296.         Deletes the text from the start to the cursor position.
  297.  
  298. Help
  299.   Opens the Online Help and displays an explanation to the word under the cursor.
  300.   The word must be an ANSI-C or C++ standard function.
  301.  
  302.  
  303. Advices to PhxAssembler
  304. ************************
  305.  
  306. As a bonus the freeware assembler FreePhxAss is delivered with
  307. StormC. It is mainly for useful for developers of PD compilers which
  308. use it for translation of their compiler output. The function size
  309. is *very* limited: There are no macros, no includes, no conditioned
  310. assembling. Many directives are also not available. 
  311.  
  312. FreePhxAss can be used freely, but the name of the Author should
  313. be mentioned in the project.
  314.  
  315. If you are interested in PhxAss, there is a registered version that
  316. is available at a low price.
  317.  
  318. Please contact
  319.  
  320. SMail:                  Frank Wille
  321.                         Auf dem Dreische 45
  322.                         32049 Herford
  323.                         Germany
  324.  
  325. EMail:                  frank@phoenix.owl.de
  326.  
  327.  
  328. Some Frequently asked Questions and Answers !
  329. *****************************************
  330. Q 1:
  331. ********
  332.  
  333. Why has StormC no Global Optimiser" ?
  334.  
  335. Answer:
  336. The compiler of StormC offers already a good optimisations. Some of
  337. the used techniques are also part of a global optimiser. Especially
  338. the optimised organisation of the global CPU and FPU registers is such
  339. a one.
  340.  
  341. StormC is already prepared to do more of the global optimisations in
  342. further versions. They can be implemented step by step. But as said
  343. before the optimisation of StormC and StormLINK. 
  344.  
  345. Q 2:
  346. ********
  347.  
  348. Why does a small "Hello World" gets so long (some Kbytes) ?
  349.  
  350. Answer:
  351. "Storm.lib" is a highly compatible ANSI C library that offers buffered I/O.
  352.  
  353. The program "Hello World" uses "printf" of the "Storm.lib", but it
  354. does not differ between the output of integer or floating point, so
  355. there are unused parts of the library in your code that makes small
  356. programs relatively large.
  357.  
  358. If only ANSI C is used the library "StormAmiga.lib" can be used. This
  359. is a highly optimised assembler library that generates very small and
  360. fast programs. It only supports "far code" and "far data" model.
  361.  
  362. Q 3:
  363. ********
  364.  
  365. How can I get a short "Hello World" using Storm.Lib ?
  366.  
  367. Answer:
  368. If floating point is needed and buffered I/O of AmigaDOS is enough
  369. AmigaDOS functions can be used for this. "Vprintf" and "VFPrintf"
  370. will directly output to AmigaDOS files, just like "printf". But these
  371. functions are not 100% ANSI compatible.
  372.  
  373. Another possibility is to resign on automatically open and close of
  374. libraries and its comfortable error handling which differs between
  375. Workbench and CLI start while paying attention to OS 1.3 and older.
  376. This comfort is not necessary for all programs.
  377.  
  378. So a minimal startup code, written in assembler can be used, that only
  379. does the essential jobs, e.g. only supporting the small data model,
  380. not supporting resident programs ...
  381.  
  382. Q 4:
  383. ********
  384.  
  385. Why is the library "storm.lib" such a big one and why is there
  386. only a single one (in contrast to SAS/C) ?
  387.  
  388. Answer:
  389. StormC support a further developed object format that is used for
  390. linker libraries as well. It is 100% compatible to the old one. Its
  391. advantage is that the Linker and the Compiler of StormC can accommodate
  392. more data models in one object file. So the programmer must not decide
  393. which is the right library that fits the used data model (far data,
  394. near data(a4), near data(a6)). This caused many errors. Now the linker
  395. takes the needed parts out of "Storm.lib". For these reasons "Storm.lib"
  396. is nearly as big as these three libraries of SAS/C.
  397.  
  398. In the future StormC will support even more code modells and CPU and
  399. FPU models, so "Storm.lib" will allow the optimised program generation
  400. automatically.
  401.  
  402. Q 5:
  403. ********
  404.  
  405. Why does the linker displays the error message "Symbol _exit
  406. not defined", when linking as Shared Library ?
  407.  
  408. Answer:
  409. The Shared Library calls the ANSI function exit(). This can be done
  410. directly by the programmer or indirectly by the linker library which
  411. uses this function. "Storm.lib" uses this function to automatically
  412. open the used Shared Library, e.g. the "utility.library".
  413.  
  414. Basically a Shared Library is not allowed to use exit(), cause it
  415. can not be finished simply.
  416.  
  417. How to avoid this call ?
  418.  
  419. You should not use the automatic opening of used Shared Libraries.
  420. Instead you must open and close the library as it is described in
  421. the manual.
  422.  
  423. To get a list of all used libraries you should include
  424.  
  425. void exit() {}
  426.  
  427. into the Shared Library. Now you can link it.
  428.  
  429. You should use the linker option "Write Map File". The linker will
  430. generate a file with the extension ".map". Now watch all INIT
  431. functions which contain the basis name of the Shared Library, e.g.
  432. INIT_1_UtilityBase.
  433.  
  434. Now open all these libraries with your own routines. Pay attention
  435. to declare the corresponding basis variable (e.g. UtilityBase). Do not
  436. forget to remove your own exit() function from the source. 
  437.  
  438. (c) HAAGE & PARTNER Computer GmbH - We develop to PowerUp the AMIGA
  439.  
  440.