Spectrum Resurrection

All the excitement around the Spectrum Next Kickstarter, and now the shop opening on the forum got me inspired to get hold of an original machine on eBay. Supposedly in working condition, it arrived with a problem.

Spectrum RAM issue

Spectrum RAM issue

The eBay seller apologised profusely and requested I send the machine back and have a full refund, however, I know my way around a circuit 😉 so I kept it. The eBay seller kindly gave me a partial refund. I was pretty sure what the problem was from the display and the exchange I had with the seller. It looked like a RAM issue.

Since I was intending to use the machine for programming and such, I had decided to fix it sooner rather than later. I ordered a ZX SpectROM with Diagnostic software specially supplied to narrow down the problem.

Upon powering the machine up with the ZX SpectROM installed on the rear expansion port, the Spectrum bleeped 8 times and then went on to have it’s RAM checked. All the lower RAM passed, the upper RAM failed every test!

I ordered a couple of upper RAM modules from Phil at Retroleum Whilst I was ordering, I got a couple of re-capping kits too! They duly arrived and I went about fitting the capacitors first. however, before fitting, I gave the board a once over and found a connection un-soldered!

Ooops, someone missed this!

Ooops, someone missed this!

It was completely clean, as if it had been in this state from factory! Needless to say, I rectified the problem before proceeding to replace the capacitors. I made a special effort to face all the values upwards so that they can be read in the future.

After re-capping, I had to remove all the upper RAM chips to make way for sockets. This would be primarily for the new RAM module but it’s nice to have the facility to fit original RAM should I choose to sometime in the future.

Upper RAM removed

Upper RAM removed

Eagle-eyed among you might spot a dodgy track on the lower right-hand pair of chip placements. Careful as I was, I still had that one track lift. However, despite how it looks, it didn’t break. I managed to get it back into place before soldering the sockets over the top.

Sockets installed

Sockets installed

With the sockets installed, it was time to fit the RAM module. This went on very easily. You just have to line up the top left pin with the top left socket and the bottom right pin with the bottom right socket. The module fitted in very firmly. I double checked I’d got it in the right place.

New Upper RAM Module Fitted

New Upper RAM Module Fitted

Since I was in the machine and the components came with the re-capping kit, I chose to perform the composite video modification as well as the re-capping and RAM replacement. This is another simple procedure.

Two options are available and Phil includes components for both with the re-capping kits. The mod can be done with a capacitor or a transistor. I chose the transistor mod because that also provides a buffer for the Spectrum’s video circuitry.

First the internal connection to the output socket is de-soldered and folded out of the way. Then the power and feed lines to the modulator are disconnected and folded over the can’s edge and finally, a transistor is soldered in place and a connection made from the pin nearest the rear of the Spectrum up and through the modulators case to the output socket.

Composite Mod Transistor

Composite Mod Transistor

Composite Mod From Above

Composite Mod From Above

After carrying out all this work (and having a much needed cuppa!) I did a final check around the board, particularly in areas I had worked in. All seemed OK so I replaced the board in the ‘Plus’ case, screwed it up and plugged it into a 7-inch composite monitor. I was greeted with the ‘© 1982 Sinclair Research Ltd’ message. Yay! I’d fixed it.

I really enjoyed the experience too. Buoyed by this, I built a DivIDE interface for storage and convenience. Unfortunately, the board does not didn’t work.

DivIDE 57c

DivIDE 57c

I take great care when I build anything and I double checked the connections. All seemed fine. I checked the ROM and GALs had data programmed into them with a Minipro TL866 but later, loaded EXSDOS since that’s what I will be using when the Spectrum Next arrives. Updating the ROM had no effect. Pressing the NMI button just reset the Spectrum.

I had a chat with some of the guys on the Spectrum 4 Ever group on Facebook and the consensus was that the Z80 chip probably had a weak/faulty M1 line. I reopened the case, de-soldered the Z80 and replaced it with a socket. I then tried 3 other Z80 chips, all of which even failed to react to the NMI button at all. I suspected there is an issue on the DivIDE board or that the Z80’s I substituted all had M1 issues. I continued to work on the issue.

In the meantime, I’d found a couple of cassette tapes of utililties and machine code that I wrote in 1991! I’ve begin to transfer them over to PC so I can re-learn what I knew back then.

I dug out the ZAViouR board to see if I’d left a Z80 on it. I had, and one substitution later, I had a working DivIDE! So, this confirms, I have four Z80s with weak or faulty M1 lines. I have marked them clearly and will only use them in projects that don’t require the M1 line!

Posted in Uncategorized | Comments Off on Spectrum Resurrection

Electronic Film Clapper

By way of a break from the Timed Camera Cable Release, I chose to develop the Electronic Film Clapper further and learned a lot in the process. I had the first iteration of the boards fabricated by Hackvana as usual and they arrived in good time.

On the board, I included several options to tailor the design to the builders taste. Provision for both a digispark board or bare ATTiny85 chip, small or large tact switches and a jumper to defeat the LEDs supply resistor for extra brightness.

I chose to build the Digispark version first. It went together easily (bar a hole size issue, more of that later) and I programmed the digispark via it’s own USB socket. And… the board completely failed to start up. It took me some time to realise that I’d got the USB power connections inverted! Lucky I’d added a reverse polarity diode! I de-soldered the USB ‘A’ type plug and re-soldered it on the back side of the board flipping the connections. I don’t have the correct type of USB plugs anyway, so it’s a bit of a kludge at the moment. However, once this was done, the board sprung to life. When powered up, the Digispark’s micronucleus bootloader kicks in for a few seconds and then the Clapper code starts.

The hole size issue was due to my custom tact switch footprint in KiCad being wrong. Although I managed to transfer the dimensions across from the datasheet successfully, I’d used the wrong size drills for the through plated holes and hence, the larger Omron type tact switch will not fit. I have amended the footprint now. At the moment, the switch on the prototype board sits slightly high on the surface.

There was another issue to be resolved; although the board started up fine, the ‘pip’ seemed to be incomplete. It was obvious from the symptoms that there wasn’t enough power to flash the LED and sound the pip at the same time. To sort this problem out, I bridged across the 78L05 part of the circuit. Once I had done this, the board worked perfectly.

So, on to the bare chip version. Having learned of the tact switch problem on the first build, I elected to use the smaller tact switch on this board. It fit perfectly. I had it complete in short order. I programmed the ATTiny85 chip via a technique called ArduinoISP where an Arduino UNO becomes a programmer. Upon powering the board up… Flash but no pip. This frustrated me for several days. I tried many fixes including changing the ATTiny’s fuses, but finally discovered that the bare ATTiny85 doesn’t directly support the Tone() function which is what I used in the code for the pip sound. I can only assume that the Digispark has custom code to account for this.

After a lot of research, I discovered an article on Technoblogy detailing this issue and a pointer to a library that adds the functionality. Once I re-programmed the ATTiny85 all was well!

Film Clapper prototype and v1.2 boards

Film Clapper prototype and v1.2 boards

To finalise the design, I’ll be inverting the USB Type ‘A’ plug, removing the regulator circuit and making provision for a link across the buzzer resistor. I have found that driving both the buzzer and LEDs directly from the ATTiny’s GPIO lines gives a much brighter LED and louder ‘pip’. I would imagine that this stresses the ATTiny slightly but since it’s a brief pulse, and provided it’s not done repeatedly, I believe it will be OK.

Design files are available on the AVR Projects page.


Posted in Building, Construction | Tagged , , , , | Comments Off on Electronic Film Clapper

New Project: TB Timer – Timed Camera Cable Release

One of my other pastimes is Photography. I used to be ‘in the trade’, in fact, I have been a photographer and a photographer’s assistant several times. Nowadays, I pursue photography in a hobbyist sense. I still enjoy experimenting with exposures and recently, I was lucky enough to win a Lee Big Stopper Neutral Density Filter. I’d like to do some long exposures with this. The trouble is, I have no cable release to go with my camera. Sure, I could jump onto eBay or another website and order one of the myriad of pre-made cable releases but where’s the fun in that?

I have worked up a design that will hopefully fill all the criteria I need and be expandable too. I have settled on four modes:

  • B – Standard bulb mode where the camera shutter opens as long as you hold down the button
  • T – The shutter opens on the first press and closes on the second press
  • TB – Timed ‘B’ where the cable release is programmed with a time and the shutter opens for this amount of time
  • EX – Provision for an external trigger to connect sound and other sensors

It’s taken some research but I have built a prototype with my trusty ARDX Arduino Uno kit

TB Timer v1.00 Prototype

TB Timer v1.00 Prototype

Currently, the device changes mode with a press of the mode button which will later be incorporated in a suitable rotary encoder. I modified the prototype’s rotary encoder to remove the detents and therefore, have continuous motion rather than be stepped. When stepped, the value hops by two at a time. The ‘B’ and ‘T’ modes both operate as expected and at the moment, the rotary encoder changes a value in ‘TB’ mode and is displayed on the OLED display. the outputs are opto-isolated so will appear as switches to the camera. Although I’ll be using the cable release with a Canon DSLR, it should be very easy to make it work with other DSLR makes.

It’s early days yet and still to do are moving the rotary encoder code into the ‘TB’ function so that the time is only changed whilst in this mode. I’d also like to be able to change the value of minutes and seconds independently.

As with all ProjectAVR designs, the design files of the final boards will be available on this site as Open Source in due course.

Posted in Building, Coding | Tagged , , , , | Comments Off on New Project: TB Timer – Timed Camera Cable Release

minDUINO Next

Whilst the Spectrum Next Kickstarter goes from strength to strength (1st stretch goal reached already at £350,000), I have been redrawing the minDUINO in KiCad. Today, I received the first batch of PCBs from the ever brilliant Hackvana and they are great.

minDUINO v1.6k Front and Back

minDUINO v1.6k Front and Back

I have since built one and tested it so I’ve also added the files to the minDUINO page for download.

Posted in Building | Tagged , , , , , | Comments Off on minDUINO Next

Spectrum Next Kickstarter Active!

After what seems a very long wait, the Spectrum Next Kickstarter campaign has started. This machine promises to be everything the retro-computing fan would need. A very well ‘speced’ machine (pardon the pun) with active development, a thriving community and a great Facebook page. If you’d like more info, you can check out my brief review on this ProjectAVR Page or the Spectrum Next‘s own webpage.

Spectrumnext Black

The Spectrum Next rendered in black.

One of the really great things about this project is that it will be Open Source. I’m looking forward to pouring over the technical documents when the time comes.

With 40+ backers added whilst typing this, I can see it being a most successful Kickstarter Campaign.

[UPDATE 24-04-2017] At approx. 09:36 BST, the Kickstarter got to it’s target in just over 24 hours showing an amazing level of support for this machine.

SpecNext KS Target Achieved

SpecNext KS Target Achieved

Looking forward to seeing the machine ‘in the flesh’ in early 2018.

Posted in Design, Equipment | Tagged , , | Comments Off on Spectrum Next Kickstarter Active!

YouTube Channel

I’ve been setting up equipment to start a ProjectAVR YouTube channel for a while. Almost there now. Just a few more pieces of the jigsaw to put in place. In the mean time, I’ve been learning about video editing and sound recording. One piece of equipment I will have need of is a ‘Clapper Board’ or ‘Slate’ to aid syncing of sound and video from multiple sources. I decided to make my own rather then buy one of the many ready made solutions available. After having searched around online though, I found that there aren’t a great deal of DIY designs.

Since I’ll be working on my own, I won’t need the usual panel that notes are written on, all I need is the visual/audio que. I first made up a circuit with an Arduino Uno and breadboard. It simply traps a keypress and when released gives a 50ms pip and pulses an LED.

Once I had the code working I begun to think about how I would build it. Using an ATMEGA328 for this purpose is like using a sledgehammer to crack a walnut so I decided to use an ATTiny85 Digispark clone I’d got on eBay. I used a small piece of strip board to mount the Digispark clone and other components.

ATTiny85 Clapper v1.2 Prototype

ATTiny85 Clapper v1.2 Prototype

ATTiny85 Clapper v1.2 Visual Que

ATTiny85 Clapper v1.2 Visual Que

I built the prototype to be powered specifically by cheap ‘Poundland’ USB Powerbanks, of which I have a few. These powerbanks are great value at GBP1 each but any USB socket will power the clapper successfully.

ATTiny85 Clapper v1.2 with Powerbanks

ATTiny85 Clapper v1.2 with Powerbanks

There is one small issue with the ATTiny85 Digispark clone. Since it uses the Micronucleus bootloader for programming via USB, the reset pin has been disabled. The ATTiny’s fuses are set to use the pin as GPIO instead, therefore the board cannot be programmed by ICSP and consequently any code running on the device is subject to 5 seconds startup delay. The next step is to enable the reset pin once more and program the clapper code via ICSP. This will mean that the device will start up and run the code immediately. In the interim, I have added a short audio chirp to signify the device is ready to use. This has proved adequate for now although I may leave the chirp in after enabling the reset pin anyway.

Proving boards have been ordered from my favorite fabricator, Hackvana.com. Later, I’d like to produce a design to acommodate a vanilla ATTiny85 as well. This will require a different programming procedure and a means to connect the hardware. As per normal, once I have finished the design and proved it can be programmed successfully, I will publish a full set of KiCad/Gerber design files along with the code to drive it.


Posted in Construction, Uncategorized | Tagged , , , , , | Comments Off on YouTube Channel


KiCad is an EDA program, similar to Eagle, Altium and the like. I last tried it some years ago and found it to be very difficult to use, not least because of the inevitable steep learning curve that all CAD type programs seem to have. However, recently, I thought I’d give it another go. I downloaded and installed version 4.0.5 in order to have another bash. I was pleasantly surprised to find a much more mature product than I had found in the past and it had become usable for me.

I followed a set of introductory tutorials on YouTube called Getting To Blinky 4.0 Presented by Chris Gammel. These are well worth doing as is joining the KiCad forum Chris mentions in the videos.

As an excercise, I re-created the minDUINO v1.6 design to see if I could get to grips with the new way of working. Unlike other EDA programs, KiCad separates the component symbols on the schematic from footprints. Once a schematic has been drawn, annotated and a netlist produced a program is called specifically to associate symbols with footprints manually. Then, in the PCB layout program, they appear ready to be placed upon reading the netlist. I understand that you can have CvPCB, the association program, take a stab at allocating footprints automatically, but I haven’t got that far. I quite enjoyed this systematic approach but it can be a little frustrating when updating a design. I found that I had to re-create the netlist again after footprint association in the schematic and then import the netlist to the PCB layout program.

The outcome of my first foray into KiCad is this:

minDUINO v1.6 (KiCad)

minDUINO v1.6 (KiCad)

Here illustrated flashing the LED on pin 10 of the ATMEGA328 by way of a test. The board was fabricated by OSH Park in this instance. It has a couple of wrinkles though; I thought to fit a ZIF socket like the previous Eagle version of the board but I neglected to make the holes large enough to accommodate the wider pins of the socket. The ceramic capacitor hole distances are a little tight and there is a labeling issue on the underside. I also didn’t give enough clearance for the full shrouded 6-pin header for ICSP. However, these small problems aside, it worked first time.

OSH  Park Fabricated minDUINO v1.6 Board Front and Back

OSH Park Fabricated minDUINO v1.6 Board Front and Back

Once I rework the design and have had some new test boards fabricated, I’ll publish all the design files on the minDUINO page.

I’ve decided to go full ‘Open Source’ after having watched several videos and read articles. I realised that I haven’t been following the full guidelines of the Open Source movement. Mostly because of my Non Commercial attitude. Over time, I will correct this site-wide and make sure all the designs are full Open Source and that all the design files reflect this. I may keep the (corrected) Eagle Files online but new designs will be produced in KiCad.

Posted in Building, Design, Uncategorized | Tagged , , , , , , , , , , , , | Comments Off on KiCad

Display Planning

Recently, I’ve been experimenting with the cheap 32×128 and 64×128 OLED Displays available from various emporiums. I’ve managed to prototype a simple Temp/Humidity/Pressure device without too much trouble, details will probably appear on ProjectAVR.com in due course.

One of the things that I found difficult was how to plan out the display elements. In the ‘old days’ of program planning, a lot of work was done on paper so I decided to design an OLED Display Planner Sheet enabling me to draw what I wanted and instantly find out what co-ordinates to use.

OLED Planner Sheet

OLED Planner Sheet

Each axis has the cell numbers on it and, although it’s not apparent from the above image, the lower 32 cells are shaded indicating the second set of 32 pixels. You can use the sheet for planning either two 128×32 sized OLEDs or one 128×64 sized OLED.

The planner sheet can be downloaded from:

ProjectAVR.com 32-64×128 OLED Planner Sheet: PDF

and is published under Creative Commons Attribution-ShareAlike 4.0 International Licence. Feel free to download and use as you see fit. Print at 100% on A4 landscape paper at 600×600 dpi for best results.

Creative Commons License128×32 and 128×64 OLED Planner Sheet by ProjectAVR – Steve Smith G0TDJ is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Posted in Uncategorized | Comments Off on Display Planning

Constructing an RC2014

Whilst working on the ZAViouR v1.02, I discovered a kit for a Z80 based micro-computer designed by Spencer Owen. Spencer called it the RC2014 since it was for the Retro Challenge in 2014. It’s a nice, simple modular design which can be built on stripboard but Spencer sells a kit of parts (and all the different modules separately) on Tindie.

I ordered the RC2014 (full monty) kit along with the additional Digital I/O board. All of which arrived in a couple of days in a well packed padded envelope. There are no instructions included, however, the boards are pretty much self explanatory and there are details on the website.

Construction went well and I configured the SIL (Single In Line) connectors in the same way that is illustrated in the Tindie images. The only real problem I had was with the tact switches on the Back Plane and Clock boards. The through holes didn’t quite align with the switch leads and required a little ‘persuasion’. Spencer assures me that he uses a better footprint on his later designs.

After I completed construction, I checked my soldering and that I’d got all the chips orientated correctly and also double-checked I’d plugged the boards in the correct way and with all the ‘PIN 1’ contacts lining up.

I had an FTDI module sourced from eBay which I connected up to the FTDI connector on the Serial I/O board. This produced a sporadic start-up. One in every six or seven starts would result in the machine firing up. I re-checked everything but i could find nothing amiss. It took me a while to find the ‘fault’.

Very kindly, Spencer included a few extra boards for me and I’d used one of his newer designs, not yet in general circulation. It is a Z80 board with jumpers for the Z80 control bus that are not included on the Back Plane. Although I’d soldered in the headers, I’d forgotten to add the jumpers meaning that several lines on the control bus were floating. After a standard ‘Doh!’ slap on the forehead and adding the jumpers, the RC2014 started up reliably every time!

RC2014 and Test Program

RC2014 and Test Program

Now the machine was up and running, I built up the Digital I/O board. I was very careful to seat the tact switches properly! Once built, I realised there was a small layout problem with the FTDI module I’d used. The solution was to make a right-angle adaptor with a 6-way header plug and it’s associated socket.

6-Pin Adaptor

6-Pin Adaptor

This allows the Digital I/O board to be plugged in whilst still using the FTDI module. Sadly, it does partially obscure the LEDs on the Digital I/O board but is good enough for testing. I quickly wrote a BASIC program to output 0 to 255 on the LEDs and came across a strange problem. When the value exceeded 70 or so, the RC2014 would crash. I had included the 7805 option on the Back Plane so I reasoned that the LEDs were pulling too much current and hence, creating a partial shutdown of the 7805. To test this, I bridged over the connections where the optional header pins were to bypass the 7805 and tried again. I might add, I was powering the board from a variable PSU.

From there, I discovered a strange thing. The board works perfectly, LEDs displaying 0-255 with ease but only if I keep the supply voltage under 5.0 volts. If supplied with even a small amount over 5 volts, the RC2014 crashes. I have spoken to Spencer about the issue and he can’t replicate the problem. However, at 4.8 volts supply, I have a fully working RC2014.

I have now ordered the Pi Zero Terminal board and the Universal Micro Keyboard to add to the project. These will allow use of the RC2014 without the FTDI module.

I really enjoyed building this little machine, despite the small issues and look forward to experimenting with it in the future.

Posted in Building, Construction | Tagged , , , , , , , | Comments Off on Constructing an RC2014

Lets have another go!

Well, inspired by the announcement of the Specnext, I’ve decided to get back to work on my ZAViouR Board. It’s been a long time coming but now, I really want to get it going. I got a little disheartened when I couldn’t get it to work before and I thought a break would do me good. It has! I’ve been involved in lots of other non-electronic projects but now I think it’s time to get back and get ZAViouR up and running or find out what’s wrong with the design.

The last time I tried to get ZAViouR to work, I think I probably aimed a little high, duplicating what I had done on the previous version of the board. I wrote a small AVR program to load blinkenlight code into the SRAM, run the Z80 and flash a set of LEDs. When I converted this to the new version of ZAViouR, it failed. I did some cursory checks before I left it alone.

Initial Check of ZAViouR v1.02

Initial Check of ZAViouR v1.02

This time, I’m going to take it one step at a time and prove each part works sequentially. The first thing to do is give the AVR chip a test by flashing the indicator lights. ZAViouR 1.02 has three of these. One is intended to eventually show the Z80’s M1 line’s activity (although it will need to be divided down in the AVR). The other two are general purpose. All that’s required is the standard ‘blink’ sketch that is supplied with the Arduino™ IDE. I can add a few lines for the extra LEDs and test that first. Subject to the AVR being in good order and being able to program it, I’ll continue by test loading the SRAM via the MCP23017 port expander.

For those curious, you can check out the circuit diagram here:

  • ZAViouR v1.02 Eagle v6.3.0 .PDF schematic file.

Once fully tested and hopefully working, I’ll be uploading all the design files and gerbers on their own dedicated page.

Wish me luck!

[UPDATE 20th May 2016]
After having checked that the AVR was operational by loading the standard ‘blink’ program, I then started from scratch and found the port expander not working. I first suspected a faulty component but after checking some code examples online, I found that I hadn’t included the serial initalisation before the I2C calls. This fixed the port expander. I then modified the code I had used previously and eventually managed to store code in the SRAM successfully. Now, all that is left is to execute the code in the Z80 after cleanly removing the AVR from the address, data and Z80 control busses.

Posted in Uncategorized, ZAViouR | Tagged , , , , , , , , , , , , , , | Comments Off on Lets have another go!