When building your own homebrew computer, everything is a challenge. Ultimately, that’s kind of the point. If you didn’t want to really get your hands dirty with the nuts and bolts of the thing, you wouldn’t have built it in the first place. For example, take the lengths to which [rehsd] was willing to go in order to support standard USB mice on their 6502 machine.
The idea early on was to leverage existing Arduino libraries to connect with a standard USB mouse, specifically, the hardware would take the form of an Arduino Mega 2560 with a USB Host Shield. There was plenty of code and examples that showed how you could read the mouse position and clicks from the Arduino, but [rehsd] still had to figure out a way to get that information into the 6502.
In the end, [rehsd] connected one of the digital pins from the Arduino to an interrupt pin on the computer’s W65C22 versatile interface adapter (VIA). Then eleven more digital pins were connected to the computer, each one representing a state for the mouse and buttons, such as MOUSE_CLICK_RIGHT and MOUSE_LEFT_DOWN.
Admittedly, [rehsd] says the mouse action is far from perfect. But as you can see in the video after the break, it’s at least functional. While the code could likely be tightened up, there’s obviously some improvements to be made in terms of the electrical interface. The use of shift registers could reduce the number of wires between the Arduino and VIA, which would be a start. It’s also possible a chip like the CH375 could be used, taking the microcontroller out of the equation entirely.
From classic breadboard builds to some impressively practical portable machines, we’ve seen our fair share of 6502 computers over the years. Despite the incredible variation to be found in these homebrew systems, one thing is always the same: they’re built by some of the most passionate folks out there.
[Thanks to Jim for the tip.]
Okay, no other comments yet…
I’m musing on whether this could be used to add mouse to a Timex-Sinclair 1000 (ZX81).
(Yes, I know this is for a 6502 and the TS1000 is Z80)
I would wager that as possible. The idea behind this isn’t that complex. The Arduino is converting the mouse actions into 8 digital signals fed to an IO expander (The 6522 VIA) and raises an interrupt. The 6502 reading the resulting value from the VIA and decoding that into an action.
The same principle ought to work for a Z80. Just needs to expand it with some I/O which shouldn’t be difficult assuming the relevant processor pins are exposed via an expansion slot. Which nearly every 80s computer had via an edge connector or cartridge port.