Sunday, March 10, 2019

ZX-Key, External Keyboard For ZX81s and Other Micro Computers: Part 4

Leave a Comment
Some of you may have noticed that a batch of ZX-Key units went up for sale on Sell My Retro over the weekend. This has been a great achievement and would not have been possible without some much valued help. When I started this project I'd only intended to make a keyboard for myself but soon found a lot support and others desiring a modern mechanical keyboard implementation for 80s micro computers.

To that end I would very much like to thank Spencer Owen of RC2014 fame for his contributions and ZXkim81 for embracing the idea so fully that he's about to test out the first DIY kit version of the ZX-Key.

Now onto some more about the project so far.

Sundry ZX-Key Design Decisions 

This post is primarily centred around some design decisions on the Case for the Keyboard and the Selection of Key Switches.

Mechanical Key Selection

Selecting the right Mechanical switches for the keyboard was a slightly more difficult task than you might imagine; in the end I chose Gateron Yellows, a firm to medium weight linear switch. The reason for this is twofold, and all to do with how the ZX81 registers key presses.

The ZX81 can be somewhat sluggish in registering keystrokes. While this is normally quite fine when entering text with the membrane keyboard, moving to a mechanical keyboard makes this lack of speed somewhat more noticeable. This is the reason behind the use of a linear switch, over a clicky one such as MX Blues. While a real keyboard is far more tactile, the use of a clicky switch would give an undue impression that a ZX81 had actually registered the key press when in reality it hadn't.

Gateron Yellow Keyswitch, the Perfect Match for a ZX81 Keyboard

Related to the above;  the use a firm linear switch adds a certain amount of weight, possibly unconsciously slowing down the natural typing rate, bringing key strokes more into line with what a ZX81 expects. On testing I found Gateron Yellow switches a nice match to requirements, and the main reason for not going with the firmer MX black was in keeping the typing experience pleasant, particularly for people not used to (overly) heavily weighted switches.

A Case to Start

All keyboards need a case of some sort. The trouble here of course is that all bespoke keyboards require a very specific case, one that can end up being quite the expense. For the ZX-Key keyboard case my main goal was to first make it relatively affordable, and secondly I desired a design that could be upgraded over time.

Essentially the Starter case I came up with is more of a keyboard frame than a full case. The ZX-Key keyboard is screwed in place with some 3mm diameter 6mm long case bolts. Provision on the base has been made for standard 12 x 12mm rubber feet to stop the keyboard from sliding around on a table.
The ZX-Key  ZX81 Mechanical Keyboard in Starter Case
The ZX-Key Keyboard Mounted on the Prototype Keyboard 'Starter' Case
Also of note, the case has a gentle 2 degree slope from front to back for an easy typing angle. A higher angle felt a little exaggerated on such a small keyboard.

I've been using the initial prototype for some time now, and have found it provides quite a good level of rigidity. I did make a few errors on the original, mostly around spacing, and in the height of the lip around the keyboard PCB. All issues have been addressed and the fully revised version of the ZX-KEY Keyboard 'Starter' Case has been made  made available on Shapeways.

Bottom of the Prototype Keyboard 'Starter' Case
As alluded to, there will be 2 more case parts designed, a simple backing for underneath the keyboard and a somewhat more elaborate top half styled to suit a Sinclair product. However I felt it important to make these components entirely optional, particularity as larger 3D printed objects can become quite expensive.

Of course the case as a whole is entirely optional, and if you make your own then I would welcome seeing pictures.

Final Production Ready ZX-KEY Keyboard 'Starter' Case as Found on Shapeways

I will be releasing the complete set of case parts to Shapeways in the coming month or so, if you would rather wait for the complete unit.

See more entries for this project: Part 1Part 2Part 3Part 4Part 5


Read More

Thursday, March 07, 2019

ZX-Key, External Keyboard For ZX81s and Other Micro Computers: Part 3

4 comments

The main goals of the ZX-Key project has been to build a mechanical keyboard usable on real ZX81s, PCs (particularly in emulators) and on the RC2014 or other computers with serial keyboard inputs. This entry we'll go over a couple of the details relating specifically to the Keyboard component of the build.

Final prototype ZX-Key ZX81 Keyboard
The ZX-Key Keyboard

The ZX-Key Keyboard

The keyboard layout is based around the 8x5 matrix format found on the Sinclair ZX81 and ZX Spectrums, which makes sense as that's what it's designed to be used with.

The main keyboard circuit is also almost identical to a ZX81s, with the addition of a Arduino Pro Micro enabling the ZX-Key to be used as a regular USB PC keyboard. Connection to the ZX-Key ZX81 expansion interface is facilitated by  a 16 pin IDC header.

Additional diodes have been added to the 5 row lines, these  prevent some issues found when testing the prototype keyboard with a ZXpand expansion card. When the ZXPand read an SD card, its current draw caused some instability with the Arduino. This problem was also addressed on the ZX-Key interface card by proving it with an independent voltage regulator.

A reset line has been brought out from the ZX-Key interface card, and is presented on the 16 IDC header so there is no need to turn the ZX81 off and on to restart the computer. Similarly the 6 pin IDC connector provided for TTL serial communication also provides a reset line broken out for using the keyboard in conjunction with a RC2014 micro.

The pull down 100k Resistor on Column 8 allows the Arduino to detect the presence of a ZX81. As the Arduino powers on or when reset it first tests the status of this column to determine what mode it should start in, either Standard USB / PC or ZX81 mode.

ZX-Key Keyboard Schematic

The Arduino Bit

While connected to a ZX81 the Arduino is essentially dormant, only handling some minor LED visual indicators. However when not connected to a ZX81 the Arduino Pro Micro takes control, turning the keyboard into a fully functional USB HID (device).

In ZX81 mode with the ZX-key interface connected via an IDC ribbon cable, the ZX-Key will behave as a standard ZX81 keyboard, except with a much improved typing experience. When the keyboard is unconnected, plugged in via USB or serial port the keyboard will start in Standard PC mode.

Keyboard modes and selected layers are indicated by a cluster of three LEDs on the right hand side of the keyboard. There are three keyboard Layers, Standard, Emulator and ZX81. You can switch between Standard and Emulator layers by holding down SHIFT, FUNCTION (ENTER), and GRAPHICS (9) key combinations. The Standard layer has 3 main modes and each of these has a SHIFT layer, this gives access 98% of the keys to be found on a normal USB keyboard.

LED States
Layer & Mode Selected
ON
OFF
OFF
STANDARD
OFF
ON
OFF
STANDARD - FUNCTION
OFF
OFF
ON
STANDARD - GRAPHICS
ON
OFF
ON
EMULATOR
ON
ON
ON
ZX81 - INTERFACE CONNECTED
Standard Layers: Keyboard Mode and Function Selection
NormalNormal mode. All keys are in Standard US Keyboard configuration.
SHIFTWhen in Normal Mode: Symbols in Red are selected. Where these red keys are commands, for example 'EDIT or SLOW' they have been replaced by another symbol. All common symbols are present on the keyboard. Note that SHIFT keys effects vary in each of the other modes
SHIFT,FUNCTIONChanges to Function mode. This selects upper case characters. Pressing the SHIFT key in this mode will select symbols as normal.
SHIFT,GRAPHICSAll the number keys are now there equivalent 'Fx' key, ie. '1' becomes 'F1'. All Letter keys become 'CTRL Letter'. Holding down the SHIFT key in Graphics mode changes the letter keys to 'ALT Letter', number keys '1' and '2' become 'F11' & 'F12'.
Emulation Layer: For use with ZX81 or ZX Spectrum Emulators
SHIFT, FUNCTION, GRAPHICSKeyboard will enter the emulation mode. All Standard Layer mode functions are disabled. This allows Emulation packages to detect key presses as using a standard USB / PS2 keyboard.

You can go back to the Standard layers at any point for entering program Emulator menus with 'F' keys for example.
ZX81 Layer: For use with a real ZX81 plugged into the ZX-Key Interface
Auto DetectionThe ZX81 layer is selected automatically if the keyboard is connected to a ZX81 using the ZX-Key Interface. You can't deselect this mode.

Next time: I'll finalise with the 3D printed case, attach the software and more.

See more entries for this project: Part 1Part 2Part 3Part 4Part 5


Read More

Wednesday, February 27, 2019

ZX-Key, External Keyboard For ZX81s and Other Micro Computers: Part 2

3 comments
This blog entry I'll take a quick look into the ZX-Key Expansion interface required to get the ZX-Key Keyboard working with a ZX81.

ZX-Key ZX81 Keyboard Interfacte Card
Final Production ZX-Key Expansion Interface

The ZX-Key Expansion Interface for the ZX81


Primarily the expansion board is based on Wilf Rigters' designs. Changes I've made along the way have been minor, and don't on the whole modify how the original design works. Best refer to Wilfs article for an excellent account and explanation. It's enough to say that there are two 74HC245 ICs that handle the decoding of the ZX81s BUS and afford the implementation of a matrix keyboard.

The modifications I've ended up making to the original design have been necessitated by the desire to use the Keyboard component of the project with ZX81s, the RC2014, (or other mircos) and PCs via USB.

First Iterations

Initially I breadboarded a portion of the circuit for some basic testing, just for a bit of satisfaction. Unsurprisingly that worked perfectly fine, so went ahead and built up a prototype PCB version.

Breadboard Test
For the PCB I added a +5v rail for powering an Arduino Pro Micro which is located on the keyboard PCB and also broke out the ZX81s reset line. In addition diodes used on the row lines have been moved from the Interface to the Keyboard PCB (See the Keyboard Blog Entry - Coming in Part 3).

All seemed to work just fine (after a stupid layout issue and a bit of trace cutting), however on deeper inspections I ran into a major problem when using the popular ZXpand SD card reader in conjunction with the keyboard. The ZXPand would often not read an SD card, or if it did would load corrupted applications or files.

This seemed to be a power related issue, as powering the Arduino Micro via USB instead of through the ZX81 mostly resolved the problem. Removing the Arduino entirely completly solved the issue, with the keyboard working normally. In summary while the decoder interface worked fine, it didn't in combination with the enhanced keyboard.

Testing the ZX-Key Prototype Keyboard and Interface with a ZX81
The First Iteration: Well it seemed to work fine, but a ZXPand looms in the background.

Second Iterations 

To resolve the power problems I added voltage regulator, this takes power from the +9v rail supplying both the interface and the attached keyboard. Additional diodes on the column lines were also added to the keyboard PCB.  Thankfully these changes solved all the niggling issues with the ZXpand.

Due to the additional diodes on the Keyboard increasing the voltage drop, the CMOS 74HC245 ICs were replaced with 74HCT245 ICs, the TTL level equivalents. TTL signals provide an extended logic level voltage range counteracting the voltage drop in the signals coming from the Keyboard.

Interestingly, the changes made to the keyboard and the changes made to the interface both worked independently. So I've managed to solve the problem twice.


ZX-Key Expansion Card Schematic


See more entries for this project: Part 1Part 2Part 3Part 4Part 5


Read More

Wednesday, February 13, 2019

ZX-Key, External Keyboard For ZX81s and Other Micro Computers: Part 1

4 comments

Ever dreamed of a decent external keyboard for your ZX81? Ever thought you needed the perfect keyboard to use with ZX81 emulators on the PC or a Raspberry Pi? Or how about a keyboard to compliment the RC2014 or perhaps another 8bit hobby project? Well I desired all these things in one convenient package, now finally after a little hard graft I have just such a keyboard.

ZX-Key Keyboard Connected to a ZX81 via expansion interface
Near final design of the ZX-Key, the keyboard connected to my ZX81 via expansion card.
Over the next few blog entries I'll attempt to detail the construction of what would become the ZX-Key, a keyboard Designed to be used on multiple projects.

Starting Out

I've been flipping between several small projects recently, and all these have required a keyboard of some sort. I really desired a keyboard that would be usable by all of these builds. Of course you could argue that a USB keyboard would be good enough, but then there is no fun in that at all, plus what would a blog called ZX81 Keyboard Adventures be if the keyboard didn't work with a humble ZX81 as well.

The idea behind the ZX-Key came from two sources. Initial inspiration came from Chris Oregan of The Sausage Factory fame (although for Retro Asylum at the time) and live steam featuring his ZX81 setup which includes an original Memotech Keyboard. I'm not afraid to admit I was quite jealous of Chris's keyboard. Secondly Spencer Owens Universal Micro Keyboard for his RC2014 would from the starting point of the ZX-Keys design.

Chris Oregan's ZX81 with Memotech Keyboard
Spencer designed his RC2014 Micro Keyboard around the layout and configuration of the ZX Spectrums, which by more than coincidence is near identical to that of a ZX81s. With the use of an Arduino Pro Mini his keyboard can be connected to a PC via USB oa TTL Serial to the RC2014. Allowances are also been made for direct connection to a Micro Computer, such as the ZX81.

As I've built a number of USB keyboard interfaces designed to work with Sinclair related keyboards before, including the whole reason for this blog site the AZ15, borrowing from the ideas behind the RC2014s Micro Keyboard seems a natural fit. Talking to Spencer this idea has come a little full circle as we've both taken inspiration from Dave Curran's (Tynemouth Software) projects.

With the basic idea of the keyboard at hand, I needed a way to connect it to a ZX81. For this there are two options, either connect directly into the heart of the machine replacing the existing membrane keyboard, or build an external expansion interface card for ZX81 and keyboard. The cleanest option being the second. I'm certainly not the first person to want a quality external keyboard and therefore not the only person ever to build an expansion card. Back in 2004 Wilf Rigter published the schematic of his ZXKBD v3 ZX81 keyboard expansion and it is this design that would form the core ZX-Key's expansion card.

That about wraps up the starting point of the project, next time I'll take a look into the core of the keyboard, it's layout and some of the choices made for the final design.

Before I move on, here is a quick YouTube video preview into the (near) final product working with both an emulator running on a Raspberry Pi and then connected to a ZX81 via the expansion card.


See more entries for this project: Part 1Part 2Part 3Part 4Part 5


Read More

Wednesday, July 25, 2018

To TRS-80 COCO 2 Or Not To COCO

3 comments

I've had a TRS-80 64K PAL Colour (not Color, it's an Australian version) Computer 2 laying around for a little while now. Purchased as an untested item and as such I presumed would have some issues to deal with. Thankfully I've finally I found some time (in amongst everything else)  to look into what issues if any there might be, and decide if it's worth going further and conducting a full restoration.

Plugging the computer in and turning it on revealed that there was indeed some life inside; but it's bit of a half life with a screen full of garbage characters. On the plus side the garbage is over a green background, green being the colour it's supposed to be. I was suspecting this was going to be a DRAM issue, a little bit of googling seemed to confirm suspicions. Time to open the COCO up.

First switch on of the COCO and a load of Garbage Characters on the screen.
From the awful amount of rust on the modulator it appears the computer has had a hard end of life.  It looks as if the COCO's spent some time in damp back sheds and garages. What we're looking for at this stage though is the DRAM. This is to be found on a plug in board hovering above the motherboard, with some cardboard shielding over it.

TRS-80 64K PAL Colour Computer 2 Motherboard
Arranged in a row on the plugin board, are eight 8k MB8264A DRAM chips, these provide the systems total of 64k. Unfortunately the DRAM is soldered onto the plugin board, these needed to be removed to find the problem ones. Rather than solder replacement DRAM back in directly I also took the opportunity to solder IC sockets.

Plugin DRAM Board, eight 8k MB8264A chips.
After some time consuming un-soldering a bit of snipping, re-soldering and finally mounting new DRAM, four ICs in total the Colour Computer came back from the dead. I now have the expected boot screen on a green background, this is a good start.

I'm not sure if it's the LCD TV, the computers modulator or something else, but the quality of the display is abysmal. Still now that I know the computer is essentially working I'm going to give the whole system a going over and full restoration.

Plenty more updates and some proper investigations into the world of TRS-80 Colour Computers to come.

And We have a Working Computer, Sort Of.


Read More

Sunday, July 01, 2018

ZeaMouse V2, USB Mice for the ZX81 & Spectrum Revisited: Part 2

Leave a Comment

The ZeaMouse version 2 firmware should take a USB mouse and have it function in a similar fashion to a Commodore 64s 1351 mouse. The 1351 had two modes of operation, an analogue mode and a digital compatibility mode. In digital mode a 1351s analogue movements are converted into digital signal for use on standard Atari style joystick port.

The trick to the converting an analogue like signal to a digital one is in the preservation of the proportional analogue mouse movement feel. Complicating matters is the host computer and the particular piece of software reading the joystick port at any given time.

In version one of the ZeaMouse I thought I'd got the mouse timings and movement about right. However at the time I only had a ZXPand equipt ZX81 for testing. Unfortunately what I though was working well was in reality only doing so for the ZX81. Thankfully I've acquired a ZX Spectrum Omni which has a Kempston compatible port, and so have been able to conduct more extensive testing this time around.

After about a month of testing I'm satisfied the mouse interface works just as well with the Spectrum (Kempston and Sinclair adapters) as a ZX81. Note that the Spectrums joystick ports should provide power on pin 5 else you'll need to power the mouse interface externally.

Proportional movement is simulated by keeping the joystick direction triggered for longer periods the more the mouse is moved in a constant direction. Getting the acceleration just right proved a little tricky. The mouse is also decelerated, but this happens at about twice the rate of acceleration.

The latest firmware ZeamMouse_V2_03.tar.gz is now avaliable for download, as always newer versions as they become avaliable are on the ZX81 Projects page.

To compile the ZeaMouse project a copy of the Circuits@Home Arduino USB Host Shield  library is also required. This is available from the Git Hub repository: https://github.com/felis/USB_Host_Shield


Using a USB Mouse in the 'The Artist 3'

See more entries for this project: Part 1Part 2

Read More

Saturday, June 30, 2018

A DIY ZX81 Keyboard Period Document

Leave a Comment
Looking to build an external ZX81 or Timex 1000 keyboard? Then I have just the 1982(ish) document to help get you started.

As part of a recent eBay acquisition of several ZX81-related books, I received an unexpected bonus. Included in the parcel was an excellent period document from the company Mule Electronics, outlining how to build and connect an external keyboard for the Timex 1000/ZX81. As far as I can tell, the document originated in the USA, although unfortunately there is no indication of the company's address or the exact date it was produced.

Converting Your Sinclair Keyboard – loose-leaf pages from a great little guide.
The document Converting Your Sinclair Keyboard contains a wealth of information that is still useful today, explaining exactly how the ZX81's keyboard works and what to consider when building your own external keyboard. It's well worth reading alongside the other keyboard modification documents available.

The document was simply too good not to share, so I've uploaded the complete guide to the Internet Archive. If you're planning an external keyboard project, it's definitely worth downloading a copy.

Read More

Sunday, May 20, 2018

Easy add-on Projects for Spectrum ZX81 & ACE (Redux): Part 3

2 comments

Let There Be Light Pen

Now that we have a working Decoder Board from 'Easy Add-on Projects for Spectrum, ZX81 & Ace', it's time to get down to some projects. There are a couple in the book I've really been wanting to try out,  Project 2: Picture Digitser and Project 7: Light Pen. Despite our guide books numeric ordering, the Light Pen is by far the simpler build, so lets start there.

The Light Pen Project

As everybody from the 80s knows, the Light Pen is the control mechanism of the future, mice touch screens and keyboards all redundant when you have a light pen by your side, it's truly the wonder input device for the ages.

Typically light pens work with only on CRT monitors; as lines are drawn on a CRT screen a light pen detects the CRTs scan line once it reaches the pen. The time it takes for the light pen to detect the scan line allows the computer to pinpoint exactly where on the screen the pen is placed.

The light pen featured in Easy add-on Projects for Spectrum ZX81 & ACE does not work in the typical way. Essentially the projects light pen functions as a light detector that doesn't detect CRT scan line progression. Working out where the light pen is on the screen is left entirely up to our BASIC programs. As it turns out (thirty plus years on from the books publications) this simplicity is exceptionally beneficial for the projects light pen, marking it just as usable on LCD monitor as it ever was with a CRT.

Original Light Pen Circuit from Easy Add-on Projects for Spectrum, ZX81 & Ace
Building the Light Pen and Circuit is not a difficult. I constructed the majority of the circuit on a breadboard, which sits quite nicely just behind the ZX81's keyboard. The LDR is mounted in the tip of an old pen, with a cable running down through the centre of the x-writing implement.  I hot glued the cable and resistor legs to removable nib holder (is that what it's called?) and the cable again where it leaves the top of the pen. This hold everything together quite firmly.

ZX81 and Light Pen attached to the Decoder Board
I was forced to make some minor changes to the circuit as some components can be harder to come by than others. The local (read Australia) walk in Electronics supplier Jaycar don't stock the projects prescribed ICL7611 CMOS Op Amp. In order to get the Light Pen up an running with minimal fuss I substituted the ICL7611 for a general purpose LM741 Op Amp.

Modified Light Pen Circuit
The IC change also made the addition of a couple of resistors necessary. The Output of the Substitute LM741 Op Amp doesn't lower the voltage close enough to TTL logic levels when detecting variances between the light-dependent resistor and reference potential. Two resistors, a 10k and a 4.7k are added to the IC Output that's feed back to the Decoder Board.

ZX81 Light Pen Test Menu Application
Based on the books listings and general project information I wrote up a simple BASIC application to test out the new pen with my trusty ZX81. The light pens status is read by input 3 of the Decoder Board, lines 10 and 20 of the BASIC listing reflect this. Line 10 also stores the machine code routines required for a ZX81 to read the Decoder Board: Refer to Appendix A of  'Easy Add-on Projects for Spectrum, ZX81 & Ace' for how all that works.

Finally, I've added a short YouTube Video of the Light Pen and the BASIC program in action. As can be seen it's really quite effective for simple input tasks.




See more entries for this project: ForwardPart 1Part 2, Part 3


Read More

Saturday, May 12, 2018

ZeaMouse V2, USB Mice for the ZX81 & Spectrum Revisited: Part 1

Leave a Comment
A year ago I knocked up the ZeaMouse, a USB mouse interface for the ZXpand and ZX81. ZeaMouse is a USB to digital mouse expansion board built around an Adrunio USB host shield. A year on it seems like a good time to revisit the project and make some improvements.

Last time part of the fun was building a simple Arduino clone as part of the ZeaMouse. Unfortunately this kept the size of the end product much larger than it needed to be. This time an Arduino Pro Mini 3.3v has replaced the DIY Arduino, matching this with a USB Mini Host shield and some additional components on a home-brew shield sees significant reductions in interface size.

The USB Mini Host shield forms the core of the project and is designed to fit under an Arduino 3.3v Pro mini. The USB shield has all the abilities of it's bigger brother but does with some but comes with some power supply limitations. By default the combination of 3.3 volt Pro Mini and USB host  combination delivers 3.3 volts to an attached USB device. For some hardware the voltage may not be high enough, although all the USB mice (if a limited selection) I've tested have work without issue.

3.3v Arduino Pro Min, USB Shield and ZeaMouse V2 PCB.
The USB Host shield can be modified to deliver 5v to connected devices if required. Details of the conversion can be found on the Circuits@Home website. The modification bypasses the Arduino's 3.3v regulator, meaning that whatever is used to supply power to the RAW inputs must be rated a 5v or lower else you risk frying an attached USB device. The ZeaMouse is powered from the 5v lines on the digital joystick port, so the modification is fine for our purposes. (But check your Micro Computers Specs first).

I decided against using 4066 switching ICs on ZeaMouse V1 as it made designing the single sided PCB a lot simpler. This time, with design simplicity and ease of build-ability screams for the use of 4066s. With the Arduino Pro Mini operating at 3.3 volts and the ZX81 at 5 volts, 4066s provide a simple way of keeping these conflicting voltages separated.


ZeaMouse V2 Circuit Diagram
Although I got a couple of double sided test PCBs fabricated, the ZeaMouse boards are pretty much designed with home PCB making in mind. Only the bottom of the board really needs to be made up. There are a couple of via's must be connected with some straight wire on the top of the board should you choose to build a single sided PCB.

Building the interface is straight forward. The hardest part is probably soldering the Pro Mini and the USB shield together. Constructing ZeaMouse shield itself is a breeze, and will only take about 20 minutes maximum.

Other than two 4066s, the only other components required are pin headers and IC sockets, although all of these are optional. The Arduino and USB Host along with the ICs could be soldered directly to the shield PCB. The only required header is J4, used to enable or disable RS232 communication with the ZXpand. J4 should be left open if using the ZeaMouse on any micro computer other than a ZX81.

ZeaMouse v2 Shield completed.
The connection pads or pin headers on the far end of the shield board should be wired up to an Atari joystick cable or DB9 socket. I had a cable from a broken controller to hand; care needs to be taken re-purposing cables for fear of sending 5 volts down the wrong line. The TX serial out is the one non-standard connection, it's specifically for the ZXpand+, and should be routed to RX on the ZXpand+.

ZeaMouse v2 interface for the ZX81 & ZXpand / ZX81, the ZX Spectrum and other 8 bit micros
Next time I'll cover the firmware and take a look at the mouse in action. No need to wait until then if you're keen to get going; All the files and firmware required to build the interface are a already available on the ZX81 Projects and Programs to Download Page.

See more entries for this project: Part 1Part 2
Read More

Sunday, April 29, 2018

Easy add-on Projects for Spectrum ZX81 & ACE (Redux): Part 2

Leave a Comment

Building the Decoder Board

After several weeks of waiting the Decoder Board PCBs arrived just in time for a bit weekend assembly and testing. I'd ordered the other components required for the build a couple of weeks ago and had them laying around in anticipation.

Aside from the various electronics, I decided to use a ZX81XT extender board purchased some time ago from Sell My Retro. The ZX81XT is perfect for prototyping or just for swapping various project boards in and out without the need for multiple edge connectors.

ZX81XT extender and Easy Add-On Decoder Board PCBs

As my decoder board at its core is a part for part update on the original design as presented in the 'Easy add-on Projects for Spectrum ZX81 & ACE' book, I pretty much followed the general assembly instructions given in the text. This process was exceedingly helpful during the various testing phases outlined during the build procedure.

The major update in my version of the decoder board is the substitution of through hole components for SMD parts. Being the first time I've willingly used SMD parts I was expecting quite a challenge. The good news for anybody else finding themselves slightly apprehensive of incorporating SMD components into projects is that it's actually quite easy to use them. The most problematic parts I found to be the tiny resistors and capacitors. I managed to loose a couple of the minuscule resistors by simply dropping them into someplace never to be found again. Dealing with and soldering of the SMD ICs in comparison was all very straight forward.

Fully Built Decoder Board Ready for Testing

After about an hour and a half I had the decoder assembled ready for some final testing. This is where I hit a slight snag. The first project in the book, 'Pulse Detector' serves as the final assembly test for the board. Unfortunately I neglected to order the ICs required for the test project.

I figured it should be possible to conduct some testing with a simple 555 timer circuit. I did however wish to ensure that what ever it was I built would be genuine test of the decoder. Luckily the book had such a 555 timer circuit I could easily modify, 'Project 5, Beeper'. Simply removing the Beeper part of the circuit (which I also had no components for) and replacing it with an LED would prove the board worked.

LED 555 Test Circuit Connected and Working on a Spectrum Omni.

I first tested the Decoder Board on a ZX81. This requires entering a program listing appearing in the books appendix. The ZX81 has no built in BASIC commands to read or write to expansion BUS, the programs listed in the book addressed this absence. After entering an running the application I successfully blinked an LED, a positive right of passage for any micro controlled project. I then moved the decoder board across to my recently acquired ZX Spectrum Omni (deserving of it's own blog entry sometime soon). Again the LED blinked as expected.

All in all everything has worked as expected, time to pick up some extra electronics and build some of the books proper projects.

See more entries for this project: ForwardPart 1Part 2Part 3


Read More

Sunday, April 01, 2018

Easy add-on Projects for Spectrum ZX81 & ACE (Redux): Part 1

4 comments

Re-Design the ZX81 Decoder Board

In the previous blog entry I left off before starting design work on the Decoder Board. The board is an essential build before attempting any of the 'Easy add-on Projects for Spectrum ZX81 & ACE'. In reality it's the first project of the book, even if it's not fully described until Appendix A.

First up I needed to transfer the circuit diagram provided in the book into Fritzing and build up a new circuit board compatible with the ZX81. I really could have made life easier for myself simply by printing the circuit board designs included within the book. My plan however is to use surface mounted ICs' instead of through hole components, both modernising the design and shrinking the boards footprint.

Decoder Circuit as presented in Easy add-on Project for Spectrum ZX81 & ACE

My intention was also to follow the original Decoder Boards layout reasonably closely. Ensuring any projects described by the book would still be referential to the end product. My main concession was to design around the shorter ZX81 edge connector only. This does not prevent a ZX Spectrum from using the device as a Spectrums' BUS is compatible with all signals used by the board.

To make life somewhat easier I combined the top and bottom layers of the circuit board layout presented in 'Easy add-on Projects' pages 166-167 into one image. Using the composite picture as a guide I began the layout my board. I'm quite glad I took this route as I noticed a couple of minor errors I'd made in transcribing the circuit diagram. More interestingly however the described circuit didn't seem to match with the board layouts provided by the book.

Composite Image of top and bottom board layouts as taken from the book.

A couple of traces from IC2 to IC4 appeared to be different between the books board layouts and circuit diagram. This was more than a little confusing. I checked the Jupiter Ace board layout (also in the book) against the ZX81 / Spectrum boards, and the designs seemed consistent. I decided to go about about updating my circuit diagram, bring it in line with the book layouts.

After quite a bit of triple checking I now have a circuit board design ready to send off for fabrication. My new (mostly) SMD board is approximately half the size of the original design, good for keeping fabrication costs down. I've also added a few extra clarifications and helpful labelling to the silkscreen layers.

Now to order some parts, check the design again before sending it off and hope for the best.

Final design for the new Decoder Board

See more entries for this project: ForwardPart 1Part 2Part 3


Read More

Friday, February 16, 2018

Easy add-on Projects for Spectrum ZX81 & ACE (Redux): Forward

Leave a Comment
There was a time when plugging a home fabricated electronics project into, onto or out the back of a Computer was an actively encouraged pursuit. Hardware project books for many a micro computer filled bookstore shelves which intern were filled with many a hardware DIY add-on. Easy add-on Projects for the Spectrum ZX81 and Ace, was one such tome of 80s knowledge, and it's been taking filling space on book self for a couple of years.

Easy add-on Projects for the Spectrum, a good read with some fun possibilities 

In order to undertake the builds presented within Easy add-on Projects for the Spectrum ZX81 and Ace, an initially requirement is the construction of an Address Decoder board, itself obviously already an project. In the true maker spirit of the times this involves producing your own PCB. There was at one point an order-able companion board, leasoning the difficulties any period 80's enthusiast lacking in manufacturing resources would face, though notably you still had to populate the PCB with components yourself.

The (non-Address Board Creation) projects themselves are quite an interesting selection, ranging from a primitive scanner, a light pen, a lap counter and to the major project a weather station. Not surprisingly they all have a very 'you could do this with an Arduino or Raspberry Pi' feel to them. In considering this vibe, it could also be a fun aside to implement the same on either of those modern devices, or the other way around by bringing some Arduino projects to the ZX81.

Lets not get to ahead of ourselves, the first order of business is to get down to that Decoder. There are 2 versions of the board presented in the book, one for the Jupiter Ace and one that's compatible with both the ZX81 and Spectrum, it's this board I'll be constructing. There is not a great deal to it, just a few 74 series ICs and other easy-ish to source parts. This is one of the wonderful thing about retro stuff I guess, it's all still relatively easy to source and understand. I'm not going to use the board quite as designed, I'm intending to use SMD components for example to modernise construction, in general however there should be no functional changes.

So, over the course of the coming weeks I'll get down redesigning the Decoder Board and form there onto the actual projects. If you playing along at home the book ' Easy add-on Projects for the Spectrum ZX81 and Ace' is available from the Jupiter Ace Resource Archive. A site well worth an explore given the Ace's close links to the ZX81 and ZX Spectrum.

See more entries for this project: ForwardPart 1Part 2Part 3


Read More

Thursday, February 08, 2018

Amstrad NC 100, Don't Blow a Fuse

Leave a Comment
In the last few days I took delivery of an Amstrad NC 100 notepad computer that had been listed on everybodys favourite auction site as not working. The purchase was an educated gamble as all my prior research on the NC 100, along with helpful advice from the Twitter Sphere, pointed to the major cause of failure for these devices being an easy fix. A simple blown fuse that would probably require replacing or circumventing.

After taking the NC 100 apart, locating the fuse where it should be, in the bottom left corner of the main board (power socket facing towards you), I ran a continuity test, the resulting in our prospective blown fuse scenario proving correct.

Amstrad NC 100 Main Board, Left: A Dusty and Blown Fuse. Right: A Temporary Jumper Wire Fix

The non-working Fuse is a  PCB Leaded, 500 mA, 250 V component, which I didn't have to hand. So in order to power up the computer I simply removed the fuse and soldered in a copper jumper wire as a temporary fix. (Next time I place a general component order I'll obtain a new fuse.) This is fine, just as long as I insure the polarity of any power supply is correct, Tip / Outer positive, inner negative.

Interestingly, based on the type of fuse I found in my NC 100 , there seem to be a couple of revisions of the NC 100 board. A number of online references indicate that the fuse should be an SMD component, not a though hole type one. 

A Now Fully Functional Amstrad NC 100

To test, I reconnected the main board to the LCD panel, and screen came to life with a Friendly 'Lithium battery is low' warning, not unexpected as there was no backup battery in the device at the time. Fix completed, and case reassembled, and I'm now the proud owner of a rock bottom priced Amstrad NC 100.

Now to find something for this little notepad computer do, maybe I'll take it to the office and garner some curious and possibly concerning looks at meetings.


Further Viewing


For an entertaining and informative overview of the NC 100, including the replacement of (in this case an SMD) fuse, head over to YouTube and the EEVblog

Read More

Sunday, February 04, 2018

The UDG For ZXpand Add-on for the ZX81: Part 1

1 comment
One of most noticeable graphic element lacking from a ZX81 is perhaps the ability to define said graphic elements. Enter the UDG for ZXpand from Andy Rea, an expansion module available from around mid 2017 that affords the ZX81 owner the opportunity to create User Defined Graphics.

The UDG for ZXpand Hardware


The UDG for ZXpand is designed to be used in conjunction with memory expansions supporting the WRX extensions / modifications. Modern memory boards such as the ZXpand(+) and the ZXblast support this natively. Note that if using period RAM expansions such as the 16k Sinclair RAM pack or one from Memotech, then hardware alterations are required.

The UDG 4 ZXpand Expansion Board.


For an expansion board the UDG 4 ZXpand is quite small, being the width of the ZX81 expansion bus and approximately as deep again.. The expansion is designed to slot horizontally and directly into the ZX81 expansion port, and to be sandwiched  between a ZX81 and supporting RAM Pack / ZXpand / ZXblast.

Configuring the UDG 4 ZXpand for use with available software is a simple matter of adjusting a jumper setting on the board. A small toggle switch might have been a better choice, still one could easily be added by the end user. The jumper can be set 3 ways:

  1. Open: No effect, ZX81 operates as normal
  2. 64 Mode: Sets the UDGs to a defined limit of 64 Characters. A further 64 characters will be inverse versions.
  3. 128 Mode: All available ZX81 characters can be redefined and made available.

Modes 3 in particular provides scope for a complete overhaul of the ZX81s character set. Need some lower case characters, then replace the otherwise seldom used inverse set with something more useful. I'll cover the creation of character sets and the importation of existing fonts in a second post / article.

It's also worth noting that the UDG 4 ZXpand is supported by the 1.8 release of the EightyOne Sinclair Emulator.

Upadated UDG Gamming Goodness


The ability to redefine all 128 character tiles provides the scope for all existing ZX81 games to be retrofitted with HiRes character graphics. A good case in point would be Quicksilvas Galaxians, originally published in 1983 and written by T. Beckworth

A fast paced arcade game, Galaxians exemplifies just what a standard ZX81 can deliver when asked nicely. With the addition of some well done UDGs Galaxians is elevated to a whole new level, the game rivalling the best early games the ZX Spectrum has to offer.

Galaxians Clone with and without UDGs enabled

You can grab the updated version of Galaxians Thanks to Moggy on the Sinclair World Forums. Be sure to search for other updated tittles while there.

The results of redefined character sets on old games depend largely on the quality of the original, or simply revolve around just how the pre-existing Sinclair character set may or may not have have been used. Even in the otherwise brilliantly updated Galaxians there are some oddities to be seen due to this specific limitation. This is most apparent in the Hi Score tables where an "*" character, normally used in game as a player bullet, leads a certain illegibility the player score listing.

New Game Realses


Zedragon version 1, running on a ZX81
Updates to older games is all well and good, but endowing a ZX81 with near ZX Spectrum like powers (minus to colours) the UDG for ZXpand stands to have major impacts on many a new games releases.

There are effectively no limitations plaguing new tittles , these having the potential to provide complex experiences with a full usage of UDGs.

The first of brand new title being Ze dragon, a game so professional it's hard to believe a ZX81 is running behind it. A clone of Atari Sea Dragon, Ze Dragon is a Scramble like game replacing other worldly action with a Submariner adventure.

Ze Dragon was released in late 2017, and February 2018 has seen it updates to Ze Dragon II. The new version features pixel level scrolling, something not before seen in a ZX81 game. (Perhaps some parallax scrolling in version 3?).

Ze Dragon is an impressive conversion, demonstrating the full capabilities of the ZX81, UDG for ZXpand and the ZXpand(+). Perhaps this is not so surprising as the creators behind the both the UDG 4 ZXpand and ZXpand are behind the game. Game Author Sir Morris (Charlie Robson of ZXpand fame), Andy Rea and other co-mariners should be justly proud.

As with Galaxians, Ze Dragon 2 is available over at the Sinclair World Forums.

Ze Dragon 2 running on the EightyOne Sinclair Emulator


Next Time


Well that's a basic review and some games covered, so what about using Andy Reas' clever little device to do our our own bidding. Next post I'll attempt to cover some basics on generating our own UDGs for own games and programs. Covering some simple coding, then moving quickly onto some software that's already available to take all the hard work out of generating new ZX81 characters sets.

Read More

Monday, January 22, 2018

Mystic BBSing with WiModem232s Zeddynets and Pi

3 comments

Or Networking Disperate Retro Computers?


I've been meaning to write something about the ZX81 Ethernet adapter Zeddynet for a while now, but hadn't got around to it for various reasons. In the last week or so another more general purpose retro network device in the form of a Serial to WiFi modem / network adapter, the WiModem232 crossed my threshold rekindling ideas around networking old computers.

Now we have the basis for a slightly confused and conjoined blog post, one that ends up being not quite a review, mostly not a tutorial and a slightly random collection of ideas on network hardware and software, in which I get a number of ancient machines on-line connected to a BBS, a BBS that ends up being my own local BBS.

Some Networking Hardware Required


Now for a brief look into the networking devices I'm using. Both interfaces are specific to my needs (and small retro collection), the WiModem232 is certainly of much use to the general retro community, where as the Zeddynet is obviously of more limited one machine appeal.

Zeddynet - for a ZX81


Starting with Zeddynet and the ZX81: The Zeddynet board mounts onto a ZX81XT extender / extension board, and combined plugs into the ZX81s expansion bus. The card is quite tall with the Ethernet port located at the top. This arrangement is a little cumbersome, particularly once a network cable is plugged as the cable and the card tend to get in the way of a low-ish sitting desktop monitor. Still we're about to plug a ZX81 into a network, a few aesthetics issues and minor viewing discomforts are hardly of major issue compared to the achievements realised.

Zeddynet Interface
Available sporadically from and designed by the German ZX-Team, Zeddynet as the name implies connects a humble ZX81 to a TCP/IP network via Ethernet cable. Zeddynets first appeared back in 2012, I procured mine mid 2017, unfortunately no more have been produced since then (at the time of writing). Still, keep an eye out on SinclairWorld forums should you desire a fully assembled Zeddynet.

In order to configure and use the Zeddynet expansion on the ZX81 some software is required. At minimum in order  to get a ZX81 connected to online BBSs software in the form of ipconfig and telnet are required. Telneting is only one small part, there are web-browsers and network file managers and more. The German Sinclair forum.tlienhard.com has links to all software and sources.

WiModem232 for Anything with a Serial Port


Around the middle of 2017 Paul Rickards released the WiFi232 Internet Hayes Modem for retro computers, the perfect solution for networking old computers. Sadly the device has remained sold out for months, and may now be permanently unavailable. Luckily and possibly inspired by the original WiFi232, two new solutions have recently hit the market from CBMStuff, the WiModem232 and WiModem232 w/OLED.

WiModem232 w/OLED display
Functionality wise, the only real difference between the WiModem232 and WiModem232 w/OLED is the rather obvious OLED screen. The choice of adapter comes down to a desire for a handy information display or a need for the milliamp power savings brought about by not including it. Note that on both variants an RGB LED provides a status indication allowing you to easily live without the OLED screen.

The modem is configured and connected to a WiFi network by Hayes Modem command extensions. Similarly Hayes commands are used to connect to telnet instances on a local network or further a field.

In order to use the WiModem232 simple terminal software is required. The machines I've tested the WiModem232 with (TRS-80 model 100/102 and an NEC PC-8401) have terminal software built into their ROMs, in all cases this worked perfectly.

BBSs Are Out There


Dial up BBSs were a major thing before the Internet age, but sadly faded into slight irrelevance in the late 90s, but now they're back and on the Internet. In fact there is a whole new (old) world out there waiting to be connected.

Perhaps the best resource for finding BBSs is the Telnet BBS Guide. Telneting to any of the BBSs listed from a modern PC is fairly trivial, being able to telnet from a vintage micro computer is (whoo hoo) exciting.

Testing Interfaces a DIY BBS


Despite the wealth of BBS out there, I wanted to try out Zeddynet and the WiModem232 on my micros' without burdening the various online resources. Possibly I'd rather like keep the BBS running, with a view to opening it up for others to log on at some point. For these reasons I decided to to deploy a Raspberry PI and install some BBS software.

The Telnet BBS Guide helpfully lists the software being used by various BBSs in it's site registry. Of the software listed 'Mystic' BBS seems by far the most popular and actively maintained kit going, plus it has Raspberry Pi versions available that work on all network enabled Pies. A logical choice then.

The setting up 'Mystic' is as easy as unzipping, running a minimal installation, and then starting a BBS server. In less than five minutes you can have a bare bones BBS up and running and telnet-able into. After that 'your mission, should you choose to except it', exposes a whole rabbit hole of configurations and text files to modify in order to tailor and craft a unique BBS experience.

Crafting An 8 Bit Mystic Experience


In its default state Mystic targets computers with 80 columns and full ASCII / ANSI support. This is great for Amigas, Atari STs and IBM clones, not so great for 8 bits micros. This situation is fixable, but it does require a full redesign of the built in theme. The task is not difficult, it does though require some dedication.

All BBS layout files can be altered with tools built into Mystic, thus allowing for complete customisation of a BBSs look and feel. It is even possible to create ASCII and ANSI versions of pages servicing general fallback requirements. As a general design rule in targeting older 8bit machines I found it wise to limit charter selection to the first 128 ASCII characters. Using above this limit you start running into compatibility issues between the various proprietary character sets employed by 80s micros. I'm going out on a limb here and suggesting that period telnet / dial up software should automatically transpose any basic character set incompatibilities if working within the 128 limitation.

Locally Connected


There is a long way to go and to start I've only scratched the service of setting up a BBS and using the Zeddynet and the WiModem232 interfaces. On the BBS side of things my only real attempt at customisation has been the Welcome Screens. For now though it serves as a proof of usability both software and hardware.

LINUX Console


Limiting the choice of characters, but allowing for ANSI colours, a LINUX logon to the ZX-AD BBS (as I've named it) looks plain as opposed to what is possible for a full ANSI/ASCII experience. It does help provide a similar experience across all platforms however.

LINUX Console Connected to the Mystic BBS Software Running Locally on a Raspberry Pi

Sinclair ZX81 with Zeddynet 


I limited the welcome screens width to 64 characters, this fits nicely with ZX81 hires modes (additional hardware required). I'd also created a ANSI and ASCII versions of the welcome screen the ZX81 is using the ASCII variant.

ZX81 with Zeddynet Connected to Local Mystic / ZX-AD BBS

Tandy TRS-80 Model 100 & 102 with WiModem232


The Tandy machines are limted to 40 character width screens. Mystic can support this, but I haven't tailored the welcome screen to the 40 character limit, and the screen therefor doubles around.

Using the Tandy machines I found that the WiModem232 baud rate could also be no higher than 1200 else I started experiencing character loss.

TRS-80 Model 102 Connected to Mystic, 40 columns is Problem at this Stage


NEC-PC8401 with WiModem232


Mystic attempts to verify if a connecting computer supports the ANSI standard, interestingly the NEC-PC8401 reports back that it does. This is of course a lie, as it does not. Regardless of this untruth it will render the display correctly if the first 128 ASCII characters limit is adhered to. Also as fully functional CP/M computer the PC8401 has a 80 column display, consequently there is no issue with screen width, screen length however may pose its own problems latter.


NEC-PC8401 Connected to Local Mystic / ZX-AD BBS


To Summarise


Thus ends a rather scattered post on networking 8bit machines and BBS software. On the hardware side of things I can uttery recommend the WiModem232, it really is very simple to use. Zeddynet is similarly fun in execution. In both cases the full possibilities have hardly been touched on by this post.

As for the running a BBS, it's entirely likely I'll refine and open my local experience up to the broader world. Coming Soon - ZX-AD BBS.

Addendum


In the total absence of ZX-AB BBS, being that it's confined to my local network for the moment, and if you're hankering for a Sinclair related BBS that's online right now, then you can't go past sinclair-retro-bbs:
  • Telnet: retrobbs.sinclair.homepc.it Port: 23
Read More