home *** CD-ROM | disk | FTP | other *** search
- "README.DOC" File
- Release Notes for MICROSOFT(R) QuickBASIC Version 4.5 for
- IBM(R) Personal Computers and Compatibles
-
- (C) Copyright Microsoft Corporation, 1988
-
- THIS FILE CONTAINS IMPORTANT INFORMATION CONCERNING VERSION 4.5 OF
- MICROSOFT(R) QuickBASIC. PLEASE READ THE ENTIRE FILE BEFORE USING
- QuickBASIC.
-
- This file has seven parts:
-
- PART CONTENTS
-
-
- 1 Information about additions and changes to the
- Learning to Use Microsoft QuickBASIC
-
- 2 Information about additions and changes to the
- manual Programming in BASIC
-
- 3 Using your Mouse with QuickBASIC
-
- 4 Supplementary information on mixed-language programming
-
- 5 Using Btrieve with QuickBASIC
-
- 6 Using the DOS 3.2 patch for math accuracy
-
- 7 Miscellaneous information about using QuickBASIC
-
- ===< Part 1: Learning to Use Microsoft QuickBASIC >
-
- No entries yet for this part
-
- ===< Part 2: Programming in BASIC >
-
- No entries yet for this part
-
- ===< Part 3: Using Your Mouse with QuickBASIC >
-
- --------------< New Mouse Driver for Use with QuickBASIC >------------------
-
- QuickBASIC Version 4.5 can be used with any mouse that is 100%
- compatible with the Microsoft Mouse. However, you must use a
- Microsoft Mouse driver Version 6.00 or later. Earlier versions may
- cause unpredictable behavior when used with QuickBASIC. MOUSE.COM,
- Version 6.24 is supplied with QuickBASIC Version 4.5.
-
- Especially if you are writing programs that use the mouse, you
- should use the supplied version of the mouse driver when working in
- QuickBASIC. Previous versions have included MOUSE.SYS, which is
- installed by including the line DEVICE=MOUSE.SYS in your CONFIG.SYS
- file. This version of QuickBASIC includes MOUSE.COM, which is not
- installed via CONFIG.SYS. To install MOUSE.COM, just type MOUSE at
- the DOS prompt. To include MOUSE.COM automatically when your machine
- boots, make sure MOUSE.COM is in your search path, then put the line
-
- MOUSE
-
- in your AUTOEXEC.BAT file. To free up memory, you can remove the
- mouse driver at any time by typing MOUSE OFF at the DOS prompt.
- This will restore between 9K and 10.5K of memory with Version 6.11.
-
- --------< Using Mouse Function Calls from QuickBASIC Programs >------------
-
- If you are programming for the Microsoft Mouse, you should obtain
- the Microsoft Mouse Programmer's Reference Guide and the library
- MOUSE.LIB that comes with it. (These are not included in QuickBASIC
- or Mouse package and must be ordered separately). Most of the
- information in the Mouse Programmer's Reference Guide applies
- directly to QuickBASIC Version 4.5. However, the following additional
- restrictions must be observed:
-
- Certain Mouse function calls (Functions 9 & 16) require you to set
- up an integer array and pass the address of the array to the mouse
- driver. For previous versions, the only restriction on this array
- was that it had to be $STATIC (the default array type). In QuickBASIC
- Version 4.5, however, the array also must be in a COMMON block if you
- will be making the Mouse function call from within the QuickBASIC
- environment. In addition, it is recommended that the support code
- for the Mouse call be in a Quick library or linked into the
- executable file when making Mouse function calls from QuickBASIC.
-
- To produce a Quick library for using Mouse function calls from
- within the QuickBASIC environment, use the following command line
- (produces MOUSE.QLB):
-
- LINK MOUSE.LIB/QU,MOUSE.QLB,,BQLB40.LIB/NOE;
-
- An example from PIANO.BAS (included with the Microsoft Mouse
- Programmer's Reference) for using Mouse function call 9:
-
- DEFINT A-Z
- DECLARE SUB MOUSE (M1, M2, M3, M4)
- DIM Cursor(15, 1)
- COMMON Cursor() 'Ensures array data is in DGROUP
- .
- . (set up Cursor() for mouse cursor shape desired)
- .
- M1 = 9: M2 = 6: M3 = 0
- CALL MOUSE(M1, M2, M3, VARPTR(Cursor(0, 0)))
-
- In addition to the above, note that Mouse function calls 21-23
- require dynamically allocated storage out of the home data segment.
- The recommended way to do this is to allocate space in a dynamic
- string variable based on the return value from function call 21,
- using the STRING$ or SPACE$ function. Then use VARPTR on this string
- variable just prior to calling Mouse function call 22 or 23.
-
- ===< Part 4: Supplementary Information on Mixed-Language Programming >
-
- --------< Linking from within QuickC or with QCL >--------------------------
-
- Microsoft QuickC and the QCL command both set the /NOI linker
- by default. Therefore, you should not link from within QuickC, or
- with QCL, when your program contains modules written in a case-
- insensitive language such as BASIC. Use LINK to link your program
- from the command line.
-
- --------< Pascal and Fortran Modules in QuickBASIC Programs >---------------
-
- Modules compiled with Microsoft Pascal or Fortran can be linked with
- BASIC programs, as described in the Microsoft Mixed-Language
- Programming Guide. They can also be incorporated in Quick libraries.
- However, QuickBASIC programs containing code compiled with Microsoft
- Pascal must allocate at least 2K near-heap space for Pascal. This can
- be done by using the DIM statement to allocate a static array of 2K or
- greater in the NMALLOC named common block, for example, as follows:
-
- DIM name%(2048)
- COMMON SHARED /NMALLOC/ name%()
-
- The Pascal run-time assumes it always has at least 2K of near-heap
- space available. If the Pascal code cannot allocate the required
- space, QuickBASIC may crash. This applies to Pascal code in Quick
- libraries as well as Pascal code linked into executable files. The
- situation is similar for Fortran I/O, which also requires near
- buffer space, and which can be provided by the same means as the
- Pascal near malloc space.
-
- --------< STATIC Array Allocation >---------------------------------------
-
- If you are writing assembly-language modules for use in QuickBASIC
- programs, see Section 2.3.3, "Variable Storage Allocation," in the
- BASIC Language Reference. Assembly-language code should not assume
- data is in a particular segment. To avoid problems, pass data using
- the SEG or CALLS keywords, or use FAR pointers. Alternatively, you
- can declare all arrays dynamic (still using far pointers) since
- dynamic arrays are handled identically by BC and within QuickBASIC.
-
- --------< Quick Libraries with Leading Zeros in the First Code Segment >--
-
- A Quick library containing leading zeros in the first CODE segment
- is invalid, causing the message "Error in loading file <name> -
- Invalid format" when you try to load it in QuickBASIC. For example,
- this can occur if an assembly-language routine puts data that is
- initialized to zero in the first CODE segment, and it is subsequently
- listed first on the LINK command line when you make a Quick library.
- If you have this problem, do either of the following:
- (1) link with a BASIC module first on the LINK command line, or
- (2) make sure that, in whatever module comes first on the LINK
- command line, the first code segment starts with a non-zero byte.
-
- --------< References to DGROUP in Extended Run-time Modules >-------------
-
- For mixed-language programs that use the CHAIN command, you should
- make sure that any code built into an extended run-time module does not
- contain any references to DGROUP. (The CHAIN command causes DGROUP to
- move, but does not update references to DGROUP.) This rule applies
- only to mixed-language programs; because BASIC routines never refer
- to DGROUP, you can ignore this caution for programs written entirely
- in BASIC.
-
- To avoid this problem, you can use the value of SS, since BASIC always
- assumes that SS coincides with DGROUP.
-
- ===< Part 5: Using Btrieve >
-
- -------------------< Using Btrieve in OS/2 Protected Mode >--------------------
-
- In OS/2 protected mode, a BASIC program that uses Btrieve must do a
- Btrieve reset call (function 28) before executing the CHAIN statement.
- The program must also reopen all Btrieve files when the destination of
- the CHAIN starts to run.
-
- --------------------< Using Btrieve with QuickBASIC >--------------------------
-
- If you use Btrieve with QuickBASIC, you must make a small change to
- your programs for QuickBASIC Version 4.5. Currently your programs
- contain a statement that obtains the address of the field buffer for
- an open file. For example:
-
- OPEN "NUL" AS #1
- FIELD #1, 20 AS CITY$, 10 AS STATE$
- FCB.ADDR% = VARPTR(#1) 'This statement obtains the address
-
- In QuickBASIC Version 4.5, you should change the indicated statement
- to return the address of the first variable in your field buffer minus
- a constant, as follows:
-
- OPEN "NUL" AS #1
- FIELD #1, 20 AS CITY$, 10 AS STATE$
- FCB.ADDR% = SADD(CITY$) - 188 ' CITY$ is the first field
- ' buffer variable
-
- The following example shows how to obtain the same address for a
- user-defined type:
-
- TYPE ADDRESS
- CITY AS STRING * 20
- STATE AS STRING * 10
- END TYPE
-
- DIM ADD1 AS ADDRESS
-
- FCB.ADDR% = VARPTR(ADD1) - 188
- ' or, you can use FCB.ADDR% = VARPTR(ADD1.CITY) - 188
-
- Your programs should function correctly with Btrieve with this change.
-
- ===< Part 6: DOS 3.20 Patch >
-
- This information is important only if your system has ALL of the following
- characteristics:
-
- 1. Uses MS-DOS version 3.20
- 2. Boots from a hard disk drive
- 3. Has a math coprocessor (for instance, an 8087 chip)
- 4. Runs programs that use floating-point math
-
- For systems that satisfy all of the preceding conditions, you may be able to
- eliminate floating-point math problems by installing a small patch in DOS. If
- you are not sure whether you need the patch, perform the following steps:
-
- 1. Copy the program PATCH87.EXE (included in this release) to the root
- directory of your hard-disk drive.
-
- 2. Reboot your system from the hard disk, and DO NOT PERFORM ANY FLOPPY-
- DISK OPERATIONS after rebooting. It is very important that you avoid
- floppy-disk I/O after rebooting, since that will affect the reliability
- of the diagnostic test that you are about to perform.
-
- 3. If necessary, use the CD command to move to the root directory of your
- hard-disk drive.
-
- 4. Run the PATCH87.EXE program by entering this command at the DOS prompt:
-
- PATCH87
-
- 5. The program performs a diagnostic test on your system to determine
- whether it needs the DOS patch, and if the patch is needed,
- whether the patch can be installed successfully. If the program tells
- you that you need to install the DOS patch, and that it can be done,
- follow the procedure described in the next section.
-
- NOTE: The floating-point problem has been eliminated in versions of
- MS-DOS higher than 3.20. This includes MS-DOS versions 3.21 and 3.30.
-
- If you performed the preceding test and determined that you should install the
- DOS patch on your system, perform the following steps:
-
- 1. Format a blank floppy disk. (Do NOT use the /s formatting option to
- transfer system files to the disk.)
-
- 2. Use the SYS command to copy IO.SYS and MSDOS.SYS from the root
- directory of your hard disk to the new floppy disk. For instance, if
- you boot from drive C:, you would enter the following commands:
-
- C:
- SYS A:
-
- 3. Use the COPY command to copy COMMAND.COM and SYS.COM to the same
- floppy disk.
-
- 4. Use the COPY command to copy the program PATCH87.EXE (included in this
- release) to the same floppy disk.
-
- 5. Change the current drive and directory to the floppy disk, by entering
- the following command:
-
- A:
-
- 7. Install the DOS patch by entering the following command:
-
- PATCH87 /F
-
- WARNING: If you experience any disk errors during steps 2 through 7,
- do NOT proceed with step 8. Reboot from your hard disk and repeat the
- entire process.
-
- 8. If you have not experienced any errors, use the SYS command to transfer
- the files IO.SYS and MSDOS.SYS from the floppy disk back to your hard
- disk. For instance, if the boot directory of your system is the root
- directory of drive C:, you would enter the following command at the DOS
- prompt:
-
- A:
- SYS C:
-
- 9. The DOS patch has been installed. Reboot the system.
-
- ===< Part 7: Miscellaneous Information About Using QuickBASIC >
-
- ----------------------< Using FIXSHIFT.COM Utility >-----------------------
-
- Some keyboards have an extra set of DIRECTION (i.e. arrow) keys, in
- addition to those on the numeric keypad. A bug in the ROM BIOS of
- some machines with these keyboards can interfere with the QuickBASIC
- editor. The Utilities 2 disk includes a program, FIXSHIFT.COM, that
- fixes this bug. If you have such a keyboard, run this program by typing
- FIXSHIFT. If your machine does not have the bug, FIXSHIFT displays a
- message telling you so. Otherwise FIXSHIFT prompts you for the proper
- actions. FIXSHIFT takes about 450 bytes of memory. Except for the BIOS
- bug, it has no effect on other programs you run.
-
- ----------------------< Note on VGA Display Adapter >----------------------
-
- If you install an IBM (R) Personal System/2 (TM) Video Graphics
- Array display adapter (VGA) in a non-PS/2 machine, the VGA adapter
- should be the only adapter in the system, and you should not use
- monochrome modes (SCREEN 10) if you have a color monitor. Similarly,
- you should not use color modes (SCREEN 1, 2, 7, 8, 9, 11, 12, 13) if
- you have a monochrome monitor.
-
- -------------------< Note on Using QuickBASIC with DOS 2.1 >----------------
-
- To use QuickBASIC with a two-floppy system under DOS 2.1, you must
- put a copy of COMMAND.COM on each disk containing an executable
- file ( a file with the .EXE extension).
-
- -------------< PTR86, LOF, Naming SUB procedures and variables >------------
-
- PTR86 is no longer supported. Use VARSEG and VARPTR instead.
- Also, when used with a communications device, LOF now returns the
- amount of space remaining (in bytes) in the output buffer. In
- previous versions this was returned in the input buffer. Also, note
- that a variable and SUB procedure could have the same name in
- previous versions. In Version 4.5, this causes a "Duplicate
- definition" error message.
-