文書の過去の版を表示しています。
MZ-700
概要
MZ-800エミュレータでMZ-700のIPLを使う
MZ-700のエミュレータは一時期いくつか存在していたが、気づくと Windows版のいくつかのバイナリだけを残してすっかり消えてしまった。
なので、MZ-800エミュレータを代替品として使用するのが一つの方法であるのかと考えられる。 MZ-800はMZ-700モードを持つ上位互換機であるので、理屈としてはMZ-700のソフトウェアを実行可能である。 但し、正しい作法を守れば、という条件がついている。 単純に、MZ-700のIPLを与えれば動くというものではないので、ここではその作法について説明する。
MZ-800をMZ-700のようになるまで初期化する
MZ-800はMZ-700互換であるが、異なるハードウェアである。 巷では、MZ-700の海外版であるかのように紹介されているが、MZ-700の海外版は海外版として存在している。
MZ-800はMZ-700とMZ-1500の中間的なハードウェア構成であり、SN76489ANがあったり、ビットマップVRAMを持っていたり、PCGがあったりと、かなり異なるハードウェアであるため、正しくMZ-700モードに移行させてやらなければ、1Z-009Aは動作しない。
ここでは、行うべき初期化について説明し、1Z-009Aにパッチを当てて、MZ-800 エミュレータ上で動作させる方法を説明する。
これにあたっては、以下のものを用意する必要がある。
MZ-800エミュレータで1Z-009Aを動作させるためには、IPL.ROMの先頭3バイトを 0xc3,0x00,0xe8 に書き換え、ipl2.rom内の初期化ルーチンを呼び出す形にパッチを当てる必要がある。 パッチを当てたものを iplp.rom とする。
また、フォントについてもMZ-700WINのものをそのままでは使用できず、フォントのビットマップパターンを左右反転させる必要がある。どのような方法でも構わないが、例えば、以下のような ruby のコードを使用すれば変換できる。 変換後のファイルを cgrom.romとする。
#!/usr/bin/env ruby cgrom_rev = [] open('font.rom') do |f| cgrom = f.read.unpack("C*") cgrom.each do |c| i = 128 j = 1 d = 0 while i > 0 do d |= j if c & i != 0 j <<= 1 i >>= 1 end cgrom_rev.push(d) end end open('cgrom.rom','w')do |f| f.write cgrom_rev.pack("C*") end
ファイルが揃ったら、MZ-800エミュレータのメニューからROM→Settings for User Defined…を選んで、Enable User Defined ROMにチェックを入れたら、Seperate ROM Binary Filesを選び、それぞれのROMファイルを指定する。