The following is a description of the fixes and changes in the free update to
the Microsoft QuickBasic compiler. All users of Q […]
Show full quote
The following is a description of the fixes and changes in the free update to
the Microsoft QuickBasic compiler. All users of QuickBasic who sent in their
registration cards should have received notification of the update. Contact
Microsoft if you sent in your card and were not notified. If you did not send
in your registration card, you should do so right away or contact Microsoft if
you can't locate the card.
This file is reproduced with permission from Microsoft Corporation.
Microsoft QuickBasic Compiler version 1.02
UPDATE.DOC
Jan. 27, 1986
Several changes have been made to this version of the QuickBasic
compiler. They are listed below.
- When the device "SCRN:" is opened for output, the output
will be double spaced. For example, consider the follow-
ing program:
OPEN "SCRN:" FOR OUTPUT AS #1
PRINT #1,"LINE 1"
PRINT #1,"LINE 2"
PRINT #1,"LINE 3"
CLOSE
The resulting output will be double spaced, as follows:
LINE 1
LINE 2
LINE 3
The correct output would be single spaced. The next
release of the compiler will correct this problem. In
the meantime, one way to work around this problem
is to open the device "CONS:" instead of "SCRN:"
This works as expected (single spaced output) unless
you are mixing PRINTing to the "CONS:" device and
regular PRINT statements to the screen. Since DOS
keeps track of cursor position when the "CONS:" device
is used and QuickBASIC keeps track of cursor position
when regular PRINT statements are used, it is possible
to interleave output to the screen. In that case,
modifying the sample program as follows will be the
preferred work around:
OPEN "SCRN:" FOR OUTPUT AS #1
PRINT #1,"LINE 1";CHR$(13);
PRINT #1,"LINE 2";CHR$(13);
PRINT #1,"LINE 3"
Note the addition of ";CHR$(13);" should be made to
each PRINT statement except the last. WRITE-ing to
"SCRN:" behaves the same as PRINTing, and the same
work arounds apply.
- PRINTing to an area not in a VIEW port now correctly
generates an error.
- A combination of error processing (ON ERROR...) and illegal
parameters in STICK and KEY ON could hang the machine.
Corrected.
- In version 1.0, if the user ran out of memory when returning
from SHELL, the machine could hang. Corrected.
- When no line numbers were used, sometimes FOR/NEXT loops
would not execute the correct number of times. Corrected.
- The utility program REMLINE.BAS will correctly handle multiple
GOSUBs on the same line.
- INKEY$ has been corrected so that it will no longer go
to the keyboard if standard input is redirected.
- The third parameter of the CLEAR statement now works properly.
- QuickBasic will now restore vectors EF and F0 upon program
termination and SHELL.
- Arithmetic involving elements of dynamic arrays now works
properly.
- A "DISK FULL ERROR" could occur erroneously. Corrected.
- Source files formatted with Microsoft WORD could cause the
compiler to generate a "Too Complex" error. Corrected.
- The listing file now reflects the correct version number,
1.02.
- An error in which dynamic arrays in COMMON would result in
syntax errors in graphics GET and PUT statements has been
corrected.
- Closing a file in a multiline function and then accessing the
file did not give an error. Corrected.
- Compression of the heap when DIMensioning dynamic arrays could
clobber the arrays. Corrected.
- Output to different printer device names was inconsistent.
Corrected.
- Using an integer variable in LOCK and UNLOCK statements was
not handled properly. Corrected.
- Illegal parameters in LOCATE statement did not always generate
the correct error message. Corrected.
- If a dynamic array was erased in a multiline function,
subsequent attempts to access elements of it would not give
an error. Corrected.
- Elements of static arrays passed to subroutines can now be
used in arithmetic expressions.
- Printing control characters to the screen now does the same
thing in QuickBasic as in IBM's BASICA.
- Opening the device "LPT1:" in random mode could sometimes
cause "String Space Corrupt" errors later in the program.
This has been corrected.
- An error 14, "Out of String Space" now occurs when the user
program runs out of string space, instead of error 7 ("Out of
Memory").
- QuickBasic now handles CHR$(10) (linefeed) and CHR$(13)
(carriage return) when printed to the screen, the same way
IBM's BASICA does.
- QuickBasic will now recognize drive Z: on a network.
- The PLAY statement will now work even if a subroutine (in
assembly language) has disabled the speaker port.
- The WIDTH command now works correctly with the device "LPT1:".
- The KILL statement using complex string expressions no longer
will give "Too Complex" errors.
- When filenames are too long, they are now shortened accor-
ding to MS-DOS conventions.
- CHAIN with some files open could cause the machine to hang.
Corrected.
- SWAPping elements of an integer array in a subroutine could
cause the system to hang. Corrected.
- "GET #n,0" will now generate an error message.
- Imbedded form feeds (CHR$(12)) and vertical tabs (CHR$(11))
in source files created by Microsoft WORD were not being
handled correctly. Corrected.
- The key sequences ALT-128, ALT-254, and ALT-255 are now
handled as they are in IBM's BASICA.
- Redefined function keys on line 25 now work correctly.
- Repeatedly printing the same element of a dynamic array could
cause garbage to be printed. Corrected.
- PAINT, in a VIEW port, that was not on a boundary, could be
ragged. Corrected.
- The IMP logical operator did not work properly if both
arguments were the same. Corrected.
- Sometimes, very large complex programs would cause the
compiler to give a spurious syntax error. Corrected.
ICA.
- Redefined function keys on line 25 now work correctly.
- Repeatedly printing the same element of a dynamic array could
cause garbage to be printed. Corrected.
- PAINT, in a VIEW port, that was not on a boundary, could be
ragged. Corrected.
- The IMP logical operator did not work properly if both
arguments were the same. Corrected.