apple1emu.asm
俯瞰てきに眺めてみる。とりあえず
- pyz80 の pass な挙動が理解できてない
- 同時に定数の評価なナニがイメージできてない
あたりはスルーって事で。
あと微妙ですが以下なソレをリファレンスに使用
- www.onlyme.sakura.ne.jp/kl5c8012meireisetumeisyo.pdf
- 最初らへんで global な定数が申し述べられている
- global な変数云々について若干理解できてない部分あり
- 次のナニで main loop っぽいソレが定義
- load_state して
- execute して
- save_state して
って事なんですが、reset_loop 微妙だな。そもそも ei って何だ。
def op_EI(p,opargs): return op_noargs_type(p,opargs,[0xfb])
翻訳系のソース持ってると便利ですな。0xfb は何か、というとここによれば Enable Interruput なのか。0xf3 が Disable Interrupt になるんかな。
割り込み云々って kernel のナニ以来ですな。
次
コメントには_Utitlity functions_とあります。なんかコメント的には画面周りの云々なコメントに見えますな (最初らへん)。
次に出てくるのが_Interrupt Handling_なブロック。俯瞰って事で割り込み制御なのね、と言いつつ次に出てくるのが_65C02 emulation_なブロック。
ここで execute な入口が出てきてます。あー以下なあたり
call load_state call execute ; GO! call save_state
もう少しきちんと見ないと駄目だな。あと最後らへんなんですが、
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Instruction implementations INC "opimpl.inc" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
という興味深いナニが include されてたりとか以降で
; Woz Monitor ROM (&ff00-&ffff) ; May be overwritten by includes below dump &ff00 MDAT "apple1.rom"
とか
; Use RAM-based Applesoft BASIC by default IF 1 ; Applesoft BASIC [Lite] (6000-7FFF) ; http://cowgod.org/replica1/applesoft/ dump low_page,&6000 MDAT "applesoft-lite-0.4-ram.bin" ELSE ; Lee Davidson's Enhanced BASIC (5800-77CE) ; http://members.lycos.co.uk/leeedavison/6502/ehbasic/ dump low_page,&5800 MDAT "ehbasic.bin" ENDIF
とか
; Use Ken Wessen's BASIC+assembler by default IF 1 ; Ken Wessen's custom BASIC + Krusader assembler + enhanced monitor (E000-FFFF) ; BRK handler points to mini-monitor in this version ; http://school.anhb.uwa.edu.au/personalpages/kwessen/apple1/Krusader.htm dump &e000 MDAT "65C02.rom.bin" ELSE ; Applesoft BASIC [Lite] + Woz monitor (E000-FFFF) ; http://cowgod.org/replica1/applesoft/ dump &e000 MDAT "applesoft-lite-0.4.bin" ENDIF
みたいな事されてて Woz monitor 使いたい、って使い方微妙ですが。
そりゃ良いのですが
apple1emu だけで当分弄れる遊び道具なんですが。
追補
- www.onlyme.sakura.ne.jp/kl5c8012meireisetumeisyo.pdf
上記のマニュアル、備忘にてリンクを残しておきます。