Subversion Repositories Kolibri OS

Rev

Rev 1399 | Rev 1436 | 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
	call	get_filter_data
265
;	copy_path	open_dialog_name,path,library_path,0
266
 
267
	start_OpenDialog	OpenDialog_data
268
 
269
	cmp	[OpenDialog_data.status],2 ; OpenDialog does not start
270
	je	.sysxtree  ; 	some kind of alternative, instead OpenDialog
271
	cmp	[OpenDialog_data.status],1
272
;	jne	still ; OpenDialog user say cancel
273
;	copy path
274
;	call	draw_window
275
	je	prep_load
276
 
277
;.copy_dir_path:
278
;    mov   esi,fname_buf
279
;    mov   edi,temp_dir_pach
280
;	call  copy_dir_path
281
 
282
	jmp	still ; OpenDialog user selected the target file
283
	; [OpenDialog_data.openfile_pach] pointer of area the target file
284
 
285
;---------------------------------------------------------------------
286
.sysxtree:
134 diamond 287
    or   [mode],RTF_OPENING
31 halyavin 288
    opendialog draw_window, prep_load, st_1, fname_buf
289
  st_1:
290
    and  [mode],not RTF_OPENING
291
    jmp  still;red
292
  stilld:
293
    jmp  still
294
;---------------------------------------------------------------------
1418 mario79 295
get_filter_data:
296
	mov	edi,[OpenDialog_data.com_area]
297
	test	edi,edi
298
	jnz	@f
299
	add	esp,4
300
	jmp	still
301
@@:
302
	add	edi,4096+4
303
	mov	esi,Filter
304
	mov	ecx,[esi]
305
	inc	ecx
306
	cld
307
	rep	movsb
308
	mov	edi,[OpenDialog_data.com_area]
309
	mov	[edi+4096],dword 1
310
	ret
311
;---------------------------------------------------------------------
31 halyavin 312
 
313
  button:
134 diamond 314
    mcall 17            ; 17 - получить идентификатор нажатой кнопки
31 halyavin 315
    cmp   ah,2
134 diamond 316
    je    key.help
31 halyavin 317
    cmp   ah,3
134 diamond 318
    je    key.color
31 halyavin 319
    cmp   ah,4
134 diamond 320
    je    key.alignment
31 halyavin 321
    cmp   ah,5
134 diamond 322
    je    key.file_open
31 halyavin 323
    cmp   ah,6
134 diamond 324
    je    key.incp
31 halyavin 325
    cmp   ah,7
134 diamond 326
    je    key.decp
31 halyavin 327
  if RENDER eq FREE
328
    cmp   ah,8
134 diamond 329
    je    key.zminus
31 halyavin 330
    cmp   ah,9
134 diamond 331
    je    key.zplus
31 halyavin 332
  end if
134 diamond 333
    cmp   ah, 1         ; если НЕ нажата кнопка с номером 1,
334
    jne   .noexit       ;  вернуться
31 halyavin 335
 
336
  .exit:
134 diamond 337
    mcall -1            ; иначе конец программы
31 halyavin 338
  .noexit:
339
    cmp   ah,20
340
    jne   still
341
    mcall 37,1
342
    and   eax,0xffff
343
    cmp   eax,[HClick]
134 diamond 344
    je    still
31 halyavin 345
    mov   [HClick],eax
346
    sub   eax,25
347
    mul   [HDoc]
348
    mov   ebx,dword[prcinfo+46]
349
    sub   ebx,25
350
    div   ebx
351
    dpd   eax
352
    mov   [top],TOP
353
    sub   [top],ax
354
    dps   'B'
355
    jmp   red;still
356
;---------------------------------------------------------------------
357
;---  ОПРЕДЕЛЕНИЕ И ОТРИСОВКА ОКНА  ----------------------------------
358
;---------------------------------------------------------------------
359
 
360
draw_window:
361
 
134 diamond 362
    mcall 12, 1                    ; функция 12: сообщить ОС об отрисовке окна
363
                                   ; 1 - начинаем рисовать
364
 
31 halyavin 365
    mcall 0, <10,WINW>, <100,WINH>, WIN_COLOR,0x805080D0, 0x005080D0
485 heavyiron 366
    mcall 4, <8,8>, 0x10DDEEFF, title, titlesize-title
31 halyavin 367
    mov  esi,ecx
368
    mcall 47,0x30000,isymImplemented,<114,8>
369
    add  edx,36 shl 16
370
    mcall ,,isymMax
371
    add  edx,40 shl 16
372
    mov  esi,0x104e00e7;0x10f27840
373
    cmp  dword[fileinfo.name],N_A
374
    jne  .noNA
375
    mov  esi,0x10ff0000
376
  .noNA:
377
    mcall 4,edx,esi,fileinfo.name,[fname_size]
378
    mov  edi,prcinfo
379
    mcall 9,edi,-1
380
    and  [mode],not RTF_TOEOF
381
    mov  ebx,[edi+42]
382
    cmp  ebx,[wSave]
134 diamond 383
    je   .nochg
31 halyavin 384
  .chg:
385
    mov  [wSave],ebx
134 diamond 386
    or   [mode],RTF_TOEOF
31 halyavin 387
    and  [HDoc],0
388
    and  [line_count],0
389
    mov  [HClick],-100
390
  .nochg:
1195 diamond 391
 
392
 
393
mcall 13,<5,dword[prcinfo+42]>,<21,21>,0x8000459a
394
 
395
mcall 8,7*65536+39,23*65536+16,5,0x459a           ;load
396
mcall 8,46*65536+57,23*65536+16,4,0x459a ;align
397
mcall 8,103*65536+44,23*65536+16,3,0x459a   ;color
398
mcall 8,147*65536+37,23*65536+16,2,0x459a        ;help
399
 
400
mcall 8,184*65536+44,23*65536+16,7,0x459a ;prev
401
mcall 8,229*65536+46,23*65536+16,6,0x459a      ;next
402
 
403
if RENDER eq FREE
404
mcall 8,276*65536+44,23*65536+16,9,0x459a ;zoom+
405
mcall 8,320*65536+44,23*65536+16,8,0x459a ;zoom-
406
end if
407
 
408
 
409
 
410
 
411
;    sub  ebx,60
412
;    shl  ebx,16
413
;    mov  bx,12
414
;    mov  ecx,5 shl 16+12
415
;    mov  esi,0xb810e7
416
;    mov  edx,2
417
; BTN_SPACE equ 14 shl 16
418
;    mcall 8             ;2
419
;    sub  ebx,BTN_SPACE
420
;    inc  edx
421
;    mcall 8,,,,0x459a    ;3
422
;    sub  ebx,BTN_SPACE
423
;    inc  edx
424
;    mcall ,,,,0x107a30  ;4
425
;    sub  ebx,BTN_SPACE
426
;    inc  edx
427
;    mcall ,,,,0xcc0000  ;5
428
;    sub  ebx,BTN_SPACE
429
;    inc  edx
430
;    mcall ,,,,0x575f8c  ;6
431
;    sub  ebx,BTN_SPACE
432
;    inc  edx
433
;    mcall ,,,,0x575f8c  ;7
434
;  if RENDER eq FREE
435
;    sub  ebx,BTN_SPACE
436
;    inc  edx
437
;    mcall ,,,,0x6a73d0  ;8
438
;    sub  ebx,BTN_SPACE
439
;    inc  edx
440
;    mcall ,,,,0xd048c8  ;9
441
;  end if
442
;text
443
;    shr  ecx,16
444
;    mov  bx,cx
445
;    add  ebx,3 shl 16+3
446
    mcall 4,10*65536+27,0x10ddeeff,btn_text,btn_end-btn_text
447
 
31 halyavin 448
    sub  dword[prcinfo+42],LMARGIN
449
    sub  dword[prcinfo+46],CHARH
450
 if GUTTER eq 1
451
    mov  ebx,LMARGIN shl 16+20
452
    mov  ecx,20
453
    mov  eax,4
454
    mov  edx,arrow
455
    mov  esi,1
456
  .loop1:
457
    push ecx
458
    mcall ,,0xff0000
459
    pop  ecx
460
    add  ebx,50 shl 16
461
    loop .loop1
462
 end if
463
    mov  ebx,dword[prcinfo+42]
464
    shl  ebx,16
1195 diamond 465
    add  ebx,2 shl 16+13
31 halyavin 466
    mov  ecx,dword[prcinfo+46]
1195 diamond 467
    add  ecx,40 shl 16-35
31 halyavin 468
    mov  edx,20+1 shl 29
469
    mcall 8
470
    mov  ecx,[HClick]
471
    shl  ecx,16
1195 diamond 472
    add  ecx,6-3 shl 16 + 7
31 halyavin 473
    mcall 13,,,0xe26830
474
 if MODE eq RTF
475
    test [mode],RTF_OPENING
476
    jne  .ex
477
    and  [mode],not (RTF_BOTTOM);+RTF_TOEOF)
478
    mov  [colorptr],colortbl
479
    mov  eax,DEFCOLOR
480
    mov  edi,colortbl
481
    mov  ecx,16
482
    rep  stosd
483
    xor  eax,eax
484
    mov  [cGroup],eax
485
    mov  edi,Chp
486
    mov  ecx,SIZE_save
487
    rep  stosb
488
    mov  ax,[top]
489
    mov  word[Free+6],10
490
    mov  word[Free+4],ax
491
    mov  esi,I_END
492
    call RtfParse
493
    dpd  eax
494
    dps  'Lines='
495
    mov  eax,[line_count]
496
    dpd  eax
497
    newline
498
;    movzx  eax,word[Free+4]
499
;    dpd  eax
500
    mov  eax,dword[prcinfo+42]
501
    mov  edx,WIN_COLOR
502
    call draw_progress
503
if BENCH eq 1
504
    mcall 26,9
505
    sub  eax,[bench]
506
    dps  <13,10,'Bench='>
507
    dpd  eax
508
end if
509
 else
510
    mov  [char],0
511
    mov  ebx,10 shl 16+TOP
512
    mov  ecx,16
513
  .l0:
514
    push ecx
515
    mov  ecx,16
516
  .l1:
517
    push ecx
518
  if RENDER eq BGI
519
    mov  edx,char
520
    mov  ecx,0x48000000
521
    mov  esi,1
522
    BGIfont_Outtext
523
  else
524
    mcall 4,,0x10000000,char,1
525
  end if
526
    pop  ecx
527
    inc  [char]
528
    add  ebx,(CHARW+3) shl 16
529
    loop .l1
530
    pop  ecx
531
    add  ebx,CHARH+2
532
    and  ebx,0x0000ffff
533
    add  ebx,10 shl 16
534
    loop .l0
535
 end if
536
 .ex:
134 diamond 537
    mcall 12, 2                    ; функция 12: сообщить ОС об отрисовке окна
538
                                   ; 2, закончили рисовать
539
    ret                            ; выходим из процедуры
31 halyavin 540
 
541
if GUTTER eq 1
542
   arrow db 0x19
543
end if
544
;---------------------------------------------------------------------
545
;---  ДАННЫЕ ПРОГРАММЫ  ----------------------------------------------
546
;---------------------------------------------------------------------
547
 
548
; интерфейс программы многоязычный
549
;  Вы можете задать язык в MACROS.INC (lang fix язык)
485 heavyiron 550
 
551
title:
1195 diamond 552
  db 'RTF Reader v1.    (     ):'
485 heavyiron 553
titlesize:
31 halyavin 554
btn_text:
1399 diamond 555
    db 'Load Aligment Color Help    <      >'
1195 diamond 556
if RENDER eq FREE
557
    db '    Zoom+ Zoom- '
558
  end if
31 halyavin 559
btn_end:
1418 mario79 560
;---------------------------------------------------------------------
561
OpenDialog_data:
562
.type			dd 0
563
.procinfo		dd procinfo ;+4
564
.com_area_name		dd communication_area_name ;+8
565
.com_area		dd 0 ;+12
566
.opendir_pach		dd temp_dir_pach ;+16
567
.dir_default_pach	dd communication_area_default_pach ;+20
568
.start_path		dd open_dialog_path ;+24
569
.draw_window		dd draw_window ;+28
570
.status			dd 0 ;+32
571
.openfile_pach		dd fname_buf ;+36
31 halyavin 572
 
1418 mario79 573
communication_area_name:
574
	db 'FFFFFFFF_open_dialog',0
575
open_dialog_path:
576
	db '/sys/File Managers/opendial',0
577
communication_area_default_pach:
578
	db '/rd/1',0
579
 
580
Filter:
581
dd  Filter.end - Filter
582
db 'RTF',0
583
.end:
584
db 0
585
;---------------------------------------------------------------------
139 diamond 586
attrinfo:
587
        dd      5
588
        dd      0
589
        dd      0
590
        dd      0
591
        dd      fileattr
592
        db      0
593
        dd      fileinfo.name
594
 
31 halyavin 595
fileinfo:
596
  dd 0
597
.block:
598
  dd 0
139 diamond 599
  dd 0
31 halyavin 600
.size  dd 1
601
  dd I_END
602
.name:
603
;   db '//'
604
;  db ' /HD/1/RTF/texts/FASM.TXT',0
605
;  db '/HD/1/RTF/TEST2.RTF',0
606
;  db '/HD/1/RTF/texts/index_ru.RTF',0
607
;  db '/HD/1/RTF/texts/stas.RTF',0
608
;  db '/HD/1/RTF/texts/zed.RTF',0
609
;  db '/HD/1/RTF/PRACT.RTF',0
610
;  db '/HD/1/RTF/SETUP2.RTF',0
611
;  db '/HD/1/RTF/texts/TC_RU.RTF',0
612
;  db '/HD/1/RTF/texts/WORD.RTF',0
613
;  db '/HD/1/RTF/texts/WORD97.RTF',0
614
;  db '/HD/1/RTF/texts/MASTAPP.RTF',0
615
;  db '/HD/1/RTF/texts/1c_tor77.RTF',0
616
;  db '/HD/1/RTF/texts/RELATION.RTF',0
617
;  db '/HD/1/RTF/texts/PLANETS.RTF',0
618
;  db '/HD/1/RTF/texts/LOTRRUS.RTF',0
1195 diamond 619
;  db '/HD/1/RTF/texts/RULEBOOK.RTF',0
31 halyavin 620
;  db '/HD/1/RTF/texts/RULEBK2.RTF',0
621
;  db '/HD/1/RTF/texts/GLEB.RTF',0
622
;  db '/HD/1/RTF/texts/DWG13_14.RTF',0
623
;  db '/HD/1/RTF/texts/LK.RTF',0
624
 
625
;  db '/HD/1/RTF/texts/JUSTIFY.RTF',0
626
   rb  256-($-.name)
627
;---------------------------------------------------------------------
628
;blind db ?
629
if RENDER eq PIX
630
;  rd 2
631
  Free rd 9
632
else
633
if RENDER eq BGI
634
  FreeFontscale dd 0.07
635
else
636
  Zoomscale dd 1.15
637
  FreeFontscale dd 0.04
638
end if
639
  Free BGIfree FONT_NAME,0,0,1.0,1.0,char,1,0x44000000,0
640
end if
641
I_END0:
134 diamond 642
fname_buf:
643
        rb      1024+16
139 diamond 644
fileattr rd 40/4
31 halyavin 645
if BENCH eq 1
646
  bench dd ?
647
end if
648
tail dd ?
649
cGroup dd ?
650
Chp:
651
  CHP
652
Pap:
653
  PAP
654
Sep:
655
  SEP
656
Dop:
657
  DOP
658
rds db ?
659
ris db ?
660
cbBin dd ?
661
lParam dd ?
662
fSkipDestIfUnk db ?
663
mode dd ?
664
curheight dw ?
665
maxheight dw ?
666
RetroBlock dd ?
667
RetroSave:
668
  SAVE
669
prcinfo rb 1024
670
RetroPtr dd ?
671
colorptr dd ?
672
colortbl rd 16
673
ct_end:
674
fname_size dd ?
675
max_block dd ?
676
cur_block dd ?
677
HDoc dd ?
678
HClick dd ?
679
top dw ?
680
line_count dd ?
681
par_count  dd ?
682
char db ?
683
pitch db ?
684
wSave dd ?
685
RetroXY dd ?
686
RetroGroup dd ?
687
 
688
save_stack:
689
rb RTFSTACKSIZE
690
save_limit:
691
rb BGIFONTSIZE
692
 
693
listptr dd ?
694
szKeyword rb 31
695
szParameter rb 21
696
block_end dd ?
134 diamond 697
I_END:                             ; метка конца программы
485 heavyiron 698
 
699
procinfo process_information
31 halyavin 700
rb RTFSIZE
701
esp1:
702
rb ESPSIZE
703
sys_mem:
704
rb ESPSIZE
1418 mario79 705
;---------------------------------------------------------------------
706
temp_dir_pach:
707
        rb 4096
708
;---------------------------------------------------------------------
134 diamond 709
esp_end: