ZX Review #5-6
04 ноября 1997

Этюды - Набор из восьми программ "расширения" экрана. Две процедуры проявления экрана.

<b>Этюды</b> - Набор из восьми программ
(c) Командин И.Г., г.Калуга

   Предлагаю  набор  из   восьми
программ,  объединенных    общей
целью. Ниже будут  даны  краткие
характеристики каждой  из  прог-
рамм, а затем и их листинги.

   PICTH1 - увеличение вдвое  по
высоте содержимого средней части 
экрана,  так,  что  получившееся
изображение занимает весь экран;

   PICTH2 - увеличивает вдвое по
высоте содержимое верхней  поло-
вины экрана (строки 0-11);

   ATTRH1 - то же, что и PICTH1,
но для атрибутов;

   ATTRH2 - то же, что и PICTH2,
но для атрибутов;

   PICTW1 - увеличение вдвое  по
ширине  изображения в центре эк-
рана (столбцы 8-23);

   PICTW2 - увеличение вдвое  по
ширине изображения в левой поло-
вине экрана (столбцы 0-15);

   ATTRW1 - PICTW1  для  атрибу-
тов;

   ATTRW2 - PICTW2  для  атрибу-
тов.
140.
PICTH1    LD      B,48
          LD      HL,#40C0
          LD      DE,#4000
LOOP      PUSH    BC
          PUSH    HL
          PUSH    DE
          LD      BC,32
          LDIR
          POP     DE
          EX      DE,HL
          CALL    DOWN
          EX      DE,HL
          POP     HL
          CALL    DOWN
          POP     BC
          DJNZ    LOOP
          LD      B,48
          LD      HL,#5720
          LD      DE,#57E0
LOOP1     PUSH    BC
          PUSH    HL
          PUSH    DE
          LD      BC,32
          LDIR
          POP     DE
          EX      DE,HL
          CALL    UP
          EX      DE,HL
          POP     HL
          PUSH    HL
          PUSH    DE
          LD      BC,32
          LDIR
          POP     DE
          EX      DE,HL
          CALL    UP
          EX      DE,HL
          POP     HL
          CALL    UP
          POP     BC
          DJNZ    LOOP1
          RET
DOWN      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
UP        DEC     H
          LD      A,H
          AND     7
          CP      7
          RET     NZ
          LD      A,L
          SUB     32
          LD      L,A
          RET     C
          LD      A,H
          ADD     A,8
          LD      H,A
          RET

───────────────────────────────

PICTH2    LD      B,96
          LD      HL,#4F60
          LD      DE,#57E0
LOOP      PUSH    BC
          PUSH    HL
          PUSH    DE
          LD      BC,32
          LDIR
          POP     DE
          EX      DE,HL
          CALL    UP
          EX      DE,HL
          POP     HL
          PUSH    HL
          PUSH    DE
          LD      BC,32
          LDIR
          POP     DE
          EX      DE,HL
          CALL    UP
          EX      DE,HL
          POP     HL
          CALL    UP
          POP     BC
          DJNZ    LOOP
          RET
UP        DEC     H
          LD      A,H
          AND     7
          CP      7
          RET     NZ
          LD      A,L
          SUB     32
          LD      L,A
          RET     C
          LD      A,H
          ADD     A,8
          LD      H,A
          RET

───────────────────────────────

ATTRH1    LD      B,6
          LD      HL,#58C0
          LD      DE,#5800
LOOP      PUSH    BC
          PUSH    HL
          LD      BC,32
          LDIR
          POP     HL
          LD      BC,32
          LDIR
          POP     BC
          DJNZ    LOOP
          LD      B,6
          LD      HL,#5A3F
          LD      DE,#5AFF
LOOP1     PUSH    BC
          PUSH    HL
          LD      BC,32
          LDIR
          POP     HL
          LD      BC,32
          LDDR
          POP     BC
          DJNZ    LOOP1
          RET

───────────────────────────────

ATTRH2    LD      B,12
          LD      HL,#597F
          LD      DE,#5AFF
LOOP      PUSH    BC
          PUSH    HL
          LD      BC,32
          LDIR
          POP     HL
          LD      BC,32
          LDDR
          POP     BC
          DJNZ    LOOP
          RET

───────────────────────────────

PICTW1    LD      B,192
          LD      HL,#4000
          LD      DE,#4008
LOOP      PUSH    BC
          PUSH    HL
          PUSH    DE
          LD      B,8
L3        PUSH    BC
          LD      A,(DE)
          LD      B,2
L2        PUSH    BC
          LD      B,4
L1        RLCA
          PUSH    AF
          RL      (HL)
          POP     AF
          RL      (HL)
          DJNZ    L1
          INC     HL
          POP     BC
          DJNZ    L2
          INC     DE
          POP     BC
          DJNZ    L3
          POP     DE
          EX      DE,HL
          CALL    DOWN
          EX      DE,HL
          POP     HL
          CALL    DOWN
          POP     BC
          DJNZ    LOOP
          LD      B,192
          LD      HL,#401F
          LD      DE,#4017
LOOP1     PUSH    BC
          PUSH    HL
          PUSH    DE
          LD      B,8
L6        PUSH    BC
          LD      A,(DE)
          LD      B,2
L5        PUSH    BC
          LD      B,4
L4        RRCA
          PUSH    AF
          RR      (HL)
          POP     AF
          RR      (HL)
          DJNZ    L4
          DEC     HL
          POP     BC
          DJNZ    L5
          DEC     DE
          POP     BC
          DJNZ    L6
          POP     DE
          EX      DE,HL
          CALL    DOWN
          EX      DE,HL
          POP     HL
          CALL    DOWN
          POP     BC
          DJNZ    LOOP1
          RET
DOWN      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

───────────────────────────────

PICTW2    LD      B,192
          LD      HL,#401F
          LD      DE,#400F
LOOP      PUSH    BC
          PUSH    HL
          PUSH    DE
          LD      B,16
L3        PUSH    BC
          LD      A,(DE)
          LD      B,2
L2        PUSH    BC
          LD      B,4
L1        RRCA
          PUSH    AF
          RR      (HL)
          POP     AF
          RR      (HL)
          DJNZ    L1
          DEC     HL
          POP     BC
          DJNZ    L2
          DEC     DE
          POP     BC
          DJNZ    L3
          POP     DE
          EX      DE,HL
          CALL    DOWN
          EX      DE,HL
          POP     HL
          CALL    DOWN
          POP     BC
          DJNZ    LOOP
          RET
DOWN      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

───────────────────────────────

ATTRW1    LD      B,24
          LD      HL,#5808
          DE      DE,#5800
LOOP      PUSH    BC
          PUSH    HL
          PUSH    DE
          LD      B,8
LOOP2     LD      A,(HL)
          LD      (DE),A
          INC     DE
          LD      (DE),A
          INC     DE
          INC     HL
          DJNZ    LOOP2
          POP     DE
          LD      HL,32
          ADD     HL,DE
          LD      D,H
          LD      E,L
          POP     HL
          LD      BC,32
          ADD     HL,BC
          POP     BC
          DJNZ    LOOP
          LD      B,24
          LD      HL,#5817
          LD      DE,#581F
LOOP3     PUSH    BC
          PUSH    HL
          PUSH    DE
          LD      B,8
LOOP4     LD      A,(HL)
          LD      (DE),A
          DEC     DE
          LD      (DE),A
          DEC     HL
          DEC     DE
          DJNZ    LOOP4
          POP     DE
          LD      HL,32
          ADD     HL,DE
          LD      D,H
          LD      E,L
          POP     HL
          LD      BC,32
          ADD     HL,BC
          POP     BC
          DJNZ    LOOP3
          RET

───────────────────────────────

ATTRW2    LD      HL,#580F
          LD      DE,#581F
          LD      B,24
LOOP      PUSH    BC
          PUSH    HL
          PUSH    DE
          LD      B,16
LOOP2     LD      A,(HL)
          LD      (DE),A
          DEC     DE
          LD      (DE),A
          DEC     DE
          DEC     HL
          DJNZ    LOOP2
          POP     DE
          LD      HL,32
          ADD     HL,DE
          LD      D,H
          LD      E,L
          POP     HL
          LD      BC,32
          ADD     HL,BC
          POP     BC
          DJNZ    LOOP
          RET
2
   Ну вот и все. Осталось только
добавить, что программы  "расши-
рения"  экрана  несколько медли-
тельны, так что лучше  использо-
вать их для  теневого  экрана, а
затем   переносить  получившееся
изображение в экранную область.
   Помнится, однажды Сергей  Ко-
лотов предложил сделать програм-
му, увеличивающую изображение  в
центре экрана вдвое, так,  чтобы
оно занимало весь экран  (графи-
ка + атрибуты). Теперь для того,
чтобы  добиться  этого  эффекта,
нужно  всего  лишь    последова-
тельно вызвать процедуры PICTH1,
PICTW1, ATTRH1, ATTRW1.
   Следующие две программы,  ко-
торые я хочу предложить, -  про-
цедуры проявления экрана. Особый
интерес, на  мой  взгляд,  пред-
ставляет последняя процедура.
140.
;(C) ZX-MANIACS
;SPECIAL FOR INFORCOM

BUFF      EQU     41000
          LD      HL,BUFF
          LD      DE,#4000
          SBC     HL,DE
          LD      (DIFF),HL


140.          LD      HL,DOWN
          LD      (MODE),HL
          LD      HL,#4000
          CALL    DRAW
          LD      HL,UP
          LD      (MODE),HL
          LD      HL,#57E0
          CALL    DRAW
          LD      HL,DOWN
          LD      (MODE),HL
          LD      HL,#4100
          CALL    DRAW
          LD      HL,UP
          LD      (MODE),HL
          LD      HL,#56E0
          CALL    DRAW
          LD      HL,BUFF
          LD      DE,#4000
          LD      BC,6912
          LDIR
          RET
DRAW      LD      B,47
LOOP      PUSH    BC
          PUSH    HL
          LD      D,H
          LD      E,L
          LD      BC,(DIFF)
          ADD     HL,BC
          LD      BC,32
          LDIR
          POP     HL
          LD      B,4
PASS      DEFB    205
MODE      NOP
          NOP
          DJNZ    PASS
          POP     BC
          HALT
          DJNZ    LOOP
          RET
DOWN      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
UP        DEC     H
          LD      A,H
          AND     7
          CP      7
          RET     NZ
          LD      A,L
          SUB     32
          LD      L,A
          RET     C
          LD      A,H
          ADD     A,8
          LD      H,A
          RET
DIFF      DEFW    0

───────────────────────────────

;(C) ZX-MANIACS
;SPECIAL FOR INFORCOM

BUFF      EQU     41000
          LD      HL,BUFF
          LD      DE,#4000
          SBC     HL,DE
          LD      (DIFF),HL
          LD      B,0
LOOP      PUSH    BC
          LD      C,B
          INC     B
          LD      A,B
          CP      #C0
          JR      C,M1
          LD      B,#C0
M1        XOR     A
L1        PUSH    AF
          CALL    8880
          CALL    PLOT
          POP     BC
          POP     AF
          DEC     C
          INC     A
          DJNZ    L1
          POP     BC
          INC     B
          LD      A,B
          CP      #FF
          JR      NZ,LOOP
          LD      B,#BF
LOOP1     PUSH    BC
          LD      A,#BF
          SUB     B
          LD      C,#FF
          INC     B
L2        PUSH    AF
          PUSH    BC
          CALL    8880
          CALL    PLOT
          POP     BC
          POP     AF
          DEC     C
          INC     A
          DJNZ    L2
          POP     BC
          DJNZ    LOOP1
          LD      HL,BUFF+1800
          LD      DE,#5800
          LD      BC,#0300
          LDIR
          RET
PLOT      ADD     A,A
          ADD     A,A
          ADD     A,A
          ADD     A,#46
          LD      (BITP),A
          ADD     A,#40
          LD      (RESP),A
          ADD     A,#40
          LD      (SETP),A
          LD      DE,(DIFF)
          ADD     HL,DE
          DEFB    #CB
BITP      NOP
          PUSH    AF
          SBC     HL,DE
          POP     AF
          JR      Z,CONT
          DEFB    #CB
SETP      NOP
          RET
CONT      DEFB    #CB
RESP      NOP
          RET
DIFF      DEFW    0
2
         С уважением, ZX-MANIAC.

           *   *   *




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

Adventure Project - Проектирование и разработака Адвентюрных и RPG игр.

Adventure Project - Русификация адвентюр.

TR-DOS для начинающих - Продолжение.

Авторская разработка - Scorpion 2000 (С.Зонов).

Авторская разработка - Трамплин (С.Веремеенко).

Визитная карточка - новый электронный юмористический журнал "SpectrofUn".

Перекресток драконов - Раскрутка игры Finders Keepers.

Перекресток драконов - Раскрутка игры Knight Tyme.

Перекресток драконов - Раскрутка игры Spellbound.

Перекресток драконов - Раскрутка игры Stormbringer.

Ретро - 40 лучших процедур: Слияние картинок, Вращение символа по часовой стрелке, Инвертирование символов, Изменение атрибута, Закрашивание контура, Построение шаблонов (Дж.Хардман, Э.Хьюзон.).

Советы экспертов - Total Eclipse 2.

Советы экспертов Super League.

Форум-игры - Описание игры Страна Мифов.

Форум-игры - Прохождение Renegade.

Форум-игры - Тонкости торговли в игре Elite

Форум - Изучение и отладка @-файлов с помощью STS 5.1. Особенности отладки программ с помощью монитора STS. Исправление ошибки STS 5.1.

Форум - Компрессия программ.

форум - О сокращении времени форматирования. О записи секторов одновременно с форматированием. Перестроение экрана за одно прерывание.

Форум - Особенности ассемблера ZX ASM 3.0.

Форум - По поводу компилятора бейсика "Blast".

Форум - По поводу релоцируемых программ.

Форум - Программы "Пламя" и "Дракон".

Читатель-читателю - TR-DOS: как не допустить ошибки?

Читатель-читателю - Эффективная работа с дисководом .

Этиды - Расчет адреса в файле атрибутов. Программа скроллирования заданного окна на 1 пиксел вправо. Программа очистки заданного окна. Процедура вывода картинки из буфера.

Этюды - Индикатор каналов музыкального процессора. Процедура очистки экрана. Предложение по стандартизации.

Этюды - Набор из восьми программ "расширения" экрана. Две процедуры проявления экрана.

Этюды - Новые темы для разработок.

Этюды - Программа воспроизведения инструмента от редакторов оцифрованной музыки.

Этюды - Программа обработки @-бейсик файлов.

Этюды - Процедура поворота символа на 90 градусов по часовой стрелке.

Этюды - Процедура поиска текстовых файлов.

Этюды - Экранная процедура "UP HL".


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

Похожие статьи:
Возможности Спектрума - Pseudo-Color: миф или реальность? Алгоритм перевод чёрно-белого изображения в цветное.
Ufo #2 - Время и человек.
Приложение - PresentatioN.
Начинающим - основные методы масштабирования изображения: Аппроксимация полутонами.
Советы - Наверное многие из вас пробовали пройти игру " MERGS ".

В этот день...   20 апреля