Blame |
Last modification |
View Log
| Download
| RSS feed
; LAST UPDATE: 26.10.2025 savelij
PRINT_MSG LD A,(HL)
INC HL
AND A
RET Z
CALL PRINT_A
JR PRINT_MSG
PRINT_A CP ' '
JP NC,PRINT_A_
CP 0x0D
JR NZ,.L0
; перевод строки
.SET_NEW_LINE
EXX
LD HL,VVARS.PPOS_X
LD (HL),0
INC HL
INC (HL)
EXX
RET
.L0 CP 0x16
JR NZ,.L1
; установка позиции печати
; 0x16 X (0..41) Y (0..23)
LD A,(HL)
INC HL
LD (VVARS.PPOS_X),A
LD A,(HL)
INC HL
LD (VVARS.PPOS_Y),A
RET
.L1 CP 0x17
JR NZ,.L6
LD A,(HL)
INC HL
LD (VVARS.COLORSYM),A
RET
.L6
; рисование символа 6x8
PRINT_A_ PUSH HL
EXX
LD L,A
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD DE,FONT
ADD HL,DE
PUSH HL
LD HL,VVARS.PPOS_X
LD E,(HL) ; X
INC (HL) ; следующий X
LD A,(HL)
CP 42
JR C,.L4
LD (HL),0
.L4 INC HL
LD A,(HL) ; Y
JR C,.L5
INC (HL)
.L5 ADD A,A
ADD A,A
ADD A,A ; Y координата в таблице адресов экрана
LD B,A
LD A,E
ADD A,A ; *2
ADD A,A ; *4
ADD A,E ; *5
ADD A,E ; *6
LD D,A
EX AF,AF'
LD A,D
SRL A
SRL A
SRL A
LD C,A ; X смещение
LD H,HIGH (VVARS.BUFTSC)
LD L,B
LD A,(HL)
ADD A,C
LD E,A
INC H
LD D,(HL)
POP HL
EX AF,AF'
AND 7
JP NZ,.L0
; POS = 0 0000 0011 1111 1111
REPT 8
LD A,(DE)
AND %00000011
OR (HL)
LD (DE),A
INC D
INC HL
ENDM
JP .RET
; POS = 2 1100 0000 1111 1111
.L0 SUB 2
JP NZ,.L1
REPT 8
LD A,(HL)
RRA
RRA
LD C,A
LD A,(DE)
AND %11000000
OR C
LD (DE),A
INC D
INC HL
ENDM
JP .RET
; POS = 4 1111 0000 0011 1111
.L1 SUB 2
JP NZ,.L2
REPT 8
LD C,0
LD A,(HL)
RRA
RRA
RRA
RR C
RRA
RR C
LD B,A
LD A,(DE)
AND %11110000
OR B
LD (DE),A
INC E
LD A,(DE)
AND %00111111
OR C
LD (DE),A
DEC E
INC D
INC HL
ENDM
JP .RET
; POS = 6 1111 1100 0000 1111
.L2
REPT 8
LD B,0
LD A,(HL)
ADD A,A
RL B
ADD A,A
RL B
LD C,A
LD A,(DE)
AND %11111100
OR B
LD (DE),A
INC E
LD A,(DE)
AND %00001111
OR C
LD (DE),A
DEC E
INC D
INC HL
ENDM
.RET
LD HL,(VVARS.COLORSYM)
INC L
JR Z,.L3
DEC L
EX DE,HL
LD A,H
DEC A
RRCA
RRCA
RRCA
AND 3
OR 0x58
LD H,A
LD (HL),E
.L3 EXX
POP HL
RET
PRIHEX PUSH AF
RRA
RRA
RRA
RRA
CALL .PHC
POP AF
.PHC AND 0x0F
CP 0x0A
JR C,.L1
ADD A,7
.L1 ADD A,'0'
JP PRINT_A_
CLEAR_SCREEN LD HL,0x4000
LD DE,0x4001
LD BC,0x1800
LD (HL),0
LDIR
LD BC,0x300
LD (HL),0x07
LDIR
RET
; генерация адресов экрана
FADRTSC LD B,0x18
LD DE,0x4000
LD HL,VVARS.BUFTSC
.L1 LD C,8
.L2 LD (HL),E
INC H
LD (HL),D
DEC H
INC L
INC D
DEC C
JR NZ,.L2
LD A,0x20
ADD A,E
LD E,A
JR C,.L3
LD A,D
SUB 8
LD D,A
.L3 DJNZ .L1
RET