бог любит троицу :D
Вид для печати
бог любит троицу :D
Alex_K, скачал, запустил, вроде всё хорошо по кнопочкам:redface: Разве нет?
Когда-то давно уже было пожелание сделать регулировку громкости звука -- добавил слайдер в диалоге настроек.
И ещё сюда вошёл небольшой фикс клавиатуры от Алексея.
Никита, за регулятор громкости ОГРОМНОЕ СПАСИБО. А то мой старый добрый усилитель ВЕГА 50У-122С уж очень громко звучал.
А небольшие фиксы касались ловушки адреса (режим выдачи сигнала в линию ПОРТ, ещё даже фикс был в 21 бете), а фикс клавиатуры - по последним исследованиям на реальной машине. Не работал толком тест клавиатуры в программе TUK.SAV, которую выкладывал hobot. Сначала я высказал предположение, что это из-за того, что периферийный процессор довольно быстро работает, и счетчик в клавиатуре не успевает инкрементироваться. Но по тестам на железе все оказалось не так, при чтении с регистра данных 177702, если в регистре статуса 177700 был установлен бит готовности, счетчик инкрементируется сразу же после чтения с регистра данных 177702. Пример: нажали ВВОД, счетчик встал на коде 0153, если сразу же два раза прочесть регистр данных клавиатуры, то при первом чтении прочтется 0153 (как и должно быть), а при втором - уже 0154. Ниже три кода для исследования: первый ждет нажатия клавиши, второй - отжатия, третий начинает работать сразу при нажатии или отжатии. Заполняется память в ОЗУ ПП с адреса 24000 значениями регистра данных клавиатуры, всего 022000 слов.
Напомню, что код в ПП запускать надо ПРОБЕЛОМ, ИСП портит регистры, а пошаговая отладка там не работает.Код:23700 004737 104054 CALL @#104054
23704 005037 177700 CLR @#177700
23710 012700 024000 MOV #24000,R0
23714 012701 022000 MOV #22000,R1
23720 105737 177700 TSTB @#177700
23724 100375 BPL 23720
23726 105737 177702 TSTB @#177702
23732 100772 BMI 23720
23734 013720 177702 MOV @#177702,(R0)+
23740 077103 SOB R1,23734
23742 012737 000100 177700 MOV #100,@#177700
23750 000000 HALT
23700 004737 104054 CALL @#104054
23704 005037 177700 CLR @#177700
23710 012700 024000 MOV #24000,R0
23714 012701 022000 MOV #22000,R1
23720 105737 177700 TSTB @#177700
23724 100375 BPL 23720
23726 105737 177702 TSTB @#177702
23732 100372 BPL 23720
23734 013720 177702 MOV @#177702,(R0)+
23740 077103 SOB R1,23734
23742 012737 000100 177700 MOV #100,@#177700
23750 000000 HALT
23700 004737 104054 CALL @#104054
23704 005037 177700 CLR @#177700
23710 012700 024000 MOV #24000,R0
23714 012701 022000 MOV #22000,R1
23720 105737 177700 TSTB @#177700
23724 100375 BPL 23720
23726 013720 177702 MOV @#177702,(R0)+
23732 077103 SOB R1,23726
23734 012737 000100 177700 MOV #100,@#177700
23742 000000 HALT
nzeemin,
Alex_K, пожалуйста не отодвигайте совсем на потом операции дисковые, некорректно работает довольно много команд, если бы не независимые утилиты,
проблематично было-бы средствами одного эмулятора с образами работать.
Например атрибут P снять при необходимости - унпроте только пишет что выполнился, про копирование вы знаете, а главное догадываетесь в чём причина этого.
Спасибо!
На харде покопайся - название точное не помню, там она есть точно.
И где-то рядышком программа часиков.
hobot, не беспокойтесь по этому поводу. Я уже распечатал Floppy.cpp. Надо посидеть, проанализировать, где что не так. Так что будет, но немного попозже. Всё-таки 1801ВП1-128 посложнее будет, чем клавиатура и ловушка, официальной информации по ней почти нет (та что есть, практически ни о чём), приходится делать опыты на реальной машине и анализировать различные прошивки (драйвер дисковода в СПЗУ УКНЦ, 255 прошивка КМД ДВК и т.д. и т.п.).
Тогда ещё немного инф. из опыта работы с образами дискет в UKNCBTL, очень коротко :
1. Проблемы возникают когда операции (любые) происходят между контроллерами (!!!)
Я говорю вот о чём - система допустим в дисководе 0 или 1, дискета с играми так-же в одном из них, а вот исходная дискета в 2 или 3. Надеюсь я описал суть.
2. Причем все эти вещи происходят незаметно для RT11, она рапортует всё ОК. Такие дела, вообще заметил что 0 и 1 дисководы заслуживают большего доверия, 2 и 3 изначально как-то не так работали, к сожалению более конкретных примеров пока не могу привести, но при случае обязательно добавлю информации.
:redface:
http://zx.pk.ru/showpost.php?p=431955&postcount=72
P.S. Что-то мне подумалось что загрузку выбором SAV-файла можно и прямо в эмулятор встроить -- разбор заголовка, проверки, загрузка файла прямо в память эмулятора, установка SP и PC. Стоит заняться?
Я думаю не надо. Работать это будет толком только для автономных программ. Сам процесс загрузки SAV-файла не такой простой. Сначала считывается нулевой блок, определяется оверлейный файл или нет, с нулевого блока переносится информация в ОЗУ в соответствии с битами в JSW и битовой картой защиты памяти в RMON (ячейки 0-476). После этого дочитывается информация с первого блока и далее. В зависимости от настроек сохраняется KMON и USR. Банально может не хватить памяти для загрузки (если загружено много драйверов и USR стоит NOSWAP), можно при загрузке запортить KMON, а RT-11 об этом не будет знать.
Для БК это было оправдано, т.к. с ленты медленно читается, а тут все-таки читается с дисковода или винчестера, есть операционная система.
Новость скорее инфраструктурная, внутри-проектная.
В сырцы UKNCBTL добавил проект src\UKNCBTL.TB -- это тот же эмулятор но без интерфейса, к которому написан ряд методов для тестирования, таких как "нажать эту кнопку", "набрать такой текст", "снять скриншот и сравнить с файлом" итп. Это позволяет написать ряд тестов, позволяющих быстро и без ручных движений провести регрессионное тестирование -- убедиться в том что после очередных изменений не возникло ошибок в том что уже работало.
Пока написано четыре теста: загрузка/меню/самотестирование, Бейсик из картриджа ПЗУ, тесты FTMON, игрушки. Всего сейчас проверяется 16 скриншотов.
Постепенно буду дополнять другими тестами и улучшать существующие.
http://ukncbtl.googlecode.com/svn-hi...a/test03_2.bmp
Сегодня можно сказать праздник -- Titus выложил Техническое описание на КМ1801ВМ2: http://zx.pk.ru/showpost.php?p=434162&postcount=1
Так что в ближайшее время будет видимо ряд правок в коде процессора.
Кстати тут сильно пригодится только что сделанный Test Bench.
Добавил "полуторный" режим экрана -- 640 x 432.
http://img-fotki.yandex.ru/get/5313/...3b7f_c136e29_L
http://ukncbtl.googlecode.com/files/...beta24-exe.zip
Я наверное уже надоел, но нельзя ли починить сейв стейты?
Вот здесь http://uk-nc.narod.ru/ скрины как должно быть на мониторе (прогрессивная развертка), в эмуляторе Double Height это как на телевизоре (через строчная развертка), в WinAPI есть функция которая позволяет делать размер окна мышью (в каком-то эмуляторе БК было). Мне такой выбор видится правильным. Сейчас получается 2 варианта экрана из 3 "не правильные".
Для меня лично -- новый режим выглядит наиболее "аутентично", поскольку на УКНЦ я работал с его родными серыми ч/б мониторами: http://rk86.com/frolov/uknc-3.jpg -- вот так это и выглядело, и качество изображение как раз такое и было.
В принципе, относительно несложно получить ещё разрешения:
- 960 x 576 -- увеличение 1,5 x 2 -- можно сделать черезполосицу чтобы получить изображение "как на мониторе"
- 960 x 720 -- увеличение 1,5 x 2,5
- 1280 x 864 -- увеличение 2 x 3
Мое мнение, что не нужно делать много вариантов, достаточно трех, два из которых будут "аутентичные" и один настраиваемый пользователем по своему вкусу (как в эмуляторе БК Калмыкова Юрия).
---------- Post added at 21:48 ---------- Previous post was at 21:35 ----------
Нужно в вариант Normal Height добавить пустые(черные) строки и назвать это "монитор" или "прогрессив", а вариант Double Height назвать "ТВ" или "через строчная".
Обновил код Qt-версии, выложил версию собранную под Ubuntu 11.10:
http://ukncbtl.googlecode.com/files/...4-linux.tar.gz
http://img-fotki.yandex.ru/get/5820/...f756089e_L.jpg
http://img-fotki.yandex.ru/get/5821/...c2ab0f22_L.jpg
http://ukncbtl.googlecode.com/files/...ta24-mac64.zip
Qt-версия UKNCBTL для Mac OS X 10.6.
Собрана на Qt Creator 2.3.1 (Qt 4.7.4) под Mac OS X 10.6.6.
Qt-версия по возможностям пока сильно отстаёт от основной Win32-версии, хотя и использует то же самое ядро эмуляции.
Но ситуация у меня сейчас такова что по-видимому Qt-версии сейчас получат приоритет в развитии.
А я за мултиплатформ
Вот только с радостью пустил на маке
А вот задарят тебя МАКИНТОШ-переносной крутой какой-нибудь и-мак, как ты без родного УКНЦ будешь ? ))) ИМХО:
Win-версия приоритетная, поскольку у большинства пользователей Виндоус и сейчас и в ближайшей перспективе будет, да и компьютер под виндоус всегда за 3 копейки (условно) можно собрать\купить ))) И бац - запустить на нём "Звёздный патруль!" !!! )))
Но это очень правильно "мультиплатформ" конечно.
не холивара ради ;)
у меня уже 2 года дома нет винды,
стоит Хакинтош.
назад переходить - желания нет, вообще
на работе - много разных виндов, основаня 7, и XP, 2000,2003 etc.
но опять же, смотря какой софт, ежили чего надо, ставим в виртуалку,
в современных условия оно не тормозит
даже в Trackmania играюсь иногда в виртуалке ;)
для меня одно отсутвие антивируса жрущего ресурсы - стоит дорогого.
да и интерфейс на мой вкус гораздо красивее/продуманнее/удобнее
и юникс оно, со всеми его плюсами.
а после общения с MacBook Pro я на виндовые нубуки смотреть не могу :(
ну совсем, ониж в сравнении уродливы и страшны, единственный плюс - дешево.
по этому до сих пор без ноута и сижу ;(, на макбук жаба давит, а обычный в руки брать нет желания
открыл крышку - и оно СРАЗУ готов к работе (ну вайфаю пару лишних секунд)
в отличии от виндовых :(
Тоже не в холиваре будет сказано.
Пробовал пользоваться виртуалкой VMWare на ПЦ в некоторых случаях - так вот 'вроде бы' все работает так же, но все равно скорость где-то теряется, где-то что-то подглючивает, да и не удобно это. Вроде можно, но не так удобно, как использовать нативный софт для платформы. А пока что эта платформа в подавляющем случае ПЦ.
Что касается резидентных антивирусов, то у меня такового НЕТ, и не было) И что интересно, комп вирусами не болеет. А почему? Может настроен правильно) И бяки не запускаю? В общем, антивирусы - это отдельная песня и отдельная индустрия по выкачиванию денег из населения.
Короче, все дело вкуса.
Но пока что эмули пишут все же больше под ПЦ.
Только что проверил как идёт под виртуальной машиной мой недоделанный эмулятор ДВК:
1) На хост-машине БЕЗ поддержки виртуализации под Vista 64: 15.2 MIPS
2) На виртульной машине Oracle VM VirtualBox под XP: 14.2 MIPS
...
Окно гостевой операционной системы под VirtualBox ведёт себя в хост-системе как обычное окно обычного приложения, имея практически такой же доступ к файлам хост-системы, что и любые приложения хост-системы - очень удобно.
Pentium E5300 2.80 GHz
15 мипсов ( что соответствует процессору 1801ВМ1, работающему на частоте ~ 450 МГц ) даёт "академическое" ядро с последовательным разборщиком команд типа:
Я специально не оптимизирую ядро, чтобы после его опубликования устроить соревнование ядер эмуляторов архитектуры "PDP-11 16bit". Думаю, что оптимизированное ядро сможет выдавать где-то 100 MIPS, что будет соответствовать процессору 1801ВМ1, работающему на частоте ~ 3 ГГц.Код:if( nWord <= 016 )
{
switch( nWord )
{
// HALT
case 00:
sprintf(str,"\r%06o: HALT\n", Last_PC );
DebugOut.Send(str);
HALT_TrapToRomOffset( 02 ); continue;
// WAIT
case 01:
{
bWait = true;
dword uTC = GetTickCount();
if( uTC - dwLastWaitReportTC > 100 )
{
dwLastWaitReportTC = uTC;
sprintf(str,"\r%06o: WAIT\r", Last_PC );
DebugOut.Send(str);
}
return;
}
// RTI
case 02:
{
CheckAddrRead(SP);
PC = WORD( SP &(~1) );
SP += 2;
word wOldPSW = PSW;
CheckAddrRead(SP);
PSW = BYTE( SP &(~1) );
SP += 2;
if( PSW & T || wOldPSW & T )
{
nTraps++;
nT_bit_Flag = 1;
}
dwCurrentStepsLatencyNS += 5*uCPU_CycleNS;
continue;
}
// BPT
case 03:
TrapTo(014);
dwCurrentStepsLatencyNS += 8*uCPU_CycleNS;
continue;
// IOT
case 04:
TrapTo(020);
dwCurrentStepsLatencyNS += 8*uCPU_CycleNS;
continue;
// RESET
case 05:
sprintf(str,"\r%06o: RESET\r", Last_PC );
DebugOut.Send(str);
InitTrapsClearing();
Init();
dwCurrentStepsLatencyNS += 720*uCPU_CycleNS;
continue;
Ой, глючу) Я-то прочитал 15фпс)
Эмулируется всё, что угодно, но только в теории, поскольку эмулятор существует главным образом в виде универсального API эмуляции, позволяющего (также только в теории) осуществлять абстрактную, дискретную и аналоговую эмуляцию любых электронных устройств в любых количествах и комбинациях (например - эмулировать два разных компьютера одновременно или эмулировать компьютерный класс КУВТ), а также аудио-визуальную 2D и 3D симуляцию их функционирования :)
Модули абстрактной эмуляции процессора 1801ВМ1, платы МС1201, контроллера DL11-W и универсального терминала я написал для тестирования API. Для нормальной работы нужны также модули абстрактной эмуляции контроллеров PC, LP, DX, RK, MX, MY, MT и всех остальных, которые нужно будет написать после релиза API.
Релиз предварительной версии API абстрактной эмуляции состоится, возможно, через несколько месяцев.
В принципе - ничто не мешает добавить в модуль PDP-11 эмулятора SIMH (как и в модули эмуляции любой другой архитектуры из комплекта SIMH) интерфейс API абстрактной эмуляции, чтобы использовать этот мощный модуль наравне с другими, но это может потребовать дополнительных модификаций API, поэтому не вполне ясно, лучше ли заниматься этим до или после предварительного релиза API.
1.Виндоуз - Не родная среда для маков (хотя сегодня уже "интел" маки)!
2.Если свалится станет нужен поскольку он по своему замечательный )))
3.Не ограничивать, а разнообразие - поработать поизучать другую "мощную" ОС )))
Это же разработчик заявил, остаётся только смирится ))) Возможно Alex_K виндоус версию поддержит по возможности )))
Patron, это очень хорошие и интересные новости по поводу возможно скорого релиза API