заэмульте пожалуйста tape loading error при включении компрессора холодильника... :)
Вид для печати
заэмульте пожалуйста tape loading error при включении компрессора холодильника... :)
для этого нужен usb адаптер для подключения холодильника к компу :)
Есть две странички:
1) http://www.ramsoft.bbk.org/floatingbus.html#SNOWEFFECT и
2) http://www.worldofspectrum.org/faq/r...m#IOContention .
В первой сказано, что в модели 48K байт по адресу 0x4000 берется на такте #14347. Во второй сказано, что первая задержка получается на такте #14335. Вопрос: кому верить?
Теперь представим, что вторая ссылка верна и ULA действительно начинает работу на такте #14335 так, что цикл обращения к памяти, попадая на этот такт, задерживается на 6 тактов. Тогда работа ULA должна выглядеть следующим образом.
T-state Action
14335 IDLE
14336 IDLE
14337 READ
14338 READ
14339 READ
14340 READ
14341 IDLE
14342 IDLE
14343 IDLE
14344 IDLE
...
Возникает вопрос: если такт #14335 -- это середина ожидания в цикле ULA ДО первого чтения из памяти, то что такой ULA будет выводить на экран на такте #14336 (как об этом говорит та же страничка)? Если он на самом деле читает раньше, тогда и задержки должны быть до такта #14335. Если позже, то и вывод на экран должен быть позже. Это даже если не обращать внимания на то, что, по этой схеме, сам вывод начинается не на границе цикла ULA.
Теперь еще интереснее. Эта же самая страница говорит, что расчет задержки при доступе к порту ведется ровно так же, как в случае обращения к памяти. Это что должно означать? Что четырехтактовое чтение из порта на такте #14342 пройдет без задержки? И что тогда будет делать ULA на такте #14345, когда ему наступит пора начинать свой цикл?
К слову. Я из вредности даже реализовал ровно эти задержки. Использовал тест BBG с цветными вертикальными полосами во всю высоту экрана. Разумеется, ничего похожего на правду это не дало.
Телепаты в отпуске, о чем речь очь смутно понятно
И ваще бред сопоставлять циклы ула с циклами процессора, они никак не синхронизированы, и расхождение будет зависить от убитости кондырей в схеме сброса, температуры в комнате, напряжения в сети и прочей лабуды :)
В общем попытаюсь с остановами клока проца на пальцах показать,
у ULA есть внутрений счетчик 3 бита, для примера (более точно нада копать) последние 2(или 3 фик его помнит) такта ула отдает процу остальные забирает себе (это в области медленной памяти), так вот если ула видит что проц ломица к памяти за пределами этого окна в 2(3) такта, она останвливает процу клок до окна,
и по наступлению окна проц отработает цикл доступа к памяти или порту с установленым битом A0=0, в случае чтение из порта с A0=1 ула не останавливает проц и мы все дружно получаем эффект порта FF (то есть то что собирается читать ула для вывода на телек)
примерно так
Добавлено через 1 минуту
ЗЫ. Мог где то наврать :) так что использование информации на свой страх и риск
Тут не прав, первое же обращение к памяти ULA, синхронизирует проц под свои такты.
Да нет, трезвый. Это логика останова проца в медленной памяти. Вот только не помню эти 8 циклов с какой частотой идут, толи 3.5(скорей всего) толи 7МГц.
Кста у меня сложилось точно такое же ощущение о вашей трезвости :)
Добавлено через 46 минут
Пипец, это сутки нада что бы догнать о чем речь, говорю телепаты в отпуске
в обще циклов READ будет всего 2
Добавлено через 51 минуту
Абсолютно непонимаете работу спековской улы, во первых она ничего не ждет, во втрорых она работает с мометна когда ей будет достаточно електричества, у неё есть свой строго заданый цикл и все кто ей мешают -мостанавливаются, а если не останавливаются то и получаеццо эфекты снега и порт FF
Почему тогда с монитором такого не было?
При том что порт AY - нечетный?! :v2_wacko:
Кстати клевый глюк - взрывы всякие очучались неплохо, типо как через сабвуфер :)
А ты еще не забил на "двухбитный звук"? Не возникло желания с RD2 разобраться?.. :v2_devil:
Верить тем, кто живой, т.е. ВОС.
Про всё остальное: уле надо на 8 тактов прочитать из памяти 2 байта. Это легко посчитать из соображения 128 тактов - экран 32 байта, остальное - бордюр. Всё получится, если всё сделать аккуратно. Кривизну, Хиггинс, ищите у себя в коде. Или изучайте чужой.
ула за строку читает 64 байта
А как у Вас реализованы задержки в медленой памяти? Округляется время исполнения к кратной 4 тактам ??
7 тактные команды к 8 тактам (правильней конечно по машинным циклами)
Здесь действительно верить FAQ на WOS. Соответственно, табличка с тактами работы ULA, которую я выписал выше тоже верна: задержки начинаются с такта #14335, первое чтение из видеопамяти на такте #14337. Такт, с которого видны чтения ULA через нечетный порт после 0x4000 и до 0x8000 -- это такт #14338 (разумеется), а не #14347, как говорит Ramsoft. (К слову, при такой реализации floatspy работает именно так, как сказано на страничке Ramsoft, т.е. просто ошиблись с подсчетом тактов.)
Насчет такта первого вывода на экран WOS определенно врет. У меня получилось, что ULA выводит первые точки из ячеек (0x4000)/(0x5800) на следующий такт после первых четырех тактов чтения ULA. Это уже похоже на какую-то логику.
Способ расчета величины задержки действительно один и тот же для памяти и портов. Условия и способы применения самих задержек разные. Причем задержки по памяти и портам расписаны раздельно, а задержки на дополнительных тактах M-циклов процессора смешаны с задержками по памяти. Хотя логика и причина у всех этих задержек одна и та же.
нужно еще учитывать что читаемый байт не сразу попадает в видеосигнал, он предварительно защелкивается в сдвиговом регистре, после чего уже начинаются сдвижки...
Да, в пентагоне напрямую.
Везде должен быть напрямую :)
А кто-то еще сомневается, что "спектрум *****" :D
если это тот wait, который выравнивает M1 по чётным тактам, то нет (в смысле не учитывать): wait сам по себе, выравнивание бордюрного вывода на 8 пикселей экрана - само по себе. Доказательство - пара бордюрных демок для скорпиона. Там бордюр стоит как вкопанный и строго выровнен с изображением на основном экране.
Да как сказать пентагон ваще без Wait обходится, и из за упрощения спокойно того что зашито в альтере могли и не учесть, но судя по тому что туда сигнал идет то это не спроста.
Можно уточнить, как конкретно проявляется округление M1? Всегда? Только в режиме турбо? Или при доступе к видеопамяти одновременно с видеоконтроллером? А то я что-то запутался ;)
В скорпионе всегда. Иначе мультиколор бы не работал. Наверное, в турбе есть ещё дополнительные задержки при обращению к экрану, но я в эмуляторе это не реализовывал для простоты. Мне мультиколор нужен для демок, а демок для скорпиона маловато, и думаю, для турбы их просто нет (как и для других клонов), так что особенно задержками в турбе я не задавался.
Почему тогда турбо в Скорпионе при выполнении кода из ОЗУ не 2x? Память подает /WAIT? Какие задержки в каких случаях осуществляются?
Спасибо ;)
Все же вопрос по задержкам в Скорпионе в режиме турбо актуален, теперь эта информация нужна мне самому. Кто-нибудь может намекнуть, где или как можно получить эти сведения?
Если в наличии есть реальный скорпион, то вы можете провести тесты, и получить нужную информацию. Если нет, надо искать владельцев реала, и договариваться.
Тесты, например, такие: в цикле увеличивается BC, а к области экрана происходит обращение, и так до прерывания. Затем то же самое, но обращение происходит, например, к 8000h вместо области экрана. Затем сравнивается значение BC и подсчитывается количество тактов, истраченных на задержки при обращении к памяти. Чаще всего такого грубого теста достаточно, чтобы узнать стоимость одной задержки. Далее тест можно чуть изменить, например, делать в цикле 2 обращения, и опять провести сравнение с эталоном. Этого будет достаточно, чтобы проверить правильность первого теста.
Эх, вот реала-то в наличии и нету :(
Вообще-то я задаю вопросы вместо того, чтобы проверять на реале, потому лишь, что времени прошло много, наверняка уже кто-то проделал эту работу. Не хочу изобретать велосипед, да еще и людей напрягать зазря...