I made some major discoveries almost all by myself.
I have a fast, late 1983 im6100A with 8Mhz, hence the delicate timing especially for the keys. Confirmed on the photo I posted here.
I have re-checked the specs for the RAM cartridge. According the seller, it has 4 RAM chips a 4 bits. So 16 bits. I previously was sure, that the 16 or 14 bits are packed into 12 bits as this is possible (see the previous post) and the CPU is 12 bits. According my manual the bus is 16 bits as well. The packing and word order is still not completely understood. The condition bit, digit 1 (.WENN/IF) of the 6 digit code is stored at 105, I found 2 years ago when finding the code for a printout. I recently found code for the other digits.
Digit 2, the instruction is maybe stored at 133. Digits 3-5, the functional unit is maybe stored at 132, 104 and 103. And the complete word/address digits 3-6 is maybe stored at 106.
The cartridge has another larger RAM and maybe firmware. So some calculations, packing, CRC and syntax check might be done there. A full emulation would be then very hard to impossible without having that ROM.
The ROM 200-377 is mapped to field 2. This is confirmed with a logging including field changing instructions. All other ROM is in field 0. I found very late, that I have RAM in 200-377 as well and the RAM test will overwrite it.
Today I have seen for the first time RAM being written there.
The ROM 200-377 is only used for copying code into RAM at 44. I found these 4 “tables” long ago. 2 sharing the source 200 and 250 with different length. So that’s why the tables were not copied when the RAM test deleting them and I also haven’t noticed that as the ROM is not regularly accessed there. The matrix for the functions F0-F7 starting at 63 must be loaded later, otherwise the long tables at 44 would overwrite them.
IOT 6400 is not a timer (but for the key matrix) and at 154 is not a lifebit. I do have a lifebit but not there.
The RAM is not that simple. A single cell is for different purposes. 10-13 not having just the octal values for the LCD. There are also the usual Auto index registers and also other values are stored here. There are 4 IOTs 6410-6413 pushing the values to the LCD cells. The RAM is self-modifying and destructive so this is very hard to track. Parts of the RAM also seems shifted.
I previously found the code copied to 172-177. This is for printing often used characters like 0 ,LF ,CR. By checking the code, I found earlier values stored at around 162-171 as well. I assume there to be a printer buffer. But might also serve for other storage.
I found a key buffer. This amount is included in the tables 62 and stored at 43. 7773 would allow 5 keys to have a full sequence.
Most of the hardware emulation is still not working. I found 2 more IOTs yesterday. Hard to find as some 6xxx are addresses, others values. The code has many pointers, values, and constructed-JMP tables. Even the key codes haven’t been found yet. I might have found some today, but need more checks later.