2020/05/10(日)9V乾電池の破裂事例
夜中に自分の部屋でPCを操作している時に、突然、直ぐ近く部屋の何処かで破裂音がした。最初は、AC回路のショート?電解コンデンサーの破裂?と色々考えたが、電源の入っていない機器の中は置いておいて、動作しているのはPC以外はなんだろう。HUBかサーバPCか。サーバPCは年代物なので考えられる。しかし問題なく動作しているしサーバPCを引き出して分解するにしろ明日の朝にする事にして、部屋中の電源を落としてその日は寝ることにした。
夜中に自分の部屋でPCを操作している時に、突然、直ぐ近く部屋の何処かで破裂音がした。最初は、AC回路のショート?電解コンデンサーの破裂?と色々考えたが、電源の入っていない機器の中は置いておいて、動作しているのはPC以外はなんだろう。HUBかサーバPCか。サーバPCは年代物なので考えられる。しかし問題なく動作しているしサーバPCを引き出して分解するにしろ明日の朝にする事にして、部屋中の電源を落としてその日は寝ることにした。
Tiny Basic For 8051を修正して内蔵RAM(2KB)を利用出来るようになりました。
HEXファイルだけここに公開します。
TinyBasic51はこちらにドキュメントがあります
*1 シリアル速度は9600bps固定です。
*2 起動後にスペースバーを叩くと起動します。
BASIC-52*1が動く環境が出来上がったのでASCIIART(マンデルブロ集合)ベンチマークを走らせて見ました。11.059MHzのSTC89C52にBASIC-52(V1.1)を書き込んで実行すると6分38秒要しました。BASIC-52ではFOR-NEXTループ内からループの外へGOTOするとエラーとなる為プログラムの一部を修正。またダブルスピードモードでは3分20秒で終了。
STC15F2K08S2というマイコンをaitendoさんで見つけてBasic51(Tiny Basic)を走らせてみたがどうも内蔵RAMへの書き込みが上手く行かない。簡単なメモリーテストプログラムを走らせて結果を確認した所、どうやら00FFより上のアドレスにアクセスするにはMOVX DPTR系の16bitアドレス指定命令でのみ可能なようだ。古い8051ではSRAMは外付けなので、上位バイトはI/Oポートで設定しても可能だったが、このチップはダメみたい。ソースコードに手を入れようかな。

私は普段アセンブラはcygwin上でThe Macroassembler ASを利用している。そこでオリジナルのTB51.ASMをMetalink ASMバージョンに書き換えたTB51ML23.ASMをさらにAS用に書き換えてみた。自分の環境で再コンパイルが出来ると色々と触れるから。