Важная информация

User Tag List

Страница 1 из 18 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 177

Тема: Вопросы по Вектору (для эмулятора)

  1. #1
    Activist
    Регистрация
    27.11.2015
    Адрес
    г. Самара
    Сообщений
    341
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Вопросы по Вектору (для эмулятора)

    Решил написать эмулятор Вектор 06 на FPGA.
    Поскольку данного компьютера у меня никогда не было, я плохо разбираюсь в тонкостях его железа.

    Вот первая проблема:
    Не пойму как программируется палитра. Понял только что цвет записывается в порт 0xC, но не могу понять куда записывается адрес цвета.

    Может кто подскажет?

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

  3. #2
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,115
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    654
    Поблагодарили
    401 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Saar, адресом цвета является код выводимого в настоящий момент пикселя, или цвет бордюра. Обычно палитра программируется во время обратного хода луча, в это время активен бордюр.

    Не хочу отвадить от благородного порыва, но Вектор на FPGA уже есть
    Больше игр нет

  4. #3
    Activist
    Регистрация
    27.11.2015
    Адрес
    г. Самара
    Сообщений
    341
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    svofski,
    Я в курсе что есть для DE1. Во-первых: там всё основано на использовании SRAM, а сам код очень сильно запутан и на мой взгляд слишком усложнен. Всё то хозяйство довольно сложно портировать на плату без SRAM.
    Во-вторых: я уже сделал эмулятор Апогея, а потому есть уже костяк, на который хочу навесить дополнения чтобы получить Вектор 06.
    Потом, я не хочу портировать КНГМД отчасти из-за того что довольно сложно реализовать это на SDRAM (придется делить SDRAM шины между двумя процессорами), от части из-за не нужности. Мне хочется играть в игрушки, а не программированием заниматься.
    На моей FPGA плате уже есть диспетчер файлов и потому закинуть приложение внутрь эмулируемого компьютера через готовое OSD гораздо проще чем эмулировать КНГМД.

    Так как адрес цвета-то выставить?
    Означает ли это что, в момент вывода бордюра я должен быстро перебрать все индексы цвета бордюра занося при этом значение цвета в порт 0xC?

    - - - Добавлено - - -

    Еще вопрос:
    Игры для Вектор 06 я нашел ввиде ROM файлов. Это дамп памяти что-ль?
    Достаточно залить файл с адреса 0x100 в память Вектора (вычитал из темы эмулятора DE1, но не уверен что правильно)?

    - - - Добавлено - - -

    Еще непонятно по поводу ПЗУ.
    Оно при загрузке торчит с 0 адреса, но в отличие от других компов не мапится постоянно на 0xFxxx, а остается внизу. Так?
    А когда оно отключается (чтобы освободить вектора)?
    Если ROM файлы загружаются с 0x100, то получается что при записи в область ПЗУ, запись происходит в теневое ОЗУ по тем же адресам?

  5. #4
    Activist Аватар для artyr_n
    Регистрация
    02.02.2014
    Адрес
    г. Одесса, Украина
    Сообщений
    337
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    После ресета чтение идет из ПЗУ а запись по тем же адресам идет в ОЗУ. В ПЗУ находится загрузчик в 2Кб версии с магнитофона, квазидиска, флопика, сети, модуля ПЗУ. После загрузки программы вызывается опять ресет но при этом не очищается память и отключается ПЗУ, программа стартует. ПЗУ остается отключенным так как там только начальный загрузчик, ни монитора ни служебных подпрограмм там нет.

    - - - Добавлено - - -

    http://asdasd.rpg.fi/~svo/scalar/ware/572/
    не знаю видели Вы это или нет там с второго номера идет техническое описание вектора.

  6. #5
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,115
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    654
    Поблагодарили
    401 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    vector06cc поддерживает платы с SDRAM усилиями ivagor-a. Например, он работает на китайской WxEDA, в которой SRAM-a нет в принципе.

    Цитата Сообщение от Saar Посмотреть сообщение
    Так как адрес цвета-то выставить?
    Означает ли это что, в момент вывода бордюра я должен быстро перебрать все индексы цвета бордюра занося при этом значение цвета в порт 0xC?
    Да, программы для Вектора так и делают. Как правило они это делают сразу в начале обработки прерывания. В это время луч еще находится за границей экрана и этот процесс незаметен внешне. Разработчики Вектора допустили какой-то огрех в этой части схемы, поэтому на очень многих Векторах запись в этот порт работает ненадежно. Обычно программы делают out $0c по нескольку раз подряд, чтобы сработало наверняка.


    Цитата Сообщение от Saar Посмотреть сообщение
    Игры для Вектор 06 я нашел ввиде ROM файлов. Это дамп памяти что-ль?
    Да. Дамп лент как их загружает в память загрузчик.


    Цитата Сообщение от Saar Посмотреть сообщение
    Оно при загрузке торчит с 0 адреса, но в отличие от других компов не мапится постоянно на 0xFxxx, а остается внизу. Так?
    А когда оно отключается (чтобы освободить вектора)?
    ПЗУ подключено только на чтение вплоть до нажатия БЛК+ВВОД (или БЛК+СБР? тут я могу ошибаться, реал давно не трогал). После включения и сброса, ПЗУ подключено, но запись в его адреса приводит к записи в ОЗУ. Нажатие волшебной клавиши запуска программы запускает защелку, которая отключает доступ ПЗУ загрузчика. Система остается в таком состоянии до полного сброса. Программно это сделать никак нельзя.

    - - - Добавлено - - -

    Цитата Сообщение от artyr_n Посмотреть сообщение
    http://asdasd.rpg.fi/~svo/scalar/ware/572/
    не знаю видели Вы это или нет там с второго номера идет техническое описание вектора.
    Техническое описание рекомендуется как дополнение к схемам http://asdasd.rpg.fi/~svo/scalar/sea...B5%D0%BC%D1%8B. Все вместе достаточно полно описывает устройство компьютера.

    То, чего там может не быть, а если есть, может не бросаться в глаза: по-моему в каком-то из альбомов схем есть дамп ПЗУ, которое раздает управляющие сигналы RAS/CAS и циклы ожидания. Это важно для точной эмуляции. Упрощая, можно сказать, что число тактов в каждом машинном цикле на Векторе округляется вверх до числа кратного четырем. То есть цикл, который выполняется за 4 такта на Векторе выполнится за 4, а тот, что выполняется за 5 тактов, на Векторе съест все 8.
    Больше игр нет

  7. #6
    Activist
    Регистрация
    27.11.2015
    Адрес
    г. Самара
    Сообщений
    341
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Забавно. На моей памяти, это первый комп, в котором полностью отключается ПЗУ и прога остается сама с собой без какого либо БИОСа.

  8. #7
    Activist Аватар для artyr_n
    Регистрация
    02.02.2014
    Адрес
    г. Одесса, Украина
    Сообщений
    337
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Saar Посмотреть сообщение
    без какого либо БИОСа.
    и знакогенератора

  9. #8
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,115
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    654
    Поблагодарили
    401 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Любоваться на знакогенератор при загрузке с кассет -- это самый восторг.
    Больше игр нет

  10. #9
    Activist
    Регистрация
    27.11.2015
    Адрес
    г. Самара
    Сообщений
    341
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нужно больше деталей о запуске программ и отключении ПЗУ.
    Правильно ли я понял, что последовательность такая:
    1) Холодный старт с ПЗУ в 0 адресах.
    2) ПЗУ при старте прописывает в 0 адрес что-то типа JMP 0x100
    3) Далее грузится прога
    4) при нажатии специальных кнопок отключается ПЗУ и производится reset
    5) комп опять стартует с 0 адреса, но уже с ОЗУ где прописано JMP 0x100

    Так?

    - - - Добавлено - - -

    В какой момент приходит INT?
    - в момент первой после последней отображаемой строки битового поля (начало vborder)
    - в момент окончания нижнего бордюра (начало vblank)
    - в момент начала вертикального синхроимпульса

  11. #10
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,115
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    654
    Поблагодарили
    401 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Похоже. Только по-моему про JMP 0x100 — это лишнее, по крайней мере я такого не помню. Загрузчик просто чистит память (если нажата УС, то не чистит). По окончании загрузки всюду, куда не было что-то загружено, будут нули, то есть NOP-ы. Процессор после сброса с отключенным ПЗУ сам дотикивает до начала программы.

    Вообще ROM-файлы это большое упрощение. Стандартный загрузчик читал файлы по блокам, блоки делились на подблоки. Каждый блок имел свой адрес и он мог указывать на любое место в памяти, в том числе ничто не запрещало грузиться с адреса 0. Смотри соседнюю тему про тайны лентозаписи.

    Вот стандартный загрузчик, дизассемблированный и подробно откоментированный http://asdasd.rpg.fi/~svo/scalar/ware/544/

    - - - Добавлено - - -

    В какой момент приходит INT?
    Через "приблизительно некоторое время" после начала VSYNC. IRQ удерживается продолжительное время. Точное попадание в этот момент —*одна из самых больших головных болей Векторовских эмуляторописателей.

    У меня это тут:
    https://github.com/svofski/vector06c...tor06cc.v#L651
    (задержка на 28 процессорных тактов, держится активным 191 такт).

    Как в других эмуляторах это реализовано я не знаю, хотя, есть порыться здесь на форуме, может быть можно найти наши обсуждения в процессе поиска истины.
    Больше игр нет

Страница 1 из 18 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Код эмулятора
    от jasmin в разделе Программирование
    Ответов: 6
    Последнее: 15.03.2015, 18:53
  2. Подключение эмулятора AY-AVR к Вектору
    от marinovsoft в разделе Вектор
    Ответов: 30
    Последнее: 24.11.2014, 18:49
  3. Вопросы по Вектору (нужна помощь)
    от dk_spb в разделе Вектор
    Ответов: 12
    Последнее: 05.04.2010, 15:28
  4. как сделать без эмулятора
    от женя999 в разделе Эмуляторы
    Ответов: 6
    Последнее: 08.04.2009, 20:38
  5. Работа с НМЛ из эмулятора
    от Error404 в разделе Эмуляторы
    Ответов: 6
    Последнее: 28.11.2007, 23:29

Ваши права

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