めざせ4004! IC34個のCPUでリバーシ作ってみた
2026/8/16 (日)
コミックマーケット108
東京ビックサイト 東7ホール Wブロック 09b
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とリバーシを作れと言うのはちょっと酷いと思います。
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 2-1 今回制作したEX4-2026の仕様
- 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 4-1 ALUとALUデコーダとALUユニット
- 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 終わりに……

