> ROMエリア1 バンク0Fh
> ポートFF2h bit7-4=00h バージョンアップボードROM10
> 01h バージョンアップボードROM11
# 正確にはbit7-4ではなく、bit7,5,4のようだ。
# ひょっとしてbit6はROMエリア0のバンク切り替えに関係している?
これに対応。
PLAY文でハングも解消。
釜房一号さんの調査結果も合わせて考えると、
バージョンアップボードにもV1/V2モード用のROMが搭載されている
らしく、音色に関する何かをV1/V2モード用のROMからコピーしていると推測される。
ちなみに、ROMを比較してみると、
VA2/3のROM11 = VupボードのROM11 ≠ VA1のROM11
ただし、VA1のROM11で異なるのは1バイトだけ。
Vupボード搭載時は、V1/V2モード時に使用されるROMも
Vupボード上のROM11になるのだろうか?
2007年04月04日
2007年03月31日
バージョンアップボード6
バージョンアップボード有効時、
V3 BASICでPLAY文を実行するとハングするということで、
釜房一号さんがいろいろ調べてくださったところ、
ROM1エリアも、バージョンアップボード内でさらに
バンク切り替えしていることが判明。
確かに、BASIC起動時、STOPM命令実行時に、
ポートFF2hのbit7-4に1を出力している。
(正確には、MUSIC BIOSのAH=09hで、だそうだ。)
ROMエリア1 バンク0Fh
ポートFF2h bit7-4=00h バージョンアップボードROM10
01h バージョンアップボードROM11
ROM取得のためGETROMVA改造中。
V3 BASICでPLAY文を実行するとハングするということで、
釜房一号さんがいろいろ調べてくださったところ、
ROM1エリアも、バージョンアップボード内でさらに
バンク切り替えしていることが判明。
確かに、BASIC起動時、STOPM命令実行時に、
ポートFF2hのbit7-4に1を出力している。
(正確には、MUSIC BIOSのAH=09hで、だそうだ。)
ROMエリア1 バンク0Fh
ポートFF2h bit7-4=00h バージョンアップボードROM10
01h バージョンアップボードROM11
ROM取得のためGETROMVA改造中。
2007年03月25日
バージョンアップボード5
> メモリライトはまた後日。
実装。
この時点で辞書ROMがないので、ほとんど漢字変換はできない
のだけれど、「この事」「その事」など一部は変換可能だった。
バージョンアップボードで追加されたバックアップRAMに
ソノコト、コノコトといった文字列が見えたので試してみた
のだ。
釜房一号さんが調査してくださったところによると、
システムメモリエリアバンクバンク0Fh
ポートFF3h bit3-0=0Ch 辞書ROM1
0Dh 辞書ROM2
ということなので、実装。
漢字変換もOK。
Debug Utilityも改良して、バージョンアップボードのバンク
指定を可能に。

バージョンアップボードと無関係だが、いままでDebug Utility
でIOバンクメモリとシステムメモリエリアバンク9(フォントの
一部とバックアップメモリ)が未対応だったので対応。
実装。
この時点で辞書ROMがないので、ほとんど漢字変換はできない
のだけれど、「この事」「その事」など一部は変換可能だった。
バージョンアップボードで追加されたバックアップRAMに
ソノコト、コノコトといった文字列が見えたので試してみた
のだ。
釜房一号さんが調査してくださったところによると、
システムメモリエリアバンクバンク0Fh
ポートFF3h bit3-0=0Ch 辞書ROM1
0Dh 辞書ROM2
ということなので、実装。
漢字変換もOK。
Debug Utilityも改良して、バージョンアップボードのバンク
指定を可能に。
バージョンアップボードと無関係だが、いままでDebug Utility
でIOバンクメモリとシステムメモリエリアバンク9(フォントの
一部とバックアップメモリ)が未対応だったので対応。
2007年03月18日
バージョンアップボード4
DebugUtilityでバージョンアップボードのROMを読めるように処理を追加。
> そのあと無限ループにはまっている模様。
ROMエリア0のバンク0fhに割り当てるべきメモリを
間違って1fhに割り当てていただけだった・・・(;_;)
修正後、起動直前まで動くが、
Readyの表示が出ない。
ステップ実行して調べたところ、
システムメモリエリアのバンク0fhを選択した状態で、
セグメントB2xxh(xxは忘れた)あたりを読み取って
何かチェックしている。
バンク0fhに最初に切り替える部分を特定して、
周囲の処理を見たところ、
ポートFF3hの下位ニブルに09hを出力したのち、
B2000h-B3FFFhのチェックサムを取っている。
ということで
システムメモリエリアバンクバンク0Fh
ポートFF3h bit3-0=9 バックアップRAM(B2000h-B3FFFh)
ということと思われる。
この仕様でメモリリードのみ実装。
新たにメモリを設けるのではなく、VA2のバックアップメモリの
B2000h-にマッピングすることにした。
これでPC-Engineは起動するようになった。
メモリライトはまた後日。
拡張スロットに置いたデバイスで、B2000h-B3FFFhに
メモリを配置しているということは、
98用EMSメモリなどをこの領域に設定すると
衝突してダメ、ということなのだろうか・・・
> そのあと無限ループにはまっている模様。
ROMエリア0のバンク0fhに割り当てるべきメモリを
間違って1fhに割り当てていただけだった・・・(;_;)
修正後、起動直前まで動くが、
Readyの表示が出ない。
ステップ実行して調べたところ、
システムメモリエリアのバンク0fhを選択した状態で、
セグメントB2xxh(xxは忘れた)あたりを読み取って
何かチェックしている。
バンク0fhに最初に切り替える部分を特定して、
周囲の処理を見たところ、
ポートFF3hの下位ニブルに09hを出力したのち、
B2000h-B3FFFhのチェックサムを取っている。
ということで
システムメモリエリアバンクバンク0Fh
ポートFF3h bit3-0=9 バックアップRAM(B2000h-B3FFFh)
ということと思われる。
この仕様でメモリリードのみ実装。
新たにメモリを設けるのではなく、VA2のバックアップメモリの
B2000h-にマッピングすることにした。
これでPC-Engineは起動するようになった。
メモリライトはまた後日。
拡張スロットに置いたデバイスで、B2000h-B3FFFhに
メモリを配置しているということは、
98用EMSメモリなどをこの領域に設定すると
衝突してダメ、ということなのだろうか・・・
2007年03月17日
バージョンアップボード3
メニューのConfigでVA1を選択可能に。→ポート152hの動作に反映。
ROM0/1エリアからバージョンアップボードのROMを読めるように実装。
モードLEDがV3に切り替わるところまで行ったが、
そのあと無限ループにはまっている模様。
Debug Utilityのほうはまだバージョンアップボードの
ROMを読めるよう対応していないので、
何を実行して無限ループになっているのか調べられないが・・・
今日はここまで。
ROM0/1エリアからバージョンアップボードのROMを読めるように実装。
モードLEDがV3に切り替わるところまで行ったが、
そのあと無限ループにはまっている模様。
Debug Utilityのほうはまだバージョンアップボードの
ROMを読めるよう対応していないので、
何を実行して無限ループになっているのか調べられないが・・・
今日はここまで。
2007年03月16日
バージョンアップボード2
実装開始。
ROMファイルの読み込みと、
ポートFF2h、
vaeg.iniでバージョンアップボード有効無効の切り替え。
まだそれだけ。
ポート152はVA2/3仕様で作ってあるので、
初代仕様に変えるか、切り替え可能にしないといけなさそう。
ROMファイルの読み込みと、
ポートFF2h、
vaeg.iniでバージョンアップボード有効無効の切り替え。
まだそれだけ。
ポート152はVA2/3仕様で作ってあるので、
初代仕様に変えるか、切り替え可能にしないといけなさそう。
2007年03月13日
バージョンアップボード
バージョンアップボードの調査
ROMの配置。
ROMエリア1 バンク0Fh
ROMエリア0 バンク0Fh
ROMエリア0のほうは、さらに内部(ポートFF2h)でバンク切り替えしていて、10バンクの中の1バンクを選択して、ROMエリア0バンク0Fhに投影するようになっているらしい。
ROMエリア1に1バンク、ROMエリア2に10バンクで合計11バンク。
VA2/3と同量のROMがあることになる。
辞書ROMとバックアップRAMがどこかにあるはずなのだが・・・まだ見つからない。
ROMの配置。
ROMエリア1 バンク0Fh
ROMエリア0 バンク0Fh
ROMエリア0のほうは、さらに内部(ポートFF2h)でバンク切り替えしていて、10バンクの中の1バンクを選択して、ROMエリア0バンク0Fhに投影するようになっているらしい。
ROMエリア1に1バンク、ROMエリア2に10バンクで合計11バンク。
VA2/3と同量のROMがあることになる。
辞書ROMとバックアップRAMがどこかにあるはずなのだが・・・まだ見つからない。
2007年03月11日
GETROMVA修正
バージョンアップボードを搭載し、有効にした状態で、
GETROMVAを動かすとハングするというご報告があった。
GETROMVAのソースを見返したら、ROMエリア0のバンクを
切り替える際に、ポート152のbit6を0にしていた。
VA2/3と初代で152のbit6,7の働きが違っていて、
VA2/3に合せて作っていた。
http://www.pc88.gr.jp/inside88va/wiki/index.php?%A5%B7%A5%B9%A5%C6%A5%E0%A5%A8%A5%EA%A5%A21
バージョンアップボード有効時は、ROMエリア1のバンクを0Fhに設定しているらしく(ボードなしならバンク00h)、152のbit6を0にしてしまうと、バンクが0Bhに切り替わってしまう。割り込み許可状態でこれをやってしまったものだから、ハングアップ、ということだろう。
機種判定してバンクの切り替え方を機種に合せるように修正。
GETROMVAを動かすとハングするというご報告があった。
GETROMVAのソースを見返したら、ROMエリア0のバンクを
切り替える際に、ポート152のbit6を0にしていた。
VA2/3と初代で152のbit6,7の働きが違っていて、
VA2/3に合せて作っていた。
http://www.pc88.gr.jp/inside88va/wiki/index.php?%A5%B7%A5%B9%A5%C6%A5%E0%A5%A8%A5%EA%A5%A21
バージョンアップボード有効時は、ROMエリア1のバンクを0Fhに設定しているらしく(ボードなしならバンク00h)、152のbit6を0にしてしまうと、バンクが0Bhに切り替わってしまう。割り込み許可状態でこれをやってしまったものだから、ハングアップ、ということだろう。
機種判定してバンクの切り替え方を機種に合せるように修正。
2007年03月04日
CPU 7
> 止まっているのは
> test ds:[bp+30],01
> 一般的な命令。なぜ?
間違い。止まっているのは別の場所。
Debug Utilityの表示更新は表示1周期につき1回。
TSPのVSYNC期間終了のタイミング。
これは、24KHz表示だとVSYNC割り込みから約4000クロック
後のタイミングで、
VSYNC割り込み処理が長くて、いつも実行内容が同じだと、
Debug Utilityの表示更新タイミングのときに実行している
アドレスが、いつも同じ場所(VSYNC割り込み処理中)になる、
ということだと思われる。
Debug Utilityの表示更新をVSYNC割り込み直前に変更。
止まっていたのはtest1 ea16,cl のところ。実装。
ついでもtest1 ea8,clも実装。
test1実行後のACフラグは0になると本に書いてあるので
信じて、実装済みのtest1 ea8/ea16,imm も含めて修正。
後で他の本みたらUndefinedだったけれど・・・
まあいいか。
メニューも無事動作した。
> test ds:[bp+30],01
> 一般的な命令。なぜ?
間違い。止まっているのは別の場所。
Debug Utilityの表示更新は表示1周期につき1回。
TSPのVSYNC期間終了のタイミング。
これは、24KHz表示だとVSYNC割り込みから約4000クロック
後のタイミングで、
VSYNC割り込み処理が長くて、いつも実行内容が同じだと、
Debug Utilityの表示更新タイミングのときに実行している
アドレスが、いつも同じ場所(VSYNC割り込み処理中)になる、
ということだと思われる。
Debug Utilityの表示更新をVSYNC割り込み直前に変更。
止まっていたのはtest1 ea16,cl のところ。実装。
ついでもtest1 ea8,clも実装。
test1実行後のACフラグは0になると本に書いてあるので
信じて、実装済みのtest1 ea8/ea16,imm も含めて修正。
後で他の本みたらUndefinedだったけれど・・・
まあいいか。
メニューも無事動作した。

