はじめに
ファミコンで動作する自作ソフトを探していると、OSを見つけることがあります。本稿では、2016年に公開されたNES-OSを紹介します。
本稿の内容には、「Open Source Conference 2024 Kyoto」の展示内容が含まれます。
以下に展示の様子を示します。
右側の黄色いカートリッジが接続されているのが、NES-OSの展示です。
NES-OS
2016年にSkidlzさんによって開発されたOSで、「BrainF Interpreter」、「Snake」や「Life」が動作するそうです。
コマンドとして、「echo」、「pause」、「clear」、「edit」、「brainf」、「peek」、「poke」等が利用可能だそうです。
想像で話しているのは、文字入力の方法が詳細に記載されていないからです。PS/2キーボードを接続して利用するようですが、接続方法が不明です。
入力できる文字は、コントローラのボタンのAとBです。
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キーボードをつないでみます。