Subversion Repositories pentevo

Rev

Rev 838 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 838 Rev 1186
Line 1... Line 1...
1
 
1
 
2
;LAST UPDATE: 20.08.2019 savelij
2
; LAST UPDATE: 14.02.2025 savelij
3
 
3
 
4
;ОПИСАТЕЛЬ ОКНА (АДРЕС В IX)
4
; описатель окна (адрес в IX)
5
;+00 X КООРДИНАТА
5
; +00 X координата
6
;+01 Y КООРДИНАТА
6
; +01 Y координата
7
;+02 V ВЫСОТА
7
; +02 V высота
8
;+03 H ШИРИНА
8
; +03 H ширина
9
;+04 C ЦВЕТ
9
; +04 C цвет
10
;+05 C ЦВЕТ КУРСОРА
10
; +05 C цвет курсора
11
;+06 F ФЛАГОВЫЙ
11
; +06 F флаговый
12
;+07 N НОМЕР ПУНКТА В ОКНЕ
12
; +07 N номер пункта в окне
13
;  БИТ 7-0 => 8-9 ТЕКУЩИЙ ПУНКТ,
13
;   BIT 7-0 => 8-9 текущий пункт,
14
;        1 => 8-9 АДРЕС ХРАНЕНИЯ
14
;         1 => 8-9 адрес хранения
15
;      6-0 => A-B КОЛИЧЕСТВО ПУНКТОВ
15
;       6-0 => A-B количество пунктов
16
;        1 => A-B АДРЕС ХРАНЕНИЯ
16
;         1 => A-B адрес хранения
17
;+08 | ТЕКУЩИЙ
17
; +08 | текущий
18
;+09 | ПУНКТ МЕНЮ
18
; +09 | пункт меню
19
;+0A : КОЛИЧЕСТВО
19
; +0A : количество
20
;+0B : ПУНКТОВ
20
; +0B : пунктов
21
;+0C | АДРЕС
21
; +0C | адрес
22
;+0D | ТЕКСТА
22
; +0D | текста
23
;+0E : СПИСОК АДРЕСОВ
23
; +0E : список адресов
24
;+0F : ПОДПРОГРАММ
24
; +0F : подпрограмм
25
;+10 | АДРЕС СПИСКА АКТИВНЫХ
25
; +10 | адрес списка активных
26
;+11 | ЗОН ДЛЯ МЫШИ
26
; +11 | зон для мыши
27
;+12 : АДРЕС СПИСКА
27
; +12 : адрес списка
28
;+13 : ГОРЯЧИХ КЛАВИШ
28
; +13 : горячих клавиш
29
 
29
 
30
;ФОРМАТ ФЛАГОВОГО БАЙТА ОКНА
30
; формат флагового байта окна
31
;IX+6
31
; IX+6
32
;7-0-НЕТ, 1-ЕСТЬ НИЖНИЙ ЗАГОЛОВОК
32
; 7-0-нет, 1-есть нижний заголовок
33
;6-0-С РАМКОЙ,1-БЕЗ РАМКИ
33
; 6-0-с рамкой,1-без рамки
34
;5-0-НЕТ, 1-ЕСТЬ ВЕРХНИЙ ЗАГОЛОВОК
34
; 5-0-нет, 1-есть верхний заголовок
35
;4-0-ЕСТЬ ТЕКСТ, 1-НЕТ
35
; 4-0-есть текст, 1-нет
36
;3
36
; 3
37
;2-
37
; 2-
38
;1-
38
; 1-
39
;0-
39
; 0-
40
 
40
 
41
;РАСКЛАДКА БАЙТ ВЫДЕЛЕНИЙ. НА ДАННЫЙ МОМЕНТ НЕ ВСЕ ПЕРЕНЕСЕНО ИЗ СТАРОЙ РЕАЛИЗАЦИИ
41
; раскладка байт выделений. на данный момент не все перенесено из старой реализации
42
;+0 ФЛАГОВЫЙ
42
; +0 флаговый
43
;    7 ПРИ АКТИВНОСТИ УСТАНОВЛЕН
43
;     7 при активности установлен
44
;    6 УСТАНОВЛЕН, НЕ ВЫДЕЛЯЕТСЯ
44
;     6 установлен, не выделяется
45
;    5 УСТАНОВЛЕН, ВЫЗОВ ВЕКТОРА
45
;     5 установлен, вызов вектора
46
;    4
46
;     4
47
;    3 \
47
;     3 \
48
;    2  } ФОРМА КУРСОРА
48
;     2  } форма курсора
49
;    1  } ПРИ ПОПАДАНИИ
49
;     1  } при попадании
50
;    0 /
50
;     0 /
51
;+1 X КООРДИНАТА
51
; +1 x координата
52
;+2 Y КООРДИНАТА
52
; +2 y координата
53
;+3 V ВЫСОТА
53
; +3 v высота
54
;+4 H ШИРИНА
54
; +4 h ширина
55
;+5 K КОД КЛАВИШИ
55
; +5 k код клавиши
56
 
56
 
-
 
57
EXT_WINDOW      LD A,(SYSFLAGS)
-
 
58
                BIT SYSFLAGS.B_FB_INT_EXT,A
-
 
59
                JR NZ,EXT_ZX_WINDOW
57
;ВНУТРЕННИЙ ВЫЗОВ РИСОВАНИЯ ОКНА НА ZX ЭКРАНЕ
60
; внутренний вызов рисования окна на ZX экране
58
IWINW           LD A,NUM_ZXSCR
61
INT_ZX_WINDOW   LD A,NUM_ZXSCR
59
                JR IWINW0
62
                JR INT_TXT_WINDOW.L1
60
 
63
 
61
;ВНУТРЕННИЙ ВЫЗОВ ДЛЯ РИСОВАНИЯ ОКНА НА ТЕКСТОВОМ ЭКРАНЕ
64
; внутренний вызов для рисования окна на текстовом экране
62
ITWINW          LD A,NUM_TXTSCR
65
INT_TXT_WINDOW  LD A,NUM_TXTSCR
63
;ВНЕШНИЙ ВЫЗОВ ДЛЯ РИСОВАНИЯ ОКНА НА ТЕКСТОВОМ ЭКРАНЕ
66
; внешний вызов для рисования окна на текстовом экране
64
IWINW0          EX AF,AF'
67
.L1             EX AF,AF'
65
                XOR A
68
                XOR A
66
                LD (PAGE4READ),A
69
                LD (PAGE4READ),A
67
                EX AF,AF'
70
                EX AF,AF'
68
                LD HL,FLAGS
71
                LD HL,SYSFLAGS
69
                SET B_WIN_INT_EXT,(HL)
72
                SET SYSFLAGS.B_WIN_INT_EXT,(HL)
70
                JR WINW0
73
                JR EXT_ZX_WINDOW.L1
71
 
74
 
72
;ВНЕШНИЙ ВЫЗОВ ДЛЯ РИСОВАНИЯ ОКНА НА ZX ЭКРАНЕ
75
; внешний вызов для рисования окна на ZX экране
73
WINW            LD HL,FLAGS
76
EXT_ZX_WINDOW   LD HL,SYSFLAGS
74
                RES B_WIN_INT_EXT,(HL)
77
                RES SYSFLAGS.B_WIN_INT_EXT,(HL)
75
                LD IX,(RREG_IXL)
78
                LD IX,(RREG_IXL)
76
                LD A,(R_77)
79
                LD A,(R_77)
77
                AND 7
80
                AND 7
78
WINW0           CP NUM_ZXSCR
81
.L1             CP NUM_ZXSCR
79
                JP Z,WINW_ZX
82
                JP Z,WINW_ZX
80
                CP NUM_TXTSCR
83
                CP NUM_TXTSCR
81
                RET NZ
84
                RET NZ
82
                EXX
85
                EXX
83
                LD BC,WIN_P6
86
                LD BC,WIN_P2
84
                LD A,(PAGE4READ)
87
                LD A,(PAGE4READ)
85
                OUT (C),A
88
                OUT (C),A
86
                EXX
89
                EXX
87
                LD D,(IX+0)                     ;X
90
                LD D,(IX+_X_COORD)              ; X
88
                LD E,(IX+1)                     ;Y
91
                LD E,(IX+_Y_COORD)              ; Y
89
                LD C,(IX+4)                     ;ЦВЕТ ОКНА
92
                LD C,(IX+_COLOR_WIN)            ; цвет окна
90
                EXX
93
                EXX
91
                LD H,(IX+2)                     ;V
94
                LD H,(IX+_V_SIZE)               ; V
92
                LD L,(IX+3)                     ;H
95
                LD L,(IX+_H_SIZE)               ; H
93
                LD D,(IX+6)                     ;FLAGS
96
                LD D,(IX+_FLAGS)                ; FLAGS
94
                XOR A
-
 
95
                OUT (C),A
97
        EVOPORT WIN_P2,RAM_NMI
96
                LD B,HIGH (WIN_P3)
98
                LD B,HIGH (WIN_P3)
97
                LD A,0XF7
99
                LD A,VMODE7_0
98
                OUT (C),A
100
                OUT (C),A
99
                EXX
101
                EXX
100
                PUSH DE
102
                PUSH DE
101
                LD B," "
103
                LD B," "
102
                EXX
104
                EXX
Line 114... Line 116...
114
                INC E
116
                INC E
115
                EXX
117
                EXX
116
                DEC H
118
                DEC H
117
                JR NZ,WINT2
119
                JR NZ,WINT2
118
                POP HL
120
                POP HL
119
                BIT 7,D
121
                BIT B_DOWN_HEADER,D
120
                EXX
122
                EXX
121
                POP DE
123
                POP DE
122
                JR Z,TNIZ_RAMKA         ;ОКНО БЕЗ НИЖНЕГО ЗАГОЛОВКА
124
                JR Z,TNIZ_RAMKA         ; окно без нижнего заголовка
123
;РИСУЕМ НИЖНЮЮ ЦВЕТНУЮ ПОЛОСКУ
125
; рисуем нижнюю цветную полоску
124
                PUSH DE
126
                PUSH DE
125
                EXX
127
                EXX
126
                LD A,H
128
                LD A,H
127
                EXX
129
                EXX
128
                DEC A
130
                DEC A
Line 130... Line 132...
130
                LD E,A
132
                LD E,A
131
                CALL COLOR_LINE
133
                CALL COLOR_LINE
132
                POP DE
134
                POP DE
133
                JR TCENTR_RAMK
135
                JR TCENTR_RAMK
134
 
136
 
135
;РИСУЕМ НИЖНЮЮ РАМКУ
137
; рисуем нижнюю рамку
136
TNIZ_RAMKA      EXX
138
TNIZ_RAMKA      EXX
137
                BIT 6,D
139
                BIT B_WINFRAME,D
138
                EXX
140
                EXX
139
                JR NZ,TCENTR_RAMK
141
                JR NZ,TCENTR_RAMK
140
                EXX
142
                EXX
141
                LD A,H
143
                LD A,H
142
                EXX
144
                EXX
143
                PUSH DE
145
                PUSH DE
144
                DEC A
146
                DEC A
145
                ADD A,E
147
                ADD A,E
146
                LD E,A
148
                LD E,A
147
;               LD B,"└"
149
;               LD B,"└"
148
                LD B,5+0XF2                     ;ЛЕВЫЙ НИЖНИЙ УГОЛ
150
                LD B,5+0xF2                     ; левый нижний угол
149
                CALL PRTSYMTXTMODE
151
                CALL PRTSYMTXTMODE
150
;               LD B,"─"
152
;               LD B,"─"
151
                LD B,6+0XF2                     ;НИЖНИЙ КРАЙ
153
                LD B,6+0xF2                     ; нижний край
152
                INC D
154
                INC D
153
                EXX
155
                EXX
154
                LD A,L
156
                LD A,L
155
                EXX
157
                EXX
156
                DEC A
158
                DEC A
Line 160... Line 162...
160
                INC D
162
                INC D
161
                EX AF,AF'
163
                EX AF,AF'
162
                DEC A
164
                DEC A
163
                JR NZ,WINT04
165
                JR NZ,WINT04
164
;               LD B,"┘"
166
;               LD B,"┘"
165
                LD B,7+0XF2                     ;ПРАВЫЙ НИЖНИЙ УГОЛ
167
                LD B,7+0xF2                     ; правый нижний угол
166
                CALL PRTSYMTXTMODE
168
                CALL PRTSYMTXTMODE
167
                POP DE
169
                POP DE
168
TCENTR_RAMK     EXX
170
TCENTR_RAMK     EXX
169
                BIT 6,D
171
                BIT B_WINFRAME,D
170
                EXX
172
                EXX
171
                JR NZ,TWERH_COLOR               ;ОКНО БЕЗ РАМКИ
173
                JR NZ,TWERH_COLOR               ; окно без рамки
172
;РИСУЕМ БОКОВЫЕ РАМКИ
174
; рисуем боковые рамки
173
                EXX
175
                EXX
174
                LD A,H
176
                LD A,H
175
                EXX
177
                EXX
176
                DEC A
178
                DEC A
177
                DEC A
179
                DEC A
178
;               LD B,"│"
180
;               LD B,"│"
179
                LD B,3+0XF2                     ;ЛЕВАЯ СТОРОНА
181
                LD B,3+0xF2                     ; левая сторона
180
                INC E
182
                INC E
181
                PUSH DE
183
                PUSH DE
182
WINT01          EX AF,AF'
184
WINT01          EX AF,AF'
183
                CALL PRTSYMTXTMODE
185
                CALL PRTSYMTXTMODE
184
                INC E
186
                INC E
Line 196... Line 198...
196
                EXX
198
                EXX
197
                LD A,H
199
                LD A,H
198
                EXX
200
                EXX
199
                DEC A
201
                DEC A
200
                DEC A
202
                DEC A
201
                LD B,4+0XF2                     ;ПРАВАЯ СТОРОНА ОКНА
203
                LD B,4+0xF2                     ; правая сторона окна
202
WINT02          EX AF,AF'
204
WINT02          EX AF,AF'
203
                CALL PRTSYMTXTMODE
205
                CALL PRTSYMTXTMODE
204
                INC E
206
                INC E
205
                EX AF,AF'
207
                EX AF,AF'
206
                DEC A
208
                DEC A
207
                JR NZ,WINT02
209
                JR NZ,WINT02
208
                POP DE
210
                POP DE
209
                DEC E
211
                DEC E
210
TWERH_COLOR     EXX
212
TWERH_COLOR     EXX
211
                BIT 5,D
213
                BIT B_UPHEADER,D
212
                EXX
214
                EXX
213
                JR Z,TWERH_RAMK
215
                JR Z,TWERH_RAMK
214
;РИСУЕМ ВЕРХНЮЮ ЦВЕТНУЮ ПОЛОСУ
216
; рисуем верхнюю цветную полосу
215
                PUSH DE
217
                PUSH DE
216
                CALL COLOR_LINE
218
                CALL COLOR_LINE
217
                POP DE
219
                POP DE
218
                JR TRASCH
220
                JR TRASCH
219
 
221
 
220
TWERH_RAMK      EXX
222
TWERH_RAMK      EXX
221
                BIT 6,D
223
                BIT B_WINFRAME,D
222
                EXX
224
                EXX
223
                JR NZ,TRASCH
225
                JR NZ,TRASCH
224
;               LD B,"┌"
226
;               LD B,"┌"
225
                LD B,0+0XF2                     ;ЛЕВЫЙ ВЕРХНИЙ УГОЛ
227
                LD B,0+0xF2                     ; левый верхний угол
226
                CALL PRTSYMTXTMODE
228
                CALL PRTSYMTXTMODE
227
;               LD B,"─"
229
;               LD B,"─"
228
                LD B,1+0XF2                     ;ВЕРХНИЙ КРАЙ
230
                LD B,1+0xF2                     ; верхний край
229
                EXX
231
                EXX
230
                LD A,L
232
                LD A,L
231
                EXX
233
                EXX
232
                DEC A
234
                DEC A
233
                DEC A
235
                DEC A
Line 238... Line 240...
238
                INC D
240
                INC D
239
                EX AF,AF'
241
                EX AF,AF'
240
                DEC A
242
                DEC A
241
                JR NZ,WINT3
243
                JR NZ,WINT3
242
;               LD B,"┐"
244
;               LD B,"┐"
243
                LD B,2+0XF2                     ;ПРАВЫЙ ВЕРХНИЙ УГОЛ
245
                LD B,2+0xF2                     ; правый верхний угол
244
                CALL PRTSYMTXTMODE
246
                CALL PRTSYMTXTMODE
245
                POP DE
247
                POP DE
246
TRASCH          INC D
248
TRASCH          INC D
247
                LD (TADRSTR_Y),DE
249
                LD (TADRSTR_Y),DE
248
                LD A,D
250
                LD A,D
249
                LD (TXNEW),A
251
                LD (TXNEW),A
250
                LD A,(FLAGS)
252
                LD A,(SYSFLAGS)
251
                AND M_RUN_FAT_DSK
253
                AND SYSFLAGS.M_RUN_FAT_DSK
252
                JR NZ,TNOSET_MAIN
254
                JR NZ,TNOSET_MAIN
253
                ROMCALL MAIN_MEM13,ROM_RST83
255
        ROMCALL MAIN_MEM13,ROM_RST83
254
TNOSET_MAIN     LD BC,WIN_P6
256
TNOSET_MAIN     LD BC,WIN_P2
255
                LD A,(PAGE4READ)
257
                LD A,(PAGE4READ)
256
                OUT (C),A
258
                OUT (C),A
257
                LD L,(IX+0X0C)
259
                LD L,(IX+_ADR_TXT_L)
258
                LD H,(IX+0X0D)
260
                LD H,(IX+_ADR_TXT_H)
259
                XOR A
-
 
260
                OUT (C),A
261
        EVOPORT WIN_P2,RAM_NMI
261
                EXX
262
                EXX
262
                BIT 4,D
263
                BIT B_TEXT,D
263
                EXX
264
                EXX
264
                RET NZ
265
                RET NZ
265
ITPRINT_MESSAGE EXX
266
ITPRINT_MESSAGE EXX
266
                LD HL,0
267
                LD HL,0
267
                LD (TEK_TEXT),HL
268
                LD (TEK_TEXT),HL
268
                LD BC,WIN_P6
269
        EVOPORT WIN_P2,RAM_NMI
269
                XOR A
-
 
270
                OUT (C),A
-
 
271
                LD A,(PAGE4READ)
270
                LD A,(PAGE4READ)
272
                LD H,A
271
                LD H,A
273
                OUT (C),H
272
                OUT (C),H
274
                LD L,0
273
                LD L,0
275
                EXX
274
                EXX
Line 278... Line 277...
278
                EXX
277
                EXX
279
                LD A,(HL)
278
                LD A,(HL)
280
                INC HL
279
                INC HL
281
                AND A
280
                AND A
282
                JP Z,STOP_TPRINTMSG
281
                JP Z,STOP_TPRINTMSG
283
TPRINT          CP 0X20
282
TPRINT          CP 0x20
284
                JP NC,TPRINTA
283
                JP NC,TPRINTA
285
                CP 3
284
                CP 3
286
                JR Z,TNEXT
285
                JR Z,TNEXT
287
                CP 9
286
                CP 9
288
                JR NZ,TCOD0D
287
                JR NZ,TCOD0D
Line 294... Line 293...
294
                LD A,(TADRSTR_X)
293
                LD A,(TADRSTR_X)
295
                ADD A,B
294
                ADD A,B
296
                LD (TADRSTR_X),A
295
                LD (TADRSTR_X),A
297
                JP TNEXT
296
                JP TNEXT
298
 
297
 
299
TCOD0D          CP 0X0D
298
TCOD0D          CP 0x0D
300
                JR NZ,TCOD16
299
                JR NZ,TCOD16
301
                EXX
300
                EXX
302
                OUT (C),L
301
                OUT (C),L
303
                EXX
302
                EXX
304
                LD A,(TXNEW)
303
                LD A,(TXNEW)
Line 308... Line 307...
308
                INC A
307
                INC A
309
                LD (TADRSTR_Y),A
308
                LD (TADRSTR_Y),A
310
                LD E,A
309
                LD E,A
311
                JP TNEXT
310
                JP TNEXT
312
 
311
 
313
TCOD16          CP 0X16
312
TCOD16          CP 0x16
314
                JR NZ,TCOD17
313
                JR NZ,TCOD17
315
                LD E,(HL)
314
                LD E,(HL)
316
                INC HL
315
                INC HL
317
                LD D,(HL)
316
                LD D,(HL)
318
                INC HL
317
                INC HL
Line 320... Line 319...
320
                OUT (C),L
319
                OUT (C),L
321
                EXX
320
                EXX
322
                LD (TADRSTR_Y),DE
321
                LD (TADRSTR_Y),DE
323
                JP TNEXT
322
                JP TNEXT
324
 
323
 
325
TCOD17          CP 0X17
324
TCOD17          CP 0x17
326
                JR NZ,TCOD1
325
                JR NZ,TCOD1
327
                LD C,(HL)
326
                LD C,(HL)
328
                INC HL
327
                INC HL
329
                LD A,C
328
                LD A,C
330
                EXX
329
                EXX
Line 333... Line 332...
333
                LD (COLOR4SYM),A
332
                LD (COLOR4SYM),A
334
                JP TNEXT
333
                JP TNEXT
335
 
334
 
336
TCOD1           CP 1
335
TCOD1           CP 1
337
                JR NZ,TCOD2
336
                JR NZ,TCOD2
338
                LD D,(IX+0)
337
                LD D,(IX+_X_COORD)
339
                LD E,(IX+1)
338
                LD E,(IX+_Y_COORD)
340
                INC D
339
                INC D
341
                EXX
340
                EXX
342
                OUT (C),L
341
                OUT (C),L
343
                EXX
342
                EXX
344
                LD (TADRSTR_Y),DE
343
                LD (TADRSTR_Y),DE
Line 364... Line 363...
364
                JP TNEXT
363
                JP TNEXT
365
 
364
 
366
TPRINT_A        LD A,(RREG_A)
365
TPRINT_A        LD A,(RREG_A)
367
ITPRINT_A       EX AF,AF'
366
ITPRINT_A       EX AF,AF'
368
ITPRINT_A1      EXX
367
ITPRINT_A1      EXX
369
                LD BC,WIN_P6
368
                LD BC,WIN_P2
370
                LD A,(PAGE4READ)
369
                LD A,(PAGE4READ)
371
                LD H,A
370
                LD H,A
372
                LD L,0
371
                LD L,0
373
                EX AF,AF'
372
                EX AF,AF'
374
                EXX
373
                EXX
Line 384... Line 383...
384
                LD D,(HL)
383
                LD D,(HL)
385
                INC (HL)
384
                INC (HL)
386
                LD A,(COLOR4SYM)
385
                LD A,(COLOR4SYM)
387
                LD C,A
386
                LD C,A
388
                EXX
387
                EXX
389
                LD A,0XF7
388
                LD A,VMODE7_0
390
                OUT (C),A
389
                OUT (C),A
391
                EXX
390
                EXX
392
                LD H,E
391
                LD H,E
393
                LD L,0
392
                LD L,0
394
                LD E,D
393
                LD E,D
Line 399... Line 398...
399
                SRL H
398
                SRL H
400
                RR L
399
                RR L
401
                SRL E
400
                SRL E
402
                ADD HL,DE
401
                ADD HL,DE
403
                AND 1
402
                AND 1
404
                REPT 4
-
 
405
                RRCA
403
                RRCA
-
 
404
                RRCA
-
 
405
                RRCA
406
                ENDM
406
                RRCA
407
                ADD A,HIGH (CPU6+LSYM)
407
                ADD A,HIGH (CPU2+LSYM)
408
                LD D,A
408
                LD D,A
409
                LD E,LOW (CPU6+LSYM)
409
                LD E,LOW (CPU2+LSYM)
410
                ADD HL,DE
410
                ADD HL,DE
411
                EX AF,AF'
411
                EX AF,AF'
412
                LD (HL),A
412
                LD (HL),A
413
                LD A,C
413
                LD A,C
414
                INC A
414
                INC A
415
                JP Z,TRINTA0
415
                JP Z,TRINTA0
416
                LD A,H
416
                LD A,H
417
                XOR 0X30
417
                XOR 0x30
418
                LD H,A
418
                LD H,A
419
                LD A,D
419
                LD A,D
420
                AND 0X10
420
                AND 0x10
421
                REPT 4
421
                RRCA
-
 
422
                RRCA
-
 
423
                RRCA
422
                RRCA
424
                RRCA
423
                ENDM
-
 
424
                ADD A,L
425
                ADD A,L
425
                LD L,A
426
                LD L,A
426
                LD (HL),C
427
                LD (HL),C
427
TRINTA0         EXX
428
TRINTA0         EXX
428
                OUT (C),L
429
                OUT (C),L
Line 433... Line 434...
433
STOP_TPRINTMSG  EXX
434
STOP_TPRINTMSG  EXX
434
                OUT (C),L
435
                OUT (C),L
435
                EXX
436
                EXX
436
                RET
437
                RET
437
 
438
 
438
;D-X E-Y B-SYMBOL C-COLOR
439
; D-X E-Y B-символ C-цвет
439
COLOR_LINE      LD A,C
440
COLOR_LINE      LD A,C
440
                PUSH AF
441
                PUSH AF
441
                AND 7
442
                AND 7
442
                RLCA
443
                RLCA
443
                RLCA
444
                RLCA
Line 449... Line 450...
449
                RRCA
450
                RRCA
450
                AND 7
451
                AND 7
451
                OR H
452
                OR H
452
                LD H,A
453
                LD H,A
453
                LD A,C
454
                LD A,C
454
                AND 0XC0
455
                AND 0xC0
455
                OR H
456
                OR H
456
                LD C,A
457
                LD C,A
457
                LD B," "
458
                LD B," "
458
                EXX
459
                EXX
459
                LD A,L
460
                LD A,L
Line 479... Line 480...
479
                SRL H
480
                SRL H
480
                RR L
481
                RR L
481
                SRL E
482
                SRL E
482
                ADD HL,DE
483
                ADD HL,DE
483
                AND 1
484
                AND 1
484
                REPT 4
-
 
485
                RRCA
485
                RRCA
-
 
486
                RRCA
-
 
487
                RRCA
486
                ENDM
488
                RRCA
487
                ADD A,HIGH (CPU3+LSYM)
489
                ADD A,HIGH (CPU3+LSYM)
488
                LD D,A
490
                LD D,A
489
                LD E,LOW (CPU3+LSYM)
491
                LD E,LOW (CPU3+LSYM)
490
                ADD HL,DE                       ;HL=АДРЕС СИМВОЛА НА ТЕКСТМОДНОМ ЭКРАНЕ
492
                ADD HL,DE                       ; HL=Адрес символа на текстмодном экране
491
                LD E,H
493
                LD E,H
492
                LD A,H
494
                LD A,H
493
                XOR 0X30
495
                XOR 0x30
494
                LD D,A
496
                LD D,A
495
                LD A,E
497
                LD A,E
496
                AND 0X10
498
                AND 0x10
497
                REPT 4
499
                RRCA
-
 
500
                RRCA
-
 
501
                RRCA
498
                RRCA
502
                RRCA
499
                ENDM
-
 
500
                ADD A,L
503
                ADD A,L
501
                LD E,A
504
                LD E,A
502
                RET
505
                RET
503
 
506
 
504
;ПЕЧАТЬ СИМВОЛА НА ТЕКСТМОДНОМ ЭКРАНЕ
507
; печать символа на текстмодном экране
505
;D-X E-Y B-SYMBOL C-COLOR
508
; D-X E-Y B-символ C-цвет
506
PRTSYMTXTMODE   PUSH DE
509
PRTSYMTXTMODE   PUSH DE
507
                PUSH HL
510
                PUSH HL
508
                CALL TDISP_ATTR
511
                CALL TDISP_ATTR
509
                LD (HL),B
512
                LD (HL),B
510
                LD A,C
513
                LD A,C
511
                INC A
514
                INC A
512
                JR Z,PRTSYMTXTMODE0
515
                JR Z,.L1
513
                EX DE,HL
516
                EX DE,HL
514
                LD (HL),C
517
                LD (HL),C
515
PRTSYMTXTMODE0  POP HL
518
.L1             POP HL
516
                POP DE
519
                POP DE
517
                RET
520
                RET
518
 
521
 
519
WINW_ZX         EXX
522
WINW_ZX         EXX
520
;               LD BC,RD_7FFD
-
 
521
;               IN A,(C)
-
 
522
                READ_7FFD
523
        READ_7FFD
523
                AND 8
524
                AND 8
524
                RRCA
525
                RRCA
525
                RRCA
526
                RRCA
526
                RRCA
527
                RRCA
527
                RRCA
528
                RRCA
528
                LD D,A
529
                LD D,A
529
                LD BC,WIN_P6
530
                LD BC,WIN_P2
530
                LD A,(PAGE4READ)
531
                LD A,(PAGE4READ)
531
                OUT (C),A
532
                OUT (C),A
532
                LD A,(IX+2)
533
                LD A,(IX+_V_SIZE)
533
                ADD A,A
534
                ADD A,A
534
                ADD A,A
535
                ADD A,A
535
                ADD A,A
536
                ADD A,A
536
                LD E,A
537
                LD E,A
537
                EXX
538
                EXX
538
                LD C,(IX+3)
539
                LD C,(IX+_H_SIZE)
539
                LD L,(IX+1)
540
                LD L,(IX+_Y_COORD)
540
                LD H,0
541
                LD H,0
541
                ADD HL,HL
542
                ADD HL,HL
542
                ADD HL,HL
543
                ADD HL,HL
543
                ADD HL,HL
544
                ADD HL,HL
544
                ADD HL,HL
545
                ADD HL,HL
545
                EX DE,HL
546
                EX DE,HL
546
                LD IY,BUFTSC
547
                LD IY,BUFTSC
547
                ADD IY,DE
548
                ADD IY,DE
548
WINW3           LD A,(IX+0)
549
WINW3           LD A,(IX+_X_COORD)
549
                ADD A,(IY+0)
550
                ADD A,(IY+0)
550
                LD E,A
551
                LD E,A
551
 
-
 
552
                LD A,(IY+1)
552
                LD A,(IY+1)
553
                EXX
553
                EXX
554
                ADD A,D
554
                ADD A,D
555
                EXX
555
                EXX
556
                LD D,A
556
                LD D,A
557
 
-
 
558
                AND 7
557
                AND 7
559
                JR NZ,WINW4
558
                JR NZ,WINW4
560
                LD B,C
559
                LD B,C
561
                LD A,D
560
                LD A,D
562
                RRCA
561
                RRCA
563
                RRCA
562
                RRCA
564
                RRCA
563
                RRCA
565
                AND 3
564
                AND 3
566
                ADD A,0X58
565
                ADD A,0x58
567
 
-
 
568
                EXX
566
                EXX
569
                ADD A,D
567
                ADD A,D
570
                EXX
568
                EXX
571
               
-
 
572
                LD H,A
569
                LD H,A
573
                LD L,E
570
                LD L,E
574
                LD A,(IX+4)
571
                LD A,(IX+_COLOR_WIN)
575
WINW5           LD (HL),A
572
WINW5           LD (HL),A
576
                INC L
573
                INC L
577
                DJNZ WINW5
574
                DJNZ WINW5
578
WINW4           LD B,C
575
WINW4           LD B,C
579
                XOR A
576
                XOR A
Line 584... Line 581...
584
                INC IY
581
                INC IY
585
                EXX
582
                EXX
586
                DEC E
583
                DEC E
587
                EXX
584
                EXX
588
                JR NZ,WINW3
585
                JR NZ,WINW3
589
                BIT 7,(IX+6)
586
                BIT B_ADR_PUNKT,(IX+_FLAGS)
590
                JR Z,NIZ_RAMKA          ;ОКНО БЕЗ НИЖНЕГО ЗАГОЛОВКА
587
                JR Z,NIZ_RAMKA          ; окно без нижнего заголовка
591
;РИСУЕМ НИЖНЮЮ ЦВЕТНУЮ ПОЛОСКУ
588
; рисуем нижнюю цветную полоску
592
                LD DE,0XFFF0
589
                LD DE,0xFFF0
593
                ADD IY,DE
590
                ADD IY,DE
594
                LD A,(IX+0)
591
                LD A,(IX+_X_COORD)
595
                ADD A,(IY+0)
592
                ADD A,(IY+0)
596
                LD E,A
593
                LD E,A
597
                LD A,(IY+1)
594
                LD A,(IY+1)
598
                RRCA
595
                RRCA
599
                RRCA
596
                RRCA
600
                RRCA
597
                RRCA
601
                AND 3
598
                AND 3
602
                ADD A,0X58
599
                ADD A,0x58
603
 
-
 
604
                EXX
600
                EXX
605
                ADD A,D
601
                ADD A,D
606
                EXX
602
                EXX
607
 
-
 
608
                LD D,A
603
                LD D,A
609
                LD B,C
604
                LD B,C
610
                LD L,(IX+4)
605
                LD L,(IX+_COLOR_WIN)
611
                LD A,L
606
                LD A,L
612
                AND 7
607
                AND 7
613
                RLCA
608
                RLCA
614
                RLCA
609
                RLCA
615
                RLCA
610
                RLCA
Line 621... Line 616...
621
                AND 7
616
                AND 7
622
                OR H
617
                OR H
623
WINWN1          LD (DE),A
618
WINWN1          LD (DE),A
624
                INC E
619
                INC E
625
                DJNZ WINWN1
620
                DJNZ WINWN1
626
                LD DE,0X0E
621
                LD DE,0x0E
627
                ADD IY,DE
622
                ADD IY,DE
628
                JR CENTR_RAMK
623
                JR CENTR_RAMK
629
 
624
 
630
NIZ_RAMKA       BIT 6,(IX+6)
625
NIZ_RAMKA       BIT B_ADR_NUMS_PUNKT,(IX+_FLAGS)
631
                JR NZ,CENTR_RAMK                ;ОКНО БЕЗ РАМКИ
626
                JR NZ,CENTR_RAMK                ; окно без рамки
632
;РИСУЕМ НИЖНЮЮ РАМКУ
627
; рисуем нижнюю рамку
633
                DEC IY
628
                DEC IY
634
                DEC IY
629
                DEC IY
635
                LD L,(IX+0)
630
                LD L,(IX+_X_COORD)
636
                LD A,(IY+0)
631
                LD A,(IY+0)
637
                ADD A,L
632
                ADD A,L
638
                LD E,A
633
                LD E,A
639
                LD H,A
634
                LD H,A
640
 
-
 
641
                LD A,(IY+1)
635
                LD A,(IY+1)
642
                EXX
636
                EXX
643
                ADD A,D
637
                ADD A,D
644
                EXX
638
                EXX
645
                LD D,A
639
                LD D,A
646
 
-
 
647
                LD B,C
640
                LD B,C
648
                LD A,0XFF
641
                LD A,0xFF
649
NR1             LD (DE),A
642
NR1             LD (DE),A
650
                INC E
643
                INC E
651
                DJNZ NR1
644
                DJNZ NR1
652
                DEC E
645
                DEC E
653
                DEC D
646
                DEC D
654
                LD L,H
647
                LD L,H
655
                LD H,D
648
                LD H,D
656
                LD A,0X80
649
                LD A,0x80
657
                LD B,7
650
                LD B,7
658
NR2             LD (HL),A
651
NR2             LD (HL),A
659
                RLCA
652
                RLCA
660
                LD (DE),A
653
                LD (DE),A
661
                RRCA
654
                RRCA
662
                DEC H
655
                DEC H
663
                DEC D
656
                DEC D
664
                DJNZ NR2
657
                DJNZ NR2
665
CENTR_RAMK      BIT 6,(IX+6)
658
CENTR_RAMK      BIT B_ADR_NUMS_PUNKT,(IX+_FLAGS)
666
                JR NZ,WERH_COLOR                ;ОКНО БЕЗ РАМКИ
659
                JR NZ,WERH_COLOR                ; окно без рамки
667
;РИСУЕМ БОКОВЫЕ РАМКИ
660
; рисуем боковые рамки
668
                EXX
661
                EXX
669
                LD A,(IX+2)
662
                LD A,(IX+_V_SIZE)
670
                SUB 2
663
                SUB 2
671
                LD E,A
664
                LD E,A
672
                EXX
665
                EXX
673
NR4             LD DE,0XFFF0
666
NR4             LD DE,0xFFF0
674
                ADD IY,DE
667
                ADD IY,DE
675
                LD L,(IX+0)
668
                LD L,(IX+_X_COORD)
676
                LD A,(IY+0)
669
                LD A,(IY+0)
677
                ADD A,L
670
                ADD A,L
678
                LD E,A
671
                LD E,A
679
 
-
 
680
                LD A,(IY+1)
672
                LD A,(IY+1)
681
                EXX
673
                EXX
682
                ADD A,D
674
                ADD A,D
683
                EXX
675
                EXX
684
                LD D,A
676
                LD D,A
685
                LD A,E
677
                LD A,E
686
 
-
 
687
                LD H,D
678
                LD H,D
688
                ADD A,(IX+3)
679
                ADD A,(IX+_H_SIZE)
689
                DEC A
680
                DEC A
690
                LD L,A
681
                LD L,A
691
                LD A,0X80
682
                LD A,0x80
692
                LD B,8
683
                LD B,8
693
NR3             LD (DE),A
684
NR3             LD (DE),A
694
                RLCA
685
                RLCA
695
                LD (HL),A
686
                LD (HL),A
696
                RRCA
687
                RRCA
Line 699... Line 690...
699
                DJNZ NR3
690
                DJNZ NR3
700
                EXX
691
                EXX
701
                DEC E
692
                DEC E
702
                EXX
693
                EXX
703
                JR NZ,NR4
694
                JR NZ,NR4
704
WERH_COLOR      BIT 5,(IX+6)
695
WERH_COLOR      BIT B_UPHEADER,(IX+_FLAGS)
705
                JR Z,WERH_RAMK          ;БЕЗ ВЕРХНЕГО ЗАГОЛОВКА
696
                JR Z,WERH_RAMK          ; без верхнего заголовка
706
;РИСУЕМ ВЕРХНЮЮ ЦВЕТНУЮ ПОЛОСУ
697
; рисуем верхнюю цветную полосу
707
                LD L,(IX+1)
698
                LD L,(IX+_Y_COORD)
708
                LD H,0
699
                LD H,0
709
                ADD HL,HL
700
                ADD HL,HL
710
                ADD HL,HL
701
                ADD HL,HL
711
                ADD HL,HL
702
                ADD HL,HL
712
                ADD HL,HL
703
                ADD HL,HL
713
                EX DE,HL
704
                EX DE,HL
714
                LD IY,BUFTSC
705
                LD IY,BUFTSC
715
                ADD IY,DE
706
                ADD IY,DE
716
                LD A,(IX+0)
707
                LD A,(IX+_X_COORD)
717
                ADD A,(IY+0)
708
                ADD A,(IY+0)
718
                LD E,A
709
                LD E,A
719
                LD A,(IY+1)
710
                LD A,(IY+1)
720
                RRCA
711
                RRCA
721
                RRCA
712
                RRCA
722
                RRCA
713
                RRCA
723
                AND 3
714
                AND 3
724
                ADD A,0X58
715
                ADD A,0x58
725
 
-
 
726
                EXX
716
                EXX
727
                ADD A,D
717
                ADD A,D
728
                EXX
718
                EXX
729
 
-
 
730
                LD D,A
719
                LD D,A
731
                LD B,C
720
                LD B,C
732
                LD L,(IX+4)
721
                LD L,(IX+_COLOR_WIN)
733
                LD A,L
722
                LD A,L
734
                AND 7
723
                AND 7
735
                RLCA
724
                RLCA
736
                RLCA
725
                RLCA
737
                RLCA
726
                RLCA
Line 745... Line 734...
745
WINWW1          LD (DE),A
734
WINWW1          LD (DE),A
746
                INC E
735
                INC E
747
                DJNZ WINWW1
736
                DJNZ WINWW1
748
                JP RADUGA
737
                JP RADUGA
749
 
738
 
750
WERH_RAMK       BIT 6,(IX+6)
739
WERH_RAMK       BIT B_ADR_NUMS_PUNKT,(IX+_FLAGS)
751
                JR NZ,RADUGA            ;ОКНО БЕЗ РАМКИ
740
                JR NZ,RADUGA            ; окно без рамки
752
;РИСУЕМ ВЕРХНЮЮ РАМКУ
741
; рисуем верхнюю рамку
753
WR4             LD DE,0XFFF0
742
WR4             LD DE,0xFFF0
754
                ADD IY,DE
743
                ADD IY,DE
755
                LD L,(IX+0)
744
                LD L,(IX+_X_COORD)
756
                LD A,(IY+0)
745
                LD A,(IY+0)
757
                ADD A,L
746
                ADD A,L
758
                LD E,A
747
                LD E,A
759
 
-
 
760
                LD A,(IY+1)
748
                LD A,(IY+1)
761
                EXX
749
                EXX
762
                ADD A,D
750
                ADD A,D
763
                EXX
751
                EXX
764
                LD D,A
752
                LD D,A
765
                LD A,E
753
                LD A,E
766
 
-
 
767
                LD H,D
754
                LD H,D
768
                ADD A,(IX+3)
755
                ADD A,(IX+_H_SIZE)
769
                DEC A
756
                DEC A
770
                LD L,A
757
                LD L,A
771
                LD A,0X80
758
                LD A,0x80
772
                LD B,7
759
                LD B,7
773
WR3             LD (DE),A
760
WR3             LD (DE),A
774
                RLCA
761
                RLCA
775
                LD (HL),A
762
                LD (HL),A
776
                RRCA
763
                RRCA
Line 779... Line 766...
779
                DJNZ WR3
766
                DJNZ WR3
780
                LD A,L
767
                LD A,L
781
                SUB E
768
                SUB E
782
                LD B,A
769
                LD B,A
783
                INC B
770
                INC B
784
                LD A,0XFF
771
                LD A,0xFF
785
WR5             LD (DE),A
772
WR5             LD (DE),A
786
                INC E
773
                INC E
787
                DJNZ WR5
774
                DJNZ WR5
788
RADUGA          BIT 5,(IX+6)
775
RADUGA          BIT B_UPHEADER,(IX+_FLAGS)
789
                JR Z,RASCH
776
                JR Z,RASCH
790
                LD IY,BUFTSC
777
                LD IY,BUFTSC
791
                LD L,(IX+1)
778
                LD L,(IX+_Y_COORD)
792
                LD H,0
779
                LD H,0
793
                ADD HL,HL
780
                ADD HL,HL
794
                ADD HL,HL
781
                ADD HL,HL
795
                ADD HL,HL
782
                ADD HL,HL
796
                ADD HL,HL
783
                ADD HL,HL
Line 801... Line 788...
801
                LD D,A
788
                LD D,A
802
                RRCA
789
                RRCA
803
                RRCA
790
                RRCA
804
                RRCA
791
                RRCA
805
                AND 3
792
                AND 3
806
                ADD A,0X58
793
                ADD A,0x58
807
 
-
 
808
                EXX
794
                EXX
809
                ADD A,D
795
                ADD A,D
810
                EXX
796
                EXX
811
 
-
 
812
                LD H,A
797
                LD H,A
813
                LD A,(IX+0)
798
                LD A,(IX+_X_COORD)
814
                ADD A,(IX+3)
799
                ADD A,(IX+_H_SIZE)
815
                ADD A,L
800
                ADD A,L
816
                LD L,A
801
                LD L,A
817
                LD E,A
802
                LD E,A
818
                LD A,(IX+4)
803
                LD A,(IX+_COLOR_WIN)
819
                AND 0X47
804
                AND 0x47
820
                LD C,A
805
                LD C,A
821
                AND 0X40
806
                AND 0x40
822
                LD B,A
807
                LD B,A
823
                DEC L
808
                DEC L
824
                LD A,C
809
                LD A,C
825
                ADD A,5*8
810
                ADD A,5*8
826
                LD (HL),A       ;5*8+7
811
                LD (HL),A       ; 5*8+7
Line 862... Line 847...
862
                DEC L
847
                DEC L
863
                LD (HL),A
848
                LD (HL),A
864
                LD L,C
849
                LD L,C
865
                INC H
850
                INC H
866
                DJNZ RADUGA1
851
                DJNZ RADUGA1
867
RASCH           LD A,(IX+0)
852
RASCH           LD A,(IX+_X_COORD)
868
                LD L,(IX+1)
853
                LD L,(IX+_Y_COORD)
869
                ADD A,A
854
                ADD A,A
870
                ADD A,A
855
                ADD A,A
871
                ADD A,A
856
                ADD A,A
872
                LD H,A
857
                LD H,A
873
                INC H
858
                INC H
874
                EXX
859
                EXX
875
                XOR A
-
 
876
                OUT (C),A
860
        EVOPORT WIN_P2,RAM_NMI
877
                EXX
861
                EXX
878
                LD A,H
862
                LD A,H
879
                LD (XNEW),A
863
                LD (XNEW),A
880
                LD (ADRSTR_Y),HL
864
                LD (ADRSTR_Y),HL
881
                EXX
865
                EXX
882
                LD A,(PAGE4READ)
866
                LD A,(PAGE4READ)
883
                OUT (C),A
867
                OUT (C),A
884
                EXX
868
                EXX
885
                LD L,(IX+0X0C)
869
                LD L,(IX+_ADR_TXT_L)
886
                LD H,(IX+0X0D)
870
                LD H,(IX+_ADR_TXT_H)
887
                EXX
871
                EXX
888
                XOR A
-
 
889
                OUT (C),A
872
        EVOPORT WIN_P2,RAM_NMI
890
                EXX
873
                EXX
891
                BIT 4,(IX+6)
874
                BIT B_TEXT,(IX+_FLAGS)
892
                JP Z,IPRINT_MESSAGE
875
                JP Z,IPRINT_MESSAGE
893
                RET
876
                RET
894
 
877
 
895
CLS             LD HL,0
878
CLS             LD HL,0
896
                LD D,H
879
                LD D,H
897
                LD E,L
880
                LD E,L
898
                ADD HL,SP
881
                ADD HL,SP
899
                LD B,0X60
882
                LD B,0x60
900
                LD SP,0X5800
883
                LD SP,0x5800
-
 
884
CLS1
901
CLS1            REPT 0X20
885
        REPT 0x20
902
                PUSH DE
886
                PUSH DE
903
                ENDM
887
        ENDM
904
                DJNZ CLS1
888
                DJNZ CLS1
905
                LD SP,HL
889
                LD SP,HL
906
CLSSCR          LD HL,0
890
CLSSCR          LD HL,0
907
                LD D,A
891
                LD D,A
908
                LD E,A
892
                LD E,A
909
                ADD HL,SP
893
                ADD HL,SP
910
                LD SP,0X5B00
894
                LD SP,0x5B00
911
                LD B,12
895
                LD B,12
-
 
896
CLS2
912
CLS2            REPT 0X20
897
        REPT 0x20
913
                PUSH DE
898
                PUSH DE
914
                ENDM
899
        ENDM
915
                DJNZ CLS2
900
                DJNZ CLS2
916
                LD SP,HL
901
                LD SP,HL
917
                RRCA
902
                RRCA
918
                RRCA
903
                RRCA
919
                RRCA
904
                RRCA
920
                AND 7
905
                AND 7
921
                OUT (0XFE),A
906
                OUT (0xFE),A
922
                RET
907
                RET
923
 
908
 
924
STOP_PRINTMSG   LD BC,WIN_P6
909
STOP_PRINTMSG
925
                XOR A
-
 
926
                OUT (C),A
910
        EVOPORT WIN_P2,RAM_NMI
927
                RET
911
                RET
928
 
912
 
929
;ПЕЧАТЬ ТЕКСТОВОЙ СТРОКИ С УПРАВЛЮЯЩИМИ КОДАМИ (ВНЕШНИЙ ВЫЗОВ)
913
; печать текстовой строки с управляющими кодами (внешний вызов)
930
PRINT_MESSAGE   LD HL,(RREG_L)
914
PRINT_MESSAGE   LD HL,(RREG_L)
931
;ПЕЧАТЬ ТЕКСТОВОЙ СТРОКИ С УПРАВЛЮЯЩИМИ КОДАМИ (ВНУТРЕННИЙ ВЫЗОВ)
915
; печать текстовой строки с управляющими кодами (внутренний вызов)
932
IPRINT_MESSAGE  LD A,(R_77)
916
IPRINT_MESSAGE  LD A,(R_77)
933
                AND 7
917
                AND 7
934
                CP 7
918
                CP 7
935
                JP Z,ITPRINT_MESSAGE
919
                JP Z,ITPRINT_MESSAGE
936
                CP 3
920
                CP 3
937
                RET NZ
921
                RET NZ
938
;               LD BC,RD_7FFD
-
 
939
;               IN A,(C)
-
 
940
                READ_7FFD
922
        READ_7FFD
941
                AND 8
923
                AND 8
942
                LD BC,BUFTSC
924
                LD BC,BUFTSC
943
                JR Z,IPM1
925
                JR Z,IPM1
944
                LD BC,BUFTSC1
926
                LD BC,BUFTSC1
945
IPM1            LD (TEKBUFTSC),BC
927
IPM1            LD (TEKBUFTSC),BC
946
                LD BC,WIN_P6
928
                LD BC,WIN_P2
947
;ПЕЧАТЬ ТЕКСТОВОЙ СТОРОКИ С УПРАВЛЯЮЩИМИ КОДАМИ (ВНУТРЕННИЙ ВЫЗОВ)
929
; печать текстовой стороки с управляющими кодами (внутренний вызов)
948
NEXT            LD A,(PAGE4READ)
930
NEXT            LD A,(PAGE4READ)
949
                OUT (C),A
931
                OUT (C),A
950
                LD A,(HL)
932
                LD A,(HL)
951
                INC HL
933
                INC HL
952
                AND A
934
                AND A
953
                JR Z,STOP_PRINTMSG
935
                JR Z,STOP_PRINTMSG
954
PRINT           CP 0X20
936
PRINT           CP 0x20
955
                JP NC,PRINTA
937
                JP NC,PRINTA
956
COD03           CP 3
938
COD03           CP 3
957
                JR NZ,COD9
939
                JR NZ,COD9
958
                LD D,0                          ;ЦЕНТРОВКА СТРОКИ В ОКНЕ
940
                LD D,0                          ; центровка строки в окне
959
                LD A,H
941
                LD A,H
960
                EX AF,AF'
942
                EX AF,AF'
961
                LD E,L
943
                LD E,L
962
CEN2            LD A,(HL)
944
CEN2            LD A,(HL)
963
                CP 0X20
945
                CP 0x20
964
                JR C,CEN3
946
                JR C,CEN3
965
                LD A,6
947
                LD A,6
966
                ADD A,D
948
                ADD A,D
967
                LD D,A
949
                LD D,A
968
                INC HL
950
                INC HL
969
                JR CEN2
951
                JR CEN2
970
 
952
 
971
CEN3            XOR A
953
CEN3
972
                OUT (C),A
954
        EVOPORT WIN_P2,RAM_NMI
973
                LD A,(IX+3)
955
                LD A,(IX+_H_SIZE)
974
                ADD A,A
956
                ADD A,A
975
                ADD A,A
957
                ADD A,A
976
                ADD A,A
958
                ADD A,A
977
                SUB D
959
                SUB D
978
                SRL A
960
                SRL A
Line 986... Line 968...
986
                LD L,E
968
                LD L,E
987
                JP NEXT
969
                JP NEXT
988
 
970
 
989
COD9            CP 9
971
COD9            CP 9
990
                JR NZ,COD0D
972
                JR NZ,COD0D
991
                LD D,(HL)                       ;ТАБУЛЯЦИЯ НА N ПОЗИЦИЙ
973
                LD D,(HL)                       ; табуляция на N позиций
992
                INC HL
974
                INC HL
993
                LD A,D
975
                LD A,D
994
                ADD A,A
976
                ADD A,A
995
                ADD A,D
977
                ADD A,D
996
                ADD A,A
978
                ADD A,A
997
                LD D,A
979
                LD D,A
998
                XOR A
-
 
999
                OUT (C),A
980
        EVOPORT WIN_P2,RAM_NMI
1000
                LD A,(ADRSTR_X)
981
                LD A,(ADRSTR_X)
1001
                ADD A,D
982
                ADD A,D
1002
                LD (ADRSTR_X),A
983
                LD (ADRSTR_X),A
1003
                JR NEXT
984
                JR NEXT
1004
 
985
 
1005
COD0D           CP 0X0D
986
COD0D           CP 0x0D
1006
                JR NZ,COD16
987
                JR NZ,COD16
1007
                XOR A
-
 
1008
                OUT (C),A
988
        EVOPORT WIN_P2,RAM_NMI
1009
                LD A,(XNEW)                     ;ПЕРЕВОД СТРОКИ
989
                LD A,(XNEW)                     ; перевод строки
1010
                LD (ADRSTR_X),A
990
                LD (ADRSTR_X),A
1011
                LD A,(ADRSTR_Y)
991
                LD A,(ADRSTR_Y)
1012
                INC A
992
                INC A
1013
                LD (ADRSTR_Y),A
993
                LD (ADRSTR_Y),A
1014
                JP NEXT
994
                JP NEXT
1015
 
995
 
1016
COD16           CP 0X16
996
COD16           CP 0x16
1017
                JR NZ,COD17
997
                JR NZ,COD17
1018
                LD E,(HL)                       ;ПЕЧАТЬ В УКАЗАННОЙ ПОЗИЦИИ
998
                LD E,(HL)                       ; печать в указанной позиции
1019
                INC HL
999
                INC HL
1020
                LD D,(HL)
1000
                LD D,(HL)
1021
                INC HL
1001
                INC HL
1022
                XOR A
-
 
1023
                OUT (C),A
1002
        EVOPORT WIN_P2,RAM_NMI
1024
                LD (ADRSTR_Y),DE
1003
                LD (ADRSTR_Y),DE
1025
                JP NEXT
1004
                JP NEXT
1026
 
1005
 
1027
COD17           CP 0X17
1006
COD17           CP 0x17
1028
                JR NZ,COD1
1007
                JR NZ,COD1
1029
                LD D,(HL)
1008
                LD D,(HL)
1030
                INC HL
1009
                INC HL
1031
                XOR A
-
 
1032
                OUT (C),A
1010
        EVOPORT WIN_P2,RAM_NMI
1033
                LD A,D
1011
                LD A,D
1034
                LD (COLOR4SYM),A
1012
                LD (COLOR4SYM),A
1035
                JP NEXT
1013
                JP NEXT
1036
 
1014
 
1037
;КООРДИНАТА ПЕЧАТИ В ИСХОДНУЮ ПОЗИЦИЮ ОКНА
1015
; координата печати в исходную позицию окна
1038
COD1            CP 1
1016
COD1            CP 1
1039
                JP NZ,NEXT
1017
                JP NZ,NEXT
1040
                XOR A
-
 
1041
                OUT (C),A
1018
        EVOPORT WIN_P2,RAM_NMI
1042
                LD A,(IX+0)
1019
                LD A,(IX+_X_COORD)
1043
                LD E,(IX+1)
1020
                LD E,(IX+_Y_COORD)
1044
                ADD A,A
1021
                ADD A,A
1045
                ADD A,A
1022
                ADD A,A
1046
                ADD A,A
1023
                ADD A,A
1047
                INC A
1024
                INC A
1048
                LD D,A
1025
                LD D,A
Line 1056... Line 1033...
1056
                CP 7
1033
                CP 7
1057
                JP Z,ITPRINT_A1
1034
                JP Z,ITPRINT_A1
1058
                CP 3
1035
                CP 3
1059
                RET NZ
1036
                RET NZ
1060
                EX AF,AF'
1037
                EX AF,AF'
1061
                LD BC,WIN_P6
1038
                LD BC,WIN_P2
1062
                LD HL,STOP_PRINTA
1039
                LD HL,STOP_PRINTA
1063
;ПЕЧАТЬ СИМВОЛА В "A"
1040
; печать символа в "A"
1064
PRINTA          EX AF,AF'
1041
PRINTA          EX AF,AF'
1065
                XOR A
-
 
1066
                OUT (C),A
1042
        EVOPORT WIN_P2,RAM_NMI
1067
                PUSH HL
1043
                PUSH HL
1068
                LD H,A
1044
                LD H,A
1069
                EX AF,AF'
1045
                EX AF,AF'
1070
                LD L,A
1046
                LD L,A
1071
                ADD HL,HL
1047
                ADD HL,HL
Line 1083... Line 1059...
1083
                AND 7
1059
                AND 7
1084
                LD C,A
1060
                LD C,A
1085
                LD IY,SDVIG
1061
                LD IY,SDVIG
1086
                ADD IY,BC
1062
                ADD IY,BC
1087
                LD A,H
1063
                LD A,H
1088
                AND 0XF8
1064
                AND 0xF8
1089
                RRCA
1065
                RRCA
1090
                RRCA
1066
                RRCA
1091
                RRCA
1067
                RRCA
1092
                EX AF,AF'
1068
                EX AF,AF'
1093
                LD A,6
1069
                LD A,6
Line 1125... Line 1101...
1125
                EXX
1101
                EXX
1126
                LD L,A
1102
                LD L,A
1127
                LD H,0
1103
                LD H,0
1128
                JP (IY)
1104
                JP (IY)
1129
 
1105
 
-
 
1106
SDVIG
1130
SDVIG           REPT 8
1107
        REPT 8
1131
                ADD HL,HL
1108
                ADD HL,HL
1132
                ENDM
1109
        ENDM
1133
                LD A,(DE)
1110
                LD A,(DE)
1134
                AND B
1111
                AND B
1135
                OR H
1112
                OR H
Line 1155... Line 1132...
1155
                LD A,H
1132
                LD A,H
1156
                RRCA
1133
                RRCA
1157
                RRCA
1134
                RRCA
1158
                RRCA
1135
                RRCA
1159
                AND 3
1136
                AND 3
1160
                OR 0X58
1137
                OR 0x58
1161
                LD H,A
1138
                LD H,A
1162
                LD (HL),E
1139
                LD (HL),E
1163
PRINTA1         EXX
1140
PRINTA1         EXX
1164
                XOR A
-
 
1165
                OUT (C),A
1141
        EVOPORT WIN_P2,RAM_NMI
1166
                POP HL
1142
                POP HL
1167
                JP NEXT
1143
                JP NEXT
1168
 
1144
 
1169
STOP_PRINTA     DB 0
1145
STOP_PRINTA     DB 0
1170
 
1146
 
Line 1175... Line 1151...
1175
                DB %11110000,%00111111
1151
                DB %11110000,%00111111
1176
                DB %11111000,%00011111
1152
                DB %11111000,%00011111
1177
                DB %11111100,%00001111
1153
                DB %11111100,%00001111
1178
                DB %11111110,%00000111
1154
                DB %11111110,%00000111
1179
 
1155
 
1180
;РИСОВАЛКА ЦВЕТНОЙ ПОЛОСКИ В МЕНЮ
1156
; рисовалка цветной полоски в меню
1181
COLOR_CURSOR    LD HL,FLAGS
1157
COLOR_CURSOR    LD HL,SYSFLAGS
1182
                BIT B_VIDEO_MODE,(HL)
1158
                BIT SYSFLAGS.B_VIDEO_MODE,(HL)
1183
                JP Z,COLORCURS4
1159
                JP Z,COLORCURS4
1184
                EVOPORT WIN_P3,0XF7
1160
        EVOPORT WIN_P3,VMODE7_0
1185
                LD B,(IX+3)
1161
                LD B,(IX+_H_SIZE)
1186
                LD DE,(COL_CURSOR)
1162
                LD DE,(COL_CURSOR)
1187
                CALL TRESTORE_CLINE
1163
                CALL TRESTORE_CLINE
1188
COLORCURS6      LD A,(IX+7)
1164
COLORCURS6      LD A,(IX+_NUM_PKT)
1189
                BIT 7,A
1165
                BIT B_ADR_PUNKT,A
1190
                JR Z,COLORCURS5
1166
                JR Z,COLORCURS5
1191
                LD L,(IX+8)
1167
                LD L,(IX+_TEK_PKT_L)
1192
                LD H,(IX+9)
1168
                LD H,(IX+_TEK_PKT_H)
1193
                LD A,(HL)
1169
                LD A,(HL)
1194
COLORCURS5      LD D,(IX+0)
1170
COLORCURS5      LD D,(IX+_X_COORD)
1195
                ADD A,(IX+1)
1171
                ADD A,(IX+_Y_COORD)
1196
                LD E,A
1172
                LD E,A
1197
                INC E
1173
                INC E
1198
                LD (COL_CURSOR),DE
1174
                LD (COL_CURSOR),DE
1199
                EVOPORT WIN_P3,0XF7
1175
        EVOPORT WIN_P3,VMODE7_0
1200
                LD B,(IX+3)
1176
                LD B,(IX+_H_SIZE)
1201
                CALL TSTORE_CLINE
1177
                CALL TSTORE_CLINE
1202
                LD A,(IX+5)
1178
                LD A,(IX+_COLOR_CUR)
1203
                AND 0XF8
1179
                AND 0xF8
1204
                LD C,A
1180
                LD C,A
1205
                PUSH HL
1181
                PUSH HL
1206
                PUSH DE
1182
                PUSH DE
1207
                PUSH BC
1183
                PUSH BC
1208
                LD (COL_CURSOR),DE
1184
                LD (COL_CURSOR),DE
1209
                CALL TDISP_ATTR
1185
                CALL TDISP_ATTR
1210
                LD A,D
1186
                LD A,D
1211
                XOR 0X10
1187
                XOR 0x10
1212
                LD H,A
1188
                LD H,A
1213
                LD A,D
1189
                LD A,D
1214
                AND 0X10
1190
                AND 0x10
1215
                REPT 4
1191
                RRCA
-
 
1192
                RRCA
-
 
1193
                RRCA
1216
                RRCA
1194
                RRCA
1217
                ENDM
-
 
1218
                ADD A,E
1195
                ADD A,E
1219
                LD L,A
1196
                LD L,A
1220
TCOLORLINE2     EX DE,HL
1197
TCOLORLINE2     EX DE,HL
1221
                LD A,(HL)
1198
                LD A,(HL)
1222
                AND 0XC7
1199
                AND 0xC7
1223
                OR C
1200
                OR C
1224
                LD (HL),A
1201
                LD (HL),A
1225
                INC HL
1202
                INC HL
1226
                DJNZ TCOLORLINE2
1203
                DJNZ TCOLORLINE2
1227
                POP BC
1204
                POP BC
1228
                POP DE
1205
                POP DE
1229
                POP HL
1206
                POP HL
1230
                RET
1207
                RET
1231
 
1208
 
1232
;РИСОВАНИЕ ЦВЕТНОЙ ПОЛОСЫ
1209
; рисование цветной полосы
1233
;D-X E-Y B-ДЛИНА C-ЦВЕТ
1210
; D-X E-Y B-длина C-цвет
1234
TCOLOR_LINE     PUSH HL
1211
TCOLOR_LINE     PUSH HL
1235
                PUSH DE
1212
                PUSH DE
1236
                PUSH BC
1213
                PUSH BC
1237
                LD (COL_CURSOR),DE
1214
                LD (COL_CURSOR),DE
1238
                CALL TDISP_ATTR
1215
                CALL TDISP_ATTR
1239
                LD A,D
1216
                LD A,D
1240
                XOR 0X10
1217
                XOR 0x10
1241
                LD H,A
1218
                LD H,A
1242
                LD A,D
1219
                LD A,D
1243
                AND 0X10
1220
                AND 0x10
1244
                REPT 4
1221
        REPT 4
1245
                RRCA
1222
                RRCA
1246
                ENDM
1223
        ENDM
1247
                ADD A,E
1224
                ADD A,E
1248
                LD L,A
1225
                LD L,A
Line 1255... Line 1232...
1255
                POP HL
1232
                POP HL
1256
                RET
1233
                RET
1257
; 00   01   02   03   04   05   06
1234
;  00   01   02   03   04   05   06
1258
;F1C0 E1C1 F1C1 E1C2 F1C2 E1C3 F1C3
1235
; F1C0 E1C1 F1C1 E1C2 F1C2 E1C3 F1C3
1259
 
1236
 
1260
;СОХРАНЕНИЕ ЧАСТИ ЭКРАНА ДЛЯ ВЫВОДА ЦВЕТНОЙ ЛИНИИ
1237
; сохранение части экрана для вывода цветной линии
1261
;D-X E-Y B-ДЛИНА
1238
; D-X E-Y B-длина
1262
TSTORE_CLINE    PUSH HL
1239
TSTORE_CLINE    PUSH HL
1263
                PUSH DE
1240
                PUSH DE
1264
                PUSH BC
1241
                PUSH BC
1265
                CALL TDISP_ATTR
1242
                CALL TDISP_ATTR
1266
                LD A,D
1243
                LD A,D
1267
                XOR 0X10
1244
                XOR 0x10
1268
                LD H,A
1245
                LD H,A
1269
                LD A,D
1246
                LD A,D
1270
                AND 0X10
1247
                AND 0x10
1271
                REPT 4
1248
        REPT 4
1272
                RRCA
1249
                RRCA
1273
                ENDM
1250
        ENDM
1274
                ADD A,E
1251
                ADD A,E
1275
                LD L,A
1252
                LD L,A
Line 1287... Line 1264...
1287
                POP BC
1264
                POP BC
1288
                POP DE
1265
                POP DE
1289
                POP HL
1266
                POP HL
1290
                RET
1267
                RET
1291
 
1268
 
1292
;ВОССТАНОВЛЕНИЕ ЧАСТИ ЭКРАНА ПОД ЦВЕТНОЙ ЛИНИЕЙ
1269
; восстановление части экрана под цветной линией
1293
;D-X E-Y B-ДЛИНА
1270
; D-X E-Y B-длина
1294
TRESTORE_CLINE  PUSH HL
1271
TRESTORE_CLINE  PUSH HL
1295
                PUSH DE
1272
                PUSH DE
1296
                PUSH BC
1273
                PUSH BC
1297
                LD B,(IX+3)
1274
                LD B,(IX+_H_SIZE)
1298
                LD DE,(COL_CURSOR)
1275
                LD DE,(COL_CURSOR)
1299
                CALL TDISP_ATTR
1276
                CALL TDISP_ATTR
1300
                LD A,D
1277
                LD A,D
1301
                XOR 0X10
1278
                XOR 0x10
1302
                LD H,A
1279
                LD H,A
1303
                LD A,D
1280
                LD A,D
1304
                AND 0X10
1281
                AND 0x10
1305
                REPT 4
1282
        REPT 4
1306
                RRCA
1283
                RRCA
1307
                ENDM
1284
        ENDM
1308
                ADD A,E
1285
                ADD A,E
1309
                LD L,A
1286
                LD L,A
Line 1321... Line 1298...
1321
                POP BC
1298
                POP BC
1322
                POP DE
1299
                POP DE
1323
                POP HL
1300
                POP HL
1324
                RET
1301
                RET
1325
 
1302
 
1326
RESTORE_CLINE   LD HL,FLAGS
1303
RESTORE_CLINE   LD HL,SYSFLAGS
1327
                BIT B_VIDEO_MODE,(HL)
1304
                BIT SYSFLAGS.B_VIDEO_MODE,(HL)
1328
                JR NZ,TREST_CLINE
1305
                JR NZ,TREST_CLINE
1329
                LD DE,(COL_CURSOR)
1306
                LD DE,(COL_CURSOR)
1330
                LD HL,COLBUF
1307
                LD HL,COLBUF
1331
                LD C,(IX+3)
1308
                LD C,(IX+_H_SIZE)
1332
                LD B,0
1309
                LD B,0
1333
                LDIR
1310
                LDIR
1334
                RET
1311
                RET
1335
 
1312
 
-
 
1313
TREST_CLINE
1336
TREST_CLINE     EVOPORT WIN_P3,0XF7
1314
        EVOPORT WIN_P3,VMODE7_0
1337
                LD B,(IX+3)
1315
                LD B,(IX+_H_SIZE)
1338
                LD DE,(COL_CURSOR)
1316
                LD DE,(COL_CURSOR)
1339
                JP TRESTORE_CLINE
1317
                JP TRESTORE_CLINE
1340
 
1318
 
1341
COLORCURS4      LD DE,(COL_CURSOR)
1319
COLORCURS4      LD DE,(COL_CURSOR)
1342
                LD HL,COLBUF
1320
                LD HL,COLBUF
1343
                LD C,(IX+3)
1321
                LD C,(IX+_H_SIZE)
1344
;               BIT 2,(IY+55)           ;ФАЙЛОВ БОЛЬШЕ ВЫСОТЫ ОКНА?
1322
;               BIT 2,(IY+55)           ; файлов больше высоты окна?
1345
;               JR Z,COLCURS1
1323
;               JR Z,COLCURS1
1346
;               DEC C                   ;ЦВЕТНАЯ ПОЛОСКА НА 1 КОРОЧЕ
1324
;               DEC C                   ; цветная полоска на 1 короче
1347
COLCURS1        LD B,0
1325
COLCURS1        LD B,0
1348
                LDIR
1326
                LDIR
1349
SET_ADR_ATR     LD HL,FLAGS
1327
SET_ADR_ATR
-
 
1328
        EVOPORT WIN_P3,VMODE7_0
-
 
1329
                LD HL,SYSFLAGS
1350
                BIT B_VIDEO_MODE,(HL)
1330
                BIT SYSFLAGS.B_VIDEO_MODE,(HL)
1351
                JP NZ,COLORCURS6
1331
                JP NZ,COLORCURS6
1352
                LD A,(IX+7)
1332
                BIT B_ADR_PUNKT,(IX+_NUM_PKT)
1353
                BIT 7,A
-
 
1354
                JR Z,COLCURS3
1333
                JR Z,COLCURS3
1355
                LD L,(IX+8)
1334
                LD L,(IX+_TEK_PKT_L)
1356
                LD H,(IX+9)
1335
                LD H,(IX+_TEK_PKT_H)
1357
                LD A,(HL)
1336
                LD A,(HL)
1358
COLCURS3        ;LD B,A
1337
COLCURS3        LD H,(IX+_X_COORD)
1359
                LD H,(IX+0)
-
 
1360
                LD L,(IX+1)
1338
                LD L,(IX+_Y_COORD)
1361
                ADD A,L
1339
                ADD A,L
1362
                LD L,A
1340
                LD L,A
1363
                INC L
1341
                INC L
1364
                CALL ADRDIS
1342
                CALL ADRDIS
1365
                EX DE,HL
1343
                EX DE,HL
1366
                LD (COL_CURSOR),HL      ;ПОЛОЖИЛИ АДРЕС ДЛЯ ВОССТАНОВЛЕНИЯ ЦВЕТА
1344
                LD (COL_CURSOR),HL      ; положили адрес для восстановления цвета
1367
                LD DE,COLBUF
1345
                LD DE,COLBUF
1368
                LD B,(IX+3)
1346
                LD B,(IX+_H_SIZE)
1369
;               BIT 2,(IY+55)           ;ФАЙЛОВ БОЛЬШЕ ВЫСОТЫ ОКНА?
1347
;               BIT 2,(IY+55)           ; файлов больше высоты окна?
1370
;               JR Z,COLCURS2
1348
;               JR Z,COLCURS2
1371
;               DEC B                   ;ЦВЕТНАЯ ПОЛОСКА НА 1 КОРОЧЕ
1349
;               DEC B                   ; цветная полоска на 1 короче
1372
COLCURS2        LD C,(IX+5)
1350
COLCURS2        LD C,(IX+_COLOR_CUR)
1373
                LD A,(HL)
1351
.L1             LD A,(HL)
1374
                LD (DE),A
1352
                LD (DE),A
1375
                LD (HL),C
1353
                LD (HL),C
1376
                INC L
1354
                INC L
1377
                INC E
1355
                INC E
1378
                DJNZ $-5
1356
                DJNZ .L1
1379
                RET
1357
                RET
1380
 
1358
 
1381
;H-X, L-Y
1359
; H-X, L-Y
1382
ADRDIS          LD C,A
1360
ADRDIS          LD C,A
1383
                LD A,L
1361
                LD A,L
1384
                AND 0X18
1362
                AND 0x18
1385
                OR 0X40
1363
                OR 0x40
1386
                EX AF,AF'
1364
                EX AF,AF'
1387
                LD A,L
1365
                LD A,L
1388
                AND 7
1366
                AND 7
1389
                RRCA
1367
                RRCA
1390
                RRCA
1368
                RRCA
Line 1397... Line 1375...
1397
ADRATR          LD A,H
1375
ADRATR          LD A,H
1398
                RRCA
1376
                RRCA
1399
                RRCA
1377
                RRCA
1400
                RRCA
1378
                RRCA
1401
                AND 3
1379
                AND 3
1402
                OR 0X58
1380
                OR 0x58
1403
                LD D,A
1381
                LD D,A
1404
                LD A,C
1382
                LD A,C
1405
                RET
1383
                RET
1406
 
1384
 
1407
INC_H           INC H
1385
INC_H           INC H
1408
                LD A,H
1386
                LD A,H
1409
                AND 7
1387
                AND 7
1410
                RET NZ
1388
                RET NZ
1411
                LD A,L
1389
                LD A,L
1412
                ADD A,0X20
1390
                ADD A,0x20
1413
                LD L,A
1391
                LD L,A
1414
                RET C
1392
                RET C
1415
UMEHL1          LD A,H
1393
UMEHL1          LD A,H
1416
                SUB 8
1394
                SUB 8
1417
                LD H,A
1395
                LD H,A
1418
                RET    
1396
                RET    
1419
 
1397
 
1420
;СДВИГ ОКНА ВВЕРХ
1398
; сдвиг окна вверх
1421
SCRUP           LD HL,FLAGS
1399
SCRUP           LD HL,SYSFLAGS
1422
                BIT B_VIDEO_MODE,(HL)
1400
                BIT SYSFLAGS.B_VIDEO_MODE,(HL)
1423
                JP NZ,TSCRUP
1401
                JP NZ,TSCRUP
1424
;СДВИГ ОКНА ВВЕРХ (ZX)
1402
; сдвиг окна вверх (ZX)
1425
                PUSH IY
1403
                PUSH IY
1426
                PUSH IX
1404
                PUSH IX
1427
                EXX
1405
                EXX
1428
                LD A,(SCROLL_MODE)
1406
                LD A,(SCROLL_MODE)
1429
                LD E,A
1407
                LD E,A
1430
                EXX
1408
                EXX
1431
                LD L,(IX+1)
1409
                LD L,(IX+_Y_COORD)
1432
                INC L
1410
                INC L
1433
                CALL USTAN
1411
                CALL USTAN
1434
;СДВИГ ПИКСЕЛЕЙ ВВЕРХ
1412
; сдвиг пикселей вверх
1435
SCRUP1          LD A,(IX+0X10)
1413
SCRUP1          LD A,(IX+0x10)
1436
                ADD A,C
1414
                ADD A,C
1437
                LD L,A
1415
                LD L,A
1438
                LD H,(IX+0X11)
1416
                LD H,(IX+0x11)
1439
                LD A,(IX+0)
1417
                LD A,(IX+0)
1440
                ADD A,C
1418
                ADD A,C
1441
                LD E,A
1419
                LD E,A
1442
                LD D,(IX+1)
1420
                LD D,(IX+1)
1443
                PUSH BC
1421
                PUSH BC
Line 1446... Line 1424...
1446
                EXX
1424
                EXX
1447
                LD A,E
1425
                LD A,E
1448
                EXX
1426
                EXX
1449
                AND 1;A
1427
                AND 1;A
1450
                JR Z,SCRUP2
1428
                JR Z,SCRUP2
1451
                LD A,(IX+0X11)
1429
                LD A,(IX+0x11)
1452
                LD H,A
1430
                LD H,A
1453
                AND 7
1431
                AND 7
1454
                CP 7
1432
                CP 7
1455
                JR NZ,SCRUP2
1433
                JR NZ,SCRUP2
1456
;СДВИГ ВВЕРХ ЦВЕТОВОЙ СТРОКИ ПОСЛЕ ПЕРЕНОСА 7 ЛИНИЙ ЗНАКОРЯДА
1434
; сдвиг вверх цветовой строки после переноса 7 линий знакоряда
1457
                LD A,H
1435
                LD A,H
1458
                RRCA
1436
                RRCA
1459
                RRCA
1437
                RRCA
1460
                RRCA
1438
                RRCA
1461
                AND 3
1439
                AND 3
1462
                OR 0X58
1440
                OR 0x58
1463
                LD H,A
1441
                LD H,A
1464
                LD L,(IX+0X10)
1442
                LD L,(IX+0x10)
1465
                LD A,(IX+1)
1443
                LD A,(IX+1)
1466
                RRCA
1444
                RRCA
1467
                RRCA
1445
                RRCA
1468
                RRCA
1446
                RRCA
1469
                AND 3
1447
                AND 3
1470
                OR 0X58
1448
                OR 0x58
1471
                LD D,A
1449
                LD D,A
1472
                LD E,(IX+0)
1450
                LD E,(IX+0)
1473
                PUSH BC
1451
                PUSH BC
1474
                CALL LDIST
1452
                CALL LDIST
1475
                POP BC
1453
                POP BC
Line 1478... Line 1456...
1478
                DJNZ SCRUP1
1456
                DJNZ SCRUP1
1479
SCRUP3          POP IX
1457
SCRUP3          POP IX
1480
                POP IY
1458
                POP IY
1481
                RET
1459
                RET
1482
 
1460
 
1483
;СДВИГ ОКНА ВВЕРХ (TXT)
1461
; сдвиг окна вверх (TXT)
1484
TSCRUP          PUSH IY
1462
TSCRUP          PUSH IY
1485
                PUSH IX
1463
                PUSH IX
1486
                EVOPORT WIN_P3,0XF7
1464
        EVOPORT WIN_P3,VMODE7_0
1487
                LD A,(IX+2)
1465
                LD A,(IX+_V_SIZE)
1488
                SUB 3
1466
                SUB 3
1489
                LD B,A                          ;СКОЛЬКО СТРОК В ОКНЕ СКРОЛЛИРОВАТЬ
1467
                LD B,A                          ; сколько строк в окне скроллировать
1490
                LD C,(IX+3)                     ;ШИРИНА ОКНА
1468
                LD C,(IX+_H_SIZE)               ; ширина окна
1491
                LD D,(IX+0)                     ;X КООРДИНАТА ЛЕВОГО ВЕРХНЕГО УГЛА ДЛЯ СКРОЛЛЕРА
1469
                LD D,(IX+_X_COORD)              ; X координата левого верхнего угла для скроллера
1492
                LD E,(IX+1)
1470
                LD E,(IX+_Y_COORD)
1493
                INC E                           ;Y КООРДИНАТА ЛЕВОГО ВЕРХНЕГО УГЛА ДЛЯ СКРОЛЛЕРА
1471
                INC E                           ; Y координата левого верхнего угла для скроллера
1494
                LD A,E
1472
                LD A,E
1495
                ADD A,A
1473
                ADD A,A
1496
                ADD A,A
1474
                ADD A,A
1497
                EXX
1475
                EXX
1498
                LD C,A
1476
                LD C,A
1499
                LD B,0
1477
                LD B,0
1500
                LD IX,TBUFTSC
1478
                LD IX,TBUFTSC
1501
                ADD IX,BC                       ;IX=СПИСОК АДРЕСОВ НАЧАЛ СТРОК ДЛЯ СКРОЛЛЕРА
1479
                ADD IX,BC                       ; IX=список адресов начал строк для скроллера
1502
                EXX
1480
                EXX
1503
                LD A,C
1481
                LD A,C
1504
                AND 0XFE
1482
                AND 0xFE
1505
                NEG
1483
                NEG
1506
                LD H,A                          ;ШИРИНА ДЛЯ ЛЕВЫЙ СИМВОЛОВ
1484
                LD H,A                          ; ширина для левый символов
1507
                LD L,A                          ;ШИРИНА ДЛЯ ПРАВЫХ СИМВОЛОВ
1485
                LD L,A                          ; ширина для правых символов
1508
                BIT 0,C
1486
                BIT 0,C
1509
                JR Z,TSCRUP1                    ;ЕСЛИ ШИРИНА ЧЕТНАЯ, НИЧЕГО НЕ ДЕЛАЕМ
1487
                JR Z,TSCRUP1                    ; если ширина четная, ничего не делаем
1510
                DEC L
1488
                DEC L
1511
                DEC L
1489
                DEC L
1512
                BIT 0,D
1490
                BIT 0,D
1513
                JR NZ,TSCRUP1
1491
                JR NZ,TSCRUP1
1514
                LD A,H
1492
                LD A,H
Line 1521... Line 1499...
1521
                LD E,A
1499
                LD E,A
1522
TSCRUP2         LD A,H
1500
TSCRUP2         LD A,H
1523
                EXX
1501
                EXX
1524
                LD IY,LDI_END
1502
                LD IY,LDI_END
1525
                LD E,A
1503
                LD E,A
1526
                LD D,0XFF
1504
                LD D,0xFF
1527
                ADD IY,DE
1505
                ADD IY,DE
1528
                EXX
1506
                EXX
1529
                LD A,E
1507
                LD A,E
1530
                EXX
1508
                EXX
1531
                LD E,A
1509
                LD E,A
Line 1534... Line 1512...
1534
                LD H,(IX+5)
1512
                LD H,(IX+5)
1535
                LD A,E
1513
                LD A,E
1536
                ADD A,(IX+0)
1514
                ADD A,(IX+0)
1537
                LD E,A
1515
                LD E,A
1538
                LD D,(IX+1)
1516
                LD D,(IX+1)
1539
                CALL LDIST                      ;ПЕРЕНОС МОНОХРОМНОЙЙ СТРОКИ 
1517
                CALL LDIST                      ; перенос монохромнойй строки
1540
                EXX
1518
                EXX
1541
                LD A,E
1519
                LD A,E
1542
                EXX
1520
                EXX
1543
                LD E,A
1521
                LD E,A
1544
                ADD A,(IX+4+100)
1522
                ADD A,(IX+4+100)
Line 1546... Line 1524...
1546
                LD H,(IX+5+100)
1524
                LD H,(IX+5+100)
1547
                LD A,E
1525
                LD A,E
1548
                ADD A,(IX+0+100)
1526
                ADD A,(IX+0+100)
1549
                LD E,A
1527
                LD E,A
1550
                LD D,(IX+1+100)
1528
                LD D,(IX+1+100)
1551
                CALL LDIST                      ;ПЕРЕНОС ЦВЕТНОЙ СТРОКИ
1529
                CALL LDIST                      ; перенос цветной строки
1552
                EXX
1530
                EXX
1553
                LD A,L
1531
                LD A,L
1554
                EXX
1532
                EXX
1555
                LD IY,LDI_END
1533
                LD IY,LDI_END
1556
                LD E,A
1534
                LD E,A
1557
                LD D,0XFF
1535
                LD D,0xFF
1558
                ADD IY,DE
1536
                ADD IY,DE
1559
                EXX
1537
                EXX
1560
                LD A,D
1538
                LD A,D
1561
                EXX
1539
                EXX
1562
                LD E,A
1540
                LD E,A
Line 1565... Line 1543...
1565
                LD H,(IX+7)
1543
                LD H,(IX+7)
1566
                LD A,E
1544
                LD A,E
1567
                ADD A,(IX+2)
1545
                ADD A,(IX+2)
1568
                LD E,A
1546
                LD E,A
1569
                LD D,(IX+3)
1547
                LD D,(IX+3)
1570
                CALL LDIST                      ;ПЕРЕНОС МОНОХРОМНОЙ СТРОКИ
1548
                CALL LDIST                      ; перенос монохромной строки
1571
                EXX
1549
                EXX
1572
                LD A,D
1550
                LD A,D
1573
                EXX
1551
                EXX
1574
                LD E,A
1552
                LD E,A
1575
                ADD A,(IX+6+100)
1553
                ADD A,(IX+6+100)
Line 1577... Line 1555...
1577
                LD H,(IX+7+100)
1555
                LD H,(IX+7+100)
1578
                LD A,E
1556
                LD A,E
1579
                ADD A,(IX+2+100)
1557
                ADD A,(IX+2+100)
1580
                LD E,A
1558
                LD E,A
1581
                LD D,(IX+3+100)
1559
                LD D,(IX+3+100)
1582
                CALL LDIST                      ;ПЕРЕНОС СТРОКИ ЦВЕТА
1560
                CALL LDIST                      ; перенос строки цвета
1583
                REPT 4
1561
        REPT 4
1584
                INC IX
1562
                INC IX
1585
                ENDM
1563
        ENDM
1586
                EXX
1564
                EXX
1587
                DJNZ TSCRUP2
1565
                DJNZ TSCRUP2
Line 1589... Line 1567...
1589
                POP IY
1567
                POP IY
1590
                RET
1568
                RET
1591
 
1569
 
1592
;0 2 4 6 8
1570
;0 2 4 6 8
1593
; 1 3 5 7 9
1571
; 1 3 5 7 9
1594
; =====         3 НЕЧЕТ + 2 ЧЕТ
1572
; =====         3 нечет + 2 чет
1595
;=====          2 НЕЧЕТ + 3 ЧЕТ
1573
;=====          2 нечет + 3 чет
1596
; ====          2 НЕЧЕТ + 2 ЧЕТ
1574
; ====          2 нечет + 2 чет
1597
;====           2 НЕЧЕТ + 2 ЧЕТ
1575
;====           2 нечет + 2 чет
1598
;0 2 4 6 8
1576
;0 2 4 6 8
1599
; 1 3 5 7 9
1577
; 1 3 5 7 9
1600
 
1578
 
1601
;C200    C201    C202    C203    C204
1579
;C200    C201    C202    C203    C204
1602
;    D200    D201    D202    D203    D204
1580
;    D200    D201    D202    D203    D204
1603
;----------------------------------------
1581
;----------------------------------------
1604
;C240    C241    C242    C243    C244
1582
;C240    C241    C242    C243    C244
1605
;    D240    D241    D242    D243    D244
1583
;    D240    D241    D242    D243    D244
1606
 
1584
 
1607
;СДВИГ ОКНА ВНИЗ
1585
; сдвиг окна вниз
1608
TSCRDN          DI
1586
TSCRDN          DI
1609
                PUSH IX
1587
                PUSH IX
1610
                PUSH IY
1588
                PUSH IY
1611
                EVOPORT WIN_P3,0XF7
1589
        EVOPORT WIN_P3,VMODE7_0
1612
                LD A,(IX+2)
1590
                LD A,(IX+_V_SIZE)
1613
                SUB 3
1591
                SUB 3
1614
                LD B,A                          ;СКОЛЬКО СТРОК В ОКНЕ СКРОЛЛИРОВАТЬ
1592
                LD B,A                          ; сколько строк в окне скроллировать
1615
                LD C,(IX+3)                     ;ШИРИНА ОКНА
1593
                LD C,(IX+_H_SIZE)               ; ширина окна
1616
                LD D,(IX+0)                     ;X КООРДИНАТА ЛЕВОГО ВЕРХНЕГО УГЛА ДЛЯ СКРОЛЛЕРА
1594
                LD D,(IX+_X_COORD)              ; X координата левого верхнего угла для скроллера
1617
                LD A,(IX+1)
1595
                LD A,(IX+_Y_COORD)
1618
                ADD A,(IX+2)
1596
                ADD A,(IX+_V_SIZE)
1619
                SUB 2
1597
                SUB 2
1620
                LD E,A                          ;Y КООРДИНАТА ЛЕВОГО ВЕРХНЕГО УГЛА ДЛЯ СКРОЛЛЕРА
1598
                LD E,A                          ; Y координата левого верхнего угла для скроллера
1621
                ADD A,A
1599
                ADD A,A
1622
                ADD A,A
1600
                ADD A,A
1623
                EXX
1601
                EXX
1624
                LD C,A
1602
                LD C,A
1625
                LD B,0
1603
                LD B,0
1626
                LD IX,TBUFTSC
1604
                LD IX,TBUFTSC
1627
                ADD IX,BC                       ;IX=СПИСОК АДРЕСОВ НАЧАЛ СТРОК ДЛЯ СКРОЛЛЕРА
1605
                ADD IX,BC                       ; IX=список адресов начал строк для скроллера
1628
                EXX
1606
                EXX
1629
                LD A,C
1607
                LD A,C
1630
                AND 0XFE
1608
                AND 0xFE
1631
                NEG
1609
                NEG
1632
                LD H,A                          ;ШИРИНА ДЛЯ ЛЕВЫЙ СИМВОЛОВ
1610
                LD H,A                          ; ширина для левый символов
1633
                LD L,A                          ;ШИРИНА ДЛЯ ПРАВЫХ СИМВОЛОВ
1611
                LD L,A                          ; ширина для правых символов
1634
                BIT 0,C
1612
                BIT 0,C
1635
                JR Z,TSCRDN1
1613
                JR Z,TSCRDN1
1636
                DEC L
1614
                DEC L
1637
                DEC L
1615
                DEC L
1638
                BIT 0,D
1616
                BIT 0,D
Line 1643... Line 1621...
1643
TSCRDN1         LD A,D
1621
TSCRDN1         LD A,D
1644
                SRL A
1622
                SRL A
1645
                LD D,A
1623
                LD D,A
1646
                ADC A,0
1624
                ADC A,0
1647
                LD E,A
1625
                LD E,A
-
 
1626
TSCRDN2
1648
TSCRDN2         REPT 4
1627
        REPT 4
1649
                DEC IX
1628
                DEC IX
1650
                ENDM
1629
        ENDM
1651
                LD A,H
1630
                LD A,H
1652
                EXX
1631
                EXX
1653
                LD IY,LDI_END
1632
                LD IY,LDI_END
1654
                LD E,A
1633
                LD E,A
1655
                LD D,0XFF
1634
                LD D,0xFF
1656
                ADD IY,DE
1635
                ADD IY,DE
1657
                EXX
1636
                EXX
1658
                LD A,E
1637
                LD A,E
1659
                EXX
1638
                EXX
1660
                LD E,A
1639
                LD E,A
Line 1663... Line 1642...
1663
                LD H,(IX+1)
1642
                LD H,(IX+1)
1664
                LD A,E
1643
                LD A,E
1665
                ADD A,(IX+4)
1644
                ADD A,(IX+4)
1666
                LD E,A
1645
                LD E,A
1667
                LD D,(IX+5)
1646
                LD D,(IX+5)
1668
                CALL LDIST                      ;ПЕРЕНОС МОХОРОМНОЙ СТРОКИ
1647
                CALL LDIST                      ; перенос мохоромной строки
1669
                EXX
1648
                EXX
1670
                LD A,E
1649
                LD A,E
1671
                EXX
1650
                EXX
1672
                LD E,A
1651
                LD E,A
1673
                ADD A,(IX+0+100)
1652
                ADD A,(IX+0+100)
Line 1675... Line 1654...
1675
                LD H,(IX+1+100)
1654
                LD H,(IX+1+100)
1676
                LD A,E
1655
                LD A,E
1677
                ADD A,(IX+4+100)
1656
                ADD A,(IX+4+100)
1678
                LD E,A
1657
                LD E,A
1679
                LD D,(IX+5+100)
1658
                LD D,(IX+5+100)
1680
                CALL LDIST                      ;ПЕРЕНОС ЦВЕТНОЙ СТРОКИ
1659
                CALL LDIST                      ; перенос цветной строки
1681
                EXX
1660
                EXX
1682
                LD A,L
1661
                LD A,L
1683
                EXX
1662
                EXX
1684
                LD IY,LDI_END
1663
                LD IY,LDI_END
1685
                LD E,A
1664
                LD E,A
1686
                LD D,0XFF
1665
                LD D,0xFF
1687
                ADD IY,DE
1666
                ADD IY,DE
1688
                EXX
1667
                EXX
1689
                LD A,D
1668
                LD A,D
1690
                EXX
1669
                EXX
1691
                LD E,A
1670
                LD E,A
Line 1694... Line 1673...
1694
                LD H,(IX+3)
1673
                LD H,(IX+3)
1695
                LD A,E
1674
                LD A,E
1696
                ADD A,(IX+6)
1675
                ADD A,(IX+6)
1697
                LD E,A
1676
                LD E,A
1698
                LD D,(IX+7)
1677
                LD D,(IX+7)
1699
                CALL LDIST                      ;ПЕРЕНОС МОНОХРОМНОЙ СТРОКИ
1678
                CALL LDIST                      ; перенос монохромной строки
1700
                EXX
1679
                EXX
1701
                LD A,D
1680
                LD A,D
1702
                EXX
1681
                EXX
1703
                LD E,A
1682
                LD E,A
1704
                ADD A,(IX+2+100)
1683
                ADD A,(IX+2+100)
Line 1706... Line 1685...
1706
                LD H,(IX+3+100)
1685
                LD H,(IX+3+100)
1707
                LD A,E
1686
                LD A,E
1708
                ADD A,(IX+6+100)
1687
                ADD A,(IX+6+100)
1709
                LD E,A
1688
                LD E,A
1710
                LD D,(IX+7+100)
1689
                LD D,(IX+7+100)
1711
                CALL LDIST                      ;ПЕРЕНОС ЦВЕТНОЙ СТРОКИ
1690
                CALL LDIST                      ; перенос цветной строки
1712
                EXX
1691
                EXX
1713
                DJNZ TSCRDN2
1692
                DJNZ TSCRDN2
1714
                POP IY
1693
                POP IY
1715
                POP IX
1694
                POP IX
1716
                RET
1695
                RET
1717
 
1696
 
1718
SCRDN           LD HL,FLAGS
1697
SCRDN           LD HL,SYSFLAGS
1719
                BIT B_VIDEO_MODE,(HL)
1698
                BIT SYSFLAGS.B_VIDEO_MODE,(HL)
1720
                JP NZ,TSCRDN
1699
                JP NZ,TSCRDN
1721
;СКРОЛЛ ОКНА ВВЕРХ (ZX)
1700
; скролл окна вверх (ZX)
1722
                PUSH IX
1701
                PUSH IX
1723
                PUSH IY
1702
                PUSH IY
1724
                EXX
1703
                EXX
1725
                LD A,(SCROLL_MODE)
1704
                LD A,(SCROLL_MODE)
1726
                LD E,A
1705
                LD E,A
1727
                EXX
1706
                EXX
1728
                LD A,(IX+2)
1707
                LD A,(IX+_V_SIZE)
1729
                ADD A,(IX+1)
1708
                ADD A,(IX+_Y_COORD)
1730
                SUB 2
1709
                SUB 2
1731
                LD L,A
1710
                LD L,A
1732
                CALL USTAN
1711
                CALL USTAN
1733
                DEC IX
1712
                DEC IX
1734
                DEC IX
1713
                DEC IX
1735
SCRDN1          LD A,(IX+0)
1714
SCRDN1          LD A,(IX+0)
1736
                ADD A,C
1715
                ADD A,C
1737
                LD L,A
1716
                LD L,A
1738
                LD H,(IX+1)
1717
                LD H,(IX+1)
1739
                LD A,(IX+0X10)
1718
                LD A,(IX+0x10)
1740
                ADD A,C
1719
                ADD A,C
1741
                LD E,A
1720
                LD E,A
1742
                LD D,(IX+0X11)
1721
                LD D,(IX+0x11)
1743
                PUSH BC
1722
                PUSH BC
1744
                CALL LDIST
1723
                CALL LDIST
1745
                POP BC
1724
                POP BC
1746
                EXX
1725
                EXX
1747
                LD A,E
1726
                LD A,E
Line 1756... Line 1735...
1756
                LD A,H
1735
                LD A,H
1757
                RRCA
1736
                RRCA
1758
                RRCA
1737
                RRCA
1759
                RRCA
1738
                RRCA
1760
                AND 3
1739
                AND 3
1761
                OR 0X58
1740
                OR 0x58
1762
                LD H,A
1741
                LD H,A
1763
                LD L,(IX+0)
1742
                LD L,(IX+0)
1764
                LD A,(IX+0X11)
1743
                LD A,(IX+0x11)
1765
                RRCA
1744
                RRCA
1766
                RRCA
1745
                RRCA
1767
                RRCA
1746
                RRCA
1768
                AND 3
1747
                AND 3
1769
                OR 0X58
1748
                OR 0x58
1770
                LD D,A
1749
                LD D,A
1771
                LD E,(IX+0X10)
1750
                LD E,(IX+0x10)
1772
                PUSH BC
1751
                PUSH BC
1773
                CALL LDIST
1752
                CALL LDIST
1774
                POP BC
1753
                POP BC
1775
SCRDN2          DEC IX
1754
SCRDN2          DEC IX
1776
                DEC IX
1755
                DEC IX
1777
                DJNZ SCRDN1
1756
                DJNZ SCRDN1
1778
                POP IY
1757
                POP IY
1779
                POP IX
1758
                POP IX
1780
                RET
1759
                RET
1781
 
1760
 
1782
;УСТАНОВКИ ДЛЯ СКРОЛЛЕРА ОКНА
1761
; установки для скроллера окна
1783
USTAN           LD A,(IX+3)
1762
USTAN           LD A,(IX+_H_SIZE)
1784
                ADD A,A
1763
                ADD A,A
1785
                LD E,A
1764
                LD E,A
1786
                LD A,L
1765
                LD A,L
1787
                LD D,0
1766
                LD D,0
1788
                LD HL,LDI_END
1767
                LD HL,LDI_END
1789
                AND A
1768
                AND A
1790
                SBC HL,DE
1769
                SBC HL,DE
1791
                PUSH HL
1770
                PUSH HL
1792
                POP IY
1771
                POP IY
1793
                LD C,(IX+0)
1772
                LD C,(IX+_X_COORD)
1794
                LD L,A
1773
                LD L,A
1795
                LD A,(IX+2)
1774
                LD A,(IX+_V_SIZE)
1796
                SUB 3
1775
                SUB 3
1797
                ADD A,A
1776
                ADD A,A
1798
                ADD A,A
1777
                ADD A,A
1799
                ADD A,A
1778
                ADD A,A
1800
                LD B,A
1779
                LD B,A
Line 1806... Line 1785...
1806
                EX DE,HL
1785
                EX DE,HL
1807
                ADD IX,DE
1786
                ADD IX,DE
1808
                ADD IX,DE
1787
                ADD IX,DE
1809
                RET
1788
                RET
1810
 
1789
 
1811
LDIST           DB 0XFD
1790
LDIST           JP (IY)
1812
                JP (HL)
-
 
1813
                REPT 80
1791
        REPT 80
1814
                LDI
1792
                LDI
1815
                ENDM
1793
        ENDM
1816
LDI_END         RET
1794
LDI_END         RET
1817
 
1795