User Tag List

Показано с 1 по 10 из 443

Тема: Пишу шедевр для «Вектора 06Ц»

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    467
    Спасибо Благодарностей отдано 
    797
    Спасибо Благодарностей получено 
    277
    Поблагодарили
    106 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SegaBoy, спасибо за объяснения!!

    Ещё возниклм вопросы:
    плеер (исходник на asm), который ты дал он же в теле основной программы работает (насколько я понял), а ещё в программе обработки прерываний должны обрабатываться нижеприведённые данные.
    pit_cnt1_port equ $ec00
    pit_cnt2_port equ $ec01
    pit_cnt3_port equ $ec02
    pit_ctrl_port equ $ec03
    pit_init1 equ $3e
    pit_init2 equ $7e
    pit_init3 equ $be

    Например на Векторе для вывода одного отдельного звука в программе обработки прерываний есть программирование таймера ВИ53:
    MVI A,0B6H ; УСТАНОВИТЬ РЕЖИМ 3 ТАЙМЕРА ДЛЯ КАНАЛА 2, ЗАПИСЬ КОЭФ-
    OUT 08 ; ФИЦИЕНТА ДЕЛЕНИЯ В ДВА БАЙТА - СНАЧАЛА МЛ. ПОТОМ СТ.
    MOV A,M ; ВЗЯТЬ МЛАДШИЙ БАЙТ КОЭФФ. ДЕЛЕНИЯ И
    OUT 09 ; ЗАПИСАТЬ В КАНАЛ 2 ТАЙМЕРА.
    INX H ; ПЕРЕДВИНУТЬ УКАЗАТЕЛЬ НА СЛЕДУЮЩИЙ БАЙТ ПАРАМЕТРОВ.
    MOV A,M ; ВЗЯТЬ СТАРШИЙ БАЙТ КОЭФФ. ДЕЛЕНИЯ И
    OUT 09 ; ЗАПИСАТЬ В КАНАЛ 2 ТАЙМЕРА.

    А в программе обработки прерываний как у тебя они обрабатываются ?
    Или же на Апогее это по другому работает ?

    Цитата Сообщение от SegaBoy Посмотреть сообщение
    ....есть ещё какие nsf на примете чтобы попробовать из них конвертировать? Например мелодии из марио довольно прилично звучат без громкости и без огибающих. Может ещё какие-то более дружелюбными для портирования окажутся ))
    Думаю если я найду мелодию, то она вновь может оказаться с проблемами

    Спасибо, что помогаешь мне разобраться в этом вопросе.
    Если у меня получиться, то я сам их конвертировать буду. Ну а если не получиться, то буду искать подходящую мелодию

    - - - Добавлено - - -

    Информация из справочника Черезова А. по Вектору-06Ц

    ; десятичные значения нот (частота канала для ноты)
    note_table:
    ; контр-октава
    dw 45872,43290,40872,38560,36408,34364,32432,30612,28 902,27273,25729,24311 ; до/до#/ре/ре#/ми/фа/фа#/соль/соль#/ля/ля#/си
    ; большая-октава
    dw 22936,21645,20436,19280,18204,17182,16216,15306,14 451,13636,12876,12146 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; малая-октава
    dw 11468,10823,10218,9646,9102,8591,8108,7653,7229,68 18,6438,6075 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 1-я октава
    dw 5734,5415,5107,4823,4551,4296,4054,3827,3614,3409, 3219,3036 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 2-я октава
    dw 2867,2708,2554,2412,2275,2147,2027,1913,1805,1705, 1609,1519 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 3-я октава
    dw 1433,1353,1277,1205,1137,1074,1014,957,904,852,804 ,759 ; до до# ре ре# ми фа фа# соль соль# ля ля# си
    ; 4-я октава
    dw 717,677,639,602,569,537,507,472,452,426,402,380 ; до до# ре ре# ми фа фа# соль соль# ля ля# си

    В музыкальной нотной грамоте я не грамотен.
    Поэтому вопрос - почему в этой таблице на ноте ми и ноте си нету # ?

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    05.01.2009
    Адрес
    Харьков
    Сообщений
    157
    Спасибо Благодарностей отдано 
    24
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    а ещё в программе обработки прерываний должны обрабатываться нижеприведённые данные.
    Судя по всему, на Апогее порты отображены в адреса ОЗУ, поэтому первые четыре константы в этом коде - это Апогеевский аналог адресов Векторовских портов 08-11.
    Три последние константы - это константы управляющих слов для инициализации каналов таймера. Почему для второго канала это $be, а не $b6 - возможно, на Апогее используется другой режим таймера.

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

    Считай, что прерывание, это метроном, который тикает 50 раз в секунду. Зарядил канал таймера играть первую ноту - отсчитываешь нужное количество тактов метронома сообразно длительности ноты и выбранному темпу - затем программируешь канал таймера играть следующую ноту (или останавливаешь таймер, если нужна пауза).

    - - - Добавлено - - -

    Цитата Сообщение от metamorpho Посмотреть сообщение
    В музыкальной нотной грамоте я не грамотен.
    Поэтому вопрос - почему в этой таблице на ноте ми и ноте си нету # ?
    Потому что диез (и бемоль) - это расстояние в полутон между нотами.
    Знакомая же нам всем гамма до-ре-ми-фа-соль-ля-си, которую музыканты называют "до мажор", в плане разницы высоты звука между соседними нотами - это "тон, тон, полутон, тон, тон, тон, полутон"

    Вот там, где между соседними нотами - всего полутон (между ми и фа, и между си и до) - ты и не видишь в таблице никаких диезов, потому что в мажорной гамме фа - это и есть ми диез, а до - это си диез предыдущей октавы.

    Эти 2 пользователя(ей) поблагодарили x-code за это полезное сообщение:

    jerri(13.08.2020), metamorpho(13.08.2020)

  4. #3

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    467
    Спасибо Благодарностей отдано 
    797
    Спасибо Благодарностей получено 
    277
    Поблагодарили
    106 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от x-code Посмотреть сообщение
    Судя по всему, на Апогее порты отображены в адреса ОЗУ, поэтому первые четыре константы в этом коде - это Апогеевский аналог адресов Векторовских портов 08-11.
    Три последние константы - это константы управляющих слов для инициализации каналов таймера. Почему для второго канала это $be, а не $b6 - возможно, на Апогее используется другой режим таймера.
    .....
    Так это что, получается этот код плеера с Апогея и есть то что нужно вставлять
    в программу обработки прерываний на Векторе (изменив управляющие команды для портов) ?

    Цитата Сообщение от x-code Посмотреть сообщение
    .........Вот там, где между соседними нотами - всего полутон (между ми и фа, и между си и до) - ты и не видишь в таблице никаких диезов, потому что в мажорной гамме фа - это и есть ми диез, а до - это си диез предыдущей октавы.
    x-code, спасибо, теперь стало понятней !!

  5. #4

    Регистрация
    05.01.2009
    Адрес
    Харьков
    Сообщений
    157
    Спасибо Благодарностей отдано 
    24
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    этот код плеера с Апогея и есть то что нужно вставлять
    в программу обработки прерываний на Векторе (изменив управляющие команды для портов) ?
    Ну, почти. В Апогее, по всей видимости, синхронизация с обратным ходом луча делается не по прерыванию, поэтому в коде плеера есть цикл ожидания обратного хода луча с меткой vsync. На Векторе это не нужно, т.к. обработчик прерывания сам вызовется в нужный момент. А вот всё, что идёт ниже цикла ожидания - да, вполне можно переиспользовать, только заменив в коде программирования режимов таймера обращения к ячейкам памяти pit_xxxx_port обращениями к соответствующим номерам портов на Векторе.

    Этот пользователь поблагодарил x-code за это полезное сообщение:

    metamorpho(13.08.2020)

  6. #5

    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    403
    Спасибо Благодарностей отдано 
    50
    Спасибо Благодарностей получено 
    90
    Поблагодарили
    66 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от x-code Посмотреть сообщение
    ... Почему для второго канала это $be, а не $b6 - возможно, на Апогее используется другой режим таймера.
    При установке режимов работы 2 или 3, третий бит может иметь любое значение. Поэтому $3e, $7e и $be равнозначны $36, $76 и $b6.

    Этот пользователь поблагодарил SegaBoy за это полезное сообщение:

    x-code(13.08.2020)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Бейсики для Вектора-06Ц и клонов
    от ivagor в разделе Вектор
    Ответов: 696
    Последнее: 25.10.2025, 02:34
  2. Картотека ПО для Вектора-06ц
    от svofski в разделе Вектор
    Ответов: 719
    Последнее: 04.04.2024, 11:13
  3. Восстановление Вектора-06ц
    от Daniil Chislov 86 в разделе Вектор
    Ответов: 100
    Последнее: 11.03.2021, 00:23
  4. Ответов: 198
    Последнее: 26.04.2020, 13:05
  5. Ответов: 58
    Последнее: 06.07.2019, 23:56

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •