PC-01 Lviv

It is currently 29 Mar 2024, 10:46

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 42 posts ]  Go to page 1 2 3 Next
Author Message
PostPosted: 05 Jun 2012, 15:42 
Offline

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


Top
   
PostPosted: 05 Jun 2012, 22:12 
Offline

Joined: 07 Dec 2010, 16:54
Posts: 227
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)
на схеме - справа сверху


Top
   
PostPosted: 06 Jun 2012, 02:22 
Offline

Joined: 04 Jun 2012, 22:08
Posts: 44
Location: Украина
Вообщем-то я этот код и использовал. У меня он выглядит так - был притянут за уши к принципу формирования цвета Вектора и 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. Вот у Вектора все было четко - есть палитра, есть соответствие физических и математических цветов, вес каждого цвета в байте и все понятно со слов.


Top
   
PostPosted: 06 Jun 2012, 09:31 
Offline

Joined: 29 Mar 2012, 21:35
Posts: 115
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


Top
   
PostPosted: 06 Jun 2012, 10:59 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Если посмотреть на рисунок, палитры не такие уж хаотические:

Image


Top
   
PostPosted: 06 Jun 2012, 12:40 
Offline
User avatar

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

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

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
PostPosted: 06 Jun 2012, 15:13 
Offline

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

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


Top
   
PostPosted: 06 Jun 2012, 15:58 
Offline
User avatar

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

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
PostPosted: 06 Jun 2012, 16:30 
Offline

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


Top
   
PostPosted: 06 Jun 2012, 16:34 
Offline
User avatar

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

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
PostPosted: 06 Jun 2012, 17:41 
Offline

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


Top
   
PostPosted: 06 Jun 2012, 18:27 
Offline
User avatar

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

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
PostPosted: 06 Jun 2012, 19:19 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
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---+---+---+----

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


Top
   
PostPosted: 06 Jun 2012, 19:37 
Offline

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


Top
   
PostPosted: 09 Jun 2012, 12:01 
Offline

Joined: 04 Jun 2012, 22:08
Posts: 44
Location: Украина
При грамотном подходе даже при помощи 4 цветов можно творить чудеса. Впечатляет!

Image


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 42 posts ]  Go to page 1 2 3 Next

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 5 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
cron
Powered by phpBB® Forum Software © phpBB Limited