Keen to get psiemu1, my lightweight launcher for Psion MAME emulators into a usable state, I decided to push on with it on day 17 of my (somewhat Psion themed) December Adventure.

PsiEmu

My goal with PsiEmu is to create a relatively self-contained solution for getting started with the Psion emulators built into MAME (and maybe even some other emulators in the future). To do this, it should be able to fetch ROMs on your behalf, offer conveniences for managing settings specific to Psion emulation (mounting SSDs, configuring serial ports, etc), and have ‘sandboxed’ settings and data directories—it shouldn’t break existing MAME configurations. I really want PsiEmu to be a one-stop shop that makes Psion emulation significantly more accessible.

I ended up spending much of the morning talking through this approach with Alex who was initially expecting to use PsiEmu as a MAME command-line generator, manually adding options for things like serial port configuration. This user experience would be far more complex than I’d like, and the discussion proved incredibly helpful, allowing me to better understand just how important those extra options are, while also giving me a chance to share my goals and have Alex help guide the design. For example, it’s clear that having psiemu remain resident to allow emulators to be quickly relaunched is key to software development workflows; as is being able to quickly tweak settings like serial port configurations.

In addition to the various configuration options, I’d also like to add some built-in guides: MAME can be pretty opaque at times, and things like keyboard shortcuts for Psion-specific hardware keys vary subtly from device-to-device. I imagine a per-device ‘info card’, as well as an app-wide help (akin to the built-in help on Psions themselves). This seemed like a perfect minimal case study to try out ‘windowing’ in Curses, so I knocked something up:

This makes use of ‘pads’ which are Curses' primitive for scrollviews. They’re not the easiest thing to work with, but they allow for an optimized or naive approach to scrolling and will be incredibly useful as the list of emulators grows and I start adding things like lists of settings.

I also added a handful of additional emulator configurations: Dutch and French Series 3mx variants, and a French Siena. I also experimented with adding an Organiser II which I’m not ready to commit yet.

Home Infrastructure

My afternoon proved somewhat distracted as I received delivery of a LincStation N2 and took some time to try it out. This will be serve as a (hopefully more robust) replacement for a Raspberry Pi 5 that has been acting as my local Syncthing node and home-infrastructure for the past year-or-so.


  1. Or should that be ‘PsiEmu’?