mailto: blog -at- heyrick -dot- eu

Who's got my back?

There's a guy that used to work at work, but he has been off since forever because of a bad back. He was off for a long time, came back, did a single day of work, and has been off ever since. That's part of why I was busting my balls (and back) in plonge - I've been covering for him.

Anyway, the thing is... Friday was a terrible day. So was Saturday. And Sunday. But by Monday I could feel an improvement. Enough that when I went to the kiné on Tuesday evening, I could do most of the exercises.
Work has been pretty good. I have to work in plonge, it's my assigned position, but I have been able to avoid doing "heavy" things, for the most part. A big help was finding somebody else to replenish the 20l containers of chemicals (that weigh something like 25kg). They need to be collected empty or mostly empty, taken to the stock room that has a big 950 litre tank, refilled, taken back, and then heaved into place. It only takes ten seconds but I can feel it for quite a while afterwards.
I'm not good, not yet. Today is the first day I feel like I can twist, a little bit.

But you know what? I put quite a bit of my recovery down to going back to work. I would feel pretty bad in the morning, and quite a bit better by five in the evening as I was on the way home. The difference is seven hours of rest versus seven hours of movement.

Now, I get that some bust backs would suffer greatly from movement - like slipped discs and suchlike. But for muscular issues? Wouldn't being rigid and immobile cause the muscles to atrophy in position? Keeping moving, within the limits of what is not (too) painful keeps them active and flexible.

So, I'm recovering slowly. A lot of things hurt, but on the other hand a lot of things don't hurt any more. So it's progress. ☺

 

The kiné

A bit of a waste of time, to be honest. The woman was pleasant. She gave me a hard-to-read photocopy of a photocopy of a set of back exercises. She then demonstrated and had me replicate what she was doing. Basically things to stretch and flex the back.
Since mom and I were Care Assistants with old people way back when, I knew half of the exercises and was already doing some of them. Like the "lie on your back, raise your knees, gently rotate them from side to side".
The whole thing was done in fifteen minutes. Twenty if you include creating a dossier on the computer.
I have another visit on Wednesday after work for follow-up. But to be honest my doctor could have just printed off a copy of the exercises and given the paper to me...

Still, I have a special piece of paper that should be filled in at the end, so I can see how much she'll be charging for this.

 

Bread!

Since I feel like I want some comfort food, right now the breadmaker is clicking behind me in order to work its magic. It was quite nice the other weekend to slather marge onto warm bread. This time, I even have a bread knife that I got from Lidl that I'm excited to try out.
Well, not excited exactly...how excited can somebody get over a piece of cutlery? It's more what it is doing that's the interesting part... so... I guess "sort of excited"?

Oh, and the joy of a breadmaker is that one doesn't need to do all that sourdough nonsense that suddenly became popular during The Covid Era. I don't even know what sourdough is or how to make it. Instead, I place water, salt, sugar, flour, yeast, and some sunflower oil (in that order) into the pan and leave the machine to do its thing for the next four hours.

Later: The result? Yummy!

Thick slices of warm bread
So yummy many crumbs!

 

Welcome to America!

So it seems that soon the Americans will want five years of access to social media accounts for visitors from the UK, France, etc (places with relaxed Visa requirements).
Well, uh, what happens if you leave Facebook, Xitter, Insta, and so on blank? As in your social media presence is more an antisocial media absence?
I used to frequent a nerdy forum once upon a time, and then there's this crap that you're passing valuable minutes of your life reading. And, well, that's about it.

And for what? To discover if anybody thinks their gun control is out of control? If they think there is no concept of "care" in healthcare, only profit at all costs? And if they think the President is an A-grade dickhead?

So what?

Isn't that what "freedom of speech" is supposed to be about? The ability to have such opinions without being tossed into the gulag?
Furthermore, if they are going to refuse entry into the country everybody who thinks Herr Trump is a piece of shit more interested in cosying up to Putin than whoever is leading the Democrats these days... they are going to kill their tourism industry stone dead.

Yes, the country is being run by some next-level wankers...but here's the thing, tourists didn't stop coming to the UK when Johnson was in charge and god knows he was a political liability. And we all roll our eyes at the continuing developments of the Andrew formerly known as Prince.
In short, no country is immune from idiocy, and no country is "great". We all have our amazing and our shame. Hiding from the latter won't make it go away.

Clearly I don't think much of the face that America presents to the world. I would, however, refrain from expressing such opinions if I was actually in the United States. Because, well, it's called politeness. When you're in their country, be nice and keep your thoughts to yourself... right?
Plus, I am acutely aware - just like with the Brexit fiasco - that while millions of people actually voted for the current situation, many millions did not and are upset and hurt over what is going on - especially as the cretin in charge strips people of more rights, takes a massive smelly dump on the Constitution, and deploys the military to patrol their cities.

But, hey, it's America's choice to exclude people for dumb reasons. And it's them that will have to deal with the corresponding drop in tourism as they make the place less and less of a potential holiday destination. They just shouldn't be at all surprised if, in five or so years (because the EU can't do anything quickly), Americans coming over here also have to cough up years of social media history. The only difference is I think that most EU countries would be a lot more permissive in what they will accept. Threatening to blow up a major airport, clearly a bit of a red flag. But saying Macron is a clueless wannabe dictator? Uh, yeah, more than a few of his own government think that so take a number and stand in line...

 

For clarification: While I would like to visit mom's hometown and see the place she grew up, I have exactly zero plans to visit the US. I simply cannot rationalise how one needs to carry a weapon to go shopping, how pervasive a really twisted interpretation of Christianity is, and their horrid excuse of a medical system (and yes, it might be world-leading, but at those sorts of prices I would expect actual miracles).
That doesn't mean I dislike Americans. Far from it. It's a person's behaviour that causes me to like or dislike somebody, not where they are from. So it you're basically Zooey Deschanel then come say hello. Extra bonus points if you prefer tea. And I'll propose marriage if you heat the water in an actual kettle and not in a microwave. ☺
But, if you have Good News to share with me, thanks but I think I'll pass.

If I was ever to visit the Americas, I would go to Canada. Which is basically America without all the naff parts. As much as I would like to see Maryland, the country feels just a little too hostile to outsiders. Which is a shame, because I think behind all of the institutionalised patriotism and flag hanging... is a bunch of normal people doing normal life things and just trying to get by. In other words, like you and me. It's just the few that shout louder that mess things up for all the rest of us. I'll remind you of that final sentence when the UK is dumb enough to choose Reform for their government.

 

An HCR Micron Plus EPROM programmer

Many years decades (eek!) ago, I used to program my own ROMs using an HCR Micron Plus EPROM programmer.
Initially I used it with a BBC Micro over Econet, and it was painfully slow. Then, just for the sake of it, I plugged it into the 1MHz bus on the AKA10 I/O podule fitted into my A5000 and fired up !65Host. To my great surprise, it worked, and was faster than a real Beeb.

An EPROM programmer
Stop looking at the chocolate, look at the old tech.

These days, the A5000 is dead (battery leakage) and I would imagine the RiscPC is likewise, though I have not looked. I have the Micron, but nothing to plug it into. Well, that's not entirely correct, I could dig out the old Beeb and see if it works and powers up without the power supply capacitors exploding. But if I were to do that, then what? It's not as if the old hardware is exactly good at talking to anything modern (aside: although the people of *. have been working on that).
At least all of my RISC OS machines (bar the A3000) had Ethernet in some form. Even if 10baseT, that's enough to send or receive a 16K ROM image from something contemporary.

It is non-trivial to use the programmer with modern hardware. Firstly, the bus is the Acorn 1MHz bus, and secondly because it is older hardware it works at 5V, not the modern 3.3V.

The 1MHz bus pinout is this:

A diagram of the Acorn 1MHz bus socket
The Acorn 1MHz bus; taken from the AUG.

As you can see, there's an eight bit data bus and an eight bit address bus, along with two more address control pins not-PageFC (addresses &FCxx, also known as Fred) and not-PageFD (addresses &FDxx, also known as Jim) along with some other logic like IRQs and the 1MHz clock and a read/write select.

The difference in the page addressing is that Fred (&FCxx) is for devices that only need a small amount of memory, though this is complicated by Acorn reserving various addresses in order that - in theory - 1MHz bus devices could be daisy-chained. Maybe that's the case for modern upgrades (like SD card interfaces or whatever the *. geniuses have put together) but back in the day I never saw anything on the 1MHz bus that was chainable. The HCR Micron Plus is no exception.
Jim (&FDxx), on the other hand, is for accessing up to 64K of paged memory.

I could tell that the EPROM programmer only uses Fred because right beside the bus input is a 74LS02 chip. This is a quad OR gate, which is the recommended way of "cleaning up" timing disparities between the not-PageFC signal and the 1MHz clock. Just beside that is a 74LS138 which is a 3-to-8 decoder. That takes a three bit binary input and selects one of eight outputs depending on what was input.

Before I go any further, let's look at a picture of the inside of the EPROM programmer.

A photo of the inside of the HCR Micron Plus EPROM programmer.
The inside of an HCR Micron Plus EPROM programmer.

The blue thing, bottom left, is the 1MHz bus input. The 74LS02 is just above it, and the 74LS138 is to the right of that.

Let's look at an annotated version of the same picture.

An annotated photo of the inside of the HCR Micron Plus EPROM programmer.
The inside, this time with annotations.

This is where it gets interesting. The two big chips (not the sideways ones) are MC6821Ps which are dual eight bit I/O chips. They are essentially the same thing as the 6522s used inside the BBC Micro. So, um, why not use 6522s? I have read through the datasheets and while they are not entirely pin-compatible with each other, they appear to do much the same thing in much the same way. The difference that I found, that might be the reason, is that the 6821 has a tri-state input bus for the data and address pins. That is to say, when the chip is not selected, it pretty much vanishes from the circuit.
There is another difference - the 6821 doesn't have any internal timer like the 6522, but this is probably not needed in this situation. It is also the reason why the 6522 is a VIA (Versatile Interface Adaptor) while the 6821 is a PIA (Peripheral Interface Adaptor).

So what's going on then? Well, all of this says to me that how this device operates is by basically banging data into two PIAs which can then be used have 32 I/O signals (8×2 twice), which are most likely organised as a set of buses. This isn't unheard of, the BBC Micro used two 6522s internally, with the four 8 bit buses split up as: User Port, Printer Port, Keyboard and Slow Bus (internal: sound and speech and various latched signals).

I have not looked in detail, but given that it's an EPROM programmer, I am going to guess that it is organised as a sixteen bit address bus, an eight bit data bus, and then eight bits for control signals. The really big complication here is that different sized EPROMs have different numbers of pins - obviously a 4K EPROM will only need twelve address pins, whilst a 32K one would need fifteen. Unfortunately it's not simply a case of bunging some extra pins at the top or bottom. As if that wasn't enough, there are three possible programming voltages: 12V, 21V, and 25V. All of these things need to be correctly selected. Therefore the control pins will be used in some manner to select the programming voltage, what pin it actually goes to, and to pulse it as required.
There will also be some way of selecting the internal SRAM instead. I would imagine, in order to reduce the number of control signals, the selection of which chip is actually active will be based upon the address. A thirteen bit address bus can cater for 8K of memory, so you'd simply pass a 14th bit through an inverting gate to select which RAM chip is being used. If Address:13 is low, it is the lower 8K so the chip after the invertor, and if Address:13 is high it's the upper 8K so the one before the invertor.

Aside: I can wryly smile that RISC OS has been running here for many days. Maybe a few weeks. I've not been programming it, only using it to look at the TV schedule. Well, I just moved the mouse because I wanted to open a TaskWindow to check that 8192 really was 13 bits, and... the mouse froze. No idea why. That's RISC OS for you, it'll just randomly die (or something will die and the OS will say "ME TOO!" and that's it, a stuffed machine, especially galling if you had unsaved work). This is why I am quite of the opinion that any 64 bit version of RISC OS that doesn't enforce a much greater separation between the kernel and everything else would be a monumental waste of time, effort, and money. Oh, sure, it'll be harder and it'll break the entire existing API, but the existing API and the flakiness of the system is absolutely not fit for purpose in the twenty first century. Remember how much we all mocked Windows95 because it would blue-screen at the drop of a hat? Well, at least W95 made it as far as saying "oh bollocks". RISC OS doesn't get that far, it just instantly irreversibly freezes.

The big sideways chips are 6264s, 8KiB SRAM. This means that the programmer has 16K of SRAM onboard. This will allow it to program EPROMs up to 32K in size in one pass, using 16K stored within the programmer, and a 16K buffer in the Beeb. If I remember correctly, 64K EPROMs were written as two 32K halves. The programmer does not support anything larger than that, and they would have been uncommon in the days when 64K was the entire address space of an eight bit processor (such as the Z80, 6502, 6800, 8051, 8080, etc).

Above the upper PIA is a pair of 74LS374s. This is an octal flip-flop. This is a type of latch, where when the clock goes positive the outputs are set to match the inputs. Given that there are two and they aren't close to the EPROM socket, maybe the eight control lines pass through these to permit more control signals to be generated from the one eight bit bus.

It is also worth noting that the PIA, just like the 6522 in the Beeb, has an additional four output pins. There are two interrupt signals per port (CA1 and CA2). CA1 can only be an input, and it can be an interrupt and/or control the latching of port A data. CA2 can be an interrupt input or an output. This was used on the BBC Micro to implement the parallel port, with the VIA's CA2 being the !STROBE (tells the printer that there is data available) and CA1 being the !ACK (the printer saying that it has read the data). There are many more signals on a parallel port (BUSY, PAPEROUT, !ERROR, SELECT, !FEED, !INIT...) but those ten signals (eight data, !STROBE, and !ACK) are all that's needed for a minimal printer port.
At any rate, this gives us 32 normal I/O pins and 4 special output pins.

So the basic premise can be understood simply by looking at the main chips. As I said above, it'll be using the two PIAs to set up an address, the data, how to actually interface with the chip, and finally pulsing the right voltage to 'write' a byte. There will be something to select the internal SRAM instead of the EPROM, but by and large that's it.
The complication arises from working out the numerous other little chips in there. They will be address decoding, buffering, and latches. So while the premise is simple enough, making use of it all is going to be harder.

 

Once this is done, how to talk to the device at all? Well, the idea kicking around in my head is to use three PCF8574s daisy-chained. These are IIC devices that translate the IIC serial bus to eight bit I/O. Since modern stuff is 3.3V, they'll need to pass through something to convert between the two voltages. I have some TXS0108Es, but I'm not sure if they'll cope with something like the 1MHz bus (and a metre of unshielded ribbon cable).

The slowest typical IIC operates at 100kHz. Each bit takes a hundredth of a millisecond; IIC can transfer 100kbit/sec which is about 12KiB/sec raw; but as we can only send/receive one byte to/from each device (it has no registers, the byte is the eight I/O lines) and each time has a device address to write, plus other protocol overheads, I'd maybe in the order of 4KiB/sec running flat out.
Note: Other devices, like OLEDs and teletext chips can run much faster because they use auto-incrementing addresses - each byte read/written uses the next address in turn, so you can start, address the device, set the internal address, and then transfer a number of bytes and then stop. But as I said, there's only a single byte here, so that implies that each read or write is a new transfer (with start, device address, and stop).

The standard programming pulse is around 5 to 50ms, which is a two hundredth of a second to a twentieth of a second. It is technically possible to program an EPROM by setting up the data and address manually and prodding a switch to program it, but a slightly better version of this would use a 555 timer for a proper pulse, this is to save overloading the thing with too much of a freakishly high voltage.

The real question here is if the PIAs will cope with an erratic 1MHz bus running at considerably less than 1MHz, and possibly only flipping on when something needs to be clocked in and out of the chips? If they can tolerate that, then we may be able to rig up something.
Luckily, the PIAs don't actually have a clock input. They have an 'E' (Enable) output, which looks like there aren't any particular 'maximum' timings other than waiting about 300ns between E going high and there being valid data available. 100kHz is ten thousand nanoseconds, 400kHz is two and a half thousand, so simply setting up to read the data over IIC is going to be enough time.
So it shouldn't present too much of a challenge to talk to these devices from an ESP32 using the Wire library for IIC. The question, as I see it, isn't so much talking to the device, it's talking to the device correctly.

Doing this may be slow at reading, because the limiting factor there will be how fast we can bang an address and control and read out the data; but for programming there should be enough headroom that it'll be possible to manage any useful programming pulses. 1ms is 1kHz, basic IIC runs at 100kHz, so we'll need to run a delay for the appropriate duration.

Some ICs to make things happen.
Fresh new unused ICs.

 

Well, it's a theory I'm playing with. It would be nice to have some method, even if slow, to deal with "ye olde EPROMe" devices.

There are programmers available for modern machines. But not only are they fairly expensive, there's also the question of whether or not they support the 25V required by the old EPROMs. Quite a few I've seen only support 12.5V and 21V.
Plus, you know, rigging up a frankeninterface and cobbling some code together to attempt to make it work, sounds like fun...for a very peculiar definition of "fun". ☺
That being said, I don't do much with EPROMs and old kit, so it's not a priority. Just something rattling around the dusty corners of my mind.

 

 

Your comments:

Please note that while I check this page every so often, I am not able to control what users write; therefore I disclaim all liability for unpleasant and/or infringing and/or defamatory material. Undesired content will be removed as soon as it is noticed. By leaving a comment, you agree not to post material that is illegal or in bad taste, and you should be aware that the time and your IP address are both recorded, should it be necessary to find out who you are. Oh, and don't bother trying to inline HTML. I'm not that stupid! ☺
As of February 2025, commenting is no longer available to UK residents, following the implementation of the vague and overly broad Online Safety Act. You must tick the box below to verify that you are not a UK resident, and you expressly agree if you are in fact a UK resident that you will indemnify me (Richard Murray), as well as the person maintaining my site (Rob O'Donnell), the hosting providers, and so on. It's a shitty law, complain to your MP.
It's not that I don't want to hear from my British friends, it's because your country makes stupid laws.

 
You can now follow comment additions with the comment RSS feed. This is distinct from the b.log RSS feed, so you can subscribe to one or both as you wish.

Rick, 13th December 2025, 19:47
I didn't give this a read-through because my laptop just popped up a warning saying I have 10% battery left (and it's now 8%), so I just uploaded it as-is. 
The markup looks good, I don't appear to have switched to italics halfway through or anything dumb like that. 
 
If you spot anything, drop me an email. ;)
Zerosquare, 13th December 2025, 22:05
("Andrew formerly known as Prince": that's a good one!) 
 
Hmmm, unless there's something I don't get, isn't there a simpler solution and faster solution? Connect the programmer's bus connector directly to the pins of a 5V-capable Arduino (or similar). No need to add chips to do level-shifting and serial/parallel conversion.  
 
Or for the even lazier solution, there's this open-source project: 
https://github.com/AndersBNielsen/Relatively-Universal-R OM-Programmer
jgh, 13th December 2025, 22:57
I prefer Andrew Frater Regis, but that's because I'm a pompous twat who knows Latin and history. :)
C Ferris, 13th December 2025, 23:39
A King in All But Name: John, dominus Hibernie, frater regis

Add a comment (v0.12) [help?] . . . try the comment feed!
Your name
Your email (optional)
Validation Are you real? Please type 63144 backwards.
UK resident
Your comment
French flagSpanish flagJapanese flag
Calendar
«   December 2025   »
MonTueWedThuFriSatSun
24
8101112
151617181920
22232527
29    

(Felicity? Marte? Find out!)

Last 5 entries

List all b.log entries

Return to the site index

Geekery
 
Alphabetical:

Search

Search Rick's b.log!

PS: Don't try to be clever.
It's a simple substring match.

Etc...

Last read at 16:53 on 2026/01/17.

QR code


Valid HTML 4.01 Transitional
Valid CSS
Valid RSS 2.0

 

© 2025 Rick Murray
This web page is licenced for your personal, private, non-commercial use only. No automated processing by advertising systems is permitted.
RIPA notice: No consent is given for interception of page transmission.

 

Have you noticed the watermarks on pictures?
Next entry - 2025/12/14
Return to top of page