chester's blog

technology, travel, comics, books, math, web, software and random thoughts

It was easy to plug this Atari in...

22 Oct 2014

I just had to:

  • Connect the Atari antenna output to a Coaxial (F-type) to Female RCA adapter;
  • Plug that in the antenna input of a the VCR;
  • Use 3 RCA cables to feed the VCR A/V output into an AV-to-HDMI adapter;
  • Connect the adapter HDMI output to the monitor;
  • Configure the Atari to the “Channel 3” position;
  • Select channel 3 on the VCR.

Easy, right? :-P Now I can play my homebrew (2048 2600) on the real thing.

By the way, if you want to buy a physical 2048 2600 cart, Good Deal Games sells them. I have no participation in that (other than coding the open-source game and pestering Jenn Harrison into drawing the cool cartridge front art), but I’m really happy to have my game on a real cart!

Space Nutrients Station 100%FOOD (meal replacement)

11 Oct 2014

I got pretty excited when I first read about Soylent. Don’t get me wrong: I do like food (otherwise I’d not need to track everything I eat to mantain my weight), and I also understand its social aspect. But having to decide what to eat, preparing/going after it burns a time I’d rather spend on more fun things.

Unfortunately, Soylent doesn’t deliver in Canada (yet). But I found an alternative in Space Nutrients Station 100% Food. It is a mix of different foods that, just like its creppy-sci-fi-named competitor, claims to offer all the nutrients you need on a single meal. After a quick exchange of emails, I purchased an 8-bottle sampler kit with PayPal and had it here in about a week.

Building bash from source (Shellshock mitigation for Ubuntu 13.04 and other unsupported distros)

25 Sep 2014

Shellshock is a serious server security issue that was made public yesterday. The best fix is to apply security updates from your Linux distribution, as they become available.

If that is not possible for any reason (e.g., unsupported distros, like the Ubuntu 13.04 boxes we have not killed yet), you will need to compile bash from the source (including all the patches) - which may be confusing if you are not used to build C/C++ software “by hand”.

There are some scripts that compile and install a new bash (like shellshocker.net’s curl https://shellshocker.net/fixbash | sh), but they assume you are ok with the latest bash version (4.3), and I needed to stay with 4.2. Here is how I did it:

Connecting a PC (DB15) Gamepad to a Raspberry Pi

17 Aug 2014

A Hack is Born

You never know what you’ll find at Active Surplus - a must-go Mecca for electronics enthusiasts in Toronto (pics). Last week, I stumbled upon a box full of PC gamepads - at $2.50 each!

They used an old connector (see below) that would require an USB adapter, but I had a better idea: connecting them to a Raspberry Pi. Bought one (discounted to $2) and hacking ensued.

Canada Day Comics

01 Jul 2014

CC-BY Curly TurkeyAn untrained observer would infer I’d spend this Canada Day lazily reading comics. That isn’t true: to honor the spirit of the day, I’ve been lazily reading Canada-related comic books (by author or subject).

Having already read everything from Alpha Flight on Marvel Unlimited, I’ve started with Sam Logan’s Sam and Fuzzy (one of my favorite webcomics of all time) and two Ty Templeton works: the latest Batman’66 meets The Green Hornet (a team-up brought by a team-up with Kevin Smith and Ralph Garman) and The Northern Guard.

The biggest surprise, however, was Archie Goes to Canada: it collects stories from multiple periods that are not (much) stereotypical, and even doubles as a cultural/travel guide of sorts.

But my day wont’t be just comics: there is also the Captain Canuck animated series, available online for free. It is modern-looking and (judging by a peek) very action-oriented, so I expect a very un-canadian punch-to-apology ratio. Anyway, it’s the red-and-white that counts, so…. Happy Canada Day!

BONUS: Alpha Flight cameo in 90s X-Men: The Animated Series

Netflix Brazil dribbles FIFA with a word game

01 Jun 2014

In Portuguese, the word “copa” isn’t just a reference to the FIFA World Cup, or any generic cup. It is also often used to designate a pantry, or a small dining room inside a kitchen - some people even use the term interchangeably with “cozinha”, the word for “kitchen”.

Netflix Brazil used this in a smart commercial that dribbles FIFA’s Orwellian (and borderline unconstitutional) countrywide media ban on expressions (which includes things like “Christmas 2014”). The spot showcases the freedom of not watching any important soccer match (a non-trivial luxury in Brazil, trust me) by playing entirely as a double entendre. Here is a rough translation:

Guy: “You know what? I’m gonna watch Netflix on the [copa].” (grabs a tablet)

Girl: “Oh, you and this [copa], [copa], ewww.”

Guy 2: “Yeah, why not on the living room?”

Guy 3: “…or the office, the bedroom, the porch…”

Guy (walking to the “copa”): “I watch Netflix WHEREVER I WANT. And I want it ON THE [copa].”

Guy 2: “So I can watch movies… on the [copa]?”

Guy 3: “…pausing and returning on the [copa]?”

Guy 4: “Watch exclusive series… on the [copa]?”

Guy: “See? Netflix changes everything!”

Narrator: “Netflix on the [copa]? Why not? Movies and series for you to watch whenever and however you want. Subscribe now.”

Halt and Catch Fire: a series premiere with a huge IBM PC blunder

28 May 2014

Just watched AMC’s first episode of Halt and Catch Fire - a TV show that about a hyper-stereotyped bunch (chrarming entrepreneur, family-man engineer and punk-girl hacker) facing “big corps” of the early 80s. And they start by challenging no one less than IBM, so I had to check it out.

Every fiction piece about computers has one innacuracy or another, and I usually just eat my popcorn and enjoy the show. But this one had an issue too close to home to be ignored. And it started with a good idea: they borrowed the plot from Phoenix Technologies’ cloning of the IBM PC BIOS, which I’d summarize like this:

In order to run software made for the IBM PC, a computer would need a piece of software knonw as the BIOS. It was inside every IBM computer, but was dutifully copyrighted. Copying or mimicking it directly would likely result in legal action, but Phoenix got over that (and sold their version to several IBM PC clone manufacturers) by having two teams on the job: one studied the code and wrote specifications on how it worked, and another created a new BIOS only from reading such specifications, making it a “clean room” reverse engineering.

The episode puts the hacker girl in the role of the second team, while the engineer guy replaces the first (helped by the entrepreneur). Also, his task was simplified into just generating a printout of the BIOS that the girl would recreate. Things were fine up to this point, but the male duo would accomplish the task in the most complicated way possible: they hooked the guts of the computer to a LED panel, which would show a binary representation of the codes, one digit at a time. Then they would write each one on a block of paper and then type it all (into the reassembled PC or another computer, not sure), and finally print it all out!

Heck, I understand the need for dramatizing the effort. And I also wasn’t for sure the genius computer designer this engineer is supposed to be, but if you asked me how to do that in the IBM PC era, I would likely just suggest typing these two commands:

debug
d f000:0000

The first line calls debug, the monitor/assembler/disassembler tool that came with DOS since verison 1.0. The second one (typed under debug’s - prompt) will dump (d) the contents of the first 128 bytes of the PC-BIOS. It will even print the characters that match each code (revealing some of the messages printed when you turned the computer on), and typing d again will reveal the next batch of 128 bytes, again and again. Attach a printer and you are done.

But don’t take my word for it: go to James Friend’s nice PC emulator page (based on PCE) and try the commands yourself (the page actually emulates a slightly more modern computer, but it boots in the IBM-PC-like “real mode”). You will get a result like this:

Some people may argue they could not know the location (F000:0000) without Google, but the IBM PC technical manual (PDF) that came with it tells you on page 1-12 that it’s located at F0000 (an absolute 80861 address that can be referred to as F000:0000). Even if IBM had hidden it, the Intel 8086 manual (PDF) reveals (in page 2-29, table 2-4) that the processor boots at the FFFF:0000 address (CS:Instruction Pointer). Typing u FFFF:0000 on debug would reveal the first instruction ran is a JMP to the beginning of the BIOS code (just after a few header bytes), and one would reasonably dump from it until the end of memory, which would match the ROM chip capacity (which was also public information).

But wait, there is more: if they had really bothered reading the aforementioned PC manual, they could have saved some ink and paper. Appendix A contains the fully disassembled BIOS code - meaning those guys spend a whole weekend printing something that was already on the box, in an easier to read format. Geniuses.

Having that out of my chest, I can focus on the episode itself: it was ok-ish. I may check future ones if they appear on the website/over-the-air/Netflix/whatever, but I’m not really holding my breath.

  1. As pointed by Clonejay, the IBM PC actually had an 8088 processor. Programmers (including myself) tend to refer to it as 8086 because software-wise, they were identical. The 8088 had a smaller data bus, compatible with cheaper-but-slower RAM chips). You won’t find much 8088-specific documentation, so I’ll keep the text as-is. 

2048 2600: The 2048 game for the Atari 2600

25 Mar 2014

As everyone else on the planet, I got hooked on 2048 and amazed by the variants that sprouted. Its simple rules and graphics are one distinctive characteristic. “It’s so simple”, I thought, “that it really could have been done on an Atari”. And once you have such an idea…

That’s right: this is a version of 2048 for the Atari 2600! It took me about 16 hours of work to get to a playable prototype, and about 50 hours for the final version, spread over a couple weekends and nights during which I was refining the core game and squeezing features like sound, two-player mode, and a high score.

During this period it briefly made the front page of Hacker News, received lots of great feedback on Atari Age and RVG, and got a couple of contributions (bug fix, PAL support). The 2048 source was also helpful - even though I had to rethink the whole shifting/merging strategy, it provided a nice foundation with very readable code.

The project page has all the instructions and files you need to run it on an emulator, on a real console or even in your browser. The remainder of this post shows some technical notes (which can also be found at the main assembly source file).

Running ruby2600 in a browser with Opal

16 Feb 2014

ruby2600

Last year I challenged myself into writing an Atari 2600 emulator using Ruby in time to present it at RubyConfBr 2013 - thus ruby2600 was born. When I found Opal, a Ruby-to-JavaScript compiler, I felt it might be fun to run the emulator on a browser.

It runs even slower than in MRI and is far from polished, but works. To watch it, just click the button below and wait until the black lines get replaced by Pitfall Harry slooooowly running to the left (sorry, no key bindings for now).

Keep reading if you want the gory technical details!