The X Macro: A Historic Preprocessor Hack

If we told you that a C preprocessor hack dated back to 1968, you’d be within your rights to remind us that C didn’t exist in 1968. However, assemblers with preprocessors did, and where there is a preprocessor, there is an opportunity to do clever things. One of those things is the so-called X macro, which saw a lot of use in DEC System 10 code but probably dates back even earlier. You can still use it today if you like, even though there are, of course, other arguably better ways to get the same result. However, the X macro can be very efficient, and you may well run into it in some code, too.

Background

Preprocessing used to be a staple of programming. The idea is that code is manipulated purely at the text level before it is compiled. These days, languages with a preprocessor usually handle it as part of the compiler, but you can also use an external preprocessor like m4 for more sophisticated uses.

Modern languages tend to provide other ways to accomplish many of the tasks handled by the preprocessor. For example, if you have a constant you want to set at compile time, you could say:

int X = 32;
y = X;

But then you’ve created a real variable along with the overhead that might entail. A smart compiler might optimize it away for you, but you can be sure by writing:

#define X 32
y = X;

A modern compiler would prefer you to write:

const int X=32;
y = X;

But there are still some common uses for macros, like including header files. You can also make more sophisticated macros with arguments so you don’t incur a function call penalty, although modern usage would be to mark those functions as inline.

The Problem

Which brings us to the X macro. With all great hacks, there is first a problem to solve. Imagine you have a bunch of electronic parts you want to deal with in your code. You don’t want a database, and you don’t want to carry a bunch of strings around, so you define an enumerated type:

Continue reading “The X Macro: A Historic Preprocessor Hack”

Retrotechtacular: Military Graphics In The 1960s

While you might think the military doesn’t have a sense of humor with names. Take the AN/MSQ-19 “automated tactical operations central” for example. (Video, embedded below.) But then, when you find out that the truck-sized computer at the heart of it was MOBIDIC — yes, that’s pronounced Moby Dick — you know someone had a good chuckle somewhere. The video below was a promotional video from the early 1960s, and although it shows the unit in operation, it was most likely a mockup and not fully functional.

The MOBIDIC program ran from 1960-1964 and cost a whopping $25 million in 1960-era money. In 1964, testing revealed the system was too unwieldy, requiring at least five tractor-trailers, eight generators, portable buildings, and several large trucks to move around.

Continue reading “Retrotechtacular: Military Graphics In The 1960s”

Review: XHDATA D-219 Short Wave Radio Receiver

As any radio amateur will tell you, the world of radio abounds with exciting possibilities. Probably the simplest pursuit of them all is that of the SWL, or short wave listener, who scours the airwaves in search of interesting stations. SWLs will often have fully-featured setups with high-end general-coverage communications receivers and tuned antenna arrays, but it can start with the cheapest of radios at its bottom end. Such a radio is the subject of this review, the XHDATA D-219 is a miniature portable receiver that costs under ten dollars, yet is currently the talk of the town in SWL circles. This interest is in no small amount due to its being an especially low-price way to get your hands on a shortwave radio using one of the SIlicon Labs integrated software-defind radio receiver chips. We don’t often review a consumer radio here at Hackaday, but with an avid eye for unexpected gems at the cheaper end of the market this one’s worth a second look.

What Do You Get For Your Tenner?

A picture of the radio on my bench
This form factor is very typical for cheap “world band” radios.

I ordered my D-219 from the XHDATA website, spending about £10 including the postage from China. The usual wait ensued before the package landed on my doormat, and inside was the radio in its box with an instruction leaflet. It’s a small unit about 135 mm x 75 mm x 30 mm, and it follows closely the form factor of other similar radios.

On the top is the extensible antenna with an on-off switch and sockets for headphone and 5 V power, on the side are side-on knobs for tuning and volume, while on the front is the speaker and old-style multi-band tuning display.

On the back is a flip-up stand and a hatch for a pair of AA cells. There’s a band switch covering AM, nine different shortwave bands from 4.75 MHz to 22 MHz, the east Asian FM band from 64 MHz to 87 MHz, and the international FM band from 87 MHz to 108 MHz. The tuning indicator is very old-school, a vertical bar that moves across a frequency scale with the tuning knob. Continue reading “Review: XHDATA D-219 Short Wave Radio Receiver”

Hackaday Berlin: The Badge, Workshops, And Lightning Talks

Hackaday Berlin is just under two weeks away, and we’ve got news times three! If you don’t already have tickets, there are still a few left, so grab them while they’re hot. We’ll be rolling out the final full schedule soon, but definitely plan on attending a pre-party Friday night the 24th, followed by a solid 14-hour day of hacking, talks, and music on Saturday the 25th, and then a mellow Bring-a-Hack brunch with impromptu demos, workshops, and whatever else on Sunday from 10:30 until 14:00.

The Badge Round Two

Many Europeans weren’t able to make the flight to Supercon, so here’s your chance to get hands on Voja Antonic’s superb down-to-the-metal computer trainer-slash-retrocomputer on this side of the Atlantic. It’s been re-skinned for Berlin, with a couple hardware tweaks because nobody can leave a board revision alone, but it’s 100% compatible with the badge that took Supercon 2022 by storm.

If you want to read more about it, you should. We loved it, and so did the crowd. One of the coolest badge hardware hacks was a “punchcard” reader, but there was also a lot of work on the software side as well, and we got pull requests for most of the cool demos. If you’re coming, and if you’d like to start your badge hacking a bit early, you could start your research now.

We’ll have a Badge Hacking Ceremony Saturday night, so you can show off whatever you made. It’s lots of fun. Continue reading “Hackaday Berlin: The Badge, Workshops, And Lightning Talks”

PCIe For Hackers: The Diffpair Prelude

PCIe, also known as PCI-Express, is a highly powerful interface. So let’s see what it takes to hack on something that powerful. PCIe is be a bit intimidating at first, however it is reasonably simple to start building PCIe stuff, and the interface is quite resilient for hobbyist-level technology. There will come a time when we want to use a PCIe chip in our designs, or perhaps, make use of the PCIe connection available on a certain Compute Module, and it’s good to make sure that we’re ready for that.

PCIe is everywhere now. Every modern computer has a bunch of PCIe devices performing crucial functions, and even iPhones use PCIe internally to connect the CPU with the flash and WiFi chips. You can get all kinds of PCIe devices: Ethernet controllers, high-throughput WiFi cards, graphics, and all the cheap NVMe drives that gladly provide you with heaps of storage when connected over PCIe. If you’re hacking on a laptop or a single-board computer and you’d like to add a PCIe device, you can get some PCIe from one of the PCIe-carrying sockets, or just tap into an existing PCIe link if there’s no socket to connect to. It’s been two decades since we’ve started getting PCIe devices – now, PCIe is on its 5.0 revision, and it’s clear that it’s here to stay.

Continue reading “PCIe For Hackers: The Diffpair Prelude”

Supercon 2022: Irak Mayer Builds Self-Sustainable Outdoor IoT Devices

[Irak Mayer] has been exploring IoT applications for use with remote monitoring of irrigation control systems. As you would expect, the biggest challenges for moving data from the middle of a field to the home or office are with connectivity and power. Obviously, the further away from urbanization you get, the sparser both these aspects become, and the greater the challenge.

[Irak] solves his connectivity problem by assuming there is some WiFi network within range, building a system around the Blues Wireless WiFi note card. Substituting their cellular card would be an option for applications out of WiFi range, but presumably without changing too much on the system and software side of things. Leveraging the Adafruit FeatherWing INA219, which is a bidirectional current sensor with an I2C interface, for both the power generation and system consumption measurements. For control, [Irak] is using an Adafruit ESP32 board, but says little more about the hardware. On the software side, [Irak] is using the Blues Wireless NoteHub for the initial connection, which then routes the collected data onto the Adafruit IoT platform for collation purposes. The final part of the hardware is a LiPo battery which is on standby to soak up any excess power available from the energy harvesting. This is monitored by an LC709203f battery fuel gauge.

Continue reading “Supercon 2022: Irak Mayer Builds Self-Sustainable Outdoor IoT Devices”

A Hacker’s Introduction To DIY Light Guide Plates

Last year, I found myself compelled to make a scaled-down replica of the iconic test chamber signs from the video game Portal. If you’ve played the game, you’ll remember these signs as the illuminated monoliths that postmarked the start of every test chamber. In hyperstylized video game fashion, they were also extremely thin.

Stay tuned for cake at the end of this article.

True to the original, my replica would need to be both slimmed down and backlit with a uniform, natural white glow. As fate would have it, the crux of this project was finding a way to do just that: to diffuse light coming in from the edges so that it would emit evenly from the front.

What I thought would be quick project ended up being a dive down the rabbit hole that yielded some satisfying results. Today, I’d like to share my findings and introduce you to light guide plates, one of the key building blocks inside of much of today’s backlit screen technology. I’ll dig into the some of the working principles, introduce you to my homebrew approach, and leave you with some inspirational source code to go forth and build your own. Continue reading “A Hacker’s Introduction To DIY Light Guide Plates”