HP 35s Checksum explained
|
02-14-2015, 08:38 AM
(This post was last modified: 02-14-2015 08:41 AM by Tugdual.)
Post: #26
|
|||
|
|||
RE: HP 35s Checksum explained
There is one more thing I wanted to share regarding memory management. I mentioned earlier in this thread that I observed the memory was rearranged in some circumstances and I found this was related to 2 possible events: removing on EQN or earsing all EQN.
Let's see what happens... We will be using simple program blocks that I will call PA for Code: LBL A Case 0: Code:
Code: LBL A -> 7991 Call EQN and then CLEAR 3 (EQN) or simply create a new EQN and delete it. Check again the checksums Code: PA -> 7991 Unfortunately this doesn't really help because we still depend on pointers. For example if you do this:
You end up with the same code as case 0 but the entry of literals was reversed and therefore pointers are swapped. Since pointer value is part of checksum calculation, you will end up with different checksums. Code: LBL A -> 7A1D The only correct way would be to ignore pointer and only include the literal string value (which is the case, it is included). As I said this is a major design flaw, I don't see a way to produce a memory independent checksum with this current design. There is still one mystery, that is the actual calculation of checksum for the literals and EQN used in the code. I couldn't figure out exactly how this is calculated but I'm not really keen about spending time on this as it would be pretty useless. |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 1 Guest(s)