Subversion Repositories Kolibri OS

Rev

Rev 109 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 halyavin 1
; <--- description --->
2
; compiler:     FASM 1.54
3
; name:         MenuetOS RUN
4
; version:      0.02
5
; last update:  28/09/2004
6
; written by:   Ivan Poddubny
7
; e-mail:       ivan-yar@bk.ru
8
 
9
 
10
; <--- include all MeOS stuff --->
11
include "lang.inc"
12
include "macros.inc"
13
;;;lang fix en
14
 
15
 
16
; <--- start of MenuetOS application --->
17
MEOS_APP_START
18
 
19
;include "DEBUG.INC"
20
 
21
; <--- start of code --->
22
CODE
23
    call    draw_window            ; at first create and draw the window
24
 
25
  wait_event:                      ; main cycle
26
    mcall   10
27
 
28
    cmp     eax, 1                 ;   if event == 1
29
    je      redraw                 ;     jump to redraw handler
30
    cmp     eax, 2                 ;   else if event == 2
31
    je      key                    ;     jump to key handler
32
    cmp     eax, 3                 ;   else if event == 3
33
    je      button                 ;     jump to button handler
34
 
35
    jmp     wait_event             ;   else return to the start of main cycle
36
 
37
 
38
  redraw:                          ; redraw event handler
39
    call    draw_window
40
    jmp     wait_event
41
 
42
 
43
  key:                             ; key event handler
44
    mcall   2
45
 
46
    cmp     ah, 13
47
    je      _run
48
    cmp     ah, 8
49
    je      .backspace
50
 
51
    mov     bl, ah
52
    mov     eax, [position]
53
    mov     [filename + eax], bl
54
    inc     [position]
55
    call    draw_string
56
 
57
    jmp     wait_event
58
 
59
   .backspace:
60
    xor     eax, eax
61
    cmp     [position], eax
62
    je      wait_event
63
    dec     [position]
64
    call    draw_string
65
    jmp     wait_event
66
 
67
 
68
  button:                          ; button event handler
69
    mcall   17
70
 
71
    cmp     ah, 10
72
    je      _run
73
 
74
    dec     ah
75
    jne     wait_event             ;   return if button id != 1
76
 
77
  _exit:
78
    or      eax, -1                ;   exit application
79
    int     0x40
80
 
81
 
82
_run:
83
    mcall   58, fileinfo
84
;   dps     "58th function returned "
85
;   dpd     eax
86
;   newline
87
    jmp     _exit
88
 
89
 
90
draw_window:
91
    mcall   12, 1
92
 
93
    mcall   14
94
    and     eax, 0xFFFF
95
    sub     eax, 100
96
    shl     eax, 16
97
    add     eax, 80
98
    mov     ecx, eax
99
 
100
    mov     ebx, 148*65536+400     ;   (window_cx)*65536+(window_sx)
101
    mov     edx, 0x03DDDDDD        ;   work area color & window type 3
102
    mcall   0
103
 
104
    mov     ebx, 8*65536+8         ;   coordinates
105
    mov     ecx, 0x10ffffff        ;   color & font N1
106
    mov     edx, header            ;   address of text
107
    mov     esi, header.size       ;   length of text
108
    mcall   4
109
 
110
    mpack   ebx, 10, 26
111
    mov     ecx, 0
112
    mov     edx, message
113
    mov     esi, message.size
114
    mcall
115
 
116
    mpack   ebx, 385-(runbtn.size*6), runbtn.size*6+4
117
    mpack   ecx, 56, 14
118
    mov     edx, 10
119
    mov     esi, 0xa0a0a0
120
    mcall   8
121
 
122
;   mpack   ebx, 385-runbtn.size*6-findbtn.size*6-8, findbtn.size*6+4
123
;   inc     edx
124
;   mcall   8
125
 
126
;   mpack   ebx, 388-runbtn.size*6-findbtn.size*6-7, 59
127
;   mov     ecx, 0
128
;   mov     edx, findbtn
129
;   mov     esi, findbtn.size
130
;   mcall   4
131
 
132
    mpack   ebx, 388-runbtn.size*6, 59
133
    mov     ecx, 0
134
    mov     edx, runbtn
135
    mov     esi, runbtn.size
136
    mcall   4
137
 
138
    call    draw_string
139
 
140
    mcall   12, 2
141
ret
142
 
143
 
144
draw_string:
145
    mpack   ebx, 10, 380
146
    mpack   ecx, 38, 14
147
    mov     edx, 0xA0A0A0
148
    mcall   13
149
 
150
    mpack   ebx, 14, 41
151
    mov     ecx, 0
152
    mov     edx, filename
153
    mov     esi, [position]
154
    mcall   4
155
ret
156
 
157
 
158
 
159
; <--- initialised data --->
160
DATA
161
 
162
  position  dd filename.size
163
 
164
  lsz header,\
165
    ru, "Запуск программы",\
166
    en, "Start program"
167
 
168
  lsz message,\
169
    ru, "Введите путь к файлу:",\
170
    en, "Enter path to file:"
171
 
172
; lsz findbtn,\
173
;   ru, "Найти...",\
174
;   en, "Find..."
175
 
176
  lsz runbtn,\
177
    ru, "Запустить",\
178
    en, "Run"
179
 
180
 
181
  fileinfo:
182
    .mode      dd  16
183
               dd  0
184
    .param     dd  0
185
               dd  0
186
    .workarea  dd  workarea
187
 
188
  sz filename, "/rd/1/"
189
    rb 122
190
 
191
 
192
; <--- uninitialised data --->
193
UDATA
194
  workarea rb 4096
195
 
196
 
197
MEOS_APP_END
198
; <--- end of MenuetOS application --->