nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 23 Oct 2017 18:24



Reply to topic  [ 41 posts ]  Go to page Previous  1, 2, 3  Next
Тест точности эмуляции 8080 
Author Message
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15563
Location: Colorado
Reply with quote
Post 
Shaos wrote:
b2m wrote:
У меня во всех логических операциях и даже в CMP стоит AC=0, и ничего, по крайней мере CP/M вроде без глюков работает. Так что ищи в другом месте.


А у меня C и AC нигде не трогались в неарифметических и несдвиговых местах...
Кстати CMP должна функционировать как вычитание - у меня к примеру C и AC при сравнении соответственно меняют свои значения

b2m wrote:
В Z80 действительно, почему-то, для AND должно быть AC=1 ...


И в 8085 тоже ;)
Но не в 8080 - в нём в AC кладётся ИЛИ третьих битов операндов ...


Ой, а у меня всё Ок с C и AC в логических операциях - зря на себя наговаривал ;)

P.S. Хотя в ANA B зачем-то написал C=1 - исправляюсь :)

P.P.S. Наконец-то нашёл время сделать DAA:

Code:
 case 0x27: // DAA
  timel+=4;
  if((A&0x0F)>9||a_){A+=6;a_=SH_TRUE;}
  if(((A&0xF0)>>4)>9||c_) A=plus(A,0x60); // flag C
  flag_all(A); // flags S,Z,P
  break;


P.P.P.S. Обновления выложил на CVS в SourceForge

_________________
:eugeek: https://twitter.com/Shaos1973


18 Nov 2007 22:53
Profile WWW
Banned
User avatar

Joined: 20 Mar 2005 16:41
Posts: 2152
Location: От туда
Reply with quote
Post 
Shaos wrote:
P.P.S. Наконец-то нашёл время сделать DAA:
Code:
 case 0x27: // DAA
  timel+=4;
  if((A&0x0F)>9||a_){A+=6;a_=SH_TRUE;}
  if(((A&0xF0)>>4)>9||c_) A=plus(A,0x60); // flag C
  flag_all(A); // flags S,Z,P
  break;

P.P.P.S. Обновления выложил на CVS в SourceForge

Я когда на кружке изучал ВМ80 сделал прожку, которая увеличивает регистр на 1, корректирует и выводит в хексе. Но блин почемуто он вел себя странно:
0...9 выдавал, потом 10, 11, 12, 13, 14, 15, а затем 10, 11 - 19, 20, 21, 22, 23, 24, 25 и опять 20 и т.д. Почему - хз...


19 Nov 2007 00:54
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15563
Location: Colorado
Reply with quote
Post 
HardWareMan wrote:
Shaos wrote:
P.P.S. Наконец-то нашёл время сделать DAA:
Code:
 case 0x27: // DAA
  timel+=4;
  if((A&0x0F)>9||a_){A+=6;a_=SH_TRUE;}
  if(((A&0xF0)>>4)>9||c_) A=plus(A,0x60); // flag C
  flag_all(A); // flags S,Z,P
  break;

P.P.P.S. Обновления выложил на CVS в SourceForge

Я когда на кружке изучал ВМ80 сделал прожку, которая увеличивает регистр на 1, корректирует и выводит в хексе. Но блин почемуто он вел себя странно:
0...9 выдавал, потом 10, 11, 12, 13, 14, 15, а затем 10, 11 - 19, 20, 21, 22, 23, 24, 25 и опять 20 и т.д. Почему - хз...


а не могла твоя подпрограмма вывода хекса флаги CY и AC сбивать?
или коррекция делалась не через DAA, а "вручную", но с ошибкой?

_________________
:eugeek: https://twitter.com/Shaos1973


19 Nov 2007 01:18
Profile WWW
Banned
User avatar

Joined: 20 Mar 2005 16:41
Posts: 2152
Location: От туда
Reply with quote
Post 
Shaos wrote:
HardWareMan wrote:
Shaos wrote:
P.P.S. Наконец-то нашёл время сделать DAA:
Code:
 case 0x27: // DAA
  timel+=4;
  if((A&0x0F)>9||a_){A+=6;a_=SH_TRUE;}
  if(((A&0xF0)>>4)>9||c_) A=plus(A,0x60); // flag C
  flag_all(A); // flags S,Z,P
  break;

P.P.P.S. Обновления выложил на CVS в SourceForge

Я когда на кружке изучал ВМ80 сделал прожку, которая увеличивает регистр на 1, корректирует и выводит в хексе. Но блин почемуто он вел себя странно:
0...9 выдавал, потом 10, 11, 12, 13, 14, 15, а затем 10, 11 - 19, 20, 21, 22, 23, 24, 25 и опять 20 и т.д. Почему - хз...


а не могла твоя подпрограмма вывода хекса флаги CY и AC сбивать?
или коррекция делалась не через DAA, а "вручную", но с ошибкой?

Нет. Подозреваю, что вместо ADD я делал INC, поэтому. Так что DAA у 8080 хреновый. Кстати, флага N как бы и вообще нету, так что корекция работает тока на ADD, на SUB ничего не работает. :(


19 Nov 2007 03:02
Profile
Writer

Joined: 05 Oct 2007 11:09
Posts: 11
Location: 91.124.79.227
Reply with quote
Post 
Возможно заинтересует эта тема http://zx.pk.ru/showthread.php?t=9826


26 Mar 2009 19:52
Profile
Junior

Joined: 15 Jun 2009 03:02
Posts: 4
Location: 77.232.145.63
Reply with quote
Shaos wrote:
Кто-то может поделиться программой (ассемблерный код или программа для РК,Ориона,Специалиста и т.д.) для проверки точности эмуляции процессора КР580ВМ80А (8080)? У меня есть собственный код эмуляции, но на нём не все программы корректно работают, хотелось бы отыскать проблему, которая судя по всему находится в реализации ядра процессора.

У меня есть ассемблерный код для тестирования процессора 8086 (8088). Он и флаги тестирует. Можно переделать под 8080.


19 Jun 2009 04:57
Profile
Doomed

Joined: 26 May 2003 09:57
Posts: 599
Reply with quote
Post 
Есть готовый тест, очень качественный, но нужно сравнивать с реальным процессором, т.к. эталонных значений в самом тесте почему-то нет. Подробнее тут: http://zx.pk.ru/showthread.php?t=9826&page=7

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


19 Jun 2009 05:18
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
Post DAA
Что-то мне кажется где-то здесь говорили (может в недокументированных командах), что DAA в принципе в К580
работает неверно - глючит при вычитании что-ли...
А в Z80 - она вроде как исправлена...
И помнится мне был тест для Ориона, который как раз различает
Z80 и К580 по какой-то команде реализованной по-разному...

PS. А вобще - интересный тест - посмотрел я... :lol:

Quote:
но в регистре флагов тест иногда хочет видеть нереальные значения


15 Dec 2009 11:56
Profile
Retired

Joined: 04 Aug 2003 01:37
Posts: 1483
Location: Moscow
Reply with quote
Lavr wrote:
Что-то мне кажется где-то здесь говорили (может в недокументированных командах), что DAA в принципе в К580
работает неверно


Не то чтобы неверно, скорее иначе :) Сам видел сравнение работы DAA этих процессоров в старой буржуйской книжке по программированию на ассемблере для тех, кто переходит с 8080 на Z80.

_________________
Extreme Entertainment


20 Dec 2009 18:55
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15563
Location: Colorado
Reply with quote
Lavr wrote:
Что-то мне кажется где-то здесь говорили (может в недокументированных командах), что DAA в принципе в К580
работает неверно - глючит при вычитании что-ли...]


DAA работает верно, но только после сложения - про это во всех справочниках говорится :)

_________________
:eugeek: https://twitter.com/Shaos1973


20 Dec 2009 19:48
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
А существует какой-либо стандартный тест или схема, если я хочу проверить
до какой тактовой частоты разгонится отдельный экземпляр К580ВМ80 ?


11 Feb 2011 21:20
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
Post 
A вот этот тест всёж кто-либо пробовал?

http://www.sunhillow.eu/8080exerciser/


12 Jun 2011 09:03
Profile
Writer

Joined: 05 Oct 2007 11:09
Posts: 11
Location: 91.124.79.227
Reply with quote
Post 
Lavr wrote:
A вот этот тест всёж кто-либо пробовал?

http://www.sunhillow.eu/8080exerciser/


Более чем два года назад в этой же теме семью сообщениями ранее я давал ссылку http://zx.pk.ru/showthread.php?t=9826
( http://zx.pk.ru/showpost.php?p=192286&postcount=82 )

Я прогнал этот тест на реальном ВМ80А, см. таблицу Result (1). По результатам прогона была доработан процессор в эмуляторе b2m.


20 Jun 2011 08:13
Profile
Banned
User avatar

Joined: 20 Mar 2005 16:41
Posts: 2152
Location: От туда
Reply with quote
Post 
А давайте сведем в таблицу формирование всех флагов для ВМ80А и Z80. Как смотрите на это?

Киса, ку-ку!


20 Jun 2011 10:31
Profile
Banned
User avatar

Joined: 20 Mar 2005 16:41
Posts: 2152
Location: От туда
Reply with quote
Post 
Народ, я конечно понимаю, что никто тут не страдает некрофилией, но давайте все же поставим точку в этом треде. Я же не просто так спрашиваю об сводной таблице реального формирования флагов для ВМ80/Z80 здесь: эмулятор писать мне не надо. Эта инфа будет задействована для исправления и адаптации программ под Z80 на Спеце, которые на нем не работают. Адаптацию делать я буду сам, но я не вижу картины в разрезе, а собирать информацию по частям я наверное буду слишком долго. Плюс часть ее тут замалчивается как очевидная. Давайте стремится к законченности в любой информационной ветке!


22 Jun 2011 15:26
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 41 posts ]  Go to page Previous  1, 2, 3  Next

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.