サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
7: 2009-11-17 (火) 12:08:15 ソース 現: 2024-01-08 (月) 12:58:56 k-tan ソース
Line 1: Line 1:
-* wiki版のintroシリーズ no.0000+TITLE:x 
 +* wiki版のintroシリーズ no.0000 [#da6ae250]
-(by [[K]], 2004.12.13) -(by [[K]], 2004.12.13)
-これはC言語でもASKAでもnaskでもとにかくごちゃまぜでintroしてしまおうというこころみ。 -これはC言語でもASKAでもnaskでもとにかくごちゃまぜでintroしてしまおうというこころみ。
Line 6: Line 7:
-質問とか感想とかはこめんと欄にレッツゴー(ページの一番下にあります)。 -質問とか感想とかはこめんと欄にレッツゴー(ページの一番下にあります)。
-*** hello, world+*** hello, world [#w4bfabe9]
//-C版:"helloc4.c" [osa_dir2では 509バイト] //-C版:"helloc4.c" [osa_dir2では 509バイト]
-C版:"helloc4.c" [tolset08では 449バイト] -C版:"helloc4.c" [tolset08では 449バイト]
 /* "helloc4.c":helloをC言語で記述した例 */  /* "helloc4.c":helloをC言語で記述した例 */
 /*  stack:4k malloc:1k */  /*  stack:4k malloc:1k */
 + 
 #include <guigui00.h>  #include <guigui00.h>
 + 
 #define AUTO_MALLOC  0  #define AUTO_MALLOC  0
 + 
 void OsaskMain()  void OsaskMain()
 {  {
     struct LIB_WINDOW *window;      struct LIB_WINDOW *window;
     struct LIB_TEXTBOX *wintitle, *textbox;      struct LIB_TEXTBOX *wintitle, *textbox;
 + 
     /* ライブラリの初期化(必ず最初にやらなければならない) */      /* ライブラリの初期化(必ず最初にやらなければならない) */
     lib_init(AUTO_MALLOC);      lib_init(AUTO_MALLOC);
 + 
     /* ウィンドウのオープン */      /* ウィンドウのオープン */
     window = lib_openwindow(AUTO_MALLOC, 0x0200, 136, 48);      window = lib_openwindow(AUTO_MALLOC, 0x0200, 136, 48);
 + 
     /* ウィンドウタイトル用のテキストボックスをオープン */      /* ウィンドウタイトル用のテキストボックスをオープン */
     wintitle = lib_opentextbox(0x1000, AUTO_MALLOC, 0,  7, 1,  0,  0, window, 0x00c0, 0);      wintitle = lib_opentextbox(0x1000, AUTO_MALLOC, 0,  7, 1,  0,  0, window, 0x00c0, 0);
 + 
     /* "hello, world"を表示するためのテキストボックスをオープン */      /* "hello, world"を表示するためのテキストボックスをオープン */
     textbox  = lib_opentextbox(0x0000, AUTO_MALLOC, 0, 12, 1, 16, 16, window, 0x00c0, 0);      textbox  = lib_opentextbox(0x0000, AUTO_MALLOC, 0, 12, 1, 16, 16, window, 0x00c0, 0);
 + 
     /* ウィンドウタイトルを表示 */      /* ウィンドウタイトルを表示 */
     lib_putstring_ASCII(0x0000, 0, 0, wintitle, 0, 0, "helloc4");      lib_putstring_ASCII(0x0000, 0, 0, wintitle, 0, 0, "helloc4");
 + 
     /* メッセージを表示 */      /* メッセージを表示 */
     lib_putstring_ASCII(0x0000, 0, 0, textbox,  0, 0, "hello, world");      lib_putstring_ASCII(0x0000, 0, 0, textbox,  0, 0, "hello, world");
 + 
     /* 終了 */      /* 終了 */
     lib_waitsignal(0x0001, 0, 0);      lib_waitsignal(0x0001, 0, 0);
 }  }
 + 
//-ASKA版:"helloa4.ask" [osa_dir2では 171バイト] //-ASKA版:"helloa4.ask" [osa_dir2では 171バイト]
-ASKA版:"helloa4.ask" [tolset08では 136バイト] -ASKA版:"helloa4.ask" [tolset08では 136バイト]
Line 49: Line 50:
 segment CODE(USE32, PARA); default(code == CODE); asmout("[FILE 'helloa4.ask']");  segment CODE(USE32, PARA); default(code == CODE); asmout("[FILE 'helloa4.ask']");
 asmout("GLOBAL _OsaskMain");  asmout("GLOBAL _OsaskMain");
 + 
 void _OsaskMain()  void _OsaskMain()
 {  {
     asmout("MOV EBX,data.funcs"); CALL(0xc7, 0);      asmout("MOV EBX,data.funcs"); CALL(0xc7, 0);
 }  }
 + 
 asmout("[SECTION .data]");  asmout("[SECTION .data]");
 + 
 void data()  void data()
 {  {
Line 69: Line 70:
     DD(0x0018, 0x0001, 0, 0); /* lib_waitsignal */      DD(0x0018, 0x0001, 0, 0); /* lib_waitsignal */
     DD(0x0000); /* end of functions */      DD(0x0000); /* end of functions */
 + 
     ALIGNB(8);      ALIGNB(8);
 work:  work:
Line 82: Line 83:
     RESB(96);  /* 12x1文字分 (12 * 1 * 8) */      RESB(96);  /* 12x1文字分 (12 * 1 * 8) */
 }  }
 + 
//-nask版:"hellon4.nas" [osa_dir2では 170バイト] //-nask版:"hellon4.nas" [osa_dir2では 170バイト]
Line 88: Line 89:
 ; "hellon4.nas":helloをnaskで記述した例  ; "hellon4.nas":helloをnaskで記述した例
 ;  stack:4k malloc:0k  ;  stack:4k malloc:0k
 + 
 [FORMAT "WCOFF"]  [FORMAT "WCOFF"]
 [INSTRSET "i486p"]  [INSTRSET "i486p"]
Line 102: Line 103:
     MOV EBX,funcs      MOV EBX,funcs
     CALL 0xc7:0      CALL 0xc7:0
 + 
 [SECTION .data]  [SECTION .data]
     ALIGNB 4      ALIGNB 4
Line 114: Line 115:
     DD 0x0018, 0x0001, 0, 0 ; lib_waitsignal      DD 0x0018, 0x0001, 0, 0 ; lib_waitsignal
     DD 0x0000 ; end of functions      DD 0x0000 ; end of functions
 + 
     ALIGNB 8      ALIGNB 8
 work:  work:
Line 124: Line 125:
 textbox:  textbox:
     RESB  64 + 12 * 1 * 8; テキストボックス構造体(12x1文字分)      RESB  64 + 12 * 1 * 8; テキストボックス構造体(12x1文字分)
 + 
- +*** 説明 [#c1c5144f]
-*** 説明+
-概要: -概要:
--このプログラムは、ウィンドウを一つ開き、そのウィンドウに"hello, world"と表示するだけのプログラムです。 --このプログラムは、ウィンドウを一つ開き、そのウィンドウに"hello, world"と表示するだけのプログラムです。
Line 180: Line 181:
-*** まとめ+*** まとめ [#g11cfc5e]
-これで好きな大きさのウィンドウを開き、ウィンドウにテキストボックスを貼り付けて、好きな色で文字をかけるようになったはずです。まだキー入力もタイマー制御もできないので、凝ったことはできませんが。 -これで好きな大きさのウィンドウを開き、ウィンドウにテキストボックスを貼り付けて、好きな色で文字をかけるようになったはずです。まだキー入力もタイマー制御もできないので、凝ったことはできませんが。
-プログラムの終了のさせ方も分かったはずです。「面倒だから無限ループ」なんてしないで、ちゃんとlib_waitsignalしてください(見た目は同じようなものですが、負荷が大きく違いますから)。 -プログラムの終了のさせ方も分かったはずです。「面倒だから無限ループ」なんてしないで、ちゃんとlib_waitsignalしてください(見た目は同じようなものですが、負荷が大きく違いますから)。
-*** おまけ+*** おまけ [#ha341b52]
-ここまではどれもただ芸もなく固定的なパラメータでAPIを呼び出しているだけですが、次(no.0001)からはパラメータに変数を使ったり、サブルーチンを作ったりします。 -ここまではどれもただ芸もなく固定的なパラメータでAPIを呼び出しているだけですが、次(no.0001)からはパラメータに変数を使ったり、サブルーチンを作ったりします。
-続編はこちら → [[guide/wintro0001]] -続編はこちら → [[guide/wintro0001]]
Line 191: Line 192:
--http://k.osask.jp/wiki/index.php?nask/guide000 --http://k.osask.jp/wiki/index.php?nask/guide000
-* こめんと欄+* こめんと欄 [#i3eab171]
-tolset08にあわせて修正。 -- [[K]] SIZE(10){2005-01-28 (金) 23:21:52} -tolset08にあわせて修正。 -- [[K]] SIZE(10){2005-01-28 (金) 23:21:52}
#comment #comment

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。