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?

ファコンのNES-OSを起動した話

Last updated at Posted at 2024-12-20

はじめに

 ファミコンで動作する自作ソフトを探していると、OSを見つけることがあります。本稿では、2016年に公開されたNES-OSを紹介します。

 本稿の内容には、「Open Source Conference 2024 Kyoto」の展示内容が含まれます。

 以下に展示の様子を示します。
image.png
 右側の黄色いカートリッジが接続されているのが、NES-OSの展示です。

NES-OS

 2016年にSkidlzさんによって開発されたOSで、「BrainF Interpreter」、「Snake」や「Life」が動作するそうです。
 コマンドとして、「echo」、「pause」、「clear」、「edit」、「brainf」、「peek」、「poke」等が利用可能だそうです。
 想像で話しているのは、文字入力の方法が詳細に記載されていないからです。PS/2キーボードを接続して利用するようですが、接続方法が不明です。
 入力できる文字は、コントローラのボタンのAとBです。
image.png

windows上でNES-OSのROMファイルの作り方

1.以下のurlからNES-OSをダウンロード

2.NES-OSのSourceディレクトリに以下のurlから「NESASM3.exe」をダウンロード

3.NES-OSのSourceディレクトリ内のasm.batを起動

「keyb.rom」が生成しますので、このファイルをROMカートリッジに保存して起動します。OSC2024京都では、EverdriveFamiを使って動態展示を行いました。

おわりに

 OSC2024京都では、PS/2キーボードでの入力まで再現ができませんでした。「Iコン、IIコンのどちらでのデータ処理か教えてください」とLLMに問い合わせました。答えは以下の通り。

KEYB.asm.txtファイルの内容から判断すると、キーボード入力処理はIコン(コントローラ1)で行われています。

具体的には、以下のコード部分でIコンのデータを読み取っています:

controller:
 lda #$01
 sta $4016
 lsr a ;clear a
 sta $4016
CHECK_A: 
 lda $4016
 and #$01
 beq CHECK_B

このコードでは、アドレス$4016を使用してコントローラポートからの入力を読み取っています。$4016はIコンのデータレジスタです。

まとめ

  • キーボード入力処理Iコン(コントローラ1)を使用して行われています。
  • コントローラポートのデータレジスタ(アドレス$4016)を操作することで、キーボードからの入力を読み取ります。

他に質問があれば教えてくださいね。

 ということですので、Iコンの端子にPS/2キーボードをつないでみます。

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?