Java Byte Code, Ahead Of Time Compilers, And A TI-99

Java famously runs on billions of devices, including workstations, desktops, tablets, supercomputers, and jewelry. Yes, jewelry. Look it up. [Michael] realized Java doesn’t run on Commodore 64s, TI-99s, and a whole bunch of other platforms. Not anymore.

Last year, [Michael] wrote Java Grinder, a Java byte-code compiler that compiles classes into assembly language instead of being part of a JVM. This effectively turns Java from a Just In Time compiled language to a normally compiled language, like C. He wrote this for the 6502/6510, the MSP430, and a Z80. The CPU in the TI-99/4A is a weird beast, though, and finally [Michael] turned this Java Grinder on that CPU, the TMS9900.

While most of the development was accomplished with the MESS emulator, [Michael] did manage to run Java on real hardware. His friend gave him a TI-99/4A a few years ago with a few cartridges. Cracking those cartridges open revealed one PCB that would hold an EEPROM. Writing his Java byte-code-derived assembly to a 28c64 EEPROM, he had a cartridge that would run compiled Java.

Right now, the demo is pretty simple with low-resolution graphics beeps and bloops of music, and generally not what you would expect from a TI/99. This is mostly due to the fact that the API for the TI-99 is extremely simple. You can check out the results of that programming endeavor below.

Continue reading “Java Byte Code, Ahead Of Time Compilers, And A TI-99”

Altair 8800 Front Panel For An 8080 Emulator

It appears a very important anniversary passed by recently without anyone realizing. The January 1975 issue of Popular Electronics featured the Altair 8800 on the cover, otherwise known as the blinky box that launched a revolution, the machine that made Microsoft a software powerhouse, and the progenitor of the S-100 bus. The 40-year anniversary of the Altair wasn’t forgotten by [dankar], who built a front panel emulator with the help of some much more modern components.

The build unofficially began with an Intel 8080 emulator written for an Arduino. The 8080 is the brains of the Altair, and while emulators are cool, they don’t have the nerd cred of a panel of switches and LEDs. The hardware began as a bunch of perfboard, but [dankar] wired himself into a corner and decided to make a real schematic and PCB in KiCAD.

Despite the banks of LEDs and switches, there really isn’t much to this front panel. Everything is controlled by shift registers, but there is a small amount of SRAM in the form of an SPI-capable 23LC1024. This comes in handy, because [dankar] is running CP/M 2.2 on this front panel emulator from disk images saved on an SD card. Everything you would want from a computer from 1975 is there; an OS, BASIC, and enough I/O to attach some peripherals.

A VU-meter Indicator For A Commodore 1530 Datasette

For present-day owners of vintage Commodore computers, keeping data and programs safe and backed up is top priority. Disk drive storage was more common in the US, whereas in Europe, the audio cassette was the preferred medium of storage.

The Datasette device was what allowed interfacing the cassettes to the computer. Tape head alignment was critical to successfully writing and reading data to the cassette. Some models of the Datasette came with a small hole above the keys, to allow access to the adjustment screw of the tape head azimuth position. Tweaking this while looking at a signal meter could help you improve the signal from a bad cassette and prevent load errors. [Jani] tried a commercial solution called “Load-IT” which had a LED bargraph, but it couldn’t help much dealing with tapes with very bad signals. So he built a signal strength meter for his Datasette. He calls it the VU-sette since it uses an analog style meter quite similar to the VU-meters found in many audio equipment.

The hardware is simple and uses commonly available parts. The analog meter is extracted from a Battery Checker sourced from eBay. An op-amp drives the analog meter, and another transistor drives a separate speaker. This can be used to listen in on the cassette, if the speaker is enabled via a push button. [Jani] first breadboarded and tested the circuit before ordering out prototype boards.

To test performance, [Jani] used FinalTAP, a tool for examining, cleaning and restoring digitized data cassette tapes (TAP files) for the Commodore 64 computer. The “LOAD-IT” version worked well with tapes that were in fairly good condition. But his VU-sette version allowed him to adjust the head more precisely and get out a much better read from bad tapes. While on the subject, check out this nice 7-segment bubble LED digital counter for the 1530.

Continue reading “A VU-meter Indicator For A Commodore 1530 Datasette”

Reverse Engineering Galaga To Fix The No-Fire Cheat

We didn’t know there was a cheat to Galaga, but [Chris Cantrell] did. And so he did what any curious hacker would do — reverse-engineer the game to diagnose and eventually fix the bug.

Spoilers ahoy! Go read the website first if you’d like to follow [Chris]’s reversing efforts in the order that they actually happened.

The glitch is triggered by first killing most of the bees. When only six are left, they go into a second pattern where they swoop across the screen and wrap around the edges. While swooping, sometimes the bees will fire a shot when they’re at coordinates with X=0. Now two facts: there’s a maximum of eight missiles on the screen at any given time, and the position X=0 was reserved by the software to hide sprites that don’t need updating.

The end result is that eight missiles get stuck in a place where they never drop and don’t get drawn. No further shots are fired in the entire game. You win.

So that’s the punchline, but everyone knows that a good joke is in the telling. If you’re at all interested in learning reverse engineering, go read [Chris]’s explanations and work through them on your own.

And here’s our generic plug for Computer Archaeology:

Ancient video games run on MAME or similar emulators are the perfect playground for learning to reverse engineer; you can pause the machine, flip a bit in memory, and watch what happens next. Memory was expensive back then too, so the games themselves are small. (It’s not like trying to reverse engineer all however many jiggabytes of Microsoft Office.) The assembly languages for the old chips are small and well-documented, and most of the time you’ve also got a good dissasembler. What more could you ask for?

A walkthrough tutorial?  We’ve just given you one.

Oh and PS: If you get past level 255, the game freaks out.

Continue reading “Reverse Engineering Galaga To Fix The No-Fire Cheat”

Demoing An 8088

The demoscene usually revolves around the Commodore 64, and when you compare the C64 hardware to other computers of a similar vintage, it’s easy to see why. There’s a complete three-voice synthesizer on a chip, the hardware allows for sprites, a ton of video pages, and there are an astounding sixteen colors, most of which look good. You’re not going to find many demos for the Apple II, because the graphics and sound are terrible. You’re also not going to find many demos for an original IBM PC from 1981, because for thirty years, the graphics and audio have been terrible.

8088 MPH by [Hornet], [CRTC], and [DESire], the winner of the recent 2015 Revision Demo compo just turned conventional wisdom on its head. It ran on a 4.77 MHz 8088 CPU – the same found in the original IBM PC. Graphics were provided via composite output by a particular IBM CGA card, and sound was a PC speaker beeper, beeping sixty times a second. Here’s a capture of the video.

Because of the extreme nature of this demo, it is unable to run on any emulator. While the initial development happened on modern machines with DOSbox, finishing the demo needed to happen on an IBM 5160, equivalent to the 5150, but much easier to find.

Despite the meager hardware and a CPU that reads a single byte in four cycles, effectively making this a 1.19 MHz CPU, the team produced all the usual demoscene visuals. There are moire patterns, bobbing text, rotated and scaled bitmaps, and an astonishing 1024-color mode that’s an amazing abuse of 80×25 text mode with NTSC colorburst turned on.

Below you can find a video of the demo, and another video of the audience reaction at the Revision compo.

Continue reading “Demoing An 8088”

The Dan64: A Minimal Hardware AVR Microcomputer

[Juan] sent us his writeup of a microcomputer he built using an Arduino UNO (AVR ATmega328p) and some off-board SRAM. This one’s truly minimalistic.

Have a look at the schematics (PDF). There’s an Arduino, the SPI SRAM, some transistors for TV video output, and a PS/2 connector for the keyboard. That’s it, really. It’s easily built on a breadboard in a few minutes if you have the parts on hand. Flash the Dan64 operating system and virtual machine into the AVR and you’re good to go.

Now we’ve seen a few 6502-based retro computers around here lately that use a 6502 paired with a microcontroller for the interfacing, but they’ve all been bulky three-chip affairs. [Juan] wins the minimalism prize by using a 6502 virtual machine implemented in the AVR to reduce the parts count down to two chips for the whole shooting match.

Using a 6502 virtual machine was a crucial choice in the design, because there are 6502 cross compilers that will let you compile and debug code for the microcomputer on your macrocomputer and then load it into the micro to run. This makes developing for the micro less painful.

How does it load programs you ask? The old-fashioned way of course, using audio files. Although rather than using the Kansas City Standard as in days of yore, he encodes the data in short and long pulses of square waves. This might be less reliable, but it sure saves on external hardware.

Continue reading “The Dan64: A Minimal Hardware AVR Microcomputer”

Machining A Skeleton Clock In 10,000 Easy Steps

Another day, another interesting YouTube channel. [Chris]’ Clickspring channel and blog is something you don’t really see much these days: machining parts with a lathe, a mill, and no CNC. The project [Chris] is working on now is a clock based on a design by [John Wilding]. It’s very large, and all the parts are constructed out of raw brass and steel stock.

Of course making a clock isn’t just about cutting out some parts on a lathe and turning them on a mill. No, you’re going to need to make the parts to make those parts. [Chris] has already made a tailstock die holder for his lathe, a clamping tool to drill holes in rods, and a beautiful lathe carrier to hold small parts.

All of this is top-notch work, with custom tin lapping tools to put a mirror finish on the parts, and far more effort than should be necessary going into absolute perfection. The clock project is turning out great, although there are several more months until it will tick its first second.

Selected videos below.

Continue reading “Machining A Skeleton Clock In 10,000 Easy Steps”