Tang Nano 1kでも使える小さなCPU第4弾、今回はINS8060(SC/MP)です。
以前作ったエミュレータがこちら。
http://kwhr0.g2.xrea.com/scmp.html
残念なことに、SC/MPにはクロスコンパイラが見当たりません。
アセンブラで適当なサンプルを作ろうかと思ったところで、
それではSC/MPと互換性があるのか分からない、ということに気がつきました。
なので、エミュレータのときと同じようにBASICインタプリタを走らせてみます。
と言っても、NIBLFPは大きすぎるので、NIBL(整数型のみのtiny BASIC)にします。
入出力はUSBシリアルで、と思って書き始めたのですが、
制約ファイルを作ろうとしたところでTang Nano 1kはUSBシリアル機能が使えないことが判明。
どうしよう。
しばらく考えて、もう一つSC/MPを載せて端末エミュレータを作ることにしました。
ソースの入力はあらかじめバイナリに埋め込んだものを送り、文字出力はOLEDにすれば、最低限の動作確認はできます。
嬉しいことに(?)これならサブ側のアセンブラを書く楽しみもあります。
I/Oとして、メイン側とのやり取りのほか、I2Cとのやり取りが必要です。
エミュレータのときは未定義命令の一部を使って1バイト入力/出力命令を新設しましたが、
これを拡張し、もう一組作りました。
NIBLもその命令を使うように改造してあります。
サンプルは変数を表示して1加算を繰り返す、単純なものです。
CPU一個の回路規模は350Logic未満でした。
GW1で40MHz近くまで動作します。CPIは2〜6倍改善しているので、実チップの150MHz相当くらいだと思います。
https://github.com/kwhr0/f8060
速すぎると何を表示しているのか分からなくなるので、クロックは約1MHzに設定しています。