[comp.sys.handhelds] HP-48 PMC addresses

bson@rice-chex.ai.mit.edu (Jan Brittenson) (04/07/91)

   I had grep(1) extract the undocumented PMCs (Prefixed Machine Code)
out of Jake's list. I then reformatted the extract into a shell script
that would (using sed(1)) look up of these that I have documented. So
here is a list of ~200 additional PMC addresses, roughly 1/4 of the
undocumented addresses. Some of these are weak, by which I mean that
they only document what bit is set where, or which word in memory is
cleared, not the effect it has. However, since weak documentation is
just as *correct*, I have included it here. It makes it easier to see
what role a specific bit or word has if it appears as a symbol rather
than a hex constant.

The weak symbols look somewhat like follows:

Get_xxxxx	Puts the contents of xxxxx on the stack as a short
Get_any_xxxxx	Puts the contents of xxxxx on the stack as an object
Store_xxxxx	Stores the value on TOS in xxxxx
Set_xxxxx	Same, but retains the value on TOS
Store_any_xxxxx
Set_any_xxxxx
Clr_xxxxx	Clears the contents of xxxxx
Test_xxxxx	Tests if contents are nonzero

Set_y_xxxxx	The contents of xxxxx is ORed with y
Clr_y_xxxxx	The contents of xxxxx is ANDed with the complement of y
		(aka BIC, bit clear)
Test_y_xxxxx	True if the contents of xxxxx AND y is nonzero


   Some other variants may occur. Sometimes the "_any" infix is
missing; but implicit by the context, which is why I haven't bothered
adding it. (At the dawn, objects and shorts were created equal. :-))
Sometimes there's a "_nib" infix, in which case only one nybble is
affected, as opposed to a 5-nybble word.

    Strcat is different from the string +, in that it appends one
string to the other, and expects there to have been enough space
allocated to hold the resulting string.


d71:Flush_kbd			/Flushes keyboard buffer
4708:Peek_lastkey		/Predicate: examine next key in buffer
5068:Clear_ATTN_flag		/Flush ATTN flag/counter
65e5:Userobjectp		/Predicate: is object a user object?
6b4e:System_RAMobjectp		/Predicate: is object system obj in RAM?
6eeb:Eval_next			/Eval next token in previous context
6f66:Eval_next_nopush
8207:Function_to_global		/Pred:Function (built-in XLIB) to global name
821f:Xlib_to_name_p		/Predicate: XLIB to global name
e248:Set_706b8
e26d:Get_706b8
e27d:Get_706bd
e630:Assert_date		/Assert TOS is a valid date
e66a:Assert_time		/Assert TOS is a valid time
e693:Assert_repeat		/Assert TOS is a valid repeat factor
e7ce:Nonzerop_7079dh
113c2:Get_stacksize		/Get size of stack, in nybbles
113d2:Store_stacksize		/Update stack size, in nybbles
113e2:Store_nib_706f6
113f2:Get_nib_706f6
11402:Inc_nib_706f6
11412:Dec_nib_706f6
11422:Inc_nib_706ec
11432:Get_nib_706e7
11442:Clr_nib_706e7
11452:Dec_nib_706e7
11462:Inc_nib_706e7
11501:Delayed_alock_p		/Predicate: Delayed alpha lock
11511:Prg_on_p			/Turn on PRG mode
1155c:Prg_off			/Turn off PRG mode
1156c:Delayed_alpha_lock_off	/Turn of delayed alpha lock
1192f=Sub_grob			/GROB-specific SUB
11a6d:Erase_in_grob		/Erase region of GROB
13043:Purge_PICT_viewed		/Purge scroll-mode PICT
13061:Purge_PICT		/Purge PICT
13167:Scroll_mode_p		/Predicate: Scroll mode?
137b6:Get_curRowCol
18308:Recalc_tos_and_gc		/Do GC and recalculate stack
1884d:Short0_End		/0 END
18a15:No_args			/Set error reference, no args checked
2534a:If_nullstr_then		/IF "" == THEN
268c2:Get_XlibBits01
269db:XlibMajor_lt700h_p_func	/Predicate: XLIB Library Number > #700?
26c1c:If_false_then_End		/END if False

27224:If_not_backup_then_eval_prev_context /If not Backup, then Eval_prev_context
27234:If_not_library_then_eval_prev_context /If not Library, then Eval_prev_context
27244:If_not_list_then_eval_prev_context /If not List, then Eval_prev_context
27254:If_not_prg_then_eval_prev_context /If not Program, then Eval_prev_context
27264:If_not_func_then_eval_prev_context /If not XLIB, then Eval_prev_context
2b07b:Store_rand_seed		/Set Random Seed
30805:Nthchar			/Nth char of string as short
31608:Config_IO			/Reconfigure I/O according to stack data [1]
324c8=Serial_CR			/Transmit CR on Wire
37e73:RDM_array_size_nelem_dims_ndims	/RDM an array
38c08:Store_any_70605
38c18:Get_any_70605
38c28:Clr_70605
38c38:Store_any_7060a
38c48:Get_any_7060a
38c58:Clr_7060a
38c68:Store_any_7060f
38c78:Get_any_7060f
38c88:Clr_7060f
38c98:Store_any_70614
38cab:Get_any_70614
38cbe:Clr_70614
38cd1:Test_4_70688
38cdf:Set_4_70688
38ced:Clr_4_70688
38cfb:Test_8_7068c
38d09:Set_8_7068c
38d17:Clr_8_7068c
38d25:Test_2_7068c
38d33:Set_2_7068c
38d41:Clr_2_7068c
38d4f:Test_8_7068d
38d5d:Set_8_7068d
38d6b:Clr_8_7068d
38d79:Halts_enabled_p		/Predicate: Are HALTs enabled?
38d8a:Enable_Halt		/Enable HALTs
38d9b:Disable_Halt		/Disable HALTs
39275:Frozen_status_alt3
39283:Freeze_status_alt3
39291:Unfreeze_status_alt3
3929f:Frozen_stack_p_alt
392ad:Freeze_stack_alt
392bb:Unfreeze_stack_alt
392c9:Test_2_70689
392d7:Set_2_70689
392e5:Clr_2_70689
392f3:Frozen_menu_p_alt
39301:Freeze_menu_p_alt
3930f:Unfreeze_menu_p_alt
3931d:Frozen_status_alt2
3932b:Freeze_status_alt2
39339:Unfreeze_status_alt2
39347:Frozen_stack_p_alt2
39355:Freeze_stack_alt2
39363:Unfreeze_stack_alt2
39371:Test_2_70686
3937f:Set_2_70686
3938d:Clr_2_70686
3939b:Frozen_menu_p_alt3
393a9:Freeze_menu_alt3
393b7:Unfreeze_menu_alt3
393c5:Frozen_status_p
393e1:Unfreeze_status
393ef:Frozen_stack_p
3940b:Unfreeze_stack
39419:Test_4_7068a
39427:Set_4_7068a
39435:Clr_4_7068a
39443:Menu_frozen_p
3945f:Unfreeze_menu
3946d:Test_1_7068b
3947b:Set_1_7068b
39489:Clr_1_7068b
39497:Test_2_7068b
394a5:Set_2_7068b
394b3:Clr_2_7068b
394c1:Test_4_7068b
394cf:Set_4_7068b
394dd:Clr_4_7068b
394eb:Test_8_7068b
394f9:Set_8_7068b
39507:Clr_8_7068b
39515:Clock_marked_on_p	/Predicate: Saved clock displayed state (on/off)
39523:Mark_clock_on	/Set saved clock displayed state to ON
39531:Mark_clock_off	/Set saved clock displayed state to OFF
3953f:Test_4_70683
3954d:Set_4_70683
3955b:Clr_4_70683
39569:Test_1_70683
3957a:Set_1_70683
3958b:Clr_1_70683
39fb0:Test_2_70683
39fc1:Set_2_70683
39fd2:Clr_2_70683
3ff75:Test_4_7068c
3ff86:Set_4_7068c
3ff97:Clr_4_7068c
3ffa8:Test_1_70688
3ffb9:Set_1_70688
3ffca:Clr_1_70688
417af:Clr_4_70684
417c0:Set_4_70684
417d1:Test_4_70684
417e2:Clr_8_60686
417f3:Set_8_70686
41804:Test_8_70686
41815:Clr_8_70684
41826:Set_8_70684
41837:Test_8_70684
4248e:Store_70619
424a1:Get_70619
424b4:Test_70619
424c7:Clear_70619
44407:Get_nth_edit_char
515cd:Set_type_to_grob		/Set object type to GROB
51a4a:Conj_Swap_re_im		/CONJ, then swap RE, IM parts
51a5f:Swap_re_im_conj		/Swap RE, IM parts, then CONJ
51b2a:Zerop_lcmplx		/Predicate: Long Complex == (0,0)?
51b43:Zerop_cmplx		/Predicate: Complex == (0,0)?
51b91:Neg_lcmplx		/NEG Long Complex
51bc1:Conj_lcmplx		/CONJ Long Complex
538c0:Laststack_enabled_p	/Predicate: LAST STACK enabled?
53930:Print_format_on_p		/Predicate: string conversion in print fmt?
5393e:Setbit_8_70685
5394c:Clrbit_8_70685
5395a:Testbit_8_70685
53968:ALGmodep			/Predicate: ALG mode on?
53976:ALGmode_on		/Turn ALG mode on
53984:ALGmode_off		/Turn ALG mode off
53992:Marked_Istk		/Predicate: In Interactive Stack?
539a0:Toggle_marked_Istk	/Toggle Interactive Stack
539ae:Mark_Istk_off		/Exit Interactive Stack
539bc:Testbit_2_7068d
539ca:Setbit_2_7068d
539d8:Clrbit_2_7068d
53a12:Toggle_INS_mode		/Toggle INS mode
53a20:INS_Mode_off		/Turn INS mode off
53a2e:INS_mode_on		/Turn INS mode on
53a3c:INS_mode_p		/Predicate: INS mode?
53a4a:ImmedEntry_p		/Predicate: Immediate Entry?
53a66:ImmedEntry_off		/Turn Immediate Entry off
53a74:Testbit_4_7068d
53a82:Setbit_4_7068d
53a90:Clrbit_4_7068d
53a9e:Clock_on_p		/Clock displayed?
53ac8:Testbit_8_70683
53ad6:Setbit_8_70683
53ae4:Clrbit_8_70683
54050:Get_bin_base		/Binary base as short (<10>)
61910:If_not_true_then_drop_end	/IF NOT.TRUE THEN DROP END
619cb:Continue_at		/Chain to address
61a6d:End_Eval
61fa9:Dup_Builtin_xlib_p	/DUP, Predicate: True if XLIB is built-in
61fb6:Builtin_xlib_p		/Predicate: True if XLIB is built-in
62001:Roll4_Roll4		/Swap level 1 with 3 and 2 with 4
62289:Dup_Eq3p			/DUP, Predicate: == Short 3?
6229a:Equal2p			/Predicate: == Short 2?
622a7:Equal1p			/Predicate: == Short 1?
622b6:NotEqual1p		/Predicate: != Short 1?
622c5:Dup_Equal1p		/DUP, Predicate: != Short 1?
622d4:Dup_Nonzerop		/DUP, Predicate: != Short 0?
62394:Swap_Strcat		/SWAP, Strcat
623a0:Strcat			/Add level 1 to level 2 string
624fb:Sub_Div2			/- Short 2 /
64127:Is_Lev1_insideLev2p	/Predicate: is level 1 obj part of level 2 obj?


						-- Jan Brittenson
						   bson@ai.mit.edu