Эмуляция КР580ВВ79
Moderator: Pyk
-
- God
- Posts: 1343
- Joined: 13 Nov 2010 04:06
Не сказал бы, что это очевидно... По Ctrl+M выбрал bios, вроде всё заработало.
По поводу точности эмуляции ВВ79. Моё пошаговое устройство показывает, что после записи управляющего слова "Сброс" (0CFh) индикатор очищается, в эмуляторе же остаётся на индикаторе то, что и было. Вероятно, это имеет значение.
При работе с эмулятором заметил, что если выбрать File -> New, а потом в окошке выбора нажать Cancel, то при открытом окне дебагера эмулятор завершает работу. Если же дебагер закрыт, то к завершению работы приводит попытка его открытия.
По поводу точности эмуляции ВВ79. Моё пошаговое устройство показывает, что после записи управляющего слова "Сброс" (0CFh) индикатор очищается, в эмуляторе же остаётся на индикаторе то, что и было. Вероятно, это имеет значение.
При работе с эмулятором заметил, что если выбрать File -> New, а потом в окошке выбора нажать Cancel, то при открытом окне дебагера эмулятор завершает работу. Если же дебагер закрыт, то к завершению работы приводит попытка его открытия.
-
- Devil
- Posts: 907
- Joined: 26 May 2003 06:57
Спасибо за информацию.VituZz wrote:По поводу точности эмуляции ВВ79. Моё пошаговое устройство показывает, что после записи управляющего слова "Сброс" (0CFh) индикатор очищается
Да, с отладчиком надо аккуратнее, косяков там не мало.VituZz wrote:При работе с эмулятором заметил, что если выбрать File -> New, а потом в окошке выбора нажать Cancel, то при открытом окне дебагера эмулятор завершает работу. Если же дебагер закрыт, то к завершению работы приводит попытка его открытия.

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

-
- Devil
- Posts: 907
- Joined: 26 May 2003 06:57
Совершенству нет предела, но всё равно, пишиVituZz wrote:Имеет ли смысл мне писать здесь о каких-то замеченных недостатках?

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

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

Логично. Когда приходит время обновлять экран, он обновляется.VituZz wrote:Но если часть кода пройти с помощью F4 (я пропускал циклы, ответственные за паузу после вывода символа), то индикатор нормально отрабатывает то, что должен был показать раньше.
Всё зависит от наличия времени и желания. А эти две сущности, заразы, редко когда одновременно имеютсяVituZz wrote:Но двигаться в нужном направлении будет?

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

П.С. С лишним символом, похоже, разобрался. Режим вывода на индикатор со сдвигом влево оказался не так прост, как хотелось. Перезапись управляющего слова изменяет адрес следующего символа в ОЗУ индикации, и в общем случае нужно перезаполнить индикатор. В эмуляторе теперь всё работает, но в железке всё равно проверю.
-
- Devil
- Posts: 907
- Joined: 26 May 2003 06:57
Обновил эмулятор на сайте. Исправил сброс, добавил дамп внутренней памяти дисплея ВВ79 (по Ctrl+M), в нижней строке теперь показывается позиция левого символа (в режиме со сдвигом).
Заметил, что при трассировке иногда появляются дублирующиеся символы. Но это не косяк. Просто экран отобразился в такой момент, когда один символ уже изменился, а следующий ещё "горит" с предыдущего цикла обновления дисплея ВВ79. Реальное содержимое памяти лучше смотреть через дамп.
Заметил, что при трассировке иногда появляются дублирующиеся символы. Но это не косяк. Просто экран отобразился в такой момент, когда один символ уже изменился, а следующий ещё "горит" с предыдущего цикла обновления дисплея ВВ79. Реальное содержимое памяти лучше смотреть через дамп.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
-
- God
- Posts: 1343
- Joined: 13 Nov 2010 04:06
Наврное, вчера и ассемблер обновлялся? Сегодня он "забыл" о существовании у процессора регистра B
. Если ассемблировать строчку
то внизу появляется сообщение
И так со всеми строчками, где встречается регистр B. Хотя в окошке дампа соответствующие коды появляются.

Code: Select all
mov B, A
Code: Select all
Unknown register B: mov B, A
-
- Devil
- Posts: 907
- Joined: 26 May 2003 06:57
-
- God
- Posts: 1343
- Joined: 13 Nov 2010 04:06
-
- Devil
- Posts: 907
- Joined: 26 May 2003 06:57
Да ради Бога!
Измени конфиг вот так:
Только это будет без батарейки 
Измени конфиг вот так:
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/
http://bashkiria-2m.narod.ru/
-
- God
- Posts: 1343
- Joined: 13 Nov 2010 04:06
-
- Devil
- Posts: 907
- Joined: 26 May 2003 06:57
Я уже не помню, зачем так сделано. Если есть только биос в адресах 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/
http://bashkiria-2m.narod.ru/