Speccy #03
31 декабря 1995

Программирование - Программа позволяющая производить смену изображения экрана в режиме 48К в виде вертикальных шторок с синхронным изменением цвета бордюра.

╒══════════════════════════════╕
│░░░░░  ПРОГРАММИРОВАНИЕ  ░░░░░│
╘══════════════════════════════╛

 Предлагаем    вашему   вниманию
программу   полученную  нами  от
Шабанова   Владимира.  Программа
позволяет производить смену изо-
бражения экрана в режиме  48К  в
виде вертикальных шторок с синх-
ронным изменением цвета бордюра.
Вы можете посмотреть этот  инте-
ресный  прием в описании к  игре
VINDICATOR, которое сделал  этот
же автор.
 Хотим    сразу    предупредить:
программа  довольно  сложная, но
мы думаем, что тот кто заинтере-
суется  этой процедурой сможет с
ней  разобраться и применить при
написании собственных программ.
Шабанов Владимир
────────────────

CLS    LD A,#08      ; ЗАНЕСЕНИЕ
                     ; ЧИСЛА   В
                     ;   СЧЕТЧИК
       LD (LAB7+1),A ;   НОМЕР 1
       LD A,#88      ; ЗАНЕСЕНИЕ
                     ;  ЧИСЛА  В
                     ;   СЧЕТЧИК
       LD (LAB11+1),A  ; НОМЕР 2
       LD HL,(VECTOR+1) ;  ВЗЯЛИ
                        ;   В HL
                       ; ПЕРЕХОД
                     ;ПО ВЕКТОРУ
       LD (SAVE_VECT),HL ;  ПРЕ-
                        ;РЫВАНИЙ
                       ;И СОХРА-
                          ; НИЛИ
       LD HL,PRER       ; ЗАДАЛИ
                    ; СВОЙ ПЕРЕ-
                    ; ХОД И ПОД-
       LD (VECTOR+1),HL ;СТАВИЛИ
                        ;  ЕГО В
                        ; ВЕКТОР
LAB1   HALT             ;СДЕЛАЛИ
                    ; ДВА ПРЕРЫ-
                    ;  ВАНИЯ ДЛЯ
       HALT         ;   ЗАКРАСКИ
                    ; БОРД. ВЫШЕ
                  ;И НИЖЕ ЭКРАНА
       LD A,(LAB11+1)    ; ВЗЯЛИ
                     ; ЧИСЛО ДЛЯ
                     ;СЧЕТЧИКА 2
       SUB #08       ; УМЕНЬШИЛИ
                        ; НА 08H
       LD (LAB11+1),A  ; ЗАНЕСЛИ
                       ; ОБРАТНО
       LD A,(LAB7+1)     ; ВЗЯЛИ
                     ; ЧИСЛО ДЛЯ
                    ; СЧЕТЧИКА 1
       ADD A,#04     ; ПРИБАВИЛИ
                           ; 04H
       CP #50         ; СРАВНИЛИ
                         ; С 50H
       JR Z,LAB2    ; ЕСЛИ РАВНО
                      ; ТО ВЫХОД
       LD (LAB7+1),A   ; ЗАНЕСЛИ
                         ; ЧИСЛО
                       ; ОБРАТНО
                     ; В СЧЕТЧИК
       CP #20         ; СРАВНИЛИ
                         ; С 20H
       JR C,LAB1   ; ЕСЛИ МЕНЬШЕ
                         ; ТО НА
                  ; НАЧАЛО ЦИКЛА
       SUB #20        ; ОТНИМАЕМ
                       ; 20H ДЛЯ
                     ; ВЫЧИЛЕНИЯ
       LD L,A        ; И ЗАНОСИМ
                    ;РЕЗУЛЬТАТ В
                             ; L
       LD H,#00     ; ОБНУЛЯЕМ H
       ADD HL,HL    ; И УМНОЖАЕМ
                    ; ПОЛУЧЕННОЕ
                         ; ЧИСЛО
       ADD HL,HL      ; НА 8 ДЛЯ
                    ; ВЫЧИСЛЕНИЯ
                        ; АДРЕСА
       ADD HL,HL       ; В ФАЙЛЕ
                     ; АТРИБУТОВ
                        ; ЭКРАНА
       LD DE,#5800  ;В DE НАЧАЛО
                         ; ФАИЛА
                     ; АТРИБУТОВ
       ADD HL,DE       ; СЛОЖИЛИ
                       ; HL И DE
       LD E,L          ; ЗАНЕСЛИ
                          ; В DE
                    ; ПОЛУЧЕННЫЙ
       LD D,H          ; АДРЕС И
       INC DE        ; УВЕЛИЧИЛИ
                      ; ЕГО НА 1
       LD (HL),#00     ; ЗАНОСИМ
                     ; ПО АДРЕСУ
                       ; HL НОЛЬ
       LD BC,#001F        ; В BC
                        ; ДЛИННА
                ; СТРОКИ МИНУС 1
       LDIR           ; ОЧИСТИЛИ
                      ; ЗНАКОРЯД
       LD A,(LAB7+1)
       NEG          ; ПРОИЗВОДИМ
                    ; ВЫЧИСЛЕНИЯ
       ADD A,#7C    ;ДЛЯ ОЧИСТКИ
       LD L,A       ;    НИЖНЕГО
       LD H,#00     ;  ЗНАКОРЯДА
       ADD HL,HL
       ADD HL,HL
       ADD HL,HL
       LD DE,#5800
       ADD HL,DE
       LD E,L
       LD D,H
       INC DE
       LD (HL),#00
       LD BC,#001F
       LDIR
       JR LAB1       ;  И ДЕЛАЕМ
                     ;   ПЕРЕХОД
                     ; НА НАЧАЛО
                     ;     ЦИКЛА
LAB2   LD A,#00      ;ОКРАШИВАЕМ
                     ;  БОРДЮР В
       OUT (#FE),A  ;ЧЕРНЫЙ ЦВЕТ
       LD HL,(SAVE_VECT)
               ; ВОССТАНАВЛИВАЕМ
               ; ВЕКТОР ПЕРЕХОДА
       LD (VECTOR+1),HL
                 ; ПО ПРЕРЫВАНИЮ
       RET          ;    ВОЗВРАТ
                    ; В ОСНОВНУЮ
                    ;  ПРОГРАММУ
FILL   LD A,#50         ; ДАННАЯ
                  ; ПОДПРОГРАММА
       LD (LAB7+1),A
                 ; ПРЕДНАЗНАЧЕНА
                           ; ДЛЯ
       LD A,#00     ; ЗАПОЛНЕНИЯ
                    ; АТРИБУТАМИ
       LD (LAB11+1),A
                   ; ОТ СЕРЕДИНЫ
                         ; ВВЕРХ
       LD HL,(VECTOR+1) ; И ВНИЗ
                    ; И ЯВЛЯЕТСЯ
       LD (SAVE_VECT),HL
                  ; МОДИФИКАЦИЕЙ
       LD HL,PRER ; ПОДПРОГРАММЫ
                           ; CLS
       LD (VECTOR+1),HL ; ДАННЫЙ
                        ; ПРИМЕР
                     ;  РАСЧИТАН
LAB3   HALT       ; НА РАБОТУ ПО
       HALT    ; ПРЕРЫВАНИЯМ IM2
       LD A,#04       ; НО МОЖНО
                      ;  СДЕЛАТЬ
       LD (LAB8+1),A     ; И БЕЗ
                    ; ПРЕРЫВАНИЙ
       LD A,(LAB11+1)     ; ЕСЛИ
                   ;KОМАНДЫ HALT
       ADD A,#08      ; ЗАМЕНИТЬ
                  ; НА CALL PRER
       LD (LAB11+1),A     ; А ПО
                     ; ВЫХОДУ ИЗ
                  ; ПОДПРОГРАММЫ
       LD A,(LAB7+1)      ; PRER
                ; УБРАТЬ КОМАНДУ
       SUB #04     ; ЕI И RETI А
                     ; ПОСТАВИТЬ
       CP #0C       ; ПРОСТО RET
       JR Z,LAB4
       LD (LAB7+1),А
       CP #20
       JR C,LAB3
       SUB #20
       LD L,A
       LD H,#00
       ADD HL,HL
       ADD HL,HL
       ADD HL,HL
       EX DE,HL
       LD HL,#5800
       ADD HL,DE
       EX DE,HL
       LD BC,SCR_ATTR
       ADD HL,BC
       LD BC,#0020
       LDIR
       LD A,(LAB7+1)
       NEG
       ADD A,#7C
       LD L,A
       LD H,#00
       ADD HL,HL
       ADD HL,HL
       ADD HL,HL
       EX DE,HL
       LD HL,#5800
       ADD HL,DE
       EX DE,HL
       LD BC,SCR_ATTR
       ADD HL,BC
       LD BC,#0020
       LDIR
       JR LAB3
LAB4   LD HL,(SAVE_VECT)
       LD (VECTOR+1),HL
       XOR A
       LD (LAB8+1),А
       LD A,BORDER
       OUT (#FE),A
       RET
PRER   PUSH AF
       PUSH BC
       PUSH DE
       PUSH HL
       EX (SP),HL
       EX (SP),HL
       LD A,UP_BORD   ;  ЗАНЕСТИ
                      ; В А ЦВЕТ
                      ;  ВЕРХНЕЙ
       OUT (#FE),A    ; ПОЛОВИНЫ
                      ;  БОРДЮРА
       LD A,#07
LAB5   LD B,#0F
LAB6   DJNZ LAB6
       AND #FF
       INC HL
       DEC A
       JP NZ,LAB5
LAB7   LD A,#10
LAB8   SUB #00
LAB9   LD B,#0F
LAB10  LD C,#07
       LD C,#07
       DJNZ LAB10
       AND #FF
       LD C,#07
       LD C,#07
       INC HL
       DEC A
       JP NZ,LAB9
LAB11  LD A,BORDER  ;  В А КАКИМ
                    ; ЦВЕТОМ БЫЛ
       OUT (#FE),A  ;     БОРДЮР
       LD A,#78
       OR A
       JR Z,LAB14
LAB12  LD B,#0F
LAB13  LD C,#07
       LD C,#07
       DJNZ LAB13
       AND #FF
       LD C,#07
       LD C,#07
       INC HL
       DEC A
       JP NZ,LAB12
LAB14  LD A,DOWN_BORD ;     ЦВЕТ
                      ;   НИЖНЕЙ
                      ; ПОЛОВИНЫ
       OUT (#FE),A    ;  БОРДЮРА
       LD A,#05
LAB15  LD B,#0F
LAB16  LD C,#07
       LD C,#07
       DJNZ LAB16
       AND #FF
       LD C,#07
       LD C,#07
       INC HL
       DEC A
       JP NZ,LAB15
       POP HL
       POP DE
       POP BC
       POP AF
       EI           ; ЕСЛИ НЕ НА
                ; ПРЕРЫВАНИЯХ ТО
       RETI     ; ЗДЕСЬ СТАВИТСЯ
                           ; RET
SAVE_VECT DEFW #0000         
КеБаймаков Ярослав
────────────────
( R.I.P. Corp. 1996 by DIEHARD )

ВНИМАНИЕ ! ВНИМАНИЕ ! ВНИМАНИЕ !
WARNING  ! WARNING  ! WARNING  !

 В СТАДИИ РАЗРАБОТКИ НАХОДИТСЯ
 ПЛАТА РАСШИРЕНИЯ ВОЗМОЖНОСТЕЙ
 ВАШЕГО КОМПЬЮТЕРА.

 В  плате  полностью расшиты все
основные    порта   : расширения
памяти, звукового  прозессора  и
клавиатуры  Правильно  подключен
AY-процессор  (можно считывать с
порта FFFD).

 Плата позволяет :

1. расширить память:
   - на РУ5 до 512 Кб
   - на РУ7 до 2048 Кб
2. отключать ПЗУ
 (на    ее    место   в   адреса
#0000..#3FFF    встает   нулевая
страницы памяти);
 3.    прямое    програмирование
контроллера  дисковода  ВГ93  из
любой  области памяти (не только
по точке входа #3D2F);
 4.  устанавливает экран в любое
место памяти через каждые 8КБ;
 5.  позволяет считать состояние
потров #7FFD и #DFFD;
 6.      возможна      установка
контроллера дисковода на  плату;
 7. возможна сегментация в адрес
#4000;

 После     подключения     платы
компьютер   становится   на  60%
совместимым  с PROFI (невозможен
только экран 512 на 240 точек).
 Просьба   прислать   заявки  на
изготовление  этой платы , а так
же   некоторые   соображения  по
поводу необходимости контроллера
на  этой  плате  и сегментации в
другие адреса по адресу редакции
журнала SPECCY.

              * * *



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

Авторская программа - Описание программы для просмотра файлов в формате ".GRF".

Игроскоп - Подсказки к играм : "Hobbit", "Звёздное наследие", "Extreme".

Игроскоп - Подсказки к играм : "Pegasus". Рейтинг программ на январь 1996 по городу Челябинску.

Музобоз - Описание трех конкурсных работ.

Мультролик - Первая работа на конкурс мультфильмов.

Наш город - О городе Челябинске.

Новелла - Фантастическая новелла по игре "Laser Squad" (продолжение).

От редакции - О новшествах в журнале.

Программирование - Программа позволяющая производить смену изображения экрана в режиме 48К в виде вертикальных шторок с синхронным изменением цвета бордюра.

Реклама - Реклама ...

Тусовка - Первые ласточки на конкурс : "Самый смешной анекдот на компьютерную тему.


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

Похожие статьи:
Рек-тайм - Реклама и объявления ...
Послесловие - Как делался этот номер.
Проходилки - Секреты по прохождению игр: Robin of Ssherwood.

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