Страница Ивана Рощина > Статьи >

© Иван Рощин, Москва

ZXNet: 500:95/462.53
E-mail: bestview@mtu-net.ru
WWW: http://www.ivr.da.ru

Процедура изображения окна с рамкой

(Adventurer #8)
Дата последнего редактирования: 16.06.2003.

Предлагаю вашему вниманию небольшую (44 байта), но очень полезную процедуру OPEN_W, которая изображает на экране окно с рамкой. Её нетрудно модифицировать, задав любые символы для изображения рамки и заполнения окна.

При её вызове в регистровой паре DE нужно задать координаты левого верхнего угла рамки, в регистре B — высоту, в C — ширину окна (в символах):

Рис. 1

При использовании этой процедуры в вашей программе должна присутствовать и процедура печати одного символа. Предполагается, что она называется PRSYM и при её вызове в аккумуляторе указывается код печатаемого символа, а в DE — координаты печати (D — X, E — Y). Процедура PRSYM не должна изменять значения регистров A, B, C, D, E.

Текст процедуры PRSYM здесь не приводится. В конце концов, если вам понадобилось вывести окно и что-то в нём напечатать, то процедура печати символа у вас уже должна быть.

OPEN_W  LD      A,"рисунок"   ;Левый верхний угол рамки.
        LD      L,"рисунок"   ;Правый верхний угол рамки.
        CALL    OPEN_W2
OPEN_W1 LD      A,"рисунок"   ;Вертикальная граница рамки.
        LD      H," "   ;Этим символом заполняется окно.
        LD      L,A
        CALL    OPEN_W3
        DJNZ    OPEN_W1
        LD      A,"рисунок"   ;Левый нижний угол рамки.
        LD      L,"рисунок"   ;Правый нижний угол рамки.
OPEN_W2 LD      H,"рисунок"   ;Горизонтальная граница рамки.
OPEN_W3 PUSH    DE
        CALL    PRSYM
        INC     D
        LD      A,H
        LD      H,C
OPEN_W4 CALL    PRSYM
        INC     D
        DEC     H
        JR      NZ,OPEN_W4
        LD      A,L
        CALL    PRSYM
        POP     DE
        INC     E
        RET
Страница Ивана Рощина > Статьи >