Close
0%
0%

The Last Psion

Resurrecting Psion's SIBO/EPOC16 Platform For The 21st Century

Similar projects worth following
What started off as a "simple" project to reverse engineer the Psion SSD and build a Wi-Fi adapter has grown into something much larger.

We are performing platform necromancy, gathering together as much information as we can from long-abandoned websites, rattly hard drives and the back of rusty filing cabinets.

The original plans of making new Psion SSDs and a Wi-FI adapter are still happening. But the scope has now widened into rewriting the SIBO C SDK and HDK from the ground up, creating a new C compiler and chipsets that will work with the platform, all for the 21st century.

Do you have documentation, software or source code we need? https://docs.google.com/spreadsheets/d/1fs34pJAH2Ues7ABdbZOr9H9hFkRE9D99Y_BpqwGbcms/edit?usp=sharing
Were you an EPOC16 developer? Release your old code!

Have you ever had a dream to create something that, on the surface, seemed pointless? Then, when you scratch away that surface, you realise exactly how insanely difficult that dream would be to achieve?

I had one of those dreams.

I started off wanting to build a device that will add modern storage and Wi-Fi to my ageing but beloved Psion Series 3c, one that would fit into its SSD port. Difficult enough, you'd think.

Then Karl got in touch with me.

After some months of discussions and work, the project has developed into an attempt to perform platform necromany.

We believe that the SIBO/EPOC16 platform deserves a place in the retrocomputing world, alongside giants like the ZX Spectrum and C64. We want to play to the platform's strengths: The massive battery life, the non-backlit screen, the full keyboard, the deep sleep mode, the simplicity, the expandability.

The SIBO/EPOC16 platform was well ahead of its time. We want to breathe new life into this vastly underestimated platform.

SIBO vs EPOC16

Over the years different conventions have been used to refer to the hardware and software that Psion developed. Various documents use SIBO, EPOC and EPOC16 interchangeably to refer to the hardware and software. For clarity, we have decided to use the following convention.

SIBO is the hardware platform, including:

  • MC200
  • MC400
  • Series 3 (and its clone, the Acorn Pocket Book)
  • Series 3a (and its clone, the Acorn Pocket Book II)
  • Series 3c
  • Series 3mx
  • Workabout
  • Workabout MX
  • Siena

Our main focus is on the 3a, 3c, 3mx and (to a lesser extent) the Workabout MX. All of these machines use the ASIC9 and have SSD ports. We will also pay some special attention to the MC400.

EPOC16 refers to the name of the operating system that runs on the SIBO hardware platform.

To refer to the whole hardware/software platform, we will use SIBO/EPOC16.

THE CHALLENGES

  • Creating a replacement for Psion's ASIC4 so that new hardware peripherals can be developed.
  • Build a storage device that mimics the Psion SSD based on this new ASIC.
  • Add Wi-Fi capabilities to this device using an ESP microcontroller so that files can be uploaded to and downloaded from cloud storage as well as an application and drivers to control the "non-standard" functions of the device.
  • Write EPOC16 drivers to control the Wi-Fi, maybe more.
  • Rewrite the Psion SIBO C SDK and HDK from the ground up.
  • Create a new C compiler.
  • Write software, such as a better word processor and many games!
  • Update the EPOC16 ROM with new applications and features.


TECHNOLOGIES AND LANGUAGES

  • C and C++ for Psion EPOC16 development
  • Python for writing sigrok decoders to analyse the SIBO Serial Protocol
  • Programmable Logic Devices and VHDL (for the bi-directional serial line, possibly more)
  • 8086 Assembly for writing new (and possibly analysing existing) EPOC16 drivers
  • APIs for at least one cloud storage service (e.g. Google Drive, Dropbox)
  • EPOC16's Filesystem Formats; each storage type has its own filesystem. RAM SSDs use FAT16, ROM SSDs have their own format, Flash SSDs use yet another format, and the system ROMs use something else.
  • EPOC16's File Formats, especially its word processor.
  • A lot more we haven't even thought about yet!


BUT WHY?

For years I have had an affection for the Psion Series 3 and Series 5 machines. I got my first Series 3a back in 2002 and loved it. Over the following years I used it as a journalling device, a platform on which to write while commuting. When the hinges on that 3a broke, I bought another one on eBay. Eventually the hinges on that one broke, too. I later bought a Series 5, but manage to crack the screen on it. I lived in a Psion-less abyss for many years. Life took over and my passion for these machines faded into the background.

This year I bought a Psion Series 3c. I loved getting back...

Read more »

  • SIBODUMP - Moving from high-level block puller to low-level ASIC controller

    Alex Brown06/29/2019 at 08:49 0 comments

    UPDATE: The latest version of SIBODUMP has just been released along with binaries for Windows and macOS. Take a look here: https://github.com/PocketNerdIO/sibo-ssd-dump/releases/tag/0.0.3

    SIBODUMP and its partner sketch Dump.ino have slowly developed into a very handy toolkit for SSD ripping. In its current form it's able to dump blocks from any ASIC5-compatible SSD (so that's all of them). I've also started to get it to pull images in native ASIC4 mode - all but the very earliest SSDs have ASIC4, and being able to talk using ASIC4's registers could open the doors to even more development.

    Read more »

  • SIBODUMP - The Psion SSD Image Dumper

    Alex Brown03/06/2019 at 14:17 0 comments

    To go with siboimg, there's now sibodump! This is a tool of two parts: first an Arduino sketch which talks to the SSD using SIBO-SP, and a C app that controls the sketch over serial and dumps the image to a file. The app runs on Win32 and Win64, Linux and macOS. It should run on *BSD, but I haven't tested it yet. You'll also find some binaries for Win32, Win64 and macOS in the repository.

    Oh, I also built a makeshift Arduino shield with a Veroboard that I can easily plug the SSD into.https://scontent-lhr3-1.cdninstagram.com/vp/c059ff7a12df99fab9c699396de89d7d/5D08C998/t51.2885-15/e35/53705761_912307579160518_6761257571338062678_n.jpg?_nc_ht=scontent-lhr3-1.cdninstagram.com

    Read more »

  • SIBOIMG - The Psion Flash Image Extractor

    Alex Brown02/20/2019 at 16:03 3 comments

    A month ago I had never typed a line of C. Concepts like pointers, structs and treating variables as actual blocks of memory rather than abstract values were alien to me. But I really wanted to get into C; I knew that knowing the language would be vital for this project and there was only so long that I could put off learning it. I needed a target.

    Read more »

  • Device IDs via SIBO-SP

    Alex Brown01/13/2019 at 17:26 0 comments

    Ever since the start of this project, the SIBO Serial Protocol (SIBO-SP) has loomed large as Something We Need To Know About. It's a protocol using 12-bit packets, a LSB-first data payload, and a series of reset and select control commands, all done on one data wire and one clock wire. As you'll see in previous logs, we've managed to decode a large amount of it and I've published my Sigrok decoder on my GitHub page.

    The next step with the development of the decoder (and therefore the research into SIBO-SP) is the Slave Select Select Control Packet (SSel). Basically, how does a SIBO/EPOC16 machine know what it's talking to?

    Read more »

  • Striving for simplicity: A Psion Serial (Honda) to USB cable

    Alex Brown12/30/2018 at 11:16 0 comments

    As I’ve got older, I’ve grown to like simplicity. I want to faff around less with the minor details and give myself more time for the fun stuff. This project aimed to remove some faff, although at first it didn’t quite go to plan.

    My plan was to make a Honda USB cable, meaning I could connect a 3c or 3mx to a PC without needing two cables and a load of bulk.

    Read more »

  • Updates

    Alex Brown12/06/2018 at 11:23 2 comments

    I can't believe it's been two months since I last posted here. Much has happened on this project and, although I don't have time to write in detail about these things now, I wanted to give you a brief overview. Warning: Expect Exclamation Marks.

    Read more »

  • Further Logic Analysis, plus SSD Destruction

    Alex Brown11/10/2018 at 23:01 0 comments

    It's been a relatively fruitful month with this project. After struggling to work out why I was getting some weird signals being measured by my logic analyser (word to the wise: don't forget to connect GND), I managed to get some relatively meaningful waveforms, meaning I could properly start to write a sigrok decoder.

    Read more »

  • The SSD Port and (finally) Some Logic Analysis

    Alex Brown10/21/2018 at 14:19 0 comments

    I now have everything I need to get started on revealing the secrets of the Psion SSD Port. So, here's what I've been up to this morning.

    Rather than pull apart my "production" 3c, I've decided to get to work on a slightly broken 3a. I don't like the idea of doing something dumb thanks to my inexperience and blowing up my 3c. The 3a's battery compartment is in a pretty bad way, but it powers on quite happily with a Series 3 external PSU. So, I pulled it apart and got to work.

    Read more »

  • Logic Analysers, CPLDs and Dunning-Kruger

    Alex Brown10/13/2018 at 20:09 0 comments

    It’s been a few weeks since my last update on this project. This is partly because I’ve been waiting for a couple of bits to arrive, specifically a logic analyser based on the CY7C68013A and an Altera MAX II EPM240 board. But to be honest, the delay is mostly because I’ve realised how much I need to learn. I mean, I kind of knew that I needed to learn a lot, but I didn’t actually realise how little I already knew. Trust me, folks, Dunning-Kruger is very real and has smacked me in the face with its pointy inverted curve. Again.

    Read more »

  • The Noob Looks At FPGAs and CPLDs

    Alex Brown09/19/2018 at 10:02 1 comment

    When I started thinking about this project, I knew there was going to be quite a steep learning curve. Picking up JavaScript after a long absence, trying to wrap my head around C after trying (and failing) to do so about 20 years ago, learning more about electronics than just holding a soldering iron the right way around.

    What I wasn’t expecting to learn was how to design a microchip.

    Read more »

View all 11 project logs

Enjoy this project?

Share

Discussions

Psiological wrote 09/28/2018 at 17:22 point

A fantastic idea to use the SSD slot!  All the other devices, such as the Workabout would benefit too and that would be MASSIVE.  I wish you success in your endeavour!

  Are you sure? yes | no

Alex Brown wrote 10/13/2018 at 20:52 point

Thanks! I've still got a long way to go, but I do think it's doable. And I didn't even think about the Workabout. I don't have one currently, so if I get to a suitable point I might try to get hold of one.

  Are you sure? yes | no

Artur wrote 09/20/2018 at 19:19 point

I'm very huge fan of psions there was a time when i have psion 3a,3mx,5,7 and a few 5mx and this last one was my favorite. I was wondering few times if there is possible to design custom expansion module for psion. After briefly look at http://www.scss.com.au/family/andrew/pdas/psion/hdk.pdf i thing there is no need to use CPLD or FPGA, and regular MCU will good enough.  So just use device like ESP32 or something familiar :) .

  Are you sure? yes | no

Alex Brown wrote 09/21/2018 at 07:27 point

It would definitely make my life a lot easier if I could just use something like an ESP32. I'm just worried that it won't be fast enough to handle it. Perhaps I just need to try it, see how it goes and if it doesn't work add a CPLD in to the mix?

I've also got a 5mx, but it won't read any of the CF cards I've tried in it. One thing that might be possible is to replace the IrDA circuitry with a BLE device. Something I might try in the future.

  Are you sure? yes | no

brtnst wrote 09/19/2018 at 17:08 point

Awesome project! I wish you good luck on reverse-engineering all the bits and bobs of your Psion. I am a big fan of Palm PDAs and I also struggled with limits of twenty-year old technology, I ultimately solved it by developing Palm 3 like PDA from scratch (SDA project here on HaD). I suggest you to do the same. Your project will likely take few years and great skills to complete and you will end up with a fancy add-on for old device that will be hard to get and hard to fix. You can use the same skills to make your own PDA, it will also take a few years, but you will end up with a better product.

  Are you sure? yes | no

Alex Brown wrote 09/19/2018 at 18:51 point

I must admit, it has crossed my mind to build my own PDA. Maybe using the shell of a Series 3 or Series 5, replacing the LCD with an ePaper screen, the innards with something that would use as little juice as possible, a relatively simple OS, having WiFi and at least one SD card slot. For the moment, though, I'm going to stick with this project. Even if I abandon it after trying to reverse-engineer the storage, I'll still have learned enough to keep me going. If I get as far as synchronising files with Google Drive, then I can transfer that knowledge over too. Also, Psion 3a and 3c units come up on eBay all the time - I've actually got a spare 3c at home (cost me £15 with a Flash SSD), as well as a 3a with broken hinges that I picked up for under a tenner.

I have to say, though, I've just taken a quick look at your SDA and I'm really impressed! Is that a custom OS you're running on it? I'll read up some more later.

  Are you sure? yes | no

brtnst wrote 09/19/2018 at 21:07 point

Creating your own hardware gives you real freedom, if you do not like something, you can always change it, update it, upgrade it, fix it or rebuild it. You are not locked in a mess of undocumented proprietary hw and sw. But I can see the beauty in updating an old device.

If the storage reverse-engineering fails, you can try to tap in the infrared port, it is basically a serial port and I think that it would be easier interface to connect psion to the ESP this way, then sync it to google by "beaming" the files. Or you can use the PC sync serial port. But creating custom wifi enabled ssd module would be the cleanest solution.

SDA is indeed powered by custom software, I have few project logs about the software and I also moved most of the sources on github.

  Are you sure? yes | no

Starhawk wrote 09/19/2018 at 14:40 point

PSIONs are cool. I know a (not very hopping) forum for discussing such devices -- you may get some help there.

I posted there about your page here --> http://forum.psion2.org/YaBB.pl?board=fm_general;action=display;num=1537367188

  Are you sure? yes | no

Alex Brown wrote 09/19/2018 at 18:53 point

Hey, I'll take any publicity I can get! Thanks for sharing it. :-)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates