Subversion Repositories pentevo

Rev

Rev 627 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
627 savelij 1
 
1120 savelij 2
; LAST UPDATE: 17.10.2023 savelij
627 savelij 3
 
4
;               PHASE 0XEA00-0X31
5
; FLAG'S BIT LAYOUT
6
_VMODE EQU  0
7
_C_STA EQU  1
8
_FLEX_C EQU 2
9
 
10
_CAPS  EQU  4
11
_RUS   EQU  5
12
_K_SS  EQU  6
13
_K_CS  EQU  7
14
 
15
; FLAG1'S BIT LAYOUT
16
_OVER  EQU  0
17
_TRANS EQU  1
18
_FASTR EQU  2
19
_BREAK EQU  3
20
_ROLL  EQU  4
21
 
22
UND_MUX
23
IRG_FUN         XOR A
24
                RET
25
 
26
; CONVERT WIN-RELATIVE TO ABS & CHECK
27
CHKCOR: LD   HL,(W_X1)
28
       ADD  HL,BC
29
       LD   B,H
30
       LD   C,L
31
_CHKCO: OR   A          ; ONLY CHECK
32
       EX   AF,AF'
33
       LD   A,(W_X1)
34
       CP   C
35
       JR   Z,_CHS1
36
       JR   NC,_CHX
37
_CHS1: LD   A,(W_X2)
38
       CP   C
39
       JR   NC,CHSH1
40
_CHX:  LD   C,A
41
       EX   AF,AF'
42
       SCF
43
       EX   AF,AF'
44
CHSH1: LD   A,(W_Y1)
45
       CP   B
46
       JR   Z,_CHS2
47
       JR   NC,_CHY
48
_CHS2: LD   A,(W_Y2)
49
       CP   B
50
       JR   NC,CHSH2
51
_CHY:  LD   B,A
52
       SCF
53
       RET
54
 
55
CHSH2: EX   AF,AF'
56
       RET
57
 
58
; SET CURSOR (W-RELATIVE & CHECK)
59
GOXY_:  CALL CHKCOR
60
_GOXY: LD   (CUR_X),BC ;SET ABS & NO CHECK
61
       CALL GOTO_XY;EV_COR
62
;       LD   (SCR_AD),HL
63
       RET
64
 
65
CUR_IN
66
;       DI
67
       DEC  (IX-_C_CNT)
68
       RET  NZ
69
       LD   A,(C_MAX)
70
       LD   (C_CNT),A
71
       LD   A,(FLAG)
72
       XOR  2         ;C_STAT BIT
73
       LD   (FLAG),A
74
                EX AF,AF'
75
       LD   A,(C_ACT)
76
       OR   A
77
       RET  NZ
78
                EX AF,AF'
79
                RRA
80
                AND 1
81
                CALL CURS_OO
82
                RET
83
;C_INV: LD   HL,C_I
84
;SW:    LD   (SW_DO+1),HL
85
;       LD   HL,(SCR_AD)
86
;       LD   DE,SV_ARE
87
;       JP   SW_C
88
 
89
CUR_AC1         LD (IX-_C_ACT),1
90
CUR_AC
91
;    DI
92
       DEC  (IX-_C_ACT)
93
       JR   Z,CA_SH
94
       RET  P
95
       LD   (IX-_C_ACT),0
96
       RET
97
 
98
CA_SH           BIT _C_STA,(IX-_FLAG)
99
                RET Z
100
                LD A,1
101
                CALL CURS_OO
102
                SET _C_STA,(IX-_FLAG)
103
                RET
104
; LD   HL,C_A
105
;       CALL SW
106
;       BIT  _C_STA,(IX-_FLAG)
107
;       JR   NZ,C_INV
108
;       RET
109
 
110
CUR_PA
111
;    DI
112
       LD   A,(C_ACT)
113
       INC  A
114
       LD   (C_ACT),A
115
       DEC  A
116
       RET  NZ
117
                BIT _C_STA,(IX-_FLAG)
118
                RET Z
119
                XOR A
120
                CALL CURS_OO
121
                RES _C_STA,(IX-_FLAG)
122
                RET
123
;       LD   HL,C_P
124
;       JR   SW
125
 
126
; ENCODING ROUTINE
127
ENCODE:LD   B,A
128
       RLCA
129
       RLCA
130
       RLCA
131
       AND  7
132
       LD   HL,SG_ENC
133
       CALL ADD_HL_A
134
       LD   A,(HL)
135
       BIT  4,B
136
       JR   Z,ESH
137
       RLCA
138
       RLCA
139
       RLCA
140
       RLCA
141
ESH:   AND  0F0H
142
       XOR  B
143
       AND  0F0H
144
       XOR  B
145
       RET
146
 
147
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
148
;     PROTECTION
149
ROM_CHK
150
;               IF HACK_RBIOS=0
151
;               LD BC,3FFFH
152
;               ELSE
153
                RET
154
                DW 0X3FFF
155
;               ENDIF
156
       XOR  A
157
       LD   H,A
158
       LD   L,A
159
RC_LP: ADD  A,(HL)
160
       ADC  A,0
161
       INC  HL
162
       RRCA
163
       XOR  0B9H
164
       DEC  BC
165
       LD   D,A
166
       LD   A,B
167
       OR   C
168
       LD   A,D
169
       JR   NZ,RC_LP
170
       DEC  A
171
       RET  Z
172
       LD   A,R
173
       LD   L,A
174
       LD   H,0DCH                     ; IS BDOS ADRESS
175
       INC  (HL)
176
       AND  7FH
177
       RET  NZ
178
PROT       LD   HL,MES_RCK
179
       XOR A
180
RC_PLP:XOR  (HL)
181
       INC  HL
182
       CALL NZ,CONOUT
183
       JR   NZ,RC_PLP
184
       LD   A,1
185
       RST  18H
186
RC_HLT:LD   HL,PAL_BUF
187
       LD   B,16
188
RC__1: INC  (HL)
189
       INC  HL
190
       DJNZ RC__1
191
       CALL SET_PAL
192
       LD   B,25
193
       EI
194
RC__2: HALT
195
       DJNZ RC__2
196
       JR   RC_HLT
197
MES_RCK:
198
       DB   0DH,16H,0AH,58H,69H,43H,11H,13H,02H,08H,0EH,01H,4AH,0EH
199
       DB   69H,69H,48H,09H,0DH,18H,11H,01H,4AH,0EH,70H,22H,17H,16H
200
       DB   00H,53H,72H,17H,16H,16H,11H,74H,54H,1BH,4FH,43H,0CH,01H
201
       DB   1AH,1DH,07H,1BH,10H,4BH,00H,00H,2EH
202
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
203
 
204
;--------------------------------
205
; ROLL WINDOW UP
206
ROLL: BIT  _ROLL,(IX-_FLAG1)
207
       RET  NZ
208
       XOR  A
209
       JR   ROL_1
210
 
211
;--------------------------------
212
; WROLL PROCEDURE. DIRECTION: 0-UP, 1-DOWN, 2-RIGHT, 3-LEFT
213
WROLL: CALL HEX_CVT
214
       DB   6
215
       DB   4
216
       RET  C
217
ROL_1           LD   BC,(W_X1)
218
ROL_2: LD   HL,(W_X2)
219
       SBC  HL,BC
220
       INC  H
221
       INC  L
222
       EX   DE,HL
223
       JP ROL_WIND
224
 
225
;       OR   A
226
;       JP   Z,ROLL
227
;       DEC  A
228
;       JP   Z,UROLL                     ; A=1 - RIGHT, A=2 - LEFT
229
;       RRA
230
;       CALL C,PRP_INS                   ; PROC'S PRP_INS DON'T CHANGE CF
231
;       LD   C,(IX-_W_X1)
232
;       JR   C,ROL_W
233
;       CALL PRP_DEL
234
;       LD   C,(IX-_W_X2)
235
;ROL_W: LD   B,(IX-_W_Y1)
236
;       CALL EV_COR
237
;       LD   A,(W_Y2)
238
;       SUB  (IX-_W_Y1)
239
;       RET  C
240
;       INC  A
241
;       LD   B,A
242
;       LD   C,(IX-_W_X1)
243
;ROL_LW:LD   A,(W_X2)
244
;       SUB  C
245
;       RET  C
246
;       INC  A
247
;       LD   C,A
248
;       LD   IY,ARR_CO
249
;       JP   SW_RRL
250
 
251
;-------------------------------
252
; INS/DEL CHAR PROCS
253
;I_CH:  CALL PRP_INS
254
;       JR   ROL_L
255
 
256
;D_CH:  CALL PRP_DEL
257
;       LD   C,(IX-_W_X2)
258
;ROL_L: CALL EV_COR
259
;       LD   C,(IX-_CUR_X)
260
;       LD   B,1
261
;       JR   ROL_LW
262
;-------------------------------
263
; INS/DEL CHAR PROCS
264
I_CH:  LD   D,2
265
       DB   21H         ; LD HL,NN
266
D_CH:  LD   D,3
267
       CALL _PRP_L
268
       JP ROL_WIND
269
 
270
_PRP_L:LD   A,(W_X2)
271
       SUB  C
272
       LD   E,A
273
       INC  E
274
       LD   A,D
275
       LD   D,1
276
       RET
277
 
278
;--------------------------------
279
;CLEAR TO END OF SCREEN
280
CLREOL:
281
       CALL _PRP_L
282
_CLR:  LD   A,' '
283
       JP CLW_WIND
284
;       LD   HL,40
285
;       LD   (TMP_W),HL
286
;       LD   HL,FIL
287
;       LD   (SW_CLR+1),HL
288
;       LD   HL,(SCR_AD)
289
;       LD   A,(W_X2)
290
;       SUB  (IX-_CUR_X)
291
;       RET  C
292
;       INC  A
293
;       LD   C,A
294
;CESW1: LD   B,8
295
;       LD   IY,ARR_CO
296
;       JP   SW_CLL
297
 
298
; INIT ENCODER
299
ENC_INIT:
300
        LD  HL,ENC_ITAB
301
        LD  DE,SG_ENC
302
        LD  BC,12
303
        LDIR
304
        RET
305
ENC_ITAB:
306
        DB   01H,23H,45H,67H
307
        DB   01H,23H,0EFH,0CDH
308
        DB   01H,23H,45H,67H
309
 
310
;HOME CURSOR
311
PHOME: CALL ROM_CHK
312
HOME_  LD   BC,0
313
       JP   GOXY_
314
 
315
;RESET WHOLE SCREEN
316
C_INIT_:                 ; CONSOLE INIT (A-DEEP)
317
       CALL RESET
318
 
319
    ; SET COLOR '70'
320
       LD   DE,'07'
321
       CALL SET_COLOR
322
    ; SET ENCODER
323
       CALL ENC_INIT
324
    ; TURN ON CURSOR
325
       LD   A,(C_ACT)
326
       OR   A
327
       CALL NZ,CUR_AC1
328
    ; SET LAT MODE & CAPS
329
       RES  _RUS,(IX-_FLAG)
330
       CALL RL_BRD
331
    ; RESET ALL CONIO FLAG
332
       LD   (IX-_FLAG1),0
333
 
334
CLRALL:
335
       LD   (IX-_W_X1),0
336
       LD   (IX-_W_Y1),0
337
       LD   (IX-_W_X2),79
338
       LD   (IX-_W_Y2),24
339
 
340
CLRPG: CALL HOME_
341
       LD   BC,(W_X1)
342
 
343
;CLEAR REST OF PAGE
344
CLR_EOP:
345
       CALL CLREOL
346
;/*
347
;       LD   HL,(RTIME)
348
        ;#IFNDEF ATM
349
;       LD   DE,-0F4BH
350
        ;#ELSE
351
;       LD   DE,-0EE8H
352
        ;#ENDIF
353
;       ADD  HL,DE
354
;       LD   DE,-5
355
;       ADD  HL,DE
356
;       JR   NC,__1
357
;       INC  (IX-_HSIGN)
358
;__1:
359
;*/
360
       LD   B,(IX-_CUR_Y)
361
       INC  B
362
       LD   C,(IX-_W_X1)
363
       LD   HL,(W_X2)
364
       OR   A
365
       SBC  HL,BC
366
       INC  H
367
       RET  Z
368
       INC  L
369
       EX   DE,HL
370
       JP   _CLR
371
 
372
;RESET WHOLE SCREEN
373
;CLRALL: LD   (IX-_W_X1),0
374
;       LD   (IX-_W_X2),79
375
;       LD   (IX-_W_Y1),0
376
;       LD   (IX-_W_Y2),24
377
;       BIT  _VMODE,(IX-_FLAG)
378
;       JR   NZ,DSX
379
;       LD   (IX-_W_X2),39
380
;DSX:
381
;CLRPG: CALL HOME_
382
 
383
;CLEAR REST OF PAGE
384
;CLR_EOP:
385
;       CALL CLREOL
386
;       LD   A,(W_Y2)
387
;       SUB  (IX-_CUR_Y)
388
;       RET  C
389
;       RET  Z
390
;       LD   B,A
391
;       LD   A,(W_X2)
392
;       SUB  (IX-_W_X1)
393
;       INC  A
394
;       LD   C,A
395
;       PUSH BC
396
;       LD   B,(IX-_CUR_Y)
397
;       INC  B
398
;       LD   C,(IX-_W_X1)
399
;       CALL EV_COR
400
;       POP  BC
401
;CLLP:  PUSH HL
402
;       PUSH BC
403
;       CALL $;CESW1
404
;       POP  BC
405
;       POP  HL
406
;       LD   DE,320
407
;       ADD  HL,DE
408
;       DJNZ CLLP
409
;       RET
410
 
411
; OUT CHAR & ADVANCE POSITION
412
PUT_CH:
413
       CALL ENCODE
414
_P_CHA: CALL _OUT_CH_
415
__PCH: LD   A,(CUR_X)
416
       CP   (IX-_W_X2)
417
       JR   NC,N_POS
418
       INC  A
419
       LD   (CUR_X),A
420
                JP ADV_POS
421
;       CALL ADV
422
;       LD   (SCR_AD),HL
423
;       RET
424
 
425
N_POS: LD   B,(IX-_CUR_Y)
426
       LD   C,(IX-_W_X1)
427
N_POS1: INC  B
428
       CALL _CHKCO
429
       PUSH BC
430
       CALL C,ROLL
431
       POP  BC
432
_GOXY_: JP  _GOXY
433
 
434
 
435
;OUTPUT CHAR
436
OUT_CH: CP  " "
437
       JP   NC,PUT_CH
438
       LD   BC,(CUR_X)
439
       CALL HEX_CVT1
440
       DB   CCH_L*8
441
CCH_T: DEFB 0DH,0AH,0EH,0FH,1BH,7,8,9
442
CCH_L  EQU  $-CCH_T
443
       RET
444
 
445
       NOP
446
       JR   TAB_P
447
       JR   BS_P
448
       JR   BELL_P
449
       JR   ESC_P
450
       JR   DC1_P
451
       JR   DC3_P
452
       JR   N_POS1
453
 
454
CR_P:  LD   C,(IX-_W_X1)
455
                JR   _GOXY_
456
 
457
DC1_P: SET  _RUS,(IX-_FLAG)
458
                LD A,1
459
                CALL KB_SET_RUS
460
       LD   HL,ENC_SI
461
DCSH:  LD   DE,SG_ENC
462
       LD   BC,4
463
       LDIR
464
       JP   RL_BRD
465
 
466
DC3_P: RES  _RUS,(IX-_FLAG)
467
                XOR A
468
                CALL KB_SET_RUS
469
       LD   HL,ENC_SO
470
       JR   DCSH
471
 
472
ESC_P: LD   HL,ELET_P
473
SET_SW: LD   (OUT_SW+1),HL
474
       RET
475
 
476
TAB_P: LD   A," "
477
       CALL _P_CHA
478
       LD   A,(CUR_X)
479
       AND  7
480
       JR   NZ,TAB_P
481
       RET
482
 
483
BS_P:  DEC  C
484
       CALL _CHKCO
485
                JR   NC,_GOXY_
486
       LD   C,(IX-_W_X2)
487
       DEC  B
488
       CALL _CHKCO
489
                JR   NC,_GOXY_
490
       LD   B,(IX-_W_Y2)
491
                JR   _GOXY_
492
 
493
BELL_P: LD   HL,(BEEP_D)
494
BEEP:  LD   A,(BORDER)
495
       LD   C,(IX-_FE_IMG)
496
       DI
497
BPLP:  LD   B,H
498
       OUT  (C),A
499
       DJNZ $
500
       XOR  10H
501
       DEC  L
502
       JR   NZ,BPLP
503
       EI
504
       RET
505
 
506
;ESC SEQUINCE CONTROL ROUTINE
507
ELET_P: SUB  "@"
508
       JR   NC,TST_L
509
RES_OU: LD   HL,OUT_CH
510
                LD (IX-_C_STAT),CS_ERSEC
511
       JR   SET_SW
512
 
513
TST_L: CP   NPAR_L
514
       JR   NC,RES_OU
515
       INC  A
516
       LD   (FUNC),A
517
       DEC  A
518
       LD   HL,NPAR_T
519
       CALL ADD_HL_A
520
       LD   A,(HL)
521
       OR   A
522
       JR   Z,DO_PR
523
ACP_1: LD   HL,PAR1
524
       LD   (FCNT),A
525
       LD   (PAR_PT),HL
526
       LD   HL,ACC_PA
527
       JR   SET_SW
528
 
529
ACC_PA: LD   HL,(PAR_PT)
530
       SUB  " "
531
       JR   NC,AP_OK
532
       LD   (IX-_FUNC),0FFH
533
                LD (IX-_C_STAT),CS_UNPRN
534
AP_OK: LD   (HL),A
535
       INC  HL
536
       LD   (PAR_PT),HL
537
       DEC  (IX-_FCNT)
538
       RET  NZ
539
DO_PR:
540
       LD   HL,OUT_CH
541
       LD   (OUT_SW+1),HL
542
       LD   A,(FUNC)
543
       INC  A
544
       RET  Z
545
       DEC  A
546
       CALL IRG_FUN
547
       LD   BC,(CUR_X)
548
       LD   A,(PAR1)
549
       EX   AF,AF'
550
       LD   A,(FUNC)
551
       CALL _VJMP
552
       DB   NPAR_L+1
553
       DW   RES_OU
554
JPAR_T:DEFW SETP_AUX  ; SET PALLET EXECUTABLE PART
555
       DEFW PUT_CH, UP_P,   DN_P,   RT_P   ; @ABC
556
       DEFW LT_P,   CLRPG,  SET_CO, GRAPH  ; DEFG
557
       DEFW PHOME,  RLF_P,  CLR_EOP,CLREOL ; HIJK
558
       DEFW SET_CA, MODE,   PALLET, PLAY   ; LMNO
559
       DEFW I_CH,   D_CH,   SETENC, I_LIN  ; PQRS
560
       DEFW D_LIN,  BORD_P, GET_ALL,WIND   ; TUVW
561
       DEFW WROLL,  C_GOXY, S_CUR,  CUR_PAR; XYZ[
1120 savelij 562
       DEFW KEY_PA, CUR_LN, SET_MOD,CLRALL ; 0x5C]^_
627 savelij 563
       DEFW SP_AUX, _CUR_PA,_KEY_PA,PRN_SC ; 'ABC
564
 
565
;       LD   B,0
566
;       LD   C,(IX-_FUNC)
567
;       INC  C
568
;       RET  Z
569
;       DEC  C
570
;       LD   HL,JPAR_T
571
;IJMP:  ADD  HL,BC
572
;       ADD  HL,BC
573
;       LD   C,(HL)
574
;       INC  HL
575
;       LD   B,(HL)
576
;       PUSH BC
577
;       LD   BC,(CUR_X)
578
;       LD   A,(PAR1)
579
;       RET
580
 
581
NPAR_T:DEFB 1, 0, 0, 0  ; @ABC
582
       DEFB 0, 0, 2, 0  ; DEFG
583
       DEFB 0, 0, 0, 0  ; HIJK
584
       DEFB 16,1, 1, 1  ; LMNO
585
       DEFB 0, 0, 9, 0  ; PQRS
586
       DEFB 0, 2, 0, 4  ; TUVW
587
       DEFB 1, 2, 1, 1  ; XYZ[
1120 savelij 588
       DEFB 2, 2, 2, 0  ; 0x5C]^_
627 savelij 589
       DEFB 16,1, 2, 16 ; 'AB
590
NPAR_L EQU  $-NPAR_T
591
 
592
GET_ALL:
593
GRAPH:
594
PLAY:  LD   A,-1
595
       RET
596
 
597
UP_P:  DEC  B
598
       CALL _CHKCO
599
       JR   NC,GO
600
       LD   B,(IX-_W_Y2)
601
GO:    JP   _GOXY
602
 
603
DN_P:  INC  B
604
       CALL _CHKCO
605
       JR   NC,GO
606
       LD   B,(IX-_W_Y1)
607
       JR   GO
608
 
609
RT_P:  INC  C
610
       CALL _CHKCO
611
       JR   NC,GO
612
       LD   C,(IX-_W_X1)
613
       JR   GO
614
 
615
LT_P:  DEC  C
616
       CALL _CHKCO
617
       JR   NC,GO
618
       LD   C,(IX-_W_X2)
619
       JR   GO
620
 
621
RLF_P: INC  B
622
       DEC  B
623
       SCF
624
       JR   Z,RLF_SK
625
       DEC  B
626
       CALL _CHKCO
627
RLF_SK:PUSH BC
628
                LD A,1
629
       CALL C,ROL_1
630
       POP  BC
631
       JP   _GOXY
632
 
633
SET_CA
634
SET_CO          LD DE,(PAR1)
635
SET_COLOR:
636
       LD    A,E
637
       LD    BC,(COLOR_P)
638
;PATM 'NI' UC HEX
639
                CALL HEX_CVT
640
                DB 1+4+2*8             ; MATCH 2 LETTER , UPCASE, HEX
641
                DB "NI"                ; N- OLD VALUE, I - INVERT
642
       RET   C          ; NUM OR ERR
643
       NOP
644
       LD    B,A        ; INVERT OR NUM
645
       NOP
646
       LD    A,D        ; IGNORE
647
;PATM 'NI' UC HEX
648
                CALL HEX_CVT
649
                DB 1+4+2*8             ; MATCH 2 LETTER , UPCASE, HEX
650
                DB "NI"                ; N- OLD VALUE, I - INVERT
651
       RET   C          ; NUM OR ERR
652
       NOP
653
       LD    C,A        ; INVERT OR NUM
654
       NOP
655
       LD    (COLOR_P),BC
656
       BIT  7,B                 ; NOT CHANGE
657
       JR   Z,SCHS1
658
       LD   A,C
659
       CALL INVERT
660
       LD   B,A
661
SCHS1: BIT  7,C
662
       JR   Z,SCHS2
663
       LD   A,B
664
       CALL INVERT
665
       LD   C,A
666
SCHS2: CALL PCK
667
       JP   CONV_COL
668
 
669
 
670
PCK:   LD   A,B        ;IN B-INK, C-PAPER
671
       XOR  C         ;OUT A-COLOR
672
       AND  0F8H
673
       XOR  C
674
       RL   C
675
       XOR  C
676
       AND  0EFH
677
       XOR  C
678
       RLA
679
       RLA
680
       RLA
681
       XOR  B
682
       AND  0F8H
683
       XOR  B
684
       RET
685
 
686
SET_MOD:CALL HEX_CVT
687
       DB   1+M_LNG*8
688
_M_S:  DB   "IRBFTO"
689
M_LNG  EQU  $-_M_S
690
       NOP
691
       RET  C
692
       AND  7FH
693
       LD   B,A
694
       INC  B
695
       XOR  A
696
       SCF
697
SM_L:  RLA
698
       DJNZ SM_L
699
       LD   C,A
700
       LD   A,(PAR2)
701
       CALL HEX_CVT
702
       DB   6
703
       DB   2
704
       RET  C
705
       RRA
706
       SBC  A,A
707
       LD   B,(IX-_FLAG1)
708
       XOR  B
709
       AND  C
710
       XOR  B
711
       LD   (FLAG1),A
712
       RET
713
 
714
;MODE PROCEDURE
715
MODE    LD   A,(PAR1)
716
       SUB  '0'-' '
717
       LD   B,A
718
       CALL SET_MODE
719
       LD   (SYS_P),A
720
       CALL SET_SYS
721
 
722
       LD   (IX-_C_ACT),1 ; FLAG 'CURSOR OFF'
723
       LD   H,40H      ; CLEAR PHYSICAL SCREEN
724
       CALL _MD1
725
       LD   H,60H
726
       CALL _MD1
727
       LD   H,0C0H
728
       CALL _MD1
729
       LD   H,0E0H
730
       CALL _MD1
731
       ;CALL TST_RT
732
       LD   A,2
733
       JP   C_INIT_
734
_MD1:  LD   L,0
735
       LD   D,H
736
       LD   E,1
737
       LD   BC,8000-1
738
       LD   (HL),L
739
       LDIR
740
       RET
741
 
742
SET_MODE:
743
       LD   A,(SYS_P)
744
       AND  7!0XFF;NOT 7
745
       DEC  B
746
       JR   Z,MOD_TXT
747
       DEC  B
748
       RET  NZ
749
       OR   2
750
       RET
751
MOD_TXT:
752
       OR   6
753
       RET
754
 
755
 
756
;       BIT  0,(IX-_PAR1)
757
;       LD   HL,ARR_CO
758
;       JR   Z,MD_M
759
;       SET  5,(IX-_FE_IMG)
760
;       SET  _VMODE,(IX-_FLAG)
761
;       LD   DE,ARR_CO+1
762
;       LD   BC,8
763
;       LD   (HL),7
764
;       LDIR
765
;       LD   (HL),0
766
;       LD   BC,7
767
;       LDIR
768
;       LD   HL,$;HI_MOD
769
;MD_SH: LD   DE,SW_C
770
;       LD   BC,SW_SIZ
771
;       LDIR
772
;       CALL OUT_FE
773
;       JP   CLRALL
774
 
775
;MD_M:  RES  5,(IX-_FE_IMG)
776
;       RES  _VMODE,(IX-_FLAG)
777
;       LD   B,8
778
;MD_M_L: LD   (HL),7
779
;       INC  HL
780
;       LD   (HL),0
781
;       INC  HL
782
;       DJNZ MD_M_L
783
;       LD   HL,$;M_MODE
784
;       JR   MD_SH
785
 
786
;BORDER & BORD COLOR MANIP ROUTINES
787
BORD_P:CALL HEX_CVT
788
       DB   5;4
789
       RET  C
790
       LD   C,A
791
       LD   A,(PAR2)
792
       CALL HEX_CVT
793
       DB   5;4
794
       RET  C
795
       RRCA
796
       RRCA
797
       RRCA
798
       RRCA
799
       XOR  C
800
       AND  0F0H
801
       XOR  C
802
       LD   (BCOL),A
803
 
804
RL_BRD: LD   A,(BCOL)
805
       BIT  _RUS,(IX-_FLAG)
806
       JR   NZ,SET_BR
807
       RRA
808
       RRA
809
       RRA
810
       RRA
811
 
812
SET_BR:LD   C,A
813
       XOR  (IX-_BORDER)
814
       AND  7
815
       XOR  (IX-_BORDER)
816
       LD   (BORDER),A
817
       LD   A,(FE_IMG)
818
       XOR  C
819
       AND  0F7H
820
       XOR  C
821
       XOR  8
822
       LD   (FE_IMG),A
823
 
824
OUT_FE:LD   C,(IX-_FE_IMG)
825
       LD   A,(BORDER)
826
       OUT  (C),A
827
       RET
828
 
829
;GOTOXY PROC
830
C_GOXY: LD  C,(IX-_PAR2)
831
       LD   B,A
832
       JP   GOXY_
833
 
834
 
835
;WINDOW PROC
836
WIND:  LD   A,(PAR3)
837
       CP   (IX-_PAR1)
838
       RET  C
839
       LD   L,A
840
;       BIT  _VMODE,(IX-_FLAG)
841
;       JR   NZ,$+4
842
;       ADD  A,A
843
;       RET  C
844
       CP   80
845
       RET  NC
846
       LD   A,(PAR4)
847
       CP   (IX-_PAR2)
848
       RET  C
849
       CP   25
850
       RET  NC
851
       LD   H,A
852
       LD   (W_X2),HL
853
       LD   HL,(PAR1)
854
       LD   (W_X1),HL
855
       JP   HOME_
856
 
857
I_LIN: LD   A,1
858
       DB   0EH         ; LD C,N
859
D_LIN: XOR  A
860
       LD   C,(IX-_W_X1)
861
       JP   ROL_2
862
 
863
;I_LIN: LD   HL,UROLL
864
;ID_LIN:LD   A,(W_Y1)
865
;       PUSH AF
866
;       LD   (IX-_W_Y1),B
867
;       CALL ID__1
868
;       POP  AF
869
;       LD   (W_Y1),A
870
;       RET
871
 
872
;ID__1: JP   (HL)
873
;
874
;D_LIN: LD   HL,ROLL
875
;       JR   ID_LIN
876
 
877
S_CUR: CALL HEX_CVT
878
       DB   6
879
       DB   3
880
       RET  C
881
       RES  _FLEX_C,(IX-_FLAG)
882
       DEC  A
883
       JP   Z,CUR_AC
884
       INC  A
885
       EX   AF,AF'
886
       CALL CUR_PA
887
       EX   AF,AF'
888
       RET  Z
889
       SET  _FLEX_C,(IX-_FLAG)
890
       RET
891
 
892
CUR_PAR:CALL HEX_CVT
893
       DB   1+6
894
       DB   32
895
       RET  C
896
       CALL LOG
897
_CUR_PA:LD  (C_MAX),A
898
       RET
899
 
900
_KEY_PA:LD  (KEY_REP),A
901
       LD   A,(PAR2)
902
       JR   _KP_1
903
 
904
KEY_PA:CALL HEX_CVT
905
       DB   1+6
906
       DB   32
907
       RET  C
908
       CALL LOG
909
       LD   (KEY_REP),A
910
       LD   A,(PAR2)
911
       CALL HEX_CVT
912
       DB   1+6
913
       DB   32
914
       RET  C
915
       CALL LOG
916
_KP_1: ADD  A,A
917
       DEC  A
918
       LD   (KEY_DEL),A
919
       RET
920
 
921
LOG:   INC  A
922
       CP   16
923
       RET  C
924
       SUB  8
925
       CP   16
926
       JR   C,LOG1
927
       SUB  8
928
       ADD  A,A
929
LOG1:  ADD  A,A
930
       RET
931
 
932
CUR_LN:CALL HEX_CVT
933
       DB   6
934
       DB   8
935
       RET  C
936
       LD   B,A
937
       LD   A,(PAR2)
938
       CALL HEX_CVT
939
       DB   6
940
       DB   8
941
       RET  C
942
       CP   B
943
       RET  C
944
                LD C,A
945
                JP SET_CURS
946
;       INC  A
947
;       LD   (IX-_C_BEG),B
948
;       LD   (C_END),A
949
;       RET
950
 
951
SETENC:CALL HEX_CVT
952
       DB   6
953
       DB   3
954
       RET  C
955
       ADD  A,A
956
       LD   HL,SG_ENC
957
       CALL ADD_HL_2A
958
       LD   DE,PAR2
959
       LD   B,8
960
SEC_LP:LD   A,(DE)
961
       INC  DE
962
       CALL HEX_CVT
963
       DB   5;4
964
       RET  C
965
       RLD
966
       BIT  0,B
967
       JR   Z,SEC_1
968
       INC  HL
969
SEC_1: DJNZ SEC_LP
970
MY_RET:RET
971
 
972
PRN_SC  LD   C,0
973
       JP   UND_MUX
974
;       LD   DE,PAR1
975
;       LD   HL,ED_BUF
976
;       LD   B,16
977
;       CALL SEC_LP
978
;       LD   DE,ED_BUF
979
;       CALL _PT_CH
980
;       JP   __PCH
981
 
982
PALLET:CALL HEX_CVT
983
       DB   1+4+8*2
984
       DB   "RT"
985
;       NOP
986
       RET  C
987
                NOP
988
                JR PLT_1
989
 
990
                JR SP_DEF
991
 
992
PLT_1
993
;       CP   81H
994
;       JR   Z,SP_DEF
995
       LD   (PAR4),A
996
       XOR  A
997
       LD   (FUNC),A
998
SPA_S: LD   A,3
999
       JP   ACP_1
1000
 
1001
SP_DEF:LD   HL,PALN
1002
       JR   SP_AUX1
1003
 
1004
SP_AUX:LD   HL,PAR1
1005
SP_DIR
1006
SP_AUX1:LD   DE,PAL_BUF
1007
       LD   BC,16
1008
       LDIR
1009
       JR   SET_PAL
1010
 
1011
SETP_AUX:
1012
       LD   B,3
1013
       LD   D,0
1014
       LD   HL,PAR1
1015
PACC_: LD   A,(HL)
1016
       CALL HEX_CVT
1017
       DB   6
1018
       DB   4
1019
       RET  C
1020
       CPL
1021
       RRA
1022
       RRA
1023
       RL   D
1024
       RLA
1025
       SBC  A,A
1026
       AND  8
1027
       OR   D
1028
       LD   D,A
1029
       INC  HL
1030
       DJNZ PACC_
1031
       ADD  A,A
1032
       ADD  A,A
1033
       XOR  D
1034
       AND  0FCH
1035
       XOR  D
1036
       OR   0CH
1037
       LD   D,A
1038
       LD   HL,PAL_BUF
1039
       LD   A,(PAR4)
1040
       AND  7FH
1041
       CALL ADD_HL_A
1042
       LD   (HL),D                      ; PAGE 1 SETS ON ENTRY TO CONOUT
1043
       INC  (IX-_PAR4)
1044
       JP   P,SET_PAL
1045
       BIT  4,(IX-_PAR4)
1046
       JR   Z,SPA_S
1047
;----------------------
1048
; SET PALLET FROM PAL_BUF
1049
SET_PAL: DI
1050
       LD   A,I
1051
       PUSH AF
1052
       LD   A,HIGH (MY_R_ADR)           ; 3DH
1053
       LD   I,A
1054
       IM   2
1055
       LD      A,(SYS_P)
1056
       LD      BC,0BD77H
1057
       OUT     (C),A
1058
       LD   A,(BORDER)
1059
       AND  0F8H
1060
       LD   HL,PAL_BUF
1061
       LD   C,0XFF
1062
       LD   D,8
1063
       EXX
1064
       LD   C,(IX-_FE_IMG)
1065
       SET  3,C
1066
       EXX
1067
       EI
1068
       HALT
1069
                DI
1070
SPL:   EXX
1071
       OUT  (C),A
1072
       EXX
1073
       OUTI
1074
;       INC  B
1075
       INC  A
1076
       DEC  D
1077
       JR   NZ,SPL
1078
       EXX
1079
       RES  3,C
1080
       EXX
1081
       SUB  8
1082
       LD   D,8
1083
SPL1:  EXX
1084
       OUT  (C),A
1085
       EXX
1086
       OUTI
1087
;       INC  B
1088
       INC  A
1089
       DEC  D
1090
       JR   NZ,SPL1
1091
       ADD  A,0                 ; +7
1092
       CALL OUT_FE              ; +71 / +78 = 13*6
1093
       POP  AF
1094
       LD   I,A
1095
       IM   1
1096
       CALL SET_SYS
1097
       EI
1098
       LD   BC,1000H                   ; FIND MIN&MAX COLORS
1099
       LD   DE,0FFH                    ; D - MAX, E - MIN
1100
       LD   HL,PAL_BUF
1101
FIV_LP:CALL CLT
1102
       CP   D
1103
       JR   C,FIV_NU
1104
       LD   D,A
1105
       LD   (IX-_I_MAX),C
1106
FIV_NU:CP   E
1107
       JR   NC,FIV_ND
1108
       LD   E,A
1109
       LD   (IX-_I_MIN),C
1110
FIV_ND:INC  C
1111
       INC  HL
1112
       DJNZ FIV_LP
1113
       LD   A,D
1114
       ADD  A,E
1115
       LD   (I_AVR),A
1116
       JP   RL_BRD
1117
 
1118
INVERT:PUSH HL
1119
       LD   HL,PAL_BUF
1120
       CALL ADD_HL_A
1121
       CALL CLT
1122
       ADD  A,A
1123
       LD   HL,I_AVR
1124
       CP   (HL)
1125
       POP  HL
1126
       LD   A,(I_MIN)
1127
       RET  NC
1128
       LD   A,(I_MAX)
1129
       RET
1130
 
1131
CLT:   PUSH HL
1132
       PUSH BC
1133
       LD   C,(HL)
1134
       LD   HL,CLT_TB
1135
       LD   B,6
1136
       XOR  A
1137
CLT_LP:RR   C
1138
       JR   C,CLT_1
1139
       ADD  A,(HL)
1140
CLT_1: INC  HL
1141
       DJNZ CLT_LP
1142
       POP  BC
1143
       POP  HL
1144
       RET
1145
 
1146
CLT_TB:DB   2,6,0CH,1,3,6
1147
 
1148
                DEPHASE
1149
 
1150
;------------------------------------------------
1151
CONOUT PUSH BC       ;PRINT CHAR FROM A
1152
       PUSH DE       ;DESTROY ALL ALT REGS
1153
       PUSH HL       ;IX MAST POINT TO IX_BASE
1154
       PUSH IY
1155
       PUSH AF
1156
       EX   AF,AF'
1157
       LD   A,1
1158
       RST  18H
1159
       PUSH AF
1160
       CALL CUR_PA
1161
       EI
1162
       EX   AF,AF'
1163
       CALL OUT_SW
1164
       CALL CUR_AC
1165
       POP  AF
1166
       RST  18H
1167
       EI
1168
       POP  AF
1169
       POP  IY
1170
       POP  HL
1171
       POP  DE
1172
       POP  BC
1173
       RET