Dirty Tricks For 6502 Programming

We know the 6502 isn’t exactly the CPU of choice for today’s high-performance software, but with the little CPU having appeared in so many classic computers — the Apple, the KIM-1, The Commodores, to name a few — we have a real soft spot for it. [Janne] has a post detailing the eight best entries in the Commodore 64 coding competition. The goal was to draw an X on the screen using the smallest program possible. [Janne] got 56 bytes, but two entrants clocked in at 34 bytes.

In addition to the results, [Janne] also exposes the tricks people used to get these tiny programs done. Just looking at the solution in C and then 6502 assembly is instructive. Naturally, one trick is to use the existing ROM code to do tasks such as clearing the screen. But that’s just the starting point.

Continue reading “Dirty Tricks For 6502 Programming”

Emulating A 6502 In ROM

The Gigatron TTL microcomputer is an exercise in alternative history. What if, by some bizarre anomaly of invention and technology, the 1970s was not the age of the microprocessor? What if we could have had fast, high density ROM and RAM in the late ’70s, but the ability to put a microprocessor in silicon was beyond our comprehension? Obviously we would figure out a way to compute with this, and the Gigatron is the answer. It’s a computer from that era that’s designed with a CPU that’s entirely made of microcode.

While the Gigatron is a popular product in the world of weird electronics kits, the creator, [Marcel van Kervinck], is going beyond what anyone thought possible. Now the Gigatron is emulating a 6502 processor, the same CPU found in the Apple II and almost every other retrocomputer that isn’t running a Z80.

There’s a thread over on the Gigatron forums for this. Although it’s still very early in development, the Gigatron can now run 6502 machine code,  and in doing so the Gigatron is now the only dual-core computer without a CPU. All of the addressing modes have been implemented, along with half of the instructions and most of the status flags. All of this interacts with the Gigatron’s existing video subsystem, and all code can switch in between the Gigatron’s virtual CPU and 6502 code with just a few instructions.

This opens the door to a wide variety of software that’s already written. MicroChess is possible, as is MS Basic. This is great; the biggest downside of the Gigatron is that there was no existing code for the machine when it was first designed. That changed when the Gigatron got a C compiler, but now somehow we’ve got a logic chip implementation of a 6502 in far fewer chips than are found in an Apple II. It’s not fast ( about 1/8th the speed of a 1 MHz 6502), but in the video below you can see a munching squares demo.

Continue reading “Emulating A 6502 In ROM”

VR On The 6502

The MOS Technology 6502 was one of the more popular processors of the 1980s. It ran the Commodore 64, the NES in a modified form, and a whole bunch of other hardware, too. By modern standards, it’s barely fit to run a calculator, but no matter – [Nick Bild] built a VR game that runs on the retro CPU anyway!

[Nick]’s project is built on his 6502 computer, the Vectron 64. Being a breadboard build, it’s easy to modify things and add additional hardware, and that’s precisely what he did. The VR system uses two 320 x 240 LCD screens, one for each eye. These are controlled over SPI, but the humble 6502 simply doesn’t have the speed to clock out enough bits fast enough for a video game. Instead, additional hardware is added to generate pulses to run the screens. There’s a bunch of other neat hacks as well that help make the game playable, like overclocking the CPU to 1.75 MHz and drawing common elements to both screens at the same time.

To test out the VR system, [Nick] coded a basic Asteroids VR game. It’s not really practical to demonstrate the game without the hardware, but we’d love to try it out. There’s something compelling about a low-resolution VR game with 8-bit graphics, and we hope to see the concept further developed in future.

More grunt would make this project even more capable, and for that, a 6502 running at 20MHz could come in handy. Video after the break.

[Thanks to Fred Gimble for the tip!]

Continue reading “VR On The 6502”

Get Coding With This Atari 2600 Development Suite

Sometimes the urge strikes to get busy coding for an old retro system, but unfortunately the bar to entry can be high. There’s a need to find a workable compiler, let alone trying to figure out how to load code onto original vintage hardware. It doesn’t have to be so hard, though. The team at [HeatSync Labs] built an Atari 2600 development station so hackerspace members can simply rock up and get to work.

With this rig, development is a multi-step process. A paper manual is on hand to provide detail of how to code for the Atari. An IBM PC is then on hand to allow the budding developer to code in assembly. This text file is then compiled into an Atari ROM, which is then passed through a special utility to convert it to an audio file. This is to allow it to be used with a Starpath Supercharger, which allows games to be loaded onto the Atari via cassette tape, or in this case, raw digital audio. By playing the audio file on the PC, connected to the Supercharger cartridge, it’s possible to run arbitrary code on the Atari 2600.

Programming in 6502 assembly isn’t the easiest mountain to climb for an absolute novice, but experienced coders will likely appreciate the no-fuss development environment. It makes for an easy gateway into the world of retro console programming, and there’s nothing like the fun of seeing your code running on original hardware.

We love a good story of retro development – like this tale of fixing a 37-year-old bug in an Apple II game. Video after the break.

Continue reading “Get Coding With This Atari 2600 Development Suite”

A Nearly Practical 6502 Breadboard Computer

Over the years we’ve seen a number of homebrew 6502 computers assembled with little more than a breadboard, a sack full of jumper wires, and an otherworldly patience that would make a Buddhist Monk jealous. Anyone who takes the time to assemble a fully functional computer on a half-dozen breadboards lined up on their workbench will always be a superstar in our book.

While we’re still too lazy to attempt one of these builds ourselves, we have to admit that the Vectron 64 by [Nick Bild] looks dangerously close to something you might be able to pull off within a reasonable amount of time. It’s still an incredible amount of work, but compared to some of the other projects we’ve seen, this one manages to keep the part count relatively low thanks to the use of a simple 16×2 LCD for output and user input provided by a PS/2 keyboard. You won’t be playing Prince of Persia on it, but at least you might be able to finish it in a weekend.

The computer is clocked at 1 MHz, and features 32KB RAM
along with 32KB EEPROM. That should be enough for anyone. [Nick] also points out he tried to use era-appropriate 7400 series ICs wherever possible, so no worries about historical revisionism here. If you’re looking for a design that somebody could have potentially knocked together back in the 1970s, this one would get you fairly close.

The astute reader might notice there’s no removable media in this build, and may be wondering how one loads programs. For that, [Nick] allowed himself a bit of modern convenience and came up with a scheme that allows an Arduino (or similar microcontroller) to connect up to the computer’s 28C256-15 EEPROM. With a Python script running on your “real” computer, you can write a new ROM image directly to the chip. He’s included the source code for a simple program which will write whatever you type on the keyboard out on the LCD, which should give you a good framework for writing additional software.

If you’re looking for a bigger challenge, don’t worry. We’ve covered 6502 breadboard computers that will make your eyes water. Incidentally, this isn’t the first time we’ve seen a similar LCD used for one of these computers, so looks like there’s no shame in sneaking in modern parts where it makes sense.

The 6502 Watch, Because Someone Had To Make One

We are very familiar with retrocomputers, and if you want you too can build a computer that could have been made in the late ’70s on a breadboard. Just grab your CPU of choice, add some RAM, some ROM, a ton of jumper wires, and give it some way to talk to the outside world. The problem with the computers inspired by yesteryear is that they all, inexplicably, use through-hole parts. If only someone used the small QFP parts instead of the big chonkin’ PDIPs, we could have really small retrocomputers. That’s exactly what [NotArtyom] did, and he managed to come up with a wearable 6502 watch.

The system design for this 6502-based watch is fairly standard for what you would find in any other retrocomputer. There’s a PLCC 6502, 32k of SRAM, 16k of ROM, and a PLLC’d 6522 for a bit of IO. There are a few peripherals hanging off the 6522, and since this thing is a watch the most important is a real time clock. There’s also a Nokia LCD and a 20-pin Commodore keyboard connector.

Software-wise, most of the ROM is dedicated to G’Mon, a generic monitor that can view and modify memory. There’s also EhBasic, and a kernel to handle the RTC, keyboard, and display.

Whether or not this is a useful smartwatch isn’t the question; this is one of the first retrocomputer projects we’ve seen that lean into the non-PDIP versions of these classic chips. This is a bit surprising, because you can still buy these parts, PDIP or not, new from the usual vendors. If nothing else, it’s a demonstration of what can be done with modern IC packages.

Add A Host Of 8-Bit Processors To Your Arduino

Normally when we bring you news of a retrocomputing design, it will centre around a single processor. At its heart will be a 6502, a Z80, or perhaps a 6809. There will be a host of support chips, some memory as RAM or ROM, and a bunch of interfaces. [Erturk Kocalar]’s RetroShield project for the Arduino Mega breaks all of those rules, because it supports all three of those classic processors, has no support chips, no memory, and no external interfaces beyond the shield connection to the Mega. What on earth is going on!

A closer look reveals that the project is a set of shields that use the Mega’s power to emulate all the support chips and peripherals you’d have seen on the original hardware. And while it would be impressive to have a single board with support for all three CPUs, in fact there is a PCB for each one. But that makes it no less interesting a project for those with an interest in 8-bit processors, because the focus becomes the software rather than a quest to find out-of-production silicon.

So far there is some limited demo software, and his website goes into some detail on the interfacing and code required. The Arduino can only clock the 8-bit CPU at 95kHz in software which may sound a bit low to those familiar with 1980s home computers, but it’s best to think of this as an experimentation platform and give up dreams of playing Elite. An exciting prospect comes in giving the 8-bit machine access to Arduino shields, if improbable hardware is your bag.

If this has captured your interest, you might also wish to take a look at the $4 Z80 single board computer which has a similar ethos.