From: Oskr on
This code is extracted from the ROM, it compiles but I can not run,
the machine is restarted.
Why is this happening?

(FPTR 4 54=4:65F7A)
::
CHECKPVARS
DROP
FALSE
BINT29
TestSysFlag
NOT
'NOP
{
LAM 'SHOWAX
LAM 'AXES
LAM 'Action
}
BIND
NIBBHEX
C2A2046500E0210000004131734001F20290110041601310F0D13202901A6C0060170F0213203100100C00601B0F0215302320010081601710F0F0311402320076002601C10F0F0F153023200C381601810F0F0300B302A200100C1601B10F0F0900B302A2013C1601B10F0F0900B302A20076C1601810F0F0900B302320023C1601710F0F0900B602A200700C3601830F0F0F0F0F0900F20310010041601310F0D00920232001011601F0F0800F202320010041601310F0D00D10310010080060170C005302C10010081601710F0F0300B302C100B2C1601710F0F09005302C1007681601410F0F0300F2031005241601310F0D00F2031004541601310F0D16902901513C2601820F0F0F0F0F0F0F0F03127029012734160210F0F0F0F0F0F1007202100D003872100570F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0D1C6023200913001601C0F0F0F0F0F0A1B70222016880080150CF101800801503181D00700200F10F0F0F0F031B702220053880080150CE3018008015032003A1E00400E30F0F0F0F03002702A200D134160210F0F0F0F0F0F00C602A200C4300160210F0F0F0F0F0900B70292016880080150CF101800801503181D00700200F10F0F0F0F0300C6023200A43001601C0F0F0F0F0F0A00B702920010180080150CE3018008015032003A1E00400E30F0F0F0F0300C42021005130072100D60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0900C6023200513001601C0F0F0F0F0F0A00C6023200623001601C0F0F0F0F0F0A00C602C100913001601C0F0F0F0F0F0A00C602C100343001601C0F0F0F0F0F0A00B702B1016880080150CF101800801503181D00700200F10F0F0F0F03001A03100933C1B01A10F0F0F0F0F0F0F0F0E001A03100863C1B01A10F0F0F0F0F0F0F0F0E
TOTEMPOB
FPTR 4 4D=^IsUncompressDataString
# 77A
# 14
FPTR 4 47=^IfSetAllLabelsMessages
# 78E
# 13
FPTR 4 48=^IfSetAllHelpStrings
# 7A1
FPTR 4 40=^IfSetTitle
'
PTR 66D17
PTR 244DF
'
PTR 66DFD
PTR 244DF
BINT12
MINUSONE
2REAL
PTR 654AA
TOTEMPOB
2REAL
PTR 65F0C
BINT6
NTHCOMPDROP
PTR 654A5
TOTEMPOB
DUP
'DROPFALSE
BINT12
MINUSONE
2REAL
PTR 65F25
TOTEMPOB
2REAL
PTR 65F43
TOTEMPOB
2REAL
SysITE
PTR 65F43
::
BINT18
SysITE
PTR 65F5C
PTR 65F2A
;
TOTEMPOB
'
PTR 67069
PTR 244DF
BINT1
{
BINT0
BINT1
BINT255d
BINT5
BINT6
BINT8
BINT9
BINT13
}
BINT4
MINUSONE
BINT2
NULL$
PTR 16130
SAFE@_HERE
?SKIP
NULL$
'DROPFALSE
BINT1
{
BINT6
}
BINT5
MINUSONE
BINT2
'
ID X
PTR 65F0C
BINT3
NTHCOMPDROP
DUPTYPELIST?
IT
CARCOMP
'DROPFALSE
BINT32
MINUSONE
BINT1
MINUSONE
BINT2
TRUE
BINT31
TestSysFlag
NOT
'DROPFALSE
BINT32
MINUSONE
BINT1
MINUSONE
BINT2
FALSE
BINT28
TestSysFlag
'DROPFALSE
BINT1
{
BINT0
}
BINT3
MINUSONE
BINT2
%10
PTR 65F0C
BINT5
NTHCOMPDROP
DUPTYPECMP?
ITE
::
DROP
%10
;
::
DUPTYPELIST?
NOT?SEMI
DUP
CARCOMP
DUPTYPECMP?
ITE
::
DROP
BINT2
NTHCOMPDROP
DUPTYPELIST?
IT
CARCOMP
;
SWAPDROP
DUPTYPEHSTR?
IT
HXS>%
;
'DROPFALSE
BINT1
{
BINT0
}
BINT3
MINUSONE
BINT2
%10
PTR 65F0C
BINT5
NTHCOMPDROP
DUPTYPECMP?
ITE
::
DROP
%10
;
::
DUPTYPELIST?
NOT?SEMI
BINT2
NTHCOMPDROP
DUPTYPELIST?
IT
::
BINT2
NTHCOMPDROP
;
DUPTYPEHSTR?
IT
HXS>%
;
'DROPFALSE
BINT32
MINUSONE
BINT1
MINUSONE
BINT2
TRUE
PTR 65F0C
BINT5
NTHCOMPDROP
DUPTYPECMP?
ITE
DROPTRUE
::
BINT2
NTHCOMPDROP
DUPTYPELIST?
IT
CARCOMP
TYPEHSTR?
;
'DROPFALSE
BINT1
{
BINT6
}
BINT5
MINUSONE
BINT2
'
ID Y
PTR 65F0C
BINT7
NTHCOMPDROP
DUPTYPELIST?
IT
CARCOMP
'DROPFALSE
BINT32
MINUSONE
BINT0
MINUSONE
BINT2
FALSE
FALSE
'
PTR 67254
PTR 244DF
BINT1
{
BINT3
}
BINT4
MINUSONE
BINT2
NULL$
PTR 2EFED
?SKIP
NULL$
'
PTR 67318
PTR 244DF
BINT1
{
BINT0
BINT255d
}
BINT3
MINUSONE
BINT2
%1
NULL$
'
PTR 6736A
PTR 244DF
BINT1
{
BINT0
BINT255d
}
BINT3
MINUSONE
BINT2
%2
NULL$
'
PTR 67379
PTR 244DF
BINT1
{
BINT0
BINT255d
}
BINT3
MINUSONE
BINT2
Z0_
PTR 65F0C
BINT5
NTHCOMPDROP
DUPTYPELIST?
ITE
::
BINT3
NTHELCOMP
NOTcase
Z0_
DUPTYPECSTR?
NOTcasedrop
Z0_
FPTR 2 CA
NOTcase
Z0_
;
FPTR 6 2E0=^DROPZ0
'
PTR 673AD
PTR 244DF
BINT1
{
BINT0
BINT255d
}
BINT3
MINUSONE
BINT2
Z1_
PTR 65F0C
BINT5
NTHCOMPDROP
DUPTYPELIST?
ITE
::
BINT4
NTHELCOMP
NOTcase
Z1_
DUPTYPECSTR?
NOTcasedrop
Z1_
FPTR 2 CA
NOTcase
Z1_
;
FPTR 6 2DF=^DROPZ1
'
PTR 673BC
PTR 244DF
BINT32
MINUSONE
BINT1
MINUSONE
BINT2
FALSE
FALSE
'
PTR 674A2
PTR 244DF
BINT1
{
BINT0
BINT1
BINT255d
BINT6
BINT8
BINT9
BINT13
}
BINT3
MINUSONE
BINT2
NULL$
NULL$
'
PTR 674B1
PTR 244DF
BINT1
{
BINT0
BINT1
BINT255d
BINT6
BINT8
BINT9
BINT13
}
BINT3
MINUSONE
BINT2
NULL$
NULL$
# 98
{}N
FPTR 4 42=^IfMain2
IT
::
PTR 67916
DROP
;
1GETABND
COLA_EVAL
;
@
From: Andreas Möller on
Hello,

for this you must understand the memory layout of the 49G.

The FPTR is in a covered bank as most of the ROM, when this code is
executed from the ROM the appropriate FlashBank is swapped in, the
code is executed and the default flash banks are restored.

In this particular case Bank4 is used as you can tell from the FPTR,
but if you execute a program from a stack this will always start from
Bank2 (if started from the filer it is another bank) so all the PTRs
that are used inside the bank are invalid and this is the reason why
it crashes. You can see the difference if you look into a PTR with
Nosy through the original FPTR where Nosy will (most of the time)
disassemble the correct code for that bank.
Now compile your posted program and look into the PTRs and you will
see the difference.

If you want to use this code you have to change to the appropriate
FlashBank first which you can do through a EVAL as at the beginning of
each FlashBank there is a EVAL.

' ::
Code you want to execute ...
;
FLASHPTR banknumber 0

FLASHPTR banknumber 0 will always do an EVAL for the chosen bank and
then will restore the previous bank status.

CAVEAT I: There may be jumps to other FlashBanks, so it could happen
that you must do the above described technique for jumps into other
FlashBanks, too.
CAVEAT II: All the PTRs you see are totally unsupported and can change
anytime or even move completely (quite unlikely) into another
FlashBanks

Generally you should not use code from the ROM that you have
acquainted that way because
1. it may behave different when run from RAM (TEMPOB)
2. is totaly unsupported, even the FLASHPTR is unsupported
3. however it is a great way to discover stuff in the ROM and
learning.

Conclusion:
If you want to stay on the save side you have to extract all pointers,
too, and all the stuff where they lead to and if the code is spread
around several banks and involves low level machine language and
interjumps in ML inside a bank you are most probably unsuccessful in
disassembling everything you need and by that point you are much
better of if you rewrite the code for your specific task/needs.

HTH,
Andreas
http://www.software49g.gmxhome.de

P.S. attached is an old posting which gives you some insights and
which you might use for starting your google search

-----------------------------------------------------------------
Newsgroups: comp.sys.hp48
Von: Jean-Yves Avenard <m...(a)privacy.net>
Datum: Thu, 22 May 2003 01:45:56 +1000
Lokal: Mi 21 Mai 2003 17:45
Betreff: Warning: big errors in programming documentation

Dear all.

Today I got an email complaining that some entry points moved in ROM
1.19-7
(that I dispatched for beta-testing to close people).

The entry points were located at the address 4EA37 (TICKSmin) etc...

Using an entry point that has an address > 40000 is really bad and I
can
guarantee that any programs using these entry points will make your
calculator crash in any ROM revision (from 1.05 to 1.19-7)

The documentation listing such entry points are (but not limited to:)
-Programming in System RPL by Eduardo Kalinowski and Carsten Dominic
-EXTABLE by Carsten Dominic
-EXTABLe by Thomas Rast

The problem with any pointers located at an address > 40000 is that
it's not
guarantee that they will always be visible. The ROM between 40000 and
7FFFF
changes constantly.

A little explanation, you can skip to the conclusion if you want to.

As you probably already know, the HP49 memory map is made of three
different
views:

ROM view 0 (0 to 3FFFF)
ROM view 1 (40000 to 7FFFF)
RAM (80000 to FFFFF)

ROM view 0 can be switched between 4 different flash banks (bank 0 to
3)
ROM view 1 can be switched between any flash banks (bank 0 to 15)

ROM view 0 in practice is always configured to see the bank 1 of the
Flash
ROM (except if this flash bank has been damaged, then it will be
another
one. I'm yet to see any HP49 with a damaged flash bank)
Bank 1 contains the RPL kernel (memory management, display, flash
support,
math library and all reserved entry points)
ROM view 1 is switched between different flash bank containing
different
part of the firmware:
Bank0: Filer, Matrix Writer, MetaKernel dev library, MASD and the 3D
plotter
Bank2: Main system outerloop, printing, solver, rpl compiler, plotter,
matrix, self-test
Bank3: Input Form manager, TVM, ChooseBox manager, Stack display,
Table
view, Catalog, Object Viewer)
Bank4: all HP48 input forms, messages, key tables, Menus, diff eq,
linear
algebra, constant library etc..
Bank5: MetaKernel 3.0 part2: Decompiler, Algebraic compiler, Equation
Writer, HP49 UI engine + HP49 input forms
Bank6: CAS
Bank7: CAS2

When you're in the standard stack display the main OuterLoop is
running so
the typical view is:
Bank 1 | Bank 2 | RAM

But in the filer it will be:
Bank 1 | Bank 0 | RAM
In the CAS it will be:
Bank 1 | Bank 6/7 | RAM
In the Equation Writer it will be:
Bank 1 | Bank 5
Etc...

The entry points with an address > 40000 can be in any of these banks,
and
are not visible at all time.
All the entry points referenced in the different documentations are
from
Bank 1. Probably because it's the most called bank and also because if
you
start a program from the main stack (like a program searching for
reals) it
will see Bank 1 | Bank 2

But start the same program from the Filer, it will be:
Bank 1 | Bank 0.

Eg: If you run any programs using these totally invalid entry points
from
the Filer, the equation writer it will crash: 100% guarantee

If you create a user function calling one of these programs and run
any math
commands on it: it will crash 100% guarantee.

Conclusion:
Never use any entry points located between 40000 and 7FFFFF. These
entry
points are reserved for the system only. Any documentations referring
to
these entry points should be corrected ASAP.

There have been several bug reports of system commands crashing when
called
from the Filer: it was always the same reason: by mistake we called
some
entry points between sub-system banks. Hopefully we found all of them.

You've been warned.

Cheers
Jean-Yves
From: Andreas Möller on
Hello,

to save you some frustration here is your specific code that *starts*.
Note: I have not tested if all the functions of the inform box will
work. As I told you there may be jumps into other FlashBanks.
Note: This code is *ROM dependent* and requires ROM 2.15.
Note: The syntax is for the built-in compiler of the 49G, so compile
it on the real machine or the emulator, for debug4x the code has to be
adjusted.

HTH,
Andreas
http://www.software49g.gmxhome.de
---------------------------------

::
'
::
CHECKPVARS
DROP
FALSE
BINT29
TestSysFlag
NOT
'NOP
{
LAM 'SHOWAX
LAM 'AXES
LAM 'Action
}
BIND
NIBBHEX
C2A2046500E0210000004131734001F20290110041601310F0D13202901A6C0060170F0213203100100C00601B0F0215302320010081601710F0F0311402320076002601C10F0F0F153023200C381601810F0F0300B302A200100C1601B10F0F0900B302A2013C1601B10F0F0900B302A20076C1601810F0F0900B302320023C1601710F0F0900B602A200700C3601830F0F0F0F0F0900F20310010041601310F0D00920232001011601F0F0800F202320010041601310F0D00D10310010080060170C005302C10010081601710F0F0300B302C100B2C1601710F0F09005302C1007681601410F0F0300F2031005241601310F0D00F2031004541601310F0D16902901513C2601820F0F0F0F0F0F0F0F03127029012734160210F0F0F0F0F0F1007202100D003872100570F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0D1C6023200913001601C0F0F0F0F0F0A1B70222016880080150CF101800801503181D00700200F10F0F0F0F031B702220053880080150CE3018008015032003A1E00400E30F0F0F0F03002702A200D134160210F0F0F0F0F0F00C602A200C4300160210F0F0F0F0F0900B70292016880080150CF101800801503181D00700200F10F0F0F0F0300C6023200A43001601C0F0F0F0F0F0A00B702920010180080150CE3018008015032003A1E00400E30F0F0F0F0300C42021005130072100D60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0900C6023200513001601C0F0F0F0F0F0A00C6023200623001601C0F0F0F0F0F0A00C602C100913001601C0F0F0F0F0F0A00C602C100343001601C0F0F0F0F0F0A00B702B1016880080150CF101800801503181D00700200F10F0F0F0F03001A03100933C1B01A10F0F0F0F0F0F0F0F0E001A03100863C1B01A10F0F0F0F0F0F0F0F0E
TOTEMPOB
FPTR2 ^IsUncompressDataString
# 77A
# 14
FPTR2 ^IfSetAllLabelsMessages
# 78E
# 13
FPTR2 ^IfSetAllHelpStrings
# 7A1
FPTR2 ^IfSetTitle
'
PTR 66D17
PTR 244DF
'
PTR 66DFD
PTR 244DF
BINT12
MINUSONE
2REAL
PTR 654AA
TOTEMPOB
2REAL
PTR 65F0C
BINT6
NTHCOMPDROP
PTR 654A5
TOTEMPOB
DUP
'DROPFALSE
BINT12
MINUSONE
2REAL
PTR 65F25
TOTEMPOB
2REAL
PTR 65F43
TOTEMPOB
2REAL
SysITE
PTR 65F43
::
BINT18
SysITE
PTR 65F5C
PTR 65F2A
;
TOTEMPOB
'
PTR 67069
PTR 244DF
BINT1
{
BINT0
BINT1
BINT255d
BINT5
BINT6
BINT8
BINT9
BINT13
}
BINT4
MINUSONE
BINT2
NULL$
PTR 16130
SAFE@_HERE
?SKIP
NULL$
'DROPFALSE
BINT1
{
BINT6
}
BINT5
MINUSONE
BINT2
'
ID X
PTR 65F0C
BINT3
NTHCOMPDROP
DUPTYPELIST?
IT
CARCOMP
'DROPFALSE
BINT32
MINUSONE
BINT1
MINUSONE
BINT2
TRUE
BINT31
TestSysFlag
NOT
'DROPFALSE
BINT32
MINUSONE
BINT1
MINUSONE
BINT2
FALSE
BINT28
TestSysFlag
'DROPFALSE
BINT1
{
BINT0
}
BINT3
MINUSONE
BINT2
%10
PTR 65F0C
BINT5
NTHCOMPDROP
DUPTYPECMP?
ITE
::
DROP
%10
;
::
DUPTYPELIST?
NOT?SEMI
DUP
CARCOMP
DUPTYPECMP?
ITE
::
DROP
BINT2
NTHCOMPDROP
DUPTYPELIST?
IT
CARCOMP
;
SWAPDROP
DUPTYPEHSTR?
IT
HXS>%
;
'DROPFALSE
BINT1
{
BINT0
}
BINT3
MINUSONE
BINT2
%10
PTR 65F0C
BINT5
NTHCOMPDROP
DUPTYPECMP?
ITE
::
DROP
%10
;
::
DUPTYPELIST?
NOT?SEMI
BINT2
NTHCOMPDROP
DUPTYPELIST?
IT
::
BINT2
NTHCOMPDROP
;
DUPTYPEHSTR?
IT
HXS>%
;
'DROPFALSE
BINT32
MINUSONE
BINT1
MINUSONE
BINT2
TRUE
PTR 65F0C
BINT5
NTHCOMPDROP
DUPTYPECMP?
ITE
DROPTRUE
::
BINT2
NTHCOMPDROP
DUPTYPELIST?
IT
CARCOMP
TYPEHSTR?
;
'DROPFALSE
BINT1
{
BINT6
}
BINT5
MINUSONE
BINT2
'
ID Y
PTR 65F0C
BINT7
NTHCOMPDROP
DUPTYPELIST?
IT
CARCOMP
'DROPFALSE
BINT32
MINUSONE
BINT0
MINUSONE
BINT2
FALSE
FALSE
'
PTR 67254
PTR 244DF
BINT1
{
BINT3
}
BINT4
MINUSONE
BINT2
NULL$
PTR 2EFED
?SKIP
NULL$
'
PTR 67318
PTR 244DF
BINT1
{
BINT0
BINT255d
}
BINT3
MINUSONE
BINT2
%1
NULL$
'
PTR 6736A
PTR 244DF
BINT1
{
BINT0
BINT255d
}
BINT3
MINUSONE
BINT2
%2
NULL$
'
PTR 67379
PTR 244DF
BINT1
{
BINT0
BINT255d
}
BINT3
MINUSONE
BINT2
Z0_
PTR 65F0C
BINT5
NTHCOMPDROP
DUPTYPELIST?
ITE
::
BINT3
NTHELCOMP
NOTcase
Z0_
DUPTYPECSTR?
NOTcasedrop
Z0_
FPTR 2 CA
NOTcase
Z0_
;
FPTR2 ^DROPZ0
'
PTR 673AD
PTR 244DF
BINT1
{
BINT0
BINT255d
}
BINT3
MINUSONE
BINT2
Z1_
PTR 65F0C
BINT5
NTHCOMPDROP
DUPTYPELIST?
ITE
::
BINT4
NTHELCOMP
NOTcase
Z1_
DUPTYPECSTR?
NOTcasedrop
Z1_
FPTR 2 CA
NOTcase
Z1_
;
FPTR2 ^DROPZ1
'
PTR 673BC
PTR 244DF
BINT32
MINUSONE
BINT1
MINUSONE
BINT2
FALSE
FALSE
'
PTR 674A2
PTR 244DF
BINT1
{
BINT0
BINT1
BINT255d
BINT6
BINT8
BINT9
BINT13
}
BINT3
MINUSONE
BINT2
NULL$
NULL$
'
PTR 674B1
PTR 244DF
BINT1
{
BINT0
BINT1
BINT255d
BINT6
BINT8
BINT9
BINT13
}
BINT3
MINUSONE
BINT2
NULL$
NULL$
# 98
{}N
FPTR2 ^IfMain2
IT
::
PTR 67916
DROP
;
1GETABND
COLA_EVAL
;
FPTR 4 0
;
@
From: Gustavo Portales on
On Jan 26, 3:36 pm, Andreas Möller <andreas_moellerNOS...(a)gmx.de>
wrote:
> Hello,
>
> to save you some frustration here is your specific code that *starts*.
> Note: I have not tested if all the functions of the inform box will
> work. As I told you there may be jumps into other FlashBanks.
> Note: This code is *ROM dependent* and requires ROM 2.15.
> Note: The syntax is for the built-in compiler of the 49G, so compile
> it on the real machine or the emulator, for debug4x the code has to be
> adjusted.
>
> HTH,
> Andreashttp://www.software49g.gmxhome.de
> ---------------------------------
>
> ::
> '
> ::
>   CHECKPVARS
>   DROP
>   FALSE
>   BINT29
>   TestSysFlag
>   NOT
>   'NOP
>   {
>     LAM 'SHOWAX
>     LAM 'AXES
>     LAM 'Action
>   }
>   BIND
>   NIBBHEX
> C2A2046500E0210000004131734001F20290110041601310F0D13202901A6C0060170F0213203100100C00601B0F0215302320010081601710F0F0311402320076002601C10F0F0F153023200C381601810F0F0300B302A200100C1601B10F0F0900B302A2013C1601B10F0F0900B302A20076C1601810F0F0900B302320023C1601710F0F0900B602A200700C3601830F0F0F0F0F0900F20310010041601310F0D00920232001011601F0F0800F202320010041601310F0D00D10310010080060170C005302C10010081601710F0F0300B302C100B2C1601710F0F09005302C1007681601410F0F0300F2031005241601310F0D00F2031004541601310F0D16902901513C2601820F0F0F0F0F0F0F0F03127029012734160210F0F0F0F0F0F1007202100D003872100570F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0D1C6023200913001601C0F0F0F0F0F0A1B70222016880080150CF101800801503181D00700200F10F0F0F0F031B702220053880080150CE3018008015032003A1E00400E30F0F0F0F03002702A200D134160210F0F0F0F0F0F00C602A200C4300160210F0F0F0F0F0900B70292016880080150CF101800801503181D00700200F10F0F0F0F0300C6023200A43001601C0F0F0F0F0F0A00B702920010180080150CE3018008015032003A1E00400E30F0F0F0F0300C42021005130072100D60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0900C6023200513001601C0F0F0F0F0F0A00C6023200623001601C0F0F0F0F0F0A00C602C100913001601C0F0F0F0F0F0A00C602C100343001601C0F0F0F0F0F0A00B702B1016880080150CF101800801503181D00700200F10F0F0F0F03001A03100933C1B01A10F0F0F0F0F0F0F0F0E001A03100863C1B01A10F0F0F0F0F0F0F0F0E
>   TOTEMPOB
>   FPTR2 ^IsUncompressDataString
>   # 77A
>   # 14
>   FPTR2 ^IfSetAllLabelsMessages
>   # 78E
>   # 13
>   FPTR2 ^IfSetAllHelpStrings
>   # 7A1
>   FPTR2 ^IfSetTitle
>   '
>   PTR 66D17
>   PTR 244DF
>   '
>   PTR 66DFD
>   PTR 244DF
>   BINT12
>   MINUSONE
>   2REAL
>   PTR 654AA
>   TOTEMPOB
>   2REAL
>   PTR 65F0C
>   BINT6
>   NTHCOMPDROP
>   PTR 654A5
>   TOTEMPOB
>   DUP
>   'DROPFALSE
>   BINT12
>   MINUSONE
>   2REAL
>   PTR 65F25
>   TOTEMPOB
>   2REAL
>   PTR 65F43
>   TOTEMPOB
>   2REAL
>   SysITE
>   PTR 65F43
>   ::
>     BINT18
>     SysITE
>     PTR 65F5C
>     PTR 65F2A
>   ;
>   TOTEMPOB
>   '
>   PTR 67069
>   PTR 244DF
>   BINT1
>   {
>     BINT0
>     BINT1
>     BINT255d
>     BINT5
>     BINT6
>     BINT8
>     BINT9
>     BINT13
>   }
>   BINT4
>   MINUSONE
>   BINT2
>   NULL$
>   PTR 16130
>   SAFE@_HERE
>   ?SKIP
>   NULL$
>   'DROPFALSE
>   BINT1
>   {
>     BINT6
>   }
>   BINT5
>   MINUSONE
>   BINT2
>   '
>   ID X
>   PTR 65F0C
>   BINT3
>   NTHCOMPDROP
>   DUPTYPELIST?
>   IT
>   CARCOMP
>   'DROPFALSE
>   BINT32
>   MINUSONE
>   BINT1
>   MINUSONE
>   BINT2
>   TRUE
>   BINT31
>   TestSysFlag
>   NOT
>   'DROPFALSE
>   BINT32
>   MINUSONE
>   BINT1
>   MINUSONE
>   BINT2
>   FALSE
>   BINT28
>   TestSysFlag
>   'DROPFALSE
>   BINT1
>   {
>     BINT0
>   }
>   BINT3
>   MINUSONE
>   BINT2
>   %10
>   PTR 65F0C
>   BINT5
>   NTHCOMPDROP
>   DUPTYPECMP?
>   ITE
>   ::
>     DROP
>     %10
>   ;
>   ::
>     DUPTYPELIST?
>     NOT?SEMI
>     DUP
>     CARCOMP
>     DUPTYPECMP?
>     ITE
>     ::
>       DROP
>       BINT2
>       NTHCOMPDROP
>       DUPTYPELIST?
>       IT
>       CARCOMP
>     ;
>     SWAPDROP
>     DUPTYPEHSTR?
>     IT
>     HXS>%
>   ;
>   'DROPFALSE
>   BINT1
>   {
>     BINT0
>   }
>   BINT3
>   MINUSONE
>   BINT2
>   %10
>   PTR 65F0C
>   BINT5
>   NTHCOMPDROP
>   DUPTYPECMP?
>   ITE
>   ::
>     DROP
>     %10
>   ;
>   ::
>     DUPTYPELIST?
>     NOT?SEMI
>     BINT2
>     NTHCOMPDROP
>     DUPTYPELIST?
>     IT
>     ::
>       BINT2
>       NTHCOMPDROP
>     ;
>     DUPTYPEHSTR?
>     IT
>     HXS>%
>   ;
>   'DROPFALSE
>   BINT32
>   MINUSONE
>   BINT1
>   MINUSONE
>   BINT2
>   TRUE
>   PTR 65F0C
>   BINT5
>   NTHCOMPDROP
>   DUPTYPECMP?
>   ITE
>   DROPTRUE
>   ::
>     BINT2
>     NTHCOMPDROP
>     DUPTYPELIST?
>     IT
>     CARCOMP
>     TYPEHSTR?
>   ;
>   'DROPFALSE
>   BINT1
>   {
>     BINT6
>   }
>   BINT5
>   MINUSONE
>   BINT2
>   '
>   ID Y
>   PTR 65F0C
>   BINT7
>   NTHCOMPDROP
>   DUPTYPELIST?
>   IT
>   CARCOMP
>   'DROPFALSE
>   BINT32
>   MINUSONE
>   BINT0
>   MINUSONE
>   BINT2
>   FALSE
>   FALSE
>   '
>   PTR 67254
>   PTR 244DF
>   BINT1
>   {
>     BINT3
>   }
>   BINT4
>   MINUSONE
>   BINT2
>   NULL$
>   PTR 2EFED
>   ?SKIP
>   NULL$
>   '
>   PTR 67318
>   PTR 244DF
>   BINT1
>   {
>     BINT0
>     BINT255d
>   }
>   BINT3
>   MINUSONE
>   BINT2
>   %1
>   NULL$
>   '
>   PTR 6736A
>   PTR 244DF
>   BINT1
>   {
>     BINT0
>     BINT255d
>   }
>   BINT3
>   MINUSONE
>   BINT2
>   %2
>   NULL$
>   '
>   PTR 67379
>   PTR 244DF
>   BINT1
>   {
>     BINT0
>     BINT255d
>   }
>   BINT3
>   MINUSONE
>   BINT2
>   Z0_
>   PTR 65F0C
>   BINT5
>   NTHCOMPDROP
>   DUPTYPELIST?
>   ITE
>   ::
>     BINT3
>     NTHELCOMP
>     NOTcase
>     Z0_
>     DUPTYPECSTR?
>     NOTcasedrop
>     Z0_
>     FPTR 2 CA
>     NOTcase
>     Z0_
>   ;
>   FPTR2 ^DROPZ0
>   '
>   PTR 673AD
>   PTR 244DF
>   BINT1
>   {
>     BINT0
>     BINT255d
>   }
>   BINT3
>   MINUSONE
>   BINT2
>   Z1_
>   PTR 65F0C
>   BINT5
>   NTHCOMPDROP
>   DUPTYPELIST?
>   ITE
>   ::
>     BINT4
>     NTHELCOMP
>     NOTcase
>     Z1_
>     DUPTYPECSTR?
>     NOTcasedrop
>     Z1_
>     FPTR 2 CA
>     NOTcase
>     Z1_
>   ;
>   FPTR2 ^DROPZ1
>   '
>   PTR 673BC
>   PTR 244DF
>   BINT32
>   MINUSONE
>   BINT1
>   MINUSONE
>   BINT2
>   FALSE
>   FALSE
>   '
>   PTR 674A2
>   PTR 244DF
>   BINT1
>   {
>     BINT0
>     BINT1
>     BINT255d
>     BINT6
>     BINT8
>     BINT9
>     BINT13
>   }
>   BINT3
>   MINUSONE
>   BINT2
>   NULL$
>   NULL$
>   '
>   PTR 674B1
>   PTR 244DF
>   BINT1
>   {
>     BINT0
>     BINT1
>     BINT255d
>     BINT6
>     BINT8
>     BINT9
>     BINT13
>   }
>   BINT3
>   MINUSONE
>   BINT2
>   NULL$
>   NULL$
>   # 98
>   {}N
>   FPTR2 ^IfMain2
>   IT
>   ::
>     PTR 67916
>     DROP
>   ;
>   1GETABND
>   COLA_EVAL
> ;
> FPTR 4 0
> ;
> @

And sometimes TOTEMPOB is required.
http://groups.google.com/group/comp.sys.hp48/browse_thread/thread/bf9921cad9effb48/

- Gaak -
From: Andreas Möller on
Hello,

> And sometimes TOTEMPOB is required.
Yes, I just forgot to write this.

Regards,
Andreas