TweetFollow Us on Twitter

Simon Game
Volume Number:4
Issue Number:7
Column Tag:Basic School

True Basic Plays the Simon Game

By Dave Kelly, MacTutor Editorial Board

The new and improved version of True Basic (ver. 2.01) has just recently started shipping. Some of the new features include: built in support for full color and PICT format images, 68881 coprocessor support, and a more structured environment using modules and workspaces. True Basic also now includes the Runtime package (which used to cost a few hundred dollars), but they are packaging the Macintosh Developer’s Toolkit separately. The toolkit contains all of the libraries which are essential for making “real” Macintosh programs (menus, windows, controls etc). It is obvious to any dedicated Macintosh developer that this package should have been included with the True Basic “Basic” package. However, it is true that when True Basic is sold to a school as a training tool, there is not much need for the Macintosh libraries.

This month, I am not going to do an in depth analysis of True Basic 2.01 (Basic Wars, part ??). I’ll save that for next month. I would like to show off some of True Basic’s new features with respect to Macintosh II color. I’m still impressed by Mac II’s color!

True Basic has its own unique set of statements for using color. The SET COLOR n statement (where n is a number from 0 to 255) sets the drawing pen to the color selected. Then a PLOT or some other graphics command may be given to operate in the selected color. Selecting color is not really very unique. ZBasic uses a similar statement (COLOR=n) to select colors.

The Palette Manager is responsible for monitoring and establishing the color environment on the Mac II. The system provides a default palette of colors which applications may use as desired. The default palette is a set of standard colors which may be selected. Color Quickdraw will match the selected color as best as it can, but there may be times when more shades of a particular color are desired than are available in the default palette.

Most video devices including the Mac II video card use an indexed color model. Each pixel value in the video device’s memory corresponds to an indexed value in the color table. The color display card uses the RGB value found in the look up table to display the desired color. There are several advantages to using this indexed display method. One is that it is faster. Also, it allows color animation to be used. In color animation, the index value is changed to change display colors; the pixel color itself is not changed. You can especially see the effects of this when using Pixel Paint or Modern Artist and changing the palette using the application. Another way to see the effects of changing the palette is by using the Colorizer software, by Palomar. This is recommended to any Mac II user that wants to make better use of color on the Mac II. [The Colorizer and the PICT Dective are available from MacTutor’s Mail Order Store at the back of this issue. -Ed]

Fig. 1 Our Simon Game in True Basic (This is in color on the Mac II!)

Color Palette Manipulation

True Basic allows you to change colors in the color palette. The SET COLOR MIX (x) r,g,b statement sets the color x to the color specified by the red, green, blue values given by r,g and b. In True Basic the values of r,g and b are from 0 to 1 (whereas the hardware is looking for values from 0 to 65535). For the user it is much easier to think in terms of 0 to 1 than 0 to 65535. A SET COLOR MIX (5) .25,0,0 would change color 5 to 25% of the full red value and no green and blue. The number of distinct intensities available on your Mac II depends on the number of colors available. You may use ASK MAX COLOR to determine how many of the colors are available out of the total 256 colors (assuming you can display 256 colors). Actually ASK MAX COLOR returns n-3 colors because some of the colors are already in use by the system. ASK MAX COLOR will only let you know the maximum possible number of colors. SET COLOR MIX is ignored on black and white systems.

Using color is fun as you can see from this months program (see the black and white figure 1; on the Mac II, this Simon game is in color with the background an animated palette). The theme I selected is based on the Simon game (Milton Bradley) which I’m sure you have all seen before. There are a few things which must be done to set up the program if you are starting from scratch. First go to a paint program (color is preferred, but not necessary) and create the main PICT for the game as shown here in figure 2.

Fig. 2 PICT for the Simon Game

It doesn’t matter what colors are used or even the shape of the colored areas. The program will do a fill (FLOOD x,y statement in True Basic) and fill in the correct colors as long as the size of the PICT rectangle remains the same size. If the same color is used as the original, the SET COLOR MIX statement needs to use a different color because the FLOOD statement fills the area till it finds a change in color or it finds the same color as the one being use to fill the area.

Next the PICT should be stored in the clipboard and then run the ‘Save Clip’ program. The purpose of this program is to convert the clipboard PICT file into a disk PICT file. True Basic could read the PICT file direct, but this way we know that we have only selected the actually PICT and not some of the areas surrounding it. When the ‘Save Clip’ program asks for a filename, the name of the file as used in the main program should be used (in this case ‘Prof Says.PICT’ is the filename).

! Save Clip
! This program will save the contents of the clipboard to a file
LIBRARY “Mactools*”
LIBRARY “PictLib*”
LET doneflag=0
DO until doneflag=1
   CALL Read_clipboard(“PICT”,s$)
   LET filename$=MacPutFile$(50,50,”Enter Filename to save as ”,””,””)
   IF filename$<>”” THEN
      CALL Write_pictfile(filename$,s$)
      PRINT “Do another?”;
      GET KEY Answer
      IF Answer<>ord(“Y”) OR Answer<>ord(“y”) THEN LET doneflag=1
      LET doneflag=1

The main program requires the use of the MacTools and PictLib Libraries. These are provided with the True Basic package. To help True Basic find the libraries (in case they are moved to a strange place) the ALIAS statement should be used. The manual is not too clear on this, but ALIAS statements should be run from a file ‘TB Startup’ automatically when True Basic is run. This is a satisfactory solution to fix the HFS problems that True Basic 1.0 had.

The next thing that might be different for you is the way that True Basic specifies the window (or screen) coordinates. No matter what kind of computer True Basic is being run on, the coordinates are the same. The coordinates start with 0,0 in the bottom left corner of the screen and go to 1,1 in the top right corner. Then using the SET WINDOW statement any coordinate system may be mapped to the current window. A smaller portion of the screen may be partitioned off to act as a kind of clipping region for text. The PictStuff library seems to only use screen coordinates and doesn’t pay much attention to the location of the window. However, by using the CALL Set_Frame statement, the PICT graphics may be displayed anywhere you want. The OPEN #1:screen left, right, bottom, top statement is set up for the Apple RGB Monitor. These values may have to be adjusted if used on other size monitors.

Of course, True Basic statements are used all the way through the program except for the MacTools calls which are used mostly used to display text. A few of the other Macintosh things which are included in the MacTools Library are:


also other commands for drawing ovals and rectangles.

I am somewhat disappointed that more of the Macintosh Toolbox is not included (built in) to the True Basic system. Of course the Developer Toolkit should include the rest of the Macintosh ROM world, but it would be nice to have it integrated. [We are still waiting for delivery of the Developer Toolkit. True Basic is sending return postcards to order the library but as yet we have not seen it. -Ed] If you use any library a lot, you may load it when you startup and have it resident in memory so at least there is a way to simplify the system. I hope to be able to review the Developer Toolkit when it is released. I will have more to say about True Basic next month.

! Professor Mac Says 
! By David Kelly
! ©MacTutor, 1988
! With special thanks to Milton Bradley Co.
! For their “Simon” Game

LIBRARY “Mactools*”! MacStuff Library
LIBRARY “PictLib*” ! PICTStuff Library
DIM notes(31)
LET skilllevel=8 ! Set up levels
LET level=1
SET BACKGROUND COLOR 10 !  Get a Background color
OPEN #1:screen .25,.67,.165,.75    ! open a section of screen
WINDOW #1 ! and use it as a window
SET WINDOW 0,1,0,1
ASK SCREEN a,b,c,d
CALL set_frame(a,b,c,d)

LET filename$=”Prof Says.PICT”! Get the PICT resource
IF filename$<>”” THEN
 CALL Read_pictfile(filename$,s$)
 CALL Draw_string(s$,1)
 PRINT “Prof Says.PICT file not found!”

! Set up the main screen
FLOOD .3,.7 ! Fill the shape with Red
CALL SetBlue
FLOOD .7,.7 ! Fill the shape with Blue
CALL SetGreen
FLOOD .3,.3 ! Fill the shape with Green
CALL SetYellow
FLOOD .7,.3 ! Fill the shape with Yellow
! Turn off all shapes
CALL darkred
CALL darkblue
CALL darkgreen
CALL darkyellow
ASK WINDOW a,b,c,d
BOX KEEP a,b,c,d in None$ ! Save PICT so it can be             
 ! restored later
CALL MacTextFont(2)! Get New York font
SET TEXT JUSTIFY “center”,”half”
DO ! Start the Main program loop
 SET COLOR MIX (0) rnd,rnd,rnd   ! change background color
 CALL SetButtons(level)
 LET Animationcount=Animationcount+1
 IF Animationcount>=500 then
 SET COLOR MIX (0) rnd,rnd,rnd! change the background color
 LET Animationcount=0
 GET MOUSE x,y,s ! Check for mouse press
 IF s>=1 then
 GET POINT x,y   ! Get the mouse press
 LET result=0
 CALL PtInRect(x,y,.12,.295,.7,.8,result)    ! Level 1
 IF result=1 then
 LET skilllevel=8
 LET level=1
 CALL SetStartGameButton(Level)
 LET result=0
 CALL PtInRect(x,y,.32,.495,.7,.8,result)    ! Level 2
 IF result=1 then
 LET skilllevel=14
 LET level=2
 CALL SetStartGameButton(Level)
 LET result=0
 CALL PtInRect(x,y,.505,.680,.7,.8,result)   ! Level 3
 IF result=1 then
 LET skilllevel=20
 LET level=3
 CALL SetStartGameButton(Level)
 LET result=0
 CALL PtInRect(x,y,.705,.880,.7,.8,result)   ! Level 4
 IF result=1 then
 LET skilllevel=31
 LET level=4
 CALL SetStartGameButton(Level)
 LET result=0
 CALL PtInRect(x,y,.3,.7,.05,.15,result)
 IF result=1 then
 ! Quit Routine
 SET COLOR “White”
 BOX AREA 0,1,0,1
 SET COLOR “Black”
 BOX LINES 0,1,0,1
 CALL MacTextSize(24)
 PLOT TEXT, AT .5,.6:”Thank you for”
 PLOT TEXT, AT .5,.4:”Reading MacTutor™”
 LET result=0
 CALL PtInRect(x,y,.3,.7,.2,.3,result)
 IF result=1 then
 ! Play the Game
 BOX SHOW none$ at 0,0
 LET x=0
 LET y=0
 LET numberofnotes=1
 LET tempo=100
 DO until numberofnotes=skilllevel
 CALL PlaySequence(numberofnotes,tempo, notes())
 FOR i=1 to numberofnotes
 SET COLOR MIX (0) rnd,rnd,rnd
 CALL buttonpress(x,y,selection)
 IF selection<>notes(i) then
 CALL MacSysBeep(500)
 CALL MacSysBeep(500)
 CALL MacSysBeep(500)
 LET numberofnotes=numberofnotes+1
 LET tempo=tempo+i*10
 CALL SetButtons(level)

SUB SetButtons(GameLevel)     ! Set Game Buttons
 CALL MacTextSize(14)
 SET COLOR “white”
 BOX AREA .3,.7,.05,.15   ! Quit Game Button
 BOX AREA .12,.295,.7,.8  ! Level 1 Button
 BOX AREA .32,.495,.7,.8  ! Level 2 Button
 BOX AREA .505,.680,.7,.8 ! Level 3 Button
 BOX AREA .705,.880,.7,.8 ! Level 4 Button
 SET COLOR “Black”
 BOX LINES .3,.7,.05,.15  ! Quit Game Button
 BOX LINES .12,.295,.7,.8 ! Level 1 Button
 BOX LINES .32,.495,.7,.8 ! Level 2 Button
 BOX LINES .505,.680,.7,.8  ! Level 3 Button
 BOX LINES .705,.880,.7,.8! Level 4 Button
 CALL SetStartGameButton(GameLevel)
 PLOT TEXT, AT .5,.11:”Quit Game”
 CALL MacTextSize(12)
 PLOT TEXT, AT .195,.77:”1"
 PLOT TEXT, AT .4,.77:”2"
 PLOT TEXT, AT .575,.77:”3"
 PLOT TEXT, AT .825,.77:”4"

SUB SetStartGameButton(GameLevel)  ! Set up the Start Game Button
 SET COLOR MIX (0) rnd,rnd,rnd
 CALL MacTextSize(14)
 SET COLOR “White”
 BOX AREA .1,.9,.2,.3! Start Game Button
 SET COLOR “Black”
 BOX LINES .1,.9,.2,.3  ! Start Game Button
 PLOT TEXT, AT .5,.26:”Start Game Level “ & STR$(Gamelevel)

SUB SetNone ! Display the PICT with colors off
 BOX SHOW None$ at 0,0

SUB SetRed
 SET COLOR MIX (13) 1,0,0
SUB DarkRed
 SET COLOR MIX (13) 0,0,0
SUB SetGreen
 SET COLOR MIX (14) 0,1,0

SUB DarkGreen
 SET COLOR MIX (14) 0,0,0
SUB SetBlue
 SET COLOR MIX (15) 0,0,1
SUB DarkBlue
 SET COLOR MIX (15) 0,0,0
SUB SetYellow
 SET COLOR MIX (16) .9,1,0
SUB DarkYellow
 SET COLOR MIX (16) 0,0,0
SUB FlashRed
 SET COLOR MIX (13) 1,0,0
 LET note$=”o5 mf ms c”
 PLAY note$
 SET COLOR MIX (13) 0,0,0
SUB FlashGreen
 SET COLOR MIX (14) 0,1,0
 LET note$=”o5 mf ms a”
 PLAY note$
 SET COLOR MIX (14) 0,0,0

SUB FlashBlue
 SET COLOR MIX (15) 0,0,1
 LET note$=”o5 mf ms >a”
 PLAY note$
 SET COLOR MIX (15) 0,0,0
SUB FlashYellow
 SET COLOR MIX (16) 1,1,0
 LET note$=”o5 mf ms e”
 PLAY note$
 SET COLOR MIX (16) 0,0,0
SUB PtInRect(x,y,left,right,bottom,top,Result)     
! See if point is in Rectangle
 IF x>left and x<right and y>bottom and y<top then
 LET Result=1
 LET Result=0

SUB Buttonpress(x,y,selection)! Handle button press
 CALL PtInRect(x,y,0,.5,.5,1,result)
 IF result=1 then LET selectedcolor=13
 CALL PtInRect(x,y,0,.5,0,.5,result)
 IF result=1 then LET selectedcolor=14
 CALL PtInRect(x,y,.5,1,.5,1,result)
 IF result=1 then LET selectedcolor=15
 CALL PtInRect(x,y,.5,1,0,.5,result)
 IF result=1 then LET selectedcolor=16
 SELECT CASE selectedcolor
 CASE 13
 CALL flashred
 LET selection=1
 CASE 14
 CALL flashgreen
 LET selection=2
 CASE 15
 CALL flashblue
 LET selection=3
 CASE 16
 CALL flashyellow
 LET selection=4
 LET selection=0

SUB PlaySequence(numberofnotes,tempo,notes()) ! Play the notes
 LET tempo$=”t”&str$(tempo)
 PLAY tempo$
 FOR i=1 to numberofnotes
 SET COLOR MIX (0) rnd,rnd,rnd
 IF notes(i)=0 then
 LET note=int(4*rnd)+1
 LET note=notes(i)
 CALL flashred
 CALL flashgreen
 CALL flashblue
 CALL flashyellow
 LET notes(i)=note

Community Search:
MacTech Search:

Software Updates via MacUpdate

Microsoft Office 2016 16.11 - Popular pr...
Microsoft Office 2016 - Unmistakably Office, designed for Mac. The new versions of Word, Excel, PowerPoint, Outlook, and OneNote provide the best of both worlds for Mac users - the familiar Office... Read more
Adobe Photoshop CC 2018 19.1.2 - Profess...
Photoshop CC 2018 is available as part of Adobe Creative Cloud for as little as $19.99/month (or $9.99/month if you're a previous Photoshop customer). Adobe Photoshop CC 2018, the industry standard... Read more
Adobe Dreamweaver CC 2018 -...
Dreamweaver CC 2018 is available as part of Adobe Creative Cloud for as little as $19.99/month (or $9.99/month if you're a previous Dreamweaver customer). Adobe Dreamweaver CC 2018 allows you to... Read more
Adobe Flash Player - Plug-in...
Adobe Flash Player is a cross-platform, browser-based application runtime that provides uncompromised viewing of expressive applications, content, and videos across browsers and operating systems.... Read more
Drive Genius 5.2.0 - $79.00
Drive Genius features a comprehensive Malware Scan. Automate your malware protection. Protect your investment from any threat. The Malware Scan is part of the automated DrivePulse utility. DrivePulse... Read more
MegaSeg 6.0.6 - Professional DJ and radi...
MegaSeg is a complete solution for pro audio/video DJ mixing, radio automation, and music scheduling with rock-solid performance and an easy-to-use design. Mix with visual waveforms and Magic... Read more
ffWorks 1.0.7 - Convert multimedia files...
ffWorks (was iFFmpeg), focused on simplicity, brings a fresh approach to the use of FFmpeg, allowing you to create ultra-high-quality movies without the need to write a single line of code on the... Read more
Dash 4.1.5 - Instant search and offline...
Dash is an API documentation browser and code snippet manager. Dash helps you store snippets of code, as well as instantly search and browse documentation for almost any API you might use (for a full... Read more
Evernote 7.0.3 - Create searchable notes...
Evernote allows you to easily capture information in any environment using whatever device or platform you find most convenient, and makes this information accessible and searchable at anytime, from... Read more
jAlbum Pro 15.3 - Organize your digital...
jAlbum Pro has all the features you love in jAlbum, but comes with a commercial license. You can create gorgeous custom photo galleries for the Web without writing a line of code! Beginner-friendly... Read more

Latest Forum Discussions

See All

Around the Empire: What have you missed...
Oh hi nice reader, and thanks for popping in to check out our weekly round-up of all the stuff that you might have missed across the Steel Media network. Yeah, that's right, it's a big ol' network. Obviously 148Apps is the best, but there are some... | Read more »
All the best games on sale for iPhone an...
It might not have been the greatest week for new releases on the App Store, but don't let that get you down, because there are some truly incredible games on sale for iPhone and iPad right now. Seriously, you could buy anything on this list and I... | Read more »
Everything You Need to Know About The Fo...
In just over a week, Epic Games has made a flurry of announcements. First, they revealed that Fortnite—their ultra-popular PUBG competitor—is coming to mobile. This was followed by brief sign-up period for interested beta testers before sending out... | Read more »
The best games that came out for iPhone...
It's not been the best week for games on the App Store. There are a few decent ones here and there, but nothing that's really going to make you throw down what you're doing and run to the nearest WiFi hotspot in order to download it. That's not to... | Read more »
Death Coming (Games)
Death Coming Device: iOS Universal Category: Games Price: $1.99, Version: (iTunes) Description: --- Background Story ---You Died. Pure and simple, but death was not the end. You have become an agent of Death: a... | Read more »
Hints, tips, and tricks for Empires and...
Empires and Puzzles is a slick match-stuff RPG that mixes in a bunch of city-building aspects to keep things fresh. And it's currently the Game of the Day over on the App Store. So, if you're picking it up for the first time today, we thought it'd... | Read more »
What You Need to Know About Sam Barlow’s...
Sam Barlow’s follow up to Her Story is #WarGames, an interactive video series that reimagines the 1983 film WarGames in a more present day context. It’s not exactly a game, but it’s definitely still interesting. Here are the top things you should... | Read more »
Pixel Plex Guide - How to Build Better T...
Pixel Plex is the latest city builder that has come to the App Store, and it takes a pretty different tact than the ones that came before it. Instead of being in charge of your own city by yourself, you have to work together with other players to... | Read more »
Fortnite Will Be Better Than PUBG on Mob...
Before last week, if you asked me which game I prefer between Fortnite Battle Royale and PlayerUnknown’s Battlegrounds (PUBG), I’d choose the latter just about 100% of the time. Now that we know that both games are primed to hit our mobile screens... | Read more »
Siege of Dragonspear (Games)
Siege of Dragonspear 2.5.12 Device: iOS Universal Category: Games Price: $9.99, Version: 2.5.12 (iTunes) Description: Experience the Siege of Dragonspear, an epic Baldur’s Gate tale, filled with with intrigue, magic, and monsters.... | Read more »

Price Scanner via

Sunday Sales: $200 off 13″ Touch Bar MacBook...
Amazon has new 2017 13″ 3.1GHz Touch Bar MacBook Pros on sale this weekend for $200 off MSRP, each including free shipping: – 13″ 3.1GHz/256GB Space Gray MacBook Pro (MPXV2LL/A): $1599.99 $200 off... Read more
B&H drops prices on 15″ MacBook Pros up t...
B&H Photo has dropped prices on new 2017 15″ MacBook Pros, now up to $300 off MSRP and matching Adorama’s price drop yesterday. Shipping is free, and B&H charges sales tax for NY & NJ... Read more
Apple restocks Certified Refurbished 2017 13″...
Apple has restocked Certified Refurbished 2017 13″ 2.3GHz MacBook Pros for $200-$230 off MSRP. A standard Apple one-year warranty is included with each MacBook, models receive new outer cases, and... Read more
13″ Space Gray Touch Bar MacBook Pros on sale...
Adorama has new 2017 13″ Space Gray Touch Bar MacBook Pros on sale for $150 off MSRP. Shipping is free, and Adorama charges sales tax in NY & NJ only: – 13″ 3.1GHz/256GB Space Gray MacBook Pro (... Read more
Best deal of the year on 15″ Apple MacBook Pr...
Adorama has New 2017 15″ MacBook Pros on sale for up to $300 off MSRP. Shipping is free, and Adorama charges sales tax in NJ and NY only: – 15″ 2.8GHz Touch Bar MacBook Pro Space Gray (MPTR2LL/A): $... Read more
Save $100-$150+ on 13″ Touch Bar MacBook Pros...
B&H Photo has 13″ Touch Bar MacBook Pros on sale for $100-$150 off MSRP. Shipping is free, and B&H charges sales tax for NY & NJ residents only: – 13″ 3.1GHz/256GB Space Gray MacBook Pro... Read more
Current deals on 27″ Apple iMacs, models up t...
B&H Photo has 27″ iMacs on sale for up to $150 off MSRP. Shipping is free, and B&H charges sales tax for NY & NJ residents only: – 27″ 3.8GHz iMac (MNED2LL/A): $2149 $150 off MSRP – 27″ 3... Read more
Thursday Deal: 13″ 2.3GHz MacBook Pro for $11...
B&H Photo has the 13″ 2.3GHz/128GB Space Gray MacBook Pro on sale for $100 off MSRP. Shipping is free, and B&H charges sales tax for NY & NJ residents only: – 13-inch 2.3GHz/128GB Space... Read more
How to save $100-$190 on 10″ & 12″ iPad P...
Apple is now offering Certified Refurbished 2017 10″ and 12″ iPad Pros for $100-$190 off MSRP, depending on the model. An Apple one-year warranty is included with each model, and shipping is free: –... Read more
Silver 12″ 1.3GHz MacBook on sale at B&H...
B&H Photo has the 2017 12″ 1.3GHz Silver MacBook on sale for $1399.99 including free shipping plus sales tax for NY & NJ residents only. Their price is $200 off MSRP, and it’s the lowest... Read more

Jobs Board

Firmware Engineer - *Apple* Accessories - A...
# Firmware Engineer - Apple Accessories Job Number: 113452350 Santa Clara Valley, California, United States Posted: 28-Feb-2018 Weekly Hours: 40.00 **Job Summary** Read more
Automation and Performance Engineer, *Apple*...
# Automation and Performance Engineer, Apple Pay Job Number: 113557967 Santa Clara Valley, California, United States Posted: 09-Mar-2018 Weekly Hours: 40.00 **Job Read more
Hardware Systems Architect - *Apple* Watch...
# Hardware Systems Architect - Apple Watch Job Number: 113565323 Santa Clara Valley, California, United States Posted: 05-Mar-2018 Weekly Hours: 40.00 **Job Read more
Lead *Apple* Solution Consultant - Apple (U...
# Lead Apple Solution Consultant Chicago IL Job Number: 113560644 Chicago, Illinois, United States Posted: 10-Mar-2018 Weekly Hours: 40.00 **Job Summary** As a Lead Read more
Art Director, *Apple* Music + Beats1 Market...
# Art Director, Apple Music + Beats1 Marketing Design Job Number: 113258081 Culver City, California, United States Posted: 07-Mar-2018 Weekly Hours: 40.00 **Job Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.