Close
0%
0%

PSION II Datapak and Rampak Reader/Writer

File transfer between a PC and a Psion Organiser II using an Arduino

Similar projects worth following
I used an Arduino to read and write to Psion II Datapaks or Rampaks, these packs contain a memory chip, two counters and some logic. The packs require a 5 V supply, so are well suited to an Arduino Nano which also uses 5 V, powered from USB. An 18 V supply allows Datapak writes.

- Uses linear or paged addressing, larger segmented packs are not supported, maximum OPK file size is 64 kB.
- Rampaks can be read from or written to (bits changed from 1 to 0, or 0 to 1).
- Datapaks can be read from or written to, but not erased (bits from 1 to 0 only, because these packs contain EPROMs which require UV light to erase them).
- Pack image files for read/write use the standard OPK format of the Psion Developer software.

I wrote software for the Arduino and PC. The PC software (in Python) allows pack images to be transferred between the PC and the Datapak/Rampak, via the Arduino.

The software and further description is at my Github page, follow the link to source code.

The Psion Organiser II is a handheld 8-bit micro from the 1980s, it was sold to the public as a personal digital assistant (PDA) and was widely used in industry, over half a million were made. The PDA models have a diary, can store information and can be programmed to perform calculations and manipulate data, there are even some simple games for it. Its PDA functions have since been replaced by the smartphone, so alot of these Psions eventually found their way into the back of a drawer somewhere. However, these devices are as tough as a brick, so if you find one and put a fresh 9 V battery in, it's very likely to work. The same cannot be said of many devices that followed it. The Psion II was a ground-breaking device in its time, and it still has an active following of dedicated users. Lots of info can be found on the site by Jaap Scherphuis:

https://www.jaapsch.net/psion/index.htm

I created this project as I wanted to transfer files to the Psion, and I don't have the Comms Link. The Comms Link is a serial adapter which plugs into the top of the Psion and provides a serial RS232 interface. These are becoming a bit rare and frequently sell for more than the cost of a second hand Psion.

There was a modern remake of the Comms Link with a USB interface, made by Olivier Gossuin, but it is currently not available for sale.

The Psion II has 2 slots in the back for datapaks/rampaks which are for data/software storage, these typically range in size between 8k and 128k, although larger pack are available. There are also Flash packs which need extra software to access or format them. The Comms Link plugs into a third slot in the top on the Psion. This slot shares the 8-bit data bus (and most of the control lines) with the other two slots and only one slot can be selected at a time. The slot connectors are simple 2x8 pin 0.1 inch pitch headers.

Another Hackaday project showed that an Arduino could be used to read/write to Datapaks, with the aim of using a Psion II as a bluetooth controller:

https://hackaday.io/project/168408-psion-ii-remote-control

I started my project from scratch using info from Jaap and Olivier's web sites. Olivier's circuit diagrams of the Datapak and Rampak were very useful so I've added them to the gallery.

Psion's technical reference manual was essential:

https://www.jaapsch.net/psion/tech.htm

https://sites.google.com/site/martin2reid/psion-organiser-ii/manuals/technical

I also took inspiration from this youtube video by Ben Eater:

Build an Arduino EEPROM programmer

  • 1 × Arduino Nano or similar
  • 3 × Header pins 0.1 inch (2.54 mm) pitch: one of 2x8 and two of 1x8 used for datapak connector
  • 1 × Psion organiser II Datapak or Rampak Datapak for read or Rampak for read/write
  • 1 × Psion Organiser II You could do this project without one, but why?
  • 1 × Breadboard Electronic Components / Misc. Electronic Components

View all 7 components

  • Menadue PCB for datapak reader/writer

    martin02/15/2023 at 08:03 0 comments

    Andrew Menadue has created a PCB for a datapak-tool to read & write to Organiser datapaks. It features an on-board SD card reader, display and control buttons. The board uses a Raspberry Pi Pico for the datapak IO and includes a boost circuit to supply VPP for the datapak write. He's adapted my Arduino code for the Pico, but it's still in a development phase.

  • Correction to Datapak schematic​

    martin11/19/2022 at 10:08 0 comments

    When modifiying a datapak to linear addressing, I realised that there was a mistake in Olivier's datapak schematic, the solder jumper to select paged or linear addressing was on the wrong counter, the corrected schematic is shown here:

  • Rampak and Datapak schematics

    martin12/24/2021 at 16:03 0 comments

    Olivier Gossuin's website seems to have closed, so I'm posting his schematics for the rampak and datapak here:

    RAMPAK 32K


    DATAPAK 32K

  • Making use of it

    martin06/28/2021 at 07:41 0 comments

    Since getting this going I've been working my way through the back catalogue of software for the Psion, mostly from Jaap's website. My favourite game is Boulder (written by Jaap for the Psion Organizer II LZ, with the 4-line screen), which is inspired by the classic Boulderdash: you have to find the key, then exit via the window whilst collecting diamonds on the way and without being crushed or trapped by boulders. I've completed the first set of levels and downloaded the extended set. Thanks Jaap for such a great game!

View all 4 project logs

  • 1
    Build a datapak connector for the breadboard

    Make a datapak connector for the breadboard, it just widens the pin spacing to fit over the centre gap of the breadboard.

    The lower pins were pushed through the plastic to make them longer for soldering and the plastic was removed afterwards. If you use stripboard, be sure to cut the tracks on the centre line to prevent a short:

  • 2
    Wire up the connector to the Arduino

    Insert the Arduino Nano into a breadboard and connect to the datapak connector as shown in this schematic:

    Add the optional VPP supply & control if you want to write data to a Datapak (not required for Rampaks). R1 limits the current load of the Arduino digital output (D19), Q1 (NPN) pulls the base of Q2 (PNP) low when the Arduino output goes high. R3 limits the current from Q2 emitter-base to Q1 collector-emitter. R2 is a pullup to keep Q2 in the off state until Q1 pulls low. The supply is 2x 9 V PP3 batteries. A zener diode reference in the datapak reduces VPP to the correct voltage for the EPROM, typically about 13 V.

  • 3
    Install the software

    Upload software to the Arduino, and run the Python software on the PC. The Python software requires 4 libraries: serial, keyboard, time and os, you may need to install these first using pip (or conda if using the Anaconda distribution of Python).

    The software can be found at my Github page: Github Psion2 pack reader-writer

View all 5 instructions

Enjoy this project?

Share

Discussions

Topdesigner90 wrote 11/15/2022 at 19:08 point

so I have a datapak but do not have an organiser neither do I have the comms link but I wish to read and use the file to understand the code that makes it up and hope to modernise it. This project puts me one step closer to being able to access the file at least.

  Are you sure? yes | no

martin wrote 11/19/2022 at 09:48 point

That's interesting, I just recently added a directory routine to list records on the pack. After the 10 initial header bytes, there are only 2 types of record: long & short. A long record often has a short record before it which holds the filename and file type. Take a look at "ls_opk.py". There is no file table stored on the packs, but one way to modernise it would be to store one; perhaps in the reading device?

  Are you sure? yes | no

Chris S wrote 08/19/2022 at 08:01 point

Works like a charm - tested in Read+Write mode - built on stripboard- on Linux (Fedora)

notes: 

* must run like "sudo python3 ./PC_Psion2_datapak_read_write_v1_1.py "

* on some distros (esp OpenSUSE) there is a conflict between the "brltty" (braille TTY) that thinks the arduino Nano is braille keyboard, so if you don't need braille keyboard support just uninstall the brltty package.

* Datapaks to be written must be completely blank  (no "MAIN" record) - do not initialise ("sizing") them on a PSION!

  Are you sure? yes | no

martin wrote 11/19/2022 at 09:53 point

Thanks Chris, glad to have some input from a Linux user. I just released v.1.3, which includes an option to check if the pack is completely blank.

  Are you sure? yes | no

dearuserhron wrote 06/12/2021 at 13:18 point

Old hardware does not die. (it is my favorite catch-phrase. I do remember that guy from Nirvana movie who is constantly soldering old hardware and never give up to revive the old tech, it's his catch-phrase)

  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