Subversion Repositories Kolibri OS

Rev

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

Rev 529 Rev 1195
1
;   RTF READER FOR MENUET v1.
1
;   RTF READER FOR MENUET v1.
2
;   Written in pure assembler by Ivushkin Andrey aka Willow
2
;   Written in pure assembler by Ivushkin Andrey aka Willow
3
;
3
;
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 20
11
LMARGIN equ 20
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 0x3f0f0f0
16
WIN_COLOR equ 0x3f0f0f0
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 =35
24
TOP =55
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
  use32              ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
43
  use32              ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
44
  org    0x0         ;  ¤à¥á æ¨ï á ­ã«ï
44
  org    0x0         ;  ¤à¥á æ¨ï á ­ã«ï
45
 
45
 
46
  db     'MENUET01'  ; 8-¡ ©â­ë© ¨¤¥­â¨ä¨ª â®à MenuetOS
46
  db     'MENUET01'  ; 8-¡ ©â­ë© ¨¤¥­â¨ä¨ª â®à MenuetOS
47
  dd     0x01        ; ¢¥àá¨ï § £®«®¢ª  (¢á¥£¤  1)
47
  dd     0x01        ; ¢¥àá¨ï § £®«®¢ª  (¢á¥£¤  1)
48
  dd     START       ;  ¤à¥á ¯¥à¢®© ª®¬ ­¤ë
48
  dd     START       ;  ¤à¥á ¯¥à¢®© ª®¬ ­¤ë
49
  dd     I_END0      ; à §¬¥à ¯à®£à ¬¬ë
49
  dd     I_END0      ; à §¬¥à ¯à®£à ¬¬ë
50
  dd     esp_end     ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
50
  dd     esp_end     ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
51
  dd     sys_mem     ;  ¤à¥á ¢¥à設ë áâíª 
51
  dd     sys_mem     ;  ¤à¥á ¢¥à設ë áâíª 
52
  dd     fname_buf   ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢ (­¥ ¨á¯®«ì§ã¥âáï)
52
  dd     fname_buf   ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢ (­¥ ¨á¯®«ì§ã¥âáï)
53
  dd     0x0         ; § à¥§¥à¢¨à®¢ ­®
53
  dd     0x0         ; § à¥§¥à¢¨à®¢ ­®
54
 
54
 
55
include '..\..\..\MACROS.INC' ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§­ì  áᥬ¡«¥à騪®¢!
55
include '..\..\..\MACROS.INC' ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§­ì  áᥬ¡«¥à騪®¢!
56
include 'debug.inc'
56
include 'debug.inc'
57
if ~ RENDER eq PIX
57
if ~ RENDER eq PIX
58
  TOP=TOP+4
58
  TOP=TOP+4
59
  include 'bgifont.inc'
59
  include 'bgifont.inc'
60
end if
60
end if
61
include 'rtf_lite.inc'
61
include 'rtf_lite.inc'
62
include 'ascl.inc'
62
include 'ascl.inc'
63
;---------------------------------------------------------------------
63
;---------------------------------------------------------------------
64
;---  €—€‹Ž Žƒ€ŒŒ›  ----------------------------------------------
64
;---  €—€‹Ž Žƒ€ŒŒ›  ----------------------------------------------
65
;---------------------------------------------------------------------
65
;---------------------------------------------------------------------
66
help_file:
66
help_file:
67
file  'reader.rtf'
67
file  'reader.rtf'
68
help_end:
68
help_end:
69
 
69
 
70
START:
70
START:
71
    mov  [pitch],2
71
    mov  [pitch],2
72
  if ~ RENDER eq PIX
72
  if ~ RENDER eq PIX
73
    mov  edx,FONT_NAME
73
    mov  edx,FONT_NAME
74
    mov  edi,save_limit
74
    mov  edi,save_limit
75
    BGIfont_Prepare
75
    BGIfont_Prepare
76
  end if
76
  end if
77
 start2:
77
 start2:
78
    cmp  byte[fname_buf],0
78
    cmp  byte[fname_buf],0
79
    je   load_file;top_red
79
    je   load_file;top_red
80
    jmp  noactivate
80
    jmp  noactivate
81
 prep_load:
81
 prep_load:
82
;    mcall 18,3,dword[prcinfo+30]
82
;    mcall 18,3,dword[prcinfo+30]
83
 noactivate:
83
 noactivate:
84
;    and  ebp,not RTF_OPENING
84
;    and  ebp,not RTF_OPENING
85
;    and  ebp,not RTF_HELP
85
;    and  ebp,not RTF_HELP
86
 
86
 
87
;    and  [mode],not RTF_OPENING
87
;    and  [mode],not RTF_OPENING
88
    and  [mode],not (RTF_HELP+RTF_OPENING)
88
    and  [mode],not (RTF_HELP+RTF_OPENING)
89
    mov  ecx,16
89
    mov  ecx,16
90
    mov  edi,fileinfo.name
90
    mov  edi,fileinfo.name
91
    mov  esi,fname_buf
91
    mov  esi,fname_buf
92
    rep  movsd
92
    rep  movsd
93
 load_file:
93
 load_file:
94
        mov     eax, 70
94
        mov     eax, 70
95
        and     [fileattr+32], 0
95
        and     [fileattr+32], 0
96
        mov     ebx, attrinfo
96
        mov     ebx, attrinfo
97
        mcall
97
        mcall
98
        mov     ebx, [fileattr+32]
98
        mov     ebx, [fileattr+32]
99
        test    eax, eax
99
        test    eax, eax
100
        jz      .sizok
100
        jz      .sizok
101
        mov     dword [fileinfo.name], N_A
101
        mov     dword [fileinfo.name], N_A
102
.sizok:
102
.sizok:
103
    and  [wSave],0
103
    and  [wSave],0
104
    mov  [HClick],-100
104
    mov  [HClick],-100
105
    mov  eax,ebx
105
    mov  eax,ebx
106
    and  eax,RTFSIZE-1
106
    and  eax,RTFSIZE-1
107
    add  eax,I_END
107
    add  eax,I_END
108
    mov  [tail],eax
108
    mov  [tail],eax
109
    shr  ebx,16
109
    shr  ebx,16
110
;    dpd ebx
110
;    dpd ebx
111
    mov  [max_block],ebx
111
    mov  [max_block],ebx
112
    xor  eax,eax
112
    xor  eax,eax
113
    mov  ecx,256
113
    mov  ecx,256
114
    mov  edi,fileinfo.name
114
    mov  edi,fileinfo.name
115
    repne scasb
115
    repne scasb
116
    sub  edi,fileinfo.name+1
116
    sub  edi,fileinfo.name+1
117
    mov  [fname_size],edi
117
    mov  [fname_size],edi
118
top_red:
118
top_red:
119
    mov  [top],TOP
119
    mov  [top],TOP
120
red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
120
red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
121
 
121
 
122
    call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
122
    call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
123
 
123
 
124
;---------------------------------------------------------------------
124
;---------------------------------------------------------------------
125
;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
125
;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
126
;---------------------------------------------------------------------
126
;---------------------------------------------------------------------
127
 
127
 
128
still:
128
still:
129
    mcall 10            ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
129
    mcall 10            ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
130
 
130
 
131
    cmp  eax,1          ; ¯¥à¥à¨á®¢ âì ®ª­® ?
131
    cmp  eax,1          ; ¯¥à¥à¨á®¢ âì ®ª­® ?
132
    je   red            ; ¥á«¨ ¤  - ­  ¬¥âªã red
132
    je   red            ; ¥á«¨ ¤  - ­  ¬¥âªã red
133
    cmp  eax,3          ; ­ ¦ â  ª­®¯ª  ?
133
    cmp  eax,3          ; ­ ¦ â  ª­®¯ª  ?
134
    je   button         ; ¥á«¨ ¤  - ­  button
134
    je   button         ; ¥á«¨ ¤  - ­  button
135
 
135
 
136
;---------------------------------------------------------------------
136
;---------------------------------------------------------------------
137
 
137
 
138
 
138
 
139
  key:                  ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
139
  key:                  ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
140
    mcall 2             ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah)
140
    mcall 2             ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah)
141
    cmp  ah,104         ; HELP
141
    cmp  ah,104         ; HELP
142
    jne  .nohelp
142
    jne  .nohelp
143
  .help:
143
  .help:
144
    xor  [mode],RTF_HELP
144
    xor  [mode],RTF_HELP
145
    test [mode],RTF_HELP
145
    test [mode],RTF_HELP
146
    jz   load_file
146
    jz   load_file
147
    mov  ecx,help_end-help_file
147
    mov  ecx,help_end-help_file
148
    mov  [block_end],ecx
148
    mov  [block_end],ecx
149
    add  [block_end],I_END
149
    add  [block_end],I_END
150
    mov  [tail],ecx
150
    mov  [tail],ecx
151
    add  [tail],I_END
151
    add  [tail],I_END
152
    mov  esi,help_file
152
    mov  esi,help_file
153
    mov  edi,I_END
153
    mov  edi,I_END
154
    rep  movsb
154
    rep  movsb
155
;    or   [mode],RTF_HELP
155
;    or   [mode],RTF_HELP
156
    xor  eax,eax
156
    xor  eax,eax
157
    mov  [max_block],eax
157
    mov  [max_block],eax
158
    jmp  top_red
158
    jmp  top_red
159
  .nohelp:
159
  .nohelp:
160
;    test [mode],RTF_HELP
160
;    test [mode],RTF_HELP
161
;    jz   .nohelp2
161
;    jz   .nohelp2
162
;    and  [mode],not RTF_HELP
162
;    and  [mode],not RTF_HELP
163
;    cmp  dword[fileinfo.name],N_A
163
;    cmp  dword[fileinfo.name],N_A
164
;    je   still
164
;    je   still
165
;    jmp  prep_load
165
;    jmp  prep_load
166
  .nohelp2:
166
  .nohelp2:
167
    cmp  ah,114         ; R - redraw
167
    cmp  ah,114         ; R - redraw
168
    je   red
168
    je   red
169
    cmp  ah,99          ; C - color
169
    cmp  ah,99          ; C - color
170
    jne  .nocolor
170
    jne  .nocolor
171
  .color:
171
  .color:
172
    xor  [mode],RTF_COLORLESS
172
    xor  [mode],RTF_COLORLESS
173
    jmp  red
173
    jmp  red
174
  .nocolor:
174
  .nocolor:
175
    cmp  ah,97          ; A - alignment
175
    cmp  ah,97          ; A - alignment
176
    jne  .noalign
176
    jne  .noalign
177
  .alignment:
177
  .alignment:
178
    xor  [mode],RTF_ALIGNLESS
178
    xor  [mode],RTF_ALIGNLESS
179
    jmp  red
179
    jmp  red
180
  .noalign:
180
  .noalign:
181
    cmp  ah,44          ; < - pitch dec
181
    cmp  ah,44          ; < - pitch dec
182
    jne  .nopd
182
    jne  .nopd
183
  .decp:
183
  .decp:
184
    dec  [pitch]
184
    dec  [pitch]
185
    jmp  red
185
    jmp  red
186
  .nopd:
186
  .nopd:
187
    cmp  ah,46          ; < - pitch inc
187
    cmp  ah,46          ; < - pitch inc
188
    jne  .nopi
188
    jne  .nopi
189
  .incp:
189
  .incp:
190
    inc  [pitch]
190
    inc  [pitch]
191
    jmp  red
191
    jmp  red
192
  .nopi:
192
  .nopi:
193
    cmp  ah,180         ; Home
193
    cmp  ah,180         ; Home
194
    je   top_red
194
    je   top_red
195
    mov  ebx,dword[prcinfo+46]
195
    mov  ebx,dword[prcinfo+46]
196
    sub  ebx,TOP+15
196
    sub  ebx,TOP+15
197
    cmp  ah,183 ;PgDn
197
    cmp  ah,183 ;PgDn
198
    jne  .nopgdn
198
    jne  .nopgdn
199
    sub  [top],bx
199
    sub  [top],bx
200
    jmp  red
200
    jmp  red
201
  .nopgdn:
201
  .nopgdn:
202
    cmp  ah,177 ;arrDn
202
    cmp  ah,177 ;arrDn
203
    jne  .noardn
203
    jne  .noardn
204
    sub  [top],CHARH
204
    sub  [top],CHARH
205
    jmp  red
205
    jmp  red
206
  .noardn:
206
  .noardn:
207
    mov  cx,[top]
207
    mov  cx,[top]
208
    cmp  ah,184 ;PgUp
208
    cmp  ah,184 ;PgUp
209
    jne  .nopgup
209
    jne  .nopgup
210
    add  [top],bx
210
    add  [top],bx
211
    cmp  [top],TOP
211
    cmp  [top],TOP
212
    jl   red
212
    jl   red
213
    mov  [top],TOP
213
    mov  [top],TOP
214
    cmp  cx,[top]
214
    cmp  cx,[top]
215
    je   still
215
    je   still
216
    jmp  red
216
    jmp  red
217
  .nopgup:
217
  .nopgup:
218
    cmp  ah,178 ;arrUp
218
    cmp  ah,178 ;arrUp
219
    jne  .noarup
219
    jne  .noarup
220
    add  [top],CHARH
220
    add  [top],CHARH
221
    cmp  [top],TOP
221
    cmp  [top],TOP
222
    jl   red
222
    jl   red
223
    mov  [top],TOP
223
    mov  [top],TOP
224
    cmp  cx,[top]
224
    cmp  cx,[top]
225
    je   still
225
    je   still
226
    jmp  red
226
    jmp  red
227
  .noarup:
227
  .noarup:
228
  if  RENDER eq FREE
228
  if  RENDER eq FREE
229
    cmp  ah,56 ;zoom+
229
    cmp  ah,56 ;zoom+
230
    jne  .noplus
230
    jne  .noplus
231
  .zplus:
231
  .zplus:
232
    fld  [FreeFontscale]
232
    fld  [FreeFontscale]
233
    fmul [Zoomscale]
233
    fmul [Zoomscale]
234
  .zoom:
234
  .zoom:
235
    fstp [FreeFontscale]
235
    fstp [FreeFontscale]
236
    jmp  red
236
    jmp  red
237
  .noplus:
237
  .noplus:
238
    cmp  ah,54 ;zoom-
238
    cmp  ah,54 ;zoom-
239
    jne  .nominus
239
    jne  .nominus
240
  .zminus:
240
  .zminus:
241
    fld  [FreeFontscale]
241
    fld  [FreeFontscale]
242
    fdiv [Zoomscale]
242
    fdiv [Zoomscale]
243
    jmp  .zoom
243
    jmp  .zoom
244
  .nominus:
244
  .nominus:
245
  end if
245
  end if
246
    cmp  ah,108         ; L - load
246
    cmp  ah,108         ; L - load
247
    jne  stilld
247
    jne  stilld
248
  .file_open:
248
  .file_open:
249
    or   [mode],RTF_OPENING
249
    or   [mode],RTF_OPENING
250
    opendialog draw_window, prep_load, st_1, fname_buf
250
    opendialog draw_window, prep_load, st_1, fname_buf
251
  st_1:
251
  st_1:
252
    and  [mode],not RTF_OPENING
252
    and  [mode],not RTF_OPENING
253
    jmp  still;red
253
    jmp  still;red
254
  stilld:
254
  stilld:
255
    jmp  still
255
    jmp  still
256
 
256
 
257
;---------------------------------------------------------------------
257
;---------------------------------------------------------------------
258
 
258
 
259
  button:
259
  button:
260
    mcall 17            ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
260
    mcall 17            ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
261
    cmp   ah,2
261
    cmp   ah,2
262
    je    key.help
262
    je    key.help
263
    cmp   ah,3
263
    cmp   ah,3
264
    je    key.color
264
    je    key.color
265
    cmp   ah,4
265
    cmp   ah,4
266
    je    key.alignment
266
    je    key.alignment
267
    cmp   ah,5
267
    cmp   ah,5
268
    je    key.file_open
268
    je    key.file_open
269
    cmp   ah,6
269
    cmp   ah,6
270
    je    key.incp
270
    je    key.incp
271
    cmp   ah,7
271
    cmp   ah,7
272
    je    key.decp
272
    je    key.decp
273
  if RENDER eq FREE
273
  if RENDER eq FREE
274
    cmp   ah,8
274
    cmp   ah,8
275
    je    key.zminus
275
    je    key.zminus
276
    cmp   ah,9
276
    cmp   ah,9
277
    je    key.zplus
277
    je    key.zplus
278
  end if
278
  end if
279
    cmp   ah, 1         ; ¥á«¨ … ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
279
    cmp   ah, 1         ; ¥á«¨ … ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
280
    jne   .noexit       ;  ¢¥à­ãâìáï
280
    jne   .noexit       ;  ¢¥à­ãâìáï
281
 
281
 
282
  .exit:
282
  .exit:
283
    mcall -1            ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
283
    mcall -1            ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
284
  .noexit:
284
  .noexit:
285
    cmp   ah,20
285
    cmp   ah,20
286
    jne   still
286
    jne   still
287
    mcall 37,1
287
    mcall 37,1
288
    and   eax,0xffff
288
    and   eax,0xffff
289
    cmp   eax,[HClick]
289
    cmp   eax,[HClick]
290
    je    still
290
    je    still
291
    mov   [HClick],eax
291
    mov   [HClick],eax
292
    sub   eax,25
292
    sub   eax,25
293
    mul   [HDoc]
293
    mul   [HDoc]
294
    mov   ebx,dword[prcinfo+46]
294
    mov   ebx,dword[prcinfo+46]
295
    sub   ebx,25
295
    sub   ebx,25
296
    div   ebx
296
    div   ebx
297
    dpd   eax
297
    dpd   eax
298
    mov   [top],TOP
298
    mov   [top],TOP
299
    sub   [top],ax
299
    sub   [top],ax
300
    dps   'B'
300
    dps   'B'
301
    jmp   red;still
301
    jmp   red;still
302
;---------------------------------------------------------------------
302
;---------------------------------------------------------------------
303
;---  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€  ----------------------------------
303
;---  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€  ----------------------------------
304
;---------------------------------------------------------------------
304
;---------------------------------------------------------------------
305
 
305
 
306
draw_window:
306
draw_window:
307
 
307
 
308
    mcall 12, 1                    ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
308
    mcall 12, 1                    ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
309
                                   ; 1 - ­ ç¨­ ¥¬ à¨á®¢ âì
309
                                   ; 1 - ­ ç¨­ ¥¬ à¨á®¢ âì
310
 
310
 
311
    mcall 0, <10,WINW>, <100,WINH>, WIN_COLOR,0x805080D0, 0x005080D0
311
    mcall 0, <10,WINW>, <100,WINH>, WIN_COLOR,0x805080D0, 0x005080D0
312
    mcall 9,procinfo,-1
-
 
313
    mov   eax,[procinfo.box.left]
-
 
314
    cmp   eax,1
-
 
315
    ja      .temp12345
-
 
316
    ret
-
 
317
  .temp12345:
-
 
318
 
-
 
319
    mcall 4, <8,8>, 0x10DDEEFF, title, titlesize-title
312
    mcall 4, <8,8>, 0x10DDEEFF, title, titlesize-title
320
    mov  esi,ecx
313
    mov  esi,ecx
321
    mcall 47,0x30000,isymImplemented,<114,8>
314
    mcall 47,0x30000,isymImplemented,<114,8>
322
    add  edx,36 shl 16
315
    add  edx,36 shl 16
323
    mcall ,,isymMax
316
    mcall ,,isymMax
324
    add  edx,40 shl 16
317
    add  edx,40 shl 16
325
    mov  esi,0x104e00e7;0x10f27840
318
    mov  esi,0x104e00e7;0x10f27840
326
    cmp  dword[fileinfo.name],N_A
319
    cmp  dword[fileinfo.name],N_A
327
    jne  .noNA
320
    jne  .noNA
328
    mov  esi,0x10ff0000
321
    mov  esi,0x10ff0000
329
  .noNA:
322
  .noNA:
330
    mcall 4,edx,esi,fileinfo.name,[fname_size]
323
    mcall 4,edx,esi,fileinfo.name,[fname_size]
331
    mov  edi,prcinfo
324
    mov  edi,prcinfo
332
    mcall 9,edi,-1
325
    mcall 9,edi,-1
333
    and  [mode],not RTF_TOEOF
326
    and  [mode],not RTF_TOEOF
334
    mov  ebx,[edi+42]
327
    mov  ebx,[edi+42]
335
    cmp  ebx,[wSave]
328
    cmp  ebx,[wSave]
336
    je   .nochg
329
    je   .nochg
337
  .chg:
330
  .chg:
338
    mov  [wSave],ebx
331
    mov  [wSave],ebx
339
    or   [mode],RTF_TOEOF
332
    or   [mode],RTF_TOEOF
340
    and  [HDoc],0
333
    and  [HDoc],0
341
    and  [line_count],0
334
    and  [line_count],0
342
    mov  [HClick],-100
335
    mov  [HClick],-100
343
  .nochg:
336
  .nochg:
344
    sub  ebx,60
-
 
345
    shl  ebx,16
337
 
346
    mov  bx,12
338
 
347
    mov  ecx,5 shl 16+12
-
 
348
    mov  esi,0xb810e7
339
mcall 13,<5,dword[prcinfo+42]>,<21,21>,0x8000459a
349
    mov  edx,2
340
 
350
 BTN_SPACE equ 14 shl 16
-
 
351
    mcall 8             ;2
341
mcall 8,7*65536+39,23*65536+16,5,0x459a           ;load
352
    sub  ebx,BTN_SPACE
-
 
353
    inc  edx
-
 
354
    mcall 8,,,,0x459a    ;3
342
mcall 8,46*65536+57,23*65536+16,4,0x459a ;align
355
    sub  ebx,BTN_SPACE
-
 
356
    inc  edx
-
 
357
    mcall ,,,,0x107a30  ;4
343
mcall 8,103*65536+44,23*65536+16,3,0x459a   ;color
358
    sub  ebx,BTN_SPACE
-
 
359
    inc  edx
-
 
360
    mcall ,,,,0xcc0000  ;5
344
mcall 8,147*65536+37,23*65536+16,2,0x459a        ;help
361
    sub  ebx,BTN_SPACE
-
 
362
    inc  edx
345
 
363
    mcall ,,,,0x575f8c  ;6
346
mcall 8,184*65536+44,23*65536+16,7,0x459a ;prev
364
    sub  ebx,BTN_SPACE
-
 
365
    inc  edx
-
 
366
    mcall ,,,,0x575f8c  ;7
347
mcall 8,229*65536+46,23*65536+16,6,0x459a      ;next
-
 
348
 
367
  if RENDER eq FREE
349
if RENDER eq FREE
-
 
350
mcall 8,276*65536+44,23*65536+16,9,0x459a ;zoom+
-
 
351
mcall 8,320*65536+44,23*65536+16,8,0x459a ;zoom-
-
 
352
end if
-
 
353
 
-
 
354
 
-
 
355
 
-
 
356
 
-
 
357
;    sub  ebx,60
-
 
358
;    shl  ebx,16
-
 
359
;    mov  bx,12
-
 
360
;    mov  ecx,5 shl 16+12
-
 
361
;    mov  esi,0xb810e7
-
 
362
;    mov  edx,2
-
 
363
; BTN_SPACE equ 14 shl 16
-
 
364
;    mcall 8             ;2
368
    sub  ebx,BTN_SPACE
365
;    sub  ebx,BTN_SPACE
-
 
366
;    inc  edx
-
 
367
;    mcall 8,,,,0x459a    ;3
-
 
368
;    sub  ebx,BTN_SPACE
-
 
369
;    inc  edx
-
 
370
;    mcall ,,,,0x107a30  ;4
-
 
371
;    sub  ebx,BTN_SPACE
-
 
372
;    inc  edx
-
 
373
;    mcall ,,,,0xcc0000  ;5
-
 
374
;    sub  ebx,BTN_SPACE
-
 
375
;    inc  edx
-
 
376
;    mcall ,,,,0x575f8c  ;6
-
 
377
;    sub  ebx,BTN_SPACE
-
 
378
;    inc  edx
-
 
379
;    mcall ,,,,0x575f8c  ;7
-
 
380
;  if RENDER eq FREE
-
 
381
;    sub  ebx,BTN_SPACE
369
    inc  edx
382
;    inc  edx
370
    mcall ,,,,0x6a73d0  ;8
383
;    mcall ,,,,0x6a73d0  ;8
371
    sub  ebx,BTN_SPACE
384
;    sub  ebx,BTN_SPACE
372
    inc  edx
385
;    inc  edx
373
    mcall ,,,,0xd048c8  ;9
386
;    mcall ,,,,0xd048c8  ;9
374
  end if
387
;  end if
-
 
388
;text
375
    shr  ecx,16
389
;    shr  ecx,16
376
    mov  bx,cx
390
;    mov  bx,cx
377
    add  ebx,3 shl 16+3
391
;    add  ebx,3 shl 16+3
378
    mcall 4,,0x10ddeeff,btn_text,btn_end-btn_text
392
    mcall 4,10*65536+27,0x10ddeeff,btn_text,btn_end-btn_text
-
 
393
 
379
    sub  dword[prcinfo+42],LMARGIN
394
    sub  dword[prcinfo+42],LMARGIN
380
    sub  dword[prcinfo+46],CHARH
395
    sub  dword[prcinfo+46],CHARH
381
 if GUTTER eq 1
396
 if GUTTER eq 1
382
    mov  ebx,LMARGIN shl 16+20
397
    mov  ebx,LMARGIN shl 16+20
383
    mov  ecx,20
398
    mov  ecx,20
384
    mov  eax,4
399
    mov  eax,4
385
    mov  edx,arrow
400
    mov  edx,arrow
386
    mov  esi,1
401
    mov  esi,1
387
  .loop1:
402
  .loop1:
388
    push ecx
403
    push ecx
389
    mcall ,,0xff0000
404
    mcall ,,0xff0000
390
    pop  ecx
405
    pop  ecx
391
    add  ebx,50 shl 16
406
    add  ebx,50 shl 16
392
    loop .loop1
407
    loop .loop1
393
 end if
408
 end if
394
    mov  ebx,dword[prcinfo+42]
409
    mov  ebx,dword[prcinfo+42]
395
    shl  ebx,16
410
    shl  ebx,16
396
    add  ebx,7 shl 16+7
411
    add  ebx,2 shl 16+13
397
    mov  ecx,dword[prcinfo+46]
412
    mov  ecx,dword[prcinfo+46]
398
    add  ecx,25 shl 16-25
413
    add  ecx,40 shl 16-35
399
    mov  edx,20+1 shl 29
414
    mov  edx,20+1 shl 29
400
    mcall 8
415
    mcall 8
401
    mov  ecx,[HClick]
416
    mov  ecx,[HClick]
402
    shl  ecx,16
417
    shl  ecx,16
403
    add  ecx,6-3 shl 16
418
    add  ecx,6-3 shl 16 + 7
404
    mcall 13,,,0xe26830
419
    mcall 13,,,0xe26830
405
 if MODE eq RTF
420
 if MODE eq RTF
406
    test [mode],RTF_OPENING
421
    test [mode],RTF_OPENING
407
    jne  .ex
422
    jne  .ex
408
    and  [mode],not (RTF_BOTTOM);+RTF_TOEOF)
423
    and  [mode],not (RTF_BOTTOM);+RTF_TOEOF)
409
    mov  [colorptr],colortbl
424
    mov  [colorptr],colortbl
410
    mov  eax,DEFCOLOR
425
    mov  eax,DEFCOLOR
411
    mov  edi,colortbl
426
    mov  edi,colortbl
412
    mov  ecx,16
427
    mov  ecx,16
413
    rep  stosd
428
    rep  stosd
414
    xor  eax,eax
429
    xor  eax,eax
415
    mov  [cGroup],eax
430
    mov  [cGroup],eax
416
    mov  edi,Chp
431
    mov  edi,Chp
417
    mov  ecx,SIZE_save
432
    mov  ecx,SIZE_save
418
    rep  stosb
433
    rep  stosb
419
    mov  ax,[top]
434
    mov  ax,[top]
420
    mov  word[Free+6],10
435
    mov  word[Free+6],10
421
    mov  word[Free+4],ax
436
    mov  word[Free+4],ax
422
    mov  esi,I_END
437
    mov  esi,I_END
423
    call RtfParse
438
    call RtfParse
424
    dpd  eax
439
    dpd  eax
425
    dps  'Lines='
440
    dps  'Lines='
426
    mov  eax,[line_count]
441
    mov  eax,[line_count]
427
    dpd  eax
442
    dpd  eax
428
    newline
443
    newline
429
;    movzx  eax,word[Free+4]
444
;    movzx  eax,word[Free+4]
430
;    dpd  eax
445
;    dpd  eax
431
    mov  eax,dword[prcinfo+42]
446
    mov  eax,dword[prcinfo+42]
432
    mov  edx,WIN_COLOR
447
    mov  edx,WIN_COLOR
433
    call draw_progress
448
    call draw_progress
434
if BENCH eq 1
449
if BENCH eq 1
435
    mcall 26,9
450
    mcall 26,9
436
    sub  eax,[bench]
451
    sub  eax,[bench]
437
    dps  <13,10,'Bench='>
452
    dps  <13,10,'Bench='>
438
    dpd  eax
453
    dpd  eax
439
end if
454
end if
440
 else
455
 else
441
    mov  [char],0
456
    mov  [char],0
442
    mov  ebx,10 shl 16+TOP
457
    mov  ebx,10 shl 16+TOP
443
    mov  ecx,16
458
    mov  ecx,16
444
  .l0:
459
  .l0:
445
    push ecx
460
    push ecx
446
    mov  ecx,16
461
    mov  ecx,16
447
  .l1:
462
  .l1:
448
    push ecx
463
    push ecx
449
  if RENDER eq BGI
464
  if RENDER eq BGI
450
    mov  edx,char
465
    mov  edx,char
451
    mov  ecx,0x48000000
466
    mov  ecx,0x48000000
452
    mov  esi,1
467
    mov  esi,1
453
    BGIfont_Outtext
468
    BGIfont_Outtext
454
  else
469
  else
455
    mcall 4,,0x10000000,char,1
470
    mcall 4,,0x10000000,char,1
456
  end if
471
  end if
457
    pop  ecx
472
    pop  ecx
458
    inc  [char]
473
    inc  [char]
459
    add  ebx,(CHARW+3) shl 16
474
    add  ebx,(CHARW+3) shl 16
460
    loop .l1
475
    loop .l1
461
    pop  ecx
476
    pop  ecx
462
    add  ebx,CHARH+2
477
    add  ebx,CHARH+2
463
    and  ebx,0x0000ffff
478
    and  ebx,0x0000ffff
464
    add  ebx,10 shl 16
479
    add  ebx,10 shl 16
465
    loop .l0
480
    loop .l0
466
 end if
481
 end if
467
 .ex:
482
 .ex:
468
    mcall 12, 2                    ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
483
    mcall 12, 2                    ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
469
                                   ; 2, § ª®­ç¨«¨ à¨á®¢ âì
484
                                   ; 2, § ª®­ç¨«¨ à¨á®¢ âì
470
    ret                            ; ¢ë室¨¬ ¨§ ¯à®æ¥¤ãàë
485
    ret                            ; ¢ë室¨¬ ¨§ ¯à®æ¥¤ãàë
471
 
486
 
472
if GUTTER eq 1
487
if GUTTER eq 1
473
   arrow db 0x19
488
   arrow db 0x19
474
end if
489
end if
475
;---------------------------------------------------------------------
490
;---------------------------------------------------------------------
476
;---  „€›… Žƒ€ŒŒ›  ----------------------------------------------
491
;---  „€›… Žƒ€ŒŒ›  ----------------------------------------------
477
;---------------------------------------------------------------------
492
;---------------------------------------------------------------------
478
 
493
 
479
; ¨­â¥àä¥©á ¯à®£à ¬¬ë ¬­®£®ï§ëç­ë©
494
; ¨­â¥àä¥©á ¯à®£à ¬¬ë ¬­®£®ï§ëç­ë©
480
;  ‚ë ¬®¦¥â¥ § ¤ âì ï§ëª ¢ MACROS.INC (lang fix ï§ëª)
495
;  ‚ë ¬®¦¥â¥ § ¤ âì ï§ëª ¢ MACROS.INC (lang fix ï§ëª)
481
 
496
 
482
title:
497
title:
483
  db 'RTF READER v1.    (     ):'
498
  db 'RTF Reader v1.    (     ):'
484
titlesize:
499
titlesize:
485
btn_text:
500
btn_text:
-
 
501
    db 'Load Aligment Color Help     <      >'
486
  if RENDER eq FREE
502
if RENDER eq FREE
487
    db '+ - '
503
    db '    Zoom+ Zoom- '
488
  end if
504
  end if 
489
    db '< > L A C H'
-
 
490
btn_end:
505
btn_end:
491
 
506
 
492
attrinfo:
507
attrinfo:
493
        dd      5
508
        dd      5
494
        dd      0
509
        dd      0
495
        dd      0
510
        dd      0
496
        dd      0
511
        dd      0
497
        dd      fileattr
512
        dd      fileattr
498
        db      0
513
        db      0
499
        dd      fileinfo.name
514
        dd      fileinfo.name
500
 
515
 
501
fileinfo:
516
fileinfo:
502
  dd 0
517
  dd 0
503
.block:
518
.block:
504
  dd 0
519
  dd 0
505
  dd 0
520
  dd 0
506
.size  dd 1
521
.size  dd 1
507
  dd I_END
522
  dd I_END
508
.name:
523
.name:
509
;   db '//'
524
;   db '//'
510
;  db ' /HD/1/RTF/texts/FASM.TXT',0
525
;  db ' /HD/1/RTF/texts/FASM.TXT',0
511
;  db '/HD/1/RTF/TEST2.RTF',0
526
;  db '/HD/1/RTF/TEST2.RTF',0
512
;  db '/HD/1/RTF/texts/index_ru.RTF',0
527
;  db '/HD/1/RTF/texts/index_ru.RTF',0
513
;  db '/HD/1/RTF/texts/stas.RTF',0
528
;  db '/HD/1/RTF/texts/stas.RTF',0
514
;  db '/HD/1/RTF/texts/zed.RTF',0
529
;  db '/HD/1/RTF/texts/zed.RTF',0
515
;  db '/HD/1/RTF/PRACT.RTF',0
530
;  db '/HD/1/RTF/PRACT.RTF',0
516
;  db '/HD/1/RTF/SETUP2.RTF',0
531
;  db '/HD/1/RTF/SETUP2.RTF',0
517
;  db '/HD/1/RTF/texts/TC_RU.RTF',0
532
;  db '/HD/1/RTF/texts/TC_RU.RTF',0
518
;  db '/HD/1/RTF/texts/WORD.RTF',0
533
;  db '/HD/1/RTF/texts/WORD.RTF',0
519
;  db '/HD/1/RTF/texts/WORD97.RTF',0
534
;  db '/HD/1/RTF/texts/WORD97.RTF',0
520
;  db '/HD/1/RTF/texts/MASTAPP.RTF',0
535
;  db '/HD/1/RTF/texts/MASTAPP.RTF',0
521
;  db '/HD/1/RTF/texts/1c_tor77.RTF',0
536
;  db '/HD/1/RTF/texts/1c_tor77.RTF',0
522
;  db '/HD/1/RTF/texts/RELATION.RTF',0
537
;  db '/HD/1/RTF/texts/RELATION.RTF',0
523
;  db '/HD/1/RTF/texts/PLANETS.RTF',0
538
;  db '/HD/1/RTF/texts/PLANETS.RTF',0
524
;  db '/HD/1/RTF/texts/LOTRRUS.RTF',0
539
;  db '/HD/1/RTF/texts/LOTRRUS.RTF',0
525
  db '/HD/1/RTF/texts/RULEBOOK.RTF',0
540
;  db '/HD/1/RTF/texts/RULEBOOK.RTF',0
526
;  db '/HD/1/RTF/texts/RULEBK2.RTF',0
541
;  db '/HD/1/RTF/texts/RULEBK2.RTF',0
527
;  db '/HD/1/RTF/texts/GLEB.RTF',0
542
;  db '/HD/1/RTF/texts/GLEB.RTF',0
528
;  db '/HD/1/RTF/texts/DWG13_14.RTF',0
543
;  db '/HD/1/RTF/texts/DWG13_14.RTF',0
529
;  db '/HD/1/RTF/texts/LK.RTF',0
544
;  db '/HD/1/RTF/texts/LK.RTF',0
530
 
545
 
531
;  db '/HD/1/RTF/texts/JUSTIFY.RTF',0
546
;  db '/HD/1/RTF/texts/JUSTIFY.RTF',0
532
   rb  256-($-.name)
547
   rb  256-($-.name)
533
;---------------------------------------------------------------------
548
;---------------------------------------------------------------------
534
;blind db ?
549
;blind db ?
535
if RENDER eq PIX
550
if RENDER eq PIX
536
;  rd 2
551
;  rd 2
537
  Free rd 9
552
  Free rd 9
538
else
553
else
539
if RENDER eq BGI
554
if RENDER eq BGI
540
  FreeFontscale dd 0.07
555
  FreeFontscale dd 0.07
541
else
556
else
542
  Zoomscale dd 1.15
557
  Zoomscale dd 1.15
543
  FreeFontscale dd 0.04
558
  FreeFontscale dd 0.04
544
end if
559
end if
545
  Free BGIfree FONT_NAME,0,0,1.0,1.0,char,1,0x44000000,0
560
  Free BGIfree FONT_NAME,0,0,1.0,1.0,char,1,0x44000000,0
546
end if
561
end if
547
I_END0:
562
I_END0:
548
fname_buf:
563
fname_buf:
549
        rb      1024+16
564
        rb      1024+16
550
fileattr rd 40/4
565
fileattr rd 40/4
551
if BENCH eq 1
566
if BENCH eq 1
552
  bench dd ?
567
  bench dd ?
553
end if
568
end if
554
tail dd ?
569
tail dd ?
555
cGroup dd ?
570
cGroup dd ?
556
Chp:
571
Chp:
557
  CHP
572
  CHP
558
Pap:
573
Pap:
559
  PAP
574
  PAP
560
Sep:
575
Sep:
561
  SEP
576
  SEP
562
Dop:
577
Dop:
563
  DOP
578
  DOP
564
rds db ?
579
rds db ?
565
ris db ?
580
ris db ?
566
cbBin dd ?
581
cbBin dd ?
567
lParam dd ?
582
lParam dd ?
568
fSkipDestIfUnk db ?
583
fSkipDestIfUnk db ?
569
mode dd ?
584
mode dd ?
570
curheight dw ?
585
curheight dw ?
571
maxheight dw ?
586
maxheight dw ?
572
RetroBlock dd ?
587
RetroBlock dd ?
573
RetroSave:
588
RetroSave:
574
  SAVE
589
  SAVE
575
prcinfo rb 1024
590
prcinfo rb 1024
576
RetroPtr dd ?
591
RetroPtr dd ?
577
colorptr dd ?
592
colorptr dd ?
578
colortbl rd 16
593
colortbl rd 16
579
ct_end:
594
ct_end:
580
fname_size dd ?
595
fname_size dd ?
581
max_block dd ?
596
max_block dd ?
582
cur_block dd ?
597
cur_block dd ?
583
HDoc dd ?
598
HDoc dd ?
584
HClick dd ?
599
HClick dd ?
585
top dw ?
600
top dw ?
586
line_count dd ?
601
line_count dd ?
587
par_count  dd ?
602
par_count  dd ?
588
char db ?
603
char db ?
589
pitch db ?
604
pitch db ?
590
wSave dd ?
605
wSave dd ?
591
RetroXY dd ?
606
RetroXY dd ?
592
RetroGroup dd ?
607
RetroGroup dd ?
593
 
608
 
594
save_stack:
609
save_stack:
595
rb RTFSTACKSIZE
610
rb RTFSTACKSIZE
596
save_limit:
611
save_limit:
597
rb BGIFONTSIZE
612
rb BGIFONTSIZE
598
 
613
 
599
listptr dd ?
614
listptr dd ?
600
szKeyword rb 31
615
szKeyword rb 31
601
szParameter rb 21
616
szParameter rb 21
602
block_end dd ?
617
block_end dd ?
603
I_END:                             ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
618
I_END:                             ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
604
 
619
 
605
procinfo process_information
620
procinfo process_information
606
rb RTFSIZE
621
rb RTFSIZE
607
esp1:
622
esp1:
608
rb ESPSIZE
623
rb ESPSIZE
609
sys_mem:
624
sys_mem:
610
rb ESPSIZE
625
rb ESPSIZE
611
esp_end:
626
esp_end: