(c) Кобяков М., г.Находка
Предлагаю в раздел "Этюды"
свою программу для очистки за-
данного окна экрана. Координаты
X,Y, а также ширина и высота за-
даются в пикселах. Единственное
ограничение - координата X ВСЕ-
ГДА должна быть >=8!!! Для очис-
тки всего экрана необходимо за-
давать ширину = 0 и высоту =
176.
А теперь предлагаю читателям
усовершенствовать мою программу,
в частности, уменьшить длину и
увеличить быстродействие. Кто
сделает лучше?
Немного критики в ваш адрес.
Куда делись шестнадцатеричные
дампы программ в разделе "Этю-
ды"? Я, конечно, понимаю - эко-
номия места, дорогая бумага и
т.д., но ведь далеко не каждому
нравится набирать программу на
ассемблере, да и занятие это до-
вольно трудоемкое. А при вводе
шестнадцатеричных дампов коли-
чество нажатий на клавиши умень-
шается (как вы сами подсчитали)
в 5-6 раз! Какая экономия време-
ни и нервов конечного пользова-
теля! Правда, в письме я дамп не
привожу, т.к. если писать от ру-
ки кучу цифр, то можно понаде-
лать не меньшую кучу ошибок.
Нельзя ли вернуть указание
длины и стартового адреса после
подпрограммы, или хотя бы длины
(как в ZX РЕВЮ N1-2 за этот
год).
Ну и наконец маленькая прось-
ба: нельзя ли увеличить объем
журнала ну хотя бы на 5-6 стра-
ниц?
140.
;Window clearer
;by Lazy Max
LD D,0
;X-коорд. левого верхнего угла
LD E,175
;Y-коорд. левого верхнего угла
LD A,175
SUB E
LD E,A
AND A
RRA
SCF
RRA
AND A
RRA
XOR E
AND 248
XOR E
LD H,A
LD A,D
RLCA
RLCA
RLCA
XOR E
AND 199
XOR E
RLCA
RLCA
LD L,A
LD A,D
AND 7
LD E,A
LD A,8
SUB E
LD E,A
LD B,A
LD A,255
GO1 AND A
RLA
DJNZ GO1
LD D,A
PUSH HL
LD HL,BUFF
LD C,(HL)
INC HL
LD B,(HL)
POP HL
REP PUSH HL
PUSH BC
LD A,D
AND (HL)
LD (HL),A
PUSH DE
PUSH BC
LD A,B
SUB E
CP 8
JR C,CNT
AND 248
RRA
RRA
RRA
LD B,A
SUB A
L1 INC HL
LD (HL),A
DJNZ L1
CNT POP BC
LD A,B
SUB E
AND 248
ADD A,E
LD D,A
LD A,B
SUB D
JR Z,PASS
LD B,A
LD A,255
L2 AND A
RRA
DJNZ L2
INC HL
AND (HL)
LD (HL),A
PASS POP DE
POP BC
POP HL
CALL DLINE
DEC C
LD A,C
AND A
JR NZ,REP
RET
DLINE 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
BUFF DEFB 30,53
;высота, ширина
Длина кода: 128.
2
Прим.ред.: Некоторые соображения по по-
воду критики. По нашему мнению, необходи-
мости в дампах совершенно нет. Вы ведь са-
ми писали, что не будете писать дамп, т.к.
наделаете кучу ошибок. Поверьте, при набо-
ре дампа ошибок будет не меньше. И на их
поиск будет затрачено еще больше времени,
чем на набор исходника. К тому же ведь эти
процедуры вы будете включать в свои прог-
раммы, стало быть, в виде исходников. А
если вас не устраивает стартовый адрес ко-
да? Так что, по нашему мнению, проблем с
дампами куда больше. Теперь насчет старто-
вого адреса и длины. Длину мы теперь бу-
дем по возможности указывать, а в старто-
вом адресе нет необходимости - все равно
каждый проассемблирует под тот адрес, ко-
торый ему больше удобен. Хотелось бы доба-
вить еще одно пожелание к тем, кто возь-
мется по предложению Максима оптимизиро-
вать данную процедуру. Устраните ограниче-
ние на координату X.
* * *