forked from nanshiki/DOSVAXJ3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Knowledge.txt
196 lines (169 loc) · 10.4 KB
/
Knowledge.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
DOSVAXJ3 技術情報
・日本語キーボード対応
日本語キーボードの場合、^ [ : が SDL_KEYDOWN の event.key.keysym.scancode で
90h, 91h, 92h として入ってきます。keyboardlayout=jp の場合に DOS/V と同じスキャ
ンコードになるよう変換し、jp.kl(jp.key) の定義で各文字に割り振っています。
変換、無変換等も DOS/V と同じスキャンコードになるようにしています。
・MS-IME
JP190523 で終了時のハングアップに対応しました。
JP190527 で MS-IME でキー入力が入りっぱなしになってしまう現象の対策を行いま
した。DirectInput のキーボード入力ハンドラ内で、最初にメッセージループを回して
から SDL のイベント発生処理を行うようにしています。また、KeyUp については IME
の状況を問わず SDL のイベントを発生させています。
Windows 8.1 や Windows 10 のバージョン 1709 以前の場合、DOSVAXJ3 上から IME
の状態取得(ImmGetOpenStatus)と状態変更(ImmSetOpenStatus) が正常に動きません。
そのため $IAS.SYS や MS-KANJI API のファンクションを使用した FEP の制御が正
常動作しません。
Windows 10 の場合、バージョン 1803 以降にアップデートすれば動作します。
Windows 8.1 の場合は、MS-IME 以外の ATOK や Google 日本語入力等の使用を推薦
します。
・IME 変換文字列表示位置
JP190510 以前は int 10h ah=02h のカーソル位置設定毎に SDL_SetIMPosition()
を呼び出していました。が、単なるコンソール出力でも一文字表示毎に呼び出される
事になってしまい、dir の表示がなめらかでなかったり、Linux では表示中に止まっ
たりしてしまう等の不具合がおきておりました。
対策として、タイマで BIOS ワークエリア 0040:0050 を参照し、値が変更になって
いて、さらに前回の変更から 100ms 以上経過している場合のみ SDL_SetIMPosition()
を呼び出すよう変更しています。
JW_CAD ではビデオモード 12h や 6ah 等を使用しており、日本語対応ビデオモード
でないために SDL_SetIMPosition() を呼び出していませんでしたが、これらのビデオ
モードでも、コードページが 932 で DBCS ベクタが日本語用コードページのままであ
れば呼び出すように JP210212 で修正しています。
・日本語関連
日本語ファイル名を使用可能としています。
Linux 版の場合、UTF-8 と Shift-JIS の相互変換を行っています。UTF-8 決め打ち
ですのでご注意ください。今時 EUC を使っている環境は流石にないと思いますが。
ファイル名の変換処理の抜けがあるかもしれませんのでご注意ください。
内蔵シェルのコマンドライン、DOS の一行入力についても日本語対応(全角文字を
BS で一文字削除可能等)しています。
・ESC シーケンス
DOSBox で対応している ESC シーケンス以外に、下記に対応しています。
ESC [>5h カーソル非表示 J-3100 対策
ESC [>5l カーソル表示 J-3100 対策
ESC [ ; p キー再割り当て JEMO 対策
JP200904 で ESC シーケンスは int 29h 内部で処理するように修正しています。
・コンソール出力
DOS の CON 出力は int 29h を呼び出し、さらに int 29h 内部から int 10h
ah=09h, ah=02h, ah=06h 等を呼び出して文字を表示します。これにより Vz のコン
ソール取り込みや他のディスプレイドライバの使用が可能となります。
・Vz の常駐
int 21h が Vz に乗っ取られていた場合、内蔵シェルのコマンドラインは使用せず
に DOS ファンクションの ah=0ah 一行入力 を呼び出しています。
・Vz の LFN 対応版
バックアップファイルの作成を ON にしている場合、ロングファイルネームのファ
イルを保存しようとすると、まず編集中のファイルを拡張子 BAK のショートファイル
ネームにリネームし、その後でショートファイルネームで保存する事になります。
拡張子 BAK にリネームした時点でロングファイルネームとショートファイルネーム
の紐付けが解消されてしまうので、その後の保存がショートファイルネームになって
しまいます。
・JW_CAD
文字入力時の FEP ON/OFF を自動で行いたい場合、fepcontrol を mskanji または
both に設定する必要があります。
・キー入力待ち
int 28h が常駐プログラムで乗っ取られている場合、int 16h ah=00h, ah=01h で
キー入力待ちとなっている際に int 28h を呼び出します。
・マウス
DOS/V 日本語モードの場合、マウスの座標の範囲は 0,0 - 639, 199 となるようで
す。そのため VGA での Y 座標とマウスの仮想の Y 座標とを相互変換する処理を入れ
ています。
V-Text 上でのマウス座標はどうなるか不明ですが、そもそも V-Text 上でマウスを
使用するプログラムは存在しないと思われます。
・デバイスドライバ
オリジナルの adddev (https://www.vector.co.jp/soft/dos/writing/se002001.html)
を使用する場合、ver set でバージョンを 6 以下に設定してください。
sava 氏版 adddev (http://hp.vector.co.jp/authors/VA003720/lpproj/dostools.htm)
の場合、DOSBOX 対応版でなくても動作します。
adddev で登録したキャラクタデバイスに対しては下記の DOS ファンクションが使
用できます。
int 21h
ah=3dh デバイスオープン
ah=3eh デバイスクローズ
ah=3fh デバイスからデータを入力
ah=40h デバイスにデータを出力
ax=4400h デバイスデータの取得
ax=4402h I/O Control データ取得
ax=4403h I/O Control データ送出
ax=4406h 入力ステータスの取得
ax=4407h 出力ステータスの取得
デバイス $IBMAFNT や $IBMADSP はオープンできますが、クローズ以外のファンク
ションは使用できません。MS-IME はこれらのデバイス名がオープンできれば日本語
モードと判定しているようです。
デバイス $IBMAIAS については DOS/V BIOS int 16h (キーボード) を、デバイス
MS$KANJI については MS-KANJI API を参照してください。
・J-3100 BIOS
int 10h (ディスプレイ)
ah=70h カレントデバイスの読み込み
ah=71h プラズマ/LCD アトリビュートの設定
上記は非対応です。
ax=8200h スクロールモードの設定
つねにノーマルモード(ソフトウェアスクロール)となります。
ax=8205h 漢字テキストドライバの確認
bl=01h カラー CRT ドライバあり を返します。
Windows 3.1 CGA/EGA キットの setup.exe 対策です。
int 14h (RS-232C)
ah=04h 割り込み使用
ah=05h EOI 設定
ah=06h 割り込み禁止
ah=80h 半二重通信設定
ah=81h 全二重通信設定
ah=82h ブレーク信号送信
ah=84h DTR 設定
ah=85h RTS 設定
ah=87h 割り込みステータス取得
ah=f0h タイムアウト時間設定
上記は非対応です。
int 16h (キーボード)
ah=f0h ビープ音出力
ah=f1h キーシフト設定
ah=f2h キークリック音設定
上記は非対応です。
int 17h (プリンタ)
ah=84h 1バイト出力
ah=85h 漢字変換設定
上記は非対応です。
プリンタ出力時の Shift JIS から JIS への変換は行いません。
int 60h (J-3100 システム)
ah=05h ユーザー空間情報取得
ax=0f02h 網掛けパターンの選択
上記は非対応です。
int 6fh (ATOK5)
ah=0fh 学習機能 ON
ah=10h 学習機能 OFF
ah=11h 漢字キー無効
ah=12h 漢字キー有効
上記は非対応です。
ah=01h~05 は全て IME ON、ah=0bh は IME OFF となります。
・DOS/V BIOS
int 10h (ディスプレイ)
ah=00h 画面モード設定
al=03h CGA テキスト互換モード
al=70h V-Text モード (vtext)
al=72h VGA グラフィックスモード
al=78h V-Text モード2 (vtext2) 設定用の値で、画面モード変更後 BIOS ワー
クエリア 0040:0049 は 70h となります。
コードページを932、DBCS ベクタを日本語用に設定後に上記の画面モードに設定
すると DOS/V 日本語モードになります。
al=71h 拡張 CGA テキストモード
al=73h 拡張 CGA テキストモード
上記 2 モードには非対応です。
ax=1311h 拡張 CGA テキストモードの文字列書込
ax=1321h 拡張 CGA テキストモードの文字列読込
上記は非対応です。
int 16h (キーボード)
im が true で fepcontrol が ias または both の場合
デバイス $IBMAIAS がオープンできるようになります。
ax=1300h dl の bit 7 or Bit0 ON で IME ON、bit 7 OFF で IME OFF
ax=1301h IME OFF で dl=00h、IME ON で dl=81h を返します。
ah=14h シフト情報を表示に設定しても FEP 用のラインは確保されません。
・MS-KANJI API
im が true で fepcontrol が mskanji または both の場合
デバイス MS$KANJI がオープンできるようになります。
ファンクション1 KKAsk
カナ漢字変換システム名取得
API サポートレベルは 1、カナ漢字変換システムの名前は IME となります。
ファンクション 5 KKMode
漢字入力モードの設定/参照
設定時の変換位置の指定は無視されます。
参照時の変換位置は常にカーソル位置となります。
KKOpen, KKClose, KKInOut には対応していません。
takapyu