TweetFollow Us on Twitter

Color Capable
Volume Number:3
Issue Number:7
Column Tag:Macintosh II

Lazy Man's Color

By Steven Sheets, Hoffman Estates, IL

Newsbreak....Cupertino, Calif.....Color is here!

The new Macintosh // computer has color capabilities. Most color video cards will allow up to 256 specific colors out of a possible color palatte of 16,777,216 selections. A new Color Quickdraw has been designed with Color Tables, Pixel Maps, Pixel Patterns, Color Icons, Color Grafports and Color Picture Handles to work with the new machine. Three new Managers have been added to facilitate color; the Color Manager, the Color Picker Package and the Palette Manager.

Are you ready to program with this new Color Quickdraw?

Before you answer that, did you know there was an alternative way to display color on the Mac? Use the old Quickdraw color routine! You didn’t know the older Quickdraw had color? Well...

Old Color

The original Macintosh displays were in black & white. 21,888 bytes of memory were used to display the normal 512 by 342 pixel screen (1 bit per pixel). However, the original Quickdraw had the capability to draw in color. In the original Grafport record, there were 2 fields (fgColor and bkColor) that determined the settings of the Foreground and Background color.

Quickdraw predefined 8 colors (Black, White, Red, Green, Blue, Cyan, Magenta and Yellow). Each color had a long integer constant associated with it. By passing these constants to the procedures ForeColor and BackColor, the respective fields of the current Grafport were changed. When any Grafport was created, the default settings for the Foreground and Background were Black and White respectively.

Color fields were treated similar to the more often used Pen Pattern (pnPat) and Background Pattern (bkPat). Any drawing by the Pen was done in the Foreground color, any Erasing was done in the Background color. Also Foreground and Background color affect the Copybits call. When copying a bitmap onto a Grafport, any bit that was set in the source Bitmap would make the corresponding pixel appear in the Foreground color on the Grafport. Any unset bit would make the pixel appear in the Background color.

However on the black and white Macintosh, any color other than white appears as black. Thus drawing Red on White, Blue on White, or even Yellow on White has the same effect on the Pre-Mac // computers; Black on White. Interestingly the Imagewriter // printer driver does use the color commands, thus making the Imagewriter // with a color ribbon the first color Macintosh output device of any type. While the new Mac // also has the new Color Quickdraw commands, it also supports the old commands, including the use of Foreground and Background color.

Fig. 1 Our program uses classic color options

Why Use Old?

There are several reasons for not wanting to use Color Quickdraw for your first color program. It might prove simpler, until you get a handle on Color Quickdraw (and the three associated managers), to use the older Quickdraw routines. Color Quickdraw involves new conceptional models, new data structures, and new routines. While it is well worth the effort to learn (the graphic effects are stunning), there is a stiff learning curve.

The Color Quickdraw manual is even larger than the original Quickdraw manual. That is assuming that you have the new documentation. Inside Macintosh Vol. V is due out soon, but unless you currently have a beta version, you will have to wait for APDA’s final release.

Even if you have the new documentation and routines, your development system may not implement the new ROM calls. Lightspeed C, Lightspeed Pascal, MDS do not support the new Quickdraw, while MPW has to be updated to version 2.0. Many programmers will have to wait until the developers of their programming language come out with a new update until they can use the new routines. Some lucky users can input all the new calls themselves and do not need the updates. That means typing in dozens of new calls and data structures (again assuming they have the documentation). Lucky them! [Apple is still working on the equates file and rumor has it the Pallette Manager is still changing. -Ed]

Finally there is the actual code size and time in involved programming the new Quickdraw. Color Quickdraw does take more code to implement and it’s data structures are larger. The simple ForeColor and BackColor routines take very little code space.

Certainly Color Quickdraw should be used if someone is writing a color Drawing program for the Mac //. But if you only wish to add color to your existing programs, using Color Quickdraw requires you to rewrite your code, redo your graphics and in some cases, even redo your complicated bitmaps. Placing ForeColor and BackColor calls before your existing code segments is much simpler. If your Program is intended to run on any Macintosh, the older Quickdraw may be all you need or want to produce color.

The Code

The source example is an extremely simple, standard Macintosh program. It loads and displays any MacPaint document in any of the eight Foreground and eight Background colors. A few notes:

1) The CWindow (which will display the MacPaint document) is centered on large screens (like a SuperMac monitor) or placed in the offset position.

2) The actual picture is stored in two sets of Bitmaps and Data handles. Data is stored this way since the size of a MacPaint bitmap is too large to store in 1 set (32K limit). If there is not enough memory to create the bitmaps, the program will state this and not allow a MacPaint document to be loaded

3) ForeC and BackC store the selected menu number (1-8), not the predefined Color constant. GetColor is used to convert the menu number into the color constant.

4) DoColor is the pivotal procedure; it sets the new Foreground/Background colors. Then it causes an window update so the window is redrawn in the new colors.

{Lazy Man’s Color by Steve Sheets 4/20/87 }
{Simple Demonstration of Mac // Color using the 
{ForeColor & BackColor of classical Quickdraw. }
{This program Loads and displays a MacPaint document }
(in any 2 colors.}

PROGRAM LMC;

{Various Constants:Menu ID Numbers, Window Size, }
{Window Placement, BitMap Size and Number of Colors. }
CONST
 AppleMenuID = 300;
 FileMenuID = 301;
 EditMenuID = 302;
 ForeMenuID = 303;
 BackMenuID = 304;

 OffV = 40;
 OffH = 40;
 AboutH = 300;
 AboutV = 140;
 SizeH = 576;
 SizeV1 = 360;
 SizeV2 = 720;
 BitW = 72;
 NumSec = 2;

 XColor = 8;

{Various Variables:Menus, Bitmaps, Window, Colors, }
{Done Flag & Title Name }
VAR
 Done : boolean;
 AppleMenu, FileMenu: EditMenu, 
 ForeMenu, BackMenu : MenuHandle;

 CWindow : windowptr;
 CMap : ARRAY[1..NumSec] OF bitmap;
 CData : ARRAY[1..NumSec] OF handle;

 ForeC, BackC : integer;
 Title : str255;

{Given Color Number ( 1 to XColor, as selected by Menu), }
{returns actual longint Color Number (for ForeColor or }
{BackColor). }
FUNCTION GetColor (N : integer) : longint;
BEGIN
 CASE N OF
 1 : 
 GetColor := BlackColor;
 2 : 
 GetColor := WhiteColor;
 3 : 
 GetColor := RedColor;
 4 : 
 GetColor := GreenColor;
 5 : 
 GetColor := BlueColor;
 6 : 
 GetColor := CyanColor;
 7 : 
 GetColor := MagentaColor;
 8 : 
 GetColor := YellowColor;
 OTHERWISE
 GetColor := WhiteColor;
 END;
END;

{Sets new ForeColor & BackColor and forces an Update} 
{so Window is redrawn in the new colors. }
PROCEDURE DoColor (F, B : integer);
 VAR
 count : integer;
 tempPort : Grafptr;
BEGIN
 GetPort(tempPort);
 SetPort(CWindow);
 IF F <> ForeC THEN
 BEGIN
 FOR count := 1 TO XColor DO
 CheckItem(ForeMenu, count, count = F);
 ForeC := F;
 ForeColor(GetColor(ForeC));
 END;
 IF B <> BackC THEN
 BEGIN
 FOR count := 1 TO XColor DO
 CheckItem(BackMenu, count, count = B);
 BackC := B;
 BackColor(GetColor(BackC));
 END;
 InvalRect(CWindow^.portRect);
 SetPort(tempPort);
END;

{ Loads MacPaint Picture in Bitmaps and displays it.}
PROCEDURE DoLoad;
 TYPE
 diskBlock = PACKED ARRAY[1..512] OF QDbyte;
 VAR
 MyReply : SFReply;
 MyType : SFtypelist;
 tempPoint : point;
 count : longint;
 refNum, scanline, N : integer;
 error : OSErr;
 srcBuf : ARRAY[1..2] OF diskBlock;
 srcPtr, dstPtr : Ptr;
BEGIN
 tempPoint.v := 60;
 tempPoint.h := 60;
 MyType[0] := ‘PNTG’;
 SFGetFile(tempPoint, ‘’, NIL, 1, MyType, NIL, MyReply);
 IF MyReply.good THEN
 BEGIN
 Hlock(CData[1]);
 Hlock(CData[2]);
 IF FSOpen(MyReply.fname, MyReply.vrefnum, refNum) = noErr THEN
 BEGIN
 count := 512;
 error := FSRead(refNum, count, @srcBuf);
 count := 1024;
 error := FSRead(refNum, count, @srcBuf);
 srcPtr := @srcBuf;
 FOR N := 1 TO NumSec DO
 BEGIN
 dstPtr := CData[N]^;
 FOR scanline := 1 TO SizeV1 DO
 BEGIN
 UnpackBits(srcPtr, dstPtr, BitW);
 IF ord(srcPtr) > (ord(@srcBuf) + 512) THEN
 BEGIN
 srcBuf[1] := srcBuf[2];
 count := 512;
 error := FSRead(refNum, count, @srcBuf[2]);
 srcPtr := pointer(ord(srcPtr) - 512);
 END;
 END;
 END;
 error := FSClose(refNum);
 END;
 HUnlock(CData[1]);
 HUnlock(CData[2]);
 END;
 DoColor(ForeC, BackC);
END;

{Creates a Rectangle centered on Screen (if window }
{size is smaller then the screen) or starting at a }
{standard offset (if window size is larger then }
{screen). }
PROCEDURE CenterRect (VAR R : rect;
 H, V : integer);
 VAR
 tempH : integer;
BEGIN
 IF H > Screenbits.bounds.right THEN
 tempH := OffH
 ELSE
 tempH := ((Screenbits.bounds.right - H) DIV 2);
 SetRect(R, tempH, OffV, H + tempH, V + OffV);
END;

{Draws text, centered in a rectangle in the About}
{  Box window in a certain color with a certain }
{justification }
PROCEDURE DoLine (S : str255;
 H, Top, Bottom, J : integer;
 C : longint);
 VAR
 tempInteger : integer;
 tempRect : rect;
BEGIN
 ForeColor(C);
 tempInteger := ((AboutH - H) DIV 2);
 SetRect(tempRect, tempInteger, Top, tempInteger + H, Bottom);
 TextBox(POINTER(ord(@S) + 1), LENGTH(S), tempRect, J);
END;

{Displays About Box (in color) until someone presses } 
{the button down.}
PROCEDURE DoAbout;
 VAR
 tempWindow : windowptr;
 tempRect : rect;
 tempStr : str255;
BEGIN
 CenterRect(tempRect, AboutH, AboutV);
 tempWindow := NewWindow(NIL, tempRect, ‘’, true, dBoxProc, POINTER(-1), 
false, 0);
 SetPort(tempWindow);
 TextFont(0);

 DoLine(CONCAT(Title, ‘ by Steve Sheets’), AboutH, 20, 39, teJustCenter, 
BlueColor);
 DoLine(‘Sample Mac // Color Program’, AboutH, 40, 59, teJustCenter, 
GreenColor);
 DoLine(‘This program uses the ForeColor and BackColor Quickdraw commands 
to display a MacPaint document in two colors.’, AboutH - 50, 60, AboutV, 
teJustLeft, RedColor);

 WHILE NOT button DO
 ;
 DisposeWindow(tempWindow);
END;

{Standard main menu procedure that handles }
{menu selections.  Can show About Box, open Desk }
{Accessories, Load in MacPaint file, change }
{the Done Flag (so the program quits), handle} 
{edit commands (Cut,Copy,Paste,Clear), and change }
{Foreground or Background color of the picture.}
PROCEDURE MainMenu (tempResult : LONGINT);
 VAR
 tempInteger : integer;
 tempBoolean : boolean;
 tempStr : STR255;
BEGIN
 tempInteger := LoWord(tempResult);
 CASE HiWord(tempResult) OF
 AppleMenuID : 
 IF tempInteger = 1 THEN
 DoAbout
 ELSE
 BEGIN
 GetItem(appleMenu, tempInteger, tempStr);
 tempInteger := OpenDeskAcc(tempStr);
 END;
 FileMenuID : 
 CASE tempInteger OF
 1 : 
 DoLoad;
 3 : 
 Done := true;
 OTHERWISE
 END;
 EditMenuID : 
 tempBoolean := SystemEdit(tempInteger - 1);
 ForeMenuID : 
 IF (tempInteger > 0) AND (tempInteger <= XColor) THEN
 DoColor(tempInteger, BackC);
 BackMenuID : 
 IF (tempInteger > 0) AND (tempInteger <= XColor) THEN
 DoColor(ForeC, tempInteger);
 OTHERWISE
 END;
 HiliteMenu(0);
END;

{Setup for Menus, Window, Bitmaps,  Colors }
{settings, Title and Done flag.  }
PROCEDURE DoSetup;
 TYPE
 DD = PACKED ARRAY[1..32000] OF 0..255;
 PP = ^DD;
 HH = ^PP;
 VAR
 tempStr : STR255;
 tempRect : rect;
 count : integer;
 tempLong : longint;
 tempH : HH;
BEGIN
 Title := ‘Lazy Man@s Color’;
 Title[9] := CHR(39);

 tempStr := ‘ ‘;
 tempStr[1] := CHR(appleMark);
 AppleMenu := NewMenu(AppleMenuID, tempStr);
 AppendMenu(AppleMenu, CONCAT(‘About ‘, Title, ‘...;(-’));
 AddResMenu(AppleMenu, ‘DRVR’);

 FileMenu := NewMenu(FileMenuID, ‘File’);
 AppendMenu(FileMenu, ‘Load MacPaint Documents/L;(-;Quit/Q’);

 EditMenu := NewMenu(EditMenuID, ‘Edit’);
 AppendMenu(EditMenu, ‘Undo/Z;(-;Cut/X;Copy/C; Paste/V;Clear’);

 ForeMenu := NewMenu(ForeMenuID, ‘Set Foreground’);
 AppendMenu(ForeMenu, ‘Black;White;Red;Green;Blue; Cyan;Magenta;Yellow’);

 BackMenu := NewMenu(BackMenuID, ‘Set Background’);
 AppendMenu(BackMenu, ‘Black;White;Red;Green;Blue;Cyan; Magenta;Yellow’);

 InsertMenu(AppleMenu, 0);
 InsertMenu(FileMenu, 0);
 InsertMenu(EditMenu, 0);
 InsertMenu(ForeMenu, 0);
 InsertMenu(BackMenu, 0);

 DrawMenuBar;

 CenterRect(tempRect, SizeH, SizeV2);
 CWindow := NewWindow(NIL, tempRect, Title, true, 4, POINTER(-1), false, 
0);

 CMap[1].rowBytes := BitW;
 SetRect(CMap[1].bounds, 0, 0, SizeH, SizeV1);
 CData[1] := NewHandle(BitW * SizeV1);
 IF CData[1] <> NIL THEN
 BEGIN
 tempH := HH(CData[1]);
 FOR count := 1 TO BitW * SizeV1 DO
 tempH^^[count] := 0;
 END;
 CMap[2].rowBytes := BitW;
 SetRect(CMap[2].bounds, 0, SizeV1, SizeH, SizeV2);
 CData[2] := NewHandle(BitW * SizeV1);
 IF CData[2] <> NIL THEN
 BEGIN
 tempH := HH(CData[2]);
 FOR count := 1 TO BitW * SizeV1 DO
 tempH^^[count] := 0;
 END;
 IF (CData[1] = NIL) OR (CData[2] = NIL) THEN
 BEGIN
 SetWTitle(CWindow, ‘Not Enough Memmory’);
 DisableItem(FileMenu, 1);
 END;
 ForeC := 0;
 BackC := 0;
 DoColor(1, 2);
 InitCursor;
 Done := false;
END;

{Standard main program loop that handles all }
{events (ie. mouse down, key downs & updates) until }
{the Done flag is set.  }
PROCEDURE MainLoop;
 VAR
 tempEvent : EventRecord;
 tempWindow : windowptr;
 tempCode : integer;
 tempPort : Grafptr;
 tempRect : rect;
BEGIN
REPEAT
 SystemTask;
 IF GetNextEvent(everyEvent, tempEvent) THEN
 BEGIN
 CASE tempEvent.what OF
 mouseDown : 
 BEGIN
 tempCode := FindWindow(tempEvent.where, tempWindow);
 CASE tempCode OF
 inDrag, inContent : 
 BEGIN
 IF tempWindow <> FrontWindow THEN
 SelectWindow(tempWindow)
 ELSE
 BEGIN
 IF Cwindow = tempWindow THEN
 BEGIN
 IF CWindow <> FrontWindow THEN
 SelectWindow(CWIndow)
 ELSE
 BEGIN
 SetRect(tempRect, -25000, -25000, 25000, 25000);
 DragWindow(CWindow, tempEvent.where, tempRect);
 END;
 END;
 END;
 END;
 inMenuBar : 
 MainMenu(MenuSelect(tempEvent.where));
 inSysWindow : 
 SystemClick(tempEvent, tempWindow);
 OTHERWISE
 END; { of tempCode case }
 END; { of mouseDown }
 keydown, autoKey : 
 IF BitAnd(tempEvent.modifiers, cmdKey) <> 0 THEN
 MainMenu(MenuKey(CHR(tempEvent.message MOD 256)));
 updateEvt : 
 IF CWindow = WindowPtr(tempEvent.message) THEN
 BEGIN
 GetPort(tempPort);
 SetPort(CWindow);
 BeginUpdate(CWindow);
 IF CData[1] <> NIL THEN
 BEGIN
 Hlock(CData[1]);
 CMap[1].baseAddr := CData[1]^;
 CopyBits(CMap[1], CWindow^.portBits, CMap[1].bounds, CMap[1].bounds, 
srcCopy, NIL);
 HUnlock(CData[1]);
 END;
 IF CData[2] <> NIL THEN
 BEGIN
 Hlock(CData[2]);
 CMap[2].baseAddr := CData[2]^;
 CopyBits(CMap[2], CWindow^.portBits, CMap[2].bounds, CMap[2].bounds, 
srcCopy, NIL);
 HUnlock(CData[2]);
 END;
 EndUpdate(CWindow);
 SetPort(tempPort);
 END;
 OTHERWISE
 END;
 END;
 UNTIL Done;
END;

{***PROGRAM*** }
BEGIN
 DoSetup;
 MainLoop;
END.
 
AAPL
$98.63
Apple Inc.
-0.39
MSFT
$43.92
Microsoft Corpora
-0.05
GOOG
$585.19
Google Inc.
-5.41

MacTech Search:
Community Search:

Software Updates via MacUpdate

OS X Yosemite Wallpaper 1.0 - Desktop im...
OS X Yosemite Wallpaper is the gorgeous new background image for Apple's upcoming OS X 10.10 Yosemite. This wallpaper is available for all screen resolutions with a source file that measures 5,418... Read more
Acorn 4.4 - Bitmap image editor. (Demo)
Acorn is a new image editor built with one goal in mind - simplicity. Fast, easy, and fluid, Acorn provides the options you'll need without any overhead. Acorn feels right, and won't drain your bank... Read more
Bartender 1.2.20 - Organize your menu ba...
Bartender lets you organize your menu bar apps. Features: Lets you tidy your menu bar apps how you want. See your menu bar apps when you want. Hide the apps you need to run, but do not need to... Read more
TotalFinder 1.6.2 - Adds tabs, hotkeys,...
TotalFinder is a universally acclaimed navigational companion for your Mac. Enhance your Mac's Finder with features so smart and convenient, you won't believe you ever lived without them. Tab-based... Read more
Vienna 3.0.0 RC 2 :be5265e: - RSS and At...
Vienna is a freeware and Open-Source RSS/Atom newsreader with article storage and management via a SQLite database, written in Objective-C and Cocoa, for the OS X operating system. It provides... Read more
VLC Media Player 2.1.5 - Popular multime...
VLC Media Player is a highly portable multimedia player for various audio and video formats (MPEG-1, MPEG-2, MPEG-4, DivX, MP3, OGG, ...) as well as DVDs, VCDs, and various streaming protocols. It... Read more
Default Folder X 4.6.7 - Enhances Open a...
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
TinkerTool 5.3 - Expanded preference set...
TinkerTool is an application that gives you access to additional preference settings Apple has built into Mac OS X. This allows to activate hidden features in the operating system and in some of the... Read more
Audio Hijack Pro 2.11.0 - 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
Intermission 1.1.1 - Pause and rewind li...
Intermission allows you to pause and rewind live audio from any application on your Mac. Intermission will buffer up to 3 hours of audio, allowing users to skip through any assortment of audio... Read more

Latest Forum Discussions

See All

Note Review
Note Review By Jennifer Allen on July 29th, 2014 Our Rating: :: TOO SIMPLEiPhone App - Designed for the iPhone, compatible with the iPad Note is a note taking app that’s a little too short on features to be worth its asking price... | Read more »
Chainsaw Warrior Goes on Sale & Ther...
Chainsaw Warrior Goes on Sale & There’s a Chance to Win a Copy of the Original Board Game Posted by Jennifer Allen on July 29th, 2014 [ permalink | Read more »
It Came From Canada: Tiny Tower Vegas
If you go to a casino, you might make a lot of money. If you run a casino, you’re guaranteed to make a lot of money. The choice seems pretty obvious. So while waiting for your shady real estate deals to move forward, get prepared with Tiny Tower... | Read more »
Z Hunter Review
Z Hunter Review By Lee Hamlet on July 29th, 2014 Our Rating: :: RIGHT ON TARGETUniversal App - Designed for iPhone and iPad While it might not necessarily break new ground, Z Hunter has enough tricks up its sleeve to ensure that... | Read more »
Huge Update Comes To Duet, Adding 48 New...
Huge Update Comes To Duet, Adding 48 New Stages Posted by Jennifer Allen on July 29th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Sharknado: The Video Game Available Now....
Sharknado: The Video Game Available Now. Seriously. Posted by Rob Rich on July 29th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Frog Orbs 2 Review
Frog Orbs 2 Review By Nadia Oxford on July 29th, 2014 Our Rating: :: THIS MAGIC IS A TAD MONOTONOUS Universal App - Designed for iPhone and iPad Frog Orbs 2 is repetitive, but younger players should enjoy it nonetheless.   | Read more »
Puzzix Review
Puzzix Review By Jennifer Allen on July 29th, 2014 Our Rating: :: NICE IDEAUniversal App - Designed for iPhone and iPad A little like Tetris, Puzzix is all about piecing together blocks and watching them vanish. It could do with... | Read more »
Cannonball eMail is Now Live – Works Wit...
Cannonball eMail is Now Live – Works With Gmail, Yahoo, Outlook, Hotmail, and AOL Posted by Jessica Fisher on July 29th, 2014 [ permalink ] | Read more »
To The End Review
To The End Review By Lee Hamlet on July 29th, 2014 Our Rating: :: A VICIOUS CYCLEUniversal App - Designed for iPhone and iPad To The End will test players’ patience, timing, and dedication as they try to navigate all 13 levels in... | Read more »

Price Scanner via MacPrices.net

Updated MacBook Pro Price Trackers
We’ve updated our MacBook Pro Price Trackers with the latest information on prices, bundles, and availability on the new 2014 models from Apple’s authorized internet/catalog resellers as well as... Read more
Apple updates MacBook Pros with slightly fast...
Apple updated 13″ and 15″ Retina MacBook Pros today with slightly faster Haswell processors. 13″ models now ship with 8GB of RAM standard, while 15″ MacBook Pros ship with 16GB across the board. Most... Read more
Apple drops price on 13″ 2.5GHz MacBook Pro b...
The Apple Store has dropped their price for the 13″ 2.5GHz MacBook Pro by $100 to $1099 including free shipping. Read more
Apple drops prices on refurbished 2013 MacBoo...
The Apple Store has dropped prices on Apple Certified Refurbished 13″ and 15″ 2013 MacBook Pros, with model now available starting at $929. Apple’s one-year warranty is standard, and shipping is free... Read more
iOS 8 and OS X 10.10 To Support DuckDuckGo As...
Writing for Quartz, Dan Frommer reports that Apple’s forthcoming iOS 8 and OS X 10.10 operating systems version updates will allow users to select DuckDuckGo as their default search engine. He notes... Read more
U.K. Hospital Using iPods and iPads To Record...
British news journal GazetteLive’s. Ian McNeal notes that the old “an apple a day keeps the doctor away” proverb is being turned on its head at http://southtees.nhs.uk/hospitals/james-cook/ James... Read more
13-inch 2.5GHz MacBook Pro on sale for $1099,...
Best Buy has the 13″ 2.5GHz MacBook Pro available for $1099.99 on their online store. Choose free shipping or free instant local store pickup (if available). Their price is $100 off MSRP. Price is... Read more
Roundup of Apple refurbished MacBook Pros, th...
The Apple Store has Apple Certified Refurbished 13″ and 15″ MacBook Pros available for up to $400 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free. Their prices... Read more
Record Mac Shipments In Q2/14 Confound Analys...
A Seeking Alpha Trefis commentary notes that Apple’s fiscal Q3 2014 results released July 22, beat market predictions on earnings, although revenues were slightly lower than anticipated. Apple’s Mac’... Read more
Intel To Launch Core M Silicon For Use In Not...
Digitimes’ Monica Chen and Joseph Tsai, report that Intel will launch 14nm-based Core M series processors specifically for use in fanless notebook/tablet 2-in-1 models in Q4 2014, with many models to... Read more

Jobs Board

Sr Software Lead Engineer, *Apple* Online S...
Sr Software Lead Engineer, Apple Online Store Publishing Systems Keywords: Company: Apple Job Code: E3PCAK8MgYYkw Location (City or ZIP): Santa Clara Status: Full Read more
*Apple* Solutions Consultant (ASC) - Apple (...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
Sr. Product Leader, *Apple* Store Apps - Ap...
**Job Summary** Imagine what you could do here. At Apple , great ideas have a way of becoming great products, services, and customer experiences very quickly. Bring Read more
*Apple* Solutions Consultant (ASC) - Apple (...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
*Apple* Solutions Consultant (ASC) - Apple (...
**Job Summary** The ASC is an Apple employee who serves as an Apple brand ambassador and influencer in a Reseller's store. The ASC's role is to grow Apple Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.