Serius89, HyperBASIC
Volume Number: 6
Issue Number: 2
Column Tag: Kelly's Corner
Serius89 and HyperBASIC 
By Dave Kelly, MacTutor Editorial Board
Serius 89
Object Oriented Programming (OOP) has become a household phrase recently.
Out of all of the OOP-la about OOP a wave of new OOP products have emerged. One of
these is Serius89™ Developer which I have had the opportunity to examine. Serius
Corporation of Salt Lake City, Utah is committed to developing Serius89 into a serious
OOP development environment. It is their goal to fill needs of all Macintosh users,
from developers to end users, to create their own applications.
Serius89 is a radically different approach to computer programming. It is based
upon a set of Object Oriented routines written in C which Serius calls Object
Interaction Protocol (OIP). OIP uses these self supporting routines called objects to
present the user with a new way to put together a Macintosh application. You could
think of Serius89 as a programmer’s erector set. You can create applications by
connecting objects together much like tiles are connected together in a Double Helix
data base. If you like Helix you’ll like this icon based approach to programming.
You as a Macintosh developer may develop OIP components which end users can
assemble together in Serius89. There are some advantages to this approachit can
eliminate costly code duplication, allowing a developer to utilize existing sets of
routines. Once the routines have been written, you never need to rewrite the routine
again.
The developer creates routines called methods that manage the low-level
operation of data entities called objects. These methods are executed in response to
events, which are generally posted by developers’ routines and managed privately by
OIP. The Serius89 programmer never has to deal with the low-level operations once
the developer has created the OIP routines. Here’s the catchthe routines need to be
pre-written before the programmer can put together the application.
Serius89 does not generate source code, but it does generate stand-alone, fully
operational applications. The methods and functions are compiled together by the
developer using any common Macintosh development system, then integrated into
Serius89 to be used graphically to construct applications. The developer doesn’t need
to know or understand conventional OOP to create the methods or functions.since most
of the object orientation is handled automatically by the nature and structure of OIP.
There are a number of MPW utility routines available in Pascal to handle the
necessary tasks. (C or assembly developers may need to modify the interface
declarations).
Serius89 includes several objects and functions which are ready to use to create
applications. The big drawback is that the existing routines do not yet fully support
the entire Macintosh toolbox. As long as your application is restricted to the objects
that exist, you won’t have to write any new ones. I found that every application I wrote
could not be implemented exactly as I desired because of missing functions. This isn’t
all bad though, e specially if you write your own objects and functions. These objects
need only be written once and may then be used as many times as needed in your
application. Serius is encouraging developers to create new functions and updates are
provided periodically as new functions are made available.
Serius is a clearinghouse for all Serius89 objects and functions. Object
Interaction Protocol, as with any development system, has basic guidelines that are
established to maintain future compatibility. Each component has a unique ID number
which should be registered with Serius to avoid ID conflicts in the future. As new
components are created, some may require license agreements e specially if written by
third party developers. Objects which are provided with Serius89 include:
• Application: allows your program to launch other applications
• Button: specify any kind of button
• CD Audio: play audio CDs from your application
• Database: a powerful database engine
• Date: retrieves the current date
• File: allows your application to save objects to disk
• Menu: provides menus for your application
• Menu bar: creates a menu bar
• Menu item: defines menu items
• Number: this object stores a number (includes math functions)
• Picture: load and display PICT images
• Printer: allows access to standard Macintosh printers.
• Sound: load and play sound (snd) resources.
• Text: this object stores text
• Time: retrieves the current time
• Window: defines windows (zoomable document, document, fixed size document,
dialog box, plain, plain with shadow, or rounded).
• Workstation: access AppleTalk networks and communicate with other Macintosh
computers that are running Serius89 applications.
The version of Serius89 that I have reviewed is version 1.1. As I write this I am
aware that version 1.2 has been completed (not yet reviewed) which allows all
components to run under Multi finder, signals for windows to respond to Multi finder
“switching”, workstation object now supports logging on with dynamic workstation
names, improvements to keyboard, list, text, number, date and time objects, and
several bug fixes. Alignment grids for positioning items as well as a layering system
for functions on the workbench are also a part of version 1.2 . There are several other
enhancements that are of importance including a faster database object. Version 1.3
was scheduled for release December 30 (prior to writing this column).
Improvements are frequent and Serius is set up with a toll free technical support line
to assist you. Even with all of this, there are a few areas that need to be improved
which I should mention:
• There is no way to import resources from other sources with the exception of the
Picture Object which will import PICT resources. This is a heavy stumbling
block e specially if you have special resources to include or want to use a favorite
resource from another application. However, an icon editor is built in for
creating icons for your application (no cut and paste available).
• The facility for positioning buttons, text, numbers etc is very crude. There are
no tools and no grid lines. You can only drag objects and resize them in the
window. I was assured that this was improved in the latest version which I have
not yet seen.
I am sure that in time there will be significant improvements to Serius89.
Updates have been coming out to registered users at the rate of about one every 4-6
weeks. If you can’t wait, and you can program, you could add your own objects.
Serius89 is still in its infancy and will be quite powerful as soon as objects have been
created which implement every aspect of the Macintosh toolbox. Until then, Serius89
is a powerful tool which can be expanded to meet any developer’s needs.
Serius Corporation
1981 East 4800 South
Salt Lake City, Utah 84117
801 272-7788 General Offices
800 876-6847 Technical Support
801 277-2440 FAX
BASIC WARS TAKES A RIGHT TURN
Note: Source code files accompanying article are located on MacTech CD-ROM orsource code disks.
Along the way, HyperCard has both been praised and jeered. Yes, it has opened up
a whole new world to some people who never dreamed they could program anything on a
computer. Yet serious programmers have complained about its speed and others have
wished it had more capabilities. Those with the C and Pascal compilers have been able
to exclusively rule the world of XCMDs and XFCNs. Not any longer! Basic has taken a
right hand turn and parked itself in the backyard of XCMD and XFCN.
Presenting HyperBASIC™ by Teknosys, Inc.
Creation of XCMDs and XFCNs is now easier than ever. The HyperBASIC
application is a combination editor (multiple windows), compiler, linker and resource
mover. Compiling a program is easy, just select the destination stack and select
“Compile”. HyperBASIC does a quick syntax check then compiles, links, and moves the
new XCMD or XFCN into the stack. If the syntax check finds an error, HyperBASIC
gives suggestions of what needs to be changed. It doesn’t tell you exactly what the error
is but it does flag the line the error occurred on except in a few cases when problems
exist in a subroutine and the cursor is placed at the beginning of the XCMD or at the
beginning of the subroutine. Suggestions of what went wrong are listed in a menu and
when that item is selected, the item in the menu is pasted at the insertion point. Some
improvement could be made in this area, but at least you don’t have to compile and run
the routine before finding out that the problem is a simple typo.
In addition to being quick and easy to program, HyperBASIC is fast. When I ran
the historic Sieve of Erastothenes,. HyperBASIC generated the 10 iterations of 1900
primes in 7.48 seconds on a Macintosh Plus, very close to the same speed as ZBasic.
You can’t really compare HyperBasic and ZBasic though because they both serve
different purposes. The “Accuracy” benchmark gives good results with an answer of
x=503.43802 (correct answer) and s=1.23 in 2.12 seconds. (The benchmarks are
shown below for the benefit of those that don’t have “The Complete MacTutor, Volume
2”, pg 379).
‘ 1
xCMD SieveofErastothenes
DEFINT a-s
DEFDBL t
DIM Flags(8191)
time1=_TickCount
’10 Iterations
FOR m=1 TO 10
Count=0
FOR i=1 to 8191
Flags(i)=1
NEXT i
FOR i=1 to 8191
IF Flags(i)=0 THEN GOTO 170
Prime=i+i+3
k=i+Prime
120 IF k<= 8190 THEN
Flags(k)=0
k=k+Prime
GOTO 120
END IF
Count=Count+1
170 NEXT i
NEXT m
time2=_TickCount
Totaltime=(time2-time1)/60
Totaltime$=str$(Totaltime)
SETFIELDBYNUM 1,8,Totaltime$
END
xCMD accuracy
‘ Accuracy Benchmark
‘ developed by R. Broucke
‘ at University of Texas, Austin
DEFDBL a-z
time1=_TickCount
s=0
x=0
FOR n=1 TO 1000
s=s+x*x
x=x+.00123
NEXT n
time2=_Tickcount
Totaltime=(time2-time1)/60
s$=str$(s)
x$=str$(x)
Totaltime$=str$(Totaltime)
SETFIELDBYNUM 1,1,s$
SETFIELDBYNUM 1,2,x$
SETFIELDBYNUM 1,3,Totaltime$
end
HyperBASIC is a rich basic language which includes all the latest syntax such as
CASE and multiple line IF-THEN-ELSE. With only minor modifications, programs
written for MS QuickBASIC or ZBasic may be converted for use in HyperBASIC.
Several new commands have been added to enhance the HyperCard XCMD/XFCN
environment. A set of callback statements will allow you to:
• Get the contents of a card of background field by Name, ID, or Number.
• Set the contents of a card of background field by Name, ID, or Number. (a sample
of this command is shown in the example above which sets the contents of specific
field to the results of the benchmark).
• Get the contents of a global variable.
• Set the contents of a global variable.
• Evaluate expressions such as “the short name of this card”.
• Send a Message to a card such as “show card button 3”
• Send a Message to HyperCard such as “domenu new card”.
There are 376 built-in calls to the Macintosh toolbox which are listed in the
HyperBASIC manual. Although the list is not expandable, it appears to be complete.
Teknosys plans to add more toolbox calls in the next version (1.1) which will be
released late in the first quarter of 1990. Version 1.1 will be free of charge to
registered users (except for shipping and handling). Also included in version 1.1 will
be support for strings greater than 32K in length (in case you want to use something
besides HyperCard). More direct support for SuperCard and other products that can
use XCMDs and XFCNs. MicroPhone from Software Ventures is already supported
although you need to use ResEdit (or equivalent) to more the resources into
MicroPhone.
For debugging purposes, subprogram names may be used to create a MacsBug
symbol table. You can use the toolbox statement “_Debugger” to halt execution of the
program at a critical point and call Macsbug to step through the processor instructions
to find the problem. If you’re experienced with assembly language you may generate
assembler output instead of the XCMD or XFCN to examine the code.
There are more than 30 example programs to get you started and get some great
ideas for other XCMDs and XFCNs. Soon, Teknosys will be putting together a Tips and
Techniques newsletter to provide help and examples of how to change Inside Macintosh
calls for use in HyperBASIC. Currently, you must be familiar enough with the syntax
used in IM to know what to change to use toolbox calls in HyperBASIC.
I highly recommend HyperBASIC as a “quick and easy” way to extend and speed up
HyperCard. System Requirements: 1M RAM, System 6.0.2 (or later), HyperCard
1.2.1 (or later). A hard drive is recommended.
Teknosys, Inc.
3923 Coconut Palm Drive, Suite 111
Tampa, Florida 33619
813-620-3494
AppleLink: D3375
CompuServe: 73237,2370
MacNET: TEKNOSYS
Price: $99
No Copy Protection!