The ET-11967 Service Module - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html) +--- Forum: General Forum (/forum-4.html) +--- Thread: The ET-11967 Service Module (/thread-21805.html) |
The ET-11967 Service Module - ThomasF - 05-28-2024 06:46 PM Hi all, While looking at the Service Module (SM-1C), I raised some questions about the test of peripheral flags. The answer (that I had missed from the documentation) was the use of the ET-11967 FI-wired module. It is described in another post that "This ET-11967 module is a double memory module which fills both ports 3 & 4 address range and has FI line active". While trying to implement this module on the Pico board, I stumbled upon some questions while disassembling the code and trying to understand the inner workings of this module. In short - I have now successfully executed the IO service test on a real HP-41 with the Service Module loaded and the ET-11967 module emulated, and to get this to work I had to abandon the description above. Firstly, the FI-line is not just active, it is in reality a copy of the DATA line. I think (without having a module to test with), that the FI and DATA pins are just shorted in the module, so that any data on the DATA pin is copied to the FI line. This is how I implemented the ET-11967 in the Pico - just copy the DATA to the FI line when a Service Module is plugged in. Secondly I doubt that this is a "double memory module" - I belive it is only a single memory module only. While developing the code for the ET-11967 I tested it on a HP-41CV, and I could verify that the peripheral flag test worked ok, but the memory test failed - I just got "IO PORT TEST FAILED". Looking through the code, I found the test code and it loops 4 times, writing and reading at address 0x100, 0x140, 0x180 and 0x1C0 - which corresponds to the addresses of the 4 memory modules that fits in the calculator. And according to the ínstructions in the module manual, the Service Module should be in port 3, the ET-11967 in port 4, and a single memory module in both port 1 and 2. This made us belive that the ET-11967 is a double memory module, so that we have full memory in the calculator and the service module could test them all. I equipped a HP41C with no memory modules and the Pico (with Service Module and the ET-11967 emulated). Running the IO test resulted in "1,2,3,4, FAILED". WIth two memory modules inserted I got "3,4, FAILED". As expected, since I don't have any memory emulation in the Pico for this setup. But why did the HP41CV fail? It should have all the memory needed?!? Disassembling the test code revealed that there is a loop, which writes and reads from the adresses above (writes a value, reads it back and compare - if equal the memory exists). If the test fails - it will increment a counter, and after the test, this counter is tested against .... 1 !! So, for the test to work, the loop must fail once! I loaded my HP41C with three memory modules and executed the test again - and voila - "IO PORT TEST OK"! So, my interpretation of these results and tests shows that the ET-11967 is NOT a double memory module, but a single memory module with the FI and DATA pins connected. Is there anyone out there who have access to these two modules and could try the IO test (EEX) in a HP41CV? Or if someone have made a double memory module to try that with the service module (SM1C) in a 41C with two memory modules? My expectation in that case is that the test should work with only one memory module ... (but the test will fail if the DATA and FI are not connected). So, in summary, the description of the module should be that "This ET-11967 module is a single memory module which fills port 3 address range and has FI connected to DATA pin". If someone is interested I could provide traces from executing the IO test in a CV or C with 3 memory modules. Cheers, Thomas This is the code for the complete IO port test in Servioce Module SM-1C. It only checks the peripheral flags according to a pattern in register C, and then writes and read from 4 addresses, of which one (and one only) must fail, then reports the result. Code: ; Execute IO test (key EEX) RE: The ET-11967 Service Module - Didier Lachieze - 05-28-2024 07:31 PM (05-28-2024 06:46 PM)ThomasF Wrote: So, in summary, the description of the module should be that "This ET-11967 module is a single memory module which fills port 3 address range and has FI connected to DATA pin". Great deep dive and analysis of this service module ! Does this means that an ET-11967 Service Module could be built from a modified 82106A single memory module where B3 would be internally forced to 0 and DATA connected to FI? RE: The ET-11967 Service Module - ThomasF - 05-28-2024 08:25 PM (05-28-2024 07:31 PM)Didier Lachieze Wrote:(05-28-2024 06:46 PM)ThomasF Wrote: So, in summary, the description of the module should be that "This ET-11967 module is a single memory module which fills port 3 address range and has FI connected to DATA pin". Hi Didier, Yes, that is my conclusion, with the disclaimer that I have not been able to verify the connections since I have no module myself. But hopefully someone with a real ET-11967 could measure on these pins to verify this. Cheers, Thomas RE: The ET-11967 Service Module - ThomasF - 05-30-2024 04:54 PM Hi again, Curiosity wins sometimes - so I disassembled a single memory module, lifted the B3 pin, and made a shortcut between DATA and the FI pin. With two memory modules in port 1 and 2, my Pico with Service Module SM-1C in port 3 and the DIY "ET-11967" in port 4, I can now run the IO PORT TEST with success! There is no emulation of the ET-11967 in the Pico, it just hold the ROM for the Service Module at 0x4000. (05-28-2024 07:31 PM)Didier Lachieze Wrote: Does this means that an ET-11967 Service Module could be built from a modified 82106A single memory module where B3 would be internally forced to 0 and DATA connected to FI? So the answer should be yes, and very easy to do so (with no problem to restore the module again) ... Cheers, Thomas RE: The ET-11967 Service Module - Didier Lachieze - 05-30-2024 06:31 PM Great ! Thanks for checking. |