"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.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.