|
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 * * *
Другие статьи номера:
Похожие статьи:
В этот день... 1 января
SibNews #08,
Woot! #01,
Spectrum Magazine #01,
ACNews #25,
Psychoz #14,
ACNews #14,
Last 128 #08,
Last 128 #06,
Last 128 #05,
Last 128 #04,
Last 128 #03,
Last 128 #02,
Last 128 #09,
Last 128 #3.5,
Last 128 #8.025,
Sinclair Club #05,
Last 128 #M!R 01,
Fantadrom #01,
Buzz #20,
Last 128 #01,
DonNews #13,
Nicron #120,
Promised Land #01,
Inferno #01,
Marazm #25,
Ultimathum #01,
Marazm #21,
Hooy Mag #02,
KrNews #11,
Marazm #22,
Marazm #23,
ZX Football 2000 #01,
Codemania #01,
Always #03,
Bugs #02,
IzhNews #08,
Virtual Worlds #01,
Listok #04,
Scenergy #02,
Flash Info #18,
Marazm #16,
Marazm #17,
Zed #01,
Balagan #02,
ZX Format #08,
ZX Power #03,
Shock #01,
Impulse #02,
Deja Vu #03,
ZX Club #08,
ZX Club #06,
Numberology #01,
Marazm #13,
Marazm #12,
Marazm #14,
Gorodok #02,
Zodiac #01,
Marazm #15,
Deja Vu #07,
Marazm #11,
Deja Vu #07,
Playboy #03,
Crazy News #2,
Crazy News #4,
ZX Light #01,
Crazy News #5,
Playboy #02,
ZX News #03,
ZX Review #1-2,
Read Me #02,
Crazy News #3,
Nicron #13,
Read Me #01,
Public Spirit #01,
Faultless #06,
Faultless #05,
ZX Software #01,
Stump #04,
Speccy #07,
Возраждение #0,
Speccy #03,
On-Line #17,
Scene+ #01,
Welcome Press #01,
ZX Konig #04,
Adventurer #01,
Faultless #05,
Faultless #04,
Di Halt #01,
Faultless #01,
Playboy #01,
Crazy News #1,
Faultless #03,
Pioneer #03,
Sinclair Town #02,
ZX Magazine #01,
Eldorado #01,
ZX Magazine #02,
Spectron #01,
ZX News #01,
ZX Konig #02,
200 #W,
Welcome Press #00,
Dune #07,
Subliminal Extacy #01,
Subliminal Extacy #02,
ZX Konig #01,
Subliminal Extacy #00,
Muchomor #01,
Spectrofon #01,
ZX Revija #02,
Outlet #01,
Outlet #1-3