Acorn machine

Instigation

Another project? I really just wanted to draw an Acorn machine after having watched Micro Men, The Computer Programme and misc. Acorn related videos. Actually, I might not have wanted to draw an Acorn machine per-se, but a SONY HitBit F1XD as that's probably the best looking computer+keyboard case ever made (their red HitBit 101/201 is also up there).

Anyways, as I watched the videos of people using these computers and the built in BASIC, I was again reminded of how close they were to being a really useful beginner programmer platform, and that's something which doesn't quite exist today. Now you do most things at a very high level today due to the complexity of OpenGL and hardware. The Raspberry Pi was alledgedly supposed to fill the role of kids-learning-computer but I think it failed - it's more like Bionicle than regular LEGO. People (mostly hackers) are finding the RPi useful of course, but I don't think many people actually use it as a computer or programming learning tool... they toss an image onto the SD card, rehouse the RPi and use what was already made by others.

Of course, hardware from the late 70's to mid 80's had an unfair advantage when it came to getting people engaged. People who used computers back then were already quite interested in this new technology and more patient with figuring stuff out. There were no cat videos or twitter to distract, and no burden of knowing that someone else have already made what you wanted to do (either because they hadn't, or because you couldn't know about it). Just making things go with future-tech was quite empowering... though I would argue that making things go with old-basic-tech also has appeal!

Thoughts in the BBC Micro Bit and GUI programming

I just read about the BBC Micro Bit (future me edit: There's the RPi Pico now too, using Python). At first I got quite excited because I thought the BBC were doing something like the beeb, maybe scaled down to a SBC / SOC. What they are planning though, appears to be a microcontroller linked to a 5x5 matrix of LEDs (enough to do letter/pattern scrolling etc.) It will be given to UK school kids aged 10-12 ("Year 7"). I suspect that the LED matrix will quickly grow boring. I would want to do sprites and stuff! The whole concept is a little weird because the board will look like confusing-hardware-stuff to some, but it will be programmed using the "beginner friendly" Scratch or Blockly. I've tried to use languages like those, but always find myself struggling more to understand the visual language of the icons, and under which mystery icon the sub icon that I want is. If I have to spend time learning a system, why can't it be a real system that's useful elsewhere? A modern BASIC dialect can look quite friendly if colored up by a proper IDE!

Evergreen?

Technology quickly becomes dated. Old computers seem to run even slower than we remember when in the shadow of this years latest and greatest. The RPi needs to be updated, and the Ouya probably won't be. However, there's a small chunk of people who don't mind the challenge of working or playing with old stuff. There's the people who still write games and demos for vintage systems. I've worked on indie games with a retro look, and they continue to steadily sell as the Direct X versions fly by. Then there's Minecraft that charms people with the... mental graspability of working with large low poly blocks. What I'm laying out here is a product which latches onto the same sort of appeal. Something old, something new... something, uh I guess it's cream and green.

When you booted up a home computer like the Beeb or C64 you were immidiately greeted with a BASIC prompt. I was too young in the mid 80's to understand programming but remember typing in examples from the handbooks. The thing about a computer like the C64, Electron or Speccy is that you can almost understand it, and BASIC scales well from high to low level. You can print characters on the screen with PRINT, or POKE directly to screen memory. Programming using the mono-color command prompt is quite awkward though, and a major hinderance back then was the lack of examples and online help (and having to save on tapes). There were also hardware and software quirks which we can solve better today.

Nowadays I use BlitzMax (BASIC-C hybrid) on Mac, PC and Linux, but when I want to do something like 16 color graphics I have to either write a software render engine from scratch, or fake pixel graphics using OpenGL. An urge has built up inside me to see a computer which could do "retro" graphics for real.

I guess the goal of this project is to speculate about how a programming interface with modern conveniences would look together with a BBC Micro era low-budget computer (without the hardware quirks). I'll be using modern components and perhaps fantasy components (ASICs). The whole thing could probably be done as an SoC with an ARM core, but I think it's more visually fun to show some discrete components.

Top: Later games for the machine often came on 3.5" floppies packaged in jewel cases, with the manual working as cover.

Bottom: My mockup here actually features some 70's colors - dark-brown and oranges. Spherical patterns were popular then too. Old keyboard often had fun colors and prints on them. Everything now is monolithic.

The case has slide-in IO plates (simple plastic boards going into slots) on the sides and back. I don't think molding ports into the main case is a good idea (this keyboard, if USB, could house other kinds of hardware and it's kind of sad to see people cut/drill cases up). Given the height of the case, it's possible that mounts for something like a Mini-ATX could fit.

The machine (tentative)

Indeed, an EE would immidiately be able to tell that the layout makes little sense (or me, from the future! There are no caps on the crystal, which is also too far off!). I like painting these though, making stuff look cute. If you look at motherboards today, people do buy designy stuff with aluminum profiles, prints and even "armour". I also like the idea of discrete components which are easy to read. A generic FPGA sitting there doesn't look as interesting and feels sort of fake.

Future me here with a board version using two STM32F103 or whatever. Actually one might need to separate Audio and Video because both those are heavy. I'd like to use separate RAM (parallel, 8-bit) but couldn't decide on a type or package. I suppose if this was like an M1 Mac everything could be in one expensive ASIC package, including some DRAM. Microcontrollers do have some SRAM but often about as much as a late '70s computer - a few KB. I've elaborated more on a MCU computer over on my "Handheld" page.

Power on

    *** Acorn SW, model Pi ***
 64K RAM, 256K ROM, 512K Storage.
----------------------------------
Get started: HELP, INFO, DIR, DEMO
ROM programs: ABIDE, APEX, ATREK
----------------------------------
> ABIDE 

When I boot up a computer for the first time, it helps to be given hints of what to do. Older computers relied more on user manuals than in-program help I suppose. Modern command prompts are similarily, needlessly cryptic. Two simple lines of text would help, and actually helpful help files.

A more advanced text editor with syntax highlighting, syntax help, indentation, text buffer, copy-paste, mouse support etc. Programs are compiled into machine language.

The games!

Whilst Galaga, Tetris and Breakout are classic games, ports are everywhere nowadays, so I'd like to see at least some games which feel British and typical for the Beeb and Speccy (or later). In order of complexity, a TOP-10 list from, uh, 1989 when the computer was towards the end of its life:

8 color repton mockup.

Not quite what I had in mind for the OS. It needs to be simpler, perhaps running in text mode. This mockup is based on Arthur.

Steps to realization

10 INPUT A$
20 IF A$ = "Take a RPi and throw it in a cardboard box and play pretend." THEN GOTO 30
25 IF A$ = "Here, have 20-40 million." THEN GOTO 40
30 PRINT "...?" : GOTO 10
40 PRINT "HOORAY!"
50 PROC_Convince the BBC and ARM to collaborate on the project ("Flash$$$")
60 PROC_Develop an emulator to help nail down specs ("-$" )
70 PROC_Develop the OS, ROM programs, BASIC compiler and test games ("-$$")
80 PROC_Design and manufacture the custom chips ("-$$$")
90 PROC_Assemble first rev of the board and work out the kinks ("-$")
95 PROC_Design the keyboard case and peripherals and fund plastic injection ("-$$$")
100 PROC_Kickstarter for promotion because that's how it works nowadays ("+$")
101 REM I guess we're sort of done? Eh, someone else take care of this.
102 PRINT "Klytus, I'm boored..."

Electron Slim? This is just an edit of the wikipedia image. Keyboards are a pain to draw so I didn't modify it much. Half height keys would fit this slimmer form factor better I think. I like having some border space around the keyboard. Modern ones which end right at the key edge look wrong. I think the C64 mini tried that too :-/

The ULA socket on the issue 2 boards is very sexy, even sexier than PLCC, so maybe a window over the keys so it can be seen at all times!!!

Random roughs.


Acorn Electron purchase

Elk

I wanted one primarily because of the leadless chip carrier socket on the issue 2 boards, so I got a junk machine off ebay. Unfortunately it turned out to be an issue 4 with the ugly flat metal socket. (T_T) Serial is 07-ALA01-0029754. I thought it might be low enough for issue 2 but apparently it was not.

This machine was pretty badly mistreated exteriorly, though the keyboard appears to be fine and cleaned up nicely. I speculate that the ULA or another IC broke. Kid owner tried to pry the case open with a large flat screwdriver, causing quite a bit of damage along the edges (dents and cracks). Then the dad opened it and was completely stumped as there's no trace of re-soldering on the motherboard. Then it ended up on the attic for decades (no window/side type yellowing). The screws were lost (arrived open). Eventually it ended up on a flea market for next to nothing and finally got resold to me as "untested". I paid £29 which was probably too much for a junky Elk, but I'm not in the UK so I can't pick these up willy nilly.

Untested always means broken but I knew that. PSU is within specs and I have continuity to the RAM, ROM and CPU on 5V and GND traces. I noticed that the AC only goes to the expansion port. There's a bridge rectifier and regulator on PSU board so I'm using 9V DC. Caps look fine. I didn't leave it on for more than 10 seconds but it seems to reboot after a while. The glitch graphics appear to be static. RAM, address logic or ULA? I can see that the pixels change a bit in the repeating pattern. Could be reflecting changes to the video/char memory as instructions are being performed. Maybe the render cursor doesn't move as it should. It's obviously not trying to render a with just the BASIC boot prompt and blanks. This is without the speaker and keyboard plugged in... which supposedly matters but I got the same result with the keyboard plugged in after testing again. Best case scenario is an error in the address decoder area - those ICs can be replaced. A bad ROM is a bit more work. The ULA is socketed but likely rare and obviously not in production anymore.

Decided to open and take a look at the ULA socket as sockets can suffer from intermittent contact. Several of the pins were pushed down into their groves, and when nudged gently... they immediately broke off, or were already loose. (>_<)! Looking at the sides of the socket... the dreaded green corrosion, busy eating through the pins. However, if the system was forced open and stowed away long ago then this might not have been the initial problem. The issue 2 socket would've been easier to fix as on this issue 4 the ULA pads face down, not up so I can't measure for continuity to the chip itself. I might be able to patch up the pins with a fine tip on the iron. For now, I used some vinegar on the pins (apparently supposed to halt the corrosion). Continuity seems okay on the still erect pins.

Idea for fixing the broken pins with leg scraps.

Oh-No. It's under the socket too. Vinegar, Isoprop, Reheat joints. Continuity test? Maybe the kid spilled something in it, tried to pry open with screwdriver in panic? No soda stains or corrosion anywhere else on the board though.

I had a terrible time soldering this. It's probably gonna break the moment I insert the ULA. Also messed up with the vinegar and didn't quite get all off with the isporop (._.) Supposedly it's corrosive. But a test on copper tells me it's not fast acting, or conductive. Anyways, I highly doubt my work here will actually fix the fault.

!

I... well. I never doubted my skills.

The TV keeps blacking out during AV, but this is not a reset as I previously thought. It might be the TV not liking the video signal, or perhaps the video circuit is being flaky. As for the ULA, maybe it was badly seated to begin with. Would likely have fried if anything was spilled in the machine.

~ * Photo OP * ~

Conclusion and review

Upon further testing, I discovered that the 1 key doesn't work. Likely a contact/switch error. An error in the keyboard matrix would affect multiple keys. Perhaps the broken key is what prompted the screwdriver attack, and why the MoBo was untouched. The ULA socket simply degraded while in storage.

AV resetting seems to be down to one of my TVs. I spent some time typing in a BASIC program on the other set, no problem. However, the keyboard isn't very nice to type on. I got a few double keypresses and missed ones. Could be the age of it, but the springs doesn't give a tactile "I've been pressed down" feel. I didn't disassemble the keyboard to clean the contacts, check traces, etc.

The cursor keys at the top right are lured out using the CAPS LK / FUNC key all the way over to the left. Not much use as there's seemingly no multiline editing. 80 column mode is nice. The screen coordinate system (for plotting) is weird. Also, I frequently hit BREAK (where backspace is nowadays) by mistake and killed my listing several times. In nearly all respects, my HiTBiT-101 from 1984 is a Porsche in comparison.

Epilogue

I took the bull by the horns and fixed the Acorn Electron keyboard. The culprit was severe oxidation on the contact pins. No need to pry the housing apart as the bottom pins/legs can be unscrewed using a plier, then sanded. Tools used: Solder sucker, keycap puller, prying blade.


2021 Keyboard Layout Ideas

Modified Dvorak and Qwerty versions. And an expanded variant with more keys and a somewhat more traditional layout, save for the lefthand bias. Perhaps moving up the num row could work.

This Acorn Electron keyboard concept believes skipping the spacebar row is a good idea for some reason. Thumb will likely fall off the edge. 71 keys, so a 64 matrix then 7 or 8 modifier keys I guess. Text nav/editing keys on left hand... bit of sideways movement there which I wanted to avoid with this layout, but maybe manageable. Numpad/math at top. I'm lefthanded but mouse with my right, so I'd like to have numbers and cursors on the left while the right hand is on the mouse. Diacritic dead keys orange on num keys. Unsure if text on the side of the keys is a good idea, but the BASIC nerd in me gets a little excited by it. The Electron top text is actually double-shot and not printed iirc, but it's probably more expensive than modern lettering methods. On some keyboards the bottom row keys are sloped differently (not just on modern keyboards, my old HitBits do it too) but it means making a few more key moulds.

I don't know what the specs of this Acorn Electra variant would be, but it has to be Arm (e.g. M0+), and a big socket with a non volatile custom chip (CPLD or PAL) representing the ULA, for simple graphics and sound. A small microcontroller for PIO and drive. Oh, I forgot I wrote some specs stuff earlier on this page.


Art by Arne Niklas Jansson

AndroidArts.com