CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

I/O初期化部分修正

イメージ 1

ボードに電源を投入してモニタが起動するときに

"** MC68000 CPU board monitor Ver2.00 **"

という文字列をターミナルに送信するように作ったはずなのですが、なぜか必ず

"AU♂ス・早オスケ・ムスノ〆碧ノケチチ←ゥ5)甫黒チム・スケ・≦ム・チチムチチナ"

と化けていました。その後の文字列送信では全く問題ないし、
後からこのROM内ルーチンをモニタからジャンプしても正常に表示します。

いろいろ調べてみるとIO初期化後直後にシリアル出力するのがまずそう。
はじめこうなっていたのを

bsr ioinit /*IO初期化*/
lea titlmsg,a0 /*メッセージ文字列ポイント*/
bsr print /*文字列出力ルーチン*/


IO初期化の後で数μsの待ちを入れたらOKになりました

bsr ioinit
wait:
move.w #$1000,d2 /*IO delay */
l1:nop
dbra d2,l1
lea titlmsg,a0
bsr print


MC68901内のボーレート発生用のタイマのカウントが不定だったせいかもしれません。


ANK文字のフォントデータを拾ってきて差し替えました。狭いフォントをつかうと
1行24文字までなんとか表示できます。