漢字モード切替コマンドを作る

漢字モード

一部の2と2+以降のハードウエアでは漢字ディスプレイモードが利用できる。
漢字ドライバと呼ばれる機能はDOS/Vにおける漢字表示機能と同じ。
漢字モードでは日本語マルチバイト文字対応のCPM互換DOSとなる。
漢字ドライバはDOS/Vにおける英語モードから日本語モードへの切替に相当する。
(DOSコマンドでchevやjp/us等に該当)
DOSファンクションコールも日本語対応のため、日本語に対応したCPM互換環境ともいえる。
漢字画面モードはグラフィクスモードに依存しており0-3までの4種類がある。

漢字ドライバはBASIC環境でCALL KANJI0命令実行後初期化される。
DOS2ではフロッピーブート領域に識別子が記録され起動時に初期化可能だが
BASIC以外で初期化方法はない。BASIC命令で初期化が必要。

DOSコマンドで漢字モードを切り替える場合は拡張BIOSを呼ぶが、初期化されていないと
画面モードは変わらない。
拡張BIOSの使い方はC言語からインターフェースのアセンブラコードを経由して呼び出す。

一般的な拡張BIOSコール手順は0xFFCAを呼ぶこと。この時Dレジスタにデバイス番号を指定する。
漢字ドライバではDレジスタを11デバイス番号、Eレジスタはファンクション機能
Aレジスタにスクリーンモードを置いてジャンプする。
この手順はアセンブラを前提としているためC言語関数として呼ぶ場合は
ラッパを作る必要がある。

例を示す。

kanjidisp.asm
;
	.area	_ASMCODE
;
_kanjidispdriver::
	ld	hl,#2
	add	hl,sp
;
	ld	a,(hl)		;kanji display mode -> [A]
	ld	d,#0x11		;extbios device number (KANJI DISPLAY DRIVER = 0x11)
	ld	e,#1		;extbios functon number (CHANGE KANJI DISPLAY)
;
	push	AF		;backup registerfile
	push	BC
	push	DE
	push	HL
	push	IX
	push	IY
;
	call 0xffca		;call extbios
;
	pop	IY
	pop	IX
	pop	HL
	pop	DE
	pop	BC
	pop	AF
;
	ret


kmode1.c
#include <stdio.h>

extern void kanjidispdriver(unsigned char mode);

void main(void){

	kanjidispdriver(1);

}


アセンブラのソースをアセンブルし、Cのソースをコンパイルしてから
リンカで結合してバイナリを作成する。
漢字モード毎にコマンドを作れば各モード用にスクリーンを切り替える事ができる。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2015年03月06日 10:32
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。