|
|
F4レジスタはIOの#F4hのbit7に存在し、リセット時のステータスを記録するもので、電源ON(またはリセットボタン)で起動した場合に'0'が読み出され、ソフトウエアリセット時は'1'が読み出される。このレジスタはソフトリセット時にMSXタイトルをスキップして再起動を高速化する目的で利用されているようだ。海外のMSX2の2+化改造では追加実装するのが一般的らしい。
海外の作例に倣って74HC173を採用したが、このICを実装したところ、MSX起動ロゴが出なくなってしまった。海外では、このレジスタがないとロゴが出ないという情報があり、どうも話が食い違っている。 |
|
原因究明のため、BIOSを探ってみることにした。F4レジスタの読み書きにはRDRESとWRRESが用意されており、FS-A1FXのシステムROMでは下記の様になっていた。 |
FS-A1FX のBIOS
RDRES: MAIN ROM 017Ah
リセット時のステータスを読む
|
017A: C3 6A 14
146A: DB F4
146C: 2F
146D: C9 |
JP RM146A
IN A,(F4h)
CPL
RET |
|
WRRES: MAIN ROM 017Dh
リセット時のステータスを書き込む |
017D: C3 6E 14
146E: 2F
146F: D3 F4
1471: C9 |
JP RM146E
CPL
OUT (F4h),A
RET |
|
017Ah,
017Dhはフックで、実際のルーチンは146Ah,146Ehから書かれている。読み書き共にCPLで反転されており、問題はレジスタのハードウエア的な初期値にあると判明した。今回ハードウエア的なレジスタの初期値を'0'(ソフトウエア的には'1')に設定してしまったため、電源投入時にソフトウエアリセットとして起動ロゴがスキップされた模様。なお、ソフトウエアリセットをかけた場合は正しくレジスタがセットされるため、起動ロゴを出さずに再起動する。つまり、どの状況でも起動ロゴが出ない。
この問題を解決するには、2か所の CPL(2Fh) を NOP (00h)に書き換えたBIOSを用意するか、ハードウエア的なレジスタの初期値を'1'にするかのどちらかになる。74HC173は初期値が'0'に固定されているので、BIOSを書き換えるのが近道だろう。ということで、MAIN ROMに対して下記修正を行い、ROMを焼きなおした。
Panasonic MSX2+ MAIN ROM
|
146Ch: 2Fh -> 00h
146Eh: 2Fh -> 00h |
なお、SONYのHB-F1XVのBIOSでは、上記ルーチンのCPL(2Fh)のところが最初からNOP(00h)に置き換わっていた。このようなBIOSでF4レジスタが存在しない場合、データバスのプルアップにより'1'が読み出され、常にソフトウエアリセットとして起動ロゴがスキップされる。おそらく海外でMSX2+化改造に用いられるBIOSはこちらが主流で、起動ロゴが出ない問題を回避するためにF4レジスタの追加実装が一般的になっていると思われる。
|
|