PDA

Просмотр полной версии : ПК8000 - Эмуляция и все что с ней связано



ivagor
09.08.2008, 17:03
Существует ли какой-нибудь эмулятор ПК8000 (через yandex не нашел)?

Mick
09.08.2008, 17:08
Существует ли какой-нибудь эмулятор ПК8000 (через yandex не нашел)?

Мне такой не известен. Тут с прогами туго, а без них смысл эмуляции. Компьютеры сами по себе встречаются время от времени, а вот прог для них нема. :(

Возможно, хотя это может быть и бредом, они как то пересекаются с архитектурой с ПК8010(8020) "Корвет". Это надо сравнивать обе схемы.

ivagor
09.08.2008, 17:37
Жаль, что нет эмулятора (и тем более программ).
Судя по режимам экрана, очень далеко от корвета. Коме того, на корвете устройства адресуются как память, а здесь через порты.

ZEman
09.08.2008, 19:09
насчёт эмуляции можно попросить b2m может согласится добавить ПК8000 в свой универсальный эмулятор ;)
но если нет дампов программ и игр то смысла особого нет.

Mick
09.08.2008, 19:43
насчёт эмуляции можно попросить b2m может согласится добавить ПК8000 в свой универсальный эмулятор ;)
но если нет дампов программ и игр то смысла особого нет.


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

b2m
09.08.2008, 22:14
насчёт эмуляции можно попросить b2m может согласится добавить ПК8000 в свой универсальный эмулятор
но если нет дампов программ и игр то смысла особого нет.
Если кто-либо пришлёт мне дамп ПЗУ от Суры, то можно и сделать. Даже просто для коллекции.

Mick
09.08.2008, 22:23
Если кто-либо пришлёт мне дамп ПЗУ от Суры, то можно и сделать. Даже просто для коллекции.

А почему только от Суры, а как же Веста и Хобби. Они тоже хотят в эмулятор :)

ZEman
10.08.2008, 05:53
ну вроде достаточно заэмулиравть когото одного из трёх, как я понял почитав википедию веста, сура и хобби это один и тотже комп только под разными названиями, ну может с какимето мелкими отличиями.
кстати там в книжках приводятся тексты программ и игр, может хоть их ктонибудь напечатает :)

Mick
10.08.2008, 10:37
ну вроде достаточно заэмулиравть когото одного из трёх, как я понял почитав википедию веста, сура и хобби это один и тотже комп только под разными названиями, ну может с какимето мелкими отличиями.
кстати там в книжках приводятся тексты программ и игр, может хоть их ктонибудь напечатает :)

Да они похожи и совместимы между собой, но в ПЗУ они имееют отличия в названии компьютеров :)

ZEman
11.08.2008, 12:22
надо комуто из вас сделать дамп пзу, без этого эмулятора не будет.

b2m
11.08.2008, 12:59
Мне уже прислали ПЗУ от Весты. В выходные буду делать. :)

Mick
11.08.2008, 13:02
Мне уже прислали ПЗУ от Весты. В выходные буду делать. :)

А с общественноcтью поделиться :) Если не трудно, конечно. А у того кто прислал прошивку, может еще какая нибудь информация и проги остались?

b2m
11.08.2008, 14:20
Для тех, кому не терпится взглянуть на ПЗУ Весты, выкладываю файл, всё равно (если всё удачно сложится) в выходные будет вместе с эмулятором выложен на моём сайте.

b2m
12.08.2008, 21:04
Начал делать эмуляцию Весты.
Цветом управляет оператор: color текст,фон,рамка
Примерно так:

b2m
12.08.2008, 21:21
Проверил запись/чтение на магнитофон. Всё вроде работает, полученный WAV файл отлично конвертится при помощи утилиты из castools-1.3.zip

b2m
13.08.2008, 11:12
уже сделал ?
Вот теперь - да, качай на здоровье.


Короче замороченный у них графический режим.
Да, напридумывали чёрт знает что, а мне делай :)

b2m
13.08.2008, 15:01
Эмулятор записывает вывод на магнитофон прямо в файл. Т.е. делаешь так:
1. Набираешь команду csave, но не нажимаешь Enter
2. В тулбаре жмёшь на тёмнокрасное пятно (типа - кнопка "запись" магнитофона)
3. Задаёшь имя файла и уже потом сразу нажимаешь Enter в ПК
4. После окончания записи ещё раз нажми на тёмнокрасное пятно (типа - выключили "запись" на магнитофоне).

Было бы интересно узнать, загружается ли на реале записанная таким образом программа.

XobbiMan
13.08.2008, 15:12
Вот теперь - да, качай на здоровье.

Как заставить включиться русскую клавиатуру в эмуляторе для Веста?


Эмулятор записывает вывод на магнитофон
Проверил - верно, теперь посмотрю загружает ли файлы с кассет, если нет - то поколдую с записыванием у себя.

b2m
13.08.2008, 15:17
Клавиш, как всегда, нехватает :) АЛФ и ГРФ пришлось вынести на F9 и F10.

Я записал в wav тест от ivagor:

ZEman
13.08.2008, 17:49
а как загружать программы, например тотже test ?

ivagor
13.08.2008, 17:54
В смысле в эмулятор? Запускаешь эмулятор, File->Open.

XobbiMan
13.08.2008, 17:58
Эмулятор считывает файл с WAV как с магнитофона:
1. Набираешь команду cload "test" и нажимаешь Enter
2. В тулбаре есть рядом с тёмнокрасном пятнышком треугольник (типа - кнопка "проигрывать" магнитофона)
3. Задаёшь имя файла и ждешь пока ПК не напишет Found: test
4. Если название файла не совпадает, то напишет skip: netest
5. Возможно работает и без указания имени (но я делал по-старинке - и все работает)

В доке Суры книга 2 (бейсик) есть 3 типа команд чтения-записи - LOAD/SAVE , CLOAD/CSAVE, BLOAD/BSAVE

ZEman
13.08.2008, 20:24
чтото я несовсем понимаю, если тебе удалось сделать снапшоты из этих wav файлов, значит они всётаки читабельные, а почему тогда их эмулятор не желает грузить ?
b2m в чём может быть проблема ?

ivagor
13.08.2008, 20:27
Частота же

XobbiMan
13.08.2008, 20:30
при частоте 1,8 МГц,

Проверил - РАБОТАЕТ!!!!!
значит можно больше не заморачиваться usb-звуковухой!!!


Осталось найти, как настроить клавиши в эмуляторе....

ivagor
13.08.2008, 20:45
ZEman
В Vesta.cfg в первой строчке main.CPUClock=2MHz, файлы будут загружаться если заменить на main.CPUClock=1800KHz

ivagor
13.08.2008, 22:06
1. Выгружаем из эмулятора Б2м save"имя на английском", это может быть довольно долго :(.
2. С помощью msxных castools переводим в cas.
Если запись хорошая, то п.1 можно пропустить и попробовать преобразовать сразу считанный с м/ф файл, но с п.1 надежнее (castools правильность не проверяет). Хотя, скорее всего, на кассетах BASIC программы для ПК8000 записаны через csave и на msx будут не совсем читабельны (т.е. надо делать save через эмулятор ), но может Дмитрий сделает загрузку cas ;).

Добавлено через 16 минут
При перезагрузке удерживаем shift и дисковой части не будет.

ZEman
14.08.2008, 06:10
несколько вопросов, каким образом заставить эмулятор печатать по русски и почему когда жмёшь на цифры вылазиют значки типа " ! № ; итд.

ivagor
14.08.2008, 06:24
По русски - удерживая F9, если нужно большие буквы, то еще и shift.
Цифры - с shiftом.

ZEman
14.08.2008, 06:35
не понимаю, пытаюсь загрузить wav файл игры клад.
пишу хоть cload"klad" хоть cload"клад" эмуль всёравно выдаёт skip :КЛАД
или нужно набирать название большими буквами ?

ivagor
14.08.2008, 06:40
я набирал большими

ZEman
14.08.2008, 06:45
уже понял, неудобно довольнотаки.

b2m
14.08.2008, 11:55
Осталось найти, как настроить клавиши в эмуляторе

Посмотри файл EMU\Korvet\pk8000.kbd


но может Дмитрий сделает загрузку cas

Да, надо бы найти процедурки чтения/записи байта в ПЗУ...

Добавлено через 5 минут
А насчёт тактовой частоты: в документации сказано 1,78 МГц, но меня смутило то, что при записи в wav при такой частоте скорость записи получается примерно 2000 бод, а в доке сказано 2400. А при 2МГц получается 2500 бод. Ну я и решил оставить пока 2МГц, но раз уж реальные файлы читаются только при 1800КГц, то надо поменять.

Добавлено через 10 минут

уже понял, неудобно довольнотаки
В Весте есть такая клавиша, на которой большой круг нарисован (слева от пробела) - это фиксация ВР,УПР,АЛФ,ГРФ, я её повесил на левый Alt. Т.е. нажимаешь F9 (АЛФ) и не отпуская её - левый Alt. После этого будешь писать по русски.

XobbiMan
14.08.2008, 12:20
Посмотри файл EMU\Korvet\pk8000.kbd

А где можно поподробней посмотреть как там все настраивать?

b2m
14.08.2008, 12:26
Это матрица клавиатуры, младший бит справа. Выше по топику была документация к Суре, я делал всё по ней, в ней тоже разрисована эта матрица. Имена клавиш, которые ещё есть, можно посмотреть в других файлах .kbd

Добавлено через 1 минуту

По поводу частоты есть одна нестыковка
Я тоже заметил, поэтому и поставил для начала как обычно 2МГц.

ZEman
14.08.2008, 13:11
b2m, сделай пожалуйста в следующем релизе управление на стрелках а не на нумпаде, уже сколько людей просят.
или добавь такую опцию чтоб можно было выбирать управление или стрелки или нумпад, так ещё лучше было бы.

ivagor
14.08.2008, 13:49
Вместо тех клавиш где хочешь, чтобы был курсор пишешь x-left и т.д. (как то не по русски написал, но я думаю идея понятна).
А B2m "страшно далек от народа" :cool: :D

XobbiMan
14.08.2008, 13:54
ivagor,

а как сделать чтобы левый и правый шифт реагировали одинаково - просто написать shift не работает

ivagor
14.08.2008, 13:59
Как я понимаю, чтобы сопоставить одной клавише эмулируемого компьютера несколько физических клавиш клавиатуры PC, изменением layout.kbd не обойдешься, надо предусмотреть это в эмуляторе.
К слову, shift при эмуляции весты явно работает инверсно, это скорее bug эмулятора чем фича Весты.

b2m
14.08.2008, 14:14
сделай пожалуйста в следующем релизе управление на стрелках а не на нумпаде

как сделать чтобы левый и правый шифт реагировали одинаково

чтобы сопоставить одной клавише эмулируемого компьютера несколько физических клавиш клавиатуры PC, изменением layout.kbd не обойдешься, надо предусмотреть это в эмуляторе

Из всего вышесказанного следует, что неплохо бы сделать возможность "сопоставить одной клавише эмулируемого компьютера несколько физических клавиш клавиатуры PC".
Хлеба надо - хлеба дадим!

Добавлено через 4 минуты
Кстати, я посмотрел Клад, так вот там управление не "стрелками" (т.е. клавиши нумпада 2,4,6,8), а весьма своеобразный набор - клавиши нумпада 1,2,3,5. Т.е. по расположению соответствуют дополнительным стрелкам на клавиатуре PC. Что тепепь, для каждой программы свою раскладку делать?

Добавлено через 5 минут

К слову, shift при эмуляции весты явно работает инверсно, это скорее bug эмулятора чем фича Весты
Что-то я сомневаюсь. Эй! Владельцы реальных компов! Ну скажите-же правду!

ZEman
14.08.2008, 14:46
Что тепепь, для каждой программы свою раскладку делать?

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

XobbiMan
14.08.2008, 14:46
Кстати, я посмотрел Клад, так вот там управление не "стрелками" (т.е. клавиши нумпада 2,4,6,8), а весьма своеобразный набор - клавиши нумпада 1,2,3,5. Т.е. по расположению соответствуют дополнительным стрелкам на клавиатуре PC. Что тепепь, для каждой программы свою раскладку делать?

Скорей всего не надо делать (я пробовал на ноуте, потому курсор и не заставил работать, после дополнительную полную клаву подключил, так все как вы сказали - и заработало.



Сообщение от ivagor Посмотреть сообщение
К слову, shift при эмуляции весты явно работает инверсно, это скорее bug эмулятора чем фича Весты
Что-то я сомневаюсь. Эй! Владельцы реальных компов! Ну скажите-же правду!

Жаль проверить не смогу пока, тока через 2 недели мне сделают RGB-SCART переходник (всю схему в скарт-вилке вставят, по схеме Mick'a)

ZEman
14.08.2008, 15:01
жду с большим нетерпением и нового релиза emu и новых программ (игр) :)

ivagor
14.08.2008, 15:23
Если shift реализован как на реальном компьютере, то это несколько своеобразное решение разработчиков ПК8000 - вводить цифры с shiftом.
С другой стороны, то что большие буквы вводятся с shiftом выглядит естественно.

Добавлено через 14 минут
XobbiMan, можешь выложить следующие игры - FIRE, MUM, COLOR, WARP или хотя бы одну из них, есть большое подозрение, что это адаптации с msx.

b2m
14.08.2008, 15:57
Если shift реализован как на реальном компьютере, то это несколько своеобразное решение разработчиков ПК8000 - вводить цифры с shiftом
На самом деле, никто не мешает зафиксировать shift, нажав на shift+alt

XobbiMan
14.08.2008, 18:51
Как в эмуляторе запустить дебугер, или как вывести в какое-нибудь окно содержимое ячеек памяти и наблюдать за ними, в то же время чтобы работала какая-нибудь программа?

ivagor
14.08.2008, 18:56
XobbiMan
В rarе конфиг для весты с debuggerom.

B2m
Скоро, наверное, можно будет отмечать юбилей этого вопроса :), может его в FAQ добавить?

26.08.2008
Вложение удалено, т.к. информация по подключению отладчика теперь доступна в FAQ.

Mick
14.08.2008, 19:02
Если shift реализован как на реальном компьютере, то это несколько своеобразное решение разработчиков ПК8000 - вводить цифры с shiftом.



Могу с увереностью сказать. В Весте цифры вводятся с нажатым РГ(по нашему Shift). По крайней мере у меня так. По умолчанию вводятся дополнительные знаки нижние. Еще когда зажимаешь Shift светодиодик загорается.
Одно только огорчает - теперь искать герконы :(

b2m
14.08.2008, 20:27
может его в FAQ добавить
А разве у нас принято FAQ читать?
"Фи, это же для совсем ничего не знающих, уж я-то не такой!" :)

XobbiMan
14.08.2008, 20:29
ivagor,
дебугер запустился и все, научным-тыком нажал F5 дебугер исчез запустился ПК8000.
Где почитать инструкцию как пользоваться.

Просто интересно бы прикрутить к эмулятору бы состояние клавиатуры самой ПК8000, просто надо считать с определнных ячейках значения и написать сооветсенное сообщение, что включены РУС CAPS и так далее :)
а в конфиге бы было типо такого (адреса ячеек с потолка пока)
status : Status {
status[1].address=ram[FF00]
status[1].bit=[0]
status[1].caption="RUS"
status[2].address=ram[FF0E]
status[2].caption="CAPS"
status[1].bit=[5]
}

и еще интересно как отослать комбинацию УПР+СТОП (нужна что прерывать действия, часто пользуема)

Добавлено через 6 минут

Цитата:
Сообщение от ivagor Посмотреть сообщение
может его в FAQ добавить
А разве у нас принято FAQ читать?
"Фи, это же для совсем ничего не знающих, уж я-то не такой!"

Ну я бы почитал с удовольствием!

ivagor
14.08.2008, 20:40
B2m
Ну, я всегда читаю, даже когда вроде все понятно. Читать с детства люблю :).

XobbiMan
F5 - запуск (скрыть окно отладчика)
F4 - до курсора
F8 - одна команда (с Shift-ом не заходя внутрь процедур)
F9 - точка останова
Ctrl+G - перейти на другие адреса
Break - прервать выполнение и показать окно отладчика
Информация предоставлена автором эмулятора Башкирия2м.

B2m
Может временно сделаешь свой проект коммерческим, а я в техподдержке до конца августа поработаю ;) ?

b2m
14.08.2008, 22:09
интересно бы прикрутить к эмулятору бы состояние клавиатуры
Есть такая идея: в строке статуса эмулятора сделать произвольное количество (определяемое в конфиге) лампочек с подписями, а то "рус/лат" в Векторе смотрится как-то криво. А состояние лампочки определяется не значением в памяти, а соответствующим выводом ВВ55.

Добавлено через 1 минуту

Может временно сделаешь свой проект коммерческим, а я в техподдержке до конца августа поработаю
Насчёт коммерции - это вряд-ли, а вот если будешь работать техподдержкой, то я обеими руками за :)

Добавлено через 15 минут

и еще интересно как отослать комбинацию УПР+СТОП
Клавишу СТОП я традиционно повесил на F12, т.е. надо нажать Ctrl+F12

ZEman
15.08.2008, 05:11
А разве у нас принято FAQ читать?
"Фи, это же для совсем ничего не знающих, уж я-то не такой!" :)

я бы тоже не отказался чтоб был FAQ, я то в этой теме сижу и уже понимаю что к чему, а другим как ?
и ещё, уж незнаю каким образом, но буржуи пронюхали про ваш проект как они будут разбираться ?

ссылки на эму сайты где ваш эмулятор указывают:
http://www.emulation9.com/
http://www.emu-france.com/

b2m
15.08.2008, 11:33
буржуи пронюхали про ваш проект как они будут разбираться ?
Пусть русский учат. И этот сайт читают :)

Я сделал загрузку *.cas для Весты.

Добавлено через 1 минуту
И добавил в FAQ про дебугер :)

XobbiMan
15.08.2008, 11:50
Я сделал загрузку *.cas для Весты.

Проверил - классно работает, принтер тоже классно работает. Одним словом - все лучше и лучше!

ivagor
15.08.2008, 12:14
b2m
Небольшой багрепорт (или я не все понял)
1. Конфигурация, в которой нет загрузки и выгрузки cas называется Vesta (cas), а в которой есть загрузка и выгрузка cas называется Vesta. Или суффикс (cas) надо понимать как "отсутствие cas"? Ну это мелочь.
2. Загрузка и выгрузка поддерживаются для csave/cload (bsave/bload пока не пробовал) и не поддерживаются для save/load. ASCII файлы хотя и больше размером, но зато вполне совместимы с msx (там, например, легче набрать программы), в отличие от csave/cload. Текущий вариант поддержки cas это хорошо, а добавление поддержки save/load это было бы замечательно.

b2m
15.08.2008, 12:56
суффикс (cas) надо понимать как "отсутствие cas"?
Суффикс (cas) надо понимать как наличие "магнитофона", через который можно считать и записать "кассету" (в виде .wav файла).


добавление поддержки save/load это было бы замечательно
Я делал перехват процедур чтения/записи байта, обычно в таких случаях нет зависимости от данных. Надо посмотреть.

Добавлено через 2 минуты
А где можно взять файл для load?

b2m
15.08.2008, 14:06
Нашёл проблему, после чтения синхры флаг CY должен быть сброшен, поэтому перехват этой процедуры нужно делать чуть позже. Достаточно исправить в конфиге:

tiproc[36C2-

на

tiproc[36CA-

ZEman
15.08.2008, 14:59
это всё конечно замечательно, но когда будут остальные дампы игр и программ ?

b2m, хочу попросить об одной простенькой вещи, можешь сделать так чтоб во время загрузки касетных образов (cas, wav) был слышен звук загрузки, как на реале какбудто.

чтото я не понял, почему в vesta (cas) выбирается формат tzx а не cas ?

b2m
15.08.2008, 15:42
чтото я не понял, почему в vesta (cas) выбирается формат tzx а не cas
Изначально был только .wav. Те конфигурации, у которых в названии есть суффикс (cas) не перехватывают процедуры чтения/записи, а эмулируют однобитный сигнал с магнитофона. Потом я добавил открытие .rk файлов, которые при этом конвертируются в wav (внутри эмулятора), но т.к. это не очень удобно и приходится долго ждать загрузки, я сделал перехватчик процедур. Т.е. этот вид загрузки появился позже. Загрузка из .tzx добавилась ещё позже, но это для тех программ, которые используют свой хитрый загрузчик (защита от копирования), а не вызовы процедур из БИОСа.

ivagor
15.08.2008, 17:09
b2m
Прозвучало предложение добавить в меню пункт size 4:1. Предлагаю более универсальный вариант :), пусть будет 1:1 и custom, а соотношение сторон для custom задается в cfg.
Еще бы лучше при старте соотношение было custom, а то 1:1 мелко и каждый раз переключаться не очень здорово.

ivagor
15.08.2008, 19:25
b2m
В тесте и морском бое в верхней части экрана помаргивает черная полоса. Может и на реале так, но раздражает.
В минере такая же фигня. Похоже есть какая-то тонкость в реализации видеоконтроллера.

XobbiMan
15.08.2008, 19:35
b2m
В тесте и морском бое в верхней части экрана помаргивает черная полоса. Может и на реале так, но раздражает.

На сколько помню на железном ПК8000 такого нет.



Продолжение

6. Программа ТАНЕЦ
8705
load "TANEC"
cas-file: Смотрите первый пост ветки

7. Игра ЧИСЛО
8707
load "CHISLO"
cas-file: Смотрите первый пост ветки

ivagor
15.08.2008, 20:49
b2m
Можно ли в конфигурацию весты (которая работает с cas, а не с wav) корректно включить отладчик? Получается либо отладчик либо загрузка cas.
Возможно в этой конфигурации с перехватом bload не все идеально. Выгрузил в другой конфигурации wav, потом загрузил - все нормально. Переделал castoolом в cas - не работает, а посмотреть в чем дело без отладчика не могу.

b2m
15.08.2008, 20:51
В тесте и морском бое в верхней части экрана помаргивает черная полоса
В документации есть бит "гашение экрана", но как он действует конкретно, я не знаю, возможно гашение начиналось только со следующего кадра. Можно отключить в конфиге vid.enable (просто удалить строку), всё равно вроде бы нигде не используется.

Добавлено через 4 минуты

а посмотреть в чем дело без отладчика не могу
В принципе, достаточно посмотреть в .cas, если формат правильный, то должно работать.
Отладчик подключить можно, просто будет две строчки debug=... Но нужно иметь ввиду, что перехват процедур устанавливает новое значение PC и отладчик не вызывается на команде, с которой начинается перехват. Ставь точку останова выше. Возможно опять лажа с флагом CY.

ivagor
15.08.2008, 21:07
b2m
Тут, похоже, некоторые разночтения у тебя и castools, каким должен быть cas c бинарным файлом. Castool после первых 24 байт вставил FF и семь нулей.
Уф, надо искать доку по cas.

Хотя cload и load такие файлы (c FF и 7 нулями) читают нормально, может дело и не в этом.

blueMSX выгружает без FF и семи нулей, но все равно в весту такой файл не грузится (вернее, грузит 1й байт и все)

b2m
15.08.2008, 21:57
но все равно в весту такой файл не грузится (вернее, грузит 1й байт и все)
Я ж говорю, фигня с флагом CY, надо чтобы после перехвата исполнилась какая-либо команда, сбрасывающая CY - флаг ошибки чтения.

Добавлено через 23 минуты
Какая редкая комбинация однако: ORA A / RET :)
Нашёл по адресу 2300, т.е. нужно поправить конфиг так:
biproc[370E-2300]=sp

ZEman
16.08.2008, 10:32
так cas файлы загружаются в эмуляторе b2m ?
чтото у меня не выходит загрузить их.
делаю например так:

набираю cload"KLAD" жму ENTER
открываю cas файл игры клад.
эмуль мне пишет OK
набираю RUN и жму ENTER
он мне снова OK и всё молчит, в чём прикол.

ivagor
16.08.2008, 10:34
BASICовские сделаны через save, поэтому их надо загружать через load.

ZEman
16.08.2008, 12:16
ничё не выходит, задолбался уже, чё за глюки ?

b2m
16.08.2008, 13:02
ничё не выходит, задолбался уже, чё за глюки ?
Ты наверное не делал изменения в конфиге, обсуждаемые выше по теме. Просто скачай ещё раз с моего сайта.

Кстати, обнаружил прикольную вещь: в БИОСе есть возможность автозапуска бинарной программы после reset (используется в COLOR). Если по адресу 4000 находятся буквы AB, то управление после reset передаётся по адресу, который хранится в слове 4002. Вот так-то, защита от копирования :)

Добавлено через 1 минуту
А COLOR, похоже, не работает из-за какого-то глюка в эмуляторе, надо основательно разбираться.

ZEman
16.08.2008, 13:11
скачал более новую версию эмулятора, теперь всё работает, спасибо :).
b2m сделай пожалуйста чтоб эмулятор запоминал прошлый конфиг, а то так надоело уже каждый раз менять размер окна.
и если можешь добавь звук во время загрузки.

ZEman
16.08.2008, 16:38
а в чём смотреть эти адреса, в дебагере ?
я им пользоваться не умею

ivagor
16.08.2008, 16:43
В debuggere быстрее, но можно и через PEEK:
Начальный адрес - PEEK(&HFA30)+PEEK(&HFA31)*256
Конечный адрес - PEEK(&HFA32)+PEEK(&HFA33)*256-1
Стартовый адрес - PEEK(&HFA34)+PEEK(&HFA35)*256
Ну и для полной ясности - впереди еще вставить PRINT

ZEman
16.08.2008, 18:56
хм, странность одну заметил.
почему басиковые игрушки в виде cas загружаются также медленно как и проигрывается wav файл а написаные в кодах игрушки (питон, автодром, тяп-ляп) загружаются мгновенно.
почему так происходит ?

ivagor
16.08.2008, 19:13
Если нужна быстрая загрузка, нужно загрузить, выгрузить по csave, и потом загружать по cload. В этом случае (и при bload) можно сказать, что просто копируется содержимое cas в память.
При загрузке по load происходит преобразование ключевых слов в токены. Например COLOR преобразуется в F0h.
Недостаток csave, на мой субъективный взгляд, в том что не все коды токенов на ПК8000 и msx совпадают, а save позволяет на msx загрузить программу, текст которой по крайней мере выглядит как на ПК8000.

Ну и в качестве прикола ;)
Эти игрушки "работают" на msx (с поправкой на разные знакогенераторы)
Паралельно с запуском на msx рекомендую запустить эмулятор b2m с этой же игрой чтобы понимать, что к чему
MINER
MORBOJ

Эти програмки частично (хоть чуть-чуть) работают на MSX
SURA
TANEC
TEST

b2m
Что за порт 87h?

ZEman
16.08.2008, 19:16
да зачем же их быстрее грузить ?
я вот вообще непонимаю этих ускорений, ну нужна вам быстрая загрузка так сохраните в снапшот игру и загружайте его, зачем же натуральную загрузку портить.
игры (программы) загружаемые по bload тоже должны иметь нормальную скорость загрузки.
еслиб ещё b2m добавил в эмулятор звук во время загрузки так было бы совсем здорово.

Mick
16.08.2008, 19:28
b2m
Что за порт 87h?

Если поглядеть на схему, то диапазон адресов 84....87 это относится к К580ВВ55А микросхема D32. Тобишь 87 - регистр управления ВВ55(настройка ее). Если мне конечно не изменяет память. Впрочем как и порт 83 для микросхемы D33.

b2m
16.08.2008, 20:47
То есть 80h-83h и 84h-87h это две ВВ55, понятно, спасибо.
Ну да, в Vesta.cfg так и написано :) Аль не читал? Вроде дебугер ты сам добавлял, без подсказок :)

XobbiMan
17.08.2008, 14:36
b2m,

Вопрос по эмулятору,
Когда работаем с WAV, технически возможно показывать "общее время", "текущее время проигрывания" при чтении, как бы счетчик? (В форуме говорили про звук, но думаю эффективнее было бы время в секундах, а может и в минутах)

b2m
17.08.2008, 14:59
технически возможно показывать "общее время", "текущее время проигрывания" при чтении
Да, возможно, например в строке статуса, но там пока показывается, на сколько реальный процессор успевает эмулировать реальный. Когда у меня был PII-400 эта информация была очень актуальной, с точки зрения оптимизации. Сейчас, когда на современных компьютерах эта цифра не превышает 15%, можно сделать её опциональной, а вместо неё показывать, например, время проигрывания.

XobbiMan
17.08.2008, 15:23
Да, возможно, например в строке статуса, но там пока показывается, на сколько реальный процессор успевает эмулировать реальный. Когда у меня был PII-400 эта информация была очень актуальной, с точки зрения оптимизации. Сейчас, когда на современных компьютерах эта цифра не превышает 15%, можно сделать её опциональной, а вместо неё показывать, например, время проигрывания.
Будем ждать новой версии

ZEman
17.08.2008, 17:33
и что получится в таком случае, теже снапшоты ?
зачем это нужно, лучше оставьте с нормальной загрузкой, а кому нужна быстрая пусть снапшотами пользуются.
на техже эмуляторах спектрума в основном tap и tzx используются с нормальной скоростью.
если сделать с неправильной то много народу введёте в заблуждение.

XobbiMan
17.08.2008, 21:28
ivagor,

Получилось ли понять почему FIRE загружается в эмулятор, но не работает?

b2m
17.08.2008, 21:43
XobbiMan, завтра обновлю эмулятор, ошибка была. FIRE и COLOR работают. MUM пока не удалось загрузить, может ещё раз попытаешься считать? Ну там, головку спиртом протереть, кассету постучать... :)

ivagor
18.08.2008, 18:23
b2m
Все здорово, только warp не заработал. Или я поторопился качать и будет еще версия?

b2m
18.08.2008, 18:58
только warp не заработал
Если color заработал, то это и есть последняя версия.

XobbiMan
18.08.2008, 19:05
b2m
Все здорово, только warp не заработал. Или я поторопился качать и будет еще версия?

тут точно последнии версии:

http://rapidshare.com/files/138038924/MUM_WARP_CRUX.7z.html

Подтверждаю - не работает WARP (может быть привязано к биосу пк8000, все-таки Веста ПЗУ версия 1.1, а Сура - 2.2)

самое прикольно, что в COLOR и fire работают стрелки курсора

Итак,
Кроме WARP, работают все программы, что у меня есть в эмуляторе (2 какие-то неполные, может плохо считалось, итак весь день цифровал все воскресенье), в течение недели переведу все wav в cas (думаю вначале сделать только командой CSAVE), ассемблеровские как обычно (найдем адреса начала, конца и старта)

b2m
18.08.2008, 20:18
У вас warp заработал?
Нет. В связи с этим заинтересовал такой вопрос: а были-ли отличия у Весты и Суры с точки зрения портов? Я документацию только по Суре скачал. В ней, например, не сказано, что значения портов 92h,93h инверсные, а судя по БИОСу Весты получается, что инверсные. Я и сделал инверсные. А в WARP туда засылаются нули, что наводит на мысль о том, что автор программы рассчитывал на не инверсные значения.

XobbiMan
18.08.2008, 20:27
b2m,

Как там дела обстоят с клавишей Shift? В ПК8000 там две клавиши но код один и тот же, в IBM PC - две с разными кодами. Планируется ли в будушем такая фунциональность в эмуляторе: чтобы две разные клавиши понимались как один код.
Есть два предложения
1. Простое только для Shift: shift,alt,ctrl - без букв L R - значит нажата любая
2. Сложное и универсальное, использовать ИЛИ символ, например
lshift|rshift
lalt|ralt
lctrl|rctrl
F1|F10
(или удвоенный ||, чтобы не переделывать другие раскладки)

Добавлено через 10 минут

Нет. В связи с этим заинтересовал такой вопрос: а были-ли отличия у Весты и Суры с точки зрения портов? Я документацию только по Суре скачал. В ней, например, не сказано, что значения портов 92h,93h инверсные, а судя по БИОСу Весты получается, что инверсные. Я и сделал инверсные. А в WARP туда засылаются нули, что наводит на мысль о том, что автор программы рассчитывал на не инверсные значения.

Тогда надо подождать когда Misc выложить ROM Сура.

Mick
18.08.2008, 20:56
тут точно последнии версии:

http://rapidshare.com/files/138038924/MUM_WARP_CRUX.7z.html

Подтверждаю - не работает WARP (может быть привязано к биосу пк8000, все-таки Веста ПЗУ версия 1.1, а Сура - 2.2)


У Суры версия ПЗУ 1.2.
Сегодня спаял проводки от нота к компику Сура. Попробовал два файла проверить. Это тест Хобби и звуковой тест от b2m. Чтож загрузилось и проигралось(звук тоже прошел).
Ну и косяк конечно возник с градациями цвета - буду думать с номиналами резюков. Некоторые скриншотики. Надпись Хобби мерцала, фотик успел схватить в некоторой интересной цветовой гамме. :)

Хотел записать ПЗУ. А вот программы звукозаписи подходящей не нашлось :(

ivagor
18.08.2008, 21:18
b2m
warp похоже работает в режиме 1 (как и на msx), так что ему должны быть без разницы 92 и 93 (которые судя по color действительно инверсные), для него важны 90 и 91.

Mick
А теперь тестик romram проверить можешь?

b2m
18.08.2008, 21:58
warp похоже работает в режиме 1 (как и на msx), так что ему должны быть без разницы 92 и 93 (которые судя по color действительно инверсные), для него важны 90 и 91.
Ага, блин, а ещё оказывается важны порты A0-BF :) А в доке не сказано, что именно туда пишутся цвета в режиме 1.

Исправил. Качайте. WARP работает!

ivagor
19.08.2008, 08:16
b2m
Т.е. для реального задания таблицы цветов в режиме 1 нужно писать в порты A0-BF, а то что находится в VRAM c адреса 400 (как написано в книжках) - это скорее всего копия отправленного в порты?
А порты A0-BF - это похоже 4 155РУ2, я еще удивлялся - в ПК8000 их в 2 раза больше чем в векторе.

Mick
Может сможешь еще бы одну идею проверить - влияет ли гашение экрана на быстродействие.

Загружать cload"ROMRAM2"
Желательно прогнать несколько раз, вдруг что-то будет меняться (хотя судя по прошлому тесту не должно).

26.08.2008
Вложение удалено, новый вариант теста - ROMRA3.

b2m
19.08.2008, 19:29
ivagor, в моём эмуляторе вообще очень много разного рода допущений, которые никак не вяжутся с реальным компьютером :v2_rolley

b2m
19.08.2008, 20:10
Расскажите как полученный wav ПЗУ преобразовать в ROM
ОТДАЙ ЕГО МНЕ :)

ivagor
19.08.2008, 20:12
b2m
У тебя реализована поддержка внешнего ПЗУ (ext1 и ext2 в конфиге)? Если да, то как сопоставить ext1 или ext2 название соответствующего файла?

XobbiMan
Запустил машинку?

b2m
19.08.2008, 20:16
Дело было бы гораздо проще, если сначала скопировать ПЗУ в другую область памяти (на реальном компе), а потом записать. Иначе будет считываться в область 0000-3FFF, а там экран.

Добавлено через 47 секунд

Если да, то как сопоставить ext1 или ext2 название соответствующего файла?
Видимо по аналогии с BIOS-ом.

XobbiMan
19.08.2008, 20:18
ОТДАЙ ЕГО МНЕ

8bit или 16bit? или оба?



XobbiMan
Запустил машинку?
Нет, просто несколько дней на эмуляторе наконец-то напомнили мне 16 лет назад беглость пальцев по ПК8000. Подключил кабель к звуковухе и вслепую набрал
bsave"rom",&h0000,&h4000,&h0000
и вроде записало.

Добавлено через 1 минуту

Дело было бы гораздо проще, если сначала скопировать ПЗУ в другую область памяти (на реальном компе), а потом записать. Иначе будет считываться в область 0000-3FFF, а там экран.
Такое вслепую точно не получиться....

b2m
19.08.2008, 20:20
8bit или 16bit? или оба?
"Достаточно одной таблетки" :)
Любой.

XobbiMan
19.08.2008, 20:24
http://rapidshare.com/files/138522225/rom.zip.html (12mbait)


Но твою музыку вслепую не получилось запустить, может уровень звуку слабый - надо с громкостью еще поиграть (с наушников снимаю звук),

Так оно и было - все заиграло.
То есть cas2wav test_of_music_by_b2m.cas test.wav
test.wav простым виндоус-медиа-плаером проигрывал
Все прекрасно играет, значит реальная железяка понимает WAV от cas2wav


Позже надо проверить если wav 2 mp3 сделать, поймет ли он такой (тогда все можно будет загрузить на PDA и считывать оттуда, жаль, что микрофонного входа в зверке нет)

b2m
19.08.2008, 21:00
Вот, что получилось из вышеупомянутого wav с ромом от Хобби

b2m
20.08.2008, 17:41
Возможно что ПЗУ Хобби некорректно считан, хотя ассемлеровский софт загружает. Но явно ПЗУ с ошибкой какой-то.
Чтобы эмулятор с ПЗУ Хобби загружал .cas файлы надо заменить
biproc[370E-2300]=sp
на
biproc[370E-2A93]=sp

Я немного обработал wav файл с ПЗУ, после чего wav2cas сконвертировал-таки это ПЗУ. Так вот - новый файл ничем не отличается от первого варианта. Может само ПЗУ испортилось? :)

XobbiMan
21.08.2008, 19:39
20000 RESTORE 20010
20010 DATA 0,0,2A,0,B0,11,0,8,AF,86,47,23,1B,7A,B3,78,C2,9,B0 ,22,0,B0,C9
20020 FOR I=0TO22:READ A$:POKE&HB000+I,VAL("&h"+A$):NEXT
20030 FOR I=0TO6:X=USR(&HB002)
20040 IF X><0 THEN PRINT"ОШИБКА ПРОВЕРКИ 1":PRINT" НЕИСПРАВНО ПЗУ:";I:PR=1
20050 NEXT
Вот этот участок программы загоняет подпрогу на машинных кодах и запускает. вот что эта подпрограмма делает

Добавлено через 7 минут

Да нету там никакой разницы. У XobbiMan просто ПЗУ от старости глюкнуло. Или на заводе при прошивке была ошибка, а контрольную сумму они не проверяли. Если между Сурой и Хобби разницы нет, можно назвать конфигурацию "Сура & Хобби", а как там будет ПЗУ называться - всё равно.

Так добавляй в эмулятор, но может обозвать конфиги не sura и vesta, но
PK8000 Vesta
PK8000 Vesta (cas)
PK8000 Sura and Xobbi
PK8000 Sura and Xobbi (cas)

?

ivagor
21.08.2008, 19:49
XobbiMan
Если это был вопрос, то она считает контрольные суммы содержимого ПЗУ по двухкилобайтным блокам.

b2m
21.08.2008, 19:49
Так добавляй в эмулятор, но может обозвать конфиги не sura и vesta
Так, наверное, и сделаю.

XobbiMan
21.08.2008, 19:53
XobbiMan
Если это был вопрос, то она считает контрольные суммы содержимого ПЗУ по двухкилобайтным блокам.

Да это был вопрос, спасибо за ответ.

ivagor
21.08.2008, 19:53
А может назвать их
ПК8000 1.1
ПК8000 1.2

b2m
21.08.2008, 19:57
ivagor, я на имена файлов копирайта не делаю :) Ну хочется тебе - возми и переименуй конфиг, у себя.

ivagor
21.08.2008, 20:00
Да я так, для поддержания разговора, вопрос совершенно не принципиальный.

XobbiMan
21.08.2008, 20:00
ivagor, так оно не будет ясно версия к какому компу принадлежит

ivagor
21.08.2008, 20:03
А вот интересно, это 100% соответствие
1.1 - Веста
1.2 - Сура, Хобби
Если да, то сдаюсь :)

Добавлено через 11 минут
b2m
Сколько ты сделал в эмуляторе строк от прерывания до верхней активной строки?

b2m
21.08.2008, 20:19
ivagor, сдавайся :)

Прерывание я сделал с началом вывода верхней строки. А когда оно там по схеме - это разбираться надо.

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

ivagor
21.08.2008, 20:34
b2m
я тоже об этом подумал (про мигание).

ZEman
22.08.2008, 06:57
b2m, ты забыл положить в последний релиз эмулятора 2 файла:

Vesta.cfg и Vesta (cas).cfg

XobbiMan
22.08.2008, 09:25
b2m, ты забыл положить в последний релиз эмулятора 2 файла:

Vesta.cfg и Vesta (cas).cfg

Файлы были переименованы, чтобы сгруппировать модели ПК8000
Смотри у себя такие:
"PK8000 Sura and Xobbi.cfg"
"PK8000 Sura and Xobbi (cas).cfg"
"PK8000 Vesta.cfg"
"PK8000 Vesta (cas).cfg"

Mick
22.08.2008, 10:00
Народ, только не пинайте. Вот после игр с реалом решил запустить эмулятор, не пойму как cas файлы загружать. Обтыкал все - никак не пойму.
И второй вопрос - вот я на винде на tasm8085 получаю bin файл - как его загрузить в эмулятор.

Tim0xA
22.08.2008, 10:48
Народ, только не пинайте. Вот после игр с реалом решил запустить эмулятор, не пойму как cas файлы загружать. Обтыкал все - никак не пойму.
Была та же проблема. Спасибо, ivagor - просветил :)
Запускаешь конфигурацию весты у которой в названии нет (cas), набираешь bload"имя",r Далее - нажимаешь Enter! И автоматически появится окно диалога выбора файлов cas.
Выбираешь нужный cas и все должно заработать.
Имя файла указывать большими буквами без расширения.

XobbiMan
22.08.2008, 20:08
ivagor, так получается что дебугер и cas-файлы вместе не работают, дебугер работает только с wav?

ivagor
22.08.2008, 20:26
У меня тоже возникал такой вопрос и b2m сказал, что просто будет две строчки с debug=
Работает, но b2m предупредил, что особенности могут вылезти при отладке процедур обмена с лентой.

b2m
22.08.2008, 20:54
Обнаружил глюк в Весте: если после cload как-нибудь изменить программу, происходит крэш бейсика. Происходит это из-за ошибочного байта в ПЗУ по адресу 18DEh. В Хобби там стоит правильный байт. Вот мне интересно, это опять ошибка чтения ПЗУ, или эта ошибка версии 1.1 была исправлена в версии 1.2? И что делать с файлом vesta.rom, исправлять, или не надо?

XobbiMan
22.08.2008, 21:28
b2m,
Но ведь TEST, которая подсчитывает контрольную сумму показала что ПЗУ правильная, интересно что скажет эта TEST программа после изменения.

Можно также попросить Mick, чтобы он проверил какой байт находится в этой ячейке (у него же тоже Веста есть, вот и узнаем, это глюк или такая версия).

Добавлено через 3 минуты

Почему обойдемся wav, все же работает?

А как тогда поключить дебугер и чтобы cas-формат считывало?
debug=mydbg добавить, а не заменять?

ivagor
22.08.2008, 21:33
Да, именно добавить.

Если заменить в ПЗУ 1.1 байт F5 по адресу 18DE на байт F9, как в ПЗУ 1.2, то TEST дает ошибку.

b2m
Ошибку не удалось воспроизвести.
В конфигурацию PK8000 Vesta.cfg (с байтом F5 по адресу 18DE) загрузил по cload свой тестик ROMRA3 (он тут выкладывался), менял одну из строк, добавлял строку - BASIC работал.
Процедуру (в которую попадает 18DE) не анализировал.

ivagor
25.08.2008, 18:05
Вопрос к b2m и всем фанатам и знатокам ПК8000 - как в эмуляторе с клавиатуры ввести букву "ю"? Через chr$ она печатается, и большая и маленькая, но все равно интересно. По layout.kbd она на клавише <> - что это за клавиша?

b2m
25.08.2008, 18:13
на клавише <> - что это за клавиша
Есть такая на немецкой клаве :) Повесь куда-нибудь на другое место, а заодно и мне расскажи, где удобнее её разместить.

XobbiMan
25.08.2008, 19:25
Вопрос к b2m и всем фанатам и знатокам ПК8000 - как в эмуляторе с клавиатуры ввести букву "ю"? Через chr$ она печатается, и большая и маленькая, но все равно интересно. По layout.kbd она на клавише <> - что это за клавиша?

Как раз этим вопросом занимаюсь - рисую оригинальную клаву ПК8000, а так же IBM PC клаву, на которой будет указаны расположение символов что используется в эмуляторе.

ivagor
26.08.2008, 17:52
Вот о чем подумал - может кто-нибудь сделает редактор конфигов для b2m с GUI :)?

b2m
26.08.2008, 18:19
И как это должно было бы выглядеть?
Собственно, а чем текстовый редактор не устраивает? :)
Я, конечно, догадываюсь - отсутствием документации по конфигам.
Но я думал, что лучшая документация - это примеры этих самых конфигов...

ivagor
26.08.2008, 18:36
Контроль и перечисление вариантов в случае с GUI пожалуй позволили бы обойтись без документации (по cfg).
Например в конфигурации ПК8000 пункт "Загрузка" и выпадающий список с вариантами cas и wav (заведомо нерабочий вариант сделать не получится). При этом "конфигуратор" автоматически может учесть используемую версию ПЗУ (1.1 или 1.2) и для варианта cas автоматически корректировать адреса процедурок.

Еще одна неплохая функция для гипотетического конфигуратора - массовое изменение какого-то параметра для семейства компьютеров. Например, чтобы включить отладчик для всего семейства ПК8000.

XobbiMan
26.08.2008, 18:36
Вот о чем подумал - может кто-нибудь сделает редактор конфигов для b2m с GUI ?

Думаю для этого точно ГУИ не надо.


Я, конечно, догадываюсь - отсутствием документации по конфигам.
Но я думал, что лучшая документация - это примеры этих самых конфигов...
Оно так пример наглядный, но не всегда ясно иногда что значат они (и скорей всего изза того что я не особо знаком с архитектурой ПК)

b2m
26.08.2008, 19:04
Например в конфигурации ПК8000 пункт "Загрузка" и выпадающий список с вариантами cas и wav
У меня была идея сделать некий "препроцессор" как в С-ях, с директивами #if #else #endif, чтобы в зависимости от некоторых опций конфигурация несколько видоизменялась. Сами опции тоже задавать какими-либо директивами, а значения где-либо хранить (в файле или реестре). Например так:

...
#define use_z80:boolean Использовать процессор Z80

#if use_z80
CPU : z80 {
#else
CPU : K580wm80a {
#endif
...

Но судя по пожеланиям, хочется менять конфигурацию в динамике, не прерывая эмуляции...

ZEman
27.08.2008, 05:03
b2m, я считаю что ivagor, прав.
эмулятору нужен какойто глобальный конфиг, и настройка, вся папка эмулятора уже зас***а различными конфигами и файлами, не лучше ли всё это упростить ?
предлагаю тебе сделать какойнибудь ini файл помещающийся в корневую папку эмулятора, чтоб эмулятор при запуске заглядывал сначала в него.
для начала пусть будут запоминаться там хотябы размер окна и пути к файлам отдельных машинок, дальше больше будешь добавлять.

Mick
27.08.2008, 13:53
На сайте http://vector06c.narod.ru открыт раздел "РЕКОМПИЛЯЦИЯ", в котором помимо программ для "Вектор-06Ц" будут выкладываться новинки рекомпиляции для "ПК-8000". На сегодняшний день пользователи и любители этого компьютера не имеют обширного пакета ПО, поэтому, чтобы восполнить этот пробел и подпитать их интерес к данному ПК, в соответсвующий раздел выложена новая игра, портированная с MSX под названием "Cannon Ball". Появлению этой игры на платформе "ПК-8000" мы обязаны Ивану Городецкому (ivagor)

Запустил в эмуляторе, что то со звуком неладное творит, какое то вибро идет. Особено когда game over и новая заставка, пока не нажмешь клавишу будет это вибро.

И кстати как после сброса машины снять с запуска проги имеющие идентификатор по адресу 4000(или около) "AB". Очень неудобно - нажимаешь на сброс, а прога опять запускается. Вчера с Питоном боролся, пока не выключил комп.

ivagor
27.08.2008, 13:57
Звук нормальный в версии b2m которая была доступна примерно с 21 августа по 25 августа. В ветке вектора эта тема затронута.

Mick
27.08.2008, 14:04
Кстати вопрос-просьба к b2m. А нельзя ли в эмуляторе, в режиме дебагера сделать еще поле состояния портов(хотя бы на запись). Очень полезная на мой взгляд фича. А так же(может она есть - не смотрел) горячее изменение содержимого регистров, типа можно подменить входные параметры, флаги и т.д.

Tim0xA
27.08.2008, 19:20
Кстати вопрос-просьба к b2m. А нельзя ли в эмуляторе, в режиме дебагера сделать еще поле состояния портов(хотя бы на запись). Очень полезная на мой взгляд фича. А так же(может она есть - не смотрел) горячее изменение содержимого регистров, типа можно подменить входные параметры, флаги и т.д.
Присоединяюсь... Присоединяюсь ко всему, что касается развития отладчика :)

ivagor
02.09.2008, 13:38
А ты рекомпилированную игрулю про шарики затачивал под Векторовские адреса, т.е. в эмуляторе они поддеоживаются.
Эмулятор b2m очень универсальный, и в принципе может поддержать практически любые адреса для AY простым изменением конфига, если нет конфликта (msxовские адреса AY, судя по всему конфликтуют с атрибутами для режима 1).

Добавлено через 8 часов 15 минут
b2m
Может ПК8000 заслужил свой каталог в эмуляторе?

Mick
10.09.2008, 16:04
Теперь будем обуждать здесь. :)

XobbiMan
12.09.2008, 16:23
Вот интересно бы прикрутить какой-нибудь другую ПЗУ в эмуляторе, то есть сэмулировать ситуацию, как будто мы вставили расширение в гнездо расширения. Вот только как это сконфигурировать на эмуляторе...
Надеюсь мне получилось выразить мыслю....

ivagor
12.09.2008, 16:31
Могу такой конфиг послать. Что ты собираешься использовать в качестве внешеного ROMа?
Куда cfg слать?

XobbiMan
12.09.2008, 16:36
Могу такой конфиг послать. Что ты собираешься использовать в качестве внешеного ROMа?

Скажем пока какую нить программу, в дальнейшем возможно какой язык, а может, когда Mick разберется в железной части (ну там даже флешку прикрутить в слот расширения), сможем и ДОС запихать (звучит многообещающе, но чем черт не шутит, вдруг будет а-ля ТР-ДОС, под названием ПК-ДОС)

Добавлено через 3 минуты

Куда cfg слать?

Либо сюда, либо на почту (clipper52<песик>yandex<дот>ру)

ivagor
05.08.2009, 12:54
Теперь эмуляция ПК8000 (вернее "фотона" с тетрисом) появилась и в MAME. На первый взгляд работает нормально (если кому сам MAME нравится, мне - нет).

---------- Post added at 14:54 ---------- Previous post was at 14:42 ----------

Добрые зарубежные программеры пометили дамп тетриса от "фотона" bad dump, т.к. "Dump was made using custom adaptor".

ZEman
05.08.2009, 13:25
нет уж, спасибо, я обойдусь эмулятором b2m.
терпеть немогу всякие Mess и MAME.

[bETA]mEN
05.08.2009, 17:41
Добрые зарубежные программеры пометили дамп тетриса от "фотона" bad dump, т.к. "Dump was made using custom adaptor".

нужно разделить оба дампа согласно адресов по микрухам и обозвать каждый файл согласно надписям на них.
это как раз чтобы "bad_dump"'ом не называли

(с) F1ReB4LL

Mick
05.08.2009, 19:37
Добрые зарубежные программеры пометили дамп тетриса от "фотона" bad dump, т.к. "Dump was made using custom adaptor".

И что там им не нравится в custom adaptor? Что то желающих мало было считывать дампы.

ivagor
05.08.2009, 20:04
Ссылка, откуда я взял вышеприведенное утвеждение
http://maws.mameworld.info/maws/set/phtetris
Полностью там так:
0.133u1: Miodrag Milanovic and Mariusz Wojcieszek added Tetris (Photon System) (unknown 19??). Dump was made using custom adaptor, hence it is marked as bad dump. The real machine uses 8x roms. Mariusz Wojcieszek fixed Player 2 input port and bad CRC/SHA1
Я уперся в предложение "Dump was made using custom adaptor, hence it is marked as bad dump" и для меня оно никак связано со следующим "The real machine uses 8x roms" (что, к слову, неправильно, т.к. ПЗУшек в "фотоне" с тетрисом было 7).
Вероятно [bETA]mEN написал истинную причину маркировки bad dumpом, это наверно где-то для developerов mama написано. Тем не менее, т.к. один из авторов (micko) есть здесь на форуме, он, при желании мог все неясные вопросы попытаться выяснить у Mickа.

---------- Post added at 22:00 ---------- Previous post was at 21:57 ----------

Еще не понятно, какие bad CRC/SHA1 фиксил Mariusz Wojcieszek, если те которые сейчас есть как раз соответствуют исправленному дампу, выложенному b2mом.

---------- Post added at 22:04 ---------- Previous post was at 22:00 ----------

И тактовая частота указана просто по инфе из wiki и может по аналогии с b2m, реальные тормоза никто эмулировать не хочет.

Mick
05.08.2009, 20:13
Еще не понятно, какие bad CRC/SHA1 фиксил Mariusz Wojcieszek, если те которые сейчас есть как раз соответствуют исправленному дампу, выложенному b2mом.

Они наверное успели загрузить мою ошибочную версию. Но потом была выложена нормальная. Одним словом читать форум надо полностью. И тогда не будет у них вопросов почему там ПЗУ не все и дамп ошибочный. :mad:

И еще странно что скопировали с форума таблицу, а смысл не поняли

/*Dump was made using custom adaptor, hence it is marked as bad dump.
16 The real machine has following roms:
17 0000...07FFh - ROM1 (D41)
18 0800...0FFFh - ROM2 (D42)
19 1000...17FFh - ROM3 (D43)
20 1800...1FFFh - not chip sealed (D44)
21 2000...27FFh - ROM5 (D45)
22 2800...2FFFh - ROM6 (D46)
23 3000...37FFh - ROM7 (D47)
24 3000...37FFh - ROM8 (D48)
*/

http://mamedev.org/source/src/mame/drivers/photon.c.html


Оригинал находится здесь
http://www.zx.pk.ru/showpost.php?p=179029&postcount=3 :)

Хоть кто нибудь поправил ошибку в последней строке :) эмуляторщики блин :)
3800...3FFF - ROM8 (D48)

ivagor
12.06.2018, 22:24
Если вдруг кому интересно, как запустить игрушку ROTORS в emu - нужно изменить тактовую как минимум на 2,5 МГц
main.CPUClock=2500KHz
можно и больше

ivagor
13.06.2018, 07:52
Про еще одну игрушку вчера не написал, т.к. собирался подумать над простым способом исправления, но пожалуй проще всего написать. VALLEY нормально работает только в конфиге без перехвата магнитофонных операций.

scaraby
13.06.2018, 21:16
Я тоже на это обращал внимание. Вероятно, в процессе выполнения программы VALLEY в порт 82h, бит D6, записываются какие-то значения, а эмулятор на эту активность реагирует и запускает процедуру чтения/записи на ленту.

ivagor
14.06.2018, 06:25
emu перехватывает обращение к магнитофону по адресам, указанным в секции cas : tape-recorder файла конфигурации. В конфиге ПК8000 предполагается, что это пзу, но в VALLEY по этим адресам располагается и выполняется часть своего кода. Для однозначности нужно детектировать по комбинации адреса и win1.page. Но ПК8000 только один из конфигов, в других обращение к доп. памяти организовано иначе, т.е. вопрос в том, как сделать такой детект более универсальным.
Можно, конечно, и игрушку хакнуть, но не очень хочется.

b2m
14.06.2018, 08:54
вопрос в том, как сделать такой детект более универсальным
Эмулятор может сравнивать начальные байты перехватываемой процедуры (параметр check). Если они не совпадают, перехвата не будет.

ivagor
14.06.2018, 10:06
Спасибо, это поможет не только VALLEY, но и ROTORS (можно не править тактовую). Правда у rotors (и еще у некоторых игрушек) есть еще проблемки отображения (пропадают спрайты), предположительно связанные с моментом прихода прерывания и быстродействием.

ivagor
14.06.2018, 18:12
Проделал высокоинтеллектуальную работу по вбиванию чеков. В нагрузку идут правки организации внешней памяти.

scaraby
14.06.2018, 23:46
Если я правильно понимаю, то emu - это эмулятор, который написан уважаемым b2m? Если так, то существует ли возможность поделиться исходным кодом? Меня интересует чисто практический интерес, для того, чтобы опыта полезного набраться.

b2m
15.06.2018, 10:38
emu - это эмулятор, который написан уважаемым b2m? Если так, то существует ли возможность поделиться исходным кодом?
Нет, исходники останутся закрытыми. По крайней мере пока.

Pyk
20.12.2018, 22:46
Добавил поддержку ПК8000 в свой эмулятор.

Никогда не сталкивался с этим компьютером, интересно было познакомиться с ним.
Основную информацию по архитектуре удалось найти здесь на форуме и на сайтах XobbiMan и Mick.
Осталось немного неясных моментов, не сказывающихся вроде бы на выполнении существующих программ, чуть позже сформулирую.

Основная тема обсуждения эмулятора:
https://zx-pk.ru/threads/27488-emu80-v-4.html

Анонс последней версии в той же теме:
https://zx-pk.ru/threads/27488-emu80-v-4.html?p=991900&viewfull=1#post991900

Сборка последней версии под Windows:
http://emu80.org/v4beta/Emu80qt_40313.zip

Исходники (GPL v.3):
https://github.com/vpyk/emu80v4


Особенности эмуляции ПК8000 и основные моменты при работе с эмулятором для тех, кто раньше с ним не сталкивался:


Общие:

- В эмуляторе используется средняя тактовая частота 1,8 МГц, вейты не реализованы :(

- Чтобы увидеть бордюр, нажмите Alt-V либо соответствующую кнопку на тулбаре (показать видимую область).
Alt-R переключает режим соблюдения соотношения сторон, Alt-S - сглаживание, кнопки также есть на тулбаре.
В режиме отображения бордюра изображение слегка смещено влево по сравлению с реалом для устранения обрезания картинки справа.

- Для ускорения работы эмулятора нажмите и держите клавишу Del

- Имеется большое количество настроек отображения (масштабирование, сглаживание, скан-линии и т.д) - поэкспериментируете в настройках.


Загрузка:

- Встроенный загрузчик умеет загружать бинарные файлы (обычно загружаемые через bload) и токенизированные basic-файлы (обычно загружаемые через cload).
Загружать через Alt-F3 (с автозапуском) или Alt-L (без автозапуска) либо через соответствующие кнопки на тулбаре или пункты меню.
(Сделана также попытка поддержки загрузки файлов с автозапуском, но не всегда корректно работает почему-то).
Работает также drag'n'drop в окно эмулятора, ну и bload и cload, конечно, тоже.

- Выбор образов дисков A/B через Alt-A и Alt-B.

- Wav-файлы загружаются только через команды basic или другой прикладной программы. Можно либо выбрать wav-файл при запросе вместо cas,
либо предварительно запустить его воспроизведение с помощью Alt-W. Для записи wav-файла выберите тип файла wav в диалоге сохранения.
Кроме wav поддерживаются также сжатые файлы csw (Compressed Square Wave), работа с ними аналогична wav. Также в настройках можно задать
ускорение эмуляции при воспроизведении wav-файла.


Клавиатура:

- По умолчанию стоит "Умная" раскладка клавиатуры. Просто набираете текст в соответстви с раскладкой PC, язык также переключается системными средствами.
При необходимости можно переключить раскладку на qwerty либо йцукен.

- Джойстик пока не поддерживается

- Назначение некоторых неочевидных клавиши:
ГРАФ - F10
АЛФ - Ins
ФИКС - F8
СТОП - F12
SEL - F11
Ъ/_ - F6
СТРН - PgUp

Предложения по переназначению на другие клавиши принимаются ;)

Pyk
21.12.2018, 01:14
Собственно, вот какие непонятные вопросы возникли по ходу реализации.
Они вроде бы не влияют на выполнение существующих программ, но хотелось бы их разобраться и учесть в следующих версиях.

1. Непонятно, отображаются ли как-то на память регистры цвета A0-BF либо они доступны только через порты?
В документации указано фиксированное смещение 400 этих регистров в буфере. Если их можно читать или писать через память, что происходит в случае, если они пересекаются с областями знакогенератора или текстового буфера?

2. Порты 92 и 93. В обсуждении пришли к выводу, что они инвертированы, мне же кажется более вероятным,
что в документации просто перепутали их местами. Так и сделал в эмуляторе, но неплохо бы проверить... Могу набросать тест при необходимости.

4. Что читается из не подключенного слота расширения? Слово состояния процессора?

5. Защелкивается ли сигнал запроса прерывания? Будет ли запрос, пришедший во время запрещенных прерываний, обработан, как только прерывания будут разрешены?
В каких существующих для ПК8000 программах вообще используются прерывания?

6. Вот здесь:
https://zx-pk.ru/threads/8376-pk8000-emulyatsiya-i-vse-chto-s-nej-svyazano.html?p=967709&viewfull=1#post967709
ivagor публиковал исправленный конфиг для эмулятора b2m, из которого следует, что при обращении к слотам расширения запись всегда происходит фактически в ОЗУ.
Либо я не понял идею, либо это не так: как хотя бы в таком случае будет происходить запись в порты контроллера НГМД?

ivagor
21.12.2018, 08:18
1. Непонятно, отображаются ли как-то на память регистры цвета A0-BF либо они доступны только через порты?
На память регистры цвета не отображаются. Штатное пзу в screen 1 раз в 16 прерываний переписывает эту область из памяти в порты.

В каких существующих для ПК8000 программах вообще используются прерывания?
Во многих, например в штатном пзу.

Вопрос про курсор вниз - на какой он клавише?
И вроде все же при старте должен быть английский регистр.

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


ivagor публиковал исправленный конфиг для эмулятора b2m, из которого следует, что при обращении к слотам расширения запись всегда происходит фактически в ОЗУ.
Насколько я помню, в идеале запись
1) Всегда идет во внутреннее озу
2) +может параллельно идти наружу, если там есть куда писать.
Конфиг emu такое вроде не позволил сделать, поэтому ни штатный конфиг, ни мой правленый не на 100% соответствует реалу.

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


Защелкивается ли сигнал запроса прерывания? Будет ли запрос, пришедший во время запрещенных прерываний, обработан, как только прерывания будут разрешены?
Насколько помню - да. По крайней мере в финальных тестах быстродействия ПК8000 этот момент я отрабатывал.

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


2. Порты 92 и 93. В обсуждении пришли к выводу, что они инвертированы, мне же кажется более вероятным,
что в документации просто перепутали их местами.
Тогда их перепутали как минимум
1) В описании портов
2) В описании оператора BASE
3) В реализации оператора BASE
Мне такие 3 перепутывания кажутся маловероятными

Pyk
21.12.2018, 08:29
Вопрос про курсор вниз - на какой он клавише?
На стрелке вниз. Что-то не так?


И вроде все же при старте должен быть английский регистр.
Какой в Windows по умолчанию установлен, такой и будет:

По умолчанию стоит "Умная" раскладка клавиатуры. Просто набираете текст в соответстви с раскладкой PC, язык также переключается системными средствами.


Насколько я помню, в идеале запись
1) Всегда идет во внутреннее озу
2) +может параллельно идти наружу, если там есть куда писать.
У меня это возможно в конфиге, могу сделать. Неплохо бы только уточнить на реале конкретно на портах КНГМД...

ivagor
21.12.2018, 08:47
На стрелке вниз. Что-то не так?
Похоже это проблема конкретно с warp&warp, в бейсике и в другой игрушке с курсором вниз все хорошо. В emu и в warp курсор вниз действует.

Pyk
21.12.2018, 10:18
Тогда их перепутали как минимум
1) В описании портов
2) В описании оператора BASE
3) В реализации оператора BASE
Тогда согласен. Забыл про BASE, не посмотрел реализацию...



Похоже это проблема конкретно с warp&warp, в бейсике и в другой игрушке с курсором вниз все хорошо.
Посмотрю, спасибо! Возможно это из-за отсутствия эмуляции джойстика, который в emu дублируется стрелками. Интересно, на реале стрелка вниз работает?

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

BASE посмотрел - все соответствует документации, поправлю.

В warp движение вниз назначено на "5" на доп. клавиатуре. В sdl-версии эмулятора это работает, в Qt почему-то нет, разберусь (вообще, в qt неудобно сделана работа с клавиатурой, нет надежного способа определить какая именно клавиша нажата). Думаю, для удобства нужно все-таки сделать джойстик...

ivagor
21.12.2018, 16:56
Попробовал sdlный вариант emu80 и там свой прикол. Не могу загрузить cas. Пишет FOUND с совпадающим именем и не грузит. В Qt нормально грузит те же файлы.

Pyk
21.12.2018, 18:42
ivagor, действительно :v2_dizzy_facepalm:
Посмотрю сегодня чуть позже, пока же можно по Alt-F3 грузить встроенным загрузчиком - работает на большинстве файлов.

Pyk
21.12.2018, 22:12
Багфикс-релиз (https://zx-pk.ru/threads/27488-emu80-v-4.html?p=991983&viewfull=1#post991983)
Добавил джойстик, исправил numpad, загрузку файлов в sdl-версии, порты 92 и 93, изменил работу прерываний.

ivagor
22.12.2018, 07:09
После правок стало хорошо, пора портить праздник :)
Проблема с игрой PASKHA. Там даже две проблемы - управление и отображение главгероя.
Управление поломалось в исправленной версии из-за джоя, если в конфиге отключить второй джойстик, то все нормализуется.
Отображение главгероя в этой и предыдущей версии не менялось. Как я понимаю (и в emu так) главгерой должен постоянно мигать, чтобы обеспечить 3 цвета в знакоместе, иначе никак. Но в emu80 странно - то показывает один цвет из двух спрайтовых, то другой, а то правильно моргает. Отсюда вопрос (исходник я не смотрел) - вывод видео в emu80 привязан к прерыванию, т.е. стабильно производится с одинаковым смещением относительно прерывания? Я пробовал свой бордюрный тестик, который Mick прогонял на реале, и не понял, что он выдает. Понятно, что без вейтов и "родной" тактовой как на реале не будет, но я просто не смог понять, где же момент прерывания относительно активной области изображения. В PAIRS и ROTORS пропадают спрайты в некоторых частях экрана, возможно тоже связано с моментом прихода прерывания. Но есть и плюс относительно emu - ROTORS заработал без правок конфига.

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

Кстати, насчет области отображения по Alt-V. То, что бордюр есть сверху и снизу - определенно так, счастливые обладатели реалов поделились фотками. Но вот бордюра слева нет, кажется DemonID7 приводил картинку, там чернота. Куда уж там бордюр, если ширина активной области изображения 51.2 мкс, в обычные тв даже вся активная область (256 точек) не влезает, показывает примерно 48 мкс (240 точек).

Pyk
22.12.2018, 15:32
ivagor, спасибо за тестирование.
К сожалению, до эмулятора и кода скорее всего доберусь только завтра, пока просто прокомментирую.

Джойстик реализован только первый, не совсем понял насчет отключения второго.
Насчет мигания героя посмотрю. Вывод видео привязан к прерыванию. Экран пока отрисовывается сразу весь, с бордюрами, целиком, после чего возникает прерывание. Можно сделать привязку к растру, синхронизироваться с каждой скан-линией или хотя бы с основными областями (верхний бордюр, изображение, (прерывание,) нижний бордюр), но не был уверен, нужно ли это при отсутствии вейтов.

Посмотрел картинки DemonID7 - действительно, бордюр слева черный, я упустил этот момент. По Alt-V показывается активная область в 52 мс (точнее 52,148), как это определено ТВ-стандартами. При пиксельклоке видео 13,5 МГц это пиксели со 140 по 843 относительно начала строчного синхроимпульса, итого 704 пикселя частоты 13,5 МГц, что соответствует 261 пикселю ПК8000. Неплохо бы посмотреть точные тайминги, но судя по кадрам DemonID7, активная часть изображения сдвинута вправо относительно этой области, пришлось немного покривить душой и сдвинуть ее чуть влево, чтобы отображалась полностью. Ну и на бордюр остается около 5 пикселей ПК8000. То, что он всегда черный, я упустил, поправлю.

Другое дело, что на многих современных ТВ присутствует overscan, и вместо области 704х576 фактически отображается примерно 660х540 - где-то чуть больше, где-то чуть меньше. На некоторых телевизорах (на моем, например), overscan отключается в настройках, на некоторых - нет. ТВ-тюнеры захватывают обычно полностью и даже чуть больше - до 720х576. Так что, если подключить ПК8000 к ТВ без оверскана, думаю, что небольшой бордюрчик слева будет, хотя и черный, а справа часть картинки скорее всего будет обрезана. Неплохо бы посмотреть на разных ТВ и особенно ТВ-тюнерах (к сожалению, не знаю, чем DemonID7 захватывал).

ivagor
22.12.2018, 15:40
Джойстик реализован только первый, не совсем понял насчет отключения второго.
Детально не разбирался, просто закомментил в конфиге строки относящиеся ко второму джойстику и герой стал нормально управляться.


Вывод видео привязан к прерыванию.
В какой момент в эмуляторе приходит прерывание относительно активной области? Мой бордюрный тестик в эмуляторе показывает ерунду, делать специальный тест под эмулятор нет желания, да это и не нужно.

Pyk
22.12.2018, 16:17
Сейчас прерывание приходит (или по крайней мере должно приходить ;) в конце кадра, условно - в момент кадрового синхроимпульса.

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

ivagor, а о каком тесте речь?
Я сильно подозреваю, что он и должен показывать ерунду, учитывая то, как оно у меня сейчас реализовано...

ZEman
22.12.2018, 16:46
извините, а где взять программки PASKHA, PAIRS и ROTORS упомянутые в этой теме ?
у меня такого нет.

ivagor
22.12.2018, 17:03
ivagor, а о каком тесте речь?
IntPos, приложил архив с картинкой. Картинка с реала сфоткана кажется Mickом. Смотреть там особо не на что, только на тонкую черную линию слева внизу, на границе между основным изображением и бордюром. В emu хотя положение не то, но картинка стоит как влитая. А что показывает emu80 - я не понимаю.
67419


где взять программки PASKHA, PAIRS и ROTORS упомянутые в этой теме ?
Здесь (https://zx-pk.ru/threads/8378-pk8000-soft-staryj-i-novyj.html?p=891630&viewfull=1#post891630)

Pyk
22.12.2018, 17:28
Я примерно догадываюсь, где я мог накосячить ;)
Доберусь до компа - проверю...

Pyk
23.12.2018, 21:14
Вот конфиг с исправленными прерываниями.
Я делал сначала временно просто периодические прерывания, а когда реализовал прерывания от видео, забыл убрать эти строчки:

PeriodicInt8080 periodicInt = &cpu, 7, 50
periodicInt.active = yes

В игре PASKHA советую попробовать включить режим смешивания полукадров в настройках экрана. Увы, подобный режим для 3-х кадров не реализован, 3color выглядит не так красиво.

Что же касается управления в этой игре, то с этим пока не разобрался до конца. Если из порта 8D считывается FF (это происходит, если закомментировать этот порт в конфиге), то игра работает нормально. Но это соответствует всем нажатым кнопкам второго джойстика, что вызывает проблемы уже в других играх, скажем WARP. Возможно, как-то влияет то, что одни и те же кнопки со стрелками соответствуют как клавишам клавиатуры, так и джойстику (в эмуляторе emu они разнесены, и игра управляется только кнопками джойстика). Надо будет внимательнее посмотреть, пока не было времени.

ivagor
24.12.2018, 09:23
Возможно, как-то влияет то, что одни и те же кнопки со стрелками соответствуют как клавишам клавиатуры, так и джойстику
О чем речь?

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


Возможно, как-то влияет то, что одни и те же кнопки со стрелками соответствуют как клавишам клавиатуры, так и джойстику
Кажется я понял, речь не о реале, а об emu80, в котором нажатия клавиш отображаются параллельно на джойстик. И конкретно для PASKHA такой подход не очень подходит, т.к. там опрос клавиатуры странноватый, а джойстика нормальный и клавиатура, скажем так, мешает джойстику. Может все же разделить кнопки джойстика и клавиатуры?

Pyk
24.12.2018, 10:21
Да, я это имел в виду. Наверное надо будет действительно разнести, может быть в виде опции.
Не разбирался, в чем там странность при опросе клавиатуры? Просто в emu эта игра с клавиатуры также не управляется, работают только кнопки джойстика. Как на реале - не знаю...

ivagor
24.12.2018, 16:08
в чем там странность при опросе клавиатуры? Просто в emu эта игра с клавиатуры также не управляется, работают только кнопки джойстика.
Посмотрел, оказалось совпадение двух вещей:
1) Беру назад слова про странность опроса клавиатуры, там просто некорректное комбинирование результатов опроса джойстика и клавиатуры. Т.е. если по отдельности, то правильно, а если вместе - нет.
2) И в emu, как оказалось, часть клавиш клавиатуры отображается параллельно еще и в джойстик 8D.
Нужно всего лишь поправить эмуляторы, разделив джойстики и клавиатуру. В emu можно откорректировать pk8000.kbd. В emu80, как я понимаю, надо править исходник.

Pyk
24.12.2018, 20:17
Да, пока только в исходнике.
Добавил себе в to-do list. Подумаю, как лучше сделать.

Arix
13.08.2019, 21:25
Почему эмулятор EMU не принимает файлы CAS? Пишет Unknow file format. Даже в диалоге открытия, когда выбираешь в типах файлов "Tape files", там нет cas. Но ведь касы для эмулятора и предназначены. Что за бред? Я же ещё недавно как-то открывал их в эмуляторе. Помню, у меня был другой емулятор - b2m. Может, в нём работало? Но я что-то не могу его у себя найти. Хотя точно помню, что он был, и я его не удалял.

b2m
14.08.2019, 00:23
Но ведь касы для эмулятора и предназначены.
В моём эмуляторе нужно сначала в бейсике ввести cload"", только тогда можно загрузить .cas файл.

Arix
14.08.2019, 17:00
Точно! Вводишь cload"", и открывается диалог открытия файла. Забыл уже. И опять возникла заминка: ввожу cload, выбираю файл CAS, а окно выбора файла тут же выскакивает снова. И никак его не угомонишь. Оказалось, что файл типа BLOAD. На хромой кобыле не подъедешь! :)
В2М и ЕМU - это одно и то же, поэтому я и не мог его найти.

DDp
25.08.2019, 23:56
На наших (двух) эмуляторах эта программка выводит совсем другую надпись :v2_wink2:

69875
при SCREEN1 запись в порты цвета A0...BF возможна только при активном сигнале "гашение" - порт 86h бит 4 равен 0

ivagor
26.08.2019, 06:25
Экспериментально этот момент уже выявлялся (https://zx-pk.ru/threads/8378-pk8000-soft-staryj-i-novyj.html?p=995132&viewfull=1#post995132), спасибо за подтверждение!

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

На всякий случай уточню, что судя по "экспериментам" для успешной записи в РУ2 не обязательно принудительно записывать в порт признак гашения, вместо этого можно дождаться "естественного" гашения и в это время прописать в РУ2 нужные значения. Было бы здорово в эмуляторах поддержать и эту фичу, но тогда надо точно выявить области "естественного" гашения.

DDp
26.08.2019, 06:43
На всякий случай уточню, что судя по "экспериментам" для успешной записи в РУ2 не обязательно принудительно записывать в порт признак гашения, вместо этого можно дождаться "естественного" гашения и в это время прописать в РУ2 нужные значения. Было бы здорово в эмуляторах поддержать и эту фичу, но тогда надо точно выявить области "естественного" гашения.
На счёт "естественного" гашения сильно сомневаюсь. Одно из условий для активного сигнала записи в РУ2 - это 0 с порта 86h (на схеме элемент D13.3). :v2_dizzy_botan:
т.е. только при условии 1) "гашение", 2) запись в порт(D14.3), 3) адрес порта(D27).

---

Ну и добавлю, что при сбросе компьютера цвета режима screen1 (содержимое РУ2) не сбрасываются.

ivagor
26.08.2019, 07:00
Тогда остается объяснить, почему часть цветов в предварительной версии бейсика ПК8002 все же менялась (https://zx-pk.ru/threads/8378-pk8000-soft-staryj-i-novyj.html?p=995085&viewfull=1#post995085) при использовании неправильной процедуры (без принудительного гашения).

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

А, пардон, там похоже меняется только цвет бордюра.

DDp
26.08.2019, 20:58
...эта программка выводит совсем другую надпись
Ещё одно "магическое сообщение". Объяснение в самом сообщении.

ivagor
26.08.2019, 21:38
С данным вопросом полегче, emu80 правильно отрабатывает.

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

Еще желательно уточнить насчет двух младших бит порта 86h - там как в схеме: бит 0 - STR, бит 1 - BUSY или как в описании: только бит 0 - состояние печати?

DemonId7
26.08.2019, 22:30
Добавлю по палитре. Если менять содержимое регистров в произвольное время, то на экране будет сильное мерцание. Менять их можно только во время прихода прерывания!
В первых версиях моего файлового менеджера это хорошо заметно при вызове окна справки. Затем добавил в функцию установки палитры пару строк кода:

ei
hlt

И мерцание исчезло. Рискну предположить, что эта особенность и легла в основу такого странного изменения палитры - через выделенный участок памяти.

Кстати, этот эффект хорошо проэмулирован в EMU80. Собственно на нем впервые и заметил. Сначала думал на эмулятор, но потом убедился, что и на реале такие же мерцания.

ivagor
27.08.2019, 06:38
такого странного изменения палитры - через выделенный участок памяти.
Ну все же можно запретить пзушный механизм переписывания и писать в РУ2 самостоятельно.

DemonId7
27.08.2019, 08:15
Так речь как раз о самостоятельном изменении регистров. Если менять палитру через видеопамять, то мерцания нет, поскольку запись в регистры происходит во время прерывания.

Pyk
27.08.2019, 10:03
DDp, спасибо за багрепорт. Постараюсь исправить, но пока проблемы со временем - вряд ли доберусь до эмулятора раньше след. недели :(

ivagor
27.08.2019, 15:33
Менять их можно только во время прихода прерывания!
Это если для практически полезных целей. А для извращений можно попробовать и при рисовании активной области. Например можно попробовать изобразить мультиколорный screen 1, когда каждая строка будет своим цветом. Примерно так:
1. Заполняем весь экран одним кодом символа (или двумя).
2. Под мультиколор выделяем только часть ширины экрана, примерно половину.
3. В оставшейся части строки: включаем гашение (эта часть экрана, как я понимаю, будет черной), меняем один-два (больше не успеем) цвета, выключаем гашение (лучше в невидимой области).
В статичном виде это не особо интересно, но можно сделать скролл цветов вверх или вниз, или не просто скролл а более хитрое изменение (переливания, "взрывы" и т.п.).

DemonId7
27.08.2019, 16:19
.
3. В оставшейся части строки: включаем гашение (эта часть экрана, как я понимаю, будет черной)

Не, не будет. Вроде обсуждали уже, что "гашение" на суре неправильное и не приводит к реальному гашению экрана.
Можем проверить, мой комп - твой код :)

ivagor
27.08.2019, 19:02
Попробовал изобразить нечто отдаленно похожее на свое описание.
bload"BLNK1",r
пробел - выход в бейсик
курсором вправо и влево можно подвигать область гашения/программирования

UPD: BLNK2
1. Исправил ошибку - зависание при долгой работе
2. Добавил отображение позиции сдвига в виде шестнадцатеричного числа (печатается два раза - вверху и внизу)
3. Когда добавил п.2 стало видно, что сдвиг слишком быстрый - замедлил

DDp
27.08.2019, 20:37
UPD: BLNK2
https://yadi.sk/d/xvYZnNvpHNWAJQ


http://ipic.su/img/img7/fs/BLNK2.1566927704.png

ivagor
27.08.2019, 21:16
DDp, спасибо! Видео очень информативное, очень поможет, если Pyk соберется реализовть эту фичу.
Т.е. цвет гашения - белый? А черное - запись в РУ2.
Для совсем полного счастья сделал третий вариант. Он скорее не заменят второй, а дополняет. Там два символа на экране и меняются два цвета в строке. Т.е. вероятно на реале должно быть: цветной-out86-белый-outA0-узкий черный-белый-outA1-узкий черный-белый-out86-цветной. Перебираются все 256 возможных комбинаций цветов. За пределами этих 128 строк все черное, кроме белых цифр.

DDp
27.08.2019, 23:03
Для совсем полного счастья сделал третий вариант.
Я немного изменил... BLNK4 по той же ссылке (https://yadi.sk/d/xvYZnNvpHNWAJQ).
У меня слабо отличаются ЯРКИЙ/НЕЯРКИЙ (кстати, штатная коробочка "ТВ адаптер").

Получается:
цветной-out86-белый-outA0-узкий PAPER-белый-outA1-узкий PAPER-белый-out86-цветной.
Т.е. цвет гашения - белый. А PAPER - запись в РУ2.
(Paper - цвет сброшенных/нулевых пикселей)



С накрученной контрастностью:
http://ipic.su/img/img7/fs/BLNK4_upcontrast2.1566935435.png

ivagor
28.08.2019, 06:56
DDp, спасибо!
Из-за подозрения про "черный" участок и paper как раз сделал 3 с изменением цвета фона.
Но я все же забыл сделать проверку - а как на бордюре? Вспомнил только когда уже комп выключил.

Еще вопрос - что за вертикальная белая полоса у левых нулей (в upcontrast2 она почти не видна)?

ivagor
28.08.2019, 19:24
Доработал BLNK2 до BLNK22
1. Теперь можно перемещать область гашения не только по горизонтали, но и по вертикали (курсор вверх и вниз). Внизу слева - позиция по горизонтали, справа - по вертикали
2. Пробегаются все комбинации цветов от 0 до 255

DDp
28.08.2019, 20:42
Доработал BLNK2 до BLNK22
BLNK22_avi.7z (https://yadi.sk/d/xvYZnNvpHNWAJQ)

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


что за вертикальная белая полоса у левых нулей (в upcontrast2 она почти не видна)?
Так, смещение между пикселями и атрибутами.
А если где-то менее заметно - это я крутил регуляторы у тв-тюнера и установил "резкость" максимально в минус.

Pyk
29.08.2019, 00:07
Видео очень информативное, очень поможет, если Pyk соберется реализовть эту фичу.
Попробую сделать, когда немного освобожусь, но 100% точность обещать не буду - экран ПК8000 у меня реализован далеко не так пунктуально, как экран Вектора...

scaraby
01.09.2019, 22:12
У меня слабо отличаются ЯРКИЙ/НЕЯРКИЙ (кстати, штатная коробочка "ТВ адаптер").

Внутри этой коробочки есть резистор R1, расположенный на стойках. В схеме адаптера он отмечен звёздочкой и имеет номинал 4.7 кОм. Его можно заменить на 1 кОм и градация между светлым и тёмным оттенком цвета станет такой, как надо.

Pyk
12.09.2019, 00:15
Добрался, наконец, до эмулятора, постарался поправить гашение, можно потестировать:
http://emu80.org/v4beta/Emu80qt_40341_test.7z
(Заменить exe в версии 4.0.340)

Гашение вроде бы сделал, но другие проблемы с отображением остались, например хорошо заметное на последних тестах опережение палитры на одну скан-линию.
Может быть, со временем доведу до ума. Вообще, по-хорошему, надо бы переписать отрисовку экрана ПК8000: не рассчитывал я на подобные нюансы, когда начал ее делать. Но на на такой подвиг я пока не готов, обхожусь "костылями" ;)

ivagor
12.09.2019, 06:21
опережение палитры на одну скан-линию.
Еще вопрос по BLNK22 - с чем связано мигание при перемещении по горизонтали 0С-13 при вертикальной координате 28? Может это я в тесте недосчитал и 28 не надо было разрешать.

Pyk
12.09.2019, 11:19
ivagor, навскидку не скажу, попробую вечером посмотреть, с чем это может быть связано.
Неплохо бы, конечно, еще на реале проверить...

ivagor
12.09.2019, 12:27
Внутрь не смотрел, но есть простейшее предположение, что из-за дополнительного времени на обработку нажатия клавиш цикл вылезает за пределы допустимого интервала между прерываниями. В итоге один раз моргает, потом все стабилизируется. Т.е. это моя недоработка, надо было уменьшить допустимые границы изменения по вертикали.

demetrius2003
22.09.2021, 10:46
Друзья! что там на эмуляторном фронте? Какие сейчас эмули ПК8000 поддерживают? Хотелось бы пощупать.

ivagor
30.05.2022, 17:15
Emu80 обогнал Emu по удобству запуска программ и по точности эмуляции ПК8000 (но отладчик Emu все еще круче). С точностью может (но вряд ли захочет) что-то сделать только b2m, а вот удобство могут подтянуть и пользователи вроде меня.
EasyLoad позволяет загружать casы ПК8000 через меню File>Open или просто дропать их в окно эмулятора. Кодовые при этом автостартуют, а для старта бейсиковских надо будет еще нажать F5. При желании можно грузить и через bload/cload/load без указания имени (достаточно парных пустых кавычек).