Subversion Repositories Kolibri OS

Rev

Rev 1418 | Rev 1437 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 halyavin 1
;   RTF READER FOR MENUET v1.
2
;   Written in pure assembler by Ivushkin Andrey aka Willow
3
;
4
;---------------------------------------------------------------------
5
M64 equ 64*1024
6
N_A equ 0x412f4e
7
RTFSIZE equ M64
8
RTFSTACKSIZE equ M64
9
BGIFONTSIZE equ 120*1024
10
ESPSIZE equ M64
11
LMARGIN equ 20
12
CHARW equ 6
13
CHARH equ 11
14
WINW  equ 600
15
WINH  equ 450
16
WIN_COLOR equ 0x3f0f0f0
17
DEFCOLOR equ 0x303030
18
;RENDER equ PIX
19
;RENDER equ BGI
20
RENDER equ FREE
21
 
529 spraid 22
BGIFONT_PATH equ '/sys/fonts/'
31 halyavin 23
FONT_NAME equ 'LITT'
1195 diamond 24
TOP =55
31 halyavin 25
MODE equ RTF
26
INVALHEX equ 0
27
RTF_COLORLESS equ 1
28
RTF_ALIGNLESS equ 2
29
RTF_NO1STLINE equ 4
30
RTF_OPENING   equ 8
31
RTF_HELP      equ 16
32
RTF_VALID     equ 32
33
RTF_BLIND     equ 64
34
RTF_TOEOF     equ 128
35
RTF_BOTTOM    equ 256
36
STEPBYSTEP equ 10
37
DEBUG_BLOCK equ 10
38
SHOWALIGN equ 10
39
GUTTER equ 10
40
BENCH  equ 0;1
41
syms equ 12
42
 
134 diamond 43
  use32              ; включить 32-битный режим ассемблера
44
  org    0x0         ; адресация с нуля
31 halyavin 45
 
134 diamond 46
  db     'MENUET01'  ; 8-байтный идентификатор MenuetOS
47
  dd     0x01        ; версия заголовка (всегда 1)
48
  dd     START       ; адрес первой команды
49
  dd     I_END0      ; размер программы
50
  dd     esp_end     ; количество памяти
51
  dd     sys_mem     ; адрес вершины стэка
52
  dd     fname_buf   ; адрес буфера для параметров (не используется)
53
  dd     0x0         ; зарезервировано
31 halyavin 54
 
485 heavyiron 55
include '..\..\..\MACROS.INC' ; макросы облегчают жизнь ассемблерщиков!
1418 mario79 56
include '..\..\..\develop\libraries\box_lib\load_lib.mac'
57
include '..\..\..\develop\libraries\box_lib\asm\trunk\opendial.mac'
58
 
59
;include 'MACROS.INC'
60
;include 'load_lib.mac'
61
;include 'opendial.mac'
62
 
31 halyavin 63
include 'debug.inc'
1418 mario79 64
 
65
	use_OpenDialog
31 halyavin 66
if ~ RENDER eq PIX
67
  TOP=TOP+4
68
  include 'bgifont.inc'
69
end if
70
include 'rtf_lite.inc'
71
include 'ascl.inc'
72
;---------------------------------------------------------------------
73
;---  НАЧАЛО ПРОГРАММЫ  ----------------------------------------------
74
;---------------------------------------------------------------------
75
help_file:
76
file  'reader.rtf'
77
help_end:
78
 
79
START:
1418 mario79 80
        mcall 68, 11
81
;OpenDialog initialisation
82
init_OpenDialog	OpenDialog_data
83
 
31 halyavin 84
    mov  [pitch],2
85
  if ~ RENDER eq PIX
86
    mov  edx,FONT_NAME
87
    mov  edi,save_limit
88
    BGIfont_Prepare
89
  end if
90
 start2:
91
    cmp  byte[fname_buf],0
134 diamond 92
    je   load_file;top_red
31 halyavin 93
    jmp  noactivate
94
 prep_load:
95
;    mcall 18,3,dword[prcinfo+30]
96
 noactivate:
97
;    and  ebp,not RTF_OPENING
98
;    and  ebp,not RTF_HELP
99
 
100
;    and  [mode],not RTF_OPENING
101
    and  [mode],not (RTF_HELP+RTF_OPENING)
102
    mov  ecx,16
103
    mov  edi,fileinfo.name
104
    mov  esi,fname_buf
105
    rep  movsd
106
 load_file:
139 diamond 107
        mov     eax, 70
108
        and     [fileattr+32], 0
109
        mov     ebx, attrinfo
485 heavyiron 110
        mcall
139 diamond 111
        mov     ebx, [fileattr+32]
112
        test    eax, eax
113
        jz      .sizok
114
        mov     dword [fileinfo.name], N_A
115
.sizok:
31 halyavin 116
    and  [wSave],0
117
    mov  [HClick],-100
118
    mov  eax,ebx
119
    and  eax,RTFSIZE-1
120
    add  eax,I_END
121
    mov  [tail],eax
122
    shr  ebx,16
123
;    dpd ebx
124
    mov  [max_block],ebx
125
    xor  eax,eax
126
    mov  ecx,256
127
    mov  edi,fileinfo.name
128
    repne scasb
129
    sub  edi,fileinfo.name+1
130
    mov  [fname_size],edi
131
top_red:
132
    mov  [top],TOP
134 diamond 133
red:                    ; перерисовать окно
31 halyavin 134
 
134 diamond 135
    call draw_window    ; вызываем процедуру отрисовки окна
31 halyavin 136
 
137
;---------------------------------------------------------------------
138
;---  ЦИКЛ ОБРАБОТКИ СОБЫТИЙ  ----------------------------------------
139
;---------------------------------------------------------------------
140
 
141
still:
134 diamond 142
    mcall 10            ; функция 10 - ждать события
31 halyavin 143
 
134 diamond 144
    cmp  eax,1          ; перерисовать окно ?
145
    je   red            ; если да - на метку red
146
    cmp  eax,3          ; нажата кнопка ?
147
    je   button         ; если да - на button
31 halyavin 148
 
149
;---------------------------------------------------------------------
150
 
151
 
134 diamond 152
  key:                  ; нажата клавиша на клавиатуре
153
    mcall 2             ; функция 2 - считать код символа (в ah)
154
    cmp  ah,104         ; HELP
31 halyavin 155
    jne  .nohelp
156
  .help:
157
    xor  [mode],RTF_HELP
158
    test [mode],RTF_HELP
134 diamond 159
    jz   load_file
31 halyavin 160
    mov  ecx,help_end-help_file
161
    mov  [block_end],ecx
162
    add  [block_end],I_END
163
    mov  [tail],ecx
164
    add  [tail],I_END
165
    mov  esi,help_file
166
    mov  edi,I_END
167
    rep  movsb
168
;    or   [mode],RTF_HELP
169
    xor  eax,eax
170
    mov  [max_block],eax
171
    jmp  top_red
172
  .nohelp:
173
;    test [mode],RTF_HELP
174
;    jz   .nohelp2
175
;    and  [mode],not RTF_HELP
176
;    cmp  dword[fileinfo.name],N_A
177
;    je   still
178
;    jmp  prep_load
179
  .nohelp2:
134 diamond 180
    cmp  ah,114         ; R - redraw
181
    je   red
182
    cmp  ah,99          ; C - color
31 halyavin 183
    jne  .nocolor
184
  .color:
185
    xor  [mode],RTF_COLORLESS
186
    jmp  red
187
  .nocolor:
134 diamond 188
    cmp  ah,97          ; A - alignment
31 halyavin 189
    jne  .noalign
190
  .alignment:
191
    xor  [mode],RTF_ALIGNLESS
192
    jmp  red
193
  .noalign:
134 diamond 194
    cmp  ah,44          ; < - pitch dec
31 halyavin 195
    jne  .nopd
196
  .decp:
197
    dec  [pitch]
198
    jmp  red
199
  .nopd:
134 diamond 200
    cmp  ah,46          ; < - pitch inc
31 halyavin 201
    jne  .nopi
202
  .incp:
203
    inc  [pitch]
204
    jmp  red
205
  .nopi:
134 diamond 206
    cmp  ah,180         ; Home
207
    je   top_red
31 halyavin 208
    mov  ebx,dword[prcinfo+46]
209
    sub  ebx,TOP+15
210
    cmp  ah,183 ;PgDn
211
    jne  .nopgdn
212
    sub  [top],bx
213
    jmp  red
214
  .nopgdn:
215
    cmp  ah,177 ;arrDn
216
    jne  .noardn
217
    sub  [top],CHARH
218
    jmp  red
219
  .noardn:
220
    mov  cx,[top]
221
    cmp  ah,184 ;PgUp
222
    jne  .nopgup
223
    add  [top],bx
224
    cmp  [top],TOP
134 diamond 225
    jl   red
31 halyavin 226
    mov  [top],TOP
227
    cmp  cx,[top]
134 diamond 228
    je   still
31 halyavin 229
    jmp  red
230
  .nopgup:
231
    cmp  ah,178 ;arrUp
232
    jne  .noarup
233
    add  [top],CHARH
234
    cmp  [top],TOP
134 diamond 235
    jl   red
31 halyavin 236
    mov  [top],TOP
237
    cmp  cx,[top]
134 diamond 238
    je   still
31 halyavin 239
    jmp  red
240
  .noarup:
241
  if  RENDER eq FREE
242
    cmp  ah,56 ;zoom+
243
    jne  .noplus
244
  .zplus:
245
    fld  [FreeFontscale]
246
    fmul [Zoomscale]
247
  .zoom:
248
    fstp [FreeFontscale]
249
    jmp  red
250
  .noplus:
251
    cmp  ah,54 ;zoom-
252
    jne  .nominus
253
  .zminus:
254
    fld  [FreeFontscale]
255
    fdiv [Zoomscale]
256
    jmp  .zoom
257
  .nominus:
258
  end if
134 diamond 259
    cmp  ah,108         ; L - load
31 halyavin 260
    jne  stilld
261
  .file_open:
1418 mario79 262
;---------------------------------------------------------------------
263
;OpenDialog_start:
264
;	copy_path	open_dialog_name,path,library_path,0
265
 
266
	start_OpenDialog	OpenDialog_data
267
 
268
	cmp	[OpenDialog_data.status],2 ; OpenDialog does not start
269
	je	.sysxtree  ; 	some kind of alternative, instead OpenDialog
270
	cmp	[OpenDialog_data.status],1
271
	je	prep_load
1436 mario79 272
	jmp	still
1418 mario79 273
;---------------------------------------------------------------------
274
.sysxtree:
134 diamond 275
    or   [mode],RTF_OPENING
31 halyavin 276
    opendialog draw_window, prep_load, st_1, fname_buf
277
  st_1:
278
    and  [mode],not RTF_OPENING
279
    jmp  still;red
280
  stilld:
281
    jmp  still
282
;---------------------------------------------------------------------
1418 mario79 283
get_filter_data:
284
	mov	edi,[OpenDialog_data.com_area]
285
	test	edi,edi
286
	jnz	@f
287
	add	esp,4
288
	jmp	still
289
@@:
290
	add	edi,4096+4
291
	mov	esi,Filter
292
	mov	ecx,[esi]
293
	inc	ecx
294
	cld
295
	rep	movsb
296
	mov	edi,[OpenDialog_data.com_area]
297
	mov	[edi+4096],dword 1
298
	ret
299
;---------------------------------------------------------------------
31 halyavin 300
 
301
  button:
134 diamond 302
    mcall 17            ; 17 - получить идентификатор нажатой кнопки
31 halyavin 303
    cmp   ah,2
134 diamond 304
    je    key.help
31 halyavin 305
    cmp   ah,3
134 diamond 306
    je    key.color
31 halyavin 307
    cmp   ah,4
134 diamond 308
    je    key.alignment
31 halyavin 309
    cmp   ah,5
134 diamond 310
    je    key.file_open
31 halyavin 311
    cmp   ah,6
134 diamond 312
    je    key.incp
31 halyavin 313
    cmp   ah,7
134 diamond 314
    je    key.decp
31 halyavin 315
  if RENDER eq FREE
316
    cmp   ah,8
134 diamond 317
    je    key.zminus
31 halyavin 318
    cmp   ah,9
134 diamond 319
    je    key.zplus
31 halyavin 320
  end if
134 diamond 321
    cmp   ah, 1         ; если НЕ нажата кнопка с номером 1,
322
    jne   .noexit       ;  вернуться
31 halyavin 323
 
324
  .exit:
134 diamond 325
    mcall -1            ; иначе конец программы
31 halyavin 326
  .noexit:
327
    cmp   ah,20
328
    jne   still
329
    mcall 37,1
330
    and   eax,0xffff
331
    cmp   eax,[HClick]
134 diamond 332
    je    still
31 halyavin 333
    mov   [HClick],eax
334
    sub   eax,25
335
    mul   [HDoc]
336
    mov   ebx,dword[prcinfo+46]
337
    sub   ebx,25
338
    div   ebx
339
    dpd   eax
340
    mov   [top],TOP
341
    sub   [top],ax
342
    dps   'B'
343
    jmp   red;still
344
;---------------------------------------------------------------------
345
;---  ОПРЕДЕЛЕНИЕ И ОТРИСОВКА ОКНА  ----------------------------------
346
;---------------------------------------------------------------------
347
 
348
draw_window:
349
 
134 diamond 350
    mcall 12, 1                    ; функция 12: сообщить ОС об отрисовке окна
351
                                   ; 1 - начинаем рисовать
352
 
31 halyavin 353
    mcall 0, <10,WINW>, <100,WINH>, WIN_COLOR,0x805080D0, 0x005080D0
485 heavyiron 354
    mcall 4, <8,8>, 0x10DDEEFF, title, titlesize-title
31 halyavin 355
    mov  esi,ecx
356
    mcall 47,0x30000,isymImplemented,<114,8>
357
    add  edx,36 shl 16
358
    mcall ,,isymMax
359
    add  edx,40 shl 16
360
    mov  esi,0x104e00e7;0x10f27840
361
    cmp  dword[fileinfo.name],N_A
362
    jne  .noNA
363
    mov  esi,0x10ff0000
364
  .noNA:
365
    mcall 4,edx,esi,fileinfo.name,[fname_size]
366
    mov  edi,prcinfo
367
    mcall 9,edi,-1
368
    and  [mode],not RTF_TOEOF
369
    mov  ebx,[edi+42]
370
    cmp  ebx,[wSave]
134 diamond 371
    je   .nochg
31 halyavin 372
  .chg:
373
    mov  [wSave],ebx
134 diamond 374
    or   [mode],RTF_TOEOF
31 halyavin 375
    and  [HDoc],0
376
    and  [line_count],0
377
    mov  [HClick],-100
378
  .nochg:
1195 diamond 379
 
380
 
381
mcall 13,<5,dword[prcinfo+42]>,<21,21>,0x8000459a
382
 
383
mcall 8,7*65536+39,23*65536+16,5,0x459a           ;load
384
mcall 8,46*65536+57,23*65536+16,4,0x459a ;align
385
mcall 8,103*65536+44,23*65536+16,3,0x459a   ;color
386
mcall 8,147*65536+37,23*65536+16,2,0x459a        ;help
387
 
388
mcall 8,184*65536+44,23*65536+16,7,0x459a ;prev
389
mcall 8,229*65536+46,23*65536+16,6,0x459a      ;next
390
 
391
if RENDER eq FREE
392
mcall 8,276*65536+44,23*65536+16,9,0x459a ;zoom+
393
mcall 8,320*65536+44,23*65536+16,8,0x459a ;zoom-
394
end if
395
 
396
 
397
 
398
 
399
;    sub  ebx,60
400
;    shl  ebx,16
401
;    mov  bx,12
402
;    mov  ecx,5 shl 16+12
403
;    mov  esi,0xb810e7
404
;    mov  edx,2
405
; BTN_SPACE equ 14 shl 16
406
;    mcall 8             ;2
407
;    sub  ebx,BTN_SPACE
408
;    inc  edx
409
;    mcall 8,,,,0x459a    ;3
410
;    sub  ebx,BTN_SPACE
411
;    inc  edx
412
;    mcall ,,,,0x107a30  ;4
413
;    sub  ebx,BTN_SPACE
414
;    inc  edx
415
;    mcall ,,,,0xcc0000  ;5
416
;    sub  ebx,BTN_SPACE
417
;    inc  edx
418
;    mcall ,,,,0x575f8c  ;6
419
;    sub  ebx,BTN_SPACE
420
;    inc  edx
421
;    mcall ,,,,0x575f8c  ;7
422
;  if RENDER eq FREE
423
;    sub  ebx,BTN_SPACE
424
;    inc  edx
425
;    mcall ,,,,0x6a73d0  ;8
426
;    sub  ebx,BTN_SPACE
427
;    inc  edx
428
;    mcall ,,,,0xd048c8  ;9
429
;  end if
430
;text
431
;    shr  ecx,16
432
;    mov  bx,cx
433
;    add  ebx,3 shl 16+3
434
    mcall 4,10*65536+27,0x10ddeeff,btn_text,btn_end-btn_text
435
 
31 halyavin 436
    sub  dword[prcinfo+42],LMARGIN
437
    sub  dword[prcinfo+46],CHARH
438
 if GUTTER eq 1
439
    mov  ebx,LMARGIN shl 16+20
440
    mov  ecx,20
441
    mov  eax,4
442
    mov  edx,arrow
443
    mov  esi,1
444
  .loop1:
445
    push ecx
446
    mcall ,,0xff0000
447
    pop  ecx
448
    add  ebx,50 shl 16
449
    loop .loop1
450
 end if
451
    mov  ebx,dword[prcinfo+42]
452
    shl  ebx,16
1195 diamond 453
    add  ebx,2 shl 16+13
31 halyavin 454
    mov  ecx,dword[prcinfo+46]
1195 diamond 455
    add  ecx,40 shl 16-35
31 halyavin 456
    mov  edx,20+1 shl 29
457
    mcall 8
458
    mov  ecx,[HClick]
459
    shl  ecx,16
1195 diamond 460
    add  ecx,6-3 shl 16 + 7
31 halyavin 461
    mcall 13,,,0xe26830
462
 if MODE eq RTF
463
    test [mode],RTF_OPENING
464
    jne  .ex
465
    and  [mode],not (RTF_BOTTOM);+RTF_TOEOF)
466
    mov  [colorptr],colortbl
467
    mov  eax,DEFCOLOR
468
    mov  edi,colortbl
469
    mov  ecx,16
470
    rep  stosd
471
    xor  eax,eax
472
    mov  [cGroup],eax
473
    mov  edi,Chp
474
    mov  ecx,SIZE_save
475
    rep  stosb
476
    mov  ax,[top]
477
    mov  word[Free+6],10
478
    mov  word[Free+4],ax
479
    mov  esi,I_END
480
    call RtfParse
481
    dpd  eax
482
    dps  'Lines='
483
    mov  eax,[line_count]
484
    dpd  eax
485
    newline
486
;    movzx  eax,word[Free+4]
487
;    dpd  eax
488
    mov  eax,dword[prcinfo+42]
489
    mov  edx,WIN_COLOR
490
    call draw_progress
491
if BENCH eq 1
492
    mcall 26,9
493
    sub  eax,[bench]
494
    dps  <13,10,'Bench='>
495
    dpd  eax
496
end if
497
 else
498
    mov  [char],0
499
    mov  ebx,10 shl 16+TOP
500
    mov  ecx,16
501
  .l0:
502
    push ecx
503
    mov  ecx,16
504
  .l1:
505
    push ecx
506
  if RENDER eq BGI
507
    mov  edx,char
508
    mov  ecx,0x48000000
509
    mov  esi,1
510
    BGIfont_Outtext
511
  else
512
    mcall 4,,0x10000000,char,1
513
  end if
514
    pop  ecx
515
    inc  [char]
516
    add  ebx,(CHARW+3) shl 16
517
    loop .l1
518
    pop  ecx
519
    add  ebx,CHARH+2
520
    and  ebx,0x0000ffff
521
    add  ebx,10 shl 16
522
    loop .l0
523
 end if
524
 .ex:
134 diamond 525
    mcall 12, 2                    ; функция 12: сообщить ОС об отрисовке окна
526
                                   ; 2, закончили рисовать
527
    ret                            ; выходим из процедуры
31 halyavin 528
 
529
if GUTTER eq 1
530
   arrow db 0x19
531
end if
532
;---------------------------------------------------------------------
533
;---  ДАННЫЕ ПРОГРАММЫ  ----------------------------------------------
534
;---------------------------------------------------------------------
535
 
536
; интерфейс программы многоязычный
537
;  Вы можете задать язык в MACROS.INC (lang fix язык)
485 heavyiron 538
 
539
title:
1195 diamond 540
  db 'RTF Reader v1.    (     ):'
485 heavyiron 541
titlesize:
31 halyavin 542
btn_text:
1399 diamond 543
    db 'Load Aligment Color Help    <      >'
1195 diamond 544
if RENDER eq FREE
545
    db '    Zoom+ Zoom- '
546
  end if
31 halyavin 547
btn_end:
1418 mario79 548
;---------------------------------------------------------------------
549
OpenDialog_data:
550
.type			dd 0
551
.procinfo		dd procinfo ;+4
552
.com_area_name		dd communication_area_name ;+8
553
.com_area		dd 0 ;+12
554
.opendir_pach		dd temp_dir_pach ;+16
555
.dir_default_pach	dd communication_area_default_pach ;+20
556
.start_path		dd open_dialog_path ;+24
557
.draw_window		dd draw_window ;+28
558
.status			dd 0 ;+32
559
.openfile_pach		dd fname_buf ;+36
1436 mario79 560
.filename_area		dd 0	;+40
561
.filter_area		dd Filter
31 halyavin 562
 
1418 mario79 563
communication_area_name:
564
	db 'FFFFFFFF_open_dialog',0
565
open_dialog_path:
566
	db '/sys/File Managers/opendial',0
567
communication_area_default_pach:
568
	db '/rd/1',0
569
 
570
Filter:
1436 mario79 571
dd Filter.end - Filter
572
.1:
1418 mario79 573
db 'RTF',0
574
.end:
575
db 0
576
;---------------------------------------------------------------------
139 diamond 577
attrinfo:
578
        dd      5
579
        dd      0
580
        dd      0
581
        dd      0
582
        dd      fileattr
583
        db      0
584
        dd      fileinfo.name
585
 
31 halyavin 586
fileinfo:
587
  dd 0
588
.block:
589
  dd 0
139 diamond 590
  dd 0
31 halyavin 591
.size  dd 1
592
  dd I_END
593
.name:
594
;   db '//'
595
;  db ' /HD/1/RTF/texts/FASM.TXT',0
596
;  db '/HD/1/RTF/TEST2.RTF',0
597
;  db '/HD/1/RTF/texts/index_ru.RTF',0
598
;  db '/HD/1/RTF/texts/stas.RTF',0
599
;  db '/HD/1/RTF/texts/zed.RTF',0
600
;  db '/HD/1/RTF/PRACT.RTF',0
601
;  db '/HD/1/RTF/SETUP2.RTF',0
602
;  db '/HD/1/RTF/texts/TC_RU.RTF',0
603
;  db '/HD/1/RTF/texts/WORD.RTF',0
604
;  db '/HD/1/RTF/texts/WORD97.RTF',0
605
;  db '/HD/1/RTF/texts/MASTAPP.RTF',0
606
;  db '/HD/1/RTF/texts/1c_tor77.RTF',0
607
;  db '/HD/1/RTF/texts/RELATION.RTF',0
608
;  db '/HD/1/RTF/texts/PLANETS.RTF',0
609
;  db '/HD/1/RTF/texts/LOTRRUS.RTF',0
1195 diamond 610
;  db '/HD/1/RTF/texts/RULEBOOK.RTF',0
31 halyavin 611
;  db '/HD/1/RTF/texts/RULEBK2.RTF',0
612
;  db '/HD/1/RTF/texts/GLEB.RTF',0
613
;  db '/HD/1/RTF/texts/DWG13_14.RTF',0
614
;  db '/HD/1/RTF/texts/LK.RTF',0
615
 
616
;  db '/HD/1/RTF/texts/JUSTIFY.RTF',0
617
   rb  256-($-.name)
618
;---------------------------------------------------------------------
619
;blind db ?
620
if RENDER eq PIX
621
;  rd 2
622
  Free rd 9
623
else
624
if RENDER eq BGI
625
  FreeFontscale dd 0.07
626
else
627
  Zoomscale dd 1.15
628
  FreeFontscale dd 0.04
629
end if
630
  Free BGIfree FONT_NAME,0,0,1.0,1.0,char,1,0x44000000,0
631
end if
632
I_END0:
134 diamond 633
fname_buf:
634
        rb      1024+16
139 diamond 635
fileattr rd 40/4
31 halyavin 636
if BENCH eq 1
637
  bench dd ?
638
end if
639
tail dd ?
640
cGroup dd ?
641
Chp:
642
  CHP
643
Pap:
644
  PAP
645
Sep:
646
  SEP
647
Dop:
648
  DOP
649
rds db ?
650
ris db ?
651
cbBin dd ?
652
lParam dd ?
653
fSkipDestIfUnk db ?
654
mode dd ?
655
curheight dw ?
656
maxheight dw ?
657
RetroBlock dd ?
658
RetroSave:
659
  SAVE
660
prcinfo rb 1024
661
RetroPtr dd ?
662
colorptr dd ?
663
colortbl rd 16
664
ct_end:
665
fname_size dd ?
666
max_block dd ?
667
cur_block dd ?
668
HDoc dd ?
669
HClick dd ?
670
top dw ?
671
line_count dd ?
672
par_count  dd ?
673
char db ?
674
pitch db ?
675
wSave dd ?
676
RetroXY dd ?
677
RetroGroup dd ?
678
 
679
save_stack:
680
rb RTFSTACKSIZE
681
save_limit:
682
rb BGIFONTSIZE
683
 
684
listptr dd ?
685
szKeyword rb 31
686
szParameter rb 21
687
block_end dd ?
134 diamond 688
I_END:                             ; метка конца программы
485 heavyiron 689
 
690
procinfo process_information
31 halyavin 691
rb RTFSIZE
692
esp1:
693
rb ESPSIZE
694
sys_mem:
695
rb ESPSIZE
1418 mario79 696
;---------------------------------------------------------------------
697
temp_dir_pach:
698
        rb 4096
699
;---------------------------------------------------------------------
134 diamond 700
esp_end: