ПК-01 ЛЬВОВ

форум о ПК-01,02 "Львов"
Текущее время: 23 май 2018, 15:51

Forum Games WEB Tape Loader Twitter RSS

Часовой пояс: UTC + 2 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Палитра ПК-01 "Львов"
СообщениеДобавлено: 05 июн 2012, 15:42 
Не в сети

Зарегистрирован: 04 сен 2008, 19:39
Сообщений: 131
Откуда: Владимир
Вынесено из темы "Запуск эмулятора ПК-01 "Львов" на Dingoo A320".

Tim0xA писал(а):
Существует ли подробное описание принципа работы узла выбора палитры?

Посмотрите код эмуляции видеоподсистемы здесь или в драйвере "lviv" MESS. Код нередко понятнее описаний :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 июн 2012, 22:12 
Не в сети

Зарегистрирован: 07 дек 2010, 16:54
Сообщений: 202
Tim0xA писал(а):
1) Существует ли подробное описание принципа работы узла выбора палитры?

на этом сайте есть принципиальные схемы. в двух словах - там на логике собран генератор (на линии задержки), биты с порта и видеопамяти сигнал "делят", потом конденсатор, "выпрямитель" и дальше на линию цвета в телевизоре.
Код:
private final static byte BLACK = 0;
private final static byte BLUE  = 1;
private final static byte GREEN = 2;
private final static byte RED   = 4;

// Calculates color value from palette port
static byte compute_color_index(int port, int color)
{
    byte Result=BLACK;       if ((port & 0x40) != 0) Result^=BLUE;
                             if ((port & 0x20) != 0) Result^=GREEN;
                             if ((port & 0x10) != 0) Result^=RED;
    switch (color) {default:                                        break;
    case 0:                  if ((port & 0x08) == 0) Result^=RED;
                             if ((port & 0x04) == 0) Result^=BLUE;  break;
    case 2: Result^=GREEN;                                          break;
    case 3: Result^=RED;     if ((port & 0x02) == 0) Result^=GREEN; break;
    case 1: Result^=BLUE;    if ((port & 0x01) == 0) Result^=RED;   break;
    }
    return Result;
}


P.S. sheet1.jpg
http://content.wuala.com/contents/lvov_ ... t.rar?dl=1
корпуса D59 D60 D61 D62 (и дополнительно D29)
на схеме - справа сверху


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 июн 2012, 02:22 
Не в сети

Зарегистрирован: 04 июн 2012, 22:08
Сообщений: 44
Откуда: Украина
Вообщем-то я этот код и использовал. У меня он выглядит так - был притянут за уши к принципу формирования цвета Вектора и 16 разрядам цвета Динги. Цветам других эмуляторов соответствует, все вроде работает. Можно оптимизировать, но это сейчас неважно.

Код:
// Calculates color value from palette port
word COL(byte color)
{
   byte BLACK = 0;
   byte RED = 0x07;
   byte GREEN = 0x38;
   byte BLUE = 0xC0;

   byte Result = BLACK;

   byte port = PPI[0].Rout[1];
   if ((port & 0x40) != 0) Result ^= BLUE;
   if ((port & 0x20) != 0) Result ^= GREEN;
   if ((port & 0x10) != 0) Result ^= RED;
   switch (color)
   {
      case 0:
         if ((port & 0x08) == 0) Result ^= RED;
         if ((port & 0x04) == 0) Result ^= BLUE;
         break;
      case 1:
         Result ^= BLUE;
         if ((port & 0x01) == 0) Result ^= RED;
         break;
      case 2:
         Result ^= GREEN;
         break;
      case 3:
         Result ^= RED;
         if ((port & 0x02) == 0) Result ^= GREEN;
         break;
   }
   return ((Result & 0x07) << 13) | ((Result & 0x38) << 5) | ((Result & 0xC0) >> 3);
}


Вопрос в другом... Вообщем-то реализация понятна. Но меня больше интересовал несколько другой аспект. Ну вот дают программисту "Львов ПК-01", ставят задачу написать софт. И сообщают, дескать, есть некий порт, куда записываешь некий байт и получаешь некую палитру. Но какой байт писать? Что его биты означают? Как палитра формируется? Какие цвета ты получишь? Ответов нет. Разработчики компьютера о чем-то же думали, когда это реализовывали, значит должен быть какой-то замысел.
Обычно программисту не предлагается заглядывать в схему и в исходники эмуляторов, а имеется какое-то внятное описание. А здесь его не дают. В описании бейсика есть команда COLOR и таблица, где можно выбрать 7 палитр, но ведь некоторые же в кодах пишут - им как быть? Вот как получена симпатичная палитра в игре Арктика http://lvovpc.ho.ua/games/page.php?name=arctic ? Неужели тупым перебором? В бейсике это палитра №5, но что записать в порт, чтобы ее получить, когда ты программируешь в кодах? Выходит каждый программист решал эту задачу сам для себя. Кто-то решал, а кто-то нет. И возможно поэтому львиная доля игр, что я видел, так и остались в этих жутких кислотных RGB-шных тонах, потому что на палитры просто "забивали" и оставляли все "по-умолчанию".

Ну це таке... Эмулятор и так работает. Но просто интересно...

P.S. Вот у Вектора все было четко - есть палитра, есть соответствие физических и математических цветов, вес каждого цвета в байте и все понятно со слов.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 июн 2012, 09:31 
Не в сети

Зарегистрирован: 29 мар 2012, 21:35
Сообщений: 115
Tim0xA писал(а):
В бейсике это палитра №5, но что записать в порт, чтобы ее получить, когда ты программируешь в кодах?

Я посмотрел в отладчике, что выводится в порт 0С1h (поставил бряк на этот порт). Обработка оператора COLOR находится по адресу 0DE06h, там считываются три числа, потом получают индекс = второе*8+третье, а потом тупо по таблице берётся число и выводится в порт. Таблица по адресу 0DE54h такая:
Код:
0000: 8F 8E 8D 8C CA C8 D3 8F
0008: 85 84 9F 9E C3 C1 DA 85
0010: 8A 88 93 CF CE CD CC 8A
0018: 83 81 9A C5 C4 DF DE 83
0020: FF FE E5 E4 BA B8 A3 FF
0028: F5 F4 EF EE B3 B1 AA F5
0030: F3 F1 EA AF AE B5 B4 F3
0038: FA F8 E3 BD BC BF BE FA


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Палитра ПК-01 "Львов"
СообщениеДобавлено: 06 июн 2012, 10:59 
Не в сети
Site Admin
Аватар пользователя

Зарегистрирован: 24 июл 2008, 12:05
Сообщений: 994
Если посмотреть на рисунок, палитры не такие уж хаотические:

Изображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 июн 2012, 12:40 
Не в сети
Аватар пользователя

Зарегистрирован: 11 авг 2008, 17:05
Сообщений: 1403
Откуда: Украина
Tim0xA писал(а):
И возможно поэтому львиная доля игр, что я видел, так и остались в этих жутких кислотных RGB-шных тонах, потому что на палитры просто "забивали" и оставляли все "по-умолчанию".

Нет, не все так просто! Я, к примеру, толком увидел "Львов" в цветах только в эмуляторе. А в годы былые он был у меня подключен к ч/б телевизору, поэтому о проблеме с палитрами я даже не задумывался. Думаю, не я один пользовался ПК-01 в таких условиях, и отсюда могут произрастать корни проблемы "все по-умолчанию".

upd. Именно эта тема дала нам 101 твит! :D

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 июн 2012, 15:13 
Не в сети

Зарегистрирован: 04 июн 2012, 22:08
Сообщений: 44
Откуда: Украина
liberation писал(а):
в годы былые он был у меня подключен к ч/б телевизору, поэтому о проблеме с палитрами я даже не задумывался. Думаю, не я один пользовался ПК-01 в таких условиях, и отсюда могут произрастать корни проблемы "все по-умолчанию".

Логично. Кстати, я тоже писал свои первые бейсиковские игры для Вектора на ч/б телевизоре. Забавно было потом посмотреть, что получилось. Но у меня не было неожиданностей, т.к. я точно знал, какой цвет получу, какую бы я не запрограммировал палитру. Все было ясно из документации.

Сегодня нам хорошо - мы как чародеи извлекаем скриншоты палитр, дампы из отладчиков и куски кода из эмуляторов. Палитра? Да вот же она, все просто! А "древние люди", писавшие для Львова (на Львове же!) пусть даже имеющие цветной телевизор, скорее всего подбирали подходящую палитру опытным путем. Ну например в бейсике, при помощи программы, которая записывает байты в порт 193, и тут же получали результат для разноцветных квадратов. Ибо словами принцип работы этого порта просто не описуем.

Zelya писал(а):
Если посмотреть на рисунок, палитры не такие уж хаотические:

Картинка очень наглядна. Странно, что нет комбинации - все черные. Выходит нельзя было погасить весь экран, если используется более двух цветов. Зато можно выключать один или два цвета для некоторых пар палитр. Можно менять цвета местами, например палитры 8 и 24. Т.е. некоторые интересные эффекты можно было реализовать. Интересно, есть ли примеры софта, который динамически использует палитру? Демки какие-нибудь?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 июн 2012, 15:58 
Не в сети
Аватар пользователя

Зарегистрирован: 11 авг 2008, 17:05
Сообщений: 1403
Откуда: Украина
Tim0xA писал(а):
А "древние люди", писавшие для Львова (на Львове же!) пусть даже имеющие цветной телевизор, скорее всего подбирали подходящую палитру опытным путем. Ну например в бейсике, при помощи программы, которая записывает байты в порт 193, и тут же получали результат для разноцветных квадратов. Ибо словами принцип работы этого порта просто не описуем.

Эх, все идет к тому, чтобы писать очередное письмо [1, 2] разработчику этой чудо-ЭВМ! Еще какие-нибудь вопросы к творцу можете подкинуть? :D

Tim0xA писал(а):
Интересно, есть ли примеры софта, который динамически использует палитру? Демки какие-нибудь?

У нас есть тема "Multicolor для ПК-01 "Львов", но фактической информации о подобном явлении у нас пока нет. Жанр демок для "Львова" не чужд, но из-за общей безалаберности мы ничего еще не выложили. Да и отсутствие полноценного эмулятора ПК-02 дает о себе знать. Однако недавно я находил маленькую демку, где что-то такое-этакое с цветами делается, надо будет ее обязательно выложить.

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 июн 2012, 16:30 
Не в сети

Зарегистрирован: 04 июн 2012, 22:08
Сообщений: 44
Откуда: Украина
liberation писал(а):
Эх, все идет к тому, чтобы писать очередное письмо [1, 2] разработчику этой чудо-ЭВМ! Еще какие-нибудь вопросы к творцу можете подкинуть? :D

Если будут - обязательно озвучу :) Я пока еще мало с ним знаком. И так случайно "зацепился" :) Вообще вот как-раз такими фичами, особенностями, и интересна каждая ПЭВМ по-своему, что отличает их от себе подобных. Львов - отсутствием бордюра, прерываний, оригинальной палитрой. Вектор - аскетичным загрузчиком, скроллом, оригинальным форматом записи, глюками при программировании ОЗУ цвета (и тут палитра отличилась, будь она неладна! :lol: ).

liberation писал(а):
Однако недавно я находил маленькую демку, где что-то такое-этакое с цветами делается, надо будет ее обязательно выложить.

Демки выжимают максимум из железа. Любопытно было бы глянуть.

b2m писал(а):
Я посмотрел в отладчике, что выводится в порт 0С1h (поставил бряк на этот порт)

Я не нашел упоминания об этом в документации, но судя по схеме нулевое значение бита 7 этого порта должно выключать звук встроенного динамика. Однако у тебя в эмуляторе звук не выключается.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 июн 2012, 16:34 
Не в сети
Аватар пользователя

Зарегистрирован: 11 авг 2008, 17:05
Сообщений: 1403
Откуда: Украина
Tim0xA писал(а):
b2m писал(а):
Я посмотрел в отладчике, что выводится в порт 0С1h (поставил бряк на этот порт)

Я не нашел упоминания об этом в документации, но судя по схеме нулевое значение бита 7 этого порта должно выключать звук встроенного динамика. Однако у тебя в эмуляторе звук не выключается.

Кстати, было такое дело! Хотя подробностей уже не помню.

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Палитра ПК-01 "Львов"
СообщениеДобавлено: 06 июн 2012, 17:41 
Не в сети

Зарегистрирован: 20 апр 2012, 16:00
Сообщений: 372
Откуда: Конотоп
А можно ли уведеть процедуры по переводу байта-цветности в пикселы (и наоборот)написанные на Паскале (дельфи)? Чтобы самому вело не изобретать?...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Палитра ПК-01 "Львов"
СообщениеДобавлено: 06 июн 2012, 18:27 
Не в сети
Аватар пользователя

Зарегистрирован: 11 авг 2008, 17:05
Сообщений: 1403
Откуда: Украина
sas9568635 писал(а):
А можно ли уведеть процедуры по переводу байта-цветности в пикселы (и наоборот)

Наш НИИ сломал себе мозг в попытках понять, что это значит. Зачем эта процедура нужна?

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Палитра ПК-01 "Львов"
СообщениеДобавлено: 06 июн 2012, 19:19 
Не в сети

Зарегистрирован: 20 апр 2012, 16:00
Сообщений: 372
Откуда: Конотоп
liberation писал(а):
sas9568635 писал(а):
А можно ли уведеть процедуры по переводу байта-цветности в пикселы (и наоборот)

Наш НИИ сломал себе мозг в попытках понять, что это значит. Зачем эта процедура нужна?

Объясняю. :-) Пишу , точнее собираюсь писать PasToLV, где будет вывод эмулятор-форму-экранЛьвов, которая (PaintBox: TPaintBox)...
Надо эмулировать функцию OUT ($C2) (так вроде на экран выводитсяво львове) преобразовывать цвет-байт-Львова в 4-пиксела-(PaintBox: TPaintBox)...
Думал может существует быстрый и эфективный перевод из одного в другое...
Иль как это делалаеться в эмуляторах?...
Код:
    ----T---T---T---T---T---T---T---¬
    ¦ 7 ¦ 6 ¦ 5 ¦ 4 ¦ 3 ¦ 2 ¦ 1 ¦ 0 ¦  Байт экранного ОЗУ
    L-T-+-T-+-T-+-T-+-T-+-T-+-T-+-T--
      ¦   ¦   ¦   L---+---+---+---*
      ¦   ¦   L-------+---+---*   ¦
      ¦   L-----------+---*   ¦   ¦
      L---------------*   ¦   ¦   ¦
                      ¦   ¦   ¦   ¦
                    --+-T-+-T-+-T-+-¬
                    ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦  Пикселы на экране
                    L---+---+---+----


Также итересует какая-то таблица цетов что-ль... при каких ФОНОВЫХ цветах, какие возможны цвета пикселей...
Хух.. ели выразился чего я хотел... :-) надеюсь меня поняли.:-)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Палитра ПК-01 "Львов"
СообщениеДобавлено: 06 июн 2012, 19:37 
Не в сети

Зарегистрирован: 20 апр 2012, 16:00
Сообщений: 372
Откуда: Конотоп
a99 писал(а):
Посмотрите код эмуляции видеоподсистемы url=https://code.google.com/p/qlv/source/browse/trunk/lviv/lvscreen.cpp или в драйвере "lviv" MESS. Код нередко понятнее описаний :)

Видимо вот это оно и есть но я в СИ не бум-бум на ПАСе есть такое?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Палитра ПК-01 "Львов"
СообщениеДобавлено: 09 июн 2012, 12:01 
Не в сети

Зарегистрирован: 04 июн 2012, 22:08
Сообщений: 44
Откуда: Украина
При грамотном подходе даже при помощи 4 цветов можно творить чудеса. Впечатляет!

Изображение


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу 1, 2, 3  След.

Forum Games WEB Tape Loader Twitter RSS

Часовой пояс: UTC + 2 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
cron
Free counters!
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB