Subversion Repositories Kolibri OS

Rev

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

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