HP-41C プログラミング編 (4)

HP-41C プログラミング編最終日の今日は、間接操作とフラグなどについて説明します。

1. 間接操作
HP-41Cの機能には、数値でパラメータを指定するものがいくつかあります。そして、その多くは間接操作を利用可能です。例えば、メモリレジスタR00に入っている数値のラベルへジャンプする、というようなことが可能で、この場合は、[SHIFT][GTO][SHIFT] 00 と指示します(プログラム内での表示は、GTO IND 00 となります)。このような操作は、メモリ操作やジャンプ(GTO)・サブルーチン(XEQ)など以下の命令で使用できます。すべて、メモリレジスタRnnの内容を引数としてそれぞれの命令を実行します。nnには、通常のレジスタ番号のほか、.X .Y .Z .T .L (それぞれスタックX-T、および LASTx に対応)も指定可能です。GTO IND 命令および XEQ IND 命令の場合は、Rnn の内容がALPHA文字列であっても指定可能です(ALPHAラベルを指定したことになる)。
 [STO][SHIFT] {nn} : STO IND {nn}
 [STO] + [SHIFT] {nn} : ST+ IND {nn}
 [STO] - [SHIFT] {nn} : ST- IND {nn}
 [STO] × [SHIFT] {nn} : ST* IND {nn}
 [STO] ÷ [SHIFT] {nn} : ST/ IND {nn}
 [RCL][SHIFT] {nn} : RCL IND {nn}
 [SHIFT][VIEW][SHIFT] {nn} : VIEW IND {nn}
 (ALPHAモード) [ASTO][SHIFT] {nn} : ASTO IND {nn}
 (ALPHAモード) [ARCL][SHIFT] {nn} : ARCL IND {nn}
 [SHIFT][GTO][SHIFT] {nn} : GTO IND {nn}
 [XEQ][SHIFT] {nn} : XEQ IND nn
 [SHIFT][FIX][SHIFT] {nn} : FIX IND {nn}
 [SHIFT][SCI][SHIFT] {nn} : SCI IND {nn}
 [SHIFT][ENG][SHIFT] {nn} : ENG IND {nn}
 [XEQ] "DSE" [SHIFT] {nn} : DSE IND {nn}
 [SHIFT][ISG][SHIFT] {nn} : ISG IND {nn}
 [XEQ][TONE][SHIFT] {nn} : TONE IND {nn} … TONE 命令については後述します
 [XEQ] "ΣREG" [SHIFT] {nn} : ΣREG IND {nn}
 [SHIFT][SF][SHIFT] {nn} : SF IND {nn} … SF 命令については後述します(2. フラグ)
 [SHIFT][CF][SHIFT] {nn} : CF IND {nn} … CF 命令については後述します(2. フラグ)
 [SHIFT][FS?][SHIFT] {nn} : FS? IND {nn} … FS? 命令については後述します(2. フラグ)
 [SHIFT][FC?][SHIFT] {nn} : FC? IND {nn} … FC? 命令については後述します(2. フラグ)
 [XEQ] "FS?C" [SHIFT] {nn} : FS?C IND {nn} … FS?C 命令については後述します(2. フラグ)
 [XEQ] "FC?C" [SHIFT] {nn} : FC?C IND {nn} … FC?C 命令については後述します(2. フラグ)
 [XEQ] "X<>" [SHIFT] {nn} : X<> IND {nn}
 [SHIFT][CATALOG][SHIFT] {nn} : CAT IND {nn}

2. フラグ
HP-41Cは56個のフラグ(F00-F55)を持っています。その中には、システムの状態を表すものやユーザーが自由に使用できるものが含まれます。以下にフラグの一覧を示します。
以下のユーザーフラグF00-F29は、値のセット、クリア、参照とも行えます。
 F00-F10 : 汎用フラグ(不揮発性メモリに保存)。ユーザーが自由に利用可能。
  F00-F04がセットされていると、液晶表示の下部の"0"~"4"が点灯します。
 F11 : 自動実行フラグ(電源ONのたびにクリア)。
  セットして電源OFFすると、次にONにしたときに直前に実行していたプログラムが自動実行されます。
 F12-F20 : 汎用フラグ(電源ONのたびにクリア)。ユーザーが自由に利用可能。
 F21 : プリンタイネーブルフラグ(電源ONのたびにF55がコピーされます)。
  セットするとプログラムから印刷可、クリアすると印刷不可になる。
 F22 : 数値入力フラグ(電源ONのたびにクリア)。数値を入力したときにセット。
 F23 : ALPHA入力フラグ(電源ONのたびにクリア)。ALPHA文字を入力したときにセット。
 F24 : レンジエラー無視フラグ(電源ONのたびにクリア)。
  セットされていればプログラム実行中にオーバーフローエラーが起きても停止せず続行します。
 F25 : エラー無視フラグ(電源ONのたびにクリア)。
  セットされていればプログラム実行中にエラーが起きても停止せず続行しますが、その時自動的にクリアされます。
 F26 : オーディオイネーブルフラグ(電源ONのたびにセット)。セットされておれば TONE などの命令で音がでます。
 F27 : USERモードフラグ(不揮発性メモリに保存)。USERモードのときセット。
 F28 : 小数点フラグ(不揮発性メモリに保存)。
  セットされておれば小数点は . 桁区切りは , になり、クリアされておれば小数点は , 桁区切りは . になります。
 F29 : 桁区切りフラグ(不揮発性メモリに保存)。セットされておればF28で指定した桁区切りが表示されます。
以下のシステムフラグF30-F55は値の参照のみ行えます。
 F30 : カタログフラグ。システム内部使用のみ。値を参照すると常にクリアされています。
 F31-35 : 周辺機器フラグ。システム内部使用のみ。
 F36-39 : 桁数フラグ(不揮発性メモリに保存)。
  FIX, SCI, ENG で指定された桁数が入ります。2進数に変換して最上位ビットから順に F36-F39に入ります。
 F40-41 : 表示形式フラグ(不揮発性メモリに保存)。
  FIX 命令でF40がセット・F41がクリアされます。ENG 命令でF40がクリア・F41がセットされます。
  SCI 命令でF4・F41ともクリアされます。
 F42 : GRADモードフラグ(不揮発性メモリに保存)。GRAD モードでセットされます。
 F43 : RADモードフラグ(不揮発性メモリに保存)。RAD モードでセットされます。
 F44 : Continuous On フラグ。自動電源OFFが働かない状態の時にセットされます。
 F45 : System Data Entry フラグ。システム内部使用のみ。値を参照すると常にクリアされています。
 F46 : Partial Key Sequence フラグ。システム内部使用のみ。値を参照すると常にクリアされています。
 F47 : SHIFTフラグ。システム内部使用のみ。値を参照すると常にクリアされています。
 F48 : ALPHAモードフラグ(電源ONのたびにクリア)。アルファモードのときにセットされます。
 F49 : ローバッテリーフラグ。電池残量が減ってくるとセットされます。
 F50 : メッセージフラグ。何かシステムがメッセージを表示しているときにセットされます。
 F51 : SSTフラグ。システム内部使用のみ。値を参照すると常にクリアされています。
 F52 : PRGMモードフラグ。システム内部使用のみ。値を参照すると常にクリアされています。
 F53 : I/Oフラグ。周辺機器の準備ができているときにセットされます。
 F54 : 一時停止フラグ。PSE 命令実行中にセットされます。
 F55 : プリンタ接続フラグ。電源ON時にプリンタが接続されていればセット、なければクリアされます。
これらのフラグに対して以下の操作が可能です。
 [SHIFT][SF] {nn} : Fnnをセットします。
 [SHIFT][CF] {nn} : Fnnをクリアします。 
 [SHIFT][FS?] {nn} : Fnnがセットされておれば次の命令を実行しますが、クリアされておればスキップします。
 [SHIFT][FC?] {nn} : Fnnがクリアされておれば次の命令を実行しますが、セットされておればスキップします。
 [XEQ] "FS?C" {nn} : FS? 命令実行後、Fnnをクリアします。
 [XEQ] "FC?C" {nn} : FC? 命令実行後、Fnnをクリアします。

3. その他の命令
 [SHIFT][BEEP] : BEEP音を1回鳴らします。
 [XEQ] "TONE" {n} : n(0-9)で指定されたピッチの音を鳴らします。数字が大きいほど高音になります。

これでHP-41Cのプログラミング解説シリーズは終了です。HP-41Cは非常に多くの関数や命令を持っていますので、すべて使いこなすのは困難かもしれません。スタックの動きにも慣れる必要がありますし、少しずつ理解していけばよいと思います。このような低級言語?でプログラムすることは頭の体操にもなっていいと思いますよ。もっと詳しく知りたい方は、こちらでマニュアル(英文)の参照が可能です。
明日からは、手持ちのカメラ紹介シリーズ後半のスタートです。古いものばかりですが…。

本日使用した命令のまとめ:
 [STO][SHIFT] {nn} : Rnnの内容で指定されたメモリに対し STO を実行します。
 [STO] + [SHIFT] {nn} : Rnnの内容で指定されたメモリに対し ST+ を実行します。
 [STO] - [SHIFT] {nn} : Rnnの内容で指定されたメモリに対し ST- を実行します。
 [STO] × [SHIFT] {nn} : Rnnの内容で指定されたメモリに対し ST* を実行します。
 [STO] ÷ [SHIFT] {nn} : Rnnの内容で指定されたメモリに対し ST/ を実行します。
 [RCL][SHIFT] {nn} : Rnnの内容で指定されたメモリに対し RCL を実行します。
 [SHIFT][VIEW][SHIFT] {nn} : Rnnの内容で指定されたメモリに対し VIEW を実行します。
 (ALPHAモード) [ASTO][SHIFT] {nn} : Rnnの内容で指定されたメモリに対し ASTO を実行します。
 (ALPHAモード) [ARCL][SHIFT] {nn} : Rnnの内容で指定されたメモリに対し ARCL を実行します。
 [SHIFT][GTO][SHIFT] {nn} : Rnnの内容で指定されたラベルにジャンプします。
 [XEQ][SHIFT] {nn} : Rnnの内容で指定されたラベルをサブルーチンコールします。
 [SHIFT][FIX][SHIFT] {nn} : Rnnの内容で桁数を指定して FIX を実行します。
 [SHIFT][SCI][SHIFT] {nn} : Rnnの内容で桁数を指定して SCI を実行します。
 [SHIFT][ENG][SHIFT] {nn} : Rnnの内容で桁数を指定して ENG を実行します。
 [XEQ] "DSE" [SHIFT] {nn} : Rnnの内容で指定されたメモリに対し DSE を実行します。
 [SHIFT][ISG][SHIFT] {nn} : Rnnの内容で指定されたメモリに対し ISG を実行します。
 [XEQ][TONE][SHIFT] {nn} : Rnnの内容で指定さたピッチで TONE を実行します。
 [XEQ] "ΣREG" [SHIFT] {nn} : Rnnの内容で指定されたレジスタ番号で ΣREG を実行します。
 [SHIFT][SF][SHIFT] {nn} : Rnnの内容で指定されたフラグに対し SF を実行します。
 [SHIFT][CF][SHIFT] {nn} : Rnnの内容で指定されたフラグに対し CF を実行します。
 [SHIFT][FS?][SHIFT] {nn} : Rnnの内容で指定されたフラグに対し FS? を実行します。
 [SHIFT][FC?][SHIFT] {nn} : Rnnの内容で指定されたフラグに対し FC? を実行します。
 [XEQ] "FS?C" [SHIFT] {nn} : Rnnの内容で指定されたフラグに対し FS?C を実行します。
 [XEQ] "FC?C" [SHIFT] {nn} : Rnnの内容で指定されたフラグに対し FC?C を実行します。
 [XEQ] "X<>" [SHIFT] {nn} : Rnnの内容で指定されたメモリに対し X<> を実行します。
 [SHIFT][CATALOG][SHIFT] {nn} : Rnnの内容で指定された内容で CATALOG を実行します。
 [SHIFT][SF] {nn} : Fnnをセットします。
 [SHIFT][CF] {nn} : Fnnをクリアします。 
 [SHIFT][FS?] {nn} : Fnnがクリアされておれば次の命令をスキップします。
 [SHIFT][FC?] {nn} : Fnnがセットされておれば次の命令をスキップします。
 [XEQ] "FS?C" {nn} : FS? 命令実行後、Fnnをクリアします。
 [XEQ] "FC?C" {nn} : FC? 命令実行後、Fnnをクリアします。
 [SHIFT][BEEP] : BEEP音を1回鳴らします。
 [XEQ] "TONE" {n} : n(0-9)で指定されたピッチの音を鳴らします。数字が大きいほど高音になります。
関連記事
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

tag : HP 41C プログラム関数電卓

trackback


この記事にトラックバックする(FC2ブログユーザー)

まとめteみた.【HP-41C プログラミング編 (4)】

HP-41Cプログラミング編最終日の今日は、間接操作とフラグなどについて説明します。1.間接操作HP-41Cの機能には、数値でパラメータを指定するものがいくつかあります。そして、その多く

コメント

非公開コメント

アクセスカウンタ
カレンダー
11 | 2021/12 | 01
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
最新記事
最新コメント
リンク
カテゴリ
楽天お勧め商品
検索フォーム
Kyoroのつぶやき
FC2掲示板
ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示