Subversion Repositories Kolibri OS

Rev

Rev 3939 | Rev 7433 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3939 Rev 3944
1
;   RTF READER FOR KOLIBRI >= 0.7.7.0
1
;   RTF READER FOR KOLIBRI >= 0.7.7.0
2
;   Written in pure assembler by Ivushkin Andrey aka Willow
2
;   Written in pure assembler by Ivushkin Andrey aka Willow
3
;   Menu_bar and scroll_bar from box_lib provided by dunkaist
3
;   Menu_bar and scroll_bar from box_lib provided by dunkaist
4
;---------------------------------------------------------------------
4
;---------------------------------------------------------------------
5
M64 equ 64*1024
5
M64 equ 64*1024
6
N_A equ 0x412f4e
6
N_A equ 0x412f4e
7
RTFSIZE equ M64
7
RTFSIZE equ M64
8
RTFSTACKSIZE equ M64
8
RTFSTACKSIZE equ M64
9
BGIFONTSIZE equ 120*1024
9
BGIFONTSIZE equ 120*1024
10
ESPSIZE equ M64
10
ESPSIZE equ M64
11
LMARGIN equ 15
11
LMARGIN equ 15
12
CHARW equ 6
12
CHARW equ 6
13
CHARH equ 11
13
CHARH equ 11
14
WINW  equ 600
14
WINW  equ 600
15
WINH  equ 450
15
WINH  equ 450
16
WIN_COLOR equ 0x73f0f0f0
16
WIN_COLOR equ 0x73f0f0f0
17
DEFCOLOR equ 0x303030
17
DEFCOLOR equ 0x303030
18
;RENDER equ PIX
18
;RENDER equ PIX
19
;RENDER equ BGI
19
;RENDER equ BGI
20
RENDER equ FREE
20
RENDER equ FREE
21
 
21
 
22
BGIFONT_PATH equ '/sys/fonts/'
22
BGIFONT_PATH equ '/sys/fonts/'
23
FONT_NAME equ 'LITT'
23
FONT_NAME equ 'LITT'
24
TOP = 45
24
TOP = 45
25
MODE equ RTF
25
MODE equ RTF
26
INVALHEX equ 0
26
INVALHEX equ 0
27
RTF_COLORLESS equ 1
27
RTF_COLORLESS equ 1
28
RTF_ALIGNLESS equ 2
28
RTF_ALIGNLESS equ 2
29
RTF_NO1STLINE equ 4
29
RTF_NO1STLINE equ 4
30
RTF_OPENING   equ 8
30
RTF_OPENING   equ 8
31
RTF_HELP      equ 16
31
RTF_HELP      equ 16
32
RTF_VALID     equ 32
32
RTF_VALID     equ 32
33
RTF_BLIND     equ 64
33
RTF_BLIND     equ 64
34
RTF_TOEOF     equ 128
34
RTF_TOEOF     equ 128
35
RTF_BOTTOM    equ 256
35
RTF_BOTTOM    equ 256
36
STEPBYSTEP equ 10
36
STEPBYSTEP equ 10
37
DEBUG_BLOCK equ 10
37
DEBUG_BLOCK equ 10
38
SHOWALIGN equ 10
38
SHOWALIGN equ 10
39
GUTTER equ 10
39
GUTTER equ 10
40
BENCH  equ 0;1
40
BENCH  equ 0;1
41
syms equ 12
41
syms equ 12
42
 
42
 
43
;-------------------------------
43
;-------------------------------
44
 
44
 
45
SCROLL_WIDTH_SIZE       equ     15
45
SCROLL_WIDTH_SIZE       equ     15
46
AR_OFFSET               equ     10
46
AR_OFFSET               equ     10
47
 
47
 
48
;-------------------------------
48
;-------------------------------
49
 
49
 
50
  use32              ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
50
  use32              ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
51
  org    0x0         ;  ¤à¥á æ¨ï á ­ã«ï
51
  org    0x0         ;  ¤à¥á æ¨ï á ­ã«ï
52
 
52
 
53
  db     'MENUET01'  ; 8-¡ ©â­ë© ¨¤¥­â¨ä¨ª â®à MenuetOS
53
  db     'MENUET01'  ; 8-¡ ©â­ë© ¨¤¥­â¨ä¨ª â®à MenuetOS
54
  dd     0x01        ; ¢¥àá¨ï § £®«®¢ª  (¢á¥£¤  1)
54
  dd     0x01        ; ¢¥àá¨ï § £®«®¢ª  (¢á¥£¤  1)
55
  dd     START       ;  ¤à¥á ¯¥à¢®© ª®¬ ­¤ë
55
  dd     START       ;  ¤à¥á ¯¥à¢®© ª®¬ ­¤ë
56
  dd     I_END0      ; à §¬¥à ¯à®£à ¬¬ë
56
  dd     I_END0      ; à §¬¥à ¯à®£à ¬¬ë
57
  dd     esp_end     ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
57
  dd     esp_end     ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
58
  dd     sys_mem     ;  ¤à¥á ¢¥à設ë áâíª 
58
  dd     sys_mem     ;  ¤à¥á ¢¥à設ë áâíª 
59
  dd     fname_buf   ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢ (­¥ ¨á¯®«ì§ã¥âáï)
59
  dd     fname_buf   ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢ (­¥ ¨á¯®«ì§ã¥âáï)
60
  dd     cur_dir_path         ; § à¥§¥à¢¨à®¢ ­®
60
  dd     cur_dir_path         ; § à¥§¥à¢¨à®¢ ­®
61
 
61
 
62
include '../../../config.inc'		;for nightbuild
62
include '../../../config.inc'		;for nightbuild
63
include '../../../macros.inc' ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§­ì  áᥬ¡«¥à騪®¢!
63
include '../../../macros.inc' ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§­ì  áᥬ¡«¥à騪®¢!
64
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
64
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
65
include '../../../develop/libraries/box_lib/load_lib.mac'
65
include '../../../develop/libraries/box_lib/load_lib.mac'
66
 
66
 
67
;include 'MACROS.INC'
67
;include 'MACROS.INC'
68
;include 'load_lib.mac'
68
;include 'load_lib.mac'
69
 
69
 
70
@use_library
70
@use_library
71
 
71
 
72
;include '../../../debug.inc'
72
;include '../../../debug.inc'
73
 
73
 
74
if ~ RENDER eq PIX
74
if ~ RENDER eq PIX
75
  TOP=TOP+4
75
  TOP=TOP+4
76
  include 'bgifont.inc'
76
  include 'bgifont.inc'
77
end if
77
end if
78
include 'rtf_lite.inc'
78
include 'rtf_lite.inc'
79
;include 'ascl.inc'
79
;include 'ascl.inc'
80
;---------------------------------------------------------------------
80
;---------------------------------------------------------------------
81
;---  €—€‹Ž Žƒ€ŒŒ›  ----------------------------------------------
81
;---  €—€‹Ž Žƒ€ŒŒ›  ----------------------------------------------
82
;---------------------------------------------------------------------
82
;---------------------------------------------------------------------
83
help_file:
83
help_file:
84
    file  'reader.rtf'
84
    file  'reader.rtf'
85
help_end:
85
help_end:
86
 
86
 
87
START:
87
START:
88
        mcall 68, 11
88
        mcall 68, 11
89
        mcall 40, 0x27
89
        mcall 40, 0x80000027
90
 
90
 
91
load_libraries l_libs_start,end_l_libs
91
load_libraries l_libs_start,end_l_libs
92
 
92
 
93
;OpenDialog     initialisation
93
;OpenDialog     initialisation
94
        push    dword OpenDialog_data
94
        push    dword OpenDialog_data
95
        call    [OpenDialog_Init]
95
        call    [OpenDialog_Init]
96
 
96
 
97
    mov  [pitch],2
97
    mov  [pitch],2
98
  if ~ RENDER eq PIX
98
  if ~ RENDER eq PIX
99
    mov  edx,FONT_NAME
99
    mov  edx,FONT_NAME
100
    mov  edi,save_limit
100
    mov  edi,save_limit
101
    BGIfont_Prepare
101
    BGIfont_Prepare
102
  end if
102
  end if
103
 start2:
103
 start2:
104
    cmp  byte[fname_buf],0
104
    cmp  byte[fname_buf],0
105
    je   load_file;top_red
105
    je   load_file;top_red
106
    jmp  noactivate
106
    jmp  noactivate
107
 prep_load:
107
 prep_load:
108
    mov  [is_scroll_bar_needed],    0
108
    mov  [is_scroll_bar_needed],    0
109
;    mcall 18,3,dword[prcinfo+30]
109
;    mcall 18,3,dword[prcinfo+30]
110
 noactivate:
110
 noactivate:
111
;    and  ebp,not RTF_OPENING
111
;    and  ebp,not RTF_OPENING
112
;    and  ebp,not RTF_HELP
112
;    and  ebp,not RTF_HELP
113
 
113
 
114
;    and  [mode],not RTF_OPENING
114
;    and  [mode],not RTF_OPENING
115
    and  [mode],not (RTF_HELP+RTF_OPENING)
115
    and  [mode],not (RTF_HELP+RTF_OPENING)
116
    mov  ecx,16
116
    mov  ecx,16
117
    mov  edi,fileinfo.name
117
    mov  edi,fileinfo.name
118
    mov  esi,fname_buf
118
    mov  esi,fname_buf
119
    rep  movsd
119
    rep  movsd
120
 load_file:
120
 load_file:
121
        mov     eax, 70
121
        mov     eax, 70
122
        and     [fileattr+32], 0
122
        and     [fileattr+32], 0
123
        mov     ebx, attrinfo
123
        mov     ebx, attrinfo
124
        mcall
124
        mcall
125
        mov     ebx, [fileattr+32]
125
        mov     ebx, [fileattr+32]
126
        test    eax, eax
126
        test    eax, eax
127
        jz      .sizok
127
        jz      .sizok
128
        mov     dword [fileinfo.name], N_A
128
        mov     dword [fileinfo.name], N_A
129
.sizok:
129
.sizok:
130
    and  [wSave],0
130
    and  [wSave],0
131
;    mov  [HClick],-100
131
;    mov  [HClick],-100
132
    mov  eax,ebx
132
    mov  eax,ebx
133
    and  eax,RTFSIZE-1
133
    and  eax,RTFSIZE-1
134
    add  eax,I_END
134
    add  eax,I_END
135
    mov  [tail],eax
135
    mov  [tail],eax
136
    shr  ebx,16
136
    shr  ebx,16
137
;    dpd ebx
137
;    dpd ebx
138
    mov  [max_block],ebx
138
    mov  [max_block],ebx
139
    xor  eax,eax
139
    xor  eax,eax
140
    mov  ecx,256
140
    mov  ecx,256
141
    mov  edi,fileinfo.name
141
    mov  edi,fileinfo.name
142
    repne scasb
142
    repne scasb
143
    sub  edi,fileinfo.name+1
143
    sub  edi,fileinfo.name+1
144
    mov  [fname_size],edi
144
    mov  [fname_size],edi
145
top_red:
145
top_red:
146
    mov  [top],TOP
146
    mov  [top],TOP
147
    mov  [scroll_bar_data_vertical.position],0
147
    mov  [scroll_bar_data_vertical.position],0
148
red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
148
red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
149
    call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
149
    call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
150
 
150
 
151
;---------------------------------------------------------------------
151
;---------------------------------------------------------------------
152
;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
152
;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
153
;---------------------------------------------------------------------
153
;---------------------------------------------------------------------
154
 
154
 
155
still:
155
still:
156
    mcall 10            ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
156
    mcall 10            ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
157
 
157
 
158
    cmp  eax,1          ; ¯¥à¥à¨á®¢ âì ®ª­® ?
158
    cmp  eax,1          ; ¯¥à¥à¨á®¢ âì ®ª­® ?
159
    je   red            ; ¥á«¨ ¤  - ­  ¬¥âªã red
159
    je   red            ; ¥á«¨ ¤  - ­  ¬¥âªã red
160
    cmp  eax,3          ; ­ ¦ â  ª­®¯ª  ?
160
    cmp  eax,3          ; ­ ¦ â  ª­®¯ª  ?
161
    je   button         ; ¥á«¨ ¤  - ­  button
161
    je   button         ; ¥á«¨ ¤  - ­  button
162
    cmp  eax,6
162
    cmp  eax,6
163
    je   mouse
163
    je   mouse
164
 
164
 
165
;---------------------------------------------------------------------
165
;---------------------------------------------------------------------
166
 
166
 
167
 
167
 
168
key:                  ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
168
key:                  ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
169
    mcall 2           ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah)
169
    mcall 2           ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah)
170
	;Leency[
170
	;Leency[
171
	cmp eax,1
171
	cmp eax,1
172
	jne .getkeyi
172
	jne .getkeyi
173
	mov ah,dh
173
	mov ah,dh
174
	jmp .next
174
	jmp .next
175
 
175
 
176
.getkeyi:
176
.getkeyi:
177
	mov dh,ah
177
	mov dh,ah
178
	jmp key
178
	jmp key
179
 
179
 
180
.next: 	;]Leency
180
.next: 	;]Leency
181
    cmp  ah,104         ; HELP
181
    cmp  ah,104         ; HELP
182
    jne  .nohelp
182
    jne  .nohelp
183
  .help:
183
  .help:
184
    mov  [is_scroll_bar_needed],    0
184
    mov  [is_scroll_bar_needed],    0
185
    xor  [mode],RTF_HELP
185
    xor  [mode],RTF_HELP
186
    test [mode],RTF_HELP
186
    test [mode],RTF_HELP
187
    jz   load_file
187
    jz   load_file
188
    mov  dword[HDoc],200                        ; it makes the help page not scroll
188
    mov  dword[HDoc],200                        ; it makes the help page not scroll
189
    mov  ecx,help_end-help_file
189
    mov  ecx,help_end-help_file
190
    mov  [block_end],ecx
190
    mov  [block_end],ecx
191
    add  [block_end],I_END
191
    add  [block_end],I_END
192
    mov  [tail],ecx
192
    mov  [tail],ecx
193
    add  [tail],I_END
193
    add  [tail],I_END
194
    mov  esi,help_file
194
    mov  esi,help_file
195
    mov  edi,I_END
195
    mov  edi,I_END
196
    rep  movsb
196
    rep  movsb
197
;    or   [mode],RTF_HELP
197
;    or   [mode],RTF_HELP
198
    xor  eax,eax
198
    xor  eax,eax
199
    mov  [max_block],eax
199
    mov  [max_block],eax
200
    jmp  top_red
200
    jmp  top_red
201
  .nohelp:
201
  .nohelp:
202
;    test [mode],RTF_HELP
202
;    test [mode],RTF_HELP
203
;    jz   .nohelp2
203
;    jz   .nohelp2
204
;    and  [mode],not RTF_HELP
204
;    and  [mode],not RTF_HELP
205
;    cmp  dword[fileinfo.name],N_A
205
;    cmp  dword[fileinfo.name],N_A
206
;    je   still
206
;    je   still
207
;    jmp  prep_load
207
;    jmp  prep_load
208
  .nohelp2:
208
  .nohelp2:
209
    cmp  ah,114         ; R - redraw
209
    cmp  ah,114         ; R - redraw
210
    je   red
210
    je   red
211
    cmp  ah,99          ; C - color
211
    cmp  ah,99          ; C - color
212
    jne  .nocolor
212
    jne  .nocolor
213
  .color:
213
  .color:
214
    xor  [mode],RTF_COLORLESS
214
    xor  [mode],RTF_COLORLESS
215
    jmp  red
215
    jmp  red
216
  .nocolor:
216
  .nocolor:
217
    cmp  ah,97          ; A - alignment
217
    cmp  ah,97          ; A - alignment
218
    jne  .noalign
218
    jne  .noalign
219
  .alignment:
219
  .alignment:
220
    xor  [mode],RTF_ALIGNLESS
220
    xor  [mode],RTF_ALIGNLESS
221
    jmp  red
221
    jmp  red
222
  .noalign:
222
  .noalign:
223
    cmp  ah,44          ; < - pitch dec
223
    cmp  ah,44          ; < - pitch dec
224
    jne  .nopd
224
    jne  .nopd
225
  .decp:
225
  .decp:
226
    dec  [pitch]
226
    dec  [pitch]
227
    jmp  red
227
    jmp  red
228
  .nopd:
228
  .nopd:
229
    cmp  ah,46          ; < - pitch inc
229
    cmp  ah,46          ; < - pitch inc
230
    jne  .nopi
230
    jne  .nopi
231
  .incp:
231
  .incp:
232
    inc  [pitch]
232
    inc  [pitch]
233
    jmp  red
233
    jmp  red
234
  .nopi:
234
  .nopi:
235
    cmp  ah,180         ; Home
235
    cmp  ah,180         ; Home
236
    je   top_red
236
    je   top_red
237
    
237
    
238
    cmp  dword[is_scroll_bar_needed], 0
238
    cmp  dword[is_scroll_bar_needed], 0
239
     je  still
239
     je  still
240
    
240
    
241
    mov  ebx,dword[prcinfo+46]
241
    mov  ebx,dword[prcinfo+46]
242
    sub  ebx,TOP+15
242
    sub  ebx,TOP+15
243
    cmp  ah,183 ;PgDn
243
    cmp  ah,183 ;PgDn
244
    jne  .nopgdn
244
    jne  .nopgdn
245
;    sub  [top],bx
245
;    sub  [top],bx
246
 
246
 
247
    cmp  dword[is_scroll_bar_needed], 0
247
    cmp  dword[is_scroll_bar_needed], 0
248
     je  still
248
     je  still
249
    
249
    
250
    mov  eax, [scroll_bar_data_vertical.position]
250
    mov  eax, [scroll_bar_data_vertical.position]
251
    add  eax, AR_OFFSET*7
251
    add  eax, AR_OFFSET*7
252
    mov  ebx, [scroll_bar_data_vertical.max_area]
252
    mov  ebx, [scroll_bar_data_vertical.max_area]
253
    sub  ebx, [scroll_bar_data_vertical.cur_area]
253
    sub  ebx, [scroll_bar_data_vertical.cur_area]
254
    cmp  eax, ebx
254
    cmp  eax, ebx
255
    mov  dword[scroll_bar_data_vertical.position], eax
255
    mov  dword[scroll_bar_data_vertical.position], eax
256
    jl  @f
256
    jl  @f
257
    mov  dword[scroll_bar_data_vertical.position], ebx
257
    mov  dword[scroll_bar_data_vertical.position], ebx
258
  @@:
258
  @@:
259
    call Set_position
259
    call Set_position
260
    jmp  red
260
    jmp  red
261
  .nopgdn:
261
  .nopgdn:
262
    cmp  ah,177 ;arrDn
262
    cmp  ah,177 ;arrDn
263
    jne  .noardn
263
    jne  .noardn
264
;    sub  [top],CHARH
264
;    sub  [top],CHARH
265
 
265
 
266
    cmp  dword[is_scroll_bar_needed], 0
266
    cmp  dword[is_scroll_bar_needed], 0
267
     je  still
267
     je  still
268
    
268
    
269
    mov  eax, [scroll_bar_data_vertical.position]
269
    mov  eax, [scroll_bar_data_vertical.position]
270
    add  eax, AR_OFFSET
270
    add  eax, AR_OFFSET
271
    mov  ebx, [scroll_bar_data_vertical.max_area]
271
    mov  ebx, [scroll_bar_data_vertical.max_area]
272
    sub  ebx, [scroll_bar_data_vertical.cur_area]
272
    sub  ebx, [scroll_bar_data_vertical.cur_area]
273
    cmp  eax, ebx
273
    cmp  eax, ebx
274
    mov  dword[scroll_bar_data_vertical.position], eax
274
    mov  dword[scroll_bar_data_vertical.position], eax
275
    jl  @f
275
    jl  @f
276
    mov  dword[scroll_bar_data_vertical.position], ebx
276
    mov  dword[scroll_bar_data_vertical.position], ebx
277
  @@:
277
  @@:
278
    call Set_position
278
    call Set_position
279
 
279
 
280
    jmp  red
280
    jmp  red
281
  .noardn:
281
  .noardn:
282
    mov  cx,[top]
282
    mov  cx,[top]
283
    cmp  ah,184 ;PgUp
283
    cmp  ah,184 ;PgUp
284
    jne  .nopgup
284
    jne  .nopgup
285
;    add  [top],bx
285
;    add  [top],bx
286
;    cmp  [top],TOP
286
;    cmp  [top],TOP
287
;    jl   red
287
;    jl   red
288
;    mov  [top],TOP
288
;    mov  [top],TOP
289
;    cmp  cx,[top]
289
;    cmp  cx,[top]
290
;    je   still
290
;    je   still
291
 
291
 
292
    cmp  dword[is_scroll_bar_needed], 0
292
    cmp  dword[is_scroll_bar_needed], 0
293
     je  still
293
     je  still
294
    
294
    
295
    cmp  dword[scroll_bar_data_vertical.position], AR_OFFSET*7
295
    cmp  dword[scroll_bar_data_vertical.position], AR_OFFSET*7
296
    sub  dword[scroll_bar_data_vertical.position], AR_OFFSET*7
296
    sub  dword[scroll_bar_data_vertical.position], AR_OFFSET*7
297
    jg  @f
297
    jg  @f
298
    mov  dword[scroll_bar_data_vertical.position], 0
298
    mov  dword[scroll_bar_data_vertical.position], 0
299
  @@:
299
  @@:
300
    call Set_position
300
    call Set_position
301
    jmp  red
301
    jmp  red
302
  .nopgup:
302
  .nopgup:
303
    cmp  ah,178 ;arrUp
303
    cmp  ah,178 ;arrUp
304
    jne  .noarup
304
    jne  .noarup
305
;    add  [top],CHARH
305
;    add  [top],CHARH
306
 
306
 
307
    cmp  dword[is_scroll_bar_needed], 0
307
    cmp  dword[is_scroll_bar_needed], 0
308
     je  still
308
     je  still
309
    
309
    
310
    cmp  dword[scroll_bar_data_vertical.position], AR_OFFSET
310
    cmp  dword[scroll_bar_data_vertical.position], AR_OFFSET
311
    sub  dword[scroll_bar_data_vertical.position], AR_OFFSET
311
    sub  dword[scroll_bar_data_vertical.position], AR_OFFSET
312
    jg  @f
312
    jg  @f
313
    mov  dword[scroll_bar_data_vertical.position], 0
313
    mov  dword[scroll_bar_data_vertical.position], 0
314
  @@:
314
  @@:
315
    call Set_position
315
    call Set_position
316
 
316
 
317
;    cmp  [top],TOP
317
;    cmp  [top],TOP
318
;    jl   red
318
;    jl   red
319
;    mov  [top],TOP
319
;    mov  [top],TOP
320
;    cmp  cx,[top]
320
;    cmp  cx,[top]
321
;    je   still
321
;    je   still
322
    jmp  red
322
    jmp  red
323
  .noarup:
323
  .noarup:
324
  if  RENDER eq FREE
324
  if  RENDER eq FREE
325
    cmp  ah,56 ;zoom+
325
    cmp  ah,56 ;zoom+
326
    jne  .noplus
326
    jne  .noplus
327
  .zplus:
327
  .zplus:
328
    fld  [FreeFontscale]
328
    fld  [FreeFontscale]
329
    fmul [Zoomscale]
329
    fmul [Zoomscale]
330
  .zoom:
330
  .zoom:
331
    fstp [FreeFontscale]
331
    fstp [FreeFontscale]
332
    jmp  red
332
    jmp  red
333
  .noplus:
333
  .noplus:
334
    cmp  ah,54 ;zoom-
334
    cmp  ah,54 ;zoom-
335
    jne  .nominus
335
    jne  .nominus
336
  .zminus:
336
  .zminus:
337
    fld  [FreeFontscale]
337
    fld  [FreeFontscale]
338
    fdiv [Zoomscale]
338
    fdiv [Zoomscale]
339
    jmp  .zoom
339
    jmp  .zoom
340
  .nominus:
340
  .nominus:
341
  end if
341
  end if
342
    cmp  ah,0xB5        ; end
342
    cmp  ah,0xB5        ; end
343
    jne  .pre_file_open
343
    jne  .pre_file_open
344
  .end:
344
  .end:
345
 
345
 
346
    cmp  dword[is_scroll_bar_needed], 0
346
    cmp  dword[is_scroll_bar_needed], 0
347
     je  still
347
     je  still
348
    
348
    
349
    mov  eax, [scroll_bar_data_vertical.max_area]
349
    mov  eax, [scroll_bar_data_vertical.max_area]
350
    sub  eax, [scroll_bar_data_vertical.cur_area]
350
    sub  eax, [scroll_bar_data_vertical.cur_area]
351
    mov  dword[scroll_bar_data_vertical.position], eax
351
    mov  dword[scroll_bar_data_vertical.position], eax
352
    call Set_position
352
    call Set_position
353
    jmp  red
353
    jmp  red
354
  .pre_file_open:
354
  .pre_file_open:
355
    cmp  ah,108         ; L - load
355
    cmp  ah,108         ; L - load
356
    jne  still
356
    jne  still
357
  .file_open:
357
  .file_open:
358
;---------------------------------------------------------------------
358
;---------------------------------------------------------------------
359
;OpenDialog_start:
359
;OpenDialog_start:
360
;       copy_path       open_dialog_name,path,library_path,0
360
;       copy_path       open_dialog_name,path,library_path,0
361
        
361
        
362
        push    dword OpenDialog_data
362
        push    dword OpenDialog_data
363
        call    [OpenDialog_Start]
363
        call    [OpenDialog_Start]
364
 
364
 
365
;       cmp     [OpenDialog_data.status],2 ; OpenDialog does not start
365
;       cmp     [OpenDialog_data.status],2 ; OpenDialog does not start
366
;       je      .sysxtree  ;    some kind of alternative, instead OpenDialog
366
;       je      .sysxtree  ;    some kind of alternative, instead OpenDialog
367
        cmp     [OpenDialog_data.status],1
367
        cmp     [OpenDialog_data.status],1
368
        je      prep_load
368
        je      prep_load
369
        jmp     still
369
        jmp     still
370
;---------------------------------------------------------------------  
370
;---------------------------------------------------------------------  
371
;.sysxtree:
371
;.sysxtree:
372
;    or   [mode],RTF_OPENING
372
;    or   [mode],RTF_OPENING
373
;    opendialog draw_window, prep_load, st_1, fname_buf
373
;    opendialog draw_window, prep_load, st_1, fname_buf
374
;  st_1:
374
;  st_1:
375
;    and  [mode],not RTF_OPENING
375
;    and  [mode],not RTF_OPENING
376
;    jmp  still;red
376
;    jmp  still;red
377
;  stilld:
377
;  stilld:
378
;    jmp  still
378
;    jmp  still
379
;---------------------------------------------------------------------
379
;---------------------------------------------------------------------
380
 
380
 
381
  button:
381
  button:
382
    mcall 17            ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
382
    mcall 17            ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
383
 
383
 
384
    cmp   ah, 1         ; ¥á«¨ ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
384
    cmp   ah, 1         ; ¥á«¨ ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
385
    je    .exit
385
    je    .exit
386
    jmp still
386
    jmp still
387
    
387
    
388
  .exit:
388
  .exit:
389
    mcall -1            ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
389
    mcall -1            ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
390
    
390
    
391
 
391
 
392
;---------------------------------------------------------------------
392
;---------------------------------------------------------------------
393
;---  MOUSE EVENT PROCESSING  ----------------------------------------
393
;---  MOUSE EVENT PROCESSING  ----------------------------------------
394
;---------------------------------------------------------------------    
394
;---------------------------------------------------------------------    
395
mouse:
395
mouse:
396
        mcall   37,7
396
        mcall   37,7
397
        test    eax,    eax
397
        test    eax,    eax
398
        je      .menu_bar_1;.mouse
398
        je      .menu_bar_1;.mouse
399
        jmp     still
399
        jmp     still
400
 
400
 
401
 
401
 
402
.menu_bar_1:
402
.menu_bar_1:
403
        call    .set_mouse_flag
403
        call    .set_mouse_flag
404
@@:
404
@@:
405
        push    dword menu_data_1       ;mouse event for Menu 1
405
        push    dword menu_data_1       ;mouse event for Menu 1
406
        call    [menu_bar_mouse]
406
        call    [menu_bar_mouse]
407
        cmp     [menu_data_1.click],dword 1
407
        cmp     [menu_data_1.click],dword 1
408
        jne     .menu_bar_2
408
        jne     .menu_bar_2
409
        cmp     [menu_data_1.cursor_out],dword 0
409
        cmp     [menu_data_1.cursor_out],dword 0
410
        jne     .analyse_out_menu_1
410
        jne     .analyse_out_menu_1
411
        jmp     .menu_bar_1
411
        jmp     .menu_bar_1
412
.menu_bar_2:
412
.menu_bar_2:
413
        push    dword menu_data_2
413
        push    dword menu_data_2
414
        call    [menu_bar_mouse]
414
        call    [menu_bar_mouse]
415
        cmp     [menu_data_2.click],dword 1
415
        cmp     [menu_data_2.click],dword 1
416
        jne     .menu_bar_3
416
        jne     .menu_bar_3
417
        cmp     [menu_data_2.cursor_out],dword 0
417
        cmp     [menu_data_2.cursor_out],dword 0
418
        jne     .analyse_out_menu_2
418
        jne     .analyse_out_menu_2
419
        jmp     .menu_bar_1
419
        jmp     .menu_bar_1
420
.menu_bar_3:
420
.menu_bar_3:
421
        push    dword menu_data_3
421
        push    dword menu_data_3
422
        call    [menu_bar_mouse]
422
        call    [menu_bar_mouse]
423
        cmp     [menu_data_3.click],dword 1
423
        cmp     [menu_data_3.click],dword 1
424
        jne     .scroll_bar
424
        jne     .scroll_bar
425
        cmp     [menu_data_3.cursor_out],dword 0
425
        cmp     [menu_data_3.cursor_out],dword 0
426
        jne     .analyse_out_menu_3
426
        jne     .analyse_out_menu_3
427
        jmp     .menu_bar_1
427
        jmp     .menu_bar_1
428
 
428
 
429
.set_mouse_flag:
429
.set_mouse_flag:
430
        xor     eax,eax
430
        xor     eax,eax
431
        inc     eax
431
        inc     eax
432
        mov     [menu_data_1.get_mouse_flag],eax
432
        mov     [menu_data_1.get_mouse_flag],eax
433
        mov     [menu_data_2.get_mouse_flag],eax
433
        mov     [menu_data_2.get_mouse_flag],eax
434
        mov     [menu_data_3.get_mouse_flag],eax
434
        mov     [menu_data_3.get_mouse_flag],eax
435
        ret
435
        ret
436
 
436
 
437
.analyse_out_menu_1:
437
.analyse_out_menu_1:
438
        cmp     [menu_data_1.cursor_out],dword 1
438
        cmp     [menu_data_1.cursor_out],dword 1
439
        je      key.file_open
439
        je      key.file_open
440
        cmp     [menu_data_1.cursor_out],dword 2
440
        cmp     [menu_data_1.cursor_out],dword 2
441
        je      button.exit
441
        je      button.exit
442
        jmp     red
442
        jmp     red
443
 
443
 
444
.analyse_out_menu_2:
444
.analyse_out_menu_2:
445
        cmp     [menu_data_2.cursor_out],dword 1
445
        cmp     [menu_data_2.cursor_out],dword 1
446
        je      key.zplus
446
        je      key.zplus
447
        cmp     [menu_data_2.cursor_out],dword 2
447
        cmp     [menu_data_2.cursor_out],dword 2
448
        je      key.zminus
448
        je      key.zminus
449
        cmp     [menu_data_2.cursor_out],dword 3
449
        cmp     [menu_data_2.cursor_out],dword 3
450
        je      key.incp
450
        je      key.incp
451
        cmp     [menu_data_2.cursor_out],dword 4
451
        cmp     [menu_data_2.cursor_out],dword 4
452
        je      key.decp
452
        je      key.decp
453
        cmp     [menu_data_2.cursor_out],dword 5
453
        cmp     [menu_data_2.cursor_out],dword 5
454
        je      key.alignment
454
        je      key.alignment
455
        cmp     [menu_data_2.cursor_out],dword 6
455
        cmp     [menu_data_2.cursor_out],dword 6
456
        je      key.color
456
        je      key.color
457
        jmp     red
457
        jmp     red
458
 
458
 
459
.analyse_out_menu_3:
459
.analyse_out_menu_3:
460
        cmp     [menu_data_3.cursor_out],dword 1
460
        cmp     [menu_data_3.cursor_out],dword 1
461
        je      key.help
461
        je      key.help
462
        jmp     red
462
        jmp     red
463
 
463
 
464
.scroll_bar:
464
.scroll_bar:
465
        cmp     dword[is_scroll_bar_needed], 0
465
        cmp     dword[is_scroll_bar_needed], 0
466
        je      still
466
        je      still
467
.vertical:
467
.vertical:
468
        mov     eax,[scroll_bar_data_vertical.max_area]
468
        mov     eax,[scroll_bar_data_vertical.max_area]
469
        cmp     eax,[scroll_bar_data_vertical.cur_area]
469
        cmp     eax,[scroll_bar_data_vertical.cur_area]
470
        jbe     still
470
        jbe     still
471
; mouse event for Vertical ScrollBar
471
; mouse event for Vertical ScrollBar
472
 
472
 
473
        push    dword scroll_bar_data_vertical
473
        push    dword scroll_bar_data_vertical
474
        call    [scrollbar_ver_mouse]
474
        call    [scrollbar_ver_mouse]
475
  
475
  
476
        call    Set_position
476
        call    Set_position
477
        
477
        
478
        mov     eax,scroll_bar_data_vertical.redraw
478
        mov     eax,scroll_bar_data_vertical.redraw
479
        xor     ebx,ebx
479
        xor     ebx,ebx
480
        cmp     [eax],ebx
480
        cmp     [eax],ebx
481
        je      @f
481
        je      @f
482
        mov     [eax],ebx
482
        mov     [eax],ebx
483
        jmp     red
483
        jmp     red
484
@@:
484
@@:
485
        cmp     [scroll_bar_data_vertical.delta2],0
485
        cmp     [scroll_bar_data_vertical.delta2],0
486
        jne     still
486
        jne     still
487
.other:
487
.other:
488
        jmp     still
488
        jmp     still
489
;---------------------------------------------------------------------
489
;---------------------------------------------------------------------
490
;---  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€  ----------------------------------
490
;---  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€  ----------------------------------
491
;---------------------------------------------------------------------
491
;---------------------------------------------------------------------
492
 
492
 
493
draw_window:
493
draw_window:
494
 
494
 
495
    mcall 9, procinfo2, -1
495
    mcall 9, procinfo2, -1
496
    test [procinfo2.wnd_state], 0x04
496
    test [procinfo2.wnd_state], 0x04
497
    jz   @f
497
    jz   @f
498
    mcall 0, <10,WINW>, <100,WINH>, WIN_COLOR,0x80000000, window_title
498
    mcall 0, <10,WINW>, <100,WINH>, WIN_COLOR,0x80000000, window_title
499
    ret
499
    ret
500
  @@:
500
  @@:
501
    mov  edx, -1
501
    mov  edx, -1
502
    mov  esi, -1
502
    mov  esi, -1
503
    
503
    
504
    mov  eax, [procinfo2.box.width]
504
    mov  eax, [procinfo2.box.width]
505
    cmp  eax, [window_width]
505
    cmp  eax, [window_width]
506
     je  @f
506
     je  @f
507
    mov  [is_scroll_bar_needed],    0
507
    mov  [is_scroll_bar_needed],    0
508
    cmp  eax, 140
508
    cmp  eax, 140
509
     jnl @f
509
     jnl @f
510
    mov  eax, 140
510
    mov  eax, 140
511
  @@:
511
  @@:
512
    mov  edx, eax
512
    mov  edx, eax
513
    mov  [window_width],    eax
513
    mov  [window_width],    eax
514
 
514
 
515
    mov  eax, [procinfo2.box.height]
515
    mov  eax, [procinfo2.box.height]
516
    cmp  eax, [window_height]
516
    cmp  eax, [window_height]
517
     je  @f
517
     je  @f
518
    mov  [is_scroll_bar_needed],    0
518
    mov  [is_scroll_bar_needed],    0
519
    cmp  eax, 80
519
    cmp  eax, 80
520
     jnl @f
520
     jnl @f
521
    mov  eax, 80
521
    mov  eax, 80
522
  @@:
522
  @@:
523
    mov  esi, eax
523
    mov  esi, eax
524
    mov  [window_height],   eax
524
    mov  [window_height],   eax
525
 
525
 
526
    mcall 67, -1, -1
526
    mcall 67, -1, -1
527
 
527
 
528
    mcall 12, 1
528
    mcall 12, 1
529
;    mcall 0, <10,WINW>, <100,WINH>, WIN_COLOR,0x805080D0, 0x005080D0
529
;    mcall 0, <10,WINW>, <100,WINH>, WIN_COLOR,0x805080D0, 0x005080D0
530
;    mcall 4, <8,8>, 0x10DDEEFF, title, titlesize-title
530
;    mcall 4, <8,8>, 0x10DDEEFF, title, titlesize-title
531
    mcall 0, <10,WINW>, <100,WINH>, WIN_COLOR,0x80000000, window_title
531
    mcall 0, <10,WINW>, <100,WINH>, WIN_COLOR,0x80000000, window_title
532
 
532
 
533
;---------------------------------------------
533
;---------------------------------------------
534
    mcall 9, procinfo2, -1
534
    mcall 9, procinfo2, -1
535
 
535
 
536
	mcall 48,4
536
	mcall 48,4
537
	mov [skin_height], eax
537
	mov [skin_height], eax
538
 
538
 
539
	mov  ebx,0*65536-9
539
	mov  ebx,0*65536-9
540
    add  ebx, [procinfo2.box.width]
540
    add  ebx, [procinfo2.box.width]
541
 
541
 
542
	cmp  [is_scroll_bar_needed], 0
542
	cmp  [is_scroll_bar_needed], 0
543
	je  @f
543
	je  @f
544
	  sub ebx, SCROLL_WIDTH_SIZE
544
	  sub ebx, SCROLL_WIDTH_SIZE
545
	  dec ebx
545
	  dec ebx
546
	@@:
546
	@@:
547
	
547
	
548
	mov  ecx, 19*65536-23
548
	mov  ecx, 19*65536-23
549
    add  ecx, [procinfo2.box.height]
549
    add  ecx, [procinfo2.box.height]
550
	sub  ecx, [skin_height]
550
	sub  ecx, [skin_height]
551
	
551
	
552
	mov  eax, 13
552
	mov  eax, 13
553
	mov  edx, 0xf0f0f0
553
	mov  edx, 0xf0f0f0
554
	int 0x40
554
	int 0x40
555
;---------------------------------------------
555
;---------------------------------------------
556
    cmp  [is_scroll_bar_needed],    0
556
    cmp  [is_scroll_bar_needed],    0
557
     je  @f
557
     je  @f
558
    call Set_scroll_position
558
    call Set_scroll_position
559
        xor     eax,eax
559
        xor     eax,eax
560
        inc     eax
560
        inc     eax
561
        mov     [scroll_bar_data_vertical.all_redraw],eax
561
        mov     [scroll_bar_data_vertical.all_redraw],eax
562
; draw for Vertical ScrollBar
562
; draw for Vertical ScrollBar
563
        push    dword scroll_bar_data_vertical
563
        push    dword scroll_bar_data_vertical
564
        call    [scrollbar_ver_draw]
564
        call    [scrollbar_ver_draw]
565
; reset all_redraw flag 
565
; reset all_redraw flag 
566
        xor     eax,eax
566
        xor     eax,eax
567
        mov     [scroll_bar_data_vertical.all_redraw],eax
567
        mov     [scroll_bar_data_vertical.all_redraw],eax
568
  @@:
568
  @@:
569
;---------------------------------------------
569
;---------------------------------------------
570
	;po-moumu eto govno mamonta
570
	;po-moumu eto govno mamonta
571
	
571
	
572
    ;mcall 47,0x30000,isymImplemented,<114,8>, 0x10DDEEFF
572
    ;mcall 47,0x30000,isymImplemented,<114,8>, 0x10DDEEFF
573
    ;add  edx,36 shl 16
573
    ;add  edx,36 shl 16
574
    ;mcall ,,isymMax
574
    ;mcall ,,isymMax
575
    add  edx,40 shl 16
575
    add  edx,40 shl 16
576
    mov  esi,0x104e00e7;0x10f27840
576
    mov  esi,0x104e00e7;0x10f27840
577
    cmp  dword[fileinfo.name],N_A
577
    cmp  dword[fileinfo.name],N_A
578
    jne  .noNA
578
    jne  .noNA
579
    mov  esi,0x10ff0000
579
    mov  esi,0x10ff0000
580
  .noNA:
580
  .noNA:
581
;    mcall 4,edx,esi,fileinfo.name,[fname_size]
581
;    mcall 4,edx,esi,fileinfo.name,[fname_size]
582
    mcall 9,prcinfo,-1
582
    mcall 9,prcinfo,-1
583
    and  [mode],not RTF_TOEOF
583
    and  [mode],not RTF_TOEOF
584
    mov  ebx,[edi+42]
584
    mov  ebx,[edi+42]
585
    cmp  ebx,[wSave]
585
    cmp  ebx,[wSave]
586
    je   .nochg
586
    je   .nochg
587
  .chg:
587
  .chg:
588
    mov  [wSave],ebx
588
    mov  [wSave],ebx
589
    or   [mode],RTF_TOEOF
589
    or   [mode],RTF_TOEOF
590
    and  [HDoc],0
590
    and  [HDoc],0
591
    and  [line_count],0
591
    and  [line_count],0
592
;    mov  [HClick],-100
592
;    mov  [HClick],-100
593
  .nochg:
593
  .nochg:
594
 
594
 
595
;---------------------------------------------
595
;---------------------------------------------
596
    call  Set_scroll_position
596
    call  Set_scroll_position
597
 
597
 
598
;---------------------------------------------
598
;---------------------------------------------
599
    mov ebx, dword[prcinfo+0x3E]
599
    mov ebx, dword[prcinfo+0x3E]
600
    mcall     38, , 65536*18+18, 0x8b8b89
600
    mcall     38, , 65536*18+18, 0x8b8b89
601
    inc ebx
601
    inc ebx
602
    mcall     13, , 65536*0+18, 0xe9e9e2
602
    mcall     13, , 65536*0+18, 0xe9e9e2
603
;---------------------------------------------
603
;---------------------------------------------
604
; draw for Menu 1
604
; draw for Menu 1
605
        push    dword menu_data_1
605
        push    dword menu_data_1
606
        call    [menu_bar_draw] 
606
        call    [menu_bar_draw] 
607
; draw for Menu 2
607
; draw for Menu 2
608
        push    dword menu_data_2
608
        push    dword menu_data_2
609
        call    [menu_bar_draw] 
609
        call    [menu_bar_draw] 
610
; draw for Menu 3
610
; draw for Menu 3
611
        push    dword menu_data_3
611
        push    dword menu_data_3
612
        call    [menu_bar_draw]         
612
        call    [menu_bar_draw]         
613
;---------------------------------------------
613
;---------------------------------------------
614
 
614
 
615
    sub  dword[prcinfo+42],2*LMARGIN+SCROLL_WIDTH_SIZE
615
    sub  dword[prcinfo+42],2*LMARGIN+SCROLL_WIDTH_SIZE
616
    sub  dword[prcinfo+46],CHARH+25
616
    sub  dword[prcinfo+46],CHARH+25
617
    
617
    
618
 if GUTTER eq 1
618
 if GUTTER eq 1
619
    mov  ebx,LMARGIN shl 16+20
619
    mov  ebx,LMARGIN shl 16+20
620
    mov  ecx,20
620
    mov  ecx,20
621
    mov  eax,4
621
    mov  eax,4
622
    mov  edx,arrow
622
    mov  edx,arrow
623
    mov  esi,1
623
    mov  esi,1
624
  .loop1:
624
  .loop1:
625
    push ecx
625
    push ecx
626
    mcall ,,0xff0000
626
    mcall ,,0xff0000
627
    pop  ecx
627
    pop  ecx
628
    add  ebx,50 shl 16
628
    add  ebx,50 shl 16
629
    loop .loop1
629
    loop .loop1
630
 end if
630
 end if
631
 if MODE eq RTF
631
 if MODE eq RTF
632
    test [mode],RTF_OPENING
632
    test [mode],RTF_OPENING
633
    jne  .ex
633
    jne  .ex
634
    and  [mode],not (RTF_BOTTOM);+RTF_TOEOF)
634
    and  [mode],not (RTF_BOTTOM);+RTF_TOEOF)
635
    mov  [colorptr],colortbl
635
    mov  [colorptr],colortbl
636
    mov  eax,DEFCOLOR
636
    mov  eax,DEFCOLOR
637
    mov  edi,colortbl
637
    mov  edi,colortbl
638
    mov  ecx,16
638
    mov  ecx,16
639
    rep  stosd
639
    rep  stosd
640
    xor  eax,eax
640
    xor  eax,eax
641
    mov  [cGroup],eax
641
    mov  [cGroup],eax
642
    mov  edi,Chp
642
    mov  edi,Chp
643
    mov  ecx,SIZE_save
643
    mov  ecx,SIZE_save
644
    rep  stosb
644
    rep  stosb
645
    mov  ax,[top]
645
    mov  ax,[top]
646
    mov  word[Free+6],10
646
    mov  word[Free+6],10
647
    mov  word[Free+4],ax
647
    mov  word[Free+4],ax
648
    mov  esi,I_END
648
    mov  esi,I_END
649
    call RtfParse
649
    call RtfParse
650
;    dpd  eax
650
;    dpd  eax
651
;    dps  'Lines='
651
;    dps  'Lines='
652
    mov  eax,[line_count]
652
    mov  eax,[line_count]
653
;    dpd  eax
653
;    dpd  eax
654
;    newline
654
;    newline
655
;    movzx  eax,word[Free+4]
655
;    movzx  eax,word[Free+4]
656
;    dpd  eax
656
;    dpd  eax
657
    mov  eax,dword[prcinfo+42]
657
    mov  eax,dword[prcinfo+42]
658
    mov  edx,WIN_COLOR
658
    mov  edx,WIN_COLOR
659
    call draw_progress
659
    call draw_progress
660
if BENCH eq 1
660
if BENCH eq 1
661
    mcall 26,9
661
    mcall 26,9
662
    sub  eax,[bench]
662
    sub  eax,[bench]
663
;    dps  <13,10,'Bench='>
663
;    dps  <13,10,'Bench='>
664
;    dpd  eax
664
;    dpd  eax
665
end if
665
end if
666
 else
666
 else
667
    mov  [char],0
667
    mov  [char],0
668
    mov  ebx,10 shl 16+TOP
668
    mov  ebx,10 shl 16+TOP
669
    mov  ecx,16
669
    mov  ecx,16
670
  .l0:
670
  .l0:
671
    push ecx
671
    push ecx
672
    mov  ecx,16
672
    mov  ecx,16
673
  .l1:
673
  .l1:
674
    push ecx
674
    push ecx
675
  if RENDER eq BGI
675
  if RENDER eq BGI
676
    mov  edx,char
676
    mov  edx,char
677
    mov  ecx,0x48000000
677
    mov  ecx,0x48000000
678
    mov  esi,1
678
    mov  esi,1
679
    BGIfont_Outtext
679
    BGIfont_Outtext
680
  else
680
  else
681
    mcall 4,,0x10000000,char,1
681
    mcall 4,,0x10000000,char,1
682
  end if
682
  end if
683
    pop  ecx
683
    pop  ecx
684
    inc  [char]
684
    inc  [char]
685
    add  ebx,(CHARW+3) shl 16
685
    add  ebx,(CHARW+3) shl 16
686
    loop .l1
686
    loop .l1
687
    pop  ecx
687
    pop  ecx
688
    add  ebx,CHARH+2
688
    add  ebx,CHARH+2
689
    and  ebx,0x0000ffff
689
    and  ebx,0x0000ffff
690
    add  ebx,10 shl 16
690
    add  ebx,10 shl 16
691
    loop .l0
691
    loop .l0
692
 end if
692
 end if
693
 .ex:
693
 .ex:
694
call Set_position
694
call Set_position
695
;---------------------------------------------
695
;---------------------------------------------
696
    cmp  dword[is_scroll_bar_needed], 0
696
    cmp  dword[is_scroll_bar_needed], 0
697
     je  @f
697
     je  @f
698
        xor     eax,eax
698
        xor     eax,eax
699
        inc     eax
699
        inc     eax
700
        mov     [scroll_bar_data_vertical.all_redraw],eax
700
        mov     [scroll_bar_data_vertical.all_redraw],eax
701
; draw for Vertical ScrollBar
701
; draw for Vertical ScrollBar
702
        push    dword scroll_bar_data_vertical
702
        push    dword scroll_bar_data_vertical
703
        call    [scrollbar_ver_draw]
703
        call    [scrollbar_ver_draw]
704
; reset all_redraw flag 
704
; reset all_redraw flag 
705
        xor     eax,eax
705
        xor     eax,eax
706
        mov     [scroll_bar_data_vertical.all_redraw],eax
706
        mov     [scroll_bar_data_vertical.all_redraw],eax
707
  @@:
707
  @@:
708
;---------------------------------------------
708
;---------------------------------------------
709
    mcall 12, 2
709
    mcall 12, 2
710
    ret
710
    ret
711
 
711
 
712
;---------------------------------------------------------------------
712
;---------------------------------------------------------------------
713
Set_position:
713
Set_position:
714
    mov  eax, dword[prcinfo+46]
714
    mov  eax, dword[prcinfo+46]
715
    cmp  eax, [HDoc]
715
    cmp  eax, [HDoc]
716
    mov  dword[is_scroll_bar_needed], 0
716
    mov  dword[is_scroll_bar_needed], 0
717
     jnl .quit
717
     jnl .quit
718
    mov  dword[is_scroll_bar_needed], 1
718
    mov  dword[is_scroll_bar_needed], 1
719
 
719
 
720
    mov  eax, [scroll_bar_data_vertical.max_area]
720
    mov  eax, [scroll_bar_data_vertical.max_area]
721
    mul  dword[prcinfo+46]
721
    mul  dword[prcinfo+46]
722
    div  dword[HDoc]
722
    div  dword[HDoc]
723
    cmp  eax, [scroll_bar_data_vertical.max_area]
723
    cmp  eax, [scroll_bar_data_vertical.max_area]
724
    mov  dword[scroll_bar_data_vertical.cur_area],eax
724
    mov  dword[scroll_bar_data_vertical.cur_area],eax
725
     jng @f
725
     jng @f
726
    mov  eax, [scroll_bar_data_vertical.max_area]
726
    mov  eax, [scroll_bar_data_vertical.max_area]
727
    mov  dword[scroll_bar_data_vertical.cur_area], eax
727
    mov  dword[scroll_bar_data_vertical.cur_area], eax
728
  @@:
728
  @@:
729
    mov eax, [HDoc]
729
    mov eax, [HDoc]
730
    cmp eax, dword[prcinfo+46]
730
    cmp eax, dword[prcinfo+46]
731
    sub eax, dword[prcinfo+46]
731
    sub eax, dword[prcinfo+46]
732
    add eax, 20                    ; height of clear area under text when you are at the end of document
732
    add eax, 20                    ; height of clear area under text when you are at the end of document
733
     jg @f
733
     jg @f
734
    mov eax, 0
734
    mov eax, 0
735
  @@:
735
  @@:
736
    mul [scroll_bar_data_vertical.position]
736
    mul [scroll_bar_data_vertical.position]
737
    mov ebx, [scroll_bar_data_vertical.max_area]
737
    mov ebx, [scroll_bar_data_vertical.max_area]
738
    sub ebx, [scroll_bar_data_vertical.cur_area]
738
    sub ebx, [scroll_bar_data_vertical.cur_area]
739
    div ebx
739
    div ebx
740
    
740
    
741
    mov dword[top], TOP
741
    mov dword[top], TOP
742
    sub dword[top], eax
742
    sub dword[top], eax
743
    
743
    
744
  .quit:
744
  .quit:
745
    ret
745
    ret
746
;---------------------------------------------------------------------
746
;---------------------------------------------------------------------
747
Set_scroll_position:
747
Set_scroll_position:
748
    mcall 9, procinfo2, -1
748
    mcall 9, procinfo2, -1
749
    mov eax, dword[procinfo2+0x3E]
749
    mov eax, dword[procinfo2+0x3E]
750
    sub eax, SCROLL_WIDTH_SIZE
750
    sub eax, SCROLL_WIDTH_SIZE
751
    mov word[scroll_bar_data_vertical.start_x], ax
751
    mov word[scroll_bar_data_vertical.start_x], ax
752
 
752
 
753
    mov eax, dword[procinfo2+0x42]
753
    mov eax, dword[procinfo2+0x42]
754
    sub eax, 17
754
    sub eax, 17
755
    mov word[scroll_bar_data_vertical.size_y], ax
755
    mov word[scroll_bar_data_vertical.size_y], ax
756
    
756
    
757
    ret
757
    ret
758
;---------------------------------------------------------------------
758
;---------------------------------------------------------------------
759
 
759
 
760
if GUTTER eq 1
760
if GUTTER eq 1
761
   arrow db 0x19
761
   arrow db 0x19
762
end if
762
end if
763
;---------------------------------------------------------------------
763
;---------------------------------------------------------------------
764
;---  „€›… Žƒ€ŒŒ›  ----------------------------------------------
764
;---  „€›… Žƒ€ŒŒ›  ----------------------------------------------
765
;---------------------------------------------------------------------
765
;---------------------------------------------------------------------
766
 
766
 
767
; ¨­â¥àä¥©á ¯à®£à ¬¬ë ¬­®£®ï§ëç­ë©
767
; ¨­â¥àä¥©á ¯à®£à ¬¬ë ¬­®£®ï§ëç­ë©
768
;  ‚ë ¬®¦¥â¥ § ¤ âì ï§ëª ¢ MACROS.INC (lang fix ï§ëª)
768
;  ‚ë ¬®¦¥â¥ § ¤ âì ï§ëª ¢ MACROS.INC (lang fix ï§ëª)
769
 
769
 
770
window_title:           db      'RtfRead v1.4',0
770
window_title:           db      'RtfRead v1.4',0
771
is_scroll_bar_needed    dd      0x0
771
is_scroll_bar_needed    dd      0x0
772
window_width            dd      0x0
772
window_width            dd      0x0
773
window_height           dd      0x0
773
window_height           dd      0x0
774
skin_height             dd      0x0
774
skin_height             dd      0x0
775
;---------------------------------------------------------------------
775
;---------------------------------------------------------------------
776
l_libs_start:
776
l_libs_start:
777
 
777
 
778
library01  l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \
778
library01  l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \
779
err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
779
err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
780
 
780
 
781
library02  l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \
781
library02  l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \
782
err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
782
err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
783
 
783
 
784
end_l_libs:
784
end_l_libs:
785
;---------------------------------------------------------------------
785
;---------------------------------------------------------------------
786
system_dir_ProcLib      db '/sys/lib/proc_lib.obj',0
786
system_dir_ProcLib      db '/sys/lib/proc_lib.obj',0
787
system_dir_Boxlib       db '/sys/lib/box_lib.obj',0
787
system_dir_Boxlib       db '/sys/lib/box_lib.obj',0
788
 
788
 
789
head_f_i:
789
head_f_i:
790
head_f_l                db 'error',0
790
head_f_l                db 'error',0
791
 
791
 
792
err_message_found_lib1  db 'box_lib.obj - Not found!',0
792
err_message_found_lib1  db 'box_lib.obj - Not found!',0
793
err_message_found_lib2  db 'proc_lib.obj - Not found!',0
793
err_message_found_lib2  db 'proc_lib.obj - Not found!',0
794
 
794
 
795
err_message_import1     db 'box_lib.obj - Wrong import!',0
795
err_message_import1     db 'box_lib.obj - Wrong import!',0
796
err_message_import2     db 'proc_lib.obj - Wrong import!',0
796
err_message_import2     db 'proc_lib.obj - Wrong import!',0
797
 
797
 
798
;---------------------------------------------------------------------
798
;---------------------------------------------------------------------
799
align 4
799
align 4
800
ProcLib_import:
800
ProcLib_import:
801
OpenDialog_Init         dd aOpenDialog_Init
801
OpenDialog_Init         dd aOpenDialog_Init
802
OpenDialog_Start        dd aOpenDialog_Start
802
OpenDialog_Start        dd aOpenDialog_Start
803
;OpenDialog__Version    dd aOpenDialog_Version
803
;OpenDialog__Version    dd aOpenDialog_Version
804
        dd      0
804
        dd      0
805
        dd      0
805
        dd      0
806
aOpenDialog_Init        db 'OpenDialog_init',0
806
aOpenDialog_Init        db 'OpenDialog_init',0
807
aOpenDialog_Start       db 'OpenDialog_start',0
807
aOpenDialog_Start       db 'OpenDialog_start',0
808
;aOpenDialog_Version    db 'Version_OpenDialog',0
808
;aOpenDialog_Version    db 'Version_OpenDialog',0
809
;---------------------------------------------------------------------
809
;---------------------------------------------------------------------
810
OpenDialog_data:
810
OpenDialog_data:
811
.type                   dd 0
811
.type                   dd 0
812
.procinfo               dd procinfo ;+4
812
.procinfo               dd procinfo ;+4
813
.com_area_name          dd communication_area_name ;+8
813
.com_area_name          dd communication_area_name ;+8
814
.com_area               dd 0 ;+12
814
.com_area               dd 0 ;+12
815
.opendir_pach           dd temp_dir_pach ;+16
815
.opendir_pach           dd temp_dir_pach ;+16
816
.dir_default_pach       dd communication_area_default_pach ;+20
816
.dir_default_pach       dd communication_area_default_pach ;+20
817
.start_path             dd open_dialog_path ;+24
817
.start_path             dd open_dialog_path ;+24
818
.draw_window            dd draw_window ;+28
818
.draw_window            dd draw_window ;+28
819
.status                 dd 0 ;+32
819
.status                 dd 0 ;+32
820
.openfile_pach          dd fname_buf ;+36
820
.openfile_pach          dd fname_buf ;+36
821
.filename_area          dd 0    ;+40
821
.filename_area          dd 0    ;+40
822
.filter_area            dd Filter
822
.filter_area            dd Filter
823
.x:
823
.x:
824
.x_size			dw 420 ;+48 ; Window X size
824
.x_size			dw 420 ;+48 ; Window X size
825
.x_start		dw 10 ;+50 ; Window X position
825
.x_start		dw 10 ;+50 ; Window X position
826
.y:
826
.y:
827
.y_size			dw 320 ;+52 ; Window y size
827
.y_size			dw 320 ;+52 ; Window y size
828
.y_start		dw 10 ;+54 ; Window Y position
828
.y_start		dw 10 ;+54 ; Window Y position
829
 
829
 
830
communication_area_name:
830
communication_area_name:
831
        db 'FFFFFFFF_open_dialog',0
831
        db 'FFFFFFFF_open_dialog',0
832
open_dialog_path:
832
open_dialog_path:
833
if __nightbuild eq yes
833
if __nightbuild eq yes
834
    db '/sys/MANAGERS/opendial',0
834
    db '/sys/MANAGERS/opendial',0
835
else
835
else
836
    db '/sys/File Managers/opendial',0
836
    db '/sys/File Managers/opendial',0
837
end if
837
end if
838
communication_area_default_pach:
838
communication_area_default_pach:
839
        db '/rd/1',0
839
        db '/rd/1',0
840
 
840
 
841
Filter:
841
Filter:
842
dd Filter.end - Filter
842
dd Filter.end - Filter
843
.1:
843
.1:
844
db 'RTF',0
844
db 'RTF',0
845
.end:
845
.end:
846
db 0
846
db 0
847
;---------------------------------------------------------------------
847
;---------------------------------------------------------------------
848
attrinfo:
848
attrinfo:
849
        dd      5
849
        dd      5
850
        dd      0
850
        dd      0
851
        dd      0
851
        dd      0
852
        dd      0
852
        dd      0
853
        dd      fileattr
853
        dd      fileattr
854
        db      0
854
        db      0
855
        dd      fileinfo.name
855
        dd      fileinfo.name
856
 
856
 
857
fileinfo:
857
fileinfo:
858
  dd 0
858
  dd 0
859
.block:
859
.block:
860
  dd 0
860
  dd 0
861
  dd 0
861
  dd 0
862
.size  dd 1
862
.size  dd 1
863
  dd I_END
863
  dd I_END
864
.name:
864
.name:
865
 
865
 
866
;  db '/HD/1/RTF/texts/index_ru.RTF',0
866
;  db '/HD/1/RTF/texts/index_ru.RTF',0
867
 
867
 
868
   rb  256-($-.name)
868
   rb  256-($-.name)
869
;---------------------------------------------------------------------
869
;---------------------------------------------------------------------
870
align   4
870
align   4
871
Box_lib_import:
871
Box_lib_import:
872
 
872
 
873
menu_bar_draw           dd aMenu_bar_draw
873
menu_bar_draw           dd aMenu_bar_draw
874
menu_bar_mouse          dd aMenu_bar_mouse
874
menu_bar_mouse          dd aMenu_bar_mouse
875
 
875
 
876
scrollbar_ver_draw      dd aScrollbar_ver_draw
876
scrollbar_ver_draw      dd aScrollbar_ver_draw
877
scrollbar_ver_mouse     dd aScrollbar_ver_mouse
877
scrollbar_ver_mouse     dd aScrollbar_ver_mouse
878
 
878
 
879
        dd 0
879
        dd 0
880
        dd 0
880
        dd 0
881
 
881
 
882
aMenu_bar_draw          db 'menu_bar_draw',0
882
aMenu_bar_draw          db 'menu_bar_draw',0
883
aMenu_bar_mouse         db 'menu_bar_mouse',0
883
aMenu_bar_mouse         db 'menu_bar_mouse',0
884
;aVersion_menu_bar       db 'version_menu_bar',0
884
;aVersion_menu_bar       db 'version_menu_bar',0
885
 
885
 
886
aScrollbar_ver_draw     db 'scrollbar_v_draw',0
886
aScrollbar_ver_draw     db 'scrollbar_v_draw',0
887
aScrollbar_ver_mouse    db 'scrollbar_v_mouse',0
887
aScrollbar_ver_mouse    db 'scrollbar_v_mouse',0
888
;---------------------------------------------------------------------
888
;---------------------------------------------------------------------
889
align   4
889
align   4
890
menu_data_1:
890
menu_data_1:
891
.type:          dd 0    ;+0
891
.type:          dd 0    ;+0
892
.x:
892
.x:
893
.size_x         dw 40   ;+4
893
.size_x         dw 40   ;+4
894
.start_x        dw 2    ;+6
894
.start_x        dw 2    ;+6
895
.y:
895
.y:
896
.size_y         dw 15   ;+8
896
.size_y         dw 15   ;+8
897
.start_y        dw 2    ;+10
897
.start_y        dw 2    ;+10
898
.text_pointer:  dd menu_text_area       ;0      ;+12
898
.text_pointer:  dd menu_text_area       ;0      ;+12
899
.pos_pointer:   dd menu_text_area.1     ;0      ;+16
899
.pos_pointer:   dd menu_text_area.1     ;0      ;+16
900
.text_end       dd menu_text_area.end   ;0      ;+20
900
.text_end       dd menu_text_area.end   ;0      ;+20
901
.mouse_pos      dd 0    ;+24
901
.mouse_pos      dd 0    ;+24
902
.mouse_keys     dd 0    ;+28
902
.mouse_keys     dd 0    ;+28
903
.x1:
903
.x1:
904
.size_x1        dw 40   ;+32
904
.size_x1        dw 40   ;+32
905
.start_x1       dw 2    ;+34
905
.start_x1       dw 2    ;+34
906
.y1:
906
.y1:
907
.size_y1        dw 100  ;+36
907
.size_y1        dw 100  ;+36
908
.start_y1       dw 18   ;+38
908
.start_y1       dw 18   ;+38
909
.bckg_col       dd 0xeeeeee     ;+40
909
.bckg_col       dd 0xeeeeee     ;+40
910
.frnt_col       dd 0xff ;+44
910
.frnt_col       dd 0xff ;+44
911
.menu_col       dd 0xffffff     ;+48
911
.menu_col       dd 0xffffff     ;+48
912
.select         dd 0    ;+52
912
.select         dd 0    ;+52
913
.out_select     dd 0    ;+56
913
.out_select     dd 0    ;+56
914
.buf_adress     dd 0    ;+60
914
.buf_adress     dd 0    ;+60
915
.procinfo       dd 0    ;+64
915
.procinfo       dd 0    ;+64
916
.click          dd 0    ;+68
916
.click          dd 0    ;+68
917
.cursor         dd 0    ;+72
917
.cursor         dd 0    ;+72
918
.cursor_old     dd 0    ;+76
918
.cursor_old     dd 0    ;+76
919
.interval       dd 16   ;+80
919
.interval       dd 16   ;+80
920
.cursor_max     dd 0    ;+84
920
.cursor_max     dd 0    ;+84
921
.extended_key   dd 0    ;+88
921
.extended_key   dd 0    ;+88
922
.menu_sel_col   dd 0x00cc00     ;+92
922
.menu_sel_col   dd 0x00cc00     ;+92
923
.bckg_text_col  dd 0    ;+96
923
.bckg_text_col  dd 0    ;+96
924
.frnt_text_col  dd 0xffffff     ;+100
924
.frnt_text_col  dd 0xffffff     ;+100
925
.mouse_keys_old dd 0    ;+104
925
.mouse_keys_old dd 0    ;+104
926
.font_height    dd 8    ;+108
926
.font_height    dd 8    ;+108
927
.cursor_out     dd 0    ;+112
927
.cursor_out     dd 0    ;+112
928
.get_mouse_flag dd 0    ;+116
928
.get_mouse_flag dd 0    ;+116
929
 
929
 
930
menu_text_area:
930
menu_text_area:
931
        db 'File',0
931
        db 'File',0
932
.1:
932
.1:
933
        db 'Open',0
933
        db 'Open',0
934
        db 'Exit',0
934
        db 'Exit',0
935
.end:
935
.end:
936
        db 0
936
        db 0
937
;---------------------------------------------------------------------
937
;---------------------------------------------------------------------
938
align   4
938
align   4
939
menu_data_2:
939
menu_data_2:
940
.type:          dd 0    ;+0
940
.type:          dd 0    ;+0
941
.x:
941
.x:
942
.size_x         dw 40   ;+4
942
.size_x         dw 40   ;+4
943
.start_x        dw 43   ;+6
943
.start_x        dw 43   ;+6
944
.y:
944
.y:
945
.size_y         dw 15   ;+8
945
.size_y         dw 15   ;+8
946
.start_y        dw 2    ;+10
946
.start_y        dw 2    ;+10
947
.text_pointer:  dd menu_text_area_2     ;0      ;+12
947
.text_pointer:  dd menu_text_area_2     ;0      ;+12
948
.pos_pointer:   dd menu_text_area_2.1   ;0      ;+16
948
.pos_pointer:   dd menu_text_area_2.1   ;0      ;+16
949
.text_end       dd menu_text_area_2.end ;0      ;+20
949
.text_end       dd menu_text_area_2.end ;0      ;+20
950
.mouse_pos      dd 0    ;+24
950
.mouse_pos      dd 0    ;+24
951
.mouse_keys     dd 0    ;+28
951
.mouse_keys     dd 0    ;+28
952
.x1:
952
.x1:
953
.size_x1        dw 50   ;+32
953
.size_x1        dw 50   ;+32
954
.start_x1       dw 43   ;+34
954
.start_x1       dw 43   ;+34
955
.y1:
955
.y1:
956
.size_y1        dw 100  ;+36
956
.size_y1        dw 100  ;+36
957
.start_y1       dw 18   ;+38
957
.start_y1       dw 18   ;+38
958
.bckg_col       dd 0xeeeeee     ;+40
958
.bckg_col       dd 0xeeeeee     ;+40
959
.frnt_col       dd 0xff ;+44
959
.frnt_col       dd 0xff ;+44
960
.menu_col       dd 0xffffff     ;+48
960
.menu_col       dd 0xffffff     ;+48
961
.select         dd 0    ;+52
961
.select         dd 0    ;+52
962
.out_select     dd 0    ;+56
962
.out_select     dd 0    ;+56
963
.buf_adress     dd 0    ;+60
963
.buf_adress     dd 0    ;+60
964
.procinfo       dd 0    ;+64
964
.procinfo       dd 0    ;+64
965
.click          dd 0    ;+68
965
.click          dd 0    ;+68
966
.cursor         dd 0    ;+72
966
.cursor         dd 0    ;+72
967
.cursor_old     dd 0    ;+76
967
.cursor_old     dd 0    ;+76
968
.interval       dd 16   ;+80
968
.interval       dd 16   ;+80
969
.cursor_max     dd 0    ;+84
969
.cursor_max     dd 0    ;+84
970
.extended_key   dd 0    ;+88
970
.extended_key   dd 0    ;+88
971
.menu_sel_col   dd 0x00cc00     ;+92
971
.menu_sel_col   dd 0x00cc00     ;+92
972
.bckg_text_col  dd 0    ;       +96
972
.bckg_text_col  dd 0    ;       +96
973
.frnt_text_col  dd 0xffffff     ;+100
973
.frnt_text_col  dd 0xffffff     ;+100
974
.mouse_keys_old dd 0    ;+104
974
.mouse_keys_old dd 0    ;+104
975
.font_height    dd 8    ;+108
975
.font_height    dd 8    ;+108
976
.cursor_out     dd 0    ;+112
976
.cursor_out     dd 0    ;+112
977
.get_mouse_flag dd 0    ;+116
977
.get_mouse_flag dd 0    ;+116
978
 
978
 
979
menu_text_area_2:
979
menu_text_area_2:
980
        db 'View',0
980
        db 'View',0
981
.1:
981
.1:
982
        db 'Zoom +',0
982
        db 'Zoom +',0
983
        db 'Zoom -',0
983
        db 'Zoom -',0
984
        db ' > >',0
984
        db ' > >',0
985
        db ' << ',0
985
        db ' << ',0
986
        db 'Align',0
986
        db 'Align',0
987
        db 'Color',0
987
        db 'Color',0
988
.end:
988
.end:
989
        db 0
989
        db 0
990
;---------------------------------------------------------------------
990
;---------------------------------------------------------------------
991
align   4
991
align   4
992
menu_data_3:
992
menu_data_3:
993
.type:          dd 0    ;+0
993
.type:          dd 0    ;+0
994
.x:
994
.x:
995
.size_x         dw 40   ;+4
995
.size_x         dw 40   ;+4
996
.start_x        dw 84   ;+6
996
.start_x        dw 84   ;+6
997
.y:
997
.y:
998
.size_y         dw 15   ;+8
998
.size_y         dw 15   ;+8
999
.start_y        dw 2    ;+10
999
.start_y        dw 2    ;+10
1000
.text_pointer:  dd menu_text_area_3     ;0      ;+12
1000
.text_pointer:  dd menu_text_area_3     ;0      ;+12
1001
.pos_pointer:   dd menu_text_area_3.1   ;0      ;+16
1001
.pos_pointer:   dd menu_text_area_3.1   ;0      ;+16
1002
.text_end       dd menu_text_area_3.end ;0      ;+20
1002
.text_end       dd menu_text_area_3.end ;0      ;+20
1003
.mouse_pos      dd 0    ;+24
1003
.mouse_pos      dd 0    ;+24
1004
.mouse_keys     dd 0    ;+28
1004
.mouse_keys     dd 0    ;+28
1005
.x1:
1005
.x1:
1006
.size_x1        dw 40   ;+32
1006
.size_x1        dw 40   ;+32
1007
.start_x1       dw 84   ;+34
1007
.start_x1       dw 84   ;+34
1008
.y1:
1008
.y1:
1009
.size_y1        dw 100  ;+36
1009
.size_y1        dw 100  ;+36
1010
.start_y1       dw 18   ;+38
1010
.start_y1       dw 18   ;+38
1011
.bckg_col       dd 0xeeeeee     ;+40
1011
.bckg_col       dd 0xeeeeee     ;+40
1012
.frnt_col       dd 0xff ;+44
1012
.frnt_col       dd 0xff ;+44
1013
.menu_col       dd 0xffffff     ;+48
1013
.menu_col       dd 0xffffff     ;+48
1014
.select         dd 0    ;+52
1014
.select         dd 0    ;+52
1015
.out_select     dd 0    ;+56
1015
.out_select     dd 0    ;+56
1016
.buf_adress     dd 0    ;+60
1016
.buf_adress     dd 0    ;+60
1017
.procinfo       dd 0    ;+64
1017
.procinfo       dd 0    ;+64
1018
.click          dd 0    ;+68
1018
.click          dd 0    ;+68
1019
.cursor         dd 0    ;+72
1019
.cursor         dd 0    ;+72
1020
.cursor_old     dd 0    ;+76
1020
.cursor_old     dd 0    ;+76
1021
.interval       dd 16   ;+80
1021
.interval       dd 16   ;+80
1022
.cursor_max     dd 0    ;+84
1022
.cursor_max     dd 0    ;+84
1023
.extended_key   dd 0    ;+88
1023
.extended_key   dd 0    ;+88
1024
.menu_sel_col   dd 0x00cc00     ;+92
1024
.menu_sel_col   dd 0x00cc00     ;+92
1025
.bckg_text_col  dd 0    ;       +96
1025
.bckg_text_col  dd 0    ;       +96
1026
.frnt_text_col  dd 0xffffff     ;+100
1026
.frnt_text_col  dd 0xffffff     ;+100
1027
.mouse_keys_old dd 0    ;+104
1027
.mouse_keys_old dd 0    ;+104
1028
.font_height    dd 8    ;+108
1028
.font_height    dd 8    ;+108
1029
.cursor_out     dd 0    ;+112
1029
.cursor_out     dd 0    ;+112
1030
.get_mouse_flag dd 0    ;+116
1030
.get_mouse_flag dd 0    ;+116
1031
 
1031
 
1032
menu_text_area_3:
1032
menu_text_area_3:
1033
        db 'Help',0
1033
        db 'Help',0
1034
.1:
1034
.1:
1035
        db 'Home',0
1035
        db 'Home',0
1036
.end:
1036
.end:
1037
        db 0
1037
        db 0
1038
;---------------------------------------------------------------------
1038
;---------------------------------------------------------------------
1039
align   4
1039
align   4
1040
scroll_bar_data_vertical:
1040
scroll_bar_data_vertical:
1041
.x:
1041
.x:
1042
.size_x         dw SCROLL_WIDTH_SIZE;+0
1042
.size_x         dw SCROLL_WIDTH_SIZE;+0
1043
.start_x        dw WINW-25  ;+2
1043
.start_x        dw WINW-25  ;+2
1044
.y:
1044
.y:
1045
.size_y         dw WINH-45  ;+4
1045
.size_y         dw WINH-45  ;+4
1046
.start_y        dw 19   ;+6
1046
.start_y        dw 19   ;+6
1047
.btn_high       dd SCROLL_WIDTH_SIZE    ;+8
1047
.btn_high       dd SCROLL_WIDTH_SIZE    ;+8
1048
.type           dd 0    ;+12
1048
.type           dd 0    ;+12
1049
.max_area       dd 300       ;+16
1049
.max_area       dd 300       ;+16
1050
.cur_area       dd 50   ;+20
1050
.cur_area       dd 50   ;+20
1051
.position       dd 0    ;+24
1051
.position       dd 0    ;+24
1052
.bckg_col       dd 0xAAAAAA     ;+28
1052
.bckg_col       dd 0xAAAAAA     ;+28
1053
.frnt_col       dd 0xCCCCCC     ;+32
1053
.frnt_col       dd 0xCCCCCC     ;+32
1054
.line_col       dd 0    ;+36
1054
.line_col       dd 0    ;+36
1055
.redraw         dd 0    ;+40
1055
.redraw         dd 0    ;+40
1056
.delta          dw 0    ;+44
1056
.delta          dw 0    ;+44
1057
.delta2         dw 0    ;+46
1057
.delta2         dw 0    ;+46
1058
.run_x:
1058
.run_x:
1059
.r_size_x       dw 0    ;+48
1059
.r_size_x       dw 0    ;+48
1060
.r_start_x      dw 0    ;+50
1060
.r_start_x      dw 0    ;+50
1061
.run_y:
1061
.run_y:
1062
.r_size_y       dw 0    ;+52
1062
.r_size_y       dw 0    ;+52
1063
.r_start_y      dw 0    ;+54
1063
.r_start_y      dw 0    ;+54
1064
.m_pos          dd 0    ;+56
1064
.m_pos          dd 0    ;+56
1065
.m_pos_2        dd 0    ;+60
1065
.m_pos_2        dd 0    ;+60
1066
.m_keys         dd 0    ;+64
1066
.m_keys         dd 0    ;+64
1067
.run_size       dd 0    ;+68
1067
.run_size       dd 0    ;+68
1068
.position2      dd 0    ;+72
1068
.position2      dd 0    ;+72
1069
.work_size      dd 0    ;+76
1069
.work_size      dd 0    ;+76
1070
.all_redraw     dd 0    ;+80
1070
.all_redraw     dd 0    ;+80
1071
.ar_offset      dd AR_OFFSET   ;+84
1071
.ar_offset      dd AR_OFFSET   ;+84
1072
 
1072
 
1073
;---------------------------------------------------------------------
1073
;---------------------------------------------------------------------
1074
;blind db ?
1074
;blind db ?
1075
if RENDER eq PIX
1075
if RENDER eq PIX
1076
;  rd 2
1076
;  rd 2
1077
  Free rd 9
1077
  Free rd 9
1078
else
1078
else
1079
if RENDER eq BGI
1079
if RENDER eq BGI
1080
  FreeFontscale dd 0.07
1080
  FreeFontscale dd 0.07
1081
else
1081
else
1082
  Zoomscale dd 1.15
1082
  Zoomscale dd 1.15
1083
  FreeFontscale dd 0.04
1083
  FreeFontscale dd 0.04
1084
end if
1084
end if
1085
  Free BGIfree FONT_NAME,0,0,1.0,1.0,char,1,0x44000000,0
1085
  Free BGIfree FONT_NAME,0,0,1.0,1.0,char,1,0x44000000,0
1086
end if
1086
end if
1087
I_END0:
1087
I_END0:
1088
fname_buf:
1088
fname_buf:
1089
        rb      1024+16
1089
        rb      1024+16
1090
fileattr rd 40/4
1090
fileattr rd 40/4
1091
if BENCH eq 1
1091
if BENCH eq 1
1092
  bench dd ?
1092
  bench dd ?
1093
end if
1093
end if
1094
tail dd ?
1094
tail dd ?
1095
cGroup dd ?
1095
cGroup dd ?
1096
Chp:
1096
Chp:
1097
  CHP
1097
  CHP
1098
Pap:
1098
Pap:
1099
  PAP
1099
  PAP
1100
Sep:
1100
Sep:
1101
  SEP
1101
  SEP
1102
Dop:
1102
Dop:
1103
  DOP
1103
  DOP
1104
rds db ?
1104
rds db ?
1105
ris db ?
1105
ris db ?
1106
cbBin dd ?
1106
cbBin dd ?
1107
lParam dd ?
1107
lParam dd ?
1108
fSkipDestIfUnk db ?
1108
fSkipDestIfUnk db ?
1109
mode dd ?
1109
mode dd ?
1110
curheight dw ?
1110
curheight dw ?
1111
maxheight dw ?
1111
maxheight dw ?
1112
RetroBlock dd ?
1112
RetroBlock dd ?
1113
RetroSave:
1113
RetroSave:
1114
  SAVE
1114
  SAVE
1115
prcinfo rb 1024
1115
prcinfo rb 1024
1116
RetroPtr dd ?
1116
RetroPtr dd ?
1117
colorptr dd ?
1117
colorptr dd ?
1118
colortbl rd 16
1118
colortbl rd 16
1119
ct_end:
1119
ct_end:
1120
fname_size dd ?
1120
fname_size dd ?
1121
max_block dd ?
1121
max_block dd ?
1122
cur_block dd ?
1122
cur_block dd ?
1123
HDoc dd ?
1123
HDoc dd ?
1124
;HClick dd ?
1124
;HClick dd ?
1125
top dw ?
1125
top dw ?
1126
line_count dd ?
1126
line_count dd ?
1127
par_count  dd ?
1127
par_count  dd ?
1128
char db ?
1128
char db ?
1129
pitch db ?
1129
pitch db ?
1130
wSave dd ?
1130
wSave dd ?
1131
RetroXY dd ?
1131
RetroXY dd ?
1132
RetroGroup dd ?
1132
RetroGroup dd ?
1133
 
1133
 
1134
save_stack:
1134
save_stack:
1135
rb RTFSTACKSIZE
1135
rb RTFSTACKSIZE
1136
save_limit:
1136
save_limit:
1137
rb BGIFONTSIZE
1137
rb BGIFONTSIZE
1138
 
1138
 
1139
listptr dd ?
1139
listptr dd ?
1140
szKeyword rb 31
1140
szKeyword rb 31
1141
szParameter rb 21
1141
szParameter rb 21
1142
block_end dd ?
1142
block_end dd ?
1143
 
1143
 
1144
;---------------------------------------------------------------------
1144
;---------------------------------------------------------------------
1145
I_END:                             ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
1145
I_END:                             ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
1146
rb RTFSIZE
1146
rb RTFSIZE
1147
esp1:
1147
esp1:
1148
rb ESPSIZE
1148
rb ESPSIZE
1149
procinfo process_information
1149
procinfo process_information
1150
procinfo2 process_information
1150
procinfo2 process_information
1151
;---------------------------------------------------------------------
1151
;---------------------------------------------------------------------
1152
temp_dir_pach:
1152
temp_dir_pach:
1153
        rb 4096
1153
        rb 4096
1154
cur_dir_path:
1154
cur_dir_path:
1155
        rb 4096
1155
        rb 4096
1156
library_path:
1156
library_path:
1157
        rb 4096
1157
        rb 4096
1158
;---------------------------------------------------------------------
1158
;---------------------------------------------------------------------
1159
    rb ESPSIZE                      ;stack
1159
    rb ESPSIZE                      ;stack
1160
esp_end:
1160
esp_end:
1161
sys_mem:
1161
sys_mem: