![](/assets/playground/adafruit_playground_1200x900-699010177a4a3fd6bac6bc31deae0bfa3eb9ea777ba62aaa5cbc1225bb45bfcc.jpg)
Adafruit Playground is a wonderful place to share what you find interesting. Have a cool project you are working on? Have a bit of code that you think others will find useful? Want to show off your electronics workbench? You have come to the right place.
Adafruit Playground is a safe place to share with the wonderful Adafruit community of makers and doers.
Click here to learn more about Adafruit Playground and how to get started.
-
Pinned by jepler
About Jeff
I’ve been a software developer ever since I first started typing in program listings on an 80s home computer.
I’ve been a contributor to Free and Open Source software for over 20 years. See my github profile for my contributions and original software.
I'm proud to be working with Adafruit, mainly on CircuitPython, and helping enable people learn and create fun projects with whatever environment works best for them.
-
Sandbox
-
Archiving Xerox 820 8" Floppies
My Xerox 820 CP/M computer has a large external drive enclosure with two 8" SS/DD floppy drives in it. They have a "shugart" interface inside, brought out to a proprietary-but-documented 37-pin D-style connector. Because the data signals used by floppy drives changed very little over the decades (at least in the CP/M and PC worlds; Commodore and Apple users, don't @ me) all the signals mostly map closely enough onto IBM PC 34-pin connector.
I previously made a passive adapter board so that a "Gotek" floppy drive emulator could replace the drive enclosure, and it worked! (and is a LOT less loud than 2 8" floppy drives spinning all the time!!!)
That got me thinking: could I make a 2nd adapter board that would let me archive 8" floppies? Then, inspiration struck: I didn't even need a 2nd board design. Instead of fitting a plug ("male") connector on the board's top side, I could simply fit a socket ("female") connector on the board's bottom side.
Since I'd gotten 5 boards in my PCB order, I just had to wait for delivery of the connector and solder everything up.
Both archiving and writing worked on the first try, with greaseweazle host software and an Adafruit Floppsy prototype board; a genuine GreaseWeazle should work just the same.
-
RunCPM with USB Host Featherwing
The original RunCPM project I did used two feathers with RP2040 microcontrollers: one for DVI output and one for USB input.
Now, with the USB Host Featherwing, there's theoretically no need for the second microcontroller.
-
Archiving Old Github Forks with PyGithub
Over the years I've been using github, and especially while I've been working with Adafruit, I have quite the collection of forked repositories on github. Most of them haven't been updated in years. I decided that I wanted to archive all my forks that hadn't been updated in the last 2 years—over 200 repositories. This would take a long time manually on the github website, so I wrote a script to do it instead.
To use the script (included below), you'll need to
- Create an authorization token for your github account. It needs access to all your repositories to perform administration tasks. You can create a "fine grained" token within your user's settings on github.
- Edit the script to set the correct owner_name and token
Next, run the script once in the terminal. It'll print a line for each repository it will archive. If the list looks correct, then uncomment the "repo.edit" line and run the script a second time. This will actually archive the repositories.
-
Xerox 820 Gotek Adapter
The Xerox 820 CP/M computer could interface with dual 8" floppy drives (or up to 4 5.25" drives!).
While I did have a working pair of drives, I wanted the ability to run my 820 off of a floppy emulator. I picked a "Gotek" branded floppy emulator with the open source Flash Floppy firmware.
The Xerox has a bespoke 37-pin D-style connector for its floppy drives, so I created a passive adapter PCB.
After configuring Flash Floppy and loading up a CP/M disk image I was able to boot to CP/M without the pair of incredibly loud drives spinning in the background.
The "mod" section was for bodges but it turned out no bodge wires were needed. (it's not a header for a 2nd drive, sadly)
The gotek's default "S1" jumper position is for the CP/M "B" drive and the "S0" position is for the CP/M "A" drive, so most of the time you'll want to move the gotek's selection jumper to the "S0" position.
-
Unicomp Mini M with CircuitPython
Unicomp Mini M with CircuitPython
Unicomp is the heir to the IBM Buckling Spring legacy. This style of keyboard has a distinctive sound & feel which some people just can't get enough of. I'm one of them, having used a crusty old Model M for at least a decade at work.
Their "Mini M" is an 87-key ("tenkeyless") layout, and in late summer 2023 the controller was replaced with a board that has a Raspberry Pi Pico soldered on to it.
It's too soon for me to have formed a strong opinion about this keyboard, though I will note that the cable seems to be in the category of "incredibly cursed": It is a USB A-A cable, which should not exist. If your computer is USB-C only you're entering dongle city, but, you're probably used to that.
In this mini-guide, you'll learn how to replace the factory firmware with a fully customizable CircuitPython firmware. Of course, once you have the controller in UF2 bootloader mode, you could also use Arduino or Pico-SDK to program it with the software of your choice.
Note that this involves opening up the keyboard enclosure and there is always the possibility that you will damage the keyboard while doing so.