writing.exchange is one of the many independent Mastodon servers you can use to participate in the fediverse.
A small, intentional community for poets, authors, and every kind of writer.

Administered by:

Server stats:

350
active users

#psion

3 posts2 participants0 posts today
Continued thread

I originally thought that it was just a hardware thing - solder on another chip, job done. After all, the pads were on the board, so why wouldn't #Psion have made #EPOC16 work with 4MB RAM?

But maybe a 4MB 3mx just wasn't a priority for Psion any more. #EPOC32 and the Series 5 were in full swing by the time the 3mx was released. The two Psions were drifting apart, too - Psion's hardware business ended up refocusing on Windows CE machines.

Psion had the ramdrive working with 2MB machines since the 3a2. The code probably hadn't been touched in ages, and it might have been too much hassle to update for the returns they thought they might get.

This is all speculation, of course. But it would make sense.

Some success with the 4MB #Psion 3mx!

I've been able to write directly to a page of RAM in the upper 2MB of memory, using #EDisAsm. I modified one of the memory-dumping assembly routines to basically go in the opposite direction. It writes 16 bytes to bank 0x6000, page 0x20. Then I dumped that to a file.

It worked! There's no corruption, and I can't see it mirrored anywhere. Using this basic test, we can pretty safely say that ASIC9MX is able to address the extra RAM (like the SDK says), and that the second chip is soldered correctly.

However, this doesn't explain why #EPOC16 doesn't like it. To recap, although EPOC16 reports that it has 4MB RAM, the ramdrive (M:) is inaccessible - apps report that the "media is corrupted", and the OS says it's unformatted. Any attempt to format the ramdrive fails silently.

The current guess is that the ramdrive "driver" can't handle more than 2MB RAM. It might be just the formatting routine, but it could be the ramdrive filesystem can't handle it. However, there might be a hard limit on pointers. This could be a bigger issue: the ramdrive in EPOC16 resizes dynamically, so the ramdrive "driver" and the filesystem's pointers would need to be able to handle the bigger filesystem size.

Unfortunately, this filesystem is undocumented - Psion never expected anyone to need to fiddle with it. Fortunately, EDisAsm can dump all memory, so it would be possible to analyse it. Dump a freshly booted 2MB 3mx, add a file, dump it again, delete a file, dump it again...

If it turns out that this is the case, it might be necessary to create a custom EPOC16 ROM. This would require a few things: working out how to modify the driver (and anything else) successfully, putting together a new EPOC16 image with the be driver, and a 3mx that's been modded to take flash. Bearing in mind that no EPOC16 source has been unearthed.

In conclusion, definitely progress, but there's still a long way to go.

For my #Psion project, I want to have a clamshell case. However, there will need to be at least one, perhaps two, ribbon cables that need to go from one side to the other. My Google-Fu is failing me in trying to search for a hinge which will take the ribbon cable through without mangling it. Any ideas? 🙂 I don't really know what to search for, is one problem!

Continued thread

So, I'm at a crossroads. I'm contemplating:

I feel like I'm slowing down with CTRAN development. After all, it "works"... but it's not "right."

The write-up is just a hard slog.

Moving on to a new tool might give me some inspiration on how to improve CTRAN. But I don't want to leave a trail of mostly-finished projects in my wake.

The C project is a bit special to me. It's also something people might actually use - unusual for one of my projects! It's for Psion #EPOC16 and would enable a huge number of old games to run on the Series 3a/c/mx.

I was hoping to use NeoVim, but with clangd being awkward, I'd have to use VS Code.

Mini-rant ahead:

I'm delving into #cmake to try to make it build a compile_commands.json file to work with #retrocomputing C header files, specifically the #Psion SIBO C SDK (from the early 90s).

I don't actually want cmake to do anything but tell clangd what to do, so that I've got a working language server in NeoVim.

I don't need it to build any Makefiles, I don't need it to tell a compiler what to do. I just want clangd to treat my old 16-bit real mode code correctly, and that the header files are in ~/dosbox/sibo-c/SIBOSDK/include/.

Note that I can't point it at the compiler, because the compiler (TopSpeed) runs in DOSBox. There is no modern compiler that will work.

So... Do I have to fake it somehow? For example, do I have to tell cmake that it's actually using a different compiler (e.g. #Watcom) to make it behave correctly?

The stuff I have in my drawers of geekery.

I used Symbian OS for years. It was a fantastic operating system which Nokia used a version of.

Me? Why I had a Psion Series 5 then a Nokia communicator. Until recently I used the series 5 as a clean and distraction free word processor. The keyboard is the best pocket keyboard ever made.

I've not been great at documenting my #decemberadventure but finally finished my last post blog.solarcene.community/posts

I've spent the last few days in between family and work adding #Bluetooth (#ble) to my #Psion #Series5 by tapping into internal serial lines and then using a #hm-11 module. While it's not perfect it's really nice to be able to use the psion wirelessly. Next task is to increase the connection speed and fix the issue with a proxy server.

Someone asked me some questions on the #Psion Series 3, so I thought I'd post my response here in case anyone else is interested. #LongRead

Emulator

You've got two options. The first is the original "emulators" written by Psion, S3AEMUL.EXE and S3CEMUL.EXE. They both run in DOS and emulate the 3a and 3c. But they're less of an emulator than a runtime environment for #EPOC16 (the OS). There's good and bad to this. You can run S3AEMUL and S3CEMUL straight in #DOSBox and it will talk to your host OS's filesystem (Windows, Linux, macOS, whatever). You need to map an M: drive in DOSBox for the internal storage, but once that's done you can copy files straight into that folder on your host OS. The downside is that it's not true hardware emulation. You won't get a good judge of the speed of a real device, and some syscalls aren't implements so will fail or crash the #emulator. They're bundled with the SDK (see below).

The alternative is #MAME. This is the closest to proper hardware emulation you're going to find. You can either dump your own ROMs using a tool called #EDisAsm, or you can find them in the usual MAME ROM repos. The one thing that is notably missing is RS232 emulation from the later models, because we haven't been able to find any documentation on the silicon, but it's working fine with the 3a.

Toolchain

At the moment you have only one option - the Psion SIBO C SDK with the #TopSpeed C Compiler. You're going to need DOSBox (I personally prefer DOSBox Staging). It's all available on the Internet Archive in one easy download, including all the documentation you will need.

archive.org/details/psion-sibo

From there, you have a few libraries you can use. There CLIB, which is a pure ANSI C implementation, designed to easily port apps - don't use it, it's slow and you'll be missing a lot of features. Then there's PLIB, which is Psion's C dialect - very nice to use, and you can put together a C app pretty quickly. Finally, there's OLIB, which is Psion's proprietary OO C - it feels very clunky, but once you get over that it can be very powerful.

EPOC16 apps are restricted to a very pure version of the small memory model, but you can split code up into libraries known as DYLs.

In the past I've written code using VS Code, which can be made to play nicely with the SDK's header files. I've not got it working with NeoVim and clangd yet, but it should be possible with cmake.

The SDK comes with a debugger (SDBG.EXE), a DOS GUI app. If you run SDBG.EXE in DOSBox Staging, run the Psion3a MAME emulation, and enable RS232 over TCP on both, you can use SDBG to send apps to MAME. If you enable symbols, you can step through the code. It's rudimentary by modern standards, but it works pretty well.

I say "at the moment" because I'm slowly rewriting the tools in the SDK. I already have a new working version of #CTRAN, the preprocessor for Psion OO C, but I'm a long way from a compiler. There have been efforts to coax gcc into compiling for SIBO/EPOC16, but I think they have stalled for now.

If you want some examples of EPOC16 C and OO C code, take a look at these:
github.com/thelastpsion/edisas
github.com/thelastpsion/pyrami
github.com/thelastpsion/nfsc
github.com/nickmat/Psion3-Wari
github.com/nickmat/Psion3-Vect

Device

The 3mx is the best choice. It's significantly faster than the earlier models (27.6 MHz vs 7.6 MHz), has a switchable backlight, the fastest RS232 and the best version of EPOC16. I "daily drive" one for journalling, adventure games, and a few other small tasks. After that I'd say the 3c (beware - they were covered in soft-touch rubber, so will need cleaning) and the 2MB 3a. The latter is the most common. Most 3c units came with a backlight, except for the early UK ones. The 3a doesn't. Arguably the non-backlit screens have better contrast so you don't need the backlight so much in lower light, but the backlight has obvious benefits.

Internet ArchivePsion SIBO C SDK and HDK for EPOC16 : Psion : Free Download, Borrow, and Streaming : Internet ArchiveThis is all you need to get started with developing software (and hardware!) for Psion's SIBO range of portable and handheld computers.It includes:A pre-built...

I've just released version 0.3.5 of Pygenda - my WIP #Psion Agenda-like app targetting #GeminiPDA & #CosmoCommunicator running Linux. (Similar keyboard #PDA type devices running #LinuxMobile should work too, e.g. #PinePhone + keyboard, F(x)tec #Pro1x, #PocketReform)

The main change this release is that todo-items with a due date are (optionally) shown in Week & Year Views. This has been a useful improvement for me as I now see todos in my "home" views, rather than having to switch to Todo View.

Current main projects:

  • #CTRAN: Start writing unit tests with FPCUnit. Also, complete a full write-up of what it took to get the thing working.
  • Get my website running #GoHugo
  • Rip the batteries out of the Revo I was given last week and assess the damage #Psion

Immediately upcoming projects:

  • Rebuild of DEATH, my Microserver gen8, probably with #FreeBSD.
  • EMAKE: Complete recreation of the SIBO C SDK "linker" in #ObjectPascal. To be started once I'm happy with CTRAN's unit tests.
  • #ThinkPad T480 mods
  • Read some #compiler related programming books

These are just the ones I can think of right now.