TweetFollow Us on Twitter

BASIC Wars 2
Volume Number:3
Issue Number:2
Column Tag:BASIC School

BASIC Wars the Sequel!

By Dave Kelly, MacTutor Editorial Board, General Dynamics Corp.

This episode of BASIC Wars finds us looking at the newly released Microsoft Basic Compiler (version 1.0) and MS Basic Interpreter (version 3.0). In the first episode several months back we were introduced to several of the newcomers to Basic programming on the Macintosh. I refer you to the August 1986 MacTutor Basic column entitled "And then came Basic Wars!" for an introduction to ZBasic, True Basic, and PCMacBasic. Of these three, ZBasic now appears to be leading the race. If you have been following the Basic Wars Saga, you know of the major improvements in the reliability of ZBasic. It has come a long ways from the frequent bombs to the fairly reliable product we see now. Finally after a long wait (and some pressure from competition like ZBasic) Microsoft has recently released version 3.0 of the MS Basic Interpreter and version 1.0 of the new Microsoft Basic Compiler.

BASIC 3.0 Improvements

Before the battle begins, we should discuss the MS Basic Interpreter, version 3.0. By now most of you have heard about the improvements that have been made and registered owners have had a chance to upgrade for $25 (Well worth $25, I might add). MS Basic Interpreter is still a very reliable product just as before with major enhancements (i.e. value added). To begin, here is a brief overview of some of the new features:

First and very importantly, Microsoft has now bundled the CLR ToolLib Library with the interpreter. This alone is worth the $25 to upgrade from earlier versions, especially if you didn't already have CLR ToolLib. There are some new and improved toolbox calls included which were not in the original CLR ToolLib. Among those that were added to the original CLR ToolLib are:

BringToFront CmdKey DisposeDialog GetDialogBut GetDialogText

GetMouse GetNewDialog ModalDialog PtInRects RealFont

SetArray SetCreate SetDialogBut SetDialogText SetItemStyle

SetOrigin SetWindowPic SetWTitle SubPt

The list above is fairly complete unless I missed adding something to the list. One great advantage is that now the library calls provided will be more widely used. Previously only those who puchased the CLR Libraries could take advantage of them. This limited the type of programs which could be widely distributed to those that could be written without CLR Libraries. I expect that we will be seeing more widespread use of the Libraries now that they are part of the interpreter package. (NOTE: ZBasic claims to have more Toolbox calls available, but some if not most of them are still not compatible with other ZBasic calls. Example: INSERTRESMENU is not compatible with ZBasic MENU statement. However, INSERTRESMENU is not available with the MS Basic Libraries. Maybe CLR will write some more for us!! The MS ToolLib routines are compatible with all MS Basic commands).

Fig. 1 MS Compiler Options Dialog

The long awaited HFS incompatibility has been corrected with version 3.0. The FILES$ statement now returns the full pathname for HFS files (MFS is not changed). In version 2.x the FILES$ statement would only return the full pathname for a file in the root directory. This problem has been corrected with version 3.0. A new Basic statement has been added - CHDIR. CHDIR changes the current default directory to one specified with the statement. Using CHDIR is similar to setting the PREFIX command in ProDos on the Apple ][ series computers or using 'cd' on a UNIX™ operating system. (NOTE: no equivalent in ZBasic). Also notice that since the Scrapbook DA uses the default disk, the Scrapbook file that can be accessed will change when the CHDIR statement is used. Problems with single voice sound and the new ROM's has been fixed with version 3.0.

Now up to six windows can be opened at the same time. Older versions of the interpreter only allowed 4 windows open. (Note: ZBasic also allows up to six windows open). WINDOW(6) now returns the handle for the active edit field in the current output window. WINDOW(6) returns zero if the window has no active edit field. This function is useful with some toolbox functions.

The EDIT FIELD statement has been enhanced to include the type values 5,6,7 and 8. These types correspond to the types 1,2,3 and 4 except that the default text in the EDIT FIELD is not highlighted. This will be useful in programming a text editor application ( read on for more statements to make this possible).

Multi-line IF/THEN/ELSE statements are now allowed. Use of multi-line IF/THEN/ELSE improves readability of your program and fewer program lines are required in many cases. For better program structure, the multi-line IF/THEN/ELSE statement makes it easier to avoid the use of GOTO (a no-no if you are following good programming techniques). ZBasic provides multi-line IF/THEN/ELSE via use of the LONG IF/XELSE statement. MS Basic 3.0 uses the following IF/THEN/ELSE structure:

IF condition THEN
 statement[statement ]  :
ELSEIF condition  THEN
 statement[statement ]  :
ELSE
 statement[statement ]  :
END IF

While ZBasic multi-line IF/THEN/ELSE statements are functionally the same as the MS Basic implementation, it should be noted that the MS Basic syntax follows a more traditional implementation (as done in other languages). The MS Basic implementation is compatible with the ANSI (American National Standards Institute) Basic implementation.

The new function SADD returns the address of the first byte of data in a string expression. This will typically be used to pass the address of a string to a machine-language routine. [Since the first byte of a Macintosh Pascal string is the length byte, getting to the first character is a bit of a pain. This function is a nice addition. -Ed.]

Improvements have been made to Apple LaserWriter and LaserWriter Plus support. Printer support was lacking in previous versions of MS Basic. I have not verified exactly what improvements have been made. I will reserve that subject for a future issue of MacTutor.

The Basic runtime interpreter package is now bundled with the full interpreter for distributing your programs to others that don't have the interpreter without paying any runtime fees or licenses. The interpreter routines are the same, but the runtime package has no editor and no way to change your program.

Other than what I have just mentioned, there are no other documented changes. It is apparent that there are some improvements that are not documented. One such improvement is found in an example named 'DOUBLE CLICK ME' on the MS Basic disk 1 (there are two disks now, one for Basic and one for the ToolLib stuff). It is also found in a program named 'QnD' on the compiler Toolbox disk. 'QnD' stands for 'Quick and Dirty'. MS has provided us with a quick and dirty editor program written in Basic. Until now a text editor could not be written with either MS Basic or ZBasic. Several new statements show up in boldface in the program:

TECALTEXT WINDOW(6)
TEUPDATE VARPTR(rC(0)),WINDOW(6)
TESCROLL oFirstCh*-10,oFirstLn*-16,WINDOW(6)
TEACTIVATE WINDOW(6)

Also found on the MS Basic Interpreter disk in a demo file also named 'DOUBLE CLICK ME':

TESETTEXT SADD(OldEdit$),LEN(OldEdit$),WINDOW(6)
TEUPDATE VARPTR(rC(0)),WINDOW(6)

Since these statements are in boldface it follows that they are a part of the reserved words built into Basic. It is exciting to find out that they exist because they fill a void. Text editing has been limited in Basic. At the present time I don't have any information on the proper use of these statements, but Microsoft has promised to send me information which I can pass on to you. I suggest that if you want to try to use them before you have documentation that you do so with caution. I will bring you more information on how to use these statements in a future issue as soon as I can get the information from Microsoft on them. (NOTE: these are also supported by the MS Compiler too!).

MS Basic Compiler Unveiled

Finally after months of rumors the MS Basic Compiler has been officially released. Of the compiled basic products now available this one is number one for compatibility with the MS Basic interpreter. There are a few small modifications that may be needed in some programs, but most programs will not require any modification. Compiled programs will likely run up to 10 times faster than the interpreter. Note how similar the options dialog in fig. 1 is to MacFortran. This is because Absoft wrote the compiler. We may find many more similarities between these two compilers in time. The additions and enhancements to the interpreter version 3.0 are all supported by the compiler including the Toolbox libraries. The same CLR ToolLib which is included with the interpreter is also included with the compiler. It should be noted here that any other libraries from CLR or others you may have written for the interpreter are supported equally well by the compiler. The compiler does not support calls to routines written in other languages unless they follow the guidelines setup in "Building Machine Language Libraries". There are a few differences in the BASIC language provided by the interpreter and the compiler. One additional statement (not supported by the interpreter) is the SELECT CASE construct. SELECT CASE is a useful statement which is supported by the ANSI (American National Standards Institute) standard for Basic (also supported by True Basic and many other languages).

With the compiler you may declare your arrays to be static or dynamic. Dynamic arrays can be erased and redimensioned during runtime. Static arrays are set up at compile time and cannot be redimensioned during runtime. All definitions of functions and declaration of variables should appear at the beginning (or close to the beginning) of your compiled program. For example if a function defined by using a GOSUB at the beginning of your program and the subroutine with the function definition appears sequentially later in the program than the first line where the function is called, the compiled program will not work properly. The solution is to define the function and dimension arrays early in the program and avoid setting up functions and dimensions in subroutines.

Compiled subprograms may be called recursively. This allows subprograms to call themselves. Programs written for the MS Basic interpreter will not work recursively. An example is the mathematical factorial function where N! = 1*2*3...*N. A sample subprogram would be the following:

SUB fact (x, result)
 IF x = 1 THEN
 result = 1
 ELSE
 CALL fact(x-1,newresult)
 result = x * newresult
 END IF
END SUB

Most interpreter programs you will find will compile with no modifications. And best of all they still work as expected. This is not true if you try to convert MS Basic programs to ZBasic. The structure is very similar, but not all the commands work exactly the same way that the MS Basic interpreter and compiler does.

Before we get too far ahead of ourselves in talking about the compiler, it should be noted that the compiler should be thought of as a stand alone package. In other words, although it is compatible with the interpreter, the interpreter is NOT required to write and compile programs. The Apple EDIT program (version 2.0) is included with the compiler. Actually any editor program will work. It just so happens that it is convenient to use the interpreter's editor if you have both the interpreter and compiler. This way you can run your program (provided you understand the few differances between the interpreter and the compiler) with the interpreter until it is debugged. Then when your program runs like you want it to, you may then save the program as TEXT and run the compiler. Both the compler and the interpreter have added a Transfer item in the File menu for transferring from one application to another (in this case from the interpreter to the compiler). You could transfer to and from the EDIT application to compiler equally as well. It should be noted that the last line of a program saved by EDIT is lost when read in by the interpreter. So BEWARE. I don't know which is at fault, interpreter editor or EDIT program (I think it is the interpreter editor but I don't know for sure), but it is not hard to work around this bug.

Two methods may be used in compiling your programs. A set of runtime files (called runtime overlays) may be attached to your application at compile time to create a full double-clickable standalone application. Or you can compile just the program or set of programs (via a compiler list) and use the runtime files separately. This method will save space on a disk where you have several compiled programs. This way the runtime stuff will only have to be on the disk once. ICONS and other resources will have to be added separately with ResEdit.

A few compiler metacommands are provided that may be imbedded in the text of your program. Imbedding the metacommands in your program is helpful for ignoring text that should not be compiled or including text that should not be used when running the interpreter. The metacommands are imbedded in remark statements (which are ignored by the interpreter because they are comments). For example, the Search, Run and Windows menus of the interpreter are normally disabled in an interpreted program by a few lines of code similar to this:

FOR i = 3 TO 5 : MENU i,0,0,"" : NEXT i

This statement leaves 3 blank menus in place of the interpreter menus. In the compiler, these menus are not used and don't need to be erased (because they aren't there). In this case you may want to use the compiler metacommand: '$IGNORE ON before the statement to erase the menus and use '$IGNORE OFF to resume compiling. By doing this, the compiled version or your program will not have include three blank menus as the interpreted version does. The metacommands that are available are:

$INCLUDE to compile a file (stored on disk) and insert that file at the point where the $INCLUDE metacommand is used.

$IGNORE ON instructs the compiler to ignore source lines until it encouters an $IGNORE OFF.

$OPTION is used to change the compiler options that may be set before compilation. $OPTION allows any of the options to be changed during compilation. The options may be selected from a dialog box (see figure 1) before compilation. The program execution speed is affected by the options you choose. For example if you don't select 'C' for checking array boundaries, the error checking code will not be included in the compiled program and the program will run faster.

$PAGE can be used to set page breaks in compiler listing files.

COMPILER HANGUPS

There are only a few things that have not been up to snuff for creating professional Macintosh applications with the MS Basic Compiler. First, there is no compiler option or statement to disable the default window and default menus. If you recall, this was one of my complaints early on in the release of ZBasic. ZBasic has fixed that oversight by adding the WINDOW OFF statement.

There are a few minor bugs which affect only a few things you may want to do, and even then you can program around them with other statements. For example, I found that when compiling my Clipping Region Demo from last March 1986 that the compiled version did not run the same. It turns out that the CLS statement must reset the clipping region to the full screen because the second clipping region in the demo is cleared by CLS and the next items printed are not clipped. The solution is to select the clipping region again after the CLS statement or else not use the CLS statement at all. Since the fix for this problem requires only one extra statement (one that has already been used prior to the CLS statement), I don't consider this a major problem. Microsoft tells me that any bugs that may turn up in the compiler will be corrected in the next update to the compiler which could be as early as the end of March (??). I would hope that Microsoft will be as quick to respond to problems as Zedcor has done with ZBasic. Of course, I think that ZBasic had many more problems as evidenced by all the system bombs that we had all experienced. If Microsoft is responsive to what the users need (as Zedcor has been), then I see no reason why the MS Compiler won't be a success.

Another hangup is the way the compiler must have the Basic Overlays available in just the right folder. This also is something that you can work around because at least the compiler looks for the Overlays in the places you are most likely to put them. I would suggest the same sort of method that Lightspeed Pascal uses to find files when the compiler can't find them. When files can't be found, the GetFile dialog is displayed so the user can help find the file that is needed. If it is not done this way, I really don't feel that there is complete HFS compatiblilty. [This is a simple error trapping methodology. We fail to understand why it is not used by more programming languages. -Ed]

THE BOTTOM LINE

OK, you're probably wondering what's the bottom line. What product is the best? I'm not so sure that the dust has settled yet, but we can come to some conclusions now. For comparison, the benchmark tests form the August 1986 MacTutor have been executed for the MS Compiler. The interpreter results have not changed. The Sieve of Eratosthenes executed in 10 seconds for both binary and decimal compiled versions and static variables. ZBasic as you recall was 7 seconds (also uses static variables, dynamic not available in ZBasic). With dynamic variables the MS Compiler time was 56 seconds. In the same benchmark test done by Microsoft using floating point arrays (instead of integer arrays) the times were dramatically different. The MS Basic binary time was 13 sec., decimal time 17 sec. and ZBasic 75 seconds (all using static arrays). I think that these results just go to show you that one benchmark test does not give conclusive results as to what is better. Sometimes the results are only measuring specific statements and don't represent the performance real-world applications.

The MacTutor benchmark used back in Aug. 1986 returns the same accuracy results as for the Basic interpreter. Only the decimal version got the right answer; the binary version rounded off. The decimal verision ran in 4 seconds, but the binary ran in 1 second. In addition, if you use the RAM cache on the Mac Plus and run the binary version twice in a row, the second time it runs in less than 1 second (0 seconds is returned, but the TIMER statement doesn't return tenths of a second so I assume that the time was rounded to zero).

MACTUTOR BENCHMARK (Aug 1986)

decimal compile time = 12 sec.

Result = 503.54380215, 1.23, in 4 seconds

binary compile time = 11 sec.

Result = 503.5436, 1.23001 in 1 second

Sieve compile time: 13 seconds (other times below)

Microsoft has provided results (performed by Microsoft) to other benchmark tests which offer other comparisons. I have verified most of the ZBasic and MS Compiler results (results are in parenthesis). The table shown in figure 2 indicates these results.

BENCHMARK MS BASIC 3.0 (b) MS BASIC 3.0 (d) MS Compiler (b) MS Compiler (d) Zedcor ZBasic

SIEVEInteger Array

Dynamic 667 672 56 56 na: NOTE-1

Static na na 10 (10) 10 (10) 7 (7)

SIEVE FloatingPt. Array

Dynamic 733 792 58 63 na: NOTE-1

Static na na 13 17 75 (73)

FOR Loop Integer 7 7 1 (1) 1 (1) 1 (¾1)

FOR Loop Real 15 18 3 (3) 9 (9) 15 (26)

Array Lookup Integer

Dynamic 83 86 17 17 na: NOTE-1

Static na na 1 (1) 1 (1) 1 (1)

Array Lookup Real

Dynamic 85 87 19 20 na: NOTE-1

Static na na 1 (1) 1 (1) 18 (18)

Math Operations

Addition 100 102 1 (1) 1 (¾1) 51 (48)

Subtraction 102 110 1 (1) 1 (¾1) 58 (55)

Multiply 100 204 1 (¾1) 1 (¾1) 211 (208)

Division 107 205 1 (1) 1 (¾1) 488 (486)

String Operations

Concatenation 63 63 39 (39) 39 (39) 10 (10): NOTE-2

Pattern Match 42 44 30 (30) 31 (31) 6 (6): NOTE-2

Graphics

Line (BASIC stmt) 23 23 10 (7) 10 (7) 16 (6): NOTE-3

Line (ROM call) 18 18 5 (5) 5 (4) 5 (5)

Diagonal Line 39 39 30 (15) 31 (15) 34 (15): NOTE-3

CIRCLE 38 38 38 (19) 38 (20) 38 (19): NOTE-4

Set Pixel (PSET) 82 82 52 (39) 52 (40) 56 (32): NOTE-5

FILE I/O (data written/read on 400K floppy)

Random PUT 61 61 44 (25) 44 (29) WNR (114)

Random GET 43 41 27 (14) 28 (14) WNR (8)

Sequential PRINT# 24 25 5 (4) 5 (4) 12 (9)

Sequential INPUT 13 13 3 (3) 3 (3) Crashed (Crashed)

NOTES:

WNR: Would Not Run (A few minor modifications by MacTutor allowed these routines to run. Times in parenthesis).

1) Sinse ZBasic does not support ERASE or REDIM, it was assumed that they consider ALL arrays to be static.

2) ZBasic string variables are limited t 255 characters. MS Basic strings can be up to 32,767 characters.

3) ZBasic does not implement a LINE statement within the language. The ZBasic equivalent statement is PLOT. Since ZBasic's default coordinate system is 1024 X 768 and MS Basic's is 512 X 320, a COORDINATE WINDOW statement was included in the benchmark's source code to make all ZBasic graphics operations based on 512 X 320 pixels.

4) ZBasic has a slightly different implementation of the CIRCLE statement. Since ZBasic's default coordinate system is 1024 X 768 and MS Basic's is 512 X 320, a COORDINATE WINDOW statement was included in the benchmark's source code to make all ZBasic graphics operations based on 512 X 320 pixels.

5) ZBasic does not have a PSET statement. The ZBasic equivalent is PLOT. Since ZBasic's default coordinate system is 1024 X 768 and MS Basic's is 512 X 320, a COORDINATE WINDOW statement was included in the benchmark's source code to make all ZBasic graphics operations based on 512 X 320 pixels.

The benchmark presented for sequential file I/O does 5000 writes and 5000 reads from a sequential file. The benchmark presented for random file I/O does 5000 PUTs and 5000 GETs from a sequential file. The math benchmarks presented do 100,000 iterations of each of the four standard math functions in single-precision format. The string operations presented were performed 30,000 times each.

All the benchmarks above were performed by Microsoft on a 512K Macintosh, Finder 5.3, System 3.2, and HyperDrive 20. Benchmark results by MacTutor (those inside parenthesis) were performed on a Macintosh Plus, Finder 5.3, System 3.2 and ProApp 40.

The benchmarks can be obtained by contacting Microsoft Corporation,Public Relations,16011 NE 36th Way,Box 97017, Redmond, WA 98073-9717 (206) 882-8088 and asking for the Microsoft BASIC for Apple Macintosh Benchmark disk.

Fig. 2 Benchmarks for the new MS Basic Compiler

It appears from the results that the MS Compiler does computations much faster, but ZBasic handles string manipulations much faster (keeping in mind note-2 of the table). If you are now wondering if you should buy ZBasic or the MS Compiler you may now have a tough decision. For the price ZBasic has a lot to offer, but as far as being compatible with the MS Interpreter, the MS Compiler is the one. It looks like there are some speed advantages to the MS Compiler that may be a deciding factor for some of you. I have updated and modified the Basic Comparison Chart from the Aug. 1986 issue, shown in figure 3. (The apple rating shown compares each product relative to each other and has no relation to the previous chart in the Aug. 1986 MacTutor. At this time I feel that the MS Compiler has an edge over the other products due to its reliability (it works) and compatibility with the MS Basic Interpreter (ver. 3.0). Toolbox support is sufficient and user expandable (if you want to write your own libraries). The race is still very close, but this is the way I see it at the present time. More to come see you next month.

MS Compiler Bugs

There are a few bugs that we assume will be fixed promptly in the next update of the MS Compiler. At least if Microsoft is responsive to their users I'm sure they will want to make the proper corrections where they apply. Some of the problems are:

° No compiler option is availble to disable the default window. This is undesirable when custom windows are used (most of us use them all the time).

° There is no support for ZOOM windows. This is a feature of the 128K ROMS which many of us would like to use. Of course Microsoft prefers double-clicking on the title bar to zoom the window, but even that doesn't work with the MS Compiler. We fail to understand why all the new ROM routines have not been supported as yet!

° The CLS statement changes the clipping region. This is noticable when using the SetClip toolbox call. There is no problem with this when using the Interpreter. NOTE: Now that the CLR libraries are included as part of the Interpreter and Compiler, it is assumed that Microsoft will support the toolbox by making statements compatible. It should be noted that there may be several things that don't work exactly the same as the Interpreter when using libraries as the libraries were originally written for the interpreter. Most of these type of problems can be worked around without much inconvenience. It would be unreasonable to think that all of the differences have been found.

° Commnications does not work properly. If you want to verify this just compile the 'terminal' program included with the sample programs supplied with the Interpreter. You will find that characters are lost in the compiled version. I verified this by connecting a Mac+ with an Apple //e directly with the imagewriter cable. If you use communications these problems could be a real pain.

° It has been reported to MacTutor that only the Apple printer drivers are supported. I don't have any non-Apple drivers so I could not verify this.

° Printing to a printer with the Compiler does not work the same as with the Interpreter. For example

OPEN "O",#1,"LPT1:"
PRINT #1, TAB(10) USING "$###.###";777.7777
CLOSE #1

sends a single form feed to the printer and does not print the number. The interpreter tabs over 10 spaces and prints the number as expected. Also:

OPEN "LPT1:PROMPT" FOR OUTPUT AS #1
PRINT "";TAB(10);"HELLO WORLD"
CLOSE #1

ignores the TAB and prints HELLO WORLD at the left edge of the page. These problems can be overcome with other statements, but we hope that Microsoft will pay attention to problems like this. It appears that anytime TAB is sent to the printer from a compiled Basic program, the TAB functions are ignored. TAB works properly when printing to the screen. It is interesting to note that the Absoft Fortran product also had a lot of problems with printing. We wonder if there is a connection.

° The compiler does not seem to optimize code. Object code files are very large especially when Libraries are used. A solution when using Libraries is to use ResEdit to modify the names of the Library CODE resources to one character long and change program lines to match. Now when program is compiled fewer bytes are required to specify the library CODE resource. Keep in mind that this makes your source code harder to read.

While these problems may seem small, I hope that Microsoft will be responsive to correcting this bugs as quickly as Zedcor has been with ZBasic. Even with the problems mentioned here, it is my opinion that the MS Compiler is closer to being bug free than ZBasic.

If you find any more bugs, please let us know. Also it wouldn't hurt to let Microsoft know. We will be doing the same with hopes that the bugs will be corrected.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Microsoft Remote Desktop 8.0.19 - Connec...
With Microsoft Remote Desktop, you can connect to a remote PC and your work resources from almost anywhere. Experience the power of Windows with RemoteFX in a Remote Desktop client designed to help... Read more
OmniGraffle 6.3 - Create diagrams, flow...
OmniGraffle helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use Graffle to... Read more
PDFKey Pro 4.3.2 - Edit and print passwo...
PDFKey Pro can unlock PDF documents protected for printing and copying when you've forgotten your password. It can now also protect your PDF files with a password to prevent unauthorized access and/... Read more
Ableton Live 9.2.2 - Record music using...
Ableton Live lets you create and record music on your Mac. Use digital instruments, pre-recorded sounds, and sampled loops to arrange, produce, and perform your music like never before. Ableton Live... Read more
Macs Fan Control 1.3.1.0 - Monitor and c...
Macs Fan Control allows you to monitor and control almost any aspect of your computer's fans, with support for controlling fan speed, temperature sensors pane, menu-bar icon, and autostart with... Read more
NetShade 6.3.1 - Browse privately using...
NetShade is an anonymous proxy and VPN app+service for Mac. Unblock your Internet through NetShade's high-speed proxy and VPN servers spanning seven countries. NetShade masks your IP address as you... Read more
Dragon Dictate 4.0.7 - Premium voice-rec...
With Dragon Dictate speech recognition software, you can use your voice to create and edit text or interact with your favorite Mac applications. Far more than just speech-to-text, Dragon Dictate lets... Read more
Persecond 1.0.2 - Timelapse video made e...
Persecond is the easy, fun way to create a beautiful timelapse video. Import an image sequence from any camera, trim the length of your video, adjust the speed and playback direction, and you’re done... Read more
GIMP 2.8.14p2 - Powerful, free image edi...
GIMP is a multi-platform photo manipulation tool. GIMP is an acronym for GNU Image Manipulation Program. The GIMP is suitable for a variety of image manipulation tasks, including photo retouching,... Read more
Sandvox 2.10.2 - Easily build eye-catchi...
Sandvox is for Mac users who want to create a professional looking website quickly and easily. With Sandvox, you don't need to be a Web genius to build a stylish, feature-rich, standards-compliant... Read more

ReBoard: Revolutionary Keyboard (Utilit...
ReBoard: Revolutionary Keyboard 1.0 Device: iOS Universal Category: Utilities Price: $1.99, Version: 1.0 (iTunes) Description: Do everything within the keyboard without switching apps! If you are in WhatsApp, how do you schedule a... | Read more »
Tiny Empire (Games)
Tiny Empire 1.1.3 Device: iOS Universal Category: Games Price: $2.99, Version: 1.1.3 (iTunes) Description: Launch cannonballs and blow tiny orcs into thousands of pieces in this intuitive fantasy-themed puzzle shooter! Embark on an... | Read more »
Astropad Mini (Productivity)
Astropad Mini 1.0 Device: iOS iPhone Category: Productivity Price: $4.99, Version: 1.0 (iTunes) Description: *** 50% off introductory price! ​*** Get the high-end experience of a Wacom tablet at a fraction of the price with Astropad... | Read more »
Emo Chorus (Music)
Emo Chorus 1.0.0 Device: iOS Universal Category: Music Price: $1.99, Version: 1.0.0 (iTunes) Description: Realistic Choir simulator ranging from simple Chorus emulation to full ensemble Choir with 128 members. ### introductory offer... | Read more »
Forest Spirit (Games)
Forest Spirit 1.0.5 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0.5 (iTunes) Description: | Read more »
Ski Safari 2 (Games)
Ski Safari 2 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: The world's most fantastical, fun, family-friendly skiing game is back and better than ever! Play as Sven's sister Evana, share... | Read more »
Lara Croft GO (Games)
Lara Croft GO 1.0.47768 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0.47768 (iTunes) Description: Lara Croft GO is a turn based puzzle-adventure set in a long-forgotten world. Explore the ruins of an ancient... | Read more »
Whispering Willows (Games)
Whispering Willows 1.23 Device: iOS Universal Category: Games Price: $4.99, Version: 1.23 (iTunes) Description: **LAUNCH SALE 50% OFF** - Whispering Willows is on sale for 50% off ($4.99) until September 9th. | Read more »
Calvino Noir (Games)
Calvino Noir 1.1 Device: iOS iPhone Category: Games Price: $3.99, Version: 1.1 (iTunes) Description: The film noir stealth game. Calvino Noir is the exploratory, sneaking adventure through the 1930s European criminal underworld.... | Read more »
Angel Sword (Games)
Angel Sword 1.0 Device: iOS Universal Category: Games Price: $6.99, Version: 1.0 (iTunes) Description: Prepare to adventure in the most epic full scale multiplayer 3D RPG for mobile! Experience amazing detailed graphics in full HD.... | Read more »

Price Scanner via MacPrices.net

Apple and Cisco Partner to Deliver Fast-Lane...
Apple and Cisco have announced a partnership to create a “fast lane” for iOS business users by optimizing Cisco networks for iOS devices and apps. The alliance integrates iPhone with Cisco enterprise... Read more
Apple offering refurbished 2015 13-inch Retin...
The Apple Store is offering Apple Certified Refurbished 2015 13″ Retina MacBook Pros for up to $270 (15%) off the cost of new models. An Apple one-year warranty is included with each model, and... Read more
Apple refurbished 2015 MacBook Airs available...
The Apple Store has Apple Certified Refurbished 2015 11″ and 13″ MacBook Airs (the latest models), available for up to $180 off the cost of new models. An Apple one-year warranty is included with... Read more
21-inch iMacs on sale for up to $120 off MSRP
B&H Photo has 21″ iMacs on sale for up to $120 off MSRP including free shipping plus NY sales tax only: - 21″ 1.4GHz iMac: $999.99 $100 off - 21″ 2.7GHz iMac: $1199.99 $100 off - 21″ 2.9GHz iMac... Read more
5K iMacs on sale for up to $150 off MSRP, fre...
B&H Photo has the 27″ 3.3GHz 5K iMac on sale for $1899.99 including free shipping plus NY tax only. Their price is $100 off MSRP. They have the 27″ 3.5GHz 5K iMac on sale for $2149.99 $2199.99, $... Read more
1.4GHz Mac mini, refurbished, available for $...
The Apple Store has Apple Certified Refurbished 1.4GHz Mac minis available for $419. Apple’s one-year warranty is included, and shipping is free. Their price is $80 off MSRP, and it’s the lowest... Read more
iPad Air 2 on sale for up to $100 off MSRP
Best Buy has iPad Air 2s on sale for up to $100 off MSRP on their online store for a limited time. Choose free shipping or free local store pickup (if available). Sale prices available for online... Read more
MacBook Airs on sale for $100 off MSRP
Best Buy has MacBook Airs on sale for $100 off MSRP on their online store. Choose free shipping or free local store pickup (if available). Sale prices for online orders only, in-store prices may vary... Read more
Big Grips Lift Handle For iPad Air and iPad A...
KEM Ventures, Inc. which pioneered the extra-large, super-protective iPad case market with the introduction of Big Grips Frame and Stand in 2011, is launching Big Grips Lift featuring a new super-... Read more
Samsung Launches Galaxy Tab S2, Its Most Powe...
Samsung Electronics America, Inc. has announced the U.S. release of the Galaxy Tab S2, its thinnest, lightest, ultra-fast tablet. Blending form and function, elegant design and multitasking power,... Read more

Jobs Board

*Apple* Evangelist - JAMF Software (United S...
The Apple Evangelist is responsible for building and cultivating strategic relationships with Apple 's small and mid-market business development field teams. This Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Desktop Analyst - KDS Staffing (Unit...
…field and consistent professional recruiting achievement. Job Description: Title: Apple Desktop AnalystPosition Type: Full-time PermanentLocation: White Plains, NYHot Read more
*Apple* Systems Engineer (Mclean, VA and NYC...
Title: Apple Systems Engineer (Mclean, VA and NYC) Location: United States-New York-New York-200 Park Ave (22005) Other Locations: United States-Virginia-Vienna-Towers Read more
*Apple* Systems Engineer (Mclean, VA and NYC...
…Assist in providing strategic direction and technical leadership within the Apple portfolio, including desktops, laptops, and printing environment. This person will Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.