1
                              README.DOC File
                    
                           Release Notes for the
               Microsoft(R) QuickC(R) Compiler, Version 2.50

              (C) Copyright Microsoft Corporation, 1988-1990

This document contains release notes for Version 2.50 of the Microsoft(R)
QuickC(R) Compiler.  The information in this document is more current than
the information in the manuals.  Where this file conflicts with printed
documentation, you should assume that this file is correct.

Microsoft revises its documentation at the time of reprinting; the manuals
may already include some of this information.

Note: If you're reading this from within online help, but would prefer to
print it out by loading README.DOC into a word processor, you can find the
file in the executable files directory (the default is \QC2\BIN).  If
you're using a word processor to read this, you already know where it is.

The only other documentation file in QuickC is \SAMPLES\SAMPLES.DOC, which
explains the example programs in the SAMPLES directory.

(COMPAQ is a registered trademark of Compaq Computer Corporation.)
(Novell is a registered trademark of Novell, Inc.)
(Intel is a registered trademark of Intel Corporation.)

===============================< Contents >================================

This file has three parts:

          Part           Notes
          ----           --------------------------------------
            1            Notes on "Up and Running"
            2            Notes on "C for Yourself"
            3            Notes on "QuickC Tool Kit"
            4            Notes on "QuickC Update" 



===================< Part 1: Notes on "Up and Running" >===================

      QuickC version 2.5 is incompatible with QuickAssembler version
      2.01.

Page  Note
----  ----
Inside Front Cover
      Brief Guide to Keystrokes
---   -------------------------
      The chart on the inside front cover says the ESC key "stops the
      compiler and linker from continuing."  ESC stops the compiler but NOT
      the linker.  Press CTRL+BREAK to stop both the compiler and linker.
	
      If you are using the debugger and running a program that expects
      keyboard input, pressing either CTRL+C or CTRL+BREAK and then ENTER
      will allow you to exit.

  6   Running SETUP
---   -------------
      If you already have QuickC installed, SETUP will overwrite the
      existing QC.INI file that contains the current compiler options,
      etc. set in the environment. If you wish to save those settings,
      rename this file before running SETUP.

 19   Using QuickC
---   ------------
      If you own a COMPAQ(R) SLT/286, and the LCD display goes
      blank when exiting from QuickC back to DOS, you should
      run the program DAC_ON.COM before loading QuickC. To obtain a
      copy of DAC_ON.COM contact your authorized COMPAQ Computer
      Dealer.

 42   The Debugger
---   ------------
      You may see the message "currently running program terminated"
      while debugging.
      
      This may happen if your program is linked with a user-created
      library module that contains debugging information, and for
      which the source files are present. In such a case, single-
      stepping into a function contained in the library will cause
      the debugger to terminate the current program, and attempt to
      compile the source files for the library module into an
      executable program.

      You can avoid this problem by setting your program list to
      contain only the name of the source file of your program.

(miscellaneous)

      accessing memory at 0xffff
      --------------------------
      Due to a problem with the Intel(R) processor, any attempt to
      access a word value at memory location 0xFFFF may cause the
      system to hang. The most likely way for this to happen is from
      within the QuickC debugger, if you use the WO (display word) or
      DW (display double word) operators to examine a register 
      containing 0xFFFF. Any C or assembly language program that tries
      to access that location may also cause the system to hang.
 
      Incompatibility with Novell Netware
      -----------------------------------
      If you have a peripheral (such as a mouse) that uses IRQ 3, and
      your system is part of a network using Novell(R) Netware version
      2.15 or lower, your system may hang when you load the QuickC
      environment. As a temporary solution, reset your peripheral to
      use another interrupt. For more information, contact your Novell
      Netware dealer.

      
===================< Part 2: Notes on "C for Yourself" >===================

Page  Note
----  ----

 53   Type Qualifiers
---   ---------------
      The fourth paragraph in this section is incorrect.  A long double
      value is the same size as a double.  It contains 8 bytes, not 10.  It
      expresses a floating-point number with at least 15 digits of
      precision, not 19.  Table 4.1 on page 49 should also be corrected.

 164  Declaring a Pointer with the Wrong Type
 ---  ---------------------------------------
      In the first program listing on the page, the line

           ptr = val;      /* Error! */

      should read

           ptr = &val;     /* Error! */

 215  Table 11.4   Standard vs. Low-Level
 ---  -----------------------------------
      The headings across the top of the table should read 

         Function     Parameters        Returns        Error Condition

 298   Vector-Mapped Fonts
 ---   -------------------
      Add this note to the description of vector mapping:

      If a vector-mapped font is selected in graphics mode, any
      function affecting the _moveto or _lineto functions (such as the 
      _setlinestyle function) will also affect the font when
      "_outgtext" is called.

 304  Example Program Using Fonts
 ---  ---------------------------
      The line reading

           if( !_setfont( list ) )

      should read

           if( _setfont( list ) >= 0 )

 309   Limits on _asm Identifiers
 ---   --------------------------
      Never use reserved assembly words as labels, variable names, or other
      identifiers within an _asm block.  This includes words in the
      following categories:

         - ASM Opcodes such as CMP or MOV
         - Opcodes new to the 80186, 80286, and 80386 such as ARPLS or CLTS
         - Reserved operand words such as WORD or PARA
         - C library functions such as "exit" or "time".

      For example, the following code is not permitted:

         main()
         {
            int word;
            _asm { mov WORD PTR [word],ax }
         }

      The variable 'word' can be used in the C part of the program, but not
      within the assembly block.

 366  Font Display Routines
 ---  ---------------------
      The return values for the _registerfonts and _setfont functions
      should be

      _registerfont

      Returns: the number of fonts registered, or a negative value if
               failure

      _setfont

      Returns: a negative value if failure, zero or positive if
               successful

==================< Part 3: Notes on "QuickC Tool Kit" >===================

Page  Note
----  ----

  94  /Gw, GW (Generate Code for Windows Function Calls)
 ---  --------------------------------------------------
      QuickC 2.5 supports development of programs for the next release
      of Windows. If you wish to develop programs for Windows 2.03, you
      must explicitly link your program with C51STUBS.LIB.

 130  /INC (Prepare for ILINK)
 ---  ------------------------
      By default, ILINK will call LINK if the incremental link fails.
      To make ILINK call QLINK instead, use the /E option and an
      argument. For example:

               ILINK /E "QLINK @RESPONSE" PROGRAM.EXE

 259  Warning Message C4018
 ---  ---------------------
      The warning message below is new and should be added to page 259:

      C4018   'operator': signed/unsigned mismatch

      An expression involving the specified operator had inconsistent
      integer types. The two integer expressions used in the comparison
      operation are not of the same signed or unsigned type.

(miscellaneous)

      makefile compatibility with QuickC 2.0
      --------------------------------------
      The name of the linker supplied with QuickC has been changed
      from LINK to QLINK. Any makefiles used with QuickC 2.0 that
      specify the LINK command should be changed accordingly.

      makefile compatibility with the Programmer's WorkBench
      ------------------------------------------------------

      The makefiles generated by QuickC are not fully readable by the
      Programmer's WorkBench (PWB) included with Microsoft's
      professional development systems. PWB is unable to read the
      linker options specified in QuickC makefiles, so you will have to 
      respecify those options using PWB's menus. QuickC cannot read
      makefiles generated by PWB.

      Assembler error message
      -----------------------

      If you are using QCL to invoke MASM for .ASM files, you may see
      the following error message when assembling very large files.

      A1009   unable to open input file

      This message may appear when MASM is out of memory. Try dividing
      your source file into smaller files.

==================< Part 4: Notes on "QuickC Update" >===================

      The "QuickC Update" book is included only if you are updating
      from Quick 2.0 to 2.5.

Page  Note
----  ----

  26  Compiler Options
 ---  ----------------
      If you have the Microsoft C Optimizing Compiler version 5.1 or
      earlier, and you wish to use the CodeView debugger, do not use
      the /Gi option (for incremental compilation), or the related
      /Li linker option (for incremental linking). You can use the
      QuickC integrated debugger, or the CodeView debugger included
      with the Microsoft C Professional Development System version 6.0,
      on programs compiled with /Gi or /Li.
 1:1