NEXTOR PR 06 02

From Z80 Machines Wiki
Jump to: navigation, search

6.2. NEXTOR.SYSのバージョン番号を変更する

MSX-DOSコマンドラインアプリケーションの中には、MSXDOS2.SYS(Nextorの場合はNEXTOR.SYS)のバージョン番号をチェックし、この値が特定の値(通常は2.20)よりも小さいと動作しないことが知られているものがあります。現在のNEXTOR.SYSのバージョン番号が2.0なので、これは問題です。

この問題の回避策として、バージョン2.0 beta 2以降、DOSVER関数呼び出しによって返されるNEXTOR.SYSバージョン番号はRAMに格納され、簡単に変更できます。この変更を簡単に行うことができるコマンドラインツール、NSYSVER.COMがあります(詳細については、Nextor 2.0ユーザマニュアルを参照してください)が、プログラム的に変更したい場合は、以下の手順に従ってください。

  1. MSX-DOSモード(ページ0がTPA RAMにマップされている)のときは、アドレス0001hに格納されている16ビット値を読み取ります。
  2. 得られた値に32hを加えます。
  3. 結果の値は16ビット数が格納されているアドレスです。これは、DOSVER機能呼び出しがレジスターDEに戻す番号、つまり報告されたNEXTOR.SYSバージョンです。

たとえば、NEXTOR.SYSのバージョンを2.31に変更するためのコードは次のようになります。

ld ix,(0001h)
ld bc,32h
add ix,bc
ld (ix),31h
ld (ix+1),2

もちろん、この変更は一時的なものであり、NEXTOR.SYSが再ロードされると有効になりません(つまり、NEXTOR.SYSのバージョン番号は元の値に戻ります)。これは、BASICプロンプトがCALL SYSTEMを介して入力および終了されるためです。またはコンピュータが再起動されたためです。

NEXTOR.SYSのロードされたバージョンが2.0 beta 2またはそれ以降である場合、これがすべて適用されます。