The (Data) Plot Thickens

You’ve generated a ton of data. How do you analyze it and present it? Sure, you can use a spreadsheet. Or break out some programming tools. Or try LabPlot. Sure, it is sort of like a spreadsheet. But it does more. It has object management features, worksheets like a Juypter notebook, and a software development kit, in case it doesn’t do what you want out of the box.

The program is made to deal with very large data sets. There are tons of output options, including the usual line plots, histograms, and more exotic things like Q-Q plots. You can have hierarchies of spreadsheets (for example, a child spreadsheet can compute statistics about a parent spreadsheet). There are tons of regression analysis tools, likelihood estimation, and numerical integration and differentiation built in.

Continue reading “The (Data) Plot Thickens”

A view of the schematics for each major component.

Simulating The Commodore PET

Over on his blog our hacker [cpt_tom] shows us how to simulate the hardware for a Commodore PET. Two of them in fact, one with static RAM and the other with dynamic RAM.

This project is serious business. The simulation environment used is Digital. Digital is a digital logic designer and circuit simulator designed for educational purposes. It’s a Java program that runs under the JVM. It deals in .dig files which are XML files that represent the details of the simulated hardware components. You don’t need to write the XML files by hand, there is a GUI for that. Continue reading “Simulating The Commodore PET”

The Shady School

We can understand why shaderacademy.com chose that name over “the shady school,” but whatever they call it, if you are looking to brush up on graphics programming with GPUs, it might be just what you are looking for.

The website offers challenges that task you to draw various 2D and 3D graphics using code in your browser. Of course, this presupposes you have WebGPU enabled in your browser which means no Firefox or Safari. It looks like you can do some exercises without WebGPU, but the cool ones will need you to use a Chrome-style browser.

You can search by level of difficulty, so maybe start with “Intro” and try doing “the fragment shader.” You’ll notice they already provide some code for you along with a bit of explanation. It also shows you a picture of what you should draw and what you really drew. You get a percentage based on the matching. There’s also a visual diff that can show you what’s different about your picture from the reference picture.

We admit that one is pretty simple. Consider moving on to “Easy” with options like “two images blend,” for example. There are problems at every level of difficulty. Although there is a part for compute shaders, none seem to be available yet. Too bad, because that’s what we find most interesting. If you prefer a different approach, there are other tutorials out there.

Cracking Abandonware DRM Like It’s 1999

As long as there have been games, there have been crackers breaking their copy protections. “Digital Rights Management” or DRM, is a phrase for copy protection coined near the end of the 1990s, and subverted shortly thereafter. But how? [Nathan Baggs] show us what it took to be a cracker in the year 2000, as the first step to get an old game going again turned out to be cracking it. 

The game in question is “Michelin Rally Masters: Race of Champions” by DICE, a studio that was later subsumed by EA and is today best known as the developers of the Battlefield franchise. The game as acquired from an abandonware site does not run in a virtual machine, and after a little de-obfuscation of the code causing the crash, [Nathan] discovers LaserLock is to blame. LaserLock was a DRM tool to lock down a game to its original CD-ROM that dates all the way back to 1995. Counters to LaserLock were probably well-known in the community back in the day, but in 2025, [Nathan] walks us through attempting to crack it it from first principles.

We won’t spoil the whole assembly-poking adventure, but the journey does involve unboxing an original CD to be able to compare what’s happening when the disc is physically present compared to running from the ISO. Its tedious work and can only be partially automated. Because it did prove so involved, [Nathan]’s original aim — getting the game to work in Windows 11 — remains unfulfilled so far.

Perhaps he’d have had better luck if he’d been listening to the appropriate music. Frustrating DRM isn’t always this hard; sometimes all you needed was a paperclip. Continue reading “Cracking Abandonware DRM Like It’s 1999”

Recto: In Case Programming Isn’t Hard Enough

There’s long been a push to stop writing code as a sequence of lines and go to something graphical, which has been very successful in some areas and less so in others. But even when you use something graphical like Scratch, it is really standing in for lines of code? Many graphical environments are really just interface builders, and you still write traditional code underneath. [Masato Hagiwara] asks the question: Can you write code that is actually a 2D graphic? Where the graphical layout isn’t a cover for code, but is the code itself? His answer is Recto.

Whereas a C program, for example, has a syntactical structure of lines, a Recto program has rectangles. Rectangles can contain data, and their structure naturally mimics the kinds of structures we usually use: columns, rows, matrices, and so on. Rectangles can also contain… wait for it… other rectangles. Special rectangles act as dictionaries or sets.

We thought this sort of reminded us of Lisp, and, in fact, [Hagiwara] makes that clear later in the post. The real problem is how do you…write? draw?… this kind of code? At first, he laid it out in a spreadsheet before compilation. Now he’s built an editor for it, and you can try it in your browser. There’s also a limited-feature compiler that can handle simple programs.

[Hagiwara] goes on to show how this representation would work for natural human languages, too. Honestly, we have enough trouble with English and the few other human languages we struggle with, but it is interesting to contemplate.

If you like strange languages, there’s Piet. Not that either of these is the weirdest we’ve ever seen.

One File, Six Formats: Just Change The Extension

Normally, if you change a file’s extension in Windows, it doesn’t do anything positive. It just makes the file open in the wrong programs that can’t decode what’s inside. However, [PortalRunner] has crafted a file that can behave as six different filetypes, simply by swapping out the extension at the end of the filename.

The basic concept is simple enough. [PortalRunner] simply found a bunch of different file formats that could feasibly be crammed in together into a single file without corrupting each other or confusing software that loads these files.

It all comes down to how file formats work. File extensions are mostly meaningless to the content of a file—they’re just a shorthand guide so an operating system can figure out which program should load them. In fact, most files have headers inside that indicate to software what they are and how their content is formatted. For this reason, you can often rename a .PNG file to .JPEG and it will still load—because the operating system will still fire up an image viewer app, and that app will use headers to understand that it’s actually a PNG and not a JPEG at heart, and process it in the proper way.

[PortalRunner] found a way to merge the headers of various formats, creating a file that could be many different types. The single file contains data for a PNG image, an MP4 video, a PDF document, a ZIP archive, a Powerpoint presentation, and an HTML webpage. The data chunks for each format are lumped into one big file, with the combined headers at the very top. The hijinx required to pull this off put some limitations on what the file can contain, and the files won’t work with all software… but it’s still one file that has six formats inside.

This doesn’t work for every format. You can’t really combine GIF or PNG for example, as each format requires a different initial set of characters that have to be at the very beginning of the file. Other formats aren’t so persnickety, though, and you can combine their headers in a way that mostly works if you do it just right.

If you love diving into the binary specifics of how file formats work, this is a great project to dive into. We’ve seen similarly mind-bending antics from [PortalRunner] before, like when they turned Portal 2 into a webserver. Video after the break.

Continue reading “One File, Six Formats: Just Change The Extension”

Jenny’s Daily Drivers: FreeDOS 1.4

When I was a student, I was a diehard Commodore Amiga user, having upgraded to an A500+ from my Sinclair Spectrum. The Amiga could do it all, it became my programming environment for electronic engineering course work, my audio workstation for student radio, my gaming hub, and much more.

One thing that was part of my course work it couldn’t do very well, which was be exactly like the PCs in my university’s lab. I feel old when I reflect that it’s 35 years ago, and remember sitting down in front of a Tulip PC-XT clone to compile my C code written on the Amiga. Eventually I cobbled together a 286 from cast-off parts, and entered the PC age. Alongside the Amiga it felt like a retrograde step, but mastering DOS 3.3 was arguably more useful to my career than AmigaDOS.

It’s DOS, But It’s Not MS-DOS

The FreeDOS installation screen
Where do I want to go today?

I don’t think I’ve used a pure DOS machine as anything but an occasional retrocomputing curio since some time in the late 1990s, because the Microsoft world long ago headed off into Windows country while I’ve been a Linux user for a very long time. But DOS hasn’t gone away even if Microsoft left it behind, because the FreeDOS project have created an entirely open-source replacement. It’s not MS-DOS, but it’s DOS. It does everything the way your old machine did, but in a lot of cases better and faster. Can I use it as one of my Daily Drivers here in the 2020s? There is only one way to find out.

With few exceptions, an important part of using an OS for this series is to run it on real hardware rather than an emulator. To that end I fished out my lowest-spec PC, a 2010 HP Mini 10 netbook that I hold onto for sentimental reasons. With a 1.6 GHz single core 32 bit Atom processor and a couple of gigabytes of memory it’s a very slow machine for modern desktop Linux, but given that FreeDOS can run on even the earliest PCs it’s a DOS powerhouse. To make it even more ridiculously overspecified I put a 2.5″ SSD in it, and downloaded the FreeDOS USB installer image. Continue reading “Jenny’s Daily Drivers: FreeDOS 1.4”