Rev 147 | Rev 485 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 147 | Rev 317 | ||
---|---|---|---|
1 | ; Author: M. Lisovin |
1 | ; Author: M. Lisovin |
2 | ; Compile with FASM for Menuet |
2 | ; Compile with FASM for Menuet |
3 | ; |
3 | ; |
4 | 4 | ||
5 | use32 |
5 | use32 |
6 | 6 | ||
7 | org 0x0 |
7 | org 0x0 |
8 | 8 | ||
9 | db 'MENUET01' ; 8 byte id |
9 | db 'MENUET01' ; 8 byte id |
10 | dd 0x01 ; header version |
10 | dd 0x01 ; header version |
11 | dd START ; start of code |
11 | dd START ; start of code |
12 | dd I_END ; size of image |
12 | dd I_END ; size of image |
13 | dd 0x1000 ; memory for app |
13 | dd 0x1000 ; memory for app |
14 | dd 0x1000 ; esp |
14 | dd 0x1000 ; esp |
15 | dd 0x0 , 0x0 ; I_Param , I_Icon |
15 | dd 0x0 , 0x0 ; I_Param , I_Icon |
16 | 16 | ||
17 | include 'lang.inc' |
17 | include 'lang.inc' |
18 | include 'macros.inc' |
18 | include 'macros.inc' |
19 | 19 | ||
20 | START: ; start of execution |
20 | START: ; start of execution |
21 | 21 | red: |
|
22 | call draw_window |
22 | call draw_window |
23 | 23 | ||
24 | still: |
24 | still: |
25 | 25 | ||
26 | mov eax,10 ; wait here for event |
26 | mov eax,10 ; wait here for event |
27 | int 0x40 |
27 | int 0x40 |
28 | 28 | ||
29 | cmp eax,1 ; redraw request ? |
29 | cmp eax,1 ; redraw request ? |
30 | je red |
30 | je red |
31 | cmp eax,2 ; key in buffer ? |
31 | cmp eax,2 ; key in buffer ? |
32 | je key |
32 | je key |
33 | cmp eax,3 ; button in buffer ? |
33 | cmp eax,3 ; button in buffer ? |
34 | je button |
34 | je button |
35 | 35 | ||
36 | jmp still |
36 | jmp still |
37 | - | ||
38 | red: ; redraw |
- | |
39 | call draw_window |
- | |
40 | jmp still |
- | |
41 | 37 | ||
42 | key: ; key |
38 | key: ; key |
43 | mov eax,2 ; just read it and ignore |
39 | mov eax,2 ; just read it and ignore |
44 | int 0x40 |
40 | int 0x40 |
45 | mov [keyid],ah |
41 | mov [keyid],ah |
46 | call draw_window |
42 | call draw_window |
47 | jmp still |
43 | jmp still |
48 | 44 | ||
49 | button: ; button |
45 | button: ; button |
50 | mov eax,17 ; get id |
46 | mov eax,17 ; get id |
51 | int 0x40 |
47 | int 0x40 |
52 | 48 | ||
53 | cmp ah,1 ; button id=1 ? |
49 | cmp ah,1 ; button id=1 ? |
54 | jne noclose |
50 | jne noclose |
55 | 51 | ||
56 | mov eax,-1 ; close this program |
52 | or eax,-1 ; close this program |
57 | int 0x40 |
53 | int 0x40 |
58 | noclose: |
54 | noclose: |
59 | 55 | ||
60 | jmp still |
56 | jmp still |
61 | 57 | ||
62 | 58 | ||
63 | 59 | ||
64 | 60 | ||
65 | ; ********************************************* |
61 | ; ********************************************* |
66 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
62 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
67 | ; ********************************************* |
63 | ; ********************************************* |
68 | 64 | ||
69 | 65 | ||
70 | draw_window: |
66 | draw_window: |
71 | 67 | ||
72 | 68 | ||
73 | mov eax,12 ; function 12:tell os about windowdraw |
69 | mov eax,12 ; function 12:tell os about windowdraw |
74 | mov ebx,1 ; 1, start of draw |
70 | mov ebx,1 ; 1, start of draw |
75 | int 0x40 |
71 | int 0x40 |
76 | 72 | ||
77 | ; DRAW WINDOW |
73 | ; DRAW WINDOW |
78 | mov eax,0 ; function 0 : define and draw window |
74 | mov eax,0 ; function 0 : define and draw window |
79 | mov ebx,100*65536+270 ; [x start] *65536 + [x size] |
75 | mov ebx,100*65536+270 ; [x start] *65536 + [x size] |
80 | mov ecx,100*65536+80 ; [y start] *65536 + [y size] |
76 | mov ecx,100*65536+80 ; [y start] *65536 + [y size] |
81 | mov edx,0x83ffffff ; color of work area RRGGBB,8->color gl |
77 | mov edx,0x33ffffff ; color of work area RRGGBB,8->color gl |
82 | mov esi,0x805080d0 ; color of grab bar RRGGBB,8->color gl |
- | |
83 | mov edi,0x005080d0 ; color of frames RRGGBB |
78 | mov edi,header |
84 | int 0x40 |
79 | int 0x40 |
85 | 80 | ||
86 | mov eax,4 ; function 4 : write text to window |
81 | mov eax,4 ; function 4 : write text to window |
87 | mov ebx,8*65536+8 ; [x start] *65536 + [y start] |
- | |
88 | mov ecx,0x00ddeeff ; color of text RRGGBB |
- | |
89 | mov edx,labelt ; pointer to text beginning |
- | |
90 | mov esi,labellen-labelt ; text length |
- | |
91 | int 0x40 |
- | |
92 | xor ecx,0xFFFFFF |
82 | xor ecx,ecx |
93 | mov esi,4 |
83 | mov esi,4 |
94 | add ebx,23 |
84 | mov ebx,8*65536+8 |
95 | mov edx,tdec |
85 | mov edx,tdec |
96 | int 0x40 |
86 | int 0x40 |
97 | add ebx,23 |
87 | add ebx,23 |
98 | mov edx,thex |
88 | mov edx,thex |
99 | int 0x40 |
89 | int 0x40 |
100 | 90 | ||
101 | mov ecx,[keyid] |
91 | mov ecx,[keyid] |
102 | mov eax,47 |
92 | mov eax,47 |
103 | mov ebx,3*65536 |
93 | mov ebx,3*65536 |
104 | mov edx,40*65536+31 |
94 | mov edx,40*65536+8 |
105 | mov esi,0x224466 |
95 | mov esi,0x224466 |
106 | int 0x40 |
96 | int 0x40 |
107 | add edx,23 |
97 | add edx,23 |
108 | mov bh,1 |
98 | mov bh,1 |
109 | int 0x40 |
99 | int 0x40 |
110 | 100 | ||
111 | mov eax,12 ; function 12:tell os about windowdraw |
101 | mov eax,12 ; function 12:tell os about windowdraw |
112 | mov ebx,2 ; 2, end of draw |
102 | mov ebx,2 ; 2, end of draw |
113 | int 0x40 |
103 | int 0x40 |
114 | 104 | ||
115 | ret |
105 | ret |
116 | 106 | ||
117 | 107 | ||
118 | ; DATA AREA |
108 | ; DATA AREA |
119 | 109 | ||
120 | tdec: db 'DEC:' |
110 | tdec: db 'DEC:' |
121 | thex: db 'HEX:' |
111 | thex: db 'HEX:' |
122 | labelt: |
- | |
123 | db 'KEYBOARD ASCIICODES-PRESS ANY KEY' |
112 | header db 'KEYBOARD ASCIICODES-PRESS ANY KEY',0 |
124 | labellen:dd 0 |
- | |
125 | keyid:db 0 |
113 | keyid: db 0 |
126 | I_END: |
114 | I_END: |