Subversion Repositories zxusbnet

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
151 dimkam 1
;***************************************************************
2
;*
3
;* COVER.H
4
;*
5
;* Главный файл оболочки.
6
;* Оконные и графические процедуры.
7
;*
8
;* (C) Vitamin/CAIG/2001  2001-2006
9
;*
10
;* Обозначения в файле MACROS.H
11
;*
12
;* Revision 9.01.2006
13
;*
14
;***************************************************************
15
 
16
#if 0
17
Func: ASKER
18
Desc: Задает вопрос "вы уверены (д/н)"
19
Out:  Z- YES, NZ- NO
20
Uses: *
21
Note: NOASKER запрещает генерацию
22
---
23
Func: WINDOW
24
Desc: Выводит окно со всеми элементами и запускает цикл
25
In:   IX- window descriptor
26
Out:  A- номер выбранной зоны (255 если отмена)
27
Uses: *
28
---
29
Func: LETTERS
30
Desc: Устанавливает режим ввода букв для EDIT
31
Uses: A
32
---
33
Func: DIGITS
34
Desc: Устанавливает режим ввода только цифр для EDIT
35
Uses: A
36
---
37
Func: EDIT
38
Desc: Редактор текста
39
In:   HL- text, DE- (XZ,YZ), B- symbols
40
Uses: *
41
Note: <Edit>- переключение языка
42
---
43
Func: PRINT
44
Desc: Печать строки (шрифт 6x8 по умолчанию) с позиции (1,0)
45
In:   HL- text, C- symbols (=0- сколько в строке)
46
Uses: *
47
Note: Коды: 13- перевод строки, 22,X,Y- позиционирование,
48
      0- конец строки. Позиция относительно левого верхнего
49
      угла текущего окна
50
---
51
Func: PRINTXY
52
Desc: Печать строки с определенной позиции
53
In:   DE- (XS,YZ) (*)
54
Uses: *
55
Note: (*) см. описание PRINT
56
---
57
Func: MAKEWIND
58
Desc: Открытие окна и печать текста
59
In:   IX- descriptor
60
Uses: *
61
Note: Другие элементы интерфейса не выводятся
62
---
63
Func: TAB_JP
64
Desc: Переход к процедуре с номером в таблице
65
In:   A- number, HL- table
66
---
67
Func: TST_HL
68
Desc: Проверка HL
69
In:   HL
70
Out:  CARRY (HL=FFFF), ZERO (HL=0000)
71
Uses: A
72
---
73
Func: CLOSE
74
Desc: Закрытие последнего открытого окна
75
Out:  A- количество оставшихся окон
76
Uses: *
77
---
78
Func: RAMKA
79
Desc: Сплошная рамка по знакоместам
80
In:   HL=(XZ,YZ)-позиция BC=(XZ,YZ)- размер
81
Uses: *
82
---
83
Func: RAMK
84
Desc: Пунктирная рамка по знакоместам
85
In:   HL=(XZ,YZ)- позиция BC=(XZ,YZ)- размер
86
Uses: *
87
---
88
Func: CLS_WIN
89
Desc: Очистка области на экране
90
In:   HL=(XZ,YZ)- позиция BC=(XZ,YZ)- размеры
91
Uses: *
92
Note: Атрибуты области сбрасываются в WINCOLOR
93
---
94
Func: GETWIND
95
Desc: Сохранение области экрана в память
96
In:   HL=(XZ,YZ)- позиция, BC=(XZ,YZ)- размер DE- memaddr
97
Uses: *
98
Note: Атрибуты также сохраняются
99
---
100
Func: PUTWIND
101
Desc: Вывод области экрана из памяти
102
Note: Параметры аналогично GETWIND
103
---
104
Func: PUT_SPRT
105
Desc: Вывод спрайта
106
In:   HL=(XZ,YZ)- позиция BC=(XZ,YZ)- размер
107
      DE- данные в памяти, C': бит0- данные, бит1- атрибуты
108
      бит2- экранные координаты (иначе оконные)
109
Uses: *
110
---
111
Func: COMBOBOX
112
Desc: Выводит и обрабатывает комбобокс
113
In:   HL=(YZ,XZ)- координаты на экране BC=(YZ,XZ)- размер
114
      DE- строки длиной E' и числом D'. A- первый элемент
115
Out:  A- выбранный элемент (255 если отмена)
116
Note: NOCOMBO запрещает генерацию
117
#endif 
118
 
119
 
120
;BIT NUMBERS
121
FLG_HEADER=0
122
FLG_REFRESH=1
123
FLG_MOVABLE=2
124
FLG_NOMODAL=3
125
FLG_NOBACK=4
126
 
127
        #ifndef NOASKER
128
ASKER
129
        LD HL,(YWIN)
130
        PUSH HL
131
        LD IX,ASKWIN
132
        CALL WINDOW
133
        AND A
134
        PUSH AF
135
        CALL CLOSE
136
        POP AF
137
		POP HL
138
        LD (YWIN),HL
139
        RET 
140
 
141
ASKWIN  DEFB 12,10,9,4,7
142
        DEFB 0
143
        DEFW ASTEXT
144
        DEFW ASACT
145
        DEFW -1
146
 
147
ASTEXT  DEFB 'Вы уверены?',13,13
148
        DEFB ' Да  Нет',0
149
 
150
ASACT   DEFB 1,2,3,1,3
151
        DEFB 4,2,3,1,3
152
        DEFB -1
153
 
154
        #endif           ;ASKER
155
 
156
SP_CYC  LDCP            ;ложим спрайты
157
        RET Z
158
        LD D,A
159
        INC HL
160
        MOVHL E
161
        MOVHL C
162
        MOVHL B
163
        MOVHL A
164
        EXX 
165
        LD C,A
166
        EXX 
167
        LD A,(HL)
168
        INC HL
169
        PUSH HL
170
        LD H,(HL)
171
		LD L,A
172
        EX DE,HL
173
        CALL PUT_SPRT
174
        POP HL
175
        INC HL
176
        JR SP_CYC
177
 
178
P_FLAGZ SET 1,(IX+5)
179
FL_CYC  LDCP            ;ложим флажки
180
        RET Z
181
        CALL CAL_COR
182
        INC HL
183
        PUSH HL
184
        LD A,(HL)
185
        AND 7
186
        XOR 4
187
        CALL PR_ONE
188
        POP HL
189
        HLPL3
190
        JR FL_CYC
191
 
192
P_RADIO SET 2,(IX+5)
193
SW_CYC  LDCP            ;ложим переключатели
194
        RET Z
195
        INC HL
196
        LD B,(HL)       ;CNT
197
        INC HL
198
        LD C,(HL)       ;EQU
199
        HLPL3
200
        PUSH HL
201
PISS    PUSH AF
202
		PUSH BC
203
        CALL CAL_COR
204
        LD A,C
205
;       DEC A
206
        AND A
207
        JR Z,PROT
208
        LD A,1
209
PROT    INC A
210
        CALL PR_ONE
211
        POP BC
212
		POP AF
213
        INC A
214
        DEC C
215
        DJNZ PISS
216
        POP HL
217
        JR SW_CYC
218
 
219
        #ifndef NOSLB
220
P_POLZ  SET 3,(IX+5)
221
PLZ_CYC LDCP            ;ложим ползунки
222
        RET Z
223
        CALL POLZUNK
224
        CALL PUT_BAR
225
        JR PLZ_CYC
226
        #endif 
227
 
228
P_HAND  SET 4,(IX+5)        ;ложим рукоятки
229
RU_CYC  LDCP
230
        RET Z
231
        CALL CAL_COR
232
        INC HL
233
        LD A,(HL)
234
        INC HL
235
        LD C,(HL)
236
        HLPL3
237
        PUSH HL
238
        AND A
239
        JR NZ,HOR_RUK
240
        CALL ADDRZ
241
        LD A,15
242
        SUB C
243
        JR Z,PT_RKV
244
        RLA 
245
        LD B,A
246
SKPV    LD (HL),16
247
        CALL D_HL
248
        DJNZ SKPV
249
PT_RKV  LD DE,0xFE82
250
        LD (HL),D
251
        CALL D_HL
252
        LD (HL),E
253
        CALL D_HL
254
        LD (HL),E
255
        CALL D_HL
256
        LD (HL),D
257
        CALL D_HL
258
        LD A,C
259
        AND A
260
        JR Z,RP_CYC
261
        RLA 
262
        LD B,A
263
OTRK    LD (HL),16
264
        CALL D_HL
265
        DJNZ OTRK
266
RP_CYC  POP HL
267
        JR RU_CYC
268
 
269
HOR_RUK
270
        CALL ADDRZ
271
        PUSH HL
272
		PUSH BC
273
        LD C,8
274
        XOR A
275
CL_UPS  LD B,4
276
        PUSH HL
277
CL_LD   LD (HL),A
278
        INC L
279
        DJNZ CL_LD
280
        AND 192
281
        LD (HL),A
282
        POP HL
283
        INC H
284
        LD A,H
285
        AND 7
286
        SUB 3
287
        JR Z,AOK
288
        LD A,-1
289
AOK     CPL 
290
        DEC C
291
        JR NZ,CL_UPS
292
 
293
        POP BC
294
		POP HL
295
        LD A,C
296
        AND 252
297
        RRA 
298
        RRA 
299
        ADDHLA
300
 
301
        LD A,C
302
        AND 3
303
        RLA 
304
        LD (NYLO+1),A
305
        LD A,7
306
        LD (STROK+1),A
307
        LD BC,RK_SPRT
308
SHLUSS  LD A,(BC)
309
		LD E,A
310
		LD D,0
311
        PUSH BC
312
NYLO    LD A,0
313
        AND A
314
        JR Z,SUJ
315
        LD B,A
316
 
317
SSHIFT
318
        RR E
319
		RR D
320
        DJNZ SSHIFT
321
SUJ
322
        LD A,E
323
        XOR (HL)
324
        LD (HL),A
325
        INC HL
326
        LD A,D
327
        AND 254
328
        XOR (HL)
329
        LD (HL),A
330
        DEC HL
331
        INC H
332
STROK   LD A,7
333
        POP BC
334
        INC BC
335
        DEC A
336
        LD (STROK+1),A
337
        JR NZ,SHLUSS
338
        POP HL
339
        JP RU_CYC
340
 
341
P_LIST  SET 5,(IX+5)
342
LS_CYC  LDCP            ;ложим списки
343
        RET Z
344
        PUSH HL
345
        LD E,A
346
		LD D,0
347
		LD L,A
348
		LD H,D
349
        ADD HL,HL
350
        INC HL
351
        ADD HL,HL
352
        ADD HL,DE
353
        MOV E,D,WIN_ACT
354
        ADD HL,DE
355
        EX AF,AF' 
356
        LD A,(HL)
357
        DEC A
358
        LD (EXS+1),A
359
        EX AF,AF' 
360
        POP HL
361
        CALL POLZUNK
362
        PUSH HL
363
        LD A,(HL)
364
        LD (STR_LEN+1),A
365
        LD (PR_LIST+1),A
366
        DEC HL
367
        LD B,(HL)
368
        DEC HL
369
        LD C,(HL)
370
        LD (LST_TXT+1),BC
371
        DEC HL
372
        LD A,(HL)
373
        LD (DLTR+1),A
374
        POP HL
375
        LD A,D
376
EXS     ADD A,0
377
        LD D,A
378
        PUSH HL
379
        CALL PUT_BAR
380
        CALL LISTER
381
        POP HL
382
        INC HL
383
        JR LS_CYC
384
 
385
WINDOW  LD (IX+5),0
386
WINDOWSS
387
        LD (STAK),SP
388
        CALL MAKEWIND
389
        RES 5,(IX+4)
390
        MOV L,H,WIN_ACT
391
        CALL TST_HL
392
        JP C,WINCYCL
393
        MOV L,H,WIN_HOT
394
        CALL TST_HL
395
        JR C,WINCYCL
396
        JR Z,NO_HOT
397
        SET 0,(IX+5)
398
NO_HOT  MOV L,H,WIN_SPR
399
        CALL TST_HL
400
        JR C,WINCYCL
401
 
402
        CALL NZ,SP_CYC
403
 
404
NEY1    MOV L,H,WIN_FLG
405
        CALL TST_HL
406
        JR C,WINCYCL
407
 
408
        CALL NZ,P_FLAGZ
409
 
410
NEY2    MOV L,H,WIN_SWT
411
        CALL TST_HL
412
        JR C,WINCYCL
413
 
414
        CALL NZ,P_RADIO
415
 
416
NEY3    
417
		#ifndef NOSLB
418
        MOV L,H,WIN_SLB
419
        CALL TST_HL
420
        JR C,WINCYCL
421
 
422
        CALL NZ,P_POLZ
423
        #endif 
424
 
425
NEY4    MOV L,H,WIN_PLZ
426
        CALL TST_HL
427
        JR C,WINCYCL
428
 
429
        CALL NZ,P_HAND
430
 
431
NEY5    MOV L,H,WIN_LST
432
        CALL TST_HL
433
        JR C,WINCYCL
434
 
435
        CALL NZ,P_LIST
436
 
437
NEY6    MOV L,H,WIN_CLL          ;вызов при создании
438
        CALL TST_HL
439
        JR Z,WINCYCL
440
        JR C,WINCYCL
441
        SET 6,(IX+5)
442
        LD DE,WINCYCL
443
        PUSH DE
444
        JP (HL)
445
 
446
MIMO    CALL FIR
447
        JR Z,WINCYCL
448
        TEST FLG_NOMODAL,WIN_OPT
449
        JR Z,WINCYCL
450
EXIT    LD A,-1
451
        RET 
452
 
453
WINCYCL
454
        CALL POINT
455
        CALL RECALC
456
        CALL KEYTEST
457
        BIT 5,(IX+5)
458
        CALL NZ,AB_LIST
459
        CALL ACTEST
460
        LD DE,(YWIN)
461
		LD HL,(Y_ZN)
462
		LD BC,(YSIZ)
463
        CALL HITTEST
464
        JR C,MIMO
465
        LD A,L
466
        CP E
467
        JR NZ,WINCYCL
468
        CALL FIR
469
        JR Z,WINCYCL
470
        TEST FLG_MOVABLE,WIN_OPT
471
        JR Z,WINCYCL
472
        CALL WAITKEY
473
        SET 5,(IX+4)
474
        LD HL,(YWIN)
475
        ADD HL,HL
476
        ADD HL,HL
477
        ADD HL,HL
478
        LD A,L
479
		LD L,H
480
		LD H,A
481
        LD (X_C),HL
482
 
483
SELCYC  LD HL,(YWIN)       ;перемещение окна
484
        LD BC,(YSIZ)
485
        PUSH BC
486
		PUSH BC
487
		PUSH HL
488
        CALL RAMK
489
        CALL POINT
490
        CALL RECALC
491
        POP HL
492
		POP BC
493
        CALL RAMK
494
        POP BC
495
        LD HL,(Y_ZN)
496
YTST    LD A,L
497
        ADD A,C
498
        SUB 25
499
        JR C,XTST
500
        INC A
501
        SUB L
502
        NEG 
503
        LD L,A
504
        AMUL8
505
        LD (Y_C),A
506
 
507
XTST    LD A,H
508
        ADD A,B
509
        SUB 33
510
        JR C,COOK
511
        INC A
512
        SUB H
513
        NEG 
514
        LD H,A
515
        AMUL8
516
        LD (X_C),A
517
COOK    LD (YWIN),HL
518
        CALL FIR
519
        JR Z,SELCYC
520
        LD (IX+0),H
521
        LD (IX+1),L
522
        CALL CLOSE
523
        CALL WAITKEY
524
        SET 1,(IX+4)
525
        JP WINDOWSS
526
 
527
KEYTEST
528
        CALL READKEY
529
        CP 14
530
        JR Z,QUI
531
        CP 7
532
        JR Z,QUI
533
        LD C,A
534
        BIT 0,(IX+5)
535
        RET Z
536
        LD L,(IX+10)
537
        LD H,(IX+11)
538
 
539
KEY_CYC LDCP
540
        RET Z
541
        CP C
542
        JR NZ,NX_KEY
543
        INC HL
544
        LD E,(HL)
545
        INC HL
546
        LD A,(HL)
547
        AND A
548
        JR Z,EX_
549
        LD D,A
550
        EX DE,HL
551
        POP DE
552
        JP (HL)
553
EX_     LD A,E
554
        POP DE
555
        RET 
556
NX_KEY  HLPL3
557
        JR KEY_CYC
558
QUI     POP HL
559
        JP EXIT
560
 
561
ACTEST
562
        MOV L,H,WIN_ACT
563
        CALL TST_HL
564
        RET Z
565
        RES 7,(IX+5)
566
        XOR A
567
        EX AF,AF' 
568
 
569
AC_CYC  LDCP
570
        RET Z
571
        LD D,A          ;X
572
        INC HL
573
        LD E,(HL)       ;Y
574
        INC HL
575
        LD B,(HL)       ;WIDTH
576
        INC HL
577
        LD A,(HL)       ;HGT
578
        AND A
579
        JR Z,SK_AC
580
        LD C,A
581
        INC HL          ;FLG
582
        PUSH HL
583
        CALL CAL_ABS
584
        LD HL,(Y_ZN)
585
        CALL HITTEST
586
        POP HL
587
        JR C,NETO
588
        LD A,(HL)
589
        RRA 
590
        JR NC,NETO
591
        RRA 
592
        JR NC,NOLIGA
593
        RRA 
594
        LD A,ACTCOLOR
595
        JR NC,LIGHA
596
        LD A,ACTPCOLR
597
LIGHA   SET 4,(HL)
598
        CALL LIGHT
599
NOLIGA  CALL FIR
600
        JR Z,NETE
601
        BIT 4,(HL)
602
        LD A,WINCOLOR
603
        CALL NZ,LIGHT
604
        RES 4,(HL)
605
        BIT 3,(HL)
606
        EXX 
607
        LD DE,WAITKEY
608
        JR Z,DOWAI
609
        LD DE,82
610
DOWAI   LD (PUSADR+1),DE
611
        LD (PUSAD1+1),DE
612
        EXX 
613
        BIT 2,(HL)
614
        EX DE,HL
615
        CALL NZ,PUSHER
616
        LD A,(IX+5)
617
        AND 254-0x60
618
        CALL NZ,OTHER
619
        BIT 7,(IX+5)
620
        RET NZ
621
PUSAD1  CALL WAITKEY
622
        EX AF,AF' 
623
        LD SP,(STAK)
624
        RET 
625
 
626
SK_AC   INC HL
627
        INC HL
628
        JR AC_CYC
629
 
630
 
631
NETO
632
        BIT 4,(HL)
633
        LD A,WINCOLOR
634
        CALL NZ,LIGHT
635
        RES 4,(HL)
636
NETE    INC HL
637
        EX AF,AF' 
638
        INC A
639
        EX AF,AF' 
640
        JP AC_CYC
641
 
642
LIGHT
643
        PUSH BC
644
        PUSH HL
645
        LD (CLR+1),A
646
        LD L,E
647
		LD H,D
648
        CALL COOR_ATR
649
ZKL     PUSH HL
650
        LD A,B
651
CLR     LD (HL),0
652
        INC L
653
        DJNZ CLR
654
        LD B,A
655
        POP HL
656
        DEC C
657
        JR Z,NZKL
658
        LD A,32
659
        ADDHLA
660
        JR ZKL
661
NZKL    POP HL
662
		POP BC
663
        RET 
664
 
665
JUMPZA  SET 7,(IX+5)
666
        LD A,(HL)
667
        INC HL
668
        LD H,(HL)
669
		LD L,A
670
        OR H
671
        RET Z
672
        JP (HL)
673
 
674
OTHER
675
        BIT 1,(IX+5)
676
        JR Z,HOW_SWT
677
        MOV L,H,WIN_FLG
678
TS_FL   LDCP
679
        JR Z,HOW_SWT
680
        EX AF,AF' 
681
        CP (HL)
682
        JR NZ,NX_FLG
683
        EX AF,AF' 
684
        INC HL
685
        LD A,(HL)
686
        CPL 
687
        LD (HL),A
688
        INC HL
689
        CALL JUMPZA
690
SL      POP HL
691
        CALL WAITKEY
692
        JP NEY1
693
 
694
NX_FLG  EX AF,AF' 
695
        HLPL3
696
        INC HL
697
        JR TS_FL
698
 
699
HOW_SWT
700
        BIT 2,(IX+5)
701
        JR Z,HOW_BAR
702
        MOV L,H,WIN_SWT
703
TS_SW   LDCP
704
        JR Z,HOW_BAR
705
        EX AF,AF' 
706
        CP (HL)
707
        JR C,NX_SW
708
        EX AF,AF' 
709
        LD A,(HL)       ;NUM
710
        INC HL
711
        ADD A,(HL)      ;CNT
712
        EXX 
713
        LD L,A
714
        EX AF,AF' 
715
        CP L
716
        EXX 
717
        JR NC,NX_SW+1
718
        EXX 
719
        LD L,A
720
        EX AF,AF' 
721
        LD A,L          ;NEXT
722
        EXX 
723
        DEC HL
724
        SUB (HL)
725
;       INC A
726
        HLPL2
727
        LD (HL),A
728
        INC HL
729
        CALL JUMPZA
730
SPL     POP HL
731
        CALL WAITKEY
732
        JP NEY2
733
 
734
NX_SW   HLPL3
735
        HLPL2
736
        EX AF,AF' 
737
        JR TS_SW
738
 
739
HOW_BAR
740
        #ifndef NOSLB
741
        BIT 3,(IX+5)
742
        JP Z,HOW_RUK
743
        MOV L,H,WIN_SLB
744
TS_BR   LDCP
745
        JP Z,HOW_RUK
746
        EX AF,AF' 
747
        CP (HL)
748
        JR NZ,NX_BR
749
        EX AF,AF' 
750
        INC HL
751
        CALL CAL_COR ;D-X E-Y
752
        CALL CAL_ABS
753
 
754
        CALL TST_SLB
755
 
756
        INC HL
757
        CALL JUMPZA
758
ZYT     POP HL
759
        POP HL
760
        JP NEY3
761
 
762
NX_BR   EX AF,AF' 
763
        LD A,8
764
        ADDHLA
765
        JR TS_BR
766
        #endif 
767
HOW_RUK
768
        BIT 4,(IX+5)
769
        RET Z
770
        MOV L,H,WIN_PLZ
771
TS_RU   LDCP
772
        RET Z
773
        EX AF,AF' 
774
        CP (HL)
775
        JR NZ,NX_RUK
776
        EX AF,AF' 
777
        CALL CAL_COR
778
        CALL CAL_ABS
779
        INC HL
780
        LD A,(HL)
781
        AND A
782
        INC HL
783
        JR NZ,TS_HRO
784
        XOR A
785
        LD (MAXA+1),A
786
        LD A,E
787
        RLA 
788
        RLA 
789
        LD E,A
790
        LD A,(Y_C)
791
        AND 254
792
        RRA 
793
        SUB E
794
        XOR 15
795
        CP 31
796
        JR C,TS_DG
797
        AND 15
798
        JR TS_DG
799
TS_HRO  LD A,D
800
        AND A
801
        RLA 
802
        RLA 
803
        LD D,A
804
        LD A,15
805
        LD (MAXA+1),A
806
        LD A,(X_C)
807
        AND 254
808
        RRA 
809
        SUB D
810
        CP 31
811
        JR C,TS_DG
812
        AND 15
813
TS_DG   CP 16
814
        JR C,COR_ZN
815
MAXA    LD A,0
816
COR_ZN  LD (HL),A
817
        INC HL
818
        CALL JUMPZA
819
        POP HL
820
        POP HL
821
        JP NEY4
822
 
823
NX_RUK  EX AF,AF' 
824
        HLPL3
825
        INC HL
826
        INC HL
827
        JR TS_RU
828
 
829
AB_LIST
830
        MOV E,D,WIN_LST
831
TS_LS   MOV L,H,WIN_ACT
832
 
833
        LD A,(DE)
834
        EX AF,AF' 
835
        EX DE,HL
836
        LDCP
837
        RET Z
838
 
839
        PUSH HL
840
        INC HL
841
        LD A,(HL)
842
        LD (RESH+1),A
843
        PUSH DE
844
        EX AF,AF' 
845
        LD L,A 
846
        LD E,A 
847
        LD H,0 
848
        LD D,H
849
        ADD HL,HL
850
        ADD HL,HL
851
        ADD HL,DE
852
        POP DE
853
 
854
        ADD HL,DE
855
        LD D,(HL)
856
        INC HL
857
        LD E,(HL)
858
        INC HL
859
        LD (COZIN+1),HL
860
        LD A,(HL)          ;SHIRINA
861
        LD (EXC+1),A
862
        LD (SHIR+1),A
863
        LD B,A
864
        INC HL
865
        LD C,(HL)
866
        LD A,C
867
        AND A
868
        JP Z,NX_ZNO
869
 
870
        LD HL,(YWIN)
871
        ADD HL,DE
872
        LD A,L
873
        LD (YSHKA+1),A
874
 
875
        PUSH HL
876
		PUSH BC
877
        CALL COOR_ATR
878
        LD DE,32
879
        LD A,(COLOR+1)
880
SP_A    PUSH BC
881
        LD C,L
882
SP_R    LD (HL),A
883
        INC L
884
        DJNZ SP_R
885
        LD L,C
886
        POP BC
887
 
888
        ADD HL,DE
889
        DEC C
890
        JR NZ,SP_A
891
        POP BC
892
		POP HL
893
 
894
        EX DE,HL
895
        LD HL,(Y_ZN)
896
        CALL HITTEST
897
        JR C,NX_ZNO
898
        EXX 
899
        POP HL
900
        INC HL
901
        LD B,(HL)
902
        INC HL
903
        LD C,(HL)  ;COUNT
904
        HLPL3
905
        LD D,(HL)  ;DELTA
906
        HLPL3
907
        LD A,(HL)
908
        INC HL
909
        EXX 
910
EXC     LD A,0          ;WIDTH
911
        DEC A
912
        ADD A,D
913
        CP H
914
        JP Z,BARR
915
        LD A,L
916
        SUB E
917
        EXX 
918
        CP C
919
        JR NC,TS_LS1       ;NX_ZNO
920
        PUSH HL
921
COZIN   LD HL,0
922
        INC HL
923
		INC HL
924
        BIT 4,(HL)
925
        JR Z,KEX
926
        RES 4,(HL)
927
 
928
        DEC HL
929
RESH    LD (HL),0
930
KEX     POP HL
931
        ADD A,D
932
        LD E,A
933
        PUSH HL
934
        EXX 
935
        LD A,D
936
        EXX 
937
        LD H,A
938
        EXX 
939
        LD A,E
940
        EXX 
941
        ADD A,E
942
        SUB D
943
        LD L,A
944
        CALL COOR_ATR
945
SHIR    LD B,0
946
        DEC B
947
        LD A,(SELCOLR+1)
948
ZPPL    LD (HL),A
949
        INC L
950
        DJNZ ZPPL
951
        POP HL
952
        CALL FIR
953
        JR NZ,SELESTA
954
        POP HL
955
        JP WINCYCL
956
 
957
SELESTA LD HL,(LST_TXT+1)
958
        LD A,(STR_LEN+1)
959
        LD D,A 
960
        LD A,E
961
        AND A
962
        JR Z,QQQ
963
        LD B,A 
964
        LD E,D 
965
        LD D,0
966
SILI    ADD HL,DE
967
        DJNZ SILI
968
QQQ     LD C,A
969
        LD A,254
970
        LD SP,(STAK)
971
        RET 
972
 
973
NX_ZNO  POP HL
974
        LD DE,9
975
        ADD HL,DE
976
TS_LS2  EX DE,HL
977
        JP TS_LS
978
 
979
TS_LS1  PUSH HL
980
        LD HL,(COZIN+1)
981
        INC HL
982
        LD (HL),C
983
        INC HL
984
        SET 4,(HL)
985
        POP HL
986
        JR TS_LS2
987
 
988
BARR    EXX 
989
        CALL FIR
990
        RET Z
991
        LD A,D
992
        LD DE,-8
993
        ADD HL,DE
994
        LD D,A
995
 
996
YSHKA   LD E,0
997
        CALL TST_SLB
998
        POP HL
999
        MOV L,H,WIN_LST
1000
        CALL LS_CYC
1001
        JP WINCYCL
1002
 
1003
TST_SLB
1004
        LD C,(HL)  ;HIGH
1005
        INC HL
1006
        LD A,(HL)
1007
        SUB C
1008
 
1009
        EXX 
1010
        LD E,A          ;NON-VISIBLE
1011
        EXX 
1012
 
1013
        INC HL
1014
        LD A,(HL)       ;SC_HGT
1015
 
1016
        EXX 
1017
        LD C,A          ;SC_HGT
1018
        SRL A
1019
        LD H,A          ;SC_HGT/2
1020
        EXX 
1021
 
1022
        INC HL
1023
        LD A,(HL)       ;STEP
1024
 
1025
        EXX 
1026
        LD L,A
1027
        EXX 
1028
 
1029
        INC HL
1030
        LD A,(HL)       ;DELTA
1031
 
1032
        EXX 
1033
        LD D,A
1034
        EXX 
1035
 
1036
        PUSH HL
1037
        LD A,(Y_ZN)
1038
        CP E            ;YMIN
1039
        JR Z,LN_UP1
1040
        SUB C           ;HGT
1041
        INC A
1042
        CP E
1043
        JR Z,LN_DEFW1
1044
 
1045
CLCBAR  LD A,E          ;Y
1046
        INC A
1047
        AMUL8
1048
        LD B,A          ;SCRTOP IN PIX
1049
 
1050
        LD A,E
1051
        DEC A
1052
        ADD A,C
1053
        AMUL8
1054
        LD C,A
1055
 
1056
        LD A,(Y_C)
1057
 
1058
        EXX 
1059
        SUB H           ;HBAR/2
1060
        EXX 
1061
        JR C,NEDOP
1062
        SUB B
1063
        JR NC,NE_BEG1
1064
NEDOP   LD H,0
1065
        JR DCR1
1066
NE_BEG1
1067
        LD H,A     ;DELTA IN PIX
1068
 
1069
        LD A,(Y_C)
1070
        EXX 
1071
        ADD A,H         ;HBAR/2
1072
        EXX 
1073
        JR C,PEREB
1074
        SUB C
1075
        JR C,DCR1
1076
PEREB   LD A,C
1077
        EXX 
1078
        SUB C
1079
        EXX 
1080
        SUB B
1081
NE_END1
1082
        LD H,A  ;DELTA POS
1083
DCR1    EXX 
1084
        LD A,L  ;STEP
1085
        EXX 
1086
        LD E,A
1087
        CALL MULS
1088
        LD A,L
1089
RZL1    POP HL
1090
        LD (HL),A
1091
        RET 
1092
LN_UP1
1093
        LD A,(HL)
1094
        AND A
1095
        JR Z,RZL1
1096
        DEC A
1097
        JR RZL1
1098
 
1099
LN_DEFW1
1100
        LD A,(HL)
1101
        EXX 
1102
        CP E
1103
        EXX 
1104
        JR NC,RZL1
1105
        INC A
1106
        JR RZL1
1107
 
1108
POLZUNK CALL CAL_COR ;D-X E-Y координаты
1109
        LD (X_LST+1),DE
1110
        INC HL
1111
        LD A,(HL)  ;высота
1112
        LD (HYW+1),A
1113
        LD (STRS1+1),A
1114
        LD C,A
1115
        INC HL
1116
        LD B,(HL)  ;количество эл-тов
1117
        INC HL
1118
        DEC A
1119
        DEC A
1120
        AMUL8
1121
        EXX 
1122
        LD E,A          ;TOTAL HGT
1123
        EXX 
1124
        LD A,B
1125
        SUB C
1126
        JR C,NO_FULL
1127
        EXX 
1128
        LD D,A
1129
        LD B,1
1130
KON     LD C,D          ;A,D
1131
        CALL DIVI
1132
        LD A,E
1133
        SUB C
1134
        JR C,KUN
1135
        CP 12
1136
        JR NC,REDY
1137
KUN     INC B
1138
        JR KON
1139
 
1140
REDY    EXX 
1141
        LD (HL),A  ;высота бара
1142
        INC HL
1143
        EXX 
1144
        LD D,A
1145
        LD A,B
1146
        EXX 
1147
        LD (HL),A  ;蠣
1148
        LD B,A
1149
        INC HL
1150
        LD C,(HL)       ;A      DELTA
1151
        CALL DIVI
1152
        LD A,C
1153
        EXX 
1154
        LD C,A
1155
        EXX 
1156
        HLPL3
1157
        RET 
1158
 
1159
NO_FULL LD A,B
1160
        LD (STRS1+1),A
1161
        LD C,0
1162
        EXX 
1163
        LD B,1
1164
        LD A,E
1165
        JR REDY
1166
 
1167
PUT_BAR PUSH HL      ;DE-коорд.   HYW-высота
1168
        PUSH DE
1169
        PUSH DE
1170
        CALL ADDRZ
1171
        LD A,5
1172
        CALL PR_ONE
1173
        POP DE
1174
        LD A,E
1175
HYW     ADD A,0
1176
        DEC A
1177
        LD E,A
1178
        LD A,6
1179
        CALL PR_ONE
1180
        POP DE
1181
        INC E
1182
        CALL ADDRZ
1183
        LD (HL),255
1184
        INC H
1185
        LD (HL),129
1186
        EXX                  ;E' -высота всей линейки
1187
        LD A,E
1188
        EXX 
1189
        LD C,A
1190
        EXX                  ;C' -пропуск
1191
        LD A,C
1192
        EXX 
1193
        LD B,A
1194
        AND A
1195
        JR Z,DEL_ZER
1196
ZP_PRB  CALL D_HL
1197
        LD (HL),129
1198
        DEC C
1199
        DJNZ ZP_PRB
1200
DEL_ZER EXX                  ;D' -высота бара
1201
        LD A,D
1202
        EXX 
1203
        SUB 6
1204
        LD B,A
1205
        CALL D_HL
1206
        DEC C
1207
        LD (HL),189
1208
ZP_BGN  CALL D_HL
1209
        LD (HL),165
1210
        DEC C
1211
        DJNZ ZP_BGN
1212
        CALL D_HL
1213
        DEC C
1214
        LD (HL),189
1215
        DEC C
1216
        DEC C
1217
        DEC C
1218
ZERK    CALL D_HL
1219
        LD (HL),129
1220
        DEC C
1221
        JR NZ,ZERK
1222
        CALL D_HL
1223
        LD (HL),255
1224
        POP HL
1225
        RET 
1226
 
1227
LISTER  LD HL,(YWIN)
1228
        PUSH HL
1229
X_LST   LD DE,0x0602        ;координаты списка в окне
1230
        ADD HL,DE
1231
        LD (YWIN),HL
1232
 
1233
STR_LEN LD E,8             ;длина одной строки (симв)
1234
        LD D,0
1235
LST_TXT LD HL,0            ;адрес списка
1236
DLTR    LD A,0             ;расположение бегунка
1237
        AND A
1238
        JR Z,STRS1
1239
SEARCH  ADD HL,DE
1240
        DEC A
1241
        JR NZ,SEARCH
1242
 
1243
STRS1   LD A,7     ;количество строк в списке
1244
        AND A
1245
        JR Z,ENND
1246
        LD B,A
1247
        LD DE,(YWIN)
1248
 
1249
PR_LIST LD C,8     ;длина строки
1250
        PUSH DE
1251
        CALL PRINT
1252
        POP DE
1253
        INC E
1254
        LD (YWIN),DE
1255
        DJNZ PR_LIST
1256
 
1257
ENND    POP HL
1258
        LD (YWIN),HL
1259
        RET 
1260
 
1261
;-------------------------------------------------------------
1262
LETTERS LD A,32
1263
        LD (FIRST+1),A
1264
        LD A,255
1265
        LD (LAST+1),A
1266
        RET 
1267
 
1268
DIGITS  LD A,48
1269
        LD (FIRST+1),A
1270
        LD A,58
1271
        LD (LAST+1),A
1272
        RET 
1273
 
1274
EDIT
1275
        XOR A
1276
        LD (SYMPOS+1),A
1277
        LD A,B
1278
        LD (TXTLEN+1),A
1279
        PUSH HL
1280
        LD HL,(YWIN)
1281
        EX (SP),HL ;коорд. окна
1282
        LD (TXTADR+1),HL
1283
        CALL CAL_ABS
1284
        LD (YWIN),DE
1285
TXTADR  LD HL,0
1286
TXTLEN  LD C,0
1287
        LD DE,0
1288
        CALL PRINTXY
1289
        LD DE,0x0080
1290
SYMPOS  LD A,0
1291
        LD B,A
1292
        ADD A,A
1293
        ADD A,B
1294
        LD C,A
1295
        LD B,4
1296
        CALL DIVI
1297
        SUB 4
1298
        NEG 
1299
        AND A
1300
        JR Z,JEX
1301
        RLA 
1302
        LD B,A
1303
SCR_KR  AND A
1304
        RL E
1305
        RL D
1306
        DJNZ SCR_KR
1307
JEX     LD HL,(YWIN)
1308
        LD A,H
1309
        ADD A,C
1310
        LD H,A
1311
 
1312
        CALL COOR_Z
1313
        INC H
1314
        LD (DREZ+1),HL
1315
        LD (DREZ1+1),HL
1316
        LD (SIGN+1),DE
1317
        LD (SIGN1+1),DE
1318
        XOR A
1319
        LD (FLASHER+1),A
1320
 
1321
W_KEY   LD B,7
1322
FLASHER LD A,0
1323
        AND 127
1324
RATE1   CP 10
1325
DREZ    LD HL,0
1326
SIGN    LD DE,0
1327
        CALL Z,KURSOR
1328
        LD A,(FLASHER+1)
1329
        AND 128
1330
        LD C,A
1331
        LD A,(FLASHER+1)
1332
        AND 127
1333
        INC A
1334
RATE2   CP 11
1335
        JR NZ,NO_CHAN
1336
        LD A,C
1337
        XOR 128
1338
        LD (FLASHER+1),A
1339
        JR RD_KY
1340
NO_CHAN OR C
1341
        LD (FLASHER+1),A
1342
 
1343
RD_KY   XOR A
1344
        LD (23560),A
1345
        HALT
1346
        LD A,(23560)
1347
        AND A
1348
        JR Z,W_KEY
1349
        LD A,(23560)
1350
        CP 6
1351
        JR Z,CAPS
1352
        CP 8
1353
        JR Z,KR_LFT
1354
        CP 9
1355
        JP Z,KR_RGT
1356
        CP 7
1357
        JP Z,CH_LAN
1358
        CP 12
1359
        JP Z,DELETE
1360
        CP 13
1361
        JR Z,EX_ED
1362
        CP 14
1363
        JR Z,EX_ED
1364
        LD C,A
1365
        ld a,0x7f
1366
		in a,(0xfe)
1367
		rra
1368
		JR c,EDIT_C
1369
        ld a,0x7f
1370
		in a,(0xfe)
1371
		rra
1372
        JR NC,EX_ED
1373
EDIT_C
1374
        CALL CORRECT
1375
REGISTR LD A,0
1376
        AND A
1377
        CALL NZ,RUSSIAN
1378
        LD A,C
1379
FIRST   CP 32
1380
        JR C,W_KEY
1381
LAST    CP 255
1382
        JR NC,W_KEY
1383
        LD A,(FLASHER+1)
1384
        LD B,7
1385
DREZ1   LD HL,0
1386
SIGN1   LD DE,0
1387
        AND 128
1388
        CALL NZ,KURSOR
1389
        JR PRINTABLE
1390
EX_ED   POP HL
1391
        LD (YWIN),HL
1392
        RET 
1393
 
1394
PRINTABLE
1395
        LD A,(SYMPOS+1)
1396
        LD B,A
1397
        LD HL,(TXTADR+1)
1398
        ADDHLA
1399
        LD (HL),C
1400
        LD A,(TXTLEN+1)
1401
        DEC A
1402
        CP B
1403
        JP Z,TXTADR
1404
        LD A,B
1405
        INC A
1406
        LD (SYMPOS+1),A
1407
        JP TXTADR
1408
 
1409
CAPS    LD A,(23658)
1410
        XOR 8
1411
        LD (23658),A
1412
        JP W_KEY
1413
 
1414
KR_LFT  LD A,(SYMPOS+1)
1415
        AND A
1416
        JP Z,W_KEY
1417
        DEC A
1418
        LD (SYMPOS+1),A
1419
        JP TXTADR
1420
 
1421
KR_RGT  LD A,(SYMPOS+1)
1422
        LD C,A
1423
        LD A,(TXTLEN+1)
1424
        DEC A
1425
        CP C
1426
        JP Z,W_KEY
1427
        LD A,C
1428
        INC A
1429
        LD (SYMPOS+1),A
1430
        JP TXTADR
1431
 
1432
CH_LAN
1433
        LD A,(REGISTR+1)
1434
        XOR 1
1435
        LD (REGISTR+1),A
1436
        JP W_KEY
1437
 
1438
DELETE
1439
        LD A,(SYMPOS+1)
1440
        LD C,A
1441
        AND A
1442
        JP Z,W_KEY
1443
        DEC A
1444
        LD C,A
1445
        LD A,C
1446
        LD HL,(TXTADR+1)
1447
        ADDHLA
1448
        LD (HL),32
1449
        LD A,C
1450
        LD (SYMPOS+1),A
1451
        JP TXTADR
1452
 
1453
KURSOR  LD A,(HL)
1454
        XOR D
1455
        LD (HL),A
1456
        INC L
1457
        LD A,(HL)
1458
        XOR E
1459
        LD (HL),A
1460
        DEC L
1461
        INC H
1462
        DJNZ KURSOR
1463
        RET 
1464
 
1465
CORRECT LD A,C
1466
        CP 195
1467
        RET C
1468
        SUB 195
1469
        LD HL,CORR_TAB
1470
        JR TSUR
1471
 
1472
RUSSIAN LD HL,RUS_KBD
1473
        LD A,C
1474
        CP 255
1475
        RET Z
1476
        SUB 32
1477
TSUR    ADDHLA
1478
        LD A,(HL)
1479
        LD C,A
1480
        RET 
1481
 
1482
PRINTOLD
1483
		ld de,(YTXT)
1484
		jr PRINTXY1
1485
PRINT
1486
        LD DE,0x0100
1487
 
1488
PRINTXY LD (YTXT),DE
1489
PRINTXY1
1490
        PUSH BC
1491
		PUSH HL
1492
        LD BC,0xFC00
1493
        LD A,D
1494
        ADD A,A
1495
        ADD A,D
1496
        LD D,A          ;*3
1497
        XOR A
1498
        RR D
1499
        RRA 
1500
        RR D
1501
        RRA 
1502
        RLCA 
1503
        RLCA            ;*3/4
1504
        AND A           ;D-POSITION     A-SCROLL
1505
        JR Z,LFBORD
1506
        SUB 4
1507
        NEG 
1508
        LD L,A
1509
SMASK   AND A
1510
        RL B
1511
        RL C
1512
        RL B
1513
        RL C
1514
        DEC L
1515
        JR NZ,SMASK
1516
LFBORD
1517
        EX AF,AF' 
1518
        CALL ADDRZ
1519
        INC H
1520
        LD (PRADR+1),HL
1521
        EXX 
1522
        POP HL
1523
		POP BC
1524
 
1525
WRITE   ld a,(PRADR+2)
1526
		cp 0x58
1527
		jp nc,SCROLUP
1528
		LD A,(HL)
1529
        INC HL
1530
        AND A
1531
        RET Z
1532
        CP 32
1533
        JR C,WRITE2
1534
        CALL PRSYM
1535
        LD A,(XTXT)
1536
        INC A
1537
        LD (XTXT),A
1538
        LD A,C
1539
        AND A
1540
        JR Z,WRITE
1541
        DEC C
1542
        RET Z
1543
        JR WRITE
1544
 
1545
WRITE2
1546
        LD DE,(YTXT)
1547
		CP '\n'
1548
		jr z,WRITE_N
1549
        CP '\r'
1550
        JR NZ,POSIT
1551
        INC E
1552
WRITE_N
1553
		LD d,1
1554
        JR PRINTXY
1555
 
1556
POSIT   CP 22
1557
        JR NZ,WRITE
1558
        LD D,(HL)
1559
        INC HL
1560
        LD E,(HL)
1561
        INC HL
1562
        JR PRINTXY
1563
 
1564
 
1565
PRSYM   EXX                     ;A- SYMBOL CODE
1566
        LD E,A                  ;CHANGE
1567
        LD D,high(FONT6X8)+1
1568
 
1569
        EX AF,AF'
1570
PRADR   LD HL,0
1571
        AND A
1572
        JR NZ,NOLEF
1573
 
1574
        INC A
1575
        EX AF,AF' 
1576
P1      LD A,(HL)
1577
        OR B
1578
        XOR B
1579
        LD (HL),A
1580
        LD A,(DE)
1581
        AND B
1582
        OR (HL)
1583
        LD (HL),A
1584
        INC D
1585
        INC H
1586
        LD A,H
1587
        AND 7
1588
        JR NZ,P1
1589
        JR NEBCA
1590
 
1591
NOLEF   DEC A
1592
        JR NZ,NO2
1593
 
1594
        LD A,2
1595
        EX AF,AF' 
1596
P2      LD A,(HL)
1597
        OR C
1598
        XOR C
1599
        LD (HL),A
1600
        LD A,(DE)
1601
        RLCA 
1602
        RLCA 
1603
        AND C
1604
        OR (HL)
1605
        LD (HL),A
1606
        INC L
1607
        LD A,(HL)
1608
        OR B
1609
        XOR B
1610
        LD (HL),A
1611
        LD A,(DE)
1612
        RLCA 
1613
        RLCA 
1614
        AND B
1615
        OR (HL)
1616
        LD (HL),A
1617
        DEC L
1618
        INC D
1619
        INC H
1620
        LD A,H
1621
        AND 7
1622
        JR NZ,P2
1623
IADR    LD A,(PRADR+1)
1624
        INC A
1625
        LD (PRADR+1),A
1626
 
1627
NEBCA   RL B
1628
		RL C
1629
		RL B
1630
		RL C
1631
        EXX 
1632
        RET 
1633
 
1634
        JR NEBCA
1635
 
1636
NO2     DEC A
1637
        JR NZ,NO4
1638
        LD A,3
1639
        EX AF,AF' 
1640
P3      LD A,(HL)
1641
        OR C
1642
        XOR C
1643
        LD (HL),A
1644
        LD A,(DE) ;7
1645
        RRCA 
1646
        RRCA 
1647
        RRCA 
1648
        RRCA 
1649
        PUSH AF
1650
        AND C
1651
        OR (HL)
1652
        LD (HL),A
1653
        INC L
1654
        LD A,(HL)
1655
        OR B
1656
        XOR B
1657
        LD (HL),A
1658
        POP AF
1659
        AND B
1660
        OR (HL)
1661
        LD (HL),A
1662
        DEC L
1663
        INC D
1664
        INC H
1665
        LD A,H
1666
        AND 7
1667
        JR NZ,P3
1668
        JR IADR
1669
 
1670
NO4     XOR A
1671
        EX AF,AF' 
1672
P4      LD A,(HL)
1673
        OR C
1674
        XOR C
1675
        LD (HL),A
1676
        LD A,(DE)
1677
        RRCA 
1678
        RRCA 
1679
        AND C
1680
        OR (HL)
1681
        LD (HL),A
1682
        INC L
1683
        LD A,(HL)
1684
        OR B
1685
        XOR B
1686
        LD (HL),A
1687
        LD A,(DE)
1688
        RRCA 
1689
        RRCA 
1690
        AND B
1691
        OR (HL)
1692
        LD (HL),A
1693
        DEC L
1694
        INC D
1695
        INC H
1696
        LD A,H
1697
        AND 7
1698
        JR NZ,P4
1699
        LD BC,0xFC00>>2
1700
        JR IADR
1701
 
1702
MAKEWIND
1703
        MOV H,L,WIN_XPOS
1704
        MOV B,C,WIN_XPOS+2
1705
        LD (YWIN),HL
1706
		LD (YSIZ),BC
1707
        TEST FLG_REFRESH,WIN_OPT
1708
        JR Z,NO_PERE
1709
        PUSH HL
1710
		PUSH BC
1711
        CALL OPEN
1712
        POP BC
1713
		POP HL
1714
        TEST FLG_HEADER,WIN_OPT
1715
        JR Z,NO_HEAD
1716
        PUSH HL
1717
        CALL COOR_ATR
1718
        LD A,B
1719
SELCOLR LD (HL),HDRCOLOR
1720
        INC HL
1721
        DJNZ SELCOLR
1722
        LD B,A
1723
        POP HL
1724
        INC L
1725
        DEC C
1726
NO_HEAD CALL RAMKA
1727
NO_PERE MOV L,H,WIN_TXT
1728
        CALL TST_HL
1729
        RET Z
1730
        LD C,0
1731
        JP PRINT
1732
 
1733
TAB_JP  ADD A,A         ;HL<- TABLE ADDRESS
1734
        ADDHLA
1735
        LD A,(HL)
1736
        INC HL
1737
        LD H,(HL)
1738
		LD L,A
1739
        JP (HL)
1740
 
1741
TST_HL  LD A,L
1742
        AND H
1743
        INC A
1744
        JR NZ,NULHL
1745
        SCF 
1746
        RET 
1747
NULHL   LD A,L
1748
        OR H
1749
        RET 
1750
 
1751
OPEN    PUSH HL
1752
        LD D,H
1753
		LD E,L   ;открыть окно
1754
        LD A,(WINS)
1755
        AMUL8           ;HL- координаты H- X L- Y
1756
 
1757
        LD HL,REESTR    ;BC- размер
1758
        ADDHLA
1759
        STORHL D
1760
        STORHL E
1761
        STORHL B
1762
        STORHL C
1763
        LD DE,(FREE)
1764
        LD (HL),E  ;BEGIN
1765
        INC HL
1766
        LD (HL),D
1767
        POP HL
1768
        TEST FLG_NOBACK,WIN_OPT
1769
        JR NZ,CELES
1770
        PUSH BC
1771
		PUSH HL
1772
        CALL GETWIND
1773
        LD (FREE),DE
1774
        POP HL
1775
		POP BC
1776
CELES   CALL CLS_WIN
1777
        LD A,(WINS)
1778
        INC A
1779
MOWINS  LD (WINS),A
1780
        RET 
1781
 
1782
CLOSE   LD A,(WINS)
1783
        AND A
1784
        RET Z
1785
        DEC A
1786
        AMUL8
1787
 
1788
        LD HL,REESTR
1789
        ADDHLA
1790
 
1791
        MOVHL D
1792
        MOVHL E
1793
        MOVHL B
1794
        MOVHL C
1795
        MOVHL A
1796
        LD H,(HL)
1797
		LD L,A
1798
        EX DE,HL
1799
        LD (FREE),DE
1800
        CALL PUTWIND
1801
        LD A,(WINS)
1802
        DEC A
1803
        JR MOWINS
1804
 
1805
RAMKA
1806
        XOR A
1807
        LD D,A
1808
		LD E,A
1809
        DEC A
1810
        JR DRAW_R
1811
 
1812
RAMK    LD A,85
1813
        LD DE,(ZNM)
1814
DRAW_R
1815
        LD (MODE1+1),A
1816
		LD (MODE2+1),A
1817
        LD (DRSKIP),DE
1818
        LD D,B
1819
		LD E,C
1820
        PUSH HL
1821
        CALL COOR_Z
1822
        EX (SP),HL
1823
        ADD HL,DE
1824
        POP DE
1825
        CALL COOR_Z
1826
        DEC L
1827
        CALL U_HL
1828
 
1829
HORIZ   LD A,(DE)
1830
MODE1   XOR -1
1831
        LD (DE),A
1832
		LD A,(HL)
1833
MODE2   XOR -1
1834
        LD (HL),A
1835
        INC E
1836
        DEC L
1837
        DJNZ HORIZ
1838
        INC L
1839
        DEC E
1840
        LD B,C
1841
VECYC
1842
        LD A,(DE)
1843
MODE3   XOR 1
1844
        LD (DE),A
1845
		LD A,(HL)
1846
MODE4   XOR 128
1847
        LD (HL),A
1848
ZNM     DEC H
1849
        INC D
1850
DRSKIP  NOP 
1851
        NOP 
1852
        LD A,D
1853
        AND 7
1854
        JR NZ,VECYC
1855
 
1856
RENO    INC H
1857
        DEC D
1858
        CALL U_HL
1859
		CALL D_DE
1860
        DJNZ VECYC
1861
        RET 
1862
 
1863
CLS_WIN
1864
        CALL COOR_Z
1865
        PUSH HL
1866
        LD D,B
1867
		LD E,C
1868
 
1869
ALM     LD A,L
1870
		LD B,D
1871
RJD     LD (HL),0
1872
        INC L
1873
        DJNZ RJD
1874
        LD L,A
1875
        INC H
1876
        LD A,H
1877
        AND 7
1878
        JR NZ,ALM
1879
        CALL D_HL+5
1880
        DEC E
1881
        JR NZ,ALM
1882
        POP HL
1883
 
1884
        CALL ATR_CONVERT
1885
 
1886
AL3     LD B,D
1887
COLOR   LD (HL),WINCOLOR
1888
        INC HL
1889
        DJNZ COLOR
1890
 
1891
        LD A,32
1892
        SUB D
1893
        ADDHLA
1894
        DEC C
1895
        JR NZ,AL3
1896
        RET 
1897
 
1898
 
1899
GETWIND XOR A
1900
        JR GEPU
1901
 
1902
PUTWIND LD A,0xEB
1903
GEPU    LD (MOD1),A
1904
		LD (MOD2),A
1905
		LD (MOD3),A
1906
		LD (MOD4),A
1907
GET_PUT
1908
        LD A,C
1909
		LD C,B
1910
		LD B,A
1911
        CALL COOR_Z
1912
        PUSH HL
1913
		PUSH BC
1914
 
1915
ALLL    LD A,L          ;HL-SCREEN
1916
        PUSH BC         ;C-WIDTH
1917
        LD B,0
1918
MOD1    NOP 
1919
        LDIR 
1920
MOD2    NOP 
1921
        DEC HL
1922
        POP BC
1923
        LD L,A
1924
        INC H
1925
        LD A,H
1926
        AND 7
1927
        JR NZ,ALLL
1928
        CALL D_HL+5
1929
        DJNZ ALLL
1930
        POP BC
1931
		POP HL
1932
        CALL ATR_CONVERT
1933
ALLA
1934
        PUSH BC
1935
        LD B,0
1936
MOD3    NOP 
1937
        LDIR 
1938
MOD4    NOP 
1939
        POP BC
1940
        LD A,32
1941
        SUB C
1942
        ADDHLA
1943
        DJNZ ALLA
1944
        RET 
1945
 
1946
PUT_SPRT
1947
        EXX 
1948
        BIT 2,C
1949
        EXX 
1950
        JR NZ,ABS_COORD
1951
        PUSH DE
1952
        EX DE,HL
1953
        CALL ADDRZ
1954
        POP DE          ;HL-SCR DE-DATA
1955
        JR PUSPR
1956
ABS_COORD
1957
        CALL COOR_Z
1958
PUSPR
1959
        PUSH HL
1960
        EXX 
1961
        BIT 0,C
1962
        EXX 
1963
        JR Z,ATTRZ
1964
 
1965
        EX DE,HL
1966
        PUSH BC
1967
PSP1    LD A,E
1968
        PUSH BC
1969
        LD B,0
1970
        LDIR 
1971
        DEC DE
1972
        POP BC
1973
        LD E,A
1974
        INC D
1975
        LD A,D
1976
        AND 7
1977
        JR NZ,PSP1
1978
        CALL D_DE+5
1979
        DJNZ PSP1
1980
        POP BC
1981
        EX DE,HL
1982
ATTRZ   POP HL
1983
        EXX 
1984
        BIT 1,C
1985
        EXX 
1986
        RET Z
1987
 
1988
        CALL ATR_CONVERT
1989
        EX DE,HL
1990
PATRA   PUSH BC
1991
        LD B,0
1992
        LDIR 
1993
        POP BC
1994
        LD A,32
1995
        SUB C
1996
        ADDDEA
1997
        DJNZ PATRA
1998
        RET 
1999
 
2000
PUSHER
2001
        PUSH HL
2002
        LD A,L
2003
        ADD A,C
2004
        DEC A
2005
        LD L,A
2006
        CALL COOR_Z
2007
        LD A,H
2008
        OR 7
2009
        LD H,A
2010
        EX (SP),HL      ;LEFT BOTTOM
2011
        LD A,H
2012
        ADD A,B
2013
        DEC A
2014
        LD H,A
2015
        CALL COOR_Z     ;RIGHT TOP
2016
        EX (SP),HL
2017
        LD A,C
2018
        AMUL8
2019
        DEC A
2020
        LD C,A
2021
        PUSH BC
2022
PROW2   LD D,H
2023
		LD E,L
2024
        CALL U_HL
2025
        PUSH HL
2026
		PUSH BC
2027
        AND A
2028
PROW1   LD A,(HL)
2029
        RRA 
2030
        LD (DE),A
2031
        INC L
2032
		INC E
2033
        DJNZ PROW1
2034
        POP BC
2035
		POP HL
2036
        DEC C
2037
        JR NZ,PROW2
2038
        LD A,B
2039
CLRRW1  LD (HL),C
2040
        INC L
2041
        DJNZ CLRRW1
2042
        LD B,A
2043
 
2044
PUSADR  CALL WAITKEY
2045
        POP BC
2046
		POP HL
2047
 
2048
PROW4   LD D,H
2049
		LD E,L
2050
        CALL D_HL
2051
        PUSH HL
2052
		PUSH BC
2053
        AND A
2054
PROW3   LD A,(HL)
2055
        RLA 
2056
        LD (DE),A
2057
        DEC L
2058
		DEC E
2059
        DJNZ PROW3
2060
        POP BC
2061
		POP HL
2062
        DEC C
2063
        JR NZ,PROW4
2064
CLRRW2  LD (HL),C
2065
        DEC L
2066
        DJNZ CLRRW2
2067
        RET 
2068
 
2069
PR_ONE  EX AF,AF' 
2070
        CALL ADDRZ
2071
        EX AF,AF' 
2072
        EX DE,HL
2073
        LD L,A
2074
        LD H,high(FONT6X8)
2075
PRON    LD A,(HL)
2076
		LD (DE),A
2077
        INC H
2078
		INC D
2079
        LD A,D
2080
        INC A
2081
        AND 7
2082
        JR NZ,PRON
2083
        RET 
2084
 
2085
        #ifndef NOCOMBO
2086
COMBOBOX
2087
        LD (LISTD),A
2088
        LD (LISTA),DE
2089
        LD (CBWIN),HL
2090
        LD (CBWIN+2),BC
2091
        LD (CBACT+2),BC
2092
        LD A,B
2093
        EXX 
2094
        LD (LISTH),A
2095
        LD A,D
2096
        LD (LISTC),A
2097
        LD A,E
2098
        LD (LISTL),A
2099
        EXX 
2100
        LD HL,(YWIN)
2101
        PUSH HL
2102
		PUSH IX
2103
        LD IX,CBWIN
2104
        CALL WINDOW
2105
        INC A
2106
        LD A,C
2107
        PUSH AF
2108
        CALL CLOSE
2109
        POP AF
2110
		POP IX
2111
		POP HL
2112
        LD (YWIN),HL
2113
        RET NZ
2114
        LD A,-1
2115
        RET 
2116
 
2117
CBWIN   DEFB 0,0,0,0,10
2118
        DEFB 0
2119
        DEFW 0
2120
        DEFW CBACT
2121
        DEFW 0,0,0,0,0
2122
        #ifndef NOSLB
2123
        DEFW 0
2124
        #endif 
2125
        DEFW CBLIST
2126
        DEFW -1
2127
 
2128
CBACT   DEFB 0,0,0,0,1,-1
2129
 
2130
CBLIST  DEFB 0
2131
LISTH   DEFB 0
2132
LISTC   DEFB 0
2133
        DEFW 0
2134
LISTD   DEFB 0
2135
LISTA   DEFW 0
2136
LISTL   DEFB 0
2137
        DEFB -1
2138
        #endif   ;COMBOBOX
2139
 
2140
        #include "EXTERN.S01"
2141
 
2142