;+ MSVP98.UPD ; ; This file is written in MS-Kanji code (Japanese). ; ; Update History ; 13-Aug-1990 Annouce site-test of KEK v1.20. 15-Aug-1990 Modify IHOSTR and CLRBUF in MSXP98.ASM. ------------------------------------------------------------------------------ 01-Sep-1990 Fixed many bugs: 1.vttest により、ESC/CSI sequence中での C0 文字の扱いが悪いことが判明 した。v1.20から、ESC/CSI中での C0 はすべて ESC/SCI をキャンセルする ことにしていたが、どうやら VT100 は、ほとんどすべてそのまま C0 を実 行し、ESC/CSI には影響を与えないらしい。現在、ESC/CSIをキャンセルす るのは CANと SUBのみである。 2.VT52 mode へ移行する ESC sequence は modeline の変更を伴う為、 VT100_MODLINを呼んでいるが、この中で CX を破壊していた為、以後の 解釈が不能になっていた。 3.また、1.に伴い、ESC/CSI sequenceのフラグの消去は各 ESC sequence 実行 後に行わなければならなくなったが、VT52 の ESC H に対して、これが行な われてなかった。 4.漢字の半分(最初の1バイト)で C0 文字が来た場合、漢字を中止するのを やめた。これは特に EDTでの入力で起こる漢字が化ける問題に対処する為である。 これで確かに漢字は化けなくなったが、行末で EDTが出すブロックマークは漢 字の場合うまくいかない。 5.Tek4105 対応の準備の為、msgp98.asmの ESCシーケンス解釈ルーチンを変更 した。特に現在は、TEK4105 の ESCシーケンスは無視するようになっている。 6.Tek4015 対応の準備の為、msyp98.asmの ESCシーケンス解釈ルーチンのclean up を行った。特に文字セットの切り換えまわりが、以前より厳しくなった。 --------------------------------------------------------------------------- 02-Sep-1990 1.msyp98.asmの ESCシーケンス解釈・実行ルーチンまわりを再度変更した。 中間文字を持つものと持たないものに明確に分離した。これに伴い、例えば ESC I..I [ などというシーケンス(もしあるとすれば)と ESC [ が共存できる。 2.vt52 mode の強化を行う。現在の状況は ESC A, B, C, D -> CSI A, B, C, D ESC F -> ignored ESC G -> ignored ESC H -> cursor move to home ESC I -> reverse index ESC J -> CSI J ESC K -> CSI K ESC Y -> locate cursor ESC Z -> identity ESC W -> ignored ESC X -> ignored ESC V -> ignored である。これにより、グラフ文字の表示を除いて vttest が通るようになった。 3.msyp98.asmで tek41xx 命令の解釈を行い ESC % ! 0 で tek mode に入るようになった。これは ANSI の私的シーケンスとも解釈できる フォーマットなので、解釈ルーチンには問題を生じない。 4.msgp98.asmに tek4105の準備の為、大幅に手を入れた。41xxの ESCシーケンス を切り出し、無視するようにした。 5.msgp98.asmで tek41xx型の整数型データ処理ルーチンを加えた。これにより現在 set line color index が働いている。但し、カラーインデックスとカラーの対応は MS-Kermit タイプの ままである。 ------------------------------------------------------------------------- 05-SEP-1990 大幅変更を加えた。 1.msgp98.asm に tek_dialog_area と tek_dialog_vsbl という二つの変数を設けた。 tek_dialog_area は Enable Dialog Area により設定される番号を記憶する。 これが 0の場合、アルファテキストはグラフィックテキストとして、グラフィック 画面のグラフィック現在位置から書かれる。 tek_dialog_vsbl は Set Dialog Area Visibility で設定される値を記憶する。 2.vtとtek の切り換え時の VT100 screen の save/restore と tek mode へ移る 際の画面消去をやめた。これは上の二つの変数で対応できると思われるからである。 3.tek_dialog_area の初期値を 0にし、 Enable Dialog Area を支援した。即ち KA0 Disable dialog area. All alpha texts are written on the graphic screen at the graphical current position. KA1 Enable dialog area. Alpha texts are written on the VT screen. しかし問題があって、disable dialog area にして、最初に TeK mode に入ると 何も表示されない。これは vt100_gflag が設定されない為である。 --------------------------------------------------------------------------- 06-SEP-1990 1.GIN answer back formatが違っていることが判明した。Key character, HiX, LoX, HiY, LoYの順に送出するが、座標の文字化はすべて 0x20 で行う。 つまり Tek-xy-formatではない。 2.msxp98.asm の中の serini で carry を返してなかった。これが原因で、時々 コマンドモードにまで戻ってしまっていた。 3.ent_tkで vt100_gflag が 3 以下の時、4 になるようにした。これにより、 スクリーンの矛盾はなくなった(ハズ)。 --------------------------------------------------------------------------- 07-SEP-1990 1.Select code 1 を支援、vt100 モードに戻る。 %!1 2.Set Marker Type 及び Draw Marker を支援した。 MM(int1) Set Marker Type (0-10) LH(xy1) Draw Marker --------------------------------------------------------------------------- 08-SEP-1990 1.String の処理が行えるように msgp98.asm を変更。Graphic Text を支援。 LT(string1) 但し、属性はまだ支援していない。 2.Panel の処理をつける。但し、Panel の実現は境界線のみを直線の属性で表示 しているだけである。 LP(xy1)(int1) Begin Panel Boundary LE End Panel --------------------------------------------------------------------------- 09-SEP-1990 1.Locator の位置を current graphic position とは独立させた。 --------------------------------------------------------------------------- 10-SEP-1990 1.Fill Area Solid を支援 2.TEK4105 モードの時 Color code が TEK4100 仕様に一致させるようにした。 但し、0 は background color 、1 は foreground color にしてあり、これらの カラー指定の(端末設定からもホストからも)影響を受ける。 これで output primitive はすべて(属性は完全ではないが)揃った。 (この版を三菱化成の佐藤さんにテスト依頼) --------------------------------------------------------------------------- 11-SEP-1990 1.Fill Area のスピードアップを行った。 2.VT100 へのパラメータの渡し方を大幅変更し、VT への制御が効くようになった。 これにより LZ Clear Dialog Scroll (Clears dialog screen and homes the cursor) を支援。 --------------------------------------------------------------------------- 14-SEP-1990 1.msgp98.asm の大幅変更。TEK41xx のコマンドの解析を一度で済ませるようにする 為、jump table による dispatch 方式に改める。 --------------------------------------------------------------------------- 15-SEP-1990 1.msgp98.asm の TEK41xx コマンドの引き数の解釈方式を改める。INT-Array を 扱えるように、解釈方式を改変。 2.msgp98.asm に TG Set Surface Color Map TM を解釈リストに加え INT-array が正しく動くことを確認。但し、これらはまだ ダミールーティンである。 3.Analogue 16 colors 対応にする為、msgp98.asm, msxp98.asm, msyp98.asm mszp98.asm に手を加える。mszp98.asm にあった set_gpalette はアナログ、 ディジタル両用にし、msgp98.asm に移動。 4.カラーインデクッスもアナログ16色対応にする為、 0:Background, 1:Foreground にする。 これに伴い、今のところ sixel mode のカラー設定ができていない。 5.msyp98.asm の vts に set terminal display-mode analogue/digital を つけ加える。また、show term にも表示するように付け加える。 ---------------------------------------------------------------------------- 16-SEP-1990 1.次の機能を付け加える。 TM(int1,int1,int1) TG(int1,int-array) ただし、カラー指定モードのうち、HLS モードは支援していない。また、 その他のパラメータはすべて無視される。サーフェイス番号も無視。 また、百分率から [0-255]への変換は 655を掛けて上位バイトをとった。 PC98の色精度ではこれで充分と思われる。 2.カラーモードを表示を行う為、TEKSTAT を msgp98.asm に作った。 3.INT-array の処理にバグがあった(古い値が残る論理になっていた)のを 直した。 ---------------------------------------------------------------------------- 17-SEP-1990 1.カラー指定に CMY mode を付け加える。 2.アナログディスプレーが使用されている時、パネルに対し、GRCG を使うように したが、思った程速度が向上しない。μVAX3500で PE2D4111.LOGを 19200bpsで TYPE して with GRCG 2'01" without GRCG 2'06" digital 3plane 1'58" 3.上の原因の一部に境界を無条件に書いている部分が効いていると思われたので それをはずし、正しくパネル境界を扱うようにした。また、境界を引くタイミング も本物のマニュアルの記述が働くように LE の時ではなく、xy が与えられた 時点で書くように変更。 ---------------------------------------------------------------------------- 18-SEP-1990 佐藤さん@三菱化成より log file 届く。新しい状況により、色々なことが 判明した。 - TG は、多重定義を許しているらしい。つまり、一回の TG で  いくつものインデックスに対し定義できる。 - TEK4105 では、カラーは HLS で定義するらしい。 - RW が使われている。 使われている [A-Z][A-Z] は次の通り *** Level 2 seq. in File: rs1_4105.log *** KA(int) Enable Dialog Area KI(int) Ignore deletes LE End panel LF(xy) Move LG(xy) Draw LL(int) Set Dialog Area Lines LP(xy,int) Begin Panel Boundary LT(str) Graphic Text LZ Clear Dialog Scroll MC(int,int,int) Set Graph Text Size MG(int) Set Graphics Area Writing Mode ML(int) Set Line Index MP(int) Select Fill Pattern MR(real) Set Graph Text Rotation MT(int) Set Text Index MV(int) Set Line Style RA(int,int,int) Set View Attributes RW(xy,xy) Set Window TG(int,int-array) Set Surface Color Map 1.カラー設定、全モード支援。即ち HLS-mode も働くようになった。 しかしテクトロの HLS は世の中の標準と異なり、blue が基点になっている。 即ち、 Blue Hue= 0 Magenta Hue= 60 Red Hue=120 Yellow Hue=180 Green Hue=240 Cyan Hue=300 である。 2.TG 多重定義を付け加えた。 3.MP で 0 が指定された時の処理が間違っていたのを修正した。 4.RW を支援。座標変換に実数演算が出てくるが、xy は12ビット形式で あるので、変換係数は 1/4096 - 4096 即ち、dynamic range として24ビット である。そこで16ビット固定小数点とし、32ビット整数で変換行列を表す こととした。現在の版では0、1を高速化する可能性は追求していない。 5. Tek-mode reset に座標変換行列の初期化、色の初期化、色モードの初期化を つけ加える。しかし、色の初期化は考え物かも知れない。 ----------------------------------------------------------------------------- 19-Sep-1990 1.文字サイズコマンドに対し、文字サイズはそのままで、ステップベクトルのみ を変化させることで対応。 2.vtext_flg を vtgrph_flg と名前変更を行い、新たに GCLRWAIT_BIT を付け加 える。コマンドでは今のところ set term gclearwait on/off を対応させている。これは on の場合 に対し、ベルを鳴らし何らかの キー入力があるまで待つものである。 3.Set Graphtext Rotation コマンドに対し、angle 0, 90, 180, 270 deg. に 量子化して表示。ほぼまともになった。 ----------------------------------------------------------------------------- 20-Sep-1990 昨日筑波大加速器センターの木村博美さんより、 4110 Series TEK Host Programmers Manual (Part No.070-4664-00, Product Group 16) 及び 4110 Series Command Reference Manual (Part No.070-3892-00, Product Group 16) をお借りすることができた。これにより、parserのいくつかの部分に誤りがあること が判明した。ただし、これらは致命的とは思われないので、徐々に変更していくもの とする。以下、TEK-parserの概略と、相違点をまとめておく。 1.TEK41xx では、TEK-parserは次の8つの状態をとる。 (1) Alpha mode (2) Vector mode (3) Marker mode (4) Last Character escape TEK (LCE-T) (5) 20C (6) integer (7) xy (8) char このうち、最初の3つは TEK40xx との互換モードであり、(4)-(8)とは独立した状態 遷移をする。現在の MSVP98 の TEK-parserでは、これらを変数 tek_esc, tek_mod, tek41_nreqで区別している。 tek_mod tek_esc tek41_nreq (1) Alpha mode 0 0 (2) Vector mode 1 0 (3) Marker mode 2 0 (4) LCE-T - 1 (5) 20C - 3 (6) integer - 4 TEK41_INT_TYPE (7) xy - 4 TEK41_XY_TYPE (8) char - 4 TEK41_STR_TYPE 上の他に MSVP98 では tek_esc=2 は Kermit 型の ANSI 互換カラー指定の為に使わ れている。また、tek_mod=3が Incremental Plot modeの為使われている。 2.(1)-(3)の状態は従来の TEK40xx と同様、各々、US,GS,FS の制御文字を受信した 段階で状態が遷移する。 3.一方(4)-(8) の状態は、まずを受信した段階で、LCE-Tの状態に入り、LCE-T の状態で受信した文字により、次に状態遷移が起こるか、コマンドとして実行される かが決定する。 4.LCE-T の状態で受信した文字のうち、意味を持つ制御文字は NUL --> ESC (i.e., ignored) ENQ --> Report 4010 status BEL --> Ring Bell BS --> Backspace HT --> Horizontal Tab LF --> ESC (i.e., ignored) VT --> Vertical Tab FF --> Page CR --> ESC (i.e., ignored) SO --> Shift-In (change alpha font) SI --> Shift-out (change alpha font) EB --> 4010 Hardcopy CAN --> Enter Bypass mode SB --> Enable 4010 GIN ESC --> ESC FS --> FS (Enter marker mode) GS --> GS (Enter vector mode) US --> US (Enter alpha mode) DEL --> ESC (i.e., ignored) また、図形文字では ! --> Enable 4953 GIN % --> Select code 8 9 : ; --> Set 4014 alpha text size ? --> I J .. Z --> 20C a .. o --> Set 4014 linestype が意味を持ち、その他の文字はすべて no-op が実行される。即ち、LCE-T の状態 から抜ける。 MSVP98 では、20C への遷移を I-Z ではなく、A-Z としている。また、制御文字 の取り扱いが一部異なっている。 5.20C の状態で受信した文字で意味を持つのは ESC, FS, GS, US 及び A-Z の 図形文字のみで、その他の制御文字については記述が無く、図形文字については error となる。A-Z を受信した際には TEK41xx型の命令と見なされる。 6.int, xy, char 状態においては、意味を持つ制御文字は ESC, FS, GS, US 及び char 状態での CR のみであり、また図形文字はすべて意味を持つ。 これらのことから、支援していない TEK41xx型命令に対して、どうすればよいか 自動的に決まる。即ち、20C 状態で A-Z を受信したら TEK41xx 型命令であると 判定し、もしそれが支援していないものであれば、それ以降 ESC, FS, GS, USの いずれかがくるまで、すべて無視してよい。何故なら、TEK41xx 型命令の次に来る のは int, xy, char のいずれかか、状態遷移を引き起こす制御文字だからである。 引き数を伴わない TEK41xx に関してはこのことはあてはまらないが、通常、 TEK41xx 命令の後、状態遷移を明示せずに状態を遷移させる(即ち、以前の alpha, vector, marker のいずれかの状態に戻る)ことはやらない(原理的には 可能であるけれども)ので、これで十分であると思われる。 ------ 夜、三菱化成の佐藤さんより、新しいログファイル sas.4105.log が届く。 一部動かないのは Panel モード中に再度 Begin Panel Boundary が出ている為で 木村さんから借りたマニュアルによると、これはパネルの多重境界を定義するもの である。パネル処理の一部を変更、動くようになる。 --------------------------------------------------------------------------- 21-Sep-1990 1.木村さん@筑波大より、それまで動いていた4105応用プログラム(dia.exe) が動かなくなった旨、指摘があった。いくつかのバグが絡んでいた。 −ウィンドウのパラメータチェックをサボっていたら、(0,0)(0,0)の指示がでて  いる。これをチェックするようにした。 −座標変換の変数名の一部にミスタイプがあった。 2.最後に検出した支援していない命令を status 表示するようにした。 この時点での版を佐藤さん@三菱化成に電子メールで送る。 --------------------------------------------------------------------------- 22-Sep-1990 1.ビューポートを 4105 に合わせて [0-479] x [0-359] に変更、このついでに座標変換行列の設定ルーチン、変換ルーチンを独立させる。 ビューポートは 4105 [0-479] x [0-359] 4107 [0-639] x [0-479] 4111,5 [0-4095] x [0-3276] 4112,3 [0-4095] x [0-3071] のようである。つまり、4105,4107,4112,4113 は x:y = 4:3 である。この比率 でいくと、変換が容易なのは [0-511] x [0-384]とするのがよい。また、最大の 画面を使うには [0-531] x [0-398] がよい。 GINの方はまだ変換行列を用意していないので、現在は正しくない座標値が 返される 2.起動直後の replay xxx が効かなかったのは、msxp98.asmの中の clrbuf, ihosts で、入力が空になるまで読みつづけているのが原因であった。これらのルーチン に手を入れ replay 中は読まないように変更した。 3.木村さん@筑波大より指摘されていた、^Zを表示する問題で、逆疑問符の代わ りに制御文字表示用の対応する文字 (SB) を表示するようにした。 ------------------------------------------------------------------------ 25-Sep-1990 1. watsun.cc.columbia.edu:anonymous/kermit/test より、mss*.asm, mssdef.h 及び msr302.upd をコピー、問題の msscom.asm の inchr の inchr4: の直前の jb を jbe に変え、再アセンブル、リンク。動作確認。 2. mouse を支援。 MS-Kermit>set term mouse on/off により、GINモードでマウスを動作させるかどうか決定する。マウスドライバ はGINの度に初期化され、マウス型の判定が行われる。マウスの型として現在 1: NEC-mouse 2: MS-mouse を支援しており、これらは初期化の際に自動判別される。判別はドライバの初期 化において、 AX=0 BX=0 で初期化を行い、AX=-1 でかつ BX=2 の場合を MS-mouse としている。AX=-1 で BX が 2 ではない時は NEC-mouse としている。 Mouse の動作は NEC の MS-DOS に付属のもの、ASCII の付録についてきたもの (MS-mouse)及び msz.com で確認した。 ------------------------------------------------------------------------- 26-Sep-1990 1.mouse left button = '1', mouse right button = '2', both button = '3' とする。 -------------------------------------------------------------------------- 27-Sep-1990 1.vttest_flg を加える。但し、この setup パラメータを加えると masm で out of memory errorになるので、 setup からは、はずしてある。 -------------------------------------------------------------------------- 28-Sep-1990 1.vtsを msyp98.asm から mszp98.asm へ移す( msyp98.asm が assemble 段階で symbol space overflowを起こす為)。 2.sixelモードが正しく動くようにsixel color を設定し直す。 -------------------------------------------------------------------------- 29-Sep-1990 力武さん@日本DEC用のパッケージを作る。 -------------------------------------------------------------------------- 30-Sep-1990 1.GIN に対しても ViewPort/Window を用意し、座標変換がこれらに従って行われる ようにした。現在、TEK4105 に合わせて [0,479]x[0,359] と [0,4095]x[0,3071]を 既定値としている。設計上は既に ViewPort も変えられるが、まだ用意していない。 2.Panel の境界が正しく書かれないバグを発見し、直した。 3.Dialog area visibilityを加える。この制御の為、vt100_gflag の 8-bit 目を 使うことにする。テキスト画面は TEK モードの時のみ tek_dialog_vsbl の影響を 受ける。 --------------------------------------------------------------------------- 06-Oct-1990 1.VT220 用 decf6, ... , decf20 及び dechelp, decdo, decfind, decinsert, decreplace, decselect, decprev, decnext を入れる準備を行う。この為、 既に set key command では、これらの verb を受け付ける。但し、実際にコード が送られるのは decfind, ... , decnext の6つで、なおかつ7ビットモードで 送られる。 2.VT の reset でモードラインが Kermit のモードラインになるように変更。 --------------------------------------------------------------------------- 07-Oct-1990 1.msyp98.asm で C0 文字の処理を jump table に変更。簡単な動作確認。 2.これに伴い、漢字の間に入る C0 文字について、カーソルを変更するもの、 文字セットを変更するもの、及び ESC, CAN, SUB については漢字がキャンセル されたものとして扱うことにした。 --------------------------------------------------------------------------- 08-Oct-1990 力武さん@日本DECより、力武版との diff を受け取る。 以下力武メモ: >-------------------------------------------------------------------------- >5-OCT-1990 by Kenji (Kenji 0.70) > >1.以前のKenji版と同じく,起動した時点での行表示を24行+ファンクションキー >付きに変更.およびターミナルモード時のステータス行の属性をアンダーラインに >変える. > >2. tek4014モードのdisableができないままになっていたので,以前のKEKのソース >を参照し,fixする. > >3. スラッシュおよびバックスラッシュを,98固有のグラフ文字に変えておく. > >4. MSGP98.ASMの中でシンボルSUBがシステム定義シンボルと重複するwarningと, >およびtex_gtxtが正しくnear procedureとして定義されないことによるphase >errorのバグを直す. >-------------------------------------------------------------------------- >7-OCT-1990 by Kenji (Kenji 0.71) > >1. 最新版を入手し,source code mergeを行う. >-------------------------------------------------------------------------- --------------------------------------------------------------------------- 10-Oct-1990 1.PCWAIT を mszp98.asm に移動。より正確なものに置き換える準備をする。 2.力武さん@日本DECの指摘にあった、disable/enable tek は v3.0 から set term tek4010 disable/enable に変更されていることが判明した。msyibm.asm から対応する部分を切り取り、 VTS に入れる。 ---------------------------------------------------------------------------- 08-Mar-1991 1. Frank より MS-Kermit 3.10 がリリース待ちで /kermit/test にあるとのこと。 Joe が ms?p98 でトラブッていることの連絡。anonymous-ftp する。 原因は msxp98.asm で使っていない古いルーチンが残っていて、その中で mss* にあった古いルーチンを呼んでいたため。 これを消すことで解決したように見える。 ---------------------------------------------------------------------------- 09-Mar-1991 1.Joe より、MASM 5 では ESC, CAN は reserved word である旨指摘があった。  問題となるのは msgp98.asm のみで、ESC はコメント以外には使われていない。  CAN は CL_CAN に、また SUB も危険なので CL_SUB に変更 2.MS-Kermit 3.10 05-Mar-1991 と link 動作確認 ----------------------------------------------------------------------------- 05-Apr-1991 1.Sliding window で retry が頻発する原因は、ホストに対するフロー制御がうまく  いっていないことが原因であった。どこかの時点で msxp98.asm の中の flowoff  及び flowon が設定されなくなっていた。 2.pcwait の時間がいい加減だったのを大体正しく設定されるようにした。10msec  単位のインターバルタイマー BIOS call を使って値を設定するようにした。これ  に伴い、SENDBR は 275msec の DTR off 、SENDBL は 1.8sec の DTR off になる  ようにした。 3.OUTCHR の中で、文字送出時、XOFF 受信の為送れない場合、IBM-PC と同様に  4msec のインターバルで XON の受信をチェックし、約 15 秒でタイムアウトして  強制送出するようにした。 これら変更を加えたものを KEK v1.21 05-APR-1991 とする。 ---------------------------------------------------------------------------- 17-Apr-1991 懸案であった Joe Douptnik 修正を入れたものに置き換えた。 msyp98.asm の中の prn_out がすべて pntchr の置きかわった為、mszp98.asm 中の prn_out を消去した。 力武氏より指摘のあった msgp98.asm の tek_gtxt: を tek_gtxt proc near へ 置き換える件についても既に Joe 修正に含まれている。 この修正を加えたものを KEK v1.22 17-APR-1991 とする。 ----------------------------------------------------------------------------