Subversion Repositories Kolibri OS

Rev

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

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