GIGAMIX DM-SYSTEM2
フォントトライバ
updated: Sep 20, 1998

  1. 概要
    1. フォントドライバとは

  2. 各種ドライバの紹介
    1. 利用可能なドライバ
      1. MSX標準 漢字ROM (16×16)
      2. ANKフォントだけのドライバ (16×16ドット)
      3. NVマガジン VRAMフォント (16×16ドット)
      4. へきるふぉんと (16×16ドット)
      5. MSX-View漢字ROMカートリッジ (12×12ドット)
      6. 松下仕様12ドット漢字 (12×12ドット)
      7. HALNOTE (12×12ドット)
      8. ねこいらずフォント (12×12ドット)
    2. 現在開発中のフォントドライバ
    3. その他、対応が予定されているもの

  3. ドライバの利用方法

  4. フォントドライバの作り方
    1. ドライバのメモリマップ
    2. ドライバのヘッダ部

  5. 漢字表示とマッパーRAM
    1. フォントをマッパRAMへ転送
    2. フォントドライバをインストール
    3. インフォメーションエリアの修正

第1章 概要

1.1 フォントドライバとは

 DMシステム2の漢字表示に必要な漢字フォントデータを各種周辺機器から取得する専用のルーチンです。MSX標準の漢字ROMはもちろんのこと、漢字フォントとして使えそうな多くの周辺機器やシステムに対応します。

 DMシステム2では16×16、12×12の計2種類のフォントドライバを登録できます。漢字ROMが用意できないMSX2ユーザーの方々は、フォントドライバを交換することで、漢字ROMを搭載されたマシンとほぼ同じように漢字表示が可能になります。


第2章 各種ドライバの紹介

 この章ではDMシステム2で対応するドライバ及び、今後対応が予定されているドライバを紹介します。

 下線の引いてあるドライバ名をクリックすると.LZH形式のファイルを転送します。


2.1 利用可能なドライバ

2.1.1 MSX標準 漢字ROM (16×16)

 MSXの漢字ROMを利用する標準的なドライバです。MSX2+とMSX turboR、一部のMSX2など、現存するMSXマシンのほとんどに漢字ROMが搭載されていますので、通常はこのドライバだけで支障は無いはずです。

 このドライバで半角文字とJIS第1水準、第2水準の全角文字が表示できます。

※ このドライバはDMシステム2の出荷時に内蔵されています。

(Panasonic FS-A1STでの使用例)
Archive
FNT-KROM.LZH (2KB)


2.1.2 ANKフォントだけのドライバ (16×16ドット)

 MSXのANK(半角)フォントを利用して、全角文字をできるだけ表示させようとします。とは言え、MSXで用意されているキャラクタに無い文字はすべてダイヤマークになってしまいます。

 このドライバで半角文字と、英数字、GRAPHキーで出せるような(月、火、時、分…)一部の記号と漢字が表示できます。

 表示される文書が歯抜けになるとは言え、漢字ROMが無くてもそれなりに文書が読める(!?)ところがこのドライバの長所でしょう。

Archive
FNT-ANK.LZH (3KB)


2.1.3 NVマガジン VRAMフォント (16×16ドット) updated!

 草の根ソフトハウス・Syntax製の“NVマガジン”で採用されたオリジナルの漢字フォントを利用するドライバです。漢字フォントファイルはFONTNV.KNJで、VRAMの裏ページ(10000h)へ転送しておきます。

 もともと8×16ドットの縦長なフォントですが、横サイズを2倍角して全角文字を形成しています。よって横ドットが粗く表示されます。(全角文字の表示サイズを8×16ドットに指定すれば本来の文字が表示できます)

 このドライバで半角文字とJIS第1水準の全角文字が表示できます。

※ 一部表示できない文字があります。調査中です。

last update: Sep 18, 1998
Archive
FNT-NV.LZH (5KB)


2.1.4 へきるふぉんと (16×16ドット)

今大人気の声優、椎名へきる嬢の直筆ひらがな(!?)を某マニアがフォントファイル化、それをDMシステム2で利用できるようにしたドライバです。このドライバはフォントファイルをマッパーRAM、及びVRAMのどちらかへ配置して利用します。へきるファンの方はぜひどうぞ。

 このドライバで半角文字とJIS第1水準、第2水準の全角文字が表示できます。ひらがな以外の文字は、MSX標準の漢字ROMを利用します。

※ このドライバはマッパRAM管理の仕様が決定する前に製作されたもので、仕様に準拠していません。

last update: May 20, 1996
Archive
FNT-HEKI.LZH (5KB)


2.1.5 MSX-View漢字ROMカートリッジ (12×12ドット) updated!

 MSX turboR専用のGUI、MSX-Viewに付属されたオリジナルの漢字ROMカートリッジを利用するドライバです。また、同等のROMが内蔵されているPanasonicFS-A1GTでも利用できます。

 MSX-ViewはMSX turboR専用のソフトですが、ROMカートリッジ自体はMSX2/2+でも利用できます。そこで、A to C@東海大OBさんの著作権フリーな漢字フォント“要町 as MSX-View”を似非RAMディスクへ搭載することにより、MSX-Viewと互換性のあるカートリッジ自作することができ、DMシステム2で漢字表示が可能です。

 このドライバで半角文字とJIS第1水準、第2水準の全角文字が表示できます。しかしFS-A1GTではフォント不足の為、JIS第2水準が表示できません。

※ このドライバはDMシステム2の出荷時に内蔵されています。
※ MSX-Viewカートリッジは、MSX標準の漢字ROMとして代用することはできません。

(MSX-View漢字ROMカートリッジでの使用例)
last update: Sep 18, 1998
Archive
FNT-VIEW.LZH (5KB)


(“要町 as MSX-View”での使用例)


2.1.6 松下仕様12ドット漢字 (12×12ドット)

 Panasonicの通信モデムカートリッジ、FS-CM1に内蔵されたオリジナルの漢字ROMをDMシステム2で利用するドライバです。また、同等のROMが搭載された“ワーコン”FS-4600Fと、FS-CM1の機能を内蔵させたFS-A1FMでも利用できます。

 このドライバで半角文字とJIS第1水準の全角文字が表示できます。

 ちなみにこの漢字ROMが搭載されていると、漢字BASIC(_KANJI1,_KANJI3)で文字がきれいに表示されます。
Archive
FNT-CM1.LZH (2KB)


2.1.7 HALNOTE (12×12ドット)

 HAL研究所より発売されたGUIソフト、HALNOTEのROMカートリッジに内蔵されているオリジナルの漢字ROMを利用して表示します。

 NALNOTEはMSX標準の漢字ROMも搭載しています。このドライバと併用すれば表示サイズに併せて使用フォントを最適化でき、いつでも読みやすい文字を表示できるようになります。

 このドライバで半角文字とJIS第1水準の全角文字が表示できます。
Archive
FNT-HAL.LZH (3KB)


2.1.8 ねこいらずフォント (12×12ドット)

 旧DMシステムの漢字表示で利用されていた“ねこいらず”フォントファイル(約64KB)を利用するドライバです。

 フォントファイルをどのRAMへ配置するかによって、利用するドライバが変わります。ドライバはVRAM版マッパーRAM版の2種類が用意されています。

 VRAM版はVRAMの裏ページ(10000h)へ配置しておきます。マッパーRAM版はフォントをマッパーRAMへインストールする必要があり、空きセグメントを4枚(64KB)使用します。

 マッパーRAM版は特に海外のMSX2/2+で日本語を表示させる用途に適しています。なぜなら、海外のMSX2/2+は128KB以上のRAMが標準的に搭載されたことに対し、日本のMSX2/2+のほとんどは64KBしか搭載されなかったことで、日本のMSX環境でソフトを構築すると、一般的に海外では日本語が表示できないうえ、最低64KB以上のRAMを余らせる結果に陥ります。そこで、余ったRAMの活用方法として日本語フォントの搭載が挙げられるわけです。

 このドライバで半角文字とJIS第1水準の全角文字が表示できます。

※ ねこいらずはKICHI氏のフリーウェアですが、改造・商利用の許可を得ています。

last update: Dec 18, 1996
VRAM版
FNT-NEKO.LZH (51KB)
マッパーRAM版
FNT-NEK2.LZH (51KB)


2.2 現在開発中のドライバ

 DMシステム2で今後対応したいと考えている周辺機器を紹介します。

2.2.1 かんたん手帳リフィルくん (12×12ドット)

 アスキーから発売されたもののメジャーになれなかった超実用ソフト、“かんたん手帳リフィルくん”に内蔵されたオリジナルの漢字ROMを利用するドライバです。

 ほぼ完成しており、近日公開です。どうぞお楽しみに。


2.2.2 16ドット漢字 (16×16ドット)

 MSX標準の漢字ROMと同じ、16×16ドットサイズの漢字フォント(半角文字とJIS第1水準で約96KB)をMSXのマッパーRAMへ常駐し、漢字を表示させるドライバです。

 マッパーRAMさえあれば漢字ROMが無くても漢字表示が可能になります。主に海外のMSX2/2+で日本語を表示させる為に利用しようと考えています。

 現在、A to C@東海大OBさんの著作権フリーな漢字ROMイメージが公開されており、フォント調達の問題は解決しましたが、ドライバの開発はまったく進んでおりません。

※ MSX標準の漢字ROMとして代用することはできません。


2.3 その他、対応が予定されているもの

 ハードが発掘され次第、順次開発して行く予定です。

第3章 ドライバの利用方法

 詳しくは、ドライバについて第2章 ドライバのインストール方法 をご覧ください。

第4章 フォントドライバの作り方

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

4.1 ドライバのメモリマップ

 フォントドライバは、計512バイトで、3部構成です。
  1. ヘッダ (48バイト)
  2. コールエントリー (3バイト×1エントリー)
  3. 本体 (461バイト)
 フォントドライバの先頭アドレスは、フォントの対応サイズにより変わります。

16×16ドット用 7400h〜75FFh
12×12ドット用 7600h〜77FFh


4.2 ドライバのヘッダ部・コールエントリー

 ヘッダは48バイトで構成されており、以下の用途で用いられます。ヘッダの次には「コールエントリーへのコール先」となる3バイトの羅列が続きます。

 フォントドライバは計1つのコールエントリーを構築します。

オフセットバイト数用途
+ 040ドライバ名称 (漢字可, 空白は20hで埋める)
+401EOFコード (1Ah)
+411ドライバ種別番号 (00h:フォントドライバ)
+421対応サイズ番号 (1:16x16 2:12x12 3:拡張)
+435未使用
+483コールエントリー1(FNTDRV)へのコール先 (JP xxxxh)

ex.)

	ORG	7400h	;16×16用

7400	DEFM	'ドライバ名称を漢字20文字に収めます。  '	;余白は20hで
7428	DEFB	1Ah	;EOF
7429	DEFB	00h	;フォントドライバの意
742A	DEFB	01h	;16×16フォントドライバの意
742B	DEFS	5	;未使用
7430	JP	FNTDRV	;フォントの獲得


	ORG	7600h	;12×12用

7600	DEFM	'ドライバ名称を漢字20文字に収めます。  '	;余白は20hで
7628	DEFB	1Ah	;EOF
7629	DEFB	00h	;フォントドライバの意
762A	DEFB	02h	;12×12フォントドライバの意
762B	DEFS	5	;未使用
7630	JP	FNTDRV	;フォントの獲得

4.3 ドライバの本体

 ドライバは、DMシステム2から直接アクセスされるマシン語ルーチン群“コールエントリー”を中継して機能します。

 コールエントリーの本体はヘッダ部と合計して512バイト以内に収める必要があります。

 本体はドライバ内のどこにでも配置して構いませんが、DMシステム2はドライバのヘッダ部に記載された“コールエントリーへのコール先”を利用するので、このアドレスに対応したメモリへルーチンを配置するようにしてください。


4.3.1 コールエントリー1 FNTDRV (フォントの獲得)

 文字コードに対応するフォントを1文字読み出します。ドライバでは、指定されたフォントに対するフォントデータを構築し、各種パラメータをシステム内へ転送させます。

[in] B0: 半角
1: 全角第一水準
2: 全角第二水準
DE シフトJISコード (半角の場合 D←0 E←アスキーコード)

[out] HL フォント格納アドレス
Dフォントサイズ:x (半角サイズで)
Eフォントサイズ:y
Bオフセット (ビット数)
Cフォント折り返し幅 (ビット数)
ex.1) 18バイトのサイズ, 12×12の全角フォント
D←12, E←12, B←0, C←12

ex.2) 18バイトのサイズ, 6×12の半角フォント(左詰め)
D←12, E←6, B←0, C←12

ex.3) 18バイトのサイズ, 6×12の半角フォント(右詰め)
D←12, E←6, B←6, C←12


4.4 インストーラの製作

 開発したドライバを一般公開したいのでしたら、ぜひインストーラもご用意ください。インストーラの制作方法については、ドライバについてインストーラの製作 をご覧ください。

 フォントドライバのインストールは、インストール後に インフォメーションエリア の以下のワークを設定してください。

----- 16×16ドットの場合 -----
FNTSEL (0300h+174)← 1 (16ドット固定) ※12ドットも利用可能なら 0
FNTSIZ (0300h+175)← 8 (半角サイズ:x)
FNTSIZ+1 (0300h+176)← 16 (半角サイズ:y)
FNTSIZ+2 (0300h+177)← 16 (JIS第1水準, 全角サイズ:x)
FNTSIZ+3 (0300h+178)← 16 (JIS第1水準, 全角サイズ:y)
FNTSIZ+4 (0300h+179)← 16 (JIS第2水準, 全角サイズ:x) ※2水が無い場合は 0
FNTSIZ+5 (0300h+180)← 16 (JIS第2水準, 全角サイズ:y) ※2水が無い場合は 0

----- 12×12ドットの場合 -----
FNTSEL (0300h+174)← 2 (12ドット固定) ※16ドットも利用可能なら 0
FNTSIZ+6 (0300h+181)← 6 (半角サイズ:x)
FNTSIZ+7 (0300h+182)← 12 (半角サイズ:y)
FNTSIZ+8 (0300h+183)← 12 (JIS第1水準, 全角サイズ:x)
FNTSIZ+9 (0300h+184)← 12 (JIS第1水準, 全角サイズ:y)
FNTSIZ+10 (0300h+185) ← 12 (JIS第2水準, 全角サイズ:x) ※2水が無い場合は 0
FNTSIZ+11 (0300h+186)← 12 (JIS第2水準, 全角サイズ:y) ※2水が無い場合は 0

	拡張フォントドライバ
	+12,13	ANKフォントサイズ (0,0のとき非対応)
	+14,15	第一水準フォントサイズ (0,0のとき非対応)
	+16,17	第二水準フォントサイズ (0,0のとき非対応)

第5章 漢字表示とマッパーRAM

 128KB以上のマッパRAMを利用して漢字フォントをフォントドライバから利用するには、フォントデータとフォントドライバをそれぞれ有効にしなければなりません。

 この章では、マッパーRAMを利用した漢字表示を実現する手順を紹介します。


5.1 フォントをマッパRAMへ転送

 フォントインストーラ(FONTINST.OBJ)をロードして、C000hをコールします。  Aの戻り値は以下の通りになっています。  フォントの転送が正常に行われた場合は、以下のワークエリアに情報を残します。  マッパーRAMへ転送したフォントが有効で無い場合は、フォントドライバのインストールを中止してください。

※ フォントが有効か否かはフォントインストーラを実行してみなければ分かりません。フォントをインストールするRAMが明らかに無い場合でも、一度インストーラを実行し、その際出力されるエラーを関知してから処理してください。

※ フォントをインストールするマッパRAMは連続した空きセグメントでないとインストールできません。複数のスロットにまたがることもできません。


5.2 フォントドライバをインストール

 マッパーRAMへ対応したフォントドライバをインストールします。

 詳しくは、ドライバについて第2章 ドライバのインストール方法 をご覧ください。


5.3 インフォメーションエリアの修正

 インフォメーションエリアを書き換えます。書き換える内容は以下の通りです。

----- 16×16ドットの場合 -----
FNTSL0 (4300h+109)← ALCSLT (C700h+19, マッパのスロット)
FNTBK0 (4300h+110)← ALSBNK (C700h+20, 先頭セグメント)
FNTSZ0 (4300h+111)← BNKSIZ (C700h+21, セグメント数)
FNTSEL (4300h+174)← 1 (16ドット固定) ※12ドットも利用可能なら 0
FNTSIZ (4300h+175)← 8 (半角サイズ:x)
FNTSIZ+1 (4300h+176)← 16 (半角サイズ:y)
FNTSIZ+2 (4300h+177)← 16 (JIS第1水準, 全角サイズ:x)
FNTSIZ+3 (4300h+178)← 16 (JIS第1水準, 全角サイズ:y)
FNTSIZ+4 (4300h+179)← 16 (JIS第2水準, 全角サイズ:x) ※2水が無い場合は 0
FNTSIZ+5 (4300h+180)← 16 (JIS第2水準, 全角サイズ:y) ※2水が無い場合は 0

----- 12×12ドットの場合 -----
FNTSL1 (4300h+112)← ALCSLT (C700h+19, マッパのスロット)
FNTBK1 (4300h+113)← ALTBNK (C700h+20, 先頭セグメント)
FNTSZ1 (4300h+114)← BNKSIZ (C700h+21, セグメント数)
FNTSEL (4300h+174)← 2 (12ドット固定) ※16ドットも利用可能なら 0
FNTSIZ+6 (4300h+181)← 6 (半角サイズ:x)
FNTSIZ+7 (4300h+182)← 12 (半角サイズ:y)
FNTSIZ+8 (4300h+183)← 12 (JIS第1水準, 全角サイズ:x)
FNTSIZ+9 (4300h+184)← 12 (JIS第1水準, 全角サイズ:y)
FNTSIZ+10 (4300h+185) ← 12 (JIS第2水準, 全角サイズ:x) ※2水が無い場合は 0
FNTSIZ+11 (4300h+186)← 12 (JIS第2水準, 全角サイズ:y) ※2水が無い場合は 0
※変更した設定を以後引きずる場合は、上記の内容を 0300h+nへ同じように設定(コピー)してください。これを忘れると call syson を実行したとたん設定が初期化されてしまい、今までの設定が無効になってしまいます。
[Back]
Copyright (c) 1998 GIGAMIX, All rights reserved.