#edisasm — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #edisasm, aggregated by home.social.
-
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.EXEandS3CEMUL.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 runS3AEMULandS3CEMULstraight 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 and run them in the emulators. 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 implemented 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.
https://archive.org/details/psion-sibo-c-sdk
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 runSDBG.EXEin DOSBox Staging, run thePsion3aMAME emulation, and enable RS232 over TCP on both, you can useSDBGto 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:
https://github.com/thelastpsion/edisasm
https://github.com/thelastpsion/pyramid
https://github.com/thelastpsion/nfsc
https://github.com/nickmat/Psion3-Wari
https://github.com/nickmat/Psion3-VectorDevice
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.
-
Thought I'd have a quick look at converting the #TASM code in #EDisAsm to #TopSpeed #assembler. It would get rid of a dependency, which can't be a bad thing. And it can't be that hard, right?
Nope! Much harder than I thought! 😂
Here's a link to an excerpt from the TopSpeed Advanced Programmer's Guide (I can't find the whole thing). It has thoroughly confused me and made me realise I should just go back to my main quest.
https://clarionhub.com/t/unfinished-text-with-some-information-about-the-topspeed-assembler/517
-
So, now the MAME/Haiku project is essentially done (just waiting for my PR to be merged now), I'm thinking about what to work on next.
Outstanding #Psion projects:
- #FEFSgen (golang) to make flash SSD images
- #libsibo: add write for RAM SSDs
- #PsiDrive: add boost converter (set to ~17VDC) for writing to Flash SSDs
- Psion SDK to #AsciiDoc: SO MUCH DOCUMENTATION TO CONVERT!
- Blogging: SO MUCH DOCUMENTATION TO WRITE!
- #EDisAsm: because there's always room for more features -
Wrote up a summary of the past year on Hackaday IO (@hackaday) because it was rattling around in my brain.
OK, *now* I'm going to rest.
#psion #retrocomputing #EDisAsm #sibolib #mame #PsiDrive #epoc16 #pda #vintagecomputing #retrodev #retrospective
-
After a fair amount of pointer-wrangling, #EDisAsm can now dump SSDs to another SSD or the RAMDRIVE as a file.
Why is this useful?
1. People using #plptools can't use the `dumpssd` command because it pushes to C: over serial. This will let them pull the dump instead.
2. Peripheral ROMs (3Link/3Fax) can now be dumped! Just use `savessd c m` to save to RAM.
It's only in the Git version ATM. I'll make a proper release once I've done some cleaning up.
-
Found a way to get files on to the #MAME #Psion #SIBO #emulator without building any new tools!
#EPOC16 can read FAT volumes. So... mtools!
1. Make an empty file of, say, 2MB.
2. Use mtools to "format" it with FAT.
3. Use mtools to make directories in it and copy files into it.
4. Point MAME at the image.Mtools is available for pretty much every Linux distro. And there's a version for Win32, too: https://github.com/foone/mtools_win32/releases/tag/4.0.23
Here's #EDisAsm 0.0.5 running on an emulated 3mx.