The modular nature of the RC2014 Pro, along with the vast array of colours that PCBs are available in these days has made me consider building a kit with all the colours of the Pride flag for quite some time. When it came down to it though, the colour choices were actually too limited. So I could either give up, or make the Pride Flag with the wrong colours… or find another solution.

Skip ahead to the tl;dr section if you want to jump past the theory, testing, and reasoning, and just want to see the process and settings I settled on.

Visit z80kits.com during June 2023 to buy an RC2014 Pro Pride or an RC2014 Zed Pro Pride. They are limited edition and raise money for two great Trans and LGBTIQ charities.

I started to search for different printing techniques and dye sublimation kept on cropping up, but mostly for things like mouse mats, t-shirts and mugs. After looking closer, I wondered if it was possible to use for PCBs. There are a few articles that seem to cover this, but they generally revolve around dye sublimation to make the mask to etch a PCB – and I didn’t want to go down that route! I eventually found an article by Ben Everard in Hackspace magazine which has a proof of concept. That was enough for me to dive deeper.

So What Is Dye Sublimation?

In scientific terms, Sublimation is the transition of a substance directly from a solid state to a gas state. It does not pass through the usual liquid state and only occurs at specific temperatures and pressures. The ink used for the process has this property, however, most inkjet printers cannot use this ink as they have a small heater on the print head. There are two types of printers that can be used for dye sublimation ink; dedicated printers made by Sawgrass which are really expensive, and Epson cheap crappy ones which can be converted. As Epson printers print cold, their print head won’t prematurely vaporise the ink, and conversion kits are available. Cheap and crappy is within my budget, although once the cheap printer is paired with a conversion kit, special ink, special transfer paper and a heat press, it isn’t all that cheap. All in, it was the best part of £500 investment – but I will be able to make my own mouse mats cheaply, so maybe that isn’t too bad!

The heat press is where the magic happens. With the blank (ie mouse mat, t-shirt or PCB) in contact with the ink on the transfer paper, applying pressure and heat will turn the ink in to a vapour that embeds itself in the blank. Once cool, it remains permanently* in the blank.

Initial tests

The article from Ben Everard said that he got his PCB covered entirely in white silkscreen, and it worked. Before ordering any PCBs, I wanted to try things out with some old scrap boards. I used a colourful printer calibration page to see how things came out. Obviously trying to dye blue boards didn’t work out great with the colour, but it was a lot better than I’d expected.

The thing that I was most relieved about was that the dye does not get absorbed by the metal. Yeah, it makes sense when I think about it, but a worry was that I’d have to mask off every component hole or else design the print around the holes and line it up super precisely. But that wasn’t a worry.

Even more important was that I was able to solder to the board and that the dye wasn’t conductive. More testing and things were looking good.

I had a couple of scrap boards with white solder resists, but the colour didn’t seem to work out too great.

Here a real PCB is compared to a printed image of that board on to white solder resist. It has taken the dye, but really not very deeply. To test things properly, I needed some boards specifically for running tests like this. So I ordered some boards each with white solder mask and no silkscreen and some that were totally covered on both sides by silkscreen. (Fun fact: I paid to have the batch number removed on the one with no silkscreen, but I figured there was no need for that one the one which was 100% silkscreen. Turns out I was wrong!).

After exporting the original silkscreen layer from KiCad in to Inkscape I set up some different colours and tried 8 different variations between the two types of board

This confirmed my suspicions that the solder resist only boards had a sharper image, but they didn’t take the colour anywhere near as well as the ones covered entirely with silkscreen. As the entire motivation behind the RC2014 Pride was colour based I now had a plan. 100% silkscreen coverage for the 4 modules that JLCPCB didn’t offer the colours for; Digital I/O (light blue), Compact Flash (pink), Pi Pico VGA (Orange) and ESP8266 Wifi (brown). Of course, for the full pride flag, there should also be a black module too – however, I was able to source all of my ICs in black, so the representation is there!

To make efficient use of the dye sublimation paper and heat press bed size I decided to panelise the boards in a 2×3 grid. The KiKit plugin for KiCad does a great job of this once you’ve dialled your settings in right (Spoiler: I didn’t quite dial them in right, and there’s a very slight lip on the top where the 45 degree and radiused corner meet the top. Sorry)

The original silkscreen layer and edge cuts from the panels was exported from KiCad in to Inkscape. From here I created a new layer above the imported layer and from here I could trace around the PCB shape and make my own artwork for it without being constrained to a single colour, font or any of the KiCad limitations. The Digital I/O module has the best representation of colour use, indicating which LEDs and switches go where. However, every board got its own bit of design flair.

With the printer set to high quality print, slow speed and mirrored, this is then printed to the transfer paper. The PCB panel needs to be aligned very carefully and held down with Kapton tape before going in the heat press, sandwiched between 2 sheets of Teflon. Trial and error on the settings earlier suggested that 180’C and 180 seconds worked best.

Here you can see an unused printed sheet at the top, a used sheet on the left and the dyed PCBs on the right. The colours on the unused transfer sheet are not representative of the final colour, but a .ics (image correction setting) file specifically for this ink and paper combination takes care of this and prints what is needed to get the colour you expect. You can see that some dye is left on the sheet after it has been used. Printing on to more absorbent items like mouse mats or t-shirts there is almost nothing left on the transfer sheet.

When I did the Compact Flash Module though, I encounter two big problems. When I supply the CF Modules I solder the surface mount socket beforehand as some people struggle with the 50 pin fine pitch connector. I use solder paste and a stencil, then a hot plate and hot air to reflow it.

Because the dye does not penetrate the plated pads, I assumed (wrongly) that this would be fine. However, I found it impossible to get the solder paste to stick to the pads. I don’t know exactly why this is, but I assume that the heat press somehow damages the plating. It may work better with ENIG plating, although I haven’t tested this.

I did find that a strip of Kapton tape fixed this problem, although it does add extra cost an labour to each board.

The other problem is heat. Using a MHP30 hot plate at 250’C under the board will leave a white 30x30mm square on the back where the dye has evaporated! Using hot air from above will evaporate the dye too!

The solution I found was to use a combination of a hot plate set to 125’C to pre-warm the board then the hot air only needs to spend a few seconds from above which is enough to flow the solder but only produces minimal evaporation around the socket. It isn’t ideal, but this part is hidden deep inside the RC2014 so isn’t exactly an eyesore!

The Pi Pico and ESP8266 modules are wide pitch surface mount parts, and although these seem to flow just fine with a regular soldering iron, I have played it safe and Kapton Taped over those connections too before going through the dye sub process. It adds quite a bit of time to the process, but feels important.

However, if you were doing a modern PCB with all surface mount parts then I don’t think it is feasible to use dye sublimation. Masking off every pad would be a nightmare, and there’s no way it would survive a reflow oven. So this isn’t a miracle solution that will give everybody gloriously colourful PCBs :-(

Another issue I came across was ghosting of the text. If you look at the first CF socket photo you might spot that the text isn’t too clear, although the lines are fine. The artwork was created in Inkscape on a Linux machine, but due to printer driver issues, I printed from Inkscape on a Windows laptop. I’m not exactly sure, but I suspect that there’s some kind of font incompatibility between the two machines. The workaround for this is to export as a PDF on the Linux machine with the “Convert Text To Path” option set. This PDF can then be printed from the laptop from Inkscape and the text is fine. I think this is just an issue with my setup and not anything inherently wrong with dye sublimation.

tl;dr Here’s How _I_ do it

  • Design the PCB in KiCad as normal, then cover the front and back with a filled in rectangle of silkscreen. Send this to JLCPCB to have the boards made
  • Remove the rectangles and export the front and back silkscreen layers with edgecuts to PDF file
  • Import the PDFs in to Inkscape. Add another layer above and use this to trace your board edge, component layout and text as you wish. Different fonts and colours and images can all be added here if required.
  • I exported this to another PDF then used Inkscape on a different machine to print this (this should be a redundant step though). Printed using high quality setting, mirrored and with fast mode turned off. Separate pages are printed for the front and back of the board.
  • Epson W2010 wireless printer has been converted to dye sub printing with a kit from City Ink Express, using their ink and paper
  • The white PCBs are prepared with Kapton tape over surface mount pads. Then the board is laid over the back image, aligned very carefully and held in place with Kapton tape.
  • The pre-heated heat press is set to 180’C. The PCB is set face down with the printed page on top, and a sheet of Teflon over the top. This is then pressed for 3 minutes then removed.
  • When cool, the PCB is removed from paper, flipped over and attached to the front image sheet and the heat process is repeated.

Problems and lilmitations

Whilst this offers a lot of possibilities with PCB design, it is far from perfect. Firstly is the upfront cost of the equipment needed to print and transfer the design. It is a very labour intensive process which uses specialised ink and paper, so these costs need to be taking in to account too. Alignment needs to be accurate too (unless you have a design that doesn’t need to be aligned). The image is not pin sharp, and there is a certain amount of feathering around edges due to the silkscreen, so fine details may not work too well. And lastly, the surface mount limitation is going to make it a non-starter for a lot of projects. But, with all those points in mind, if it works for you, the possibilities are endless.

Retro Challenge 2017/10 – Returning to Zork

After what felt like a lot of aimless bumbling around and poor progress on the first streamed game of Zork, I decided to take a peek at a walkthrough solution before playing this.

The last live stream finished off with me getting frustrated with not being able to undo a bolt at the Dam, despite having a wrench.  A peek at the walkthrough mentioned pushing a yellow button in the control room first.  Really?  Like, how was I supposed to know that?  Ok, I’ll admit that I hadn’t spotted any of the buttons in the control room (there was a lot of text bombarding me as I arrived in there), but if I had, I would have probably pushed all the buttons.  I don’t know if you must push only the yellow one, or if pushing them all would render the bolt still unturnable, but if this is the level of puzzle I’m supposed to solve, then it’s unlikely that I’m going to make too much progress after this part.

So, instead, I decided to print off the first couple of pages of the walkthrough, and planned to just follow along with it.

The live stream started at 7pm on Thursday evening, and the set up was the same as the previous one.  The only difference was that I’ve now upgraded from the free version of Wirecast to a licence one with no interruptions.  There was 5 viewers on YouTube and 4 on the text stream, although towards the end I spotted a tweet from a viewer that was unable to connect to the text stream (Sorry!), but I never found out if it was a problem at my end or his.

The first thing I wanted to do was test out the instructions on pushing the yellow button before undoing the bolt.  Sure enough, this worked!  However, there were a few other things that I’d missed out between the start and the dam.  I could have possibly caught up with those in a different order, but decided to quit this game and start afresh.

Progress went well, and within an hour I had completed around 50% of the game.  Some of the walkthrough was invaluable.  I can imagine I’d have ended up stuck in the maze for ever, and probably unable to map it too, but when the walkthrough tells you to just go northwest, south, west, up, west, southwest, and northeast, it is much more enjoyable.  Even following along on the map this was hard to work out.

I feel like I’ve successfully completed the Retro Challenge I set myself, and I’m happy that things went pretty well.  As I’ve mentioned before, I’m not much of a text adventurer, and I don’t think this experience has changed that.  Zork was actually better than I thought it would be, and at some point I’ll play through the 2nd half of the walkthrough.  The best part for me, however, was the technical side of things, and hooking up an ESP8266 as a wifi link for the RC2014.  There seems to be a few different bits of ESP8266 software that will add value to the RC2014, so I’ll be developing a proper ESP8266 Module soon.

A big thanks to those that have followed along with this blog, via Twitter, and, of course, via YouTube and the text stream.

Transcript of this adventure here;

ZORK1

ZORK I: The Great Underground Empire
Copyright (c) 1981, 1982, 1983 Infocom, Inc. All rights
reserved.
ZORK is a registered t
>RESTORE
Load SAVE disk then enter file name.
(default file name is ZORK1.SAV).
Type <ENTER> to continue  > ZORK1.SAV

Load Game Disk if it was removed.
Type <ENTER> to continue >
Failed.

>RESTORE
Load SAVE disk then enter file name.
(default file name is ZORK1.SAV).
Type <ENTER> to continue  > 

Load Game Disk if it was removed.
Type <ENTER> to continue >
Failed.

>QUIT
Your score is 0 (total of 350 points), in 0 moves.
This gives you the rank of Beginner.
Do you wish to leave the game? (Y iY

G>DIR

G: ZORK1    COM : ZORK1    DAT : ZORK2    COM : ZORK2    DAT
G: ZORK3    COM : ZORK3    DAT : FIRSTGO     
G>L ZORK1

ZORK I: The Great Underground Empire
Copyright (c) 1981, 1982, 1983 Infocom, Inc. All rights
reserved.
ZORK is a registered tRESTORE FIRSTGO
I don't know the word "firstgo".

>RESTORE
Load SAVE disk then enter file name.
(default file name is ZORK1.SAV).
Type <ENTER> to continue  > FIRSTGO

Load Game Disk if it was removed.
Type <ENTER> to continue >

Ok.

>LOOK
Dam
You are standing on the top of the Flood Control Dam #3, which
was quite a tourist attraction in times far distant. Thered dam.
There is a control panel here, on which a large metal bolt is
mounted. Directly above the bolt is a small green plastic
buLOOK
Dam
You are standing on the top of the Flood Control Dam #3, which
was quite a tourist attraction in times far distant. There are
paths to the nortThe brown sack contains:
  A leaflet
  A ZORK owner's manual
  A clove of garlic
There is a tour guidebook here.
There is a
>N
Dam Lobby

>N
Maintenance Room

>LOOK
Maintenance Room
This is what appears to have been the maintenance room for
Flood Control Dam #3. Apparently, this room has PUSH YELLOW BUTTON
Click.

>
I beg your pardon?

>S
Dam Lobby

>S
Dam
You are standing on the top of the Flood Control Dam #3, which
was quite a tourist attraction in timesI
You are carrying:
  A sword
  A tube
  A wrench
  A matchbook
  A pile of plastic
  A nasty knife
  A brass lantern (prUSE WRENCH ON BOLT
I don't know the word "use".

>UNSCREW BOLT
I don't know the word "unscrew".

>UB NBOLT WRENCH
I don't know the word "unbolt".

>TURN BOLT
What do you want to turn the bolt with?

>TURN BOLT WITH WRENCH
The sluice gates open and water pours through the dam.

>E
Dam Base

>LOOK
Dam Base
You are at the base of Flood Control Dam #3, which looms above
you and to the north. The river Frigid is flowing by here.
AlonE
You can't go that way.

>S DIAG
I don't know the word "diag".

>DIAGNOSTIC
You are in perfect health.
You can be killed by a serious wound.

>SAVE
Load SAVE disk then enter file name.
(default file name is FIRSTGO.).
Type <ENTER> to continue  > FIRSTGO2

Load Game Disk if it was removed.
Type <ENTER> to continue >

Ok.

>RESTART
Your score is 44 (total of 350 points), in 156 moves.
This gives you the rank of Amateur Adventurer.
Do you wish to restartY
Restarting.
ZORK I: The Great Underground Empire
Copyright (c) 1981, 1982, 1983 Infocom, Inc. All rights
reserved.
ZORK iOPEN MAILBOX
Opening the small mailbox reveals a leaflet.

>GET LEAFLET
Taken.

>READ LEAFLET
"WELCOME TO ZORK!

ZORK is a game of adventure, danger, and low cunning. In it
you will explore some of the most amazing terrN
North of House
You are facing the north side of a white house. There is no
door here, and all the windows are boarded up. ToN
Forest Path
This is a path winding through a dimly lit forest. The path
heads north-south here. One particularly large tree UP
Up a Tree
You are about 10 feet above the ground nestled among some
large branches. The nearest branch above you is above yourGET EGG
Taken.

>OPEN EGG
You have neither the tools nor the expertise.

>D
Forest Path

>E
Forest
This is a dimly lit forest, with large trees all around.

>W
Forest Path

>S
North of House

>E
Behind House
You are behind the white house. A path leads into the forest
to the east. In one corner of the house there is aOPEN WINDOW
With great effort, you open the window far enough to allow
entry.

>ENTER WINDOW
Kitchen
You are in the kitchen of the white house. A table seems to
have been used recently for the preparation of food. A p
>GET SACK
Taken.

>GET BOTTLE
Taken.

>OPEN SACK
Opening the brown sack reveals a lunch, and a clove of garlic.

>EAT GARLIC
What the heck! You won't make friends this way, but nobody
around here is too friendly anyhow. Gulp!

>W
Living Room
You are in the living room. There is a doorway to the east, a
wooden door with strange gothic lettering to the wOPEN TROPHY CASE
Opened.

>GET SWORD
Taken.

>GET LAMP
Taken.

>REMOVE RUG
The rug is extremely heavy and cannot be carried.

>PULL UP RUG
With a great effort, the rug is moved to one side of the room,
revealing the dusty cover of a closed trap door.

>OPEN TRAPDOOR
The door reluctantly opens to reveal a rickety staircase
descending into darkness.

>DOWN
You have moved into a dark place.
The trap door crashes shut, and you hear someone barring it.

It is pitch black. You are
>LIGHT THE LAMP
The brass lantern is now on.

Cellar
You are in a dark and damp cellar with a narrow passageway
leading north, and a crawlwaDROP EGG
Dropped.

>SAVE
Load SAVE disk then enter file name.
(default file name is ZORK1.).
Type <ENTER> to continue  > 2NDGO.SAV

Load Game Disk if it was removed.
Type <ENTER> to continue >

Ok.

>N
The Troll Room
This is a small room with passages to the east and south and a
forbidding hole leading west. Bloodstains andATTACK TROLL
(with the sword)
A quick stroke, but the troll is on guard.
The troll swings; the blade turns on your armor but crashes
broadATTACK TROLL
(with the sword)
You are still recovering from that last blow, so your attack
is ineffective.
The troll swings his axe, but i
>ATTACK TROLL
(with the sword)
The haft of your sword knocks out the troll.

>ATTACK TROLL
(with the sword)
The unarmed troll cannot defend himself: He dies.
Almost as soon as the troll breathes his last breath, a cloud
of sinister blDIAGNOSTIC
You are in perfect health.
You can be killed by a serious wound.

>SAVE
Load SAVE disk then enter file name.
(default file name is 2NDGO.SAV).
Type <ENTER> to continue  > 

Load Game Disk if it was removed.
Type <ENTER> to continue >

Ok.

>W
Maze
This is part of a maze of twisty little passages, all alike.
A "lean and hungry" gentleman just wandered through, carrying
a large bag. Finding nothing of value, he left disgruntled.

>W
Maze
This is part of a maze of twisty little passages, all alike.

>U
You can't go that way.

>W
Maze
This is part of a maze of twisty little passages, all alike.

>U
Maze
This is part of a maze of twisty little passages, all alike. A
skeleton, probably the remains of a luckless adventurer,
>GET COINS
Taken.

>GET KEY
Taken.

>SW
Maze
This is part of a maze of twisty little passages, all alike.

>E
Maze
This is part of a maze of twisty little passages, all alike.

>S
Maze
This is part of a maze of twisty little passages, all alike.
Your sword is glowing with a faint blue glow.

>SE
Cyclops Room
This room has an exit on the northwest, and a staircase
leading up.
A cyclops, who looks prepared to eat horses (much less merI
You are carrying:
  A skeleton key
  A leather bag of coins
  A brass lantern (providing light)
  A sword
  A glass bottlOPEN SACK
It is already open.

>TAKE LUNCH
Taken.

>GIVE LUNH CH TO Y\CYCLOPS
I don't know the word "y\cyclops".

>GIVE LUNCH TO CYCLOPS
The cyclops says "Mmm Mmm. I love hot peppers! But oh, could I
use a drink. Perhaps I could drink the blood of that thing." 
FOPEN BOTTLE
Opened.
The cyclops is moving about the room, looking for something.

>GIVE WATER TO CYCLOPS
The cyclops takes the bottle, checks that it's open, and
drinks the water. A moment later, he lets out a yawn that
nearly blI
You are carrying:
  A skeleton key
  A leather bag of coins
  A brass lantern (providing light)
  A sword
  A brown sack
NW
Maze
This is part of a maze of twisty little passages, all alike.
Your sword is glowing with a faint blue glow.

>S
Maze
This is part of a maze of twisty little passages, all alike.
Your sword is no longer glowing.

>W
Maze
This is part of a maze of twisty little passages, all alike.

>U
Maze
This is part of a maze of twisty little passages, all alike.

>W
Maze
This is part of a maze of twisty little passages, all alike.

>SW
Maze
This is part of a maze of twisty little passages, all alike.

>NE
Grating Room
You are in a small room near the maze. There are twisty
passages in the immediate vicinity.
Above you is a gra
>UNLOCK GRATING
(with the skeleton key)
The grate is unlocked.

>OPEN GRATING
The grating opens to reveal trees above you.
A pile of leaves falls onto your head and to the ground.

>UP
Clearing
You are in a clearing, with a forest surrounding you on all
sides. A path leads south.
There is an open grating, dW
Forest
This is a forest, with trees in all directions. To the east,
there appears to be sunlight.
You hear in the distanceW
You would need a machete to go further west.

>LOOK
Forest
This is a forest, with trees in all directions. To the east,
there appears to be sunlight.

>E
Forest Path
You hear in the distance the chirping of a song bird.

>LOOK
Forest Path
This is a path winding through a dimly lit forest. The path
heads north-south here. One particularly large tree E
Forest

>W
Forest Path

>S
North of House

>E
Behind House

>ENTER WINDOW
Kitchen

>W
Living Room

>OPEN TROPHY   CASE
It is already open.

>PUT COINS IN TROPHY CASE
Done.

>DROP KEY
Dropped.

>DROP BOTTLE
You don't have that!

>I
You are carrying:
  A brass lantern (providing light)
  A sword
  A brown sack
  A leaflet

>OPEN TRAPDOOR
The door reluctantly opens to reveal a rickety staircase
descending into darkness.

>D
Cellar
There is a jewel-encrusted egg here.

>S
East of Chasm
You are on the east edge of a chasm, the bottom of which
cannot be seen. A narrow passage goes north, and theE
Gallery
This is an art gallery. Most of the paintings have been stolen
by vandals with exceptional taste. The vandals left tGET PAINTING
Taken.

>W
East of Chasm

>N
Cellar
There is a jewel-encrusted egg here.

>U
Living Room
There is a skeleton key here.
Your collection of treasures consists of:
    A leather bag of coins

>PUT PAINTING IN TROPHY CASE
Done.

>D
Cellar
There is a jewel-encrusted egg here.

>N
The Troll Room
There is a bloody axe here.

>E
East-West Passage
This is a narrow east-west passageway. There is a narrow
stairway leading down at the north end of the rooE
Round Room
This is a circular stone room with passages in all directions.
Several of them have unfortunately been blocked byE
Loud Room
This is a large room with a ceiling which cannot be detected
from the ground. There is a narrow passage from east GET BAR
bar bar ...

>LOOK
look look ...

>GET BAR BAR BLACKSHEEP
blacksheep blacksheep ...

>BAR BAR BARBRANNE!
barbranne! barbranne! ...

>ECHO
The acoustics of the room change subtly.

Loud Room
On the ground is a large platinum bar.

>GET PLATINUM BAR
Taken.

>W
Round Room

>W
East-West Passage

>W
The Troll Room
There is a bloody axe here.

>S
Cellar
There is a jewel-encrusted egg here.

>U
Living Room
There is a skeleton key here.
Your collection of treasures consists of:
    A painting
    A leather bag of coins

>PUT PLATINUM BAR IN TROPHY CASE
Done.

>LOOK
Living Room
You are in the living room. There is a doorway to the east, a
wooden door with strange gothic lettering to the wD
Cellar
There is a jewel-encrusted egg here.

>N
The Troll Room
There is a bloody axe here.

>E
East-West Passage

>E
Round Room

>E
Loud Room

>N
You can't go that way.

>U
Deep Canyon
You are on the south edge of a deep canyon. Passages lead off
to the east, northwest and southwest. A stairway l
>E
Dam
You are standing on the top of the Flood Control Dam #3, which
was quite a tourist attraction in times far distant. TherN
Dam Lobby
This room appears to have been the waiting room for groups
touring the dam. There are open doorways here to the noGET B \ MATCHBOOK
Taken.

>READ MATCHBOOK

(Close cover before striking)

YOU too can make BIG MONEY in the exciting field of PAPER
SHUFFLING!

Mr. Anderson of MuddREAD MATCHBOOK

(Close cover before striking)

YOU too can make BIG MONEY in the exciting field of PAPER
SHUFFLING!

Mr. Anderson of M
I beg your pardon?

>READ MATCHBOOK

(Close cover before striking)

YOU too can make BIG MONEY in the exciting field of PAPER
SHUFFLING!

Mr. Anderson of Mupromising future and make really big Zorkmids."

GUE Tech can't promise these fantastic results to everyone.
But when you earN
Maintenance Room
This is what appears to have been the maintenance room for
Flood Control Dam #3. Apparently, this room hasPUSH YELLOW BUTTON
Click.

>GET WRENCH
Taken.

>S
Dam Lobby
Some guidebooks entitled "Flood Control Dam #3" are on the
reception desk.

>S
Dam
You are standing on the top of the Flood Control Dam #3, which
was quite a tourist attraction in times far distant. TherTURN BOLT
(with the wrench)
The sluice gates open and water pours through the dam.

>DROP WRENCH
Dropped.

>W
Reservoir South
You are in a long room. To the north is a large lake, too deep
to cross. You notice, however, that the water lLOOK
Reservoir South
You are in a long room. To the north is a large lake, too deep
to cross. You notice, however, that the watsouthwest along the edge of a chasm, and a
path leading into a canyon to the southeast.

>WAIT
Time passes...

>LOOK
Reservoir South
You are in a long room. To the north is a large lake, too deep
to cross. You notice, however, that the wat
>WAIT
Time passes...

>LOOK
Reservoir South
You are in a long room. To the north is a large lake, too deep
to cross. You notice, however, that the wateThe water level is now quite low here and you could easily
cross over to the other side.

>WAIT
Time passes...

>LOOK
Reservoir South
You are in a long room, to the north of which was formerly a
lake. However, with the water level lowered, thWAIT
Time passes...

>LOOK
Reservoir South
You are in a long room, to the north of which was formerly a
lake. However, with the water level lowered, t
>SAVE
Load SAVE disk then enter file name.
(default file name is 2NDGO.SAV).
Type <ENTER> to continue  > 

Load Game Disk if it was removed.
Type <ENTER> to continue >

Ok.

>LOOK
Reservoir South
You are in a long room, to the north of which was formerly a
lake. However, with the water level lowered, thSA\  TATUS
I don't know the word "status".

>SCORE
Your score is 85 (total of 350 points), in 131 moves.
This gives you the rank of Novice Adventurer.

>LOOK
Reservoir South
You are in a long room, to the north of which was formerly a
lake. However, with the water level loweredWAIT
Time passes...

>LOOK
Reservoir South
You are in a long room, to the north of which was formerly a
lake. However, with the water level lowered, tLOOK
Reservoir South
You are in a long room, to the north of which was formerly a
lake. However, with the water level loweredWAIT
Time passes...

>LOOK
Reservoir South
You are in a long room, to the north of which was formerly a
lake. However, witN
Reservoir
You are on what used to be a large lake, but which is now a
large mud pile. There are "shores" to the north and sGET TRUNK
Taken.

>I
You are carrying:
  A trunk of jewels
  A matchbook
  A brass lantern (providing light)
  A sword
  A brown sack
  A leaS
Reservoir South

>SW
Chasm
A chasm runs southwest to northeast and the path follows it.
You are on the south side of the chasm, where a crack opeSW
East-West Passage

>W
The Troll Room
There is a bloody axe here.

>S
Cellar

>U
Living Room
There is a skeleton key here.
Your collection of treasures consists of:
    A platinum bar
    A painting
   PUT JEWELS IN TROPHY CABINET
I don't know the word "cabinet".

>PUT JEWELS IN TROPHY CASE
Done.

>SCORE
Your score is 105 (total of 350 points), in 148 moves.
This gives you the rank of Junior Adventurer.

>SAVE
Load SAVE disk then enter file name.
(default file name is 2NDGO.SAV).
Type <ENTER> to continue  > 

Load Game Disk if it was removed.
Type <ENTER> to continue >

Ok.

>D
Cellar

>N
The Troll Room
There is a bloody axe here.

>E
East-West Passage

>N
Chasm

>NE
Reservoir South

>N
Reservoir

>N
Reservoir North
You are in a large cavernous room, the south of which was
formerly a lake. However, with the water level lowerGET AIR PUMP
That sentence isn't one I recognize.

>GET PUMP
Taken.

>N
Atlantis Room
This is an ancient room, long under water. There is an exit to
the south and a staircase leading up.
On the sGET GET\    TRIDENT
Taken.

>U
Cave
This is a tiny cave with entrances west and north, and a
staircase leading down.

>N
Mirror Room
You are in a large square room with tall ceilings. On the
south wall is an enormous mirror which fills the enti
>LOOK IN MIRROR
There is an ugly person staring back at you.

>N
Cold Passage
This is a cold and damp corridor where a long east-west
passageway turns into a southward path.

>W
Slide Room
This is a small chamber, which appears to have been part of a
coal mine. On the south wall of the chamber the let
>D
Cellar

>U
Living Room
There is a skeleton key here.
Your collection of treasures consists of:
    A trunk of jewels
    A platinum bPUT TRIDENT IN TROPHY CASE
Done.

>SCORE
Your score is 120 (total of 350 points), in 166 moves.
This gives you the rank of Junior Adventurer.

>SAVE
Load SAVE disk then enter file name.
(default file name is 2NDGO.SAV).
Type <ENTER> to continue  > 

Load Game Disk if it was removed.
Type <ENTER> to continue >

Ok.

>E
Kitchen

>U
Attic
This is the attic. The only exit is a stairway leading down.
A large coil of rope is lying in the corner.
On a table isGET ROPE
Taken.

>D
Kitchen

>W
Living Room
There is a skeleton key here.
Your collection of treasures consists of:
    A crystal trident
D
Cellar

>N
The Troll Room
There is a bloody axe here.

>E
East-West Passage

>E
Round Room

>SE
Engravings Cave
You have entered a low cave with passages leading northwest
and east.
There are old engravings on the walls
>E LOOK AT ENGRAVINGS
The engravings were incised in the living rock of the cave
wall by an unknown hand. They depict, in symbolic form, the
beli
>E
Dome Room
You are at the periphery of a large dome, which forms the
ceiling of another room below. Protecting you from a
precipitous drop is a wooden railing which circles the dome.

>TIE ROPE TO T RAILING
The rope drops over the side and comes within ten feet of the
floor.

>D
Torch Room
This is a large room with a prominent doorway leading to a
down staircase. Above you is a large dome. Up around Sitting on the pedestal is a flaming torch, made of ivory.

>GET FLAMING TORCH
Taken.

>TURN OFF LAMP
The brass lantern is now off.

>LOOK
Torch Room
This is a large room with a prominent doorway leading to a
down staircase. Above you is a large dome. Up around t
>S
Temple
This is the north end of a large temple. On the east wall is
an ancient inscription, probably a prayer in a long-forThere is a brass bell here.

>I
You are carrying:
  A torch (providing light)
  A hand-held air pump
  A matchbook
  A brass lantern
  A sword
  A browDROP PUMP
Dropped.

>DROP MATCHBOOK
Dropped.

>DROP LANTERN
Dropped.

>FROP
I don't know the word "frop".

>DROP SWORD
Dropped.

>DROP SACK
Dropped.

>DROO P LEAFLET
Dropped.

>LOOK
Temple
This is the north end of a large temple. On the east wall is
an ancient inscription, probably a prayer in a long-for
>I
You are carrying:
  A torch (providing light)

>SAVE
Load SAVE disk then enter file name.
(default file name is 2NDGO.SAV).
Type <ENTER> to continue  > 

Load Game Disk if it was removed.
Type <ENTER> to continue >

Ok.

>E
Egyptian Room
This is a room which looks like an Egyptian tomb. There is an
ascending staircase to the west.
The solid-goldLOOK AT COFFIN
The gold coffin is closed.

>OPEN COFFIN
The gold coffin opens.
A sceptre, possibly that of ancient Egypt itself, is in the
coffin. The sceptre is ornamented with coloTAKE SCEPTRE
Taken.

>W
Temple
A small leaflet is on the ground.
There is a brown sack here.
There is a sword here.
There is a brass lantern (battS
Altar
This is the south end of a large temple. In front of you is
what appears to be an altar. In one corner is a small holePRAY
Forest

>E
Forest Path

>S
North of House

>E
Behind House

>ENTER WINDOW
Kitchen

>W
Living Room
There is a skeleton key here.
Your collection of treasures consists of:
    A crystal trident
    A trunk of jPUT SCEPTE\RE IN TROPHY CASE
Done.

>SCORE
Your score is 144 (total of 350 points), in 206 moves.
This gives you the rank of Junior Adventurer.

>SAVE
Load SAVE disk then enter file name.
(default file name is 2NDGO.SAV).
Type <ENTER> to continue  > 

Load Game Disk if it was removed.
Type <ENTER> to continue >

Ok.

>D
Cellar

>N
The Troll Room
There is a bloody axe here.

>E
East-West Passage

>E
Round Room

>SW E
Engravings Cave
There are old engravings on the walls here.

>E
Dome Room

>D
Torch Room

>S
Temple
A small leaflet is on the ground.
There is a brown sack here.
There is a sword here.
There is a brass lantern (battGET MATCHN BOOK
Taken.

>GET BELL
Taken.

>OPEN MATCHBOOK
You have 5 matches.

>S
Altar
On the two ends of the altar are burning candles.
On the altar is a large black book, open to page 569.

>GET CANDLES
Taken.

>GET BOOK
Taken.

>I
You are carrying:
  A black book
  A pair of candles (providing light)
  A brass bell
  A matchbook
  A torch (providing TURN OFF CABL\   NDE LES
The flame is extinguished.

>D
Cave
This is a tiny cave with entrances west and north, and a dark,
forbidding staircase leading down.
Someone carrying a larD
Entrance to Hades
You are outside a large gateway, on which is inscribed

  Abandon every hope all ye who enter here!

Th
>RING BELL
The bell suddenly becomes red hot and falls to the ground. The
wraiths, as if paralyzed, stop their jeering and slowly turn
 expression of a
long-forgotten terror takes shape.
In your confusion, the candles drop to the ground (and they
are out).

>GET CANDLES
Taken.

>LIGHT MATCH
One of the matches starts to burn.

>LIGHT CANN DLE
(with the match)
The candles are lit.
The flames flicker wildly and appear to dance. The earth
beneath your feet trembles, I
You are carrying:
  A pair of candles (providing light)
  A black book
  A matchbook
  A torch (providing light)

>LOOK AT BOOK
Commandment #12592

Oh ye who go about saying unto each:  "Hello sailor":
Dost thou know the magnitude of thy sin before thTURN OFF CAB NDLES
The flame is extinguished.

>DROP BOOK
Dropped.

>LOOK
Entrance to Hades
You are outside a large gateway, on which is inscribed

  Abandon every hope all ye who enter here!

ThSAVE
Load SAVE disk then enter file name.
(default file name is 2NDGO.SAV).
Type <ENTER> to continue  > 

Load Game Disk if it was removed.
Type <ENTER> to continue >

Ok.

>SCORE
Your score is 144 (total of 350 points), in 233 moves.
This gives you the rank of Junior Adventurer.

>EXIT
You can't go that way.

>QUIT
Your score is 144 (total of 350 points), in 234 moves.
This gives you the rank of Junior Adventurer.
Do you wish to leave tY

G>

If you need to watch the YouTube stream, it can be found here https://youtu.be/K-Kv5saIHyE

Retro Challenge 2017

Ok, with 5 days of October already gone, I know it’s cutting things a bit fine for putting my entry in for this seasons Retro Challenge – particularly as it started 5 days ago… but, better late than never, right?

So, what have I planned to do that is both retro and challenging? Simple, I’m going to play games! More specifically, I’m going to play Zork, on a CP/M enabled RC2014 that is connected to the internet so it can be streamed live to an audience of anybody that cares to watch me get eaten by a grue.

The first challenge is going to be hooking up the RC2014 to the internet, such that it can stream text. Kind of like Twitch, but in ASCII. Luckily, I’ve got a bunch of ESP8266 modules that have been sitting in a drawer, and I think these are likely to be ideal for converting serial data in to web pages.  I should be able to hook up something on breadboard, and find a bit of code that does the job – although it would be nice if I can get some real PCBs made up for the job.  With just over 3 weeks to go, though, that might be pushing it timewise.

Then there is the challenge of Zork itself.  I often use it as a test game to show people what the RC2014 can do, however, I’ve never done more than a bit of random North, North, East, Look, Get Lamp etc.  I’ve never really played many text adventures either, so this will be a big learning experience for me.  I can’t promise that I won’t use the odd cheat/clue here and there, but if there are actually people watching along online, I’ll happily take suggestions over Twitter.  If things happen to go really well, and I complete it in good time, then I will add Adventure as a stretch goal.

Decoding ROM labels

Back in the earliest days of the RC2014, it came with a pre-programmed 27C512 64k ROM, with Microsoft BASIC on it in the first 8k, and it would work with 32k of RAM and a 68B50 ACIA.  One set up, one ROM, life was simple!

As time has gone on, and more options have become available, other ROM images, such as Microsoft BASIC for 56k RAM, CP/M Monitor, RomWBW and Small Computer Monitor have been introduced.  See this page for a brief overview of each option

Future possibilities, such as other UARTs, different CPUs or other variations will inevitably lead to more ROM images being needed.  So, in order to keep track of what is programmed where, ROMs are now being shipped out with a label on them.

27C512 64k ROM

Every 64k ROM now has an 8 digit code on it.  Each digit, from left to right, refers to an 8k bank from 0x0000 to 0xD000.  This bank can be selected with the A13, A14, A15 jumpers;

AddressA15A14A13ROM Label
0000000 Xooooooo
2000001 oXoooooo
4000010 ooXooooo
6000011 oooXoooo
8000100 ooooXooo
A000101 oooooXoo
C000110 ooooooXo
E000111 oooooooX

The value of the digit represents the ROM image that sits in that particular 8k bank.  Currently, it will be one of the following;

0 – Empty bank, available for user to program

R – Microsoft BASIC, for 32k RAM, 68B50 ACIA, with origin 0x0000

K – Microsoft BASIC, for 56k RAM, 68B50 ACIA, with origin 0x0000

1 – CP/M Monitor, for pageable ROM, 64k RAM, 68B50 ACIA, CF Module at 0x10, with origin at 0x0000

2 – Microsoft BASIC, for 32k RAM, SIO/2, with origin 0x0000

4 – Microsoft BASIC, for 56k RAM, SIO/2, with origin 0x0000

6 – CP/M Monitor, for pageable ROM, 64k RAM, SIO/2, CF Module at 0x10, with origin at 0x0000

88 – Small Computer Monitor for pageable ROM, 64k RAM, SIO/2 or 68B50 ACIA, with Microsoft BASIC and CP/M boot options [Note that this is a 16k image, so Page Size needs to be set to 16k and only A14 and A15 jumpers to select]

9 – Small Computer Monitor for any ROM, any RAM, any UART

Mini II

To further complicate things, the Mini II ships with an ST39SF010 – a 128k Flash RAM which is divided up in to 8 x 16k pages, or 16 x 8k pages, or some combination of those. There are different options for BASIC, SCM CP/M and also FORTH.

Chips are labelled as “M2 1.2”

ST39SF040 512k RomWBW 2.9.1

Version 2.9.1 of RomWBW needed to be compiled differently, based on what peripherals were to be supported.  To indicate which peripherals the ROM had support for, the designation of x.512K is used, where x is the software designation.

1.512k – RomWBW RC_Std.ROM 2.9.0

2.512k – RomWBW RC_Std.ROM 2.9.0 With PPIDE

3.512k – RomWBW RC_Std.ROM 2.9.0 With RTC

4.512k – RomWBW RC_Std.ROM 2.9.0 With PPIDE and RTC

5.512k – RomWBW RC_Std.ROM 2.9.0 With WDC Floppy

6.512k – RomWBW RC_Std.ROM 2.9.0 With WDC Floppy and PPIDE

7.512k – RomWBW RC_Std.ROM 2.9.0 With WDC Floppy and RTC

8.512k – RomWBW RC_Std.ROM 2.9.0 With WDC Floppy, PPIDE and RTC

ST39SF040 512k RomWBW 3.0 onwards

Since the release of RomWBW 3.0.0, peripherals are automatically detected, so there is no need for different builds.  Therefore the label will just indicate the revision programmed.  At the time of writing, as indicated above, the latest stable release is 3.0.2

As more ROM images are added, this list will be updated.

Standard factory ROM images can be downloaded from Github https://github.com/RC2014Z80/RC2014/tree/master/ROMs/Factory

Note that despite having total control over which designation I want to use for whichever ROM image and where that is located on the ROM – I still managed to pick a combination that my label gun was unable to do!  So some people will have a label that starts with an interlocking “n” and “u” character, which is the closest I could do to represent a “2”.  If this is the case, your “¬4006000” is actually “24006000”.  In order to get around this, I have now bought an extra 2 label guns, which have been dismantled to allow the belts to be swapped around, and reassembled.  Normally reassembly of label guns is only possible by a highly skilled and qualified octupus, so I don’t recommend anybody tries doing this themselves!

The RC2014 currently uses a very simple, although inefficient method of addressing peripherals.  Most of the expansion modules feature a 74HCT138 used to provide up to 8 enable lines from 3 address signals.  For the purposes of this document, I will mainly refer to the Digital I/O Module, but the principals apply to all modules with a 74HCT138 (generally referred to simply as ‘138)

It is worth noting that the Z80 CPU can address up to 256 Input or 256 output addresses.  These are selected by the first 8 address lines (A0 – A7), IORQ going low and either WR or RD going low.

The ’138 has 3 enable pins, G1, G2B, G2A, all of which need to be true (G1 needs to be high, and both G2B and G2A need to be low) for the ‘138 to be enabled.  When it is enabled, the 3 address lines, A0, A1, A2 are read.  These 3 addresses have 8 possible combinations (000, 001, 010, 011, 100, 101, 110, 111), which will activate one of the 8 outputs Y0 to Y7.

In the Digital I/O Module, the ‘138 is activated when M1 is high, IORQ is low and A7 is low.  This corresponds to any port from 0 to 127 (IORQ being low indicates the address bus represents port, and A7 being low indicates the address bus is lower than 127).  [Side note – Serial I/O Module uses addresses 128 and 129, which are indicated by A7 being high].

The Z80 address pins A0 and A1, along with WR are connected to the address pins A0, A1, A2 on the ‘138.  This gives 4 addresses (00, 01, 10, 11) with the write bit high, and 4 with it low.

In normal use, the ports are addressed as 0 (In 0 or Out 0) on the Digital I/O Module.  (Or port 0, 1, 2 on the Digital Input module, for example).  However, any address that has A0, A1 and A7 low will work; 0—–00.  So echoes of this will appear on 4, 8, 12… 124.  So, whilst this works, and is fine for a small system without much I/O requirements, it quickly becomes inefficient as you need more ports.  In particular, it will clash with the Compact Flash Storage Module, which can have an impact on running CP/M.

In an ideal world, every peripheral should have a unique address, and with a lot of digital logic, this is certainly possible to do.  However, it will add both complexity and cost as well as needing more board space.

The easy solution, however, involves just 6 diodes and a resistor.  By connecting address lines A2 – A7 to the anode of each diode and the cathode of each diode to the G2A enable pin on the ‘138, any address above 00000011 will prevent the ‘138 from being enabled.  Effectively all the diodes are acting as a very simple OR gate.  A 10k resistor will bias the output low.

So with this set up, it will give just 4 unique addresses; 00000000, 00000001, 00000010, 00000011 (ie 0, 1, 2, 3) which for the Digital I/O Module, or the Digital Input or Digital Output is ideal.

Other addresses can be selected by changing which address pin the diodes are connected to.  So, for example, if A1 was connected to a diode instead of A3, and A3 went to the ‘138, the addresses would be 00000000, 00000001, 00001000, 00001001 (ie 0, 1, 8, 9).  Whilst it cuts down on the echoes at higher addresses, it’s still not perfect – but much better and still very cheap with minimal extra board space needed.

The Digital I/O Module has now been updated to reflect this change.  As PCB stocks run low on other modules, they too will have similar updates.  If you already have a non-diode selectable module, and wish to implement this, it is actually very simple to do as shown below.

Simple Guide To Getting CP/M Running On RC2014

With the right software, hardware and settings, getting CP/M running on a RC2014 is very easy.  This post is a guide to doing just that.  It assumes you are already familiar with the RC2014 and have built and tested your RC2014 running BASIC.

Required hardware

Optional Hardware

Software

Both the Pageable ROM Module and the Compact Flash Module are available with the CP/M Monitor pre-programmed on to ROM at 0x8000.

The Compact Flash Module is also available with a pre-programmed 128mb compact flash card which contains CP/M as well as the essential software required to get you up and running

Settings

The 64k RAM Module needs to be set to full 64k (ie start address at 0x0000) and in pageable mode.  For this, all 4 jumpers need to be set to the right hand settings as shown below.  If you soldered a link where indicated by the silkscreen, this needs to be remove as this is the page pin

The Pageable ROM Module needs to be set for an 8k page and starting at 0x8000.  See photos below for details.

The Page Pin from the ROM needs to be connected to the Page Pin on the RAM.  If you have the Backplane Pro and have installed the double header pins supplied with that then nothing further needs to be done.  If you are using a Backplane 8, however, you will need to add a jumper cable between the 4th pins on the 10 pin Enhanced Bus header.  See the photos below to illustrate either scenario

Then it is simply a case of installing all the modules (if using Backplane 8 ensure you have links between slot 2&3 or 6&7 so you can use the outer slots), connecting FTDI cable or monitor & keyboard if you are using the Pi Zero Terminal, inserting the compact flash card and applying power.

[On power up, a small bootloader will copy itself and a modified CP/M console from 0x0000 (ROM) up to 0xA000 (RAM), then page out the ROM and page in the lower 32k RAM, then copy Grant Searles CP/M Monitor (as modified by Mitch Lalovie and tweaked by me) back to 0x0000 (RAM) and run the monitor from there]

You will be greeted by a “Press [space] to activate console” message, and after pressing space you will be in to the monitor.

(Note that the B option for BASIC will not work with this hardware set up. If you want to use BASIC, either set the A15 Page Selection jumper to 0, or download a copy of mbasic to CP/M)

Press X followed by Y and it will boot CP/M from the compact flash card and you will be at the A> prompt.

The compact flash card is pre-formatted with 16 drives from A: to P:  The A: drive has DOWNLOAD.COM which is needed to transfer files on to the CF card.  Drive C: has CP/M utilities such as TYPE.COM ED.COM, STAT.COM etc.

To copy files and programs on to the CF card you will need to connect to your RC2014 over a FTDI cable, and either use Grant Searles Windows File Packager or manually package the files with a text editor.  When copied over the FTDI connection it will initiate A:DOWNLOAD.COM which will then take the file and put it on to the current selected drive.  Note that the flow control on the 68B50 is minimal with this setup, so a 1ms delay between characters is suggested to give consistently successful results.

After that, I highly recommend using a torch otherwise you will almost certainly end up being eaten by a Grue