Archive for the ‘OSAkkie’ Category

ご無沙汰

金曜日, 12月 15th, 2006

 すっかりご無沙汰になってしまいましたが、ぼちぼち開発を再開しています。
 多色対応は、とりあえず出来上がりました。24bitに対応できるように、バッファはint型にしてみましたが、24bitでの動作確認はしていません(それでいいのか?!)。
 多色対応にあたって、アプリの書きやすさのためにいくつかAPIを追加し、OSAkkieのほぼすべてのアプリでそれを使用しているため、他OSとの互換性はなくなっています。従来のAPIの互換性はキープしてありますが、多色で描画をする場合は、api_をosak_に置き換えて、16進数コードで色を指定することで可能になります。

 現在は、bootpack.c内のマウスのメイク・ブレイクの実装、ウィンドウ最小化の実装に取り組んでいます。
 マウスのメイク・ブレイクはほぼ出来上がりました。ついでにネストが異様に深い問題を解決して、ソースもすっきりです。マウスのメイク・ブレイクが分かることで、ウィンドウを閉じるときにマウスのメイクが来た時点ですぐに閉じるのではなく、ブレイクまで待ってから閉じられるようになりました。
 最小化は仕様に悩み気味ですが、うまく実装していけたらいいなぁと思っています。

 そういえば、osakkie.sysのサイズが50KBを超えました。なんとなくくやしいので、うまくサイズを縮められそうなところがあったら改善してみようと思います。例えば、ボタンの描画あたりで、*と@で表現するんじゃなくて、8bit色コードで表現するとかして、まとめて関数で処理できるようにしたりとか。

多色対応

日曜日, 11月 26th, 2006

 OSC2006-Okinawaには間に合いませんが、多色対応に挑戦中です。
 昨日は、はりぼて友の会のサンプルを見ながら実装を進めていたのですが、サンプルは1つの関数が8bitカラーと16bitカラーの2つに分かれてしまっていてなんだかもったいない(もっと「ちまっと」まとまりそうな)気がしました。色を定義していたCOL8_??????も16bit版ができて無駄っぽく感じたので、うまく1つにまとまるように、ついでに自動判別がたにしようとしたのですが、ポインタ周りで壮大な勘違いをしてしまい、また1からやり直しになってしまいました。

 一つできたまとも(?)な実装は、asmhead.nasでVBEMODEを第2候補(第3候補まであったが、いらないと思ったのでやめた)まで選べるようにしたことです。……16ビットモードに切り替え失敗したら8ビットモードで開いてもらうような感じにできます。まぁ切り替え失敗なんてあんまりないとは思いますが。両方だめだった場合は320*200モードになります。

メニューアプリに向けて

金曜日, 11月 17th, 2006

 はりぼて友の会のAPI割り当てが決まってきたので、一足早くAPI番号を変更しました。osakkie_gettickcountとosakkie_langmodeははりぼて友の会共通API化するため、OSAkkieAPIからいなくなりました。うーん、寂しいですね?(笑)。ついでに、osakkie_putministrwinは長すぎるので、osak_putministrwinに変更しました。うむむ、大して変わってないですね……。
 今回の変更をまとめてみました。ちなみに、0x4000と0x4001は、OSAkkieの情報を返すAPIか何かを入れるために予約しています。
osakkie_gettickcount(0x1000)→tomo_gettick(0x1001)
osakkie_langmode(0x1001)→tomo_setlang(0x1003)
osakkie_putministrwin(0x1002)→osak_putministrwin(0x4002)

 さて、今日も主にメニューアプリを作っていました。アプリから別のアプリを起動するosak_exec(0x4003)というAPIを実装したり、表示に凝ってみたりしましたよ?。

ミニフォント表示API

木曜日, 11月 16th, 2006

 はりぼて友の会(http://haribote.org/)で議論中のAPI番号割り当ての件がそろそろ決まりそうです。おいらは0x00004000?0x00004FFFの間になりそうですが、その数なんと65,536個!そんなにAPIを作るようなすげーOSになるんでしょうかね……?!
 さて、今日は6×12のミニフォントを表示するAPIを実装しました。api_putstrwinをosakkie_putministrの名前でコピーしたような感じで、使い方も一緒です。ステキ!

バグつぶし

水曜日, 11月 15th, 2006

 今日はOSAkkieのバグをつぶして色々作るぞー!と張り切っていたのですが、テレビに見とれてしまい、やっと脱出してPCに向かったところで津波警報発令がきたもんですから、すっかり時間が遅くなってしまいました。ちなみに、ウチは根室市でも一番標高(?)が高い所に住んでいるので、避難したり津波におびえる心配は皆無でした。
 さて、バグつぶしですが、まずはアプリが起動しない問題から。原因は、cmd_appで圧縮ファイルに対応したときに、ファイルサイズの指定を間違えていました。凡ミスです。次はコマンド履歴にメモリの中身が出てくる問題。コレは、memman_alloc_4kした後にメモリの中身をクリアしていないのが原因でした。
 ちょっと時間があったので、起動時のコンソールのlangmodeが、ウィンドウを作る前が0、作った後が1になる(→フォントがそろわない)件について色々考えてみたのですが、どうも面倒なのであきらめました。
 その他の変更は、スタートアップスクリプトのosakkie.hsfに、壁紙を表示するように書き足しておきました。コレで、起動時に自動でマロが出てきます。やったー!

壁紙対応/langmodeいろいろ/cmdlineのバグ

火曜日, 11月 14th, 2006

 gviewとか、はりぼて友の会にアップされている壁紙対応はりぼてOSを参考に、壁紙表示機能を追加しました。
 OSAkkieでは、wallpaperコマンドで表示できるようにしてみました。「wallpaper ファイル名」で表示して、消すときは「wallpaper 0」です。形式もbmp, jpg, ico(いるのか?)の全部に対応です。

 それと、今日はlangmode周りを改造。struct TASKにlangmode0というのを追加して、アプリ起動時のlangmodeを記録しておいて、アプリで変更されて終了時には元に戻すようにしたり、アプリ強制終了時のメッセージ(task_aのlangmodeが反映される)を一時的にタスクにあわせるようにしました。日本語フォントと半角フォントで書体の違いの大きいOSAkkieにとって、langmodeの変わり目はとても気になりますからね。
 課題としては、コンソールのタイトルバーがlangmode 0になっているのをどうにかする、というところかな。

 という訳で、今日はいろいろ付け足していたんですが、気がついたら、変なバグが出来ていました。起動直後から、コマンド履歴呼び出しで文字化けしたようなものがズラズラと出てきてしまいます。
 どこかでメモリがはみ出しているんだとは思うのですが、一体どこだ……。今日はもう遅いので、これまた明日の課題ということになりそうです。

スクリーンショット

6×12フォント実装

火曜日, 11月 14th, 2006

8×16の半角フォントを応用して、念願の6×12フォントを実装してみました。makefont.exeも改造して、専用の変換ツールも作りました。0x20?0x7fまでは全部書き終わり、半角カタカナは「コ」まで書けました。結構目が疲れる作業なので、続きはまた明日に……。
で、ナオミさんの吹き出しで使ってみました。小さい!!
スクリーンショット
オマケの写真はマロです。OSAkkieにバンドル中。

読破後の改造点まとめ

日曜日, 11月 12th, 2006

自作本読破後から開発日誌設置までの改造点はこちら

・langmodeを指定するAPIを追加
 OSAkkieはlangmode 0じゃないと困るアプリが多いです。bonnoはバックスペースがうまく出ませんし、walkはOSAkkieフォントに依存したアプリなので文字化け状態になるでしょう。そこでlangmodeを指定できるAPIを追加したわけです。
 ただ、アプリが終了すると、langmodeがコンソールに引き継がれてしまうので、そこはうまく直さないといけないですね。

・ナオミさん再びシート化&吹き出し復活
 前に一度開発してみたものの、シートの上下関係の調整に失敗して、コメントアウトしていたのですが、自作本読破で再びチャレンジしてみました。今度は予定通り、ナオミさんを常に手前に置くことができました。
 吹き出しは、window.c内でmake_balloon8という関数を作って、新しいシートの上に描いています。スクリーンショットでは、その上に文字を書いてナオミさんが自己紹介をしています。
 次の目標は、右D&Dでナオミさんを移動させることです。

オマケとして、gviewでアイコンファイルを表示しています。

スクリーンショット

うおおおお読み終わったあああああ!!!!!

土曜日, 11月 11th, 2006

 つ……、ついに……、OS自作入門読み終わったああああああああ!!長かったぁぁぁぁぁぁぁ。・゚・(ノ∀`)・゚・。
 さて、ここからOSAkkieワールド炸裂で行きますよ!次々と変なものを実装していきますからね?(゚∀゚)

25日目終了。

火曜日, 10月 31st, 2006

 ついにコンソールが2つに増えましたよ?。これでおいらのヘンチクリンアプリを2つも動かせます。万歳。
 次は26日目。ウィンドウの高速移動かぁ。たしかにQEMUだと遅いですからねぇ。コレはぜひ実装したい!