<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sibo-Sp on The Last Psion</title><link>/tags/sibo-sp/</link><description>Recent content in Sibo-Sp on The Last Psion</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Sun, 17 Nov 2019 00:00:00 +0000</lastBuildDate><atom:link href="/tags/sibo-sp/index.xml" rel="self" type="application/rss+xml"/><item><title>The Siena SSD Drive</title><link>/posts/siena-ssd-drive/</link><pubDate>Sun, 17 Nov 2019 00:00:00 0000</pubDate><guid>/posts/siena-ssd-drive/</guid><description>&lt;p&gt;&lt;img src="/posts/siena-ssd-drive/5213481573993546999.jpg" alt="A Psion Series 3mx next to a Siena SSD Drive"&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s been an interesting morning. I&amp;rsquo;ve been digging around in the internals of the Siena SSD drive and made some discoveries.&lt;/p&gt;
&lt;p&gt;The Siena SSD drive was released so that the diminutive Siena could still read SSDs. I bought one of these on eBay a week ago because I wanted to answer a question: &amp;ldquo;How did Psion get the SIBO Serial Protocol to work over RS-232?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;At first I thought there were two ways that Psion could have done this. First, the SIBO-SP packets (12 bits in length, although only 9 are &lt;del&gt;useful&lt;/del&gt; significant) are repackaged so they fit into 8 bits. Or second, the Siena SSD drive tells the SIBO machine that it&amp;rsquo;s SIBO-SP compatible and then changes from RS-232 using to SIBO-SP (maybe still using RS-232 signal levels that are downconverted for ASIC4/5?).&lt;/p&gt;
&lt;p&gt;Turns out there was a third way.&lt;/p&gt;
&lt;p&gt;&lt;img src="/posts/siena-ssd-drive/8026661573993665231.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;The only documentation I have for the Honda connector is from a Series 5 service manual. In it, pins 10,13 and 14 are shown as not connected. Turns out that&amp;rsquo;s not the case with the Honda SIBO machines (3c, 3mx and Siena). On the 3c board (pictured with the stripped-down drive) they connect to a MAX3212, an RS-232 transceiver.&lt;/p&gt;
&lt;p&gt;&lt;img src="/posts/siena-ssd-drive/8526861573993645331.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;This means that the Honda serial cable has a second set of serial connections, separate to the main RS-232 used for things like PsiWin.&lt;/p&gt;
&lt;p&gt;The Siena drive has a passthrough RS-232 port with pins 9 to 14 disconnected. Having a second serial channel would explain how a Honda SIBO machine can do both regular RS-232 and read an SSD at the same time.&lt;/p&gt;
&lt;p&gt;The white square in the top-middle of the Siena drive&amp;rsquo;s board seems to be another custom ASIC! All the SSD pins connect to this. I&amp;rsquo;ve not seen any information about this chip anywhere. My guess is that it splits the single-wire SIBO-SP into two wires for transmission along the second serial link, but until I can get a logic analyser on it I can&amp;rsquo;t say that for certain. The rest of the board must be providing things like Vpp for writing to Flash SSDs and lowering the 9v power supply to 5v.&lt;/p&gt;
&lt;p&gt;This does sadly mean that, even with drivers, there is no way to get the drive to work on an EPOC32 machine, but it does potentially mean more exciting things for SIBO machines with Honda connectors, as it does look like there&amp;rsquo;s a way to talk SIBO-SP over the Honda connector.&lt;/p&gt;
&lt;h2 id="update-2026-04-15"&gt;UPDATE: 2026-04-15&lt;/h2&gt;
&lt;p&gt;Last year a few of us in the Psion Community came across an update to the SIBO C SDK that we didn&amp;rsquo;t have before.&lt;/p&gt;
&lt;p&gt;At a conference in the late 90s, Psion handed out Word documents for developers to update version 2.10 of the SDK to 2.15. The latest version that I have of the Hardware Guide is 2.10. This includes a table that I have reproduced here with added information on ARM/EPOC32 machines:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Pin&lt;/th&gt;
 &lt;th&gt;Function&lt;/th&gt;
 &lt;th&gt;Direction&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Siena:&lt;/strong&gt; Vin at +6V DC ±10%&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;--&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Series 3c/mx:&lt;/strong&gt; 5V power out, 30mA maximum&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;ARM:&lt;/strong&gt; 5V power out (max current unknown)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;RTS&lt;/code&gt; (RS232)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;DTR&lt;/code&gt; (RS232)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;TXD&lt;/code&gt; (RS232)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;5&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;DSR&lt;/code&gt; (RS232)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;--&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;6&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;DCD&lt;/code&gt; (RS232)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;--&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;7&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;CTS&lt;/code&gt; (RS232)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;--&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;RXD&lt;/code&gt; (RS232)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;--&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;9&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;SIBO:&lt;/strong&gt; &lt;code&gt;SDOE&lt;/code&gt; - data direction control&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;ARM:&lt;/strong&gt; Vpcc&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;10&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;SIBO:&lt;/strong&gt; &lt;code&gt;EXTSTAT&lt;/code&gt; - active low peripheral detect line&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;--&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;ARM:&lt;/strong&gt; N/C&lt;/td&gt;
 &lt;td&gt;N/C&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;11&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;SIBO:&lt;/strong&gt; &lt;code&gt;EXON&lt;/code&gt; - external turn-on&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;--&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;ARM:&lt;/strong&gt; Vpp&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;12&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;SIBO:&lt;/strong&gt; &lt;code&gt;INT&lt;/code&gt; - peripheral interrupt&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;--&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;ARM:&lt;/strong&gt; N/C&lt;/td&gt;
 &lt;td&gt;N/C&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;13&lt;/td&gt;
 &lt;td&gt;SIBO: &lt;code&gt;SD&lt;/code&gt; - serial data&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;-&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;ARM:&lt;/strong&gt; N/C&lt;/td&gt;
 &lt;td&gt;N/C&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;14&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;SIBO:&lt;/strong&gt; &lt;code&gt;SCK&lt;/code&gt; - data clock&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;ARM:&lt;/strong&gt; N/C&lt;/td&gt;
 &lt;td&gt;N/C&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;15&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;GND&lt;/code&gt; - Signal and power ground&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;---&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;GND&lt;/code&gt; - Shield frame ground&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;---&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Key:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--&amp;gt;&lt;/code&gt; Out of machine&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;--&lt;/code&gt; Into machine&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;-&amp;gt;&lt;/code&gt; Bidirectional&lt;/li&gt;
&lt;li&gt;&lt;code&gt;---&lt;/code&gt; Ground&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notable differences here between SIBO and ARM machines are pins 9 and 11. As no one has yet blown up a Siena drive by plugging it in to a Series 5, I assume this wouldn&amp;rsquo;t cause a problem with other peripherals.&lt;/p&gt;
&lt;p&gt;Also, the last time I tried to attach an oscilloscope to a Siena SSD Drive, I slipped and blew up a regulator - one that&amp;rsquo;s no longer manufactured. Luckily I have two other drives, but these things are rare. I&amp;rsquo;ll be much more careful in the future.&lt;/p&gt;</description></item><item><title>The SSD Port and (finally) Some Logic Analysis</title><link>/posts/ssd-port-logic-analysis/</link><pubDate>Sun, 21 Oct 2018 00:00:00 0000</pubDate><guid>/posts/ssd-port-logic-analysis/</guid><description>&lt;p&gt;I now have everything I need to get started on revealing the secrets of the Psion SSD Port. So, here&amp;rsquo;s what I&amp;rsquo;ve been up to this morning.&lt;/p&gt;
&lt;p&gt;Rather than pull apart my &amp;ldquo;production&amp;rdquo; 3c, I&amp;rsquo;ve decided to get to work on a slightly broken 3a. I don&amp;rsquo;t like the idea of doing something dumb thanks to my inexperience and blowing up my 3c. The 3a&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;For some reason, this 3a smells really strongly of some spice or other, possibly cumin. It&amp;rsquo;s not pleasant and the unit could really do with a bath in alcohol.&lt;/p&gt;
&lt;p&gt;I removed the door for Port A and directly attached six jumper leads to the six pins of Port A. The other ends of the leads were plugged into a solderless breadboard. I then ran a further six jumper leads from the breadboard to my SSD. Keeping my fingers crossed that I hadn&amp;rsquo;t miswired anything (it&amp;rsquo;s currently my only SSD) I powered up the 3a and&amp;hellip; it still worked!&lt;/p&gt;
&lt;p&gt;&lt;img src="/posts/ssd-port-logic-analysis/3148351540131333398.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;My next step was to find out what each pin did. I had already found the SSD pinout using &lt;a href="https://groups.google.com/forum/#!searchin/comp.sys.psion.misc/ssd$20pin%7Csort:date/comp.sys.psion.misc/7ppLpEscpyI/qJMiy0fc2UwJ"&gt;this post from comp.sys.psion.misc&lt;/a&gt;, so I used that as basis and used my multimeter to test the voltages on pins 3 to 5. So, here&amp;rsquo;s the updated pinout, using the post on comp.sys.psion.misc as a basis.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Pin&lt;/th&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;When the 3a is on&lt;/th&gt;
 &lt;th&gt;When the 3a is off&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;CLK (input to SSD only)&lt;/td&gt;
 &lt;td&gt;Clock (+5V)&lt;/td&gt;
 &lt;td&gt;0V&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;GND&lt;/td&gt;
 &lt;td&gt;GND&lt;/td&gt;
 &lt;td&gt;GND&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;Vbackup&lt;/td&gt;
 &lt;td&gt;+3.75V DC&lt;/td&gt;
 &lt;td&gt;+3.75V DC&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;Vpp (for Flash programming)&lt;/td&gt;
 &lt;td&gt;+15.75V DC&lt;/td&gt;
 &lt;td&gt;+9V DC&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;5&lt;/td&gt;
 &lt;td&gt;Vcc&lt;/td&gt;
 &lt;td&gt;+5V DC&lt;/td&gt;
 &lt;td&gt;0V&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;6&lt;/td&gt;
 &lt;td&gt;DATA (bidirectional)&lt;/td&gt;
 &lt;td&gt;Data (+5V)&lt;/td&gt;
 &lt;td&gt;0V&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Interestingly, the Vpp voltage drop isn&amp;rsquo;t instantaneous, taking just under 10 seconds to drop from 15V to 9V.&lt;/p&gt;
&lt;p&gt;So, I have a few questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;del&gt;What&amp;rsquo;s the point of Vbackup?&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Why does Vbackup stay live when the unit is turned on?&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Why does Vpp drop to 9V when the unit is off? Why doesn&amp;rsquo;t it go off completely?&lt;/li&gt;
&lt;li&gt;Is there a reason Vpp takes time to drop, or is it just a capacitor taking time to discharge?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; I now realise that Vbackup is there to maintain power to RAM SSDs so they don&amp;rsquo;t have to rely on their own internal CR1620 batteries when inside the Psion. This answers questions 1 and 2 - that power is needed even if the Psion is turned off. My guess is that RAM SSDs have Vpp disconnected, Flash SSDs have Vbackup disconnected, and ROM SSDs have both disconnected. It is also worth noting that Vbackup and Vpp are live even if there is no SSD connected and the Psion is off, albeit with Vpp running at 9V. This might prove useful in the future.&lt;/p&gt;
&lt;p&gt;I felt it was now time to connect up my USB logic analyser and see if I could use PulseView to see the SIBO Serial Protocol at work. (The other device on the breadboard is an Espruino Pico, which I was using to generate signals to make sure the logic analyser was working.)&lt;/p&gt;
&lt;p&gt;&lt;img src="/posts/ssd-port-logic-analysis/1663181540131479332.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;After trying various settings and finally setting the sample rate to 24 MHz, I managed to capture a conversation between the Series 3a and SSD.&lt;/p&gt;
&lt;p&gt;&lt;img src="/posts/ssd-port-logic-analysis/7453761540130426233.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;The top line is DATA and the bottom is CLK.&lt;/p&gt;
&lt;p&gt;PulseView and its backend library sigrok have the ability to do some analysis on the signals they capture. There are plugins for all sorts of protocols, such as I2C, AC &amp;lsquo;97, SPI. This made me wonder how difficult it would be to write my own plugin for the SIBO Serial Protocol. After a quick look on Google, I found this:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sigrok.org/wiki/Protocol_decoder_HOWTO"&gt;https://sigrok.org/wiki/Protocol_decoder_HOWTO&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So I think my next step is to see if I can write a protocol decoder for SIBO using the HDK document as a basis. It will help me to understand the protocol better for when I finally get around to building the first SSD prototype.&lt;/p&gt;</description></item><item><title>SSDs, the ASIC4 and the SIBO Serial Protocol</title><link>/posts/ssd-asic4-aibo-serial-protocol/</link><pubDate>Mon, 17 Sep 2018 00:00:00 0000</pubDate><guid>/posts/ssd-asic4-aibo-serial-protocol/</guid><description>&lt;p&gt;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 &lt;strong&gt;SIBO Serial Protocol&lt;/strong&gt;. All Series 3 models used SSDs that also communicated using this proprietary protocol.&lt;/p&gt;
&lt;p&gt;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 &lt;strong&gt;Psion SIBO Hardware Development Kit&lt;/strong&gt;. 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.&lt;/p&gt;
&lt;p&gt;The controller chips are known as &lt;strong&gt;ASIC&lt;/strong&gt; s, 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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;As you probably already know, the two aims of this project are to give the Psion both better storage and Wi-Fi access. I&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;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&amp;rsquo;s the slave&amp;rsquo;s turn to send data back on Bits 3-10.&lt;/p&gt;
&lt;p&gt;Oh, and the 3c&amp;rsquo;s CLK runs at a nominal 3.84 MHz. Not fast, but not slow either.&lt;/p&gt;
&lt;p&gt;What I really want to do is emulate an ASIC4. As far as I see it, I don&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;I can see three ways of tackling this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Completely emulate the ASIC4 on Espruino.&lt;/strong&gt; 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&amp;rsquo;m guessing pure JavaScript would be nowhere near fast enough to handle it, so a driver would need to be written in C.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use an original ASIC4 chip.&lt;/strong&gt; They&amp;rsquo;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&amp;rsquo;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.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Emulate the ASIC4 in FPGA.&lt;/strong&gt; This scares me the most. I haven&amp;rsquo;t got a clue about FPGAs. However, I know it would be insanely fast and mean that I wouldn&amp;rsquo;t have to break SSDs. Still, I&amp;rsquo;d need to work out how to get Espruino to talk to the FPGA.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;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. What I don’t know, though, is if an ASIC4 can be connected to an SSD port in Mixed Mode and have the Psion recognise it. Or, to be more accurate, if I can make something that &lt;em&gt;pretends&lt;/em&gt; to be an ASIC4 in Mixed Mode and have the Psion recognise it.&lt;/p&gt;
&lt;p&gt;Once I have this first major stage working, I will look at emulating Extended Mixed Mode so that I can send commands to the Espruino to control the Wi-Fi.&lt;/p&gt;</description></item></channel></rss>