まず DOS に降りる方法から。
姫代さんの時計じかけ本舗 internet ソフトウェアライブラリから UniExitShell を持ってきて登録。実行すると D:\UNISHELL.DBG を作成してくれる。これで準備はオッケー。 裏のリセットスイッチを押して左右の SHIFT キーをずーっと押していると C:\> と表示されて autoexec.bat の途中で止まる(というか UNISHELL.EXE の実行が終わる)。
これでもう DOS でやり放題。このままでは画面いっぱいに表示できないし日本語も出ないので、mogd を常駐させて dir とかしてみよう。あとは同ページにある常駐物やツールをお好みで入れよう。
ap.bat という名前で起動バッチを作っている。
---
@echo off set COMSPEC= set UNI_PATH= set PATH= a:\bin\histcsh -s -t -r^[[C -l^[[D -N1 -S512 -p%%_ a:\bin\mgalt -u kanaoff numoff a:\bin\mogd -v0 a:\bin\adddev a:\mg.dev a:\bin\bindkey a:\bin\mgai -s -q c:\dos\power off a:\bin\mgbatt -v -a batt=lo+ ac=hi+ -t timer=20 up=hi -k nokey=180 a:\bin\mgoff -s -q path=a:\bin;d:\;c:\;c:\dos set COMSPEC=c:\command.com set TMP=a:\tmp set TZ=JST-9 set PROMPT=$s set TERMCAP=a:\etc\termcap set TERM=mg24 set HOME=a:\work set CDPATH=a:\work;a:\ set DF=AD set LESSCHARSET=dos set NG=a: set USER=sharl set ROGUEOPTS=jump,directory:a:\tmp,file:a:\tmp\rogue.sav mgask 1 todo---
詳しくは各ソフトのドキュメントを熟読のこと。
mg.dev は以下のとおり。
---
DEVICE = C:\DOS\NECAIK1.DRV DEVICE = C:\DOS\NECAIK2.DRV DEVICE = A:\ETC\PANSI.SYS---
あくまでもサンプルなので、各自の環境に合わせて適宜変更のこと。
256bytes しかないので注意。拡張したい人は exenv 1.5.1 というツールで拡張できます。5.x までしか対応してないとドキュメントには書いてあるけど、6.20 でも拡張可能なことを確認。メモリの fragmentation が発生するけど…狭いよりはいいか。
Vz が動作中。DOS
用の常駐画面キャプチャがあれば、もっと綺麗に撮れるんだけど、どこかにないかなぁ。
JPEG ビュア mgjv でのタイリングによる違いの実験。これがオリジナル画像。
常駐しない画面キャプチャが吐くファイルを mggtoppm, pnmcrop,
ppmtogif で変換した。右がタイリングありで比較的綺麗に出ている。
(97/08/22)
富士フィルム DS-10 の画像の表示に成功。スマートメディアをモバに挿して吸い出し。このデジカメの
画像ファイルフォーマットは Exif フォーマットになっているので JFIF 形式決め打ちで表示しようと
する mgjv 1.20 では表示できない。IIJ の Simtel ミラーにある
jpeg6a.zip に入っている cjpeg, djpeg を使って DS-10 の画像を変換する。
djpeg -pnm dsc00001.jpg
とすると、PPM 形式のファイル dsc00001.ppm ができる。これを cjpeg にかけると Exif ヘッダではない JPEG ファイルができあがる。
cjpeg -outfile new.jpg dsc00001.ppm
これで mgjv 1.20 で表示できる new.jpg ができる。他のメモリカード対応デジカメの JPEG ファイルもこの方法で表示できると思われる。
こんなことをやるのは面倒だし電池がもったいないので、ぜひ mgjv で Exif ヘッダに対応して もらいたいものである。
最近発売されているモバには Exif ヘッダに対応している画像ビュアが内蔵されてるのね。NEC は青モバユーザをサポートしてくれないだろうから、今のところはこの方法で表示するしかない。
Bold 表示のアンカータグはこのサイトに置いてあるものです。
通信を行うものの導入はしばらく予定がありません。通信したい人は鈴電さんのページを見るのがいいかも。
Ng だけじゃなく、JVim など termcap が必要なものも同じ。
次のアーカイブを用意する。
組み込み順序はサンプルを参照のこと。pansi.sys と mogd を組み合わせる時は mogd v0.25b 以降のものじゃないとうまく動かん。pansi.com は対応シーケンス不足のためダメ。
あまり煮詰めてないけど termcap の設定例。
山野さん <yamano@nwk.cl.nec.co.jp> の情報により pansi.sys? mogd? が暴走するシーケンスを削除しました。まだ変更する可能性があります。
---mg25|mogd-v0|ansi:\ :co#80:li#25:am:bs:pt:xn:bl=^G:le=\E[D:do=\E[B:\ :cl=\E[2J:ce=\E[K:cd=\E[J:sc=\E[s:rc=\E[u:\ :cm=\E[%i%d;%dH:ho=\E[H:ll=\E[25;1H:\ :up=\E[A:nd=\E[C:ri=\E[C:im=\E[4h:ei=\E[4l:\ :UP=\E[%dA:DO=\E[%dB:RI=\E[%dC:LE=\E[%dD:\ :al=\E[L:dl=\E[M:AL=\E[%dL:DL=\E[%dM:\ :so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ :mb=\E[5m:md=\E[1m:mr=\E[7m:mh=\E[2m:me=\E[m: mg24:\ :li#24:ll=\E[24;1H:tc=ansi: mg30|mogd-v1:\ :li#30:ll=\E[30;1H:tc=ansi: mg29:\ :li#29:ll=\E[29;1H:tc=ansi: mg20|mogd-v2:\ :li#20:ll=\E[20;1H:tc=ansi: mg19:\ :li#19:ll=\E[19;1H:tc=ansi: mg15|mogd-v4:\ :li#15:ll=\E[15;1H:tc=ansi: mg14:\ :li#14:ll=\E[14;1H:tc=ansi: mg20w|vmode2:\ :co#106:li#20:ll=\E[20;1H:tc=ansi: mg19w:\ :co#106:li#19:ll=\E[19;1H:tc=ansi:---
HistCSH の alias 機能を利用して
30 mogd -v1; set TERM=mg30 29 mogd -v1; set TERM=mg29 25 mogd -v0; set TERM=mg25 24 mogd -v0; set TERM=mg24 20 mogd -v2; set TERM=mg20 19 mogd -v2; set TERM=mg19 15 mogd -v4; set TERM=mg15 14 mogd -v4; set TERM=mg14
などとすると便利だ。mogd で画面モードを切り替えたときに環境変数 TERM になにがしかの値を設定してくれるようになっていればかなり楽になるんだけど。
mogd の 20 行モード愛用者は -v2 じゃなくて -v3 にするといいことがあるかも。
定常的に使っている UNIX っぽくないツールの紹介。
未完成ながら解析したので、なにかの参考になれば。
/* size 16 */ typedef struct { unsigned long endmark; /* チェック用? */ unsigned long offset; /* データファイル先頭からのオフセット */ unsigned long startmark; /* チェック用? */ unsigned long dummy; /* わからん */ } INDEX; /* size 37 */ typedef struct { unsigned char startmark[4]; /* チェック用? */ unsigned char dummy[3]; /* なんだこれ? */ unsigned char endmark[4]; /* チェック用? */ unsigned char date[16]; /* 期限日、記入日が連続して入ってる */ unsigned char delete; /* 削除マーク */ unsigned char rank; /* ランク */ unsigned char secret; /* シークレット */ unsigned char moto; /* 依頼元文字列長 */ unsigned char saki; /* 依頼先文字列長 */ unsigned char content[3]; /* 内容文字列長 content[1] だけ必要 */ unsigned char end[2]; /* 終端? */ } DATA;
INDEX は todo.idx の構造。DATA は todo.dat の。DATA がすべて unsigned char になっているのは strict struct packing のため(UNIX でも動かせるように)なので「ダセ〜」とか言わないように(汗;)。
todo.idx の先頭 16byte はなんらかの情報を管理していると思われるが、詳細は不明。startmark に未処理データの先頭位置、offset に削除データの先頭位置が格納されていることが判明している。
DATA 構造体の直後に「依頼元」「依頼先」「内容」それぞれの内容が連続して格納されている。
「チェック用?」となっているところはデータの整合性チェックにでも使われているのか、INDEX と DATA の startmark, endmark それぞれが一致している。
この結果を元に CSV 変換プログラムを作成してみたところ、 簡単に変換できた。
モバには
がある(ペンタイプ MC-P1, MC-MP11 は除く)。ちなみに WindowsCE モデルは「モバ CE」だ。 内蔵メモリが 2M から 4M に増加したのは黒モバ以降。MK32 では 6M 搭載している。青モバは EMS が 13page 208KB しかないが、MK22 は 38page 608KB もある。XMS で見るともっとスゴくて
total used free MC-K1 1236KB 1236KB 0KB(悲) MC-MK22 3292KB 3058KB 234KB
となる。(TNX QUX) こんなに違いがあるので MK シリーズはメモリ上で作業がしやすい。登録ソフトの「画像表示対応ファイルコピーツール」はこれらの空いているメモリを ガンガン つかっているらしく、青モバでは動かない(悲)。
メモリをファイルシステムとして使っているモバをメイル端末にするには大量のメモリが必要なことは 最初からわかってたと思うんだけど、コストとの兼ね合いがあったんだろうな。MK32 になってやっと まともなメイル端末になったような気がするのはヲレだけか?
青モバとその他機種の判別は mgjv 1.30β のドキュメントを見ると C:\SYSTEM\UNIKBROM.REV の有無でやるらしい。UNIKBROM.REV がない青モバもあるようなので、機種依存しないためには もっと確実な方法を取らなければならないと思う。Extend memory block の allocation ができるかできないかで判別できるかな?
UNIKBROM.REV の中を見てみると GOLDBIRD-M と書いてある。その他 SMILE-M, SOL-M と書いてあるバージョンがあるようだ。コードネームみたいなもの? 金鳥…。
mogd 0.25b + pansi の環境でカーソル消去・カーソル表示のエスケープシーケンスを 出力するとカーソル形状が上一本線になる症状は mogd 0.25b に依存する模様。
なんか間違いとかあったらツッコミよろしくです。
さまざまなソフトを発表してくれる皆さんに感謝。
uniexit, reset, suspend の鈴木昌太さん。
mgalt, mgai, mgbatt, mgoff の Yoshi さん。
mgjv, mglsilib の白子雅之さん。
mogd の小田和俊さん。
閉鎖的な NIFTY Serve から自由な場所にソフトウェアのアーカイブを持ち出してくださった姫代秋さん。
mogd + pansi での termcap に関する貴重な情報をくださり、unikbrom.rev
のバージョン違いをまとめてくださった山野さん。
DOS で UNIX な気分を味わうための有用なソフト群を紹介していただいた♪きむらかずしさん。