QL-SD-ROM

Picture of the uncased QL-SD-ROM plugged into a QL
QL-SD-ROM plugged into a QL (note that the switch shown is unrelated to the QL-SD-ROM)

For the last few weeks I’ve been the proud owner of a test version of Marcel Kilgus’s QL-SD-ROM add-on for QLs.

This is a variant of the well-known QL-SD device, which lets you use SD flash memory cards with the QL. Previous versions of QL-SD, although well received, involved opening up the QL and installing cards inside the QL, possibly even removing a microdrive to allow the SD card reader to use the MDV slots on a QL as a card slot instead.

None of that with this version. If you are familiar with the old TF Services RomDisq card, a flash memory add-on with 2 to 8MB of onboard flash memory storage, this will look fairly familiar to you – it just plugs into the EPROM slot. All you need to do is remove the QL ROM from inside the QL (although the QL-SD half of the product can be used with the QL ROMs still in place if you don’t mind losing the ROM images facility).

QL-SD-ROM has two micro-SDHC card slots at the rear, and some on-board flash memory to let you load up to eight QL ROM images to use instead of one inbuilt QL ROM. Very useful if you wish to use different ROM versions to test out software, or for software which only runs on a particular ROM version. Micro-SDs are the cards commonly used to provide extra capacity on mobile phones, for example.

The interface require that you use the HC variants of SD cards – these are cheap and commonly available nowadays. Standard micro SD cards are limited to 2GB but the HC variants are not. It is important to note that the physically smaller micro-SDHC cards are used, not regular-sized SDHC cards. Many of these come with adaptors to carry the micro-SD cards to allow them to be plugged into standard SD card slots on other computers if you wish to transfer software between computers.

Picture of a QL-SD-ROM, showing the card slots side.
QL-SD-ROM card slots

The QL-SD part works pretty much like the original QL-SD and doesn’t merit that much discussion here since it will be familiar to anyone familiar with the original QL-SD. QL files are stored in a “container” file called a “qxl.win” on a DOS (FAT32) format card. The card should be freshly formatted, so that the QXL.WIN is contiguous on the card. You can have several QXL.WINs on the card if there is enough room (SDHC cards are typically 4GB or even larger so even the smallest capacity SDHC cards will be more than enough for the QL – the ones I used were 16GB in size, much of that capacity unused so far, although I’m sure I’ll find a way!) – I put the main QXL.WIN file under that name, then simply added the others immediately after that, numbered accordingly (QXL2.WIN, QXL3.WIN and so on). It appears that there’s no FORMAT command to create a QXL.WIN as yet (or maybe I’m not trying to use it correctly if there is), so you have to make them using an emulator, or download a ready-made one from a support page. Although I haven’t tried on an unexpanded QL, it appears possible to use a small QXL.WIN file of about 3MB on an unexpanded QL, although the manual does not recommend this as it only leaves about 60KB of QL RAM free to use once all the memory needed for QL-SD is taken into account. On a QL with expanded memory choose the QXL.WIN size carefully – larger container sizes will mean more time taken to search for files etc and slow down the QL somewhat. The QL-SD manual does make some suggestion as to the maximum practical container sizes on various sizes of memory expansion, such as 64MB on a QL with 256K RAM expansion, or 128MB on a QL with 640MB RAM. Important to note that I was working from a standard QL-SD manual (the manual for QL-SD-ROM was not ready when I received the test unit, so I had only partial documentation). Different QXL.WIN containers on either card on the device can be linked to given drive numbers to allow up to 8 drives, although this obviously uses more QL memory to handle each card and container file data structures. As I didn’t have a full manual, I can’t be exactly sure if the final version works in the same way as the original QL-SD in this respect.

Picture of components side of QL-SD-ROM card.
Other side of the QL-SD-ROM

You may be familiar with the concept that a QL ROM slot does not normally allow write access – it is designed to read EPROMs. To work around that, back in the days of the RomDisq, a kind of “double-read” method was devised to indicate to the card that the following data should be treated as a write access – by reading from a specific address, the card treats what appears on the bus next as data to be written to the card. This has the effect of slowing down the writing of data. But if you are used to microdrives or floppy disks, it’s still more than fast enough. And you aren’t restricted to the small storage capacity of microdrive cartridges or floppy disks.

QL-SD-ROM is a pretty small card, measuring about 35mm x 50mm and simply plugs into the EPROM slot on a QL (or Aurora if fitted with a suitable ROM slot connector). It is quite thin, little more than the depth of the circuit board and surface mounted components plus the micro SD card slots – you can see just how slim the card is from some of the photos in the picture gallery. It has the two micro SD card slot facing outward from the back, and these are latching slots – as you push the card in, it clicks into place, then you push it again to extract the card and it springs out. The small size of the board meant that standard SD card slots could not be used, and the two micro-SD slots are pretty close together as you’d expect from a card only 50mm wide. Marcel even tested QL-SD-ROM with a micro-SD to SD adaptor cable which appeared to work, although only one of those could be used due to the slots being close together on the card. Presumably you could plug a micro-SD card into the other slot if you really wanted to go down this route for some reason.

QL-SD supports directories, which are created with a standard MAKE_DIR command. QL-SD uses the WIN device name, so instead of saving to MDV1_ or FLP1_ for example, you save to WIN1_ instead, e.g. SAVE win1_filename_bas. Most systems let you rename the device name using a command such as WIN_USE if there is a clash of device names, or software is configured for another device.

The ROM image handling side of things is new for a QL-SD card. It contains a 512KB flash memory chip. Used as eight 64KB segments, it allows you to load an image of a QL ROM into each slot (both 48K main ROMs and 16K external ROM images can be used), so that you can have a choice of ROM versions on your QL. The QL normally boots up into the first slot, slot 0. Let’s say you have an image of a JS ROM loaded in there. You have an old program which only runs on a version JM QL. So you can load an image of the JM ROM into the second slot using a ROM_FLASH command to install it, and then use a ROM_SWITCH command to make the QL use the ROM image in that second slot. In effect, what was a JS ROM QL quickly becomes a JM ROM. Or Minerva. Or most other QL ROM images, with the proviso that if using a Gold Card or Super Gold Card, it has to be a version of a ROM that those cards recognise and can patch, since the (Super) Gold Cards patch the ROM as they start up, so if it’s a ROM version they don’t recognise, the (Super) Gold Card will politely let you know and not start. The MGUK and Tyche ROMs are examples of ROMs which won’t work with the Super Gold Card. Changing this would need a new onboard ROM for a Super Gold Card to recognise more versions of QL ROMs.

Marcel suggests that you only flash ROM slots 0 to 6 and leave ROM slot 7 alone as an emergency fallback in case anything goes wrong with the image in ROM slot 0, which might prevent you being able to start it up. The reason for doing this with slot 7 is that there is a micro switch on the board which forces the card to start up from slot 7 in the event of a problem. Marcel also suggests that you don’t try to flash the ROM slot that is currently active.

Normally, you would remove the ROM from the QL to allow ROM images from QL-SD-ROM to be used. A QL with its ROMs still onboard can be used by setting switch 3 to “on”, but that prevents the 8 ROM image slots from being used. The QL-SD part can still be used in this case. Useful to temporarily use SD card storage on a different QL I suppose. The micro switches provide a degree of flexibility in how the QL-SD-ROM is used.

The test unit I received from Marcel came with a variety of ROM images onboard, although I don’t know how he plans to supply the final production units in due course. It was rather interesting to be able to boot up into just about any operating system version, including the little used 68k/OS. I even tried a Tyche ROM – most of these ROM images are available to download from the QL ROMs page on my website. The very few ROM versions which did not work were non-standard and often privately produced versions. Most worked as long as they were the standard length of 48KB. Flashing something <16KB will only flash the extension part (e.g. for updating the driver).

The standard commands used for flashing and reading ROM images are:

ROM_FLASH slot,file (e.g. ROM_FLASH 0,flp1_jm_rom will load the JM ROM image from floppy disk into slot 0)

ROM_READ slot,file (e.g. ROM_READ 1,flp1_slot1_rom will save what ever image is in slot 1 as a file called “slot1_rom”). Quite why you’d want to do this I am not sure, although it did come in useful when I suspected that I managed to corrupt one ROM image, so as some weird things were happening with that image slot I was able to save a copy and compare against a known uncorrupted version.

These commands were supplied as part of a small software extensions file, convenient to LRESPR only when needed. There were some additional undocumented extensions in that file and I don’t know what they do, if anything. They may not be in the final production releases.

One of my QLs has a “yellow” Gold Card, so-called because of the printed circuit board colour. This is an earlier version of Gold Card which has minor differences to the later “red” Gold Cards. Marcel was pleased to hear that QL-SD-ROM seems to work OK with the “yellow” card, as he did not have one to test it with.

I have an Aurora QL-compatible card, which has a Super Gold Card and is built into a small Epson case, along with a Qubide and a small backplane called M-Plane. The whole setup is something called a Minis-QL, originally produced by Q-Branch many years ago. Although my Aurora has no QL EPROM slot connector, the slot is reproduced on the backplane, and plugging in the QL-SD-ROM into that slot on the backplane seems to allow it to work with the Minis-QL system, as long as the Qubide card is disconnected. The LEDs are then upside down unfortunately, but with the case lid on you wou;dn’t be able to see the LEDs even if they were the right way up. The fact it doesn’t work at the same time as the Qubide may be down to addressing issues, or to a clash of device names – both use the device name “WIN”. Not that you’d want both on the same system of course! Slight proviso with saying it works with Aurora/Super Gold Card – since the ROM slot is reproduced on the backplane, I can’t tell with 100% certainty that it works with both cards since I have no way of knowing if the duplicate ROM socket is in fact 100% identical in functionality with the Aurora’s onboard EPROM slot. Although I have an adaptor for the Aurora EPROM slot, it is right angled and is blocked by cabling in the Minis-QL, so nothing can actually be plugged into it without significant rewiring as space is so short within the Minis-QL case.

There are four micro switches on the board to preset some aspects of operation:

Switch 1: disable the QL-SD part itself. But still allow the ROM slots to be available.
Switch 2: disable EXT-ROM. Do not provide ROM data on EXT-ROM space (upper 16K).
Switch 3: disable OS-ROM. Do not provide ROM data on OS ROM space (lower 48K)
Switch 4: Force ROM 7. If something goes wrong with ROM slot 0 and the QL won’t boot up from it, this lets you use the last ROM slot instead, by forcing the QL to boot up from slot 7.

Picture of QL-SD-ROM in a compact 3d printed case.
The QL-SD-ROM in an early 3d printed case.

When available, the QL-SD-ROM will probably be supplied as an uncased circuit board only – no case. You’ll see in the picture gallery with this review that Marcel supplied me with a trial 3D printed black case, which looks absolutely great what with the “QL-SD” logo and accurate slots for the two LEDs, micro switches and micro SD card slots, all held together by two small black screws. Marcel has hinted on his blog that he will release the 3D printer files for the case once QL-SD-ROM is finally available so that users can make their own if they have access to a 3d printer. Must admit that the trial case which Marcel kindly supplied with my test unit looks so good when plugged into a QL – it’s really compact and well suited to the good old black box.

Quite an amazing product which builds on the successes of the earlier QL-SD devices to provide mass storage for a QL system. There have been other ROM-switching devices available before (e.g. the one from Tetroid in Russia), but it’s oh so convenient to have an all in one system which simply plugs into the QL EPROM slot. I’ve been truly impressed with this fantastic little product, as I was with his QL-VGA card.

No word from Marcel at the time of writing when QL-SD-ROM will be available, so follow his blog at https://www.kilgus.net/blog/ to keep up with latest developments. I am absolutely convinced that this will be a popular product and I genuinely hope that Marcel will be able to keep up with demand for it.

One thought on “QL-SD-ROM

  1. Pingback: QL-SD ROM news | Kilgus.net

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s