Эмуляция КР580ВВ79

Эмулятор Радио-86РК и других советских компьютеров на КР580ВМ80А http://www.emu80.org

Moderator: Pyk

User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Не сказал бы, что это очевидно... По Ctrl+M выбрал bios, вроде всё заработало.

По поводу точности эмуляции ВВ79. Моё пошаговое устройство показывает, что после записи управляющего слова "Сброс" (0CFh) индикатор очищается, в эмуляторе же остаётся на индикаторе то, что и было. Вероятно, это имеет значение.

При работе с эмулятором заметил, что если выбрать File -> New, а потом в окошке выбора нажать Cancel, то при открытом окне дебагера эмулятор завершает работу. Если же дебагер закрыт, то к завершению работы приводит попытка его открытия.
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

VituZz wrote:По поводу точности эмуляции ВВ79. Моё пошаговое устройство показывает, что после записи управляющего слова "Сброс" (0CFh) индикатор очищается
Спасибо за информацию.
VituZz wrote:При работе с эмулятором заметил, что если выбрать File -> New, а потом в окошке выбора нажать Cancel, то при открытом окне дебагера эмулятор завершает работу. Если же дебагер закрыт, то к завершению работы приводит попытка его открытия.
Да, с отладчиком надо аккуратнее, косяков там не мало. :)
Постараюсь исправить.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

b2m wrote:Да, с отладчиком надо аккуратнее
Вообще-то эмулятор здорово облегчает жизнь. Но как я полагаю, эмуляция компьютеров в целом достаточно безглючна. Имеет ли смысл мне писать здесь о каких-то замеченных недостатках? Ведь они касаются, как я понимаю, только интересной мне конфигурации Calc, которая не представляет интереса для других.

П.С. Если в онлайн-ассемблерe ошибочно написать, к примеру, pop HL вместо pop H, то генерится код C1, соответствующий pop B, а не код E1, соответствующий pop H. Можно потом долго искать... :)
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

VituZz wrote:Имеет ли смысл мне писать здесь о каких-то замеченных недостатках?
Совершенству нет предела, но всё равно, пиши :)
VituZz wrote:П.С. Если в онлайн-ассемблерe ошибочно написать, к примеру, pop HL вместо pop H, то генерится код C1, соответствующий pop B, а не код E1, соответствующий pop H. Можно потом долго искать... :)
Приколько, даже ошибки не выдаёт. Но на полноценный ассемблер эта поделка и не претендует.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

b2m wrote:но всё равно, пиши :)
Ещё заметил в отладчике, что если идти по коду клавишей F8, основное окошко эмулятора не отображает изменений. Например, выводишь символ на индикатор, а после этой команды на индикаторе ничего не происходит. Но если часть кода пройти с помощью F4 (я пропускал циклы, ответственные за паузу после вывода символа), то индикатор нормально отрабатывает то, что должен был показать раньше.
b2m wrote:Но на полноценный ассемблер эта поделка и не претендует.
Но двигаться в нужном направлении будет? :)
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

VituZz wrote:Ещё заметил в отладчике, что если идти по коду клавишей F8, основное окошко эмулятора не отображает изменений.
Не ты первый на это жалуешься. Но обновление экрана из отладчика не предусмотрено программным интерфейсом. Даже я не знаю, будет ли это когда-либо сделано. :)
VituZz wrote:Но если часть кода пройти с помощью F4 (я пропускал циклы, ответственные за паузу после вывода символа), то индикатор нормально отрабатывает то, что должен был показать раньше.
Логично. Когда приходит время обновлять экран, он обновляется.
VituZz wrote:Но двигаться в нужном направлении будет? :)
Всё зависит от наличия времени и желания. А эти две сущности, заразы, редко когда одновременно имеются :)
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

b2m wrote:
VituZz wrote:Ещё заметил в отладчике, что если идти по коду клавишей F8, основное окошко эмулятора не отображает изменений.
Не ты первый на это жалуешься. Но обновление экрана из отладчика не предусмотрено программным интерфейсом. Даже я не знаю, будет ли это когда-либо сделано. :)
VituZz wrote:Но если часть кода пройти с помощью F4 (я пропускал циклы, ответственные за паузу после вывода символа), то индикатор нормально отрабатывает то, что должен был показать раньше.
Логично. Когда приходит время обновлять экран, он обновляется.
Что-то я не совсем понял. Когда фрагмент кода в отладчике проходишь по F8, индикатор изменений не показывает. Когда этот же фрагмент кода в отладчике проходишь по F4, индикатор изменения показывает. Сейчас я упёрся в это дело, не пойму, откуда вылезает в бегущей строке лишний символ, вообще левый. Придётся снова прошить РФку, посмотреть, как оно будет в железке :).

П.С. С лишним символом, похоже, разобрался. Режим вывода на индикатор со сдвигом влево оказался не так прост, как хотелось. Перезапись управляющего слова изменяет адрес следующего символа в ОЗУ индикации, и в общем случае нужно перезаполнить индикатор. В эмуляторе теперь всё работает, но в железке всё равно проверю.
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

Обновил эмулятор на сайте. Исправил сброс, добавил дамп внутренней памяти дисплея ВВ79 (по Ctrl+M), в нижней строке теперь показывается позиция левого символа (в режиме со сдвигом).

Заметил, что при трассировке иногда появляются дублирующиеся символы. Но это не косяк. Просто экран отобразился в такой момент, когда один символ уже изменился, а следующий ещё "горит" с предыдущего цикла обновления дисплея ВВ79. Реальное содержимое памяти лучше смотреть через дамп.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Спасибо!
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Наврное, вчера и ассемблер обновлялся? Сегодня он "забыл" о существовании у процессора регистра B :D . Если ассемблировать строчку

Code: Select all

mov B, A
то внизу появляется сообщение

Code: Select all

Unknown register B:         mov B, A
И так со всеми строчками, где встречается регистр B. Хотя в окошке дампа соответствующие коды появляются.
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

Опс :)
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Железочка обзавелась "рамой" - статическим ОЗУ с батарейкой, 32кБ по адресам 8000h-FFFFh. b2m, нельзя ли добавить это ОЗУ в эмулятор железочки? :roll:

Это Calc в твоём эмуляторе - на случай, если ты успел позабыть. :)
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

Да ради Бога!
Измени конфиг вот так:

Code: Select all

mem1 : Memory {
  size=9000
}

mm : MemMap {
  map[0][0000-07FF]=bios
  map[0][0800-0FFF]=mem1[0800]
  map[0][8000-FFFF]=mem1[1000]
  map[1][0000-0FFF]=mem1[0000]
  map[1][8000-FFFF]=mem1[1000]
}
Только это будет без батарейки :)
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

mem1 : Memory {
size=9000
}

mm : MemMap {
map[0][0000-07FF]=bios
map[0][0800-0FFF]=mem1[0800]
map[0][8000-FFFF]=mem1[1000]
map[1][0000-0FFF]=mem1[0000]
map[1][8000-FFFF]=mem1[1000]
}
Не мог бы ты пояснить выделенное? RAM по адресам 0-07FFh пока нет, как и по адресам 0800-0FFFh.
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

Я уже не помню, зачем так сделано. Если есть только биос в адресах 0000-07FF и ОЗУ 8000-FFFF, а раскладка памяти фиксированная, то можно и проще (это весь конфиг):

Code: Select all

main.CPUClock=2MHz
main.Caption="Calc"

CPU : K580wm80a {
  mem=mm
  port[02-03]=ww79.data
  rst[7]=ww79.irq
}

bios : Memory {
  rom="Calc\calc.rom"
}

kbd : Keyboard {
  layout="Calc\calc.kbd"
}

mem1 : Memory {
  size=8000
}

mm : MemMap {
  map[0][0000-07FF]=bios
  map[0][8000-FFFF]=mem1
}

dspmux : MemMap2 {
  map[00-FF]=vid.pins
}

kbdreg : Register {
  write[0-2]=kbd.mask
}

ww79 : K580ww79 {
  scan=dspmux.offset
  scan=kbdreg
  ret=kbd.~idata
  display=dspmux
}

vid : Indicator {
  maskbitmap="Calc\calc.bmp"
  background[0]="Calc\calc.gif"
  background[1]="Calc\calc.bmp"
  pin[0-38].point=18,9,23,0,8
  pin[1-39].point=24,18,23,0,8
  pin[2-3A].point=24,32,23,0,8
  pin[3-3B].point=18,40,23,0,8
  pin[4-3C].point=11,32,23,0,8
  pin[5-3D].point=11,18,23,0,8
  pin[6-3E].point=18,24,23,0,8
  pin[7-3F].point=29,40,23,0,8
}
О, вспомнил :)
VituZz wrote:Также у этого контроллера в пространство 0000...07FFh включена ПЗУ РФ2. Имеется порт ввода-вывода 00h, бит 0 которого по сбросу устанавливается в 0 и разрешает работу ROM, а при установке его в 1 ROM отключается, а адресное пространство отдаётся RAM. Порт 00h доступен для чтения и записи.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/