|Re: MCODE: Where these last posts are heading: A function called "NSG"|
Message #6 Posted by Diego Diaz on 8 Jan 2010, 9:04 p.m.,
in response to message #5 by Geir Isene
Hi Geir, and very happy new year!
Seem like this one is on my side of the fence... :-)
Originally, the control word at H'4100 was designed to behave in two different ways, depending on whether it swaps RAM or ROM blocks.
RAM Blocks are switched "on the fly" during Phi1 pluse #32 of the cycle inmediately *following* the WROM (H'040) instruction.
ROM Blocks are switched after power cyclig the HP-41. This is intentional, as a way to avoid situations in which the iddle ROM block can be loaded with image(s) in address(es) that may conflict with phisical ROM(s)
E.g. you have your card reader in place and have a configuration into ROM block 1 that (consequently) leaves page #E free. However, you may have page #E loaded with any other ROM image into ROM block 2. If you're allowed to swap ROM blocks on the fly your calc will crash...
I may take a more detailed look if needed but, a first glance, it looks like if you need to swap ROM's if won't work within a program. On the other hand if the requirements for HGETA are only RAM swapping then I think that a simple NOP (H'000) after the WRT (H'040) should be enough.
Hope this helps.
Best wishes from the Canary Islands.