- リレー式論理回路シミュレータを自作して1bit CPUまで動かした で書いた kairo-gokko の製作過程のメモ。
- 一度プロトタイプを作ってからリプレイしている感じなので、実際は2周目です。
- 数字は開発のステップ番号で、リポジトリの
stepXX
というタグの番号に対応しています。 - スピード重視*1で書き散らかしたので(コードも記事も)いろいろ雑です。
リポジトリ:
https://github.com/sonota88/kairo-gokko
触れるサンプルまとめ:
https://sonota88.github.io/kairo-gokko/pages/index.html
シミュレータの実装よりも回路の部分について知りたいという方は「(22) リレー 1」のあたりから見るとよいかと思います。
- (1) 回路データの読み込み
- (2) 読み込んだデータを描画
- (3) データの整形(重複した線の処理)
- (4-1) データの整形 2
- (4-2) データの整形 3
- (5) データの整形 4
- (6) Circuit, View
- (7) 前処理と実行に分ける
- (8) 描画部分をDXOpalに交換
- (9) マウスと効果音
- (10-1) Ruby/SDLを使ってDXOpalをエミュレートする(自分が必要な部分だけ適当に)
- (10-2) dxopal_sdl.rb を使う
- (11) スイッチを追加
- (12-1) 通電 1
- (12-2) 通電 2
- (13) 通電 3
- (14) 通電 4
- (15-1) 通電 5
- (15-2) 通電 6
- (16) 通電 7
- (17) 回路の分割 1
- (18) 回路の分割 2
- (19) Circuitクラスを改めて追加 / リファクタリングなど
- (20) タッチ操作対応など
- (21) ランプ
- (22) リレー 1
- (23) リレー 2
- (24) リレー 3
- (25) 状態変更の伝播の過程を見たい
- (26) 見た目の修正など
- (27) equal リレー
- (28) 回路の選択
- (29) AND / NAND
- (30) OR / NOR / XOR
- (31) RSフリップフロップ
- (32) Dフリップフロップ 1
- (33) Dフリップフロップ 2
- (34) 1bit CPU 1
- (35) 1bit CPU 2
- (36) 落ち穂拾いというか
ここまででひとまずは完成ということにして「リレー式論理回路シミュレータを自作して1bit CPUまで動かした」を書きました。以下はその後の変更です。
- (37) リレーの効果音をノイズっぽい音に変更
- (38-1) タイムチャートを表示
- (38-2) タイムチャートの改善 / FPSの表示
- (39) コンパイル時間短縮のために data.rb をスリム化
- Point のフォーマットを変更
*1:零細ブログなので手間かけて書いてもコストに見合わない、 さっさと終わらせて他のことやりたい、 あとは新型コロナの影響、などの理由により。