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:>13,10,'Bench='>114,8>8,8>100,WINH>10,WINW>>> |
626 | esp_end:>13,10,'Bench='>21,21>5,dword[prcinfo+42]>114,8>8,8>100,WINH>10,WINW>>> |