Close

Further Logic Analysis, plus SSD Destruction

A project log for The Last Psion

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

alex-brownAlex Brown 11/10/2018 at 23:010 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.

Writing a decoder was a slight challenge as I had never touched Python before, but I was able to get something working in about 24 hours!

Thehttps://scontent-lhr3-1.xx.fbcdn.net/v/t1.0-9/44851519_10156848735169189_5427330505852846080_o.jpg?_nc_cat=110&_nc_ht=scontent-lhr3-1.xx&oh=9f9c0eea2ed384a8aeaab653c657163b&oe=5C3D0B1Chttps://scontent-lhr3-1.xx.fbcdn.net/v/t1.0-9/43749126_10156848738584189_5605019818353754112_o.jpg?_nc_cat=104&_nc_ht=scontent-lhr3-1.xx&oh=5786d2ac70574e2cc648881c08db8d29&oe=5C79F976These screenshots were taken a couple of weeks ago. Since then, I've managed to add some more features to the decoder. I'm not going to lie, the code isn't the prettiest, but it does work. I'll be uploading it to GitHub once I've tidied up the code and added a few more features, along with some of the samples. Feel free to have a play!

The big issue I'm having with this part of the project, though, is not being able to tell which device is talking at any one time. This wouldn't be a problem if the SIBO HDK had the full details of how a SIBO machine talks to an SSD, but unfortunately it only has details of the main SIBO Serial Protocol. While this is immensely helpful, I know that I'm missing a fair amount of information.

One suggestion was to add a resistor at the SSD end of the DATA line and use an oscilloscope to measure the slight voltage drop on anything transmitted by the SSD. Unfortunately I don't (yet) own a scope and I don't think my £4 logic analyser will read analogue signals.

Last week I came across a second way of detecting traffic direction in the SIBO HDK, something I'd missed in previous readings. Pin 59 on the ASIC4 is called SDIR, which goes high when it's sending data. However, my SMD soldering skills aren't brilliant and I think I managed to bork at least one SSD trying to do this. These SSDs will not have died in vain, though, as I will explain later.

Finally, there's the man-in-the-middle option. I now own an Altera MAX II board that I think I could use to forward traffic both ways by detecting when the data line is pulled low at either side, then mirror the traffic on to separate pins. This question on StackOverflow gives an explanation of how this might be done based on some assumptions. However, as I've said before, my VHDL knowledge is non-existent. I'm going to be trying to read up on it as much as possible in the next week to see if I can at least bodge something based on the script in that link.

Even if none of the above work, there is a chance that I might be able to work out what's going on. The ELKS Project was in part an attempt to get Linux running on SIBO machines. Deep in the code there is a very basic SSD driver written in 8086 assembly. This could help massively with writing the code for the eventual Last Psion module. Another option is to rip a copy of the ROM from a SIBO machine, find the driver and disassemble it. 

All these options sound plausible, but they're all just out of reach for me at the moment. I still have much to learn.

Now, the dead SSDs. I'm going to try to use them for parts and analysis. There aren't currently any schematics of SSDs available, so I'm going to try to make a couple.

Also, I think the ASIC4 is probably still alive on at least one of them. I've ordered an SMD breakout PCB and some QuikChip, and I'm going to try to move the ASIC to the board. I'm hoping this is going to make it easier to play around with the ASIC, as long as I don't destroy the chip in the process. I could even try to build an SSD using discrete parts...

Finally, one of the SSD enclosures has been "repurposed" as a breakout unit. I managed to connect the Vcc and Vdd around the wrong way on one SSD, which I'm pretty sure didn't do it any favours. The breakout unit will hopefully make sure this doesn't happen again, as well as make it easier for me to connect wires to the port's pins.

Another thing I've discovered is that SIBO talks to Flash and RAM SSDs differently. Add to that the fact that some early SSDs use the ASIC5 rather than the ASIC4, plus that there are two types of Flash SSD, and you've actually got quite a variety of SSD types. I'm waiting for a couple of RAM SSDs to arrive in the post (I don't currently own one), at which point I'll tear them down and hope at least one has an ASIC4. After all, an ASIC4 RAM SSD is what I'm trying to emulate. It's also worth knowing that the ASIC5 doesn't have the SDIR pin that the ASIC4 has, so would make life a little more difficult.

I'm pretty sure that SIBO uses FAT16. I'm also pretty sure that the ASICs are acting as simple block devices.  This would mean that all filesystem management is done in SIBO. This seems to be confirmed in the ELKS SSD driver code, which only talks about writing blocks to the ASIC4 rather than writing files or reading directory structures.

I've also finally ordered a 3mx. This should be arriving any day now and will probably become my "production" device. I will still be using the 3c as the target machine for this project. My plan is, of course, for this to work with any SIBO machine that can read an SSD. In that vein, I now own a Workabout MX with a half-working LCD - about half the horizontal lines are dead. Any suggestions on how to repair it, or places I can get a replacement screen, will be gratefully received.

Part of this month has also been spent getting in touch with a lot of people who used to be involved with the Psion world. I do plan on writing something about that in the future, but for now just know that it's been really exciting to talk to these people who were so influential in the Psion world in the 90s.

Finally, I am putting out a scrounging request. If anyone has any old Psion equipment they would be happy to donate to the project, please get in touch. I don't mind if it damaged or even dead, I will take it off your hands. Also, if anyone has any old Psion documentation then please let me know. I've managed to find the HDK and a lot of the SDK as PDFs on the Internet, but I know I'm missing a few documents.

Thanks for reading. I will try to write some more in the next week or so, as well as release the source code for the Sigrok decoder.

Discussions