User Tag List

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

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

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

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

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    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

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    Oleg N. Cher(03.03.2020)

  4. #3

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #4

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,051
    Спасибо Благодарностей отдано 
    1,142
    Спасибо Благодарностей получено 
    1,473
    Поблагодарили
    525 сообщений
    Mentioned
    20 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

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

    hobot(04.03.2020)

  6. #5

    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    374
    Поблагодарили
    311 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  7. #6

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

  8. #7

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    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, у меня есть сомнения, что эти последовательности правильно это делают. РУС/ЛАТ по идее надо восстановить обратно.

  9. #8

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    hobot(04.03.2020), nzeemin(04.03.2020)

  10. #9

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

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

  11. #10

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Чем Вы так красиво .OBJ расковыряли?)
    С помощью LIBR.SAV вытягивал отдельные модули командой LIBR/EXT. А объектники в MACRO-11 переводились программой DECOBJ.SAV.

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

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Ещё вопрос по MACRO-11: как оформить подпрограммы, чтобы при линковке из объектника подключались только нужные? (сейчас у меня подключаются тупо все).
    Это надо каждую подпрограмму оформить в виде отдельного объектного файла, а потом собрать их всех в библиотеку. Как раз CGLIB.OBJ является не объектным файлом, а библиотекой.

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

    nzeemin(03.04.2021), Oleg N. Cher(04.03.2020)

Страница 1 из 12 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

Ваши права

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