PDA

Просмотр полной версии : Пожелания и планы по эмулятору Башкирия-2М



Страницы : 1 [2] 3 4

b2m
04.11.2008, 13:57
Выложил первый релиз Агата, в принципе работает, но я совсем не знаю этот ПК, возможно есть глюки.
Насчёт дисководов: на Агате было два типа дисководов 140К и 800К, если образ диска маленький, то считается, что подключен дисковод 140К, а если файл больше 360К, то считается, что подключен дисковод 800К. Соответственно для загрузки с диска из монитора нужно дать команду:
C300G для 140К
C500G для 800К
БИОС стартует автоматом загрузку с 800К диска.

ZEman
04.11.2008, 17:27
ничего не получается запустить.
при открывании диска и набора C300G эмулятор просто повисает, или очень долго грузит диск.
кстати я не понял, надо сначала вставить диск а потом нажать сброс ?
просто в досовом эмуляторе сначала надо было нажать клавишу F2, потом появлялась звёздочка и можно было набирать команду.

каким образом можно загрузить файлы лежащие в конфиге эмулятора и имеющие расширение *.B ?

выкладываю досовый эмулятор агата 7, в архив также входят все образы дисков для агата 7 и инструкция по запуску эмулятора.
http://rapidshare.com/files/160579859/em7.rar.html

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

Добавлено через 43 минуты
с *.В файлами разобрался, эти 4 игрушки отлично работают.
хотя игрушка rocker помоему работает немного быстрей чем положено, и таймер в верхней части экрана стоит.

а чем извлекались файлы с дисков ?

b2m
04.11.2008, 18:26
при открывании диска и набора C300G эмулятор просто повисает, или очень долго грузит диск.
Значит образ диска не подходит. Я тут поискал по интернету образы, есть файлы с расширением .dsk, но это посекторные копии, а у меня пока рассчитано на полную копию дорожек. Размеры таких файлов соответственно 232960 и 947520 байт. Надо делать поддержку .dsk файлов.


а чем извлекались файлы с дисков ?
Не знаю :) Были в одном из эмуляторов (который Олега Воронова) уже в виде файлов.

ZEman
04.11.2008, 18:30
Размеры таких файлов соответственно 232960 и 947520 байт.

именно такой размер и есть у образов дисков для агата 7, в другом виде диски к нему искать бесполезно, насколько мне известно других источников нет.

я написал автору досового эмулятора на емайл, надеюсь он придёт на этот сайт.

b2m
04.11.2008, 18:50
при открывании диска и набора C300G эмулятор просто повисает, или очень долго грузит диск.
Большинство дисков не системные, т.е. не содержат Бейсик, из которого и нужно запускать файлы с диска.
А ещё, вроде с прерываниями какой-то косяк, буду исследовать...

Добавлено через 3 минуты
Бейсик есть, например, на im20.img, вставляешь, выходишь в монитор, грузишься с него.

Добавлено через 5 минут
Запуск В-файлов - команда BRUN <имя>. Имя без кавычек и типа.

ZEman
04.11.2008, 19:10
диск 20 ?
а если из него извлечь нужные файлы и сделать загрузочный диск ?

Добавлено через 41 минуту
интересно, мне удалось обмануть машинку. :)
включаете эмулятор.
нажимаете сброс.
вставляете в первый дисковод диск im20.img
набираете команду C300G
после загрузки диска вставляете в первый дисковод любой другой диск.
набираете команду Catalog

загружайте файлы.
проверял на диске IM3.img

b2m
04.11.2008, 20:44
интересно, мне удалось обмануть машинку
Интересно, а я как бы другого и не предполагал :) Вполне логичная последовательность на реальной машине: загрузился, вставил нужный диск и работай.

ZEman
05.11.2008, 03:17
а нельзя чтобы в первый дисковод загрузочный диск а во второй любой другой ?
каким образом тогда набирать команды что просматривать файлы на втором диске ?

b2m
05.11.2008, 11:31
каким образом тогда набирать команды что просматривать файлы на втором диске ?
Это ты у агатовцев спроси :)

ZEman
05.11.2008, 20:24
b2m, я разговаривал с автором эмулятора, говорит что все диски загрузочные.
насчёт дисководов мне ответил так:
catalog,d2 - каталог диска на текущем контроллере, второй привод
catalog,s5 - каталог диска на контроллере слота 5
catalog,s3,d1 - каталог дискка на контроллер слота 3 привод 1
такие ключики можно указывать другим командам : brun.... run, ... и другим

если у тебя будут какието вопросы по агату свяжись с ним.
я тебе в личку напишу.

Tim0xA
07.11.2008, 14:43
b2m, про эмуляцию ПК "Эрик" (а-ля Специалист с Z80) не думал?
http://www.emuverse.ru/wiki/Эрик/Радиолюбитель_1994/Персональный_компьютер_«Эр ик»

b2m
07.11.2008, 17:15
У меня уже даже кое-какая документация по нему имеется. А вот дампа ПЗУ нету.

Добавлено через 3 минуты
Сравнил имеющийся у меня pdf с вышеприведённой ссылкой - буква в букву :)

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

насчёт дисководов мне ответил так
Надо же, работает :)

ZEman
07.11.2008, 17:39
b2m, тоесть работает, вот так меняя диски загружать ?
мне сказали что все диски загрузочные.
и с его слов "большинство игр идёт под т.н. dos33. именно она, совершенно идентичная на всех дисках, стоит в большинстве образов, т.е с точки зрения загрузки они одинаковы"

я тебе в личку писал, ты получал сообщение ?

b2m
07.11.2008, 17:42
Получил. Почему не грузится со всех дисков, пока не выяснил, это надо долго сидеть и трассировать выполнение в дебагере. А работает - catalog,s5,d2 и т.п.

b2m
07.11.2008, 17:54
Может лучше сначала b2m ПК6128ц доделает?
В смысле - процессор ВМ85? На чём тестировать-то? Или ты что-то другое имел ввиду?

ivagor
07.11.2008, 18:01
Может я поторопился с предыдущим постом. Переключение видеостраниц реализовано (проверить недолго, но некогда)? Растактовка для ВМ85 и две дополнительные команды (насчет недокументированных у 85 я не в курсе) реализованы?

Tim0xA
07.11.2008, 18:39
У меня уже даже кое-какая документация по нему имеется. А вот дампа ПЗУ нету.
Там сказано "Первоначально в компьютере использовано базовое программное обеспечение от ПК «Специалист»." и указано, какие правки внести в базовое ПО, чтобы получить прошивку для "Эрика". Правок не так и много - всего 13 байт изменить, да 32 дописать.

b2m
07.11.2008, 18:46
Переключение видеостраниц реализовано
Да.


Растактовка для ВМ85 и две дополнительные команды
Нет.

ZEman
07.11.2008, 18:52
Tim0xA, эрик пока делать бессмысленно.
нет дампов программ и пзу, компьютер самодельный и для него если мне не изменяет память не было сделано ни одной программы.
эрик не совместим ни с какими другими компьютерами.
я читал об этом толи в википедии, толи на полигоне призраков, точно уже не помню где.

Tim0xA
07.11.2008, 19:01
ZEman, ответом тебе будут цитаты из статьи: "Первоначально в компьютере использовано базовое программное обеспечение от ПК «Специалист»." и "...на базе ПК «Специалист» разработан новый программно совместимый с ним персональный компьютер с открытой архитектурой и контроллером НГМД".

Error404
17.11.2008, 21:16
Небольшое пожелание: не задавать CHS образа диска настройкой в конфиге, а автоматически вычислять из размера образа диска. Очень неудобно: у меня много образов HDD разного размера и при переключении каждый раз приходится вооружаться калькулятором. А если не поправить, то с диска читается странное.

b2m
17.11.2008, 21:49
автоматически вычислять из размера образа диска
Формулы не подскажешь? :) Как минимум нужно знать количество секторов на дорожке и количество головок, а количество дорожек, так и быть рассчитаю. Собственно, контроль количества дорожек можно и отключить, задав столько дорожек, сколько душе угодно.

Error404
17.11.2008, 22:35
Формулы не подскажешь? :) Как минимум нужно знать количество секторов на дорожке и количество головок, а количество дорожек, так и быть рассчитаю. Собственно, контроль количества дорожек можно и отключить, задав столько дорожек, сколько душе угодно.

16 головок, 63 сектора, дорожек <размер_файла/(512*головок*секторов)>+1

Где-то примерно так. Ну, можно еще количество секторов попробовать вычислять из кратности размеру файла.

b2m
17.11.2008, 22:37
16 головок, 63 сектора
Но ведь это не всегда так? У меня образ hdd с твоего сайта - 16 секторов.

Error404
18.11.2008, 00:38
Но ведь это не всегда так? У меня образ hdd с твоего сайта - 16 секторов.

У меня число "секторов" при открытии файла подбирается в цикле чтобы максимально точно попасть в размер файла - это число секторов и возвращется через Identify. Я не уверен, что это правильно (проверить не чем, все мои софтины используют только LBA-адресацию и соотвественно честный LBA-размер винта, равный реальному с кратностью в 512 байт). Для того файла, о котором идет речь, число секторов, видимо, вычисляется эмулятором как 16 (реально был взят первый попавшийся более-менее понравившийся по размеру файл с "С:\", подключен как образ и fdisk-oм разбит на партиции/отформатирован).
По крайней мере современные LBA-винты для "эмуляции" геометрии CHS используют формулу C*16*63

b2m
18.11.2008, 11:36
Если используется только LBA, то можно установить CHS по максимуму - это снимет все ограничения на позиционирование головки, а при адресации в режиме LBA параметры CHS не используются.

Добавлено через 3 минуты
Кстати, в таком случае, можно вообще убрать эту строку с геометрией, по умолчанию у меня используется 1024C255H63S, что соответвует файлу более 8Гб. По-моему достаточно :)

Добавлено через 7 минут
А геометрию я добавил не для Ориона, там и без неё всё работало. А вот на Векторе используется CHS адресация.

Error404
09.12.2008, 17:32
Если используется только LBA, то можно установить CHS по максимуму - это снимет все ограничения на позиционирование головки, а при адресации в режиме LBA параметры CHS не используются.

Добавлено через 3 минуты
Кстати, в таком случае, можно вообще убрать эту строку с геометрией, по умолчанию у меня используется 1024C255H63S, что соответвует файлу более 8Гб. По-моему достаточно :)


Можешь помочь? Нужно слепить конфиг для Ориона: чтобы был CPU ВМ80, IDE по схеме на ВВ55 на порту 0F600h, ROM-DISK (обычный авторский - с Ordos) на порту 0F500h, клавиатура PK86.

Хочу попробовать поизвращаться - попрограммировать для ВМ80. :)

b2m
09.12.2008, 18:40
Возьми за основу стандартный Orion-128.cfg, добавь в конце

app2 : K580ww55 {
}

hdd : cf-ide {
drive[0].image="Orion\dos-hdd.ohi"
addr=app2.portA[0-2]
cs0=app2.portA[3]
cs1=app2.portA[4]
iowr=app2.portA[5]
iord=app2.portA[6]
msb=app2.portB
lsb=app2.portC
}

А после строчек

map[ ][F500-F5FF]=app1.data
добавь

map[ ][F600-F6FF]=app2.data

ivagor
29.12.2008, 18:54
После долгого перерыва воспользовался отладчиком b2m, возник вопрос:

Исправил ошибки в отладчике.
Какие ошибки имелись в виду? Две довольно неприятные (для меня в конфиге вектора c z80, c кр580 раньше тоже было, сейчас не проверял) - 1) "чудеса" с отображением мнемоник команд при включенном обращении стеком к КД и выполнении команды pop, 2) "залипание навечно" клавиши, если обработка ее нажатия протрассирована под отладчиком (формулировка может не на 100% верная но близко к тому).

b2m
30.12.2008, 00:27
Насчёт "залипания навечно" я почти на 100% уверен - не может быть такого. Нажатие клавиши не может быть обработано при трассировке, т.к. сообщения о нажатии/отпускании обрабатываются отладчиком, а не эмулятором. Другое дело, когда клавишу мы нажали при нормальном выполнении, а потом сработала точка останова - тогда отпускание обработается отладчиком, и клавиша останется нажатой. В таком случае нужно лишь нажать и отпустить эту клавишу ещё раз при нормальном исполнении.

А про чудеса: в конфигурации с кр580 точно быть не должно, а с z80 вроде я ещё не исправил.

ivagor
01.01.2009, 11:21
клавишу мы нажали при нормальном выполнении, а потом сработала точка останова - тогда отпускание обработается отладчиком, и клавиша останется нажатой. В таком случае нужно лишь нажать и отпустить эту клавишу ещё раз при нормальном исполнении.
Повторное нажатие сработало, но все же такое поведение нельзя назвать нормальным. Пример - нажал клавишу, попал в обработчик, F5, клавиша якобы еще нажата - снова попал в отладчик, и так пока не снимешь точку останова и не нажмешь еще раз ту самую клавишу. Просьба поправить этот момент.


про чудеса: в конфигурации с кр580 точно быть не должно
Сейчас не проверял, но вспомнил, что когда были разборки с каким-то intro SES, ты исправил, в отладчике в конфиге КР580 все было нормально.

svofski
05.02.2009, 15:44
b2m, как там насчет портирования на SDL и многоплатформенности?

b2m
05.02.2009, 16:36
Не созрел ещё :)

b2m
06.02.2009, 17:20
По поводу портирования на SDL и прочее: после пары экспериментов обнаружились, что всю мощь графической карты, которую использует непосредственно DirectX, через тонкую дырочку SDL использовать не удастся. Я имею ввиду возможность аппаратного масштабирования изображения. Без него сделать масштабирование окна эмулятора довольно затруднительно. Даже если и сделать это кратно целому числу, то увеличение генерируемого изображения всего в два раза по горизонтали приводит к жуткому съеданию процессорного времени. Так что, либо нормальное изменение размера окна, либо 1-к-1-му, но с использованием SDL.

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

Error404
11.02.2009, 13:55
Сейчас был на сайте http://bashkiria-2m.narod.ru/
Вопрос: самописные программы типа редактора, отладчика, эл.таблиц были для CP/M? Если да, то стандартными CP/M или лезли куда-то за пределы TPA, в графику? На Орионе пойдут? :) Было бы забавно...

b2m
11.02.2009, 14:20
Если ты имеешь ввиду те, что были сделаны для Башкирии-2м и которые есть на скриншотах, то вряд-ли они пойдут на Орионе, т.к. обычно вывод на экран и ввод с клавы мы делали не обращаясь к процедурам БИОСа, а тем более процедурам СР/М :)
Кроме того, мой отладчик, например, использовал аппаратную возможность переключаться между двумя экранами.

Doronetty
01.04.2009, 13:16
Хочу спросить автора, можно ли использовать наработки Эмулятора 3000 в плане реализации БК - там вроде она достаточно неплохо реализована (да и к тому же сделана приемлемая поддержка БК-0011М)? А то как я понял, поддержка БК зависла пока до лучших времён...

b2m
01.04.2009, 16:21
Об этом лучше спросить автора Эмулятора 3000 ;)

b2m
02.05.2009, 14:05
Добавил БК-0011М. Хотелось довести до ума, но как-то всё времени не хватает, решил выложить как есть. ANDOS работает, а Бейсик почему-то вылетает.

ZEman
02.05.2009, 15:48
b2m, это конечно хорошо, но ещё ведь и БК 0010 недоделан.
образы дисков для БК-0011М в виде IMG файлов, эмулятор такие файлы непонимает.

Doronetty
03.05.2009, 22:05
Ничего, обе БК-шки веселее доделывать будет! ;) Тем более что они связаны между собой родственными узами и доделка одной будет автоматически означать доделку другой. Автору респект!!!

b2m
04.05.2009, 20:09
образы дисков для БК-0011М в виде IMG файлов, эмулятор такие файлы непонимает.
Принципиального отличия файлов IMG и BKD нет. И то, и другое - посекторные копии диска. Убедится в этом можно переименовав файл в *.bkd (нужно только снять защиту записи с файла, а то у меня ошибка открытия получается, т.к. предполагалось сделать ещё и запись). В следующей версии сделаю маску файлов на оба типа.

Doronetty
06.05.2009, 18:00
Посмотрел БК-шки - как-то они быстровато бегают (во всех эмуляторах БК скорость и звуки бипера соответственно пониже, да и насколько я помню на реале тоже так). Клавиатура иногда залипает (это когда я в Десантник-1 играл). БК-11М не проверял, т.к. IMG не поддерживается (особо хотелось погонять демки с мультиколором, AY и COVOX) :( Ну и до кучи посмотрел Специалист - нет поддержки цвета (а в реале было и в эмуляторах тоже! - стоит тот же цветной вариант Клада запустить на том же Emu80). И управление ведёт себя странновато - клавиши курсора на основной клавиатуре не работают, а на цифровой клавиатуре работают, но не на всех играх (в Budi не работают, а в Budi 2 работают). Вот.

ZEman
06.05.2009, 19:52
Doronetty, если ты разбираешься в БК, выложи какойнибудь FAQ по БК 0011М.
а то непонятно как и что надо грузить, какими командами надо пользоваться.

b2m
06.05.2009, 20:43
Посмотрел БК-шки - как-то они быстровато бегают
Да, количество тактов на команду пока довольно приблизительное. Где взять растактовку команд пока не нарыл.


БК-11М не проверял, т.к. IMG не поддерживается (особо хотелось погонять демки с мультиколором, AY и COVOX)
AY и COVOX пока не подключен. Я пытался запустить несколько демок, пока результат не очень, большинство просто вылетают. Тяжело разбираться с незнакомым компьютером. Вот если бы кто потрассировал в дебагере и нашёл баги... :rolleyes:


до кучи посмотрел Специалист - нет поддержки цвета (а в реале было и в эмуляторах тоже!
Я думал, цветной Специалист это только тот, что МХ. Можно в конфиге добавить дешифрацию портов аналогично Специалист-МХ.


управление ведёт себя странновато - клавиши курсора на основной клавиатуре не работают, а на цифровой клавиатуре работают
Надо просто взять и исправить все layout.kbd продублировав клавиши курсора, как сделано для БК0010. Руки только не доходят :)

Doronetty
06.05.2009, 23:08
Doronetty, если ты разбираешься в БК, выложи какойнибудь FAQ по БК 0011М.
а то непонятно как и что надо грузить, какими командами надо пользоваться.

Ну не то чтобы совсем разбираюсь - я имел дело только с БК-0010-01, а вот 11М в глаза не видывал. А грузить - ничего сложного, весь вопрос в поддержке IMG образов. Там происходит автозагрузка проги типа Нортона - а в ней всё и так понятно;)

b2m Растактовку (да и про всякие навороты) резоннее всего спросить у главного специалиста по БК - Алексея Савельева, который сделал ИХМО лучший эмулятор БК под ДОС http://bk.pictures2.com/

ivagor
17.05.2009, 20:55
b2m, придумай пожалуйста альтернативу для твоей любимой клавиши <>

b2m
17.05.2009, 21:04
Когда делаешь эмуляцию нового компьютера, раскладку откладываешь "на потом", потому что чаще всего она не известна. А потом всё остаётся как есть :) Я надеялся, что на английской клаве есть какой-либо аналог этой клавиши, но похоже эта клавиша существует только на немецкой клаве :)

ivagor
30.06.2009, 11:31
Почитал тексты Сугоняко отсюда

Я, кстати, не так давно выкладывал ссылку на разобранный и отсортированный архив всей этой прелести: ftp://ftp2+emuverse.ru:gMGAFvXS6CK5@....ru/pub/orion/
из них следует, что для ориона-pro все же была сделана палитра на дополнительной платке. В эмуляторе это не реализовано? Если реализовано, то по каким портам?
Нашел 2 варианта (хотя сомневаюсь, что именно один из них использовался в PRO)
http://orion128.nikom.biz/data/pcx-doc.txt
http://orion128.nikom.biz/data/ega.txt

b2m
30.06.2009, 15:46
Нет, палитру я не делал. Покопавшись в исходниках нашёл вот это:


...
;MULTI CARD PALETTE
LD HL,PALTAB
LD BC,10E0H
OTIR
LD BC,10E1H
OTIR
LD BC,10E2H
OTIR
...
;PALETTE FOR MULTI CARD
PALTAB: DB 00H,14H,20H,30H,4CH,5FH,6CH,7FH
DB 80H,90H,0A0H,0B0H,0CCH,0DFH,0ECH,0FFH
;
DB 00H,14H,20H,30H,40H,50H,60H,70H
DB 8CH,9FH,0ACH,0BFH,0CCH,0DFH,0ECH,0FFH
;
DB 00H,14H,2CH,3FH,40H,50H,6CH,7FH
DB 80H,90H,0ACH,0BFH,0C0H,0D0H,0ECH,0FFH

Error404
30.06.2009, 19:14
Почитал тексты Сугоняко отсюда

из них следует, что для ориона-pro все же была сделана палитра на дополнительной платке. В эмуляторе это не реализовано? Если реализовано, то по каким портам?
Нашел 2 варианта (хотя сомневаюсь, что именно один из них использовался в PRO)
http://orion128.nikom.biz/data/pcx-doc.txt
http://orion128.nikom.biz/data/ega.txt

Эти доработки были только у Коровкина (автор из Ижевска). Внедрялись на журнальном Орионе-128 (расширенном до 256к) обязательно с ОЗУ 4х8 РУ5 (т.е. с 4 физическими плоскостями, для 2хРУ7 варианта у Коровкина не существовало, AFAIK). Это накладывало ограничение на разгон (не справлялись 155КП2, а 555/1533КП11 не поставишь - не тянут 32 корпуса РУ5), на ПК (хоть и разогнанного по схеме c Wait) оно работало тормознуто (реально - только статическая графика).

Из ПО для этого многоплоскостного цвета было: 1 просмотрщик + куча конвертированных с PC PCX-файлов. У меня это есть, если не потер. Схем нет.

fifan
07.07.2009, 16:29
Хорошо бы включить эмулляцию Специалиста_МХ, если таковой не имеется. Исходники можно взять с сайта http://http://avsh-soft.by.ru/. Правда он иногда не отвечает.:v2_confu:

b2m
07.07.2009, 18:49
Хорошо бы включить эмулляцию Специалиста_МХ, если таковой не имеется.
Имеется. Давно бы уже скачал, да посмотрел, что имеется, а что нет. :v2_tong2:

Protom
08.07.2009, 21:54
А не можно сделать "Memory block dump to file" и "Load memory block from file"? А то уже с *.rk устал :v2_mad:

"Load memory block from file" c возможностью указать начальный адресс загрузки блока.
"Memory block dump to file" c возможностью указать начальный и конечный адресс выгрузки блока.

Спасибо,
Protom

svofski
06.08.2009, 19:27
Если дебаггер открыт, открытие .rom файла через File/Open обрушивает эмулятор. Это немного огорчает, потому что трудно отловить что происходит сразу после загрузки.

XobbiMan
14.08.2009, 20:13
b2m,

А как надо настроить эмулятор, чтобы запустился ФОКАЛ на БК-0010-01 эмуляции?

Сам для себя и отвечаю - надо просто выбирать конфигурацию БК-0010

(просто я никогда с БК близко не сталкивался)

b2m
14.08.2009, 20:26
А зачем? Конфигурации БК-0010 и БК-0010-01 только тем и отличаются, что в первой Фокал, а во второй - Бейсик. В остальном это одна и таже конфигурация.

ivagor
16.08.2009, 11:28
b2m, порт FE в конфиге Орион-128 Z80 Card II на чтение сейчас работает неправильно

Сообщение от ivagor
Error404, вопрос - порт FE на чтение в Z80 Card II как работает? Из за его не совсем верной реализации в b2m galaxian зацикливается.
c порта FE всегда читается 0FFh

XobbiMan
16.08.2009, 21:47
b2m,

В эмуляторе БК-0010-01 выгрузил бейсик-программу в WAV.
Обратно загрузить не получается.
Как это делается?
(по методу как делал в ПК8000 - что-то загружает но не работает - виснет)

Также с реальной БК выгрузил прямо в WAV. Не получилось загрузить.

bk_PRIWET_bas.zip (340.4 Кб) - это с реального бк "PRIWET" записанный аудио редактором.
bk_TEST_bas.zip (3.2 Кб) - это с эмулятора "TEST"

Сам реальный БК обратно WAV созданный эмулятором не понял. Свой записанный аудио редактором загрузил.

Может это сообщение к БК перенести?

b2m
28.10.2009, 19:23
Новая версия эмулятора на сайте, добавлены новые возможности отладчика.

ivagor
28.10.2009, 19:51
Невероятно! Свершилось! Лучше поздно, чем никогда :)

Attach Listing - здорово, но желательно tabы менять на пробелы, а не на квадратики.

Tim0xA
28.10.2009, 19:58
Еще бы возможность модифицировать содержимое области памяти и портов

ivagor
28.10.2009, 20:02
Еще бы возможность модифицировать содержимое области памяти и портов
Память уже можно!

Tim0xA
28.10.2009, 20:06
Память уже можно!
"Load Block"? Вот если бы прямо в окне менять, как в шестнадцатеричном редакторе.

b2m
28.10.2009, 20:10
Действительно, квадратики :) Как-то не попадалось раньше...
Вобщем, закачал исправленный вариант.

---------- Post added at 22:10 ---------- Previous post was at 22:09 ----------

Господа, всё можно менять. Только, если из порта читается не то, что пишется - то тут уж не обессудьте.

ivagor
28.10.2009, 20:11
Вот если бы прямо в окне менять, как в шестнадцатеричном редакторе.
И так можно :)
b2m, при разборе attach listing ты игнорируешь метки, которые стоят на "пустых" строках, в которых нет собственно кода, но адрес то есть, может сделаешь, чтобы они тоже воспринимались?

b2m
28.10.2009, 20:14
А load/save block с портами тоже работает.

---------- Post added at 22:13 ---------- Previous post was at 22:11 ----------


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

---------- Post added at 22:14 ---------- Previous post was at 22:13 ----------


Еще бы возможность модифицировать содержимое области памяти и портов
Tab нажми! Или F1 :)

ivagor
28.10.2009, 20:19
С портами я промахнулся - пытался менять те порты, которых нет, поэтому думал, что порты нельзя редактировать.

---------- Post added at 22:19 ---------- Previous post was at 22:14 ----------


Вобщем, закачал исправленный вариант.
Так намного лучше!


Думал уже об этом, но пока сложно сделать, чтобы одному адресу несколько строк соответствовало.
Несколько строк/меток - это дело будущего, а если данному адресу соответствует одна метка, но она в отдельной от кода строке - вроде эту ситуацию несложно обработать.

b2m
28.10.2009, 20:23
если данному адресу соответствует одна метка, но она в отдельной от кода строке - вроде эту ситуацию несложно обработать.
Ну что-ж, будет чем заняться в выходные :)

Tim0xA
28.10.2009, 20:37
Ага, точно, можно как в шестнадцатеричном редакторе менять, я просто Tab не нажимал, пытался мышкой кликнуть по ячейке памяти, а надо было сначала туда Tab-ом доклацать. Тогда может стоит сделать переход в окно, если в нем кликнуть мышкой? Кликнул по ячейке и курсор уже там.

b2m
28.10.2009, 20:52
Тогда может стоит сделать переход в окно, если в нем кликнуть мышкой? Кликнул по ячейке и курсор уже там.
Да, неплохо бы, сделаю потом. В наше время люди без мышки вообще теряются, что в винде, что в линухе :)

svofski
29.10.2009, 12:39
b2m, а где прочитать про дополнительные возможности Отладчика?

b2m
29.10.2009, 14:06
svofski, просто нажми в отладчике F1 :)

Я обновил эмулятор, учтены ваши пожелания.

svofski
29.10.2009, 14:09
svofski, просто нажми в отладчике F1 :)
Удивил! Спасибо.

Panther
02.11.2009, 12:32
Я тут стал разбираться с эмуляцией атрибутов ВГ75 для Апогея и обнаружил, что у b2m они обрабатываются не совсем так, как на реале.

Во вложении фото и скриншот с эмулятора. Мои первичные выводы такие:

1. Вар. 1. Атрибут начинает работать со следующего символа, а не с себя. Вар. 2. Либо ячейка с атрибутом всегда черная.
2. После надписи стоит один пробел (код 20Н). В эмуляторе он почему-то черный, хотя на нем еще должен работать атрибут выворотки (90H), стоящий перед надписью.

Если справедлив 1.1., то после надписи получится два белых символа. Поэтому я склонен считать верным 1.2.

b2m
02.11.2009, 13:11
На самом деле, многое зависит от схемного решения. Схемы Апогея у меня нет, спасибо за картинку.

Panther
02.11.2009, 13:16
Схемы Апогея у меня нет

http://www.emuverse.ru/downloads/computers/Apogey/docs/Apogey_BK-01C_Schematics_Retouched.djvu

b2m
02.11.2009, 13:26
Теперь понятно. Обычно точки символа по сравнению с выводом атрибутов запаздывают на одно знакоместо, т.к. требуется время, чтобы выбрать байт из ПЗУ шрифта и записать его в сдвиговый регистр, а в Апогее они и для атрибутов регистр поставили, который задерживает их на одно знакоместо. Т.е. у Апогея атрибуты не были смещены влево, как у РК, Партнёра, Микроши.
С Партнёром тоже пока не всё ясно, т.к. в некоторых играх, рассчитанных на МЦПГ, наблюдается несоответствие "задуманного" цвета символа, и эмулируемого. Но не везде, это и смущает.

Doronetty
03.11.2009, 18:31
Пожелания таковы: сделать более "продвинутый" GUI, чтобы можно было регулировать опции Video, Sound, выбирать доп. устройства (джойстик, мышь), регулировать тайминги процессоров (т.к. многие игры идут слишком быстро).

P.S: Смотрю, "Специалист" так и не приобрёл цвета :( Для примера высылаю заведомо цветную игру Land (именно её цветной вариант), которая в эмуле идёт по-прежнему в чёрно-белых тонах. И кстате процентов на 30 быстрее идёт, чем должна ;)

b2m
03.11.2009, 21:07
P.S: Смотрю, "Специалист" так и не приобрёл цвета
Цветной вариант - Специалист-МХ

ivagor
03.11.2009, 21:10
Речь об оригинальном цветном варианте:
МК88/7, стр. 46-47
МК90/8, стр. 28 - расширение до 8 цветов
Эмулятор Пыхонина это поддерживает и в архивах игрушек для Специалиста на его сайте есть несколько цветных.

Doronetty
04.11.2009, 00:39
Цветной вариант - Специалист-МХ

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

b2m
04.11.2009, 10:57
У него и раскладка портов другая. Сделаю, когда-нибудь.

Tim0xA
04.11.2009, 15:18
b2m, было бы очень удобно, если в отладчике каким-либо цветом выделялись бы ячейки и номера портов, к которым было обращение во время выполнения программы. Например, изначально все чёрные на белом фоне. Было чтение - фон стал зеленый, запись - желтый, поменялось содержимое при записи - красный. Или можно менять цвет шрифта. Ну и т.п.

Удобны были бы прерывания: на чтение, на запись, на изменение содержимого ячейки памяти/порта.

b2m
04.11.2009, 15:35
Я подумаю :)

ivagor
07.02.2010, 20:38
b2m, ты уверен в нумерации экранных областей для ПК-6128Ц? Ты ее по схеме делал?

b2m
07.02.2010, 21:16
Не помню, может быть и не по схеме.

Error404
07.02.2010, 23:17
Я где-то читал в треде, что в отладчике эмулятора есть режим когда дизассемблер синхронизируется с исходным файлом. Интересно - по какому принципу отладчик определяет какой строке в исходнике (и в каком файле, особенно если их несколько по INCLUDE компилировалось и вызовы из одного в другой) соответствует дизассемблируемый дамп? "На больших машинах" это достигается только включением в бинарник при компиляции отладочной информации. А у нас - код где такой информации нет. :v2_conf2:

b2m
08.02.2010, 12:46
Синхронизируется не с исходным файлом, а с листингом ассемблера, т.е. где строка вида: NNN XXXX XX XX XX text
При этом выдаётся строка с адресом XXXX только если байты XX XX XX совпадают. И метки тоже вставляются между строк, если они на отдельной строке.

b2m
17.02.2010, 13:55
Что ни говорите, а Yamaha MSX - это вещь.
Для большинства посетителей этого форума знакомство с бескрайним миром игр началось со Спекки. А вот моё знакомство началось именно с Ямахи. И хотя это и не совсем отечественный компьютер, даже совсем не отечественный, но в память о тех славных временах я решил добавить в свой эмулятор MSX. Правда, более детальное знакомство с архитектурой и наличием огромного количества разных типов ромов (фактически разных внешних устройств) несколько охладило мой пыл, но я не собираюсь останавливаться на достигнутом и Ямаха в эмуляторе будет постепенно развиваться, может и не так быстро, как этого бы хотелось.

esl
24.02.2010, 16:59
Привет!
нашел багу в эмуляции Корвета

не играет музыка в игрушке Treasure (на первом диске treas.com)
deflektor

не работает 32хсимвольный текстовый режим ...
посмотри в apple.com (на 3м диске) и galaxian, anton
в apple.com и со звуком явно грабли, тормозит оно странно

в АБРИСе со второго диска не двигается курсор ...

p.s. эти штуки в моем эмуляторе работают (диски то из него :)

b2m
24.02.2010, 19:41
ОК, 32-х символьный текстовый режим я добавил, заодно добавил выбор шрифта.

А вот насчёт АБРИСа вопрос: вроде на Корвете мышь была, куда подключалась, и вообще как с ней работать можно было? Может он её случайно у меня в эмуляторе определил и пытается использовать? Вроде раньше курсор двигался, но когда баг появился, я к сожалению не заметил.

З.Ы. Музыка в treas теперь тоже есть. С тормозами разобрался.

esl
26.02.2010, 12:13
в treas не все впорядке с оботбражением спрайта героя,
у тебя он в некоторых частях экрана не виден (побегай немного по экрану)

а по поводу мышки


а по поводу мышей, там все просто - стандартная MS-Mouse
вроде кто-то умеет использовать MouseSystem. я с этим игрался но в релиз не вставлял.
и было еще какаято корветовская "паралельная" мышка, но я ее упоминание встречал только косвенно в спековсвих доках где-то

а сериальные мышки - стандартный ком порт и прерывание
не знаю нужно ли оно, но я реализовал

смотри в исходниках mouse.c

а поддержка есть в арисе и акварелле
причем у тебя абрис не работает а акварель работает

вот цитата из доки по абрису

" ПРИЛОЖЕНИЯ

Приложение А. Подключение манипулятора "мышь"
фирмы Microsoft.

"Мышь" фирмы "Microsoft" подключается к последовательному
порту компьютера. В таблице приведено соответствие выводов
этого разъема и разъема манипулятора. Нумерация выводов соот-
ветствует разъему РП15-9 (она отличается от американской, ука-
занной на разъеме манипулятора).

компьютер "мышь"
----------------------------------------------------
1 1
8 2+7 (выводы соединить)
3 3
4 4
----------------------------------------------------

Приложение Б. Управлением редактора от
клавиатуры.

Графический редактор ABRIS предусматривает управление от
клавиатуры. Это необходимо в случае отсутствия у пользователя
манипулятора "мышь", а также удобно для точной установки кур-
сора в определенную точку.
Для управления координатами курсора используется дополни-
тельное поле клавиатуры (группа клавишей с цифрами и стрелками
справа от основного поля). Нажатием '1', '2', '3', '4', '5',
'6', '7', '8', и '9' осуществляется перемещение курсора в од-
ном из восьми направлений на одну точку экрана. Те же клавиши
\\
в верхнем регистре (нажатые вместе с одной из клавишей
[SHIFT]) вызывают аналогичные смещения но на восемь позиций.
Клавиши дополнительного поля '0' и '.' являются полными
аналогами правой и левой кнопок "мыши" соответственно.

Error404
26.02.2010, 12:20
и было еще какаято корветовская "паралельная" мышка, но я ее упоминание встречал только косвенно в спековсвих доках где-то


У меня такая мышь до сих пор дома где-то валяется - планировал на Орионе попользовать, но руки так и не дошли.

esl
26.02.2010, 12:52
У меня такая мышь до сих пор дома где-то валяется - планировал на Орионе попользовать, но руки так и не дошли.

а фото можно :)
и есть ли детали программирования ?

b2m
26.02.2010, 13:06
в treas не все впорядке с оботбражением спрайта героя,
у тебя он в некоторых частях экрана не виден (побегай немного по экрану)
Я подозревал, что прерывание генерируется не тогда, когда луч выходит на экран, а в другой момент, но в какой - я не знаю. Придётся залезть в твои исходники :)

З.Ы. Нету у тебя такой информации, у тебя экран "фотографируется" и выплёвывается, а у меня формируется параллельно с выполнением. Поэтому спрайт успевает отобразиться в "стёртом" состоянии. Скорее всего прерывание формируется как везде, с началом кадрового СИ. Пока сделаю так.

esl
26.02.2010, 13:37
Я подозревал, что прерывание генерируется не тогда, когда луч выходит на экран, а в другой момент, но в какой - я не знаю. Придётся залезть в твои исходники :)

эээ, прерывание называтся VBL
в моем понимании это когда идет кадровый гасящий ...



З.Ы. Нету у тебя такой информации, у тебя экран "фотографируется" и выплёвывается, а у меня формируется параллельно с выполнением.

эт конечно более правильно, если вдруг займусь опять, тоже так сделаю

b2m
28.02.2010, 15:14
В ходе разбирательства с ABRIS-ом выяснил одну фичу, которая у меня пока не реализована. Оказывается сигнал gate второго канала таймера тактировался коротким импульсом логического нуля в момент начала КСИ. На режим делителя частоты это никак не влияет, а режим аппаратной задержки без этого не работает. Посмотрел в схему: действительно есть сигнал /SVBL и идёт он на второй канал таймера.

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

Правда ли, что были такие варианты Корвета?

ZEman
28.02.2010, 19:20
esl, а вы будете дальше обновлять свой эмулятор ?

esl
01.03.2010, 12:36
esl, а вы будете дальше обновлять свой эмулятор ?

Хотелось бы :)
по крайней мере его НАДО портануть по MAC :)
заодно и переписать по SDL
и дописать таймер (эт единственный серьезный баг в нем)

гораздо важнее это привести в порядок софт корветовский
хотя сейчас эти процессы будут взаимосвязаны (т.к. под мак нету эмулятора корвета а эт сейчас моя основная домашняя платформа).

хотя основную работу так сказать я сделал, теперь уже есть несколько эмуляторов корвета
и значит он не канет в лету :)

---------- Post added at 11:28 ---------- Previous post was at 11:25 ----------


В ходе разбирательства с ABRIS-ом выяснил одну фичу, которая у меня пока не реализована. Оказывается сигнал gate второго канала таймера тактировался коротким импульсом логического нуля в момент начала КСИ. На режим делителя частоты это никак не влияет, а режим аппаратной задержки без этого не работает. Посмотрел в схему: действительно есть сигнал /SVBL и идёт он на второй канал таймера.

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

Правда ли, что были такие варианты Корвета?

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

---------- Post added at 11:36 ---------- Previous post was at 11:28 ----------

Пожелание/бага :)
в About EMU
все еще EMU Version 1.01
Copyright (C) 2005-2008

и имхо было бы не плохо выкладывать Release Notes ...

CodeMaster
05.03.2010, 21:27
Я конечно все 35 страниц не читал, так что извиняйте если вопрос поднимался. А планируется добавить сюда Spectrum ориентированое железо. И вообще, расширение платформ в эмуляторе стандартизировано или это в ручном режиме? Просто интересно бы было сделать мегаплатформу для эмуляторов ;-) Просто я некоторое время увлекался эмулями, т.к. реальное железо не всегда под рукой, так вот многие проекты умирали на взлёте из-за потери интереса к ним автора (что на определённом этапе не удивительно). А ещё было бы круто портировать эту платформу на Dingux и впихнуть это всё в Dingoo! Ну как я размечтался :-) ктоньть принесите губозакаточную машинку ;-)

b2m
05.03.2010, 21:59
Никто не запрещает сделать свой "конфиг", и спектрумсовместимое имеет тут одно преимущество: если для разных 8-битных ПК приходится всё время делать свою версию вывода видео, то все спектрумсовместимые имеют одинаковое видео (как минимум). Я сейчас не говорю про всякие там мегаскрины, их пока всё равно нет. Но спектрумсовместимый комп с немного изменённой раскладкой портов или памяти и своим ПЗУ сделать несложно. Однако документации на конфиг-файлы у меня нет.

esl
09.03.2010, 12:21
Правда ли, что были такие варианты Корвета?
в общем схемы подтверждают мою память
во схема от оригинального корвета
16499

тут подается ~VBL

а на схеме с моего сайта (МИКС) там ~HBL

так что были два варианта ...

p.s. Альбом схем ... (http://zx.pk.ru/showthread.php?p=263279#post263279)

b2m
09.03.2010, 12:47
Однако, кардинальное отличие: тактовая у второго канала либо 50Гц, либо 15625Гц. Как таймер, наверное, редко использовался.

esl
09.03.2010, 12:52
Однако, кардинальное отличие: тактовая у второго канала либо 50Гц, либо 15625Гц. Как таймер, наверное, редко использовался.
зато можно точно узнать момент прохождения луча на нужной строке :)

надо будет залезть в контур и посмотреть что там запаяно физически....

и кстати цитата из techref



Канал 2
предназначен для генерации прерываний через фиксированные
промежутки времени. На вход С канала 2 поступает сигнал HBL с
периодом 65.6 мксек. Режим работы канала 2 задается по шине
данных в регистре режима, а коэффициент деления частоты - в
счетчике канала, адресуемых по линиям CSCT, А0, А1.


дома гляну что в бумажной (оригинальной) версии

b2m
25.03.2010, 15:29
Эмуляция MSX и MSX-2 уже вполне приличная, запускаются, к примеру, такие игры как Vampire Killer и Batman (если не забыть скачать msxromdb.xml и положить в каталог MSX).

проф
26.03.2010, 07:19
Чот йа не фкурю... (прошу прощения за мой о(а)лбанский) . Творение автора темы - это будет УНИВЕРСАЛЬНЫЙ эмулятор что ли ? Нескольких (многих) старых компов ? А каких ?

ZEman
26.03.2010, 07:48
b2m, у тебя же вроде эмулятор отечественных компов, накой тебе сдался MSX, всё равно выше Blue msx не прыгнешь.
лучше бы эмуляцию БК доделали.

b2m
26.03.2010, 16:19
УНИВЕРСАЛЬНЫЙ эмулятор что ли ? Нескольких (многих) старых компов ? А каких ?
Универсальным я назвал его уже давно :) На данный момент эмулируются: Башкирия-2М, Агат-7, Апогей, БК-0010, БК-0011м, Вектор-06ц, Вектор Старт-1200, Ириша, Корвет, Лик, Львов ПК-01, Микро-80, Микроша, Орион-128, Орион-Про, Партнёр, ПК-6128ц, ПК 8000 Сура/Веста/Хобби, ПК 8002 Эльф, Радио-86РК, Специалист, Специалист-МХ, Юниор, ЮТ-88, а также ZX-Spectrum 48K/128K с дисководом, а теперь ещё и MSX/MSX-2. Основная фича эмулятора в том, что почти вся архитектура компьютера, за исключением видео-вывода, задаётся в конфигурационном файле.

Из всего этого списка, реально я работал с Башкирия-2М,Партнёр и MSX-2 (был также небольшой опыт общения с БК-0010, а с Корветом я общался только в течении 3-4 часов пока длился практический тур школьной олимпиады по программированию в Новосибирске в 88-ом году, если мне не изменяет память ;) ). Так что желание включить эмуляцию MSX в свой эмулятор, думаю, объяснимо. А ZX-Spectrum был промежуточным этапом перед MSX, т.к. его видео-вывод реализовать труда не составило, а основная цель была - погонять исходники Z80, которые единственные в моём эмуляторе являются позаимствованными.

проф
26.03.2010, 18:43
УК-НЦ будет ? Или ДВК-3 ? В общем что нибудь под RT-11 ?

b2m
26.03.2010, 19:03
Может и будет, БК-шка ведь уже есть. Хотя особого энтузиазма в направлении DEC-совместимых компьютеров пока нет.

ReDmit
26.03.2010, 20:01
b2m, а было бы здорово.

Doronetty
27.03.2010, 00:22
Лучше ДВК (хотя бы 3М) - его ещё никто не эмулировал!!! Ну и БК эмуляцию оттточить назло всем буржуям ;)

ZEman
27.03.2010, 06:11
да эмулятор ДВК это было бы нечто...
эх мечты, мечты.

esl
08.04.2010, 13:08
Запустил на реале тест by Ivan Gorodetsky

вот результаты
17005 - реал
17006 - b2m

вот диск с тестом
17008
и исходник
17007

ну и в виде таблички (набирал руками) ...
17010

собственно там надо еще посчитать точно такты до начала теста самих комманд
но они ж постоянны для всех тестов (TestDataInit:)

b2m
08.04.2010, 14:29
esl, спасибо за результаты с реала. Я не анализировал схему, но судя по всему у Корвета в кадре не 312, а 306 строк. В последнем случае результаты в эмуляторе "почти совпадают", с точностью до пары-тройки команд. Где-то ivagor уже говорил про этот недостаток эмулятора.

---------- Post added at 15:29 ---------- Previous post was at 15:15 ----------

Выложил эмулятор с данным исправлением.

ivagor
08.04.2010, 15:49
А у меня из результатов eslа получилось 314 строк :confused: (если считать, что у Корвета в строке 160 тактов, или это не так?).

---------- Post added at 17:49 ---------- Previous post was at 17:22 ----------

Похоже b2m посчитал по 164 такта на строку.

b2m
08.04.2010, 17:10
Я не считал такты, я поделил значения с реала на свои и умножил на 312 строк (которые были в эмуляторе).

---------- Post added at 17:07 ---------- Previous post was at 16:52 ----------

Кстати, да, период строчных импульсов у меня 65.6 мс, что соответствует 164 тактам при частоте 2.5МГц. Переделал, когда с таймером разбирались. Это было предыдущее изменение в эмуляции Корвета :)

---------- Post added at 18:05 ---------- Previous post was at 17:07 ----------

Ради совпадения результатов теста с реалом укоротил кадр на 6 тактов :)
Новая версия на сайте.
Интересно, откуда берутся эти 6 тактов? Почему процессор в Корвете при возникновении прерывания простаивает 6 тактов? Например в ПК8002 аналогичная ситуация, но там только 4 такта...

---------- Post added at 18:10 ---------- Previous post was at 18:05 ----------

У меня, конечно, есть предположение: если выполнялась команда HLT, то процессор не может сразу после прерывания возобновить исполнение и считать команду RST или CALL, команда HLT должна завершить цикл, но это же не 6 тактов!

esl
08.04.2010, 17:45
[/COLOR]У меня, конечно, есть предположение: если выполнялась команда HLT, то процессор не может сразу после прерывания возобновить исполнение и считать команду RST или CALL, команда HLT должна завершить цикл, но это же не 6 тактов![/QUOTE]

ну после прерывания PIC подсовывает процу CALL, надо бы глянут сколько это занимает ...
или я не про то ?


кстати, еще нашел, не работает DEFLECTOR

запускаеш игру, а там в любом случае заканчивается энергия и смерть


и на сайте все еще старая версия ...

b2m
08.04.2010, 17:52
ну после прерывания PIC подсовывает процу CALL, надо бы глянут сколько это занимает ...
Нет, это учитывается: CALL - 17, RST - 11


кстати, еще нашел, не работает DEFLECTOR
запускаеш игру, а там в любом случае заканчивается энергия и смерть
А я думал, что я просто не успеваю сделать то, что надо. А как должно быть по-нормальному?


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

esl
08.04.2010, 18:03
Нет, это учитывается: CALL - 17, RST - 11


А я думал, что я просто не успеваю сделать то, что надо. А как должно быть по-нормальному?



в моем - работает

там курсором водиш
пробел+курсор - воворачивать зеркала

esl
08.04.2010, 23:18
кстате о растактовке корвета
из документации

частота кадровой похоже
49.8166746373346

20мгц/16=1.25мгц
1.25мгц/164=7.62кгц
7.62кгц/153=49.8166746373346

~hbl = 1(64T=51.2мкс)0(18T=14.1мкс)
~vbl = 0(25T)1(128T)

и еще цитата

"при обращении МП к УВВ формируется один такт ожидания"
УВВ это все бисы

и еще похоже (но не уверен) что при форимровании CALL от контроллера прерываний на каждый байт добавляем по такту ожидания ....
может это что-то объяснит ?

b2m
09.04.2010, 12:26
кстате о растактовке корвета
из документации

частота кадровой похоже
49.8166746373346

20мгц/16=1.25мгц
1.25мгц/164=7.62кгц
7.62кгц/153=49.8166746373346

~hbl = 1(64T=51.2мкс)0(18T=14.1мкс)
~vbl = 0(25T)1(128T)

Ну в принципе, и у меня почти также, только я считаю по-другому, исходя из тактовой частоты процессора:
2.5МГц / 164 / 306 = 49.8166...Гц

Насчёт hbl они где-то общитались: 51.2+14.1=65.3мкс, а если по тактам посчитать 164/2.5Мгц = 65.6мкс

А, понял, 18Т=14.4мкс :)

А насчёт vbl я вообще не понял, почему они считают в половину меньше, стандартная ТВ развёртка 625 чересстрочная, то есть в кадре 312,5 строк, с учётом Корветовской развёртки 306, а у них только 153...



и еще цитата

"при обращении МП к УВВ формируется один такт ожидания"
УВВ это все бисы

и еще похоже (но не уверен) что при форимровании CALL от контроллера прерываний на каждый байт добавляем по такту ожидания ....
может это что-то объяснит ?

Один такт ожидания при обращении к УВВ - это только +1 такт в тесте, т.к. там только одна команда обращения к PIC. Насчёт такта ожидания при формировании CALL я сомневаюсь.

А вот сколько тактов тратится на выход из режима HLT, мне неизвестно. На данный момент этот выход у меня мгновенный, и в этом, видимо, главная причина.

---------- Post added at 13:26 ---------- Previous post was at 13:13 ----------

Если порассуждать про команду HLT, то получится следующее.
Циклы МП могут быть 3,4 и 5 тактов. Первый цикл М1 - всегда 4 такта (я так думаю), по документации HLT выполняется за 7 тактов (минимум), т.е. это 4 такта цикла M1 и скорее всего 3 такта цикла ожидания прерывания. Если в начале цикла ожидания обнаруживается запрос на прерывание, то происходит выход из HLT за те-же 3 такта. Однако собственно запрос может возникнуть и на 1-2 такта раньше. Получается на выход из HLT потратится 4-5 тактов. Плюс один такт на обращение к УВВ описанный выше. Итого 5-6 тактов, что подтверждается результатами теста: я пробовал укорачивать размер кадра на 5 тактов, а не на 6 - результат не изменился.

esl
09.04.2010, 13:53
еще про корвет, нашел ответ Скурихина на вопрос по таймеру



=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
From: A.Skurikhin <sk@------->
To: Sergey Erokhin <esl@-----.--->
Date: Wednesday, May 21, 2003, 1:51:27 PM
Subject: PK8020, новая версия winbeta1
Files: <нет>
--====----====----====----====----====----====----====----====----====----===--
> какая точно частота подавалась на вход 2-го канала корвета ?

Сколько помню, есть две модификации Корвета. В исходной версии подвалось
50гц (VBL). Но очень быстро выяснилось, что для практических применений
гораздо лучше иметь на входе таймера строчную частоту(64мкс), а
веритикальный синхронизирующий импульс подавать на вход управления этого же
таймера. Такая схема позволяет настроить таймер в режим, когда по сигналу
вертикального синхроимпульса таймер сбрасывается, затем отсчитывает заданное
количество строк и генерит прерывание.
Используя эту технологию, можно обеспечить "гладкий" вывод на экран.

b2m
09.04.2010, 13:56
еще про корвет, нашел ответ Скурихина на вопрос по таймеру
Спасибо. Хотя это мы уже выяснили :)

esl
09.04.2010, 14:06
уточнение

~vbl = 0(25T1)1(128T1)
период Т1 = 164Т = 131.2 мксек

и цитата из Технического описания (http://www.emuverse.ru/wiki/%D0%9A%D0%BE%D1%80%D0%B2%D0%B5%D1%82/%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D 0%BA%D0%BE%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0 %BD%D0%B8%D0%B5)



Нам осталось разобраться с обработкой прерываний, т.е. с сигналом INTA. При формировании контроллером прерываний D8(12.4) сигнала INT процессор заканчивает выполнение команды и начинает выполнять трехбайтную команду "CALL", которую он принимает из контроллера прерываний, при условии, что прерывания разрешены командой "EI".
Как это делается? Попробуем разобраться без наглядной иллюстрации. В первом цикле процессор выполняет цикл М10, который отличается от М1 наличием единицы в разряде D0 шины данных. Кроме этого вводится такт ожидания, потому при обращении к контроллеру прерываний вырабатывается сигнал CSDEV. Положительным фронтом сигнала на тактовом входе С триггера D15 (3.25) единица в D0 устанавливает выход триггера D15 (5 ножка) в единицу. На рисунке 5 сигнал на тактовом входе D15 показан.
Изменить состояние D15 теперь можно двумя способами. Первый: с приходом следующего положительного перепада на тактовый вход сигнал на линии D0 должен низкий уровень. Но такая ситуация может наступить после выполнения полностью команды "CALL". Второй способ: подать на вход R (RESET) сигнал низкого уровня. Из рисунка 5 видно, что это возможно при выполнении цикла записи (М3 или М5).
Итак, триггер D15 находится в состоянии единица. Сигнал высокого уровня с выхода триггера поступает на дешифратор адресов, запрещая его работу, и на микросхему D18 (3.27) - И. Поэтому сигнал INTA будет инвертированным сигналом DBIN. Сигнал INTA выбирает контроллер прерываний и в цикле М10 в процессор вводится код команды CALL из контроллера.
Команда "CALL" выполняется за пять машинных циклов, из которых первые три связаны с вводом команды в процессор, а два последних с записью в стек текущего адреса прерванной команды. Первый цикл (М10), мы уже разобрали. Затем выполняется два раза подряд цикл М8, отличающийся от М2 только единицей в разряде D0 шины данных. В первом цикле М8 читается младший байт адреса, а во втором цикле М8 - старший байт адреса перехода на программу обработки прерываний. В конце цикла М8 будет вырабатываться сигнал INTA, который и обеспечивает чтение из контроллера.
В четвертом и пятом циклах будет выполняться цикл М5, обеспечивающий запись в стек старшего и младшего байта адреса прерванной программы. Отрицательный сигнал с выхода регистра D27 (3.26) сбросит триггер D15 в нуль. Поэтому в четвертом и пятом циклах команды CALL сигнал INTA формироваться не будет.



При обращении к УВВ низкий уровень сигнала CSDEV появляется на выходе D24 и процессор переходит в режим ожидания, устанавливая на выходе WI сигнал WAIT высокого уровня.
---------- Post added at 13:06 ---------- Previous post was at 13:05 ----------


Спасибо. Хотя это мы уже выяснили :)

во первых обещался, во вторых информация от авторов вполне интересна сама по себе :)

esl
10.04.2010, 00:29
Запустил тест на реале
sta/lda
0DFA - при записи в регистры БИС
0F0D - при записи в обычную память

добавил в TestDataInit еще один sta


mvi a,020h
sta 0FB28h
sta 0FB28h
ei

стало

0DF9 - при записи в регистры БИС
0F0С - при записи в обычную память

а для
nop

1x 30e7
2x 30e7
3x 30e3

соответсвенно 1,2,3 sta


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

ivagor
10.04.2010, 14:59
esl, интересно бы еще потестировать быстродействие записи в графическое и символьное ВидеоОЗУ и чтения оттуда (если в документации или еще где не написано, например, что доступ полностью прозрачный).

esl
10.04.2010, 16:30
esl, интересно бы еще потестировать быстродействие записи в графическое и символьное ВидеоОЗУ и чтения оттуда (если в документации или еще где не написано, например, что доступ полностью прозрачный).

запись/чтение в ACZU и область клавиатуры и LUT совпадает с обычной памятью
это я проверял

судя по описанию в VRAM не должно быть торможения
но проверить надо бы конечно, но эт не скоро
надо тест переписать и опять железку достать ....

кстати, прогнал сегодня на корвете 8080 CPU Exerciser (KR580VM80A)
с вполне ожидаемым OK :)
какой точно стоит проц - не знаю, он под радиатором ...

а в доке вот что



Рассмотрим теперь сигнал 1READY, который через разъем XS3 поступает на вход RA (готовность) процессора. Он формируется на выходе микросхемы D24 (ИЛИ). На вход D24 подаются два сигнала CSDEV и WAIT. CSDEV - это сигнал обращения к УВВ (при обращении он имеет низкий уровень). Когда обращения к УВВ нет, то на выходе 1READY сигнал высокого уровня и процессор, анализируя этот сигнал в такте Т2, не переходит в режим ожидания. При обращении к УВВ низкий уровень сигнала CSOEV появляется на выходе D24 и процессор переходит в режим ожидания, устанавливая на выходе WI сигнал WAIT высокого уровня. Сигнал WAITЕ формирует сигнал 1READY высокого уровня, поэтому, пропустив после такта Т2 один такт - такт ожидания, процессор продолжает работу с выполнения такта Т3. Таким образом при обращении к УВВ процессор автоматически вставляет один такт ожидания между тактами Т2 и Т3. Эта хитрость применена для надежного обращения к УВВ. На рисунке 5 такт ожидания не показан. Заметим только, что в случае появления такта ожидания сигнал DBIN автоматически расширяется до 800 нсек.


---------- Post added at 15:30 ---------- Previous post was at 15:26 ----------


esl, интересно бы еще потестировать быстродействие записи в графическое и символьное ВидеоОЗУ и чтения оттуда (если в документации или еще где не написано, например, что доступ полностью прозрачный).

кстати, могу выполнить любые ваши тесты :)



tasm -b -85 vst.asm
@copy vst.obj A.COM
@xkorvet d disk.kdi A.COM >nul
@xkorvet a disk.kdi A.COM >nul

эт батник, компилит ваш тест и сразу пишет на диск для эмулятора :)

ivagor
10.04.2010, 18:52
esl, если я правильно понимаю, "ширина" активной области изображения корвета 51,2 мкс, а большинство ТВ отображают максимум примерно 48 мкс. Старые ТВ и мониторы имели регулировки развертки, которыми (почти всегда) можно было сжать изображение. Была (есть) проблема с обрезанием краев изображения корвета? Как было на старых мониторах, есть ли опыт подключения к новым ТВ (у которых нужных регулировок, как правило, нет)?
Сам я сидел за реальным корветом буквально несколько минут, про края изображения ничего не помню.

esl
11.04.2010, 17:21
ivagor, те корветы с которыми я работал? были с ЧБ мониторами на основании телевизоров Юность 405, причем половина из них даже имела антены и ПТК, а вторая половина без этого добра,
у них все было ОК с картинкой
у нас еще был клас БК0010-01Ш, с цветными мониторами (и надписями про работу не более 30 минут в день :)
подключали их, там тоже было все ок
к контуру был такой квадратный цветой монитор (такой был к агатам)
там тоже было все ок ....

а сейчас я подключал через НедоPC Кодер (RGB->Composite,S-Video)! rev B (http://www.nedopc.com/PALCODER/palcoder.php) через S-Video
на экран не влазит (телевизор CRT 25" Panasonic 100HZ)

причем с правой стороны не влазит знакоместа 4
и левая часть первого символа тоже не влазит

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

ivagor
11.04.2010, 18:09
esl, спасибо за ответ!


может именно по названой вами причине
не возражаю против обращения на ты

Tim0xA
02.05.2010, 00:58
b2m, можно ли в режиме эмуляции MSX при загрузке из ROM разблокировать запись в область памяти картриджа 0x4000-0xBFFF ? Это нужно для тестирования рекомпилированных программ, позволит использовать самомодифицирующиеся макросы для замены команд Z80, в результате чего полученный код рекомпиляций будет более корректным, коротким и быстрым.

b2m
02.05.2010, 18:27
Вообще-то, запись в эту область означает смену страницы ROM-маппера. Хотя, ясно, что хеш-сумма рекомпилированной проги вряд-ли совпадёт с какой-либо из имеющихся в базе и будет использован маппер "по-умолчанию", и в этом случае можно предусмотреть опцию в конфиге.

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

Кстати, можно же грузить прямо в ОЗУ, чем не устраивает такой вариант?

---------- Post added at 19:27 ---------- Previous post was at 19:17 ----------

Вот, к примеру, такое дополнение emu.ext

msx : loader {
config="MSX"
loadaddr=4000
cmd[0].start=no
}

Тогда файлы с расширением *.msx будут грузиться в область 4000h, а bios их сразу будет запускать.

esl
10.05.2010, 02:09
Привет b2m:!

в теме про БК ты напискл
"вывод я сделал через ВВ51, он у меня в сокет перенаправляется)"

а реально ли сделать сеть в Корвете ?

т.е. в конфиге добавить номер рму (ну это совсем просто, биты на ВВ55)
и сделать чтоб две копии эмулятора могли друг с другом по сети обмениваться ...
типа в конфиге РМУ уазать номер порта и ip РМП ...

насколько это реализуемо ?

b2m
10.05.2010, 13:06
насколько это реализуемо ?
Дык в Башкирии-2М это уже сделано! Просто нужно в конфиге порт сервера указать, а у клиента ещё и адрес сервера. Клиента нужно запускать вторым, естесственно. Он соеденится с сервером и получит от него один байт - номер машины, который можно считать через netid. Например, дисковый вариант Башкирии - это сервер, центральная машина, номер которой всегда ноль, а варианты с rom-диском - клиенты.

---------- Post added at 14:06 ---------- Previous post was at 12:12 ----------

Кстати, поскольку номер машины у Корвета в порту инверсный, если будешь пробовать, измени строчку:

portA[4-7]=rom[30]
на

portA[C-F]=lan.netid
Это фича такая у меня есть, номера бит 8-F соответствуют инверсным 0-7 :)
А почему было rom[30] объясню - просто по этому адресу в ПЗУ байт 0FFh, что после инверсии соответствовало номеру ноль. Иначе, как я понял, биос даже не пытается загрузиться с диска.

esl
10.05.2010, 14:27
b2m, Пока не получилось
правлильно ли я делаю

в РМП


lan : K580ww51 {
port=15015
}


в РМУ


ppa1 : K580ww55 {
portA[1]=vid.vrtc
portA[3]=vid.attr

portA[C-F]=lan.netid

portB[0]=dsk.drive[0].on
portB[1]=dsk.drive[1].on
portB[2]=dsk.drive[2].on
portB[3]=dsk.drive[3].on
portB[4]=dsk.side
portC[0-1]=vid.page
portC[2]=font.frame[0].page
portC[3]=vid.widechar
portC[4-5]=vid.attrmask
portC[6-7]=mmgraph.page
}


lan : K580ww51 {
port=15015
server="127.0.0.1"
}


все ли правильно ?

и кстати, lan.netid выдается по мере коннекта 1,2,3,... ?

---------- Post added at 13:27 ---------- Previous post was at 13:25 ----------


А почему было rom[30] объясню - просто по этому адресу в ПЗУ байт 0FFh, что после инверсии соответствовало номеру ноль. Иначе, как я понял, биос даже не пытается загрузиться с диска.

а почему нельзя было просто написать в конфиге 0 ?

в теории в разных ПЗУ там может не всегда быть FF :)

b2m
10.05.2010, 14:59
все ли правильно ?
Вроде бы всё правильно. Серверу тоже можно lan.netid вместо rom[30] назначить.


и кстати, lan.netid выдается по мере коннекта 1,2,3,... ?
Да, выдаётся первый свободный номер.


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


А как работать с сетью?

---------- Post added at 15:59 ---------- Previous post was at 15:52 ----------

Блин, мы же про прерывание забыли :)

intctl : K580wn59 {
irq[3]=lan.irq
irq[4]=vid.irq

esl
10.05.2010, 16:17
мини баг
в корвете похоже размер экрана чуть чуть неправильно ставится
см скриншот
верхний эмулятор - по дефолту
нижний - в меню выбрано 1:1

17648 17649

17647



похоже экран чуть чуть больше и маштабируется ...

esl
10.05.2010, 16:45
работает очень старнно и очень частично

в аттаче 17656 два диска и конфиги

один cpm
там есть программа sender.com
она передает com файл на все рму и запускат (эт для игрушек)
ее особенность - она только маленький загрузчик передает через "стандартный" сетевой пртокол, но даже его без контроля чего бы то нибыло
при ее запуске на рму появляется надпись RECEIVE
и после передачи должно запустится, игры с диска можно передавать

в Б2М очень интересно
с первый РМУ не работатет
со всеми остальными запущенными запускается

(кстати было бы полезно для РМУ в заголовке писать их номер в скобках)

причем первый рму после передачи сендером виснет на ресет

а на микродосовском диске родная программа для обмена с РМУ
называется STS
она вообще виснит при запуске, похоже чегойто ждет в порту

она умеет разное передавать и принимать
например на диске етсь тест kt.bin если правилно помню его надо передать на рму с адреса толи 9000 толи 8000
ну и что-то бейсиковское там есть

при старте вроде писало "не отвечают следующие рму"

b2m
10.05.2010, 17:41
верхний эмулятор - по дефолту
нижний - в меню выбрано 1:1
То есть у тебя так: ты выбираешь 1:1, закрываешь программу, а когда снова запускаешь, размер окна немного другой? По идее, размер и позиция окна должны сохраняться в .ini файле и восстанавливаться после повторного запуска той-же конфигурации (т.е. размер и позиция сохраняется для каждой конфигурации). Может ты напутал чего, у тебя ведь сейчас целых три конфигурации Корвета? :) Если ты делал скриншоты через меню, то после 1:1 размер должен был бы быть 512х256. Между прочим, у меня аналогичная бяка при запуске эмулятора в VMware Player, ты случайно не в нём тестируешь?


с первый РМУ не работатет
со всеми остальными запущенными запускается
Вот кстати, когда у меня был ещё PII-400, две копии эмулятора грузили проц на 100%, и чтобы проверить работу РМУ Башкирии, я написал небольшую программу-сервер, которая могла засылать файл на квазидиск, т.е. фактически аналог РМП. Так вот, первая попытка пересылки тоже всегда была ошибочной, а вторая - успешно. Я пытался разобраться, но с наскоку не вышло, и я плюнул на это дело - со второго раза ведь грузилось :) К тому же программа РМП передавала нормально, но она сначала тестирует все РМУ, т.е. посылает как минимум 15 тестовых пакетов.

Спасибо за образы, будет чем вечерком заняться...

---------- Post added at 18:41 ---------- Previous post was at 18:22 ----------


называется STS
она вообще виснит при запуске, похоже чегойто ждет в порту
Посмотрел, чего висит: ждёт 85h из порта состояния, а там 5. Глянул в исходники ВВ51 - старший бит нигде не устанавливается :) Буду курить доки, когда этот старший бит надо устанавливать...
Кстати, первый РМУ висит на аналогичной процедуре. К тому-же после сброса буфер сокета не очищается, вот он и дёргается постоянно, но после достаточного количества сбросов уже не виснет :)

esl
10.05.2010, 17:41
То есть у тебя так: ты выбираешь 1:1, закрываешь программу, а когда снова запускаешь, размер окна немного другой? По идее, размер и позиция окна должны сохраняться в .ini файле и восстанавливаться после повторного запуска той-же конфигурации (т.е. размер и позиция сохраняется для каждой конфигурации). Может ты напутал чего, у тебя ведь сейчас целых три конфигурации Корвета? Если ты делал скриншоты через меню, то после 1:1 размер должен был бы быть 512х256. Между прочим, у меня аналогичная бяка при запуске эмулятора в VMware Player, ты случайно не в нём тестируешь?
посмотрю попозже, а то мне чтоб в реальной винде пробовать надо второй винт цеплять (отключаю любимый хакинтош :)
пускал на реальной 7ке
скриншоты делал ее встоенной скриншотелкой win7

Doronetty
12.05.2010, 12:09
b2m Огромное спасибо за доделку БК - наконец-то она заработала с нормальной скоростью!!!

b2m
12.05.2010, 14:34
Спасибо nzeemin-у, что напомнил о тестах и подтолкнул меня победить свою лень и заняться БК-шкой :)

Заодно нашёл баг в контроллере дисковода. Я знал, что он там есть, т.к. работало нестабильно и сильно зависело от скорости эмуляции. Тем не менее, всё это хоть как-то, но всё-же работало. А после исправления ошибок в процессоре я был просто вынужден заняться поиском этого бага, потому что контроллер дисковода вообще перестал работать.

Я рад, что не зря потратил время, и всё-таки есть благодарные пользователи моего эмулятора БК. А то у меня складывается впечатление, что сообщество БК-шников как-то игнорирует мой эмулятор.

Кстати, AO-DOS 2.1 пишет, что она работает под эмулятором Савельева :) С одной стороны, лестно, что она путает мой с одним из лучших на данный момент, с другой стороны жаль, что она всё-таки определяет, что это эмулятор...

svofski
12.05.2010, 14:43
А как у БК-эмуляторов принято делать загрузку .bin-файлов обычно? Просто загрузить в память по адресу из заголовка и сделать туда jmp? А как работают всякие стремные .bin-ы, которые затирают собой при загрузке стек и автозапускаются?

Doronetty
12.05.2010, 15:13
Спасибо nzeemin-у, что напомнил о тестах и подтолкнул меня победить свою лень и заняться БК-шкой :)

Заодно нашёл баг в контроллере дисковода. Я знал, что он там есть, т.к. работало нестабильно и сильно зависело от скорости эмуляции. Тем не менее, всё это хоть как-то, но всё-же работало. А после исправления ошибок в процессоре я был просто вынужден заняться поиском этого бага, потому что контроллер дисковода вообще перестал работать.

Я рад, что не зря потратил время, и всё-таки есть благодарные пользователи моего эмулятора БК. А то у меня складывается впечатление, что сообщество БК-шников как-то игнорирует мой эмулятор.

Кстати, AO-DOS 2.1 пишет, что она работает под эмулятором Савельева :) С одной стороны, лестно, что она путает мой с одним из лучших на данный момент, с другой стороны жаль, что она всё-таки определяет, что это эмулятор...

Всегда рад поддержать! :v2_clap2:
Кстати, на радостях поробовал запустить БК-шный Boulder Dash, а он не работает - вернее, загружается и стартует нормально, а вот при старте игры она тут же вылетает обратно в меню. На остальных эмуляторах нормально всё работает...
Остальные игры потестил (Десантник например) - всё шикарно бегает :)

P.S: А под реалом AO-DOS 2.1 интересно что пишет? У меня такие подозрения, что это тоже Савельев :v2_tong2:

b2m
12.05.2010, 21:25
А как у БК-эмуляторов принято делать загрузку .bin-файлов обычно? Просто загрузить в память по адресу из заголовка и сделать туда jmp? А как работают всякие стремные .bin-ы, которые затирают собой при загрузке стек и автозапускаются?
Не надо jmp. Автозапуск делается как обычно - методом загрузки в область стека, благо он непосредственно перед самой программой, которая располагается по адресу 01000. Запуск происходит при возврате из EMT.


Кстати, на радостях поробовал запустить БК-шный Boulder Dash, а он не работает
Мне вот тоже интересно, почему он не работает. Но с этим, я так думаю, я разберусь ещё не скоро.



esl, есть и для тебя новости: я сделал установленным по-умолчанию в 1 значение старшего бита статуса сети, новая версия на сайте. Теперь sender работает отлично, рассылает на все машины, а вот в sts иногда выскакивает ошибка "помехи" :) С чем связано - непонятно. Я уж и скорость передачи повысил, и отправку данных сделал без ожидания (по-умолчанию сокет некоторое время накапливает данные), но всё бестолку.

Jons
13.05.2010, 15:45
в эмуляторе есть поддержка винчестеров для Вектор 06ц, нельзя ли границы CHS как нибудь изменять? сечас у всех винтов количество секторов равно 63-м, а тут всего 18

b2m
13.05.2010, 16:09
Для Ориона это сделано примерно так:

hdd : cf-ide {
drive[0].image="Orion\dos-hdd.ohi"
drive[0].geometry=144C16H16S

В примере - 144 cyl 16 heads 16 sec.

---------- Post added at 17:09 ---------- Previous post was at 17:03 ----------

Да, кстати, если не указывать геометрию (т.е. удалить строчку), то по-умолчанию будет 1024 C 63 H 255 S.

svofski
13.05.2010, 16:14
Может быть уже все-таки завести вики какую-нибудь с описанием b2m'a? Я не представляю как кто-нибудь, кто только что нашел этот эмулятор, сможет найти как в нем чего-то настроить. Вся эта информация в форуме -- пустая трата сил, найти чего бы то ни было в ветке из 40 страниц невозможно.

b2m
13.05.2010, 16:15
Не сыпь мне соль на рану... :)

esl
13.05.2010, 16:23
я тоже добавлю соли ! :)
эмулятор сейчас содержит СТОЛЬКО уникальной информации что просто страшно ее потерять :)

svofski
13.05.2010, 16:24
Я не со зла. Начать можно с того, что отвечать на вопросы типа "как сделать X для компьютера Y" не в ветке форума, а на страничке вики "FAQ по Y".

Вики можно завести хоть на том же code.google.com -- никто не заставляет иметь в проекте сорцы ;) Сделать проект b2mdoc и писать все туда.

b2m
13.05.2010, 17:06
Начать можно с того, что отвечать на вопросы типа "как сделать X для компьютера Y" не в ветке форума, а на страничке вики "FAQ по Y".
Как показала практика, "сделать X для компьютера Y" не всегда возможно без доработки эмулятора. Но описание, конечно, нужно. Даже я, когда делаю новый комп, чаще всего лезу в исходники, чтобы посмотреть что и как сделать в конфиге, чтобы это работало :)

svofski
13.05.2010, 17:56
Ну так вот, доработал эмулятор и записал в вики ;)

ZEman
14.05.2010, 07:38
Кажется я понял, в чём дело: на БК вообще не проверялось, чётный ли адрес в регистре PC. Убрал проверку, и всё заработало как надо, и Bolder, и Disco Club.

ну наконецто, сильный прогресс :)
ждём новый билд emu.

b2m
14.05.2010, 10:31
ну наконецто, сильный прогресс :)
ждём новый билд emu.
Готово.

ZEman
14.05.2010, 12:20
да так намного лучше.
но некоторые игры по прежнему отказываются работать или идут с ошибками.

например:
DEMSL - она же Demon stalker после заставки вылетает.
klad - вместо уровней выдаётся набор символов.
PIPE - недействуют клавиши.
PLATE - немного поиграл и обнаружил интересный баг, в тех комнатах где стоят красные шары на ножках, почемуто часто вылазиет окно эмулятора с предложением сохранить файл как...

Rtype - сбрасывается в меню на первом уровне.
SLALOM - недействуют клавиши.

вообще совместимость у эмулятора увеличилась раза в два наверно.
и ещё мне непонятно почему для загрузки нужно использовать следующий набор ?
MON --- ENTER --- L --- ENTER
когда во всех других эмуляторах сделано
MON --- ENTER --- M --- ENTER

b2m
14.05.2010, 14:42
некоторые игры по прежнему отказываются работать или идут с ошибками
Спасибо за информацию об ошибках, посмотрю на досуге, в чём дело.

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


непонятно почему для загрузки нужно использовать следующий набор ?
MON --- ENTER --- L --- ENTER
когда во всех других эмуляторах сделано
MON --- ENTER --- M --- ENTER
Не нужно, а можно. К тому-же в БК-0011м команда М как-то странно работает, а вот L - как и положено, загружает файл с магнитофона.

---------- Post added at 15:42 ---------- Previous post was at 15:38 ----------

Извиняюсь за оффтоп.
Кстати, я запускал PIPE, вроде нормально работает...

ZEman
14.05.2010, 14:59
PIPE запускается, меню работает а вот в самой игре ничего не действует.


b2m, а можно попросить о маленьком улучшении для БК ?
ты можешь добавить кнопку Auto load как это сделано в эмуляторе грабовеца. http://www.cplusplus.boom.ru/

а то набором команд очень долго и муторно проверять все игры ;)

svofski
14.05.2010, 15:14
ZEman, почему нельзя продолжить эту дискуссию в ветке про эмулятор b2m?

ZEman
14.05.2010, 15:16
ну просто разговор начался тут, поэтому нехотелось перебегать с одной страницы на другую.
ну или пусть уважаемые модераторы перенесут вопрос в нужную тему.

Sandro
15.05.2010, 05:38
но некоторые игры по прежнему отказываются работать или идут с ошибками.

например:
DEMSL - она же Demon stalker после заставки вылетает.


Знакомо. У меня он так же в эмуляторе вылетал, до тех пор, пока я не исправил формирование флагов в байтовых командах. Проверьте их, особенно movb и cmpb. И заодно маскирование младшего байта.



klad - вместо уровней выдаётся набор символов.


Пользуетесь файлом klad1.bin длиной 15876 байт, начинается с байтов 0x00 0x02 0x20 0x20? Он испорчен. Повбывав бы автора ...

b2m
15.05.2010, 10:40
Не, у меня DEMSL вылетал по другой причине: нельзя было записывать счётчик таймера. При записи всё равно никаких действий не происходит, я думал что будет ошибка шины. Rtype тоже вылетал, но потому что не было регистров 177700-177705, я их добавил, но пока это просто кусочки памяти. Сейчас, если что-то и не работает, то только потому, что неправильно сэмулирована переферия, а насчёт ЦП я уверен на 99,9% (ну разве что не эмулируется переключение в режим HALT и связанные с ним команды, впрочем как и у тебя).

Глядя на программу MINI-KEG я уже не уверен, что у меня правильно эмулируется клавиатура. Странно как-то она работает с клавиатурой, нестандартно. Там получается, что бит в регистре статуса сбрасывается не только после чтения кода клавиши, а ещё когда-то. Вопрос - когда? А ещё встречал, что в цикле читается только код клавиши и сравнивается с определённым значением, и пока оно равно, крутится в этом цикле. Получается, что код клавиши тоже когда-то обнуляется. Опять вопрос.

Mick: Перенес из темы "Тест ВМ1"

b2m: Спасибо :)

ivagor
19.05.2010, 16:05
Решил в этой ветке написать (извините, если что не так)


По поводу последнего - не опечатка ли это? Был ли вообще К580ВМ86?
IMHO это 100% опечатка. Если посмотреть статью в Радио 6/87 на ту же тему, там говорится, что собирались установить в БК-0100 в качестве второго проца 580 или 1810 (соответственно 580ВМ86 - бумажный мутант из 580ВМ80 и 1810ВМ86). Вряд ли статью писал сам главный технолог "Экситона", наверно с ним побеседовал журналист, который слегка переврал некоторые детали.

ZEman
21.05.2010, 16:11
b2m, я чтото не понял, у тебя в списке изменений для последнего билда эмулятора написано - "- добавил поддержку открытия .bin файлов для БК-0010".
но ведь .bin файлы и раньше можно было открывать.
что ты имел в виду ?

b2m
21.05.2010, 17:12
Я имел ввиду, что теперь можно открывать их через File/Open, а также (что более удобно) перетаскивать их из проводника на окно эмулятора (или ярлык). Раньше это делалось исключительно перехватом EMT, а теперь эти файлы просто грузятся в память и после небольшой преамбулы (инициализация, очистка экрана, определения адреса запуска) сразу запускаются.

Единственный недостаток - теперь все файлы с расширением .bin считаются программами для БК-0010, хотя это очень распространённое расширение имени файла. Но раз уж так исторически сложилось, пусть так и будет. К тому-же никто ведь не против, что все файлы .rom считаются программами для Вектора-06ц. :)

ZEman
21.05.2010, 17:34
а, теперь понятно.
только вот...
может стоит указать автоматически открываемы файлы в кнопке open ?
или может лучше всётаки добавите кнопку autostart.
мне кажется так лучше было бы.

b2m
21.05.2010, 17:53
может стоит указать автоматически открываемы файлы в кнопке open ?
Забыл. Добавь .bin по аналогии в начале файла EMU.ext и будет тебе щастье.


или может лучше всётаки добавите кнопку autostart.
А чем такая кнопка будет отличаться от кнопки открытия файла на тулбаре?

ZEman
21.05.2010, 18:53
тем что это мы, те кто сидит тут постоянно на форуме, понимаем что к чему и для чего.
а остальные могут и не догадаться, не сразу поймёшь.

Doronetty
22.05.2010, 12:28
И настроек всяких прибавить бы :)
Например, звук: выбор частоты (до 96 КГц), возможность вкл/выкл AY, Covox, ит.д.

Хотя... это всё и подождать может - главное эмуляцию отшлифовать как следует - вон БК-шный диск Samara'97 DISCO CLUB+T.DREAMS на менюшке выдаёт паразитный громкий звук, в Insult Megademo в частях, где играет Covox явно накладывается сторонний звук (AY).

b2m
26.05.2010, 17:46
вон БК-шный диск Samara'97 DISCO CLUB+T.DREAMS на менюшке выдаёт паразитный громкий звук
И не только там. Везде, где есть поддержка мыши, которая у меня пока не эмулируется. Как я понимаю - была либо мышь, либо covox. Вместе это не работало. Вот тут и нужна дополнительная настройка.


в Insult Megademo в частях, где играет Covox явно накладывается сторонний звук (AY).
Знаю. Пока не смотрел, почему AY не выключается. Если в демке есть и AY звук, и covox, значит они как-то вместе сосуществовали. Вопрос - как? Переключатель?

BYTEMAN
26.05.2010, 19:56
b2m, такой к вам вопросик: можно ли добавить эмуляцию компьютеров Байт и Байт-01? Байт отличается от 48к спектрума наличием синтезатора ВИ53, изменённой прошивкой и дополнительными функциональными клавишами. Байт-01 - это монстр (48к спек, тыр-дос и поддержка CP/M), имеет на борту 128к. Могу обеспечить тех. документацией на оба компьютера. Краткая информация о компах есть на http://byte01.narod.ru

b2m
26.05.2010, 20:38
Скопировать конфиг спектрума 48к и заменить ПЗУ я уже пробовал, но явных отличий не заметил. Про ВИ53 информации не нашёл.

Doronetty
28.05.2010, 11:59
И не только там. Везде, где есть поддержка мыши, которая у меня пока не эмулируется. Как я понимаю - была либо мышь, либо covox. Вместе это не работало. Вот тут и нужна дополнительная настройка.


Знаю. Пока не смотрел, почему AY не выключается. Если в демке есть и AY звук, и covox, значит они как-то вместе сосуществовали. Вопрос - как? Переключатель?
Этот вопрос я пытался выяснить у кучи народа, но ни от кого (даже А. Савельева) внятного ответа не получил :v2_conf3: У меня в своё время был доступ только к БК-0010-01, поэтому в тонкостях 11М я есть нихт ферштейн. Надо бы бросить клич среди реальщиков!
По логике, если в той же демке Insult попеременно играют то AY, то Covox, а на экране нет надписи "переключите свой БК в режим Covox", то значит ручного переключателя не было.
Насчёт мыши тоже надо спросить реальщиков...

BYTEMAN
28.05.2010, 19:49
b2m, если сможете полностью реализовать Байт и Байт-01, то скину тех. документацию на оба компьютера.

b2m
28.05.2010, 20:59
А поподробнее можно, что значит "полностью"? Как я понял, Byte - это Спектрум-48, а Byte-01 - это Спектрум-128 с тырдосом. Я спектрумами не занимался, для меня это тёмный лес.

BYTEMAN
28.05.2010, 23:19
Как я понял, Byte - это Спектрум-48,
Да, это так. Только ещё ВИ53 прикрутили.

Byte-01 - это Спектрум-128 с тырдосом.
Не совсем так. Это спектрум-48 с СР/М, имеющий на борту 128К памяти, возможность использования подгружемого образа ПЗУ (так реализован тыр-дос, он сам с дискетки грузится), 512х192 видеорежим.

b2m
29.05.2010, 00:24
Да, это так. Только ещё ВИ53 прикрутили.
А как-то из бейсика оно играло?

BYTEMAN
01.06.2010, 21:33
только через OUT

Doronetty
02.06.2010, 11:30
Мне кажется, логичней обратиться чтобы Байт в Анриале поддержали - ведь там самая большая на сегодняшний день поддержка клонов "Спектрума" - ну разве что Спринтера и ZX-Next нет... Тем более что там проект Portable сейчас активно развивается - как раз будет чем заняться товарищам ;)

svofski
06.06.2010, 15:06
Глядя на программу MINI-KEG я уже не уверен, что у меня правильно эмулируется клавиатура. Странно как-то она работает с клавиатурой, нестандартно. Там получается, что бит в регистре статуса сбрасывается не только после чтения кода клавиши, а ещё когда-то. Вопрос - когда? А ещё встречал, что в цикле читается только код клавиши и сравнивается с определённым значением, и пока оно равно, крутится в этом цикле. Получается, что код клавиши тоже когда-то обнуляется. Опять вопрос.
Не разобрался пока?
http://bk0010.narod.ru/docs/BK_Magazine/bk-1993.1.djvu
Тут вот какие-то ужасы на стр.65 про команду RESET и как на нее реагирует клавиатурный контроллер. Может быть из той же оперы?

svofski
06.06.2010, 17:27
Кстати про RTYPE: у меня такое ощущение, что это ошибка. Поставил собачку там, где не надо было. Без индирекшна код становится очень похож на какой-нибудь канонический фрагмент вывода спрайта на экран. Чудом оказалось, что регистр 177700 тоже есть и в нем почти 177700 — 177740 =)

b2m
06.06.2010, 19:12
Не разобрался пока?
http://bk0010.narod.ru/docs/BK_Magazine/bk-1993.1.djvu
Тут вот какие-то ужасы на стр.65 про команду RESET и как на нее реагирует клавиатурный контроллер. Может быть из той же оперы?
В том-то и дело, что нет там команды RESET. Такое ощущение, что там рассчитывается на инверсное значение бита 7 регистра состояния клавиатуры. Если исправить команду BMI на BPL (после опроса регистра) то всё вроде как работает. А журнальчик этот я уже давно читал, но пока эта фича у меня не реализована.

А регистры 177700,177702,177704 действительно существуют. Как я понял - какой-то атавизм, я не стал вникать - просто добавил.

svofski
06.06.2010, 20:17
В эмуляторе Грабовца (cplusplus.boom.ru), который вообще все БК-шные заскоки очень достоверно изображает, MINI-KEG тоже неуправляем. Может кто-нибудь показать, где он работает?

По поводу 177700 -- Феликс говорит, что это стандартная ловушка и что такая же есть в УКНЦ. 177702 - адрес, обращение к которому перехватывается, 177704 -- вектор обработчика ловушки. 177700 -- режимы ловушки. Но работает это все только из приоритетного режима, а какая с этого польза на БК, где он не поддержан никаким образом, я так и не понял.

Sandro
08.06.2010, 04:32
(упс, не отследил перенос сообщений модератором)



Там получается, что бит в регистре статуса сбрасывается не только после чтения кода клавиши, а ещё когда-то. Вопрос - когда?

На этих граблях топтался и я :) Бит в статусе сбрасывается при входе процессора в прерывание от клавиатуры. Если точнее, то в тот момент, когда процессор читает вектор прерывания из контроллера.



А ещё встречал, что в цикле читается только код клавиши и сравнивается с определённым значением, и пока оно равно, крутится в этом цикле. Получается, что код клавиши тоже когда-то обнуляется. Опять вопрос.

Код меняется только по нажатию клавиши (при отпущенных других!). Либо по команде RESET, если что-то в наборе нажатых клавиш поменялось.

PS: Разве что контроллер нулит код в момент отпускания всех клавиш? Не помню. Надо попросить кого-нибудь с реалом проверить.
PPS: А где бы этот MINI-KEG скачать? У меня в закромах не нашлось.

svofski
08.06.2010, 04:43
http://pdp-11.ru/mybk/BIN/

Tim0xA
03.07.2010, 01:51
b2m, кажется в отладчике есть неприятный глючок. Я отлаживал эмуляцию контроллера дисковода и наблюдал, как изменяются регистры ВГ93. Так вот если во время пошагового прогона обновлять окно состояния портов, например переключением ctrl+m в память и назад - на каждое обновление происходит чтение регистра данных ВГ93. Соответсвенно, когда доходит дело до процедуры чтения данных в отлаживаемой программе через IN 0x18 - данные уже будут не те, что нужно.
И вообще, надо бы сделать наконец автоматическое обновление памяти и портов.

b2m
03.07.2010, 12:25
данные уже будут не те, что нужно.
Это не глюк, это фича :)
Я уже тоже думал, что для отладчика нужны другие связи, так сказать "через заднее кирильцо", как говорил Аркадий Райкин. Особенно неприятно сказывается эта фича при просмотре верхней памяти в БК-0010(11), там вообще после просмотра генерируется прерывание по несуществующему устройству.


И вообще, надо бы сделать наконец автоматическое обновление памяти и портов.
По Shift+F8 должно всегда обновляться (только надо не забывать отпускать Shift когда jmp,call или rst выполняется), другое дело, что в связи с вышеописанной фичей это не всегда удобно. Поэтому нужно сначала сделать всем устройствам "заднее крыльцо" :) Только вот код разрастётся, т.к. придётся везде учитывать, нормальное это чтение, или из отладчика, а я не люблю раздутого кода. Как вариант, можно вместо просмотра портов сделать просмотр состояния устройства, грубо говоря, просто некий текст от устройства, но редактировать его будет нельзя.

ivagor
04.08.2010, 12:28
Есть небольшой баг в эмуляции AY. Он проявляется по крайней мере в Cannon ball (нет звуков ударов шариков о стенки и стрелки по шарикам) и Driller tanks (нет звука при движении drillera). Насколько я помню, ты этот баг уже правил в 2008, но недавно ты поправил другой баг (в Indian no bouken) и, возможно, вернулся "старый баг" (или образовался новый, но похожий на старый - тебе виднее). В версии 15.03.2010 в canball и driller еще нормально, в 30.04.2010 уже плохо.

b2m
04.08.2010, 21:00
Если честно, я уже перестаю понимать, что должно происходить при установке регистров в разной последовательности. Вроде всё просто, ан нет - то одно не работает, то другое. Буду искать самое подробное описание AY...

b2m
05.08.2010, 17:14
Выложил исправленный вариант на сайт.

ivagor
10.08.2010, 11:29
Было бы здорово запоминать в отладчике положение отдельно для окна памяти и отдельно для окна портов.

Tim0xA
29.08.2010, 02:12
Вот, к примеру, такое дополнение emu.ext

msx : loader {
config="MSX"
loadaddr=4000
cmd[0].start=no
}

Тогда файлы с расширением *.msx будут грузиться в область 4000h, а bios их сразу будет запускать.

Если я таким образом загружаю файл, который превышает 16кб, то в ячейки 0x8000 - 0x8002 перезаписываются нули.
Можешь проверить на любом MSX 16кб ROM-файле, добавив к нему несколько байт.

Можно это исправить? Я сейчас отлаживаю рекомпиляцию на 17131 байт и этот глюк очень некстати.

b2m
29.08.2010, 13:29
В смысле, ты хочешь, чтобы я подправил бейсик, чтобы он не писал туда нули? Для справки: с адреса 8000h начинается программа на бейсике, а три нулевых байта - это конец программы.

Tim0xA
29.08.2010, 14:25
В смысле, ты хочешь, чтобы я подправил бейсик, чтобы он не писал туда нули? Для справки: с адреса 8000h начинается программа на бейсике, а три нулевых байта - это конец программы.
Теперь понятно. Если ты можешь поправить бейсик и это не займет много времени, то сделай плиз такой вариант специально для рекомпиляторщиков. Если нет, то буду вставлять в код временную процедурку для восстановления этих трех байт.

b2m
29.08.2010, 16:50
Если ты можешь поправить бейсик и это не займет много времени
Первый байт устанавливается непосредственно, а второй и третий вроде совмещён с процедурой установки конца программы, и вообще это вроде часть оператора NEW. Так что быстро не получится.

Проще сделать в программе приблизительно на этом месте 8000h-8002h (неиспользуемый) буфер.

Tim0xA
29.08.2010, 18:59
Проще сделать в программе приблизительно на этом месте 8000h-8002h (неиспользуемый) буфер.
Да, это хороший вариант.

b2m
02.09.2010, 15:05
Было бы здорово запоминать в отладчике положение отдельно для окна памяти и отдельно для окна портов.
Добавлено.

sergey2b
02.09.2010, 15:48
было бы желательно что бы можно было считывать бинарные файлы для rk86
хотя ковнертор bin to rk я сдел уже

b2m
02.09.2010, 16:10
В отладчике можно загрузить любой файл по любому адресу.
Есть также возможность настроить автоматическую загрузку файла с определённым расширением в EMU.ext

Tim0xA
08.09.2010, 16:34
b2m, в режиме эмуляции MSX1 не загружается ROM-файл (см. в приложении). В эмуляторе BlueMSX работает.

b2m
08.09.2010, 23:37
Уже грузится, скачай эмуль ещё раз. Zanac перестал грузиться, завтра поправлю.

Doronetty
09.09.2010, 00:12
Интересно, как эмулятор в режиме БК относится к тестам, которые BKBTL "тест 791401 проходит, тест 791404 НЕ проходит" - всё ли он проходит?!

b2m
09.09.2010, 10:58
Аналогично. Тест инструкций проходит, тест ОЗУ ругается там, где надо, а тест прерываний не проходит ввиду отсутствия каких-то из них.

svofski
09.09.2010, 14:14
Там и прерывания и какие-то внешние устройства, которых на БК в принципе нет. Не стоит зацикливаться на тестах. Они только намекают на исправность, но ее не гарантируют.

Doronetty
18.09.2010, 13:59
Потестил Insult Megademo (БК-0011М) с последней версией - результат очень порадовал: AY и COVOX теперь удачно сосуществуют и не мешают друг другу!
Автору мегареспект - такого не удавалось ещё никому!!!
А вот диск с Techlological Dreams (на амигаподобном загрузчике) продолжает жутко и противно гудеть ;) Ну и на самих демках (и T Dreams и Disco Club) происходит не совсем корректная работа - в области графики и палитр пока есть недоработки - но думаю автор успешно справится и с ними!

Sandro
20.09.2010, 01:33
Потестил Insult Megademo (БК-0011М) с последней версией - результат очень порадовал: AY и COVOX теперь удачно сосуществуют и не мешают друг другу!
Автору мегареспект - такого не удавалось ещё никому!!!


Как это "никому"? А как же я? :frown:
Выбираем Smart Covox, и всё работает. По крайней мере, на мой слух :)

Вот же чёрт! Обратно не работает, сломал перед релизом. Ну ладно, в следующей версии исправим.

Sandro
20.09.2010, 05:46
Кстати, загрузчик Technological Dreams будет жужжать ковоксом на частоте 50 Гц, если его запустить на реале. Особенность его работы с портом 177714, увы. А ещё он подразумевает, что ничего кроме мыши к порту не подключено (сейчас специально протрассировал код).

b2m
20.09.2010, 13:12
Кстати, загрузчик Technological Dreams будет жужжать ковоксом на частоте 50 Гц, если его запустить на реале.
Я тоже так подумал. Либо ковокс, либо мышь (а её пока у меня нет).
Кстати, Sandro, ты, как человек знающий БК, может скажешь, в районе какой сканлинии формировалось прерывание по кадровому СИ?
А то у меня демки с мультиколором криво идут. Хотя это может быть и неправильный тайминг команд.

Sandro
21.09.2010, 02:51
Я тоже так подумал. Либо ковокс, либо мышь (а её пока у меня нет).

Это не совсем так. Канонический опросчик мыши щёлкает только 2 битом (и кто придумал засунуть строб в младший байт единственного порта ввода-вывода? Ненависть! :mad:). Поэтому можно сравнивать новое значение в порту со старым, и не обновлять ковокс, если изменился только 2 бит. Тогда звук щёлкнет один раз в начале мышевозной программы, и всё. Опция "Smart Covox" у меня делает именно это.

Более того, если программа пишет в ковокс только байтами или только словами, то можно попытаться отделить записи в него от работы с AY. У меня есть рабочая версия, но в релиз 0.4 она не попала, увы, хоть и была готова :(

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


Кстати, Sandro, ты, как человек знающий БК, может скажешь, в районе какой сканлинии формировалось прерывание по кадровому СИ?
А то у меня демки с мультиколором криво идут. Хотя это может быть и неправильный тайминг команд.

Тут дело такое: в своё время у меня была ремонтная документация на БК, где всё это было описано детально, но она погибла вместе с дисками. :v2_cry:
Фрагменты из этой доки, которые мне удалось найти в сети (и то только по БК-0010) этих времянок не содержат. Поэтому у меня времянки ненадёжные, выставлены по воспоминаниям 20-летней давности об этих доках и по стандарту SECAM.
Если есть интерес, в ближайшие 2-3 дня (когда найдётся время) выложу в подфорум по БК мои времянки вместе с соображениями, почему так. Благо Insult выглядит почти нормально, значит ошибка невелика. Technological Dreams, правда, искажён сильно в сцене с шариками.

b2m
21.09.2010, 13:43
Канонический опросчик мыши щёлкает только 2 битом
Странно, TDR щёлкает 3-м битом (засылает восьмёрку в порт), сделал пока нечувствительность к изменению бита D3. Теперь не гудит.

Sandro
21.09.2010, 14:48
Третьим, конечно же :) Не надо было так поздно ночью в форум писать.

Doronetty
22.09.2010, 11:00
Да, теперь всё играет замечательно! Мегареспект!

P.S: Может, у А.Савельева удасться узнать все секреты мультиклолров и таймингов?

b2m
22.09.2010, 12:38
А палитра-то у Sandro более правильная, заметно в одной из частей insult-а. Сделал, как у него.

Doronetty
22.09.2010, 22:22
Да, теперь более похоже на правду (особенно в части Insult'а с синим мумбриком). Хотя в том же Эмуляторе 3000 отличия есть, например, в заставке между частями (чудищем с медальоном) - там зубы и глаза ещё одной градации красного, самой светлой. Вообще хотел запустить последнюю версию эмулятора Савельева (ведь в Эму3000 вроде как использованы сорцы не слишком последней версии эмулятора Савельева), чтобы посмотреть что да как, но пока нигде машины с Dos'ом или хотя бы Win 98 не нашёл...

Sandro
22.09.2010, 22:51
А палитра-то у Sandro более правильная, заметно в одной из частей insult-а. Сделал, как у него.

Палитра у меня набита в соответствии с официальным руководством программиста по БК :)

Собственно, не нужно было со скриншотами возиться, вот она:



private final static byte[] fullColorMap = {BC_BLACK, BC_BLUE, BC_GREEN, BC_RED, // 0, a.k.a BK colors
BC_BLACK, BC_YELLOW, BC_MAGENTA, BC_RED, //1
BC_BLACK, BC_CYAN, BC_BLUE, BC_MAGENTA, //2
BC_BLACK, BC_GREEN, BC_CYAN, BC_YELLOW, //3
BC_BLACK, BC_MAGENTA, BC_CYAN, BC_WHITE, //4 - CGA colors
BC_BLACK, BC_WHITE, BC_WHITE, BC_WHITE, //5 - fake mono palette
BC_BLACK, BC_DRED, BC_MRED, BC_RED, //6 - red shades
BC_BLACK, BC_GREEN, BC_LGREEN, BC_YELLOW, //7 - FIXME!!! could be wrong
BC_BLACK, BC_VIOLET, BC_LBLUE, BC_MAGENTA, //8
BC_BLACK, BC_YELLOW, BC_LBLUE, BC_MAGENTA, //9
BC_BLACK, BC_YELLOW, BC_VIOLET, BC_RED, //10
BC_BLACK, BC_CYAN, BC_YELLOW, BC_RED, //11
BC_BLACK, BC_RED, BC_GREEN, BC_CYAN, //12
BC_BLACK, BC_CYAN, BC_YELLOW, BC_WHITE, //13
BC_BLACK, BC_YELLOW, BC_GREEN, BC_WHITE, //14
BC_BLACK, BC_CYAN, BC_GREEN, BC_WHITE //15
};



Собственно, ещё нужно помнить, что у БК палитра имеет формат RrGB, то есть там два бита на красный и по одному на все остальные. Это используется в палитре 6 (да, там 3 разных красных) и, насколько я понимаю, в палитрах 7 и 8 (цвета LGREEN и LBLUE -- в их точном значении я не уверен).


но пока нигде машины с Dos'ом или хотя бы Win 98 не нашёл...

Рекомендую dosbox, очень толковый эмулятор старых x86 с досом. Правда, если машинка медленная, то в настройках стоит поставить core=dynamic. Бесплатный, взять можно тут: http://www.dosbox.com/

Doronetty
23.09.2010, 13:12
Про DosBox давно знаю, тока эмулятор под ним идёт очень криво - и медленно и с ужасными граф. багами. Буду пытаться запустить на реале под Win ME

BYTEMAN
30.09.2010, 00:27
Предлагаю поставлять вместе с эмулятором прошивку версии 2.10 для Ориона-ПРО. 2.0 уже несколько устарела.

b2m
30.09.2010, 14:16
Я пробовал, в режиме Орион-128 почему-то командер вылетает. А где взять актуальное содержимое ROM-диска?

---------- Post added at 13:38 ---------- Previous post was at 12:18 ----------

Так, оказывается режим прерываний IM 2 в Орион-Про эмулируется неправильно, надо переделывать...

---------- Post added at 15:16 ---------- Previous post was at 13:38 ----------

Переделал. Прошивки новые положил.

BYTEMAN
30.09.2010, 16:48
А где взять актуальное содержимое ROM-диска?
Налепить самому. Как у меня появится ноут, я сделаю программу для создания РОМ-диска и разбора готового РОМ-диска на BRU-файлы.

Error404
04.10.2010, 15:45
Налепить самому. Как у меня появится ноут, я сделаю программу для создания РОМ-диска и разбора готового РОМ-диска на BRU-файлы.

я создаю romdisk-и так:

copy /b ordos.bru + file1.bru + file2.bru + ... + file_ff.dat romdisk.bin

А в обратном направлении зачем?

BYTEMAN
04.10.2010, 18:03
Для универсальности. Вдруг найдутся Орионщики, у которых на ром-дисках записан какой-нибудь эксклюзив. Вот и считаем его :) Будуть режимы как для Ориона-ПРО, так и для обычного 128-го. Но у меня пока что нет своего компьютера, поэтому не получается начать работу, равно как и закончить уже начатое (дописать конвертер текстовых файлов Орион-РС. Я почти закончил доработки, но файлы все остались дома, на домашнем компьютере).

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

и ещё, одно пожелание, добавь пожалуйста поддержку файлов i80.

b2m
08.10.2010, 15:21
обнаружил ошибку в эмуляторе.
при переходе в полноэкранный режим в режиме эмуляции specialist mx, цветовая схема эмулятора портится.
По-умолчанию, в полноэкранном режиме используется 256-цветный режим, и при этом система вынуждена идти на компромисс: позволить перепрограммировать палитру или оставить какие-то цвета зарезервированными. Вообще, использование этого режима - анахронизм, мне раньше казалось, что в этом режиме эмуляция экрана будет быстрее, т.к. меньший объём данных приходится каждый раз обновлять.
В конфиге можно строго задать режим, попробуй в начале конфига добавить строчку:
main.fullscreen=1280x1024x16

И посмотри, исправилась ли ситуация. Если да, то сделаю по-умолчанию 16-битную глубину цвета.


и ещё, одно пожелание, добавь пожалуйста поддержку файлов i80.
Обычно, вместе с таким файлом идёт описание, куда грузить и какой монитор использовать. Файл называется так-же, но с расширением .cpu (это придумал А.Шевцов, aka AVSh). А вообще - нет такого стандартного формата .i80.

ZEman
08.10.2010, 17:05
не помогло.
экран в спциалисте мх вместо синего в полноэкранном режиме становится красным.
попробовал проверить другие эмуляторы такие как VV и некоторые другие, проблем с цветом в фулскрине нет.

b2m
08.10.2010, 17:22
не помогло
А размер экрана изменился? У тебя вообще возможен режим 1280x1024 65536 цветов?

ZEman
08.10.2010, 18:49
у меня семёрка 64-битная, здесь вообще нету выбора 16 или 32 бит цвета на рабочий стол.
размер экрана в фулскрине не изменился.
получился этакий красный прямоугольник в чёрном экране.
в окне всё нормально отображается, а как перехожу в фулскрин вот такая беда
первая и вторая картинки сфоткал монитор чтоб видно было кривые цвета.
картинка №3 это уже снимок из окна (нормальный).

ZEman
08.10.2010, 19:18
блин, оригинально...
оказывается всему виной кривой проводник винды.
если запустить эмулятор из под семёрки через вот этот батник то всё нормально показывает, цвета не корёжатся.
правда вот размер из фулскрина почемуто всё равно не меняется 640х480 остаётся.

ZEman
08.10.2010, 19:42
b2m, у тебя через что работает эмулятор ?
через древний direct draw чтоли ?
VV отлично работает через OGL, в фулскрине никаких проблем.

b2m
08.10.2010, 22:06
у меня семёрка 64-битная
А у меня эмулятор 32-битный :)


правда вот размер из фулскрина почемуто всё равно не меняется 640х480 остаётся.
Я так понимаю, запускается в режиме совместимости с XP. Вряд-ли там предлагается большой выбор режимов.


b2m, у тебя через что работает эмулятор ?
через древний direct draw чтоли ?
Через тот, что у тебя в режиме совместимости. Да, программный интерфейс старого direct draw используется (из соображений совместимости со старыми системами), но это ничего не меняет. Какой стоит DirectX, такой и используется. В системе не бывает двух разных версий DirectX.

doorsfan
16.10.2010, 21:27
Просьба подправить скорость эмуляции Львова. EMU Version 1.01
http://zx.pk.ru/showthread.php?p=323299#post323299

Doronetty
29.11.2010, 02:53
Пришла мысль запустить демку Satisfaction в режиме Спектрума. И... я так и предполагал! В части, где должна звучать цифровая музыка через AY стоит полная тишина! (потом чистоты ради эксперимента запустил ещё пару AY-оцифровок с тем же результатом) :(
Я это не к тому говорю, что эмуляция Спектрума плоха - его можно было бы и вообще не делать, ибо эмуляторов его (включая очень навороченные) - тьма тьмущая. Но вот эмуляция AY - это дело совсем другое, этот чип во многих советских машинах стоит (в том числе и в моей любимой БК-0011М)! Очень прошу обратить внимание на указанную недоработку (советую взять готовую реализацию AY скажем у того же Unreal - там исходники открыты)!

P.S: И о-о-очень надеюсь на доработку экрана БК-0011M - появилась важная информация по времянкам!

DDp
16.01.2011, 20:51
Не обязятельно, но хотелось бы...
1) В диалоге открытия файлов запоминать тип(группу) файлов.
2) (магнитофонный диалог) Добавить маски файлов *.bss (бейсик без заголовка), *.bsm (бейсик микрон), *.edm (редактор микрон) в "Data files (*.rk?)". Это тоже, что и *.rk?, просто с другим расширением (см. эмулятор Пыхонина)
С другой стороны, какое расширение давать файлам это, наверное, уже больше религия. Может вынести группы и маски в ini-файл ?
3) добавить в исходнике "EMU Version ... %s", __DATE__ . . . . . (это ж бубль-гум!) ;)

b2m
18.01.2011, 10:58
Может вынести группы и маски в ini-файл ?
Это уже давно сделано. Файл называется EMU.ext

Doronetty
19.01.2011, 12:46
Есть ли планы в ближайшее время подкорректировать времянки экрана БК-0011М? ;) Больно уж охота посмотреть на нормальную работу демок, да душой порадовацца...

b2m
19.01.2011, 18:48
Пока таких планов не было.

Jons
08.02.2011, 10:54
b2m, есть ли возможность запуска эмулятора с конфигурацией по умолчанию? т.е. например мне нужен постоянно эмулятор Вектора, чтоб не выбирать его постоянно из списка, и ещё вопросик, есть поддержка режима LBA при обращении к образу HDD?

b2m
08.02.2011, 12:25
b2m, есть ли возможность запуска эмулятора с конфигурацией по умолчанию?
Пока нет, планирую сделать параметр командной строки. На данный момент советую использовать drag&drop, чтобы запускать rom-файлы Вектора. Т.е. из эксплорера файл можно бросить на эмулятор или на ярлык на него. Или указать файл в командной строке (например в FARе удобно ассоциировать эмулятор с расширением rom).


есть поддержка режима LBA при обращении к образу HDD?
Есть.

svl
14.03.2011, 20:33
В Радио-86РК команды IN и OUT можно использовать вместо LDA и STA для обмена с контроллерами. Например, IN 0A1H вместо LDA 0A001H. В эмуляторе это не работает. Можно ли в конфиге как-то поправить?

b2m
14.03.2011, 20:42
В Радио-86РК команды IN и OUT можно использовать вместо LDA и STA для обмена с контроллерами. Например, IN 0A1H вместо LDA 0A001H. В эмуляторе это не работает. Можно ли в конфиге как-то поправить?
Вместо LDA 0A001H нельзя использовать IN 0A1H. Можно использовать вместо LDA 0A1A1H. В конфиге нужно добавить port.maptomem=1, как это сделано в Mikrosha.cfg. Добавлю во все конфиги (где нужно) в следующей версии.

svl
14.03.2011, 20:58
Вместо LDA 0A001H нельзя использовать IN 0A1H. Можно использовать вместо LDA 0A1A1H
В общем случае, конечно, нельзя. Но в РАДИО-86 A001 то же самое, что A1A1.
Прописал в конфиг, работает. Спасибо.

Error404
23.06.2011, 14:24
Дмитрий, добавь пожалуйста в конфиг Ориона чип RTL8019AS по адресам F770..F7FF. Накрайняк можно F770..F78F (чтение регистра данных LDIR-ом я пока не использую).

b2m
23.06.2011, 22:34
Дмитрий, добавь пожалуйста в конфиг Ориона чип RTL8019AS по адресам F770..F7FF. Накрайняк можно F770..F78F (чтение регистра данных LDIR-ом я пока не использую).
В смысле, сделать ещё один конфиг и добавить в архив на сайте?
Или ты для себя? :)
Ты, вроде, планировал какие-то заморочки с аппаратным сбросом. Я, честно-говоря, не собирался добавлять такие фичи. А добавить F770..F78F не сложно, но это будет "стандартная" раскладка портов.
Я хотел сначала подправить поиск tap-адаптера, чтобы его не надо было в конфиге указывать (чтобы по-умолчанию брал первый попавшийся tap-адаптер), но всё руки не доходят...

Error404
23.06.2011, 23:52
В смысле, сделать ещё один конфиг и добавить в архив на сайте?
Или ты для себя? :)
Ты, вроде, планировал какие-то заморочки с аппаратным сбросом. Я, честно-говоря, не собирался добавлять такие фичи. А добавить F770..F78F не сложно, но это будет "стандартная" раскладка портов.
Я хотел сначала подправить поиск tap-адаптера, чтобы его не надо было в конфиге указывать (чтобы по-умолчанию брал первый попавшийся tap-адаптер), но всё руки не доходят...

В архив на сайте. Для себя я оттуда и скачаю. :)
Буду проверять свои поделки на двух движках, а выложенное на сайте может и еще кому-то пригодится. Сброс по ловушке записи 0FDh в F770 можно и не делать - достаточно если RTL будет сбрасываться при включении питания и кнопке reset, "стандартная" раскладка портов для начала тоже потянет.

А вот про первый попавшийся tap-адаптер - это только если в конфиге явно не указан tap-адаптер. У меня например их несколько и Орион висит на втором. Т.к. на первом уже задолго до эмуляторов висит OpenVPN.

b2m
24.06.2011, 13:33
В архив на сайте. Для себя я оттуда и скачаю.
Я добавил сеть в конфигурации Орион+Z80, можешь скачивать.

З.Ы. Кстати, ты бы не мог выложить текущие бинарники uIP (образ диска), чтобы я тоже посмотрел на это хозяйство под Орионом? А то мне лень качать и разбираться с Hitech-C и MyZ80.

Error404
24.06.2011, 20:18
Я добавил сеть в конфигурации Орион+Z80, можешь скачивать.

З.Ы. Кстати, ты бы не мог выложить текущие бинарники uIP (образ диска), чтобы я тоже посмотрел на это хозяйство под Орионом? А то мне лень качать и разбираться с Hitech-C и MyZ80.

Там бинарников пока только telnetd. Уже лежит у меня на страничке (http://orion-z.mylivepage.ru/file/337/5967_dos-tty4-sd.zip) и на форуме (http://zx.pk.ru/showpost.php?p=275608&postcount=851)- там загрузочный образ, в нем в User 1 вместе с коммуникационными программами и лежит telnetd.com.
Сейчас мучаю вебсервер, но пока больше оно меня мучает. :)

---------- Post added at 20:18 ---------- Previous post was at 19:44 ----------


Я добавил сеть в конфигурации Орион+Z80, можешь скачивать.

Чегой-то не работает. Толи я не разобрался с конфигом. В ifname надо писать название TAP-соединения?

b2m
24.06.2011, 23:42
Чегой-то не работает. Толи я не разобрался с конфигом. В ifname надо писать название TAP-соединения?
Посмотрел исходники с твоего сайта: у меня не был реализован бит сброса в регистре запросов. Теперь пингуется. А на команды telnetd не реагирует (хотя кое-что и выдал в начале).

BYTEMAN
24.06.2011, 23:54
Только что увидел, что есть эмуляция Арго :) А фиолетовый цвет в цветном режиме - это взято на основании чего? И, кстати, может ли так быть, что у Арго аналогичная реализация цвета, как и в Юниоре?

Error404
25.06.2011, 10:53
Посмотрел исходники с твоего сайта: у меня не был реализован бит сброса в регистре запросов. Теперь пингуется. А на команды telnetd не реагирует (хотя кое-что и выдал в начале).

что-то у меня icmpecho не запускается.
у тебя регистры identify правильно возвращаются?



LD A,021H
LD (P0_CMD),A ; Stop\Abort, Set Reg Page 0, release RSTDRV pin (reset off)
LD HL, TITLE2
CALL MSG ; show message acts as delay for RTL8019 init
LD HL,(P0_RBCR0)
LD A, H
CP 70H ; RTL8019 specific constant
RET NZ ; RTL8019 not found
LD A, L
INIT0: CP 50H ; RTL8019 specific constant
RET NZ ; RTL8019 not found




telnetd таки - да, работает странно: весь демон уходит в астрал (перестает пинговаться) по первому нажатию кнопки в telnet-клиенте.
Странно, но у меня такого не происходит - работает в обе стороны.

Под VirtualBox (на "честной" винде не проверял) emu при переключении пропорций в 2:1 такие корки мочит... :) Виндовозное окно остается где и было (маленькое в центре экрана, его можно двигать но картинки в нем нет), а директиксное - в левом верхнем углу экрана (без рамки, повер всех окон шпарит, двигать его понятно нельзя и портится канвас всех окон которые оказались под ним). На ПринтСкрин оно не попадает: показать не могу.