This is one for fans of PAL III, the assembler language used on the PDP 8/e. PAL III was a genuine assembler language, in that there was none of that macro nonsense. Instead, there was literally a one-to-one mapping between each line of your code and the location it went into. Which made you think.
The code was divided into ‘pages’ consisting of 200 octal words, where one word consisted of 12 bits (hence the octal part – each address could be expressed as four octal numbers). Your code could directly address either its current page or page 0. So you tended to stick all your frequently used constants on page 0. If you want to refer to an address outside your current page, you’d need to do it indirectly, which lost you an entire word of memory. And you didn’t want to do that when you only had 4K of them to play with.
I wrote this Binary Editor as my Applied Maths S Level Project back in 1973, and in case you’re wondering, I got a Grade 1 for it. Of course I bloody did.
Here’s the specification for it, scanned from a carbon copy of the version I handed in. I’d like you to pay particular attention to that gorgeous flow diagram.Binary-Editor-Overview
Here, God help me, is the User Guide, printed using one of those awesome Banda machines that the teachers at our school used to get high on. Just look at the preposterous attention to detail: ‘MK 1’! ‘JMPSD/0101A’!
And yes, my lovely clients, I did use to provide user guides for my software…Binary-Editor-User-Guide
Finally, here’s the actual software. Bit tricky to read, because it’s never made it to GitHub and the printout hasn’t aged well. But I think you’ll get the gist of how it works. There are, after all, comments. If you find any bugs, though, do let me know.Binary-Editor-Code