PDA

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



barsik
16.04.2017, 18:16
Предлагаю на обсуждение конструкцию очень простого графического компьютера на 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 это не самый минимум для схемы простого БК. У меня есть идея и ещё одного такого же простого графического компьютера. Этот вариант похож, но использует ПДП, позднее можно обсудить и его.

HardWareMan
16.04.2017, 18:28
Есть уже такой компьютер. (https://ru.wikipedia.org/wiki/%D0%93%D0%B0%D0%BB%D0%B0%D0%BA%D1%81%D0%B8%D1%8F_% 28%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5 %D1%80%29)

barsik
16.04.2017, 18:42
Есть уже такой компьютер

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

HardWareMan
16.04.2017, 18:58
надеюсь, что речь не о Галаксии, она ведь текстовая
Она самая, и не надейтесь. Более того, текстовый был только у стандартной:

Видеорежим: только текстовый, 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 Ссылку вставил не сразу потому, что пытался вспомнить название. Сталкивался с ним очень давно, просто.

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

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

И разрешение в 640pix

barsik
16.04.2017, 19:54
Галаксия использует обычную идею 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.

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


можно делать сразу видевыход 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 МГЦ.

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

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

barsik
17.04.2017, 14:23
так и будет, вместо простого решения,"вкрянчить " непонятно что в платформу, где нормальных игр "кот налакал"

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

При такте 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 ?


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

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

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

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

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

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

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

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

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

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

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

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

4. Две цветные точки расположенные рядом всегда отображаются белыми, даже если они относятся к различным байтам

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

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

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

rl76
17.04.2017, 17:47
Смысл его повторять может быть например в том, что на современных Z80 можно выдавать хоть TV, хоть VGA - частоты позволяют. Вот именно за VGA и стоит побороться.
Предлагаю не заниматься извращением и всё делать "влоб", как положено. Проще понимать, проще программировать, проще использовать. Современная элементная база или даже старые специализированные микросхемы в помощь.

Error404
17.04.2017, 19:20
Предлагаю не заниматься извращением и всё делать "влоб", как положено. Проще понимать, проще программировать, проще использовать. Современная элементная база или даже старые специализированные микросхемы в помощь.

Вы против того что люди фантазируют? Замечу, в разделе "разное". Наверное своими фантазиями вас этим отвлекли от куда как более серьезного проекта который вы вот-вот нам предъявите? Нет правда, мне тон сообщения не понятен, как и то почему оно адресовано мне - мое предложение ничуть не более экзотическое чем тут уже прозвучавшие, а наоборот - наиболее очевидное в направлении чтобы используя предложенную топикстартером идею, можно было выдать реальный аппарат, который "проще программировать".

barsik
17.04.2017, 19:27
Предлагаю не заниматься извращением и всё делать "в лоб"

Jedem des Seine. Каждому своё - любимая поговорка Гитлера.

А какой интерес, повторять то, что до тебя уже сделали тысячи раз? Сюжет-то вовсе не в том, чтобы получить 8-ми разрядный компьютер, даже с выдающимися свойствами. Мне это как раз не важно. У меня уже есть 5 разных 8-ми разрядок, потому сюжет не в том, чтобы получить ещё одну.

В данном случае интерес как раз и заключается в "извращении". В реализации идеи, которую я когда-то обдумывал, тщетно пытаясь обойти ограничения железа, но так и не сделал, т.к на КР580 эта идея не работает. Сюжет заключается в том, чтобы проверить концепцию. А также и доказать, что реально было сделать компьютер лучше, чем РК86, истратив меньшее число деталей (естественно того же периода). Кстати, интереснее было бы получить экран в 256 точек на КР580, но пока, кроме использования ПДП и тупой идеи двух одновремнно читаемых банок, ничего не придумал. Кто-нибудь может разработать такой простейший компьютер на КР580 с экраном в 256*192?

Кстати, что получится, если делать графический компьютер "в лоб"? Если сделать экран шириной в 256 точек, то получится СИНКЛЕР. Если сделать экран в 320, то получится ИРИША в цвете. А если сделать экран в 384, то в монохроме получится СПЕЦИАЛИСТ, а в цвете ОРИОН. С экраном в 512 получится Вектор. А с экраном в 640 снова получится ИРИША, но в монохроме.

Да и что можно изменить в "лобовых" вариантах? Можно поменять микросхемы в видеогенераторе (ИЕ5, ИЕ7 заменить на ИЕ10, ИЕ19). Можно умнее организовать цвет и разогнать Z80B до физического предела, используя интенсивное водяное охлаждение. Но мне это не интересно. И тратить труд и время (паяя целый комп), только для того, чтобы спаяв его, с ужасом убедиться, что программ для него нет и не предвидится, - нет особого желания. Естественно, тут кто-то скажет, что надо применять ПЛИС. Но в этом я ничего не понимаю, и это не интересно.

Поэтому в наше время интерес представляют именно извращения. В данном случае это аппаратно программный компьютер, оттого интересно проверить в реале саму концепцию и найти оптимум. Я уверен, что есть лучшие варианты. Да даже тот же вариант с цепочкой NOP даёт вдвое лучшее разрешение и реализуем с тактом уже в 3 МГЦ. Аналогичный вариант с ПДП тоже даёт вдвое лучшее разрешение. Но пайки больше, напряжения мозгов больше, а это меня пугает. В предложенном варианте, по крайней мере, всё просто и ясно. Если бы я хотел повторять чужое, то я бы повторил BCS-3, он грамотнее, чем ZX80 (т.к экран в нём не мигает).

Я и паять-то собрался только потому, что есть уже готовая платка куда без больших трудозатрат остаётся добавить недостающее. Для меня больше интереса написать ROM-BIOS, чем припаять недостающие 5-6 микросхем и отладить.

HardWareMan
18.04.2017, 06:56
Error404, и такой компик, ЕМНИП, тоже был. Но это было очень давно, более 8 лет назад, вроде. Но тут я согласен: если сделать двухпроцессорную систему и одно ядро не отвлекать от видеорендеринга, то может получиться годно, даже псевдовекторная графика (растеризованный вектор). Либо можно потушить экран и долбануть расчет на двух процессорах, что тоже вкусно.

Кстати, яркий пример подобной идеи (но к сожалению не вышеупомянутого компьютера, я если вспомню то обязательно сообщу) это Пропеллер. Куча "видеоприставочек" на нем наклепали. А что, удобно же, 8 ядер, общая память.

barsik
18.04.2017, 11:47
Сейчас меня интересуют другие проблемы, не двухпроцессорность. Пока обдумывал реализацию, у меня возникла ещё пара соображений. Текста много, но если не нравится, - не читай ! А то потомки Эллочки-людоедки, те, кто общаются одними междометиями, ставят в упрёк, что якобы я пишу простыни. Если админ не запретил, то кого это волнует?

Идея двух процессорности не нова. Один знакомый сделал из ИРИШИ комфортабельный терминал к плате СИНКЛЕРА в 1989. Именно так - терминал, а не двух процессорная система. Понятно, что преимущество такой системы в том, что можно разгонять основное ядро используя водяное охлаждение (до физического предела 10-ти нано секундных ОЗУ и 20-ти мега герцовых Z80). Особого смысла в этом не вижу, кроме того, что имея большую скорость можно эмулировать любой другой комп, у кого графический экран хуже по разрешению. Но я не вижу никого, кого бы интересовала эмуляция на Z80. А мне для эмуляции в реальном времени надо не менее 25 МГЦ скорости Z80.

Впрочем, такта 10-12 МГЦ хватает для более-менее приемлемой эмуляции РК86. Но сейчас в этом нет интереса, который был в начале 90-х,- теперь у всех есть PC с эмуляторами. А других сфер применения для скоростной двух процессорной системы не вижу. Хотя двух процессорная система с таким тормозным терминалом имеет одно применение - это недорогой "чисто CP/M" компьютер с довольно приличной скоростью Z80 в 8 МГЦ (Z80B).

Хотя для CP/M-системы я бы рекомендовал внешний текстовый адаптер (10 ИМС МП-ядро и 30 ИМС текстовый адаптер), но, и данную концепцию можно использовать в качестве убогого текстового терминала, если придумать, как получить экран хотя-бы в 400 точек по горизонтали. Тормознутость Z80 ~2.3 МГЦ в терминале не особо важна, т.к критична только скорость ролика, а здесь это можно делать быстрее, используя переназначение адресов строк, что ускоряет ролик в 10 раз.

Может быть сделаю в итоге двух процессорную систему (10 МГЦ, например, для эмуляции СПЕЦИАЛИСТА и РК86), но так далеко не планирую. Я хотел бы получить лишь дешёвый вариант цветного бытового компьютера с минимальным числом корпусов (параметры не особо важны). Для чего достаточно экрана 256/288 точек, что даёт 42/48 символов в строке (фонт 6*8). Склоняюсь к мысли, что оптимальным будет не байтовая организация экрана, а шести-битовая, т.к это одновременно решает 2 проблемы. Это удобнее также и, чем ниже описанная, более сложная в программировании, но дающая лучшее разрешение 15-ти битовая система (смотри далее).

Шести-битовость, во-первых, в 3 раза ускоряет вывод шрифта 6*8. Во-вторых, даёт возможность получить 8 цветов на экране минимальной ценой. К тому же при сохранении линейной организации памяти. В третьих, отпадают проблемы раскраски шрифта (как на ОРИОНЕ). Для цвета использую идею Стива Возняка (именно поэтому привёл ранее описание цвета в Apple-II). Итак, если не будет лучших идей, то будет так. Визуализация командой POP HL, 12 тактов на вывод 2-х экранных байтов. Из каждого экранного байта 6 битов идут в сдвиговый регистр и затем в телевизор, а 2 бита тратятся на цвет.

Пока не решил как использовать эти 2 бита, т.е какой цвет сделать. Тут 2 варианта. Первый вариант, удобен лишь для текстообработки. Это 4 предустановленных цвета (расход деталей в 155РЕ3). Второй вариант - это 8 цветов, но с потерей цветового разрешения по горизонтали, более подходит для игр. В таком варианте, цвета 00 и 01 - это 2 предустановленных цвета (жёлтый на синем и желтый на красном). А сочетания 10,11 закрашивают только те пиксели, где бит в единице и дают 2 цвета по принципам Apple-II, т.е для четных точек имеем 2 цвета, а для нечётных точек 2 других цвета. Если две соседних точки засвечены, то они белые, все погашенные точки чёрные. Т.е это в чистом виде цвет Apple-II с добавкой 2-х предустановленных цветов. Такой вариант даёт больше возможностей, но требует больше корпусов.

Думаю, 2-х битовый цвет меня не устроит и придётся сделать более грамотный цвет. Для чего я добавлю параллельную банку ОЗУ 6514 (это древняя 4-х разрядная скоростная статика из 80-х, аналог 2114/541РУ2). В данной концепции удобно ставить параллельные банки с другим методом адресации (т.к нет адресных мультиплексоров). Для этого адреса 6514 A0...A9 будут адресоваться следующими сигналами шины: A0...A4, A8...A12. Т.к адреса A5-A7 пропущены, 8 линий будут одинаковыми, что и даёт знакоместный цвет, как в ZX-Spectrum. Только знакоместо 6*8 и организация иная. 4 бита для цвета символов считываются из ОЗУ 6514, а цвет фона берётся из 2-х излишних битов экранной плоскости. Но ОЗУ 6514 не включено в адресное пространство, а цвет в него автоматически пишется из 4-х битового регистра цвета. В принципе, можно и два бита каждого экранного байта писать из регистра цвета, но на это надо лишние 2 корпуса. Цвет с автозаписью из регистра цвета впервые применён в СПЕЦИАЛИСТЕ и оказался самым быстрым цветом 8-ми разрядок.

Чтобы увеличить в 1.5 раза разрешение или во столько же раз понизить такт Z80, придумал следующее:

Цель - получить 15 импульсов для сдвигового регистра за 10 тактов процессора. Для этого ставим кварц 16.5 МГЦ (уже имею) и делим его на 3, получая такт Z80, и на 2, получая такт сдвига точек. Тогда разрещение увеличивается в 1.5 раза. Экран читается командой POP HL, что длится 10 тактов и читает в регистры 16 бит. За 10 тактов на экран выдвигается 15 пикселей. Считаем, какой тогда возможен минимальный такт. 17 команд POP HL читают 17*15=255 пикселей. А это 17*10=170 машинных тактов. Тогда пиксельный период равен 52 МКСЕК : 170, частота 3.269 МГЦ. Столько КР580 потянет, но лишь вместе с ВК28.

Жалко. А если согласиться на меньший экран? 15*15=225 точек. А требуемый такт КР580 составит 1: (52:150)= 2.88 МГЦ. А вот это уже КР580 вполне потянет. 225 точек дают текстовый формат в 37 символов в строке. Немного, но и в таком режиме писать программы на ассемблере можно. К тому же 1 лишний бит остаётся для цвета.

Теперь посчитаем, какой максимальный формат экрана получается при 15-ти битовой системе с Z80 на такте 6 МГЦ. При 6 МГЦ в 52 МКСЕК развёртки умещается 312 машинных тактов, это значит 31 команда POP длиной в 10 тактов, что дают 31*15= 465 экранных пикселей. А при кварце 10 МГЦ за 52 МКСЕК выполняется 52 POP-а, что дает 52*15= 780 пикселей (значит с частотой строк VGA будет 390 точек).

Посчитаем, какой минимальный такт Z80 нужен для экрана в ~400 точек. 27*15=405, значит надо 27 POP-ов. При 10-ти байтовых POP HL они длятся 270 маш.тактов и 52 МКСЕК. А это соответствует такту Z80 в 5.19 МГЦ. При 5.5 МГЦ будет удобен экран в 420 точек, что реализуется 28-ю командами POP HL. Экран 420*192 точек при шрифте 7*8 даёт текстовый формат 60*24. А при шрифте 6*8 будет 70 символов в строке. Такой режим привлекателен, но смущает, что придется писать хитрый драйвер текста, а главное невозможно полноценно раскрашивать шрифты, т.е это вариант скорее для монохрома и игр.

Раз дочитали, вот Вам совсем досужие рассуждения "в пользу бедных":

Если можно ограничиться маленьким разрешением экрана (например для индикации в контроллере), то вывод линии растра можно делать командами LD A,(HL) : INC L, что вместе занимают 11 тактов, но читают из экрана только 1 байт. Для текстового вывода этого достаточно (8 точек на символ и 3 точки межсимвольная пустота). При такте 5.5 МГЦ это дает 288:11=26 символов в строке. Зато при этом отпадают 2 регистра и расход деталей на видеовывод становится совсем маленьким.

Удлинив с помощью WAIT команду чтения экрана на 1 такт, получаем 12 тактов, тогда получить 6 импульсов из такта Z80 не проблема (делим на 2). Тогда при такте Z80 в 6 МГЦ получаем разрешение 168 точек по горизонтали или 26 символов в строке при шрифте 6*8. Экрана 168*128 для текстообработки явно мало, но для игр хватит. Можно подумать и о таком варианте. Стоит это экономии в 2 дорогостоящих регистра?

error404, для VGA эту же самую идею надо реализовать на ПЛИС, которые вроде бы достаточно скоростные для этого.

Shumadan
19.04.2017, 19:34
я понимаю, что в первую очередь интерес - это создание такого компа, но какая то программная совместимость намечается?

bigral
19.04.2017, 21:26
Тема насамделе на 90% про графический и токо на 10% про компьютер, и тут она созвучна с темой что максимум можно выжать из ВГ75 (только в более широком смысле).

Думаю интерес к теме будет если:
1. НЕ лепить Z80 (~5000тр) всего-то как ГОЛЫЙ видеоконтроллер (типа как в ZX80/81). Потому что универсальный проц не для спец функций совсем, и в таком случае логичнее влепить v9958 ($12). В принципе можно добавить его как часть адаптера для обеспечения гибкости (пример КЦГД для ДВК);
2. НЕ лепить "новодел" (это ARM, AVR, CPLD, FPGA...) потому что тогда - берите ISA VGA чип и 16/32bit процессор и будет Вам свой собственный недо-ATARI ST;
3. ЛЕПИТЬ на 74ALS и PAL/GAL (RT1,2,4,5,7...);
4. качество картинки должно быть не хуже чем у ZX-а (минимум как у Вектор-а) а скорость в разы быстрее чем у ZX-а.

(т.е. по-моему мнению тема будет интересна если слепить шото по моще как Sega MASTER / MSX2+ но свое "на рассыпухе")

barsik
20.04.2017, 00:01
какая то программная совместимость намечается?

Если говорить о простейшей конструкции, что я планирую сделать, то в силу того, что я не смогу иметь быстродействие выше 6 мгц, что даёт не более 288-320 точек в строке, а компьютеров с таким экраном нет, то просто не с чем совмещаться аппаратно. Но программно, т.е по входным точкам принятым в отечественных ЭВМ совместиться не проблема.

Было бы неразумно не иметь стандартных для отечественных 8-ми разрядок входов F803, F806, F809... Уже только одно это позволяет использовать кое-какое ПО, например ассемблер, теоретически даже BASIC (если удастся найти версию, что работает на Z80, а то у меня на Z80 не работали бейсики ни на СПЕЦИАЛИСТЕ, ни на ОРИОНЕ, в чём дело не знаю).

Но смысл в этих входах не в совместимости, она не волнует. Т.к то ПО, что я хотел бы на этом компе посмотреть, есть в исходниках, и нет проблем странслировать их с другими параметрами. А почти всё остальное системное ПО РК86 и ОРИОНА требует иного числа строк и без переделок всё-равно не годится. Эти входы удобно иметь только в силу привычки, чтобы не надо было запоминать других стандартов.

shurik-ua
20.04.2017, 01:32
ZX-NEXT приходит на ум, читая эту тему )

MM
20.04.2017, 04:02
Нечто похожее использовалось в ДУ совковыми телеками на ВЕ51 в начале 1990-х, с индикацией огромных русских букв на экране .
Вероятно, могли быть и прототипы на Z80, т.к. ТВ с OSD продавались гораздо веселей, и их можно было внешне разукрасить под "Японию".

barsik
20.04.2017, 12:58
ZX-NEXT приходит на ум, читая эту тему

Вероятно на это же намекал и HardWare Man.

Много часов читал тему о ZX-NEXT http://www.google.ru/url?q=http://zx-pk.ru/threads/112-rasskazhite-o-zx-next.html&sa=U&ved=0ahUKEwi9qveh57LTAhUDXSwKHRUICtwQFggbMAE&usg=AFQjCNGsbtNYJPeSl8lFxIfLw0t__2GENw, в которой куча корифанов 5 лет кракали защиту ПЗУ РФ2 с помощью плавающих битов. Слышал о такой защите в начале 90-х, но думал, что это "городская легенда". Интересно, что автор железа этого компьютера все 5 лет участвовал в обсуждении, но не удосужился даже рассказать принцип работы или хотя бы о назначении элементов схемы, что всё облегчило бы, а когда прошивку кракнули, исчез с горизонта.

Посмотрел исходник прошивки VPU и понял, что ZX-NEXT это совсем другое. Что-то очень сложное. Понять как это работает можно только анализируя схему и исходник прошивки. Тратить десяток часов напряжения мозгов на то, чтобы разобраться в такой сложной железке, ещё более жёстко завязанной на программу, чем предложенная выше, не собираюсь. Но насколько я понял, там Z80 формирует не видео, а только сигналы синхронизации и управляет железом. Т.е ZX-NEXT ничего общего с предложенной концепцией не имеет. Это даже не двухпроцессорная система, второй Z80 не может там сделать никакой работы для пользователя.

Хотя до начала пайки ещё далеко (дня 3, минимум), но разработка схемотехники двигается. Для меня не вопрос, как использовать эту концепцию с Z80, но по-прежнему главный интерес получить вариант простого компьютера на КР580 (если кто не знает, Z80 в 1986 был недоступен).

Итак, вчера я придумал новую концепцию, позволяющую ещё понизить требования к CPU без существенного увеличения количества корпусов.

Теперь для видео вывода будем использовать 7-ми тактовую команду LD A,(HL), удлинив WAIT-ом её до 8-ми тактов. Или же без такого удлинения, т.е 7 тактов, что даёт лишь 7 битов для графики, оставляя 1 бит для примитивного цвета (как в Apple-II). Изменение считываемого адреса будет теперь делаться не программно, а аппаратно. С помощью счётчика 561ИЕ10, который формирует 6 адресов A0...A5 и по каждому обращению Z80 в экран инкрементируется по окончанию сигнала /CS экран. Для коммутации адресов в режимах Video/User используется две КП11-тых. Но т.к в такой схеме достаточно одного выходного видео регистра, число корпусов не растёт.

Семибитовый видеовывод при 37-ми командах LD A,(HL) в строке работает при такте Z80 всего в 5 МГЦ. При такте 6 МГЦ можно иметь уже 44 байта в строке и 44*7=308 точек по горизонтали. Но я предпочитаю 40 байтов в строке, чтобы всё было как в Apple-II и такт 5.5 МГЦ. Экран в 280*192, как у Apple-II с его же убогим цветом - это то что надо для дешёвой бытовой ЭВМ 1986 года. И обеспечивает минимальное число корпусов. При такте 5.5 МГЦ и 192-х линиях быстродействие - 2.12 МГЦ.

Однако для меня главная задача реализовать идею-бзик - сделать комп на КР580.

Итак, имеем КР580 на такте 2.75 МГЦ (кварц 11 МГЦ). Ставим параллельно две банки w24257 по 32К каждая. В режиме видео командой LD A,(HL) читаются сразу обе эти банки. Байты защелкиваются в 2-х регистрах одновременно и последовательно выдвигаются на телевизор. Т.к при этом обе банки читаются одновременно, для развязки шины второй банки потребуется буфер АП6.

Итого, расход деталей при КР580 больше на 3 или 4 корпуса, но зато имеем экран 280*192 при 6-ти цветах с процессором КР580. Это получится самый простой в мире компьютер на КР580, довольно тормозной, но не самый худший по совокупности параметров. Быстродействие КР580 при такте 2.75 МГЦ составит - 0.39*2.75= 1.06 МГЦ, столько же сколько у Apple-II. Но скорее всего, КР580 без проблем удастся разогнать до 3.1 МГЦ, что даст реальный такт в 1.2 МГЦ, почти как в РК86.

Насчёт двухпроцессорной системы. Как планируется подключать процессоры друг к другу?

Лобовой примитивный вариант это интерфейс - регистр для связи (два несвязанных ядра) основной процессор пишет туда команды, подчинённый исполняет. При этом нет доступа основного процессора в ОЗУ видео контроллера. Т.е это просто терминал, а компьютер получается не графический.

Если иметь общую шину, то как это сделать? На ум приходит двухпортовое ОЗУ (слышал, но не видел). Или же какая-то схема синхронизации. Приоритет у видео процессора, А сразу после обращения видео процессора даётся "люк" для доступа к ОЗУ основного процессора. Можно сделать отключение локальной шины видеопроцессора, когда основной CPU работает со своим 10-ти наносекундным ОЗУ на полной скорости в 20 МГЦ. Подключение к экранному ОЗУ и вывод можно делать во время обратного хода по кадрам, отановив HOLD-ом видео процессор, чтобы не мешал.

hobot
20.04.2017, 13:37
как в Apple-II
вполне достаточно для LODE RUNNER и ШАХМАТ! )

Error404
20.04.2017, 14:21
Если иметь общую шину, то как это сделать? На ум приходит двухпортовое ОЗУ (слышал, но не видел). Или же какая-то схема синхронизации. Приоритет у видео процессора, А сразу после обращения видео процессора даётся "люк" для доступа к ОЗУ основного процессора. Можно сделать отключение локальной шины видеопроцессора, когда основной CPU работает со своим 10-ти наносеундным ОЗУ на полной скорости в 20 МГЦ. Подключение к экранному ОЗУ и вывод можно делать во время обратного хода по кадрам, отановив HOLD-ом видео процессор, чтобы не мешал.

Для варианта со статическим ОЗУ, развести два процессора электрически (по времени разводить двухпортовостью памяти не требуется т.к. функционально они работают в "противофазе" в режиме "прозрачного ОЗУ" оба) будет стоить 4 КП11 для коммутации доступа двух шин адреса к ОЗУ и две АП6 для коммутации шины данных. Да, некоторое усложнение, но и решение не самое типовое для того времени (а потому - стоит того).

xailar
20.04.2017, 15:07
barsik,

На ум приходит двухпортовое ОЗУ (слышал, но не видел).
журнал МПСС ВАМ в руки и почитать - там есть схема и принцип работы

Totem
20.04.2017, 15:52
Если иметь общую шину, то как это сделать? На ум приходит двухпортовое ОЗУ (слышал, но не видел). Или же какая-то схема синхронизации. Приоритет у видео процессора, А сразу после обращения видео процессора даётся "люк" для доступа к ОЗУ основного процессора. Можно сделать отключение локальной шины видеопроцессора, когда основной CPU работает со своим 10-ти наносеундным ОЗУ на полной скорости в 20 МГЦ. Подключение к экранному ОЗУ и вывод можно делать во время обратного хода по кадрам, отановив HOLD-ом видео процессор, чтобы не мешал.
У меня идея следующая была, 2 страницы видео озу,
пока процессор пишет/читает в одну страницу(микросхему VRAM1), видео карта отображает другую VRAM0, пишешь в порт видеокарты ( сменить страницу), теперь отображается страница с которой только что работал проц (VRAM1) Для проца разницы нет, для него видеопамять всегда отображается скажем с 0000h.
Шины у VRAM раздельные и подключаются к адресному пространству процессора по его требованию.
Корпусов конечно больше, но процессор не тормозится совсем, видеопроцессор выводит любой "разумный" цвет и разрешение.
так как используются sram 15-20 ns с кэшей 486 ,Р1 , чем быстрее процессор тем лучше. сам видеопроцессор может быть простым на дискретной логике.
подробнее тут.
http://zx-pk.ru/threads/26909-prostenkaya-videokarta-dlya-8-bit-podelok.html

hobot
20.04.2017, 15:53
журнал МПСС ВАМ в руки и почитать - там есть схема и принцип работы
копия раздачи собрания журнала с известного трекера тут
http://archive.pdp-11.org.ru/BIBLIOTEKA/MPSS/

LeoN65816
20.04.2017, 16:00
barsik,

журнал МПСС ВАМ в руки и почитать - там есть схема и принцип работы

http://www.efo.ru/doc/mp/mp.pl?2519
http://www.efo.ru/doc/mp/asyncmpsram.htm
http://www.idt.com/products/memory-logic/multi-port-memory/asynchronous-dual-port-rams
http://www.cypress.com/search/psg/1239#/?_facetShow=fs_pdensity_kb_,ss_porganization_x_x_y _,fs_pspeed_ns_,fs_pmin_operating_voltage_v_,fs_pm ax_operating_voltage_v_,ss_ppackage,ss_pautomotive _qualified,ss_ptemp_classification,fs_pmin_operati ng_temp_c_,fs_pmax_operating_temp_c_

kuber
20.04.2017, 16:35
Приветствую всех на форуме.
Лет 12-15 назад делал свой комп на Z80 с графическим экраном, в начале 256х256х1 использовал классическую схему - мультиплексоры, счётчики, куча логики, процессор при обращении к видео озу имел доступ по строчным СГИ и кадровым КСИ и Wait.
Быстродействие было приемлемо. Громоздкость системы компенсировал блочной конструкцией.
После модернизировал графический адаптер , заменил синхрогенератор, счётчики и логику на ATmega8535, размер адаптера сильно уменьшился.
Следующая модификация, увеличил память до 64кбайт добавил регистр защёлку и RDAC, получил 8 бит цвета , кодер PAL - 1145.
Под те задачи в полне хватало.
Очередная модернизация графического адаптера привела к тому что я выбросил всё связанное с Z80 за не надобностью.
Как оказалось всё под силу меге.
Последняя модификация привела к тому что в схеме осталось только 2 микросхемы мега32 и озу 64 кбайт, даже кодер PAL выкинул, пытался цвет
генерить мегой, так толком и не вышло, цвет был, но не ахти, блёклый и без зелёной составляющий.
Быстродействие системы без Z80 снизилось до 1 кадра.сек смены экрана.
Итог - интерес пропал, проект забыт.
Долгие годы вынашиваю идею взяться за разработку своего простого графического компа на микропроцессоре и современной элементной базе.
Склоняюсь к Z80 за основу.
На данном форуме рассматривается идея с 2 процессорами и прозрачном озу - очень интересная, тем более я уже похожую систему описал выше.

Есть интересная идея использовать последовательное SPI ОЗУ типа 23К512 (64кбайт) или больше , настроить на режим SQI (Serial Quad Interface)
- получится на цвет 4 бита.
Как формировать изображение из последовательной памяти DataFlash (AT45DB081) у меня уже опыт есть.
По ссылке видео работы графического модуля отображения черно белого изображения из памяти DataFlash. Проект на мега8 и AT45DB081.
http://radikal.ru/video/X0jss7ctICA

shurik-ua
20.04.2017, 19:03
Проект на мега8 и AT45DB081.
Попробуйте ПЛИС - вам понравится )

LeoN65816
20.04.2017, 19:32
Итого, расход деталей при КР580 больше на 3 или 4 корпуса, но зато имеем экран 280*192 при 6-ти цветах с процессором КР580. Это получится самый простой в мире компьютер на КР580, довольно тормозной, но не самый худший по совокупности параметров. Быстродействие КР580 при такте 2.75 МГЦ составит - 0.39*2.75= 1.06 МГЦ, столько же сколько у Apple-II. Но скорее всего, КР580 без проблем удастся разогнать до 3.1 МГЦ, что даст реальный такт в 1.2 МГЦ, почти как в РК86.
barsik, это тупик... Еще и на 580-м... Еще и с таким эффективным тактом...
580-му в Орионе/Специалисте/Векторе жутко тяжело с обычным 1bpp, а тут с такой "геморройной" схемой цветокодирования и количеством байт в строке не равным n-ой степени двойки - так тем более ему пыхтеть и пыхтеть... А если тебе еще и разложение строк "захочется" повторить от яблочка - дык, вообще слов не находится...
Это еще имеет какой-то смысл, когда уже есть програмье под этот режим, но в твоем случае, когда количество программ равно нулю, какой смысл в этом?


Попробуйте ПЛИС - вам понравится )
:v2_dizzy_punk:

Totem
20.04.2017, 20:01
POP HL : LD (NN), HL 13 тактов?

barsik
20.04.2017, 20:48
POP HL : LD (NN), HL 13 тактов?

Не нашёл, где я такое писал. В 3-х блоках кода, что приведены на стр.1 этой темы вроде бы такого нет. В каком посте я допустил эту ошибку?



.
POP HL ; 10 тактов
LD (nnnn),HL ; 16 тактов


Даже, если бы я где-то в подсчётах тактов ошибся (а такого пока не увидел), то это не важно. Смысл примеров процедур видеовывода был показать, что времени обратного хода луча по строкам это от 12 МКС до 32 МКСЕК, что при выбранных тактах CPU даёт от 64 до 200 машинных тактов, вполне достаточно, чтобы сделать строб в адрес памяти или порта (что инициирует вывод ССИ на АГ3) и даже хватает на загрузку SP или HL адресом следующей строки и всё-равно ещё несколько десятков тактов приходится добирать NOP-ами. Главное, чтобы полное число тактов в строке умноженное на период машинного такта давало ровно 64 МКСЕК и даже если это не так, то дипазон захвата автоподстройки частоты строк это стерпит.


это тупик... Еще и на 580-м... Еще и с таким эффективным тактом...
580-му в ОРИОНЕ/СПЕЦИАЛИСТЕ/ВЕКТОРЕ жутко тяжело с обычным 1bpp, а тут с такой "геморройной" схемой цветокодирования и количеством байт в строке не равным n-ой степени двойки - так тем более ему пыхтеть и пыхтеть...

Не думаю, что это такая уж трагедия. Смотрите, соотношение объёма экрана к такту в СПЕЦИАЛИСТЕ 12:2=6, а здесь 7.68:1.2=6.4. А для Z80 варианта вдвое больше. Не знаю как в ВЕКТОРЕ, но в СПЕЦИАЛИСТЕ и ОРИОНЕ авторы сдуру применили небайтовый шрифт, отчего у них скорость вывода упала в 3 раза. При такой дурости никаких скоростей КР580 никогда не хватит. Именно поэтому ещё в 1988 я перевёл СПЕЦИАЛИСТ на байтовый шрифт. Здесь же шрифт байтовый, скоростной, цвет вообще не тормозит (никаких ненужных переключений банок), цвет заносится самой графикой. А, если цвет применить не эпловский, а знакоместный (доп. ОЗУ 6514 с автозаписью из регистра цвета), то и Z80 с тактом в 8 МГЦ не сможет выводить цвет быстрее (т.к цвет выводится мгновенно без потерь на это ресурса).

Но главный довод. Ни СПЕЦИАЛИСТ, ни ОРИОН, ни даже ВЕКТОР не могут сделать аппаратный ролик, а это самая критичная к скорости CPU процедура.

Что касается графики. Да, при некратности числа пикселов на экранный байт степени двойки - чуть хуже. Но чем это хуже, чем, например, при числе пикселей на экранный байт в 4? Один лишний сдвиг вообще на скорости не отразится. Но главный довод другой. Графика вообще не понадобится.

Этому компьютеру не грозят красивые графические игры уровня СИНКЛЕРА (и даже уровня ZX80). Максимум из игр, что возможно получит этот компьютер, это адаптации чисто текстовых игр от РК86, оцвеченных под такой цвет. Всё остальное чисто текстовые программы. Поэтому, конечно, 6-ти битовый вывод предпочтительнее, чем 7-ми битовый (большее число сиволов в строке), а 7-ми битовый предпочтительнее 8-ми битового. Мы же не хотим иметь всего 32 символа в строке, как в ZX-Spectrum? Я ещё не решил лучше 6-ти битовый вывод или 7-ми битовый. У 6-ти битового символов больше и цветов тоже больше (есть хоть какой-то цвет для текстов).

Из программ, всё на что может рассчитывать этот компьютер это мой текстовый редактор для РК86 с блоками (4 кб), мой макроассемблер (увы в мнемонике КР580, т.к писалось давно), бейсик от РК86, несколько ДОС (в т.числе CP/M) работающие с внешним эл.диском в 256К на статике (а возможно и с винтом) и соответственно Нортоны для каждой из этих ДОС. И всё.

Небольшой проблемой представляется только интерфейс с IBM PC. Т.к из-за специфики, тут ВВ51 не применить. Ничего, протокол передачи по нескольким проводам с опросом готовности сможет качать со скоростью 1 кб в секунду, а при погашенном экране и более. Впрочем, можно и ВВ51 (что даёт аж 4 кб/сек), если гасить экран на время передачи.

Ещё не решил с чего начать макетирование. С варианта Z80 или КР580 (готовое ядро с КР580 на такте 3.5 МГЦ у меня тоже сохранилось).

Подумал о переделке РК86 в такой компьютер. К сожалению, есть проблема. Т.к регенерация ОЗУ будет только во время вывода растра, а на время обратного хода кадровой развёртки, что длится (312-192)*20 МСЕК = 7.69 МСЕК регенерация ОЗУ прекращается. РУ5-тые с периодом регенерации в 2 МСЕК и РУ7-мые с периодом регенерации в 4 МСЕК работать не смогут. Только SIMM 1 мб с периодом регенерации в 16 МСЕК смогут работать. Идея оставить в РК ПДП и стартовать его на время обратного хода луча по кадрам при такте 3 МГЦ тормознет прогон на 15% и не кажется мне удачной идеей.

Totem
20.04.2017, 22:24
barsik, дело хозяйское, я просто предлагаю не скатываться до компов-терминалов, их наплодили уже столько, что просто смешно, а соблюсти количество корпусов/цвет / производительность/цена -и главное совместимость, вполне реально.
ждем реализацию, давно лежат "корпуса" под РК86, он прекрасен для времени, когда один магнитофон и один РК на целый дом. :)

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


Подумал о переделке РК86 в такой компьютер. К сожалению, есть проблема. Т.к регенерация ОЗУ будет только во время вывода растра, а на время обратного хода кадровой развёртки, что длится (312-192)*20 МСЕК = 7.69 МСЕК регенерация ОЗУ прекращается. РУ5-тые с периодом регенерации в 2 МСЕК и РУ7-мые с периодом регенерации в 4 МСЕК работать не смогут. Только SIMM 1 мб с периодом регенерации в 16 МСЕК смогут работать. Идея оставить в РК ПДП и стартовать его на время обратного хода луча по кадрам при такте 3 МГЦ тормознет прогон на 15% и не кажется мне удачной идеей.
но ведь можно просто как предложено по видео и просто использовать ПДП/DMA и статика, "корпуса" не стоят сейчас "ничего", DRAM как RAM диск хоть на 4Mб.
z80 есть "рефрешь" у большинства DRAM FPM - CAS BEFORE RAS -саморегенерация.
вообщем если из "железа", что надо обращайтесь.

LeoN65816
20.04.2017, 23:07
Но главный довод. Ни СПЕЦИАЛИСТ, ни ОРИОН, ни даже ВЕКТОР не могут сделать аппаратный ролик, а это самая критичная к скорости CPU процедура.
Дык, Вектор как раз-таки и умеет!



Да, при некратности числа пикселов на экранный байт степени двойки - чуть хуже. Но чем это хуже, чем, например, при числе пикселей на экранный байт в 4? Один лишний сдвиг вообще на скорости не отразится.
Читай внимательнее, я говорил о "количестве байт в строке не равным n-ой степени двойки". Разницу чувствуешь? ;)



Но главный довод другой. Графика вообще не понадобится.
Упс, а как же это соотносится с названием топика?...


Если нужен чисто текст, да побольше символов в строке, да побольше строк. Ищем на барахолке zx-pk платку от игрового автомата IgroSoft, берем с нее модуль с CPLD EPM3256, проц и ром. В XGA-развертке 1024x768 делаем аппаратный текстовый режим 128x96 при шрифтоматрице 8х8 или 128х48 при 8х16. Четные байты - символ, нечетные - аттрибуты (цвет символа и цвет фона). На ибэях или алиэкспресах берем DPSRAM, сейчас они вполне доступны. В этом случае проц будет абсолютно независим от видеогенератора, и разгоняей его сколько хотелке угодно. Получится система на 5 корпусах (CPU + ROM + DPSRAM + CPLD + FONTROM).
Да и графрежим можно в такую достаточно жирную CPLD засунуть.
Хотя может и не прокатить - в CPLD мало внутренних связей. Тогда взять модуль с циклоном первым на 3К - уж точно влезет (а заодно и FONTROM внутрь упрятать).

Totem
20.04.2017, 23:30
да ладно, тут люди в личке шутят так,

Статика ОЗУ больших объёмов сейчас доступна любая.
Но в плане расширения неудобно (требуется пайка) , использовать планки динамической памяти DDR ,более практично.
По экспериментирую , как по быстродействию, SIMM30pin вроде все медленные.
Буду пробовать
эвоно как бывает. :v2_eek:

barsik
20.04.2017, 23:56
ни даже ВЕКТОР не могут сделать аппаратный ролик, а это самая критичная к скорости CPU процедура
Дык, Вектор как раз-таки и умеет!

А точная ли это информация? Хотя про Вектор, кроме формата экрана, типа ОЗУ, типа CPU, его такта и наличия WAIT ничего не знаю, но не путаете ли Вы Вектор с БК-010? Разве там есть аппаратный ролик? Это же графический компьютер на мелкой логике, не на БИС.



Но главный довод другой. Графика вообще не понадобится
Упс, а как же это соотносится с названием топика?

Ну не мог же я назвать это текстовым компьютером? При поставленной задаче вообще без разницы текстовый компьютер или графический. В графическом при такой концепции оказывается меньше деталей (отпадает ПЗУ с фонтом и счётчик линий в знакоместе).



Да, при некратности числа пикселов на экранный байт степени двойки - чуть хуже...
Читайте внимательнее, я говорил о количестве байт в строке не равным n-ой степени двойки

Да, не обратил внимание, что Вы о размере строки. Потому что размер строки в байтах вообще никого не волнует. Вы это указали из соображений, что шаг по вертикали не кратный степени двойки тормозит рассчёт позиций - надо использовать сложение, а не сдвиг. Ну а кто Вам мешает использовать табличное умножение. Но в данной концепци это вообще не довод, - экран вообще может быть "размазан" по всему ОЗУ тонким слоем с любым строчным шагом (и даже в любом порядке). Кто нас обязывает делать строчный шаг обязательно в 40 байт? Можно сделать и 64. Только зачем? Ускорение не составит и 0.1 процента...


Если нужен чисто текст, да побольше символов в строке, да побольше строк, то ищем на барахолке платку от игрового автомата...

Не было в конце 80-тых никаких игровых автоматов на ПЛИС. А вот побольше строк не надо, ни для CP/M, ни для текстообработки, 24/25 строк оптимально.


система на 5-ти корпусах (CPU + ROM + DPSRAM + CPLD + FONTROM)

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


У Z80 есть "Refresh" у большинства DRAM FPM - CAS BEFORE RAS -саморегенерация

Речь же об РК86. Нет там ни Z80, ни DRAM допускающих CAS before RAS, а есть КР580 и есть 565РУ3, которые даже не буферизованы, отчего РК хреново тянет кварц выше 24 МГЦ, да и клок получается делением частоты кварца на 9, что создаёт проблемы для получения частоты сдвига выходного регистра (равной частоте такта умноженной на 7, 8 или 12). Предложите простой вариант, использующий подобную или другую концепцию, превращающую РК86 в графический компьютер, используя только детали 80-тых годов.


но ведь можно просто, как предложено, для видео и просто использовать ПДП/DMA и статика

Да, статика это вариант. Статику можно и даже нужно поставить в РК. При этом РУ3-тьи, ПДП и ВГ75 придётся снять, - они не нужны (лишь зря грузят шину), т.к ПДП мешает программному видео выводу.

Хотя можно решить проблему нерегенерации ОЗУ средствами, что в РК86 уже есть, т.е за счет перезапуска ПДП в конце программного видео вывода и останова ПДП перед началом программного вывода первой строки. Ценно, что это программное решение, без работы паяльником и расхода деталей, т.е решение в нужном стиле.

Я ранее написал чушь, что ПДП тормознёт на 15%. Это я вспомнил насколько тормозит ПДП при обслуживании ВГ75. А здесь другая задача. За обратный ход луча не надо обcлуживать ВГ75, а надо лишь несколько раз за обратный ход луча считать по 128 байт для регенерации. Это тормознёт на менее 1%.

При переделке РК на графику работ паяльником и так хватит. Придётся ставить буфер на ОЗУ. Иначе не разогнать КР580 до такта в 3.25 МГЦ. И ГФ24 придётся выкинуть, заменив на схему формирователя от СПЕЦИАЛИСТА с коэффициентом деления 7 или 8. А вот вторую банку ОЗУ лучше действительно ставить статикой.

Totem
21.04.2017, 00:56
barsik,

Речь же об РК86 нет там ни Z80, ни DRAM допускающиз CAS before RAS, а есть КР580 и есть 565РУ3, которые даже не буферизованы, отчего РК хреново тянет кварц выше 24 МГЦ, да и клок получается деленем частоты кварца на 9, что создаёт проблемы для получения частоты сдвига выходного регистра (равной чатоте такта умноженной на 7, 8 или 12). Предложите простой вариант, использующий подобную или другую концепцию, превращающую РК86 в графический компьютер, используя только детали 80-тых годов.
Если смысл только в этом, то делай(те), но учти(те), что это наследие не плохих инженеров, а плохой элементной базы, доступной большинству пользователей/радиолюбителей в года. Есть "масса и тонна" на 580 решений".
все детали абсолютно доступны, нужен "переходник/панелька/микруха", поможем.
Предложите простой вариант, использующий подобную или другую концепцию я ее уже предложил, позаимствовав все лучшие идеи для 8 бит, самоделки. -процессор работает на максимальной скорости, на которую способен, пишет в своем и чужом адресном пространстве, видеоконтроллер вообще не знает, команды кроме как, сменить страницу вывода на экран.

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


ПДП при обслуживании ВГ75
ребята на 2х 75, уже сделали отличные вещи,
http://zx-pk.ru/threads/26455-chto-maksimum-mozhno-vyzhat-iz-kr580vg75-intel-8275-obsuzhdenie/page4.html

barsik
21.04.2017, 01:32
ребята на двух ВГ75, уже сделали отличные вещи
http://zx-pk.ru/threads/26455-chto-m...nie/page4.html

Мне кажется, что Вы немного перепутали темы. Есть промышленный комп, где две ВГ75 (не считая МЦПГ Партнёра), это кажется АРГО. А у freddy только одна ВГ75. Но он изобрёл 2 победительные идеи:

- как получить в ВГ75 пятый атрибут (он добывается из сигнала LTEN стробированием)
- как на ВГ75 сделать полностью графический компьютер

Пятый атрибут очень нужен, т.к для цвета нужны все 4 стандартных атрибута. А для КОИ-8 стандартного атрибута уже не хватает. Ну а графический компьютер на ВГ75, это работает, но слишком громоздко (далеко не минимальный комп) и очень неудобно в программировании.

shurik-ua
21.04.2017, 01:54
POP HL : LD (NN), HL 13 тактов?
имелось ввиду 13 тактов на байт видимо )

Totem
21.04.2017, 02:06
Мне кажется, что Вы немного перепутали темы. Есть промышленный комп, где две ВГ75 (не считая МЦПГ Партнёра), это кажется АРГО. А у freddy только одна ВГ75. Но он изобрёл 2 победительные идеи:

- как получить в ВГ75 пятый атрибут (он добывается из сигнала LTEN стрбированием)
- как на РК86 сделать полностью графический компьютер

Пятый атрибут очень нужен, т.к для цвета нужны все 4 стандартных атрибута. А для КОИ-8 стандартного атрибута уже не хватает. Ну а графический компьютер на ВГ75, это работает, но слишком громоздко (далеко не минимальный комп) и очень неудобно в программировании.

нет, просто любая попытка уйти от социума-читай большинства пользователей ,обречена. В рамках "самоделки" позволено все, но моя "самоделка" полностью совместима с ZX 128, "дико например", это значит, что можно взять почти, все наследие музыки ZX и SAM COUPE, любая железка с ZX ,будет работать
в слотах, все на абсолютно доступных деталях.

barsik
21.04.2017, 08:45
любая попытка уйти от социума - читай большинства пользователей, - обречена

В жизни - да. А в радиолюбительском хобби - нет. И даже наоборот. А особенно теперь, когда я вижу всего 4-х человек, что пишут программы для рэтро отечественных компьютеров, да и то в разных неинтересных мне вариантах железа или ДОС. А наоборот, потому что, если бы я сделал простой компьютер 100% совместимый с другой ЭВМ, например с РК86, то что бы я делал после того, как закончил пайку и отладку. Осталось бы только посмотреть как работает чужое ПО и положить железку на полку. А когда железка не совместима, то остаётся простор для конверсии чужих программ и написания своих.

Читайте пролог темы. Сюжет этой темы даже не в получении работающей машины, а тем более в прогоне на ней чужого ПО. Первоначальная задача была обсудить концепцию с целью выяснить, - всё-таки возможно-ли, используя изложенную концепцию, сделать компьютер в котором деталей, как минимум в два раза меньше, чем в РК86, а параметры выше. Причём, используя только те детали, что были доступны в СССР в конце 80-тых годов. Это своего рода "римейк", но не того что тогда сделали, а того, что не сумели сделать.

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

Именно поэтому меня и интересует больше "тупиковое направление" - с КР580. А тут даже установка второго КР580 на такте 2.5...3.2 МГЦ уже существенно удорожает конструкцию, делая её менее пригодной для конкуренции с РК86 (хотя КР580 ценой в 3-5 рублей, был намного дешевле, чем ВГ75 за 25 рублей, плюс ВТ57 за 3-5 рублей, плюс РФ2 для фонта за 5 рублей). Но к сожалению, я слишком слабый аппаратчик и не в состоянии разработать конструкцию с двумя КР580 работающими в противофазе на общее ОЗУ, что позволило бы иметь быстродействие Вектора (3 МГЦ с WAIT, что даёт в Векторе эффективный такт в 2.4 МГЦ).

Теперь давайте разбираться, с чем я мог бы получить совместимость, имея экран в 280 и ниже (формат регулируется программно, потому произвольный). Т.е к какому "социуму" по Вашей терминологии стоит примкнуть?

Я знаю только три компьютера удовлетворяющих этому экранному условию. Это ZX80, где экран 256*192, ZX-Spectrum и очень редкий отечественный "Минск-64" с экраном в 256*256. Смотрим на них.

ZX80. Увы, он имеет слишком изощрённую, и главное завязанную на времянки конкретной машины, процедуру визуализации. Графические программы использовать нельзя. С него можно заимствовать только чисто текстовые программы, в частности, на бейсике.

Рассмотрим совместимость с ZX-Spectrum. Тут речь уже о дорогостоящем Z80-варианте. Будем грузить ZX код ПЗУ в ОЗУ (столько ПЗУ тратить в дешёвой машине несерьёзно). Программу визуализации ZX и таблицу адресов начал строк экрана СИНКЛЕРА (192 адреса=384 байта) поместим в вершине ОЗУ, ниже нашего ПЗУ F800 и установим TOP бейсика пониже. Это нам даст прогон в монохроме некоторых программ ZX-Spectrum из сезона 1982 года со скоростью 2.1 МГЦ (в ZX эффективный такт ~3 МГЦ). Придётся применить клавиатуру ZX-Spectrum, расширив её до 56 кнопок. Из этого ясно, что экономия в 25 TTL-корпусов и двух ПЗУ 2764 приводит к неприемлемым ограничениям в применении программ, хотя частичная совместимость (в частности, по BASIC и играм для ZX-16К) вполне достигается. В итоге получится "убогий недосинклер" с неудобной клавиатурой и медленным выводом в текстовом режиме (42 символа в строке).

Теперь "Минск-64' с экраном в 256*256 http://zx-pk.ru/threads/20927-quot-prostejshaya-mikro-evm-quot-i-drugaya-literatura.html?p=898823&viewfull=1#post898823. Процессор тот же, причём на такте всего 1.6 МГЦ. Но из-за большого числа линий растра (256) скорость прогона программ составит всего: (312-256) : 312 * 3.1 МГЦ = 0.55 МГЦ, вместо необходимых 1.6 МГЦ. В варианте Z80 с тактом в 5.5 МГЦ скорость будет 0.99 МГЦ, что всё-равно ниже необходимых 1.6 МГЦ. 16 цветов (там цвет как у ОРИОНА, только с палитрами) реализовывать не имеет смысла, т.к это слишком большой расход деталей, превращающий всю идею экономии в нонсенс. Итого, с "Минск-64" можно совместиться только очень-очень частично.

Теперь вопрос. Какую совместимость тут разумно выбрать, т.е к какому "социуму" разумно подключить этот простейший компьютер, в соответсвии с Вашей фразой из начала этого поста?




POP HL
LD (nnnn), HL - 13 тактов?
видимо, имелось ввиду 13 тактов на байт

Трудно догадаться, что это предложение заменить 10-ти тактовую POP HL на 16-ти таковую LD (nnnn), HL.

Если так, то эта команда невыгодна. Потому, что тогда программа не может быть циклом, т.е программа визуализации будет иметь размер в 1.5 раза больше чем размер экрана, т.е более ~11.5 кб, а это значит, что надо тратить на это адресное пространство (иметь ПЗУ такого объёма не требуется, - можно сгенерировать программу визуализации в ОЗУ после включения компа).

jerri
21.04.2017, 09:15
А точная ли это информация? Хотя про Вектор, кроме формата экрана, типа ОЗУ, типа CPU, его такта и наличия WAIT ничего не знаю, но не путаете ли Вы Вектор с БК-010? Разве там есть аппаратный ролик? Это же графический компьютер на мелкой логике, не на БИС.


https://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%BA%D1%82%D0%BE%D1%80-06%D0%A6
вполне убедительно
у вектора конечно свои заморочки, но вертикальный скролл там безпроблемный

Totem
21.04.2017, 09:54
Теперь вопрос. Какую совместимость тут разумно выбрать, т.е к какому "социуму" разумно подключить этот простейший компьютер, в соответсвии с Вашей фразой из начала этого поста?
К любому, где есть достаточное количество ресурсов, которые можно использовать. Вашем случае тотальное упрощение РК86 приведет к чему?
Кстати я не говорил о совместимости ZX и РК.

b2m
21.04.2017, 10:07
Есть промышленный комп, где две ВГ75 (не считая МЦПГ Партнёра), это кажется АРГО.
У Арго одна ВГ75, и он позволяет делать экран Спектрума.

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


А точная ли это информация? Хотя про Вектор, кроме формата экрана, типа ОЗУ, типа CPU, его такта и наличия WAIT ничего не знаю, но не путаете ли Вы Вектор с БК-010? Разве там есть аппаратный ролик?
Как автор одного из эмуляторов Вектора, подтверждаю - есть аппаратный ролик.

barsik
21.04.2017, 10:39
тотальное упрощение РК86 приведет к чему?

И я о том же. Дело не в упрощении. А о том, что используемая тут концепция не позволяет найти другой комп, с которым можно было бы совместиться. Препятствие тут - быстродействие МП-ядра. 5-6 МГЦ это уже слишком много для динамических ОЗУ (РУ5А, РУ7И перегреваются). 5-6 МГЦ это на пределе обычной 74LS и 555/1533 комплектации. В матках 386-тых, 486-тых встречаются и более скоростный аналоги. Но таких ИМС можно наскрести буквально единицы. Так что для скоростных машин надо специально закупать ИМС скоростных TTL-серий. Поэтому я и ориентируюсь только на такт до 6 МГЦ. Что и ограничивает разрешение по горизонтали до 320 точек.

А РК86 я упомянул лишь потому, что это тоже уже готовое МП-ядро, где как раз стоИт нужный мне КР580, так что для эксперимента остаётся его только разогнать до 3 МГЦ (установив буфер на ОЗУ) и добавить несложный узел видео выхода (причём регистр сдвига ИР13 уже есть на плате). Думаю, что даже если получится РК86 разумными по объёму доработками превратить в графический комп, то никто это делать не станет, т.к нет смысла конвертировать пусть и неграфический, но всё-же комп обладающий сотнями игр, в компьютер, пусть и графический, зато вообще без программ.

Можно подумать как сделать по такой концепции цвет по варианту ZX (для совместимости). Кажется адреса поля цветовых атрибутов ZX отличается от адреса экрана графики лишь несколькими битами. Тогда из параллельной банки одновременно с графикой (нужным образом перекорёжив адрес) можно читать цветовой атрибут. Это даст совместимость в цвете. Мне кажется такая идея реализуема и позволит получить 100% совместимость с ZX-48К (программа визуализации в параллельном ПЗУ 0...3FFF, включаемом только на время визуализации. Естественно, будет совместимость абсолютно без учёта времянок. Зато все модификации экрана будут происходить во время гашения по кадрам.


У Арго одна ВГ75, и он позволяет делать экран Спектрума

Интересно, как? Думаю, что загрузкой фонтов, т.е имитацией графики сменой фонтов. Т.е идея freddy, когда ВГ75 работает в качестве генератора адресов для считывания (всё ОЗУ забито инкрементируемым кодом 0...127), а собственно экраном служит ОЗУ фонта. Непонятно как одновременно читать цвет, ведь ВГ75 выдаёт только один байт. И сдаётся мне, что при такой концепции расход деталей будет даже больше, чем при традиционной реализации на счетчиках и мультиплексорах. Не знал, что АРГО на Z80. Получается, что это единственный клон РК на Z80 (к тому же совместимый с СИНКЛЕРОМ). Вот и обнаружился РК86 совместимый с ZX-Spectrum.

Totem
21.04.2017, 11:19
в 2 раза больше чем размер экрана, т.е более 15 кб
Запросто, в моем случае в CPU0 у меня есть как минимум страница из основной памяти и 128Kб расширенной, в CPU3 64Kб по стандарту zx 128.
мало? турбо до 14MГц.

http://i11.pixs.ru/thumbs/7/7/0/zx111jpg_4981439_25943770.jpg (http://pixs.ru/showimage/zx111jpg_4981439_25943770.jpg)

kuber
21.04.2017, 11:22
Приветствую всех на форуме.
Когда для достижения поставленной цели нет ясности в выборе решений, целесообразней всего начать с основы - ядра системы, дешифратора адресного пространства и стартовой памяти. Модульность конструктива облегчит начинания.
При всём богатстве выбора идейных решений, с чего то надо начинать.
Лучшее враг хорошего, всегда есть то что надо улучшить, сделать иначе или вообще переделать по другому.
По такому принципу я построил свой первый комп ещё в конце 90годов.
Такой подход меня всегда выручает.

Totem
21.04.2017, 11:23
это на пределе обычной 74LS и 555/1533 комплектации. В матках 386-тых, 486-тых встречаются и более скоростный аналоги. Но таких ИМС можно наскрести буквально единицы. Так что для скоростных машин надо специально закупать ИМС скоростных TTL-серий.
74F ? скажите какие нужны, вышлю, что есть в наличии.

barsik
21.04.2017, 11:38
LD HL,(nnnn). При такой команде визуализации, т.к невозможны циклы, то программа визуалицации очень большая
Запросто, в моем случае для видео-CPU у меня есть как минимум страница

Команда LD HL,(nnnn) хоть она 16 тактов, невыгодна не только из-за увеличения до размера в 1.5*SCREEN_size (3 байта команды визуализируют 2 экранных байта) - 7680*1.5=11520 вместо 40 байт программы визуализации, но главное это лишает гибкости. Уже намного сложнее поменять положение и формат экрана или сделать ролик. Чем не устроила команда POP IX. В ней читаются те же 2 байта (хотя тратится корпус ТМ2 для удлинения 14 тактов до 16-ти с помощью WAIT), но экран можно двигать.

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


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

Да нет. У меня, по крайней мере для версии на Z80 с 8/16-ти битовой загрузкой , нет неясности. Некоторые неясности есть только в 6-ти и 7-ми битовых вариантах связанные с выбором регистров сдвига. Собираюсь сегодня вечером нарисовать схему самого простого варианта (предназначенного для проверки идеи), который собираюсь отмакетировать. А чуть позднее введу схему в редакторе и выложу для обсуждения.

Делать первые эксперименты решил, конечно, на Z80, т.к на КР580 намного сложнее, к тому же я ещё не знаю как в КР580 сделать прерывания без ВК28 (при ВК28 какую-то ногу подключаешь на +12В и тогда ВК28 без всякого расхода деталей заменяет одноуровневый системный контроллер прерываний).

Пока не знаю лишь как из двух ИР9 получить 12 или 14 бит, т.к у них нет выходов Q1...Q7, только Q8. Поэтому вторым регистром придётся ставить две ИР16 или даже ИР13. А не было ли какого-либо хотя бы 6-ти битового регистра с параллельной записью и последовательным сдвигом.

Totem
21.04.2017, 12:17
(под девизом: в одну пишем, другая отображается)
Картинку видно?
http://i12.pixs.ru/thumbs/1/7/3/zx222jpg_9245273_25944173.jpg (http://pixs.ru/showimage/zx222jpg_9245273_25944173.jpg)

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

основа тут менеджер памяти
который отключает доступ процессору(худший/простой случай) к основной памяти, в СPU0 -1, ( с градацией 8-16-24-32КБ) , т.е сами выбираем сколько у нас под видео память из младших 32K, видяхе "говорим", отображать VRAM1, она отключает VRAM0 от своих шин и включает в адресное пространство процессора. Все процессор пишет/читает VRAM0, не трогая основную память, (ROM мы тоже отключили (BLK)).
Нарисовали, "говорим видяхе", сделать страницу VRAM0 отображаемой. та ОК, и включает для CPU VRAM1.

b2m
21.04.2017, 12:38
Интересно, как?
Я думаю, Вам будет интересно почитать тему об Арго ФВ-6511 (http://zx-pk.ru/threads/9650-kompyuter-quot-argo-fv-6511-quot.html).

Totem
21.04.2017, 12:44
Самый интересный случай, когда 256x192 16 цветов 24КБ памяти, нужно место под графику.
хорошо, "говорим менеджеру" мы будем только читать из СPU0, "видяхе" мы будет только писать и включаем в СPU0 одну из страниц 8 расширенной памяти, куда уже загрузили графику, ну или наоборот
собственно сам менджер для понимания
http://i12.pixs.ru/thumbs/0/0/9/elitejpg_5572245_25808009.jpg (http://pixs.ru/showimage/elitejpg_5572245_25808009.jpg)

barsik
21.04.2017, 13:06
Картинку видно?

Не видно. Даже ни имя, ни адрес ссылки не отображаются. Из 4-х опробованных браузеров, только один самый свежий показал картинку.

Я обычно на этом сайте пользуюсь браузерами, выпуска не позднее 2005 года. Они качают намного быстрее, на порядок быстрее сами грузятся, не достают рекламой, не сжигают впустую трафик, не сжирают весь ресурс процессора (т.е одновременно можно гонять кучу программ, где скорость важна), чем новые 150-ти мегабайтовые монстрообразные браузеры. Но старые браузеры на извращённых сайтах показывают пустоту. Оттого приходится грузить монстрообразные свежие браузеры.

В двух последних постах Вы снова повторили свою идею. Но идея и так была понятна. Непонятна реализация, как мне это использовать.

Вот есть два ядра Z80. В каждом есть w24257 по 32К. Ядро видео на такте 5 МГЦ, а ядро пользователя на такте 10 МГЦ. Как мне их объединить пользуясь вашей идеей?


интересно почитать тему об Арго ФВ-6511
Спасибо за совет. Почитаю про АРГО ФВ-6511 попозже как-нибудь, как найду время.

Totem
21.04.2017, 13:30
Вот есть два ядра Z80. В каждом есть w24257 по 32К. Ядро видео на такте 5 МГЦ, а ядро пользователя на такте 10 МГЦ. Как мне их объединить пользуясь вашей идеей?
Я не рассматривал вопрос "чистой двуядерности", в "железе" ZX-Poly 4 CPU не существует
https://github.com/raydac/zxpoly/blob/master/docs/zxpolystruct.png
, но MVV вроде реализовал его в FPGA, если не ошибаюсь
https://github.com/mvvproject/ReVerSE-U16
SPEC256
Обратиться к ним .


Ядро видео на такте 5 МГЦ, а ядро пользователя на такте 10 МГЦ. Как мне их объединить пользуясь вашей идеей?
Это как раз тот самый случай с 2 страницами, как будете выводить и что выводить из отображаемой страницы решать Вам. Можете хоть VGA
25Mгц, Хоть с пиксель клоком ZX или любым нужным.

barsik
21.04.2017, 15:20
Снова загрузил новый браузер и увидел Вашу схему менеджера памяти на FPGA. Такая реализация мне не подходит. Ваша идея нереализуема на обычных деталях 80-х годов.

Как вариант, если очень понадобится скорость, то поставлю два ядра Z80/КР580 (общий задающий генератор). Z80 пользователя будет отделён от шины видео-Z80 только 3-мя шинными формирователями АП6. Доступ в экранное ОЗУ, что в ядре видео-Z80 основной процессор будет делать только во время гашения луча по кадрам, как это делали на CGA, чтобы не было блёсток. Причём на время этого доступа видео Z80 будет выключен из шины сигналом HOLD.

Основной Z80 ждёт, когда появится флаг, что пошел бордюр по кадрам. Тогда он выдаёт на видео-Z80 сигнал HOLD, заставляя его освободить шину. По сигналу HLDA, подтверждающему захват шины, шинные буфера АП6 включаются и экранное ОЗУ оказывается в адресном пространстве основного процессора. Окончив доступ в экран за 7.69 МСЕК, что есть до начала вывода нового кадра, основной процессор деактивирует буфера АП6, отключаясь тем самым от шины и освобождает сигнал HOLD на видео процессоре, который продолжит работу ожидая прихода очередного прерывания 50 ГЦ. Такой компьютер на Z80 с тактом 5.5 МГЦ будет работать с вполне приемлемой для графической машины скоростью.

Расход деталей для реализации такой двухпроцессорности - 3 АП6 (или АП6 и две ИР22), 4-х разр.регистр как управление видео Z80 (в том числе его RESET) и полностью второе ядро, т.е РФ2, w24257 и порт клавиатуры. Видео Z80 не будет иметь в ядре ПЗУ, только ОЗУ 6264 на 8 кб. По сбросу стартует основной Z80, грузит программу для видео процесссора, отключается от его шины и освобождает ему RESET.

В целом видеовывод в 2-х процессорной системе обходится в Z80, 2764, ИД7, ВИ53, ТМ2, ИЕ10, АГ3, ИР9 и 4 корпуса для связи с ЦП. Это конечно уже намного больше, чем в одноядерной системе, где на вывод расходуются: ВИ53, ТМ2, АГ3, ИЕ10 и ИР9. Но зато это даёт скорость прогона в 5.5 МГЦ, вместо 2.12 МГЦ.

Общее число корпусов в однопроцессорной Z80 системе ~12-13, а в двухпроцессорной ~18-21. Но это лишь в монохроме. Цвет в зависимости от его концепции добавит ещё 4-6 корпусов. При КР580 число корпусов будет ещё на 4-5 штук больше. Итого, одноядерный цветной комп на Z80, с быстродействием 2.12 МГЦ, обойдётся в ~16-20 корпусов. А скоростной двухядерный на 5.5 МГЦ будет иметь ~22-27 корпусов.

Кроме того, возможно в данной концепции будет допустим режим с частотой кадров не 50 ГЦ, а 25 ГЦ, тогда каждый нечетный кадр будет чёрным, а быстродействие возрастёт до 3.81 МГЦ. Яркость картинки упадёт вдвое, а на некинескопном дисплее вообще будет слегка мерцать, но скорость прогона программы возрастёт в 1.8 раза. Такой режим можно использовать для ускорения вывода. Ничего, что на треть секунды экран мигнёт яркостью. Вон, в ZX80 экран вообще гас, когда набираешь на клавиатуре. И ничего, пользователи как-то смирились с этим и не плакали.

Totem
21.04.2017, 15:50
Снова загрузил новый браузер и увидел Вашу схему менеджера памяти на FPGA.
да какая разница на чем вы дешифруете порты? сам менеджер спецом разрисован в 74 логике!
мне так удобно просто, зачем мне перепаивать дешифраторы, если мне приспичит сменить порт.
эти 74 можно и в CPLD "запихать"

Totem
21.04.2017, 21:22
Такой режим можно использовать для ускорения вывода. Ничего, что на треть секунды экран мигнёт яркостью. Вон, в ZX80 экран вообще гас, когда набираешь на клавиатуре. И ничего, пользователи как-то смирились с этим и не плакали.
я уже плачу, как бывший владелец zx80