GIGAMIX DM-SYSTEM2
DMシステム2のドライバについて
updated: Sep 17, 1998

  1. 概要
    1. ドライバとは
    2. ドライバに依存する機能
    3. 標準装備されているドライバ

  2. ドライバのインストール方法
    1. ユーティリティーディスク
    2. インストーラ
    3. 手動でインストール

  3. 各種ドライバの作り方
    1. ドライバの製作
    2. インストーラの製作
    3. ドライバの一般公開 (GIGAMIXスタッフ向け)
      1. ユーティリティーディスクに登録するファイルについて
      2. ファイル名について
      3. ドライバの動作条件について

  4. 補足
    1. なぜドライバ制を採用するのか

第1章 概要

1.1 ドライバとは

 MSX規格に対応した各種ハードウェアやソフトウェアをDMシステム2上で共通の動作を実現する為の、マシン語ルーチンです。

 多くのアイテムに対応するプログラムをシステム本体へすべて組み込むのではなく、プログラムが共通化できる部分はシステム本体へ配置し、個々の対応が必要な部分を「ドライバ」としてプログラムを分離することで、最小限の変更で多くのアイテムに対応することができます。

 個々のドライバのプログラムは違いますが、DMシステム2の機能的にはどれも同じような処理結果をするようドライバを製作しています。


1.2 ドライバに依存する機能

 DMシステム2はMSXアーキテクチャーの趣旨に同意し、多くの周辺機器に対応できるよう、可能な限りプログラムの共通化を進めました。そこで、以下のDMシステム2の機能については、ユーザーが対応機器を自由に変更できるようシステムを仕上げました。
  1. 漢字表示で、漢字フォントの獲得フォントドライバ
  2. PCMによる音声の発声PCMドライバ
  3. 1/60秒割り込みによる各種入力機器の入力判定デバイスドライバ
  4. 1/60秒割り込みによるBGMの演奏BGMドライバ
  5. 1/60秒割り込みによる効果音の発声 → SEドライバ

 ユーザーは個々のハード環境に合わせてドライバを組み込むことにより、DMシステム2対応のソフトを最適なマシン状態で楽しむことができます。ギガミックスは今後も責任を持って多くの周辺機器に対応し、ドライバを提供いたします。

 またクリエイターは独自のノウハウの基にDMシステム2対応の各種ドライバを自作することにより、それぞれのノウハウでDMシステム2を活用することができます。ドライバの仕様書を用意しておりますので、プログラム知識があってその気があるならぜひドライバ作りにもチャレンジしてみてください。


1.3 標準装備されているドライバ

 DMシステム2の出荷時は、以下のドライバが内蔵されています。

フォントドライバ 16×16: MSX標準 漢字ROM
12×12: MSX-View漢字ROMカートリッジ
デバイスドライバ パッド+マウス
PCMドライバ PSGPLAY
BGMドライバ MGSDRV (DMシステム2 カスタマイズ版)
SEドライバ GIGAMIX製 SEドライバ


第2章 ドライバのインストール方法

 この章では、用意された各種ドライバを実際にDMシステム2のプログラム上で利用できるまでの手順を紹介します。

2.1 ユーティリティーディスクを利用する

 DMシステム2のドライバを変更したい場合、「ユーティリティーディスク」のディスク1に梱包されているセットアップツールが便利です。

 セットアップツールは変更したいドライバをメニュー形式で簡単に登録でき、その設定でシステムを起動できます。システムを起動してからは他のソフトを実行したり、プログラミングを開始することができます。

 詳しくはユーティリティーディスクについての説明をご覧ください。


2.2 インストーラ

 DMシステム2を利用したソフトを構築すると、プログラム上でドライバのインストール作業が必要な場面があるかもしれません。

 ドライバのファイル名と同名の“.BIN”ファイルが存在する場合、そのドライバは“インストーラ”を実行してインストールを行います。インストーラはドライバがそのマシン環境で正常に動作できるかをチェックし、ドライバをシステムへ転送、初期化を行うマシン語プログラムです。

 インストーラを実行するには、BASIC上で以下の命令を実行するだけです。

BLOAD"(ドライバ名).BIN",R [return]
 ただしあらかじめ、&HC000以降の領域を空けておく必要があります。
例) CLEAR 300,&HC000
 インストール作業が成功すると、Okが表示されます。その後は自由にプログラミングできます。しかし、なんらかの不都合によりインストール作業が失敗すると、Device I/O Errorが出力されます。

※ ドライバは通常、頻繁に差し替えたりしないため、各ソフトの初期設定プログラム(autoexec.ds2)でインストールされるべきと考えています。


2.3 手動でインストール

 ドライバのファイル名と同名の“.BIN”ファイルが存在しない場合、そのドライバは手動でインストールする必要があります。

 インストーラを実行するには、BASIC上で以下のように入力します。

_LOAD ("<ドライバ名>").<転送先アドレス>) [return]
 <転送先アドレス>は、ドライバの形式によって変わります。

BGMドライバ0400h〜
SEドライバ2800h〜
PCMドライバ2C00h〜
フォントドライバ16×16: 7400h〜
12×12: 7600h〜
デバイスドライバ7800h〜

 インストーラの存在するドライバを強引に手動でインストールすると、ほとんどの場合、マシンの暴走につながります。インストーラが用意されている場合は、必ずインストーラを介してインストール作業を行ってください。


第3章 各種ドライバの作り方

 DMシステム2の機能の多くは「コールエントリー」と呼ばれるドライバ内のルーチン群に依存しています。コールエントリーの仕様に基づて、ユーザーが新たな周辺機器やシステムに対応するルーチンを作ることで、よりユーザーの目的に合わせたDMシステム2を構築することが可能です。

 この章では、DMシステム2で動作可能なドライバをユーザー自身が開発・利用するための手順を紹介します。


3.1 ドライバの製作

 ドライバは、主に3部で構成されています。
  1. ヘッダ (48バイト)
  2. コールエントリー (3バイト×エントリー数)
  3. 本体
 ヘッダは48バイトで構成されており、以下の用途で用いられます。ヘッダの次には「コールエントリーへのコール先」となる3バイトの羅列が続きます。

オフセットバイト数用途
+ 040ドライバ名称 (漢字可:空白は20hで埋める)
+40 1EOFコード (1Ah)
+41 1ドライバ種別番号
+42 1ドライバ依存フラグ
+43 5未使用
+48 3エントリールーチン1 (JP xxxxh)
+51 3エントリールーチン2 (JP xxxxh)
   :

 ドライバの先頭アドレス、実サイズ、及びコールエントリー数はドライバの形式により変わりますので、先頭からのオフセットに注意してください。また、実行結果は各種ドライバの仕様に従ってください。

※SEドライバについては基本的にドライバの差し替えを考えていないので、上記の仕様と異なります。

more!


3.2 インストーラの製作

 開発したドライバを一般公開したいのでしたら、ぜひインストーラもご用意ください。インストーラは以下の仕様を準拠したものでお願いします。  次項「ドライバの一般公開」も、ぜひお読みください。

3.3 ドライバの一般公開 (GIGAMIXスタッフ向け)

 「DMシステム2 ユーティリティーディスク」の公開へ向けて、収録ファイルを編集しています。その際に浮かび上がった問題について報告し、ドライバの公開についての仕様を固めることにしました。

 以下3点、よろしくお願いします。m(__)m


3.3.1 ユーティリティーディスクに登録するファイルについて

 DMシステム2のユーティリティーディスクを作っていて気がついたんですが、ドライバをまとめて収録したディスクがヤバいです。

 現状では1つのドライバに対して

  1. ドライバ本体 (*.DRV)
  2. ドライバのソースリスト (*.MAC, *.ASM)
  3. ドライバの説明書 (*.DOC)
  4. インストーラ本体 (*.BIN)
  5. インストーラの説明書 (*.DOC)
 の5ファイルが存在しています。開発用バッチファイルなども合わせれば、すぐに上限112ファイルに届いてしまいます。

 仕方なくソースリストを\SOURCEへ待避させても、ファイル数がもう80を越えていますので、新規ドライバを追加したりするとファイル数が底を突くのも時間の問題です。

 そこで、ファイル数を減らすべく、このような方法で問題を解決しようと思います。

  1. ドライバの説明書とインストーラの説明書を合成して1ファイルにする
  2. MAKEFILE、バッチファイル、ソースリストなど、ドライバのインストールには不要だがドライバの開発に必要なファイルは、アーカイブにまとめて保存しておく
 それにより、
  1. ドライバ (*.DRV)
  2. インストーラ (*.BIN)
  3. 説明書 (*.DOC)
  4. ドライバの開発用アーカイブ (*.LZH → \SOURCEへ待避)
…と、4ファイル(実質3ファイル)に減らせば、ファイル数上限の問題は当分先送りにできると思います。

 というわけで、今後ドライバの配布でアーカイブを作成するときには、上記4ファイルでアーカイブをまとめていただきたく思います。


3.3.2 ファイル名について

 ドライバのファイル名は、ドライバの形式(2〜3文字)と対応機器の略称とをハイフン("-")で結び、拡張子".DRV"を付けたものにします。

形式先頭
BGMドライバBGM-
SEドライバSE-
PCMドライバPCM-
フォントドライバFNT-
デバイスドライバDEV-

 インストーラのファイル名は、便宜上、ドライバのファイル名8文字をそのまま継承し、拡張子を".BIN"にすることにします。

3.3.3 ドライバの動作条件について

 周辺機器に対するスロット情報が必要なドライバに対して(つまりインストーラによる初期化が必要なドライバですが)、ドライバ単体(.DRV)をそのままメモリへ転送して使う際、できる限り「周辺機器がスロット1で接続されている」ことを前提にプログラミングしてください。

 本当はイレギュラーな仕様ですけど、とりあえずスロット1で動く状態を作っておきたいです。


第4章 補足

4.1 なぜドライバ制を採用するのか

 一般的に、一つのプログラムで数多くのハードやソフトへ対応するのは難しいです。対応したいそれぞれのアイテムにはそれぞれの仕様が存在し、その仕様は他のアイテムには適用できない(ことが多い)からです。

 仕様が違うので、それぞれのアイテムに合わせてプログラムを少しずつ(あるいは大幅に)変更しなければならない部分が必ず存在します。対応するアイテムが多ければ多いほど、より多くの変更箇所を用意しなければなりません。それらをまとめてゆけば、当然、プログラムのサイズも肥大化してゆきます。

 御存じの通り、MSXにはRAMが64KBしかありませんし、BASICではその半分の32KB以下でやりくりしなければなりません。いくら裏RAMが32KBあるからと言って、個々のアイテムに対応するルーチンをひたすらまとめてゆけば、そのぶんシステムに割り当てられるメモリが減ってしまい、これでは本末転倒です。

 そこで、システム内部の処理をできるだけ共通化し、個々のアイテムに対応する部分だけを差し替え・変更するようにすれば、プログラムもスッキリしますし、メモリの消費量を最小限に抑えることもできるわけです。

[Back]
Copyright (c) 1998 GIGAMIX, All rights reserved.