TweetFollow Us on Twitter

Fortran, AppMaker
Volume Number:7
Issue Number:10
Column Tag:Jörg's Folder

Language Systems FORTRAN and AppMaker

Jörg Langowski, MacTutor Editorial Board

Note: Source code files accompanying article are located on MacTech CD-ROM or source code disks.

After the comparative review of LS FORTRAN and Absoft MacFORTRAN, I received an invitation from Language Systems to review their interface to AppMaker, which simplifies creating Macintosh applications in Fortran a great deal. So here we go. First, even though AppMaker has been mentioned in our magazine, I’d like to remind you briefly what it does.

AppMaker, from Bowers Development, is one of several products that lets you create a user interface graphically, and when you are satisfied with the ‘look and feel’ of your program, create source code for a variety of programming languages. That source code, compiled and linked, will give a functional Macintosh application that has Apple, File, and Edit menus, together with the menus that you have defined, the windows have the correct basic behavior (e.g. grow, zoom, and resizeable scroll bars), desk accessories are supported and the whole thing is Multifinder compatible, etc. To make the controls and menu selections do something useful, you then have to add your own code that defines the actual functions of the different parts of the user interface.

AppMaker stands out from other programs (such as Prototyper) that do similar things in that it only controls the way certain predefined code segments are plugged together to make the application. These code segments are partially contained in libraries, for the code that is common to all applications, and in string resources in AppMaker itself, for code that changes depending on the user interface. If you are not satisfied with the way AppMaker creates the user interface, you can change any of these resources or libraries, because the source code is provided. And, most important, adding code generation for a new language becomes more or less straightforward (although I think adding a Forth interface to AppMaker would take too much of my spare time ).

Among the Fortrans for the Mac, the great advantage of LS Fortran is that Structure and Pointer definitions are available (even with some amount of type checking), which makes it very easy to create code that uses the Mac Toolbox interface. Thus, with AppMaker being around, Language Systems could easily add their own code generation part. It has been available for a while as “Fortran Tools for AppMaker”.

“Do-Nothing” example in LS Fortran/AppMaker

To see what Fortran Tools for AppMaker can do, I’ve created the simplest ‘do-nothing’ example application; it has Apple, File, and Edit menus, one resizeable, zoomable document window, and a couple of standard alerts, such as an About box. It can open and save documents, but does nothing with its contents; saved documents are empty. In order to create an application which does something useful, you have to insert your own code into the AppMaker-generated files in appropriate places. These places are usually well-marked (see listing).

I’ve reprinted some of the AppMaker-generated Fortran code in the listing (not all of it, that would be too long). In our example you see the central ‘dispatcher’ which calls event handlers for the various windows and modeless dialogs that could be present (only one in our case). The actual event handling routines are contained in the file MainWindow.f that is listed after the dispatcher. The logic is quite clear: the dispatcher decides which window the event belongs to, and calls the handler for that window. Who calls the dispatcher? It is called from the main event loop. Because all the behavior particular to the application can be put into the dispatcher and menu handler (not listed), the main event loop never changes, and its code can be contained in a library. When you purchase Fortran Tools, you get its source code, but I can’t list it here for copyright reasons.

Thus you see, AppMaker gives you control over all details of the generated code. For instance, it wouldn’t be too difficult to change the structure of the main event loop and the dispatcher code pieces to account for high-level events as required by System 7-aware applications. (For those of you who haven’t read through the System 7 documents: a high-level event can be sent from one application to another and, for instance, cause that application to open a document, or quit. An application can also sent such an event to itself; instead of calling a ‘Quit’ handler directly when quit is selected from the File menu, the application will send a ‘quit’ event to itself, and the high-level event handler will do the actual quit actions. More on this in my next column ).

Language Systems include several examples, where the simple do-nothing application has been extended for displaying graphics, handling text edit fields, etc., by adding only very few lines of Fortran code. Whatever your opinion (or religion) about Fortran as a programming language is, with LS Fortran and AppMaker you can certainly create application as easily and as well-documented as in Pascal or C. With the amount of scientific applications written in Fortran, the LS Fortran / AppMaker team is a very important tool that I recommend to anyone who considers transporting Fortran programs to the Mac.

In the near future you can expect more developments in LS Fortran, as I was told in a recent letter from Language Systems:

“ The integration of AppleEvents and Publish & Subscribe into FORTRAN programs was certainly the most popular part of our preview [at MacWorld Expo - JL].

one of our demos launches Excel via AppleEvents and directs it to open two documents. These documents subscribe to a data file published by the FORTRAN program. By selecting a menu item from our output window the user causes the published data file to be updated with random data. In the background Excel can be seen to update its worksheet and chart to reflect the new values. Finally, when the user quits the output window, Excel is also forced to quit via AppleEvents.

[I’m really sorry I can’t disclose the source code of that example here. It is amazing how elegant the interface to the Edition Manager works - JL]

We have also been hard at work on new optimizations, including some technology specific to the mc68040. We have improved our compatibility with Pascal and C and also with other FORTRANs such as Cray and Data General. Debugging features have been enhanced and the output window made more configurable.

The projected release date is early November, and we will send free upgrades to registered owners who purchased after June 1st.”

Regards,

Guy McCarthy

Vice President

Research & Development

AppleLink: D1810 or LANGSYS

Forth mail

A couple of letters came in dealing with different Forths for the Macintosh (I should write an all-Forth column soon again, I think ). Bob Loewenstein gives an update on the latest version of his Neon-successor, Yerk:

“Version 3.5 of Yerk, once known as Neon, is now available from anonymous ftp at oddjob.uchicago.edu in ~ftp/pub/Yerk. There are 5 files:

0. ReadMe.txt description

1. manual1.sit.hqx no change from Yerk version 3.2

2. manual2.sit.hqx no change from Yerk version 3.2

3. yerk.3.5.sit.hqx all source files and executables

4. supp.sit.hqx supplemental files; no change from Yerk version 3.2

If you are picking Yerk off for the first time, you will want these files.

Even though not all of the source files have changed from version 3.3.2, I recommend grabbing the yerk.3.5.sit.hqx file and archiving all of Yerk 3.3.2. Further upgrades from 3.5 will be posted with an file consisting of only those files that have been modified.

Version 3.5 is 32 bit clean and runs under system 7, but does not respond to AppleEvents. You may now create a stand-alone application, though, and hooks are in to help you make your program respond to High Level Events. See the ReadMe file and source Events.

Yerk is an object oriented language based on a Forth Kernel with some major modifications. It was originally known as Neon, developed and sold as a product by Kriya Systems from 1985 to 1989. Several of us at The University of Chicago have maintained Yerk since its demise as a product. Because of the possible trademark conflict that Kriya mentions, we picked the name Yerk, which is at least not an acronym for anything, but rather stands for Yerkes Observatory, part of the Department of Astronomy and Astrophysics at U of C.

Some features of the language are:

- defaulted early binding, with ability to late bind in almost any circumstance

- inheritance (not multiple)

- floating point (SANE)

- many system classes and objects for mac interfacing: windows, controls, events, files, arrays, ordered-columns, menus, hierarchical and popup menus, handles, strings, mouse, quickdraw, modal dialogs, offscreen bitmaps, vbl, time manager, etc.

- module (overlay) creation that are loaded only when necessary and may be purged from application heap memory.

Some forth extensions are:

- local input parameters

- named input variables

- multiple cfa words (including vectors and values)

- CASE

- SELECT

- 68000 assembler

Yerk runs on all macs from mac+ on up, and under all systems > 5.x. If anyone has any questions, feel free to contact me”:

Bob Loewenstein

Dept. of Astronomy and Astrophysics

University of Chicago

Yerkes Observatory

Williams Bay, Wisconsin 53191

414-245-5555

rfl@oddjob.uchicago.edu

Mach2, too, still has its active users; after mentioning the Mach2 compatibility problems with System 7, I received this letter:

“Jörg,

I was very relieved when I saw your article in the July MacTutor. I was afraid that you left the magazine since I had not seen your column in June. Reading your column is the only reason that I subscribe to the magazine since I am an avid Forth fan. [I see the hint - look for a new Forth column soon / JL]I am a scientist at the University of Utah and ignore the snobbery of most Mac programmers with respect to Forth. I am only interested in performance and Forth is by far the most productive programming environment for someone like me who can only hack in his spare time. Nevertheless, I have managed to create a sophisticated scientific program in MACH 2 Forth that has been commercially available for the last year.

The particular subject that prompted this note was your comment on the incompatibility between System 7 and MACH2. This is only partially correct. In the spirit of all true Forth hackers, I spent an afternoon modifying the system and it is now completely compatible (at least I have compiled dozens of programs with it on a Mac IIfx with System 7 without any problems at all). The modifications are really quite minor. You must install a modified event loop to become fully multifinder compatible (the one posted on the Genie bulletin board is *not* correct). Next you use ResEdit to set the size resource to reflect the changes and install the screen font (monaco 9pt I think) into MACH2 itself. Apparently MACH2 doesn’t believe in TrueType fonts. Anyway, if your are interested in a “fixed” copy of MACH2 or a more detailed listing of the changes necessary to patch MACH2, just let me know and I will be glad to send them to you. [Definitely! E-mail is on its way / JL]I still do all my System 7 programming in MACH2. By using the trap compiler that was posted on the Genie bulletin board, I have implemented all of the new trap routines and have written programs that use color, offscreen devices, palette animation and so forth. Since I can modify my system (as you showed us how to do), I am always the first programmer I know who can use new enhancements on the Mac...”

H. Steven Wiley (MacScientist)

Wiley@bioscience.utah.edu

[You might want to consider porting your code to MacFORTH since it is actively supported.-ed]

The author of Pocket Forth, Chris Heilman, has some good news for us, too:

“Jörg,

I just got August’s MacTutor, opened it to page 58, just to see what’s up in the world of Forth, and low and behold, there is my name right in the middle of the page! I’m a star! Thank you for the mention ( “Starting with “!!!). [You’re welcome. Your Forth is definitely one of the best ways for beginning and advanced hackers to get into the guts of the machine / JL]

Last May, I (and a lot of others) upgraded our systems to 7.0. Of course the compatibility checker had never heard of Pocket Forth (since I had never told Apple anything about it.) So, cautiously, I began to check it out.

The DA dragged out of the suitcase and ran just fine, although I found the generic icon to be kind of, well, generic. I put it through all the paces and tested the various addressing modes. The DA passed. Then on to the application (which in systems 6 and lower, I considered a poor cousin). First off neither it nor anything else would run in the background; then I tried 32 bit addressing mode. /\/Crash-ola\/\ It was not a pretty sight. I knew it would happen, but it was unpleasant to see it just the same. By the time I had rebooted, release 5 was being hatched.

Pocket Forth release 5 has now been completed. Release date: 11 July 1991, the date of the solar eclipse. Actually only a group of testers got it then, I put it on CompuServe and America Online a couple of weeks ago. Since then a few hundred people have received Pocket Forth, so it looks as if PASC’s statement that there is no market for Forth is wrong (as long as the price is right). Pocket Forth is still priced within the reach of every programmer (free), and support is more available than ever before. I give out three addresses including CI$, Bitnet and mail. Anyone who gets it from America Online can also contact me there.

The new release consists of a self extracting archive that contains the application (now the star of the show), the DA, rewritten manual, updated glossary, the ReadMe application, a WhatIsNew text file for previous users, about a dozen examples, and every line of assembly source code (with instructions). Concurrent with the release, a new Rhine program (runs in color or black and white) was also released with an ad for Pocket Forth in it’s about box.

Pocket Forth’s new features: Fully compatible with System 7. High level events, balloon help, color icons (check out the girl in the DA), better menus, bugs fixed and numerous other enhancements have been added. Compatibility with release 4 and with all types of Macintosh (1984-1991) has been maintained.

Forth on the Mac scene, does indeed seem to be thinning out but with the work of us few, it is available, and being kept up to date. Recent coverage by the popular press suggests that efficient languages are no longer needed for general use, now that average memory sizes are measured in megabytes, and at 25 MHz even HyperCard is a speed daemon. Forth, however, is the language of choice for embedded systems.

[Of course the popular press is wrong, like so often. Even with fast machines, Hypercard is still slow if you do anything more advanced than opening a card by pressing a button. Mac users are used to immediate response (a point that is hard to get through to mainframe users), and even a 1/4 second delay between a user action and the program reaction can seem very slow. / JL]

While languages like C and Pascal are politically correct (and they carry their banners to battle), Forth is losing its religious zealots. No longer are there claims that Forth programs are half the size of assembly and run twice as fast. And improperly commented code is impossible to read, even if written in Forth. Other languages now base their popularity on the language itself, while Forth has become judged by its applications. I heard from somewhere that most of the experiments carried out on a recent space shuttle mission were written in Forth and that the software fix for the Hubble is also Forth.

It looks like Forth is very much alive, just used in different ways than it has been in the past. Keep up the good work and I’m looking forward to an all Forth article soon.

PS If you don’t have PF5 yet, let me know, I’ll get to you.”

Chris Heilman, Phoenix College, Chemistry:

Author of Pocket Forth

BITNET: heilman@pc (work) :

CompuServe: [70566,1474] (personal)

US Mail 85066-8345 (personal)

Listing: LS Fortran example code created by AppMaker
! Dispatcher.f -- dispatcher for windows and for modeless dialogs 
! Created 8/27/91 9:37 by AppMaker 
!!MP inlines.f
!!G JLtest.finc.f
!----------
!!D+
!!R+
!!OV+
!!S Dispatcher 

!----------
 Subroutine OpenWindows (fName, vRefNum, fRefNum)
 String*255 fName
 Integer*2 vRefNum, fRefNum
 Call OpenMainWindow (fName, vRefNum, fRefNum)
  
 End !OpenWindows

!----------
 Subroutine CloseCurWindow
 include ‘Globals.inc’
 if(cur^.windowKind = WMainWindow) Call CloseMainWindow 
  
 End !CloseCurWindow

!----------
 Subroutine MouseInContent (where, modifiers)
 include ‘Globals.inc’
 record /point/ where
 integer*2 modifiers
 if(cur^.windowKind = WMainWindow) Call MouseInMainWindow (where, modifiers)
  
 End !MouseInContent

!----------
 Subroutine TypeInWindow (ch)
 include ‘Globals.inc’
 character*1 ch
 if(cur^.windowKind = WMainWindow) Call TypeInMainWindow (ch)
  
 End !TypeInWindow

!----------
 Subroutine UpdateContent
 include ‘Globals.inc’
 if(cur^.windowKind = WMainWindow) Call UpdateMainWindow 
  
 End !UpdateContent

!----------
 Subroutine ActivateContent (activate)
 include ‘Globals.inc’
 logical activate
 if(cur^.windowKind = WMainWindow) Call ActivateMainWindow (activate)

 End !ActivateContent

!----------
 Subroutine ResizeContent
 include ‘Globals.inc’
 if(cur^.windowKind = WMainWindow) Call ResizeMainWindow 
  
 End !ResizeContent

!----------
 Subroutine ScrollWindow (newValue, oldValue)
 include ‘Globals.inc’
 integer*2 newValue, oldValue
 if(cur^.windowKind = WMainWindow) Call ScrollMainWindow (newValue, oldValue)
  
 End !ScrollWindow

!----------
 Subroutine DoControl (whichControl, whichPart, where)
 include ‘Globals.inc’
 record /ControlHandle/ whichControl
 integer*2 whichPart
 record /point/ where
 if(cur^.windowKind = WMainWindow) Call ControlMainWindow (whichControl, 
whichPart, where)
  
 End !DoControl

!----------
 Subroutine InitModelessDialogs
 End !InitModelessDialogs

!----------
 Subroutine CloseModelessDialog (whichDialog)
 pointer /dialogrecord/ whichDialog
 End !CloseModelessDialog

!----------
 Logical*2 Function FilterModeless (whichDialog, event, itemHit)
 pointer /dialogrecord/ whichDialog
 record /EventRecord/ event
 integer*2 itemHit
  
 End !FilterModeless

!----------
 Subroutine DoModelessItem (whichDialog, itemNr)
 pointer /Dialogrecord/ whichDialog
 integer*2 itemNr
  
 End !DoModelessItem

! MainWindow.f 
! Created 8/27/91 9:37 by AppMaker 

!!MP inlines.f
!!G JLtest.finc.f

!!D+
!!R+
!!OV+
!!S MainWindow 

!----------
 Subroutine OpenMainWindow (fName, vRefNum, fRefNum)
 include ‘Globals.inc’
 String*255 fName
 integer*2 vRefNum, fRefNum
 pointer /grafport/ newWindow
 record /rect/ bounds

 newWindow = GetNewWindow (MainWindowID, nil, INT4(-1))
 Call SetWTitle (newWindow, %ref(fName))
 Call SetPort (newWindow)
 Call SetNewInfo (newWindow)
 cur^.vScroll.Ctlh = nil
 cur^.hScroll.Ctlh = nil
 cur^.fileNum  = fRefNum
 cur^.volNum= vRefNum
 cur^.dirty = .false.
 cur^.filename.shdl = NewString (%ref(fName))
 cur^.windowKind = WMainWindow 
 cur^.text.TEH = nil
 !add code here: MainWindow open
 Call ShowWindow (newWindow)
 End !OpenMainWindow 

!----------
 Subroutine CloseMainWindow 
 include ‘Globals.inc’

 Call DisposHandle (cur^.filename)
 Call DiscardInfo (curWindow)
 !add code here: MainWindow close
 End !CloseMainWindow 

!----------
 Subroutine MouseInMainWindow (where, modifiers)
 include ‘Globals.inc’
 record /point/ where
 integer*2 modifiers
 record /rect/ bounds

 !add code here: MainWindow mousedown
 End !MouseInMainWindow 

!----------
 Subroutine TypeInMainWindow(ch)
 include ‘Globals.inc’
 Character*1 ch
 if (cur^.text.TEH = nil) then 
 Call SysBeep (INT2(1))
 else 
 Call TEKey (ch, cur^.text)
 end if
 !add code here: MainWindow keypress
 End !TypeInMainWindow 

!----------
 Subroutine UpdateMainWindow 
 include ‘Globals.inc’
 record /rect/ bounds
 Call DrawClippedGrow (Int2(-15), Int2(-15))
 !add code here: MainWindow update 
 End !UpdateMainWindow 

!----------
 Subroutine ActivateMainWindow (activate)
 include ‘globals.inc’
 logical activate
 Call DrawClippedGrow (Int2(-15), Int2(-15))
 !add code here: MainWindow activate 
 End !ActivateMainWindow 

!----------
 Subroutine ResizeMainWindow 
 include ‘globals.inc’

 !add code here: MainWindow items resize 
 End !ResizeMainWindow 

!----------
 Subroutine ScrollMainWindow (newValue, oldValue)
 include ‘globals.inc’
 integer*2 newValue, oldValue
 !add code here: MainWindow scroll 
 End !ScrollMainWindow 

!----------
 Subroutine ControlMainWindow (whichControl, whichPart, where)
 include ‘globals.inc’
 record /ControlHandle/ whichControl
 Logical*2 TrackButton
 External TrackButton
 integer*2 whichPart
 record /point/ where
 record /rect/ bounds

 End !ControlMainWindow 

 
AAPL
$106.98
Apple Inc.
-0.36
MSFT
$46.05
Microsoft Corpora
-0.57
GOOG
$550.31
Google Inc.
+0.98

MacTech Search:
Community Search:

Software Updates via MacUpdate

Cocktail 8.0.1 - General maintenance and...
Cocktail is a general purpose utility for OS X that lets you clean, repair and optimize your Mac. It is a powerful digital toolset that helps hundreds of thousands of Mac users around the world get... Read more
LibreOffice 4.3.3.2 - Free Open Source o...
LibreOffice is an office suite (word processor, spreadsheet, presentations, drawing tool) compatible with other major office suites. The Document Foundation is coordinating development and... Read more
VMware Fusion 7.0.1 - Run Windows apps a...
VMware Fusion allows you to create a Virtual Machine on your Mac and run Windows (including Windows 8.1) and Windows software on your Mac. Run your favorite Windows applications alongside Mac... Read more
OneNote 15.3.2 - Free digital notebook f...
OneNote is your very own digital notebook. With OneNote, you can capture that flash of genius, that moment of inspiration, or that list of errands that's too important to forget. Whether you're at... Read more
Audio Hijack Pro 2.11.4 - Record and enh...
Audio Hijack Pro drastically changes the way you use audio on your computer, giving you the freedom to listen to audio when you want and how you want. Record and enhance any audio with Audio Hijack... Read more
Iridient Developer 3.0.0 beta 3 - Powerf...
Iridient Developer (was RAW Developer) is a powerful image conversion application designed specifically for OS X. Iridient Developer gives advanced photographers total control over every aspect of... Read more
TextWrangler 4.5.11 - Free general purpo...
TextWrangler is the powerful general purpose text editor, and Unix and server administrator's tool. Oh, and also, like the best things in life, it's free. TextWrangler is the "little brother" to... Read more
NeoFinder 6.6 - Catalog your external me...
NeoFinder (formerly CDFinder) rapidly organizes your data, either on external or internal disks, or any other volumes. It catalogs all your data, so you stay in control of your data archive or disk... Read more
Chromium 38.0.2125.111 - Fast and stable...
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all Internet users to experience the web. FreeSMUG-Free OpenSource Mac User Group build is... Read more
Default Folder X 4.6.11 - Enhances Open...
Default Folder X attaches a toolbar to the right side of the Open and Save dialogs in any OS X-native application. The toolbar gives you fast access to various folders and commands. You just click... Read more

Latest Forum Discussions

See All

Audio Defence : Zombie Arena (Games)
Audio Defence : Zombie Arena 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: A zombie shooter audio game. Made from gut-wrenching 3D binaural sound, for a new kind of weird immersion. You... | Read more »
RPG Asdivine Hearts (Games)
RPG Asdivine Hearts 1.1.0 Device: iOS Universal Category: Games Price: $3.99, Version: 1.1.0 (iTunes) Description: SPECIAL PRICE50% OFF (USD 7.99 -> USD 3.99)!!! Travel alongside four companions and a cat in the adventure of a... | Read more »
Haunt the House: Terrortown (Games)
Haunt the House: Terrortown 1.0.1 Device: iOS Universal Category: Games Price: $.99, Version: 1.0.1 (iTunes) Description: 66.6% OFF! SPECIAL SPOOKY HALLOWEEN LAUNCH PRICE! 66.6% OFF! ...What was that sound? Is somebody there? | Read more »
SAS: Zombie Assault 4 Review
SAS: Zombie Assault 4 Review By Jennifer Allen on October 30th, 2014 Our Rating: :: FLAWED SHOOTERUniversal App - Designed for iPhone and iPad Shoot everything that moves in this fun, if flawed, twin-stick shooter.   | Read more »
Naailde the Witch Review
Naailde the Witch Review By Amy Solomon on October 30th, 2014 Our Rating: :: PITCH-PERFECT STORYTELLINGUniversal App - Designed for iPhone and iPad Marvelous storytelling, narration, and moving illustrations make this storybook... | Read more »
1st & Goal Review
1st & Goal Review By Andrew Fisher on October 30th, 2014 Our Rating: :: FOR THE D&D LOVING QBUniversal App - Designed for iPhone and iPad 1st & Goal is a board gamer’s football game, a football fan’s board game, and... | Read more »
French Developer Pated Unveils Seashine
French Developer Pated Unveils Seashine Posted by Ellis Spice on October 30th, 2014 [ permalink ] French one-man studio Pated has unveiled Seashine, “a poetic journey into the abyss.” Players take on the role of a jellyfish strugglin | Read more »
Agents of Storm: Tips, Tricks, and Strat...
Calling all agents: Would you like to see what we thought of this rather pretty base builder? Check out our Agents of Storm review! Have you downloaded Agents of Storm, been bowled over by the graphics, and aren’t quite sure what to do next? Never... | Read more »
Any.DO 2.0 Hopes to Help Manage Producti...
Any.DO 2.0 Hopes to Help Manage Productivity Posted by Ellis Spice on October 30th, 2014 [ permalink ] iPhone App - Designed for the iPhone, compatible with the iPad | Read more »
Base Busters Review
Base Busters Review By Jennifer Allen on October 30th, 2014 Our Rating: :: FUN BUT RESTRICTED MIXUniversal App - Designed for iPhone and iPad Mixing up two forms of tower defense gaming and collectible cards, Base Busters is a fun... | Read more »

Price Scanner via MacPrices.net

Apple Regains Momentum As Windows Stutters An...
The latest smartphone sales data from Kantar Worldpanel ComTech, for the three months to March 2014, shows Apple performing strongly in the first quarter of the year, with sales bouncing back in... Read more
Worldwide Smartphone Shipments Increase 25.2%...
New smartphone releases and an increased emphasis on emerging markets drove global smartphone shipments above 300 million units for the second consecutive quarter, according to preliminary data from... Read more
Apple now offering refurbished 2014 15-inch M...
The Apple Store is now offering Apple Certified Refurbished 2014 15″ Retina MacBook Pros for up to $400 off the cost of new models. An Apple one-year warranty is included with each model, and... Read more
Apple drops prices on refurbished 2013 Retina...
The Apple Store has dropped prices on 2013 Apple Certified Refurbished 13″ and 15″ Retina MacBook Pros, with Retina models now available starting at $999. Apple’s one-year warranty is standard, and... Read more
New 2.8GHz Mac mini on sale for $949, save $5...
Abt Electronics has the new 2.8GHz Mac mini in stock and on sale for $949.05 including free shipping. Their price is $50 off MSRP, and it’s the lowest price available for this model from any reseller... Read more
Sale! 3.7GHz Quad Core Mac Pro available for...
 B&H Photo has the 3.7GHz Quad Core Mac Pro on sale for $2649 including free shipping plus NY sales tax only. Their price is $350 off MSRP, and it’s the lowest price for this model from any... Read more
Mujjo Steps Up The Game With Refined Touchscr...
Netherlands based Mujjo have just launched their Refined Touchscreen Gloves, stepping up their game. The gloves feature a updated elegant design that takes these knitted gloves to the next level. A... Read more
Sale! Preorder the new 27-inch 5K iMac for $2...
 Abt Electronics has the new 27″ 3.5GHz 5K iMac on sale and available for preorder for $2374.05 including free shipping. Their price is $125 off MSRP, and it’s the lowest price available for this... Read more
Simplex Solutions Inc. Brings Secure Web Surf...
New York based Simplex Solutions Inc. has announced the release and immediate availability of Private Browser 1.0, its revolutionary new secure web browser developed for iPhone, iPad and iPod touch... Read more
Save up to $180 off MSRP with an Apple refurb...
The Apple Store has Apple Certified Refurbished 2014 MacBook Airs available for up to $180 off the cost of new models. An Apple one-year warranty is included with each MacBook, and shipping is free.... Read more

Jobs Board

Position Opening at *Apple* - Apple (United...
**Job Summary** Every day, business customers come to the Apple Store to discover what powerful, easy-to-use Apple products can do for them. As a Business Leader, Read more
Sr. Manager, *Apple* Deployment Programs fo...
**Job Summary** Apple is seeking candidates for a new position on the Education Content and Technology team. iPad and Mac is in the hands of millions of teachers and Read more
*Apple* Solutions Consultant (ASC) - Apple I...
…important role that the ASC serves is that of providing an excellent Apple Customer Experience. Responsibilities include: * Promoting Apple products and solutions Read more
*Apple* Solutions Consultant (ASC) - Apple I...
…important role that the ASC serves is that of providing an excellent Apple Customer Experience. Responsibilities include: * Promoting Apple products and solutions Read more
*Apple* Solutions Consultant (ASC) - Apple I...
…important role that the ASC serves is that of providing an excellent Apple Customer Experience. Responsibilities include: * Promoting Apple products and solutions Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.