Adventurer
#08
31 августа 1998 |
|
Обмен опытом - процедура вывода окна с рамкой.
(C) Иван Рощин, Москва, 1998 Предлагаю вашему вниманию небольшую (44 байта), но очень полезную процедуру OPEN_W , которая изображает на экране ок- но с рамкой. Ее нетрудно модифицировать, задав любые символы для изображения рамки и заполнения окна. При ее вызове в регистровой паре DE нужно задать координаты левого верхнего угла рамки, в регистре B - высоту, C ши- рину окна (в символах): ╔═════════════════════════╗ ║ ^ ║ ║ |E ║ ║ D v ║ ║<--->┌───────────┐ ^ ║ ║ │ │ | ║ ║ │ │ | ║ ║ │ окно │ |B ║ ║ │ │ | ║ ║ │ │ | ║ ║ │ │ | ║ ║ └───────────┘ v ║ ║ <-----------> ║ ║ C ║ ╚═════════════════════════╝ При использовании этой процедуры в вашей программе должна присутствовать и процедура печати одного символа. Предпо- лагается, что она называется PRSYM и при ее вызове в аккумуляторе указывается код печатаемого символа, а в DE - координаты печати (D=X, E=Y). После окончания работы процедуры PRSYM регистры не должны изме- няться. Текст процедуры 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 * * *
Другие статьи номера:
Похожие статьи:
В этот день... 14 декабря