ユーザ用ツール

サイト用ツール


mz-700

文書の過去の版を表示しています。


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ファイルを指定する。

Applyを押せば、1Z-009Aが起動する。

MZ-800の初期化処理について

1)
モニタ上で S00000FFF0000 として、テープにセーブするなどして取り出す。
2)
svn checkout https://svn.code.sf.net/p/mz800emu/code/mz800emu-code として取得する。バイナリでも構わないが1.0.8 REV237以降を推奨する。
3)
MZ-700のCGROMはCPUにはつながっておらず、実機から吸い出すことは困難。
mz-700.1701865494.txt.gz · 最終更新: 2023/12/06 21:24 by araki