ザビタン開発日記
2009 | 01
2008 | 01 | 02 | 06 | 12
2007 | 10 | 11 | 12
1月 13 (日曜日) 2008
14:35
ジョリーと僕とで半分こ!(プッチーの分は?)
 
まいったなぁ〜。引数が多すぎ・・・・
そこでこうしてみました。

api_blockmove(int win,short x0,short y0,short xw,short yh,short xx0,short yy0,int blankcolor);

アセンブラで渡される値
EAX win
EBX x0 & y0
ECX xw & yh
EBP xx0 & yy0
ESI blankcolor

shortは0xFFFFまで。つまり65535まで。ウィンドゥの座標でこんな値はまあ、
将来は当たり前になるかもしれないけどね。少なくとも今&BBLでは
10年はいらないだろうから・・・(^^;

さーて・・・これ、実装ではどーすりゃいいんだろう。これでいいのかなぁ・・・


PUSHFD
PUSH ESI
PUSH EDI
PUSH EBP
PUSH EBX


MOV EDX,123
MOV EAX,[ESP + 24] ; win


MOV EBX,[ESP + 28] ; x0
MOV EDI,[ESP + 32] ; y0
SHL EBX,16
AND EDI,0x0000FFFF
ADD EBX,EDI ; x0 & y0

MOV ECX,[ESP + 36] ; xw
MOV EDI,[ESP + 40] ; yh
SHL ECX,16
AND EDI,0x0000FFFF
ADD ECX,EDI ; xw & yh

MOV EBP,[ESP + 44] ; xx0
MOV EDI,[ESP + 48] ; yy0
SHL EBP,16
AND EDI,0x0000FFFF
ADD EBP,EDI ; xx0 & yy0

MOV ESI,[ESP + 52] ; blankcolor

INT 0x40


POP EBX
POP EBP
POP EDI
POP ESI
POPFD

よおぉぉっしゃぁ!!!!!
これでどーーだぁ!!!!

(EFLAGSを退避させてるのはシフト命令で影響が出るそうなので念のため・・・)
 
30日を過ぎたBlogにはコメントできません。

Referer  (1)
12:16
空間は存在しない! あるのは物質だけだ
 
いくつかのAPIを実装してて考えたこと・・・・・

たとえばblockmove。ある領域をドンと別の場所に移動させるAPI
なんだけど、じゃ、移動した後はどーするか??

単純にあるパラメータを置いてその指定色で塗りつぶす・・・
まぁこれでもいいっちゃぁいいんだけど・・・

例えばだけど、シートのクライアント領域に「標準色」を
設けるってのはどーだろ?

・・・うーん。でもおんなじことかなぁ・・・


おぉ!いいこと思いついた!

「塗りつぶし」の引数を設ける。それによって空いてしまった
空間は塗りつぶすことができる。

で!

これを-1とかに指定すると、コピー元になにもしない。
つまり、blockcopyが成り立つじゃないか!!! (^^


・・・げえぇぇぇぇぇ!!!
大問題発生! レジスタが足りない!!!!
今ってこういう状態。

api_blockmove(int win,int x0,int y0,int xw,int yh,int xx0,int yy0,int blankcolor);

引数がええと・・・8つ・・・
EAX,ECX,EBX,ESI,EDI,EBP・・・足りねぇ〜!!!!!





 
30日を過ぎたBlogにはコメントできません。

Referer  (1)
(1) 

PopnupBlog V3 Denali created by Bluemoon inc.