PC-01 Lviv
http://pc01.lviv.ua/forum/

Программирование звука
http://pc01.lviv.ua/forum/viewtopic.php?f=3&t=15
Page 1 of 4

Author:  Zelya [ 10 Nov 2010, 19:13 ]
Post subject:  Программирование звука

Интересует сабж. В "руководстве" он не описан. Единственный способ, который я, пока, знаю - это вызов подпрограммы (той же, которую использует родной бейсик). Как можно использовать звук попроще?

Author:  sadfsdfsdaf [ 07 Dec 2010, 17:00 ]
Post subject: 

Ну, там то как раз просто, один из битов порта С2 выведён на магнитофон (он-же - звук).
Code:
   Назначение бит порта C (C2H ):
┌───┬───┬───┬───┬───┬───┬───┬───┐
│ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │
└───┴─┬─┴───┴─┬─┴───┴─┬─┴─┬─┴─┬─┘
      AC     ЧМЛ     SC   │  ЗМЛ
     BUSY          STROBE └───── VIDEO
     ГОТОВ         ПЕЧАТЬ
учитывая, что в системном пзу не всегда корректно переключают видеорежимы, в ходе работы периодически издаётся звук разной тональности и щелчки (бейсиковские LOCATE, PAINT и т.д.)

там есль по дизассемблятине посмотреть, то будет либо
MVI A,2
OUT C2
либо
MVI A,FF
OUT C2

отсюда и проблема... (фича)

Author:  Zelya [ 08 Dec 2010, 13:34 ]
Post subject: 

Спасибо! Еще бы дизассемблер SOUND'а :roll: Хотя, что мешает самому "подглядеть" :)

Author:  sadfsdfsdaf [ 09 Dec 2010, 12:07 ]
Post subject: 

да это то как раз не проблема (дизассемблер звука), он там маленький. меня в своё время заинтересовал резонанс встроенного пьезоспикера на одном из значений штатного sound (такой резкий дребезжащий звук, очень сильно отличается от смежных, да и от остальных тонов вообще).
Code:
DE94 
DE94 ; ███████████████ S U B R O U T I N E ███████████████████████████████████████
DE94 
DE94 ; Выдача звука.
DE94 ; 
DE94 ; параметры:
DE94 ; 1) в L "частота" (длительность полуволны)
DE94 ; 2) в D длительность звукового сигнала
DE94 ; 
DE94 ; кодирование условное, т.к. частота
DE94 ; задаётся в формате 0x00??, а длительность в 0x??FF
DE94 ; соответственно количество полупериодов в заданной
DE94 ; длительности это отношение одного к другому или:
DE94 ; 256 * (T + 1) - 1 - F
DE94 ;  где T время, а F условная "частота"
DE94 
DE94 SOUND:                  ; CODE XREF: seg000:F81Ej
DE94         mvi     h, 0
DE96         mvi     e, 0FFh
DE98 
DE98 pause_cycle:                ; CODE XREF: SOUND+28j
DE98         mov     b, h        ; bc = hl
DE99         mov     c, l        ; т.е. это, фактически,
DE99                     ;  частота (длительность полупериода)
DE9A         mvi     a, 0FFh     ; 1 ===> SPEAKER
DE9C         out     0C2h
DE9E 
DE9E pause_tick1:                ; CODE XREF: SOUND+13j
DE9E         dcx     d           ; do {
DE9F         mov     a, d        ; if (--de == 0) exit;
DEA0         ora     e
DEA1         rz
DEA2         nop
DEA3         nop
DEA4         dcx     b           ; } while (--bc);
DEA5         mov     a, b
DEA6         ora     c
DEA7         jnz     pause_tick1     ; do {
DEAA         mvi     a, 0FEh     ; 0 ===> SPEAKER
DEAC         out     0C2h
DEAE         mov     b, h        ; bc = hl
DEAF         mov     c, l        ; т.е. это, фактически,
DEAF                     ;  частота (длительность полупериода)
DEB0 
DEB0 pause_tick2:                ; CODE XREF: SOUND+25j
DEB0         dcx     d           ; do {
DEB1         mov     a, d        ; if (--de == 0) exit;
DEB2         ora     e
DEB3         rz
DEB4         nop
DEB5         nop
DEB6         dcx     b           ; } while (--bc);
DEB7         mov     a, b
DEB8         ora     c
DEB9         jnz     pause_tick2     ; do {
DEBC         jmp     pause_cycle     ; bc = hl
DEBC ; End of function SOUND
DEBC 

Author:  Zelya [ 17 Dec 2010, 12:39 ]
Post subject: 

Спасибо! А код из старых "залежей" или "свежедизассемблированный"? :)

upd.
09/02/2012: Ответы вынесены в отдельную тему.

Author:  sadfsdfsdaf [ 23 Dec 2010, 13:32 ]
Post subject: 

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

кстати, я видел в сети альтаировский бейсик (тот самый, от билла гейтса и его товарища), со львовским он имеет много общего, когда-то сравнивал.

Author:  Zelya [ 05 Jan 2011, 13:29 ]
Post subject: 

Ну, Altair, если не ошибаюсь, был единственным западным персональным компом на том же проце (i8080), поэтому бейсики и должны быть схожи... Я так думаю... :)

А чем, кстати, дизассемблировали?

Author:  liberation [ 05 Jan 2011, 18:44 ]
Post subject: 

Ненавязчиво вмешаюсь в разговор. По поводу звука - наиболее изощренный (по меркам "Львова", конечно) саунд был реализован в игре "Star Raiders". И игра, кстати, давала неплохие заделы по играбельности, а по меркам "Львова" почти в шедевры выходила. С генерацией звука стало значительно лучше, после выхода в свет книги "Как написать игру на ассемблере для Zx-Spectrum", где были продемонстрированы кое-какие практические подходы. Но в целом "Львов" был практически нем. Хотя... Со звуком можно припомнить эксперименты разве что в муз.редакторе "Mozart". Однако этот действительно интересный продукт явно требовал доработки, которой, к сожалению, не последовало. А возможность адаптации "Wham! The Music Box" со Спекки Алексей Мамонтов серьезно рассматривать не стал, насколько я помню.

Но мой вопрос не о том. А существуют ли какие-нибудь действительно эффективные кросс-ассемблеры для К580? Знаю, для Z80 наработки присутствуют, но это все-таки другой процессор.

Author:  sadfsdfsdaf [ 09 Jan 2011, 00:26 ]
Post subject: 

2 Zelya: IDA конечно, чем же ещё.... (это уже де-факто стандарт)

2 liberation: а вот кросс-ассемблеры для КР580 .... мне в своё время попадались исходники микрософтовского M80/L80 для РС, но навскидку адреса не подскажу.
разве что вот, нагуглил - http://www.msxpro.com/download/m80l80pc.zip - бинарный порт

Author:  liberation [ 09 Jan 2011, 18:31 ]
Post subject: 

Quote:
разве что вот, нагуглил - http://www.msxpro.com/download/m80l80pc.zip - бинарный порт
Спасибо! Это - "тот самый слон, тот самый чай". Удобная вещь для разработки, приятно сейчас пересмотреть файл с говорящим названием MANUAL.TXT :)

Author:  ivagor [ 29 Aug 2012, 19:00 ]
Post subject:  Re: Программирование звука

Есть такой редактор биперной музыки http://freestuff.grok.co.uk/beepola/help/intro.html
Он поддерживает несколько движков, в т.ч. парочку простых http://freestuff.grok.co.uk/beepola/hel ... e-msd.html и http://freestuff.grok.co.uk/beepola/hel ... e-tmb.html. Первый из них (потому что он не так страшно фальшивит при изменении задержек и т.п.) я кое-как адаптировал на 580ВМ80. Приложил пару примеров из комплекта Beepola.
Сам я тоже слегка пощупал этот редактор - мне он понравился (набрал в нем детскую песенку).
В общем можно писать несложную музычку на Львов ПК-01 в кроссредакторе.

Комментарии по плееру.
1. Он еще нуждается в ускорении. Пока что тон пониже, чем нужно и темп я немного почитил.
2. Для расширения кругозора домогаюсь до спикера слегка не так, как принято на Львове. В emu работает, интересно заработает ли на реале.
3. Для (мизерного) ускорения и сокращения программы (а также просто для удовольствия) используется недокументированная команда.


02.09.2012 - Удалил вложение со старой версией.

Author:  Zelya [ 29 Aug 2012, 19:12 ]
Post subject:  Re: Программирование звука

ivagor

Красота-то какая! Вот бы wilderness из golden axe там "покрутить" :roll:

Author:  ivagor [ 29 Aug 2012, 20:19 ]
Post subject:  Re: Программирование звука

Quote:
Красота-то какая!
Да, впечатляет как музыканты даже с использованием простого движка умудряются создавать интересные вещи.

Перезалил архив, добавил еще один (третий) пример.

Author:  b2m [ 29 Aug 2012, 21:35 ]
Post subject:  Re: Программирование звука

Quote:
2. Для расширения кругозора домогаюсь до спикера слегка не так, как принято на Львове. В emu работает, интересно заработает ли на реале.
Чё бы оно не работало. Вполне документированная для ВВ55 команда.
Quote:
3. Для (мизерного) ускорения и сокращения программы (а также просто для удовольствия) используется недокументированная команда.
Откроешь секрет? :)

Author:  liberation [ 29 Aug 2012, 22:19 ]
Post subject:  Re: Программирование звука

Quote:
2. Для расширения кругозора домогаюсь до спикера слегка не так, как принято на Львове. В emu работает, интересно заработает ли на реале.
Поделитесь секретом, как именно домогаетесь. Возьмем на вооружение!

p.s.
Эх, ребята, где же вы все были в начале 90-х, когда подобные знания действительно были на вес золота? :cry:

Page 1 of 4 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/