#ECOBJ update. FIXUPP records in OMF files can now be read! It's the bare minimum implementation for translating files, but it's good enough for me to see what's going on. I should now have enough information to work out how to replicate what Psion's ECOBJ.EXE does.

The latest update is here. The code is atrocious, but I'm nowhere near the final app yet. "Make it work, etc etc etc." https://codeberg.org/thelastpsion/ecobj/commit/f28f19ee647dbb4699d27aefcd9d48c938da0b11

I also found a few open source tools that can analyse OMF files. My challenge was to not look at the source code and only use their output as a guide. (I succeeded.) They are:

My next challenge is to work out how to store each record sensibly in memory. I can use #Pascal's TList type, dynamic arrays, and records (structs) to build out the structure. From there, I should be able to work out what moves where, and then generate new files.

This will require a lot of refactoring work. I also want to put most of the code in a class or two for portability - some of the code could easily be reused in other related projects, such as an assembler or a disassembler. Any future compiler will need to be able to build object files with the class information in the code segment. All of this work helps.

I think I said it was going to take me two weeks of work to complete. I think three is more realistic now. But I do need to get one with some $dayjob work this week, so Week 2 might end up being drawn out over January.

Cookie monster!

If anyone wants to see some incredibly poor #ObjectPascal, here's a link to #ecobj in its current form.

It's very much at the "work out how any of this works" stage. Expect the code to change radically!

https://codeberg.org/thelastpsion/ecobj

ecobj

This will become a tool to manipulate 16-bit OMF object files, moving the class descriptor data into the code segment. It will eventually be a drop-in replacement for the Psion SIBO C SDK's ECOBJ.EXE.

Codeberg.org

For the first time in ages, I've had a good afternoon writing code!

I've been working on #ecobj. I can now analyse six OMF record types (well, five and a bit) using some rough-and-ready Pascal. And I've started to get a picture of how the original ECOBJ.EXE moves the records around.

As far as I know, there are 10 record types that ECOBJ.EXE handles. So I'm over halfway there. Sort of.

Using the #TopSpeed Object Disassembler (TSDA) has really helped to make sure I'm heading in the right direction. #DOSBox makes this easy by letting me send the output from TSDA.EXE to a file, so I can view it on Linux.

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.

Sadly I have no time for a full #DecemberAdventure this year. However, I do think that a #TwixtmasAdventure of intense Pascal to get #ECOBJ working could be on the cards.

I would also like to know how many people I've made cringe by using the word "Twixtmas".

I've done a little more work on #ECOBJ over the past couple of weeks, but not much. Life has, unfortunately, got in the way of most of my retrocomputing fun.

But I'm pretty convinced that I could get something working by the end of the year. I should have some time over December.

It would be nice to get another SDK tool written.

#Psion #SIBOSDK