Subversion Repositories Kolibri OS

Rev

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