| |
| Shaos |
|
Admin

Joined: 09 Jan 2003 Posts: 5536 Location: New York, USA
|
Posted: 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 |
|
| HardWareMan |
|
God

Joined: 20 Mar 2005 Posts: 1011 Location: РК, Павлодар
|
Posted: 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 |
|
| Shaos |
|
Admin

Joined: 09 Jan 2003 Posts: 5536 Location: New York, USA
|
Posted: 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 |
|
| HardWareMan |
|
God

Joined: 20 Mar 2005 Posts: 1011 Location: РК, Павлодар
|
Posted: 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 |
|
| Tim0xA |
|
Junior
Joined: 05 Oct 2007 Posts: 8 Location: 91.124.79.227
|
|
| Back to top |
|
| SoftCat |
|
Junior
Joined: 15 Jun 2009 Posts: 4 Location: 77.232.145.63
|
Posted: 19 Jun 2009 04:57 Post subject: Re: Тест точности эмуляции 8080 |
| |
| Shaos wrote: | | Кто-то может поделиться программой (ассемблерный код или программа для РК,Ориона,Специалиста и т.д.) для проверки точности эмуляции процессора КР580ВМ80А (8080)? У меня есть собственный код эмуляции, но на нём не все программы корректно работают, хотелось бы отыскать проблему, которая судя по всему находится в реализации ядра процессора. |
У меня есть ассемблерный код для тестирования процессора 8086 (8088). Он и флаги тестирует. Можно переделать под 8080. |
|
| Back to top |
|
| Lavr |
|
Maniac

Joined: 21 Oct 2009 Posts: 223 Location: Россия
|
Posted: 15 Dec 2009 11:56 Post subject: DAA |
| |
Что-то мне кажется где-то здесь говорили (может в недокументированных командах), что DAA в принципе в К580
работает неверно - глючит при вычитании что-ли...
А в Z80 - она вроде как исправлена...
И помнится мне был тест для Ориона, который как раз различает
Z80 и К580 по какой-то команде реализованной по-разному...
PS. А вобще - интересный тест - посмотрел я...
| Quote: | | но в регистре флагов тест иногда хочет видеть нереальные значения |
|
|
| Back to top |
|
| Mac Buster |
|
God

Joined: 04 Aug 2003 Posts: 1006 Location: Moscow
|
Posted: 20 Dec 2009 18:55 Post subject: Re: DAA |
| |
| Lavr wrote: | Что-то мне кажется где-то здесь говорили (может в недокументированных командах), что DAA в принципе в К580
работает неверно |
Не то чтобы неверно, скорее иначе Сам видел сравнение работы DAA этих процессоров в старой буржуйской книжке по программированию на ассемблере для тех, кто переходит с 8080 на Z80. _________________ Extreme Entertainment |
|
| Back to top |
|
| Shaos |
|
Admin

Joined: 09 Jan 2003 Posts: 5536 Location: New York, USA
|
Posted: 20 Dec 2009 19:48 Post subject: Re: DAA |
| |
| Lavr wrote: | Что-то мне кажется где-то здесь говорили (может в недокументированных командах), что DAA в принципе в К580
работает неверно - глючит при вычитании что-ли...] |
DAA работает верно, но только после сложения - про это во всех справочниках говорится  _________________ Shaos / nedoPC team |
|
| Back to top |
|
| Choose Display Order |
|
| 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
|
Skin Created by Sigma12 and modified by Shaos Powered by phpBB © 2001-2005 phpBB Group
|
 |