めざせ4004! IC34個のCPUでリバーシ作ってみた

2026/8/16 (日)
コミックマーケット108
東京ビックサイト 東7ホール Wブロック 09b

めざせ4004! IC34個のCPUでリバーシ作ってみた

Chapter 0 え? オセロ大会なんて聞いてないよ?

本書は筆者が制作した4bit CPUの最新版と、それで動作するリバーシ (オセロ) 対戦ゲームを紹介します。これは2026年5月9日に東京の日本橋にて開催された『第7回 自作CPUを語る会 自作CPUオセロ大会 』に向けて制作した物です。

筆者は2016年より電卓用4bit CPUの開発を行っており、2024年のコミックマーケット104で公開したEX4-2024では7桁の整数電卓を実現しました。その後、次なる改良は74181の搭載だな…… 面倒臭いなぁ…… とサボっていたところZOB.Clubの他メンバーから「5月の『自作CPUを語る会』に申し込んだから出してね」とケツを引っ叩かれ、慌ててでっち上げたのがこのEX4-2026です。言われたのが2025年の10月末ですから半年でCPUとリバーシを作れと言うのはちょっと酷いと思います。

写真1 今回作成したCPUと、それを使用した電卓

EX4-2026はただ単に74181をALUとして採用しただけの単純なCPUではありません。癖のある74181を飼い慣らし、不要な機能を削除し、足りない機能を追加し、実用に耐えるALUユニットに作り替えています。これによりEX4-2026はAND、OR、XORを含む17種49個の命令を搭載した強力なCPUとなりました。

ところがこれでリバーシを実現できるかと言うと話は別です。筆者が作成しているCPUはあくまでも電卓用であって汎用CPUでは無いからです。そのためEX4-2026にはリバーシに必要ないくつかの機能が最初から存在していません。本書で紹介するリバーシではその機能不足をソフトウエアの力で捻じ伏せ、どうにか人間とCPUの対戦を実現しました。

目次

  • Chapter 0 え? オセロ大会なんて聞いてないよ?
  • Chapter 1 基本コンセプト
    • Chapter 1-1 基本仕様
    • Chapter 1-2 本書の位置づけ
  • Chapter 2 EX4-2026の仕様
    • Chapter 2-1 今回制作したEX4-2026の仕様
      • Chapter 2-1-1 インクリメントINCとデクリメントDEC
      • Chapter 2-1-2 10進補正命令ADJ
    • Chapter 2-2 演算命令強化の目的
      • Chapter 2-2-1 キャリー入力のある加減算命令ADCとSBC
      • Chapter 2-2-2 ADCとSBCがあるならADDとSUBは不要か?
      • Chapter 2-2-3 多桁減算の複雑な事情
      • Chapter 2-2-4 比較命令とゼロフラグ、そして条件分岐命令
  • Chapter 3 74181とは何か?
    • Chapter 3-1 74181の本質
    • Chapter 3-2 キャリー入出力の謎
    • Chapter 3-3 それでも正論理で使う
    • Chapter 3-4 使えない演算が多すぎる
      • Chapter 3-4-1 なぜINCとDECの評価が補欠(△)なのか?
    • Chapter 3-5 加算命令の実現方法
    • Chapter 3-6 減算命令と比較命令の実現方法
      • Chapter 3-6-1 減算命令でのキャリー入出力
      • Chapter 3-6-2 比較命令CMPの実現方法
    • Chapter 3-7 A=B端子の謎
  • Chapter 4 回路設計
    • Chapter 4-1 ALUとALUデコーダとALUユニット
      • Chapter 4-1-1 ALUデコーダ
      • Chapter 4-1-2 ALUデコーダの設計
      • Chapter 4-1-3 キャリー入力の設計
      • Chapter 4-1-4 キャリー出力の設計
      • Chapter 4-1-5 アキュムレーターへの書き込みの制御
      • Chapter 4-1-6 ゼロフラグの設計
      • Chapter 4-1-7 その他の特殊機能
      • Chapter 4-1-8 ALUユニットの回路図
    • Chapter 4-2 DATAユニット
      • Chapter 4-2-1 セレクタ
      • Chapter 4-2-2 バス制御
      • Chapter 4-2-3 NOP機能
      • Chapter 4-2-4 イミディエイト・データのRAMへの直接書込
      • Chapter 4-2-5 DATAユニットの回路図
    • Chapter 4-3 MAINユニット
      • Chapter 4-3-1 MAINデコーダ
      • Chapter 4-3-2 現在実行中の命令の保持
      • Chapter 4-3-3 命令デコードの詳細
      • Chapter 4-3-4 MAINユニットの回路図
    • Chapter 4-4 ADDRESSユニット
  • Chapter 5 I/Oユニット
    • Chapter 5-1 7桁電卓用I/Oユニット
    • Chapter 5-2 CLOCKユニットの回路図
  • Chapter 6 リバーシ用8×8マトリックス2色LEDユニット
    • Chapter 6-1 8×8マトリックス2色LED
    • Chapter 6-2 キーボード&LEDコントローラー Intel 8279
      • Chapter 6-2-1 詳しく調べたら相性が悪かった
      • Chapter 6-2-2 CPUとの接続
    • Chapter 6-3 Intel 8279のコマンド
    • Chapter 6-4 リバーシ用 8×8マトリックス2色LED表示ユニットの回路図
  • Chapter 7 EX4-2026のソフトウエア
    • Chapter 7-1 サンプルプログラム概要
    • Chapter 7-2 各種定数定義と初期化
    • Chapter 7-3 LED点灯とアプリ選択
    • Chapter 7-4 0→9999999カウンタ
    • Chapter 7-5 ラーメンタイマー
    • Chapter 7-6 キーボードテスト
    • Chapter 7-7 キー入力疑似サブルーチン
    • Chapter 7-8 多桁加算
    • Chapter 7-9 多桁減算
    • Chapter 7-10 マイナス補正
    • Chapter 7-11 多桁乗算
    • Chapter 7-12 多桁除算
    • Chapter 7-13 7桁整数電卓
  • Chapter 8 リバーシのソフトウエア
  • Chapter 9 終わりに……