home.social

#ctran — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #ctran, aggregated by home.social.

  1. I think I'm using the term "metaclass" incorrectly in #CTRAN.

    Is there a term for squashing all of a class's ancestors together as if they were just one parent class or superclass?

    #OO #OOP

  2. Current main projects:

    • #ecobj: Another piece of the #Psion SIBO SDK rewrite puzzle. ECOBJ.EXE takes an Intel OMF file (.OBJ) for a class and moves the class descriptor data into the code segment. I think I might be able to get this working by the end of the year.
    • Get my website running #GoHugo (this is almost done!).
    • #CTRAN: Still haven't started writing unit tests. Also, complete a full write-up of what it took to get the thing working.
    • Research into compilers: I'm nowhere near ready to start yet, but I'm learning as much as I can.

    Upcoming projects:

    • #siboimg: Rewrite in Pascal, and add the ability to create and modify FEFS images.
    • #plptools: I'd like to see two-way transfer working for EPOC16 -- I'm sure I'll need the help of the rest of the maintainers to get this working. I can't do much with the #HaikuOS port until the USB serial drivers are "fixed" (hardware flow control added) -- I don't think I have the skills for this, so it'll have to wait until some kind soul has the time to work on it.
    • #PsiDrive: Add a ~17V boost converter to allow writing to Flash SSDs.
    • NAS/home server: Rebuild or replacement of DEATH, my Microserver gen8. It's been over 18 months since DEATH's RAID died. It's lead me to thinking that maybe I don't need the sort of server I thought I need. TBD.

    Maybe next year, maybe not:

    • New Psion SSD with RP2350: I doubt I'll get anything made, but I'd like to experiment to see what can be done with the protocol.
    • Rewrite the rest of the SIBO C SDK tools.
    • Compiler: Recreation of the JPI/Clarion TopSpeed C compiler, targeting the SIBO/EPOC16 platform (8086 and V30). I was hoping to get going with this around July this year, but it just didn't happen. This is my Everest. I know I'm not ready yet. I need to train for it.
    • Vine: New word processor for EPOC16. Trying to start this project in 2023 lead me to rewriting the SDK, so we're quite some way away from getting this done.
    • Research into Objective-C: Not Foundation, just the syntax. For compiler shenanigans.

    I've really struggled to get going with projects this year. That's fine, these things happen. But I'd like to find better ways to cope next year so that I can make a little more progress.

  3. Some of this weekend will be spent re-reading the #Psion SIBO C SDK's Object Oriented Programming Guide.

    Not because I want to refresh my technical knowledge, but because I threw #CTRAN together with a mish-mash of identifier names. And Present Me is slightly cursing Past Me. So yeah, I want to get Psion's nomenclature right so I can clean up my code.

    My trusty Fire 7 2015 running LineageOS is in service. It's not fast (low RAM and dog-slow SD card access) and Android 7 is becoming increasingly untenable (it spends 99% of the time with WiFi off), but it's reliable as hell.

    Thank you to the developers of #Librera ereader software for continuing to support ancient Android versions! And yes, that screen really is green - I've got some visual processing issues and Librera lets me change colours.

  4. Some of this weekend will be spent re-reading the #Psion SIBO C SDK's Object Oriented Programming Guide.

    Not because I want to refresh my technical knowledge, but because I threw #CTRAN together with a mish-mash of identifier names. And Present Me is slightly cursing Past Me. So yeah, I want to get Psion's nomenclature right so I can clean up my code.

    My trusty Fire 7 2015 running LineageOS is in service. It's not fast (low RAM and dog-slow SD card access) and Android 7 is becoming increasingly untenable (it spends 99% of the time with WiFi off), but it's reliable as hell.

    Thank you to the developers of #Librera ereader software for continuing to support ancient Android versions! And yes, that screen really is green - I've got some visual processing issues and Librera lets me change colours.

  5. Some of this weekend will be spent re-reading the #Psion SIBO C SDK's Object Oriented Programming Guide.

    Not because I want to refresh my technical knowledge, but because I threw #CTRAN together with a mish-mash of identifier names. And Present Me is slightly cursing Past Me. So yeah, I want to get Psion's nomenclature right so I can clean up my code.

    My trusty Fire 7 2015 running LineageOS is in service. It's not fast (low RAM and dog-slow SD card access) and Android 7 is becoming increasingly untenable (it spends 99% of the time with WiFi off), but it's reliable as hell.

    Thank you to the developers of #Librera ereader software for continuing to support ancient Android versions! And yes, that screen really is green - I've got some visual processing issues and Librera lets me change colours.

  6. Some of this weekend will be spent re-reading the #Psion SIBO C SDK's Object Oriented Programming Guide.

    Not because I want to refresh my technical knowledge, but because I threw #CTRAN together with a mish-mash of identifier names. And Present Me is slightly cursing Past Me. So yeah, I want to get Psion's nomenclature right so I can clean up my code.

    My trusty Fire 7 2015 running LineageOS is in service. It's not fast (low RAM and dog-slow SD card access) and Android 7 is becoming increasingly untenable (it spends 99% of the time with WiFi off), but it's reliable as hell.

    Thank you to the developers of #Librera ereader software for continuing to support ancient Android versions! And yes, that screen really is green - I've got some visual processing issues and Librera lets me change colours.

  7. Some of this weekend will be spent re-reading the #Psion SIBO C SDK's Object Oriented Programming Guide.

    Not because I want to refresh my technical knowledge, but because I threw #CTRAN together with a mish-mash of identifier names. And Present Me is slightly cursing Past Me. So yeah, I want to get Psion's nomenclature right so I can clean up my code.

    My trusty Fire 7 2015 running LineageOS is in service. It's not fast (low RAM and dog-slow SD card access) and Android 7 is becoming increasingly untenable (it spends 99% of the time with WiFi off), but it's reliable as hell.

    Thank you to the developers of #Librera ereader software for continuing to support ancient Android versions! And yes, that screen really is green - I've got some visual processing issues and Librera lets me change colours.

  8. Current main projects:

    • #plptools: Resurrecting old ports (#FreeBSD, #NetBSD) and working on a new port to #HaikuOS. It's an opportunity to get more familiar with the code and maybe find bugs along the way.

    Upcoming projects:

    • #CTRAN: Still haven't started writing unit tests. Also, complete a full write-up of what it took to get the thing working.
    • Get my website running #GoHugo.
    • Rebuild of DEATH, my Microserver gen8, probably with #FreeBSD. (Yes, it's been over a year since DEATH's RAID died.)
    • Pick another SIBO SDK tool to rewrite. (Probably EMAKE or RCOMP.)
    • Add a 17V boost converter to #PsiDrive.
    • Make #fefstool create FEFS images. (I'm half-tempted to rewrite fefstool in Pascal to make it easier for me to finish.)

    You'll notice that some of these projects have been sitting for a while. I've struggled to get going with things this year. I'm hoping that working though plptools will give me some mental energy to get going with other things.

  9. 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 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.

    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.

    #RetroComputing #RetroDev #16bit

  10. REPOST (JAN 2024): My first thoughts on #Psion's dialect of Object Oriented C for the Series 3 and related portable computers.

    Includes the JPI/Clarion #TopSpeed #compiler, a proprietary preprocessor, the Eiffel programming language, and a handful of calling conventions.

    Also, did somebody say Objective-C?

    This is an old blog post from the beginning of the year. If you've been following my journey in recreating #CTRAN, this was written a week before I decided to take the plunge.

    hackaday.io/project/161291-the

    (Yes, I did say in the article that I definitely wouldn't be writing a compiler. I did say that.)

    #RetroComputing #EPOC16 #CDECL #Clarion #TopSpeed #TopSpeedC #RetroProgramming #RetroDev #Smalltalk #ObjectPascal #preprocessor #Eiffel #OOP #ObjectiveC #compilers #ObjectOriented

  11. Moved instance, so time for a new #introduction!

    I'm Alex and I have a PDA problem.

    In 2018, after 16 years of using various #Psion portables, I decided to try my hand at developing hardware and software for my beloved Series 3c to help me with journalling and creative writing.

    6 years and repeated sidequests later, I've ended up doing a lot of research into the SIBO/EPOC16 platform, and done my best to document it when I can. I've also nudged former developers into open sourcing their old Psion apps.

    My current main projects are:

    • #PsiDrive, an #RP2040-based USB drive for SIBO SSDs.
    • Rewriting the Psion SIBO (16-bit 8086) C SDK, including updating the docs (with #AsciiDoc) and rewriting the original DOS tools as FOSS apps. I'm currently using #FreePascal to create a drop-in replacement for #CTRAN, the Psion OO C preprocessor. (I want to eventually write a new compiler targeting EPOC16. Eventually.)
    • Anything else that tickles my bouncy brain.

    Outside of #retrocomputing, I'm your common-or-garden British nerd. I'm a Linux user - mostly Arch, but I dabble with others. I also like a bit of #HaikuOS and I'm planning on giving #FreeBSD a go very soon.

    I used to be a senior computer monkey, specialising in on-prem SME infrastructure (I lament the loss of vSphere). Now I train others to become computer monkeys (for better or worse). As a result, sometimes you'll see me wrestling with old Cisco ASAs, Ubiquiti APs, or modded kit running #OpenWrt.

    Generally, I like making things do stuff, especially if it's stuff that the thing wasn't originally designed to do.

  12. So, after #ctran, what projects are afoot in the near future? Hardware!

    - A RAM upgrade for the #Psion 5mx.
    - A possible RAM upgrade for the 3mx (I have a hunch).
    - Possibly a new #PsiDrive board revision with fixes and a voltage booster.
    - Something not #retrocomputing at all! Gutting a Roberts internet radio and replacing the innards with an #ESP32 or #RaspberryPiPico W. (Because the BBC discontinued their ShoutCast streams last year.)

    I might also pick another SIBO C SDK tool to rewrite.

  13. Just tried compiling Wari, a game written in #Psion OO C. The project uses #Borland Make 3.6.

    Got it to compile first time with my SIBO SDK setup - all good!

    However... Borland Make uses 16-bit DPMI, and its extender won't load 32-bit DPMI binaries. If I pre-load the 32-bit extender, it won't load 16-bit DPMI binaries, so Make won't run!

    TL;DR: I can't use the new #ctran with Borland Make 3.6.

    Looks like I'll be converting that Makefile to GNU Make or a #TopSpeed project.

    #dos #dosbox

  14. After a little bit of fiddling around this morning, I've realised that the classes aren't in the order they come in the external files. In fact, I have no idea how they're ordered. I assume it's something to do with dependencies, but I can't see it.

    Like I said, it probably makes no difference - it's just a load of #defines. But I'd like to make it character-perfect at some point.

    I have other things to do today, but if I get a chance this evening I'll try using #ctran to compile something.