Subversion Repositories Kolibri OS

Rev

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: