PokuG stdio.h

ポクジィと読みます

Codexに丸投げでPC-98のHello Worldを実機で動かすまで(WSL+ia16環境構築)


2026年、令和の今。
生成AIを使ってコードを書くのが当たり前になってきているらしいです。
人が一から実装するのではなく、「こういうものを作りたい」と伝えるだけでコードが生成される時代になってきているとか。

そんな流れもあるので、PC-98のプログラム経験がない管理人(C言語の経験もありません)がこの流れに乗ったら、「PC-98の開発もできるのでは?」と思い立ってしまいました。

しかも最近では「バイブコーディング」なる、ノリでコードを書くスタイルも流行っているとネットで見かけます。
なので今回は、自分で一から書くのではなく、AI(Codex)に丸投げしてみます。

環境はWSL上のUbuntu。
コンパイラはia16-elf-gcc。
そして完成したのは、PC-98実機で動く「Hello PC-98 World」。

本記事では、ChatGPT先生とCodexさんにお願いしながら、現代のPCからPC-98開発環境を構築し、実機でHello Worldを表示するまでの流れをまとめます。

環境の概要

今回の構成は以下の通り。
Windows 11(25H2)上に WSLで Ubuntu 環境を構築し、その中で Codex および ia16-elf-gcc というコンパイラを使用して PC-98 向けのプログラムを作成します。

その後、生成した実行ファイル(.exe)は、PC-98 実機またはエミュレーターに何とかして持っていき実行します。

Windows 11
 └─ WSL(Ubuntu)
     ├─ Codex(AIでコード生成)
     ├─ ia16-elf-gcc(コンパイル)
     └─ .exe生成
           ↓ (何とかして持っていく)
PC-98実機 / エミュレーターで実行

用意するもの

今回の環境構築で使用するものは以下の通り。

WSL

Windows上でLinuxを動かすための仕組みです。
これを使うことで、Windowsの中にLinux環境をそのまま作ることができます。

WSLはWindows 11の機能として標準で用意されており、追加費用なしで利用できます。

Ubuntu

WSL上で動かすLinuxディストリビューションです。
今回の作業は、このUbuntu環境の中で進めていきます。

こちらも追加費用なしで利用できます。

ia16-elf-gcc

16bit向けのコードを生成できるC言語のコンパイラです。
Linux上からMS-DOS用の実行ファイル(.exeや.com)を作成できるのが特徴です。

PC-98はMS-DOS環境のため、このコンパイラを使って実機で動作するプログラムを生成します。

本記事では、以下のページを参考に導入しています。
Unofficial port of GCC toolchain to 16-bit Intel x86 target : TK Chia

Codex

AIにコードを書かせるためのCLIツールです。

「こういうプログラムを作りたい」と指示することで、
コード生成・修正・ビルド手順の提案まで行ってくれます。

今回はこのCodexにほぼ丸投げして、Hello Worldのプログラムを作成します。

利用には、ChatGPTの有料プラン(Plusなど)への加入が必要です。


環境構築

WSLとUbuntuのインストール

以下コマンドを実行します。
WSLはWindows 11に標準機能として含まれていますが、初期状態では有効化されていない状態です。
以下のコマンドを実行することで、WSLの有効化とUbuntuのインストールをまとめて行うことができます。

wsl --install -d Ubuntu-24.04

その後、Ubuntuが起動し、ユーザー名とパスワードを設定すれば利用できるようになります。

今回は pi という管理者ユーザーを作成しています。

上記コマンドを実行後、下の画像もでます。
こちらは×ボタンで消しておきます。

nvmおよびNode.jsのインストール

ここで「nvm」と「Node.js」が出てきますが、Codexを動かすためにはNode.jsをインストールする必要があります。

今回は、Node.jsのバージョン管理ツールであるnvm(Node Version Manager)を使用して、Node.jsをインストールします。

nvmのインストール

以下のコマンドを実行します。

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash


Node.jsのインストール

以下のコマンドを実行します。

source ~/.bashrc
nvm install 22

"source ~/.bashrc" は、nvmのインストール後に設定を反映させるためのコマンドです。
これを実行しないと、nvmコマンドが使用できない場合があります。

"nvm install 22" でNode.jsをインストールします。

Codexのインストール

以下のコマンドを実行します。

npm install -g @openai/codex


Codexを実行する
Codex


Codexの認証

Codexを使うためのログイン方法です。
以下の意味みたいです。(よくわかってない)
1.ChatGPTアカウントでログイン
2.企業環境用
3.OpenAI APIキーを使う

ChatGPT Plus、Pro、Businessを使っている人は "1" を選んでおけばいいみたいです。

認証

Codexの認証で "1" を選ぶとブラウザが起動するので、ChatGPTのアカウントを入れ認証します。

ログイン成功

ログイン成功画面です。
"Enter" キーを押します。

安全なフォルダなのかの確認

"/mnt/c/Users/vaio/Desctop" フォルダが安全なのか聞いてきています。
Windowsのデスクトップ画面のフォルダなので、多分安全だと思いますので、1を選択したまま ”Enter” を押します。

仮に、デスクトップに "悪意あるコードが入ってる"もしくは "変なスクリプトがある" 場合は 2です!
Codexがそれを読んで危険な操作を提案する可能性があります。

Codexの画面

Codexのメイン画面です。

Codexの終了

以下のコマンドを実行し、Codexを終了します。

/q

ia16-elf-gcc のインストール

ia16-elf-gcc を WSL の Ubuntu にインストールします。
よって、WSL(Ubuntu)にログインした状態で以下のコマンドを実行します。

ソフトの配布元(リポジトリ)を追加

今回使用するUbuntuは決まった場所からしかソフトを入れられないので、 ia16-elf-gccの作者さんの配布場所(PPA)を追加します。
以下のコマンドを実行します。

sudo add-apt-repository ppa:tkchia/build-ia16


ソフト一覧の更新

以下のコマンドを実行します。

sudo apt-get update

コンパイラのインストール

gcc-ia16-elf を実際にインストールします。
以下のコマンドを実行します。

sudo apt-get install gcc-ia16-elf

Codexの作業用フォルダの作成

Codexの開発用フォルダを作成します。

今回はホームディレクトリ配下に「PC98」フォルダを作成します。

cd /home/pi/
mkdir ~/PC98
cd ~/PC98


環境構築は以上になります。

Hello Worldを作成する

実際にcodexを起動し、Hello Worldを作成してもらいます。
現在開いているターミナルは閉じた状態から始めようと思います。

WSLを実行する

ターミナルを起動し、以下コマンドでWSLを起動します。

wsl


Codexの作業用フォルダへ移動する

Codexの作業用フォルダへ移動します。

cd /home/pi/pc98


codexを実行する

codexを起動します。

codex


安全なフォルダなのかの確認

"/home/pi/pc98" フォルダが安全なのか聞いてきています。
”Enter” を押します。

確認後、codexが起動します。

codexにHello Worldを作成してもらう

以下文章をcodexに入力します。

"Hello PC-98 World"のプログラムを作成してください
環境は:
- PC-98 MS-DOSで動く
- gcc-ia16-elfを使用する
- コンパイルまでして実行ファイルも作って


※お願いするコンパイラは gcc-ia16-elf でなく ia16-elf-gcc ですね
 Codexさんが間違っていても意図をくみ取ってくれたようです

結果の確認

Windowsのエクスプローラーの左の "Linux" を選択し、Codexの作業フォルダ(/home/pi/pc98)に移動すると、"hello98.exe" を含む以下画像のファイルが作成されています。


ちなみに"hello_pc98.c" の中身はこんな感じでした。

#include <stdio.h>

int main(void)
{
    puts("Hello PC-98 World");
    return 0;
}

実機確認

家にある、PC-9821Ra43 で "hello98.exe" を実行したところ正常に動きました。


おわり

今回、Codexにほぼ丸投げという形で、PC-98実機で「Hello PC-98 World」を表示するところまで確認できました。

シンプルでお決まりのプログラムですが、まずは動かすことができたのは大きな一歩ではないでしょうか?
こういった進め方ができるのも、生成AI時代ならではだと感じます。

ちなみにChatGPT先生は

PC-98らしいこと、ここからが本番です。
・640×400 グラフィック
・VRAM書き込み
・BIOS呼び出し
どれをしますか?

みたいなことを "次のステップ" として提案してきました。

この子まじなの?本当にできるの?
気になります。


追記

PC-98とC言語の開発経験のない管理人(VB6とJavaをちょっとかじった程度)がChatGPT先生とCodexさんに頼んで "次のステップ" を頼んでみました。

成果

youtu.be
「PC-98でアドベンチャーゲームっぽいものを作ってほしい」と依頼したところ、漢字ROMから文字データを取得し、VRAMに書き込むところまで実装しれくれました。
機能としては、「外部テキスト文章でセリフ入力」、「選択」「分岐」「フラグ」「ジャンプ」の機能ありです。
「セーブ」と「FM音源」機能はついていません。

頼んだ感想ですが、少しでもコードを変更しようとすると、生成されたコードの動作をChatGPT先生に確認しながらでないと手を入れられない状況でした。
そのため、「言語を知らなくても作れる」というほど単純な話ではないと感じています。

おそらくC言語(とインラインアセンブラ?)は、バイブコーディングとの相性がよろしくないと思った次第です。

3回以上コードの戻しがありました。