投稿日: Mar 19, 2017 2:47:55 PM
前回から一気に飛ばしてばばっと実装すませました。
テストはまだ十分ではないです。
EIとDIは現在未実装。
エミュレータといいつつ、あんまりCP/M動かそうだとかは考えていないので最速で動く様に命令サイクル未実装、これはこれということで使えればいいんじゃないかな。(とはいえNOPがノーウェイトなのは使い辛いのでそのあたりは考えないといけない)
※CP/M動かしたいならAltair8800シミュレータもあるし、そちらでよいでしょう。
8080なのでz80のアセンブラを使ってバイナリを作れます。わーい。
とりあえずテストとしてArduino UNOにメモリサイズ256byteに縮小して載せてみました。
この小さいアセンブラコードはArduinoのD2につながったLEDをチカチカする、例のアレ。
SPIとか使う様になるのでD13は避ける形で。
現在NOPでウェイトがかけられないのでArduinoのDelayでOpCode実行ごとに100ms待つようにしてます。
じゃないとLチカ見えないので…。
i8080エミュレータのplatform.ioでのビルド結果。
Program: 5142 bytes (15.7% Full) (.text + .data + .bootloader) Data: 494 bytes (24.1% Full) (.data + .bss + .noinit)
Altair8800シミュレータがあるのにそれでもi8080エミュレータを作ろうとしていた訳はバイナリサイズを小さくする狙いがありました。かなりうまく行ったんじゃないでしょうか?? ね? (自画自賛)
ここからは実際に使えるようにするためのI/Oの整備とか、それを使いやすくするためのファンクションコールの実装(BDOSみたいなやつ)とかです。
こっからが長いんですけど、c8aと違ってまっとうなCPUのエミュレータなので悩むことも少なさそう。
さあ、引き続きがんばりましょい。