2020/07/16(木)8051用BASIC-52について調べてみた

中古の8051Hだが6時間イレーズしても書き込みには失敗する。これの有効活用方法だがBASIC-52を修正して8051で動作するバージョンを発見した。素晴らしい。8051と8052ではメモリ容量以外に内蔵しているI/Oの数が異なるので一部の機能は削られている。まぁ、古いそれも壊れかけのチップに拘る必要性はないのだけれど、自分の断捨離力が足りないのだろうか。

BASIC-52 Version 1.2a

バージョン 1.2a は、8031/8051 プロセッサ上で MCS BASIC-52 を動作させることができるという点で非常に興味深いものです。8031/8051 プロセッサは 8032/8052 ペアの小さいバージョンで、8031/8051 は 128 バイトの内部 RAM メモリと 3 つの 16 ビットタイマーの代わりに 2 つの 16 ビットタイマーを持っています。では、標準的な80(C)32プロセッサの価格は2ユーロ以下なのに、なぜわざわざ8031/8051の特別バージョンを作るのでしょうか? まあ、それはいつもそうだったわけではありません。私が勉強していた頃の記憶では、余った8031プロセッサを手に入れるのは、8032プロセッサよりもずっと簡単だったのです。いずれにしても、Dan Karmann氏がバージョン1.2aを作成した動機が何であったのかは分かりませんが、彼は素晴らしい仕事をしてくれました。

バージョン1.2aのプログラムドキュメントの中で、Dan KarmannはMCS BASIC-52を8051上で動作させるために行ったすべての修正と改良の詳細なリストを提供しています。最も注目すべき点は、タイマー2に関連する全てのステートメントが無効化され、一方でタイマー1はボーレートジェネレータとして、またPWMステートメントのタイミングデバイスとして機能するように時間共有されています。8031/8051 では内部 RAM が小さくなっているため、内部スタックはデフォルトで 51 バイトに設定されていますが、8052 では 179 バイトに設定されています。このため、一部のプログラムでは「ERROR: I-STACK」が発生することがあります。これは通常、括弧「()」の入れ子になったレベルが多すぎることが原因であり、通常は式をいくつかの複雑でない式に分割することで動作するようにすることができます。さらに、バージョン 1.1 の「既知のバグ」のいくつかが修正されました (付録 B)。

www.DeepL.com/Translator(無料版)で翻訳しました。