28 June, 2025

Ode to a very friendly cat and companion

Goodbye to another pair of furry friends

A picture of our cats on cushions.

Today, I mark the passing of another cat. This one (the ginger) came through our door many years ago to replace the last furry friend that passed away. He hid behind the couch for his first three or four weeks, mainly because his previous owners hadn't had time for him and he hadn't had a great first few years.

Since then, he's been our faithful companion. No doubt we'll get another one, but we can't replace this one. The other cat on the other cushion passed away last November, and I've finally got a post to remember him as well.

Farewell, you two.

01 December, 2024

Struggles of moving

I'm not where I was

When I last wrote in this blog, I was in a lovely place in New Zealand, called Christchurch. It sits about halfway down the east coast of the South Island and has had some exciting times, and indeed terrifying times. People live there, die there, and occasionally move from there. This is what I've done.

Why did I move?

In short, I needed to. The good wife was never going to stay where she had been born, and was really interested in "getting out of Dodge" and seeing other parts of the country. It took a fair while to find what we needed, but the move (aside from the move itself) has been a good one. The people here are friendlier than even Christchurch was, and this little place isn't anywhere near as big as Christchurch. There's even signs of modernity here—I'm on fibre, which makes the Internet much easier to access. At least for that, I've seen no real difference except for the provider I was using for the fibre.

What's coming next?

I don't honestly know; I guess that remains to be seen as we get this house set up more the way we need it to be. It's an older house, and its age is showing, even though everyone that comes through the door says it's absolutely lovely. However, we didn't just buy the house because of what it had. We bought the house partly because of where it was relative to amenities such as stores, doctors and other services. "Town" is five to ten minutes walk away, far less than the half-hour walking to the nearest mall; that was before the earthquakes Christchurch has had; now the "time to walk there" is up to fifty minutes by the next nearest way to get there without damaging wheelchairs. Where we are now, I only have to cross a railway line and I'm right there.

I'll continue to post content on a very sporadic basis on various things I've picked up or put down.

21 January, 2018

Simply put

Programming the Casio fx-9750gII

Everything should be made as simple as possible, but no simpler (Einstein)

Writing programs can be pretty rewarding, when everything works right the first time. It can be a complete and utter pain if you get something wrong, and can be even worse if you don't know the language you're supposed to be working in. Thankfully I think I'm finally getting my head around Casio BASIC.

Computer programs (and calculators too) spend 95% of their time waiting for user input. This is certainly true in a program I've been developing since before 2008. I've made several changes in it over the years, yet I'm still striking some of the same issues today that I did when I first started development.

There's bugs in my calculator!

One bug I had in my code relates to just how fast the calculator works, meaning that if I keep it too busy doing other stuff, it's got less time to take notice of something happening when I need it to. Casio BASIC has a function called GetKey that looks to see if a key's been pressed while it's running (that's important), and pass back the value. If it doesn't see that one's been pressed, then it'll simply return 0 and exit, and won't wait around until a key has actually been pressed. It only seems to wait for about a tenth of a second, though I'm not sure if the speed of the calculator matters.

This can have an impact if the program asks you to choose from a list of choices, and you've put the calculator into a busy loop so you can make it actually wait for a key to be pressed. There are a couple of ways to do this. In short, the loop you use should be really short, and shouldn't involve anything else except waiting for a key. Don't draw bits of the screen, then wait for a key, then redraw the screen, wait, etc. Just wait for a key and loop; if one doesn't turn up, go back to the beginning of the wait loop, which simply looks for a key.

I'd done exactly this in most of the rest of my code, but in this one function I'd forgotten that. I didn't click to what the problem was until I was developing the help functions. I ran the help program and was striking exactly the same issues that I'd struck back in my other routine, meaning that I'd made the same mistake.

Waiting Around

The bug I'd had worked a bit like this pseudocode:

LBL 0
DrawScreen() #Takes significant time to execute
GetKey->K
If K=1; Then Goto 9; IfEnd
If K=2; Then Goto 12; IfEnd
If K!=3; Then Goto 0; IfEnd
Lbl 9
...

Because I was including the DrawScreen in the wait cycle, the calculator was doing what I asked. It takes time to draw the screen contents on this calculator (sometimes on the order of a couple of seconds); it's certainly not a HP Prime or TI-84CE in that regard. Because of that, the calculator would wait for a tenth of a second, decide I hadn't pressed a key, then draw the screen again (taking perhaps a fifth of a second or so), then ask if I'd pressed a key, ad infinitum.

This was awkward, because the program was prompting for one of two values, but I was having real problems actually trying to select either value. It's never a good look when the user has to hammer the key they want just to get the calculator to take notice. Put simply, I was expecting the calculator to accept a key while it spent more time (possibly five times as long) to draw the screen than it spent waiting for a key. A calculator's often single-threaded, so can't do multiple things at the same time.

Apply flyspray

The way I eventually fixed the code was to add a label directly before the GetKey function, and jump to that if I hadn't matched anything I wanted:

LBL 0
DrawScreen() #Takes significant time to execute
LBL 1
GetKey->K
If K=1; Then Goto 9; IfEnd #Jump to first function
If K=2; Then Goto 12; IfEnd #Jump to second function
If K!=3; Then Goto 1; IfEnd #Jump to beginning
Lbl 9
...

This sped up the calculator's response to me, because the only thing it was doing was either:

  • Asking what key had been pressed, and returning 0 if none turned up after 0.1 seconds
  • Storing the returned value
  • Checking the value against a list of other values
  • Jumping to a place
and it wasn't spending time repeatedly drawing the screen.

Conclusion

One thing I learned a while ago from a programming manual, though I can't remember which one: if you find and fix a bug in one place, go through the rest of the code to see where else that bug appears, and fix them all at the same time. This works best for small projects that are only written by one or a few people, but really really pays off for large projects too. The final moral of the story is, don't make the calculator do more than it has to. The battery life of your calculator will thank you for it, especially on bigger calculators such as the TI-89 Titanium or Casio fx-9750gII.

10 June, 2017

Minecraft World Of Colour update (1.12)

A Colourful Update

This'll be just a really short blogpost about a game I play a bit. I apologise that it's not up to my usual standard of post, but I can't think how to improve it yet. I've been watching the features gradually trickle in for this particular update while the snapshots rolled in, and I've got a final summation. Here's my rough off-the-cuff scores for 1.12:

Item Score
Parrots: 4/10
Colour Palette: 7/10
Glazed Terracotta: 4/10
Coloured Beds: 7/10
Bouncy beds: 1/10
Concrete: 5/10
Illagers: 3/10
Advancements: 2/10
Noteblocks: 6/10
Text-to-speech: 1/10
Toolbar saving: 4/10
Recipe book: 10/10 (I couldn't give 11!)
Exciting: 0/10
Total Score for 1.12: 54/130 (41%)

Mobs

They finally added parrots. Birds have been seen in mods before, but haven't turned up in the main minecraft until now. They're brightly coloured, come in five flavours, can be tamed with seed (NO, NOT COOKIES!!), and they dance when you put on a record. They hop off your shoulder when you jump, can't be fed cookies or you'll get dead parrots. They also appear to fly very very slowly, which puzzles me, as I've seen birds fly pretty fast in the real world.

Another Illager mob has also been added, the Illusioner. These are going to be a complete and utter PAIN to deal with for those of us with reflexes dulled by being older than 17. I'm already barely coping with updated skeletons. These might be a bit of a challenge for the CoD'ers and CounterStrikers amongst us.

Colours

An update to the game's colour palette affects sheep, glass, wool, coloured shulker boxes and the newly-minted concrete and beds. It increases saturation in most cases except for uncoloured shulker boxes (strange, that). I suspect there'll be people yearning for a slightly more muted palette, and maybe patching it back in via resource packs.

New/Modified blocks

Concrete blocks (and concrete powder) would have been boring if it weren't for the colours. They'll add to the available palette for creative mode, or to dress up builds with pure colours. It's also not flammable, unlike wool.

Plain colours are all very well, but how about the crazy blocks that are Glazed Terracotta? Basically a rename of hardened clay, the colours have been completely swapped out for wild 1970's patterns. I'm not sure about these blocks yet, they're a bit visually "loud" for me. I guess they'll add a little more interest to builds.

Coloured Beds. Haven't we all been waiting for this! They've even made them bouncy! Say wha?? Who bounces on their bed if they're over 8 anyhow? These are a nice addition. More's the pity they couldn't have coloured the sheet/pillows too. They've also made it so you can't just use three wools of any colour to build the bed. Now you have to find two or three sheep all of the same colours.

Additional Noteblocks. Now you can get five extra "instruments" (flute, guitar, bell, xylophone, glockenspiel) you can add to your musical creations. Again, not a big thing though it will slightly improve the quality of some music pieces that have been turned into noteblock tunes.

Interface modifications

They've updated the achievements screen and renamed them to Advancements. This screen has also had a reorganise into categories. I'm still bemused about this achievements screen rework. A nice feature for absolutely brand new players (the help boxes) can get rapidly palling the 14th time you see it if you're fond of starting multiple new worlds. Minecraft has also added the Narrator which reads out the text to the achievements you get throughout the game. This has the same fault that most text-to-speech engines have, that of not sounding natural enough. It's functional, but I'd not have bothered unless you need the functionality, i.e. you're "legally" blind but can sort of see the screen and just need a little help.

If you run purely creative mode (i.e. you're too wimpy to fight mobs and terrain for your resources) then Toolbar Saving will be a nice addition to the creative mode tools for building. This amounts to taking your hotbar and its contents and saving it aside in one of ten slots for later recall.

Have you ever forgotten how to build stuff like item frames, or redstone comparators? A new addition to the crafting screen now includes a button which opens a recipe book. This is by far my most liked update of the crafting screen. I've been waiting for an update like this, about the only thing I don't like is that you don't get all recipes by default but you work through the game getting them. It appears to be a rework of the crafting from MCPE/Console, and works well at least for me. I'm just waiting for resource packs to catch up with the button on the crafting interface. It's made a couple of minecraft recipe books somewhat irrelevant as a result though.

Finally...

This is a welcome update with new mobs, interface adjustments, colours and a recipe book. However, this isn't an exciting release. It seriously isn't, at least not for me. The best bit was the inventory recipe book. Now all they need to do is to include an onscreen map.

03 December, 2016

Slightly less poor brother and a distant relative

It's been eight years

First, I must mention that much like this article states, I take a long time to write articles for the blog. This one took a particularly long time before I was happy with it.

In a previous post, I described a purchase I'd recently gained. At that time, I compared it to the fx-82MS and Canon F-804P. I won't be reiterating that here, as I've said what I needed to in that post. Instead, I'd like to describe another recent purchase, the Casio fx-9750GII. It's a small upgrade from the G+, having more memory (about 62,800 bytes) and a slightly reworked OS and menu screen. It additionally features nearly 2,900 functions instead of about 900 for the G+. Those weren't the main reason I bought the calculator though. They're nice, but I can do something with this calculator I couldn't do with the G+. I can connect it to the computer with just a USB cable and some Casio software. This means I can create programs inside the Casio interface on the computer without pecking my way through keys on the calculator keyboard. That speeds things up dramatically for me.

USB support has become ubiquitous among more powerful calculators such as the HP stable (HP-39Gii/40GS/50G and others) and Texas Instruments (TI-84 Plus, TI-89 Titanium), and the same is also true for the Casio fx-9750GII/9860GII and equivalents. That allows me to connect it to my computer without any weird expensive bits of kit such as the FA-122, which was an after-market purchase of another US $37.95 or thereabouts. I originally saw this cable cost far more ($139 in 2008 dollars), so I never purchased it. In addition, the FA122's a serial connection, useless for most modern computers without serial ports.

USB capability makes things far easier because most computers have USB ports these days. Of course you require software on the PC side to exchange data with the calculator, but that's downloadable from Casio. The only remaining issue is that the ports are usually USB 1.1 speed, not USB 3. Even considering that, transfer speeds are still considerably faster than the original 9,600 baud connection through the FA-122. I also can't say if the drivers will play nice with Windows 10, the new kid on the block.

Time to try it out

As you can imagine, I've been having a bit of a play. I've basically duplicated the Grocery program I was using on the G+ , and it seems to work well enough. All the features that were in the previous calculator are here, though they've been slightly tweaked and added to. I now have full lower-case support, and I even have common unit conversions! I noticed that screen writes happen quite a bit faster, this could be due to the fact the calculator uses a SuperH SH-4a instead of the SH-3.

The fx-9750GII and fx-9860GII each come in two versions, the earlier one (SH3) and the later version (SH4a) providing some improvements from the Casio Prizm range. However, prepare to be disappointed if you want all the features of a fx-9860GII in your fx-9750GII, because they're not here. There's no backlight, though this is not much of a loss for me as none of my other calculators have one either. There's no "pretty-print" feature with fraction bars, superscripted exponents and other things. Results are represented in decimal form (3.142857) instead of "Math" mode (22/7). For fraction marks, you have what fx-82MS uses (which looks a bit like a little right-angle bracket), and carets (^) for exponents. You also can't use compiled applications (known as add-ins), there is no spreadsheet, and no eActivity functionality. These issues aren't going to kill this calculator, but these are some of the reasons why Casio released this calculator for considerably less cost than its big brother.

One other feature I found missing from my calculator is the inability to back up the existing flash image to a file. If you want to upgrade the flash—and you can—you'll have to be prepared to lose what's there already. In earlier BIOS versions (not 2.04.xxxx) I could have backed up the flash image using a program called fxRemote, but it seems that Casio have now removed that ability, and the same issue also applies to the latest fx-9860GII's BIOS code. Casio no longer officially provide BIOS updates for the 9750GII, so if you decide you want to update the BIOS, you'll end up taking a chance. It's possible to upgrade the BIOS, though the 9750GII doesn't have any updates beyond 2.04. Some people that have attempted upgrading have ended up bricking their calculators, making the calculator almost useless in the process. I did stumble across the original version I had of the firmware for the fx9750GII, so I at least have a backup.

EDIT: it turns out that Casio made an update after all, to change some things around for support of "Exam mode". They basically traded off vector math (and possibly a couple of other things) for Exam mode, which locks the calculator down to a certain set of functions for a specified length of time to make sure nobody can cheat. I'm not entirely convinced this was a good thing, however, I'm not the one making the decisions higher up in the Education boards. So, the latest (to date for Sept 2017 at least) BIOS version seems to be 2.09 for the non-French versions, and a 2.05-something version for the French variants.

Firmware upgrade...

I decided I'd take a bit of a gamble and try to upgrade the BIOS so it runs a fx-9860GII's flash update. The instructions are relatively simple, all that's needed is the most recent version of a flash image for a fx-9860GII, a USB cable—preferably the one that comes with the calculator—and the fxRemote program. As there are actually two files I could have used, I had to get the version for the SH4a, and not the SH3. I found the relevant files, fired up fxRemote and nervously watched as figures scrolled up the screen. Finally the job was done, and I had extra functionality in my calculator after an initial hiccup. I now reckon this Casio stacks up better than it originally did against the HP-50G even though the HP most definitely still has the edge, and for a much cheaper price than I would have ordinarily paid even considering I bought the calculator second-hand.

I also reverted to the fx-9750GII's image, partly to see if it could be done—it worked perfectly okay. So I can go back and forth between versions, but I'll stick with the fx-9860GII's image, as it gets me more functionality. And I'll stick to the version that retains the vector math. I don't need to take this calculator to an exam, so I can decide what I want to have on the calculator.

Grocery Program

The fx-9750GII has also allowed me to improve the grocery program I was working on. It might seem counterintuitive to write a program to handle what most of us take for granted, using our four-bangers (nickname for simple four-function calculators) with memory. However, this program has a little more beef to it, as I can break down the total grocery bill into five broad categories. I can also show how much tax I'll be paying when I pay over my cash. That rate is alterable, of course. About the only thing I've had to worry about has been differences between the newer and the older calculators related to new keywords not present on the original G+. Thankfully those have been minor, and have mainly been because of how the FA-124 program tokenises and copies programs between the calculator and the computer.

I also added support for five temporary values (usually used for price-per-kg figures to be used later) also displayed on the same screen. As a result, the screen now looks a little different than I first described back in the original article. Due to the ease with which I can transfer programs, I can also upload the program to hosting sites, so my simple grocery program is now up on Casiopeia.net. I go into more detail in this article.

Forensic result

Like the 9750g+, the 9750gII also has a similar internal range of digits supported (15) and the forensic result for asin(acos(atan(tan(cos(sin(9)))))), the 9750gII comes up with 8.999999998, or 8.99999999759468 if we extend it out to the calculator's full internal range. That's not much different from the other calculators I tested back in my previous post. This calculation here (sin 60 - 0.866025403) * 1E10) gives us 7.84439, just like the 9750g+.

Concluding remarks

I think I did really well for the money I paid. I got a calculator that compared favourably against the previous generation. I gained the ability to download programs to the calculator and back up the calculator's data files to the computer, and I paid no more than I did for the previous calculator. A gamble paid off when I was successfully able to get the calculator to behave like its big brother the fx-9860GII, although I've yet to find out if there are any disadvantages aside from the missing light. There may be some unseen results I don't know about yet. Lastly, I have a reliable backup for when my previous calculator eventually dies, although I'm not expecting it to for quite some time.

I'm happy.

I did find one strange thing though—I went to register the calculator at the official Casio website, but I struck a problem. Where it wanted me to enter in serial numbers, and even told me where to find them, there's no serial numbers to be found on the back of this calculator. That's not very useful for me. I don't know whether this version of the calculator was ever released with serial numbers, but at least the one I have, has no numbers.

Extra storage

The fx-9860GII SD adds a SD card socket to the many things the calculator already supports. You can use the SD card to store files and add-ons, though to use them in the calculator you still have to copy them to the calculator memory, as the calculator won't execute programs directly from the SD card. Thankfully the calculator isn't limited to 2GB like the default HP-50G, support for cards up to 32GB is now present in the most recent BIOS images.

Casio Emulation

A free standalone binary was provided to emulate the original fx-9860G-SD, but you won't be able to upgrade it to the current SH-3 based BIOS, the emulator simply won't support that. The emulator also doesn't import add-ins, making it only usable for BASIC files (*.g1m) and the supplied addins (*.g1e). Additionally, you've got to source the emulator. If you want an emulator that covers the later model, you'll need to purchase a yearly subscription for the emulator directly from Casio. It's up to you to decide whether you think having the emulated version is worth the cost.

“But wait, there's more...”

Old line. I just had to use it. Anyhow, I also bought a Hewlett-Packard HP-50G a little while ago for a significant discount off the retail price. I haven't evaluated this calculator properly, because it's a complex beast for someone still used to Casio calculators. It does everything the fx-9860GII does, and far more. It's been compared favourably with a TI-89 Titanium, whereas the fx-9860GII is compared more against the TI-84+. Engineers have loved HP products for generations, and while the 50G doesn't share all the strengths of the HP-48GX and relatives, it brings strengths of its own to the HP collection.

  • For starters, it's faster due to the ARM CPU. It's normally clocked at 75MHz, but can be clocked higher for a resulting increase in battery consumption. It's still emulating a Saturn environment though, so you won't get a true 75MHz worth of performance, more a somewhat-three-to-ten-times improvement over the HP-48GX.
  • The screen is easier to read even though it's still greyscale, and the resolution has been slightly increased (131x80). It's certainly not colour, but it's not bad.
  • Like other modern calculators, it includes the ability to use USB to install applications.
  • It has a SD slot for increased storage space. I made sure I bought a 2GB card specifically for the calculator, because there is a 2GB limitation on the size of the SD card. The filer can access all the files, but doesn't report the size of the card properly if it is 2GB and not merely 1GB. The only way to get support for more recent cards up to 32Gb is to install newRPL, which is still being developed and isn't as featureful, though it is a heck of a lot faster. It's also considered very much alpha software.
  • It can communicate with some older generation HP calculators and peripherals over infrared, and even retains a serial connector.
  • It's the most powerful calculator in the HP stable except for the Prime as of 2015.
  • It includes a CAS (Computer Algebra System). This CAS disallows the calculator from being used on a few rare exams that disallow calculators with a CAS (or in some cases with graphing capability).
  • It uses 4 standard AAA batteries, instead of the 3 batteries that previous HP calculators used. This allows the calculator to last longer on a set of batteries.
  • If you're at the computer a lot, the calculator will even run fine plugged into the USB cable, though it simply doesn't use battery power while the USB cable's plugged in, nor will it charge the batteries.
  • Equation libraries previously provided externally now come standard with the calculator, so does a periodic table.
  • There's collectively 512k of memory available for calculations, helping out in large calculations. You can't create something that's much bigger than about 200k though as the memory space is divided between ports.
  • Sound! Yes, this calculator has a speaker, just like the HP-41CX. Don't ask for MP3, but you will get tones.
  • It claims 2,300 functions, but if you wish to create other things, you can happily synthesise more out of the existing ones, or simply write your own using UserRPL/SysRPL. Do read the Advanced User's Reference commonly referred to as the AUR. It describes just about any UserRPL command you can use.
  • The functions provided in RPL amount to a stack-based programming language with a lot of strengths, if you can get your head around RPL and working with a stack. It's been compared somewhat to FORTH, and is definitely not like BASIC though many keywords can be recognised from other programming languages.

That's just a sampling of the features this calculator has.

What about RPN?

Yes, the HP-50G still has RPN (in the form of RPL), and indeed relies on it for the CAS mode. However, HP included an Algebraic mode for those people who just can't stand to be without it, and for whom RPN makes about as much sense as a fish riding a bicycle. This isn't the most intuitive mode to use, and it's a reasonable assumption that to use this calculator well, you'll need to learn RPL. Considering that RPN has a fixed stack size (four or eight elements), RPL is a welcome boost, as the stack size is only limited by available memory.

Thankfully, the calculator provides menus to navigate the available commands, and provides a complete catalogue of functions just as earlier RPL machines (28S, 41C etc) did. The available manuals also describe these commands if you need to look up how to use them. You may also need to learn UserRPL or SysRPL to create functions or programs that aren't already part of the 2,300 functions of the calculator. A lot of that information is in the Advanced User Reference, or AUR. An introduction to most of the common commands is in the User Manual, and the User Guide expands upon some of that information.

The manuals—regrettably for HP—reportedly aren't up to the quality of the manuals provided with the HP-48GX family, or even the HP-49. However, it will bring you up to speed if you're good at reading. There are forums where HP owners/collectors gather to discuss various models and programs running on them, and are considerably busier than the English casiopeia forums where Casio owners can gather. If you feel like a more complete picture, earlier manuals for the HP-48GX would be considered the pinnacle of reference manuals.

Because the main core of the calculator executes on a Saturn code emulator this opens the calculator up to reusing code from earlier platforms, as much of it will also work on the HP-50G perhaps with slight modifications. People can also code applications in the native ARM instruction set if they need the full speed of the CPU. However, we're still comparing apples to ocelots when saying one's better than the other. If you can live with waiting a second or two for your results, then running the code on the Saturn emulation won't make much of an effect and will save you from having to recode. But if you need speed, running code natively on the ARM platform may well reap rewards especially if your problem is a good fit for the ARM platform. You will have to source a GCC toolkit for HP's ARM CPU, and install a helper application so ARM code will run natively. Or, you could possibly use the tools provided on the calculator already, but you most certainly have to know what you're doing. This is after all a calculator aimed somewhat at the professional.

HP-50G storage and file access

Of course, there's the small issue of getting stuff onto and off the calculator from the computer. Thankfully, the HP makes this relatively easy, but it's easier if you happen to have a SD card reader installed in your computer, that way you can simply put files onto the SD card, remove the card from the computer, and insert it into the HP-50G. The file browser on the HP-50G can then be used to source the file you need off the SD card. I've installed several useful applications this way.

There's one wrinkle though. The HP-50G's filer can create subdirectories within the HOME hierarchy, but can't create subdirectories anywhere else such as the SD card, even though it can access subdirectories on the SD card. This is a limitation of the HP-50G, so you'd have to resort to using the computer instead. Under Linux, copying files to and from the SD card works much like a FAT floppy disk, don't forget to umount the SD card before putting it back into the HP-50G. One other limitation with the HP-50G is the lack of support for SD cards larger than 2Gb unless you install the newRPL environment mentioned earlier. If you don't have either a SD card reader or a SD card, then you're stuck with using a USB cable and HP's Connection Kit software. Accessing HP-50G files from Linux can be done using ckermit (the equivalent of the HP Connection Kit), as long as you've got the HP-50G connected to the computer through the USB cable. Don't forget to start the Kermit server on the calculator when accessing it with Linux, not the Xmodem server that the HP Connect software will ask you to use.

One other thing I discovered with applications on the SD card is that I can execute programs from the SD card, but they will get copied into the main memory first, and removed from the main memory when the program finishes.

HP-50G emulation

Like the Casio fx-9860 calculator, there's also a Windows emulator for the HP-50G. It can be found if you look really hard for it. The BIOS version string shows "HP50-C Revision 2.16", instead of the 2.15 revision currently available in real HP-50G calculators. It does have one puzzling omission—there's no support for libraries beyond the three supplied in the BIOS image. You cannot write to Port 2 whatsoever. I also can't find any obvious support for Port 3 (the SD card folder). Other Windows-based emulators supporting the Saturn emulation utilise the EMU48 emulator made by Christoph Gießelink, which doesn't allow you to emulate native ARM binaries, but is fine for everything that's meant to run on the Saturn-based processor. Again, there's no obvious support for a virtual (or real) SD card. I'm not sure what the latest version of EMU48 is, though the last time I edited this article, 1.59 had just been uploaded and had slightly reworked the Saturn emulation environment even though the version still doesn't support running ARM code directly.

Linux is also lucky enough to have a HP-49G+/50G emulator called x49gp, which does support the native ARM instruction set. It also supports the installation and execution of further libraries, and will work happily with a virtual SD file. However, the one lack of x49gp is that it won't connect to existing HP-50G calculators connected to the computer through the USB cable. The only way to get files into and out of the x49gp image is to use the simulated SD card, which is a file you can mount using the loopback device. Just don't have the filesystem mounted while x49gp is accessing it. x49gp has been around a while, and doesn't appear to be recently updated.

Conclusions

I don't see me buying any further calculators unless the fx9750s and the HP-50G all die, and I'm happy with what I bought. There's no doubt that I'm never going to use them to their full capability, but then these days, who does? I am relatively happy with what I'm using the fx9750GII for, and I love the feel of the keys on the HP-50G. It sounds crazy, but they remind me of the very first HP-34C I had, more than 20 years ago. I'm probably never going to buy the HP Prime, as the only real advantage I would have gained would have been the speed of graphing, which I never used anyhow. And I don't need colour for anything else I've been using the calculator for. I don't even need the touchscreen!

And now, I can finally post this article, vaguely piqued to know I haven't covered everything possible, and somewhat annoyed it's taken this long to post it. But, for what it's worth, I'm done. Again.