0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude codeで(簡易に)Z80エミュレータを作ってNascom Basicを動作させた件

0
Posted at

始めに

2025年初頭に安価となったClande code、その時に試したのは、πを1000桁計算するCのプログラムを書かせることでした。その時は、Claude codeは何やら数分間コードを作ってはエラーを訂正してテストするを繰り返した末に、char配列に一桁ずつ正解が入っているコードを最終版として出してきてがっかりした覚えがあります。それから1年、何やらものすごくなっていると聞いたので、再トライしてみました。

題材

今回は、π計算からはかなり高度になった、Z80エミュレータをお題としました。これを(趣味で)開発しているRISC-V CPUのテストベンチの一つとすることを目標としました。(自作RISC-Vへの移行は自分で行う)

経緯

①まず単純に「Z80エミュレータを作って」と伝えたところ、100行ほどの簡単なコードを作成してきました。

②明らかに行数が足りないので、「自分でテストをして」と伝えると10本ほどのテストを通して、いろいろ足りないレジスタ等を追加してきました。

③まだ出てきていないものがありそうなのと、コードをレビューして合っている/合っていないを判定するのはダルいので、いい案は無いかと考えたところ、Open SourceのNascom Basicというものを発見し、これが動作するようにしようと考え、ソース(アセンブラ)をたたきこんで、これが動くようにしてと伝える。

参考文献
https://www.xenesis.jp/2022/05/z80-nascom-basic/

④ここからClaude codeは長考に入り、ソースの調査を開始(しているらしい)。たまにYes/Noクエスチョンを投げてくるので、ポチポチ押すこと25分、105件のテストを行って、エミュレータが出来上がりました。

スクリーンショット 2026-05-03 173046.png

⑤小修正(printfとscanfだけで動作するよう追加で注文)でさらに5分ほどかかり、合計で35分ほどかかりましたが動作するものができました。Nascom Basicが起動し、コンソールが出ました。試しにBasic上でアスキーのマンデルブローを出力しましたが、ちゃんと動作しました。

⑥シンプルなCでprintfとscanfだけで動作するようにしたので、自作RISC-Vのベアメタル環境で動作するように5行ほど手で追記して、動作確認。見事に動作しました。

スクリーンショット 2026-05-04 084541.png

その時点での状況
自作RISC-V ⇒ Z80エミュレータ ⇒ Nascom Basic ⇒ マンデルブロープログラム
と4階建てのプログラミングとなりました。

終わりに

・1時間足らずで目的を達成してしまい、かなり衝撃を受けました。この間、Z80エミュレータのソースコードには指一本触れずにwsl上でNascom Basicが動作してしまいました。
・目標(どこまで作るか)が明確だと、そこにはきっちり当てはめたものを作ってくれるようです。今回はNascom Basic動かすという明確な目標があったため、すっきりと終了したと思われます。
・下手に人間が書いたコードを渡して改変するよりも、スクラッチビルドの方が速く収束するように思われます。
・現在不完全な自作RISC-V上でLinuxカーネルの起動を試みており、Claude codeを使い、デバッグを進めていますが、長考が多く、なかなか進みません。もともと不完全な土台に立っているため、仕方ないのですが。できたらまたレポートしてみようと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?