単なる思いつきだったんだが、iPad上で動くZ80のシミュレータをつくることにした。ユニバーサルアプリにしたのでiPhone上でも動くことは動く。画面がちっちゃくてアタシのような高齢者にはつらいけど。^^;
アセンブラ、逆アセンブラと順調に開発を進めてきて、いまシミュレータに取りかかっている。逆アセンブラはアセンブラが吐き出したコードを復元するだけだが、シミュレータはそれを実行する。もちろんiPadのCPUはZ80ではない(だったら話としては面白いが)ので、ソフトで等価な動作をさせるわけだ。
27歳の時に8ビットマイコンでこの世界に飛び込んでからもう30年以上経つが、これほどZ80というCPUに真剣に向き合ったことはない。向き合っていたらもう少しマシなソフト屋になっていたかも知れない。そのツケが回ってきたというわけでもないだろうが、たっぷりと勉強している。ハーフキャリーってこんな動きしてるんだっけ…とか。
仕事の合間の日曜大工みたいなものなので、いつ完成することやら。
------- *
そんなことやってるもんだから、花を移すチャンスがまったくない。もっとも札幌の冬で、咲いている花を探しても無理なんだが。以前撮ったものでご勘弁。
今月の27日の花(ちょっと古い)
アセンブラ、逆アセンブラと順調に開発を進めてきて、いまシミュレータに取りかかっている。逆アセンブラはアセンブラが吐き出したコードを復元するだけだが、シミュレータはそれを実行する。もちろんiPadのCPUはZ80ではない(だったら話としては面白いが)ので、ソフトで等価な動作をさせるわけだ。
27歳の時に8ビットマイコンでこの世界に飛び込んでからもう30年以上経つが、これほどZ80というCPUに真剣に向き合ったことはない。向き合っていたらもう少しマシなソフト屋になっていたかも知れない。そのツケが回ってきたというわけでもないだろうが、たっぷりと勉強している。ハーフキャリーってこんな動きしてるんだっけ…とか。
仕事の合間の日曜大工みたいなものなので、いつ完成することやら。
------- *
そんなことやってるもんだから、花を移すチャンスがまったくない。もっとも札幌の冬で、咲いている花を探しても無理なんだが。以前撮ったものでご勘弁。
今月の27日の花(ちょっと古い)
640x400ドットのCRT上に、
グラフィックや文字を表示でき、
アッセンブラでProgramingが可能です。
マシンの性能がわかりませんが、C#で記述したZ80のエミュレータって、パフォーマンスはどれくらいでているんでしょうね。興味があります。(^^)
学生時代(高専)にPC-8801(無印)のFDDなしを使い
ゲーム雑誌のリストを打ち込んでは、遊んでいました。
そのころのz80と比べれば、今時のPCは速すぎて、
エミュレートといえど十分な速度で実行していると思います。
どちらかというとWindows側の描画(文字やグラフィック)の遅さが問題になるかもしれません。
エミュレートの本体は、ネットにあったz80.javaをC#用の若干修正しただけです。(バグがあるかも?)
汎用ゲーム機を謳っているので、スプライト機能とか追加して見ました。16x16x8色が256個・・・・
z80のProgrammingには、ZASM(アッセンブラ)とsdcc(C言語)を併用しています。
私がマイコンを初めて使ったのはコンピュータリサーチという会社のCRC-80というZ80ワンボードマイコンでした。マニュアルに載っていたモニタのアセンブルリストと格闘したのがプログラミングのスタートです。
その後MZ-80と出会い、カセットベースのエディタ、アセンブラ、デバッガを使うようになり、後に5inch片面のディスクドライブ(当時168,000円もしました)を接続し、テキストエディタや簡単なインタプリタなどを書きました。懐かしいです。(^^)
私が今回Objective-Cで書いたシステムは、アセンブラと逆アセンブラとシミュレータです。速度はiPhone4の上で簡単なテストプログラムを走らせるとZ80のクロック8~10MHz相当の速度でした。おっしゃるようにマシンの性能が当時とは桁違いなので、特に速度に気をつけて書いたわけでもないシミュレータでもそこそこの速度は出ますね。
シミュレータで一番苦労したのはDAA(10進補正)命令と、それに使われるHCy(ハーフキャリー)の扱いでした。DAA命令についてはシミュレータを書くのに必要な詳細なロジックをなかなか見つけられず、どちらかというとハード寄りの解説を見ながらロジックを組み立てていきました。
もしかしたらZ80のコード体系とこれほど真剣に本格的に向き合ったのはこれが初めてだったのかも知れません。^^;
MSX2
PC9801VM2
自作機(タワー)を数台自作
今はノートPC(i7 16GBメモリ)
z80のエミュレートは、今までに何度か作ってみうようと思いつつも、忙しさにながされ成就せず。
ネットを彷徨っていたらz80.javaを見つけ、
C#でもいけんじゃね。。。っと思ったのが先週の事、
先週の土曜日には、1文字出力、line(x1,y1,x2,y2,color)程度の事ができるようになりました。
昨日は、スプライトも追加したので、テトリス風の落ちゲーでも書いてみますか??
とりとめない文章で、お粗末さまでした。
いまどきZ80のエミュレータなんて、ほしがる人はいませんものねぇ。完全に趣味の世界です。
せっかくエミュレータが動くようになったので、ゲームが動くと楽しいと思います。私は時間が取れたらこちらのシミュレータで、むかしむかし大西さんという方が作られたGAME(General Algorithmic Micro Expressions)というインタプリタを動かしてみたいと思っています。
お互いに楽しく、才能の無駄遣いをしましょうね。(^^)
過去に発売されていたマイコン(8bit)のエミュレータは、
意外にも結構需要があるらしいです。
でも実機のROMを吸い出して所有していないとだめだとか、制約が多いのも事実です。
その点、このエミュレータは、z80とオリジナルな仮想H/Wしかないのでポータビリティがあるといえます。
というか孤立無援といった方が正しいかも。。
唐突ですが、北海道にsmile boomってソフト会社がありますよね、そこの「プチコンmkII for 3DS」に触発されて、このエミュレータを作る気になりました。
BASICの次はアッセンブラだ!!!(時代に逆行しまくり)
64KB(主記憶)、4MB(拡張RAM)、いったいどれだけ書けば全部のメモリを使いきれるだろうか?
イメージ(画像)データを、いっぱい詰め込む事ぐらいしか思いつかない・・・・
更に唐突ですが、
エミュレータですので、何台も起動することができるので、
エミュレータ間同士で通信して、対戦ゲームなんてのもおもしろいかもしれません。
おっと時間だ、お仕事お仕事・・・
では、また。
今時のPC恐るべし・・・
えーと、よくわかっていません。SleepCycleってなんでしたっけ。^^;