投稿

ラベル(レトロパソコン)が付いた投稿を表示しています

MZ80を起動せよ!画面バッファを利用した高速書き換えプログラム

イメージ
古いPCやゲーム機のプログラミングをしていると、その描画速度の遅さに四苦八苦することが度々あります。今回のMZ80もそうで、BASICで素直に描画するととんでもなく遅く、お話になりません。 そこで、アセンブラで描画処理の部分を描いてしまえばあとはどうにでもなるのでは?というかエミュレーターでテストできるならアセンブラでガリガリ書けば速度なんとかなるのでは? (MZ80のすごいところは、描画中にメモリアクセスのウェイトをかけていないことです。映像は乱れますが、強引かつ高速に描画を繰り返すことが可能です。) そう考えた結果、潤沢?なメモリを搭載しているMZ80のシステムを利用し、フレームバッファを用意して、スプライト画面・背景画面を合成、描画メモリへ転送するシステムを設計してみました。 メモリ転送とアドレス管理の考察 ■|そもそもMZ80はどうやってテキストを描画しているのか 上記の漫画にも記載したように、MZ80にはz80のメモリエリア上に画面に表示するテキストバッファが割り当てられている設計となっております。 そのメモリエリアはD000h~D3E7hまでの1000byteとなっております。 というのも、表示できる文字数が横に40文字、縦に25行となっているためですね。 そのため、疑似ドットグラフィックはこの2倍の(1文字に2ドット分配置されているため)縦50ドットx横80ドットの解像度として絵を表示することができるのです。 そして今のPCのようにラスターフォントで表示しているのではなく、VRAMには画面に表示するフォントのコードを書き込んでおります。そのため、任意のフォントグラフィックに書き換えて表示するといったような機能は搭載されておりません。  VRAMに書き込まれた文字コードがそのままグラフィックを記録しているROMにアドレスとして読み込まれ、フォントデータが出力される仕組みになっております。  そのため、搭載されているフォントグラフィックROMを差し替えれば、任意の文字グラフィックスに差し替えることが可能です。 ■|書き換え速度の問題と、VRAM転送問題  ゲームを作るうえでカギになるのはこの描画速度です。例えば、PRINT文で書き換えた場合は必ず1Fで1回しか処理されないため、描画速度がどうしても遅くなります。 ましてや、スクロール画面などの画面全体を書き...

Apple1 Computerを現代で作ることはできるのか挑戦してみた その2~それっぽい代用品が見つかった編~

イメージ
記事の投稿期間はそれなりなものですが、じつは例のシフトレジスタの代替部品になりそうなものをあれから1年近く探し続けました。というよりも、私も社会人になり 前にシフトレジスタがいかに問題点だったかを語った記事 Apple1 Computerを現代で作ることはできるのか挑戦してみた その1~シフトレジスタ問題~ 常識では考えられないくらい(とりあえず土曜日は消えた!!!)忙しくなったため、できていなかったのが実情です。 割と一個が高い部品なのでピンを折ってしまったら・・・ そんなこんなで死にかけながらも探した結果、こちらの部品を秋葉原(若松通商)で見つけました。 これ、なんと512bitのシフトレジスタなんです。つまり、本来の数の倍にはなってしまうもののなんとかありえなくはない数に抑えられる見込みが立ちました。 部品名はMM5058・・・この部品自体ディスコンで、今どきこんな恐ろしい長さのシフトレジスタ自体、正直取り扱いがありません。生産してる物好きのメーカーもありませんから、お察しというか。 とりあえずまずはこのレジスタがどう動くのか、想定した代用方法として成り立つのかを動作確認してみます。 ■まずは連結してみた 単純に考えて、512+512で1024になるっていうお話です。さらに嬉しいことに、インプット・アウトプット電圧がTTL標準電圧でスイングするということで、本来のICを使用した場合に必要な変圧ICが不要になります。やったぜ!!!! ただ、それでも-12Vの電圧が別で必要なため結局このコンピューターの必要電圧は5Vと-12Vになることは確定しました。 そしてarduinoでクロックと入力信号を入れたところ・・・・ 見事1024bit連続でシフトカウントすることに成功。いやーよかったよかった。動作速度の最高点が、本来使用するICは10Mhzなのに対し、これは2Mhzなのが心配ですがこれしかないのでこれで回路を書き直し、実際に組み立ててみることにします。 そして実際に組み立てるに当たって、正直ブレッドボードで組み立てるのはしんどいレベルなのです。電源回路とか複数走らせることになるので、下手に繋げばその他多くのICが死にます。 よって、半田付けではない古の方法で組み立てることにします。そ...

MZ80を起動せよ!モニター修理というか交換しました

イメージ
前回、なんだかもううねうねしちゃって大変なことになってしまったMZ80を入手。 MZ-80を起動せよ その1 ジャンクなあいつがやってきた 症状は最悪の「偏向ヨーク破損」を引いてしまい、残念ながら私の手には負えない代物となりました。 これはブラウン管を交換したあと ■|どんな感じの子なのか、一旦整理してみる。 まず、この子がどのような状態で我が家にきたのか、Twitterにあげた写真とともに振り返ってみます。 DRAMエリア。しっかり埋まっています。 まず、メモリはどうやら48KBフル実装。大変嬉しいですね。このころのメモリはもう入手が難しくなっています。 起動直後の様子。 画面が潰れてしまっています。そして、ただ一本の線になっていればそのほうが実は症状としてはどうとでもなっているのが悲しいところ。この波打つ線こそ、ブラウン管の死を表していました。 とりあえずコンデンサを交換したものの・・・ これくらい古いマシンは、問答無用でコンデンサの交換から始めるのをお勧めします。電子部品の世界では、コンデンサはナマモノと考えましょう(極論。) しかしながら、コンデンサを交換しても芸術的な波打ちは治りませんでした。 ブラウン管の偏向ヨーク、つまり電子ビーム直下の波形 そこで、修理マニュアルを参考に、波形が正しく入力されているかを確認します。すると、偏向ヨークというブラウン管の周りに巻きついているコイルの部分で波形がこのように乱れています。本来なら美しいカーブを描くのですが、見ての通りぐちゃぐちゃです。水平と垂直の間では漏電は発生していませんが、垂直のコイルの中で腐食が進んでいるとみて間違いないでしょう。 ここがその問題の回路の部分。上の部分がブラウン管の偏向ヨークになっており、なんとこの後この抵抗が焦げていることが判明する。 さらにこの後、写真を撮り損ねたのですが昔作った電磁石と偏向ヨークにつなげる回路を繋ぎ直し、波形を観測。本来出るべき綺麗な波形を観測できたため、偏向ヨーク故障がほぼ確定しました。ほんと辛い。 ちなみになのですが、この間にヤギ型トランジスタさんに相談にのっていただきました。本当にありがとうございました・・・ 結局、コンデンサを交換してここまでは治ることができた。 ということで...

Apple1 Computerを現代で作ることはできるのか挑戦してみた その1~シフトレジスタ問題~

イメージ
このサイトでお馴染みのMacintioshシリーズですが、このシリーズはApple社の最初の製品シリーズではないことをご存知の方も多いかと思います。(多いか?) そんなアップルコンピューターの最初の製品は、Apple1という基板むき出しの製品でした。なんというか、Arduinoの巨大バージョンのよう。またはMZ-80を基盤だけで販売したらこうなるんだろうなあといった感じ。サイズはおそらくこちらのほうが小さいですが。 https://ja.wikipedia.org/wiki/Apple_I より引用。 そんなApple1ですが、このご時世でも当時製品についていた説明書をダウンロードすることができたりします。そこにはなんと当時の回路図とプログラムの詳細が書かれており、うまくすれば自分で製作することができるようになっています。制作者のウォズニアックもこれをもとに自分で製作することを許可しているという英文もちらほら見かけるので、(復刻版Apple1を作る計画がありその際のインタビューにて書かれている。)ならば自分でこのApple1を作ってみようではないかとなるに至ったのです。 ただ、強引に当時のパーツを集めれば作れるのはほぼ当たり前です。なので今回は一つ縛りをつけようと思います。それは、 「秋葉原で買うことができるパーツで作る」 というものです。これが後々地獄を招きます。Macintoshですでに味わってるのにね。では行ってみましょう!!!!! ■|廃盤パーツのオンパレード!?70年代のコンピュータなので・・・ 早速回路図をもとにパーツを買い求めようとしますが、いくら書いてあるとはいえ正直よくわからないものが大半。特にCPUボードとビデオボードが別に記載してあるようですし、文字もつぶれていて正確に読み取れないところもちらほら。 そこで海外で製作された方のサイトを見ると、なんとパーツリストがまとめてありました。これさえあれば無敵!と喜び勇んで秋葉原へ行き、秋月に飛び込むと・・・ ない。 ん?じゃあ千石に行ったらアルカナ?と地下に潜ったところ・・・ ない! なんか必要なパーツの3/1ぐらいがない!!!!!!! いやー、まいりました。店員に話すと、もうそういうのは取り扱わなくなったの一点張り。...

MZ-80を起動せよ その1 ジャンクなあいつがやってきた

イメージ
お久しぶりの更新でございます。今回新しくというか何を血迷ったのか一体型PCを入手しました。それがこちら。 今回の 犠牲者 患者。 MZ-80K2C 状態はいいようで最悪。見たことない状態の症状が出ています。しかしメモリはフル実装、テープレコーダはゴムまできちんと残っているという奇跡の状態。キーの入力もきちんと取得しているようで、つぶれている画面にはかすかに文字が入力されているようなもので確認できました。 この2段組みメモリがいい。 そして問題のこの症状。 twitterにてこの状態であることを伝えると、多くの方からMZ80についての情報をいただくことができましたが、その中で非常に気になるコメントが。 「偏向ヨークが壊れているため、ブラウン管ごと交換が必要である」 それもう魅力半減やん。 衝撃的な一言です。つまり修理不可能ということを告げられショックに打ちのめされていたところに、もう一つ情報が伝えられます。 「ヨークコイルがそんな簡単に壊れるはずがない。壊れているのは垂直偏向回路」 もはや専門用語のお祭りで何が何だかわかりません。詳しく調べてみると、ブラウン管には根元にコイルが巻き付けてあり、このコイルが映像を表示する光のビームを曲げることにより映像を映し出している、ということだそうです。わかりやすいのがオシロスコープ。古いオシロスコープを開けると中にはブラウン管が入っており、そこにコイルが巻いてあります。そこに波形信号を与えることにより信号を目に見えるようにしているのです。昔理科の実験で電子の動きを見る装置に磁石を近づけると中のビームが曲がるというのがありましたが、あの仕組みを使っているようです。 つまるところ、この写真のように横一線になっているのは縦に光の線を揺らす回路が壊れて、ビームが曲がらずこのようになる、ということのようです。 そこで垂直偏向回路がだめ、という指摘をくださった方に回路図をお見せしてどこがだめかと尋ねたところ、問題の部分にあるicとトランジスタの交換の型番などを教えていただきましてさっそく修理に挑戦です。 ■|感電しながら修理に挑戦。まずはコンデンサの交換から こういう古い機械はまずコンデンサはダメになっているものです。今はないコンデンサを専門に扱っていたお店のおっちゃん曰く、 ...

Macintosh Plusを起動せよ その11「Macintosh 128k/512k/Plus用のバックアップバッテリーを自作!」

イメージ
生産終了は罪。 というわけで今回のテーマはMacintoshのPRAMバッテリーを交換するにあたり、そこそこ手に入りやすいもので代用しようというものです。秋葉原に何回も探しに行きましたが、その規格の電池は取り扱わなくなったと言われてしまいました。とほほ・・・  Macintoshの後ろにはバッテリーケースがあり、そこに電池を入れると日付を設定しカウントし始めるここができます。また、プログラムを作成する際など乱数を作成するのにこの時計のシステムを使用するため、今取り組んでいるMacintoshでプログラム作成の際に交換の必要性がではじめたこと、ファイルを作成する際に日付の順番がめちゃくちゃになってしまうこの状態をどうにかしようというお話です。 いちようきちんとした代用バッテリーは今でも手に入るのですが、いかんせん非常に高いのです。馬鹿みたいに。 どう見てもぼったくりである。 そこで今回、 こちらのサイト (The Compact Mac World様。最終更新が2005年で止まっているのが残念です・・・)を参考に電池を自作してしまおうというお話。 ■|電池は3Vでもいいのが不思議・・・ 今回の犠牲者 今回使用するものは ・CR2 3V電池(カメラ用) ・直径15mm、長さ22mmのアルミの棒一つ です。アルミの棒はホームセンターで多分売ってます。ついでにカットしてもらいましょう。(ちなみに私はカットしてもらう際におじちゃんが22mmを何を勘違いしたのか2.2inchでカットしてくれました。) そして用意したこいつらを 合体☆ セロテープでも割とくっつく。 なぜプラスの側をアルミの棒につなげているのかというと、金属と金属が電池のフィルムに邪魔されてマイナス側ではくっつかないからです。 そして完成したこれを電池の蓋の記載に合わせてMacintoshに差し込みます。 数十年ぶりに動くバッテリーが差し込まれた。 割とゆるいのでもう1mmほど長くてもいいかも?でも怖いので22mmがオススメです。 早速起動して時計を設定しましょう! 割とすっきりしてる我がデスクトップ。 見事動き、無事に設定したデータが残るようになりました。ただ問題なのが、 2018年の20部...

[MSX1で]Panasonic CF2000[ゲームを作ろう]

イメージ
MSX。レトロパソコンになじみのある方、多少マニアックなレトロゲーマーの方なら聞いたことがあると思います。ファミコンより少し前ごろから登場し、シリーズ展開した結構出回ったはずなのに中古ショップとかあまり見かけないというマシンです。 そこで今回はこのマシンでプログラミングをしてみようというのが今回の企画。しかも使用するのは上位機種のMSX2やturboではなく、初代MSX1です。 ■今回使用するメカたち 今回使用するのはいわゆる1chipMSXではなく、MSX1実機を用います。これはできるだけ当時の環境で制作してみたかったのとそもそもMSXを思う存分触りたかったというのがあります。 というわけで使う機種はこちら。 状態もいいし箱付きなのに、この安さなのはMSX1ゆえなのか・・・ CF-2000 この機種、割とマイナーなようでかなりネットでも情報の少ない機種になっているようです。ちなみにヤフオクで1000円で落札しましたが、何分ジャンクなので修理から始めます。キーの反応が妙に悪い部分があるのと、もうコンデンサが寿命ですから全とっかえからですね。ひぃい。 ちょっとボロい。 データレコーダー「QR-8030」 まあ驚くほど情報のないデータレコーダことQR-8030。取扱説明書なんて上がっているはずもなく、手探りでなんとか使っていきますがその前にこの子も修理から始めます。先人の方が見事な修理の記事を公開してくださっていますのでそれを参考にしようと思います。 ■まず初めに修理から プログラミングでゲームを作ろうって話なのになんで修理から始まるのかはさておきましてまず保存ができるようにデータレコーダの修理から。こちらのサイトを参考にしまして、中のゴムを交換。プーリーから回転軸へ力を伝達するゴムはドロドロに溶けてました。モーターからプーリーへ伝達するほうは少し伸びてるかな程度でしたが、買ってきておいたので交換します。そしてスイッチを入れますが・・・・ ゴムを交換。とにかく回るかチェック。 まともに動きません。めっちゃゆっくりねっとり回転します。電圧を図ってみましたがモーターには6Vとあるのに対し供給電圧は8V。電圧は十分すぎるほどです。しかし以前私はarduinoにモーターを直結するというあほをやらかしまして、電圧が足りてよ...

Macintosh Plusを起動せよ その10 「フロッピードライブコネクタDsub-19Pinを自作する」

イメージ
このコーナーもついに2桁に突入しました。最初はろくに起動しなかったこのMacintoshも、いまでは真夏の恐ろしい暑さの中こき使われてる毎日を過ごしています。 さて、今回のテーマである「フロッピードライブコネクタを自作する」とはなんぞやということなのですが、Macintoshのフロッピードライブコネクタを見ていただくとよくあるDsubコネクタのようで少し違うものになっています。 その名も「 Dsub-19 」。別名絶版コネクタ。このDsub19ピンは非常に特殊で、今から10年前以上の秋葉原では取り扱いもあったそうですがT-15ロングドライバーとともに絶版となりまして。クラシックマックを扱う中でも海外勢さえその困難な入手性に金型から作成し中国で再生産をしたという代物です。つまり ほんとに手に入らない 。 とまあ言いますが正直HDDがあればこのコネクタがなくても困りません。しかしいまやシリアルポートもつなげるものができ唯一このフロッピードライブコネクタのみが宙ぶらりんに空いているという状態に。ExternalFloppyとか、MacintoshFloppyEmuという素敵なデバイスをつなげば万事解決なのですが、片方は万は行く代物でかたや海外から英語でやり取りしてお取り寄せする必要のある高額なもの。筆者には非常に手が届かない代物なのです。 そこで、まずこのコネクターだけでも作れないかと考えまして、先ほどの フロッピーエミュレーターのサイト をふらふらしていましたらこのコネクタの正面からの図が乗っておりました。これを使えばもしかしたらコネクタ作れるんじゃないかと考えまして秋葉原に必要になりそうな部品を一つ取り揃えてみました。 ・ Dサブコネクタ圧着用 ピン(太)オス ・ベーク板 ・単芯ケーブル まず、拾ってきたDsub19ピンの画像を本来のサイズにして印刷します。 失敗に備えて一気に印刷。かなり小さい。 そしてそれに合わせてベーク板を切ります。これがコネクタのベースになります。 ベーク板は加工しやすいのでこういうのに結構向いていたり。 きちんとずれないようにセロハンテープなどで固定したら、圧着用ピンの太さと同じサイズの穴をキリで開けていきます。 ずれたらおしまいです。しっかり固定します。 きれいに開けたらピンを...