А мог бы и запустить)
Между прочим, там КЦГД есть от ваших любимых ДВК, а в нем терминал VT-100 или как его там.
Вид для печати
Поразбирался на реале с каналами. Пока что только с каналами ПП.
Исправил приемники ПП, и сразу заработал JEK. Причем, судя по картинке Vamos'а, рисует правильно. UKNCBTL застревает после двух заливок. Не знаю почему.
http://img707.imageshack_.us/img707/4945/01jek.png
Картинка с реала от Vamos'а:
http://zx.pk.ru/attachment.php?attac...3&d=1319057207
Пока обновлений не выкладываю, т.к. другие каналы надо еще поправить.
---------- Post added at 05:38 ---------- Previous post was at 05:31 ----------
Кто это обещал выложить? Эмулятор есть)
Хорошо бы и Alex_K свой немного другой JEK выложил бы
для архива и истории в целом ))) Может у него образ нормальный получится
дискеты от тов.Vamos на мой взгляд спорные (((
---------- Post added at 06:20 ---------- Previous post was at 06:19 ----------
ждём )))
Тов. Vamos знал (а может и сейчас знает) разработчиков пакета KUARKO. А тов. Alex_K немного другой JEK уже передавал (а может и выкладывал) - это диски U1.DSK и U2.DSK. Там же на дисках есть и документация на JEK.
---------- Post added at 10:42 ---------- Previous post was at 10:38 ----------
ОТЛИЧНО !!! А тест каналов будет выложен, еще интересно, какие различия Вы нашли, интересно сравнить со своими данными.
А UKNCBTL застревает, т.к. сбрасывается готовность контроллера дисковода, если дискету передернуть, то заливается и третий план, далее стартует JEK.
Небольшие обновления:
1. Исправил приемники ПП. Теперь работает JEK.
2. Добавил полуторный режим УКНЦ, масштабирующий экран в ширину в 1.5 раза с сохранением сканлайнов. Полуторный, чтобы по максимуму сохранить четкость изображения, из-за хорошей кратности 2->3 пикселя. Причем, без использования возможностей видеокарты, чтобы избежать ее самодеятельных эффектов. Переключается по 'NumLock'. Режим удобен для 'узких' игр типа Land, в основном портированных с ДВК. Или просто для того, чтобы изображение было покрупнее. В реальности масштаб изображения на УКНЦ, как я думаю, средний между 1 и 1.5. Может быть 1.2 - 1.3.
3. Добавил автоустановку размеров окошка при запуске эмулятора, т.к. рамки окошек могут отличаться от стандартных, и края изображения будут не видны.
Пример стартового меню в разрешении 1.5 x 1
Скрытый текст
Пример экрана из игры LAND в разрешениях 1.5 и 1.0:
Скрытый текст
Все каналы? А где программа для тестирования?
Вот это большой плюс. Смотрится в самом деле шикарно.
Соотношение сторон 4 к 3. Поэтому при квадратной точке должно быть разрешение 640х480. Реально 640х288 - соотношение 1:1.67. Если брать 576 линий, то 1:0.83 или 1.2:1.
Вот не видна нижняя служебная строка. Запустил JEK, и пришлось растянуть изображение.
---------- Post added at 23:39 ---------- Previous post was at 23:05 ----------
Положу еще ложку дегтя - не работает программа эмуляции терминала VT200. hobot выкладывал образ диска в этом топике.
Ну и еще одно изменение.
Думал-думал, и решил попробовать, а что, если попробовать сделать масштаб не 2->3 точки, а 3->4, т.е. 1.333, а не 1.5. Тут вычисления для скоростной реализации на чистом Си значительно посложнее будут, кроме того появляется неприятный эффект при несбалансированной гамме, но об этом чуть ниже.
Итак, поэкспериментировал, и результаты меня вполне порадовали. Теперь добавил новый режим 1.333 в ширину. Очень похоже стало на оригинал, немнооожечко шире.
Скрытый текст
Теперь о гамме. Из-за того, что теперь вторая точка из каждой тройки распадается на две, очень важно, чтобы гамма вашего монитора/видеокарточки была строго линейная. Этот эффект очень мало заметен при масштабировании 1.5, т.к. каждая точка распадается на полторы, и нет муара, есть только уменьшение ширины вертикальных однопиксельных полос, при неправильной гамме. А вот при масштабировании 1.333 муар будет заметен.
Вот примеры:
Скрытый текст
Это изображение должно выглядеть корректно, если у Вас на мониторе линейная гамма:
http://s017.radikal.ru/i420/1202/cb/ccacb4c53f88.png
Так будет выглядеть, если гамма < 1.0. Как видно, светлые вертикальные полоски на темном фоне теряют яркость в зависимости от позиции.
http://s017.radikal.ru/i414/1202/23/936cda65b600.png
А вот так будет выглядеть, если гамма > 1.0. В данном случае все наоборот - темные полоски на светлом фоне засвечиваются в цвет фона.
http://s017.radikal.ru/i441/1202/db/fb79826c0de5.png
[свернуть]
Следует заметить, что такой эффект будет виден только в разрешении 640x288. В более низких разрешениях он проявляться не будет.
Эта строка у меня не входит в поле оконного режима, т.к. в большинстве случаев там ничего нет, и только портит антураж. Используется она в эмуляторе БК, в редакторе JEK, игре Land (желтый с оверсканом). Так что ради таких случаев можно и растянуть.
---------- Post added at 00:06 ---------- Previous post was at 00:05 ----------
Программа еще не дописана, пока лениво. И другие каналы, соответственно тоже пока как прежде)
---------- Post added at 00:07 ---------- Previous post was at 00:06 ----------
А фиг знает, чего он не работает. Может каналы другие надо исправить. Может требует ловушку (что скорее всего).
Пока не знаю. Так, предположения.
Запрещаю прерывания, потом запрещаю прерывания от сетевого таймера, потом разрешаю прерывания, а он возьми да, и дай прерывание) Это на реале) Значит, похоже, что снятие разрешения прерывания от таймера прерывание не отменяют, если запрос уже был установлен.
Кстати по поводу VT200.SAV. Программка это с довольно крутой защитой, такие методы адресации применяет, что сходу и не поймешь как это работает.
Советую посмотреть в отладчике UKNCBTL. Вызвать отладочную консоль. Как загрузится RT-11, в консоли переключиться на ЦП командой "p". Потом дать команду "g1070", и запустить в RT-11 VT200. В отладчике остановится по адресу 1070, далее по F8 можно пройти по шагам.
Может найдете ошибку у себя в процессоре.
---------- Post added at 00:41 ---------- Previous post was at 00:38 ----------
По сигналу EVNT в процессоре устанавливается триггер. Если между запретом прерываний по MTPS и запретом через регистр 177054 прошла смена фронта сигнала, то он будет зафиксирован в процессоре. При разрешении прерываний по MTPS естественно проскочит и прерывание по таймеру, хотя по 177054 оно будет запрещено.
Ой, вообще-то у меня сделано так же. Но на эмулях это прерывание в тесте не проскакивает, а на реале иногда да. Может связано с разной скоростью.
Хотя, знаешь, как я делал, разрешал прерывания, чтобы проскочило взведенное от сетевого таймера, а потом делал свои дела. И все равно оно проскакивало в момент измерений иногда.
---------- Post added at 00:47 ---------- Previous post was at 00:45 ----------
Ошибок вроде не должно быть. Но есть недописанные команды защищенного режима. А так же RTT отрабатывается, как RTI. Бита T тоже нет.
---------- Post added at 00:48 ---------- Previous post was at 00:47 ----------
Ты не прозевал версию 0.5c? Ее никто пока не скачал.
Вот любопытный тест влияния нечётного PC на результаты выполнения команд:
LSI-11 Traps Tests #3
На ДВК-1 тест даёт такой результат:
Код:LSI-11 Traps Tests #3
Test 1
------
CALL ADDR+1
ADDR:
PC/001127
Test 2
------
MOVB #1,WORD
MOVB #2,WORD+1
MOVB WORD,R1
R1/000001
INC PC
MOVB WORD,R1
R1/000002
Program completed.
На самом деле 1801ВМ2 выставляет адрес на шину таким каким он есть, а уже конкретное устройство при чтении просто этот бит не учитывает.
Есть в УКНЦ параллельный порт на магистралии ПП, к которому надо обращаться при чтении в том числе и по нечетным адресам.
Но советую посмотреть программу в отладчике UKNCBTL, можно в качестве останова использовать не 1070, а 1000.
У меня такой, на UKNCBTL такой:
http://s018.radikal.ru/i502/1202/11/d96fe8dc4ef4.png http://s017.radikal.ru/i442/1202/87/505bd71302a7.png
---------- Post added at 01:17 ---------- Previous post was at 01:12 ----------
Блин, точно. Доступ к данным по нечетным адресам ОЗУ сделал правильно, а про выборку команды забыл)
Ну вот и ошибка в процессоре. Откуда идут прерывания? При словном доступе по нечетному адресу прерывания по 4-му вектору есть у 1801ВМ3, но не у 1801ВМ1 и 1801ВМ2.
---------- Post added at 01:19 ---------- Previous post was at 01:18 ----------
А чем выборка команд отличается от чтения данных? Используется один и тот же цикл шины.
Нет у меня используются разные обработчики)
---------- Post added at 01:27 ---------- Previous post was at 01:26 ----------
Еще бы) Но за универсальность обработчиков платить приходится скоростью эмулятора. Так что у меня разнесено по разным обработчикам для убыстрения.
Это плохо. Команды для чтения или записи поступают в операционный блок процессора, а он не различает, что это - команда или данные. Ему сказали - прочитать/записать, он и выполнил.
---------- Post added at 01:29 ---------- Previous post was at 01:28 ----------
Какое падение скорости? Главное время занимает рендеринг экрана.
Кстати, где алгоритм рендеринга лучше - в UKNCBTL или в EmuStudio?
---------- Post added at 01:31 ---------- Previous post was at 01:29 ----------
И ГЛАВНОЕ!!! ЖДЕМ ВЕРСИЮ 0.05d!!!
Не знаю, как у вас, а у меня главное время занимает эмуляция трех процессоров) А экран рендерится не более 20% от их времени.
И что значит лучше? Быстре - скорее всего у меня, а правильный ли у вас - не знаю. У меня экран рендерится целиком каждый кадр, а должен в идеале в синхронно с работой всей системы, чтобы каждое изменение памяти в процессе хода луча отражалось на изображении.
VT200 вроде заработал, только зависает при входе в Калькулятор. Впрочем, он зависает и на UKNCBTL.
УРА !!! Заработало !!!
По процессорам счет 1:1. С вашей стороны счетчик сдвига в ASH/ASHC, с нашей - нечетный счетчик команд.
А по рендерингу хотелось бы сравнить алгоритмы. В UKNCBTL почти правильный, даже учитывает графический курсор, нет только учета интенсивности для одиночной видеостроки, которая устанавливается через регистр отображения (но это покоцали уже и в реальных УКНЦ поздних выпусков).
А синхронно с работой системы сложно - выборка данных происходит каждые 640 нс. Надо одновременно с эмуляцией строить и образ экрана. Быстродействия не хватит.
Что за графический курсор?
У меня тоже нет яркости для конкретной строки, т.к. я не знаю, как она делается.
Можно сделать, и скорости хватит, только много возни.
Кстати, с яркостью UKNCBTL тоже, похоже, не так себя ведет. Замечал на реальной УКНЦ, что при загрузке системы с диска, который я прикладывал к первой версии эмулятора, экран вспыхивал ярким цветом, а на UKNCBTL этого замечено не было.
Нормально он работает и там, и там. Просто калькулятор строковой.
---------- Post added at 02:02 ---------- Previous post was at 01:57 ----------
Делается через регистр отображения, в документации все есть.
UKNCBTL выводит изображение 25 раз в секунду, а не 50, как надо. Поэтому может вспышка и не подпадает. А с яркость поддерживается как для основного изображения через регистр управления цветом, так и для курсора через регистр управления отображением.
Проверим попозже. Хотя графический курсор вроде нигде не употребляется.
Хотелось бы увидеть.
Яркость всего экрана управляется выводом Y видеоадаптера, а яркость одной строки через регистр управления отображением регулируется выводами P0, P1, P2. Все дело в том, что для отдельной видеостроки можно было регулировать яркость каждого канала (R, G, B), а с помощью Y - либо все каналы яркие, либо нормальной яркости. А так как регулировка яркости для отдельной видеостроки не применялась, то и ее убрали. В поздних модификациях выводы P0, P1, P2 просто висят в воздухе, а в "КВАНТ"-овской схемотехнике просто не запаивали одну микросхему и кучу резисторов (в качестве примера - второй УКНЦ у hobot-а.).