Or almost, at least. (Maybe if I get the wireless network adapter for the Gameboy. (I may port Parrot to the Gameboy, too--it's got the power and enough memory, and I've a Gameboy emulator for OS X. Maybe on the plane to NordU) Which, interestingly, would make it worthy of the name server, as it's got a 33MHz processor and at least 32M of RAM, which makes it more powerful than the PDP 11/73 server box I did a lot of work on in ages past. And more powerful than the DG/UX box that replaced it, though the Gameboy has no external storage. But I digress) At the moment I'm sitting here in a coffee shop working on, well, work. The always-interesting1 work project, a combo compiler and runtime library for DecisionPlus, an antique "4GL" that has more than a passing resemblance to PIR except that PIR's a bit higher level in spots. (It has functions) In a terminal window I'm waiting on a rebuild of Postgres 7.4, since I forgot to build the perl and python extensions. (Rendezvous and SSL are being built in too, since I'm at it) I've also rebuild parrot from the latest CVS sources, and I've got a working set of runtime libraries for at least low-level access to Postgres and ncurses, with some higher-level wrappers around ncurses.
This is where we cue the old fogey moment. I'm sitting here working on a machine that would blow the doors off anything that I'd used for a good portion of my life (including the System/390 machine that UConn had as its primary CS training machine, though I'd bet it had better IO throughput). A machine that I sometimes grumble about because it's too damn slow. (Which it is, in part because the frontside bus only runs at 100MHz, (Only!) but mainly because laptop hard drives are slow to conserve power)
But... I've a full build of Postgres, and sufficient disk space to hold the entire work database. I've all the compilers and runtile libraries I need to develop new code--hell, I've got enough power handy, and all the resources I need, to completely develop the system I'm working on. Hell, I've got enough power in this little thing to run the entire company, albeit somewhat slowly.
There's just something somewhat surreal about that.
1 Granted, sometimes for very small values of interesting...
I'm not entirely sure about what you meant when you mentioned a 33MHz CPU and 32 megs of RAM, but later on you mentioned that the Gameboy has no external storage, so I'm assuming that the aforementioned assertions were made about the same system. Apologies in advance if this is incorrect.
The GameBoy Advance actually has an ARM7TDMI chip running at 16.78MHz, and it contains 384k of RAM - 256k general-purpose, 32k fast "internal", and 96k video RAM. Although cartridges are addressed as extensions to RAM, only the largest games top out at 32 megabytes (though some 512 megabit hobbyist cartridges do exist; if I recall correctly, they rely on bank-switching techniques).
In terms of storage, the GBA itself can, surprisingly, write to flash carts, though quite slowly. The hardware can also deal with the dynamic switching of carts while the machine is still running, though so far I know of no commercial or homebrew code beyond a proof-of-concept exists which leverages this ability; this could conceivably be used to implement some form of persistent store. If large-scale storage is entirely necessary, a little hardware hackery can provide a full ATAPI interface: http://www.gbacd.tk/
Then there's the input problem. Select-and-advance D-pad systems are traditional in commercial games for name entry and the like, but they're simply impractical for any kind of extended input (modulo some highly effective text prediction; then again, this system could likewise accelerate other, inherently more efficient, input methods). GBAFrotz (http://www.obsession.se/frotz/) uses an interesting order-dependent chording system; DanTE Advance (http://digilander.libero.it/franapoli/keyboardadvance/) uses temporal rather than spatial chording: multiple keypresses descend the possibility tree until the only remaining path is a leaf. Then there's Timmy "AmPz" Brolin's Keyboard Advance (http://www.hh.se/stud/d99tibr/index5.html), a hardware hack to connect a cellular chatboard to the GBA serial link port. The GameBoy Color had many more interface hacks, presumably because its link cable ran at 5V instead of the GBA 3.3V standard, making it far easier to communicate via RS-232 and AT-style keyboard protocols (see http://www.geocities.com/kkaarvik/gameboy.html for some few details).
If you just want the right to brag that you've got a server in your pocket, though, all you need is a $20 MBV2 cable and a copy of Adrian O'Grady's GBA httpd (http://www.fivemouse.com/gba/).
I hope you plan to port Parrot to the GBA, as it would make a fascinating case study. In passing, another popular virtual machine is already running on that platform, though it uses the actual GameBoy as more of an interface than a true host system: http://www.onjava.com/pub/a/onjava/2003/08/06/jblazer_interview.html
Posted by: Gnomon at December 23, 2003 04:58 PMD'oh! I really bobbled the specs on the Gameboy Advance there. Guess the old PDP-11/73 was more powerful, though at 256K there's still more directly accessible memory without playing overlay games. Still, it'd be interesting to get the thing going right.
I do fully intend to port Parrot over to it, though the difficulties involved in actually doing text input means that Parrot'd have to live in the ROM cartridge and execute pre-compiled bytecode from either ROM or RAM, which ought to work out just fine.
Posted by: Dan at December 23, 2003 05:30 PM