Великий долгострой nedoSprinter

Компьютер "Спринтер" http://sprinter.nedopc.org

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
Shaos wrote:На ATM2+ тоже были 320x200 и даже 640x200 :)
Там правда намутнено со спектрумовыми экранами и порезано фиг знает каким образом - однако оно там есть ;)
Теоретически можно сэмулировать программно...
Точнее программно-аппаратно - например делаем в этажерку ещё одну опциональную платку с пиком, которая ловит все обращения в 5 и 7 окна и, забирая шину у Z180, выводит правильные пикселы в нужные места нашей видеопамяти...
Не услышал ни от кого никаких мыслей - ни за, ни против :roll:
По мне так это единственный способ справиться со всем "многобезобразием" спектрумовских и околоспектрумовских графических "стандартов" (не прибегая к большим фпгам и мощным процам)...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
He3HauKo
Senior
Posts: 176
Joined: 09 Aug 2012 11:20
Location: 95.135.174.189

Post by He3HauKo »

Молчание знак согласия!
А хватит ног у пика?
Хочу стать всезнайкой ;-)
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

He3HauKo wrote:Молчание знак согласия!
А хватит ног у пика?
Ну большой поставить - 40 ногий.
Если что можно добавить внешних регистров.
У пиков есть режим PSP (Parallel Slave Port) - когда часть ног становится 8 сигналами данных и тремя сигналами управления - /CS, /WR и /RD.
При записи в такой "интеллектуальный" порт, значение будет немедленно сохранено во внутреннем регистре, а снаружи будет вызвано внутреннее прерывание (если настроено правильно), вызывающее программу-обработчик - таким образом добиваемся быстрой (и надёжной) реакции на запись в порт (или виртуальную ячейку памяти) - вобщем как-то так...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Хотя может и не стоит замахиваться сразу на 800x600, а начать с "EGA on VGA" 640x350 с пиксельклоком 25.175 MHz?...

P.S. 640x400 и 640x480 тоже можно по ходу поддержать, т.к. у них пиксельклок тот же

P.P.S. Пока пожалуй остановлюсь на 640x350@70 и 640x400@70, тогда вместо вот этих режимов:
- text 40x32 with 16 colors (mode 02h);
- text 80x32 with 16 colors (mode 03h);
- graphic 320x256 with 256 colors (mode 81h);
- graphic 640x256 with 16 colors (mode 82h).
вводятся вот такие (жирным выделены программно "совместимые" со старым Спринтером):
#01 - Text 80x35 with 16 colors and characters 8x10 (640x350);
#02 - Text 40x32 with 16 colors and characters 8x10 - emulated by #01 or #84 (640x350);
#03 - Text 80x32 with 16 colors and characters 8x10 - emulated by #01 or #84 (640x350);
#04 - Text 80x40 with 16 colors and characters 8x10 (640x400 - future?);
#80 - Hybrid mode with graphics on top and text on bottom of screen 640x400 (future?);
#81 - Graphics 320x256 with 256-color palette - emulated by mode #85 with offset 50;
#82 - Graphics 640x256 with 16 colors - emulated by mode #84 with offset 50;
#83 - Graphics 320x200 with 256-color palette and 2 pages (top and bottom);
#84 - Graphics 640x350 with 16 colors and 7 configurable zones;
#85 - Graphics 320x350 with 256-color palette and 7 configurable zones;
#86 - Graphics 640x400 with 16 colors;
#87 - Graphics 320x400 with 256-color palette.
Подкорректировал текстовые режимы - настоящим текстовым режимом пока будет только #01 (в случае аппаратной реализации) либо #84 (в случае эмуляции). Текст и атрибуты будут располагаться в незадействованной в режиме 640x350 восьмой графической странице - 8000 байт текста и 8000 байт атрибутов (области идут друг за другом или вперемешку как на спринтере?), т.е. всего там может уместиться 100 строк по 80 символов - думаю имеет смысл сделать скрол и перемотку назад (в случае командной строки) именно через этот буфер. Также чтобы сымитировать спринтеровские 80x32 и досовские 80x25 надо будет иметь возможность указывать не только смещение внутри буфера, но и размер видимой области в строках, а также вертикальное смещение в пределах экрана.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Я пожалуй отпочкую сообщения про видео-контроллер как таковой, т.к. его не только в клоне Спринтера можно будет заюзать...

Пусть это будет nedoVGA :roll:

P.S. Отпочковал: viewtopic.php?t=10318
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вот в этой беседе 2005 года очень многое перекликается со Zpring:

http://zx.pk.ru/showthread.php?t=535

И самое интересное, что большинство беседующих - тогдашние обитатели нашего nedoPC-форума :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: [Zpring] Великий долгострой nedoSprinter

Post by Shaos »

Вобщем концепция изменилась - я наконец понял, что процессор Z180 совсем не подходит для Sprinter-совместимого компьютера т.к. он имеет совсем левый MMU, который маппит 1 Мб памяти невесть как, а также этот проц не поддерживает недокументированные команды Z80 и имеет свой набор внутренних портов, что может помешать работать с внешними портами. По поводу графики - если поддерживать модель смешанных режимов как на Спринтере, чтобы каждая клетка 8х8 (или 16x8) могла быть текстовой либо графической, то надо отталкиваться от его оригинальной структуры видеопамяти:

Image

Для того, чтобы можно было охватить больше пикселов по вертикали (вплоть до 640x480), надо снизу приделать ещё 256 Кб видеопамяти (собственно как и предполагалось в Sp2000 изначально), тогда вертикальный размер будет достигать 512 пикселов, соединив которые в кольцо можно будет делать вертикальный скролл. Горизонтальный скрол будет выполняться в кольце на 640 байтов, а системные поля справа будут оставаться нетронутыми (и в нижней полоске многое станет "Free area" т.к. аппаратура всё также будет брать фонты и палитры из первых 256 Кб):
vramsys-zpring.jpg
Image Image Image

P.S. С другой стороны в ZX-режиме Спринтера вся графика смещалась вправо вплоть до вертикали 703:

Image

соответственно горизонтальный скроллинг можно делать в пределах этих самых 704 байтов (что значит 0x2c0 будет превращаться в 0x000 при прохождении через границу, замыкая графику в кольцо по горизонтали):

Code: Select all

10 1011 1110 = 702
10 1011 1111 = 703
10 1100 0000 = 704 -> 0
кольцо же по вертикали беспроблемно будет замыкаться само путём перебирания всех 9 битов:

Code: Select all

1 1111 1111 = 511
0 0000 0000 = 0
Правда при этом "Screen Description Area" должна будет расшириться...

P.P.S. Эта самая "Screen Description Area" превращается на Спринтере в текстовый экран при переключении в текстовый режим - каждые 4 байта представляют знакоместо и байты 1 и 2 (т.е. средние два из четырёх) описывают код символа и атрибут соответственно (в атрибуте младшие 4 бита - цвет символа, далее 4й,5й и 6й биты - цвет фона, не уверен по поводу старшего 7го бита). Текст в этой зоне лежит как бы на боку и строка графической памяти представляет из себя столбик букв, состоящий из 40 знакомест - значит теоретический предел текстового режима 80x40 или 320 пикселов по вертикали (сейчас там ещё и синхросигналы расположены), но если расширить эту зону до палитр, то максимальная высота представления текста составит 56 строк или 448 вертикальных точек - что почти соответствует полной высоте кадра сигнала VGA для 350 и 400 видимых строк (по стандарту там 449 линий вместе с отступами и синхросигналами). Судя по моему эмулятору, левый столбик букв почему-то начинается с 129й строки и дальнейшие строки вниз представляют из себя столбики текста идущие слева-направо.

P.P.P.S. На самом деле в графическом режиме зона шрифтов по идее тоже может быть задействована как обычная видеопамять - т.е. графические экраны можно растянyть вплоть до 767й колонки ( 0x2FF= 10 1111 1111 ):

Image

P.P.P.P.S. Однако в этом случае при переключении между текстовым и графическим экраном придётся зону шрифтов подменять обратно... оказалось, что DSS это уже делает сам при каждом включении текстового режима
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
Sayman
Maniac
Posts: 223
Joined: 05 Oct 2009 19:44
Location: 212.164.105.5

Re: [Zpring] Великий долгострой nedoSprinter на Z80 и Xilinx

Post by Sayman »

Скролл на стоке сделать не то, чтобы не возможно - скролироваться будет небольшой участок. есть демка которая это наглядно демонстрирует. при этом скролл возможен только кратно 8 или 16 точек. а нам надо попиксельно. сток на это не способен.
второй момент тоже интересен - вариант использования видеопамяти в качестве backбуффера. т.е. включили режим 320на256. там два экрана - 0й и 1й. выстроены последовательно друг за другом. ок. это удобно. было бы ещё удобнее иметь ещё две копии этих экранов для back буфера, чтобы простыми операциями акселя, не прибегая к переключениям озу постранично, кидать данные фона (слоя) в этот буфер.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: [Zpring] Великий долгострой nedoSprinter на Z80 и Xilinx

Post by Shaos »

Что за демка? Да - я тоже хотел 8 пикселов сделать скролл для начала
Но если FPGA достаточно большой, то можно в нём нахимичить чтобы попиксельно
И копирование в пределах видеопамяти акселем само собой - тайлы/спрайты в неиспользуемых областях
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: [Zpring] Великий долгострой nedoSprinter на Z80 и Xilinx

Post by Shaos »

Вобщем снова идём по режимам и переосмысливаем (жирным выделены старые режимы Спринтера):

#01 - Mixed Mode 640x350 (???);
#02 - Text 40x32 with 16 colors and characters 8x8 - emulated by #01 (640x350) with offset;
#03 - Text 80x32 with 16 colors and characters 8x8 - emulated by #01 (640x350) with offset;
#04 - Text Mode 80x50 with 16 colors and characters 8x8 (640x400 - no scrolling);
#05 - High-Quality Text Mode 80x35 with 16 colors and characters 8x10 (640x350 - no scrolling); \
#06 - High-Quality Text Mode 80x40 with 16 colors and characters 8x10 (640x400 - no scrolling); - Future
#07 - High-Quality Text Mode 80x48 with 16 colors and characters 8x10 (640x480 - no scrolling); /

#80 - Graphics 368x288 with 256-color palette and compatible with mode #81 page 0 (???);
#81 - Graphics 320x256 with 256-color palette (over 640x350 - emulated by mode #C1 with offset 48);
#82 - Graphics 640x256 with 16 colors (over 640x350 - emulated by mode #C2 with offset 48);
#83 - Graphics 352x280 with 256-color palette and 4 pages (no scrolling);
#84 - Graphics 704x280 with 16-color palette and 4 pages (no scrolling);
#85 - Graphics 384x512 with 256-color palette and 2 pages (over 800x600 with border???); - Future
#86 - Graphics 768x512 with 16-color palette and 2 pages (over 800x600 with border???); - Future


#C1 - Graphics 320x350 with 256-color palette, horizontal and vertical scrolling;
#C2 - Graphics 640x350 with 16 colors with horizontal and vertical scrolling;
#C3 - Graphics 320x400 with 256-color palette, horizontal and vertical scrolling; - Future
#C4 - Graphics 640x400 with 16 colors, horizontal and vertical scrolling; - Future
#C5 - Graphics 640x480 with 16 colors, horizontal and vertical scrolling. - Future


Для новых режимов надо предусмотреть возможность копирования 16 строк через одну банку памяти вместо одной строки как в оригинальном Спринтере...

P.S. Вот ещё один пример экрана 640x256 показанного в 640x350 с чёрными полосами сверху-снизу и растянутого к соотношению сторон 16:9:
desktop640x350.jpg
Тут чёрный квадрат был квадратным когда 640x256 были растянуты в 16:9, а белый квадрат - реально квадратный в нативном разрешении...

P.P.S. А вот как могло бы выглядеть полное занимание 640x350 в соотношении сторон 16:9 (пропорции иконок также поправлены):
desktop640x350full.jpg
P.P.P.S. Возможные порты для работы с экраном (жирным выделен старый функционал):

#89 - порт куда пишем номер текущей строки с номером от 0 до 255 (как и раньше)
#8A - порт куда пишем номер текущей строки с номером от 256 до 511 (пишем туда Y-256)
#8B - порт куда пишем номер 16-строчного блока для работы через окно (0...31)

#C9 - порт где можно быстро переключить экран в 256-строчном режиме (0,1,2,3)
#CA - младший байт горизонтального смещения экрана (сохраняется в буферном регистре)
#CB - старший байт горизонтального смещения экрана (запись обоих байтов в 10-битный регистр горизонтального смещения)
#CC - младший байт вертикального смещения экрана (сохраняется в буферном регистре)
#CD - старший байт вертикального смещения экрана (запись обоих байтов в 9-битный регистр вертикального смещения)
#CE - высота чёрной зоны сверху
#CF - высота чёрной зоны снизу

P.P.P.P.S. Наверное номера режимов со скролом надо будет убрать в новую область - скажем в #Cx т.к. они будут совсем другие (никаких клеточек-квадратиков и микса с текстовыми режимами) - убрал
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: [Zpring] Великий долгострой nedoSprinter на Z80 и Xilinx

Post by Shaos »

Shaos wrote:Наверное номера режимов со скролом надо будет убрать в новую область - скажем в #Cx т.к. они будут свосем другие (никаких клеточек-квадратиков и микса с текстовыми режимами)
Что-то я думаю, что в моём будущем недо-спринтере ВООБЩЕ не должно быть этих клеточек-квадратиков (как и спектрумовского режима)! Соответственно и в эмуляторе тоже!
Я тут начал задумываться, а почему собственно никто (кроме самого Ивана) НИКОГДА не использовал всю массу возможностей, которые дают эти клеточки-квадратики?
Возможно у фирмы ПетерcПлюс был план - используя существующую софт-кору превратить Спринтер в более-менее классический компьютер с линейной адресацией видеопамяти?
Именно поэтому они продвигали только тот софт, который использовал "классический" подход - переключаем видеорежим и линейно пишем в видеопамять без всяких эзотерических хитростей...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: [Zpring] Великий долгострой nedoSprinter на Z80 и Xilinx

Post by Lavr »

Shaos wrote:Возможно у фирмы ПетерcПлюс был план - используя существующую софт-кору превратить Спринтер в более-менее классический компьютер с линейной адресацией видеопамяти?
Именно поэтому они продвигали только тот софт, который использовал "классический" подход - переключаем видеорежим и линейно пишем в видеопамять без всяких эзотерических хитростей...
Вообще говоря, весьма удобно, когда есть аппаратный текстовый режим и аппаратный графический,
причем они должны уметь работать независимо и одновременно.

Так было сделано в ЭВМ Т3-29, и это очень ускоряет вывод на экран! :kruto:
Мне даже несколько странно всю жизнь, что после Т3-29 я такого нигде не видел... :-?
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: [Zpring] Великий долгострой nedoSprinter

Post by Shaos »

Ну аппаратный текстовый режим для слабой машины нужен - не спорю, но прямолинейный, а не такой, где можно настроить любой квадратик так, чтобы он читал своё содержимое откуда угодно
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: [Zpring] Великий долгострой nedoSprinter

Post by Lavr »

Shaos wrote:Ну аппаратный текстовый режим для слабой машины нужен - не спорю, но прямолинейный, а не такой, ...
Абсолютно ты прав! И я не хочу никого обидеть, хотя, как мне кажется, когда вы
допишете весь свой софт, вы увидите, что машина-то дохловатая под всё это.

И раз уж ты пишешь:
Shaos wrote:я думаю, что в моём будущем недо-спринтере ВООБЩЕ не должно быть этих клеточек-квадратиков (как и спектрумовского режима)! Соответственно и в эмуляторе тоже!
То, может быть, сразу и ускорить самую тормозную часть - видеоадаптер?
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: [Zpring] Великий долгострой nedoSprinter

Post by Shaos »

Ну видеоадаптер там вроде живёт своей жизнью в своей собственной памяти плюс там есть акселератор который средствами Альтеры умеет копировать вертикали и горизонтали до 256 байт со скоростью 7 миллионов байт в секунду
Я тут за главного - если что шлите мыло на me собака shaos точка net