Z80 エミュレーターを開発しました。 (Silverlight)

Z80 エミュレーターを開発しました。 (Silverlight)

Silverlight3の能力を確認するために、グラフィカルなZ-80 のエミュレータを作成しました。

Z-80の命令セットをすべて組み込んでありますので、Z-80のアセンブラの勉強にはなるかもしれません。

 

次の画面は、「About SLZ-80」ボタンを押して、説明文をだしたところです。
計算をさせたまま、画面全体を倒したりできちゃいます。

 

いまのところ、Ver0.1とかなり控えめなバージョンで公開してしまいますが、
Z80の命令すべてのデバッグがまだ完了していないのと、
アセンブラも搭載する予定ですが、まだ途中ということでこのようなバージョンに
なっています。

私は、ソフト業界に身を置いている一人として、
かねてより、機会があったらエミュレータを作成してみたいなと
思っていましたが、時間的に余裕がなかったため、しばらく手をつけなかったのですが、
Silverlightの登場がVBやDelphi、ブラウザの登場と匹敵するくらい
私にインパクトを与えてくれましたので、最新の技術と30年前の技術を
結びつけてみました。

現在、ギグでは、業務システムのSilverlight化を推進しておりますので、
このサンプルで是非Silverlightを体感して、みなさんの業務アプリで
この技術を生かすことを想像してみてください。きっとたのしくなると思います。

このz80 エミュレータは、 Silverlight と Z-80にちなんで、
「 SLZ-80 emu 」 という名前にしました。
最初に簡単なデモプログラムがセットされるようにしてありますので、
画面したに並んだボタンの左から2番目の「RUN CPU」を押せば、
プログラムが作動します。
一番左の「SET INI」で割込周期を10000とか100000とか大きな数値にすれば、
実行スピードが速くなります。これは、LED表示関連の表示更新割込みを
何クロック毎に行うかという設定です。
自分でプログラムを作って読み込ませたいときは、
次のフォーマットでファイルを作成してください。

プログラムフォーマット
————————————————–
F5           ; PUSH AF
C5           ; PUSH BC
D5           ; PUSH DE
E5           ; PUSH HL
3E FF      ; LD A, FFh
2A 00 D0 ; LD HL, D000h
77           ;LD (HL),A
E1          ;POP HL
D1          ;POP DE
C1          ;POP BC
F1          ;POP AF
————————————————-
16進数の命令を並べて、コメントは「;」セミコロンを書くというシンプルなものです。
この例では、コメントにアセンブリ言語で記述してますが、
この書き方がわかりやすくていいと思います。
もちろんただ単純に
F5C5D5E53EFF2A00D0….
と記述するだけでもいいですし、
F5 C5 D5 E5 3E FF 2A 00 D0 ….
スペースをいれてもOKです。
このファイルを拡張子 .htx として保存して
「LOAD PROGRAM」ボタンをおして読み込んで実行してみてください。
実行開始番地の指定は、「SET INI」ボタンで設定してください。

プログラムを間違えて、Z80が暴走しだしたらご愛敬。
摩神語(マシン語 : 死語) の宿命とおもってたのしんでください。

2 Responses

  1. こんにちは、久しぶりにZ80で遊んでみようかと思って検索していたら面白そうでしたので
    ぜひ使ってみたいのですがこれはどうやって起動するのでしょうか?
    ブラウザ上で動くのだと思うのですがURLの記述が見つけられませんでした・・・
    よろしければお教え下さい。
    アセンブラもぜひ搭載してください!

    1. とむ 様
      Z80に対するコメントありがとうございます。
      Silverlight Ver3 というちょっと古い技術になってしまうため、現在のEdgeなどでは動作させることができません。
      IEでしたら大丈夫です。Silverlight はMicrosoftの技術ですが途中で方針転換して、Flashなどと共に消えてしまった技術です。
      現在はHTML5が主流となっていますので、機会があればHTML5でZ80をEmulateしてみようと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA