Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Geek Bar #2

Geek Bar #2

WebMSX(JavaScript版MSXエミュレータ)

KOYAMA Hiroshi

October 31, 2017
Tweet

More Decks by KOYAMA Hiroshi

Other Decks in Programming

Transcript

  1. WEBMSXを改造して遊ぼう
    株式会社あくしゅ  
    代表取締役  
    山崎泰宏  

    View Slide

  2. MSXとは
    •  1983年に米マイクロソフトとアスキーによって提唱された  
    8ビット・16ビットのパソコンの共通規格の名称  
    •  MSXとその後継規格であるMSX2(1985年)、MSX2+(1988年)、MSXturboR(1990年)の総称でもある。  

    View Slide

  3. 私とMSX
    •  ファミコンは買ってもらわなかったが、MSXは家にあった  
    •  それで小学校3年生の時に何気なくBASICを始めた  
    •  以来、ファミコンに勝ちたくてゲームを作り続け、友達に遊んでもらうも、  
    毎度クソゲーと呼ばれる結果に  
    •  どうしても面白い!すごい!と言われたくて、  
    ソースコードを印刷して小学校の休憩時間に読みながら改善ポイントなど書き込む  
    •  先生に没収され、親に連絡が行き、「息子さんが意味不明な暗号を眺めているのだが」と心配される  

    View Slide

  4. MSX・FAN最終号に投稿したプログラム  
    クソゲーも数打てば当たる  

    View Slide

  5. WEBMSXとは
    •  JavaScriptで書かれたMSXのエミュレータ  
    •  MSX2+相当の機能セットを持っている  
    •  CPUであるZ80MPUだけでなく、VDPや周辺装置との入出力も実装している  

    View Slide

  6. そもそもMSXってどうやって動いているのか
    (図解Z80って本がとても参考になります)  

    View Slide

  7. Z80MPUの構造
    当日専用スライドなので割愛  

    View Slide

  8. 動作例
    LD    A,  (HL)  
    ADD    A,  B  
    0100H  7E  
    0101H  80  
    0102H  

    View Slide

  9. 初期状態
    当日専用スライドなので割愛  

    View Slide

  10. ”7E”実行後
    当日専用スライドなので割愛  

    View Slide

  11. MPUから周辺チップへのアクセス切り替え例
    当日専用スライドなので割愛  

    View Slide

  12. メモリ読み出しを例にしたタイミングチャートの見方
    次に変化するまではアドレスが  
    保持されていることを示している  
    データが出力されていることを示す。  
    水平線はハイインピーダンス  
    当日専用スライドなので割愛  

    View Slide

  13. データ準備が出来ていないことを  
    MPUへ知らせる信号  
    当日専用スライドなので割愛  

    View Slide

  14. 当日専用スライドなので割愛  

    View Slide

  15. メモリとアクセス
    当日専用スライドなので割愛  

    View Slide

  16. そんなこんなで動作する
    LD    A,  (HL)  
    ADD    A,  B  
    0100H  7E  
    0101H  80  
    0102H  
    IN    A,  (8E)  
    0100H  DB  
    0101H  8E  
    0102H  
    メモリへのアクセス   I/Oデバイスへのアクセス  

    View Slide

  17. 抽象的に書くと
    Z80  
    MPU  
    RAM  
    I/O  
    Device  
    BUS  
    ここにHTTPアクセスモジュールを接続してみたい  
    ハードウェアでやろうとすると大変だが  
    エミュレータなら簡単  

    View Slide