User Tag List

Страница 4 из 8 ПерваяПервая 12345678 ПоследняяПоследняя
Показано с 31 по 40 из 74

Тема: Эмуляция двухъядерного спектрума

  1. #31
    ZEK
    Гость

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    ЕСЛИ КТО ЗАИНТЕРЕСУЕТСЯ - ДАЙТЕ МНЕ ТАКОЙ ЭМУЛЬ!
    Кто будет инициализировать память второго проца, кто будет инициализировать стек, указатель таблицы векторов, как быть с MMU, не пори чушь в общем. SMP системы даже на восьмибитке это не тривиально

    И эмулировать что то на ПЦ не надо из алгоритмов, можно смыкнуть процедуру из отапливаемой проги, причем так что бы не было side effect

    И про байты не пори, все мейнстримовые процы умеют байтами оперировать
    Последний раз редактировалось ZEK; 04.11.2012 в 18:03.

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,823
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZEK Посмотреть сообщение
    Кто будет инициализировать память второго проца, кто будет инициализировать стек, указатель таблицы векторов, как быть с MMU, не пори чушь в общем. SMP системы даже на восьмибитке это не тривиально
    Не пори чушь, было сказано что второй проц работает с теми-же начальными данными что и первый.
    Вообще с точки зрения проги - как был один проц так и остался, а уж кто там занимается обработкой кода - не её собачье дело. Работает - и слава Богу!

    Цитата Сообщение от ZEK Посмотреть сообщение
    И эмулировать что то на ПЦ не надо из алгоритмов, можно смыкнуть процедуру из отапливаемой проги, причем так что бы не было side effect
    Вот вообще не понял ни строчки.
    О чём ты?

    Цитата Сообщение от ZEK Посмотреть сообщение
    И про байты не пори, все мейнстримовые процы умеют байтами оперировать
    Если я херню порю - ну подскажи как надо (с разъяснениями для деревни).
    А если нет желания разжевать валенку всё по полкам - то чего тогда в теме появился/отписался?
    Последний раз редактировалось Destr; 04.11.2012 в 18:11.

  4. #33
    ZEK
    Гость

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    начальными данными что и первый
    ума нет... пришло прерывание и погнали в один стек писать, друг друга перетирая

    ---------- Post added at 17:13 ---------- Previous post was at 17:10 ----------

    Цитата Сообщение от Destr Посмотреть сообщение
    Если я херню порю - ну подскажи как надо
    не телепат, что тебе надо, факт в том что процессоры с байтами работают на раз

  5. #34

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,823
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZEK Посмотреть сообщение
    ума нет... пришло прерывание и погнали в один стек писать, друг друга перетирая
    Ну блин, ещё раз:
    Два проца z80
    Первый работает код.
    Второй тупо ждёт INT
    Пришёл INT.
    Первый проц шпарит дальше (игнорит INT)
    Второй - очнулся, взял адрес куда вектор и побежал обрабатывать код.
    До победного конца. (команды RETI)
    А первый и в ус не дует, у него как-бы и не было прерывания (ему нулёво до них).
    И вся эта тема в одном и том-же адресном пространстве.
    И пофик на стек, банки и т.д. (это уже проблема кодера как он напишет, если конфликт - сам виноват)

    Так ясней?

  6. #35
    ZEK
    Гость

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Так ясней?
    И твой второй проц не будет вызывать подпрограммы, юзать push pop?

  7. #36

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,823
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZEK Посмотреть сообщение
    И твой второй проц не будет вызывать подпрограммы, юзать push pop?
    Это проблемы кодера - как напишет - так и будет.
    Ты ведь не удивляешся что например вывод стрелочки на экране (при EI и выборкой спрайтов со стека - ЧВ например) сопряжён с хитрым кодом иначе косяки появляются?

    ---------- Post added at 17:29 ---------- Previous post was at 17:26 ----------

    Как вариант - у z80 есть флаговый регистр (в котором есть и неиспользуемые биты) и ещё есть куча неиспользуемых (по-сути - пустых!) команд (которые нафик не нужны, ну по типу LD C,C)
    Их можно заюзать для корректного общения между двумя процами.
    Последний раз редактировалось Destr; 04.11.2012 в 18:34.

  8. #37
    ZEK
    Гость

    По умолчанию

    Дават ты без попытки поставить ТЗ, на уровне функциональных требований объяснишь что тебе надо, в смысле не второй проц, а зачем тебе второй проц.
    Люди по максиму пытаются уйдти от ассемблера там где это можно, а ты же предлагаешь еще и отладочный код пихать в асм (грубо говоря превратить отладку из ненавязчивого процесса, в еще один геморой с асмом), соратников будет очень тяжело найти в этом мероприятии.

  9. #38

    Регистрация
    01.02.2005
    Адрес
    perm/ru
    Сообщений
    520
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZEK Посмотреть сообщение
    предлагаешь еще и отладочный код пихать в асм (грубо говоря превратить отладку из ненавязчивого процесса, в еще один геморой с асмом), соратников будет очень тяжело найти в этом мероприятии.
    Destr, подумай, не придётся ли для отладки отладочной программы для второго проца пристыковывать третий проц? =)

    Пробовал я так, но ведь современные среды оперируют не байтами и даже не словами - а сразу (ух ты!) восмибайтовами блоками которые с плав-запятой.
    byte ram[65536]; - займёт 64k и обрабатываться будет как массив из 65536 байт, главное чтобы скриптовый движок в отладчике поддерживал типизацию.
    Последний раз редактировалось siril; 04.11.2012 в 19:12.
    oisee.

  10. #39

    Регистрация
    30.05.2011
    Адрес
    Пермь
    Сообщений
    98
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Ну блин, ещё раз:
    Два проца z80
    Первый работает код.
    Второй тупо ждёт INT
    Пришёл INT.
    Первый проц шпарит дальше (игнорит INT)
    Как итог, первый проц выполняет больше команд за единицу времени, чем в обычный ZX.
    Второй - очнулся, взял адрес куда вектор и побежал обрабатывать код.
    До победного конца. (команды RETI)
    Этот код включает то, что делает обработчик прерывания на ZX обычно?(опрос клавиш, отчет временных интервалов...). Если да, то к черту летит вся синхронизация - под такой отлад-системой она не соответствует оригиналу.
    А первый и в ус не дует, у него как-бы и не было прерывания (ему нулёво до них).
    Это как? Т.е. никакого опроса клавиатуры/джойстиков, никаких временных задержек? А!
    Все на высчитывании количества тактов!
    Круто! Но вроде ведь не про г-леты демовые речь была (карты уровней ведь?)

    И что-то мне кажется, что очень толсто...
    Но... Как-то так можно сделать такое из UnrealSpeccy:
    1. Найти там основной цикл. Он эмулит процессор. Синхронизация с реальным временем происходит за счет выполнения всех команд одного фрейма(который 50 раз в секунду) с максимальной нативной скоростью x86, затем происходит ожидание начала следующего кадра. Но, это так, к сведению, если не в курсе
    Так вот, процессор выполнен в виде некоего объекта... или экземпляра структуры. Надо создать такой второй и исполнять алгоритм эмуляции второго процессора после первого в основном цикле.
    2. Подправить диалог настроек. Добавить там галку старта/останова второго процессора, а также задание значения счетчика команд, стека и значение регистра I.
    3. Пусть каждый из процессоров выполняет вход в обработчик прерываний. Просто у первого будет обработчик из одной команды(reti), а второй после обработчика делает halt.
    Как-то так...
    Последний раз редактировалось Andrey_Korabelev; 04.11.2012 в 19:59.

  11. #40

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Запуская какую-либо прогу в таком эмуляторе получаем не одно спектрум-окно, а два.
    Которые работают синхронно.
    Первое - отображает то, что отображалось бы и работало как обычно.
    А вот второе - это как-бы ещё один Z80, имеющий то-же самое адресное пространство, экран, порты и т.д. но выполняющий то, чем занимается прерывание.
    Если видеопамять общая, как могут картинки в окнах отличаться?

    ---------- Post added at 20:54 ---------- Previous post was at 20:50 ----------

    Цитата Сообщение от ZEK Посмотреть сообщение
    пришло прерывание и погнали в один стек писать, друг друга перетирая
    Тут все хитрее У каждлго Z80 свой SP. Кстати, и IFF1, IFF2, режим прерывания, и регистр I. И, да, инициализировать второй Z80 придется отдельно - либо псевдоинструкцией, либо портом.

    ---------- Post added at 21:04 ---------- Previous post was at 20:54 ----------

    Цитата Сообщение от siril Посмотреть сообщение
    Скрипты могут показывать всё то же самое, что и твои z80-процедуры на виртуальных прерываниях, только проще, эффективнее и менее пагубно для отлаживаемой программы =)
    Смех смехом, а скрипты не вон-то нарисуют спрайт из памяти в окошке (каком?) так, как этот спрайт выведется на спековский экран. Но если уж в этом духе рассуждать, то сейчас нет возможности послушать сэмпл из памяти на бипере/AY/и т.д., напечатать строку из памяти как на ZX-принтере, отправить пакет из памяти в модем и т.п.

Страница 4 из 8 ПерваяПервая 12345678 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. [Поиск 1] Эмуляция
    от KingArthur в разделе Поиск
    Ответов: 192
    Последнее: 05.12.2021, 15:48
  2. Эмуляция AY/YM
    от mungo в разделе Эмуляторы
    Ответов: 18
    Последнее: 22.03.2013, 06:14
  3. Аппаратная эмуляция GS/TFM/AY
    от Black_Cat в разделе Эмуляторы
    Ответов: 34
    Последнее: 03.05.2008, 23:34
  4. Эмуляция и только
    от CityAceE в разделе Эмуляция ZX Spectrum'а
    Ответов: 0
    Последнее: 13.01.2005, 15:20

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •