Программирование - Программа позволяющая производить смену изображения экрана в режиме 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.
* * *
Другие статьи номера:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Программирование - Программа позволяющая производить смену изображения экрана в режиме 48К в виде вертикальных шторок с синхронным изменением цвета бордюра.
|
|
|
|
|