9: 2010-04-09 (Fri) 17:54:51 jsgfsvcd(jsgfsvcd)[oEIME2Rg9Fo]  |
Cur: 2024-01-08 (Mon) 12:58:56 k-tan  |
| | /* "colorc1.c":colorをC言語で記述した例 */ | | /* "colorc1.c":colorをC言語で記述した例 */ |
| | /* stack:4k malloc:2k */ | | /* stack:4k malloc:2k */ |
| | + | |
| | #include <guigui00.h> | | #include <guigui00.h> |
| | #define AUTO_MALLOC 0 | | #define AUTO_MALLOC 0 |
| | + | |
| | void setdec2(const int i, char *s); | | void setdec2(const int i, char *s); |
| | + | |
| | void OsaskMain() | | void OsaskMain() |
| | { | | { |
| | int i; | | int i; |
| | static char msg[] = "color 0"; | | static char msg[] = "color 0"; |
| | + | |
| | /* ライブラリ初期化 */ | | /* ライブラリ初期化 */ |
| | lib_init(AUTO_MALLOC); | | lib_init(AUTO_MALLOC); |
| | + | |
| | /* ウィンドウのオープン */ | | /* ウィンドウのオープン */ |
| | window = lib_openwindow(AUTO_MALLOC, 0x0200, 20 * 8, 8 * 16); | | window = lib_openwindow(AUTO_MALLOC, 0x0200, 20 * 8, 8 * 16); |
| | textbox = lib_opentextbox(0x0001, AUTO_MALLOC, 0, 20, 8, 0, 0, window, 0x00c0, 0); | | textbox = lib_opentextbox(0x0001, AUTO_MALLOC, 0, 20, 8, 0, 0, window, 0x00c0, 0); |
| | lib_putstring_ASCII(0x0000, 0, 0, wintitle, 0, 0, "colorc1"); | | lib_putstring_ASCII(0x0000, 0, 0, wintitle, 0, 0, "colorc1"); |
| | + | |
| | /* メインルーチン */ | | /* メインルーチン */ |
| | for (i = 0; i < 16; i += 2) { | | for (i = 0; i < 16; i += 2) { |
| | lib_putstring_ASCII(0x0000, 10, i / 2, textbox, i + 1, 0, msg); | | lib_putstring_ASCII(0x0000, 10, i / 2, textbox, i + 1, 0, msg); |
| | } | | } |
| | + | |
| | /* 終了 */ | | /* 終了 */ |
| | lib_waitsignal(0x0001, 0, 0); | | lib_waitsignal(0x0001, 0, 0); |
| | } | | } |
| | + | |
| | void setdec2(const int i, char *s) | | void setdec2(const int i, char *s) |
| | /* 注意:このルーチンでは、0~99までしか扱えない */ | | /* 注意:このルーチンでは、0~99までしか扱えない */ |
| | return; | | return; |
| | } | | } |
| | + | |
| | -ASKA版:"colora1.ask" [tolset08では 210バイト] | | -ASKA版:"colora1.ask" [tolset08では 210バイト] |
| | //-ASKA版:"colora1.ask" [osa_dir2では 239バイト] | | //-ASKA版:"colora1.ask" [osa_dir2では 239バイト] |
| | segment CODE(USE32, PARA); default(code == CODE); asmout("[FILE 'colora1.ask']"); | | segment CODE(USE32, PARA); default(code == CODE); asmout("[FILE 'colora1.ask']"); |
| | asmout("GLOBAL _OsaskMain"); | | asmout("GLOBAL _OsaskMain"); |
| | + | |
| | void setdec2(); /* ALをDS:ESIに書き込む */ | | void setdec2(); /* ALをDS:ESIに書き込む */ |
| | + | |
| | void _OsaskMain() | | void _OsaskMain() |
| | { | | { |
| | asmout("MOV EBX,data.init"); CALL(0xc7, 0); | | asmout("MOV EBX,data.init"); CALL(0xc7, 0); |
| | + | |
| | unsigned char i == AL, x == CL, y == CH; | | unsigned char i == AL, x == CL, y == CH; |
| | i = 0; | | i = 0; |
| | i++; | | i++; |
| | } while (i < 16); | | } while (i < 16); |
| | + | |
| | asmout("MOV EBX,data.sleep"); CALL(0xc7, 0); | | asmout("MOV EBX,data.sleep"); CALL(0xc7, 0); |
| | } | | } |
| | + | |
| | void setdec2() | | void setdec2() |
| | { | | { |
| | return; | | return; |
| | } | | } |
| | + | |
| | asmout("[SECTION .data]"); | | asmout("[SECTION .data]"); |
| | + | |
| | void data() | | void data() |
| | { | | { |
| | 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: |
| | RESB(1280); /* 20x8文字分 (20 * 8 * 8) */ | | RESB(1280); /* 20x8文字分 (20 * 8 * 8) */ |
| | } | | } |
| | + | |
| | | | |
| | -nask版:"colorn1.nas" [tolset08では 209バイト] | | -nask版:"colorn1.nas" [tolset08では 209バイト] |
| | ; "colorn1.nas":colorをnaskで記述した例 | | ; "colorn1.nas":colorをnaskで記述した例 |
| | ; stack:4k malloc:0k | | ; stack:4k malloc:0k |
| | + | |
| | [FORMAT "WCOFF"] | | [FORMAT "WCOFF"] |
| | [INSTRSET "i486p"] | | [INSTRSET "i486p"] |
| | [BITS 32] | | [BITS 32] |
| | [FILE "colorn1.nas"] | | [FILE "colorn1.nas"] |
| | + | |
| | [SECTION .text] | | [SECTION .text] |
| | GLOBAL _OsaskMain | | GLOBAL _OsaskMain |
| | + | |
| | _OsaskMain: | | _OsaskMain: |
| | MOV EBX,init | | MOV EBX,init |
| | MOV EBX,sleep | | MOV EBX,sleep |
| | CALL 0xc7:0 | | CALL 0xc7:0 |
| | + | |
| | setdec2: | | setdec2: |
| | PUSH ECX | | PUSH ECX |
| | POP ECX | | POP ECX |
| | RET | | RET |
| | + | |
| | ; .で始まるラベルはローカルラベル。 | | ; .で始まるラベルはローカルラベル。 |
| | ; ローカルラベルは、次のグローバルラベル宣言までが有効範囲。 | | ; ローカルラベルは、次のグローバルラベル宣言までが有効範囲。 |
| | + | |
| | [SECTION .data] | | [SECTION .data] |
| | ALIGNB 4 | | ALIGNB 4 |
| | 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: |
| | textbox: | | textbox: |
| | RESB 64 + 20 * 8 * 8; テキストボックス構造体(20x8文字分) | | RESB 64 + 20 * 8 * 8; テキストボックス構造体(20x8文字分) |
| | + | |
| | | | |
| | *** 説明 [#n1fba734] | | *** 説明 [#n1fba734] |
| | * こめんと欄 [#s8db1e95] | | * こめんと欄 [#s8db1e95] |
| | -tolset08にあわせて修正。 -- [[K]] SIZE(10){2005-01-29 (土) 15:34:36} | | -tolset08にあわせて修正。 -- [[K]] SIZE(10){2005-01-29 (土) 15:34:36} |
| - | - YIJUQZ <a href="http://tvrwiadrjdzj.com/">tvrwiadrjdzj</a>, [url=http://ayosmzpvwxmv.com/]ayosmzpvwxmv[/url], [link=http://lvtovcvrbfom.com/]lvtovcvrbfom[/link], http://vyvkoltjziwa.com/ -- ''jsgfsvcd'' &new{2010-04-09 (金) 17:54:50}; | |
| | | | |
| - | #comment | + | //#comment |