Microsoft Releases The Source Code You Wanted Almost 30 Years Ago

In the late 1970s and early 1980s, if you had a personal computer there was a fair chance it either booted into some version of Microsoft Basic or you could load and run Basic. There were other versions, of course, especially for very small computers, but the gold standard for home computer Basic was Microsoft’s version, known then as GW-Basic. Now you can get the once-coveted Microsoft Basic source code for the 8086/8088 directly from Microsoft in the state you would have found it in 1983. They put up a read only GW-BASIC repository, presumably to stop a flood of feature requests for GPU acceleration.

You might wonder why they would do this? It is certainly educational, especially if you are interested in assembly language. For historical reasons, you might want to get a copy you could modify, too, for your latest retrocomputer project.

There are a few tidbits of interest. Some of the source is marked that it was translated. Apparently, Microsoft had a master implementation for some processor — real or imagined — and could translate from that code to 8088, Z-80, 6502, or any other processor they wanted to target.

From what we understand, GW-Basic was identical to IBM’s BASICA, but didn’t require certain IBM PC ROMs to operate. Of course, BASICA, itself, came from MBASIC, Microsoft’s CP/M language that originated with Altair Basic. A long lineage that influenced personal computers for many years. On a side note, there’s debate on what the GW stands for. Gee-Whiz is a popular vote, but it could stand for ‘Gates, William’, Greg Whitten (an early Microsoft employee), or Gates-Whitten. The source code doesn’t appear to answer that question.

We did enjoy the 1975 copyright message, though:

ORIGINALLY WRITTEN ON THE PDP-10 FROM
FEBRUARY 9 TO APRIL 9 1975

BILL GATES WROTE A LOT OF STUFF.
PAUL ALLEN WROTE A LOT OF OTHER STUFF AND FAST CODE.
MONTE DAVIDOFF WROTE THE MATH PACKAGE (F4I.MAC).

It wasn’t long ago that Microsoft released some old versions of MSDOS. If you have the urge to write some Basic, you might pass on GW-Basic and try QB64, instead.

GW-Basic Disk and Manual photo by [Palatinatian] CC-SA-4.0.

Riding Shotgun In The Apollo 12 Lunar Lander

Last week we had a walk through of the Lunar Module’s source code with Don Eyles, who wrote the landing programs. Now you can take a rather thrilling ride to see Don’s code in action.

Below is an annotated video of the Apollo 12 landing, in real-time. It’s worth setting aside a quarter-hour to check it out. In an age where everyone is carrying around an HD (or way better) camera in their pocket, following along with radio broadcasts, still images, and small slivers of video might not sound that awesome. But it is!

p63-apollo-12-codeThe video takes us from Powered Descent Initiation through touchdown on the Moon with Pete Conrad and Alan Bean. As the audio plays out the video has annotations which explain what is going on and that translate the jargon used by the team. With the recently celebrated push to publish the source code you can even follow along as the video displays which program is running at that time. Just search for the program code and you’ll find it, like this screenshot of the P63 routine. The code comments are more than enough to get the gist of it all.

If you enjoy this, the description of the YouTube video below includes links to similar videos for Apollo 11, 14, 15, 16, and 17.

http://www.youtube.com/watch?v=8WEEFHJsZ0k

[Thanks to Paul Becker for sending along this video]

Hackaday Links: January 26, 2014

hackaday-links-chain

The automotive industry is rolling more and more tech into their offerings. This is great for us because replacement or salvaged parts are great for projects. Here’s one component to look for. [MikesElectricStuff] tears apart the thermal imaging camera form an Audi. [via Hacked Gadgets]

Give your valentine an analog love note on the big day. [Tom’s] LED heart chaser design does it without any coding. It’s a 555 timer with CD4017 decade counter. The nice thing about the setup is a trimpot adjusts the chaser speed.

[Jan] is overclocking his Arduino to 32 MHz. For us that’s kind of an “eh” sort of thing. But his statement that you need to use a clock generator because the chip won’t work with an oscillator at that frequency raised an eyebrow. We saw an AVR chip running from a 32MHz crystal oscillator in the RetroWiz project from yesterday. So do we have it wrong or does [Jan]? Share your opinion in the comments.

Download a copy of the Apple II DOS source code… legally. Yay for releasing old code into the wild! The Computer History Museum has the DOS source code and a bunch of interesting history about it. [via Dangerous Prototypes]

While we were prowling around DP for the last link we came across [Ian’s] post on a new version of Bus Pirate cables. We’ve got the old rainbow cables which are pretty convenient. But if you’ve used them you’ll agree, hunting for the correct color for each connection isn’t anywhere near a fool-proof method. The new cable uses shrink tube printed with probe labels. They sound like a huge pain to manufacture. But this makes connections a lot easier. In our experience, when it doesn’t work its always a hardware problem! Hopefully this will mean fewer botched connections.

Make your tiny LiPo cells last longer. Not capacity wise, but physically. The delicate connections to the monitor PCB break easily, and the plug is really hard to connect and disconnect. [Sean] shows how he uses electrical tape for strain relief, and a bit of filing to loosen up the connector.

KerbalEdu: Kerbal Space Program for education. That’s right, you can play Kerbal as part of school now. Some may shake their heads at this, but school should be fun. And done right, we think gaming is a perfect way to educate. These initiatives must be the precursor to A Young Lady’s Illustrated Primer method of education. Right?

Original Prince Of Persia Game Source Code Released

The game that launched a multi-billion dollar franchise is now laid bare for your hacking pleasure. [Jordan Mechner] just posted the once-lost source code for Prince of Persia. This game was ground-breaking for its use of rotoscoping to mimic the movements of an actor (in this case it was his younger brother). Oh, and it’s a ton of fun to play.

This comes at an appropriate time since yesterday was the the 35th anniversary of the Apple II release. PoP was written for that platform but should be easy to get running on an emulator if you’re just interested in cloning the repository so that you can play it through once again. Interestingly enough, the source code went missing for many years. [Jordan’s] been looking for the original source code for a decade. Turns out his Dad came across a cardboard box with some original copies of the game in it and shipped it off for [Jordan] to take care of. Inside was a set of 3.5″ disks that are pure retro gold.

So here’s your chance to inject yourself into the game. The question is, will you be the Prince or will you be Jaffar?

Storing Sketches In The Cloud

There’s a fine line between solving problems that don’t exist and solving problems that no one recognizes until a solution is found. The former shows up with housewares peddled on late-night infomercials, while the latter is summed up by [Henry Ford], “If I asked people what they wanted, they would have said faster horses.” [Dave]’s method of storing microcontroller code in the cloud definitely falls into the ‘useful’ category.

[Dave] first realized the problem when he was digging around the IDEO Toy Lab and came across an orphan project, a Barbie credit card swiper. [Dave] had no idea if the firmware for this project was saved on the server, or even if the current version was available. One solution to this problem could be burning a copy of the source onto the Flash or EEPROM on the board.

There’s a problem with this idea, though: storing the source in an Arduino’s memory takes space. Thinking laterally, [Dave] realized that editing source happens on a computer, computers are connected to the Internet, so why not keep the source “in the cloud?”

[Dave]’s solution is to host the source on GitHub, and tie every piece of code to a board’s unique USB serial number. This gives every Arduno a unique ID, allows for version control, and libraries of multiple files.

This very clever addition to the Arduino IDE is up on GitHub, ready to be added to any Arduino installation. Why the Arduino IDE doesn’t already have this feature is beyond us, but that’s what you get when you want a faster horse.

Android Source Code Released

[youtube=http://www.youtube.com/watch?v=7Y4thikv-OM&fmt=18]

Google has officially released the Android source code. While the T-Mobile G1 is being released tomorrow—some already have it—it is just one Android device. The availability of the source means that the platform could be port to almost any device. It’s a complete embedded Linux package and we’ve already seen it running on the N810. We can’t wait to see what hacks come out of this.