Fantom #03
05 января 2000

Ассемблер - Процедура сдвига всего экрана на одно знакоместо вверх, загрузчик на вссемблере.

<b>Ассемблер</b> - Процедура сдвига всего экрана на одно знакоместо вверх, загрузчик на вссемблере.
╔══════════════════════════════╗
║      РАЗДЕЛ:АССЕМБЛЕР        ║
╚══════════════════════════════╝

  Итак, опять вы в рубрике "Ассемблер", ну
там, где всякие  ассемблерские  штучки для
начинающих. Не очень-то  хорошо получились
в прошлый раз. Посудите сами: в первом но-
мере мы  изучаем основы, а во втором пишем
фреймовые скроллеры (пересылки, что одно и
то же). Ну да ладно, хрен с ним...

  Для  начала даю  процедуру  сдвига всего
экрана на одно  знакоместо вверх. Плюсом в
ней  является  то, что  паралельно графике
перебрасываются  и  атрибуты. Поэтому  нет
таких неприятных вещей, как отставание ат-
рибутов  от  графики. А  ведь это не очень
красиво выглядет.
  Эту процедуру  вполне можно использовать
при написании вьюверов  для хелпов или ра-
зных, там, электронных изданий.

        ORG #8000
;процедура сдвига всего экрана на одну
;строку вверх.
;паралельно графике сдвигаются и атрибуты.

SCRL    LD DE,#4000    ;куда :
        LD HL,#4000+32 ;откуда:

        LD B,#17       ;к-во строк
        ЕХХ            ;атрибуты
        LD DE,#5800    ;куда
        LD HL,#5800+32 ;откуда
        ЕХХ

LOOP1   PUSH ВС
        CALL SCROLL    ;СДВИГ 8 линий
        POP ВС         ;графики
        DJNZ LOOP1
        RET            ;выход

SCROLL  LD B,#08       ;8 линий.
LOOP    PUSH ВС        ;запомнили рег.п
        PUSH HL
        PUSH DE
        LDI            ;32 LDI (32 байта
        LDI            ;в строке). Можно
        ....           ;заменить на:
        всего 32 LDI   ;LD ВС,32
        ....           ;LDIR,
        LDI            ;но это медленно
        LDI
        POP HL
        CALL DOWNHL    ;
        POP DE
        ЕХ DE,HL
        CALL DOWNHL
        POP ВС
        DJNZ LOOP
        ЕХХ            ;переносим атри-
        LDI            ;буты (32 байта)
        LDI            ;можно LD ВС,32
        ....           ;      LDIR
        всего 32 LDI   ;но LDI быстрее.
        ....           ;32*16=512тактов
        LDI            ;32*21=672тактов
        LDI
        ЕХХ            ;обмен
        DJNZ LOOP1
        RET            ;выход

DOWNHL  INC Н          ;экранная линия
        LD A,Н         ;вниз для HL.
        AND #07        ;(полная работа
        RET NZ         ;с третями экрана
        LD A,L
        ADD A,#20
        LD L,A
        RET С
        LD A,Н
        SUB #08
        LD Н,A
        RET

  Я думаю, что вы  сами разберётесь в том,
как она работает. По её принцыпу пишется и
скроллер вниз.

   ЗАГРУЗЧИК НА АССЕМБЛЕРЕ

  Для начала загрузим свой любимый ассемб-
лер и, выйдя в BASIC, наберём строчку:

 10 REM *********************************

  Знаков "*" для начала поставим побольше.
(зависит  от длины вашего  лоадера). Далее
возвращаемся в ассемблер и набираем:

          ORG 23872
;пример загрузчика на ассемблере
          LD С,5        ;функция LOAD
          LD B,кол-во загружаемых секторов
          LD DE,(23796) ;трек/сектор
          LD HL,куда грузить
          DI
          CALL 15635
          EI
          JP адрес стартового перехода

  Отассемблировав эту прогу, выходим в бе-
йсик и набираем:

 2 CLEAR адрес:RANDOMIZE USR 23872

  Удалив  все ненужные  строки, записываем
файл на диск. За полученным файлом дописы-
ваем загружаемый  кодовый блок, а потом их
склеиваем с помощью какого-нибудь команде-
ра, например PERFECT.
  Вот и всё. Мы имеем бейсик-моноблок. Его
можно перемещать по диску.

P.S. Приведённый  загрузчик является самым
простым, поэтому  вы можете  его совершен-
ствовать сами.
__________________________________________




Другие статьи номера:

От редакции - Здраствуйте, читатели! Вот уже и вышел третий номер электронной газеты "FANTOM".

Ассемблер - Процедура сдвига всего экрана на одно знакоместо вверх, загрузчик на вссемблере.

Gaме station - Недавно я прошел игру KING`S BOUNTY... Поэтому, даю вам описание "что, где и как проходить".

Железо - 8-ми разрядный АЦП для СOVOХ`а, формирователь сигнала яркости для монитора.

Обзор ПО - TЕХT MAKЕR v1.10f, BЕST VIЕW v2.8, DЕMO OR DIЕ #2.

Мысли вслух - Лучшая сисtемщина нашей плаtфoрмы.

Реклама - Рекламный раздел.

Информация - Об оболочки и об авторах. Благодарности и приветы.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Мир звуков Спектрума - глава 4.8: Синтезирование речи.
HDD - драйвер работы с HDD.
Рабочий стол - Как работать с программами: Symed v1.1
Презентация - Теневой отладчик "Alasm 128/512 v2.8" & "STS v4.2".
Юмор - Анекдоты.

В этот день...   21 ноября