Sunday
Dec212014

Atari, E.T. and a dump: appreciating a programmer

Howard Scott Warshaw.  Sound familiar? Well, it will if you are into video game history or pop culture. See, Mr. Warshaw is often credited for the downfall of the video game business in the middle 1980’s.  Hard to believe that the video game industry nearly died in 1984, but, it is true. And Warshaw’s E.T. game is almost always given as the reason. Well, it simply isn’t true.

YarLet’s roll back to 1976 when the video game system, as we know it today, came about.  Fairchild introduced the Channel F, the first programmable home game console. It was very crude, had awful controllers and, the games? Well, most barely qualified for that moniker. But, it was new and very exciting.  RCA followed suit with its even worse Studio II. The Studio II, however, gained some popularity amongst computer hobbyists as you could easily make it do more than just play the cartridges.  Later, in 1977, Atari followed suit with its Video Computer System, or VCS.  The VCS, later known as the 2600, had better graphics, more colors, sound from the television and most importantly, more games.

Between 1977 and 1980, though, the home game market kind of languished. Initially, sales of the VCS were slow. It took the home game port of Space Invaders to start moving the system.  From then on, it was a huge success.  Others entered the market, like Intellivision and ColecoVision, but Atari remained king.

Atari’s work atmosphere was very laxed.  No dress code, no set hours to work, lots of parties and lots open use of drugs and alcohol. Somehow, it all seemed to work. Atari went on a hiring frenzy and, in a brilliant move, hired a young programmer named Howard Scott Warshaw.

Warshaw’s first assignment was a conversion of the arcade game, Star Castle. Realizing that a port was not feasible on the VCS, now called 2600, he convinced his management to let him take the best parts of the game and come up with something new.  Warshaw decided to come up with a backstory as well..a first for an original game.  So, not only did he succeed in developing a little game called Yar’s Revenge, he also set two precedents: the back story and the embedding of the programmer’s initials.  This had happened only once before, in the game Adventure, but Warshaw would continue it in all his games.

Yar’s Revenge became the first original game for Atari to sell more than one million units.  It was a bonafide hit.

Warshaw was asked to develop the game version of Raiders of the Lost Ark.  Again, when it was released, the game was a huge hit, selling over a million copies.  Warshaw was now a money machine.  Which is why his phone rang one day, a day that would, ultimately, lead to his leaving Atari and changing careers.

That phone call was the one asking to develop the concept and then code the home version of E.T., the Extraterrestrial.

Oh, he only had FIVE WEEKS to do it.

Holy tight timelines!

Well, he did it.  The game was given to Steven Spielberg for the final approval and, he liked it. Spielberg approved it and then went on television hyping the game.

Millions of the carts were produced.  Some say more E.T. carts were made than there were consoles.  Incredible.  Atari actually thought that more consoles would be sold because of this game.

They were wrong. Dead wrong.

Christmas rolls around and, yes, the game sold very well. However, something unexpected began to happen…people wanted to return it.  It was too difficult. It was unplayable. It sucked. 

Over the course of the next few months, Atari stock fell to a new low, Ray Kassar was forced out as CEO and, Warshaw left the company.  The home video game market was dead.  It only needed to be buried.

Well, it was buried, sort of.  Atari took a bunch of unsold stock, wrote it off and then buried it in a landfill in Alamogordo, New Mexico.  For thirty two years, this part of the story was legend: there was no proof, other than a generic looking photo taken on the day of the dumping.

In 2014, however, the loot was discovered and, yes, Atari had, in fact, buried a bunch of stuff, but not the millions of E.T. carts that were alleged. In fact, E.T. made up only 10 percent of what was found.

Warshaw was on hand for the digging.  Warshaw, now a psychoanalyst, commented that he was touched by all of it. Saying that something he did thirty plus years ago was still being discussed, brought up fond memories by some and elicited such frenzy, was, well, heartwarming.  I would agree.

The fact is that E.T. had little to do with the game industry downfall.  Sure, it did not help, but it certainly did not cause it.  The game was not great, but it was far from horrible.  Far from ‘the worst game ever.’ No, there are far more deserving games for that title, like Chase the Chuckwagon…which had more to do with the downfall than E.T.

And, Warshaw? I’d say he should go down as one of the most brilliant programmers of all time.  This man, who had two million plus games under his belt, did the impossible in FIVE WEEKS. From concept to completed game for what is, arguably, one of the most difficult platforms to program, was genius. 

Pure genius.

Sunday
Dec212014

Holiday Greetings from Half-Byte!

To celebrate the season, I give you  a little code snippet for Half-Byte Tiny Basic:WP_20141221_13_57_19_Pro
100 CLS
110 LINE 40,2,20,22,1
120 LINE 40,2,60,22,1
130 LINE 20,22,60,22,1
140 BOX 38,22,4,2,1
150 SET 40,1
160 SET 38,10
170 SET 30,15
180 SET 45,17
190 SET 24,18
200 SET 48,19
210 SET 36,12
220 SET 32,16: RESET 37,14
230 DELAY 1000
240 # Seasons Greetings!
250 CURSOR 8,5
260 PRINT "Merry"
270 CURSOR 6,6
280 PRINT "Christmas!"
290 DELAY 1000
300 RESET 45,17
310 RESET 38,15
320 RESET 36,12
330 SET 37,14
340 SCROLL "Merry Christmas!        "
350 DELAY 1000
500 GOTO  100

WP_20141221_13_49_32_Pro

NOTE: remove line 340 if you do not have Half-Byte Tiny Basic V2.2.

Wednesday
Nov262014

It’s here! Half-Byte Tiny Basic 2 for Arduino and compatibles

It’s back! Better than ever. Yes, that’s right, Half-Byte Tiny Basic 2 for Arduino.  The first was so good, there just had to be a follow up.  And this version has even more fun stuff like new graphics functionality like ARC and CROSSHAIRS.  New math in SIN and COS.  Enhanced LIST statement and more.  Read on for more on the new goodies.

Tiny Basic weather?

WP_20140826_22_20_46_ProWell, yes and no. Yes in that support for the DHT-11 temperature and humidity sensor has been included. No, it won’t generate satellite images or predict snow storms. But, if you have a project where you need to capture the temperature and/or humidity, this will work.  Temperature is returned in either Celsius or Fahrenheit.  TEMP( 0 ) will return the temperature in Celsius and TEMP( 1 ) will return it in Fahrenheit. HUMIDITY with any value parameter will return the relative humidity.

EXAMPLE:

100 CLS
110 PRINT “Temperature: “, TEMP( 0 ),”C”
120 PRINT “Relative Humidity: “,HUMIDITY( 0 ),”%”
130 DELAY 4000
140 GOTO 100

New Graphics Functions

POLY

Poly will draw an abnormal circle. It is abnormal because the sides will not be ‘normal’. They will be straight lines IF the radius is small. As the radius gets larger, the circle looks more normal, then it begins to ‘explode’. Poly gives nice random like patterns or explosions for games.

POLY start_x, start_y, radius, points, color
Where start_x and start_y are the screen position to draw the poly;
Radius is width of the circle;
Points is the size of the ‘sides’ of the circle;
Color is black or white
100 CLS: CENTER: PRINT “EXPLODING”
110 R=RND(20): P=RND(15)
120 POLY 40,20,R,P,1
130 DELAY 100
150 POLY 40,20,R,P,0
160 DELAY 100
170 GOTO 110

 

INVERT

One thing you can do to get a user’s attention is to flash the screen. Tiny Basic allows you to do this quickly, by using the INVERT statement. It takes no parameters and its syntax is simply:

INVERT
100 CLS
110 CURSOR 3,2
120 PRINT “TO CONTINUE WITH”
130 CURSOR 3,3
140 PRINT “PROCESSING, PRESS C”;
150 A=INKEY(0)
160 IF A=67 GOTO 210
170 INVERT
180 DELAY 500
190 GOTO 150

210 #CONTINUE…

Starting at line 150, we wait for a key to be pressed. If it is C, goto 210 else, we invert the screen, wait a half second and do it again. If there is no delay, the screen would be just obnoxious. Inserting a delay slows it down a bit.

 

CROSSHAIRS

Crosshairs draws a graphical ‘t’ on screen. The ‘t’ can be controlled to be tight and small or apart and big. This is useful for creating crosshairs on screen for shoot them up game, driving game or some other type of game. Or, use it for art.

 

ARC

ARC draws a partial circle, a PIE piece.
ARC has eight parameters:
Start x, start y, radius, angle, end radius, color, pie, fill
Start x and y are center point
Radius is just that
Angle is the angle of the arc
End radius is the end point
Color is 0 or 1 for black or white
Pie is 0 or 1
Fill is 0 or 1 and will fill the arc or leave it open

WP_20140930_22_18_20_Pro

CENTER

CENTER will start PRINTing at the center point of a line

LIST

The LIST statement has been enhanced.  You can now list a single line, five lines or the entire program.

LIST by itself lists the whole program
LIST number- will list the program starting at number and go for five lines
LIST number. will list just that line.

MATH

COSine and SINe have been added.

a=COS( x )
b=SIN( y )
The functions were contributed by reader Jim F - Calgary Alberta Canada , thanks Jim!

OTHER STUFF

The overall interpreter is a bit speedier as there have been some optimizations and I was able to cut a lot of redundant code out. Because the functions added some RAM overhead, I lost about 30 bytes, so usable memory is around 970 or so bytes.  This is plenty for small games, control applications and for learning. It is also enough for great demos too.  If you use this on a Mega, then you will have a lot more memory. Just remember, you will need to change the pins used at the top of the code (for nunchuck, TV OUT, sound and the DHT-11 if you use that.)

To run Tiny Basic on your Arduino, download the package below. Put the Half-Byte Tiny Basic files in your Arduino directory. The TV OUT and DHT-11 libraries need to be imported into your IDE. Please follow the procedure for importing libraries. The Fonts need to go in the the TVOut font directory.  Next, open the Half-Byte Tiny Basic in your IDE and then compile and upload to your Arduino.

DOWNLOAD IT

You can download all files to install Tiny Basic 2 on your Arduino here. Tiny Basic 2  manual is here.

101_3353

Wednesday
Nov262014

It’s here! Half-Byte Tiny Basic 2 for Arduino and compatibles

It’s back! Better than ever. Yes, that’s right, Half-Byte Tiny Basic 2 for Arduino.  The first was so good, there just had to be a follow up.  And this version has even more fun stuff like new graphics functionality like ARC and CROSSHAIRS.  New math in SIN and COS.  Enhanced LIST statement and more.  Read on for more on the new goodies.

Tiny Basic weather?

WP_20140826_22_20_46_ProWell, yes and no. Yes in that support for the DHT-11 temperature and humidity sensor has been included. No, it won’t generate satellite images or predict snow storms. But, if you have a project where you need to capture the temperature and/or humidity, this will work.  Temperature is returned in either Celsius or Fahrenheit.  TEMP( 0 ) will return the temperature in Celsius and TEMP( 1 ) will return it in Fahrenheit. HUMIDITY with any value parameter will return the relative humidity.

EXAMPLE:

100 CLS
110 PRINT “Temperature: “, TEMP( 0 ),”C”
120 PRINT “Relative Humidity: “,HUMIDITY( 0 ),”%”
130 DELAY 4000
140 GOTO 100

New Graphics Functions

POLY

Poly will draw an abnormal circle. It is abnormal because the sides will not be ‘normal’. They will be straight lines IF the radius is small. As the radius gets larger, the circle looks more normal, then it begins to ‘explode’. Poly gives nice random like patterns or explosions for games.

POLY start_x, start_y, radius, points, color
Where start_x and start_y are the screen position to draw the poly;
Radius is width of the circle;
Points is the size of the ‘sides’ of the circle;
Color is black or white
100 CLS: CENTER: PRINT “EXPLODING”
110 R=RND(20): P=RND(15)
120 POLY 40,20,R,P,1
130 DELAY 100
150 POLY 40,20,R,P,0
160 DELAY 100
170 GOTO 110

 

INVERT

One thing you can do to get a user’s attention is to flash the screen. Tiny Basic allows you to do this quickly, by using the INVERT statement. It takes no parameters and its syntax is simply:

INVERT
100 CLS
110 CURSOR 3,2
120 PRINT “TO CONTINUE WITH”
130 CURSOR 3,3
140 PRINT “PROCESSING, PRESS C”;
150 A=INKEY(0)
160 IF A=67 GOTO 210
170 INVERT
180 DELAY 500
190 GOTO 150

210 #CONTINUE…

Starting at line 150, we wait for a key to be pressed. If it is C, goto 210 else, we invert the screen, wait a half second and do it again. If there is no delay, the screen would be just obnoxious. Inserting a delay slows it down a bit.

 

CROSSHAIRS

Crosshairs draws a graphical ‘t’ on screen. The ‘t’ can be controlled to be tight and small or apart and big. This is useful for creating crosshairs on screen for shoot them up game, driving game or some other type of game. Or, use it for art.

 

ARC

ARC draws a partial circle, a PIE piece.
ARC has eight parameters:
Start x, start y, radius, angle, end radius, color, pie, fill
Start x and y are center point
Radius is just that
Angle is the angle of the arc
End radius is the end point
Color is 0 or 1 for black or white
Pie is 0 or 1
Fill is 0 or 1 and will fill the arc or leave it open

WP_20140930_22_18_20_Pro

CENTER

CENTER will start PRINTing at the center point of a line

LIST

The LIST statement has been enhanced.  You can now list a single line, five lines or the entire program.

LIST by itself lists the whole program
LIST number- will list the program starting at number and go for five lines
LIST number. will list just that line.

OTHER STUFF

The overall interpreter is a bit speedier as there have been some optimizations and I was able to cut a lot of redundant code out. Because the functions added some RAM overhead, I lost about 30 bytes, so usable memory is around 970 or so bytes.  This is plenty for small games, control applications and for learning. It is also enough for great demos too.  If you use this on a Mega, then you will have a lot more memory. Just remember, you will need to change the pins used at the top of the code (for nunchuck, TV OUT, sound and the DHT-11 if you use that.)

To run Tiny Basic on your Arduino, download the package below. Put the Half-Byte Tiny Basic files in your Arduino directory. The TV OUT and DHT-11 libraries need to be imported into your IDE. Please follow the procedure for importing libraries. The Fonts need to go in the the TVOut font directory.  Next, open the Half-Byte Tiny Basic in your IDE and then compile and upload to your Arduino.

DOWNLOAD IT

You can download all files to install Tiny Basic 2 on your Arduino here. Tiny Basic 2  manual is here.

101_3353

Monday
Oct272014

Using a knock-off 232 to USB converter? Better check that chip!

WP_20140705_010FTDI recently submitted a couple of drivers to Microsoft for automatic update via Microsoft’s Windows update feature.  The drivers work well, IF you are using a USB to RS232 converter that uses FTDI’s chip. If, however, you are using a ‘knock-off’ or a clone chip, these drivers will render them useless. 

The drivers reprogram the PID to all zero’s and cause the devices using the cloned chip to appear as something other than an FTDI to the drivers.  This makes them useless, even if used with older drivers or Linux.

FTDI has long been battling these cloned chips and this is the latest salvo. Previously, they just would not work with Windows 8.x if you used an 8.x driver. The 7.x drivers worked great under Windows 8.x and still do.  Though, I think I have a converter using one of the cloned chips and Windows did, in fact, update that driver. Now, however, that particular device does not work with the old driver.

There is a recovery tool, available from FTDI, that fixes the issue, but if a newer driver is used again, you will have the same problem.

Microsoft reached out to FTDI and the drivers in question have been removed from Windows Update.

 

Thanks to reader Thomas Foster for bringing this to my attention.