CPU実験室

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

LEDチカチカ

$F100に配置したパラレルポートがアクセスできるようになったのでここにインクリメントデータを出力してLEDのチカチカをやってみます。
 
まだSRAMを実装していないのでカウンタにつかう変数はレジスタに置くことになりますが実はTMS9995には汎用レジスタが内蔵されていません。それではレジスタをどこに置くかというとメモリ上にその実体を割り付ける方式になっています。
これをメモリ上のどこにするかを決めるのがWP(ワークスペースポインタ)というわけです。ではやはりRAMの外付けが必要なのかというとTMS9995はオンチップで高速SRAMをわずか256バイトですが持っているのでここに割り付けてやることであたかも最初から汎用レジスタを持っているかのように扱えます
 
以下の例では起動時のWPの初期値として内蔵SRAMの先頭番地$F000をロードすることによりR0~R15が$F000~$F01F番地へのアクセスで実現されます
 
イメージ 1
ループの中身はR3レジスタ(実際は$F006からのワードデータ)の上位8ビットをアドレスF100へ出力しR3をインクリメントするというのを繰り返すだけです
 
以下が実行状態です。
一発でうまくいったのですがチカチカが目でわかるくらいゆっくりなんで、このCPUはそんなに遅いのか?と疑ったのですが、考えてみると16bitカウンタの上位5ビット分を表示しているのでそんなものなのでしょうか
 
 
イメージ 2