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

User Tag List

Страница 5 из 16 ПерваяПервая 123456789 ... ПоследняяПоследняя
Показано с 41 по 50 из 154

Тема: Гибридный электронный диск для ПРК ОРИОН

  1. #41
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А почему не используешь команды ВВ55, чтобы рулить отдельными битами порта С?

    - - - Добавлено - - -

    ORI 6 / XRI 6 === ANI 0F9h

    - - - Добавлено - - -

    XRI 06H; != XRI 04h & ORI 02h

  2. #42
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,220
    Спасибо Благодарностей отдано 
    475
    Спасибо Благодарностей получено 
    900
    Поблагодарили
    592 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    Arrow

    Цитата Сообщение от b2m Посмотреть сообщение
    А почему не используешь команды ВВ55, чтобы рулить отдельными битами порта С?
    У нас данность: линия А порта ВВ55 используется для передачи данных. Так придумали авторы Ориона при организации ROM-диска. У меня задача по этой "ША" гонять данные в двух направлениях: при чтении ROM/RAM в одну сторону, а при записи RAM - в другую.
    Менять назначение линий порта диска означает переписывание всего ранее созданного ПО, в т.ч. ОС и ПЗУ "Монитора" - эта затея совершенно бесперспективная, имхо.


    Цитата Сообщение от b2m Посмотреть сообщение
    XRI 06H; != XRI 04h & ORI 02h
    Смысл в следующем: нужно бит D2 сбросить, а бит D1 установить. Для этого нужно выполнить:

    Код:
    XRI 04h
    ORI 02h
    Вместо этого я одной командой убиваю двух зайцев:

    Код:
    XRI 06H
    Типа экономия двух байт


    - - - Добавлено - - -

    Цитата Сообщение от b2m Посмотреть сообщение
    ORI 6 / XRI 6 === ANI 0F9h
    Про "ANI 0F9h" не понял... В данном месте была задача сбрость биты D2 и D1 в ноль, не меняя значения остальных битов порта!

    Добавил: а, теперь въехал! Спасибо за хинт
    Последний раз редактировалось Denn; 05.08.2016 в 14:24.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  3. #43
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Denn Посмотреть сообщение
    У нас данность: линия А порта ВВ55 используется для передачи данных.
    При чём тут порт А. Я имею ввиду, чтобы изменить бит порта С (например, чтобы выдать тактовый сигнал через порт клавиатуры), не нужно его читать. Можно просто дать команду ВВ55 для изменения бита порта С.

    Цитата Сообщение от Denn Посмотреть сообщение
    Вместо этого я одной командой убиваю двух зайцев:
    Если бит D1 был установлен, то ты его этой командой только сбросишь.

    А по поводу зайцев - обрати внимание на ORI 6 / XRI 6 === ANI 0F9h

    Цитата Сообщение от Denn Посмотреть сообщение
    Про "ANI 0F9h" не понял... В данном месте была задача сбрость биты D2 и D1 в ноль, не меняя значения остальных битов порта!
    А ANI 0F9h тогда что делает?

  4. #44
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,220
    Спасибо Благодарностей отдано 
    475
    Спасибо Благодарностей получено 
    900
    Поблагодарили
    592 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    При чём тут порт А. Я имею ввиду, чтобы изменить бит порта С (например, чтобы выдать тактовый сигнал через порт клавиатуры), не нужно его читать. Можно просто дать команду ВВ55 для изменения бита порта С.
    Не понял. Поясни, плз. Как мне выборочно изменить один бит, не трогая остальные?

    - - - Добавлено - - -

    Цитата Сообщение от b2m Посмотреть сообщение
    А ANI 0F9h тогда что делает?
    Тут согласен. Отписал выше.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  5. #45
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Есть команда ВВ55 (которую нужно выдавать в порт управления): 0000NNNV, где NNN - номер бита, а V - новое значение

    Код:
    LDA PT_KBD
    ORI 04H
    STA PT_KBD
    XRI 04H
    STA PT_KBD
    можно сократить до
    Код:
    MVI A,5
    STA PT_KBD+1
    DCR A
    STA PT_KBD+1
    - - - Добавлено - - -

    Остальные биты при этом не изменятся.

  6. #46
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,220
    Спасибо Благодарностей отдано 
    475
    Спасибо Благодарностей получено 
    900
    Поблагодарили
    592 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прикольно! Не знал. Надо будет попробовать. А она в любом режиме ВВ55 работает?
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

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

  8. #47
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Только когда порт С (или его половина) на вывод. Порты А и В так менять нельзя.

  9. #48
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,220
    Спасибо Благодарностей отдано 
    475
    Спасибо Благодарностей получено 
    900
    Поблагодарили
    592 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Только когда порт С (или его половина) на вывод.
    Я имел в виду, что там же есть какой-то принципиально другой режим ВВ55-ой, который в 8-битках почему-то не используют. В подробности не вдавался, просто когда-то читал.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  10. #49
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Есть ещё стробируемый ввод/вывод. При этом часть порта С (или полностью) используется для сигналов управления. Тут лучше даташит или книжку какую почитать.
    Используется для вывода на принтер (можно даже в фоне по прерыванию), например. Но тут нужно, чтобы порт С был правильно соединен с сигналами управления принтера.

    - - - Добавлено - - -

    Ещё по поводу оптимизации:
    Код:
    DCR C
    JNZ LLL
    DCR B
    JNZ LLL
    не использует регистр A и работает быстрее, чем
    Код:
    DCX B
    MOV A,C
    ORA B
    JNZ LLL
    Но там есть подводные камни - нужно перед циклом увеличить на 1 регистр B, если он был равен нулю или регистр С был не равен нулю.

  11. #50
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,220
    Спасибо Благодарностей отдано 
    475
    Спасибо Благодарностей получено 
    900
    Поблагодарили
    592 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В практическом коде у меня сделано много оптимизаций по скорости. Вместо dcx-mov-ora просто INR L, вместо LDA/STA - LDAX/STAX, операции со стеком. Здесь просто пример кода, самый простой и прозрачный вариант для понимания принципов работы с ЭД.
    Последний раз редактировалось Denn; 05.08.2016 в 15:39.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

Страница 5 из 16 ПерваяПервая 123456789 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 12
    Последнее: 22.02.2012, 00:05
  2. Электронный диск в Spectrum 128
    от Helloween в разделе Программирование
    Ответов: 3
    Последнее: 22.08.2010, 14:34
  3. Куплю электронный диск и кассеты ПЗУ для УКНЦ
    от dk_spb в разделе Барахолка (архив)
    Ответов: 0
    Последнее: 16.08.2010, 22:15
  4. Ответов: 3
    Последнее: 25.11.2007, 01:47

Ваши права

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