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

User Tag List

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

Тема: Простой графический компьютер на Z80

  1. #1
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Простой графический компьютер на Z80

    Предлагаю на обсуждение конструкцию очень простого графического компьютера на Z80, который я придумал ~30 лет назад, но руки так и не дошли до реализации (был доступен лишь КР580 на такте до 3-х МГЦ, что давало слишком мелкий экран).

    Идея родилась, когда я ознакомился с концепцией компьютера BCS-3 (1984) в журнале FUNKAMATEUR, в котором вывод на экран делался цепочкой NOP (естественно, про ZX80 прочитать было негде). Идея аналогичная ZX80, только для вывода используется другая команда и вывод графический, а не текстовый.

    Напомню концепцию ZX80. В ней, в момент начала вывода растра, Z80 с помощью прерывания уходит на процедуру визуализации. В которой он непрерывно читает с шины код NOP, а синхронно с ним из адресов на выводах Z80 считывается видео-байт и защелкивается в выходном видео-регистре, который затем за 4 такта, что длится команда NOP, выдвигается на вход телевизора. Таким образом Z80 работает заменителем счётчиков видеогенератора, что экономит детали.

    При использовании этой идеи для графического варианта, возникает дополнительная экономия, т.к отпадает ПЗУ с фонтом и счётчик линий в знакоместе. После вывода каждой строки во время обратного хода луча Z80 выводит ССИ и инициализирует регистры для вывода следующей строки.

    Для вывода одной линии растра выполняется 16 команд POP IX, при которых 16 битов защелкиваются в 16-ти разрядном сдвиговом регистре, из которого за последующие 16 тактов видеосигнал выдвигается в телевизор. Команда POP IX 14-ти тактовая. Чтобы было 16 тактов, 2 такта добавляются WAIT-ом. В регистр SP загружается экранный адрес начала экранной линии. Защелкивание в регистры происходит при совпадении адреса экранной области, сигнала /MEMR и адреса A0 или /A0. Время вывода одной линии растра длится 256 тактов. Расход регистров: ИР23 и две ИР9.

    В линии отображается 16*16=256 точек. По вертикали - от 8 до 256 линий растра. Но формат поддержанный ROM-BIOS это 256*192. При такте Z80 в 5.5 МГЦ и 256 тактах время вывода растра в строке составляет: (1:5.5)*256=46.5 МКСЕК и 17.5 МКСЕК остаются на обратный ход луча по строкам. За 17.5 МКСЕК Z80 выполнит 96 маш.тактов. За это время (гашения луча) Z80 загружает в рег.SP экр.адрес следующей экранной линии (что необязательно, но полезно, можно двигать видимое окно 256x192 из виртуального экрана 512*256) и программно формирует ССИ, что экономит детали.

    Вот полная процедура визулизации всего экрана.

    Код:
    .
    	LD	B,LINES		;  число визуализируемых линий
    	LD	HL,TABLE	; таблица содержащая адреса начал строк
    	LD	DE,2
    VLOOP:	DEC	B		;  4 такта
    	JR	Z,EXIT		; 10 тактов
    
    	LD	(port_SSI),A	; 13 тактов   выдаём ССИ
    	ADD	HL,DE		; 11 тактов
    	LD	(KORR),HL	; 16 тактов
    	LD	SP,IY		; 10 тактов   (это просто NOP в 10 тактов)
    
    ;	LD	SP,(nnnn)	; 20 тактов
    	defb	EDH
    	defb	7BH
    KORR:	DS	2
    	 
    	POP	IX		; 16 последовательных POP для визулизации
    	. . . . . .
    	POP	IX
    	JR	VLOOP		; 12 тактов
    					= 96 тактов		    
    
    EXIT:	LD	(port_KSI),A	; выдаём строб для КСИ
    	EI
    	RET			; возврат к программе пользователя
    Загрузив в регистр B число линий растра, можно менять размер экрана по вертикали (сокращение размера увеличивает быстродействие). Положение экрана по вертикали также регулируется программно. Загрузив в ОЗУ другую программу визуализации можно иметь и другой формат экрана (например 160 на 120). В данном варианте программы визуализации используется таблица (TABLE) содержащая начала экранных линий. Это позволяет иметь экран где угодно и делать мгновенный аппаратный ролик во все стороны. Но можно загрузить SP один раз перед процедурой визуализации, что экономит ОЗУ, но даёт меньшую гибкость.

    КСИ формируется выдачей строба сразу после вывода последней линии растра. КСИ формируется на 555АГ3. Строб запускает первый одновибратор, который обеспечивает задержку фронта на несколько МСЕК, а второй одновибратор формирует КСИ стандартной длительности.

    50 ГЦ для прерывания NMI вырабатываются на ВИ53, второй канал нужен для синхронизации по строкам, а третий канал - отдан под звук, т.к Z80 в такой схеме не может формировать звуки. Истратив пол-корпуса ТМ2 можно освободить и 2-й канал для звуков.

    Схема состоит из Z80, 2К ПЗУ РФ2, 60К ОЗУ на w24512, ИР22 для аппаратной клавиатуры, а весь расход деталей на видео составляет 3 регистра и несколько корпусов логики.

    - при Z80 на такте 7.0 МГЦ реализуется экран шириной 384 точки.
    - при Z80 на такте 6.2 МГЦ реализуется экран 320*200, как у CGA.
    - при Z80 на такте 5.5 МГЦ реализуется экран шириной 288 точeк.
    - при Z80 на такте 5.0 МГЦ реализуется экран шириной 256 точeк.
    - при Z80 на такте 4.5 МГЦ реализуется экран шириной 234 точки.
    - при Z80 на такте 4.0 МГЦ реализуется экран шириной 208 точек.
    - при КР580 с тактом 3 МГЦ реализуется экран шириной в 160 точек.

    Экранный вывод отнимает у процессора 61% времени (192/312=0.61). Быстродействие составляет 0.39% от такта Z80, т.е при 5.5 МГЦ скорость компьютера равна 2.12 МГЦ. Если требуется бОльшая скорость, достаточно программно уменьшить вертикальный размер экрана. Для игр можно устанавливать режим в 128 линий, что даёт скорость 3.25 МГЦ.

    Для экрана в 256 точек минимально возможный это такт 5.0 МГЦ. Но если вывод на телевизор, то лучше использовать кварц 12 МГЦ и такт Z80 в 6 МГЦ. Что при 192 линиях повышает скорость до 2.32 МГЦ, а при 128 линиях даёт уже 3.54 МГЦ, что вполне достаточно для игр. Для игр можно ввести цвет CGA, если выводить из двух выходных регистров параллельно, но с вдвое меньшим тактом. Можно также ввести вторую параллельную банку для цвета, хотя при этом конструкция уже потеряет минимальность.

    Большой недостаток концепции, это невозможность работы в реальном времени, т.к CPU 2/3 времени прогоняет не свою программу, а занят выводом на экран. Поэтому ввод с МГ-ленты возможен только с погашенным экраном, как в РК86. Большим достоинством конструкции является программная гибкость. Например, при размещении программы визуализации в ОЗУ реализуется почти мгновенное вертикальное и горизонтальное панорамирование.

    Перспективным может быть использование такого компьютера в виде графического адаптера для бытового компьютера у которого нет графики (РК86 и клоны, ЮТ88). Тогда для связи достаточно одного регистра с 3-им состоянием (ИР22), куда РК86 пишет графические команды, а контроллер их считывает и исполняет. Такое устройство отображения может пригодиться для отладки контроллеров не имеющих своих средств отображения.

    Я хотел бы сам сделать такой компьютер, но очень не люблю возиться с железом и монтировать конструкции на слепыше. Да и пока занялся другими конструкциями и времени на это нет. Может быть кого-то заинтересует? У Вас будет шанс меня опередить и разработать схему такого компьютера или использовать идею для более грамотной конструкции.

    Ожидаю критику концепции и предложения, если что-то можно улучшить. Разумеется флейм в стиле "а зачем и кому это вообще надо?" здесь неуместен. Я всегда считал, что 29 корпусов в РК86 это не самый минимум для схемы простого БК. У меня есть идея и ещё одного такого же простого графического компьютера. Этот вариант похож, но использует ПДП, позднее можно обсудить и его.
    Последний раз редактировалось barsik; 20.04.2017 в 06:43.

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

  3. #2
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,404
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)
    Последний раз редактировалось HardWareMan; 16.04.2017 в 18:45.

  4. #3
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan
    Есть уже такой компьютер
    Ничто не ново под Луной (В.Шекспир). Ссылку на базу, пожалуйста. Или хотя бы назовите имя (надеюсь, что речь не о Галаксии, она ведь текстовая).

  5. #4
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,404
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    надеюсь, что речь не о Галаксии, она ведь текстовая
    Она самая, и не надейтесь. Более того, текстовый был только у стандартной:
    Видеорежим: только текстовый, 32 × 16 символов, монохромный
    Псевдографика: 2×3 точки на символ, 64×48 точек всего
    А Плюс уже была посильнее:
    Galaksija Plus — улучшенная версия компьютера «Galaksija», разработанная Nenad Dunjić и Milan Tadić в 1985 году[6][14]. Целью было расширить возможности оригинальной машины, сохранив низкую стоимость и простоту сборки.

    Отличия Galaksija Plus от Galaksija:

    Вместо статического ОЗУ применено динамическое, объём ОЗУ расширен до 48 КБ
    Скорость чтения/записи на кассету увеличена до 1200 бит/с
    Помимо стандартного текстового режима, добавлен монохромный графический 256 × 208 пикселов
    Звук: 3-канальный, с использованием микросхемы генератора звука AY-3-8912
    Добавлено ПЗУ C — содержит код специфичный для Galaksija Plus, в частности, код для работы графического режима
    Добавлено два параллельных порта ввода-вывода

    Компьютер производился в Institute for School Books and Teaching Aids и продавался по цене в 140 000 динар[6].
    - - - Добавлено - - -

    PS Ссылку вставил не сразу потому, что пытался вспомнить название. Сталкивался с ним очень давно, просто.

  6. #5
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Галаксия тут не раз всплывала в темах "гляньте какая диковина". Как вариант (чтобы не в 1:1 повторять пройденное в 1985 году), можно делать сразу видевыход VGA - микрокомп на камне в 10Мгц и быстрой статике. Это будет иметь смысл в наше время. У меня например на домашних TV уже и входов то нет куда можно подать обычный TV-сигнал. На телеках - HDMI и ВЧ (антенна), на мониках - VGA. Разве что на даче поискать TV прошлого века.

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

    И разрешение в 640pix
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  7. #6
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Галаксия использует обычную идею ZX80 с выводом на экран NOP-ами, как и немецкий BCS-3. NOP-ами вывод быстрее, но схема сложнее и экран жёстко фиксирован, никакой гибкости.

    Т.к изначально был текстовый режим, то вынужденная обеспечить совместимость, "Галаксия-Плюс" получилась более громоздкой, чем получилась бы изначально чисто графическая реализация.

    В моей концепции можно выводить на экран всего две строки текста, отображаемые в окне 16*256, причём с центровкой по вертикали, имея при этом почти максимальную скорость в 5.22 МГЦ. А "Галаксия-Плюс" так сумеет? Из-за применения NOP делать аппаратный ролик во все стороны и виртуальный экран она тоже не умеет. Да и деталей при моей концепции меньше.

    Кстати, в "Галаксия-Плюс" стоило сделать и цвет, оставив старый текстовый экран в статическом ОЗУ и используя его под атрибуты цвета в графическом режиме. Да и графический экран при такте 800 КГЦ вряд-ли был особо быстрым.

    Никто не видел процедуры визуализации линии в "Галаксии" и "Галаксии-Плюс"?

    Хотя однозначно стоит признать, что "Галаксия-Плюс" - это компьютер времён и народов, хотя и основанный на чужой идее. Жаль что югославские журналы нельзя было выписывать в СССР, как венгерские, ГДР-овские и болгарские. Опубликовали бы её в 1986 вместо РК86 в качестве гуманитарной помощи, то отечественная промышленность наладила бы выпуск сотен тысяч её клонов и тогда СИНКЛЕР бы не прошёл, отчего этот сайт назывался бы тогда "Galaxia-PK.ru".

    А действительно революционная идея простого компьютера на Z80, - это схема из журнала RFE 08.1987 (Grafikfahiger Microrechner mit U880). Да и графика 512*256 получше, чем 256*208. Там идея использовать регистр I и регистр R в качестве авто инкрементируемого экранного адреса. При этом программа вывода линии - это одна команда (HALT). А в выходной видео регистр экранный байт читается тактами RFSH.

    Используется никому неизвестный факт, что Z80 во время тактов RFSH выдаёт на старшую шину адресов содержимое регистра I (естественно в этом компе теряются прерывания в MODE 2, т.к для этого нужен регистр I). Я хотел делать такой компьютер в 1987, но не было даже дампа ROM-BIOS.

    Я бы считал гением автора Галаксии, если бы он применил свою идею, а не чужую. Так вот, немецкий компьютер это шедевр, а югославский - плагиат. Можете возразить?

    Цитата Сообщение от error404
    можно делать сразу видевыход VGA - микрокомп на Z80 в 10 Мгц и быстрой статике ... И разрешение в 640 пикселей
    Такт Z80 10 МГЦ лучше истратить для организации экрана 512*192. Считайте сами в 52 МКСЕК (время отображения линии растра) умещается 52 : (1:10)= 520 тактов процессора. Т.о для 640 точек нужна идея ZX80 с командами NOP, где на байт тратится не 8 тактов, а только 4. Там схемотехника посложнее, зато требования к такту CPU ниже. Кстати, при 10 МГЦ скорость будет (312-192) : 312*10 МГЦ = 3.884 МГЦ.

    А для VGA частота строк не 15.6 КГЦ, а 31.5 КГЦ. Т.е строчный период не 64 МКСЕК, а вдвое меньше. Значит разрешение экрана в лучшем случае будет 256*192. И мне кажется на такой частоте сложна отладка и сложно найти детали, чтобы тянули 10 МГЦ. 5-6 МГЦ это и так на пределе TTL-возможностей.

    Если заставить Z80 работать на такте 7.5 МГЦ, то можно получить компьютер 100% совместимый со СПЕЦИАЛИСТОМ (экран 384*256), к сожалению довольно тормозной. Из-за большого числа линий растра быстродействие составит всего: (312-256):312*7.5 = 1.346 МГЦ. Но для текстовых программ при числе линий 9*25=225 быстродействие составит (312-225):312*7.5 = 2.1 МГЦ.
    Последний раз редактировалось barsik; 20.04.2017 в 06:46.

  8. #7
    Activist
    Регистрация
    30.01.2008
    Адрес
    Minsk
    Сообщений
    225
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Очень забавное решение! Но, на мой взгляд, сегодня дефицита в деталях не должно быть. И такая архитектура только прибавит сложностей в написании программ. Но, как экзотика, очень даже интересная штука. Если цель уменьшение затрат на комплектующие, то FPGA может очень сильно помочь. С этими современными микросхемами можно поизвращаться на разной архитектуре, хоть вниз, хоть вверх

  9. #8
    Guru Аватар для Totem
    Регистрация
    13.12.2007
    Адрес
    Архангельск
    Сообщений
    2,189
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    11 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от rl76 Посмотреть сообщение
    Очень забавное решение! Но, на мой взгляд, сегодня дефицита в деталях не должно быть. И такая архитектура только прибавит сложностей в написании программ. Но, как экзотика, очень даже интересная штука. Если цель уменьшение затрат на комплектующие, то FPGA может очень сильно помочь. С этими современными микросхемами можно поизвращаться на разной архитектуре, хоть вниз, хоть вверх
    так и будет, вместо простого решения,"вкрянчить " непонятно что в платформу, где нормальных игр "кот налакал."
    Ты слыхал как грузится Flyshark ?! нет, совсем не тот, что на дискете...а Flyshark, тот самый блин Flyshark...тот ,что был когда то на кассете...
    zx spectrum 48 issuse 6a, Ленинград-1, zx spectum 128 +2 grey,Пентагон-128, ZXM-Phoenix 5.02 ( assembly)

  10. #9
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Totem
    так и будет, вместо простого решения,"вкрянчить " непонятно что в платформу, где нормальных игр "кот налакал"
    О чём это Вы? Вы что не поняли красоты схемного и программного решения? Девиз простота. А совместимость с кем-либо и с чем либо волнует меня меньше всего. Наоборот, я предпочитаю, чтобы не было совместимости ни с чем.

    При такте 5.5 МГЦ можно иметь 2 режима 256*192 и 288*192. Последний режим даёт при шрифте 6*8 текстовый формат 48*24. Всё реализуется программно. Позднее, если 62256 потянут без WAIT, то подниму такт до 6.19 МГЦ (имею кварц 12.38 МГЦ), что даст мне экран 320*200. Но скорее всего 150-ти наносекундные 62256 из 80-х годов не потянут столько, так что придётся их менять на 10-ти наносекундную статику, которая потянет и 20 МГЦ.

    При такте 5.5 МГЦ в режимах 256*192 и 288*192 на обратный ход луча соответственно остаётся ровно 96 и 64 тактов. Посмотрите насколько проста ВСЯ программа визуализации. Расход кода всего 44 байта, так что для ROM-BIOS хватит ПЗУ РФ2 на F800. Это просто красота, если кто понимает. Правда, это простой вариант без аппаратного ролика (т.е без перезарузки SP для каждой строки).

    Код:
    .
    	LD	A,(LINES)
    	LD	B,A
    	LD	SP,(EKRAN)
    VLOOP:	DEC	B		;  4 такта
    	JR	Z,EXIT		; 10 тактов
    
    	LD	HL,port_SSI	; 10 тактов
    	LD	(HL),0		; 10 тактов   выдаём ССИ
    	LD	(HL),1		; 10 тактов
    	NOP			;  4 такта
    	NOP			;  4 такта
    
    	 
    	POP	IX		; POP-ы для визулизации
    	. . . . . .
    	POP	IX
    	JR	VLOOP		; 12 тактов
    				= 64 такта		    
    
    EXIT:	LD	(port_KSI),A	; выдаём строб для КСИ
    	EI
    	RET			; возврат к программе пользователя
    А вот вариант с перезагрузкой экранного адреса перед выводом каждой линии. Такой вариант позволяет запрограммировать экран как у СИНКЛЕРА, и если надо, можно смотреть его скрин-шоты в монохроме. Это само-модифицирующаяся программа, потому она работает только в ОЗУ.

    Код:
    .
    	LD	B,LINES		; число визуализируемых линий
    	LD	HL,TABLE	; таблица содержащая адреса начал строк
    	LD	DE,2
    VLOOP:	DEC	B		;  4 такта
    	JR	Z,EXIT		; 10 тактов
    
    	LD	(port_SSI),A	; 13 тактов   выдаём ССИ
    	ADD	HL,DE		; 11 тактов
    	LD	(KORR),HL	; 16 тактов
    	LD	SP,IY		; 10 тактов   (это просто NOP в 10 тактов)
    
    ;	LD	SP,(nnnn)	; 20 тактов
    	defb	EDH
    	defb	7BH
    KORR:	DS	2
    	 
    	POP	IX		; 16 последовательных POP для визулизации
    	. . . . . .
    	POP	IX
    	JR	VLOOP		; 12 тактов
    				= 96 тактов		    
    
    EXIT:	LD	(port_KSI),A	; выдаём строб для КСИ
    	EI
    	RET			; возврат к программе пользователя
    Извиняюсь, но вероятно конкурентам желающим первыми реализовать эту концепцию, всё-же не удастся меня опередить. Т.к я немного перестарался и чересчур расхвалил предложенную концепцию, отчего сам заинтересовался этой идеей. Правда ранее я планировал вначале сделать компьютер на ПДП (та же идея, но на экран линию растра выдаёт ПДП с расходом всего 4 такта на байт, потому реализуется и на КР580), ну да ладно, этот компьютер намного проще.

    А у меня как раз с 90-х годов сохранилось работающее микропроцессорное ядро с Z80B на такте 9 МГЦ с двумя ОЗУ 62256, ПЗУ РФ2, ППА с разъёмом для клавиатуры и даже с адаптером магнитофона. Это отпилок из платы ЭКСПРЕСС, подключаемый когда-то к плате текстового адаптера. На 9 МГЦ для ППА и ОЗУ пришлось ввести 1 такт WAIT. А на 5.5 МГЦ работает и без WAIT. Осталось дополнить схемку выходными видеорегистрами, странслировать ROM-BIOS и заняться отладкой. Еще несколько дней я буду дописывать эмулятор одного компьютера, а затем скорее всего займусь этим "железным" проектом. Хочу сделать компьютер более простой, чем РК86 с его 29 микросхемами.

    А когда заработает (думаю недели через две-три), то вероятно, захочу ввести цвет CGA с разрешением экрана 160*128, чего хватит для конверсии цветных графических игр РК86 работающих в псевдографике 128*102. Такой цвет обойдётся всего в несколько TTL-корпусов. Можно сделать и полноценный цвет, введя параллельную банку w24257 для цвета, но это уже больше деталей и труда, да и архитектура тогда уже не останется линейной (в смысле без коммутации банок).

    PS: В данной концепции для вывода на экран можно использовать и команду POP HL, которая 10-ти тактовая. Тогда из 2-го байта, считанного POP-ом, на графику идёт только 2 бита, а остальные 6 идут на цвет. Но лучше с помощью WAIT удлинить POP HL до 12-ти тактов и в каждом байте брать 6 битов на графику и 2 бита тратить на цвет. Разрешение экрана это не меняет (оно зависит только от такта). Такая схемотехника удобна для шрифта 6*8, т.к такой шрифт получается таким же быстрым как байтовый. Для графики более удобен цельнобайтовый вывод. Поэтому надо решить, что важнее, - графика или быстрый вывод текста плюс простой цвет? Что посоветуют корифаны?

    Есть ещё вариант с POP IX, но 14-тью тактами (без удлинения WAIT-ами до 16 тактов). Тогда из каждого байта берём только 7 битов, оставляя 1 бит для цвета. Именно так сделано в Apple-II. Как ни странно, всего одного бита хватило Стиву Возняку, чтобы сделать в Apple-II 6 цветов (и никто не жаловался, даже ПРИНЦ ПЕРСИИ с таким убогим цветом всех устроил). В Apple-II в режиме графики высокого разрешения используется вот такой цвет. Я уважаю Apple-II и возможно сделаю такой цвет. Интересно, понравился кому-нибудь цвет Apple-II ?

    Цвет Apple-II


    Каждая точка на экране представляет один бит из буфера изображения. Семь из восьми битов каждого байта отображаются на экране в виде точек, а оставшийся бит используется для выбора цвета этих точек. В каждой линии на экране отображается 40 байтов. Наименее значащий бит (первый бит) первого байта в линии отображается у левого края экрана, за ним следует второй бит, третий и т.д. Самый значимый (восьмой) бит не отображается. Далее следует первый бит следующего байта и т.д. Всего 280 точек отображается в каждой из 192 линий на экране.

    На черно-белом мониторе или телевизоре, точки у которых соответствующие им биты установлены (т.е. равны 1) отображаются белыми; точки у которых соответствующие им биты сброшены (т.е. равны 0) отображаются черными. На цветном мониторе или телевизоре всё сложнее.

    Если бит сброшен, соответствующая ему точка всегда будет черной.

    Если же бит установлен, цвет соответствующей ему точки зависит от позиции этой точки на экране.

    Если точка располагается в самом левом столбце экрана, называемом "столбец 0", или в любом чётном столбце, тогда она будет фиолетовой.

    Если точка расположена в самом правом столбце экрана (столбец 279) или в любом нечётном столбце, тогда она будет зеленой.

    Если две точки расположены рядом, тогда обе они будут белыми.

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

    Таким образом в режиме графики высокого разрешения доступны шесть цветов, с учетом следующих ограничений:

    1. Точки в чётных столбцах должны быть чёрными, фиолетовыми или голубыми

    2. Точки в нечётных столбцах должны быть чёрными, зелёными или красными

    3. Каждый байт должен быть или фиолетово/зелёным или сине/красным байтом. Невозможно смешать цвета зелёный и голубой, зелёный и красный, или фиолетовый и красный в том же самом байте

    4. Две цветные точки расположенные рядом всегда отображаются белыми, даже если они относятся к различным байтам
    [свернуть]
    Последний раз редактировалось barsik; 20.04.2017 в 06:56.

  11. #10
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Система на одном проце получится дико неудобная для программирования и до крайности тормозная - из-за необходимости втискивать полезный код (код пользовательского процесса/приложения) чересполосно (по шкале времени) с кодом обслуживания дисплея, причем эти полоски-временные слайсы получаются очень мелкими, что даст дикие накладные расходы на переключения с контекста полезной нагрузки на контекст отрисовки дисплея.

    Надо ставить 2 процессора где один выполняет отрисовку дисплея, а второй тащит полезную нагрузку. Процы по доступу к памяти оба могут быть включены без WAIT - оба по аналогии от Ориона/Специалиста относительно друг друга в режиме "прозрачного ОЗУ" за счет временного смещения тактирования второго проца относительного первого и известной Орионовской схемы синхронизации Z80 c прозрачным ОЗУ.

    И что верно - такой аппаратно-программный контроллер дисплея может выдавать из памяти любой экран, например Спековский. И более того, он его таки уже выдавал - такой компьютер (ZX-Next с двумя Z80 где второй отрисовывает экран - комп 90х годов прошлого века как и Галаксия) на форуме подробно описан. Смысл его повторять может быть например в том, что на современных Z80 можно выдавать хоть TV, хоть VGA - частоты позволяют. Вот именно за VGA и стоит побороться.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

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

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

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

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

Похожие темы

  1. Самодельный компьютер на Z80 и не только
    от KeKc в разделе Разработка электроники
    Ответов: 1326
    Последнее: 17.11.2023, 12:01
  2. RC2014 — модульный бейсик-компьютер на Z80
    от foxweb в разделе Зарубежные компьютеры
    Ответов: 6
    Последнее: 27.07.2020, 00:52
  3. графический редактор
    от yur в разделе Вектор
    Ответов: 1
    Последнее: 08.11.2012, 13:01
  4. куплю самый простой спек! 48кб самый простой
    от REMR в разделе Барахолка (архив)
    Ответов: 9
    Последнее: 23.08.2008, 23:42

Ваши права

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