2002/2/4(月) wonx-2.2 公開 mmap() を実装した.具体的には README 参照. サービス関数を追加.(デバッグ用の情報をダンプするサービス関数と, 画面描画ON/OFF制御用のサービス関数を追加) 具体的には README 参照. bios_exit() からオブジェクトのデストラクタが呼ばれるようにして, 各オブジェクトに適切な Destroy 関数を追加.オブジェクトの削除が適切に 行われるように,終了処理を全般的にチェックした. key_wait() 中にも割り込みを受け付けるように修正. (以前はキー入力しか受け付けていなかった) タイマ割り込みを一部改良.(UNIXTimer.c) wonx_include ディレクトリを wonx に名前を変更. perl へのフルパスを自動で検索して perl スクリプトの先頭に挿入するように変更. Makefile 見直し,改良. 画面描画の ON/OFF を,表示レベルによって切替えるように変更. (詳しくは README 参照) また,F9 で表示レベルを下げ,F10 で表示レベルを上げるように変更. それにあわせて,描画のON/OFF部分とキー入力イベント処理の一部見直しをした. キーの押下時にメッセージを表示するように修正. Obj ObjListData_GetPrev(ObjListData data) Obj ObjListData_GetNext(ObjListData data) を ObjListData ObjListData_GetPrev(ObjListData data) ObjListData ObjListData_GetNext(ObjListData data) に修正. Makefile に install, uninstall ターゲットを追加.challsrc.sh 修正. 2001/1/13(土) wonx-2.1 公開 パレットデータのダンプ時に,RGB値もダンプするようにした. データのダンプ部分を一部修正. perl スクリプトの行頭を,/usr/bin/perl から /usr/local/bin/perl に変更. (FreeBSD では,日本語 perl は /usr/local/bin に入るので) disp.c, libwwc.c の,キャラクタのビットマップデータ読み込み用・取得用関数で, ビットマップデータの型を unsigned char * でなく short int *, long int * などの 適切な型に修正した. WWCharacter クラスのビットマップを,uchar, ushort, ulong の union とし, WWCharacter_GetPixel() では適切な型でアクセスすることにより, ビットマップデータのエンディアンの依存性を無くした.(i386, SPARC で確認済) WWCharacter_GetPixel() の 16PACKED カラーモード時の値の取得方法を修正した. (キャラクタが左右反転表示されていたバグが解消した) F11 で10秒間停止,もしくは Ctrl-c もしくは F12 で強制終了, Ctrl-i でアイコン化の追加.(もともとあった機能だったが,忘れてたのを, 多少修正して正式サポートにした) 表示/非表示の切替えキーを p から F10 に移動.マニュアル修正. XDisplay.c:XDisplay_DrawLCDWindow() で,XColorGC_CreateFromRGB() で生成した XColorGC オブジェクトを Destroy() していないので,メモリフローしていたバグを 修正.(XColorGC_Destroy(x_color_gc) 追加) wonx_include/fcntl.h 追加.内容は,/usr/include/fcntl.h, /usr/include/sys/fcntl.h をインクルードするだけ. シリアル出力時のメッセージ(output to serial port : )の書式変更. ("" でくくるようにした) etc.c:wonx_print_character() 修正.(\", \\ などを追加) sout2str.pl 修正.(\", \\ などを追加.上記のシリアル出力時のメッセージの 書式変更にあわせて修正した) int2sint.pl, filters.pl, challsrc.sh 追加. sys2wonx.pl 変更. wonx_include/types.h の typedef unsigned short WORD; typedef unsigned long DWORD; を typedef unsigned short int WORD; typedef unsigned long int DWORD; に変更. README 修正. 2001/1/3(水) wonx-2.0 公開 カラー化対応.GCの管理用に,XColorGC クラスを追加.(XFireworks から流用した) カラー化に対応させて,transparent(透過色)の判定処理を WWPalette クラスから WWDisplay クラスに移動した. WWLCDPanel の pixel を,unsigned short int * に変更.(カラー対応) テキストフォントの格納フォーマットを変更.(WWTextFonts.c) テキスト表示で,表示時に WWDisplay_GetForegroundColor(), WWDisplay_GetBackgroundColor() を見てコピーするように修正.(WWText.c) (WWText クラス中で WWCharacter の配列を確保しているのが不要になったので, いずれ削除すること) WWDisplay クラスにボーダーカラーのパレット追加. カラー化に対応させて,その他もろもろの修正を加えた. (キャラクタデータの格納方法,テキスト表示,ボーダーカラーの処理など) display_control(), display_status() で,ボーダーカラーのビットシフトが 7 になっていたバグを修正.(8 に修正) while(1){/*none*/} での割り込み待ちループ中にも,F1 などのキー入力を受け付ける ように修正.(WonXSystem.c のタイマ割り込みのコールバック関数 WonXTimer_Callback() に,WonXDisplay_PrintData() を追加) fcntl_attention.h, filesys.h, indirect.h, oswork.h, process.h を追加. (中身はカラ,もしくは適当なファイルをインクルードするだけ) wonx_configure.h で, #ifndef _WONX_winx_configure_h_INCLUDED_ #define _WONX_wonx_configure_h_INCLUDED_ になっていたバグを修正. 2000/12/28(木) wonx-1.1 公開 _asm_*() のダミー関数を追加. FP_OFF(), FP_SEG() を,WonderWitch での割り込み設定時のコールバック関数の 設定方法にあわせて,適切に変更.(wwterm に合わせた) UNIXTimer.c:UNIXTimer_Unpause() で, ((unix_timer->pause == 1) && (unix_timer->interrupt_in_pause == 0)) だったときに unix_timer->pause--; されないバグを修正. (ポーズ中に割り込みがかからなかった場合に,アンポーズされていなかった) シリアル受信割り込み,キーボード割り込み追加.(wwterm に対応,動作確認済) UNIXSerialPort クラス追加. これにより,WonderWitch での, com_intvector.callback = (void (near *)())FP_OFF(com_handler); com_intvector.cs = _asm_inline("\tmov\tax,cs"); com_intvector.ds = _asm_inline("\tmov\tax,ds"); sys_interrupt_set_hook(SYS_INT_RECEIVEREADY, &com_intvector, &com_last_intvector); のような割り込みの設定が正しく実行されるようになった. ワーニング用に,WonX_Warning() 追加. WonX_Error() を WonX.c に移動. comm_send_string(), text_put_string(), text_put_substring() 実行時の 出力メッセージを修正. カーソル表示機能を実装.(WWCursor クラス追加)(点滅はしない.表示のみ) カーソル表示をする際に,WWDisplay_DrawLCDPanel() 内部でテキスト情報が 読める必要があるので,WonXText クラスを廃止して,WWText クラスを WWDisplay クラスのメンバに移動した. palette_get_color() 内で,WWPalette_GetMappedColors() の実行時に透明色が -1として返されることを考慮していなかったために,palette_get_color() の 戻り値がおかしな値になっていたバグを修正. キャラクタカラーパレット,LCDカラーパレットの初期値を,WonderWitch での 初期値と一致させた. サンプルとして,wwterm-b05 を追加.(Makefile に wwterm ターゲットを追加) 2000/11/23(木) wonx-1.0 公開 正式名称を Wonx から WonX に変更. MANUAL ファイルを追加. OMAKE.jpn に文章追加. 2000/11/23(木) wonx-b05 公開 シリアル通信で,標準入力からの入力の \n は \r に変換して渡すように comm.c の comm_input() を修正.([WitchFan 00462] のメール参照) 画面外へのテキスト文字の表示時に,エラー終了するのでなく, ワーニングを出して続行するように WWText_PutCharacter() を修正. (ワンべぇへの対応) wonx_include/types.h に #define _WONX_ を追加.(WONX依存にしたい部分を ソース中でくくりたいときのため) 2000/11/18(土) wonx-b04 公開 UNIXTimer.c で,コールバック関数が呼ばれるたびにコールバック関数を 設定しなおすように修正. (UNIXTimer_ON() 中に signal() を追加) (IRIX ではコール毎にコールバック関数がクリアされてしまうことへの対処) ualarm() は BSD 依存なので,alarm() を使用するように修正. UNIXTimer クラスのインターバル時間の設定の単位をマイクロ秒からミリ秒に変更. シリアル通信をサポート.(WonxSerialPort, WWSerialPort, comm.c 参照) key.c 中の printf() で,戻り値の表示の際に関数名が表示されていなかったのを 修正. 2000/11/13(月) wonx-b03 公開 ヘッダファイルを独自に作成.Wonx のみでコンパイル可能になった. libwonx.a のリンク時に Error() 関数がぶつかる可能性があるので, Wonx_Error() に変更した. bios_exit() を追加. sprite_set_char, sprite_get_char で,パレット番号が8を引いた値で 指定されていないバグを修正. disp.c の font_set_monodata(), font_set_colordata(), font_get_data(), screen_set_char(), screen_get_char(), sprite_set_data() の引数を void * から適切な型に変更. サンプルプログラムと SpeedMac を添付した. ドキュメントを追加した. 2000/11/3(金) wonx-b02 公開 割り込み処理の追加.タイマ割り込みサポート. (UNIXTimer, WWInterrupt, WWTimer, WonxSystem 追加) 割り込みサポートに合わせて,互換関数を UNIXTimer_Pause(), UNIXTimer_Unpause() でくくった. UNIXTimer, WWTimer, WonxSystem のコールバック関数などは, 割り込み特有のバグが無いか細かくチェックする必要がある. (コールバック関数中で割り込みの設定が変わってしまったり,コールバック関数から コールバック関数が呼ばれたりすることはないかどうかチェックする必要がある) 2000/10/9(月) wonx-b01 公開 テキスト表示機能の追加.(0〜127のASCII文字のみで,漢字は未対応) Wonx クラスを作成し,すべてのリソースを Wonx クラスで管理するように変更. (Wonx.x WonxP.h 参照) p を押して画面の表示/非表示を切替えたときに,LCDパネルの再描画を行うように 改良. コンパイルオプションに -Wall を追加. disp.c で重複した処理をしている関数の処理部分をまとめた. 2000/10/5(木) wonx-a07 公開 WWLCDPanel にビットマップデータを2枚持たせ,一度描画したビットマップは 描画しないように修正.Xサーバの負荷を減らした. (WWLCDPanel関連と,XDisplay.c の XDisplay_DrawLCDWindow() を改良) (XDisplay.c の XDisplay_DrawLCDWindow() には,無駄な malloc() があるので, そのうち改良が必要) wonx-a05 と wonx-a06 の WWDisplay.c (WWDisplay_DrawScreen()) の 両方を試した結果,wonx-a05 のほうが高速だったので,wonx-a05 のほうを 使用することにした. 2000/10/4(水) wonx-a06 公開 WWDisplay_DrawScreen() のアルゴリズムを大幅に修正. たいして高速にならなかった.X サーバの描画がホットスポットになっていると 思われるので,描画量を減らす努力が必要. 2000/10/3(火) wonx-a05 公開 XDisplay_DrawLCDWindow() を修正.無駄な計算をループ外に出した. WWDisplay_DrawScreen() を修正.無駄な計算をループ外に出した. ホットスポットを調べたら,Xの描画部分(XDisplay.c の XDisplay_DrawLCDWindow()の ループ部分)がホットスポットになっていたので,ピクセルごとに配列を 作って,描画速度を上げた. 2000/9/30(土) wonx-a04 公開 XDisplay.c 内の表示ルーチンを改良し,描画を多少高速にした. WWLCDPanel のデータの格納方法を変更した. (2ピクセルで1バイトだったのを,1ピクセルで1バイトを割り当てるようにした) (高速化のためだが,将来のカラー対応(241色?)のことも考えた) WonxDisplay_Sync() を追加.get 系の関数内での無駄な描画を減らした. スプライトウインドウ機能を実装.(未テスト) 時刻関連の関数を実装.(timer.c) スプライトの優先順位を修正.(「番号が若いもののほうが優先」に修正した) 2000/9/28(木) wonx-a03 公開 screen2_set_window()の表示範囲を修正. マニュアルの screen2_set_window() の説明には「表示領域の横幅と縦幅」と 書いてあるが,実際には「表示領域の横幅+1と縦幅+1」で動作する みたい?(未確認)なので,-1 しなくてよい? もしくは,WonderWitch での実際の動作は, ex = sx + WWScreen_GetDrawWidth( screen); でなく ex = WWScreen_GetDrawWidth( screen); なのかもしれない. スプライトの有効/無効を実装した. LCDカラーマップ,パレット,キャラクター,スプライトのデータダンプ機能を実装. 関数呼び出し時の表示メッセージを改良. 2000/9/27(水) Wonx-a02 公開 テキスト表示関連の関数を実行したときに,(あいかわらず文字は表示されないが) せめてターミナルに文字列を出力するようにした. スクリーン2のウインドウ機能を実装した. 2000/9/26(火) Wonx-a01 公開