Этюды - Программа очистки заданного окна экрана.

ZX Review #7-8-9-10
(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.

           *   *   *