User Tag List

Показано с 1 по 10 из 51

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,392
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  3. #2

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

    По умолчанию

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

  4. #3

    Регистрация
    11.04.2006
    Адрес
    Novosibirsk
    Сообщений
    971
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    9 сообщений
    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.

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

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

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

Похожие темы

  1. Родословная бейсиков для 580ВМ80
    от esl в разделе Разное
    Ответов: 103
    Последнее: 04.10.2025, 13:00
  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

Ваши права

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