Брезенхем: Алгоритм для рисования линии — различия между версиями

Материал из SpeccyWiki
Перейти к: навигация, поиск
(Содержимое страницы заменено на «Статья удаленна из-за самоуправства рязанского пидора Димачки Быстров…»)
Строка 1: Строка 1:
Процедура использует дополнительные данные, расположенные по адресу '''#7C00-#7CFF'''.Данные предназначены для построения точек. Перед использованием алгоритма необходимо вызвать '''INIT'''. Входные параметры:;HL=XY точки,BC=YX точки.использует '''HL''''
+
Статья удаленна из-за самоуправства рязанского пидора Димачки Быстрова.Сдохни с туберкулеза гнида
 
+
пример вызова процедуры:
+
<code><pre>
+
PIX_TAB EQU #7C00
+
 
+
        ORG #6000
+
begin
+
        CALL INIT;расчет данных для построения.
+
;HL=XY,BC=YX
+
  ld BC,#bfff;Демонстрация работы
+
MAIN    EI
+
        HALT
+
        LD A,0
+
        OUT (#FE),A
+
        push bc
+
        LD HL,#0000
+
        CALL DRAW;вызов рисования линии с координатами в BC и HL
+
        LD A,2
+
        OUT (#FE),A
+
        pop bc
+
        dec c
+
        jr z, wkey;выход из цикла к ожиданию нажатия клавиши
+
        jp MAIN
+
wkey
+
        LD A,#7F
+
        IN A,(#FE);ждем нажатия Пробел
+
        RRA
+
        JR C,wkey
+
        EXX
+
        LD HL,#2758
+
        EXX
+
        RET
+
INIT    LD DE,#4000
+
        LD L,E
+
        LD BC,#8000
+
ILP1    LD H,#7c;high PIX_TAB,high - аналог [ в Storm.
+
        LD(HL),E
+
        INC H
+
        LD (HL),D
+
        INC H
+
        LD (HL),C
+
        INC H
+
        LD (HL),B
+
        CALL DOWN_DE
+
        RRC B
+
        LD A,C
+
        ADC A,0
+
        LD C,A
+
        INC L
+
        JR NZ,ILP1
+
        LD HL,PIX_TAB+96
+
ILP2    LD (HL),0
+
        INC L
+
        JR NZ,ILP2
+
        RET
+
;-------------------------------
+
DOWN_DE INC D
+
        LD A,D
+
        AND 7
+
        RET NZ
+
        LD A,E
+
        ADD A,32
+
        LD E,A
+
        RET C
+
        LD A,D
+
        SUB 8
+
        LD D,A
+
        RET
+
 
+
</pre></code>
+
 
+
процедура рисования линии
+
 
+
<code><pre>
+
DRAW    LD (TEK_POI+1),HL
+
LD E,H
+
        LD H,#7C;high PIX_TAB
+
        LD A,(HL)
+
        INC H
+
        LD D,(HL)
+
        INC H
+
        LD L,E
+
        OR (HL)
+
        LD E,A
+
        INC H
+
        LD A,(DE)
+
        OR (HL)
+
        LD (DE),A
+
 
+
        LD HL,(TEK_POI+1)
+
        LD DE,#FFFF
+
        LD A,H
+
        SUB C
+
        JR NC,$+6
+
        NEG
+
        LD E,1
+
        LD C,A
+
        LD A,L
+
        SUB B
+
        JR NC,$+6
+
        NEG
+
        LD D,1
+
        LD B,A
+
        LD A,C
+
        CP B
+
        JR NC,L24C4
+
        LD L,C
+
        PUSH DE
+
        XOR A
+
        LD E,A
+
        JR L24CB
+
L24C4  OR C
+
RET Z
+
LD L,B
+
LD B,C
+
        PUSH DE
+
        LD D,0
+
L24CB  LD H,B
+
LD A,B
+
        RRA
+
L24CE  ADD A,L
+
JR C,L24D4
+
        CP H
+
        JR C,L24DB
+
L24D4  SUB H
+
LD C,A
+
        EXX
+
        POP BC
+
        PUSH BC
+
        JR TEK_POI
+
L24DB  LD C,A
+
PUSH DE
+
        EXX
+
        POP BC
+
TEK_POI LD HL,0
+
LD A,C
+
        ADD A,H
+
        LD H,A,A,B
+
        ADD A,L
+
        LD L,A
+
        LD (TEK_POI+1),HL
+
 
+
        LD E,H
+
        LD H,#7C;high PIX_TAB;[
+
        LD A,(HL)
+
        INC H
+
        LD D,(HL)
+
        INC H
+
        LD L,E
+
        OR (HL)
+
        LD E,A
+
        INC H
+
        LD A,(DE)
+
        OR (HL)
+
        LD (DE),A
+
        EXX
+
        LD A,C
+
        DJNZ L24CE
+
        POP DE
+
RETURN  RET
+
 
+
</pre></code>
+
[[Категория:Программирование графики]]
+

Версия 14:47, 1 сентября 2015

Статья удаленна из-за самоуправства рязанского пидора Димачки Быстрова.Сдохни с туберкулеза гнида