Subversion Repositories Kolibri OS

Rev

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

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