CASIO pocket computer
PB-100の宇宙

top > 研究所 > PB-100初期出荷バージョンの異常動作について

PB-100初期出荷バージョンの異常動作について

ここに発表したプログラムは基本的に対応機種で示したとおりに動作しますが、一部の PB-100 にそのままでは動作しないものがあります.

原因は初期出荷バージョンのバグで、後期に出荷されたものは改善されています. また、初期出荷バージョンの中にも何種類かあるようです.

現在のところ、初期・後期の見分け方やバグの全容は確認できておりません. そのために連絡が来次第、個別に対処している状況です.

以下に連絡を頂戴したタイトルについて解決法を紹介します.

SGN に絡む異常動作

タイトル異常動作の原因ヶ所解決法
『Mr.T』10行の;S=S+3-4*SGN S;S=-4*SGN S+S+3に変更
『トロネコの大冒険 4』10行の;G=G+3-4*SGN G;G=-4*SGN G+G+3に変更

『Mr.T』、『トロネコの大冒険 4』とも、赤池 将樹氏より異常動作の原因ヶ所と解決法を頂きました.次にメールの該当部分をご紹介いたします.


D はキー入力毎に、0,3,2,1,0,3という循環になるところを、) runモードで D=D+3-4*SGN D を繰り返したところ、0,3,1,-1,7,5,3 という循環になりました。

D=(D+1)*SGN (3-D は大丈夫でした。

多分バグで計算の順番を間違えるのだろうと思い、以下の数式を試しました。

D=D+3-4*SGN (D)
D=(D+3)-4*SGN D
D=D+3+(-4*SGN D)
D=3+D-4*SGN D

全てダメでした。

D=-4*SGN D+D+3 としたところちゃんと動作しました。

元の式から1ステップ損をしてしまいますが、これなら 0,3,2,1,0 の循環になりました。 どうも D+3D が無視されてしまっているようです。

試しに SGN D の部分を本来の動作通りになるように 0 または 1 にして式を入力するとちゃんとした結果が出てきます。

そうなると式の中に SGN が入ることでおかしくなるのかと思い、以下の式を試しました。

E=0
D=D+3-4*SGN E

これで E が本来の通りの動作をするように 0 または 1 を代入しながら式を入力しましたが、0,3,1,-1,7,5,3 になってしまいました。

D=-4*SGN E+D+3 でちゃんと動作しました。

やはり式の中における SGN の位置によって D=D+3D が無視されてしまうようです。


SGN を駆使してリストを圧縮するテクニックは(おそらく)後年になって出てきたものなので、今まで知られていなかったのでしょう.

今後、SGN を使うときは残り step に気を配るなど注意が必要です.

このほかの異常動作

初期出荷バージョンの異常動作については、ポケコンジャーナル誌に関連する投稿がありますので紹介します.

(PB-100の)中でもいくつか細かいヴァージョンがあり、詳しいことは不明です.具体的には、「10 VAC :PRINT A」というプログラムで異常動作するかしないかなどです. 最旧のものは異常動作をしてリセットするまで復旧しません.

また、VAC による異常動作については以下の記事がありました。

旧PBは(PB-100を含むバージョン1機)、VAC の直後に「配列変数」及び「END,INPUT,PRINT,SET,RETURN 以外の命令」を置くことはできません.

[例]
VAC :Z(1)=0:C=0 → 異常動作をする
VAC :C=0:Z(1)=0 → 正常動作をする

関連情報

私のPB-100は初期のものですが、

10 VAC:FOR I=0 TO 10:NEXT I

などのように、VAC の後にループを作ると暴走します.