I spend a night disassembling the code. The processor itself is a pretty simple 6800 variant, but the code is written in a rather special way, making it not possible to use an automatic disassembling tool all the way. Here is a taste of it:
And sub_F66E looks like this. It is an address table jump handler. The instruction SUBB 0,Y; SBCA #0; subtracts Y from D, here Y is [$8054]
In other words, curiously, the assembly equivalent of a switch statement is seeking backwards for the target address.
The jump is performed thru stack. The target destination seems to be 1 byte ahead of what the disassembly seems to be.
Here’s how I found it out: The Error handler has this jump table associated with it. After jumping the hardcoded ASCII string is pushed to the display.
So far have just started working on the disassembly. I think not many people are still interested in the TCAD display RS-232 protocol (long obsolete). So I’ll probably stop here for now.
I always held the highest respect to the forerunners of electronics in the 80s and earlier: they managed to produce a myriad of circuitry crafts with extremely limited access to documentation and other resources. It was an era when the community culture is highly cherished and established mainly through magazines and books. IEEE, being one of the leaders of science & engineering communities, had been releasing bounded volumes about specific topics for quite a few decades. These bounded volumes are known as the “IEEE Press Selected Reprint Series”.
The objective of this post is to make an unofficial catalog of those books. The content will also be listed for easy indexing.
Note that, despite all the historic and aesthetic value about them, these releases have been totally obsolete for too long. If you’re a student like me, do not waste your time reading them – go for something newer instead.
If possible, I really want to make this into a wiki for easier indexing. IEEE must have published a huge amount of these books, but there is not much information on the internet.
16C is still extremely buggy, the decimal mode is almost unusable, probably something to do with ALU mode switching; 15C doesn’t work at all because the 12C+ firmware doesn’t support paging. 10C and 11C should work with no problem.
Notice: The following sequence only works for REV2 (with rev.2 written on the back plate). It will not work on a more commonly seen REV 1, which I don’t possess yet. It should work in a similar way, but I don’t think REV 1 allows flash access without forced erasing, which deletes the nut emulator.
How to (12C+ rev2):
Extract RAW Nut Processor ROM binary file from 10C or 11C.
The original ROM file is 12-bit per word, convert it to 16-bit big-endian binary. (You should look for certain ARCHIVEs of the nonpareil emulator for the ROM file)
I received this 9100B in Sep. 2021. It came in very good cosmetic condition, but didn’t do anything when plugged in: Not even the indicator lights. With the help of the internet, I’ve successfully identified a few problems in the power supply. I have also found some core-memory circuit malfunctioning that haven’t been encountered before. As a return, I’m now writing this post to share my diagnosis process and some over-saturated photos.
It’s too late for today, so the program is untested. I’ll probably test it on my calc the other day when I got more time to waste.
In short, this calculator is extremely limited. Hats off to the contributors at https://algos-casiofx92.com/; you guys are genius.
Note: Access X&Y registers with “Aller a x:y”
The program space is rather limited. Instead of doing I/O the way I’m doing it (by using two registers as the “streams”), you can modify the program to redirect the I/O functions to “Demander valeur” and “Afficher result”. In that case the maximum BF program length is 16*5=80 steps.