;Вывод квадратика 24x24 точки в три плоскости для статичных объектов
;
SpriteC3:
PUSH H
PUSH D
PUSH B
MOV A,H ; сохраняем начало столбик X плоскость (1) куда выводим графику
STA pozic_xP1
ADI 20H ; вычисляем следующую плоскость (2) начальный столбец
STA pozic_xP2 ; сохраняем
ADI 20H ; вычисляем следующую плоскость (3) начальный столбец
STA pozic_xP3 ; сохраняем
MOV A,L ; сохраняем начало строки Y куда выводим графику
STA pozic_y
MVI B,3 ;в регистр "B" - счетчик столбиков X
Kvadr1:MVI C,24 ;в регистр "C" - счетчик строк Y
Kvadr2: LDAX D ; загружаем акумулятор А содержимым графики
MOV M,A ; выводим в экран по адресу "HL" байт графики
DCR L ; ; куда выводить "HL=HL+1" строка Y +1
INX D ; DE=DE+1 увеличиваем адрес откуда брать графику
DCR C ; -1 все 24 байт строки вывели ?
JNZ Kvadr2 ;если столбик не вывели полностью то продолжаем
; переключаем на следующий столбик-адрес вывода графики
INR H
LDA pozic_y
MOV L,A ; установка Y начала строки
DCR B ; -1 все 3 столбика X вывели ?
JNZ Kvadr1 ;если столбики не вывели полностью то продолжаем
;============== вывод в плоскость 2
LDA pozic_xP2
MOV H,A ; установка первого столбца X плоскость (2) куда выводим графику
MVI B,3 ;в регистр "B" - счетчик столбиков X
Kvadr11:MVI C,24 ;в регистр "C" - счетчик строк Y
Kvadr22: LDAX D ; загружаем акумулятор А содержимым графики
MOV M,A ; выводим в экран по адресу "HL" байт графики
DCR L ; ; куда выводить "HL=HL+1" строка Y +1
INX D ; DE=DE+1 увеличиваем адрес откуда брать графику
DCR C ; -1 все 24 байт строки вывели ?
JNZ Kvadr22 ;если столбик не вывели полностью то продолжаем
; переключаем на следующий столбик-адрес вывода графики
INR H
LDA pozic_y
MOV L,A ; установка Y начала строки
DCR B ; -1 все 3 столбика X вывели ?
JNZ Kvadr11 ;если столбики не вывели полностью то продолжаем
;============== вывод в плоскость 3
LDA pozic_xP3
MOV H,A ; установка первого столбца X плоскость (2) куда выводим графику
MVI B,3 ;в регистр "B" - счетчик столбиков X
Kvadr111:MVI C,24 ;в регистр "C" - счетчик строк Y
Kvadr222: LDAX D ; загружаем акумулятор А содержимым графики
MOV M,A ; выводим в экран по адресу "HL" байт графики
DCR L ; ; куда выводить "HL=HL+1" строка Y +1
INX D ; DE=DE+1 увеличиваем адрес откуда брать графику
DCR C ; -1 все 24 байт строки вывели ?
JNZ Kvadr222 ;если столбик не вывели полностью то продолжаем
; переключаем на следующий столбик-адрес вывода графики
INR H
LDA pozic_y
MOV L,A ; установка Y начала строки
DCR B ; -1 все 3 столбика X вывели ?
JNZ Kvadr111 ;если столбики не вывели полностью то продолжаем
POP B
POP D
POP H
RET ;иначе - выйти из п/п вывода квадратиков
[свернуть]