2015年4月30日木曜日

HP50g : SysRPLで配列を扱うためのメモ

SysRPLにも配列(行列、ベクトル)を確保するためのコマンドがいくつかあります。まずは「^MAKEARRY 」というコマンドを使ってみようと思いました。

HP49G Entry Reference
https://staff.fnwi.uva.nl/c.dominik/hpcalc/entries/hp49g/entries.pdf

には、SysRPLの多くのコマンドが掲載されています。しかし、これに従ってコードを書いてみたのですが、なかなかうまく動いてくれません。(注意 ! このコードは確実に暴走します)

!NO CODE
!RPL
::
  { 3 } %2.3 ^MAKEARRY
;
@

ホトホト困り果て、調べてみた所、どうやら足りないモノがあった模様。

HP49G SYSRPL ^MAKEARRY HELP - compgroups.net
http://compgroups.net/comp.sys.hp48/hp49g-sysrpl-makearry-help/123989

によると、「If the command start with ^, add FPTR2」とあります。^MAKEARRYの様にキャレットで始まるコマンドを使う場合、FPTR2 を付けよ、という具合らしい。エェッー、そんなん聞いていないヨ !!
そんな具合で、取り敢えず「配列を作る(だけの)」プログラムは、こんな具合になりました。

!NO CODE
!RPL
::
  { 3 } %2.3 FPTR2 ^MAKEARRY
;
@

  1. { 3 } で作成する配列の大きさを指定し、
  2. 各要素の初期値を %2.3 (実数値の2.3) として、
  3. FPTR2 ^MAKEARRY で配列を作成します。

これで作成できるのは配列と言っても「ベクトル(1次元配列)」です。大きさの指定を変える事で行列(2次元配列)も作成できます。

配列を作る命令語には、ほかに「^XEQ>ARRY」などがあります。^XEQ>ARRYは、スタックから、配列の大きさと構成する要素を取り出して配列を構成します。キャレットが付いているので「FPTR2」を忘れずに。
配列の要素取り出しには「GETATELN」、要素設定には「PUTEL」があり、この辺りのコードを使った習作を示しておきます。

!NO CODE
!RPL
::
    %0 %1 %2 %3 %4 { %5 } FPTR2 ^XEQ>ARRY
    DUP
    #4 SWAP GETATELN DROP
    %5 %* #3 PUTEL
;
@

無事に実行が終わると [0. 1. 15. 3. 4.] というベクトルがスタックに残っている筈です。

大して長いコードではないのですが、勉強しながらの作業なので暴走させる事もしばしばです。

今回は、リセットが効かない暴走を経験しました。リセットを掛けようとON+[F3], ON+[F1]+[F6] を押しても、反応がないのです。画面の下、4/5が真っ黒くろすけになって、動きがないのですね。これはコマッタ。

Educalc.netに「電池抜きリセット」(電池を全て取り外し、15分以上放置新聞)というTipsが出ていたので、藁をもすがる思いで試したのですが、電源を入れても同様の状態です。ウーム !?
検索していたら、「FlashROM更新とセルフテストメニューの呼び出し」という話題が見つかって、「そうだ、コレだ」と試してみる事にしました。ON+[F3]が効かないので、電池を入れる前に「+」、「-」キーの両方を押しておき、押しながら電池を装填するという奇っ怪な技でメニューの呼び出しに成功し、セルフテストも一通り問題ない事が確認できました。ハードウェアはイカれていない様子。そこで判ったのは「SysRPLの暴走で、FlashROMが書き換わってしまった」という可能性です。
現在、最新のROMは2.15で、これは一度書き込んでいるので、手元にイメージはあります。早速、SDカードによるFlashROMの書き込みを行い、ようやく復旧したという次第です。ヨカッタ、ヨカッタ。


2015年4月12日日曜日

今年に入ってから、ロクな事を書いておりませんが

何か、オモロイ話題はないものか、とwebを渉猟するものの、なかなかネタが落ちているモノではありません。

最近は月に1本程度の記事しかないので、ホント、アクセスも減っているのですが、昨日はどうした風の吹き回しか、ミョーにアクセスが増えておりました。しかし、トップの記事である「ネタに困ってしまって」という記事ばかり。どういう事なのか ?

新年度を迎え、中には高機能電卓を入手し「高機能電卓で色々とやってみよう」と思う方も居られるのか、とは思うのですが、なかなか、そうした向きに送る記事というのが書けないで居り、自らの非力に歯噛みをする思いであります。
新年度早々、気分が落ち込む様な記事で申し訳ない。4月の内から5月病、片山殺気。

参ったなァ。ロクな事書かねぇヨ ... 。

(コメント戴いても、返事が書ける状態ではないので、御容赦戴き度)