User Tag List

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

Тема: Прекрасный ассемблер КР580ВМ80А русские буквы

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

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

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan
    Ничего не заметили? Хорошо, следите: внутри SAVE_BYTE биты выводятся с равномерным таймингом и он задается константой. А вот снаружи мы имеем несколько команд, которые затягивают последний сформировавшийся уровень. Отсюда каждые 8 бит имеем растягивание уровня во времени и "рваный" звук. Причем, чем выше частота, тем заметнее рваный
    Ошибка на обычных константах невелика. После каждого 8-го бита добавляется не более 2-х процентов периода. Коэффициент детонации у магнитофона 4-го класса 5%. Так что это нормально и к проблемам не ведёт, т.к ошибка будет только при задержке на полпериода, т.е на 50%. Строго говоря это ошибка Попова, Зеленко и Горшкова, авторов МИКРО-80, откуда все МГ-подпрограммы и происходят. Не составляло проблемы программно выровнять паузы между фронтами.

    И очень сомневаюсь, чтобы у кого-то был настолько музыкальный слух, чтобы заметить "рванность" звука. И это легко выяснить. Достаточно написать программку выдающую длинную цепочку нулевых битов. А затем дать тому, кто претендует на музыкальный слух такой же, как у Моцарта, послушать эту запись и запись пилотона СПЕЦИАЛИСТА. Пусть попробует отличить, где "рваный" тон, а где чистый.

    HardWareMan, в приведенном фрагменте ошибка:

    Код:
    .
    LOOP:	LD	A,(HL)
    	CALL	SVBYTE
    	INC	HL
    	DEC	BC
    	OR	A
    	JP	NZ,LOOP
    Вообще-то, для организации цикла в МГ-подпрограммах ОРИОНА, СПЕЦИАЛИСТА и РК86 в подпрограммах SV_massiv и LD_massiv используется не задание числа байтов в BC, а сравнение текущего адреса с адресом конца блока. Для чего вызывается п/п-мма CMPDH, сравнение HL и DE, выставляющая флаг Z. Это конечно сути примера не меняет, но всё же лучше реальный текст. А ошибку исправьте и я отредактирую этот пост.

    А если цикл по счётчику, то чтобы не ошибаться и не вводить больше строк лучше пользоваться макрокомандой

    Код:
    .
    LOOP	MACRO	ADDR
    	DEC	BC
    	LD	A,B
    	OR	C
    	JP	NZ,ADDR		; JR для Z80
    	ENDM
    Последний раз редактировалось barsik; 20.07.2017 в 18:00.

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

  3. #2
    HardWareMan
    Гость

    По умолчанию

    barsik, уйди, постылый. Да, я в примере забыл MOV A,B (MOV а не LD!!!), и написал A вместо C в команде ORA. Да только вот это синтезированный пример. Хотите увидеть реальный? Вот:

    И он реально рваный. В отличие от Спектрумских трелей. Так что сгинь, тебя сюда никто не звал.
    Последний раз редактировалось HardWareMan; 20.07.2017 в 18:11.

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

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

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

Похожие темы

  1. Русские материалы по MSX
    от Nekto в разделе MSX
    Ответов: 6
    Последнее: 23.10.2025, 09:55
  2. Рекомпиляция Z80 -> КР580ВМ80А
    от svofski в разделе Вектор
    Ответов: 59
    Последнее: 28.06.2021, 15:10
  3. Вектор-06Ц: Эмуляция - КР580ВМ80А
    от Ramiros в разделе Вектор
    Ответов: 199
    Последнее: 17.08.2014, 22:19
  4. Аукцион БК0011 буквы м нет
    от alexsan в разделе Барахолка (архив)
    Ответов: 12
    Последнее: 07.08.2011, 11:32

Ваши права

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