Абзац
:: Поиск
:: Поддержка проекта
Webmoney:
  • Z610389805629
  • R427996570517
  • E023541002978
  • :: №5 (27.04.2001) Просмотров: 4537

    Рубрика: Этюды.

    Номер: №5 (27.04.2001).



    Этюды

    На этот раз мы сделали подборку различных подпрограммок по работе с адресами в экранной области. Конечно же асам программирования все это давно известно, но вот начинающим наверняка будет полезно.


    Процедура расчета адреса в файле атрибутов из координат:

    На входе: D-X, E-Y


    ATR_1   LD A,E
            ADD A,A
            ADD A,A
            ADD A,A
            LD L,A
            LD H,#16
            ADD HL,HL
            ADD HL,HL
            LD A,L
            OR A
            LD L,A
            RET

    Второй вариант:

    На входе: H-X, L-Y


    ATR_2   LD A,H
            ADD HL,HL
            ADD HL,HL
            ADD HL,HL
            LD H,#16
            ADD HL,HL
            ADD HL,HL
            ADD A,L
            LD L,A
            RET

    На выходе обеих процедур в HL будет содержаться адрес файла атрибутов.


    Решить противоположную задачу можно так:

    На входе: HL-адрес


    CRDS    LD A,L
            AND #1F
            ADD HL,HL
            ADD HL,HL
            ADD HL,HL
            LD L,H
            LD H,A
            LD A,L
            AND #1F
            LD L,A
            RET

    На выходе: H-X, L-Y.


    И еще одна простенькая процедура для расчета адреса в экранном файле из адреса в файле атрибутов:

    На входе: HL-адрес в файле атрибутов.


    ATR_SCR LD A,H
            ADD A,A
            ADD A,A
            ADD A,A
            AND #7F
            LD H,A
            RET

    На выходе: HL-адрес экранного файла.


    Процедура для расчета адреса в экранном файле из координат.

    На входе: HL-координаты в знакоместах.


    SCR_ADR LD A,L
            AND 7
            RRCA
            RRCA
            RRCA
            ADD A,H
            LD H,L
            LD L,A
            LD A,H
            AND #18
            OR #40
            LD H,A
            RET

    На выходе: HL-адрес в экранном файле.


    Процедура для расчета адреса в экранном файле из координат. Часто применяется при выводе спрайтв.

    На входе: D-X (в знакоместах), E-Y (в пикселях).


    SCRadr2 LD A,E
            AND 7
            LD C,A
            LD A,E
            AND 192
            RRCA
            RRCA
            RRCA
            OR #40
            OR C
            LD H,A
            LD A,E
            AND 56
            RLCA
            RLCA
            OR D
            LD L,A
            RET

    На выходе: HL-адрес в экранном файле.


    Процедура для перехода на одну пиксельную линию в экране ниже. Так же, как и предыдущая процедура, часто применяется при выводе спрайтов.

    На входе: HL-адрес в экранном файле.


    LINE_HL INC     H
            LD      A,H
            AND     7
            RET     NZ
            LD      A,L
            ADD     A,32
            LD      L,A
            RET     C
            LD      A,H
            SUB     8
            LD      H,A
            RET

    На выходе: HL-адрес в экранном файле ниже на пиксель от исходного.


    При подготовке рубрики были использованы материалы журнала ZX-Ревю и собственные наработки.

    © 2004-2013 Perspective group