╒══════════════════════════════╕ │░░░░░ ПРОГРАММИРОВАНИЕ ░░░░░│ ╘══════════════════════════════╛ Предлагаем вашему вниманию программу полученную нами от Шабанова Владимира. Программа позволяет производить смену изо- бражения экрана в режиме 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. * * *