TweetFollow Us on Twitter

System Snoop
Volume Number:4
Issue Number:11
Column Tag:Basic School

System Snooping in MS QuickBasic

By Dave Kelly, MacTutor Editorial Board

MS QuickBasic Arrives!!

It’s been a long wait (nearly a year and a half) but Microsoft has finally upgraded their infamous compiler. The best part is that it has really improved!! Microsoft took their interpreter which has always been an excellent product, and combined their compiler to produce what they are calling a new product named QuickBASIC 1.0.

There are some major changes that have taken place and many things have remained the same. The programming environment includes the same “pretty-printing” editor (with some improvements) which was included in earlier versions of the interpreter. There are still two versions of basic, the binary version and decimal version. Programs written using earlier versions of MS BASIC still function properly and in some cases they even work better. When you start listing all of the changes you can easily see why Microsoft chose to call it version 1.0 instead of MS Compiler version 2.0.

The first obvious change is the manual. MS QuickBASIC is now packaged as a shrink wrapped book and disk like their competitors. Most of the fancy packaging on software goes in the trash most of the time anyway. If removing the expense of the packaging lowers the price like it did for this one, I vote that all software companies do the same on all their software. QuickBASIC is priced at a mere $99!! Registered users of either MS Basic Interpreter or Compiler may upgrade to MS QuickBASIC 1.0 for $40. Upgrades are free to any registered user who acquired either of Microsoft’s BASIC products for the Macintosh after August 1, 1988. MS QuickBASIC now requires at least 1 MB of memory. The new manual includes two books in one. The user’s guide includes a description of how to use the interpreter/compiler functions, a tutorial on developing programs using QuickBASIC, a tutorial on debugging your program, creating a stand-alone application, documentation on how to access the Macintosh toolbox, and documentation for ResEdit (an older version is included with QuickBASIC) and Edit (QuickBASIC includes the latest version of the MDS editor which bombs on the Mac II). The second part of the manual is the BASIC Language Reference which includes a description of Basic variables, syntax, a statement and function reference, and appendix. The appendix contains documentation for invoking ROM routines and the Toolbox library, also some very good information about creating your own Libraries (similar to the old BMLL document) including how to write your own routines from Assembly, C or Pascal. Instructions are also given to install your own icon after compiling your stand-alone application.

The menu bar has now changed. As a matter of fact, when programs are run, a default menu is used which includes File and Edit menus. QuickBASIC removes its own menus so you no longer have to clear the menus when running your program as in earlier versions. Using the compiler options, you may disable the default menu and window for compiled programs.

The ‘Search’ menu contains new menu items, ‘Get Info’ and ‘Set Info’ which allows the user to add new items into the Help data base, or add comments to the help that already exists. The text added is stored in the BASIC source code itself so Help can be different for different programs. It is not known if the Help text can be moved from one source code file to another. The ‘Set Info’ item cannot be found in the manual and in some respects does not seem to work properly. Once it even corrupted the default help info which is stored in the QuickBASIC application. It is handy to type cmd-I (Get Info) while editing and get a dialog explaining the command that the cursor is pointing to. Another nice feature is the bookmarks. You can set a bookmark to force BASIC to remember the page that you are on so you can return there quickly.

The interpreter is able to help debug your program. For example, before executing the program, breakpoints may be set by inserting a stop sign icon. When the program stops at a breakpoint, or encounters an error, the value of key variables may be displayed. (This smells like Lightspeed doesn’t it?) You may then change the value of any variables and continue execution. The highlighted tracing option which was available in earlier versions of MS Basic is still available in QuickBASIC too.

Figure 1. Example Listing

One of the most needed enhancements was HFS support. Now, MS Basic is smart enough to find files anywhere. If you have a LIBRARY statement you don’t have to include the full path name because the first time your program is run, if QuickBASIC can’t find your library file, it asks you to look for it. Then it does something even better. After you find the file for QuickBASIC, the path is stored away automatically in your source code file and used the next time the program is run. There may have to be some slight modification to some programs written in earlier versions of BASIC, so QuickBASIC provides a way to disable the File Not Found Dialog option in the ‘Options’ menu item of the ‘Run’ menu.

The compiler is built in so it is very easy to get a stand-alone application up and running. There are several options available when compiling, including 68020 and 68881 support if you can use it. Most of the same compiler options are available here that were available in MS Compiler 1.0. As mentioned before, you may choose to use the default window or use the default menus (File and Edit) if needed. Library resources may be included if the ‘Include MBPCs and MBLCs’ option is selected. (All the CLR Toolbox libraries have been updated and the resource type changed to MBLC (Microsoft Basic Library Code????) resources. The MBPC type is used to denote pure code resources which can be created with some compilers. A utility program is included to scan a QuickBASIC source file and remove library and toolbox resources which are not used by the application. This will reduce the size of the stand-alone application. ALSO, the toolbox library (formerly called ToolLib) is now installed as MBLC resources in the QuickBASIC application. Therefore, all the toolbox statements are available at all times. 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!”

There have been several new MBLC routines added to QuickBASIC since the last release of MS BASIC. One of these new statements is the Toolbox statement which allows access to other Toolbox ROM routines which are not specifically available as MBLC routines. You will need Inside Macintosh to make full use of this statement. Routines marked NOT IN ROM are not accessible from QuickBASIC with the ToolBox call. You must write an MBPC or MBLC to do this. The syntax for the ToolBox statement is:

ToolBox calltype$, trapnum%, arg1, arg2, ... , argn

The calltype$ argument is a BASIC string variable indicating the type of the ROM call. Procedures are indicated by either “P” or “S”, Functions returning boolean results use “B”, functions returning integers use “W” and functions returning a long integer (LONGINT) use “L”. The trapnum% is the trap address of the ROM routine as found in Inside Macintosh. A few samples are given in the manual of some ROM calls. The number of arguments in the ToolBox call will vary depending on the routine that is called.

Sample programs using the ToolBox call are shown below. The first program shows a call to the ROM routine that gets the names of fonts if given an id. The program really isn’t of much value except to demonstrate an example use of the ToolBox call. [Make sure to remove all non-printable fonts from the system (i.e. postscript escape fonts) or it will crash; I think it has something to do with zero width fonts.- ed] The second program uses the ToolBox call to get the Macintosh tick count. By using this the benchmark times could have been measured more accurately. The remainder of the program demonstrates the use of the SYSTEM function. The SYSTEM function is used to get system environment information for your program. Getting screen size is one use of the SYSTEM functions available. Other environment information is also available as shown in the program. These functions and the ToolBox calls are explained in more detail in the QuickBASIC manual.

Your old CLR libraries and other libraries you may have created can still be used with QuickBASIC without converting them to the MBLC resource type. Be sure to check to see if the routine already exists in QuickBASIC as a MBLC before using your old routine unnecessarily. You may print lists for comparison purposes with the new version of the Statement Mover program. Statement mover has also been updated to support the MBLC and MBPC resource types.

You’re probably wondering how QuickBASIC does in the benchmark tests. Table 1 shows the benchmark results for QuickBASIC , True Basic and ZBasic. ZBasic and True Basic times have appeared in previous issues of MacTutor and were not retested for this table. I have included them here for comparison purposes. Keep in mind that any one benchmark test does not determine how good a language is. All tests were performed on a Macintosh Plus Computer.

BENCHMARKMS QuickBASIC*True BasicZBasic
FOR Loop (Real)3 sec1.6 sec.15 sec.
Array Lookup (static)2 sec.20.67 sec.1 sec.
Math Operations
Addition9 sec.22.15 sec.52 sec.
Subtraction10 sec.23.23 sec.64 sec.
Multiply12 sec.25.55 sec.211 sec.
Divide35 sec.35 sec.446 sec.
String Operations
Concatenation34 sec.10.3167 sec.10 sec.
Pattern Matching25 sec.12.15 sec.6 sec.
Graphics
Line (Basic stmt)7 sec.61.25 sec.6 sec.
Horizontal line15 sec.38.867 sec.5 sec.
Circle20 sec.13.4667 sec.15 sec.
Set Pixel
(PSET or PLOT)38 sec.119.3 sec.19 sec.
File I/O (Floppy Disk)
Random READ2 sec.24.5 sec.8 sec.
Random WRITE24 sec.43.48 sec.114 sec.
Seql. PRINT#3 sec.17.0667 sec.9 sec.
Seql. INPUT3 sec.17.45 sec.???
Sieve of Eratosthenes8 sec.118.917 sec.7 sec.
Accuracy Benchmark
x503.54380215503.54380215503.54380215
s1.231.2249999999999661.23
time 1 sec..88333 sec.4 sec.

* NOTE: QuickBASIC compiled binary version used for all tests except accuracy benchmark.

To obtain optimal performance from compiled QuickBASIC for execution speed it is advisable to use static arrays, turn off array bounds, turn off event checking, generate 68020 and 68881 code if applicable, use SELECT CASE statements instead of IF/THEN/ELSE statements inside loops, and use SHARED (global) arrays when passing to subprograms.

‘ Display Fonts
‘ ©Copyright 1988 MacTutor
‘ by Dave Kelly
‘ This program will display all your system fonts
‘ with a sample and by name.
‘ This program uses the ToolBox statement in
‘ QuickBASIC version 1.0

ToolBox “I”    ‘ Initialize Toolbox
DEFINT a-z
x=0
FontName$=””
FOR i=0 TO 254    ‘ Cycle through all the fonts
    TEXTFONT(i)
    GOSUB GetFontsname
    IF FontName$<>”” THEN
        PRINT “This is a sample of font #”;
        CALL TEXTFONT(0):PRINT i;”  “;FontName$
        IF x/10 >1 THEN
             x=0:PRINT “Click mouse button to continue...”
             WHILE MOUSE(0)<>1 :WEND:CLS
         ELSE
             x=x+1
        END IF
    END IF
NEXT
WHILE MOUSE(0)<>1:WEND
END
GetFontsname:    ‘Get the name of the Font with ID = i
TrapNo%=&HA8FF
ToolBox “P”,TrapNo%,(i),FontName$
RETURN


‘ System Configuration Demo
‘©1988 MacTutor
‘ By Dave Kelly
‘ This program displays all of the system configuration
‘ data which is returned by the SYSTEM Function.
‘ Also the number of tick counts is read from the
‘ Macintosh directly to get a more accurate time.

ToolBox “I”:    ‘Initialize the toolbox call
start&=0&:finish&=0&
CALL GetTickCount(start&)   :’Call the tick count routine
Screenwidth=SYSTEM(5) :  ‘ get screenwidth
Screenheight=SYSTEM(6) :  ‘ get screen height
WINDOW 1,”System Configuration”,(4,41)-(Screenwidth-8,Screenheight-8),1
PRINT “Macintosh System Version:”;SYSTEM(0)
machine=SYSTEM(1) :   ‘ get machine type
SELECT CASE machine
    CASE 0
        machineType$=”Unknown”
    CASE 1
        machineType$=”Mac 512K”
    CASE 2
        machineType$=”Mac Plus”
    CASE 3
        machineType$=”Mac SE”
    CASE 4
        machineType$=”Mac II”
END SELECT
PRINT “Machine type: “;machineType$
PRINT “Running QuickBASIC version “;SYSTEM(2)
Math=SYSTEM(3):    ‘ Get Math type
SELECT CASE Math
    CASE 0
        MathType$=”Binary Math”
    CASE 1
        MathType$=”Decimal Math”
END SELECT
PRINT “Using “;MathType$
environmentFlag=SYSTEM(4)
    IF environmentFlag=0 THEN
        PRINT “Program is being run from the QuickBASIC environment”
    ELSE
        PRINT “Program has been compiled.”
    END IF
CALL GetTickCount(finish&)
PRINT “Total time to run this program was “;(finish&-start&)/60;” seconds”
END

SUB GetTickCount(Ticks&) STATIC:’Get the real number of ticks
    TrapNo%=&HA975
    Ticks&=0&
    ToolBox “L”, TrapNo%,Ticks&
END SUB

LETTER BAG

Your review of True Basic 2.01 was of special interest to me because I’ve been trying to port a library of thirty astronomical programs from CBasic (remember?) and MS Basic to the Mac. As you pointed out, the math libraries and advanced toolkits make True Basic very useful for scientific tasks. However, the many arbitrary differences in syntax from standard Basics has made the translating task very time-consuming and the source level debugging using DO TRACE is crude compared to MacPascal or LSP.

My greatest disappointment has been the poor speed performance. My Mac has the Turbomax accelerator board and 68881 coprocessor both rated at 16 mhz. Since my work involves heavy use of transcendentals, I use the Savage benchmark; here are some results:

MacPascal 2.0 30.1 seconds interpreted

True Basic 2.01 29.1 seconds *

Excel 1.04 12.6 seconds supports 68881

LS Pascal 1.1 4.7 seconds compiled

* This is “It’s even faster than before.” as their ad claims?

Incidentally, they carefully modified the Geneva font so that the capital O and zero [0] are identical; a real ‘gotcha’ when trying to debug. --Leonard Kalish

Maybe QuickBASIC will be better for you as it can be compiled. Also if you use CLR Libraries MathStatLib you get some of the math routines back. The difference in the Basic syntax is because of the ANSI standard influence of Thomas E. Kurtz, one of True Basic’s authors. It is interesting that most of the other Basics out there are enough different from the ANSI standard to make translating a difficult task. Thanks for your comments. DK.

 
AAPL
$439.66
Apple Inc.
+0.00
MSFT
$34.85
Microsoft Corpora
+0.00
GOOG
$906.97
Google Inc.
+0.00

MacTech Search:
Community Search:

Software Updates via MacUpdate

KeyCue 6.5 - Displays all menu shortcut...
KeyCue helps you to use your OS X applications more effectively. Just hold down the Command key for a while - KeyCue comes to help and shows a table of all currently available keyboard shortcuts.... Read more
HoudahSpot 3.7.8 - Advanced front-end fo...
HoudahSpot is a flexible file-search tool based on Apple's powerful Spotlight engine. Keep frequently used files within reach Retrieve the files you didn't know you still had Don't waste time... Read more
Cobook Contacts 1.2.6 - Intelligent addr...
Cobook Contacts is a better address book that makes contact management enjoyable for millions of people every day. Find contacts faster and organize them with tags. Get integrated social profiles... Read more
AppDelete 4.0.7 - Delete your unwanted a...
AppDelete is an uninstaller for Macs that will remove not only applications but also widgets, preference panes, plugins and screensavers along with their associated files. Without AppDelete these... Read more
OnyX 2.6.9 - Maintenance and optimizatio...
OnyX is a multifunctional utility for OS X. It allows you to verify the startup disk and the structure of its System files, to run miscellaneous tasks of system maintenance, to configure the hidden... Read more
Apple iTunes 11.0.3 - Manage your music,...
Apple iTunes lets you organize and play digital music and video on your computer. It can automatically download new music, app, and book purchases across all your devices and computers. And it's a... Read more
Spotify 0.9.0.133. - Stream music, creat...
Spotify is a new way to enjoy music. Simply download and install. Before you know it you'll be singing along to the genre, artist, or song of your choice. With Spotify you are never far away from... Read more
JollysFastVNC 1.46 - Fast VNC client. (S...
JollysFastVNC is a VNC client which aims to become the best VNC client on the Mac. When I started ScreenRecycler I thought that there are enough VNC clients out there to support it. When the program... Read more
Skitch 2.5.2 - Take screenshots, annotat...
Skitch allows you to take screenshots on your Mac, edit them and share them with others. It makes the sharing process seamless by making it a natural workflow to send the image (with edited arrows... Read more
Backblaze 2.1.0.608 - Online backup serv...
Backblaze is an online backup service, available fo $5/month for unlimited storage. With half of the founding team heralding from Apple, Backblaze is deeply committed to the Mac platform. The... Read more

Blitz Brigade Review
Blitz Brigade Review By Andrew Stevens on May 21st, 2013 Our Rating: :: CHAMPION KILLERUniversal App - Designed for iPhone and iPad Blitz Brigade is an enjoyable first-person shooter where players fight online in multiple gameplay... | Read more »
gMusic Submits Update To Bring Google’s...
gMusic Submits Update To Bring Google’s All Access Streaming Music Service To iOS Posted by Andrew Stevens on May 21st, 2013 [ permalink ] gMusic: A Google Mus | Read more »
CandyMeleon Review
CandyMeleon Review By Blake Grundman on May 21st, 2013 Our Rating: :: SWEETLY ADDICTIVEUniversal App - Designed for iPhone and iPad Who could say no to a Chameleon that is this cute? Feed his sweet tooth and you will see just how... | Read more »
Fire & Forget: The Final Assault Rev...
Fire & Forget: The Final Assault Review By Rob Rich on May 21st, 2013 Our Rating: :: MY CAR IS FIGHTUniversal App - Designed for iPhone and iPad Fire & Forget: The Final Assault is one crazy post-apocalyptic ride.   | Read more »
Appy Geek Updates With Enhanced Design a...
Appy Geek Updates With Enhanced Design and Customizable Home Screen Posted by Andrew Stevens on May 21st, 2013 [ permalink ] | Read more »
What’s the Deal with rymdkapsel?
rymdkapsel made a bit of a splash when it was released on the PlayStation Vita a few weeks ago. And in another couple of months this excessively minimal and abstract strategic base building “sim” will be making its way on to the App Store for... | Read more »
Star Command Getting Exploding Ships, Sp...
Star Command Getting Exploding Ships, Spreading Fires, and Away Teams In Future Updates Posted by Andrew Stevens on May 21st, 2013 [ permalink ] | Read more »
Catch a Ninja Review
Catch a Ninja Review By Jordan Minor on May 21st, 2013 Our Rating: :: CATCH AND RELEASEiPhone App - Designed for the iPhone, compatible with the iPad It turns out ninjas aren’t that much tougher than fruit.   | Read more »
The Portable Podcast, Episode 186
On This Episode: Carter and Kurt Bieg of Simple Machine talk about his studio’s new release, Tomb Breaker, how it spawned from a nearly-complete prototype of another game, and how it fits in with his other titles, Circadia and Twirdie. Break into... | Read more »
Flickr Upgrades Its Free Users To 1 Tera...
Flickr Upgrades Its Free Users To 1 Terabyte Of Photo And Video Storage Posted by Andrew Stevens on May 21st, 2013 [ permalink ] | Read more »

Price Scanner via MacPrices.net

iPads with Retina Displays (Apple refurbished) ava...
The Apple Store has Apple Certified Refurbished 4th generation iPads with Retina Displays, Wi-Fi & Cellular, available for $50 off MSRP. Apple’s one-year warranty is included with each iPad, and... Read more
Apple MacBook Orders To Rise 20% Sequentially In 2...
Digitimes’ Aaron Lee and Joseph Tsai say that with Apple ready to release its new MacBook products in the near future, sources from the upstream supply chain have revealed that orders for MacBook... Read more
Trial Production of 5th-Generation iPad To Begin R...
Digitimes’ Max Wang and Adam Hwang report that trial production of Apple’s 5th-generation 9.7-inch iPad will begin soon with volume production to begin in July, and monthly shipments ramping up to 2-... Read more
Dell’s $100 Thumb-Sized Android PC To Ship In July...
9to5google.com says that Dell’s Project Orphelia, a thumb-sized drive that turns any display with an HDMI port into an Android PC, is to start shipping in July at a price of around $100 according to... Read more
MacBook Airs (Apple refurbished) available startin...
 The Apple Store has Apple Certified Refurbished 2012 MacBook AIrs available for up to $240 off MSRP, with models starting at $849. An Apple one-year warranty is included with each model, and... Read more
Updated Mac Pro, iMac, and Mac mini Price Trackers
We’ve updated our Mac Pro Price Tracker, iMac Price Tracker, and Mac mini Price Tracker with the latest information on prices, bundles, and availability from Apple’s Authorized Internet/Catalog... Read more
Updated MacBook Price Trackers
We’ve updated our MacBook Price Trackers with the latest information on prices, bundles, and availability on MacBook Airs, MacBook Pros, and the MacBook Pros with Retina Displays from Apple’s... Read more
15″ 2.3GHz MacBook Pro on sale for $1659 w/free bu...
B&H Photo has the 15″ 2.3GHz MacBook Pro on sale for $1659 including free shipping. Their price is $140 off MSRP. B&H will include free copies of Parallels Desktop, Bento Database, and LoJack... Read more
15-inch Retina MacBook Pros on sale for $200 off M...
 B&H Photo has 15″ Retina MacBook Pros on sale for $200 off MSRP including free shipping. B&H will also include free copies of Parallels Desktop, Bento Database, and LoJack for Laptops... Read more
Apple refurbished iPad minis available starting at...
The Apple Store has a full lineup of Apple Certified Refurbished iPad minis available starting at $299 – up to $40 off new models. Apple’s one-year warranty is included with each mini, and shipping... Read more

Jobs Board

Class 1 District *Apple* Technician -...
QUALIFICATIONS: High School diploma Associate Degree in Technology preferred. Apple Certified Support Professional Mac OS X 10.5, 10.6, 10.7, 10.8 Apple Certified Read more
*Apple* At-Home Team Manager - Apple (U...
Changing the world is all in a day's work at Apple . If you love innovation, here's your chance to make a career of it. You'll work hard. But the job comes with more than Read more
Class 1 District *Apple* Technician -...
QUALIFICATIONS: High School diploma Associate Degree in Technology preferred. Apple Certified Support Professional Mac OS X 10.5, 10.6, 10.7, 10.8 Apple Certified Read more
*Apple* Infrastructure Engineer II - Ba...
39964 Apple Infrastructure Engineer II Full Time Regular posted 04/22/2013 San Ramon, CA San Francisco, CA Requirements What sets Bank of the West apart from other banks Read more
*Apple* Retail - Manager - Apple (Unite...
Job SummaryKeeping an Apple Store thriving requires a diverse set of leadership skills, and as a Manager, youre a master of them all. In the stores fast-paced, dynamic Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.