Эмуляция КР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 »

По ВВ79 остаётся всё же несколько неясным один вопрос. Как известно, блок индикации может работать в режиме выдачи дешифрированного адреса счётчика сканирования (можно подключить 4 индикатора), в режиме 8-разрядного индикатора и в режиме 16-разрядного (оба - с выдачей недешифрированного счётчика сканирования на выводы 32-35). Значит ли это, что при 8-разрядном индикаторе старший разряд счётчика сканирования всё время находится в нулевом состоянии и клавиатура должна иметь половинный размер по сравнению с режимом 16-разрядного индикатора? Или же счётчик выдаёт все 4 разряда, но индикация на 8-разрядном индикаторе осуществляется лишь в течение половины времени сканирования? Что-то в доступной литературе ответа в явном виде не нашёл.
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

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

Post by VituZz »

Ну да, я как-то упустил, что для клавиатуры и нужно лишь три разряда от счётчика сканирования. Тогда, по всей видимости, в режиме 8-разрядного индикатора старший разряд счётчика сканирования должен быть всё время 0.
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

b2m, а нельзя ли на твоём сайте к online-ассемблеру припаять ещё справа и столбец контрольных сумм по алгоритму РК?
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

Если только опционально. Сейчас можно копировать из окна дампа online-ассемблера в окно дампа отладчика эмулятора, а если добавить что-либо, эмулятор не поймёт :)

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

Post by VituZz »

b2m wrote:Напомнишь алгоритм КС? Неохота в биосе копаться...
"...В “Радио-86РК” ... В составе стандартных подпрограмм МОНИТОРА имеется подпрограмма вычисления контрольной суммы блока. Это двухбайтовое число, причем его младший байт равен младшему байту обычной суммы всех байтов блока, а старший байт —восьмиразрядная циклическая сумма того же блока".

Взял здесь: http://retro.h1.ru/RK86/Naladka/crc.html
b2m wrote:Если только опционально.
Можно рядом с кнопкой "ASM" сделать кнопку "ASM+КС". Как вариант.
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

Готово. Бери и пользуйся :)
Но в биос всё равно пришлось залезть. Уж больно расплывчатое определение старшего байта КС.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

b2m wrote:Но в биос всё равно пришлось залезть. Уж больно расплывчатое определение старшего байта КС.
Надо же! :o А говорит, что программист. :-? Уж про младший и старший байты
КС в “Радио-86РК”- совместимых компьютерах и всем не-программистам
чётко и давно всё разжевали...
iLavr
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

b2m wrote:Готово. Бери и пользуйся :)
Спасибо! Для меня это довольно актуально! :)

П.С. Если посмотреть на тестовый пример, который находится в верхнем окошке при заходе на страничку с ассемблером, то мы видим, что он начинается с ORG 100h. В ассемблированном же коде первые команды начинаются с адреса 0000, по которому располагаются C3 07 01, то бишь JMP addr, которого в тексте программы нет. К тому же DB 'Test' получается не с 0100h, а с 0003h. Почему так? На мой взгляд, JMP в начале дампа не должно быть, а дамп должен начинаться с адреса 0100h байтами 54 65 73 74 ('Test').
Юров В.И. wrote:...компилятор позволяет при необходимости установить счётчик адреса в нужное абсолютное значение. Это делается с помощью директивы ORG
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

VituZz wrote:П.С. Если посмотреть на тестовый пример, который находится в верхнем окошке при заходе на страничку с ассемблером, то мы видим, что он начинается с ORG 100h. В ассемблированном же коде первые команды начинаются с адреса 0000
Я сделал это намеренно, т.к. люди просили, чтобы дамп из окошка можно было вставлять в отладчике эмулятора. Если сделать правильные адреса, то в эмуляторе дамп вставится не там, где курсор, а ниже (в данном случае на 100h байт).

Я добавил ещё одну опцию.
VituZz wrote:К тому же DB 'Test' получается не с 0100h, а с 0003h. Почему так? На мой взгляд, JMP в начале дампа не должно быть, а дамп должен начинаться с адреса 0100h байтами 54 65 73 74 ('Test').
Это демонстрация работы команды END, у неё есть опциональный параметр - стартовый адрес. Если его убрать, то будет так, как ты ожидаешь.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Если в последней строке дампа после ассемблирования заполнены не все 16 байт, то контрольная сумма считается так, будто до конца строки нули? Может, лучше остаток строки в режиме показа контрольных сумм заполнять FFh и считать КС с их учётом? И сама КС в строке будет в своей позиции, а не сразу за байтами дампа. Ничего, что я такой нудный? :)
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:Если в последней строке дампа после ассемблирования заполнены не все 16 байт, то контрольная сумма считается так, будто до конца строки нули? Может, лучше остаток строки в режиме показа контрольных сумм заполнять FFh и считать КС с их учётом?
Который раз замечаю твою неприязнь к "нулям"
и странную приверженность к FF-ам! :lol:



PS. Я к тому, что выровнять до конца нулями - никак не влияет на КС, а вот
FF-ы очень даже на КС влияют. Всё та же ориентировка на ПЗУ?
Last edited by Lavr on 03 Oct 2012 03:19, edited 1 time in total.
iLavr
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Это кажется мне естественным, поскольку стёртая РФ содержит код 0FFh. Зачем лишний раз без надобности записывать-стирать ячейку? Ресурс у РФок небольшой. При наборе в EDMEM я предварительно заполняю область памяти единицами, а после уже набираю дамп. Вот и получается, что до конца 256-байтного блока EDMEM показывает FF, а соответственно, и контрольные суммы строк и всего блока учитывают это заполнение.

П.С. Что-то я в своей непроходимой дремучести никак не пойму, как вставлять дамп из окошка онлайн-ассемблера в окно отладчика. В отладчике у меня ничего не хочет вставляться, в окошке с дампом можно выделять коды, но изменить ничего нельзя ни вручную, ни вставкой.
Last edited by VituZz on 03 Oct 2012 03:23, edited 1 time in total.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Я так примерно и предположил чуть выше... :wink:
iLavr
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

VituZz wrote:П.С. Что-то я в своей непроходимой дремучести никак не пойму, как вставлять дамп из окошка онлайн-ассемблера в окно отладчика. В отладчике у меня ничего не хочет вставляться, в окошке с дампом можно выделять коды, но изменить ничего нельзя ни вручную, ни вставкой.
Видимо ты пытаешься вставить в области ПЗУ. В принципе, ПЗУ тоже можно менять, но надо выбрать его после нажатия на клавиши Ctrl+M. По умолчанию выбрано "CPU memory", т.е. то, как видит эту память процессор, а процессор не может менять ячейки ПЗУ.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/