# ! "! The HP 48G/GX combines an easy-to-learn graphical user interface with advanced mathematics and engineering functionality, expanded memory capability, and seven new plot types. $ $ !! # !! " *' " +) +4 # 45#5'<0(<5*'<#35 )3#1*+/) %#-%6-#< 503 5*#5 %0.$+/'4 #/ '#4:<50<-'#3/ )3#1*+%#- 64'3 +/5'3(#%' 8+5* #&7#/%'& .#5*'.#5+%4 #/& '/)+/''3+/) (6/%5+0/#-+5: 5 +4 # %0/5+/6#5+0/ 0( 5*' #/& " 4'3+'4 0( %#-%6-#5034 8*+%* #3' &'4+)/'& (03 *+)* 108'3 '95'/&#$+-+5: #/& %6450.+;#$+-+5: *' " +/%-6&'4 +.1307'.'/54 50 #&&3'44 5*' /''&4 0( $05* /07+%' #/& #&7#/%'& 64'34 0( 4%+'/5+(+% #/& )3#1*+/) %#-%6-#5034 03 5*' /'8 64'3 03 5*' 64'3 8*0 &0'4 /05 64' %'35#+/ (6/%5+0/#-+5: 7'3: 0(5'/ 5*' %#-%6-#503 *#4 # &+#-0)<$09<45:-' (+--<+/<5*'<$-#/,4 64'3 +/5'3(#%' • • • • • • • 03 5*' 64'3 8*0 /''&4 50 &0 #&7#/%'& 130$-'. 40-7+/) 5*' %#-%6-#503 0(('34 5*' (0--08+/) ('#563'4 +(('3'/5+#- '26#5+0/ 40-7'34 0-:/0.+#- 3005 (+/&'3 +/#/%+#- 130$-'. 40-7'3 +$3#3: 0( '/)+/''3+/) '26#5+0/4 #/& %0/45#/54 063+'3 53#/4(03.4 #53+9 .#/+16-#5+0/4 +/'#3 #-)'$3# 01'3#5+0/4 03 5*' 64'3 8*0 /''&4 .03' .'.03: #/& '95'/&#$+-+5: 5*' " 7'34+0/ *#4 $:5'4 0( $6+-5<+/ %0.1#3'& 50 $:5'4 +/ 5*' #/& 7'34+0/4 *' 0/-: 05*'3 &+(('3'/%' $'58''/ 5*' #/& 5*' " +4 5*' 580 .'.03: %#3& 4-054 +/ 5*' " *' 4'%0/& .'.03: %#3& 4-05 #%%'154 61 50 $:5'4 0( 03 *' )3#1*+/) %#1#$+-+5: *#4 $''/ '91#/&'& 8+5* 5*' #&&+5+0/ 0( 4'7'/ /'8 1-05 5:1'4 (03 # 505#- 0( (+(5''/ *' " *#4 (6/%5+0/ 10-#3 1#3#.'53+% %0/+% 5365* *+450< )3#. $#3 #/& 4%#55'3 1-054 #/& 5*' " *#4 5*'4' 1-64 &+(('3'/5+#- '26#5+0/ 4-01' (+'-& 8+3'(3#.' 1#3#.'53+% 463(#%' )3+& .#1 14'6&0%0/5063 #/& :<4-+%' %3044<4'%5+0/ 1-054 • • • • • • • • • • • • • Fig. 1. " 4%+'/5+(+% )3#1*+/) %#-%6-#503 6)645 '8-'55<#%,#3& 063/#- *' " (6/%5+0/#-+5: *#4 $''/ 3'5#+/'& +/ 5*' " *' /'8 %#-%6-#503 *#4 58+%' 5*' #/& 3'5#+/4 .6%* 0( 5*' 03+)+/#- %0&' *' " #/& " $05* *#7' 5*' (0--08+/) ('#563'4 /+5 .#/#)'.'/5 #53+9!3+5'3 26#5+0/!3+5'3 0-7' /6.'3+% 40-7'3 <45:-' 45#%, %#-%6-#5+0/ :.$0-+% .#5*'.#5+%4 +.' #/& #-#3.4 5#5+45+%4 01'3#5+0/4 #3+#$-'4 #/& &+3'%503+'4 (03 &#5# 4503#)' 4'3<&'(+/#$-' ,':$0#3& #/& %6450. .'/64 130)3#..+/) -#/)6#)' 80<8#: +/(3#3'& %0..6/+%#5+0/4 -+/, < 4'3+#- %#$-' %0//'%503 "! *' %3'#5+0/ 0( 5*' " %#/ $' 53#%'& 50 5*' .'3+< %#/ #5*'.#5+%#- 0%+'5: .''5+/) +/ #/6#3: !' *#& $''/ %-04'-: (0--08+/) 5*' 53'/& 0( 64+/) 5'%*/0-0): +/ 5*' .#5*'.#5+%4 %-#44300. $'%#64' 063 40(58#3' 5'#. (-"+4#$2 %.1,$1 , 3'$, 3("2 $#4" 3.12 -# " +"4+42 3$73: !..* 43'.1 -# !$" 42$ 6$ 5(2(3 , 3'$, 3("2 $-&(-$$1(-& -# $#4" 3(.- ".-%$1$-"$2 -# 3 +* 3. $#4" 3.12 !.3' 3. /1.,.3$ $7(23(-& /1.#4"32 -# 3. %(-# .43 6' 3 3$ "'$12 -# 234#$-32 6.4+# +(*$ 3. 2$$ (- %4341$ /1.#4"32 3'$ 1$2.41"$2 -# ".-5$-3(.-2 .% 3'$ ./$1 3(-& 2823$, 2 -$6 ' 1#6 1$ 1$2.41"$2 !$".,$ -$"$22 18 -# 5 (+ !+$ 3'$ ./$1 3(-& 2823$, ,423 &1.6 3. , - &$ 3'.2$ 1$2.41"$2 $%%$"3(5$+8 -# 2 31 -2/ 1$-3+8 2 /.22(!+$ 3. 3'$ //+(" : 3(.-2 !4(+3 .- 3'$ 2823$, $ ' # 6 3"'$# 3'$ (-3$1$23 (- &1 /'(-& " +"4+ 3.12 &1.6 23$ #(+8 $ "' 8$ 1 -# ' # !$$- (-5.+5$# (- 6.1*2'./2 %.1 3$ "'$12 42(-& 3$"'-.+.&8 (- 3'$ "+ 221.., 3'1.4&' - &1 -32 /1.&1 , +3'.4&' 3'$ 6 2 !$".,(-& 23 -# 1# %.1 $-&(-$$1(-& 234#$-32 -# /1.%$22(.- + $-&(: -$$12 (3 6 2 )423 3'$ %(123 23$/ (- ,$$3(-& 3'$ -$$#2 .% 3'$ $#4" 3(.- ".,,4-(38 -# 6$ ".-3(-4$# 3. '$ 1 3' 3 (3 6 2 3.. #(%%("4+3 3. 42$ -# 3.. $7/$-2(5$ %.1 "+ 221.., 42$ 8 -4 18 6'$- 6$ 3 +*$# 3. $#4" 3.12 33$-#(-& 3'$ ,$$3(-& !.43 3'$(1 -$$#2 -# !.43 3'$ " +"4+ 3.12 3' 3 3'$8 6$1$ ".-2(#$1(-& %.1 42$ (- 3'$ "+ 221.., (3 !$: " ,$ .!5(.42 3' 3 6$ -$$#$# 3. ' 5$ -$6 /1.#4"3 %.1 3'$ $#4" 3(.- , 1*$3 -. + 3$1 3' - 3'$ ! "*:3.:2"'..+ /$: 1(.# '(2 1$24+3$# (- 3'$ %.1, 3(.- .% - $#4" 3(.- #5(2.18 ".,,(33$$ &1.4/ .% 2(7 , 3'$, 3("2 /1.%$22.12 6'. 6.4+# '$+/ 42 #$2(&- 3'$ " +"4+ 3.1 3. %(3 3'$ -$$#2 .% 3'$ $#4" 3(.- ".,,4-(38 -# 3'$- &(5$ 42 %$$#! "* .- .41 (,/+$,$-3 3(.- '$ ./$1 3(-& 2823$, -# 2823$, /1.&1 ,,(-& + -&4 &$ (- 3'$ (2 3'$ ./$1 3(-& 2823$, %(123 42$# (3'$ -# -# 24!2$04$-3+8 (- -4,!$1 .% .3'$1 , "'(-$2 (-"+4#(-& 3'$ -# -.6 6(3' $73$-2(.-2 (- 3'$ " 41 -4,!$1 .-$ .!)$"3(5$ %.1 3'$ -$6 " +"4+ 3.1 6 2 $ 2$ .% +$ 1-(-& '$ 42$12 .% 3'$ 3.+# 42 3' 3 3'$8 //1$"( 3$# (32 /.6$1 !43 (32 ".,/+$7(38 , #$ (3 #(%%("4+3 %.1 !.3' -.5("$ 42$12 -# $7/$1($-"$# 42$12 '$ -.5("$2 3$-: #$# 3. !$ (-3(,(# 3$# !8 3'$ $73$-2(5$ .6-$12 , -4 + -# 3'$ #(%%("4+38 .% , 23$1(-& 2. , -8 -$6 ./$1 3(.-2 6'(+$ 3'$ $7/$1($-"$# 42$12 ' # ' 1# 3(,$ 1$,$,!$1(-& '.6 3. 42$ 2.,$ ./$1 3(.-2 3' 3 3'$8 #(# -.3 42$ %1$04$-3+8 1$ 3(-& 23 3$:.%:3'$ 13 &1 /'(-& " +"4+ 3.1 6 2 .41 2$".-# .!)$"3(5$ $ -$$#$# 3. ## 2.,$ &1 /'(-& " / !(+(3($2 24"' 2 31 "(-& +.-& &1 /' -# 2' #(-& !$36$$- &1 /'2 )423 3. , (-3 (- / 1(38 6(3' .3'$1 &1 /'(-& " +"4+ 3.12 !43 6$ +2. 6 -3$# 3. &. % 1 !$8.-# 3'$ ".,/$3(3(.- 6(3' %$ 341$2 24"' 2 &1 /'(-& -# -(, 3(.- 41 3'(1# .!)$"3(5$ 6 2 3. $-' -"$ 3'$ '(&':$-# , 3'$, 3("2 " / !(+(38 .% 3'$ 6(3' 3'$ ##(3(.- .% %$ 341$2 24"' 2 #(%%$1$-3( + $04 3(.- 2.+5(-& /.+8-.,( + 1..3 %(-#(-& ,.1$ , 31(7 ./$1 3(.-2 -# .41($1 31 -2%.1,2 3'$1$!8 231$-&3'$-(-& .41 /.2(3(.- 2 3'$ ,.23 /.6$1%4+ 3$"'-(" + " +"4+ 3.1 (- 3'$ 6.1+# 8 .%%$1(-& 36. ,.#$+2 3'$ -# 3'$ 6$ (-3$-#$# 3. /+$ 2$ "423.,$12 3 !.3' $-#2 .% 3'$ $#4" 3(.2/$"314, '$ ' 2 +(23 /1("$ 3' 3 1$/1$2$-32 24!: 23 -3( + #$"1$ 2$ %1., 3'$ +(23 /1("$ .% 3'$ .1 '(2 , *$2 3'$ ".,/$3(3(5$ 6(3' .3'$1 &1 /'(-& " +"4+ 3.12 -# , *$2 (3 //$ +(-& $5$- 3 3'$ '(&' 2"'..+ +$5$+ '$ ' 2 ,.1$ //$ + %.1 ".++$&$ 234#$-32 6(3' %.41 3(,$2 2 ,4"' !4(+3:(- ,$,.18 -# 36. /+4&:(" 1# /.132 3' 3 1$ $7/ -# !+$ 3. !83$2 .% ,$,.18 # " +"4+ 3.1 .1 ".,/43$1 ./$1 3(-& 2823$, (2 /1(, 1(+8 2$3 .% ".-5$-3(.-2 %.1 ,$,.18 .1& -(9 3(.- # 3 2314"341$2 -# 1$2.41"$ ++." 3(.- 3.&$3'$1 6(3' 2$3 .% 2.%36 1$ 3..+2 3. (# (- /$1%.1,(-& ./$1 3(.-2 (- "".1# -"$ 6(3' 3'.2$ ".-: 5$-3(.-2 - ".-31 23 - //+(" 3(.- (2 2.%36 1$ !4(+3 42(-& ! '$ *$8 ".-"$/3 4-#$1+8(-& 3'$ ./$1 3(.- .% 3'$ " +"4+ 3.1 (2 3'$ (#$ .% .!)$"32 .- 3'$ 23 "* 23 "* (2 # 3 2314"341$ 3' 3 (2 2(,(+ 1 3. 23 "* .% " %$3$1( 31 82 '$ "+$ - 31 82 1$ ##$# 3. 3'$ 3./ .% 3'$ 23 "* -# 2 31 82 1$ -$$#$# 3'$8 1$ 1$,.5$# %1., 3'$ 3./ .% 3'$ 23 "* '(2 38/$ .% + 23 (- %(123 .43 .1#$1(-& "' 1 "3$1(9$2 3'$ 23 "* ++ ./$1 3(.-2 3 *$ 3'$(1 1&4,$-32 (% -8 %1., 3'$ 23 "* -# 1$341- 3'$(1 1$24+32 (% -8 3. 3'$ 23 "* '$1$ (2 .-+8 .-$ # 3 23 "* (- 3'$ '(2 1$2.41"$ (2 2' 1$# !8 3'$ 42$1 -# 3'$ 2823$, /1.&1 ,,$1 6'. ,423 3 *$ &1$ 3 " 1$ 3. , *$ 241$ 3' 3 -8 .!)$"32 3' 3 !$: +.-& 3. 3'$ 42$1 1$ /1$2$15$# 3'1.4&' 3'$ ./$1 3(.- .% 282: 3$, /1.&1 ,2 .1 $7 ,/+$ 3'$ 42$1 , 8 ' 5$ %$6 -4,!$12 2(33(-& .- 3'$ 23 "* 3'$- #$"(#$ 3. /+.3 3'$ &1 /' .% %4-"3(.- '$ 2823$, /1.&1 , 3' 3 14-2 6'$- 3'$ DRAW *$8 (2 /1$22$# #.$2 , -8 ./$1 3(.-2 3' 3 1$04(1$ 3'$ 42$ .% 3'$ 23 "* 24"' 2 1$" ++(-& 3'$ /+.33(-& / 1 ,$3$12 "'$"*(-& 3' 3 3'$8 1$ 5 +(# " +"4+ 3(-& 3'$ 1 -&$ .5$1 6'("' 3. /+.3 $5 +4 3(-& 3'$ 42$12 %4-"3(.- -# ".-5$13(-& 3'$ %4-"3(.- 5 +4$2 3. /(7$+ "..1#(- 3$2 %3$1 3'$ &1 /' (2 ".,: /+$3$ .1 (% 3'$ #1 6(-& .% 3'$ &1 /' (2 (-3$114/3$# !8 3'$ 42$1 6'$- 3'$ 42$1 2$$2 3'$ 23 "* & (- 3'$ 2 ,$ -4,!$12 3' 3 6$1$ 3'$1$ 3. !$&(- 6(3' 2'.4+# -.3 ' 5$ !$$- #(2341!$# -23$ # .% 31 82 42$12 , 8 ".++$"3 5 1(.42 38/$2 .% -4,$1(" 28,!.+(" -# &1 /'(" .!)$"32 .- 3'$ 23 "* '$ 38/$2 .% .!)$"32 5 (+ !+$ (- 3'$ (-"+4#$ 1$ + -# ".,/+$7 -4,!$12 1$ + -# ".,/+$7 11 82 !(- 18 (-3$&$12 - ,$2 "' 1 "3$12 231(-&2 3 &&$# .!)$32 +&$!1 (" .!)$"32 4-(3 .!)$"32 -# &1 /'(" .!)$"32 '$1$ 1$ +2. ! "*4/ .!: )$"32 +(!1 18 .!)$"32 #(1$"3.1($2 /1.&1 ,2 -# +(232 .!)$"3 38/$2 1$ #(2"422$# (- ,.1$ #$3 (+ (- 1$%$1$-"$ - *$8:/$1:%4-"3(.- " +"4+ 3.1 3'$1$ (2 2(-&+$ *$8 3' 3 3'$ 42$1 -$$#2 3. /1$22 3. &$3 3'$ , "'(-$ 3. /$1%.1, -8 ./$1 : 3(.- 24"' 2 ".2(-$ '$ ' 2 , -8 ,.1$ ./$1 : 3(.-2 3' - 3'$ *$82 .- 3'$ *$8!. 1# 2. 3'$1$ -$$#2 3. !$ 6 8 3. ""$22 ++ 3'$ %4-"3(.- +(38 6(3'.43 22(&-(-& .-$ ./$1 3(.- 3. $ "' *$8 .- 3'$ *$8!. 1# '(2 (2 "".,/+(2'$# 3'1.4&' 3'$ 42$ .% ,$-42 -# 2.%3*$82 '$ 3./ 1.6 .% *$82 .- 3'$ *$8!. 1# #. -.3 ' 5$ -83'(-& /1(-3$# .- 3'$, !$: " 42$ 3'$8 ".11$2/.-# 3. ,$-4 + !$+2 3' 3 //$ 1 +.-& 3'$ !.33., .% 3'$ 2"1$$- '$2$ *$82 1$ " ++$# 2.%3*$82 -# 3'$(1 ,$ -(-& "' -&$2 6'$-$5$1 3'$ ".11$2/.-#(-& + !$+2 .- 3'$ 2"1$$- 1$ "' -&$# !8 3'$ 2.%36 1$ # ! $ 6(++ -.6 #(2"422 3'$ ,$,.18 ".-31.++$1 ".-%(&41 3(.-2 42$# (- 3'$ -# '.6 3'$2$ 1$ 42$# (- (,/+$: ,$-3(-& 3'$ 5 1(.42 38/$2 .% $7/ -#$# ##1$22 ,.#$2 #$: 5$+./$# %.1 3'$2$ /1.#4"32 '$ -$73 2$"3(.- .43+(-$2 3'$ 4&423 $6+$33: "* 1# .41- + MMIO System RAM 32K Port 2 128K Higher Priority Port 1 128K Extra 2K System ROM 224K Covered ROM 32K Fig. 2. 4!.$!2$ -%-/29 #/.42/,< ,%2 #/.&)'52!4)/. &/2 4(% #!,#5,!4/2 %-/29 3):%3 !2% ). "94%3 Unused Controller Address Space Larger Addresses $)&&%2%.#%3 ). #/.&)'52!4)/. "%47%%. 4(% !.$ 4(% !.$ $)3#533%3 (/7 4(%3% $)&&%2%.#%3 !2% 53%$ 4/ %84%.$ !.$ 2%&).% 4(% %80!.$%$ !$$2%33 4%#(./,/'9 4/ 02/< 6)$% !##%33 4/ ! 4/4!, /& "94%3 /& #/$% !.$ $!4! !3 42!.30!2%.4,9 !3 0/33)",% (% "53 !2#()4%#452% &)234 $%6%,/0%$ &/2 4(% !.$ 53%$ ). !,, #!,#5,!4/23 3).#% 4(!4 4)-% (!3 3%6%2!, 53%&5, &%!452%3 .% /& 4(% .)#%34 )3 )43 !$$2%33 #/.&)'52!4)/. #!0!< "),)4)%3 ,, #()03 !44!#(%$ 4/ 4(% "53 !2% 2%15)2%$ 4/ "% !",% 4/ #(!.'% /. #/--!.$ /& 4(% "53 4(% 2!.'% /& !$$2%33%3 4(!4 %6/+% ! 2%30/.3% &2/- 4(% #()03 5#( ! 3934%- %,)-)< .!4%3 /.#% !.$ &/2 !,, 4(% ).#/.6%.)%.#% !.$ (%!$!#(% /& #/.&)'52).' *5-0%2 37)4#(%3 /. #!2$3 $%3)'.%$ 4/ 0,5' ).4/ 4(% -!#().% /2 ! #/.35-%2 02/$5#4 ,)+% ! #!,#5,!4/2 4()3 )3 ./4 /.,9 ! .)#%49 )4 )3 ! .%#%33)49 . 4(% %!2,9 $!93 /& 4(% !2#()4%#452% 4/ 4(% "53 ,).%3 7%2% !#45!,,9 2/54%$ !2/5.$ 4(% #)2#5)4 "/!2$ !.$ !.9 /2 -%-/29 -!00%$ 4(!4 7!3 !4< 4!#(%$ 4/ 4(% "53 (!$ 4/ "% #534/-<-!$% 7)4( 4(% "53 ).4%2< &!#% !44!#(%$ ()3 (!$ 4(% !$6!.4!'% /& !,,/7).' !. !2")42!29 .5-"%2 /& 0!243 4/ "% !$$%$ 4/ 4(% 3934%- 7)4( !3352!.#% 4(!4 4(% 3934%- 7/5,$ "% #!0!",% /& (!.$,).' !,, /& 4(%- ). /.% 7!9 /2 !./4(%2 4 (!$ 4(% '2!6% $)3!$6!.4!'% /& 0544).' ! 02)#% 02%-)5- /. 35#( %33%.4)!, )4%-3 !3 !.$ . 4(% 3%#/.$<'%.%2!4)/. #()0 ! &)8%$ .5-"%2 /& -%-< /29 #/.42/,,%23 7%2% ).#,5$%$ /."/!2$ 4(% (% "53 7!3 4(%. &/2 !,, 02!#4)#!, 0520/3%3 #/-0,%4%,9 ()$$%. 7)4(). 4(% )43%,& (% #/-").!4)/. /& %84%2.!, 34!.$!2$ /2 4/'%4(%2 7)4( /.% /& 4(% ).4%2.!, -%-/29 #/.42/,,%23 7!3 4(%. %15)6!,%.4 3/ &!2 !3 4(% "53 )3 #/.#%2.%$ 4/ ! 34!.$!2$ "53 $%6)#% . 4(% 34!.$!2$ $%6)#% )-0,%-%.4!4)/.3 4(% 3):% /& 4(% $%6)#% 4(!4 )3 4(% !$$2%33 30!#% /##50)%$ "9 4(% $%6)#% )3 $%< 3)'.%$ ).4/ 4(% $%6)#% . 4(% 3%#/.$<'%.%2!4)/. #()0 4(% 3):% /& 4(% #/.42/,,%23 7!3 -!3+ 02/'2!--%$ !4 4(% 4)-% /& -!.< 5&!#452% 3).#% 7% +.%7 %8!#4,9 7(!4 3):% %!#( #/.42/,,%$ $%6)#% 7/5,$ "% )4( 4(% !$6%.4 /& 0,5'<).3 &/2 4(% 4(% #/.&)'5< 2!4)/. #!0!"),)4)%3 /& 4(% -%-/29 #/.42/,,%23 (!$ 4/ "% %8< 0!.$%$ 4/ ).#,5$% 6!29).' 4(% !00!2%.4 3):% /& 4(% -%-/29 #/.42/,,%2 4/ #/.&/2- 7)4( 4(% $%6)#% "%).' 0,5''%$ ). ()3 )3 /.% /& 4(% -!.9 !$6!.#%$ &%!452%3 ). 4(% 4()2$<'%.%2!4)/. )-0,%-%.4!4)/. /& 4(% !2#()4%#452% ()3 2%3):).' &%!452% ). !$$)4)/. 4/ !,,/7).' 0,5'<).3 /& 6!2)/53 3):%3 !,3/ 02%3%.4%$ 4(% /00/245.)49 4/ %80,/2% %80!.$%$ !$$2%33 -/$%3 7()#( 7% (!6% #/-% 4/ #!,, 4(% ;#/6%2%$ 4%#(./,< /'9 &/2 2%!3/.3 4(!4 7),, "% !00!2%.4 3(/24,9 (% 4()2$<'%.%2!4)/. #()0 (!3 3)8 -%-/29 #/.42/,,%23 . 4(% 4(%3% !2% !,,/#!4%$ 4/ -%-/29 -!00%$ 3934%- 0/24 0/24 !.$ 3934%- !.$ 4(%2% )3 /.% %842! #/.42/,,%2 (%)2 #/.&)'52!4)/. ). 4(% 535!, 34!4% )3 3(/7. ). )' (% -%-/29 #/.42/,,%23 !2% 3(/7. 7)4( 4(%)2 3):%3 !.$ ,/#!4)/.3 ). 4(% !$$2%33 30!#% ( 4/ ( (%9 !2% !,3/ 0)#452%$ !3 (!6).' ! 6%24)#!, ,/#!4)/. ). ;02)/2)49 30!#% . 4(% "53 $%&).)4)/. 4(% $%6)#%3 !2% #(!).%$ 7)4( 4(% 2%35,4 4(!4 $%6)#%3 #,/3%34 4/ 4(% /. MMIO System RAM (Shrunken) Higher Priority Port 1 128K Covered Code to be Executed In-Place System ROM Covered ROM 32K Larger Addresses 5'534 %7,%44<!#+!2$ /52.!, Unused Fig. 3. 8%#54%<).<0,!#% #/.&)'5< 2!4)/. &/2 #/6%2%$ #/$% MMIO System RAM (Shrunken) Mailbox in System RAM Higher Priority Port 1 (128K) Covered Code and Data to Copy to Mailbox System ROM Unused Fig. 4. /09;4/;-!),"/8 #/.&)'5; 2!4)/. &/2 #/6%2%$ $!4! Covered ROM 32K Larger Addresses 4(% #(!). (!6% 4(% &)234 /00/245.)49 4/ 2%30/.$ 4/ "53 2%; 15%343 . #/.3%15%.#% )& 47/ $%6)#%3 !2% #/.&)'52%$ 7)4( /6%2,!00).' !$$2%33 2!.'%3 4(% /.% #,/3%2 4/ 4(% /. 4(% #(!). %&&%#4)6%,9 ()$%3 4(% -/2% $)34!.4 /.% . )'3 4/ ()'(%2 02)/2)49 #!. "% ).4%202%4%$ !3 :#,/3%2 4/ 4(% /2 :()$%3 4(/3% "%,/7 3 3(/7. ). )' 4(% -%-/29 #/.42/,,%2 &/2 3934%- ()$%3 4(% 3%#4)/. /& 3(/7. !3 #/6%2%$ ()3 )3 4(% 2%!3/. &/2 4(% .!-% :#/6%2%$ 4%#(./,/'9 )' 3(/73 -/2% $%4!), /& 4(% #/6%2%$ !.$ 4(% &)234 7!9 ). 7()#( )4 )3 53%$ . /.% 3%#4)/. /& 4(% #/6%2%$ 4(%2% )3 !33%-",9 ,!.'5!'% #/$% -/34,9 -!4( 2/54).%3 4(!4 2%15)2%3 ./ 2%3/52#%3 /543)$% 4(% &/2 %8%#54)/. ()3 #/$% )3 %8%#54%$ ).;0,!#% ). 4(% #/6%2%$ "9 3(2).+).' !.$/2 -/6).' 4(% -%-/29 #/.42/,,%2 &/2 3934% 3/ 4(!4 4(% 2%,%6!.4 3%#4)/. /& #/$% )3 4%-0/2!2),9 5.; #/6%2%$ (%. 4(% 2/54).% &).)3(%3 %8%#54)/. 3934%- )3 2%452.%$ 4/ )43 ./2-!, #/.&)'52!4)/. 3%#/.$ 3%4 /& 2/54).%3 !,, /& 7()#( /.,9 .%%$ !##%33 4/ ! &)8%$ 3%4 /& ,/#!4)/.3 7)4(). 3934%- #!. %8%#54% 7)4( 3934%- ). !.9 /.% /& ,/#!4)/.3 !3 ,/.' !3 4(%9 4(%-3%,6%3 !2% ./4 #522%.4,9 #/6%2%$ "9 3934%- )' 3(/73 ! 3%#/.$ 7!9 ). 7()#( 4(% #/6%2%$ )3 53%$ . 4()3 #!3% #/$% !.$ $!4! -/34,9 $!4! !2% #/0)%$ &2/- #/6%2%$ 4/ ! -!),"/8 !4 ! &)8%$ ,/#!4)/. ). 3934% &4%2 4(% #/09 )3 #/-0,%4%$ 3934%- )3 2%452.%$ 4/ )43 ./2-!, #/.&)'52!4)/. !.$ 4(% #/$% !.$ $!4! !2% !6!),; !",% 4/ 4(% 2%34 /& 4(% 3934%- /$%23 53).' 4()3 $!4! -534 2%-!). !7!2% 4(!4 )4 )3 6/,!4),% !.$ #!. "% $%342/9%$ "9 !.; /4(%2 &%4#( /& $!4! &2/- #/6%2%$ . 4()3 3%.3% 4()3 -%4(/$ )3 ./4 42!.30!2%.4 ./4(%2 7!9 ). 7()#( #/6%2%$ )3 53%$ )3 3(/7. ). )' 4 )3 !3 42!.30!2%.4 !3 4(% %8%#54%;).;0,!#% -%4(/$ "54 %.4!),3 &%7%2 2%342)#4)/.3 /. 4(% #/$% !.$ $!4! 4(!4 #!. "% ).#,5$%$ . 4(% #/$% 4()3 3934%- )3 535!,,9 4)%$ 4/ 4(% %8%#54)/. /& 3 %#!,, 4(!4 3 !2% /"*%#43 4(!4 35"34)454% &/2 (!2$ !$$2%33%3 /& /"*%#43 7(/3% 02%#)3% ,/#!4)/. )3 ./4 +./7. ). !$6!.#% !.$ ). &!#4 -)'(4 ./4 %6%. "% 02%3%.4 (%9 !2% -)$7!9 "%47%%. (!2$ !$; $2%33%3 4(!4 /.,9 #(!.'% !4 #/-0),%,).+ 4)-% !.$ )$%.4)&)%23 7(/3% #/22%30/.$).' /"*%#43 -!9 -/6% "%47%%. 35"3%15%.4 #!,,3 !4 25. 4)-% & $52).' 4(% #/.6%23)/. /& ! 4/ !. !$$2%33 )4 )3 $%4%2-).%$ 4(!4 4(% #/22%30/.$).' /"*%#4 ,)6%3 ). #/6%2%$ 4(% /"*%#4 )3 #/0)%$ &2/- #/6%2%$ 4(2/5'( 4(% -!),"/8 4/ 4(% TEMPOB 4%-0/2!29 /"*%#4 !2%! (% !$$2%33 /& )43 .%7 ,/#!4)/. ). 4(% TEMPOB !2%! )3 4(%. 2%452.%$ )' 3(/73 ! #/-0!2)3/. /& ! .!-%$ 7/2$ +%97/2$ /2 #/--!.$ !3 )4 7/5,$ %8)34 ). #/6%2%$ !.$ !3 #/0)%$ 4/ 4(% TEMPOB !2%! ,4(/5'( 7%,, 2%&%2 "!#+ 4/ )' ,!4%2 &/2 ./7 ./4)#% 4(!4 ). !$$)4)/. 4/ 4(% /"*%#4 )43%,& !. !$$); 4)/.!, 0)%#% )3 !$$%$ 4/ 4(% )-!'% ). 4(% TEMPOB !2%! ()3 0)%#% )3 ! 02%#%$).' 4(% /"*%#4 )43%,& ()3 !,,/73 MMIO TEMPOB Area System RAM Port 1 (128K) Covered ROM Words to Copy to the TEMPOB Area System ROM Unused Covered ROM 32K Larger Addresses Higher Priority Mailbox in System RAM Fig. 5. /09;4/;TEMPOB #/.&)'52!; 4)/. &/2 #/6%2%$ 7/2$3 5'534 %7,%44;!#+!2$ /52.!, These features required increasing the usable address space from 0.5M bytes to 4.75M bytes, an 850% increase over preĆ vious machines. Mark and Link Property List Flags ROMPTR Body ROMPTR Preceding Object While the HP 48G/GX has CPU functionally equivalent to the thirdĆgeneration CPU discussed above and thus has six memory controllers, these controllers are configured and used differently. Fig. 7 shows the standard HP 48GX configĆ uration. The controller previously allocated to port 2 is now used as a bank switch control, and the extra controller is now allocated to port 2. Furthermore, there are now as many as 34 layers over the last 128K bytes of address space. DOROMP ROMPTR Body ROM Word Body ROM Word Body Property List Item Mark and Link Property List Item Property List Item Property List Item Property List Item In ROM In TEMPOB Fig. 6. Comparing the structure of a ROM word as resident in ROM and when copied to TEMPOB using covered technology. the routine converting the ROMPTR to an address to check whether the object in question is a copy of one residing elsewhere. This method of covered ROM access, which we call covered ROM word access," will be especially relevant to our discussion of the HP 48G/GX. Preexisting design elements of the RPL system contributed greatly to the practicality and transparency of covered ROM word access, including: • Encapsulation of code and data into RPL objects that are of determinable size • Indifference of RPL object execution to object location in RAM or ROM • Equivalence of direct and indirect execution of RPL objects, which allows (noncircular) structures to be stored and used in the same format. To simplify the system, we use only a single covered techĆ nique, namely, covered ROM word access, with appropriate modifications. Without this simplification, the number of access method and configuration combinations would be unmanageable. Moreover, this is the only feasible method of covered access to code written for the HP 48S/SX or not expressly written for the the new configuration. Fig. 8 shows the configuration while copying an object from a bank of port 2 to the TEMPOB area. Port 1 is unconfigured. In the unconfigured state, the controller responds to only a handful of bus commands and acts as if it weren't there for data access. Fig. 9 shows the configuration while copying an object from the second half of the upper system ROM. In this case, both ports are unconfigured. Fig. 10 shows the configuration while copying an object from the first half of the upper system ROM. Since a controller move or resize operation takes many more CPU resources than configure or unconfigure, it is often necessary to copy objects from this section, through a mailbox, and then into the TEMPOB area. MMIO System RAM (128K) Port 1 (128K) Bank Switch Control (2K) Port 2 4M Bytes in 128K Banks System ROM II (256K) System ROM I (256K) Higher Addresses August 1994 HewlettĆPackard Journal Higher Priority • • • • The HP 48GX has a number of important features including: Up to 128K bytes of builtĆin system RAM One plugĆin port electrically equivalent to the HP 48SX ports Access to 512K bytes of system ROM Access to 4M bytes of RAM or ROM at a second port using industryĆstandard parts. Eliminated in this configuration is the HP 48S/SX covered ROM. This means that all of the functionality included in the HP 48S/SX can be accessed more quickly. Two things that are visibly enhanced are plotting (since the math routines are not covered) and screen update (since the font bitmaps are not covered.) Since there are a great many more covered places to access, however, there are many more temporary" conĆ figurations to keep track of while working with the covered data. Fig. 7. HP 48GX standard memory controller configuration. MMIO Port 1 Unconfigured System RAM (128K) (2K) Port 2 4M Bytes in 128K Banks Higher Priority Port 1 (128K) Bank Switch Control System ROM II (256K) System ROM I (256K) Fig. 8. )( #!.+-#)( )+ )*2#(! ( )$- +)' (% ) *)+- -) TEMPOB Higher Addresses Ports 1 & 2 Unconfigured MMIO System RAM (128K) (2K) Port 2 4M Bytes in 128K Banks System ROM I (256K) Higher Priority Port 1 (128K) Bank Switch Control System ROM II (256K) Fig. 9. )( #!.+-#)( )+ )*2#(! ( )$- -) TEMPOB +)' -" .**+ "& ) ,2,-' Higher Addresses #! ,")0, -" )( #!.+-#)( 0"( #- #, -+'#( -"()-"#(! #, *&.!! #( - && ( -"#, , -" )(&2 )/+ ,, #, -) -" #+,- "& ) -" .**+ ,2,-' !#( ##, &#%&2 -) (,,+2 -) )*2 -"#, '-+#& -"+).!" '#&4 )1 -"+0#, && -" 0)+, ( 1.- #(4*& #! ,")0, -" ,-(+ )( #!.+-#)( 0"#" #, #(-#& -) #! 1*- )+ -" ,'&&+ ,#3 ) ,2,-' "#& #- #, ()- ,-+#-&2 (,,+2 -) ., -"#, )( #!.+4 -#)( 0"#" '-", )( ) -" )( #!.+-#)(, -"+ + /(-!, #+,- #- &&)0, '1#'& ) ,"+#(! -0( -" -0) '"#(, ( - -" ) ( #(-#& #( -"#, , )( #- !#(, -" /(-! ) ,-+ ,, -) -" , .(-#)(&#-2 *+)/##(! ')+ +,*)(,#/ #'*&'(--#)( " "+- ) -" #, ).+-"4!(+-#)( "#* "#, .,-)' #, .#&- +).( -" )+#!#(& *+),,)+ ( #-, /&)*'(- 0, %2 -) -" +-#)( ) MMIO System RAM (128K) (2K) Port 2 4M Bytes in 128K Banks System ROM I (256K) System ROM II (256K) Higher Addresses Higher Priority Port 1 (128K) Bank Switch Control Fig. 10. )( #!.+-#)( )+ )*2#(! ( )$- -) TEMPOB -"+).!" '#&)1 .!.,- 0&--4%+ ).+(& MMIO Port 1 (Shrunken) (2K) Higher Priority Bank Switch Control System RAM (128K) Port 2 (Shrunken) System ROM II (256K) System ROM I (256K) Fig. 11. HP 48GX allĆportsĆempty configuration. Higher Addresses the HP 48G/GX. This chip has four advantages over the thirdĆgeneration chip used in the HP 48S/SX. First, it is proĆ duced using a different CMOS process, allowing better stabilĆ ity with onboard voltage regulation circuitry. Second, these improved voltage characteristics and several lowĆlevel optiĆ mizations allow the new CPU to operate at twice the speed of its predecessor. This speed increase gives it a 4ĆMHz bus rate. Third, the new CPU is packaged in a 160Ćpin quad flatĆ pack, improving the manufacturability of the HP 48G/GX. Fourth, with all these improvements, the final cost is lower, increasing the budget for other hardware improvements to the calculator. The faster processing speed of the HP 48G/GX CPU gave the software team incentive to improve the user interface, implementing graphical routines that would not have been acceptable at the slower processing rate. This added funcĆ tionality required an increase in data storage space, so we boosted the size of ROM and RAM. We also decided to add the facilities to bankĆswitch a data card plugged into card port two. The HP 48G/GX circuitry, with its additional components, had to fit in the same physical space as in the HP 48SX. The product plan and schedule did not allow changes to producĆ tion tooling or plastic parts except for those that were absoĆ lutely necessary. At times we felt like poets trying to write crossword puzzles. The HP 48SX circuit board design was optimized such that it did not leave us much free space. These space constraints affected many of the HP 48G/GX hardware design choices. The RAM increased from 32K bytes in the HP 48SX to 128K bytes in the HP 48GX, while the HP 48G retained the origiĆ nal 32KĆbyte chip. This difference between the G and the GX offers two advantages. First, it provides more differentiĆ ation between the functions and cost of the G and the GX, increasing the product family's market appeal. Second, the difference in RAM size provides a way for the calculator to know whether it is a G or a GX. If the calculator scans the RAM and finds only 32K bytes, then there will never be a plugĆin data card installed. With this information the covered memory options become much simpler. The RAM memory size becomes an internal product type identifier, and several software routines are optimized for faster performance on the HP 48G. The HP 48G and GX share a common ROM code set. They also share a common circuit board. While this simplifies docĆ umentation, manufacturing, and stock control, it also compliĆ cates some areas. The HP 48GX RAM chip is wider and longer than the chip used in the HP 48G: the 32K RAM is in a 28Ćpin smallĆoutline package (SOP), and the 128K device is a 32Ćpin SOP. Both conform to the JEDEC pinout standard. A 128K device was chosen that has an extra chip select line at pin 30. This chip select is tied high, allowing pins 1 through MMIO Port 1 (Shrunken) (2K) Higher Priority Bank Switch Control System RAM (32K) Port 2 (Shrunken) System ROM I (256K) System ROM II (256K) Higher Addresses August 1994 HewlettĆPackard Journal Fig. 12. HP 48G standard configuration. 28 of the smaller RAM to overlay pins 3 through 30 of the larger device. The extra chip select of the HP 48GX RAM matches the Vdd line of the HP 48G RAM chip, and all of the other lines are pinoutĆcompatible. The difference in physical package width also posed a problem. The foil patterns on the circuit board had to be modified to accept RAM chips with different lead spacings across the package. The immediate response was simply to stretch the ovalĆshaped patterns. However, this resulted in the foil extending well under the body of the 128K chip, a situation that could have led to solder bridging where the solder paste contacted the part body. This is avoided by using two different solder stencils on the manufacturing line. A paste of solder is laid on the blank circuit board before parts are loaded onto the board. A metal stencil defines the pattern of the solder paste, just as a silk screen controls the pattern of ink on a shirt. By using a different stencil pattern for the G and GX circuit boards, we control the original location of the solder paste and keep it out from under the 128KĆbyte RAM body. Once all the components are loaded onto the circuit board and the solder is heated to a molten state, a danger might again exist for the solder to flow under the part body. Fortunately, the nature of the mechanical contact between the RAM lead and the circuit board foil tends to cause the solder to pool or wick to the lead rather than spreading across the elongated foil pad. The packaging of the ROM chip was also changed between the HP 48SX and the HP 48GX. The SX used a square 52Ćpin quad flatpack for its 256K bytes of program data. The code size of the HP 48GX is doubled to 512K bytes. Its package is a 32Ćpin SOP like the 128KĆbyte RAM chip. Their common package configuration allowed us to conserve space in the placement of the two chips and in the routing of signal wires between them. Use of a standard SOP ROM chip also allowed us to use oneĆtime programmable (OTP) ROMs in prototype calculaĆ tors. An OTP uses the same semiconductor core as a UVĆ erasable EPROM. To get the semiconductor chip into an SOP, however, the manufacturer omits the familiar glass winĆ dow in the chip, covering the device in opaque plastic. The resulting ROM is no longer erasable. Typically, a product schedule requires months between code release and the start of production so that ROMs can be built with the software code builtĆin. The use of OTPs on this project cut the required time from months to days. For one prototype run, the time between code availability and prodĆ uct build was only a few hours. The HP 48G/GX CPU multiplexes the highest address bit, A18, with an additional chip enable line, CE3. The original idea was to allow future expansion of the HP 48 family, either to use a larger ROM chip or to include an additional memory mapped device. By the time the HP 48G/GX design was complete, we had decided to do both. We doubled ROM to 219 bytes, and we added bank switching to card port 2. Two small HCMOS chips were added to the board to demultiplex these signals. The two chips are a quad NAND chip and a hex D flipĆflop, similar to the standard TTL devices. The multiĆ plexing is accomplished by simply toggling a control bit inĆ side the HP 48G/GX CPU. To demultiplex the A18 and CE3 signals, we developed a protocol for mirroring the state of the internal bit to one of the external D flipĆflops. The NAND gates handle signal demultiplexing, and the remaining five flipĆflops form a register for the card port 2 bank address. The card ports of the HP 48SX were designed for Epson memory cards. Several unused lines were adapted to provide external video signals to drive an enlarged display for classĆ room use. On the HP 48GX, the video lines are retained only on card port 1. On card port 2, the video lines are reĆ placed by five additional address lines. The system software allows the card in port 2 to be subdivided into 128KĆbyte sections, with each section treated as a virtual plugĆin card. Five bank select address lines permit up to 32 virtual plugĆ ins in card port 2, yielding a maximum card size of 4M bytes in the plugĆin port. With the ROM, RAM, and plugĆin opĆ tions, an HP 48GX can access 4,980,736 bytes of onboard data. Since the inception of the HP 48 family of calculators, liquid crystal display technology has progressed significantly. The display in the HP 48G/GX provides improved visibility by improvements in pixel contrast. The display is thinner than before. This change in glass thickness reduces the parallax between the pixel within the display and its shadow on the rear face of the display. In the HP 48SX, the pixel contrast was lower and the shadow was not dark enough to cause problems, but in testing the new HP 48G/GX display under various light conditions, we found that shadow effects made the display hard to read. With the thinner glass now used, the pixel and its shadow appear as one image, and the shadow now enhances the appearance of the pixel. Changes to plastic parts were not permitted, except where necessary. The back case of the HP 48G/GX required changes. The changes were all accomplished by making mold inserts. Where text on the mold needed changes or additions, the affected area of the mold was milled away. A piece of steel was placed into the hole to make a perfect fit, and the face of this new piece was etched or inscribed with the new textures and features. The new back case helps identify the differences between card ports 1 and 2, updates the copyright information, adds a mark indicating that the HP 48G/GX complies with Mexico's importation laws, and adds an area for a customized nameplate. The customized nameplate is a piece of metal with adhesive on one side. The customer's name can be engraved on the plate and atĆ tached to an inset area of the back case. This is the same nameplate used on HP's palmtop computer family. The result of these changes is a computer platform that is more powerful than its predecessor, is wellĆsuited to the enhanced user interface developed by the software team, is more versatile for both the user and the design engineer, and is less expensive to produce. It started as a processor upgrade and became a major product improvement. With ease of learning and ease of use the primary goals for the new HP 48G/GX calculator, the user interface and many builtĆin applications have been largely redesigned. provide the common starting point for the new and rewritten applications in the HP 48G/GX. Looking much like dialog boxes in an Apple Macintosh or Microsoft August 1994 HewlettĆPackard Journal Title Label Field Help Line Menu Fig. 13. 6;2+%#. +0276 (14/ EDIT !+0&195 +0276 (14/5 2418+&' # (+..<+0<6*'<$.#0-5 )7+&' 61 6*' +0276 0''&'& (14 # 6#5- 2.75 #22.+%#6+10<52'%+(+% /'07 -';5 (14 #%6+0) 10 6*#6 +0276 14 5'.'%6+0) #0 #22.+%#6+10 +0 # 2#46+%7.#4 612+% #0& (14 2+%-+0) #0 +0276 (41/ #/10) 5'8'4#. %*1+%'5 9' &'8'.12'& choose boxes # 6;2' 1( 212<72 /'07 6*#6 57))'565 #.6'40#< 6+8'5 #0& 0#44195 6*' +0276 (1%75 !' &'5+)0'& message boxes 61 /#-' (''&$#%- 61 6*' 75'4 /14' /#0#)'#$.' 9+6*+0 174 +0%4'#5+0).; %419&'& &+52.#; 52#%' '55#)' $1:'5 #22'#4 10 612 1( 9*#6'8'4 6*' 75'4 +5 914-+0) 10 #0& 2418+&' /14' (.':+$+.+6; (14 (14/#66'& /'5< 5#)'5 #0& +%105 6*#0 6*' 691<.+0' (+:'&<.1%#6+10 '4414 /'5< 5#)'5 6*'; 4'2.#%' *'; #.51 24'5'48' 6*' %106':6 6*#6 %#0 16*'49+5' $' .156 9*'0 51/'6*+0) 57424+5+0) *#22'05 9+6*+0 #0 #22.+%#6+10 0 +0276 (14/ 2418+&'5 $16* # /'#05 61 '06'4 &#6# 2'46+0'06 61 #0 #22.+%#6+10 #0& 12'4#6+105 6*#6 2'4/+6 6*' 75'4 61 &+4'%6 #%6+105 +57#..; #0 +0276 (14/ %105+565 1( 5'' +) • 6+6.' 57))'56+0) 6*' (14/5 274215' • 0' 14 /14' (+'.&5 6;2+%#..; 9+6* ':2.#0#614; .#$'.5 9*+%* #4' 75'& 61 )#6*'4 #0& &+52.#; 75'4 +0276 • *'.2 .+0' 6*#6 &'6#+.5 6*' +0276 ':2'%6'& +0 6*' 5'.'%6'& (+'.& • '07 -';5 6*#6 2418+&' /14' 126+105 (14 914-+0) 9+6*+0 14 ':+6+0) 6*' +0276 (14/ #%* +0276 (14/ (+'.& %#0 $' 10' 1( (174 6;2'5 156 +0276 (14/5 57%* #5 6*' Set Alarm #0& I/O Transfer +0276 (14/5 %10< 6#+0 5'8'4#. 14 #.. 6;2'5 1( (+'.&5 Text fields #4' 75'& 61 '06'4 #4$+64#4; " 1$,'%65 .+-' 4'#. 07/$'45 #0& /#64+%'5 6*' 1$,'%6 6;2'5 #..19'& #4' 52'%+(+% 61 '#%* 6':6 (+'.& 0 +) # 6':6 (+'.& +5 75'& 61 '06'4 #0 #.#4/ /'55#)' +0 6*' Set Alarm +0276 (14/ Fig. 14. 5+0) # 6':6 (+'.& +0 #0 +0276 (14/ 6*' Transfer +0276 (14/ 6*' Name (+'.& +5 # %1/$+0'& (+'.& 6*#6 2'4/+65 0'9 0#/'5 61 $' '06'4'& 14 6*' 0#/'5 1( ':+56< +0) " 8#4+#$.'5 14 (+.'5 61 $' 5'.'%6'& 5'' +) 5 6*' (+)74'5 +..7564#6' '#%* 1( 6*' 6*4'' $#5' (+'.& 6;2'5 *#5 #551%+#6'& 9+6* +6 # &'&+%#6'& /'07 -'; 6*#6 64+))'45 6*' 70+37' ('#674' 1( 6*#6 (+'.& 6;2' *+5 ('#674' +5 #0 +/2146#06 2#46 1( *19 9' /#+06#+0'& # %#.%7.#614 -';<2'4<(70%6+10< 56;.' +06'4(#%' 9+6*+0 6*' %10564#+065 1( # 5/#.. &+52.#; #0& 9+6* 01 21+06+0) &'8+%' 0 16*'4 )4#2*+%#. 75'4 +06'4(#%'5 8+57#. '.'/'065 57%* #5 .+56 #44195 #4' #%6+8#6'& $; /175' %.+%-5 61 '.+%+6 &+(('4'06 $'*#8+145 (41/ (+'.&5 0 6*' CHOOS !*'0 # 5+0).' %*1+%' #/10) 5'8'4#. +5 4'37+4'& list fields #4' 75'& 61 '.+/+0#6' +08#.+& +0276 #0& 61 *'.2 (1%75 75'4 #%6+105 1 5'.'%6 #0 '064; +0 # .+56 (+'.& # %*115' $1: +5 &+52.#;'& 0 +) # .+56 (+'.& +5 75'& 61 52'%+(; 6*' 64#05< ('4 (14/#6 +0 6*' I/O Transfer +0276 (14/ 1/'6+/'5 10.; # 5+/2.' ;'5<01 &1<14<&106 6;2' 1( %*1+%' +5 0''&'& 14 6*+5 9' 75' check fields +) 5*195 *19 6*' 18'494+6' OVWR (+'.& +5 75'& 61 52'%+(; 9*'6*'4 14 016 #0 ':+56+0) 8#4+#$.' 5*17.& $' 18'494+66'0 +0#..; 9*'0 #4$+64#4; +0276 +5 2155+$.' $76 .1)+%#. %*1+%'5 #4' #.51 #8#+.#$.' combined text/list fields #4' '/2.1;'& 0 7)756 '9.'66<#%-#4& 1740#. Fig. 15. 5+0) # .+56 (+'.& +0 #0 +0276 (14/ CHK Fig. 18. A typical choose box. a specific application from among several. Fig. 18 shows the choose box that is displayed when the STAT key is pressed to perform statistical calculations. When circumstances require, choose boxes can include any or all of several advanced features. The Memory Browser application, for example, is actually a maximumĆsize choose box embellished with a title, multichoice capability, and a custom menu (see Fig. 19). Fig. 16. Using a check field in an input form. 48G/GX, the user's finger acts as the pointing device, triggerĆ ing the desired behavior by pressing the appropriate action button for each field. Consistent location of the three types of action buttons helps the user navigate an input form confidently. Some input form menu keys perform applicationĆspecific operationsĊfor example, DRAW in Plotting. In the second row of the input form menu are more advanced input form operaĆ tions for resetting a field or the entire form, displaying the object types allowed in a field, and temporarily accessing the user stack to calculate or modify a field value. Choose boxes are used to make a choice in an input form list field. They are also used in most subject areas to choose CHOOS Fig. 17. Using a combined text/list field in an input form. Message boxes are used primarily for reporting errors that require attention before proceeding. For example, if the user attempts to enter a vector in the EXPR field of the Integrate input form, a message box appears to inform the user of the problem (see Fig. 20). Some applications also use message boxes to give additional information. For example, in the Solve Equation input form, the user can press INFO any time after a solution has been found to review the solution and determine how it was calculated (see Fig. 21). For the HP 48S/SX, we developed an RPL tool called the parameterized outer loop3 to speed development of new interfaces such as the MatrixWriter by automating routine key and error handling and display management. The input forms in the new HP 48G/GX embrace this conceptĊin fact, the input forms engine is a parameterized outer loop appliĆ cationĊand take it one step farther to automate routine matĆ ters of application input entry and selection of options. The input forms engine brings a uniform interface to all new HP 48G/GX applications. While narrowly focusing the task of application development by managing command input tasks, the input forms engine also leaves much room for the customization that helps optiĆ mize the HP 48G/GX for ease of use. Since an important measure of our progress towards our goals for the calculator Fig. 19. The Memory Browser: a complex choose box. August 1994 HewlettĆPackard Journal Fig. 20. 38/(" + ,$22 &$ !.7 6 2 3. !$ %$$#! "* %1., 38/(" + 42$12 3'1.4&'.43 3'$ #$5$+: ./,$-3 "8"+$ 6$ #$2(&-$# 3'$ (-/43 %.1,2 $-&(-$ %1., 3'$ &1.4-# 4/ 3. !$ '(&'+8 "423.,(9 !+$ '(2 6 2 "".,: /+(2'$# (- /1.&1 ,,$1:%1($-#+8 , --$1 !8 (-"+4#(-& .5$1 %(%38 '..*2 (-3. 3'$ (-/43 %.1,2 $-&(-$2 1$2/.-2$2 3. $73$1: - + -# (-3$1- + events External events 1$ 31(&&$1$# !8 42: $12 -# (-"+4#$ +.6:+$5$+ $5$-32 24"' 2 *$8 /1$22$2 -# '(&':+$5$+ $5$-32 24"' 2 ".,/+$3(.- .% %($+# $-318 InterĆ nal events 1$ 424 ++8 "3(5 3$# !8 $73$1- + $5$-32 24"' 2 %.1, 33(-& ".,/+$3$# %($+# $-318 %.1 /1./$1 #(2/+ 8 2(-&+$ $73$1- + $5$-3 " - 31(&&$1 ' +% #.9$- .1 ,.1$ (-3$1: - + $5$-32 ++ .% 6'("' 1$ "423.,(9 !+$ -/43 %.1, //+(" 3(.-2 " - "423.,(9$ -8 .1 ++ %.1,:+$5$+ $5$-32 24"' 2 3(3+$ #(2/+ 8 .1 %($+# $5$-32 24"' 2 #(2/+ 8(-& '$+/ +(-$ "' %($+# ' 2 field procedure 22."( 3$# 6(3' (3 -# 3'$ $-3(1$ %.1, ' 2 form procedure 22."( 3$# 6(3' (3 '$-$5$1 - $5$-3 .""412 3'$ //1./1( 3$ %($+# .1 %.1, /1."$#41$ (2 " ++$# 6(3' - (#$-3(%8(-& $5$-3 -4,!$1 -# /$1' /2 ##(3(.- + (-%.1, 3(.- % 3'$ /1."$#41$ #.$2 -.3 "423.,(9$ 3'$ $5$-3 (3 1$341-2 FALSE 3. 3'$ (-/43 %.1,2 $-: &(-$ % (3 #.$2 "423.,(9$ 3'$ $5$-3 3'$ /1."$#41$ /$1%.1,2 3'$ "423., !$' 5(.1 -# 1$341-2 TRUE - 3'(2 , --$1 $5$18 $5$-3 %(123 04$1($2 3'$ /1./$1 %.1, .1 %($+# /1."$#41$ 3. #$3$1,(-$ (% "423., !$' 5(.1 (2 -$$#$# 3'$- ' -#+$2 3'$ $5$-3 -.1, ++8 .-+8 (% (3 (2-3 "423.,(9$# % %.1, .1 %($+# ' 2 -. "423., !$' 5(.1 (3 2/$"(%($2 #$% 4+3 /1."$#41$ 3' 3 04("*+8 1$2/.-#2 FALSE 3. ++ $5$-3 04$1($2 '$ 1$ 2.- %.1 %.1, /1."$#41$ -# ,4+3(/+$ %($+# /1."$: #41$2 (2 3. 2/1$ # 3'$ !41#$- .% "423.,(9 3(.- 3'1.4&'.43 3'$ %.1, (-"$ $ "' %($+# /1."$#41$ .-+8 "'$"*2 %.1 3'$ $5$-32 3' 3 /$13 (- 3. (3 -# 2(-"$ 3'$ %.1, /1."$#41$ .-+8 "'$"*2 %.1 %.1,:+$5$+ $5$-32 -. 2(-&+$ $5$-3 /1."$22(-& (2 2+.6$# !8 '(&'+8 "423.,(9$# %.1, 3' 3 6.4+# .3'$16(2$ ' 5$ 3. ".,/ 1$ 3'$ $5$-3 -4,!$1 & (-23 +$-&3'8 +(23 .% $5$-3 -# %($+# ".,!(- 3(.-2 .1 3'$ /1.)$"3 6$ -$$#$# -.3'$1 + 8$1 .% 1$&4+ 1(38 -.3 $-%.1"$# !8 3'$ (-/43 %.1,2 $-&(-$ $" 42$ 6$ 2.4&'3 -# 1$ "3$# 3. 42 !(+(38 %$$#! "* +,.23 4-3(+ 3'$ Fig. 21. '$ Solve Equation INFO ,$22 &$ !.7 4&423 $6+$33: "* 1# .41- + ".#$ 6 2 1$+$ 2$# 3. /1.#4"3(.- 3'$ 42$1 (-3$1% "$ #$3 (+2 %.1 $ "' 24!)$"3 1$ 6$1$ 24!)$"3 3. ".-23 -3 "' -&$ 3 6 2 (,/$1 3(5$ 3'$1$%.1$ 3' 3 6$ , (-3 (- 231("3 -# %.1, + #(5(2(.- !$36$$- 4-"' -&(-& -# 6$++:4-#$123..# 3 2*2; 24"' 2 &$33(-& -# 2 5(-& /1.!+$, #., (- (-%.1, 3(.- -# " +"4+ 3(-& 1$24+32; -# 3'$ 42$1 (-3$1% "$ #$3 (+2 3' 3 6$1$ "' -&(-& 1$&4+ 1+8 $ #$5$+./$# 2$3 .% ".-5$-3(.-2 3' 3 6$1$ $,!.#($# (- 6' 3 6$ " ++$# translation files $ 42$# - ,(-& 14+$2 -# ".-231 (-$# 1$2/.-2(!(+(3($2 3. &1$ 3+8 ,(3(: & 3$ 3'$ $%%$"32 .% 42$1 (-3$1% "$ "' -&$2 .- 3'$ 4-#$1+8(-& /1.!+$,:2.+5(-& %4-"3(.- +(38 .1 $7 ,/+$ .-$ 6.1# (3'$ /+.33(-& 31 -2+ 3(.- %(+$ ' 2 3'$ 2(,/+$ 3 2* .% 1$ #(-& 3'$ "411$-3 '.1(9.-3 + /+.3 1 -&$ %1., " +"4+ 3.1 ,$,.18 (-"$ 3'$ 6.1# ' 2 -. /1$24,/3(.-2 !.43 '.6 -# 6'$- (3 6(++ !$ " ++$# 1$%$1$-"$2 3. (3 ".4+# !$ -# .%3$- 6$1$ "' -&$# 1.4-# 2 3'$ %($+#2 /./4+ 3(-& 3'$ /+.33(-& (-/43 %.1, 6$1$ 6.1*$# .43 '$ "'..2$ !.7 $-&(-$ (2 5$18 ,4"' +(*$ 3'$ (-/43 %.1,2 $-&(-$ .1 "423.,(9 3(.- 3'$ /1.&1 ,,$1 " - 24//+8 choose procedure 3' 3 1$2/.-#2 3. ,$22 &$2 %$ 341$ .% "'..2$ !.7$2 3' 3 2(,/+(%($2 3'$(1 42$ (2 3'$ ./3(.-;'$ 5(+8 42$# !8 3'$ !4(+3:(- //+(" 3(.-2;.% (3$,2 3' 3 $-" /24+ 3$ !.3' #(2/+ 8 -# $5 +4 3(.- # 3 .1 $7 ,: /+$ 6'$- - -&+$ ,$ 241$;#$&1$$2 1 #( -2 .1 &1 #2;(2 3. !$ "'.2$- (- "$13 (- (-/43 %.1,2 3'$ "'..2$ !.7 $-&(-$ #(2/+ 82 /+ (- #$2"1(/3(.-2 !43 1$341-2 - /1.&1 , 3' 3 2$32 3'$ 2$+$"3$# -&+$ ,$ 241$ '(2 "(1"4,5$-32 3'$ -$$# %.1 !1 -"'(-& "".1#(-& 3. 3'$ 1$341-$# .!)$"3 -# 2(,/+(%($2 3'$ $73$-2(.- .% "'.("$2 -(3( + %$$#! "* %1., 3'$ $#4" 3(.- + #5(2.18 ".,,(33$$ -# 42$1 1$5($62 24&&$232 3' 3 3'$ 42$ .% (-/43 %.1,2 -# .3'$1 &1 /'(" + 42$1 (-3$1% "$ $+$,$-32 ' 2 &1$ 3+8 (,/1.5$# 3'$ $ 2$ .% 42$ .% 3'$ .5$1 3'$ .6$5$1 3'$ / 3' 6$ 3..* 3. 3'(2 "".,/+(2',$-3 6 2 ,.1$ "' ++$-&(-& 3' - 6$ /+ --$# 5$-3 "423.,(9 3(.- .1(&(- ++8 ".-"$(5$# 2 ,$ -2 3. $7: 3$-# 3'$ %4-"3(.- +(38 .% (-/43 %.1,2 (- 4-%.1$2$$- 6 82 341-$# .43 3. !$ *$8 ".,/.-$-3 .% .41 !(+(38 3. /1.3.38/$ -$6 42$1 (-3$1% "$ (#$ 2 1 /(#+8 2 3'$(1 - ,$ , 8 (,/+8 3'$ .1(&(- + (-3$-3 .% (-/43 %.1,2 6 2 5$18 ,.#$23 ".,/ 1$# 3. 3'$ 1.+$ 3'$8 -.6 /+ 8 $ #$2(&-$# (-/43 %.1,2 3. !$ 3'$ 23 -# 1# ,$ -2 !8 6'("' //+(" 3(.-2 & 3'$1 # 3 %.1 3 2* -$ .1 ,.1$ (-/43 %.1,2 6.4+# !$ #(2/+ 8$# 2 -$"$2: 2 18 6(3'(- 3'$ ".-3$73 .% -.3'$1 4-#$%(-$# //+(" 3(.".-3$73 '(2 .1(&(- + ".-"$/3 (2 //+($# 24""$22%4++8 3'1.4&'.43 3'$ " +"4+ 3.1 .1 $7 ,/+$ (- 3'$ $,.18 1.62$1 6'$- NEW (2 /1$22$# 3. "1$ 3$ -$6 5 1( !+$ (-/43 %.1, (2 42$# 3. &$3 3'$ (-%.1, 3(.- 1$04(1$# 2$$ (& - 3'(2 ".-3$73 3'$ 42$1 " - #. .-+8 3'1$$ 3'(-&2 (- 3'$ (-/43 %.1, $-3$1 # 3 " -"$+ 3'$ %.1, .1 ""$/3 OK 3'$ %.1, '(2 2(,/+$ !43 $%%$"3(5$ !$' 5(.1 6 2 3'$ ,.#$+ 42$# %.1 3'$ .1(&(- + (-/43 %.1, #$2(&- 2 3'$ /1.)$"3 #$5$+./$# '.6$5$1 (3 !$" ,$ // 1$-3 3' 3 - (-/43 %.1, ".4+# 2$15$ -.3 .-+8 2 (-%.1, 3(.- & 3'$1$1 !43 +2. 2 - "3(.- #(1$"3.1 -/43 %.1,2 3'42 &1 #4 3$# %1., 2(,/+$ #( +.& !.7$2 3. %4++:%+$#&$# //+(" 3(.$-5(1.-,$-32 -/) 8,) 38,)6 40388-2+ 6398-2)7 %00 8,) 40388-2+ 6398-2)7 %7791) 8,%8 8,) *92'8-32 3* -28)6)78 -7 7836)( -2 EQ 968,)6 8,)= %7791) &= ()*%908 8,%8 8,) *92'8-32 -7 6)46)7)28)( %7 %2 )<46)77-32 -2 8,) :%6-%&0)7 " %2( #A*36 )<%140) 9: 7-29: -7 6)46)7)28)( %7 "# -2 EQ ,) 97) 3* 38,)6 :%6-%&0) 2%1)7 -7 463:-()( *36 &= -2498 *361 348-327 36 &= 8,) INDEP %2( DEPEND /)=;36(7 Fig. 22. )136= 63;7)6 NEW -2498 *361 28)6)78-2+0= 23 1%.36 ',%2+)7 83 8,) -2498 *3617 )2+-2) ;)6) 2)')77%6= 36 ):)2 ()7-6%&0) 83 7944368 8,)-6 2); 630) 278)%( 8,) )77)2') 3* -2498 *361 *92'8-32%0-8= 6)1%-2)( %0;%=7 (%8% 1%2%+)1)28 %2( 8,) ):)287 '97831->%8-32 ;%7 %440-)( 7)0)'8-:)0= ;,)6) 2))()( 83 )2,%2') %440-'%8-32 *3617 2 % 7-1-0%6 1%22)6 8,) ):)28@(6-:)2 ',337) &3< )2+-2) ;%7 ):)289%00= 46)77)( -283 7)6:-') %7 % 43;)6*90 &%7) *36 0-78@ 78=0) %440-'%8-327 0-/) 8,) )136= 63;7)6 !,-0) 8,-7 7)'8-32 -7 8-80)( ? 0388-2+ % &)88)6 2%1) ;390( &) ?:-79%0->%8-32 8)',2-59)7 *36 *92'8-327 3* 8;3 :%6-%&0)7 ,-7 ;390( '3:)6 8,) 4)674)'8-:) :-); 3* 8,) +6%4, 3* % 7'%0%6 *92'8-32 3* 8;3 :%6-%&0)7 WIREFRAME 8,) 70-'-2+ :-); 3* % 7'%0%6 *92'8-32 3* 8;3 :%6-%&0)7 YSLICE 8,) '328396@ 1%4 :-); 3* % 7'%0%6 *92'8-32 3* 8;3 :%6-%&0)7 PCONTOUR 8,) 7034) -28)646)8%8-32 3* % 7'%0%6 *92'8-32 3* 8;3 :%6-%&0)7 SLOPEFIELD 8,) 1%44-2+ +6-( :-79%0->%8-32 3* % 8;3@:)'836@ :%09)( *92'8-32 3* 8;3 :%6-%&0)7 GRIDMAP %2( 8,) -1%+) +6%4, 3* % 8,6))@:)'836@:%09)( *92'8-32 3* 8;3 :%6-%&0)7 PARSURFACE -:)2 8,-7 92-8= 3* 496437) 8,)6) -7 '327-()6%&0) 3:)60%4 -2 8,) +03&%0 4%6%1)8)67 348-327 97)( -2 8,)7) 6398-2)7 ,)7) 40388-2+ 4%6%1)8)67 %6) 7836)( -2 8,) :%6-%&0) VPAR %2%03+397 83 PPAR ,) 1%-2 (%8% 7869'896) 7836)( -2 VPAR ()7'6-&)7 8,) view volume % 6)+-32 -2 %&786%'8 8,6))@(-1)27-32%0 74%') -2 ;,-', 1378 3* 8,) :-79%0->%8-327 3''96 7)) -+ ,) '31&-2%8-32 3* 0)%2 *3'97)( 78%2(%6( *)%896) 7)87 *36 -2498 *3617 %2( ',337) &3<)7 %2( ,-+, '97831->%&-0-8= 463:)( -2:%09%&0) (96-2+ 8,) '%0'90%836 ()7-+2 6)*-2)1)28 ,639+,398 8,) 1-((0) 4368-32 3* 8,) 463.)'8 ;,)2 8,) VPAR 59%28-8-)7 '3286300-2+ 8,) :-); :3091) %6) &%7-'7 ,%( &))2 7)880)( &98 1%2= 97)6 -28)6*%') ()8%-07 ;)6) • "0)*8 %2( "6-+,8 '3286300-2+ 8,) ;-(8, 3* 8,) :-); :3091) 78-00 92'0)%6 ;) ;)6) %&0) 83 463838=4) 2); -()%7 59-'/0= • #*%6 %2( #2)%6 '3286300-2+ 8,) ()48, 3* 8,) :-); :3091) %2( 6)%0-78-'%00= &= '97831->-2+ ):)28 6)74327)7 • $03; %2( $,-+, '3286300-2+ 8,) ,)-+,8 3* 8,) :-); :3091) 6%270%8-32 *-0)7 ;)6) %238,)6 ():)0341)28 )**368 8,%8 ,)04)( • " # %2( $ 8,) '336(-2%8)7 3* 8,) eye point ) ) ) 97 /))4 8,) ()7-+2 %2( -140)1)28%8-32 13:-2+ *36;%6( 2 %((-8-32 83 8,)7) VPAR '328%-27 38,)6 59%28-8-)7 97)( &= 3;):)6 ;) 0)%62)( 3:)6 8-1) 8,%8 8,)-6 3:)6,)%( '%97)( 731) 3* 8,) 6398-2)7 ,)7) %6) 731) (940-'%8-32 3* '3() %2( -2)**-'-)2'= 83 '6))4 -283 8,) • ""0)*8 %2( ""6-+,8 %2 %08)62%8-:) " -2498 6%2+) 97)( *36 -28)6*%') &)8;))2 8,) -2498 *3617 %2( 8,) '%0'90%836 1%-2@ GRIDMAP %2( PARSURFACE *6%1) !) %((6)77)( 8,-7 -779) ;,)6) 4377-&0) &= 1%/-2+ • ##*%6 %2( ##2)%6 %2 %08)62%8-:) # -2498 6%2+) 97)( *36 7-140) %2( 7%*) '3() 79&78-898-327 ;,-0) 0)%:-2+ 8,) -28)6@ GRIDMAP %2( PARSURFACE 238) 8,%8 8,-7 (-**)67 *631 8,) '96@ *%') '32')487 -28%'8 83 )2%&0) ,-+,@'32*-()2') '3() ()*)'8 6)28 9-8) -28)646)8%8-32 *-<)7 0%8) -2 8,) 463.)'8 2 )**)'8 ;) 1%() % ',3-') &)8;))2 • < %2( = 8,) 291&)6 3* " %2( # -2'6)1)287 ()7-6)( 97)( 1%-28%-2%&-0-8= %2( ,-+, 4)6*361%2') 8,%8 78-00 6)1%-27 % -2 %00 3* 8,) 6398-2)7 -278)%( 3* 36 -2 '31&-2%8-32 ;-8, RES '32863:)67-%0 834-' %132+ 8,) " ():)034)67 ,) *92'8-32%0-8= ()7'6-&)( -2 8,-7 7)'8-32 -7 % 79-8) 3* +6%4,-2+ %2( :-);-2+ 98-0-8-)7 *36 8,) " !) ,%( 7):)6%0 6)59-6)1)287 83 '327-()6 -2 '6)%8-2+ 8,)7) 6398-2)7 96 %-17 ;)6) 8,%8 8,)= &) 47=',303+-'%00= )**)'8-:) %2( 6)59-6) 320= % 71%00 %13928 3* '3() 2 )<4036-2+ :-79%0->%8-32 8)',2-59)7 32 % :%6-)8= 3* 1%@ ',-2)7 ;) *392( 8,%8 -2'6)%7-2+ ?6)%0-71 6%=@86%')( ,32+@7,%()( ,-(()2@0-2) )8' -2 8,) +6%4,-'%0 46)7)28%@ 8-32 3* *92'8-327 3* 8;3 :%6-%&0)7 (-( 238 2)')77%6-0= '366)@ 0%8) ;-8, -2'6)%7-2+ )%7) 3* '3146),)27-32 ,) " 6398-2)7 6)46)7)28 8,) 6)79087 3* 731) 3* 8,)7) )<4)6-1)287 -2'09(-2+ 8-1)@83@'3140)8-32 %7 %2 -14368%28 *%'836 00 3* 8,) 40388-2+ 6398-2)7 %6) -28)2()( %7 7)%10)77 )<@ 8)27-327 3* 8,) 38,)6 &9-08@-2 40388-2+ 98-0-8-)7 2 4%68-'90%6 8,)= 7,%6) 8,) 7%1) 78%2(%6( 97)6 -28)6*%') %2( %6) 7)0)'8)( %7 %08)62%8-:) 4038 8=4)7 ,) 40388-2+ 6398-2)7 %6) SLOPEFIELD WIREFRAME YSLICE PCONTOUR GRIDMAP %2( PARSURFACE SLOPEFIELD ,) SLOPEFIELD 4038 8=4) (6%;7 % 0%88-') 3* 0-2) 7)+1)287 ;,37) 7034)7 6)46)7)28 8,) *92'8-32 :%09) %8 8,)-6 ')28)6 43-28 7-2+ SLOPEFIELD 83 4038 *<= %003;7 =396 )=) 83 4-'/ 398 -28)+6%0 '96:)7 3* 8,) (-**)6)28-%0 )59%8-32 (=(< *<= 8 -7 59-8) 97)*90 -2 92()678%2(-2+ 8,) %6&-86%6= '3278%28 -2 %28-()6-:%8-:)7 ,) 291&)6 3* 0%88-') 43-287 4)6 63; -7 ()8)61-2)( &= < %2( 8,) 291&)6 3* 0%88-') 43-287 4)6 '30912 -7 ()8)61-2)( View Volume Z Zhigh Y Top View Y Yfar Yfar Ynear Ynear Zlow Xleft Xright (Xe, Ye, Ze) View Screen X Xleft Xright View Screen X 1 Unit (Xe, Ye, Ze) Fig. 23. VPAR 4%6%1)8)67 -2 6)0%8-32 83 8,) :-); :3091) 9+978 );0)88@%'/%6( 3962%0 Z (2,3.6 ) Top View Y Y Plotted Point X X (0,2.8 ) Superimposed Integral Curve (Xe, Ye, Ze) View Screen View Screen Fig. 24. SLOPEFIELD plot of dx/dt = sin(xt). by Ny. The input region sampled is given by XlefttXtXright and YneartYtYfar. • • • • • • 1 Unit (Xe, Ye, Ze) Fig. 25. Perspective projection of a point in the view volume onto the view screen. The input form in this case allows the user to: • Choose or enter the defining expression for the function to be plotted • Choose the names of the two variables (identical to INDEP and DEPEND) • Choose Xleft and Xright (default to their current value, or XRNG if no current value) • Choose Ynear and Yfar (default to their current value, or YRNG if no current value) • Choose Zlow and Zhigh (default to their current value, or default YRNG if no current value) • Choose Xe, Ye, and Ze (default to their current value, or 0, -1, 0 if no current value) In trace mode for SLOPEFIELD, the arrow keys jump the cursor • Choose Nx and Ny (default to their current value or 13 and 8 if no current value) from sample point to sample point indicating both the coorĆ • dinates of the sample point and the value of the slope at that Verify and/or choose RADIANS, DEGREES, or GRADS mode. point. In trace mode for WIREFRAME, the arrow keys jump the cursor The input form in this case allows the user to: Choose or enter the defining expression for the function to be plotted Choose the names of the two variables (identical to INDEP and DEPEND) Choose Xleft and Xright (default to their current value, or XRNG if no current value) Choose Ynear and Yfar (default to their current value, or YRNG if no current value) Choose Nx and Ny (default to their current value or 13 and 8 if no current value) Verify and/or choose RADIANS, DEGREES, or GRADS mode. Example Problem: Determine graphically whether all solutions of the differential equation dx/dt = sin(xt) with initial condiĆ tions 3.0tx(0)t3.1 satisfy 2.8tx(t)t3.6 for all t in [0,2]. Solution: Choose SLOPEFIELD plot type and enter SIN(X*T) as the current equation. Choose T as the independent variable and X as the dependent variable. Choose 0 as Xleft, 2 as Xright, 2.8 as Ynear, and 3.6 as Yfar. Verify RADIANS mode, and draw the result. As seen in Fig. 24, almost all of the integral curves in this region leave the window either through the top or the bottom. Therefore, not all the integral curves satisfy 2.8tx(t)t3.6 for t in [0,2]. WIREFRAME The WIREFRAME plot type draws an obliqueĆview, perspecĆ tive, 3D plot of a wireframe model of the surface deterĆ mined by z = f(x,y). The function determined by the current equation is sampled in a grid with Nx samples in each row and Ny samples in each column. Each sample is perspectiveĆ projected onto the view screen along the line connecting the sample and the eye point (see Fig. 25). Neighboring samples are connected by straight lines. The sampled region is determined by the base of the view volĆ ume (Xleft, Xright, Ynear, Yfar). The region of the view screen represented in the PICT GROB (graphics object3) and hence on the display is determined by the projection of the view volume on the view screen (see Fig. 26). from sample point to sample point and the display indicates all three coordinates of the sample point. Example Problem: Determine graphically whether the surface defined by z = x4 - 4x2y2 + y4 is, at the origin, concave up, concave down, or neither. Solution: Choose WIREFRAME plot type and enter X^4–4*X^2*Y^ 2+Y^4 as the current equation. Choose X and Y as the indeĆ pendent and dependent variables. Choose -1 for Xleft, 1 for Xright, -1 for Ynear, 1 for Yfar, -1 for Zlow, and 1 for Zhigh so that the view volume surrounds the origin. Choose 4 for Xe, -10 for Ye, and 3 for Ze to give a distant, oblique view of the graph. As seen in Fig. 27, the graph displays a monkey saddle" which is neither convex nor concave at the origin. The picture environment, which is invoked automatically when graphs are drawn or by pressing the PICTURE key, alĆ lows the user to interact with a graph. The user can move View Volume View Screen XRNG YRNG (Xe, Ye, Ze) Fig. 26. Relationship of view volume and eye point to XRNG and August 1994 HewlettĆPackard Journal The ANIMATE command is a program that was easy to write and that the user could have written in userĆRPL programĆ ming language, but we added it for the sake of convenience. Also, it is used as part of YĆslice 3D plotting. It sets up a loop that repeatedly puts graphics objects into the PICT disĆ play area. Fig. 27. WIREFRAME plot of the surface determined by z = x4 - 4x2y2 + y4 with view volume [-1,1]×[-1,1]×[-1,1] and eye point (4,-10,3). the cross hairs around using the arrow keys, trace along the graph, add picture elements such as dots, lines, and circles, or do interactive calculus operations such as finding the deĆ rivative at the cross hairs location. The HP 48S/SX crossĆhairĆmoving code was rewritten for the HP 48G/GX. The cross hairs needed to be faster, to fade less as they moved, and to accommodate added functionality such as tracing and shading. The cross hair code originally came from the HP 28 and has been maintained and modified over the years. In the HP 28, most of the cross hair code was written in highĆspeed assembly language and actually conĆ tained a routine called SLOW which was buried deep within RPL subroutine calls. SLOW was needed to slow the cross hairs down to an acceptable speed. The use of this word was discovered during the process of porting the code from the HP 28 to run on the bigger HP 48S/SX display. There were many occasions during the HP 48G/GX project when we were trying to speed up various operations and wished we could just find the word SLOW and take it out! The fading of the cross hairs as they moved was improved by changing the code so that the time between turning the cross hairs off at one pixel and turning them on at the next pixel is minimized. To do this, all the calculations required for moving are now done before turning the cross hairs off. Unfortunately, the new display on the HP 48G/GX trades off response time for contrast, so although it is brighter and has higher contrast than the HP 48S/SX display, it takes longer for pixels to turn dark. Thus, much of the work to reduce fade in moving cross hairs was canceled out by the new screen characteristics. The user can darken the display by holding down the ON key and pressing the + key a few times, and this will make the moving cross hairs easier to see. Tracing along a graph with the cross hairs presents a chalĆ lenge because the user's function must be evaluated at every point, so in effect the system RPL programmer must turn control over to the user at each point of the graph. This reĆ quired careful attention to error handling and to managing the data stack, which is a shared resource. The procedures for tracing vary with the different plot types. The procedures are kept in the property list associated with each plot type, and then the appropriate procedure is passed in and evaluĆ ated when trace mode is turned on. It required quite a bit of rewriting to implement this objectĆoriented, extensible apĆ proach because much of the existing cross hair code had previously undergone rewriting and optimizing for speed and code size. A quick way to get started with animation is to press PICTURE to go to the interactive graphics environment, where you will be able to create some pictures to animate. Press EDIT, then DOT+ to turn on the etchĆaĆsketchĆstyle drawing mode in which pixels are turned on wherever you move the cross hairs. Using the up, down, left, and right arrow keys, sketch something, then press STO to send a copy of your picture to the stack. Continue sketching, press STO again, and repeat this procedure, continuing to add to your sketch until you have a handful of pictures on the stack, say six of them. Press CANCEL to leave the PICTURE environment, and you will see the the picture objects sitting on the stack. They are called GROBs, which is short for graphics objects.3 To use the ANIMATE command, all you have to do is enter the numĆ ber of GROBs (for example, press 6 then ENTER if you created six pictures), then press the ANIMATE key, which you will find in the GROB submenu of the PRG menu. Your series of sketches will come to life as the ANIMATE command flips through them. Several new mathematical features were added to meet the needs of the educational market and to match or exceed corresponding features recently introduced by our competiĆ tion. Design tradeĆoffs made for and inherited from earlier, less capable platforms were reconsidered, and relevant softĆ ware developed for earlier machines but not used in the HP 48S/SX was used wherever appropriate. The HP 48G/GX is targeted at the collegeĆlevel mathematics, science, and engineering educational market. We hoped, also, to achieve more success in high school advanced placement courses. In these environments calculators are used as pedagogical tools, illustrating mathematical and modeling concepts introduced in the courses. As a pedagogical tool, the calculator's accuracy and reliability are paramount design goals. Speed of execution is important but secondary to the validity of the computed results. To achieve high accuracy and reliability the computational methods needed to be more numerically sophisticated than typical textbook methods. This greater complexity is hidden from the casual user wherever possible, but made available to the sophisticated user so the methods can be tuned to their needs. One means of achieving maximum accuracy and reliability is to read the current literature and consult with expert specialĆ ists to obtain the best methods, then implement those methĆ ods from scratch. We have employed this approach in the August 1994 HewlettĆPackard Journal Although the primary focus of the new user interface for the HP 48G/GX was to enhance our built-in applications, it became apparent as the project progressed that calculator owners who program would want access to the same capabilities to enhance their efforts. For the choose box, message box, and especially the input form tools, the biggest challenge involved scaling back the numerous features to produce simple user commands that still offer customization potential. The message box command, MSGBOX, was designed to display pop-up messages with a minimum of fuss. Thus, it takes just one argument—the message string—and produces a word-wrapped normal-sized message box. Field Specifications Reset and Current Values 5: “Personal Information” 4: { ”Name:” { } { } ”Bldg: ” ”Phone: ” { } ”Notes:” { } {} } 3: { 3 5 } 2: { } 1: { } Title Field Expander Column Count (3) and Tab Width (5) INFORM The choose box command, CHOOSE, is slightly more complicated. To enable but not require the same object-oriented use of choose boxes as the built-in applications, the CHOOSE command accepts a list of items in two formats. In the simplest format, an item is specified by a single object, which is displayed and returned if chosen. In the alternate format, an item is specified by a two-element list object. The first element is displayed in the choose box, and the second element is returned if the item is chosen. For simplicity of the user interface, CHOOSE displays a normal-sized choose box without the multiple-choice capability used by some built-in applications. The MSGBOX and CHOOSE commands largely follow the same interface specification methods as their system-level counterparts. This differs markedly from the input form user command, INFORM. To maintain complete flexibility over all elements of form layout and behavior, the input forms engine takes three arguments for each label and thirteen arguments for each field, specifying such details as exact location and size, display format, and so on. Added to that are global arguments for the form procedure and form title and some other details. All together, an input form with four labeled fields requires 68 arguments. While this amount of information is justified for the varied needs of built-in applications, it is an unnecessary burden for programmers just wanting to get some simple input from the user. For the INFORM command, therefore, we developed an automatic form layout scheme that serves most needs, with options for further detailing. Basically, the INFORM input form is viewed as a grid that is filled with fields starting in the upperleft corner and proceeding from left to right and top to bottom. The number of .12 5'2& 13!!#11 32 '2 !, # 2'+#8!-,13+',% #6.#,1'4# ," 0'1)7 ,-2&#0 ..0-!& 1-+#2'+#1 4'* *# '1 2- !-,13*2 12,"0" !-+.322'-,* *' 00'#1 31#" 7 2&# .0-$#11'-,* 1!'#,2'$'! !-++3,'27 #4#0* 13!& .3 *'!8"-+', *' 00'#1 0# 4'* *# 2&2 0#.0#1#,2 2&# !300#,2 122# -$ 2&# 02 , 1-+# "#4#*-.8 +#,2 #,4'0-,+#,21 2&#1# *' 00'#1 !, # 31#" "'0#!2*7 , -2&#01 2&#7 !, 2 *#12 .0-4'"# &'%&8/3*'27 +#2&-"1 ," '+.*#+#,22'-,1 2&2 5&#, (3"'!'-31*7 31#" $!'*'22# +##28 ',% 2'%&2 "#4#*-.+#,2 1!&#"3*#1 2 *-5 !-12 # $-3," 2&# *' 007 -$ ,3+#0'!* *',#0 *%# 0 13 0-32',#1 .02'!3*0*7 &#*.$3* ', 2&'1 0#%0" 1 313* !-"# 51 0#31#" 5&#,#4#0 .-11' *# 2- !&'#4# 2'+#*7 ," 0#*' *# '+.*#+#,22'-,1 , ""'2'-, 2- 2&# 1-30!# !-"# $-0 2&# ," '21 /32'-, ' 007 !0" 5# &" '+.*#+#,22'-,1 "2',% $0-+ 2&# 2& ! 2&2 5#0# 0#4'1#" $-0 2&# 32 "'",2 $'," 1.!# ', 2&2 .0-"3!2 &'*# 0#31',% !-"# 5# 2--) "4,2%# -$ 2&# !*-!) 1.##"3. ," *0%#0 #,4'0-,+#,2 -4#0 2&# 2- 0#!-,1'"#0 1-+# -$ -30 .0#4'-31 '+.*#+#,28 2'-, 20"#8-$$1 ', , #$$-02 2- !&'#4# %0#2#0 !!30!7 , 3%312 #5*#228!)0" -30,* Fig. 1. A custom input form created by INFORM. columns in the grid is specified as one of INFORM’s arguments, and each field’s width is determined by the width of its label and by the user-supplied tab width, which places invisible tab stops within each column to help align fields vertically. A field can span multiple columns with a special field-expander specification. Help text and object type restrictions can be included for any field, but aren’t required. Fig. 1 shows an example of a custom input form created by INFORM. Notice that, despite the relative simplicity of the input arguments, an input form with aligned fields of varying widths is presented. This technique for building input forms proved so valuable that it was used to create the Solve Equation input form, which changes according to the number and names of variables in the equation to be solved. 1-+# !1#1 5# "#!'"#" 2- #+.*-7 +-0# !-+.322'-,* #$$-02 ," 2- 12-0# ',2#0+#"'2# 4*3#1 ', &'%&#0 .0#!'1'-, 2!&'#4# +-0# !!302# 0#13*21 &# ',!*3"#1 +,7 ,#5 +2&#+2'!* $#230#1 -4#0 2&-1# .0-4'"#" 7 2&# &#1# 0# 007 +,'.3*2'-,1 ""'2'-,* *',#0 *%# 0 -.#02'-,1 .-*78 ,-+'* 0--2 $',"#0 ," 0#*2#" -.#02'-,1 25- "'$$#0#,2'* #/32'-,1 1-*4#01 ," 11-!'2#" 1-*32'-, .*-22#01 "'1!0#2# -30'#0 20,1$-0+1 ," $',,!'* *-, !-+.322'-,1 &# 007 +,'.3*2'-, !-++,"1 0# .0'+0'*7 .#"%-%'!* 2--*1 &#1# ',!*3"# 0,"-+ 007 %#,#02-0 ," !-+8 +,"1 2- "" -0 "#*#2# 0-51 -0 !-*3+,1 -$ +20'!#1 -0 #*#8 +#,21 -$ 4#!2-01 "#!-+.-1# +20'!#1 ',2- -0 !0#2# +20'!#1 $0-+ 0-5 -0 !-*3+, 4#!2-01 #620!2 "'%-,* #*#+#,21 $0-+ +20'6 -0 !0#2# +20'6 $0-+ '21 "'%-,* #*#+#,21 .#08 $-0+ #*#+#,207 0-5 ," !-*3+, -.#02'-,1 ," !-+.32# 2&# 0-580#"3!#" #!&#*-, $-0+ -$ +20'6 # 1'%,'$'!,2*7 '+.0-4#" ," #6.,"#" 2&# *',#0 *%# 0 $3,!2'-,*'27 -$ 2&# -4#0 2&# &# "#2#0+',,2 *',#0 1712#+ 1-*4#0 ," +20'6 ',4#02#0 5#0# revised to be more accurate through additional computation and by storing all intermediate values in extended precision. We added a command to compute a condition number of a square matrix, which can be used to measure the sensitivity of numerical linear algebra computations to rounding errors, a command to compute a solution to an underdetermined or overdetermined linear system by the method of least squares, commands to compute eigenvalues and eigenvectors of a square matrix, commands to compute the singular value decomposition of a general matrix, and commands to comĆ pute related matrix factorizations and functions. These linear algebra commands accept both real and complex arguments and perform all intermediate computation and storage in extended precision. The HP 48G/GX has commands to compute all roots of a real or complex polynomial, to construct a monic polynomial from its roots, and to evaluate a polynomial at a point. The polynomial root finder is a modification of the HP 71 Math Pac's PROOT command, extended to handle complex coeffiĆ cients. It uses the Laguerre method with deflation for fast convergence and constrained step size and an alternate initial search strategy for reliability. The HP 48G/GX has commands to compute the discrete Fourier transform or the inverse discrete Fourier transform of real or complex data. These commands were leveraged from the HP 71 Math Pac's FFT and IFFT commands, requiring the data lengths to be a nonzero power of 2, and were modified slightly to match the customary definitions of these transĆ formations. Finally, we included timeĆvalueĆofĆmoney commands. These commands have appeared in our financial calculators and were available on the HP 48SX Equation Library card. Since engineering feasibility studies must include at least rudimenĆ tary timeĆvalueĆofĆmoney computations it seemed useful to include these commands in the HP 48G/GX. The HP 48G/GX contains two differential equation solvers and solution plotters. These solvers and solution plotters can be accessed via their input forms or invoked programmatiĆ cally via commands. We provide a programmatic interface to the differential equation solvers and their subtasks so the user can use them with the calculator's general solver feature to determine when a computed differential equation solution satisfies some condition, or to implement custom differential equation solvers from their subtasks. In implementing the differential equation solution plots, one challenge was to identify and implement good solution methĆ ods. Another challenge was to merge this new plot type with the new 3D plot types described earlier and with the existing HP 48SX plot environment in a backwardĆcompatible manner. The HP 48G/GX specifically solves the initial value problem, consisting of finding the solution y(t) to the firstĆorder equaĆ tion yȀ(t) = f(t,y) with the initial condition y(t0) = y0. Here yȀ(t) denotes the first derivative of a scalarĆvalued or vectorĆ valued solution y with respect to a scalarĆvalued parameter t. HigherĆorder differential equations can be expressed as a firstĆorder system, so this problem is more general than it might at first appear. Many solution methods have been developed over the years to solve the initial value problem. We decided to implement two methods, a RungeĆKuttaĆFehlberg method for simplicity and speed of execution and a Rosenbrock method for reliĆ ability. The first method is easier to use, requiring less inforĆ mation from the user, but can fail on stiff problems.* The Rosenbrock method requires more information from the user, but can solve a wider selection of initial value problems. Both initial value problem solution methods require the user to provide the function f(t,y), the initial conditions, the final value of t, and an absolute error tolerance. The Rosenbrock method also requires the derivative of f(t,y) with respect to y (FYY) and the derivative of f(t,y) with respect to t (FYT). All plot types use the contents of the variable EQ, typically to specify the function to be plotted. If the user selects the stiff (Rosenbrock) method the extra functions are passed to the solver by binding EQ to a list of functions f(t,y), FYY, and FYT. Otherwise, EQ is bound to the function f(t,y) needed by the RungeĆKuttaĆFehlberg method. Both methods solve the initial value problem by computing a series of solution steps from the initial conditions towards the final value, by default taking steps as large as possible subject to maintaining the specified error tolerance. The solution plotter plots the computed values and by default draws straight lines between the plotted points. However, although the computed steps may be accurate, the line segĆ ments drawn between the step endpoints may poorly repreĆ sent the solution between those points. The plot parameter RES is used by many plot types to control the plot resolution. If RES is zero the initial value problem solution plotter imĆ poses no additional limits on the step sizes. If RES is nonzero the plotter limits each step to have maximum size RES. For the scalarĆvalued initial value problem it is typical to plot the computed solution y(t) on the vertical axis and the paĆ rameter t on the horizontal axis. However, in the vectorĆvalĆ ued case the choice of what is to be plotted is not as clear. The user may wish a particular component of the computed solution plotted versus t or may wish two components plotted versus each other. The HP 48G/GX allows the user to specify the computed scalar solution, any component of the computed vector solution, or the parameter t to be plotted on either axis. This flexibility was introduced into the plot environment by expanding the AXES plot parameter. Previously, this parameter specified the coordinates of the axes origin. This parameter was expanded so that an opĆ tional form is a list specifying the origin and the horizontal and vertical plot components. By judiciously expanding the meaning of the various plot parameters we were able to accommodate the differential equation solution plot type while maintaining backward compatibility with previous plot types. * Stiff problems typically have solution components with large differences in time scale. More information is needed by a solver to compute a solution efficiently. August 1994 HewlettĆPackard Journal ' 816.& .+-' 51 #%-018.'&)' 5*' 3'45 1( 5*' 41(58#3' &'< 7'.12/'05 5'#/ +/ 100'..: #$' +4'045'+0 #9 10'4 #0& 1$ 134.': +.. +%-'4 #.41 %1053+$65'& 41(58#3' .#+0 0&'3410 #0& 10 311-4 (31/ 5*' /#3-'5+0) &'2#35< /'05 8'3' +071.7'& +0 5*' &#:<51<&#: &'4+)0 231%'44 #0& -'25 64 +0(13/'& #$165 64'3 0''&4 '00+4 "13- 17'34#8 $15* 5*' #0& /#3-'5+0) #42'%54 1( 5*' 231,'%5 8*+%* *'.2'& )'0'3#5' 4:0'3): $'58''0 #0& /#3-'5+0) ' 816.& .+-' 51 5*#0- #0 1((+0 163 /#06#. 83+5'3 #0& 1*0 169 (31/ 5*' 5'%*0+%#. 4622135 )3162 (13 )1+0) 165 1( 5*'+3 8#: 51 2#35+%+2#5' +0 5*' &'4+)0 813- #0& (13 2317+&+0) /#0: 7#.6#$.' +&'#4 6)645 '8.'55<#%-#3& 1630#. +%-'4 ;0 71.65+10#3: #.%6.#513 (13 '%*0+%#. 31< ('44+10#.4 HewlettĆPackard Journal, 1. 01 6)645 22 < +%-'4 #0& #5510 ;*' ! %+'05+(+% 92#0&#$.' #.%6.#513 0017#5+10 #0& 71.65+10 HewlettĆPackard Journal, 1. 01 60' 22 < ''34 '5 #. ; ! 05'3(#%'4 #0& 22.+%#5+104 HewlettĆ Packard Journal, 1. 01 60' 22 < 0&'3410 '5 #. LAPACK Users' Guide, *+.#&'.2*+# Microsoft is a U.S. registered trademark of Microsoft Corporation.