「漢字モード切替コマンドを作る」の編集履歴(バックアップ)一覧はこちら
「漢字モード切替コマンドを作る」(2015/03/06 (金) 10:32:51) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
漢字モード
一部の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のソースをコンパイルしてから
リンカで結合してバイナリを作成する。
漢字モード毎にコマンドを作れば各モード用にスクリーンを切り替える事ができる。