4K HP 67 Games rom attached for testing
|
10-31-2016, 07:36 AM
Post: #36
|
|||
|
|||
RE: 4K HP 67 Games rom attached for testing
(10-30-2016 11:33 PM)Jim Horn Wrote: The program was terribly useless as it was really, terribly slow. Of course, a '41CL would be lightning fast, eliminating that problem. A standard '41 already runs 3x as fast as the 67/97, and there are several things that can be done shorter and faster. But still... (10-30-2016 11:33 PM)Jim Horn Wrote: Some of the oddities (why EEX 1 instead of 10, etc.) were due to tricks in the '67's timing. They were done as they were faster, not more readable(!). I wonder if 1/10 s or less makes a difference when a routine runs for about 10 seconds. But you can also find "E" instead of "1" in some HP41 programs. #-) (10-30-2016 11:33 PM)Jim Horn Wrote: Since the '67 had a fixed number of registers, I put the index registers at the (known) top worked a stack down from there. The '41's reconfigurable memory would allow a stack to work up with the SIZE value being the only limit. Yes, that's an obvious choice which I have been thinking about. But this requires a better understanding of the program. ;-) (10-30-2016 11:33 PM)Jim Horn Wrote: As I recall, each function was encoded into a function stack as a two digit number. The INT(value/10) was the function value (each function had a distinct value to allow branching later); the units digit was a priority level - the higher the value, the higher priority which took precedence over the lower values. Ah, good, that's how I thought it would work. This priority check is done in step 064...064. The lowest level is 0, assigned to the "(" function. (10-30-2016 11:33 PM)Jim Horn Wrote: Dedicating an entire register to hold an operator stack value is terribly inefficient but that's all I was able to squeeze into 224 steps. A '41 ROM that has more room for code could consider doing binary packing a whole lot more efficiency. I think this would get way too slow. (10-30-2016 11:33 PM)Jim Horn Wrote: Ah, the days of spending hours and hours to save a millisecond or byte. It wasn't practical but was terrific mental exercise! Best wishes to all who wish to dig into such paleosoftware! Since my rather modified '67 went to a good home decades ago, I have nothing to run this on. Will have to check out the various simulations out there. A really good one was recently developed in this forum by "Panamatic". But now let me ask a few questions about your program: As already posted, I think that the (second) label B near the end of the program is the point where all routines stop and the result is displayed. Pressing [R/S] at this point will set flag 3 and thus simulate a new data entry, as mentioned in the instructions. Is this correct? As far as I can tell the CHS function requires this additional [R/S]. A simple [f][c] after a calculation does not change the sign of the result. At least it does not in my translated '41 program, only another [f][c] does it. Is this the intended behaviour? BTW, why did you use label A and B twice? There are other unused labels available, e.g. 8 and 9. Finally, could you say something about the use of flags 1 and 2? What are they used for? Dieter |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 2 Guest(s)