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

User Tag List

Страница 1 из 14 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 140

Тема: Реконструкция CGLIB для использования из OMSI Pascal

  1. #1
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,596
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Реконструкция CGLIB для использования из OMSI Pascal

    Я здесь решил немного поковырять УК-НЦ. Уже рисую из Паскаля точки :-)



    Я реконструирую графическую библиотеку CGLIB и попутно адаптирую её для работы с кодом на OMSI Pascal. Выбор этого Паскаля оправдан тем, что на нём получаются самые маленькие .SAV (3 блока для пустой программы).

    Трудности: в приложенном Хоботом архиве описание версии 2.01, а сам объектник - версии 1.0. В описании есть такие процедуры (а кода для них в объектнике нет):

    int Palette(int n)

    Функция устанавливает палитру из стандартного набора. В стандартном
    наборе имеется 4 палитры, соответствие логического цвета
    и физического цвета приведено ниже. 0<=n<=3.
    Стандартные палитры:
    Палитра 0: 0 -- черный
    1 -- зеленый
    2 -- красный
    3 -- желтый
    Палитра 1: 0 -- синий
    1 -- голубой
    2 -- фиолетовый
    3 -- белый
    Палитра 2: 0 -- черный
    1 -- темно-зеленый
    2 -- темно-красный
    3 -- коричневый
    Палитра 3: 0 -- темно-синий
    1 -- темно-голубой (серый)
    2 -- темно-фиолетовый
    3 -- бледно-белый

    int SetPalette(int c0, c1, c2, c3)

    Функция позволяет создавать произвольную палитру. Числа c0,c1,c2,c3
    представляют собой последовательность физических номеров в палитре,
    при этом 0<=cN<=15. c0 - номер физ.цвета с лог.номером 0, c1 - номер
    физ.цвета с лог.номером 1 и т.д. Соответствие физ.номеров цветам:
    0 -- черный
    1 -- темно-синий
    2 -- темно-зеленый
    3 -- серый
    4 -- темно-красный
    5 -- темно-фиолетовый
    6 -- коричневый
    7 -- бледно-белый
    8 -- черный
    9 -- синий
    10-- зеленый
    11-- голубой
    12-- красный
    13-- фиолетовый
    14-- желтый
    15-- белый
    Нужно повторить функциональность этих двух процедур на асме.

    P.S. Форум на тему изменения палитр смотрел. Г-н Зимин устанавливает их по-холодному через Esc-последовательности (а нам нужна горячая замена на лету, как я понимаю). А работать с ячейками 2470 и 2472 у меня не получилось. Код ничего не делает:

    Код:
    PROCEDURE Palette; (* Здесь по идее палитра обнуляется во все чёрные цвета *)
    BEGIN /*$C
        MOV     #^O2470, R0
        CLR     R0
        CLR     2(R0)
    */
    END {Palette};
    Вообще при обращении к этим ячейкам ничего не происходит. Вот такая команда, предложенная S_V_B для перевода в 320 строк, тоже ничего не делает:

    Код:
    BIS #20,@#2462
    Что я делаю не так? Буду рад любой помощи.
    Последний раз редактировалось Oleg N. Cher; 03.03.2020 в 22:08.

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

  3. #2
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Что я делаю не так? Буду рад любой помощи.
    Ваша программа исполняется в ОЗУ центрального процессора, а данные ячейки находятся в ОЗУ периферийного процессора. Так что лучше Esc-последовательностями.

  4. Этот пользователь поблагодарил Alex_K за это полезное сообщение:

    Oleg N. Cher (03.03.2020)

  5. #3
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,596
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А какими последовательностями меняется палитра? Смотрел в исходники игр Никиты Зимина, там почти нихрена не понял ;-)
    Или ткните доку, где почитать про палитры.

  6. #4
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,996
    Спасибо Благодарностей отдано 
    1,061
    Спасибо Благодарностей получено 
    1,224
    Поблагодарили
    478 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В оглавлении хламника Хобота есть вот такой файл, может это оно?
    CGLIB .OBJ 29 12-Jul-1991 14'848
    Указано что он на диске ukncbtlwebcomplekt\VAMOS_C_BOOT\disk30_cc.BOOT.dsk , но самого диска я не нашёл.

    - - - Updated - - -

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    А какими последовательностями меняется палитра? Смотрел в исходники игр Никиты Зимина, там почти нихрена не понял ;-)
    Или ткните доку, где почитать про палитры.
    http://www.emuverse.ru/wiki/%D0%A3%D...A6_RAM.LST_app

    Обычно передаём на вывод вот такую строку, и затем ставим задержку чтобы ПП очистил экран, заполнив его новыми цветами.
    Код:
    GAMESC:	; Строка подготовки игрового экрана
    	.BYTE	33,246,62		; Формат экрана 40x24
    	.BYTE	33,240,60		; Цвет символа
    	.BYTE	33,241,61		; Цвет знакоместа
    	.BYTE	33,242,61		; Цвет фона
    	.BYTE	14			; Clear screen
    	.BYTE	0
    	.EVEN

  7. Этот пользователь поблагодарил nzeemin за это полезное сообщение:

    hobot (04.03.2020)

  8. #5
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,596
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо.
    А как будет выглядеть последовательность в случае, когда у нас уже установлен графический режим и нужно просто щёлкать палитры?
    Сопоставить "цвет символа, цвет знакоместа и цвет фона" с палитрами у меня не хватило фантазии. Хотя примерно понял, куда рыть.

    В УКНЦ есть набор предустановленных палитр, о которых упоминается в описании функции Palette?

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

    Цитата Сообщение от nzeemin Посмотреть сообщение
    В оглавлении хламника Хобота есть вот такой файл, может это оно?
    CGLIB .OBJ 29 12-Jul-1991 14'848
    Сам диск-то есть, но увы - это не оно. Это другая совершенно библиотека с тем же именем. Набор функций внутри неё тоже другой.

  9. #6
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,596
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прокомментируйте, пожалуйста. Это Esc-последовательность, которую вызывает InitGraph:

    Код:
        .BYTE   ^O33, ^O246, ^O62      ; 40x24 mode (эти коды прилепил уже я - для перехода в режим 320)
        .BYTE   ^O33, ^O45, ^O41, ^O61 ; Term mode
        .BYTE   ^O33, ^O133, ^O60, ^O73, ^O60, ^O162 ; Здесь, похоже, гасится служебная надпись РУС/ЛАТ.
        .BYTE   ^O33, ^O45, ^O41, ^O60 ; Graph
    CloseGraph:

    Код:
        .BYTE   ^O14
        .BYTE   ^O33, ^O45, ^O41, ^O63
        .BYTE   ^O33, ^O246, ^O61 ; 80x24 mode (это тоже прилепил я)
    После вызова CloseGraph надо корректно выйти в текстовый режим RT-11, у меня есть сомнения, что эти последовательности правильно это делают. РУС/ЛАТ по идее надо восстановить обратно.

  10. #7
    R.I.P. Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    370
    Поблагодарили
    309 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    но самого диска я не нашёл.
    спасибо, Никита! папка с дискетой от Vamos - в корне нет, она в \Other\ (оглавление поправил).
    Поглядел поставку Си к РАФОС - там граф.модуля вообще нет. Наверное надо делать выбор в пользу варианта библиотеки максимально большого размера и копаться-разбираться с ней, пример по изучение списка "глобальных" LIBR'ом я Олегу кидал, у него все шпаргалки на руках ) С Си вообще много непонятного на наших машинках - скорее всего очень много "местечковых под свои задачи" наработок на местах, откуда скопированы библиотеки.
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  11. #8
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прочёл про данную библиотеку. Да, она работает напрямую с планами памяти 1 и 2 через регистры центрального процессора. Потому и кол-во цветов в палитре ограничено четырьмя. Так что, чтобы менять палитру, надо изменять ячейки 2470 и 2472 в ОЗУ ПП. В данных ячейках находится регистр управления цветом для экрана пользователя. Программу в ОЗУ ПП грузить необязательно. Можно их прочесть и записать через канал К2. Необходимо прочесть УКНЦ. Работа с внешними устройствами.

  12. Эти 2 пользователя(ей) поблагодарили Alex_K за это полезное сообщение:

    hobot (04.03.2020), nzeemin (04.03.2020)

  13. #9
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Перевод на черновую библиотеки CGLIB.
    Вложения Вложения
    • Тип файла: zip CGLIB.zip (12.3 Кб, Просмотров: 48)

  14. Эти 2 пользователя(ей) поблагодарили Alex_K за это полезное сообщение:

    hobot (04.03.2020), Oleg N. Cher (04.03.2020)

  15. #10
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,596
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Alex_K, благодарю. Чётко то, что надо) Чем Вы так красиво .OBJ расковыряли?) Я дизасмлю IDA Pro, но он не совсем такое выдаёт.

    Думаю ограничиться 4-мя цветами. А то, видимо, аксакалы, которые тут обитаются, не зря избегают лезть в ПП-шный битплан. Krakout от BlaireCas использует больше цветов, но там, видимо, устанавливается палитра для каждой строки, я так не умею, ну и пока неинтересно. Надо для начала что-то более штатное.

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Программу в ОЗУ ПП грузить необязательно. Можно их прочесть и записать через канал К2.
    Тёмный совершенно лес. Был бы рад готовому примеру кода, который устанавливает палитру таким способом, вот просто аж до небес)

    Цитата Сообщение от hobot Посмотреть сообщение
    Наверное надо делать выбор в пользу варианта библиотеки максимально большого размера и копаться-разбираться с ней
    Хоботярыч, там у тебя в архиве все CGLIB разные. Не в том смысле, что разные версии - вообще разные библиотеки. А та, что мы сейчас ковыряем, только одна - самой первой версии с описанием от второй. Только реконструировать, без вариантов. Если знаешь ещё какие-то библиотеки для работы со спрайтами/картинками, кидай.

    Ещё вопрос по MACRO-11: как оформить подпрограммы, чтобы при линковке из объектника подключались только нужные? (сейчас у меня подключаются тупо все).

Страница 1 из 14 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Turbo Pascal для msx/msx2
    от Оззя в разделе MSX
    Ответов: 4
    Последнее: 23.02.2020, 23:59
  2. Ответов: 7
    Последнее: 12.12.2019, 04:12
  3. Turbo Pascal 4 и CP/M 3 для Корвета
    от litwr в разделе Корвет
    Ответов: 10
    Последнее: 26.11.2019, 04:19
  4. Язык PL/M. Возможность использования.
    от James DiGreze в разделе Программирование
    Ответов: 18
    Последнее: 15.01.2006, 12:19

Ваши права

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