home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0020 - 0029 / ibm0020-0029 / ibm0028.tar / ibm0028 / ADA-1.ZIP / ADA-1.TD0 / READ.ME < prev   
Encoding:
Text File  |  1989-12-04  |  17.8 KB  |  410 lines

  1.     10/25/89
  2.  
  3.         Here's a summary of changes to version 2.1.3 of the 80x86 Ms-Dos
  4.     Janus/Ada Compiler and Extended Functions Kit, along with some last
  5.     minute notes.
  6.  
  7.     ---------------------------------------------------------------------------
  8.                       Information for New Janus/Ada Users
  9.     ---------------------------------------------------------------------------
  10.  
  11.     New users should read this file thoroughly.  Veteran users can skip
  12.     to the section on installation and checkout (line number 115).
  13.  
  14.         You will start receiving the newsletter when you sign and send in
  15.     your license card.  We often get calls from people who want to know when
  16.     an update is coming out.  Here's a familiar conversation:
  17.  
  18.     "It's in the newsletter; didn't you see it?"
  19.         "I didn't get one."
  20.         "Did you send in your license card?"
  21.     "No" ...
  22.  
  23.     The newsletter is published quarterly, so it may take as long as 3 months
  24.     for your first issue to appear.
  25.  
  26.     ---------------------------------------------------------------------------
  27.               Introduction to Memory Models for New Janus/Ada Users
  28.     ---------------------------------------------------------------------------
  29.  
  30.     This compiler is distributed with two runtimes.  One is "model 0",
  31.     the other "model 1".  These are used to produce programs of the
  32.     appropriate memory model.  All compilation units in a given program must be
  33.     compiled with the same model; the compiler and the linker enforce this
  34.     rule.  The /O (the letter O, not the number 0) option is used on the
  35.     compiler and linker to select the memory model.  Model 0 is assumed if
  36.     the option is not used.
  37.  
  38.     Model       Max Code    Max Data    Max Constants
  39.     -----       --------    --------    -------------
  40.       0       64K         64K            64K
  41.       1        "Unlimited"     64K            64K
  42.  
  43.     (Use BigArray/Memory [see section 15.10] to expand your data area).
  44.  
  45.     Model 1 programs are about 15% bigger and slower than the equivalent
  46.     Model 0 programs.  All Model 1 programs are .EXE files; Model 0 programs
  47.     can be either .COM or .EXE.
  48.  
  49.         Using memory models in the assembler is tricky.  The important things to
  50.     remember are:
  51.  
  52.         Use the Pragma Memory_Model to select a memory model.  We usually
  53.     declare a constant (EQU) "Memory_Model", and conditionally assemble both
  54.     models.
  55.  
  56.         All external calls or jumps must be Near in Model 0; and Far
  57.     (Call Far xxx) in Model 1.  This includes references to local entry points.
  58.  
  59.         Returns should match the Calls; i.e. Near Returns (just RET) for
  60.     Model 0; and Far Returns (RET FAR) for model 1.
  61.  
  62.         When accessing parameters, remember that there are two more bytes on the
  63.     stack for the return address when using model 1 than model 0.
  64.  
  65.         The SEGMENT directive allows references to the segment addresses of any
  66.     compilation unit under model 1.
  67.  
  68.     ---------------------------------------------------------------------------
  69.                   Potential Surprises for New Janus/Ada Users
  70.     ---------------------------------------------------------------------------
  71.  
  72.         If a user has a directory or Read_Only file named "CONT.$$$", the
  73.     compiler will refuse to run.  In general, it is bad to have files with an
  74.     extension of ".$$$", as this is used for temporary files.  It is worse to
  75.     have such files write-protected.
  76.  
  77.         The compiler and linker do obsoleteness checking; compiling things
  78.     in the wrong order will result in a program that will not link.  Use
  79.     CORDER to get the compilation order right.
  80.  
  81.         Operators, just like identifiers, follow the Ada rules about scope
  82.     and visibility.  Don't assume that common operators are always
  83.     available.  For example:
  84.  
  85.         Package A Is
  86.             Type B Is New Integer;
  87.         End A;
  88.  
  89.         With A;
  90.         Procedure C Is
  91.             D : A.B := 2;
  92.         Begin
  93.             If D = 4 Then -- Oops, = for type B is not visible.
  94.                 -- ....
  95.             End If;
  96.             If A."="(D,4) Then -- OK
  97.                 -- ....
  98.             End If;
  99.  
  100.     Moral: If you want infix operations, you need a Use clause.
  101.  
  102.         When we find bugs, they are printed in each newsletter; the current
  103.     up-to-date bug list will be found on the Janus/Ada BBS system
  104.     (608-244-1528, 24 hours a day, 300/1200/2400 baud).  Look for Bulletin
  105.     number four.
  106.  
  107.         R.R Software, Inc. produces compilers for serious programmers.  We
  108.     hope that you appreciate our professional stance on    reporting bugs.  If
  109.     you find a bug, please send us the source code for a short program which
  110.     illustrates the problem.  You can submit these programs on a floppy disk
  111.     or upload them to our BBS or the janus.ada conference on BIX, the Byte
  112.     Information Exchange network.  Please don't send printouts.
  113.  
  114.         Good Luck!
  115.  
  116.     ---------------------------------------------------------------------------
  117.                      Janus/Ada Checkout and Installation
  118.     ---------------------------------------------------------------------------
  119.  
  120.         NOTE: Even if you used an earlier version of Janus/Ada, you
  121.     should read the checkout and installation guide carefully.  Improper
  122.     set-up (including set-up methods that may have worked with earlier
  123.     versions of Janus/Ada) may cause the compiler or the linker to report
  124.     errors like
  125.  
  126.         "Time stamp for .SYM file does not match".
  127.  
  128.         We do not recommend using the compiler on a system without a hard disk
  129.     (although it can be done).  Use the Install batch file to install the
  130.     compiler; or do the steps yourself (some people prefer that).  If you don't
  131.     want the compiler to go into a directory called \JANUS213, you must supply
  132.     a directory name on the command line when running the install batch file.
  133.     You might use \JANUS or \JANUSADA as the name of your directory.
  134.     The calling convention for the install batch file is provided in your
  135.     compiler Installation and Checkout Sheets.
  136.  
  137.         Run Chkdsk to determine the amount of free memory needed.  You will
  138.     need 570,000 "bytes free" (as reported by Chkdsk) for the compiler to run.
  139.     Many commonly used device drivers will use up too much memory.  For example,
  140.     most mouse drivers will take about 40K of RAM, thus reducing the amount of
  141.     free RAM below 570K. The compiler will use additional memory if it is
  142.     available (to a maximum of about 80K) giving you a larger symbol table.
  143.     You would need a 704K system (or a memory-remapping program like 386Max)
  144.     to use all of the extra symbol table space.  The compiler also can place
  145.     some of the symbol table on disk.
  146.  
  147.         The Janus/Ada Compiler manual may have references to tools supplied
  148.     with the Extended Functions Kit or the Compiler Tool Kit.  These products
  149.     include the following useful extensions to the basic Janus/Ada system:
  150.  
  151.         JASM86   - assembler;
  152.             DISASM86 - disassembler;
  153.                 JWINDOWS - window management package;
  154.             SYNTAX   - syntax checker with pretty printer;
  155.             JBIND    - replacement linker which produces Microsoft OBJ
  156.                    files; this allows linking with MASM subprograms;
  157.             PROFILER - program execution profiler;
  158.             EFIND    - regular-expression pattern matcher;
  159.                            (text searching utility)
  160.                 and other tools and interfaces to third party software.
  161.  
  162.         Contact your sales representative if you would like information about
  163.     these products.  R.R. Software also offers a source level debugger,
  164.     integrated editors, and embedded systems/ICE support.
  165.  
  166.     ---------------------------------------------------------------------------
  167.                          Changes to 2.1.3 from 2.1.2
  168.     ---------------------------------------------------------------------------
  169.  
  170.         Version 2.1.3 has a number of new features and corrects several bugs
  171.     in the 2.1.2 compiler.  A brief summary follows.
  172.  
  173.         Programs will NOT need to be recompiled when switching to 2.1.3 from
  174.     2.1.2.  Fixing certain bugs will require relinking existing programs.
  175.     See the list below to determine if your software will need relinking.
  176.  
  177.     The 2.1 Product line consists of the following versions:
  178.  
  179.         Product        Version Release
  180.         -------        ------- -------
  181.         Compiler          2.1  .  3
  182.         Linker            2.1  .  3
  183.         Corder            2.1  .  3
  184.         Jmanager            2.1  .  3
  185.         Efind             2.1  .  3
  186.         J.E.T.            2.0     -
  187.  
  188.         Assembler         2.1  .  3
  189.         Syntax Checker        2.1  .  3
  190.         Disassembler      2.1  .  3
  191.         Jbind             2.1  .  3
  192.         Jscope              2.1  .  3
  193.         NAG libraries         2.1  .  2/3
  194.         Jwindows              2.1  .  3
  195.         Profiler              2.1  .  2/3
  196.         Xinotech Interface     -   .  -
  197.         Brief Interface        -   .  -
  198.         A.W.E.               -   .  -
  199.         CASE                 -   .  -
  200.  
  201.  
  202.     Programs will need to be recompiled when switching to 2.1.3 from
  203.     anything older than 2.1.2. In this case you will need to delete all old
  204.     .SYM, .SRL, and .JRL files.  If you do not do so, the results will be
  205.     unpredictable.
  206.  
  207.         Here is a summary of changes and additions in 2.1.3:
  208.  
  209.     1) Size clauses and Enumeration representation clauses produce better
  210.        code.
  211.  
  212.     2) Slices of arrays with address clauses produce better code.
  213.  
  214.     3) An enhanced optimizer improves performance and eliminates previous
  215.        code generation problems.
  216.  
  217.     4) There are three new compiler options:
  218.  
  219.     /BM - (Brief Messages) - Use brief compiler error messages, but
  220.           continue to produce compiler statistics and the long form of
  221.           other messages.
  222.  
  223.     /BS - (Brief Statistics) - Use brief compiler messages and do not print
  224.           compiler statistics, but continue to use the long form of error
  225.           messages.
  226.  
  227.     The regular /B option continues to do both.
  228.  
  229.     /? - Print the values of all options used (including default values).
  230.          Compilations submitted with bug reports should be run with this
  231.              option.
  232.  
  233.     5) There are three new linker options:
  234.  
  235.     /A - Set Maximum Stack Size.  The A option sets the maximum stack size
  236.          for a program.  The stack size includes the heap on many systems,
  237.          including Ms-Dos.  This can be used to change the maximum amount
  238.          of memory a program can use.  For 80x86 Ms-Dos systems, the
  239.          largest maximum is 64K (10000h).  The minimum size is the data
  240.              size plus 1K.
  241.  
  242.     /B - Brief output option.  Produces minimal output.
  243.  
  244.     /? - Print the values of all options used (including default values).
  245.          Linkages submitted with bug reports should be run with this
  246.              option.
  247.  
  248.     6) The linker output shows memory statistics.
  249.  
  250.     At the end of its run, the linker prints out the amount of memory the
  251.         program will use.  The report looks like this:
  252.  
  253.     Program memory usage - Minimum =  14162 bytes (14K)
  254.                              - Maximum =  77854 bytes (78K)
  255.  
  256.     The minimum memory usage number assumes that the program has no
  257.     explicit allocators (which are indicated by the keyword "new").  If
  258.         this is not true, the actual minimum might be much greater.  For Ms-Dos,
  259.         the maximum assumes that BigArray and/or Memory are not used.  If either
  260.         of these allocators are present, the actual memory use will be greater
  261.      than what is reported.
  262.  
  263.     7) There are two new linker error messages:
  264.  
  265.     Specified Maximum Stack Size too large
  266.         The maximum stack size you specified is larger than the maximum
  267.         allowed.
  268.  
  269.     Specified Maximum Stack Size too small
  270.         The maximum stack size you specified is smaller than the data area
  271.         for your program; this is not allowed for most systems.
  272.  
  273.     8) JASM86 has a correction for shift and rotate instructions with the
  274.        /1 and /2 option.
  275.  
  276.     9) There are three new assembler options:
  277.  
  278.     /BM - (Brief Messages) - Use brief assembler error messages, but
  279.           continue to produce assembler statistics and the long form of
  280.           other messages.
  281.  
  282.     /BS - (Brief Statistics) - Use brief assembler messages and do not print
  283.           assembler statistics, but continue to use the long form of error
  284.           messages.
  285.  
  286.     The regular /B option continues to do both.
  287.  
  288.     /? - Print the values of all options used (including default values).
  289.          Assemblies submitted with bug reports should be run with this
  290.              option.
  291.  
  292.    10) The runtime libraries CHAINLIB and MATH872 have some corrections.
  293.  
  294.    11) CORDER has some corrections.
  295.  
  296.         Lastly, programs which used condcomp, ASM statements, or other /E
  297.     option features will not compile with the 2.1.3 release compiler.  The /C
  298.     and /E options are NOT supported in the release compilers.  Information on
  299.     using these "compatibility features" can be found on the Janus/Ada BBS
  300.     system.
  301.  
  302.     ---------------------------------------------------------------------------
  303.                Information for users of older Janus/Ada versions
  304.     ---------------------------------------------------------------------------
  305.  
  306.     The following is provided for users who upgrade from a version older
  307.     than 2.1.2:
  308.  
  309.         Programs which used LONGOPS and LONGIO still can be compiled.  However,
  310.     we recommend updating the programs to use the built-in Long_Integer type
  311.     since it is much more efficient.  Also, Use clauses on LONGOPS can cause
  312.     problems, as the predefined Long_Integer will take precedence.  Thus all
  313.     uses of the    type LONGOPS.Long_Integer must be written with full dot
  314.     notation.
  315.  
  316.  
  317.     **** Changes to 2.1.2 from 2.0.2
  318.  
  319.         Version 2.1.2 has significant new features, and corrects many bugs to
  320.     the    older compilers.  For a complete list of bugs and their corrections,
  321.     see your newsletter.
  322.  
  323.         All programs will need to be recompiled when switching to 2.1.2.
  324.     Delete all old .SYM, .SRL, and .JRL files.  If you do not do so, the
  325.     results will be unpredictable.
  326.  
  327.     1) Type Long_Integer is now a built-in type.  You can use them as
  328.        literals and array indices, in For Loops and Case statements, and so
  329.        forth.  The type has the normal 32-bit range.  The values of
  330.        System.Min_Int and System.Max_Int have changed appropriately.
  331.  
  332.     2) Fixed point 'Small Length clauses are implemented.  The 'Small value
  333.        specified must be in the range of 2**(-99) .. 2**(99) and be less than
  334.        or equal to the delta value.  The type specified must be a first named
  335.        subtype.
  336.  
  337.     3) Enumeration representation clauses are implemented.  The values specified
  338.        must be in the range of Long_Integer.  The default size of the resulting
  339.        type is Byte if all of the values are in the range 0..255, Integer if
  340.        they are in the range of Integer, and Long_Integer otherwise.
  341.  
  342.     4) Size length clauses for Discrete and Fixed types are implemented.
  343.        Any size between 1 bit and 1000 bits can be specified.  Types are
  344.        allocated to the nearest byte.  This can be used to require an unsigned
  345.        representation for a type.  For example, the declarations:
  346.  
  347.         Type Byte Is Range 0 .. 255;
  348.         For Byte'Size Use 8;
  349.  
  350.        has the intended effect.  Notice that the base type of such a declaration
  351.        is still 16-bit Integer; this means that math operations and the like
  352.        are done in 16 bits.  Bit packing (as opposed to byte packing) is not
  353.        done.
  354.  
  355.     5) Task 'Storage_Size clauses are implemented.  The default Task
  356.        Storage_Size has been increased to 2048 bytes.
  357.  
  358.     6) Type System.Address has been changed to the following record:
  359.  
  360.         Type Word Is -- Unsigned Integer, sort of.
  361.         Type Offset_Type Is New Integer;
  362.         Type Address Is Record
  363.             Offset : Offset_Type;
  364.             Segment : Word;
  365.         End Record;
  366.  
  367.        Aggregates of the record type are allowed.  Addition and subtraction of
  368.        Address types are allowed with Offset_Type items.  This is defined on the
  369.        Offset portion ONLY (we don't do segment math - it doesn't work anyway on
  370.        OS/2 or other protected mode systems.).  'Address now returns the
  371.        correct values for Labels and Subprograms.
  372.  
  373.     7) System.Byte has been redefined as:
  374.  
  375.         Type Byte Is Range 0 .. 255;
  376.         For Byte'Size Use 8;
  377.  
  378.        This mainly means that Integer literals are now compatible with type
  379.        Byte; it should not require the changing of existing programs.  The
  380.        Type Word is also now a proper unsigned type.
  381.  
  382.      8) The types of parameters to some of the library routines are different.
  383.        Direct_IO.Count is now a Long_Integer type, allowing access to an entire
  384.        file of type Character.  Util.Memavail, Util.MaxAvail, and
  385.        Util.StackAvail now return Long_Integer values.  You no longer need
  386.        special processing to find out how much memory is left.  Bit.Peek and
  387.        Bit.Poke now take parameters of type System.Address.  This allows access
  388.        to all memory in a "portable" fashion.  Lastly, most registers in
  389.        DOSCalls are now of type System.Word.  This makes it easier to place
  390.        addresses in registers, although you may need Unchecked_Conversion to
  391.        put signed Integers into registers.  A direct type conversion from
  392.        Integer to Word will raise Constraint_Error for any negative values.
  393.        Your source code may need other changes to accommodate the new types.
  394.  
  395.     ---------------------------------------------------------------------------
  396.                       Information for Brief editor users
  397.     ---------------------------------------------------------------------------
  398.  
  399.     Janus/Ada is supported by Underware, Inc's Brief 3.0 editor.  Those
  400.     wishing to purchase Brief or update an older copy should contact :
  401.  
  402.         Solution Systems
  403.         541 Main St., Suite 410
  404.         South Weymouth MA 02190
  405.  
  406.         (800) 821-2492
  407.         (617) 337-6963
  408.  
  409.  
  410.