CPU実験室

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

ICUでLチカ

 
ICUを動かす準備が整ったのでいよいよICU部分のコーディングを始めます。
まず、簡単な永久ループから。
 
以下のリストはシステムコントローラの18F4550に書き込まれますが
このうち先頭で定義されている配列の中身自体がMC14500のネィティブコードです。
1ワード16ビット固定長で先頭の4ビットがオペコード、残り12ビットで操作対象アドレスを示すオペランドになります。
 
ここでは
 LD  0     ;0番地のデータをアキュームレータへセット
 LDC 0     ;0番地のデータを反転したものをアキュームレータへセット
 JMP 0     ;先頭に戻る。
というわずか3ワードのコードですがアキュームレータ(result出力)にはLEDが接続されているのでLEDチカチカを観察できます
 
 
イメージ 2
 
 
 
配列のコードはpm_poke関数でSRAM上にセットされ、set_execmode関数でICUのリセットが解除されICUが走り出します。
 
このプログラムの動作中の波形です
ch1はICUの内蔵クロック発振器の出力で約27kHzを発振しています。
ch2はRESULT出力で1クロック/インストラクション、合計3クロック9kHzでチカチカしています
 
 
イメージ 1