ズッキーニの味噌煮込みBlog版

コンピュータのこと、食べ物のこと、なんでもないこと、とんでもないこと。

Z80始めました

2012年01月27日 17時18分10秒 | Weblog
単なる思いつきだったんだが、iPad上で動くZ80のシミュレータをつくることにした。ユニバーサルアプリにしたのでiPhone上でも動くことは動く。画面がちっちゃくてアタシのような高齢者にはつらいけど。^^;

アセンブラ、逆アセンブラと順調に開発を進めてきて、いまシミュレータに取りかかっている。逆アセンブラはアセンブラが吐き出したコードを復元するだけだが、シミュレータはそれを実行する。もちろんiPadのCPUはZ80ではない(だったら話としては面白いが)ので、ソフトで等価な動作をさせるわけだ。

27歳の時に8ビットマイコンでこの世界に飛び込んでからもう30年以上経つが、これほどZ80というCPUに真剣に向き合ったことはない。向き合っていたらもう少しマシなソフト屋になっていたかも知れない。そのツケが回ってきたというわけでもないだろうが、たっぷりと勉強している。ハーフキャリーってこんな動きしてるんだっけ…とか。

仕事の合間の日曜大工みたいなものなので、いつ完成することやら。

------- *

そんなことやってるもんだから、花を移すチャンスがまったくない。もっとも札幌の冬で、咲いている花を探しても無理なんだが。以前撮ったものでご勘弁。

今月の27日の花(ちょっと古い)

最新の画像もっと見る

9 コメント

コメント日が  古い順  |   新しい順
C#でZ80エミューレート (モヤット)
2012-10-17 07:10:34
C#でZ80をエミューレートし
640x400ドットのCRT上に、
グラフィックや文字を表示でき、
アッセンブラでProgramingが可能です。
返信する
C#で?それはすごい (かの)
2012-10-17 14:00:03
モヤットさん、コメントありがとうございます。

マシンの性能がわかりませんが、C#で記述したZ80のエミュレータって、パフォーマンスはどれくらいでているんでしょうね。興味があります。(^^)
返信する
Z80の思い出 (モヤット)
2012-10-18 07:44:20
かのさん、返信ありがとうございます。

学生時代(高専)にPC-8801(無印)のFDDなしを使い
ゲーム雑誌のリストを打ち込んでは、遊んでいました。

そのころのz80と比べれば、今時のPCは速すぎて、
エミュレートといえど十分な速度で実行していると思います。

どちらかというとWindows側の描画(文字やグラフィック)の遅さが問題になるかもしれません。

エミュレートの本体は、ネットにあったz80.javaをC#用の若干修正しただけです。(バグがあるかも?)

汎用ゲーム機を謳っているので、スプライト機能とか追加して見ました。16x16x8色が256個・・・・

z80のProgrammingには、ZASM(アッセンブラ)とsdcc(C言語)を併用しています。
返信する
MZ80の思い出 (かの)
2012-10-18 09:15:20
モヤットさん、こんにちは。

私がマイコンを初めて使ったのはコンピュータリサーチという会社のCRC-80というZ80ワンボードマイコンでした。マニュアルに載っていたモニタのアセンブルリストと格闘したのがプログラミングのスタートです。

その後MZ-80と出会い、カセットベースのエディタ、アセンブラ、デバッガを使うようになり、後に5inch片面のディスクドライブ(当時168,000円もしました)を接続し、テキストエディタや簡単なインタプリタなどを書きました。懐かしいです。(^^)

私が今回Objective-Cで書いたシステムは、アセンブラと逆アセンブラとシミュレータです。速度はiPhone4の上で簡単なテストプログラムを走らせるとZ80のクロック8~10MHz相当の速度でした。おっしゃるようにマシンの性能が当時とは桁違いなので、特に速度に気をつけて書いたわけでもないシミュレータでもそこそこの速度は出ますね。

シミュレータで一番苦労したのはDAA(10進補正)命令と、それに使われるHCy(ハーフキャリー)の扱いでした。DAA命令についてはシミュレータを書くのに必要な詳細なロジックをなかなか見つけられず、どちらかというとハード寄りの解説を見ながらロジックを組み立てていきました。

もしかしたらZ80のコード体系とこれほど真剣に本格的に向き合ったのはこれが初めてだったのかも知れません。^^;
返信する
自作機を経て今はノートPC (モヤット)
2012-10-18 12:31:22
PC-8801
MSX2
PC9801VM2
自作機(タワー)を数台自作
今はノートPC(i7 16GBメモリ)

z80のエミュレートは、今までに何度か作ってみうようと思いつつも、忙しさにながされ成就せず。

ネットを彷徨っていたらz80.javaを見つけ、
C#でもいけんじゃね。。。っと思ったのが先週の事、
先週の土曜日には、1文字出力、line(x1,y1,x2,y2,color)程度の事ができるようになりました。

昨日は、スプライトも追加したので、テトリス風の落ちゲーでも書いてみますか??


とりとめない文章で、お粗末さまでした。
返信する
Unknown (かの)
2012-10-18 13:06:22
モヤットさん、こんにちは。

いまどきZ80のエミュレータなんて、ほしがる人はいませんものねぇ。完全に趣味の世界です。

せっかくエミュレータが動くようになったので、ゲームが動くと楽しいと思います。私は時間が取れたらこちらのシミュレータで、むかしむかし大西さんという方が作られたGAME(General Algorithmic Micro Expressions)というインタプリタを動かしてみたいと思っています。

お互いに楽しく、才能の無駄遣いをしましょうね。(^^)
返信する
唐突ですが (モヤット)
2012-10-18 13:29:04
かのさん、こんにちは。

過去に発売されていたマイコン(8bit)のエミュレータは、
意外にも結構需要があるらしいです。
でも実機のROMを吸い出して所有していないとだめだとか、制約が多いのも事実です。

その点、このエミュレータは、z80とオリジナルな仮想H/Wしかないのでポータビリティがあるといえます。

というか孤立無援といった方が正しいかも。。

唐突ですが、北海道にsmile boomってソフト会社がありますよね、そこの「プチコンmkII for 3DS」に触発されて、このエミュレータを作る気になりました。

BASICの次はアッセンブラだ!!!(時代に逆行しまくり)

64KB(主記憶)、4MB(拡張RAM)、いったいどれだけ書けば全部のメモリを使いきれるだろうか?

イメージ(画像)データを、いっぱい詰め込む事ぐらいしか思いつかない・・・・

更に唐突ですが、
エミュレータですので、何台も起動することができるので、
エミュレータ間同士で通信して、対戦ゲームなんてのもおもしろいかもしれません。

おっと時間だ、お仕事お仕事・・・

では、また。
返信する
最新版をUPしておきました (モヤット)
2012-10-19 07:41:34
SleepCycleを0にすると、目にも止まらぬ早さで実行してくれます。是非お試しを。。。。

今時のPC恐るべし・・・
返信する
Unknown (かの)
2012-10-20 11:42:39
モヤットさん、こんにちは。仕事やら仕事やら仕事やら(笑)でコメントが遅くなりました。すみません。

えーと、よくわかっていません。SleepCycleってなんでしたっけ。^^;
返信する

コメントを投稿