PC-01 Lviv
http://pc01.lviv.ua/forum/

Палитра ПК-01 "Львов"
http://pc01.lviv.ua/forum/viewtopic.php?f=2&t=154
Page 1 of 3

Author:  a99 [ 05 Jun 2012, 15:42 ]
Post subject:  Палитра ПК-01 "Львов"

Вынесено из темы "Запуск эмулятора ПК-01 "Львов" на Dingoo A320".
Quote:
Существует ли подробное описание принципа работы узла выбора палитры?
Посмотрите код эмуляции видеоподсистемы здесь или в драйвере "lviv" MESS. Код нередко понятнее описаний :)

Author:  sadfsdfsdaf [ 05 Jun 2012, 22:12 ]
Post subject:  Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320

Quote:
1) Существует ли подробное описание принципа работы узла выбора палитры?
на этом сайте есть принципиальные схемы. в двух словах - там на логике собран генератор (на линии задержки), биты с порта и видеопамяти сигнал "делят", потом конденсатор, "выпрямитель" и дальше на линию цвета в телевизоре.
Code:
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)
на схеме - справа сверху

Author:  Tim0xA [ 06 Jun 2012, 02:22 ]
Post subject:  Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320

Вообщем-то я этот код и использовал. У меня он выглядит так - был притянут за уши к принципу формирования цвета Вектора и 16 разрядам цвета Динги. Цветам других эмуляторов соответствует, все вроде работает. Можно оптимизировать, но это сейчас неважно.
Code:
// 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. Вот у Вектора все было четко - есть палитра, есть соответствие физических и математических цветов, вес каждого цвета в байте и все понятно со слов.

Author:  b2m [ 06 Jun 2012, 09:31 ]
Post subject:  Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320

Quote:
В бейсике это палитра №5, но что записать в порт, чтобы ее получить, когда ты программируешь в кодах?
Я посмотрел в отладчике, что выводится в порт 0С1h (поставил бряк на этот порт). Обработка оператора COLOR находится по адресу 0DE06h, там считываются три числа, потом получают индекс = второе*8+третье, а потом тупо по таблице берётся число и выводится в порт. Таблица по адресу 0DE54h такая:
Code:
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

Author:  Zelya [ 06 Jun 2012, 10:59 ]
Post subject:  Re: Палитра ПК-01 "Львов"

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

Image

Author:  liberation [ 06 Jun 2012, 12:40 ]
Post subject:  Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320

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

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

Author:  Tim0xA [ 06 Jun 2012, 15:13 ]
Post subject:  Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320

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

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

Author:  liberation [ 06 Jun 2012, 15:58 ]
Post subject:  Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320

Quote:
А "древние люди", писавшие для Львова (на Львове же!) пусть даже имеющие цветной телевизор, скорее всего подбирали подходящую палитру опытным путем. Ну например в бейсике, при помощи программы, которая записывает байты в порт 193, и тут же получали результат для разноцветных квадратов. Ибо словами принцип работы этого порта просто не описуем.
Эх, все идет к тому, чтобы писать очередное письмо [1, 2] разработчику этой чудо-ЭВМ! Еще какие-нибудь вопросы к творцу можете подкинуть? :D
Quote:
Интересно, есть ли примеры софта, который динамически использует палитру? Демки какие-нибудь?
У нас есть тема "Multicolor для ПК-01 "Львов", но фактической информации о подобном явлении у нас пока нет. Жанр демок для "Львова" не чужд, но из-за общей безалаберности мы ничего еще не выложили. Да и отсутствие полноценного эмулятора ПК-02 дает о себе знать. Однако недавно я находил маленькую демку, где что-то такое-этакое с цветами делается, надо будет ее обязательно выложить.

Author:  Tim0xA [ 06 Jun 2012, 16:30 ]
Post subject:  Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320

Quote:
Эх, все идет к тому, чтобы писать очередное письмо [1, 2] разработчику этой чудо-ЭВМ! Еще какие-нибудь вопросы к творцу можете подкинуть? :D
Если будут - обязательно озвучу :) Я пока еще мало с ним знаком. И так случайно "зацепился" :) Вообще вот как-раз такими фичами, особенностями, и интересна каждая ПЭВМ по-своему, что отличает их от себе подобных. Львов - отсутствием бордюра, прерываний, оригинальной палитрой. Вектор - аскетичным загрузчиком, скроллом, оригинальным форматом записи, глюками при программировании ОЗУ цвета (и тут палитра отличилась, будь она неладна! :lol: ).
Quote:
Однако недавно я находил маленькую демку, где что-то такое-этакое с цветами делается, надо будет ее обязательно выложить.
Демки выжимают максимум из железа. Любопытно было бы глянуть.
Quote:
Я посмотрел в отладчике, что выводится в порт 0С1h (поставил бряк на этот порт)
Я не нашел упоминания об этом в документации, но судя по схеме нулевое значение бита 7 этого порта должно выключать звук встроенного динамика. Однако у тебя в эмуляторе звук не выключается.

Author:  liberation [ 06 Jun 2012, 16:34 ]
Post subject:  Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320

Quote:
Quote:
Я посмотрел в отладчике, что выводится в порт 0С1h (поставил бряк на этот порт)
Я не нашел упоминания об этом в документации, но судя по схеме нулевое значение бита 7 этого порта должно выключать звук встроенного динамика. Однако у тебя в эмуляторе звук не выключается.
Кстати, было такое дело! Хотя подробностей уже не помню.

Author:  sas9568635 [ 06 Jun 2012, 17:41 ]
Post subject:  Re: Палитра ПК-01 "Львов"

А можно ли уведеть процедуры по переводу байта-цветности в пикселы (и наоборот)написанные на Паскале (дельфи)? Чтобы самому вело не изобретать?...

Author:  liberation [ 06 Jun 2012, 18:27 ]
Post subject:  Re: Палитра ПК-01 "Львов"

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

Author:  sas9568635 [ 06 Jun 2012, 19:19 ]
Post subject:  Re: Палитра ПК-01 "Львов"

Quote:
Quote:
А можно ли уведеть процедуры по переводу байта-цветности в пикселы (и наоборот)
Наш НИИ сломал себе мозг в попытках понять, что это значит. Зачем эта процедура нужна?
Объясняю. :-) Пишу , точнее собираюсь писать PasToLV, где будет вывод эмулятор-форму-экранЛьвов, которая (PaintBox: TPaintBox)...
Надо эмулировать функцию OUT ($C2) (так вроде на экран выводитсяво львове) преобразовывать цвет-байт-Львова в 4-пиксела-(PaintBox: TPaintBox)...
Думал может существует быстрый и эфективный перевод из одного в другое...
Иль как это делалаеться в эмуляторах?...
Code:
    ----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---+---+---+----

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

Author:  sas9568635 [ 06 Jun 2012, 19:37 ]
Post subject:  Re: Палитра ПК-01 "Львов"

Quote:
Посмотрите код эмуляции видеоподсистемы url=https://code.google.com/p/qlv/source/br ... screen.cpp или в драйвере "lviv" MESS. Код нередко понятнее описаний :)
Видимо вот это оно и есть но я в СИ не бум-бум на ПАСе есть такое?

Author:  Tim0xA [ 09 Jun 2012, 12:01 ]
Post subject:  Re: Палитра ПК-01 "Львов"

При грамотном подходе даже при помощи 4 цветов можно творить чудеса. Впечатляет!

Image

Page 1 of 3 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/