TweetFollow Us on Twitter

CompileIt! 2.0
Volume Number:7
Issue Number:9
Column Tag:Tools of the Trade

CompileIt! 2.0!

By Dave Kelly, MacTutor Editorial Board

Most of you have seen Heizer Software’s CompileIt! 2.0 advertised. Let’s take a look at CompileIt! and what it can do for you. HyperCard is an easy going environment to work with. Because of that, HyperTalk has not been a favored language of developers. As you’ll see here, CompileIt! 2.0 overcomes nearly all of the objections to using HyperTalk as a serious development environment.

Objection #1: HyperTalk is too slow. You pay a price for convenience and ease of use. HyperTalk 1.2.x is an interpreted language. When messages are caught by a handler, the words in the handler script are turned into tokens that are interpreted by HyperCard. In HyperTalk 2.0, the handler scripts are turned into tokens and then compiled into machine language. Thus HyperCard 2.0 is faster once the handler scripts are compiled (memory permitting though since compiled handlers are purged to make room for new ones). Still, most of us don’t think that this is enough. With CompileIt! 2.0 you can boost the speed of most if not all of your handlers.

Objection #2: You can’t create a stand-alone application with HyperCard. CompileIt! doesn’t provide a solution for this problem, but there are other products appearing in the market that claim they can do this such as SuperCard which can save projects as stand-alone applications. Unless you are really short on disk space, you shouldn’t care about this that much anyway since nearly everyone has HyperCard.

Objection #3: HyperTalk doesn’t have complete access to the Macintosh ROMs. XCMDs and XFCNs provide support for virtually any ROM routine. This excuse is usually used by people that can’t or won’t program in C or Pascal. Creating externals with CompileIt! from your scripts is as easy as writing them in HyperTalk. Extensions added by CompileIt! make toolbox support much easier.

Objection #4: Protection of sensitive program code is difficult in HyperCard. Even though you can protect a stack, there are ways to break that protection. Compiled code doesn’t allow users to readily view the source code. With CompileIt! you can protect your valuable work by compiling sensitive code.

CompileIt! was designed to:

° Speed up HyperCard scripts

° translate HyperTalk scripts into 68000 machine language resulting in XCMDs and XFCNs that can be used by any HyperCard script.

° provide extensions to HyperTalk

USING CompileIt!

Although using CompileIt! comes fairly easy, it is highly recommended that you are experienced with HyperTalk scripts. You should be familiar with handlers, messages, and properties before using CompileIt!.

It’s very tempting to just paste in a script and begin compiling. The CompileIt! 2.0 program consists of a HyperCard stack that allows you to paste your script from the clipboard and then compile. It’s very interesting to note that CompileIt! 2.0 is much faster than earlier versions of CompileIt! That’s because CompileIt! 2.0 has been compiled with CompileIt! The compiling engine consists entirely of resources and only a single line of code that ties the HyperCard interface to the engine. This means that CompileIt! 2.0 can be totally customized to fit the developers needs - even going as far as creating a stand-alone application to hold it or moving it into other environments like Microphone II v3. All that is required to use the engine is a subset of the HyperCard 1.x XCMD interface.

Before using CompileIt! there are a few things that should be understood about the way CompileIt! works. The first part of CompileIt!’s 200 page manual helps you get started with a sample script. Experienced HyperTalk scripters will be able to get started quickly by going through about 7-10 pages of CompileIt! basics. Not every script can be made to run faster by compiling. Scripts that deal with HyperCard structures (that is menus, buttons, fields, cards, etc.) will not go much faster. They must still pass messages to HyperCard routines that still run the same speed. Get, Put, all forms of Repeat, Next (repeat), all forms of If-Then-Else, Abs, Add, Atan, Average, CharToNum, Cos, Delete, Divide, Exit, Exp, Exp1, Global, Length, Ln, Ln1, Log2, Min, Max, Multiply, Number(chunks), NumToChar, Offset, Param, Params, ParamCount, Pass, Random, Result, Return, Round, Sin, Sqrt, Subtract, Tan, Trunc, HyperTalk operators: Div, Mod, +, -, *, &, &&, , ¾, =, , <, >, And, Or, Not, Is Not, Is, /, ^, Constants, Ordinals, and Toolbox calls will all run faster after compiled with CompileIt!

You may need to optimize existing scripts to be sure that they don’t use too many callbacks to HyperCard. For example, the statement put x into y in the script below will make the routine run faster than if x was used throughout the script instead of y. Otherwise, the compiler would have to generate code to convert the string variable x each time it is used. Instead, the conversion from string x to local variable y is done only once. It is helpful to keep in mind that HyperTalk does a lot of conversion for you. By minimizing the amount of conversion that has to be done, the routine can run faster. Unlike HyperCard, where all variables are strings, variables can be declared at the start of a compiled handler. CompileIt! allows many more data types to be declared than are available in HyperCard. Short integers, long integers, Pointers, Handles, P-Strings (including short P-Strings), 0-terminated strings (call these HyperCard strings), OSTypes, Boolean, Character, Floating point (12-byte SANE values), and Records (default is 32 bytes but user can specify any size).


-- calculate ( y)
-- by subtracting odd numbers
function squarroot x
 put x into y
 put 0 into ans
 put 1 into oddint
 repeat while y 0
 subtract oddint from y
 add 1 to ans
 add 2 to oddint
 end repeat
 return ans-1
end squarroot

Normally, Apple’s SANE routines will be used to perform all of CompileIt!’s calculations, although SANE can be turned off to force some variables to integer type. Several techniques can be used to tell CompileIt! that a particular value is floating point - putting 0.0 into a variable to initialize it, adding ^1 after the variable, or declaring it as floating point using shared variables. The manual discusses the pros and cons of using SANE vs. integer math.

Except for the routines specifically marked as “NOT IN ROM” in Inside Macintosh, all procedures and functions are included from Inside Macintosh vol. I-V. Also, selected “NOT IN ROM” routines are included such as the High-Level file manager and Print Manager (NOT IN ROM routines are included based on user demand). Many of the record structures and low-memory globals are also included. Many (but not all) of the Inside Mac VI routines and record structures are also included. CompileIt!’s Custom Symbol Edit card allows users to add additional record structures, low-memory globals, user defined constants, direct calls to other external commands (avoids a slow text callback), and other symbols on their own. Using these calls requires you to convert Inside Macintosh Pascal notation to HyperTalk/CompileIt notation. For example, a common procedure from Inside Macintosh would be: Procedure DrawString (S: Str255); the HyperTalk/CompileIt! equivalent would be: DrawString anystring. You’ll also have to setup record structures to match those in Inside Macintosh. Fortunately, CompileIt! supplies the property names for many of the common types used in Inside Macintosh. If you are not an experienced programmer, it will take some study of the CompileIt! manual sections on programming with the toolbox. Experienced programmers won’t have any trouble with it.

The process of compiling a script begins by copying your script into the clipboard. Open CompileIt! and click on the Enter New Script button. Select the destination stack where CompileIt! will put the external code. CompileIt! will use the name of the handler of the script. That is, if the script started with on mouseup then the name of the external would be mouseup and it would respond to a mouseup message. When you click on the CompileIt! button, the compile begins. It is highly recommended that users not use system messages as XCMD or XFCN names since they tend to get executed when users least expect them too. Better to use On Foo or some such. Also, the word ‘On’ results in an XCMD while the word Function results in an XFCN.

An equally great part of the CompileIt! XCMD Development System is the DebugIt! source level debugger. When you compile a script with DebugIt! turned on, debugging code is added to your external function. When you execute your compiled external, the DebugIt! window will open and execution will halt before the first line is executed. Now you can set breakpoints, view variables, and single step through the external. This gives you as much flexibility in debugging your external as you could ask for. You may find it interesting that DebugIt! is not tied to HyperCard. Externals with DebugIt! attached can be run in just about any environment that supports even a limited subset of the HyperCard 1.x XCMD interface (FoxBase, Microphone II v3, XLINK, and SuperCard are all good examples).

CompileIt! can be used to create xWindoids (external windows) for HyperCard 2.0. CompileIt! simplifies the code you need to write to support an xWindoid by treating events like system messages. HyperCard automatically tells xWindoids about various system events that apply to them such as mouseDowns, updates, menubar clicks, etc. xWindoids are a new feature of HyperCard 2.0.

CompileIt! also works with SuperCard 1.5. Since CompileIt! is shipped as HyperCard 1.2 format, SuperCard users will need to convert to SuperCard format. An appendix in the CompileIt! manual spells out what to do and what to be aware of when using SuperCard and CompileIt!

There are several reasons to go with CompileIt! The price is right at $99, and there are no fees for distribution of your compiled externals. The compile process is a snap, but you should have a good knowledge of HyperTalk. CompileIt! is a great way to speed up and protect sensitive scripts.

CompileIt! 2.0 is distributed exclusively by:

Heizer Software

P. O. Box 232019

Pleasant Hill, CA. 94523

Phone: 800--888-7667 or 415-943-7667

FAX 415-943-6882

Price: $99 (working model: $10.00 compiles scripts up to 10 lines long. The Working Model includes a $10 rebate towards the purchase of CompileIt! 2.0).

Requires: Any Macintosh that can run HyperCard. Supports all versions of HyperCard, including 2.0, and SuperCard 1.5. A moderate level of programming ability is required.

Not copy protected and no runtime fees or licenses are required to distribute externals created with CompileIt!


Community Search:
MacTech Search:

Software Updates via MacUpdate

The best GIF making apps
Animated GIFs have exploded in popularity recently which is likely thanks to a combination of Tumblr, our shorter attention spans, and the simple fact they’re a lot of fun. [Read more] | Read more »
The best remote desktop apps for iOS
We've been sifting through the App Store to find the best ways to do computer tasks on a tablet. That gave us a thought - what if we could just do computer tasks from our tablets? Here's a list of the best remote desktop apps to help you use your... | Read more »
Warhammer 40,000: Freeblade guide - How...
Warhammer 40,000: Freebladejust launched in the App Store and it lets you live your childhood dream of blowing up and slashing a bunch of enemies as a massive, hulking Space Marine. It's not easy being a Space Marine though - and particularly if... | Read more »
Gopogo guide - How to bounce like the be...
Nitrome just launched a new game and, as to be expected, it's a lot of addictive fun. It's called Gopogo, and it challenges you to hoparound a bunch of platforms, avoiding enemies and picking up shiny stuff. It's not easy though - just like the... | Read more »
Sago Mini Superhero (Education)
Sago Mini Superhero 1.0 Device: iOS Universal Category: Education Price: $2.99, Version: 1.0 (iTunes) Description: KAPOW! Jack the rabbit bursts into the sky as the Sago Mini Superhero! Fly with Jack as he lifts impossible weights,... | Read more »
Star Wars: Galaxy of Heroes guide - How...
Star Wars: Galaxy of Heroes is all about collecting heroes, powering them up, and using them together to defeat your foes. It's pretty straightforward stuff for the most part, but increasing your characters' stats can be a bit confusing because it... | Read more »
The best cooking apps (just in time for...
It’s that time of year again, where you’ll be gathering around the dinner table with your family and a huge feast in front of you. [Read more] | Read more »
Square Rave guide - How to grab those te...
Square Rave is an awesome little music-oriented puzzle game that smacks of games like Lumines, but with its own unique sense of gameplay. To help wrap your head around the game, keep the following tips and tricks in mind. [Read more] | Read more »
Snowboard Party 2 (Games)
Snowboard Party 2 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Crowned the best snowboarding game available on the market, Snowboard Party is back to fulfill all your adrenaline needs in... | Read more »
One Button Travel (Games)
One Button Travel 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: “To cut a long story short, If you like interactive fiction, just go buy this one.” - “Oozes the polish that... | Read more »

Price Scanner via

Holiday weekend Mac sales roundup: B&H Ph...
B&H Photo continues to have all new Macs on sale for up to $500 off MSRP as part of their Black Friday/Holiday weekend sale. Shipping is free, and B&H charges NY tax only: - 15″ 2.2GHz Retina... Read more
iMobie Releases its Ace iOS Cleaner PhoneClea...
iMobie Inc. has announced the new update of PhoneClean 4, its iOS cleaner designed to reclaim wasted space on iPhone/iPad for use and keep the device fast. Alongside, iMobie hosts a 3-day giveaway of... Read more
U.S. Cellular Offering iPad Pro
U.S. Cellular today announced that it is offering the new iPad Pro with Wi-Fi + Cellular, featuring a 12.9-inch Retina display with 5.6 million pixels — the most ever in an iOS device. U.S. Cellular... Read more
Newegg Canada Unveils Black Friday Deals for...
Newegg Canada is offering more than 1,000 deep discounts to Canadian customers this Black Friday, available now through Cyber Monday, with new deals posted throughout the week. “Black Friday is... Read more
Black Friday: Macs on sale for up to $500 off...
BLACK FRIDAY B&H Photo has all new Macs on sale for up to $500 off MSRP as part of their early Black Friday sale including free shipping plus NY sales tax only: - 15″ 2.2GHz Retina MacBook Pro: $... Read more
Black Friday: Up to $125 off iPad Air 2s at B...
BLACK FRIDAY Walmart has the 16GB iPad Air 2 WiFi on sale for $100 off MSRP on their online store. Choose free shipping or free local store pickup (if available): - 16GB iPad Air 2 WiFi: $399, save $... Read more
Black Friday: iPad mini 4s on sale for $100 o...
BLACK FRIDAY Best Buy has iPad mini 4s on sale for $100 off MSRP on their online store for Black Friday. Choose free shipping or free local store pickup (if available): - 16GB iPad mini 4 WiFi: $299.... Read more
Black Friday: Apple Watch for up to $100 off...
BLACK FRIDAY Apple resellers are offering discounts and bundles with the purchase of an Apple Watch this Black Friday. Below is a roundup of the deals being offered by authorized Watch resellers:... Read more
Black Friday: Target offers 6th Generation iP...
BLACK FRIDAY Save $40 to $60 on a 6th generation iPod touch at Target with free shipping or free local store pickup (if available). Sale prices for online orders only, in-store prices may vary: -... Read more
Black Friday: Walmart and Target offer iPod n...
BLACK FRIDAY Walmart has the 16GB iPod nano (various colors) on sale for $119.20 on their online store for a limited time. That’s $30 off MSRP. Choose free shipping or free local store pickup (if... Read more

Jobs Board

Specialist *Apple* /Mac Desktop - University...
…technical support, expertise and user training for a variety of Apple /Macintosh hardware, software and devices.Researches, analyzes and resolves complex Apple Read more
*Apple* Site Security Manager - Apple (Unite...
# Apple Site Security Manager Job Number: 42975010 Culver City, Califo ia, United States Posted: Oct. 2, 2015 Weekly Hours: 40.00 **Job Summary** The Apple Site Read more
WiSE *Apple* Pay Quality Engineer - Apple (...
# WiSE Apple Pay Quality Engineer Job Number: 44313381 Santa Clara Valley, Califo ia, United States Posted: Nov. 13, 2015 Weekly Hours: 40.00 **Job Summary** Join our Read more
Holiday Retail Associate with *Apple* Knowl...
…and assertive.Someone who can troubleshoot iOS devices (iPhone and iPad) and Apple Mail issues.Someone who can offer solutions.Someone who can work weekends.Someone with Read more
*Apple* Systems Engineer (Mclean, VA and NYC...
Summary:Assist in providing strategic direction and technical leadership within the Apple portfolio, including desktops, laptops, and printing environment. This person Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.