ザビタン開発日記
2009 | 01
2008 | 01 | 02 | 06 | 12
2007 | 10 | 11 | 12
1月 22 (火曜日) 2008
23:39
バカ貴族
 
おぉっとぉ!



gviewが思ったよりツルツルっといったぞ!? (^^



・・・さて残るは・・・



まーだちょっとグレー問題が解決しないんだよなぁ・・・

ちょっとsheet_updown関数を見直さないとだめかなぁ・・・



リビジョン126
 
name: @Guest  Comment:
Referer  (2)
23:16
あぶないバカ
 
よーーっし!

できたできた。



つーか、まだ手を入れてないアプリ残ってたのね・・・



あとはええと・・・gviewだけ・・・・かな?(こんどこそだいじょぶかな)
 
name: @Guest  Comment:
Referer  (2)
15:20
代表取締役バカ
 
tviewをなんとか直してと・・・

mmlplayもサクっと・・・・



って、ちょっとまって???

そもそも、なんで「古いまま直していない」とは言え、画面がぶっとんじゃうの?



APIからopenwinやらboxfillやらが呼ばれた場合。たとえばそのパラメータ

が異常な数値だったとしても、その程度でおかしくなっちゃう(アプリが画面を壊せる)

ってのは、根本的にまずいしおかしいじゃん!??



ええと・・・まだ手をつけていないmmlplay。openwinは・・・



win = api_openwin(winbuf, 256, 112, -1, "mmlplay");



こうなってる。はりぼて本来の仕様。オイラが親切したのが・・・



int api_openwin( int xsiz, int ysiz, int col_inv, char *title,int value);



こうなっている。うーーん。ノーマルの状態だとwinbuf(ポインタ)が指定されているから多分、

本来は 0xなにがしという32ビットのアドレスが渡されてるんだなぁ。

オイラの仕様ではこれは横方向のドット数の指定だから、当然すんごいことになると・・・



なるほどなぁ。じゃ、各値を実行前にチェックさせればいいのかな・・・
 
name: @Guest  Comment:
Referer  (3)
1月 20 (日曜日) 2008
21:48
まずはタスクバーグレー問題・・・
 
えーっと。これはたぶん、原因はオイラが新設した第二シートの

処理が悪いんだろうなぁ。えーっと・・・どこでやってたっけ・・・



うーむ。異常状態を観察してみると、なんらかのアプリを起動し、

それを終了させた後にこの症状が出るようだ。



アプリの終了処理の後はと・・・・bootpack内だな。



そうだ! 各ウィンドゥに「現在の自分の高さ」を表示させてみたらわかるかな??



うーん。だめかぁ。マウスとかは個々に大掛かりに弄らないといけないから面倒になっちゃうなぁ・・・



んんん? これかな???

bootpac内でウインドゥが閉じられた時の制御をしてる部分。



if (key_win != 0 && key_win->flags == 0) { /* ウィンドウが閉じられた */

if (shtctl->top == 1) { /* もうマウスと背景しかない */

key_win = 0;

} else {

key_win = shtctl->sheets[shtctl->top - 1];

keywin_on(key_win);

}

}



まず、そもそも、BBLではマウス以外にシステムシートがあるんだから、マウスと背景しかないという場合の処理はこのままじゃおかしい。

ええと・・・・





 
name: @Guest  Comment:
Referer  (6)
21:34
12の悪いクセ
 
げげーー!



それどころじゃねーじゃん!

まず、インベーダーを起動して一旦終了する。

するとなぜかコンソールにヘンな文字のゴミが・・・( アンダースコアが入る)



さらにもう一回起動させると、なぜか最前面に回ってこないぞ!?



そんでもってタスクバーがリフレッシュされていない状態でグレーに

塗りつぶされている。



そして極めつけ!

TVIEWを起動するとなにやらエライことに・・・・・



クソー。さすがにこれはまずいなぁ。

バグ潰しが先決か・・・
 
name: @Guest  Comment:
Referer  (1)
21:29
ブライシンクロンマキシム!
 
さてさて。ウィンドゥの可変化。どうしたらええじゃろ?



おっとその前に。

サイズが変化した場合の挙動って、Windowsとか見てると何種類かが

あるのがわかるね。



  1. サイズが変化した時、クライアント領域が拡大縮小されるもの。メディアプレイヤーの画面とかがそう

  2. 内容そのものにまったく変化がない。単に見えてるか隠れてるかというだけ。スクロールバーが出現。メモ帳とかがこの部類かな?

  3. 上と似ているが左右だけとか上下だけとかが新しいサイズに合わせて変化。うーん。うまくいえないなぁ。コンソールとかPuttyとかがこの部類かな





うーーーん・・・どれから手を付けようかな。

とりあえず3番辺りをやってみるか・・・テキストビューアーの

改造という形でどうだろう。

 
name: @Guest  Comment:
1月 18 (金曜日) 2008
13:31
ザムザ復活!
 
・・・あれ〜?



「在来のインベーダの移植は無理!」

と切って捨てて新しいのを作ってたんだけど・・・・



なんか数箇所弄ったら動いてしまいましたとさ! (^^;

(ラッキー! 実はちょっとインベーダ作りに飽きてたので)



そんなわけで新インベーダの開発は一旦凍結〜。



・・・つーことで、とりあえずははりぼて付属のアプリは

一通り新APIで動くってところかな。

(実はまだスクロールAPIがハンパなんだけど・・・)



横道はこれくらいにして、ウィンドゥ可変に戻らねば・・・





リビジョン124
 
name: @Guest  Comment:
Referer  (1)
1月 17 (木曜日) 2008
13:07
ドッキングアウトだぁ〜!! (了解!)
 
えっと。開発日記じゃないんですがね。



このサイトではBWikiというPukiWiki派生のモジュールを使っているんですが

ちょっと実験的に新しいのを使ってみようかなぁと。



簡単に複数設置が出来そうなのがミソでしょうかねぇ。

ゴッチャゴチャに溜まりまくってしまったページ達をいくつかに

分離できそうな感じなので。(まだわかりませんが)





・・・・う〜む・・・・・・

ちょっとこの新しいモジュール、まだまだ問題が多いなぁ。

そんなわけで一時撤退・・・・(実験は続けるけどね)
 
name: @Guest  Comment:
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を退避させてるのはシフト命令で影響が出るそうなので念のため・・・)
 
name: @Guest  Comment:
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・・・足りねぇ〜!!!!!











 
name: @Guest  Comment:
Referer  (1)
(1) 

PopnupBlog V3 Denali created by Bluemoon inc.