Overcome the STO-bug - Hewlett Packard
This is a discussion on Overcome the STO-bug - Hewlett Packard ; Hello,
finally Cyrille words make sense to me ;-)
This did work manually for me (by modifying the RAM in the emulator
while the program was running) and could be a way to bypass the STO-
bug:
Change the hash ...
-
Overcome the STO-bug
Hello,
finally Cyrille words make sense to me ;-)
This did work manually for me (by modifying the RAM in the emulator
while the program was running) and could be a way to bypass the STO-
bug:
Change the hash table of the key libs at start-up and redirect it to a
ROMPTR call of your choice. Now if a key is pressed the changed hash
table will be used.
0. The Sytem Outer Loop reads an evaluates key strokes. When a key is
pressed the modified hash table of the key libs will be used. Now the
following will happen, if a key is pressed:
1. The redirected ROMPTR call through the modified hash table restores
the default hash table of the key-lib.
2. evaluates the pressed key ( this ROMPTR must handle possible
errors, how about the command line ? )
3. the redirected ROMPTR program is in the return stack, so after
evaluation of the key press I still have controll with my ROMPTR
4. switch the original hash tables of the key libs back to the
modified versions, this will be done at every key stroke to ensure
that they aren´t overwritten be the values of the STO-bug.
5. The SOL waits for the next key stroke.
Of course this has to be done in ML (and might only be possible form
there). Exchanging the tables in ML is *very* fast, so it will have no
noticable speed penalty. For speed enhancement the adresses that lead
to the alternative hash tables will be saved in a lam at the lowest
lam possible, this is always directly behind the DOLPENV. So it is
assured that it won´t interfere with the lams used by the system. But
if the lib is in a port > 0 I can store the ACPTR that lead to
alternative hash tables in RAM ( at SAUV_REGISTR) so that I don´t need
the time to calculate the ACPTR at each key press. I only need to
recalculate the ACPTR addresses if the content of the port the lib is
stored in changes.
Now, having the above said in a program, this will circumvent the
infamous STO-bug. But writing this program will be a little bit
tricky, especially for running in a port > 0 because the debugger of
debug4x only works with port 0.
Of course this program should not run if ML development is done
directly on the calc, because SAUV_REGISTR is used by the ML DBUG
routine But this is surly not the normal usage of the calc.
This will allow true stack replacements and true translation of all
messages to another language regardless of what internal or external
program is started (of course this is only true if this program does
not change the hash table :-).
Seems like I won´t get much sleep over the next few weeks. Also I not
sure (at the moment, haven´t tried so far) how I create the hxs-string
which will become the alternative hash table. RPL.S (available from
hpcalc.org) gives some clues but a detailed explantion would be most
welcome.
(Gosh, I don´t think I got all tenses right in this post, but I hope
it is understandable ;-)
Greetings
Andreas
http://www.software49g.gmxhome.de
-
Re: Overcome the STO-bug
Hello to those who might be interested in the topic,
> how I create the hxs-string
> which will become the alternative hash table.
It is possible to create this string with debug4x (once you figured
out how the tables inside the lib are ordered and how to address them)
meaning that the alternative table is calculated and created by the
compiler. This of course means, that splitting the lib on the calc and
rebuilding it will surly cause problems, especialy if the ROMPTRs of
this lib are changed.
Greetings
Andreas
http://www.software49g.gmxhome.de
-
Re: Overcome the STO-bug
"Andreas Möller" wrote in message
news:1173892344.968291.54910@y66g2000hsf.googlegro ups.com...
X
Now, having the above said in a program, this will circumvent the
infamous STO-bug. But writing this program will be a little bit
tricky, especially for running in a port > 0 because the debugger of
debug4x only works with port 0.
X
Avenard once helped me to create FinLib49
which translates error messages into Finnish
it should always be at port 0
Veli-Pekka
PS: Sorry for late posts, but be patient I'm catching up
AND
rejecting about 99% of the interesting stuff...
-
Re: Overcome the STO-bug
> Avenard once helped me to create FinLib49
> which translates error messages into Finnish
> it should always be at port 0
And I told you at that time that your FinLib49 is affected by the
infamous STO-bug as well. You can easily check it again by storing
something in a port. After that all alternative messages above lib6
are zeroed out.
The STO-bug is still present in the latest ROM and it does not look
like as it would be fixed at any time.
Also my language packs work in any port. Replacing all messages needs
about 48 kB of RAM which is not taken away from the RAM if stored in
port2.
Now, feel free to translate your *whole* 49 to Finnish. After that we
can use my engine with your translation for a *complete* Finnish
talking 49G.
Greetings,
Andreas
http://www.software49g.gmxhome.de
-
Re: Overcome the STO-bug
"Andreas Möller" wrote in message
news:e9684ab2-174d-457b-97c3-05803d863451@u72g2000hsf.googlegroups.com...
>
> > Avenard once helped me to create FinLib49
> > which translates error messages into Finnish
> > it should always be at port 0
> And I told you at that time that your FinLib49 is affected by the
> infamous STO-bug as well. You can easily check it again by storing
> something in a port. After that all alternative messages above lib6
> are zeroed out.
> The STO-bug is still present in the latest ROM and it does not look
> like as it would be fixed at any time.
/&(/"!&¤)=(/&"=%
> Also my language packs work in any port. Replacing all messages needs
> about 48 kB of RAM which is not taken away from the RAM if stored in
> port2.
>
> Now, feel free to translate your *whole* 49 to Finnish. After that we
> can use my engine with your translation for a *complete* Finnish
> talking 49G.
Some help please
nousiainen dot velipekka (at) gmail....
-
Re: Overcome the STO-bug
> nousiainen dot velipekka (at) gmail....
I dropped a mail at this address, otherwise you can reach me through
the email-address of my website.