View All Posts
read
Want to keep up to date with the latest posts and videos? Subscribe to the newsletter
HELP SUPPORT MY WORK: If you're feeling flush then please stop by Patreon Or you can make a one off donation via ko-fi
#1971 #ASSEMBLY LANGUAGE #CHILDHOOD #COMPUTING #INTEL #MICROPROCESSORS #PROGRAMMING #TECHNOLOGY #ZX SPECTRUM

1971 was an auspicious year. I was born - and Intel released the first commercially produced microprocessor - the 4004. This would trigger a chain of events that would have a huge impact on the world and on my life.

The 4004 - By Thomas Nguyen - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=47684767

When I look back at the child I was, I can see that there was obvious intelligence and a thirst for knowledge. But I can also see faults and flaws - I could be very lazy when it came to school work, being able to fall back on my innate intelligence to pass exams and tests - and also being very willing to prioritize subjects that I deemed important over ones that I knew I could not do well in.

Apparently, I had to Wear This Hat At All Times

As a very young child (maybe 2 or 3) I suffered a bout of meningitis and spent some time in an isolation ward - a surreal experience that I can still remember snatches of now. But fortunately I suffered no long term consequences and quickly bounced back.

Growing up my mother was the major influence. My father worked as a civil servant at the Houses of Parliament. In those days, MPs would keep debating late into the night and my father would be at his desk however it did come with the benefit of long summer breaks whilst parliament was in recess. But for the majority of the time it meant my mother picked up most of the duties of reading stories and entertaining the children before bed. I have fond memories of sitting with my sisters as my mother read books like The Hobbit to us.

The Hobbit

My father was a skilled woodworker and we were often called upon to hold or sit on various bits of wood as they were sawn up to create new bits of furniture and shelving. He was also able to turn his hand to most DIY jobs around the house and, although I am nowhere near as skilled with my hands as he was, I absorbed a lot of knowledge just by being around him as he worked.

Both my parents loved to read and many of my father’s projects involved constructing yet more bookcases to hold the books. We were also very lucky to have a local library just a few minutes from the house which was an invaluable source of entertainment from a very young age.

Teddington Library

I had a deep desire to take things apart. I wanted to understand how things worked - sadly, my ability to take things apart far outweighed my ability to put things back together again - much to the frustration of my parents.

As I grew older computers and electronics became a source of fascination. I remember the lead-up to Christmas spending time pouring through the pages of the Gratton catalog (a UK equivalent of the Sears catalog) looking at the various science and electronics kits along with the early computers - making long lists of things that I knew would never be satisfied due to money constraints.

Gratton Catelog circa winter 1983

My first real experience with a computer was when we visited some of my parent’s friends from church - the father owned a computer and I remember playing Hungry Horace on his ZX Spectrum. Even more amazingly he had written some games of his own. I deeply regret not taking advantage of this immense source of knowledge right on my doorstep.

Hungy Horace

Unfortunately, I’ve only been able to find one piece of software online that he published - a turtle graphics implementation for the ZX Spectrum.

Turtle Graphics for the ZX Spectrum - Colin Hicks

Around this time my mother was pursuing a part-time masters in education and had concluded that computers were the future and would play an important part in the world. Finances had improved to the point where spending £129 (about £460 in today’s money!) on a computer could be justified - we became the proud owners of our own 48K ZX Spectrum. This must have been around 1983 which would put my age at 11-12.

ZX Spectrum - What's in the Box

A couple of years earlier my younger sister had been born. Allegedly “mind the wire” were the first words she learned as it was constantly repeated due to cables strung across the living room to the TV set. It’s a good job that by this point my elder siblings had grown out of after-school children’s TV as I would not get my own television set for some years.

ZX Spectrum Setup - a trip hazard for any small child running around

The manuals that came with the spectrum were excellent - with beautiful cover art - and I studied them religiously. Though I must admit having scanned through them again whilst writing this post and I wonder how much of it I understood at the time.

The Awesome ArtWork of the ZX Spectrum Manual

It was around this time that my life was briefly interrupted by a second stay in hospital - this time with a broken leg. I was quite an accident-prone child and trips to the hospital to be put back together had been a regular event (I’d even been run over and only suffered a few stitches), but this was the first time an accident had required a hospital stay - three months in traction. Returning to school, for most subjects I was able to go straight back into the same level classes that I had been before, but for French, which I had put little to no effort into before, it was fairly obvious to the teachers that I was way behind. I spent a few months being taught properly and then unfortunately I was moved back into the top set where we were expected to learn in a more self-directed way. As you can probably guess, learning French for me was over.

Life resumed following the hospital stay pretty much as it had before. Any pocket money and additional money I earned from paper rounds were quickly consumed by computer magazines and games. The first games I played were rudimentary - the library had a small selection of games but these were massively outshone by commercial offerings. I’m amazed that the computer and joystick survived Daily Thompson’s Decathalon. I never quite made it to the Elite ranking, but did reach Deadly and even did some of the missions (Cloaking device and ECM jammer are what I can remember).

Where my Pocket Money Went

Elite - I was Deadly, but never Elite

From the various computer magazines, I became aware that “serious programmers” used assembly language and decided that I needed to learn it. My initial forays were limited by a complete lack of understanding.

I vaguely knew that machine language meant using numbers instead of text and had seen in the manual that there was a mapping from basic keywords and characters to a numeric code. So I simply tried to convert from a basic program to these numbers - poking each value into the computer’s memory - this failed miserably. And it was only after some research that I learned there was a whole new language to learn.

Simply poking the number 245 does not print...

Programming the Z80 by Rodney Zaks was duly ordered from my local bookshop and I learned as much as I could from this, skipping over the parts that I didn’t completely understand.

Programming the Z80 by Rodney Zaks

Later I would add The Complete Spectrum ROM Disassembly to my collection of programming books and I read it from cover to cover absorbing everything I could - though I think I struggled to understand the operation of the floating point calculator and basic interpreter.

Complete Spectrum ROM Disassembly

I was soon writing assembly language programs myself using the HiSoft DevPac software and messing around with custom tape loaders and learning how to draw to the screen.

HiSoft DevPac

Bits of hardware followed including a Currah Microspeech, a mouse, a Discovery interface and finally a printer. Again I was caught out by a lack of knowledge and bought a second-hand thermal printer not realizing that it wouldn’t print on normal sheets of paper.

At school we were taught Computer Studies and had a room full of BBC computers that were networked together and connected to a hard disk - I’m not sure how common this was at the time (the early to mid-1980s). I was extremely lucky to avoid the degeneration of the subject into ICT (Information and Communication Technology) which completely refocussed on learning to use computer applications at the cost of programming and understanding how computers work.

This looks like the hard disk we had in the computer lab, but I'm not completely sure

I can’t recall how much programming we did, but we must have done something to fill the time in the lessons and everyone did a project as part of their coursework. I was quite pleased with my project - I used my new mouse and wrote a graphical sprite editor in Z80 assembly language. In my write-up, I had printouts of the code. The Computer Studies teacher seemed to be quite impressed - but I was too shy to take credit and tried to make out that it was nothing special.

I was lucky in my early career to be surrounded by people who could see through my shyness and recognize my skills.

In 1985, the Atari ST was released and one of my friends got one. I followed suit a year or so later using the money from my paper round generously topped up with a loan from my parents.

Atari ST

I had ordered a very basic package and the computer came with no games - all I had to play with for the Christmas holidays was the terrible ST Basic that shipped with the computer - a truly dreadful piece of software. I would have to wait for the holidays to finish before being able to buy any new software.

…the magazine recommended: "avoid[ing] ST BASIC for serious programming". Regarding reports that MetaComCo was "one bug away" from releasing a long-delayed update to the language, it jokingly wondered "whether Atari has only one more bug to eliminate from ST BASIC or one more to add" https://en.wikipedia.org/wiki/Atari_ST_BASIC

Fortunately, I was soon able to purchase an assembler - once again produced by HiSoft - they had seen the writing on the wall and jumped to 16-bit computers - and started to learn 68000 assembly language. I had a good book for this, but I can’t recall which one it was.

I even managed to get a small utility published on a magazine cover disk - and was paid for it! - I can’t remember the amount, but I think it was probably around five pounds.

I had been quite put off Computer Studies at GCSE so did not pursue the subject at A-Level and instead opted for Electronics. I had a close friend who built various Maplin kits and felt I should be on the practical side of things, avoiding the theoretical world of “Computer Science”. This carried onto my choice of subjects at University - but that is for another post.

I was however able to do a short course at college using Pascal on an RM Nimbus PC. One bright point in Computer Studies at school had been a talk by a University Student who explained how simple rules (what I would later learn are called heuristics) could make a computer appear to be intelligent. The example he used was the board game Othello (also known as Reversi). You can use some simple rules about where not to move to create a reasonably effective opponent - at least against unskilled players. Using this knowledge, I was able to create a computer opponent that could give a pretty decent game without needing to look ahead multiple moves.

Orange=bad, Red=really bad

For my Electronics project for A-Level, I created a simple communication system over a fiber optic cable. I based this on my knowledge of ZX Spectrum tape loading - using the length of pulses to detect a 1 or a 0. Not a very efficient use of bandwidth, but it worked.

Games such as Dungeon Master and the various copycats occupied my time along with small programming projects.

Dungeon Master

I was an extremely lazy student in college. From school, I knew that I could coast and still do well enough in exams to scrape by and I would often skip college to spend the afternoon watching re-runs of the Bionic Man and episodes of Going for Gold. I was very lucky to just about get the grades I needed for University. Despite this, I did learn a lot and came out with a pretty solid grounding in Electronics, Physics and Maths.

Six Billion Dollar Man

Is there anything I regret?

I could have learned so much from the people around me, adults and peers equally. But I was painfully shy and introverted. I had one very close friend and struggled to make and maintain connections with other people - even when we had common overlapping interests.

With good mentorship, more structure, and encouragement - who knows what I could have achieved in those early years? I envy the children of today with access to the internet and so much knowledge at their fingertips.

I was completely immersed in the world of Z80 and then 68000 assembly language - but now it’s only a fuzzy memory. I wish I’d preserved some notes or even better some of my code from then as it would be awesome to review it and see what I was thinking.

Why I’m happy:

I’m immensely grateful to have grown up in those early years when home computing was just starting to get going and things were so much simpler. You could easily learn everything about your computer - its hardware and software.

I came out with an excellent grounding in assembly language and basic electronics that would give me a huge edge at University and at work - particularly when it came to learning C and then C++.

Despite our family not having immense wealth, we lived a relatively good lower middle-class existence - going to libraries, having books around us, and having access to a computer - it’s a luxury that many of my contemporaries would not have had. A very good start to a life of tech.

#1971 #ASSEMBLY LANGUAGE #CHILDHOOD #COMPUTING #INTEL #MICROPROCESSORS #PROGRAMMING #TECHNOLOGY #ZX SPECTRUM

Related Posts

The Center of Computing History - Faced with free time in Cambridge, I decided to visit the Center of Computing History. It's a bit quirky and tucked away in an industrial park, but worth finding. Right in the entrance, you'll see the Megaprocessor, a 16-bit processor that's programmed to play Tetris. But the highlight for me was seeing the prototype ZX Spectrum, the computer that sparked my interest in tech. Though they didn't have a working Spectrum, I got a kick out of programming on a ZX81 and playing with a BBC Micro. They've even got a room full of consoles and the first ever Apple 1. Though I recorded some footage, I spent most of my time just soaking in the history of computing.
Esp32 s3 zx spectrum - In a bid to quench my nostalgia and flex my ESP32 chops, I managed to get a ZX Spectrum emulator running on my ESP32-TV board! Then, spurred on by PCBWay's new full color silk screen service, I pursuit the audacious task of recreating the ZX Spectrum's iconic keyboard. It's been quite the joyride - wrangling touch pins, shrinking screens and creating a thing of beauty on PCB. It's not quite ready for the spotlight, but keep an eye on my newsletter for more eagerly-awaited updates. It's like the Spectrum is reborn!
16 bit mini handheld video arcade - Disassembling a 16-bit mini handheld video arcade revealed a fairly uncomplex interior with most of the functionality being handled by a blob chip on a single-sided PCB. Despite the simplicity, the impressive design manages to fit 156 games into flash storage on a multi-layered daughter board, which helps simplify the main board's design. While not as hackable as hoped, the teardown provided an interesting glimpse into the device's construction.
I broke it and then i fixed it - Started off on a techie adventure with an RP2040 DVI board from Adafruit, aiming to get the pico-zxspectrum going. Things started acting haywire once the USB hub got involved, ending in a complete shutdown, intuitive diagnosis showed the power pin was a ghost town! After pin-pointing (and removing) the dead IC, I performed a delicate soldering operation to bless it with a new 3V3 regulator. Working the kinks out with the resolution led to a thrilling revival and, voila, we were back in business with DVI output and SD Card support!
1 touch pin 8 touch pads - To make my ESP32 ZX Spectrum touch keyboard work even better, I needed to ensure every key was independent. The ESP32-S3 only has 14 touch pins, so I’ve been using a matrix approach. While this works well, it struggles with key combinations, critical for the ZX Spectrum. I explored touch detection and experimented with analog multiplexer ICs (4051 series) to expand the touch pins. Initial tests were promising. After prototyping with breadboard-friendly versions and ordering parts, the new keyboard was not only functional but exceeded my expectations. Scanning the keyboard now takes around 20ms, and the solution is ready for production. This was the last big challenge, and I’m thrilled with the results!

Related Videos

ESP32 - 40 Independent touch pins! - Wow! I'm absolutely thrilled with the results of this video - I've been experimenting with my ESP 320x Spectrum board and its touch Matrix keyboard. Had a bit of trouble with combined button inputs, so I took a deep dive into how touch works and discovered these old, but gold, ICs. After some testing, they turned out to be a perfect solution to my multiplexing problem! I then got a new board design shipped from PCB way - looks awesome and it didn't break the bank. Can't believe how responsive the keyboard is! Got the 'Hello World' program up and running, and even played Manic Miner. The final board's all set - can't wait to get this on sale! And keep watching because I've got some interesting plans for this expansion port!
Surprisingly Simple! - “16-bit" Mini Handheld Arcade - In this video, I explore and dissect a 16-bit handheld gaming machine that hosts 160 Sega games. This interesting gadget priced at twenty dollars is surprisingly accurate to the original Sega console. After unboxing and testing the game Golden Axe, I opened it up to check out the internal components like the pcb, chips, battery pack and controls. Although it's not very hackable, as the functionality lies under an epoxy blob, this little machine was a treat to disassemble and reassemble, all while still keeping its functionality intact. With a dash of nostalgia and quality gaming in a handheld package, the machine is certainly an intriguing find.
ESP32-S3 ZX Spectrum - Full Color Silk Screen is really cool! - Super stoked to share this creation – an ESP32 ZX Spectrum emulator! Although it's still very much a proof-of-concept, it's looking pretty rad. I've got the classic games like Manic Miner, and yes, you can program in basic too! In perfect Sinclair fashion, I'm planning on selling this key piece of nostalgia for just £99. Work still needs to be done before the production phase, but rest assured, I'm meticulously working out the kinks, including tweaking the keyboard to ensure even better user experience. And on the technical side - a single ESP32S3 runs the show and we’ve multiplexed the keys exactly like the OG Spectrum. It's been great fun designing this piece of kit with the new full color silk screen printing from PCB way. Stay tuned for further updates!
We don't need a DAC - ESP32 PDM Audio - In this video, I've made some fascinating explorations with the ESP32 S3 chips and TinyS3 boards from Unexpected Maker. Intriguingly, even without a DAC converter, S3 chips can produce an audio waveform. I've played around with a basic RC filter to reconstruct the analogue audio signal from a PDM signal. The result was quite impressive for a board without a native DAC! I also discussed the possibility of creating a simple amplifier using just a MOSFET as a switch. Finally, I gave a peek into some of my new boards from PCBWay and looked at how Delta Sigma modulation can be played with to recover original data. It's all quite a fun foray into the world of circuitry and audio signals!
Can You Spot the Problem? - Buckle up folks, this video is a thrilling one! There's everything from unboxing my new ESP32 TV boards that arrived from PCB Way to discovering some hidden issues. We're talking about some pesky problems, surprises, and even a potential catastrophic error that could've led to a disaster. The main dish is the high-speed SD card access over USB - ultimately achieving a whooping transfer rate! But, the journey is a roller-coaster ride, from the project completely failing initially, to some smart hacks and triumphant moments. All the peripherals worked well, from the display to the sound amplifier and even the infrared receiver. Despite the ups and downs, there's a lot to learn and that's what makes this video exciting! Can't wait to share the improvements I have in mind for turning the prototype into the ultimate all-in-one device. But first, let's address the elephant in the room - an ill-placed diode that's a ticking bomb, because you know, safety first!
HELP SUPPORT MY WORK: If you're feeling flush then please stop by Patreon Or you can make a one off donation via ko-fi
Want to keep up to date with the latest posts and videos? Subscribe to the newsletter
Blog Logo

Chris Greening


Published

> Image

atomic14

A collection of slightly mad projects, instructive/educational videos, and generally interesting stuff. Building projects around the Arduino and ESP32 platforms - we'll be exploring AI, Computer Vision, Audio, 3D Printing - it may get a bit eclectic...

View All Posts