home *** CD-ROM | disk | FTP | other *** search
- 10/25/89
-
- Here's a summary of changes to version 2.1.3 of the 80x86 Ms-Dos
- Janus/Ada Compiler and Extended Functions Kit, along with some last
- minute notes.
-
- ---------------------------------------------------------------------------
- Information for New Janus/Ada Users
- ---------------------------------------------------------------------------
-
- New users should read this file thoroughly. Veteran users can skip
- to the section on installation and checkout (line number 115).
-
- You will start receiving the newsletter when you sign and send in
- your license card. We often get calls from people who want to know when
- an update is coming out. Here's a familiar conversation:
-
- "It's in the newsletter; didn't you see it?"
- "I didn't get one."
- "Did you send in your license card?"
- "No" ...
-
- The newsletter is published quarterly, so it may take as long as 3 months
- for your first issue to appear.
-
- ---------------------------------------------------------------------------
- Introduction to Memory Models for New Janus/Ada Users
- ---------------------------------------------------------------------------
-
- This compiler is distributed with two runtimes. One is "model 0",
- the other "model 1". These are used to produce programs of the
- appropriate memory model. All compilation units in a given program must be
- compiled with the same model; the compiler and the linker enforce this
- rule. The /O (the letter O, not the number 0) option is used on the
- compiler and linker to select the memory model. Model 0 is assumed if
- the option is not used.
-
- Model Max Code Max Data Max Constants
- ----- -------- -------- -------------
- 0 64K 64K 64K
- 1 "Unlimited" 64K 64K
-
- (Use BigArray/Memory [see section 15.10] to expand your data area).
-
- Model 1 programs are about 15% bigger and slower than the equivalent
- Model 0 programs. All Model 1 programs are .EXE files; Model 0 programs
- can be either .COM or .EXE.
-
- Using memory models in the assembler is tricky. The important things to
- remember are:
-
- Use the Pragma Memory_Model to select a memory model. We usually
- declare a constant (EQU) "Memory_Model", and conditionally assemble both
- models.
-
- All external calls or jumps must be Near in Model 0; and Far
- (Call Far xxx) in Model 1. This includes references to local entry points.
-
- Returns should match the Calls; i.e. Near Returns (just RET) for
- Model 0; and Far Returns (RET FAR) for model 1.
-
- When accessing parameters, remember that there are two more bytes on the
- stack for the return address when using model 1 than model 0.
-
- The SEGMENT directive allows references to the segment addresses of any
- compilation unit under model 1.
-
- ---------------------------------------------------------------------------
- Potential Surprises for New Janus/Ada Users
- ---------------------------------------------------------------------------
-
- If a user has a directory or Read_Only file named "CONT.$$$", the
- compiler will refuse to run. In general, it is bad to have files with an
- extension of ".$$$", as this is used for temporary files. It is worse to
- have such files write-protected.
-
- The compiler and linker do obsoleteness checking; compiling things
- in the wrong order will result in a program that will not link. Use
- CORDER to get the compilation order right.
-
- Operators, just like identifiers, follow the Ada rules about scope
- and visibility. Don't assume that common operators are always
- available. For example:
-
- Package A Is
- Type B Is New Integer;
- End A;
-
- With A;
- Procedure C Is
- D : A.B := 2;
- Begin
- If D = 4 Then -- Oops, = for type B is not visible.
- -- ....
- End If;
- If A."="(D,4) Then -- OK
- -- ....
- End If;
-
- Moral: If you want infix operations, you need a Use clause.
-
- When we find bugs, they are printed in each newsletter; the current
- up-to-date bug list will be found on the Janus/Ada BBS system
- (608-244-1528, 24 hours a day, 300/1200/2400 baud). Look for Bulletin
- number four.
-
- R.R Software, Inc. produces compilers for serious programmers. We
- hope that you appreciate our professional stance on reporting bugs. If
- you find a bug, please send us the source code for a short program which
- illustrates the problem. You can submit these programs on a floppy disk
- or upload them to our BBS or the janus.ada conference on BIX, the Byte
- Information Exchange network. Please don't send printouts.
-
- Good Luck!
-
- ---------------------------------------------------------------------------
- Janus/Ada Checkout and Installation
- ---------------------------------------------------------------------------
-
- NOTE: Even if you used an earlier version of Janus/Ada, you
- should read the checkout and installation guide carefully. Improper
- set-up (including set-up methods that may have worked with earlier
- versions of Janus/Ada) may cause the compiler or the linker to report
- errors like
-
- "Time stamp for .SYM file does not match".
-
- We do not recommend using the compiler on a system without a hard disk
- (although it can be done). Use the Install batch file to install the
- compiler; or do the steps yourself (some people prefer that). If you don't
- want the compiler to go into a directory called \JANUS213, you must supply
- a directory name on the command line when running the install batch file.
- You might use \JANUS or \JANUSADA as the name of your directory.
- The calling convention for the install batch file is provided in your
- compiler Installation and Checkout Sheets.
-
- Run Chkdsk to determine the amount of free memory needed. You will
- need 570,000 "bytes free" (as reported by Chkdsk) for the compiler to run.
- Many commonly used device drivers will use up too much memory. For example,
- most mouse drivers will take about 40K of RAM, thus reducing the amount of
- free RAM below 570K. The compiler will use additional memory if it is
- available (to a maximum of about 80K) giving you a larger symbol table.
- You would need a 704K system (or a memory-remapping program like 386Max)
- to use all of the extra symbol table space. The compiler also can place
- some of the symbol table on disk.
-
- The Janus/Ada Compiler manual may have references to tools supplied
- with the Extended Functions Kit or the Compiler Tool Kit. These products
- include the following useful extensions to the basic Janus/Ada system:
-
- JASM86 - assembler;
- DISASM86 - disassembler;
- JWINDOWS - window management package;
- SYNTAX - syntax checker with pretty printer;
- JBIND - replacement linker which produces Microsoft OBJ
- files; this allows linking with MASM subprograms;
- PROFILER - program execution profiler;
- EFIND - regular-expression pattern matcher;
- (text searching utility)
- and other tools and interfaces to third party software.
-
- Contact your sales representative if you would like information about
- these products. R.R. Software also offers a source level debugger,
- integrated editors, and embedded systems/ICE support.
-
- ---------------------------------------------------------------------------
- Changes to 2.1.3 from 2.1.2
- ---------------------------------------------------------------------------
-
- Version 2.1.3 has a number of new features and corrects several bugs
- in the 2.1.2 compiler. A brief summary follows.
-
- Programs will NOT need to be recompiled when switching to 2.1.3 from
- 2.1.2. Fixing certain bugs will require relinking existing programs.
- See the list below to determine if your software will need relinking.
-
- The 2.1 Product line consists of the following versions:
-
- Product Version Release
- ------- ------- -------
- Compiler 2.1 . 3
- Linker 2.1 . 3
- Corder 2.1 . 3
- Jmanager 2.1 . 3
- Efind 2.1 . 3
- J.E.T. 2.0 -
-
- Assembler 2.1 . 3
- Syntax Checker 2.1 . 3
- Disassembler 2.1 . 3
- Jbind 2.1 . 3
- Jscope 2.1 . 3
- NAG libraries 2.1 . 2/3
- Jwindows 2.1 . 3
- Profiler 2.1 . 2/3
- Xinotech Interface - . -
- Brief Interface - . -
- A.W.E. - . -
- CASE - . -
-
-
- Programs will need to be recompiled when switching to 2.1.3 from
- anything older than 2.1.2. In this case you will need to delete all old
- .SYM, .SRL, and .JRL files. If you do not do so, the results will be
- unpredictable.
-
- Here is a summary of changes and additions in 2.1.3:
-
- 1) Size clauses and Enumeration representation clauses produce better
- code.
-
- 2) Slices of arrays with address clauses produce better code.
-
- 3) An enhanced optimizer improves performance and eliminates previous
- code generation problems.
-
- 4) There are three new compiler options:
-
- /BM - (Brief Messages) - Use brief compiler error messages, but
- continue to produce compiler statistics and the long form of
- other messages.
-
- /BS - (Brief Statistics) - Use brief compiler messages and do not print
- compiler statistics, but continue to use the long form of error
- messages.
-
- The regular /B option continues to do both.
-
- /? - Print the values of all options used (including default values).
- Compilations submitted with bug reports should be run with this
- option.
-
- 5) There are three new linker options:
-
- /A - Set Maximum Stack Size. The A option sets the maximum stack size
- for a program. The stack size includes the heap on many systems,
- including Ms-Dos. This can be used to change the maximum amount
- of memory a program can use. For 80x86 Ms-Dos systems, the
- largest maximum is 64K (10000h). The minimum size is the data
- size plus 1K.
-
- /B - Brief output option. Produces minimal output.
-
- /? - Print the values of all options used (including default values).
- Linkages submitted with bug reports should be run with this
- option.
-
- 6) The linker output shows memory statistics.
-
- At the end of its run, the linker prints out the amount of memory the
- program will use. The report looks like this:
-
- Program memory usage - Minimum = 14162 bytes (14K)
- - Maximum = 77854 bytes (78K)
-
- The minimum memory usage number assumes that the program has no
- explicit allocators (which are indicated by the keyword "new"). If
- this is not true, the actual minimum might be much greater. For Ms-Dos,
- the maximum assumes that BigArray and/or Memory are not used. If either
- of these allocators are present, the actual memory use will be greater
- than what is reported.
-
- 7) There are two new linker error messages:
-
- Specified Maximum Stack Size too large
- The maximum stack size you specified is larger than the maximum
- allowed.
-
- Specified Maximum Stack Size too small
- The maximum stack size you specified is smaller than the data area
- for your program; this is not allowed for most systems.
-
- 8) JASM86 has a correction for shift and rotate instructions with the
- /1 and /2 option.
-
- 9) There are three new assembler options:
-
- /BM - (Brief Messages) - Use brief assembler error messages, but
- continue to produce assembler statistics and the long form of
- other messages.
-
- /BS - (Brief Statistics) - Use brief assembler messages and do not print
- assembler statistics, but continue to use the long form of error
- messages.
-
- The regular /B option continues to do both.
-
- /? - Print the values of all options used (including default values).
- Assemblies submitted with bug reports should be run with this
- option.
-
- 10) The runtime libraries CHAINLIB and MATH872 have some corrections.
-
- 11) CORDER has some corrections.
-
- Lastly, programs which used condcomp, ASM statements, or other /E
- option features will not compile with the 2.1.3 release compiler. The /C
- and /E options are NOT supported in the release compilers. Information on
- using these "compatibility features" can be found on the Janus/Ada BBS
- system.
-
- ---------------------------------------------------------------------------
- Information for users of older Janus/Ada versions
- ---------------------------------------------------------------------------
-
- The following is provided for users who upgrade from a version older
- than 2.1.2:
-
- Programs which used LONGOPS and LONGIO still can be compiled. However,
- we recommend updating the programs to use the built-in Long_Integer type
- since it is much more efficient. Also, Use clauses on LONGOPS can cause
- problems, as the predefined Long_Integer will take precedence. Thus all
- uses of the type LONGOPS.Long_Integer must be written with full dot
- notation.
-
-
- **** Changes to 2.1.2 from 2.0.2
-
- Version 2.1.2 has significant new features, and corrects many bugs to
- the older compilers. For a complete list of bugs and their corrections,
- see your newsletter.
-
- All programs will need to be recompiled when switching to 2.1.2.
- Delete all old .SYM, .SRL, and .JRL files. If you do not do so, the
- results will be unpredictable.
-
- 1) Type Long_Integer is now a built-in type. You can use them as
- literals and array indices, in For Loops and Case statements, and so
- forth. The type has the normal 32-bit range. The values of
- System.Min_Int and System.Max_Int have changed appropriately.
-
- 2) Fixed point 'Small Length clauses are implemented. The 'Small value
- specified must be in the range of 2**(-99) .. 2**(99) and be less than
- or equal to the delta value. The type specified must be a first named
- subtype.
-
- 3) Enumeration representation clauses are implemented. The values specified
- must be in the range of Long_Integer. The default size of the resulting
- type is Byte if all of the values are in the range 0..255, Integer if
- they are in the range of Integer, and Long_Integer otherwise.
-
- 4) Size length clauses for Discrete and Fixed types are implemented.
- Any size between 1 bit and 1000 bits can be specified. Types are
- allocated to the nearest byte. This can be used to require an unsigned
- representation for a type. For example, the declarations:
-
- Type Byte Is Range 0 .. 255;
- For Byte'Size Use 8;
-
- has the intended effect. Notice that the base type of such a declaration
- is still 16-bit Integer; this means that math operations and the like
- are done in 16 bits. Bit packing (as opposed to byte packing) is not
- done.
-
- 5) Task 'Storage_Size clauses are implemented. The default Task
- Storage_Size has been increased to 2048 bytes.
-
- 6) Type System.Address has been changed to the following record:
-
- Type Word Is -- Unsigned Integer, sort of.
- Type Offset_Type Is New Integer;
- Type Address Is Record
- Offset : Offset_Type;
- Segment : Word;
- End Record;
-
- Aggregates of the record type are allowed. Addition and subtraction of
- Address types are allowed with Offset_Type items. This is defined on the
- Offset portion ONLY (we don't do segment math - it doesn't work anyway on
- OS/2 or other protected mode systems.). 'Address now returns the
- correct values for Labels and Subprograms.
-
- 7) System.Byte has been redefined as:
-
- Type Byte Is Range 0 .. 255;
- For Byte'Size Use 8;
-
- This mainly means that Integer literals are now compatible with type
- Byte; it should not require the changing of existing programs. The
- Type Word is also now a proper unsigned type.
-
- 8) The types of parameters to some of the library routines are different.
- Direct_IO.Count is now a Long_Integer type, allowing access to an entire
- file of type Character. Util.Memavail, Util.MaxAvail, and
- Util.StackAvail now return Long_Integer values. You no longer need
- special processing to find out how much memory is left. Bit.Peek and
- Bit.Poke now take parameters of type System.Address. This allows access
- to all memory in a "portable" fashion. Lastly, most registers in
- DOSCalls are now of type System.Word. This makes it easier to place
- addresses in registers, although you may need Unchecked_Conversion to
- put signed Integers into registers. A direct type conversion from
- Integer to Word will raise Constraint_Error for any negative values.
- Your source code may need other changes to accommodate the new types.
-
- ---------------------------------------------------------------------------
- Information for Brief editor users
- ---------------------------------------------------------------------------
-
- Janus/Ada is supported by Underware, Inc's Brief 3.0 editor. Those
- wishing to purchase Brief or update an older copy should contact :
-
- Solution Systems
- 541 Main St., Suite 410
- South Weymouth MA 02190
-
- (800) 821-2492
- (617) 337-6963
-
-