!!!!!
Вид для печати
Сравнил части схем 06Ц и 06Ц.02 - с проца на ВА86, другая сторона которого (или которой) подтянута через резисторы к +5В. В 06Ц резисторы 680 Ом, в .02 - 10 кОм. В этом дело (я про FF у .02)?
Думаю, всё намного проще.
Просто в 02-ом переделали схему выборки регистра в котором хранится слово состояния, и он перестал ложно спамить на шину...
А номинал резисторов связан скорее всего с переходом с 155-ой серии на 1533...
В 06Ц вижу, что биты слова состояния пишутся в 155ТМ8, в .02 - в 1533ТМ9. Т.е. в 06Ц возможно читает со входа триггера?
- - - Добавлено - - -
Я про то, что "штатной" выборки (с выходной стороны) на шину проца хоть из ТМ8 в 06Ц, хоть из ТМ9 в 02 не предусмотрено.
Кодовое название проекта было Deep Thought.Цитата:
Сообщение от ivagor
Нет, думаю из ТМ8 или ТМ9 не читается. Там ведь не все биты, а из 0C-0F читается полное слово состояния 42h. Т.е. в 06Ц оно как-то висит на шине, а в 02 - нет.
- - - Добавлено - - -
Просто для полноты - в 06Ц один из битов слова состояния (не влезший в ТМ8) запоминается в ТМ2.
- - - Добавлено - - -
И еще один - в другой ТМ2.
странно, у меня из PSW читается 56, а если выбрать Z80 то 42... или там не все биты участвуют?
Ramiros, речь про слово состояния, которое выдает на шину данных 8080 в первом такте машинного цикла в сопровождении SYNC.
Большое спасибо Дмитрию2012, он проверил на Векторе-2014 - тоже 42, как и ожидалось, т.к. это реплика 06Ц.
- - - Добавлено - - -
В теме про river raid еще раз поднимался вопрос программирования палитры. Дмитрий2012 проверил мой fastpalprog.rom на своем 2014 - все работает нормально, т.е. при тщательном выборе моментов программирования палитры хватает и одного out/цвет (проверено на двух векторах - бывшем моем 06Ц и 2014 Дмитрия).
Самое прикольное, что судя по схеме, проц по командам IN от 0C до 0F - читает сам себя.
Т.к. D19 ВА86 на момент чтения этих портов отключена (на ОЕ "1"). А по схеме к шине данных проца подключены только ВА86, два порта и таймер (все отключены)... и даже подтяжки шины к питанию нет...
Осталось сделать временную подтяжку шины и проверить идею...
KTSerg, я дошел до предположения, что разница в логике формирования OE для ВА86, но в самой этой логике даже не начал разбираться.
Но если я правильно понимаю, в принципе есть и другой путь - изменение логики формирования OE для ВА86. С "другой стороны" ВА86 подтяжка к питанию есть.
Правда толку в этих изменениях и доработках нет, и так все работает. Зато теперь известен простой способ программного детекта 06Ц и .02.
Точный ответ на это вопрос может дать разбор формирования OE для ВА86. Но можно относится как к вопросу веры - я не верю, что это зависит от производителя ВМ80.
Интересно, что выдал бы z80, и это еще может зависеть от конкретного варианта установки.
Не, формирование ОЕ для ВА86 тут ни при чём. У 06Ц логика отключения ВА86 очень проста, всего два условия. Первое Чтение из порта ЧТВВ. Второе выборка адреса (порта) на шине адреса от 00 до 0F.
Соответственно, при чтении из портов с адресом ниже 10h ВА86 отрубает шину данных от проца, и на ней остаются только D27, D29, D30, причём без подтяжки шины к питанию. А т.к. в интервале адресов портов от 0C до 0F ничего на шине нет, то там сплошное Z-состояние. Вот проц сам себя и читает.
Скорее всего эти прочитанные 42 зависят от схемного решения входного/выходного каскада шины данных процессора. И если в этот каскад производителями вносились хоть какие-то изменения, то и проц будет считывать другие значения...
Но это моё ИМХО соответственно.
Пока не вижу противоречия, надо еще с условиями отключения ВА86 от проца в .02 разобраться.
- - - Добавлено - - -
Как указал b2m, это четко слово состояния для цикла INPUT:
D0 (INTA) - 0
D1 (/WO) - 1
D2 (STACK) - 0
D3 (HLTA) - 0
D4 (OUT) - 0
D5 (M1) - 0
D6 (INP) - 1
D7 (MEMR) - 0
01000010b=42h
А вот интересно, с ВМ1 на борту, результат будет таким-же?
А с 10h и далее что будет читаться, FF ?
Сделал вчера такую проверялку, но не стал выкладывать.
x-code, заводи cmake ;)
https://github.com/svofski/vector06sdl
Пока только необходимый минимум для полноценной игры в River Raid на RPi3. На полных парах кушает меньше 40% одного ядра.
Опенсорсный эмулятор на c++, неужели я дожил до этого. svofski - респект! А под win его можно собрать?
Ну и хочу завершить тему с 42 и FF. Мое предположение, что FF в .02 связан с изменением логики формирования OE у ВА86 похоже было неверным. Внимательно посмотрел Вектор-USER 4 с прототипом джойстика-с. И бегло посмотрел этот фрагмент в .02. FF при чтении портов 0C-0F в .02 идет от джойстиков (только непонятно, откуда единицы и в битах D4-D5, висящих в воздухе, о чем упоминал KTSerg). Если в 06Ц реализовать схему из ВU4 (только там вроде биты контактов перепутаны), то из 0С-0F тоже пойдет FF. И, насколько я понял, при выборке джойстиков по схеме в вектор-user (и в .02) 0C=0E и 0D=0F.
Вот в BU4 схема более правильная, там все входы ИР23 подтянуты к питанию, а в схеме Вектора 06ц.02 по два входа "в воздухе", детальки на плате 02-го посмотрел, увидел две группы резисторов по 6шт. (значит как в схеме, по два на группу - не хватает).
По поводу чтения портов, на 02-ом, так и есть 0С=0Е и 0D=0F, соответственно это J1 и J2 (по обозначениям разъёмов на корпусе).
И да, на схеме в BU4 контакты перепутаны. На 02-ом, контакт 2 разъёма - это GND...
Попробовал: https://www.dropbox.com/s/y5cyrhgle98ddm0/v06x.zip?dl=0
Под виндой трудно ручаться за то, что не будет нужна какая-нибудь dll, но вроде должны быть в зависимостях только стандартные. Запуск. Выход - pause/break.Код:v06x --rom incurzion.rom
Правда это 64-битный exe. 32-битный собирать честно говоря будет многовато мороки. Могу показать, как собирать.
svofski, присоединяюсь к ivagorу. OpenSource Вектор на плюсях - это круто: респекты, бесты и регарды! ИМХО, заслуживает как минимум отдельного топика в форуме.
Посмотрел чуть код: ядро от Alexander Demin, я его закачал несколько лет назад, но руки так и не дошли :). Забавноe названиe указатель that (sound.h).
Ещё всего один шаг с выносом SDL - dependent байды типа SDL_AddTimer в отдельный abstraction layer, и у нас будет portable сырок-заготовка для мультиплатформенного переноса под вообще что угодно.
Аналогично, не дальше экспериментов. А тут - праздник у нас :).
Да я просто "this." заменил на "this->" в vector06js :) Нового кода тут вообще почти нет. Деминский I8080 удобен, правда я немного его допилил под Вектор, так что не получилось сделать внешний субмодуль с его оригинальной репой.
Размер exe-шника такой из-за SDL2 и boost-а, они статически слинкованы (зачем тут boost это другой вопрос, но потом он все равно пригодится). Кроме того 64-битные бинарники вообще жырны. Может быть можно потом будет попробовать настроить линкер, чтобы он как-то поскромнее линковал, хотя я не очень понимаю зачем. Чисто кода там котенок наплакал, на распе бинарник динамически слинкованный без дебаг инфы занимает 122К.
PPC, А зачем SDL вынимать, если SDL как раз и есть такая штука, которая перенесена уже вообще куда угодно?
М, было бы интересно наверное сделать его под libretro для интеграбельности с разными запускаторами, чтобы шейдеры общие со всеми и вообще.
Кстати, можно будет emscripten-ом обратно в js скомпилировать. А то че.
ivagor, я сейчас пытаюсь билд скрипт сделать универсальным. Как сделаю, напишу как собрать.
svofski, а на какой-нибудь stm32f7 discovery SDL порт есть? Я просто не в курсе.
PS. Порылся, есть вот такая либа http://api.ugfx.io/index.html
Ставится вот на чего: https://community.ugfx.io/index.php?/files/
В общем рецепт примерно такой:
1. Обрести полный MinGW вот этого разлива: https://nuwen.net/mingw.html (в нем в комплекте Boost, SDL2 и git, суперская вещь для вдыхания жизни в винду)
2. Обрести CMake: https://cmake.org/download/
3. Запустить окруженьице MinGW батником(альтернативно можно просто выставить все пути в стандартном окружении, если не лень)Код:C:\MinGW\open_distro_window.bat
4. Перейти туда, где живут всякие такие вещи, например5. (или скачать zip)Код:cd %HOME%\projects
6.7.Код:cd vector06sdl
(мы сейчас в %HOME%\projects\vector06sdl\build)Код:mkdir build && cd build
8.9.Код:cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ..
По идее MinGW может быть и любой другой, но в любом другом придется не знаю каким образом строить самому libboost и SDL2 со всеми его зависимостями, чего под виндой я никому не пожелаю.Код:make
- - - Добавлено - - -
PPC, на такую шелезяку по-любому придется что-то мудрить. Вот соберется кто-нибудь портировать, там и будет видно. Можно будет хоть взять используемое (ничтожно маленькое) подмножество SDL и реализовать его поверх того же uGFX.