You know, I had no idea this particular project existed until I was trolling around Chipkin.ru looking for cool IBM PC related PCBs and found a reference to this schematic.
I've been playing around with this for a couple of weeks now, and apart from the comparatively low update rate of 20 packets / second vs the regular serial mouse's update of 40 packets a second, this adapter works really nicely. I put it together on the breadboard and it works well, nice that it doesn't need the oscillator parts. Programming a PIC16F628A with the TL866 is fairly trivial:
The attachment sklawz-pic16f628a-mousebreadboard.jpg is no longer available
The purple usb thing is just the cheapest micro-usb power adapter I could find, they work great for small projects since the power output is small enough that they can't damage much.
I put it together on a protoboard and made a nice 3d printed case for it with some fancy dip switches to set the mouse options:
The attachment PIC-Mouse-Adapter-Case.jpg is no longer available
The latency of it compared to the arduino adapters I've tried is significantly better, on a vga res screen, the updates feel instantaneous. On a 2560x1440 screen, the mouse movement feels more like its moving over a network, like Teamviewer-ish. In Windows 3.1, with algorithm 2, the DPI halved and movement rate doubled, the mouse movement with my intellimouse optical is excellent, there is no perceivable latency, in my opinion.
I think I've also determined why Feipoa and others could not get the adapter working. It's very picky about the mice that are connected because it starts initialising the PS/2 mouse too soon, only about 1/2 of my mice actually work with it. I found I only got the MS Intellimouse optical (my favourite old mouse) to work accidentally once. All other times, the adapter would appear to initialise, blinking its bi-colour LED between orange & green then the cursor would do nothing at all. It could work with the Genius Netscroll+ Eye and some other old mice but not the ones I wanted to use.
The solution I've found is to power up the microcontroller shortly after giving power to the adapter with a separate switch for its power, so the mouse can power/start up fully first. This isn't great and would be fixed better with code, but I don't yet know how to put a delay in before the main loop / recompile the code.
What set me off in this direction was this post from the other person on here who knows how to make PS/2 mice work well: Re: PS/2 to Microsoft Serialmouse Adapter Converter / Updated First Post / Firmware Update added
If anyone else would like to try it, here's my schematic in tinycad, which I used for pointers when putting the PCB together:
The attachment 16F628A-PS2toRS232Mouser-tCad1.png is no longer available
The LEDs on pins 1&2 are very handy for telling what's going on. I thought I didn't have any bi-colour LEDs, but it turned out I had one from a router I'd dismantled for parts years ago.
The jumpers are:
J1: Mouse algorithm 1/2 (newer mice should use algorithm 2
J2: Mouse movement rate, on = 2x movement rate
J3: Mouse DPI 1, should 1/2 movement rate
J4: Mouse DPI 2, should 1/4 movement rate
I'm fond of this adapter, because it works with devices that don't have ISA ports spare (laptops & SBCs) and there's no driver setup required, this adapter detects and works just fine in the Windows 3.11 setup program with no extra mouse driver loaded 😀