dos_compilers/Manx Aztec C86 v52a/DOC
2024-07-02 08:25:54 -07:00
..
README.TXT Manx Aztec C86 v5.2a 2024-07-02 08:25:54 -07:00



                                     Aztec C86
                                   Release notes
                                 Beta version 5.2a
                                    17 Nov 1992

            This release document describes version 5.2a of Aztec C86.
          It's organized into the following sections:
            
            1. Installation instructions, which describes how to install
               the Aztec C files from the distribution disks onto your
               disks;
            2. Disk contents, which describes what's on the distribution
               disks;
            3. New features, which describes what's changed in going
               from version 4.2b to the current release;
            4. New features, which describe what's changed in going from
               the 9 April beta release to the current release.
            5. New features, which describe what's changed in going from
               the 4 Oct beta release to the current release.

            After installation, additional documentation is also
          available in file README2.TXT in the DOC subdirectory that's
          within your root Aztec directory.

            To report problems with this beta release, please call Manx
          Tech Support at 908-542-1795, between 2:30pm and 5pm Eastern
          time.


          1. Installation

            To install Aztec C86, put the first distribution disk in a
          floppy drive, make that drive the current drive, and type
               
               install

            The install program will display a dialog box containing
          text fields, check box fields, and button fields that you can
          adjust to customize the installation. To move around within
          this dialog box, you can use a mouse, or the tab key. You can
          get help by pressing the F1 key.

            Once you've made your selections, press the "Proceed" button
          to continue with the installation, or press the "Abort" button
          to terminate the installation. After you press the "Proceed"
          button, insert the distribution disks in the source drive as
          prompted by the program.

            When the files are all installed to the hard disk, the
          program will return to DOS.

            After the installation program is complete, the bin
          subdirectory of your main Aztec directory will contain a batch
          file named AZ86.BAT. The commands in this file will initialize
          your system for use with Aztec C86. You may wish to place the
          contents of this file directly in your AUTOEXEC.BAT file.





Release notes                   page 1


Aztec C86, beta v5.2a                                                11/17/92

            The following paragraphs describe the fields in the
          installation program's dialog box.

          1.1 The 'Source drive' text field

            In the 'source drive' text field, type the name of the
          floppy drive in which you will place the distribution disks.
          This field defaults to the A: drive.

          1.2 The 'Destination directory' text field

            In the 'destination directory' text field, type the name of
          the drive and directory into which you want the installation
          program to place the Aztec C86 files. This field defaults to
          C:\AZ86.

            The installation program will place files in the following
          subdirectories of the destination directory:
                 
                 BIN     The executable programs;
                 INCLUDE Include files;
                 LIB     Library source, object modules, and libraries;
                 MON86   Code for RDB monitor program.

          1.3 The 'Install programs, includes, and source' check boxes

            Check these boxes depending on what you want installed.

            You toggle the setting of a box by pressing the space bar,
          or by clicking the mouse in the box.

          1.4 The 'Object libraries' check boxes

            The Aztec C86 distribution disks contain the following
          categories of object module libraries:
            
            C libraries            Non-floating point functions;
            IEEE math libraries    Floating point functions, which
                                   perform calculations using software;
            8087 math libraries    Floating point functions, which
                                   perform calculations using an 8087;
            Sensing math libraries Floating point functions, which
                                   perform calculations using an 8087 if
                                   present or using software if not;
            Screen libraries       Functions for accessing the screen
                                   and keyboard via the ROM BIOS;
            Graphics libraries     Graphics functions.

            Check the boxes that define the libraries you want
          installed.

          1.5 The 'Memory models' check boxes

            Check on the 'library memory models' boxes to define the
          memory models of the libraries that you want installed.






Release notes                   page 2


Aztec C86, beta v5.2a                                                11/17/92

            For example, if you want the C libraries installed that use
          the small code and small data memory model, you would check
          the 'C libraries' and the 'small code, small data' boxes.

          1.6 The 'Optional components' check boxes

            If you've purchased the optional Level 2 or Level 3
          Extensions to Aztec C86, check the appropriate boxes to
          specify which of the Extension components you want installed.

            Don't check these boxes if you don't have the extensions.

          1.7 Bypassing the installation program

            Most of the files on the distribution disks are in standard
          LHARC format. So if you want, you can bypass the installation
          program altogether and dearchive the archive files that are on
          the distribution disks using the LHARC program that is
          provided with Aztec C. This archive program is installed in
          the Aztec root directory's BIN subdirectory; this program, and
          documentation on how to use it, is also on distribution disk
          1. The LHARC program is in file LHA.EXE, and documentation is
          in file LHA.DOC.

          1.8 Re-entering the installation program

            The installation program can be run more than once. For
          example, during one execution you could install the programs,
          include files, and object libraries; and during a second
          execution you could install the library source files.


          2. Contents of distribution disks

            v5.2a of Aztec C86 is packaged into a base package and two
          levels of optional extensions. The components of these
          packages are:
            *  Base package:
                 +  Compiler, assembler, DOS linker
                 +  Include files
                 +  Object module utilities
                 +  Object libraries
                 +  SDB source level debugger.
            *  Level 2 extensions:
                 +  Library source;
                 +  HEX86, startup routines, and heap-management
                    routines, for ROMming programs that have non-complex
                    segmentation requirements.
            *  Level 3 extensions:
                 +  RDB debugger and MON86 monitor, for remote source-
                    level debugging of ROM- and DOS-based programs;
                 +  ALN linker, ALOC locator, AHEX hexer, and startup
                    routines, for ROMming programs that have complex
                    segmentation requirements

            The following paragraphs describe the files that are on the
          Aztec distribution disks.




Release notes                   page 3


Aztec C86, beta v5.2a                                                11/17/92

          2.1 Disk 1 contents
               File           Contents
               INSTALL.EXE    Installation program
               LHA.EXE        LHARC program (this replaces the ARCV
                              and MKARCV programs that are described
                              in the manual)
               LHA.HLP        LHARC help
               LHA.DOC        LHARC documentation

          2.2 Disk 2 contents
               File           Contents
               CC.LZH         Compiler
               AS.LZH         Assembler
               LN.LZH         Linker
               INCLUDE.LZH    include files
               UTIL.LZH       Object module utilities, HEX86, and
                              miscellaneous utilities
               UNITOOLS.LZH   Unix-compatible programs

          2.3 Disk 3 contents
               File           Contents
               SDB.LZH        SDB source level debuger

          2.4 Disk 4 contents
               File           Contents
               C.LZH          Small code, small data c & m libraries
               CL.LZH         Large code, large data c & m libraries
               CLC.LZH        Large code, small data c & m libraries
               CLD.LZH        Small code, large data c & m libraries
               M87.LZH        8087 math libraries (all memory models)
               MS.LZH         Sensing math libraries (all models);
               G.LZH          Graphics libraries
               S.LZH          Screen libraries

          2.5 Disk 5 contents

            Disk 5 contains the optional Level 2 extensions.
               File           Contents
               86SUP.LZH      LIB\86SUP source files
               DOS.LZH        LIB\DOS source
               GRAPHICS.LZH   LIB\GRAPHICS source
               INP.LZH        LIB\INP files
               LIB.LZH        LIB files
               MISC.LZH       LIB\MISC source
               MATH.LZH       LIB\MATH source
               ROM86.LZH      LIB\ROM86 source
               SCREEN.LZH     LIB\SCREEN source
               STDIO.LZH      LIB\STDIO source
               STDLIB.LZH     LIB\STDLIB source
               STRING.LZH     LIB\STRING source
               SYSIO.LZH      LIB\SYSIO source
               TIME.LZH       LIB\TIME source
               UTIL2.LZH      Programs for level 2 extensions

          2.6 Disk 6 contents

            Disk 6 contains the optional Level 3 extensions.
               File           Contents



Release notes                   page 4


Aztec C86, beta v5.2a                                                11/17/92

               LNKLOC.LZH     Advanced linker, locator, and hexer
                              programs
               RDB.LZH        Remote source level debugger


          3. New Features since v4.2a

            This section describes functional changes that have been
          made in going from the v4.2b release to the 9 April v5.2a beta
          release.

          3.1 Compiler changes

            The following paragraphs describe the changes that have been
          made to the compiler in going from version 4.2b to 5.2a.

          3.1.1 New compiler options
            -J Enable trigraph support.
            -F Generate prototypes for static functions, without
               generating executable code. Send prototypes by default to
               a file whose name is derived from input file, by changing
               the extension to .PRO. The -O option can be used to
               select the output file name. This option replaces the
               PROTO program.
            -X Generate prototypes for non-static functions, without
               generating executable code. Send prototypes by default to
               a file whose name is derived from input file, by changing
               the extension to .PRO. The -O option can be used to
               select the output file name.
            -W Preprocess source. Send preprocessed C source by default
               to a file whose name is derived from input file, by
               changing the extension to .PRE. The -O option can be used
               to select the output file name. This option replaces the
               CPP program.

          3.1.2 New predefined symbols
            __VERSION    Predefined with the version of the compiler. It
                         has the value 520;
            _LARGE_CODE  Predefined with value 1 if program is compiled
                         to use the large code memory model;
            _LARGE_DATA  Predefined with value 1 if program is compiled
                         to use the large data memory model;

          3.1.3 New language features

            Support for the following language features has been added
          to the v5.2 compiler:
            *  Initialization of auto aggregate variables;
            *  Trigraphs.

          3.1.4 New support for 8086 segmentation

            The compiler now allows you to define, using the new
          "#pragma segment" directive, the segments into which variables
          are placed. This directive has the following form:
               





Release notes                   page 5


Aztec C86, beta v5.2a                                                11/17/92

               #pragma segment [segname]
                    [class classname] [at addr] [near | far]
                    sym1, sym2 ...

          where the parameters have the following meanings:
                 sym1, sym2, ...
                              Symbols that are to be placed in a
                              specified segment;
                 segname
                              'segname' is the segment that's to hold
                              the symbols.
                 class classname
                              'classname' is the class in which the
                              segment is located. If not specified, the
                              class defaults to 'DATA'.
                 at addr      'addr' is the segment's starting address;
                 near | far   A NEAR segment is always accessible via
                              the DS segment register, and a FAR segment
                              is not. To access a FAR segment, the ES
                              register must first be loaded with the
                              segment's paragraph address. Defaults to
                              FAR.

            Previous versions of the compiler allowed you to specify
          that variables were to go into their own segments, but the
          compiler itself chose the names of these segments. With the
          ability to choose segment names yourself, and with the new ALN
          linker and ALOC locator, you can now easily position variables
          in special areas of memory. For example, if your system has
          memory-mapped I/O, you can create structure that matches the
          memory-mapped I/O section of memory, place that structure in
          its own segment, and position the segment at the memory-mapped
          I/O's section of memory.

            Previous versions of the compiler did not allow you to put
          near data items into special segments. With this capability,
          and with the new ALN linker and ALOC locator, you can now
          easily take advantage of battery-backed-up RAM. For example,
          you can place variables that should not be initialized on
          system startup in a  DS-accessible near segment, and position
          that segment at the beginning of RAM. The other standard
          Aztec-created, DS-accessible, near segments can be placed
          after the special segment in RAM, where they can safely be
          initialized on system startup.

          3.2 Assembler changes
            *  ORG directive now fully supported;
            *  The "AT addr" clause of the SEGMENT directive is now
               supported.

          3.3 DOS linker changes
            *  None.

          3.4 Library changes
            *  Libraries are now ANSI compatible (previously they were
               K&R compatible). Probably the main change you will have
               to make to your programs is to change your calls to
               fopen(), to support fopen's TEXT and BINARY modes.



Release notes                   page 6


Aztec C86, beta v5.2a                                                11/17/92

            *  The time() function now returns the current time as the
               number of seconds that have elapsed since Jan 1, 1970.
               Previously it returned the current time in the format
               used for file directory time fields.

          3.5 Include file changes
            *  Include files are now completely ANSI compatible
               (previously they were K&R compatible).

          3.6 Level 2 extensions for creating ROMable code

            The optional Level 2 extensions contain components for
          creating ROMable code of systems whose segmentation
          requirements are not too demanding. For example, a typical
          system might have its code in one set of ROM chips and its
          data in one set of RAM chips.

            These components are:
            *  The HEX86 utility that was in v4.2b, for converting a
               program into Intel hex code;
            *  BEGIN-SD.ASM and HEAP-SD.ASM, the startup and heap
               management routines for programs that use the small data
               memory model;
            *  BEGIN-LD.ASM and HEAP-LD.ASM, the startup and heap
               management routines for programs that use the large data
               memory model;

            The heap management routines are new; the routines in 4.2b
          and earlier releases were for DOS-based systems.

            BEGIN-SD.ASM and BEGIN-LD.ASM have replaced the ROM86.ASM
          startup routine that was in 4.2b. They were changed so that
          they now initialize the heap as required by the new heap
          management routines.

          3.7 Level 3 extensions for creating ROMable code

            The new, optional, Level 3 extensions to Aztec C86 contain
          the following utility programs and startup code for creating
          multi-segmented romable code:
            *  The ALN linker. This program links object modules
               together, and outputs a relocatable object module. The
               input modules can be in Aztec object format, Microsoft
               OMF format, or Intel OMF format. The output module is in
               Intel OMF format.
            *  The ALOC locator. This program 'locates' an object module
               that is in relocatable Intel OMF format; that is, defines
               the starting memory addresses of the module's segments
               and converts relocatable items to absolute.
            *  The AHEX hexer. This program converts an object module
               that is in absolute Intel OMF format into Intel hex code
               or binary code.
            *  The ABEGINSD and ABEGINLD startup routines, which gain
               control when a program created with ALN, ALOC, and AHEX
               is activated.






Release notes                   page 7


Aztec C86, beta v5.2a                                                11/17/92

            For heap management, programs that use the Level 3
          extensions should use the heap management routines that are in
          the Level 2 extensions.

            ALN, ALOC, and AHEX are described at the end of this
          document. ABEGIN is described in the following section.

          3.8 The ABEGIN startup routine.

            ABEGIN is the startup routine that's used by programs that
          have been generated using the ALN, ALOC, and AHEX programs.

          3.8.1 ABEGIN files

            To support different memory models, ABEGIN is provided in
          two source files and four object module files, in directory
          LIB\ROM86. Source files:
               ABEGINSD.ASM   Source for programs that use small data
                              memory model;
               ABEGINLD.ASM   Source for programs that use large data
                              memory model;

            Object files:
               ABEGINSD.O     Object module for programs that use small
                              code, small data memory model. Generated
                              from ABEGINSD.ASM;
               ABEGINSD.OLC   Object module for programs that use large
                              code, small data memory model; Generated
                              from ABEGINSD.ASM;
               ABEGINLD.OLD   Object module for programs that use small
                              code, large data memory model; Generated
                              from ABEGINLD.ASM;
               ABEGINLD.OL    Object module for programs that use large
                              code, large data memory model. Generated
                              from ABEGINLD.ASM;

          3.8.2 Notes about ABEGIN
            *  By default, ABEGIN initializes a program's DATA class in
               RAM from a copy in ROM. The copy must immediately follow
               the program's CODE class in ROM.
            *  ABEGIN can optionally initialize a program's FAR_DATA
               class in RAM from a copy in ROM. This is the class in
               which the compiler by default places a program's far
               data. This class must immediately follow the program's
               DATA class in ROM.
            *  ABEGIN contains the target system's reset code, in the
               RESET_CODE segment. By default, AHEX will position this
               segment so that it resides at the system's reset vector
               location.
            *  ABEGIN contains code that will initialize an 80186. To
               enable generation of this code, assemble ABEGINxx.ASM
               with the symbol CPU_186 defined.
            *  The small data version of ABEGIN (ABEGINSD.ASM) puts a
               program's stack within the program's uninitialized data
               area, beginning at the location defined by symbol
               'cstack'. The number of paragraphs in the stack area is
               defined by the symbol 'stacksize', which defaults to 80h
               paragraphs.



Release notes                   page 8


Aztec C86, beta v5.2a                                                11/17/92

            *  The small data version of ABEGIN puts a program's heap
               right after the program's uninitialized data area. The
               number of paragraphs in the heap is defined by the symbol
               'heapsize', which defaults to 80h paragraphs.
            *  The large data version of ABEGIN (ABEGINLD.ASM) puts a
               program's stack right after the program's uninitialized
               data area. The symbol 'stacksize' defines the number of
               paragraphs in this area, and defaults to 80h paragraphs.
            *  The large data version of ABEGIN puts a program's heap
               right after the program's stack area. The symbol
               'heapsize' defines the number of paragraphs in this area,
               and defaults to 80h paragraphs.

          3.9 SDB changes
            *  There are now two versions of SDB: the regular SDB; and
               RDB, which allows remote source level debugging of a
               program that resides in another MSDOS/PCDOS- or ROM-based
               system.
            *  Both SDB and RDB have a new windowed interface, and
               hypertext help.
            *  INITSDB is no longer needed for configuring SDB.
            *  RDB and SDB occupy significantly more RAM memory than
               v4.10d SDB. This is not a problem for RDB, since the
               program being debugged resides in a separate machine. But
               it is a problem with SDB since it and the program being
               debugged must reside in the same system. Until we resolve
               this problem with SDB, which we will probably do by
               moving SDB up into extended memory, we are providing the
               v4.10d SDB, in file SDB410D.EXE, and INITSDB (for
               configuring the SDB410D).

          3.10 Z changes
            *  The command :se 50=1 can be used on VGA screens to
               display 50 lines.

          3.11 Other program changes

            Other new programs in v5.2 are these:
            *  XREF, which generates a cross-reference listing of symbol
               references and definitions in object modules.

            Programs that are no longer provided:
            *  PROTO, which has been replaced with the new compiler
               options -F and -X;
            *  CPP, which has been replaced with the new compiler option
               -W;
            *  ENGTOC;
            *  CTOENG;
            *  ARCV.

          3.12 Building libraries

            Library source is in the optional Level 1 extensions to
          Aztec C86. The INSTALL program will create a LIB subdirectory
          of the root Aztec directory and several subdirectories of LIB,
          and then install the source in these subdirectories.





Release notes                   page 9


Aztec C86, beta v5.2a                                                11/17/92

            You can build one or more libraries by CD'ing into the LIB
          directory and then invoking MAKE with codes that identify the
          libraries you want made. The codes and their associated
          libraries are:
            
                    ALL       All libraries
                    C_ALL     All C libraries
                    C         C.LIB
                    CL        CL.LIB
                    CLC       CLC.LIB
                    CLD       CLD.LIB
                    M_ALL     All M libraries
                    M         M.LIB
                    ML        ML.LIB
                    MLC       MLC.LIB
                    MLD       MLD.LIB
                    M87_ALL   All M87 libraries
                    M87       M87.LIB
                    M87L      M87L.LIB
                    M87LC     M87LC.LIB
                    M87LD     M87LD.LIB
                    MS_ALL    All MS (8087-sensing) math libraries
                    MS        MS.LIB
                    MSL       MSL.LIB
                    MSLC      MSLC.LIB
                    MSLD      MSLD.LIB
                    S_ALL     All S (screen) libraries
                    S         S.LIB
                    SL        SL.LIB
                    SLC       SLC.LIB
                    SLD       SLD.LIB
                    G_ALL     All G (graphics) libraries
                    G         G.LIB
                    GL        GL.LIB
                    GLC       GLC.LIB
                    GLD       GLD.LIB

            To build libraries, MAKE will invoke a second copy of MAKE,
          passing to it parameters that define what's to be made.

            For each library that it's to make, this second MAKE will do
          the following:
            
            *  CD into each required subdirectory of the LIB
               subdirectory and invoke a third copy of MAKE. This third
               MAKE will generate object modules for the library, from
               the source that's in the subdirectory.
            *  CD into the INP subdirectory and sort the names of the
               object modules that will go into the library, using the
               ORD utility;
            *  Build the library into the LIBS subdirectory of the LIB
               directory, using the LB utility.









Release notes                  page 10


Aztec C86, beta v5.2a                                                11/17/92

          4. New Features since the 4/9/92 beta

            This section describes changes that have been made since the
          9 April 92 beta release. It first describes functional changes
          that have been made, and then bug fixes.

          4.1 Compiler changes
            *  The new -M option causes the compiler to issue a warning
               if a function is called without a prototype being in
               scope.
            *  The new +T option causes $$var statements (used to access
               far data) to be put into the code segment instead of the
               data segment.

          4.2 Z changes
            *  On a VGA display, the command :se 50=1 can be used to
               display 50 lines.

          4.3 Library changes
            *  The new TimeFile2TM() function converts a time value
               that's in the format used for file directory time fields
               to the format that's used by the time() function.
            *  The new TimeTM2File() function converts a time value
               that's in the format used by the time() function to file
               system format.
            *  The graphics functions now support VGA modes 0x10, 0x11,
               0x12, and 0x13.
            *  The movblock() function has been changed. A length
               argument of 0 now means don't copy anything; used to mean
               copy 64kbytes.
            *  The scdir() function has been changed. When passed a
               NULL, it resets itself so that the next call can specify
               a new pattern.

          4.4 SDB/RDB changes
            *  The DI command causes sdb/rdb to display information
               about the debugger's heap usage.


          5. New features since the 10/4/92 beta

          5.1 SDB/RDB changes
            *  The name of the default configuration file for SDB and
               RDB has been changed to SDB.SET, from SDB.INI.
            *  The sequence in which SDB/RDB search for SDB.SET has been
               changed. On startup they look in the following places:
                 1. The current directory;
                 2. The directory whose name is assigned to the AZTEC
                    environment variable;
                 3. If SDB.SET is not found and AZTEC environment
                    variable doesn't exist, SDB.SET is created in the
                    current directory.

          5.2 CNM changes
            *  The -U option has been added, to display information
               about a module's unnamed symbols.





Release notes                  page 11


Aztec C86, beta v5.2a                                                11/17/92

          5.3 Library changes
            *  The following functions have been added:
                 +  fnsplit(), which breaks a file name up into drive,
                    path, filename, and extension components; Calling
                    sequence:
                         int fnsplit(char *name, char *drive, char *dir,
                         char *fname, char *ext);
                    where
                      -  name points at the name to be broken down;
                      -  drive points at the area where the name's drive
                         component is placed;
                      -  dir points at the area where the name's
                         directory component is placed;
                      -  fname points at the area where the name's
                         filename component is placed;
                      -  ext points at the area where the name's
                         extension is placed.
                 +  fnmerge(), which creates a file name from drive,
                    path, filename, and extension components. It has the
                    same arguments as fnsplit(); a complete file name is
                    built up from the drive, dir, fname, and ext args,
                    and stored in the area pointed at by name.
                 +  strdup(), which makes a copy of a string in the
                    heap. Calling sequence:
                         char *strdup(char *str);
                 +  lfind(), which performs a linear search of an array
                    for a specified item. Calling sequence:
                         void *lfind(void *key, void *base, size_t *num,
                         size_t width, int (*fcmp)(void *, void *));
                    where:
                      -  key points at the value to be located;
                      -  base points at the array to be searched;
                      -  num points at the number of array elements;
                      -  width is the width in bytes of each array
                         element;
                      -  fcmp points at a function that compares two
                         keys. The function returns 0 if the items are
                         identical, and non-zero if different.
                    lfind() returns a pointer to the matching array
                    element, or NULL if not found.
                 +  lsearch(), same as lfind(), except it appends the
                    item if not found. The calling sequence is the same
                    as for lfind().
                 +  min(), returns the lesser of two ints. Calling
                    sequence:
                         int min(int a, int b);
                    where a and b are the items to be compared.
                 +  max(), returns the greater of two ints. Calling
                    sequence:
                         int max(int a, int b);
                    where a and b are the items to be compared.
            *  The following symbols were added to the ABEGINSD.ASM and
               ABEGINLD.ASM startup routines:
                 +  NEAR_DATA_INIT. If 1, the initialized near data
                    segment (dataseg) is initialized from a copy in ROM.
                    If 0, this initialization is not done. Default
                    value: 1.




Release notes                  page 12


Aztec C86, beta v5.2a                                                11/17/92

                 +  FAR_DATA_INIT. If 1, the initialized far data class
                    FAR_DATA is initialized from a copy in ROM. If 0,
                    this initialization is not done. Default value: 0.
                 +  FAR_BSS_INIT. If 1, the uninitialized fat data class
                    FAR_BSS is cleared. If 0, FAR_BSS is not cleared.
                    Default value: 0.
                 +  CPU_186. Set to 1 if processor is an 80186/80188, or
                    0 if not. Default value: 0.

          5.4 The AI program

            AI is a new program that displays information about Aztec
          C86 programs. For information, type AI.

          5.5 Bug fixes

               Numerous bugs have been fixed, in programs, library
               functions, and include files. These fixes are described
               in the CHANGES.* files that are stored in the BIN,
               INCLUDE, and LIB subdirectories of the main Aztec
               directory. Once you've finished examining these files,
               you can delete them.







































Release notes                  page 13