Subversion Repositories Kolibri OS

Rev

Rev 258 | Rev 267 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
258 mikedld 1
button:
2
	mcall	17
3
	cmp	al,0
4
	jne	still
5
	shr	eax,8
6
 
7
	cmp	[bot_mode],0
8
	je	@f
9
	mov	ebx,eax
10
	mov	al,3
11
	call	[bot_dlg_handler]
12
	jmp	still
13
 
14
    @@: mov	esi,accel_table2
15
  .acc: cmp	eax,[esi]
16
	jne	@f
17
	call	dword[esi+4]
18
	jmp	still.skip_write
19
    @@: add	esi,8
20
	cmp	byte[esi],0
21
	jne	.acc
22
 
23
	jmp	still.skip_write
24
 
25
  btn.scroll_up:
259 mikedld 26
	dec	[cur_tab.Editor.TopLeft.Y] ;! [top_line]
258 mikedld 27
	jns	@f
259 mikedld 28
	inc	[cur_tab.Editor.TopLeft.Y] ;! [top_line]
29
	ret
258 mikedld 30
    @@: call	check_inv_all.skip_check
31
	ret
32
 
33
  btn.scroll_down:
259 mikedld 34
	inc	[cur_tab.Editor.TopLeft.Y] ;! [top_line]
35
	mov	eax,[cur_tab.Editor.Lines] ;! eax,[lines]
258 mikedld 36
	sub	eax,[lines.scr]
259 mikedld 37
	cmp	eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
258 mikedld 38
	jge	@f
259 mikedld 39
	dec	[cur_tab.Editor.TopLeft.Y] ;! [top_line]
40
	ret
258 mikedld 41
    @@: call	check_inv_all.skip_check
42
	ret
43
 
44
  btn.scroll_left:
259 mikedld 45
	dec	[cur_tab.Editor.TopLeft.X] ;! [left_col]
258 mikedld 46
	jns	@f
259 mikedld 47
	inc	[cur_tab.Editor.TopLeft.X] ;! [left_col]
258 mikedld 48
	ret;jmp     still.skip_write
49
    @@: call	check_inv_all.skip_check
50
	ret
51
 
52
  btn.scroll_right:
259 mikedld 53
	inc	[cur_tab.Editor.TopLeft.X] ;! [left_col]
54
	mov	eax,[cur_tab.Editor.Columns] ;! eax,[columns]
258 mikedld 55
	sub	eax,[columns.scr]
259 mikedld 56
	cmp	eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
258 mikedld 57
	jge	@f
259 mikedld 58
	dec	[cur_tab.Editor.TopLeft.X] ;! [left_col]
59
	ret
258 mikedld 60
    @@: call	check_inv_all.skip_check
61
	ret
62
 
63
  btn.search:
64
  key.f3:
65
	call	search
66
	jc	@f
67
	call	check_inv_all
68
    @@: ret
69
 
70
 
71
func search
72
	cld
259 mikedld 73
	mov	ecx,[cur_tab.Editor.Caret.Y] ;! ecx,[pos.y]
258 mikedld 74
	mov	edx,ecx
75
	call	get_line_offset
76
	cmp	word[esi],0
77
	je	.exit
78
	call	get_real_length
79
	add	esi,4
80
	or	eax,eax
81
	jz	.end_line.2
82
	mov	ecx,eax
259 mikedld 83
	sub	ecx,[cur_tab.Editor.Caret.X] ;! ecx,[pos.x]
258 mikedld 84
	push	esi
259 mikedld 85
	add	esi,[cur_tab.Editor.Caret.X] ;! esi,[pos.x]
258 mikedld 86
	jmp	@f
87
 
88
  .next_line:
89
	push	esi
90
    @@: sub	ecx,[s_search.size]
91
	inc	ecx
92
 
93
  .next_char:
94
	dec	ecx
95
	js	.end_line
96
	xor	edi,edi
97
 
98
  .next_ok:
99
	movzx	eax,byte[edi+esi]
100
	movzx	ebx,byte[edi+s_search]
101
 
102
	cmp	al,$61
103
	jb	@f
104
	add	al,[eax+add_table-$61]
105
    @@: cmp	bl,$61
106
	jb	@f
107
	add	bl,[ebx+add_table-$61]
108
    @@:
109
	cmp	al,bl
110
	je	@f
111
 
112
	inc	esi
113
	jmp	.next_char
114
    @@:
115
	inc	edi
116
	cmp	edi,[s_search.size]
117
	jne	.next_ok
118
 
119
  .found:
120
	add	esp,4
259 mikedld 121
	mov	[cur_tab.Editor.Caret.Y],edx ;! [pos.y],edx
122
	mov	[cur_tab.Editor.SelStart.Y],edx ;! [sel.y],edx
258 mikedld 123
	mov	ecx,edx
124
	lea	eax,[esi-4]
125
	call	get_line_offset
126
	sub	eax,esi
259 mikedld 127
	mov	[cur_tab.Editor.SelStart.X],eax ;! [sel.x],eax
258 mikedld 128
	add	eax,[s_search.size]
259 mikedld 129
	mov	[cur_tab.Editor.Caret.X],eax ;! [pos.x],eax
258 mikedld 130
	mov	[s_status],0
131
	clc
132
	ret
133
 
134
  .end_line:
135
	pop	esi
136
  .end_line.2:
137
	movzx	eax,word[esi-4]
138
	add	esi,eax;[esi-4]
139
	inc	edx
140
	call	get_real_length
141
	mov	ecx,eax
142
	lodsd
143
	or	eax,eax
144
	jnz	.next_line
145
  .exit:
146
	mov	[s_status],s_text_not_found
147
	stc
148
	ret
149
endf
150
 
151
  btn.compile:
152
  key.ctrl_f9:
259 mikedld 153
	mov	bl,0
258 mikedld 154
	call	start_fasm
259 mikedld 155
	ret
258 mikedld 156
  btn.compile_run:
157
  key.f9:
259 mikedld 158
	mov	bl,1
258 mikedld 159
	call	start_fasm
259 mikedld 160
	ret
258 mikedld 161
  btn.debug_board:
162
	call	open_debug_board
259 mikedld 163
	ret
258 mikedld 164
  btn.sysfuncs_txt:
165
	call	open_sysfuncs_txt
259 mikedld 166
	ret
258 mikedld 167
 
168
  btn.load_file:
169
  key.ctrl_l:
170
	call	load_file
171
	jnc	@f
172
	ret
173
    @@:
259 mikedld 174
 
258 mikedld 175
	xor	eax,eax
259 mikedld 176
	mov	[cur_tab.Editor.TopLeft.Y],eax ;! [top_line],eax
177
	mov	[cur_tab.Editor.TopLeft.X],eax ;! [left_col],eax
178
	mov	[cur_tab.Editor.Caret.X],eax ;! [pos.x],eax
179
	mov	[cur_tab.Editor.Caret.Y],eax ;! [pos.y],eax
180
	mov	[cur_tab.Editor.SelStart.X],eax ;! [sel.x],eax
181
	mov	[cur_tab.Editor.SelStart.Y],eax ;! [sel.y],eax
258 mikedld 182
 
259 mikedld 183
	mov	[cur_tab.Editor.Modified],al ;! [modified],al
258 mikedld 184
 
185
; enable color syntax for ASM and INC files:
259 mikedld 186
	mov	[cur_tab.Editor.AsmMode],al ;! [asm_mode],al
258 mikedld 187
 
259 mikedld 188
	mov	eax,[f_info.length]
189
	add	eax,f_info.path
258 mikedld 190
	mov	byte[eax],0
259 mikedld 191
	mov	ecx, dword [eax-3]
192
	or	ecx, 0x202020
193
	cmp	ecx, 'asm'
258 mikedld 194
	jne	@f
259 mikedld 195
	inc	[cur_tab.Editor.AsmMode] ;! [asm_mode]
258 mikedld 196
	jmp	.nocol
197
    @@: cmp	ecx, 'inc'
198
	jne	.nocol
259 mikedld 199
	inc	[cur_tab.Editor.AsmMode] ;! [asm_mode]
258 mikedld 200
    .nocol:
201
 
202
  update_caption:
259 mikedld 203
	lea	esi,[cur_tab.Editor.FilePath] ;! mov     esi,f_info.path
258 mikedld 204
	mov	edi,s_title
259 mikedld 205
 
206
    @@: lodsb
207
	cmp	al,0
208
	je	@f
209
	stosb
210
	jmp	@b
258 mikedld 211
    @@:
212
	;cld
259 mikedld 213
	;mov     ecx,[f_info.length]
214
	;jecxz   @f
215
	;rep     movsb
258 mikedld 216
 
217
	mov	dword[edi],' - '
218
	add	edi,3
219
    @@: mov	esi,htext
220
	mov	ecx,htext.size
259 mikedld 221
	cld
258 mikedld 222
	rep	movsb
223
 
224
	mov	al,0
225
	stosb
226
 
259 mikedld 227
	mcall	71,1,s_title
228
 
258 mikedld 229
	clc
259 mikedld 230
	ret
258 mikedld 231
 
232
  btn.close_main_window:
233
  key.alt_x:
234
	mov	esi,self_path
235
	mov	byte[esi+PATHL-1],0
236
	mov	edi,f_info.path
237
	cld
238
    @@: lodsb
239
	stosb
240
	or	al,al
241
	jnz	@b
242
 
243
	mov	[f_info70+0],2
244
	mov	[f_info70+4],0
245
	mov	[f_info70+8],0
246
	mov	[f_info70+12],TINYPAD_END
247
	mov	[f_info70+16],0
248
	mov	byte[f_info70+20],0
249
	mov	[f_info70+21],f_info.path
250
	mcall	70,f_info70
251
 
252
  .close:
253
	mov	[main_closed],1
254
	mcall	-1