FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups nedoPC.org  
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
 RegisterRegister 
 
Тест точности эмуляции 8080
Goto page Previous  1, 2
 
Post new topic   Reply to topic    nedoPC.org Forum Index -> Emu80

Shaos Reply with quote
Admin


Joined: 09 Jan 2003
Posts: 5536
Location: New York, USA

PostPosted: 18 Nov 2007 22:53    Post subject:
 
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
_________________
Shaos / nedoPC team
Back to top
View user's profile Send private message Send e-mail Visit poster's website

HardWareMan Reply with quote
God


Joined: 20 Mar 2005
Posts: 1011
Location: РК, Павлодар

PostPosted: 19 Nov 2007 00:54    Post subject:
 
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 и т.д. Почему - хз...
Back to top
View user's profile Send private message

Shaos Reply with quote
Admin


Joined: 09 Jan 2003
Posts: 5536
Location: New York, USA

PostPosted: 19 Nov 2007 01:18    Post subject:
 
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, а "вручную", но с ошибкой?
_________________
Shaos / nedoPC team
Back to top
View user's profile Send private message Send e-mail Visit poster's website

HardWareMan Reply with quote
God


Joined: 20 Mar 2005
Posts: 1011
Location: РК, Павлодар

PostPosted: 19 Nov 2007 03:02    Post subject:
 
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 ничего не работает.
Back to top
View user's profile Send private message

Tim0xA Reply with quote
Junior


Joined: 05 Oct 2007
Posts: 8
Location: 91.124.79.227

PostPosted: 26 Mar 2009 19:52    Post subject:
 
Возможно заинтересует эта тема http://zx.pk.ru/showthread.php?t=9826
Back to top
View user's profile Send private message

SoftCat Reply with quote
Junior


Joined: 15 Jun 2009
Posts: 4
Location: 77.232.145.63

PostPosted: 19 Jun 2009 04:57    Post subject: Re: Тест точности эмуляции 8080
 
Shaos wrote:
Кто-то может поделиться программой (ассемблерный код или программа для РК,Ориона,Специалиста и т.д.) для проверки точности эмуляции процессора КР580ВМ80А (8080)? У меня есть собственный код эмуляции, но на нём не все программы корректно работают, хотелось бы отыскать проблему, которая судя по всему находится в реализации ядра процессора.

У меня есть ассемблерный код для тестирования процессора 8086 (8088). Он и флаги тестирует. Можно переделать под 8080.
Back to top
View user's profile Send private message

b2m Reply with quote
Senior


Joined: 26 May 2003
Posts: 125

PostPosted: 19 Jun 2009 05:18    Post subject:
 
Есть готовый тест, очень качественный, но нужно сравнивать с реальным процессором, т.к. эталонных значений в самом тесте почему-то нет. Подробнее тут: http://zx.pk.ru/showthread.php?t=9826&page=7
_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
Back to top
View user's profile Send private message Visit poster's website

Lavr Reply with quote
Maniac


Joined: 21 Oct 2009
Posts: 223
Location: Россия

PostPosted: 15 Dec 2009 11:56    Post subject: DAA
 
Что-то мне кажется где-то здесь говорили (может в недокументированных командах), что DAA в принципе в К580
работает неверно - глючит при вычитании что-ли...
А в Z80 - она вроде как исправлена...
И помнится мне был тест для Ориона, который как раз различает
Z80 и К580 по какой-то команде реализованной по-разному...

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

Quote:
но в регистре флагов тест иногда хочет видеть нереальные значения
Back to top
View user's profile Send private message

Mac Buster Reply with quote
God


Joined: 04 Aug 2003
Posts: 1006
Location: Moscow

PostPosted: 20 Dec 2009 18:55    Post subject: Re: DAA
 
Lavr wrote:
Что-то мне кажется где-то здесь говорили (может в недокументированных командах), что DAA в принципе в К580
работает неверно


Не то чтобы неверно, скорее иначе Сам видел сравнение работы DAA этих процессоров в старой буржуйской книжке по программированию на ассемблере для тех, кто переходит с 8080 на Z80.
_________________
Extreme Entertainment
Back to top
View user's profile Send private message Visit poster's website

Shaos Reply with quote
Admin


Joined: 09 Jan 2003
Posts: 5536
Location: New York, USA

PostPosted: 20 Dec 2009 19:48    Post subject: Re: DAA
 
Lavr wrote:
Что-то мне кажется где-то здесь говорили (может в недокументированных командах), что DAA в принципе в К580
работает неверно - глючит при вычитании что-ли...]


DAA работает верно, но только после сложения - про это во всех справочниках говорится
_________________
Shaos / nedoPC team
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Post new topic   Reply to topic    nedoPC.org Forum Index -> Emu80
Goto page Previous  1, 2
Page 2 of 2

Choose Display Order
Display posts from previous:   
User Permissions
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 vote in polls in this forum

 
Jump to:  


Skin Created by Sigma12 and modified by Shaos
Powered by phpBB © 2001-2005 phpBB Group