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.

PHONEMIC SOUNDS

VOWELS

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!

CONSONANTS

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

DIPHTHONGS

AW power EY made OY boil

AY hide OW low UW crew

SPECIAL SYMBOLS

DX pity Q kitt_en RX car

LX call QX silent vowel UL=AXL

SHORT HAND SYMBOLS

IL=IXL IM=IXM IN=IXN

UL=AXL UM=AXM UN=AXN

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?).

HANGMAC

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.

InitTalk:
    SpeechHand!=0:SpeechErr%=0:Phon$=""
    hertz%=190:mode%=0:Wpm%=125
    SpeechOn! "",SpeechHand!,SpeechErr%
    SpeechPitch! SpeechHand!,hertz%,mode%
    SpeechRate! SpeechHand!,Wpm%
    POKE &H208,5
    RETURN

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:

Speakup:

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

SoundOutString! SpeechHand!,Phon$,SpeechErr%

RETURN

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.

'HANGMAC
'©MACTUTOR, 1986
'by David Kelly

    Initialize:
    CLEAR,20000!
    DEFINT a-z
    DIM wordchar(1)
    false=0:true=NOT false
    talk=true:number=15
    DIM wordarray$(number)
    ON ERROR GOTO 10
    LIBRARY "CLR SpeechLib:SpeechLib"
5 :ON ERROR GOTO 0
    IF talk=true THEN GOSUB InitTalk
    FOR i=1 TO number
        READ wordarray$(i)
    NEXT i
    blank$=""
    FOR i=1 TO 40:blank$=blank$+" ":NEXT i
    WINDOW CLOSE 1
    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
    WrongGuess=10
    GOSUB HangSetup
    GOSUB DrawHangMac
    ON MENU GOSUB menuevent
    MENU ON
idleloop: GOTO idleloop

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

Speechmenu:
    menuitem=MENU(1):MENU
    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
    MENU ON
    RETURN
    
InitTalk:
    SpeechHand!=0:SpeechErr%=0:Phon$=""
    hertz%=190:mode%=0:Wpm%=125
    SpeechOn! "",SpeechHand!,SpeechErr%
    SpeechPitch! SpeechHand!,hertz%,mode%
    SpeechRate! SpeechHand!,Wpm%
    POKE &H208,5
    RETURN
    
Quit:
    GOSUB ClearKeyboard
    IF talk=true THEN Eng$="Good buy.   Play again             sometime.":GOSUB 
Speakup
    IF talk=true THEN SpeechOff! SpeechHand!  :LIBRARY CLOSE
    WINDOW CLOSE 1
    WINDOW CLOSE 2
    WINDOW CLOSE 3
    MENU RESET
    END
    
Start:
    MENU ON
    x!=FRE(1)
    RANDOMIZE TIMER
    index=INT(RND(1)*number)
    IF index=0 THEN Start
    word$=wordarray$(index)
    GOSUB HangSetup
    ERASE wordchar
    DIM wordchar(LEN(word$))
    FOR i=1 TO LEN(word$)
        wordchar(i)=false
    NEXT i
    usedchar=0:used$=""
    WrongGuess=0:lose=false
    TEXTFONT(2)
    TEXTSIZE(14)
    TEXTFACE(1)
    wflag=false
    sumword=0
    GOSUB DisplayWord
    IF talk=false THEN inputchar
    Eng$="Your word is "+STR$(LEN(word$))+" characters long."
    GOSUB Speakup
inputchar:
    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
charloop:
    d=DIALOG(0)
    IF d<>6 THEN charloop
    char$=UCASE$(EDIT$(1))
    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
checkchar:
    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$+" "
    oldsum=sumword
    sumword=0
    FOR i=1 TO LEN(word$)
        IF char$=MID$(word$,i,1) THEN wordchar(i)=true
        sumword=wordchar(i)+sumword
    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$)
        wordchar(i)=true
    NEXT i
    WINDOW 1
    EDIT FIELD CLOSE 1
    MENU 1,0,1
    RETURN

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

foundword:
    wflag=true
    FOR i=1 TO LEN(word$)
        wordchar(i)=true
    NEXT i
    RETURN

DisplayWord:
    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
    RETURN
    
DisplayUsedChars:
    IF LEN(char$)>1 THEN RETURN
    WINDOW 2
    LOCATE 1,1
    PRINT used$;
    RETURN
    
DrawHangMac:
    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 PENSIZE(2,2)
    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)
    CALL PENNORMAL
    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
    RETURN
    
DrawHangPost:
    CALL PENSIZE(4,4)
    CALL MOVETO(250,5)
    CALL LINETO(310,5)
    CALL LINETO(310,185)
    RETURN
    
ClearKeyboard:
    key$="X"
    WHILE key$ <>""
        key$=INKEY$
    WEND
    RETURN

10 :IF ERR=53 THEN talk=false
    RESUME 5
    END
    
Instructions:
    WINDOW CLOSE 2
    WINDOW CLOSE 3
    WINDOW 1,"Instructions",(10,30)-(500,330),-2
    TEXTFONT(2):TEXTSIZE(18):TEXTFACE(1)
    LOCATE 1,15:PRINT "HangMac"
    TEXTSIZE(12):TEXTFACE(0)
    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 
which"
    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 
Macintalk."
    PRINT"To use the speech feature you must have CLR SpeechLib (available 
from"
    PRINT"Clear Lake Research, 5353 Dora Street, Suite 7, Houston, Texas 
77005"
    PRINT"(800-835-2246 X 199).  However, the program will still work 
without"
    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)
WaitforButton:
    WHILE DIALOG(0)<>1:WEND
    buttonpushed = DIALOG(1)
    IF buttonpushed=2 THEN GOSUB SpeakInstructions:GOTO WaitforButton
    BUTTON CLOSE 1
    BUTTON CLOSE 2
    WINDOW CLOSE 1
    MENU 1,0,1
    RETURN
    
SpeakInstructions:
    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 
word."
    ReaderString! SpeechHand!,Eng$,Phon$,SpeechErr%
    SoundOutString! SpeechHand!,Phon$,SpeechErr%
    Eng$="This program features CLR SpeechLib proseedures for calling 
Macintalk."
    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%
    Eng$="":Phon$=""
    BUTTON 1,1:BUTTON 2,1
    RETURN

Speakup:
    ReaderString! SpeechHand!, Eng$,Phon$,SpeechErr%
    SoundOutString! SpeechHand!,Phon$,SpeechErr%
    RETURN
    
'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
'available.

DATA "MACINTOSH","MOUSE","DISK","DESKTOP","CURSOR"
DATA "ICON","KEYBOARD","WINDOW","MENU","PRINTER"
DATA "MODEM","BYTE","MEMORY","PROGRAM","DATA"
 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Firetask Pro 4.2.2 - Innovative task man...
Firetask Pro uniquely combines the advantages of classical priority-and-due-date-based task management with GTD. Stay focused and on top of your commitments - Firetask Pro's "Today" view shows all... Read more
Bookends 13.4.3 - Reference management a...
Bookends is a full-featured bibliography/reference and information-management system for students and professionals. Bookends uses the cloud to sync reference libraries on all the Macs you use.... Read more
LibreOffice 6.4.5.2 - Free, open-source...
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
Thunderbird 68.10.0 - Email client from...
As of July 2012, Thunderbird has transitioned to a new governance model, with new features being developed by the broader free software and open source community, and security fixes and improvements... Read more
Firefox 78.0.1 - Fast, safe Web browser.
Firefox offers a fast, safe Web browsing experience. Browse quickly, securely, and effortlessly. With its industry-leading features, Firefox is the choice of Web development professionals and casual... Read more
BetterTouchTool 3.389 - Customize multi-...
BetterTouchTool adds many new, fully customizable gestures to the Magic Mouse, Multi-Touch MacBook trackpad, and Magic Trackpad. These gestures are customizable: Magic Mouse: Pinch in / out (zoom)... Read more
Slack 4.7.0 - Collaborative communicatio...
Slack brings team communication and collaboration into one place so you can get more work done, whether you belong to a large enterprise or a small business. Check off your to-do list and move your... Read more
OsiriX Lite 11.0.3 - 3D medical image pr...
OsiriX Lite is an image processing software dedicated to DICOM images (".dcm" / ".DCM" extension) produced by medical equipment (MRI, CT, PET, PET-CT, ...) and confocal microscopy (LSM and BioRAD-PIC... Read more
Wireshark 3.2.5 - Network protocol analy...
Wireshark is one of the world's foremost network protocol analyzers, and is the standard in many parts of the industry. It is the continuation of a project that started in 1998. Hundreds of... Read more
Dabble 1.6.1 - Organize your manuscript,...
Dabble organizes your manuscript, story notes, and plot. Dabble simplifies the story, leaving more room in your brain to create, which is what being a writer is really about. Organize your story.... Read more

Latest Forum Discussions

See All

Pokemon Go's July Community Day wil...
Pokemon Go developers have announced the details concerning the upcoming Gastly Community Day. This particular event was selected by the players of the game after the Gas Pokemon came in second place after a poll that decided which Pokemon would... | Read more »
Clash Royale: The Road to Legendary Aren...
Supercell recently celebrated its 10th anniversary and their best title, Clash Royale, is as good as it's ever been. Even for lapsed players, returning to the game is as easy as can be. If you want to join us in picking the game back up, we've put... | Read more »
Detective Di is a point-and-click murder...
Detective Di is a point-and-click murder mystery set in Tang Dynasty-era China. You'll take on the role of China's best-known investigator, Di Renjie, as he solves a series of grisly murders that will ultimately lead him on a collision course with... | Read more »
Dissidia Final Fantasy Opera Omnia is se...
Dissidia Final Fantasy Opera Omnia, one of Square Enix's many popular mobile RPGs, has announced a plethora of in-game events that are set to take place over the summer. This will include several rewards, Free Multi Draws and more. [Read more] | Read more »
Sphaze is a neat-looking puzzler where y...
Sphaze is a neat-looking puzzler where you'll work to guide robots through increasingly elaborate mazes. It's set in a visually distinct world that's equal parts fantasy and sci-fi, and it's finally launched today for iOS and Android devices. [... | Read more »
Apple Arcade is in trouble
Yesterday, Bloomberg reported that Apple is disappointed in the performance of Apple Arcade and will be shifting their approach to the service by focusing on games that can retain subscribers and canceling other upcoming releases that don't fit... | Read more »
Pixel Petz, an inventive platform for de...
Pixel Petz has built up a sizeable player base thanks to its layered, easy-to-understand creative tools and friendly social experience. It revolves around designing, trading, and playing with a unique collection of pixel art pets, and it's out now... | Read more »
The King of Fighters Allstar's late...
The King of Fighters ALLSTAR, Netmarble's popular action RPG, has once again been updated with a plethora of new content. This includes battle cards, events and 21 new fighters, which increases the already sizeable roster even more. [Read more] | Read more »
Romancing SaGa Re;univerSe, the mobile s...
Square Enix latest mobile spin-off Romancing SaGa Re;univerSe is available now globally for both iOS and Android. It initially launched in Japan back in 2018 where it's proven to be incredibly popular, so now folks in the West can finally see what... | Read more »
Away: Journey to the Unexpected is a sto...
Away: Journey to the Unexpected looks really quite lovely. Stylish, cute, and clearly heavily inspired by Japanese animation, it's amongst the best-looking mobile games on the horizon. Developed by a two-person team, this story-driven rogue-lite... | Read more »

Price Scanner via MacPrices.net

July 4th Sale: Woot offers wide range of Macs...
Amazon-owned Woot is blowing out a wide range of Apple Macs and iPads for July 4th staring at $279 and ranging up to just over $1000. Models vary from older iPads and 11″ MacBook Airs to some newer... Read more
Apple Pro Display XDR with Nano-Texture Glass...
Abt Electronics has Apple’s new 32″ Pro Display XDR model with the nano-texture glass in stock and on sale today for up to $144 off MSRP. Shipping is free: – Pro Display XDR (nano-texture glass): $... Read more
New 2020 Mac mini on sale for up to $100 off...
Amazon has Apple’s new 2020 Mac minis on sale today for $40-$100 off MSRP with prices starting at $759. Shipping is free: – 2020 4-Core Mac mini: $759 $40 off MSRP – 2020 6-Core Mac mini: $998.99 $... Read more
July 4th Sale: $100 off every 2020 13″ MacBoo...
Apple resellers have new 2020 13″ MacBook Airs on sale for $100 off Apple’s MSRP as part of their July 4th sales. Starting at $899, these are the cheapest new 2020 MacBooks for sale anywhere: (1) B... Read more
This hidden deal on Apple’s site can save you...
Are you a local, state, or federal government employee? If so, Apple offers special government pricing on their products, including AirPods, for you as well as immediate family members. Here’s how... Read more
Apple Watch Series 3 models on sale for new l...
Amazon has Apple Watch Series 3 GPS models on sale for $30 off MSRP, starting at only $169. Their prices are the lowest available for these models from any Apple reseller. Choose Amazon as the seller... Read more
Deal Alert! Get these refurbished 2018 13″ Ma...
Apple has restocked and lowered prices on select Certified Refurbished 2018 13″ MacBook Airs, starting at only $679. Each MacBook features a new outer case, comes with a standard Apple one-year... Read more
July 4th Sale: 13″ 2.0GHz MacBook Pros for $2...
B&H Photo has new 2020 13″ 2.0GHz MacBook Pros on sale for $200 off Apple’s MSRP as part of their July 4th sale. Prices start at $1599. These are the same MacBook Pros sold by Apple in their... Read more
July 1 only: $100 off Apple iPhone 11, 11 Pro...
Boost Mobile is offering Apple iPhone 11, 11 Pro, and iPhone 11 Pro Max models for $100 off MSRP with service. Their discount reduces the cost of an iPhone 11/64GB to $599, iPhone 11 Pro to $899 for... Read more
Apple offers $50-$100 Education discount on i...
Purchase a new 12.9″ or 11″ iPad Pro at Apple using your Education discount, and Apple will take $50-$100 off their MSRP. All teachers, students, and staff of any educational institution with a .edu... Read more

Jobs Board

Operating Room Assistant, *Apple* Hill Surg...
Operating Room Assistant, Apple Hill Surgical Center - Full Time, Day Shift, Monday - Saturday availability required Tracking Code 62363 Job Description Operating Read more
Perioperative RN - ( *Apple* Hill Surgical C...
Perioperative RN - ( Apple Hill Surgical Center) Tracking Code 60593 Job Description Monday - Friday - Full Time Days Possible Saturdays General Summary: Under the Read more
Product Manager, *Apple* Commercial Sales -...
Product Manager, Apple Commercial Sales Austin, TX, US Requisition Number:77652 As an Apple Product Manager for the Commercial Sales team at Insight, you Read more
*Apple* Mac Product Engineer - Barclays (Uni...
Apple Mac EngineerWhippany, NJ Support the development and delivery of solutions, products, and capabilities into the Barclays environment working across technical Read more
Blue *Apple* Cafe Student Worker - Pennsylv...
…enhance your work experience. Student positions are available at the Blue Apple Cafe. Employee meal discount during working hours. Duties include food preparation, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.