Skip to content

Obsolete Madness Posts

Adding HDMI to a Kramer VP-724XL Video Scaler

I picked up a used Kramer VP-724XL Video Switcher some time ago for ~$20. While I'm sure it's not the quality of modern scalers, it's faily versitile, featuring Composite, S-Video, Component, VGA and DVI inputs. It will scale all the inputs to a user specified resolution, but only out over VGA - that's what I'd like to fix.

Kramer VP724XL

While there is probably a way to intercept the digital signal from the scaler and convert it to DVI or HDMI, I'm going to do this the lazy way.

This blob is really for my own documentation so I don't forget, but maybe someone else might find it useful!


I'm provide links, as they will be out-of-date quickly.

  1. VGA to HDMI Adaptor
    Low-cost VGA to HDMI
    I'm using a cheap VGA to HDMI. These adaptors < $5 from AliExpress (just make sure the direction is the right way). The adaptors essientially consist of a high-speed ADC and will output whatever source resolution is provided. They won't do any scaling on their own.

  2. HDMI Panel Mount
    15cm-1m HDTV-compatibl-Extension Cable Male To Female Gold Plated With Screw Panel Mount Extended Short Cable For HD TV LCD Lapt
    This is a low cost "15-cm-1m HDTV-compatibl-Extension Cable" - basically a 15cm Female HDMI with a panel mount, to a male HDMI cable.

  3. 3.5mm Cable - I just used an old one and cut it half, otherwise the VGA adpaptor should include one

  4. Micro-USB cable - one should come with the adaptor


  1. Install the HDMI Adaptor in place of one of the VGA Outputs. It doesn't matter which one. Simply unscrew the existing VGA port, and screw the HDMI adaptor in it's place.
    HDMI Adaptor Installed

  2. Unscrew the audio board, and solder the 3.5mm audio leads to the line-out pins on the audio board. Don't forget to double-check the pin out on the cable.
    3.5mm lead soldered to the audio output pins

  3. The power-supply seems to give 3.3v, ~7v, and 12v. I wasn't able to find a header with the appropriate voltages. There's a few regulators though that convert the 7v to 5v. On the DAC board, solder the USB cable power-leads to the Taping 5V from a regulator on the DAC Board

  4. Connect to the original VGA lead, 3.5MM audio jack and micro-USB cable to the VGA to HDMI Adaptor. Connector the HDMI adaptor to the HDMI jac installed in step one.

That's really it! I'll likely apply some double-sided tape or similar to secure the converter.

While I could have soldered directly to the adaptor, this configuration gives the option of swapping it out in the future if I so please.

What else?

I haven't really explored hacking this device too much. It seems to largely be some dedicated video ASICS combined with plenty of FPGA/CPLDs.
There is a full serial protocol that might be useful (especially if I expose it via Bluetooth).

All the Kramer support files available as of 2024-05-19 are included below. Most of these are relevant to the VP-719xl, VP-720xl, VP-724xl as well.

Download Kramer VP724XL Files

Leave a Comment

Mounting OnTrack Volumes in Windows

I use an old dynamic drive overlay tool called OnTrack to get around a 504MB drive-size BIOS limit on older machines. It works well enough for Dos and early versions of Windows. However, if you go try to mount the volume on another machine, it will appear to have no valid partitions!

SD Adaptor inside a laptop

OnTrack appears to put the original MBR at around sector 63, with the partition boot record (PBR) offset at sector 63 from there. This is quite different to a regular MS-DOS Drive layout - and this is caused by the customer loader OnTrack users to replace the BIOS routines.

On-Track starting up

To mount these volumes on Windows, we need a way to mount at an offset of 126 sectors (or 126 * 512 Sector Size = 64,512 bytes).

Fortunately, there is a utility that can do this: ImDisk.

ImDisk is an open-source virtual disk driver with many features, including RAM Disk and other support.

To mount my OnTrack volume using ImDisk, I need to know the physical disk # in Windows.

  1. Open an admin command prompt
  2. Run diskpart and view disk to get a list of disks. Note the 8GB disk is my SD Card, and it is Disk 2

    DISKPART> list disk
    Disk ###  Status         Size     Free     Dyn  Gpt
    --------  -------------  -------  -------  ---  ---
    Disk 0    Online          476 GB  1024 KB        *
    Disk 1    Online          476 GB      0 B        *
    Disk 2    Online         7580 MB    10 MB
  3. Exit diskpart.

Mounting the volume

  1. Open an admin command prompt
  2. Run the following command:
    imdisk -a -f \\.\physicaldrive2 -b 64512 -o ro -m x:

The volume is now mounted as X: Drive.

If it's not, double-double check your drive path and byte offset.

What is this doing?

  • -a - tells imdisk to attach a virtual disk
  • -f - specifies the file. In this case, we're using the Windows NT Physical drive path.
  • \\.physicaldrive2 - note this correseponds with disk 2 from diskpart.
  • -b 64512 tells it use use an offset, in this case our sector offset (63 + 63 * 512) for the start of the first partition.
  • -o ro - option of mounting as readonly. If you're unsure you've got the right drive and/or offset, make sure this option is set.
  • -m x: - mounts the drive as X:

Making it writeable

You'll need to unmount the disk (imdisk -D -m X:) and re-run the above command, without -o -ro.

Leave a Comment

Archiving Old Books

Looking through the bookshelf, it appears I have a few titles which at least the Internet Archive doesn't have.

I've enjoyed the use of books and magazines others have scanned and uploaded online, so I thought it only prudent I do the same. My printer has an ADF, so figured I'd give it a go!


Unless you want to be scanning individual pages on a flatbed, or with some kind of camera set up, you'll need to prepare your books. Essientially, this involves cutting or removing the spine of the books.
This is clearly a destructive process, so may not be one everyone would like to do.

There's lots of advice that can be found online on how to do this. I didn't want to spend a lot of time or money for this step.

Ready to Scan

Instead, I went down my local Officeworks which has a service for this. For $1 a book, they'll use their fancy guillotine to cut and remove the spine. I suspect on thicker books it might need to be sliced a couple of times to be able to fit (I was advised they could do up to 250 80gsm pages at a time!).


I'm lucky enough to have an MFC at home with an automatic document feede (a Konica Minolta Bizhub C35).

Scanner goes brrr

Scanner goes brr

I used the built-in "Windows Fax and Scan" application to connect to the scanner via WIA, and scanned directly to TIFF at 600 DPI. Note that the documents I'm using were all black-and-white, so used black-and-white mode to scan.

Preparing the PDF

I couldn't find a good free option for this. Instead, I used Foxit PDF Editor to convert from the scanned TIF image to PDF. It does deskewing and OCR for me which is really handy.

I made sure to fix up the page numbers in the PDF to match the pages in the books (it's a pet hate of mine when PDFs don't do this), and add some missing meta-data.


I've only done two so far and it's been reasonably smooth. Lessons so far:

  • For glued spined books, make sure you flip through every page and ensure each page is free. It'll save having to rescan pages which went through all at once.

  • don't like the output from Foxit PDF. I had to run it through PDFTK to make Internet Archive happy :/

Uploads so far

Leave a Comment

PictSharp Updated

Get it from Github

I recently returned to a project I first started in 2017, PictSharp.

PictSharp is a C# native library for encoding bitmap images to to Apple's legacy PICT Format. I originally started it for the GopherServer project, as I wanted a way to convert modern images for old Macs which did not depend on external applications (both on the server and the client).

I revisted it to add support for .NET Core, but in the process ended up implementing support for 1-8bpp support, non-power of two image sizes, support for ImageSharp, as well as learning how GitHub actions work and publishing my first (public) nuget package!

While I suspect the number of people who want to create PICT images in 2022 is fairly small, it may assist those who want to learn about legacy formats or need to support older systems and formats (eg RTF which supports MacPict as one of the original v1 image formats).


  • Implemented entirely in C# code. No native dependencies.
  • Supports .NET Framework 4.6.1+, .NET Core 3.1 and runtimes compatible with .NET Standard 2.0
  • Writes PICT 2.0 Images (so should work on a Mac II onwards with Color QuickDraw)
  • Supports 1bpp, 2bpp, 4bpp, 8bpp and 32bpp image encoding, with PackBits compression
  • Extensions available for ImageSharp and System.Drawing.Bitmap

What's still to be done?

Really just 16bpp support, but it'll probably be another 5 years until I get around to it. 16bpp is supported in PICT, but uses a different compression method to PackBits. Instead of working on individual bytes, 16bpp images are compressed by word (2 byte values).

  • More compression options (disabling compression, JPEG, etc)
  • A decoder
Leave a Comment

Gopher Clients Archive

I've started a Github repository to archive old Gopher Clients for various clients. As old websites are "upgraded" and taken offline, or old FTP servers get switched off, it's becoming more difficult to find these old clients.

Go check it out:

Pull requests which add more clients, archives of old FTP sites or descriptions and screenshots are very welcome.

I have some leave coming up and hope to revisit my old C# Gopher Server project. Plans include:

  • Port to .NET 6.0
  • Docker support
  • Better configuration and DI
Leave a Comment

MStar Datasheets

Scart to HDMI
A common example of the SCART to HDMI adaptors found on Aliexpress, eBay, etc

I've previously blogged about Chinese SCART adaptors. These are very low cost adaptors which convert RGB SCART to HDMI, with two main variations based on their board labels: SCART+HD2 HDMI 2014/12/23 and SHD1000 V1.

In the comments, readers identified that the main IC driving these is the MST6M182 (specifically mst6m182xst-z1). After much searching online and a hint from reader mmuman I managed to track down the datasheet or at least one close enough.

MST6m182VG Datasheet
The Mstar MST6m182VG Datasheet - link to Github

Of note to retro-gaming and retro-computing enthusiasts will be the registers for de-interlacing, including options to disable it entirely (USR_INTLAC). I'm keen to hook-up a micro and start fiddling with registers, as I suspect these could be a very good low-cost option if adequate control of the images was possible

In addition, I've created a source repository to collect these datasheets. It's available at If you have any further datasheets, please submit a pull request, as I'd be happy to put them up on that repo.


Halfix PC Emulator

I recently stumbled upon a PC emulator, Halfix on Github. The list of compatible Operating Systems (OS/2!) was quite comprehensive, and the code looked quite simple (especially in comparison to something like QEMU). Best of all, it supports Emscripten as a target, allowing for embedding in the web-browser (like v86).

If you want to check it out, it's hosted on the Obsolete Madness Labs with an OS/2.0 image. I hope to add some more (and noticed the author of Halfifx is also preparing some demos, which will hopefully increase it's popularity).

Halfix running in Chrome


Building under Linux is no drama, just make sure you have NodeJS, Zlib, SDL and Emscripten installed. You might also need to modify makefile.js to remove the warning as errors flag:

var flags = ["-Wall", "-Wextra", /*"-Werror",*/ "-g3", "-std=c99"];

Then it's just a matter of running the "makefile" to get a binary:

node makefile.js

Under Windows, it's a little harder due to a lack of gcc natively. This was my approach:

  1. Clone the Halfix code from Github.
  2. Adjust makefile.js as per above to remove the -Werror flag
  3. Install Choclatey then install mingw: choco install mingw
  4. Install Emscripten
  5. Download SDL 1.2 and zlib and extract to .\deps in the Halfix directory
  6. Build Halfix for Win32
node makefile.js win32

If all goes well you should see halfix.exe ready to run!

You can download a test build to play with at

Or run it in your browser at

Leave a Comment