HP Forums
67/97 card read bug on the HP41 - 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: 67/97 card read bug on the HP41 (/thread-6654.html)



67/97 card read bug on the HP41 - hth - 08-05-2016 06:31 AM

I came across some comments in the Time module source code about the 67/97 card read bug. The Time module works around it by ensuring there are no null registers inside the alarm buffer.

Does anyone know more about it? Was it ever fixed? Why would 67/97 cards cause this effect, I suppose that 41 cards does not? Is it related to the translation process somehow?


RE: 67/97 card read bug on the HP41 - Ángel Martin - 08-05-2016 08:24 AM

If I recall correctly this is the reason why buffers should not have empty registers, or at least that their "last" register (footer) should not be zero. This you told me a few years ago, when I was working on the 41Z project - remember?

So I'd assume this is a limitation of the Card Reader, regardless of whether 67/97 cards or 41 cards are used... but this is just a conjecture.


RE: 67/97 card read bug on the HP41 - hth - 09-14-2016 05:33 AM

Just a follow up on this, I have still no idea what the 67/97 card reader bug is.

A buffer must have the last register as non-zero. This is because registers are allocated for programs by taking the next zero register after the permanent .END. If the last register of the last buffer is zero, it could be consumed for program memory. The routine that scans for the number of free registers available also checks the number of zero registers below .END.

It is a pity we do not have a comprehensive list of known bugs.


RE: 67/97 card read bug on the HP41 - Ángel Martin - 09-15-2016 07:17 AM

(09-14-2016 05:33 AM)hth Wrote:  A buffer must have the last register as non-zero. This is because registers are allocated for programs by taking the next zero register after the permanent .END. If the last register of the last buffer is zero, it could be consumed for program memory. The routine that scans for the number of free registers available also checks the number of zero registers below .END..

That makes a lot of sense, thanks for the clarification.