Microsoft KB Archive/34286

From BetaArchive Wiki
Knowledge Base


README File for QuickBasic Compiler 1.00 for Apple Macintosh

Article ID: 34286

Article Last Modified on 1/8/2003



APPLIES TO

  • Microsoft QuickBasic Compiler for Macintosh 1.0



This article was previously published under Q34286

SUMMARY

The following article contains the complete contents of the README file distributed with Microsoft QuickBasic version 1.00 for the Apple Macintosh.

MORE INFORMATION

   README File

              Release Notes for Microsoft QuickBasic for
                     Apple Macintosh Systems
                          Version 1.0

                Copyright Microsoft Corporation, 1988

This document contains information about version 1.0 of Microsoft
QuickBasic for the Macintosh and its associated libraries.

The information in this document is more up to date than that in the
manuals.

Microsoft updates its languages documentation at the time of
reprinting, so some of the information in this on-line file may
already be included in your manuals.

You may want to print this file to supplement your manual.

Requesting Assistance from Microsoft

If you need to contact Microsoft Technical Support for assistance, the
phone number is (425) 646-5101. [phone changed from original README]

Contents

This file has four parts.

Part        Note

1          Notes for the Microsoft QuickBasic Language Reference
2          Notes for the Microsoft QuickBasic User's Guide
3          Printing Graphics
4          Warnings and Notes

Part 1: Notes for the Microsoft QuickBasic Language Reference

Page   Note

184    LIST Command (Undocumented Command Feature)

       You can move to a specific numbered or labeled line by typing
       "LIST <line>" in the command window. The compiler does not
       allow this command in a program.

323    System Function (New SYSTEM(7) Function)

       SYSTEM(7) returns the file reference number of the resource
       fork of the program source file when the program is
       interpreted. It returns the file reference number of the
       application resource fork in a compiled application. SYSTEM(7)
       can be combined with the GetPathName subprogram to find your
       program's full path name. See the "GetPathNames" demo program
       on the Examples disk.

418    Using the Statement Mover Program

       Compile Statement Mover for speed. Unlike previous versions of
       Statement Mover, this one does not automatically move LIBinits.
       If your library requires LIBinits, you must copy it.

419    The Library Statement - Custom LIBinit and LIBterm

       These routines are called only with LIBRARY and LIBRARY CLOSE.
       If your custom libraries need LIBinit and LIBterm, you must
       explicitly call them, or use LIBRARY and LIBRARY CLOSE.

421    The Library Statement - Calling Library Routines

       You now need to specify a type ('&','!', '#') for a library
       call only after DEFSTR; DEFINT no longer requires a type. For
       example:

       DEFINT a-z
       DrawText "No more exclamations on library invocations!"

483    Reference Guide for Toolbox Library Statements

       These new library routines were added after the manual was
       printed.

       Routine and Description

475    BackColor color
       color: see the description under the ToolBox ForeColor call for
       the values of "color." This routine is faster than the ToolBox
       version and the "color" argument more flexible.

475    BlockMove sourceAddr&,destAddr&,bytes&
       sourceAddr&: address to begin copying from
       destAddr&: address to begin copying to
       bytes&: number of bytes to copy
       BlockMove works even when the areas overlap.

477    CopyFile sourceFile$,destName$
       Copies the file with name sourceFile$ to destName$. Copies both
       the data and resource forks of the file.

479    Eject
       Ejects the disk in the internal drive. This is an MBPC resource.

480    Exists fileName$,flag%
       fileName$: full path of file, or simple name in current folder
       flag%: 0 = file does not exist, 1 = file exists

480    ForeColor color
       See BackColor

481    GetCatInfo IOPB%(0),FileName$[,DirID&][,VolRefNum%] [,DirIndex%]
       GetFCBInfo IOPB%(0),FileName$[,ioRef%][,VolRefNum%] [,FCBIndex%]
       DIM IOPB%(128)
       See the "GetPathName" demo on the Examples Disk or Inside
       Macintosh Vol. 4 for more details of these calls.

481    GetChanRefNum% Chan%,RefNum%
       Returns the file reference number of the file with QB channel
       number Chan%. Chan% is the file number you opened the file
       under (OPEN f$ AS #1).

482    GetHandleSize h&,size&
       Returns the size of a resource in bytes when given the
       resource's handle.

519    ScrollText H&,rec%(0),a$(0),top%,rows%[,num%[,delay%[,leading%]]]
       Scrolltext now has an additional optional parameter that
       specifies the leading (space between lines) in pixels. The
       default is 4 pixels.

523    SubLaunch appName$ [,fileName$] [,finderMsg%] [,fileType$]
       appName$: full path name of application to sublaunch
       fileName$: full path name of file to Open or Print.
       finderMsg%: 0 = Open, 1 = Print, 256 = Compile (QB only)
       fileType$: type of file fileName$.

527    Controlling Memory (Loading Files)

       Since QB initially allocates one third of the memory listed in
       the SIZE resource to the data area (about 100K), and QB reads
       your program into the data area, programs larger than 100K
       produce the "Out of memory" error. You can change the SIZE
       resource either with ResEdit or with "Get Info" for QB under
       MultiFinder, Finder 6.1 or later.

527    How Much Memory Do I Need?

       Most programs will never need to change memory allocations, but
       programs with huge data requirements may use the CLEAR
       statement to access more memory:

       '    Leave some heap for Desk Accessories and printer drivers.
       '    100K is a good starting point.
       heap&=100*1024&
       max&=FRE(0)+FRE(1)-heap&
       CLEAR ,max&

       You will seldom need CLEAR's stack argument. Since the stack
       uses very little memory, there is usually no need to reduce it.

       In programs with CHAINed modules, you may have to change the
       stack size for the compiled application if you get "error 7" at
       the CHAIN statement. Compile all the modules with the "Create
       Program List File" option on and look in the listings under
       STORAGE in the "Symbol and Label Tables for: MAIN." Your main
       module needs to clear enough stack space for the largest
       STORAGE entry with code similar to this:

       '   As above, heap& is the heap space. stack& is the stack space
       heap&=100*1024&    'fill in the actual heap& you want to leave
       stack&=10000&      'use value from 'lst' file for the largest module
       IF SYSTEM(4) THEN  'compiled
          CLEAR,FRE(0)+FRE(-1)-heap&-stack&,stack&
       ELSE    'interpreted
          CLEAR,FRE(0)+FRE(-1)-heap&
       END IF

544    Error Messages: CODE Resources Conflict

       This new message indicates that you have used libraries from
       previous versions of Basic. Use the new library routines
       instead. For most programs, it is sufficient to comment out all
       the LIBRARY statements and compile with "Copy MBLCs and MBPCs"
       switch enabled. See also "Old Libraries" and "QB And Basic 3.0
       On The Same Disk" in Part 4, Notes and Warnings.

Part 2: Notes for the Microsoft QuickBasic User's Guide

16, 53  New Search Menu Features

        Microsoft QuickBasic has several new Search menu features to
        make navigating your programs much faster.

        Several of these features are token-based. A "token" is a
        Basic keyword, variable name, subprogram name, or label.
        Anything highlighted when you double click is also a token.
        The following list adds to or clarifies information about the
        Search menu.

17      Find Definition

        With the insertion point in a line or label reference,
        subprogram name, or FN function name, QB scrolls the list
        window to that name's definition. The insertion point does not
        move, so you can return to it by pressing an arrow key or
        choosing Find Insertion Point from the Search menu.

        For label references, QB shows the label. For a subprogram
        name, QB shows the SUBI statement. For an FN, QB shows the DEF
        FN statement.

        This does not work for other tokens. The search is much faster
        than Find.

        It is handy to keep a list of your important subprograms and
        labels in a comment at the start of the file so you can "Jump
        To" line 1, then "Find Definition."

17      Find Selected Text

        This has the same effect as typing the highlighted text in the
        Find dialog. After executing this command, the text appears in
        the Find dialog, which allows the Find Next command to
        continue searching.

18      Jump To

        Enter the source line offset number (not the Basic line
        number). The number displayed in a compiled application's run
        time error dialog is the source line offset number for that
        error. This command makes it easy to find the offending line.

        To jump to the beginning of a file, type COMMAND-J, "1," and
        <RETURN>. To jump to the end of a file, type COMMAND-J, enter
        any letters (just press your hand on the keyboard), and press
        <RETURN>.

18      Set Info

        If you Set Info on a new token, the 'info' is saved in the
        resource fork of your source file. You can move 'info' entries
        you define to QB by typing "MBUI" into the "other" dialog in
        the Statement Mover program, or by using ResEdit.

19      The Run Menu: Command-k

        As a compiling convenience, Command-k compiles the file with
        the last name you picked for the application. This saves
        reaffirming the application name every time you compile. The
        first time you compile (no matter which menu item you use), QB
        will ask for a name. Command-k is the same as choosing
        "Compile"; Option-Command-k is the same as "Compile As."

98      Setting Compiler Options: Save Before Compiling

        This new option in the Options dialog box automatically saves
        the source file before you compile, saving a step in the
        edit-compile process.

152     Creating Application Icons With ResEdit

        Summary:

        The following resources (located in a compiled QuickBasic
        application) can be modified with ResEdit to give an
        application and its documents their own customized icons:
        BNDL; FREF; ICN#; and the sample "signature" resource, "MBCB".
        The information in the Finder's Get Info dialog box for the
        application can also be specified.

        Procedure:

        You can create a compiled program with its own icon, and it
        can create document files with their own icons. A document
        file can be assigned its own icon by changing its file and
        creator types to correspond to resource information stored in
        the compiled application. The icon for a given document file
        type is taken from the resource fork of the compiled
        application and stored in the Finder's Desktop file.

        The default creator type is "EDIT" and the default file type
        is "TEXT" for files created with the OPEN statement. The
        creator and file types of a document must be changed by your
        QuickBasic program after the file is created.

        1. Change the creator type of a document using the SetCreate
           MBLC library routine, as follows:

           SetCreate docfile$,"MYAP"

        2. Change the file type using the NAME statement, as follows:

           NAME docfile$ AS docfile$,"MYFT"

        Double clicking a document icon runs the associated
        application. By PEEKing through a handle to the application
        parameters, your application can determine which file was
        selected. See "File Browser.source" on the Examples disk for
        sample code that does this.

        Here are step-by-step instructions for creating your own
        icons:

        1. Compile a program using Microsoft QuickBasic. For this
           example, assume the compiled program is called "MYPROGRAM
           apl".

        2. Run ResEdit.

        3. Double click on the "MYPROGRAM apl" application.

        4. Select New from the File menu, then do the following:

           a. Type a unique creator resource type, for example: "MYAP"
           b. The following window appears: "MYAP's from MYPROGRAM apl"
           c. Select New from the File menu.
           d. Close the new resource window.
           e. Choose Get Info from the File menu and change the number
              which appears in the first "ID:" box to 0 (zero).
           f. Close the window.
           g. Perform the following steps if you wish to put a string in
              the file's Get Info box in the Finder:

              i. Select the new resource, and choose Open As from the
                 File menu.
             ii. Select type "STR " (NOT "STR#").
            iii. Type the text which you wish to appear in a Get Info
                 from the Finder.
             iv. Close windows.
                 If you do not want text to appear in the Get Info
                 window, then open the resource, and type three zeros.

        5. Double click on BNDL, then do the following:

           a. Double click on "BNDL=128"
           b. Change OwnerName to be the same as the unique,
              four-character, application resource type used in step
              4a ("MYAP").
           c. Close two windows.

        6. Perform this step if you want custom document icons:

           a. Double click on FREF.
           b. Double click on "FREF=129".
           c. Change the "File Type" to "MYFT" This is the type used
              in the NAME statement in the "MYPROGRAM apl" program.
           d. Close two windows.

           No other program will be able to open your documents. You
           do not need to change the file type if your application
           creates plain text files (type TEXT).

        7. Double click on ICN#.

           a. Edit the application icon and, if desired, the document
              icon. Then select "Data to Mask" from the ICN# menu.
           b. Close Three windows.
           c. Click YES to Save.

        8. While the "MYPROGRAM apl" application is highlighted,
           select Get Info from the File menu.

           a. Change the Creator to the unique four character
              application creator resource name, used in step 4a:
              "MYAP"
           b. Close the window.
           c. Click YES to Save.

        9. Rebuild the Macintosh Desktop in either of the following
           ways:

           a. While holding down the COMMAND and OPTION keys, select
              Quit from the File menu, and keep holding down the
              COMMAND and OPTION keys until a dialog box appears.
              Click YES to rebuild the Desktop.
           b. Or, select the DeskTop file in ResEdit, and choose Clear
              from the Edit menu. Quitting ResEdit now rebuilds the
              DeskTop.

Additional Document Types

To add an icon for an additional file type that your application
creates, add another icon to the ICN#, another FREF, and entries for
the icon and FREF in the BNDL resource.

To add the FREF, open your application with ResEdit, and open the
FREFs. Select New to create a new FREF, then set the file type to your
new type, and set a new localID (3 for the first additional file
type). Close the FREF and select Get Info to change the resource ID to
the next in line (130 for the first additional file type).

To add an icon, open the ICN# in the application. Select New or
Duplicate to create a new icon. Alter as you like, close it, Get Info,
change the ID (again, 130 for the first additional).

Now open the application's BNDL. Find the line of dashes under the
ICN#. Click on the line and select New. Fill in the localID and
Resource ID to correspond with the icon and FREF you created. Do the
same with the line of dashes under FREF.

As before, you must rebuild the Desktop to see the new icons.

Part 3: Printing Graphics

Additional Information On Printing Graphics

Printing Graphics is the same as printing to the screen. Use WINDOW
OUTPUT #n after opening the printer, and all graphic calls (except
BACKPAT) will go to the printer. LINE (0,0)-(551,729),,b will outline
the drawable area on a LaserWriter page when printed at 100%.

If you want to print the window contents, record a picture as you draw
the screen, then replay the picture to the printer. Follow this
general outline:

       PICTURE ON :SHOWPEN  'make drawing visible
       '
       '       draw the window contents
       '       (PICTURE and PUT work here, too!)
       '
       PICTURE OFF :HIDEPEN
       windowPic$=PICTURE$
       '
       OPEN "lpt1:prompt" FOR OUTPUT AS #1
       WINDOW OUTPUT #1
       PICTURE ,windowPic$
       CLOSE #1

You can also use the resulting picture to refresh the screen. Pictures
are usually more compact than GET arrays and preserve color in
addition to printing faster on a LaserWriter.

Screen Dumps

Use the "PrintScreen" subprogram in the "Utilities SUBs" file to send
a copy of your screen to a printer. Unlike LCOPY, this works for color
screens and LaserWriters. "PrintScreen" is in the "Utility SUBs"
folder on the Examples disk, along with a "PrintWindow" utility.

Examples

"Calendar" on the Examples disk contains sample graphics printing.

Part 4: Warnings and Notes

Warnings

Strange Error Messages

If you get an interpreter error message that does not make sense, try
compiling the program. If the error is reported by the compiler, run
the program in the interpreter. The interpreter and the compiler read
your program differently, so one may provide a better error message
than the other. When the highlighted text and error message do not
match, or when nothing is highlighted, turn on the "Create Error List
File" option in the Options dialog box and compile the program. The
'<filename> lst' file will show more precisely where the error
occurred. It can show more than one error at a time.

Compiled Application Run-Time Errors

Errors that occur at run time in a compiled application do not display
a message. Only the error number is displayed. The error message may
be discovered by typing "ERROR <#>" in the QuickBasic environment
command window.

Old Libraries

If your program mysteriously crashes, old CODEs can be the cause. If
you need to use older custom libraries, make sure the ID numbers for
those CODE resources are greater than 100. Compile and run the
"Renumber CODEs" utility on the Examples disk in the "Tools" folder.

TMON Users Beware

Single voice sound can crash if TMON is active. To avoid this, insert
"WAVE 0,SIN" at the beginning of your program.

Notes

QB and Basic 3.0 on the Same Disk

QB will give the files it creates or saves the same creator type as
QB, whatever it may be. The default is the same as Basic 3.0. If you
want QB to work on the same disk  with Basic 3.0, change its creator
type from "MSBB" to "msbb" with ResEdit (use Get Info). To make your
changes visible, delete the desktop file with ResEdit (select Clear
from the Edit menu), or restart while holding down the command and
option keys. QB includes an alternate BNDL resource for the "msbb"
type. For the decimal version, change the creator type from "MSBA" to
"msba."

Basic 3.0 files (creator=MSBB) will have the Basic document icon and
will start up Basic 3.0 when double clicked. QB files (creator=msbb)
will have the QB icon and start up QB when double clicked. QB can open
files created by QB or Basic 3.0. Basic can see QB files, but will
produce a "Bad file mode" error if you try to open a QB compressed
file.

Slow Printing

The PRINT command sends the screen or printer one character at a time.
Use the DrawText library routine to send an entire string at once.
This will speed text printing to the screen or graphics devices. You
still need to use PRINT for number formatting or carriage returns.

New Run-Time Names

If you want to keep the run time libraries separate and change the
names, you must change the application "STR" resources id=9300-9303
with ResEdit to the names you prefer. QB will look for them in the
folder named in the STR 9300 resource.

Resources in Your Source

The DITL 128, DLOG 128, and STR 128 resources are for the About...
dialog box.

MBCO 0: compiler options
MBAN 0: compiled application name
MBPN: File path name

MBUI: MBUI resources are created when you use Set Info for a new word.

MBLC, MBPC: If you put any of these resources in the resource fork of
your source file, and the "Copy MBLCs and MBPCs" switch is enabled,
they will be automatically copied to the application each time it
compiles. A LIBRARY statement in your program is not required.

Resources in Your Application

   BNDL: application and document icon support
   CODE: application code
   DITL: 128 About
   DLOG: 128 About
   FREF: application and document icon support
   ICN#: sample application and document icons
   MBAV: application version (used to verify run time)
   MBCB: "signature" resource (application and document icon support)
   MBCI: compiler information
   MBLC: library code resources
   MBPC: pure code resources
   MBPN: File path name
   MBRL: 0 (binary), 1 (decimal), or 2 (68881) run time support code.
   PREC 0: LPT1:PROMPT page sizes
   SIZE -1: MultiFinder information
   STR  128: About 93xx run time path and file names
                


Additional query words: MQuickB readme

Keywords: KB34286