Страница 1 из 1

Специальный форум для программистов на спектруме!

Добавлено: Вс июл 02, 2006 13:17
Spectre
Я решил сделать отдельный форум в котором на первых порах буду сам, потом надеюсь и другие кодеры подтянутся по мере сил отвечать на вопросы по программированию на ассемблере процессора Z80. Приветствуются вопросы по архитектуре спектрума, портам, гоовым исходникам, способам работы, командам и так далее.

К сожалению активных кодеров осталось мало, поэтому внесу свой посильный вклад.

Добавлено: Вс июл 02, 2006 14:20
darkSAM
я хочу стать кодером :-)

Буду навещать этот форум.

Добавлено: Чт сен 20, 2007 17:54
Valeron
У меня вопрос. У Спектрума есть AY, с нее можно считывать состояние портов (кажется так делают индикатор уровня), есть регистр огибающей, там можно задать период изменения выходного уровня. Так можно ли использовать это как таймер квантов времени между прерываниями? Ну скажем что бы процессор прочитал из AY и подумал: "Ага, экран отрисовивается! Хм, не буду ничего делать в пятой банке памяти, пойду посмотрю что во второй есть не законченного" Ну примерно так.

Добавлено: Пт сен 21, 2007 8:54
Striker
Валера, ну и вопросики у тебя :)

Добавлено: Пт сен 21, 2007 18:28
Valeron
Да чего такого? Этож СПЕЦИАЛЬНЫЙ ФОРУМ ДЛЯ ПРОГРАММИСТОВ НА СПЕКТРУМЕ. Или AY это не на Спектруме? Просто у спека нету хардверного програмируемого таймера, а в AY есть огибающая, мне просто интересно - можно ли в произвольный момент времени прочитать ее значение? Если да, то подбираем ее величину так что бы она от максимального значения до минимального доходила за прерывание и программа при выполнении может прочитать из AY состояние и оценить сколько осталось до прихода INTа. Я подумал как нибудь мультиколор завязать на AY. Ну чисто в познавательных целях, а может и выгорело бы чего-нить интересное. Только раз уж этого до сих пор никто не применил за такой срок, то наверное невозможно это. Sorry за сумбурность изложения.

Добавлено: Ср сен 26, 2007 0:27
Spectre
Valeron писал(а):У меня вопрос. У Спектрума есть AY, с нее можно считывать состояние портов (кажется так делают индикатор уровня), есть регистр огибающей, там можно задать период изменения выходного уровня. Так можно ли использовать это как таймер квантов времени между прерываниями? Ну скажем что бы процессор прочитал из AY и подумал: "Ага, экран отрисовивается! Хм, не буду ничего делать в пятой банке памяти, пойду посмотрю что во второй есть не законченного" Ну примерно так.
Теоретически это возможно, но ты учел затраты времени на чтение из портов и логику обработки состояний? Если это нужно для мультиколора, там критична каждая команда (за время выполнения NOP'а четыре пикселя рисуется!).

Добавлено: Чт сен 27, 2007 0:53
Valeron
Привет, я вообще-то мультиколор просто для примера взял, меня сама идея интересует. Там гдето обсуждалось квантование времени меньше прерывания, можно конечно процом отсчитывать - тогда проц занят и не делает что надо. Можно процедуры расчитывать с точностью до такта, но это утомительно, и кроме того чревато не предвиденными ситуациями. А вот если AY отсчет ведет, то проц можно занять произвольной задачей, а когда освободится - пусть постоянно считывает с AY и в момент, который мы зададим огибающей, переходит к другой задаче. Короче лучше конечно таймер в компе иметь и не извращаться. Спасибо что поддержал мою мысль.

Добавлено: Пт сен 28, 2007 23:36
Valeron
Spectre писал(а):...
Теоретически это возможно, но ты учел затраты времени на чтение из портов и логику обработки состояний? Если это нужно для мультиколора, там критична каждая команда (за время выполнения NOP'а четыре пикселя рисуется!).
Тут еще подумал, ведь мультиколор же не обязательно классический делать, можно ведь применить два цвета на верхнюю половину знакоместа, а потом переключить экран на 7 банк и отображать нижнюю половину знакоместа со своими атрибутами. Интересно то что в 5 банке можно перерисовывать нижние четыре строки знакомест, а в седьмой - верхние, это в те моменты когда соответствующая банка в экранную область включена. Когда перерисовка будет закончена нужно поменять очередность переключения банков в экранной области и картинка изменится. Удобство заключается в том что в верхней области по адресам #C000-#FFFF в это время могут лежать банки со спрайтами, графикой, чем угодно, то есть не затрачивается время на переброску скажем в экран седьмого банка из, например, третьего через второй, в то время когда пятый стоит в экране.
Минус этого способа, даже МИНУСИЩЕ!!! в том что надо синхронизироваться с выборкой видео данных из экранной области.
Бред наверно, а может и пригодится идея кому-нибудь, когда-нибудь.

Добавлено: Ср июн 18, 2008 16:47
X-Factor
вот так тема..
ну раз нет ниче нового то посмотрим на это по другому...
цытато:
"ага, экран отрисовываеццо, пойду посмотрю чего там не доделоно"
на это потратили дцать тактов..
причем с учетом синусоидального вида огибающей, не догнали в каком месте то экран прорисовываеццо. Ладно, этого избежали задав период так, чтоб полупериод синусоиды звука был равен времени отображения кадра (1 прерывание). составили подробную карту цифирок и получили что всего то есть #00-#0f т.е. 16 значений, поделили на 16 1 halt, а смысл?
как его использовать? да и зачем? похоже на серию бесполезных изобретений... типа видели как я крут, могу и так...

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

Добавлено: Сб июл 12, 2008 20:00
Valeron
Забей! Это были мысли вслух. Причем не самые умные.