貴方はAccseceCounter番目の訪問者です。
(自2007年 7月)

NEC PC-9801のお部屋

20世紀もあと数日で過ぎ去ろうとしていた頃のことである。。。
ゴミ収集所から、PC-9801DXという化石的機械を拾ってきた。
この機械はCPU80286を搭載した機械で、1990年頃に発売されていた製品のようである
家に持ち帰るなり筐体の蓋を開けてみたら、CPUのソケットにはABM社製486GT-Rとかいう下駄を履かせてあった。さらに電源を投入してみたらなんとメモリカウントは10MB也!当時としてはかなり贅沢な仕様となっている。
しかし、なにせヌードマシーンなので、ROM-BASICしか動かないのであった。

MS-DOSをインストールしてみる。

とりあえず、家にあるハードディスクを繋げてMS-DOSをインストールしてみることにした。
たまたまあったNEC版MS-DOS Ver6.2 をインストールしようとしたけど、インストーラが「CPUが286なのでインストール出来ません」などとぬかしてインストール出来ないじゃん。

しかたがないから、EXPANDコマンドでFORMATコマンドなどハードディスクを初期化するために必要なコマンドを、フロッピーディスクに解凍することにした。

ドライブ1にマスターディスク、ドライブ2にフォーマットしてあるフロッピーディスクを挿入してあるとすると・・・
EXPAND A:\FORMAT.EX_ B:\FORMAT.EXE ディスク初期化コマンド
EXPAND A:\HDUTL.EX_ B:\HDUTL.EXE ディスク初期化コマンドから呼び出されるコマンド
EXPAND A:\HDFORMAT.EX_ B:\HDFORMAT.EXE ディスク初期化コマンドから呼び出されるコマンド
EXPAND A:\SYS.CO_ B:\SYS.COM システム転送コマンド
EXPAND A:\SEDIT.EX_ B:\SEDIT.EXE スクリーンエディタ
っと、いったぐあいに使いたいコマンドを解凍していく。

後から知ったのだが、VectorからNISE386というのを拾ってきて使うと、MS-DOS Ver6.2標準のインストーラが動いてくれるようになるじゃん。

MS-DOS Ver6.2付属のメモリマネージャが動かないじゃん

MS-DOS Ver6.2 のフロッピーディスクを起動しているときに気がついたのだが、CONFIG.SYSに記述してあるHIMEM.SYSEMM386.EXEがエラーメッセージを吐き出して常駐してくれない。これではせっかくの10メガバイトのメモリが有効に使え無いじゃん。

フリーソフトのメモリマネージャが動いてくれたじゃん

検索エンジンLYCOS JAPANのオンラインソフトウェアでXMSをキーワードにして検索したら、VEM486というフリーソフトのメモリマネージャを発見。ベクタに登録されていることが判明する。
さっそくダウンロードして試しに使ってみると、VEM486は動いてくれた。ラッキ!
気が利くことに、下駄に付いているCX486SLCのキャッシュもイネーブルしてくれる(オプションを設定することによる)じゃん。

VEM486がうごきだしたらMS-DOS付属のDPMI.EXEも使えるようになったみたいじゃん。
これで、DOS版のMuleやDJ版GCCなどの強力なツールが動く見込みが出てきた。
う〜ん。よかったじゃん(^-^)v

とりあえず CONFIG.SYSは・・・

FILES=30
BUFFERS=16
SHELL=\COMMAND.COM /E:4096 /P

DEVICE=A:\SYS\VEM486.EXE /U /C+ /IB
DEVICEHIGH=A:\SYS\VEMEMM.SYS
DEVICEHIGH=A:\DOS\DPMI.EXE
DEVICEHIGH=A:\DOS\RSDRV.SYS
DEVICEHIGH=A:\DOS\SETVER.EXE

DEVICEHIGH=A:\DOS\KKCFUNC.SYS
DEVICEHIGH=A:\DOS\NECAIK1.DRV /C=9 /K /W /P=4
DEVICEHIGH=A:\DOS\NECAIK2.DRV A:\NECAI.SYS

LASTDRIVE=Z
BREAK=OFF
DOS=UMB,HIGH

ということにして、以下はMEM /Dの出力だよ〜ん。


コンベンショナルメモリの詳細:

  セグメント                 合計        名前         種類
  -------          ----------------  -----------  --------
   00000              1,039    (1K)               割り込みベクタ
   00040                527    (1K)               ROM コミュニケーション エリア
   00060             15,712   (15K)  IO           システムデータ
                                        CON       システムデバイスドライバ
                                        PRN       システムデバイスドライバ
                                        AUX       システムデバイスドライバ
                                        CLOCK     システムデバイスドライバ
                                        A: - C:   システムデバイスドライバ
   00436              5,312    (5K)  MSDOS        システムデータ
   00582             32,368   (32K)  IO           システムデータ
                      4,192    (4K)     $$DPMI    デバイスドライバ=DPMI    
                      7,040    (7K)     MS$KANJI  デバイスドライバ=NECAIK1 
                        272    (0K)     $AID#NEC  デバイスドライバ=NECAIK2 
                      1,488    (1K)               FILES=30
                        256    (0K)               FCBS=4
                     16,704   (16K)               BUFFERS=16
                      2,288    (2K)               LASTDRIVE=Z
   00D69              2,944    (3K)  COMMAND      プログラム
   00E21                 80    (0K)  MSDOS        -- 空き --
   00E26              4,112    (4K)  COMMAND      環境
   00F27                416    (0K)  MEM          環境
   00F41             88,896   (87K)  MEM          プログラム
   024F5            503,968  (492K)  MSDOS        -- 空き --

アッパーメモリの詳細:

  セグメント    領域        合計         名前         種類
  -------  ------  ----------------  -----------  --------
   0A501       1        416    (0K)  MSDOS        -- 空き --
   0A51B       1     11,824   (12K)  MSDOS        -- 空き --

   0D001       2      6,880    (7K)  IO           システムデータ
                      2,416    (2K)     AUX       デバイスドライバ=RSDRV   
                        224    (0K)     SETVERXX  デバイスドライバ=SETVER  
                      4,176    (4K)     KKCFUNC$  デバイスドライバ=KKCFUNC 
   0D1AF       2     42,224   (41K)  MSDOS        -- 空き --

   0DE01       3      4,112    (4K)  dpmi         プログラム
   0DF02       3      4,032    (4K)  MSDOS        -- 空き --

   0E801       4        144    (0K)  IO           システムデータ
                        112    (0K)     EMMXXXX0  デバイスドライバ=VEMEMM  
   0E80A       4      6,336    (6K)  DOSKEY       プログラム
   0E996       4     42,656   (42K)  MSDOS        -- 空き --

メモリの概略:

  メモリの種類         合計    =   使用中   +    空き
  ----------------  ----------   ----------   ----------
  コンベンショナル            655,344       62,400      592,944
  アッパー メモリ            118,688       17,536      101,152
  予約済み                   0            0            0
  XMS メモリ           10,367,072      651,360    9,715,712
  ----------------  ----------   ----------   ----------
  全メモリ             11,141,104      731,296   10,409,808

  全 1MB 以下メモリ       774,032       79,936      694,096


  ハンドル       EMS 名       サイズ
  -------     --------     ------  
        0                  000000
        1     XMS+VCPI     048000
        2                  010000
        3                  010000
        4     FD_HIST$     004000

  全 EMS メモリ                          10,158,080  (9,920K)
  空き EMS メモリ                         9,715,712  (9,488K)
  最大実行可能プログラムサイズ                592,848    (579K)
  最大空きアッパーメモリブロック                   42,656     (42K)
  MS-DOS はハイメモリ領域に常駐しています.

  XMS Version  3.00; ドライバ Version  2.7A
  EMS Version  4.00

このメモリマネージャは、メモリマネージャの本体がHIMEMに常駐するので、コンベンショナルメモリの消費が少ないのが特長。

GO32-V2も走る。DJGCCもいちようOKのようだ

Melco社製メモリマネージャを使う

インターネット・ニュース・グループで聞いたら「Melco製のメモリマネージャを使ってみたらいいかもしれない」(ほそずみ@にふちぃ さん談)とのこと。

もうすでにPC-9801DX関連の情報はMelcoのWebにはないようで、検索に引っかからないじゃん。
しょうがないから、ほそずみ@にふちぃ さんにメールでHelpっと。お返事は…
ハイパーメモリCPUドライバ(PC-98用)(Windows3.1/95対応)のドライバ(対象製品:HDA-20Q, EUA-T/TP, EUB-Q/H, EUD-Q/H, EUF-H, EUZ-Q )を試してください。
とのことなので、ダウンロードしてみる。

CONFIG.SYSをこんなかんじにして…

FILES=30
BUFFERS=16
SHELL=\COMMAND.COM /E:4096 /P

DEVICE=A:\SYS\MEL\MELEMM.386 /CX /T A:\DOS\EXTDSWAP.SYS /HM /XMS 4096 /M D0,D4,D8,DC,E8,EC,F0,F8

DEVICEHIGH=A:\DOS\DPMI.EXE
DEVICEHIGH=A:\DOS\RSDRV.SYS
DEVICEHIGH=A:\DOS\SETVER.EXE

DEVICEHIGH=A:\DOS\KKCFUNC.SYS
DEVICEHIGH=A:\DOS\NECAIK1.DRV /C=9 /K /W /P=4
DEVICEHIGH=A:\DOS\NECAIK2.DRV A:\NECAI.SYS

LASTDRIVE=Z
BREAK=OFF
DOS=UMB,HIGH

というかんじにしてみる。DEVICEHIGHLOADHIGHのためにメモリを供給する場合オプションスイッチ/Mに手動でアドレスのセグメントを指定しなくてはならないのがちょっぴり面倒。ROMとアドレスが重なってしまうと、起動できなかったりフリーズする。

でもって、MEM /Dの結果はつぎのように。


コンベンショナルメモリの詳細:

  セグメント                 合計        名前         種類
  -------          ----------------  -----------  --------
   00000              1,039    (1K)               割り込みベクタ
   00040                527    (1K)               ROM コミュニケーション エリア
   00060             15,712   (15K)  IO           システムデータ
                                        CON       システムデバイスドライバ
                                        PRN       システムデバイスドライバ
                                        AUX       システムデバイスドライバ
                                        CLOCK     システムデバイスドライバ
                                        A: - C:   システムデバイスドライバ
   00436              5,312    (5K)  MSDOS        システムデータ
   00582             35,504   (35K)  IO           システムデータ
                      3,056    (3K)     EMMXXXX0  デバイスドライバ=MELEMM  
                      4,192    (4K)     $$DPMI    デバイスドライバ=DPMI    
                      7,104    (7K)     MS$KANJI  デバイスドライバ=NECAIK1 
                        272    (0K)     $AID#NEC  デバイスドライバ=NECAIK2 
                      1,488    (1K)               FILES=30
                        256    (0K)               FCBS=4
                     16,704   (16K)               BUFFERS=16
                      2,288    (2K)               LASTDRIVE=Z
   00E2D              2,944    (3K)  COMMAND      プログラム
   00EE5                 80    (0K)  MSDOS        -- 空き --
   00EEA              4,112    (4K)  COMMAND      環境
   00FEB                416    (0K)  MEM          環境
   01005             88,896   (87K)  MEM          プログラム
   025B9            500,832  (489K)  MSDOS        -- 空き --

アッパーメモリの詳細:

  セグメント    領域        合計         名前         種類
  -------  ------  ----------------  -----------  --------
   0D001       1      6,880    (7K)  IO           システムデータ
                      2,416    (2K)     AUX       デバイスドライバ=RSDRV   
                        224    (0K)     SETVERXX  デバイスドライバ=SETVER  
                      4,176    (4K)     KKCFUNC$  デバイスドライバ=KKCFUNC 
   0D1AF       1        416    (0K)  MSDOS        -- 空き --
   0D1C9       1     41,808   (41K)  MSDOS        -- 空き --

   0DE01       2      4,112    (4K)  dpmi         プログラム
   0DF02       2      4,032    (4K)  MSDOS        -- 空き --

   0E801       3      6,336    (6K)  DOSKEY       プログラム
   0E98D       3     42,768   (42K)  MSDOS        -- 空き --

   0F801       4     16,368   (16K)  MSDOS        -- 空き --

メモリの概略:

  メモリの種類         合計    =   使用中   +    空き
  ----------------  ----------   ----------   ----------
  コンベンショナル            655,344       65,536      589,808
  アッパー メモリ            122,768       17,376      105,392
  予約済み                   0            0            0
  XMS メモリ           10,362,992    6,168,688    4,194,304
  ----------------  ----------   ----------   ----------
  全メモリ             11,141,104    6,251,600    4,889,504

  全 1MB 以下メモリ       778,112       82,912      695,200


  ハンドル       EMS 名       サイズ
  -------     --------     ------  
        0                  000000
        1     EXTDSWAP     00C000
        2                  010000
        3                  010000
        4     FD_HIST$     004000

  全 EMS メモリ                           9,961,472  (9,728K)
  空き EMS メモリ                         9,601,024  (9,376K)
  最大実行可能プログラムサイズ                589,712    (576K)
  最大空きアッパーメモリブロック                   42,768     (42K)
  MS-DOS はハイメモリ領域に常駐しています.

  XMS Version  3.00; ドライバ Version  3.07
  EMS Version  4.00

メルコ製のメモリマネージャだとDOSSHELLのタスクスワップもつかえるようになる。
このタスクスワップは、GO32には供給されないので、私的には必要ないってか。

GO32-V2.EXEも走るじゃん。これでDJGCCなどの大規模アプリも動かせる見こみがあるかな

AT互換機のWINDOWS98がMS-DOSのフロッピーディスクIPL部を改竄

PC-9801は、まだ通信環境が準備できていないのでGW2000のAT互換機で、ダウンロードしたフリーソフトなどをフロッピーディスクにコピーしてスニーカーネットワークならぬ裸足ネットワークをしている状態なのである。

しかし、ここで困った事がおきた。PC-9801でフォーマットしたフロッピーディスクをAT互換機のWINDOWS98上でコピーすると、フロッピーディスクIPL部がWINDOWSによって改竄されてしまいPC-9801で其のフロッピーディスクから起動できなくなってしまう。
とほほ。


関連Webサイト


著作権 大槻昌弥 © 2001年
無断転載厳禁。

ご意見ご要望は連絡用フォームから送信するようにお願いします。
なお、iso2022-jpのプレーンテキストのみ送信できます。
また、Webサイトの内容に関するお問い合わせは、整理の都合で出来るだけURIを明記するようにお願いします。