inu goya - 一覧 - kmswx [ 紹介 - その他 - 履歴 (kmswx32履歴と同頁) ]

kmswxのその他

v3.0 開発開始 2012年10月15日~11月11日(日)完成
2012年11月13日 v3.00.06 Vector登録完了(ネタとして遊んでみてください)
v3.1 開発開始 2013年8月6日~8月9日(金)完成
2013年8月11日 v3.01.00 Vector登録完了(8/20)
DOS版の需要はないと思いますが、忘れていたアセンブラを思い出しながら完成させるのが目的です。久しぶりにDOSのエディタやアセンブラを触ったらさっぱり忘れていました。セグメントの仕組みがプログラムを厄介にさせているようなきがした(DSを変更してファイルハンドルの値読み込みをミスった)。
kmswx v3のソースは230Kバイトにもなっていました(オールアセンブラで1万行超)。よく作ったな。
今回製作した v3.1のソースは確認したら1万2千行超でした(コメントが多いため増殖)。
(参考までにkmswx32 v3のソースは7000行超)
-------------------------------------------------------------
2012年11月5日 v3.00.06 開発状況 100% (公開終了)
2013年8月9日 v3.01.00 開発状況 100% (公開中)
DOS ver develop (DOS用ソフトの製作はsanuki laboratory , Win用はwnc developに分けてました)
(c)1995-1999,2012-2014 wnc sanuki laboratory
---------------------------------------------
2020年5月14日 v3.01.j0 ソースのみ公開
■状況(v3完成までの道のり)
外部辞書の読込機能テスト作成(2012/10/15~10/23)
kmswx.binを用意(64KB未満,単に64Kを超える読み込みをようせんだけです)
72KBあったのですが単語を削って65300バイト程度に抑えました。よってkmswx32.binより大幅に少ないです。搭載している辞書は英単語7000語位とカナ単語の2つのみです(今の私の開発能力ではそのへんが限界)。
COMモデルではDOSからメモリを最大与えられる(640KのうちDOSで使用する分を除いて)のでまずINT21Hのメモリ縮小を実行し64K以外を開放し、メモリを64KB確保する。kmswx.binを開いて確保したメモリに読み込む。辞書の読み込み確認[10/19]。
◆単語数を数えるところまで確認[10/21]。
◆ワークメモリに単語を埋める処理・偽辞書の動作・kmswx.comサーチ後拡張子をbinに変更確認[10/22]。
◆テストプログラムから作成したサブルーチンをv2に組み込みv3.00.00のテスト版作成[10/23]。
◆予定より早くテスト版が完成(半年かかるかとおもったら1週間で完成)
◆テキストエディタでマニュアルを作成、v2のを再利用しているのでほぼ完成[10/25]
◆挙動をkmswx32に合わせる調整、左下の一日累計と今回起動のカウントをGOODのみに変更。最初の1文字目の入力もGOOD扱いに変更。キーボード非表示にした時に出る目標SCORE機能の実装準備。カナエムの開発テストを行ったがPC-9801系でヲ入力をBIOS使っても(SHIFTと0を押したという判定)できなかったので断念[10/26]
◆得点のみを消去するオプションを追加 (/0を起動時に入れる、タイトル画面に該当機能は無) 。英語メッセージの機械翻訳を修正した(まだおかしいところはあるかも)。日本語表記の一部変更による位置のずれを修正。偽辞書使用時の遅延を改善[10/27]
◆挙動を変更した時に総合キーカウントがGOODのみになっていたのを修正[10/28]
◆DIV命令で割り算を行った時、除算エラーが発生(通常は起こりません)するのを抑制。DIV命令は32bit値(DX:AX)を16bit値(例えばCX)で除算するとき命令実行後DXに余り・AXに答えが入るのですが、仮に割る数が極端に小さい時はAXに16bitを超える(65536以上)ことがあり、そのとき0割りエラーと同じ割り込みが発生(MS-DOS上表示がそう見える)するようです。メッセージが「0で割りました」とでてわからなかったのですが、学生の時先生にDIVエラーは0で割った時以外でも発生するというのを聞いたような気がするのでそこを調べたら割った答えが65535を超える計算をしていました。これは意図的にバグを発生させるテストを行なっていた時にわかったので通常の使い方では起こりませんが対策を入れました(割った答えが65535を超えないようリミッタをつけた)。O先生ありがとう、まさか18年位前に聞いたことがこんな所で役に立つとは思わなんだ。[10/29]
◆PC-9801系でカナエムの製作を断念してからPC/AT互換機用のカナエムを開発しました。Windows NT4.0マシンでカナエムプロトタイプを完成させたあとv3.00.03としてソースに結合しPC/AT互換機で作動時のみカナエムが使用できるようになりました(PC-9801版は技術的にうまくいかなかったのでPC/AT互換機専用)。Windows 2000 Pro CD1から作成できるMS-DOS6.2ブードティスクを使用して日本語の表示とカナエムの動作テストを行いました。基本位置練習モードで表示が誤動作したので(ANSI.SYSに依存部分が残っていた)表示の修正を行いました。また、認定機能使用時にkmswx32 v3 より認定点数が高かったのを合わせました。タイトル画面で認定級1の数を示す表示を追加しました(v3.00.04)。ほぼ、kmswx32 v3と同じ機能を搭載完了です[11/1]
◆認定モード時、連続で認定されると級表示が崩れるのを修正[11/3]
◆ABC・WNC等のモードからアイウなどのカナモードに切り替えた時にキーボード位置表示が一文字だけ前の位置情報をもとに書き直すためキーボードのレイアウトがカナになっているにも関わらず前モードが指していた最後のアルファベットに戻してしまう(または英数字になっているのに最後に指していた1文字だけカナになる)部分を修正[11/5]
□v3.1 (2013/8/6 - 8/9)
◆無限時間実装[8/6]
◆無限時間による画面補正[8/7]
◆無限時間による点数表示のリミッタ[8/8]
◆無限時間30秒経過時のk/sを15秒ごとに補正[8/9]
□補足
◆FreeDOS1.1を日本語化して動作を確認、水城珠洲さんの「FreeDOS/Vのページ」にあるFreeDOS/V珠洲版をダウンロードしてtenten909さんの「FreeDOS 1.1で日本語表示。:(memo)」頁を参考に日本語化しました(Windows 7 上のVirtualBOX)。ありがとうございます[2013/8/27]
-----------------------------------------------
◇dosemuの設定変更(ubuntu 12.04 LTS v1.4.0.0)
初期設定では日本語キーボードで\キーを入力出来なかったので、
/etc/dosemu/dosemu.conf
の中にある
# $_X_keycode = (auto)
を( # をとってautoをoff )
$_X_keycode = (off)
にしました。
dosemuの上記設定でもカナエムのロ入力がうまくできないようです(文字化けの状態で確認)。VirtualBox上のFreeDOS1.1では入力できました[11/8]
---------------------------------------------------------
◇GR-DOS v2.1専用ソフト開発完了(2012/11/11 i21f000) (2013/8/8 i21f001)
PC-9801用のフリーになったGR-DOS v2.1ではそのままで作動しません。kmswxで使用しているINT21H,AH=38Hの機能が実装されていないためです。また、INT21H,AH=34H(非公開InDOSフラグ)も非実装のようです。また、これらを模倣する常駐プログラムを作成したのですが、キーボードの入力でキーリピートが高速になって入力がうまくいきませんでした。たぶんINT21H,AH=06Hの機能が原因ではないかと[11/8]。
◆INT21H,AH=06H,DL=0FFHの模倣機能が完成したので動作テストしたら今度はkmswx.datの新規作成に失敗しているのを確認しました。あらかじめkmswx.datをコピーしておいておけば不具合が発生しません(どうもINT21H,AH=3CHの挙動が違うみたいです)。また、年号が1912年となったのでINT21H,AH=2AH実行後CXが2000未満の時に100加算という罠をしかけて年号は2012年を指すように修正をかけました。現在kmswx.datのみ新規作成(または完全初期化)するメニューソフトをGR-DOS専用に作成中です。GR-DOS起動後、模倣ソフト(I21F000.COM)常駐後メニューを起動し、そのあとkmswxが起動します。I21F000.COMについてはBSDスタイルライセンスを予定しています(GR-DOSのソースを改造しても良いのですがソースの扱いがなにも書いてないためGR-DOSを一切変更せず常駐ソフトという形で提供します)。あとINT28Hの模倣機能を考案中(画面右下の日時を作動させるのにINT28H使用のため)[11/9]。
◆INT28H模倣機能搭載完了。INT29H,AL=07H(BELL)を実行後kmswx各モード終了時にフリーズするのでINT29H,AL=07Hのみ何もせずにIRETするよう模倣(MS-DOSでは問題無いのでGR-DOS固有?)[11/10]
◆本日(2012年11月11日)正式にVectorへ登録依頼を出しました。パッケージにはkmswx v3とGR-DOS専用の模倣ソフトおよびkmswx.datに対する初期化メニューソフトを同梱しました。GR-DOSを組み込んだエミュレータおよび実機でkmswxを起動される場合にご利用ください(MS-DOSやFreeDOSでは不要)[11/11]
◆GR-DOS上でI21F000.COM常駐時、STOPキーは作動しません(キーボード入力を見てSTOPに対する割り込み処理をかけていないため)。また、画面右下に表示される日付の曜日が誤って表示されることがあります。これも推測ですが、GR-DOSのDOSコールでの日付と曜日はカレンダーBIOSから直接読み取って返答していると思われます。PC-9801系のカレンダーBIOSから返答される曜日は誤ったまま登録することができるようなので違う曜日になるみたいです。たぶんMS-DOSの曜日返答は日付から計算して作成していると思われます。I21F000.COMにはこれを補正する機能を搭載していません[11/12]
◆Vectorに登録されました。I21F000.COMのソース(I21F000.ASM)はkmswx v3.00.06のパッケージに同梱していますのでご利用ください。アセンブルにはMASMかLASMが必要です(製作はLASM2.35で行なっています)[11/13]
□I21F001.COMを開発しました。I21F000で曜日が誤って取得されていることがあるので補正する関数を新規に導入[8/21]。
----------------------------------------
GR-DOS に対応するためのソフトウェア(ソースのみWeb頁で公開、kmswx v3.00.06にすべて同梱)[2013/7/15]
i21f000.zip
---------------
kmswx v3.01.00に同梱しているi21fのソース[2013/8/12]
i21f001.zip
---------------
kmswxに同梱していない最新のi21fのソース[2013/8/30]
(kmswxに直接関係ありませんがGR-DOSのコマンドプロンプトで高速チャタリングがなくなります)
i21f002.zip
---------------------------------------------------
kmswxに同梱していない最新のi21fのソース[2016/12/15]
GR-DOSのファイル更新に関する年がおかしくなるのを補正します。
GR-DOS上のDIRコマンドで年がおかしくなるのを補正します。
i21f003a.zip
---------------------------------------------------
◇現在確認の修復不能不具合(2012/11/5)(2013/8/12)
PC-9821Xaで確認したのですが、GRPH + 2 キーでPC本体を起動し640x400(70Hz)表示にしたあとPRINT.EXEを常駐させてkmswxを起動するとCRTV割り込みを使用するようになるのですが、CRTV割り込みの時間が短くなるらしく本来の8割程度の時間で各モードが終了してしまいます。例えば、120秒の時間で開始すると98秒位で終了します。これについては修正を考えたのですが、CRTV割り込みの発生時間間隔がどこを見れば良いのかわからないので修復できていません。発生条件はPC/AT対応のディスプレイに表示するため、GRPH+2キーを実行したマシンでインターバルタイマーを使用する常駐ソフトが入るときで、kmswxがインターバルタイマーを使用できる場合は問題が発生しません(kmswxはインターバルタイマーが他で使用中の時CRTV割り込みをフックして使用)。
同じPC-9821XaでもGRPH + 1キーで標準状態にし、98対応のディスプレイで同じことをしてもきちんと時間通り作動することを確認済みです。(推測ですが、通常は56.4Hzで70Hzになったためではないかと)[11/5]
ubuntu 12.04 LTS 上VirtualBox 4.2で MS-DOS 6.2(Windows 2000 Pro CD-1から作成)のDOSの表示をUSコマンドで英語仕様に変更後kmswxを実行するとTOP10にはいる得点時に名前入力の説明文字が表示されないことと入力後一番上の行に表示される文字が表示されない。日本語表示の時とFreeDOS1.1の英語仕様ではその不具合が発生しません。また、Windows 7 (64bit)上Virtual PC 2007において同様のMS-DOS 6.2をUSコマンドで英語仕様にした場合は不具合が発生しません。Windows 7上のVirtualBoxでは不具合が再現します[VirtualBoxの問題か?]
 
kmswx [ 紹介 - その他 - 履歴 (kmswx32履歴と同頁) ]
一覧
先頭頁に戻る
[20230331]
©wnc develop