Comparing X86 And 68000 In An FPGA

[Michael Kohn] started programming on the Motorola 68000 architecture and then, for work reasons, moved over to the Intel x86 and was not exactly pleased by the latter chip’s perceived shortcomings. In the ’80s, the 68000 was a very popular chip, powering everything from personal computers to arcade machines, and looking at its architecture and ease of programming, you can see why this was.

Fast-forward a few years, and [Michael] decided to implement both cores in an FPGA to compare real applications, you know, for science. As an extra bonus, he also compares the performance of a minimal RISC-V implementation on the same hardware, taken from an earlier RISC-V project (which you should also check out !)

Utilizing their ‘Java Grinder’ application (also pretty awesome, especially the retro console support), a simple Mandelbrot fractal generator was used as a non-trivial workload to produce binaries for each architecture, and the result was timed. Unsurprisingly, for CISC architectures, the 68000 and x86 code sizes were practically identical and significantly smaller than the equivalent RISC-V. Still, looking at the execution times, the 68000 beat the x86 hands down, with the newer RISC-V speeding along to take pole position. [Michael] admits that these implementations are minimal, with no pipelining, so they could be sped up a little.

Also, it’s not a totally fair race. As you’ll note from the RISC-V implementation, there was a custom RISC-V instruction implemented to perform the Mandelbrot generator’s iterator. This computes the complex operation Z = Z2 + C, which, as fellow fractal nerds will know, is where a Mandelbrot generator spends nearly all the compute time. We suspect that’s the real reason RISC-V came out on top.

If actual hardware is more your cup of tea, you could build a minimal 68k system pretty easily, provided you can find the chips. The current ubiquitous x86 architecture, as odd as it started out, is here to stay for the foreseeable future, so you’d just better get comfortable with it!

Continue reading “Comparing X86 And 68000 In An FPGA”

This Week In Security: Recall, Modem Mysteries, And Flipping Pages

Microsoft is racing to get into the AI game as part of Windows 11 on ARM, calling it Copilot+. It’s an odd decision, but clearly aimed at competing with the Apple M series of MacBooks. Our focus of interest today is Recall, a Copilot+ feature that not only has some security problems, but also triggers a sort of visceral response from regular people: My computer is spying on me? Eww.

Yes, it really sort of is. Recall is a scheme to take screen shots of the computer display every few seconds, run them through character recognition, and store the screenshots and results in a database on the local machine hard drive. There are ways this could be useful. Can’t remember what website had that recipe you saw? Want to revisit a now-deleted tweet? Is your Google-fu failing you to find a news story you read last week? Recall saw it, and Recall remembers. But what else did Recall see? Every video you watched, ever website you visited, and probably some passwords and usernames you typed in.

Continue reading “This Week In Security: Recall, Modem Mysteries, And Flipping Pages”

Close-up of the mod installed into the HDMI switch, tapping the IR receiver

Interfacing A Cheap HDMI Switch With Home Assistant

You know the feeling of having just created a perfect setup for your hacker lab? Sometimes, there’s just this missing piece in the puzzle that requires you to do a small hack, and those are the most tempting. [maxime borges] has such a perfect setup that involves a HDMI 4:2 switch, and he brings us a write-up on integrating that HDMI switch into Home Assistant through emulating an infrared receiver’s signals.

overview picture of the HDMI switch, with the mod installed

The HDMI switch is equipped with an infrared sensor as the only means of controlling it, so naturally, that was the path chosen for interfacing the ESP32 put inside the switch. Fortunately, Home Assistant provides the means to both receive and output IR signals, so after capturing all the codes produced by the IR remote, parsing their meaning, then turning them into a Home Assistant configuration, [maxime] got HDMI input switching to happen from the comfort of his phone.

We get the Home Assistant config snippets right there in the blog post — if you’ve been looking for a HDMI switch for your hacker lair, now you have one model to look out for in particular. Of course, you could roll your own HDMI switch, and if you’re looking for references, we’ve covered a good few hacks doing that as part of building a KVM.

A3 Audio: The Open Source 3D Audio Control System

Sometimes, startups fail due to technical problems or a lack of interest from potential investors and fail to gain development traction. This latter case appears to be the issue befalling A3 Audio. So, the developers have done the next best thing, made the project open source, and are actively looking for more people to pitch in. So what is it? The project is centered around the idea of spatial audio or 3D audio. The system allows ‘audio motion’ to be captured, mixed and replayed, all the while synchronized to the music. At least that’s as much as we can figure out from the documentation!

The system is made up of three main pieces of hardware. The first part is the core (or server), which is essentially a Linux PC running an OSC (Open Sound Control) server. The second part is a ‘motion sampler’, which inputs motion into the server. Lastly, there is a Mixer, which communicates using the OSC protocol (over Ethernet) to allow pre-mixing of spatial samples and deployment of samples onto the audio outputs. In addition to its core duties, the ‘core’ also manages effects and speaker handling.

The motion module is based around a Raspberry Pi 4 and a Teensy microcontroller, with a 7-inch touchscreen display for user input and oodles of NeoPixels for blinky feedback on the button matrix. The mixer module seems simpler, using just a Teensy for interfacing the UI components.

We don’t see many 3D audio projects, but this neat implementation of a beam-forming microphone phased array sure looks interesting.

Linamp, The IRL Winamp

Anyone who first experienced music on computers using Winamp probably shares a memory of seeing that classic UI for the first time. Everything about it was a step ahead of the clunky, chunky interfaces we were used to, and even though it was supposed to be unobtrusive, it was hard to tear your eyes off that silky-smooth spectrum analyzer bouncing out your favorite MP3s.

Recapturing a little of the Winamp magic is the goal of Linamp, an physical version of the classic media player. It reproduces the Winamp UI on a touchscreen LCD with a wide aspect ratio that almost perfectly matches the original layout. Behind the display is a Raspberry Pi 4 with a 32 GB SD card, with all the important connections brought out to a board on the back of the case. The case itself is a treat, as it borrows design elements from another bit of retro gear, the mini-rack audio systems that graced many a bookshelf in the 1980s — and powered many high school parties too, if memory serves.

To recreate the case, [Rodmg] designed a sheet metal case and had it custom-made from anodized aluminum by PCBWay. He also printed a bezel for the display that looks very similar to the Winamp window border, complete with control icons. Where the build really shines, though, is with the work [Rodmg] put into the software. He matched the original Winamp UI very closely, both in terms of layout and performance. The pains he went to to get the spectrum analyzer working, including a deep dive into FFT, are impressive.

The results speak for themselves on this one, and hats off to [Rodmg] for the effort and the ride on the nostalgia train. We don’t know if the recent announcement of Winamp’s impending open-sourcing will have much impact on this project, but it might result in a flood of new Winamp builds.

Using Kick Assembler And VS Code To Write C64 Assembler

YouTuber [My Developer Thoughts], a self-confessed middle-aged Software Developer, clearly has a real soft spot for the 6502-based 8-bit era machines such as the Commodore 64 and the VIC-20, for which he has created several video tutorials while travelling through retro-computing. This latest instalment concerns bringing up the toolchain for using the Kick Assembler with VS Code to target the C64, initially via the VICE emulator.

The video offers a comprehensive tutorial on setting up the toolchain on Windows from scratch with minimal knowledge. While some may consider this level of guidance unnecessary, it is extremely helpful for those who wish to get started with a few examples quickly and don’t have the time to go through multiple manuals and Wikis. In that regard, the video does an excellent job.

VS Code is a great tool with a large user base, so it’s not surprising that there’s a plugin for using the Kick Assembler directly from the IDE. You can also easily launch the application onto the emulator with just a push of a button, allowing you to focus on learning and working on your application. Once it runs under emulation, there’s a learning curve for running it on native hardware, but there are plenty of tutorials available for that. While you could code directly on the C64 itself, it’s much more pleasant to use modern tools, revision control, and all the conveniences and not have to endure the challenges.

Once you’ve mastered assembly, it may be time to move on to C or even C++. The Oscar64 compiler is a good choice for that. Next, you may want to show off your new skills on the retro demo scene. Here’s a neat C64 demo with a twist. There is no C64.

Continue reading “Using Kick Assembler And VS Code To Write C64 Assembler”

Automating 3D Printer Support Hardware

While 3D printers have evolved over the past two decades from novelties to powerful prototyping tools, the amount of support systems have advanced tremendously as well. From rudimentary software that required extensive manual input and offered limited design capabilities, there’s now user-friendly interfaces with more features than you could shake a stick at. Hardware support has become refined as well with plenty of options including lighting, ventilation, filament recycling, and tool changers. It’s possible to automate some of these subsystems as well like [Caelestis Workshop] has done with this relay control box.

This build specifically focuses on automating or remotely controlling the power, enclosure lighting, and the ventilation system of [Caelestis Workshop]’s 3D printer but was specifically designed to be scalable and support adding other features quickly. A large power supply is housed inside of a 3D printed enclosure along with a Raspberry Pi. The Pi controls four relays which are used to control these various pieces hardware along with the 3D printer. That’s not the only thing the Pi is responsible for, though. It’s also configured to run Octoprint, a piece of open-source software that adds web interfaces for 3D printers and allows their operation to be monitored and controlled remotely too.

With this setup properly configured, [Caelestis Workshop] can access their printer from essentially any PC, monitor their prints, and ensure that ventilation is running. Streamlining the print process is key to reducing the frustration of any 3D printer setup, and this build will go a long way to achieving a more stress-free environment. In case you missed it, we recently hosed a FLOSS Weekly episode talking about Octoprint itself which is worth a listen especially if you haven’t tried this piece of software out yet.