Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
1815 yogev_ezra 1
 
2
;   @notify, pop-up windows
3
;   by Sourcerer, 20.01.2011
4
;
5
;---------------------------------------------------------------------
6
7
 
8
  org    0x0         ; адресация с нуля
9
10
 
11
  dd     0x01        ; версия заголовка (всегда 1)
12
  dd     START       ; адрес первой команды
13
  dd     I_END       ; размер программы
14
  dd     0x1000      ; количество памяти
15
  dd     0x1000      ; адрес вершины стэка
16
  dd     I_PARAM         ; адрес буфера для параметров
17
  dd     0x0         ; зарезервировано
18
19
 
20
 
21
22
 
23
;---  НАЧАЛО ПРОГРАММЫ  ----------------------------------------------
24
;---------------------------------------------------------------------
25
26
 
27
28
 
29
30
 
31
32
 
33
;---  ЦИКЛ ОБРАБОТКИ СОБЫТИЙ  ----------------------------------------
34
;---------------------------------------------------------------------
35
36
 
37
 
38
 
39
    mov     eax, 23
40
    mov ebx, 500
41
    mcall
42
43
 
44
    je exit
45
    cmp eax, 1
46
    je red
47
    cmp eax, 2
48
    je key
49
    cmp eax, 3
50
    je button
51
52
 
53
 
54
 
55
 
56
 
57
    mov     al, 17               ;   get button identifier
58
    mcall
59
60
 
61
    jne     still        ;   return if button id != 1
62
63
 
64
    mcall
65
66
 
67
    mov     al, 2                 ;   get key code
68
    mcall
69
70
 
71
72
 
73
    mcall -1
74
75
 
76
;---  ОПРЕДЕЛЕНИЕ И ОТРИСОВКА ОКНА  ----------------------------------
77
;---------------------------------------------------------------------
78
79
 
80
81
 
82
83
 
84
mov ebx, 4
85
mcall
86
shr eax, 16
87
and eax,0x0000FFFF
88
sub eax,300 ;отнимем от нее 300
89
shl eax, 16 ;и превратим в координаты окна по оси X
90
add eax,300
91
mov ebx, eax
92
93
 
94
mov ecx, 30 ;высотой 25 пикс
95
mov edx, 0x41000000 ;черного цвета и без заголовка
96
mov esi, 0x01000000
97
mcall
98
99
 
100
mov eax, 1 ;функция вывода точки
101
mov edx, 0 ;черного цвета
102
mov ecx, 30 ;высота окна - 30 пкс
103
mov esi, 0 ;счетчик сдвига сетки
104
105
 
106
sub ecx, 1 ;уменьшаем счетчик линий
107
cmp ecx, 0 ;закончились линии?
108
je fin ;значит, хватит рисовать
109
mov ebx, 300 ;иначе - у нас ширина сетки 300 пкс
110
cmp esi,1 ;имелся ли сдвиг сетки в прошлой линии?
111
je sw;если да, то перейдем к sw
112
mov esi,1 ;иначе - сдвиг был выключен, включим сдвиг
113
jmp drawy ;перейдем к рисованию
114
115
 
116
mov esi,0 ;выключаем сдвиг сетки
117
118
 
119
sub ebx, 2 ;ставить точки будем через одну
120
cmp ebx, 0 ;дорисовали ли мы линию?
121
je drawx ;если да, то переходим к новой
122
sub ebx, esi ;применяем сдвиг
123
mcall ;рисуем
124
add ebx, esi ;возвращаем счетчик на место
125
jmp drawy ;рисуем новую точку
126
127
 
128
129
 
130
mcall 4, <5, 12>, 0x80000000, I_PARAM, 0 ;
131
mcall 4, <4, 11>, 0x80000000, I_PARAM, 0 ;
132
mcall 4, <4, 13>, 0x80000000, I_PARAM, 0 ;
133
 mcall 4, <4, 12>, 0x80EFEFEF, I_PARAM, 0 ;текст
134
135
 
136
 
137
138
 
139
 
140
141
 
142
 
143
;---  ДАННЫЕ ПРОГРАММЫ  ----------------------------------------------
144
;---------------------------------------------------------------------
145
146
 
147
148
 
149