Subversion Repositories Kolibri OS

Rev

Rev 2132 | 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
 
2862 leency 21
1815 yogev_ezra 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
 
2862 leency 62
1815 yogev_ezra 63
 
64
    mov     al, 2                 ;   get key code
65
    mcall
66
67
 
68
69
 
70
    mcall -1
71
72
 
73
;---  ОПРЕДЕЛЕНИЕ И ОТРИСОВКА ОКНА  ----------------------------------
74
;---------------------------------------------------------------------
75
76
 
77
78
 
79
80
 
2862 leency 81
shr eax, 16
1815 yogev_ezra 82
and eax,0x0000FFFF
83
sub eax,300 ;отнимем от нее 300
84
shl eax, 16 ;и превратим в координаты окна по оси X
85
add eax,300
86
mov ebx, eax
87
88
 
89
mov ecx, 30 ;высотой 25 пикс
90
mov edx, 0x41000000 ;черного цвета и без заголовка
91
mov esi, 0x01000000
92
mcall
93
94
 
95
mov eax, 1 ;функция вывода точки
96
mov edx, 0 ;черного цвета
97
mov ecx, 30 ;высота окна - 30 пкс
98
mov esi, 0 ;счетчик сдвига сетки
99
100
 
101
sub ecx, 1 ;уменьшаем счетчик линий
102
cmp ecx, 0 ;закончились линии?
103
je fin ;значит, хватит рисовать
104
mov ebx, 300 ;иначе - у нас ширина сетки 300 пкс
105
cmp esi,1 ;имелся ли сдвиг сетки в прошлой линии?
106
je sw;если да, то перейдем к sw
107
mov esi,1 ;иначе - сдвиг был выключен, включим сдвиг
108
jmp drawy ;перейдем к рисованию
109
110
 
111
mov esi,0 ;выключаем сдвиг сетки
112
113
 
114
sub ebx, 2 ;ставить точки будем через одну
115
cmp ebx, 0 ;дорисовали ли мы линию?
116
je drawx ;если да, то переходим к новой
117
sub ebx, esi ;применяем сдвиг
118
mcall ;рисуем
119
add ebx, esi ;возвращаем счетчик на место
120
jmp drawy ;рисуем новую точку
121
122
 
123
124
 
125
mcall  , <5, 12>
2862 leency 126
mcall  , <4, 11>
127
mcall  , <4, 13>
128
mcall  , <4, 12>, 0x80EFEFEF ;текст
129
1815 yogev_ezra 130
 
131
 
132
133
 
134
 
135
136
 
137
 
138
;---  ДАННЫЕ ПРОГРАММЫ  ----------------------------------------------
139
;---------------------------------------------------------------------
140
141
 
142
143
 
144