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

User Tag List

Страница 3 из 10 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 97

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

  1. #21
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    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.

  2. #22
    Veteran Аватар для KokaF77
    Регистрация
    22.09.2010
    Адрес
    Крымск
    Сообщений
    1,151
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    esl, поясни, пожалуйста, а как быть с соответствием рисунку 9.13 символов: #, ", !. Что-то здесь не вяжется.
    Разыскиваю всё, что связано с ПЭВМ "Ириша".

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

    По умолчанию

    как это не вяжется
    ну ошибка там одна точно есть

    ESC Q ' ' (0x20 пробел) режим 1 0 страница
    ESC Q ! (0x21 !) режим 1 1 страница
    ESC Q " (0x22 ") режим 2
    ESC Q # (0x23 #) режим 3

    нас интересуют 2 младших бита
    они и переключают режим
    Последний раз редактировалось esl; 14.11.2011 в 01:45.

  4. #24
    Veteran Аватар для KokaF77
    Регистрация
    22.09.2010
    Адрес
    Крымск
    Сообщений
    1,151
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    т.е.
    Спасибо! Но я про биты "MODE".

    Параметр последовательности "ESC+Q" и "MODE" не одно и то же, я об этом.
    Последний раз редактировалось KokaF77; 14.11.2011 в 01:57.
    Разыскиваю всё, что связано с ПЭВМ "Ириша".

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

    По умолчанию

    точно, исправил

    в коде выше видно что ESQ Q "почти" напрямую копируется в MODE (FF45)
    как в табличке 9.13

    Код:
    ESC Q ' ' (0x20 пробел) режим 1 0 страница mode=0x20
    ESC Q ! (0x21 !) режим 1 1 страница mode=0x30
    ESC Q " (0x22 ") режим 2 mode=0x21
    ESC Q # (0x23 #) режим 3 mode=0x22
    0X20 тут как раз от кода символа и по таблице "вкл динамич сдвиг маски"
    оно нам не мешает

    ESC Q A - 0x41 - режим 1 1 страница mode
    ну и т.д.

    очередной баг в книге
    параметр ESC Q не просто копируется в MODE
    а
    если стоит бит 0x10 (page)то копируем напрямую
    иначе отдельно парсим 2 первых бита и уже модифицированное значение пишем в MODE
    Последний раз редактировалось esl; 14.11.2011 в 02:01.

  6. #26
    Veteran Аватар для KokaF77
    Регистрация
    22.09.2010
    Адрес
    Крымск
    Сообщений
    1,151
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    ESC Q A - 0x41 - режим 1 1 страница mode
    Если сделать так, интересный фокус случается: включается 20 строк, и курсор "мутирует". Если затем ввести ESC Q ! - всё возвращается на свои места. Можешь проверить.
    Разыскиваю всё, что связано с ПЭВМ "Ириша".

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

    По умолчанию

    бит 40 отвечает за 20/25 строк на экране

    читаем стр 90

    в режиме 25 строк - символ 8 строк и курср инверсный симво и
    в 20 символ 10 строу и курсор 2 нижних строки

    все ок

    почему не используем весь экран - не знаю, надо код дальше копать

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

    По умолчанию

    сделай D0 в обеих режимах и увидишь разницу

    похоже что высоту символов биос поменял а кол-во строк на экране забыл

    на скриншотах подтверждение

    Ctrl+L
    Enter
    D0

    в ESQA остался хвост от ESQ! но влезло ровно столько же
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	Screen Shot 2011-11-14 at 0.24.26.png 
Просмотров:	230 
Размер:	15.6 Кб 
ID:	30789   Нажмите на изображение для увеличения. 

Название:	Screen Shot 2011-11-14 at 0.24.57.png 
Просмотров:	221 
Размер:	15.8 Кб 
ID:	30790  

  9. #29
    Veteran Аватар для KokaF77
    Регистрация
    22.09.2010
    Адрес
    Крымск
    Сообщений
    1,151
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо, пояснил. Я на промежуток между строками не обратил внимания.

    ---------- Post added at 02:32 ---------- Previous post was at 02:28 ----------

    Интересно, что это за баг?
    Разыскиваю всё, что связано с ПЭВМ "Ириша".

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

    По умолчанию

    скорее всего баг
    т.к. в книге этот режим называется 25 строк

    сколько ж там похоже "багов", во всем

Страница 3 из 10 ПерваяПервая 1234567 ... ПоследняяПоследняя

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

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

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

Похожие темы

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

Ваши права

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