WSN-A2F用Xサーバーをノーマルディスプレイで使う

第2版 1999-04-03 800x500モード追加
初版 1999-03-27

メルコのウィンドウアクセラレータボードであるWSN-A2F,WSN-A4F(*1)用のXサーバー(XF98_WSNA)をPC-9801用ノーマルディスプレイ(*2)で使用する方法をまとめました。

ソースとXF86Configを少し変更することで、解像度 640x400 と 640x480 、 800x500 を表示できます。WSN以外でもCL-GD54xxを使用するサーバーならできるかもしれません。なお、使用OSはFreeBSD(98) 2.2.8R-Rev01 と XFree86 3.3.3.1 です。

《注意》640x400ならほとんどのディスプレイで表示できますが、640x480と800x500はディスプレイ側の調整が必要です。あくまで自己責任で使用してください。

(*1) WSN-A2F, WSN-A4FはビデオチップにCirrus Logic社のCL-GD5434を搭載しているPC-98x1 Cバス用のボード。
(*2) ノーマルディスプレイは解像度 640x400 水平走査周波数 24.8kHz 垂直走査周波数 56.4Hz 固定のディスプレイ。

  1. XFree86のLinkKitを入手します。ファイル名は Xlkit.tgz Xlk98.tgz です。FreeBSDなら sysinstall を使ってインストールできますし、CD-ROMなどから直接とりだしてもかまいません。直接取り出したときは、/usr/X11R6に移動しアーカイブを展開して下さい。
    # tar xvfz Xlkit.tgz ; tar xvfz Xlk98.tgz
            
  2. ソースを変更します。ディレクトリ /usr/X11R6/lib/Server/drivers98/vga256/wsna にXF98_WSNA用のソースがありますのでここに移動します。
    ファイル名 cir_driver.c を修正します。 新たに3つのDOT CLOCKを追加しています。
    418行目 static cirrusClockRec cirrusClockTab[] = { の次の行に
    #ifdef PC98
    { 0x32, 0x23 }, /* 21.056 */
    { 0x2A, 0x1B }, /* 23.129 */
    { 0x29, 0x17 }, /* 26.683 */
    #endif
    を追加。
    
  3. XF98_WSNAを作り直すための準備。

    /usr/X11R6/lib/Serverに移動し、xf86site.defを編集します。

    #define X????Server YES を NO にします。
    #define XF98WSNAServer のみ YES にします。
    98サーバーはコメントアウトされているので注意。
  4. MAKEFILEを作りmakeします。
    # ./mkmf
    # make
    

    そのままインストール。/usr/X11R6/bin に XF98_WSNAがインストールされ、Xにシンボリックリンクが張られます。

    # make install
    
  5. XF86Config を変更します。たいていは/etc/か/usr/X11R6/lib/X11/ にあります。

    まず、"Monitor"セクションに以下のIdentifierを追加します。

    Section "Monitor"
        Identifier  "Single sync"
        VendorName  "Unknown"
        ModelName   "Unknown"
        Bandwidth   40
        HorizSync   24-70
        VertRefresh 50-100
    
        Mode "640x400a"
            DotClock        21.05
            HTimings        640 724 772 848
            VTimings        400 401 405 440
        EndMode
    
        Mode "640x480a"
            DotClock        21.05
            HTimings        640 702 748 825
            VTimings        480 481 485 504
        EndMode
    
        Mode "640x480b"
            DotClock        23.1
            HTimings        640 724 772 888
            VTimings        480 481 485 504
        EndMode
    
        Mode "640x480c"
            DotClock        25.2
            HTimings        640 760 824 980
            VTimings        480 481 485 504
        EndMode
    
        Mode "800x500a"
            DotClock        26.6
            HTimings        800 856 948 1024
            VTimings        500 501 505 513
        EndMode
    
        Mode "800x500b"
            DotClock        28.3
            HTimings        800 880 960 1090
            VTimings        500 501 505 513
        EndMode
    EndSection
    

    "Screen"セクションの"svga"ドライバを変更します。

    Section "Screen"
        Driver      "svga"
        Device      "WSNA2F"
        Monitor     "Single sync"  # Sigle Monitorに変更
        Subsection "Display"
            Depth       8
            Modes       "640x400a" "640x480a" "640x480b" "640x480c" "800x500a" "800x500b" # Modesを変更
            ViewPort    0 0
            Virtual     1024 768 # 狭いので仮想画面で1024x768にしている
        EndSubsection
    EndSection
    
  6. はたしてXは起動するか

    xinit を実行。うまくいけば640x400の画面がでるはず。ちょっとずれているときはxvidtuneで調整しましょう。
    次に CTRL + ALT + "+" で 640x480 に切り替えて表示。ディスプレイによっては同期があわない場合があるのでディスプレイ側を調整してみてください。800x500モードはドットが縦長になります。

    起動時 640x400 CTRL + ALT + "+" で↓方向
    CTRL + ALT + "-" で ↑方向
    に切り替わります。
      640x480 a
      640x480 b aより横幅が縮む
    640x480 c さらに縮む
      800x500 a 画面いっぱい
    800x500 b 縦長

    ※ ソースを修正せずに表示できるモードです。

参考文献

Alphine Family CL-GD543x/'4x Technical Reference Manual Fifth Edition
Cirrus Logic Publications


戻る