Эмуляция Ориона-Про

Компьютер Орион-128 (1990) расширяемый до 256 КБ и его развитие

Moderator: Shaos

Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: Эмулятор ПК "ОРИОН"

Post by Alekcandr »

Error404 wrote:Пытаюсь разобраться с эмуляцией ПРО. В стартовом ПЗУ с самого начала ROM1 выполняется примерно такая конструкция:
while (TRUE)
{
delay();
init_ports();
init_stack();
init_ff00_mem();
init_interrupts();
}
У меня эмулятор из этого цикла не выходит (и не должен, я прошагал), т.е. увисает. По логике, могло бы выйти по прерыванию, но во-первых, код делает DI и не делает EI, а во вторых, не включает прерывания портом 0FBh (т.е. даже аппаратно прерывания запрещены). Кто-нибудь сталкивался с таким?
При загрузке стартовой страницы в Орион-Про прерывания не используются. Я думаю, что тебе надо обратить внимание на эмуляцию диспетчера памяти и порта 0xA0. Диспетчер памяти в Орион-Про на мой взгляд очень замороченный. У меня в эмуляторе все работает.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Post by Alekcandr »

Еще существует две версии системного ПЗУ для платы v2.9 (по-моему) и v3.10. Платы отличаются расположением области F000-FFFF в ОЗУ. Версия 2.9 – 3 страница, версия 3.10 – 31 страница.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

Error404 wrote:Добавил строчки, но не нашел дебагер. Он имеет встроенный интерфейс или нужно нечто внешнее?
Дебагер встроенный, окно дебагера должно появляться сразу после выбора данной конфигурации. После запуска по F5 можно в любой момент тормознуть клавишей Break.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Error404
Maniac
Posts: 269
Joined: 05 Oct 2006 04:45
Location: Moscow

Post by Error404 »

b2m wrote:
Error404 wrote:Добавил строчки, но не нашел дебагер. Он имеет встроенный интерфейс или нужно нечто внешнее?
Дебагер встроенный, окно дебагера должно появляться сразу после выбора данной конфигурации. После запуска по F5 можно в любой момент тормознуть клавишей Break.
Не получается. При старте ничего не выводит (работает как обычно), по кнопке Break выдает "MFC application error" и закрывается. Использую EMU.EXE 18.02.2008 11:20 размер 155648
cfg:

Code: Select all

main.CPUClock=5MHz
main.Caption="Орион-Про"

dbg : debug { 
} 

CPU : Z80 {
  mem=mm
  port[00-03]=sys1.data
  port[04-07]=pagectl.data
  port[08-0B]=sys2.data
  port[10-13]=dsk.data
  port[14]=regs1.data[0]
.............................................
Всем добра!
User avatar
Error404
Maniac
Posts: 269
Joined: 05 Oct 2006 04:45
Location: Moscow

Post by Error404 »

Alekcandr wrote:Еще существует две версии системного ПЗУ для платы v2.9 (по-моему) и v3.10. Платы отличаются расположением области F000-FFFF в ОЗУ. Версия 2.9 – 3 страница, версия 3.10 – 31 страница.
Вот этого не знал. Я пользовал 31-й сегмент для F000..FFFF - c другим ROM (rom1-100.bin) стало подавать какие-то признаки жизни. :o А клавиатура на ПРО отличается от обычного Ориона (кроме адресации по OUT)? Такое ощущение, что да: не работает стандартная Орионовская, к другим линиям порта подключена что ли?
Млин, ну и наворотил же Сугоняко! Уже чего-то расхотелось паять этот шедевр. :)
Всем добра!
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

Error404 wrote:Не получается. При старте ничего не выводит (работает как обычно), по кнопке Break выдает "MFC application error" и закрывается. Использую EMU.EXE 18.02.2008 11:20 размер 155648
cfg:
Надо так:

Code: Select all

main.CPUClock=5MHz
main.Caption="Орион-Про"

dbg : debug { 
} 

CPU : Z80 {
  debug=dbg
  mem=mm
  port[00-03]=sys1.data
  port[04-07]=pagectl.data
  port[08-0B]=sys2.data
  port[10-13]=dsk.data
  port[14]=regs1.data[0]
.............................................
debug=dbg - это связь дебагера и процессора
А клавиатура на ПРО отличается от обычного Ориона
У меня стандартная раскладка, через ВВ55 на портах 18-1В и в памяти F400-F4FF. Отключения клавиатуры по адресам в памяти в режиме Про пока не реализовано.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Error404
Maniac
Posts: 269
Joined: 05 Oct 2006 04:45
Location: Moscow

Post by Error404 »

b2m wrote:
Error404 wrote:Не получается. При старте ничего не выводит (работает как обычно), по кнопке Break выдает "MFC application error" и закрывается. Использую EMU.EXE 18.02.2008 11:20 размер 155648
cfg:
Надо так:
debug=dbg - это связь дебагера и процессора
А клавиатура на ПРО отличается от обычного Ориона
У меня стандартная раскладка, через ВВ55 на портах 18-1В и в памяти F400-F4FF. Отключения клавиатуры по адресам в памяти в режиме Про пока не реализовано.
Дебагер запустился. :) Как в нем сделать breakpoint (а то в ПЗУ первым же делом идет цикл на 40 тысяч итераций :) , прошагивать которые по F8 нереально) ?

Подскажите, пож, побитовые значения DIP-переключателя - соотвествие битам порта 0, а то я сделал как на мой взгляд должно было следовать из описания, и снова убедился, что Сугоняко мыслил иначе, чем я. :) Или опять описание не соответствует версии платы/прошивки. Каким-то чудом удалось подобрать комбинацию, при которой выходит в Power Commander либо (в другой комбинации) ругается что "нет внешнего ROM-Disk-а", и это пока все, что удалось подобрать :)

Кстати, по каким адресам (или портам?) в ПРО находится внешний ROM-ДИСК? Это оно: " port[28-2B]=app2.data" ? Если да, то в каком документе описано (я такого не встречал)?
Всем добра!
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Post by Alekcandr »

Все эти непонятки с портами и другими вещами вызваны постоянной доводкой платы в то время. В документации не описаны или описаны неправильно многие аспекты работы железа. Самый верный способ разобрать – это читать схемы. Я так и делал.
Положение переключателя DIP я брал в конфигурационном файле эмулятора b2m.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

Error404 wrote:Как в нем сделать breakpoint
Вот все клавиши:
F4 - запустить до курсора
F5 - запустить
F8 - один шаг
Shift+F8 - запустить до следующей команды (удобно выполнять ldir, call и проматывать циклы, если они заканчиваются условным jmp) Иногда не срабатывает, приходится использовать F4 на след.команде, источник бага не найден.
F9 - точка останова
Ctrl+G - перейти к другому адресу (дизассемблер, дамп)
Break - прервать исполнение
Подскажите, пож, побитовые значения DIP-переключателя
В начальном загрузчике есть опция "TEST / Configuration" - показывает значения DIP-переключателей.
По-моему там в документации частично перепутаны 0/1
Подбирал методом тыка.
Кстати, по каким адресам (или портам?) в ПРО находится внешний ROM-ДИСК? Это оно: " port[28-2B]=app2.data" ?
Да. Если посмотришь в конфиге app2 это BB55, к портам которого подключена память romdisk. Не помню, откуда эта информация, возможно выяснил в процессе трассировки первых запусков Про.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Error404
Maniac
Posts: 269
Joined: 05 Oct 2006 04:45
Location: Moscow

Post by Error404 »

b2m wrote:
Error404 wrote:
Подскажите, пож, побитовые значения DIP-переключателя
В начальном загрузчике есть опция "TEST / Configuration" - показывает значения DIP-переключателей.
По-моему там в документации частично перепутаны 0/1
Подбирал методом тыка.
Кстати, по каким адресам (или портам?) в ПРО находится внешний ROM-ДИСК? Это оно: " port[28-2B]=app2.data" ?
Да. Если посмотришь в конфиге app2 это BB55, к портам которого подключена память romdisk. Не помню, откуда эта информация, возможно выяснил в процессе трассировки первых запусков Про.
Rom-Disk сделал, работает. А в начальный загрузчик у меня оно не выходит - сразу грузится Ordos. :o Соответственно опцию "TEST / Configuration" пока посмотреть не могу. А в вашем эмуле в настройках "dip" это значение порта 0 или именно переключателей?
Всем добра!
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

Error404 wrote:А в начальный загрузчик у меня оно не выходит - сразу грузится Ordos. :o Соответственно опцию "TEST / Configuration" пока посмотреть не могу.
Измени D5 DIP-переключателей :)
Error404 wrote:А в вашем эмуле в настройках "dip" это значение порта 0 или именно переключателей?
Такой фичи как "DIP-переключатели" пока нет, и наверное не будет. Потому что тут я применил хитрость: Файл с DIP это 8 байт, из которых используется только младший бит, который и будет значением в порту 00h. Т.е. в текстовом виде - это как бы двоичная запись значения порта.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Error404
Maniac
Posts: 269
Joined: 05 Oct 2006 04:45
Location: Moscow

Post by Error404 »

b2m wrote:
Error404 wrote:А в вашем эмуле в настройках "dip" это значение порта 0 или именно переключателей?
Такой фичи как "DIP-переключатели" пока нет, и наверное не будет. Потому что тут я применил хитрость: Файл с DIP это 8 байт, из которых
Почему-то часть DIP-переключателей работают инверсно относительно руководства пользователя :o
Например, переключатель типа клавиатуры. А в остальном вроде все работает...

А что описывает настройка "mm.page"? Что-то я не нахожу где в конфиге описывается ее "влияние"

Code: Select all

sys2 : K580ww55 {
.....................
  portC[6-7]=mm.page
}
Всем добра!
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

Error404 wrote:Почему-то часть DIP-переключателей работают инверсно относительно руководства пользователя
Сам удивляюсь. :)
А что описывает настройка "mm.page"?
По-моему там всё не так уж и сложно:

Code: Select all

mm : MemMap {
  map[0][0000-3FFF]=win1
  map[0][4000-7FFF]=win2
....
mm это диспетчер памяти (MemMap), внутри которого описаны строчки вида map[номер страницы][диапазон адресов]=устройство. А mm.page в данном случае - это и есть "номер страницы" данного диспетчера.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/