スキップしてメイン コンテンツに移動

投稿

8月, 2026の投稿を表示しています

SBC6809モドキを作ろうとしたら、MZ-6809が出来ていた件 その3

 今回も動画からですが、物凄い地味な動画からです。とは言え、内容的には大きな成果ではあります。  地味な割にじっくり見てもらいたい部分があるので、 ダウンロード推奨 です。 お馴染みのBASIC9を読み込んで起動させ、time.bsという数行の簡単なBASICプログラムを走らせてます。一見ただ画面の左端を数字がカウントアップしてるだけの5秒位の動きですが、  --------------------------- 1 POKE &H0219,0:POKE &H0218,0 10 POKE &H8000,0 20 PRINT PEEK(&H0218)*256+PEEK(&H0219) 30 GOTO 20 ---------------------------- 中身はこんな感じです。メモリの0x0218と0x0219に0を書き込んで後は繰り返し読み出して表示しているだけです。これESP32からおよそ100ミリ秒のタイマー割り込みを受けて。1秒毎にカウントアップするようになってます。 動画編集ソフトのAvidemuxで1から2に変わる境目が 1:14.333 2から3に変わる境目が1.15.366 なんで おおよそ 1秒で1カウントアップする感じになってます。   でそれを踏まえて、アスキー文字でマンデルブロ図形を表示するプログラムの開始と終了の時間差を出して 130秒前後 の結果が出ました。 このタイマーの元ネタは  JR2XZY ブログ  の シリアル通信速度自動設定編  に出てくるPICの出力を見てたら、GPIOピンが一本空いてるのに気が付いて、見たらおおよそ100ミリ秒のパルス出てるのを見付けて、タイマーモドキに使えない?って考えて 実機のSBCのFIRQに送ってイロイロやっては見たけど 結局動かず。FIRQの処理中に次のパルスが来て無限ループしてるからかとか考えて、FIRQの処理中はパルス止める手段を加えないと無理かななんて思っていたんですよ で、エミュレータの中ならその辺はどうとでもなるかなとやってみたんですが 特に パルス止める処理とか必要なかったです。上に出てるBASICプログラムの10行にある 0x8000番地に0書き込んでるのは、リセット直後...