Про supkalah я знал, копаться пока желания не было, а про reversi не знал. У них, кстати, первые 256 байт практически совпадают :)
Вид для печати
Про supkalah я знал, копаться пока желания не было, а про reversi не знал. У них, кстати, первые 256 байт практически совпадают :)
Фишка с таймером. Вот тест по мотивам SkyNet (я аттачил его раньше в виде com-файла):
http://vector06cc.googlecode.com/svn...test/timer.asm
На DE1 она эмуляцию не видит, потому что таймер стоит ровно. Мне это приятно, но к сожалению это говорит только о том, что таймер стоит ровно.
Уж купи SD-карту, их теперь разве что не задаром раздают.
значит нужна поправка скорости в эмуляторе.
и её регулировка тоже :)
b2m, желательно бы увидеть ещё пару поправок в эмуляторе:
1) путь к квазидискам, думаю лучше сделать так чтоб он не просто запоминал путь к ним, а также запоминал последний открытый.
2) иконка для открытия EPR файлов, может её сделаешь какойнибудь другой, хоть цветом выдели, а то две одинаковых кнопки.
и есть одна интересная идея, можешь ли сделать так что при нажатии на кнопку мышки в полноэкранном режиме стали видны тулбар и опции.
Речь о том, сколько машинных циклов успевает исполниться за заданное число отсчетов таймера (или сколько отсчетов сделет таймер, пока процессор выполняет такие-то инструкции). Частота тактирования таймера -- постоянна, а длина машинного цикла в 8080 непостоянна. Причем это еще накладывается на внутреннюю архитектуру Вектора, которая не позволяет процессору делать все, что ему вздумается. Поправкой типа плюс-минус 1 тут ничего принципиально не изменишь.
По моему таймерному тесту тоже быстроват -- он считает сверху вниз. b2m опережает ожидаемое значение всегда на 2 отсчета, то есть на 4 процессорных такта.
Судя по тому, что замаскированный под игру Exolon тест на исправность таймера всё же работает, ошибка кроется в моменте запуска, или может быть считывания. Если бы таймер работал несинхронно с процессором, в Эхолоне ползли бы белые полосы по экрану и вообще выглядел бы он дурно.
Работает ведь Ехолон?
Не совсем. Если ты запускал тест, то видел, что все считанные значения на 2 меньше требуемых. Я анализировал тест, и мне кое-что не совсем понятно. А именно: имеем две команды OUT, одна из которых загружает счётчик, другая считывает значение. Моменты начала выполнения этих команд (а значит и несколько смещённые моменты выдачи процессором сигнала записи в порт) отличаются на 100 тактов процессора, т.е. на 50 тактов счётчика. Значения счётчика, однако, судя по тесту, должны отличаться на 48. Я знаю, что реальное значение счётчика загружается из временного регистра по следующему за командой загрузки такту, т.е. вместо уменьшения имеем установку значения счётчика, таким образом за 100 тактов процессора начальное значение, исходя из моих рассуждений, уменьшается на 49. А реально - на 48. Где загвоздка?
Тут тоже не совсем ясно. Есть ещё diablo4, который перестал правильно устанавливать палитру, после того как я доделал мультиколор для b-ice. Разбирательство выявило, что последний цвет палитры устанавливается когда отображение бордюра уже кончилось и началось отображение экрана. Причём нехватает буквально пары сканлиний. В этой проге много команд OUT, но я не верю, что они выполнялись за не кратное 4-м количество тактов. Таким образом, тут эмулятор медленноват.
А вот в supkalah в качестве защиты от отладки используется такой приём: правильный переход осуществляется по прерыванию, а не в конце цикла. Однако цикл почему-то выполняется несколько большее количество раз, и в результате имеем неправильное значение регистров, что сказывается на дальнейшем выполнении программы. Тут эмулятор оказался быстрее, чем надо.
У меня загрузка выставляет только признак того, что счетчик загружен, разрешение счета включается по следующему положительному перепаду таймерного клока. Таким образом, первый раз единичка вычитается на второй после момента загрузки импульс таймерного клока. Если я опять ничего не перепутал.
Суперкалах у меня на DE1 нормально запустился и работает, а вот палитра в Диабло4 мне не кажется правильной. b2m, предлагаю считать diablo4 глючным творением -- мультиколор важнее.
Добавлено через 2 минуты
Хмм, а diab4 ведь не использует таймер..
А не может быть такого, что diabl4 была написана на эмуляторе ve27a? И на реале не проверялась? ve27a считает, что шина адреса ОЗУ палитры волшебным образом отключается от записывалки во время сканирования экрана. А на самом деле ни разу не отключается.
svofski
А особенности работы узла палитры в обычном 06ц и 06ц.02 тебе известны? Вроде где-то было написано, что в 02 можно было писать (успешно) в любое время?
ivagor, нет на самом деле. Особенно про ц.02. Просто где-то полгода назад мы с b2m в переписке пытались докопаться до правды-матки. И в процессе докопа пришли к выводу, что шина на самом деле одна, никакой магии нет и писать можно в любое время. Но надо понимать (это программисту Вектора надо понимать), что в момент сканирования экранной области записываться будет регистр того цвета, который сканируется в настоящий момент. И что индекс цвета бордюра -- это буквально те же самые проводки, что и адрес записи в ОЗУ палитры во время бордюра/обратного хода луча, а не два разных карла маркса.
Если бы это было доходчиво объяснено в документации с самого начала, многие люди не ломали бы себе голову.
Кстати, попробовал на DE1 Реверси, нифига не работает. Точно так же рисует "FRA & FV" (забавное по-моему название, кстати) и ни на что больше уже не отвечает. Перегруженный обработчик прерывания, который пытается сделать слишком много и не успевает толком опросить клавиатуру?
Добавлено через 3 минуты
Чего-то не пойму. По-моему должно не вычесть два раза. Один Tce на загрузку, второй Tce на разрешение счета. Итого пропускается два таймерных, четыре процессорных. Не так?
Упс, ivagor, так это твой bmpview и diabl4? Тогда ты ведь должен знать -- работало на реале или нет?
Про программирование палитры - сформулирую иначе (не буду трогать момент вывода изображения)
На 06ц не всегда получалось удачно записать с 1го раза в палитру даже на бордюре (для моего это именно так).
На 06ц.02, или может не на нем, а просто на отдельных экземплярах вектора, возможна была запись с меньшего количества раз.
Роман Пантелеев делал страничку с докой по этому вопросу, но эта страничка была доступна довольно недолго, себе например я ее не сохранил.
Было где-то именно про 02.
Добавлено через 1 минуту
А, это вот о чем идет речь! Нет, конечно, не работало. SES тогда же это обнаружил, насколько я помню.
Добавлено через 5 минут
А что, они где-то остались доступны?
Это вообще темная лошадка. Я думаю, что там какая-то была фигня со схемой, которая формировала сигнал записи. Выражаясь современным языком, она работала на глитчах. Возможно, что в более поздних вариантах там чего-то пофиксили и заработало с одного раза.
Про bmpview -- почему "конечно"? Просто потому что время такое было, или потому что там используется что-то не поддерживаемое железом?
"Конечно", потому что я не использовал проверенные на реале, ранее не подводивишие процедуры программирования палитры, а экспериментировал. Сначала, правда, я думал, что это будет работать на железном векторе, и даже вроде не совсем адекватно отрагировал на сообщение SESа о неработоспособности на реале, но потом смирился. Время реалов, к сожалению, прошло. Но все равно, теперь я использую при программировании палитры стандартные процедурки (хотя в некоторых игршках на реале могли бы быть сюрпризы. К сожалению вялая попытка реанимации моего 06ц прошла неудачно).
Понятно. Ну вот, а мы с b2m зря переживаем значит.
Реверси, правда, все равно работать не хочет. Ну и чорт с ним.
По поводу ви53.
Режим 2, на GATE и CLK приходит одно и тоже.
Как я понимаю, только в следующем такте после записи, по GATE (на котором CLK) запустится счетчик и еще через такт он вычтет первое значение. Итого искомые 2 такта.
Значит я правильно понял то, что сам полгода назад написал :biggrin:
На GATE там всегда логическая еденица, а режим 2 это делитель частоты и его не надо запускать стробом (через GATE), в отличие от режимов 1 и 5.
Представь некий период времени, в котором помещается три тактовых импульса: по первому тактовому импульсу счётчик грузится, по второму вычитается и по третьему тоже. Итого лишь на одно вычитание меньше, чем количество тактовых импульсов.
Нашел бумажную схему, в ней я даже цифры различаю. Оказалось что 29 - это /СБРОС (все же не все время 1 :)). Ну, короче, я облажался и на вышеприведенный бред можно не обращать внимания (в т.ч. по режиму 2 - писал про него, а ориентировался на рисунок из книжки по реж. 1).
Вобщем, выложил я новую версию, supkalah запускается, таймер я подправил SkyNet теперь не пишет, что она из эмулятора запущена. Но вот стало ли лучше - вопрос.
b2m, сделай теперь пожалуйста то о чём я говорил здесь http://zx.pk.ru/showpost.php?p=154172&postcount=87
очень нужно.
Вот, нарисовал одну иконку (надо еще подумать другие варианты) для эмулятора.
XobbiMan, неплохо, но эмулятор всётаки называется emu.
думаю эта иконка лучше, а можешь чтонибудь подрисовать например рожицу улыбающиюся на экране, типа смайлика и если влазиет клавиатуру снизу.
а как вам такая иконка ?
переделал старую немного.
ну в углу она будет смотреться как мониторчик с чемто белым на нём, что вобщемто нормально.
я немного с цветом напортачил в первый раз, поэтому перезалил иконку.
вот если мелко я сделал 64х64.
Хотелось бы иметь возможность отключать внешние устройства: МПЗУ, квазидиск, дисководы. Может я чего-то не знаю, но на данный момент, квазидиск можно отключить только выкинув файл vector.edd из папки вектора перед запуском эмулятора. А дискету уж если засунул, то уже и не достать, только на другую поменять можно. Или перезапускать эмулятор.
b2m, пообщавшись с Tim0xA, мы пришли к выоду что лучше сделать это так:
чтобы их отключать можно например на иконке квазидиска или загрузчика щёлкнуть правой кнопкой мыши и они отключаются.
можно даже чтоб при этом на иконку накладывался красный крестик, мол закрыто.
b2m, большое спасибо за доделаный корвет.
да ещё, добавь в эмуль комбинацию клавишь Alt+X это выход чтоб был.
не знаю только у меня такая ошибка или нет, но когда я закрываю эмуль особенно из вектора то звук при этом заедает на секунды 3.
b2m
1) можно сделать так, чтобы образ квазидиска открывался, как образ диска с возможностью установить/снять параметр "Только для чтения"? Сейчас в образе квазидиска изменения не сохраняются.
2) Кстати, только что проверил, а параметр "Только для чтения" для дисков не действует.
3) Мне кажется, что смену образа квазидиска не нужно сопровождать RESET. ОС может быть запущена с диска и при этом должна остаться возможность смены образа КД.