home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / dirs / oberon_380.lzh / Oberon / ReadMe < prev    next >
Text File  |  1990-10-11  |  17KB  |  515 lines

  1.                                                        May to August 1990
  2.  
  3.  
  4.                     OBERON V1.16 (Limited Version)
  5.  
  6.  
  7. Introduction
  8.  
  9. This is a freely distributable demo version of a powerful compiler for a
  10. modern, object-oriented language called Oberon.  It is the newest
  11. development of Prof Dr Niklaus Wirth of ETH Zurich in Switzerland.  The
  12. language is the result of a project to improve the performance and to
  13. reduce the complexity of the language Modula-2.  Primarily, the concept of
  14. type extension has been added to Oberon, providing object-oriented
  15. programming facilities comparable to those of the languages Smalltalk and
  16. C++.  At the same time, Oberon retains the notational conventions of
  17. Modula-2 and Pascal.
  18.  
  19. The compiler on this disk has a few features seldom found in other compilers:
  20.  
  21.   - The compiler performs only a single pass, thereby providing fast
  22.     translations.  Still, the code produced is short and fast, because the
  23.     compiler applies carefully selected optimisations.
  24.  
  25.   - Object modules are both ALink and BLink compatible, making it possible
  26.     to link them with modules generated by different language compilers,
  27.     like Assembler and C.
  28.  
  29.   - Oberon programs are optimised at link time.  Unused procedures are not
  30.     included in the executable code module.  The size of an empty program,
  31.     for example, is less than half a kilobyte.
  32.  
  33.   - Programs are very robust at run time, because the compiler employs a
  34.     lot of checks in order to minimise errors.  In most cases, run time
  35.     failures do not result in a guru meditation; rather, they are captured
  36.     by the run time system.
  37.  
  38.   - In order to permit access to the functions and resources of the Amiga
  39.     operating system, the language has been extended by Amiga specific types.
  40.  
  41.   - There are already many library modules, and further libraries are under
  42.     development.  They will be made available from time to time as
  43.     additional proprietary or public domain packages.
  44.  
  45.   - Any executable Oberon program may be made resident.
  46.  
  47.   - Setting one single compiler option causes the compiler to create fully
  48.     reentrant (pure) programs. The only restriction is, that these programs
  49.     may not have more than 32K of global variables.
  50.  
  51.  
  52. Hence, this compiler is an ideal tool to develop small and large programs
  53. effectively.  Code re-use based on module libraries is supported via the
  54. object-oriented features of the language, and any object previously defined
  55. may easily be adapted to new problems.
  56.  
  57.  
  58. Limitations of the demo version
  59.  
  60. This version of the compiler shall enable you to translate a few Oberon
  61. programs and to investigate some of the compiler's features.  However, this
  62. is not the full version.  A few restrictions have been built into the
  63. compiler which will prevent you from using it over an extended time period.
  64. The ideas is to encourage you to purchase the full version (see details
  65. below) if you believe it is worth it to keep me alive.  The following
  66. paragraphs list the restrictions build into this demo version.
  67.  
  68.   - Only a small subset of the module library and the Amiga interface
  69.     modules are provided
  70.  
  71.   - Instructions are short and incomplete
  72.  
  73.   - Every Monday the compiler refuses to do its job
  74.  
  75.   - The source text in each module must not be longer than 10K bytes
  76.  
  77.   - The resulting object code module must not be longer than 5K bytes
  78.  
  79.   - The area for global variables per module is limited to 3K bytes
  80.  
  81.   - The area for string constants per module is limited to 1K bytes
  82.  
  83.   - For each module, the maximum number of imported modules is restriced to 6
  84.  
  85.   - The editor cannot handle more than 200 lines of source code
  86.  
  87. I realise that it is no problem for a hacker to eliminiate these
  88. limitations.  However, any modification of the program, text and data files
  89. is expressly forbidden.  Likewise, the possession, use and distribution of
  90. modified versions of the included files is unlawful.  Of course, this also
  91. applies to any copy of the full compiler version.
  92.  
  93.  
  94. This disk contains the following files:
  95.  
  96.     ReadMe            The present file
  97.  
  98.     LiesMich          German documentation file
  99.  
  100.     Oberon-Report     The revised report on the language Oberon, as published
  101.                       by ETH Zurich, Switzerland
  102.  
  103.     ModulaToOberon    The paper "From Modula to Oberon", also published by
  104.                       ETH Zurich, Switzerland
  105.  
  106.     Install           Script file for an easy compiler installation
  107.  
  108.     Oberon            The compiler itself
  109.  
  110.     OLink             A link utility for Oberon programs, provided as a
  111.                       comfortable alternative to BLink
  112.  
  113.     OEd               The editor
  114.  
  115.     OErr              If errors occurred during compilation, this program
  116.                       will list the corresponding error messages
  117.  
  118.     ExeIcon           Utility similar to IconX
  119.  
  120.     BLink             The linker
  121.  
  122.     BLink.doc         Linker documentation
  123.  
  124.     Path              Path file for the compiler and for OLink
  125.  
  126.     Fehler-Meldungen  This file is used by OEd and OErr to display error
  127.                       messages
  128.  
  129.     Demos (dir)     Demonstration programs
  130.  
  131.         Pute        CLI-based pocket calculator for INTEGER expressions like
  132.                     103 MOD 32 * (98 DIV 3) DIV 2 - 7
  133.         Cube        3D demonstration: cube
  134.         Amok        3D demonstration: AMOK Logo
  135.         Sparks      Line demonstration
  136.         Hello       Simple hello world demonstration
  137.  
  138.     Modules (dir):  Sources of the amiga-oberon-intraface modules Exec,
  139.                     Dos, Graphics, Intuition and the automatically
  140.                     created definition of 'io'.
  141.  
  142.     Icons (dir)     Icons for Oberon files
  143.                     The icons are copied by the compiler, linker etc on
  144.                     request.
  145.  
  146.     c (dir)         Command directory, containing only MuchMore
  147.  
  148.     libs (dir)      Library directory, containing arp.library which is
  149.                     required by the compiler etc
  150.  
  151.     sym, obj (dir)  Symbol- and object-files of the included modules. In
  152.                     addition to the amiga interface modules, the following
  153.                     modules are included:
  154.  
  155.                       - OberonLib:  Oberon base module, will be included
  156.                                     in every oberon program automatically
  157.  
  158.                       - io:         standard i/o-module
  159.  
  160.                       - NoGuru:     if you import this module, error-messages
  161.                                     will be printed in case of a run time
  162.                                     error.
  163.  
  164. All programs on this disk, except BLink, have been written in Oberon and
  165. translated with this Oberon compiler.
  166.  
  167.  
  168. File name extension conventions
  169.  
  170.     Module / program file               .mod
  171.     Symbol file                         .sym
  172.     Object file                         .obj
  173.     Object file using small data model  .objs
  174.     Link support file (calls BLink)     .lnk
  175.     BLink "with" file                   .wth
  176.     Executable file                     <none>
  177.  
  178.  
  179. Installation of the compiler
  180.  
  181.     The compiler may simply be installed by double-clicking the 'Install'
  182.     icon.  The arp.library (used by OEd) is copied to logical device LIBS:,
  183.     and this floppy disk is assigned the logical device name OBERON:.
  184.  
  185.     If you intend to run the programs from the Shell or the CLI, type the
  186.     command
  187.  
  188.                     Path OBERON:    ADD
  189.  
  190.     after installation.
  191.  
  192.  
  193. The Editor OEd
  194.  
  195. This editor supports in particular the development of Oberon programs.  It
  196. is essentially mouse driven, and it allows you to deal with several files
  197. at the same time.  It also provides an Oberon syntax checking mechanism.
  198. You may start the compiler, the linker, the error message listing program
  199. and any compiled program without leaving the editor.
  200.  
  201. Synopsis
  202.  
  203.     OEd { [-t#i] | <text file> }
  204.  
  205. You may start OEd simply by double-clicking its icon or by typing "OEd" in a
  206. Shell or CLI window.  It is also possible to pass several text files to OEd
  207. using multiple arguments (Shell or CLI) or multiple selection (Shift click
  208. under Workbench).  In this case, each of the selected text files is
  209. displayed in a separate window.  If you start OEd from a Shell or CLI window,
  210. then you can also set the tab size explicitly (the default value is 2).  Eg
  211. if you prefer a value of 8, type "OEd -t8 Progr.mod".  Tab size values larger
  212. than 9 cannot be specified.  Option 'i' enforces icon generation on program
  213. save even if OEd has been started from the Shell or CLI.
  214.  
  215. The title bar of the text window is used as a status line.  It displays
  216. important information like error messages, cursor position, length of text,
  217. and the file name.
  218.  
  219. Use of Keyboard
  220.  
  221.     Cursor keys (arrow keys):
  222.  
  223.     As you may have assumed already, you can move the cursor character by
  224.     character around the text file using these keys.
  225.  
  226.     with Alt key pressed simultaneously: movement word by word / page by page
  227.  
  228.     with Shift key pressed simultaneously:  movement to beginning / end of
  229.                                             line / text
  230.  
  231.     Backspace:  deletes character to the left of the cursor
  232.  
  233.     Del:       deletes character under the cursor
  234.     Shift-Del: deletes whole line
  235.     Ctrl-Del:  deletes all characters to the right of the cursor
  236.  
  237.     Return:    inserts new line at cursor position
  238.  
  239.     Tab:       jumps to the next tab stop
  240.     Shift-Tab: jumps to the previous tab stop
  241.  
  242.     Ctrl+'S':  splits current line into two lines at current cursor position
  243.  
  244.     Ctrl+'J':  joins two lines
  245.  
  246. Use of Mouse
  247.  
  248.   Press left button to modify cursor position
  249.  
  250.   Keep left button pressed and move mouse to mark a block
  251.  
  252.  
  253. The Menus
  254.  
  255.   Project Menu
  256.  
  257.     Load  (Amiga + 'L'):        load text file
  258.  
  259.     New Window (Amiga + 'W'):   open new text window
  260.  
  261.     Save (Amiga + 'S'):         save text file using current name
  262.  
  263.     Save As (Amiga + 'V'):      save text file using new name
  264.  
  265.     Save block (Amiga + 'O'):   save selected block of text
  266.  
  267.     Insert File (Amiga + 'I'):  insert text file
  268.  
  269.     Quit (Amiga + 'Q'):         exit OEd
  270.  
  271.     About (Amiga + 'J'):        display OEd information
  272.  
  273.  
  274.   Search Menu
  275.  
  276.     Find (Amiga + 'F'):         find given string
  277.  
  278.     Next (Amiga + 'N'):         find next occurrence of string
  279.  
  280.     Previous (Amiga + 'P'):     find previous occurrence of string
  281.  
  282.     FindRep (Amiga + 'G'):      find and replace string
  283.  
  284.     NextRep (Amiga + 'R'):      find and replace next occurrence of string
  285.  
  286.     PrevRep (Amiga + 'H'):      find and replace previous occurrence of string
  287.  
  288.   Block Menu
  289.  
  290.     Begin (Amiga + 'B'):        mark beginning of block
  291.  
  292.     End (Amiga + 'E'):          mark end of block
  293.  
  294.     Copy (Amiag + 'Y'):         copy block
  295.  
  296.     Move (Amiga + 'M'):         move block
  297.  
  298.     Delete (Amiga + 'D'):       delete block
  299.  
  300.     TAB right (Ctrl + 'R'):     Move Block to rigtht
  301.  
  302.     TAB left (Ctrl + 'L'):      Move Block to left
  303.  
  304.     Unmark (Amiga + 'U'):       delete block marks
  305.  
  306.   Oberon Menu
  307.  
  308.     Parse (Amiga + 'A'):        check Oberon syntax - if an error is found,
  309.                                 then move to the error's position
  310.                                 parse permits finding syntax errors quickly
  311.                                 before compilation
  312.  
  313.     Compile (Amiga + 'C'):      compiles a text file which must have been
  314.                                 saved before
  315.  
  316.     Link (Amiga + 'K'):         links the compiled text using OLink
  317.  
  318.     Execute (Amiga + 'X'):      executes the linked program
  319.  
  320.     Next Error (Amiga + 'T'):   in the event of errors during compilation
  321.                                 the cursor moves to the next error position;
  322.                                 errors are listed in the status line
  323.  
  324.     First Error (Amiga + 'Z'):  moves to the first error position
  325.  
  326.  
  327. The Oberon Compiler
  328.  
  329.  
  330. Starting the compiler
  331.  
  332.  
  333.   from the editor:
  334.  
  335.   Under the editor, the compiler may simply be started by selecting menu
  336.   item 'compile'.
  337.  
  338.  
  339.   from the CLI:
  340.  
  341.   First, the default directory must be set to the directory containing the
  342.   text files or the 'txt' subdirectory (using CD).
  343.  
  344.   The compiler usually requires more than 4KB of stack memory. It should be
  345.   set with the CLI command 'stack' to 10,000 to 20,000 bytes.
  346.  
  347.   Now the compiler can be started with the following command
  348.  
  349.     Oberon { [-dmsvbcrnti] <source> }
  350.  
  351.   <source> is the text to be  compiled.  The affix '.mod' may be omitted.
  352.   If the source text is in a subdirectory named 'txt' it will be loaded
  353.   from there.
  354.  
  355.   The options ('[-dmsvbcrnti]') refer to all the source texts that are listed
  356.   to the right:
  357.  
  358.     Option   Effect
  359.  
  360.      '-d'    use small data-model, create reentrant (pure) code, program may
  361.              not have more than 32K of global variables
  362.      '-d'    use small code-model, program code may not be larger than 32K
  363.      '-s'    disable stack control
  364.      '-v'    disable overflow control
  365.      '-b'    disable block control
  366.      '-c'    disable case index control
  367.      '-r'    disable return control
  368.      '-n'    disable null pointer control
  369.      '-t'    disable type control
  370.      '-i'    produce icons
  371.  
  372.   If the compiler was started without parameters it returns with the prompt
  373.   'in>' and expects the name of the source text.  To leave the compiler,
  374.   press the return key.
  375.  
  376.  
  377.   from the Workbench:
  378.  
  379.   If the compiler is started from the workbench, select the source texts
  380.   using multiple selection with the mouse (press the shift key and klick
  381.   on icons).  Then double-klick the compiler's icon.
  382.  
  383.   The compiler should not be started without parameters from the workbench,
  384.   because in this case it will save the object and symbol files to the
  385.   compiler's directory rather than the directory containing the source
  386.   files.
  387.  
  388.  
  389.  
  390.   OLink:
  391.  
  392.  
  393.   OLink simplifies the start of BLink.  From the workbench, Olink may be
  394.   started by double clicking the icon of the object file created by the
  395.   compiler.
  396.  
  397.  
  398.   Start from the CLI:
  399.  
  400.     OLink [-bsmdi] <object file>
  401.  
  402.   <object file> is the obect file of the main module created by the compiler
  403.  
  404.  
  405.   Options:
  406.  
  407.     -b   do not start BLink
  408.  
  409.     -s   start BLINK with options SMALLCODE and SMALLDATA
  410.  
  411.     -m   should be set when program was compiled using the small code-model
  412.  
  413.     -d   must be set when program was compiled using the small data-model
  414.  
  415.     -i   create icons
  416.  
  417.  
  418.  
  419.   OErr:
  420.  
  421.  
  422.   OErr shows the errors during compilation
  423.  
  424.   Start:  OErr <source text>
  425.  
  426.  
  427.  
  428.   Differences to the OBERON-Report
  429.  
  430.  
  431.   - Memory administration is done like in Pascal with NEW() and DISPOSE()
  432.     and not with garbage collections.  I think that an implementation of
  433.     the garbage collection system on the Amiga is hardly possible and that
  434.     it would not make much sense.
  435.  
  436.   - The type guards are determined at compilation time rather than at
  437.     loading time, as is the case on the CERES machine.
  438.  
  439.  
  440. Copyright:
  441.  
  442.   This disk may be distributed freely without alternations, free of charge.
  443.  
  444.   The programs and the files on this disk may not be altered.  Altered
  445.   versions of these programs may neither be used nor distributed.
  446.  
  447.   These programs may only be distributed together with this disk.  Ie it
  448.   it is not permitted to copy and distribute just the editor, despite the
  449.   fact that it is fully functional without the compiler.
  450.  
  451.   The texts by Niklaus Wirth may be distributed on their own, and eg be
  452.   uploaded into bulletin boards.  But they may not be altered, and it
  453.   should be ensured by an appropiate note that they will not be altered.
  454.  
  455.   BLink and BLink.doc are from the Software Distillery.  They may also be
  456.   distributed without this disk, but only together and unaltered.
  457.  
  458.   All other files are © 1989/1990 by Fridtjof Siebert
  459.                                      Nobileweg 67
  460.                                      D-7000 Stuttgart 40
  461.                                      Germany
  462.  
  463.   Any unlawful use of these files will be prosecuted.
  464.  
  465.   I will always be grateful for any information on bugs in my programs.  I
  466.   cannot guarantee that I will find time to answer all correspondence.  So
  467.   please direct all queries to A+L AG, and don't keep me unnecessarily from
  468.   programming. I won't answer any questions by telephone.
  469.  
  470.   The author wil not be held liable for the correctness and functionality
  471.   of the programs and files.  Also, the author is not liable for any damages
  472.   incurred through the use of the programs and the files.
  473.  
  474.  
  475.   Full Compiler Version
  476.  
  477.   The fully functional compiler version is expected to be released in September
  478.   1990.  It may be ordered directly from
  479.  
  480.      A+L AG
  481.      Im Däderiz 61
  482.      CH-2540 Grenchen
  483.      Switzerland
  484.  
  485. or in Australia from
  486.  
  487.      Tenera Merx Productions Pty Ltd
  488.      Unit 1, 25 Buckingham Drive
  489.      Wangara WA 6065
  490.  
  491.   This version will be supplied with comprehensive documentation, further
  492.   auxiliary programs, many library modules and a complete interface to
  493.   the Amiga's system routines (including ARP).
  494.  
  495.  
  496. --- Compiler, utilities and original documentation by
  497.  
  498.     Fridtjof Siebert, Amiga Modula-2 und Oberon Klub
  499.     Stuttgart, Reunified Germany
  500.  
  501.  
  502. --- Documentation translated into Anglo-Saxon dialect by
  503.  
  504.     Rainer and Sabine Liffers, Tenera Merx Productions Pty Ltd
  505.     Wangara, Western Australia (Down Under, also known as Banana Republic)
  506.  
  507.  
  508. Thanks to Rainer and Sabine for translating this documantion. I've done some
  509. final changes for the documentation to fit with the latest version of the
  510. compiler. I hope I didn't include too many language mistakes...
  511.  
  512.  
  513. Fridtjof.
  514.  
  515.