Важная информация

User Tag List

Страница 2 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 11 по 20 из 51

Тема: Совместимость Z80 и i8080 (580ВМ80)

  1. #11
    Master
    Регистрация
    11.04.2006
    Адрес
    Novosibirsk
    Сообщений
    966
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    А что он тогда делает на КР580ВМ80А
    Сыплю голову пеплом. Точно есть. Другое дело что оно правильно работает только при сложении, то есть не работает как флаг полузаема. И его состояние кажется вообще определено только после команды ADD, хотя инкремент-декремент тоже его состояние меняют. Я помню что сроду им не пользовался никогда...
    Последний раз редактировалось ram_scan; 10.11.2014 в 06:27.

  2. #12
    Banned
    Регистрация
    04.03.2010
    Адрес
    Россия. Пятигорск.
    Сообщений
    2,296
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А как же операции сравнения CPM, CPI, десятичной коррекции DAA, уеньшения на единицу DCR, DCX, увеличения на единицу. Он так же устанавливается.

    И вообще впервые слышу, что он не корректно работает с командами SUB, SUI, SBB, SBI.

  3. #13
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,842
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,814
    Поблагодарили
    1,043 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    И есть разница в работе команды DAA, у 8080 там есть "не глюк, а фишка". У Z80 оно было исправлено, но некоторые бейсики для 8080 потом не могли нормально работать на Z80, пока не пропатчишь эту команду.
    Если речь про бейсики для советских компов, базирующиеся на Altair Basic (их подавляющее большинство - на РК-подобных, специалисте, орионе, векторе, львове, ПК8000 и других), то тема обсуждалась много раз, на нескольких форумах, в т.ч. на zx-pk.ru. Там дело не в DAA, а в флаге четности (в двух местах), который в z80 еще и флаг переполнения.

  4. #14
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ivagor, поверю, ты в барсиках разбираешься
    А хрень с командой DAA неожиданно отловилась даже в Мониторе "ЮТ-88", писалось в соответствующей теме. Часы улетали в космос, если использовать в программе юзера прерывания. Там как раз не хватало команды для устаканивания работы DAA, которая учавствует в подсчете времени.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  5. #15
    Banned
    Регистрация
    04.03.2010
    Адрес
    Россия. Пятигорск.
    Сообщений
    2,296
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    Там как раз не хватало команды для устаканивания работы DAA, которая учавствует в подсчете времени.
    Ну так объясни в трёх словах, по возможности, что там не так, и это только с командой DAA или со всеми остальными так же, а то я что-то не в курсе.

  6. #16
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,842
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,814
    Поблагодарили
    1,043 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    А хрень с командой DAA неожиданно отловилась даже в Мониторе "ЮТ-88", писалось в соответствующей теме. Часы улетали в космос, если использовать в программе юзера прерывания. Там как раз не хватало команды для устаканивания работы DAA, которая учавствует в подсчете времени.
    На векторе, кстати, есть еще как минимум пара игрушек, раскодировщики которых не работали на z80. В одной из них содержимое регистра флагов использовалось как часть адреса перехода (раскопал Ramiros). Наверняка есть еще примеры программ под советские компы на ВМ80, которые не работают на Z80

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    На векторе, кстати, есть еще как минимум пара игрушек, раскодировщики которых не работали на z80. В одной из них содержимое регистра флагов использовалось как часть адреса перехода (раскопал Ramiros). Наверняка есть еще примеры программ под советские компы на ВМ80, которые не работают на Z80
    Встречался с таким на специалисте

  9. #18
    Master
    Регистрация
    11.04.2006
    Адрес
    Novosibirsk
    Сообщений
    966
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    На векторе, кстати, есть еще как минимум пара игрушек, раскодировщики которых не работали на z80. В одной из них содержимое регистра флагов использовалось как часть адреса перехода (раскопал Ramiros). Наверняка есть еще примеры программ под советские компы на ВМ80, которые не работают на Z80
    Это запрещенный прием программирования.

    Не, никто не запрещает написать программу именно так. Но потом не надо удивляться, что на формально совместимом процессоре она не выполняется. Такой прием можно еще оправдать, когда реально не хватает двух байт памяти или черырех тактов чтобы во время уложиться. Но по моему опыту большинство таких приемов применяется "смотрите пацаны как я могу".

    По документации есть "неопределенное" значение флагов. "Неопределенное" это не значит что никто не знает что на вот этом конкретном процессоре какое именно. Это не "неизвестное". Это "не регламентируется". Это значит что завтра появится совместимый процессор у которого "неопределенное" поведение отличается (имеет кстати полное право) который ведет себя по другому, и вам придется софт переписывать.

    Что касается DAA. Открываем фирменный мануал "8080/8085 assembly language programming manual (c) 1977, 1978, 1979, 1981 Intel corporation" и читаем там дословно на странице 3-18 : DAA used when adding decimal numbers. Надо после вычитания использовать - добавьте ноль и потом используйте. Или дополните до двойки и складывайте.

    И основные грабли там закопаны в том что флаг полупереноса не работает как флаг полузаема (а в Z80 работает). Только справа налево.

    Кстати INR не модифицирует CF, поэтому при инкременте можно тоже багов выгребсти при десятичной коррекции чисел шире двух знаков. Только сложение и только хардкор.

    Так что все вопросы задавайте товарищам которые используют DAA после инкремента-декремента-вычитания и "у них все работает".

    8085 еще и при логических операциях по другому AC модифицирует чем i8080. То есть даже при переносе с 8080 на 8085 если на даташит не оглядываться то можно с DAA "багов выгребсти".

    А так да, можно написать программу которая работает на Z80 и не работает на Т34. Примеры были.

    Программ которые работали на 8086 и не работали на 80286 вообще валом. Причем написанных в строгом соответствии с документацией. В 80286 просто появился конвейер предвыборки, поэтому модификация кода "прямо перед собой" стала работать только при определенных условиях. Если модифицированная команда уже прошла предвыборку - финита ля комедиа. Выполнится не то что в память положено.
    Последний раз редактировалось ram_scan; 10.11.2014 в 17:39.

  10. #19
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Ну так объясни в трёх словах, по возможности, что там не так, и это только с командой DAA или со всеми остальными так же, а то я что-то не в курсе.
    Тут уже все рассказали
    А вкратце - перед командой DAA лучше давать кукую-нить холостую команду для сброса флага, типа ORA. Я уже не помню нюансов, но вроде как она выручала. Там вначале прерывания и до DAA небыло никаких арифметических команд, и если программа юзера что-то там высчитывала, то DAA давала неверный результат. Типа 78 часов 95 минут 86 секунд
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  11. #20
    Master
    Регистрация
    11.04.2006
    Адрес
    Novosibirsk
    Сообщений
    966
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    А вкратце - перед командой DAA лучше давать кукую-нить холостую команду для сброса флага, типа ORA.
    Коллега, ну прочтите вы в даташите уже как на 8080 DAA работает. С ORA вы граблей точно так-же выгребете.

    Только операция сложения для DAA правильно все флаги ставила. И это в доке английским по белому написано.

    Я поэтому кстати про флаг AC и забыл. Ибо единственная команда на которую он влияет DAA, а единственная команда после которой он (и перенос) правильно стоит - сложение, и напрямую флаг AC нигде не доступен. Его во флаговый регистр вообще можно бы было не выносить.
    Последний раз редактировалось ram_scan; 10.11.2014 в 18:13.

Страница 2 из 6 ПерваяПервая 123456 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Родословная бейсиков для 580ВМ80
    от esl в разделе Разное
    Ответов: 102
    Последнее: 13.03.2024, 10:05
  2. Ответов: 54
    Последнее: 17.12.2018, 01:35
  3. Комманды ассемблера/коды i8080/КР580ВМ80А
    от sergey2b в разделе Разное
    Ответов: 4
    Последнее: 29.11.2015, 14:01
  4. Эмулятор i8080
    от Higgins в разделе Разное
    Ответов: 2
    Последнее: 20.05.2011, 11:43

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •