С 128к заработало.
Жаль что в эмуле нет ПЗУ от зелёной платы скорпиона.
Вид для печати
В последней версии (0.38.2) глючит Quick Commander. Если дважды выбрать один и тот же файл, например картинку, то при втором просмотре на экране появляется мусор. Музыка при повторном выборе вообще не играет. Видимо происходит считывание с другой дорожки диска.
Обнаружил не до конца проработанную эмуляцию ATM-turbo 1 (v4.50).
Изначально в данную модель была заложена возможность работы с 128Кб ПЗУ, хотя в реальной жизни существовали прошивки только для 64Кб. Тем не менее, порт в #FDFD, где биты D0-D1 отвечают за выбор ОЗУ до 512Кб, а вот бит D2 отвечает за выбор дополнительных 64Кб ПЗУ. В эмуляторе, как оказалось, бит D2 неализован только в гипотетической конфигурации "1024Кб" - с рассчетом на то, что кто-нибудь на реальной АТМ-1 сможет допаять дополнительные 512Кб ОЗУ и ее регенерацию, что пока в железе никто не сделал (или мне это неизвестно). А вот поддержка 128Кб ПЗУ в железе есть изначально. Но когда для экспериментирования я изготовил по всем правилам 128Кб образ с целью изучения вопроса для возможного создания новой продвинутой прошивки, Unreal выкинул меня обратно в систему.
В связи с этим обращаюсь к тем, кто сейчас занимается поддержкой и развитием Unreal (я уже запутался, кто именно на данный момент), сделать доработку и поддержать расширенное ПЗУ для ATM-1.
Скорее оба.
Возникает вопрос тогда - на какую ветку перейти? Богатство выбора, конечно, хорошо - но не понятно, на чём остановится.
0. Ветка десофта: "пишется по заветам SMT" (с)десофт. 16 цветов на экране, голый зх и конченый атм (не поддерживаются эффекты луча) + еще пару клонов.
1. Ветка тсл: перепилен весь кот, 24битная графика, тсконфа, конченый атм эмулируется как следует (эффекты луча) + еще пару тех же клонов. В глобальной перспективе тотальное переделывание дебаггера.
А в ветке TSL планируется поддержка SAA?
Она вроде бы есть в ветке десофта? Если да, то и в тсл есть. Если нету - могу дописать в туду.
она есть конкретно в 0.38.1, в TSL её нет.
Как нет когда да.
io.cpp:
Но, я не тестировал. Алсо, чем бы ее проверить?Код:if (conf.sound.saa1099 && (p1 == 0xFF)) // saa1099
{
if (port & 0x100)
Saa1099.WrCtl(val);
else
Saa1099.WrData(temp.sndblock? 0 : cpu.t, val);
return;
}
---------- Post added at 06:54 ---------- Previous post was at 06:09 ----------
Ну да, работает. Ч.т.д.
SAA в обычном 0.38.х работает не так как надо. Как надо настроено здесь.
осталось впилить POKEY и OPL3 :)
но зачем?
я проверял на http://micklab.narod.ru/file/zxm_sou...dcard_disk.rar
часть с SAA на Unreal-TSL ветке у меня не работает, на ветке 0.38.1 "by SMT, Jul 20 2013" работает.
---------- Post added at 19:48 ---------- Previous post was at 19:47 ----------
Зачем? Если есть железо на спеке, то почему бы его не поддержать в ветке эмулятора, если оно поддержано в другой ветке?
Да, SAA в ветке TSL работает - не хватает только бегунка громкости.
Скачал тестовую версию эмуля с поддержкой 128К-ROM для ATM-1 по ссылке, данной в другой ветке обсуждения. Не пашет. При попытке выбрать вторую половинку ПЗУ через "честный" OUT значения %00000100 в порт #FDFD (а точнее, вывод в бейсике OUT 65021,4) получаем зависание эмуля (именно эмуля, а не эмулируемого компа - т.е. даже флэш курсора мерцать перестает), а при попытке ресета - выброс в винду с ошибкой.
Для проверок работоспособности кидаю 128Кб-прошивку для АТМ-1, изготовленную исключительно для опытов для определения работоспособности расширенного ПЗУ (т.е. ничего нового там пока нет).
Вложение 50381
Что она из себя представляет и как с ней работать:
Нижние 64Кб - это стандартная прошивка с BIOS 1.041R (которую я выкладывал на днях), а верхние это палалледбно наложенные по аналогии с нижними страницами - вместо странички с CP/M - место забито FF, бейсики 48 и 128 аналогично параллельно стоят на своих местах. А вот TR-DOS иное - если в нижних страницах стоит стандартная для прошивок АТМ-1 версия 5.03, то в верхних страницах я поставил версию 5.04.
А так можно проверить рабочесть 128К ПЗУ через эту прошивку:
Из стартового меню с картой (даже при нынешнем глюке в эмуле по ресету в него выходим без проблем) выходим в бейсик-48 (хотя можно и в бейсик-128, просто так проще). Блокировка порта #7FFD при этом неважна - порт #FDFD при любом раскладе должен функционировать.
А далее в бейсике можем выбрать любую половинку ПЗУ:
OUT 65021,0 - нижняя (стандартная) половинка ПЗУ
OUT 65021,4 - верхняя половинка ПЗУ
При этом после выбора каждой половинки делаем USR 0 и заходим в TR-DOS через USR 15616.
Если все работает правильно, то после OUT 65021,0 мы должны попасть в TR-DOS v5.03, а после OUT 65021,4 - в TR-DOS v5.04
Вот такие дела. Жду результатов! :v2_dizzy_bye:
Да, эту багу мы заметили на днях. Какой-то регрешн из свежих. Пофиксается.
Пофиксалось.
Фигово пофиксалось. ну да , тактов 12 ты подвинул. но из 10 раз запуска одного и того же файла, 3-5 раз точно на такт туда сюда гуляет. и не на одном таком файле.
Все познается в сравнении. со снапшотами - так и не работают, не все, но некоторые - точно.. (если что - я их просто драгдропаю на эмуль). ну еще нашел. Там просто не хватает тактов.
out(c),0 надеюсь по тактам то не изменился в меньшую сторону?
Регрешн пролез, когда добавилась поцикловая эмуляция ОЗУ. Делал это не я, потому сходу не асиливаю сказать, где сломалось. Квик-н-дирти хак не помог, но и не рассчитывалось особо.
На пентеве ОЗУ работает в циклах, частота которых 7МГц, следовательно в строке их 448. Циклы разделены между:
- цпу
- видео
- ТСУ (с видеоконтроллером никак не связан, отдельный девайс)
- ДМА.
Каждый девайс может обратиться к ОЗУ в порядке своей очереди. Например, ДМА имеет наименьший приоритет. Все было кое-как, пока к ДМА не прикрутили INT. Он приходит по окончанию транзакции, а следовательно в эмуляции необходимо учесть всю цепочку событий, иначе невозможно этот инт сгенерить вовремя.
Поэтому сейчас все девайсы, потенциально могущие запрашивать ОЗУ, обрабатываются после каждого машцикла цпу, в порядке приоритета. Например, цикл RM (чтение из ОЗУ, 3 такта, название условное). Если процессор работает на частоте большей, чем частота циклов ОЗУ, он тормозится. Его клок "растягивается" до момента, когда ОЗУ может выдать данные. В эмуле к счетчику тактов прибавляется некая константа, а счетчик выравнивается на некоторую фазу (напомню, что счетчик дробный: 3.5МГц до запятой, и 8 бит - после). К окончанию машцикла счетчик тактов содержит новою "отметку времени" в котором живет проц. Мы знаем, сколько циклов ОЗУ прошло за период машцикла. Если проц работает на 7МГц, он не тормозится, и в этом самом простом случае прошло 3 такта = 3 цикла ОЗУ, из которых проц отхавал 1. Т.е. осталось 2. После этого мы вызываем видео и смотрим, были ли за данный период машцикла обращения видеоконтроллера, если были, отнимаем их. Потом вызываем TSU, отнимаем его циклы (если есть свободные еще циклы); если ТСУ неактивен - лесом. И только тогда вызываем ДМА и отдаем ему все, что упало со стола. И вот тогда мы только сможем узнать, когда закончится транзакция ДМА и когда нам формировать прерывание.
Как несложно догадаться, вся это прелесть оформлена в виде FSM не первой простоты и быстродействия.
Может ерунду пишу, но всё-таки, кто-нибудь знает способ, которым можно в Unreal добится эмуляции +3 компьютера в сочетании с BDI? Может с помощью каких-то костылей? (Вот например в RealSpectrum вроде бы тоже нельзя такую связку сэмулировать, но спасает маленькая хитрость: выбираем пентагон, заходим в трдос, только теперь жмем F3 и выбираем +3. После сброса, если зайти в бейсик и набрать usr15616, попадём в трдос.) (Но в RealSpectrum дебагер адски мелкий, там вообще весь интерфейс адски мелкий.)
Подскажите кто знает.
Ситуация следующая - к видеокарте подключил (есть выход на видеокарте) через HDMI телевизор и назначил его как не основной монитор. Расширил рабочий стол на 2 монитора. Запускаю Unreal на основном мониторе - всё норм. При перетаскивании работающего эмулятора на второй рабочий стол эмулятор как-бы работает дальше (играет мелодия, реагирует на нажатия клавиш), но изображение в самом эмуляторе зависает. Перетаскиваю обратно - всё нормально продолжает работать на первом мониторе.
Если окно программы сдвинуть до половины, то половина, что осталась на главном мониторе нормально работает, а на дополнительном - не обновляет изображение.
Думал проблема в разных разрешениях мониторов - нифига - при установленных одинаковых разрешениях проблема остается.
Если поменять в настройках основной и дополнительный мониторы - проблема остается (на основном работает, на дополнительном - не обновляет картинку в эмуле).
Как-то можно решить этот казус?
Можно попробовать поменять настройки видео:
Alt+F1 -> Video -> render to -> gdi device content (и остальные по очереди)
Ну или перебрать в ini файле другие значения параметра driver.
gdi device content помогло.
Теперь другая засада - при разворачивании программы на весть экран (нажатием ALT+ENTER), расположенной на дополнительном мониторе, программа переходит в полноэкранный режим на основной дисплей. Повторное нажатие ALT+ENTER возвращает оконный вид на дополнительном мониторе :(
Как бы вот сделать чтобы в полноэкранный режим переходило именно на том мониторе, на котором находится в данный момент.
Я понимаю, что можно в настройках системы указать второй монитор основным, но это меня не устраивает.
По крайней мере не буду себе голову ломать с перебором настроек.
Щаз просто ставлю тройной размер и разворачиваю окно с помощью кнопки вверху/справа окна программы.
Может кто-нить поделиться ini файлом, в котором есть в настройках выбор модели Spectrum+2. А то +3 есть, а +2 - нету :( Цель - переделать несколько программ, которые работают исключительно на +2.
Этак тебе лучше скачать Spectaculator. В нем есть и +2, и +2А, и +3. Причём +3 полноценный с FDD, а не как в унриле обрубок.
---------- Post added at 15:41 ---------- Previous post was at 15:36 ----------
Да и не +3 в унриле по факту, а +2А.
Скажите, это только у меня Унрил сохраняет изменённый образ SCL в TRD не 640, а увеличивая до 688 кБ? В результате спектакулятор его не признаёт.
Это баг или фича?
это не баг и не фича, это склероз ))
многие забывают обновлять эмулятор и юзают старые глючные версии. 0.38.2 делает нормальные trd, уж сколько раз твердили миру об этом.
Да этих веток уже столько наплодили, что боязно новую качать, вдруг что отвалилось...
---------- Post added at 19:15 ---------- Previous post was at 19:14 ----------
осталось вспомнить, где скачать версию 0.38.2, что поддерживает SAA