TweetFollow Us on Twitter

Talking HangMan
Volume Number:2
Issue Number:4
Column Tag:Basic School

Play the Talking HangMan Game!

By Dave Kelly, Engineer, MacTutor Editorial Board

This month I would like to thank Clear Lake Research for kindly sending me a copy of their SpeechLib Library. [Available through MacTutor's Technical Software Store. -Ed] As computers become smarter and smarter, we are sure to find those that will do many of the same tasks that humans do. Already, I get sales recordings on my telephone from some computer that goes through a list of numbers and presents their sales pitch. We can't even comprehend how far computers will take us in the future. In fact, in 1979 when I bought my first Apple ][+, I was thrilled to have that much capability. I never thought that computers would become much different, until Macintosh came along.

I've seen a large variety of speech synthesizer cards for the Apple ][. When they first came out, the speech was hardly recognizable. I've seen good ones and bad ones. When I got my Macintosh, I was excited that the Mac had a built in synthesizer, however, I was disappointed to find that the software to program the synthesizer had not been written. Well, enough talk. The CLR SpeechLib Libraries provide a low cost way to provide speech from within your MSBASIC programs (version 2.0 or greater).

MacinTalk is a copyrighted program of Apple Computer, Inc. licensed to Clear Lake Research to distribute for use with SpeechLib. SpeechLib allows you to use the MacinTalk speech synthesis system developed by Apple from MSBASIC. SpeechLib statements are similar to other CLR library statements as we have discussed in past issues of MacTutor.

Speaking of libraries, I hereby wish to make a correction to a statement that I made a couple of months ago. I stated that for some reason when you use DEFINT a-z an error results. Well, the error was partially mine. When you call a library, the library name (example: SpeechOn) will be specified as if it were an integer variable if you have used DEFINT a-z. The library name must be declared as a single precision variable type by placing an exclaimation point after the library name (example: SpeechOn! ). Therefore, when you want to use DEFINT and libraries, you should use an exclaimation point after the library name.

If you are using MacinTalk from another language, parts of the following discussion may be useful to you. SpeechLib accepts either English or phonemic spellings. Phonemic spellings produce much better sounding speech and are highly recommended. However, English is much easier to use. Phonemic sounds are shown below:

By mixing combinations of these phonemic spellings, you can form the sound that you want. You can see why it takes more time to program in phonemic spellings; each sound must be matched to the phonemes.



AA hot AX about IX solid

AE bat EH bet IY beet

AH under ER bird OH border

AO talk IH bit UH look

AX and IX should not be used in stressed syllables!


B but K camp T toy

CH check L yellow TH thin

/C loch M men V very

D dog N men W away

DH then NX sing Y yellow

F fed P put Z has

G guest R red ZH pleasure

/H hole S sail

J judge SH rush


AW power EY made OY boil

AY hide OW low UW crew


DX pity Q kitt_en RX car

LX call QX silent vowel UL=AXL




digits 1-9 stress marks - phrase delimiter

. sentence terminator , clause delimiter

? sentence terminator ( ) noun phrase delimiters

Also included with the SpeechLib disk is the program ExceptionEdit. This program was witten by Apple to be used to create a dictionary of words and their phonemic spellings. When a word in the dictionary is encountered by MacinTalk, the phoemic spelling in the dictionary determines the pronounciation of the word. This makes using English instead of phonemic spellings possible for hard to pronounce (or spell) words. It is possible to mispell words in english to 'fool' MacinTalk into pronoucing them correctly. If you do this, then the exception dictionary is not necessary. However, you may want to read aloud a text file which must have correct spellings. You should create an exceptions dictionary in this case.

There are two SpeechLib statements used to initialize the speech output. First open the Library and define variables for the handle! (SpeechHand!=0), for possible speech errors (SpeechErr%=0), and for the phonemic spelling of the string to be output (Phon$=""). The statement SpeechOn "",SpeechHand!,SpeechErr% turns on and initializes MacinTalk.

To use english spellings with SpeechLib, you first must put the desired text into a string (example: Eng$). MacinTalk understands phonemic spellings, therefore your string must be converted before the string can be spoken. The SpeechLib command for this is:

 ReaderString SpeechHand!,Eng$, Phon$,SpeechErr%.

To use phonemic spellings or the converted Eng$ spelling (Phon$), you use the statement:

 SoundOutString SpeechHand!, Phon$, SpeechErr%

Statements are provided to change the pitch, mode and speech rate of the speech (SpeechPitch and SpeechRate). The pitch can range from 65-500. The mode selects a natural or a robotic sounding voice. The speech rate can be adjusted from 85-425 words per minute. The volume is controlled by poking the volume desired into address &H208. The range of the volume is 0 to 7, where 7 is the loudest.

The best way to sample the speech and test out phrases you want to use is to use the speech demo provided on the SpeechLib disk. This way you can find out how words sound before using them in your program. Phonemic spellings take much longer time to program until you start to learn the phonemic spelling chart. Some words may take some work to get them to sound just like you want. In fact, there are some words that I couldn't quite get to sound like I wanted. Be careful to use uppercase only for phonemic spellings and follow the Phonemic Spelling table to obtain the desired sounds. Try some out till they have the sound you want. The limitation is in the capabilities of the speech synthesizer. I found that the first few sentences that I heard were hard to understand. After getting used to it, I have no trouble distinguishing the speech. I tried it out on my 4 year old boy who seemed to catch on to the sound after a few sentences also. All things considered, the Macintosh still has a better synthesizer than I had seen prior to it's design in the early eighties (83-84?).


The inspiration for HangMac came from the hand held Speak-N-Spell games. Word type games are probably the most suited to adding speech. I give you this example to show how speech could be added to a program, even after it was already written. In fact, most of the programming time was spent on the game itself and not the speech. Adding speech was a very simple task.

HangMac was written first without speech. Two basic modules were added to introduce speech. The first one I call InitTalk.

    SpeechOn! "",SpeechHand!,SpeechErr%
    SpeechPitch! SpeechHand!,hertz%,mode%
    SpeechRate! SpeechHand!,Wpm%
    POKE &H208,5

InitTalk sets up all the variables used by SpeechLib. The rate, pitch, volume and mode is set up here. The other major speech module is Speakup:


ReaderString! SpeechHand!, Eng$,Phon$,SpeechErr%

SoundOutString! SpeechHand!,Phon$,SpeechErr%


Speakup converts the string Eng$ to Phonemic spelling (Phon$) and outputs Phon$ to MacinTalk. Other than these two routines, the only requirement is to open and close the library properly. A note: MacinTalk must be on the same disk as BASIC in order to work. Any exception dictionaries must also be on the same disk as BASIC in order to work. You may note that some words sent to the SpeechLib routines appear to be mispelled. This is to correct some mispronounciations of english spelled words. Don't attempt to correct the spellings or the words just won't sound right.

The LIBRARY statement specifies the disk and filename of the SpeechLib library. Be sure that your disk has the right name or modify the LIBRARY statement to match the name of the disk and filename of the SpeechLib Library. The fact that all this stuff has to be contained on one disk makes this just a bit of a hassle. An 800K disk drive or a hard disk should solve that problem.

Please note that HangMac has not been tried out on a 128K Mac. When using libraries, more heap space may be required. The SpeechErr% variable returned in most of the SpeechLib calls should return a zero. HangMac does not check for this, so if you get an speech error, check to see what value SpeechErr% returns by typing PRINT SpeechErr% in the command window and hitting return just after the error occurs. If SpeechErr% is not zero after the SpeechOn call, then MacinTalk could not be opened. The most likely problem is that MacinTalk is not on the same disk as BASIC. Another possiblity is that you have run out of heap space. Use BASIC's FRE() to check on available memory space and BASIC's CLEAR statement to allocate more or less as necessary. HangMac is already set up for a data segment size of 20000. Without the statement CLEAR 20000! at the beginning of the program, the heap size is too small, which causes the disk to run alot more.

SpeechLib also provides a more efficient memory management method by storing strings on the heap. The strings may be used later by referencing the desired string. HangMac does not use this feature. If you use it, you may have to watch your heap space more closely. If you are using other CLR (or others) libraries with SpeechLib, memory management is more of a concern.

HangMac automatically checks to see if you have CLR SpeechLib and disables all the talking parts of the program through the use of the variable talk. This enables you to run HangMac without sound if you don't have CLR SpeechLib. If speech is enabled, the speech can be turned on or off at any time (it speeds up the game) by selecting the speech menu.

I recommend, before you start to play HangMac, that you add more words to the program. I have started with 15 words (words related to the MAC). To add words, add to the DATA statements at the end of the program. Next change the line toward the beginning of the HangMac program which sets the variable number to the number of words (currently 15). That's all there is to it. The more words you have the more chance there is of getting a different word every time. When I was first creating the program I started with five words, and I often got the same word more than once. The words are randomized each time a new word is selected, so you don't know which word will be used.

Choose Instructions for a quick overview of the program. If speech is turned on, the instruction window will let you choose a TALK button to have the instructions read to you. Choose OK to close the instruction window.

Choose Start Game to begin HangMac. Most of your selections will have an audio response if the speech is turned on. Three windows are displayed. The first window shows the characters which have been used or guessed already. The second window shows the word to be guessed by displaying blanks for the characters until they are guessed correctly. You may type the whole word in if you think you know what it is. If you are wrong a new part of the HangMac man is drawn on the hanging post. You have 10 tries and then you're hung.

This may not be the best Hangman game you have ever seen, but it must be the first one you have had talk to you. HangMac will mostly be exciting for younger aged children. Even now as I approach the deadline for this column, my young sons are leaning over my shoulder waiting for me to finish so they can try it. Well, I guess it's time to play.

'©MACTUTOR, 1986
'by David Kelly

    DEFINT a-z
    DIM wordchar(1)
    false=0:true=NOT false
    DIM wordarray$(number)
    LIBRARY "CLR SpeechLib:SpeechLib"
    IF talk=true THEN GOSUB InitTalk
    FOR i=1 TO number
        READ wordarray$(i)
    NEXT i
    FOR i=1 TO 40:blank$=blank$+" ":NEXT i
    FOR i=1 TO 5
        MENU i,0,0,""
    NEXT i
    MENU 1,0,1,"File"
    MENU 1,1,1,"Instructions"
    MENU 1,2,1,"Start Game"
    MENU 1,3,1,"Quit"
    MENU 2,0,1,"Speech"
    MENU 2,1,2,"ON"
    MENU 2,2,1,"OFF"
    IF talk=false THEN MENU 2,0,0
    GOSUB HangSetup
    GOSUB DrawHangMac
    ON MENU GOSUB menuevent
idleloop: GOTO idleloop

    menunumber=MENU(0):IF menunumber=2 THEN Speechmenu
    MENU 1,0,0
    ON menuitem GOSUB Instructions,Start,Quit

    IF menuitem=1 THEN MENU 2,1,2:MENU 2,2,1:talk=true
    IF menuitem=2 THEN MENU 2,1,1:MENU 2,2,2:talk=false
    SpeechOn! "",SpeechHand!,SpeechErr%
    SpeechPitch! SpeechHand!,hertz%,mode%
    SpeechRate! SpeechHand!,Wpm%
    POKE &H208,5
    GOSUB ClearKeyboard
    IF talk=true THEN Eng$="Good buy.   Play again             sometime.":GOSUB 
    IF talk=true THEN SpeechOff! SpeechHand!  :LIBRARY CLOSE
    IF index=0 THEN Start
    GOSUB HangSetup
    ERASE wordchar
    DIM wordchar(LEN(word$))
    FOR i=1 TO LEN(word$)
    NEXT i
    GOSUB DisplayWord
    IF talk=false THEN inputchar
    Eng$="Your word is "+STR$(LEN(word$))+" characters long."
    GOSUB Speakup
    WINDOW 1
    GOSUB DrawHangPost
    GOSUB ClearKeyboard
    EDIT FIELD 1,"",(95,190)-(410,210),1,2
    IF talk=false THEN charloop
    Eng$="Please choose a letter"
    GOSUB Speakup
    IF d<>6 THEN charloop
    IF char$="" THEN inputchar
    IF talk=false THEN checkchar
    Eng$="You have selected, "+char$+".  "
    IF char$<"A" OR char$>"Z" THEN Eng$=Eng$+"That character is not aloud."
    IF INSTR(used$,char$)<>0 THEN Eng$=Eng$+"That letter is already used."
Wrong:IF char$<>word$ AND LEN(char$)<>1 THEN Eng$=Eng$+"WRONGE!"
    GOSUB Speakup
    IF char$<"A" OR char$ >"Z" THEN inputchar
    IF INSTR(used$,char$)<>0 THEN inputchar
    IF char$=word$ THEN GOSUB foundword
    IF char$<>word$ AND LEN(char$)<>1 THEN WrongGuess=WrongGuess+1:GOSUB 
DrawHangMac :GOTO inputchar
    used$=used$+char$+" "
    FOR i=1 TO LEN(word$)
        IF char$=MID$(word$,i,1) THEN wordchar(i)=true
    NEXT i
    Eng$="That's "
    IF oldsum=sumword THEN WrongGuess=WrongGuess+1: Eng$=Eng$+"WRONG!"
    IF sumword=-LEN(word$) THEN wflag=true
    IF (wflag=false) AND (oldsum<>sumword) THEN Eng$=Eng$+"Right.   There 
is at least one " +char$+" in the word."
    IF wflag=true THEN Eng$=Eng$+"Right.  You have guessed the word."
    IF talk=true THEN GOSUB Speakup
    GOSUB DisplayUsedChars
    GOSUB DrawHangMac
    GOSUB DisplayWord
    IF wflag=false AND lose=false THEN inputchar
    IF wflag=true THEN Eng$="You Won.  The word is "+word$+".  Select 
Start Game to Play again."
    IF lose=true THEN Eng$="You're dead.  The word is "+word$+". Select 
Start Game to Play again."
    IF talk=true THEN GOSUB Speakup
    FOR i=1 TO LEN(word$)
    NEXT i
    WINDOW 1
    MENU 1,0,1

    WINDOW 1,"HangMac",(10,100)-(500,320),2
    LOCATE 1,1:PRINT "HangMac"
    PRINT " Copyright ©MacTutor, 1986"
    PRINT" by David Kelly."
    WINDOW 2,"",(95,30)-(410,45),2
    WINDOW 3,"",(95,65)-(410,80),2
    WINDOW 1

    FOR i=1 TO LEN(word$)
    NEXT i

    WINDOW 3
    LOCATE 1,1
    PRINT blank$:LOCATE 1,1
    IF lose=true THEN PRINT word$;:RETURN
    FOR j=1 TO LEN(word$)
        IF wordchar(j)=true THEN PRINT MID$(word$,j,1); ELSE PRINT "_ 
    NEXT j
    IF LEN(char$)>1 THEN RETURN
    WINDOW 2
    LOCATE 1,1
    PRINT used$;
    WINDOW 1
    GOSUB DrawHangPost
    IF WrongGuess >=1 THEN CIRCLE(250,35),25
    IF WrongGuess >=2 THEN CIRCLE(260,25),5
    IF WrongGuess >=3 THEN CIRCLE(240,25),5
    IF WrongGuess >=4 THEN LINE(240,45)-(260,45)
    CALL MOVETO(250,60)
    IF WrongGuess >=5 THEN CALL LINETO(250,125)
    IF WrongGuess >=6 THEN CALL LINE(45,45)
    IF WrongGuess >=7 THEN CALL MOVETO(250,125):CALL           LINE(-45,45)
    IF WrongGuess >=8 THEN CALL MOVETO(250,90):CALL            LINE(25,-25)
    IF WrongGuess >=9 THEN CALL MOVETO(250,90):CALL            LINE(-25,-25)
    IF WrongGuess >=9 THEN CALL MOVETO(255,20):CALL            LINE(10,10):CALL 
MOVETO(255,30):CALL  LINE(10,-10)
    IF WrongGuess >=9 THEN CALL MOVETO(235,20):CALL            LINE(10,10):CALL 
MOVETO(235,30):CALL  LINE(10,-10)
    IF WrongGuess >=9 THEN lose=true
    CALL MOVETO(250,5)
    CALL LINETO(310,5)
    CALL LINETO(310,185)
    WHILE key$ <>""

10 :IF ERR=53 THEN talk=false
    RESUME 5
    WINDOW 1,"Instructions",(10,30)-(500,330),-2
    LOCATE 1,15:PRINT "HangMac"
    LOCATE 3,1:PRINT "HangMac is the audio version of the traditional 
game of";
    PRINT" Hangman.  To play":PRINT"the game just choose ";
    TEXTFONT(0):PRINT"Start Game";:TEXTFONT(2)
    PRINT" from the File menu.   The hanging post is"
    PRINT "drawn and you may start guessing letters by typing them onto 
the base of"
    PRINT"the hanging post.  The uppermost window will display the characters 
    PRINT"you have used.  The next window shows the characters, or blanks 
for the"
    PRINT"word that you are guessing.  Each time you miss, a new part 
of the HangMac"
    PRINT"man will be drawn until the entire body is drawn.  If you guess 
wrong ten"
    PRINT"times then you lose.  Type the whole word to guess the word."
    PRINT"This program features CLR SpeechLib procedures for calling 
    PRINT"To use the speech feature you must have CLR SpeechLib (available 
    PRINT"Clear Lake Research, 5353 Dora Street, Suite 7, Houston, Texas 
    PRINT"(800-835-2246 X 199).  However, the program will still work 
    PRINT"the speech libraries being available."
    PRINT:PRINT"HangMac, Copyright ©MacTutor, 1986, by David Kelly."
    BUTTON 1,1,"OK",(445,260)-(475,290)
    IF talk=true THEN BUTTON 2,1,"TALK",(365,260)-(425,290)
    buttonpushed = DIALOG(1)
    IF buttonpushed=2 THEN GOSUB SpeakInstructions:GOTO WaitforButton
    MENU 1,0,1
    BUTTON 1,0:BUTTON 2,0
    Eng$=" HangMac is the audio version of the traditional game of Hangman. 
 To play"
    Eng$=Eng$+" the game just choose Start Game from the File menu. The 
hanging post is"
    Eng$=Eng$+" drawn and  you may start guessing letters by typing them 
onto the base of"
    Eng$=Eng$+" the hanging post.  The uppermost wyndoe will display 
the charactors which"
    Eng$=Eng$+" you have used.  The next wyndoe shows the characters, 
or blanks for the"
    Eng$=Eng$+" word that you are guessing.  Each time you miss, a new 
part of the HangMac"
    Eng$=Eng$+"-man will be drawn until the entire body is drawn.  If 
you guess wrong ten"
    Eng$=Eng$+" times then you luse. Type the whole word to guess the 
    ReaderString! SpeechHand!,Eng$,Phon$,SpeechErr%
    SoundOutString! SpeechHand!,Phon$,SpeechErr%
    Eng$="This program features CLR SpeechLib proseedures for calling 
    Eng$=Eng$+" To use the speech feature you must have CLR SpeechLib 
(available from"
    Eng$=Eng$+" Clear Lake Reserch, 5353 Dora Street, sweet 7, Huse ton, 
Texas 77005."
    Eng$=Eng$+" phone- eight hundred 835-2246 extension199.  However, 
the program will still work without the speech lybraries"
    Eng$=Eng$+" being available."
    Eng$=Eng$+" HangMac, Copy right MacTutor, nineteen eighty six, by 
Dayvid Kelly."
    ReaderString! SpeechHand!,Eng$,Phon$,SpeechErr%
    SoundOutString! SpeechHand!,Phon$,SpeechErr%
    BUTTON 1,1:BUTTON 2,1

    ReaderString! SpeechHand!, Eng$,Phon$,SpeechErr%
    SoundOutString! SpeechHand!,Phon$,SpeechErr%
'Add additional words (as you please)
'by adding to the DATA statements below
'change the variable 'number' at the beginning
'of the program to reflect the number of words


Community Search:
MacTech Search:

Software Updates via MacUpdate

Fantastical 2.5.13 - Create calendar eve...
Fantastical is the Mac calendar you'll actually enjoy using. Creating an event with Fantastical is quick, easy, and fun: Open Fantastical with a single click or keystroke Type in your event... Read more
A Better Finder Rename 11.05 - File, pho...
A Better Finder Rename is the most complete renaming solution available on the market today. That's why, since 1996, tens of thousands of hobbyists, professionals and businesses depend on A Better... Read more
SpamSieve 2.9.38 - Robust spam filter fo...
SpamSieve is a robust spam filter for major email clients that uses powerful Bayesian spam filtering. SpamSieve understands what your spam looks like in order to block it all, but also learns what... Read more
TeamViewer 15.0.8397 - Establish remote...
TeamViewer gives you remote control of any computer or Mac over the Internet within seconds or can be used for online meetings. Find out why more than 200 million users trust TeamViewer! Free for non... Read more
SteerMouse 5.4.3 - Powerful third-party...
SteerMouse is an advanced driver for USB and Bluetooth mice. SteerMouse can assign various functions to buttons that Apple's software does not allow, including double-clicks, modifier clicks,... Read more
Toast Titanium 18.2.1 - The ultimate med...
Roxio Toast Titanium, the leading DVD burner for Mac, makes burning even better, adding Roxio Secure Burn to protect your files on disc and USB in Mac- or Windows-compatible formats. Get more style... Read more
HoudahSpot 5.0.11 - Advanced file-search...
HoudahSpot is a versatile desktop search tool. Use HoudahSpot to locate hard-to-find files and keep frequently used files within reach. HoudahSpot will immediately feel familiar. It works just the... Read more
ClipGrab 3.8.6 - Download videos from Yo...
ClipGrab is a free downloader and converter for YouTube, Vimeo, Facebook and many other online video sites. It converts downloaded videos to MPEG4, MP3 or other formats in just one easy step Version... Read more
ExpanDrive 7.4.0 - Access cloud storage...
ExpanDrive builds cloud storage in every application, acts just like a USB drive plugged into your Mac. With ExpanDrive, you can securely access any remote file server directly from the Finder or... Read more
Adobe Dreamweaver CC 2020 20.0 - Build w...
Dreamweaver CC 2020 is available as part of Adobe Creative Cloud for as little as $20.99/month (or $9.99/month if you're a previous Dreamweaver customer). Adobe Dreamweaver CC 2020 allows you to... Read more

Latest Forum Discussions

See All

New heroes and balance updates set to ar...
It feels like Hearthstone: Battlegrounds only launched yesterday, and already the auto batter addition to Blizzard's megahit card game is set to receive new heroes and balance updates. [Read more] | Read more »
Pre-register for Hello Kitty AR: Kawaii...
Hello Kitty — the cute cat that launched a multi-billion-pound franchise — has been brought to life… sort of. Sanrio has teamed up with the Bublar Group to create a new mobile game that uses AR tech to turn the real world into Hello Kitty’s... | Read more »
Gorgeous and tranquil puzzler Spring Fal...
One-man indie studio SPARSE//GameDev has now launched its tranquil puzzler, Spring Falls. It's described as "a peaceful puzzle game about water, erosion, and watching things grow". [Read more] | Read more »
Black Desert Mobile gets an official rel...
Pearl Abyss has just announced that its highly-anticipated MMO, Black Desert Mobile, will launch globally for iOS and Android on December 11th. [Read more] | Read more »
Another Eden receives new a episode, cha...
Another Eden, WFS' popular RPG, has received another update that brings new story content to the game alongside a few new heroes to discover. [Read more] | Read more »
Overdox guide - Tips and tricks for begi...
Overdox is a clever battle royale that changes things up by adding MOBA mechanics and melee combat to the mix. This new hybrid game can be quite a bit to take in at first, so we’ve put together a list of tips to help you get a leg up on the... | Read more »
Roterra Extreme - Great Escape is a pers...
Roterra Extreme – Great Escape has been described by developers Dig-It Games as a mini-sequel to their acclaimed title Roterra: Flip the Fairytale. It continues that game's tradition of messing with which way is up, tasking you with solving... | Read more »
Hearthstone: Battlegrounds open beta lau...
Remember earlier this year when auto battlers were the latest hotness? We had Auto Chess, DOTA Underlords, Chess Rush, and more all gunning for our attention. They all had their own reasons to play, but, at least from where I'm standing, most... | Read more »
The House of Da Vinci 2 gets a new gamep...
The House of Da Vinci launched all the way back in 2017. Now, developer Blue Brain Games is gearing up to deliver a second dose of The Room-inspired puzzling. Some fresh details have now emerged, alongside the game's first official trailer. [Read... | Read more »
Shoot 'em up action awaits in Battl...
BattleBrew Productions has just introduced another entry into its award winning, barrelpunk inspired, BattleSky Brigade series. Whilst its previous title BattleSky Brigade TapTap provided fans with idle town building gameplay, this time the... | Read more »

Price Scanner via

Save up to $120 on the new 16″ MacBook Pro at...
Apple’s resellers are starting to receive stock of new 16″ MacBook Pros, and the first set of sales & deals are now available: (1) Amazon 16″ MacBook Pros start on sale for $100-$116 off Apple’s... Read more
Apple Watch Series 3 models on sale at Amazon...
Amazon has Apple Watch Series 3 GPS models on sale for $30 off MSRP, starting at only $169. There prices are the lowest we’ve ever seen for these models from any Apple reseller. Choose Amazon as the... Read more
The ‘Mac Potpourri’ Mailbag: Edition #1- Info...
COMMENTARY: 11.20.19- Welcome to the inaugural edition of the “Mac Potpourri” Mailbag where we take a look at correspondence received from readers of this column from all over the world who write in... Read more
13″ 2.4GHz MacBook Pros available for up to $...
Apple has a full line of Certified Refurbished 2019 13″ 2.4GHz 4-Core Touch Bar MacBook Pros available starting at $1529 and up to $300 off MSRP. Apple’s one-year warranty is included, shipping is... Read more
New at T-Mobile: Switch to T-Mobile, and get...
T-Mobile is offering a free 64GB iPhone 8 for new customers who switch to T-Mobile and open a new line of service. Eligible trade-in required, and discount applied over a 24 month period. The fine... Read more
Xfinity Mobile’s Black Friday Apple savings:...
Take $250 off the purchase of any iPhone at Xfinity Mobile with a new line activation, and transfer of phone number to Xfinity Mobile, through December 8, 2019. This includes Apple’s new iPhone 11... Read more
2019 13″ 1.4GHz MacBook Pros available starti...
Apple has a full line of Certified Refurbished 2019 13″ 1.4GHz 4-Core Touch Bar MacBook Pros available starting at $1099 and up to $230 off MSRP. Apple’s one-year warranty is included, shipping is... Read more
Save up to $350 on a 21″ or 27″ iMac with the...
Apple has Certified Refurbished 2019 21″ & 27″ iMacs available starting at $929 and up to $350 off the cost of new models. Apple’s one-year warranty is standard, shipping is free, and each iMac... Read more
Early Holiday 2019 Sale: B&H again offers...
B&H Photo has 10.2″ iPads on sale again for $30 off Apple’s MSRP, starting at $299, as part of their early Holiday 2019 sale. Overnight shipping is free to many addresses in the US: – 10.2″ 32GB... Read more
Apple iMacs on sale today at B&H Photo fo...
B&H Photo has new 2019 21″ and 27″ 5K iMacs on stock today and on sale for up to $150 off Apple’s MSRP. Overnight shipping is free to many locations in the US. These are the same iMacs sold by... Read more

Jobs Board

Best Buy *Apple* Computing Master - Best Bu...
**745516BR** **Job Title:** Best Buy Apple Computing Master **Job Category:** Store Associates **Store NUmber or Department:** 001101-Manhattan-Store **Job Read more
Best Buy *Apple* Computing Master - Best Bu...
**746655BR** **Job Title:** Best Buy Apple Computing Master **Job Category:** Sales **Store NUmber or Department:** 002518-Atlantic Center-Store **Job Description:** Read more
*Apple* Mobility Pro - Best Buy (United Stat...
**747089BR** **Job Title:** Apple Mobility Pro **Job Category:** Store Associates **Store NUmber or Department:** 000377-Prescott AZ-Store **Job Description:** At Read more
*Apple* Health Benefit Specialist - Call Cen...
Description ** Apple Health Benefit Specialist - Call Center (MAS 3/MACSC)** **Olympia, WA Multiple Positions** *The ideal candidate for this position will have Read more
Hair Stylist - *Apple* Blossom Mall - JCPen...
Hair Stylist - Apple Blossom Mall Location:Winchester, VA, United States- Apple Blossom Mall 1850 Apple Blossom Dr Job ID:1065040Salon Professionals Job Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.