apple1.rom

JAG 沖縄支部の勉強会にて、ばいなりあんな下地さんという方と話してて、逆アセはプログラムにさせた方が絶対良い、という結論になりました。python で何とかできんかな、という事で repl 上で確認してみました。

とりあえず

以下。

>>> f = open("./apple1.rom", "rb")
>>> cmd = f.read(1)
>>> cmd
'\xd8'
>>> cmd = f.read(1)
>>> cmd
'X'
>>> 

表示できるソレは文字として出力されるな。色々試行錯誤した結果、encode というナニがあるとの事。

>>> cmd.encode("hex_codec")
'58'
>>>

これでコマンドは確認できますな。これまで読み込んだ所では

  • d8 (CLD i)
  • 58 (CLI i)

次は何だったか。

>>> cmd
'\xa0'
>>> 
  • a0 (LDY #)

# は即値なので 1 byte だな。

>>> mnemonic = f.read(1)
>>> mnemonic
'\x7f'
>>> 
  • a0 7f (LDY #)

になるのか。次。

>>> cmd = f.read(1)
>>> cmd
'\x8c'
>>> 

この命令は 2 byte だな。

>>> mnemonic = f.read(2)
>>> mnemonic
'\x12\xd0'
>>> 
  • 8c $12d0 (STY a)

なんとなくここに書いてあるソレと合致はしてるので大丈夫かな。
あとは無理矢理ループさせて EOF まで、なのかな。でも

0000360      d012    fb30    128d    60d0    0000    0f00    ff00    0000
0000400

な末端部分の処理をどうしたものやら。