ひとしれずひっそり

主にソフトに関することをメモしていきます。過程をそのまま書いていたりするので間違いが含まれます。鵜呑みしない様に。

TK-80のモニタープログラムが動いた

作っているI8080シミュレーターだが、 復活!TK‐80 からモニタープログラムを打ち込んで動作することを確認した。

ステップ動作はまだ実装していない。

  • キー入力は 'io/console' gemを使用したが、押した時しか分からず押された瞬間だけで処理するとチャタリング処理でキャンセルされてしまって入力できなかったので、50ms押された状態が続いているようにしたら入力ができるようになった。
  • 前書いたように画面の表示が思ってた様になっていなくて、時間を調整する処理がうまくなかった。
    • 毎サイクル時間調整すると表示やキー入力のThreadに制御が渡りにくくなるので30ms以上ずれたら待つ様にしてスムーズに動く様にした。

思っていたよりすんなりと動いてしまった。
あとはステップ動作を入れれば大概のことはできそう。

youtu.be

モニタープログラムの打ち込みは大変かと思ったが、タイプミスはあれど行を抜かしたのはたったの1行だけで俺すごいって思った。
抜けがあるとどこが抜けているかチェックが大変なので….

本の誤記が1箇所あって2の表示がdになってしまうのがあった。他にもあるらしいんだけど、後でハマったら調べよう。

;;
;; SEGMENT DATA
;;
SEGD:   DB    5CH,06H,5BH,4FH,66H,6DH
        DB    7DH,27H,7FH,6FH,77H,7CH,39H
        DB    5EH,79H,71H

誤 SEGDから始まる行の5EHが間違い。5BHが正しい。

;;
;; SEGMENT DATA
;;
SEGD:   DB    5CH,06H,5EH,4FH,66H,6DH
        DB    7DH,27H,7FH,6FH,77H,7CH,39H
        DB    5EH,79H,71H

github.com