Использование плееров, которые переназначают SP

CALL'ы и RET'ы

Postby TS-Labs » Sun, 13.07.2014 04:51:45

Недавно встретил в одном коде следующие грабли: использовались строчные прерывания и плеер от PT3, который дергает SP для своих нужд. Что при этом происходит, лучше не думать, ибо несложно догадаться, что инт приходит прямо в плеере.
Выводы:
- не использовать хитрые плееры с SP,
- вызывать плеер только в том месте растра, где гарантированно не припрется инт, даже на пике потребления тактов плеером.
User avatar
TS-Labs
 
Posts: 4995
Joined: Thu, 26.07.2012 01:29:56

Postby VBI » Sun, 13.07.2014 09:16:37

в общем, в рубиконе строчными интами выводится цифра в ковокс.
под АУ, естественно. и на описанные выше грабли я уже наступил.
в граблях:
1. плеер занимает несколько (не чёткое количество) строк.
2. плеер от PT3 постоянно использует SP для снятия данных из памяти.
3. плеер без подобных проблем не знаком.

решением оказалось: не менять плеер, оставить воспроизведение во фреймовом инте;
строчные инты делают всё что и должны;
а в основном цикле пересчёт адреса, с которого продолжаем вывод в ковокс.
User avatar
VBI
 
Posts: 1862
Joined: Mon, 03.06.2013 09:20:29

Postby EARL » Sun, 13.07.2014 10:36:21

Знаю, что не всегда это возможно, но проще запрещать новые прерывания в ISR.
User avatar
EARL
 
Posts: 71
Joined: Fri, 30.08.2013 09:29:15

Postby TS-Labs » Sun, 13.07.2014 12:44:28

Ну ковокс же прерывать нельзя иначе хрип. Значит будем переделать плеер под без SP, все равно в скорость не упирается.
User avatar
TS-Labs
 
Posts: 4995
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sun, 13.07.2014 15:49:07

В аттаче плеер PT3, где убрано использование SP. Фикс быстрый и неоптимальный. Оптимизации приветствуются.
Attachments
pt3play_no_SP.rar
(6.94 KiB) Downloaded 117 times
User avatar
TS-Labs
 
Posts: 4995
Joined: Thu, 26.07.2012 01:29:56

Postby VBI » Sun, 13.07.2014 16:16:28

TS-Labs, заметь насчёт хрипа в рубиконе.
технологию я описал.
а вот уплощённый плеер действительно нужен.
User avatar
VBI
 
Posts: 1862
Joined: Mon, 03.06.2013 09:20:29

Postby TS-Labs » Sun, 13.07.2014 16:26:05

Ну, так а собсно - поменять пару строк в плеере, убрать б-гмерзъкъ SP, сколько там тех нещасных тактов.
Еще одна вещь, которую я никогда не понимал в плеерах под АУ. Почему сброс новых значений в АУ происходит В КОНЦЕ плеера, а не в начале? Его ж колбасит вверх/вниз. Не, ну я понимаю, что человеческое ухо вроде как не слышит, но это же не труЪ! Первыми командами на обработке прерывания с плеером обязан стоять дамп в порты, который будет вызываться в детерминированно постоянной фазе относительно чего-угодно, лишь бы не плавал. Там же должна стоять обновлялка ковоксного хрипера, причем АТОМАРНАЯ, это значит, что 16 бит значения должны записываться через ld (player_addr), reg_pair, а если нужно еще и указывать пагу, то делать обязательно DI: HALT перед записью всех 24 бит, а то может выйти что одно записалось, пришел инт, тогда только записалось другое, и поплыли в адЪ...
User avatar
TS-Labs
 
Posts: 4995
Joined: Thu, 26.07.2012 01:29:56

Postby Sergey78 » Sun, 13.07.2014 16:35:23

TS-Labs wrote:Ну, так а собсно - поменять пару строк в плеере, убрать б-гмерзъкъ SP, сколько там тех нещасных тактов.

Vortex player и так медленный. Будет вообще слоупок.
Sergey78
 
Posts: 412
Joined: Wed, 05.09.2012 20:04:40

Postby VBI » Sun, 13.07.2014 17:07:16

Sergey78, там не так много обращений. что-то в духе ld sp,hl pop hl и дальше, но хватает
User avatar
VBI
 
Posts: 1862
Joined: Mon, 03.06.2013 09:20:29

Postby introspec » Sun, 13.07.2014 21:44:42

Господа хорошие, возьмите PSG плейер и не парьтесь.
Развёрнуто: сидят, понимаешь, на машине с 4мб памяти и экономят на колбасных обрезках :)
User avatar
introspec
 
Posts: 579
Joined: Sun, 14.07.2013 15:36:47

Postby TS-Labs » Sun, 13.07.2014 21:57:04

Спек, да тут скорости хватает на все на свете, да еще при аппаратной графике. Байка - такты.
...
Замерял чо ухучшилось:
+230 тактов в основном цикле плея (1480 против 1710)
+295 тактов в пике (1899 против 2194).
(Замеряно при работе на 14МГц. "Такты" = такты 3.5 МГц как показывает анрыл. 1899 тактов 3.5 это 8.5 строки видео. Сколько это в тактах 14 я не обращаю внимания.)
User avatar
TS-Labs
 
Posts: 4995
Joined: Thu, 26.07.2012 01:29:56

Postby introspec » Sun, 13.07.2014 22:03:27

TSL, ты реально не понимаешь. Мой плейер тратит 1.35к тактов МАКСИМУМ. При этом все регистры вылетают за первые 600 тактов, т.е. почти максимально быстро. Вариант плейера psndcj тратит 1.1к тактов МАКСИМУМ. Записи регистров там не так компактны, но уж точно не как в вортексе и т.п. И никакого маньячества со стеком.
User avatar
introspec
 
Posts: 579
Joined: Sun, 14.07.2013 15:36:47

Postby TS-Labs » Sun, 13.07.2014 23:49:00

Да понимаю я все :) Я к тому, что нет необходимости экономить на плеере.
Ну ок, а как ты генеришь дамп? Это ж ждать несколько секунд. Или сразу грузить? Тогда 100500 килобайт.
User avatar
TS-Labs
 
Posts: 4995
Joined: Thu, 26.07.2012 01:29:56

Postby idxi » Sat, 19.08.2017 19:04:02

TS-Labs wrote:Спек, да тут скорости хватает на все на свете, да еще при аппаратной графике. Байка - такты.

Чоткий ответ :)
User avatar
idxi
 
Posts: 80
Joined: Mon, 03.07.2017 16:54:54

Postby introspec » Sat, 19.08.2017 19:35:57

Так и памяти хватает. Поэтому аргумент не вполне канает имхо...
User avatar
introspec
 
Posts: 579
Joined: Sun, 14.07.2013 15:36:47


Return to Coding

Who is online

Users browsing this forum: No registered users and 0 guests

x