今日のテーマ   日々改造 (^_^;)         
[記事リスト(ツリー表示)]  [ 返信 ]   [新着記事] [最新50] [ワード検索] [過去ログ]

タイトル EMSテストマクロ
投稿日: 2018/12/28(金) 23:50
投稿者文太
 番 号 8638       コメント数 2

C:\DEF>vmap
----- EMS ver4.0 (frame: C000h) -----
handle pages   size  name
------ ----- ------  --------
     1     2    32k  for Vwx!
     1     2    32k  for Vwx!
     2     6    96k  VZ		;start

     2     7   112k  VZ		;^NX, sample string saved in EMS (1)
     2     7   112k  VZ		;^NY, sample string read & written to PR
     2     6    96k  VZ		;^N\Y, test EMS page closed (2)

 ※(1)から(2)までたどり着くのに、あいだ3時間あったら、5時間あったら
(もちろんVzをふつうに継続使用している)大丈夫なのか。途中不具合を誘発
しないか、(2)はふつうに行えるのか。これが課題です。

 できたような気がします。
 ただ、あくまで習作、テスト用です。

 EMSを保存バッファとして使えるのか、のテストです。
 たぶんできないと思う。思わぬ不具合に遭遇することになるのだと思う。

 発想はこうです。マクロバッファはあくまで一時的な保存バッファで、もっと
恒久的な(Vzが起動している間、僕の場合には常駐している間)バッファが欲
しい。 かつて konno さんに「1kbuf.com 113 2007-01-06 01:30」なんてのを作
ってもらったのですが(たぶんこっちに行くのだけど)、使うの大変なバッファ
でして、Vz標準の EMS 操作関数ではダメでしょうか? ということです。

 僕が悲観的なのは、ずっとこのEMSページをVzが管理してくれるのか、
ということ。どうなんでしょうか。このページを外してVzは自分のためにEMS
を使ってくれるのでしょうか? 前例がないような気がするのです。
 EMSをバンバン使っているマクロは高橋さんのマクロ。でも、マクロが終了
したら、そのEMSページ解放してるのね。保存バッファではなく作業バッファ
なんですね。
 というわけで、たぶん、失敗するのでしょう。

 お暇な方は改造するなりして、お使いください。あくまでテストとして。
 「こりゃまずいでしょう」という明らかなバグがあったらお教えてください。
 発想がまずいのなら、それも、どうか。

 しばらく自分でテストするつもりなので、即レスはないと思います。


 マクロの注意点。
 (1)キーアサインが僕のもののままです。読み出しとEMSの解放のほうは、
シフト起動です。

 (2)Bv256 前提です。EMSセグメント、ハンドル、文字列長を保存しておく
バッファがVzのお腹の中に必要です。
    消えないバッファは、こうとでもするしかないと思う。消えないバッファの
ための消えないバッファ。

 (3)高橋版の書式制御を使っています。konno 版でなにも問題ありません。


 メリークリスマス(遅いよ)&ハッピーニューイヤー 2019



=== EMS_buff.def by Bunta ===;
#if0
EMSに文字列を保存するテスト。
Bv (logtbl) 256 前提。
pq..145+128以降の6バイトを恒久的保存バッファとして使用
(中身は保存文字列長、EMSハンドル、EMSセグメント)
★カスタマイズが必要なのかもしれない箇所。
#endif

* Macro
50 ^NX "EMS_buff"

	;--- sample string & its length
        p="abcあdefいghiうjkelmnopqrstuvwxyz0123456789",	;<p>
        &Sn(p) l=r,						;<l>

	a=pq..145+128,			;Bv personal buffer★
					;upto +126, already used by hometext.def

	;--- save EMS info
        &Ea(1) 		a..0=r,		;EMS allocation, EMS handle 	<a..0>
        &Em(a..0) 	a..1=r,		;EMS mapping,    EMS segment	<a..1>
			a..2=l,		;strlen				<a..2>

	;--- memcopy prep
	ax=gz, si=p, cx=a..2,		;set source
	bx=a..1, di=0,			;set destination

	;--- iseg memcopy
	;str_cpy; ax,si -> bx,di, cx times

	&i("$(50,1F,53,07,F3,A4,C3)")

        &m("string <p> written on EMS; handle %d",a..0) .

;------------------------------------------------------------

51 ^NY "fromEMS"

	a=pq..145+128,			;Bv personal buffer
					;to +126, already used by hometext.def

	(ks&1)? >a			;Close EMS page by shift

        &Em(a..0)			;EMS mapped with handle (a..0)

	;--- memcopy prep
        ax=a..1, si=0, cx=a..2,		;set source
        bx=gz, di=pr,			;set destination

	;--- iseg memcopy
	;str_cpy; ax,si -> bx,di, cx times

	&i("$(50,1F,53,07,F3,A4,C3)")

        &m("%*s, read from EMS",a..2,pr) .		;hiro Vz


 :a 	;--- Del EMS buffer ---

        &Ef(a..0)			;close EMS
        &m("EMS buffer closed. Handle %d",a..0) .

*


    - No.8638 一括表示へ   -              [ 返信 ]    [引用無し] pre


- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
▼ 8638.EMSテストマクロ - 文太 18/12/28-23:50
  ┣8639.Re: EMSテストマクロ - konno 18/12/29-21:59
  ┃┗8641.Re^2: EMSテストマクロ - 文太 18/12/30-12:09
  ┃ ┗8643.Re^3: EMSテストマクロ - konno 18/12/30-14:43
  ┃  ┗8646.Re^4: EMSテストマクロ - 文太 18/12/30-15:41
  ┗8647.EMS_buff.def (0.5) - 文太 18/12/30-23:39

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)   [引用無し]
おなまえ 
Eメール 
タイトル 
メッセージ auto soft pre(図表、プログラム) ※折り返さずに改行を入れてね
 参照先 
 暗証キー (英数字で8文字以内)
 プレビュー          

- 以下のフォームから自分の投稿記事を修正・削除することができます -
   処理   記事No   暗証キー
    [ページトップへ] [管理用]