User Tag List

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

Тема: Вопросы программирования на ПЭВМ "ИРИША", "ИРИША-Л" и "ИРИША-М"

Древовидный режим

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

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

    По умолчанию

    Viktor2312, Сейчас объясню

    ---------- Post added at 22:35 ---------- Previous post was at 22:27 ----------

    У Ириши нет текстового экрана
    под текстовым я имею в виду экран в котором один байт в памяти отображает 1 байт на экране, это как текстовый режим при старте биоса на IBM
    у Ириши есть ТОЛЬКО графические режимы
    по этому биос должен "нарисовать" на экране символ который хочет напечатать пользователь
    при этом где-то это или 40 или 80 байт в строку
    или 1 или 2 бита на пиксель

    чтоб не заводить кучу специальных функций для вывода в разные режимы есть только одна но универсальная
    биос знает в каком режиме сейчас экран (т.к. он считает что кроме него переключить не может ни кто другой)
    и в зависимости от этих знаний он и рисует символы на экране
    поэтому когда Вы сменили режим экрана на другой через OUT биос уже не правильно отображает символы, т.к. он думает что все по старому а оно уже не соответсвует реальности

    ---------- Post added at 22:41 ---------- Previous post was at 22:35 ----------

    ESC последовательности это управляющие последовательности при выводе строки
    ESC это от название первого символа последовательности с кодом (ASCII decimal 27/hex 0x1B/octal 033)
    вызываем функцию печати строки
    и если в ней есть последовательность начинающаяся с ESC то делаем некие управляющие действия

    в частности для ириши можно управлять режимом экрана
    Управляющая последовательность ESC+Q+MODE
    mode описан в 9.13
    при переключении через последовательности биос ЗНАЕТ как надо скоректировать внутренние переменные и после такого переключения отображение символов происходит нормально

    примеры

    ---------- Post added at 22:43 ---------- Previous post was at 22:41 ----------

    эмулятор b2m -> reset
    стартуем в первом режиме
    можем поменять цвет
    O7,D9 -> белые буквы на черном фоне

    ---------- Post added at 22:55 ---------- Previous post was at 22:43 ----------

    заполняем экран -> D0
    переключаемся в 3й режим
    последовательно нажимаем ESC Q #
    наблюдаем призабавную картинку
    наш дамп превратился в кашу т.к. теперь старое содержимое экрана интрепретируется уже в соответсвии с другим режимом

    ID8 -> 10001010 (0x8A)
    заполняем экран -> D0

    переключаемся в режим 2
    ESC Q "
    переключаем цвет на нормальный O2,D9
    Id8 -> 10011010 (0x9a)
    D0

    после этого можно переключиться опять в режим 1
    ESC Q !

    и видно что в этом режиме строка занимает 40 байт а не 80 как во 2м и 3м (символы на экране через строку)

    в общем все в порядке

    ---------- Post added at 23:17 ---------- Previous post was at 22:55 ----------

    собственно вот обработчик ESQ-Q

    Код:
    RAM:2612 __ESC_Q_CMD:                            ; DATA XREF: RAM:_ESC_Qo
    RAM:2612                 and     10h
    RAM:2614                 ld      a, 0
    RAM:2616                 jp      nz, loc_2627
    RAM:2619                 ld      a, c
    RAM:261A                 and     3
    RAM:261C                 ld      hl, unk_2630
    RAM:261F                 ld      e, a
    RAM:2620                 ld      d, 0
    RAM:2622                 add     hl, de
    RAM:2623                 ld      a, 11101100b
    RAM:2625                 and     c
    RAM:2626                 or      (hl)
    RAM:2627
    RAM:2627 loc_2627:                               ; CODE XREF: RAM:2616j
    RAM:2627                 ld      (_ConOut_Mode), a
    RAM:262A                 call    __RestoreDefConout
    RAM:262D                 jp      _ConOut_FixScreenVar
    RAM:262D ; ---------------------------------------------------------------------------
    RAM:2630 unk_2630:       db    0                 ; DATA XREF: RAM:261Co
    RAM:2631                 db  10h
    RAM:2632                 db    1
    RAM:2633                 db    2
    т.е. перекодируем 0,1 биты

    вставлю в мнемонике i8080
    Код:
    RAM:2612 __ESC_Q_CMD:                            ; DATA XREF: RAM:_ESC_Q_SetMODEo
    RAM:2612                 ani     10h
    RAM:2614                 mvi     a, 0
    RAM:2616                 jnz     loc_2627
    RAM:2619                 mov     a, c
    RAM:261A                 ani     3
    RAM:261C                 lxi     h, unk_2630
    RAM:261F                 mov     e, a
    RAM:2620                 mvi     d, 0
    RAM:2622                 dad     d
    RAM:2623                 mvi     a, 11101100b
    RAM:2625                 ana     c
    RAM:2626                 ora     m
    RAM:2627
    RAM:2627 loc_2627:                               ; CODE XREF: RAM:2616j
    RAM:2627                 sta     _ConOut_Mode
    RAM:262A                 call    __RestoreDefConout
    RAM:262D                 jmp     _ConOut_FixScreenVar
    RAM:262D ; ---------------------------------------------------------------------------
    RAM:2630 unk_2630:       .db    0                ; DATA XREF: RAM:261Co
    RAM:2631                 .db  10h
    RAM:2632                 .db    1
    RAM:2633                 .db    2
    Последний раз редактировалось esl; 14.11.2011 в 02:31.

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

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

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

Похожие темы

  1. Ответов: 28
    Последнее: 27.11.2025, 06:50
  2. FAQ по ПЭВМ "ИРИША", "ИРИША-Л" и "ИРИША-М"
    от Viktor2312 в разделе Ириша
    Ответов: 8
    Последнее: 26.11.2025, 11:33
  3. Ответов: 14
    Последнее: 14.11.2012, 21:53
  4. Ответов: 42
    Последнее: 15.06.2012, 07:51
  5. В помощь собирающим ПЭВМ "Ириша-М". Продажа
    от Viktor2312 в разделе Барахолка (архив)
    Ответов: 13
    Последнее: 08.06.2011, 17:30

Ваши права

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