Post Reply 
67/97 card read bug on the HP41
08-05-2016, 06:31 AM
Post: #1
67/97 card read bug on the HP41
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?
Find all posts by this user
Quote this message in a reply
08-05-2016, 08:24 AM (This post was last modified: 08-05-2016 08:24 AM by Ángel Martin.)
Post: #2
RE: 67/97 card read bug on the HP41
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.

"To live or die by your own sword one must first learn to wield it aptly."
Find all posts by this user
Quote this message in a reply
09-14-2016, 05:33 AM
Post: #3
RE: 67/97 card read bug on the HP41
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.
Find all posts by this user
Quote this message in a reply
09-15-2016, 07:17 AM
Post: #4
RE: 67/97 card read bug on the HP41
(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.

"To live or die by your own sword one must first learn to wield it aptly."
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)