HP48 Entry Points from HP's Development Tools which previously had no definition [Note: Also see Jim Donnelly's new book, "An Introduction to HP 48 System RPL and Assembly Language Programming", available at EduCALC. -jkh-] by Sune Bredahl I don't know if this is of any interest now, but here's a description of some of those entry points. > 04D64 HP:GETTHEMESG Works almost like JstGETTHEMSG except it returns an empty string if the message (number) is <70000h> ie. the user-defined type created with DOERR. > 02B85 HP:FlashMsg Given a string, FlashMsg saves the top 16 pixel rows displays the string (usually a message) and delays. Then restores the top 16 pixel rows and continues operation. Almost like FlashWarning but doesn't generate an error-beep and has a longer delay. > 152FF HP:EqList? ; This one is really weird. If obj. in stack1 is a list then returns TRUE unless second element in that list is also a list, then FALSE. For other objects FALSE, eg. 1: 'A*X' -> FALSE, 1: { 1 1 } -> TRUE, 1: { 1 { 2 3 } 3 4 } -> FALSE > 1578D HP:CRUNCH ; Internal ->NUM > 1D054 HP:XEQ>ARRAY ; Internal ->ARRY, requires list of reals ! much faster than the routine at #1D040. > 5A036 HP:uncrunch ; Evaluates next obj in runstream in symbolic mode. This allows a command like COLCT to give symbolic results in 'numeric results' mode. > 28558 HP:#1-UNROT ; Does #1- and 3 ROLLD > 32FF9 HP:SYMBNUMSOLVE ; Deep internal ROOT. Syntax like ROOT but returns the following; Bad guess: 2: , 1: FALSE Constant: 2: , 1: FALSE Interrupted: 3: list, 2: , 1: TRUE Zero: 3: real, 2; , 1: TRUE Sign Reversal 3: real, 2: , 1: TRUE Extremum: 3: real, 2: , 1: TRUE >> 3BE54 HP:DoSolvrMenu ; Starts solver app.. Functionally the same as 30 MENU. > 42D32 HP:EditLevel1; > 42D82 HP:CharEdit Copies obj. in stack1 into commandline and selects EDIT menu. Whereas EditLevel1 works exactly as pressing [EDIT], CharEdit returns FALSE (not the obj.) if ATTN/CANCEL was pressed inside the edit-menu ELSE returns the (edited) object and TRUE. > 42D46 HP:ViewLevel1 > 42DC8 HP:ObEdit Same combination as above except these ones copies obj. into _appropiate_ environment for viewing (eg. MatrixWriter or EqWriter). > 5A01D HP:SWAPcompSWAP ; makes stack2 into an algebraic > 5E4A9 HP:#1-SWAP, HP:pull ; does #1- then SWAP. > 5F0AA HP:idntcase ; if obj is global name then do/return else skip > 5F0CD HP:idntlamcase ; if obj is local or global then do/return else skip > 5F0FA HP:num0=case ; if obj is 0 or (0,0) then do/return else skip > 5F154 HP:num1=case ; if obj is 1 or (1,0) then do/return else skip > 5F1BD HP:num2=case ; if obj is 2 or (2,0) then do/return else skip > 5F23A HP:num-1=case ; if obj is -1 or (-1,0) then do/return else skip > 5FB76 HP:ROT#1+UNROT, does ROT #1+ UNROT -> adds 1 to stack3. and here's some goodies; > 61D41 HP:SAVESTACK ; saves entire user stack > 61F8F HP:undo ; recalls entire user stack (if saved) These two can be used to form a programmable version of LAST STACK (but do not require LAST STACK to be active). The program :: SAVESTACK whatever undo ; returns same stack as given. > 63155 HP:'ERRJMP ; pushes ERRJMP unevaluated to stack. > 63169 HP:caseERRJMP ; if TRUE then execute ERRJMP else skips > 63BBE HP:SWAP%%/ ; Does SWAP %%/, divides swapped longreals