Close
0%
0%

The Last Psion

Adding Modern Flash Storage and Wi-Fi to the Series 3c

Similar projects worth following
I have set myself a nightmare of a challenge.

I want to build a device that will add modern storage and Wi-Fi to my ageing but beloved Psion Series 3c. If possible, I want it to fit into the SSD slot of the 3c and power it straight from the 3c.

After doing a lot of research and scavaging for PDFs on Google, I have worked out the basics of how I might go about doing this. I think the ESP8266 or ESP32 platform would be perfect for a lot of the "heavy lifting" in this project, alongside a CPLD for the glue logic.

There are a few personal hurdles to overcome - I haven't done any serious programming in well over 10 years (Spectrum BASIC, VB6, PHP, some JavaScript, definitely no C or ASM) and my electronics knowledge is slightly-above-beginner. But the plan is to learn as I go. After all, that's kind of the fun of it, isn't it?

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 have one of those dreams.

I want to build a device that will add modern storage and Wi-Fi to my ageing but beloved Psion Series 3c. If possible, I want it to fit into the SSD slot of the 3c and power it straight from the 3c.


THE CHALLENGES

  • Build a storage device that mimics the Psion SSD using a modern microprocessor.
  • Add Wi-Fi capabilities to this device so that files can be uploaded to and downloaded from cloud storage.
  • Write EPOC16 drivers to control the Wi-Fi, maybe more.
  • Convert files on-the-fly to and from Psion formats.
  • Write an application that controls the "non-standard" functions of the device.
  • Eventually... write a better word processor, perhaps offloading some tasks to a modern microprocessor.


THINGS I NEED TO LEARN

  • C and C++ for Psion EPOC16 development
  • Python for writing sigrok decoders 
  • 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.
  • EPOC16's File Formats, especially its word processor
  • A lot more that I 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 into the world of Psion, but things had changed in the 11 years since I had owned my last Series 5. The Internet had gone from a useful tool to being a ubiquitous, omnipresent entity. In addition, the Maker movement had taken off, along with a dramatic reduction in the cost of ARM-based processors and Wi-Fi devices.

Also, while it was amazing that I could carry around a word processor in my pocket once again, the disadvantages of the Series 3c in the modern world became apparent. Using a serial cable to transfer files to and from a PC isn’t very practical, especially given that most computers don’t even come with a serial port any more. Although the 3c can communicate via IrDA, even fewer PCs come with infrared ports nowadays. And after having said all of that, the idea of a mobile computer - whether that be a smartphone or a PDA - being dependent on a PC feels antiquated.

This is when that pointless and insanely difficult dream popped into my head.

What if I could add Wi-Fi to my Psion Series 3c?

The more I thought about it, the more features I felt I could add. What if I built something that would fit into an SSD slot? Could I maybe get it to pretend to be an SSD, giving the 3c some proper non-volatile flash storage? Could it have switchable banks of storage? Could I add file converters to it, maybe getting it to directly open Word documents? How about Markdown documents? Could it get it to sync with Dropbox or Google Drive? Could I get it to directly edit Google Drive documents? How would I control the Wi-Fi? What about the storage? Would I need to write drivers for the Psion? Could I even write a better word processor?

As I thought more about it, I realised...

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 »

  • SSDs, the ASIC4 and the SIBO Serial Protocol

    Alex Brown09/17/2018 at 13:38 0 comments

      Psion were a clever bunch, but like many companies in the early 90s they didn’t really do standards. Although the 3c and 3mx had a proper RS-232 serial port (albeit using a very odd connector), all of the earlier models used a proprietary protocol called the SIBO Serial Protocol. All Series 3 models used SSDs that also communicated using this proprietary protocol.

      A significant part of developing this equipment involves working out how to emulate an SSD or Psion peripheral. Luckily, while trawling the Internet for Psion PDFs I found the Psion SIBO Hardware Development Kit. This book gives a breakdown of how to create equipment for the Psion Series 3 and 3a, including the controller chips needed, the Psion serial protocol, and how to write drivers for the Series 3 and 3a.

      The controller chips are known as ASICs, or Application Specific Integrated Circuit chips. As far as I can tell, Psion SSDs mainly use the ASIC4, which converts the SIBO Serial Protocol into addresses within the memory range of the SSD’s on-board memory.

      The original ASIC4 has two modes. The first is SSD Mode. This makes the ASIC4 compatible with its predecessor the ASIC5. In this storage-only mode, the ASIC4 can use 21 address bits for memory. As far as I know, this is the way the ASIC4 is configured in every SSD.

      The second mode that the ASIC4 can use is called the Extended Mode. This increases the addressable range of memory from 21 bits to 28 bits. Also, the ASIC4 Extended Mode also has a sub-mode called Mixed Mode, which tells the Psion that it's talking to a device that consists of both storage and peripherals. Mixed Mode causes the addressable memory to be split exactly in half, with the lower half used for memory-mapped peripherals and the upper for storage. According to the HDK, this storage is typically used as a ROM including software and drivers to control the peripheral. However, it seems that it can also be used as RAM storage or Flash storage.

      As you probably already know, the two aims of this project are to give the Psion both better storage and Wi-Fi access. I'm going to ignore the Wi-Fi challenge for the moment and focus on emulating an SSD, specifically an ASIC4 in Extended Mode. Being able to do that will be an achievement in itself, because it means my 3c will have some modern non-volatile storage.

      My first challenge is to deal with the SIBO Serial Protocol. To briefly summarise, this uses a 5v half-duplex two-wire system - CLK and DATA. The 3c controls the clock and sends out 12-bit packets (0-11). Bit 0 and Bit 11 are start and end bits. Sometimes Bits 1 and 2 tell the slave device that it's the slave's turn to send data back on Bits 3-10. 

      Oh, and the 3c's CLK runs at a nominal 3.84 MHz. Not fast, but not slow either.

      What I really want to do is emulate an ASIC4. As far as I see it, I don't need to totally recreate the ASIC4. All I want to do is make my 3c think that it’s talking to an ASIC4 in Extended Mode.

      I can see three ways of tackling this:

      1. Completely emulate the ASIC4 on Espruino. This is what I really want to do. But would the Espruino platform be fast enough to cope with the 3.84 MHz clock? I'm guessing pure JavaScript would be nowhere near fast enough to handle it, so a driver would need to be written in C.
      2. Use an original ASIC4 chip. They're not too difficult to get hold of (SSDs pop up all the time on eBay), but there is a finite supply. Also, I would need to remove the chip from an SSD, and I'm not quite at that level of soldering skill yet. Finally, I would need to work out how to get Espruino to talk to an ASIC4.
      3. Emulate the ASIC4 in FPGA. This scares me the most. I haven't got a clue about FPGAs. However, I know it would be insanely fast and mean that I wouldn't have to break SSDs. Still, I'd need to work out how to get Espruino to talk to the FPGA.

      If I do try to emulate an ASIC4, I don’t have to emulate the entire chip and all its pins. I just need to make the Psion think it’s talking to an ASIC4....

    Read more »

View all 6 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