;LAST UPDATE: 18.01.2012 savelij
PRTT_MSG LD A,(HL)
AND A
RET Z
CALL PRTT_UPR
INC HL
JR PRTT_MSG
PRTT_UPR CP " "
JP NC,PRTT_A_
CP 0X16
JR Z,PRTT_COD16
CP 0X17
JR Z,PRTT_COD17
CP 9
RET NZ
PRTT_COD09 LD A,D
ADD A,8
AND 0XF8
LD D,A
RET
PRTT_COD17 INC HL
LD A,(HL)
LD (TXT_COLOR),A ;УСТАНОВКА ЦВЕТА ПЕЧАТИ
RET
PRTT_COD16 INC HL
LD E,(HL) ;X ПОЗИЦИЯ
INC HL
LD D,(HL) ;Y ПОЗИЦИЯ
RET
;ПЕЧАТЬ СИМВОЛА НА ТЕКСТМОДНОМ ЭКРАНЕ
;D-X E-Y C-COLOR
PRTT_A_ IF TXTMODE_DEBUG=0
PUSH DE
PUSH HL
PUSH AF
LD L,E
LD A,D
LD H,0
LD D,H
ADD HL,HL ;X2
ADD HL,HL ;X4
ADD HL,HL ;X8
ADD HL,HL ;X16
ADD HL,HL ;X32
ADD HL,HL ;X64
LD E,A
SRL E
ADD HL,DE
AND 1
RRCA
RRCA
RRCA
RRCA
ADD A,0XC1
LD D,A
LD E,0XC0
ADD HL,DE
POP AF
LD (HL),A
LD A,H
XOR 0X30
LD H,A
LD A,D
AND 0X10
RLCA
RLCA
RLCA
RLCA
ADD A,L
LD L,A
LD A,(TXT_COLOR)
LD (HL),A
POP HL
POP DE
INC D
ELSE
PUSH HL
PUSH DE
LD B,D
LD L,E
LD H,0
LD D,H
ADD HL,HL ;X2
ADD HL,HL ;X4
ADD HL,DE ;X5
ADD HL,HL ;10
ADD HL,HL ;20
ADD HL,HL ;40
ADD HL,HL ;80
LD E,B
ADD HL,DE
LD DE,0XC000
ADD HL,DE
LD (HL),A
SET 3,H
LD A,(TXT_COLOR)
LD (HL),A
POP DE
POP HL
INC D
ENDIF
RET
;ОЧИСТКА ТЕКСТМОДНОГО ЭКРАНА
CLS_TXTMODE8 IF TXTMODE_DEBUG=0
LD BC,0XFF77
LD A,0XA7
OUT (C),A
LD BC,WIN_A3
LD A,0X77
OUT (C),A
LD A," "
LD HL,0XC1C0
CALL CLS_TXTMODE81
LD HL,0XD1C0
CALL CLS_TXTMODE81
LD A,0X0F
LD HL,0XE1C0
CALL CLS_TXTMODE81
LD HL,0XF1C0
CLS_TXTMODE81 LD D,H
LD E,L
INC DE
LD BC,0X40*25
LD (HL),A
LDIR
RET
ELSE
LD BC,0XFF77
LD A,0XA4
OUT (C),A
LD BC,WIN_A3
LD A,0X76
OUT (C),A
LD A," "
LD HL,0XC000
CALL CLS_TXTMODE81
LD A,0X0F
LD HL,0XC800
CLS_TXTMODE81 LD D,H
LD E,L
INC DE
LD BC,0X800
LD (HL),A
LDIR
RET
ENDIF
;СОХРАНЕНИЕ ТЕКСТМОДНОГО ЭКРАНА
STORE_TXTMODE IF TXTMODE_DEBUG=0
LD BC,WIN_A3
LD A,0X77
OUT (C),A
LD DE,0X8000+OFFSET_SCRSAVE
LD HL,0XC1C0
LD BC,0X40*25
LDIR
LD HL,0XD1C0
LD BC,0X40*25
LDIR
LD HL,0XE1C0
LD BC,0X40*25
LDIR
LD HL,0XF1C0
LD BC,0X40*25
LDIR
ELSE
LD BC,WIN_A3
LD A,0X76
OUT (C),A
LD HL,0XC000
LD DE,0X8000+OFFSET_SCRSAVE
LD BC,0X1000
LDIR
ENDIF
RET
;ВОССТАНОВЛЕНИЕ ТЕКСТМОДНОГО ЭКРАНА
RESTORE_TXTMODE IF TXTMODE_DEBUG=0
LD HL,0X8000+OFFSET_SCRSAVE
LD DE,0XC1C0
LD BC,0X40*25
LDIR
LD DE,0XD1C0
LD BC,0X40*25
LDIR
LD DE,0XE1C0
LD BC,0X40*25
LDIR
LD DE,0XF1C0
LD BC,0X40*25
LDIR
ELSE
LD HL,0X8000+OFFSET_SCRSAVE
LD DE,0XC000
LD BC,0X1000
LDIR
ENDIF
RET
MAGIC_FONT LD A,4
LD BC,WIN_A2
OUT (C),A
LD HL,0X8000+CP866_UTL
LD DE,0
LD BC,0X800
LD A,4
OUT (PEVO_CONF),A
LDIR
LD A,1
OUT (PEVO_CONF),A
LD A,0X7D
LD BC,WIN_A2
OUT (C),A
XOR A
LD BC,WIN_P2
OUT (C),A
RET
RESTORE_FONT LD HL,0X8000+OFFSET_FNTSAVE
LD DE,0
LD BC,0X800
LD A,4
OUT (PEVO_CONF),A
LDIR
LD A,1
OUT (PEVO_CONF),A
RET
COMPARE_FONT CALL CMPFONT3
LD HL,TXT_VERIFY_FONT
CALL PRTT_MSG
LD A,IXL
AND A
LD HL,TXT_VERIFY_OK
JP Z,PRTT_MSG
LD HL,TXT_VERIFY_ERR
JP PRTT_MSG
CMPFONT3 LD BC,WIN_A1
LD A,4
OUT (C),A
LD IXL,1
LD HL,0X8000+OFFSET_FNTSAVE
LD DE,0X4000+CP866_FONT
CALL CMPFONT1
LD A,IXL
AND A
RET Z
LD HL,0X8000+OFFSET_FNTSAVE
LD DE,0X4000+ATM_FONT
CMPFONT1 LD BC,0X800
CMPFONT2 LD A,(DE)
CP (HL)
RET NZ
INC HL
INC DE
DEC BC
LD A,B
OR C
JR NZ,CMPFONT2
LD IXL,0
RET